DSP与MATLAB的语音数据采集和处理系统
1 引言
目前迅速发展的数字信号处理器已在数据采集、通信及多媒体等领域中得到广泛的应用。本系统采用TI公司16位定点高速芯片TMS320C5410和专用语音采集芯片TLC320AD50进行数据采集和相关滤波、压缩处理,并将最终的数据流经串口送入计算机。在计算机中使用MATLAB控制串口接收数据并完成解压、回放、编码、通信仿真等处理。
2 硬件接口电路
2.1 TMS320C5410外部扩展电路
TMS320C5410是TI公司于1996年推出的定点数字信号处理器。它运行速度快,单周期定点指令执行时间10ns或8.3ns,远大于语音采集和处理的要求。另外它采用修正的哈佛结构,程序与数据分开存放,内部具有8条高度并行性的总线。其中,一组程序总线,三组16位数据总线和四组地址总线。允许数据存放在程序存储器中,并被算术指令直接使用,大大提高了运行速度和灵活性。CPU具有40位算术逻辑单元,两个独立的40位累加器,17×17位并行乘法器,一个40位桶形移位寄存器、8个辅助寄存器、2个辅助寄存器算术逻辑单元。最大可有8M字可寻址程序存储空间,可访问的数据存储空间有64K字,I/O存储器空间有64KB。其中片内64KB的RAM包括两块2KB的DARAM,七块8KB的SARAM以及片内16KB的ROM配置位程序存储器。片上集成一个16位定时器、软件可编程等待状态发生器、六通道直接存储器访问(DMA)控制器、三个多通道缓冲串口(McBSP)以及一个8位增强型主机接口(HPI8)。
图1为DSP与存储器的接口电路,其中PS、DS、IS分别为程序、数据和I/O空间选择信号。MSTRB、IOSTRB分别为存储器和I/O选通信号。
另外,由于FLASH存储器与EPROM相比有更高的性价比,而且体积小,功耗低,可电擦写,使用较方便。因此,本系统也扩展了一片FLASH存储器,图2为DSP与FLASH的接口电路。FLASH芯片为AMD公司的AM29LV400B,该芯片为单电源供电,支持整片擦除,每个分区有保护,避免意外擦除,并且使用寿命很长。
2.2 TMS320C5410与TLC320AD50的接口电路
AD转换是本系统的重要组成部分,要着重考虑转换精度和抗干扰问题。本系统所用AD和DA转换芯片为TI公司的TLC320AD50,它在一个封装中集成了两种功能,可同时进行AD和DA转换。图3为TMS320C5410和TLC320AD50的接口电路。
AD50采用16位过采样sigma-delta技术,以8K的采样率对输入的语音信号进行采样、量化,按同步串行方式传给5410进行处理。AD50向CPU发出帧同步和移位时钟信号来控制数据的串行传输。在此需说明一下,本系统主要用来将语音信号通过AD转换采集进来,然后串行发送给PC,在PC中用MATLAB接收信号并进行处理。整个过程中DA转换并不在信号处理的主要流程中,DA转换只是用来验证采集数据时所用到的滤波、压缩算法的正确性与合理性。所以,在编写系统软件时并没有将DA转换写入。此外,把DA转换加进来也是为了丰富系统硬件资源利于今后进行功能扩展。
2.3 TMS320C5410与PC机的串口通信
本系统采用MAX232E构成5410与PC间的通信接口。MAXIM公司的MAX232E采用单5V电源供电,使用时只需外接4个电容就能完成TTL与RS232间的电平和逻辑关系的转换。经过DSP系统处理的语音信号通过串口以9600b/s的速率送入计算机,在计算机中通过MATLAB控制串口接收数据,并且利用MATLAB强大的数据处理能力对语音信号进行处理。
3 软件实现
本系统的软件由上位机部分和下位机部分组成。其中,下位机部分主要是针对DSP编程完成语音信号的采样、量化、滤波、压缩编码、以及与PC的串行通信。上位机部分主要是采用MATLAB语言编程进行串口数据接收、解压缩、以文件的形式存储数据并且最终将该数据文件送入本人用MATLAB语言完成的一个通信信号处理系统进行进一步处理。
3.1 下位机部分
整个下位机部分的程序流程图如图4所示,其中滤波部分为一个FIR高通滤波算法。这是因为主要采集的对象为语音信号,而TLC320AD50内部只有一个低通滤波器,可以用于滤除高于3.4kHz的干扰信号,但是对于低于300Hz的干扰则无能为力,所以针对DSP编程设计一个FIR高通滤波器滤除低频干扰。FIR滤波器在数学上可表示为:
式(1)中x(n)为最近的输入信号,x(n-k)为延时了k个取样周期的输入信号,y(n)为时刻t=nT的滤波器输出信号,N为滤波器的阶数。h(k)是第k个延时节的加权值,既滤波器系数,可由MATLAB的kaiserord函数和fir1函数共同算得。从计算结果可以看出,一个N(设N为偶数)阶的FIR滤波器具有系数对称性,从而其输出方程可进一步简写为:
y(n)=h0[x(k)+x(k-N+1)]+h1[x
(k-1)+x(k-N+2)]+Λ+
nH/2-1[x(k-N/2+1)+x(k-
vN/2)] (2)
根据(2)式可以编写相应程序完成FIR高通滤波。
语音压缩部分采用的是非失真的压缩算法。具体为:当有两个以上连续相等的数据时,可以用3字节表示,即前2字节相等表示被压缩的数据值,后1字节表示被重复次数。由于语音信号自身的特点,即冗余度大,这就为此种压缩提供了可能。同样,在解压时,程序读入数据流,当遇到两个相等数据时则重复此数,重复次数由后一个数据决定。
3.2 上位机部分
本次设计中比较新颖的地方就是上位机部分采用MATLAB控制串口接收并处理数据。比起VC或者VB,用MATLAB作上位机程序有其独特的优势。MATLAB自带很庞大的函数库,控制串口有serial等函数,语音的回放有wavread函数,至于信号处理更是MATLAB的强项,它自带的信号处理工具箱函数大大的缩短了系统软件开发的周期。另外,MATLAB作人机交互界面也很方便,其自带的GUI工具包使整个过程快捷、流畅,比起VB也逊色不了多少。
3.1.1 MATLAB的人机交互软件设计
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)