(57)【特許請求の範囲】
【請求項１】
ファーストプリバタフライ回路と、ファーストＤＣＴ演算回路と、ファーストポストバタフライ回路とからなるファーストステージ回路と、
セカンドプリバタフライ回路と、セカンドＤＣＴ演算回路と、セカンドポストバタフライ回路とからなるセカンドステージ回路と、
上記ファーストステージ回路と上記セカンドステージ回路との間の転置回路とからなり、
上記セカンドポストバタフライ回路は、
バタフライ演算モードとスルーモードとを切り換える第１のセレクタと、
上記バタフライ演算モードと上記スルーモードとで出力するビット列の組み合わせを切り換える第２のセレクタと、
上記上記バタフライ演算モードのときに、上記第２のセレクタから出力された上記ビット列の組を加算及び減算する加算及び減算回路と
を備え、
上記ファーストプリバタフライ回路は、
バタフライ演算モードとスルーモードとを切り換える第３のセレクタと、
プリバタフライ演算を行う場合と、バタフライ演算された２フィールド分のＤＣＴ演算結果を１フィールド毎のＤＣＴ演算結果に戻すためのバタフライ演算を行う場合とで、出力するビット列の組み合わせを切り換える第４のセレクタと、
上記第４のセレクタから出力された上記ビット列の組を加算及び減算する加算及び減算回路と
を備えることを特徴とする直交演算装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、画像信号の高能率符号化に用いられる直交変換装置に関するもので、特に、簡単な構成で、フィールド間でのバタフライ演算が行なえるようにした直交変換装置に係わる。
【０００２】
【従来の技術】
２次元ＤＣＴ(Discrete Cosine Transform) を用いて、ディジタルビデオ信号を圧縮することが知られている。すなわち、時間領域の画素データを２次元ＤＣＴすると、（８×８）の係数データに変換される。変換された係数データは、直流分から、低周波、高周波までの周波数領域のデータである。画像信号の場合、視覚特性上、高周波成分の係数データは、画質に寄与する割合は少ない。このため、変換データを量子化する際に、高周波成分のＤＣＴ係数に対する重み付けを変えたり、切捨てたりすることで、情報量を低減できる。
【０００３】
このようなディジタルＶＴＲにおいてＤＣＴ演算を行うための専用の集積回路の開発が進められている。このようなＤＣＴ演算回路の構成としては、ＤＡ(Distributed Arithmetic)法を用いたものが考えられる。以下、ＤＡ法を用いて行う２次元ＤＣＴ演算について簡単に説明する。
【０００４】
ａ．フレームフォワードＤＣＴ
フレームフォワードＤＣＴでは、（８×８）ブロックの入力サンプルに対して、以下のような２次元フォワードＤＣＴ演算が行われる。
【数１】
0003697733.tif 000002
【０００５】
この演算は、水平方向と垂直方向とに分けて処理される。すなわち、先ず、（８×１）のフォワードＤＣＴ演算が行われ、水平方向の処理がなされる。そして、読み出し方向が変えられ、（８×１）のフォワードＤＣＴ演算が行われ、垂直方向の処理がなされる。（８×１）のフォワードＤＣＴ演算は、以下のように示される。
【数２】
0003697733.tif 000003
【０００６】
上式をマトリクスで表現すると、以下のようになる。
【数３】
0003697733.tif 000004
【０００７】
上式を等価変換すると、以下のようになる。
【数４】
0003697733.tif 000005
【０００８】
上式より、以下に示すバタフライ演算を行えば、（８×１）のフォワードＤＣＴ演算は直ちに行なえる。
【数５】
0003697733.tif 000006
【０００９】
ｂ．フィールドフォワードＤＣＴ
次に、フィールドフォワードＤＣＴについて説明する。フィールドフォワードＤＣＴでは、（８×４）ブロックの入力サンプルに対して、以下のような２次元フォワードＤＣＴ演算が行われる。
【数６】
0003697733.tif 000007
【００１０】
この演算は、水平方向と垂直方向とに分けて処理される。すなわち、先ず、（８×１）のフォワードＤＣＴ演算が行われ、水平方向の処理がなされる。そして、読み出し方向が変えられ、（４×１）のフォワードＤＣＴ演算が行われ、垂直方向の処理がなされる。（８×１）のフォワードＤＣＴ演算は、（２）式〜（５）に示した通りである。（４×１）のフォワードＤＣＴ演算は、以下のように示される。
【数７】
0003697733.tif 000008
【００１１】
上式をマトリクスで表現すると、以下のようになる。
【数８】
0003697733.tif 000009
【００１２】
ｃ．フレームインバースＤＣＴ
次に、フレームインバースＤＣＴ演算について説明する。フレームインバースＤＣＴでは、（８×８）ブロックの係数に対して、以下のような２次元インバースＤＣＴ演算が行われる。
【数９】
0003697733.tif 000010
【００１３】
この演算は、垂直方向と水平方向とに分けて処理される。すなわち、先ず、（８×１）のインバースＤＣＴ演算が行われ、垂直方向の処理がなされる。そして、読み出し方向が変えられ、（８×１）のインバースＤＣＴ演算が行われ、水平方向の処理がなされる。（８×１）のインバースＤＣＴ演算は、以下のように示される。
【数１０】
0003697733.tif 000011
【００１４】
上式をマトリクスで表現すると、以下のようになる。
【数１１】
0003697733.tif 000012
【００１５】
上式を等価変換すると、以下のようになる。
【数１２】
0003697733.tif 000013
【００１６】
上式より、
【数１３】
0003697733.tif 000014
を求め、これらを以下に示すようにバタフライ演算すれば、（８×１）のインバースＤＣＴ演算が行なえる。
【数１４】
0003697733.tif 000015
【００１７】
ｄ．フィールドインバースＤＣＴ
次に、フィールドインバースＤＣＴ演算について説明する。フィールドインバースＤＣＴでは、（８×４）ブロックの係数に対して、以下のような２次元インバースＤＣＴ演算が行われる。
【数１５】
0003697733.tif 000016
【００１８】
この演算は、垂直方向と水平方向とに分けて処理される。すなわち、先ず、（４×１）のインバースＤＣＴ演算が行われ、垂直方向の処理がなされる。そして、読み出し方向が変えられ、（８×１）のインバースＤＣＴ演算が行われ、水平方向の処理がなされる。（８×１）のインバースＤＣＴ演算は、（１０）式〜（１４）式に示したようにして行われる。（４×１）のインバースＤＣＴ演算は、以下のように示される。
【数１６】
0003697733.tif 000017
【００１９】
上式をマトリクスで表現すると、以下のようになる。
【数１７】
0003697733.tif 000018
【００２０】
上述のような演算をＤＡ法で行うハードウェアとしては、図６に示すようなものが考えられる。
【００２１】
図６において、１０１はファーストステージ回路、１０２はセカンドステージ回路、１０３は転置ＲＡＭである。ファーストステージ回路１０１及びセカンドステージ回路１０２は、プリバタフライ回路と、ＤＣＴ回路と、ポストバタフライ回路とを有している。転置ＲＡＭ１０３は、ファーストステージ回路１０１とセンカドステージ回路１０２との間に設けられ、ファーストステージとセカンドステージとでデータの読み出し方向を変えるために設けられている。
【００２２】
フレームフォワードＤＣＴ演算処理では、図７に示すような処理が行われる。ブロック１１１はファーストステージのプリバタフライ演算で、これは（５Ａ）〜（５Ｈ）式に対応する処理である。ブロック１１２はファーストステージのフォワードＤＣＴ演算で、これは（４Ａ）及び（４Ｂ）式に対応する処理である。ブロック１１１及び１１２の処理は、ファーストステージ回路１０１で行われる。ブロック１１３は転置処理で、転置ＲＡＭ１０３で行われる。ブロック１１４はセカンドステージのプリバタフライ演算で、これは（５Ａ）〜（５Ｈ）式に対応する処理である。ブロック１１５はセカンドステージのフォワードＤＣＴ演算で、これは（４Ａ）及び（４Ｂ）式に対応する処理である。ブロック１１４及び１１５の処理は、セカンドステージ回路１０２で行われる。ファーストステージ回路１０１での処理と、セカンドステージ回路１０３での処理とにより、（１）式に示した（８×８）のＤＣＴ演算がなされる。
【００２３】
フィールドフォワードＤＣＴ演算処理では、図８に示すような処理が行われる。ブロック１２１はファーストステージのプリバタフライ演算で、これは（５Ａ）〜（５Ｈ）式に対応する処理である。ブロック１２２はファーストステージのフォワードＤＣＴ演算で、これは（４Ａ）及び（４Ｂ）式に対応する処理である。ブロック１２１及び１２２の処理は、ファーストステージ回路１０１で行われる。ブロック１２３は転置処理で、転置ＲＡＭ１０３で行われる。ブロック１２４はセカンドステージのフォワードＤＣＴ演算で、これは（８Ａ）又は（８Ｂ）式に対応する処理である。これは、セカンドステージ回路１０２で行われる。ファーストステージ回路１０１の処理と、セカンドステージ回路１０３の処理とにより、（６）式に示した（８×４）のＤＣＴ演算がなされる。フィールドフォワードＤＣＴ演算処理では、セカンドステージでは（４×１）のＤＣＴ演算になるので、セカンドステージのプリバタフライ演算は不要である。
【００２４】
フレームインバースＤＣＴ演算処理では、図９に示すような処理が行われる。ブロック１３１はファーストステージのインバースＤＣＴ演算で、これは（１３Ａ）及び（１３Ｂ）式に対応する処理である。ブロック１３２はファーストステージのポストバタフライ演算で、これは式（１４Ａ）及び（１４Ｂ）式に対応する処理である。ブロック１３１及び１３２の処理は、ファーストステージ回路１０１で行われる。ブロック１３３は転置処理で、転置ＲＡＭ１０３で行われる。ブロック１３４はセカンドステージのインバースＤＣＴ演算で、これは（１３Ａ）及び（１３Ｂ）式に対応する処理である。ブロック１３５はポストバタフライ演算で、これは（１４Ａ）及び（１４Ｂ）式に対応する処理である。ブロック１３４及び１３５の処理は、セカンドステージ回路１０２で行われる。ファーストステージ回路１０１での処理と、セカンドステージ回路１０３での処理とにより、（９）式に示した（８×８）のインバースＤＣＴ演算がなされる。
【００２５】
フィールドインバースＤＣＴ演算処理では、図１０に示すような処理が行われる。ブロック１４１はファーストステージのインバースＤＣＴ演算で、これは（１７Ａ）、（１７Ｂ）式に対応する処理である。ブロック１４１の処理は、ファーストステージ回路１０１で行われる。ブロック１４２は転置処理で、転置ＲＡＭ１０３で行われる。ブロック１４３はセカンドステージのインバースＤＣＴ演算で、これは（１４Ａ）及び（１４Ｂ）式に対応する処理である。ブロック１４４はポストバタフライ演算で、これは式（１４Ａ）式及び（１４Ｂ）式に対応する処理である。ブロック１４３及び１４４の処理は、セカンドステージ回路１０２で行われる。ファーストステージ回路１０１の処理と、セカンドステージ回路１０３の処理とにより、（１５Ａ）又は（１５Ｂ）式に示した（８×４）のインバースＤＣＴ演算がなされる。フィールドインバースＤＣＴ演算処理では、垂直方向では（４×１）のインバースＤＣＴ演算になるので、ファーストステージのポストバタフライ演算は不要である。
【００２６】
ディジタルＶＴＲでは、フレームＤＣＴとフィールドＤＣＴとが用いられる。例えば、特開昭６３２４３４７８８号公報、特開平４−２６６２８４号公報に示されるように、フレームＤＣＴは、動きが小さい画面では、連続する画面間の相関が強いので、フレームＤＣＴが用いられる。フィールドＤＣＴは、動きが激して画面では、連続する画面の相関が少ないので、フィールドＤＣＴが用いられる。
【００２７】
更に、このようなディジタルＶＴＲでは、ＤＣＴ演算結果をフィールド間でバタフライ演算することが要求されている。つまり、図１１に示すように、（８×８）のブロックＢ１が、（８×４）の奇数ラインのブロックＢ２と（８×４）の偶数ラインのブロックＢ３とに分割される。この奇数ラインのブロックＢ２と（８×４）の偶数ラインのブロックＢ３のＤＣＴ演算結果が各ライン毎にバタフライ演算される。このときのバタフライ演算は、以下のように示される。
【数１８】
0003697733.tif 000019
【００２８】
このように、２フィールドでバタフライ演算されたＤＣＴ計数値を各フィールド係数値に戻す演算は、以下のようなバタフライ演算により求められる。
【数１９】
0003697733.tif 000020
【００２９】
【発明が解決しようとする課題】
従来のＤＣＴ回路では、このように２フィールド分のＤＣＴ演算結果をバタフライ演算する場合には、図１２に示すように、ＤＣＴ演算回路１００に、ＤＣＴ演算結果をフィールド間でバタフライ演算するためのバタフライ演算回路１０４を付加する必要がある。同様に、図１３に示すように、バタフライ演算された２フィールドのＤＣＴ演算結果を１フィールド毎のＤＣＴ演算結果に戻すためのバタフライ演算１０５を付加する必要がある。このため、回路規模が増大する。
【００３０】
したがって、この発明の目的は、回路規模が増大せずに、フレーム及びフィールドのＤＣＴ演算が行なえると共に、ＤＣＴ演算結果をフィールド間でバタフライ演算する際に、特別の付加回路を必要としない直交変換回路を提供することにある。
【００３１】
【課題を解決するための手段】
この発明は、ファーストプリバタフライ回路と、ファーストＤＣＴ演算回路と、ファーストポストバタフライ回路とからなるファーストステージ回路と、セカンドプリバタフライ回路と、セカンドＤＣＴ演算回路と、セカンドポストバタフライ回路とからなるセカンドステージ回路と、ファーストステージ回路とセカンドステージ回路との間の転置回路とからなり、セカンドポストバタフライ回路は、バタフライ演算モードとスルーモードとを切り換える第１のセレクタと、バタフライ演算モードとスルーモードとで出力するビット列の組み合わせを切り換える第２のセレクタと、バタフライ演算モードのときに、第２のセレクタから出力されたビット列の組を加算及び減算する加算及び減算回路とを備え、ファーストプリバタフライ回路は、バタフライ演算モードとスルーモードとを切り換える第３のセレクタと、プリバタフライ演算を行う場合と、バタフライ演算された２フィールド分のＤＣＴ演算結果を１フィールド毎のＤＣＴ演算結果に戻すためのバタフライ演算を行う場合とで、出力するビット列の組み合わせを切り換える第４のセレクタと、第４のセレクタから出力されたビット列の組を加算及び減算する加算及び減算回路とを備えることを特徴とする直交演算装置である。
【００３２】
【作用】
セカンドステージのポストバタフライ回路には、２フィールド分のＤＣＴ演算結果をバタフライ演算する機能が付加されている。また、ファーストステージ回路のプリバタフライ回路には、２フィールド分がバタフライ演算されたＤＣＴ演算結果を、各フィールド毎のデータに戻すバタフライ演算をする機能を有している。このため、ＤＣＴ演算結果をフィールド間でバタフライ演算する際にも、バタフライ回路を付加する必要がなく、回路の小型化が図れる。
【００３３】
【実施例】
以下、この発明の一実施例について図面を参照して説明する。図１は、この発明が適用されたＤＣＴ演算回路の全体構成を示すものである。このＤＣＴ演算回路は、ＤＡ(Distributed Arithmetic)法を用いて、２次元ＤＣＴ演算を行うものである。ＤＡ法を用いた２次元ＤＣＴ演算回路は、ファーストステージ回路１と、セカンドステージ回路２と、ファーストステージ回路１とセカンドステージ回路２との間の転置ＲＡＭ３とから構成されている。ＤＡ法では、共通の構成で、フォワードＤＣＴと、インバースＤＣＴとが行なえる。
【００３４】
ファーストステージ回路１は、プリプロセス回路１１と、プリバタフライ回路１２と、ＤＣＴ回路１３と、ポストバタフライ回路１４と、ポストプロセス回路１５とから構成される。セカンドステージ回路２は、プリプロセッサ２１と、プリバタフライ回路２２と、ＤＣＴ回路２３と、ポストバタフライ回路２４と、ポストプロセス回路２５とから構成される。
【００３５】
プリプロセス回路１１、２１は、例えば１６ビットのパラレルデータを、２系統の８ビットのシリアルデータに変換する。すなわち、図２Ａに示すように、１６ビットのパラレルデータｆ（０）、ｆ（１）、ｆ（２）、…が入力されると、この１６ビットのパラレルデータｆ（０）、ｆ（１）、ｆ（２）、…は、図２Ｂ及び図２Ｃに示すように、夫々、ビット列（０、２、４、…）とビット列（１、３、５、…）とに分けられて、シリアルデータに変換される。以下、図２Ｂに示すような、ビット（０、２、４、…）のデータ列をロワデータと称し、図２Ｃに示すようなビット（１、３、５、…）のデータ列をアッパデータと称する。
【００３６】
プリバタフライ回路１２、２２は、プリバタフライ演算を行なっている。また、この発明では、ファーストステージ回路１のプリバタフライ回路１２は、後に説明するように、フィールドインバースＤＣＴにおいて、バタフライ演算された２フィールドのＤＣＴ演算結果を１フィールド毎のＤＣＴ演算結果に戻すためのバタフライ演算をするのに用いられる。
【００３７】
ＤＣＴ回路１３、２３は、フォワードＤＣＴ演算及びインバースＤＣＴ演算を行なっている。
【００３８】
ポストバタフライ回路１４、２４は、ポストバタフライ演算を行っている。また、この発明では、セカンドステージ回路２のポストバタフライ回路２４は、フィールドフォワードＤＣＴにおいて、２フィールド分のＤＣＴ演算結果をバタフライ演算をするのに用いられる。
【００３９】
ポストプロセス回路１５及び２５は、ＤＣＴ演算結果の語長合わせ、丸め処理を行っている。
【００４０】
次に、この発明の一実施例の動作について説明する。この発明の一実施例では、フレームフォワードＤＣＴ演算処理、フィールドフォワードＤＣＴ演算処理、フレームインバースＤＣＴ演算処理、フィールドインバースＤＣＴ演算処理が可能である。そして、フィールドＤＣＴ処理では、２フィールド分のＤＣＴ演算結果をバタフライ演算することができる。
【００４１】
フレームフォワードＤＣＴ演算処理では、入力端子４に（８×８）のブロックのデータが供給される。ファーストステージ回路１のプリバタフライ回路１１で、（５Ａ）〜（５Ｄ）式に対応するプリバタフライ演算が行われ、ファーストステージ回路１のＤＣＴ回路１３で、（４Ａ）及び（４Ｂ）式に対応する処理が行われる。その結果、（３）式で示すような（８×１）のフォワードＤＣＴ演算が実行される。そして、転置ＲＡＭ３で方向が変えられる。セカンドステージ回路２のプリバタフライ回路２１で、（５Ａ）〜（５Ｄ）式に対応するプリバタフライ演算が行われ、セカンドステージ回路２のＤＣＴ回路２３で、（４Ａ）及び（４Ｂ）式に対応する処理が行われる。ファーストステージ回路１での処理とセカンドステージ回路２での処理とを行った結果、（１）式で示すような（８×８）フォワードＤＣＴ演算が実行される。求められた（８×８）の係数データは、出力端子５から出力される。
【００４２】
フィールドフォワードＤＣＴ演算処理では、入力端子４に（８×４）のブロックのデータが供給される。ファーストステージ回路１のプリバタフライ回路１１で、（５Ａ）〜（５Ｄ）式に対応するプリバタフライ演算が行われ、ファーストステージ回路１のＤＣＴ回路１３で、（４Ａ）及び（４Ｂ）式に対応する処理が行われる。その結果、（３）式で示すような（８×１）のフォワードＤＣＴ演算が実行される。そして、転置ＲＡＭ３で、方向が変えられる。セカンドステージ回路２のＤＣＴ回路２３で、（８Ａ）又は（８Ｂ）式に対応する処理が行われる。ファーストステージ回路１での処理とセカンドステージ回路２での処理とを行った結果、（６Ａ）又は（６Ｂ）式で示すような（８×４）フォワードＤＣＴ演算が実行される。求められた（８×４）の係数データは、出力端子５から出力される。
【００４３】
フレームインバースＤＣＴ演算処理では、入力端子４に（８×８）のブロックの係数データが供給される。ファーストステージ回路１のＤＣＴ回路１３で、（１３Ａ）及び（１３Ｂ）式に対応する処理が行われ、ファーストステージ回路１のポストバタフライ回路１４で、（１４Ａ）及び（１４Ｂ）式に対応する処理が行われ、その結果、（１１）式に示すような（８×１）のインバースＤＣＴ演算が実行される。そして、転置ＲＡＭ３で方向が変えられる。セカンドステージ回路２のＤＣＴ回路２３で、（１３Ａ）及び（１３Ｂ）式に対応する処理が行われ、セカンドステージ回路２のポストバタフライ回路２４で、（１４Ａ）及び（１４Ｂ）式に対応する処理が行われ、結果として、（９）式で示すような（８×８）インバースＤＣＴ演算が実行される。求められた（８×８）のデータは、出力端子５から出力される。
【００４４】
フィールドインバースＤＣＴ演算処理では、入力端子４に（８×４）のブロックの係数データが供給される。ファーストステージ回路１のＤＣＴ回路１３で、（１７Ａ）又は（１７Ｂ）式に対応する処理が行われ、その結果、（４×１）のインバースＤＣＴ演算が実行される。そして、転置ＲＡＭ３で方向が変えられる。セカンドステージ回路２のＤＣＴ回路２３で、（１３Ａ）及び（１３Ｂ）式に対応する処理が行われ、セカンドステージ回路２のポストバタフライ回路２４で、（１４Ａ）及び（１４Ｂ）式に対応する処理が行われ、結果として、（１５Ａ）又は（１５Ｂ）式で示すような（８×４）インバースＤＣＴ演算が実行される。求められた（８×８）のデータは、出力端子５から出力される。
【００４５】
フレーム処理とフィールド処理とを比較すると、画面の動きが少なく、連続する画面間の相関が強い場合には、フレーム処理が好ましい。画面の動きが激しく、連続する画面間の相関が弱い場合には、フィールド処理が好ましい。そこで、動き検出回路６が設けられ、画面の動きに応じて、フレーム処理とフィールド処理とが切り換えられる。すなわち、フォワードＤＣＴでは、入力端子４からのデータが動き検出回路６に供給される。動き検出回路６の出力がセカンドステージ回路２のバタフライ演算回路２２に供給される。画面の動きが小さい場合には、（８×８）のフレームフォワードＤＣＴ行われるので、セカンドステージ回路２のバタフライ演算回路２２で、バタフライ演算が行われる。画面の動きが大きい場合には、（８×４）のフィールドフォワードＤＣＴ行われるので、セカンドステージ回路２のバタフライ演算回路２２がスルーされる。
【００４６】
この発明が適用されたＤＣＴ回路には、セカンドステージ回路２のポストバタフライ回路２４に、（１８Ａ）〜（１８Ｈ）式に示したような、２フィールド分のＤＣＴ演算結果をバタフライ演算する機能が付加されている。また、ファーストステージ回路１のプリバタフライ演算回路１２に、（１９Ａ）〜（１９Ｈ）式に示したような、バタフライ演算された２フィールド分のＤＣＴ演算結果を１フィールド毎のＤＣＴ演算結果に戻すためのバタフライ演算をする機能が付加されている。
【００４７】
すなわち、フィールトフォワードＤＣＴ演算では、ポストバタフライ演算が不要である。そこで、セカンドステージ２のポストバタフライ演算回路２４が、２フィールド分のＤＣＴ演算結果をバタフライ演算するのに利用される。また、フィールドバタフライ演算では、プリバタフライ演算が不要である。そこで、ファーストステージ１のプリバタフライ演算回路１２が、バタフライ演算された２フィールド分のＤＣＴ演算結果を１フィールド毎のＤＣＴ演算結果に戻すためのバタフライ演算するのに利用される。
【００４８】
図３は、セカンドステージ回路２のポストバタフライ回路２４の一例を示すものである。図３において、入力端子３１Ａ〜３１Ｈの順に、データが供給される。すなわち、データｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）、ｆ（４）、ｆ（５）、ｆ（６）、ｆ（７）が入力端子３１Ａ〜３１Ｈに順に供給される。このデータは、例えば１６ビットのパラレルデータである。
【００４９】
入力端子３１Ａ、３１Ｃ、３１Ｅ、３１Ｇからのデータがセレクタ３２にそれぞれ供給される。入力端子３１Ｂ、３１Ｄ、３１Ｆ、３１Ｈからのデータがセレクタ３３にそれぞれ供給される。セレクタ３２及び３３は、バタフライ演算の相手側を設定するためのものである。
【００５０】
セレクタ３２の出力が加算器３４に供給されると共に、セレクタ３５の入力端子３５Ａに供給される。セレクタ３３の出力がＥＸ−ＯＲゲート３６の一方の入力端子に供給されると共に、セレクタ３５の入力端子３５Ｂに供給される。ＥＸ−ＯＲゲート３６の出力が加算器３４に供給される。ＥＸ−ＯＲゲート３６は、符号を変えるために設けられており、ＥＸ−ＯＲゲート３６の他方の入力端子には、端子４０から符号を設定するための信号が供給される。
【００５１】
セレクタ３５の出力がセレクタ３７の端子３７Ａに供給される。加算器３４の出力がセレクタ３７の端子３７Ｂに供給される。なお、１６ビットの語長になるように、加算器３４の出力のＬＳＢは、丸められる。セレクタ３７の出力がフリップフロップ３８に供給される。フリップフロップ３８の出力が出力端子３９から取り出される。
【００５２】
セレクタ３７により、モードが設定される。スルーモードは、フレームフォワードＤＣＴ演算を行うときに用いられる。スルーモードでは、セレクタ３７は端子３７Ａ側に設定される。セレクタ３２及び３３は、マスタークロックで２ビットづつホールドされたデータを出力する。そして、セレクタ３２及び３３は、端子３２Ａ−３２Ｃ−３２Ｅ−３２Ｇ及び３３Ｂ−３３Ｄ−３３Ｆ−３３Ｈの順に、２クロック周期ずつ切り換えられる。これにより、セレクタ３２からは、データｆ（０）、ｆ（２）、ｆ（４）、ｆ（６）が順に出力され、セレクタ３３からは、データｆ（１）、ｆ（３）、ｆ（５）、ｆ（７）が順に出力される。セレクタ３５は、マスタークロックを分周したクロックを使って、データｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）、ｆ（４）、ｆ（５）、ｆ（６）、ｆ（７）が順に出力されるように、セレクタ３２及び３３からのデータを切り換える。これにより、データｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）、ｆ（４）、ｆ（５）、ｆ（６）、ｆ（７）が順に出力端子３９から出力される。
【００５３】
バタフライ演算モードでは、セレクタ３７は端子３７Ｂ側に設定される。バタフライ演算モードは、フィールドフォワードＤＣＴで２フィールドのＤＣＴ演算結果のバタフライ演算して出力する場合、又はインバースフレームＤＣＴの場合に用いられる。バタフライ演算モードでは、セレクタ３２及び３３は、端子３２Ａ−３２Ｃ−３２Ｅ−３２Ｇ及び３３Ｂ−３３Ｄ−３３Ｆ−３３Ｈの順に、１クロック周期ずつ切り換えられる。セレクタ３２及び３３の出力は、加算器３４に供給される。これにより、ｆ（０）±ｆ（１）、ｆ（２）±ｆ（３）、ｆ（４）±ｆ（５）、ｆ（６）±ｆ（７）が順に求められる。これがセレクタ３７、フリップフロップ３８を介して、出力端子３９から出力される。これにより、セカンドステージのポストバタフライ演算（（１４Ａ）、（１４Ｂ）式参照）及び２フィールドのＤＣＴ演算結果のバタフライ演算（（１８Ａ）、（１８Ｂ）式参照）が行われる。
【００５４】
図４は、ファーストステージ回路１のプリバタフライ演算回路１２の一例を示すものである。図４において、５１Ａ及び５１Ｂは入力端子である。入力端子５１Ａ及び５１Ｂには、図２Ｂ及び図２Ｃに示したように、２系列に分けられた１６ビットのシリアルデータで、データが供給される。ロワデータ（図２Ｂ）は、入力端子５１Ａに供給され、アッパーデータ（図２Ｃ）は、入力端子５１Ｂに供給される。
【００５５】
入力端子５１Ａからのデータは、セレクタ５２に供給され、入力端子５１Ｂからのデータは、セレクタ５３に供給される。セレクタ５２及び５３は、バタフライ演算モードで、（５Ａ）式〜（５Ｈ）式で示したような通常のプリバタフライ演算を行う場合と、（１９Ａ）式〜（１９Ｈ）式に示したバタフライ演算された２フィールドのＤＣＴ演算結果を１フィールド毎のＤＣＴ演算結果に戻すためのバタフライ演算をする場合とで、切り換えられる。
【００５６】
加算器５４には、入力端子５１Ａからのｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のロワデータが供給されると共に、セレクタ５２からのｆ（７）、ｆ（６）、ｆ（５）、ｆ（４）のロワデータ又はｆ（４）、ｆ（５）、ｆ（６）、ｆ（７）のロワデータが供給される。
【００５７】
加算器５５には、ＡＮＤゲート５８の出力が供給されると共に、ＡＮＤゲート５９の出力が供給される。ＡＮＤゲート５８の一方の入力端子には、入力端子５１Ｂからｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のアッパデータが供給される。ＡＮＤゲート５９の一方の入力端子には、セレクタ５３からのｆ（７）、ｆ（６）、ｆ（５）、ｆ（４）のアッパデータ又はｆ（４）、ｆ（５）、ｆ（６）、ｆ（７）のアッパデータが供給される。ＡＮＤゲート５８及び５９の他方の入力端子には、入力端子９１からインバータ６０を介してキャリーリセット信号ＣｒｙＲｓｔが供給される。加算器５４のキャリーが加算器５５に供給される。加算器５５のキャリーがフリップフロップ６５を介して加算器５４に供給される。
【００５８】
ＡＮＤゲート５８及び５９が開くと、加算器５５には、入力端子５１Ｂからのｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のアッパデータが供給されると共に、セレクタ５３からのｆ（７）、ｆ（６）、ｆ（５）、ｆ（４）アッパデータ又はｆ（４）、ｆ（５）、ｆ（６）、ｆ（７）のアッパデータが供給される。
【００５９】
加算器５６には、入力端子５１Ａからのｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のロワデータが供給されると共に、セレクタ５２からのｆ（７）、ｆ（６）、ｆ（５）、ｆ（４）のロワデータ又はｆ（４）、ｆ（５）、ｆ（６）、ｆ（７）のロワデータがインバータ６１を介して供給される。
【００６０】
加算器５７には、ＯＲゲート６３の出力が供給されると共に、ＯＲゲート６４の出力が供給される。ＯＲゲート６３の一方の入力端子には、入力端子５１Ｂからｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のアッパデータが供給される。ＯＲゲート６４の一方の入力端子には、セレクタ５３からのｆ（７）、ｆ（６）、ｆ（５）、ｆ（４）のアッパデータ又はｆ（４）、ｆ（５）、ｆ（６）、ｆ（７）のアッパデータがインバータ６２を介して供給される。ＯＲゲート６３及び６４の他方の入力端子には、入力端子９１からキャリーリセット信号ＣｒｙＲｓｔが供給される。加算器５６のキャリーが加算器５７に供給される。加算器５７のキャリーがフリップフロップ６６を介して加算器５６に供給される。
【００６１】
ＯＲゲート６３及び６４が開くと、加算器５７には、入力端子５１Ｂからのｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のアッパデータが供給されると共に、セレクタ５５からのｆ（７）、ｆ（６）、ｆ（５）、ｆ（４）アッパデータ又はｆ（４）、ｆ（５）、ｆ（６）、ｆ（７）のアッパデータがインバータ６２で反転されて供給される。
【００６２】
セレクタ７３には、加算器５４の出力が供給されると共に、フリップフロップ６９の出力が供給される。フリップフロップ６９には、ＡＮＤゲート６７の出力が供給される。ＡＮＤゲート６７には、加算器５５の出力が供給されると共に、インバータ６０の出力が供給される。
【００６３】
セレクタ７４には、加算器５５の出力が供給されると共に、セレクタ７０の出力が供給される。セレクタ７０には、加算器５５の出力が供給されると共に、加算器５４の出力が供給される。
【００６４】
セレクタ７５には、加算器５６の出力が供給されると共に、フリップフロップ７１の出力が供給される。フリップフロップ７１には、ＡＮＤゲート６８の出力が供給される。ＡＮＤゲート６８には、加算器５７の出力が供給されると共に、インバータ６０の出力が供給される。
【００６５】
セレクタ７６には、加算器５６の出力が供給されると共に、セレクタ７２の出力が供給される。セレクタ７２には、加算器５７の出力が供給されると共に、加算器５６の出力が供給される。
【００６６】
ＡＮＤゲート６７、６８、セレクタ７０、７２、セレクタ７３〜７６、フリップフロップ６９、７１により、クリッパ回路が構成される。
【００６７】
セレクタ８１には、入力端子５１Ａからのデータが供給されると共に、セレクタ７３の出力が供給される。セレクタ８２には、入力端子５１Ｂからのデータが供給されると共に、セレクタ７４の出力が供給される。セレクタ８３には、入力端子５１Ａからのデータが供給されると共に、セレクタ７５の出力が供給される。セレクタ８４には、入力端子５１Ｂからのデータが供給されると共に、セレクタ７６の出力が供給される。
【００６８】
セレクタ８１〜８４は、ＮＡＮＤゲート７７の出力により切り換えられる。ＮＡＮＤゲート７７には、入力端子９２及び９３からセレクト信号ＭＦＩ及びＭＥＦが供給される。セレクタ８１及び８３、８２及び８４は、スルーモードとバタフライ演算モードとを切り換えるものである。セレクタ８１〜８４の出力が出力端子８５〜８８から出力される。
【００６９】
通常のプリバタフライ演算モードでは、セレクタ５２及び５３が端子５２Ａ及び５３Ａ側に設定される。このため、加算器５４には、ｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のロワデータと、ｆ（７）、ｆ（６）、ｆ（５）、ｆ（４）のロワデータとが供給される。加算器５５には、ｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のアッパデータと、ｆ（７）、ｆ（６）、ｆ（５）、ｆ（４）のアッパデータとが供給される。
【００７０】
また、加算器５６には、ｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のロワデータと、インバータ６１で反転されたｆ（７）、ｆ（６）、ｆ（５）、ｆ（４）のロワデータとが供給される。加算器５７には、ｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のアッパデータと、インバータ６２で反転されたｆ（７）、ｆ（６）、ｆ（５）、ｆ（４）のアッパデータとが供給される。
【００７１】
加算器５４及び５５と、フリップフロップ６５と、ＡＮＤゲート５８及び５９とから加算回路が構成される。この加算回路は、シリアルデータを直接加算できる。例えば、データｆ（０）とｆ（７）とを加算する場合、データｆ（０）の各ビットを、ＬＳＢから順に、
ａ0 ，ａ1 ，ａ2 ，ａ3 ，ａ4 ，ａ5 ，ａ6 ，ａ7 ，ａ8 ，ａ9 ，ａ10，ａ11，ａ12，ａ13，ａ14，ａ15
とし、データｆ（７）の各ビットを、ＬＳＢから順に、
ｂ0 ，ｂ1 ，ｂ2 ，ｂ3 ，ｂ4 ，ｂ5 ，ｂ6 ，ｂ7 ，ｂ8 ，ｂ9 ，ｂ10，ｂ11，ｂ12，ｂ13，ｂ14，ｂ15
とすると、データｆ（０）のロワデータは、
ａ0 ，ａ2 ，ａ4 ，ａ6 ，ａ8 ，ａ10，ａ12，ａ14
となり、データｆ（０）のアッパデータは、
ａ1 ，ａ3 ，ａ5 ，ａ7 ，ａ9 ，ａ11，ａ13，ａ15
となる。データｆ（７）のロワデータは、
ｂ0 ，ｂ2 ，ｂ4 ，ｂ6 ，ｂ8 ，ｂ10，ｂ12，ｂ14
となり、データｆ（７）のアッパデータは、
ｂ1 ，ｂ3 ，ｂ5 ，ｂ7 ，ｂ9 ，ｂ11，ｂ13，ｂ15
となる。
【００７２】
加算回路５４には、ａ0 ，ａ2 ，ａ4 ，ａ6 ，ａ8 ，ａ10，ａ12，ａ14と、ｂ0 ，ｂ2 ，ｂ4 ，ｂ6 ，ｂ8 ，ｂ10，ｂ12，ｂ14とが１クロック毎に順に与えられる。加算器５２には、ａ1 ，ａ3 ，ａ5 ，ａ7 ，ａ9 ，ａ11，ａ13，ａ15と、ｂ1 ，ｂ3 ，ｂ5 ，ｂ7 ，ｂ9 ，ｂ11，ｂ13，ｂ15とが１クロック毎に順に与えられる。
【００７３】
先ず、加算器５４で、データｆ（０）及びｆ（７）のＬＳＢのａ0 とｂ0 とが加算され（ａ0 ＋ｂ0 ）、そのキャリーが加算器５５に供給される。加算器５５で、データｆ（０）及びｆ（７）の次のビットのａ1 とｂ1 とが加算され（ａ1 ＋ｂ1 ）、更に加算器５４からのキャリーが加算される。この加算器５５のキャリーは、フリップフロップ６５に供給される。
【００７４】
次に、加算器５４で、データｆ（０）及びｆ（７）の次のビットａ2 とｂ2 とが加算され（ａ2 ＋ｂ2 ）、更にフリップフロップ６５からのキャリーが加算される。加算器５４からのキャリーが加算器５５に供給される。加算器５５で、データｆ（０）及びｆ（７）の次のビットのａ3 とｂ3 とが加算され（ａ3 ＋ｂ3 ）、更に加算器５４からのキャリーが加算される。この加算器５４のキャリーは、フリップフロップ６５に供給される。
【００７５】
以下、同様の動作が繰り返される。これにより、１６ビットのシリアルデータｆ（０）とｆ（７）とが加算されたことになる。
【００７６】
同様に、加算器５６及び５７と、フリップフロップ６６と、ＯＲゲート６３及び６４、インバータ６１、６２とから減算回路が構成される。この減算回路は、シリアルデータを直接加算できる。この減算回路の動作については、上述の加算回路の場合と同様である。
【００７７】
前述したように、通常のプリバタフライ演算のモードでは、セレクタ５２及び５３が端子５２Ａ側及び５３Ａ側に設定される。このため、加算器６１及び６２と、フリップフロップ６３と、ＡＮＤゲート６４及び６５とから加算回路からは、ｆ（０）＋ｆ（７）、ｆ（１）＋ｆ（６）、ｆ（２）＋ｆ（５）、ｆ（３）＋ｆ（４）が順に求められ、加算器５６及び５７と、フリップフロップ６６と、ＯＲゲート６３及び６４、インバータ６１、６２とから減算回路からは、ｆ（０）−ｆ（７）、ｆ（１）−ｆ（６）、ｆ（２）−ｆ（５）、ｆ（３）−ｆ（４）が順に求められる。
【００７８】
フィールドインバースＤＣＴで、バタフライ演算された２フィールドのＤＣＴ演算結果を１フィールド毎のＤＣＴ演算結果に戻すためのバタフライ演算をするモードでは、セレクタ５２及び５３が端子５２Ｂ及び５３Ｂ側に設定される。このため、加算器５４には、ｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のロワデータと、ｆ（４）、ｆ（５）、ｆ（６）、ｆ（７）のロワデータとが供給される。加算器５５には、ｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のアッパデータと、ｆ（４）、ｆ（５）、ｆ（６）、ｆ（７）のアッパデータとが供給される。
【００７９】
また、加算器５６には、ｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のロワデータと、インバータ６１で反転されたｆ（４）、ｆ（５）、ｆ（６）、ｆ（７）のロワデータとが供給される。加算器５７には、ｆ（０）、ｆ（１）、ｆ（２）、ｆ（３）のアッパデータと、インバータ６２で反転されたｆ（４）、ｆ（５）、ｆ（６）、ｆ（７）のアッパデータとが供給される。
【００８０】
これにより、加算器５４、５５と、フリップフロップ６５と、ＡＮＤゲート５８、５９とからなる加算回路からは、ｆ（０）＋ｆ（４）、ｆ（１）＋ｆ（５）、ｆ（２）＋ｆ（６）、ｆ（３）＋ｆ（７）が順に求められ、加算器５６、５７、フリップフロップ６６、ＯＲゲート６３、６４、インバータ６１、６２とからなる減算回路からは、ｆ（０）−ｆ（４）、ｆ（１）−ｆ（５）、ｆ（２）−ｆ（６）、ｆ（３）−ｆ（７）が順に求められる。
【００８１】
ＡＮＤゲート６７、６８、セレクタ７０、７２、セレクタ７３〜７６、フリップフロップ６９、７１により、クリッパ回路が構成される。バタフライ演算された２フィールドのＤＣＴ演算結果を１フィールド毎のＤＣＴ演算結果に戻すためのバタフライ演算をする場合には、フィールド間バタフライ演算した結果が、セカンドステージ回路２のポストプロセス回路２５の前に残るので、１ビットデータをクリップしなければならない。このクリッパ回路は、そのために設けられている。
【００８２】
このようにバタフライ演算されたデータは、セレクタ８１〜８４を介して、出力端子８５〜８８から出力される。
【００８３】
スルーモードでは、セレクタ８１が端子８１Ａ側に設定され、セレクタ８２が端子８２Ａ側に設定され、セレクタ８３が端子８３Ａ側に設定され、セレクタ８４が端子８４Ａ側に設定される。このため、入力データがそのまま出力される。
【００８４】
このように、この発明の一実施例では、２フィールド分のＤＣＴ演算結果をバタフライ演算し、また、２フィールド分がバタフライ演算されたＤＣＴ演算結果を、各フィールド毎のデータに戻すバタフライ演算をする機能を有している。このため、回路の小型化が図れる。
【００８５】
なお、図５に示すように、バタフラ演算回路８を設け、このバタフライ演算回路８をスイッチ回路９及び１０で切り換え、２フィールド分のＤＣＴ演算結果をバタフライ演算する場合と、２フィールド分がバタフライ演算されたＤＣＴ演算結果を各フィールド毎のデータに戻すバタフライ演算をする場合とで、バタフライ演算回路８を共通に使用するようにしても良い。
【００８６】
【発明の効果】
この発明によれば、  セカンドステージ回路のポストバタフライ回路には、２フィールド分のＤＣＴ演算結果をバタフライ演算する機能が付加されている。また、ファーストステージのプリバタフライ回路には、２フィールド分がバタフライ演算されたＤＣＴ演算結果を、各フィールド毎のデータに戻すバタフライ演算をする機能を有している。このため、ＤＣＴ演算結果をフィールド間でバタフライ演算する際にも、バタフライ回路を付加する必要がなく、回路の小型化が図れる。
【図面の簡単な説明】
【図１】この発明の一実施例のブロック図である。
【図２】この発明の一実施例におけるプリプロセス回路の説明に用いる略線図である。
【図３】この発明の一実施例におけるセカンドステージポストバタフライ演算回路の一例のブロック図である。
【図４】この発明の一実施例におけるファーストステージプリバタフライ演算回路の一例のブロック図である。
【図５】直交変換回路の他の例のブロック図である。
【図６】従来の直交変換回路の説明に用いるブロック図である。
【図７】従来の直交変換回路の説明に用いるブロック図である。
【図８】従来の直交変換回路の説明に用いるブロック図である。
【図９】従来の直交変換回路の説明に用いるブロック図である。
【図１０】従来の直交変換回路の説明に用いるブロック図である。
【図１１】ＤＣＴ演算結果をバタフライ演算する場合の説明に用いるブロック図である。
【図１２】従来の直交変換回路の説明に用いるブロック図である。
【図１３】従来の直交変換回路の説明に用いるブロック図である。
【符号の説明】
１  ファーストステージ回路
２  セカンドステージ回路
３  転置ＲＡＭ
【図１】
0003697733.tif 000021
【図２】
0003697733.tif 000022
【図３】
0003697733.tif 000023
【図４】
0003697733.tif 000024
【図５】
0003697733.tif 000025
【図６】
0003697733.tif 000026
【図１２】
0003697733.tif 000027
【図１３】
0003697733.tif 000028
【図７】
0003697733.tif 000029
【図８】
0003697733.tif 000030
【図９】
0003697733.tif 000031
【図１０】
0003697733.tif 000032
【図１１】
0003697733.tif 000033