1.一种用于FPGA的高速高阶FIR滤波器的频域实现方法,其特征在于,所述方法包括:
步骤A:确定FIR滤波器的冲击响应h(n)长度为M,将输入FIR滤波器的数据序列x(n)分段成多个长度为N的分段序列,设定冲击响应h(n)和分段序列进行FFT的点数为2N,其中,N=2i,i为正整数;使M=N+1,如M长度不足用零补足;
步骤B:对冲击响应h(n)进行点数为2N的FFT运算得到冲击响应频谱H(k),将分段序列划分为奇数段和偶数段,利用乒乓操作将奇数段分段序列和偶数段分段序列分别输入两个FFT IP核补N个零后进行点数为2N的FFT运算,得到时序相差N个时钟、长度为2N的奇数段分段序列频谱和偶数段分段序列频谱,然后分别将奇数段分段序列频谱和偶数段分段序列频谱与冲击响应频谱H(k)相乘;
步骤C:将奇数段分段序列频谱和偶数段分段序列频谱与冲击响应频谱H(k)的乘积分别输入到两个IFFT IP核,分别获得长度为2N的奇数段卷积和偶数段卷积;
步骤D:将奇数段卷积结果和偶数段卷积结果相加,得到FIR滤波器的输出信号;
所述步骤B中,按第1、3、5……个分段序列依次进入第一个FFT IP核进行点数为2N的FFT运算,按第2、4、6……个分段序列依次进入第二个FFT IP核进行点数为2N的FFT运算;第
1个分段序列输入进第一个FFT IP后补N个0,补零同时,第2个分段序列开始输入进第二个FFT IP,输入后补N个0,补零同时,第3个长度为N的分段序列再输入进第一个FFT IP并补N个0,如此依次将奇数段分段序列和偶数段分段序列输入,相邻两分段序列相差的时钟周期始终为N。
2.根据权利要求1所述的用于FPGA的高速高阶FIR滤波器的频域实现方法,其特征在于:所述步骤B中,先将冲击响应h(n)补零至2N长度,再进行点数为2N的FFT运算。
3.根据权利要求2所述的用于FPGA的高速高阶FIR滤波器的频域实现方法,其特征在于:所述步骤B中,点数为2N的FFT运算结果存入到RAM中,RAM使用写优先模式。