当前,无论军用还是民用电台,都在朝着多模式的方向发展。这就要求电台的语音处理模块能够适应多种调制方式以及多种数据速率。DVSI公司的AMBE2000是一款实现了AMBE语音压缩、解压缩软件算法的芯片;ADI公司的AD73311是一款16位语音A/D/A转换芯片。二者的共同特点是配置灵活、接口简单高效,配合使用能够在多种调制方式、多种数据速率下获得优良的语音质量。本文介绍二者的功能特点及内部结构,在此基础上给出多模式电台中语音处理模块的实现方案。
AMBE2000介绍
主要特点
压缩数据率在2kbps~9.6kbps范围内可调节。当速率在4kbps以上时,可得到接近长途电话的话音质量;当速率为2kbps时,仍然具有较高的可懂度和自然度;
可变速的FEC(前向纠错)功能,可根据信道情况,灵活地选择FEC的速率;
低功耗(65mW@3.3V,0.11mW深度睡眠)、低复杂度;
具有语音激活检测(VAD--Voice Activity Detection)功能、舒适噪声(CN--Comfortable Noise)产生功能、回声抵消(EC--Echo Canceling)功能;
具有DTMF信号检测和产生功能;
可以通过配置管脚、写控制字的方式来设置工作状态;
通过串口进行语音数据、压缩数据、控制字的交换,简单高效。
基本结构和主要管脚
如图1所示,AMBE2000可以分为独立的两部分--编码器和译码器。编码器从语音串行接口接收语音数据(可以是16bit线性、8 bit A律或8 bit u律),从信道串行接口输出压缩数据;反之,译码器把从信道串行接口接收到的压缩数据还原为语音数据,从语音串行接口输出。编码器和译码器是完全异步的。语音串行接口和信道串行接口通常分别接A/D/A转换器和微处理器,这里我们分别选用ADI公司的AD73311和TI公司的TMS320VC5416。
图1 AMBE2000的基本结构(略)
配置方法
加电后首先对芯片进行硬件复位(将管脚RESETN置低),复位结束(管脚RESETN由低变高)后的200ms内,芯片会根据各控制管脚的电平来设定自身的工作状态。这200ms内各控制管脚的电平必须是稳定的,200ms之后,控制管脚电平的变化不会影响芯片的工作状态(除非再次复位),欲改变芯片的工作状态,可以通过信道串行接口往芯片写控制字。
AD73311
主要特点
采样率64KHz、32KHz、21.33KHz、16KHz、12.8KHz、8KHz可选;
可变增益的输入(0~38dB)、输出(+6~-15dB)放大器PGA(Programmable Gain Amplifier);
通过串口传递语音数据、接收控制命令,简单高效;
最大功率50mW@2.7V。
基本结构和主要管脚:
输入的模拟信号经过可变增益放大器、A/D转换器后转换为数字信号,通过串口输出;反之,来自串口的数据流被转换为模拟信号后,经过可变增益放大器输出。
配置方法
AD73311的主要工作模式有两种--编程模式和数据模式。芯片复位之后处于默认的编程模式,这时可以通过串口往芯片内的控制寄 存器写控制字,来设定工作状态。设定完成后,还要写“进入数据模式”的命令,以进行正常的数据交换。
图2 AD73311的基本结构(略)
从以上描述可看出,AMBE2000和AD73311的主时钟都为16.384MHz,并且可以通过配置CODEC_SEL[1..0]将AMBE2000的语音接口设置成专门与AD73311通信,所以AMBE2000和AD73311配合使用,会使得电路设计十分简单。
基于AMBE2000和AD73311的语音处理模块实现方法
实现方案
基于AMBE2000和AD73311的语音处理模块,能够兼容多种调制方式、多种数据速率,芯片简单高效的接口也简化了电路的设计,其实现方案如图3所示。该语音处理模块的灵活性主要体现在:
图3 基于AMBE2000和AD73311的语音处理模块(略)
1、FPGA设定AMBE2000复位管脚和控制管脚的电平,从而灵活地设置AMBE2000的工作状态;
2、复位之后,DSP可以通过写控制字来设置AMBE2000和AD73311的工作状态;
3、FPGA切换数据交换的路径,从而适应不同的调制方式。在模拟调制方式(如AM、FM等)下,数据在AD73311的串口、DSP的多通道缓冲串口0(McBSP0)之间交换,无需经过语音编、解码;而在数字调制方式(如PSK、FSK等)下,数据在AD73311的串口、AMBE2000的语音串行接口、AMBE2000的信道串行接口和DSP的多通道缓冲串口1(McBSP1)之间交换。
工作过程
总体工作流程如图4所示。首先进行DSP的初始化,其中包括McBSP0和McBSP1的初始化,然后对AMBE2000、AD73311进行复位(之后的200ms内AMBE2000将自行完成工作状态的设置),再通过FPGA的切换将AD73311的串口与McBSP0相连,把DSP的控制命令通过串口送入AD73311,主要是设定采样速率、输入和输出增益,最后还要进入数据模式。若电台工作在数字调制方式下,还需在AD73311的设置完成后将AD73311的串口与AMBE2000的语音接口相连。最后进入空循环,等待DSP的串口中断,在串口中断中完成数据的交换。DSP与AD73311的数据交换没有严格的帧格式,只需按照串口时序传输即可,这里不再赘述,下面着重讨论DSP与AMBE2000的数据交换。
图4 总体工作流程(略)
DSP和AMBE2000的数据交换
AMBE2000的压缩数据格式
AMBE2000的压缩数据格式有两种:格式化和非格式化,这里选择格式化,因为其灵活性更强。格式化模式下,编码器约每20ms生成一个压缩数据包,并通过信道串行接口进行一次集中传输。数据包由24个字组成,每个字16比特,前12个字由帧头、状态及控制信息组成;后12个字是信道数据,当压缩数据率低于9.6kbps时,前面为有效数据,后面填零。同样,要对解调数据进行译码,信道应该约每20ms向译码器提供一个压缩数据包,这时可以通过向AMBE2000写适当的控制字来改变由管脚设定的工作状态。数据包传输时序如图5所示。结构如表1所示。
图5 压缩数据包传输时序(略)
表1 AMBE2000的压缩数据包结构(略)
AMBE2000编码、DSP取数
因为AMBE2000的编码数据包有一个帧头0x13EC,所以考虑在McBSP1接收中断中通过匹配帧头来定位有效数据。另外,第2~6个字为压缩数据率特征字,在特定的数据率下,这5个字也是确定的。比如,在压缩数据率为4kbps(2.4kbps语音数据+1.6kbps前 向纠错)时,第2~6个字分别为:0x1030、0x0001、0x0000、0x341A、0x6750,所以可以采用多帧头匹配的方法来提高有效 数据定位的可靠性。4kbps的压缩数据率下,有效数据为每帧的第12~16个字。DSP取数流程如图6所示。
图6 DSP取数流程图(略)
DSP送数、AMBE2000解码
解码时,AMBE2000要求DSP每20ms主动向其提供一包数据。这里由FPGA产生一个周期为20ms的中断/INT1,DSP在这个中断中将指针置零并打开发送串口,在串口中断中按照解码帧格式向AMBE2000送数。前12次串口中断发送帧头、控制字,可以改变AMBE2000的工作状态;第13~17次中断中依次发送解调数据;第18~24次中断发送零,第24次中断还需关闭发送串口。DSP送数流程如图7所示。
图7 DSP送数流程图(略)
结束语
本 文在介绍AMBE2000和AD73311功能特点和基本结构的基础上,详细讲解了二者在多模式电台中的应用。二者配合使用,不仅语音效果好、电路设计简单,而且能够适应多种调制方式、多种数据速率,满足多模式的要求。 |