Working with memory
#include "test.h" #include <mc_scverify.h> #pragma hls_design top void CCS_BLOCK(test)(ac_channel<ac_int<10> > &data_in, ac_int<7> coeffs[32][4], // array is mem interface not ac_channel ac_channel<ac_int<5,false> > &coeff_addr, ac_channel<ac_int<19> > &result) { static ac_int<10> regs[4]; // shift register ac_int<19> acc = 0; ac_int<5,false> addr = coeff_addr.read(); #pragma unroll yes SHIFT:for (int i=3; i>=0; i--) { if (i==0) { regs[i] = data_in.read(); } else { regs[i] = regs[i-1]; } } MAC:for (int i=0; i<4; i++) { acc += regs[i] * coeffs[addr][i]; } result.write(acc); }