1、IIR 滤波器的 DSP 实现一、IIR 滤波器的基本结构IIR 滤波器差分方程的一般表达式为:()=0() =1()式中 x(n)为输入序列 ;y(n)为输出序列 ; 和 为滤波器系数 .若所有系数 等于 0,则为 FIR 滤波 器.IIR 滤波器具有无限长的单位脉冲响应,在结构上存在反馈回路,具有递归性,即 IIR 滤波器的输出不仅与输入有关, 而且与过去的输出有关.将上式展开得出 y(n)表达式为:()=0()+1(1)+()1(1)2(2)()在零初始条件下,对上式进行 z 变换,得到:()=0()+11()+()11()22()()设 N=M,则传递函数为 :()=()()=0+11
2、+1+11+上式可写成:()=0+11+11+=1上式具有 N 个零点 和 N 个极点 .若有极点位于单位圆外将导致系统不稳定.由于 FIR 滤波器 所有的系数 均为 0,不存在极点, 不会造成系数的不稳定.对于 IIR 滤波器,系统稳定的条件如下:若| |1,当 n 时,h(n) ,系统不稳定. IIR 滤波器具有多种形式, 主要有:直接型(也称直接 I 型)、标准型(也称直接 II 型)、变换型、级联型和并联型.二阶 IIR 滤波器, 又称为二阶基本节, 分为直接型、标准型和变换型.对于一个二阶 IIR 滤波器, 其输出可以写成:()=0()+1(1)+2(2)1(1)2(2)1.直接型(
3、直接 I 型)根据上式可以得到直接二型 IIR 滤波器的结构图.如图 1 所示 .共使用了 4 个延迟单元( ).1图 1 直接 I 型二阶 IIR 滤波器直接型二阶 IIR 滤波器还可以用图 2 的结构实现.图 2 直接 I 型二阶 IIR 滤波器此时, 延时变量变成了 w(n).可以证明上图的结构仍满足二阶 IIR 滤波器输出方程.前向通道:()=2=0() (1.1) 反馈通道:()=() 2=1() (1.2) 将 1.2 式代入 1.1 式可得:()=2=0() 2=1()=2=0() 2=0 2=1()=2=0() 2=0 2=1()=2=0() 2=1()2.标准型(直接 II
4、型)从图 2 可以看出,左右两组延迟单元可以重叠,从而得到标准二阶 IIR 滤波器的结构图,如图 3 所示.由于这种结构所使用的延迟单元最少 (只有 2 个),得到了广泛地应用,因此称之为标准型 IIR 滤波器.图 3 标准型二阶 IIR 滤波器二、IIR 滤波器的设计IIR 滤波器的设计可以利用模拟滤波器原型,借鉴成熟的模拟滤波器的设计结果进行双线性变换,将模拟滤波器变换成满足预定指标的数字滤波器,即根据模拟设计理论设计出满足要求的传递函数H(s),然后将 H(s)变换成数字滤波器的传递函数 H(z).设计 IIR 滤波器的基础是设计模拟滤波器的原型,这些原型滤波器主要有:巴特沃兹(Butt
5、erworth)滤波器, 其幅度响应在通带内具有最平特性;切比雪夫(Chebyshev)滤波器 ,在通带内具有等波纹特性,且阶数小于巴特沃兹滤波器.椭圆(Elliptic)滤波器,在通带内具有等波纹特性, 且阶数最小 .将模拟滤波器转换为数字滤波器常用的方法是双线性变换,其作用是完成从 s 平面到 z 平面的一个映射. 其关系为:=1+1 (2.1)=1+1 (2.2)双线性变换的基本性质如下:s 平面上的 轴映射到 z 平面的单位圆上;s 平面的左半平面映射到 z 平面的单位圆内;s 平面的右半平面映射到 z 平面的单位圆外.考虑到 s 平面上的虚轴映射为 z 平面的单位圆,令 ,它代表一个
6、可变的模拟频率.其 z 平面=上相应的数字频率为 ,即 ,将以上两式代入 2.1 式得: =1+1=2(/2/2)2(2+/2)对上式求解得:=2 (2.3)模拟频率 和相应的数字频率 之间的映射关系如图 4 所示: 图 4 和 之间的映射关系 当 在 01 之间变化时 , 在 0 之间变化, 为采样频率:当 时, 其对应的 在 4 1 之间. 双线性变换会造成频率失真,通常采用预畸变来补偿频率失真 .42双线性变换设计的步骤如下:选择一个合适的模拟传递函数 H(s);对截止频率或预定的数字频率 进行畸变,并根据式 2.3 求得相应的模拟频率 ; 用 对 H(s)中的频率进行换算,即: H(s
7、)|s=s/A用式 2.1 计算 H(z): H(z)=H(sA)|s=1+1三、二阶 IIR 滤波器的 DSP 实现1.标准型二阶 IIR 滤波器的实现在二阶 IIR 滤波器结构中, 标准型结构是最常见的滤波器结构,其结构如图 5 所示:图 5 标准型二阶 IIR 滤波器由结构图可以写出反馈通道和前向通道的差分方程:反馈通道: w(n)=x(n)+1(1)+2(2)前向通道: ()=0()+1(1)+2(2)由以上两式对二阶 IIR 滤波器进行编程,其中乘法-累加运算可采用单操作数指令或双操作数指令,数据和系数可存放在 DARAM 中,如图 6 所示:图 6 双操作数数据存放和系数表2.直接
8、型二阶 IIR 滤波器的实现二阶 IIR 滤波器可以用直接型结构来实现.在迭代运算中,先衰减后增益,系统的动态范围和鲁棒性要好些.直接型二阶 IIR 滤波器的结构如图 7 所示:图 7 直接型二阶 IIR 滤波器直接型二阶 IIR 滤波器的脉冲传递函数为:()=0+11+2211122差分方程为: ()=0()+1(1)+2(2)+1(1)+2(2)为了实现直接型滤波,可在 DARAM 中开辟 4 个循环缓冲区 ,用来存放变量和系数,并采用循环缓冲区方式寻址.这 4 个循环缓冲区的结构如图 8 所示:图 8 循环缓冲区结构四、总体设计方案1.利用 MATLAB 来确定 IIR 滤波器的参数;2
9、.启动 CCS,在 CCS 中建立一个汇编源文件、建立一个 C 源文件和一个命令文件 ,并将这三个文件添加到工程, 再编译并装载程序;3.设置波形时域观察窗口,得到其滤波前后波形变化图 ;4.设置频域观察窗口,得到其滤波前后频谱变化图 .五、主要参数f1=500Hz f2=1000Hz fs=2000六、源程序1.汇编源文件程序(.asm).global _iir,_init,_outdata_iir bset frctsub #1,t0mov t0,mmap(csr)add t0,ar0mov xar2,xdpmov ar2,cdpmov #0,ac0rpt csrmacmz *ar0-,*
10、cdp+,ac0add t0,ar1mov xar3,xdpmov ar3,cdprpt csrmacmz *ar1-,*cdp+,ac0mar *ar1+mov hi(ac0),*ar1mov hi(ac0),t0bclr frctret_initsub #1,t0mov t0,mmap(csr)mov #0,ac0rpt csrmov ac0,*ar0+rpt csrmov ac0,*ar1+ret_outdatamov t1,ac0sub #2,ac0mov ac0,mmap(csr)add ac0,ar0rpt csrdelay *ar0-mar *ar0+mov t0,*ar0ret
11、2.C 源文件程序 (.c)#include “math.h“#define signal_1_f 500#define signal_2_f 10000#define signal_sample_f 25000#define pi 3.1415926#define IIRNUMBER_L 2#define bufer_L 256int N_L=IIRNUMBER_L; int data_inbufer_L;int outbufer_L ;int xIIRNUMBER_L+1;int yIIRNUMBER_L+1;int k=0;int bufer=bufer_L;int fBnIIRNUMB
12、ER_L=0,0x634a;int fAnIIRNUMBER_L=0xe5c,0xe5c;extern int iir(int *x,int *y,int *fAn,int *fBn,int N_L);extern int init(int *,int *,int);extern int outdata(int *,int,int);void inputwave();void main()int iirout;inputwave();init(x,y,N_L);while(1)x0=data_ink;iirout=iir(x,y,fAn,fBn,N_L);outdata(out,iirout,
13、bufer);k+;if(k=bufer_L)k=0;void inputwave()float wt1;float wt2;int i;for(i=0;iROM PAGE 0.data ROM PAGE 0.bss RAM PAGE 0.const RAM PAGE 0.sysmem RAM PAGE 0.stack RAM PAGE 0.cio RAM PAGE 0.sysstack RAM PAGE 0.switch RAM PAGE 0.cinit RAM PAGE 0.pinit RAM PAGE 0.vectors VECS PAGE 0.ioport IOPORT PAGE 2七
14、、实验结果及分析1.输入波形:时域波形:频域波形:2.输出波形:时域波形:频域波形:八、心得体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,数字技术已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在.通过这次课设,我掌握了数字滤波器的设计过程, 了解了 IIR 的原理和特性,学习 IIR 滤波器的DSP 实现原理. 熟悉设计 IIR 数字滤波器的原理和方法,学习使用 CCS 的波形观察窗口观察输入输出信号波形和频谱变化情况.通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力.DSP 原理及应用课程设计报告设计课题: IIR 滤波器的 DSP 实现专业班级: 信息 07-2 班姓 名: 王晓萱学 号: 07100637同 组 人: 王鑫、蔚金昌、吴杰、徐扬、李峰