在我的 verilog 代码中,我有一个数组声明:
reg [8:0] mem [1024:0] ;
在程序块中,我有这个
always @(posedge clk)
for (i = 0; i < 8; i=i+1) begin
mem[wr_address[i]] = data_in[i];
end
end
最终发生的事情是我的综合工具将该内存扁平化为寄存器数组。我认为原因是一个时钟周期内多次读取。有哪些方法可以避免此问题,同时仍保持一个时钟周期内的多次写入?
BRAM 通常一次只能访问一个或两个端口。您所描述的行为映射到一组平面位寄存器。如果您需要 BRAM,则需要更改行为以映射 BRAM 提供的功能。就是这样ccn