高质量、低速率的语音编码算法在现代通讯系统中地位越来越重要,被广泛应用于诸如IP电话、语音信箱、军事无线通讯等领域。特别是在一些特殊的应用领域,信道带宽很窄而且误码率较高,要在这种信道上实现语音通讯,低速和甚低速语音压缩编码技术是关键。以前由于硬件条件的限制,此类的低速率复杂编解码算法往往只能停留在原理和计算机实现阶段。近些年来,由于VLSI技术的蓬勃发展,尤其是高性能数字信号处理芯片的DSP的普及,这些编码算法开始大规模的运用到了现实领域。本次设计就是为这套军用语音编码算法标准设计一个通用编解码平台。该平台已经做为嵌入式低功耗语音模块,应用到语音编码和语音合成等领域,并已小规模量产。
1. 语音硬件平台的总体介绍和系统框架
本语音信号处理平台需要考虑以下几个方面的设计要求。在运算量方面,本平台上运行的几种语音编码算法都具有比较高的运算复杂度,经过CCS的仿真测试结果表明,至少要求DSP芯片有50MIPS的处理能力。在接口设计方面,搭载本声码器模块的通讯平台定义了如表1所示的接口管脚,其中VIN和VOUT分别连接到通讯平台的话筒和听筒上的输入和输出话音,PTT连接到话筒的按钮上,按下PTT表示请求通话。TXD和RXD分别是发送和接收的数字语音码流信号,RTS和CD分别是发送和接收码流指示,为低电平的时候表示码流有效。TXC为系统的同步时钟。在功耗方面,由于是手持式设备,要求采用低功耗设计,以延长电池的使用时间。另外,设计系统的安全性也是一个需要考虑的因素。
基于以上几项设计要求,以及以前设计的原型系统原理[7],我们提出了一个基于TMS320VC5510A2和MSP430F149的设计方案。[1] 5510A2是德州仪器公司的55系列DSP的最高端的产品,这个系列的DSP是特别针对手持式终端设备应用场合设计的,同等条件下其内核的功耗仅为54系列DSP的三分之一,而且具有更高的代码执行效率,其指令也与54系列的相互兼容,可以很方便的进行代码的移植。5510A2的最高数字信号的处理能力为200MIPS,能够很好的满足本平台对运算的要求。[6]MSP430F149是德州仪器生产的一款极低功耗的16位RISC结构的单片机,我们用他来做为主控芯片辅助DSP完成程序加载和系统加密的功能。图1给出了该硬件平台的总体框图。
如图所示,当PTT被按下则表示请求通话,话筒输入的模拟话音VIN通过一个放大电路放大之后输入语音CODEC芯片TLV320AIC11,TLV320AIC11内的模数转换器将其转换成16bit的线性PCM格式并通过DSP的McBSP0口传送到DSP内部接收语音缓冲区,DSP在缓冲区内的数据在积累到一定帧长之后启动编码算法编成特定码率的码流。编好的码流被送入另一发送比特流缓冲区缓冲。该缓冲区内的信号在同步时钟TXC的上升沿被送到MODEM的调制模块调制并发射出去。同时,DSP检测MODEM的CD信号,当CD信号有效(低电平)时,在同步时钟TXC的下降沿锁存RXD上的数据并送入DSP内的接收比特流缓冲区。当接收比特缓冲区内的数据积累到一定长度时,DSP启动解码程序将其解码成16bit的PCM语音。该语音通过McBSP0口被送入TLV320AIC11,TLV320AIC11内的数模转换器将其转换成模拟的语音信号送入听筒。
语音CODEC芯片和DSP、MCU的硬件连接图如图2所示,[5]TLV320AIC11是德州仪器公司生产的一款语音CODEC芯片,其片内集成了一个A/D和一个D/A模块,并且有内置的运算放大器,因此仅需要很少的部件就可以将无源话筒和听筒连接到AIC11上。同时,由于它可以和TI公司的DSP无缝连接。如图所示,本次设计中AIC11工作在主模式下(M/S=1),在这个模式下,芯片的采样率为SCLK脚输入的时钟频率的1/256。SCLK脚输入的时钟来源于MCU的P5.5,这个管脚是MCU的副时钟输出为MCU主时钟的1/4。由于MCU工作在4.096MHz,因此CODEC的采样频率为8KHz。AIC11以8KHz的频率在FS上发出同步脉冲,并在DOUT脚上将16bit的PCM数据流发送到DSP。同时从DIN管脚接收DSP发送过来的经过解码的16bit PCM语音。由于使用了AIC11,系统的使用“粘合逻辑”部件大大减小,从而有效的缩小了硬件电路板的面积。
2. 硬件系统加密设计
有效的保护知识产权是产品开发必须要考虑的因素。TI的C55x系列DSP芯片是一种开放式的总线结构,因此别有用心的人可以通过JTAG接口和相应软件访问并分析DSP内部存储区的代码和数据,或者仅仅是直接导出并复制这些信息,就可以轻易窃取产品。针对这种现实情况,最好的解决方法是将程序交由芯片的生产商掩模入芯片内部的ROM储存区内,再去除DSP芯片中的JTAG逻辑模块, DSP内部的总线与外界隔离,这样从外部就无法获得片内的信息。然而当产品的产量不大的时候,掩模ROM在成本上来说是不现实的,需要另外想办法。
本次设计所提出的是一种基于TI公司MSP430F149单片机作为硬件加密部件的方法。[6]MSP430F149是TI生产的一款16位RISC结构的Flash型单片机。不仅功耗极低,其另外一个特点就是其内部的熔断型Flash储存单元。当开发过程结束,程序写入MSP430内部的Flash之后,开发者可以将Flash连接在MSP430总线上的融丝融断,熔断之后如果想访问其内部的程序和数据,必须在单片机的JTAG引脚上加上一定时序的信号,进入单片机内部的一段BOOTSTRAP程序,该BOOTSTRAP程序要求用户向一个密码寄存器内写入一个32个字节的密码,如果该密码和事先写入Flash特定位置的一个密码相符,才能访问片内的程序和数据资源,否则只能允许进行擦除整个Flash的操作。通过这种机理达到保护用户程序数据代码的目的。
鉴于MSP430F149的内部数据无法复制和访问的特点,我们提出了一种基于MSP430F149的硬件加密方法。
图3是MSP430和DSP之间的硬件连接示意图[3]。如图所示,这种连接方式将DSP和MCU配置成了16位复用连接模式(HMODE=0),数据和地址共享HD总线。HRW、HCNTL0和HCNTL1的不同组合分别表示对DSP的EHPI口的三个寄存器HPID(数据)、HPIA(地址)、HPIC(控制)读写,具体的组合方式如表2所示。
具体加密方式简述如下:
1)为每一块电路板指定一个128位的密钥,密钥的选择完全随机,只要不同板子不相同即可。将密钥和加密算法(DES或是其他的加密算法)烧写入MSP430的内部做为DSP boot程序的一部分。
2)使用该密钥和加密算法,将加密后的语音编解码算法的程序和数据烧写入DSP的外部存储Flash芯片之中。
3)将DSP设置成工作于HPI口boot模式,在每次重启之后,主机将一段BOOT程序装入起始位置为0x10000程序空间里(该段BOOT程序中包含了解码程序),并将128位的密钥load到DSP内部的某个特定位置。主机将DSP的RST引脚置高表示主机的load过程结束。DSP自动从0x10000的位置开始执行程序,这段程序从Flash中读入加密了的程序和数据,并使用主机写入的解密程序并结合128位的密钥进行解密,解密后的程序和数据被装载入DSP的程序和数据段内开始正常的运行。
由于每块电路板对应于一个唯一128位密钥,因此DSP的外部Flash中加密的程序和数据对于窃密者来说完全没有意义。该密钥和解密程序被保存在MSP430中,因此不可能被窃取或者复制。他们只有在主机启动的时候才被动态的load到DSP中。DSP的程序在开始执行正常的解码程序之前运行一段程序覆盖这段lood区间,于是,窃密者便无法获知启动的具体操作。
4)将比特流打包解包程序放置在MSP430中。编码时当DSP中的每一帧接收语音编成特定长度的比特流之后,就向MSP430发送一个中断请求。当收到该请求之后,MSP430通过DSP的EHPI口读入该比特流,并调整各个比特位之间的顺序。调整之后的比特流被回写入DSP的发送比特流缓冲区,并根据同步时钟传送到MODEM。同样,当DSP接收比特流缓冲区接收满一帧时,向MSP430发送中断,MSP430在接收到这个中断之后通过EHPI口读入接收比特流缓冲区内的数据,完成比特位置的重排的恢复。
这种方式可以有效的保证代码的安全性以及整个系统的保密性。对于基于开放总线的DSP系统来说,这种方式不失为一个很有效的通用的硬件加密方法。
3. 低功耗设计
本硬件平台的低功耗设计的从三方面出发,1)选择低功耗的器件。2)充分利用芯片的低功耗模式;3)动态的改变芯片的运行频率。
选用低功耗的器件:这是节省功耗的最直接的方式,现在的芯片大多通过降低内核供电电压降低功耗,现行的低功耗器件的供电电压一般都小于2V,TI的DSP大都采用两种电压驱动,内核电压1.2-1.6V,I/O电压3.3V,这既能有效的降低内核动态功耗,还能兼顾I/O的电平兼容性。TI公司的MSP430系列的MCU也是一款功耗相当低的器件,在3.3V下,其正常工作通常只需要十几个mW的供电,如果将其设置成IDLE或者睡眠模式模式,其功耗将会更低。这些都是我们选择器件重点考虑到的因素之一。
充分利用芯片的低功耗模式:[4]5510A2芯片内部划出了五个独立的IDLE域(Domain),分别负责CPU、DMA、CACHE、外设、时钟生成器、EMIF接口的配置。每个域可以独立的将该域管辖的多个部件设置成活动模式或IDLE模式以此降低DSP地功耗。针对本次设计,由于没有使用到DMA、CACHE、时钟生成器三个域中的外设,故将这三个域设置成了IDLE模式。EMIF域在DSP和MSP交换数据(为了调整发送和接收的比特流)时才被置为活动,其他时候被置为IDLE。通过这样的处理,避免了空闲的部件白白消耗能量。[5]TLV320AIC11也可以单独的将A/D和D/A部分禁用。当PTT没有按下时,表示没有话音输入,这时可以将A/D部分置为IDLE状态。同样的,当MODEM的CD信号为高的时候,表示没有有效的数字码流输入声码器,故在此时可以将D/A部分设为IDLE状态。通过对着这个芯片的低功耗模式的操作,进一步降低了系统的功耗。
动态频率控制:这种方法的及根据预测的算法运算量的大小,动态的调整芯片的运行频率,从而达到节省功耗的目的。在本文设计的平台上运行的三种低速率语音编解码算法中,600bps、1200bps、2400bps的峰值运算量分别为37.4MIPS、59.2MIPS、44.8MIPS,因此将DSP的工作频率分别设置在40.096MHz、65.536MHz、49.152MHz。实验证明,这样处理能够很有效地降低DSP的内核功耗。
4. 小结
该平台具有强大的语音信号处理能力,较低的功耗以及加密等特点。实践证明,该平台在其应用场合完全达到了原先的这些设计目标,具有广阔的应用前景。