#ifndef _LOOP_PIPELINE_H_ #define _LOOP_PIPELINE_H_ #include #include "ap_cint.h" #define N 20 #define NUM_TRANS 20 #define L 4 #define N_L 2 typedef int20 din_t; typedef int20 dout_t; #endif void loop_pipeline(din_t input[N_L], din_t output[N_L], din_t coeff[L*N_L]) { int i,j,k; static dout_t acc; din_t first_out[N_L]; din_t second_out[N_L]; din_t third_out[N_L]; //First Layer LOOP_I1: for(i=0; i < N_L; i++){ LOOP_J1: for(j=0; j < N_L; j++){ first_out[i] += input[j]*coeff[i]; } } //Second Layer LOOP_I2: for(i=0; i < N_L; i++){ LOOP_J2: for(j=0; j < N_L; j++){ second_out[i] += first_out[j]*coeff[N_L+i]; } } //Third Layer LOOP_I3: for(i=0; i < N_L; i++){ LOOP_J3: for(j=0; j < N_L; j++){ third_out[i] += second_out[j]*coeff[N_L+N_L+i]; } } //Fourth Layer LOOP_I4: for(i=0; i < N_L; i++){ LOOP_J4: for(j=0; j < N_L; j++){ output[i] += third_out[j]*coeff[N_L+N_L+N_L+i]; } } //return acc; }