Ребят, всем спасибо за советы и помощь. Я бы хотел теперь поделиться практическими результатами. Написал две реализации модуля, который принимает входное изображение, получает градиентные матрицы и перемножает их элементы. Одна реализация - конвеер с отводами, другая основана на использовании RAM.
Входная матрица - 8x6.
Речь прежде всего о скорости. И вот какие результаты:
конвеер - порядка 220 МГц,
RAM - порядка 120 МГц.
При этом в первом случае для полного прохода ещё и тактов меньше требуется.
Прикладываю RTL-схемы модулей для наглядности.
Возможно, что я не оптимально реализовал вариант с RAM. Там больше логики, потому что весь процесс разбивается на этапы и окончание одного запускает другой. Тут, наверно, причина в том, что RAM имеет ограниченное число портов и нельзя считывать данные одновременно с процессом их записи. Поэтому приходится ждать.
К чему я. Возникло
предположение, что подход с конвеером здесь более эффективен. Получается, где поток данных "проходит" через кристалл, не задерживаясь, RAM не к месту? RAM оправдана там, где данные "задерживаются" для многократного вторичного использования? Или как

?
Эскизы прикрепленных изображений