IIR滤波器的DSP实现_第1页
IIR滤波器的DSP实现_第2页
IIR滤波器的DSP实现_第3页
IIR滤波器的DSP实现_第4页
IIR滤波器的DSP实现_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、IIR滤波器的DSP实现一、IIR滤波器的基本结构IIR滤波器差分方程的一般表达式为:yn=i=0Nbixn-i-i=1Maiy(n-i)式中x(n)为输入序列;y(n)为输出序列; ai和bi为滤波器系数.若所有系数ai等于0,则为FIR滤波器.IIR滤波器具有无限长的单位脉冲响应,在结构上存在反馈回路,具有递归性,即IIR滤波器的输出不仅与输入有关,而且与过去的输出有关.将上式展开得出y(n)表达式为:yn=b0xn+b1xn-1+bNxn-N-a1yn-1-a2yn-2-aMyn-M在零初始条件下,对上式进行z变换,得到:Yz=b0Xz+b1z-1Xz+bNz-NXz-a1z-1Yz-a

2、2z-2Yz-aMz-MYz设N=M,则传递函数为:Hz=Y(z)X(z)=b0+b1z-1+bNz-N1+a1z-1+aNz-N上式可写成:Hz=b0zN+b1zN-1+bNzN+a1z-1+aN=Ci=1Nz-ziz-pi上式具有N个零点zi和N个极点pi.若有极点位于单位圆外将导致系统不稳定.由于FIR滤波器所有的系数ai均为0,不存在极点,不会造成系数的不稳定.对于IIR滤波器,系统稳定的条件如下:若|pi|<1,当n时,h(n)0,系统稳定;若|pi|>1,当n时,h(n),系统不稳定.IIR滤波器具有多种形式,主要有:直接型(也称直接I型)、标准型(也称直接II型)、变

3、换型、级联型和并联型.二阶IIR滤波器,又称为二阶基本节,分为直接型、标准型和变换型.对于一个二阶IIR滤波器,其输出可以写成:yn=b0xn+b1xn-1+b2xn-2-a1yn-1-a2yn-21.直接型(直接I型)根据上式可以得到直接二型IIR滤波器的结构图.如图1所示.共使用了4个延迟单元(z-1).图1 直接I型二阶IIR滤波器直接型二阶IIR滤波器还可以用图2的结构实现.图2 直接I型二阶IIR滤波器此时,延时变量变成了w(n).可以证明上图的结构仍满足二阶IIR滤波器输出方程.前向通道:yn=i=02biw(n-i) 1.1 反馈通道:wn=xn-j=12ajwn-j 1.2 将

4、1.2式代入1.1式可得: yn=i=02bix(n-i)-j=12ajw(n-i-j) =i=02bix(n-i)-i=02bij=12ajw(n-i-j) =i=02bix(n-i)-i=02ajj=12biw(n-i-j)=i=02bix(n-i)-j=12ajy(n-j)2.标准型(直接II型)从图2可以看出,左右两组延迟单元可以重叠,从而得到标准二阶IIR滤波器的结构图,如图3所示.由于这种结构所使用的延迟单元最少(只有2个),得到了广泛地应用,因此称之为标准型IIR滤波器.图3 标准型二阶IIR滤波器二、IIR滤波器的设计IIR滤波器的设计可以利用模拟滤波器原型,借鉴成熟的模拟滤波

5、器的设计结果进行双线性变换,将模拟滤波器变换成满足预定指标的数字滤波器,即根据模拟设计理论设计出满足要求的传递函数H(s),然后将H(s)变换成数字滤波器的传递函数H(z).设计IIR滤波器的基础是设计模拟滤波器的原型,这些原型滤波器主要有:巴特沃兹(Butterworth)滤波器,其幅度响应在通带内具有最平特性;切比雪夫(Chebyshev)滤波器,在通带内具有等波纹特性,且阶数小于巴特沃兹滤波器.椭圆(Elliptic)滤波器,在通带内具有等波纹特性,且阶数最小.将模拟滤波器转换为数字滤波器常用的方法是双线性变换,其作用是完成从s平面到z平面的一个映射.其关系为:s=z-1z+1 (2.1

6、)z=1+s1-s (2.2)双线性变换的基本性质如下:s平面上的j轴映射到z平面的单位圆上;s平面的左半平面映射到z平面的单位圆内;s平面的右半平面映射到z平面的单位圆外.考虑到s平面上的虚轴映射为z平面的单位圆,令s=jA,它代表一个可变的模拟频率.其z平面上相应的数字频率为D,即z=ejDT,将以上两式代入2.1式得:jA=ejDT-1ejDT+1=ejDT2(ejDT/2-e-jDT/2)ejDT2(ejDT2+e-jDT/2)对上式求解得:A=arctanDT2 (2.3)模拟频率A和相应的数字频率D之间的映射关系如图4所示:图4 A和D之间的映射关系当A在01之间变化时, D在0D

7、4之间变化, s为采样频率:当A>1时,其对应的D在D4D2之间.双线性变换会造成频率失真,通常采用预畸变来补偿频率失真.双线性变换设计的步骤如下:选择一个合适的模拟传递函数H(s);对截止频率或预定的数字频率D进行畸变,并根据式2.3求得相应的模拟频率A;用A对H(s)中的频率进行换算,即: Hs|s=s/A用式2.1计算H(z): Hz=HsAs=z-1z+1三、二阶IIR滤波器的DSP实现1.标准型二阶IIR滤波器的实现在二阶IIR滤波器结构中,标准型结构是最常见的滤波器结构,其结构如图5所示:图5 标准型二阶IIR滤波器由结构图可以写出反馈通道和前向通道的差分方程:反馈通道: w

8、n=xn+a1wn-1+a2w(n-2)前向通道: yn=b0wn+b1wn-1+b2w(n-2)由以上两式对二阶IIR滤波器进行编程,其中乘法-累加运算可采用单操作数指令或双操作数指令,数据和系数可存放在DARAM中,如图6所示:图6 双操作数数据存放和系数表2.直接型二阶IIR滤波器的实现二阶IIR滤波器可以用直接型结构来实现.在迭代运算中,先衰减后增益,系统的动态范围和鲁棒性要好些.直接型二阶IIR滤波器的结构如图7所示:图7 直接型二阶IIR滤波器直接型二阶IIR滤波器的脉冲传递函数为:Hz=b0+b1z-1+b2z-21-a1z-1-a2z-2差分方程为:yn=b0xn+b1xn-1

9、+b2xn-2+a1yn-1+a2yn-2为了实现直接型滤波,可在DARAM中开辟4个循环缓冲区,用来存放变量和系数,并采用循环缓冲区方式寻址.这4个循环缓冲区的结构如图8所示:图8 循环缓冲区结构四、总体设计方案1.利用MATLAB来确定IIR滤波器的参数;2.启动CCS,在CCS中建立一个汇编源文件、建立一个C源文件和一个命令文件,并将这三个文件添加到工程,再编译并装载程序;3.设置波形时域观察窗口,得到其滤波前后波形变化图;4.设置频域观察窗口,得到其滤波前后频谱变化图.五、主要参数f1=500Hz f2=1000Hz fs=2000六、源程序1.汇编源文件程序(.asm).global

10、 _iir,_init,_outdata_iir bset frct sub #1,t0 mov t0,mmap(csr)add t0,ar0mov xar2,xdpmov ar2,cdpmov #0,ac0rpt csrmacmz *ar0-,*cdp+,ac0add t0,ar1mov xar3,xdpmov ar3,cdprpt csrmacmz *ar1-,*cdp+,ac0mar *ar1+mov hi(ac0),*ar1mov hi(ac0),t0bclr frctret_init sub #1,t0mov t0,mmap(csr)mov #0,ac0rpt csrmov ac0,

11、*ar0+rpt csrmov ac0,*ar1+ret_outdata mov t1,ac0sub #2,ac0mov ac0,mmap(csr)add ac0,ar0rpt csrdelay *ar0-mar *ar0+mov t0,*ar0ret2.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 256

12、int 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 fBnIIRNUMBER_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

13、);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,bufer);k+;if(k>=bufer_L)k=0;void inputwave()float wt1;float wt2;int i;for(i=0;i<=bufer_L;i+)wt1=2*pi*i*signal_1_f;wt1=wt1/signal_sample_f;wt2=2*pi*i*signal_2_f;

14、wt2=wt2/signal_sample_f;data_ini=(cos(wt1)+cos(wt2)/2*32768;3.命令文件程序(.cmd)-stack 0x0500-sysstack 0x0500-heap 0x1000-c-u _Reset-l rts55.libMEMORY PAGE 0: RAM(RWIX): origin=0x000100, length=0x01ff00 ROM(RIX): origin=0x020100, length=0x01ff00 VECS(RIX): origin=0xffff00, length=0x000200PAGE 2: IOPORT(RW

15、I):origin=0x000000, length=0x020000 SECTIONS .text >ROM 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 七、实验结果及分析1.输入波形:时域波形:频域波形:2.输出波形:时域波形:频域波形:八、心得体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论