我正试图将模块与由Xilinx CORE Generator生成的异步FIFO进行接口。但是,我观察到AFIFO输入端口提供的数据(虽然正确)在6-7个时钟周期的延迟之后开始出现在dout上。这是预期的吗?或者我做错了什么?我所做的是断言AFIFO的write_enable引脚,提供输入数据,然后在下一个周期断言read_enable引脚。但仍存在延迟问题。任何帮助表示赞赏。在异步FIFO中写入延迟后读取?
编辑:我附上我的代码的一部分。
always @ (posedge clk1, posedge rst)//faster clock domain
begin
if (rst)
wr_en<= 1'b 0;
else
begin
if (data_wrt)
begin
wr_en<= 1'b 1;
end
else
wr_en<= 1'b 0;
end
end
always @ (negedge clk2, posedge rst)//slower clock domain
begin
if (rst)
rd_en<= 1'b 0;
else
begin
if (wr_en)
begin
rd_en<= 1'b 1;
end
else
rd_en<= 1'b 0;
end
end
AFIFO AFIFO1(//AFIFO module instantiation
.din(data_in),
.rd_clk(clk2),
.rd_en(rd_en),
.rst(reset),
.wr_clk(clk1),
.wr_en(wr_en),
.dout(data_out),
.empty(empty),
.full(full)
);
任何代码片段? – Serge
如果你的'clk2'比'clk1'慢,你的'rd_en'触发器可能会丢失一些使能信号(在'if(wr_en)'块中)。 –
那我该怎么办? – Candy