基于DSP的无限冲击响应滤波器算法

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

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

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

资源描述

DSP实验报告无限冲击滤波器算法无限冲击响应滤波器(IIR)算法一、实验目的1.掌握设计IIR数字滤波器的原理和方法;2.熟悉IIR数字滤波器的特性;3.了解IIR数字示波器的设计方法。二、实验设备PC兼容机一台,操作系统为Windows2000以上,安装CodeCoposerStudio2.0软件三、实验原理1.无限冲击响应数字滤波器的基础理论;2.模拟滤波器原理(巴特沃斯、切比雪夫、椭圆滤波器、贝塞尔滤波器等)。3.数字滤波器的确定方法;4.根据要求设计低通IIR滤波器要求:低通巴特沃斯滤波器在其通带边缘1KHz处的增益为-3dB,12KHz处的阻带衰减为30dB,采样频率为25KHz。设计:—确定待求通带边缘频率fp1Hz、待求阻带边缘频率fs1Hz和待求阻带衰减-20logδsdB。模拟边缘频率为:fp1=1000Hz,fs1=12000Hz阻带衰减为:-20logδdB=30dB—用Ω=2πf/fs把由HZ表示的待求边缘频率转换成弧度表示,得到Ωp1和Ωs1。Ωp1=2πfp1/fs=2π1000/25000=0.08πradΩs1=2πfs1/fs=2π12000/25000=0.96πrad—计算预扭曲模拟频率以避免双线性变化带来的失真。由w=2fstan(Ω/2)求得wp1和ws1,单位是rad/sWp1=2fstan(Ωp1/2)=6316.5rad/sWs1=2fstan(Ωs1/2)=794727.2rad/s—由已给定的阻带衰减-20logδsdB确定阻带边缘增益δs因为-20logδs=30,所以δs=0.03162—计算滤波器的阶数714.0)5.63162.794727log(2)1)03162.0(1log()log(2)11log(2112pssn因此,一阶巴特沃斯滤波器就足以满足要求。—一阶模拟巴特沃斯滤波器的传输函数为:H(s)=wp1/(s+wp1)=6316.5/(s+6316.5)由双线性变换定义:117757.01)1(1122.05.631611500005.6316)(zzzzzH因此差分方程:y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1]5.程序流程图四、实验步骤1.实验准备—设置软件仿真模式—启动CCS2.打开工程,浏览程序,工程目录为D:\dsp\t7\iir\iir.pjt3.编译并下载程序4.打开窗口:选择菜单View-Graph-Time/Frquency…,进行如下设置5.清楚显示:在以上的窗口单机鼠标右键,选择弹出菜单中“ClearDisplay”6.设置断点:在程序iir.c中加入软件断点7.运行观察结果(1)选择“Debug”菜单中的“RUN”项运行程序(2)观察“IIR”窗口中时域波形;观察滤波效果。开始初始化工作变量调用波形发生子程序产生混叠的波形(高频+低频)调用IIR滤波子程序计算当前输出波形发生计算步长用标准C的sin函数和cos函数计算当前波形值返回波形值IIR滤波用滤波器系数乘以保存的N-1个输入输出值和当前输入值并求和返回计算结果五、实验结果输出的波形为一个低频率的正弦波与一个高频的余弦波叠加而成,如图:Matlab仿真IIR滤波器的单位脉冲响应00.10.20.30.40.500.20.40.60.811.21.4频率幅度IIR通过观察时域和频域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则被衰减。Matlab的仿真也可以看出来,IIR滤波器在高频处的衰减使得信号中的高频分量被衰减,从而实现低通滤波器的功能。实验分析:输入波形为一个低频率的正弦波与一个高频的正弦波叠加而成。通过观察频域和时域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则大部分被滤除。通过对滤波器参数的设计,可以改变该滤波器的滤波性能。实验心得:通过这个实验把以前学过的数字信号处理的知识有了更深的巩固了了解,尤其是IIR滤波器的设计和应用方面,从模拟滤波器的设计,到模拟数字角频率的转换,再到最后数字滤波器的滤波有了很好的认识,这个对我们加深数字信号处理的认识有很好的帮助,更加直观的感受到了信号处理的作用和意义,对我们以后的学习有很大的帮助。源程序B=[0.11220.1122];A=[1-0.7757];[Hw]=freqz(B,A);plot(w/2/pi,abs(H))绘制显示出中幅频特性曲线,如图所示:六、程序代码#includeDSP281x_Device.h//DSP281xHeaderfileIncludeFile#includeDSP281x_Examples.h//DSP281xExamplesIncludeFile#includef2812a.h#includemath.h#defineIIRNUMBER2//滤波器参数#definePI3.1415926floatInputWave();//输入波形信号子函数调用声明floatIIR();//滤波器子函数调用声明floatfBn[IIRNUMBER]={0.0,0.7757};//系统函数分母向量矩阵floatfAn[IIRNUMBER]={0.1122,0.1122};//系统函数分子向量矩阵floatfXn[IIRNUMBER]={0.0};//输入(过去的)信号的缓存floatfYn[IIRNUMBER]={0.0};//输出(过去的)信号缓存floatfInput,fOutput;floatfSignal1,fSignal2;floatfStepSignal1,fStepSignal2;floatf2PI;inti;floatfIn[256],fOut[256];//定义256个地址空间的输入输出缓冲器intnIn,nOut;/***********************主函数*************************/main(void){nIn=0;nOut=0;f2PI=2*PI;//三角函数周期为2π,用于在调整相位增量在【0-2π】fSignal1=0.0;//Signal1初相位0fSignal2=PI*0.1;//Signal2初相位0.1π//fStepSignal1=2*PI/30;//fStepSignal2=2*PI*1.4;fStepSignal1=2*PI/50;//Signal1相位增量(分辨率)2π/50fStepSignal2=2*PI/2.5;//Signal2相位增量(分辨率)2π/2.5while(1)//循环执行滤波操作{fInput=InputWave();//调用波形发生函数,产生单签相位点下的幅值输入fIn[nIn]=fInput;//把产生的采样点值暂存在空间为256点的数组nIn++;//序号自加,待下一次赋值给下个地址nIn%=256;//%表示取余,保证nIn在【0-255】区间fOutput=IIR();//调用IIR函数,滤波输出的结果赋给fOutputfOut[nOut]=fOutput;//fOutput输出存储在输出缓冲数组nOut++;//输出计数自加,待下一次输出赋值if(nOut=256)//判断nOut值,为256时刚好存满数组空间{nOut=0;//此句设置断点,刚好显示满空间的fOut}}}/******************************************************函数名称:InputWave函数功能:产生采样点样值入口参数:无出口参数:fXn[0]******************************************************/floatInputWave(){for(i=IIRNUMBER-1;i0;i--)//暂存前一次的输入输出作为迭代初值{fXn[i]=fXn[i-1];fYn[i]=fYn[i-1];}fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0;//计算当前的输入值作为输入送给filterfYn[0]=0.0;fSignal1+=fStepSignal1;//Signal1的相位增量变化,分辨率2π/50if(fSignal1=f2PI)fSignal1-=f2PI;//保证sin函数相位变化中始终在【0-2π】fSignal2+=fStepSignal2;//Signal2的相位增量变化,分辨率2π/2.5if(fSignal2=f2PI)fSignal2-=f2PI;//保证sin函数的输入相位变化始终在【0-2π】return(fXn[0]);//返回计算得到的InputWave值}/*********************************************************函数名称:IIR函数函数功能:通过迭代,实现滤波入口参数:无出口参数:fSum滤波信号输出**********************************************************/floatIIR(){floatfSum;//局部变量,用于暂存滤波结果fSum=0.0;for(i=0;iIIRNUMBER;i++)//根据系统函数的差分方程,迭代计算输出{//滤波结果保存在fSum局部变量中fSum+=(fXn[i]*fAn[i]);fSum+=(fYn[i]*fBn[i]);}return(fSum);//返回输出迭代(滤波)输出}

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

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

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

×
保存成功