《拉弦音乐滤波去噪--使用NUTTALLWIN设计的FIR滤波器》第1页共18页基于TIC6713的拉弦音乐滤波去噪---使用NUTTALLWIN设计的FIR滤波器指导老师:高明摘要本课程设计采用NUTTALLWIN设计一个FIR滤波器,对一段加噪拉弦音乐信号进行滤波去噪处理并根据滤波前后的波形和频谱分析滤波性能。本课程设计仿真平台为CCS3.1,开发工具是C语言、M语言编程。首先从网上下载一段拉弦乐器音乐信号,用格式转换器转换成WAV格式,用电脑录音机截取其中一段作为信号源,并人为加入一单频噪声,最后比较滤波前后的波形和频谱并进行分析。由分析结果可知,滤波器后的语音信号与原始信号基本一致,即设计的FIR滤波器能够去除信号中所加单频噪声,达到了设计目的。关键词滤波去噪;FIR滤波器;NUTTALLWIN;CCS3.11引言本课程设计主要内容是从网上下载一段拉弦器演奏音乐信号,进行加噪并利用NUTTALLWIN窗设计满足指标的FIR滤波器进行去噪处理,比较滤波前后语音信号的波形及频谱,画出滤波前后的波形及频谱图。通过比较波形及频谱图得出滤波前后的信号相差无几,可见滤波器在信号处理中占据中重要的地位,利用它我们可以得出我们需要的信号,而不需要的,即对我们需要的有用信号造成影响甚至失真的噪声我们可以通过滤波器滤掉。因此,我们必须掌握滤波去噪这《拉弦音乐滤波去噪--使用NUTTALLWIN设计的FIR滤波器》第2页共18页门重要的技术。1.1课程设计目的本课程设计的主要目的是采用NUTTALLWIN窗设计一FIR滤波器,对拉弦器演奏音乐信号进行加噪并用所设计的FIR滤波器进行去噪处理,并且通过设计熟悉CCS3.1的使用,了解FIR滤波器的特性,根据结果和在课堂上的学到的知识得出结论,学会将理论知识应用与实践之中。通过本次课程设计,我们应该掌握滤波去噪这门在信号处理中重要的技术。1.2课程设计的要求(1)滤波器指标必须符合工程实际。(2)设计完后应检查其频率响应曲线是否满足指标。(3)处理结果和分析结论应该一致,而且应符合理论。(4)独立完成课程设计并按要求编写课程设计报告书。1.3设计平台本次课程设计中系统的开发平台为CCS3.1,程序运行平台为WindowsXP。CCS是TI公司推出的用于开发DSP芯片的集成开发环境,它采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP芯片的开发与设计,是目前使用最为广泛的DSP开发软件之一。一、CCS的简介CCS是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面,提供环境配置、源文件编辑、程序调试、跟踪和分析等工具。CCS有两种工作模式:1、软件仿真器模式:可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。2、硬件在线编程模式:可以实时运行在DSP芯片上,与硬件开发板相结合在《拉弦音乐滤波去噪--使用NUTTALLWIN设计的FIR滤波器》第3页共18页线编程和调试应用程序。本次实验主要采用软件仿真器模式[1]。2设计原理有限冲击响应(FIR)滤波器在数字信号处理系统中有着广泛的应用。FIR滤波器设计方法主要分为两类:第一类是最优设计法,第二类是基于逼近理想滤波器特性的方法,包括窗函数法,频率采样法和等波纹最佳逼近法。而其中最常见的设计法就是窗口法设计。窗口法设计的基本思想是对于给定的滤波器技术要求,选择滤波器长度M和具有最窄主瓣宽度和尽可能最小的旁瓣衰减的某个窗函数W(n)[2]。2.1FIR滤波器数字滤波器是数字信号处理重要的一个内容。一般来说,一个数字滤波器分3个步骤来完成:1、技术要求:在设计滤波器之前,必须要有某些技术要求。这些技术要求是由用途决定的。2、近似:一旦技术要求确定之后,就要用自己学过的各种概念和数学提供一种滤波器的表述,它接近于所给出的一组技术要求。3、实现:上面一步的结果是一个滤波器的表述,它可能是一个差分方程的形式,或者是某一系统函数H(z),或者是某一脉冲响应h(n)。依据这个表述要用硬件实现这个滤波器,或者在一台计算机上通过软件实现[2]。相对于IIR滤波器,FIR滤波器在保证幅度特性满足技术要求的同时,还能做到严格线性相位特性。我们知道,无失真传输与滤波处理的条件是,在信号的有效频谱范围内系统幅频响应为常数,相频响应为频率的线性函数(即具有线性相位)[3]。在数字通信和图像传输与处理等应用场合都要求滤波器具有线性相位特性。另外,FIR滤《拉弦音乐滤波去噪--使用NUTTALLWIN设计的FIR滤波器》第4页共18页波器是全零点滤波器,硬件和软件实现结构简单,不用考虑稳定性问题。所以,FIR滤波器是一种很重要的滤波器,在数字信号处理领域得到广泛应用。FIR滤波器的特点:(1)单位抽样响应h(n)是有限长的,因此FIR滤波器一定是稳定的除此之外,还可用DFT实现。(2)经延时,h(n)总可变成因果序列,所以FIR滤波器总可以由因果系统实现。(3)FIR的系统函数是z-1的多项式,故IIR的方法不适用。(4)FIR的相位特性可以是线性的,因此,它有更广泛的应用。2.2窗口设计法窗口法设计的基本思想是对于给定的滤波器技术要求,选择滤波器长度M和具有最窄主瓣宽度和尽可能最小的旁瓣衰减的某个窗函数W(n)。基本概念(1)窗谱:窗函数的频响的幅度函数亦称作窗谱。(2)对窗函数要求:希望窗谱主瓣尽量窄,以获得较陡的过渡带,这是因为过渡带等于主瓣宽度。尽量减少窗谱最大旁瓣的相对幅度,这样可使肩峰和波纹减少,就可以增大阻带的衰减。数字信号处理的主要数学工具是傅里叶变换.而傅里叶变换是研究整个时间域和频率域的关系。不过,当运用计算机实现工程测试信号处理时,不可能对无限长的信号进行测量和运算,而是取其有限的时间片段进行分析。做法是从信号中截取一个时间片段,然后用观察的信号时间片段进行周期延拓处理,得到虚拟的无限长的信号,然后就可以对信号进行傅里叶变换、相关分析等数学处理。无线长的信号被截断以后,其频谱发生了畸变,原来集中在f(0)处的能量被分散到两个较宽的频带中去了(这种现象称之为频谱能量泄漏)。为了减少频谱能量泄漏,可采用不同的截取函数对信号进行截断,截断函数称为窗函数,简称为窗。[4]信号截断以后产生的能量泄漏现象是必然的,因为窗函数w(t)是一个频带无《拉弦音乐滤波去噪--使用NUTTALLWIN设计的FIR滤波器》第5页共18页限的函数,所以即使原信号x(t)是限带宽信号,而在截断以后也必然成为无限带宽的函数,即信号在频域的能量与分布被扩展了。又从采样定理可知,无论采样频率多高,只要信号一经截断,就不可避免地引起混叠,因此信号截断必然导致一些误差。泄漏与窗函数频谱的两侧旁瓣有关,如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱,为此,在时间域中可采用不同的窗函数来截断信号。[5]我们知道,用窗函数法设计的滤波器性能取决于窗函数n的类型及窗口长度N的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N。各种类型的窗函数可达到的阻带最小衰减和过渡带宽度见表2-1。表2-1常见窗函数性能表名称滤波器过渡带宽最小阻带衰减名称滤波器过渡带宽最小阻带衰减矩形1.8π/M21dBPARZENWIN6.6π/M56db巴特利特6.1π/M25dBFLATTOPWIN19.6π/M108db汉宁6.2π/M44dBGAUSSWIN5.8π/M60db汉明6.6π/M51dBBARTHANNWIN3.6π/M40db布莱克曼11π/M74dBBLACKMANHARRIS16.1π/M109dbBOHMANWIN5.8π/M51.5dbCHEBWIN15.2π/M113dbNUTTALLWIN15.4π/M108dbTUKEYWIN2.4π/M22db《拉弦音乐滤波去噪--使用NUTTALLWIN设计的FIR滤波器》第6页共18页3设计步骤3.1设计流程图设计的流程主要有信号的采集并加入噪声,然后用NUTTALLWIN窗设计滤波器,检测滤波器性能后对加噪信号进行滤波处理,然后对滤波前后的信号进行对比分析,得出结论。具体设计流程图如下:图3-1设计流程图3.2CCS系统配置以及仿真音乐波形的仿真:(1)进入CCS系统配置启动CCS配置程序。双击桌面上的SetupCCS快捷图标,弹出对话框。添加TMS320C6713芯片型号。《拉弦音乐滤波去噪--使用NUTTALLWIN设计的FIR滤波器》第7页共18页图3-2CCS配置窗口(2)在Matlab中将M文件生成.dat文件打开Matlab软件,将音乐和音乐的wav2dat.M文件拷入Matlab的work文件夹下,在Matlab中打开wav2dat.M文件,运行即可生成input.dat文件。wav2dat.M文件的程序如下:[y,Fs,bits]=wavread('kongshanniaoyu.wav');y1=y(:,1);y1=y1+1;y1=y1*100;fid=fopen('input.dat','w');fprintf(fid,'16511010\n');fprintf(fid,'0x%x\n',round(y1));fclose(fid);4、CCS编译、调试、运行利用CCS创建一个新工程,然后向该工程中添加源代码文件和库文件。1)CCS的安装目录为c:\ti,首先在文件夹c:\ti\myprojects\下建立一个新的文件夹。命名为xty。2)将主函数main.c与input.dat文件拷贝到该新建的文件夹中。《拉弦音乐滤波去噪--使用NUTTALLWIN设计的FIR滤波器》第8页共18页3)向工程中添加文件:在CCS中选择菜单ProjectddFilestoProject,并在文件类型选框中选汇编源文件(*.a*,*.s*),将main.c添加到Source文件夹、rts6700.lib添加到Libraries文件夹、c6x.h添加到Documents文件夹中。4)打开main.c主函数,选择软件窗口上的。CCS重新编译,并链接工程中的全部文件。编译过程信息显示在CCS下部的窗口中。5)在主函数中添加断点与指针:编译完主函数后,单击x_in=(short)(dat&0xffff);语句,选择(添加断点),选择(添加指针)。6)在默认情况下,将当前工程目录下的debug子目录中生成.out文件。通过CCS工具条可改变生成文件的存放位置。7)选FileLoadProgram,并在对话框中选刚刚编译生成的文件xty.out,单击Open打开。8)从File菜单选择FileI/O。FileI/O对话框出现以便选择输入、输出文件。如下图所示,添加文件并修改参数。图3.3FileI/O窗口的参数设计(9)显示时域图形:选菜单ViewGraphTime/Frequency。在GraphProperty对话框中,StartAddress为in,AcquisitionBufferSize为512,DisplayDataSize为512,DSPDataType为32-bitfloatingpoint,Autoscale为Off,MaximumY-value为200。音乐波形的时域图就能绘出来了。《拉弦音乐滤波去噪--使用NUTTALLWIN设计的FIR滤波器》第9页共18页(10)显示频域域图形:选菜单ViewGraphTime/Frequency。在GraphProperty对话框中,DisplayType选为FFTmagniftude,MaximumY-value为5000。音乐波形的频域图就能绘出来了。图3.4时域波形图的绘图窗口(4)仿真结果经过上面的仿真后,可以得到下面的原始音乐的时域波形图以及频域波形图图3.5原始音乐时域波形图图3.6原始音乐频域波形图加噪音乐波形的仿真:将加噪的M文件用Matlab生成input.dat,