【问题标题】:Using parameter for continuous assignment in verilog?在verilog中使用参数进行连续分配?
【发布时间】:2013-02-01 00:32:04
【问题描述】:

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

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

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

【问题讨论】:

    标签: verilog parameterized


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多