專利名稱:指數(shù)計(jì)算裝置和解碼裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用來對(duì)給定的編碼比特流執(zhí)行一種預(yù)定計(jì)算的指數(shù)計(jì)算裝置和解碼裝置。較具體地,本發(fā)明涉及用來對(duì)含在一個(gè)已根據(jù)MPEG(活動(dòng)圖像專家組)2的聲頻編碼標(biāo)準(zhǔn)“AAC”編碼的比特流中的給定整數(shù)值x和y執(zhí)行x^(a/b)計(jì)算的一種指數(shù)計(jì)算裝置和執(zhí)行x^(a/b)*2(y/c)計(jì)算的一種解碼裝置。
通常,為了對(duì)一個(gè)給定值x計(jì)算z=x^(a/b)(其中a和b均為常數(shù)),把對(duì)應(yīng)于所有可能x值的x^(a/b)值存儲(chǔ)在一個(gè)表格中,并使該表格的地址與各相應(yīng)的x值相關(guān)聯(lián)。通過讀出存儲(chǔ)在表格中的值便可得到對(duì)應(yīng)于給定x值的z值。
在本說明書中“x的(a/b)次方”寫成“x^(a/b)”,其中符號(hào)“^”代表采用指數(shù)函數(shù),符號(hào)“/”代表采用除法函數(shù)。這里還使用了代表采用乘法函數(shù)的符號(hào)“*”。
圖27示出了一個(gè)表格,其中含有x值范圍為0≤x≤8191的x^(4/3)值。根據(jù)MPEG2的聲頻編碼標(biāo)準(zhǔn)AAC的解碼操作,需要計(jì)算對(duì)應(yīng)于0至8191范圍內(nèi)的x值的x^(4/3)值。為了對(duì)根據(jù)MPEG2的聲頻編碼標(biāo)準(zhǔn)AAC編碼的數(shù)據(jù)進(jìn)行解碼而作指數(shù)計(jì)算時(shí),若采用通常的獲得x^(a/b)的方法,則需把輸入值x當(dāng)作地址,從預(yù)先提供的如圖27所示的表格中讀出相應(yīng)的值,得到作為輸出值z(mì)的x^(4/3)值。
為了對(duì)一個(gè)編碼比特流解碼以得到所需數(shù)據(jù),必需進(jìn)行一個(gè)預(yù)定的計(jì)算處理。按MPEG2的聲頻編碼標(biāo)準(zhǔn)AAC編碼的比特流含有一個(gè)量化碼(quantization code)“x”和一個(gè)標(biāo)度因子(scalingfactor)“y”。量化碼“x”和標(biāo)度因子“y”都是整數(shù)。對(duì)于MPEG2的AAC的情況,解碼裝置需對(duì)給定的x和y值計(jì)算x^(a/b)×2^(y/c)(其中a、b、c均為常數(shù))。MPEG2的聲頻編碼標(biāo)準(zhǔn)AAC刊登于IS0/IECl3818-7:1997,pp.57-59。
通常,對(duì)給定x、y值計(jì)算x^(a/b)*2^(y/c)的操作用一個(gè)定點(diǎn)格式的DSP(數(shù)字信號(hào)處理器)按下述方法進(jìn)行。
圖28示出一個(gè)示例性的32比特(32位)定點(diǎn)格式。參見圖28,其中比特0是最低位比特,比特31是最高位比特,小數(shù)點(diǎn)固定在比特30和比特29之間。具體地說,比特30代表一個(gè)值的整數(shù)部分,而比特29至比特0則代表該值的小數(shù)部分。比特31是符號(hào)位,表明該值是正還是負(fù)。這樣一種帶有固定小數(shù)點(diǎn)的數(shù)字表示叫做“定點(diǎn)格式”。
例如,在圖28所示的32位定點(diǎn)格式中,一個(gè)值“f”可以在一2≤f<2的范圍內(nèi)變動(dòng)。因此,為了用一個(gè)像DSP這樣的定點(diǎn)格式處理單元來進(jìn)行計(jì)算,在進(jìn)行所需計(jì)算之前應(yīng)把計(jì)算所涉及到的每一個(gè)值都調(diào)節(jié)到±2.0的范圍之內(nèi)。
在MPEG2的聲頻編碼標(biāo)準(zhǔn)AAC中,x值可在0≤x<8192范圍內(nèi)變化,而y值可在-100≤y<156范圍內(nèi)變化。對(duì)于這樣的x、y范圍考慮下列表達(dá)式(1)的計(jì)算x^(4/3)*2^(y/4)(1)根據(jù)以往技術(shù),可以用一個(gè)定點(diǎn)格式處理單元按如下方法來計(jì)算表達(dá)式(1)。首先把表達(dá)式(1)轉(zhuǎn)變成如下的表達(dá)式(2)x^(4/3)*2^((y%4)/4)*2^int(y/4)(2)在表達(dá)式(2)中,“(y%4)”表示比值y/4的余數(shù),“int(y/4)”表示比值y/4的商(整數(shù))。計(jì)算表達(dá)式(2)時(shí)首先計(jì)算x^(4/3)。典型地,這一計(jì)算利用一個(gè)ROM(只讀存儲(chǔ)器)表格進(jìn)行。具體地說,預(yù)先計(jì)算各個(gè)x值的x^(4/3)值,并存儲(chǔ)在一個(gè)表格中。然后通過把一個(gè)給定的x值作為表格的地址來查閱該ROM表格而得到對(duì)應(yīng)于該x值的x^(4/3)值。
表達(dá)式(1)或(2)的計(jì)算是假定使用了一個(gè)定點(diǎn)格式的處理單元。具體地說,不同地x^(4/3)值是預(yù)先經(jīng)歸一化后存儲(chǔ)在表格中的,其最大值已被歸一化為不超過1.0的值。
圖29示出用于普通解碼裝置的一個(gè)第一表格的內(nèi)容。該表格在對(duì)應(yīng)于各個(gè)x值的地址處含有對(duì)應(yīng)于0≤x<8192范圍的f(x)值。各f(x)值是這樣得以的首先對(duì)各個(gè)x值計(jì)算x^(4/3),然后把各計(jì)算值除以2^18以得到均不超過1.0的各個(gè)歸一化值。
對(duì)于表達(dá)式(2)的計(jì)算,接著將計(jì)算2^((y%4)/4)。典型地,2^((y%4)/4)也是用一個(gè)ROM表格計(jì)算的。具體地說,預(yù)先對(duì)各個(gè)整數(shù)(y%4)計(jì)算相應(yīng)的2^((y%4)/4)值并存儲(chǔ)在一個(gè)表格中。然后用一個(gè)整數(shù)(y%4)作為地址去查閱該表格以得到相應(yīng)的2^((y%4)/4)值。
圖30示出用于普通解碼裝置的一個(gè)第二表格的內(nèi)容。該第二表格含有對(duì)應(yīng)于范圍0至3的地址值(y%4)的g(y)值。g(y)值是通過使2^((g%4)/4)歸一化而得到的均不超過2.0的值。
有了這樣的表格之后,便可得到表達(dá)式(2)的值。首先用輸入整數(shù)x作為地址查閱圖29所示的第一表格,得到x^(4/3)的歸一化f(x)值。然后對(duì)給定的整數(shù)y計(jì)算(y%4)。接著用計(jì)算值(y%4)作為地址從圖30所示的第二表格得到g(y)=2^((y%4)/4)值。其后用一個(gè)乘法器計(jì)算f(x)*g(y),得到乘積值f(x)*g(y)=h(x,y)。由于得到的f(x)值在±1范圍內(nèi)而g(y)值在±2范圍內(nèi),所以乘積h(x,y)的值必定在±2范圍內(nèi)。
然后把h(x,y)乘上2^int(y/4),便得到了表達(dá)式(2)的計(jì)算結(jié)果乘積值i(x,y)。該乘法運(yùn)算可以通過比特移位操作完成。在比特移位操作中,假定還在最后計(jì)算結(jié)果超出了±2范圍時(shí)進(jìn)行一個(gè)限制操作(所謂“剪截(clipping)操作”)。這樣,在以往技術(shù)中i(x,y)=x^(4/3)*2^(y/4)的計(jì)算是用大容量表格來進(jìn)行的。
采用上述通常方法來得到x^(a/b)值需要為含有各個(gè)不同x^(a/b)值的表格提供大的存儲(chǔ)區(qū)域。例如,假定存儲(chǔ)的x^(a/b)值是32比特定點(diǎn)值,則圖27所示表格需要32Kbytes(千字節(jié))的存儲(chǔ)區(qū)。這樣,當(dāng)x有很大的變化范圍時(shí),必須為所需的大存儲(chǔ)區(qū)而使用大規(guī)模的硬件。
此外,在計(jì)算x^(a/b)*2^(y/c)的通常方法中,計(jì)算值f(x)的有效數(shù)字?jǐn)?shù)目對(duì)于圖29中上面部分的比較小的輸入整數(shù)x來說是不利地太少了。例如,對(duì)應(yīng)于地址x=2的f(x)值只利用了可供利用的32比特中的低14位比特。所以,用這種表格進(jìn)行的計(jì)算結(jié)果精度很差。而且,通常的計(jì)算方法使用了很大的x范圍(即0至8191),從而需要大至8191*32比特的存儲(chǔ)區(qū)域。結(jié)果,通常的解碼裝置需要一個(gè)容量址分大的表格。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種用來對(duì)一個(gè)給定輸入值x計(jì)算x^(a/b)(其中a和b均為整常數(shù))的指數(shù)計(jì)算裝置。該裝置包括一個(gè)輸入控制部分,用來輸出x’值,其中當(dāng)x≤A(其中A是一個(gè)位于x變化范圍內(nèi)的閾值)時(shí)x’=x,當(dāng)x>A時(shí),x’=x/2^b;一個(gè)核心部分,用來輸出z’=x’^(a/b)的值;以及一個(gè)輸出控制部分,用來輸出z值,其中當(dāng)x≤A時(shí)z=z’,當(dāng)x>A時(shí)z=z’*2^a。
在本發(fā)明的一個(gè)實(shí)施例中,輸入控制裝置通過在x>A時(shí)把x向下移位b個(gè)比特位(b位)來計(jì)算x’值。
在本發(fā)明的另一個(gè)實(shí)施例中,核心部分把對(duì)應(yīng)于所有可能x’值(其中0≤x’≤A)的x’^(a/b)值存儲(chǔ)在一個(gè)表格中。
在本發(fā)明的又一個(gè)實(shí)施例中,A值的設(shè)定使得x小于或等于A的頻率等于或大于一個(gè)預(yù)定值。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種用來對(duì)一個(gè)給定輸入值x計(jì)算x^(a/b)(其中a和b均為整常數(shù))的指數(shù)計(jì)算裝置。該裝置包括一個(gè)輸入控制部分,用來輸出x’值,其中當(dāng)x≤A(其中A是位于x變化范圍內(nèi)的一個(gè)閾值)時(shí)x’=x,當(dāng)x>A時(shí)x’=x/2^(b*n)(其中n是一個(gè)滿足關(guān)系式x/2^(b*n)≤A的整數(shù));一個(gè)核心部分,用來輸出z’=x’^(a/b)的值;以及一個(gè)輸出控制部分,用來輸出z值,其中當(dāng)x≤A時(shí)z=z’,當(dāng)x>A時(shí)z=z’*2^(a*n)。
在本發(fā)明的一個(gè)實(shí)施例中,輸入控制部分通過在x>A時(shí)把x向下移位(b*n)位來計(jì)算x’值。
在本發(fā)明的另一個(gè)實(shí)施例中,核心部分把對(duì)應(yīng)于所有可能x’值(其中0≤x’≤A)的x’^(a/b)值存儲(chǔ)在一個(gè)表格中。
在本發(fā)明的又一個(gè)實(shí)施例中,A值的設(shè)定使得x小于或等于A的頻率等于或大于一個(gè)預(yù)定值。
根據(jù)本發(fā)明的又一個(gè)方面,提供了一種用來對(duì)一個(gè)給定輸入值x計(jì)算x^(a/b)(其中a和b均為整常數(shù))的指數(shù)計(jì)算裝置。該裝置包括一個(gè)輸入控制部分,用來輸出x’值,其中當(dāng)x≤A時(shí)(其中A是一個(gè)位于x變化范圍內(nèi)的閾值)x’=x,當(dāng)x>A時(shí)x’=x/2^b;一個(gè)核心部分,用來輸出z’=x’^((a%b)/b)的值;一個(gè)輸出控制部分,用來輸出z值,其中當(dāng)x≤A時(shí)z=z’,當(dāng)x>A時(shí)z=z’*2^(a/%b);以及一個(gè)乘法部分,用來輸出z*(x^(int(a/b)))。
在本發(fā)明的一個(gè)實(shí)施例中,A值的設(shè)定使得x小于或等于A的頻率等于或大于一個(gè)預(yù)定值。
根據(jù)本發(fā)明的又一個(gè)方面,提供了一種用來對(duì)一個(gè)給定輸入值x計(jì)算x^(a/b)(其中a和b均為整常數(shù))的指數(shù)計(jì)算裝置。該裝置包括一個(gè)判斷部分,用來輸出一個(gè)能指明x值的參數(shù)j(其中j是一個(gè)非負(fù)整烽);一個(gè)輸入控制部分,用來輸出x’值,其中當(dāng)x≤A(其中A是一個(gè)位于x變化范圍內(nèi)的閾值)時(shí)x’=x,當(dāng)x>A時(shí)x’=x/2^j;一個(gè)核心部分,用來輸出z’=x’^(a/b)的值;以及一個(gè)輸出控制部分,用來輸出z值,其中當(dāng)x≤A時(shí)z=z’,當(dāng)x>A時(shí)z=z’*2^(j*a/b)。
在本發(fā)明的一個(gè)實(shí)施例中,輸出控制部分含有一個(gè)存儲(chǔ)部分,用來以j為地址存儲(chǔ)2^(j*a/b)值;并且當(dāng)x>A時(shí)z值是通過從存儲(chǔ)部分讀出相應(yīng)的2^(j*a/b)值來計(jì)算的。
在本發(fā)明的另一個(gè)實(shí)施例中,A=2^B(其中B是一個(gè)整常數(shù));并且判斷部分確定的j值使得當(dāng)x>2^b時(shí)有2^(B+(j-1))≤x<2^(B+j),當(dāng)x≤2^b時(shí)有j=0。
根據(jù)本發(fā)明的又一個(gè)方面,提供了一種用來對(duì)一個(gè)給定輸入值x計(jì)算x^(a/b)(其中a和b均為整常數(shù))的指數(shù)計(jì)算裝置。該裝置包括一個(gè)判斷部分,用來輸出一個(gè)k值,該k值代表以二進(jìn)制形式表示的x值的數(shù)位數(shù)目;一個(gè)輸入控制部分,用來輸出x’值,其中x’值是這樣得到的當(dāng)(B-k)值為正時(shí)把x向上移位(B-k)位,當(dāng)(B-k)值為負(fù)時(shí)把x向下移位(k-B)位;一個(gè)核心部分,用來輸出z’=x’^(a/b)的值;以及一個(gè)輸出控制部分,用來輸出z=z’*(2^((k-B)*a/b))的值。
在本發(fā)明的一個(gè)實(shí)施例中,輸出控制部分含有一個(gè)存儲(chǔ)部分,用來以k為地址存儲(chǔ)2^((k-B)*a/b)值;并且z值是通過從存儲(chǔ)部分讀出2^((k-B)*a/b)的相應(yīng)值來計(jì)算的。
在本發(fā)明的另一個(gè)實(shí)施例中,核心部分含有一個(gè)存儲(chǔ)部分,用來以q的至少(B一1)個(gè)最低位作為地址存儲(chǔ)q^(a/b)值(其中2^(B-1)≤q<2^B,q是一個(gè)整數(shù));并且z’值是通過以x’的至少(B-1)個(gè)最低位作為地址從存儲(chǔ)部分讀出相應(yīng)的q^(a/b)值來計(jì)算的。
根據(jù)本發(fā)明的又一個(gè)方面,提供了一種用來從一個(gè)含有量化碼x和標(biāo)度因子y的輸入比特流中提取一個(gè)可變的量化碼x和一個(gè)可變的標(biāo)度因子y,并計(jì)算x^(a/b)*2^(y/c)(其中a、b、c均為整常數(shù))的解碼裝置。該裝置包括一個(gè)分離部分,用來把x和y從輸入比特流中分離出來;一個(gè)第一移位部分,用來在x≤2^N(其中N是一個(gè)預(yù)定閾值)時(shí)把x移位由N決定的位數(shù),使x轉(zhuǎn)變成具有定點(diǎn)格式的x1;一個(gè)第一存儲(chǔ)部分,用來以q為地址對(duì)所有可能的q值(其中q是一個(gè)滿足0≤q≤2^N的整數(shù))存儲(chǔ)H(q)值,其中H(q)是通過把q^((a-b)/b)移位由M決定的位數(shù)(其中M是(N*(a-b)/b)的整數(shù)值)而轉(zhuǎn)變成為定點(diǎn)格式的);一個(gè)第二存儲(chǔ)部分,用來對(duì)所有可能的P值(其中0≤P<c)存儲(chǔ)具有定點(diǎn)格式的G(P)=2^(p/c)的值;一個(gè)除法部分,用來計(jì)算y1=int(y/c);一個(gè)模數(shù)計(jì)算部分,用來計(jì)算y2=y%c;一個(gè)乘法部分,用來輸出以下三個(gè)值的乘積用x作為地址從第一存儲(chǔ)部分讀出的H(x)值,用y2作為地址從第二存儲(chǔ)部分讀出的G(y2)值,和由第一移位部分轉(zhuǎn)變得到的x1值;以及一個(gè)第二移位部分,用來把乘法部分的輸出值移位由除法部分得到的y1決定的位數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,由N決定的位數(shù)是(D-N)(其中D是在定點(diǎn)計(jì)算操作中涉及到的數(shù)值的小數(shù)部分的有效位數(shù));并且由y1決定的位數(shù)是(y1+(N+M))。
在本發(fā)明的另一個(gè)實(shí)施例中,M是一個(gè)對(duì)(N*(a-b))/b)進(jìn)行向上取整所得到的整數(shù)。
在本發(fā)明的又一個(gè)實(shí)施例中,a=4、b=3、c=4。
在本發(fā)明的又一個(gè)實(shí)施例中,該裝置還包括一個(gè)判斷部分,用來在x≤2^N時(shí)輸出判斷結(jié)果為真,在x>2^N時(shí)輸出判斷結(jié)果為假;以及一個(gè)第二除法部分,用來在判斷結(jié)果為真時(shí)不加改變地輸出x值,在判斷結(jié)果為假時(shí)輸出x除以(z^(b*i))的值。當(dāng)判斷結(jié)果為假時(shí),第一移位部分把x移位由(N+b*i)決定的位數(shù),其中i是一個(gè)非負(fù)整數(shù)。第一存儲(chǔ)部分對(duì)位于x變化范圍內(nèi)的q值存儲(chǔ)H(q)值。第二移位部分在判斷結(jié)果為真時(shí)把乘法部分的輸出值移位由y1決定的位數(shù),在判斷結(jié)果為假時(shí)移位由y1和a*i決定的位數(shù)。
在本發(fā)明的又一個(gè)實(shí)施例中,由N決定的位數(shù)是(D-N);由(N+b*i)決定的位數(shù)是D-(N+b*i);由M決定的位數(shù)是(D-M);由y1決定的位數(shù)是(y1+N+M);由y1和a*i決定的位數(shù)是(y1+N+M+a*i)。
在本發(fā)明的又一個(gè)實(shí)施例中,i值的確定使得x滿足2^(N+b(i-1))<x≤2^(N+bi)。
在本發(fā)明的又一個(gè)實(shí)施例中,該裝置還包括一個(gè)判斷部分,用來在x≤2^N時(shí)輸出判斷結(jié)果為真,在x>2^N時(shí)輸出判斷結(jié)果為假,還輸出一個(gè)能指明x值的參數(shù)i。第一移位部分、第二除法部分和第二移位部分根據(jù)該判斷部分的判斷結(jié)果進(jìn)行操作。
在本發(fā)明的又一個(gè)實(shí)施例中,第二移位部分在確定結(jié)果為正確時(shí)把乘法部分的輸出值移位由y1決定的位數(shù),在確定結(jié)果為錯(cuò)誤時(shí)移位由y1+(a*i)決定的位數(shù)。
根據(jù)本發(fā)明的又一個(gè)方面,提供了一種用來從一個(gè)含有量化碼x和標(biāo)度因子y的輸入比特流中提取一個(gè)可變的量化碼x和一個(gè)可變的標(biāo)度因子y,并計(jì)算x^(a/b)*2^(y/c)(其中a、b、c均為整常數(shù))的解碼裝置。該裝置包括一個(gè)分離部分,用來從輸入比特流中分離出x和y;一個(gè)判斷部分,用來在x≤2^N(其中N是一個(gè)預(yù)定閾值)時(shí)輸出判斷結(jié)果為真,在x>2^N時(shí)輸出判斷結(jié)果為假,還用來輸出一個(gè)能指明x值的參數(shù)j;一個(gè)第一移位部分,用來在判斷結(jié)果為真時(shí)把x移位由N決定的位數(shù),在判斷結(jié)果為假時(shí)移位由(N+j)決定的位數(shù),使x轉(zhuǎn)變成具有定點(diǎn)格式的x1;一個(gè)第一除法部分,用來計(jì)算y1=int(y/c);一個(gè)第二除法部分,用來輸出x’值,其中當(dāng)判斷結(jié)果為真時(shí)x’=x,x’是(x/(2^j))的整數(shù)值;一個(gè)第一存儲(chǔ)部分,用來以q作為地址對(duì)位于x’變化范圍內(nèi)的所有可能的q值存儲(chǔ)H(q)值,其中q是滿足0≤q≤2^N的整數(shù),H(q)已通過把q^((a-b)/b)移位由M(M是(N*(a-b))/b)的整數(shù)值)決定的位數(shù)而被轉(zhuǎn)換成定點(diǎn)格式;一個(gè)調(diào)整系數(shù)發(fā)生部分,用來對(duì)滿足0≤p<c的所有可能p值和所有可能j值根據(jù)2^(p/c)*2^(j/b)產(chǎn)生定點(diǎn)格式值I(p,j);一個(gè)模數(shù)計(jì)算部分,用來計(jì)算y2=y%c;一個(gè)乘法部分,用來輸出以下三個(gè)值的乘積用x’作為地址從第一存儲(chǔ)部分讀出的H(x’)值,對(duì)應(yīng)于y2和由調(diào)整系數(shù)發(fā)生部分產(chǎn)生的j值的I(y2,j)值;和由第一移位部分轉(zhuǎn)變得到的x1值;以及一個(gè)第二移位部分,用來在x)≤2^N時(shí)把乘法部分的輸出值移位由y1決定的位數(shù),在x>2^N時(shí)移位由y1和j決定的位數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,調(diào)整系數(shù)發(fā)生部分含有一個(gè)第二存儲(chǔ)部分,用來以p和j作為地址存儲(chǔ)I(p,j)值。
在本發(fā)明的另一個(gè)實(shí)施例中,j值的確定使得在x>2^N時(shí)能滿足2^(N+(j-1))<x≤2^(N+j),而在x<2^N時(shí)j=0。
在本發(fā)明的又一個(gè)實(shí)施例中,a=4、b=3、c=4。
根據(jù)本發(fā)明的又一個(gè)方面提供了一種用來從一個(gè)含有量化碼x和標(biāo)度因子y的輸入比特流中提取一個(gè)可變的量化碼x和一個(gè)可變的標(biāo)度因子y,并計(jì)算x^(a/b)*2^(y/c)(其中a、b、c均為整常數(shù))的解碼裝置。該裝置包括一個(gè)分離部分,用來把x和y從輸入比特流中分離出來;一個(gè)判斷部分,用來判斷用二進(jìn)制形式表示的x值的位數(shù)k;一個(gè)第二除法部分,用來輸出x’值,其中x’值是這樣得到的當(dāng)(N-k)為正時(shí)把x向上移位(N-k)位,當(dāng)(N-k)為負(fù)時(shí)把x向下移痊(k-N)位;一個(gè)第一移位部分,用來把x移位由k決定的位數(shù),以使x轉(zhuǎn)變成具有定點(diǎn)格式的x1;一個(gè)第一除法部分,用來計(jì)算y1=int(y/c);一個(gè)第一存儲(chǔ)部分,用來以q的最少(N-1)個(gè)低比特位作為地址存儲(chǔ)H(q)值,其中q是滿足2^(N-1)≤q<2^N的整數(shù),H(q)已通過把q^((a-b)/b)移位由M(其中M是(N*(a-b))/b的整數(shù)值)決定的位數(shù)而被轉(zhuǎn)變成定點(diǎn)格式;一個(gè)調(diào)整系數(shù)發(fā)生部分,用來對(duì)所有滿足0≤p<c的p值和所有可能的k值根據(jù)2^(p/c)*2^((k-N)/b)產(chǎn)生具有定點(diǎn)格式的I(p,k)值;一個(gè)模數(shù)計(jì)算部分,用來計(jì)算y2=y%c;一個(gè)乘法部分,用來輸出以下三個(gè)值的乘積用x’的最少(N-1)個(gè)低位作為地址從第一存儲(chǔ)部分讀出的H(x’)值,對(duì)應(yīng)于y2和由調(diào)整系數(shù)發(fā)生部分產(chǎn)生的k值的I(y2,j)值;和由第一移位部分轉(zhuǎn)變成的x1值;以及一個(gè)第二移位部分,用來把乘法部分的輸出值移位由y1、M和k決定的位數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,調(diào)整系數(shù)發(fā)生部分含有一個(gè)第二存儲(chǔ)部分,用來以p和k作為地址存儲(chǔ)I(p,k)值。
在本發(fā)明的另一個(gè)實(shí)施例中,a=4、b=3、c=4。
這樣,這里所說明的本發(fā)明使得以下優(yōu)點(diǎn)成為可能(1)通過減小用于表格的存儲(chǔ)區(qū)域,減小一個(gè)能對(duì)給定的x值計(jì)算x^(a/b)的指數(shù)計(jì)算裝置的硬件規(guī)模;(2)實(shí)現(xiàn)這樣一種解碼裝置,即使當(dāng)整數(shù)x遠(yuǎn)小于其變化范圍中的最大值時(shí)它也能利用一個(gè)定點(diǎn)格式的處理單元以高精度計(jì)算x^(a/b)*2^(y/c);(3)實(shí)現(xiàn)這樣一種解碼裝置,它只含有僅對(duì)應(yīng)于比較小的x值的表格,但即使對(duì)大的x值它也能利用該小容量表格來計(jì)算x^(a/b)*2^(y/c);以及,(4)實(shí)現(xiàn)這樣一種計(jì)算方法,它能利用一個(gè)小容量表格通過簡單的二進(jìn)制移位操作來進(jìn)行涉及到大x值的計(jì)算,從而實(shí)現(xiàn)一種能對(duì)任何給定的x、y值快速計(jì)算x^(a/b)*2^(y/c)的解碼裝置。
熟悉本技術(shù)領(lǐng)域的人們?cè)陂喿x和理解了下面參考附圖所作的詳細(xì)說明之后,本發(fā)明的這些優(yōu)點(diǎn)和其他優(yōu)點(diǎn)將變得明顯。
圖1是說明根據(jù)本發(fā)明例1的指數(shù)計(jì)算裝置100的結(jié)構(gòu)的方框圖;圖2是說明指數(shù)計(jì)算裝置100的信號(hào)處理方法的流程圖;圖3示出指數(shù)計(jì)算裝置100的核心部分11A的ROM表格1的內(nèi)容;圖4是說明指數(shù)計(jì)算裝置100的另一個(gè)核心部分11B的信號(hào)處理方法流程圖;圖5示出指數(shù)計(jì)算裝置100的核心部分11B的ROM表格2的內(nèi)容;圖6是說明根據(jù)本發(fā)明例2的指數(shù)計(jì)算裝置200的結(jié)構(gòu)的方框圖;圖7是說明指數(shù)計(jì)算裝置200的信號(hào)處理方法的流程圖。
圖8示出指數(shù)計(jì)算裝置200的核心部分21的ROM表格3的內(nèi)容;圖9是說明根據(jù)本發(fā)明例3的指數(shù)計(jì)算裝置300的結(jié)構(gòu)的方框圖;圖10是說明指數(shù)計(jì)算裝置300的信號(hào)處理方法的流程圖;
圖11示出一個(gè)用來在指數(shù)計(jì)算裝置300的輸出控制部分32中提供2^(j/3)值的表格;圖12是說明根據(jù)本發(fā)明例4的指數(shù)計(jì)算裝置400的結(jié)構(gòu)的方框圖;圖13是說明指數(shù)計(jì)算裝置400的信號(hào)處理方法的流程圖;圖14示出指數(shù)計(jì)算裝置400的核心部分41的ROM表格4的內(nèi)容;圖15示出一個(gè)用來在指數(shù)計(jì)算裝置400的輸出控制部分42中提供2^((k-B)/3)值的表格;圖16是說明根據(jù)本發(fā)明例5的解碼裝置500的結(jié)構(gòu)的方框圖;圖17示出解碼裝置500的第一存儲(chǔ)部分52的內(nèi)容;圖18示出解碼裝置500的第二存儲(chǔ)部分53和解碼裝置600的第二存儲(chǔ)部分64的內(nèi)容;圖19是說明根據(jù)本發(fā)明例6的解碼裝置600的結(jié)構(gòu)的方框圖;圖20示出解碼裝置600的第一存儲(chǔ)部分63和解碼裝置700的第一存儲(chǔ)部分73的內(nèi)容;圖21說明一種把一個(gè)整數(shù)值轉(zhuǎn)換成一個(gè)定點(diǎn)格式值的方法;圖22是說明根據(jù)本發(fā)明例7的解碼裝置700的結(jié)構(gòu)的方框圖;圖23示出解碼裝置700的調(diào)整系數(shù)發(fā)生部分74的內(nèi)容;圖24說明根據(jù)本發(fā)明例8的解碼裝置800的結(jié)構(gòu)的方框圖;圖25示出解碼裝置800的調(diào)整系數(shù)發(fā)生部分84的內(nèi)容;圖26示出解碼裝置800的第一存儲(chǔ)部分83的內(nèi)容;圖27示出一個(gè)設(shè)置在通常指數(shù)計(jì)算裝置中的對(duì)應(yīng)于0≤x≤8191的x^(4/3)表格;圖28示出一種示例性的定點(diǎn)格式;圖29示出通常解碼裝置所使用的第一表格的內(nèi)容;圖30示出通常解碼裝置所使用的第二表格的內(nèi)容。
首先將說明本發(fā)明的原理。本發(fā)明的指數(shù)計(jì)算裝置只需要這樣一個(gè)表格,它含有對(duì)應(yīng)于小于或等于一個(gè)預(yù)定值A(chǔ)的輸入值x的x^(a/b)值,但仍能得到任何輸入值x下的x^(a/b)值。本發(fā)明不需要一個(gè)大表格來存儲(chǔ)對(duì)應(yīng)于大于A的輸入值x的x^(a/b)值,從而所需的存儲(chǔ)區(qū)域要比通常指數(shù)計(jì)算裝置所需的小得多,后者需要一個(gè)大表格來存儲(chǔ)對(duì)應(yīng)于所有可能的輸入值x的x^(a/b)值。
現(xiàn)在將用算術(shù)表達(dá)式來說明本發(fā)明指數(shù)計(jì)算裝置的操作基本原理。假定對(duì)指數(shù)計(jì)算裝置的輸入值是x,要得到的值是z=x^(a/b),其中輸入值x例如代表解碼聲頻數(shù)據(jù)時(shí)所用信號(hào)的振幅,A代表x變化范圍中的一個(gè)閾值。
當(dāng)x≤A時(shí),對(duì)應(yīng)此輸入值x的x^(a/b)已列在表格中,所以可以容易地從該表格得到或提取到x^(a/b)值。
當(dāng)x>A時(shí),首先把x除以一個(gè)預(yù)定值以得到x’且使x’≤A。然后從表格中讀出x’^(a/b)值,再乘以一個(gè)預(yù)定值而得到對(duì)應(yīng)于給定值x的x^(a/b)值。這樣就能得到對(duì)于任何給定值x的x^(a/b)值。例如,若a=4、b=3,并且x的范圍為8*A≥x>A,則首先由x’=x/8得到x’。然后,從表格中讀出對(duì)應(yīng)于該x’值的相應(yīng)值,由此得到z’。由于z’=(x/8)^(4/3),所以z=x^(4/3)可以這樣得到z=z’*(8^(4/3))=z’*16。
例1現(xiàn)在將參考
根據(jù)本發(fā)明例1的指數(shù)計(jì)算裝置。本例的指數(shù)計(jì)算裝置執(zhí)行指數(shù)計(jì)算x^(4/3)。在本例中,輸入值x的范圍是0至8191。指數(shù)值x^(4/3)和輸入值x的范圍都符合MPEG2的聲頻AAC標(biāo)準(zhǔn)(見ISO/IEC 13818-7:1997,P57)。
圖1是說明根據(jù)本發(fā)明例1的指數(shù)計(jì)算裝置100的結(jié)構(gòu)的方框圖。指數(shù)計(jì)算裝置100包含一個(gè)輸入控制部分10,一個(gè)核心部分11、和一個(gè)輸出控制部分12。
圖2是說明由指數(shù)計(jì)算裝置100所執(zhí)行的信號(hào)處理的流程圖,其中分別示出了由輸入控制部分10、核心部分11、和輸出控制部分12所執(zhí)行的各個(gè)處理過程。參見圖2,現(xiàn)在將詳細(xì)說明指數(shù)計(jì)算裝置100的各個(gè)部件。
輸入控制部分10判斷輸入值x是否小于或等于一個(gè)閾值A(chǔ)(本例中例如為1023)。如果輸入值x小于或等于1023,則輸入控制部分10將不加改變地把x值作為x’提供給核心部分11。如果輸入值x大于1023,則輸入控制部分10將把x除以2^3所得到的值作為x’提供給核心部分11。
核心部分11提供對(duì)應(yīng)于x’(它的范圍是0至1023)的x’^(4/3)值。圖2中的核心部分11是核心部分11的一個(gè)例子,下面將把它稱作“核心部分11A”。核心部分11A含有一個(gè)ROM表格1(z’=ROMTABLE1[x’])。核心部分11A把從ROM表格1讀出的對(duì)應(yīng)于x’值的值作為z’輸出。
圖3示出核心部分11A的ROM表格1的內(nèi)容。ROM表格1含有對(duì)位于0至1023范圍內(nèi)的x’值計(jì)算出來的x’^(4/3)值。
輸出控制部分12在輸入值x≤1023時(shí)把核心部分11A的輸出值z(mì)’不加改變地作為z值提供,在x>1023時(shí)把核心部分11A的輸出值z(mì)’乘上2^4后得到的值作為z值提供。
現(xiàn)在將說明具有這種結(jié)構(gòu)的指數(shù)計(jì)算裝置100的操作。首先,步驟S10判斷給定值x是否小于或等于1023。如果x≤1023,則處理進(jìn)入步驟S11,在那里不加改變地把x值作為x’提供給核心部分11A。如果判斷出x>1023,則進(jìn)入步驟S12,把通過使x除以2^3所得到的x’提供給核心部分11A。x除以2^3的操作例如可以這樣進(jìn)行把x向下移位3位,或者先把x加上4,再把結(jié)果值下移3位以完成“0舍1入”的舍入處理,使·0被舍去而·1被進(jìn)位。
接著在步驟S13中,核心部分11A從如圖3所示的ROM表格1中讀出對(duì)應(yīng)于由輸入控制部分10所提供的x’值的x’^(4/3)值。
圖4是說明由用于指數(shù)計(jì)算裝置100的另一種示例性核心部分11B所執(zhí)行的信號(hào)處理過程的流程圖。在本發(fā)明中,分別由圖2和4所示的核心部分11A和11B可以互換使用。核心部分11B在一個(gè)ROM表格2中存儲(chǔ)了對(duì)應(yīng)于0至閾值A(chǔ)范圍內(nèi)的x’值的x’^(L/b)值,其中L=a/m(其中m為一正常數(shù))。核心部分11B求出來自ROM表格2的z’的m次方,然后把結(jié)果作為新的z’輸出。
圖5示出核心部分11B的ROM表格2的內(nèi)容。核心部分11B利用的ROM表格2(z’=ROMTABLE2[x’])對(duì)0至1023范圍內(nèi)的x’值存儲(chǔ)了x’^(L/b)值,其中m=4,L=1(即x’^(1/3)的值)。參見圖4,在步驟S17,從ROM表格2讀出z’,然后在步驟S18,求出z’的4次方,由此得到x^(4/3)值。這種在核心部分11B中所需的附加指數(shù)計(jì)算可以容易地用一個(gè)DSP乘法器處理,由此保持了ROM表格的小容量。
回到圖2,在步驟S14中,輸出控制部分12判斷輸入值x是否小于或等于1023。如果x≤1023,則處理進(jìn)入步驟S15,在那里不加改進(jìn)地輸出來自核心部分11的輸出值。如果步驟S14判斷出輸入值x>1023,則處理進(jìn)入步驟S16,在那里輸出通過把來自核心部分11的輸出值乘以2^4所得到的值。
如上所述,本發(fā)明不需要提供對(duì)應(yīng)于所有可能期望的x值(例如本例中為0至8191)的x^(a/b)值,只需要提供對(duì)應(yīng)于小于或等于預(yù)定閾值A(chǔ)=1023的輸入值x的x^(a/b)值。用這種方法也可以近似地計(jì)算對(duì)應(yīng)于大于A的輸入值x的x^(a/b)值。于是,有可能用小規(guī)模的硬件實(shí)現(xiàn)指數(shù)計(jì)算。
這里把1023選用閾值A(chǔ)的原因如下。根據(jù)MPEG2的聲頻AAC標(biāo)準(zhǔn),x^(4/3)的輸入值x可在0至8191范圍內(nèi)變化。然而實(shí)際中在大多數(shù)情形下,涉及到的值位在0至1023范圍內(nèi)。因此,對(duì)于0至1023范圍內(nèi)的x,應(yīng)該精確地計(jì)算x^(4/3)以免損害音質(zhì)。然而對(duì)于等于1024或更大的x,由于x很少取這樣大的值,所以即使計(jì)算精度不如對(duì)0至1023范圍內(nèi)的x那么高,也不會(huì)嚴(yán)重?fù)p害音質(zhì)。于是對(duì)于大于1023的x可以根據(jù)本例方法進(jìn)行近似計(jì)算。
在0至1023范圍內(nèi)的各個(gè)值中,在大多數(shù)情形下實(shí)際計(jì)算涉及到的值的范圍是0至255。所以可以把統(tǒng)計(jì)閾值A(chǔ)設(shè)定為255。本發(fā)明的下一個(gè)例子將討論一個(gè)把統(tǒng)計(jì)閾值設(shè)為255的例子。
例2現(xiàn)在將參考
本發(fā)明的例2。本例提供一種用來獲得作為x^(a/b)的范例的x^(4/3)值的指數(shù)計(jì)算裝置。本例的指數(shù)計(jì)算裝置的特征在于,它通過執(zhí)行對(duì)a/b的整數(shù)部分和小數(shù)部分(其中a和b均為整數(shù),且a>b)的兩個(gè)指數(shù)計(jì)算來完成指數(shù)計(jì)算x^(a/b)。因此對(duì)a/b整數(shù)部分的指數(shù)計(jì)算可以表示成x^(int(a/b)),對(duì)a/b小數(shù)部分的指數(shù)計(jì)算可以表示成x^((a%b)/b)。這里所用的符號(hào)“int()”代表向下取整,這時(shí)一個(gè)數(shù)值的任何小數(shù)部分都將被截去,符號(hào)“%”代表用來取得一個(gè)除法的余數(shù)(整數(shù))的模數(shù)操作。
與例1相同,輸入值x的范圍是0至8191,符合MPEG2的聲頻AAC標(biāo)準(zhǔn)(見ISO/IEC13818-7:1997,p.57)。
圖6是說明根據(jù)本發(fā)明例2的指數(shù)計(jì)算裝置200的結(jié)構(gòu)的方框圖。指數(shù)計(jì)算裝置200包含一個(gè)輸入控制部分20一個(gè)核心部分21、一個(gè)輸出控制部分22、和一個(gè)乘法部分23。
圖7是說明指數(shù)計(jì)算裝置200的信號(hào)處理方法的流程圖,其中分別示出了輸入控制部分20、核心部分21、輸出控制部分22、和乘法部分23所執(zhí)行的信號(hào)處理過程。
當(dāng)輸入值x≤255(第一閾值A(chǔ)1)時(shí),輸入控制部分20將不加改變地把x值作為x’提供給核心部分21。當(dāng)輸入值x大于255但小于2047(第二閾值A(chǔ)2)時(shí),輸入控制部分20將把x除以2^3然后把結(jié)果值作為x’提供給核心部分21。當(dāng)輸入值x≥2048時(shí),輸入控制部分20將把x除以2^6然后把結(jié)果值作為x’提供給核心部分21。
圖8示出指數(shù)計(jì)算裝置200的ROM表格3的內(nèi)容。核心部分21含有圖8所示的ROM表格3,提供對(duì)應(yīng)于0至255范圍內(nèi)的x’值的x’^((a%b)/b)(即x’^(1/3))的值。對(duì)應(yīng)于0至255范圍內(nèi)的x’值的x’^(1/3)值預(yù)先被存儲(chǔ)在ROM表格3中。
當(dāng)輸入值x≤第一閾值A(chǔ)1時(shí),輸出控制部分22不加改變地輸出核心部分21的輸出值。當(dāng)輸入值x大于第一閾值A(chǔ)1但小于或等于第二閾值A(chǔ)2時(shí),輸出控制部分22把一個(gè)通過把核心部分21的輸出值z(mì)’乘以2^(a%b)所得到的值作為z輸出。當(dāng)輸入值x>第二閾值A(chǔ)2時(shí),輸出控制部分22輸出一個(gè)通過把核心部分21的輸出值乘以2^((a%b)*2)所得到的值。乘法部分23把輸出控制部分22的輸出值z(mì)乘以x^(int(a/b)),進(jìn)而把乘積值作為新的z值輸出。
現(xiàn)在將說明具有這種結(jié)構(gòu)的例2指數(shù)計(jì)算裝置200的操作。參見圖7,在步驟S20,輸入控制部分20判斷輸入值x是否小于或等于第一閾值255。如果輸入值x小于或等于255,則處理進(jìn)入步驟S21,在那里不加改變地把x值作為x’提供給核心部分21。如果步驟S20中判定輸入值x等于或大于256,則處理進(jìn)入步驟S22,在那里判斷輸入值x是否小于或等于第二閾值A(chǔ)2即2047。如果輸入值x小于或等于2047,則處理進(jìn)入步驟S23,在那里把x除以2^3并把得到的值作為x’提供給核心部分21。如果步驟S22中判定輸入值x等于或大于2048,則處理進(jìn)入步驟S24,在那里把x除以2^6,并把得到的值作為x’提供給核心部分21。
x除以2^3的操作例如可以這樣進(jìn)行把x向下移位3位,或者先給x加上4,再把結(jié)果值向下移位3位,以實(shí)現(xiàn)“0舍入1入”的舍入處理。x除以2^6的操作例如可以這樣進(jìn)行把x向下移位6位,或者先給x加上32再把結(jié)果值向下移位6位,以實(shí)現(xiàn)“0舍1入”的舍入處理。
然后在步驟S25,核心部分21從圖8所示的ROM表格3讀出對(duì)應(yīng)于輸入控制部分20所提供的x’值的x’^(1/3)值。
然后在步驟S26,輸出控制部分22判斷輸入值x是否小于或等于255。如果x小于或等于255,則處理進(jìn)入步驟S27,在那里不加改變地輸出核心部分21的輸出值。如果步驟S26中判定輸入值x等于或大于256,則處理進(jìn)入步驟S28。步驟S28判斷輸入值x是否小于或等于2047。如果x小于或等于2047,則處理進(jìn)入步驟S29。如果x等于或大于2048,則處理進(jìn)入步驟S30。步驟S29輸出一個(gè)通過把核心部分21的輸出值乘以2^1所得到的值,步驟S30輸出一個(gè)通過把核心部分21的輸出值乘以2^2所得到的值。
最后在步驟S31,乘法部分23把輸入值x乘以輸出控制部分22的輸出值。在本例中,要得到的值是x^(4/3),輸出控制部分22的輸出值是x^(1/3)。因此x^(4/3)可通過將x的原始值乘以x^(1/3)而得到。
如上所述,在本例中,一個(gè)用來對(duì)輸入值x計(jì)算x^(a/b)(其中a>b)的指數(shù)計(jì)算裝置含有一個(gè)用來對(duì)0至A范圍內(nèi)的x’值提供x’^((a%b)/b)值的核心部分。此外,本發(fā)明的該指數(shù)計(jì)算裝置還設(shè)置有一個(gè)乘法部分,用來相乘對(duì)應(yīng)于輸入值x的x^(int(a/b))值與輸出控制部分的輸出值。
這樣,不需要存儲(chǔ)對(duì)應(yīng)于所有可能期望的輸入值x(本例中為0至8191)的x^(a/b)值,只需要存儲(chǔ)對(duì)應(yīng)于小于或等于預(yù)定值A(chǔ)(本例中為255)的輸入值x的x^((a%b)/b)值。用這種方法便能進(jìn)行任何x值的指數(shù)計(jì)算。于是有可能使用小規(guī)模硬件進(jìn)行分?jǐn)?shù)指數(shù)的指數(shù)計(jì)算。
例3現(xiàn)在將參考
根據(jù)本發(fā)明例3的指數(shù)計(jì)算裝置。本例提供一種用來獲得作為指數(shù)值x^(a/b)范例的x^(1/3)值的指數(shù)計(jì)算裝置。輸入值x的范圍假定為0至8191。
圖9是說明根據(jù)本發(fā)明例3的指數(shù)計(jì)算裝置300的結(jié)構(gòu)的方框圖。指數(shù)計(jì)算裝置300包含一個(gè)輸入控制部分30、一個(gè)核心部分31、一個(gè)輸出控制部分32、和一個(gè)判斷部分33。
圖10是說明指數(shù)計(jì)算裝置300的信號(hào)處理方法的流程圖,其中分別示出了輸入控制部分30、核心部分31、輸出控制部分32和判斷部分33所執(zhí)行的信號(hào)處理過程。
輸入控制部分30判斷輸入值x是否小于或等于閾值A(chǔ)(例如本例中為1023)。如果x≤1023,則輸入控制部分30將不加改變地把x值作為x’提供給核心部分31。如果x>1023,則輸入控制部分30將把一個(gè)通過把x除以2^j所得到的值作為x’提供給核心部分31。
j的值由判斷部分33按下述方法判斷。判斷部分33首先判斷以二進(jìn)制形式表示的x的數(shù)位數(shù)目k,然后按j=k-10確定j值。例如,當(dāng)輸入值x等于或大于1024但小于2048時(shí),j的值將為1。數(shù)值“10”是以二進(jìn)制形式表示的數(shù)值1024的數(shù)位數(shù)目。于是,j值代表x比二進(jìn)制形式下的閾值A(chǔ)多多少個(gè)數(shù)位。
與例1的核心部分11B相同,核心部分31也含有如圖5所示的ROM表格2。已對(duì)0至1023范圍內(nèi)的x’計(jì)算出了x’^(1/3)的值并存儲(chǔ)在ROM表格2中。核心部分31能提供對(duì)應(yīng)于0至1023范圍內(nèi)的x’的x’^(1/3)值。當(dāng)輸入值x≤1023時(shí),輸出控制部分32將不加改變地把核心部分31的輸出值z(mì)’作為z輸出。當(dāng)輸入值x>1023時(shí),輸出控制部分32將把一個(gè)通過把核心部分31的輸出值z(mì)’乘以2^(j/3)所得到的值作為z輸出。
現(xiàn)在將參考圖10說明具有這種結(jié)構(gòu)的指數(shù)計(jì)算裝置的操作。圖10的輸入控制部分30首先接收輸入值x并在步驟S40中判斷x值是否小于或等于1023。如果x≤1023,則處理進(jìn)入步驟S41,在那里不加改變地把x值作為x’提供給核心部分31。如果在步驟S40中判定輸入值x大于1023,則處理進(jìn)入步驟S42,把一個(gè)通過把x除以2^j所得到的值作為x’提供給核心部分31。
j的值由判斷部分33按如下方法確定。具體地說,判斷部分33首先在步驟S47中判斷以二進(jìn)制形式表示的x值的數(shù)值數(shù)目k。然后在步驟S48中得到j(luò)=k-10。
x除以2^j的操作例如可以這樣進(jìn)行把x下移j位,或者先給x加上2^(j-1)然后把結(jié)果值下移j位以實(shí)現(xiàn)“0舍入1入”的舍入處理。
接著在步驟S43,核心部分31從圖5的ROM表格2中讀出對(duì)應(yīng)于由輸入控制部分30所提供的x’值的x’^(1/3)值。
最后在步驟S44,輸出控制部分32判斷輸入值x是否小于或等于1023。如果x≤1023,則處理進(jìn)入步驟S45,在那里不加改變地輸出核心部分31的輸出值。如果步驟S44中判定輸入值x>1023,則處理進(jìn)入步驟S46,在那里輸出一個(gè)通過把核心部分31的輸出值乘以2^(j/3)所得到的值。
圖11示出指數(shù)計(jì)算裝置300的輸出控制部分32中的一個(gè)用于提供2^(j/3)值的表格。2^(j/3)的值可以預(yù)先以j為地址存儲(chǔ)在表格中,使得對(duì)應(yīng)于j值的2^(j/3)值可以通過從該表格讀出而得到。核心部分31的輸出值與2^(j/3)的乘法可以用一個(gè)普通的乘法器完成。
如上所述,本例不需要提供對(duì)應(yīng)于所有可能期望的x值(例如本例中為0至8191)的x^(1/3)值,只需要提供對(duì)應(yīng)于小于或等于預(yù)定閾值A(chǔ)=1023的輸入值x的x^(1/3)值。用這種方法可以近似地計(jì)算出對(duì)應(yīng)于大于A的輸入值x的x^(1/3)值。于是有可能用小規(guī)模的硬件進(jìn)行指數(shù)計(jì)算。
即使當(dāng)x大于閾值A(chǔ)時(shí)也可以使丟失的數(shù)位最小化,使得能以高精度得到近似值。
在本例中,閾值A(chǔ)被設(shè)定為1023,即由10個(gè)比特位能表示的最大可能值,并且判斷部分33被設(shè)計(jì)得能輸出一個(gè)指明了x的數(shù)位數(shù)目比10個(gè)數(shù)位多多少個(gè)數(shù)位的值。然而,本發(fā)明并不局限于這樣的結(jié)構(gòu)?;蛘?,當(dāng)希望使用更小的存儲(chǔ)區(qū)域時(shí),例如可把閾值A(chǔ)設(shè)定為255,即由8個(gè)比特位能表示的最大可能值,并且可以相應(yīng)地設(shè)計(jì)判斷部分33,使它能輸出一個(gè)指明了x的數(shù)位數(shù)目比8個(gè)數(shù)位多多少個(gè)數(shù)位的值。反之,當(dāng)希望有較高的計(jì)算精度時(shí)可以把閾值A(chǔ)設(shè)定為4095,即由12個(gè)比特位能表示的最大可能值,同時(shí)相應(yīng)地設(shè)計(jì)判斷部分33,使它能輸出一個(gè)指明了x的數(shù)位數(shù)目比12個(gè)數(shù)位多多少個(gè)數(shù)位的值。
例4現(xiàn)在將參考
根據(jù)本發(fā)明例4的指數(shù)計(jì)算裝置。本例提供一種用來獲得作為指數(shù)值x^(a/b)范例的x^(1/3)值的指數(shù)計(jì)算裝置。假定輸入值x的范圍為0至8191。
圖12是說明根據(jù)本發(fā)明例4的指數(shù)計(jì)算裝置400的結(jié)構(gòu)的方框圖。指數(shù)計(jì)算裝置400包含一個(gè)輸入控制部分40、一個(gè)核心部分41、一個(gè)輸出控制部分42、和一個(gè)判斷部分43。
圖13是說明指數(shù)計(jì)算裝置400的信號(hào)處理方法的流程圖,其中分別示出了由輸入控制部分40、核心部分41、輸出控制部分42、和判斷部分43所執(zhí)行的信號(hào)處理過程。
判斷部分43判斷以二進(jìn)制形式表示的x的數(shù)位數(shù)目k。輸入控制部分40判斷k是否小于或等于一個(gè)閾值B(例如在本例中為10)。當(dāng)k≤10時(shí),輸入控制部分40將把一個(gè)通過把x向上移位(B-k)位所得到的值作為x’提供給核心部分41。當(dāng)k>10時(shí),輸入控制部分40將把一個(gè)通過把x向下移位(k-B)位所得到的值作為x’提供給核心部分41。
核心部分41含有一個(gè)ROM表格4(z’=ROMTABLE4[x’]),并提供對(duì)應(yīng)于位于2^(B一1)至2^B-1(本例中為512至1023)范圍內(nèi)的x’值的x’^(1/3)值。輸出控制部分42輸出一個(gè)通過把核心部分41的輸出值z(mì)’乘以2^((k-B)/3)所得到的值。
圖14示出指數(shù)計(jì)算裝置400的核心部分41的ROM表格4的內(nèi)容。對(duì)應(yīng)于位于512至1023范圍內(nèi)的x’值的x’^(1/3)值預(yù)先被存儲(chǔ)在ROM表格4中。
注意,如圖14所示,對(duì)應(yīng)于x’=512(=2^(B-1))的x’^(1/3)值存儲(chǔ)在地址O處,對(duì)應(yīng)于x’=1023(=2^B-1)的x’^(1/3)值存儲(chǔ)在地址511處。該表格含有這樣的值的原因如下。由于k代表了以二進(jìn)制形式表示的x的數(shù)位數(shù)目,而輸入控制部分40當(dāng)B-k為正時(shí)通過把x向上移位(B-k)位來計(jì)算x’,當(dāng)B-k為負(fù)時(shí)通過把x向下移位(k-B)位來計(jì)算x’,從而x’的第B個(gè)數(shù)位值永遠(yuǎn)為1。于是,該值的范圍永遠(yuǎn)在2^(B-1)至2^B-1的范圍內(nèi)。因此,圖14表格可以僅用x’的低(B-1)個(gè)數(shù)位作為地址來查詢。結(jié)果,該表格的大小可減小為一半。
現(xiàn)在將參考圖13說明具有這種結(jié)構(gòu)的指數(shù)計(jì)算裝置的操作。圖12的判斷部分43首先在步驟S55中判斷以二進(jìn)制表示的x值的數(shù)位數(shù)目k。輸入控制部分40接收輸入值x,并在步驟S50判斷k是否小于或等于B(本例中B=10)。如果k≤10,則處理進(jìn)入步驟S51,在那里把一個(gè)通過把x向上移位(B-k)位所得到的值作為x’提供給核心部分41。如果k>10,則處理進(jìn)入步驟S52,在那里把一個(gè)通過把x向下移位(k-B)位所得到的值作為x’提供給核心部分41。
然后在步驟S53中,核心部分41從圖14的ROM表格4中讀出對(duì)應(yīng)于由輸入控制部分40提供的x’值的x’^(1/3)值。如上所述,對(duì)應(yīng)于x’=512(=2^(B-1))的x’^(1/3)值存儲(chǔ)在地址0處,對(duì)應(yīng)于x’=1023(=2^B-1的x’^(1/3)值存儲(chǔ)在地址512處。因此,只要用低(B-1)位作為地址去查閱圖14的表格。
最后在步驟S54中,圖12的輸出控制部分42輸出一個(gè)通過把核心部分41的輸出值乘以2^((k-B)/3)所得到的值。
圖15示出指數(shù)計(jì)算裝置400的輸出控制部分42中的一個(gè)用于提供2^((k-B)/3)值的表格。2^((k-B)/3)的值可以預(yù)先以k作為地址存儲(chǔ)在表格中,使得可以從該表格讀出對(duì)應(yīng)于給定k值的2^((k-B)/3)值。核心部分41的輸出值與2^((k-B)/3)的相乘可以用一個(gè)普通的乘法器完成。
如上所述,本例不需要提供對(duì)應(yīng)于所有可能期望的x值(例如本例中為0至8191)的x^(1/3)值,只需要提供對(duì)應(yīng)于小于或等于預(yù)定閾值B(例如本例中為10)的輸入值x的x^(1/3)值。用這樣的方法,對(duì)應(yīng)于數(shù)位數(shù)目大于B的輸入值x的x^(1/3)值也可被近似地計(jì)算出來。于是有可能用小規(guī)模的硬件來進(jìn)行指數(shù)計(jì)算。
即使x的數(shù)位數(shù)目大于B,數(shù)位的損失也可被最小化,所以能以高精度得到近似值。
具體地說,本例提供了這樣一個(gè)優(yōu)點(diǎn),即當(dāng)計(jì)算對(duì)應(yīng)于數(shù)位數(shù)目大于B的x值的x^(1/3)時(shí),在把表格大小減小為一半的同時(shí)仍可基本上保持具有與例3相同的精度水平。
例5現(xiàn)在將參考
根據(jù)本發(fā)明例5的解碼裝置。如在前面關(guān)于以往技術(shù)的段落中所述,一個(gè)根據(jù)MPEG2的聲頻編碼標(biāo)準(zhǔn)AAC編碼的比特流中含有一個(gè)量化碼“x”和一個(gè)標(biāo)度因子“y”。本例的解碼裝置即是一種用來計(jì)算對(duì)應(yīng)于含在該聲頻比特流中的x和y值的x^(a/b)*2^(y/c)的解碼裝置。
量化碼x是位于例如0至8191范圍內(nèi)的任一整數(shù),標(biāo)度因子y是一100至156范圍內(nèi)的任一整數(shù)。這樣的x、y變化范圍符合MPEG2的聲頻編碼標(biāo)準(zhǔn)AAC(見ISO/IEC 13818-7:1997)。在下面的說明中將假定x和y屬于這樣的變化范圍,雖然本發(fā)明并不局限于這種情況。
圖16是說明根據(jù)本發(fā)明例5的解碼裝置500的結(jié)構(gòu)的方框圖。解碼裝置500包含一個(gè)分離部分50、一個(gè)判斷部分51、一個(gè)第一存儲(chǔ)部分52、一個(gè)第二存儲(chǔ)部分53、一個(gè)除法部分54、一個(gè)模數(shù)計(jì)算部分55、一個(gè)乘法部分56、和一個(gè)移位部分57。
參見圖16,分離部分50把量化碼x和標(biāo)度因子y從輸入比特流中分離出來。判斷部分51判斷從分離部分50輸出的量化碼x是否小于或等于2^N(其中N是一個(gè)預(yù)定的整數(shù)閾值)。當(dāng)x≤2^N時(shí)判斷部分51輸出判斷結(jié)果為真,當(dāng)x>2^N時(shí)輸出判斷結(jié)果為假。第一存儲(chǔ)部分52以定點(diǎn)格式存儲(chǔ)對(duì)應(yīng)于0至(2^Q-1)(其中Q為一整數(shù))范圍內(nèi)的整數(shù)q的由q^(a/b)決定的值。
第一存儲(chǔ)部分52具有下述結(jié)構(gòu)。其中q是位于由分離部分50從比特流中分離出來的x的變化范圍內(nèi)的任一整數(shù)(0≤q<2^Q-1),第一存儲(chǔ)部分52以定點(diǎn)格式存儲(chǔ)對(duì)應(yīng)于所有可能的q值的q^(a/b)值。這樣,第一存儲(chǔ)部分52以q為地址存儲(chǔ)F(q)值。當(dāng)整數(shù)q>2^N(N為一個(gè)預(yù)定閾值)時(shí),F(xiàn)(q)代表通過用2^M’對(duì)q^(a/b)值進(jìn)行歸一化后所得到的值。當(dāng)整數(shù)q位于0至2^N范圍內(nèi)時(shí),F(xiàn)(q)代表把通過用2^M’對(duì)q^(a/b)值進(jìn)行歸一化后所得到的值移位(M’-M)位所得到的值,M是(N*a)/b的整數(shù)值,M’是(Q*a)除以b的整數(shù)值。整數(shù)M是對(duì)(N*a)/b進(jìn)行向上取整所得到的值,整數(shù)M’是對(duì)(Q*a)/b進(jìn)行向上取整所得到的值。
圖17示出解碼裝置500的第一存儲(chǔ)部分52的內(nèi)容。如圖17所示,第一存儲(chǔ)部分52存儲(chǔ)當(dāng)a=4、b=3、N=5,Q=13,M=7和M’=18時(shí)的F(q)值。在圖17中的每一個(gè)定點(diǎn)格式值中,最高位都是符號(hào)位,而小數(shù)點(diǎn)則都位在第二最高位與第三最高位之間。最高位邊上的第二位以及小數(shù)點(diǎn)后面的D個(gè)數(shù)位都是要計(jì)算的有效數(shù)字。
除法部分54對(duì)分離部分50輸出的標(biāo)度因子y執(zhí)行除法操作,以得到商y1=int(y/c)。模數(shù)計(jì)算部分55獲取標(biāo)度因子y除以c的余數(shù)y2=(y%c)。
第二存儲(chǔ)部分53以定點(diǎn)格式存儲(chǔ)對(duì)應(yīng)于0至3范圍(即y2變化范圍)內(nèi)的整數(shù)值p的G(p)=2^(p/c)值,其中的y2值是由模數(shù)計(jì)算部分55計(jì)算的。
圖18示出解碼裝置500的第二存儲(chǔ)部分53的內(nèi)容,其中含有c=4時(shí)的G(p)值。圖18中G(p)值的定點(diǎn)格式可以與圖28所示的相同。
乘法部分56將從第一存儲(chǔ)部分52讀出的F(x)值與從第二存儲(chǔ)部分53讀出的G(y2)值相乘。
移位部分57把乘法部分56的輸出值移位,當(dāng)判斷部分51的判斷結(jié)果為真時(shí)移位(y1-(M’-M))位;當(dāng)判斷部分51的判斷結(jié)果為假時(shí)移位y1位,由此輸出移位值。
現(xiàn)在將在a=4、b=3、c=4、M=7、N=5、Q=13和D=30的假設(shè)下說明具有這種結(jié)構(gòu)的解碼裝置500的操作。圖16的分離部分50從輸入比特流中分離出量化碼x和標(biāo)度因子y。然后判斷部分51判斷量化碼x是否小于或等于2^5。除法部分54求得標(biāo)度因子y除以4所得的商y1,模數(shù)計(jì)算部分55求得標(biāo)度因子y除以4所得的余數(shù)y2。乘法部分56將第一存儲(chǔ)部分52的地址x處的F(x)值與第二存儲(chǔ)部分53的地址y2處的G(y2)值相乘。
通過這些操作,從乘法部分56已輸出一個(gè)按照從表達(dá)式(1)轉(zhuǎn)變成的表達(dá)式(2)的(x^(4/3)*2^((y%4)/4))值。然后,移位部分57在判斷部分51的判斷結(jié)果為真時(shí)把乘法部分56的輸出值移位y1-(18-7)位;在判斷結(jié)果為假時(shí)移位y1位。這一操作的作用如下。首先,移位y1位的操作對(duì)應(yīng)于計(jì)算2^int(y/4),即表達(dá)式(2)(該式是第一項(xiàng)、第二項(xiàng)與第三項(xiàng)的相乘)中的第三項(xiàng)。乘法部分56的輸出值又被乘上了除法部分54的輸出商2^y1,所以得到了具有原始大小的輸出信號(hào)。
當(dāng)判斷部分51的判斷結(jié)果為真時(shí),要進(jìn)行移位-(18-7)位的操作的原因如下。若x>2^5,則x^(4/3)的值已被2^18歸一化。若x≤2^5,則與x>2^5的情形相比,將存儲(chǔ)另一個(gè)值,這個(gè)值是通過把x^(4/3)值向上移位(18-7)位得到的。這樣,這個(gè)值要被附加移位11位,以調(diào)整最后的計(jì)算結(jié)果。
如上所述,在本例中,即使當(dāng)x的值遠(yuǎn)小于其變化范圍中的最大值時(shí),直到輸出計(jì)算結(jié)果的最后階段x^(4/3)值也能保留有較多的有效數(shù)位,由此有可能以高精度計(jì)算x^(4/3)*2^(y/4)。雖然N和M可以選為任何其他的值,但在本例中有N=5和M=7。例如,也可把N設(shè)定為9,這時(shí)M=9*4/3=12。
例6現(xiàn)在將參考
根據(jù)本發(fā)明例6的解碼裝置。本例的解碼裝置接收按MPEG2的聲頻編碼標(biāo)準(zhǔn)編碼的比特流,分離出含在其內(nèi)的量化碼x和標(biāo)度因子y,然后計(jì)算作為表達(dá)式(1)的一般形式的下列表達(dá)式(3)。
x^(a/b)*2^(y/c)(3)在本例中,量化碼x的變化范圍例如是0至4096,標(biāo)度因子y的變化范圍例如是-100至156。在本例中,表達(dá)式(3)被轉(zhuǎn)變成下列表達(dá)式(4)。
x*x^((a-b)/b)*2^((y%c)/c)*2^int(y/c)(4)現(xiàn)在將說明利用表達(dá)式(4)和一個(gè)僅需更小存儲(chǔ)區(qū)域的存儲(chǔ)部分來解碼輸入比特流的操作。
圖19是說明根據(jù)本發(fā)明例6的解碼裝置600的結(jié)構(gòu)的方框圖。解碼裝置600包含一個(gè)分離部分60、一個(gè)判斷部分61、一個(gè)第一移位部分62、一個(gè)第一存儲(chǔ)部分63、一個(gè)第二存儲(chǔ)部分64、一個(gè)第一除法部分65、一個(gè)模數(shù)計(jì)算部分66、一個(gè)第二除法部分67、一個(gè)乘法部分68、和一個(gè)第二移位部分69。
參見圖19,分離部分60把量化碼x和標(biāo)度因子y從輸入比特流中分離出來。判斷部分61判斷量化碼x是否小于或等于2^N(其中N是一個(gè)對(duì)應(yīng)于第一存儲(chǔ)部分63的地址數(shù)的閾值),由此當(dāng)x≤2^N時(shí)輸出判斷結(jié)果為真,當(dāng)x>2^N時(shí)輸出判斷結(jié)果為假。當(dāng)x>2^N時(shí),判斷部分61還輸出一個(gè)參數(shù)i,用來指明變量x的值(其中i是一個(gè)非負(fù)整數(shù),x的變化范圍是2^N至2^(N+b*i))。i值的確定使x能滿足關(guān)系式2^(N+3(i-1))<x≤2^(N+3i)。判斷部分61的判斷結(jié)果和參數(shù)i都被提供給第二除法部分67、第一移位部分62和第二移位部分69。
假定乘法部分68(下面將有更詳細(xì)的說明)的功能是對(duì)具有數(shù)位寬度(D+2)的定點(diǎn)格式輸入值進(jìn)行計(jì)算,其中輸入值的最高位是符號(hào)位,第二最高位以及小數(shù)點(diǎn)后面的D個(gè)數(shù)位代表輸入值的有效數(shù)字。然后,第一移位部分62通過移位把x轉(zhuǎn)換成定點(diǎn)格式值x1,當(dāng)判斷部分61的判斷結(jié)果為真時(shí)把x移位D-N位;當(dāng)判斷結(jié)果為假時(shí)把x移位D-(N+b*i)位(利用i值)。
第一除法部分65把分離部分60輸出的y值除以c,并輸出其商y1。模數(shù)計(jì)算部分66把分離部分60輸出的y值除以c,并輸出其余數(shù)y2。第二除法部分67接收分離部分60所分離出的x值,并當(dāng)判斷部分61的判斷結(jié)果為真時(shí)不加改變地把x值作為x2輸出,當(dāng)判斷結(jié)果為假時(shí)把x/(2^(b*i))的整數(shù)部分作為x3輸出。
第一存儲(chǔ)部分63存儲(chǔ)對(duì)應(yīng)于q值(q是0至2^N范圍內(nèi)的整數(shù))的H(q)值。H(q)值是通過把q^((a-b)/b)值移位(D-M)位(其中M是N*(a-b)/b的整數(shù)值)而把q^((a-b)/b)值轉(zhuǎn)變成定點(diǎn)格式來獲得的。
第二存儲(chǔ)部分64以定點(diǎn)格式存儲(chǔ)對(duì)應(yīng)于從模數(shù)計(jì)算部分66輸出的y2值(y2=p)的G(p)=2^(p/c)值。第二存儲(chǔ)部分64的內(nèi)容可以與圖18所示的相同,即對(duì)應(yīng)于0至3范圍內(nèi)的整數(shù)值p的2^(p/c)值。
乘法部分68將以下三個(gè)值相乘第一存儲(chǔ)部分63的地址x2或x3處的值,第二存儲(chǔ)部分64的地址y2處的值,和第一移位部分62輸出的x1值。當(dāng)用M表示N*(a-b)/b的整數(shù)值時(shí),第二移位部分69在判斷部分61的判斷結(jié)果為真時(shí)把乘法部分69的輸出值移位(y1+N+M)位;在判斷結(jié)果為假時(shí)把上述輸出值移位(y1+N+M+a*i)位。
圖20示出解碼裝置600的第一存儲(chǔ)部分63的內(nèi)容。圖20所示的表格含有定點(diǎn)格式的H(q)值,這些值是通過用2^M來歸一化q^((a-b)/b)值而得到的(其中q是0至2^N范圍內(nèi)的整數(shù))。在本例中,H(q)值是在a=4、b=3、N=9、M=3和D=30的條件下得到的M=3是從9*(4-3)/3計(jì)算出來的。如上所述,在該表格的格式中,最高位是符號(hào)位,小數(shù)點(diǎn)位在第二最高位與第三最高位之間。所以H(q)的值最小為-2,最大小于2。
圖21示出一種把一個(gè)整數(shù)值轉(zhuǎn)變成一個(gè)定點(diǎn)格式值的方法。雖然N、M和D當(dāng)然可以有不同的值,但在本例中有N=9、M=3和D=30。例如,N也可設(shè)定為10,而M被設(shè)定為整數(shù)4,這是通過把10*(4-3)/3向上取整得到的。
現(xiàn)在將在a=4、b=3、c=4、M=3、N=9和D=30的假定下參考圖18至27說明具有這種結(jié)構(gòu)的解碼裝置600的操作。首先,圖19的分離部分60把量化碼x和標(biāo)度因子y從輸入比特流中分離出來。然后判斷部分61判斷量化碼x是否小于或等于2^9(=512),并在x≤2^9時(shí)輸出判斷結(jié)果為真,在x>2^9時(shí)輸出判斷結(jié)果為假。判斷部分61還根據(jù)量化碼x的變化范圍輸出一個(gè)i值。
接著,第一移位部分62通過對(duì)x移位而把整數(shù)值x轉(zhuǎn)變成具有定點(diǎn)格式的x1,當(dāng)判斷部分61的判斷結(jié)果為真時(shí)移位(30-9)位;當(dāng)判斷結(jié)果為假時(shí)移位30-(9+3)位。
下面將對(duì)這個(gè)操作做進(jìn)一步詳細(xì)說明。如圖28所示,在本例的定點(diǎn)格式中,最高位是符號(hào)位,小數(shù)點(diǎn)位在第二最高位與第三最高位之間。所以當(dāng)x具有9個(gè)或少于9個(gè)數(shù)位時(shí)(即x≤2^9),x可以通過移位(30-9)=21位而被歸一化,使得x能符合定點(diǎn)格式地等于或小于1.0,如圖21所示。
類似地,當(dāng)輸入整數(shù)x含有10至(9+3)=12位時(shí),x可以通過向上移位30-(9+3)=18位而被歸一化,使得x變?yōu)槎c(diǎn)格式表示所需的等于或小于1.0。根據(jù)這個(gè)原理,第一移位部分62在判斷部分61的判斷結(jié)果為真時(shí),即當(dāng)x≤512時(shí),通過把x移位(30-9)=21位而使整數(shù)x轉(zhuǎn)變成定點(diǎn)格式的x1。當(dāng)判斷部分61的判斷結(jié)果為假時(shí),即當(dāng)512<x≤2^12時(shí),第一移位部分62通過把x移位30-(9+3)=18位而把整數(shù)x轉(zhuǎn)變成定點(diǎn)格式的x1。
當(dāng)判斷部分61的判斷結(jié)果為真時(shí),第二除法部分67不加改變地把x值作為x2輸出;當(dāng)判斷結(jié)果為假時(shí),即當(dāng)2^9<x≤2^12時(shí),把x/8的整數(shù)值作為x3輸出。由于第一存儲(chǔ)部分63只存儲(chǔ)對(duì)應(yīng)于0至2^9(即512)范圍內(nèi)的整數(shù)值q的取決于q^(1/3)的值,所以x3值被用作第一存儲(chǔ)部分63的地址。因此,當(dāng)判斷部分61的判斷結(jié)果為真時(shí),即當(dāng)x≤512時(shí),將不加變動(dòng)地把x值作為x2輸出;而當(dāng)判斷結(jié)果為假時(shí),即當(dāng)2^9<x≤2^12時(shí),則將通過計(jì)算出x/8的整數(shù)值來產(chǎn)生并輸出小于或等于512的x3。
第一除法部分65取得y/4的商y1,模數(shù)計(jì)算部分66取得y/4的余數(shù)y2。然后乘法部分68將以下三個(gè)值相乘第一存儲(chǔ)部分63的地址x2處的H(x2)值,第二存儲(chǔ)部分64的地址y2處的G(y2)值,和第一移位部分62輸出的x1值。
通過這些操作,乘法部分68將提供一個(gè)按照從表達(dá)式(3)轉(zhuǎn)變成的表達(dá)式(4)的對(duì)應(yīng)于x*x^(1/3)*2^((y%4)/4)的值(一個(gè)其數(shù)位數(shù)目即增益被調(diào)整之前的值)。這是因?yàn)榈谝灰莆徊糠?2的輸出值代表x被轉(zhuǎn)變成定點(diǎn)格式后的值,第一存儲(chǔ)部分63以定點(diǎn)格式存儲(chǔ)對(duì)應(yīng)于x^(1/3)的值,并且第二存儲(chǔ)部分64以定點(diǎn)格式存儲(chǔ)對(duì)應(yīng)于0至3范圍內(nèi)的整數(shù)值p的由2^(q/4)決定的值。
最后,第二移位部分69在判斷部分61的判斷結(jié)果為真時(shí)把乘法部分68輸出的值移位由(y1+9+3)決定的位數(shù);當(dāng)判斷結(jié)果為假時(shí),即當(dāng)2^9<x≤2^12時(shí),把該輸出移位(y1+9+3+4*i)位。這個(gè)操作的作用如下。首先,把輸出值移位y1位的操作對(duì)應(yīng)于表達(dá)式(4)的第四項(xiàng),即2^int(y/4),的計(jì)算y1值是由第一除法部分65得到的y除以4的商。
當(dāng)判斷部分61的判斷結(jié)果為真時(shí),要進(jìn)行把輸出值移位(y1+9+3)位的操作的原因如下。當(dāng)x≤2^9時(shí),原來是整數(shù)的x值被第一移位部分62用2^9歸一化,從而轉(zhuǎn)變成一個(gè)不大于1.0的值。原來小于或等于2^(9/3)的對(duì)應(yīng)于存儲(chǔ)在第一存儲(chǔ)部分63中的各個(gè)值也被轉(zhuǎn)變成不大于1.0的值。換言之,乘法部分68的輸出值被乘以2^(y1+9+3),也即被向上移位(y1+9+3)位,從而該輸出值被轉(zhuǎn)變成一個(gè)以原來的整數(shù)格式表示的值。
當(dāng)2^9<x≤2^12時(shí),原來是一個(gè)整數(shù)的x值被第一移位部分62用2^(9/3)歸一化,轉(zhuǎn)變成不大于1.0的值。如上所述,原來小于或等于2^(9/3)的被存儲(chǔ)在第一存儲(chǔ)部分63中的各個(gè)值也被用2^3歸一化,轉(zhuǎn)變成不大于1.0的值。此外,第二除法部分67計(jì)算輸入值x除以8,以便用計(jì)算結(jié)果作為地址去查閱第一存儲(chǔ)部分63(一個(gè)用于指數(shù)為1/3的指數(shù)計(jì)算的表格)。因此,第一存儲(chǔ)部分63的輸出值是x^(1/3)的一半,這是因?yàn)橄铝械仁?5)成立。
(x/8)^(1/3)=x^(1/3)*(1/8)^(1/3)=x^(1/3)*(1/2)(5)乘法部分68的輸出值與2^(9+3+3+1)相乘等價(jià)于把該輸出值向上移位(9+3+3+1)=16位。這個(gè)移位操作把乘法部分68的輸出值轉(zhuǎn)變成一個(gè)用原來的整數(shù)形式表示的值。
由于這些原因,所以當(dāng)判斷部分61的判斷結(jié)果為真時(shí),第二移位部分69將把乘法部分68的輸出值移位(y1+N+M)位;當(dāng)判斷結(jié)果為假且i=1時(shí)移位(y1+N+M+a*1)位。應(yīng)該理解,由于在這些用這種數(shù)字表示形式表示的值之間,大小關(guān)系是相對(duì)的,所以當(dāng)判斷部分61的判斷結(jié)果為假時(shí),第二移位部分69要執(zhí)行的操作的目的是調(diào)整乘法部分68的輸出,使之比判斷結(jié)果為真時(shí)大a*1=4*1=4個(gè)數(shù)位。
如上所述,在本例中,即使x的值很大,也有可能利用一個(gè)如圖21所示的小容量表格僅僅通過簡單的移位操作來進(jìn)行計(jì)算。因此,有可能對(duì)任意的量化碼x值快速地算出x^(4/3)*2^(y/4)。
在本例中,假定量化碼x的范圍是0至4095,但按照MPEG2的AAC標(biāo)準(zhǔn)該范圍應(yīng)是0至8191。對(duì)于量化碼x為4096或更大的情況的計(jì)算方法是假定i=2。這里應(yīng)指出4096等于2^(9+3)。
當(dāng)輸入值x≥2^(9+3)時(shí),第一移位部分62通過把x移位D-(N+b*i)=30-(9+3*2)而把x轉(zhuǎn)變成具有定點(diǎn)格式的x1。第二除法部分67取得x2,對(duì)應(yīng)于給定x它是x/(2^(3*2))的整數(shù)值。然后乘法部分68將以下三個(gè)值相乘第一存儲(chǔ)部分63地址x2處的值,第二存儲(chǔ)部分64地址y2處的值,和x1值。最后,第二移位部分69把乘法部分68的輸出值移位(y1+N+M+a*i)=(y1+9+3+4*2)位。
第二移位部分69在x≥2^(N+3)時(shí)對(duì)乘法部分68的輸出移位(y1+N+M+8)位這一操作的作用如下。首先,移位y1位的操作對(duì)應(yīng)于計(jì)算2^int(y/4),即表達(dá)式(4)的第四項(xiàng)。這是因?yàn)閥1是除法部分65的輸出,并且它的值是y除以4的商。
當(dāng)x>2(N+3)時(shí),原來是一個(gè)整數(shù)的x被第一移位部分62用2^(N+6)歸一化而轉(zhuǎn)變成一個(gè)不大于1.0的值。如上所述,原來小于或等于2^(N/3)的存儲(chǔ)在第一存儲(chǔ)部分63中的各個(gè)值也被用2^M歸一化,轉(zhuǎn)變成不超過1.0的值。此外,第二除法部分67計(jì)算x除以64,以便用此商值作為地址來查閱第一存儲(chǔ)部分63。因此,第一存儲(chǔ)部分63的輸出值是x^(1/3)的1/4,這是因?yàn)橄铝械仁?6)成立。
(x/64)^(1/3)=x^(1/3)*(1/64)^(1/3)=x^(1/3)*1/4(6)乘法部分68的輸出值與2^(N+M+6+2)相乘等價(jià)于把乘法部分68的輸出值向上移位(N+M+6+2)位。這個(gè)移位操作把乘法部分68的輸出值轉(zhuǎn)變成一個(gè)以原來的整數(shù)形式表示的值。
由于這些原因,當(dāng)x>2^(N+3)時(shí)第二移位部分69把乘法部分68的輸出值移位(y1+N+M+8)位。應(yīng)該理解,由于在這些用這種數(shù)字表示形式的值之間,大小關(guān)系是相對(duì)的,所以當(dāng)x>2^(N+3)時(shí)第二移位部分69要執(zhí)行的操作的目的是,調(diào)整乘法部分68的輸出,使之比x<2^N時(shí)大8個(gè)數(shù)位。
例7現(xiàn)在將參考
根據(jù)本發(fā)明例7的解碼裝置。本例的解碼裝置也接收按照MPEG2的聲頻編碼標(biāo)準(zhǔn)編碼的比特流,把其中所含的量化碼x和標(biāo)度因子y分離出來,并計(jì)算下列作為表達(dá)式(1)的一般形式的表達(dá)式(3)。
x^(a/b)*2^(y/c)(3)在本例中,量化碼x的變化范圍例如是0至891,標(biāo)度因子y的變化范圍例如是-100至156。在本例中,表達(dá)式(3)被轉(zhuǎn)換成下列表達(dá)式(4)。
x*x^((a-b)/b)*2^((y%c)/c)*2^int(y/c)(4)現(xiàn)在將說明利用表達(dá)式(4)和一個(gè)只需要更小的存儲(chǔ)容量的存儲(chǔ)部分來解碼一個(gè)輸入比特流的操作。
圖22是說明根據(jù)本發(fā)明例7的解碼裝置700的結(jié)構(gòu)的方框圖。解碼裝置700包含一個(gè)分離部分70、一個(gè)判斷部分71、一個(gè)第一移位部分72、一個(gè)第一存儲(chǔ)部分73、一個(gè)調(diào)整系數(shù)發(fā)生部分74、一個(gè)第一除法部分75、一個(gè)模數(shù)計(jì)算部分76、一個(gè)第二除法部分77、一個(gè)乘法部分78、和一個(gè)第二移位部分79。
參見圖22,分離部分70把量化碼x和標(biāo)度因子y從輸入比特流中分離出來。判斷部分71判斷量化碼x是否小于或等于2^N(其中N是一個(gè)對(duì)應(yīng)于第一存儲(chǔ)部分73的地址數(shù)的閾值),并在x≤2^N時(shí)輸出判斷結(jié)果為真,在x>2^N時(shí)輸出判斷結(jié)果為假。當(dāng)x>2^N時(shí),判斷部分71還輸出一個(gè)能指明變量x的值的參數(shù)j(其中j是一個(gè)非負(fù)整數(shù),x的變化范圍是2^N至2^(N+j))。j值的確定使得在x>2^N時(shí)滿足關(guān)系式2^(N+(j-1))<x≤2^(N+j),而當(dāng)x≤2^N時(shí)j=0。判斷部分71的判斷結(jié)果和參數(shù)j的值都被提供給第二除法部分77,第一移位部分72、第二移位部分79、和調(diào)整系數(shù)發(fā)生部分74。
假定乘法部分78(后面將更詳細(xì)地說明)的功能是對(duì)一個(gè)具有數(shù)位寬度(D+2)的定點(diǎn)格式輸入值進(jìn)行計(jì)算,其中輸入值的最高位是符號(hào)位、第二最高位和小數(shù)點(diǎn)后面的D位代表輸入值的有效數(shù)字。然后第一移位部分72在判斷部分71的判斷結(jié)果為真時(shí)通過把x移位D-N位而把x轉(zhuǎn)變成具有定點(diǎn)格式的x1,在判斷結(jié)果為假時(shí)則通過把x移位D-(N+j)位(利用j值)而轉(zhuǎn)變成x1。
第一除法部分75執(zhí)行把分離部分70輸出的y值除以c的操作,并輸出y除以c的商y1。模數(shù)計(jì)算部分76執(zhí)行把分離部分70輸出的y值除以c的操作,并輸出y除以c的余數(shù)y2。第二除法部分77接收分離部分70分離出的x值,并在判斷部分71的判斷結(jié)果為真時(shí)不加改變地把x值作為x2輸出;在判斷結(jié)果為假時(shí)把x/(2^j)的整數(shù)值作為x3輸出。
第一存儲(chǔ)部分73存儲(chǔ)對(duì)應(yīng)于q值的H(q)值(q是0至2^N范圍內(nèi)的整數(shù)值)。H(q)值是通過把q^((a-b)/b)值移位(D-M)位(其中M是N*(a-b)/b的整數(shù)值)而把q^((a-b)/b)轉(zhuǎn)變成定點(diǎn)格式得到的。
調(diào)整系數(shù)發(fā)生部分74對(duì)模數(shù)計(jì)算部分76輸出的y2(y2=p)值和j值以定點(diǎn)格式產(chǎn)生2^(p/c)*2^(j/b),并把它作為I(p,j)。調(diào)整系數(shù)發(fā)生部分74含有一個(gè)存儲(chǔ)部分,其中預(yù)先存儲(chǔ)了I(p,j)值。
圖23示出解碼裝置700的調(diào)整系數(shù)發(fā)生部分74的內(nèi)容。圖23所示的調(diào)整系數(shù)發(fā)生部分74含有當(dāng)b=3、c=4時(shí)的I(p,j)值。這里需要注意下述情況。本例中2^(p/4)*2^(j/3)的最大值出現(xiàn)在j=13-N時(shí),當(dāng)N=9時(shí)該值為2^(3/4)*2^(4/3),所以它是大于2.0的。由于本例也使用了如圖28所示的定點(diǎn)格式,所以I(p,j)表格所存儲(chǔ)的是通過把2^(p/4)*2^(j/3)向下移位2位所得到的值。當(dāng)然,在輸出信號(hào)中必需考慮到這個(gè)移位2位的操作,這將在后面說明。
乘法部分78將以下三個(gè)值相乘第一存儲(chǔ)部分73的地址x2或x3處的值,調(diào)整系數(shù)發(fā)生部分74的地址y2,j處的值,和第一移位部分72的輸出值x1。當(dāng)用M代表N*(a-b)/b的整數(shù)值時(shí),第二移位部分79在判斷部分71的判斷結(jié)果為真時(shí)把乘法部分78的輸出值移位(y1+N+M)位;在判斷結(jié)果為假時(shí)把該輸出值移位(y1+N+M+j)位。在該操作中,因圖23所示的結(jié)構(gòu)需要進(jìn)行上述兩個(gè)數(shù)位的調(diào)整,也即把已移位的值再移位2位。
與根據(jù)本發(fā)明例6的解碼裝置600的第一存儲(chǔ)部分63一樣,第一存儲(chǔ)部分73也有一個(gè)如圖20所示的表格,其中含有一些數(shù)值。圖20所示的表格含有定點(diǎn)格式的H(q)值,這些值是通過用2^M去歸一化q^((a-b)/b)值而得到的(其中q是0至2^N范圍內(nèi)的整數(shù))。在本例中,H(q)值是在a=4、b=3、N=9、M=3和D=30的條件下得到的。M=3是從9*(4-3)/3計(jì)算出來的。如上所述,在該表格的格式中,最高位是符號(hào)位,小數(shù)點(diǎn)位在第二最高位與第三最高位之間。所以H(q)的最小值為-2,最大值<2。
如上所示,圖21示出了一種把一個(gè)整數(shù)值轉(zhuǎn)變成一個(gè)定點(diǎn)格式值的方法。在本例中,N=9、M=3和D=30,雖然這些值當(dāng)然也可以不是這樣。例如,也可把N設(shè)定為10,這時(shí)通過對(duì)10*(4-3)/3向上取整,得到M=40。
現(xiàn)在將參考圖20至23在a=4、b=3、c=4、M=3、N=9和D=30的假定下說明具有這種結(jié)構(gòu)的解碼裝置700的操作。首先,圖22的分離部分70從輸入比特流中分離出量化碼x和標(biāo)度因子y。然后判斷部分71判斷量化碼x是否小于或等于2^9(=512),并當(dāng)x≤2^9時(shí)輸出判斷結(jié)果為真,當(dāng)x>2^9時(shí)輸出判斷結(jié)果為假。判斷裝置71還根據(jù)量化碼x的變化范圍輸出j值。
接著,第一移位部分72在判斷部分71的判斷結(jié)果為真時(shí)通過把x移位(30-9)位而將整數(shù)值x轉(zhuǎn)變成具有定點(diǎn)格式的x1;在判斷結(jié)果為假時(shí)則通過移位30-(9+j)位而將x轉(zhuǎn)變成x1。
下面將進(jìn)一步詳細(xì)地說明這一操作。如圖28所示,在本例的定點(diǎn)格式中,最高位是符號(hào)位,小數(shù)點(diǎn)位于第二最高位與第三最高位之間。所以當(dāng)x是一個(gè)具有不大于9位的值(即x≤2^9)時(shí),可以通過把x向上移位(30-9)=21位來對(duì)它歸一化,使它在定點(diǎn)格式下不大于1.0,如圖21所示。
類似地,當(dāng)輸入整數(shù)值x具有10位或大于10位的數(shù)位(例如11位)時(shí),可以通過把x向上移位30-11=19位來對(duì)它歸一化,使它在定點(diǎn)格式下不大小1.0。根據(jù)這個(gè)原理,第一移位部分72在判斷部分71的判斷結(jié)果為真時(shí),也即在x≤512時(shí),通過把整數(shù)x移位(30-9)=21位使它轉(zhuǎn)變成定點(diǎn)格式的x1。當(dāng)判斷結(jié)果為假時(shí),第一移位部分72通過把x移位一個(gè)取決于x數(shù)位數(shù)目的位數(shù),把整數(shù)值x轉(zhuǎn)變成定點(diǎn)格式的x1。
第二除法部分77的判斷部分71的判斷結(jié)果為真時(shí)不加改變地把x值作為x2輸出;在判斷結(jié)果為假時(shí),即在x>2^9時(shí),則把x/(2^j)的整數(shù)值作為x3輸出。由于第一存儲(chǔ)部分73只對(duì)0至2^9(即512)范圍內(nèi)的整數(shù)值q存儲(chǔ)了取決于q^(1/3)的值,所以x3值被用作第一存儲(chǔ)部分73的地址。因此,當(dāng)判斷部分71的判斷結(jié)果為真時(shí),即x≤512時(shí),x將不加改變地被作為x2輸出;但當(dāng)判斷結(jié)果為假時(shí),則將通過計(jì)算x/(2^j)的整數(shù)值來產(chǎn)生和輸出小于或等于512的x3值。
第一除法部分75獲取y除以4的商y1,模數(shù)計(jì)算部分76獲取y除以4的余數(shù)y2。然后,乘法部分78將下面三個(gè)值相乘第一存儲(chǔ)部分73的地址x2處的H(x2)值,調(diào)整系數(shù)發(fā)生部分74的地址y2,j處的I(y2,j)值,和第一移位部分72的輸出值x1。
通過這些操作,乘法部分78將按照從表達(dá)式(3)變換來的表達(dá)式(4)提供一個(gè)對(duì)應(yīng)于x*x^(1/3)*2^((y%4)/4)的值(一個(gè)其數(shù)位數(shù)目即增益被調(diào)整之前的值)。這是因?yàn)榈谝灰莆徊糠?2的輸出x1代表x被轉(zhuǎn)變成定點(diǎn)格式時(shí)的值,第一存儲(chǔ)部分73存儲(chǔ)對(duì)應(yīng)于定點(diǎn)格式的x^(1/3)的值,并且調(diào)整系數(shù)發(fā)生部分74存儲(chǔ)定點(diǎn)格式的對(duì)應(yīng)于0至3范圍內(nèi)的整數(shù)值p和j的2^(p/4)*2^(j/3)值。由于下述原因值2^(p/4)需要乘以2^(j/3)。當(dāng)x>2^N時(shí),第二除法部分77計(jì)算輸入值x除以2^j,以便用計(jì)算所得的值作為地址去查閱第一存儲(chǔ)部分73(一個(gè)用于指數(shù)為1/3的指數(shù)計(jì)算的表格)。因此,由于下列等式(6)成立,所以第一存儲(chǔ)部分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)這樣,為了計(jì)算x^(1/3),第一存儲(chǔ)部分73的輸出值必須乘以2^(j/3),因此這些值被預(yù)先設(shè)置在調(diào)整系數(shù)發(fā)生部分74中。
最后,第二移位部分79在判斷部分71的判斷結(jié)果為真時(shí)把乘法部分78的輸出值移位一個(gè)取決于(y1+9+3)的位數(shù);而當(dāng)判斷結(jié)果為假并且例如j=2時(shí),即2^10<x≤2^11時(shí),把該輸出值移位(y1+9+3+2)位。這個(gè)操作的作用如下。首先,把輸出值移位y1位的操作對(duì)應(yīng)于表達(dá)式(4)的第四項(xiàng)即2^int(y/4)的計(jì)算。y1值是第一除法部分75所得到的y除以4的商。
當(dāng)判斷部分71的判斷結(jié)果為真時(shí),要進(jìn)行把輸出值移位(y1+9+3)位的操作的原因如下。當(dāng)x≤2^9時(shí),原來是一個(gè)整數(shù)的x值被第一移位部分72用2^9進(jìn)行了歸一化,使之轉(zhuǎn)變成一個(gè)不大于1.0的值。原來小于或等于2^(9/3)的存儲(chǔ)在第一存儲(chǔ)部分73中的各個(gè)值也被用2^3歸一化,從而被轉(zhuǎn)變成不大于1.0的值。換言之,乘法部分78的輸出值需乘以2^(y1+9+3),也即移位(y1+9+3)位,從而把輸出值轉(zhuǎn)變成一個(gè)用原來的整數(shù)格式表示的值。
當(dāng)x>2^9時(shí),例如當(dāng)x位于2^10至2^11范圍內(nèi)時(shí),原來是一個(gè)整數(shù)的x值被第一移位部分72用2^(9+2)歸一化,從而被轉(zhuǎn)變成一個(gè)不大于1.0的值。原來小于或等于2^(9/3)的存儲(chǔ)在第一存儲(chǔ)部分73中的各個(gè)值也都被用2^3歸一化從而轉(zhuǎn)變成不大于1.0的值。
乘法部分78的輸出值乘以2^(9+3+2)等價(jià)于把該輸出值向上移位(9+3+2)=14位。這個(gè)移位操作把乘法部分78的輸出值轉(zhuǎn)變成一個(gè)用原來整數(shù)形式表示的值。
由于這些原因,第二移位部分79在判斷部分71的判斷結(jié)果為真時(shí)把乘法部分78的輸出值移位(y1+N+M)位;在判斷結(jié)果為假時(shí)把該輸出值移位(y1+N+M+j)位。這里應(yīng)該注意,在本例中,如前所述,由于圖23所示的結(jié)構(gòu),進(jìn)行了2個(gè)數(shù)位的調(diào)整,也即把已被移位的值再移位2位。
應(yīng)該理解,由于這些具有這種數(shù)字表示的值之間的大小關(guān)系是相對(duì)的,所以當(dāng)判斷部分71的判斷結(jié)果為假時(shí)要執(zhí)行第二移位部分79的操作的目的是,調(diào)整乘法部分78的輸出,使它比判斷結(jié)果為真時(shí)大j個(gè)數(shù)位。
如上所述,在本例中,即使對(duì)于大值的x也有可能利用一個(gè)如圖20所示的小容量表格僅僅通過簡單的移位操作來進(jìn)行計(jì)算。因此,有可能對(duì)任意的量化碼x快速地計(jì)算x^(4/3)*2^(y/4)。與例6相比,例7中的調(diào)整系數(shù)發(fā)生部分74需要有一個(gè)較大的表格,但卻能以更高的精度來進(jìn)行計(jì)算。
例8現(xiàn)在將參考
根據(jù)本發(fā)明例8的解碼裝置。本例的解碼裝置也接收按照MPEG2的聲頻編碼標(biāo)準(zhǔn)編碼的比特流,把含在其中的量化碼x和標(biāo)度因子y分離出來,并計(jì)算下列作為表達(dá)式(1)的一般形式的表達(dá)式(3)。
x^(a/b)*2^(y/c)(3)在本例中,量化碼x的變化范圍例如是0至8191,標(biāo)度因子y的變化范圍例如是-100至156。在本例中,表達(dá)式(3)被轉(zhuǎn)換成下列表達(dá)式(4)。
x*x^((a-b)/b)*2^((y%c)/c)*2^int(y/c)(4)現(xiàn)在將說明利用表達(dá)式(4)和一個(gè)只需要更小存儲(chǔ)容量的存儲(chǔ)部分來解碼輸入比特流的操作。
圖24是說明根據(jù)本發(fā)明例8的解碼裝置800的結(jié)構(gòu)的方框圖。解碼裝置800包含一個(gè)分離部分80、一個(gè)判斷部分81、一個(gè)第一移位部分82、一個(gè)第一存儲(chǔ)部分83、一個(gè)調(diào)整系數(shù)發(fā)生部分84、一個(gè)第一除法部分85、一個(gè)模數(shù)計(jì)算部分86、一個(gè)第二除法部分87、一個(gè)乘法部分88、和一個(gè)第二移位部分89。
參見圖24,分離部分80把量化碼x和標(biāo)度因子y從輸入比特流中分離出來。判斷部分81判斷以二進(jìn)制形式表示的量化碼x的數(shù)位數(shù)目k,并輸出k值。判斷部分81把k值提供給第二除法部分87、第一移位部分82、第二移位部分89、和調(diào)整系數(shù)發(fā)生部分84。
假定乘法部分88(后面將更詳細(xì)地說明)的功能是對(duì)具有數(shù)位寬度(D+2)的定點(diǎn)格式輸入值進(jìn)行計(jì)算,其中輸入值的最高位是符號(hào)位,第二最高位和小數(shù)點(diǎn)后面的D位代表輸入值的有效數(shù)字。然后,第一移位部分82通過把x移位D-k位而使整數(shù)值x轉(zhuǎn)變成具有定點(diǎn)格式的x1。
第一除法部分85執(zhí)行把分離部分80的輸出值y除以4的操作,并輸出該除法的商y1。模數(shù)計(jì)算部分86執(zhí)行把分離部分80的輸出值y除以4的操作,并輸出該除法的余數(shù)y2。第二除法部分87對(duì)分離部分80的輸出值x計(jì)算x/(2^(k-N))的整數(shù)值(其中N是一個(gè)預(yù)定閾值),并把得到的值作為x’輸出。具體地說,第二除法部分87通過在N-k>0時(shí)把x向上移位(N-k)位來計(jì)算x’;在N-k<0時(shí)把x向下移位(k-N)位來計(jì)算x’。
第一存儲(chǔ)部分83用q的低(N-1)位作為地址存儲(chǔ)對(duì)應(yīng)于q值的H(q)值(q是等于或大于2^(N-1)但小于2^N的整數(shù)值)。H(q)值是通過把q^((a-b)/b)值移位(D-M)位(其中M是N*(a-b)/b的整數(shù)值)從而把q^((a-b)/b)轉(zhuǎn)變成定點(diǎn)格式而得到的。
調(diào)整系數(shù)發(fā)生部分84對(duì)模數(shù)計(jì)算部分86的輸出值y2(y2=p)和k值產(chǎn)生2^(p/c)*2^((k-N)/b)的定點(diǎn)格式值,并把它作為I(p,k)。調(diào)整系數(shù)發(fā)生部分84含有一個(gè)存儲(chǔ)部分,其中預(yù)先存儲(chǔ)了I(p,k)值。
圖25示出解碼裝置800的調(diào)整系數(shù)發(fā)生部分84的內(nèi)容。圖25的調(diào)整系數(shù)發(fā)生部分84存儲(chǔ)了b=3、c=4時(shí)的I(p,k)值。這里應(yīng)該注意下述情況。在本例中k=13、N=9,所以2^(p/4)*2^((k-N)/3)的最大值是2^(3/4)*2^(4/3),它大于2.0。由于本例也使用了如圖28所示的定點(diǎn)格式,所以I(p,k)表格所存儲(chǔ)的是通過把2^(p/4)*2^((k-N)/3)向下移位2位所得到的值。當(dāng)然,在輸出信號(hào)中必須要考慮到這個(gè)移位2位的操作。這將在后面說明。
乘法部分88把以下三個(gè)值相乘第一存儲(chǔ)部分83的地址x’處的值,調(diào)整系數(shù)發(fā)生部分84的地址y2,k處的值,和第一移位部分82的輸出值x1。當(dāng)用M表示N*(a-b)/b的整數(shù)值時(shí),第二移位部分89根據(jù)判斷部分81的判斷結(jié)果把乘法部分88的輸出值移位(y1+M+k)位。在這個(gè)操作中,由于圖25所示的結(jié)構(gòu),需要執(zhí)行上述2個(gè)數(shù)位的調(diào)整,即已被移位的值還要被移位2位。
圖26示出解碼裝置800的第一存儲(chǔ)部分83的內(nèi)容。圖26所示表格含有以q的低(N-1)位作為地址的對(duì)應(yīng)于q值的H(q)值(其中q是等于或大于2^(N-1)但小于2^N的整數(shù))。H(q)值是通過把q^((a-b)/b值移位(D-M)位(其中M是N*(a-b)/b的整數(shù)值)而使q^((a-b)/b)值轉(zhuǎn)變成定點(diǎn)格式得到的。在本例中,H(q)值是在a=4、b=3、N=9、M=3和D=30情形下得到的。M=3是從9*(4-3)/3計(jì)算得到的。如上所述,在該表格的格式中,最高位是符號(hào)位,小數(shù)點(diǎn)位于第二最高位與第三最高位之間。所以H(q)的最小值為-2,最大值小于2。
這里應(yīng)該注意,在圖26中,對(duì)應(yīng)于q=256(=2^(N-1))的H(q)值存儲(chǔ)在地址0處,對(duì)應(yīng)于q=511(=2^N-1)的H(q)值存儲(chǔ)在地址255處。該表格有這樣的值是因?yàn)槿缦略?。?dāng)用k表示用二進(jìn)制形式表示的x值的數(shù)位數(shù)目時(shí),第二除法部分87在N-k為正時(shí)通過把x向上移位(N-k)位來計(jì)算x’;在N-k為負(fù)時(shí)通過把x向下移位(k-N)位來計(jì)算x’,所以x’的第N位永遠(yuǎn)為1。因此,圖26的表格可以只用x’的低(N-1)位來查閱。其結(jié)果是,表格的大小可以減小為一半。
如上所述,圖21示出了一種把一個(gè)整數(shù)值轉(zhuǎn)變成一個(gè)定點(diǎn)格式值的方法。在本例中,N=9、M=3和D=30,雖然這些值當(dāng)然也可以取其他值。例如,也可把N設(shè)定為10,這時(shí)M為整數(shù)值4,這是通過對(duì)10*(4-3)/3向上取整得到的。
現(xiàn)在將在a=4、b=3、c=4、M=3、N=9和D=30的假定下參考圖21和24至26說明具有這種結(jié)構(gòu)的解碼裝置800的操作。首先,圖24的分離部分80把量化碼x和標(biāo)度因子y從輸入比特流中分離出來。然后判斷部分81判斷以二進(jìn)制形式表示的量化碼x的數(shù)位數(shù)目k,并輸出k值。
接著,第一移位部分82通過把x移位(30-k)位而將整數(shù)值x轉(zhuǎn)變成定點(diǎn)格式值x1。
下面將進(jìn)一步詳細(xì)地說明這一操作。如圖28所示,在本例的定點(diǎn)格式中,最高位是符號(hào)位,小數(shù)點(diǎn)位于第二最高位與第三最高位之間。所以如圖21所示,可以通過把x向上移位(30-k)位來使之歸一化,變成定點(diǎn)格式所需的等于或小于1.0的值。
第二除法部分87在N-k為正時(shí)通過把x向上移位(N-k)位得到x’,在N-k為負(fù)時(shí)通過把x向下移位(k-N)位來獲得x’,并輸出得到的x’值。由于如前所述,x’的第N位永遠(yuǎn)為1,所以可以用x’的低(N-1)位作為地址去查閱第一存儲(chǔ)部分83。
第一除法部分85取得y除以4的商y1,模數(shù)計(jì)算部分86取得y除以4的余數(shù)y2。然后,乘法部分88將以下三個(gè)值相乘第一存儲(chǔ)部分83的地址x2(其中x2是由x’的低(N-1)位所代表的值)處的H(x2)值,調(diào)整系數(shù)發(fā)生部分84的地址x2,k處的I(y2,k)值,和第一移位部分82的輸出值x1。
通過這些操作,乘法部分88將提供一個(gè)對(duì)應(yīng)于按照從表達(dá)式(3)轉(zhuǎn)換成的表達(dá)式(4)的x*x^(1/3)*2^((y%4)/4)的值(一個(gè)其數(shù)位數(shù)目即增益被調(diào)整之前的值)。這是因?yàn)榈谝灰莆徊糠?2的輸出x1代表x被轉(zhuǎn)變成定點(diǎn)格式時(shí)的值,第一存儲(chǔ)部分83存儲(chǔ)了對(duì)應(yīng)于定點(diǎn)格式的x^(1/3)的值,并且調(diào)整系數(shù)發(fā)生部分84存儲(chǔ)了對(duì)應(yīng)于0至3范圍內(nèi)的整數(shù)值p和k值的定點(diǎn)格式的2^(p/4)*2^((k-N)/3)值。需要將2^(q/4)值乘以2^((k-N)/3)的原因如下。輸入值x已被第二除法部分87用x的數(shù)位數(shù)目k轉(zhuǎn)變成了x’=x/(2^(k-N)),而存儲(chǔ)在第一存儲(chǔ)部分83中的值是通過求取x’^(1/3)得到的,因此,第一存儲(chǔ)部分83的輸出值是x^(1/3)除以2^((k-N)/3),這是因?yàn)橄铝械仁?7)成立。
(x/(2^(k-N)))^(1/3)=x^(1/3)*(1/(2^(k-N)))^(1/3)=x^(1/3)/2^((k-N)/3)(7)所以,為了計(jì)算x^(1/3),第一存儲(chǔ)部分83的輸出值必須乘以2^((k-N)/3),因此這個(gè)值要預(yù)先設(shè)置在調(diào)整系數(shù)發(fā)生部分84中。
最后,第二移位部分89根據(jù)判斷部分81得到的k值把乘法部分88的輸出值移位取決于(y1+M+k)值的位數(shù)。這個(gè)操作的作用如下。首先,把該輸出值移位y1位的操作是一個(gè)對(duì)應(yīng)于表達(dá)式(4)的第四項(xiàng),即2^int(y/4)的計(jì)算。y1值是第一除法部分85得到的y除以4的商。
此外,執(zhí)行把輸出值移位(y1+M+k)位的操作的原因如下。原來是一個(gè)整數(shù)的x被第一移位部分82用2^k歸一化而轉(zhuǎn)變成了一個(gè)不大于1.0的值。原來小于或等于2^M的存儲(chǔ)在第一存儲(chǔ)部分83中的各個(gè)值也被用2^M歸一化而轉(zhuǎn)變成了不大于1.0的值(本例中M=9/3)。換言之,乘法部分88的輸出值需要乘以2^(y1+M+k),也即向上移位(y1+M+k)位才能轉(zhuǎn)變成用原來的整數(shù)格式表示的值。
這里應(yīng)該注意,如前所述,在本例中因圖25所示的結(jié)構(gòu)需進(jìn)行2個(gè)數(shù)位的調(diào)整,也就是已移位了的值還要向上移位2位。
應(yīng)該理解,由于在這些用這種數(shù)字表示的值之間的關(guān)系是相對(duì)的,并且M是一個(gè)預(yù)定常數(shù),所以第二移位部分89要執(zhí)行的操作是根據(jù)判斷部分81得到的k值和y1值來調(diào)整乘法部分88的輸出。
如上所述,在本例中,即使對(duì)于大值的x也有可能利用一個(gè)如圖26所示的小容量表格僅僅通過簡單的移位操作來進(jìn)行計(jì)算。因此,有可能對(duì)任何的量化碼x快速地計(jì)算x^(4/3)*2^(y/4)。與例7相比,例8中的調(diào)整系數(shù)發(fā)生部分84需要有較大的表格,但設(shè)置在第一存儲(chǔ)部分中的表格規(guī)??梢詼p小。
本發(fā)明提供了用來對(duì)輸入值x計(jì)算x^(a/b)的指數(shù)計(jì)算裝置,其中為了近似地計(jì)算x^(a/b),提供了一個(gè)對(duì)應(yīng)于位于一個(gè)預(yù)定范圍內(nèi)的輸入值x的小容量表格。于是,為了計(jì)算x^(a/b),不再需要一個(gè)大容量表格來存儲(chǔ)對(duì)應(yīng)于所有可能期望的x值的x^(a/b)值。這樣,有可能用小規(guī)模的硬件來近似地計(jì)算x^(a/b)。特別是,近似計(jì)算的精度可以通過下述措施而被很好地保持提供一個(gè)對(duì)應(yīng)于小于或等于閾值A(chǔ)的輸入值x’的表格,同時(shí)提供一個(gè)用來通過使x’=x/2^j而能指明變量x值的參數(shù)j,或者提供一個(gè)對(duì)應(yīng)于等于或大于2^(B-1)但小于2^(B-1)的x’值的表格。
根據(jù)本發(fā)明,當(dāng)輸入值x大于閾值A(chǔ)時(shí),可以通過向下移位若干位這樣的簡單方法來對(duì)x進(jìn)行除法操作和轉(zhuǎn)變。當(dāng)x取小于或等于閾值A(chǔ)的值的可能性較大時(shí),本發(fā)明將特別有效。
根據(jù)本發(fā)明,核心部分在一個(gè)表格中保持有對(duì)應(yīng)于x’的所有可能值的x’^(a/b)值或x’^(L/b)值,由此有可能通過查閱一個(gè)小容量表格而把x轉(zhuǎn)換成z’,從而減少了指數(shù)計(jì)算的成本。尤其是,當(dāng)核心部分在一個(gè)表格中保持有x’^(L/b)值時(shí),含在該表格中的z’值將比較小(從而數(shù)位數(shù)目比較少),由此進(jìn)一步減小了ROM表格的容量。
根據(jù)本發(fā)明,當(dāng)閾值A(chǔ)根據(jù)x的出現(xiàn)頻率確定,使得x小于或等于A的出現(xiàn)頻率等于或大于一個(gè)預(yù)定值時(shí),可以在基本上不降低信號(hào)解碼處理質(zhì)量的情況下減小核心部分的負(fù)載。
根據(jù)本發(fā)明,輸出控制部分含有一個(gè)用來存儲(chǔ)2^(j*a/b)值或2^((k-B)*a/b)值的存儲(chǔ)部分,并且輸出控制部分的輸入值被乘以一個(gè)用j或k作為地址從存儲(chǔ)部分讀出的值,從而輸出乘積值。這樣,本發(fā)明的實(shí)施基本上不增加所需的計(jì)算量。
根據(jù)本發(fā)明,當(dāng)B為整數(shù)且A=2^B時(shí),判斷部分在x>A時(shí)將確定出一個(gè)j值,使得x滿足2^(B+(j-1))≤x<2^(B+j)。因此,j值等于用二進(jìn)制形式表示的x的數(shù)位數(shù)目減去B值,從而輸入控制部分的操作可以利用簡單的移位操作來實(shí)現(xiàn)。
根據(jù)本發(fā)明,核心部分含有一個(gè)存儲(chǔ)部分,用來以q的最少(B-1)個(gè)低位作為地址對(duì)整數(shù)值q(其中q是等于或大于2^(B-1)但小于2^B的整數(shù))存儲(chǔ)q^(a/b)值。Z’值被乘以一個(gè)用x’的最少(B-1)個(gè)低位作為地址從存儲(chǔ)部分讀出的值,并輸出該乘積值,由此以十分簡單的比特操作實(shí)現(xiàn)了尋址訪問。
在本發(fā)明的解碼裝置中,即使當(dāng)量化碼x的值遠(yuǎn)小于它的變化范圍中的最大值時(shí),直到輸出計(jì)算結(jié)果的最后階段,x^(a/b)的值也可以保留較多的有效比特?cái)?shù)位,由此有可能以高精度計(jì)算x^(a/b)*2^(y/c)。
在本發(fā)明的解碼裝置中,即使當(dāng)量化碼x的值小時(shí),也仍可能通過定點(diǎn)格式的處理過程(DSP)來精確地計(jì)算x^(a/b)*2^(y/c)。此外,即使當(dāng)量化碼x的值大于存儲(chǔ)在小規(guī)模的第一存儲(chǔ)部分中的值時(shí),也仍可以利用該小規(guī)模的第一存儲(chǔ)部分來進(jìn)行計(jì)算。因此,有可能對(duì)量化碼x的任何值快速地計(jì)算x^(a/b)*2^(y/c)。
熟悉本技術(shù)領(lǐng)域的人們可以在不偏離本發(fā)明的范疇和精神的情況下明顯地看到和容易地實(shí)現(xiàn)各種其他的修改。所以,不希望把這里所附權(quán)利要求的范疇局限于這里所給出的說明,而希望能廣義地理解這些權(quán)利要求。
權(quán)利要求
1.一種用來對(duì)給定的輸入值x計(jì)算x^(a/b)(其中a和b均為整常數(shù))的指數(shù)計(jì)算裝置,它包括一個(gè)輸入控制部分,用來輸出x’的值,其中當(dāng)x≤A時(shí)x’=x(其中A是x變化范圍內(nèi)的一個(gè)閾值),當(dāng)x>A時(shí)x’=x/2^b;一個(gè)核心部分,用來輸出z’=x’^(a/b)的值;以及一個(gè)輸出控制部分,用來輸出z的值,其中當(dāng)x≤A時(shí)z=z’,當(dāng)x>A時(shí)z=z’*2^a。
2.根據(jù)權(quán)利要求1的指數(shù)計(jì)算裝置,其中當(dāng)x>A時(shí)輸入控制部分通過把x向下移位b個(gè)比特位來產(chǎn)生x’。
3.根據(jù)權(quán)利要求1的指數(shù)計(jì)算裝置,其中核心部分在一個(gè)表格中存儲(chǔ)對(duì)應(yīng)于所有可能的x’值(其中0≤x’≤A)的x’^(a/b)值。
4.根據(jù)權(quán)利要求1的指數(shù)計(jì)算裝置,其中A值的設(shè)定使得x小于或等于A的出現(xiàn)頻率等于或大于一個(gè)預(yù)定值。
5.一種用來對(duì)給定的輸入值x計(jì)算x^(a/b)(其中a和b均為整常數(shù))的指數(shù)計(jì)算裝置,它包括一個(gè)輸入控制部分,用來輸出x’的值,其中當(dāng)x≤A時(shí)(其中A是x的變化范圍內(nèi)的一個(gè)閾值)x’=x,當(dāng)x>A時(shí)x’=x/2^(b*n)(其中n是一個(gè)滿足關(guān)系式x/2^(b*n)≤A的整數(shù));一個(gè)核心部分,用來輸出z’=x’^(a/b)的值;以及一個(gè)輸出控制部分,用來輸出z的值,其中當(dāng)x≤A時(shí)z=z’,當(dāng)x>A時(shí)z=z’*2^(a*n)。
6.根據(jù)權(quán)利要求5的指數(shù)計(jì)算裝置,其中輸入控制部分在x>A時(shí)通過把x向下移位(b*n)個(gè)比特位來計(jì)算x’值。
7.根據(jù)權(quán)利要求5的指數(shù)計(jì)算裝置,其中核心部分在一個(gè)表格中對(duì)所有可能的x’值(其中0≤x’≤A)存儲(chǔ)x’^(a/b)的值。
8.根據(jù)權(quán)利要求5的指數(shù)計(jì)算裝置,其中A值的設(shè)定使得x小于或等于A的出現(xiàn)頻率等于或大于一個(gè)預(yù)定值。
9.一種用來對(duì)給定的輸入值x計(jì)算x^(a/b)(其中a和b均為整常數(shù))的指數(shù)計(jì)算裝置,它包括一個(gè)輸入控制部分,用來輸出x’的值,其中當(dāng)x≤A時(shí)(其中A是x的變化范圍內(nèi)的一個(gè)閾值)x’=x,當(dāng)x>A時(shí)x’=x/2^b;一個(gè)核心部分,用來輸出z’=x’^((a%b)/b)的值;一個(gè)輸出控制部分,用來輸出z的值,其中當(dāng)x≤A時(shí)z=z’,當(dāng)x>A時(shí)z=z’*2^(a%b);以及一個(gè)乘法部分,用來輸出z*(x^(int(a/b)))。
10.根據(jù)權(quán)利要求9的指數(shù)計(jì)算裝置,其中A值的設(shè)定使得x小于或等于A的出現(xiàn)頻率等于或大于一個(gè)預(yù)定值。
11.一種用來對(duì)給定的輸入值x計(jì)算x^(a/b)(其中a和b均為整常數(shù))的指數(shù)計(jì)算裝置,它包括一個(gè)判斷部分,用來輸出一個(gè)能指明x值的參數(shù)j(j是一個(gè)非負(fù)整數(shù));一個(gè)輸入控制部分,用來輸出x’的值,其中當(dāng)x≤A時(shí)(其中A是x的變化范圍內(nèi)的一個(gè)閾值)時(shí)x’=x,當(dāng)x>A時(shí)x’=x/2^j;一個(gè)核心部分,用來輸出z’=x^(a/b)的值;以及一個(gè)輸出控制部分,用來輸出z的值,其中當(dāng)x≤A時(shí)z=z’,當(dāng)x>A時(shí)z=z’*2^(j*a/b)。
12.根據(jù)權(quán)利要求11的指數(shù)計(jì)算裝置,其中輸出控制部分含有一個(gè)存儲(chǔ)部分,用來以j作為地址存儲(chǔ)2^(j*a/b)的值;并且當(dāng)x>A時(shí)z值是通過從存儲(chǔ)部分讀出相應(yīng)的2^(j*a/b)值來計(jì)算的。
13.根據(jù)權(quán)利要求11的指數(shù)計(jì)算裝置,其中A=2^B(B是一個(gè)整常數(shù));并且判斷部分所確定的j值使得當(dāng)x>2^b時(shí)滿足關(guān)系式2^(B+(j-1))≤x<2^(B+j),當(dāng)x≤2^b時(shí)有j=0。
14.一種用來對(duì)給定的輸入值x計(jì)算x^(a/b)(其中a和b均為整常數(shù))的指數(shù)計(jì)算裝置,它包括一個(gè)判斷部分,用來輸出一個(gè)代表以二進(jìn)制形式表示的x的數(shù)位數(shù)目的k值;一個(gè)輸入控制部分,用來輸出x’的值,其中x’值是這樣得到的當(dāng)(B-k)值為正時(shí)把x向上移位(B-k)個(gè)比特位,當(dāng)(B-k)值為負(fù)時(shí)把x向下移位(k-B)個(gè)比特位;一個(gè)核心部分,用來輸出z’=x’^(a/b)的值;以及一個(gè)輸出控制部分,用來輸出z=z’*(2^((k-B)*a/b))的值。
15.根據(jù)權(quán)利要求14的指數(shù)計(jì)算裝置,其中輸出控制部分含有一個(gè)存儲(chǔ)部分,用來以k作為地址存儲(chǔ)2^((k-B)*a/b)的值;并且z值是通過從存儲(chǔ)部分讀出相應(yīng)的2^((k-B)*a/b)值來計(jì)算的。
16.根據(jù)權(quán)利要求14的指數(shù)計(jì)算裝置,其中核心部分含有一個(gè)存儲(chǔ)部分,用來以q最少(B-1)個(gè)低比特位作為地址存儲(chǔ)q^(a/b)的值(其中2^(B-1)≤q<2^B,并且q是一個(gè)整數(shù));并且z’的值是通過用x’的最少(B-1)個(gè)低比特位作為地址從存儲(chǔ)部分讀出相應(yīng)的q^(a/b)值來計(jì)算的。
17.一種用來從一個(gè)含有量化碼x和標(biāo)度因子y的輸入比特流中提取一個(gè)可變的量化碼x和一個(gè)可變的標(biāo)度因子y并計(jì)算x^(a/b)*2^(y/c)(其中a、b、c均為整常數(shù))的解碼裝置,該裝置包括一個(gè)分離部分,用來把x和y從輸入比特流中分離出來;一個(gè)第一移位部分,用來在x≤2^N(其中N是一個(gè)預(yù)定閾值)時(shí)把x移位一個(gè)取決于N的比特位數(shù),從而把x轉(zhuǎn)變成具有定點(diǎn)格式的x1;一個(gè)第一移位部分,用來在x≤2^N(其中N是一個(gè)預(yù)定閾值)時(shí)把x移位一個(gè)取決于N的比特位數(shù),從而把x轉(zhuǎn)變成具有定點(diǎn)格式的x1;一個(gè)第一存儲(chǔ)部分,用來以q作為地址對(duì)所有可能的q值(其中q是滿足關(guān)系式0≤q≤2^N的整數(shù))存儲(chǔ)通過把q^((a-b)/b)移位一個(gè)取決于M(其中M是N*(a-b)/b的整數(shù)值)的比特位數(shù)而被轉(zhuǎn)變成定點(diǎn)格式的H(q)值;一個(gè)第二存儲(chǔ)部分,用來對(duì)所有可能的p值(其中0≤p<c)存儲(chǔ)具有定點(diǎn)格式的G(p)=2^(p/c)的值;一個(gè)除法部分,用來計(jì)算y1,其中y1=int(y/c);一個(gè)模數(shù)計(jì)算部分,用來計(jì)算y2=y%c;一個(gè)乘法部分,用來輸出通過將以下三個(gè)值相乘所得到的值;用x作為地址從第一存儲(chǔ)部分讀出的H(x)的值,用y2作為地址從第二存儲(chǔ)部分讀出的G(y2)值,和由第一移位部分轉(zhuǎn)變成的x1的值;以及一個(gè)第二移位部分,用來把乘法部分的輸出值移位一個(gè)取決于由除法部分得到的y1的比特位數(shù)。
18.根據(jù)權(quán)利要求17的解碼裝置,其中取決于N的比特位數(shù)是(D-N)(其中D是定點(diǎn)計(jì)算操作中所涉及的數(shù)的小數(shù)部分的有效數(shù)字位數(shù));并且取決于y1的比特位數(shù)是(y1+(N+M))。
19.根據(jù)權(quán)利要求17的解碼裝置,其中M是通過把(N*(a-b))/b向上取整得到的整數(shù)。
20.根據(jù)權(quán)利要求17的解碼裝置,其中a=4、b=3、c=4。
21.根據(jù)權(quán)利要求17的解碼裝置,它還包括一個(gè)判斷部分,用來在x≤2^N時(shí)輸出判斷結(jié)果為真,在x>2^N時(shí)輸出判斷結(jié)果為假;以及一個(gè)第二除法部分,用來在判斷結(jié)果為真時(shí)不加改變地輸出x值,還用來輸出通過把x除以(2^(b*i))所得到的值,其中第一移位部分在判斷結(jié)果為假時(shí)把x移位一個(gè)取決于(N+b*i)的比特位數(shù)(其中i為一個(gè)非負(fù)整數(shù));第一存儲(chǔ)部分對(duì)位于x變化范圍內(nèi)的q值存儲(chǔ)H(q)值;并且第二移位部分在判斷結(jié)果為真時(shí)把乘法部分的輸出值移位一個(gè)取決于y1的比特位數(shù),在判斷結(jié)果為假時(shí)把該輸出值移位一個(gè)取決于y1和a*i的比特位數(shù)。
22.根據(jù)權(quán)利要求21的解碼裝置,其中取決于N的比特位數(shù)是(D-N);取決于(N+b*i)的比特位數(shù)是D-(N+b*i);取決于M的比特位數(shù)是(D-M);取決于y1的比特位數(shù)是(y1+N+M);并且取決于y1和a*i的比特位數(shù)是(y1+N+M+a*i)。
23.根據(jù)權(quán)利要求21的解碼裝置,其中i值的確定使得x滿足關(guān)系式2^(N+B(i-1))<x≤2^(N+bi)。
24.根據(jù)權(quán)利要求21的解碼裝置,它還包括一個(gè)判斷部分,用來在x≤2^N時(shí)輸出判斷結(jié)果為真,在x>2^N時(shí)輸出判斷結(jié)果為假,還用來輸出能指明x值的一個(gè)參數(shù)i,其中第一移位部分、第二除法部分和第二移位部分都根據(jù)判斷部分的判斷結(jié)果進(jìn)行操作。
25.根據(jù)權(quán)利要求24的解碼裝置,其中第二移位部分在判斷結(jié)果為真時(shí)把乘法部分的輸出值移位一個(gè)取決于y1的比特位數(shù),在判斷結(jié)果為假時(shí)把該輸出值移位一個(gè)取決于y1+(a*i)的比特位數(shù)。
26.一種用來從一個(gè)含有量化碼x和標(biāo)度因子y的輸入比特流中提取一個(gè)可變的量化碼x和一個(gè)可變的標(biāo)度因子y并計(jì)算x^(a/b)*2^(y/c)(其中a、b、c均為整常數(shù))的解碼裝置,該裝置包括一個(gè)分離部分,用來把x和y從輸入比特流中分離出來;一個(gè)判斷部分,用來在x≤2^N(其中N是一個(gè)預(yù)定閾值)時(shí)輸出判斷結(jié)果為真,在x>2^N時(shí)輸出判斷結(jié)果為假,還用來輸出一個(gè)能指明x值的參數(shù)j;一個(gè)第一移位部分,用來在判斷結(jié)果為真時(shí)把x移位一個(gè)取決于N的比特位數(shù),在判斷結(jié)果為假時(shí)把x移位一個(gè)取決于(N+j)的比特位數(shù),從而把x轉(zhuǎn)變成具有定點(diǎn)格式的x1;一個(gè)第一除法部分,用來計(jì)算y1,其中y1=int(y/c);一個(gè)第二除法部分,用來輸出x’的值,其中當(dāng)判斷結(jié)果為真時(shí)x’=x,并且x’是x/(2^j)的整數(shù)值;一個(gè)第一存儲(chǔ)部分,用來以q作為地址對(duì)位于x’變化范圍內(nèi)的所有可能的q值(其中q是滿足關(guān)系式0≤q≤2^N的整數(shù))存儲(chǔ)通過把q^((a-b)/b)移位一個(gè)取決于M的比特位數(shù)(其中M是(N*(a-b)/b)的整數(shù)值)而被轉(zhuǎn)變成定點(diǎn)格式的H(q)的值;一個(gè)調(diào)整系數(shù)發(fā)生部分,用來對(duì)滿足0≤p<c的所有可能的p值和所有可能的j值按照2^(p/c)*2^(j/b)產(chǎn)生定點(diǎn)格式的I(p,j)值;一個(gè)模數(shù)計(jì)算部分,用來計(jì)算y2=y%c;一個(gè)乘法部分,用來輸出以下三個(gè)值的乘積值用x’作為地址從第一存儲(chǔ)部分讀出的H(x’)的值,對(duì)應(yīng)于y2和由調(diào)整系數(shù)發(fā)生部分產(chǎn)生的j的I(y2,j)的值,和由第一移位部分轉(zhuǎn)變而成的x1值;以及一個(gè)第二移位部分,用來在x≤2^N時(shí)把乘法部分的輸出值移位一個(gè)取決于y1的比特位數(shù),在x>2^N時(shí)把該輸出值移位一個(gè)取決于y1和j的比特位數(shù)。
27.根據(jù)權(quán)利要求26的解碼裝置,其中調(diào)整系數(shù)發(fā)生部分含有一個(gè)第二存儲(chǔ)部分,用來以p和j作為地址存儲(chǔ)I(p,j)的值。
28.根據(jù)權(quán)利要求26的解碼裝置,其中j值的確定使得當(dāng)x>2^N時(shí)滿足關(guān)系式2^(N+(j-1))<x≤2^(N+j),而當(dāng)x≤2^N時(shí)j=0。
29.根據(jù)權(quán)利要求26的解碼裝置,其中a=4、b=3、c=4。
30.一種用來從一個(gè)含有量化碼x和標(biāo)度因子y的輸入比特流中提取一個(gè)可變的量化碼x和一個(gè)可變的標(biāo)度因子y并計(jì)算x^(a/b)*2^(y/c)(其中a、b、c均為整常數(shù))的解碼裝置,該裝置包括一個(gè)分離部分,用來把x和y從輸入比特流中分離出來;一個(gè)判斷部分,用來判斷以二進(jìn)制形式表示的x的數(shù)位數(shù)目k;一個(gè)第二除法部分,用來輸出x’的值,其中x’值是這樣得到的當(dāng)(N-k)值為正時(shí)把x向上移位(N-k)個(gè)比特位,當(dāng)(N-k)值為負(fù)時(shí)把x向下移位(k-N)個(gè)比特位;一個(gè)第一移位部分,用來把x移位一個(gè)取決于k的比特位數(shù),從而把x轉(zhuǎn)變成具有定點(diǎn)格式的x1;一個(gè)第一除法部分,用來計(jì)算y1,其中y1=int(y/c);一個(gè)第一存儲(chǔ)部分,用來以q的至少(N-1)個(gè)低位(其中q是滿足關(guān)系式2^(N-1)≤q<2^N的整數(shù))作為地址存儲(chǔ)通過把q^((a-b)/b)移位一個(gè)取決于M的比特位數(shù)(其中M是(N*(a-b)/b)的整數(shù)值)而被轉(zhuǎn)變成定點(diǎn)格式的H(q)值;一個(gè)調(diào)整系數(shù)發(fā)生部分,用來對(duì)所有可能滿足0≤p<c的p值和所有可能的k值按照2^(p/c)*2^((k-N)/b)產(chǎn)生具有定點(diǎn)格式的I(p,k)值;一個(gè)模數(shù)計(jì)算部分,用來計(jì)算y2=y%c;一個(gè)乘法部分,用來輸出以下三個(gè)值的乘積值用x’的至少(N-1)個(gè)低比特位作為地址從第一存儲(chǔ)部分讀出的H(x’)值,對(duì)應(yīng)于y2和由調(diào)整系數(shù)發(fā)生部分產(chǎn)生的k的I(y2,k)值,和由第一移位部分轉(zhuǎn)變而成的x1值;以及一個(gè)第二移位部分,用來把乘法部分的輸出值移位一個(gè)取決于y1、M和k的比特位數(shù)。
31.根據(jù)權(quán)利要求30的解碼裝置,其中調(diào)整系數(shù)發(fā)生部分含有一個(gè)第二存儲(chǔ)部分,用來以p和k作為地址存儲(chǔ)I(p,k)的值。
32.根據(jù)權(quán)利要求30的解碼裝置,其中a=4、b=3、c=4。
全文摘要
本發(fā)明的一種裝置是一種用來對(duì)給定的輸入值x計(jì)算x^(a/b)(其中a和b均為整常數(shù))的指數(shù)計(jì)算裝置。該裝置包含:一個(gè)輸入控制部分,用來輸出x’的值,其中當(dāng)x≤A時(shí)(其中A是x的變化范圍內(nèi)的一個(gè)閾值)x’=x,當(dāng)x>A時(shí)x’=x/2^b;一個(gè)核心部分,用來輸出z’=x’^(a/b)的值;以及一個(gè)輸出控制部分,用來輸出z的值,其中當(dāng)x≤A時(shí)z=z’,當(dāng)x>A時(shí)z=z’*2^a。
文檔編號(hào)G10L19/02GK1226039SQ9910187
公開日1999年8月18日 申請(qǐng)日期1999年2月4日 優(yōu)先權(quán)日1998年2月4日
發(fā)明者宮坂修二, 藤田剛史, 末吉雅弘, 川村明久, 松本正治, 片山崇, 阿部一任, 西尾孝祐 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社