(57)【特許請求の範囲】
【請求項１】
水平方向または垂直方向にｋ点ＤＣＴ演算を行う１次元ＤＣＴ演算装置であって、
入力される原信号に掛けられる係数の中から選択した１個または２個の値のみを被乗数とするk/2（ｋは２のべき乗）個の半固定乗算器と、
f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),……,f(k/2-1),f(k/2)の順番で１個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)-f(k-3),……,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記ｋ／２個の半固定乗算器に入力する加減算器と、
２個の累算値を保持する記憶手段を有し、前記ｋ／２個の半固定乗算器の出力から１つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記２個の累算値に交互に加算し、それぞれＤＣＴ係数F(0)とF(1),F(2)とF(3),F(4)とF(5),……,F(k-2)とF(k-1)を出力するｋ／２個の累算器と、
前記ｋ／２個の累算器から出力されるｋ個のＤＣＴ係数の値を保持し、該ｋ個から成るＤＣＴ係数をF(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番で出力する記憶回路とを備えることを特徴とする１次元ＤＣＴ演算装置。
【請求項２】
水平方向または垂直方向にｋ点ＩＤＣＴ演算を行う１次元ＩＤＣＴ演算装置であって、
ＤＣＴ係数に掛けられる係数の中から選択した１個または２個の値のみを被乗数とし、F(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番で１個づつ入力されたＤＣＴ係数と乗算するｋ／２（ｋは２のべき乗）個の半固定乗算器と、
２個の累算値を保持する記憶手段を有し、前記ｋ／２個の半固定乗算器の出力から１つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記２個の累算値に交互に加算するｋ／２個の累算器と、
前記ｋ／２個の累算器から出力されるｋ個の値を保持する記憶手段を有し、前記累算器から出力された前記ｋ個の値に対し、ｋ／２回の加算とｋ／２回の減算を行ってf(0),f(1),f(2),f(3),f(4),……,f(k-2),f(k-1)の順番で原信号を求める加減算器とを備えることを特徴とする１次元ＩＤＣＴ演算装置。
【請求項３】
水平方向または垂直方向にｋ点ＤＣＴ演算またはｋ点ＩＤＣＴ演算を行う１次元ＤＣＴ／ＩＤＣＴ演算装置であって、
原信号およびＤＣＴ係数に掛けられる係数の中から選択した１個または２個の値のみを被乗数とするｋ／２（ｋは２のべき乗）個の半固定乗算器と、
f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),……,f(k/2-1),f(k/2)の順番で１個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)-f(k-3),……,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記ｋ／２個の半固定乗算器に入力するか、若しくはF(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番で１個づつ入力されるＤＣＴ係数を前記ｋ／２個の半固定乗算器に入力するかを選択可能な加減算器と、
２個の累算値を保持する記憶手段を有し、前記ｋ／２個の半固定乗算器の出力から１つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記２個の累算値に交互に加算するｋ／２個の累算器と、
前記ｋ／２個の累算器から出力されるｋ個の値を保持する記憶手段を有し、F(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番でＤＣＴ係数を出力するか、若しくは前記累算器から出力された前記ｋ個の値に対し、ｋ／２回の加算とｋ／２回の減算を行ってf(0),f(1),f(2),f(3),f(4),……,f(k-2),f(k-1)の順番で原信号を求めて出力するかを選択可能な加減算器とを備えることを特徴とする１次元ＤＣＴ／ＩＤＣＴ演算装置。
【請求項４】
ｍ点×ｎ点（ｍとｎは２のべき乗）の２次元ＤＣＴ演算を実行する２次元ＤＣＴ演算装置であって、
水平方向にｋ点ＤＣＴ演算を行うための第１の１次元ＤＣＴ演算回路と、
垂直方向にｋ点ＤＣＴ演算を行うための第２の１次元ＤＣＴ演算回路と、
水平方向に書き込まれたデータを垂直方向に読み出すか、若しくは垂直方向に書き込まれたデータを水平方向に読み出せるｍ×ｎワードの２ポートメモリとを有し、
前記第１および第２の１次元ＤＣＴ演算回路は、入力される原信号に掛けられる係数の中から選択した１個または２個の値のみを被乗数とするk/2（ｋは２のべき乗）個の半固定乗算器と、
f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),……,f(k/2-1),f(k/2)の順番で１個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)-f(k-3),……,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記ｋ／２個の半固定乗算器に入力する加減算器と、
２個の累算値を保持する記憶手段を有し、前記ｋ／２個の半固定乗算器の出力から１つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記２個の累算値に交互に加算し、それぞれＤＣＴ係数F(0)とF(1),F(2)とF(3),F(4)とF(5),……,F(k-2)とF(k-1)を出力するｋ／２個の累算器と、
前記ｋ／２個の累算器から出力されるｋ個のＤＣＴ係数の値を保持し、該ｋ個から成るＤＣＴ係数をF(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番で出力する記憶回路とを備えることを特徴とする２次元ＤＣＴ演算装置。
【請求項５】
ｍ＝ｎ＝ｋであることを特徴とする請求項４に記載の２次元ＤＣＴ演算装置。
【請求項６】
ｍ点×ｎ点（ｍとｎは２のべき乗）の２次元ＩＤＣＴ演算を実行する２次元ＩＤＣＴ演算装置であって、
水平方向にｋ点ＩＤＣＴ演算を行うための第１の１次元ＩＤＣＴ演算回路と、
垂直方向にｋ点ＩＤＣＴ演算を行うための第２の１次元ＩＤＣＴ演算回路と、
水平方向に書き込まれたデータを垂直方向に読み出すか、若しくは垂直方向に書き込まれたデータを水平方向に読み出せるｍ×ｎワードの２ポートメモリとを有し、
前記第１および第２の１次元ＩＤＣＴ演算回路は、ＤＣＴ係数に掛けられる係数の中から選択した１個または２個の値のみを被乗数とし、F(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番で１個づつ入力されたＤＣＴ係数と乗算するｋ／２（ｋは２のべき乗）個の半固定乗算器と、
２個の累算値を保持する記憶手段を有し、前記ｋ／２個の半固定乗算器の出力から１つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記２個の累算値に交互に加算するｋ／２個の累算器と、
前記ｋ／２個の累算器から出力されるｋ個の値を保持する記憶手段を有し、前記累算器から出力された前記ｋ個の値に対し、ｋ／２回の加算とｋ／２回の減算を行ってf(0),f(1),f(2),f(3),f(4),……,f(k-2),f(k-1)の順番で原信号を求める加減算器とを備えることを特徴とする２次元ＩＤＣＴ演算装置。
【請求項７】
ｍ＝ｎ＝ｋであることを特徴とする請求項６に記載の２次元ＩＤＣＴ演算装置。
【請求項８】
ｍ点×ｎ点（ｍとｎは２のべき乗）の２次元ＤＣＴ演算または２次元ＩＤＣＴ演算を実行する２次元ＤＣＴ／ＩＤＣＴ演算装置であって、
水平方向にｋ点ＤＣＴ演算またはｋ点ＩＤＣＴ演算を行うための第１の１次元ＤＣＴ／ＩＤＣＴ演算共用回路と、
垂直方向にｋ点ＤＣＴ演算またはＩＤＣＴ演算を行うための第２の１次元ＤＣＴ／ＩＤＣＴ演算共用回路と、
水平方向に書き込まれたデータを垂直方向に読み出すか、若しくは垂直方向に書き込まれたデータを水平方向に読み出せるｍ×ｎワードの２ポートメモリとを有し、
前記第１および第２の１次元ＤＣＴ／ＩＤＣＴ演算共用回路は、原信号およびＤＣＴ係数に掛けられる係数の中から選択した１個または２個の値のみを被乗数とするｋ／２（ｋは２のべき乗）個の半固定乗算器と、
f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),……,f(k/2-1),f(k/2)の順番で１個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)-f(k-3),……,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記ｋ／２個の半固定乗算器に入力するか、若しくはF(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番で１個づつ入力されるＤＣＴ係数を前記ｋ／２個の半固定乗算器に入力するかを選択可能な加減算器と、
２個の累算値を保持する記憶手段を有し、前記ｋ／２個の半固定乗算器の出力から１つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記２個の累算値に交互に加算するｋ／２個の累算器と、
前記ｋ／２個の累算器から出力されるｋ個の値を保持する記憶手段を有し、F(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番でＤＣＴ係数を出力するか、若しくは前記累算器から出力された前記ｋ個の値に対し、ｋ／２回の加算とｋ／２回の減算を行ってf(0),f(1),f(2),f(3),f(4),……,f(k-2),f(k-1)の順番で原信号を求めて出力するかを選択可能な加減算器とを備えることを特徴とする２次元ＤＣＴ／ＩＤＣＴ演算装置。
【請求項９】
ｍ＝ｎ＝ｋであることを特徴とする請求項８に記載の２次元ＤＣＴ／ＩＤＣＴ演算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像符号化で用いられる１次元または２次元ＤＣＴ（Discrete Cosine Transform）とその逆変換である１次元または２次元ＩＤＣＴ（Inverse Discrete Cosine Transform）を実行するための演算装置に関するものである。
【０００２】
【従来の技術】
（１）ＤＣＴ演算とＩＤＣＴ演算
f(i)(i=0,1,2,3,4,5,6,7)を原信号とし、F(j)(j=0,1,2,3,4,5,6,7)をＤＣＴ変換係数とすると、８点１次元ＤＣＴ演算は次の式「数１」と「数２」で表わされる。
【０００３】
【数１】
0003654622.tif 000002
【０００４】
【数２】
0003654622.tif 000003
【０００５】
ここで、A＝2/2、B＝cos(π/8)/2、C＝cos(3π/8)/2、D＝cos(π/16)/2、E＝cos(3π/16)/2、F＝cos(5π/16)/2、G＝cos(7π/16)/2である。
【０００６】
また、８点１次元ＩＤＣＴ演算は次の式「数３」と「数４」で表わせる。
【０００７】
【数３】
0003654622.tif 000004
【０００８】
【数４】
0003654622.tif 000005
【０００９】
ここで、上記式「数３」と「数４」の右辺第１項は同一であり、また、上記式「数３」と「数４」の右辺第２項も同一である。
【００１０】
上記のように、８点１次元ＤＣＴ演算と８点１次元ＩＤＣＴ演算は、たかだか７種類の係数とデータの乗累算で実現される。このため、ＤＣＴ演算とＩＤＣＴ演算においては汎用乗算器を用いる必要はなく、上記Ａ〜Ｇの係数に対応する７種類の固定係数乗算器を用いることによってそれらの演算回路を構成することができる。
【００１１】
従来技術の第１の例
従来技術の第１の例である８点１次元ＤＣＴ演算装置を図５に示す。このＤＣＴ演算装置は、クロックＣＫ（以下、単にＣＫと言う）に同期して動作し、１ＣＫ当たり２個の原信号を入力し、また、２個のＤＣＴ係数を出力する。上記式「数１」は図５の左側の３個の固定係数乗算器３〜５と４個の累算器１７〜２０で計算され、上記式「数２」は図５の右側の４個の固定係数乗算器６〜９と４個の累算器２１〜２４で計算される。以下、具体的な動作を説明する。
【００１２】
最初に、累算器１７〜２４の中のレジスタ４１〜４８はリセットされ、それらの値が「０」にされる。この後、１ＣＫ当たり２個の原信号がＩＮ０にf(0),f(1),f(2),f(3)、ＩＮ１にf(7),f(6),f(5),f(4)の順番で入力され、加算器１と減算器２に入力される。固定係数乗算器３〜５（ＭＰＹＡ，ＭＰＹＢ，ＭＰＹＣ）は被乗数がそれぞれ上記Ａ，Ｂ，Ｃに固定された乗算器であり、累算器１７，１８，１９，２０ではそれぞれF(0),F(2),F(4),F(6)が計算される。
【００１３】
また、累算器１８〜２０の中の加減算器３４，３５，３６は入力ａとｂより「ａ＋ｂ」または「−ａ＋ｂ」を計算することができる。加算器１ではf(0)+f(7),f(1)+f(6),f(2)+f(5),f(3)+f(4)が計算され、固定係数乗算器３〜５に入力される。
【００１４】
最初に、f(0)+f(7)が入力されると、乗算器３，４，５ではそれぞれA×{f(0)+f(7)},B×{f(0)+f(7)},C×{f(0)+f(7)}が並列に計算され、バス１０，１１，１２に出力される。累算器１７では、セレクタ２５でバス１０を選択することにより、A×{f(0)+f(7)}がレジスタ４１（ＲＥＧ００）にセットされる。このとき、レジスタ４１（ＲＥＧ００）は最初に「０」にリセットされているため、加算器３３はスルーとなる。同様にして、累算器１８，１９，２０では、セレクタ２６，２７，２８でそれぞれバス１１，１０，１２を選択することにより、B×{f(0)+f(7)},A×{f(0)+f(7)},C×{f(0)+f(7)}がレジスタ４２（ＲＥＧ１０），レジスタ４３（ＲＥＧ２０），レジスタ４４（ＲＥＧ３０）にセットされる。
【００１５】
次に、加算器１ではｆ（１）＋ｆ（６）が計算され、固定係数乗算器３〜５に入力される。乗算器３，４，５ではそれぞれA×{f(1)+f(6)},B×{f(1)+f(6)},C×{f(1)+f(6)}が並列に計算され、バス１０，１１，１２に出力される。累算器１７では、セレクタ２５でバス１０が選択される。このとき、レジスタ４１（ＲＥＧ００）にはA×{f(0)+f(7)}がセットされているため、加算器３３ではA×{f(0)+f(7)}+A×{f(1)+f(6)}が計算され、その値がレジスタ４１（ＲＥＧ００）にセットされる。
【００１６】
同様にして、累算器１８では、セレクタ２６でバス１２が選択され、レジスタ４２（ＲＥＧ１０）にB×{f(0)+f(7)}+C×{f(1)+f(6)}がセットされる。また、累算器１９では、セレクタ２７でバス１０が選択される。このとき、加算器３５ではA×{f(0)+f(7)}-A×{f(0)+f(7)}が計算され、レジスタ４３（ＲＥＧ２０）にセットされる。同様にして、レジスタ４４（ＲＥＧ３０）にはC×{f(0)+f(7)}-B×{f(0)+f(7)}がセットされる。以下、同様の計算が行われ、４ＣＫ目にF0,F2,F4,F6が求まる。ただし、このとき、これらはレジスタ４１〜４４（ＲＥＧ００〜ＲＥＧ３０）ではなく、レジスタ４９〜５２（ＲＥＧ０１〜ＲＥＧ３１）にセットされる。このセット動作と同時に、レジスタ４１〜４４（ＲＥＧ００〜ＲＥＧ３０）はリセットされ、次のＣＫより新しい８点１次元ＤＣＴ演算が開始される。
【００１７】
一方、固定係数乗算器６〜９（ＭＰＹＤ，ＭＰＹＤ，ＭＰＹＦ，ＭＰＹＧ）は被乗数がそれぞれ上記Ｄ，Ｅ，Ｆ，Ｇに固定された乗算器であり、累算器２１，２２，２３，２４ではそれぞれF(1),F(3),F(5),F(7)が計算される。また、累算器２２〜２４の中の加減算器３８，３９，４０は入力ａとｂより「ａ＋ｂ」または「−ａ＋ｂ」を計算することができる。入力ＩＮ０，ＩＮ１に接続された減算器２では、f(0)-f(7),f(1)-f(6),f(2)-f(5),f(3)-f(4)が計算され、上記F(0),F(2),F(4),F(6)の計算と同様にしてF(1),F(3),F(5),F(7)が計算され、累算器２１〜２４の中のレジスタ５３〜５６（ＲＥＧ４１〜ＲＥＧ７１）にセットされる。なお、累算器２１〜２４において、２９〜３２はセレクタ、３７は加算器、３８〜４０は加減算器、４５〜４８はレジスタ（ＲＥＧ４０〜７０）である。
【００１８】
累算器１７〜２４のレジスタ４９〜５６にセットされたＤＣＴ係数F(0)〜F(7)は、バス５７を通じて１ＣＫごとにＯＵＴ０からF(0),F(2),F(4),F(6)、バス５８を通じてＯＵＴ１からF(1),F(3),F(5),F(7)の順番で出力される。
【００１９】
このようなＤＣＴ演算装置に関する技術については、例えば、A.Madisetti and A.N.Willson,“A 100MHz 2-D8×8DCT/IDCT Processor for HDTV Applications”,IEEE Trans.Circuits Syst.Video Technol.,vol.5,No.2,pp.158-164,April 1995.に記載されている。尚、この文献には、以下に示す従来技術の第２、３、４の例に示す技術についても記載されている。
【００２０】
従来技術の第２の例
従来技術の第２の例である８点１次元ＩＤＣＴ演算装置を図６に示す。このＩＤＣＴ演算装置の構成は、前記従来技術の第１の例の８点１次元ＤＣＴ演算装置から加算器１と減算器２を削除し、出力部に加算器５９、減算器６０を付加した構造である。
【００２１】
入力ＩＮ０にはＣＫごとにＤＣＴ係数F(0),F(2),F(4),F(6)が入力される。これらは、固定係数乗算器３〜５（ＭＰＹＡ，ＭＰＹＢ，ＭＰＹＣ）に入力され、上記式「数３」と「数４」の右辺第１項の行列の乗算が図６の左側の３個の固定係数乗算器３〜５と４個の累算器１７〜２０で計算される。この場合、累算器１７〜２０の構成は図５と同様の構成であり、同一符号で示している。
【００２２】
一方、入力ＩＮ１にはF(1),F(3),F(5),F(7)が入力される。これらは固定係数乗算器６〜９（ＭＰＹＤ，ＭＰＹＥ，ＭＰＹＦ，ＭＰＹＧ）に入力され、上記式「数３」と「数４」の右辺第２項の行列の乗算が図６の右側の４個の固定係数乗算器６〜９と４個の累算器２１〜２４で計算される。累算器２１〜２４の構成は図５と同様の構成であり、同一符号で示している。
【００２３】
そして、式「数３」の右辺第１項の行列の乗算結果と右辺第２項の行列の乗算結果の加算は加算器５９で計算され、これと並列して、式「数４」の右辺第１項の行列の乗算結果と右辺第２項の行列の乗算結果の減算が減算器６０で計算される。この結果、ＣＫごとに加算器５９の出力としてf(0),f(1),f(2),f(3)、減算器６０の出力としてf(7),f(6),f(5),f(4)が得られ、ＯＵＴ０とＯＵＴ１から出力される。
【００２４】
従来技術の第３の例
従来技術の第３の例である８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置を図７に示す。この従来例は、上記従来技術の第１の例のＤＣＴ演算装置と従来技術の第２の例のＩＤＣＴ演算装置を組み合わせた回路構成である。
【００２５】
セレクタ６１，６２，６３，６４の入力をすべてａ側とすることによりＤＣＴ演算を実行でき、セレクタ６１，６２，６３，６４の入力をすべてｂ側とすることによりＩＤＣＴ演算を実行できる。なお、図５および図６と同一部分は同一符号で示している。
【００２６】
従来技術の第４の例
従来技術の第４の例である８点×８点２次元ＤＣＴ／ＩＤＣＴ演算共用装置を図８に示す。上記従来技術の第３の例である８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置６７と８×８Ｗ(ワード)の２次元転置メモリ６８で構成される。８×８Ｗの２次元転置メモリ６８は、同時に２画素書き込み又は読み出しができ、水平方向に書き込んだデータを垂直方向に読み出せるメモリである。ただし、２次元転置メモリ６８は、実際には６４Ｗの連続したアドレス（ｉ＝０〜６３）をもつメモリであり、ｘ＝０〜７（ｉ／８、ｉを８で割った余り）とｙ＝０〜７（ｙ＝ｉ／８、ｉを８で割って切り捨て）という２次元の仮想的なアドレスにより水平方向または垂直方向にアクセスされる。
【００２７】
具体的な動作としては、８×８個の２次元の信号に対して最初に水平方向に８点１次元ＤＣＴ（または８点１次元ＩＤＣＴ）を８回実行し、その結果を８×８Ｗの２次元転置メモリ６８に水平方向に書き込んで記憶する。次に、２次元転置メモリ６８から垂直方向に読み出して８点１次元ＤＣＴ（または８点１次元ＩＤＣＴ）を８回実行する。尚、最初に垂直方向に１次元ＤＣＴ（または１次元ＩＤＣＴ）を行い、２回目に水平方向に８点１次元ＤＣＴ（または８点１次元ＩＤＣＴ）を行っても良い。
【００２８】
【発明が解決しようとする課題】
しかしながら、従来技術の第４の例である８点×８点２次元ＤＣＴ／ＩＤＣＴ演算共用装置では、水平方向のＤＣＴまたはＩＤＣＴと垂直方向のＤＣＴまたはＩＤＣＴを交互に繰り返す。２次元ＤＣＴ／ＩＤＣＴ演算共用装置の外部からの入力は水平方向のＤＣＴまたはＩＤＣＴを実行しているときのみ必要であるため、１ＣＫ当たり２データを３２ＣＫの間に集中して入力し、３２ＣＫの間入力無しとしなければならない。また、外部への出力は垂直方向のＤＣＴまたはＩＤＣＴのとき生じるため、１ＣＫ当たり２データが３２ＣＫの間に集中して出力され、３２ＣＫの間出力無しとなる。
【００２９】
このように入力と出力がバースト的に発生すると、２次元ＤＣＴ／ＩＤＣＴ演算共用装置と前段または後段の装置とのインタフェースの回路が複雑になる。
【００３０】
これを緩和するため、２次元ＤＣＴ／ＩＤＣＴ演算共用装置の前段に１データ書き込みと２データ読み出しが同時にできる３ポートの６４Ｗメモリ、後段に２データ書き込みと１データ読み出しが同時にできる３ポートの６４Ｗメモリを設け、それらのメモリでバッファリングして入力と出力を１ＣＫ当たり１データに変換することも考えられるが、ハード規模が増加する。
【００３１】
また、８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置６７は高速動作のためにパイプライン化される場合が多いが、これにより、データの入力が始まってから最初のデータが出力されるまでに遅れ、すなわちパイプラインレイテンシが発生する。従来技術の第４の例に示した構成では、２次元転置メモリ６８への書き込みが終了しなければ、読み出しを開始できないため、後半の１次元ＤＣＴまたはＩＤＣＴを開始するとき、必ずレイテンシ分の無効サイクルが生じることとなる。この無効サイクルを少しでも少なくするために、２次元転置メモリ６８を４ポート化し、２データ書き込みと２データ読み出しが同時にできるようにすることも考えられるが、２次元転置メモリ６８が大規模化する。さらに、４ポート化したとしても単一の１次元ＤＣＴ／ＩＤＣＴ演算共用装置を用いている限り、レイテンシ削減効果には限界がある。
【００３２】
図９と図１０にＩＤＣＴの場合を示す。図９は２次元転置メモリ６８に８行目の水平方向のＩＤＣＴ演算結果を書き込み、同時に垂直方向のＩＤＣＴ演算のために、１列目の信号を読み出す場合を示す。８行目の書込みは、{f(0),f(7)}、{f(1),f(6)}、{f(2),f(5)}、{f(3),f(4)}の順番で行い、１列目の読み出しは{F(0),F(1)}、{F(2),F(3)}、{F(4),F(5)}、{F(6),F(7)}の順番で行うことになる。
【００３３】
ところが、図９に示すように、F(7)=f(0)であり、f(0)が２次元転置メモリ６８に書き込まれなければ、F(7)として読み出すことができない。
【００３４】
図１０は、８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置６７を５段のパイプラインで構成した場合を示す。尚、単純化のためにパイプラインレジスタ６９〜７４のみ示してある。図９に示したように後半の１次元ＤＣＴのために読み出されるF7は、前半の１次元ＤＣＴ演算の結果であるf0と同一である。従って、f0の書き込みが終わらなければ、F7を読み出すことはできない。このため、図１０から分かるように、パイプライン段数が５段よりも大きくなると、f0を転置メモリ６８に書き込むサイクルとF7を転置メモリ６８から読み出すサイクルとの間に空き、言い換えるとパイプラインに空きが生じ、無効サイクルが発生することとなる。
【００３５】
本発明は、１ＣＫ当たり１個の入力と出力という条件の下で、パイプライン段数にかかわらず無効サイクルが生じないようにすることができる１次元または２次元ＤＣＴ演算装置および１次元または２次元ＩＤＣＴ演算装置を提供することを目的とする。
【００３６】
【課題を解決するための手段】
本発明は、１次元ｋ点ＤＣＴ演算回路または１次元ｋ点ＩＤＣＴ演算回路を構成するとき、従来は１個の値のみを被乗数として取り得る固定係数乗算器をｋ個（kは２のべき乗）用いていたのに対し、１個または２個の値を被乗数として取り得る半固定乗算器をｋ／２個用いて、ハード量を削減し、この１次元ｋ点ＤＣＴ演算回路または１次元ｋ点ＩＤＣＴ演算回路を水平方向用と垂直方向用に別個に設けることにより、ハード量の増加を引き起こすことなく、上記問題点を解決するようにしたものである。
【００３７】
即ち、本願の第１の発明は、水平方向または垂直方向にｋ点ＤＣＴ演算を行う１次元ＤＣＴ演算装置であって、入力される原信号に掛けられる係数の中から選択した１個または２個の値のみを被乗数とするk/2（ｋは２のべき乗）個の半固定乗算器と、f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),……,f(k/2-1),f(k/2)の順番で１個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)-f(k-3),……,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記ｋ／２個の半固定乗算器に入力する加減算器と、２個の累算値を保持する記憶手段を有し、前記ｋ／２個の半固定乗算器の出力から１つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記２個の累算値に交互に加算し、それぞれＤＣＴ係数F(0)とF(1),F(2)とF(3),F(4)とF(5),……,F(k-2)とF(k-1)を出力するｋ／２個の累算器と、前記ｋ／２個の累算器から出力されるｋ個のＤＣＴ係数の値を保持し、該ｋ個から成るＤＣＴ係数をF(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番で出力する記憶回路とを備えることを特徴とする。
【００３８】
また、本願の第２の発明は、水平方向または垂直方向にｋ点ＩＤＣＴ演算を行う１次元ＩＤＣＴ演算装置であって、ＤＣＴ係数に掛けられる係数の中から選択した１個または２個の値のみを被乗数とし、F(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番で１個づつ入力されたＤＣＴ係数と乗算するｋ／２（ｋは２のべき乗）個の半固定乗算器と、２個の累算値を保持する記憶手段を有し、前記ｋ／２個の半固定乗算器の出力から１つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記２個の累算値に交互に加算するｋ／２個の累算器と、前記ｋ／２個の累算器から出力されるｋ個の値を保持する記憶手段を有し、前記累算器から出力された前記ｋ個の値に対し、ｋ／２回の加算とｋ／２回の減算を行ってf(0),f(1),f(2),f(3),f(4),……,f(k-2),f(k-1)の順番で原信号を求める加減算器とを備えることを特徴とする。
【００３９】
また、本願の第３の発明は、水平方向または垂直方向にｋ点ＤＣＴ演算またはｋ点ＩＤＣＴ演算を行う１次元ＤＣＴ／ＩＤＣＴ演算装置であって、原信号およびＤＣＴ係数に掛けられる係数の中から選択した１個または２個の値のみを被乗数とするｋ／２（ｋは２のべき乗）個の半固定乗算器と、f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),……,f(k/2-1),f(k/2)の順番で１個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)-f(k-3),……,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記ｋ／２個の半固定乗算器に入力するか、若しくはF(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番で１個づつ入力されるＤＣＴ係数を前記ｋ／２個の半固定乗算器に入力するかを選択可能な加減算器と、２個の累算値を保持する記憶手段を有し、前記ｋ／２個の半固定乗算器の出力から１つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記２個の累算値に交互に加算するｋ／２個の累算器と、前記ｋ／２個の累算器から出力されるｋ個の値を保持する記憶手段を有し、F(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番でＤＣＴ係数を出力するか、若しくは前記累算器から出力された前記ｋ個の値に対し、ｋ／２回の加算とｋ／２回の減算を行ってf(0),f(1),f(2),f(3),f(4),……,f(k-2),f(k-1)の順番で原信号を求めて出力するかを選択可能な加減算器とを備えることを特徴とする。
【００４０】
また、本願の第４の発明は、ｍ点×ｎ点（ｍとｎは２のべき乗）の２次元ＤＣＴ演算を実行する２次元ＤＣＴ演算装置であって、水平方向にｋ点ＤＣＴ演算を行うための第１の１次元ＤＣＴ演算回路と、垂直方向にｋ点ＤＣＴ演算を行うための第２の１次元ＤＣＴ演算回路と、水平方向に書き込まれたデータを垂直方向に読み出すか、若しくは垂直方向に書き込まれたデータを水平方向に読み出せるｍ×ｎワードの２ポートメモリとを有し、前記第１および第２の１次元ＤＣＴ演算回路は、入力される原信号に掛けられる係数の中から選択した１個または２個の値のみを被乗数とするｋ／２（ｋは２のべき乗）個の半固定乗算器と、f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),……,f(k/2-1),f(k/2)の順番で１個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)-f(k-3),……,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記ｋ／２個の半固定乗算器に入力する加減算器と、２個の累算値を保持する記憶手段を有し、前記ｋ／２個の半固定乗算器の出力から１つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記２個の累算値に交互に加算し、それぞれＤＣＴ係数F(0)とF(1),F(2)とF(3),F(4)とF(5),……,F(k-2)とF(k-1)を出力するｋ／２個の累算器と、前記ｋ／２個の累算器から出力されるｋ個のＤＣＴ係数の値を保持し、該ｋ個から成るＤＣＴ係数をF(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番で出力する記憶回路とを備えることを特徴とする。
【００４１】
また、本願の第５の発明は、ｍ点×ｎ点（ｍとｎは２のべき乗）の２次元ＩＤＣＴ演算を実行する２次元ＩＤＣＴ演算装置であって、水平方向にｋ点ＩＤＣＴ演算を行うための第１の１次元ＩＤＣＴ演算回路と、垂直方向にｋ点ＩＤＣＴ演算を行うための第２の１次元ＩＤＣＴ演算回路と、水平方向に書き込まれたデータを垂直方向に読み出すか、若しくは垂直方向に書き込まれたデータを水平方向に読み出せるｍ×ｎワードの２ポートメモリとを有し、前記第１および第２の１次元ＩＤＣＴ演算回路は、ＤＣＴ係数に掛けられる係数の中から選択した１個または２個の値のみを被乗数とし、F(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番で１個づつ入力されたＤＣＴ係数と乗算するｋ／２（ｋは２のべき乗）個の半固定乗算器と、２個の累算値を保持する記憶手段を有し、前記ｋ／２個の半固定乗算器の出力から１つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記２個の累算値に交互に加算するｋ／２個の累算器と、前記ｋ／２個の累算器から出力されるｋ個の値を保持する記憶手段を有し、前記累算器から出力された前記ｋ個の値に対し、ｋ／２回の加算とｋ／２回の減算を行ってf(0),f(1),f(2),f(3),f(4),……,f(k-2),f(k-1)の順番で原信号を求める加減算器とを備えることを特徴とする。
【００４２】
また、本願の第６の発明は、ｍ点×ｎ点（ｍとｎは２のべき乗）の２次元ＤＣＴ演算または２次元ＩＤＣＴ演算を実行する２次元ＤＣＴ／ＩＤＣＴ演算装置であって、水平方向にｋ点ＤＣＴ演算またはｋ点ＩＤＣＴ演算を行うための第１の１次元ＤＣＴ／ＩＤＣＴ演算共用回路と、垂直方向にｋ点ＤＣＴ演算またはＩＤＣＴ演算を行うための第２の１次元ＤＣＴ／ＩＤＣＴ演算共用回路と、水平方向に書き込まれたデータを垂直方向に読み出すか、若しくは垂直方向に書き込まれたデータを水平方向に読み出せるｍ×ｎワードの２ポートメモリとを有し、前記第１および第２の１次元ＤＣＴ／ＩＤＣＴ演算共用回路は、原信号およびＤＣＴ係数に掛けられる係数の中から選択した１個または２個の値のみを被乗数とするｋ／２（ｋは２のべき乗）個の半固定乗算器と、f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),……,f(k/2-1),f(k/2)の順番で１個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)-f(k-3),……,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記ｋ／２個の半固定乗算器に入力するか、若しくはF(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番で１個づつ入力されるＤＣＴ係数を前記ｋ／２個の半固定乗算器に入力するかを選択可能な加減算器と、２個の累算値を保持する記憶手段を有し、前記ｋ／２個の半固定乗算器の出力から１つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記２個の累算値に交互に加算するｋ／２個の累算器と、前記ｋ／２個の累算器から出力されるｋ個の値を保持する記憶手段を有し、F(0),F(1),F(2),F(3),F(4),……,F(k-2),F(k-1)の順番でＤＣＴ係数を出力するか、若しくは前記累算器から出力された前記ｋ個の値に対し、ｋ／２回の加算とｋ／２回の減算を行ってf(0),f(1),f(2),f(3),f(4),……,f(k-2),f(k-1)の順番で原信号を求めて出力するかを選択可能な加減算器とを備えることを特徴とする。
【００４３】
【発明の実施の形態】
以下、本発明の実施形態を図面を参照しつつ説明する。
【００４４】
第１の実施形態
本発明の第１の実施形態である８点１次元ＤＣＴ演算装置を図１に示す。このＤＣＴ演算装置は、ＣＫに同期して動作し、１ＣＫ当たり１個の原信号を入力し、また、１個のＤＣＴ係数を出力する。奇数番目ＣＫと偶数番目ＣＫで上述した式「数１」と「数２」を交互に計算する。回路構成としては、レジスタ７５〜７７、加減算器７８、半固定乗算器７９〜８２（ＭＰＹＡ／Ｄ〜ＭＰＹＧ）、累算器８７〜９０、レジスタ４９〜５２（ＲＥＧ０１〜３１）、レジスタ５３〜５６（ＲＥＧ４１〜７１）、セレクタ１０３を備えている。また、累算器８７は、セレクタ９１、加算器９５、レジスタ（ＲＥＧ００）４１および４５（ＲＥＧ４０）、セレクタ９９で構成されている。また、累算器８８〜９０は、セレクタ９２〜９４、加減算器９６〜９８、レジスタ（ＲＥＧ１０）４２〜４４（ＲＥＧ３０）および４６（ＲＥＧ５０）〜４８（ＲＥＧ７０）、セレクタ１００〜１０２で構成されている。
【００４５】
以下、具体的な動作を説明する。
最初に、各累算器８７〜９０内のレジスタ４１〜４８はリセットされ、それらの値が「０」にされる。この後、１ＣＫ当たり１個の原信号がＩＮよりＣＫごとにf(0),f(7),f(1),f(6),f(2),f(5),f(3),f(4)の順番で入力される。これらのうち、f(0),f(1),f(2),f(3)はレジスタ７５（ＲＥＧ０）にセットされ、１ＣＫ後にレジスタ７６（ＲＥＧ１）にシフトされ、それぞれ２ＣＫの間保持される。また、f(7),f(6),f(5),f(4)はレジスタ７７（ＲＥＧ２）にセットされ、同じく２ＣＫの間保持される。これにより、加減算器７８では、ＣＫごとにf(0)+f(7),f(0)-f(7),f(1)+f(6),f(1)-f(6),f(2)+f(5),f(2)-f(5),f(3)+f(4),f(3)-(4)が計算され、その計算結果が半固定乗算器７９〜８２（ＭＰＹＡ／Ｄ，ＭＰＹＢ／Ｅ，ＭＰＹＣ／Ｆ，ＭＰＹＧ）に入力される。
【００４６】
半固定乗算器７９〜８１（ＭＰＹＡ／Ｄ，ＭＰＹＢ／Ｅ，ＭＰＹＣ／Ｆ）は被乗数がそれぞれＡとＤ，ＢとＥ，ＣとＦの２種類に固定された乗算器であり、前述した式「数１」を計算するときは、Ａ，Ｂ，Ｃ、「数２」式を計算するときはＤ，Ｅ，Ｆが選択される。また、半固定乗算器８２（ＭＰＹＧ）は被乗数がＧに固定されており、前述の式「数２」の計算にのみ使用される。累算器８７，８８，８９，９０ではそれぞれF(0)とF(1),F(2)とF(3),F(4)とF(5),F(6)とF(7)がＣＫごとに交互に計算される。
【００４７】
最初にf(0)+f(7)が入力されると、半固定乗算器７９，８０，８１ではそれぞれA×{f(0)+f(7)},B×{f(0)+f(7)},C×{f(0)+f(7)}が並列に計算され、バス８３，８４，８５に出力される。累算器８７では、セレクタ９１でバス８３を選択することにより、A×{f(0)+f(7)}がレジスタ４１（ＲＥＧ００）にセットされる。このとき、セレクタ９９ではレジスタ４１（ＲＥＧ００）の出力が選択されている。レジスタ４１（ＲＥＧ００）は最初に「０」にリセットされているため、加算器９５はスルーとなる。同様にして、累算器８８，８９，９０では、セレクタ９２，９３，９４でそれぞれバス８４，８３，８５を選択することにより、B×{f(0)+f(7)},A×{f(0)+f(7)},C×{f(0)+f(7)}がレジスタ４２（ＲＥＧ１０），レジスタ４３（ＲＥＧ２０），レジスタ４４（ＲＥＧ３０）にセットされる。
【００４８】
次に、f(0)-f(7)が入力されると，半固定乗算器７９，８０，８１，８２ではそれぞれD×{f(0)-f(7)},E×{f(0)-f(7)I},F×{f(0)-f(7)},G×{f(0)-f(7)}が並列に計算され、バス８３，８４，８５，８６に出力される。
【００４９】
累算器８７では、セレクタ９１でバス８３を選択することにより、D×{f(0)-f(7)}がレジスタ４５（ＲＥＧ４０）にセットされる。このとき、セレクタ９９はレジスタ４５（ＲＥＧ４０）の出力を選択している。レジスタ４５（ＲＥＧ４０）は最初に「０」にリセットされているため、加算器９５はスルーとなる。同様にして、累算器８８，８９，９０では、セレクタ９２，９３，９４でそれぞれバス８４，８５，８６を選択することにより、E×{f(0)-f(7)},F×{f(0)-f(7)},G×{f(0)-f(7)}がレジスタ４６（ＲＥＧ５０），レジスタ４７（ＲＥＧ６０），レジスタ４８（ＲＥＧ７０）にセットされる。以下、ＣＫごとに前述の式「数１」と「数２」が交互に計算され、７ＣＫ目にF(0),F(2),F(4),F(6)が求まり、レジスタ４９〜５２（ＲＥＧ０１〜ＲＥＧ３１）にセットされる。また、８ＣＫ目にF(1),F(3),F(5),F(7）が求まり、レジスタ５３〜５６（ＲＥＧ４１〜ＲＥＧ７１）にセットされる。レジスタ４１〜４４（ＲＥＧ００〜ＲＥＧ３０）は７ＣＫ目に、レジスタ４５〜４８（ＲＥＧ４０〜ＲＥＧ７０）は８ＣＫ目にリセットされ、それぞれ８ＣＫ目、９ＣＫ目より新しい８点１次元ＤＣＴ演算が開始される。
【００５０】
レジスタ４９〜５６にセットされたＤＣＴ係数F(0)〜F(7)は、セレクタ５７，５８，１０３で選択されて、ＯＵＴから１ＣＫごとにF(0),F(1),F(2),F(3),F(4),F(5),F(6),F(7)の順番で出力される。
【００５１】
第２の実施形態
本発明の第２の実施形態である８点１次元ＩＤＣＴ演算装置を図２に示す。このＩＤＣＴ演算装置の構成は、前記第１の実施形態の８点１次元ＤＣＴ演算装置から入力部のレジスタ７５，７６，７７（ＲＥＧ０，ＲＥＧ１，ＲＥＧ２）と加減算器７８、及び出力部のセレクタ１０３を削除し、出力部にレジスタ１０４と加減算器１０５を付加した構造であり、図１の第１の実施形態と同一部分は同一符号で示している。この実施形態では、奇数番目ＣＫと偶数番目ＣＫで前述の式「数３」と「数４」の右辺第１項の行列の乗算と右辺第２項の行列の乗算が交互に実行される。
【００５２】
入力ＩＮには、ＣＫごとにＤＣＴ係数F(0),F(1),F(2),F(3),F(4),F(5),F(6),F(7)が順番に入力されて半固定乗算器７９〜８２（ＭＰＹＡ／Ｄ，ＭＰＹＢ／Ｅ，ＭＰＹＣ／Ｆ，ＭＰＹＧ）に入力される。そして、７ＣＫ目に前述の式「数３」と「数４」の右辺第１項の行列の乗算結果がレジスタ４９〜５２（ＲＥＧ０１，ＲＥＧ１１，ＲＥＧ２１，ＲＥＧ３１）にセットされ、８ＣＫ目に右辺第２項の行列の乗算結果がレジスタ５３〜５６（ＲＥＧ４１，ＲＥＧ５１，ＲＥＧ６１，ＲＥＧ７１）にセットされる。そして、「数３」と「数４」における右辺第１項の行列の乗算結果と右辺第２項の行列の乗算結果の加算と減算は加減算器１０５で計算される。その際、セレクタ５７と５８はＯＵＴからＣＫごとにf(0),f(1),f(2),f(3),f(4),f(5),f(6),f(7)の順番に出力されるように制御される。尚、レジスタ４９〜５２（ＲＥＧ０１，ＲＥＧ１１，ＲＥＧ２１，ＲＥＧ３１）に右辺第１項の行列の乗算結果が得られるタイミングとレジスタ５３〜５６（ＲＥＧ４１，ＲＥＧ５１，ＲＥＧ６１，ＲＥＧ７１）に右辺第２項の行列の乗算結果が得られるタイミングに１ＣＫの差があり、そのままでは計８回の加算と減算を行えない。このため、レジスタ１０４（ＲＥＧ３）でレジスタ４９〜５２（ＲＥＧ０１，ＲＥＧ１１，ＲＥＧ２１，ＲＥＧ３１）の出力を１ＣＫ遅延させることにより、レジスタ５３〜５６（ＲＥＧ４１，ＲＥＧ５１，ＲＥＧ６１，ＲＥＧ７１）の出力とタイミングを一致させるようにしている。
【００５３】
第３の実施形態
本発明の第３の実施形態である８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置を図３に示す。この実施形態は、前記第１の実施形態のＤＣＴ演算装置と第２の実施形態のＩＤＣＴ演算装置を組み合わせた回路構成であり、同一部分は同一符号で示している。この実施形態の８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置においては、乗算器７９〜８２の入力側のセレクタ１０６と加減算器１０５の出力側のセレクタ１０７の入力をａ側とすることによりＤＣＴ演算を実行でき、セレクタ１０６と１０７の入力をｂ側とすることによりＩＤＣＴ演算を実行できる。
【００５４】
第４の実施形態
本発明の第４の実施形態である８点×８点２次元ＤＣＴ／ＩＤＣＴ演算共用装置を図４に示す。
【００５５】
この実施形態の８点×８点２次元ＤＣＴ／ＩＤＣＴ演算共用装置は、上記第３の実施形態で示した８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置１０８と１１０、及び８×８Ｗの２次元転置メモリ１０９で構成される。８×８Ｗの２次元転置メモリ１０９は、同時に書き込みと読み出しができ、水平方向に書き込んだデータを垂直方向に読み出せるメモリである。８×８個の２次元の信号に対して８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置１０８により水平方向に８点１次元ＤＣＴ（または８点１次元ＩＤＣＴ）を８回実行し、その結果を８×８Ｗの２次元転置メモリ１０９に水平方向に書き込んで記憶する。次に、２次元転置メモリ１１０から垂直方向に読み出して８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置１１０により８点１次元ＤＣＴ（または８点１次元ＩＤＣＴ）を８回実行する。尚、８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置１０８により垂直方向に１次元ＤＣＴ（または１次元ＩＤＣＴ）を行い、８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置１１０により水平方向に８点１次元ＤＣＴ（または８点１次元ＩＤＣＴ）を行っても良い。
【００５６】
尚、本実施形態では、８点×８点２次元ＤＣＴ／ＩＤＣＴ演算装置の場合のみ示したが、８点×８点２次元ＤＣＴ演算装置と８点×８点２次元ＩＤＣＴ演算装置も同様にして構成できる。
【００５７】
以上の説明から分かるように、本発明によれば、通常の画像符号化装置において適正な入出力レートである１ＣＫ当たり１個の入力と出力という条件のとき、従来技術と同程度のハード規模であって、パイプライン段数を深くしても無効サイクルが発生しない２次元ＤＣＴ／ＩＤＣＴ演算共用装置を実現することができる。
【００５８】
すなわち、従来技術の第１〜第３の例に示した８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置は１ＣＫ当たり２個の結果を出力するのに対し、本発明の第１〜第３の実施形態は１ＣＫ当たり１個の結果を出力する。
【００５９】
両者の代表として、従来技術の第３の例と本発明の第３の実施形態のハード量を比較すると、固定または半固定係数乗算器の規模は両者とも同一であるが、加算器と加減算器の総数は従来技術の第３の例が１２個、本発明の第３の実施形態が６個である。本発明の第３の実施形態のハード量は、従来技術の第３の例の２／３程度であるが、スループットは半分になる。
【００６０】
ただし、本発明の利用分野である画像符号化では、従来技術の第４の例と本発明の第４の実施形態に示した８点×８点２次元ＤＣＴ／ＩＤＣＴ演算共用装置が用いられる。これらは、両方とも６４ＣＫ当たり６４個の結果を出力し、スループットは等しい。
【００６１】
一方、従来技術の第４の例では８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置を１個用いるのに対し、本発明の第４の実施形態では水平方向用と垂直方向用に２個の８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置を用いる。これらだけを比較すると、本発明の第４の実施形態のハード量は従来技術の第３の例の１．５倍程度になる。しかし、「発明が解決しようとする課題」において示したように、従来技術の第４の例には前段または後段の装置とのインタフェース回路が複雑になるという欠点がある。この問題を解決するために２次元ＤＣＴ／ＩＤＣＴ演算共用装置の前段に１データ書き込みと２データ読み出しが同時にできる３ポートの６４Ｗメモリ、後段に２データ書き込みと１データ読み出しが同時にできる３ポートの６４Ｗメモリを設け、それらのメモリでバッファリングして入力と出力を１ＣＫ当たり１データに変換する構成を採用した場合には、本発明の第４の実施形態と従来技術の第４の例のハード量は同程度となる。
【００６２】
さらに、図４に示したように本発明の第４の実施形態は、入力ＩＮから出力ＯＵＴまでパイプライン化されているため、８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置１０８と１１０のパイプライン段数が深くても無効サイクルを生じない。もちろん、従来技術の第３の例である８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置を水平方向用と垂直方向用に２個と４ポートメモリを用いて、入力から出力までパイプライン化することも可能ではあるが、この構成では１ＣＫ当たり２個の入力と出力となる。これは、ハード量が２倍になるにもかかわらず、通常の画像符号化装置ではオーバスペックであり、その性能を生かせない。
【００６３】
尚、上記実施形態においては、信号数が８点×８点の場合のみ説明したが、本発明は任意の信号数の１次元または２次元ＤＣＴ演算装置、１次元または２次元ＩＤＣＴ演算装置、及び１次元または２次元ＤＣＴ／ＩＤＣＴ演算共用装置に対して同様に適用できる。
【００６４】
【発明の効果】
以上の説明から明らかなように、本発明によれば、通常の画像符号化装置において適正な入出力レートである１ＣＫ当たり１個の入力と出力という条件のとき、従来技術と同程度のハード規模であって、パイプライン段数を深くしても無効サイクルが発生しないようにすることができるＤＣＴ／ＩＤＣＴ演算装置を実現できるという効果がある。
【図面の簡単な説明】
【図１】本発明の第１の実施形態である８点１次元ＤＣＴ演算装置の構成図である。
【図２】本発明の第２の実施形態である８点１次元ＩＤＣＴ演算装置の構成図である。
【図３】本発明の第３の実施形態である８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置の構成図である。
【図４】本発明の第４の実施形態である８点２次元ＤＣＴ／ＩＤＣＴ演算共用装置の構成図である。
【図５】従来技術の第１の例を示す構成図である。
【図６】従来技術の第２の例を示す構成図である。
【図７】従来技術の第３の例を示す構成図である。
【図８】従来技術の第４の例を示す構成図である。
【図９】従来技術の第４の例の動作を説明するための説明図である。
【図１０】従来技術の第４の例の問題点を説明するための説明図である。
【符号の説明】
４１〜４８，４９〜５６，７５〜７７…レジスタ、７８…加減算器、７９〜８２…半固定乗算器、８３〜８６…バス、８７〜９０…累算器、９１〜９４…セレクタ、９５…加算器、９６〜９８…加減算器、５７，５８…セレクタ、１０３…セレクタ、１０５…加減算器、１０８，１１０…８点１次元ＤＣＴ／ＩＤＣＴ演算共用装置、１０９…２ポート６４Ｗ転置メモリ。
【図１】
0003654622.tif 000006
【図２】
0003654622.tif 000007
【図３】
0003654622.tif 000008
【図４】
0003654622.tif 000009
【図５】
0003654622.tif 000010
【図６】
0003654622.tif 000011
【図７】
0003654622.tif 000012
【図８】
0003654622.tif 000013
【図９】
0003654622.tif 000014
【図１０】
0003654622.tif 000015