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

 
 
> Параметризируемый pipline
Alexey_Rostov
сообщение Jan 4 2018, 12:10
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312



Добрый день! Подскажите пожалуйста, как наиболее компактней описать следующий алгоритм: есть N dsp блоков, которые создаются через generate. На каждый блок умножает суммирует 4 умножения.
Далее необходимо просуммировать выходы всех блоков. Структура алгоритма приведена на рисунке:
Прикрепленное изображение

Описание N блоков DSP тривиально:
CODE
/*
* generate multiply and accummulate for layer
*/
genvar i;
generate
for (i = 0; i < N; i = i + 1)//H_layer_size
begin: DSP
DSPkernel i0(
.CLK(CLK),
.RST(RST),
.EN(EN),
.DI(DATA_IN[(i+1)*64 - 1 : i*64]),
CI(CI[(i+1)*64 - 1 : i*64]),
.D_VALID(DSP_VALID[i]),
.DO(DO[i]));
end
endgenerate


Каким образом можно описать параметризируемый pipline для сложения выходов DSP блоков?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
doom13
сообщение Jan 4 2018, 13:26
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Код
wire  [W-1:0] sum [0:N-1];
wire  [W-1:0] sum_out;

genvar i;
generate
   for (i = 0; i < N; i = i + 1)//H_layer_size
   begin: DSP
      DSPkernel i0(
         .CLK(CLK),
         .RST(RST),
         .EN(EN),
        .DI(DATA_IN[(i+1)*64 - 1 : i*64]),
        .CI(CI[(i+1)*64 - 1 : i*64]),
        .D_VALID(DSP_VALID[i]),
        .DO(DO[i]));

       assign sum[i] = (i) ? sum[i  - 1] + DO[i] : DO[i];
   end
endgenerate

assign sum_out = sum[N-1];
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 23:59
Рейтинг@Mail.ru


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