在Verilog中制作2D数组

问题描述 投票:0回答:1

如何在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
arrays verilog
1个回答
1
投票

不要在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
© www.soinside.com 2019 - 2024. All rights reserved.