JP4063434B2 - 巾乗算出装置 - Google Patents
巾乗算出装置 Download PDFInfo
- Publication number
- JP4063434B2 JP4063434B2 JP00856299A JP856299A JP4063434B2 JP 4063434 B2 JP4063434 B2 JP 4063434B2 JP 00856299 A JP00856299 A JP 00856299A JP 856299 A JP856299 A JP 856299A JP 4063434 B2 JP4063434 B2 JP 4063434B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- power
- outputting
- input
- control means
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、変数xの(M/N)乗を算出する巾乗算出装置に関し、特に、MPEG2オーディオ符号化方式AACのデコード処理において用いられ、xの(4/3)乗の計算を少ない回路構成により実現する巾乗算出装置に関する。
【0002】
【従来の技術】
従来、変数xに対し、y=x∧(M/N)(本明細書において、「xの(M/N)乗」を「x∧(M/N)」と表記する。また、「∧」は巾乗記号であり、「/」は除算記号であり、「*」は乗算記号であるものとする。)を算出する場合には、xをアドレス値としたテーブルにxのとり得る全ての値に対するx∧(M/N)の値を予め格納しておき、テーブルに格納された値を読み出すことによって特定のxの値に対するyの値を得ていた。
【0003】
図16は、0≦x≦8191の場合のx∧(4/3)の値のテーブルを示す。MPEG2オーディオ符号化方式AACのデコード処理においては、0〜8191の間の値xに対して、x∧(4/3)の値を算出する処理を行う必要がある。上記した従来のx∧(M/N)の値を求める方法を、MPEG2オーディオ符号化方式AACのデコード処理で用いられる巾乗処理に適用する場合には、図16に示すテーブルを予め設けておき、入力値xをアドレスとして該テーブルを読み出し、出力値yをx∧(4/3)の値として得ていた(ISO/IEC 13818-73:1997 p57参照)。
【0004】
【発明が解決しようとする課題】
上記した従来のx∧(M/N)の値を求める方法を使用する場合、x∧(M/N)の値を格納したテーブルとして多大な記憶領域が必要となる。例えば、図16の例においては、格納されたx∧(M/N)の値を32ビットの固定小数点値とすると、テーブルとして32kバイトの記憶領域が必要である。そのため、特にxの変域が広い場合には、多大な記憶領域のためにハードウェアが大規模になってしまうという問題があった。
【0005】
本発明は、テーブルとして必要な記憶領域の量を削減することにより、入力値xに対してx∧(M/N)の計算を行うことができる巾乗算出装置のハードウェア規模を小さくすることを目的とする。
【0006】
【課題を解決するための手段】
本発明の巾乗算出装置は、入力値xに対してx∧(M/N)の値を算出する(M,Nは整数の定数)巾乗算出装置であって、x≦Aの場合(Aはxの変域内における所定の閾値)にx’=xとし、x>Aの場合にx’=x/2∧Nとして、x’の値を出力する入力制御手段と、y’=x’∧(M/N)の値を出力するコア手段と、x≦Aの場合にy=y’とし、x>Aの場合にy=y’*2∧Mとして、yの値を出力する出力制御手段とを備えており、これにより上記目的が達成される。
【0007】
前記入力制御手段は、x>Aの場合にxの値をNビットシフトダウンすることによりx’の値を算出してもよい。
【0008】
本発明の別の巾乗算出装置は、入力値xに対してx∧(M/N)の値を算出する(M,Nは整数の定数)巾乗算出装置であって、x≦Aの場合(Aはxの変域内における所定の閾値)にx’=xとし、x>Aの場合にx’=x/2∧(N*n)として(nはx/2∧(N*n)≦Aの条件を満たす整数)、x’の値を出力する入力制御手段と、y’=x’∧(M/N)の値を出力するコア手段と、x≦Aの場合にy=y’とし、x>Aの場合にy=y’*2∧(M*n)として、yの値を出力する出力制御手段とを備えており、これにより上記目的が達成される。
【0009】
前記入力制御手段は、x>Aの場合にxの値を(N*n)ビットシフトダウンすることによりx’の値を算出してもよい。
【0010】
前記入力制御手段は、xの値をシフトダウンする際に0捨1入処理を行ってもよい。
【0011】
前記コア手段は、x’のとり得る全ての値(0≦x’≦A)について、x’∧(M/N)の値をテーブルとして保持してもよい。
【0012】
前記コア手段は、L=M/m(mは正の定数)とするとき、x’のとり得る全ての値(0≦x’≦A)について、x’∧(L/N)の値をテーブルとして保持し、前記テーブルに保持するx’∧(L/N)の値をm乗することによりyの値を算出してもよい。
【0013】
本発明の別の巾乗算出装置は、入力値xに対してx∧(M/N)の値を算出する(M,Nは整数の定数)巾乗算出装置であって、x≦Aの場合(Aはxの変域内における所定の閾値)にx’=xとし、x>Aの場合にx’=x/2∧Nとして、x’の値を出力する入力制御手段と、y’=x’∧((M%N)/N)の値を出力するコア手段と、x≦Aの場合にy=y’とし、x>Aの場合にy=y’*2∧(M%N)として、yの値を出力する出力制御手段と、y*(x∧(int(M/N)))を出力する乗算手段とを備えており、これにより上記目的が達成される。
【0014】
所定の割合以上でx≦AとなるようにAが設定されていてもよい。
【0015】
本発明の別の巾乗算出装置は、入力値xに対してx∧(M/N)の値を算出する(M,Nは整数の定数)巾乗算出装置であって、xの値の大きさを特定するためのパラメータj(jは負でない整数)を出力する判定手段と、x≦Aの場合(Aはxの変域内における閾値)にx’=xとし、x>Aの場合にx’=x/2∧jとして、x’の値を出力する入力制御手段と、y’=x’∧(M/N)の値を出力するコア手段と、x≦Aの場合にy=y’とし、x>Aの場合にy=y’*2∧(j*M/N)として、yの値を出力する出力制御手段とを備えており、これにより上記目的が達成される。
【0016】
前記出力制御手段は、jの値をアドレスとして2∧(j*M/N)の値を保持する記憶装置を有し、x>Aの場合に2∧(j*M/N)の値を前記記憶装置から読み出すことによりyの値を算出してもよい。
【0017】
A=2∧B(Bは整数の定数)であり、前記判定手段は、x>2∧Nの場合に2∧(B+(j−1))≦x<2∧(B+j)を満たすようにjの値を決定し、x≦2∧Nの場合にj=0としてもよい。
【0018】
本発明の別の巾乗算出装置は、入力値xに対してx∧(M/N)の値を算出する(M,Nは整数の定数)巾乗算出装置であって、xの値を2進数で表現したときの桁数kの値を出力する判定手段と、整数Bについて、(B−k)が正の場合にxを(B−k)ビットシフトアップした値をx’とし、(B−k)が負の場合にxを(k−B)ビットシフトダウンした値をx’として、x’の値を出力する入力制御手段と、y’=x’∧(M/N)の値を出力するコア手段と、y=y’*(2∧((k−B)*M/N))の値を出力する出力制御手段とを備えており、これにより上記目的が達成される。
【0019】
前記出力制御手段は、kの値をアドレスとして2∧((k−B)*M/N)の値を保持する記憶装置を有し、2∧((k−B)*M/N)の値を前記記憶装置から読み出すことによりyの値を算出してもよい。
【0020】
前記コア手段は、(2∧(B−1)≦q<2∧B、qは整数)qの少なくとも下位(B−1)ビットをアドレスとして、q∧(M/N)の値を保持する記憶装置を有し、x′の少なくとも下位(B−1)ビットをアドレスとして前記記憶装置からq∧(M/N)の値を読み出すことによりy’の値を算出してもよい。
【0021】
【発明の実施の形態】
最初に、本発明の原理について説明する。本発明の巾乗算出装置は、所定の値A以下の入力値xに対するx∧(M/N)の値のみをテーブルとして用意しておき、このテーブルを利用することにより、全ての入力値xに対するx∧(M/N)の値を得る。本発明の巾乗算出装置は、Aを超える入力値xに対するx∧(M/N)の値のテーブルを用意していないため、入力として想定される全ての値xに対してx∧(M/N)の値をテーブルとして用意する従来の巾乗算出装置よりも、テーブルとして必要な記憶領域が小さい。
【0022】
以下、本発明の巾乗算出装置の基本的な動作原理を算術式を用いて説明する。巾乗算出装置の入力値をxとし、求める値をy=x∧(M/N)とする。ここで、入力値xは、例えばオーディオデータの復号処理で用いられる信号の振幅を表し、Aはxのとり得る範囲内の閾値とする。
【0023】
x≦Aの場合、x∧(M/N)の値はテーブルとして予め用意されている。そのため、x≦Aの場合にはテーブルをそのまま用いればx∧(M/N)の値を求めることができる。
【0024】
x>Aの場合、予めx'≦Aとなるように、xを所定の値で割っておく。x'に対してテーブルを読み出し、得られた値に前記所定の値を乗ずることによって、任意のxに対するx∧(M/N)の値を得る。例えば、M=4、N=3であれば、8*A≧x>Aの場合、まず、x’=x/8としてx’を求める。そしてx’に対してテーブルを読み出し、y’を得る。y’=(x/8)∧(4/3)であるので、求めるx∧(4/3)はy’*(8∧(4/3))=y’*16となる。
【0025】
(実施形態1)
次に、本発明の実施形態1における巾乗算出装置について図面を参照しながら説明する。本実施形態における巾乗算出装置は、巾乗値x∧(4/3)の値を求める巾乗算出装置である。ここで、入力値xの範囲は0〜8191とする。巾乗算出装置が求める巾乗値x∧(4/3)及び入力値xの範囲はMPEG2オーディオAAC規格に準拠したものである(ISO/IEC 13818-7:1997、P57 参照)。
【0026】
図1は、本発明の実施形態1の巾乗算出装置100の構成を示すブロック図である。この巾乗算出装置100は、入力制御手段10と、コア手段11と、出力制御手段12とを備えている。
【0027】
図2は、巾乗算出装置100の信号処理手順を示すフローチャートである。図2は、入力制御手段10、コア手段11、出力制御手段12のそれぞれにおける信号処理手順を示している。図2を参照して、巾乗算出装置100の各部の詳細を説明する。
【0028】
入力制御手段10は、入力値xが閾値A、例えば1023以下か否かを判定し、1023以下の場合、値xをx’としてそのままコア手段11に与え、入力値xが1023より大きい場合、値xを2∧3で割った値をx’としてコア手段11に与える手段である。
【0029】
コア手段11は、0から1023までの値x’に対して、x’∧(4/3)の値を与える手段である。図2に示すコア手段11をコア手段11Aとする。コア手段11Aは、ROMテーブル1であるy’=ROMTABLE1[x’]を有している。コア手段11Aは、x’に対するROMテーブル1の読出値をy’として出力する。
【0030】
図3は、巾乗算出装置100のコア手段11Aが備えているROMテーブル1の内容を示す図である。ROMテーブル1には、0から1023までの値x’に対するx’∧(4/3)の値が予め計算されて格納されている。
【0031】
出力制御手段12は、入力値xが1023以下の場合、コア手段11Aの出力値y’をyとしてそのまま出力し、入力値xが1023より大きい場合、コア手段11Aの出力値y’を2∧4倍した値yとして出力する手段である。
【0032】
以下、上記のような構成の巾乗算出装置100の動作について説明する。まず図2の入力制御手段10は、入力値xが与えられると、ステップS10においてその値xが1023以下か否かを判定する。入力値xが1023以下の場合はステップS11に進み、値xをそのまま値x’としてコア手段11Aに与える。ステップS10において入力値xが1023より大きいと判定された場合は、ステップS12に進み、値xを2∧3で割った値をx’としてx’をコア手段11Aに与える。値xを2∧3で割る方法としては、値xを3ビットシフトダウンする方法でも良いし、0捨1入の丸め処理のために、値xに4を足した後、3ビットシフトダウンする方法でも良い。
【0033】
次に、コア手段11Aにおいては、ステップS13において入力制御手段10から与えられた値x’に対して、x’∧(4/3)の値を図3のROMテーブル1より読み出す。
【0034】
図4は、巾乗算出装置100の別のコア手段11Bの信号処理方法を示すフローチャートである。コア手段11Bは、コア手段11の別の構成例である。すなわち、図2のコア手段11Aに代えて、図4に示すコア手段11Bをコア手段11として用いてもよい。コア手段11Bでは、LをM/m(mは正の定数)とするとき、0から閾値Aまでの値x’に対してx’∧(L/N)の値y’を予めROMテーブル2として保持する。コア手段11Bは、ROMテーブル2の読出値y’をm乗した値を新たなy’として出力する。
【0035】
図5は、巾乗算出装置100の別のコア手段11Bが備えているROMテーブル2の内容を示す。0〜1023を変域とするx’に対して、m=4,L=1としてx’∧(L/N)、すなわちx’∧(1/3)の値を格納したROMTABLE2[x’]を用いる。図4のステップS17におけるROMテーブル2の読み出し値y’に対して、次のステップS18では、出力値y’を4乗することによって、x’(4/3)の値に変換することができる。このような乗算計算は新たに必要になるが、DSPの乗算器を用いることにより簡単に計算することができる。そのため、ROMテーブルを小規模なもので済ますことができる。
【0036】
最後に図2の出力制御手段12では、ステップS14において入力値xが1023以下か否かを判定し、1023以下の場合はステップS15に進み、コア手段11の出力値をそのまま出力する。ステップS14において入力値xが1023より大きいと判定された場合は、ステップS16に進み、コア手段11の出力値を2∧4倍した値を出力する。
【0037】
以上のように本実施形態によれば、入力として想定されるxの全ての値、ここでは0〜8191までのxに対してx∧(M/N)の値を用意しておくのではなく、予め定められた閾値A=1023に対し、A以下の入力値xに対してのみ、x∧(M/N)の値を用意しておく。こうすると、Aを越える入力値xに対してもx∧(M/N)の値を概算することができる。このため少ないハードウェア規模で、巾乗の計算ができることとなる。
【0038】
ここで閾値Aの値として1023を選んだ理由について述べる。MPEG2オーディオAAC規格においては、x∧(4/3)処理の入力値としては、0から8191までが有り得るが、実際には、その大半の値が0から1023までに集中している。そこで、0から1023までのxに対しては、x∧(4/3)の処理を正確に行わなければ音質の劣化につながる。逆に、1024以上のxに対しては、その値を持つxが殆ど出現しないので、それ程正確な値を算出しなくても、音質の劣化につながらない。そこで1024を越えるxについては、本実施形態の方法に従って概算値を出力するように設定する。
【0039】
更に実際には、入力値xは1023以下の範囲の中でも、とりわけ255以下の範囲に集中している。このため、統計上の閾値Aを255と設定してもよい。統計上の閾値Aを255と設定した例については、次の実施形態で述べる。
【0040】
(実施形態2)
次に、本発明の実施形態2における巾乗算出装置について、図面を参照しながら説明する。ここでは、巾乗値x∧(M/N)の具体例として、x∧(4/3)の値を求める巾乗算出装置として説明する。この演算方法は、M,NをM>Nを満足する整数とし、M/Nの値を整数部と小数部に分けて巾乗演算を行うことを特徴とする。記号int ( )を小数点以下切り捨て処理とし、記号( % )を除算による剰余値(整数)を出力する処理とするとき、整数部の演算はx∧(int (M/N))として表現できる。また小数部の演算はx∧((M%N)/N)として表現できる。
【0041】
実施形態1と同様に入力値xの範囲は0〜8191までとする。これは、MPEG2オーディオAAC規格に準拠したものである(ISO/IEC 13818-7:1997)。
【0042】
図6は、本発明の実施形態2の巾乗算出装置300の構成を示すブロック図である。巾乗算出装置300は、入力制御手段30と、コア手段31と、出力制御手段32と、乗算手段33とを備えている。
【0043】
図7は、巾乗算出装置300の信号処理方法を示すフローチャートである。
図7は、入力制御手段30、コア手段31、出力制御手段32、乗算手段33のそれぞれにおける信号処理手順を示している。
【0044】
入力制御手段30は、入力値xが第1の閾値A1である255以下の場合、値xをx’としてそのままコア手段31に与え、入力値xが255を越え、第2の閾値A2である2047以下の場合、値xを2∧3で割った値をx’としてコア手段31に与える。そして、入力値xが2048以上の場合、値xを2∧6で割った値をx’としてコア手段31に与える。
【0045】
図8は、巾乗算出装置300のコア手段31が備えているROMテーブル3の内容を示す。コア手段31は、図8に示すようなROMテーブル3を有し、0から255までの値x’に対して、x’∧((M%N)/N)、すなわちx’∧(1/3)の値を与える手段である。図8のROMテーブル3には、0から255までの値x’に対するx’∧(1/3)の値が予め格納されている。
【0046】
出力制御手段32は、入力値xが第1の閾値A1以下の場合、コア手段31の出力値をそのまま出力し、入力値xが第1の閾値A1を越え、第2の閾値A2以下の場合、コア手段31の出力値y’を2∧(M%N)倍した値をyとして出力する。そして入力値xが第2の閾値A2を越える場合、コア手段31の出力値を2∧((M%N)*2)倍した値を出力する。乗算手段33は、x∧(int (M/N))の値と、出力制御手段32の出力値yを乗算し、乗算結果を新たな出力値yとして出力する。
【0047】
このように構成された実施形態2の巾乗算出装置の動作について説明する。まず図7のステップS20において、入力制御手段30は、入力値xが第1の閾値A1である255以下か否かを判定する。入力値xが255以下の場合ステップS21に進み、値xをそのままx’としてコア手段31に与える。またステップS20において、入力値xが256以上の場合はステップS22に進み、入力値xが第2の閾値A2である2047以下か否かを判定する。2047以下の場合はステップS23に進み、値xを2∧3で割った値をx’としてコア手段31に与える。ステップS22において、入力値xが2048以上と判定された場合
、ステップS24に進んで、値xを2∧6で割った値をx’としてコア手段31に与える。
【0048】
ここで、値xを2∧3で割る方法としては、値xを3ビットシフトダウンする方法でも良いし、0捨1入の丸め処理のために、値xに4を足した後、3ビットシフトダウンする方法でも良い。また、値xを2∧6で割る方法としては、値xを6ビットシフトダウンする方法でも良いし、0捨1入の丸め処理のために、値xに32を足した後、6ビットシフトダウンする方法でも良い。
【0049】
次に、コア手段31のステップS25では、入力制御手段30から与えられた値x’に対して、図8に示すようなROMテーブル3を用いて、x’∧(1/3)の値を読み出す。
【0050】
次に、出力制御手段32では、ステップS26において入力値xが255以下か否かを判定する。255以下の場合はステップS27に進み、コア手段31の出力値をそのまま出力する。ステップS26において入力値xが256以上と判定された場合はステップS28に進む。ここでは入力値xが2047以下か否かを判定し、2047以下であればステップS29に進み、2048以上であればステップS30に進む。ステップS29ではコア手段31の出力値を2∧1倍した値を出力し、ステップS30ではコア手段31の出力値を2∧2倍した値を出力する。
【0051】
最後に、乗算手段33はステップS31において、入力値xと出力制御手段32の出力値とを乗算する。この場合は求める値x∧(4/3)に対し、出力制御手段32の出力値は、x∧(1/3)であるので、元々のxとx∧(1/3)とを乗算することによって、x∧(4/3)を算出する。
【0052】
以上のように本実施形態によれば、M>Nの条件の中で、入力値xに対してx∧(M/N)の値を算出する巾乗算出装置において、0からAまでの値x’に対して、x’∧((M%N)/N)の値を与えるコア手段を設ける。更に入力値xに対してx∧(int (M/N))の値と、出力制御手段の出力値を乗算する乗算手段を設けることを特徴としている。
【0053】
こうすることによって、入力として想定される値の全て値x(本実施形態では0〜8191までの値)に対して、全てのx∧(M/N)の値を用意しておくのではなく、予め定められたAの値(本実施形態では255)に対し、A以下の入力値xに対してのみx∧((M%N)/N)の値を用意しておけばよい。こうしても全てのxの巾乗値を得ることができる。このため、少ないハードウェア規模で、分数値で累乗する巾乗の計算ができることとなる。
【0054】
(実施形態3)
次に、本発明の実施形態3における巾乗算出装置について図面を参照しながら説明する。本実施形態では、巾乗値x∧(M/N)として、x∧(1/3)の値を求める巾乗算出装置として説明する。ここで入力値xの範囲は0〜8191とする。
【0055】
図9は、本発明の実施形態3の巾乗算出装置400の構成を示すブロック図である。巾乗算出装置400は、入力制御手段40と、コア手段41と、出力制御手段42と、判定手段43とを備えている。
【0056】
図10は、巾乗算出装置400の信号処理方法を示すフローチャートである。図10は、入力制御手段40、コア手段41、出力制御手段42、判定手段43のそれぞれにおける信号処理手順を示している。
【0057】
入力制御手段40は、入力値xが閾値A、例えば1023以下か否かを判定し、1023以下の場合、値xをx’としてそのままコア手段41に与え、入力値xが1023より大きい場合、値xを2∧jで割った値をx’としてコア手段41に与える手段である。
【0058】
ここで、上記jの値は、以下のように判定手段43で判定される。すなわち、判定手段43では、まず、入力値xを2進数と見た場合の桁数kを求める。その後、j=k−10となるjを求める。例えば、入力値xの値が、1024以上、2048より小さい場合、jの値は、1となる。ここで、上記値10は、1024を2進数と見た場合の桁数を表している。すなわち、jの値は、入力値xを2進数と見た場合、閾値Aより何桁大きい値かを表す値である。
【0059】
コア手段41は、実施形態1のコア手段11Bと同様に、図5に示すROMテーブル2を有する。ROMテーブル2には、0から1023までの値x’に対するx’∧(1/3)の値が予め計算されて格納されている。コア手段41は、0から1023までの値x’に対して、x’∧(1/3)の値を与える。出力制御手段42は、入力値xが1023以下の場合、コア手段41の出力値y’をyとしてそのまま出力し、入力値xが1023より大きい場合、コア手段41の出力値y’を2∧(j/3)倍した値yとして出力する手段である。
【0060】
このような構成の巾乗算出装置の動作について説明する。まず図9の入力制御手段40は、入力値xが与えられると、ステップS40においてその値xが1023以下か否かを判定する。入力値xが1023以下の場合はステップS41に進み、値xをそのまま値x’としてコア手段41に与える。ステップS40で入力値xが1023より大きいと判定された場合は、ステップS42に進み、値xを2∧jで割った値をx’としてx’をコア手段41に与える。
【0061】
ここで、上記jの値は、以下のように判定手段43で判定される。すなわち、判定手段43では、まず、入力値xを2進数と見た場合の桁数kを求める。その後、j=k−10を求める。
【0062】
また、値xを2∧jで割る方法としては、値xをjビットシフトダウンする方法でも良いし、0捨1入の丸め処理のために、値xに2∧(j−1)を足した後、jビットシフトダウンする方法でも良い。
【0063】
次に、コア手段41では、ステップS43において入力制御手段40から与えられた値x’に対して、x’∧(1/3)の値を図5のROMテーブル2より読み出す。
【0064】
最後に図9の出力制御手段42では、ステップS44において入力値xが1023以下か否かを判定し、1023以下の場合はステップS45に進み、コア手段41の出力値をそのまま出力する。ステップS44において入力値xが1023より大きいと判定された場合は、ステップS46に進み、コア手段41の出力値に2∧(j/3)を乗じた値を出力する。
【0065】
図11は、巾乗算出装置400の出力制御手段42において2∧(j/3)の値を与えるテーブルを示す。2∧(j/3)の値は、jをアドレスとしたテーブルとしてメモリに予め格納しておき、それを読み出すことによって求めればよい。また、コア手段41の出力値に2∧(j/3)を乗じるのは、通常の乗算手段を用いればよい。
【0066】
以上のように本実施形態によれば、入力として想定されるxの全ての値、ここでは0〜8191までのxに対してx∧(1/3)の値を用意しておくのではなく、予め定められた閾値A=1023に対し、A以下の入力値xに対してのみ、x∧(1/3)の値を用意しておく。これにより、Aを越える入力値xに対してもx∧(1/3)の値を概算することができる。そのため、少ないハードウェア規模で、巾乗の計算ができることとなる。
【0067】
また、閾値Aを越える場合でも、ビットの欠落が最小限に抑えられるので、精度よく概算値が求められることとなる。
【0068】
本実施形態では、上記閾値Aの値を、10ビットの最大値1023とし、判定手段43を、入力値xが10ビットより、何ビット大きいかを表す値を出力する様に構成していたが、必ずしもそうである必要はなく、より少ないメモリで構成したい場合は、例えば、上記閾値Aの値を、例えば8ビットの最大値255とし、判定手段43を、入力値xが8ビットより、何ビット大きいかを表す値を出力する様に構成するなどしてもよい。また、より精度よく演算結果を求めたい場合は、上記閾値Aの値を、例えば12ビットの最大値4095とし、判定手段43を、入力値xが12ビットより、何ビット大きいかを表す値を出力する様に構成するなどしてもよい。
【0069】
(実施形態4)
次に、本発明の実施形態4における巾乗算出装置について図面を参照しながら説明する。本実施形態では、巾乗値x∧(M/N)として、x∧(1/3)の値を求める巾乗算出装置として説明する。ここで入力値xの範囲は0〜8191とする。
【0070】
図12は、本発明の実施形態4の巾乗算出装置500の構成を示すブロック図である。巾乗算出装置500は、入力制御手段50と、コア手段51と、出力制御手段52と、判定手段53とを備えている。
【0071】
図13は、巾乗算出装置500の信号処理方法を示すフローチャートである。図13は、入力制御手段50、コア手段51、出力制御手段52、判定手段53のそれぞれにおける信号処理手順を示している。
【0072】
判定手段53は、入力値xを2進数と見た場合の桁数kを求める手段である。入力制御手段50は、上記kが閾値B、例えば10以下か否かを判定し、10以下の場合、入力値xを(B−k)ビットシフトアップした値をx’とし、上記kが10より大きい場合、入力値xを(k−B)ビットシフトダウンした値をx’としてコア手段51に与える手段である。
【0073】
コア手段51は、ROMテーブル4であるy’=ROMTABLE4[x’]を有し、2∧(B−1)以上2∧B−1以下(本実施形態では512以上1023以下)の値x’に対して、x’∧(1/3)の値を与える手段である。出力制御手段52は、コア手段51の出力値y’を2∧((k−B)/3)倍した値yを出力する手段である。
【0074】
図14は、巾乗算出装置500のコア手段51が備えているROMテーブル4の内容を示す。ROMテーブル4には、512から1023までの値x’に対するx’∧(1/3)の値が予め計算されて格納されている。
【0075】
ここで注意すべきことは、図14において、アドレス0には、x’=512(=2∧(B−1))に対する、x’∧(1/3)の値が格納されており、また、アドレス511には、x’=1023(=2∧B−1)に対する、x’∧(1/3)の値が格納されているということである。この様な形でテーブルを持つことは、以下の様な理由による。すなわち、前記入力制御手段50では、入力値xを2進数で表した時の桁数kに対して、B−kの値が、正の場合、上記xを(B−k)ビットシフトアップし、B−kの値が、負の場合、上記xを(k−B)ビットシフトダウンすることによって、x’を算出しているので、x’のBビット目は必ず1となる。すなわち、値は必ず、2∧(B−1)以上2∧B−1以下となる。そこで、図14のテーブルを参照する際、x’の下位(B−1)ビットだけをアドレスとすることができる。これにより、結果としてテーブルサイズが半分に削減できる。
【0076】
このような構成の巾乗算出装置の動作について説明する。まず図12の判定手段43で、入力値xを2進数と見た場合の桁数kを求める。入力制御手段50は、入力値xが与えられると、ステップS50において上記kがB(本実施形態では10)以下か否かを判定する。上記kが10以下の場合はステップS51に進み、入力値xを(B−k)ビットシフトアップした値をx’とし、上記kが10より大きい場合はステップS52に進み、入力値xを(k−B)ビットシフトダウンした値をx’としてコア手段に与える。
【0077】
次に、コア手段51では、ステップS53において入力制御手段50から与えられた値x’に対して、x’∧(1/3)の値を図14のROMテーブル4より読み出す。先にも述べたようにここでは、アドレス0には、x’=512(=2∧(B−1))に対する、x’∧(1/3)の値が格納されており、また、アドレス512には、x’=1023(=2∧B−1)に対する、x’∧(1/3)の値が格納されている。つまり、図14のテーブルを参照する際、x’の下位(B−1)ビットだけをアドレスとしている。
【0078】
最後に図12の出力制御手段52では、ステップS54において、コア手段51の出力値に2∧((k−B)/3)を乗じた値を出力する。
【0079】
図15は、巾乗算出装置500の出力制御手段52において2∧((k−B)/3)の値を与えるテーブルを示す。2∧((k−B)/3)の値は、kをアドレスとしたテーブルとして、メモリに予め格納しておき、それを読み出すことによって求めればよい。また、コア手段51の出力値に2∧((k−B)/3)を乗じるのは、通常の乗算手段を用いればよい。
【0080】
以上のように本実施形態によれば、入力として想定されるxの全ての値、ここでは0〜8191までのxに対してx∧(1/3)の値を用意しておくのではなく、予め定められた閾値B(ここでは10)に対し、2∧(B−1)以上2∧B未満の値x’に対してのみ、x’∧(1/3)の値を用意しておく。これにより、桁数がBを越える入力値xに対してもx∧(1/3)の値を概算することができる。そのため、少ないハードウェア規模で、巾乗の計算ができることとなる。
【0081】
また、桁数がBを越える場合でも、ビットの欠落が最小限に抑えられるので、精度よく概算値が求められることとなる。
【0082】
また、本実施形態においては、桁数がBを越える場合のx∧(1/3)の値を概算の精度は、実施形態3における精度と同等であるにもかかわらず、ROMテーブルのサイズは、約半分ですむこととなる。
【0083】
【発明の効果】
本発明によれば、入力値xに対してx∧(M/N)の値を算出する巾乗算出装置において、予め定められた範囲の入力値x’に対する小規模のテーブルを設けることにより、x∧(M/N)の値を概算することが可能となる。これにより、x∧(M/N)の値を求めるために、入力値として想定される全ての値xに対して容量の大きなテーブルを設ける必要が無くなる。そのため、小さいハードウェア規模で、x∧(M/N)の値を概算することができる。特に、閾値A以下の入力値x’に対するテーブルを設け、xの値の大きさを特定するためのパラメータjを用いてx’=x/2∧jとし、あるいは、2∧(B−1)以上2∧B−1未満の入力値x’に対するテーブルを設けることにより、x∧(M/N)の概算の精度を極力維持することができる。
【0084】
また、本発明によれば、入力値xをシフトダウンすることにより、入力値xが閾値Aを越える場合、簡単な方法で入力値xを除算してその値を変換することができる。これは、入力値xが閾値A以下となる出現確率が高い場合に、特に有効である。
【0085】
また、本発明によれば、コア手段がx’のとり得る全ての値について、x’∧(M/N)あるいはx’∧(L/N)の値をテーブルとして保持することにより、入力値x’をy’に変換する処理が、小規模のテーブルの参照により実行できるので、巾乗の演算処理の負担が軽くなる。特に、コア手段がx’∧(L/N)の値をテーブルとして保持することにより、テーブルに記載するy’の値が小さく(桁数が少ない)なり、ROMテーブルの容量が更に小さくなる。
【0086】
また、本発明によれば、所定の割合以上でX≦Aとなるように閾値Aの設定を入力値xの出現確率に基づいて行うことにより、信号の復号処理の品質を実質的に下げないで、コア手段の負担を軽くすることができる。
【0087】
また、本発明によれば、出力制御手段が、2∧(j*M/N)の値あるいは2∧((k−B)*M/N)の値を予め保持している記憶装置を有しており、jの値あるいはkの値をアドレスとして記憶装置から読みだした値を出力制御手段の入力値に乗じて出力する。これにより、大きな演算量の増加なく発明を実施することができる。
【0088】
また、本発明によれば、Bを整数、上記Aの値をA=2∧Bとしたとき、前記判定装置は、jの値を、xの値が、Aより大きい値の場合、2∧(B+(j−1))≦x<2∧(B+j)を満たすように決定する。これにより、jの値はxを2進数とみた場合の桁数−Bということになるため、入力制御装置の処理を単なるビットシフト処理で実現できる。
【0089】
また、本発明によれば、コア手段は、2∧(B−1)以上2∧B未満の整数値qに対するq∧(M/N)の値を、qの少なくとも下位(B−1)ビットをアドレスとし、格納した記憶手段を有しており、前記x’の少なくとも下位(B−1)ビットをアドレスとして前記記憶手段から読み出された値を上記y’の値に乗じて出力する。これにより、極めて簡単なビット処理でアドレシングできることとなる。
【図面の簡単な説明】
【図1】本発明の実施形態1の巾乗算出装置100の構成を示すブロック図である。
【図2】巾乗算出装置100の信号処理方法を示すフローチャートである。
【図3】巾乗算出装置100のコア手段11Aが備えているROMテーブル1の内容を示す図である。
【図4】巾乗算出装置100の別のコア手段11Bの信号処理方法を示すフローチャートである。
【図5】巾乗算出装置100の別のコア手段11Bが備えているROMテーブル2の内容を示す図である。
【図6】本発明の実施形態2の巾乗算出装置300の構成を示すブロック図である。
【図7】巾乗算出装置300の信号処理方法を示すフローチャートである。
【図8】巾乗算出装置300のコア手段31が備えているROMテーブル3の内容を示す図である。
【図9】本発明の実施形態3の巾乗算出装置400の構成を示すブロック図である。
【図10】巾乗算出装置400の信号処理方法を示すフローチャートである。
【図11】巾乗算出装置400の出力制御手段42において2∧(j/3)の値を与えるテーブルを示す図である。
【図12】本発明の実施形態4の巾乗算出装置500の構成を示すブロック図である。
【図13】巾乗算出装置500の信号処理方法を示すフローチャートである。
【図14】巾乗算出装置500のコア手段51が備えているROMテーブル4の内容を示す図である。
【図15】巾乗算出装置500の出力制御手段52において2∧((k−B)/3)の値を与えるテーブルを示す図である。
【図16】従来の巾乗算出装置が備えている、0≦x≦8191の場合のx∧(4/3)の値のテーブルを示す図である。
【符号の説明】
10、30、40、50 入力制御手段
11、11A、11B、31、41、51 コア手段
12、32、42、52 出力制御手段
33 乗算手段
43、53 判定手段
100、300、400、500 巾乗算出装置
Claims (15)
- 入力値xに対してx∧(M/N)の値を算出する(M,Nは整数の定数)巾乗算出装置であって、
x≦Aの場合(Aはxの変域内における所定の閾値)にx’=xとし、x>Aの場合にx’=x/2∧Nとして、x’の値を出力する入力制御手段と、
y’=x’∧(M/N)の値を出力するコア手段と、
x≦Aの場合にy=y’とし、x>Aの場合にy=y’*2∧Mとして、yの値を出力する出力制御手段と、
を備えた、巾乗算出装置。 - 前記入力制御手段は、x>Aの場合にxの値をNビットシフトダウンすることによりx’の値を算出する、請求項1に記載の巾乗算出装置。
- 入力値xに対してx∧(M/N)の値を算出する(M,Nは整数の定数)巾乗算出装置であって、
x≦Aの場合(Aはxの変域内における所定の閾値)にx’=xとし、x>Aの場合にx’=x/2∧(N*n)として(nはx/2∧(N*n)≦Aの条件を満たす整数)、x’の値を出力する入力制御手段と、
y’=x’∧(M/N)の値を出力するコア手段と、
x≦Aの場合にy=y’とし、x>Aの場合にy=y’*2∧(M*n)として、yの値を出力する出力制御手段と、
を備えた、巾乗算出装置。 - 前記入力制御手段は、x>Aの場合にxの値を(N*n)ビットシフトダウンすることによりx’の値を算出する、請求項3に記載の巾乗算出装置。
- 前記入力制御手段は、xの値をシフトダウンする際に0捨1入処理を行う、請求項2又は4に記載の巾乗算出装置。
- 前記コア手段は、x’のとり得る全ての値(0≦x’≦A)について、x’∧(M/N)の値をテーブルとして保持する、請求項1乃至5のいずれかに記載の巾乗算出装置。
- 前記コア手段は、L=M/m(mは正の定数)とするとき、x’のとり得る全ての値(0≦x’≦A)について、x’∧(L/N)の値をテーブルとして保持し、前記テーブルに保持するx’∧(L/N)の値をm乗することによりyの値を算出する、請求項1乃至5のいずれかに記載の巾乗算出装置。
- 入力値xに対してx∧(M/N)の値を算出する(M,Nは整数の定数)巾乗算出装置であって、
x≦Aの場合(Aはxの変域内における所定の閾値)にx’=xとし、x>Aの場合にx’=x/2∧Nとして、x’の値を出力する入力制御手段と、
y’=x’∧((M%N)/N)の値を出力するコア手段と、
x≦Aの場合にy=y’とし、x>Aの場合にy=y’*2∧(M%N)として、yの値を出力する出力制御手段と、
y*(x∧(int(M/N)))を出力する乗算手段と、
を備えた、巾乗算出装置。 - 所定の割合以上でx≦AとなるようにAが設定されている、請求項1乃至8のいずれかに記載の巾乗算出装置。
- 入力値xに対してx∧(M/N)の値を算出する(M,Nは整数の定数)巾乗算出装置であって、
xの値の大きさを特定するためのパラメータj(jは負でない整数)を出力する判定手段と、
x≦Aの場合(Aはxの変域内における閾値)にx’=xとし、x>Aの場合にx’=x/2∧jとして、x’の値を出力する入力制御手段と、
y’=x’∧(M/N)の値を出力するコア手段と、
x≦Aの場合にy=y’とし、x>Aの場合にy=y’*2∧(j*M/N)として、yの値を出力する出力制御手段と、
を備えた、巾乗算出装置。 - 前記出力制御手段は、jの値をアドレスとして2∧(j*M/N)の値を保持する記憶装置を有し、x>Aの場合に2∧(j*M/N)の値を前記記憶装置から読み出すことによりyの値を算出する、請求項10に記載の巾乗算出装置。
- A=2∧B(Bは整数の定数)であり、
前記判定手段は、x>2∧Nの場合に2∧(B+(j−1))≦x<2∧(B+j)を満たすようにjの値を決定し、x≦2∧Nの場合にj=0とする、請求項10又は11に記載の巾乗算出装置。 - 入力値xに対してx∧(M/N)の値を算出する(M,Nは整数の定数)巾乗算出装置であって、
xの値を2進数で表現したときの桁数kの値を出力する判定手段と、
整数Bについて、(B−k)が正の場合にxを(B−k)ビットシフトアップした値をx’とし、(B−k)が負の場合にxを(k−B)ビットシフトダウンした値をx’として、x’の値を出力する入力制御手段と、
y’=x’∧(M/N)の値を出力するコア手段と、
y=y’*(2∧((k−B)*M/N))の値を出力する出力制御手段と、
を備えた、巾乗算出装置。 - 前記出力制御手段は、kの値をアドレスとして2∧((k−B)*M/N)の値を保持する記憶装置を有し、2∧((k−B)*M/N)の値を前記記憶装置から読み出すことによりyの値を算出する、請求項13に記載の巾乗算出装置。
- 前記コア手段は、(2∧(B−1)≦q<2∧B、qは整数)qの少なくとも下位(B−1)ビットをアドレスとして、q∧(M/N)の値を保持する記憶装置を有し、x′の少なくとも下位(B−1)ビットをアドレスとして前記記憶装置からq∧(M/N)の値を読み出すことによりy’の値を算出する、請求項13又は14に記載の巾乗算出装置。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00856299A JP4063434B2 (ja) | 1998-02-04 | 1999-01-14 | 巾乗算出装置 |
US09/244,155 US6304890B1 (en) | 1998-02-04 | 1999-02-03 | Exponential calculation device and decoding device |
EP99101618A EP0935203A3 (en) | 1998-02-04 | 1999-02-03 | Exponential calculation device |
CNB991018737A CN1322456C (zh) | 1998-02-04 | 1999-02-04 | 指数计算装置和解码装置 |
US09/929,156 US6363407B1 (en) | 1998-02-04 | 2001-08-14 | Exponential calculation device and decoding device |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2302298 | 1998-02-04 | ||
JP10-23022 | 1998-02-04 | ||
JP00856299A JP4063434B2 (ja) | 1998-02-04 | 1999-01-14 | 巾乗算出装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11288365A JPH11288365A (ja) | 1999-10-19 |
JP4063434B2 true JP4063434B2 (ja) | 2008-03-19 |
Family
ID=26343105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP00856299A Expired - Fee Related JP4063434B2 (ja) | 1998-02-04 | 1999-01-14 | 巾乗算出装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4063434B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6898615B2 (en) | 2000-07-24 | 2005-05-24 | Matsushita Electric Industrial Co., Ltd. | Signal processing unit and signal processing method including using an exponent part and a mantissa part for power generation |
JP4529600B2 (ja) * | 2004-09-09 | 2010-08-25 | パナソニック株式会社 | メモリ、及びメモリを備えたプロセッサ |
JP5303809B2 (ja) * | 2009-10-20 | 2013-10-02 | 株式会社日立国際電気 | 歪補償装置 |
-
1999
- 1999-01-14 JP JP00856299A patent/JP4063434B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11288365A (ja) | 1999-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0935203A2 (en) | Exponential calculation device | |
US7593851B2 (en) | Precision piecewise polynomial approximation for Ephraim-Malah filter | |
JP4954087B2 (ja) | 平方値に線形従属する計算結果の表示を生成する方法 | |
KR20040041781A (ko) | 메모리를 감소시키는 개선된 룩업 테이블 압축방법 및이를 이용하여 압축된 룩업 테이블을 가지는 비선형 함수발생장치 및 그 발생방법 | |
JP2000163252A (ja) | 対数および逆対数に対する近似を実行するディジタル信号処理回路、システムおよび方法 | |
US20180048958A1 (en) | Determination method and apparatus for preset of audio equalizer (aeq) | |
JP4063434B2 (ja) | 巾乗算出装置 | |
JP4457084B2 (ja) | 演算装置 | |
JP2000261325A (ja) | 逆量子化装置及び逆量子化方法 | |
EP2043356A2 (en) | Signal processing apparatus and signal processing method performing gamma correction | |
US6898615B2 (en) | Signal processing unit and signal processing method including using an exponent part and a mantissa part for power generation | |
JPH11212768A (ja) | 対数値算出回路 | |
JP3059429B2 (ja) | 復号装置 | |
JP2006172475A (ja) | 電子回路中で乗算演算または除算演算を行う方法およびその装置 | |
JPH09138792A (ja) | ログの近似値の計算方法およびその回路 | |
WO2019174263A1 (zh) | 用于随机计算的多加数加法电路 | |
JPH10320524A (ja) | ルックアップテーブル装置及び画像生成装置 | |
US6308194B1 (en) | Discrete cosine transform circuit and operation method thereof | |
JP5305392B2 (ja) | Iqデータの二乗和ルート計算手段 | |
JP2000183753A (ja) | 信号変換装置及び信号変換方法 | |
US10489104B2 (en) | Method and apparatus for generating harmonics using polynomial non-linear functions | |
JP2002063023A (ja) | 演算装置および演算方法 | |
JP2001043067A (ja) | 演算装置 | |
US7638703B2 (en) | Method and system of audio synthesis capable of reducing CPU load | |
JPH1141467A (ja) | フィルタ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051011 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20071203 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071225 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4063434 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110111 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110111 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120111 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130111 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130111 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140111 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |