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

 
 
> Работа с Avalon ST, Как корректно работать с backprssure при регистровых задержках?
R6L-025
сообщение Jul 4 2014, 18:31
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 8-04-11
Из: Ростов-на-Дону
Пользователь №: 64 227



Доброго времени суток! Какое-то время назад столкнулся со следующим вопросом, который перманентно пытаюсь решить. Пусть имеем некоторый блок, на входе и выходе которого стоят буферы FIFO с шиной Avalon ST, а между ними куча регистровой логики (например конвееризированные умножители, без обратной связи, т.е. сигналов ready) задерживающей поток на несколько десятков тактов. Сам вопрос - как в этом случае корректно реализовать работу с шиной Avalon ST? Ведь при опускании in_ready выходного FIFO данные продолжат литься, даже если завершить передачу потока в регистровую логику.

У меня получилось два довольно кривых решения:

1. Размер выходного буфера выбрать большим, чем максимальная задержка внутри блока, и при опускании сигнала out_ready выходного буфера опускать сигналы in_valid и out_ready во входном буфере, тем самым обрывать входной поток, и собирать в это время выходным FIFO данные выходящие из регистров. (см рис.).
2. Ещё более некрасивый - использовать сигнал out_ready как сигнал clk_en для регистров, хотя, как я понимаю, это самый злобный способ, грозящий нестабильностью системы.

Кто как решает подобные задачи?

Думаю есть готовые реализациии в Altera-ских Qsys корках, но пока не натыкался ни на что подходящее под этот случай.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post



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

 


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


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