首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

G.726语音编解码在SoPC系统中

G.726语音编解码在SoPC系统中

G.726是ITU前身CCITT于1990年在G.721和G.723标准的基础上提出的关于把64kbps非线性PCM信号转换为40kbps、32kbps、24kbps、16kbps的ADPCM信号的标准。G.726标准算法简单,语音质量高,多次转换后语音质量有保证,能够在低比特率上达到网络等级的话音质量,从而在语音存储和语音传输领域得到广泛应用[2]。

  G.726语音压缩算法已经能够在以DSP处理器为核心器件的DSP应用系统上实现。但开发以DSP处理器为核心的DSP应用系统所采用的开发方法是自底向上的设计流程,严重影响开发的效率和成功率。面对现代通信技术的发展,DSP处理器已暴露出硬件结构的不可变性、处理速度比较慢等不足[1]。现代大容量、高速度的FPGA及其相关的开发技术,在可重配置的DSP应用领域、DSP数据大吞吐量和数据的纯硬件处理方面,有独特的优势[1]。新的基于FPGA的DSP系统级开发工具以及完整的软件开发平台,使得设计者能采用自顶向下的开发方法进行FPGA的DSP设计,设计效率大为提高。

  本文分析了G.726标准,给出了基于FPGA的DSP设计开发流程,利用MATLAB/Simulink、Altera公司的DSP Builder和SOPC Builder工具设计了语音记录SoPC系统中的G.726语音编解码器,并实现了编解码器在该系统中的综合。采用基于FPGA的G.726语音编解码器的语音记录嵌入式系统具有运行速度快、体积小巧、开发周期短等优点。







图1 ADPCM编码器框图







图2 基于FPGA的DSP设计系统级开发流程
  1、G.726语音编解码标准

  G.726编码器框图如图1所示。G.726语音编码器首先将输入的A律或μ律的log-PCM信号S(k)转换成线性的PCM码Sl(k),然后与预测信号Se(k)相减产生差分信号d(k),再对差值信号进行自适应量化,产生2~5比特ADPCM码I(k)。一方面将I(k)送至解码器;另一方面逆自适应量化器利用I(k)产生量化差分信号dq(k)。预测信号Se(k)和量化差分信号dq(k)相加产生本地重构信号Sr(k)。自适应预测器是由二阶极点和六阶零点组成的滤波器,根据重构信号Sr(k)和量化差分信号dq(k)产生输入信号的预测信号Se(k)。量化器比例因子自适应单元根据输入信号的特性计算量化器比例因子y(k),用来控制量化器和逆量化器,以获得自适应功能。量化器比例因子由快速因子和慢速因子两部分,以及速度控制因子al(k)对这两部分的加权组成。速度比例因子al(k)的计算由自适应速度控制单元与音调和传送检测器单元完成。

  G.726语音解码器的解码过程实际上已经包含在编码器中,只是多了输出PCM格式转换单元和同步串行编码调整单元。输出PCM格式转换是将线性PCM码转换为A律或μ律PCM码;同步串行编码调整是为了防止多级传输、转换过程中的误差。

  2、基于FPGA的DSP设计开发流程

  利用传统的开发工具,基于FPGA的DSP开发者在算法确定后只能直接使用VHDL或VerilogHDL语言进行FPGA的DSP系统设计,开发需要较长的周期,且难度比较大。目前出现的基于FPGA的DSP开发工具,如DSP Builder、SOPC Builder、System Generator等,使得设计者能遵循一条类似于软件设计流程的开发方法进行FPGA的DSP设计,设计效率大为提高。本文给出利用MATLAB/Simulink和Altear公司的开发工具进行基于FPGA的DSP设计的开发流程。DSP Builder是Altera公司推出的面向DSP开发的系统级工具。它作为MATLAB的一个Simulink工具箱(ToolBox)出现。MathWorks的MATLAB和Simulink系统级的设计工具具备了算法开发、仿真、验证能力,DSP Builder将这些工具与Altera的开发工具组合在一起,为用户提供了一个完整的DSP开发平台。

  基于FPGA的DSP设计系统级开发流程如图2所示。其步骤1)在MATLAB/Simulink中对DSP系统进行建模,用图形方式调用Altera DSP Builder和其他Simulink库中的图形模块(Block),构成系统级和算法级设计框图,同时利用Simulink完成模型仿真。(2)利用DSP Builder将Simulink的模型文件(.mdl)转化成通用的硬件描述语言VHDL文件(.vhd),转换获得的HDL文件是基于RTL级的VHDL描述。(3)对转换过程中产生的VHDL的RTL代码和仿真文件进行综合、编译适配以及仿真。所用工具可以是Altera的Quartus II软件,也可以是第三方软件工具。(4)在DSP Builder中直接下载到FPGA用户开发板上,也可通过Quartus II完成硬件的下载、测试。整个开发流程几乎可以在同一环境中完成,真正实现了自顶向下的设计流程,极大地缩短了DSP设计周期。

  3、G.726语音编解码器在SoPC中的实现

  3.1 G.726标准算法的简化

  本文设计的编解码器是在语音记录系统中实现G.726建议的速率为32kbps的ADPCM算法,根据实际情况对算法进行了一些简化和改进。

  具体简化如下1)由于此系统中编解码器的输入信号是线性PCM码,因此PCM码转换模块可以省略。(2)这个算法是用在单纯的语音存储中,可不进行单音/过渡音检测。(3)对量化器比例因子y(k)的更新进行简化。y(k)的更新计算为:

  y(k)=al(k)yu(k-1)+[1-al(k)]yl(k-1)    (1)

  一般情况下,只有语音信号时,al(k)是趋于1的;当输入为平稳信号时,al(k)的值则在0至1之间。对语音存储系统,在输入只有语音的情况下可以粗略地认为al(k)的值近似为1,从而将计算得到的快速比例因子yu(k)直接作为新的比例因子y(k),即y(k)=yu(k-1),降低了算法的复杂度。
3.2 G.726算法在Simulink中的建模

  在Simulink中利用Altera DSP Builder库模块建立用于FPGA定点实现的模型。这里给出G.726编码器模型的设计。整个设计采用多层次结构,在顶层设计模型下包括多个子系统模块模型,如自适应量化器子系统模型、逆自适应量化器子系统模型、量化器比例因子自适应子系统模型等。下面重点分析编码器系统中的顶层设计模型及自适应量化器子系统模型。
继承事业,薪火相传
返回列表