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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 3521|回复: 9

[求助] 例化时用的模块名是否可参数化

[复制链接]
发表于 2014-3-27 14:35:31 | 显示全部楼层 |阅读模式

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

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

×
请问在模块A中例化模块B时,模块B的模块名能用parameter代替吗?RAM模块名里有宽度深度等信息,不同大小的RAM名字不一样,只想用一份模块A的代码,而且不让用define,所以希望例化RAM模块时,用的模块名也是个parameter。
发表于 2014-3-27 15:08:49 | 显示全部楼层
不可以吧。。模块名参数化。。。
回复 支持 反对

使用道具 举报

发表于 2014-3-28 03:35:28 | 显示全部楼层
不可以。但是可以用define,ifdef之类的。或者用generate.
回复 支持 反对

使用道具 举报

发表于 2014-3-28 09:16:14 | 显示全部楼层
可以把ram的深度定义成参数,这样不同大小ram的名字就一样,调用时,传参就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-28 16:38:44 | 显示全部楼层
回复 3# tigerjade


    我现在用的就是generate,但是这样做也有弊端。必须在generate体内,用case去对传入的parameter做判断,分别例化不同名字的RAM。有n种可能的话,RAM例化那一段话就要重复写n次。有没有可能只需要出现一次RAM例化的那段话,但使用的RAM名里掺杂有顶层传入的参数变量,参数不同,就能动态地例化出不同模块名的RAM?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-28 16:43:18 | 显示全部楼层
回复 4# haimo


    因为RAM模块名里有深度、宽度这些信息的数字,我想要的就是类似这样的效果(伪代码,语法请忽略):


   

        

                
  1. ram${DEPTH}_${WIDTH} u_ram
  2. (
  3. .clk (clk ),
  4. ...
  5. );
            

   

    复制代码


只需写这么一段话,顶层传入深度、宽度的参数,就能动态地例化出不同的RAM模块。verilog有这种语法吗?
回复 支持 反对

使用道具 举报

发表于 2014-3-28 17:36:55 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

发表于 2014-3-31 09:54:39 | 显示全部楼层
关于ram的知识我不太清楚,我只能说一些传参。举个分频器的例子吧。
比如偶数分频,假设为N分频,
module fp_even(clk_out,clk_in,rst);
output clk_out;
input clk_in;
input rst;
reg [1:0] cnt;
reg clk_out;
parameter N=6;
………………
endmodule

在主程序中需要一个8分频,一个16分频
module top(……)
fp_even #(.N(8)) u1_fp_even();
fp_even #(.N(16)) u2_fp_even();
endmodule
回复 支持 反对

使用道具 举报

发表于 2014-3-31 15:07:48 | 显示全部楼层
可以的吧
回复 支持 反对

使用道具 举报

发表于 2014-3-31 18:19:04 | 显示全部楼层
学习了,太好嘞
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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


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

GMT+8, 2025-9-14 02:06 , Processed in 0.017202 second(s), 4 queries , Gzip On, Redis On.

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