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

Verilog:为什么解包数组的所有元素都必须初始化?,verilog,fpga,hdl,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 当我试图在always块中从Xpos或YPO读取元素0时,得到的是0。解决方案是在初始块中添加for

我的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
当我试图在always块中从Xpos或YPO读取元素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
初始开始
Xpos[0]=6'd20;
Xpos[1]=6'd19;
Xpos[2]=6'd18;
Ypos[0]=6'd15;
Ypos[1]=6'd15;
Ypos[2]=6'd15;

对于(k=3;kAre你在模拟中得到了0吗?你应该得到x。你能显示更多的代码吗?似乎存在一些模拟器问题,因为你不应该在always Block中得到
0
。我不是在执行模拟,而是使用FPGA设备。我认为你应该使用非阻塞分配”准确地说,没有最终循环,Xpos[0]仍然都是0。