Цитата(USTAS @ Oct 31 2005, 17:16)
Сравнение двух указателей в FIFO можно осуществлять на двунаправленном счетчике, но для этого необходимо события записи и чтения перевести на одну тактовую.
Тогда:
WNR = ( WR & ~RD); // только запись
RNW = (~WR & RD); // только чтение
always @ (posedge WCLK)
begin
if (FLUSH) COUNT = 0; // очистка FIFO
else case (1'b1)
WNR: COUNT = COUNT + 1;
RNW: COUNT = COUNT - 1;
endcase
end
не шарю в верилоге, но попой чувствую что при длительности клока чтения в 4-е, скажем, раза больше длительности клока записи получим 4 вычитания за один такт чтения..
такая конструкция с успехом при одном клоке с обоих сторон работает
а ваще 2документа из предыдущего поста помогли железно
однако..