AMBE-1000手册-1000用户手册版本1.0南京梧桐微电子中心概述根据对语音构成的分析,应运而生了多种对音频信号的压缩编码算法,如CELP、RELP、VSELP、MP-MLQ、LPC-10、MBE等,它们通过不同的算法,实现对音频信号的压缩。这些压缩编码算法的压缩率、语音质量各有所长,其中美国DVSI(DigitalVoiceSystemInc)公司提出的先进多带激励AMBE(AdvancedMulti-BandExcitation)压缩编码算法是其中的杰出代表。AMBE是基于MBE技术的低比特率、高质量语音压缩算法,具有语音音质好和编码速率低等优点,AMBE-1000是一款高性能多速率语音编码/解码芯片,语音编码解码速率可以在2400~9600bps之间以50bps的间隔变化,即使在2400bps的时候,仍能保持自然的声音质量和语音可懂度。在芯片内部有相互独立的语音编码单元和解码单元,可同时完成语音的编码和解码任务。并且所有的编码和解码操作都能在芯片内部完成,不需要额外的存储器。这些特性使它非常适合于数字语音通信、语音存储以及其它需要对语音进行数字处理的场合。2.AMBE-1000应用设计的概述2.1基本操作AMBE-1000昀基本的组成部分就是一个编码器和一个解码器,两者相互独立。编码器接收8KHZ采样的语音数据流(16bit线性,8bitA律,8bitu律)并以一定的速率输出信道数据。相反,解码器接收信道数据并合成语音数据流。编码器和解码器接口的时序是完全异步的。AMBE-1000采用A/D-D/A芯片作为语音信号的接口。输入输出的语音数据流的格式必须是相同的(16bit线性的,8bitA律,8bitu律),信道接口采用8位或16位的微控制器。芯片可选择的功能包括回声抵消、VAD(语音激活检测)、电源模式、数据/前向纠错速率的选择等,这些功能由外围管脚或输入到解码器的命令帧来决定。送往解码器用于控制的数据和语音数据是不同的,这将在第4章进行详述。2.2设计需要考虑的事项。A/D-D/A芯片的选择。信道接口的选择。语音速率和前向纠错速率的选择第2页共33页AMBE-1000手册概述A/D-D/A芯片的选择对所设计的系统的声音质量起着关键的作用。由于A律或u律压扩芯片在采样时对数据做了压缩以减少位数,为了声音质量的考虑,建议采用16位线性的芯片。选择芯片时要特别注意信噪比以及滤波器的频率响应特性。A/D-D/A的硬件接口是很灵活的。时钟和激励信号可以由外部送入也可以由内部产生。给可编程A/D-D/A发送控制字需要一个额外的接口。第5章将详细介绍A/D-D/A。2.2.2信道接口概述信道接口使芯片易于集成到设计的系统中。基本的信道接口包括串口和并口,它们都能工作于主动模式和被动模式,模式选择的控制信号可以由芯片内部给出也可以从外部送入。常规操作时,每20ms编码器输出一帧编码过的数据,解码器需接收到这样的数据。编码器和解码器的数据需要格式化,格式化的主要目的就是为编码数据流提供对齐信息。数据的格式包括帧格式和非帧格式。并口模式只工作于帧格式,串口模式既可工作于帧格式也可工作于非帧格式。帧格式和非帧格式将在第4章中详细介绍。两种格式都是为了实现相同的功能:为编码数据流提供定位信息。工作于帧格式时,每20ms由编码器送出一帧数据,该帧数据有固定的结构,其中包含了用于本地控制的状态标志位。实际上按一定波特率的编码数据才是帧格式中需要在信道间传送的语音数据。帧格式下,系统需要在传送编码数据的同时传送足够的信息,这些信息用于在解码器端重构语音数据流。这些信息可以很具体,但至少要满足用于重构的要求。非帧格式下,编码器的输出数据可以认为是连续的声音数据流,这些编码数据中包含了帧的信息。这种格式的优点是不会为信道加重带宽的负载。缺点是解码器在合成语音波形前需要接收10-12帧的数据才能达到与数据流同步的目的。同时,非帧格式下,每帧只指定一位用于数据的对齐,在更高误码率的信道中,需要增加更多的对齐位才能达到更高的性能(用帧格式就能很容易实现)。当工作于帧格式时,信道数据的接口可以是串行的也可以时并行的。而非帧格式只局限于串行。另外帧格式使芯片既可以工作于主动模式也可以工作于被动模式,而非帧格式只能工作于被动模式。2.2.3语音速率和前向纠错(FEC)速率的选择总的编码数据由两部分组成:语音数据和前向纠错数据。前向纠错数据加到语音数据中使解码器能够纠正一定量的错误而使数据帧不至于报废。如果信道传输时可能存在较多的错误,那么就应当增加前向纠错数据的位数。当然声音要达到高质量的话就必须有更多的语音数据位。第3页共33页AMBE-1000手册概述信道接口是个通用术语,用于表示压缩的数据从编码器出来通过一个接口送到解码器,该接口就是信道接口。信道接口也用于编码器和解码器输出状态信息,比如是否检测到双音多频(DTMF),或者解码器是否检测到合成后的静音帧。其实信道接口通常在编解码器两端执行更为复杂的控制操作(比如在启动时)。这些控制功能包括语音数据和前向纠错速率的选择以及A/D-D/A芯片的配置。需要注意的是,不是所有的来自AMBE-1000的数据都要通过信道传送的。比如状态位通常都只在本端起作用。在大多数的声音传输系统中,实际编码数据位从信道的数据帧中取出,与系统信息一起在传输通道中传送,在接收端,编码数据位又被取出,由解码器合成语音。这个部分将首先介绍两种主要的信道接口:并口和串口,以及它们的信号和时序。第四章将介绍数据帧的格式,包括命令帧等。3.2并口/串口的配置信道接口的硬件接口部分就是串口或者并口,管脚CH_SEL[2-0]的配置将决定使用哪种接口。见表3-A。接口选择管脚CH_SEL2(98脚)CH_SEL1(99脚)CH_SEL0(2脚)端口模式数据格式CHP_WRNCHP_RDNCHS_I_CLKCHS_O_CLK语音数据字的位数000并行被动帧格式InN/AN/AN/A001并行主动帧格式OutN/AN/AN/A010串行主动帧格式N/AInOutN/A011串行被动帧格式N/AInInN/A100串行被动非帧格式N/AInIn1101串行被动非帧格式N/AInIn2110串行被动非帧格式N/AInIn3111串行被动非帧格式N/AInIn4表3-A并口、串口工作配置选择并口的话,那么信道数据传输时将有8位宽。并口包括主动和被动两种工作模式。主动和被动是指激励信号是由本芯片给出,还是由外部模块送入。并口模式只存在于帧格式下。3.3节将有并口的详细介绍。选择串口的话,每次读写信号将输入、输出16位的数据字。串口可以存在于帧格式下也可以存在于非帧格式下。串口帧格式可以配置时钟信号为输入信号或者输出信号(见表3-A)。非帧格式下,串口仍然每次传输16位的数据字,但是每字中只包含1-4位声音数据。3.4节将详细介绍串口。第4页共33页AMBE-1000手册-B的信号构成了并口的信道接口。要记住并口只存在于帧格式下。每20ms,帧格式包含272位(34字节)的编码器输出数据,并送到解码器。也就是说每20ms并口将分别执行34次读写操作。并口与任何时钟都是异步的。管脚符号方向管脚号描述EPROUT46编码器包准备好:每20ms,该输出信号变高一次,用于指示编码器将有一帧数据输出。在第一次读操作后(CHP_RDN),该信号变低。DPEOUT47解码器包空:每20ms,该输出信号变高一次,用于指示解码器已准备好接收下一帧数据。在第一次写操作后(CHP_WRN),该信号变低。CHP_RDNIN/OUT64读选通:在主动模式,该信号为输出,其上升沿表示从AMBE-1000输出的数据应被锁存;在被动模式,该信号由外部输入,在下降沿将数据锁存到总线上。(负脉冲,从AMBE-100读数据)CHP_WRNIN/OUT65写选通:在主动模式,该信号为输出,其下降沿表示外部硬件应将数据值送到总线上;在被动模式,该信号由外部输入。在两种模式下,AMBE-1000都在信号的上升沿锁存数据。(负脉冲,往AMBE-1000写数据)CHP_OBEOUT61输出缓冲区空:在每一次读操作(CHP_RDN)后,该信号变高;一旦端口有数据准备被读,该信号变低。如果读操作(CHP_RDN)间隔有至少350个时钟(CLK_I)周期,那么可以忽略CHP_OBE。CHP_IBFOUT63输入缓冲区满:在每一次写操作(CHP_WRN)后,该信号变高;当端口准备好被写时,该信号变低。如果写操作(CHP_WRN)间隔有至少350个时钟(CLK_I)周期,那么可以忽略CHP_IBF。CHP_SEL1IN68并口选择1:在被动模式,通过10K电阻接地;在主动模式,该管脚为输出,可以不管。CHP_SEL2IN69并口选择2:在被动模式,该管脚为并口使能,低有效。当CHP_SEL2为高时,AMBE-1000忽略CHP_WRN和CHP_RDN管脚的活动。正常情况下,通过10K电阻接地。在主动模式下,该管脚为输出,可以不管。CHP_D7I/O52数据总线7CHP_D6I/O53数据总线6CHP_D5I/O54数据总线5CHP_D4I/O55数据总线4CHP_D3I/O57数据总线3CHP_D2I/O58数据总线2CHP_D1I/O59数据总线1CHP_D0I/O60数据总线0表3-B并口管脚说明第5页共33页AMBE-1000手册并口被动模式的输出时序3.3.4并口被动模式的输入时序第7页共33页AMBE-1000手册-F显示了并口主动模式下输出的扩展时序。这种配置下,并口由芯片自己控制。每20msCHP_RDN信号就会产生一系列的动作:CHP_RDN将被拉低34次,对应每帧34字节的的编码器输出。每个CHP_RDN脉冲保持4个CLK_O的周期宽度。相邻的CHP_RDN信号动作之间至少要有350个CLK_O的周期的延迟。3.3.6并口主动模式下输入的扩展时序图3-G显示了并口主动模式下输入的扩展时序。这种配置下,并口由芯片自己控制。每20msCHP_WRN信号就会产生一系列的动作:CHP_WRN将被拉低34次,对应每帧34字节的的解码器输入。每个CHP_WRN脉冲保持4个CLK_O的周期宽度。相邻的CHP_WRN信号动作之间至少要有350个CLK_O的周期的延迟。3.3.7并口被动模式下输出的扩展时序图3-H显示了并口被动模式下单帧输出的时序关系。当EPR(EncoderPacketReady“编码器包准备好”)信号变高意味着一个已编码的数据帧准备好发送。控制器在接下来的20ms的时间内读取34字节(无论工作于何种波特率)的数据来形成一帧的语音数据。第4章将介绍这种数据格式。在读取每个字节的过程中,控制器必须等待CHP_OBE信号被拉低以进行下一个字节的读取。不过,如果控制器在相邻的两个CHP_RDN脉冲间能保证至少有350个CLK_I(CLK_O)的延时,则不必考虑CHP_OBE是否被拉低。就算在较低的波特率情况下,每一帧控制器都将执行34次的读操作,只不过每帧的昀后一些数据位会为没有意义的0。第8页共33页AMBE-1000手册-I显示了并口被动模式下单帧输