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

 
 
 
Reply to this topicStart new topic
> Асинхронный 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
andrew_b
сообщение Feb 28 2005, 11:23
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Vitёk @ Feb 28 2005, 14:58)
Тем не менее CoreGen предлагает стандартный асинхронный ФИФО, который, по идее, работает без проблем. На него есть даже модель - но она для симуляции. А интересно, как он на самом деле сделан...
У кого какие мысли есть по этому поводу? Приглашаю к обсуждению. laugh.gif


А чего тут обсуждать. У Xilinx'a секретов нет:
ftp://ftp.xilinx.com/pub/applications/xapp/xapp131.zip
ftp://ftp.xilinx.com/pub/applications/xapp/xapp258.zip

Если надо, чтобы хвосты FIFO были разной разрядности, то и это можно:
ftp://ftp.xilinx.com/pub/applications/xapp/xapp205.zip
ftp://ftp.xilinx.com/pub/applications/xapp/xapp261.zip

Поменяв .zip на .pdf, можно скачать соответствующие app notes.
Go to the top of the page
 
+Quote Post
Vitёk
сообщение Feb 28 2005, 11:38
Сообщение #3


Местный
***

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



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

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


--------------------
/* Всё хорошо в меру. */
Go to the top of the page
 
+Quote Post
IUser
сообщение Feb 20 2007, 16:05
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 40
Регистрация: 6-02-07
Пользователь №: 25 100



Поменяв .zip на .pdf, можно скачать соответствующие app notes.

Поменял, но к сожалению не смог скачать app notes, обьясните где их можно скачать?
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Feb 20 2007, 16:31
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(IUser @ Feb 20 2007, 16:05) *
Поменяв .zip на .pdf, можно скачать соответствующие app notes.

Поменял, но к сожалению не смог скачать app notes, обьясните где их можно скачать?

Да, за два года на xilinx многое изменилось... Ищите, начиная отсюда: http://www.xilinx.com/xlnx/xweb/xil_public...plication+Notes
Go to the top of the page
 
+Quote Post
Vitёk
сообщение Feb 21 2007, 12:21
Сообщение #6


Местный
***

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



Если кому интересно, выкладываю вариант синтезируемого ФИФО. Основное отличие Coregen`овского - очередные данные на выходе присутствуют сразу (а как правило - ещё до того), как сигнал empty становится неактивным (В корегеновсом для получения данных нужно подать строб чтения и подождать 1 такт).
Модуль проверен, через него без ошибок прокачана не одна сотня гиг тестовых данных. smile.gif
Прикрепленные файлы
Прикрепленный файл  v_fifo16.zip ( 1.66 килобайт ) Кол-во скачиваний: 247
 


--------------------
/* Всё хорошо в меру. */
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Feb 21 2007, 13:28
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Vitёk @ Feb 21 2007, 12:21) *
В корегеновсом для получения данных нужно подать строб чтения и подождать 1 такт

Ну это не совсем так. CoreGen (по крайней мере, начиная с 8.1, про версии 7.x не скажу -- не использовал) позволяет сгенерировать и FWFT- (first word falls though) FIFO.
Go to the top of the page
 
+Quote Post

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

 


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


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