语音信号处理在通信领域得到了广泛的应用,语音传输的数字化是全数字化移动通信系统中的重要环节。高质量、低速率的话音编码技术与高效率的数字调制技术结合,为现代移动通信提供了优于模拟移动通信的系统容量、通信质量和频谱利用率。现代移动通信的发展也对系统的功耗提出了较高的要求,因此低功耗、高性能的DSP已经越来越广泛地被应用于各个领域。本文介绍采用美国德州仪器公司(TI)最新开发出来的TMS320VC5510A,利用其数据处理能力及低功耗特性,并且结合MSP430F149增加了系统的控制能力,进行各种语音算法的实时实现,对于实际开发语音处理系统具有重要的参考价值,并且该平台已经应用于实际产品中。
1 语音处理系统组成及其原理
1.1 语音处理系统的组成
语音算法多种多样,要求语音处理系统的前端提供符合算法精度要求的数字采样信号,因此要求前端的A/D、D/A具有较高的采样率和采样精度。语音处理系统还有实时性的要求,在一些应用中还要求语音编解码算法、加解密算法、信道编解码算法甚至调制、解调算法都在同一块芯片中实现,因此要求系统的数据处理能力强,存储空间大。在通常的DSP应用系统中,DSP加上存储器、A/D、D/A和外设接口就可以实现。但是越来越多的场合要求系统完成与外部系统的通信和控制,例如人机接口、信道传输设备等控制功能。这些均可以采用MCU+DSP的结构,以弥补单一DSP系统控制能力差的不足。经过仔细选择比较,最终的语音处理系统的硬件结构设计如图1所示。
图1 语音处理系统框图
1.2 语音处理系统原理
如图1所示,模拟话音经过功放构成的带通滤波器,通过TLV320AIC10的模/数转换器(ADC)转换成8 000Hz的数字信号,该采样信号的精度为16位,对输入模拟信号的幅度要求为-3.3~3.3V。数字化的语音信号通过同步串口(McBSP)传送到DSP(TMS320VC5510A)内部缓冲区,送入编码器进行编码,得到的数据流通过同步串口(McBSP)及信道接口传给终端,经过信道编码后传输。从信道收到的码流经过终端解码通过同步串口(McBSP)传给DSP内部的缓冲区,送入解码器进行解码,得到的数字化语音再通过同步串口(McBSP)传给TLV320AIC10的模/数转换器(ADC),转换成模拟信号输出。为了增强该硬件平台的控制能力,DSP(TMS320VC5510A)通过主机接口(HPI)与MCU(MSP430F149)进行通信。并且增加了存储器Flash(SST39VF800A),以保证可以进行脱机运行。
2 系统具体实现
2.1 主要芯片选择及简介
该平台采用的TLV320AIC10是德州仪器公司推出的一款通用型低功耗16位A/D、D/A音频接口芯片,适用于语音以及宽带音频处理;其数字接口采用同步串口方式,可以非常方便地与DSP的同步串口(McBSP)相连,其中SCLK提供位时钟信号,FS提供帧同步信号,DIN为串行数据输入,DOUT为串行数据输出。TLV320AIC10与DSP的串口连接方式如图2所示。其中TLV320AIC10工作在主模式(Master Mode)下,DSP的同步串口(McBSP)工作在从模式(Slave Mode)下。同步串口的时钟由TLV320AIC10的SCLK提供,为2.048MHz。
图2 TLV320AIC10 与TMS320VC5510A 连接示意图
系统的主要数字信号处理芯片TMS320VC5510A与TMS320VC54X相比,功耗更低,代码执行效率更高,而且与TMS320VC54X的指令完全兼容,具有以下特点。
(1)资源丰富。32位宽的外部存储器接口(EMIF),2个20位宽的定时器,6通道的DMA控制器和3个多通道缓冲串口(McBSP),16位增强主机并行接口(EHPI),8个通用管脚(GPIO)。
(2)数据处理能力强而且运算速度快。TMS320VC5510A采用了改进的哈佛结构,C55X的DSP在一个总线周期内同时进行3个数据读和2个数据写的操作,采用了并行的双MAC结构,提供了更强大的并行处理能力。
(3)功耗低。TMS320VC5510A采用高性能静态CMOS技术,I/O供电电压为3.3V,内核供电电压为1.6V,而且有多种低功耗工作模式,有效地降低了系统功耗。内核静态功耗为0.112mA/MIPS,I/O静态功耗为0.148mA/MIPS。内核动态功耗约为0.628mA/MIPS。
为了增加平台的控制功能和扩充能力,采用了TI公司的微控制器MSP430F149。该芯片是TI公司的一种超低功耗的Flash微控制器,内核为16位RISC CPU。其存储器模块是目前业界所有内部集成Flash存储器产品中能耗最低的一种,具有超低功耗工作模式即活动模式(仅MSP430)且:400?滋A/MHz,3.0V。MSP430F149可以提供5种工作模式,最低功耗消耗可达1?滋A/MHz;采用IAR开发环境,可以直接进行C语言编程,开发起来方便快捷。
2.2 CODEC与DSP的接口电路设计
由于CODEC(TLV320AIC10)与DSP(TMS320VC5510A)都是TI公司提供的高速芯片,因此二者在速度和时序上可完全匹配,能实现芯片间的无缝连接(二者的连接示意图见图2)。
其中TLV320AIC10的工作时钟由MSP430F149通过内部分频向TLV320AIC10的MCLK提供2.048MHz的时钟作为系统时钟。TLV320AIC10工作在主模式下,向TMS320VC5510A提供串行时钟SCLK和帧同步信号FS。帧同步信号FS由TLV320AIC10内部256分频后通过FS管脚输出,是脉宽为一个SCLK时钟的8 000Hz正脉冲信号。TLV320AIC10的复位信号由DSP的通用I/O管脚提供,PWRDWN管脚用于控制TLV320AIC10的工作状态:该管脚置低,TLV320AIC10停止工作,处于IDLE状态,达到节省功耗的目的;该管脚置高,TLV320AIC10处于正常工作模式。本例中在该管脚处加了一个上拉电阻,以确保TLV320AIC10处于正常工作状态。
DSP采用McBSP0与TLV320AIC10相连接,该McBSP0通用串口工作在从模式。BCLKR0/BCLKX0分别是通用串口接收和发送的移位时钟,BFSR0/BFSX0分别是接收和发送的帧同步信号,BDR0是接收数据引脚,BDX0是发送数据引脚。接收来的数据可以由帧同步信号触发中断,由中断服务程序进行读写;也可以通过DMA通道直接转换到特定的缓冲区中。
TLV320AIC10的帧可分为主帧和从帧。在主帧中进行采样数据的传输,在从帧中对TLV320AIC10的内部寄存器进行配置。当TLV320AIC10工作在15+1位模式时,主帧的最后1个位决定主帧之后的下一个帧是从帧还仍然是一个主帧。在TLV320AIC10初始化过程中,通过这种方式对其进行初始化,配置TLV320AIC10内部的4个寄存器。DSP配置TLV320AIC10寄存器的过程如图3所示。
图3 TLV320AIC10 初始化流程图
DSP主程序配置完TLV320AIC10的内部寄存器以后,会设置相应的中断处理程序,打开相应的中断屏蔽,通过中断服务程序进行语音样点的传输。
2.3 MCU与DSP的接口电路及通信方式
DSP(TMS320VC5510A)提供了增强型主机接口(EHPI),可以工作在数据地址复用和不复用2种模式。在本例中采用了数据地址复用方式。MCU(MSP430F149)与DSP EHPI具体连接方式如图4所示,EHPI的接口时序如图5所示。
图4 MSP430F149 与TMS320VCAA10A EBPI 连接示意图
图5 EHIP接口时序图
主机接口的关键控制信号线功能简述如下。
HD[15:0]:HPI数据线,双向,三态总线。在复用模式下,通过这16位总线传输地址和数据。
HA[19:0]:HPI地址总线。在复用模式下,HA[1]用作HCNTL1信号线,HA[2]用作HAS信号线。
HCS:HPI的片选信号线。作为MCU访问DSP时的片选信号,在访问过程中一直保持为低。本例中为了节省主机的I/O口线,将其一直接低。
HR/W:HPI读写信号线。标识着MCU与DSP的通信方向。该信号线为高,表示MCU从DSP的存储空间中读取数据;为低,表示MCU将数据写入DSP的存储空间。
HDS1/2:HPI数据控制信号。可以适应不同类型的MCU的数据控制信号。要将HCNTL2置高,本例中的接法是HCNTL1通过MSP430F149的P2.1来控制。
HRDY:HPI准备好信号。DSP通过该信号通知MCU当前主机接口是否可以访问。为低,DSP的主机接口忙,MCU不能通过它访问;为高,可以访问。
HCNTL0/1:HPI访问控制信号。在复用模式中,通过这2个信号决定本次MCU访问的是DSP的HPI接口的内部寄存器。
HAS:HPI地址控制信号。在复用模式中,直接置高。
HMODE:HPI模式选择信号。置高,HPI工作在非复用模式下;置低,HPI工作在复用模式下。
HINT:主机中断信号。当DSP将该信号线置低时,表示DSP请求主机中断。因此这根信号线应加上拉电阻。
HBE0/1:HPI字节使能信号。TMS320VC5510A中置低,忽略该信号。
MSP430F149通过向DSP主机接口内部的3个寄存器写入相应的数据来控制相应的通信方式。在复用方式下,这3个寄存器分别是HPIC(控制寄存器)、HPIA(地址寄存器)、HPID(数据寄存器)。为了提高在复用方式下的访问速度,DSP的HPI接口还提供了另外一个数据寄存器。当MCU访问连续地址时,可以通过HCNTL0/1选择利用这个数据寄存器进行连续访问DSP内部存储器,相应的地址寄存器会在每次访问这个数据寄存器之后自动增加。
MCU和DSP的通信通过中断完成。其中MSP430F149通过访问HPIC寄存器,将其中的DSPINT位置1来触发DSP的中断,而DSP则通过将HINT信号线置低来触发MCU的中断。
当前的硬件平台中,通过置I/O口线的方式实现了MCU对DSP主机接口的读写操作,可以选择通过主机启动DSP的方式[4]。启动过程的框图如图6所示。
图6 HPI 启动方式流程图
3 系统软件优化降低功耗
上面已提到,在硬件平台的设计中采用了低功耗的器件,属于低功耗设计中的静态技术。在系统软件的具体实现中,可以根据执行算法的情况进行动态调整,从而达到降低系统功耗的目的。由于DSP采用内部可编程锁相环(PLL)产生时钟,可以使处理器根据对于计算能力的即时需求动态改变运行速度。虽然系统提供了几种低功耗模式,但是相应的唤醒时间各不相同,实际中要根据具体情况对功耗和唤醒时间综合考虑。
由于MCU具有较强的事件响应能力以及DSP具有较强的数据处理能力,因此可以通过MCU针对不同算法动态地改变系统的工作频率及DSP的工作状态,从而降低系统功耗。例如在该平台运行清华大学自主研制的600、1 200、2 400bps语音算法,需要针对不同算法要求不同的数据运算量进行动态配置。DSP采用MCU提供的8.192MHz的时钟、通过片内集成的DPLL进行倍频得到所需要的主时钟。由于系统的部分代码是处于54兼容模式下,所以在系统软件的主函数中,当不需要进行编解码操作时,系统可以处于正常状态,即IDLE1或IDLE2状态。更具体的管理可以使用c55x系列的IDLE domain(IDLE域)机制进行管理[6]。3种状态具体描述如下:
NO IDLE:定时器、通用串口和内核均处于正常工作模式。
IDLE 1:定时器和通用串口正常工作模式,内核处于IDLE状态,由中断唤醒。
IDLE 2:定时器、通用串口和内核都处于IDLE状态,由中断唤醒。
针对不同的算法,由于要求的数据运算量不同,能够保证算法工作的最低系统频率也不同。通过对不同的数据运算要求动态调整系统的工作状态,可以最大限度地实现降低功耗的目的,从而实现针对不同运算量的功耗控制。实际使用中,当DSP:运行600SELP算法时,系统工作在32.768MHz;运行1 200SELP算法时,系统工作在40.960MHz;运行2 400SELP算法时,系统工作在24.576MHz。与单一的运行在81.92MHz情况下相比,系统功耗分别降低了41%、36%、48%,大大减少了系统功耗。
该硬件平台已经成功运行了G.723.1、G.729A/B和CVSD等算法,并且获得了良好的效果,具有广阔的应用前景。