【问题标题】:verilog array of constant value常量值的verilog数组
【发布时间】:2014-04-19 05:00:20
【问题描述】:

如何获得常量值数组或参数数组?我想用这个数组来选择寄存器的一部分,所以它应该是常数。因为我想将这些部分分配给在 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

【问题讨论】:

    标签: arrays parameters constants verilog


    【解决方案1】:

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

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

    现在,将 encoderOut 替换为

    ((TABLE >> (32*(TABLE_N - i - 1 ))) & {32{1'b1}})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多