我在初始块中采用了一个计数器变量'n',我计算了一些值。计数后,我想用它作为某些'reg a'的宽度。 所以我可以声明可以注册为reg [n:0] a 当我尝试这个时它会给出一个r不是常数的错误....有什么方法可以解决这个问题
答案 0 :(得分:3)
不,你不能这样做。 Verilog描述意味着要转换成某种电子电路,这些电子电路不能动态地改变它们的总线位数。
您所能做的就是使用您将使用的最大宽度来定义a
,然后仅使用相应的位数和值n
你可以做的另一件事(但我认为它在这里不使用)是定义一个带参数化宽度的reg
。这与定义具有可变宽度的reg
不同,因为必须在编译时知道参数的值。