J'essaie d'interfacer un module avec une FIFO asynchrone générée par le générateur Xilinx CORE. Cependant, j'ai observé que les données fournies au port d'entrée d'AFIFO (bien que correct) commencent à apparaître sur dout après une latence de 6-7 cycles d'horloge. Doit on s'y attendre? Ou est-ce que je fais quelque chose de mal? Ce que je suis en train de faire est d'affirmer la broche write_enable de AFIFO, fournir les données d'entrée, puis affirmer la broche read_enable au cycle suivant. Mais le problème de la latence existe toujours. Toute aide est appréciée.Lire après écriture latence dans FIFO asynchrone?
EDIT: Je joins une partie de mon code.
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)
);
un fragment de code? – Serge
Si votre 'clk2' est plus lent que' clk1', votre flip flop 'rd_en' pourrait manquer certains des signaux d'activation (dans le bloc' if (wr_en) '). –
Alors que dois-je faire? – Candy