资源描述:
《实验五 IIR数字滤波器的算法实现和仿真.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验五IIR数字滤波器的算法实现和仿真一、实验目的(1)了解IIR滤波器的原理及使用方法;(2)了解使用Matlab语言设计IIR滤波器的方法;(3)了解DSP对IIR滤波器的设计及编程方法;(4)熟悉对IIR滤波器的仿真调试方法:I/O口数据输入输出法和探针数据输入输出法。二、实验设备安装有CCS软件的电脑三、实验目标试利用CCS测试四阶IIR低通滤波器的单位冲激响应。滤波器的通带为200Hz,阻带为500Hz。四、实验原理(一)基本理论数字滤波器的输入x[k]和输出y[k]之间的关系可以用如下常系数线性差分
2、方程来描述:MNy(n)=∑bix(n−i)+∑aiy(n−i)i=0i=1系统的转移函数为M−i∑bizi=0H(z)=N−i1−∑aizi=1展开为−1−Mb+bz+...+bz01mH(z)=−1−2−N1−az−az−...−az12n转换成极零点表示为:Nz−zjH(z)=C∏z−pjj=1式中,zj表示零点,pj表示极点,它具有N个零点和N个极点,如果任何一个极点在Z平面单位圆外,则系统不稳定。如果系数ai全部为0,滤波器成为非递归的FIR滤波器,这时系统没有极点,因此FIR滤波器总是稳定的。对于I
3、IR滤波器,有系数量化敏感的缺点。由于系统对序列施加的算法,是由加法、延时和常系数乘三种基本运算的组合,所以可以用不同结构的数字滤波器来实现而不影响系统总的传输函数。为了要用四阶IIR结构实现通带为200Hz,阻带为500Hz的低通滤波器。滤波器的差分方程表达式为:y(n)=bx(n)+bx(n−1)+.....+bx(n−4)014+ay(n−1)+.....+ay(n−4)14用MATLAB求得:a1=3.4674,a2=-4.4615,a3=2.8518,a4=-0.6739,b0=0.0951,b1=-
4、0.3139,b2=0.4460,b3=-0.3139,b4=0.0951下图为一个直接Ⅱ型的四阶IIR滤波器的结构标准形式。w(n)x0x(n)+X+y(n)a1Z-1b0b1x1XXZ-1a2b2x2XXa3Z-1b3x3XXa4Z-1b4x4XX反馈通道前向通道图5-1直接Ⅰ型四阶IIR滤波器由图可以写出反馈通道和前向通道的差分方程如下:反馈通道:x=w(n)=x(n)+a∗x+a∗x+a∗x+a∗x011223344前向通道:y(n)=b∗x+b*x+b∗x+b*x+a*x0011223344在编程时,
5、将变量和系数都存放在DARAM中,并采用循环缓冲区方式寻址,共需开辟4个循环缓冲区用来存放变量和系数。这四个循环缓冲区的结构如下:Xx(n-4)Yy(n-4)Bb4Aa4x(n-3)y(n-3)b3a3x(n-2)y(n-2)b2a2x(n-1)AR4y(n-2)b1AR3a1AR2x(n)y(n)AR5b0未用图5-2内存中缓冲区及指针的设置(二)实验程序1.汇编语言源程序直接形式四阶IIR滤波器的源程序iir_4order.asm如下:.title“iir_4order.asm”.mmregs.global
6、mainX.usect“X”,5Y.usect“Y”,5B.usect“B”,5A.usect“A”,5PA0.set0PA1.set1.datatable.word0,0,0,0;x(n-1)~x(n-4).word0,0,0,0;y(n-1)~y(n-4).word3116;B4=0.0951.word-10286;B3=-0.3139.word14615;B2=0.4460.word-10286;B1=-0.3139.word3136;B0=0.0951.word-22082;A4=-0.6739.wor
7、d31149;A3/3=2.8518/3.word-30484;A2/5=-4.6515/5.word28383;A1/4=3.4647/4.textmain:SSBXFRCTSTM#X,AR1RPT#3MVPD#table,*AR1+STM#Y,AR1RPT#3MVPD#table+4,*AR1+STM#B,AR1RPT#4MVPD#table+8,*AR1+STM#A,AR1RPT#3MVPD#table+13,*AR1+STM#X+4,AR2STM#A+3,AR3STM#Y+3,AR4STM#B+4,AR
8、5STM#5,BKSTM#-1,AR0STM#1000h,AR6;输出数据缓冲器首址为#1000hSTM#0200h-1,AR7;循环计算512个样点LOOP:PORTRPA1,*AR2LD*AR2,ASTLA,-1,*AR2;x(n)/2,防止溢出MPY*AR2+0%,*AR5+0%,A;计算前向通道MAC*AR2+0%,*AR5+0%,AMAC*AR2+0%,*AR5+0%,AMA