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

 
 
> Странности в работе 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



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

 


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


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