基于MATLAB的IIR数字滤波器的设计及DSP实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1基于MATLAB的IIR数字滤波器的设计及DSP实现伍永峰,王国金(宁夏大学物理电气信息学院,银川750021)摘要:数字滤波器是数字信号处理系统的重要组成部分。本文主要介绍应用MATLAB设计IIR数字滤波器的方法,并探讨基于TMS320C54XDSP的IIR数字滤波器的实现。关键词:MATLAB;DSP;IIR数字滤波器中图分类号:TN713文献标识码:A文章编号:1007-9599(2010)08-0000-02IIRDigitalFilterDesign&DSPImplementationBasedonMATLABWuYongfengWangGuojin(InstituteofPhysicsElectrical&Information,NingxiaUniversity,Yinchuan750021,China)Abstract:ThedigitalfilterisaimportantpartinprocessingdigitaldataThispaperdescribesthedesignoftheIIRdigitalfilterbasedonMATLABandtheimplementationbyTMS320C54XDSP。Keywords:MATLAB;DSP;FIR;Digitalfilter一、引言常用的数字滤波器有FIR滤波器和IIR滤波器。IIR数字滤波器因具有结构简单、占用存储空间少、运算速度快,能够用较低的阶数实现较好的选频特性等特点,得到了广泛应用。本文主要介绍应用MATLAB设计IIR数字滤波器的方法,并通过具体问题说明基于TMS320C54XDSP的IIR数字滤波器的实现。二、IIR滤波器的基本结构IIR滤波器由于它的脉冲响应序列是无限长的,故称为无限脉冲响应滤波器。IIR滤波器差分方程:)()()(10inyainxbnyMiiNiiIIR滤波器的系统函数:!∀∀∀∀∀∀NiiiNNNNNNpzzzCazazbzbzbzH111110)(IIR滤波器的网络结构有:直接型(也称直接Ⅰ型)、标准型(也称直接Ⅱ型)、级联型和并联型,如图1所示是二阶IIR滤波器的标准型结构。从图可以看出,左右两组延迟单元可以重叠,由于这种结构所使用的延迟单元最少(只有2个),因此得到了广泛地应用,故称之为标准型IIR滤波器。本文在讨论IIR滤波器的DSP实现时,先实现二阶节,然后由二阶实现高阶。图1标准型二阶IIR数字滤波器结构图三、IIR数字滤波器的的设计(一)IIR数字滤波器的设计方法IIR滤波器设计方法有直接法和间接法。由于模拟滤波器的设计方法已经非常成熟,不仅有完整的公式、完善的图表和曲线可供查阅,而且还有一些优良的滤波2012-05-1119:04器类型可供使用。间接法就是借助于模拟滤波器的设计方法进行的。基本思路是:根据实际要求的数字滤波器的性能指标设计对应的模拟滤波器,得到模拟滤波器的传输函数)(sHa,然后将)(sHa按某种方法变换成数字滤波器的系统函数)(zH。实现系统传递函数)(sHa从S域至Z域映射时,工程上常用脉冲响应不变和双线性变换两种方法。脉冲响应不变法一般会产生频谱混叠现象,对于高通和带阻滤波器不适合,本文中采用双线性不变法。(二)双线性变换法由于S平面和Z平面的单值双线性映射关系为11112∀zzTs,STsTz2121∀(3.1)T为采样间隔。实际设计时先利用MATLAB设计得到模拟滤波器的系统函数)(sHa,将式(3.1)代入)(sHa即可推导出数字滤波器的系统函数)(zH,即11112)()(∀zzTsasHzH(3.2)在双线性变换中,模拟角频率#和数字角频率存在下面关系:2tan2T#可见,#和之间的变换是非线性的。双线性变换法克服了脉冲响应不变法的频谱混叠问题,其幅值逼近程度好,也可适用于高通、带阻等各种滤波器设计。但是,由于与#之间是非线性关系,这将直接影响数字滤波器频率响应。(三)MATLAB中IIR低通数字滤波器的设计方法MATLAB中利用原型模拟滤波器设计IIR低通数字滤波器的方法为:①根据给定的数字滤波器的性能指标,首先对设计性能指标中的频率指标进行转换,转换后的频率指标作为模拟低通滤波器原型设计指标;②调用相应的MATLAB函数设计模拟低通滤波器,估计模拟滤波器最小阶数和边界频率;③由模拟低通原型经频率变换获得相应的过度模拟滤波器;④采用双线性变换将相应类型的模拟滤波器转换为数字滤波器。例:用双线性变换法设计一个butterworth低通数字滤波器,要求通带截止频率2.0rad,阻带截止频率3.0rad,通带衰减小于dB1,阻带衰减大于dB15,采样频率HzFs500。MATLAB程序:clearcloseallT=1;Fs=1/T;wpz=0.2;wsz=0.3;Rp=1;Rs=15;wp=(2/T)*tan(wpz*pi/2);ws=(2/T)*tan(wsz*pi/2);%频率变换[N,wc]=buttord(wp,ws,Rp,Rs,'s');%估计模拟滤波器的最小阶数和固有频率(3dB)[b,a]=butter(N,wc,’s’);%把模拟滤波器原型转换为截止频率为wc的低通滤波器[bz,az]=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器3的转换[h,w]=freqz(bz,az);Hmag=abs(h);Hpah=angle(h);%系统频率响应的模和相位subplot(1,3,1);plot(w*Fs/(2*pi),abs(h));axis([0,0.3,0,1.3]);xlabel(‘w/(2*pi)’);ylabel('abs(h)');title(‘幅度相应’)subplot(1,3,2);plot(w*Fs/(2*pi),angle(h));xlabel(‘w/(2*pi)’);ylabel(‘angle(h)’);title(‘相位响应');subplot(1,3,3);zplane(bz,az);title(‘零极点分布图’);gridon;程序运行结果结果:-1-0.500.51-1-0.500.51RealPartImaginaryPart零极点分布图00.10.20.300.20.40.60.811.2w/(2*pi)abs(h)幅度相应00.10.20.3-3-2-10123w/(2*pi)angle(h)相位响应图2数字滤波器的幅度、相位响应和零极点分布图由运行结果得到滤波器的阶数6N,dB3截止频率为7663.0wc,实现的阶数较低;六个极点均在单位圆内,系统稳定;但系统的相位成非线性,要求线性相位时要加全通网进行相位校正。六阶IIR滤波器的级联型系统函数)(zH:)2155.09044.01)(358.0010.11)(7051.0268.11()1(0007378.0)(21212161∀∀∀∀zzzzzzzzH四、IIR滤波器的DSP实现方法(一)标准型二阶IIR滤波器的实现在二阶IIR滤波器结构中,标准型结构是最常见的滤波器结构,由IIR滤波器的标准结构图可以写出反馈通道和前向通道的差分方程。反馈通道:)2()1()()(21∀∀nwanwanxnw(4.1)前向通道:)2()1()()(210∀∀nwbnwbnwbny(4.2)由式(4.1)和式(4.2),对二阶IIR滤波器进行编程,其中乘法-累加运算可采用单操作数指令或双操作数指令,数据和系数可存放在DARAM中,如图3所示。数据存储器数据存储器数据存储器4图3双操作数数据存放和系数表主程序节选如下:……IIR:PORTRPA1,*AR2;从PA1口输入数据x(n)LD*AR2+0%,16,A;计算反馈通道,x(n)送入AH,修改指针MAC*AR2+0%,*AR3-,A;第1次乘法累加a1×w(n-1)+x(n)→AMAC*AR2+0%,*AR3-,A;第2次乘法累加a2×w(n-2)+A→ASTHA,*AR2;保存w(n)MPY*AR2+0%,*AR3-,A;乘法运算b0×w(n)+A→AMAC*AR2+0%,*AR3-,A;第1次乘法累加b1×w(n-1)+A→AMAC*AR2,*AR3-,A;第2次乘法累加b2×w(n-2)+A→ASTHA,*AR2;保存y(n)MVMMAR1,AR3;指针AR3回位,指向1a单元BDIIR;循环PORTW*AR2,PA0;输出数据y(n)(二)高阶IIR滤波器的实现一个高阶IIR滤波器可以由若干个二阶基本节相级联或并联构成。由于调整每个二阶基本节的系数,只涉及这个二阶基本节的一对极点和零点,不影响其它极、零点,因此用二阶基本节构成的IIR滤波器便于系统的性能调整,受量化噪声影响小,因而得到了广泛的应用。实现方法:将高阶IIR滤波器分解成若干个二阶基本节,然后进行级联来实现。特点:各基本节的极、零点独立,便于系统性能的调整。以四阶椭圆低通IIR滤波器为例,介绍高阶滤波器的实现方法:(1)先求出四阶椭圆低通滤波器的传递函数H(z);(2)再分解成两个级联的二阶基本节,分别求出系数,保存在iir_coff中;(3)循环执行两次二阶基本节IIR滤波,得到一个滤波后的值;(4)处理的采样点数由K_FRAME_SIZE决定。程序节选:……iiir_init:STM#iir_coff_table,AR1RPT#K_IIR_SIZE-1MVPD#iir_table_start,*AR1+STM#iir_d,AR2RPTZA,#5STLA,*AR2+RET.sect“iir”iir_task:STM#in_buf,AR3STM#out_buf,AR4STM#K_FRAME_SIZE-1,BRCRPTBiir_filter_loop-15LD*AR3+,8,Aiir_filter:STM#iir_d+5,AR2STM#iir_coff_table,AR1STM#K_BIQUD-1,AR0feedback_path:MAC*AR1+,*AR2-,AMAC*AR1,*AR2,A……程序说明:在程序中AR1指向滤波器系数;AR2指向输入数据缓冲;AR3指向采样数据入口;AR4指向输出数据口。该程序可以方便地推广到多节情况只需定义多节系数,并修改K_BIQUAD。此外,由于字长有限,每个二阶基本节运算后都会带来一定的误差,合理安排各二阶基本节的前后顺序,使系统的精度得到优化。五、结束语由于IIR数字滤波器必须采用递归结构,极点必须在单位圆内系统才能稳定;这种结构的运算中,对序列的四舍五入处理有时会引起寄生振荡。除了有限字长效应以外,不同结构引入的误差也有所不同,在实际设计时,要注意实现的误差问题。另外,IIR滤波器主要用在对线性相位要求不敏感的场合,如语音通信等,而对于图像处理、数据传输等以波形携带信号的系统,则对线性相位要求较高,必须选用FIR滤波器。参考文献:[l]邹彦.DSP原理及应用[M].北京:电子工业出版社,2008[2]丁玉美,高西全.数字信号处理[M].西安:西安电子科技大学出版社,2006[3]薛年喜,MATLAB在数字信号处理中的应用[M].北京:清华大学出版社[4]汪安民,程昱.DSP实用子程序集.北京:人民邮电出版社,2005[5]刘泉,阙大顺.数字信号处理原理与实现[M].北京:电子工业出版社,2005,8作者简介:伍永峰(1965—),宁夏大学物理电气信息学院教师,主要从事数字信号处理、电路的EDA和应用电子技术的教学与科研工作。

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功