Не вижу ничего криминального. Сигналы с одного конца будут всегда запаздывать после операций с другого. Очень трудно сделать такое FIFO, чтобы после записи 74-ого слова статус стал full, и после чтения этого же слова на следующем же такте этот сигнал выключился. В документации на FIFO обещают, что статусные сигналы не позволят пользователю записать, когда некуда или прочитать, когда нечего. Счетчики также гарантируют надежность обмена данными с каждой из сторон. Если счетчик слов со стороны записи, то он может завышать, но не занижать показания. Со стороны чтения счетчик соответственно имеет право занижать, но не завышать. Отставание счетчиков вполне объяснимо, так как нужно передать информацию из одного домена в другой, на что требуется синхронизация, если клоки разные и в любом случае перекодирование из кодов грея. Пользоваться FIFO и учитывать его латентность как константу было бы неверно, выйдет новая версия или в следующем кристалле окажется аппаратное FIFO и все поменяется.
|