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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4087|回复: 10

[讨论] 参数化模块设计中如何判读参数值?

[复制链接]
发表于 2015-1-12 09:35:18 | 显示全部楼层 |阅读模式

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

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

x
参数化模块设计中,

需要对调用时给出的参数进行判读,

以进行不同的处理,

但参数是常数,

如何在模块的程序里进行判读实现条件编译?》

谢谢。。。

如:
module Decoder(A,F);
         parameterWidth=16,Polarity=1;
         …….
endmodule

Width可能取值:8,16.32 ,

如何判读或者实现条件编译?
发表于 2015-1-12 10:59:14 | 显示全部楼层
`ifdef   xxxxxxxxx
parameter Width=16,Polarity=1;
`endif

`ifdef   xxxxxxxxx
parameter Width=8,Polarity=1;
`endif

…………
 楼主| 发表于 2015-1-12 13:43:49 | 显示全部楼层




   
谢谢,

这个方法考虑过,

模块的参数个数较多,还有通道数目的参数由1 ~8,

组合起来比较复杂,

还有没有其它方案?

感谢。。。
 楼主| 发表于 2015-1-12 14:35:37 | 显示全部楼层


`ifdef   xxxxxxxxx
parameter Width=16,Polarity=1;
`endif

`ifdef   xxxxxxxxx
parameter Width=8, ...
freedomistic 发表于 2015-1-12 10:59




   

这个方法还是有问题:

因为参数化模块对于不同的位宽是统一的code供别的模块调用,

顶层模块调用时只提供不同位宽的参数,

而不需另外定义 macro,

所以还是不能实现自动根据参数值实现条件编译。
发表于 2015-1-12 23:15:07 | 显示全部楼层
module
   #(
       parameter width = 8;
       parameter polarity = 1
       )
      (
       端口定义
      );

endmodule
发表于 2015-1-12 23:15:44 | 显示全部楼层
回复 5# xduryan


   这样在调用一个模块时,参数就可以随便改
 楼主| 发表于 2015-1-13 09:23:17 | 显示全部楼层


module
   #(
       parameter width = 8;
       parameter polarity = 1
       )
      (
       ...
xduryan 发表于 2015-1-12 23:15




谢谢回复,

我的意思是在参数化模块内部能根据顶层的调用给出的具体参数值在模块内部实现条件编译,

即根据WIDTH= 8,16,32 ,实现条件编译。
发表于 2015-1-13 14:47:54 | 显示全部楼层
使用generate,
generate
if (AXI_DW == 32)        assign awaddr_ram = awaddr_proc[RAM_PW-1:2];
else if (AXI_DW == 64)          assign awaddr_ram = awaddr_proc[RAM_PW-1:3];
else if (AXI_DW == 128)  assign awaddr_ram = awaddr_proc[RAM_PW-1:4];
//else if (AXI_DW == 256)  assign awaddr_ram = {awaddr_proc[RAM_PW-1:5], 1'b0};   
endgenerate
 楼主| 发表于 2015-1-14 10:46:16 | 显示全部楼层


使用generate,
generate
if (AXI_DW == 32)        assign awaddr_ram = awaddr_proc[RAM_PW-1:2];
els ...
eaglelsb 发表于 2015-1-13 14:47




    谢谢,

AXI_DW  是模块的参数吧?

那应该是常数,不能当作变量进行判断啊?
发表于 2015-1-16 01:01:32 | 显示全部楼层
楼上的generate是你最好的选择,generate语句里的if判断条件,就是常数参数,根据这些参数,选择生成哪一种电路,你不会没看懂吧。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-29 10:20 , Processed in 0.028020 second(s), 9 queries , Gzip On, Redis On.

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