当前位置:文档之家› 基于DSP芯片的语音信号FIR滤波系统

基于DSP芯片的语音信号FIR滤波系统

摘要数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。

20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。

数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。

在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。

随着微处理技术的快速发展,微处理器芯片的集成度从最早的几千个晶体管发展到现在的上亿个晶体管,字长从4位提高到了64位,正是这些技术的飞速发展引发了一轮又一轮的信息产业革命,而人们的生活、学习和工作方式也在以计算机技术、通信技术为核心的信息技术的影响下发生着前所未有的改变。

然而在这次设计中,比较核心的是数字滤波器,数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域。

滤波的目的。

根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。

与IIR滤波器相比,FIR滤波器只有零点,除原点外.在z平面上没有极点,因此总是稳定的和可实现的;更重要的是,FIR 滤波器在满足一定的对称条件下,可以获得严格的线性相位特性,这一点是IIR 滤波器难以实现的。

因此。

它在高保真的信号处理.如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。

对于本设计主要是利用一个DSP芯片来进行语音采集系统的设计,而数字信号处理技术的发展使得采用数字化的方法实时的处理语音信号成为可能。

早期的语音信号处理均是采用模拟处理,对声音信号最常用的滤波、相关、谱分析等运算,部分采用模拟电路来实现的。

这种传统的模拟方法处理语音信号,硬件设备昂贵,不能升级、产品生命周期短,而采用数字处理技术处理语音信号具有抗干扰性强、便于传输和处理等优点,代表着语音处理技术的发展方向。

DSP芯片高速、可编程的特点使其非常适合于语音信号处理领域。

一、设计所用软件介绍1.1 FIR滤波器及它的工作原理FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。

因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。

在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,把模拟信号转化为数字信号;为了使信号处理能够不发生失真,信号的采样速度必须满足奈奎斯特定理,一般取信号频率上限的4-5倍做为采样频率;一般可用速度较高的逐次逼进式A/D转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器,滤波器输出的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换,因此由FPGA构成的FIR滤波器的输出须外接D/A模块。

FPGA有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好,利用FPGA乘累加的快速算法,可以设计出高速的FIR数字滤波器。

1.2 CCS软件CCS(Code Composer Studio数据设计工作室)代码调试器是一种合成开发环境。

它是一种针对标准TMS320调试器接口的交互式方法。

CCS目前有CCS1.1,CCS1.2 和CCS2.0等三个不同时期的版本,又有CC2000 ( 针对C2XX ),CCS5000 ( 针对C54XX )和CCS6000 (针对C6X )三个不同的型号。

我们所使用的是CCS50002.0的版本。

CCS5000具有以下特性:TI编译器的完全集成的环境:CCS5000目标管理系统,内建编辑器,所有的调试和分析能力集成在一个Windows 环境中。

对C和DSP汇编文件的目标管理:目标编辑器保持对所有文件及相关内容的跟踪。

它只对最近一次编译中改变过的文件重新编译,以节省编译时间。

高集成的编辑器调整C和DSP汇编代码:CCS5000的内建编辑器支持C和汇编文件的动态语法加亮显示。

使用户能很容易地阅读代码和当场发现语法错误。

编辑和调试时的后台编辑:用户在使用编译器和汇编器时没有必要退出系统到DOS环境中,因为CCS5000会自动将这些工具装载在它的环境中。

在其窗口中,错误会加亮显示只要双击错误就可以直接到达出错处。

在含有浮点并行调试管理器(PDM)的原有的MS窗口下支持多处理器CCS5000在Windows95和Windows-me中支持多处理。

PDM(调试管理器)允许将命令传播给所有的或所选择的处理器。

在任何算法点观察信号的图形窗口探针:图形显示窗口使用户能够观察时域或频域内的信号。

对于频域图,FFT(快速傅立叶变换)在主机内执行,这样就可以观察所感兴趣的部分而无须改变它的DSP代码。

图显示也可以同探针连接,当前显示窗口被更新时,探针被指定,这样当代码执行到达该点时,就可以迅速地观察到信号。

文件探针在算法处通过文件提取或加入信号或数据:CCS5000允许用户从PC机读或写信号流。

而不是实时的读信号,这就可以用已知的例子来仿真算法。

图形分析:CCS5000的图形分析能力在其环境中是集成的。

在后台(系统命令)执行用户的DOS程序:用户可以执行CCS5000中的DOS程序,并将其输出以流水方式送到CCS5000的输出窗口。

且允许用户将应用程序集成到CCS5000。

技术状态观察窗口:CCS5000的可视窗口允许用户进入C表达式及相关变量。

结构、数组、指针都能很简单地递归扩展和减少,以便进入复杂结构。

代数分解窗口:允许用户选择查看写成代数表达式的C格式,提高可读性。

目标DSP上的帮助:DSP结构和寄存器上的在线帮助可以使用户不必查看技术手册。

用户扩展:扩展语言(GEL)使得用户可以将自己的菜单项加到CCS5000的菜单栏中。

操作流程图1.3MATLAB软件介绍MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。

是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。

它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB和Mathematica、Maple并称为三大数学软件。

它在数学类科技应用软件中在数值计算方面首屈一指。

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。

在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

二、设计原理及步骤2.1滤波器原理数字滤波器有两类:IIR数字滤波器和FIR数字滤波器。

FIR滤波器是有限长单位冲激响应滤波器,在结构上是非递归型的。

它可以在幅度特性随意设计的同时,保证精确严格的线性相位。

线性相位特性在实际应用中非常重要,如在数据通信、图像处理、语音信号处理等领域,往往都要求具有线性相位特性。

并且由于FIR 滤波器的单位脉冲响应有限长,系统不存在非稳定现象,我们总能用因果稳定系统来实现FIR 滤波器。

FIR 主要的不足在于其较好的性能是以较高的阶数为代价换来的,对于相同的设计指标,FIR 滤波器所要求的阶数比IIR 滤波器高2~5 倍,信号的延迟偏大。

因此,在保证相同性能的前提下,尽量降低其阶数是FIR 数字滤波器设计的目标之一。

FIR滤波器是有限长单位冲激响应滤波器,它具有以下独特的优点:(1)可以在幅度特性随意设计的同时,保证精确、严格的线性相位;避免被处理的信号产生相位失真,这一特点在宽频带信号处理、阵列信号处理、数据传输等系统中非常重要; (2)由于FIR滤波器的单位脉冲响应h(n)是有限长序列,因此FIR滤波器没有不稳定的问题; (3)由于FIR滤波器一般为非递归的结构,因此在有限精度运算下,不会出现递归结构中极性震荡等不稳定现象,误差较小。

FIR滤波器的数学表达式为:(2-1)式中:N为FIR滤波器的抽头数;x(n)为第n时刻的输入样本;h(i)为FIR滤波器第i级抽头系数。

其相应的z变换为:(2-2)式中:z-i为N-1阶多项式。

图2.1 FIR滤波器的直接型结构2.2MATLAB设计数字滤波器的设计可以使用MATLAB(线性代数计算)软件,它是一种功能强、效率高、便于进行科学和工程计算的交互式软件包。

MATLAB中的工具箱(Toolbox)包含许多实用的程序。

滤波器设计就包含在Toolbox下的signal中。

下面简单介绍一下用MATLAB设计FIR滤波器的方法。

(1)设计低通FIR滤波器(采用Hamming窗):B=FIR1(N,Wn)其中,N为滤波器的阶数,Wn为归一化截至频率,0.0<Wn<1.0,1.0对应于半抽样速率。

返回值B为一个N+1维矢量,即滤波器系数。

(2)设计高通FIR滤波器(采用Hamming窗):B=FIR1(N,Wn,’high’)其中,N和Wn的含义与低通滤波器相同。

(3)设计带通FIR滤波器(采用Hamming窗):B=FIR1(N,Wn)其中,Wn是一个二维矢量,Wn=[W1,W2],W1和W2分别对应于阻带的低端频率和高端频率。

还可以设计其他类型的滤波器,具体查阅MATLAB参考书籍。

还有另一个比较直观的设计滤波器的方法,利用MATLAB里的Filter Design & Analysis Tools设计滤波器比较直观。

Fliter Type选择低通,高通,带通或者带阻滤波器。

Design Method选择IIR还是FIR滤波器,后面下拉菜单选择类型,程序里采用的是加窗类型。

Fliter Order选择滤波器的阶数,程序中采用63阶,即系数为64点。

相关主题