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

 
 
> Гуру ХДЛ, проясните про 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
Ответов
des00
сообщение May 30 2005, 06:21
Сообщение #2


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

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



Цитата(oleg_rudakov @ May 30 2005, 01:04)
Есть негласный стандарт при проектировании ASIC и FPGA: все, что касается памяти, делать на имеющихся на кристалле ресурсах (hardcore macroses). IBM ASIC Design Group проводила исследование по поводу эффективности применения регистровой памяти (а здесь именно этот тип и получится) при построении FIFO/LIFO. Так вот, до 256 байт - можно. Существенной деградации производительности и ресурсозатрат не проиходит. Все, что свыше этого - только с помощью ядер (аппаратаных примитивов типа BlockRAM у XILINX). Как-то очень давно, роясь в XILINX DataSheets, прочитал прямое указание использовать исключительно BlockRAM для генерации FIFO вместо HDL-inferred.

Нельзя ли уточнить, каковы причины использования Inferred RAM вместо применения готовых и оптимизированных ресурсов?
*


Причины как я уже указал, в том, что хочу научиться писать на хдл, без применения black box, там где это возможно, например с помощью констрейна RAM_STYLE можно уложить память описанную на хдл, туда куда нужно.
А насчет distributed ram если нужен фифо на 16 слов, зачем пользовать 2 килобайтный блок ? ?)

Цитата(andrew_b @ May 30 2005, 00:54)
Цитата(des00 @ May 30 2005, 08:41)
И я хочу понять принцип, все таки флаги должны быть регистровыми, или асинхронными.

http://forum.electronix.ru/index.php?showtopic=3197 ?
*



спасибо, знакомлюсь

Цитата(andrew_b @ May 30 2005, 00:54)
Цитата(des00 @ May 30 2005, 08:41)
И я хочу понять принцип, все таки флаги должны быть регистровыми, или асинхронными.

http://forum.electronix.ru/index.php?showtopic=3197 ?
*



Вопрос по пдф, xapp131, рисунок Figure 2: 511 x 8 Synchronous FIFO
у меня получаються точно такиеже осцилограммы, за одним исключением на рисунке 2 строб записи прерываеться одновременно с установлением сигнала full. У меня в в тест бенче процесс записи:
Код
process (clk) is
....
begin
.....
if (rising_edge(clk)) then
 if (full /= '1') then
    write_allow <= '1';
 else
    write_allow <= '0';
  end if;
.............


и строб записи перекрывается с full на такт sad.gif(


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



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

 


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


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