基于matlab的FIR和IIR滤波器详解_第1页
基于matlab的FIR和IIR滤波器详解_第2页
基于matlab的FIR和IIR滤波器详解_第3页
基于matlab的FIR和IIR滤波器详解_第4页
基于matlab的FIR和IIR滤波器详解_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

TOC\o"1-5"\h\z\o"CurrentDocument"1引言 1MATLAB的介绍 2CCS的介绍 2\o"CurrentDocument"2设计要求 4FIR滤波器设计 5FIR滤波器的Matlab设计 5FIR滤波器参数的设计 5检验方波的Matlab设计 6正弦叠加信号的Matlab设计 7FIR滤波器的CCS设计 8FIR滤波器的CCS设计程序 10CCS波形仿真图 12IIR滤波器设计 15IIR滤波器的Matlab设计 15IIR滤波器参数的设计 15检验方波的Matlab设计 16正弦叠加信号的Matlab设计 17IIR滤波器的CCS设计 19IIR滤波器的CCS程序设计 19CCS波形仿真图 23\o"CurrentDocument"结束语 2.5\o"CurrentDocument"参考文献 2.6课程设计说明书课程设计说明书#1引言数字信号处理(DigitalSignalProcessing),或者说对信号的数字处理(包括对信号进行采集、变换、滤波、估值、增强、压缩、识别等),是20世纪60年代前后发展起来的并广泛应用于多领域的新兴学科。当今,数字信号处理技术正飞速发展,它不但自成一门学科,更是以不同形式影响和渗透到其他学科;它与国民经济息息相关,与国防建设紧密相连;它影响或改变着我们的生产、生活方式,因此受到人们普遍的关注。数字化、智能化和网络化是当代信息技术发展的大趋势,而数字化是智能化和网络化的基础,实际生活中遇到的信号多种多样,例如广播信号、电视信号、雷达信号、通信信号、导航信号等等。上述这些信号大部分是模拟信号,也有小部分是数字信号。模拟信号是自变量的连续函数,自变量可以是一维的,也可以是二维或多维的。大多数情况下一维模拟信号的自变量是时间,经过时间上的离散化(采样)和幅度上的离散化(量化),这类模拟信号便成为一维数字信号。因此,数字信号实际上是数字序列表示的信号,语音信号经采样和量化后,得到的数字信号是一个一维离散时间序列;而图像信号的经采样和量化后,得到的是数字信号是一个二维离散空间序列。数字滤波技术是数字信号分析、处理技术的重要分支。无论是信号的获取、传输,还是信号的处理和交换都离不开滤波技术,它对信号安全可靠和有效灵活地传输时至关重要的。在所有的电子系统中,使用最多技术最复杂的要算数字滤波器了。数字滤波器的优劣直接决定产品的优劣。的介绍MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,代表了当今国际科学计算软件的先进水平。主要应用于工程计算、信号处理与通讯、图像处理、信号检测、金融建模设计与分析、控制系统设计以及计算生物学等众多应用领域。MATLAB是矩阵实验室(MatrixLaboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。当前流行的MATLAB5.3/Simulink3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox)。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。的介绍CCS软件简介CCS(CodeComposerStudio)代码调试器是一种合成开发环境。它是一种针对标准TMS320调试器接口的交互式方法。CCS目前有CCS1.1,CCS1.2和CCS2.0等三个不同时期的版本,又有CC2000(针对C2XX),CCS5000(针对C54XX)和CCS6000(针对C6X)三个不同的型号。我们所使用的是CCS50002.2的版本。CCS5000具有以下特性:(1)TI编译器的完全集成的环境:CCS5000目标管理系统,内建编辑器,所有的调试和分析能力集成在一个Windows环境中。(2)对C和DSP汇编文件的目标管理:目标编辑器保持对所有文件及相关内容的跟踪。它只对最近一次编译中改变过的文件重新编译,以节省编译时间。(3)高集成的编辑器调整C和DSP汇编代码:CCS5000的内建编辑器支持C和汇编文件的动态语法加亮显示。使用户能很容易地阅读代码和当场发现语法错误。编辑和调试时的后台编辑:用户在使用编译器和汇编器时没有必要退出系统到DOS环境中,因为CCS5000会自动将这些工具装载在它的环境中。在其窗口中,错误会加亮显示只要双击错误就可以直接到达出错处。在含有浮点并行调试管理器(PDM)的原有的MS窗口下支持多处理器CCS5000在Windows95和Windows-me中支持多处理。PDM允许将命令传播给所有的或所选择的处理器。在任何算法点观察信号的图形窗口探针:图形显示窗口使用户能够观察时域或频域内的信号。对于频域图,FFT在主机内执行,这样就可以观察所感兴趣的部分而无须改变它的DSP代码。图显示也可以同探针连接,当前显示窗口被更新时,探针被指定,这样当代码执行到达该点时,就可以迅速地观察到信号。文件探针在算法处通过文件提取或加入信号或数据:CCS5000允许用户从PC机读或写信号流。而不是实时的读信号,这就可以用已知的例子来仿真算法。图形分析:CCS5000的图形分析能力在其环境中是集成的。(8)在后台(系统命令)执行用户的DOS程序:用户可以执行CCS5000中的DOS程序,并将其输出以流水方式送到CCS5000的输出窗口。且允许用户将应用程序集成到CCS5000。技术状态观察窗口:CCS5000的可视窗口允许用户进入C表达式及相关变量。结构、数组、指针都能很简单地递归扩展和减少,以便进入复杂结构。代数分解窗口:允许用户选择查看写成代数表达式的C格式,提高可读性。(11)目标DSP上的帮助:DSP结构和寄存器上的在线帮助可以使用户不必查看技术手册。(12)用户扩展:扩展语言(GEL)使得用户可以将自己的菜单项加到CCS5000的菜单栏中。2设计要求本次课设,主要针对DSP芯片进行程序设计,要求采用会变语言编写程序。通过此次课程设计,熟悉DSP芯片的硬件结构,加深对DSP芯片的认识;掌握对DSP芯片编程方法,掌握间接寻址方法的使用方法,重点掌握算法的设计。要求采用汇编语言针对DSP芯片设计低通滤波器:1给出低通滤波器技术指标,在Matlab里先设计符合要求的低通滤波器,并得到滤波器参数,并得到该滤波器的幅频特性和相频特性;2FIR低通滤波器设计,给出设计流程图,在CCS软件环境下编写程序;3分别用方波和正弦波验证FIR低通滤波器的设计;4IIR低通滤波器设计,给出程序流程图,在CCS软件环境下编写程序;5分别用方波和正弦波验证IIR低通滤波器的设计;6与Matlab中设计的滤波器,进行对比研究。滤波器设计滤波器的 设计FIR结构中的延迟Z-1在程序中实现是数据在存储器中的滑动,这对一个L阶的FIR数字滤波器来说,就是要求在存储器中开辟一个L个样本并进行乘累加运算。这在DSP中可以用两种方法来实现该缓冲区。对于线性缓冲区来说,每当DSP读入一个样本后都将此样本向后移动,读完最后一个样本后,最前面的样本(最老的)被推出缓冲区,并输入最新的样本至缓冲区顶部。线性缓冲区的存储器延时可以由具有数据移动的DMOV指令来实现,它需要将缓冲区置于内部DARAM块中;对于循环缓冲区,每当输入新样本时,以新样本改写区中最老的样本,而缓冲区中的其他样本不需要其他样本移动。循环缓冲区可采用循环寻址技术来实现,它不需要必须定位在DARAM块中,但需要适当的缓冲区对准以满足循环寻址的要求。本次课设用的是循环寻址,下面主要介绍一下循环寻址的方法。循环缓冲实现延时的特点是:(1)实现N阶FIR数字滤波器时,需要在数据存储器中开辟一个称为滑窗的N个单元的缓冲区,滑窗中存放最新的N个样本。当每次输入新样本时以新的样本改写滑窗中最老的样本,而滑窗其他的数据不需要移动。(3)利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,循环缓冲区地址首位相邻。滤波器参数的设计FIR滤波器的参数用Matlab来设计,其程序为:>>N=15; %滤波器的阶数Wn=0.1 %滤波器的截止频率b=fir1(N,Wn)freqz(b,512,1000)%滤波器的幅频特性和相频特性Wn=0.1000b=Columns1through90.0034 0.0074 0.0188 0.0395 0.0677 0.09840.1248 0.1400 0.1400Columns10through160.1248 0.0984 0.0677 0.0395 0.0188 0.00740.0034滤波器的幅频特性和相频特性如图3-1和图3-2所示。图3-1滤波器的幅频滤波器的幅频特性和相频特性如图3-1和图3-2所示。图3-1滤波器的幅频特性图(wmmpn-E6EIAI-600 1 1 1 1 1 1 1 1 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1NormalizedFrequency(班rad/sample)图3-2滤波器的相频特性图将 个点的复频响应值均匀分布在 n上,便得到所设计的 低通滤波器的幅值特性如上图。检验方波的 设计检验方波的Matlab程序为:figure(4)x=0:2*pi/1024:2*pi;x1=2*square(1*pi*10*x);x2=conv(x1,b);subplot(2,1,1);plot(x1);axis([050*pi-33]);gridon;subplot(2,1,2);plot(x2);axis([050*pi-33]);

gridon;输出方波如3-4所示-300501001502-10 50 100 150-300501001502-10 50 100 150图3-4方波信号图由图可知,经低通滤波后方波信号变为等峰峰值为和周期的正弦信号。正弦叠加信号的 设计正弦叠加信号的 程序为:输出正弦叠加信号的波形如图3-所5示图3-5正弦叠加信号101-00图3-5正弦叠加信号101-00上图由上向下,第一个图是低频正弦波,第二个图是高频正弦波,第三个图是低频与高频的叠加,最后一个是叠加后的正弦波经低通滤波器后出现的波形,基本与低频正弦信号相同。滤波器的设计根据Matlab中设计的滤波器参数,也就是我么需要的H(n),将它们用Q15的定标方式写进汇编程序。程序编写完成后,加载Matlab中生成的*4前文件,就可以得到滤波之后的图像。这里同样以方波和正弦波进行检验。其中生成方波的*4就文件程序如下x=0:2*pi/1024:2*pi;x1=2*square(2*pi*x);plot(x1);axis([0,1000,-4,4]);xlout=x1/max(x1);x1t0_ccs=round(32767*xlout);fid=fopen('square.dat','w');fprintf(fid,'1651102100c8\n');fprintf(fid,'%d\n',x1t0_ccs);fclose(fid)生成正弦波的*.dat文件程序如下figure(3)x=0:2*pi/1024:2*pi;y1=sin(1*x*2*pi+pi/6);y2=sin(100*x*2*pi);y3=y1+y2;plot(y3);xout=y3/max(y3);%归一化xto_ccs=round(32767*xout)fid=fopen('sin.dat','w'); %打开文件fprintf(fid,'1651102100c8\n');%输出文件头fprintf(fid,'%d\n',xto_ccs);%输出fclose(fid);

滤波器的 设计程序滤波器的设计流程图如下图3-6FIR设计流图根据上图编写程序主程序fir.asm如下.title"fir.asm".mmregs.global_c_int00Hn:.usect"Hn",16BUF:.usect"BUF",16Xn: .usect"Xn",200

nopYn: .usect"Yn",240.dataTABLE:.word34*32768/10000, 74*32768/10000,188*32768/10000,395*32768/10000.word677*32768/10000, 984*32768/10000, 1248*32768/10000,1400*32768/10000.word 1400*32768/10000, 1248*32768/10000,984*32768/10000,677*32768/10000.word 395*32768/10000, 188*32768/10000, 74*32768/10000,34*32768/10000.textc_int00:SSBXFRCTSTM#Hn,AR5RPT#15MVPDTABLE,*AR5+STM#BUF,AR4RPTZA,#15STLA,*AR4+STM#Xn,AR3STM#Yn,AR2STM#(Hn+15),AR5;STM#(BUF+15),AR4STM-1,AR0LD#BUF,DPMVDD*AR3+,*AR4STM#240,BRC;AR5指向冲激响应;AR5指向冲激响应;AR4指向缓冲区间;AR3指向输入;AR4指向输出;向缓冲区送数;卷积算法MAC*AR4+0%,*AR5+0%,ASTHA,*AR2+TABLE:MVDD*AR3+,*AR4+0%.end链接配置文件fir.asm程序如下-ofir.out-mfir.mapMEMORY{PAGE0:EPROM: org=0E000H len=1000HVECS: org=0FF80H len=0080HPAGE1:SARAM: org=0060H len=0040HDARAM: org=0101H len=1480H}SECTIONS{.text:>EPROMPAGE0.vectors:>VECSPAGE0.data:>EPROMPAGE0.bss:>SARAMPAGE1Hn:align(128){}>DARAMPAGE1BUF:align(128){}>DARAMPAGE1Xn:>DARAMPAGE1Yn:>DARAMPAGE1}中断向量表文件vectors.asm程序如下.title"vectors.asm".ref_c_int00.sect".vectors"B_c_int00.end波形仿真图CCS中方波信号和滤波后波形如图3-7所示:图3-7方波波形及滤波后波形图

CCS中方波信号的相频特性如图CCS中方波信号的相频特性如图3-8所示:图3-8方波信号的相频特性波形图CCS中方波信号滤波后的相频特性如图3-9所示:1.L1.L图3-9方波信号滤波后的相频特性波形图由于方波是由许多个正弦波叠加而得到的,所以经过fir低通滤波器后,留下的是低频正弦波。

CCS中正弦叠加信号与滤波后波形如图3-10所示:图3-10正弦叠加信号波形及滤波后波形图CCS中正弦叠加信号的相频特性如图3-11所示:图3-11正弦叠加信号的相频特性图CCS中正弦叠加信号滤波后的相频特性如图3-12所示:图3-12正弦叠加信号滤波后的相频特性图通过以上各图可看出当输入信号为方波时,输出信号基本为正弦波;当输入信号为叠加正弦波时,输出为低频正弦波。这说明滤波器起到了较好的滤波效果,符合设计要求。通过Matlab仿真和CCS仿真滤波效果比较,DSP程序的滤波效果要好于Matlab的滤波效果。滤波器设计滤波器的 设计数字滤波器的输入x[k]和输出y[k]之间的关系可以用如下常系数线性差分方程及其z变换描述:y[k]=£ax[k-i]+£by[k-i]ii=1ii=1系统的转移函数为:Xbz-kk k=1 1+Xaz-kkk=0设计一个IIR滤波器就是要根据所给定的指标确定上式中的分子和分母系数。设计IIR数字滤波器可以先设计一个合适的模拟滤波器,然后变换成满足给定指标的数字滤波器。这种方法很简便,因为模拟滤波器有多种设计方法,如巴特沃思型滤波器、切比雪夫型滤波器、椭圆函数型滤波器等,并且已经具有很多简单而又现成的设计公式。采用这种方法需要把s平面映射到z平面,使模拟系统函数H(s)变换成所需的数字滤波器的系统函数H⑵。映射方法主要有冲激响应不变法、阶跃响应不变法和双线性变换法。前两种方法会因为多值映射关系产生混叠失真,双线性变换法克服了这一缺点。双线性变换法的映射关系式是:1-z-1s=c 1+z-1本实验采用的是巴特沃思型滤波器。滤波器参数的设计IIR滤波器的参数用Matlab来设计,其程序为:所设计的IIR滤波器的幅相频特性如图4-1100)Bd(edutinga-3000-100-2000 50 100 150 200 250 300 350 400 450 500Frequency(Hz)-4000-100-200-30050 100 150 200 250 300 350 400 450 500Frequency(Hz)所设计的IIR滤波器的幅相频特性如图4-1100)Bd(edutinga-3000-100-2000 50 100 150 200 250 300 350 400 450 500Frequency(Hz)-4000-100-200-30050 100 150 200 250 300 350 400 450 500Frequency(Hz)图4-1IIR滤波器的幅相频特性图由上图可以看出所设计的IIR滤波器能够让频率较低的信号通过。检.2验方波的设计检验方波的Matlab程序为:2 1 1 1 1 1rVWWv--2 111110 50 100 150 200 250 300图4-2方波验证波形图由图可知当输入方波时均可以滤出低频成分实现低通滤波器的功能,滤波后呈现正弦波。正弦叠加信号的设计正弦叠加信号的程序为:低频正弦信号高频正弦信号叠加信号输出图像正弦叠加信号滤波前后的波形如图4-3所示100-1200 400600800 1000 12002 1 1 1 1 10c100-1200 400600800 1000 12002 1 1 1 1 10cr\r\C\r\/ -0V/ J \J\/-2 111110 200 400 600 800 1000 1200图4-3正弦叠加信号滤波前后波形图从上图可以看出低频正弦信号和高频正弦信号叠加后的信号经滤波后,得到低频的正弦信号,其幅值与频率和原始低频信号基本相同。

滤波器的设计根据Matlab中设计的滤波器参数,将它们用Q15的定标方式写进汇编程序。利用循环卷积编写程序后,加载Matlab中生成的*4前文件,就可以得到滤波之后的图像。这里以方波和正弦波进行检验。滤波器的 程序设计初始化是否还有待潴波数据先画出设计程序流程图如图4-4所示图4-4IIR滤波器设计流图滤波结束本次滤波结束待滤波数据个数减一初始化是否还有待潴波数据先画出设计程序流程图如图4-4所示图4-4IIR滤波器设计流图滤波结束本次滤波结束待滤波数据个数减一为原始信号和系数指定寄存器定义滤波器系数输入原始信号做滤波算法主程序IIR.asm如下.title"iir.asm".mmregs.def_c_intx.usect"x",4y .usect "y",4b0 .usect "b0",4a0 .usect "a0",4Xn: .usect "Xn",256Yn:.usect"Yn",256.datatable:.word0;数据初始化清零.word0.word0.word0.word0.word0.word1600*32768/10000;设定滤波器参数.word4800*32768/10000.word4800*32768/10000.word1600*32768/10000.word-494*32768/10000.word3340*32768/10000.word-45*32768/10000.text_c_int:ssbxfrctstm#x,ar1;ar1写入4rpt#2;循环下条语句3次mvpd#table,*ar1+;ar1清零stm#y,ar1;ar1写入4rpt#2mvpd#table+3,*ar1+;ar1清零stm#b0,ar1;ar1写入4rpt#3 ;循环下条语句3次mvpdtable+6,*ar1+;ar1指向table末尾并依次写入数据stm#a0,ar1;ar1写入4rpt#2mvpd#table+10,*ar1+stm#x+3,ar2stm#a0+2,ar3stm#y+2,ar4stm#b0+3,ar5stm#Xn,ar6%AR6指向输入stm#Yn,ar7 %AR7指向输出stm#4,bk %定义循环缓冲区长度为4stm#-1,ar0stm255,brciir:rptbnext-1ld*ar6+,astla,-1,*ar2mpy*ar2+0%,*ar5+0%,a %计算前向通道mac*ar2+0%,*ar5+0%,amac*ar2+0%,*ar5+0%,amac*ar2,*ar5+0%,amac*ar4+0%,*ar3+0%,a %计算反向通道mac*ar4+0%,*ar3+0%,amac*ar4+0%,*ar3+0%,amar*ar3+0% %修改AR3的位置stha,*ar4;输出结果Ynstha,*ar7+next:Bnext.end链接配置文件程序如下vectors.objiir.obj-oiir.out-miir.mapMEMORY{page0:rom1:org=0100h,len=1000h;设定各起始地址及存储空间长度rom2:org=2000h,len=0500hpage1:daram0:org=1000h,len=0500hdaram1:org=1500h,len=0010hdaram2:org=1600h,len=0010hdaram3:org=1700h,len=0010hdaram4:org=1800h,len=0010h}SECTIONS{.text:{}>rom1page0.data:{}>daram0page1x:{}>daram1page1y:{}>daram2page1b0:{}>daram3page

温馨提示

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

评论

0/150

提交评论