Далее необходимо просуммировать выходы всех блоков. Структура алгоритма приведена на рисунке:
Нажмите для просмотра прикрепленного файла
Описание 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
* 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 блоков?