指数计算装置和解码装置的制作方法

文档序号:2820783阅读:183来源:国知局
专利名称:指数计算装置和解码装置的制作方法
技术领域
本发明涉及用来对给定的编码比特流执行一种预定计算的指数计算装置和解码装置。较具体地,本发明涉及用来对含在一个已根据MPEG(活动图像专家组)2的声频编码标准“AAC”编码的比特流中的给定整数值x和y执行x^(a/b)计算的一种指数计算装置和执行x^(a/b)*2(y/c)计算的一种解码装置。
通常,为了对一个给定值x计算z=x^(a/b)(其中a和b均为常数),把对应于所有可能x值的x^(a/b)值存储在一个表格中,并使该表格的地址与各相应的x值相关联。通过读出存储在表格中的值便可得到对应于给定x值的z值。
在本说明书中“x的(a/b)次方”写成“x^(a/b)”,其中符号“^”代表采用指数函数,符号“/”代表采用除法函数。这里还使用了代表采用乘法函数的符号“*”。
图27示出了一个表格,其中含有x值范围为0≤x≤8191的x^(4/3)值。根据MPEG2的声频编码标准AAC的解码操作,需要计算对应于0至8191范围内的x值的x^(4/3)值。为了对根据MPEG2的声频编码标准AAC编码的数据进行解码而作指数计算时,若采用通常的获得x^(a/b)的方法,则需把输入值x当作地址,从预先提供的如图27所示的表格中读出相应的值,得到作为输出值z的x^(4/3)值。
为了对一个编码比特流解码以得到所需数据,必需进行一个预定的计算处理。按MPEG2的声频编码标准AAC编码的比特流含有一个量化码(quantization code)“x”和一个标度因子(scalingfactor)“y”。量化码“x”和标度因子“y”都是整数。对于MPEG2的AAC的情况,解码装置需对给定的x和y值计算x^(a/b)×2^(y/c)(其中a、b、c均为常数)。MPEG2的声频编码标准AAC刊登于IS0/IECl3818-7:1997,pp.57-59。
通常,对给定x、y值计算x^(a/b)*2^(y/c)的操作用一个定点格式的DSP(数字信号处理器)按下述方法进行。
图28示出一个示例性的32比特(32位)定点格式。参见图28,其中比特0是最低位比特,比特31是最高位比特,小数点固定在比特30和比特29之间。具体地说,比特30代表一个值的整数部分,而比特29至比特0则代表该值的小数部分。比特31是符号位,表明该值是正还是负。这样一种带有固定小数点的数字表示叫做“定点格式”。
例如,在图28所示的32位定点格式中,一个值“f”可以在一2≤f<2的范围内变动。因此,为了用一个像DSP这样的定点格式处理单元来进行计算,在进行所需计算之前应把计算所涉及到的每一个值都调节到±2.0的范围之内。
在MPEG2的声频编码标准AAC中,x值可在0≤x<8192范围内变化,而y值可在-100≤y<156范围内变化。对于这样的x、y范围考虑下列表达式(1)的计算x^(4/3)*2^(y/4)(1)根据以往技术,可以用一个定点格式处理单元按如下方法来计算表达式(1)。首先把表达式(1)转变成如下的表达式(2)x^(4/3)*2^((y%4)/4)*2^int(y/4)(2)在表达式(2)中,“(y%4)”表示比值y/4的余数,“int(y/4)”表示比值y/4的商(整数)。计算表达式(2)时首先计算x^(4/3)。典型地,这一计算利用一个ROM(只读存储器)表格进行。具体地说,预先计算各个x值的x^(4/3)值,并存储在一个表格中。然后通过把一个给定的x值作为表格的地址来查阅该ROM表格而得到对应于该x值的x^(4/3)值。
表达式(1)或(2)的计算是假定使用了一个定点格式的处理单元。具体地说,不同地x^(4/3)值是预先经归一化后存储在表格中的,其最大值已被归一化为不超过1.0的值。
图29示出用于普通解码装置的一个第一表格的内容。该表格在对应于各个x值的地址处含有对应于0≤x<8192范围的f(x)值。各f(x)值是这样得以的首先对各个x值计算x^(4/3),然后把各计算值除以2^18以得到均不超过1.0的各个归一化值。
对于表达式(2)的计算,接着将计算2^((y%4)/4)。典型地,2^((y%4)/4)也是用一个ROM表格计算的。具体地说,预先对各个整数(y%4)计算相应的2^((y%4)/4)值并存储在一个表格中。然后用一个整数(y%4)作为地址去查阅该表格以得到相应的2^((y%4)/4)值。
图30示出用于普通解码装置的一个第二表格的内容。该第二表格含有对应于范围0至3的地址值(y%4)的g(y)值。g(y)值是通过使2^((g%4)/4)归一化而得到的均不超过2.0的值。
有了这样的表格之后,便可得到表达式(2)的值。首先用输入整数x作为地址查阅图29所示的第一表格,得到x^(4/3)的归一化f(x)值。然后对给定的整数y计算(y%4)。接着用计算值(y%4)作为地址从图30所示的第二表格得到g(y)=2^((y%4)/4)值。其后用一个乘法器计算f(x)*g(y),得到乘积值f(x)*g(y)=h(x,y)。由于得到的f(x)值在±1范围内而g(y)值在±2范围内,所以乘积h(x,y)的值必定在±2范围内。
然后把h(x,y)乘上2^int(y/4),便得到了表达式(2)的计算结果乘积值i(x,y)。该乘法运算可以通过比特移位操作完成。在比特移位操作中,假定还在最后计算结果超出了±2范围时进行一个限制操作(所谓“剪截(clipping)操作”)。这样,在以往技术中i(x,y)=x^(4/3)*2^(y/4)的计算是用大容量表格来进行的。
采用上述通常方法来得到x^(a/b)值需要为含有各个不同x^(a/b)值的表格提供大的存储区域。例如,假定存储的x^(a/b)值是32比特定点值,则图27所示表格需要32Kbytes(千字节)的存储区。这样,当x有很大的变化范围时,必须为所需的大存储区而使用大规模的硬件。
此外,在计算x^(a/b)*2^(y/c)的通常方法中,计算值f(x)的有效数字数目对于图29中上面部分的比较小的输入整数x来说是不利地太少了。例如,对应于地址x=2的f(x)值只利用了可供利用的32比特中的低14位比特。所以,用这种表格进行的计算结果精度很差。而且,通常的计算方法使用了很大的x范围(即0至8191),从而需要大至8191*32比特的存储区域。结果,通常的解码装置需要一个容量址分大的表格。
根据本发明的一个方面,提供了一种用来对一个给定输入值x计算x^(a/b)(其中a和b均为整常数)的指数计算装置。该装置包括一个输入控制部分,用来输出x’值,其中当x≤A(其中A是一个位于x变化范围内的阈值)时x’=x,当x>A时,x’=x/2^b;一个核心部分,用来输出z’=x’^(a/b)的值;以及一个输出控制部分,用来输出z值,其中当x≤A时z=z’,当x>A时z=z’*2^a。
在本发明的一个实施例中,输入控制装置通过在x>A时把x向下移位b个比特位(b位)来计算x’值。
在本发明的另一个实施例中,核心部分把对应于所有可能x’值(其中0≤x’≤A)的x’^(a/b)值存储在一个表格中。
在本发明的又一个实施例中,A值的设定使得x小于或等于A的频率等于或大于一个预定值。
根据本发明的另一个方面,提供了一种用来对一个给定输入值x计算x^(a/b)(其中a和b均为整常数)的指数计算装置。该装置包括一个输入控制部分,用来输出x’值,其中当x≤A(其中A是位于x变化范围内的一个阈值)时x’=x,当x>A时x’=x/2^(b*n)(其中n是一个满足关系式x/2^(b*n)≤A的整数);一个核心部分,用来输出z’=x’^(a/b)的值;以及一个输出控制部分,用来输出z值,其中当x≤A时z=z’,当x>A时z=z’*2^(a*n)。
在本发明的一个实施例中,输入控制部分通过在x>A时把x向下移位(b*n)位来计算x’值。
在本发明的另一个实施例中,核心部分把对应于所有可能x’值(其中0≤x’≤A)的x’^(a/b)值存储在一个表格中。
在本发明的又一个实施例中,A值的设定使得x小于或等于A的频率等于或大于一个预定值。
根据本发明的又一个方面,提供了一种用来对一个给定输入值x计算x^(a/b)(其中a和b均为整常数)的指数计算装置。该装置包括一个输入控制部分,用来输出x’值,其中当x≤A时(其中A是一个位于x变化范围内的阈值)x’=x,当x>A时x’=x/2^b;一个核心部分,用来输出z’=x’^((a%b)/b)的值;一个输出控制部分,用来输出z值,其中当x≤A时z=z’,当x>A时z=z’*2^(a/%b);以及一个乘法部分,用来输出z*(x^(int(a/b)))。
在本发明的一个实施例中,A值的设定使得x小于或等于A的频率等于或大于一个预定值。
根据本发明的又一个方面,提供了一种用来对一个给定输入值x计算x^(a/b)(其中a和b均为整常数)的指数计算装置。该装置包括一个判断部分,用来输出一个能指明x值的参数j(其中j是一个非负整烽);一个输入控制部分,用来输出x’值,其中当x≤A(其中A是一个位于x变化范围内的阈值)时x’=x,当x>A时x’=x/2^j;一个核心部分,用来输出z’=x’^(a/b)的值;以及一个输出控制部分,用来输出z值,其中当x≤A时z=z’,当x>A时z=z’*2^(j*a/b)。
在本发明的一个实施例中,输出控制部分含有一个存储部分,用来以j为地址存储2^(j*a/b)值;并且当x>A时z值是通过从存储部分读出相应的2^(j*a/b)值来计算的。
在本发明的另一个实施例中,A=2^B(其中B是一个整常数);并且判断部分确定的j值使得当x>2^b时有2^(B+(j-1))≤x<2^(B+j),当x≤2^b时有j=0。
根据本发明的又一个方面,提供了一种用来对一个给定输入值x计算x^(a/b)(其中a和b均为整常数)的指数计算装置。该装置包括一个判断部分,用来输出一个k值,该k值代表以二进制形式表示的x值的数位数目;一个输入控制部分,用来输出x’值,其中x’值是这样得到的当(B-k)值为正时把x向上移位(B-k)位,当(B-k)值为负时把x向下移位(k-B)位;一个核心部分,用来输出z’=x’^(a/b)的值;以及一个输出控制部分,用来输出z=z’*(2^((k-B)*a/b))的值。
在本发明的一个实施例中,输出控制部分含有一个存储部分,用来以k为地址存储2^((k-B)*a/b)值;并且z值是通过从存储部分读出2^((k-B)*a/b)的相应值来计算的。
在本发明的另一个实施例中,核心部分含有一个存储部分,用来以q的至少(B一1)个最低位作为地址存储q^(a/b)值(其中2^(B-1)≤q<2^B,q是一个整数);并且z’值是通过以x’的至少(B-1)个最低位作为地址从存储部分读出相应的q^(a/b)值来计算的。
根据本发明的又一个方面,提供了一种用来从一个含有量化码x和标度因子y的输入比特流中提取一个可变的量化码x和一个可变的标度因子y,并计算x^(a/b)*2^(y/c)(其中a、b、c均为整常数)的解码装置。该装置包括一个分离部分,用来把x和y从输入比特流中分离出来;一个第一移位部分,用来在x≤2^N(其中N是一个预定阈值)时把x移位由N决定的位数,使x转变成具有定点格式的x1;一个第一存储部分,用来以q为地址对所有可能的q值(其中q是一个满足0≤q≤2^N的整数)存储H(q)值,其中H(q)是通过把q^((a-b)/b)移位由M决定的位数(其中M是(N*(a-b)/b)的整数值)而转变成为定点格式的);一个第二存储部分,用来对所有可能的P值(其中0≤P<c)存储具有定点格式的G(P)=2^(p/c)的值;一个除法部分,用来计算y1=int(y/c);一个模数计算部分,用来计算y2=y%c;一个乘法部分,用来输出以下三个值的乘积用x作为地址从第一存储部分读出的H(x)值,用y2作为地址从第二存储部分读出的G(y2)值,和由第一移位部分转变得到的x1值;以及一个第二移位部分,用来把乘法部分的输出值移位由除法部分得到的y1决定的位数。
在本发明的一个实施例中,由N决定的位数是(D-N)(其中D是在定点计算操作中涉及到的数值的小数部分的有效位数);并且由y1决定的位数是(y1+(N+M))。
在本发明的另一个实施例中,M是一个对(N*(a-b))/b)进行向上取整所得到的整数。
在本发明的又一个实施例中,a=4、b=3、c=4。
在本发明的又一个实施例中,该装置还包括一个判断部分,用来在x≤2^N时输出判断结果为真,在x>2^N时输出判断结果为假;以及一个第二除法部分,用来在判断结果为真时不加改变地输出x值,在判断结果为假时输出x除以(z^(b*i))的值。当判断结果为假时,第一移位部分把x移位由(N+b*i)决定的位数,其中i是一个非负整数。第一存储部分对位于x变化范围内的q值存储H(q)值。第二移位部分在判断结果为真时把乘法部分的输出值移位由y1决定的位数,在判断结果为假时移位由y1和a*i决定的位数。
在本发明的又一个实施例中,由N决定的位数是(D-N);由(N+b*i)决定的位数是D-(N+b*i);由M决定的位数是(D-M);由y1决定的位数是(y1+N+M);由y1和a*i决定的位数是(y1+N+M+a*i)。
在本发明的又一个实施例中,i值的确定使得x满足2^(N+b(i-1))<x≤2^(N+bi)。
在本发明的又一个实施例中,该装置还包括一个判断部分,用来在x≤2^N时输出判断结果为真,在x>2^N时输出判断结果为假,还输出一个能指明x值的参数i。第一移位部分、第二除法部分和第二移位部分根据该判断部分的判断结果进行操作。
在本发明的又一个实施例中,第二移位部分在确定结果为正确时把乘法部分的输出值移位由y1决定的位数,在确定结果为错误时移位由y1+(a*i)决定的位数。
根据本发明的又一个方面,提供了一种用来从一个含有量化码x和标度因子y的输入比特流中提取一个可变的量化码x和一个可变的标度因子y,并计算x^(a/b)*2^(y/c)(其中a、b、c均为整常数)的解码装置。该装置包括一个分离部分,用来从输入比特流中分离出x和y;一个判断部分,用来在x≤2^N(其中N是一个预定阈值)时输出判断结果为真,在x>2^N时输出判断结果为假,还用来输出一个能指明x值的参数j;一个第一移位部分,用来在判断结果为真时把x移位由N决定的位数,在判断结果为假时移位由(N+j)决定的位数,使x转变成具有定点格式的x1;一个第一除法部分,用来计算y1=int(y/c);一个第二除法部分,用来输出x’值,其中当判断结果为真时x’=x,x’是(x/(2^j))的整数值;一个第一存储部分,用来以q作为地址对位于x’变化范围内的所有可能的q值存储H(q)值,其中q是满足0≤q≤2^N的整数,H(q)已通过把q^((a-b)/b)移位由M(M是(N*(a-b))/b)的整数值)决定的位数而被转换成定点格式;一个调整系数发生部分,用来对满足0≤p<c的所有可能p值和所有可能j值根据2^(p/c)*2^(j/b)产生定点格式值I(p,j);一个模数计算部分,用来计算y2=y%c;一个乘法部分,用来输出以下三个值的乘积用x’作为地址从第一存储部分读出的H(x’)值,对应于y2和由调整系数发生部分产生的j值的I(y2,j)值;和由第一移位部分转变得到的x1值;以及一个第二移位部分,用来在x)≤2^N时把乘法部分的输出值移位由y1决定的位数,在x>2^N时移位由y1和j决定的位数。
在本发明的一个实施例中,调整系数发生部分含有一个第二存储部分,用来以p和j作为地址存储I(p,j)值。
在本发明的另一个实施例中,j值的确定使得在x>2^N时能满足2^(N+(j-1))<x≤2^(N+j),而在x<2^N时j=0。
在本发明的又一个实施例中,a=4、b=3、c=4。
根据本发明的又一个方面提供了一种用来从一个含有量化码x和标度因子y的输入比特流中提取一个可变的量化码x和一个可变的标度因子y,并计算x^(a/b)*2^(y/c)(其中a、b、c均为整常数)的解码装置。该装置包括一个分离部分,用来把x和y从输入比特流中分离出来;一个判断部分,用来判断用二进制形式表示的x值的位数k;一个第二除法部分,用来输出x’值,其中x’值是这样得到的当(N-k)为正时把x向上移位(N-k)位,当(N-k)为负时把x向下移痊(k-N)位;一个第一移位部分,用来把x移位由k决定的位数,以使x转变成具有定点格式的x1;一个第一除法部分,用来计算y1=int(y/c);一个第一存储部分,用来以q的最少(N-1)个低比特位作为地址存储H(q)值,其中q是满足2^(N-1)≤q<2^N的整数,H(q)已通过把q^((a-b)/b)移位由M(其中M是(N*(a-b))/b的整数值)决定的位数而被转变成定点格式;一个调整系数发生部分,用来对所有满足0≤p<c的p值和所有可能的k值根据2^(p/c)*2^((k-N)/b)产生具有定点格式的I(p,k)值;一个模数计算部分,用来计算y2=y%c;一个乘法部分,用来输出以下三个值的乘积用x’的最少(N-1)个低位作为地址从第一存储部分读出的H(x’)值,对应于y2和由调整系数发生部分产生的k值的I(y2,j)值;和由第一移位部分转变成的x1值;以及一个第二移位部分,用来把乘法部分的输出值移位由y1、M和k决定的位数。
在本发明的一个实施例中,调整系数发生部分含有一个第二存储部分,用来以p和k作为地址存储I(p,k)值。
在本发明的另一个实施例中,a=4、b=3、c=4。
这样,这里所说明的本发明使得以下优点成为可能(1)通过减小用于表格的存储区域,减小一个能对给定的x值计算x^(a/b)的指数计算装置的硬件规模;(2)实现这样一种解码装置,即使当整数x远小于其变化范围中的最大值时它也能利用一个定点格式的处理单元以高精度计算x^(a/b)*2^(y/c);(3)实现这样一种解码装置,它只含有仅对应于比较小的x值的表格,但即使对大的x值它也能利用该小容量表格来计算x^(a/b)*2^(y/c);以及,(4)实现这样一种计算方法,它能利用一个小容量表格通过简单的二进制移位操作来进行涉及到大x值的计算,从而实现一种能对任何给定的x、y值快速计算x^(a/b)*2^(y/c)的解码装置。
熟悉本技术领域的人们在阅读和理解了下面参考附图所作的详细说明之后,本发明的这些优点和其他优点将变得明显。
图1是说明根据本发明例1的指数计算装置100的结构的方框图;图2是说明指数计算装置100的信号处理方法的流程图;图3示出指数计算装置100的核心部分11A的ROM表格1的内容;图4是说明指数计算装置100的另一个核心部分11B的信号处理方法流程图;图5示出指数计算装置100的核心部分11B的ROM表格2的内容;图6是说明根据本发明例2的指数计算装置200的结构的方框图;图7是说明指数计算装置200的信号处理方法的流程图。
图8示出指数计算装置200的核心部分21的ROM表格3的内容;图9是说明根据本发明例3的指数计算装置300的结构的方框图;图10是说明指数计算装置300的信号处理方法的流程图;
图11示出一个用来在指数计算装置300的输出控制部分32中提供2^(j/3)值的表格;图12是说明根据本发明例4的指数计算装置400的结构的方框图;图13是说明指数计算装置400的信号处理方法的流程图;图14示出指数计算装置400的核心部分41的ROM表格4的内容;图15示出一个用来在指数计算装置400的输出控制部分42中提供2^((k-B)/3)值的表格;图16是说明根据本发明例5的解码装置500的结构的方框图;图17示出解码装置500的第一存储部分52的内容;图18示出解码装置500的第二存储部分53和解码装置600的第二存储部分64的内容;图19是说明根据本发明例6的解码装置600的结构的方框图;图20示出解码装置600的第一存储部分63和解码装置700的第一存储部分73的内容;图21说明一种把一个整数值转换成一个定点格式值的方法;图22是说明根据本发明例7的解码装置700的结构的方框图;图23示出解码装置700的调整系数发生部分74的内容;图24说明根据本发明例8的解码装置800的结构的方框图;图25示出解码装置800的调整系数发生部分84的内容;图26示出解码装置800的第一存储部分83的内容;图27示出一个设置在通常指数计算装置中的对应于0≤x≤8191的x^(4/3)表格;图28示出一种示例性的定点格式;图29示出通常解码装置所使用的第一表格的内容;图30示出通常解码装置所使用的第二表格的内容。
首先将说明本发明的原理。本发明的指数计算装置只需要这样一个表格,它含有对应于小于或等于一个预定值A的输入值x的x^(a/b)值,但仍能得到任何输入值x下的x^(a/b)值。本发明不需要一个大表格来存储对应于大于A的输入值x的x^(a/b)值,从而所需的存储区域要比通常指数计算装置所需的小得多,后者需要一个大表格来存储对应于所有可能的输入值x的x^(a/b)值。
现在将用算术表达式来说明本发明指数计算装置的操作基本原理。假定对指数计算装置的输入值是x,要得到的值是z=x^(a/b),其中输入值x例如代表解码声频数据时所用信号的振幅,A代表x变化范围中的一个阈值。
当x≤A时,对应此输入值x的x^(a/b)已列在表格中,所以可以容易地从该表格得到或提取到x^(a/b)值。
当x>A时,首先把x除以一个预定值以得到x’且使x’≤A。然后从表格中读出x’^(a/b)值,再乘以一个预定值而得到对应于给定值x的x^(a/b)值。这样就能得到对于任何给定值x的x^(a/b)值。例如,若a=4、b=3,并且x的范围为8*A≥x>A,则首先由x’=x/8得到x’。然后,从表格中读出对应于该x’值的相应值,由此得到z’。由于z’=(x/8)^(4/3),所以z=x^(4/3)可以这样得到z=z’*(8^(4/3))=z’*16。
例1现在将参考


根据本发明例1的指数计算装置。本例的指数计算装置执行指数计算x^(4/3)。在本例中,输入值x的范围是0至8191。指数值x^(4/3)和输入值x的范围都符合MPEG2的声频AAC标准(见ISO/IEC 13818-7:1997,P57)。
图1是说明根据本发明例1的指数计算装置100的结构的方框图。指数计算装置100包含一个输入控制部分10,一个核心部分11、和一个输出控制部分12。
图2是说明由指数计算装置100所执行的信号处理的流程图,其中分别示出了由输入控制部分10、核心部分11、和输出控制部分12所执行的各个处理过程。参见图2,现在将详细说明指数计算装置100的各个部件。
输入控制部分10判断输入值x是否小于或等于一个阈值A(本例中例如为1023)。如果输入值x小于或等于1023,则输入控制部分10将不加改变地把x值作为x’提供给核心部分11。如果输入值x大于1023,则输入控制部分10将把x除以2^3所得到的值作为x’提供给核心部分11。
核心部分11提供对应于x’(它的范围是0至1023)的x’^(4/3)值。图2中的核心部分11是核心部分11的一个例子,下面将把它称作“核心部分11A”。核心部分11A含有一个ROM表格1(z’=ROMTABLE1[x’])。核心部分11A把从ROM表格1读出的对应于x’值的值作为z’输出。
图3示出核心部分11A的ROM表格1的内容。ROM表格1含有对位于0至1023范围内的x’值计算出来的x’^(4/3)值。
输出控制部分12在输入值x≤1023时把核心部分11A的输出值z’不加改变地作为z值提供,在x>1023时把核心部分11A的输出值z’乘上2^4后得到的值作为z值提供。
现在将说明具有这种结构的指数计算装置100的操作。首先,步骤S10判断给定值x是否小于或等于1023。如果x≤1023,则处理进入步骤S11,在那里不加改变地把x值作为x’提供给核心部分11A。如果判断出x>1023,则进入步骤S12,把通过使x除以2^3所得到的x’提供给核心部分11A。x除以2^3的操作例如可以这样进行把x向下移位3位,或者先把x加上4,再把结果值下移3位以完成“0舍1入”的舍入处理,使·0被舍去而·1被进位。
接着在步骤S13中,核心部分11A从如图3所示的ROM表格1中读出对应于由输入控制部分10所提供的x’值的x’^(4/3)值。
图4是说明由用于指数计算装置100的另一种示例性核心部分11B所执行的信号处理过程的流程图。在本发明中,分别由图2和4所示的核心部分11A和11B可以互换使用。核心部分11B在一个ROM表格2中存储了对应于0至阈值A范围内的x’值的x’^(L/b)值,其中L=a/m(其中m为一正常数)。核心部分11B求出来自ROM表格2的z’的m次方,然后把结果作为新的z’输出。
图5示出核心部分11B的ROM表格2的内容。核心部分11B利用的ROM表格2(z’=ROMTABLE2[x’])对0至1023范围内的x’值存储了x’^(L/b)值,其中m=4,L=1(即x’^(1/3)的值)。参见图4,在步骤S17,从ROM表格2读出z’,然后在步骤S18,求出z’的4次方,由此得到x^(4/3)值。这种在核心部分11B中所需的附加指数计算可以容易地用一个DSP乘法器处理,由此保持了ROM表格的小容量。
回到图2,在步骤S14中,输出控制部分12判断输入值x是否小于或等于1023。如果x≤1023,则处理进入步骤S15,在那里不加改进地输出来自核心部分11的输出值。如果步骤S14判断出输入值x>1023,则处理进入步骤S16,在那里输出通过把来自核心部分11的输出值乘以2^4所得到的值。
如上所述,本发明不需要提供对应于所有可能期望的x值(例如本例中为0至8191)的x^(a/b)值,只需要提供对应于小于或等于预定阈值A=1023的输入值x的x^(a/b)值。用这种方法也可以近似地计算对应于大于A的输入值x的x^(a/b)值。于是,有可能用小规模的硬件实现指数计算。
这里把1023选用阈值A的原因如下。根据MPEG2的声频AAC标准,x^(4/3)的输入值x可在0至8191范围内变化。然而实际中在大多数情形下,涉及到的值位在0至1023范围内。因此,对于0至1023范围内的x,应该精确地计算x^(4/3)以免损害音质。然而对于等于1024或更大的x,由于x很少取这样大的值,所以即使计算精度不如对0至1023范围内的x那么高,也不会严重损害音质。于是对于大于1023的x可以根据本例方法进行近似计算。
在0至1023范围内的各个值中,在大多数情形下实际计算涉及到的值的范围是0至255。所以可以把统计阈值A设定为255。本发明的下一个例子将讨论一个把统计阈值设为255的例子。
例2现在将参考

本发明的例2。本例提供一种用来获得作为x^(a/b)的范例的x^(4/3)值的指数计算装置。本例的指数计算装置的特征在于,它通过执行对a/b的整数部分和小数部分(其中a和b均为整数,且a>b)的两个指数计算来完成指数计算x^(a/b)。因此对a/b整数部分的指数计算可以表示成x^(int(a/b)),对a/b小数部分的指数计算可以表示成x^((a%b)/b)。这里所用的符号“int()”代表向下取整,这时一个数值的任何小数部分都将被截去,符号“%”代表用来取得一个除法的余数(整数)的模数操作。
与例1相同,输入值x的范围是0至8191,符合MPEG2的声频AAC标准(见ISO/IEC13818-7:1997,p.57)。
图6是说明根据本发明例2的指数计算装置200的结构的方框图。指数计算装置200包含一个输入控制部分20一个核心部分21、一个输出控制部分22、和一个乘法部分23。
图7是说明指数计算装置200的信号处理方法的流程图,其中分别示出了输入控制部分20、核心部分21、输出控制部分22、和乘法部分23所执行的信号处理过程。
当输入值x≤255(第一阈值A1)时,输入控制部分20将不加改变地把x值作为x’提供给核心部分21。当输入值x大于255但小于2047(第二阈值A2)时,输入控制部分20将把x除以2^3然后把结果值作为x’提供给核心部分21。当输入值x≥2048时,输入控制部分20将把x除以2^6然后把结果值作为x’提供给核心部分21。
图8示出指数计算装置200的ROM表格3的内容。核心部分21含有图8所示的ROM表格3,提供对应于0至255范围内的x’值的x’^((a%b)/b)(即x’^(1/3))的值。对应于0至255范围内的x’值的x’^(1/3)值预先被存储在ROM表格3中。
当输入值x≤第一阈值A1时,输出控制部分22不加改变地输出核心部分21的输出值。当输入值x大于第一阈值A1但小于或等于第二阈值A2时,输出控制部分22把一个通过把核心部分21的输出值z’乘以2^(a%b)所得到的值作为z输出。当输入值x>第二阈值A2时,输出控制部分22输出一个通过把核心部分21的输出值乘以2^((a%b)*2)所得到的值。乘法部分23把输出控制部分22的输出值z乘以x^(int(a/b)),进而把乘积值作为新的z值输出。
现在将说明具有这种结构的例2指数计算装置200的操作。参见图7,在步骤S20,输入控制部分20判断输入值x是否小于或等于第一阈值255。如果输入值x小于或等于255,则处理进入步骤S21,在那里不加改变地把x值作为x’提供给核心部分21。如果步骤S20中判定输入值x等于或大于256,则处理进入步骤S22,在那里判断输入值x是否小于或等于第二阈值A2即2047。如果输入值x小于或等于2047,则处理进入步骤S23,在那里把x除以2^3并把得到的值作为x’提供给核心部分21。如果步骤S22中判定输入值x等于或大于2048,则处理进入步骤S24,在那里把x除以2^6,并把得到的值作为x’提供给核心部分21。
x除以2^3的操作例如可以这样进行把x向下移位3位,或者先给x加上4,再把结果值向下移位3位,以实现“0舍入1入”的舍入处理。x除以2^6的操作例如可以这样进行把x向下移位6位,或者先给x加上32再把结果值向下移位6位,以实现“0舍1入”的舍入处理。
然后在步骤S25,核心部分21从图8所示的ROM表格3读出对应于输入控制部分20所提供的x’值的x’^(1/3)值。
然后在步骤S26,输出控制部分22判断输入值x是否小于或等于255。如果x小于或等于255,则处理进入步骤S27,在那里不加改变地输出核心部分21的输出值。如果步骤S26中判定输入值x等于或大于256,则处理进入步骤S28。步骤S28判断输入值x是否小于或等于2047。如果x小于或等于2047,则处理进入步骤S29。如果x等于或大于2048,则处理进入步骤S30。步骤S29输出一个通过把核心部分21的输出值乘以2^1所得到的值,步骤S30输出一个通过把核心部分21的输出值乘以2^2所得到的值。
最后在步骤S31,乘法部分23把输入值x乘以输出控制部分22的输出值。在本例中,要得到的值是x^(4/3),输出控制部分22的输出值是x^(1/3)。因此x^(4/3)可通过将x的原始值乘以x^(1/3)而得到。
如上所述,在本例中,一个用来对输入值x计算x^(a/b)(其中a>b)的指数计算装置含有一个用来对0至A范围内的x’值提供x’^((a%b)/b)值的核心部分。此外,本发明的该指数计算装置还设置有一个乘法部分,用来相乘对应于输入值x的x^(int(a/b))值与输出控制部分的输出值。
这样,不需要存储对应于所有可能期望的输入值x(本例中为0至8191)的x^(a/b)值,只需要存储对应于小于或等于预定值A(本例中为255)的输入值x的x^((a%b)/b)值。用这种方法便能进行任何x值的指数计算。于是有可能使用小规模硬件进行分数指数的指数计算。
例3现在将参考

根据本发明例3的指数计算装置。本例提供一种用来获得作为指数值x^(a/b)范例的x^(1/3)值的指数计算装置。输入值x的范围假定为0至8191。
图9是说明根据本发明例3的指数计算装置300的结构的方框图。指数计算装置300包含一个输入控制部分30、一个核心部分31、一个输出控制部分32、和一个判断部分33。
图10是说明指数计算装置300的信号处理方法的流程图,其中分别示出了输入控制部分30、核心部分31、输出控制部分32和判断部分33所执行的信号处理过程。
输入控制部分30判断输入值x是否小于或等于阈值A(例如本例中为1023)。如果x≤1023,则输入控制部分30将不加改变地把x值作为x’提供给核心部分31。如果x>1023,则输入控制部分30将把一个通过把x除以2^j所得到的值作为x’提供给核心部分31。
j的值由判断部分33按下述方法判断。判断部分33首先判断以二进制形式表示的x的数位数目k,然后按j=k-10确定j值。例如,当输入值x等于或大于1024但小于2048时,j的值将为1。数值“10”是以二进制形式表示的数值1024的数位数目。于是,j值代表x比二进制形式下的阈值A多多少个数位。
与例1的核心部分11B相同,核心部分31也含有如图5所示的ROM表格2。已对0至1023范围内的x’计算出了x’^(1/3)的值并存储在ROM表格2中。核心部分31能提供对应于0至1023范围内的x’的x’^(1/3)值。当输入值x≤1023时,输出控制部分32将不加改变地把核心部分31的输出值z’作为z输出。当输入值x>1023时,输出控制部分32将把一个通过把核心部分31的输出值z’乘以2^(j/3)所得到的值作为z输出。
现在将参考图10说明具有这种结构的指数计算装置的操作。图10的输入控制部分30首先接收输入值x并在步骤S40中判断x值是否小于或等于1023。如果x≤1023,则处理进入步骤S41,在那里不加改变地把x值作为x’提供给核心部分31。如果在步骤S40中判定输入值x大于1023,则处理进入步骤S42,把一个通过把x除以2^j所得到的值作为x’提供给核心部分31。
j的值由判断部分33按如下方法确定。具体地说,判断部分33首先在步骤S47中判断以二进制形式表示的x值的数值数目k。然后在步骤S48中得到j=k-10。
x除以2^j的操作例如可以这样进行把x下移j位,或者先给x加上2^(j-1)然后把结果值下移j位以实现“0舍入1入”的舍入处理。
接着在步骤S43,核心部分31从图5的ROM表格2中读出对应于由输入控制部分30所提供的x’值的x’^(1/3)值。
最后在步骤S44,输出控制部分32判断输入值x是否小于或等于1023。如果x≤1023,则处理进入步骤S45,在那里不加改变地输出核心部分31的输出值。如果步骤S44中判定输入值x>1023,则处理进入步骤S46,在那里输出一个通过把核心部分31的输出值乘以2^(j/3)所得到的值。
图11示出指数计算装置300的输出控制部分32中的一个用于提供2^(j/3)值的表格。2^(j/3)的值可以预先以j为地址存储在表格中,使得对应于j值的2^(j/3)值可以通过从该表格读出而得到。核心部分31的输出值与2^(j/3)的乘法可以用一个普通的乘法器完成。
如上所述,本例不需要提供对应于所有可能期望的x值(例如本例中为0至8191)的x^(1/3)值,只需要提供对应于小于或等于预定阈值A=1023的输入值x的x^(1/3)值。用这种方法可以近似地计算出对应于大于A的输入值x的x^(1/3)值。于是有可能用小规模的硬件进行指数计算。
即使当x大于阈值A时也可以使丢失的数位最小化,使得能以高精度得到近似值。
在本例中,阈值A被设定为1023,即由10个比特位能表示的最大可能值,并且判断部分33被设计得能输出一个指明了x的数位数目比10个数位多多少个数位的值。然而,本发明并不局限于这样的结构。或者,当希望使用更小的存储区域时,例如可把阈值A设定为255,即由8个比特位能表示的最大可能值,并且可以相应地设计判断部分33,使它能输出一个指明了x的数位数目比8个数位多多少个数位的值。反之,当希望有较高的计算精度时可以把阈值A设定为4095,即由12个比特位能表示的最大可能值,同时相应地设计判断部分33,使它能输出一个指明了x的数位数目比12个数位多多少个数位的值。
例4现在将参考

根据本发明例4的指数计算装置。本例提供一种用来获得作为指数值x^(a/b)范例的x^(1/3)值的指数计算装置。假定输入值x的范围为0至8191。
图12是说明根据本发明例4的指数计算装置400的结构的方框图。指数计算装置400包含一个输入控制部分40、一个核心部分41、一个输出控制部分42、和一个判断部分43。
图13是说明指数计算装置400的信号处理方法的流程图,其中分别示出了由输入控制部分40、核心部分41、输出控制部分42、和判断部分43所执行的信号处理过程。
判断部分43判断以二进制形式表示的x的数位数目k。输入控制部分40判断k是否小于或等于一个阈值B(例如在本例中为10)。当k≤10时,输入控制部分40将把一个通过把x向上移位(B-k)位所得到的值作为x’提供给核心部分41。当k>10时,输入控制部分40将把一个通过把x向下移位(k-B)位所得到的值作为x’提供给核心部分41。
核心部分41含有一个ROM表格4(z’=ROMTABLE4[x’]),并提供对应于位于2^(B一1)至2^B-1(本例中为512至1023)范围内的x’值的x’^(1/3)值。输出控制部分42输出一个通过把核心部分41的输出值z’乘以2^((k-B)/3)所得到的值。
图14示出指数计算装置400的核心部分41的ROM表格4的内容。对应于位于512至1023范围内的x’值的x’^(1/3)值预先被存储在ROM表格4中。
注意,如图14所示,对应于x’=512(=2^(B-1))的x’^(1/3)值存储在地址O处,对应于x’=1023(=2^B-1)的x’^(1/3)值存储在地址511处。该表格含有这样的值的原因如下。由于k代表了以二进制形式表示的x的数位数目,而输入控制部分40当B-k为正时通过把x向上移位(B-k)位来计算x’,当B-k为负时通过把x向下移位(k-B)位来计算x’,从而x’的第B个数位值永远为1。于是,该值的范围永远在2^(B-1)至2^B-1的范围内。因此,图14表格可以仅用x’的低(B-1)个数位作为地址来查询。结果,该表格的大小可减小为一半。
现在将参考图13说明具有这种结构的指数计算装置的操作。图12的判断部分43首先在步骤S55中判断以二进制表示的x值的数位数目k。输入控制部分40接收输入值x,并在步骤S50判断k是否小于或等于B(本例中B=10)。如果k≤10,则处理进入步骤S51,在那里把一个通过把x向上移位(B-k)位所得到的值作为x’提供给核心部分41。如果k>10,则处理进入步骤S52,在那里把一个通过把x向下移位(k-B)位所得到的值作为x’提供给核心部分41。
然后在步骤S53中,核心部分41从图14的ROM表格4中读出对应于由输入控制部分40提供的x’值的x’^(1/3)值。如上所述,对应于x’=512(=2^(B-1))的x’^(1/3)值存储在地址0处,对应于x’=1023(=2^B-1的x’^(1/3)值存储在地址512处。因此,只要用低(B-1)位作为地址去查阅图14的表格。
最后在步骤S54中,图12的输出控制部分42输出一个通过把核心部分41的输出值乘以2^((k-B)/3)所得到的值。
图15示出指数计算装置400的输出控制部分42中的一个用于提供2^((k-B)/3)值的表格。2^((k-B)/3)的值可以预先以k作为地址存储在表格中,使得可以从该表格读出对应于给定k值的2^((k-B)/3)值。核心部分41的输出值与2^((k-B)/3)的相乘可以用一个普通的乘法器完成。
如上所述,本例不需要提供对应于所有可能期望的x值(例如本例中为0至8191)的x^(1/3)值,只需要提供对应于小于或等于预定阈值B(例如本例中为10)的输入值x的x^(1/3)值。用这样的方法,对应于数位数目大于B的输入值x的x^(1/3)值也可被近似地计算出来。于是有可能用小规模的硬件来进行指数计算。
即使x的数位数目大于B,数位的损失也可被最小化,所以能以高精度得到近似值。
具体地说,本例提供了这样一个优点,即当计算对应于数位数目大于B的x值的x^(1/3)时,在把表格大小减小为一半的同时仍可基本上保持具有与例3相同的精度水平。
例5现在将参考

根据本发明例5的解码装置。如在前面关于以往技术的段落中所述,一个根据MPEG2的声频编码标准AAC编码的比特流中含有一个量化码“x”和一个标度因子“y”。本例的解码装置即是一种用来计算对应于含在该声频比特流中的x和y值的x^(a/b)*2^(y/c)的解码装置。
量化码x是位于例如0至8191范围内的任一整数,标度因子y是一100至156范围内的任一整数。这样的x、y变化范围符合MPEG2的声频编码标准AAC(见ISO/IEC 13818-7:1997)。在下面的说明中将假定x和y属于这样的变化范围,虽然本发明并不局限于这种情况。
图16是说明根据本发明例5的解码装置500的结构的方框图。解码装置500包含一个分离部分50、一个判断部分51、一个第一存储部分52、一个第二存储部分53、一个除法部分54、一个模数计算部分55、一个乘法部分56、和一个移位部分57。
参见图16,分离部分50把量化码x和标度因子y从输入比特流中分离出来。判断部分51判断从分离部分50输出的量化码x是否小于或等于2^N(其中N是一个预定的整数阈值)。当x≤2^N时判断部分51输出判断结果为真,当x>2^N时输出判断结果为假。第一存储部分52以定点格式存储对应于0至(2^Q-1)(其中Q为一整数)范围内的整数q的由q^(a/b)决定的值。
第一存储部分52具有下述结构。其中q是位于由分离部分50从比特流中分离出来的x的变化范围内的任一整数(0≤q<2^Q-1),第一存储部分52以定点格式存储对应于所有可能的q值的q^(a/b)值。这样,第一存储部分52以q为地址存储F(q)值。当整数q>2^N(N为一个预定阈值)时,F(q)代表通过用2^M’对q^(a/b)值进行归一化后所得到的值。当整数q位于0至2^N范围内时,F(q)代表把通过用2^M’对q^(a/b)值进行归一化后所得到的值移位(M’-M)位所得到的值,M是(N*a)/b的整数值,M’是(Q*a)除以b的整数值。整数M是对(N*a)/b进行向上取整所得到的值,整数M’是对(Q*a)/b进行向上取整所得到的值。
图17示出解码装置500的第一存储部分52的内容。如图17所示,第一存储部分52存储当a=4、b=3、N=5,Q=13,M=7和M’=18时的F(q)值。在图17中的每一个定点格式值中,最高位都是符号位,而小数点则都位在第二最高位与第三最高位之间。最高位边上的第二位以及小数点后面的D个数位都是要计算的有效数字。
除法部分54对分离部分50输出的标度因子y执行除法操作,以得到商y1=int(y/c)。模数计算部分55获取标度因子y除以c的余数y2=(y%c)。
第二存储部分53以定点格式存储对应于0至3范围(即y2变化范围)内的整数值p的G(p)=2^(p/c)值,其中的y2值是由模数计算部分55计算的。
图18示出解码装置500的第二存储部分53的内容,其中含有c=4时的G(p)值。图18中G(p)值的定点格式可以与图28所示的相同。
乘法部分56将从第一存储部分52读出的F(x)值与从第二存储部分53读出的G(y2)值相乘。
移位部分57把乘法部分56的输出值移位,当判断部分51的判断结果为真时移位(y1-(M’-M))位;当判断部分51的判断结果为假时移位y1位,由此输出移位值。
现在将在a=4、b=3、c=4、M=7、N=5、Q=13和D=30的假设下说明具有这种结构的解码装置500的操作。图16的分离部分50从输入比特流中分离出量化码x和标度因子y。然后判断部分51判断量化码x是否小于或等于2^5。除法部分54求得标度因子y除以4所得的商y1,模数计算部分55求得标度因子y除以4所得的余数y2。乘法部分56将第一存储部分52的地址x处的F(x)值与第二存储部分53的地址y2处的G(y2)值相乘。
通过这些操作,从乘法部分56已输出一个按照从表达式(1)转变成的表达式(2)的(x^(4/3)*2^((y%4)/4))值。然后,移位部分57在判断部分51的判断结果为真时把乘法部分56的输出值移位y1-(18-7)位;在判断结果为假时移位y1位。这一操作的作用如下。首先,移位y1位的操作对应于计算2^int(y/4),即表达式(2)(该式是第一项、第二项与第三项的相乘)中的第三项。乘法部分56的输出值又被乘上了除法部分54的输出商2^y1,所以得到了具有原始大小的输出信号。
当判断部分51的判断结果为真时,要进行移位-(18-7)位的操作的原因如下。若x>2^5,则x^(4/3)的值已被2^18归一化。若x≤2^5,则与x>2^5的情形相比,将存储另一个值,这个值是通过把x^(4/3)值向上移位(18-7)位得到的。这样,这个值要被附加移位11位,以调整最后的计算结果。
如上所述,在本例中,即使当x的值远小于其变化范围中的最大值时,直到输出计算结果的最后阶段x^(4/3)值也能保留有较多的有效数位,由此有可能以高精度计算x^(4/3)*2^(y/4)。虽然N和M可以选为任何其他的值,但在本例中有N=5和M=7。例如,也可把N设定为9,这时M=9*4/3=12。
例6现在将参考

根据本发明例6的解码装置。本例的解码装置接收按MPEG2的声频编码标准编码的比特流,分离出含在其内的量化码x和标度因子y,然后计算作为表达式(1)的一般形式的下列表达式(3)。
x^(a/b)*2^(y/c)(3)在本例中,量化码x的变化范围例如是0至4096,标度因子y的变化范围例如是-100至156。在本例中,表达式(3)被转变成下列表达式(4)。
x*x^((a-b)/b)*2^((y%c)/c)*2^int(y/c)(4)现在将说明利用表达式(4)和一个仅需更小存储区域的存储部分来解码输入比特流的操作。
图19是说明根据本发明例6的解码装置600的结构的方框图。解码装置600包含一个分离部分60、一个判断部分61、一个第一移位部分62、一个第一存储部分63、一个第二存储部分64、一个第一除法部分65、一个模数计算部分66、一个第二除法部分67、一个乘法部分68、和一个第二移位部分69。
参见图19,分离部分60把量化码x和标度因子y从输入比特流中分离出来。判断部分61判断量化码x是否小于或等于2^N(其中N是一个对应于第一存储部分63的地址数的阈值),由此当x≤2^N时输出判断结果为真,当x>2^N时输出判断结果为假。当x>2^N时,判断部分61还输出一个参数i,用来指明变量x的值(其中i是一个非负整数,x的变化范围是2^N至2^(N+b*i))。i值的确定使x能满足关系式2^(N+3(i-1))<x≤2^(N+3i)。判断部分61的判断结果和参数i都被提供给第二除法部分67、第一移位部分62和第二移位部分69。
假定乘法部分68(下面将有更详细的说明)的功能是对具有数位宽度(D+2)的定点格式输入值进行计算,其中输入值的最高位是符号位,第二最高位以及小数点后面的D个数位代表输入值的有效数字。然后,第一移位部分62通过移位把x转换成定点格式值x1,当判断部分61的判断结果为真时把x移位D-N位;当判断结果为假时把x移位D-(N+b*i)位(利用i值)。
第一除法部分65把分离部分60输出的y值除以c,并输出其商y1。模数计算部分66把分离部分60输出的y值除以c,并输出其余数y2。第二除法部分67接收分离部分60所分离出的x值,并当判断部分61的判断结果为真时不加改变地把x值作为x2输出,当判断结果为假时把x/(2^(b*i))的整数部分作为x3输出。
第一存储部分63存储对应于q值(q是0至2^N范围内的整数)的H(q)值。H(q)值是通过把q^((a-b)/b)值移位(D-M)位(其中M是N*(a-b)/b的整数值)而把q^((a-b)/b)值转变成定点格式来获得的。
第二存储部分64以定点格式存储对应于从模数计算部分66输出的y2值(y2=p)的G(p)=2^(p/c)值。第二存储部分64的内容可以与图18所示的相同,即对应于0至3范围内的整数值p的2^(p/c)值。
乘法部分68将以下三个值相乘第一存储部分63的地址x2或x3处的值,第二存储部分64的地址y2处的值,和第一移位部分62输出的x1值。当用M表示N*(a-b)/b的整数值时,第二移位部分69在判断部分61的判断结果为真时把乘法部分69的输出值移位(y1+N+M)位;在判断结果为假时把上述输出值移位(y1+N+M+a*i)位。
图20示出解码装置600的第一存储部分63的内容。图20所示的表格含有定点格式的H(q)值,这些值是通过用2^M来归一化q^((a-b)/b)值而得到的(其中q是0至2^N范围内的整数)。在本例中,H(q)值是在a=4、b=3、N=9、M=3和D=30的条件下得到的M=3是从9*(4-3)/3计算出来的。如上所述,在该表格的格式中,最高位是符号位,小数点位在第二最高位与第三最高位之间。所以H(q)的值最小为-2,最大小于2。
图21示出一种把一个整数值转变成一个定点格式值的方法。虽然N、M和D当然可以有不同的值,但在本例中有N=9、M=3和D=30。例如,N也可设定为10,而M被设定为整数4,这是通过把10*(4-3)/3向上取整得到的。
现在将在a=4、b=3、c=4、M=3、N=9和D=30的假定下参考图18至27说明具有这种结构的解码装置600的操作。首先,图19的分离部分60把量化码x和标度因子y从输入比特流中分离出来。然后判断部分61判断量化码x是否小于或等于2^9(=512),并在x≤2^9时输出判断结果为真,在x>2^9时输出判断结果为假。判断部分61还根据量化码x的变化范围输出一个i值。
接着,第一移位部分62通过对x移位而把整数值x转变成具有定点格式的x1,当判断部分61的判断结果为真时移位(30-9)位;当判断结果为假时移位30-(9+3)位。
下面将对这个操作做进一步详细说明。如图28所示,在本例的定点格式中,最高位是符号位,小数点位在第二最高位与第三最高位之间。所以当x具有9个或少于9个数位时(即x≤2^9),x可以通过移位(30-9)=21位而被归一化,使得x能符合定点格式地等于或小于1.0,如图21所示。
类似地,当输入整数x含有10至(9+3)=12位时,x可以通过向上移位30-(9+3)=18位而被归一化,使得x变为定点格式表示所需的等于或小于1.0。根据这个原理,第一移位部分62在判断部分61的判断结果为真时,即当x≤512时,通过把x移位(30-9)=21位而使整数x转变成定点格式的x1。当判断部分61的判断结果为假时,即当512<x≤2^12时,第一移位部分62通过把x移位30-(9+3)=18位而把整数x转变成定点格式的x1。
当判断部分61的判断结果为真时,第二除法部分67不加改变地把x值作为x2输出;当判断结果为假时,即当2^9<x≤2^12时,把x/8的整数值作为x3输出。由于第一存储部分63只存储对应于0至2^9(即512)范围内的整数值q的取决于q^(1/3)的值,所以x3值被用作第一存储部分63的地址。因此,当判断部分61的判断结果为真时,即当x≤512时,将不加变动地把x值作为x2输出;而当判断结果为假时,即当2^9<x≤2^12时,则将通过计算出x/8的整数值来产生并输出小于或等于512的x3。
第一除法部分65取得y/4的商y1,模数计算部分66取得y/4的余数y2。然后乘法部分68将以下三个值相乘第一存储部分63的地址x2处的H(x2)值,第二存储部分64的地址y2处的G(y2)值,和第一移位部分62输出的x1值。
通过这些操作,乘法部分68将提供一个按照从表达式(3)转变成的表达式(4)的对应于x*x^(1/3)*2^((y%4)/4)的值(一个其数位数目即增益被调整之前的值)。这是因为第一移位部分62的输出值代表x被转变成定点格式后的值,第一存储部分63以定点格式存储对应于x^(1/3)的值,并且第二存储部分64以定点格式存储对应于0至3范围内的整数值p的由2^(q/4)决定的值。
最后,第二移位部分69在判断部分61的判断结果为真时把乘法部分68输出的值移位由(y1+9+3)决定的位数;当判断结果为假时,即当2^9<x≤2^12时,把该输出移位(y1+9+3+4*i)位。这个操作的作用如下。首先,把输出值移位y1位的操作对应于表达式(4)的第四项,即2^int(y/4),的计算y1值是由第一除法部分65得到的y除以4的商。
当判断部分61的判断结果为真时,要进行把输出值移位(y1+9+3)位的操作的原因如下。当x≤2^9时,原来是整数的x值被第一移位部分62用2^9归一化,从而转变成一个不大于1.0的值。原来小于或等于2^(9/3)的对应于存储在第一存储部分63中的各个值也被转变成不大于1.0的值。换言之,乘法部分68的输出值被乘以2^(y1+9+3),也即被向上移位(y1+9+3)位,从而该输出值被转变成一个以原来的整数格式表示的值。
当2^9<x≤2^12时,原来是一个整数的x值被第一移位部分62用2^(9/3)归一化,转变成不大于1.0的值。如上所述,原来小于或等于2^(9/3)的被存储在第一存储部分63中的各个值也被用2^3归一化,转变成不大于1.0的值。此外,第二除法部分67计算输入值x除以8,以便用计算结果作为地址去查阅第一存储部分63(一个用于指数为1/3的指数计算的表格)。因此,第一存储部分63的输出值是x^(1/3)的一半,这是因为下列等式(5)成立。
(x/8)^(1/3)=x^(1/3)*(1/8)^(1/3)=x^(1/3)*(1/2)(5)乘法部分68的输出值与2^(9+3+3+1)相乘等价于把该输出值向上移位(9+3+3+1)=16位。这个移位操作把乘法部分68的输出值转变成一个用原来的整数形式表示的值。
由于这些原因,所以当判断部分61的判断结果为真时,第二移位部分69将把乘法部分68的输出值移位(y1+N+M)位;当判断结果为假且i=1时移位(y1+N+M+a*1)位。应该理解,由于在这些用这种数字表示形式表示的值之间,大小关系是相对的,所以当判断部分61的判断结果为假时,第二移位部分69要执行的操作的目的是调整乘法部分68的输出,使之比判断结果为真时大a*1=4*1=4个数位。
如上所述,在本例中,即使x的值很大,也有可能利用一个如图21所示的小容量表格仅仅通过简单的移位操作来进行计算。因此,有可能对任意的量化码x值快速地算出x^(4/3)*2^(y/4)。
在本例中,假定量化码x的范围是0至4095,但按照MPEG2的AAC标准该范围应是0至8191。对于量化码x为4096或更大的情况的计算方法是假定i=2。这里应指出4096等于2^(9+3)。
当输入值x≥2^(9+3)时,第一移位部分62通过把x移位D-(N+b*i)=30-(9+3*2)而把x转变成具有定点格式的x1。第二除法部分67取得x2,对应于给定x它是x/(2^(3*2))的整数值。然后乘法部分68将以下三个值相乘第一存储部分63地址x2处的值,第二存储部分64地址y2处的值,和x1值。最后,第二移位部分69把乘法部分68的输出值移位(y1+N+M+a*i)=(y1+9+3+4*2)位。
第二移位部分69在x≥2^(N+3)时对乘法部分68的输出移位(y1+N+M+8)位这一操作的作用如下。首先,移位y1位的操作对应于计算2^int(y/4),即表达式(4)的第四项。这是因为y1是除法部分65的输出,并且它的值是y除以4的商。
当x>2(N+3)时,原来是一个整数的x被第一移位部分62用2^(N+6)归一化而转变成一个不大于1.0的值。如上所述,原来小于或等于2^(N/3)的存储在第一存储部分63中的各个值也被用2^M归一化,转变成不超过1.0的值。此外,第二除法部分67计算x除以64,以便用此商值作为地址来查阅第一存储部分63。因此,第一存储部分63的输出值是x^(1/3)的1/4,这是因为下列等式(6)成立。
(x/64)^(1/3)=x^(1/3)*(1/64)^(1/3)=x^(1/3)*1/4(6)乘法部分68的输出值与2^(N+M+6+2)相乘等价于把乘法部分68的输出值向上移位(N+M+6+2)位。这个移位操作把乘法部分68的输出值转变成一个以原来的整数形式表示的值。
由于这些原因,当x>2^(N+3)时第二移位部分69把乘法部分68的输出值移位(y1+N+M+8)位。应该理解,由于在这些用这种数字表示形式的值之间,大小关系是相对的,所以当x>2^(N+3)时第二移位部分69要执行的操作的目的是,调整乘法部分68的输出,使之比x<2^N时大8个数位。
例7现在将参考

根据本发明例7的解码装置。本例的解码装置也接收按照MPEG2的声频编码标准编码的比特流,把其中所含的量化码x和标度因子y分离出来,并计算下列作为表达式(1)的一般形式的表达式(3)。
x^(a/b)*2^(y/c)(3)在本例中,量化码x的变化范围例如是0至891,标度因子y的变化范围例如是-100至156。在本例中,表达式(3)被转换成下列表达式(4)。
x*x^((a-b)/b)*2^((y%c)/c)*2^int(y/c)(4)现在将说明利用表达式(4)和一个只需要更小的存储容量的存储部分来解码一个输入比特流的操作。
图22是说明根据本发明例7的解码装置700的结构的方框图。解码装置700包含一个分离部分70、一个判断部分71、一个第一移位部分72、一个第一存储部分73、一个调整系数发生部分74、一个第一除法部分75、一个模数计算部分76、一个第二除法部分77、一个乘法部分78、和一个第二移位部分79。
参见图22,分离部分70把量化码x和标度因子y从输入比特流中分离出来。判断部分71判断量化码x是否小于或等于2^N(其中N是一个对应于第一存储部分73的地址数的阈值),并在x≤2^N时输出判断结果为真,在x>2^N时输出判断结果为假。当x>2^N时,判断部分71还输出一个能指明变量x的值的参数j(其中j是一个非负整数,x的变化范围是2^N至2^(N+j))。j值的确定使得在x>2^N时满足关系式2^(N+(j-1))<x≤2^(N+j),而当x≤2^N时j=0。判断部分71的判断结果和参数j的值都被提供给第二除法部分77,第一移位部分72、第二移位部分79、和调整系数发生部分74。
假定乘法部分78(后面将更详细地说明)的功能是对一个具有数位宽度(D+2)的定点格式输入值进行计算,其中输入值的最高位是符号位、第二最高位和小数点后面的D位代表输入值的有效数字。然后第一移位部分72在判断部分71的判断结果为真时通过把x移位D-N位而把x转变成具有定点格式的x1,在判断结果为假时则通过把x移位D-(N+j)位(利用j值)而转变成x1。
第一除法部分75执行把分离部分70输出的y值除以c的操作,并输出y除以c的商y1。模数计算部分76执行把分离部分70输出的y值除以c的操作,并输出y除以c的余数y2。第二除法部分77接收分离部分70分离出的x值,并在判断部分71的判断结果为真时不加改变地把x值作为x2输出;在判断结果为假时把x/(2^j)的整数值作为x3输出。
第一存储部分73存储对应于q值的H(q)值(q是0至2^N范围内的整数值)。H(q)值是通过把q^((a-b)/b)值移位(D-M)位(其中M是N*(a-b)/b的整数值)而把q^((a-b)/b)转变成定点格式得到的。
调整系数发生部分74对模数计算部分76输出的y2(y2=p)值和j值以定点格式产生2^(p/c)*2^(j/b),并把它作为I(p,j)。调整系数发生部分74含有一个存储部分,其中预先存储了I(p,j)值。
图23示出解码装置700的调整系数发生部分74的内容。图23所示的调整系数发生部分74含有当b=3、c=4时的I(p,j)值。这里需要注意下述情况。本例中2^(p/4)*2^(j/3)的最大值出现在j=13-N时,当N=9时该值为2^(3/4)*2^(4/3),所以它是大于2.0的。由于本例也使用了如图28所示的定点格式,所以I(p,j)表格所存储的是通过把2^(p/4)*2^(j/3)向下移位2位所得到的值。当然,在输出信号中必需考虑到这个移位2位的操作,这将在后面说明。
乘法部分78将以下三个值相乘第一存储部分73的地址x2或x3处的值,调整系数发生部分74的地址y2,j处的值,和第一移位部分72的输出值x1。当用M代表N*(a-b)/b的整数值时,第二移位部分79在判断部分71的判断结果为真时把乘法部分78的输出值移位(y1+N+M)位;在判断结果为假时把该输出值移位(y1+N+M+j)位。在该操作中,因图23所示的结构需要进行上述两个数位的调整,也即把已移位的值再移位2位。
与根据本发明例6的解码装置600的第一存储部分63一样,第一存储部分73也有一个如图20所示的表格,其中含有一些数值。图20所示的表格含有定点格式的H(q)值,这些值是通过用2^M去归一化q^((a-b)/b)值而得到的(其中q是0至2^N范围内的整数)。在本例中,H(q)值是在a=4、b=3、N=9、M=3和D=30的条件下得到的。M=3是从9*(4-3)/3计算出来的。如上所述,在该表格的格式中,最高位是符号位,小数点位在第二最高位与第三最高位之间。所以H(q)的最小值为-2,最大值<2。
如上所示,图21示出了一种把一个整数值转变成一个定点格式值的方法。在本例中,N=9、M=3和D=30,虽然这些值当然也可以不是这样。例如,也可把N设定为10,这时通过对10*(4-3)/3向上取整,得到M=40。
现在将参考图20至23在a=4、b=3、c=4、M=3、N=9和D=30的假定下说明具有这种结构的解码装置700的操作。首先,图22的分离部分70从输入比特流中分离出量化码x和标度因子y。然后判断部分71判断量化码x是否小于或等于2^9(=512),并当x≤2^9时输出判断结果为真,当x>2^9时输出判断结果为假。判断装置71还根据量化码x的变化范围输出j值。
接着,第一移位部分72在判断部分71的判断结果为真时通过把x移位(30-9)位而将整数值x转变成具有定点格式的x1;在判断结果为假时则通过移位30-(9+j)位而将x转变成x1。
下面将进一步详细地说明这一操作。如图28所示,在本例的定点格式中,最高位是符号位,小数点位于第二最高位与第三最高位之间。所以当x是一个具有不大于9位的值(即x≤2^9)时,可以通过把x向上移位(30-9)=21位来对它归一化,使它在定点格式下不大于1.0,如图21所示。
类似地,当输入整数值x具有10位或大于10位的数位(例如11位)时,可以通过把x向上移位30-11=19位来对它归一化,使它在定点格式下不大小1.0。根据这个原理,第一移位部分72在判断部分71的判断结果为真时,也即在x≤512时,通过把整数x移位(30-9)=21位使它转变成定点格式的x1。当判断结果为假时,第一移位部分72通过把x移位一个取决于x数位数目的位数,把整数值x转变成定点格式的x1。
第二除法部分77的判断部分71的判断结果为真时不加改变地把x值作为x2输出;在判断结果为假时,即在x>2^9时,则把x/(2^j)的整数值作为x3输出。由于第一存储部分73只对0至2^9(即512)范围内的整数值q存储了取决于q^(1/3)的值,所以x3值被用作第一存储部分73的地址。因此,当判断部分71的判断结果为真时,即x≤512时,x将不加改变地被作为x2输出;但当判断结果为假时,则将通过计算x/(2^j)的整数值来产生和输出小于或等于512的x3值。
第一除法部分75获取y除以4的商y1,模数计算部分76获取y除以4的余数y2。然后,乘法部分78将下面三个值相乘第一存储部分73的地址x2处的H(x2)值,调整系数发生部分74的地址y2,j处的I(y2,j)值,和第一移位部分72的输出值x1。
通过这些操作,乘法部分78将按照从表达式(3)变换来的表达式(4)提供一个对应于x*x^(1/3)*2^((y%4)/4)的值(一个其数位数目即增益被调整之前的值)。这是因为第一移位部分72的输出x1代表x被转变成定点格式时的值,第一存储部分73存储对应于定点格式的x^(1/3)的值,并且调整系数发生部分74存储定点格式的对应于0至3范围内的整数值p和j的2^(p/4)*2^(j/3)值。由于下述原因值2^(p/4)需要乘以2^(j/3)。当x>2^N时,第二除法部分77计算输入值x除以2^j,以便用计算所得的值作为地址去查阅第一存储部分73(一个用于指数为1/3的指数计算的表格)。因此,由于下列等式(6)成立,所以第一存储部分73的输出值等于x^(1/3)除以2^(j/3)。
(x/(2^j))^(1/3)=x^(1/3)*(1/(2^j))^(1/3)=x^(1/3)/2^(j/3)(6)这样,为了计算x^(1/3),第一存储部分73的输出值必须乘以2^(j/3),因此这些值被预先设置在调整系数发生部分74中。
最后,第二移位部分79在判断部分71的判断结果为真时把乘法部分78的输出值移位一个取决于(y1+9+3)的位数;而当判断结果为假并且例如j=2时,即2^10<x≤2^11时,把该输出值移位(y1+9+3+2)位。这个操作的作用如下。首先,把输出值移位y1位的操作对应于表达式(4)的第四项即2^int(y/4)的计算。y1值是第一除法部分75所得到的y除以4的商。
当判断部分71的判断结果为真时,要进行把输出值移位(y1+9+3)位的操作的原因如下。当x≤2^9时,原来是一个整数的x值被第一移位部分72用2^9进行了归一化,使之转变成一个不大于1.0的值。原来小于或等于2^(9/3)的存储在第一存储部分73中的各个值也被用2^3归一化,从而被转变成不大于1.0的值。换言之,乘法部分78的输出值需乘以2^(y1+9+3),也即移位(y1+9+3)位,从而把输出值转变成一个用原来的整数格式表示的值。
当x>2^9时,例如当x位于2^10至2^11范围内时,原来是一个整数的x值被第一移位部分72用2^(9+2)归一化,从而被转变成一个不大于1.0的值。原来小于或等于2^(9/3)的存储在第一存储部分73中的各个值也都被用2^3归一化从而转变成不大于1.0的值。
乘法部分78的输出值乘以2^(9+3+2)等价于把该输出值向上移位(9+3+2)=14位。这个移位操作把乘法部分78的输出值转变成一个用原来整数形式表示的值。
由于这些原因,第二移位部分79在判断部分71的判断结果为真时把乘法部分78的输出值移位(y1+N+M)位;在判断结果为假时把该输出值移位(y1+N+M+j)位。这里应该注意,在本例中,如前所述,由于图23所示的结构,进行了2个数位的调整,也即把已被移位的值再移位2位。
应该理解,由于这些具有这种数字表示的值之间的大小关系是相对的,所以当判断部分71的判断结果为假时要执行第二移位部分79的操作的目的是,调整乘法部分78的输出,使它比判断结果为真时大j个数位。
如上所述,在本例中,即使对于大值的x也有可能利用一个如图20所示的小容量表格仅仅通过简单的移位操作来进行计算。因此,有可能对任意的量化码x快速地计算x^(4/3)*2^(y/4)。与例6相比,例7中的调整系数发生部分74需要有一个较大的表格,但却能以更高的精度来进行计算。
例8现在将参考

根据本发明例8的解码装置。本例的解码装置也接收按照MPEG2的声频编码标准编码的比特流,把含在其中的量化码x和标度因子y分离出来,并计算下列作为表达式(1)的一般形式的表达式(3)。
x^(a/b)*2^(y/c)(3)在本例中,量化码x的变化范围例如是0至8191,标度因子y的变化范围例如是-100至156。在本例中,表达式(3)被转换成下列表达式(4)。
x*x^((a-b)/b)*2^((y%c)/c)*2^int(y/c)(4)现在将说明利用表达式(4)和一个只需要更小存储容量的存储部分来解码输入比特流的操作。
图24是说明根据本发明例8的解码装置800的结构的方框图。解码装置800包含一个分离部分80、一个判断部分81、一个第一移位部分82、一个第一存储部分83、一个调整系数发生部分84、一个第一除法部分85、一个模数计算部分86、一个第二除法部分87、一个乘法部分88、和一个第二移位部分89。
参见图24,分离部分80把量化码x和标度因子y从输入比特流中分离出来。判断部分81判断以二进制形式表示的量化码x的数位数目k,并输出k值。判断部分81把k值提供给第二除法部分87、第一移位部分82、第二移位部分89、和调整系数发生部分84。
假定乘法部分88(后面将更详细地说明)的功能是对具有数位宽度(D+2)的定点格式输入值进行计算,其中输入值的最高位是符号位,第二最高位和小数点后面的D位代表输入值的有效数字。然后,第一移位部分82通过把x移位D-k位而使整数值x转变成具有定点格式的x1。
第一除法部分85执行把分离部分80的输出值y除以4的操作,并输出该除法的商y1。模数计算部分86执行把分离部分80的输出值y除以4的操作,并输出该除法的余数y2。第二除法部分87对分离部分80的输出值x计算x/(2^(k-N))的整数值(其中N是一个预定阈值),并把得到的值作为x’输出。具体地说,第二除法部分87通过在N-k>0时把x向上移位(N-k)位来计算x’;在N-k<0时把x向下移位(k-N)位来计算x’。
第一存储部分83用q的低(N-1)位作为地址存储对应于q值的H(q)值(q是等于或大于2^(N-1)但小于2^N的整数值)。H(q)值是通过把q^((a-b)/b)值移位(D-M)位(其中M是N*(a-b)/b的整数值)从而把q^((a-b)/b)转变成定点格式而得到的。
调整系数发生部分84对模数计算部分86的输出值y2(y2=p)和k值产生2^(p/c)*2^((k-N)/b)的定点格式值,并把它作为I(p,k)。调整系数发生部分84含有一个存储部分,其中预先存储了I(p,k)值。
图25示出解码装置800的调整系数发生部分84的内容。图25的调整系数发生部分84存储了b=3、c=4时的I(p,k)值。这里应该注意下述情况。在本例中k=13、N=9,所以2^(p/4)*2^((k-N)/3)的最大值是2^(3/4)*2^(4/3),它大于2.0。由于本例也使用了如图28所示的定点格式,所以I(p,k)表格所存储的是通过把2^(p/4)*2^((k-N)/3)向下移位2位所得到的值。当然,在输出信号中必须要考虑到这个移位2位的操作。这将在后面说明。
乘法部分88把以下三个值相乘第一存储部分83的地址x’处的值,调整系数发生部分84的地址y2,k处的值,和第一移位部分82的输出值x1。当用M表示N*(a-b)/b的整数值时,第二移位部分89根据判断部分81的判断结果把乘法部分88的输出值移位(y1+M+k)位。在这个操作中,由于图25所示的结构,需要执行上述2个数位的调整,即已被移位的值还要被移位2位。
图26示出解码装置800的第一存储部分83的内容。图26所示表格含有以q的低(N-1)位作为地址的对应于q值的H(q)值(其中q是等于或大于2^(N-1)但小于2^N的整数)。H(q)值是通过把q^((a-b)/b值移位(D-M)位(其中M是N*(a-b)/b的整数值)而使q^((a-b)/b)值转变成定点格式得到的。在本例中,H(q)值是在a=4、b=3、N=9、M=3和D=30情形下得到的。M=3是从9*(4-3)/3计算得到的。如上所述,在该表格的格式中,最高位是符号位,小数点位于第二最高位与第三最高位之间。所以H(q)的最小值为-2,最大值小于2。
这里应该注意,在图26中,对应于q=256(=2^(N-1))的H(q)值存储在地址0处,对应于q=511(=2^N-1)的H(q)值存储在地址255处。该表格有这样的值是因为如下原因。当用k表示用二进制形式表示的x值的数位数目时,第二除法部分87在N-k为正时通过把x向上移位(N-k)位来计算x’;在N-k为负时通过把x向下移位(k-N)位来计算x’,所以x’的第N位永远为1。因此,图26的表格可以只用x’的低(N-1)位来查阅。其结果是,表格的大小可以减小为一半。
如上所述,图21示出了一种把一个整数值转变成一个定点格式值的方法。在本例中,N=9、M=3和D=30,虽然这些值当然也可以取其他值。例如,也可把N设定为10,这时M为整数值4,这是通过对10*(4-3)/3向上取整得到的。
现在将在a=4、b=3、c=4、M=3、N=9和D=30的假定下参考图21和24至26说明具有这种结构的解码装置800的操作。首先,图24的分离部分80把量化码x和标度因子y从输入比特流中分离出来。然后判断部分81判断以二进制形式表示的量化码x的数位数目k,并输出k值。
接着,第一移位部分82通过把x移位(30-k)位而将整数值x转变成定点格式值x1。
下面将进一步详细地说明这一操作。如图28所示,在本例的定点格式中,最高位是符号位,小数点位于第二最高位与第三最高位之间。所以如图21所示,可以通过把x向上移位(30-k)位来使之归一化,变成定点格式所需的等于或小于1.0的值。
第二除法部分87在N-k为正时通过把x向上移位(N-k)位得到x’,在N-k为负时通过把x向下移位(k-N)位来获得x’,并输出得到的x’值。由于如前所述,x’的第N位永远为1,所以可以用x’的低(N-1)位作为地址去查阅第一存储部分83。
第一除法部分85取得y除以4的商y1,模数计算部分86取得y除以4的余数y2。然后,乘法部分88将以下三个值相乘第一存储部分83的地址x2(其中x2是由x’的低(N-1)位所代表的值)处的H(x2)值,调整系数发生部分84的地址x2,k处的I(y2,k)值,和第一移位部分82的输出值x1。
通过这些操作,乘法部分88将提供一个对应于按照从表达式(3)转换成的表达式(4)的x*x^(1/3)*2^((y%4)/4)的值(一个其数位数目即增益被调整之前的值)。这是因为第一移位部分82的输出x1代表x被转变成定点格式时的值,第一存储部分83存储了对应于定点格式的x^(1/3)的值,并且调整系数发生部分84存储了对应于0至3范围内的整数值p和k值的定点格式的2^(p/4)*2^((k-N)/3)值。需要将2^(q/4)值乘以2^((k-N)/3)的原因如下。输入值x已被第二除法部分87用x的数位数目k转变成了x’=x/(2^(k-N)),而存储在第一存储部分83中的值是通过求取x’^(1/3)得到的,因此,第一存储部分83的输出值是x^(1/3)除以2^((k-N)/3),这是因为下列等式(7)成立。
(x/(2^(k-N)))^(1/3)=x^(1/3)*(1/(2^(k-N)))^(1/3)=x^(1/3)/2^((k-N)/3)(7)所以,为了计算x^(1/3),第一存储部分83的输出值必须乘以2^((k-N)/3),因此这个值要预先设置在调整系数发生部分84中。
最后,第二移位部分89根据判断部分81得到的k值把乘法部分88的输出值移位取决于(y1+M+k)值的位数。这个操作的作用如下。首先,把该输出值移位y1位的操作是一个对应于表达式(4)的第四项,即2^int(y/4)的计算。y1值是第一除法部分85得到的y除以4的商。
此外,执行把输出值移位(y1+M+k)位的操作的原因如下。原来是一个整数的x被第一移位部分82用2^k归一化而转变成了一个不大于1.0的值。原来小于或等于2^M的存储在第一存储部分83中的各个值也被用2^M归一化而转变成了不大于1.0的值(本例中M=9/3)。换言之,乘法部分88的输出值需要乘以2^(y1+M+k),也即向上移位(y1+M+k)位才能转变成用原来的整数格式表示的值。
这里应该注意,如前所述,在本例中因图25所示的结构需进行2个数位的调整,也就是已移位了的值还要向上移位2位。
应该理解,由于在这些用这种数字表示的值之间的关系是相对的,并且M是一个预定常数,所以第二移位部分89要执行的操作是根据判断部分81得到的k值和y1值来调整乘法部分88的输出。
如上所述,在本例中,即使对于大值的x也有可能利用一个如图26所示的小容量表格仅仅通过简单的移位操作来进行计算。因此,有可能对任何的量化码x快速地计算x^(4/3)*2^(y/4)。与例7相比,例8中的调整系数发生部分84需要有较大的表格,但设置在第一存储部分中的表格规模可以减小。
本发明提供了用来对输入值x计算x^(a/b)的指数计算装置,其中为了近似地计算x^(a/b),提供了一个对应于位于一个预定范围内的输入值x的小容量表格。于是,为了计算x^(a/b),不再需要一个大容量表格来存储对应于所有可能期望的x值的x^(a/b)值。这样,有可能用小规模的硬件来近似地计算x^(a/b)。特别是,近似计算的精度可以通过下述措施而被很好地保持提供一个对应于小于或等于阈值A的输入值x’的表格,同时提供一个用来通过使x’=x/2^j而能指明变量x值的参数j,或者提供一个对应于等于或大于2^(B-1)但小于2^(B-1)的x’值的表格。
根据本发明,当输入值x大于阈值A时,可以通过向下移位若干位这样的简单方法来对x进行除法操作和转变。当x取小于或等于阈值A的值的可能性较大时,本发明将特别有效。
根据本发明,核心部分在一个表格中保持有对应于x’的所有可能值的x’^(a/b)值或x’^(L/b)值,由此有可能通过查阅一个小容量表格而把x转换成z’,从而减少了指数计算的成本。尤其是,当核心部分在一个表格中保持有x’^(L/b)值时,含在该表格中的z’值将比较小(从而数位数目比较少),由此进一步减小了ROM表格的容量。
根据本发明,当阈值A根据x的出现频率确定,使得x小于或等于A的出现频率等于或大于一个预定值时,可以在基本上不降低信号解码处理质量的情况下减小核心部分的负载。
根据本发明,输出控制部分含有一个用来存储2^(j*a/b)值或2^((k-B)*a/b)值的存储部分,并且输出控制部分的输入值被乘以一个用j或k作为地址从存储部分读出的值,从而输出乘积值。这样,本发明的实施基本上不增加所需的计算量。
根据本发明,当B为整数且A=2^B时,判断部分在x>A时将确定出一个j值,使得x满足2^(B+(j-1))≤x<2^(B+j)。因此,j值等于用二进制形式表示的x的数位数目减去B值,从而输入控制部分的操作可以利用简单的移位操作来实现。
根据本发明,核心部分含有一个存储部分,用来以q的最少(B-1)个低位作为地址对整数值q(其中q是等于或大于2^(B-1)但小于2^B的整数)存储q^(a/b)值。Z’值被乘以一个用x’的最少(B-1)个低位作为地址从存储部分读出的值,并输出该乘积值,由此以十分简单的比特操作实现了寻址访问。
在本发明的解码装置中,即使当量化码x的值远小于它的变化范围中的最大值时,直到输出计算结果的最后阶段,x^(a/b)的值也可以保留较多的有效比特数位,由此有可能以高精度计算x^(a/b)*2^(y/c)。
在本发明的解码装置中,即使当量化码x的值小时,也仍可能通过定点格式的处理过程(DSP)来精确地计算x^(a/b)*2^(y/c)。此外,即使当量化码x的值大于存储在小规模的第一存储部分中的值时,也仍可以利用该小规模的第一存储部分来进行计算。因此,有可能对量化码x的任何值快速地计算x^(a/b)*2^(y/c)。
熟悉本技术领域的人们可以在不偏离本发明的范畴和精神的情况下明显地看到和容易地实现各种其他的修改。所以,不希望把这里所附权利要求的范畴局限于这里所给出的说明,而希望能广义地理解这些权利要求。
权利要求
1.一种用来对给定的输入值x计算x^(a/b)(其中a和b均为整常数)的指数计算装置,它包括一个输入控制部分,用来输出x’的值,其中当x≤A时x’=x(其中A是x变化范围内的一个阈值),当x>A时x’=x/2^b;一个核心部分,用来输出z’=x’^(a/b)的值;以及一个输出控制部分,用来输出z的值,其中当x≤A时z=z’,当x>A时z=z’*2^a。
2.根据权利要求1的指数计算装置,其中当x>A时输入控制部分通过把x向下移位b个比特位来产生x’。
3.根据权利要求1的指数计算装置,其中核心部分在一个表格中存储对应于所有可能的x’值(其中0≤x’≤A)的x’^(a/b)值。
4.根据权利要求1的指数计算装置,其中A值的设定使得x小于或等于A的出现频率等于或大于一个预定值。
5.一种用来对给定的输入值x计算x^(a/b)(其中a和b均为整常数)的指数计算装置,它包括一个输入控制部分,用来输出x’的值,其中当x≤A时(其中A是x的变化范围内的一个阈值)x’=x,当x>A时x’=x/2^(b*n)(其中n是一个满足关系式x/2^(b*n)≤A的整数);一个核心部分,用来输出z’=x’^(a/b)的值;以及一个输出控制部分,用来输出z的值,其中当x≤A时z=z’,当x>A时z=z’*2^(a*n)。
6.根据权利要求5的指数计算装置,其中输入控制部分在x>A时通过把x向下移位(b*n)个比特位来计算x’值。
7.根据权利要求5的指数计算装置,其中核心部分在一个表格中对所有可能的x’值(其中0≤x’≤A)存储x’^(a/b)的值。
8.根据权利要求5的指数计算装置,其中A值的设定使得x小于或等于A的出现频率等于或大于一个预定值。
9.一种用来对给定的输入值x计算x^(a/b)(其中a和b均为整常数)的指数计算装置,它包括一个输入控制部分,用来输出x’的值,其中当x≤A时(其中A是x的变化范围内的一个阈值)x’=x,当x>A时x’=x/2^b;一个核心部分,用来输出z’=x’^((a%b)/b)的值;一个输出控制部分,用来输出z的值,其中当x≤A时z=z’,当x>A时z=z’*2^(a%b);以及一个乘法部分,用来输出z*(x^(int(a/b)))。
10.根据权利要求9的指数计算装置,其中A值的设定使得x小于或等于A的出现频率等于或大于一个预定值。
11.一种用来对给定的输入值x计算x^(a/b)(其中a和b均为整常数)的指数计算装置,它包括一个判断部分,用来输出一个能指明x值的参数j(j是一个非负整数);一个输入控制部分,用来输出x’的值,其中当x≤A时(其中A是x的变化范围内的一个阈值)时x’=x,当x>A时x’=x/2^j;一个核心部分,用来输出z’=x^(a/b)的值;以及一个输出控制部分,用来输出z的值,其中当x≤A时z=z’,当x>A时z=z’*2^(j*a/b)。
12.根据权利要求11的指数计算装置,其中输出控制部分含有一个存储部分,用来以j作为地址存储2^(j*a/b)的值;并且当x>A时z值是通过从存储部分读出相应的2^(j*a/b)值来计算的。
13.根据权利要求11的指数计算装置,其中A=2^B(B是一个整常数);并且判断部分所确定的j值使得当x>2^b时满足关系式2^(B+(j-1))≤x<2^(B+j),当x≤2^b时有j=0。
14.一种用来对给定的输入值x计算x^(a/b)(其中a和b均为整常数)的指数计算装置,它包括一个判断部分,用来输出一个代表以二进制形式表示的x的数位数目的k值;一个输入控制部分,用来输出x’的值,其中x’值是这样得到的当(B-k)值为正时把x向上移位(B-k)个比特位,当(B-k)值为负时把x向下移位(k-B)个比特位;一个核心部分,用来输出z’=x’^(a/b)的值;以及一个输出控制部分,用来输出z=z’*(2^((k-B)*a/b))的值。
15.根据权利要求14的指数计算装置,其中输出控制部分含有一个存储部分,用来以k作为地址存储2^((k-B)*a/b)的值;并且z值是通过从存储部分读出相应的2^((k-B)*a/b)值来计算的。
16.根据权利要求14的指数计算装置,其中核心部分含有一个存储部分,用来以q最少(B-1)个低比特位作为地址存储q^(a/b)的值(其中2^(B-1)≤q<2^B,并且q是一个整数);并且z’的值是通过用x’的最少(B-1)个低比特位作为地址从存储部分读出相应的q^(a/b)值来计算的。
17.一种用来从一个含有量化码x和标度因子y的输入比特流中提取一个可变的量化码x和一个可变的标度因子y并计算x^(a/b)*2^(y/c)(其中a、b、c均为整常数)的解码装置,该装置包括一个分离部分,用来把x和y从输入比特流中分离出来;一个第一移位部分,用来在x≤2^N(其中N是一个预定阈值)时把x移位一个取决于N的比特位数,从而把x转变成具有定点格式的x1;一个第一移位部分,用来在x≤2^N(其中N是一个预定阈值)时把x移位一个取决于N的比特位数,从而把x转变成具有定点格式的x1;一个第一存储部分,用来以q作为地址对所有可能的q值(其中q是满足关系式0≤q≤2^N的整数)存储通过把q^((a-b)/b)移位一个取决于M(其中M是N*(a-b)/b的整数值)的比特位数而被转变成定点格式的H(q)值;一个第二存储部分,用来对所有可能的p值(其中0≤p<c)存储具有定点格式的G(p)=2^(p/c)的值;一个除法部分,用来计算y1,其中y1=int(y/c);一个模数计算部分,用来计算y2=y%c;一个乘法部分,用来输出通过将以下三个值相乘所得到的值;用x作为地址从第一存储部分读出的H(x)的值,用y2作为地址从第二存储部分读出的G(y2)值,和由第一移位部分转变成的x1的值;以及一个第二移位部分,用来把乘法部分的输出值移位一个取决于由除法部分得到的y1的比特位数。
18.根据权利要求17的解码装置,其中取决于N的比特位数是(D-N)(其中D是定点计算操作中所涉及的数的小数部分的有效数字位数);并且取决于y1的比特位数是(y1+(N+M))。
19.根据权利要求17的解码装置,其中M是通过把(N*(a-b))/b向上取整得到的整数。
20.根据权利要求17的解码装置,其中a=4、b=3、c=4。
21.根据权利要求17的解码装置,它还包括一个判断部分,用来在x≤2^N时输出判断结果为真,在x>2^N时输出判断结果为假;以及一个第二除法部分,用来在判断结果为真时不加改变地输出x值,还用来输出通过把x除以(2^(b*i))所得到的值,其中第一移位部分在判断结果为假时把x移位一个取决于(N+b*i)的比特位数(其中i为一个非负整数);第一存储部分对位于x变化范围内的q值存储H(q)值;并且第二移位部分在判断结果为真时把乘法部分的输出值移位一个取决于y1的比特位数,在判断结果为假时把该输出值移位一个取决于y1和a*i的比特位数。
22.根据权利要求21的解码装置,其中取决于N的比特位数是(D-N);取决于(N+b*i)的比特位数是D-(N+b*i);取决于M的比特位数是(D-M);取决于y1的比特位数是(y1+N+M);并且取决于y1和a*i的比特位数是(y1+N+M+a*i)。
23.根据权利要求21的解码装置,其中i值的确定使得x满足关系式2^(N+B(i-1))<x≤2^(N+bi)。
24.根据权利要求21的解码装置,它还包括一个判断部分,用来在x≤2^N时输出判断结果为真,在x>2^N时输出判断结果为假,还用来输出能指明x值的一个参数i,其中第一移位部分、第二除法部分和第二移位部分都根据判断部分的判断结果进行操作。
25.根据权利要求24的解码装置,其中第二移位部分在判断结果为真时把乘法部分的输出值移位一个取决于y1的比特位数,在判断结果为假时把该输出值移位一个取决于y1+(a*i)的比特位数。
26.一种用来从一个含有量化码x和标度因子y的输入比特流中提取一个可变的量化码x和一个可变的标度因子y并计算x^(a/b)*2^(y/c)(其中a、b、c均为整常数)的解码装置,该装置包括一个分离部分,用来把x和y从输入比特流中分离出来;一个判断部分,用来在x≤2^N(其中N是一个预定阈值)时输出判断结果为真,在x>2^N时输出判断结果为假,还用来输出一个能指明x值的参数j;一个第一移位部分,用来在判断结果为真时把x移位一个取决于N的比特位数,在判断结果为假时把x移位一个取决于(N+j)的比特位数,从而把x转变成具有定点格式的x1;一个第一除法部分,用来计算y1,其中y1=int(y/c);一个第二除法部分,用来输出x’的值,其中当判断结果为真时x’=x,并且x’是x/(2^j)的整数值;一个第一存储部分,用来以q作为地址对位于x’变化范围内的所有可能的q值(其中q是满足关系式0≤q≤2^N的整数)存储通过把q^((a-b)/b)移位一个取决于M的比特位数(其中M是(N*(a-b)/b)的整数值)而被转变成定点格式的H(q)的值;一个调整系数发生部分,用来对满足0≤p<c的所有可能的p值和所有可能的j值按照2^(p/c)*2^(j/b)产生定点格式的I(p,j)值;一个模数计算部分,用来计算y2=y%c;一个乘法部分,用来输出以下三个值的乘积值用x’作为地址从第一存储部分读出的H(x’)的值,对应于y2和由调整系数发生部分产生的j的I(y2,j)的值,和由第一移位部分转变而成的x1值;以及一个第二移位部分,用来在x≤2^N时把乘法部分的输出值移位一个取决于y1的比特位数,在x>2^N时把该输出值移位一个取决于y1和j的比特位数。
27.根据权利要求26的解码装置,其中调整系数发生部分含有一个第二存储部分,用来以p和j作为地址存储I(p,j)的值。
28.根据权利要求26的解码装置,其中j值的确定使得当x>2^N时满足关系式2^(N+(j-1))<x≤2^(N+j),而当x≤2^N时j=0。
29.根据权利要求26的解码装置,其中a=4、b=3、c=4。
30.一种用来从一个含有量化码x和标度因子y的输入比特流中提取一个可变的量化码x和一个可变的标度因子y并计算x^(a/b)*2^(y/c)(其中a、b、c均为整常数)的解码装置,该装置包括一个分离部分,用来把x和y从输入比特流中分离出来;一个判断部分,用来判断以二进制形式表示的x的数位数目k;一个第二除法部分,用来输出x’的值,其中x’值是这样得到的当(N-k)值为正时把x向上移位(N-k)个比特位,当(N-k)值为负时把x向下移位(k-N)个比特位;一个第一移位部分,用来把x移位一个取决于k的比特位数,从而把x转变成具有定点格式的x1;一个第一除法部分,用来计算y1,其中y1=int(y/c);一个第一存储部分,用来以q的至少(N-1)个低位(其中q是满足关系式2^(N-1)≤q<2^N的整数)作为地址存储通过把q^((a-b)/b)移位一个取决于M的比特位数(其中M是(N*(a-b)/b)的整数值)而被转变成定点格式的H(q)值;一个调整系数发生部分,用来对所有可能满足0≤p<c的p值和所有可能的k值按照2^(p/c)*2^((k-N)/b)产生具有定点格式的I(p,k)值;一个模数计算部分,用来计算y2=y%c;一个乘法部分,用来输出以下三个值的乘积值用x’的至少(N-1)个低比特位作为地址从第一存储部分读出的H(x’)值,对应于y2和由调整系数发生部分产生的k的I(y2,k)值,和由第一移位部分转变而成的x1值;以及一个第二移位部分,用来把乘法部分的输出值移位一个取决于y1、M和k的比特位数。
31.根据权利要求30的解码装置,其中调整系数发生部分含有一个第二存储部分,用来以p和k作为地址存储I(p,k)的值。
32.根据权利要求30的解码装置,其中a=4、b=3、c=4。
全文摘要
本发明的一种装置是一种用来对给定的输入值x计算x^(a/b)(其中a和b均为整常数)的指数计算装置。该装置包含:一个输入控制部分,用来输出x’的值,其中当x≤A时(其中A是x的变化范围内的一个阈值)x’=x,当x>A时x’=x/2^b;一个核心部分,用来输出z’=x’^(a/b)的值;以及一个输出控制部分,用来输出z的值,其中当x≤A时z=z’,当x>A时z=z’*2^a。
文档编号G10L19/02GK1226039SQ9910187
公开日1999年8月18日 申请日期1999年2月4日 优先权日1998年2月4日
发明者宫坂修二, 藤田刚史, 末吉雅弘, 川村明久, 松本正治, 片山崇, 阿部一任, 西尾孝祐 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1