并行FIR滤波器在FPGA中的实现

两路任意阶数并行滤波的实现方法:
尽管是并行滤波,但是在本质上仍是卷积的过程,对于滤波阶数N的滤波系数,滤波的系数为N+1,在两路并行中,阶数N应该是偶数,系数N+1是奇数;
y[n]=∑_(k=0)^(k=N-1)▒〖X(n-k)h(k)〗
y(2n)=x(2n)h(0)+x(2n-1)h(1)+x(2n-2)h(2)+⋯+x(2n-396)h(396)

y(2n+1)=x(2n+1)h(0)+x(2n)h(1)+⋯+x(2n-395)h(396)
最终的实现就是乘累加的过程,先对应相乘,再去相加
在乘的过程中,需要注意数据的缓存问题,在进入396个系数之后才是正确的值,而对于两路的并行,需要先用一个buffer进行缓冲。
1 2 3 4 5 … 196 197 198 199
X(0) X(2) X(4) X(6) X(8) X X(390) X(392) X(394) X(396)
X(1) X(3) X(5) X(7) X(9) X X(391) X(393) X(395) X(397)
对于396需要的buffer为199,其次分为buffer1和buffer2,在乘的时候注意对应的输入和滤波系数,对于乘的结果进行累加的话,采用多级两两相加的方式,对于非偶数的项数让最后一个系数和0相加,最终得到简化的相加的结果。

你可能感兴趣的:(皮实)