verilog 二维数组不能赋值

reg[2:0] memory[4:0][5:0];在initial中赋值仿真看不到结果,二维的也是,只有在时钟脉冲下不断赋值才有结果,怎么回事

没有所谓的“三维数组”。
只有这种

reg [7:0] mem [0:255];

initial的时候可以做到初始化,但仅限于仿真,initial是不可综合的。

integer k;
initial begin
for(k=0;k<256;k=k+1) begin mem[k] = 8'h55; end
end

如果是要求可以综合的电路的话,可以这样(addr和wr_en,rd_en你自己定义吧。):

integer k2;
reg [7:0] dout;
always @(posedge clk or negedge rst_n) begin
if(~rst_n) for(k=0;k<256;k=k+1) begin mem[k] = 8'h55; end
else if(wr_en) mem[addr] <= din;
end

always @(posedge clk or negedge rst_n) begin
if(~rst_n) dout <= 8'h0;
else if(rd_en) dout <= mem[addr];
end
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-14
verilog里面添加了多维数组 ,使用方法看这个博客的介绍吧。http://blog.csdn.net/qp314/article/details/5157276
相似回答