CN101630242A - G.723.1编码器快速计算自适应码书的贡献模块 - Google Patents

G.723.1编码器快速计算自适应码书的贡献模块 Download PDF

Info

Publication number
CN101630242A
CN101630242A CN200910181979A CN200910181979A CN101630242A CN 101630242 A CN101630242 A CN 101630242A CN 200910181979 A CN200910181979 A CN 200910181979A CN 200910181979 A CN200910181979 A CN 200910181979A CN 101630242 A CN101630242 A CN 101630242A
Authority
CN
China
Prior art keywords
circuit
add
register
result
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200910181979A
Other languages
English (en)
Other versions
CN101630242B (zh
Inventor
郑茳
肖佐楠
匡启和
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CCore Technology Suzhou Co Ltd
Original Assignee
CCore Technology Suzhou Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CCore Technology Suzhou Co Ltd filed Critical CCore Technology Suzhou Co Ltd
Priority to CN2009101819796A priority Critical patent/CN101630242B/zh
Publication of CN101630242A publication Critical patent/CN101630242A/zh
Application granted granted Critical
Publication of CN101630242B publication Critical patent/CN101630242B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种G.723.1编码器快速计算自适应码书的贡献模块,其特征在于:所述贡献模块为一个硬件向量内积运算器,该向量内积运算器具有两个向量输入端和四个向量内积输出端,不仅可以执行两个60维向量的内积运算,而且可以执行三组两个20维向量的内积运算。由于这两种运算都是计算自适应码书贡献部分过程中计算强度最大的部分,因此合用一个硬件向量内积运算器不仅简化的结构,而且提高计算速度,尤其在执行两个20维向量的内积运算时可以一次并行处理三组两个20维向量的内积运算,大大提高了计算速度。

Description

G.723.1编码器快速计算自适应码书的贡献模块
技术领域
本发明涉及一种语音信号处理技术领域,具体涉及G.723.1编码器中用于快速计算自适应码书的贡献模块。
背景技术
G.723.1是一个重要的电话语音压缩标准。它可用于以非常低的比特率压缩多媒体业务中的语音或者其他音频信号成分,主要应用是作为整个H.324标准(H.324是在GSTN和无线网络上进行多媒体通信的标准)系列之一部分的甚低比特率的可视电话。G.723.1编码器基于线性预测合成分析法编码的原理,通过使一个感知加权的错误信号最小,来计算10阶线性预测编码器(LPC)滤波器。LPC滤波器系数采用一个预测分裂向量量化器(PSVQ)进行量化。未量化的LPC滤波器系数用来构成短期感知加权滤波器,该滤波器用来过滤整个帧并得到感知加权的语音信号。G.723.1编码器使用一个5阶基音预测器,采用自适应码书来估计基音预测的贡献部分。最后将该基音预测器的贡献部分从初始目标向量中减去,然后对高比特率,采用了多脉冲最大似然量化(MP-MLQ)激励,而对低比特率,采用了一个代数编码激励(ACELP)。解码器操作也是基于逐帧来完成的。对每个子帧,自适应码书激励和固定码书激励都被解码并输入到合成滤波器中,然后自适应后置滤波被执行,它包括一个共振峰和一个基音后置滤波器。另外,一个增益缩放单元将能量保持在共振峰后置滤波器输入电平。
图1为G.723.1编码器组织结构图,从图中可以看出G.723.1编码器的主要功能模块如下表:
  代号   功能
  C1   子帧划分
  C2   高通滤波
  C3   计算LPC系数
  C4   转换LPC到LSP系数
  C5   LSP的反向量化
  C6   LSP插值器
  C7   计算感知滤波器系数
  C8   应用感知加权滤波器
  C9   开环基音估计
  C10   计算谐波噪声滤波器系数
  C11   应用谐波噪声滤波器
  C12   脉冲响应计算
  C13   进行振铃减法
  C14   计算自适应码书的贡献部分(基音预测器)
  C15   计算固定码书的贡献部分
  C16   残差信号量化
  C17   脉冲位置的组合编码
  C18   基音同步激励
  C19   计算创新向量
  C20   对自适应码书的贡献部分进行解码
  C21   存储更新
  C22   激励模块
在G.723.1编码器各功能模块中,计算强度最大是基音预测器C14中的自适应码书的贡献部分。以往计算自适应码书都由软件来实现,其实现方法如下:
自适应码书的贡献部分使用了一个5阶基音预测器和自适应码书。为了更清楚的描述该贡献部分的算法,所用到的符号说明如下表:
Figure G2009101819796D00021
自适应码书的贡献部分是一个5阶基音预测器,表达式是:
u ( n ) = Σ j = 0 4 b j e ′ ( n + j ) , 0 ≤ n ≤ 59 - - - ( 1 )
把(1)式用矩阵的形式表示为
UT=EBT                            (2)
其中,B为基音预测器增益向量,B=[b0 b1 b2 b3 b4]    (3)
E是前一子帧解码的组合激励向量,
Figure G2009101819796D00023
U是被预测的基音对激励的贡献向量,
U=[u0 u1 ... un ... u59] 0≤n≤59            (5)
根据编解码算法,被预测的基音对激励的贡献向量U通过组合滤波器S(z)后,产生了基音对语音的实际贡献{p[n]}n=0....59,这个实际贡献可用向量P表示为:
P=[p0 p1 ... pn ... p59] 0≤n≤59            (6)
由于组合滤波器S(z)在时间域用卷积脉冲响应{h(n)}n=0..59表示,为便于计算,用矩阵形式表示为:
Figure G2009101819796D00031
其中H为脉冲响应矩阵。
所以基音对语音的实际贡献向量P可以表示为:
PT=HUT                                       (8)
根据(2)式,基音对语音的实际贡献向量P可以进一步表示为:
PT=HUT=HEBT=SBT                            (9)
其中,矩阵S表示如下:
Figure G2009101819796D00032
矩阵S的元素表示如下:
s ( m , n ) = Σ i = 0 m - 1 h ( m - i ) e ′ ( n + i ) ( m = 0 . . . 59 , n = 0 . . . 59 ) - - - ( 11 )
该贡献部分的主要目的就是要在一组向量量化的码书中搜索到一个最佳向量作为基音预测器增益向量B,使预测的信号P最接近目标向量T,也就是两者之间的平方差λ最小,即
λ=(P-T)(P-T)T=TTT-2TSBT+BSTSBT=TTT-2GBT+BQBT  (12)
其中:
G=TS Q=STS                    (13)
以上(12)式的求解问题可转化为解下列问题:
max B ( G B T - 0.5 BQ B T ) - - - ( 14 )
而(14)式也可写为
max B ( Σ i = 0 4 b i G ( i ) + Σ i = 0 4 - 0.5 · b i 2 Q ( i , i ) + Σ i = 0 4 Σ j = 0 i - 1 - b i b j Q ( i , j ) ) - - - ( 15 )
该算法主要运算集中在公式(11)和公式(13)所描述的运算。而公式(11)和公式(13)涉及的都是60维向量之间的内积运算,由此可见,由软件来计算自适应码书的贡献部分存在计算量大,速度慢,耗时多等缺点。
发明内容
本发明提供一种G.723.1编码器快速计算自适应码书的贡献模块,目的是把该功能模块的计算强度最大的部分采用简单的硬件实现,从而加速该模块的执行,提高计算自适应码书贡献部分的速度。
为达到上述目的,本发明采用的技术方案是:一种G.723.1编码器快速计算自适应码书的贡献模块,所述贡献模块为一个硬件向量内积运算器,该向量内积运算器由二进制数的CSD码转换电路、选择加运算电路和移位加运算电路、两个向量输入端和四个向量内积输出端组成,其中,第一向量输入端和第二向量输入端均为60维的向量输入端;第一向量内积输出端输出两个向量输入端输入的前20维向量内积运算的结果,第二向量内积输出端输出两个向量输入端输入的中间20维向量内积运算的结果,第三向量内积输出端输出两个向量输入端输入的后20维向量内积运算的结果,第四向量内积输出端输出两个向量输入端输入的60维向量内积运算的结果。
上述技术方案中的有关内容解释如下:
1、上述方案中,对于标准二进制来说,当某一位为零时其所对应的项并不参与运算,可以用二进制数的CSD码表示方法使非零元素的数量降低,从而使加法器的数目减少,降低硬件规模。CSD码即为有符号数字量(SD)有三重值{0,-1,+1},而且任意两个非零位均不相邻。而二进制数的CSD码表示对给定数是唯一的并且是最少非零位的。因为用标准二进制表示的一个定数,如果存在一个连续三个非零位的话,则用CSD码表示只需两个非零位就能表示标准二进制中的连续三个非零位,所以小于用标准二进制表示的非零位个数。用CSD码表示相对于标准二进制表示的改进在于引入了负的符号位,从而降低了非零位个数,大大降低了逻辑资源的占用(大约平均降低33%的逻辑资源)。
2、上述方案中,所述“二进制数的CSD码转换电路”为现有技术,请参见《微计算机信息》(嵌入式与SoC)2008年第24卷第8-2期,由王瑞光和田利波撰写的《基于CSD编码的16位并行乘法器的设计》中的二进制数的CSD码转换电路(刊登该杂志的第75、76页)。
本发明原理是:本发明设计了一种用于快速计算自适应码书的贡献模块,该贡献模块为一个硬件向量内积运算器,向量内积运算器具有两个向量输入端和四个向量内积输出端。在计算自适应码书的贡献部分过程中,当需要计算两个60维向量的内积时,只要将两个60维向量分别从向量内积运算器的第一向量输入端和第二向量输入端输入,就能从向量内积运算器的第四向量内积输出端得到结果;当需要计算多次两个20维向量的内积时,只要将三组两个20维向量分别从向量内积运算器的第一向量输入端和第二向量输入端输入,该内积运算器也可以当做同时执行三组独立的20维向量的内积运算,并分别从第一向量内积输出端、第二向量内积输出端和第三向量内积输出端得到结果。
由于上述技术方案运用,本发明与现有技术相比具有下列优点和效果:
1、本发明采用硬件向量内积运算器来计算自适应码书的贡献部分,比软件计算要快。
2、本发明硬件向量内积运算器具有两个向量输入端和四个向量内积输出端。该硬件向量内积运算器不仅可以用来执行两个60维向量的内积运算,而且可以用来执行三组两个20维向量的内积运算。由于两个60维向量的内积运算和两个20维向量的内积运算都是计算自适应码书贡献部分过程中计算强度最大的部分,因此合用一个硬件向量内积运算器不仅简化的结构,而且提高计算速度,尤其在执行两个20维向量的内积运算时可以一次并行处理三组两个20维向量的内积运算。
附图说明
附图1为G.723.1编码器组织结构图;
附图2为本发明快速计算自适应码书的贡献模块原理图;
附图3为本发明选择加运算电路框图;
附图4为本发明移位加运算电路框图。
具体实施方式
下面结合附图及实施例对本发明作进一步描述:
实施例:
第一部分  一种G.723.1编码器快速计算自适应码书的贡献模块
如图2所示,该贡献模块为一个硬件向量内积运算器,该向量内积运算器由二进制数的CSD码转换电路、选择加运算电路和移位加运算电路、两个向量输入端和四个向量内积输出端组成,其中,第一向量输入端I1和第二向量输入端I2均为60维的向量输入端;第一向量内积输出端O1输出两个向量输入端输入的前20维向量内积运算的结果,第二向量内积输出端O2输出两个向量输入端输入的中间20维向量内积运算的结果,第三向量内积输出端O3输出两个向量输入端输入的后20维向量内积运算的结果,第四向量内积输出端O4输出两个向量输入端输入的60维向量内积运算的结果。
所述二进制数的CSD码转换电路、选择加运算电路和移位加运算电路分述如下:
(1)二进制数的CSD码转换电路
所述二进制数的CSD码转换电路主要由段内转换电路和传递信号产生电路组成,该电路将第一向量输入端I1输入的60维向量中的每个元素进行分段,根据段与段之间的延时以及段内的延时情况分别进行转换,其中,60维向量中的第一元素转换成第一列CSD码,第二元素转换成第二列CSD码,第三元素转换成第三列CSD码,以此类推到第六十元素换成第六十列CSD码,从而形成一个对应第一向量输入端I1输入的60维向量的CSD码转换矩阵,其中CSD码转换矩阵的行数等于设定的CSD码的位数M。所述二进制数的CSD码转换电路为现有技术,请参见《微计算机信息》(嵌入式与SoC)2008年第24卷第8-2期,由王瑞光和田利波撰写的《基于CSD编码的16位并行乘法器的设计》中的二进制数的CSD码转换电路(刊登该杂志的第75、76页)。
(2)选择加运算电路
如图3所示,所述选择加运算电路由三组20维选择加电路并列组成,每组20维选择加电路均由向量转换矩阵寄存器、向量内积数据寄存器、二十个与门和一个加法器组成,其中,每组20维选择加电路分述如下:
①第一组20维选择加电路
第一组20维选择加电路中的向量转换矩阵寄存器用于存放CSD码转换矩阵中的第一列到第二十列数据,向量内积数据寄存器用于存放第二向量输入端I2输入的60维向量中的第一元素至第二十元素,向量转换矩阵寄存器存放的每一列数据的第一个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第一组20维选择加电路的第一个输出结果;接着向量转换矩阵寄存器存放的每一列数据的第二个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第一组20维选择加电路的第二个输出结果;然后向量转换矩阵寄存器存放的每一列数据的第三个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第一组20维选择加电路的第三个输出结果;以此类推,得到第M个输出结果。
②第二组20维选择加电路
第二组20维选择加电路中的向量转换矩阵寄存器用于存放CSD码转换矩阵中的第二十一列到第四十列数据,向量内积数据寄存器用于存放第二向量输入端I2输入的60维向量中的第一元素至第二十元素,向量转换矩阵寄存器存放的每一列数据的第一个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第二组20维选择加电路的第一个输出结果;接着向量转换矩阵寄存器存放的每一列数据的第二个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第二组20维选择加电路的第二个输出结果;然后向量转换矩阵寄存器存放的每一列数据的第三个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第二组20维选择加电路的第三个输出结果;以此类推,得到第M个输出结果。
③第三组20维选择加电路
第三组20维选择加电路中的向量转换矩阵寄存器用于存放CSD码转换矩阵中的第四十一列到第六十列数据,向量内积数据寄存器用于存放第二向量输入端I2输入的60维向量中的第一元素至第二十元素,向量转换矩阵寄存器存放的每一列数据的第一个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第三组20维选择加电路的第一个输出结果;接着向量转换矩阵寄存器存放的每一列数据的第二个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第三组20维选择加电路的第二个输出结果;然后向量转换矩阵寄存器存放的每一列数据的第三个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第三组20维选择加电路的第三个输出结果;以此类推,得到第M个输出结果。
(3)移位加运算电路
如图4所示,所述移位加运算电路由三组移位加电路和一个三输入加法器组成,每组移位加电路均由数据更新寄存器、数据输入寄存器、移位寄存器、加法器和计数器组成,其中,每组移位加电路分述如下:
①第一组移位加电路
第一组移位加电路中的数据更新寄存器首先存放所述第一组20维选择加电路中的第一个输出结果,数据输入寄存器存放所述第一组20维选择加电路中的第二个输出结果至第M个输出结果,移位寄存器将数据更新寄存器存放的第一组20维选择加电路中的第一个输出结果进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第一组20维选择加电路中的第二个输出结果相加得到第一次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第一次移位加结果更新数据更新寄存器的值,接着再将数据更新寄存器的值进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第一组20维选择加电路中的第三个输出结果相加得到第二次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第二次移位加结果再次更新数据更新寄存器的值,然后再将数据更新寄存器的值进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第一组20维选择加电路中的第四个输出结果相加得到第三次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第三次移位加结果再次更新数据更新寄存器的值,以此循环往复直至计数器数值等于M-1时,直接把第M-1次移位加结果作为两个60维向量输入端输入的前20维向量内积运算结果从第一向量内积输出端O1输出,同时将计数器清零;
②第二组移位加电路
第二组移位加电路中的数据更新寄存器首先存放所述第二组20维选择加电路中的第一个输出结果,数据输入寄存器存放所述第二组20维选择加电路中的第二个输出结果至第M个输出结果,移位寄存器将数据更新寄存器存放的第二组20维选择加电路中的第一个输出结果进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第二组20维选择加电路中的第二个输出结果相加得到第一次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第一次移位加结果更新数据更新寄存器的值,接着再将数据更新寄存器的值进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第二组20维选择加电路中的第三个输出结果相加得到第二次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第二次移位加结果再次更新数据更新寄存器的值,然后再将数据更新寄存器的值进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第二组20维选择加电路中的第四个输出结果相加得到第三次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第三次移位加结果再次更新数据更新寄存器的值,以此循环往复直至计数器数值等于M-1时,直接把第M-1次移位加结果作为两个60维向量输入端输入的中间20维向量内积运算结果从第二向量内积输出端O2输出,同时将计数器清零。
③第三组移位加电路
第三组移位加电路中的数据更新寄存器首先存放所述第三组20维选择加电路中的第一个输出结果,数据输入寄存器存放所述第三组20维选择加电路中的第二个输出结果至第M个输出结果,移位寄存器将数据更新寄存器存放的第三组20维选择加电路中的第一个输出结果进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第三组20维选择加电路中的第二个输出结果相加得到第一次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第一次移位加结果更新数据更新寄存器的值,接着再将数据更新寄存器的值进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第三组20维选择加电路中的第三个输出结果相加得到第二次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第二次移位加结果再次更新数据更新寄存器的值,然后再将数据更新寄存器的值进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第三组20维选择加电路中的第四个输出结果相加得到第三次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第三次移位加结果再次更新数据更新寄存器的值,以此循环往复直至计数器数值等于M-1时,直接把第M-1次移位加结果作为两个60维向量输入端输入的后20维向量内积运算结果从第三向量内积输出端O3输出,同时将计数器清零。
④三输入加法器
将第一向量内积输出端O1、第二向量内积输出端O2和第三向量内积输出端O3分别连接到三输入加法器的输入端,从三输入加法器的输出端得到两个60维向量输入端输入的60维向量内积运算结果从第四向量内积输出端O4输出。
第二部分  关于硬件向量内积运算器中的二进制数的CSD码转换电路、选择加运算电路和移位加运算电路的理论分析
设向量A=(A1,A2,...,A60),向量B=(B1,B2,...,B60)T,则向量A和向量B的内积可以表示为:
Y=(A1,A2,...,A60)(B1,B2,...,B60)T       (16)
由向量内积的定义A1B1+A2B2+...+A60B60可转换为Y=(A1,A2,...,A20)(B1,B2,...,B20)T+(A21,A22,...,A40)(B21,B22,...,B40)T+(A41,A42,...,A60)(B41,B42,...,B60)T,也即两个60维的向量内积可转化为三个20维的向量内积。先以(A1,A2,...,A20)(B1,B2,...,B20)T为例,将系数(A1,A2,...,A20)用CSD码格式表示,Ai可表示为
A i = Σ k = 0 M - 1 a i k 2 k
其中, a i k ∈ { - 1,0,1 } , 则式(16)可以表示为
Y = ( 2 M - 1 , 2 M - 2 , . . . , 2 0 ) a 1 M - 1 , a 2 M - 1 , . . . , a 20 M - 1 a 1 M - 2 , a 2 M - 2 , . . . , a 20 M - 2 . . . . . . a 1 0 , a 2 0 , . . . , a 20 0 B 1 B 2 . . . B 20 = ( 2 M - 1 , 2 M - 2 , . . . , 2 0 ) Y 1 Y 2 . . . Y M . - - - ( 17 )
其中称为A向量的CSD转换矩阵
在本专利中令分布式算法DA的精度M=16,由(17)式中可知,因为a1,a2,...,a20具有固定参数,且只包含3种元素:0,-1,1,因此只需要根据其每行的参数分别对输入数据(B1,B2,...,B20)进行简单的加、减运算就可以得到Y1,Y2,...,YM。再进行相应的移位累加操作即可得到所求结果Y。因此,在利用CDA结构进行向量内积的计算,在硬件上只需要加,减法及移位逻辑就可以实现,而减法可以用该补码的加法实现,因此只需加法器和移位逻辑即可实现CDA结构的向量内积计算。
由(17)式分析可知,因为向量A的向量CSD转换矩阵只包含-1,0,1三个元素,又有矩阵的结合律可知,
矩阵
Figure G2009101819796D00111
与矩阵
Figure G2009101819796D00112
的乘积主要是关于输入数据(B1,B2,...,B20)的选择加运算,从而得到Y1,Y2,...,YM。而矩阵(2M-1,2M-2,...,20)和矩阵
Figure G2009101819796D00113
相乘的结果Y主要是通过对Y1,Y2,...,YM的移位加运算得到。因此本专利中的硬件向量内积运算器主要由三个电路组成,即二进制数的CSD码转换电路、选择加运算电路和移位加运算电路。
第三部分  有关本发明硬件向量内积运算器为什么要设计成具有两个向量输入端和四个向量内积输出端的结构,其理由如下:
如图2所示,硬件内积运算器的输入向量I1[n]和I2[n]都是为60维的向量,而输出如下列公式表示:
O 1 = Σ i = 0 19 I 1 ( i ) I 2 ( i ) - - - ( 18 )
O 2 = Σ i = 20 39 I 1 ( i ) I 2 ( i ) - - - ( 19 )
O 3 = Σ i = 40 59 I 1 ( i ) I 2 ( i ) - - - ( 20 )
O 4 = O 1 + O 2 + O 3 = Σ i = 0 59 I 1 ( i ) I 2 ( i ) - - - ( 21 )
1、从本发明背景技术部分介绍中可知,要想计算自适应码书的贡献部分,必须计算公式(11)和公式(13)的结果,而公式(11)和公式(13)涉及的都是两个60维向量的内积运算。然而这样的计算可以利用本发明硬件向量内积运算器,从第四向量内积输出端O4得到两个60维向量输入的向量内积运算结果。
2、从本发明背景技术部分介绍中可知,要想计算自适应码书的贡献部分,还需要计算公式(15)。在公式(15)的运算中,由于bi 2,bjbi都可以预先计算,为了减少计算量,两个对应85或者170个条目的码书的表,预先储存了bjbi和bi 2,每个表中包含多个码字向量,每个向量包括20个元素,用Bn来代表这个向量。表格的每个向量元素格式如下,
第一到第五个元素:b0 b1 b2 b3 b4
第六到第十个元素:-0.5b0 2 -0.5b1 2 -0.5b2 2 -0.5b3 2 -0.5b4 2
第十一到第二十元素:
-b0b1 -b0b2 -b1b2 -b0b3 -b1b3 -b2b3 -b0b4 -b1b4 -b2b4 -b3b4
令20维向量A的元素为:
第一到第五个元素:G(0) G(1) G(2) G(3) G(4)
第六到第十个元素:Q(0,0) Q(1,1) Q(2,2) Q(3,3) Q(4,4)
第十一到第二十元素:
Q(1,0) Q(2,0) Q(2,1) Q(3,0) Q(3,1) Q(3,2) Q(4,0) Q(4,1) Q(4,2) Q(4,3)
则公式(15)可被改写如下:
max B n ( Σ j = 0 19 ( A ( i ) · B n ( i ) ) )
由公式(22)可知,该运算为20维向量内积的运算,可以利用本发明硬件向量内积运算器来计算。因为公式(22)所表示的运算是个优化问题,需要做多次20维的内积运算。由于硬件向量内积运算器是60维的,从输出公式(18)、公式(19)和公式(20)可看出,该内积运算器也可以当做同时执行的三个独立的20维的向量内积。这样,公式(22)所表示的运算所需要的多次20维内积运算,可化成三个一组,然后利用硬件向量内积运算器来计算。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

Claims (2)

1、一种G.723.1编码器快速计算自适应码书的贡献模块,其特征在于:所述贡献模块为一个硬件向量内积运算器,该向量内积运算器由二进制数的CSD码转换电路、选择加运算电路和移位加运算电路、两个向量输入端和四个向量内积输出端组成,其中,第一向量输入端(I1)和第二向量输入端(I2)均为60维的向量输入端;第一向量内积输出端(O1)输出两个向量输入端输入的前20维向量内积运算的结果,第二向量内积输出端(O2)输出两个向量输入端输入的中间20维向量内积运算的结果,第三向量内积输出端(O3)输出两个向量输入端输入的后20维向量内积运算的结果,第四向量内积输出端(O4)输出两个向量输入端输入的60维向量内积运算的结果。
2、根据权利要求1所述的贡献模块,其特征在于:所述二进制数的CSD码转换电路、选择加运算电路和移位加运算电路分述如下:
(1)二进制数的CSD码转换电路
所述二进制数的CSD码转换电路主要由段内转换电路和传递信号产生电路组成,该电路将第一向量输入端(I1)输入的60维向量中的每个元素进行分段,根据段与段之间的延时以及段内的延时情况分别进行转换,其中,60维向量中的第一元素转换成第一列CSD码,第二元素转换成第二列CSD码,第三元素转换成第三列CSD码,以此类推到第六十元素换成第六十列CSD码,从而形成一个对应第一向量输入端(I1)输入的60维向量的CSD码转换矩阵,其中CSD码转换矩阵的行数等于设定的CSD码的位数M;
(2)选择加运算电路
所述选择加运算电路由三组20维选择加电路并列组成,每组20维选择加电路均由向量转换矩阵寄存器、向量内积数据寄存器、二十个与门和一个加法器组成,其中,每组20维选择加电路分述如下:
①第一组20维选择加电路
第一组20维选择加电路中的向量转换矩阵寄存器用于存放CSD码转换矩阵中的第一列到第二十列数据,向量内积数据寄存器用于存放第二向量输入端(I2)输入的60维向量中的第一元素至第二十元素,向量转换矩阵寄存器存放的每一列数据的第一个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第一组20维选择加电路的第一个输出结果;接着向量转换矩阵寄存器存放的每一列数据的第二个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第一组20维选择加电路的第二个输出结果;然后向量转换矩阵寄存器存放的每一列数据的第三个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第一组20维选择加电路的第三个输出结果;以此类推,得到第M个输出结果;
②第二组20维选择加电路
第二组20维选择加电路中的向量转换矩阵寄存器用于存放CSD码转换矩阵中的第二十一列到第四十列数据,向量内积数据寄存器用于存放第二向量输入端(I2)输入的60维向量中的第一元素至第二十元素,向量转换矩阵寄存器存放的每一列数据的第一个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第二组20维选择加电路的第一个输出结果;接着向量转换矩阵寄存器存放的每一列数据的第二个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第二组20维选择加电路的第二个输出结果;然后向量转换矩阵寄存器存放的每一列数据的第三个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第二组20维选择加电路的第三个输出结果;以此类推,得到第M个输出结果;
③第三组20维选择加电路
第三组20维选择加电路中的向量转换矩阵寄存器用于存放CSD码转换矩阵中的第四十一列到第六十列数据,向量内积数据寄存器用于存放第二向量输入端(I2)输入的60维向量中的第一元素至第二十元素,向量转换矩阵寄存器存放的每一列数据的第一个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第三组20维选择加电路的第一个输出结果;接着向量转换矩阵寄存器存放的每一列数据的第二个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第三组20维选择加电路的第二个输出结果;然后向量转换矩阵寄存器存放的每一列数据的第三个元素分别通过与门和向量内积数据寄存器存放的第一元素至第二十元素对应进行与运算,并把这些运算结果通过加法器相加得到第三组20维选择加电路的第三个输出结果;以此类推,得到第M个输出结果;
(3)移位加运算电路
所述移位加运算电路由三组移位加电路和一个三输入加法器组成,每组移位加电路均由数据更新寄存器、数据输入寄存器、移位寄存器、加法器和计数器组成,其中,每组移位加电路分述如下:
①第一组移位加电路
第一组移位加电路中的数据更新寄存器首先存放所述第一组20维选择加电路中的第一个输出结果,数据输入寄存器存放所述第一组20维选择加电路中的第二个输出结果至第M个输出结果,移位寄存器将数据更新寄存器存放的第一组20维选择加电路中的第一个输出结果进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第一组20维选择加电路中的第二个输出结果相加得到第一次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第一次移位加结果更新数据更新寄存器的值,接着再将数据更新寄存器的值进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第一组20维选择加电路中的第三个输出结果相加得到第二次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第二次移位加结果再次更新数据更新寄存器的值,然后再将数据更新寄存器的值进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第一组20维选择加电路中的第四个输出结果相加得到第三次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第三次移位加结果再次更新数据更新寄存器的值,以此循环往复直至计数器数值等于M-1时,直接把第M-1次移位加结果作为两个60维向量输入端输入的前20维向量内积运算结果从第一向量内积输出端(O1)输出,同时将计数器清零;
②第二组移位加电路
第二组移位加电路中的数据更新寄存器首先存放所述第二组20维选择加电路中的第一个输出结果,数据输入寄存器存放所述第二组20维选择加电路中的第二个输出结果至第M个输出结果,移位寄存器将数据更新寄存器存放的第二组20维选择加电路中的第一个输出结果进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第二组20维选择加电路中的第二个输出结果相加得到第一次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第一次移位加结果更新数据更新寄存器的值,接着再将数据更新寄存器的值进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第二组20维选择加电路中的第三个输出结果相加得到第二次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第二次移位加结果再次更新数据更新寄存器的值,然后再将数据更新寄存器的值进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第二组20维选择加电路中的第四个输出结果相加得到第三次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第三次移位加结果再次更新数据更新寄存器的值,以此循环往复直至计数器数值等于M-1时,直接把第M-1次移位加结果作为两个60维向量输入端输入的中间20维向量内积运算结果从第二向量内积输出端(O2)输出,同时将计数器清零;
③第三组移位加电路
第三组移位加电路中的数据更新寄存器首先存放所述第三组20维选择加电路中的第一个输出结果,数据输入寄存器存放所述第三组20维选择加电路中的第二个输出结果至第M个输出结果,移位寄存器将数据更新寄存器存放的第三组20维选择加电路中的第一个输出结果进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第三组20维选择加电路中的第二个输出结果相加得到第一次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第一次移位加结果更新数据更新寄存器的值,接着再将数据更新寄存器的值进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第三组20维选择加电路中的第三个输出结果相加得到第二次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第二次移位加结果再次更新数据更新寄存器的值,然后再将数据更新寄存器的值进行左移一位操作,左移一位操作的结果通过加法器与数据输入寄存器中存放的第三组20维选择加电路中的第四个输出结果相加得到第三次移位加结果,并使计数器加一,当计数器数值小于M-1时,将第三次移位加结果再次更新数据更新寄存器的值,以此循环往复直至计数器数值等于M-1时,直接把第M-1次移位加结果作为两个60维向量输入端输入的后20维向量内积运算结果从第三向量内积输出端(O3)输出,同时将计数器清零;
④三输入加法器
将第一向量内积输出端(O1)、第二向量内积输出端(O2)和第三向量内积输出端(O3)分别连接到三输入加法器的输入端,从三输入加法器的输出端得到两个60维向量输入端输入的60维向量内积运算结果从第四向量内积输出端(O4)输出。
CN2009101819796A 2009-07-28 2009-07-28 G.723.1编码器快速计算自适应码书的贡献模块 Active CN101630242B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101819796A CN101630242B (zh) 2009-07-28 2009-07-28 G.723.1编码器快速计算自适应码书的贡献模块

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101819796A CN101630242B (zh) 2009-07-28 2009-07-28 G.723.1编码器快速计算自适应码书的贡献模块

Publications (2)

Publication Number Publication Date
CN101630242A true CN101630242A (zh) 2010-01-20
CN101630242B CN101630242B (zh) 2011-01-12

Family

ID=41575362

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101819796A Active CN101630242B (zh) 2009-07-28 2009-07-28 G.723.1编码器快速计算自适应码书的贡献模块

Country Status (1)

Country Link
CN (1) CN101630242B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109496333A (zh) * 2017-06-26 2019-03-19 华为技术有限公司 一种丢帧补偿方法及设备
WO2021072732A1 (zh) * 2019-10-18 2021-04-22 北京希姆计算科技有限公司 矩阵运算电路、装置以及方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109496333A (zh) * 2017-06-26 2019-03-19 华为技术有限公司 一种丢帧补偿方法及设备
WO2021072732A1 (zh) * 2019-10-18 2021-04-22 北京希姆计算科技有限公司 矩阵运算电路、装置以及方法

Also Published As

Publication number Publication date
CN101630242B (zh) 2011-01-12

Similar Documents

Publication Publication Date Title
CN101401153B (zh) Celp技术中改进的数字音频信号的编码/解码
CN1051392C (zh) 矢量量化器方法
CN102119414B (zh) 用于在超帧中量化和逆量化线性预测系数滤波器的设备和方法
CN101266797B (zh) 语音信号后处理滤波方法
CN101286319B (zh) 改进语音丢包修补质量的语音编码方法
CN104584122B (zh) 使用改进的概率分布估计的基于线性预测的音频编码
CN103688306A (zh) 音频编解码器的丢包隐藏技术
JP6812504B2 (ja) 音声符号化方法および関連装置
CN101848311B (zh) 基于Avalon总线JPEG2000的EBCOT编码器
CN102201239A (zh) 固定码本搜索装置以及固定码本搜索方法
CN110163341A (zh) 神经网络模型的优化处理方法及装置
CN101630242B (zh) G.723.1编码器快速计算自适应码书的贡献模块
JP6143115B2 (ja) ベクトル結合符号化/復号方法および符号復号器
CN106796804A (zh) 用于对话增强的解码方法和解码器
JP2018067010A (ja) 符号化方法、符号化装置、プログラム及び記録媒体
CN105960676A (zh) 线性预测分析装置、方法、程序以及记录介质
CN101025919A (zh) 音频解码中的合成子带滤波方法和合成子带滤波器
CN101615394B (zh) 分配子帧的方法和装置
CN106878714A (zh) 对视频量化参数解码的方法
CN112561050B (zh) 一种神经网络模型训练方法及装置
CN101256771A (zh) 嵌入式编码、解码方法、编码器、解码器及系统
CN101572092A (zh) 编解码端的固定码本激励的搜索方法及装置
CN101977031B (zh) 一种时空均衡的数字滤波器优化设计方法
CN105917652B (zh) 用于针对媒体编码进行分数像素内插滤波的方法和装置
CN1222996A (zh) 用于传输语音信号的传输系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: Room C2031, Suzhou Pioneer Park, 209 Zhuyuan Road, Suzhou High-tech Zone, Jiangsu Province

Patentee after: Suzhou Guoxin Technology Co., Ltd.

Address before: Room C2031, Suzhou Pioneer Park, 209 Zhuyuan Road, Suzhou High-tech Zone, Jiangsu Province

Patentee before: C*Core Technology (Suzhou) Co., Ltd.

CP01 Change in the name or title of a patent holder