Verilog:为什么必须初始化解包数组的所有元素?

时间:2017-01-28 19:34:00

标签: verilog fpga hdl

我的Verilog-2001代码如下:

reg [5:0] Xpos [0:31];
reg [5:0] Ypos [0:31];

initial begin
  Xpos[0] = 6'd20;
  Xpos[1] = 6'd19;
  Xpos[2] = 6'd18;
  Ypos[0] = 6'd15;
  Ypos[1] = 6'd15;
  Ypos[2] = 6'd15;
end

当我试图从总是阻塞的Xpos或Ypos中读取元素0时,我得到0.解决方案是在初始块中添加for循环,这将填充其余的"字节"数组:

initial begin
  Xpos[0] = 6'd20;
  Xpos[1] = 6'd19;
  Xpos[2] = 6'd18;
  Ypos[0] = 6'd15;
  Ypos[1] = 6'd15;
  Ypos[2] = 6'd15;
  for (k=3; k<32; k=k+1'b1) begin
    Xpos[k] <= 6'd0;
    Ypos[k] <= 6'd0;
  end
end

第一个问题是为什么必须初始化解压缩数组的所有元素,其次,是否有更优雅的方法来执行此操作?

祝你好运, 卡米尔

0 个答案:

没有答案