FIR数字滤波器的设计与实现
2010-06-14张建伟展雪梅
张建伟,展雪梅
(中国电子科技集团公司第五十四研究所,河北石家庄050081)
0 引言
随着信息时代和数字世界的到来,数字信号处理得到了快速发展,并已广泛应用于语音、图像、自动控制、航空、航天、医疗和家用电器等众多领域。而在数字信号处理领域中,数字滤波器又占据了十分重要的位置,利用所需信号和其他信号在频谱上的差别,通过数字滤波器可获得滤除杂波、保持原有信号不变的效果。由于数字滤波器所处理的信号为离散信号,可以用差分方程对其进行描述,用离散变换的方法来分析、处理信号,这样既有利于数学分析,又可清楚地描述出所设计滤波器的形式。
1 FIR数字滤波器结构特征与设计
1.1 FIR数字滤波器结构特征
FIR数字滤波器的冲激响应只能延续一定的时间,N阶因果有限冲激响应滤波器的差分方程表达式为:其卷积和是一个有限和,可以直接计算y(k),所以其涉及的基本操作就是简单的乘和加,其计算仅需要所给出的初始样本值及所要求的相关样本值。
通过精确设计,有限冲激响应滤波器在整个频率范围内均能提供精确的线性相位,由于系统的单位脉冲序列为有限长序列,当输入有限时,输出也必然为有限,这样其稳定性总可以独立于滤波器系数之外。因此,在很多情况下,有限冲激响应滤波器成为首选,只要确定能满足要求的转移序列或者脉冲响应的常数,就可以准确地设计出满足要求的FIR数字滤波器。通常所采用的设计方法主要有窗函数、频率采样法和等波纹最佳逼近法等,其中窗函数法是从时域进行设计的,其算法简单、物理意义清晰,因此得到了较为广泛的应用。
1.2 FIR数字滤波器设计
1.2.1 FIR数字滤波器设计步骤
(1)选择参数
在大多数应用中,需要设计的FIR数字滤波器的幅度或者相位(延时)响应是确定的。在某些情况下,则可能会指定滤波器的单位抽样响应或者阶跃响应。在实际应用中,关键的问题是用一个可实现的传输函数去逼近给定滤波器幅度响应指标,因此设计一个FIR数字滤波器之前,应首先根据实际需要确定所设计的FIR数字滤波器的技术参数。在频域中,参数的形式一般是给出幅度和相位响应。幅度参数以绝对参数或者相对参数来给出。绝对参数提供了对幅度响应函数的要求。相对参数以所要求分贝值的形式给出。在工程应用中,多给出相对参数指标。对于相位响应参数形式,通常指的是系统在通频带中有线性相位。而运用线性相位响应进行滤波器设计具有如下优点:①只采用实数算法,不涉及复数运算,运算相对简单;②延迟数量固定,不存在延迟失真;③计算量小,对于长度为N的滤波器(阶数为N-1),计算量仅为N/2数量级。
(2)逼近
确定了设计要求的技术参数后,建立一个理想的FIR数字滤波器模型。然后,利用数字滤波器的设计方法,设计出一个实际数字滤波器模型来逼近给定的目标,从而得到所设计的FIR数字滤波器。
(3)性能分析和计算机仿真
通过以上两步得到的FIR数字滤波器为冲激响应描述的滤波器。根据这个冲激响应就可以分析FIR数字滤波器的频率特性和相位特性,从而验证设计结果是否满足指标要求;或者利用计算机仿真,对设计的FIR数字滤波器进行分析,并根据仿真结果对FIR数字滤波器进行判断。
1.2.2 利用MATLAB设计FIR数字滤波器
在MATLAB进行线性相位FIR数字滤波器设计中,多采用窗函数法。窗函数法设计FIR滤波器的基本思想是:根据需要设计的滤波器技术指标,选择合适的滤波器长度N和窗函数ω(n),使通过窗函数的波形具有最窄宽度的主瓣和最小的旁瓣。其核心是根据给定的频率特性,通过加窗的方式来确定有限长单位脉冲响应序列h(n)。在实际应用中,通常采用的窗函数有以下几种,即矩形窗、巴特利(Bartlett)窗、汉宁(Hanning)窗、汉明(Hamming)窗、布莱克曼(Blackman)窗和凯塞(Kaiser)窗。
根据工程需要进行实际的FIR数字滤波器设计,要考虑多方面要求,选择合适的窗函数,并结合计算机仿真对所得到FIR数字滤波器进行分析。在实际设计过程中,所要求的FIR数字滤波器指标为:fn=[1 350,1 825,2 825,3 500],a=[0,1,0],dev=[0.000 5,0.00 5,0.000 5],阻带最小衰减为65 dB,采样频率为10 kHz,则根据阻带最小衰减来选择凯塞窗,利用MATLAB的求阶函数和FIR数字滤波器的设计函数,其调用的参数格式为:h=fir1(N,ωn,window,′type′),其中,N,ωn分别为 FIR 数字滤波器阶数和归一化3 dB截至频率,window为窗序列,它是窗序列产生函数的返回结果。此外还利用MATLAB自带的滤波器设计和分析工具进行参数调整与优化。在本设计中,将要求的参数输入MATLAB程序中,可以快速地设计出所需的FIR数字滤波器,再将相应的指标要求代入,最后利用的滤波器分析函数freqz来分析所设计出的FIR数字滤波器的幅频特性和相频特性,并用图形显示函数plot将它们显示出来。所设计的FIR数字滤波器幅频特性和相频特性如图1所示。
图1 FIR数字滤波器特性图
2 FIR数字滤波器的实现
DSP芯片是一种实时、快速、适于实现各种数字信号处理运算的微处理器。由于它具有丰富的硬件资源、高速的数据处理能力和强大的指令系统,因此在通信、航空、航天、雷达、工业控制及家用电器等领域得到广泛应用。目前DSP芯片的运算分为定点和浮点2种,实际工程应用中常采用定点DSP芯片来实现所设计的FIR数字滤波器,并对其中几个关键问题进行说明,在系统设计中具有重要的参考价值。
2.1 点数的确定
在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。DSP芯片所给定的字长决定了整型数的最大表示范围,一般为16位或24位。字长越长,所能表示的数的范围越大,精度也越高。在滤波器的实现过程中,由于得到的数值可能是整数,也可能是小数或混合小数;DSP在执行算术运算指令时,并不确定所要处理的数据是整数还是小数,因此,在编程时必须指定一个数的小数点处于哪一位,这就是点数的确定。
在使用定点DSP芯片时,Q值的选择是一个关键性问题,从DSP芯片运算的处理过程来看,实际参与运算的都是变量,而作为一个物理参量都有一定的动态范围,只有确定动态范围,才能确定Q值。因此,在程序设计前,首先要找出参与运算的所有变量的变化范围,充分估计运算中可能出现的各种情况,然后再选择采用何种确定点数来保证运算结果正确可靠。这里,通过理论分析法和统计分析法确定变量绝对值最大值|max|,然后根据|max|再确定Q值。
2.2 误差问题
由于在使用定点DSP芯片实现FIR数字滤波器时,所有的数据都是定长的,运算也都是定点运算,因而会产生有限字长效应。所产生的误差主要包括:数模转换引起的量化误差、系数量化引起的误差以及运算过程中的舍入误差。尽管在使用定点DSP芯片时,产生误差是不能避免的,但是可以通过一些方法来减小误差。例如可以用2个存储单元来表示一个数,运算时使用双字运算;可以根据需要将滤波器系数都用双字表示,也可以只将一半的系数用双字表示,视需要而定;另外,FIR数字滤波器和IIR数字滤波器所引入的量化误差是不一样的。FIR数字滤波器主要采用非递归结构,因而在有限精度的运算中是稳定的;而IIR数字滤波器是递归结构,极点必须在z平面单位圆内才能稳定,这种结构运算中的四舍五入处理有时会引起寄生振荡。除了有限字长效应以外,不同结构引入的误差也有所不同。在实际设计中,要注意实现中的误差问题。在选择不同的结构时,应考虑它们所引入的误差,并用高级语言进行定点仿真,比较不同结构下误差的大小,从而做出合理选择。
2.3 循环寻址
DSP芯片中经常用到循环寻址的方法。该寻址方法可以对一块特定存储区实现循环的操作。把循环寻址理解为实现一个滑动窗,新数据引入后将覆盖老的数据,便得该窗中包含了需处理的最新数据。在数字信号处理中的FIR、卷积等运算中,循环寻址具有极其重要的意义。
在TI公司的DSP芯片中,循环寻址通过如下方法实现:
①设定BK(寄存器块大小)值,以确定循环寻址缓冲区的大小,也可将它看作是循环的周期;
②设定缓冲区的底部地址。必须注意:其低N位为零,其中N为满足式2N>BK的最小N值;
③用辅助寄存器间接寻址循环缓冲区。
在利用DSP芯片实现所设计的FIR数字滤波器过程中,应充分考虑以上3个具体步骤,以达到最佳实现结果。在具体的实现过程中,采用汇编语言进行编程,将通过MATLAB所设计得到的滤波器参数输入,编译后可生成可执行文件(.out),将可执行文件通过JTAG接口下载到TMS320VC5416DSP目标板,运行后即可实现所设计的FIR数字滤波器。
3 结束语
数字滤波器的应用十分广泛,通过滤波器可以滤除输入信号中不需要的成分,改善波形质量。FIR数字滤波器以它优越的性能,在数字信号处理领域占有很重要的地位。将MATLAB的功能与DSP芯片结合,运行MATLAB语言,可较容易地设计出具有严格要求的滤波器。采用DSP芯片实现的FIR滤波器,不仅具有准确度高、执行速度快等特点,而且程序可移植性好,实用性强,便于实现满足更高采样率的数字信号的实时滤波处理。
[1]赵顺珍.马 英.基于DSP的FIR数字滤波器设计与实现[J].微计算机信息,2009,25(2):29-31.
[2]张 萍.基于MATLAB与DSP的FIR数字滤波器的设计[J].中国科技信息,2007(23):80-81.
[3]徐金燕,李 明,郑君丽.FIR滤波器的FPGA实现[J].无线电技术,2006(1):15-20.
[4]刘玉明,刘翠英,张宝华.一类FIR滤波器的加权最小方差设计[J].无线电工程,2000(4):52-54.