微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog parameter的使用问题

verilog parameter的使用问题

时间:10-02 整理:3721RD 点击:

例如如下代码: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看起来不好;
请问有没有办法可以解决这个问题的方法,或者推荐的做法是什么?

第一个可以写成   'hd10
第二个写起来比较复杂。 {a_next, {(WIDTH-9){1'b0}},3'h4}



  请问 'hd10是什么?还是说‘d10?

确实'd10

可不可以用`define
和parameter  有什么区别 都表示常量的时候?

直接写'd10吧,有可能会出现warning

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top