在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2501|回复: 7

求教關於模塊復用的問題.

[复制链接]
发表于 2005-1-19 11:56:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我用verilog編了一個16位的摸塊.現在想用這個模塊組合在一起成為32位的.怎麼定義接口呀?謝謝了.
发表于 2005-1-19 12:04:59 | 显示全部楼层

求教關於模塊復用的問題.

比如一个16bit的加法器,要做成32bit的
把16bit的加法器例化2个,一个为低16bit,另一个为高16bit
把低16bit的进位输出接到高16bit的进位输入端
发表于 2005-1-19 12:32:42 | 显示全部楼层

求教關於模塊復用的問題.



下面引用由atuhappy2005/01/19 12:04pm 发表的内容:
比如一个16bit的加法器,要做成32bit的
把16bit的加法器例化2个,一个为低16bit,另一个为高16bit
把低16bit的进位输出接到高16bit的进位输入端

这样生成的电路还是两个模块吧?
并没有节约资源!只是代码简洁些!
能不能考虑时分复用呢!先计算低16位再计算高16和低进位。
 楼主| 发表于 2005-1-19 12:41:34 | 显示全部楼层

求教關於模塊復用的問題.

先謝謝版主了.
我想我該更清楚的說一次,麻煩多多指教.
我做的是一個動態總線反相的功能,16位的模塊接口是這樣寫的:
  module dbi(busin,busout,clk,dbi);
其中busin[15:0]和clk是輸入,busout[15:0]和dbi是輸出.
32位的模塊我是這樣寫的.不過編譯的時候出錯了說我非法的使用了例化.
module dbi32(busin32,busout32,dbih,dbil,clk);     //dbih,dbil:表示要輸出的高16位和低16位//
    input clk;
    input[31:0] busin32;
    output[31:0] busout32;
    output dbih,dbil;
    reg [31:0] busout32;
    reg dbih,dbil;
    dbi,dbih16(.busin(businh16),.busout(busouth16),.clk(clk),.dbi(dbih));
    dbi,dbil16(.busin(businl16),.busout(busoutl16),.clk(clk),.dbi(dbih));
always @(posedge clk)
    begin
       busin32<={dbih16.businh16,dbil16.dbil16};
       busout32<={dbih16.busouth16,dbil16.busoutl16};
       dbih<=dbih16.dbih;
       dbil<=dbil16.dbil;
    end
endmodule  
多各位高手多多指教.謝謝了.
   
发表于 2005-1-19 12:52:44 | 显示全部楼层

求教關於模塊復用的問題.



下面引用由arens2005/01/19 12:32pm 发表的内容:
这样生成的电路还是两个模块吧?
并没有节约资源!只是代码简洁些!
能不能考虑时分复用呢!先计算低16位再计算高16和低进位。

当然可以了
发表于 2005-1-19 12:57:56 | 显示全部楼层

求教關於模塊復用的問題.

你的错误太多,看看语法书吧
module dbi32(busin32,busout32,dbih,dbil,clk);   
   input clk;
   input[31:0] busin32;
   output[31:0] busout32;
   output dbih,dbil;
   wire [31:0] busout32;
   wire dbih,dbil;
   dbi dbih16(.busin(busin[31:16]),.busout(busout[31:16]),.clk(clk),.dbi(dbih));
   dbi dbil16(.busin(busin[15:0]),.busout(busout[15:0]),.clk(clk),.dbi(dbil));
endmodule  
发表于 2005-1-19 12:59:10 | 显示全部楼层

求教關於模塊復用的問題.

[这个贴子最后由一声叹息在 2005/01/19 01:30pm 第 4 次编辑]

使用parameter
例如:
module counter (
    clk, reset_b
    counter_out
);
parameter COUNTER_WIDTH = 8;
input  clk;
input  reset_b;
output [(COUNTER_WIDTH-1):0] counter_out;
reg [(COUNTER_WIDTH-1):0] counter_out;
always @(posedge clk or negedge reset_b) begin
    if (!reset_b) begin
        counter_out <= 0;
    end
    else begin
        counter_out <= counter_out + 1;
    end
end
endmodule

在另外的模块实例化时:
counter counter_inst (
  .clk (),
  .reset_b (),
  .counter_out ()
);

defparam counter_inst.COUNTER_WIDTH=32.
 楼主| 发表于 2005-1-19 13:37:24 | 显示全部楼层

求教關於模塊復用的問題.

謝謝了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-18 14:52 , Processed in 0.035384 second(s), 11 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表