(57)【要約】【課題】従来開発された所定のＤＣＴアルゴリズムをベースとして、特殊構造の処理メモリを用いることによってリソースシェアリングを促進させ、これにより、必要とされる部材数の減少、ファンクションブロックエリアの減少、消費電力の減少、更には、処理スピードの高速化、あるいは、出力レイテンシイの減少を図る。【解決手段】離散コサイン変換を実行するために用いるＤＣＴプロセッサであって、データにパームテーションを行う記憶・処理手段と、データを所定のＤＣＴアルゴリズムに従って計算し出力する計算手段と、を備え、記憶・処理手段と計算手段との間でデータを所定回数ループさせ、計算手段の出力部から読み出されるデータに基づいて離散コサイン変換の結果を得る。【選択図】          図１
2005309474.tif 000002
【特許請求の範囲】
【請求項１】
離散コサイン変換を実行するために用いるＤＣＴプロセッサにおいて、
データにパームテーションを行う記憶・処理装置と、
所定のＤＣＴアルゴリズムに従って計算を行う計算装置と、を備え、
前記記憶・処理装置と前記計算装置との間でデータを所定回数ループさせ、前記計算装置から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴とするＤＣＴプロセッサ。
【請求項２】
離散コサイン変換を実行するために用いるＤＣＴプロセッサにおいて、
複数の入力部と複数の出力部とを有し、前記複数の入力部を通じて入力される複数のデータにパームテーションを行った後に前記複数の出力部から出力する、前記記憶・処理装置と、
前記記憶・処理装置の出力部に接続された複数の入力部と複数の出力部とを有し、前記複数の入力部から入力されたデータを所定のＤＣＴアルゴリズムに従って計算し前記複数の出力部から出力する計算装置と、
前記計算装置の出力部に接続された複数の入力部と前記記憶・処理装置の入力部に接続された複数の出力部とを有し、前記計算装置の出力部から出力された複数のデータを記憶し前記複数の出力部から出力する記憶装置と、
前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と、を備え、
前記記憶装置の出力部から出力された複数のデータを、前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間を所定回数ループさせ、前記記憶装置の出力部から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴とするＤＣＴプロセッサ。
【請求項３】
３２個のサンプリングポイントでサンプリングすることによって得られた３２個のデータに対して離散コサイン変換を行う３２ポイントＤＣＴプロセッサにおいて、
８個の入力部と８個の出力部とを有し、一度に８個ずつ計４回、計３２個のデータを入力し且つ出力することができる、記憶・処理装置であって、前記８個の入力部を通じて一度に８個ずつ計４回、順次に所定の記憶位置に書き込まれた計３２個のデータを前記８個の出力部に所定の順番で出力する、前記記憶・処理装置と、
各々が、前記記憶・処理装置の８個の出力部のうちの４個の出力部にそれぞれ接続された４個の入力部と４個の出力部とを有し、前記８個の入力部から入力されたデータを一度に４個ずつＣＧＡ−ＤＣＴアルゴリズムに従って計算し、前記４個の出力部からそれぞれ出力する、２個の計算装置と、
前記２個の計算装置の計８個の出力部にそれぞれ接続された８個の入力部と前記記憶・処理装置の計８個の入力部にそれぞれ接続された８個の出力部とを有し、一度に８個ずつ計４回、計３２個のデータを先入れ先出し方式で書き込み且つ読み出すことができる、記憶装置であって、前記計算装置の各出力部から出力された計８個のデータを計４回、計３２個のデータを記憶する、前記記憶装置と、
前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と、
を備えることを特徴とするＤＣＴプロセッサ。
【請求項４】
請求項３記載のＤＣＴプロセッサにおいて、更に、前記ＤＣＴプロセッサの外部から内部にデータを入力する入力手段が、前記記憶・処理装置の直前に設けられているＤＣＴプロセッサ。
【請求項５】
請求項４記載のＤＣＴプロセッサにおいて、前記記憶・処理装置は、前記データを前記所定の記憶位置に書き込む際、前記入力されるデータと前記出力されるデータとの対応付けを変更しない第１の動作モードと、前記入力されるデータと前記出力されるデータとの対応付けを変更する第２の動作モードのいずれかで動作するものであって、前記入力手段からのデータは前記第１の動作モードで処理される、ＤＣＴプロセッサ。
【請求項６】
請求項５記載のＤＣＴプロセッサにおいて、前記第１の動作モードで動作する記憶・処理装置で処理された計３２個のデータを、前記計算装置、前記記憶装置で順に処理し、その後、前記記憶装置の出力部から読み出された計３２個のデータを、前記並び替え手段で処理した後に、前記第２の動作モードで動作する前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間をループさせ、４回目のループ時に前記記憶装置の出力部から読み出されたデータに基づいて、前記データを離散コサイン変換したときの結果を求めるＤＣＴプロセッサ。
【請求項７】
請求項３記載のＤＣＴプロセッサにおいて、更に、前記ＤＣＴプロセッサの外部から内部にデータを入力する入力手段が、前記記憶・処理装置と前記計算装置の間に設けられているＤＣＴプロセッサ。
【請求項８】
請求項３記載のＤＣＴプロセッサにおいて、更に、前記ＤＣＴプロセッサの外部から内部にデータを入力する入力手段が、前記計算装置と前記記憶装置の間に設けられているＤＣＴプロセッサ。
【請求項９】
請求項３に記載のＤＣＴプロセッサにおいて、前記記憶・処理装置は、計３２個の記憶位置を有しており、前記３２個のデータは、これら３２個のいずれかの記憶位置に１つずつ書き込み且つ読み出されるＤＣＴプロセッサ。
【請求項１０】
請求項９記載のＤＣＴプロセッサにおいて、前記３２個の記憶位置の各々に書き込みラインと読み出しラインが設けられており、これら書き込みラインと読み出しラインは互いに垂直に配線され、データの書き込み及び読み出し時に共用されないＤＣＴプロセッサ。
【請求項１１】
請求項３乃至１０のいずれかに記載のＤＣＴプロセッサにおいて、前記所定の並び替えは、前記記憶装置と前記記憶・処理装置との間の伝送線をクロスさせることによって行うＤＣＴプロセッサ。
【請求項１２】
請求項３乃至１１のいずれかに記載のＤＣＴプロセッサにおいて、計３２個のデータを前記８個の出力部に所定の順番で出力するために並び替え装置を用いるＤＣＴプロセッサ。
【請求項１３】
請求項３乃至１２のいずれかに記載のＤＣＴプロセッサにおいて、前記記憶・処理装置は８Ｒ／Ｗメモリ回路であり、前記計算装置はＤＣＴ回路であり、前記記憶装置はＦＩＦＯであるＤＣＴプロセッサ。
【請求項１４】
請求項３乃至１３のいずれかに記載のＤＣＴプロセッサにおいて、前記並び替え手段は記憶・処理装置に設けられているＤＣＴプロセッサ。
【請求項１５】
離散コサイン変換を実行するために用いるＤＣＴプロセッサで使用する記憶・処理装置であって、所定のＤＣＴアルゴリズムに従って計算を行う計算装置との間でデータを所定回数ループさせ、前記計算装置から読み出されたデータに基づいて離散コサイン変換の結果を求めるようにデータにパームテーションを行うことを特徴とする記憶・処理装置。
【請求項１６】
離散コサイン変換を実行するために用いるＤＣＴプロセッサで使用する記憶・処理装置であって、該記憶・処理装置は、複数の入力部と複数の出力部とを有し、前記複数の入力部を通じて入力される複数のデータにパームテーションを行った後に前記複数の出力部から出力するものであり、
前記ＤＣＴプロセッサは、更に、
前記記憶・処理装置の出力部に接続された複数の入力部と複数の出力部とを有し、前記複数の入力部から入力されたデータを所定のＤＣＴアルゴリズムに従って計算し前記複数の出力部から出力する計算装置と、
前記計算装置の出力部に接続された複数の入力部と前記記憶・処理装置の入力部に接続された複数の出力部とを有し、前記計算装置の出力部から出力された複数のデータを記憶し前記複数の出力部から出力する記憶装置と、
前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と、を備え、
前記記憶装置の出力部から出力された複数のデータを、前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間を所定回数ループさせ、前記記憶装置の出力部から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴とする記憶・処理装置。
【請求項１７】
３２個のサンプリングポイントでサンプリングすることによって得られた３２個のデータに対して離散コサイン変換を行う３２ポイントＤＣＴプロセッサで使用する記憶・処理装置であって、該記憶・処理装置は、８個の入力部と８個の出力部とを有し、一度に８個ずつ計４回、計３２個のデータを入力し且つ出力することができ、前記８個の入力部を通じて一度に８個ずつ計４回、順次に所定の記憶位置に書き込まれた計３２個のデータを前記８個の出力部に所定の順番で出力するものであり、
前記ＤＣＴプロセッサは、更に、
各々が、前記記憶・処理装置の８個の出力部のうちの４個の出力部にそれぞれ接続された４個の入力部と４個の出力部とを有し、前記８個の入力部から入力されたデータを一度に４個ずつＣＧＡ−ＤＣＴアルゴリズムに従って計算し、前記４個の出力部からそれぞれ出力する、２個の計算装置と、
前記２個の計算装置の計８個の出力部にそれぞれ接続された８個の入力部と前記記憶・処理装置の計８個の入力部にそれぞれ接続された８個の出力部とを有し、一度に８個ずつ計４回、計３２個のデータを先入れ先出し方式で書き込み且つ読み出すことができる、記憶装置であって、前記計算装置の各出力部から出力された計８個のデータを計４回、計３２個のデータを記憶する、前記記憶装置と、
前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と、
を備えることを特徴とする記憶・処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、離散コサイン変換（以下、「ＤＣＴ」）を実行するために用いるＤＣＴプロセッサに関する。
【０００２】
【従来の技術】
離散コサイン変換は、時間軸に沿った値として表されたデータを、周波数成分に分割されたデータに変換するためのものである。離散コサイン変換を実現するＤＣＴアルゴリズムは、ＭＰＥＧやＭＰ３に代表される画像処理や周波数のサブバンドフィルタ等幅広い用途で利用されている。
【０００３】
ＤＣＴアルゴリズムを実行するＤＣＴプロセッサには、一般に、多数の加算・減算器や乗算器、膨大な数のクロスバースイッチ等が必要となる。必要とされる部材の数は、サンプリングポイントが増えるに従って急激に増加する。その主な原因は、データにパームテーション（置き換え）を行うことの複雑さにある。
【０００４】
明らかなように、部材の増加は、ＤＣＴプロセッサのファンクションブロックエリアを増大させるとともに、周辺ロジックの配線による消費電力を増大させ、また、周辺ロジックの最大配線長を増大させ、更には、プロセッサの処理スピードを低下させ出力レイテンシイの増加を招く。
【０００５】
例えば、従来のＤＣＴアルゴリズムの代表的なものとして、ＬＥＥのアルゴリズムと呼ばれるものがある。このＬＥＥのアルゴリズムを実行するＤＣＴプロセッサを用いて、３２個のサンプリングポイントで離散コサイン変換を実行するには、少なくとも２７３個の加算・減算器と８０個の乗算器と、更に膨大な数のクロスバースイッチが必要となる。実際上、このような膨大な数のリソース全てをＬＳＩに直接に配置することは非常に困難であり、また、そのような膨大な数の部材によって引き起こされる出力レイテンシイは重大な問題となる。
【０００６】
今日知られているＤＣＴプロセッサの中で最も優れているのは、このＬＥＥのアルゴリズムを利用してLippen P.E.R等によって開発された「マルチ・フラクション・プロセッシング・ユニット（Multi Fraction Processing Unit）」と考えられている。しかしながら、このプロセッサでさえ、パームテーションの複雑さ故に多数の部材が必要とされ、未だに上記の問題を解決したものとは言えない。
【０００７】
【発明が解決しようとする課題】
本発明は、上述した従来の問題点を解決しようとするものであり、従来開発された所定のＤＣＴアルゴリズムをベースとし、且つ、このＤＣＴアルゴリズムにおけるデータフローの規則性に着目して開発された特殊構造の処理メモリを用いてリソースシェアリングを促進させ、これによって、必要とされる部材数の減少、ファンクションブロックエリアの減少、消費電力の減少、更には、処理スピードの高速化、あるいは、出力レイテンシイの減少を図るものである。
【０００８】
【課題を解決するための手段】
上記の目的を達成するために、本発明は、離散コサイン変換を実行するために用いるＤＣＴプロセッサにおいて、データにパームテーションを行う記憶・処理装置と、所定のＤＣＴアルゴリズムに従って計算を行う計算装置と、を備え、前記記憶・処理装置と前記計算装置との間でデータを所定回数ループさせ、前記計算装置から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴としている。
【０００９】
また、本発明は、離散コサイン変換を実行するために用いるＤＣＴプロセッサにおいて、複数の入力部と複数の出力部とを有し、前記複数の入力部を通じて入力される複数のデータにパームテーションを行った後に前記複数の出力部から出力する、前記記憶・処理装置と；前記記憶・処理装置の出力部に接続された複数の入力部と複数の出力部とを有し、前記複数の入力部から入力されたデータを所定のＤＣＴアルゴリズムに従って計算し前記複数の出力部から出力する計算装置と；前記計算装置の出力部に接続された複数の入力部と前記記憶・処理装置の入力部に接続された複数の出力部とを有し、前記計算装置の出力部から出力された複数のデータを記憶し前記複数の出力部から出力する記憶装置と；前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と；を備え、前記記憶装置の出力部から出力された複数のデータを、前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間を所定回数ループさせ、前記記憶装置の出力部から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴としている。
【００１０】
更に、本発明は、３２個のサンプリングポイントでサンプリングすることによって得られた３２個のデータに対して離散コサイン変換を行う３２ポイントＤＣＴプロセッサにおいて；８個の入力部と８個の出力部とを有し、一度に８個ずつ計４回、計３２個のデータを入力し且つ出力することができる、記憶・処理装置であって、前記８個の入力部を通じて一度に８個ずつ計４回、順次に所定の記憶位置に書き込まれた計３２個のデータを前記８個の出力部に所定の順番で出力する、前記記憶・処理装置と；各々が、前記記憶・処理装置の８個の出力部のうちの４個の出力部にそれぞれ接続された４個の入力部と４個の出力部とを有し、前記８個の入力部から入力されたデータを一度に４個ずつＣＧＡ−ＤＣＴアルゴリズムに従って計算し、前記４個の出力部からそれぞれ出力する、２個の計算装置と；前記２個の計算装置の計８個の出力部にそれぞれ接続された８個の入力部と前記記憶・処理装置の計８個の入力部にそれぞれ接続された８個の出力部とを有し、一度に８個ずつ計４回、計３２個のデータを先入れ先出し方式で書き込み且つ読み出すことができる、記憶装置であって、前記計算装置の各出力部から出力された計８個のデータを計４回、計３２個のデータを記憶する、前記記憶装置と；前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と；を備えることを特徴としている。
【００１１】
上記のＤＣＴプロセッサには、更に、前記ＤＣＴプロセッサの外部から内部にデータを入力する入力手段が、前記記憶・処理装置の直前に、あるいは、前記記憶・処理装置と前記計算装置の間に、あるいは、前記計算装置と前記記憶装置の間に設けられていてもよい。
【００１２】
上記のＤＣＴプロセッサにおいて、前記記憶・処理装置は、前記データを前記所定の記憶位置に書き込む際、前記入力されるデータと前記出力されるデータとの対応付けを変更しない第１の動作モードと、前記入力されるデータと前記出力されるデータとの対応付けを変更する第２の動作モードのいずれかで動作するものであって、前記入力手段からのデータは前記第１の動作モードで処理されるものであってもよい。
【００１３】
上記のＤＣＴプロセッサにおいて、前記第１の動作モードで動作する記憶・処理装置で処理された計３２個のデータを、前記計算装置、前記記憶装置で順に処理し、その後、前記記憶装置の出力部から読み出された計３２個のデータを、前記並び替え手段で処理した後に、前記第２の動作モードで動作する前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間をループさせ、４回目のループ時に前記記憶装置の出力部から読み出されたデータに基づいて、前記データを離散コサイン変換したときの結果を求めるようにしてもよい。
【００１４】
上記のＤＣＴプロセッサにおいて、前記記憶・処理装置は、計３２個の記憶位置を有しており、前記３２個のデータは、これら３２個のいずれかの記憶位置に１つずつ書き込み且つ読み出されるものであってもよい。
【００１５】
上記のＤＣＴプロセッサにおいて、前記３２個の記憶位置の各々に書き込みラインと読み出しラインが設けられており、これら書き込みラインと読み出しラインは互いに垂直に配線され、データの書き込み及び読み出し時に共用されなくともよい。
【００１６】
上記のＤＣＴプロセッサにおいて、前記所定の並び替えは、前記記憶装置と前記記憶・処理装置との間の伝送線をクロスさせることによって行ってもよい。
【００１７】
上記のＤＣＴプロセッサにおいて、計３２個のデータを前記８個の出力部に所定の順番で出力するために並び替え装置を用いてもよい。
【００１８】
上記のＤＣＴプロセッサにおいて、前記記憶・処理装置は８Ｒ／Ｗメモリ回路であり、前記計算装置はＤＣＴ回路であり、前記記憶装置はＦＩＦＯであってもよい。
【００１９】
上記のＤＣＴプロセッサにおいて、前記並び替え手段は記憶・処理装置に設けられていてもよい。
【００２０】
また、本発明は、離散コサイン変換を実行するために用いるＤＣＴプロセッサで使用する記憶・処理装置であって、所定のＤＣＴアルゴリズムに従って計算を行う計算装置との間でデータを所定回数ループさせ、前記計算装置から読み出されたデータに基づいて離散コサイン変換の結果を求めるようにデータにパームテーションを行うことを特徴としている。
【００２１】
更に、本発明は、離散コサイン変換を実行するために用いるＤＣＴプロセッサで使用する記憶・処理装置であって、該記憶・処理装置は、複数の入力部と複数の出力部とを有し、前記複数の入力部を通じて入力される複数のデータにパームテーションを行った後に前記複数の出力部から出力するものであり；前記ＤＣＴプロセッサは、更に、前記記憶・処理装置の出力部に接続された複数の入力部と複数の出力部とを有し、前記複数の入力部から入力されたデータを所定のＤＣＴアルゴリズムに従って計算し前記複数の出力部から出力する計算装置と；前記計算装置の出力部に接続された複数の入力部と前記記憶・処理装置の入力部に接続された複数の出力部とを有し、前記計算装置の出力部から出力された複数のデータを記憶し前記複数の出力部から出力する記憶装置と；前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と；を備え、前記記憶装置の出力部から出力された複数のデータを、前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間を所定回数ループさせ、前記記憶装置の出力部から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴としている。
【００２２】
更に、本発明は、３２個のサンプリングポイントでサンプリングすることによって得られた３２個のデータに対して離散コサイン変換を行う３２ポイントＤＣＴプロセッサで使用する記憶・処理装置であって、該記憶・処理装置は、８個の入力部と８個の出力部とを有し、一度に８個ずつ計４回、計３２個のデータを入力し且つ出力することができ、前記８個の入力部を通じて一度に８個ずつ計４回、順次に所定の記憶位置に書き込まれた計３２個のデータを前記８個の出力部に所定の順番で出力するものであり；前記ＤＣＴプロセッサは、更に、各々が、前記記憶・処理装置の８個の出力部のうちの４個の出力部にそれぞれ接続された４個の入力部と４個の出力部とを有し、前記８個の入力部から入力されたデータを一度に４個ずつＣＧＡ−ＤＣＴアルゴリズムに従って計算し、前記４個の出力部からそれぞれ出力する、２個の計算装置と；前記２個の計算装置の計８個の出力部にそれぞれ接続された８個の入力部と前記記憶・処理装置の計８個の入力部にそれぞれ接続された８個の出力部とを有し、一度に８個ずつ計４回、計３２個のデータを先入れ先出し方式で書き込み且つ読み出すことができる、記憶装置であって、前記計算装置の各出力部から出力された計８個のデータを計４回、計３２個のデータを記憶する、前記記憶装置と；前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と；を備えることを特徴としている。
【００２３】
【発明の実施の形態】
Ａ．第１の実施形態
１．ＤＣＴプロセッサの構成
１−１.全体構成
図１に、本発明の第１の実施形態によるＤＣＴプロセッサ１のブロック図を示す。
【００２４】
このＤＣＴプロセッサ１は、特に、３２個のサンプリングポイントでサンプリングすることによって得られた３２個のサンプリングデータに対して離散コサイン変換を行うことができる、３２ポイントＤＣＴプロセッサ（以下、「ＤＣＴプロセッサ」）１である。尚、サンプリングデータを何ビットにするかは設計者が自由に決定できる。例えば、１ワード（１６ビット）とする等の如くである。
【００２５】
ＤＣＴプロセッサ１は、所定のＤＣＴアルゴリズムに従って離散コサイン変換に必要な計算を行うことができる並列に並んだ２個の回路（以下、それぞれ「ＤＣＴ回路」）３、３’と、このＤＣＴ回路で使用されるアルゴリズムにおけるデータフローの規則性に着目して開発された特殊構造の８読み出し／書き込みポートＳＲＡＭメモリ回路（以下、「８Ｒ／Ｗメモリ回路」）５（請求項中の「記憶・処理装置」に対応）と、８ワード×４デプス（depth）ＦＩＦＯ（先入れ先出し）バッファ（以下、「ＦＩＦＯ」）（請求項中の「記憶装置」に対応）７から成る。
【００２６】
尚、ＤＣＴ回路３とＤＣＴ回路３’は、全く同じものであると考えて良い。これらのＤＣＴ回路３、３’で使用されているアルゴリズムは、ここでは特に１９９９年と２０００年にJakko AltolaやDavid Akopian等によって発表された「ＤＣＴのためのコンスタント・ジオメトリ・アルゴリズム（Constant Geometry Algorithm for DCT (CGA-DCT)）［４］」（以下、「ＣＧＡ−ＤＣＴアルゴリズム」）とする。
【００２７】
図１から明らかなように、これら８Ｒ／Ｗメモリ回路５、ＤＣＴ回路３、３’、及びＦＩＦＯは、これらの順に互いにループ状に接続されている。更に言えば、８Ｒ／Ｗメモリ回路５の８個の出力部５３は、計８個のＤＣＴ回路３、３’の入力部３１に、また、計８個のＤＣＴ回路３、３’の出力部３３は、ＦＩＦＯ７の８個の入力部７１に、更に、ＦＩＦＯ７の８個の出力部７３は、８Ｒ／Ｗメモリ回路５の８個の入力部に、それぞれ接続されている。この結果、データをこれらの間でこれらの順に所望の回数だけループさせることができる、換言すれば、データに同じ処理を所望の回数だけ繰り返し行うことができる。
【００２８】
尚、図中の矢印はデータが流れる方向を示すものである。図から明らかなように、特に、ＦＩＦＯ７から８Ｒ／Ｗメモリ回路５に伝達されるとき、データは、クロス部（請求項中の「並び替え手段」に対応）４、４’によって、更に言えば、それらの間に設けた伝送線を２ヶ所でクロスさせることによって、一部のデータについて並び替え（入れ換え）が行われることになっている。この並び替えによって、パームテーションが可能になるのであるが、これについては後述する。
【００２９】
１−２.ＤＣＴ回路
＜概要＞
ＤＣＴ回路３、３’は各々、６個の加算・減算器３５ａ〜ｆと、２個の乗算器３６ａ、３６ｂ、２個のセレクタ（ｓｅｌ）３７ａ、３７ｂ、２個のマスク（ｍｓｋ）３８ａ、３８ｂ、及び１個のＲＯＭ３９から成る。入力部３１と出力部３３は各ＤＣＴ回路３、３’にそれぞれ４個ずつ設けられており、従って、各ＤＣＴ回路３、３’によって、データを一度に４個ずつ入力し且つ出力することができる。各ＤＣＴ回路３、３’の入力部３１から入力される４個のデータは、ＣＧＡ−ＤＣＴアルゴリズムに従って計算され、その後、出力部３３から４個のデータとして出力されることになる。
【００３０】
ＤＣＴ回路３、３’の構成は、Jarmo Astola、David Akopian等による論文「Architecture-oriented regular algorithms for discrete sine and cosince transforms」IEEE Trans.Signal Processing Vol.47. pp1109〜1124、１９９９年４月に記載されているものと同じである。以下にその構成を概説するが、詳細については上記論文を参照のこと。
【００３１】
＜各機能素子の構成＞
図１に示した各ＤＣＴ回路３、３’は、図２のａ）〜ｃ）にそれぞれ示したモード（ｍｏｄｅ）０〜２の機能素子の各機能を１個の回路で実現可能としたものと考えて良い。そこで、図１のＤＣＴ回路を説明する前に、先ず、図２に示した機能素子の各機能を説明する。
【００３２】
図２から明らかなように、モード０の機能素子は、４個の加算・減算器３５ａ〜ｅと２個の乗算器３６ａ、３６ｂから成る。モード１の機能素子は、これらの部材に加えて更に、１個の加算・減算器３５ｆを有し、モード２の機能素子は更に、１個の加算・減算器３５ｆをも有する。これより明らかなように、モード２の機能素子に設けられた加算・減算器や乗算器の数は、図１のＤＣＴ回路３、３’のそれと同じであるが、モード２の機能素子には、図１のＤＣＴ回路３、３’のように、セレクタ３７ａ、３７ｂや、マスク３８ａ、３８ｂ、ＲＯＭ３９は設けられていない。これらの部材は、主として、モードを選択するためだけに使用される部材だからである。
【００３３】
尚、モード０〜モード２の各機能素子に設けられた加算・減算器のうち、負の記号（−）が付されているもの３５ｂ、３５ｄ、３５ｆは減算器として機能し、何も記号が付されていないもの３５ａ、３５ｃ、３５ｅは加算器として機能する。また、各機能素子の各乗算器の上部に記載された記号ｄ（ｎ）あるいは２ｄ（ｎ）（２×ｄ（ｎ）の意味である）は、ｎの値によって定まる、乗算で使用される係数を示すものである。具体的には、以下の３種類の式から成る式（以下、「式１」）によって計算される係数である。
▲１▼  ｄ（１）＝√（０．５）
▲２▼  ｄ（２ｉ）＝√（０．５（１＋ｄ（ｉ））
▲３▼  ｄ（２ｉ＋１）＝√（０．５（１−ｄ（ｉ）））
（但し、ここでｉ＝１／２、２／２、３／２、…ｎ／２（ｎは整数））
【００３４】
上の式１）において、例えばｎ＝２であれば、▲２▼の式を用いて、乗算で使用される係数はｄ（２）＝√（０．５（１＋ｄ（１））＝√（０．５（１＋√（０．５））である。尚、ｎの値は予め決定されているものであるが、これについては後述する。
【００３５】
＜各機能素子の動作＞
図２のａ）に示したモード０の機能素子の動作は以下の通りである。
機能素子の４個の各入力部３１にそれぞれ、データＡ〜Ｄの値が入力されたとすると、位置アにおいては、データＡと、クロス部４０ａとクロス部４０ｂを介して伝達されたデータＣとが、加算・減算器３５ａによって加算されるためＡ＋Ｃが得られ、一方、位置イにおいては、クロス部４０ａを介して伝達されたデータＣと、クロス部４０ｂを介して伝達されたデータＡとが、加算・減算器３５ｂによって減算されるためＡ−Ｃが得られる。
【００３６】
同様に、位置ウにおいては、クロス部４０ａを介して伝達されたデータＢとクロス部４０ｃを介して伝達されたデータＤとが、加算・減算器３５ｃによって加算されるためＢ＋Ｄが得られ、一方、位置エにおいては、クロス部４０ａとクロス部４０ｃを介して伝達されたデータＢと、Ｄとが、加算・減算器３５ｄによって減算されるため、Ｂ−Ｄが得られる。
【００３７】
更に、位置イにおいて得られたＡ−Ｃは、乗算器３６ａによってｎの値に応じた係数ｄ（ｎ）が掛算された後に、クロス部４０ｄによって出力位置が入れ換えられ、また、位置エにおいて得られたＢ−Ｄは、乗算器３６ｂによって係数ｄ（ｎ）が掛算される。
【００３８】
以上より、モード０の機能素子によれば、４個の各出力Ａ’〜Ｄ’においてそれぞれ、Ａ＋Ｃ、Ｂ＋Ｄ、（Ａ−Ｃ）×ｄ（ｎ）、（Ｂ−Ｄ）×ｄ（ｎ）という結果が得られる。同様に、モード１の機能素子によれば、各出力Ａ''〜Ｄ''においてＡ＋Ｃ、Ｂ＋Ｄ、（Ａ−Ｃ）×ｄ（ｎ）、（Ｂ−Ｄ）×２ｄ（ｎ）−（Ｂ＋Ｄ）という結果が、モード２の機能素子によれば、各出力Ａ'''〜Ｄ'''においてＡ＋Ｃ、Ｂ＋Ｄ、（Ａ−Ｃ）×２ｄ（ｎ）−（Ａ＋Ｃ）、（Ｂ−Ｄ）×２ｄ（ｎ）−（Ｂ＋Ｄ）という結果が得られる。
【００３９】
＜ＤＣＴ回路の構成＞
ＤＣＴ回路３、３’は、上に説明したモード１〜３の機能素子を、２個のセレクタ３７ａ、３７ｂ、２個のマスク３８ａ、３８ｂ、及び１個のＲＯＭ３９を利用することによって、１個の回路で実現可能としたものである。
【００４０】
ここで、セレクタ３７ａ、３７ｂはそれぞれ、それらに接続された２つの加算・減算器３５ｂ、３５ｄのいずれかを選択するためのものである。また、マスク３８ａは、それに接続された加算・減算器３５ｅに、マスク３８ｂは、それに接続された加算・減算器３５ｆに、信号を送ったり、信号を送らなかったりするためのものである。
【００４１】
ＲＯＭ３９は、セレクタ３７ａ、３７ｂやマスク３８ａ、３８ｂを制御するために必要な情報を記憶させるためのものである。これらの情報は、２つのテーブル、即ち、係数テーブル４１ａと指令テーブル４１ｂに記憶されている。ここで、係数テーブル４１aは、上記の式１）の計算式を記憶するものである。各乗算器は、使用すべきｎの値を得た後に、この係数テーブル４１aを利用して係数を計算する。一方、指令テーブル４１ｂは、選択すべきモードに応じて、選択すべきセレクタ、あるいは、マスクを記憶するものである。ＤＣＴ回路３、３’は、この指令テーブル４１ｂの情報に基づいて、各モードに応じて、セレクタ３７ａ、３７ｂのいずれを選択すべきか、あるいは、マスク３８ａ、３８ｂのいずれを選択すべきかを知る。
【００４２】
指令テーブル４１ｂについて更に説明する。例えば、モード１の機能素子として機能させる場合、ＤＣＴ回路３、３’の処理部（図示されていない）は、指令テーブル４１ｂの情報に基づいて、セレクタ３７ａは、加算・減算器３５ｂ、３５ｄのうちの加算・減算器３５ｂを選択するように、一方、セレクタ３７ｂは、加算・減算器３５ｂ、３５ｄのうちの加算・減算器３５ｄを選択するように、それらのセレクタ３７ａ、３７ｂに指令を出す。また、ＤＣＴ回路３、３’の処理部（図示されていない）は、マスク３８ａは、それに接続された加算・減算器３５ｅに対して加算・減算器３５ａからの信号を送らないように、一方、マスク３８ｂは、それに接続された加算・減算器３５ｆに対して加算・減算器３５ｃからの信号を送らないように、それらに指令を出す。
【００４３】
同様に、モード２の機能素子として機能させる場合、ＤＣＴ回路３、３’は、セレクタ３７ａ、セレクタ３７ｂ、及びマスク３８ａについては、モード１の場合と同様にし、マスク３８ｂについては、それに接続された加算・減算器３５ｆに対して加算・減算器３５ｃからの信号を送るように、それらに指令を出す。
【００４４】
同様に、モード３の機能素子として機能させる場合、ＤＣＴ回路３、３’は、セレクタ３７ａは、加算・減算器３５ｂ、３５ｄのうちの加算・減算器３５ｄを選択するように、一方、セレクタ３７ｂは、加算・減算器３５ｂ、３５ｄのうちの加算・減算器３５ｂを選択するように、それらに指令を出す。また、ＤＣＴ回路３、３’は、マスク３８ａは、それに接続された加算・減算器３５ｅに対して加算・減算器３５ａからの信号を送るように、一方、マスク３８ｂは、それに接続された加算・減算器３５ｆに対して加算・減算器３５ｃからの信号を送るように、それらに指令を出す。
【００４５】
以上の働きにより、図１のＤＣＴ回路３、３’は、図２のモード１〜３の機能素子の各機能を全て実現することができる。
【００４６】
１−３.ＦＩＦＯの構成
ＦＩＦＯ７は、一般に用いられているＦＩＦＯと同様のものであり、先入れ先出し方式でデータを書き込み且つ読み出すことができる記憶装置である。これらのＦＩＦＯのうち、ここでは特に、８個×４デプスのＦＩＦＯ７を使用する。つまり、このＦＩＦＯ７によって一度に書き込み且つ読み出すことができるデータは８個であり、そのような８個のデータを４回連続して計３２個書き込むことができ、また、４回連続して計３２個読み出すことができる。明らかなように、このＦＩＦＯ７に一度に記憶させることができるデータは計３２個である。
【００４７】
ＦＩＦＯ７を設けた目的は、データを一時的に記憶させるため、換言すれば、データを遅延させて比較的動作が遅い８Ｒ／Ｗメモリ回路５による処理を可能とするためである。したがって、技術の進歩によって８Ｒ／Ｗメモリ回路５の動作が高速化されれば、このＦＩＦＯ７は必ずしも必要ではないと考えられる。
【００４８】
１−４.８Ｒ／Ｗメモリ回路の構成
＜概要＞
８Ｒ／Ｗメモリ回路５は、本発明のＤＣＴプロセッサ１のために特別に開発されたメモリである。ただし、８Ｒ／Ｗメモリ回路５は、単なる記憶装置として機能するものではなく、離散コサイン変換を実行するために必要な処理、即ち、パームテーションを行うことを主たる目的とするものである。
【００４９】
８Ｒ／Ｗメモリ回路の構成を簡単に言えば、従来使用されていた様々な部材（リソース）を共有することによって、その部材数を減少させたもの、換言すれば、リソースシェアリングを促進させたもの、ということができる。本発明では、この８Ｒ／Ｗメモリ回路を用いることによって、プロセッサに必要とされる部材、例えば、加算・減算器や乗算器、クロスバースイッチの数を大幅に減少させている。
【００５０】
この８Ｒ／Ｗメモリ回路５によって一度に入力し且つ出力することができるデータは、ＦＩＦＯ７と同様、８個であり、そのような８個のデータを４回連続して計３２個書き込む（入力する）ことができ、また、４回連続して計３２個出力することができる。更に、この８Ｒ／Ｗメモリ回路５（のメモリ）に一度に記憶させることができるデータは計３２個である。
【００５１】
＜詳細＞
図３を参照して、８Ｒ／Ｗメモリ回路５の構成をより詳細に説明する。この図は、８Ｒ／Ｗメモリ回路５のブロック図を示したものである。
【００５２】
本発明の８Ｒ／Ｗメモリ回路５は、３２個のメモリブロック０〜３１（請求項中の「記憶位置」に対応）と、これらの各メモリブロック０〜３１にデータを書き込むための８本の書き込みライン５２ａ〜ｈ、これらの各メモリブロック０〜３１からデータを読み出すため８本の読み出しライン５３ａ〜ｈ、各メモリブロック０〜３１にデータを伝送するための８本の伝送ライン５４ａ〜ｈ、更に４個のクロスバースイッチ５８ａ〜ｄ（請求項中の「並び替え装置」に対応）を備える。書き込みライン５２ａ〜ｈと読み出しライン５３ａ〜ｈはそれぞれ、書き込みイネイブル部と読み出しイネイブル部に接続されている。
【００５３】
参考のため、図４に８Ｒ／Ｗメモリ回路５の実際の回路図も示している。但し、この図にクロスバースイッチ５８ａ〜ｄは示されていない。この図において、ＷＬ０〜７は書き込みライン５２ａ〜ｈに、ＲＬ０〜７は読み出しライン５３ａ〜ｈに、（０）〜（７）は伝送ライン５４ａ〜ｈに、それぞれ対応する。
【００５４】
＜メモリブロック＞
各メモリブロック０〜３１には、１個のデータを書き込み且つ読み出すことができる。各メモリブロック０〜３１は、０〜３１の数字で区別される。これらの数字は、データが記憶される記憶位置を示すものということもできる。
【００５５】
これらのメモリブロック０〜３１は、４個のブロックグループ５９ａ〜ｄに分割されている。計３２個のメモリブロックが存在するから、各ブロックグループ５９ａ〜ｄに８個（３２÷４＝８）のメモリブロックが含まれることになる。例えば、ブロックグループ５９ａには、メモリブロック０、１６、６、２２、８、２４、１４、３０が含まれる。
【００５６】
＜伝送ライン・書き込みライン・読み出しライン＞
伝送ライン５４ａ〜ｈは、各ブロックグループ５９ａ〜ｄに対して８本ずつ、各メモリブロック０〜３１に１本ずつ割り当てられるようにして、一定の方向で（図面縦方向で）設けられている。ＦＩＦＯ７等から出力されたデータは、これらの伝送ライン５４ａ〜ｈを通じて送られてくる。
【００５７】
書き込みライン５２は、各ブロックグループ５９に対して２本ずつ計８本、各メモリブロック０〜３１に１本ずつ割り当てられるようにして設けられている。各書き込みライン５２は、伝送ライン５４ａ〜ｈとの直交方向において、各ブロックグループ５９内の８個のメモリブロックのうちの４個のメモリブロックと交差する。これらの書き込みライン５２は、書き込みイネイブル部６０の働きにより、一度に２本ずつイネイブルされ得る。データ伝送ライン５４に信号が存在し、且つ、書き込みライン５２がイネイブルされたときに、それらのラインの交差位置に存在するいずれかのメモリブロックにデータが書き込まれる。各書込みラインは４個のメモリブロックと交差し、また、一度に２本の書き込みラインがイネイブルされることから、１回の書き込みで計８個のデータがいずれかのメモリブロックに書き込まれることになる。
【００５８】
読み出しライン５３ａ〜ｈは、各ブロックグループ５９ａ〜ｄに対して８本ずつ、データ伝送ライン５４ａ〜ｈと同方向に設けられている。各読み出しライン５３ａ〜ｈは、８個のメモリブロック（１個のブロックグループ５９ａ〜ｄに対して２個）と交差するが、１回の読み出し動作の際に、実際に作用するのは各ブロックグループ５９ａ〜ｄにおいて１個のみ、したがって、計４個のメモリブロックにおいてだけである。これらの読み出しライン５３ａ〜ｈは、読み出しイネイブル部６１の働きにより、書き込みライン５２と同様に、一度に２本ずつイネイブルされる。各読み出しライン５３が１回の読み出し動作の際に実際に作用するのは４個のメモリブロックであり、また、一度に２本の読出ラインがイネイブルされることから、１回の読み出しで計８個のデータがいずれかのメモリブロックから読み出されることになる。
【００５９】
以上の説明からも明らかなように、本発明の８Ｒ／Ｗメモリ回路５では、書き込み時と読み出し時とでラインが共用されておらず、また、書き込みライン５２と読み出しライン５３が互いに垂直方向に配線されている。このような構成にすることによって、離散コサイン変換を行うために多数必要とされていたクロスバースイッチ５８ａ〜ｄをたった４個とすることが可能となっている。
【００６０】
＜クロスバースイッチ＞
クロスバースイッチ５８ａ〜ｄは、各メモリブロック０〜３１から読み出されたデータを８Ｒ／Ｗメモリ回路５から出力する前に適当に並び替えるために用いる。例えば、読み出しライン５３ａと読み出しライン５３ｅをイネイブルすることによって読み出された８個のデータ、換言すれば、第１フェーズで読み出された８個のデータ［０］、［１５］、［１４］、［１］、［２］、［１３］、［１２、［３］は、クロスバースイッチ５８ａ〜ｄによって、［０］、［１］、［２］、［３］、［１２］、［１３］、［１４］、［１５］の順に並び替えられる。尚、上の記載および明細書及び図面の全体を通じて、［ｎ］（ｎは０から３１までの整数）は、メモリブロック０〜３１のような記憶手段のｎというメモリ位置に入っているデータの内容（値）を表す。
【００６１】
＜８Ｒ／Ｗメモリ回路のメモリブロックからの読み出し、及び８Ｒ／Ｗメモリ回路からの出力＞
８Ｒ／Ｗメモリ回路のメモリブロックからの読み出し及び８Ｒ／Ｗメモリ回路からの出力は次の手順による。
【００６２】
第１フェーズ、つまり最初の読み出しでは、読み出しライン５３ｂと読み出しライン５３ｅをイネイブルすることによってそれぞれ、［０］、［１］、［２］、［３］と、［１５］、［１４］、［１３］、［１２］が読み出され、これらのデータはクロスバースイッチ５８によって［０］、［１］、［２］、［３］、［１２］、［１３］、［１４］、［１５］の順に並び替えられた後に、８Ｒ／Ｗメモリ回路５から出力される。
【００６３】
第２フェーズ、つまり２回目の読み出しでは、読み出しライン５３ａと読み出しライン５３ｆをイネイブルすることによってそれぞれ、［６］、［７］、［４］、［５］と、［９］、［８］、［１１］、［１０］が読み出され、これらのデータはクロスバースイッチ５８によって［４］、［５］、［６］、［７］、［８］、［９］、［１０］、［１１］の順に並び替えられた後に、８Ｒ／Ｗメモリ回路５から出力される。
【００６４】
第３フェーズ、つまり３回目の読み出しでは、読み出しライン５３ｄと読み出しラインｇをイネイブルすることによってそれぞれ、［１６］、［１７］、［１８］、［１９］と、［３１］、［３０］、［２９］、［２８］が読み出され、これらのデータはクロスバースイッチ５８によって［１６］、［１７］、［１８］、［１９］、［２８］、［２９］、［３０］、［３１］の順に並び替えられた後に、８Ｒ／Ｗメモリ回路５から出力される。
【００６５】
第４フェーズ、つまり４回目の読み出しでは、読み出しライン５３ｃと読み出しライン５３ｈをイネイブルすることによってそれぞれ、［２２］、［２３］、［２０］、［２１］と、［２５］、［２４］、［２７］、［２６］が読み出され、これらのデータはクロスバースイッチ５８によって［２０］、［２１］、［２２］、［２３］、［２４］、［２５］、［２６］、［２７］の順に並び替えられた後に、８Ｒ／Ｗメモリ回路５から出力される。
【００６６】
以上より明らかなように、８Ｒ／Ｗメモリ回路５にデータを一旦記憶させることにより、それらのデータを所定の順番で出力させることができる。更に言えば、８Ｒ／Ｗメモリ回路５から出力されるデータの順番を、８Ｒ／Ｗメモリ回路５のいずれのメモリブロック０〜３１にデータを記憶させるかという事実に基づいて制御できるということである。
【００６７】
＜８Ｒ／Ｗメモリ回路のメモリブロックへのデータの書き込み、及びパームテーション＞
８Ｒ／Ｗメモリ回路５のメモリブロック０〜３１へのデータの書き込みは、ＤＣＴプロセッサの外部の、例えばＣＰＵ等（図示されていない）から行われる場合と、ＤＣＴプロセッサの内部でループ状に、ＦＩＦＯ７等を介して行われる場合の２通りがある。
【００６８】
前者の書き込みを行うために、図１に示した８本の信号線２４に加えて、更に、ＤＣＴプロセッサの外部からＤＣＴプロセッサの内部にデータを入力するための手段、例えば、ＤＣＴプロセッサの外部からのデータを８Ｒ／Ｗメモリ回路５の入力部５１に伝送するための信号線（図示されていない）が存在すると考えてよい。これらの信号線は、クロス部４、４’（及びＦＩＦＯ５）と８Ｒ／Ｗメモリ回路５との間で、８Ｒ／Ｗメモリ回路５の入力部５１に電気的に接続されていれば十分であり、８Ｒ／Ｗメモリ回路の入力部５１に直接的に接続されてもよいし、あるいは、信号線２４の途中、例えば、８Ｒ／Ｗメモリ回路の入力部５１の直前（一点鎖線Ａと信号線２４との交差位置）に設けたセレクタのような選択手段を介してそれらに間接的に接続されていてもよい。選択手段には、外部データのための信号線とループ状の信号線２４の双方が接続され、いずれかの一方の信号線だけが選択されるようになっている。選択手段を用いた場合には、外部データのための信号線と信号線２４の競合を効果的に防止することができる。
【００６９】
８Ｒ／Ｗメモリ回路の動作は、ＤＣＴプロセッサの外部からのデータ、つまり入力手段からのデータを処理する場合と、ＤＣＴプロセッサの内部からのデータを処理する場合とで異なる。便宜上、本明細書では、前者の場合の８Ｒ／Ｗメモリ回路の動作を「第１の動作モード」（請求項中の「第１の動作モード」に対応）、後者の場合の８Ｒ／Ｗメモリ回路の動作を「第２の動作モード」（請求項中の「第２の動作モード」に対応）と呼んで区別する。ここで、第１の動作モードでは、ＤＣＴプロセッサ以外（ＦＩＦＯ以外）からのデータを８Ｒ／Ｗメモリ回路に書き込んだ後にそれらのデータを出力し、第２の動作モードでは、ＤＣＴプロセッサ（ＦＩＦＯ）からのデータを８Ｒ／Ｗメモリ回路に書き込んだ後にそれらのデータを出力することになる。尚、上述した選択手段が使用されている場合には、第１の動作モードでは、外部データのための信号線を選択してＣＰＵ等からのデータを８Ｒ／Ｗメモリ回路に伝送するように、一方、第２の動作モードでは、信号線２４を選択してＦＩＦＯからのデータを８Ｒ／Ｗメモリ回路に伝送するように、選択手段は適宜に切り換えられることになる。
【００７０】
第１の動作モードの場合、データは入力手段（図示されていない）からのものであり、したがって、クロス部４、４’（図１参照）を介さずに、また、データの対応付けを変更しないで８Ｒ／Ｗメモリ回路に書き込まれる。一方、第２の動作モードの場合、データはＦＩＦＯ５からのものであり、クロス部４、４’で並び替えが行われた後に、データの対応付けを変更するようにして８Ｒ／Ｗメモリに書き込まれる。この結果、第２の動作モードの場合においては、８Ｒ／Ｗメモリ回路から出力されるデータにパームテーションが行われることになる。
【００７１】
更に説明すると、第１の動作モードの場合、データの書き込み位置は、各メモリブロック０〜３１に付した０〜３１の番号に従う。つまり、データ［０］はメモリブロック０に、［１］はメモリブロック１に、［２］はメモリブロック２に…といった具合に対応させる。この結果、第１の動作モードの場合、第１フェーズで読み出されるデータは、書き込みを行う前の［０］、［１］、［２］、［３］、［１２］、［１３］、［１４］、［１５］にそれぞれ対応するデータ［０］、［１］、［２］、［３］、［１２］、［１３］、［１４］、［１５］となり、第２フェーズで読み出されるデータは、書き込みを行う前の［４］、［５］、［６］、［７］、［８］、［９］、［１０］、［１１］にそれぞれ対応する［４］、［５］、［６］、［７］、［８］、［９］、［１０］、［１１］となり、また、第３フェーズで読み出されるデータは、書き込みを行う前の［１６］、［１７］、［１８］、［１９］、［２８］、［２９］、［３０］、［３１］にそれぞれ対応するデータ［１６］、［１７］、［１８］、［１９］、［２８］、［２９］、［３０］、［３１］となり、更に、第４フェーズで読み出されるデータは、書き込みを行う前の［２０］、［２１］、［２２］、［２３］、［２４］、［２５］、［２６］、［２７］にそれぞれ対応するデータ［２０］、［２１］、［２２］、［２３］、［２４］、［２５］、［２６］、［２７］となる。従って、この第１の動作モードでは、単に読み出されるべきデータの順番が制御されるだけである。
【００７２】
一方、第２の動作モードの場合、データは、ＦＩＦＯと８Ｒ／Ｗメモリ回路の間に設けたクロス部４、４’（図１参照）によって並び替えが行われた後に、データの対応付けを変更するようにして８Ｒ／Ｗメモリへ書き込まれる。この結果、データの書き込み位置は、必ずしも各メモリブロックに付した０〜３１の数字に従わない。従って、この第２の動作モードでは、データの対応付けが変更された上で、つまりデータにパームテーションが行われた上で、読み出されるべきデータの順番が制御されることになる。
【００７３】
図５に、パームテーションを実行することによって得られる効果を視覚的に示している。この図において、［］で囲まれていない数字は、メモリブロックの番号０〜３１である。この図から明らかなように、例えば、左側に示した元のデータ［０］〜［３１］は、パームテーションを行うことによって右側に示した［０］、［２］、［４］、［６］、［８］、［１０］…にそれぞれ対応付けされることになる。更に言えば、パームテーション前の［０］、［２］、［４］、［６］、［８］、［１０］…はそれぞれ、パームテーション後は、メモリブロック０、１、２、３…におけるデータ、つまり［０］、［１］、［２］、［３］…となるということである。
【００７４】
図３を参照して更に詳細に説明する。パームテーションを行う前の第１フェーズのデータ［０］、［１］、［２］、［３］、［１２］、［１３］、［１４］、［１５］は、先ず、クロス部４、４’によって［０］、［２］、［１］、［３］、［１２］、［１４］、［１３］、［１５］の順に並び替えられ（図３の５６参照）、その後、書き込みライン５２ａ、５２ｄをイネイブルすることによって、メモリブロック０、１、１６、１７と、６、７、２２、２３にそれぞれ書き込まれるため、これらのメモリブロックから［０］、［１］、［１６］、［１７］、［６］、［７］、［２２］、［２］として読み出されることになる。つまり、パームテーションを行うことによって、元の［０］、［１］、［２］、［３］、［１２］、［１３］、［１４］、［１５］はそれぞれ、［０］、［１６］、［１］、［１７］、［６］、［２２］、［７］、［２３］にそれぞれ対応付けされたことになる。
【００７５】
同様に、パームテーションを行う前の第２フェーズのデータ［４］、［５］、［６］、［７］、［８］、［９］、［１０］、［１１］は、先ず、クロス部４、４’によって［４］、［６］、［５］、［７］、［８］、［１０］、［９］、［１１］の順に並び替えられ（図３の５６参照）、その後、書き込みライン５２ｅ、５２ｈをイネイブルすることによって、メモリブロック２、３、１８、１９と、４、５、２０、２１にそれぞれ書き込まれるため、これらのメモリブロックから［２］、［３］、［１８］、［１９］、［４］、［５］、［２０］、［２１］として読み出されることになる。つまり、パームテーションを行うことによって、元の［４］、［５］、［６］、［７］、［８］、［９］、［１０］、［１１］はそれぞれ、［２］、［１８］、［３］、［１９］、［５］、［４］、［２０］、［２１］にそれぞれ対応付けされたことになる。
【００７６】
また、パームテーションを行う前の第３フェーズの［１６］、［１７］、［１８］、［１９］、［２８］、［２９］、［３０］、［３１］は、先ず、クロス部４、４’によって［１６］、［１８］、［１７］、［１９］、［２８］、［３０］、［２９］、［３１］の順に並び替えられ（図３の５６参照）、その後、書き込みライン５２ｂ、５２ｃをイネイブルすることによって、メモリブロック８、９、２４、２５と、１４、１５、３０、３１にそれぞれ書き込まれるため、これらのメモリブロックから［８］、［９］、［２４］、［２５］、［１４］、［１５］、［３０］、［３１］として読み出されることになる。つまり、パームテーションを行うことによって、元の［１６］、［１７］、［１８］、［１９］、［２８］、［２９］、［３０］、［３１］はそれぞれ、［８］、［２４］、［９］、［２５］、［１４］、［３０］、［１５］、［３１］にそれぞれ対応付けされたことになる。
【００７７】
更に、パームテーションを行う前の第４フェーズの［２０］、［２１］、［２２］、［２３］、［２４］、［２５］、［２６］、［２７］は、先ず、クロス部４、４’によって［２０］、［２２］、［２１］、［２３］、［２４］、［２６］、［２５］、［２７］の順に並び替えられ（図３の５６参照）、その後、書き込みライン５２ｇ、５２ｈをイネイブルすることによって、メモリブロック１０、１１、２６、２７、１２、１３、２８、２９にそれぞれ書き込まれるため、これらのメモリブロックから［１０］、［１１］、［２６］、［２７］、［１２］、［１３］、［２８］、［２９］として読み出されることになる。つまり、パームテーションを行うことによって、元の［２０］、［２１］、［２２］、［２３］、［２４］、［２５］、［２６］、［２７］はそれぞれ、［１０］、［２６］、［１１］、［２７］、［１２］、［２８］、［１３］、［２９］にそれぞれ対応付けされたことになる。
【００７８】
２．ＤＣＴプロセッサの動作
図６に、本発明によるＤＣＴプロセッサ１とその周辺機器（図示されていない）によって行われる離散コサイン変換処理のシーケンスフローを、また、図７に、この処理によって生じるデータのデータフローを表すデータフローグラフを、それぞれ示す。尚、図７の上部に示したステップ（ＳＴ）の番号は、図６のそれに対応する。
【００７９】
尚、本発明のＤＣＴプロセッサ１によって行われる処理は、図６に示したステップ１〜１１のうち、ステップ３〜１０のみである。残りのステップ１、２、１１は、例えばＣＰＵ等の周辺機器によって行われることになっている。換言すれば、最終的な離散コサイン変換の結果を得るには、本発明のＤＣＴプロセッサ１による処理に加えて更にステップ１、２、１１の処理を行う周辺機器が必要、ということである。但し、設計変更によって、これらの処理を本発明のＤＣＴプロセッサ１が行うようにしてもよい。
【００８０】
ステップ１で、先ず、離散コサイン変換を実行すべきデータを３２個のサンプリングポイントでサンプリングし、３２個のサンプリングデータ［０］〜［３１］を得る。
【００８１】
ステップ２で、これらのサンプリングデータを、図７に示す順番に並び替える。この並び替えは、その後の処理を適切に行うために必要とされる処理である。この並び替えにより、データは［０］、［１］、［３１］、［３０］…の順に並び替えられる。
【００８２】
次いで、ステップ３で、これらのデータを第１の動作モードで動作する８Ｒ／Ｗメモリ回路５のメモリブロック０〜３１に書き込み且つ読み出す。尚、ここでの書き込みは、例えばＣＰＵ等から行われるものであってＦＩＦＯ５（図１参照）から行われるものでないため、クロス部４、４’による並び替えはない。また、この場合、各データは、［０］、［１］、［３１］、［３０］…のそれぞれの数字に対応するメモリブロックに書き込まれる。つまり、［０］はメモリブロック０に、［１］はメモリブロック１に、［３１］はメモリブロック３１…といった具合である。これらの書き込みと読み出しにより、８Ｒ／Ｗメモリ回路５から出力されるデータは、図３を参照して説明したように、対応付けを何ら変更されることなく、第１フェーズにおいては、［０］、［１］、［２］、［３］、［１２］、［１３］、［１４］、［１５］となり、第２フェーズにおいては、［４］、［５］、［６］、［７］、［８］、［９］、［１０］、［１１］、第３フェーズにおいては、［１６］、［１７］、［１８］、［１９］、［２８］、［２９］、［３０］、［３１］、第４フェーズにおいては、［２０］、［２１］、［２２］、［２３］、［２４］、［２５］、［２６］、［２７］となる。
【００８３】
次いで、ステップ４で、これらのデータは２個のＤＣＴ回路３、３’（図１参照）によって処理される（ＳＴ４）。図１から明らかなように、８Ｒ／Ｗメモリ回路５の８個の各出力部は、２個のＤＣＴ回路３、３’の４個の入力部にそれぞれ対応して接続されているから、８Ｒ／Ｗメモリ回路５によって、第１フェーズで読み出されたデータのうちの［０］、［１］、［２］、［３］はＤＣＴ回路３で、一方、［１２］、［１３］、［１４］、［１５］はＤＣＴ回路３’で処理される。同様に、第２フェーズで読み出されたデータのうちの［４］、［５］、［６］、［７］はＤＣＴ回路３で、一方、［８］、［９］、［１０］、［１１］はＤＣＴ回路３’で処理される。また、第３フェーズで読み出されたデータのうちの［１６］、［１７］、［１８］、［１９］はＤＣＴ回路３で、一方、［２８］、［２９］、［３０］、［３１］はＤＣＴ回路３’で処理される。更に、第４フェーズで読み出されたデータのうちの［２０］、［２１］、［２２］、［２３］はＤＣＴ回路３で、一方、［２４］、［２５］、［２６］、［２７］はＤＣＴ回路３’で処理される。
【００８４】
尚、図７では、各ＤＣＴ回路３、３’で処理されるデータを明らかにするため、１個のＤＣＴ回路３、３’によって処理されるデータ範囲を四角で囲っている。上の記載からも明らかなように、各四角において４個のデータが処理される。
【００８５】
ここで、各四角内の＜ｎ＞（ｎは１〜４の整数）は、それらのデータがフェーズ１〜４でそれぞれ処理されることを意味する。例えば、＜１＞が付された四角は２つあるが、これらは、第１フェーズで処理されることを意味し、また、それらで各々処理されるデータは［０］〜［４］あるいは［１２］〜［１５］であり、それぞれ、ＤＣＴ回路３とＤＣＴ回路３’によって処理されることを意味する。同様に、＜２＞が付された２つの四角は、第２フェーズで処理されることを意味し、また、そのとき処理されるデータは［４］〜［７］あるいは［８］〜［１１］であり、それぞれ、ＤＣＴ回路３とＤＣＴ回路３’によって処理されることを意味する。また、＜３＞が付された２つの四角は、第３フェーズで処理されることを意味し、また、そのとき処理されるデータは［１６］〜［１９］あるいは［２７］〜［３１］であり、それぞれ、ＤＣＴ回路３とＤＣＴ回路３’によって処理されることを意味する。同様に、＜４＞が付された四角も２つあるが、これらは、第４フェーズで処理されることを意味し、また、そのとき処理されるデータは［２０］〜［２３］あるいは［２４］〜［２７］であり、それぞれ、ＤＣＴ回路３とＤＣＴ回路３’によって処理されることを意味する。
【００８６】
更に、各四角内のｍｏｄｅ（モード）ｎ（ｎは０〜２の整数）は、各ＤＣＴ回路３、３’によって使用されるモードを表し、また、ｄ（ｎ）（ｎは１から３１までの整数）は、各ＤＣＴ回路３、３’の乗算器３６ａ、３６ｂ（図１参照）でそれぞれ使用される乗算の係数を表している。例えば、第１フェーズにおいて、ＤＣＴ回路３はモード０の機能素子（図２のａ）参照）として機能し、このモード０における機能素子の乗算器３６ａは、ｄ（１６）という係数を用い、また、乗算器３６ｂはｄ（２４）という係数を用い、一方、同じく第１フェーズにおいて、ＤＣＴ回路３’はモード０の機能素子（図２のａ）参照）として機能し、このモード０における機能素子の乗算器３６ａはｄ（１９）という係数を用い、また、乗算器３６ｂはｄ（２７）という係数を用いる、といった具合である。
【００８７】
その後、ステップ５で、各ＤＣＴ回路３、３’で処理された８個のデータは、ＦＩＦＯ７（図１参照）に順次に書き込まれ、３２個全てのデータが書き込まれた後に、再び、順次に読み出される。このとき読み出されるデータは、第１フェーズにおいては、［０］、［１］、［２］、［３］、［１２］、［１３］、［１４］、［１５］、第２フェーズにおいては、［４］、［５］、［６］、［７］、［８］、［９］、［１０］、［１１］、第３フェーズにおいては、［１６］、［１７］、［１８］、［１９］、［２８］、［２９］、［３０］、［３１］、第４フェーズにおいては、［２０］、［２１］、［２２］、［２３］、［２４］、［２５］、［２６］、［２７］に対応する。
【００８８】
次いで、ステップ６で、クロス部４、４’（図１参照）によってデータの並び替えが行われる。この並び替えにより、ＦＩＦＯからのデータは、図３の５６で示すような順番となる。即ち、第１フェーズのデータは、［０］、［２］、［１］、［３］、［１２］、［１４］、［１３］、［１５］、第２フェーズのデータは、［４］、［６］、［５］、［７］、［８］、［１０］、［９］、［１１］、第３フェーズのデータは、［１６］、［１８］、［１７］、［１９］、［２８］、［３０］、［２９］、［３１］、第４フェーズのデータは、［２０］、［２２］、［２１］、［２３］、［２４］、［２６］、［２５］、［２７］である。
【００８９】
次いで、ステップ７で、ＦＩＦＯ７から読み出されたデータは、第２の動作モードで動作する８Ｒ／Ｗメモリ回路５（図１）に戻され（回路動作としては、ループされということになる）、そこに書き込まれ且つ読み出される。この結果、パームテーションが行われ、第１フェーズのデータ［０］、［１］、［２］、［３］、［１２］、［１３］、［１４］、［１５］はそれぞれ、［０］、［１６］、［１］、［１７］、［６］、［２２］、［７］、［２３］に対応付けされることとなり、また、第２フェーズのデータ［４］、［５］、［６］、［７］、［８］、［９］、［１０］、［１１］はそれぞれ、［２］、［１８］、［３］、［１９］、［５］、［４］、［２０］、［２１］に対応付けされるることとなり、また、第３フェーズのデータ［１６］、［１７］、［１８］、［１９］、［２８］、［２９］、［３０］、［３１］はそれぞれ、［８］、［２４］、［９］、［２５］、［１４］、［３０］、［１５］、［３１］に対応付けされることとなり、更に、第４フェーズのデータ［２０］、［２１］、［２２］、［２３］、［２４］、［２５］、［２６］、［２７］はそれぞれ、［１０］、［２６］、［１１］、［２７］、［１２］、［２８］、［１３］、［２９］に対応付けされることとなる。
【００９０】
次いで、ステップ８で、パームテーションが行われたデータを、再び、ＤＣＴ回路３、３’で処理する。この処理は、ステップ４で述べたのと同様である。
【００９１】
次いで、ステップ９で、ＤＣＴ回路３、３’からのデータを、再び、ＦＩＦＯ７で処理する。この処理は、ステップ５で述べたのと同様である。
【００９２】
次いで、ステップ１０で、再びクロス部４、４、’（図１参照）によって並び替えが行われる。この処理は、ステップ６で述べたのと同様である。
【００９３】
その後、ステップ７〜ステップ１０の処理を更に３回反復（回路動作で言えば「ループ」）する。この結果、ステップ７〜１０の処理を計４回反復することになる（但し、以下の記述や図６から明らかなように、４回目のループ時におけるステップ１０の処理は、最終結果とは無関係であるため省略してよい）。
【００９４】
最後に、ステップ１１で、４回目のループ終了時に、ステップ９の処理後に得られたデータ、つまりＦＩＦＯ７（図１参照）からのデータを［０］、［４］、［８］、［１２］…の順番に並び替えるとともに、データ［０］についてはｄ（１）（つまり、√（０．５））の係数により乗算を行う。これらの処理は、最終結果を望ましい形で得るために必要とされる処理である。
【００９５】
Ｂ．第２の実施形態
再び図１を参照して、本発明の第２の実施形態について説明する。この第２の実施形態は、ＤＣＴプロセッサの外部から内部にデータを入力する入力手段（図示されていない）を、８Ｒ／Ｗメモリ回路５とＤＣＴ回路３、３’との間（一点鎖線Ｂと信号線２４との交差位置）に設けるもの、としたものである。
【００９６】
この結果、この第２の実施形態では、第１の実施形態と異なり、ＤＣＴプロセッサの外部からのデータが、８Ｒ／Ｗメモリ回路５を介さずにＤＣＴ回路３、３’に直接付与されることになる。しかしながら、この場合にも、ＤＣＴ回路３、３’に付与されるデータは、８Ｒ／Ｗメモリ回路５を介したデータと同じもの、更に言えば、第１の動作モードの８Ｒ／Ｗメモリ回路で処理されたデータと同じものとする必要がある。このため、この第２の実施形態では、データを予めＣＰＵ等で処理するものとする。
【００９７】
明らかなように、第２の実施形態では、８Ｒ／Ｗメモリ回路５を第１の動作モードで処理させる必要はない。別の言い方をすれば、第２の実施形態では、８Ｒ／Ｗメモリ回路５を上述した第２の動作モードでのみ動作させるだけでよい。したがって、第２の実施形態によれば、第１の実施形態に比べて、ＣＰＵ等によって行われる処理が多少多くなるものの、８Ｒ／Ｗメモリ５を単一の動作モード（第２の動作モード）でのみ動作させればよいため、８Ｒ／Ｗメモリ回路の制御や構成をより簡易なものとすることができる。これに対し、第１の実施形態では、第２の実施形態に比べて、８Ｒ／Ｗメモリ回路５の制御や構成が多少複雑になるものの、ＣＰＵ等によって行われる処理を少なくすることができる点で有利である。
【００９８】
Ｃ．第３の実施形態
本発明の第３の実施形態は、入力手段をＤＣＴ回路３、３’とＦＩＦＯ７との間（一点鎖線Ｃと信号線２４との交差位置）に設けるもの、としたものである。
【００９９】
この結果、この第３の実施形態では、ＤＣＴプロセッサの外部からのデータは、８Ｒ／Ｗメモリ回路５やＤＣＴ回路３、３’を介さずにＦＩＦＯ７に直接付与されることになる。しかしながら、この場合にも、ＦＩＦＯ５に付与されるデータは、８Ｒ／Ｗメモリ回路５やＤＣＴ回路３、３’を介したデータと同じもの、更に言えば、第１の動作モードの８Ｒ／Ｗメモリ回路とＤＣＴ回路３、３’で処理されたデータと同じものとする必要がある。この処理はＣＰＵ等によって行うことができる。
【０１００】
明らかなように、第３の実施形態でも、第２の実施形態と同様に、８Ｒ／Ｗメモリ回路５を第１の動作モードで処理させる必要はない。よって、第２の実施形態で述べたものと同様の利点と欠点を有することになる。
【０１０１】
Ｄ．ＤＣＴプロセッサの性能
下の表に、本発明のＤＣＴプロセッサの性能と従来装置であるLippen等によるＤＣＴプロセッサのそれとを比較した比較結果を示す。
【０１０２】
2005309474.tif 000003
【０１０３】
ここで、表中の「１つのサンプリングポイントを計算するに必要な算術演算器の数」とは、図６に記載された算術演算器、即ち、加算・減算器と乗算器の数を意味する。本発明では、各ＤＣＴ回路３、３’に８個ずつ設けられているから計１６個である。また、「１サイクル毎に発生する中間出力値の数」とは、ＤＣＴ回路による１回の計算で発生し得る値の数であり、本発明では３２個のサンプリングポイントを４回に分けて計算するから、８個ということになる。更に、「レジスタファイル（データの蓄積装置）の数」とは、計算結果を記憶させるための装置の数を意味し、本発明ではＦＩＦＯ７と８Ｒ／Ｗメモリ回路５ということになるから２個である。「ＤＣＴの推定コア領域」とは、ＤＣＴプロセッサ１に必要な面積である。「出力レイテンシイ」は、出力結果を得るまでの平均時間である。
【０１０４】
上の表より明らかなように、例えば、メモリブロック等の周辺ロジックに必要な面積に関して、本発明のＤＣＴプロセッサ１は、Lippenのアルゴリズムによるプロセッサで必要とされる面積の約半分ほどで足りる。また、出力レイテンシイ（遅延）について言えば、本発明のＤＣＴプロセッサは、Lippenのプロセッサのそれの約１／４程で足りる。このように、本発明のＤＣＴプロセッサは優れた性能を発揮する。
【０１０５】
最後に、上の実施形態では、ＦＩＦＯからのデータを並び替えるためにクロス部を用いているが、例えば、クロスバースイッチを用いても良い。また、クロス部を、ＦＩＦＯの出力部や８Ｒ／Ｗメモリ回路の入力部（８Ｒ／Ｗメモリ回路の内部）に設けても良い。必要なことは、８Ｒ／Ｗメモリ回路によるパームテーションが行われるよう、８Ｒ／Ｗメモリ回路のメモリブロックに書き込みを行う前に並び替えを行わなければならないことだけである。
【０１０６】
【発明の効果】
本発明によれば、８Ｒ／Ｗメモリ回路によってリソースシェアリングが促進されることから信号のパームテーション（置き換え）の複雑さが解消され、これによって、必要とされる部材数の減少、ファンクションブロックエリアの減少、消費電力の減少、更に、処理スピードの高速化、あるいは、出力レイテンシイの減少を図ることができる。
【図面の簡単な説明】
【図１】本発明によるＤＣＴプロセッサのブロック図である。
【図２】ＤＣＴ回路の機能素子の各機能を説明する図である。
【図３】８Ｒ／Ｗメモリ回路のブロック図を示す図である。
【図４】８Ｒ／Ｗメモリ回路の回路図である。
【図５】パームテーションを実行することによって得られる効果を視覚的に示した図である。
【図６】離散コサイン変換処理のシーケンスフローを示す図である。
【図７】離散コサイン変換処理によって生じるデータのデータフローを表すデータフローグラフである。
【図１】
2005309474.tif 000004
【図２】
2005309474.tif 000005
【図３】
2005309474.tif 000006
【図４】
2005309474.tif 000007
【図５】
2005309474.tif 000008
【図６】
2005309474.tif 000009
【図７】
2005309474.tif 000010