G.726编码器的框图如图所示。
G.726语音编码器首先将输入A律或μ律log-PCM信号S(k)转换为线性PCM码S1(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码;同步串行码调整是为了防止多级传输和转换中的错误。
设计的编解码器是一种ADPCM算法,在语音记录系统中由G.726推荐的速率为32 kbps。
该算法根据实际情况进行了简化和改进。
具体的简化如下:(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),这降低了算法的复杂度。
使用MATLAB / Simulink和DSP Builder工具进行基于FPGA的DSP设计需要进行一系列仿真。
Simulink中设计的模型首先在Simulink中进行仿真,不仅用于验证模型的正确性,还因为用于ModelSim仿真的TestBench文件中的输入信号激励是由SignalCompiler根据Simulink的仿真结果生成的,并且仅在模拟后使用。
SignalCompiler转换生成的VEC文件有效。
在Simulink中完成模拟验证后,使用SignalCompiler设计和转换模型。
对于设计转换后生成的VHDL文件,必须执行RTL级仿真。
由于Simulink中的模型仿真是算法级的,并且生成的VHDL描述是RTL级,因此可能无法完全满足两者描述的条件,因此需要对生成的RTL级VHDL代码进行功能仿真。
可以通过运行ModelSim中转换过程生成的Tcl脚本文件来完成模拟。
最后,您可以使用转换过程生成的VEC文件在Quartus II软件中执行时序仿真。
该设计完成了上述语音编码器的模拟。
Simulink的仿真结果与ModelSim的仿真结果基本一致,表明两种描述是一致的; Quartus II的时序仿真结果表明,所设计的语音编码器已达到预期水平。
结果。