DSP原理及应用课程设计_第1页
DSP原理及应用课程设计_第2页
DSP原理及应用课程设计_第3页
DSP原理及应用课程设计_第4页
DSP原理及应用课程设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、华北水利水电大学North China University of Water Resources and Electric Power DSP原理及应用课程设计 题目 FIR数字低通滤波器 学 院 信息工程学院 专 业 电子信息工程 姓 名 学 号 指导老师 完成时间 摘要1一. 绪论11.1设计背景11.2设计方法分析1二FIR滤波器设计过程22.1 FIR滤波器原理22.2 FIR滤波器的实现方法32.3 FIR滤波器的MATLAB实现42.4 设计流程图6三MATLAB和 CCS操作步骤及仿真结果73.1 matlab中的.M文件的编写73.2 工程文件的建立123.3 仿真结果及分析

2、12四心得与总结12 1 摘要 当前,数字信号处理技术受到了人们的广泛关注,其理论及算法随着计算机技术和微电子技术的发展得到了飞速地发展,并被广泛应用于语音和图象处理、数字通信、谱分析、模式识别和自动控制等领域。数字滤波器是数字信号处理中最重要的组成部分之一,几乎出现在所有的数字信号处理系统中。设计中通过MATLAB环境中图形化的方式建立数字信号处理的模型进行DSP的设计和仿真验证,将设计的图形文件.mdl直接转换成C语言程序在CCS中运行。利用MATLAB软件开发产品加速了开发周期,比直接在CCs中编程方便快捷了很多,对于任何复杂功能的DSP系统,只需要进行少量的添加和修改就能完成功能正确的

3、C语言程序设计。 一. 绪论1.1设计背景一个实际的应用系统中,由于设备或者是外界环境的原因,总存在各种干扰,使信号中混入噪声,譬如音频信号中高频成分的噪声使得音乐听起来刺耳,失去了原有悦耳的音质。为了提高信号质量,可以对信号进行滤波,从噪声中提取信号,即对一个具有噪声和信号的混合源进行采样,然后经过一个数字滤波器,滤除噪声,提取有用信号。DSP(数字信号处理器)与一般的微处理器相比有很大的区别,它所特有的系统结构、指令集合、数据流程方式为解决复杂的数字信号处理问题提供了便利,本文选用TMS320C54X作为DSP处理芯片,通过对其编程来实现FIR滤波器。对数字滤波器而言,从实现方法上,有FI

4、R滤波器和无限冲激响应(IIR)滤波器之分。由于FIR滤波器只有零点,因此这一类系统不像IIR系统那样易取得比较好的通带与阻带衰减特性。但是FIR系统有自己突出的优点:系统总是稳定的;易实现线性相位;允许设计多通带(阻带)滤波器。其中后两项是IIR系统不易实现的。1.2设计方法分析 FIR滤波器的设计方法分析数字滤波器依据冲激响应的宽度划分为有限冲激响应(FIR)滤波器和无限冲激响应滤波(IIR)。FIR 滤波器是有限长单位冲激响应滤波器,在结构上是非递归型的,有限冲激响应滤波器(FIR),具有以下的优点:(1)可以在幅度特性随意设计的同时,保证精确、严格的线性相位;(2)由于FIR滤波器的单

5、位脉冲响应h(n)是有限长序列,因此F I R 滤波器没有不稳定的问题;(3)由于FIR 滤波器一般为非递归结构,因此在有限精度运算下,不会出现递归结构中极性震荡等不稳定现象,误差较小。FIR 滤波器的设计方法有窗函数设计法和频率采样设计法,下面扼要介绍窗函数设计法。窗函数法设计FIR 滤波器的基本思想是:根据给定的滤波器技术指标,选择滤波器长度N 和窗函数(n),使其具有最窄宽度的主瓣和最小的旁瓣。其核心是从给定的频率特性,通过加窗确定有限长单位脉冲响应序列h(n)。给定滤波器的频率响应为Hd(ejw),要求设计一个频率响应为H(ejw)的滤波器来逼近Hd(ejw),其中: 对Hd(ejw)

6、进行傅立叶反变换推导出其时域响应hd(n),即 由于hd(n)是无限长序列,且是非因果的。要得到有限长的h(n),需要用一个有限长的窗口函数序列(n)来截取h(n),即 二FIR滤波器设计过程2.1 FIR滤波器原理数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列,FIR滤波器的差分方程为: 对上式进行Z变换得到FIR滤波器的传递函数为: 由上式可以看出,H(z)是的N-1次多项式,它在z平面内有N-1个零点,同时在原点处有N-1个重极点。N阶滤波器通常采用N个延迟单元、N个加法器与N+1个乘法器,取图中(a)、(b)两种结构。 FIR滤波器的一般结构因为FIR滤波器

7、的单位抽样响应是有限长的,所以它永远是稳定的。另外,若对 h(n)提出一些约束条件,那么可以很容易地使 H(z)具有线性相位,这在信号处理的很多领域是非常重要的。FIR滤波器的设计任务,是要决定一个转移函数H(z),使它的频率响应满足给定的要求。这里所说的要求,除了通带频率、阻带频率及两个带上的最大和最小衰减和外,很重要的一条是保证H(z)具有线性相位。2.2 FIR滤波器的实现方法 (1)采用DSP(Digital Signal Processing)处理器来实现 DSP处理器是专为数字信号处理而设计的,它的主要数字运算单元是一个乘累加器,能够在一个机器周期内完成一次乘累加运算,配有适合于信

8、号处理的指令,具备独特的循环寻址和倒序寻址能力。这些特点都非常适合数字信号处理中的滤波器设计的有效实现,并且它速度快,成本低。用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响外,还具有灵活性好的特点。(2)用计算机软件实现 软件实现方法即是在通用的微型计算机上用软件实现。利用计算机的存储器、运算器和控制器把滤波所要完成的运算编成程序通过计算机来执行,软件可由使用者自己编写,也可以使用现成的。但是这种方法速度慢,难以对信号进行实时处理,虽然可以用快速傅立叶变换算法来加快计算速度,但要达到实时处理要付出很高的代价。 (3)用FPGA等可编程器件实现 使用相关开发工具和VHDL等硬件

9、开发语言,通过软件编程用硬件实现特定的数字滤波算法。这一方法由于具有通用性的特点并可以实现算法的并行运算,无论是作为独立的数字信号处理,还是作为DSP芯片的协作处理器都是比较活跃的研究领域。可以采用DSP或FPGA来实现硬件电路。采用固定功能的专用信号处理器实现 (4) 专用信号处理器采用专用集成电路ASIC来实现,适用于过程固定而又追求高速的信号处理任务,是以指定的算法来确定它的结构,使用各种随机逻辑器件组成的信号处理器。它们体积小、保密性好,具有极高的性能,然而灵活性差。2.3 FIR滤波器的MATLAB实现MATLAB辅助DSP 实现FIR ,其总体过程为在DSP中编写处理程序,在MAT

10、LAB中利用滤波器设计、分析工具( FDATOOL) ,根据指定的滤波器性能快速设计一个FIR ,再把滤波器系数以头文件形式导入CCS 中,头文件中MATLAB 辅助DSP 实现FIR 数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP 程序并显示、分析处理后的数据。使用该方法,便于采用汇编语言来实现程序。头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也改变,方便程序调试、仿真。MATLAB集成了一套功能强大的滤波器设计工具FDATool(Filter Design & Analysis Tool),可以完成多种滤波器的设计、分析和性能评估。(1).打开

11、Filter Design & Analysis Tool单击MATLAB主窗口下方的“Start”按钮,选择菜单“ToolBox” “Filter Design” “Filter Design & Analysis Tool(FDATool)”命令,打开FDATool,如图1所示。 图1(2)产生滤波器阶数为81阶,这里应填80,比阶数少1。窗函数选择切比雪夫型(chebyshev),滤波器类型为Lowpass,采样频率为20000Hz,通带截止频率分别为1000HZ。得图2 图2(3).产生滤波器系数,如图3 图3 (4)头文件的产生 (5)选择所需的型号:(6)生成头文件 最后将产生的头

12、文件中的滤波器系数数组放入编写好的滤波器函数中,并在进行CCS中进行调试与测试。 2.4 设计流程图 程序流程图 (1) 对DSP进行初始化,定义DSP的一些向量和工作模式;(2) 为数字滤波作准备,将预先设计好的有N个抽头的FIR数字滤波器的冲激响应序列h(n)中的N个数值放入存储单元B1BN;(3) 作好滤波准备工作后,开始进行抽样,并读入抽样值,放入存储单元A1中;(4) 之后便对抽样值进行运算处理:(a) 将累加器清零,并设置两个准备相乘的存储单元A与B的初始值K和L;(b) 将第K个抽样值AK与冲激响应序列的第L个数值BL相乘(K+L=N+1),并将乘积送入累加器进行累加;(c) 将

13、第K-1个抽样值AK-1放入AK,此时AK中原数值被覆盖;(d) 重复(b)(c),直至共完成N次乘加运算。(5) 输出处理结果;(6) 重复(3)(5)。三MATLAB和 CCS操作步骤及仿真结果3.1 matlab中的.M文件的编写 sl=300; %有效信号 ns1=2000; %高频噪声ns2=8000; %高频噪声 fs=20000; %采样频率 N=1000; T=1/fs; n=0:N; signal=sin(2*pi*sl*n*T); noise1=0.7*sin(2*pi*ns1*n*T);noise2=0.4*sin(2*pi*ns2*n*T); x=(signal+noi

14、se1+noise2);%待滤波信号 figure(1) plot(x) figure(2) y=abs(fft(x);%待滤波频谱 df=n*(fs/N); plot(df,y) figure(3) plot(n,signal) figure(4) ysignal=abs(fft(signal);%滤波后频谱df=n*(fs/N); plot(df,ysignal) %滤波数据导出 xout=x/max(x); %归一化 xto_css=round(32767*xout);%数据取整 xoutcss=xto_css; fid=fopen(G:2012156dinputld.dat,w); %

15、打开文件 fprintf(fid,1651 1 0 1 0n);%输出文件头 fprintf(fid,%dn,xoutcss); %输出 fclose(fid); %fid=fopen(sine.dat,w);%将文件头写入文件,将生成的y信号写入到文件,格式四位小数%fprintf(fid,1651 1 0 1 0n);%fprintf(fid,%.4fn,y);%将文件头写入文件,将生成的y信号写入到文件,格式十六进制,负数用补码%fprintf(fid,1651 1 0 1 0n);%fprintf(fid,0x%xn, round(y*100) + (y0)*216); 运行此程序产生

16、以下四个图:3.2 工程文件的建立在CCSV3.3中建立新工程,把c源代码和.cmd文件导入后,外加rts. lib文件,它是TI提供的运行时支持库, 如果是C代码写的源程序, 必须要包含该库,该库由TI公司做好放在CCS cgtools lib中。添加完成后,编译通过后,下载.out文件,导入.dat文件。然后运行程序,待程序准确无误后,点击File Loadprogyam mert 打开.out文件3.3 仿真结果及分析采用CCS 的图形显示功能, 分别观察输入信号x ( n)、输出信号y ( n)的时域波形和频域波形, 输入信号波形如下图所示: 输入数据时域图(Start Address

17、 : input) 输入数据频谱(DisplayType:FFT Magnitude)输出数据时域图(Start Address : output) 输出数据频谱(DisplayType : FFT Magnitude)四心得与总结 通过本次课程设计的学习,完善了自己对于MATLAB和CCS软件的了解,即进一步掌握了MATLAB对滤波器设计的方法,同时也学会了利用ccs实现数字的滤波,而且也是对数字信号处理课程的一次复习,里面的大部分知识都是其内容。MATLAB是一个强大的软件,在专业课的学习中应用十分广泛,今后将会更加深入了解它的功能。CCS为信号搭建了一个平台,是我们运行后能更加直观的感受波形的变化。虽说是第一次接触这个软件,但是还是很努力的去学习它,了解它。 虽然这次课设验过了,但是还是有很多的问题没有解决,认识到自己学习的知识都是相通的,要学会融会贯通,本设计中通过滤波,滤除了音频信号中的高频噪声,改善了声音质量。将MATLAB 强大的工具箱功能与DSP 完美结合,利用MATLAB 辅助设计,使得在设计过程中达到事半功倍的效果。运用数字信号处理芯片强大的运算功能,配合外围电路,可方便地对音频信号进行实时滤波处理当然本次设计中也遇到了许多问题,一是参数的

温馨提示

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

评论

0/150

提交评论