(57)【要約】【課題】アクセスするデータのインデックス計算が煩雑にならず、制御処理も単純で済み、ハードウェアで実現する場合には規模が小さく、単純な設計が行え、実装上の誤りの混入する可能性も低い演算装置および演算方法を提供する。【解決課題】メモリ１１と処理部１２を有し、メモリ１１は、処理部１２の入力データとしてのＭ種類の演算のためのデータと、Ｌ種類の係数データを格納しており、処理部１２の演算結果が書き戻され、処理部１２は、メモリ１１から読み出したＭ種類の異なる入力データＤＩＮとＬ種類の係数データＣＩＮを入力とし、Ｍ種類の出力データＤＯＵＴを出力する基本構造を使って演算可能な処理を複数回繰り返し、繰り返し毎に演算結果をメモリ１１に書き戻し、処理後の一部のデータに対してポスト処理を行う。【選択図】      図１
2005322175.tif 000002
【特許請求の範囲】
【請求項１】
Ｎ点のＤＣＴ演算を行う演算装置であって、
Ｍ種類の演算のためのデータと、Ｌ種類の係数データを格納しており、演算結果が書き戻されるメモリと、
上記メモリから読み出したＭ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する演算構造を使って演算可能な処理を複数回繰り返し、繰り返し毎に演算結果を上記メモリに書き戻し、処理後の一部のデータに対してポスト演算処理を行う処理部と
を有する演算装置。
【請求項２】
上記処理部は、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御手段を含む
請求項１記載の演算装置。
【請求項３】
上記処理部は、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項１記載の演算装置。
【請求項４】
上記処理部は、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項２記載の演算装置。
【請求項５】
Ｍが４であり、Ｌが２であり、
上記処理部は、入力として第１の入力データ、第２の入力データ、第３の入力データ、第４の入力データと第１の係数データ、第２の係数データを有し、演算結果を第１の出力データ、第２の出力データ、第３の出力データ、および第４の出力データとして上記メモリに出力するＤＣＴ演算構造を含み、当該ＤＣＴ演算構造は、
上記第１の入力データと上記第２の入力データに対して第１の２項演算を行い、当該演算結果を上記第１の出力データとして上記メモリに出力する第１の演算経路部と、
上記第３の入力と上記第４の入力データに対して第２の２項演算を行い、当該演算結果を上記第３の出力データとして上記メモリに出力する第２の演算経路部と、
上記第１の入力データと上記第２の入力データに対して第３の２項演算を行い、当該演算結果を第１の中間結果として出力する第３の演算経路部と、
上記第３の入力データと上記第４の入力データに対して第４の２項演算を行い、当該演算結果を第２の中間結果として出力する第４の演算経路部と、
上記第４の演算経路部による第２の中間結果と上記第１の係数データに対して第５の２項演算を行い、当該演算結果を第３の中間結果として出力する第５の演算経路部と、
上記第３の演算経路部による第１の中間結果と上記第２の係数データに対して第６の２項演算を行い、当該演算結果を第４の中間結果として出力する第６の演算経路部と、
上記第３の演算経路部による第１の中間結果と上記第１の係数データに対して第７の２項演算を行い、当該演算結果を第５の中間結果として出力する第７の演算経路部と、
上記第４の演算経路部による第２の中間結果と上記第２の係数データに対して第８の２項演算を行い、当該演算結果を第６の中間結果として出力する第８の演算経路部と、
上記第５の演算経路部による第３の中間結果と上記第６の演算経路部による第４の中間結果に対して第９の２項演算を行い、当該演算結果を上記第２の出力データとして上記メモリに出力する第９の演算経路部と、
上記第７の演算経路部による第５の中間結果と上記第８の演算経路部による第６の中間結果に対して第１０の２項演算を行い、当該演算結果を上記第４の出力データとして上記メモリに出力する第１０の演算経路部と、を有する
請求項１記載の演算装置。
【請求項６】
上記処理部は、ポスト演算処理において、第１の入力データ、第２の入力データ、および所定の係数データから第１の出力データおよび第２の出力データを計算するポスト演算構造を含み、当該ポスト演算構造は、
上記第１の入力データと上記第２の入力データに対して第１１の２項演算を行い、当該演算結果を第１の中間データとして出力する第１１の演算経路部と、
上記第１の入力データと上記第２の入力データに対して第１２の２項演算を行い、当該演算結果を第２の中間データとして出力する第１２の演算経路部と、
上記第１１の演算経路部による第１の中間データと上記所定の係数データに対して第１３の２項演算を行い、当該演算結果を上記第１の出力データとして上記メモリに出力する第１３の演算経路部と、
上記第１２の演算経路部による第２の中間データと上記所定の係数データに対して第１４の２項演算を行い、当該演算結果を上記第２のデータとして上記メモリ出力する第１４の演算経路部と、を有する
請求項５記載の演算装置。
【請求項７】
上記処理部におけるＤＣＴ演算において、第１の２項演算が加算であり、第２の２項演算が条件により加算と減算を切り替える演算であり、第３の項演算３が減算であり、第４の２項演算が一方の入力の符号反転をして条件により加算と減算を切り替える演算であり、
第５の２項演算、第６の２項演算、第７の２項演算、および第８の２項演算が乗算であり、
第９の２項演算が減算であり、第１０の２項演算が加算である
項求項５記載の演算装置。
【請求項８】
上記処理部におけるＤＣＴ演算において、第１の２項演算が加算であり、第２の２項演算が条件により加算と減算を切り替える演算であり、第３の項演算３が減算であり、第４の２項演算が一方の入力の符号反転をして条件により加算と減算を切り替える演算であり、
第５の２項演算、第６の２項演算、第７の２項演算、および第８の２項演算が乗算であり、
第９の２項演算が減算であり、第１０の２項演算が加算であり、
上記処理部におけるポスト演算処理において、第１１の２項演算が加算であり、第１２の２項演算２が減算であり、第１３の２項演算および第１４の２項演算が乗算である
請求項６記載の演算装置。
【請求項９】
上記処理部は、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御手段を含み、
上記処理部は、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項５記載の演算装置。
【請求項１０】
Ｎ点のＩＤＣＴ演算を行う演算装置であって、
Ｍ種類の演算のためのデータと、Ｌ種類の係数データを格納しており、処理部２２の演算結果が書き戻されるメモリと、
上記メモリから読み出した演算前の一部のデータについてプリ処理を行い、上記メモリから読み出したＭ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する演算構造を使って演算可能な処理を複数回繰り返してＩＤＣＴ演算を行い、演算結果を上記メモリに書き戻す処理部と
を有する演算装置。
【請求項１１】
上記処理部は、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御手段を含む
請求項１０記載の演算装置。
【請求項１２】
上記処理部は、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項１０記載の演算装置。
【請求項１３】
上記処理部は、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項１１記載の演算装置。
【請求項１４】
Ｍが４であり、Ｌが２であり、
上記処理部は、入力として第１の入力データ、第２の入力データ、第３の入力データ、第４の入力データと第１の係数データ、第２の係数データを有し、演算結果を第１の出力データ、第２の出力データ、第３の出力データ、および第４の出力データとして上記メモリに出力するＩＤＣＴ演算構造を含み、当該ＩＤＣＴ演算構造は、
上記第２の入力データと上記第１の係数データに対して第１の２項演算を行い、当該演算結果を上記第１の中間結果として出力する第１の演算経路部と、
上記第４の入力データと上記第２の係数データに対して第２の２項演算を行い、当該演算結果を上記第２の中間結果として出力する第２の演算経路部と、
上記第４の入力データと上記第１の係数データに対して第３の２項演算を行い、当該演算結果を上記第３の中間結果として出力する第３の演算経路部と、
上記第２の入力データと上記第２の係数データに対して第４の２項演算を行い、当該演算結果を上記第４の中間結果として出力する第４の演算経路部と、
上記第１の演算経路部による第１の中間結果と上記第２の演算経路部による第２の中間結果に対して第５の２項演算を行い、当該演算結果を第５の中間結果として出力する第５の演算経路部と、
上記第３の演算経路部による第３の中間結果と上記第４の演算経路部による第４の中間結果に対して第６の２項演算を行い、当該演算結果を第６の中間結果として出力する第６の演算経路部と、
上記第１の入力データと上記第５の演算経路部による第５の中間結果に対して第７の２項演算を行い、当該演算結果を上記第１の出力データとして上記メモリに出力する第７の演算経路部と、
上記第１の入力データと上記第５の演算経路部による第５の中間結果に対して第８の２項演算を行い、当該演算結果を上記第２の出力データとして上記メモリに出力する第８の演算経路部と、
上記第３の入力データと上記第６の演算経路部による第６の中間結果に対して第９の２項演算を行い、当該演算結果を上記第３の出力データとして上記メモリに出力する第９の演算経路部と、
上記第３の入力データと上記第６の演算経路部による第６の中間結果に対して第１０の２項演算を行い、当該演算結果を上記第４の出力データとして上記メモリに出力する第１０の演算経路部と、を有する
請求項１０記載の演算装置。
【請求項１５】
上記処理部は、プリ演算処理において、第１の入力データ、第２の入力データ、および所定の係数データから第１の出力データおよび第２の出力データを計算するプリ演算構造を含み、当該プリ演算構造は、
上記第１の入力データと上記所定の係数データに対して第１１の２項演算を行い、当該演算結果を第１の中間データとして出力する第１１の演算経路部と、
上記第２の入力データと上記所定の係数データに対して第１２の２項演算を行い、当該演算結果を第２の中間データとして出力する第１２の演算経路部と、
上記第１１の演算経路部による第１の中間データと上記第１２の演算経路部による第２の中間データに対して第１３の２項演算を行い、当該演算結果を上記第１の出力データとして上記メモリに出力する第１３の演算経路部と、
上記第１１の演算経路部による第１の中間データと上記第１２の演算経路部による第２の中間データに対して第１４の２項演算を行い、当該演算結果を上記第２のデータとして上記メモリ出力する第１４の演算経路部と、を有する
請求項１４記載の演算装置。
【請求項１６】
上記処理部におけるＩＤＣＴ演算において、第１の２項演算、第２の２項演算、第３の２項演算、および第４の２項演算が乗算であり、
第５の２項演算が加算であり、第６の項演算が減算であり、第７の２項演算が加算であり、第８の２項演算が減算であり、
第９の２項演算が減算であり、第１０の２項演算が条件により一方の入力の符号反転をして、加算と減算を切り替える演算である
請求項１４記載の演算装置。
【請求項１７】
上記処理部におけるプリ演算において、第１１の２項演算、および第１２の２項演算が乗算であり、第１３の２項演算が加算であり、第１４の２項演算が減算であり、
上記処理部におけるＩＤＣＴ演算において、第１の２項演算、第２の２項演算、第３の２項演算、および第４の２項演算が乗算であり、
第５の２項演算が加算であり、第６の項演算が減算であり、第７の２項演算が加算であり、第８の２項演算が減算であり、
第９の２項演算が減算であり、第１０の２項演算が条件により一方の入力の符号反転をして、加算と減算を切り替える演算である
請求項１５記載の演算装置。
【請求項１８】
上記処理部は、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御手段を含み、
上記処理部は、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項１４記載の演算装置。
【請求項１９】
構成情報に基づき演算構造を再構成してＮ点のＤＣＴ演算およびＩＤＣＴ演算を行う再構成可能な演算装置であって、
Ｍ種類の演算のためのデータと、Ｌ種類の係数データを格納しており、演算結果が書き戻されるメモリと、
ＤＣＴ演算モード時には、上記演算構造をＤＣＴ演算モードに応じて再構成して、上記メモリから読み出したＭ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する上記再構成した演算構造を使って演算可能な処理を複数回繰り返し、繰り返し毎に演算結果を上記メモリに書き戻し、ＤＣＴ演算処理後に上記演算構造を再構成して一部のデータに対してポスト演算処理を行い、ＩＤＣＴ演算モード時には、上記演算構造を再構成して上記メモリから読み出した演算前の一部のデータについてプリ処理を行い、当該プリ処理後に上記演算構造をＩＤＣＴ演算モードに応じて再構成して、上記メモリから読み出したＭ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する演算構造を使って演算可能な処理を複数回繰り返してＩＤＣＴ演算を行い、演算結果を上記メモリに書き戻す処理部と
を有する演算装置。
【請求項２０】
上記処理部は、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御手段を含み、
上記処理部は、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項５記載の演算装置。
【請求項２１】
Ｍが４であり、Ｌが２であり、
上記処理部は、入力として第１の入力データ、第２の入力データ、第３の入力データ、第４の入力データと第１の係数データ、第２の係数データを有し、演算結果を第１の出力データ、第２の出力データ、第３の出力データ、および第４の出力データとして上記メモリに出力するＤＣＴ演算構造に再構成し、当該再構成後のＤＣＴ演算構造は、
上記第１の入力データと上記第２の入力データに対して第１の２項演算を行い、当該演算結果を上記第１の出力データとして上記メモリに出力する第１の演算経路部と、
上記第３の入力と上記第４の入力データに対して第２の２項演算を行い、当該演算結果を上記第３の出力データとして上記メモリに出力する第２の演算経路部と、
上記第１の入力データと上記第２の入力データに対して第３の２項演算を行い、当該演算結果を第１の中間結果として出力する第３の演算経路部と、
上記第３の入力データと上記第４の入力データに対して第４の２項演算を行い、当該演算結果を第２の中間結果として出力する第４の演算経路部と、
上記第４の演算経路部による第２の中間結果と上記第１の係数データに対して第５の２項演算を行い、当該演算結果を第３の中間結果として出力する第５の演算経路部と、
上記第３の演算経路部による第１の中間結果と上記第２の係数データに対して第６の２項演算を行い、当該演算結果を第４の中間結果として出力する第６の演算経路部と、
上記第３の演算経路部による第１の中間結果と上記第１の係数データに対して第７の２項演算を行い、当該演算結果を第５の中間結果として出力する第７の演算経路部と、
上記第４の演算経路部による第２の中間結果と上記第２の係数データに対して第８の２項演算を行い、当該演算結果を第６の中間結果として出力する第８の演算経路部と、
上記第５の演算経路部による第３の中間結果と上記第６の演算経路部による第４の中間結果に対して第９の２項演算を行い、当該演算結果を上記第２の出力データとして上記メモリに出力する第９の演算経路部と、
上記第７の演算経路部による第５の中間結果と上記第８の演算経路部による第６の中間結果に対して第１０の２項演算を行い、当該演算結果を上記第４の出力データとして上記メモリに出力する第１０の演算経路部と、を有すし、
上記処理部は、ポスト演算処理において、第１の入力データ、第２の入力データ、および所定の係数データから第１の出力データおよび第２の出力データを計算するポスト演算構造に再構成し、当該再構成後のポスト演算構造は、
上記第１の入力データと上記第２の入力データに対して第１１の２項演算を行い、当該演算結果を第１の中間データとして出力する第１１の演算経路部と、
上記第１の入力データと上記第２の入力データに対して第１２の２項演算を行い、当該演算結果を第２の中間データとして出力する第１２の演算経路部と、
上記第１１の演算経路部による第１の中間データと上記所定の係数データに対して第１３の２項演算を行い、当該演算結果を上記第１の出力データとして上記メモリに出力する第１３の演算経路部と、
上記第１２の演算経路部による第２の中間データと上記所定の係数データに対して第１４の２項演算を行い、当該演算結果を上記第２のデータとして上記メモリ出力する第１４の演算経路部と、を有する
請求項１９記載の演算装置。
【請求項２２】
上記処理部におけるＤＣＴ演算において、第１の２項演算が加算であり、第２の２項演算が条件により加算と減算を切り替える演算であり、第３の項演算３が減算であり、第４の２項演算が一方の入力の符号反転をして条件により加算と減算を切り替える演算であり、
第５の２項演算、第６の２項演算、第７の２項演算、および第８の２項演算が乗算であり、
第９の２項演算が減算であり、第１０の２項演算が加算であり、
上記処理部におけるポスト演算において、第１１の２項演算が加算であり、第１２の２項演算２が減算であり、第１３の２項演算および第１４の２項演算が乗算である
請求項２１記載の演算装置。
【請求項２３】
Ｍが４であり、Ｌが２であり、
上記処理部は、入力として第１の入力データ、第２の入力データ、第３の入力データ、第４の入力データと第１の係数データ、第２の係数データを有し、演算結果を第１の出力データ、第２の出力データ、第３の出力データ、および第４の出力データとして上記メモリに出力するＩＤＣＴ演算構造に再構成し、当該再構成後のＩＤＣＴ演算構造は、
上記第２の入力データと上記第１の係数データに対して第１の２項演算を行い、当該演算結果を上記第１の中間結果として出力する第１の演算経路部と、
上記第４の入力データと上記第２の係数データに対して第２の２項演算を行い、当該演算結果を上記第２の中間結果として出力する第２の演算経路部と、
上記第４の入力データと上記第１の係数データに対して第３の２項演算を行い、当該演算結果を上記第３の中間結果として出力する第３の演算経路部と、
上記第２の入力データと上記第２の係数データに対して第４の２項演算を行い、当該演算結果を上記第４の中間結果として出力する第４の演算経路部と、
上記第１の演算経路部による第１の中間結果と上記第２の演算経路部による第２の中間結果に対して第５の２項演算を行い、当該演算結果を第５の中間結果として出力する第５の演算経路部と、
上記第３の演算経路部による第３の中間結果と上記第４の演算経路部による第４の中間結果に対して第６の２項演算を行い、当該演算結果を第６の中間結果として出力する第６の演算経路部と、
上記第１の入力データと上記第５の演算経路部による第５の中間結果に対して第７の２項演算を行い、当該演算結果を上記第１の出力データとして上記メモリに出力する第７の演算経路部と、
上記第１の入力データと上記第５の演算経路部による第５の中間結果に対して第８の２項演算を行い、当該演算結果を上記第２の出力データとして上記メモリに出力する第８の演算経路部と、
上記第３の入力データと上記第６の演算経路部による第６の中間結果に対して第９の２項演算を行い、当該演算結果を上記第３の出力データとして上記メモリに出力する第９の演算経路部と、
上記第３の入力データと上記第６の演算経路部による第６の中間結果に対して第１０の２項演算を行い、当該演算結果を上記第４の出力データとして上記メモリに出力する第１０の演算経路部と、を有し、
上記処理部は、プリ演算処理において、第１の入力データ、第２の入力データ、および所定の係数データから第１の出力データおよび第２の出力データを計算するプリ演算構造に再構成し、当該再構成後のプリ演算構造は、
上記第１の入力データと上記所定の係数データに対して第１１の２項演算を行い、当該演算結果を第１の中間データとして出力する第１１の演算経路部と、
上記第２の入力データと上記所定の係数データに対して第１２の２項演算を行い、当該演算結果を第２の中間データとして出力する第１２の演算経路部と、
上記第１１の演算経路部による第１の中間データと上記第１２の演算経路部による第２の中間データに対して第１３の２項演算を行い、当該演算結果を上記第１の出力データとして上記メモリに出力する第１３の演算経路部と、
上記第１１の演算経路部による第１の中間データと上記第１２の演算経路部による第２の中間データに対して第１４の２項演算を行い、当該演算結果を上記第２のデータとして上記メモリ出力する第１４の演算経路部と、を有する
請求項１９記載の演算装置。
【請求項２４】
上記処理部におけるプリ演算において、第１１の２項演算、および第１２の２項演算が乗算であり、第１３の２項演算が加算であり、第１４の２項演算が減算であり、
上記処理部におけるＩＤＣＴ演算において、第１の２項演算、第２の２項演算、第３の２項演算、および第４の２項演算が乗算であり、
第５の２項演算が加算であり、第６の項演算が減算であり、第７の２項演算が加算であり、第８の２項演算が減算であり、
第９の２項演算が減算であり、第１０の２項演算が条件により一方の入力の符号反転をして、加算と減算を切り替える演算である
請求項２３記載の演算装置。
【請求項２５】
Ｎ点のＤＣＴ演算を行う演算方法であって、
Ｍ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する演算構造を使って演算可能な処理を複数回繰り返してＤＣＴ演算処理を行い、
処理後の一部のデータに対してポスト演算処理を行う
を有する演算方法。
【請求項２６】
上記ＤＣＴ演算処理は、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御構造を含む
請求項２５記載の演算方法。
【請求項２７】
上記ＤＣＴ演算処理において、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項２５記載の演算方法。
【請求項２８】
上記ＤＣＴ演算処理において、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項２６記載の演算方法。
【請求項２９】
Ｍが４であり、Ｌが２であり、
上記ＤＣＴ演算処理において、入力として第１の入力データ、第２の入力データ、第３の入力データ、第４の入力データと第１の係数データ、第２の係数データを有し、演算結果を第１の出力データ、第２の出力データ、第３の出力データ、および第４の出力データとして上記メモリに出力するＤＣＴ演算処理を含み、当該ＤＣＴ演算処理は、
上記第１の入力データと上記第２の入力データに対して第１の２項演算を行い、当該演算結果を上記第１の出力データする第１の演算ステップと、
上記第３の入力と上記第４の入力データに対して第２の２項演算を行い、当該演算結果を上記第３の出力データする第２の演算ステップと、
上記第１の入力データと上記第２の入力データに対して第３の２項演算を行い、当該演算結果を第１の中間結果とする第３の演算ステップと、
上記第３の入力データと上記第４の入力データに対して第４の２項演算を行い、当該演算結果を第２の中間結果とする第４の演算ステップと、
上記第４の演算ステップによる第２の中間結果と上記第１の係数データに対して第５の２項演算を行い、当該演算結果を第３の中間結果とする第５の演算ステップと、
上記第３の演算ステップによる第１の中間結果と上記第２の係数データに対して第６の２項演算を行い、当該演算結果を第４の中間結果とする第６の演算ステップと、
上記第３の演算ステップによる第１の中間結果と上記第１の係数データに対して第７の２項演算を行い、当該演算結果を第５の中間結果とする第７の演算ステップと、
上記第４の演算ステップによる第２の中間結果と上記第２の係数データに対して第８の２項演算を行い、当該演算結果を第６の中間結果とする第８の演算ステップと、
上記第５の演算ステップによる第３の中間結果と上記第６の演算ステップによる第４の中間結果に対して第９の２項演算を行い、当該演算結果を上記第２の出力データとする第９の演算ステップと、
上記第７の演算ステップによる第５の中間結果と上記第８の演算ステップによる第６の中間結果に対して第１０の２項演算を行い、当該演算結果を上記第４の出力データとする第１０の演算ステップと、を有する
請求項２５記載の演算方法。
【請求項３０】
上記ポスト演算処理において、第１の入力データ、第２の入力データ、および所定の係数データから第１の出力データおよび第２の出力データを計算するポスト演算処理を含み、当該ポスト演算処理は、
上記第１の入力データと上記第２の入力データに対して第１１の２項演算を行い、当該演算結果を第１の中間データとする第１１の演算ステップと、
上記第１の入力データと上記第２の入力データに対して第１２の２項演算を行い、当該演算結果を第２の中間データとする第１２の演算ステップと、
上記第１１の演算ステップによる第１の中間データと上記所定の係数データに対して第１３の２項演算を行い、当該演算結果を上記第１の出力データとする第１３の演算ステップと、
上記第１２の演算ステップによる第２の中間データと上記所定の係数データに対して第１４の２項演算を行い、当該演算結果を上記第２のデータとする第１４の演算ステップと、を有する
請求項２９記載の演算方法。
【請求項３１】
上記ＤＣＴ演算処理において、第１の２項演算が加算であり、第２の２項演算が条件により加算と減算を切り替える演算であり、第３の項演算３が減算であり、第４の２項演算が一方の入力の符号反転をして条件により加算と減算を切り替える演算であり、
第５の２項演算、第６の２項演算、第７の２項演算、および第８の２項演算が乗算であり、
第９の２項演算が減算であり、第１０の２項演算が加算である
項求項２９記載の演算方法。
【請求項３２】
上記ＤＣＴ演算処理において、第１の２項演算が加算であり、第２の２項演算が条件により加算と減算を切り替える演算であり、第３の項演算３が減算であり、第４の２項演算が一方の入力の符号反転をして条件により加算と減算を切り替える演算であり、
第５の２項演算、第６の２項演算、第７の２項演算、および第８の２項演算が乗算であり、
第９の２項演算が減算であり、第１０の２項演算が加算であり、
上記ポスト演算処理において、第１１の２項演算が加算であり、第１２の２項演算２が減算であり、第１３の２項演算および第１４の２項演算が乗算である
請求項３０記載の演算方法。
【請求項３３】
上記ＤＣＴ演算処理において、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御構造を含み、
上記ＤＣＴ演算処理において、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項２９記載の演算方法。
【請求項３４】
Ｎ点のＩＤＣＴ演算を行う演算方法であって、
演算前の一部のデータについてプリ演算処理を行い、
Ｍ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する演算構造を使って演算可能な処理を複数回繰り返してＩＤＣＴ演算を行う
演算方法。
【請求項３５】
上記ＩＤＣＴ演算処理においては、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御構造を含む
請求項３４記載の演算方法。
【請求項３６】
上記ＩＤＣＴ演算処理においては、処理の繰り返し回数が、処理ステージ段数 logN-1
と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項３４記載の演算方法。
【請求項３７】
上記ＩＤＣＴ演算処理においては、処理の繰り返し回数が、処理ステージ段数 logN-1
と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項３５記載の演算方法。
【請求項３８】
Ｍが４であり、Ｌが２であり、
上記ＩＤＣＴ演算処理は、入力として第１の入力データ、第２の入力データ、第３の入力データ、第４の入力データと第１の係数データ、第２の係数データを有し、演算結果を第１の出力データ、第２の出力データ、第３の出力データ、および第４の出力データとして上記メモリに出力するＩＤＣＴ演算処理を含み、当該ＩＤＣＴ演算処理は、
上記第２の入力データと上記第１の係数データに対して第１の２項演算を行い、当該演算結果を上記第１の中間結果とする第１の演算ステップと、
上記第４の入力データと上記第２の係数データに対して第２の２項演算を行い、当該演算結果を上記第２の中間結果とする第２の演算ステップと、
上記第４の入力データと上記第１の係数データに対して第３の２項演算を行い、当該演算結果を上記第３の中間結果とする第３の演算ステップと、
上記第２の入力データと上記第２の係数データに対して第４の２項演算を行い、当該演算結果を上記第４の中間結果とする第４の演算ステップと、
上記第１の演算ステップによる第１の中間結果と上記第２の演算ステップによる第２の中間結果に対して第５の２項演算を行い、当該演算結果を第５の中間結果とする第５の演算ステップと、
上記第３の演算ステップによる第３の中間結果と上記第４の演算ステップによる第４の中間結果に対して第６の２項演算を行い、当該演算結果を第６の中間結果とする第６の演算ステップと、
上記第１の入力データと上記第５の演算ステップによる第５の中間結果に対して第７の２項演算を行い、当該演算結果を上記第１の出力データとする第７の演算ステップと、
上記第１の入力データと上記第５の演算ステップによる第５の中間結果に対して第８の２項演算を行い、当該演算結果を上記第２の出力データとする第８の演算ステップと、
上記第３の入力データと上記第６の演算ステップによる第６の中間結果に対して第９の２項演算を行い、当該演算結果を上記第３の出力データとする第９の演算ステップと、
上記第３の入力データと上記第６の演算ステップによる第６の中間結果に対して第１０の２項演算を行い、当該演算結果を上記第４の出力データとする第１０の演算ステップと、を有する
請求項３４記載の演算方法。
【請求項３９】
上記プリ演算処理において、第１の入力データ、第２の入力データ、および所定の係数データから第１の出力データおよび第２の出力データを計算するプリ演算処理を含み、当該プリ演算処理は、
上記第１の入力データと上記所定の係数データに対して第１１の２項演算を行い、当該演算結果を第１の中間データとする第１１の演算ステップと、
上記第２の入力データと上記所定の係数データに対して第１２の２項演算を行い、当該演算結果を第２の中間データとする第１２の演算ステップと、
上記第１１の演算ステップによる第１の中間データと上記第１２の演算ステップによる第２の中間データに対して第１３の２項演算を行い、当該演算結果を上記第１の出力データとする第１３の演算ステップと、
上記第１１の演算ステップによる第１の中間データと上記第１２の演算ステップによる第２の中間データに対して第１４の２項演算を行い、当該演算結果を上記第２のデータとする第１４の演算ステップと、を有する
請求項３８記載の演算方法。
【請求項４０】
上記ＩＤＣＴ演算において、第１の２項演算、第２の２項演算、第３の２項演算、および第４の２項演算が乗算であり、
第５の２項演算が加算であり、第６の項演算が減算であり、第７の２項演算が加算であり、第８の２項演算が減算であり、
第９の２項演算が減算であり、第１０の２項演算が条件により一方の入力の符号反転をして、加算と減算を切り替える演算である
請求項３８記載の演算方法。
【請求項４１】
上記プリ演算処理において、第１１の２項演算、および第１２の２項演算が乗算であり、第１３の２項演算が加算であり、第１４の２項演算が減算であり、
上記ＩＤＣＴ演算において、第１の２項演算、第２の２項演算、第３の２項演算、および第４の２項演算が乗算であり、
第５の２項演算が加算であり、第６の項演算が減算であり、第７の２項演算が加算であり、第８の２項演算が減算であり、
第９の２項演算が減算であり、第１０の２項演算が条件により一方の入力の符号反転をして、加算と減算を切り替える演算である
請求項３９記載の演算方法。
【請求項４２】
上記ＩＤＣＴ演算処理は、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御手段を含み、
上記ＩＤＣＴ演算処理は、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項３８記載の演算方法。
【請求項４３】
Ｎ点のＤＣＴ演算をコンピュータで実行可能なプログラムであって、
Ｍ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する演算構造を使って演算可能な処理を複数回繰り返してＤＣＴ演算処理を行い、
処理後の一部のデータに対してポスト演算処理を行う
コンピュータで実行可能なプログラム。
【請求項４４】
上記ＤＣＴ演算処理は、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御構造を含む
請求項４３記載のコンピュータで実行可能なプログラム。
【請求項４５】
上記ＤＣＴ演算処理において、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項４３記載のコンピュータで実行可能なプログラム。
【請求項４６】
上記ＤＣＴ演算処理において、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項４４記載のコンピュータで実行可能なプログラム。
【請求項４７】
Ｍが４であり、Ｌが２であり、
上記ＤＣＴ演算処理において、入力として第１の入力データ、第２の入力データ、第３の入力データ、第４の入力データと第１の係数データ、第２の係数データを有し、演算結果を第１の出力データ、第２の出力データ、第３の出力データ、および第４の出力データとして上記メモリに出力するＤＣＴ演算処理を含み、当該ＤＣＴ演算処理は、
上記第１の入力データと上記第２の入力データに対して第１の２項演算を行い、当該演算結果を上記第１の出力データする第１の演算ステップと、
上記第３の入力と上記第４の入力データに対して第２の２項演算を行い、当該演算結果を上記第３の出力データする第２の演算ステップと、
上記第１の入力データと上記第２の入力データに対して第３の２項演算を行い、当該演算結果を第１の中間結果とする第３の演算ステップと、
上記第３の入力データと上記第４の入力データに対して第４の２項演算を行い、当該演算結果を第２の中間結果とする第４の演算ステップと、
上記第４の演算ステップによる第２の中間結果と上記第１の係数データに対して第５の２項演算を行い、当該演算結果を第３の中間結果とする第５の演算ステップと、
上記第３の演算ステップによる第１の中間結果と上記第２の係数データに対して第６の２項演算を行い、当該演算結果を第４の中間結果とする第６の演算ステップと、
上記第３の演算ステップによる第１の中間結果と上記第１の係数データに対して第７の２項演算を行い、当該演算結果を第５の中間結果とする第７の演算ステップと、
上記第４の演算ステップによる第２の中間結果と上記第２の係数データに対して第８の２項演算を行い、当該演算結果を第６の中間結果とする第８の演算ステップと、
上記第５の演算ステップによる第３の中間結果と上記第６の演算ステップによる第４の中間結果に対して第９の２項演算を行い、当該演算結果を上記第２の出力データとする第９の演算ステップと、
上記第７の演算ステップによる第５の中間結果と上記第８の演算ステップによる第６の中間結果に対して第１０の２項演算を行い、当該演算結果を上記第４の出力データとする第１０の演算ステップと、を有する
請求項４３記載のコンピュータで実行可能なプログラム。
【請求項４８】
上記ポスト演算処理において、第１の入力データ、第２の入力データ、および所定の係数データから第１の出力データおよび第２の出力データを計算するポスト演算処理を含み、当該ポスト演算処理は、
上記第１の入力データと上記第２の入力データに対して第１１の２項演算を行い、当該演算結果を第１の中間データとする第１１の演算ステップと、
上記第１の入力データと上記第２の入力データに対して第１２の２項演算を行い、当該演算結果を第２の中間データとする第１２の演算ステップと、
上記第１１の演算ステップによる第１の中間データと上記所定の係数データに対して第１３の２項演算を行い、当該演算結果を上記第１の出力データとする第１３の演算ステップと、
上記第１２の演算ステップによる第２の中間データと上記所定の係数データに対して第１４の２項演算を行い、当該演算結果を上記第２のデータとする第１４の演算ステップと、を有する
請求項４５記載のコンピュータで実行可能なプログラム。
【請求項４９】
上記ＤＣＴ演算処理において、第１の２項演算が加算であり、第２の２項演算が条件により加算と減算を切り替える演算であり、第３の項演算３が減算であり、第４の２項演算が一方の入力の符号反転をして条件により加算と減算を切り替える演算であり、
第５の２項演算、第６の２項演算、第７の２項演算、および第８の２項演算が乗算であり、
第９の２項演算が減算であり、第１０の２項演算が加算である
項求項４５記載のコンピュータで実行可能なプログラム。
【請求項５０】
上記ＤＣＴ演算処理において、第１の２項演算が加算であり、第２の２項演算が条件により加算と減算を切り替える演算であり、第３の項演算３が減算であり、第４の２項演算が一方の入力の符号反転をして条件により加算と減算を切り替える演算であり、
第５の２項演算、第６の２項演算、第７の２項演算、および第８の２項演算が乗算であり、
第９の２項演算が減算であり、第１０の２項演算が加算であり、
上記ポスト演算処理において、第１１の２項演算が加算であり、第１２の２項演算２が減算であり、第１３の２項演算および第１４の２項演算が乗算である
請求項４６記載のコンピュータで実行可能なプログラム。
【請求項５１】
上記ＤＣＴ演算処理において、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御構造を含み、
上記ＤＣＴ演算処理において、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項４５記載のコンピュータで実行可能なプログラム。
【請求項５２】
Ｎ点のＩＤＣＴ演算をコンピュータで実行可能なプログラムであって、
演算前の一部のデータについてプリ演算処理を行い、
Ｍ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する演算構造を使って演算可能な処理を複数回繰り返してＩＤＣＴ演算を行う
コンピュータで実行可能なプログラム。
【請求項５３】
上記ＩＤＣＴ演算処理においては、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御構造を含む
請求項５２記載のコンピュータで実行可能なプログラム。
【請求項５４】
上記ＩＤＣＴ演算処理においては、処理の繰り返し回数が、処理ステージ段数 logN-1
と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項５２記載のコンピュータで実行可能なプログラム。
【請求項５５】
上記ＩＤＣＴ演算処理においては、処理の繰り返し回数が、処理ステージ段数 logN-1
と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項５３記載のコンピュータで実行可能なプログラム。
【請求項５６】
Ｍが４であり、Ｌが２であり、
上記ＩＤＣＴ演算処理は、入力として第１の入力データ、第２の入力データ、第３の入力データ、第４の入力データと第１の係数データ、第２の係数データを有し、演算結果を第１の出力データ、第２の出力データ、第３の出力データ、および第４の出力データとして上記メモリに出力するＩＤＣＴ演算処理を含み、当該ＩＤＣＴ演算処理は、
上記第２の入力データと上記第１の係数データに対して第１の２項演算を行い、当該演算結果を上記第１の中間結果とする第１の演算ステップと、
上記第４の入力データと上記第２の係数データに対して第２の２項演算を行い、当該演算結果を上記第２の中間結果とする第２の演算ステップと、
上記第４の入力データと上記第１の係数データに対して第３の２項演算を行い、当該演算結果を上記第３の中間結果とする第３の演算ステップと、
上記第２の入力データと上記第２の係数データに対して第４の２項演算を行い、当該演算結果を上記第４の中間結果とする第４の演算ステップと、
上記第１の演算ステップによる第１の中間結果と上記第２の演算ステップによる第２の中間結果に対して第５の２項演算を行い、当該演算結果を第５の中間結果とする第５の演算ステップと、
上記第３の演算ステップによる第３の中間結果と上記第４の演算ステップによる第４の中間結果に対して第６の２項演算を行い、当該演算結果を第６の中間結果とする第６の演算ステップと、
上記第１の入力データと上記第５の演算ステップによる第５の中間結果に対して第７の２項演算を行い、当該演算結果を上記第１の出力データとする第７の演算ステップと、
上記第１の入力データと上記第５の演算ステップによる第５の中間結果に対して第８の２項演算を行い、当該演算結果を上記第２の出力データとする第８の演算ステップと、
上記第３の入力データと上記第６の演算ステップによる第６の中間結果に対して第９の２項演算を行い、当該演算結果を上記第３の出力データとする第９の演算ステップと、
上記第３の入力データと上記第６の演算ステップによる第６の中間結果に対して第１０の２項演算を行い、当該演算結果を上記第４の出力データとする第１０の演算ステップと、を有する
請求項５２記載のコンピュータで実行可能なプログラム。
【請求項５７】
上記プリ演算処理において、第１の入力データ、第２の入力データ、および所定の係数データから第１の出力データおよび第２の出力データを計算するプリ演算処理を含み、当該プリ演算処理は、
上記第１の入力データと上記所定の係数データに対して第１１の２項演算を行い、当該演算結果を第１の中間データとする第１１の演算ステップと、
上記第２の入力データと上記所定の係数データに対して第１２の２項演算を行い、当該演算結果を第２の中間データとする第１２の演算ステップと、
上記第１１の演算ステップによる第１の中間データと上記第１２の演算ステップによる第２の中間データに対して第１３の２項演算を行い、当該演算結果を上記第１の出力データとする第１３の演算ステップと、
上記第１１の演算ステップによる第１の中間データと上記第１２の演算ステップによる第２の中間データに対して第１４の２項演算を行い、当該演算結果を上記第２のデータとする第１４の演算ステップと、を有する
請求項５６記載のコンピュータで実行可能なプログラム。
【請求項５８】
上記ＩＤＣＴ演算において、第１の２項演算、第２の２項演算、第３の２項演算、および第４の２項演算が乗算であり、
第５の２項演算が加算であり、第６の項演算が減算であり、第７の２項演算が加算であり、第８の２項演算が減算であり、
第９の２項演算が減算であり、第１０の２項演算が条件により一方の入力の符号反転をして、加算と減算を切り替える演算である
請求項５６記載のコンピュータで実行可能なプログラム。
【請求項５９】
上記プリ演算処理において、第１１の２項演算、および第１２の２項演算が乗算であり、第１３の２項演算が加算であり、第１４の２項演算が減算であり、
上記ＩＤＣＴ演算において、第１の２項演算、第２の２項演算、第３の２項演算、および第４の２項演算が乗算であり、
第５の２項演算が加算であり、第６の項演算が減算であり、第７の２項演算が加算であり、第８の２項演算が減算であり、
第９の２項演算が減算であり、第１０の２項演算が条件により一方の入力の符号反転をして、加算と減算を切り替える演算である
請求項５７記載のコンピュータで実行可能なプログラム。
【請求項６０】
上記ＩＤＣＴ演算処理は、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御手段を含み、
上記ＩＤＣＴ演算処理は、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える
請求項５６記載のコンピュータで実行可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＣＴ（Ｄｅｓｃｒｅｔ  Ｃｏｓｉｎｅ  Ｔｒａｎｆｏｒｍ）演算およびＩＤＣＴ（ｉｎｖｅｒｓｅ  Ｄｅｓｃｒｅｔ  Ｃｏｓｉｎｅ  Ｔｒａｎｆｏｒｍ）演算を行う演算装置および演算方法、並びにプログラムに関するものである。
【背景技術】
【０００２】
ＤＣＴ演算あるいはＩＤＣＴ演算を行う方法としては、たとえばホームページ「http://momonga.t.u-tokyo.ac.jp/~ooura/fftman/ftmn2 33.html」にあるように拡張ＦＦＴ（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）の冗長な演算を取り除いた演算方法が知られている。以下にそのプログラムを示す。
【０００３】
for (mh = 2; (m = mh << 1) <= n; mh = m) ｛  
mq = mh >> 1;
---- real to real & complex butterflies ---- */
irev = 0;
for (jr = 0; jr < n; jr += m) ｛
wr = cos(0.5 * theta * (irev + mq));
wi = sin(0.5 * theta * (irev + mq));
for (k = n >> 2; k > (irev “= k); k >>= 1);
ki = jr + mq;
kr = n - ki;
ji = kr - mq;
xr = a[jr] - a[kr];
xi = -a[ji] + a[ki];
a[jr] += a[kr];
a[ji] += a[ki];
a[ki] = wr * xr + wi * xi;
a[kr] = wr * xi - wi * xr;
｝
if (mh == 2) continue;
---- complex to complex butterflies ---- */
irev = 0;
for (i = 0; i < n; i += m)｛
wr = cos(theta * (irev + mq));
wi = sin(theta * (irev + mq));
for (k = n >> 2; k > (irev “= k); k >>= 1);
for (j = 1; j < mq; j++)｛
jr = i + j;
ki = i + mh - j;
ji = n - jr;
kr = n - ki;
xr = a[jr] - a[kr];
xi = -a[ji] - a[ki];
a[jr] += a[kr];
a[ji] -= a[ki];
a[ki] = wr * xr + wi * xi;
a[kr] = wr * xi - wi * xr;
｝
｝
｝
【０００４】
この演算方法では、各ステージごとの繰り返しループのなかに２種類の繰り返しループをもつ構造になっている。
さらにそのうちの一つにはネストされたループが存在している。また、制御構造として条件判定も含んでおり、ループの制御構造が規則的でない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このような構造を処理する場合、アクセスするデータのインデックス計算が煩雑になったり、制御処理が複雑になるといった不利益があった。
【０００６】
また、該当する処理をハードウェアで実現しようとした場合、煩雑なインデックス計算や、複雑な制御処理を必要とする。
そのため、ハードウェア規模が増大し、設計が複雑になり、実装上の誤りを混入する可能性が高くなるといった不利益があった。
【０００７】
さらに、アルゴリズム自体が不規則であるため、規則的な構造を有したハードウェアに実装することは困難である、あるいは余計なリソースを必要とするといった不利益がある。
【０００８】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、アクセスするデータのインデックス計算が煩雑にならず、制御処理も単純で済み、ハードウェアで実現する場合には規模が小さく、単純な設計が行え、実装上の誤りの混入する可能性も低い演算装置および演算方法、並びにプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の第１の観点は、Ｎ点のＤＣＴ演算を行う演算装置であって、Ｍ種類の演算のためのデータと、Ｌ種類の係数データを格納しており、演算結果が書き戻されるメモリと、上記メモリから読み出したＭ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する演算構造を使って演算可能な処理を複数回繰り返し、繰り返し毎に演算結果を上記メモリに書き戻し、処理後の一部のデータに対してポスト演算処理を行う処理部とを有する。
【００１０】
好適には、Ｍが４であり、Ｌが２であり、上記処理部は、入力として第１の入力データ、第２の入力データ、第３の入力データ、第４の入力データと第１の係数データ、第２の係数データを有し、演算結果を第１の出力データ、第２の出力データ、第３の出力データ、および第４の出力データとして上記メモリに出力するＤＣＴ演算構造を含み、当該ＤＣＴ演算構造は、上記第１の入力データと上記第２の入力データに対して第１の２項演算を行い、当該演算結果を上記第１の出力データとして上記メモリに出力する第１の演算経路部と、上記第３の入力と上記第４の入力データに対して第２の２項演算を行い、当該演算結果を上記第３の出力データとして上記メモリに出力する第２の演算経路部と、上記第１の入力データと上記第２の入力データに対して第３の２項演算を行い、当該演算結果を第１の中間結果として出力する第３の演算経路部と、上記第３の入力データと上記第４の入力データに対して第４の２項演算を行い、当該演算結果を第２の中間結果として出力する第４の演算経路部と、上記第４の演算経路部による第２の中間結果と上記第１の係数データに対して第５の２項演算を行い、当該演算結果を第３の中間結果として出力する第５の演算経路部と、上記第３の演算経路部による第１の中間結果と上記第２の係数データに対して第６の２項演算を行い、当該演算結果を第４の中間結果として出力する第６の演算経路部と、上記第３の演算経路部による第１の中間結果と上記第１の係数データに対して第７の２項演算を行い、当該演算結果を第５の中間結果として出力する第７の演算経路部と、上記第４の演算経路部による第２の中間結果と上記第２の係数データに対して第８の２項演算を行い、当該演算結果を第６の中間結果として出力する第８の演算経路部と、上記第５の演算経路部による第３の中間結果と上記第６の演算経路部による第４の中間結果に対して第９の２項演算を行い、当該演算結果を上記第２の出力データとして上記メモリに出力する第９の演算経路部と、上記第７の演算経路部による第５の中間結果と上記第８の演算経路部による第６の中間結果に対して第１０の２項演算を行い、当該演算結果を上記第４の出力データとして上記メモリに出力する第１０の演算経路部と、を有する。
【００１１】
好適には、上記処理部は、ポスト演算処理において、第１の入力データ、第２の入力データ、および所定の係数データから第１の出力データおよび第２の出力データを計算するポスト演算構造を含み、当該ポスト演算構造は、上記第１の入力データと上記第２の入力データに対して第１１の２項演算を行い、当該演算結果を第１の中間データとして出力する第１１の演算経路部と、上記第１の入力データと上記第２の入力データに対して第１２の２項演算を行い、当該演算結果を第２の中間データとして出力する第１２の演算経路部と、上記第１１の演算経路部による第１の中間データと上記所定の係数データに対して第１３の２項演算を行い、当該演算結果を上記第１の出力データとして上記メモリに出力する第１３の演算経路部と、上記第１２の演算経路部による第２の中間データと上記所定の係数データに対して第１４の２項演算を行い、当該演算結果を上記第２のデータとして上記メモリ出力する第１４の演算経路部と、を有する。
【００１２】
好適には、上記処理部におけるＤＣＴ演算において、第１の２項演算が加算であり、第２の２項演算が条件により加算と減算を切り替える演算であり、第３の項演算３が減算であり、第４の２項演算が一方の入力の符号反転をして条件により加算と減算を切り替える演算であり、第５の２項演算、第６の２項演算、第７の２項演算、および第８の２項演算が乗算であり、第９の２項演算が減算であり、第１０の２項演算が加算である。
【００１３】
また、好適には、上記処理部におけるＤＣＴ演算において、第１の２項演算が加算であり、第２の２項演算が条件により加算と減算を切り替える演算であり、第３の項演算３が減算であり、第４の２項演算が一方の入力の符号反転をして条件により加算と減算を切り替える演算であり、第５の２項演算、第６の２項演算、第７の２項演算、および第８の２項演算が乗算であり、第９の２項演算が減算であり、第１０の２項演算が加算であり、上記処理部におけるポスト演算において、第１１の２項演算が加算であり、第１２の２項演算２が減算であり、第１３の２項演算および第１４の２項演算が乗算である。
【００１４】
本発明の第２の観点は、Ｎ点のＩＤＣＴ演算を行う演算装置であって、Ｍ種類の演算のためのデータと、Ｌ種類の係数データを格納しており、処理部２２の演算結果が書き戻されるメモリと、上記メモリから読み出した演算前の一部のデータについてプリ処理を行い、上記メモリから読み出したＭ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する演算構造を使って演算可能な処理を複数回繰り返してＩＤＣＴ演算を行い、演算結果を上記メモリに書き戻す処理部とを有する。
【００１５】
好適には、Ｍが４であり、Ｌが２であり、上記処理部は、入力として第１の入力データ、第２の入力データ、第３の入力データ、第４の入力データと第１の係数データ、第２の係数データを有し、演算結果を第１の出力データ、第２の出力データ、第３の出力データ、および第４の出力データとして上記メモリに出力するＩＤＣＴ演算構造を含み、当該ＩＤＣＴ演算構造は、上記第２の入力データと上記第１の係数データに対して第１の２項演算を行い、当該演算結果を上記第１の中間結果として出力する第１の演算経路部と、上記第４の入力データと上記第２の係数データに対して第２の２項演算を行い、当該演算結果を上記第２の中間結果として出力する第２の演算経路部と、上記第４の入力データと上記第１の係数データに対して第３の２項演算を行い、当該演算結果を上記第３の中間結果として出力する第３の演算経路部と、上記第２の入力データと上記第２の係数データに対して第４の２項演算を行い、当該演算結果を上記第４の中間結果として出力する第４の演算経路部と、上記第１の演算経路部による第１の中間結果と上記第２の演算経路部による第２の中間結果に対して第５の２項演算を行い、当該演算結果を第５の中間結果として出力する第５の演算経路部と、上記第３の演算経路部による第３の中間結果と上記第４の演算経路部による第４の中間結果に対して第６の２項演算を行い、当該演算結果を第６の中間結果として出力する第６の演算経路部と、上記第１の入力データと上記第５の演算経路部による第５の中間結果に対して第７の２項演算を行い、当該演算結果を上記第１の出力データとして上記メモリに出力する第７の演算経路部と、上記第１の入力データと上記第５の演算経路部による第５の中間結果に対して第８の２項演算を行い、当該演算結果を上記第２の出力データとして上記メモリに出力する第８の演算経路部と、上記第３の入力データと上記第６の演算経路部による第６の中間結果に対して第９の２項演算を行い、当該演算結果を上記第３の出力データとして上記メモリに出力する第９の演算経路部と、上記第３の入力データと上記第６の演算経路部による第６の中間結果に対して第１０の２項演算を行い、当該演算結果を上記第４の出力データとして上記メモリに出力する第１０の演算経路部と、を有する。
【００１６】
好適には、上記処理部は、プリ演算処理において、第１の入力データ、第２の入力データ、および所定の係数データから第１の出力データおよび第２の出力データを計算するプリ演算構造を含み、当該プリ演算構造は、上記第１の入力データと上記所定の係数データに対して第１１の２項演算を行い、当該演算結果を第１の中間データとして出力する第１１の演算経路部と、上記第２の入力データと上記所定の係数データに対して第１２の２項演算を行い、当該演算結果を第２の中間データとして出力する第１２の演算経路部と、上記第１１の演算経路部による第１の中間データと上記第１２の演算経路部による第２の中間データに対して第１３の２項演算を行い、当該演算結果を上記第１の出力データとして上記メモリに出力する第１３の演算経路部と、上記第１１の演算経路部による第１の中間データと上記第１２の演算経路部による第２の中間データに対して第１４の２項演算を行い、当該演算結果を上記第２のデータとして上記メモリ出力する第１４の演算経路部と、を有する。
【００１７】
好適には、上記処理部におけるＩＤＣＴ演算において、第１の２項演算、第２の２項演算、第３の２項演算、および第４の２項演算が乗算であり、第５の２項演算が加算であり、第６の項演算が減算であり、第７の２項演算が加算であり、第８の２項演算が減算であり、第９の２項演算が減算であり、第１０の２項演算が条件により一方の入力の符号反転をして、加算と減算を切り替える演算である。
【００１８】
好適には、上記処理部におけるプリ演算において、第１１の２項演算、および第１２の２項演算が乗算であり、第１３の２項演算が加算であり、第１４の２項演算が減算であり、上記処理部におけるＩＤＣＴ演算において、第１の２項演算、第２の２項演算、第３の２項演算、および第４の２項演算が乗算であり、第５の２項演算が加算であり、第６の項演算が減算であり、第７の２項演算が加算であり、第８の２項演算が減算であり、第９の２項演算が減算であり、第１０の２項演算が条件により一方の入力の符号反転をして、加算と減算を切り替える演算である。
【００１９】
本発明の第３の観点は、構成情報に基づき演算構造を再構成してＮ点のＤＣＴ演算およびＩＤＣＴ演算を行う再構成可能な演算装置であって、Ｍ種類の演算のためのデータと、Ｌ種類の係数データを格納しており、演算結果が書き戻されるメモリと、ＤＣＴ演算モード時には、上記演算構造をＤＣＴ演算モードに応じて再構成して、上記メモリから読み出したＭ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する上記再構成した演算構造を使って演算可能な処理を複数回繰り返し、繰り返し毎に演算結果を上記メモリに書き戻し、ＤＣＴ演算処理後に上記演算構造を再構成して一部のデータに対してポスト演算処理を行い、ＩＤＣＴ演算モード時には、上記演算構造を再構成して上記メモリから読み出した演算前の一部のデータについてプリ処理を行い、当該プリ処理後に上記演算構造をＩＤＣＴ演算モードに応じて再構成して、上記メモリから読み出したＭ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する演算構造を使って演算可能な処理を複数回繰り返してＩＤＣＴ演算を行い、演算結果を上記メモリに書き戻す処理部とを有する。
【００２０】
好適には、本発明の第１、第２、および第３の観点において、上記処理部は、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御手段を含む。
また、好適には、上記処理部は、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える。
【００２１】
本発明の第４の観点は、Ｎ点のＤＣＴ演算を行う演算方法、または、Ｎ点のＤＣＴ演算をコンピュータで実行可能なプログラムであって、Ｍ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する演算構造を使って演算可能な処理を複数回繰り返してＤＣＴ演算処理を行い、処理後の一部のデータに対してポスト演算処理を行う。
【００２２】
好適には、Ｍが４であり、Ｌが２であり、上記ＤＣＴ演算処理において、入力として第１の入力データ、第２の入力データ、第３の入力データ、第４の入力データと第１の係数データ、第２の係数データを有し、演算結果を第１の出力データ、第２の出力データ、第３の出力データ、および第４の出力データとして上記メモリに出力するＤＣＴ演算処理を含み、当該ＤＣＴ演算処理は、上記第１の入力データと上記第２の入力データに対して第１の２項演算を行い、当該演算結果を上記第１の出力データする第１の演算ステップと、上記第３の入力と上記第４の入力データに対して第２の２項演算を行い、当該演算結果を上記第３の出力データする第２の演算ステップと、上記第１の入力データと上記第２の入力データに対して第３の２項演算を行い、当該演算結果を第１の中間結果とする第３の演算ステップと、上記第３の入力データと上記第４の入力データに対して第４の２項演算を行い、当該演算結果を第２の中間結果とする第４の演算ステップと、上記第４の演算ステップによる第２の中間結果と上記第１の係数データに対して第５の２項演算を行い、当該演算結果を第３の中間結果とする第５の演算ステップと、上記第３の演算ステップによる第１の中間結果と上記第２の係数データに対して第６の２項演算を行い、当該演算結果を第４の中間結果とする第６の演算ステップと、上記第３の演算ステップによる第１の中間結果と上記第１の係数データに対して第７の２項演算を行い、当該演算結果を第５の中間結果とする第７の演算ステップと、上記第４の演算ステップによる第２の中間結果と上記第２の係数データに対して第８の２項演算を行い、当該演算結果を第６の中間結果とする第８の演算ステップと、上記第５の演算ステップによる第３の中間結果と上記第６の演算ステップによる第４の中間結果に対して第９の２項演算を行い、当該演算結果を上記第２の出力データとする第９の演算ステップと、上記第７の演算ステップによる第５の中間結果と上記第８の演算ステップによる第６の中間結果に対して第１０の２項演算を行い、当該演算結果を上記第４の出力データとする第１０の演算ステップと、を有する。
【００２３】
好適には、上記ポスト演算処理において、第１の入力データ、第２の入力データ、および所定の係数データから第１の出力データおよび第２の出力データを計算するポスト演算処理を含み、当該ポスト演算処理は、上記第１の入力データと上記第２の入力データに対して第１１の２項演算を行い、当該演算結果を第１の中間データとする第１１の演算ステップと、上記第１の入力データと上記第２の入力データに対して第１２の２項演算を行い、当該演算結果を第２の中間データとする第１２の演算ステップと、上記第１１の演算ステップによる第１の中間データと上記所定の係数データに対して第１３の２項演算を行い、当該演算結果を上記第１の出力データとする第１３の演算ステップと、上記第１２の演算ステップによる第２の中間データと上記所定の係数データに対して第１４の２項演算を行い、当該演算結果を上記第２のデータとする第１４の演算ステップと、を有する。
【００２４】
好適には、上記ＤＣＴ演算処理において、第１の２項演算が加算であり、第２の２項演算が条件により加算と減算を切り替える演算であり、第３の項演算３が減算であり、第４の２項演算が一方の入力の符号反転をして条件により加算と減算を切り替える演算であり、第５の２項演算、第６の２項演算、第７の２項演算、および第８の２項演算が乗算であり、第９の２項演算が減算であり、第１０の２項演算が加算である。
【００２５】
好適には、上記ＤＣＴ演算処理において、第１の２項演算が加算であり、第２の２項演算が条件により加算と減算を切り替える演算であり、第３の項演算３が減算であり、第４の２項演算が一方の入力の符号反転をして条件により加算と減算を切り替える演算であり、第５の２項演算、第６の２項演算、第７の２項演算、および第８の２項演算が乗算であり、第９の２項演算が減算であり、第１０の２項演算が加算であり、上記ポスト演算処理において、第１１の２項演算が加算であり、第１２の２項演算２が減算であり、第１３の２項演算および第１４の２項演算が乗算である。
【００２６】
本発明の第５の観点は、Ｎ点のＩＤＣＴ演算を行う演算方法、または、Ｎ点のＤＣＴ演算をコンピュータで実行可能なプログラムであって、演算前の一部のデータについてプリ演算処理を行い、Ｍ種類の異なる演算データとＬ種類の係数データを入力とし、Ｍ種類の出力データを出力する演算構造を使って演算可能な処理を複数回繰り返してＩＤＣＴ演算を行う。
【００２７】
好適には、Ｍが４であり、Ｌが２であり、上記ＩＤＣＴ演算処理は、入力として第１の入力データ、第２の入力データ、第３の入力データ、第４の入力データと第１の係数データ、第２の係数データを有し、演算結果を第１の出力データ、第２の出力データ、第３の出力データ、および第４の出力データとして上記メモリに出力するＩＤＣＴ演算処理を含み、当該ＩＤＣＴ演算処理は、上記第２の入力データと上記第１の係数データに対して第１の２項演算を行い、当該演算結果を上記第１の中間結果とする第１の演算ステップと、上記第４の入力データと上記第２の係数データに対して第２の２項演算を行い、当該演算結果を上記第２の中間結果とする第２の演算ステップと、上記第４の入力データと上記第１の係数データに対して第３の２項演算を行い、当該演算結果を上記第３の中間結果とする第３の演算ステップと、上記第２の入力データと上記第２の係数データに対して第４の２項演算を行い、当該演算結果を上記第４の中間結果とする第４の演算ステップと、上記第１の演算ステップによる第１の中間結果と上記第２の演算ステップによる第２の中間結果に対して第５の２項演算を行い、当該演算結果を第５の中間結果とする第５の演算ステップと、上記第３の演算ステップによる第３の中間結果と上記第４の演算ステップによる第４の中間結果に対して第６の２項演算を行い、当該演算結果を第６の中間結果とする第６の演算ステップと、上記第１の入力データと上記第５の演算ステップによる第５の中間結果に対して第７の２項演算を行い、当該演算結果を上記第１の出力データとする第７の演算ステップと、上記第１の入力データと上記第５の演算ステップによる第５の中間結果に対して第８の２項演算を行い、当該演算結果を上記第２の出力データとする第８の演算ステップと、上記第３の入力データと上記第６の演算ステップによる第６の中間結果に対して第９の２項演算を行い、当該演算結果を上記第３の出力データとする第９の演算ステップと、上記第３の入力データと上記第６の演算ステップによる第６の中間結果に対して第１０の２項演算を行い、当該演算結果を上記第４の出力データとする第１０の演算ステップと、を有する。
【００２８】
好適には、上記プリ演算処理において、第１の入力データ、第２の入力データ、および所定の係数データから第１の出力データおよび第２の出力データを計算するプリ演算処理を含み、当該プリ演算処理は、上記第１の入力データと上記所定の係数データに対して第１１の２項演算を行い、当該演算結果を第１の中間データとする第１１の演算ステップと、上記第２の入力データと上記所定の係数データに対して第１２の２項演算を行い、当該演算結果を第２の中間データとする第１２の演算ステップと、上記第１１の演算ステップによる第１の中間データと上記第１２の演算ステップによる第２の中間データに対して第１３の２項演算を行い、当該演算結果を上記第１の出力データとする第１３の演算ステップと、上記第１１の演算ステップによる第１の中間データと上記第１２の演算ステップによる第２の中間データに対して第１４の２項演算を行い、当該演算結果を上記第２のデータとする第１４の演算ステップと、を有する。
【００２９】
好適には、上記ＩＤＣＴ演算において、第１の２項演算、第２の２項演算、第３の２項演算、および第４の２項演算が乗算であり、第５の２項演算が加算であり、第６の項演算が減算であり、第７の２項演算が加算であり、第８の２項演算が減算であり、第９の２項演算が減算であり、第１０の２項演算が条件により一方の入力の符号反転をして、加算と減算を切り替える演算である。
【００３０】
好適には、上記プリ演算処理において、第１１の２項演算、および第１２の２項演算が乗算であり、第１３の２項演算が加算であり、第１４の２項演算が減算であり、上記ＩＤＣＴ演算において、第１の２項演算、第２の２項演算、第３の２項演算、および第４の２項演算が乗算であり、第５の２項演算が加算であり、第６の項演算が減算であり、第７の２項演算が加算であり、第８の２項演算が減算であり、第９の２項演算が減算であり、第１０の２項演算が条件により一方の入力の符号反転をして、加算と減算を切り替える演算である。
【００３１】
好適には、第４および第５の観点において、上記ＩＤＣＴ演算処理は、第１の変数（ｉ）の第１のループの中で、第２の変数（ｊ）によって制御される第２のループを実行させ、当該第２のループ中で第３の変数（ｋ）によって制御される第３のループを実行させる、繰り返しループの制御手段を含む。
また、好適には、上記ＩＤＣＴ演算処理は、処理の繰り返し回数が、処理ステージ段数 logN-1 と内部ループ繰り返し回数Ｎ／４の積で決まり、内部ループの状態により演算を切り替える。
【００３２】
本発明によれば、たとえば入出力データの種類Ｍが４であり、係数データの種類Ｌが２であるとすると、処理部における演算構造が第１〜第４の入力データ（ bank0, bank1, bank2, bank3 ）と第１および第２の係数データ（ memc0, memc1 ）から第１〜第４の出力データ（ bank0w, bank1w, bank2w, bank3w ）を計算する。
ＤＣＴを計算する場合、ループの繰り返し毎に入力データ bank0, bank1, bank2, bank3 と係数データ memc0, memc1 から出力データ bank0w, bank1w, bank2w, bank3w を計算する。
第１〜第４の入力データ bank0, bank1, bank2, bank3 、第１および第２の係数データ memc0, memc1 はメモリに格納されており、ループの繰り返しごとに演算結果である第１〜第４の出力データ bank0w, bank1w, bank2w, bank3w がメモリに書き戻される。
また、ループの制御構造は、ステージ段数を示す変数ｉのループの中で、変数ｊによって制御されるループが実行され、さらにそのループ中で変数ｋによって制御されるループが実行される。
ステージ段数は、処理データ数Ｎを用いて log2(N)-1で決定される数である。
変数ｊ，変数ｋのループ上限数はｉの値により決まる内部状態により変化するが、ｊのループとｋのループの繰り返し回数を乗じた演算繰り返し回数はＮ／４になる。
そして、ＤＣＴ演算処理後に所定のポスト処理が実行される。
【００３３】
また、ＩＤＣＴを計算する場合、ループのネストでの演算前のプリ処理が実行される。
そして、ループの繰り返し毎に第１〜第４の入力データ bank0, bank1, bank2, bank3
と第１および第２の係数データ memc0, memc1 から第１〜第４の出力データ bank0w, bank1w, bank2w, bank3w を計算する。
第１〜第４の入力データ bank0, bank1, bank2, bank3 、第１および第２の係数データ memc0, memc1 はメモリに格納されており、ループの繰り返しごとに演算結果である第１〜第４の出力データ bank0w, bank1w, bank2w, bank3w がメモリに書き戻される。
ループの制御構造は、ステージ段数を示す変数ｉのループの中で、変数ｊによって制御されるループが実行され、さらにそのループ中で変数ｋによって制御されるループが実行される。
ステージ段数は、処理データ数Ｎを用いて log2(N)-1で決定される数である。
変数ｊ，変数ｋのループ上限数はｉの値により決まる内部状態により変化するが、ｊのループとｋのループの繰り返し回数を乗じた演算繰り返し回数はＮ／４になる。
【発明の効果】
【００３４】
本発明によれば、各ステージごとの繰り返しループのなかに２種類の繰り返しループをもつ構造になっていない。また、制御構造として条件判定も含むこともないためループの制御構造が規則的である。
したがって、アクセスするデータのインデックス計算が煩雑にならず、制御処理も単純で済むといった効果がある。そのためハードウェアで実現する場合には規模が小さく、単純な設計が行え、実装上の誤りの混入する可能性も低いという利点がある。
また、制御構造が規則的であり単純になるため、再構成可能な演算装置を使い本方式を実現することも可能になるという利点がある。
【発明を実施するための最良の形態】
【００３５】
以下、本発明の実施形態を図面に関連付けて説明する。
【００３６】
＜第１実施形態＞
本発明の第１の実施形態としてＤＣＴ演算を実行する方法について説明する。
図１は、本第１の実施形態に係るＤＣＴ演算を実行する演算装置の基本構成を示すブロック図である。
【００３７】
演算装置１０は、Ｎ点のＤＣＴ演算を行う演算装置である。
演算装置１０は、図１に示すように、メモリ１１および所定のプログラムに従ってＤＣＴ演算処理を行う処理部１２を有している。
【００３８】
メモリ１１は、処理部１２の入力データとしてのＭ（正の整数）種類の演算のためのデータと、Ｌ（正の整数）種類の係数データを格納しており、処理部１２の演算結果が書き戻される。
【００３９】
処理部１２は、メモリ１１から読み出したＭ種類の異なる入力データＤＩＮとＬ種類の係数データＣＩＮを入力とし、Ｍ種類の出力データＤＯＵＴを出力する演算構造を使って演算可能な処理を複数回繰り返し、繰り返し毎に演算結果をメモリ１１に書き戻し、処理後の一部のデータに対してポスト処理を行う。
処理部１２は、以下に示すプログラム（Ｃ言語表記している）に従って本発明に係るＤＣＴ演算処理を行う。
【００４０】
＜ＤＣＴ演算プログラム＞
for (i = 0; i < log(N)-1; i++)  ｛
for(j = 0; j < MAX J; j++) ｛
for(k=0;k <MAX K; k++) ｛
bank0w [adr0 w] = bank0 [adr0 r] + bank1 [adr1 r];
bank2w [adr2 w] = bank2 [adr2 r] + bank3 [adr3 r];      [j==0] 
bank2 [adr2 r] - bank3 [adr3 r];      [j!=0] 
bank3w [adr3 w] =
memc0[adr0 c] * (bank0[adr0 r] - bank1 [adr1 r])
+ memc1[adr0 c] *(-bank2[adr2 r]+bank3 [adr3  r]);
bank1w [adr1 w] =
memc0[adr0 c] *(-bank2[adr2 r] + bank3 [adr3 r]) 
- memc1[adr0 c] * (bank0[adr0 r] -bank1[adr1 r]);
[j==0] 
memc0[adr0 c] *(-bank2[adr2 r] - bank3 [adr3 r]) 
- memc1[adr0 c] * (bank0[adr0 r] -bank1[adr1 r]);
[j!=0]
｝
｝
｝
【００４１】
この例では、入出力データの種類Ｍが４であり、係数データの種類Ｌが２である。
処理部１２における演算構造が入力データＤＩＮ（ bank0, bank1, bank2, bank3 ）と係数データＣＩＮ（ memc0, memc1 ）から出力データＤＯＵＴ（ bank0w, bank1w, bank2w, bank3w ）を計算する。
【００４２】
図２は、ＤＣＴ演算プログラムに従った本発明に係るＤＣＴ演算処理のフローチャートである。
ＤＣＴ演算処理は、ＤＣＴ演算プログラムに応じて図２のステップＳＴ１〜ＳＴ１６の各処理に従って行われる。
【００４３】
ＤＣＴを計算する場合、上記プログラムにおけるループの繰り返し毎に入力データ bank0, bank1, bank2, bank3 と係数データ memc0, memc1 から出力データ bank0w, bank1w, bank2w, bank3w を計算する。
入力データ bank0, bank1, bank2, bank3 、係数データ memc0, memc1 はメモリ１１に格納されており、ループの繰り返しごとに演算結果 bank0w, bank1w, bank2w, bank3w がメモリ１１に書き戻される。
【００４４】
ループの制御構造は、ステージ段数を示す変数ｉのループの中で、変数ｊによって制御されるループが実行され、さらにそのループ中で変数ｋによって制御されるループが実行される。
ステージ段数は、処理データ数Ｎを用いて log2(N)-1で決定される数である。
変数ｊ，変数ｋのループ上限数はｉの値により決まる内部状態により変化するが、ｊのループとｋのループの繰り返し回数を乗じた演算繰り返し回数はＮ／４になる。
【００４５】
メモリ１１にアクセスするためのアドレスＡＤＲは、ループ変数ｉ，ｊ，ｋから状態に応じて計算され、入力データの読み出し用アドレスＡＤＲ Ｒがadr0 r,adr1 r,adr2 r,adr3 r であり、係数データアクセス用アドレスＡＤＲ Ｃがadr0 c であり、出力データ書き込み用アドレスＡＤＲ Ｗがadr0 w,adr1 w,adr2 w,adr3 w である。
【００４６】
メモリ１１から読み出した入力データ bank0 [adr0 r], bank1[adr1 r]の演算は次の式に従って行われ、結果はメモリbank0w [adr0 w]に書き込まれる（図２のステップＳＴ４）。
【００４７】
（数１）
bank0w [adr0 w] = bank0 [adr0 r] + bank1 [adr1 r]
【００４８】
入力データbank2[adr2 r], bank3[adr3 r]の演算は次の式に従って行われ、結果はbank2w [adr2 w]に書き込まれる。
【００４９】
ループの状態を示す変数ｊの値が０のときは、次式に従って行われる（図２のステップＳＴ６，ＳＴ７）。
【００５０】
（数２）
bank2w [adr2 w] = bank2 [adr2 r] + bank3 [adr3 r]
【００５１】
ループの状態を示す変数ｊの値が０以外のときは、次式に従って行われる（図２のステップＳＴ６，ＳＴ８）。
【００５２】
（数３）
bank2w [adr2 w] = bank2 [adr2 r] - bank3 [adr3 r]
【００５３】
入力データ bank0 [adr0 r], bank1[adr1 r], bank2[adr2 r], bank3[adr3 r]と係数データ memc0 [adr0 c],  memc1 [adr1 c]の演算は次の式に従って行われ、結果は bank3w[adr3 w] に書き込まれる（図２のステップＳＴ５）。
【００５４】
（数４）
bank3w [adr3 w] = memc0 [adr0 c] * (bank0[adr0 r] - bank1 [adr1 r]) 
+ memc1[adr0 c] *(-bank2[adr2 r] + bank3 [adr3 r]); 
【００５５】
入力データ bank0 [adr0 r], bank1[adr1 r], bank2[adr2 r], bank3[adr3 r]と係数データ memc0 [adr0 c], memc1[adr1 c]の演算は次の式に従って行われ、結果は bank1w[adr1 w] に書き込まれる。
【００５６】
ループ状態を表す変数ｊが０のときは、次式に従って行われる（図２のステップＳＴ６，ＳＴ９）。
【００５７】
（数５）
bank1w [adr1 w] = memc0 [adr0 c] * (-bank2 [adr2 r] + bank3 [adr3 r])
- memc1 [adr0 c] * (bank0[adr0 r] - bank1 [adr1 r]);
【００５８】
ループ状態を表す変数ｊが０以外のときは、次式に従って行われる（図２のステップＳＴ６，ＳＴ１０）。
【００５９】
（数６）
bank1w [adr1 w] = memc0 [adr0 c] * (-bank2 [adr2 r] - bank3 [adr3 r])
- memc1[adr0 c] * (bank0[adr0 r] - bank1 [adr1 r); 
【００６０】
ループのネストでの演算がすべて終了したあとのポスト処理は次のように実行される。  
【００６１】
メモリから読み出した入力データ bank0 [adr0 r], bank1[adr1 r]と係数データcontの演算は次の式に従って行われ、結果はメモリbank0w [adr0 w], bank1w [adr1 w]に書き込まれる。
【００６２】
（数７）
bank0w [adr0 w] = ( bank0 [adr0 r] + bank1 [adr1 r] ) * const
bank1w [adr1 w] = ( bank0 [adr0 r] - bank1 [adr1 r] ) * const
【００６３】
そして、変数ｋがあらかじめ設定した最大値ＭＡＸ Ｋに達するまでステップＳＴ４〜ＳＴ１２の処理が切り返される。すなわち、変数ｋによって制御されるループが繰り返される。
変数ｋがあらかじめ設定した最大値ＭＡＸ Ｋに達すると、変数ｊがあらかじめ設定した最大値ＭＡＸ Ｊに達するまでステップＳＴ３〜ＳＴ１４の処理が切り返される。すなわち、変数ｊによって制御されるループが繰り返される。
結果的に、上述したように、変数ｉが log2(N)-1で決定される数に達するまで、ステージ段数を示す変数ｉのループの中で、変数ｊによって制御されるループが実行され、さらにそのループ中で変数ｋによって制御されるループが実行される（ステップＳＴ２〜ステップＳＴ１６）
【００６４】
以上の動作を行うことでメモリ１１のバンクBANK0, BANK1, BANK2, BANK3に格納されていたＮ点のデータに対してＤＣＴ処理を実行した結果がメモリ１１のバンクBANK0, BANK1, BANK2, BANK3に出力される。
【００６５】
＜第２実施形態＞
本発明の第２の実施形態としてＩＤＣＴ演算を実行する方法について説明する。
図３は、本第２の実施形態に係るＩＤＣＴ演算を実行する演算装置の基本構成を示すブロック図である。
【００６６】
演算装置２０は、Ｎ点のＩＤＣＴ演算を行う演算装置である。
演算装置２０は、図３に示すように、メモリ２１および所定のプログラムに従ってＩＤＣＴ演算処理を行う処理部２２を有している。
【００６７】
メモリ２１は、処理部２２の入力データとしてのＭ（正の整数）種類の演算のためのデータと、Ｌ（正の整数）種類の係数データを格納しており、処理部２２の演算結果が書き戻される。
【００６８】
処理部２２は、メモリ２１から読み出した演算前の一部のデータについてプリ処理を行い、メモリ２１から読み出したＭ種類の異なる入力データＤＩＮとＬ種類の係数データＣＩＮを入力とし、Ｍ種類の出力データＤＯＵＴを出力する演算構造を使って演算可能な処理を複数回繰り返してＩＤＣＴ演算を行い、演算結果をメモリ２１に書き戻す。
処理部２２は、以下に示すプログラム（Ｃ言語表記している）に従って本発明に係るＩＤＣＴ演算処理を行う。
【００６９】
＜ＩＤＣＴ演算プログラム＞
for(i = 0; i < log(N)-1; i++) ｛
for(j = 0; j < MAX K; j++) ｛
for(k = 0; k < MAX K; k++) ｛
bank0w [adr0 w] = bank0 [adr0 r]
+ (bank1 [adr1 r] * memc0 [adr0  c] 
+  bank3 [adr3 r] * memc1 [adr0 c]); 
bank1w [adr1 w] = bank0 [adr0 r]
- (bank1 [adr1 r] * memc0 [adr0 c]
+  bank3 [adr3 r] * memc1 [adr0 c]); 
bank2w [adr2 w] = bank2 [adr2 r]
- (bank3 [adr3 r] * memc0 [adr0 c]
-  bank1 [adr1 r] * memc1 [adr0 c]); 
bank3w [adr3 w] = bank2 [adr2 r]
+ (bank3 [adr3 r] * memc0 [adr0 c]
-  bank1 [adr1 r] * memc1 [adr0 c]);
[j==0]  
bank3w [adr3 w] = - bank2 [adr2 r] 
- (bank3 [adr3 r] * memc0 [adr0 c]
+  bank1 [adr1 r] * memc1 [adr0 c]); 
[j!=0]  
｝
｝
｝
【００７０】
この例では、入出力データの種類Ｍが４であり、係数データの種類Ｌが２である。
処理部２２における演算構造が入力データＤＩＮ（ bank0, bank1, bank2, bank3 ）と係数データ（ＣＩＮ） memc0, memc1 から出力データＤＯＵＴ（ bank0w, bank1w, bank2w, bank3w ）を計算する。
【００７１】
図４は、ＩＤＣＴ演算プログラムに従った本発明に係るＩＤＣＴ演算処理のフローチャートである。
ＩＤＣＴ演算処理は、ＩＤＣＴ演算プログラムに応じて図４のステップＳＴ２１〜ＳＴ３５の各処理に従って行われる。
【００７２】
ＩＤＣＴを計算する場合、ループのネストでの演算前のプリ処理が次のように実行される。
【００７３】
メモリから読み出した入力データ bank0 [adr0 r], bank1[adr1 r]と係数データ constの演算は次の式に従って行われ、結果はメモリbank0w [adr0 w], bank1w [adr1 w]に書き込まれる。
【００７４】
（数８）
bank0w [adr0 w] = bank0 [adr0 r] * const + bank1 [adr1 r] * const
bank1w [adr1 w] = bank0 [adr0 r] * const - bank1 [adr1 r] * const
【００７５】
プログラムにおけるループの繰り返し毎に入力データ bank0, bank1, bank2, bank3 と係数データ memc0, memc1 から出力データ bank0w, bank1w, bank2w, bank3w を計算する。
入力データ bank0, bank1, bank2, bank3 、係数データ memc0, memc1 はメモリ２１に格納されており、ループの繰り返しごとに演算結果 bank0w, bank1w, bank2w, bank3w がメモリ２１に書き戻される。
【００７６】
ループの制御構造は、ステージ段数を示す変数ｉのループの中で、変数ｊによって制御されるループが実行され、さらにそのループ中で変数ｋによって制御されるループが実行される。
ステージ段数は、処理データ数Ｎを用いて log2(N)-1で決定される数である。
変数ｊ，変数ｋのループ上限数はｉの値により決まる内部状態により変化するが、ｊのループとｋのループの繰り返し回数を乗じた演算繰り返し回数はＮ／４になる。
【００７７】
メモリ２１にアクセスするためのアドレスＡＤＲは、ループ変数ｉ，ｊ，ｋから状態に応じて計算され、入力データの読み出し用アドレスＡＤＲ Ｒがadr0 r,adr1 r,adr2 r,adr3 r であり、係数データアクセス用アドレスＡＤＲ Ｃがadr0 c であり、出力データ書き込み用アドレスＡＤＲ Ｗがadr0 w,adr1 w,adr2 w,adr3 w である。
【００７８】
メモリ２１から読み出した入力データ bank0 [adr0 r], bank1[adr1 r], bank3[adr3 r]と係数データ memc0 [adr0 c], memc1[adr0 c]の演算は次の式に従って行われ、結果はメモリbank0w [adr0 w]に書き込まれる（図４のステップＳＴ２４）。
【００７９】
（数９）
bank0w [adr0 w] = bank0 [adr0 r] + (bank1 [adr1  r] * memc0 [adr0 c]
+ bank3 [adr3 r] * memc1 [adr0 c])
【００８０】
入力データbank0[adr0 r], bank1[adr1 r], bank3[adr3 r]と係数データ memc0 [adr0 c], memc1[adr0 c]の演算は次の式に従って行われ、結果はbank1w [adr1 w]に書き込まれる（図４のステップＳＴ２５）。
【００８１】
（数１０）
bank1w [adr1 w] = bank0 [adr0 r]- (bank1 [adr1 r] * memc0 [adr0 c]
+ bank3 [adr3 r] * memc1 [adr0 c])
【００８２】
入力データbank1[adr1 r], bank2[adr2 r], bank3[adr3 r]と係数データ memc0 [adr0 c], memc1[adr0 c]の演算は次の式に従って行われ、結果はbank2w [adr2  w] に書き込まれる（図４のステップＳＴ２６）。
【００８３】
（数１１）
bank2w [adr2 w] = bank2 [adr2 r]- (bank3 [adr3 r]  * memc0[adr0 c]
- bank1[adr1 r] * memc1 [adr0 c]) 
【００８４】
入力データbank1[adr1 r], bank2[adr2 r], bank3[adr3 r]と係数データ memc0 [adr0 c], memc1[adr0 c]の演算は次の式に従って行われ、結果はbank3w [adr3 w]に書き込まれる。
【００８５】
ループ状態を表す変数ｊが０のときは、次式に従って行われる（図４のステップＳＴ２７，ＳＴ２８）。
【００８６】
（数１２）
bank3w [adr3 w] = bank2 [adr2 r]
+ (bank3 [adr3 r] * memc0 [adr0 c]
-  bank1 [adr1 r] * memc1 [adr0 c]) 
【００８７】
ループ状態を表す変数ｊが0以外のときは、次式に従って行われる（図４のステップＳＴ２７，ＳＴ２９）。
【００８８】
（数１３）
bank3w [adr3 w] = - bank2 [adr2 r] 
- (bank3[adr3 r] * memc0 [adr0 c]
- bank1 [adr1 r] * memc1 [adr0 c]) 
【００８９】
そして、変数ｋがあらかじめ設定した最大値ＭＡＸ Ｋに達するまでステップＳＴ２４〜ＳＴ３１の処理が切り返される。すなわち、変数ｋによって制御されるループが繰り返される。
変数ｋがあらかじめ設定した最大値ＭＡＸ Ｋに達すると、変数ｊがあらかじめ設定した最大値ＭＡＸ Ｊに達するまでステップＳＴ２３〜ＳＴ３３の処理が切り返される。すなわち、変数ｊによって制御されるループが繰り返される。
結果的に、上述したように、変数ｉが log2(N)-1で決定される数に達するまで、ステージ段数を示す変数ｉのループの中で、変数ｊによって制御されるループが実行され、さらにそのループ中で変数ｋによって制御されるループが実行される（ステップＳＴ２２〜ステップＳＴ３５）
【００９０】
以上の動作を行うことでメモリ２１のバンクBANK0, BANK1, BANK2, BANK3に格納されていたＮ点のデータに対してＩＤＣＴ処理を実行した結果がメモリ２１のバンクBANK0, BANK1, BANK2, BANK3に出力される。
【００９１】
＜第３実施形態＞
本発明の第３の実施形態として、再構成可能な演算装置を用いて、動的再構成を行いＤＣＴとＩＤＣＴ演算を実行する方法について説明する。
【００９２】
図５は、動的再構成を行いＤＣＴとＩＤＣＴ演算を実行する本発明の第３の実施形態に係る再構成可能な演算装置を採用した演算システムを示す構成図である。
【００９３】
本演算システム３０は、演算装置（演算器）の配列や、演算実行時の係数パラメータ等を、構成情報に基づいて再構成可能な演算装置が用いられ、この演算装置およびメモリの格納データによりＤＣＴ演算モード時には第１の実施形態で説明したＤＣＴ演算を行い、ＩＤＣＴ演算モード時には第２の実施形態で説明したＩＤＣＴ演算を行うことが可能に構成されている。
そして、本演算システム３０は、演算装置としての処理部、メモリ、アドレス生成装置、および経路情報を格納するメモリを含み、ＣＰＵを用いた経路情報選択の他に、アドレス生成装置が発生する制御信号に基づいて、たとえば演算途中であっても特定条件で経路情報を切り替えすることができる再構成可能なシステムとして構成される。
【００９４】
具体的には、本演算システム３０は、図５に示すように、制御回路としてのＣＰＵ３１、複数、たとえば２つの第１の経路選択情報メモリ３２、第２の経路選択情報メモリ３３、選択装置３４、アドレス生成装置３５、データメモリ３６、および再構成可能な演算装置としての処理部３７を有している。
【００９５】
ＣＰＵ３１は、バスＢＵＳを介して、第１の経路選択情報メモリ３２、第２の経路選択情報メモリ３３、データメモリ３６にアクセスすることが可能になっている。
ＣＰＵ３１は、ｒｅｑ ａｃｋ信号を用いてアドレス生成装置３５の起動を行い、アドレス生成装置３５からのｒｅｑ ａｃｋ信号によりアドレス生成装置３５の動作の終了を確認する。
また、ＣＰＵ３１は、第１の経路選択情報メモリ３２に第１の経路選択情報ｃｏｎｆｉｇ１を書き込み、第２の経路選択情報メモリ３３に第２の経路選択情報ｃｏｎｆｉｇ２を書き込む。
また、ＣＰＵ３１は、データメモリ３６に複数のデータ（演算用データbank0,bank1,bank2,bank3 、係数データmemc0,memc1）を対応するバンクに書き込んでおく。さらにＣＰＵ３１は、アドレス生成装置３５に信号ａｇｃｔｒｌでアドレス生成パターンを指定し、アドレス生成装置３５の起動を行う。
ＣＰＵ３１が指定するアドレス生成パターンは、処理部３７へのデータメモリ３６からの入力データbank0,bank1,bank2,bank3 の読み出し用アドレスＡＤＲ Ｒがadr0 r,adr1 r,adr2 r,adr3 r であり、係数データmemc0,memc1のアクセス用アドレスＡＤＲ Ｃがadr0 c であり、出力データbank0w,bank1w,bank2w,bank3w の書き込み用アドレスＡＤＲ Ｗがadr0 w,adr1 w,adr2 w,adr3 w である。
さらに、ＣＰＵ３１は、制御信号ｃｔｒｌｂを選択装置３４に出力し、第１の経路選択情報メモリ３２の第１の経路選択情報ｃｏｎｆｉｇ１および第２の経路選択情報メモリ３３の第２の経路選択情報ｃｏｎｆｉｇ２のうちのいずれの経路選択情報を選択するのかを指示する。換言すれば、ＣＰＵ３１は、制御信号ｃｔｒｌｂをアドレス生成装置３５がアドレス生成を行っている途中で、動的に変更し、経路選択情報を複数の経路選択情報メモリ３２，３３から選択するのかを制御する。
【００９６】
第１の経路選択情報メモリ３２は、ＣＰＵ３１からバスＢＵＳを介して第１の経路選択情報ｃｏｎｆｉｇ１が書き込まれ、書き込まれた第１の経路選択情報ｃｏｎｆｉｇ１を選択装置３４に出力する。
第２の経路選択情報メモリ３３は、ＣＰＵ３１からバスＢＵＳを介して第２の経路選択情報ｃｏｎｆｉｇ２が書き込まれ、書き込まれた第２の経路選択情報ｃｏｎｆｉｇ２を選択装置３４に出力する。
第１および第２の経路選択情報メモリ３２，３３の第１および第２の経路選択情報ｃｏｎｆｉｇ１，ｃｏｎｆｉｇ２は、演算モード、すなわち、ＤＣＴ演算モードとＩＤＣＴ演算モードに応じて、ＣＰＵ３１により選択的書き込まれる。
【００９７】
選択装置３４は、アドレス生成装置３５による制御信号ｃｔｒｌａおよびｃｐｕ３１による制御信号ｃｔｒｌｂに応じて、第１の経路選択情報メモリ３２による第１の経路選択情報ｃｏｎｆｉｇ１、および第２の経路選択情報メモリ３３による第２の経路選択情報ｃｏｎｆｉｇ２のうちのいずれかを選択して、処理部３７に供給する。
【００９８】
アドレス生成装置３５は、ＣＰＵ３１によるｒｅｑ ａｃｋ信号を受けて起動し、あらかじめＣＰＵ４１により制御信号ａｇｃｔｒｌで指定されたアドレス生成パターンで、自動低にアドレスＡＤＲ（ Ｒ、 Ｃ、 Ｗ）を生成し、データメモリ３６から演算用データbank0,bank1,bank2,bank3 、係数データmemc0,memc1を読み出して処理部３７に入力データとして供給させ、処理部３７による出力演算結果データbank0w,bank1w,bank2w,bank3w をデータメモリ３６の所定のバンクへの書き込みを行わせる。
また、アドレス生成装置３５は、生成したアドレスに応じた選択情報を含む制御信号ｃｔｒｌａを選択装置３４に出力し、第１の経路選択情報メモリ３２による第２の経路選択情報ｃｏｎｆｉｇ１、および第２の経路選択情報メモリ３３による第２の経路選択情報ｃｏｎｆｉｇ２にうちのいずれかを選択させて、処理部３７に供給させる。
そして、アドレス生成装置３５は、アドレスの生成が終了したときには、ｒｅｑ ａｃｋ信号を用いてＣＰＵ３１に動作の完了を伝える。
また、このアドレス生成装置３５は、処理部３７で実行する条件演算の条件やメモリインタフェースの制御信号を生成することも可能である。
【００９９】
データメモリ３６は、アドレス生成装置３５で生成されたアドレスＡＤＲ Ｒ，ＡＤＲ Ｃにより演算用データbank0,bank1,bank2,bank3 、係数データmemc0,memc1を読み出して処理部３７に入力データとして供給し、処理部３７の演算結果である書き込みデータbank0w,bank1w,bank2w,bank3w を所定のバンクに書き込む。
また、データメモリ３６は、バスＢＵＳを介してＣＰＵ３１によるアクセスされる。
【０１００】
処理部３７は、選択装置３４で選択された第１の経路選択情報メモリ３２による第１の経路選択情報ｃｏｎｆｉｇ１、または第２の経路選択情報メモリ３３による第２の経路選択情報ｃｏｎｆｉｇ２に基づいて、演算器の配列や、演算実行時の係数パラメータ等を再構成して、データメモリ３６の読み出しデータ、すなわち入力データbank0,bank1,bank2,bank3 および係数データmemc0,memc1に対して指定の演算を行い、この演算結果を書き込み出力データbank0w,bank1w,bank2w,bank3w としてデータメモリ３６に供給する。
【０１０１】
図６は、動的再構成を行いＤＣＴとＩＤＣＴ演算を実行する第３の実施形態に係る再構成可能な処理部３７およびデータメモリ３６の構成例を示すブロック図である。
【０１０２】
図６の再構成可能な処理部３７は、演算装置１０１〜１１０、選択装置１１１〜１２０、およびメモリインタフェース１２１〜１２４を有している。
【０１０３】
また、図６のデータメモリ３６は、メモリバンク１３１〜１３６を有している。
図６のデータメモリ３６においては、たとえばメモリバンク１３１には、ＣＰＵ３１により演算用データbank0 が書き込まれ、処理部３７の出力データbank0wが書き込まれる。
メモリバンク１３２には、ＣＰＵ３１により演算用データbank1 が書き込まれ、処理部３７の出力データbank1wが書き込まれる。
メモリバンク１３３には、ＣＰＵ３１により演算用データbank2 が書き込まれ、処理部３７の出力データbank2wが書き込まれる。
メモリバンク１３４には、ＣＰＵ３１により演算用データbank3 が書き込まれ、処理部３７の出力データbank3wが書き込まれる。
メモリバンク１３５には、ＣＰＵ３１により係数データmemc0が書き込まれる。
メモリバンク１３６には、ＣＰＵ３１により係数データmemc1が書き込まれる。
【０１０４】
図６の再構成可能な処理部３７を構成する各演算装置１０１〜１１０は、基本的には、乗算、加算、あるいは減算の２項演算を行う。
【０１０５】
図６において、メモリバンク１３５の出力は演算装置１０１、演算装置１０３に供給され、メモリ１３６の出力は演算装置１０２、演算装置１０４に供給される。
メモリバンク１３１、メモリバンク１３２への入出力は、メモリインタフェース１２１およびメモリインタフェース１２２を介して行われ、メモリバンク１３３、メモリバンク１３４への入出力は、メモリインタフェース１２３およびメモリインタフェース１２４を介して行われる。
【０１０６】
演算装置１０５には演算装置１０１と演算装置１０２の演算結果が供給され、演算装置１０６には演算装置１０３と演算装置１０４の演算結果が供給される。
【０１０７】
選択装置１１１は、メモリインタフェース１２２の一方の出力と、演算装置１０１の演算結果のいずれかを選択し、演算装置１０７および演算装置１０８の一方の入力端子に供給する。
選択装置１１２は、メモリインタフェース１２２の他方の出力と、演算装置１０２の演算結果と、演算装置１０５の演算結果のいずれかを選択し、演算装置１０７および演算装置１０８の他方の入力端子に供給する。
選択装置１１３は、メモリインタフェース１２２の他方の出力と、メモリインタフェース１２４の一方の出力と、演算装置１０８の演算結果と演算装置１０９の演算結果と演算装置１１０の演算結果のいずれかを選択し、演算装置１０１および演算装置１０４に供給する。
選択装置１１４は、メモリインタフェース１２２の一方の出力と、メモリインタフェース１２４の他方の出力と、演算装置１０７の結果と演算装置１０８の演算結果と演算装置１１０の演算結果のいずれかを選択し、演算装置１０２および演算装置１０３に供給する。
選択装置１１５は、メモリインタフェース１２４の一方の出力と、演算装置１０３の演算結果を選択し、演算装置１０９および演算装置１１０の一方の入力端子に供給する。
選択装置１１６は、メモリインタフェース１２４の他方の出力と、演算装置１０４の演算結果と、演算装置１０６の演算結果のいずれかを選択し、演算装置１０９および演算装置１１０の他方の入力端子に供給する。
選択装置１１７は、演算装置１０１と演算装置１０２と演算装置１０７の演算結果のいずれかを選択し、メモリインタフェース１２１に供給する。
選択装置１１８は、演算装置１０８と演算装置１０５の演算結果のいずれかを選択し、メモリインタフェース１２１に供給する。
選択装置１１９は、演算装置１０３と演算装置１０４と演算装置１０９の演算結果のいずれかを選択し、メモリインタフェース１２３に供給する。
選択装置１２０は、演算装置１１０と演算装置１０６の演算結果のいずれかを選択し、メモリインタフェース１２３に供給する。
【０１０８】
再構成可能な処理部３７において次のように、選択装置１１１〜１２０の選択、演算装置１０１〜１１０の演算モードを設定することでＤＣＴのループ演算を実行させることが可能である。
なお、この選択装置１１１〜１２０の選択、演算装置１０１〜１１０の演算モードの設定は、たとえば選択装置３４で選択された第１の経路選択情報メモリ３２による第１の経路選択情報ｃｏｎｆｉｇ１、および第２の経路選択情報メモリ３３による第２の経路選択情報ｃｏｎｆｉｇ２に基づいて行われる。
【０１０９】
経路選択情報に基づいて、選択装置１１１〜１２０は、以下の経路を選択するように設定される。
選択装置１１１と選択装置１１２はメモリインタフェース１２２の出力を選択し、選択装置１１５と選択装置１１６はメモリインタフェース１２４の出力を選択する。
選択装置１１３は演算装置１１０の演算結果を選択し、選択装置１１４は演算装置１０８の演算結果を選択する。
選択装置１１８は演算装置１０５の演算結果を選択し、選択装置１２０は演算装置１０６の演算結果を選択する。
選択装置１１７は演算装置１０７の演算結果を選択し、選択装置１１９は演算装置１０９の演算結果を選択するように設定される。
その結果、図７中に太い実線で示す演算経路が形成される。
【０１１０】
演算装置１０１、演算装置１０２、演算装置１０３、演算装置１０４は乗算を実行し、演算装置１０５は減算を実行し、演算装置１０６は加算を実行し、演算装置１０７は加算を実行し、演算装置１０８は減算を実行し、演算装置１０９は条件により加算と減算を切り替える演算を実行し、演算装置１１０は符号反転をして条件により加算と減算を切り替える演算を実行するように設定される。
【０１１１】
上記の設定を行うことで、本発明のＤＣＴ演算における第１の２項演算を演算装置１０７で実行させ、第２の２項演算を演算装置１０９で実行させ、第３の２項演算を演算装置１０８で実行させ、第４の２項演算を演算装置１１０で実行させ、第５の２項演算を演算装置１０１で実行させ、第６の２項演算を演算装置１０２で実行させ、第７の２項演算を演算装置１０３で実行させ、第８の２項演算を演算装置１０４で実行させ、第９の２項演算を演算装置１０６で実行させ、第１０の２項演算を演算装置１０５で実行させる。
【０１１２】
アドレス生成装置３５は第１の実施形態で示したアドレスを順次生成し、メモリから供給されるデータおよび供給するデータを制御する。
【０１１３】
この制御下において、メモリバンク１３１に格納されている第１のデータbank0 はメモリインタフェース１２２、選択装置１１１を介して第１の入力データとして演算装置１０７および演算装置１０８に入力される。
メモリバンク１３２に格納されている第２のデータbank1 はメモリインタフェース１２２、選択装置１１２を介して第２の入力データとして演算装置１０７および演算装置１０８に入力される。
メモリバンク１３３に格納されている第３のデータbank2 はメモリインタフェース１２４、選択装置１１５を介して第３の入力データとして演算装置１０９および演算装置１１０に入力される。
メモリバンク１３４に格納されている第４のデータbank3 はメモリインタフェース１２４、選択装置１１６を介して第４の入力データとして演算装置１０９および演算装置１１０に入力される。
メモリバンク１３５に格納されている第１の係数データmemc0は演算装置１０１および演算装置１０３に入力される。
メモリバンク１３６に格納されている第２の係数データmemc1は演算装置１０２および演算装置１０４に入力される。
【０１１４】
演算装置１０７においては、第１の入力データbank0 と第２の入力データbank1 に対して第１の２項演算である加算処理が行われる。演算装置１０７の演算結果（bank0+bank1)は、選択装置１１７、メモリインタフェース１２１を介して第１の出力データbank0w(=bank0+bank1)がアドレス生成装置３５で生成されたメモリバンク１３１のアドレス [adr0 w]に書き戻される。
この一連の処理が、図２のステップＳＴ４の処理に対応し、本発明のＤＣＴ演算における第１の演算経路部（第１の演算ステップ）による処理である。
【０１１５】
演算装置１０８においては、第１の入力データbank0 と第２の入力データbank1 に対して第３の２項演算である減算処理が行われる。演算装置１０８の演算結果（bank0-bank1)は、選択装置１１４を介して第１の中間結果として演算装置１０２および演算装置１０３に入力される。
この処理が、本発明のＤＣＴ演算における第３の演算経路部（第３の演算ステップ）による処理である。
【０１１６】
演算装置１０９においては、第３の入力データbank2 と第４の入力データbank3 に対してループ変数ｊの条件（ｊが０か０以外）により第２の２項演算である加算または減算処理が行われる。演算装置１０９の演算結果（bank2+bank3)、または、（bank2-bank3)は、選択装置１１９、メモリインタフェース１２３を介して第３の出力データbank2w(=bank2+bank3 またはbank2-bank3)がアドレス生成装置３５で生成されたメモリバンク１３３のアドレス [adr2 w]に書き戻される。
この一連の処理が、図２のステップＳＴ６、ＳＴ７、ＳＴ８の処理に対応し、本発明のＤＣＴ演算における第２の演算経路部（第２の演算ステップ）による処理である。
【０１１７】
演算装置１１０においては、第３の入力データbank2 と第４の入力データbank3 に対して一方の入力の符号反転をして、ループ変数ｊの条件（ｊが０か０以外）により第４の２項演算である加算または減算処理が行われる。演算装置１１０の演算結果（-bank2+bank3) 、または、（-bank2-bank3) は、選択装置１１３を介して第２の中間結果として演算装置１０１および演算装置１０４に入力される。
この処理が、本発明のＤＣＴ演算における第４の演算経路部（第４の演算ステップ）による処理である。
【０１１８】
演算装置１０１においては、演算装置１１０による第２の中間結果（-bank2+bank3) 、または、（-bank2-bank3)と第１の係数データmemc0に対して第５の２項演算としての乗算処理が行われる。演算装置１０１の演算結果（memc0*(-bank2+bank3) ）または（memc0*(-bank2-bank3) ）が第３の中間結果として演算装置１０５に入力される。
この処理が、本発明のＤＣＴ演算における第５の演算経路部（第５の演算ステップ）による処理である。
【０１１９】
演算装置１０２においては、演算装置１０８による第１の中間結果(bank0-bank1) と第２の係数データmemc1に対して第６の２項演算としての乗算処理が行われる。演算装置１０２の演算結果（memc1*(bank0-bank1)）が第４の中間結果として演算装置１０５に入力される。
この処理が、本発明のＤＣＴ演算における第６の演算経路部（第６の演算ステップ）による処理である。
【０１２０】
演算装置１０５においては、演算装置１０１による第３の中間結果（（memc0*(-bank2+bank3) ）または（memc0*(-bank2-bank3) ）と演算装置１０２による第４の演算結果（memc1*(bank0-bank1)）に対して第１０の２項演算である減算処理が行われる。
演算装置１０５の演算結果（memc0*(-bank2+bank3)-memc1*(bank0-bank1)）、または、(memc0*(-bank2-bank3)-memc1*(bank0-bank1))は選択装置１１８、メモリインタフェース１２１を介して第２の出力データbank1w(=memc0*(-bank2+bank3)-memc1*(bank0-bank1)、または memc0*(-bank2-bank3)-memc1*(bank0-bank1)) がアドレス生成装置３５で生成されたメモリバンク１３２のアドレス [adr1 w]に書き戻される。
この一連の処理が、図２のステップＳＴ６、ＳＴ９、ＳＴ１０の処理に対応し、本発明のＤＣＴ演算における第９の演算経路部（第９の演算ステップ）による処理である。
【０１２１】
演算装置１０３においては、演算装置１０８による第１の中間結果（bank0-bank1) と第１の係数データmemc0に対して第７の２項演算としての乗算処理が行われる。演算装置１０３の演算結果(memc0*（bank0-bank1))が第５の中間結果として演算装置１０６に入力される。
この処理が、本発明のＤＣＴ演算における第７の演算経路部（第７の演算ステップ）による処理である。
【０１２２】
演算装置１０４においては、演算装置１１０による第２の中間結果（-bank2+bank3) 、または、（-bank2-bank3)と第２の係数データmemc1に対して第８の２項演算としての乗算処理が行われる。演算装置１０４の演算結果(memc1*（-bank2+bank3)) 、または、(memc1*（-bank2-bank3))が第６の中間結果として演算装置１０６に入力される。
この処理が、本発明のＤＣＴ演算における第８の演算経路部（第８の演算ステップ）による処理である。
【０１２３】
演算装置１０６においては、演算装置１０３による第５の演算結果（(memc0*（bank0-bank1))と演算装置１０４による第６の中間結果(memc1*（-bank2+bank3)) 、または、(memc1*（-bank2-bank3))とに対して第９の２項演算である加算処理が行われる。
演算装置１０６の演算結果memc0*(bank0-bank1)+memc1*(-bank2+bank3)、または、memc0*(bank0-bank1)+memc1*(-bank2-bank3)は選択装置１２０、メモリインタフェース１２３を介して第４の出力データbank3w(=memc0*(bank0-bank1)+memc1*(-bank2+bank3)、または、memc0*(bank0-bank1)+memc1*(-bank2-bank3)) がアドレス生成装置３５で生成されたメモリバンク１３４のアドレス [adr3 w]に書き戻される。
この一連の処理が、図２のステップＳＴ５の処理に対応し、本発明のＤＣＴ演算における第１０の演算経路部（第１０の演算ステップ）による処理である。
【０１２４】
ＤＣＴのループ演算実行後に、再構成可能な処理部３７において次のように、選択装置の選択、演算装置の演算モードを設定することでポスト演算を実行させることが可能である。
なお、この選択装置１１１〜１２０の選択、演算装置１０１〜１１０の演算モードの設定は、たとえば選択装置３４で選択された第１の経路選択情報メモリ３２による第１の経路選択情報ｃｏｎｆｉｇ１、および第２の経路選択情報メモリ３３による第２の経路選択情報ｃｏｎｆｉｇ２に基づいて行われる。
【０１２５】
経路選択情報に基づいて、選択装置１１１〜１２０は、以下の経路を選択するように設定される。
選択装置１１１および選択装置１１２はメモリインタフェース１２２の出力を選択し、選択装置１１３は演算装置１０８の演算結果を選択し、選択装置１１４は演算装置１０７の演算結果を選択する。
選択装置１１８は演算装置１０５の演算結果を選択し、選択装置１１７は演算装置１０２の演算結果を選択する。
その結果、図８中に太い実線で示す演算経路が形成される。
【０１２６】
演算装置１０１および演算装置１０２は乗算を実行し、演算装置１０７は加算を実行し、演算装置１０８は減算を実行し、演算装置１０５は一方の入力に相当する演算装置１０１の出力をそのまま出力するように設定される。
【０１２７】
上記の設定を行うことで、本発明のＤＣＴ演算におけるポスト処理の第１１の２項演算である加算を演算装置１０７で実行させ、第１２の２項演算である減算を演算装置１０８で実行させ、第１３の２項演算である乗算を演算装置１０１で実行させ、第１４の２項演算である乗算を演算装置１０２で実行させる。
【０１２８】
アドレス生成装置は第１の実施形態で示したアドレスを順次生成し、メモリから供給されるデータおよび供給するデータを制御する。
【０１２９】
この制御下において、メモリバンク１３１に格納されている第１のデータbank0 はメモリインタフェース１２２、選択装置１１１を介して第１の入力データとして演算装置１０７および演算装置１０８に入力される。
メモリバンク１３２に格納されている第２のデータbank1 はメモリインタフェース１２２、選択装置１１２を介して第２の入力データとして演算装置１０７および演算装置１０８に入力される。
メモリバンク１３５に格納されている係数データconst は演算装置１０１に入力される。
メモリバンク１３６に格納されている係数データconst は演算装置１０２に入力される。
【０１３０】
演算装置１０７においては、第１の入力データbank0 と第２の入力データbank1 に対して第１１の２項演算である加算処理が行われる。演算装置１０７の演算結果（bank0+bank1)は、選択装置１３３を介して第１の中間データとして演算装置１０２に入力される。
この処理が、本発明のＤＣＴ演算におけるポスト演算処理の第１１の演算経路部（第１１のステップ）による処理である。
【０１３１】
演算装置１０８においては、第１の入力データbank0 と第２の入力データbank1 に対して第１２の２項演算である減算処理が行われる。演算装置１０８の演算結果（bank0-bank1)は、選択装置１１３を介して第２の中間データとして演算装置１０１に入力される。
この処理が、本発明のＤＣＴ演算におけるポスト演算処理の第１２の演算経路部（第１２のステップ）による処理である。
【０１３２】
演算装置１０１においては、演算装置１０８による演算結果（bank0-bank1)と係数データconst に対して第１３の２項演算としての乗算処理が行われる。演算装置１０１の演算結果（const *(bank0-bank1)）が演算装置１０５、選択装置１１８、メモリインタフェース１２１を介してアドレス生成装置３５で生成されたメモリバンク１３２のアドレス [adr1 w]に書き戻される。
この処理が、本発明のＤＣＴ演算におけるポスト演算処理の第１４の演算経路部（第１４のステップ）による処理である。
【０１３３】
演算装置１０２においては、演算装置１０７による演算結果（bank0+bank1)と係数データconst に対して第１４の２項演算としての乗算処理が行われる。演算装置１０１の演算結果（const *(bank0+bank1)）が選択装置１１７、メモリインタフェース１１７を介してアドレス生成装置３５で生成されたメモリバンク１３１のアドレス [adr0 w]に書き戻される。
この処理が、本発明のＤＣＴ演算におけるポスト演算処理の第１３の演算経路部（第１３のステップ）による処理である。
【０１３４】
以上のＤＣＴループ演算とポスト演算を再構成可能な演算装置に行わせることでＤＣＴの演算を実現することができる。
【０１３５】
再構成可能な処理部３７において次のように、選択装置の選択、演算装置の演算モードを設定することでＩＤＣＴのプリ演算を実行させることが可能である。
なお、この選択装置１１１〜１２０の選択、演算装置１０１〜１１０の演算モードの設定は、たとえば選択装置３４で選択された第１の経路選択情報メモリ３２による第１の経路選択情報ｃｏｎｆｉｇ１、および第２の経路選択情報メモリ３３による第２の経路選択情報ｃｏｎｆｉｇ２に基づいて行われる。
【０１３６】
経路選択情報に基づいて、選択装置１１１〜１２０は、以下の経路を選択するように設定される。
【０１３７】
選択装置１１３はメモリインタフェース１２２の他方の出力を選択し、選択装置１１４はメモリインタフェース１２２の一方の出力を選択する。
選択装置１１１は演算装置１０１の演算結果を選択し、選択装置１１２は演算装置１０２の演算結果を選択する。
選択装置１１７は演算装置１０７の演算結果を選択し、選択装置１１８は演算装置１０８の演算結果を選択する。
その結果、図９中に太い実線で示す演算経路が形成される。
【０１３８】
演算装置１０１、演算装置１０２は乗算を実行し、演算装置１０８は加算を、演算装置１０７は減算を実行するように設定される。
【０１３９】
上記の設定を行うことで、本発明のＩＤＣＴ演算におけるプリ処理の第１１の２項演算である乗算を演算装置１０１で実行させ、第１２の２項演算である乗算を演算装置１０２で実行させ、第１３の２項演算である加算を演算装置１０７で実行させ、第１４の２項演算である減算を演算装置１０８で実行させる。
【０１４０】
アドレス生成装置は第２の実施形態で示したアドレスを順次生成し、メモリから供給されるデータおよび供給するデータを制御する。
【０１４１】
この制御下において、メモリバンク１３１に格納されている第１のデータbank0 はメモリインタフェース１２２、選択装置１１４を介して第１の入力データとして演算装置１０２に入力される。
メモリバンク１３２に格納されている第２のデータbank1 はメモリインタフェース１２２、選択装置１１３を介して第２の入力データとして演算装置１０１に入力される。
メモリバンク１３５に格納されている係数データconst は演算装置１０１に入力される。
メモリバンク１３６に格納されている係数データconst は演算装置１０２に入力される。
【０１４２】
演算装置１０１においては、第２の入力データbank1 と係数データconst に対して第１１の２項演算としての乗算処理が行われる。演算装置１０１の演算結果（const *bank1)
が選択装置１１１を介して第１の中間データとして演算装置１０７および演算装置１０８に入力される。
この処理が、本発明のＩＤＣＴ演算のプリ演算処理の第１１の演算経路部（第１１のステップ）により処理である。
【０１４３】
演算装置１０２においては、第１の入力データbank0 と係数データconst に対して第１２の２項演算としての乗算処理が行われる。演算装置１０２の演算結果（const *bank0)
が選択装置１１２を介して第２の中間データとして演算装置１０７および演算装置１０８に入力される。
この処理が、本発明のＩＤＣＴ演算のプリ演算処理の第１２の演算経路部（第１２のステップ）により処理である。
【０１４４】
演算装置１０７においては、第１の中間データ（const *bank1) と第２の中間データ（const *bank0) に対して第３４の２項演算である加算処理が行われる。演算装置１０７の演算結果（const *bank1+const *bank0)が第１の出力データとして選択装置１１７、メモリインタフェース１１７を介してアドレス生成装置３５で生成されたメモリバンク１３１のアドレス [adr0 w]に書き戻される。
この処理が、本発明のＩＤＣＴ演算のプリ演算処理の第１３の演算経路部（第１３のステップ）により処理である。
【０１４５】
演算装置１０８においては、第１の中間データ（const *bank1) と第２の中間データ（const *bank0) に対して第１４の２項演算である減算処理が行われる。演算装置１０７の演算結果（const *bank1-const *bank0)が第２の出力データとして選択装置１１８、メモリインタフェース１１７を介してアドレス生成装置３５で生成されたメモリバンク１３２のアドレス [adr1 w]に書き戻される。
この処理が、本発明のＩＤＣＴ演算のプリ演算処理の第１４の演算経路部（第１４のステップ）により処理である。
【０１４６】
プリ演算実行後次のように、再構成可能な処理部３７において次のように、選択装置の選択、演算装置の演算モードを設定することでＩＤＣＴのループ演算を実行させることが可能である。
なお、この選択装置１１１〜１２０の選択、演算装置１０１〜１１０の演算モードの設定は、たとえば選択装置３４で選択された第１の経路選択情報メモリ３２による第１の経路選択情報ｃｏｎｆｉｇ１、および第２の経路選択情報メモリ３３による第２の経路選択情報ｃｏｎｆｉｇ２に基づいて行われる。
【０１４７】
経路選択情報に基づいて、選択装置１１１〜１２０は、以下の経路を選択するように設定される。
選択装置１１１はメモリインタフェース１２２の一方の出力を選択し、選択装置１１２は演算装置１０５の演算結果を選択する。
選択装置１１３はメモリインタフェース１２２の他方の出力を、選択装置１１４はメモリインタフェース１２４の他方の出力を選択する。
選択装置１１５はメモリインタフェース１２４の一方の出力を選択し、選択装置１１６は演算装置１０６の演算結果を選択する。
選択装置１１７は演算装置１０７の演算結果を選択し、演算装置１１８は演算装置１０８の演算結果を選択する。
選択装置１１９は演算装置１０９の演算結果を選択し、演算装置１２０は演算装置１１０の演算結果を選択する。
その結果、図１０中に太い実線で示す演算経路が形成される。
【０１４８】
演算装置１０１、演算装置１０２、演算装置１０３、演算装置１０４は乗算を実行し、演算装置１０５は加算を実行し、演算装置１０６は減算を実行し、演算装置１０７は加算を、演算装置１０８は減算を、演算装置１０９は減算を、演算装置１１０は条件により一方の入力の符号反転をして、加算と減算を切り替える演算を実行するように設定される。
【０１４９】
上記の設定を行うことで、本発明のＩＤＣＴ演算における第１の２項演算である乗算を演算装置１０１で実行させ、第２の２項演算である乗算を演算装置１０２で実行させ、第３の２項演算である乗算を演算装置１０３で実行させ、第４の２項演算である乗算を演算装置１０４で実行させ、第５の２項演算である加算を演算装置１０５で実行させ、第６の２項演算である減算を演算装置１０６で実行させ、第７の２項演算を演算装置１０７である加算で実行させ、第８の２項演算である減算を演算装置１０８で実行させ、第９の２項演算である減算を演算装置１０９で実行させ、第１０の２項演算である条件により一方の入力の符号反転をして、加算と減算を切り替える演算を演算装置１１０で実行させる。
【０１５０】
アドレス生成装置は第２の実施形態で示したアドレスを順次生成し、メモリから供給されるデータおよび供給するデータを制御する。
【０１５１】
この制御下において、メモリバンク１３１に格納されている第１のデータbank0 はメモリインタフェース１２２、選択装置１１１を介して第１の入力データとして演算装置１０７および演算装置１０８に入力される。
メモリバンク１３２に格納されている第２のデータbank1 はメモリインタフェース１２２、選択装置１１３を介して第２の入力データとして演算装置１０１および演算装置１０４に入力される。
メモリバンク１３３に格納されている第３のデータbank2 はメモリインタフェース１２４、選択装置１１５を介して第３の入力データとして演算装置１０９および演算装置１１０に入力される。
メモリバンク１３４に格納されている第４のデータbank3 はメモリインタフェース１２４、選択装置１１４を介して第４の入力データとして演算装置１０２および演算装置１０３に入力される。
メモリバンク１３５に格納されている第１の係数データmemc0は演算装置１０１および演算装置１０３に入力される。
メモリバンク１３６に格納されている第２の係数データmemc1は演算装置１０２および演算装置１０４に入力される。
【０１５２】
演算装置１０１においては、第２の入力データbank0 と第１の係数データmemc0に対して第１の２項演算としての乗算処理が行われる。演算装置１０１の演算結果（memc0*bank1) が第１の中間結果として演算装置１０５に入力される。
この処理は、本発明のＩＤＣＴ演算における第１の演算経路部（第１の演算ステップ）による処理である。
【０１５３】
演算装置１０２においては、第４の入力データbank3 と第２の係数データmemc1に対して第２の２項演算としての乗算処理が行われる。演算装置１０２の演算結果（memc1*bank3) が第２の中間結果として演算装置１０５に入力される。
この処理は、本発明のＩＤＣＴ演算における第２の演算経路部（第２の演算ステップ）による処理である。
【０１５４】
演算装置１０５においては、演算装置１０１による第１の中間結果（memc0*bank1) と演算装置１０２による第２の演算結果（memc1*bank3）に対して第５の２項演算である加算処理が行われる。
演算装置１０５の演算結果（memc0*bank1+memc1*bank3 ）は選択装置１１２を介して第５の中間データとして演算装置１０７および演算装置１０８に入力される。
この処理が、本発明のＩＤＣＴ演算における第５の演算経路部（第５の演算ステップ）による処理である。
【０１５５】
演算装置１０７においては、第５の中間結果（memc0*bank1+memc1*bank3 ）と第１の力データbank0 に対して第７の２項演算である加算処理が行われる。演算装置１０７の演算結果（bank0+(memc0*bank1+memc1*bank3) ）は、選択装置１１７、メモリインタフェース１２１を介して第１の出力データbank0w(=bank0+(memc0*bank1+memc1*bank3) ）としてアドレス生成装置３５で生成されたメモリバンク１３１のアドレス [adr0 w]に書き戻される。
この一連の処理が、図４のステップＳＴ２４の処理に対応し、本発明のＩＤＣＴ演算における第７の演算経路部（第７の演算ステップ）による処理である。
【０１５６】
演算装置１０８においては、第５の中間結果（memc0*bank1+memc1*bank3 ）と第１の力データbank0 に対して第８の２項演算である減算処理が行われる。演算装置１０８の演算結果（bank0-(memc0*bank1+memc1*bank3) ）は、選択装置１１８、メモリインタフェース１２１を介して第２の出力データbank0w(=bank0-(memc0*bank1+memc1*bank3) ）としてアドレス生成装置３５で生成されたメモリバンク１３２のアドレス [adr1 w]に書き戻される。
この一連の処理が、図４のステップＳＴ２５の処理に対応し、本発明のＩＤＣＴ演算における第８の演算経路部（第８の演算ステップ）による処理である。
【０１５７】
演算装置１０３においては、第４の入力データbank3 と第１の係数データmemc0に対して第３の２項演算としての乗算処理が行われる。演算装置１０３の演算結果（memc0*bank3) が第３の中間結果として演算装置１０６に入力される。
この処理が、本発明のＩＤＣＴ演算における第３の演算経路部（第３の演算ステップ）による処理である。
【０１５８】
演算装置１０４においては、第２の入力データbank1 と第２の係数データmemc1に対して第４の２項演算としての乗算処理が行われる。演算装置１０４の演算結果（memc1*bank1) が第４の中間結果として演算装置１０６に入力される。
この処理が、本発明のＩＤＣＴ演算における第４の演算経路部（第４の演算ステップ）による処理である。
【０１５９】
演算装置１０６においては、演算装置１０３による第３の中間結果（memc0*bank3) と演算装置１０４による第４の演算結果（memc1*bank1）に対して第６の２項演算である減算処理が行われる。
演算装置１０６の演算結果（memc0*bank3-memc1*bank1 ）は選択装置１１６を介して第６の中間データとして演算装置１０９および演算装置１１０に入力される。
この処理が、本発明のＩＤＣＴ演算における第６の演算経路部（第６の演算ステップ）による処理である。
【０１６０】
演算装置１０９においては、第６の中間結果（memc0*bank3-memc1*bank1 ）と第３の力データbank2 に対して第９の２項演算である減算処理が行われる。演算装置１０９の演算結果（bank2-(memc0*bank3-memc1*bank1) ）は、選択装置１１９、メモリインタフェース１２３を介して第３の出力データbank2w(=bank2-(memc0*bank3-memc1*bank1) ）としてアドレス生成装置３５で生成されたメモリバンク１３３のアドレス [adr2 w]に書き戻される。
この一連の処理が、図４のステップＳＴ２５の処理に対応し、本発明のＩＤＣＴ演算における第９の演算経路部（第９の演算ステップ）による処理である。
【０１６１】
演算装置１１０においては、第６の中間結果（memc0*bank3-memc1*bank1 ）と第３の入力データbank2 に対して一方の入力の符号反転をして、ループ変数ｊの条件（ｊが０か０以外）により第１０の２項演算である加算または減算処理が行われる。
演算装置１１０の演算結果（bank2 +(memc0*bank3-memc1*bank1)）、または、（-bank2 -(memc0*bank3+memc1*bank1) ）は、選択装置１２０、メモリインタフェース１２３を介して第４の出力データbank3w(=（bank2 +(memc0*bank3-memc1*bank1)）、または、（-bank2 -(memc0*bank3+memc1*bank1))）としてアドレス生成装置３５で生成されたメモリバンク１３４のアドレス [adr3 w]に書き戻される。
この一連の処理が、図４のステップＳＴ２７、ＳＴ２８、ＳＴ２９の処理に対応し、本発明のＩＤＣＴ演算における第１０の演算経路部（第１０の演算ステップ）による処理である。
【０１６２】
以上のプリ演算とＩＤＣＴループ演算を再構成可能な演算装置に行わせることでＩＤＣＴの演算を実現することができる。
【０１６３】
以上説明したように、本発明によれば、従来技術である拡張ＦＦＴの冗長な演算を取り除いたＤＣＴあるいはＩＤＣＴ演算とは異なり、各ステージごとの繰り返しループのなかに２種類の繰り返しループをもつ構造になっていない。また制御構造として条件判定も含むこともないためループの制御構造が規則的である。
したがって、アクセスするデータのインデックス計算が煩雑にならず、制御処理も単純で済むといった効果がある。そのためハードウェアで実現する場合には規模が小さく、単純な設計が行え、実装上の誤りの混入する可能性も低い。
また、制御構造が規則的であり単純になるため、再構成可能な演算装置を使い本方式を実現することも可能になるという効果もある。
【図面の簡単な説明】
【０１６４】
【図１】本第１の実施形態に係るＤＣＴ演算を実行する演算装置の基本構成を示すブロック図である。
【図２】ＤＣＴ演算プログラムに従った本発明に係るＤＣＴ演算処理のフローチャートである。
【図３】本第２の実施形態に係るＩＤＣＴ演算を実行する演算装置の基本構成を示すブロック図である。
【図４】ＩＤＣＴ演算プログラムに従った本発明に係るＩＤＣＴ演算処理のフローチャートである。
【図５】動的再構成を行いＤＣＴとＩＤＣＴ演算を実行する本発明の第３の実施形態に係る再構成可能な演算装置を採用した演算システムを示す構成図である。
【図６】動的再構成を行いＤＣＴとＩＤＣＴ演算を実行する第３の実施形態に係る再構成可能な演算装置およびデータメモリの構成例を示すブロック図である。
【図７】図６の回路においてＤＣＴにループ演算を行うために動的に再構成された演算経路を示す図である。
【図８】図６の回路においてＤＣＴ演算後のポスト処理を行うために動的に再構成された演算経路を示す図である。
【図９】図６の回路においてＩＤＣＴ演算前のプリ処理を行うために動的に再構成された演算経路を示す図である。
【図１０】図６の回路においてＩＤＣＴにループ演算を行うために動的に再構成された演算経路を示す図である。
【符号の説明】
【０１６５】
１０…ＤＣＴ演算装置、１１…メモリ、１２…処理部、２０…ＩＤＣＴ演算装置、２１…メモリ、２２…処理部、３０…演算システム、３１制御回路としてのＣＰＵ、３２…第１の経路選択情報メモリ、３３…第２の経路選択情報メモリ、３４…選択装置、３５…アドレス生成装置、３６…データメモリ、３７…再構成可能な演算装置としての処理部、１０１〜１１０…演算装置、１１１〜１２０…選択装置、１２１〜１２４…メモリインタフェース、１３１〜１３６…メモリバンク。
【図１】
2005322175.tif 000003
【図２】
2005322175.tif 000004
【図３】
2005322175.tif 000005
【図４】
2005322175.tif 000006
【図５】
2005322175.tif 000007
【図６】
2005322175.tif 000008
【図７】
2005322175.tif 000009
【図８】
2005322175.tif 000010
【図９】
2005322175.tif 000011
【図１０】
2005322175.tif 000012