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

 
 
> Передача данных внутри дизайна - как лучше?
akorud
сообщение Feb 18 2011, 15:35
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842



Приветствую, такой вот вопрос (от начинающего в ПЛИС):
Есть три блока А, В, С. Каждый из них принимает 32 байта, что-то с ними делает (например нормализует), после чего готов передавать их дальше. Блоки соединены цепочкой А->B->C. На вход блока А данные приходят извне (строб + 8 линий данных) с частотой сильно меньше системной (1MHz vs 50MHz).
Вопрос в том как лучше передавать данные между блоками. В голову приходят такие варианты:
1. В блоке два банка памяти. В один принимаем, из другого в том же темпе выпихиваем. Как только приходит достаточное количество данных быстро делаем необходимую обработку и переключаем банки.
2. Один банк. Как только приходит достаточное количество данных быстро делаем необходимую обработку и с системной частотой "активно" выпихиваем дальше. Важно успеть до прихода следующего байта.
3. Какой-нибудь дополнительный "контроллер" управляющий всем. Т.е. каждый из блоков выставляет сигнал "готово" и дальше контроллер "вытягивает" данные и передает дальше.

Блоки А, В, С самописные, так в принципе все интерфейсы можно менять кроме входного. Проблем с ресурсами нет (пока sm.gif
Что скажете? Буду благодарен за любой совет.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
L_Konstantin
сообщение Feb 18 2011, 16:58
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 13-10-06
Из: Новосибирск
Пользователь №: 21 282



Цитата(akorud @ Feb 18 2011, 21:35) *
В голову приходят такие варианты:
1. В блоке два банка памяти. В один принимаем, из другого в том же темпе выпихиваем. Как только приходит достаточное количество данных быстро делаем необходимую обработку и переключаем банки.
2. Один банк. Как только приходит достаточное количество данных быстро делаем необходимую обработку и с системной частотой "активно" выпихиваем дальше. Важно успеть до прихода следующего байта.
3. Какой-нибудь дополнительный "контроллер" управляющий всем. Т.е. каждый из блоков выставляет сигнал "готово" и дальше контроллер "вытягивает" данные и передает дальше.


Попробую написать свои мысли:
1. Если все блоки делают части одной обработки, то все таки общий контроллер управления просто логичен
2. Не понятно все таки какая именно обработка предполагается... Если просто линейная - то все это всего лишь конвейеры, которые соединены последовательно. В этом случае никаких дополнительных сигналов между блоками можно избежать, переложив функцию слежения за появлением валидных данных на собственно управляющий внешний контроллер.
Go to the top of the page
 
+Quote Post
akorud
сообщение Feb 18 2011, 17:13
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842



Цитата(L_Konstantin @ Feb 18 2011, 17:58) *
Попробую написать свои мысли:
1. Если все блоки делают части одной обработки, то все таки общий контроллер управления просто логичен
2. Не понятно все таки какая именно обработка предполагается... Если просто линейная - то все это всего лишь конвейеры, которые соединены последовательно. В этом случае никаких дополнительных сигналов между блоками можно избежать, переложив функцию слежения за появлением валидных данных на собственно управляющий внешний контроллер.

1. Обработка одна, просто поделена на блоки для упрощения разработки и симуляции.
2. Да, это просто конвейер, но "единица" этого конвеера - фрейм из 32-х байт. Просто меня как-то пугает соединять блоки 256-ю линиями, по этому есть мысли организовать последовательную передачу между блоками, время есть. И вопрос в том кто должен ею управлять - А, В или внешний контроллер. Или это тяжелое наследие программирования и так не надо делать?
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 21 2011, 08:56
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(akorud @ Feb 18 2011, 20:13) *
2. Да, это просто конвейер, но "единица" этого конвеера - фрейм из 32-х байт. Просто меня как-то пугает соединять блоки 256-ю линиями, по этому есть мысли организовать последовательную передачу между блоками, время есть.
Не пугайтесь. Если обработка данных внутри блока параллельная - то ведите 256 проводами. Если последовательная (по байту) - то так же последовательно и передавайте

Go to the top of the page
 
+Quote Post



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

 


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


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