适于语音处理的SDA80D51芯片及其数字录放音系统
G.723.1算法属于混合编码。语音模型是基于线性预测理论的全极点模型。输入是16bit的PCM码流,然后采用合成分析、矢量量化等方法,以感觉加权后的语音基音残差信号能量最小为准则进行编码。有两种类型编码方式,一种是6.3kb/s多脉冲最大似然量化方法(压缩率20:1),另一种是5.3kb/s代数码本激励线性预测ACELP(压缩率24:1)。后者的压缩率高,编码速率低,这可以降低系统存储语音时所需存储器的容量。而且解码算法简单,回放语音时不会有延迟感,语音清晰。

3 语音录放音系统硬件设计
语音录放音系统硬件电路的系统框图如图2所示。由于芯片内(虚线内)集成了许多功能模块,使得电路的结构变得非常简单。
SDA80D51的RS232串行口通过MAX3222匹配电压后,连接到计算机。
芯片的启动支持SPI、I2C和RS232串口三种方式。本系统采用I2C启动方式,选用ATMEL公司的24C64。上电后,片内固化在ROM上的程序会从选定的I2C芯片拷贝256字节客户启动程序到片内程序区ff00h~ffffh处,最后把程序指针指向ff00h,开始执行。
系统程序存在SST28LF040中,由启动芯片中的用户启动程序把系统程序装载到芯片内部的RAM里,然后处理器会执行RAM中的程序指令。
语音经过编码压缩后存储在三星公司的KM29U128T(16M×8bit)内。它的寻址采用串行方式,即8根数据线既作地址线也作数据线,先输入地址,再传送数据。这样,用很少的SDA80D51地址线就可寻址很大的空间,记录大量的语音数据很方便。
用8根GPIO线实现一个4×4的小键盘,可用来作为控制接口。在录放音时,可以通过对键盘的扫描来决定下一步骤。
4 软件设计
由于要对芯片内的功能模块、系统控制和编解码算法进行编程,这使得软件设计量比较大。考虑到本文的篇幅,这里只介绍总程序结构和录放音的控制部分。
总程序框架采用前后台的工作方式。前台轮寻各个任务引擎,判断是否有任务需要处理。若有,切换状态并执行该任务;若没有,就继续查询。后台主要完成对硬件的接口、中断处理程序以及缓冲硬件数据。前台和后台的通讯是靠共享缓冲区来完成的。这种前后台的工作方式可处理多任务,每个任务只占用一个时间片。
数字录放音程序在整个软件设计中只有一个任务,它提供一个任务引警程序,由前台来调用。具体工作过程是OAK接CODEC模块,负责采集数据、编码和解码算法以及语音的回放;M8051负责配置系统工作寄存器和对FLASH的读写。两个核之间通过FIFO发消息,消息的定义格式(C语言)如下:
typedef union tag_FIFO_MESSAGE
{
struct
{
struct
{
BYTE bIdSource://发送方ID
BYTE bIdDest: //接收方ID
WORD wMsgType; //发送消息类型
《适于语音处理的SDA80D51芯片及其数字录放音系统(第2页)》