摘 要: 介绍了基于TMS3.0VC5510A实现的低功耗通用语音处理平台的方案,并且在其上实现了多种语音压缩算法以及基于算法的自适应功耗控制,较好地达到了低功耗的要求。
语音信号处理在通信领域得到了广泛的应用,语音传输的数字化是全数字化移动通信系统中的重要环节。高质量、低速率的话音编码技术与高效率的数字调制技术结合,为现代移动通信提供了优于模拟移动通信的系统容量、通信质量和频谱利用率。现代移动通信的发展也对系统的功耗提出了较高的要求,因此低功耗、高性能的DSP已经越来越广泛地被应用于各个领域。本文介绍采用美国德州仪器公司(TI)最新开发出来的TMS320VC5510A,利用其数据处理能力及低功耗特性,并且结合MSP430F149增加了系统的控制能力,进行各种语音算法的实时实现,对于实际开发语音处理系统具有重要的参考价值,并且该平台已经应用于实际产品中。
1 语音处理系统组成及其原理
1.1 语音处理系统的组成
语音算法多种多样,要求语音处理系统的前端提供符合算法精度要求的数字采样信号,因此要求前端的A/D、D/A具有较高的采样率和采样精度。语音处理系统还有实时性的要求,在一些应用中还要求语音编解码算法、加解密算法、信道编解码算法甚至调制、解调算法都在同一块芯片中实现,因此要求系统的数据处理能力强,存储空间大。在通常的DSP应用系统中,DSP加上存储器、A/D、D/A和外设接口就可以实现。但是越来越多的场合要求系统完成与外部系统的通信和控制,例如人机接口、信道传输设备等控制功能。这些均可以采用MCU+DSP的结构,以弥补单一DSP系统控制能力差的不足。经过仔细选择比较,最终的语音处理系统的硬件结构设计如图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。
系统的主要数字信号处理芯片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所示。
DSP主程序配置完TLV320AIC10的内部寄存器以后,会设置相应的中断处理程序,打开相应的中断屏蔽,通过中断服务程序进行语音样点的传输。
2.3 MCU与DSP的接口电路及通信方式
DSP(TMS320VC5510A)提供了增强型主机接口(EHPI),可以工作在数据地址复用和不复用2种模式。在本例中采用了数据地址复用方式。MCU(MSP430F149)与DSP EHPI具体连接方式如图4所示,EHPI的接口时序如图5所示。
主机接口的关键控制信号线功能简述如下。
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所示。
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等算法,并且获得了良好的效果,具有广阔的应用前景。