基于DSP的FIR滤波器设计

上传人:206****923 文档编号:42407549 上传时间:2018-06-02 格式:DOC 页数:11 大小:164.50KB
返回 下载 相关 举报
基于DSP的FIR滤波器设计_第1页
第1页 / 共11页
基于DSP的FIR滤波器设计_第2页
第2页 / 共11页
基于DSP的FIR滤波器设计_第3页
第3页 / 共11页
基于DSP的FIR滤波器设计_第4页
第4页 / 共11页
基于DSP的FIR滤波器设计_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《基于DSP的FIR滤波器设计》由会员分享,可在线阅读,更多相关《基于DSP的FIR滤波器设计(11页珍藏版)》请在金锄头文库上搜索。

1、 DSP 课程设计课程设计 选题名称选题名称: 基于 DSP 的 FIR 滤波器的设计与仿真 校校 院院: 南京师范大学 物科院专专 业业: 电子信息工程 姓名姓名: 季玲玲 学号学号: 07090423 摘要:DSP 作为一门新兴学科,越来越引起人们的关注,目前已广泛应用在各个领域。20 世纪 60 年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。本文主要介绍基于 DSP 数字滤波器设计,使用 CCS 实现 FTSK 数据输入, 使用 FIR 滤波器对 FTSK 调制信号进行处理,输出需要波形与频谱。文中采用线性缓冲区和带移位双操作寻址方法实现 FIR滤波

2、器。以窗函数法设计线性相位 FIR 数字滤波器为例,介绍用 MATLAB 工具软件设计数字滤波器的方法和在定点 DSP 上的实现,实现时,先在 CCS 仿真开发,然后加载。利用 DSP 来快速设计 FIR 数字滤波器的方法,寻找系数的快速传递,MATLAB 中调试仿真 DSP 程序。关键词关键词:数字滤波器,Matlab,FIR,CCS一实验设计一实验设计1 .设计目的和要求本文主要介绍基于 DSP 数字滤波器设计,使用 CCS5000Simulator 实现 FTSK 数据输入, 使用 FIR 滤波器对 FTSK 调制信号进行处理,输出需要波形与频谱。文中采用线性缓冲区和带移位双操作寻址方法

3、实现 FIR 滤波器。通过课程设计,加深对 DSP 芯片TMS320C54x 的结构、工作原理的理解,获得 DSP 应用技术的实际训练,掌握设计较复杂DSP 系统的基本方法。通过使用汇编语言编写具有完整功能的图形处理程序或信息系统,使学生加深对所学知识的理解,进一步巩固汇编语言讲法规则。学会编制结构清晰、风格良好、数据结构适当的汇编语言程序,从而具备解决综合性实际问题的能力。2 系统功能介绍一个实际的应用系统中,总存在各种干扰。数字滤波器在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像信号等各种信号处理中都有广泛的应用,数字滤波器也是使用最为广泛的信号处理算法之一。在本设计

4、中,使用 MATLAB 模拟产生合成信号,然后利用 CCS 进行滤波。设定模拟信号的采样频率为 32000Hz,。设计一个 FIR 低通滤波器,其参数为:滤波器名称: FIR 低通滤波器采样频率: Fs=40000Hz 通带: 4000Hz4500Hz过渡带: 2500Hz3000Hz,3500Hz4000Hz带内波动: 0.5dB 阻带衰减: 50dB滤波器级数: N=154滤波器系数: 由 MATLAB 根据前述参数求得。3 总体设计方案流程图使用 MATLAB 编写程序 产生待滤波数据使用 MATLAB 滤波器的 设计分析工具 FDATOOL 设计 FIR 滤波 器使用 CCS 编写程序

5、实现滤波功能查看程序运行后的输入输 出波形并比较滤波效果二设计原理及操作步骤1 1滤波器原理滤波器原理对于一个 FIR 滤波器系统,它的冲击响应总是又限长的,其系统函数可记为:其中 N-1 是 FIR 的滤波器的阶数,为延时结,为端口信号函数。最基本的 FIR 滤波器可用下式表示:其中输入采样序列,是滤波器系数,N 是滤波器的阶数 Y(n)表示滤波器的输出序列,也可以用卷积来表示输出序列 y(n)与 x(n)、h(n) 的关系,如下: y(n)=x(n)*h(n)2 2 DSPDSP 实现实现 FIRFIR 滤波的关键技术滤波的关键技术(1)用线性缓冲区实现 FIR 滤波器 (2)用循环缓冲区

6、实现 FIR 滤波器 3 3操作步骤操作步骤(1)打开 matlab 软件,根据滤波要求设置滤波器类型、通带截止频率、指定阶数、采样频率等设计相关的 matlab 语言。指定完设计参数后运行得出波形。(2)把生成的滤波器系数传到目标 DSP。编译 CCS 程序, 如果有错误,按错误进行修改;没错误,则往下执行。(3)加载初始化 DATA 数据。运行程序,查看输入输出波形,修改相应参数进行调试4 程序流程程序流程在本实验中使用MATLAB模拟产生信号,观察滤波前的时域波形和频域波形。MATLAB仿真后,使用得到的滤波器参数,进行DSP编程,在DSP中实现带通滤波,并使用CCS的频谱分析功能,查看

7、DSP的滤波效果。(1)MATLAB 程序流程图如图 1 所示2.CCS汇编程序流程图如图2所示初始化产生需要虑波信号画出原始信号频谱图生成 fir 滤波器进行滤波画出滤波后信号频谱图初始化输入原始信号定义滤波器系数为原始信号和系数指定寄存器 做滤波算法本次滤波结束待滤波系数减一是三设计结果及波形图三设计结果及波形图MATLAB 辅助 DSP 实现 FIR ,其总体过程为在 DSP 中编写处理程序,在 MATLAB 中利用滤波器设计、分析工具( FDATOOL) ,根据指定的滤波器性能快速设计一 个 FIR ,然后把滤波器系数以头文件形式导入 CCS 中,头文件中 MATLAB 辅助 DSP

8、实现 FIR 数字滤波器含滤波器阶数和系数数组,在 MATLAB 中调试、运行 DSP 程序并显示、分析处理后的数据。使用该方法,便于采用汇编语言来实现程 序。头文件名不变,当 MATLAB 中设计的滤波器系数改变时,相应头文件中系数也 改变,方便了程序调试、仿真。(一)在 MATLAB 中先编写程序,查看待滤波和已滤波的信号的时域和频域波形,如图 1 和图 2 所示。已滤波的信号的时域和频域波形,如图 5 和图 6 所示。是否有待滤波数据滤波结束(二) 在 CCS 中进行调试,实现带通滤波的功能。将显示类型,图形名称,起始地址,抽样点数,数据类型等分别进行设置,输出各种波形。输出滤波前的信号

9、时域波形。上图为滤波前的信号,波形很杂乱,从时域上很难看出信号的周期性修改相应设置,输出如下图所示滤波前信号频谱。经过滤波后,时域波形如图 12 所示。总总 结结通过本次课程设计,我进一步了解了数字滤波是信号处理技术,掌握了数字滤波器的基本理论知识以及它实现方法,学习了数字滤波器的结构、设计理论,还掌握了其他数字滤波器的原理和特性,并且复习了 MATLAB 的相关知识,掌握了 CCS 环境下的程序开发方法、调试工具的使用及优化级别的选择等,利用 MATLAB 与 CCS 设计了低通滤波器以及高通滤波器。在设计中我们利用DSP 来快速设计 FIR 数字滤波器的方法,寻找系数的快速传递,MATLA

10、B 中调试仿真 DSP 程序,并且解决了在实验设计中遇到的各种问题和错误,如采样频率设置的过小,截止频率大于采样频率的一半,运行的时候图形出现错误。在 CCS 中未定义标号,程序运行错误等等,真的学到了很多东西,锻炼了动手能力。DSP 是以众多学科为理论基础的,它所涉及的范围极其广泛。所以在今后的工作和学习生活中,我们要多多综合运用模拟电子、数字电子和 DSP 基本原理等课程中所学的理论知识去独立完成一个项目的设计。参考文献1基于 MATLAB 的系统分析与设计 西安电子科技大学出版社 楼顺天,李博函著2基于 MatLab 与 DSP 的滤波器的快速设计方法.现代计算机 王秀芳,关凌涛著3基于

11、定点 DSP 的 FIR 数字滤波器的研究与设计.曲阜师范大学 赵秀玲等著4 MATLAB 在数字信号处理中的应用M.北京:机械 工业出版社 罗军辉, 罗勇江等著.附件:汇编程序清单:附件:汇编程序清单: Fir.asm 内容内容: .title“fir.asm“ ;为汇编源程序取名.mmregs ;定义存储器映像寄存器.global _c_int00ORDER .set 154D_LEN.set 1024; The Length of Input Dataxn.usect“xn“,(ORDER-1)a0.usect“a0“,(ORDER-1)input.usect“input“, D_LEN

12、output.usect“output“,D_LEN.copy “HM.h“; Get coefs from “coef.h“ .text ;定义文本代码段.asgAR0, FIR_INDEX.asgAR2, FIR_DATA.asgAR3, FIR_COEF.asgAR5, DATA_IN.asgAR6, DATA_OUT_c_int00:SSBX FRCTSTM #a0,FIR_COEF; Copy a0(coefs) to FIR_COEF(AR3)RPT #ORDER-1 ;从程序数据器到数据存储器MVPD #coeff,*FIR_COEF+ ;重复传送地址 STM#1, FIR_IN

13、DEXSTM#xn, FIR_DATA; Copy xn(data) to FIR_DATA(AR2)RPTZ A,#ORDER-1 ;将 A 清零,重复执行下条指令 155次STLA, *FIR_DATA+ ;将 A 的低字内容送到数据存储里STM #(xn+ORDER-1), FIR_DATASTM #(a0+ORDER-1), FIR_COEFSTM#input, DATA_IN; Get data from “input“STM#output, DATA_OUT; Write data to “output“STM#D_LEN-1, BRCRPTBDnext-1STM#ORDER, B

14、KLD*DATA_IN+, AFIR: STLA, *FIR_DATA+% ;将 A 的低字内容放到程序存储里面RPTZA, (ORDER-1) MAC*FIR_DATA+0%, *FIR_COEF+0%, A ; FIRS ;执行乘法并累加,结果放在 A中STHA, *DATA_OUT+ ;将 A 的高字内容放到输出的数据存储里面 nextFIR_END:B FIR_END.end FIR.m 的程序如下:fs=40000; %/采样HzN=1024 %数据个数T=1/fs; %采样周期n=0:N-1;df=n*(fs/N) %待滤波信号波形xin=randn(1,1024)figure(1

15、)plot(xin) %待滤波信号频谱xinff=abs(fft(xin);figure(2)plot(df,xinff) %滤波后信号波形y_filter_out=filter(B,1,xin)% Y = FILTER(B,A,X)figure(3) plot(y_filter_out)%滤波后信号频谱yff=fft(y_filter_out);figure(4)plot(df,yff) xin=xin/max(xin);%归一化xto_ccs=round(32767*xin)%取整fid=fopen(input1.dat,w);%打开文件fprintf(fid,1651 1 0 0 0n);%输出文件头fprintf(fid,%dn,xto_ccs);%输出fclose(fid);Fir.m 内容:内容:f11=2500; %/Hzf12=5500; %/Hzf13=9000; fs=32000; %/采样HzN=500 %数据个数T=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号