关键词:语音压缩;格式字;FEC;VAD;AMBE2000
1 引言
AMBE2000是一种高性能、低功耗的单片实时语音压缩解压芯片,其压缩率可在2kbps~9.6kbps范围内由软件调节,且具有FEC(前向纠错)、VAD(语音激活检测)功能和DTMF信号检测功能,因此可广泛应用于卫星通信、数字移动通信、保密通信、语音邮件等方面。
2 引脚说明及特性参数
AMBE2000的主要特性及参数如下:
●具有高品质的语音质量;
●压缩数据率可在2kbps~9.6kbps范围内用软件调节;
●纠错率范围为50bps~7.2kbps;
●具有VAD(语音激活检测)/CNI(插入舒适噪声)功能;
●具有DTMF信号检测和产生功能;
●电源电压:+3.3V;
●工作温度范围:-40~+100℃;
●采用100脚TQFP封装。
表1 主机接口选择
端口类型 | 选择脚 | |
CH_SEL1 | CH_SEL0 | |
主动有格式 | 0 | 0 |
主动无格式 | 0 | 1 |
被动有格式 | 1 | 0 |
被动无格式 | 1 | 1 |
表2 语音数据位选择(无格式)
字中的语音数据位个数 | 选择脚 | |
BA_SEL1 | BA_SEL0 | |
1 | 0 | 0 |
2 | 0 | 1 |
3 | 1 | 0 |
4 | 1 | 1 |
AMBE2000的引脚说明如下:
CHANN_SEL0~1(75,77)脚:主机接口类型选择端?具体操作见表1所列;
BAUD_SEL0~1(80~81)脚:无格式语音数据位选择端?具体操作见表2所列?
RATE_SEL0~4(70~74)脚:语音压缩率与前向纠错率选择端?具体操作见表3所列;
CODEC_SEL0~1(84~85)脚:A/D和D/A接口选择端口?具体操作见表4所列;
表3 AMBE2000压缩数据率选择表
管脚74 | 管脚73 | 管脚72 | 管脚71 | 管脚70 | 语音速率(bps) | FEC速率(bps) | 总数据率(bps) |
1 | 1 | 1 | 1 | 1 | 2000 | 0 | 2000 |
1 | 0 | 0 | 0 | 0 | 3600 | 0 | 3600 |
1 | 0 | 0 | 0 | 1 | 4000 | 0 | 4000 |
1 | 0 | 1 | 1 | 0 | 2400 | 1600 | |
1 | 0 | 0 | 1 | 0 | 4800 | 0 | 4800 |
1 | 1 | 0 | 0 | 0 | 4000 | 800 | |
1 | 0 | 1 | 1 | 1 | 3600 | 1200 | |
1 | 1 | 0 | 0 | 1 | 2400 | 2400 | |
1 | 0 | 0 | 1 | 1 | 6400 | 0 | 6400 |
1 | 1 | 0 | 1 | 0 | 4000 | 2400 | |
1 | 1 | 0 | 1 | 1 | 4400 | 2800 | 7200 |
1 | 0 | 1 | 0 | 0 | 8000 | 0 | 8000 |
1 | 1 | 1 | 0 | 0 | 4000 | 4000 | |
1 | 0 | 1 | 0 | 1 | 9600 | 0 | 9600 |
1 | 1 | 1 | 0 | 1 | 3600 | 6000 | |
1 | 1 | 1 | 1 | 0 | 2400 | 7200 |
*注:压缩数据率也可通过控制字改变。
表4 A/D-D/A硬件配置
A/D-D/A类型 | CODEC_SEL1 | CODEC_SEL0 |
普通16位线性(采样率8kHz) | 0 | 0 |
AD公司AD73311(采样率32kHz) | 0 | 1 |
普通μ律(采样率8kHz) | 1 | 0 |
普通A律(采样率8kHz) | 1 | 1 |
VAD_EN(86)脚:使能语音激活检测功能端(高电平有效);
ECHOCAN_EN(78)脚:使能回声消除功能端(高电平有效);
SLEEP_EN(83)脚:休眠模式控制端口(高电平有效);
SLIP_EN(82)脚:滑动模式控制端口(高电平有效);
X2/CLKIN(68)脚:16.384MHz时钟输入脚;
X1(67)脚:内部振荡器输出;
RESETN(69)脚:复位脚(低有效);
EPR(20)脚:编码包就绪标志;
SOFT_EN(79)脚:使能软件误码判断端口(高电平有效);
CHAN_RX_DATA(32)脚:用于接收主机数据到AMBE2000;
CHAN_TX_DATA(42)脚:用于将AMBE2000数据发送到主机;
CHAN_RX_LK(28)脚:主机接收时钟;
CHAN_TX_CLK(34)脚:主机发送时钟;
CHAN_TX_STRB(38)脚:主机发送/接收帧同步脉冲;
CHAN_RX_STRB(30)脚:主机接收帧同步脉冲端口;
CODEC_RX_STRB(29)脚:A/D帧同步脉冲接收端;
CODEC_TX_STRB(37)脚:D/A帧同步脉冲发送端口;
CODEC_RX_DATA(31)脚:A/D发送PCM数据给AMBE2000;
CODEC_TX_DATA(41)脚:AMBE2000发送PCM数据到D/A;
CODEC_RX_CLK(27)脚:A/D时钟;
CODEC_TX_CLK(33)脚:D/A时钟;
CLOCK_MODE(51)脚:时钟模式选择端口,该端口接高电平时选择晶体振荡模式;当接低电平时选择外部时钟);
VDD(8,11,12,23,36,39,44,45,46,47,48,49,54,57,64,76,87,90脚):正电源;
GND(1,9,10,25,26,35,40,50,52,53,56,63,65,88,89脚):接地端;
其余管脚:N.C,悬空不用。
3 主机接口及数据格式
AMBE2000与主机的接口数据格式分为两种:一种是有格式;另一种是无格式。
3.1 有格式
在有格式情况下,AMBE2000大约每20ms生成一个压缩数据包,这个数据包共由24个字组成;数据包生成后,其EPR管脚会输出一个短的负脉冲指示,依此来决定对数据包的处理。数据包的具体构成如下:
格式字0:固定为x13ECH,为数据包的头;
格式字1:高8位用于芯片功率控制,0x00表示正常工作模式;0x55表示低功耗模式。低8位的位功能(高有效)如表5所列;
表5 格式字1格式
类型 | 7:MSB | 6 | 5 | 4 | 3 | 2 | 1 | 0:LSB |
输入 | 补丢失帧 | NC | NC | NC | NC | NC | 插入舒适噪声 | NC |
输出 | NC | NC | 解码帧重复 | 解码静默指示 | NC | NC | 编码静默检测 | 编码DTMF检测 |
表6 格式字2-6格式
字2 | 字3 | 字4 | 字5 | 字6 | 语音速率(bps) | FEC速率(bps) | 总数据率(bps) |
0x0028 | 0x0000 | 0x0000 | 0x0000 | 0x6428 | 2000 | 0 | 2000 |
0x5048 | 0x0000 | 0x0000 | 0x0000 | 0x3948 | 3600 | 0 | 3600 |
0x5250 | 0x0000 | 0x0000 | 0x0000 | 0x4150 | 4000 | 0 | 4000 |
0x1030 | 0x0001 | 0x0000 | 0x34la | 0x6750 | 2400 | 1600 | |
0x5360 | 0x0000 | 0x0000 | 0x0000 | 0x6c60 | 4800 | 0 | 4800 |
0x5250 | 0x2010 | 0x0000 | 0x0000 | 0x7460 | 4000 | 800 | |
0x5048 | 0x0001 | 0x0000 | 0x2412 | 0x6860 | 3600 | 1200 | |
0x1030 | 0x0005 | 0x180c | 0x3018 | 0x7360 | 2400 | 2400 | |
0x6b80 | 0x0000 | 0x0000 | 0x0000 | 0x6c80 | 6400 | 0 | 6400 |
0x5250 | 0x0001 | 0x0000 | 0x542a | 0x5280 | 4000 | 2400 | |
0x5258 | 0x0009 | 0xle0c | 0x4127 | 0x7390 | 4400 | 2800 | 7200 |
0x7fa0 | 0x0000 | 0x0000 | 0x0000 | 0x52a0 | 8000 | 0 | 8000 |
0x5250 | 0x0005 | 0x2010 | 0x6834 | 0x72a0 | 40000 | 4000 | |
0x7fc0 | 0x0000 | 0x0000 | 0x0000 | 0x69c0 | 9600 | 0 | 9600 |
0x5048 | 0x000e | 0x4010 | 0x6a2e | 0x65c0 | 3600 | 6000 | |
0x1030 | 0x000e | 0x68la | 0x511b | 0x76c0 | 2400 | 7200 |
格式字2~6:用于指定和表示芯片的压缩数据率,具体如表6所列;
格式字7:该位在输入数据包中不用,因此,在设计时,应将其设置为0x0000;而在输出数据包中表示误码率;
格式字8、9:不用,通常设置为0x0000;
格式字10:高8位用于控制和表示DTMF信号的幅度,范围从3~-60dBm0(例如:0x03=3,0x00=0,0xC4=-60);低8位用于控制和检测DTMF信号,所发出和检测的信号为标准的北美呼叫音。DTMF代码见表7所列。
表7 DTMF代码
DTMF代码 | DTMF数字 | DTMF代码 | DTMF数字 |
0x80 | 1 | 0x84 | 2 |
0x88 | 3 | 0x81 | 4 |
0x85 | 5 | 0x89 | 6 |
0x82 | 7 | 0x86 | 8 |
0x8A | 9 | 0x87 | 0 |
0x83 | * | 0x8B | # |
0x8C | A | 0x8D | B |
0x8E | C | 0x8F | D |
0xFF | DTMF无效 |
表8 格式字11格式
类型 | 7:MSB | 6 | 5 | 4 | 3 | 2 | 1 | 0:LSB |
输入 | NC | NC | 语音激活(1) | NC | 休眠(1) | 回声消除(1) | 编码/解码选择 | |
输出 | NC | NC | NC | NC | 休眠(1) | 回声消除(1) | 编码/解码选择 |
格式字11:高8位用于解码器音量控制,其中0x80表示原音量,0xFF为原音量的两倍,小于0x80为减小音量;低8位的功能如表8所列。其中编码/解码选择如下:00为编码+解码;01为编码;10为解码;11为不用;
格式字12~23:压缩数据信息。根据数据率的不同,其数据位数也不相同。数据位数和压缩数据率的关系如下:
位数=压缩数据率(bps)/50(bps)
例如,在最低压缩率为2kbps时,数据位数为:
2000/50=40位。
3.2 无格式
在无格式情况下,只需要发送数据位,但每秒会减少50bit的数据(与有格式情况相比),因而会降低语音质量。其每个字中包含的数据位数参见表2。每帧的字数和压缩数据率的关系如下:
字数=[压缩数据率(bps)/50(bps)]/位数
式中,所选的位数必须能被选择的压缩数据率整除。AMBE2000串口时钟速率最高为2.048MHz。
图1 用AMBE2000和AD73311构成的语音采样、压缩、解压缩的实用电路
4 应用电路
图1所示是用AMBE2000和AD73311构成的语音采样、压缩、解压缩实用电路,其中AD73311是A-DI公司的一种声码器芯片,它的采样速率可以达到32kHz、16位采样数据,且具有较好的声音质量,因而可配合AMBE2000使用,在实际应用中取得了良好的效果。图中,AMBE2000选择的管脚接法将压缩率定义为2kbps?同时电路设置在外部输入时钟模式,且回声消除、语音激活、滑动补偿功能有效,其EPR脚用来输出数据包就绪指示信号。在电路上电正常工作以后,还可以通过软件对AMBE2000进行重新设置,因此,AMBE2000语音压缩编解码器应用起来十分灵活。
5 结束语
语音通信在数字通信中占有十分重要的地位,通过本文所介绍的AMBE2000和AD73311所构成的数据压缩方法,不但可以节约存储资源,而且能够减小对通信带宽的需求。因此,在某些特殊的应用领域,AMBE2000语音压缩编解码芯片有着十分广阔的应用前景。