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

Что скажете? Буду благодарен за любой совет.