Ich versuche, ein Modul mit einem asynchronen FIFO zu verbinden, der vom Xilinx CORE Generator erzeugt wird. Ich habe jedoch beobachtet, dass die am Eingang von AFIFO gelieferten Daten (obwohl sie korrekt sind) nach einer Wartezeit von 6-7 Taktzyklen auf dout erscheinen. Ist das zu erwarten? Oder mache ich etwas falsch? Was ich tue, ist, dass der write_enable-Pin von AFIFO aktiviert wird, die Eingabedaten bereitgestellt werden und dann der read_enable-Pin beim nächsten Zyklus aktiviert wird. Aber immer noch besteht das Problem der Latenz. Jede Hilfe wird geschätzt.Lesen nach Schreiblatenz im asynchronen FIFO?
EDIT: Ich füge einen Teil meines Codes an.
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)
);
ein beliebiges Codefragment? – Serge
Wenn Ihr 'clk2' langsamer als' clk1' ist, fehlen Ihrem 'rd_en' Flipflop möglicherweise einige der Freigabesignale (im' if (wr_en) 'Block). –
Was soll ich dann tun? – Candy