#include "ap_int.h"
#include "fir.h"

void fir(data_t *y, data_t x, coef_t c[N]) {

	static data_t shift_reg[2*N-1]; //6=11
	acc_t acc;
	int i;

	acc = 0;
	shift_loop: for (i = 2*N-2; i > 0; i--) {
		shift_reg[i] = shift_reg[i - 1];
	}
	shift_reg[0] = x;

	acc = 0;
	mac_loop: for (i = N-2; i >= 0; i--) {
		acc += (shift_reg[i]+shift_reg[2*N-2-i]) * c[i];
	}
	acc += shift_reg[N-1] * c[N-1];

	*y = acc;
}
