有限冲击响应FIR 滤波器的设计.doc_第1页
有限冲击响应FIR 滤波器的设计.doc_第2页
有限冲击响应FIR 滤波器的设计.doc_第3页
有限冲击响应FIR 滤波器的设计.doc_第4页
有限冲击响应FIR 滤波器的设计.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

一 设计题目 有限冲击响应FIR 滤波器的设计二 设计目的1掌握数字滤波器的设计过程;2了解FIR 的原理和特性;3熟悉设计FIR 数字滤波器的原理和方法;4 学习FIR 滤波器的DSP 实现原理;5 学习使用ccs 的波形观察窗口观察输入、输出信号波形和频谱变化情况。三 设计内容 1 通过MATLAB 来设计一个低通滤波器,对它进行模拟仿真确定FIR 滤波器系数;2 用DSP 汇编语言及C 语言进行编程,实现FIR 运算,对产生的合成信号,滤除信号中高频成分,观察滤波前后的波型变化四 设计原理 滤波器就是在时间域或频域内,对已知激励产生规定响应的网络使其能够从信号中提取有用的信号,抑制并衰减不需要的信号,滤波器的设计实质上就是对提出的要求给出相应的性能指标再通过计算,使物理可实现的实际滤波器响应特性逼近给出的频率响应特性。 FIR 数字滤波器是一种非递归系统,其传递函数为:H (z) =Y(Z)/X(Z)=b(n)z-n由此可得到系统的差分方程为:y(n ) = h ( i ) x ( n -i) 其激响应h(n)是有限长序列,它其实就是滤波器系数向量b ( n ) , N 为FIR 滤波器的阶数在数字信号处理应用中往往需要设计线性相位的滤波器,FIR 滤波器在保证幅度特性满足技术要求的同时,易做到严格的线性相位特性。为了使滤波器满足线性相位条件,要求其单位脉冲响应h(n)为实序列,且满足偶对称或奇对称条件,即h ( n )=h(N-1-n)或h(n)=h(N-1-n)。这样,当N 为偶数时,偶对称线性相位F 讯滤波器的差分方程表达式为Y(n)= h ( i ) (x ( n -i)+x(N-1-n-i)由上可见,FIR 滤波器不断地对输入样本x(n)延时后,再做乘法累加算法,将滤波器结果y(n)输出。因此,FIR 实际上是一种乘法累加运算。而对于线性相位FIR 而言,利用线性相位FIR 滤波器系数的对称特性,可以采用结构精简的FIR 结构将乘法器数目减少一半。 应用MATLAB 设计FIR 滤波器的主要任务就是根据给定的性能指标设计一个H(z) ,使其逼近这一指标,进而计算并确定滤波器的系数b ( n ) ,再将所设计滤波器的幅频响应、相频响应曲线作为输出,与设计要求进行比较,对设计的滤波器进行优化,设计完成之后将得到FIR 滤波器的单位冲激响应序列h ( n )的各个参数值。五 MATLAB 设计FIR 滤波器的方法 FIR 滤波器最大的优点就是在满足幅频特性的同时,还可以获得严格的线性相位特性,这使得它在语音处理、图像处理等要求高保真的数字信号处理中显得十分重要。设计FIR 滤波器主要有窗函数法、最优化设计法及约束最小二乘法等设计方法。用MATLAB 设计FIR 数字滤波器方法有很多种,最常用的有窗函数设计方法、最优化设计方法等。1 窗函数设计方法 窗函数法一般是基于直接程序设计法来设计标准频率响应的,可实现加窗线性相位FIR 数字滤波器设计。Fir1是用来设计标准频率响应的基于窗函数的FIR 滤波器函数,可实现加窗线性相位FIR 数字滤波器的设计,使用firl 函数可设计标准的低通、高通、带通和带阻四种滤波器;fir2是用来设计有任意频率响应的各种加窗FIR 滤波器函数。 利用firl 和fir2 两种函数可以设计有任意频率响应的各种加窗FIR 滤波器滤波器系数包含在返回值b 中,可表示为 b(z)=b(1)+b(2)z-n+b(n+1)z-n fir1 函数的使用格式有以下几种:b=fir(n,Wn),可得到低通滤波器;参数n 为滤波器的阶数;Wn 为滤波器的截止频率:其中,0Wn 1 , Wn=1 相当于0.5fs 当Wn=W1 W2时,为带通滤波器,其通带为wl Ww2,w1.w2分别为通带的下限频率和上限频率b=fir1(n,Wn,ftype),当ftype=high 时,可设计高通滤波器;当ftype=stop时,可设计带阻滤波器b = firl (n,Wn window ) ,参数window 用来指定的窗函数类型,默认值为hamming 窗,参数可以使用的窗口函数有boxcar、hamming 、blackman 、kasier 和chebwin.b=firl ( n , wn, ftype, window ) ,ftype参数用来决定滤波器的类型:参数window用来指定所使用的窗函数类型 这里需要注意的是,用firl 函数设计高通和低通池波器时,所使用的阶数n 为偶数,当输入的阶数n 为奇数时firl 函数会自动将阶数增加1 形成偶数。 fir2 函数的使用格式有以下几种:b = fir2 ( n ,f,m ,参数n 为滤波器的阶数b = fir2 ( n ,f,m ,window) ,参数f 为频率点矢量,f 属于0,l ,对应于0.5 fs.矢量f 按升序排列,且第一个元素必须为0 ,最后一个必须为l ,并可以包含重复的频率点b = fir2 ( n ,f,m ,npt ) ,参数m 为幅度点矢量,在矢量m 中包含了与f 相对应的期望得到的滤波器幅度b = fir2 (n ,f,m ,npt,window ) ,参数window用来指定所使用的窗函数类型,其默认为汉明( hamming )窗b = fir2 (n ,f,m ,npt,lap),参数npt 用来指定fir2函数对频率响应进行内插的点数b = fir2 (n ,f,m ,npt,lap, window ) ,参数laP 用来指定fir2 函数在重复频率点附近插入的区域大小2 最优化设计法Remez 函数可采用Parks 一Mcclellan 算法设计线性相位FIR 滤波器,Parks 一Mcclellan 算法使用Remez 交换算法和chebyshev 逼近理论来设计最优拟合滤波器,这种滤波器使期望频率响应与实际频率响应之间的最大误差最小,使其频率响应呈现出等波形特性,因此有时也称为等波纹滤波器。由于这种滤波器具有等波纹特性,因此在其冲激响应的头部和尾部会表现出不连续性。remez 函数的使用格式有以下几种:b=remez(n,f,a),可得到一个n 阶FIR 讯数字滤波器,其幅频特胜由f 和a 指定f 是频带边缘频率矢量,且f 属于0 , 1 ,当f=1 时相当于n(Nyquist 频率)。矢量f 按升序排列,且第一个元素必须为0。最后一个必须为1 。a 是频率矢量f 处的期望幅值响应。f 和a 的长度必须相等,而且为偶数。b=remez(n,f,a,w),可利用加权矢量w 对各频率段的误差进行加权处理,w 的长度是f 和a 长度的一半,用以指定各频率段的权值。b=remez(n,f,a,ftype )和b=remez(n,f,a,w, ftype) ,可指定滤波器的类型,当ftype=hilbert时,设计的滤波器为奇对称的线性相位滤波器(型和型).当ftype=differentiator 时,采用了特殊的加权技术设计型和型滤波器。n,f0,a0,w = remezord (f,a,dev ) ,可找到近似的阶n ,归一化频带边缘矢量f0 、频带内辐值响应矢量匀及加权矢量w ,使由remez 函数构成的滤波器满足f,a 及dev 指定的性能要求。其中f 和a 分别指定频段的边缘矢量与相应的幅值响应,dev 用于指定各频带允许的偏差 n , f0 ,a0,w=remezord ( f , a , dev,fs ) ,可指定取样频率fs , fs 的缺省值为2Hz .六 设计步骤1 利用MATLAB 来确定FIR 滤波器的参数2 启动CCS ,在CCS 中建立一个汇编源文件、建立一个C 源文件和一个命令文件,并将这三个文件添加到工程,再编译并装载程序3 设置波形时域观察窗口,得到其滤波前后波形变化图;4 设置频域观察窗口,得到其滤波前后频谱变化图。七 利用MATLAB 来确定FIR 滤波器的参数用双线性法设计低通滤波器,并确定FIR 滤波器的参数:fp=1000;fc=1200;as=100;ap=1;fs=22000;wp=2*fp/fs;wc=2*fc/fs; n,wn=ellipord(wp,wc,ap,as); b,a=ellip(n,ap,as,wn); freqz(b,a,512,fs); 八 源程序1、汇编源文件.global _fir,_init,_B,_outdata_fir bset frct amov #_B,xdp mov #_B,cdp mov t0,ac0 sub #1,ac0 mov ac0,mmap(csr) add ac0,ar0 mov #0,ac0 rpt csr macmz *ar0-,*cdp+,ac0 mov hi(ac0),t0 ret_init mov mmap(t0),ac0 sub #1,ac0 mov ac0,ar7 rptz ac0,ar7 mov ac0,*ar0+ ret_outdata mov t1,ac0 sub #2,ac0 mov ac0,mmap(csr) add ac0,ar0 rpt csr delay *ar0- mar *ar0+ mov t0,*ar0 ret2、C 源文件extern int fir(int *,int);extern int init(int *,int#include s.h#include math.h#define signal_1_f 200#define signal_2_f 620#define signal_sample_f 2000#define pi 3.1415926#define coff_L 23#define bufer_L 256int data_inbufer_L;int outbufer_L ;int firout;int xcoff_L+1;int k=0;int bufer=bufer_L;);extern int outdata(int *,int,int);void inputwave();void main()inputwave();init(x,BL);while(1)x0=data_ink;firout=fir(x,BL);outdata(out,firout,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 .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、设置频域观察窗口,得到其滤波前后频谱变化图滤波前频谱图滤波后频谱图十 设计总结通过这次DSP课程设计,我初步掌握和熟悉了数字滤波器的设计过程、其DSP实现原理与CCS的使用方法。数字滤波是语音处理、图像处理、模式识别、频谱分析等应用的基本处理算法。用DSP 实现FIR数字滤波,具有稳定性好、准确度高、灵活性好、不受环境影响等优点。这次DSP课程设计,加强了我动手、思考和解决问题的能

温馨提示

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

评论

0/150

提交评论