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

 
 
> Асинхронный 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
 
Start new topic
Ответов
Vitёk
сообщение Feb 28 2005, 11:38
Сообщение #2


Местный
***

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



Сенкс, smile.gif почитаю.

Почитал. rolleyes.gif То, что надо.
У меня была мысль использовать код Грея при переносе состояния счётчиков с одной тактовой на другую (интуитивно так появилась), но я её прогнал, так как _показалось_, что и этот способ не гарантирует отсутсвие сбоев. После прочтения соответствующих ХАРР-ов пришлось даже приложить некоторое усилие, что бы мысль типа "при изменении всего одного разряда логические гонки исключены" продавилась в закостеневшие синапсы. Ещё раз спасибо. smile.gif


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



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

 


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


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