基于FPGA高阶FIR滤波器的实现
扫描二维码
随时随地手机看文章
摘要:从FIR数字滤波器的基本结构模型出发,分析了FIR滤波器的设计思路及具体实现方法,详细介绍了FIR滤波器的分布式算法(DA)结构。通过分析计算,得到普通DA结构实现高阶滤波器会消耗大量的查找表资源,这样的资源消耗甚至令硬件资源不可接受。针对普通DA的不足,提出了改进型DA结构。并利用FPGA仿真软件分别时64阶FIR带通滤波器的两种改进型DA结构进行仿真,结果表明改进型DA结构所消耗的资源大幅度降低。从而验证了改进型DA结构在降低运算资源和提高性能等方面的优越性。
关键词:FIR数字滤波器;分布式算法结构;改进型分布式算法结构;FPGA
在航天航空系统、雷达系统、遥感遥测系统等领域都涉及到如何在较强的背景噪声和干扰信号下提取真正的信号,并随着系统对宽带、高速、实时信号处理要求越来越高,对滤波器的处理速度、带宽等性能要求也随之提高。数字滤波器的硬件实现方法主要有:DSP、专用芯片和FPGA。用DSP实现滤波器,其程序顺序执行,因此运算速度随滤波器阶数的增加迅速下降;专用芯片实现的滤波器功能相对单一,灵活性小;而FPGA具有灵活的可编程逻辑和并行处理等优点,可很好地实现信号处理的实时性,同时,开发程序的可移植性好,可以缩短开发周期,因此FPGA实现数字滤波器的设计越来越受到重视和广泛应用,本文数字滤波器的设计就是基于FPGA硬件实现。
1 FIR滤波器的基本模型
数字滤波器分为无限冲激响应滤波器(IIR)和有限冲激响应滤波器(FIR),IIR滤波器与FIR滤波器相比,IIR滤波器容易取得较好的通带和阻带特性,FIR滤波器系统稳定且容易实现线性相位。系统稳定和线性相位对系统的设计至关重要,故对FIR滤波器的普通分布式(DA)算法结构进行了分析探讨与改进。FIR滤波器的网络传输公式可由式(1)表示:
式中:x(k)为输入函数;y(n)为输出函数;h(n-k)为滤波器系数;N为滤波器的阶数。根据式(1),FIR滤波器的结构如图1所示。
2 FIR滤波器的设计及实现
2.1 FIR滤波器设计
FIR滤波器的设计方法有:窗函数法、频率抽样法和最佳一致逼近法。本文以窗函数法为例介绍一下滤波器设计。设窗函数为凯赛窗,通带截至频率fc、阻带起始频率fa、通带纹波δp和阻带纹波δa,则滤波器阶数N的计算如式(2)所示:
式中fs为抽样频率。由式(2)可见,通带和阻带的纹波系数越小,滤波器的阶数越高。因此在设计FIR滤波器时,需要在阶数,纹波系数和过渡带之间进行权衡,选出合适的模型。
2.2 FIR滤波器具体买现
相比用DSP实现FIR数字滤波器,采用FPGA实现可以获得更快的速度,同时还可采取各种算法降低运算资源,提高性能,分布式算法(DA)就是其中一种。随着大规模集成电路的发展,特别是可编程逻辑器件的发展,DA算法在数字滤波器硬件设计中的研究进一步加强。
2.2.1 DA算法结构
DA算法结构是将乘法运算转换成基于查找表的加法运算,其基本原理为通过比特串行运算产生两组内积结果代替乘法器结构,如式(3)所示:
式中:Ak为滤波器系数;xk为滤波器输入;N为滤波器阶数;y为滤波器输出。对于无符号数和有符号数xk的二进制表示式分别为式(4)和式(5):
式中:xk,i为xk的每位二进制数,值为0或1;B为xk的二进制位数。将式(4)和式(5)分别带入式(3)中,可得式(6)和式(7):
在滤波器设计中,一般采用有符号数,由式(6)和式(7)可知,有符号数的计算公式含有了无符号数的计算,因此本文以有符号数为例来介绍DA算法的具体实现。DA算法结构的实现过程如图2所示。
对于FIR滤波器来说,A0至AN-1为常数,因此由式(8),式(9)和式(10)可看出,y的值仅与系数的各种组合有关,这种结构可以利用查找表来实现。设FIR滤波器阶数为N,系数的量化位数为M为,则需要存储器(ROM)深度和宽度的计算公式分别为式(11)和式(12)所示:
[!--empirenews.page--]
式中。ceil代表向上取整。存储器的结构如图3所示。
由图3得到fi(i=0,1,2,…,N-1)的值,可直接进行后续的累加,在很大程度上节省累加器资源。由式(11)可知查找表的深度以2的幂指数增加,即滤波器的阶数增加n位,则ROM深度增加2n倍,若滤波器的阶数N很大,就会消耗很多的查找表资源。这种以2的幂指数递增的资源消耗是硬件资源不可接受的。为了克服DA算法的缺点,提出了改进型DA算法结构。
2.2.2 改进型DA结构
改进型DA结构是将滤波器系数平均放到多个存储器中,每个存储器形成一个LUT,然后将多个LUT的结果相加,并通过流水线寄存器来实现。图4为改进型DA结构图。
设滤波器的阶数N=PQ,则fi可变形为式(13):
根据式(13),fi的实现只需要P个深度为2Q的查找表,在很大程度上减少了存储器的地址空间,LUT的规模也随地址空间的减小而呈现指数减小。
由于FPGA的查找表结构一般为4输入,为了提高滤波器系统设计的效率,滤波器的阶数N为4的整数倍。假设滤波器系数N取64,将64个系数按不同的组合相加作为查找表的数据,数据用16 b有符号数表示。采用DA结构,需要的存储器地址空间为16×264b,显然这样规模的存储单元消耗是系统无法承受的。而采用改进型DA结构,若存储器的个数P=4,所需总的存储器地址空间为16×4×216=416 Mb。若存储器的个数P=8,所需总的存储器地址空间为16×8×28=32 Mb。由此可见,采用改进型DA结构可使设计规模显著减小,有效降低资源的消耗。
3 FIR滤波器的FPGA实现
设滤波器为带通滤波器,窗函数为凯赛窗(Kaiser),通带截止频率为0.65,0.75,阻带起始频率为0.55,0.85,通带和阻带的纹波系数为0.001,利用窗函数法设计,滤波器的阶数为64阶,其系数如图5所示,幅频及相频特性如图6所示。
[!--empirenews.page--]
3.1 量化位数对滤波器影响
滤波器系数的量化位数与滤波器精度和消耗的硬件资源紧密联系,利用式(14)计算量化位数对滤波器精度的影响,量化误差如图7所示。
err(ω)=(f(ω)-f0(ω))2 (14)
式中:f(ω)为经过量化后的频谱特性;f0(ω)为标准的频谱特性。
由图7可看出,滤波器系数的量化位数越多,滤波器精度越高。当量化位数低于14位时会引入较大的误差;当量化位数高于16位时,通带内的量化误差约为0,阻带的量化误差的均值小于0.1能够满足设计的需求;当量化位数高于24位时,量化误差基本不变。综合频率精度,资源消耗和查找表的输出端口为4,设计滤波器系数的量化位数为16位。
3.2 滤波器具体实现
FIR滤波器的输入信号带宽为10 MHz,调制频率为70 MHz,调制系数为0.7的连续相位频率键控(cpfsk)信号,根据中频采样定理,采样频率为100 MHz,则输入信号的幅频和相频特性如图8所示。
以Xilinx公司‘-10’的xc4vsx55芯片为FIR滤波器的硬件支持,应用Xilinx ISE 9.2i软件分析存储器个数P=4的改进型DA算法结构及存储器个数P=8的改进型DA算法结构设计的滤波器性能,其达到最高速度分别为237.206MHz和264.589 MHz,资源消耗分别如图9和图10所示。由图9和图10比较可看出,P=4的改进型DA算法结构所消耗的资源比P=8的改进型DA算法结构所消耗的资源高很多。图11和图12为两种改进型DA结构的仿真时序图,图中dout代表输出信号,cnt代表时延计算信号。从图11及图12可看出,P=8的改进型DA结构时延为24个时钟周期(470 ns);P=4的改进型DA算法结构的时延为11个时钟周期(210 ns)。综上所述,与P=4的改进型DA算法结构相比,虽然P=8的改进型DA算法结构在时延方面存在不足,但其在资源消耗和速度等方面有明显优势。
[!--empirenews.page--]
将经过两种改进型DA算法结构滤波未经截取的38位输出数据,及经截取的32.24位的输出数据写入文本,用Matlab读取数据并进行幅频和相频特性仿真,得到此改进型DA算法结构的滤波器效果一致。图13为经过改进型DA算法结构滤波后的三组数据幅频和相频特性以及Matlab未经量化的幅频和相频特性,由图13可知,经过滤波器后的输出数据的相频和幅频特性明显优于输入信号;且输出的四组数据的幅频和相频特性几乎是相同的,但资源消耗得到了优化。
4 结语
本文详细介绍了FIR数字滤波器普通DA算法的实现结构,进而提出了改进型DA算法的实现结构。利用Matlab软件分析了滤波器的精度随滤波器系数量化位数的变化关系,在滤波器系数的量化位数为16时,滤波器精度和所消耗资源达到最优。并采用Xilinx公司的‘-10’的xc4vsx55芯片,对64阶FIR滤波器的两种改进型DA算法结构进行FPGA仿真,仿真结果表明在高阶滤波器方面,改进型DA算法结构在资源消耗、速度以及性能等方面具有较大优势。最后,利用Matlab软件对输出数据以及经过截取的数据进行仿真,得到对滤波器的输出数据进行适当的截取,不会影响输出数据的幅频和相频特性,但可以提高整个系统的频率和减少后级的资源消耗。