(57)【特許請求の範囲】
【請求項１】
入力データである列データを順次入力して、各列データに対する１ビット符号拡張付の右シフト処理を実施するとともに、その右シフト処理を実施する前の列データと、その右シフト処理を実施した後の列データとを加算する加算処理を実施し、その右シフト処理を実施する前の列データ、その右シフト処理を実施した後の列データ、または、その加算処理後の列データのいずれかを選択して出力する入力前処理手段と、予め第１及び第２の変換行列を格納し、第１及び第２の変換行列の各行データを出力するテーブル手段と、上記入力前処理手段から出力された列データと上記テーブル手段から出力された第１の変換行列の行データとの積和演算を実施する第１の積和演算手段と、上記入力前処理手段から出力された列データと上記テーブル手段から出力された第２の変換行列の行データとの積和演算を実施する第２の積和演算手段と、上記第１の積和演算手段の演算結果と上記第２の積和演算手段の演算結果との加算処理又は減算処理を実施する後処理手段と、上記後処理手段における加算結果又は減算結果の行要素毎に、別々の丸め処理を実施する丸め処理手段と、上記丸め処理手段による丸め処理後の加算結果又は減算結果を所定のクリッピング範囲内に収めるクリップ処理を実施するクリッピング手段とを備えた逆変換回路。
【請求項２】
入力前処理手段が選択する列データの種類、第１及び第２の積和演算手段が使用する変換行列の種類、後処理手段における演算の種類及び有無、丸め処理手段における丸め方法、及びクリッピング手段におけるクリッピング範囲を制御する制御手段を設けたことを特徴とする請求項１記載の逆変換回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば、離散コサイン変換（ＤＣＴ）などの直交変換を用いた画像符号化方式の復号装置において、直交変換符号化された画像データを直交逆変換して復元する逆変換回路に関するものである。
【背景技術】
【０００２】
例えば、下記の非特許文献１に開示されている従来の一次元逆変換回路は、動画像符号化の国際標準であるＭＰＥＧ−２で採用されている逆ＤＣＴアルゴリズムを実装している。
下記の式（１）は、非特許文献１に開示されている逆ＤＣＴアルゴリズムを示している。
【数１】
0004405452.tif 000002
式（１）において、ｄ0〜ｄ7は、入力データであり、Ｃa，Ｃbは変換行列である。
【０００３】
従来の一次元逆変換回路では、式（１）の演算結果ｆ0〜ｆ3に対して、例えば、四捨五入のような、全ての行要素に対して均一の丸め方法が採用されている。
【０００４】
【非特許文献１】Ｓ．Ｕｒａｍｏｔｏ  ｅｔ ａｌ．，“Ａ  １００−ＭＨｚ  ２−Ｄ Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｇｎｅ  Ｔｒａｎｓｆｏｒｍ  Ｃｏｒｅ  Ｐｒｏｃｅｓｓｏｒ，”ＩＥＥＥ  Ｊｏｕｒｎａｌ  ｏｆ  Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｃｉｒｃｕｉｔｓ，  ｖｏｌ．  ２７，  Ｎｏ．４，  Ａｐｒｉｌ  １９９２．
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の逆変換回路は以上のように構成されているので、逆変換結果に対して丸め処理を実施する場合、その逆変換結果の全ての行要素に対して均一の丸め方法が採用されている。このため、一つの逆変換回路で複数の逆変換アルゴリズムを実行することができないなどの課題があった。
【０００６】
この発明は上記のような課題を解決するためになされたもので、多様な仕様の逆変換アルゴリズムを実行することができる逆変換回路を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る逆変換回路は、入力データである列データを順次入力して、各列データに対する１ビット符号拡張付の右シフト処理を実施するとともに、その右シフト処理を実施する前の列データと、その右シフト処理を実施した後の列データとを加算する加算処理を実施し、その右シフト処理を実施する前の列データ、その右シフト処理を実施した後の列データ、または、その加算処理後の列データのいずれかを選択して出力する入力前処理手段と、予め第１及び第２の変換行列を格納し、第１及び第２の変換行列の各行データを出力するテーブル手段と、上記入力前処理手段から出力された列データと上記テーブル手段から出力された第１の変換行列の行データとの積和演算を実施する第１の積和演算手段と、上記入力前処理手段から出力された列データと上記テーブル手段から出力された第２の変換行列の行データとの積和演算を実施する第２の積和演算手段と、上記第１の積和演算手段の演算結果と上記第２の積和演算手段の演算結果との加算処理又は減算処理を実施する後処理手段と、上記後処理手段における加算結果又は減算結果の行要素毎に、別々の丸め処理を実施する丸め処理手段と、上記丸め処理手段による丸め処理後の加算結果又は減算結果を所定のクリッピング範囲内に収めるクリップ処理を実施するクリッピング手段とを備えたものである。
【発明の効果】
【０００８】
以上のように、この発明によれば、多様な仕様の逆変換アルゴリズムを実行することができる効果がある。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
図１はこの発明の実施の形態１による一次元の逆変換回路を示す構成図であり、図において、入力前処理部１は入力データである列データｄ0〜ｄ3を順次入力して、その列データｄ0〜ｄ3を列単位に格納し、その列データｄ0〜ｄ3を積和演算部３〜６に出力する。なお、入力前処理部１は入力前処理手段を構成している。
係数テーブル２は予め変換行列Ｃを格納し、その変換行列Ｃの行データｃ0〜ｃ3を積和演算部３〜６に出力する（変換行列Ｃの行データｃ0〜ｃ3はベクトルであり、下記の式（２）を参照）。なお、係数テーブル２はテーブル手段を構成している。
【００１０】
積和演算部３は入力前処理部１から出力された列データｄ0〜ｄ3と係数テーブル２から出力された行データｃ0との積和演算を実施する。
積和演算部４は入力前処理部１から出力された列データｄ0〜ｄ3と係数テーブル２から出力された行データｃ1との積和演算を実施する。
積和演算部５は入力前処理部１から出力された列データｄ0〜ｄ3と係数テーブル２から出力された行データｃ2との積和演算を実施する。
積和演算部６は入力前処理部１から出力された列データｄ0〜ｄ3と係数テーブル２から出力された行データｃ3との積和演算を実施する。
なお、積和演算部３〜６は積和演算手段を構成している。
【００１１】
可変丸め部７は積和演算部３〜６が積和演算を実施すると、その演算結果の行要素毎に、別々の丸め処理を実施する。なお、可変丸め部７は丸め処理手段を構成している。
クリッピング処理部８は可変丸め部７による丸め処理後の演算結果ｆ0〜ｆ3を所定のクリッピング範囲内に収めるクリップ処理を実施する。なお、クリッピング処理部８はクリッピング手段を構成している。
出力処理部９はクリッピング処理部８によるクリップ処理後の演算結果ｆ0〜ｆ3を格納し、その演算結果ｆ0〜ｆ3を外部出力する。
【００１２】
次に動作について説明する。
この実施の形態１による一次元逆変換回路にて実現可能な、４点逆変換アルゴリズムの一例を下記の式（２）に示す。
【数１】
0004405452.tif 000003
式（２）において、ｄ0〜ｄ３は、一次元逆変換回路の入力データである列データ、ｅは行要素毎に別々の丸め処理を実現するための定数項である。
式（２）の例では、第１行目はマイナス方向に丸め処理を実施し、その他の行はプラス方向に丸め処理を実施する。
なお、記号“>>”は、符号拡張付の右シフト処理を表している。
【００１３】
入力前処理部１は、入力データである列データｄ0〜ｄ3を順次入力すると、その列データｄ0〜ｄ3を列単位に格納する。
そして、入力前処理部１は、列データｄ0〜ｄ3をそれぞれ積和演算部３〜６に出力する。
【００１４】
係数テーブル２は、予め変換行列Ｃを格納し、その変換行列Ｃの第１行である行データｃ0＝｛２，２，２，１｝を積和演算部３に出力し、その変換行列Ｃの第２行である行データｃ1＝｛２，１，−２，−２｝を積和演算部４に出力する。
また、その変換行列Ｃの第３行である行データｃ2＝｛２，−１，−２，２｝を積和演算部５に出力し、その変換行列Ｃの第４行である行データｃ3＝｛２，−２，２，−１｝を積和演算部６に出力する。
【００１５】
積和演算部３は、入力前処理部１から列データｄ0〜ｄ3を受け、係数テーブル２から行データｃ0を受けると、下記の式（３）に示すように、その列データｄ0〜ｄ3と行データｃ0との積和演算を実施し、その演算結果Ｓ0を可変丸め部７に出力する。
【数３】
0004405452.tif 000004
【００１６】
積和演算部４は、入力前処理部１から列データｄ0〜ｄ3を受け、係数テーブル２から行データｃ1を受けると、積和演算部３と同様に、その列データｄ0〜ｄ3と行データｃ1との積和演算を実施し、その演算結果Ｓ1を可変丸め部７に出力する。
また、積和演算部５は、入力前処理部１から列データｄ0〜ｄ3を受け、係数テーブル２から行データｃ2を受けると、積和演算部３と同様に、その列データｄ0〜ｄ3と行データｃ2との積和演算を実施し、その演算結果Ｓ2を可変丸め部７に出力する。
積和演算部６は、入力前処理部１から列データｄ0〜ｄ3を受け、係数テーブル２から行データｃ3を受けると、積和演算部３と同様に、その列データｄ0〜ｄ3と行データｃ3との積和演算を実施し、その演算結果Ｓ3を可変丸め部７に出力する。
【００１７】
可変丸め部７は、積和演算部３〜６から積和演算の演算結果Ｓ0，Ｓ1，Ｓ2，Ｓ3を受けると、積和演算部３の演算結果Ｓ0に対する１ビットの右シフト処理（丸め処理）を実施し、丸め処理後の演算結果ｆ0をクリッピング処理部８に出力する。
一方、積和演算部４〜６の演算結果Ｓ1，Ｓ2，Ｓ3については、各演算結果Ｓ1，Ｓ2，Ｓ3に“１”をそれぞれ加算してから、１ビットの右シフト処理（丸め処理）を実施し、丸め処理後の演算結果ｆ1〜ｆ3をクリッピング処理部８に出力する。
【００１８】
クリッピング処理部８は、可変丸め部７から丸め処理後の演算結果ｆ0〜ｆ3を受けると、その演算結果ｆ0〜ｆ3が符号付き１６ビット整数の範囲（クリッピング範囲）を外れる場合には、その演算結果ｆ0〜ｆ3をクリッピング範囲内に収めるため、その演算結果ｆ0〜ｆ3がクリッピング範囲の最大値より大きければ、その演算結果ｆ0〜ｆ3をクリッピング範囲の最大値に置換するクリップ処理を実施する。また、可変丸め部７による丸め処理後の演算結果ｆ0〜ｆ3がクリッピング範囲の最小値より小さければ、その演算結果ｆ0〜ｆ3をクリッピング範囲の最小値に置換するクリップ処理を実施する。
【００１９】
出力処理部９は、クリッピング処理部８によるクリップ処理後の演算結果ｆ0〜ｆ3を格納し、クリップ処理後の演算結果をｆ0〜ｆ3の順番で外部出力する。
これにより、式（２）に示す４点逆変換アルゴリズムが実行されることになる。
【００２０】
以上で明らかなように、この実施の形態１によれば、入力前処理部１から出力された列データｄ0〜ｄ3と係数テーブル２から出力された行データｃ0〜ｃ3との積和演算を実施する積和演算部３〜６を設け、可変丸め部７が積和演算部３〜６における演算結果の行要素毎に、別々の丸め処理を実施するように構成したので、定数項ｅを適宜設定することで、多様な仕様の逆変換アルゴリズムを実行することができる効果を奏する。
【００２１】
実施の形態２．
図２はこの発明の実施の形態２による一次元の逆変換回路を示す構成図であり、図において、入力前処理部３１は入力データである列データｄ0〜ｄ7を順次入力して、その列データｄ0〜ｄ7を列単位に格納し、その列データｄ0，ｄ2，ｄ4，ｄ6を積和演算部１４〜１７に出力するとともに、その列データｄ1，ｄ3，ｄ5，ｄ7を積和演算部１８〜２１に出力する。なお、入力前処理部１１は入力前処理手段を構成している。
係数テーブル１２は予め第１の変換行列Ｃaを格納し、第１の変換行列Ｃaの行データｃa0〜ｃa3を積和演算部１４〜１７に出力する処理を実施する（変換行列Ｃaの行データｃa0〜ｃa3はベクトルであり、下記の式（４）を参照）。
係数テーブル１３は予め第２の変換行列Ｃbを格納し、第２の変換行列Ｃbの行データｃb0〜ｃb3を積和演算部１８〜２１に出力する処理を実施する（変換行列Ｃbの行データｃb0〜ｃb3はベクトルであり、下記の式（４）を参照）。
なお、係数テーブル１２，１３はテーブル手段を構成している。
【００２２】
積和演算部１４は入力前処理部１１から出力された列データｄ0，ｄ2，ｄ4，ｄ6と係数テーブル１２から出力された第１の変換行列Ｃaの行データｃa0との積和演算を実施する。
積和演算部１５は入力前処理部１１から出力された列データｄ0，ｄ2，ｄ4，ｄ6と係数テーブル１２から出力された第１の変換行列Ｃaの行データｃa1との積和演算を実施する。
積和演算部１６は入力前処理部１１から出力された列データｄ0，ｄ2，ｄ4，ｄ6と係数テーブル１２から出力された第１の変換行列Ｃaの行データｃa2との積和演算を実施する。
積和演算部１７は入力前処理部１１から出力された列データｄ0，ｄ2，ｄ4，ｄ6と係数テーブル１２から出力された第１の変換行列Ｃaの行データｃa3との積和演算を実施する。
なお、積和演算部１４〜１７は第１の積和演算手段を構成している。
【００２３】
積和演算部１８は入力前処理部１１から出力された列データｄ1，ｄ3，ｄ5，ｄ7と係数テーブル１３から出力された第２の変換行列Ｃbの行データｃb0との積和演算を実施する。
積和演算部１９は入力前処理部１１から出力された列データｄ1，ｄ3，ｄ5，ｄ7と係数テーブル１３から出力された第２の変換行列Ｃbの行データｃb1との積和演算を実施する。
積和演算部２０は入力前処理部１１から出力された列データｄ1，ｄ3，ｄ5，ｄ7と係数テーブル１３から出力された第２の変換行列Ｃbの行データｃb2との積和演算を実施する。
積和演算部２１は入力前処理部１１から出力された列データｄ1，ｄ3，ｄ5，ｄ7と係数テーブル１３から出力された第２の変換行列Ｃbの行データｃb3との積和演算を実施する。
なお、積和演算部１８〜２１は第２の積和演算手段を構成している。
【００２４】
後処理部２２は積和演算部１４〜１７の演算結果と積和演算部１８〜２１との加算処理又は減算処理を実施する。なお、後処理部２２は後処理手段を構成している。
可変丸め部２３は後処理部２２が加算処理又は減算処理を実施すると、その加算結果又は減算結果の行要素毎に、別々の丸め処理を実施する。なお、可変丸め部２３は丸め処理手段を構成している。
クリッピング処理部２４は可変丸め部２３による丸め処理後の演算結果ｆ0〜ｆ7を所定のクリッピング範囲内に収めるクリップ処理を実施する。なお、クリッピング処理部２４はクリッピング手段を構成している。
出力処理部２５はクリッピング処理部２４によるクリップ処理後の演算結果ｆ0〜ｆ7を格納し、その演算結果ｆ0〜ｆ7を外部出力する。
【００２５】
次に動作について説明する。
この実施の形態２による一次元逆変換回路にて実現可能な、８点逆変換アルゴリズムの一例を下記の式（４）に示す。
【数４】
0004405452.tif 000005
【００２６】
入力前処理部１１は、入力データである列データｄ0〜ｄ7を順次入力すると、その列データｄ0〜ｄ7を列単位に格納する。
そして、入力前処理部１１は、列データｄ0，ｄ2，ｄ4，ｄ6を積和演算部１４〜１７に出力し、列データｄ1，ｄ3，ｄ5，ｄ7を積和演算部１８〜２１に出力する。
【００２７】
係数テーブル１２は、予め第１の変換行列Ｃaを格納し、第１の変換行列Ｃaの第１行である行データｃa0を積和演算部１４に出力し、第１の変換行列Ｃaの第２行である行データｃa1を積和演算部１５に出力する。
また、第１の変換行列Ｃaの第３行である行データｃa2を積和演算部１６に出力し、第１の変換行列Ｃaの第４行である行データｃa3を積和演算部１７に出力する。
【００２８】
係数テーブル１３は、予め第２の変換行列Ｃbを格納し、第２の変換行列Ｃbの第１行である行データｃb0を積和演算部１８に出力し、第２の変換行列Ｃbの第２行である行データｃb1を積和演算部１９に出力する。
また、第２の変換行列Ｃbの第３行である行データｃb2を積和演算部２０に出力し、第２の変換行列Ｃbの第４行である行データｃb3を積和演算部２１に出力する。
【００２９】
積和演算部１４〜１７は、入力前処理部１１から列データｄ0，ｄ2，ｄ4，ｄ6を受け、係数テーブル１２から第１の変換行列Ｃaの行データｃai（ｉ＝０，２，４，６）を受けると、その列データｄ0，ｄ2，ｄ4，ｄ6と行データｃaiとの積和演算を実施し、その演算結果Ｓaiを後処理部２２に出力する。
Ｓai＝ｃai・｛ｄ0，ｄ2，ｄ4，ｄ6｝T                                （５）
ただし、ｉ＝０，１，２，３
【００３０】
積和演算部１８〜２１は、入力前処理部１１から列データｄ1，ｄ3，ｄ5，ｄ7を受け、係数テーブル１３から第２の変換行列Ｃbの行データｃbi（ｉ＝１，３，５，７）を受けると、その列データｄ1，ｄ3，ｄ5，ｄ7と行データｃbiとの積和演算を実施し、その演算結果Ｓbiを後処理部２２に出力する。
Ｓbi＝ｃbi・｛ｄ1，ｄ3，ｄ5，ｄ7｝T                                （６）
ただし、ｉ＝０，１，２，３
【００３１】
後処理部２２は、積和演算部１４〜１７の演算結果Ｓaiと積和演算部１８〜２１の演算結果Ｓbiとを入力すると、下記に示すように、積和演算部１４〜１７の演算結果Ｓaiと積和演算部１８〜２１の演算結果Ｓbiとの加算処理を実施するとともに、積和演算部１４〜１７の演算結果Ｓaiと積和演算部１８〜２１の演算結果Ｓbiとの減算処理を実施する。
Ｓai＋Ｓbi                                                        （７）
Ｓai−Ｓbi                                                        （８）
ただし、ｉ＝０，１，２，３
【００３２】
可変丸め部２３は後処理部２２から加算結果Ｓai＋Ｓbiと減算結果Ｓai−Ｓbiを受けると、下記の式（９）に示すように、その加算結果Ｓai＋Ｓbiと減算結果Ｓai−Ｓbiに、行要素毎に異なる定数項ｅ0〜ｅ3，ｅ7〜ｅ4をそれぞれ加算してから、ｖビットの右シフト処理（丸め処理）を実施し、丸め処理後の演算結果ｆ0〜ｆ3，ｆ7〜ｆ4をクリッピング処理部２４に出力する。
【数５】
0004405452.tif 000006
【００３３】
クリッピング処理部２４は、可変丸め部２３から丸め処理後の演算結果ｆ0〜ｆ3，ｆ7〜ｆ4を受けると、その演算結果ｆ0〜ｆ3，ｆ7〜ｆ4が符号付き１６ビット整数の範囲（クリッピング範囲）を外れる場合には、その演算結果ｆ0〜ｆ3，ｆ7〜ｆ4をクリッピング範囲内に収めるため、その演算結果ｆ0〜ｆ3，ｆ7〜ｆ4がクリッピング範囲の最大値より大きければ、その演算結果ｆ0〜ｆ3，ｆ7〜ｆ4をクリッピング範囲の最大値に置換するクリップ処理を実施する。また、可変丸め部２３による丸め処理後の演算結果ｆ0〜ｆ3，ｆ7〜ｆ4がクリッピング範囲の最小値より小さければ、その演算結果ｆ0〜ｆ3，ｆ7〜ｆ4をクリッピング範囲の最小値に置換するクリップ処理を実施する。
【００３４】
出力処理部２５は、クリッピング処理部８によるクリップ処理後の演算結果ｆ0〜ｆ3，ｆ7〜ｆ4を格納し、クリップ処理後の演算結果をｆ0〜ｆ7の順番に並び替えて外部に出力する。
これにより、式（４）に示す８点逆変換アルゴリズムが実行されることになる。
【００３５】
以上で明らかなように、この実施の形態２によれば、入力前処理部１１から出力された列データｄ0，ｄ2，ｄ4，ｄ6と係数テーブル１２から出力された第１の変換行列Ｃaの行データｃaiとの積和演算を実施する積和演算部１４〜１７と、入力前処理部１１から出力された列データｄ1，ｄ3，ｄ5，ｄ7と係数テーブル１３から出力された第２の変換行列Ｃbの行データｃbiとの積和演算を実施する積和演算部１８〜２１と、積和演算部１４〜１７の演算結果Ｓaiと積和演算部１８〜２１の演算結果Ｓbiとの加算処理又は減算処理を実施する後処理部２２とを設け、可変丸め部２３が後処理部２２における加算結果又は減算結果の行要素毎に、別々の丸め処理を実施するように構成したので、定数項ｅを適宜設定することで、多様な仕様の逆変換アルゴリズムを実行することができる効果を奏する。
【００３６】
なお、この実施の形態２では、後処理部２２が、積和演算部１４〜１７の演算結果Ｓaiと積和演算部１８〜２１の演算結果Ｓbiとの加算処理を実施するとともに、積和演算部１４〜１７の演算結果Ｓaiと積和演算部１８〜２１の演算結果Ｓbiとの減算処理を実施するものについて示したが、積和演算部１４〜１７の演算結果Ｓaiと積和演算部１８〜２１の演算結果Ｓbiとの加算処理、または、減算処理のいずれか一方を実施するようにしてもよい。
【００３７】
なお、この実施の形態２では、８点の一次元逆変換を実施するものについて示したが、例えば、下記の式（２０）に示すように、上記実施の形態１で示したような４点の一次元逆変換を２並列で同時に処理するようにしてもよい。
この場合は、係数テーブル１２と係数テーブル１３に同じ変換行列Ｃa（＝Ｃb）を格納し、入力前処理部３１では、入力データｄ0〜ｄ7のうち、ｄ0〜ｄ3を積和演算部１４〜１７に出力し、ｄ4〜ｄ7を積和演算部１８〜２１に出力する。後処理部２２では、積和演算部１４〜２１の演算結果をそのまま可変丸め部２３へ出力し、可変丸め部２３では、｛ｅ0，ｅ1，ｅ2，ｅ3｝＝｛ｅ4，ｅ5，ｅ6，ｅ7｝として丸め処理を実施することで、４点の一次元逆変換を２並列で実現することができる。
【数６】
0004405452.tif 000007
【００３８】
実施の形態３．
図３はこの発明の実施の形態３による一次元の逆変換回路を示す構成図であり、図において、図２と同一符号は同一または相当部分を示すので説明を省略する。
入力前処理部３１は入力データである列データｄ0〜ｄ7を順次入力して、その列データｄ0〜ｄ7を列単位に格納する一方、所定の列データｄに対する１ビット符号拡張付の右シフト処理（ｄ＞＞１）を実施するとともに、その右シフト処理を実施する前の列データｄと、その右シフト処理を実施した後の列データｄ’とを加算する加算処理を実施し、その右シフト処理を実施する前の列データｄ、その右シフト処理を実施した後の列データｄ’、または、その加算処理後の列データｄ＋ｄ’のいずれかを選択して積和演算部１４〜２１に出力する。なお、入力前処理部３１は入力前処理手段を構成している。
【００３９】
次に動作について説明する。
この実施の形態３による一次元逆変換回路にて実現可能な、８点逆変換アルゴリズムの一例を下記の式（１０）に示す。
【数７】
0004405452.tif 000008
【００４０】
入力前処理部３１は、入力データである列データｄ0〜ｄ7を順次入力すると、その列データｄ0〜ｄ7を列単位に格納する。
そして、入力前処理部３１は、所定の列データｄに対する１ビット符号拡張付の右シフト処理（ｄ＞＞１）を実施するとともに、その右シフト処理を実施する前の列データｄと、その右シフト処理を実施した後の列データｄ’とを加算する加算処理を実施し、その右シフト処理を実施する前の列データｄ、その右シフト処理を実施した後の列データｄ’、または、その加算処理後の列データｄ＋ｄ’のいずれかを選択して積和演算部１４〜２１に出力する。
【００４１】
ここでは、説明の便宜上、入力前処理部３１がｄa0＝｛ｄ0，ｄ2，ｄ4，（ｄ6＞＞１）｝を積和演算部１４に出力し、ｄa1＝｛ｄ0，（ｄ2＞＞１），ｄ4，ｄ6｝を積和演算部１５に出力し、ｄa2＝｛ｄ0，（ｄ2＞＞１），ｄ4，ｄ6｝を積和演算部１６に出力し、ｄa3＝｛ｄ0，ｄ2，ｄ4，（ｄ6＞＞１）｝を積和演算部１７に出力するものとする。
また、入力前処理部３１がｄb0＝｛ｄ1，ｄ3，ｄ5，（ｄ7＋（ｄ7＞＞１））｝を積和演算部１８に出力し、ｄb1＝｛ｄ1，（ｄ3＋（ｄ3＞＞１）），ｄ5，ｄ7｝を積和演算部１９に出力し、ｄb2＝｛ｄ1，（ｄ3＋（ｄ3＞＞１）），ｄ5，ｄ7｝を積和演算部２０に出力し、ｄb3＝｛ｄ1，ｄ3，ｄ5，（ｄ7＋（ｄ7＞＞１））｝を積和演算部２１に出力するものとする。
【００４２】
係数テーブル１２は、予め第１の変換行列Ｃaを格納し、第１の変換行列Ｃaの第１行である行データｃa0を積和演算部１４に出力し、第１の変換行列Ｃaの第２行である行データｃa1を積和演算部１５に出力する。
また、第１の変換行列Ｃaの第３行である行データｃa2を積和演算部１６に出力し、第１の変換行列Ｃaの第４行である行データｃa3を積和演算部１７に出力する。
【００４３】
係数テーブル１３は、予め第２の変換行列Ｃbを格納し、第２の変換行列Ｃbの第１行である行データｃb0を積和演算部１８に出力し、第２の変換行列Ｃbの第２行である行データｃb1を積和演算部１９に出力する。
また、第２の変換行列Ｃbの第３行である行データｃb2を積和演算部２０に出力し、第２の変換行列Ｃbの第４行である行データｃb3を積和演算部２１に出力する。
【００４４】
積和演算部１４〜１７は、入力前処理部３１から列データｄai（ｉ＝０，１，２，３）を受け、係数テーブル１２から第１の変換行列Ｃaの行データｃai（ｉ＝０，１，２，３）を受けると、その列データｄaiと行データｃaiとの積和演算を実施し、その演算結果Ｓaiを後処理部２２に出力する。
Ｓai＝ｃai・ｄaiT                                                （１１）
ただし、ｉ＝０，１，２，３
【００４５】
積和演算部１８〜２１は、入力前処理部３１から列データｄbi（ｉ＝０，１，２，３）を受け、係数テーブル１３から第２の変換行列Ｃbの行データｃbi（ｉ＝０，１，２，３）を受けると、その列データｄbiと行データｃbiとの積和演算を実施し、その演算結果Ｓbiを後処理部２２に出力する。
Ｓbi＝ｃbi・ｄbiT                                                （１２）
ただし、ｉ＝０，１，２，３
【００４６】
後処理部２２は、積和演算部１４〜１７の演算結果Ｓaiと積和演算部１８〜２１の演算結果Ｓbiとを入力すると、下記に示すように、積和演算部１４〜１７の演算結果Ｓaiと積和演算部１８〜２１の演算結果Ｓbiとの加算処理を実施するとともに、積和演算部１４〜１７の演算結果Ｓaiと積和演算部１８〜２１の演算結果Ｓbiとの減算処理を実施する。
Ｓai＋Ｓbi                                                        （１３）
Ｓai−Ｓbi                                                        （１４）
ただし、ｉ＝０，１，２，３
【００４７】
可変丸め部２３は後処理部２２から加算結果Ｓai＋Ｓbiと減算結果Ｓai−Ｓbiを受けると、下記の式（１５）に示すように、その加算結果Ｓai＋Ｓbiと減算結果Ｓai−Ｓbiに、行要素毎に異なる定数項ｅ0〜ｅ3，ｅ7〜ｅ4をそれぞれ加算してから、ｖビットの右シフト処理（丸め処理）を実施し、丸め処理後の演算結果ｆ0〜ｆ3，ｆ7〜ｆ4をクリッピング処理部２４に出力する。
【数８】
0004405452.tif 000009
【００４８】
クリッピング処理部２４は、可変丸め部２３から丸め処理後の演算結果ｆ0〜ｆ3，ｆ7〜ｆ4を受けると、上記実施の形態２と同様に、その演算結果ｆ0〜ｆ3，ｆ7〜ｆ4が符号付き１６ビット整数の範囲（クリッピング範囲）を外れる場合には、その演算結果ｆ0〜ｆ3，ｆ7〜ｆ4をクリッピング範囲内に収めるため、その演算結果ｆ0〜ｆ3，ｆ7〜ｆ4がクリッピング範囲の最大値より大きければ、その演算結果ｆ0〜ｆ3，ｆ7〜ｆ4をクリッピング範囲の最大値に置換するクリップ処理を実施する。また、可変丸め部２３による丸め処理後の演算結果ｆ0〜ｆ3，ｆ7〜ｆ4がクリッピング範囲の最小値より小さければ、その演算結果ｆ0〜ｆ3，ｆ7〜ｆ4をクリッピング範囲の最小値に置換するクリップ処理を実施する。
【００４９】
出力処理部２５は、上記実施の形態２と同様に、クリッピング処理部２４によるクリップ処理後の演算結果ｆ0〜ｆ3，ｆ7〜ｆ4を格納し、クリップ処理後の演算結果をｆ0〜ｆ7の順番に並び替えて外部に出力する。
これにより、式（１０）に示す８点逆変換アルゴリズムが実行されることになる。
【００５０】
以上で明らかなように、この実施の形態３によれば、入力前処理部３１が入力データである列データｄ0〜ｄ7を順次入力して、その列データｄ0〜ｄ7を列単位に格納すると、所定の列データｄに対する１ビット符号拡張付の右シフト処理（ｄ＞＞１）を実施するとともに、その右シフト処理を実施する前の列データｄと、その右シフト処理を実施した後の列データｄ’とを加算する加算処理を実施し、その右シフト処理を実施する前の列データｄ、その右シフト処理を実施した後の列データｄ’、または、その加算処理後の列データｄ＋ｄ’のいずれかを選択して積和演算部１４〜２１に出力するように構成したので、上記実施の形態２よりも更に、多様な仕様の逆変換アルゴリズムを実行することができる効果を奏する。
【００５１】
実施の形態４．
図４はこの発明の実施の形態４による一次元の逆変換回路を示す構成図であり、図において、図３と同一符号は同一または相当部分を示すので説明を省略する。
制御部３２は例えば逆変換演算の種別を示す動作種別情報を受信すると、その動作種別情報に応じて入力前処理部３１が選択する列データの種類、積和演算部１４〜２１が使用する変換行列の種別、後処理部２２における演算の種類及び有無、可変丸め部２３における丸め方法、クリッピング処理部２４におけるクリッピング範囲及び出力処理部２５における演算結果の出力順序などを制御する。なお、制御部３２は制御手段を構成している。
【００５２】
次に動作について説明する。
制御部３２は、例えば、式（２）の逆変換演算の実施を示唆する動作種別情報、または、式（１０）の逆変換演算の実施を示唆する動作種別情報を受信する。
制御部３２は、外部から動作種別情報を受信すると、その動作種別情報に応じて入力前処理部３１が選択する列データの種類、積和演算部１４〜２１が使用する変換行列の種別、後処理部２２における演算の種類及び有無、可変丸め部２３における丸め方法、クリッピング処理部２４におけるクリッピング範囲及び出力処理部２５における演算結果の出力順序などを制御する。
【００５３】
入力前処理部３１は、入力データである列データｄ0〜ｄ7を順次入力すると、その列データｄ0〜ｄ7を列単位に格納する。
入力前処理部３１は、制御部３２から式（２）の逆変換演算の実施を示唆された場合、図１の入力前処理部１と同様に、列データｄ0〜ｄ3をそれぞれ積和演算部１４〜１７に出力する。
入力前処理部３１は、制御部３２から式（１０）の逆変換演算の実施を示唆された場合、図３の入力前処理部３１と同様に、所定の列データｄに対する１ビット符号拡張付の右シフト処理（ｄ＞＞１）を実施するとともに、その右シフト処理を実施する前の列データｄと、その右シフト処理を実施した後の列データｄ’とを加算する加算処理を実施し、その右シフト処理を実施する前の列データｄ、その右シフト処理を実施した後の列データｄ’、または、その加算処理後の列データｄ＋ｄ’のいずれかを選択して積和演算部１４〜２１に出力する。
【００５４】
ここでは、説明の便宜上、入力前処理部３１がｄa0＝｛ｄ0，ｄ2，ｄ4，（ｄ6＞＞１）｝を積和演算部１４に出力し、ｄa1＝｛ｄ0，（ｄ2＞＞１），ｄ4，ｄ6｝を積和演算部１５に出力し、ｄa2＝｛ｄ0，（ｄ2＞＞１），ｄ4，ｄ6｝を積和演算部１６に出力し、ｄa3＝｛ｄ0，ｄ2，ｄ4，（ｄ6＞＞１）｝を積和演算部１７に出力するものとする。
また、入力前処理部３１がｄb0＝｛ｄ1，ｄ3，ｄ5，（ｄ7＋（ｄ7＞＞１））｝を積和演算部１８に出力し、ｄb1＝｛ｄ1，（ｄ3＋（ｄ3＞＞１）），ｄ5，ｄ7｝を積和演算部１９に出力し、ｄb2＝｛ｄ1，（ｄ3＋（ｄ3＞＞１）），ｄ5，ｄ7｝を積和演算部２０に出力し、ｄb3＝｛ｄ1，ｄ3，ｄ5，（ｄ7＋（ｄ7＞＞１））｝を積和演算部２１に出力するものとする。
【００５５】
係数テーブル１２は、制御部３２から式（２）の逆変換演算の実施を示唆された場合、第１の変換行列Ｃaの第１行である行データｃa0を積和演算部１４に出力し、第１の変換行列Ｃaの第２行である行データｃa1を積和演算部１５に出力する。
また、第１の変換行列Ｃaの第３行である行データｃa2を積和演算部１６に出力し、第１の変換行列Ｃaの第４行である行データｃa3を積和演算部１７に出力する。
係数テーブル１３は、制御部３２から式（２）の逆変換演算の実施を示唆された場合、第２の変換行列Ｃbの行データｃb0〜ｃb3を積和演算部１８〜２１に出力しない。
ここでは、説明の便宜上、係数テーブル１２が格納している第１の変換行列Ｃaが、図１の係数テーブル２が格納している変換行列Ｃと同じであるものとする。
【００５６】
係数テーブル１２は、制御部３２から式（１０）の逆変換演算の実施を示唆された場合にも、第１の変換行列Ｃaの第１行である行データｃa0を積和演算部１４に出力し、第１の変換行列Ｃaの第２行である行データｃa1を積和演算部１５に出力する。
また、第１の変換行列Ｃaの第３行である行データｃa2を積和演算部１６に出力し、第１の変換行列Ｃaの第４行である行データｃa3を積和演算部１７に出力する。
係数テーブル１３は、制御部３２から式（１０）の逆変換演算の実施を示唆された場合、第２の変換行列Ｃbの第１行である行データｃb0を積和演算部１８に出力し、第２の変換行列Ｃbの第２行である行データｃb1を積和演算部１９に出力する。
また、第２の変換行列Ｃbの第３行である行データｃb2を積和演算部２０に出力し、第２の変換行列Ｃbの第４行である行データｃb3を積和演算部２１に出力する。
【００５７】
積和演算部１４〜１７は、入力前処理部３１から列データｄai（ｉ＝０，１，２，３）を受け、係数テーブル１２から第１の変換行列Ｃaの行データｃai（ｉ＝０，１，２，３）を受けると、上記の式（１１）に示すように、その列データｄaiと行データｃaiとの積和演算を実施し、その演算結果Ｓaiを後処理部２２に出力する。
積和演算部１８〜２１は、入力前処理部３１から列データｄbi（ｉ＝０，１，２，３）を受け、係数テーブル１３から第２の変換行列Ｃbの行データｃbi（ｉ＝０，１，２，３）を受けると、上記の式（１２）に示すように、その列データｄbiと行データｃbiとの積和演算を実施し、その演算結果Ｓbiを後処理部２２に出力する。なお、積和演算部１８〜２１は、式（２）の逆変換演算を実施する場合、列データｄbiと行データｃbiを受けず、式（１０）の逆変換演算を実施する場合に限り、列データｄbiと行データｃbiを受ける。
【００５８】
後処理部２２は、制御部３２から式（２）の逆変換演算の実施を示唆された場合、積和演算部１４〜１７から積和演算の演算結果Ｓaiを受けると、その演算結果Ｓaiをそのまま可変丸め部２３に出力する。
後処理部２２は、制御部３２から式（１０）の逆変換演算の実施を示唆された場合、積和演算部１４〜１７の演算結果Ｓaiと積和演算部１８〜２１の演算結果Ｓbiとを入力すると、上記の式（１３）及び式（１４）に示すように、積和演算部１４〜１７の演算結果Ｓaiと積和演算部１８〜２１の演算結果Ｓbiとの加算処理を実施するとともに、積和演算部１４〜１７の演算結果Ｓaiと積和演算部１８〜２１の演算結果Ｓbiとの減算処理を実施する。
【００５９】
可変丸め部２３は、制御部３２から式（２）の逆変換演算の実施を示唆され、かつ、制御部３２から定数項ｅ＝｛０，１，１，１｝を受けると、図１の可変丸め部７と同様に、積和演算部１４の演算結果Ｓa0に対する１ビットの右シフト処理（丸め処理）を実施し、丸め処理後の演算結果ｆ0をクリッピング処理部２４に出力する。
一方、積和演算部１５〜１８の演算結果Ｓa1，Ｓa2，Ｓa3については、各演算結果Ｓa1，Ｓa2，Ｓa3に“１”をそれぞれ加算してから、１ビットの右シフト処理（丸め処理）を実施し、丸め処理後の演算結果ｆ1〜ｆ3をクリッピング処理部２４に出力する。
【００６０】
可変丸め部２３は、制御部３２から式（１０）の逆変換演算の実施を示唆され、かつ、制御部３２から定数項ｅ0〜ｆ7とシフト値ｖを受けると、図３の可変丸め部２３と同様に、上記の式（１５）に示すように、後処理部２２から出力された加算結果Ｓai＋Ｓbiと減算結果Ｓai−Ｓbiに、行要素毎に異なる定数項ｅ0〜ｅ3，ｅ7〜ｅ4をそれぞれ加算してから、ｖビットの右シフト処理（丸め処理）を実施し、丸め処理後の演算結果ｆ0〜ｆ3，ｆ7〜ｆ4をクリッピング処理部２４に出力する。
なお、可変丸め部２３は、制御部３２から従来の一般的な四捨五入の丸め方法の実施の示唆を受けた場合には、その丸め方法を実施する。
【００６１】
クリッピング処理部２４は、制御部３２から式（２）の逆変換演算の実施に対応する符号付き１６ビット整数の範囲（クリッピング範囲）を受けた場合、図１のクリッピング処理部８と同様に、可変丸め部２３から出力された丸め処理後の演算結果ｆ0〜ｆ3を当該クリッピング範囲内に収めるため、その演算結果ｆ0〜ｆ3がクリッピング範囲の最大値より大きければ、その演算結果ｆ0〜ｆ3をクリッピング範囲の最大値に置換するクリップ処理を実施する。また、可変丸め部２３から出力された丸め処理後の演算結果ｆ0〜ｆ3がクリッピング範囲の最小値より小さければ、その演算結果ｆ0〜ｆ3をクリッピング範囲の最小値に置換するクリップ処理を実施する。
【００６２】
クリッピング処理部２４は、制御部３２から式（１０）の逆変換演算の実施に対応する符号付き１６ビット整数の範囲（クリッピング範囲）を受けた場合、図３のクリッピング処理部２４と同様に、可変丸め部２３から出力された丸め処理後の演算結果ｆ0〜ｆ3，ｆ7〜ｆ4を当該クリッピング範囲内に収めるため、その演算結果ｆ0〜ｆ3，ｆ7〜ｆ4がクリッピング範囲の最大値より大きければ、その演算結果ｆ0〜ｆ3，ｆ7〜ｆ4をクリッピング範囲の最大値に置換するクリップ処理を実施する。また、可変丸め部２３から出力された丸め処理後の演算結果ｆ0〜ｆ3，ｆ7〜ｆ4がクリッピング範囲の最小値より小さければ、その演算結果ｆ0〜ｆ3，ｆ7〜ｆ4をクリッピング範囲の最小値に置換するクリップ処理を実施する。
【００６３】
出力処理部２５は、制御部３２から式（２）の逆変換演算の実施を示唆された場合、図１の出力処理部９と同様に、クリッピング処理部２４によるクリップ処理後の演算結果ｆ0〜ｆ3を格納し、クリップ処理後の演算結果をｆ0〜ｆ3の順番で外部出力する。
これにより、式（２）に示す４点逆変換アルゴリズムが実行されることになる。
【００６４】
出力処理部２５は、制御部３２から式（１０）の逆変換演算の実施を示唆された場合、図３の出力処理部２５と同様に、クリッピング処理部２４によるクリップ処理後の演算結果ｆ0〜ｆ3，ｆ7〜ｆ4を格納し、クリップ処理後の演算結果をｆ0〜ｆ7の順番に並び替えて外部に出力する。
これにより、式（１０）に示す８点逆変換アルゴリズムが実行されることになる。
【００６５】
以上で明らかなように、この実施の形態４によれば、入力前処理部３１が選択する列データの種類、積和演算部１４〜２１が使用する変換行列の種別、後処理部２２における演算の種類及び有無、可変丸め部２３における丸め方法、クリッピング処理部２４におけるクリッピング範囲及び出力処理部２５における演算結果の出力順序などを制御するように構成したので、一つの一次元逆変換回路で、複数種別の一次元の逆変換演算を実現することができる効果を奏する。
【００６６】
なお、この実施の形態４では、式（２）の逆変換演算を実施する場合、積和演算部１８〜２１が列データｄbiと行データｃbiを受けず、式（１０）の逆変換演算を実施する場合に限り、列データｄbiと行データｃbiを受けるものについて示したが、上記実施の形態２で示したように、式（２）の逆変換演算を実施する場合でも、積和演算部１８〜２１が列データｄbiと行データｃbiを受けて動作することにより、積和演算部１４〜１７と積和演算部１８〜２１が並列して式（２）の逆変換演算を実施するようにしてもよい。
【００６７】
実施の形態５．
上記実施の形態１〜４では、一次元の逆変換を実施する逆変換回路について示したが、例えば、非特許文献１に記載されているように、上記実施の形態１〜４における一次元逆変換回路を２つ用意し、２つの一次元逆変換回路と、行列転置を行うためのメモリーとを結合することにより、二次元の逆変換回路を構成するようにしてもよい。
なお、二次元の逆変換回路においては、一方の一次元逆変換回路が受信する動作種別情報と、他方の一次元逆変換回路が受信する動作種別情報とは異なっていてもよい。
また、上記実施の形態１〜４では、クリッピング範囲の例として１６ビット整数の範囲を示したが、クリッピング範囲の最大値と最小値は任意の値を設定できるものとする。
【００６８】
実施の形態６．
上記実施の形態１〜４における一次元逆変換回路の積和演算部３等は、単純に乗算器と累算器を用いて構成することが可能であるが、別の構成方法として、非特許文献１に示されている“ｄｉｓｔｒｉｂｕｔｅｄ  ａｒｉｔｈｍｅｔｉｃアルゴリズム”に従った構成方法も可能である。
この場合、予め部分和を係数テーブル２等に格納しておき、入力前処理部１等から出力される列データをビット分解して積和演算部３等に供給し、積和演算部３等では、ビット分解された列データに対応する部分和を係数テーブル２等から取得し、ビット位置に対応するシフトを部分和に施して累算することにより、積和演算結果を取得する。
【００６９】
以下、図１の一次元逆変換回路の積和演算部３〜６が“ｄｉｓｔｒｉｂｕｔｅｄ  ａｒｉｔｈｍｅｔｉｃアルゴリズム”を実行する場合の演算方法と動作を説明する。
入力前処理部１は、入力データである列データｄ0〜ｄ3を順次入力すると、上記実施の形態１と同様に、その列データｄ0〜ｄ3を列単位に格納するが、その列データｄk（ｋ＝０，１，２，３）のビット幅をＮビット、その列データｄkを２の補数で表現すると、下記の式（１６）のようになる。
【数９】
0004405452.tif 000010
入力前処理部１は、４つの列データｄkを１ビットずつまとめた４ビットの値ｂnをＬＳＢ（ｎ＝Ｎ−１）から順番にＭＳＢ（ｎ＝０）まで出力する。
ｂn＝｛ｂ0n，ｂ1n，ｂ2n，ｂ3n｝
【００７０】
一方、係数テーブル２には、下記の式（１７）に示すように、予め、係数｛ｃ0，ｃ1，ｃ2，ｃ3｝についての部分和Ｐ（ｉ0，ｉ1，ｉ2，ｉ3，ｎ）が格納されている。
【数１０】
0004405452.tif 000011
【００７１】
積和演算部３〜６は、入力前処理部１から４ビットの値ｂnを受けると、係数テーブル２から４ビットの値ｂnに対応する部分和Ｐ（ｂ0n，ｂ1n，ｂ2n，ｂ3n，ｎ）を取得する。
積和演算部３〜６は、部分和Ｐ（ｂ0n，ｂ1n，ｂ2n，ｂ3n，ｎ）を取得すると、ビット位置ｎに対応するシフトを実施し、下記の式（１８）に示すように、全ビット位置（Ｎ−１〜）について累算して演算結果ｓを取得する。
【数１１】
0004405452.tif 000012
【００７２】
なお、積和演算部３〜６の演算結果ｓは、入力データである列データ｛ｄ0，ｄ1，ｄ2，ｄ3｝と、係数テーブル２から出力される行データ｛ｃ0，ｃ1，ｃ2，ｃ3｝との積和演算の演算結果ｓ’に等しいことは明らかである。
【数１２】
0004405452.tif 000013
【図面の簡単な説明】
【００７３】
【図１】この発明の実施の形態１による一次元の逆変換回路を示す構成図である。
【図２】この発明の実施の形態２による一次元の逆変換回路を示す構成図である。
【図３】この発明の実施の形態３による一次元の逆変換回路を示す構成図である。
【図４】この発明の実施の形態４による一次元の逆変換回路を示す構成図である。
【符号の説明】
【００７４】
１  入力前処理部（入力前処理手段）、２  係数テーブル（テーブル手段）、３〜６  積和演算部（積和演算手段）、７  可変丸め部（丸め処理手段）、８  クリッピング処理部（クリッピング手段）、９  出力処理部、１１  入力前処理部（入力前処理手段）、１２，１３  係数テーブル（テーブル手段）、  １４〜１７  積和演算部（第１の積和演算手段）、１８〜２１  積和演算部（第２の積和演算手段）、２２  後処理部（後処理手段）、２３  可変丸め部（丸め処理手段）、２４  クリッピング処理部（クリッピング手段）、２５  出力処理部、３１  入力前処理部（入力前処理手段）、３２  制御部（制御手段）。
【図１】
0004405452.tif 000014
【図２】
0004405452.tif 000015
【図３】
0004405452.tif 000016
【図４】
0004405452.tif 000017