(57)【特許請求の範囲】
【請求項１】
入力されるＮ個の要素データに対する直交変換処理をバタフライ演算部と積和演算部を備えるプロセッサにより行う直交変換回路において、前記バタフライ演算部は、入力されるＮ個の要素データを要素データ毎に用意したレジスタに格納するパラレルレジスタ群と該パラレルレジスタ群の各レジスタに接続し該レジスタからのＮ個の要素データを要素データ毎に用意したレジスタに格納するシリアルレジスタ群と該シリアルレジスタ群の各レジスタに接続し該レジスタからのデータを加算するＮ個のＫビット加算器で構成され、前記パラレルレジスタ群は、入力されるＮ個の要素データの順序を変換し、前記シリアルレジスタ群は、前記パラレルレジスタ群によって順序が変換された要素データについて下位ビットから順にＫビットずつシリアルにＮ個の要素データ各々を同時に出力し、前記Ｋビット加算器は、前記シリアルレジスタ群から出力されるＫビット毎の前記Ｎ／２組の要素データの加算及び減算を行い、この結果得られるキャリーを保存しこの保存したキャリーを用いて、下位から上位へ順次該加算及び減算を行うものとし、前記積和演算部は、前記バタフライ演算部で求められた加算及び減算結果として下位ビットから順に同時に出力されるＮ／２組の要素データの各組における同一桁のビットスライスを入力とし、該入力ビットスライスの各桁毎の部分和を加算するものとしたことを特徴とする直交変換回路。
【請求項２】
請求項１に記載のプロセッサをＤＣＴプロセッサとしたことを特徴とする直交変換回路。
【請求項３】
請求項１または２に記載のプロセッサを各次元に対応させることにより多次元の直交変換処理を行うことを特徴とする直交変換回路。
【請求項４】
入力されるＮ個の要素データに対する直交変換処理及び／又は逆直交変換処理を、第１のバタフライ演算部と積和演算部と第２のバタフライ演算部を備えるプロセッサにより行う直交変換回路において、前記第１のバタフライ演算部は、入力されるＮ個の要素データを要素データ毎に用意したレジスタに格納するパラレルレジスタ群と該パラレルレジスタ群の各レジスタに接続し該レジスタからのＮ個の要素データを要素データ毎に用意したレジスタに格納するシリアルレジスタ群と該シリアルレジスタ群の各レジスタに接続し該レジスタからのデータを加算するＮ個のＫビット加算器で構成するものであって、前記パラレルレジスタ群は、入力されるＮ個の要素データの順序を変換し、前記シリアルレジスタ群は、前記パラレルレジスタ群によって順序が変換された要素データについて下位ビットから順にＫビットずつシリアルにＮ個の要素データ各々を同時に出力し、前記Ｋビット加算器は、直交変換処理を行う場合には前記シリアルレジスタ群から出力されるＫビット毎の前記Ｎ／２組の要素データの加算及び減算を行い、この結果得られるキャリーを保存しこの保存したキャリーを用いて、下位から上位へ順次該加算及び減算を行い、逆直交変換処理を行う場合には該Ｋビット加算器を機能させずに前記シリアルレジスタ群の出力を直接出力するものとし、前記積和演算部は、直交変換処理を行う場合には前記第１のバタフライ演算部で求められた加算及び減算結果として下位ビットから順に同時に出力されるＮ／２組の要素データの各組における同一桁のビットスライスの下位ビットから順に同時に出力されるＮ／２組の要素データの各組における同一桁のビットスライスを入力とし、逆直交変換処理を行う場合にはＮ個の要素データを２組に分け得た各組に含まれるＮ／２個の要素データ各々の下位ビットから順に同時に出力される同一桁のビットスライスを入力とし、該入力ビットスライスの各桁毎の部分和を加算するものとし、前記第２のバタフライ演算部は、加算器を備え、該加算器は逆直交変換処理を行う場合には前記積和演算部における加算結果である前記入力ビットスライスの各桁毎の部分和を入力としてその加算及び減算を時分割で行うことを特徴とする直交変換回路。
【請求項５】
請求項４に記載のプロセッサをＤＣＴ／ＩＤＣＴプロセッサとしたことを特徴とする直交変換回路。
【請求項６】
請求項４または５に記載のプロセッサを各次元に対応させることにより多次元の直交変換処理を行うことを特徴とする直交変換回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像情報，音声情報の高能率符号化技術の１つである直交変換に関し、より詳細には、直交変換を用いて時間領域の信号を周波数領域の信号に変換するための直交変換回路、及び時間領域の信号と周波数領域の信号との間の相互変換を行う直交変換回路に関するものである。
【０００２】
【従来の技術】
近年になり、画像情報，音声情報の高能率符号化技術が注目を集めている、中でも直交変換を実現する回路は高能率符号化方式実現のための重要な要素であり、その小規模化，高速化を目指して多くの研究，開発が行われている。
直交変換装置の１つである１次元ＤＣＴプロセッサ回路は、バタフライ演算回路と、乗算器を用いずにベクトル内積の積和を求める分布演算技術（ＤＡ法）を用いる演算回路とで実現できる。
かかる１次元ＤＣＴの演算例として、８点１次元ＤＣＴの演算式を式（１）及び式（２）に示す。
【０００３】
【数１】
0003575991.tif 000002
【０００４】
ＤＣＴプロセッサにおけるバタフライ演算では、８個のデータｘ０，ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６，ｘ７に対して（ｘ０，ｘ７），（ｘ１，ｘ６），（ｘ２，ｘ５），（ｘ３，ｘ４）の４組をつくり、各組においてｘ０＋ｘ７，ｘ０−ｘ７，ｘ１＋ｘ６，ｘ１−ｘ６，ｘ２＋ｘ５，ｘ２−ｘ５，ｘ３＋ｘ４，ｘ３−ｘ４の加減算を行う。
【０００５】
次に、このバタフライ演算の出力を用いて、式（１），式（２）にもとづき１次元ＤＣＴ係数を算出する。
一例を示すと、式（１）のＤＣＴ係数Ｘ２は、積和演算により、
Ｘ２＝（１／２）×｛Ｂ×（ｘ０＋ｘ７）＋Ｃ×（ｘ１＋ｘ６）＋（−Ｃ）×（ｘ２＋ｘ５）＋（−Ｂ）×（ｘ３＋ｘ４）｝
と求めることができる。
ＤＡ法とは、式（１），式（２）における行列の積和演算を、図３（Ｄ）に示すような同じ桁のビットデータを集めたビットスライスという単位で行う手法である。ＤＡ法の一例を下記の式（５），式（６），式（７）及び表１に示し、これに従い説明を行う。
【０００６】
【数２】
0003575991.tif 000003
【０００７】
【数３】
0003575991.tif 000004
【０００８】
【表１】
0003575991.tif 000005
【０００９】
上記式（５）に示すように、式（２）におけるバタフライ演算結果（ｘ０＋ｘ７，ｘ１＋ｘ６，ｘ２＋ｘ５，ｘ３＋ｘ４）をビット単位（［ｂ０ｎ，…，ｂ０１，ｂ００，］、［ｂ１ｎ，…，ｂ１１，ｂ１０，］、［ｂ２ｎ，…，ｂ２１，ｂ２０，］、［ｂ３ｎ，…，ｂ３１，ｂ３０，］：ｂ３ｎ，…，ｂ００はビットを表す）に分解する。これらの同一桁に注目すると式（５）の第２行のＤＣＴ係数Ｘ２を求める積和演算は、式（６）のように分解することができる。
ここで、式（６）におけるｂ０ｎ，ｂ１ｎ，ｂ２ｎ，ｂ３ｎの組をビットスライスと呼んでいる。
（ｎ＋１）桁目のビットスライスの積和演算は、上記式（７）で表わされ、ｂ００〜ｂ３ｎの取り得る値は０又は１なので、その結果は、（１／２）×（２のｎ乗）を掛け算すると、
（１／２）×（２のｎ乗）×（（Ｂ×ｂ０ｎ）＋（Ｃ×ｂ１ｎ）＋（−Ｃ×ｂ２ｎ）＋（−Ｂ×ｂ３ｎ））
となる。
従って、その結果は、表１に示すような、ビットスライスの組合せに対応する１６種類の部分和のテーブルを持てば積和演算値を求めることができる。
即ち、上式の中の（２のｎ乗）はシフト演算なので、式（６）の演算は、各ビットスライスの値をもとにテーブルを参照し得られた１６種類の値のいずれかをビットシフトした後、順次、加算することによって実現される。同様の処理を式（５）の各行で行うことで、ＤＡ法による行列の積和演算が実現され、１次元ＤＣＴ係数（Ｘ０，Ｘ２，Ｘ４，Ｘ６）を求めることができる。
【００１０】
一方、８点１次元ＩＤＣＴの演算式は、式（３）及び式（４）に示す式であり、入力としては、８個のデータ（Ｘ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５，Ｘ６，Ｘ７）が順次入力される。
まず入力データを式（３），式（４）に示すような（｛Ｘ０，Ｘ２，Ｘ４，Ｘ６｝と｛Ｘ１，Ｘ３，Ｘ５，Ｘ７｝）の二組にわけ、各組において入力データをビット単位に分解し、ビットスライスを構成する。
これらのビットスライスと、各ビットスライスの値の組合わせに対応したテーブルを用いてＤＡ法による行列の積和演算を行い、式（３），式（４）それぞれの右辺第１項及び第２項を求める。
次にこの２項の加減算を行うことでｘ０〜ｘ７が算出される。ＩＤＣＴにおけるバタフライ演算とはこの加減算を意味する。
【００１１】
特開平７−２３４８６４号公報には、バタフライ演算とＤＡ法を用いた小規模の１次元ＤＣＴ／ＩＤＣＴプロセッサの回路構成が記載されている。特開平７−２３４８６４号公報記載の回路は８×８画素に対して１次元ＤＣＴ／ＩＤＣＴを行う回路であり、入力要素をメモリに記載しておき、必要な順にデータを並び替えてバタフライ演算器に渡すことで、レジスタ数を減少させ回路の小規模化を実現するものである。
【００１２】
図２１に示す特開平７−２３４８６４号公報記載のＤＣＴ／ＩＤＣＴプロセッサにおいて、１８００はアドレス発生器であり、１８０１は８×８ワードの１６ビット幅のメモリであり、１８０２は１６ビット幅のパイプラインレジスタであり、１８０３は１６ビット幅の入力と３４ビット幅の出力を持つ積和演算器であり、１８０４は３４ビット幅のパイプラインレジスタであり、１８０５は１６ビット幅のパイプラインレジスタであり、１８０６は８×８ワードの１６ビット幅のメモリであり、１８０７は３４ビット幅の入力と１６ビット幅の出力を持つバタフライ演算器であり、１８０８は１６ビット幅のパイプラインレジスタであり、１８０９はアドレス発生器である。
【００１３】
ＤＣＴ変換の場合このプロセッサには、図１８に示すような８×８（Ｍビット／個）個の要素データの１行または１列からなる８個のデータｘ０，ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６，ｘ７がこの順序で入力され、そのデータをメモリ１８０１に一時記憶しておく。このメモリ１８０１から、アドレス発生器１８００によってバタフライ演算を行うときに必要になる順序、即ちｘ７，ｘ０，ｘ６，ｘ１，ｘ５，ｘ２，ｘ４，ｘ３の順にデータを読み出し、パイプラインレジスタ１８０２を介してバタフライ演算器１８０７に供給する。
バタフライ演算器１８０７は、供給されたデータを加減算するための３４ビット幅の第１と第２入力と、１６ビット幅の出力を持つ並列加算器を備えている。バタフライ演算器１８０７にはｘ７，ｘ０，ｘ６，ｘ１，ｘ５，ｘ２，ｘ４，ｘ３の順にデータが入力され、（ｘ０＋ｘ７），（ｘ０−ｘ７），（ｘ１＋ｘ６），（ｘ１−ｘ６），（ｘ２＋ｘ５），（ｘ２−ｘ５），（ｘ３＋ｘ４），（ｘ３−ｘ４）の順で演算が行われ、パイプラインレジスタ１８０８を介して積和演算器１８０３に出力される。
【００１４】
積和演算器１８０３は、シフトレジスタとビットスライスに対応する部分和のＲＯＭと、ＲＯＭから出力される値をシフトしながら加算する累算回路と３４ビット幅の第１入力と１６ビットの第２，第３入力と３４ビット幅の出力を持つ並列加算器を備えている。
積和演算器１８０３の動作を説明すると、入力されたバタフライ演算結果は、シフトレジスタによってビットスライスに分解される。そのビットスライスを入力アドレスとしたＲＯＭの出力値を求め、その値を累算回路に入力しビットスライス単位での累和演算を行うことで、ＤＡ法による積和演算を実現し、１次元ＤＣＴ係数Ｘ０，Ｘ２，Ｘ４，Ｘ６，Ｘ１，Ｘ３，Ｘ５，Ｘ７が求まる。
演算結果はパイプラインレジスタ１８０４，１８０５を介してメモリ１８０６に渡される。このメモリ１８０６から、アドレス発生器１８０９によって適切な順序，即ちＸ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５，Ｘ６，Ｘ７に並び替えられ外部に出力される。
【００１５】
【発明が解決しようとする課題】
上記のとおり、特開平７−２３４８６４号公報のＤＣＴ／ＩＤＣＴプロセッサは、入出力データの並びかえを行うたのメモリやアドレス発生器が必要であり、回路規模が大きくなる。例えば入力データが１６ビットの場合、８×８ワードで各ワードが１６ビット幅であれば、１Ｋビットの容量が必要になる。
また、バタフライ演算器１８０７において、入力データの加減算をデータ単位で行うため、並列加算器が大規模になるという問題がある。従来例ではＤＣＴ演算とＩＤＣＴ演算で用いる並列加算器を共有しており、ＩＤＣＴ演算のうちの積和演算結果が３４ビットの場合、並列加算器では３４ビットの加算を行う必要があるということになる。
本発明は、このような従来技術の問題点に鑑みてなされたものであり、バタフライ演算及び積和演算を行う手段を従来よりも小規模とする直交変換回路及び双方向の動作を行うことを可能とする当該直交変換回路を提供することをその目的とする。
【００１６】
【課題を解決するための手段】
上記目的を達成するために、本発明の直交変換回路では、バタフライ演算部においては、Ｎ個の要素を格納するためのＮ個のパラレルレジスタとＮ個のシフトレジスタとＮ個のＫビット並列加算器を備える。パラレルレジスタは、入力要素データの並び替えを行いシフトレジスタに渡す、シフトレジスタは渡された要素データを２個１組にしてＫビットずつ並列加算器に出力する並列加算器は、Ｋビットに分解されて渡された要素データの加算または減算を行う。これにより一時記憶用のメモリやそのメモリからの読み出し順序を制御するアドレス発生器の必要がなくなり、バタフライ演算部で、要素データの並び替え及び加減算をビット単位で行う（入出力がビット幅）ことにより小規模な回路でバタフライ演算を可能にし、直交変換装置回路の小規模化が可能になる。
そして、各請求項記載の発明は次の技術手段により構成される。
【００１７】
請求項１記載の発明は、入力されるＮ個の要素データに対する直交変換処理をバタフライ演算部と積和演算部を備えるプロセッサにより行う直交変換回路において、前記バタフライ演算部は、入力されるＮ個の要素データを要素データ毎に用意したレジスタに格納するパラレルレジスタ群と該パラレルレジスタ群の各レジスタに接続し該レジスタからのＮ個の要素データを要素データ毎に用意したレジスタに格納するシリアルレジスタ群と該シリアルレジスタ群の各レジスタに接続し該レジスタからのデータを加算するＮ個のＫビット加算器で構成され、前記パラレルレジスタ群は、入力されるＮ個の要素データの順序を変換し、前記シリアルレジスタ群は、前記パラレルレジスタ群によって順序が変換された要素データについて下位ビットから順にＫビットずつシリアルにＮ個の要素データ各々を同時に出力し、前記Ｋビット加算器は、前記シリアルレジスタ群から出力されるＫビット毎の前記Ｎ／２組の要素データの加算及び減算を行い、この結果得られるキャリーを保存しこの保存したキャリーを用いて、下位から上位へ順次該加算及び減算を行うものとし、前記積和演算部は、前記バタフライ演算部で求められた加算及び減算結果として下位ビットから順に同時に出力されるＮ／２組の要素データの各組における同一桁のビットスライスを入力とし、該入力ビットスライスの各桁毎の部分和を加算するものとしたことを特徴とする。
【００１９】
請求項２記載の発明は、請求項１に記載のプロセッサをＤＣＴプロセッサとしたことを特徴とする。
【００２０】
請求項３記載の発明は、請求項１または２に記載のプロセッサを各次元に対応させることにより多次元の直交変換処理を行うことを特徴とする。
【００２１】
請求項４記載の発明は、入力されるＮ個の要素データに対する直交変換処理及び／又は逆直交変換処理を、第１のバタフライ演算部と積和演算部と第２のバタフライ演算部を備えるプロセッサにより行う直交変換回路において、前記第１のバタフライ演算部は、入力されるＮ個の要素データを要素データ毎に用意したレジスタに格納するパラレルレジスタ群と該パラレルレジスタ群の各レジスタに接続し該レジスタからのＮ個の要素データを要素データ毎に用意したレジスタに格納するシリアルレジスタ群と該シリアルレジスタ群の各レジスタに接続し該レジスタからのデータを加算するＮ個のＫビット加算器で構成するものであって、前記パラレルレジスタ群は、入力されるＮ個の要素データの順序を変換し、前記シリアルレジスタ群は、前記パラレルレジスタ群によって順序が変換された要素データについて下位ビットから順にＫビットずつシリアルにＮ個の要素データ各々を同時に出力し、前記Ｋビット加算器は、直交変換処理を行う場合には前記シリアルレジスタ群から出力されるＫビット毎の前記Ｎ／２組の要素データの加算及び減算を行い、この結果得られるキャリーを保存しこの保存したキャリーを用いて、下位から上位へ順次該加算及び減算を行い、逆直交変換処理を行う場合には該Ｋビット加算器を機能させずに前記シリアルレジスタ群の出力を直接出力するものとし、前記積和演算部は、直交変換処理を行う場合には前記第１のバタフライ演算部で求められた加算及び減算結果として下位ビットから順に同時に出力されるＮ／２組の要素データの各組における同一桁のビットスライスの下位ビットから順に同時に出力されるＮ／２組の要素データの各組における同一桁のビットスライスを入力とし、逆直交変換処理を行う場合にはＮ個の要素データを２組に分け得た各組に含まれるＮ／２個の要素データ各々の下位ビットから順に同時に出力される同一桁のビットスライスを入力とし、該入力ビットスライスの各桁毎の部分和を加算するものとし、前記第２のバタフライ演算部は、加算器を備え、該加算器は逆直交変換処理を行う場合には前記積和演算部における加算結果である前記入力ビットスライスの各桁毎の部分和を入力としてその加算及び減算を時分割で行うことを特徴とする。
【００２３】
請求項５記載の発明は、請求項４に記載のプロセッサをＤＣＴ／ＩＤＣＴプロセッサとしたことを特徴とする。
【００２４】
請求項６記載の発明は、請求項４または５に記載のプロセッサを各次元に対応させることにより多次元の直交変換処理を行うことを特徴とする。
【００２５】
【発明の実施の形態】
本発明の実施の形態について添付図を参照し、以下に説明する。
図１に、本発明による直交変換回路の一実施形態である２次元ＤＣＴプロセッサの概要をブロック図にて示し、そのプロセッサの具体的な動作を図２乃至図７及び図１８に基づき以下に説明する。
図１において、直列に接続されるバタフライ演算部１２，１６と積和演算部１３，１７、四捨五入部１４，１８それぞれで１次元ＤＣＴを行い、二つの１次元ＤＣＴ回路で２次元のＤＣＴを実現する。
図１に示す２次元ＤＣＴプロセッサの特徴は、バタフライ演算部１２，１６における入力画素データをバタフライ演算部１２，１６の内部に設けたレジスタに格納し、順序変換を行い、変換後そこからデータを２ビットずつ出力することで、加減算を２ビット単位で行うことである。この処理により、データ入力時にメモリやアドレス発生器を必要とせず、また、従来例ではデータビット幅分の入力が必要であった並列加減算の規模も入出力が２ビット幅と小さくおさえることが可能になる。
【００２６】
以下、実施形態の動作を説明する。図１の２次元ＤＣＴプロセッサのバタフライ演算部１２は、並び替え部１００と加減算部１０１で構成される。並び替え部１００では、入力された画素データの順序を入れ換え、各画素データの下位から２ビットずつを加減算部１０１に渡す。
加減算部１０１では、渡された２ビット単位の画素データについて加算及び減算を行うことで、バタフライ演算を実現する。その演算結果をビットスライス単位で積和演算部１３に渡す。積和演算部１３では水平方向の１次元ＤＣＴを行い、求まったＤＣＴ係数の中間結果が、四捨五入部１４に渡される。
四捨五入部１４では、式（１），式（２）中の右辺の（１／２）の乗算を四捨五入を用いて行い、演算結果をＲＡＭ１５に渡す。ＲＡＭ１５は１５ビット幅の入出力を持つデータ転置用のＲＡＭであり、入力されたデータの転置を行いバタフライ演算部１６にデータを渡す。
バタフライ演算部１６はバタフライ演算部１２と同様にデータの並べ替え及び２ビット毎の加減算を行い、ビットスライスを積和演算部１７に出力する。
以降、積和演算部１７，四捨五入部１８は各々積和演算部１３，四捨五入部１４と同じ処理を行う。ＲＡＭ１５をはさんで、まず水平方向の１次元ＤＣＴを行い、次に垂直方向の１次元ＤＣＴを行うことで、２次元ＤＣＴを完了する。
【００２７】
図１における２次元ＤＣＴプロセッサの各ブロックの動作を更に詳しく説明する。バタフライ演算部１２への入力画素データは図１７に示すような８×８マトリックスで、各画素データは９ビットであるとする。
ここでは、下記式（１），式（２）に基づき、第１行の入力画素データｘ０，ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６，ｘ７から、ＤＣＴ係数Ｘ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５，Ｘ６，Ｘ７を求める１次元ＤＣＴの処理手順について述べる。
【００２８】
【数４】
0003575991.tif 000006
【００２９】
図２にバタフライ演算部１２の構成を示す。バタフライ演算部１２は、大きくは、並び替え部１００と加減算部１０１にわかれている。並び替え部１００は、９ビット幅の画素データ入力と、８個の画素データを２ビット単位に分割した１６ビット幅の出力（８画素データ×２ビット）を持ち、加減算部１０１は、並び替え部１００から渡される１６ビット幅の入力と入力データの加算結果の加算ビットスライス２４１（２ビット×４加算）と、減算結果の減算ビットスライス２４２（２ビット×４減算）の計１６ビット幅の出力を持つ。
【００３０】
並び替え部１００は、９ビットのレジスタ（Ｒ）２００〜２０７と図３（Ａ）にすような９ビットのパラレルイン、２ビット毎のシリアルアウトのシフトレジスタＳＲ２１０〜２１７とで構成される。
加減算部１０１は１ビットのレジスタ２２０〜２２７と全加算器２３０〜２３７を備え、その単位要素を図３（Ｂ）に示すように、上記シフトレジスタ２１０，２１１からの２ビット幅の第１，第２入力と全加算器２３０の下位からのキャリー・アウトを入力とする１ビットのレジスタ２２０の１ビットの桁上がりをキャリー・インとする第３入力とを加算し、加算結果を出力する２ビット幅の第１出力と、キャリー・アウトを出力する１ビットの第２出力を持つ全加算器２３０〜２３７とで構成する。
【００３１】
図６は、バタフライ演算部１２の動作を示すタイミング図で、入出力及び演算部の各要素におけるデータの時間的変化を示す。バタフライ演算部１２に画素データｘ０，ｘ１，ｘ２，ｘ３，ｘ４，５，ｘ６，ｘ７が、この順序で１クロック毎に読み込まれ（図６（ａ））、クロックタイミングＴ１〜Ｔ４の期間は１クロック毎に入力画素データをレジスタ２０６から入力しレジスタ２０４，２０２，２００に順送りし、保存する（図６（ｈ），図６（ｆ），図６（ｄ），図６（ｂ））。
次にＴ５〜Ｔ８の期間は入力画素データをレジスタ２０１から入力し、レジスタ２０３，２０５，２０７に順送りし、保持する（図６（ｃ），図６（ｅ），図６（ｇ），図６（ｉ））。この動作を繰り返すことで８クロック毎にレジスタ２００〜２０７全てが画素データで満たされる。
【００３２】
レジスタ２００〜２０７全てがデータで満たされると、以降８クロック毎に、レジスタ２００〜２０７に保持されたデータを各々シフトレジスタ２１０〜２１７に受け渡す（図６（ｊ）〜図６（ｑ））。
シフトレジスタ２１０からは、１クロック毎に格納されているデータの下位から２ビットずつが出力され、全加算器２３０，２３１に渡される。全加算器２３０はバタフライ演算における加算を、全加算器２３１はバタフライ演算における減算を行う。
シフトレジスタ２１１からも１クロック毎に格納されているデータの下位から２ビットずつが出力され、該データが全加算器２３０に、該データを反転したものが全加算器２３１に渡される。
レジスタ２２０，２２１は、最下位２ビットの演算前に初期値がセットされ、それ以降は演算結果のキャリーを保持する。レジスタ２２０の初期値は０、レジスタ２２１の初期値は１である。
ここで全加算器２３１について、シフトレジスタ２１１からの入力を反転し、かつレジスタ２２１に初期値として１を設定するのは、レジスタ２１１からの入力を２の補強表現で負の数とし、全加算器２３１を減算器として動作させるためである。
全加算器２３０，２３１では２ビットずつ全加算が行われ、（ｘ０＋ｘ７）と（ｘ０−ｘ７）が下位から順に２ビットずつ求められる。
【００３３】
（ｘ０＋ｘ７）について図３（Ｂ），図３（Ｃ），図３（Ｄ）を用いて説明する。図３（Ｂ）は図２のバタフライ演算部のうち、（ｘ０＋ｘ７）の演算に対応する部分を抜き出したものである。図６に示すように、Ｔ９〜Ｔ１６の期間、シフトレジスタ２１０にはｘ０が、シフトレジスタ２１１にはｘ７が格納される。ここで一例としてｘ０＝１１０１０１０００，ｘ７＝１１１００１１１１とする。
シフトレジスタ２１０，２１１に格納されているｘ０，ｘ７は、各々２ビットずつシフトを行いながら、２ビットずつ出力を全加算器２３０に与える。全加算器２３０はキャリーレジスタ２２０を用いながら２ビットの加算を繰り返す。（ｘ０＋ｘ７）は１０ビットであるから加算は計５回の繰り返しで終了する。
【００３４】
この様子を図３（Ｃ）に示す。タイミングＴ９からＴ１３の５回の計算で（ｘ０＋ｘ７）の結果が下位から順に２ビットずつ出力されることになる。これは図２における出力２６０に相当する。他のバタフライ演算の加算結果２６１〜２６３，及び減算結果２５０〜２５３についても同様の演算が行われる。
図２の出力２６０〜２６２に注目すると、図３（Ｄ）のようになる。バタフライ演算の加算部分の計算結果は、図３（Ｄ）に示すように、２６０〜２６３の下位から順に２ビットずつビットスライスで出力される。またバタフライ演算の減算部分の計算結果は２の補数表現で負の数とするための反転処理があること以外は、上記と同様の処理を行い、２５０〜２５３の下位から順に２ビットずつのビットスライスで結果が出力されることになる。
このタイミングを図６（ｒ）〜図６（ｕ）に示す。まず下位２ビットに対応する加算ビットに対応するビットスライスがＴ９からＴ１３の期間出力される。その後Ｔ１４〜Ｔ１６の期間，ダミーデータをはさんで、次の入力データ組の出力に移るサイクルを繰り返す。
【００３５】
図４に示す前記積和演算部１３（なお、積和演算部１７についても同様である）は２つの４ビット幅の入力と、各々１６ビット幅の第１，第２出力を持ち、ＤＣＴ係数の部分和を出力するＲＯＭを含み、４ビット幅の第１，第２入力と演算結果出力として１６ビット幅の出力を持つ累積加算部４００〜４０７と、１６ビット幅の第１，第２，第３，第４入力と出力を持つマルチプレクサ４１２，４１３と各々二つの４ビット幅の入出力を持ち、２クロックのディレイを生じさせる遅延部４２０〜４２５とで構成される。
【００３６】
積和演算部１３の中では、バタフライ演算部１２から渡される１６ビットのビットスライスのうち、（ｘ０＋ｘ７，ｘ１＋ｘ６，ｘ２＋ｘ５，ｘ３＋ｘ４）の加算ビットスライス２４１は累積加算部４００〜４０３に、（ｘ０−ｘ７，ｘ１−ｘ６，ｘ２−ｘ５，ｘ３−ｘ４）の減算ビットスライス２４２は累積加算部４０４〜４０７に入力される。ここで加算，減算ビットスライス各々を下位ビットスライスと上位ビットスライスに分けて表現する。下位上位各々のビットスライスは図３（Ｄ）に示すように４ビットからなる。
【００３７】
積和演算部を構成する累積加算部の単位要素部を図５に示す。
図５に示す累積加算部４０１において、ＲＯＭ５００とＲＯＭ５０１は同一内容のデータを保持している。ＲＯＭ５００は下位ビットスライスを４ビット幅のアドレスとして入力し、ＲＯＭ５０１は上位ビットスライスを４ビット幅のアドレスとして入力する。
これらのＲＯＭ５００及びＲＯＭ５０１各々には、表１に示した、ＤＣＴ演算のためのビットスライス値に対応したコサイン行列に基づく部分和１６種が記憶されている。５０２は１６ビット幅の第１入力５２０と１７ビット幅の第２入力５２１を加算して１８ビット幅の出力をする加算器であり、５０３は１８ビットの第１入力と、１６ビット幅の第２入力を加算して１８ビット幅の出力をする加算器であり、５０４は１８ビット幅の第１，第２入力とそれらの上位１６ビットを出力するマルチプレクサであり、５１１は１８ビット幅のレジスタであり、５１２は１６ビット幅のレジスタであり、５１３はＲＯＭ５０１から出力される部分和を１ビット左にシフトする回路である。
【００３８】
また、図４の累積加算部４００，４０２〜４０７も累積加算部４０１とはＲＯＭに保持されるデータ内容が異なるだけで、その他は全く同一の回路である。累積加算部４００では式（１）のＤＣＴ係数Ｘ０に対応する演算を行い、以下累積加算部４０１はＸ２，４０２はＸ４，４０３はＸ６の演算を、累積加算部４０４では上記式（２）のＤＣＴ係数Ｘ１に対応する演算を行い、以下４０５はＸ３，４０６はＸ５，４０７はＸ７の演算を行う。
また、遅延器４２０〜４２５で入力ビットスライスを遅延させるのは、演算結果を１クロックあたり１係数とするためである。
【００３９】
累積加算部の一例として累積加算部４０１の動作について図５，図７及び下記式（５），式（６）を用いて説明する。
累積加算部４０１では、下記式（５），下記式（６）に示すＤＣＴ係数Ｘ２を算出するために、式（５）の右辺の４×４マトリクスの第２行と４×１マトリクスの積和演算をビットスライス単位の加算で実現する。
【００４０】
【数５】
0003575991.tif 000007
【００４１】
まず、Ｔ９〜Ｔ１３の期間中、１クロック毎にビットスライスが２ビットずつ入力される（図７（ａ））。下位ビットスライス｛ｂ００，ｂ１０，ｂ２０，ｂ３０｝はＲＯＭ５００に入力され、このビットスライスに対応した、式（５）右辺の４×４マトリクスの第２行と４×１マトリクスの積和演算の部分和５２０が順次索引される（表１参照）。
次に上位のビットスライス｛ｂ０１，ｂ１１，ｂ２１，ｂ３１｝はＲＯＭ５０１に入力され、このビットスライスに対応した、式（５）右辺の４×４マトリクスの第２行と４×１マトリクスの積和演算の部分和５２１が順次索引される（表１参照）。
そして、部分和５２１は部分和５２０より１ビット上位にあるため、部分和５２１を左へ１ビットシフトした値、つまり２の乗算を行った値を部分和５２０と加算する（部分和５２０＋部分和５２１×２）。
以上の演算を全ビットスライスに対して行うことで、ＤＣＴ係数Ｘ２を求める。ただし最上位の符号ビットのビットスライスに対応する部分和が入力されたときは、２の補数表現の変換手順に従い、左へ１ビットシフトした値の符号を反転させて加算する（部分和５２０＋（−（部分和５２１×２）））。
【００４２】
加算器５０２による加算結果は、レジスタ５１１を介して加算器５０３によって、既に計算されたより下位にあるビットスライスの結果と累積加算する。この累積加算結果のビット数を出力として要求されているビット精度に落とす。
本実施例の場合では、上位１６ビットがレジスタ５１２に格納された後、１６ビットが出力される（図７（ｂ））。また同時に次の上位ビットの加算結果と累積加算するために、加算器５０３に入力する。
この結果、ビットスライス入力が完了した２クロック後に演算結果が求められ最上位ビットスライスの入力の２クロック後には、上記式（１）の右辺の４×４マトリクスの第２行と４×１マトリクスの積和演算結果（式（１）左辺のＸ０に対応）が出力される（図７（ｃ））。
【００４３】
同様の演算を累積加算部４００，４０２，４０３，４０４，４０５，４０６，４０７で行う。各々、累積加算部４００で式（１）の右辺の４×４マトリクスの第１行と４×１マトリクスの積和演算結果（式（１）左辺のＸ０に対応）を、同４０２で式（１）の右辺の４×４マトリクスの第３行と４×１マトリクスの積和演算結果（式（１）左辺のＸ４に対応）を、同４０３で式（１）の右辺の４×４マトリクスの第４行と４×１マトリクスの積和演算結果（式（１）左辺のＸ６に対応）を求め、２クロック毎にマルチプレクサ４１２によって、タイミングＴ１５〜Ｔ１６の期間は第１行，Ｔ１７〜Ｔ１８の期間は第２行，Ｔ９〜Ｔ２０の期間は第３行、Ｔ２１〜Ｔ２２の期間は第４行の順に選択され、積和４３１として四捨五入部１４（図１参照）に渡す（図７（ｃ））。
【００４４】
同様にして累積加算部４０４で式（２）の右辺の４×４マトリクスの第１行と４×１マトリクスの積和演算結果（式（２）左辺のＸ１に対応）を、同４０５で式（２）の右辺の４×４マトリクスの第２行と４×１マトリクスの積和演算結果（式（２）左辺のＸ３に対応）を、同４０６で式（２）の右辺の４×４マトリクスの第３行と４×１マトリクスの積和演算結果（式（２）左辺のＸ５に対応）を、同４０７で式（２）の右辺の４×４マトリクスの第４行と４×１マトリクスの積和演算結果（式（２）左辺のＸ７に対応）を求め、タイミングＴ１５〜Ｔ１６の期間は第１行，Ｔ１７〜Ｔ１８の期間は第２行、Ｔ１９〜Ｔ２０の期間は第３行、Ｔ２１〜Ｔ２２の期間は第４行を選択するように２クロック毎にマルチプレクサ４１３を切替えて、積和４３２として四捨五入部１４に渡す（図７（ｃ））。
【００４５】
図７（ｃ）に示すように、累積加算部４０１，４０５には、累積加算部４００，４０４よりも２クロック遅延してビットスライスが入力されるので、演算結果が求まるのも２クロック後となる。同様に累積加算部４０２と４０６、４０３と４０７でも各々２クロック遅延して演算結果が出力される。
前記四捨五入部１４において、式（１），（２）の右辺の（１／２）の乗算を行い結果を四捨五入する。
以上の処理を行うことで、水平方向の１次元ＤＣＴが完了する。
【００４６】
ＲＡＭ１５では、図２０に示すように、横向きラスター順に入力されたデータを縦向きラスター順に出力する。すなわち、書き込みと読み出しの順を横から縦に変更し、バタフライ演算部１６に渡す。
垂直方向のＤＣＴは水平方向のＤＣＴと基本的に同じ動作を行う。ただし本実施例では、バタフライ演算部１６に入力されるデータは、前述の積和演算部１３の出力ビット精度を１６ビットとし、それをさらに四捨五入部１４で１／２にした関係上、１５ビットデータになり、水平方向のＤＣＴの９ビット幅の入力とは異なる。また出力データも、ＤＣＴ係数のビット精度を１２ビットとしているので１２ビット幅となり、水平方向のＤＣＴとは異なる。
以上の処理を行うことにより２次元ＤＣＴを実現する。
【００４７】
次に、本発明による直交変換回路の一実施形態であるＤＣＴ／ＩＤＣＴプロセッサの概要ブロック図を図８にて示し、そのプロセッサの具体的な動作を図９乃至図１７，図１９に基づき以下説明する。
ここに、図８の２次元ＤＣＴ／ＩＤＣＴプロセッサは図１の２次元ＤＣＴプロセッサにＩＤＣＴのための回路を付加したものであり、ＤＣＴモードの場合は、前記ＤＣＴプロセッサと同じ処理が行われるため、上述したものと同一符号を付しその説明は省略し、ＩＤＣＴモードの場合の説明のみを行う。
図８に示すＩＤＣＴプロセッサの特徴は図１９に示す入力ＤＣＴ係数データＸ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５，Ｘ６，Ｘ７を並び替え部８２０に設けたレジスタに格納し、それらからデータを２ビットずつ出力する処理により、メモリやアドレス発生器を必要としないデータ入力を実現することである。また、後段のバタフライ演算部８０４においても、下位ビットから順次加算を行うため、従来例に比べて小さい加算器を備える点に特徴がある。
【００４８】
図８に示す双方向ＤＣＴ／ＩＤＣＴプロセッサでは、下記式（３），（４）に示す演算も行われる。
この演算動作について説明すると、並び替え部８２０では、入力データのビットスライス化のみを行い、このビットスライスが積和演算部８０３に渡される。積和演算部８０３では、垂直方向の１次元ＤＣＴを行い、それによって求まったＩＤＣＴの中間結果が、バタフライ演算部８０４に渡される。バタフライ演算部８０４においては、式（３）及び（４）の右辺の加算及び減算と、（１／２）の乗算を四捨五入を用いて行い、演算結果をＲＡＭ１５に渡す。ＲＡＭ１５では、垂直方向ラスター順に入力されたデータの転置を行い水平方向ラスター順に並び替え部８２２にデータを渡す。以降、バタフライ演算部８０８において最終的に画素データとして出力するときの順序を並び替えること以外は、垂直方向の１次元ＩＤＣＴと同じ動作を行い、バタフライ演算部８０８から画素データが出力される。ＲＡＭ１５をはさんで、まず垂直方向の１次元ＩＤＣＴを行い、次に水平方向の１次元ＩＤＣＴを行うことで、２次元ＩＤＣＴを実行する。
【００４９】
図８に示す２次元ＤＣＴ／ＩＤＣＴプロセッサの各ブロックの動作をさらに詳しく述べる。
ＩＤＣＴモードの場合、入力要素データは、図１９に示す８×８マトリクスで各係数は１２ビットであり、該マトリクスの第１列がＸ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５，Ｘ６，Ｘ７であるとする。ここでは、下記式（３），式（４）に基づき、入力データＸ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５，Ｘ６，Ｘ７から、画素値ｘ０，ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６，ｘ７を求めることとし、その処理手順について述べる。
【００５０】
【数６】
0003575991.tif 000008
【００５１】
図９に示すバタフライ演算部８０２の並べ替え部８２０は、図２で示した並び替え部１００に９ビット幅の第１入力と１２ビット幅の第２入力のうちどちらかを選択するマルチプレクサ９００〜９０７を付加した構造となり、加減算部８２１は、図２で示した加減算部１０１に、２ビット幅の第１，第２入力からどちらかを選択／出力するマルチプレクサ９１０〜９１７を付加した構造となる。
【００５２】
図１５は、ＩＤＣＴモードの場合のバタフライ演算部８０２の動作を示すタイミング図である。バタフライ演算部８０２にＸ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５，Ｘ６，Ｘ７が、この順序で１クロック毎に読み込まれ（図１５（ａ））、タイミングＴ０〜Ｔ７の期間は１クロック毎に入力画素データをレジスタ２０７から入力し、レジスタ２０６，２０５，２０４，２０３，２０２，２０１，２００に順送りする（図１５（ｉ）〜図１５（ｂ））。
レジスタ２００〜２０７全てがデータで満たされると、以降８クロック毎にレジスタ２００〜２０７に保持されたデータを各々シフトレジスタ２１０〜２１７に受け渡す（図１５（ｊ）〜図１５（ｑ））。各シフトレジスタ２１０〜２１７は１クロック毎に格納しているデータの下位から２ビットずつを加減算部８２１に渡す。
【００５３】
加減算部８２１では、ＩＤＣＴモードの場合、加算器２３０〜２３７は用いない。つまり、マルチプレクサ９１０〜９１７によって並び替え部８２０から渡されたＸ０〜Ｘ７のビットスライスを選択し、Ｘ０，Ｘ２，Ｘ４，Ｘ６を下位から２ビットずつまとめたビットスライスＡと、Ｘ１，Ｘ３，Ｘ５，Ｘ７を下位から２ビットずつまとめたビットスライスＢとを積和演算部８０３に出力する（図１５（ｒ）〜図１５（ｕ））。
【００５４】
図１０及び図１１に示す積和演算部８０３は図４で示した積和演算部１３の累積加算部４００〜４０７に一部変更を加えた累積加算部１０００〜１００７と、さらに２ビット幅の第１，第２入力と１ビット幅の第３，第４出力を持つ加減算器１００８〜１０１５と、１ビット幅の第１，第２，第３，第４入力と出力を持つマルチプレクサ１０４２，１０４３を付加した構造となる。
該積和演算部８０３の中では、並び替え部８２０から渡されるビットスライスのうち｛Ｘ０，Ｘ２，Ｘ４，Ｘ６｝のビットスライスＡは累積加算部１０００，１００１，１００２，１００３に、｛Ｘ１，Ｘ３，Ｘ５，Ｘ７｝のビットスライスＢは累積加算部１００４，１００５，１００６，１００７に入力される。
【００５５】
図１２に示す累積加算部１０００は、上述した実施形態におけるＤＣＴの場合で説明した累積加算部４０１と基本的には同じ動作を行う。
図１６に示すタイミングチャートを用いてこの動作の説明をする。まず、タイミングＴ９〜Ｔ１４の期間中、１クロック毎に２ビットずつビットスライスが入力される（図１６（ａ））。２ビットのうち下位ビットスライスがＲＯＭ１１００に、上位ビットスライスがＲＯＭ１１０１に入力され、各々のビットスライスに対応した部分和５２０，部分和５２１が順次索引される。
各部分和を加算し、加算器５０３でより下位のビットスライスの結果と累積加算し累積加算中間結果を求めるまでは、ＤＣＴの場合と同じである。ただし、レジスタ１１１２において累積加算中間結果のビット精度を落とす際、その切り落としたビット（本実施例の場合は下位２ビット）を上記式（３）右辺の加算を行うために加算器１００８に、上記式（４）右辺の減算を行うために加算器１０１２に出力する点が異なる（図１６（ｂ））。
【００５６】
同様の演算を累積加算部１００１，１００２，１００３で行い、式（３），式（４）右辺の第１項の各行を下位から２ビットずつ求め、累積加算部１００４，１００５，１００６，１００７によって式（３），式（４）右辺の第２項の各行を下位から２ビットずつ求める。
累積加算部１０００と累積加算器１００４の計算結果より、加算器１００８では式（３）右辺の加算を、１０１２では式（４）右辺の減算を下位から２ビットずつ行い、そのキャリーを加算キャリーまたは減算キャリーとして出力する。
このキャリーが有効となるタイミングは、最上位のビットスライスによる累積加算結果が累積加算部１０００及び累積加算部１００４から出力される時、即ちＴ１６〜Ｔ１７である（図１６（ｃ））。
同様にして、加算器１００９〜１０１１で式（３）右辺の加算を行った時の各行の加算キャリー１０３２を、加算器１０１３〜１０１５で式（４）右辺の減算を行ったときの各行の減算キャリー１０３３を求め、式（３），式（４）の第１行〜第４行の順でバタフライ演算部８０４に渡す（図１６（ｃ））。
【００５７】
図１３に示すバタフライ演算部８０４は、式（３）右辺の加算、式（４）の右辺の減算を行い、各々１６ビット幅の第１，第２入力と１ビット幅の第３，第４入力と１６ビット幅の出力を持つ。
バタフライ演算部８０４において、１２００は１６ビット幅の第１，第２入力を持ち、それらを加算して１７ビット幅の出力をする加算器であり、１２０１は１７ビット幅の第１入力と、１ビット幅の第２入力を持ち、それらを加算して１６ビットの出力をする加算器であり、１２０４は１７ビット幅、１２０５は１６ビット幅のそれぞれ入出力を持つレジスタであり、１２０２は１ビット幅の第１，第２入力から１ビット幅の出力を選択し、１２０３は１６ビット幅の第１，第２入力から１６ビット幅の出力を選択するマルチプレクサである。
【００５８】
バタフライ演算部８０４の中では、１段目の加算器１２００で、積和演算部８０３から入力された１６ビット幅の２入力とビット幅の加算もしくは減算キャリーを用いて式（３），式（４）右辺の第１項と第２項の加算及び減算を交互に行い、１７ビット幅のデータＸ０，Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５，Ｘ６，Ｘ７を算出し、出力する。
加算の場合は右辺第１項の積和１０３０と、マルチプレクサ１２０３によって選択された右辺第２項の積和１０３１と、マルチプレクサ１２０２によって選択された加算キャリー１０３２を用いて、第１行から順に加算を行い、減算の場合は積和１０３０と、マルチプレクサ１２０３によって選択された積和１０３１を反転したデータと、マルチプレクサ１２０２によって選択された減算キャリー１０３３を用いて、第１行から順に減算を行う。
図１６（ｃ）で示した通り、期間Ｔ１６，Ｔ１７に累積加算部１０００，１００４の出力が有効になり、２出力の加算で式（３）のｘ０，減算で式（４）のｘ７が求められる。同様にして順にｘ１，ｘ６，ｘ２，ｘ５，ｘ３，ｘ４が求められる。
【００５９】
加算及び減算により求められた、１７ビット幅のデータｘ０，ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６，ｘ７，はレジスタ１２０４を介して加算器１２０１に渡される。２段目の加算器は１２０１では式（３），（４）右辺の（１／２）の乗算を四捨五入を用いて行い、上位１６ビットがレジスタ１２０５に格納され、１６ビット幅のデータとしてＲＡＭ１５に出力される。
以上の処理を行うことで、垂直方向の一次元ＩＤＣＴが完了する。
【００６０】
ＲＡＭ１５の中では、図２０に示すように、垂直方向ラスター順に入力されたデータの転置を行い、水平方向ラスター順にバタフライ演算部８０６にデータを渡す。バタフライ演算部８０６の中では、バタフライ演算部８０２と同様の演算が行われ、Ｘ０，Ｘ２，Ｘ４，Ｘ６を下位から２ビットずつまとめたビットスライスＡと、Ｘ１，Ｘ３，Ｘ５，Ｘ７を下位から２ビットずつまとめたビットスライスＢとを積和演算部８０７に出力する（図１５（ｒ）〜図１５（ｕ））。
【００６１】
水平方向のＩＤＣＴは垂直方向のＩＤＣＴと基本的に同じ動作を行う。だたし図１４に示すバタフライ演算部８０８において、２段目の加算器１３００では、出力の画素データのビット精度を９ビットとしているので、１３ビット幅の入力を四捨五入して９ビット幅にする点が異なる。
また、加算器１３００の出力がバタフライ演算部８０４の加算器１２０１の出力と同様に、ｘ０，ｘ７，ｘ１，ｘ６，ｘ２，ｘ５，ｘ３，ｘ４順になるのをレジスタ１３０２，レジスタ１３０３，レジスタ１３０４，レジスタ１３０５及びマルチプレクサ１３０６を用いて出力画素データをｘ０，ｘ１，…，ｘ６，ｘ７の順序に並び替える動作が付加されている。
【００６２】
図１７に示すバタフライ演算部８０８のタイミングチャートを用いてその動作を説明する。レジスタ１３０２には、ｘ０，ｘ７，ｘ１，ｘ６，ｘ２，ｘ５，ｘ３，ｘ４が、この順序で、１クロック毎に加算器１３００から渡される（図１７（ａ））。
レジスタ１３０３には、タイミングＴ１９〜Ｔ２４の期間中は、ｘ０，ｘ７，ｘ１，ｘ６，ｘ２，ｘ５が、この順序で、１クロック毎にレジスタ１３０２から渡され、Ｔ２４〜Ｔ２６の期間中は、ｘ５が保持される（図１７（ｂ））。
レジスタ１３０４には、Ｔ２０〜Ｔ２３の期間中は、ｘ０，ｘ７，ｘ１，ｘ６が、この順序で、１クロック毎にレジスタ１３０３から渡され、Ｔ２３〜Ｔ２７の期間中は、ｘ６が保持される（図１７（ｃ））。
レジスタ１３０５には、Ｔ２１，Ｔ２２の期間中は、ｘ０，ｘ７が、この順序で、１クロック毎にレジスタ１３０４から渡され、Ｔ２２〜Ｔ２８の期間中は、ｘ７が保持される（図１７（ｄ））。
出力画素データの並べ替えは、マルチプレクサ１３０６によってレジスタ１３０５，１３０４，１３０３，１３０２，１３０３，１３０４，１３０５の順に１クロック毎に出力を切替えることで実現する（図１７（ｅ））。
【００６３】
また、本実施形態では、並び替え部８２２に入力されるデータは、前述の積和演算部８０３の出力ビット精度を１６ビットとした関係上、１６ビットデータになり、垂直方向ＩＤＣＴのビット幅の入力とは異なる。また出力データも、画素データのビット精度を９ビットとしているので９ビット幅となり、垂直方向ＩＤＣＴの場合とは異なる。以上の処理を行うことにより二次元ＤＣＴを実現する。
なお、本実施形態で示した具体化例は一例であり、本発明はこの例以外にも適用可能である。例えば、この例では画素データは９ビットとしているが、９ビット以外でも構わない。また四捨五入の方法も一例であり、具体的に限定するものではない。データの形式も実施形態では画素，ＤＣＴ係数としているが、具体的に画像データ，ＤＣＴ係数に限定するものではない。
【００６４】
【発明の効果】
以上説明してきたとおり、本発明によれば、従来の直交変換回路が備えていたメモリやアドレス発生器をなくした小規模の直交変換回路の実現が可能になる。従って本回路を集積化した場合にはチップ面積を小さくすることが可能になり本発明の実施化による有効性は大きい。
また、本発明によれば、直交変換回路に複数のマルチプレクサや加算器を付加するだけで、直交変換及び逆直交変換を行う双方向の直交変換回路とすることができ、双方向の直交変換回路においてもメモリやアドレス発生器は不要であり、小規模の回路構成とすることができる。
また、プロセッサをＤＣＴプロセッサとし、さらに各次元に対応させることにより多次元の当該直交変換回路を構成することが可能となり、直交変換の実用化手段として有効な回路を提供する。
【図面の簡単な説明】
【図１】本発明によるＤＣＴプロセッサの構成を示すブロック図である。
【図２】本発明によるＤＣＴプロセッサ中のバタフライ演算部の構成を示すブロック図である。
【図３】本発明によるＤＣＴプロセッサ中のパラレルレジスタ，全加算器の構成及び加算の概念図である。
【図４】本発明によるＤＣＴプロセッサ中の積和演算部の構成を示すブロック図である。
【図５】図４に示される積和演算部の累積加算部の構成を示すブロック図である。
【図６】本発明によるＤＣＴプロセッサ中のバタフライ演算部の動作を説明するためのタイミングチャートである。
【図７】本発明によるＤＣＴプロセッサ中の積和演算部の動作を説明するためのタイミングチャートである。
【図８】本発明による双方向ＤＣＴ／ＩＤＣＴプロセッサの構成を示すブロック図である。
【図９】本発明による双方向ＤＣＴ／ＩＤＣＴプロセッサ中のバタフライ演算部の構成を示すブロック図である。
【図１０】本発明による双方向ＤＣＴ／ＩＤＣＴプロセッサ中の積和演算部の構成を示すブロック図（その１）である。
【図１１】本発明による双方向ＤＣＴ／ＩＤＣＴプロセッサ中の積和演算部の構成を示すブロック図（その２）である。
【図１２】本発明による双方向ＤＣＴ／ＩＤＣＴプロセッサ中の累積加算部の構成を示すブロック図である。
【図１３】本発明による双方向ＤＣＴ／ＩＤＣＴプロセッサ中のバタフライ演算部の構成を示すブロック図である。
【図１４】本発明による双方向ＤＣＴ／ＩＤＣＴプロセッサ中のバタフライ演算部の構成を示すブロック図である。
【図１５】本発明による双方向ＤＣＴ／ＩＤＣＴプロセッサ中のバタフライ演算部のＩＤＣモードの動作を説明するためのタイミングチャートである。
【図１６】図１０及び図１１に示される積和演算部の動作を説明するためのタイミングチャートである。
【図１７】図１４に示すバタフライ演算部の動作を説明するための図で、レジスタ及びマルチプレクサのタイミングチャートである。
【図１８】ＤＣＴ／ＩＤＣＴプロセッサにおけるＤＣＴモードの場合の入力マトリクスを示す図である。
【図１９】ＤＣＴ／ＩＤＣＴプロセッサにおけるＩＤＣＴモードの場合の入力マトリクスを示す図である。
【図２０】メモリへのデータの保持状態を転換することによる行列における転置の例を示す図である。
【図２１】従来例のＤＣＴ／ＩＤＣＴプロセッサを示すブロック図である。
【符号の説明】
１２，１６…バタフライ演算部、１３，１７…積和演算部、１４，１８…四捨五入部、１５…ＲＡＭ、
１００，１０２…並び替え部、１０１，１０３…加減算部、
２００〜２０７…レジスタ、２１０〜２１７…シフトレジスタ、２２０〜２２７…レジスタ、２３０〜２３７…全加算器、２４１…加算ビットスライス、２４２…減算ビットスライス、２５０〜２５３…加減算結果、２６０〜２６３…加減算結果、
４００〜４０７…累積加算部、４１２，４１３…マルチプレクサ、４２０〜４２５…遅延器、４３１，４３２…積和演算結果出力、
５００，５０１…ＲＯＭ、５０２，５０３…加算器、５０４…マルチプレクサ、５１１，５１２…レジスタ、５１３…シフト回路、
８０３，８０７…積和演算部、８０２，８０４，８０６，８０８…バタフライ演算部、８０９…マルチプレクサ、８２０，８２２…並び替え部、８２１，８２３…加減算部、
９００〜９０７，９１０〜９１７…マルチプレクサ、
１０００〜１００７…累積加算部、１００８〜１０１５…加減算器、１０３０，１０３１…積和演算結果出力、１０３２…加算キャリー出力、１０３３…減算キャリー出力、１０４０〜１０４３…マルチプレクサ、
１１００，１１０１…ＲＯＭ、１１１２…レジスタ、１１１３…シフト回路、
１２００，１２０１…加算器、１２０２，１２０３…マルチプレクサ、１２０４，１２０５…レジスタ、
１３００…加算器、１３０１〜１３０５…レジスタ、１３０６…マルチプレクサ、
１８００，１８０９…アドレス発生器、１８０１，１８０６…メモリ、１８０２，１８０４，１８０５，１８０８…パイプラインレジスタ、１８０３…積和演算器、１８０７…バタフライ演算器。
【図１】
0003575991.tif 000009
【図２】
0003575991.tif 000010
【図３】
0003575991.tif 000011
【図４】
0003575991.tif 000012
【図５】
0003575991.tif 000013
【図６】
0003575991.tif 000014
【図７】
0003575991.tif 000015
【図８】
0003575991.tif 000016
【図９】
0003575991.tif 000017
【図１０】
0003575991.tif 000018
【図１１】
0003575991.tif 000019
【図１２】
0003575991.tif 000020
【図１３】
0003575991.tif 000021
【図１４】
0003575991.tif 000022
【図１５】
0003575991.tif 000023
【図１６】
0003575991.tif 000024
【図１７】
0003575991.tif 000025
【図１８】
0003575991.tif 000026
【図１９】
0003575991.tif 000027
【図２０】
0003575991.tif 000028
【図２１】
0003575991.tif 000029