我正試圖將模塊與由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