G.726语音编解码器在SoPC中的应用案例
发布时间:2008/5/28 0:00:00 访问次数:544
全文内容: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语音编解码器的语音记录嵌入式系统具有运行速度快、体积小巧、开发周期短等优点。
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)&n bsp;(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编码器模型的设计。整个设计采用多层次结构,在顶层设计模型下包括多个子系统模块模型,如自适应量化器子系统模型、逆自适应量化器子系统模型、量化器比例因子自适应子系统模型等。下面重点分析编码器系统中的顶层设计模型及自适应量化器子系统模型。
3.2.1 编码器的顶层设计模型
顶层模型提供了对外的pcm语音接口,同时也提供了对avalon总线的接口,使得所设计的编码器模块可通过sopc builder集成为nios ii系统的一个外围设备。模型中的自适应量化器模块、逆自适应量化器模块、量化器比例因子自适应模块和自适应预测器模块均为hdl subsystem。编码器的顶层设计模型如图3所示。
图3 adpcm编码器模型
图4 自适应量化器模型
其中signalcompiler模块是dsp builder的心脏。其主要完成的功能包括:(1)将simulink设计转变成可综合的rtl级vhdl代码;(2)产生vhdl testbenches;(3)为leonardospectrum、synplify和modelsim第三方eda工具产生tcl脚本文件;(4)为quar
全文内容: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语音编解码器的语音记录嵌入式系统具有运行速度快、体积小巧、开发周期短等优点。
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)&n bsp;(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编码器模型的设计。整个设计采用多层次结构,在顶层设计模型下包括多个子系统模块模型,如自适应量化器子系统模型、逆自适应量化器子系统模型、量化器比例因子自适应子系统模型等。下面重点分析编码器系统中的顶层设计模型及自适应量化器子系统模型。
3.2.1 编码器的顶层设计模型
顶层模型提供了对外的pcm语音接口,同时也提供了对avalon总线的接口,使得所设计的编码器模块可通过sopc builder集成为nios ii系统的一个外围设备。模型中的自适应量化器模块、逆自适应量化器模块、量化器比例因子自适应模块和自适应预测器模块均为hdl subsystem。编码器的顶层设计模型如图3所示。
图3 adpcm编码器模型
图4 自适应量化器模型
其中signalcompiler模块是dsp builder的心脏。其主要完成的功能包括:(1)将simulink设计转变成可综合的rtl级vhdl代码;(2)产生vhdl testbenches;(3)为leonardospectrum、synplify和modelsim第三方eda工具产生tcl脚本文件;(4)为quar