基于FIR的语音信号滤波
数指针初始化时指向h(N-1),经过一次FIR 滤波计算后,在循环寻址的作用下,仍然指向h(N-1)。而数据缓冲区指针指向的是需要更新的数据,如x(n)。在写入新数据并完成FIR 运算之后,该指针指向x(n-(n-1))。所以,使用循环寻址可以方便的完成滤波窗口数据的自动更新。
图2.2 FIR 滤波器存储器里的数据存储方式
2.2 MATLAB软件介绍
MATLAB在数学类科技应用软件中在数值计算方面首屈一指MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,
第 5 页 共 21 页
基于FIR的语音信号滤波
2.3 FIR滤波器的Matlab设计
FIR滤波器的MATLAB设计数字滤波器实际上是一个采用有限精度算法实现的线性非时变离散系统,它的设计步骤为:首先根据实际需要确定其性能指标,在求得系统函数H(z),最后采用有限精度算法实现。MATLAB是一套用于科学计算的可视化高性能语言与软件环境。它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个界面友好的用户环境。它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术,是一个非常优秀的算法研究与辅助设计的工具。在设计数字滤波器时,通常采用MATLAB来进行辅助设计和仿真。用户只需在FDATool 或SPTool 图形工具里选择相应的滤波器设计方法,并填入滤波器设计指标,即可为用户生成所需的滤波器频率响应特性。因为在SPTool 工具里可以看到根据设计指标得到的实际滤波特性的数字显示,所以可以更准确地通过拖动特性曲线或改变指标使实际滤波器更满足要求,所以设计时,可先在SPTool 里预设计,然后再将实际特性指标移到FDATool 中,利用其提供的定点分析工具将滤波系数变为定点系数,并观察系数截断后的频率响应。最后通过FDATool 工具提供的可将数据以C 头文件方式导出功能,将滤波系数以Q15格式输出,供DSP 处理用。针对设计要求,采用Kaiser 窗函数法进行设计,代入相应的参数,求得FIR 滤波器系数。
FIR滤波器的MATLAB设计与仿真 4.1 FIR滤波器的设计方案 FIR滤波器的设计可用高级语言,如C语言、汇编语言实现,也可以采用MATLAB的数字信号处理软件包提供的专用函数来直接求取FIR滤波器的系数。在MATLAB中,提供了几个设计滤波器的函数,如fir1、fir2等。fir1的功能--基于窗函数的FIR数字滤波器的设计—标准频率响应。fir1函数实现了加窗线性相位FIR数字滤波器设计的经典方法。其缺省的窗函数为哈明窗。其调用句法为:
b=fir1(n,Wn);
b=fir1(n,Wn,‘ftype’); b=fir1(n,Wn,window);
其中n为滤波器的阶数,Wn为0到1之间的数,window为窗函数的类型,ftype为滤波器的类型,即可以是低通、高通、带通或带阻。本文采用fir1函数进行FIR滤波器的设计,具体方案:首先输入所要求的技术指标;然后根据计算归一化频率的公式求出归一化频率。
第 6 页 共 21 页
基于FIR的语音信号滤波
3 硬件设计
3.1 语音处理的总框图设计
输入语音信号经过高精度且高速的A/D转换器转换后得到一串数字信号,完成了语音信号的采集后,由串口输入到DSP芯片内按语音处理算法进行高速处理,语音信号处理完成后再输入到D/A转换器中还原成模拟的声音信号,最后转为输出语音信号。
总体结构如图3.1所示
输入信号信号 ADC 信号输入缓冲区 DSP 外部逻辑电 路 FLASH DAC 输出信号信号 信号输出缓冲区 SRAM PC机 图3.1 硬件总体结构框图
3.2 硬件模块的设计
3.2.1 音频转换模块
在选择模转换芯片型号时,需要考虑A/D的转换精度、采样速率以及芯片的工作电压和接口电压。声音信号经ADC转换后得到的数字信号,输入到数据缓冲区中,TMS320VC5402从中提取数据,在系统内部由各种处理算法将录进的音频信号进行快速运算和处理,经处理后的数字信号再输入到输出缓冲区中,经DAC转换器还原成模拟的声音信号。根据这次设计要求,选择的芯片是TI公司的TLC320AD50芯片。利用缓冲区的目的是进行语音信号的实时处理,系统中各模块是并行运行的,一部分信号正在
第 7 页 共 21 页
基于FIR的语音信号滤波
ADC中进行转换,而另一部分信号则在DSP处理器中进行算法处理,整个系统是以流水线的方式进行工作的。 3.2.2 存储器和数据通信模块
系统存储器除了存储系统运行时所需程序和一些先期处理程序外,就作为语音信号的数据缓冲存储器用。FLASH作为程序存储器,SRAM作为外部程序存储器和数据存储器,外部逻辑电路用于实现地址译码和其他控制功能,以便实现DSP与FLASH、SRAM之间的连接。
经DSP芯片处理的大量数据,通过串口传送到PC机上显示或作进一步处理,这就需要通过UART并、串转换芯片TL16C550C将并行数据转换成为串行数据,再经过电平转换和PC机通信。
3.3 TMS320VC5402芯片的介绍
本次设计的核心芯片选用的是美国TI公司的TMS320VC5402芯片。它是TI公司1999年10月推出的性价比较高的定点数字信号处理器,与其它TMS320C54X其他芯片一样,TMS320VC5402具有高度灵活的可操作性和高速的处理能力。其主要特性是具有先进的改进型哈佛结构,运算速度快,内部存储空间大,外部接口性能好等,具有先进的多总线结构,三条16 位数据存储器总线和一条程序存储器总线;40位算术逻辑单元(ALU),包括一个40位桶形移位器和两个40位累加器;一个17×17乘法器和一个40位专用加法器,允许16位带/不带符号的乘法;单周期正规化及指数译码;8个辅助寄存器及一个软件栈,允许使用业界最先进的定点DSP C语言编译器;数据/程序寻址空间为1M×16Bit,内置4K×16Bit ROM和16K×16Bit RAM;内置可编程等待状态发生器、锁相环(PLL)时钟产生器、两个多通道缓冲串口、一个与外部处理器通信的8位并行HIP口、两个16位定时器以及6通道DMA控制器且低功耗。与C54X系列的其它芯片相比,C5402具有高性能、低功耗和低价格等特点。
该芯片属于低功耗定点DSP芯片,采用双电源供电机制,电源由内核电源(CVdd)和I/O(DVdd)电源两部分构成,其中内核电源为1.8V,可以降低功耗,I/O电源采用3.3V供电使得DSP芯片可以直接与外部低压器件接口,不需要额外的电平转换电路。
而TLC320AD50(以下简称AD50)是TI公司生产的一个16位、音频范围(采样频率
第 8 页 共 21 页
基于FIR的语音信号滤波
为2K~22.05KHZ)、内含抗混叠滤波器和重构滤波器的模拟接口芯片。它的主要特点有:双供电电压,模拟部分电路时5V供电,数字部分电路时3.3V供电;通用16位信号处理;可变采样速率,最高可达22.05KHz,精度可达16Bit;可以配置成主器件或从器件方式等。AD50芯片采用过采样∑-△技术,可进行A/D、D/A的高分辨率、低速信号转换,同时该芯片中的可选项和电路配置可以通过串行口进行编程。
3.4 主要硬件接口及实现
3.4.1 TMS320VC5402与A/D、D/A芯片的接口
语音信号处理包括两个电路:音频输入模拟信号的处理电路和音频输出模拟信号的处理电路。这两个处理电路的主要作用是将信号进行处理,使之更加适合A/D、D/A转换的要求,尽量避免由于输入输出引入的噪声。同时还可以调整输入输出的放大系数,使音频信号适合各种不同的功放和喇叭,得到最佳的语音效果。
模拟信号的输入采用差分输入方式,即使用两个运算放大器,将单端输入信号转换成差分输入信号,电路连接如图3.2所示。
图3.2 TLC320AIC23单端信号转换成差分信号电路
TLC320AIC23的D/A输出处理电路如图3.3所示。
第 9 页 共 21 页