реклама на сайте
подробности

 
 
> Асинхронный FIFO, способы реализации
Vitёk
сообщение Feb 28 2005, 10:58
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 17-01-05
Из: Ростов-на-Дону
Пользователь №: 2 018



В свете разработки PCI интерфейса на ПЛИС скоро придется решать проблему с сабжем. huh.gif
До сих пор приходилось делать ФИФО, которые работают с непрерывным потоком данных. Выглядело это примерно так: указатель записи работал на входной тактовой, указатель чтения - на выходной тактовой. А контроль заполнения был трогательно простой: старший разряд указателя записи сначала приводился к выходной тактовой, а потом сравнивался с аналогичным разрядом указателя чтения. как только они не совпадали - начинался процесс слива. В общем, это работало как качели, по заполнению половины буфера.
Теперь же мне надо будет сливать буфер до последнего байта, скажем так - выжимать его досуха. Вот тут и выползают проблемы.Сравнивать указатели в лоб, даже привязав один к тактовой частоте второго - опасно, может случиться такая ситуация: оба указателя совпали, но из-за задержек распространения один из разрядов защелкнулся раньше, чем успели доползти изменения. А компаратор адресов, пользуясь этим значением, выдаст несовпадение, и далее ФИФО сделает один холостой круг.
Другой вариант подсказал коллега. Когда зараннее известно, какая тактовая выше - в этом случае к более высокой тактовой можно привязывать стробы записи (или чтения), и уже на ней считать заполненность буфера. Только как это будет выглядеть, мне до конца не ясно. Да и не нравиться мне этот вариант.
Тем не менее CoreGen предлагает стандартный асинхронный ФИФО, который, по идее, работает без проблем. На него есть даже модель - но она для симуляции. А интересно, как он на самом деле сделан...
У кого какие мысли есть по этому поводу? Приглашаю к обсуждению. laugh.gif


--------------------
/* Всё хорошо в меру. */
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.02594 секунд с 7
ELECTRONIX ©2004-2016