专利名称:一种ambe-2000声码器编码数据码流控制方法
技术领域:
本发明涉及通信领域,具体涉及一种AMBE-2000声码器编码数据码流控制方法, 其控制方法可以保证在声码器编码输出速率与外部器件读取速率不精确吻合时,外部器件 读取的数据码流不会造成解码器解码错误。
背景技术:
AMBE-2000 声码器是 DVSI 公司研发的一款采用 AMBE (Advanced Multi-Band Excitation,高级多带激励)算法的高性能、低功耗、全双工可变比特率的语音压缩芯片。 该芯片压缩率可在2. Okbps-9. 6kbps之间自由调节,且具有前向纠错(FEC)、语音激活检测 (VAD)、双音多频信号检测(DTMF)和回音消除等功能。AMBE-2000声码器由编码器和解码器独立的两部分构成。编码器接收8kHz采样率 (可以是16位线性,8位A律或8位y律)的语音数据实现片内语音编码,并以指定码率 输出。解码器接收编码器输出的码流解码成语音信号,编码器和解码器的接口时序是完全 异步的。在常规设计中,外部器件在读取AMBE-2000声码器编码数据时,其处理时钟应该 与AMBE-2000声码器编码输出速率完全一致,否则当外部器件读取时钟大于AMBE-2000声 码器编码输出速率时,AMBE-2000声码器编码器的FIFO (First In First Out,先入先出数 据缓存器)会被读空,导致外部器件无法继续读取连续的数据码流;当外部器件读取时钟 小于AMBE-2000声码器编码输出速率时,AMBE-2000声码器编码器的FIFO会被写满,此时 AMBE-2000声码器会自动丢弃未读出的数据帧。由于AMBE-2000声码器的编码数据码流格式并未公开,当外部器件读取速率与声 码器编码输出速率不精确吻合时,无法在数据码流结构上对数据进行增减以保证数据码流 的连续性。盲目的数据码流删减操作会导致AMBE-2000声码器解码器失去同步,造成声音 几百毫秒的中断。本发明提出一种AMBE-2000声码器编码数据码流控制方法,能够保证处 理后的数据码流不会导致AMBE-2000声码器解码器失去同步,解码器输出的声音信号大约 有20毫秒的 音,对声音整体质量影响不大。
发明内容
本发明要解决的技术问题是提供一种AMBE-2000声码器编码数据码流控制方法, 其控制方法可以保证在声码器编码输出速率与外部器件读取速率不精确吻合时,外部器件 读取的数据码流不会造成解码器解码错误。AMBE-2000声码器在工作时,每隔大约20毫秒会在EPR (Encoder Packet Ready) 管脚输出一个由高变低的电平变化,以指示编码器编码完成,此时,外部器件可以按照 AMBE-2000声码器的数据读取时序读出数据。在有格式模式下,编码器每20毫秒输出一帧数据,包含24个Word,每个Word包含 16比特数据。其中前12个Word为帧头信息,后12个Word为编码数据。
在无格式模式下,编码器每20毫秒输出一帧数据,包含N个Word,每个Word包 含16比特数据。其中N = BPS*0.02/BPW,BPS表示预设定的编码器输出码率,范围是 2. Ok-9. 6k,BPW表示预设定的每个Word包含的有效比特数,取值为1_4。根据本发明的一个方面,提供了一种AMBE-2000声码器编码数据码流控制方法, 包括下列步骤1)系统复位后,外部器件等待AMBE-2000声码器ETO信号的下降沿;2)当信号下降沿来临时,表示AMBE-2000声码器的一帧数据已经编码完毕,外 部器件按照数据读取时序将数据存入数据缓冲区,当该帧数据即将读取完毕,外部器件继 续检测AMBE-2000声码器EH 信号的下降沿;3)重复步骤2)所述方法继续读取后续编码帧并存入数据缓冲区;在上述方法中,所述步骤2)还包括21)当外部器件读取时钟大于AMBE-2000声码器编码输出速率时,在读完一帧编 码数据后,AMBE-2000声码器并没有给出EH 信号的下降沿,指示下一帧数据已经编码完 成,导致外部器件无法继续读取连续的数据码流,此时外部器件自动生成一组完整帧长度 的0作为数据填充帧按照外部器件读取时钟速率存入缓冲区,在此期间,若信号的下降 沿来临,则在填充帧存储完毕后继续读取AMBE-2000声码器编码数据;22)当外部器件读取时钟小于AMBE-2000声码器编码输出速率时,AMBE-2000声码 器在每帧编码结束后仍然会给出Era信号的下降沿,外部器件只需严格按照一个Era信号 的下降沿读取一个数据帧的流程执行即可,若AMBE-2000声码器编码器数据积压导致FIFO 被写满,AMBE-2000声码器会自动丢弃未读出的数据帧;在上述方法中,所述步骤1)中外部器件为Xilinx公司的Spartan 3 FPGA ;在上述方法中,所述步骤2)中数据读取时序为AMBE-2000用户手册提及的标准读 取时序;在上述方法中,所述步骤2)中数据缓冲区为FIFO,深度为1024,宽度为1比特;在上述方法中,所述步骤21)中完整帧长度计算方法如下在有格式模式下,一帧数据包含24个Word,每个Word包含16比特数据,共24*16 =384比特;在无格式模式下,一帧数据包含N个Word,每个Word包含16比特数据,其中 N = BPS*0. 02/BPff,BPS表示预设定的编码器输出码率,范围是2. Ok-9. 6k,BPW表示预设定 的每个Word包含的有效比特数,取值为1-4。本发明提供的一种AMBE-2000声码器编码数据码流控制方法,可以保证在声码器 编码输出速率与外部器件读取速率不精确吻合时,外部器件读取的数据码流不会造成解码 器解码错误,解码器输出的声音信号大约有20毫秒的哑音,对声音整体质量影响不大。
图1AMBE-2000声码器编码数据码流控制方法整体框图;图2AMBE-2000声码器编码数据码流控制方法流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对根据本发明一个实施例的AMBE-2000声码器编码数据码流控制方法进一步详细说明。本发明提供一 种AMBE-2000声码器编码数据码流控制方法,其整体框图参见附图1,包括下列步骤1)系 统复位后,外部器件等待AMBE-2000声码器EH 信号的下降沿;2)当ETO信号下降沿来临 时,外部器件按照数据读取时序将数据存入数据缓冲区,当该帧数据即将读取完毕,外部器 件继续检测AMBE-2000声码器EH 信号的下降沿;3)当声码器编码输出速率与外部器件读 取速率不精确吻合时,采用填充帧的方法保证数据码流的连续性。应当理解,此处所描述的 具体实施例仅用以解释本发明,并不用于限定本发明。本实施例中AMBE-2000声码器工作模式为无格式,编码器输出码率为8kbps,每个 Word包含有效比特数为1 ;外部器件为Xilinx公司的Spartan 3FPGA,片上开启一块深度 1024,宽度1比特的FIFO,FPGA采用AMBE-2000用户手册提及的标准电路与AMBE-2000声 码器相连接,完成初始化配置。该系统工作流程图参见附图2。系统上电复位后,FPGA检测AMBE-2000声码器ETO信号的下降沿。当EH 信号下降沿来临时,FPGA进入读状态,以8k的时钟将编码数据读出并存入 片上的FIFO,与此同时,FPGA继续检测AMBE-2000声码器ETO信号的下降沿,当FPGA跳出 该帧读状态后,继续进行下一帧的读取。当FPGA的8k时钟大于AMBE-2000声码器的编码输出速率时,在读完一帧编 码数据后,AMBE-2000声码器并没有给出下一帧EH 信号的下降沿,此时FPGA自动生成 8k*0. 02/1 = 160个0作为数据填充帧以8k的速率存入FIFO,在此期间,若FPGA检测到 EPR信号的下降沿,则在填充帧存储完毕后继续读取AMBE-2000声码器编码数据。当外部器件读取时钟小于AMBE-2000声码器编码输出速率时,AMBE-2000声码器 在每帧编码结束后仍然会给出Era信号的下降沿,FPGA只需严格按照一个Era信号的下降 沿读取一个数据帧的流程执行即可,若AMBE-2000声码器编码器数据积压导致FIFO被写 满,AMBE-2000声码器会自动丢弃未读出的数据帧。将该数据码流送至AMBE-2000声码器解码器进行解码时,数据填充帧的160个0 不会造成解码器失去同步,仅仅会产生一个20毫秒的哑音,对语音信号质量影响不大。应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情 况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范 围不受所给出的任何特定示范教导和限制。
权利要求
一种AMBE 2000声码器编码数据码流控制方法,包括下列步骤1)系统复位后,外部器件等待AMBE 2000声码器EPR信号的下降沿;2)当EPR信号下降沿来临时,表示AMBE 2000声码器的一帧数据已经编码完毕,外部器件按照数据读取时序将数据存入数据缓冲区,当该帧数据即将读取完毕,外部器件继续检测AMBE 2000声码器EPR信号的下降沿;3)重复步骤2)所述方法继续读取后续编码帧并存入数据缓冲区。
2.根据权利要求1所述的方法,其特征在于,所述步骤2)还包括21)当外部器件读取时钟大于AMBE-2000声码器编码输出速率时,在读完一帧编码数 据后,AMBE-2000声码器并没有给出EH 信号的下降沿,指示下一帧数据已经编码完成,导 致外部器件无法继续读取连续的数据码流,此时外部器件自动生成一组完整帧长度的0作 为数据填充帧按照外部器件读取时钟速率存入缓冲区,在此期间,若Era信号的下降沿来 临,则在填充帧存储完毕后继续读取AMBE-2000声码器编码数据;22)当外部器件读取时钟小于AMBE-2000声码器编码输出速率时,AMBE-2000声码器在 每帧编码结束后仍然会给出Era信号的下降沿,外部器件只需严格按照一个Era信号的下 降沿读取一个数据帧的流程执行即可,若AMBE-2000声码器编码器数据积压导致FIFO被写 满,AMBE-2000声码器会自动丢弃未读出的数据帧。
3.根据权利要求1所述的方法,其特征在于,所述步骤2)中外部器件为Xilinx公司的 Spartan 3FPGA。
4.根据权利要求1所述的方法,其特征在于,所述步骤2)中数据缓冲区为FIFO,深度 为1024,宽度为1比特。
5.根据权利要求2所述的方法,其特征在于,所述步骤21)中完整帧长度计算方法如下在有格式模式下,一帧数据包含24个Word,每个Word包含16比特数据,共24*16 = 384比特;在无格式模式下,一帧数据包含N个Word,每个Word包含16比特数据,其中N = BPS*0. 02/BPff,BPS表示预设定的编码器输出码率,范围是2. Ok-9. 6k,BPW表示预设定的每 个Word包含的有效比特数,取值为1-4。
全文摘要
本发明提供一种AMBE-2000声码器编码数据码流控制方法,包括下列步骤1)系统复位后,外部器件等待AMBE-2000声码器EPR信号的下降沿;2)当EPR信号下降沿来临时,外部器件按照数据读取时序将数据存入数据缓冲区,当该帧数据即将读取完毕,外部器件继续检测AMBE-2000声码器EPR信号的下降沿;3)当声码器编码输出速率与外部器件读取速率不精确吻合时,采用填充帧的方法保证数据码流的连续性;根据本发明可保证处理后的数据码流不会导致AMBE-2000声码器解码器失去同步,解码器输出的声音信号大约有20毫秒的哑音,对声音整体质量影响不大。
文档编号G10L19/00GK101944363SQ201010288579
公开日2011年1月12日 申请日期2010年9月21日 优先权日2010年9月21日
发明者易寒飞, 毛峡 申请人:北京航空航天大学