你能在verilog中使用参数值进行赋值吗?我可以以某种方式定义参数变量的宽度吗?
例如:
module mymodule #(parameter type =2)
(...
output [(3+type)-1:0] out);
wire [2:0] rate;
...
assign out = {rate, {1'b0{type}} };
endmodule
让我们说type = 2。然后我想要比特长度5.速率仍然是比特长度3(简单地说它是3'b100),当我指出我希望它是100 000。
同样,如果type = 6。然后我想要的是比特长度9.速率仍然是比特长度3(再次说它的3'b100),当我指定时我希望它是100 000000。
我没有得到任何语法错误,但当我尝试模拟它时,我得到: “错误:连接操作数”类型“具有不确定的宽度”
你们如何解决像这样的设计问题?
答案 0 :(得分:4)
你有向后的重复操作符。应该是
{type{1'b0}}
,而不是{1'b0{type}}
我很惊讶你没有看到任何语法错误。