verilog数组的常量值

时间:2014-04-19 05:00:20

标签: arrays parameters constants verilog

如何获得常量值或参数数组?我想使用这个数组来选择寄存器的一部分,所以它应该是常量。因为我想将这些部分分配给在for循环中生成的函数的输入,所以我需要一个数组来使用索引。

这是我遇到问题的代码的一部分,因为在i的每次迭代中,我需要一个新的encoderOut

generate
  for ( i=0; i<row ; i=i+1) begin:hi
    for ( j=0; j<column ; j=j+1) begin:ji
      oneBitBlock #(choicesBit,selBit,funcBit,funcCount,(j+1)*row-1)U (rst,muxChoices[encoderOut-1:0],gene[pack*(i*row + j) +: encoderOut],gene[pack*(i*row + j)+encoderOut +: encoderOut],gene[pack*(i*row + j)+2*(encoderOut) +: funcBit],out[i*row + j]);
    end
  end
endgenerate

1 个答案:

答案 0 :(得分:0)

遗憾的是,没有直接的方法来制作一系列参数。但是,如果您的参数值有限,比如32位,那么您可以连接这些值并使用移位和掩码提取它们:

parameter TABLE = {32'd12,32'd45,32'd11}, // parameter values (value1,value2,value3...)
parameter TABLE_N   = 4, // number of entries in a table

现在,将encodeOut替换为

((TABLE >> (32*(TABLE_N - i - 1 ))) & {32{1'b1}})
相关问题