[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
я не учел, что коэффициентов 256000. Но сути все равно не чую - у нас пришел отсчет. есть N коэффициентов. Для свертки достаточно этот свежий отсчет перемножить на эти N коэффициентов, и сложить с соответствующим элементом выходного массива. Когда для каждой из ячеек массива будет выполнено N MAC, то эта ячейка идет в выходной поток. В результате за 1 такт мы получаем 1 число на входе, выдаем 1 число на выходе и производим N MAC. Я подозреваю, что заказчику это как раз и нужно. А выходной поток той свертки, которую Вы имели в виду, будет весь массив за каждый такт - поток явно бессмымленный для любой практической цели. Да и N раз Вы будете перемножать и складывать одни и те же данные. За каждый такт мы получаем только 1 новый отсчет, и перемножать все предыдущие отсчеты бессмысленно.
Что касается задачи, то действительно, 256К коэффициентов - это круто. Тут без внешней памяти не обойтись. А этот интерфейс скорее всего и станет bottlenesk.
IMHO тут надо устройство делать так:
Входной поток бьется на N потоков ( отсчеты отдаются по очереди в каждый из модулей ). Каждый модуль производит частичную свертку ( столько, сколько сможет ), а на выходе все потоки суммируются.
E-mail: info@telesys.ru