DSP滤波器的设计_第1页
DSP滤波器的设计_第2页
DSP滤波器的设计_第3页
DSP滤波器的设计_第4页
DSP滤波器的设计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计说明书目 录1引言12 matlab及ccs软件介绍2 2.1 matlab的介绍2 2.2 ccs的介绍23 fir 数字低通滤波器的设计43.1 fir滤波器参数设定4 3.1.1 输入方波matlab设计5 3.1.2 正弦叠加信号matlab设计63.2 fir滤波器的设计6 3.3 fir滤波器性能验证9 3.3.1 matlab的仿真验证9 3.3.2 ccs的仿真结果104 iir 数字低通滤波器的设计13 4.1iir滤波器设计流程图13 4.3 iir滤波器性能验证14 4.3.1 matlab的仿真验证14 4.3.2 ccs的仿真结果155设计总结18参考文献19

2、附录20271引言当今,数字信号处理(dsp:digtal signal processing)技术正飞速发展,它不但自成一门学科,更是以不同形式影响和渗透到其他学科:它与国民经济息息相关,与国防建设紧密相连;它影响或改变着我们的生产、生活方式,因此受到人们普遍的关注。数字滤波技术是数字信号分析、处理技术的重要分支2-3。无论是信号的获取、传输,还是信号的处理和交换都离不开滤波技术,它对信号安全可靠和有效灵活地传输是至关重要的。在所有的电子系统中,使用最多技术最复杂的要算数字滤波器了。数字滤波器的优劣直接决定产品的优劣。在数字信号处理中,滤波占有极其重要的地位。数字滤波是语音信号处理、图像处理

3、、模式识别、频谱分析等应用的基本处理算法。用dsp芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响等优点外,还具有灵活性好等特点。本设计的题目是低通滤波器的设计,主要针对dsp芯片进行程序设计,要求采用汇编语言编写程序。通过此次课程设计,熟悉dsp芯片的硬件结构,加深对dsp芯片的认识;掌握对dsp芯片编程方法,掌握间接寻址方法的使用,重点掌握算法的设计。要求采用汇编语言针对dsp芯片设计低通滤波器:1.给出低通滤波器技术指标,在matlab中首先设计符合要求的滤波器,并得到滤波器参数,并得到该滤波器的幅频特性和相频特性;2.fir低通滤波器设计,给出程序流程图,在ccs软件环境下编写

4、程序;3.分别用方波和正弦波验证fir低通滤波器的设计;4.iir低通滤波器设计,给出程序流程图,在ccs软件环境下编写程序;5. 分别用方波和正弦波验证iir低通滤波器设计;6.与matlab中设计的滤波器,进行对比研究。2 matlab及ccs软件介绍2.1 matlab的介绍matlab是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,代表了当今国

5、际科学计算软件的先进水平。主要应用于工程计算、信号处理与通讯、图像处理、信号检测、金融建模设计与分析、控制系统设计以及计算生物学等众多应用领域。matlab是矩阵实验室(matrixlaboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。 matlab的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用matlab来解算问题要比用c,fortran等语言完相同的事情简捷得多。 当前流行的matlab 5.3/simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(toolbox)。工具包

6、又可以分为功能性工具包和学科工具包。功能工具包用来扩充matlab的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。除内部函数外,所有matlab主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。2.2 ccs的介绍ccs软件简介ccs(code composer studio)代码调试器是一种合成开发环境。 它是一种针对标准tms320调试器接口的交互式方法。ccs目前有ccs1.1, ccs1.2 和ccs2.0等三个不同时期的版本,又有cc2000

7、 ( 针对c2xx ),ccs5000 ( 针对c54xx )和ccs6000 (针对c6x )三个不同的型号。我们所使用的是ccs50002.2的版本。 ccs5000具有以下特性: ti编译器的完全集成的环境: ccs5000目标管理系统,内建编辑器,所有的调试和分析能力集成在一个windows环境中。 对c和dsp汇编文件的目标管理: 目标编辑器保持对所有文件及相关内容的跟踪。它只对最近一次编译中改变过的文件重新编译,以节省编译时间。 高集成的编辑器调整c和dsp汇编代码: ccs5000的内建编辑器支持c和汇编文件的动态语法加亮显示。使用户能很容易地阅读代码和当场发现语法错误。 编辑和

8、调试时的后台编辑: 用户在使用编译器和汇编器时没有必要退出系统到dos环境中,因为ccs5000会自动将这些工具装载在它的环境中。在其窗口中,错误会加亮显示 只要双击错误就可以直接到达出错处。 在含有浮点并行调试管理器(pdm)的原有的ms窗口下支持多处理器ccs5000在 windows95和windows-me中支持多处理。pdm允许将命令传播给所有的或所选择的处理器。 在任何算法点观察信号的图形窗口探针:图形显示窗口使用户能够观察时域或频域内的信号。对于频域图,fft在主机内执行,这样就可以观察所感兴趣的部分而无须改变它的dsp代码。图显示也可以同探针连接,当前显示窗口被更新时,探针被指

9、定,这样当代码执行到达该点时,就可以迅速地观察到信号。 文件探针在算法处通过文件提取或加入信号或数据: ccs5000允许用户从pc机读或写信号流。而不是实时的读信号,这就可以用已知的例子来仿真算法。 图形分析: ccs5000的图形分析能力在其环境中是集成的。 在后台(系统命令)执行用户的dos程序: 用户可以执行ccs5000中的dos程序,并将其输出以流水方式送到ccs5000的输出窗口。且允许用户将应用程序集成到ccs5000。 技术状态观察窗口: ccs5000的可视窗口允许用户进入c表达式及相关变量。结构、数组、指针都能很简单地递归扩展和减少,以便进入复杂结构。 代数分解窗口: 允

10、许用户选择查看写成代数表达式的c格式,提高可读性 。 目标dsp上的帮助: dsp结构和寄存器上的在线帮助可以使用户不必查看技术手册。 3 fir 数字低通滤波器的设计3.1 fir滤波器参数设定 fir滤波器的参数用matlab来设计,其程序为:n=40; %滤波器的阶数wn=0.3 %滤波器的截止频率 b=fir1(n,wn)freqz(b,512,1000) %滤波器的幅频特性和相频特性 其运行结果为:wn = 0.3000 b = -0.0000 -0.0012 -0.0017 -0.0008 0.0020 0.0046 0.0036 -0.0025 -0.0101 -0.0110 0

11、.0000 0.0175 0.0259 0.0105 -0.0253 -0.0552 -0.0428 0.0312 0.1483 0.2566 0.3006 0.2566 0.1483 0.0312 -0.0428 -0.0552 -0.0253 0.0105 0.0259 0.0175 0.0000 -0.0110 -0.0101 -0.0025 0.0036 0.0046 0.0020 -0.0008 -0.0017 -0.0012 -0.0000 滤波器的幅频特性和相频特性如3-1所示:图2-1 滤波器的相频特性图3-1 fir滤波器的幅相频特性3.1.1 输入方波matlab设计 方波

12、的matlab程序为:t=0:0.25:50;x=square(pi*t);plot(x);xout=x/max(x); %归一化 xto_ccs=round(32767*xout) fid=fopen(square.dat,w); %打开文件 fprintf(fid,1651 1 229 1 201n); %输出文件头 fprintf(fid,%dn,xto_ccs); %输出 fclose(fid); %关闭文件 输出方波如图3-2所示:图3-2 方波信号3.1.2 正弦叠加信号matlab设计 正弦叠加信号的matlab程序为:f11=500; f12=9000; fs=20000; %

13、采样频率 n=300 %数据个数 t=1/fs; %采样周期 n=-n/2:n/2; x11=0.5*sin(2*pi*f11*n*t); x12=0.5*sin(2*pi*f12*n*t); x_base=(x11+x12); plot(x_base); %正弦叠加信号的波形yff=abs(fft(x_base) df=n*(fs/n) xout=x_base/max(x_base); %归一化 xto_ccs=round(32767*xout) fid=fopen(input.dat,w); %打开文件 fprintf(fid,1651 1 229 1 301n); %输出文件头 fpri

14、ntf(fid,%dn,xto_ccs); %输出 fclose(fid); 输出正弦叠加信号的波形如图3-3所示:图:3-3 正弦叠加信号3.2 fir滤波器的设计 fir结构中的延迟z-1 在程序中实现是数据在存储器中的滑动,这对一个l阶的fir数字滤波器来说,就是要求在存储器中开辟一个l个样本并进行乘累加运算。这在dsp中可以用两种方法来实现该缓冲区。对于线性缓冲区来说,每当dsp读入一个样本后都将此样本向后移动,读完最后一个样本后,最前面的样本(最老的)被推出缓冲区,并输入最新的样本至缓冲区顶部。线性缓冲区的存储器延时可以由具有数据移动的dmov指令来实现,它需要将缓冲区置于内部dar

15、am块中;对于循环缓冲区,每当输入新样本时,以新样本改写区中最老的样本,而缓冲区中的其他样本不需要其他样本移动。循环缓冲区可采用循环寻址技术来实现,它不需要必须定位在daram块中,但需要适当的缓冲区对准以满足循环寻址的要求。本次课设用的是循环寻址,下面主要介绍一下循环寻址的方法。循环缓冲实现延时的特点是:1 实现n阶fir数字滤波器时,需要在数据存储器中开辟一个称为滑窗的n个单元的缓冲区,滑窗中存放最新的n个样本。2 当每次输入新样本时以新的样本改写滑窗中最老的样本,而滑窗其他的数据不需要移动。3 利用片内bk(循环缓冲区长度)寄存器对滑窗进行间接寻址,循环缓冲区地址首位相邻。 其程序流程图

16、3-4所示:定义41位空间li,shuai;200位空间in将li值给in空间 将li空间的首41个数据给in;并分别 将ar3,ar4指向buf和li的空间尾地址设置循环缓冲区长度bk为41位,ar0赋值为-1,并将ar5指向xn空间首地址将li和shuai中的数据进行乘累加运算,结果给out空间,ar5指向地址自加1将ar2指向的in空间的下一个数据给ar3指向的内容结束开始图3-4 程序流程图3.3 fir滤波器性能验证3.3.1 matlab的仿真验证 matlab中输入为方波信号信号和叠加正弦信号时的输入输出信号波形如图3-5所示:图3-5 方波及正弦波滤波后波形 由 matlabd

17、所得仿真图可以看出,方波信号经过此滤波器后输出信号为单一频率的正弦波;而叠加的正弦信号通过此低通滤波器后,将高频的正弦波信号滤掉,只留下了频率最低的单一正弦波信号。因此可以看出,所设计的低通滤波器在 matlab 中能够很好地满足设计要求,实现低频通过,高频过滤的作用。3.3.2 ccs的仿真结果ccs中方波信号和滤波后波形如图3-6所示:图3-6 方波波形及滤波后波形图8 方波波形及滤波后波形ccs中方波信号的幅频特性如图3-7所示:图3-7 方波信号的幅频特性ccs中方波信号滤波后的幅频特性如图3-8所示图3-8 方波信号滤波的幅频特性ccs中正弦叠加信号与滤波后波形如图3-9所示:图3-

18、9 正弦叠加信号波形及滤波后波形ccs中正弦叠加信号的幅频特性如图3-10所示:图3-10正弦叠加信号的幅频、相频特性ccs中正弦叠加信号滤波后的幅频特性如图3-11所示:图3-11 正弦叠加信号滤波后的幅频特性 通过上图可看出当输入信号为方波时,输出信号基本为正弦波;当输入信号为叠加正弦波时,输出为低频正弦波。这说明滤波器起到了较好的滤波效果,符合设计要求。通过matlab仿真和ccs仿真滤波效果比较,可以看出用两种软件所得的仿真图基本一致,均证明了此滤波器达到了设计要求。同时也可以看出:dsp程序的滤波效果要好于matlab的滤波效果。 4 fir 数字低通滤波器的设计4.1iir滤波器设

19、计流程图由前面iir滤波器的设计原理确定运用双线性变换法设计iir滤波器的流程图如图4-1所示:数字滤波器指标模拟滤波器指标设计模拟滤波器对应的数字滤波器器双线性变换开始结束图4-1 iir设计流程图 iir滤波器设计方法有两类,经常用到的一类设计方法是借助于模拟滤波器的设计方法进行的。其设计思路是:先设计模拟滤波器得到传输函数ha(s),然后将ha(s)按某种方法转换成数字滤波器的系统函数h (z)。这一类方法是基于模拟滤波器的设计方法相对比较成熟,它不仅有完整的设计公式,也有完整的图表供查阅。更可以直接调用matlab中的对应的函数进行设计。另一类是直接在频域或者时域中进行设计的,设计时必

20、须用计算机作辅助设计,直接调用matlab中的一些程序或者函数可以很方便地设计出所需要的滤波器。我们采取直接调用的方法。4.2 iir滤波器参数设计 fir滤波器的参数用matlab来设计,其程序为:fs=1000; fp=100; fs=300; ap=3; as=20;wp=fp/(fs/2);%计算归一化角频率ws=fs/(fs/2);n,wc=buttord(wp,ws,ap,as);%计算阶数和截止频率b,a=butter(n,wc);%计算h(z)分子、分母多项式系数h,f=freqz(b,a,500,fs);%计算h(z)的幅频响应,freqz(b,a,计算点数,采样速率) 滤波

21、器的幅频特性和相频特性如图4-2所示:图4-2 iir滤波器的幅相频特性4.3 fir滤波器性能验证4.3.1 matlab的仿真验证matlab中输入为正弦叠加信号信号时的输入输出信号波形如图4-3所示:图4-3正弦叠加信号滤波后波形matlab中输入信号为方波信号时的输入输出信号波形如图4-4所示:4-4方波信号信号时的输入输出信号图4.3.2 ccs的仿真结果ccs中方波信号和滤波后波形如图4-5所示:图4-5 方波波形及滤波后波形ccs中方波信号的幅频特性如图4-6所示:图4-6 输入方波信号的幅频特性ccs中方波信号滤波后的幅频特性如图4-7所示:图4-7 输入方波信号的幅频特性cc

22、s中正弦叠加信号与滤波后波形如图4-8所示:图4-8 正弦叠加信号的输出波形ccs中正弦叠加信号的幅频特性如图4-9所示:图4-9 正弦叠加信号的副频特性ccs中正弦叠加信号滤波后的幅频特性如图4-10所示:图4-10 正弦叠加信号滤波后的副频特性 通过以上各图可看出在matlab中输入信号为方波时,然后经过所设计的低通滤波器输出信号理论上应为正弦波,但是由于采用二阶低通滤波器及其他原因,滤波效果并不是特别好,当在matlab中输入信号为叠加正弦波时,输出为低频正弦波,滤波效果还好,而在ccs中方波和正弦波都得到了较好的滤波效果,通过比较看出ccs的仿真效果要比matlab的仿真效果要好,总之

23、所设计的iir低通滤波器起到了应有的滤除高频信号的滤波效果,符合设计要求。5设计总结本次课程设计是数字滤波器的设计,是在上学期dsp原理即数字信号处理理论知识的基础上,对dsp芯片的首次完整应用。通过完整的实践过程,对dsp芯片组成的基本系统的相关电路有了比较深的认识,熟悉了dsp芯片的系统设计和应用开发流程,并利用图书馆、网络、询问同学等方式查找资料和解决相关的难题。数字滤波器是dsp的典型应用,学会了有助于触类旁通,利于进一步的学习研究,能做到理解其他基于dsp的系统的功能和工作原理。掌握了基于dsp的应用开发,开阔了视野,增长了知识,是进入现代数字信号处理领域重要技能,乃至大规模集成电路

24、的开发也是会用到的基础,今后要予以重视并积极努力去学习。回想这几天实践过程,真的很有感触。的确是这样,从初学dsp汇编语言到今天可以简单但是独立的运用;从不知道怎么解决一个简单的语法错误,到今天可以清楚地了解复杂语句之间的工作过程,进步源于一点一滴的积累,这或许正是我们这次独立地完成课程设计最大的收获。回顾整个数字滤波器的设计过程,感慨很幼稚但也有属于自己的深刻。由于dsp初次应用的不甚了解,真的感觉自己走了不少的弯路。最主要的就是对实验思路的不了解。本次设计结合了ccs和matlab软件实验平台,真正了解了设计的过程,思路也变得相对简易和明确。当然,真正的动手去做才发现要明白的东西绝不仅仅是

25、书上的那点东西,很多实践上东西,如果真正的明白了,比理论上弄懂要深刻的多。比如在编写程序的过程中,对卷积的编程必须基于对理论知识的深刻了解,同时实践对理论也具有能动的反作用,加深对卷积问题的理解。只有注意积累每次的体会和错误,下次碰到该注意的地方才懂得小心,碰到出过错误的地方才会格外注意不要再犯同样的错误,这种方法应该适用做任何一件事。在设计中遇到一些困难和问题,在向老师请教和与同学的讨论中,解决了问题,觉得很有收获。当你用心的去做一件事的时候,这件事就不会轻易的用不知对错的结果去应付你,就像你不会去拿这样的态度去对待他,做一件事和想一件事也不会是一样,如果当时我只是停留在第一天的空想,我就不

26、会在编程和仿真的过程中发现和改正那么多的错误。实践之所以高于理论,或许正是因为它为我们提供了更多犯错误和改正错误的机会吧。最后衷心感谢老师的悉心指导,董老师的教导是我们前进的方向。参考文献1 范寿康 m北京:电子工业出版社,20062 万永格 m北京:科学出版社,20073 程佩青 m北京:清华大学出版社,20014 高西全 m北京:电子工业出版社,20095 范寿康 m北京:电子工业出版社,20096 胡广书 m北京:清华大学出版社,2005附录fir数字滤波器程序:.title fir.asm .mmregs .global _c_int00li: .usect li , 41shuai:

27、 .usect shuai, 41in: .usect in, 200 out: .usect out, 240 .datatable: .word -0*32768/10000, -12*32768/10000, -17*32768/10000, 18*32768/10000,20*32768/10000 .word 46*32768/10000, 36*32768/10000, -25*32768/10000, -101*32768/10000,-110*32768/10000 .word 0*32768/10000, 175*32768/10000, 259*32768/10000, 1

28、05*32768/10000,-253*32768/10000 .word -552*32768/10000, -428*32768/10000, 312*32768/10000, 1483*32768/10000,2566*32768/10000 .word 3006*32768/10000, 2566*32768/10000, 1483*32768/10000, 312*32768/10000,-428*32768/10000 .word -522*32768/10000, -253*32768/10000, 105*32768/10000, 259*32768/10000,175*327

29、68/10000 .word 0*32768/10000, -110*32768/10000, -101*32768/10000, -25*32768/10000,36*32768/10000 .word 46*32768/10000, 20*32768/10000, -8*32768/10000, -17*32768/10000,-12*32768/10000,-0*32768/10000 .text_c_int00: ssbx frct stm #li,ar5 ;ar5指向冲激响应 rpt #40 mvpd table,*ar5+ stm #shuai,ar4 ;ar4指向缓冲区间 rpt

30、z a,#40 stl a,*ar4+ stm #in,ar3 ;ar3指向输入 stm #out,ar2 ;ar2指向输出 stm #(li+40),ar5 ; stm #(shuai+40),ar4 stm -1,ar0 ld #shuai,dp mvdd *ar3+,*ar4 ;向缓冲去送数 stm #240,brc rptb #table ;卷积算法 stm #41,bk rptz a,#40 mac *ar4+0%,*ar5+0%,a sth a,*ar2+ table: mvdd *ar3+,*ar4+0% .end-o fir.out-m fir.mapmemory page 0

31、: eprom: org=0e000h len=1000h vecs : org=0ff80h len=0080h page 1: saram: org=0060h len=0040h daram: org=0101h len=1380h sections .text : eprom page 0 .vectors : vecs page 0 .data : eprom page 0 .bss : saram page 1 li : align(128) daram page 1 shuai : align(128) daram page 1 in : daram page 1 out : d

32、aram page 1 .title vectors.asm .ref _c_int00 .sect .vectors b _c_int00 .endfir数字滤波器程序: .titleiir.asm .mmregs .def _c_int_00x .usect x,3y .usect y,3b0 .usect b0,3a0 .usect a0,3 output .usect output,256input .usect intput,256 .datatable .word 0 .word 0 .word 0 .word 0 .word 10000*16384/10000 .word 199

33、96*16384/10000 .word 10000*16384/10000 .word 3753*16384/10000 .word -10541*16384/10000 .text_c_int_00: ssbx frct stm #x,ar1 rpt #1 mvpd #table,*ar1+ stm #y,ar1 rpt #1 mvpd #table+2,*ar1+ stm #b0,ar1 rpt #2 mvpd table+4,*ar1+ stm #a0,ar1 rpt #1 mvpd #table+7,*ar1+ stm #x+2,ar2 stm #a0+1,ar3 stm #y+1,

34、ar4 stm #b0+2,ar5 stm #3,bk stm #-1,ar0 stm #input,ar6 stm #output,ar7 stm 255,brciir rptb next-1 ld *ar6+,a stl a,*ar2 mpy *ar2+0%,*ar5+0%,a mac *ar2+0%,*ar5+0%,a mac *ar2,*ar5+0%,a mac *ar4+0%,*ar3+0%,a mac *ar4+0%,*ar3+0%,a mar *ar3+0% sth a,*ar4 sth a,*ar7+next: b next .endiir.obj-o iir.out-m ii

35、r.map-e _c_int_00memory page 0:rom1 :org=0100h,len=1000h rom2 :org=2000h,len=0500h page 1: daram0 :org=1000h,len=0500h daram1 :org=1500h,len=0010h daram2 :org=1600h,len=0010h daram3 :org=1700h,len=0010h daram4 :org=1800h,len=0010h sections .text:rom1 page0 .data : daram0 page 1 x : daram1 page 1 y : daram2 page 1 b0 : daram3 page 1 x0 : daram4 page 1 .title vectors.asm .ref _c_int_00 .sect .vectors b _c_int_00 .endmatlab程序:%窗函数法设计fir低通滤波器 clear all ws=0.5*pi wp=0.3*pi wc=(ws+wp)/2%由过度带决定n ow=ws-wpn=8*pi/owalfa=(n-1)/2; nm=0:n-1%理想低通滤波器 hd=sin(wc*(nm-alfa)/(pi

温馨提示

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

评论

0/150

提交评论