在verilog中使用参数进行连续赋值?

时间:2013-02-01 00:32:04

标签: verilog parameterized

你能在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。

我没有得到任何语法错误,但当我尝试模拟它时,我得到: “错误:连接操作数”类型“具有不确定的宽度”

你们如何解决像这样的设计问题?

1 个答案:

答案 0 :(得分:4)

你有向后的重复操作符。应该是

{type{1'b0}},而不是{1'b0{type}}

我很惊讶你没有看到任何语法错误。