我有下面的代码,我尝试在verilog中实现一个低延迟的第一个单词fall-through fifo。
reg [width-1:0] mem [depth-1:0];
always @ (posedge clk) begin
if (wr_en) begin
mem[wr_pointer[address_width-1:0]] <= #1 din;
end
end
assign #1 dout = mem[rd_pointer[address_width-1:0]];
always @ (posedge clk) begin
if (reset) begin
wr_pointer <= #1 0;
end else if (wr_en) begin
wr_pointer <= #1 wr_pointer + 1'b1;
end
end
always @ (posedge clk) begin
if (reset) begin
rd_pointer <= #1 0;
end else if (rd_en) begin
rd_pointer <= #1 rd_pointer + 1'b1;
end
end
我合成它并收到以下消息:
INFO:Xst:3218 - HDL ADVISOR - The RAM <Mram_mem> will be implemented on LUTs
either because you have described an asynchronous read or because of currently
unsupported block RAM features. If you have described an asynchronous read,
making it synchronous would allow you to take advantage of available block RAM
resources, for optimized device usage and improved timings. Please refer to
your documentation for coding guidelines.
有人可以向我解释这条消息吗?我不认为这需要异步读取。我只在时钟边沿修改读指针。还有什么我想念的吗?