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

 
 
> Гуру ХДЛ, проясните про FIFO, Как правильно обрабатывать флаги?
des00
сообщение May 30 2005, 04:28
Сообщение #1


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Добрый день!.
Мне в проекте потребовалось использовать модуль синхронного FIFO (т.е. у клок), вроде бы ничего сложно, но т.к. раньше такого не делал, возникла заминка.
Для начала сгенерировал в альдеке то что они предлагают использовать и использовав их код в качестве референсного немного его переписал. Т.к. они в качестве указателей пользуют integer range и обрабатывают его переполнение, я заменл это на std_logic_vector и убрал обработку(это дало код, который синтезатор исе лучше "понял", если судить по его отчету).
Но при симууляции возникили вопросы:
Флаги empty & full в коде регистровые, т.е. сигнал на выходе появляеься на такт позже управляющих сигналов (одновременно с записью/чтением РАМ).
поэтому в тестбенче, который моделирует синхронный модуль, с которого информация пишеться в фифо, и синхронный модуль который читает фифо, происходит "перегрузка".
Например при глубине в 8 чисел, делаеться попытка писать в фифо 9 (строб записи 9 тактов), А при чтении модуль читает 9 чисел, вместо 8.
Эту проблему можно решить если сделать флаги empty&full не регистровыми или ввести дополнительную асинхронную логику в синхронные блоки. Можно усложнить блок управление фифо - например ввести сигнал ошибки записи. (как в апноте от ксайлинкса).
И мой вопрос: Как лучше сделать ?? Просто не хочеться терять много времени на экспиременты.

ЗЫ. Сильно не пинайте если что smile.gif


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BSV
сообщение May 30 2005, 19:50
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045



У Xilinx'а есть несколько xapp'ов, посвященных реализации синхронных (один клок на чтение и на запись) и асинхронных (разные клоки) FIFO на блочной и распределенной памяти, смотрите на их сайте (там есть и исходники для разных вариантов).
Флаги лучше применять регистровые - положительно скажется на частоте.

Кстати, исходники там довольно корявые (если их творчески переработать с использованием generate и констант в разрядности шин - они получаются более компактными и их легче модифицировать для разных задач). К сожалению с глубиной (особенно для асинхронных FIFO) все не так просто, поскольку для генерации флагов там применяются счетчики Грея.


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
des00
сообщение May 31 2005, 03:55
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(BSV @ May 30 2005, 14:50)
Флаги лучше применять регистровые - положительно скажется на частоте.
*

информацию с сайта ксайлинкса изучаю.
А насчет флагов у меня и был вопрос, о том, как учитывают задержку флагов на такт.


--------------------
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 22:09
Рейтинг@Mail.ru


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