我们如何用变量值定义寄存器宽度

时间:2015-04-04 15:14:07

标签: variables verilog

我在初始块中采用了一个计数器变量'n',我计算了一些值。计数后,我想用它作为某些'reg a'的宽度。 所以我可以声明可以注册为reg [n:0] a 当我尝试这个时它会给出一个r不是常数的错误....有什么方法可以解决这个问题

1 个答案:

答案 0 :(得分:3)

不,你不能这样做。 Verilog描述意味着要转换成某种电子电路,这些电子电路不能动态地改变它们的总线位数。

您所能做的就是使用您将使用的最大宽度来定义a,然后仅使用相应的位数和值n

你可以做的另一件事(但我认为它在这里不使用)是定义一个带参数化宽度的reg。这与定义具有可变宽度的reg不同,因为必须在编译时知道参数的值。