您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > DSP中的FIR滤波器论文
1课程大作业实验报告语音信号的FIR滤波器处理课程名称:DSP原理及应用组长:何庆勇学号:200830590308年级专业班级:08通信3班组员一:陈纯明学号:200830590301年级专业班级:08通信3班指导教师徐梅宣报告提交日期2011年6月9日2摘要随着信息与数字技术的发展,数字信号处理已经成为当今极其重要而学科与技术领域之一。它在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理的基本方法中,通常会涉及到变换、滤波、频谱分析、调制解调和编码解码等处理。其中滤波是应用非常广泛的一个环节,数字滤波器的理论和相关设计也一直都是人们研究的重点之一。FIR滤波器的是非递归的,稳定性好,精度高;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特征。因此,它在高保真的信号处理,如数字音频、图像处理、数据传输和生物医学等领域得到广泛应用。在数字信号处理中,滤波占有极其重要的地位。数字滤波是语音信号处理、图像处理、模式识别、频谱分析等应用的基本处理算法。用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响等优点外,还具有灵活性好等特点。本文介绍了数字滤波器的设计基础及用窗函数法设计FIR滤波器的方法,运用MATHLAB语言实现了低通滤波器的设计并用CCS2.0进行观察效果。关键词:FIR滤波MATHLAB窗函数法CCS3目录1.设计要求................................................................12.滤波器的设计原理说明....................................................12.1数字滤波器的设计原理.................................................12.2FIR滤波器的基本结构.................................................12.3FIR滤波器的主要特点.................................................23.FIR滤波器的设计方法.....................................................23.1FIR滤波器设计.......................................................23.2窗函数设计的基本方法.................................................23.3滤波器的1z算法实现................................................24.FIR滤波器的MATLAB实现..................................................34.1用FIR1函数设计FIR滤波器.............................................34.2用FIR2函数设计FIR滤波器.............................................44.3用MATLAB工具箱(TOOLBOX)自带工具设计FIR滤波器......................45.FIR滤波器的DSP实现.....................................................76.FIR滤波器的结果检验.....................................................97.调试问题..............................................................108.心得体会...............................................................11参考文献...........................................................1211.设计要求1)设计一FIR低通滤波器,实现对语音信号的滤波。2)用语音信号去检验该滤波器,查看滤波效果。根据老师的要求,我们自己拟定了滤波器的指标:Fs=8000hz,Wp=1500Hz,Ws=2000Hz,通带波纹为0.01,阻带波纹为0.1,N=37。2.滤波器的设计原理说明2.1数字滤波器的设计原理数字滤波器的设计问题就是寻找一组系数ai和bi,使得其性能在某种意义上逼近所要求的特性。如果在s平面上去逼近,就得到模拟滤波器,如果在z平面上去逼近,则得到数字滤波器。数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列。一个线性位移不变系统的输出序列y(n)和输入序列x(n)之间的关系,应满足常系数线性差分方程:(2.1.1)x(n)为输入序列,y(n)为输出序列,ai、bi为滤波器系数,N为滤波器的阶数。2.2FIR滤波器的基本结构在式2.1.1中,若所有的ai均为0,则得FIR滤波器的差分方程:(2.2.1)对式(2.2.1)进行z变换,可得FIR滤波器的传递函数:(2.2.2)由此可得到FIR滤波器的结构如图1所示。0)()()(110ninyainxbnyMiiNii)()(10Niiinxbny)()()(10NiiizbzXzYzH2FIR滤波器的单位冲击响应h(n)是一个有限长序列。若h(n)为实数,且满足偶对称或奇对称的条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n),则FIR滤波器具有线性相位特性。2.3FIR滤波器的主要特点1)单位冲击响应只有有限项;2)FIR滤波器无反馈回路,是一种无条件稳定系统;3)FIR滤波器可以设计成具有线性相位特性。3.FIR滤波器的设计方法3.1FIR滤波器设计FIR滤波器的设计问题在于寻求一系统函数,使其响应逼近滤波器要求的理想频率响应。3.2窗函数设计的基本方法从时域出发,设计h(n)逼近理想hd(n),设理想滤波器的单位脉冲响应为hd(n),则有所求得的一般是无限长的,且是非因果的。要想得到一个因果的有限长的滤波器h(n),最直接的方法是截断,或者说用一个窗口函数对进行加窗处理,即。因此,应选择合适的窗函数。3.3滤波器的1z算法实现FIR滤波器的输出表达式为式中,为滤波器系数;x(n)表示滤波器在n时刻的输入;y(n)为n时刻的输出。它的基本算法是一种乘法-累加运算,即不断地输入样本x(n),经过延时后,再进行乘法-累加,最后输出滤波结果y(n)。10)()(NnnznhzHjezjzHeH|)()()(jdeHdeeHnhenheHjnjddjnndjd)(21)()()()(nhd)(nhd)(nw)(nhd)()()(nwnhnhd31)线性缓冲区法线性缓冲区法又称延迟线法。其特点:·对于N级的FIR滤波器,在数据存储器中开辟一个N单元的缓冲区(滑窗),用来存放最新的N个输入样本;·从最老样本开始取数,每取一个样本后,将此样本向下移位;·读完最后一个样本后,输入最新样本存入缓冲区的顶部。2)循环缓冲区法本次设计的FIR滤波器所采用的就是循环缓冲区法。循环缓冲区法的特点如下:·对于N级FIR滤波器,在数据存储器中开辟一个N单元的缓冲区(滑窗),用来存放最新的N个输入样本;·从最新样本开始取数;·读完最后一个样本(最老样本)后,输入最新样本来代替最老样本,而其他数据位置不变;·用片内BK(循环缓冲区长度)寄存器对缓冲区进行间接寻址,使循环缓冲区地址首尾相邻。4.FIR滤波器的MATLAB实现MATLAB是一种功能强、效率高、便于进行科学和工程计算的交互式软件包,它集数值分析、矩阵运算、信号处理和图形显示于一体,为用户提供了方便、友好的界面环境。MATLAB中的工具箱(Toolbox)包含了许多实用程序。它提供了多种FIR滤波器设计方法。4.1用fir1函数设计FIR滤波器fir1函数用来设计标准频率响应的基于窗函数的FIR滤波器,可实现加窗线性相位FIR数字滤波器的设计。具体语法如下:b=fir1(n,Wn)b=fir1(n,Wn,‘ftype’)b=fir1(n,Wn,Window)b=fir1(n,Wn,‘ftype’,Window)其中n为滤波器的阶数;Wn为滤波器的截止频率;ftype为用来决定滤波器的类型,4当ftype=high时,可设计高通滤波器;当ftype=stop时,可设计带阻滤波器。Window为用来指定滤波器采用的窗函数类型,Window参数可采用的窗口函数有:Boxcar,Hanning,Bartlett,Blackman,Kasier和chebwin等,其默认时为Hamming窗,从而得到滤波器的系数。4.2用fir2函数设计FIR滤波器fir2函数用来设计有任意频率响应的各种加窗FIR滤波器。具体语法如下:b=fir2(n,f,m)b=fir2(n,f,m,Window)b=fir2(n,f,m,npt)b=fir2(n,f,m,npt,Window)b=fir2(n,f,m,npt,lap)b=fir2(n,f,m,nptt,lap,Window)其中n为滤波器的阶数;f为频率点矢量;m为幅度点矢量;Window用来指定所使用的窗函数类型,默认值为汉明(Hamming)窗;npt用来指定fir2函数对频率响应进行内插的点数;lap用来指定fir2函数在重复频率点附近插入的区域大小,从而得到滤波器的系数。4.3用MATLAB工具箱(Toolbox)自带工具设计FIR滤波器该方法为本次设计所采用的方法,实现流程如下图2所示:(1)打开FilterDesign&AnalysisTool5图2如图3设置本设计参数:6图3点击DesignFilter,再点击FilterCoefficients按钮得如图4所示图47由此可以得到滤波器参数:-8*32768/10000,-32*32768/1000016*32768/10000,56*32768/1000036*32768/10000,-89*32768/10000-77*32768/10000,92*32768/10000188*32768/10000,-53*32768/10000-289*32768/10000,-76*32768/10000423*32768/10000,322*32768/10000-531*32768/10000,-851*32768/10000595*32768/10000,3113*32768/100004298*32768/100003113*32768/10000,595*32768/10000-851*32768/10000,-531*32768/10000322*32768/10000,423*32768/10000-76*32768/10000,-289*32768/10000-53*32768/10000,188*32768/1000092*32768/10000,-77*32768/10000-89*32768/10000,36*32768/1000056*32768/10000,16*32768/10000-32*32768/10000,-8*32768/100005.FIR滤波器的DSP实现所选取的N=37,滤波器的算法为y(n)=0bx(n)+1bx(n-1)+2bx(n-2)+···+36bx(n-36)根据我们所选择使用的循环缓冲区法可以编写得到FIR滤波器的源程序如下:.titlefir.asm.mmregs.defstart.bssyn,1xn.usectxn
本文标题:DSP中的FIR滤波器论文
链接地址:https://www.777doc.com/doc-3629497 .html