如何在Verilog中创建2D数组?确切地说,我想要一个32x100矩阵。那么,我如何定义这个数组的每个位置的值?我尝试了一些我在网上找到的东西,但是我的代码需要合成,模拟不是真的。
谢谢
到目前为止我的尝试(我是verilog的新手)
module top(
input a
);
integer i;
reg [31:0] arr[0:99];
initial begin
for(i=0;i<100;i=i+1) begin
assign arr[i] = 22;
end
end
endmodule
不要在assign
块或initial
bock中使用always
。它是程序性分配计划耗尽的模拟特征(IEEE Std 1800-2012 C.4构造标识为弃用)。
我猜你的目标是FPGA,你可以用以下方法初始化数组:
initial begin
for(i=0;i<100;i=i+1) begin
arr[i] = 22;
end
end
IC设计忽略initial
代码必须进入always
块的重置条件。或者,如果它是ROM,您可以使用生成块:
genvar i;
generate
for(i=0;i<100;i=i+1) begin
assign arr[i] = 22;
end
endgenerate