DSP课程设计(论文)-FIR滤波器设计.doc

上传人:小小飞 文档编号:3901966 上传时间:2019-10-09 格式:DOC 页数:18 大小:231.87KB
返回 下载 相关 举报
DSP课程设计(论文)-FIR滤波器设计.doc_第1页
第1页 / 共18页
DSP课程设计(论文)-FIR滤波器设计.doc_第2页
第2页 / 共18页
DSP课程设计(论文)-FIR滤波器设计.doc_第3页
第3页 / 共18页
DSP课程设计(论文)-FIR滤波器设计.doc_第4页
第4页 / 共18页
DSP课程设计(论文)-FIR滤波器设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《DSP课程设计(论文)-FIR滤波器设计.doc》由会员分享,可在线阅读,更多相关《DSP课程设计(论文)-FIR滤波器设计.doc(18页珍藏版)》请在三一文库上搜索。

1、课程设计说明书1 FIR滤波器设计概述1.1 设计背景在许多数字信号处理系统中,FIR滤波器是最常用的组件之一,它完成信号预调、频带选择和滤波等功能。FIR滤波器在截止频率的边沿陡峭性能虽然不及11R滤波器,但是,考虑到FIR滤波器严格的线性相位特性和不像IIR滤波器存在稳定性的问题,FIR滤波器能够在数字信号处理领域得到广泛的应用。数字滤波器(Digital Filter,简称为DF)是指用来对输入信号进行滤波的硬件和软件。所谓数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的器件。数字滤波器和模拟滤波器相比,因为信号的形式和实现滤波的方法不同,数字滤波器具有

2、比模拟滤波器精度高、稳定、体积小、重量轻、灵活、不要求阻抗匹配等优点。对于一般的数字滤波器,按照单位冲激响应可分为无限长冲激响应IIR系统和有限长冲激响应FIR系统。在FIR系统中,则用一个有理多项式表示的系统函数去逼近所需要的频率响应,即其单位冲激响应h(n)在有限个n值处不为零。FIR滤波器则可在幅度特性随意设计的同时,保证精确、严格的线性相位特性。这在要求相位线性信道的现代电子系统,如图像处理、数据传输等波形传递系统中,是具有很大吸引力的。而且,其单位冲激响应是有限长的,不存在不稳定的因素,并且可用因果系统来实现。相较于IIR滤波器, FIR滤波器有以下的优点:可以很容易地设计线性相位的

3、滤波器。 线性相位滤波器延时输入信号,却并不扭曲其相位。实现简单。 在大多数DSP处理器, 只需要对一个指令积习循环就可以完成FIR计算。在实际中,所有的DSP滤波器必须用有限精度实现,而在IIR滤波器中使用有限精度会产生很大的问题,由于采用的是反馈电路,因此IIR通常用非常少的bit实现,设计者就能解决更少的与非理想算术有关的问题。可以用小数实现。 不像IIR滤波器,FIR滤波器通常可能用小于1的系数来实现。当使用定点DSP的时候,这也是一个考虑因素,它能使得实现更加地简单。1.2设计要求采用汇编语言针对DSP芯片设计一个15阶FIR低通滤波器,截止频率为0.6(归一化后的)。设计要求如下:

4、1. 在Mtalab中首先设计符合要求的滤波器,并得到滤波器参数,和该滤波器的幅频特性和相频特性。2. 然后编写程序,在CCS软件环境下编写DSP程序,分别用方波和正弦波验证滤波器的设计。3. 与MATBLE中设计的滤波器,进行对比研究。2 系统开发平台与环境CCS(Code Composer Stdio)是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面,提供环境配置、源文件编辑、程序调试、跟踪和分析等工具,可以帮助用户在一个软件环境下完成编辑、编译、链接、调试和数据分析等工作。CCS有两种工作模式,即软件仿真器和硬件在线编程。软件仿真器工作模式可以

5、脱离DSP芯片,在PC上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。硬件在线编程可以实时运行在DSP芯片上,与硬件开发板相结合进行在线编程和调试应用程序。CCS工作环境如下图1所示:图1 CCS工作环境CCS包含了源代码编辑器、工程管理器、编译器、链接器和调试器,包含了DSP/BIOS插件及API函数和RTDX插件、主机接口及API函数,它们组合完成对工程的设计及开发。在计算机端,用户使用源代码编辑工具来编写源代码文件。用户使用配置工具来定义用户程序中使用的对象,然后使用编译器和链接器来生成使用可执行代码,并通过JTAG接口将可执行代码下载到目标系统中。DSP分析工具允许用户在C

6、CS集成开放环境中检测目标系统中的CPU负载,定时,日志,线程图等信息,这需要JTAG接口和RTDX插件的支持。3 FIR设计过程3.1 FIR滤波器的设计流程图 定义16位空间xn,a0;256位空间kong,jian将table值给a0空间,table1值给kong空间 将kong空间的首16个数据给xn;并分别 将AR3,AR4指向a0和xn的空间尾地址设置循环缓冲区长度BK为16位,AR0赋值为-1,并将AR5指向kong空间首地址将xn和a0中的数据进行乘累加运算,结果给jian空间,AR5指向地址自加1将AR2指向的kong空间的下一个数据给AR3指向的内容结束开始3.2 FIR滤

7、波器的设计原理有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件。可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。FIR滤波器无反馈回路,是一种条件稳定系统,可以设计成具有线性相位特性。设FIR滤波器的系数为h(0)、h(1)、h(2)、h(3)h(N-2)、h(N-1);X(n)表示滤波器在n时刻的输入,则n时刻的输出为: FIR数字滤波器的结构如图2所示:Z-1Z-1Z-1Z-1x(n)y(n)h(1)h(0)h(2)h(N-2)h(N-1)图2 数字滤波器的结构

8、框图3.3 FIR滤波器的设计方法本次设计的基本思路是利用CCS软件完成一个15阶FIR的低通滤波器的设计,并根据傅里叶级数知,周期信号可以由若干离散频率的正弦波的叠加形成,通过对方波和不同谐波正弦波的叠加的滤波,完成对高频的滤除,剩下一次基波正弦波。其中在CCS软件中实现的两个不同长度的序列的时域卷积,即实现的是频域中的低通滤波。FIR低通滤波器的时域参数,不同正弦波的叠加所产生的序列,以及方波的序列参数均由MATLAB软件平台实现。通过加载到CCS编程过程中开辟的数据空间,由卷积程序实现滤波过程。实现滤波之后需要对所滤出的波形及数据进行检验,可通过CCS软件所提供的频谱进行分析;滤波之后的

9、数据可通过与MATLAB卷积后的设计数据进行对比检验设计是否正确和符合设计要求。 本设计采用循环缓冲区法:循环缓冲区法特点如下:1 对于N级FIR滤波器,在存储区中开辟一个N单元的缓冲区(滑窗),用来存放最新的N个输入样本;2 从最新样本开始取数;3 读完最后一个样本(最老样本)后,输入最新样本来代替最老样本,而其他数据不变;4 用片内BK(循环缓冲区长度)寄存器对缓存区进行间接寻址,使循环缓冲区首尾相邻。4系统软件设计4.1用MATLAB确定FIR滤波器参数MATLAB确定滤波器程序如下f=0 0.6 0.6 1;m=1 1 0 0;b=fir2(15,f,m)freqz(b,512,100

10、0)由上面程序在MATLAB软件运行的15级系统函数所对应的时域系数为 滤波器的幅频特性和相频特性如图3所示图3 滤波器的幅频特性和相频特性4.2用MATLAB确定不同正弦波叠加波形及方波参数由MATLAB确定滤波器程序如下b=fir1(15,0.6);freqz(b,1);figure(1);h1,w1=freqz(b,1);figure(2);title(频率特性)plot(w1/pi,20*log10(abs(h1);axis(0,1,-100,20);grid;xlabel(归一化频率/p)ylabel(幅度/dB)figure(3)x=0:2*pi/1024:2*pi;x1=4*sq

11、uare(1*pi*40*x);y1=sin(1*x*2*pi+pi/6);y2=sin(100*x*2*pi);y3=y1+y2;y4=conv(y3,b);x2=conv(x1,b);4.3用方波和正弦波验证滤波器设计 4.3.1 用方波验证滤波器设计由上述程序得MATLAB验证验证滤波器波形如图4所示:图4 方波分解的正弦基波 由运行CCS所得滤得的正弦波如图5所示:图5 由方波滤出基频正弦波 由CCS查看方波频谱如图6所示:图6 方波频谱 滤出的方波基波频谱如图7所示:图7 方波基波频谱频谱分析:由图6可知方波的傅里叶级数分解成不同的离散频率的正弦波的叠加,在归一化后频率为0、0.12

12、5、0.250,、0.375及基频0.125的整数倍处分别存在不同频率的正弦波的频谱。经过DSP程序滤波后的波形为基频正弦波,由图7可知只在0.125处存在频谱,即实现了将高频滤出,将低频滤出的目的。同MATLAB软件运行结果一致。4.3.2 用正弦波验证滤波器设计由MATLAB验证不同频率正弦波叠加滤出波形如图8所示:图8 正弦波叠加波形 由运行CCS所得滤得的正弦波如图9所示图9 不同频率正弦波叠加滤出低频正弦波 不同频率正弦波叠加后频谱如图10所示图10 不同频率正弦波叠加后频谱 滤出的低频正弦波频谱如图11所示:图11 滤出的低频正弦波频谱分析:由图10可知不同频率正弦波的叠加可分解成

13、不同的离散频率。在归一化后频率为200rad/s、8000rad/s处分别存在正弦波的频谱。经过DSP程序滤波后的波形为低频正弦波,由图11可知只在200rad/s处存在频谱,即实现了将高频滤出,将低频滤出的目的。同MATLAB软件运行结果对比知结果一致。5设计总结本次课程设计是FIR数字滤波器的设计,是在上学期DSP原理即数字信号处理理论知识的基础上,对DSP芯片的首次完整应用。通过完整的实践过程,对DSP芯片组成的基本系统的相关电路有了比较深的认识,熟悉了DSP芯片的系统设计和应用开发流程,并利用图书馆、网络、询问同学等方式查找资料和解决相关的难题。数字滤波器是DSP的典型应用,学会了有助

14、于触类旁通,利于进一步的学习研究,能做到理解其他基于DSP的系统的功能和工作原理。掌握了基于DSP的应用开发,开阔了视野,增长了知识,是进入现代数字信号处理领域重要技能,乃至大规模集成电路的开发也是会用到的基础,今后要予以重视并积极努力去学习。回想这几天实践过程,真的很有感触。的确是这样,从初学DSP汇编语言到今天可以简单但是独立的运用;从不知道怎么解决一个简单的语法错误,到今天可以清楚地了解复杂语句之间的工作过程,进步源于一点一滴的积累,这或许正是我们这次独立地完成课程设计最大的收获。回顾整个FIR数字滤波器的设计过程,感慨很幼稚但也有属于自己的深刻。由于DSP初次应用的不甚了解,真的感觉自

15、己走了不少的弯路。最主要的就是对实验思路的不了解。本次设计结合了CCS和MATLAB软件实验平台,真正了解了设计的过程,思路也变得相对简易和明确。当然,真正的动手去做才发现要明白的东西绝不仅仅是书上的那点东西,很多实践上东西,如果真正的明白了,比理论上弄懂要深刻的多。比如在编写程序的过程中,对卷积的编程必须基于对理论知识的深刻了解,同时实践对理论也具有能动的反作用,加深对卷积问题的理解。只有注意积累每次的体会和错误,下次碰到该注意的地方才懂得小心,碰到出过错误的地方才会格外注意不要再犯同样的错误,这种方法应该适用做任何一件事。在设计中遇到一些困难和问题,在向老师请教和与同学的讨论中,解决了问题

16、,觉得很有收获。当你用心的去做一件事的时候,这件事就不会轻易的用不知对错的结果去应付你,就像你不会去拿这样的态度去对待他,做一件事和想一件事也不会是一样,如果当时我只是停留在第一天的空想,我就不会在编程和仿真的过程中发现和改正那么多的错误。实践之所以高于理论,或许正是因为它为我们提供了更多犯错误和改正错误的机会吧。最后衷心感谢老师的悉心指导,董老师的教导是我们前进的方向。参考文献1 范寿康 DSP技术与芯片北京:电子工业出版社2 万永格 数字信号处理的MATLAB实现北京:科学出版社,20073 程佩青 数字信号处理教程北京:清华大学出版社,20014 高西全 丁玉美等 数字信号处理北京:电子

17、工业出版社,20095 范寿康 伊 磊等 DSP原理及应用北京:电子工业出版社,20096 胡广书 现代数字信号处理教程北京:清华大学出版社,2005附录CCS汇编文件 .title example.asm .mmregs .def _mainxn .usect xn,16a0 .usect a0,16kong .usect kong,256jian .usect jian,256 .datatable: .word 33*32768/10000 .word -18*32768/10000 .word -106*32768/10000 .word 226*32768/10000 .word 1

18、62*32768/10000 .word -977*32768/10000 .word 601*32768/10000 .word 5096*32768/10000 .word 5096*32768/10000 .word 601*32768/10000 .word -977*32768/10000 .word 162*32768/10000 .word 226*32768/10000 .word -106*32768/10000 .word -18*32768/10000 .word 33*32768/10000table1: .word 5000,-1216,1555,-1245,9099

19、,10708,-2237,16728 .word 1968,6248,15429,1879,15919,7087,3366,18504 .word 26,13439,12152,1125,19527,3127,986316372 .word 37,18415,7104,5914,19059,358,15416,11229, .word 2327,19747,2036,11066,14747,-276,18279,4724 .word 6089,16961,-1506,14831,7844,1237,17356,-1267 .word 9888,10691,-2670,15700,228,415

20、8,12567,-5226, .word 12089,2503,-1544,12914,-6163,6938,4910,-6437 .word 11422,-5565,917,6757,-9906,8093,-3809,-5165, .word 7440,-11601,3250,-1484,-10488,6563,-11491,-2509 .word 732,-14366,4018,-9858,-8408,2160,-16353,14 .word -7238,-13626,2335,-16319,-4949,-4316,-17432,1019, .word -14462,-10165,-179

21、2,-19312,-1713,-11267,-14840,-253, .word -19052,-5484,-7413,-18229,-61,-16773,-9682,-3646, .word -19766,-1282,-12907,-13564,-643,-19167,-3679,-8118 .word -16394,1107,-16479,-6749,-3185,-17570,1391,-12071, .word -9820,1137,-16742,307,-6580,-12174,4246,-13877, .word -1761,-792,-13184,5796,-9271,-4216,

22、4482,-12432,5748 .word -3505,-6367,8551,-9796,4374,2651,-7560,10953 .word -5477,2193,8363,-7308,11530,23,-130,12880, .word -5384,10449,5984,-1914,15650,-1876,8157,11583, .word -2593,16416,2820,5296,16040,-1829,15252,8064, .word 2574,18741,422,12538,13079,636,19349,3894 .word 8890,17084,-60,17854,805

23、2,5043,19427,670, .word 14573,12188,1716,19707,2701,10092,15545,-519, .word 17836,5623,5159,17453,-1337,14065,8814,553, .word 17454,-717,8934,11557,-3052,15385,1059,3188, .word 13173,-5202,11416,3464,-2357,13149,-5738 .word 6028,5828,-6948,11243,-4818,-69,7465,-10026, .word 7531,-2874,-6050,7810,-11

24、309,2404,-513,-11116, .word 6527,-10841,-3487,1522,-14625,3581,-8968,-9345, .word 2659,-16197,-746,-6269,-14355,2444,-15778,-5898 .text_main: ssbx frct stm #a0,ar1 rpt #15 mvpd table,*ar1+ nop stm #kong,ar2 rpt #255 mvpd table1,*ar2+ nop stm #kong,ar2 stm #xn,ar6 rpt #15 ld *ar2+,a stl a,*ar6+ stm #

25、xn+15,ar3 stm #a0+15,ar4 stm #16,bk stm #-1,ar0 stm #jian,ar5fir: rptz a,#15 mac *ar3+0%,*ar4+0%,a nop sth a,*ar5+ bd fir mvdd *ar2+,*ar3+0% nop .endCCS链接器命令文件 vectors.obj example.obj -o example.out -m example.mapMEMORY PAGE 0: EPROM: org=0e000h,len=1000h VECS: org=0ff80h,len=0080h PAGE 1: SPRAM: or

26、g=0060h,len=0027h DARAM: org=0088h,len=1380h SECTIONS .text:EPROM PAGE 0 .data:EPROM PAGE 0 .bss:SPRAM PAGE 1 xn: align(32)DARAM PAGE 1 a0: align(32)DARAM PAGE 1 aaa: align(256)DARAM PAGE 1 yyy: align(256)DARAM PAGE 1 .vectors:VECS PAGE0 中断向量文件 .title vectors.asm .ref _main .sect .vectors B _main .e

27、ndMATLAB实现文件clear allb=fir1(15,0.6);freqz(b,1);figure(1);h1,w1=freqz(b,1);figure(2);title(频率特性)plot(w1/pi,20*log10(abs(h1);axis(0,1,-100,20);grid;xlabel(归一化频率/p)ylabel(幅度/dB)%产生测试用正弦信号和噪声信号figure(3)x=0:2*pi/1024:2*pi;x1=4*square(1*pi*40*x);y1=sin(1*x*2*pi+pi/6);y2=sin(100*x*2*pi);y3=y1+y2;y4=conv(y3,b);x2=conv(x1,b);subplot(6,1,1);plot(y1);subplot(6,1,2);plot(y2);subplot(6,1,3);plot(y3);subplot(6,1,4);plot(y4);subplot(6,1,5);plot(x1);subplot(6,1,6);plot(x2);18

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1