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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 14003|回复: 5

[求助] verilog parameter的使用问题

[复制链接]
发表于 2012-12-7 19:52:55 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 yushuiyang1986 于 2012-12-7 20:21 编辑

例如如下代码:module
……
parameter WIDTH = 32;
reg [WIDTH-1 : 0] a;
reg [WIDTH-1 : 0] a;
always @(posedge clk or negedge rst_n)

if(!rst_n)
    a <= WIDTH'd10;
else
    a <= {a_next, (WIDTH-6)‘d4};
……
endmodule

这个里面的
a <= WIDTH'd10;a <= {a_next, (WIDTH-6)‘d4};
编译会报错,但是如果改成
a <= 32'd10;
a <= {a_next, 26‘d4};
就没有问题;
可是现在想通过顶层例化的时候通过parameter的设定来定义a的位宽,
如果写成固定位宽,就会出现位宽不匹配;
如果不写常数的位宽,拼接就会有问题,而且coding style看起来不好;
请问有没有办法可以解决这个问题的方法,或者推荐的做法是什么?
发表于 2012-12-7 23:42:06 | 显示全部楼层
第一个可以写成   'hd10
第二个写起来比较复杂。。。。 {a_next, {(WIDTH-9){1'b0}},3'h4}
 楼主| 发表于 2012-12-8 11:02:13 | 显示全部楼层
回复 2# tiangua


  请问 'hd10是什么?还是说‘d10?
发表于 2012-12-8 20:50:45 | 显示全部楼层
确实'd10
发表于 2012-12-9 10:18:16 | 显示全部楼层
可不可以用`define
和parameter  有什么区别 都表示常量的时候?
发表于 2012-12-9 22:19:01 | 显示全部楼层
直接写'd10吧,有可能会出现warning
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-23 00:09 , Processed in 0.021957 second(s), 8 queries , Gzip On, Redis On.

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