Цитата
есть еще такой вариант: использовать RAM с шириной шины данных N*(сколько_у_вас_там_бит), соответственно можно распараллелить вычисления
Я думал так делать, но пока нацелился на конвеерный подход, который Maverick подкинул.
Цитата
еще многопортовый доступ можно задействовать.
Многопортоый? В смысле двухпортовый? Я просто сделал, чтобы за такт два значения читалось. Можно больше? Ну, это я больше из интереса спрашиваю

.
У меня просто произведения элементов матриц между собой и самих на себя требут
3 умножителей. Двухпортовое считывание позволяет
6 умножителей использовать. А подход с размерностью памяти, скажем, в три байта позволит
18 умножений делать за так. Из
20 аппаратных умножителей ещё 2 останутся - там потом ещё надо будет умножения делать. В целом, наверно, тут уже предел будет для этой ПЛИС.
Цитата
Первоисточник - в личке.
Спасибо, тема близка - думаю, мне это сильно поможет. Только вот там VHDL, который я пока не изучал

.
Длинный P.S.
У меня с этим конвеерным подходом небольшой вопрос появился. Мне нужная сумма 9 элементов на конвеере (условно горизонтальном). Соответственно, чтобы частота не падала - нужен конвеер уже в вертикальном направлении - из 8 "складывателей"

и промежуточными регистрами. Если это так, то тогда можете подсказать, как оптимально такой вопрос решать. Так как это матрица, то мне не все суммы нужны (граничные эффект - когда окно к краям матрицы подходит). Как мне следующему модулю передать только нужные суммы? Я тут три подхода вижу:
1. Передавать все, а обрабатывать только нужные.
2. Передавать только нужные каким-нибудь сигналом, что на выходе нужная сумма. Но тут такой момент возникает, что от того момента, когда на конвеере будет нужная последовательность до того, как их сумма попадёт на выход пройдёт 4 такта. То есть и сигнал нужно задерживать на столько же тактов. Это регистром сдвига делать?
3. Другой подход. Какой

?