fir滤波器 fir滤波器阶数的确定

2024-08-3001:21:41综合资讯1

数字滤波器相较于模拟滤波器具备高精度、可靠性、可编程特性以及便于集成的优势。理论上,数字滤波器可以实现近似理想频率响应特性。经典的数字滤波器主要包括有限脉冲响应(FIR)滤波器和无限脉冲响应(IIR)滤波器。相比于IIR滤波器,当FIR滤波器系数维持线性对称结构时,能够满足幅频响应要求的同时获得严格的线性相位特性。在数据通信、语音信号处理、雷达信号处理等领域中,信号在传输过程中需要避免明显的相位失真,因此FIR滤波器得到了更广泛的应用。

基于其独特的可编程结构和强大的并行计算能力,FIR滤波器设计非常适合在FPGA上实现。近年来,基于FPGA的FIR滤波器设计一直是学者们研究的热点,主要集中在最优滤波器设计方法、提高滤波器运行速度和滤波算法优化等方面。常规的量化方法主要关注对滤波器幅频响应的影响,较少考虑在滤波器输出位宽确定的情况下,如何最大化滤波器输出幅度和信噪比。

在仔细分析传统滤波器量化方法的基础上,作者提出了基于滤波器增益的量化方法,给出了MATLAB仿真和FPGA实现后的ModelSim验证数据。结果表明,此方法可以有效提高滤波器的输出幅度,信噪比提高约6 dB。

1 FIR滤波器原理及结构

FIR滤波器指的是单位脉冲响应长度有限的滤波器。其突出特点是单位取样响应h(n)是一个长度为N的有限序列,范围为0≤n≤N-1。滤波器的输出y(n)可表示为输入序列x(n)与单位取样响应h(n)的线性卷积。

从系统函数可以看出,FIR滤波器仅在原点上存在极点,使其具备全局稳定性。FIR滤波器由一系列延迟线、加法器和乘法器构成,每个乘法器的权重系数即为一个FIR系数。这种结构也被称为延迟线结构。图1展示了FIR滤波器FPGA实现的典型结构图。

2 量化对FIR滤波器性能的影响

2.1 FIR滤波器MATLAB设计方法

在FPGA上实现FIR滤波器之前,通常使用MATLAB软件设计滤波器系数。MATLAB提供了丰富的FIR滤波器函数,分别对应不同的设计方法,如窗函数法、频率采样法和基于“最大误差最小”的最优设计法。为了便于对比,我们采用最优设计方法设计FIR低通滤波器(MATLAB设计函数为firpm),参数为:采样频率32 MHz,过渡带0.5 MHz~1.5 MHz。图2为MATLAB设计出的滤波器幅频响应图。

从图2中可以看出,FIR滤波器的长度N越大,滤波器过渡带越接近设计参数,通带及阻带滤波性能越好。当N=41时,阻带衰减为26 dB,当N=61时,阻带衰减提升至38.5 dB,当N=81时,阻带衰减达到48 dB。当系数长度超过一定值(此例中为61)后,滤波器过渡带的改善效果趋近于饱和,但通带及阻带的滤波性能持续增加。综合考虑,下文以长度为61的低通滤波器为例进行讨论。

2.2 量化方法及其对滤波性能的影响分析

基于MATLAB的FIR滤波器设计原理,无论滤波器长度如何,其通带内增益始终为1(0 dB),滤波器系数则为带小数的浮点数。由于FPGA只能处理二进制数据,MATLAB设计出的滤波器系数需要转换成二进制数据才能完成FPGA电路实现。

滤波器系数是带符号的数据,FPGA实现时采用二进制补码表示。设滤波器系数的量化位宽为Q,则系数C的表示范围为-2≤C≤(2-1),而考虑到FIR滤波器系数的严格对称特性,实际范围为(1-2)≤C≤(2-1)。

传统的滤波器量化方法包括3个步骤:(1)找出滤波器系数中最大的绝对值M;(2)以M为基准进行归一化处理,即对所有系数进行M除法;(3)对归一化后的系数乘以(2-1),并取整形成整数系数;(4)将整数系数转换为二进制补码数据。图3展示了不同量化位宽下FIR滤波器的幅频响应图。

从图3(a)的归一化幅频图中可以看出,滤波器量化位宽越低,量化后的滤波性能越差(当量化位宽为6位时,阻带衰减相较量化前降低了约6 dB)。相反,量化位宽越高,量化前后滤波性能差异越小。当量化位宽超过一定值(此例中为12位)后,滤波性能几乎不再变化。为了便于比较,下文以量化位宽为12位、长度为61的低通滤波器进行讨论。

3 基于增益的FIR滤波器量化方法

3.1 一般量化方法对系统性能的影响

根据前面讨论的量化方法,量化过程相当于滤波器增益扩大了(2-1)/M倍。从图3(b)的非归一化幅频图中可以看出,量化位宽越高,滤波器通带内的增益越大。当量化位宽为6位时,通带增益为54 dB,当量化位宽达到12位时,增益扩大至90 dB。

在FPGA中设计FIR滤波器,通常采用定点二进制数据进行运算。前面讨论量化对系统性能的影响时,隐含一个前提条件,即滤波器运算采用全精度运算,其结果保留全部有效位。当滤波器量化位宽为Q时,由于滤波器增益扩大了(2-1)/M倍(通常情况下,M≤1),为了保证全精度运算,并保留全部有效的滤波输出位,必须使滤波器输出位宽相比滤波器输入信号增加Q位。其中

对于上述长度为61、量化位宽为12位的低通滤波器,M值为0.062 1,(2-1)/M为32 963,因此滤波器输出位宽需要额外增加Q=16位。假设输入数据的位宽为10位,则全精度滤波器输出位宽应达到26位。

3.2 基于增益的系数量化方法

解析前文,系数量化后,有效位宽内表示的信噪比下降,归因于滤波输出未达满量程。为此,透过优化系数量化,采纳滤波器增益法。具体步骤参照滤波器实例展开:(1)令所有滤波器系数乘以216=65 536,再对处理结果取整形成整数系数;(2)将整数系数转为二进制补码。

优化量化处理相当于滤波增益增加65 536倍(常规方法仅增32 963倍),滤波输出幅值达有效位宽满量程,实现在相同输出位宽下,输出信噪比最大化。量化处理后的位宽为:

Q = 16

针对上文讨论的低通滤波器,量化位宽需13位。图 4所示为常规量化及优化量化后的滤波器系数(冲激响应),其中Q=16。

图 4反映,滤波输出位宽相同的情况下,优化后的系数幅值大于常规方法,等同于滤波器增益增大。需注意,优化方法所需系数位宽由12位增至13位,即增益提高以增大系数量化位宽为代价。

4 FPGA实现测试结果

选用Xilinx Spartan6系列FPGA器件XC6SLX25-FT256C为目标平台,调用ISE14.7中的FIR滤波器核,实现前文低通滤波器(采样率32 MHz,过渡带0.5 MHz~1.5 MHz,长度N=61)。仿真工具为ModelSim10.1,输入信号叠加2路单频信号。两路单频信号频率分别为0.22 MHz和2 MHz,功率比为1:1。输入位宽10位,滤波器输出位宽26(Q=16)。图 5、图 6分别为常规量化及优化量化方法的滤波器ModelSim仿真波形图。

图 5、图 6显示,两种方法均能滤除带外干扰信号(2 MHz单频),优化方法的滤波器输出幅值(16,641,407)明显大于常规方法(7,910,390),增大了滤波增益,提升了输出信噪比。

5 结论

本文深入探讨滤波器系数量化对滤波性能的影响。分析常规方法的基础上,针对滤波输出幅值未达满量程,提出基于增益的系数量化优化方法。MATLAB仿真及FPGA实现后的ModelSim仿真验证,在相同输出位宽下,优化方法有效提高滤波器增益,进而提升输出信噪比。但需注意,增益提高是以增大系数量化位宽、增加FPGA资源为代价。