FIR滤波器的设计和应用 FIR滤波器由于其自身的稳定性和容易实现线性相位,在工程中被广泛应用。本文介绍窗函数法设计FIR滤波器过程和滤波器在实际工程中的应用。 1.信号的谱分析 设计滤波器前,先要对信号进行谱分析,从而确定滤波器参数。给定一个信号,信号参数如下: a)信号为单频音,频率为10KHz,信号幅度为1V b)干扰为单频音,频率为100KHz,干扰幅度为1V c)采样率为1Msps 采样信号及其频谱如下图所示:
图1 采样信号及其频谱 如上图所示,第一幅图中信号yn1=a*cos(2*pi*f/fs1*n)+b*cos(2*pi*fn/fs1*n),他由f=10KHz信号和频率fn=100KHz噪声构成,在时间域上表现为有一定周期的类似正弦波信号。上图中第二幅图为第一幅图的频谱,从频谱中可以明显看到4个峰分别位于10KHz,100KHz,900KHz和990KHz处,频谱图关于500kHz频率偶对称。 根据频谱图,需要滤除fn而保留f,故滤波器选择低通滤波器,截止频率为fn=20KHz,阻带最小衰减大于等于20dB。 2.窗函数法设计FIR滤波器 2.1线性相位 易于实现严格的线性相位是FIR滤波器一个重要特点。线性相位分为两类,第一类线性相位相频响应满足以下条件: θ(w)=-((N-1)/2)w 第二类线性相位相频响应满足以下条件: θ(w)=-((N-1)/2)w–pi/2 显然,第一类线性相位具有更小的系统延时,本文采用具有第一类线性相位的滤波器,此时,滤波器的单位脉冲响应h(n)需要满足有限长序列偶对称条件,即 h(N)=h(N-1-n) 以上要求并不算苛刻,例如h(n)=[ 1 -1 10 100 10 -1 1]满足偶对称条件,他是一个6阶滤波器,其频谱特性如下图所示:
图2滤波器的幅频特性曲线 从上图可以看出,在通带内h(n)具有严格的线性相位。 2.2窗函数法设计FIR滤波器 经典的窗函数法设计FIR滤波器过程如下:根据需求选择窗类型:上文要求的阻带最小衰减为20dB,选择矩形窗可以满足要求,故选择矩形窗根据过渡带计算阶数:本文中,信号和噪声在频带上相距较远,过渡带可以适当放宽到0.1pi,根据矩形窗过渡带公式Bt=4pi/N计算出来N=40,取N=41,即40阶,根据偶对称性,需要计算的参数有21个列出理想低通滤波器单位脉冲响应函数:h(n)=sin(w)*(n-M)/(pi*(n- M)),n为0到40之间整数,根据截止频率fn=20KHz,计算出w=0.04pi,M=20计算h(n)。经过计算,h(n)=[ 0.00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 #DIV/0! 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00] 其中,#DIV/0!是除数为0报警,这是因为EXCEL无法计算除数为0的方程式,手动计算后该项为0.04. 其频谱特性如下图所示:
图3 幅频特性曲线 从上图可以看出,幅度从频率约0.04处开始衰减,相位在0-0.04范围具有线性相位。至此,窗函数法设计滤波器完成。然而,这种方法设计出来的滤波器和理想滤波器之间还存在一些差别,同时也难以在实际项目中使用,下文分析这种差别并讨论在实际工程中使用这种滤波器的方法。 2.3工程化的FIR滤波器 2.3.1 Gibbs效应 窗函数法本质上是用时间域Sa函数去逼近理想频率域窗,再对时间域Sa函数进行移位和加窗,其中移位带来了相位延迟,时间域加窗产生Gibbs效应。 从图3的第一幅图中可以看到,滤波器的幅度在通带内并非理想直线,而是有衰减,同时阻带内也有明显波纹。这是时间域加窗的结果,频率域窗函数对应的时间域Sa函数和时间域窗函数相乘在频域上等效为理想频率域窗函数和Sa函数进行卷积,而Sa函数由于本身的特性,卷积过程随着主瓣旁瓣的移动在卷积结果上产生波纹,这也是滤波器过渡带和阻带波纹主要来源。 2.3.1 截短误差 窗函数法设计出来滤波器单位脉冲响应序列通常为小数,且位数较长,实际工程中会将这些系数按照一定比例放大并保留整数部分,称为截短。截短带来的收益是计算量的大幅度减少,带来的副作用是幅度频率特性曲线发生畸变。
图4a) 3位量化
图4a) 8位量化 上图a中,滤波器量化位数为3位,红色曲线为量化后的滤波器幅频特性曲线,蓝色为量化前滤波器幅频特性曲线,从图中可以明显看到红色曲线发生了畸变而偏离了原本的设计。上图b中,滤波器量化位数为8位,从图中可以看到红色曲线和蓝色曲线几乎重叠,畸变并不明显。随着量化位数的增加,截短的影响逐渐减小,计算量逐渐增加。 4.使用FPGA实现FIR滤波器 本文使用INTEL公司的EP4CE40系列FPGA,软件使用QT13.x版本,IP核使用”FIR Compiler II”,ADC采用AD9221,采样率配置为1Msps。 4.1使用IP核实现FIR滤波器 IP核参数配置如下图所示:
图5 使用IP核设计FIR滤波器过程1 如上图所示,将参数从“File Path”窗口导入,将量化宽度配置为8,此时工具会自动将滤波器序列量化为8位有符号整型数。
图6 使用IP核设计FIR滤波器过程2 如上图所示,配置输入信号位宽。因为ADC分辨率为12位,因此这里位宽为12Bits。本工程将其声明为13位有符号数,并将符号位置0来匹配ADC的位宽。
图7 使用IP核设计FIR滤波器过程3 如上图所示,配置滤波器输入时钟频率,滤波器输入频率必须大于采样率,且越大消耗逻辑资源越少。 配置完成后,将100KHz正弦波噪声和10KHz正弦波信号叠加并输入ADC,将ADC量化后信号接入滤波器,观察滤波器输入和输出信号如下图所示:
图8 使用Signal Tap II工具查看滤波器输入输出信号 上图中,第一行波形为输入信号波形,第二行波形为输出信号波形。第一行信号和噪声叠加无法分辨出正弦信号,第二行可以很容易分辨正弦信号,但也很容易观察到残留的噪声信号。 5.小结 本文介绍了窗函数法设计FIR滤波器过程及其在实际工程中的应用。本文采用矩形窗,他的阻带最大衰减有限,但计算量小,过渡带小,通常工程中会使用预畸变的矩形窗如汉明窗和汉宁窗以更大阻带衰减。此外,截短很大程度上影响滤波器幅频特性,虽然FIR滤波器不会因为截短而不稳定,但是截短后应重新评估滤波器特性是否还能满足设计要求。线性相位优势在本文中并未显示出来,这是因为测试用例是单频音,当测试信号是模拟信号时,线性相位将完美的保留通带内信号特征,这是IIR滤波器无法比拟的。 本文为南哥原创,转载请注明出处。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/88893.html