语音编解码芯片AMBE2000中文手册

【数字对讲技术】语音编解码芯片AMBE2000中文手册  2012-05-16 18:13

本文的TC2000为AMBE2000芯片的翻版,在功能上完全一致,芯片引脚为非PIN对pin兼容,本翻译文件为个人工作成果,在同事的协助下完成,可以作为设计参考,请重点参考AMBE2000的官网datasheet,如有疑问,欢迎交流!

其中部分截图没有上传,请直接参考原版datasheet。

特性描述

数字语音编码芯片TC2000是一个非常灵活、高性能、单芯片、的语音压缩编码芯片。在低速率时仍能保持优质的语音质量。它是能够实时的、全双工的语音压缩编码芯片。
TC2000 具有多种编码速率选择和FEC(前向纠错)功能。语音编码解码速率可以在2400~9600bps之间以50bps的间隔变化。通常在错误率较高的通讯中,用户可以分摊比较高的比的率来进行FEC编码。即使在2.0kbps/sec的时候,TC2000仍能保持自然的声音质量和语音可懂度。
TC2000最基本的组成部分就是一个编码器和一个解码器,两者相互独立。编码器接收 8KHZ采样的语音数据流(16bit线性、8bit A律、8bit u律)并以一定的速率输出信道数据。相反,解码器接收信道数据并合成语音数据流。编码器和解码器接口的时序是完全异步的。
TC2000采用 A/D-D/A芯片作为语音信号的接口。输入输出的语音数据流的格式必须是相同的(16bit线性的、8bit A律、8bit u律),信道接口采用8位或16位的微控制器。 芯片可选择的功能包括回声抵消、VAD(语音激活检测)、多种电源模式、数据/前向纠错速率的选择等,这些功能由外围管脚或输入到解码器的命令帧来决定。送往解码器用于控制的数据和语音数据是不同的。
 
功能特点
 
Ø  优质的语音质量
Ø  低成本
Ø  无需外部存储器件
Ø  可变的数据速率- 2.0 kbps to 9.6 kbps
Ø  可变的FEC速率- 50 bps to 7.2 kbp
Ø  低功耗65mW@3.3V,0.11mW深度休眠)
Ø 高质量的低数据速率语音编码
Ø 全双工
Ø 支持数据速率为 2.0 kbps到960 kbps的增量在50bps
Ø 用户可选择前向纠错率
Ø 16级软件判断译码
Ø 语音活动检测( VAD)/舒适噪音插入
Ø 16ms回声消除
Ø DTMF信号的检测和生成
 
应用
 
Ø 卫星通信
Ø 数字移动无线电
Ø 安全通信
Ø 蜂窝电话和 PCS
Ø 语音复用
Ø 语音信箱
Ø 多媒体应用
 
 
 
 
 
管脚信息
1 管脚信息
 
 
管脚功能
 
1 管脚描述

引脚号码
引脚名称
引脚方向
功能
49
CHANN_SEL1
Input
主机接口选择位使用这些bits选择通道接口类型(帧、非帧、主动、被动)
47
CHANN_SEL0
Input
CHANN_SEL1 一同选择主机接口
57
CODEC_SEL1
Input
A/D-D/A 芯片配置引脚
56
CODEC_SEL0
Input
46
RATE_SEL4
Input
编码速率选择Pins :使用这些引脚来选择声音的编码速率和FEC速率
45
RATE_SEL3
Input
44
RATE_SEL2
Input
43
RATE_SEL1
Input
42
RATE_SEL0
Input
引脚号码
引脚名称
引脚方向
功能
58
VAD_EN
Input
语音激活检测使能引脚。高电平有效
50
ECHOCAN_EN
Input
回音消除使能引脚。高电平有效
55
SLEEP_EN
Input
标准睡眠使能引脚。高电平有效
54
SLIP_EN
Input
滑移使能引脚。高电平有效
40
X2/CLKIN
Input
时钟输入 16.384 MHz 输入
39
X1
Input
输出为晶体内部振荡器。如果不使用内部振荡器这个引脚应悬空
41
RESETN
Input
TC2000 复位引脚。低电平有效
12
ERP
Output
编码完成标志:复位后,这个信号将有一个从高到低变化来指示第一个数据包已准备就绪。下一个数据包准备好约需要20 ms时间。见注1
51
SOFT_EN
Input
软译码判断启用标志。启用4位软译码识别错误的编码
52
BAUD_SEL0
Input
非帧串口输入格式选择
53
BAUD_SEL1
Input
23
CHAN_RX_DATA
Input
TC2000  编码数据输入
31
CHAN_TX_DATA
Output
TC2000  编码数据输出
19
CHAN_RX_CLK
Input
编码数据接收时钟
25
CHAN_TX_CLK
Input
编码数据发送时钟
28
CHAN_TX_STRB
I/O
数据发送帧同步时钟
21
CHAN_RX_STRB
Input
数据接收帧同步时钟
29
CODEC_RX_STRB
Input
A / D 数据同步帧脉冲。应连接到CODEC_TX_STRB
27
CODEC_TX_STRB
Input
D / A 数据同步帧脉冲。应连接到CODEC_RX_STRB
22
CODEC_RX_DATA
Input
A/D 转换的PCM信号发送到TC2000
30
CODEC_TX_DATA
Input
TC2000 发送的PCM信号到D/A
18
CODEC_RX_CLK
Input
A / D 转换串行时钟。应连接到CODEC_TX_CLK
24
CODEC_TX_CLK
Output
D / A 转换串行时钟。应连接到CODEC_RX_CLK
33
CLOCK_MODE
Input
如果高使用晶体时钟源振荡器。如果低使用外部振荡器
8 、26、29、38、59、61
VDD
Power
电源输入(3.3V)
1 、7、17、32、37、60
GND
Power
地输入
2 、3、5、6、9、10、11、12、13、14、15、16、34、35、36、48、62、63、64
No Connection
悬空

 

注1: TC2000 编码器读取数据包速率大约为每20 ms一次 。首次复位时应等待EPR变为低,并读取

初始数据包。20 msec后,下一个数据应该准备好。对于包第一个数据包及其后的所有数据包的读取使用以下步骤:
1) 等待略小于 20毫秒。
2)  判断 CHAN_TX_STB和读取CHAN_TX_DATA上的数据。
3) 如果读取到的数据不是 0x13EC,抛弃它,重复步骤2。
4) 如果读取到的数据是 0x13EC,读去剩下的23个字节(数据包剩下的)。
EPR的信号不能被用来当作为一个中断信号, ERP信号只在第一个从高电平到低电平的过程有效,在ERP从高到低信号后每隔20ms一个新的数据包就会准备好。每个数据包应该20ms读取一次。如果因为延迟错过了一个数据包,建议将芯片复位。
 
 
晶体 /振荡器的使用
       TC2000声码器芯片有一个 16.384 MHz的输入时钟频率。该时钟输入可以有两个选择,有CLOCK_MODE引脚决定。
        如果CLOCK_MODE引脚为低,则TTL/CMOS时钟源作为时钟从X2 / CLKIN脚输入,此时X1应悬空。
       当使用晶体振荡器时应将 CLOCK_MODE接高电平。要使用晶体振荡器。应将晶体振荡器的引脚连接到芯片的X2/CLKIN和X1以及一个外部对地电容,推寻电容大小为10pf。
 
时钟和复位时序
 
       要复位 TC2000芯片,复位信号必须保持低电平至少为50微秒。从复位中恢复时间大约为95ms。换而言之,在复位信号恢复后95ms芯片开始处理PCM信号。在252个PCM信号后第一个数据包将会被准备好。
 
相关的芯片延迟
 
由于编码 /解码算法引起的相关的延迟,如下所示
编码延迟
算法延迟 = 32毫秒
编码器处理延迟 = 11.5毫秒
解码延迟
算法延迟 = 10毫秒
解码器的处理延迟 = 7.5毫秒
总延时= 32毫秒 +11.5毫秒+ 1毫秒* +10毫秒+7.5毫秒= 62毫秒
帧处理延迟= 11.5毫秒(编码器) + 1毫秒* + 7.5毫秒= 20毫秒
* 1ms来自解码和编码之间的空闲时间。
 
 
串行配置选择
 
 
       CHAN_SEL [1-0]引脚的电平状态决定了芯片内部信道接口的串行口的工作方式。详见表 2
 
 
2信道接口选择

端口类型
选择脚
CAN_SEL1
CHAN_SEL0
主动帧
0
0
主动非帧
0
1
被动帧
1
0
被动非帧
1
1

 
       所有的数据都通过一个串行口进行传输,在每个读写选通信号后分别会有 16字节数据被写入和写出。串行模式可以分为帧和非帧两种,串行模式可以分为帧和非帧两种。在非帧模式下。在每位数据上分别会有1到4个位为语音数据位。
 
3非帧格式语音数据位选择端
 

字中语音数据位个数
选择脚
BAUD_SEL1
BAUD_SEL0
1
0
0
2
0
1
3
1
0
4
1
1

 
 
信道接口
       信道接口是个通用术语,用于表示压缩的数据从编码器出来通过一个接口送到解码器,该接口就是信道接口。信道接口也用于编码器和解码器输出状态信息,比如是否检测到双音多频( DTMF) ,或者解码器是否检测到合成后的静音帧。其实信道接口通常在编解码器两端执行更为复杂的控制操作(比如在启动时)。这些控制功能包括语音数据和前向纠错速率的选择以及 A/D-D/A芯片的配置。 需要注意的是,不是所有的来自TC2000的数据都要通过信道传送的。比如状态位通常都只在本端起作用。在大多数的声音传输系统中,实际编码数据位从信道的数据帧中取出,与系统信息一起在传输通道中传送,在接收端,编码数据位又被取出,由解码器合成语音。 
信道接口使芯片易于集成到系统设计中。 该接口单元是一个串行端口。串行端口可以运行在主动或被动模式。在被动模式下,所有的通道接口控制信号输入到芯片 TC2000,在主动模式下,只有TX_DATA_STRB是输出,所有其他信号的输入。
       常规操作时,每  20ms编码器输出一帧编码过的数据,解码器需接收到这样的数据。编码器和解码器的数据需要格式化,格式化的主要目的就是为编码数据流提供对齐信息。数据的格式包括帧格式和非帧格式。串口模式既可工作于帧格式也可工作于非帧格式。
 
 
 
 
 
 
 
 
 
 
串口主动和被动模式的时序
 
 
 
2 串口时序
 
 
 
表4 时序通信参数描述
参数
描述
3.3V
单位
MIN
MAX
t h(FSR)
FSR在CLKR下降沿后保持时间
6
 
ns
t h(DR)
DR在CLKR下降沿后保持时间
6
 
ns
t d(DX)
CLKX上升沿到DX数据有效
 
25
ns
t c(SCK)
串行时钟周期时间
6H
 
ns
t f(SCK)
串行时钟下降时间
 
6
ns
参数
描述
3.3V
单位
MIN
MAX
t r(SCK)
串行时钟上升时间
 
6
ns
t W(SCK)
串行时钟高/低电平持续时间
3H
 
ns
t su(FSR)
CLKR下降沿之前FSR保持时间
6
 
ns
t su(DR)
CLKR下降沿之前DR保持时间
6
 
ns
t d(FSX)
CLKX到FSX的延迟时间
 
15
ns
t d(DX)
CLKX到DX(主动模式)的延迟时间
 
15
ns
t h(FSX)
FSR在CLKX下降沿后保持时间
6
 
ns
t h(FSX)H
FSR在CLKX上升沿后保持时间
 
2H-5
ns
t dis(DX)
CLKX到DX之前的无效时间
 
20
ns
t h(DX)
CLKX上升沿到DX数据有效
-5H
 
ns
H=7.629 ns,但串行时钟请不要快于2.048 MHz.因此Tc(SCK)至少应为488.3ns。
 
语音速率和前向纠错(FEC)速率的选择
       总的编码数据由两部分组成:语音数据和前向纠错数据。前向纠错数据加到语音数据中使解码器能够纠正一定量的错误而使数据帧不至于报废。如果信道传输时可能存在较多的错误,那么就应当增加前向纠错数据的位数。当然声音要达到高质量的话就必须有更多的语音数据位。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
信道数据帧格式
帧格式是由 24个 16位字 48个字节或384位 组成的数据格式。 每 20ms编码器输出 24个字, 同样解码器将接收这 24个字。输入输出的帧格式将在以下内容给予详细的介绍。头 12个字由 header,ID,status,control  information这 4个部分组成。剩下的12个字由编码数据位组成。这 12个字(192位)当且仅当 TC2000工作在 9600bps时才全部代表声音数据,否则,未用到的数据位将由 0 填充(声音数据从最高位开始填充)。必须注意的是,即使在 TC2000不工作于 9600bps时,全部的 384位也都要被从编码器读出并写入到解码器。
                            5帧输入格式
20ms  数据
24 sixteen-bit words = 48 bytes = 384 bits
(12)16 位字的开头
  (192位)
Word#
描述
0
0x13ec
1
电源控制字(8bit)
控制字1(8bit)
2
Rate info 0
见表9
3
Rate info 1
4
Rate info 2
5
Rate info 3
6
Rate info 4
7
Unused in Input
8
Unused in Input
9
Unused in Input
10
DTMF Control
11
控制字2
(12) 16 bit  位语音数据
(192  位)
12
信道数据
13
信道数据
14
信道数据
15
信道数据
16
信道数据
17
信道数据
18
信道数据
19
信道数据
20
信道数据
21
信道数据
22
信道数据
23
信道数据
 
 
帧输入 :字0:Header
解码器用 Header信息来标识一帧的开始。这个16位字必须是 0X13EC。
帧输入 :字1:电源控制 ID
        芯片正常工作时 8位电源控制ID字设置为0x00。设置此值为0x55,芯片将会进入掉电模式。这将使TC2000进入低功耗模式。要退出低功耗模式,设备必须通过硬件复位。
 
6帧输入: 电源控制ID数值说明
ID
类型
说明
0x00
语音编码
这个数值说明芯片处在正常工作中
0x55
掉电模式
当这个模式被激活, TC2000将进入的低功耗模式,在这个模式下将没有语音数据包被处理。
 
帧输入 :字 1:控制字1
 
8位来指示各种功能.
7控制字1格式
控制字 1
7:MSB
6
5
4
3
2
1
0:LSB
丢失帧指示
Unused
Unused
Unused
Unused
Unused
CNI
Unused
 
丢失帧指示 (Lost Frame Indicator):此位设置为1将会使TC2000使用上一帧的数据进行解码。这是一种有效的方法来掩饰短期内数据的丢失或损坏。
 
舒适噪声插入(CNI):此为设置为1将会使解码器有舒适的噪音输出,此位的设置可以使系统可以连续的传输。
 
帧输入 :字2-6:: 编码速率的选择
Rate Info 0 、 Rate Info 1、Rate Info 2、Rate Info 3、Rate Info 4。
       TC2000 的初始速率是通过硬件引脚 RATE_SEL[4-0] 来进行设置的(表18)。芯片复位后,编码器和解码器的编码速率都可以通过发送数据包来进行修改。
       TC2000 使用五个字节来设置编码速率和FEC速率,表8列出各种编码速率和FEC速率的预定值。
表8 TC2000编码速率选择
Rate Info 0
Rate Info 1
Rate Info 2
Rate Info 3
Rate Info 4
语音速率(bps)
FEC 速率(bps)
总速率(bps)
0x9030
0x0000
0x0000
0x0000
0x4330
2400
0
2400
0x902f
0x0000
0x0000
0x0000
0x6930
2350
50
0x9348
0x0000
0x0000
0x0000
0x6f48
3600
0
3600
0x9243
0x0080
0x0000
0x0000
0x5348
3350
250
0xab50
0x0000
0x0000
0x0000
0x3950
4000
0
4000
0x934b
0x0080
0x0000
0x0000
0x3950
3750
250
0xab60
0x0000
0x0000
0x0000
0x7960
4800
0
4800
0xab5b
0x0080
0x0000
0x0000
0x6860
4550
250
0x9348
0x2030
0x0000
0x0000
0x7060
3600
1200
0x923e
0x2800
0x0000
0x0000
0x7460
3100
1700
0xab53
0x2c00
0x0000
0x0000
0x5680
4150
2250
6400
0xab58
0x3000
0x0000
0x0000
0x4490
4400
2800
7200
0xbf9b
0x0080
0x0000
0x0000
0x49a0
7750
250
8000
0xab5d
0x3400
0x0000
0x0000
0x31a0
4650
3350
0xbfc0
0x0000
0x0000
0x0000
0x72c0
9600
0
9600
0xab16
0xe400
0x0000
0x0000
0x67c0
4850
4750
0x0028
0x0000
0x0000
0x0000
0x6248
2000
0
2000
0x5048
0x0000
0x0000
0x0000
0x3948
3600
0
3600
0x1030
0x0001
0x0000
0x4230
0x0048
2400
1200*
0x1030
0x4000
0x0000
0x0000
0x0048
2400
1200**
0x5250
0x0000
0x0000
0x0000
0x4150
4000
0
4000
0x1030
0x0001
0x0000
0x341a
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
Rate Info 0
Rate Info 1
Rate Info 2
Rate Info 3
Rate Info 4
语音速率(bps)
FEC 速率(bps)
总速率(bps)
0x6b80
0x0000
0x0000
0x0000
0x6c80
6400
0
6400
0x5250
0x0001
0x0000
0x542a
0x5280
4000
2400
0x5258
0x0009
0x1e0c
0x4127
0x7390
4400
2800
7200
0x7fa0
0x0000
0x0000
0x0000
0x52a0
8000
0
8000
0x5250
0x0005
0x2010
0x6834
0x72a0
4000
4000
0x7fc0
0x0000
0x0000
0x0000
0x69c0
9600
0
9600
0x5048
0x000e
0x4010
0x6a2e
0x65c0
3600
6000
0x1030
0x000e
0x681a
0x5116
0x76c0
2400
7200
* FEC是一种卷积码
    ** FEC是一个代码块
帧输入 :字7:未使用
应设置为0x0000
帧输入 :字8:未使用
应设置为0x0000
帧输入 :字9:未使用
应设置为0x0000
帧输入 :字10:DTMF控制
这个字节用来设置DTMF信号。值和音调对应关系详见表9
表9 DTMF控制字格式
DTMF 控制字-16bit
 15 :MSB
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0:
LSB
DTMF 幅度
DTMF 信号检测/产生
 
DTMF Code
DTMF 信号
频率1(Hz)
频率2(Hz)
0x80
1
1209
697
0x84
2
1336
697
0x88
3
1477
697
0x81
4
1209
770
0x85
5
1336
770
0x89
6
1477
770
0x82
7
1209
852
0x86
8
1336
852
0x8a
9
1477
852
0x87
0
1209
941
0x83
*
1336
941
0x8b
#
1477
941
0x8c
A
1633
697
0x8d
B
1633
770
0x8e
C
1633
852
0x8f
D
1633
941
0x90
拨号音
440
350
0x91
铃声
480
440
0x92
忙音
620
480
0xff
N/A
N/A
DTMF Code设置为0xff将不会有DTMF信号输出。拨号,忙音,等均是标准的北美信号。
DTMF幅度从3到-60 dBm0。这个值是一个字节(例如:为0x03= 3,为0x00=0,0xC4= -60)。
 
          帧输入 :字 11:控制字2
                                                      10控制字2
控制字2-16bit
 15 :MSB
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0:
LSB
编码器输出音量控制
Unused
0
Unused
0
VAD
Unused
0
SL
EC
RIS
 
编码器输出音量控制(Decoder output volume control)
默认值为 0x80h
速率信息选择(RIS)
                                 表11编码速率信息选择
数值
控制区域
0x0
编码和解码
0x1
编码
0x2
解码
0x3
 
回音消除(EC)
该位置1在上一帧数据的基础上使能回音消除功能,开启回音消除功能必须在每个数据包内该位都置1。
睡眠(SL)
设置该位为 1,TC2000将上一帧数据的基础上进入休眠模式。睡眠是一种低功耗模式,不能和掉电模式混淆。此位设置为0,退出休眠模式。
语音激活检测(VAD)
       VAD
位设置为1。启用语音激活检测,设置的VAD位为0禁用语音激活检测。
 
帧输入 :字12-23:信道数据
这是字段包含实际的的的编码位。这一区域数据输入开始的第一个字为 MSB,最后字节为LSB位输出。如果选定的数据传输率比9600小,那么在每个帧中未使用的位用零填充后面的字。每帧数据包必须始终由24个字。
      
 
 
 
 
 
 
 
 
 
 
 
 
 
数据输出
                            表12帧数据输出格式
20ms  数据
24 sixteen-bit words = 48 bytes = 384 bits
(12)16 位字的开头
  (192位)
Word#
描述
0
0x13ec
1
电源控制字(8bit)
控制字1(8bit)
2
Rate info 0
3
Rate info 1
4
Rate info 2
5
Rate info 3
6
Rate info 4
7
误码率(BER)
8
软译码距离
9
当前帧错误位
10
DTMF Control
11
控制字2
(12) 16 bit  位语音数据
(192  位)
12
信道数据
13
信道数据
14
信道数据
15
信道数据
16
信道数据
17
信道数据
18
信道数据
19
信道数据
20
信道数据
21
信道数据
22
信道数据
23
信道数据
 
帧输出 :字0:Header
每隔20ms编码器将输出一帧数据。这个数据帧头16位字必须是 0X13EC。
帧输出 :字1:电源控制 ID
在输出时该位一直为 0x00。
帧输出 :字1:控制字 1
8位来指示各种功能.
                            表13控制字1格式
 
7 :MSB
6
5
4
3
2
1
0:MSB
Unused
Unused
解码帧
重复
解码器
静音
Unused
Unused
DTMF
检测
编码器
静音
     解码帧重复:
当解码帧重复标志设置为1,解码器最后一帧解码是一前一帧重复。
解码器静音检测:
当解码器静音检测标志设置为 1时,说明解码器最后一帧解码是一个舒适噪声帧。
编码器DTMF检测:
编码器的 DTMF检测标志将被设置为1时,说面编码器检测到的DTMF信号。
编码器静音检测:
没有语音信号输入时编码静音检测标志将被设置为 1时。
 
帧输出 :字2-6:: 编码速率的选择
Rate Info 0, Rate Info 1, Rate Info 2, Rate Info 3, Rate Info 4
这些字节包含 TC2000的编码速录具体详见表8。
 
帧输出 :字7::误码率(BER)
       此状态字段用于指示解码器位错误信息。误码率的计算是通过下面的计算公式通过这 16位状态字来计算的。
 
% BER = (Word 7) / (32768) x 100
 
 
       这个状态字和控制字 2里面的RIS位配合使用。只有当RIS位不是0x03时。此位数据才有效。只有TC2000使用FEC时该位才能被计算出来。
 
帧输出 :字8:软译码距离
       此状态字段用于配合硬件引脚  SOFT_EN。此字段是用来指示的软译码距离最新的的解码帧。
       这个状态字和控制字 2里面的RIS位配合使用。只有当RIS位不是0x03时。此位数据才有效。只有TC2000使用软译码时该位才被使用。
帧输出 :字9:检测到位错误
此状态字用来指示位置最近的解码帧的为错误数量。
这个状态字和控制字 2里面的RIS位配合使用。只有当RIS位不是0x03时。此位数据才有效。只有TC2000使用FEC时该位才能被计算出来。
帧输出:字10:DTMF控制字
该 16bit字只在检测到双音多频音时使用到,如果双音多频检测标志置 1,那么该双音多频音的代码和度将在该字段中输出,输出格式对应表 9。
帧输出 :字11:控制字2
14控制字2
控制字2-16bit
 15 :MSB
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0:
LSB
解码器输出音量控制
Unused
0
Unused
0
VAD
Unused
0
SL
EC
RIS
 
编码速率设置(RIS)
该控制字用来指示字 2-6所指示的编码速率用来控制芯片的那一部分。
15编码速率信息选择
数值
控制区域
0x0
编码和解码
0x1
编码
0x2
解码
0x3
 
             
回音消除(EC):
该位置 1表示回音消除功能已启用。
睡眠(SL:
该位置 1表示芯片已进入睡眠模式。
解码器输出音量控制:用来指示当前的解码器的音量。
帧输入 :字12-23:信道数据
该字段包含了实际编码数据位。语音数据的最高位从第一个字开始,按此顺序往后推,最低位置于最后一个字。如果波特率小于  9600bps,那么未被用到的位都用 0填充,并且都在该字段的最后。要注意的是虽然这些位未被用到但也必须占用时间输出。每帧数据包必须始终由24个字。
 
非帧串口格式
在要求 TC2000 与信道硬件之间互连逻辑最少化时,非帧格式对信道数据是非常有用的。当要用更少的硬件资源来代替微控制器时,应该考虑选择使用非帧格式。这种格式的另外一个特点是帧信息嵌入到声音数据中(声音数据包含码流的位置信息)。使用这种格式,设计者只需要传输编码数据。每帧中有 1 bit的帧信息位嵌在声音数据中。这样每秒就有 50bit 的数不能用来代表声音数据。比如非帧格式下系统工作在 2450bps(无 FEC)时,其效果就跟帧格式下系统工作在 2400bps时一样。
设计者也要考虑到解码器在输出同步的语音之前要花差不多  15 帧(300ms)的时间来同步输入的数据流。如果系统要求在静音的过程中关闭传输,并在有声音时返回的话,那么这种格式下所存在的 300ms 的延时对系统来讲是不能容忍的。这时候就要使用帧格式来满足这些高要求的功能。
非帧格式只存在于串口被动模式下,输入输出都是  16bit的字。每字 16bit的帧,只有一小部分用来传输编码过的数据。使用者选择每字传输 1,2,3,4bits的声音数据(见表3)。
切记:声音编码率必须能被每字中声音数据的位数整除。
非帧串口输出格式下,每字输出  1到 4bit的声音数据。当每字包含的声音数据位多于 1个时,最高位在传输过程中最先被考虑。非帧模式下,只有编码过的声音数据位才被输出,多余的信息(帧格式下可以)都不可以。每 20ms一帧的声音数据需要传输的字数可以通过以下等式计算:(波特率/50)/(每字的声音数据位数)=需要传数的字数。串行时钟速率的计算方法是1/ [20 msec /(32 x 16)] = 25.6 kHz.。如果选择被动成帧模式,将计算数据选通速率1/[20msec / 32] = 1.6 kHz。
       非帧串口输入格式下,每字输入  1到 4bit的声音数据。当每字包含的声音数据位多于 1个时,最高位在传输过程中最先被考虑。帧格式需要输入的 Header 在非帧格式被舍去。每 20ms 一帧的声音数据需要传输的字数可以通过以下等式计算:(波特率/50)/(每字的声音数据位数)=需要传数的字数。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A/D-D/A 接口
模拟语音信号与 TC2000芯片之间要通过 A/D-D/A芯片来连接。A/D-D/A芯片选择要慎重,最好要选 16位线性的器件。另外也要考虑这些器件的信噪比和滤波特性。通常来讲,频率响应(20-2400HZ)越平坦,那么整个系统的声音效果就会越好。
TC2000 与 A/D或 D/A接口的语音采样率都是 8KHZ,这 8KHZ的语音数据通过串口来输入输出。
为了简化 A/D-D/A芯片的配置,一组预设的配置值可以通过管脚CODEC_SEL [1-0](见表16)来配置。这些预设的配置值,指明了接口的方向以及可编程器件的程序字的顺序。
为了简化配置 A/D-D/A接口的过程,一些预设的配置值对使用者是现成的。通过 CODEC_SEL [1-0]来选择使用这些预设的值。表16中,2 位二进制的值对应于管脚CODEC_SEL [1-0]电平。0 代表 GND,1 代表 VCC。使用这种配置不需要额外的控制信息
16 A / D-D /A硬件配置
A/D-D/A 类型
CODEC_SEL[1-0]
pins
通用16位线性8khz
00b
AD73311
32kHz
01b
8KHz u
10b
8KHz A
11b
 
5.3 主动模式下 A/D-D/A 的时序
 
 
图3 A/D-D/A 的时序
 
 
表17 时序通信参数描述
参数
描述
3.3V
单位
MIN
MAX
t h(FSR)
FSR在CLKR下降沿后保持时间
6
 
ns
t h(DR)
DR在CLKR下降沿后保持时间
6
 
ns
t d(DX)
CLKX上升沿到DX数据有效
 
25
ns
t c(SCK)
串行时钟周期时间
6H
 
ns
t f(SCK)
串行时钟下降时间
 
6
ns
t r(SCK)
串行时钟上升时间
 
6
ns
t W(SCK)
串行时钟高/低电平持续时间
3H
 
ns
t su(FSR)
CLKR下降沿之前FSR保持时间
6
 
ns
t su(DR)
CLKR下降沿之前DR保持时间
6
 
ns
t d(FSX)
CLKX到FSX的延迟时间
 
15
ns
t d(DX)
CLKX到DX(主动模式)的延迟时间
 
15
ns
t h(FSX)
FSR在CLKX下降沿后保持时间
6
 
ns
t h(FSX)H
FSR在CLKX上升沿后保持时间
 
2H-5
ns
t dis(DX)
CLKX到DX之前的无效时间
 
20
ns
t h(DX)
CLKX上升沿到DX数据有效
-5H
 
ns
注:H=7.629 ns,但串行时钟请不要快于2.048 MHz.因此Tc(SCK)至少应为488.3ns。
 
硬件配置与软件配置的注意事项
TC2000  的许多功能既能通过硬件方法又能通过软件方法配置。在硬件复位信号 RESETN 有效后的200us的时间内,以下的硬件管脚的信号才作为有效信号输入到芯片内:CHANN_SEL [1-0], RATE_SEL [4-0], CODEC_SEL [1-0], VAD_EN, ECHOCAN_EN。在这 200us 的时间内这些信号的值必须保持稳定。在 200us 的初始化阶段完成之后,要想改变这些硬件配置的功能只能通过重新配置命令帧来实现,通过改变管脚的输入信号是没用的,除非又进行了一次复位。
编码速率的选择
TC2000  中语音编码率和前向纠错编码率的选择可以是独立的。这些码率可以通过命令帧的方法配置,也可以通过硬件管脚 RATE_SEL [4-0]来配置。这五个输入管脚 RATE_SEL [4-0]给出了32种预设的声音/FEC编码速率。语音和 FEC的编码率可以独立地以 50bps的间隔配置。
 
表18 TC2000编码速率选择
RATE_SEL4
Pin
RATE_SEL3
Pin
RATE_SEL2
Pin
RATE_SEL1
Pin
RATE_SEL0
Pin
语音速率(bps)
FEC 速率(bps)
总速率(bps)
0
0
0
0
0
2400
0
2400
0
0
1
0
1
2350
50
0
0
0
0
1
3600
0
3600
0
1
0
1
1
3350
250
0
1
1
1
1
4000
0
4000
0
1
1
1
0
3750
250
0
0
0
1
1
4800
0
4800
0
0
1
1
1
4550
250
0
0
0
1
0
3600
1200
0
1
0
0
0
3100
1700
0
1
0
1
0
4150
2250
6400
0
1
0
0
1
4400
2800
7200
0
1
1
0
0
7750
250
8000
0
1
1
0
1
4650
3350
0
0
1
0
0
9600
0
9600
0
0
1
1
0
4850
4750
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
0
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
1
4000
4000
1
0
1
0
1
9600
0
9600
1
1
1
0
1
3600
6000
1
1
1
1
0
2400
7200
 
 
回声抵消
TC2000  提供16ms 的回声抵消能力而且抵消回声的能力近似达到 30db 或者更高的水平,这对由 2 线和 4 线 混合电路引起的本地回声的抵消是很有用的。只有回声中的线性部分才能被消除,因此所设计的电路应该最小化非线性部分。
TC2000声码器芯片采用一种自适应回声消除算法,来消除解码器输出和编码器输入上的回声干扰。
模拟电路的回声返回损失(Echo Return Loss:ERL)必须不小于才能满足较好回声抵消的工作。
回声抵消通过硬件管脚 pin 50:EHOCAN_EN
注:TC2000的回音消除功能只适用于线性的编解码。
语音激活检测(VAD)
当系统要求在平常的对话中对长时间的静音进行转换以达到节省系统带宽和功耗的目的时,       TC2000的语音激活算法和舒适噪声插入(CNI)的功能是非常有用的。
VAD 功能使能后编码器将会通过两种方法来指示多周期(长时间)的静音。第一,编码器将输出一帧静音帧。该静音帧包含了背景噪音的相关信息,这些信息使解码器在另一端合成一个舒适噪声的信号。舒适噪声的目的是让听者觉得对话没有被中断,而绝对的静音给人的感觉是对话间的连接已经断开了。第二,帧格式输出中的编码器静音检测标志位被置位。
语音激活检测通过硬件管脚 pin 58:VAD_EN 或者通过命令帧来激活。
如果 VAD 功能被打开来减少经常静音的语音对话的传输的功耗的话,建议每隔 500-1000 毫秒发送一帧静音帧用来确保传送到解码器的背景噪音的信息,这样合成的语音与静音之间就能有个平滑的过渡。
在VAD算法中静音的临界值是 -25 dBm0 。帧数据如果超过这个数值将会被列为语音。如果帧数据低于-25 dBm0。那么该帧数据是是语音还是数据将取决于各自适合的阈值。
 
解码器合成舒适噪声帧与 VAD 使能之间是相对独立的。如果解码器接收到一带内静音帧(只能由编码器 VAD使能产生)。
 
双音多频的检测和产生
TC2000 可以检测、传输和合成双音多频音。双音多频的功能总是打开的。编码器检测到双音多频设置位帧格式输出中的双音多频检测标志位,同时振幅信息被置于DTMF控制字中。另外,编码器还能带内传输双音多频数据 (标准的声音数据位),这样双音多频音就能无缝的从编码器传输到解码器用于合成。
当接收到带内双音多频音或者使用音频生成的命令帧,解码器都能合成双音多频音。
 
常规能耗模式和节能模式
当TC2000 长时间处于不工作状态时有两种低功耗模式来达到节能的目的。可以通过硬件或者软件的方法进入低功耗模式或待机模式。低功耗模式下,A/D-D/A端口都被禁止掉,同时停止任何方向的声音帧的处理。要返回到正常的工作模式,TC2000可以通过一个激活命令帧或者硬件复位(RESETN)来完成。 
 
标准休眠模式
只有标准休眠模式既能通过硬件的方法也能通过软件的方法进入。TC2000进入标准休眠模式可以通过设置 SLEEP_EN(pin 55)为高,也可以通过软件将控制字2中的第三位置1(10 ) 进入。
如果要在上电或复位后在标准休眠模式下配置 A/D-D/A芯片,那么 SLEEP_EN必须被置为高。
当使用 A律或μ律编解码器时通过软件方法进入休眠模式的话,需要注意的是,如果有数据包发送到解码器,而在睡眠模式下,也会有噪音输出。建议在唤醒芯片之前不要发送数据包到解码器
 
深度休眠模式
休眠模式中,深度休眠模式的功耗最低。要从该模式返回只能通过硬件管脚 RESETN(pin 41)的复位。要进入该模式也只能通过命令帧的方式。
 
 
 
 
 
19节电模式总括
睡眠模式
进入该状态方式
退出该状态方式
唤醒时间
功耗
3V
Crystal
CMOS
TTL
正常工作
N/A
N/A
N/A
Approx. 65mW
标准睡眠模式
控制字或者SLEEP_EN pin
控制字
N/A
24 mW
36 mW
深度休眠模式
控制字
复位
95ms
0.11 mW
0.11 mW
 
滑移使能
在任何实时通讯系统中,要保持数据流从一端传到另一端的平滑性必须要对时钟偏差进行预测。设置SLIP_EN(pin54)信号可以使TC2000的编码器对编码器信道信号的较小的滑移做出处理。当TC2000处于主动模式时,信道产生传输数据的信号。信道的传输由时钟控制,这时对滑移的控制就没有必要了。
只要 TC2000 编码器信道处于被动模式并且信道的时钟与 A/D-D/A的时钟时异步时, SLIP_EN管脚的信号就应该被置为高。
 
示例A / D的D / A用法
TC2000同 A / D的D / A芯片连接如下图
4 TC2000同A / D的D / A芯片连接
 
德州仪器PCM3500解码器的接口电路
      德州仪器的 PCM3500编解码芯片为TC2000提供简单的的成本的解决方案。该应用笔记提供关于这些组件的可供选择的连接信息。
       TC2000PCM3500芯片连接如下图,TC2000的CODEC_SEL必须配置成连接通用的16位线性编解码器 (CODEC_SEL1,0 - 00)。
5 TC2000同PCM3500连接图
     
 
使用 PCM3500编解码器有两个好处。首先是单电源供电设计。PCM3500支持从+2.7 V至+3.6 V单电源设计。第二个优势在于它的简单。外围没有复杂的配置。有关配置信息,请参阅PCM3500数据手册和图6中的参考电路。
 
模拟电路设计的注意事项
 
例如假设电路中是一个电话听筒。通常情况下,手机麦克风信号出来的信号是一个非常小的信号( 20mv的峰峰值)。       PCM3500是为峰峰值为2V的信号设计的语音编解码器,参考电路通过模拟输入放大(Gain=22),以使手机麦克风信号在ADC可以处理的范围。
 
输出部分是采用增益为一的低通滤波器。这样的设计可以允许最大的语音信号可以畅行无阻, PCM3500应该输出部分过大的信号过滤掉。
 
电容 C13和C14用来产生一个 低噪声的直流偏置信号。如果电路中存在低噪声的直流偏置信号,那么,这两个电容就不需要了。
 
为了获得最佳性能。模拟电路中的任何输入输出的调整应参照PCM3500的数据手册
 
 
 
 
 
 
6
 
 
 
软译码判断
        在现代通信系统中发射器是以符号形式发送信息。解码器需要接收信号且判断哪些内容是需要传播的。换句话说解调器根据接收到的信号决定。例如,在一个二进制系统中,符号可以代表1和0。 由于干扰等诸多因素,信道的衰减可能会使一些信号被误读。可以增减接收到的数据以改善FEC的性能,在解调之前对接收到的数据进行判断,就称为软译码判断。
 
 
TC2000采用了一个 4位的软判决译码器。位的定义如下:
数值 (二进制)
注释
0000
最可信的 0
0111
最不可信的 0
1000
最不可信的 1
1111
最可信的 1
TC2000D的SOFT_EN(pin51)脚配置为高电平可以启动软译码判断,启动软译码判断芯片不会对编码器数据任何改变。编码数据包和普通的数据包没什么区别。
用户必须对接收端的数据进行细致的处理(4bit)来对接收的数据进行更好的处理
TC2000解码器包数据将会被改变,解码器希望解码包数据里的每个语音数据位都有四个软译码( SD)位组成,解码器将对每个SD数据进行判断来决定接收到的数据是0还是1。

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值