1

您可以在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。

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

你们将如何处理这样的设计问题?

4

1 回答 1

4

您有向后的重复运算符。应该

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

我很惊讶您没有从中看到任何语法错误。

于 2013-02-01T01:04:32.480 回答