在一个Verilog语句中将值分配给2D数组中的所有列

时间:2014-04-20 06:51:30

标签: multidimensional-array verilog

我想为数组赋值 - mem。它有16行和16列。 每个元素是2位宽。 我想像这样初始化一个数组的每一行。如果我正在初始化数组的第4行,那么每个值应存储在相应的列中。所以0将在第15列,2将在第12列,等等。我不想逐列存储值。 但是下面的代码给了我一个错误。请有人可以帮助我。非常感谢。

module test2;

reg  [1:0] mem [15:0][15:0];

wire [1:0] icon;

assign icon = mem[4][4];

mem[4][15:0] = 16'h0002000000000000; 

$strobe("%b", icon);

endmodule;

1 个答案:

答案 0 :(得分:0)

您可以在初始块内的for循环中执行此操作:

module test2;
parameter initial_value = 16'b0001000000000000; 

integer i;
reg  [1:0] mem [15:0][15:0];
wire [1:0] icon; 
assign icon = mem[4][4];

initial 
  for ( i=0 ; i<=15; i++)
    mem[4][i] = initial_value[i];

always begin #10 $strobe("%b", icon); end

endmodule;