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

 
 
 
Reply to this topicStart new topic
> Странности в работе FIFO, Нестабильная работа буфера
Александр77
сообщение Jul 14 2014, 15:59
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Доброго времени, коллеги!
Разрабатываю описание аппаратуры для системы сбора и передачи данных.
Есть КА сбора данных и формирования протокола (общая длина 250 Байт), время формирования протокола 60 мкс, в течение которого данные записываются в двухпортовую память.
По окончанию работы в цикле этот КА формирует сигнал "готовности данных" (PRcomplete, второй снизу на диаграмме), длительностью порядка 900 нс.
По переднему фронту "готовности данных" второй КА формирует сигналы адреса и чтения из двухпортовой памяти, а также сигналы wrreq и wrclk управления буфером FIFO (на времянке представлен только сигнал разрешения записи и обозначен lngfifowrreq). Собственно буфер представляет сгенерированную квартусом (9.0 web Edition) мегафункцию с двумя раздельными тактовыми сигналами синхронизации для записи и чтения (улучшенной защитой от метастабильности). Перезапись данных происходит примерно за 5 мкс.
Оба КА работают безупречно, на одном тактовом домене 200 МГц. Запись производится на чатоте 50 МГц (на один такт записи тратится 4 такта 200 МГц).
Странности начинаются при попытке чтения дынных из буфера FIFO.
Предполагалось, что по окончанию перезаписи протокола в буфер, задним фронтом сигнала lngfifowrreq, должен запуститься КА формирующий сигналы rdreq и rdclk. Сиганл rdclk должен во время генерации идти с частотой 60 МГц. КА работат в тактовом домене 240 МГц, поэтому lngfifowrreq, поступает на КА через три триггера (входной с доменом 200МГц, а два выходных с доменом 240 МГц). В КА так же заводится сигнал опустошения читаемого буфера lngfifordempty, по которому должно прекратиться чтение данных из буфера. Отладка в моделсим показала правильные начало и остановку чтения буфера.
В реальном железе (cyclon II) КА не запускается, т.к. после перезаписи данных в FIFO вместе с установкой lngfifowrreq=0, выставляется сигнал lngfifordempty=1, несмотря на то, что во время перезаписи этот сигнал обнулялся(см временную диаграмму).
Попробовал вместо rdclk подать постоянную частоту 60МГц, дополнительно принудительно подавая нуль вместо сигнала rdempty - КА заработал, но не останавливается и иногда в приемной программе появляются повторы байт, которых быть не должно.
Подскажите, в чем может быть причина установки признака "буфер чтения пуст" (rdempty) при снятии сигнала wrreq?
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Александр77
сообщение Jul 14 2014, 18:19
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Похоже нашел ответ -> здесь
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jul 15 2014, 04:26
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(Александр77 @ Jul 15 2014, 01:19) *
второй КА формирует сигналы адреса и чтения из двухпортовой памяти, а также сигналы wrreq и wrclk управления буфером FIFO

Ну вот теперь, самостоятельно пройдя по собственным граблям, вы убедились, что gated clock - абсолютное зло, которое надо уничтожать повсеместно.

З Ы (Немного не в тему) А вообще забавно читать подобного рода посты типа "у меня задумана вот такая вот хреновина, она должна работать вот так и так,
но не работает - ааааа, памажите люди добрые, сорцы не покажу ибо коммерческая (или даже не дай бог военная) тайна и вообще копирайт".
Далее обычно следует ответ "давай сорцы, телепаты в отпуске".
Ну а потом 2 варианта : 1 - сорцы дал, нашли косяк - помогли, исправили.
или 2 вариант : "таки залез в гугл, нашёл похожую траблу, исправил сам".
Пора уже видимо FAQ писать на тему "ааааа, памажите, у меня ничего не работает".
Go to the top of the page
 
+Quote Post
Mad_max
сообщение Jul 15 2014, 07:34
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



Цитата(Bad0512 @ Jul 15 2014, 08:26) *
Ну вот теперь, самостоятельно пройдя по собственным граблям, вы убедились, что gated clock - абсолютное зло, которое надо уничтожать повсеместно.

З Ы (Немного не в тему) А вообще забавно читать подобного рода посты типа "у меня задумана вот такая вот хреновина, она должна работать вот так и так,
но не работает - ааааа, памажите люди добрые, сорцы не покажу ибо коммерческая (или даже не дай бог военная) тайна и вообще копирайт".
Далее обычно следует ответ "давай сорцы, телепаты в отпуске".
Ну а потом 2 варианта : 1 - сорцы дал, нашли косяк - помогли, исправили.
или 2 вариант : "таки залез в гугл, нашёл похожую траблу, исправил сам".
Пора уже видимо FAQ писать на тему "ааааа, памажите, у меня ничего не работает".

Больше всего тут расстраивает, что все коммерческое, военное, тайное, а по факту с
базовыми вопросами люди просят помощи у интернет сообщества, а где же старшие
товарищи на местах, которые помогут, научат, расскажут. Молодой плисовод просто в свободном плавание.
А потом удивляемся, что не летает, не плавает, не стреляет.
Go to the top of the page
 
+Quote Post
Александр77
сообщение Jul 15 2014, 13:47
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Цитата(Bad0512 @ Jul 15 2014, 08:26) *
Ну вот теперь, самостоятельно пройдя по собственным граблям, вы убедились, что gated clock - абсолютное зло, которое надо уничтожать повсеместно.

Да, убедился, что неправильно понимал работу FIFO и тактовые сигналы надо подавать постоянно, а не только во время операций чтения/записи.
Сожалею что ранее отнял Ваше время на чтение и ответ в виде крика души. bb-offtopic.gif
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jul 16 2014, 03:22
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(Александр77 @ Jul 15 2014, 20:47) *
Да, убедился, что неправильно понимал работу FIFO и тактовые сигналы надо подавать постоянно, а не только во время операций чтения/записи.
Сожалею что ранее отнял Ваше время на чтение и ответ в виде крика души. bb-offtopic.gif

Боюсь, что вы не до конца поняли в чём изначально корень зла. То, что фифошка работает некорректно с "прореженными" клоками - это следствие того,
что никто и никогда клоки не прореживает, это явление называется в англоязычной литературе "gated clock" и является причиной многих неприятностей в синхронном
дизайне.
Если объяснить в двух словах, то рекомендация следующая : никогда не пропускайте клоки через логику, если надо управлять клоками - используйте спец. вход триггера clock enable.
Всё это очень широко описано в соответствующей литературе и неоднократно обсуждалось на форуме.
Go to the top of the page
 
+Quote Post

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

 


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


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