1013.4DSP算法实验3.4.1有限冲击响应滤波器(FIR)算法实验3.4.1.1实验目的1.掌握数字滤波器的设计过程;2.了解FIR的原理和特性;3.熟悉设计FIR数字滤波器的原理和方法。3.4.1.2实验内容1.通过MATLAB设计确定FIR滤波器系数;2.DSP初始化;3.A/D采样;4.FIR运算,观察滤波前后的波型变化。3.4.1.3实验背景知识3.4.1.3.1有限冲击响应数字滤波器(FIR)的基础理论FIR数字滤波器是一种非递归系统,其冲激响应h(n)是有限长序列,其差分方程表达式为:∑−=−=10)()()(NiinxihnyN为FIR滤波器的阶数。在数字信号处理应用中往往需要设计线性相位的滤波器,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。为了使滤波器满足线性相位条件,要求其单位脉冲响应h(n)为实序列,且满足偶对称或奇对称条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n)。这样,当N为偶数时,偶对称线性相位FIR滤波器的差分方程表达式为))1()()(()(12/0inNxinxihnyNi−−−+−=∑−=由上可见,FIR滤波器不断地对输入样本x(n)延时后,再做乘法累加算法,将滤波器结果y(n)输出。因此,FIR实际上是一种乘法累加运算。而对于线性相位FIR而言,利用线性相位FIR滤波器系数的对称特性,可以采用结构精简的FIR结构将乘法器数目减少一半。3.4.1.3.2本实验中FIR的算法公式nxjkjxkhjrnhk≤≤−=∑=0][][][01023.4.1.4实验要求对带有噪声的不同输入信号(正弦波、方波、三角波)进行FIR滤波,观看滤掉噪声后的波形。3.4.1.5实验程序功能与结构说明3.4.1.5.1Filter实验,包含文件1.Filter.c:实验的主程序,包含了系统初始化,音频芯片各控制寄存器的初始化,A/D采样程序,FIR_Filter子程序。2.DEC643.C:对SEED-DEC643各项资源操作的函数集,主要包含系统初始化函数。3.CODEC.c:包含对音频芯片的各控制函数。4.IIC.c:包含对IIC的各操作函数。5.vecs.asm:包含定时器中断的中断向量表。6.CODEC.cmd:声明了系统的存储器配置与程序各段的连接关系。7.DEC643.gel:系统初始化程序。3.4.1.5.2程序流程图3.4.1.5.3实验准备首先将光盘下03.ExamplesofProgram\04.SEED-DTK643实验程序目录下的3.4.1FIR_Filter的文件夹拷贝到D根目录下。1.将DSP仿真器与计算机连接好;2.将DSP仿真器的JTAG插头与SEED-DEC643单元的J1相连接;3.打开SEED-DTK643的电源。观察SEED-DTK_MBoard单元的+5V,+3.3V,+15V,-15V的电源指示灯以及SEED_DEC643的电源指示灯D1是否均亮;若有不亮的,请断开电源,检查电源。4.用音频线连接SEED-DTK_MBoard单元的DAOUT1(J10)接口和SEED-DEC643CSL初始化条件编译采样长度的选择AD采样初始化AD采样有限冲击响应数字滤波103的BNC转接头(J13)的音频输入接口Ain。3.4.1.5.4实验步骤1.打开CCS,进入CCS的操作环境。2.装入FIR_Filter.pjt工程文件,添加DEC643.gel文件,开始进行调试。3.打开Filter.c文件,到第21行修改SAMPLELONG宏定义。SAMPLELONG是采样长度选择,有3个选择1、2、3。1表示256,2表示512,3表示1024;4.修改完宏定义后,编译、连接生成Filter.out文件,装载程序Filter.out。5.本实验和FFT实验,AD实验都需要设置实验箱信号源。通过液晶屏和键盘,设置信号源:当液晶屏上出现“通讯自检不成功,请复位系统”时,按下“Enter”键,进入“信号发生器设置”。在“信号发生器设置”这一菜单下:“通道”设为“0”;“信号类型”可根据需要任意选择(这里我们选”噪声正弦波”);“信号频率”和“信号振幅”可在屏幕下方“有效输入”限定的范围内任意输入,建议振幅设为1000左右,频率”设为300左右;“信号发生器开关”设为“开启”。此时便有噪声方形波信号输入音频芯片AIC23的输入端(利用此芯片同样可以进行AD采集)。6.打开Filter.c文件,在第65行“fir_filter((int*)DataBuffer,(int*)hfir,DDataBuffer,ORDER_FIR,SampleLong,ROUND_FIR);”66行设置断点“printf(FIRfilterhavedone!\n);”7.运行程序。可以观察收到的数据和显示的图像;DataBuffer数组显示的是原始信号图像;DDataBuffer数组显示的是滤波后信号图像。其中图像显示设置对话框中Startadderss:起始地址;AcquisitionBufferSize:输入数据个数;DisplayDataSize:显示数据个数(注意:显示个数要与程序中宏定义的采样个数一致);DSPDataType:数据类型;滤波前104滤波后:8.从第6)步开始重新执行,变化采样长度或滤波类型,或者退出本实验。3.4.1.6MATLAB的应用实验者若进一步研究FIR算法,会发现在每种算法函数的开始处都已定义好进行FIR运算时所需的系数,这些系数是用Matlab产生的。下面具体介绍一下在Matlab中如何设置各种参数,从而方便实验者根据具体需要进行参数的调整,从而达到不同的滤波效果。说明:实验箱提供的信号默认采样频率为48KHz,信号频率为200Hz,幅值为500mv。fir具体参数如下:(为方便起见,采用MATLAB执行格式,括弧内为说明)ezFIRFILTERDESIGNSCRIPT105InputFIRFilterorder(EVENforBSandHPFilter):50(阶数)LowPass:1HighPass:2BandPass:3BandStop:4SelectAnyoneoftheaboveResponse:1(低通)Hamming:1Hanning:2Bartlett:3Blackman:4SelectAnyoneoftheabovewindow:1(使用Hamming窗)EntertheSamplingfrequency:48000(采样频率)Enterthecornerfrequency(Fc):500(截止频率)Enterthenameofthefileforcoeffstorage:filter.dat(生成dat文件名)说明:MATLAB源文件在在光盘下03.ExamplesofProgram\07.MAtlab文件夹中,文件名为ezFIR,只需运行它,按照以上示例输入参数(或根据具体需要输入所需参数后)即可得到FIR-FILTER算法所需的系数。输入参数中,通带截至频率(FP)和截止带截止频率(FS)是比较重要的两个参数,不宜过小,过小滤掉的高频成分太多,很难还原出原波形的形状;也不宜过大,过大滤波效果欠佳。这里只是作为实验演示程序时所需参数的建议,真正做滤波程序时,所需参数还要根据具体要求而定。1063.4.2无限冲击响应滤波器(IIR)算法实验3.4.2.1实验目的1.掌握数字滤波器的设计过程;2.了解IIR的原理和特性;3.熟悉设计IIR数字滤波器的原理和方法。3.4.2.2实验内容1.通过MATLAB设计确定IIR滤波器系数;2.A/D采样;3.IIR运算,观察滤波前后的波型变化。3.4.2.3实验背景知识3.4.2.3.1无限冲击响应数字滤波器(IIR)的基础理论1.IIR滤波器直接型结构数字滤波器的输入x[k]和输出y[k]之间的关系可以用如下常系数线性差分方程及其z变换描述。][][][10pkybpkxakyNppNpp−+−=∑∑==系统的转移函数为∑∑=−=−−==NkkkMkkkzazbzXzYzH011)()()(设N=M,则传输函数变为∏=−−−−−−=++++++=NjjjNNNNpzzzCzbzbzazaazH111110...1...)(它具有N个零点和N个极点,如果任何一个极点在Z平面单位圆外,则系统不稳定。如果系数jb全部为0,滤波器成为非递归的FIR滤波器,这时系统没有极点,因此FIR滤波器总是稳定的。对于IIR滤波器,有系数量化敏感的缺点。由于系统对序列施加的算法,是由加法、延时和常系数乘三种基本运算的组合,所以可以用不同结构的数字滤波器来实现而不影响系统总的传输函数。2.IIR数字滤波器的设计数字滤波器设计的出发点是从熟悉的模拟滤波器的频率响应出发,IIR滤波器的设计有两种方法:107第一种方法先设计模拟低通滤波器,然后通过频带变换而成为其他频带选择滤波器(带通、高通等),昀后通过滤波器变换得到数字域的IIR滤波器。第二种方法先设计模拟低通滤波器,然后通过滤波器变换而得到数字域的低通滤波器,昀后通过频带变换而得到期望的IIR滤波器。模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器)为了用物理可实现的系统逼近理想滤波器的特性,通常对理想特性作如下修改:1)允许滤波器的幅频特性在通带和阻带有一定的衰减范围,幅频特性在这一范围内允许有起伏。2)在通带与阻带之间允许有一定的过渡带。工程中常用的逼近方式有巴特沃斯(Butterworth)逼近、切比雪夫(Chebyshev)逼近和椭圆函数逼近。相应设计的滤波器分别为巴特沃斯滤波器、切比雪夫滤波器和椭圆函数滤波器。巴特沃斯滤波器的模平方函数由下式描述:ncBH22)(11|)(|ΩΩ+=Ωn为阶数;cΩ为滤波器截止频率切比雪夫滤波器比同阶的巴特沃斯滤波器具有更陡峭的过渡带特性和更优的阻带衰减特性。切比雪夫低通滤波器的模平方函数定义为)(11|)(|222Ω+=ΩncTHε其中,ε为决定|)(|ΩcH等波动起伏幅度的常数;n为滤波器的阶数;)(ΩnT是n阶切比雪夫多项式。3.本实验中IIR的算法公式:)2()1()()()2()1()()(21021−×+−×+×=−×−−×−=ndbndbndbnyndandanxnd3.4.2.4实验要求对带有噪声的不同输入信号进行IIR滤波,观看滤掉噪声后的波形。3.4.2.5实验程序功能与结构说明3.4.2.5.1Filter实验,包含文件1.Filter.c:实验的主程序,包含了系统初始化,音频芯片各控制寄存器的初始化,A/D采样程序。2.IIR_Filte.c:IIR滤波子程序。3.DEC643.C:对SEED-DEC643各项资源操作的函数集,主要包含系统初始化函数。4.CODEC.c:包含对音频芯片的各控制函数。5.IIC.c:包含对IIC的各操作函数。1086.vecs.asm:包含定时器中断的中断向量表。7.CODEC.cmd:声明了系统的存储器配置与程序各段的连接关系。8.DEC643.gel:系统初始化程序。3.4.2.5.2程序流程图3.4.2.5.3实验准备首先将光盘下03.ExamplesofProgram\04.SEED-DTK643实验程序目录下的3.4.2IIR_Filter的文件夹拷贝到D盘根目录下。1.将DSP仿真器与计算机连接好;2.将DSP仿真器的JTAG插头与SEED-DEC643单元的J1相连接;3.打开SEED-DTK643的电源。观察SEED-DTK_MBoard单元的+5V,+3.3V,+15V,-15V的电源指示灯以及SEED_DEC643的电源指示灯D1是否均亮;若有不亮的,请断开电源,检查电源。4.用音频线连接SEED-DTK_MBoard单元的DAOUT1(J10)接口和SEED-DEC643的BNC转接头(J13)的音频输入接口Ain。3.4.2.5.4实验步骤1.打开CCS,进入CCS的操作环境。2.装入IIR_Filter.