(57)【特許請求の範囲】
【請求項１】
入力行列に対して、少なくとも１の対角成分が無理数であり他の各成分が「０」である第１の行列と、各成分が無理数、「＋１」あるいは「−１」のいずれかである第２の行列とに行列分解できる第１の係数行列を左側から、前記第２の行列の転置行列である第３の行列と、前記第１の行列の転置行列である第４の行列とに行列分解できる前記第１の係数行列の転置行列である第２の係数行列を右側からそれぞれ乗算する計算に相当する計算を行い、その計算結果である出力行列の各成分を出力する２次元離散コサイン変換装置であって、
前記第２の行列と前記入力行列との乗算に相当する第１の計算を行う第１の計算回路と、
該第１の計算回路の前記第１の計算の計算結果と前記第３の行列との乗算に相当する第２の計算を行う第２の計算回路と、
該第２の計算回路からシリアルに入力した前記第２の計算の計算結果に対して、左側から前記第１の行列を乗算し右側から前記第４の行列を乗算する計算に相当する所定の計算を行う乗算器と
を有し、
前記第１の計算回路は、
直列的に接続された複数の第１の記憶素子と、
該第１の記憶素子から供給されるデータを用いて前記第１の計算に応じた計算を行い、計算結果を所定の前記第１の記憶素子に記憶させる単数または複数の第１の演算器と、
前記入力行列を構成する複数の第１の成分をシリアルに第１段の前記第１の記憶素子に順に記憶させ、前記入力行列の新たな前記第１の成分を前記第１段の前記第１の記憶素子に記憶させる度に、当該記憶前に前記複数の第１の記憶素子に記憶されていた前記第１の成分あるいは当該第１の成分に対して前記第１の演算器による計算を施して生成された成分を後段の前記第１の記憶素子に記憶させ、最終段の前記第１の記憶素子から前記第１の計算の計算結果を示すデータをシリアルに出力させる第１の制御回路と
を有し、
前記第２の計算回路は、
直列的に接続された複数の第２の記憶素子と、
該第２の記憶素子から供給されるデータを用いて前記第２の計算に応じた計算を行い、計算結果を所定の前記第２の記憶素子に記憶させる単数または複数の第２の演算器と、
前記第１の計算回路からシリアルに出力された前記第１の計算の計算結果を構成する複数の第２の成分をシリアルに第１段の前記第２の記憶素子に順に記憶させ、前記第１の計算の計算結果の新たな前記第２の成分を前記第１段の前記第２の記憶素子に記憶させる度に、当該記憶前に前記複数の第２の記憶素子に記憶されていた前記第２の成分あるいは当該第２の成分に対して前記第２の演算器による計算を施して生成された成分を後段の前記第２の記憶素子に記憶させ、最終段の前記第２の記憶素子から前記第２の計算の計算結果を示すデータを前記乗算器にシリアルに出力させる第２の制御回路と
を有する
２次元離散コサイン変換装置。
【請求項２】
前記第１の計算回路の計算結果の列と行とを並べ換える並換回路を前記第１の計算回路と前記第２の計算回路との間に設けたことを特徴とする請求項１記載の２次元離散コサイン変換装置。
【請求項３】
入力行列に対して、少なくとも１の対角成分が無理数であり他の各成分が「０」である第１の行列と、各成分が無理数、「＋１」あるいは「−１」のいずれかである第２の行列とに行列分解できる第１の係数行列を右側から、前記第２の行列の転置行列である第３の行列と、前記第１の行列の転置行列である第４の行列とに行列分解できる前記第１の係数行列の転置行列である第２の係数行列を左側からそれぞれ乗算する計算に相当する計算を行い、その計算結果である出力行列の各成分を出力する２次元逆離散コサイン変換装置であって、
前記入力行列に対して左側から前記第４の行列を乗算し右側から前記第１の行列を乗算する計算に相当する第１の計算を行う乗算器と
前記乗算器からシリアルに入力した前記第１の計算の計算結果と前記第２の行列の乗算に相当する第２の計算を行う第１の計算回路と、
前記第３の行列と前記第１の計算回路からシリアルに入力した前記第２の計算の計算結果との乗算に相当する第３の計算を行う第２の計算回路と、
を有し、
前記第１の計算回路は、
直列的に接続された複数の第１の記憶素子と、
該第１の記憶素子から供給されるデータを用いて前記第２の計算に応じた計算を行い、計算結果を所定の前記第１の記憶素子に記憶させる単数または複数の第１の演算器と、
前記乗算器から入力した前記第１の計算の計算結果を構成する複数の第１の成分をシリアルに第１段の前記第１の記憶素子に順に記憶させ、前記第１の計算の計算結果の新たな前記第１の成分を前記第１段の前記第１の記憶素子に記憶させる度に、当該記憶前に前記複数の第１の記憶素子に記憶されていた前記第１の成分あるいは当該第１の成分に対して前記第１の演算器による計算を施して生成された成分を後段の前記第１の記憶素子に記憶させ、最終段の前記第１の記憶素子から前記第２の計算の計算結果を示すデータをシリアルに出力させる第１の制御回路と
を有し、
前記第２の計算回路は、
直列的に接続された複数の第２の記憶素子と、
該第２の記憶素子から供給されるデータを用いて前記第３の計算に応じた計算を行い、計算結果を所定の前記第２の記憶素子に記憶させる単数または複数の第２の演算器と、
前記第１の計算回路からシリアルに出力された前記第２の計算の計算結果を構成する複数の第２の成分をシリアルに第１段の前記第２の記憶素子に順に記憶させ、前記第２の計算の計算結果の新たな前記第２の成分を前記第１段の前記第２の記憶素子に記憶させる度に、当該記憶前に前記複数の第２の記憶素子に記憶されていた前記第２の成分あるいは当該第２の成分に対して前記第２の演算器による計算を施して生成された成分を後段の前記第２の記憶素子に記憶させ、最終段の前記第２の記憶素子から前記第３の計算の計算結果を示すデータをシリアルに出力させる第２の制御回路と
を有する
２次元逆離散コサイン変換装置。
【請求項４】
前記第１の計算回路の計算結果の列と行とを並べ換える並換回路を前記第１の計算回路と前記第２の計算回路との間に設けたことを特徴とする請求項４記載の２次元逆離散コサイン変換装置。
【請求項５】
入力行列に対して、少なくとも１の対角成分が無理数であり他の各成分が「０」である第１の行列と、各成分が無理数、「＋１」あるいは「−１」のいずれかである第２の行列とに行列分解できる第１の係数行列を左側から、前記第２の行列の転置行列である第３の行列と、前記第１の行列の転置行列である第４の行列とに行列分解できる前記第１の係数行列の転置行列である第２の係数行列を右側からそれぞれ乗算する計算に相当する計算を行い、その計算結果である出力行列の各成分を出力する２次元離散コサイン変換装置が実行する２次元離散コサイン変換方法であって、
前記第２の行列と前記入力行列との乗算に相当する第１の計算を行う第１の工程と、
前記第１の工程の前記第１の計算の計算結果と前記第３の行列との乗算に相当する第２の計算を行う第２の工程と、
該第２の工程でシリアルに生成された前記第２の計算の計算結果に対して、左側から前記第１の行列を乗算し右側から前記第４の行列を乗算する計算に相当する所定の計算を行う第３の工程と
を有し、
前記第１の工程は、
直列的に接続された複数の第１の記憶素子と、該第１の記憶素子から供給されるデータを用いて前記第１の計算に応じた計算を行い、計算結果を所定の前記第１の記憶素子に記憶させる単数または複数の第１の演算器とを用いて、前記入力行列を構成する複数の第１の成分をシリアルに第１段の前記第１の記憶素子に順に記憶させ、前記入力行列の新たな前記第１の成分を前記第１段の前記第１の記憶素子に記憶させる度に、当該記憶前に前記複数の第１の記憶素子に記憶されていた前記第１の成分あるいは当該第１の成分に対して前記第１の演算器による計算を施して生成された成分を後段の前記第１の記憶素子に記憶させ、最終段の前記第１の記憶素子から前記第１の計算の計算結果を示すデータをシリアルに生成する処理を行い、
前記第２の工程は、
直列的に接続された複数の第２の記憶素子と、該第２の記憶素子から供給されるデータを用いて前記第２の計算に応じた計算を行い、計算結果を所定の前記第２の記憶素子に記憶させる単数または複数の第２の演算器とを用いて、前記第１の工程でシリアルに生成された前記第１の計算の計算結果を構成する複数の第２の成分をシリアルに第１段の前記第２の記憶素子に順に記憶させ、前記第１の計算の計算結果の新たな前記第２の成分を前記第１段の前記第２の記憶素子に記憶させる度に、当該記憶前に前記複数の第２の記憶素子に記憶されていた前記第２の成分あるいは当該第２の成分に対して前記第２の演算器による計算を施して生成された成分を後段の前記第２の記憶素子に記憶させ、最終段の前記第２の記憶素子から前記第２の計算の計算結果を示すデータをシリアルに生成する処理を行う
２次元離散コサイン変換方法。
【請求項６】
入力行列に対して、少なくとも１の対角成分が無理数であり他の各成分が「０」である第１の行列と、各成分が無理数、「＋１」あるいは「−１」のいずれかである第２の行列とに行列分解できる第１の係数行列を右側から、前記第２の行列の転置行列である第３の行列と、前記第１の行列の転置行列である第４の行列とに行列分解できる前記第１の係数行列の転置行列である第２の係数行列を左側からそれぞれ乗算する計算に相当する計算を行い、その計算結果である出力行列の各成分を出力する２次元逆離散コサイン変換装置が行う２次元逆離散コサイン変換方法であって、
前記入力行列に対して左側から前記第４の行列を乗算し右側から前記第１の行列を乗算する計算に相当する第１の計算を行う第１の工程と、
前記第１の工程でシリアルに生成された前記第１の計算の計算結果と前記第２の行列の乗算に相当する第２の計算を行う第２の工程と、
前記第３の行列と前記第２の工程でシリアルに生成された前記第２の計算の計算結果との乗算に相当する第３の計算を行う第３の工程と、
を有し、
前記第２の工程は、
直列的に接続された複数の第１の記憶素子と、該第１の記憶素子から供給されるデータを用いて前記第２の計算に応じた計算を行い、計算結果を所定の前記第１の記憶素子に記憶させる単数または複数の第１の演算器とを用いて、前記乗算器から入力した前記第１の計算の計算結果を構成する複数の第１の成分をシリアルに第１段の前記第１の記憶素子に順に記憶させ、前記第１の計算の計算結果の新たな前記第１の成分を前記第１段の前記第１の記憶素子に記憶させる度に、当該記憶前に前記複数の第１の記憶素子に記憶されていた前記第１の成分あるいは当該第１の成分に対して前記第１の演算器による計算を施して生成された成分を後段の前記第１の記憶素子に記憶させ、最終段の前記第１の記憶素子から前記第２の計算の計算結果を示すデータをシリアルに生成する処理を行い、
前記第３の工程は、
直列的に接続された複数の第２の記憶素子と、該第２の記憶素子から供給されるデータを用いて前記第３の計算に応じた計算を行い、計算結果を所定の前記第２の記憶素子に記憶させる単数または複数の第２の演算器とを用いて、前記第２の工程でシリアルに生成された前記第２の計算の計算結果を構成する複数の第２の成分をシリアルに第１段の前記第２の記憶素子に順に記憶させ、前記第２の計算の計算結果の新たな前記第２の成分を前記第１段の前記第２の記憶素子に記憶させる度に、当該記憶前に前記複数の第２の記憶素子に記憶されていた前記第２の成分あるいは当該第２の成分に対して前記第２の演算器による計算を施して生成された成分を後段の前記第２の記憶素子に記憶させ、最終段の前記第２の記憶素子から前記第３の計算の計算結果を示すデータをシリアルに生成する処理を行う
２次元逆離散コサイン変換方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、ディジタル信号処理装置に関し、特に２次元離散コサイン変換（ＤＣＴ；Discrete Cosine Transformation） 装置および２次元逆離散コサイン変換（ＩＤＣＴ；Inverse DCT）装置に関するものである。
【０００２】
【従来技術】
近年、画像圧縮の分野では２次元ＤＣＴおよび２次元ＩＤＣＴを用いる方式が主流を占めている。２次元８×８ＤＣＴおよび２次元８×８ＩＤＣＴは、下記式（１７）で表される変換である。下記式（１７）において添え字の「t 」は転置行列を表し、〔Ｎt 〕と〔Ｎ〕とは転置行列の関係にある。
【０００３】
【数１】
0003697717.tif 000002
【０００４】
式（１７）において、〔Ｘ〕は例えば８×８の実空間の画像行列データであり、〔Ｃ〕は〔Ｘ〕に対応する８×８の周波数空間の行列データであり、〔Ｎ〕は〔Ｃ〕を〔Ｘ〕に変換するための８×８定数行列である。
〔Ｎ〕は下記式（１８）、〔Ｎt 〕は下記式（１９）のように表せる。
【０００５】
【数２】
0003697717.tif 000003
【０００６】
【数３】
0003697717.tif 000004
【０００７】
２次元８×８ＤＣＴ、ＩＤＣＴの計算を上記式（１７）をそのまま単純に計算して行うと、乗算回数が非常に多くなり、多数の乗算器を含む膨大なハードウェアが必要になるという問題がある。
この問題を解決するために、本出願人による特願平４−２１１０１４号では、上記式（１７）に示す定数行列〔Ｎ〕を対角線成分が無理数であり他の成分が全て「０」である行列〔Ｗ〕および各成分が無理数、「＋１」あるいは「−１」のいずれかである行列〔Ｍ〕に行列分解し、定数行列〔Ｎt 〕を上記行列〔Ｗ〕の転置行列である行列〔Ｗt 〕および上記行列〔Ｍ〕の転置行列である行列〔Ｍt
〕に行列分解し、これら行列分解された行列式に基づいて計算を実行することにより、ＤＣＴの乗算回数を減らすことができる２次元８×８ＤＣＴ装置を開示する。
この２次元８×８ＤＣＴ装置では、上記式（１７）に示すＤＣＴの式を下記式（２０）のように変換し、下記式（２０）を下記ステップＳ１〜ステップＳ３の手順で計算することで、乗算回数を低減し、乗算器の数の増大による演算回路の大規模化を抑制する。
【０００８】
【数４】
0003697717.tif 000005
【０００９】
【数５】
0003697717.tif 000006
【００１０】
上記式（２０）における行列〔Ｗ〕は下記式（２２）で表せる。
【数６】
0003697717.tif 000007
【００１１】
また、上記式（２０）における行列〔Ｍ〕は下記式（２３）で表せる。
【数７】
0003697717.tif 000008
【００１２】
さらに、上記（２０）における行列〔Ｗt 〕、行列〔Ｍt 〕は、それぞれ行列〔Ｗ〕、行列〔Ｍ〕の転置行列であり、下記式（２４）、（２５）で表せる。
【数８】
0003697717.tif 000009
【００１３】
【数９】
0003697717.tif 000010
【００１４】
図１０は上記式（２０）の計算を行う２次元８×８ＤＣＴ装置１００の構成図である。
図１０に示すように、２次元８×８ＤＣＴ装置１００は、シリアル／パラレル変換器１２１、計算回路１２２、並換回路１２３、計算回路１２４、パラレル／シリアル変換器１２５および乗算器１２６で構成される。
この２次元８×８ＤＣＴ装置１００では、画像データである行列〔Ｘ〕をシリアルに入力し、シリアル／パラレル変換器１２１にて行列〔Ｘ〕をパラレルデータに変換し、計算回路１２２を用いて上記ステップＳ１の計算を実行し、並換回路１２３および計算回路１２４を用いて上記ステップＳ２の計算を実行し、パラレル／シリアル変換器１２５を用いて計算回路１２４からのパラレルデータをシリアルデータに変換し、乗算器１２６を用いて上記ステップＳ３の計算を実行し、乗算器１２６から周波数上のデータである行列〔Ｃ〕をシリアルに出力する。  図１１は計算回路１２２の構成図である。
図１１に示されるｘｘ０〜ｘｘ７は下記式（２６）で表せるベクトル〔ｘｘ〕の構成要素であり、ベクトル〔ｘｘ〕は式（２０）の行列〔Ｘ〕の行方向の構成要素で構成されるベクトルである。また、ｙｙ０〜ｙｙ７は下記式（２７）で表せるベクトル〔ｙｙ〕の構成要素であり、ベクトル〔ｙｙ〕はステップＳ１の行列〔Ｙ〕の行方向の構成要素で構成されるベクトルである。
【００１５】
【数１０】
0003697717.tif 000011
【００１６】
【数１１】
0003697717.tif 000012
【００１７】
計算回路１２２は、８要素の入力データ（ｘｘ０、ｘｘ１、．．．、ｘｘ７）をパラレルに入力して、８要素の出力データ（ｙｙ０、ｙｙ１、．．．、ｙｙ７）をパラレルに出力する構成となっている。
計算回路１２２では、たとえば、入力データｘｘ０は、加算器９０ａにて入力データｘｘ７と加算され、この加算結果がｘｐ０として加算器９０ｂに出力される。加算器９０ｂでは、ｘｐ０とｘｐ２とが加算され、加算結果がｘｒ０として加算器９０ｃに出力される。加算器９０ｃでは、ｘｒ０とｘｒ１とが加算され、加算結果がｙｙ０として出力される。
【００１８】
図１２にシリアル／パラレル変換器１２１の構成図を示す。
シリアル／パラレル変換器１０４では、入力端子からデータが１サイクルに１ワードずつワードシリアルに入力されると、８サイクル終了後にはレジスタ（単位遅延回路）Ｒｅｇ０〜７に８個のデータが保持されるので、これらを８個の対応するホールド回路Ｈｏｌｄ０〜７にそれぞれ移し、Ｈｏｌｄ０〜７からの出力を出力端子から得ることにより１入力８出力のシリアル／パラレル変換が実現される。
【００１９】
図１３にパラレル／シリアル変換器１２５の構成図を示す。
パラレル／シリアル変換器１２５では、８個の入力端子から８個のデータが１サイクル間に入力され、これらデータが８個のセレクタＳｅｌ０〜１７を介してレジスタＲｅｇ８〜１５に保持され、２サイクル目以降にＲｅｇ８〜１５が直列に接続されるようにＳｅｌ０〜１７が図示せぬ制御回路からの制御信号によって制御され、８サイクルかけてデータが１ワードずつ出力端子から出力されることで、８入力１出力のパラレル／シリアル変換が実現される。
ホールド回路はデータを保持する回路であり、基本的にはレジスタと同じである。従って、図１０の計算回路１００では、ホールド回路は、シリアル／パラレル変換器１２１内に１６個およびパラレル／シリアル変換器１２５内に８個それぞれ必要となり、合計２４個必要となる。
【００２０】
さらに、上記特願では、上記式（１７）に示す定数行列〔Ｎ〕を対角線成分が無理数であり他の成分が全て「０」である行列〔Ｇ〕および各成分が無理数、「＋１」あるいは「−１」のいずれかである行列〔Ｆ〕に行列分解し、定数行列〔Ｎt 〕を上記行列〔Ｇ〕の転置行列である行列〔Ｇt 〕および上記行列〔Ｆ〕の転置行列である行列〔Ｆt 〕に行列分解し、これら行列分解された行列式に基づいて計算を実行することにより、ＩＤＣＴの乗算回数を減らすことができる２次元８×８ＩＤＣＴ装置を開示する。
この２次元８×８ＩＤＣＴ装置では、上記式（１７）に示すＩＤＣＴの式を下記式（２８）のように式変換し、下記式（２８）を下記ステップＳ１’〜ステップＳ３’の手順で計算することで、乗算回数を低減し、乗算器の数の増大による演算回路の大規模化を抑制する。
【００２１】
【数１２】
0003697717.tif 000013
【００２２】
【数１３】
0003697717.tif 000014
【００２３】
上記式（２８）における行列〔Ｇ〕は下記式（３０）で表せる。
【数１４】
0003697717.tif 000015
【００２４】
また、上記式（２８）における行列〔Ｆ〕は下記式（３１）で表せる。
【００２５】
【数１５】
0003697717.tif 000016
【００２６】
さらに、上記式（２８）における行列〔Ｇt 〕、行列〔Ｆt 〕は、それぞれ行列〔Ｇ〕、行列〔Ｆ〕の転置行列であり、下記式（３２）、（３３）で定義される。
【００２７】
【数１６】
0003697717.tif 000017
【００２８】
【数１７】
0003697717.tif 000018
【００２９】
図１４は上記式（２８）の計算を行う２次元８×８ＩＤＣＴ装置１３０の構成図である。
図１４に示すように、２次元８×８ＤＣＴ装置１３０は、乗算器１３１、シリアル／パラレル変換器１２１、計算回路１３３、並換回路１３４、計算回路１３５およびパラレル／シリアル変換器１２５で構成される。
この２次元８×８ＩＤＣＴ装置１３０では、周波数空間のデータである行列〔Ｃ〕をシリアルに入力し、乗算器１３１にてステップＳ１’の計算をシリアルに実行し、シリアル／パラレル変換器１２１にてパラレルデータに変換し、計算回路１３３を用いて上記ステップＳ２’の計算を実行し、並換回路１３４および計算回路１３５を用いて上記ステップＳ３’の計算を実行し、パラレル／シリアル変換器１２５を用いて計算回路１３５からのパラレルデータをシリアルデータに変換し、実空間の画像データである行列〔Ｘ〕をシリアルに出力する。
【００３０】
図１５は計算回路１３５の構成図である。
図１５に示すベクトル〔ｙｙ〕は下記式（３４）およびベクトル〔ｘｘ〕は下記式（３５）でそれぞれ表せ、ベクトル〔ｙｙ〕はステップＳ２’で生成された行列〔Ｑ〕を並換回路１３４にて行と列とを並べ換えた行列の行方向の構成要素で構成されるベクトルであり、〔ｘｘ〕はステップＳ３’にて生成される実空間の行列〔Ｘ〕の行方向の構成要素で構成されるベクトルである。
【００３１】
【数１８】
0003697717.tif 000019
【００３２】
【数１９】
0003697717.tif 000020
【００３３】
図１５に示す計算回路１３５は、８要素の入力データ（ｙｙ０、ｙｙ１、．．．、ｙｙ７）をパラレルに入力して、８要素の出力データ（ｘｘ０、ｘｘ１、．．．、ｘｘ７）をパラレルに出力する構成となっている。
この２次元８×８ＩＤＣＴ装置１３０でも、２次元８×８ＤＣＴ装置ＤＣＴ１００の場合と同様に、シリアル／パラレル変換器１２１内およびパラレル／シリアル変換器１２５内に合計、２４個のレジスタを必要とする。
【００３４】
【発明が解決しようとする課題】
しかし、上述した特願平４−２１１０１４号が開示する２次元８×８ＤＣＴ装置１００および２次元８×８ＩＤＣＴ装置１３０では、上記ステップＳ１〜Ｓ３およびステップＳ１’〜Ｓ３’の手順で計算を行うことで、従来技術の場合に比べて乗算器の数を低減させ回路規模を縮小できるが、ワードシリアルに行列データを入出力する場合には、従来の場合と同様に図１０および図１４に示すような多数のレジスタを含むシリアル／パラレル変換器１２１およびパラレル／シリアル変換器１２５が必要となり、この部分の回路規模が大きくなってしまうという問題がある。
【００３５】
上述した従来技術の問題を解決するために、本発明は入出力データとしてワードシリアルデータを用いる場合においても、レジスタ数を低減し、回路規模をさらに縮小することができる２次元離散コサイン変換装置および２次元逆離散コサイン変換装置を提供することを目的とする。
【００３６】
【課題を解決するための手段】
上述した問題点を解決し上述した目的を達成するだめに、第１の観点の発明の２次元離散コサイン変換装置は、入力行列に対して、少なくとも１の対角成分が無理数であり他の各成分が「０」である第１の行列と、各成分が無理数、「＋１」あるいは「−１」のいずれかである第２の行列とに行列分解できる第１の係数行列を左側から、前記第２の行列の転置行列である第３の行列と、前記第１の行列の転置行列である第４の行列とに行列分解できる前記第１の係数行列の転置行列である第２の係数行列を右側からそれぞれ乗算する計算に相当する計算を行い、その計算結果である出力行列の各成分を出力する２次元離散コサイン変換装置であって、前記第２の行列と前記入力行列との乗算に相当する第１の計算を行う第１の計算回路と、該第１の計算回路の前記第１の計算の計算結果と前記第３の行列との乗算に相当する第２の計算を行う第２の計算回路と、該第２の計算回路からシリアルに入力した前記第２の計算の計算結果に対して、左側から前記第１の行列を乗算し右側から前記第４の行列を乗算する計算に相当する所定の計算を行う乗算器とを有し、前記第１の計算回路は、直列的に接続された複数の第１の記憶素子と、該第１の記憶素子から供給されるデータを用いて前記第１の計算に応じた計算を行い、計算結果を所定の前記第１の記憶素子に記憶させる単数または複数の第１の演算器と、前記入力行列を構成する複数の第１の成分をシリアルに第１段の前記第１の記憶素子に順に記憶させ、前記入力行列の新たな前記第１の成分を前記第１段の前記第１の記憶素子に記憶させる度に、当該記憶前に前記複数の第１の記憶素子に記憶されていた前記第１の成分あるいは当該第１の成分に対して前記第１の演算器による計算を施して生成された成分を後段の前記第１の記憶素子に記憶させ、最終段の前記第１の記憶素子から前記第１の計算の計算結果を示すデータをシリアルに出力させる第１の制御回路とを有し、前記第２の計算回路は、直列的に接続された複数の第２の記憶素子と、該第２の記憶素子から供給されるデータを用いて前記第２の計算に応じた計算を行い、計算結果を所定の前記第２の記憶素子に記憶させる単数または複数の第２の演算器と、前記第１の計算回路からシリアルに出力された前記第１の計算の計算結果を構成する複数の第２の成分をシリアルに第１段の前記第２の記憶素子に順に記憶させ、前記第１の計算の計算結果の新たな前記第２の成分を前記第１段の前記第２の記憶素子に記憶させる度に、当該記憶前に前記複数の第２の記憶素子に記憶されていた前記第２の成分あるいは当該第２の成分に対して前記第２の演算器による計算を施して生成された成分を後段の前記第２の記憶素子に記憶させ、最終段の前記第２の記憶素子から前記第２の計算の計算結果を示すデータを前記乗算器にシリアルに出力させる第２の制御回路とを有する。
【００３７】
第２の観点の発明の２次元逆離散コサイン変換装置は、入力行列に対して、少なくとも１の対角成分が無理数であり他の各成分が「０」である第１の行列と、各成分が無理数、「＋１」あるいは「−１」のいずれかである第２の行列とに行列分解できる第１の係数行列を右側から、前記第２の行列の転置行列である第３の行列と、前記第１の行列の転置行列である第４の行列とに行列分解できる前記第１の係数行列の転置行列である第２の係数行列を左側からそれぞれ乗算する計算に相当する計算を行い、その計算結果である出力行列の各成分を出力する２次元逆離散コサイン変換装置であって、前記入力行列に対して左側から前記第４の行列を乗算し右側から前記第１の行列を乗算する計算に相当する第１の計算を行う乗算器と前記乗算器からシリアルに入力した前記第１の計算の計算結果と前記第２の行列の乗算に相当する第２の計算を行う第１の計算回路と、前記第３の行列と前記第１の計算回路からシリアルに入力した前記第２の計算の計算結果との乗算に相当する第３の計算を行う第２の計算回路とを有し、前記第１の計算回路は、直列的に接続された複数の第１の記憶素子と、該第１の記憶素子から供給されるデータを用いて前記第２の計算に応じた計算を行い、計算結果を所定の前記第１の記憶素子に記憶させる単数または複数の第１の演算器と、前記乗算器から入力した前記第１の計算の計算結果を構成する複数の第１の成分をシリアルに第１段の前記第１の記憶素子に順に記憶させ、前記第１の計算の計算結果の新たな前記第１の成分を前記第１段の前記第１の記憶素子に記憶させる度に、当該記憶前に前記複数の第１の記憶素子に記憶されていた前記第１の成分あるいは当該第１の成分に対して前記第１の演算器による計算を施して生成された成分を後段の前記第１の記憶素子に記憶させ、最終段の前記第１の記憶素子から前記第２の計算の計算結果を示すデータをシリアルに出力させる第１の制御回路とを有し、前記第２の計算回路は、直列的に接続された複数の第２の記憶素子と、該第２の記憶素子から供給されるデータを用いて前記第３の計算に応じた計算を行い、計算結果を所定の前記第２の記憶素子に記憶させる単数または複数の第２の演算器と、前記第１の計算回路からシリアルに出力された前記第２の計算の計算結果を構成する複数の第２の成分をシリアルに第１段の前記第２の記憶素子に順に記憶させ、前記第２の計算の計算結果の新たな前記第２の成分を前記第１段の前記第２の記憶素子に記憶させる度に、当該記憶前に前記複数の第２の記憶素子に記憶されていた前記第２の成分あるいは当該第２の成分に対して前記第２の演算器による計算を施して生成された成分を後段の前記第２の記憶素子に記憶させ、最終段の前記第２の記憶素子から前記第３の計算の計算結果を示すデータをシリアルに出力させる第２の制御回路とを有する。
【００３８】
【作用】
本発明の２次元離散コサイン変換装置では、入力行列に応じたデータがシリアルに第１の計算回路に入力され、該第１の計算回路にて、各成分が無理数、「＋１」あるいは「−１」のいずれかである第２の行列と前記入力行列との乗算に相当する所定の計算が実行され、計算結果を示すデータがシリアルに出力される。
該第１の計算回路の計算結果を示すデータは、次に、第２の計算回路にシリアルに入力され、該第２の計算回路にて、該第１の計算回路の計算結果を示すデータと、前記第２の行列の転置行列である第３の行列との乗算に相当する所定の計算が実行され、計算結果を示すデータがシリアルに出力される。
該第２の計算回路の計算結果を示すデータは、次に、乗算器にシリアルに入力され、該乗算器にて、左側から少なくとも１の対角成分が無理数であり他の各成分が「０」である第１の行列を乗算し、右側から前記第１の行列の転置行列である第４の行列を乗算する計算に相当する所定の計算が実行され、計算結果を示すデータがシリアルに出力される。
【００３９】
上記第１の計算回路および第２の計算回路においては、データが、第１段の記憶素子にシリアルに入力され、該入力されたデータはパイプライン方式で順次、後段の記憶素子に転送される。そして、この転送過程において演算器による所定の計算が実行され、最終段の記憶素子から計算結果を示すデータがシリアルに出力される。
【００４０】
【実施例】
第１実施例について説明する。
本実施例では、上述した従来の２次元８×８ＤＣＴ装置１００と同様に、下記式（３６）を下記ステップＳ１〜Ｓ３に示す手順で実行する２次元８×８ＤＣＴ装置について説明する。
【００４１】
【数２０】
0003697717.tif 000021
【００４２】
【数２１】
0003697717.tif 000022
【００４３】
上記式（３６）における行列〔Ｗ〕は下記式（３８）で表せる。
【数２２】
0003697717.tif 000023
【００４４】
また、上記式（３６）における行列〔Ｍ〕は下記式（３９）で表せる。
【数２３】
0003697717.tif 000024
【００４５】
また、上記式（３６）における行列〔Ｗt 〕および行列〔Ｍt 〕は、それぞれ行列〔Ｗ〕および行列〔Ｍ〕の転置行列であり、下記式（４０）、（４１）で表せる。
【００４６】
【数２４】
0003697717.tif 000025
【００４７】
【数２５】
0003697717.tif 000026
【００４８】
また、上記式（３６）における〔Ｘ〕は８×８の実空間の画像データであり、〔Ｃ〕は〔Ｘ〕に対応する８×８の周波数空間のデータである。
【００４９】
図１は、本実施例の２次元８×８ＤＣＴ装置１の構成図である。
２次元８×８ＤＣＴ装置１は、計算回路２、並換回路５、計算回路６および乗算器８で構成され、各構成要素はシリアルデータを入力し、シリアルデーアを出力する。
従って、２次元８×８ＤＣＴ装置１では、上述した従来の２次元８×８ＤＣＴ装置１００のように合計２４個のレジスタを含むシリアル／パラレル変換器およびパラレル／シリアル変換器を必要とせず、各構成要素においてシリアルデータを後述するようにそのまま処理することができ、レジスタ数を大幅に低減できると共に回路規模をさらに縮小することが可能となる。
計算回路２は上記ステップＳ１の計算を実行する。
並換回路５および計算回路６はステップＳ２の計算を実行する。
乗算器１１２はステップＳ３の計算を実行する。
図２は、図１に示す計算回路２の構成図である。
図２に示すように計算回路２は、入力端子と接続されたレジスタＲ０、レジスタＲ１〜Ｒ１１および出力端子と接続されたレジスタＲ１２が直列に接続され、１３段のパイプラインレジスタを構成している。各レジスタ間にはセレクタレジスタＳ１〜Ｓ１２がそれぞれ設けられており、セレクタレジスタＳｉ（１≦ｉ≦１２）はレジスタＲｉ−１およびバス４からのデータを、制御回路６からの制御信号ＣＳ１〜ＣＳ１２に基づいて、選択的にレジスタＲｉに出力する。
【００５０】
計算回路２には、加減算器ＡＳ１、ＡＳ２、加算器ＡＤＤ、減算器ＳＵＢおよび乗算器ＭＰＹが設けられている。加減算器ＡＳ１、ＡＳ２はそれぞれバス４と接続され、加算／減算選択信号ＣＳ１３、ＣＳ１４に基づいて、バス４から供給されたデータについて加算および減算を１クロックサイクルで選択的に行い、計算結果をバス４に出力する。加算器ＡＤＤはバス４と接続され、バス４から供給されたデータについて加算を１クロックサイクルで行い、計算結果をバス４に出力する。減算器ＳＵＢはバス４と接続され、バス４から供給されたデータについて減算を１クロックサイクルで行い、計算結果をバス４に出力する。乗算器ＭＰＹはバス４と接続され、バス４から供給されたデータと、制御回路６からの係数信号Ｓ１５に示される係数との乗算を行い、計算結果をバス４に出力する。乗算器ＭＰＹにおける乗算は、１クロックサイクル以上必要であるため、乗算をパイプライン化して実行する。つまり、各クロックサイクル毎に順次、乗算器ＭＰＹにデータを入力することは可能であるが、その乗算結果は所定のクロックサイクルだけ遅れて乗算器ＭＰＹから出力される。
【００５１】
但し、バス４は競合しないように充分に広い幅を持たせておく。あるいは、競合するときは、時分割でデータを送信するようにしておく。また、以下で述べるようにＤＣＴ専用回路など特定のアプリケーションに適用する場合には、全てのレジスタと全ての演算器をバスで接続する必要はない。すなわち、特定のアプリケーションにおいて使うことのないレジスタを演算器との組み合わせはバスで接続する必要はない。
【００５２】
以下、計算回路２を用いてステップＳ１の計算を行う場合について説明する。
図３は計算回路２を用いてテップＳ１の計算を行う際のタイミングチャートである。
図４は図３の各クロックサイクルにおける計算内容を説明するための図である。
図３および図４に示されるｘｘ０〜ｘｘ７、ｘｐ０〜ｘｐ７、ｘｑ４〜ｘｑ７、ｘｒ０〜ｘｒ７、ｘｓ２〜ｘｓ７およびｙｙ０〜ｙｙ７は、図８に示されるものと同一である。
【００５３】
入力データ（ｘｘ０〜ｘｘ７）は、図３に示すように１〜８クロックサイクルにわたって順次、入力端子から入力される。
ここで入力データ（ｘｘ０〜ｘｘ７）は、式（３６）の行列〔Ｘ〕の行方向の構成要素で構成されるベクトルである。
行列〔Ｘ〕を構成する行方向のベクトルを単位として以下の計算が実行され、全ての行方向のベクトルの計算を行うことで、行列〔Ｘ〕に対して上記式（３６）の計算が実行される。
【００５４】
入力データは、１クロックサイクル毎に順次、後段のレジスタ（Ｒ０〜Ｒ１２）およびバス４に出力される。バス４に出力された入力データは、制御回路６からの演算指示信号ＣＳ２０〜ＣＳ２４に基づいて、所定の加減算器ＡＳ１、ＡＳ２、加算器ＡＤＤ、減算器ＳＵＢあるいは乗算器ＭＰＹに供給され、ステップＳ１に応じた計算が実行される。加減算器ＡＳ１、ＡＳ２、加算器ＡＤＤ、減算器ＳＵＢあるいは乗算器ＭＰＹにおける計算結果はバス４を介してセレクタＳ１〜Ｓ１２に出力され、制御信号ＣＳ１〜ＣＳ１２に応じて、所定のレジスタＲ１〜Ｒ１２に出力される。
【００５５】
制御回路６は、加減算器ＡＳ１、ＡＳ２、加算器ＡＤＤ、減算器ＳＵＢおよび乗算器ＭＰＹに対して、図４に示す手順でステップＳ１の計算が実行されるように、制御信号ＣＳ１〜ＣＳ１２、演算指示信号ＣＳ２０〜ＣＳ２４、加算／減算選択信号ＣＳ１３、ＣＳ１４および係数信号Ｓ１４を出力する。
【００５６】
以下、計算回路２における計算手順を図３および図４を用いて各クロックサイクル毎に説明する。
１〜８クロックサイクル目：行列データ〔Ｘ〕の８要素が、ｘｘ０、ｘｘ１、ｘｘ２、ｘｘ３、ｘｘ４、ｘｘ５、ｘｘ７、ｘｘ６の順に、入力端子から入力され、順次、後段のレジスタに出力される。
【００５７】
６クロックサイクル目：図３に示すように、入力端子からデータｘｘ２が入力され、レジスタＲ０〜Ｒ４にはデータｘｘ３、ｘｘ４、ｘｘ５，ｘｘ７、ｘｘ６がそれぞれ記憶されている。
そして、計算回路２では、６クロックサイクル目において、図４に示すように、レジスタＲ０に記憶されたデータｘｘ３およびレジスタＲ１に記憶されたデータｘｘ４をバス１４を介して加算器ＡＤＤおよび減算器ＳＵＢに供給し、加算器ＡＤＤにおいてデータｘｘ３とデータｘｘ４との加算を実行し、減算器ＳＵＢにおいてデータｘｘ３とデータｘｘ４との減算を行い、加算器ＡＤＤにおける加算結果ｘｐ３をレジスタＲ２に記憶させ、減算器ＳＵＢにおける減算結果ｘｐ４をレジスタＲ１に記憶させる。
すなわち、６クロックサイクル目が終了した時点で、データｘｐ３がレジスタＲ２に記憶され、データｘｐ４がレジスタＲ１に記憶される。
【００５８】
７クロックサイクル目：加算器ＡＤＤにて、レジスタＲ０に記憶されたデータｘｘ２とレジスタＲ３に記憶されたデータｘｘ５との加算が実行され、加算結果ｘｐ２がレジスタＲ４に記憶される。
また、減算器ＳＵＢにて、レジスタＲ０に記憶されたデータｘｘ２とレジスタＲ３に記憶されたデータｘｘ５との減算が実行され、減算結果ｘｐ５がレジスタＲ１に記憶される。
【００５９】
８クロックサイクル目：加算器ＡＤＤにて、レジスタＲ０に記憶されたデータｘｘ１とレジスタＲ６に記憶されたデータｘｘ６との加算が実行され、加算結果ｘｐ１がレジスタＲ７に記憶される。
また、減算器ＳＵＢにて、レジスタＲ０に記憶されたデータｘｘ１とレジスタＲ６に記憶されたデータｘｘ６との減算が実行され、減算結果ｘｐ６がレジスタＲ１に記憶される。
【００６０】
９クロックサイクル目：乗算器ＭＰＹにて、制御回路６からの係数信号Ｓ１５および演算指示信号Ｓ２４に基づいて、レジスタＲ１に記憶されているデータｘｐ６をバス１４を介して入力し、データｘｐ６と係数信号Ｓ１５に示される係数Ａ４（＝２×ｃｏｓ（４×π／１６））との乗算が実行され、その乗算結果ｘｑ５が、１０クロックサイクル目の終了時にバス１４を介してレジスタＲ３に記憶される。
乗算器ＭＰＹにおける計算は、前述したようにパイプライン化されており、９クロックサイクル目に入力したデータに対しての乗算結果は１０クロックサイクル目終了時に出力される。
また、加減算器ＡＳ２にて、レジスタＲ２に記憶されたデータｘｐ５とレジスタＲ１に記憶されたデータｘｐ６との加算が実行され、加算結果ｘｑ６がレジスタＲ３に記憶される。
また、加算器ＡＤＤにて、レジスタＲ０に記憶されたデータｘｘ０とレジスタＲ６に記憶されたデータｘｘ７との加算が実行され、加算結果ｘｐ０がレジスタＲ７に記憶される。
また、減算器ＳＵＢにて、レジスタＲ０に記憶されたデータｘｘ０とレジスタＲ６に記憶されたデータｘｘ７との減算が実行され、減算結果ｘｐ７がレジスタＲ１に記憶される。
【００６１】
１０クロックサイクル目：乗算器ＭＰＹにて、レジスタＲ１に記憶されているデータｘｐ７と、係数Ａ４（＝２×ｃｏｓ（４×π／１６））との乗算が実行され、その乗算結果ｘｑ４が、１１クロックサイクル目の終了時にレジスタＲ３に記憶される。
また、加減算器ＡＳ２にて、レジスタＲ４に記憶されたデータｘｐ４とレジスタＲ１に記憶されたデータｘｐ７との加算が実行され、加算結果ｘｑ７がレジスタＲ５に記憶される。
また、加算器ＡＤＤにて、レジスタＲ８に記憶されたデータｘｐ１とレジスタＲ６に記憶されたデータｘｐ２との加算が実行され、加算結果ｘｒ１がレジスタＲ９に記憶される。
また、減算器ＳＵＢにて、レジスタＲ８に記憶されたデータｘｐ１とレジスタＲ６に記憶されたデータｘｐ２との減算が実行され、減算結果ｘｒ３がレジスタＲ７に記憶される。
【００６２】
１１クロックサイクル目：加算器ＡＤＤにて、レジスタＲ８に記憶されたデータｘｐ０とレジスタＲ６に記憶されたデータｘｐ３との加算が実行され、加算結果ｘｒ０がレジスタＲ９に記憶される。
また、減算器ＳＵＢにて、レジスタＲ８に記憶されたデータｘｐ０とレジスタＲ６に記憶されたデータｘｐ３との減算が実行され、減算結果ｘｒ２がレジスタＲ７に記憶される。
【００６３】
１２クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ１０に記憶されたデータｘｒ１とレジスタＲ９に記憶されたデータｘｒ０との加算が実行され、加算結果ｙｙ０がレジスタＲ１２に記憶される。
乗算器ＭＰＹにて、レジスタＲ７に記憶されているデータｘｒ２と、係数Ａ４（＝２×ｃｏｓ（４×π／１６））との乗算が実行され、その乗算結果ｘｓ２が、１３クロックサイクル目の終了時にレジスタＲ９に記憶される。
また、加減算器ＡＳ２にて、レジスタＲ８に記憶されたデータｘｒ３とレジスタＲ７に記憶されたデータｘｒ２との加算が実行され、加算結果ｘｓ３がレジスタＲ９に記憶される。
また、加算器ＡＤＤにて、レジスタＲ４に記憶されたデータｘｑ５とレジスタＲ６に記憶されたデータｘｑ７との加算が実行され、加算結果ｘｒ５がレジスタＲ７に記憶される。
また、減算器ＳＵＢにて、レジスタＲ４に記憶されたデータｘｑ５とレジスタＲ６に記憶されたデータｘｑ７との減算が実行され、減算結果ｘｒ７がレジスタＲ５に記憶される。
【００６４】
１３クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ１０に記憶されたデータｘｒ０とレジスタＲ１１に記憶されたデータｘｒ１との減算が実行され、減算結果ｙｙ４がレジスタＲ１２に記憶される。
また、加算器ＡＤＤにて、レジスタＲ４に記憶されたデータｘｑ４とレジスタＲ６に記憶されたデータｘｑ６との加算が実行され、加算結果ｘｒ４がレジスタＲ７に記憶される。
また、減算器ＳＵＢにて、レジスタＲ４に記憶されたデータｘｑ４とレジスタＲ６に記憶されたデータｘｑ６との減算が実行され、減算結果ｘｒ６がレジスタＲ５に記憶される。
【００６５】
１４クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ１０に記憶されたデータｘｓ３とレジスタＲ９に記憶されたデータｘｓ２との加算が実行され、加算結果ｙｙ２がレジスタＲ１２に記憶される。
乗算器ＭＰＹにて、レジスタＲ７に記憶されているデータｘｒ４と、係数Ａ２（＝２×ｃｏｓ（２×π／１６））との乗算が実行され、その乗算結果ｘｓ４が、１５クロックサイクル目の終了時にレジスタＲ９に記憶される。
また、加減算器ＡＳ２にて、レジスタＲ８に記憶されたデータｘｒ５とレジスタＲ７に記憶されたデータｘｒ４との加算が実行され、加算結果ｘｓ５がレジスタＲ９に記憶される。
【００６６】
１５クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ１０に記憶されたデータｘｓ２とレジスタＲ１１に記憶されたデータｘｓ３との減算が実行され、減算結果ｙｙ６がレジスタＲ１２に記憶される。
【００６７】
１６クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ１０に記憶されたデータｘｓ５とレジスタＲ９に記憶されたデータｘｓ４との加算が実行され、加算結果ｙｙ１がレジスタＲ１２に記憶される。
乗算器ＭＰＹにて、レジスタＲ７に記憶されているデータｘｒ６と、係数Ａ６（＝２×ｃｏｓ（６×π／１６））との乗算が実行され、その乗算結果ｘｓ６が、１７クロックサイクル目の終了時にレジスタＲ９に記憶される。
また、加減算器ＡＳ２にて、レジスタＲ８に記憶されたデータｘｒ７とレジスタＲ７に記憶されたデータｘｒ６との加算が実行され、加算結果ｘｓ７がレジスタＲ９に記憶される。
【００６８】
１７クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ１０に記憶されたデータｘｓ４とレジスタＲ１１に記憶されたデータｘｓ５との減算が実行され、減算結果ｙｙ７がレジスタＲ１２に記憶される。
【００６９】
１８クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ１０に記憶されたデータｘｓ７とレジスタＲ９に記憶されたデータｘｓ６との加算が実行され、加算結果ｙｙ３がレジスタＲ１２に記憶される。
【００７０】
１９クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ１０に記憶されたデータｘｓ６とレジスタＲ１１に記憶されたデータｘｓ７との減算が実行され、減算結果ｙｙ５がレジスタＲ１２に記憶される。
【００７１】
このように計算回路２では、図３および図４に示すように、１３〜２０クロックサイクル目にかけて、データｙｙ０、ｙｙ４、ｙｙ２、ｙｙ６、ｙｙ１、ｙｙ７、ｙｙ３およびｙｙ５が出力される。
【００７２】
上述したように計算回路２によれば、シリアルにデータを入出力するかたちでステップＳ１の計算を実行することができる。
【００７３】
計算回路６は、上述した図２に示す計算回路２と同じ構成であり、制御回路６は、加減算器ＡＳ１、ＡＳ２、加算器ＡＤＤ、減算器ＳＵＢおよび乗算器ＭＰＹに対して、並換回路５からのデータを用いてステップＳ２の計算が実行されるように、制御信号ＣＳ１〜ＣＳ１２、演算指示信号ＣＳ２０〜ＣＳ２４、加算／減算選択信号ＣＳ１３、ＣＳ１４および係数信号Ｓ１４を出力する。
【００７４】
乗算器８は、ステップＳ３の８×８行列〔Ｚ〕の各要素Ｚｈｋを図５に示す乗算回路ＭＰＹの入力端子Ｔ１にシリアルに入力し、各クロックサイクル毎にステップＳ３を計算するための適切な値：（１／４）×ａｉ×ａｊを乗算回路ＭＰＹの係数入力端子Ｔ２に入力することにより、ステップＳ３の計算を実行し、計算結果を出力端子からシリアルに出力する。
【００７５】
上述したように本実施例の２次元８×８ＤＣＴ装置１では、計算回路２、並換回路５、計算回路６および乗算器８は、それぞれシリアルにデータを入力し、シリアルにデータを出力する。
従って、２次元８×８ＤＣＴ装置１では、従来の２次元８×８ＤＣＴ装置１００のように合計２４個のレジスタを含むシリアル／パラレル変換器およびパラレル／シリアル変換器を必要とせず、Ｒ０〜Ｒ１２の１３個のレジスタを含む計算回路２、６を用いることで、入力データをシリアルデータのままで処理することができ、レジスタ数を大幅に低減できると共に回路規模をさらに縮小することが可能となる。
【００７６】
第２実施例について説明する。
本実施例では、前述した従来の２次元８×８ＩＤＣＴ装置１３０と同様に下記式（４２）を下記ステップＳ１’〜Ｓ３’に示す手順で実行する２次元８×８ＩＤＣＴ装置３０について説明する。
【００７７】
【数２６】
0003697717.tif 000027
【００７８】
【数２７】
0003697717.tif 000028
【００７９】
上記式（４２）における行列〔Ｇ〕は下記式（４４）で表せる。
【数２８】
0003697717.tif 000029
【００８０】
また、上記式（４２）における行列〔Ｆ〕は下記式（４５）のように表せる。
【００８１】
【数２９】
0003697717.tif 000030
【００８２】
さらに、上記式（４２）における行列〔Ｇt 〕および行列〔Ｆt 〕は、それぞれ行列〔Ｇ〕および行列〔Ｆ〕の転置行列であり、それぞれ下記式（４６）および（４７）で表せる。
【００８３】
【数３０】
0003697717.tif 000031
【００８４】
【数３１】
0003697717.tif 000032
【００８５】
図６は、本実施例の２次元８×８ＩＤＣＴ装置３０の構成図である。
２次元８×８ＩＤＣＴ装置３０は、乗算器３２、計算回路３４、並換回路３６および計算回路３８で構成され、各構成要素はシリアルデータを入力し、シリアルデータを出力する。
従って、２次元８×８ＩＤＣＴ装置３０では、前述した従来の２次元８×８ＩＤＣＴ装置１３０のように合計２４個のレジスタを含むシリアル／パラレル変換器およびパラレル／シリアル変換器を必要とせず、シリアルデータを各構成要素において後述するようにそまま処理することができ、レジスタ数を大幅に低減できると共に回路規模をさらに縮小することが可能となる。
【００８６】
乗算器３２は上記ステップＳ１’の計算を実行する。
計算回路３４は上記ステップＳ２’の計算を実行する。
並換回路３６および計算回路３８は上記ステップＳ３’の計算を実行する。
【００８７】
乗算器３２は、ステップＳ１’の８×８行列〔Ｃ〕の各要素Ｃｈｋを図５に示す乗算回路ＭＰＹの入力端子Ｔ１にシリアルに入力し、各クロックサイクル毎にステップＳ１’を計算するための適切な値：（１／４）×ａｉ×ａｊを乗算回路ＭＰＹの係数入力端子Ｔ２に入力することにより、ステップＳ１’の計算を実行し、計算結果を出力端子からシリアルに出力する。
【００８８】
計算回路３４は、前述した２次元８×８ＤＣＴ装置１の計算回路２と同一の構成であり、制御回路６は、加減算器ＡＳ１、ＡＳ２、加算器ＡＤＤ、減算器ＳＵＢおよび乗算器ＭＰＹに対して、乗算器３２からのデータを用いてステップＳ２’の計算が実行されるように、制御信号ＣＳ１〜ＣＳ１２、演算指示信号ＣＳ２０〜ＣＳ２４、加算／減算選択信号ＣＳ１３、ＣＳ１４および係数信号Ｓ１４を出力する。
【００８９】
計算回路３８は、前述した２次元８×８ＤＣＴ装置１の計算回路２と同一の構成であり、制御回路６は、加減算器ＡＳ１、ＡＳ２、加算器ＡＤＤ、減算器ＳＵＢおよび乗算器ＭＰＹに対して、並換回路３６からのデータを用いてステップＳ３’の計算が実行されるように、制御信号ＣＳ１〜ＣＳ１２、演算指示信号ＣＳ２０〜ＣＳ２４、加算／減算選択信号ＣＳ１３、ＣＳ１４および係数信号Ｓ１４を出力する。
【００９０】
以下、計算回路３８を用いてステップＳ３’の計算を行う場合について説明する。
図７は計算回路３８を用いてステップＳ３’の計算を行う際のタイミングチャートである。
図８は図７の各クロックサイクルにおける計算内容を説明するための図である。
図７および図８に示されるｙｙ０〜ｙｙ７、ｙｐ０〜ｙｐ７、ｙｑ２〜ｙｑ７、ｙｒ０〜ｙｒ７、ｙｓ４〜ｙｓ７およびｘｘ１〜ｘｘ７は、図１５に示されるものと同一である。
ここで、ｙｙ０〜ｙｙ７は、ステップＳ２’において計算された行列〔Ｑ〕を並換回路３６にて列と行とを並べ替えた行列における、行方向の構成要素で構成されるベクトルであり、ｘｘ０〜ｘｘ７はステップＳ３’において生成される実空間の行列〔Ｘ〕の行方向の構成要素で構成されるベクトルである。
【００９１】
１〜８クロックサイクル目：行列データ〔Ｙ〕が並換回路８の８要素が、ｙｙ３、ｙｙ５、ｙｙ１、ｙｙ７、ｙｙ２、ｙｙ６、ｙｙ０、ｙｙ４の順に、入力端子から入力され、順次、後段のレジスタに出力される。
【００９２】
３クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ０に記憶されたデータｙｙ５と、レジスタＲ１に記憶されたデータｙｙ３との加算が実行され、加算結果ｙｐ６がレジスタＲ３に記憶される。
【００９３】
４クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ２に記憶されたデータｙｙ３と、レジスタＲ１に記憶されたデータｙｙ５との減算が実行され、減算結果ｙｐ７がレジスタＲ３に記憶される。
また、乗算器ＭＰＹにて、レジスタＲ３に記憶されたデータｙｐ６と、係数信号Ｓ１５に示される係数ＡＡ６（＝１／｛２×ｃｏｓ（６×π／１６）｝）との乗算が実行され、乗算結果ｙｑ６が５クロックサイクル目の終了時にレジスタＲ５に記憶される。
【００９４】
５クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ０に記憶されたデータｙｙ７と、レジスタＲ１に記憶されたデータｙｙ１との加算が実行され、加算結果ｙｐ４がレジスタＲ３に記憶される。
【００９５】
６クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ２に記憶されたデータｙｙ１と、レジスタＲ１に記憶されたデータｙｙ７との減算が実行され、減算結果ｙｐ５がレジスタＲ３に記憶される。
また、乗算器ＭＰＹにて、レジスタＲ３に記憶されたデータｙｐ４と、係数信号Ｓ１５に示される係数ＡＡ２（＝１／｛２×ｃｏｓ（２×π／１６）｝）との乗算が実行され、乗算結果ｙｑ４が７クロックサイクル目の終了時にレジスタＲ５に記憶される。
また、加減算器ＡＳ２にて、レジスタＲ４に記憶されたデータｙｐ７と、レジスタＲ５に記憶されたデータｙｑ６との減算が実行され、減算結果ｙｑ７がレジスタＲ５に記憶される。
【００９６】
７クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ０に記憶されたデータｙｙ６と、レジスタＲ１に記憶されたデータｙｙ２との加算が実行され、加算結果ｙｐ２がレジスタＲ３に記憶される。
【００９７】
８クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ２に記憶されたデータｙｙ２と、レジスタＲ１に記憶されたデータｙｙ６との減算が実行され、減算結果ｙｐ３がレジスタＲ３に記憶される。
また、乗算器ＭＰＹにて、レジスタＲ３に記憶されたデータｙｐ２と、係数信号Ｓ１５に示される係数ＡＡ４（＝１／｛２×ｃｏｓ（４×π／１６）｝）との乗算が実行され、乗算結果ｙｑ２が９クロックサイクル目の終了時にレジスタＲ５に記憶される。
また、加減算器ＡＳ２にて、レジスタＲ４に記憶されたデータｙｐ５と、レジスタＲ５に記憶されたデータｙｑ４との減算が実行され、減算結果ｙｑ５がレジスタＲ５に記憶される。
また、加算器ＡＤＤにて、レジスタＲ５に記憶されたデータｙｑ４と、レジスタＲ７に記憶されたデータｙｑ６との加算が実行され、加算結果ｙｒ４がレジスタＲ８に記憶される。
さらに、減算器ＳＵＢにて、レジスタＲ５に記憶されたデータｙｑ４と、レジスタＲ７に記憶されたデータｙｑ６との減算が実行され、減算結果ｙｒ６がレジスタＲ６に記憶される。
【００９８】
９クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ０に記憶されたデータｙｙ４と、レジスタＲ１に記憶されたデータｙｙ０との加算が実行され、加算結果ｙｐ０がレジスタＲ３に記憶される。
また、乗算器ＭＰＹにて、レジスタＲ８に記憶されたデータｙｒ４と、係数信号Ｓ１５に示される係数ＡＡ４（＝１／｛２×ｃｏｓ（４×π／１６）｝）との乗算が実行され、乗算結果ｙｓ４が１０クロックサイクル目の終了時にレジスタＲ１０に記憶される。
また、加算器ＡＤＤにて、レジスタＲ５に記憶されたデータｙｑ５と、レジスタＲ７に記憶されたデータｙｑ７との加算が実行され、加算結果ｙｒ５がレジスタＲ８に記憶される。
さらに、減算器ＳＵＢにて、レジスタＲ５に記憶されたデータｙｑ５と、レジスタＲ７に記憶されたデータｙｑ７との減算が実行され、減算結果ｙｒ７がレジスタＲ６に記憶される。
【００９９】
１０クロックサイクル目：加減算器ＡＳ１にて、レジスタＲ２に記憶されたデータｙｙ０と、レジスタＲ１に記憶されたデータｙｙ４との減算が実行され、減算結果ｙｐ１がレジスタＲ３に記憶される。
また、乗算器ＭＰＹにて、レジスタＲ８に記憶されたデータｙｒ５と、係数信号Ｓ１５に示される係数ＡＡ４（＝１／｛２×ｃｏｓ（４×π／１６）｝）との乗算が実行され、乗算結果ｙｓ４が１１クロックサイクル目の終了時にレジスタＲ１０に記憶される。
また、加減算器ＡＳ２にて、レジスタＲ４に記憶されたデータｙｐ３と、レジスタＲ５に記憶されたデータｙｑ２との減算が実行され、減算結果ｙｑ３がレジスタＲ５に記憶される。
また、加算器ＡＤＤにて、レジスタＲ３に記憶されたデータｙｐ０と、レジスタＲ５に記憶されたデータｙｑ２との加算が実行され、加算結果ｙｒ０がレジスタＲ４に記憶される。
さらに、減算器ＳＵＢにて、レジスタＲ３に記憶されたデータｙｐ０と、レジスタＲ５に記憶されたデータｙｑ２との減算が実行され、減算結果ｙｒ２がレジスタＲ６に記憶される。
【０１００】
１１クロックサイクル目：加減算器ＡＳ２にて、レジスタＲ７に記憶されたデータｙｒ７と、レジスタＲ１０に記憶されたデータｙｓ４との減算が実行され、減算結果ｙｓ７がレジスタＲ８に記憶される。
また、加算器ＡＤＤにて、レジスタＲ３に記憶されたデータｙｐ１と、レジスタＲ５に記憶されたデータｙｑ３との加算が実行され、加算結果ｙｒ１がレジスタＲ４に記憶される。
さらに、減算器ＳＵＢにて、レジスタＲ３に記憶されたデータｙｐ１と、レジスタＲ５に記憶されたデータｙｑ３との減算が実行され、減算結果ｙｒ３がレジスタＲ６に記憶される。
【０１０１】
１２クロックサイクル目：加減算器ＡＳ２にて、レジスタＲ９に記憶されたデータｙｒ６と、レジスタＲ１０に記憶されたデータｙｓ５との減算が実行され、減算結果ｙｓ６がレジスタＲ１０に記憶される。
また、加算器ＡＤＤにて、レジスタＲ５に記憶されたデータｙｒ０と、レジスタＲ１１に記憶されたデータｙｓ４との加算が実行され、加算結果ｘｘ０がレジスタＲ１２に記憶される。
さらに、減算器ＳＵＢにて、レジスタＲ５に記憶されたデータｙｒ０と、レジスタＲ１１に記憶されたデータｙｓ４との減算が実行され、減算結果ｙｘ７がレジスタＲ６に記憶される。
【０１０２】
１３クロックサイクル目：加算器ＡＤＤにて、レジスタＲ５に記憶されたデータｙｒ１と、レジスタＲ１１に記憶されたデータｙｓ５との加算が実行され、加算結果ｘｘ１がレジスタＲ１２に記憶される。
また、減算器ＳＵＢにて、レジスタＲ５に記憶されたデータｙｒ１と、レジスタＲ１１に記憶されたデータｙｓ５との減算が実行され、減算結果ｙｘ６がレジスタＲ６に記憶される。
【０１０３】
１４クロックサイクル目：加算器ＡＤＤにて、レジスタＲ８に記憶されたデータｙｒ３と、レジスタＲ１１に記憶されたデータｙｓ６との加算が実行され、加算結果ｘｘ２がレジスタＲ１２に記憶される。
また、減算器ＳＵＢにて、レジスタＲ８に記憶されたデータｙｒ３と、レジスタＲ１１に記憶されたデータｙｓ６との減算が実行され、減算結果ｘｘ５がレジスタＲ９に記憶される。
【０１０４】
１５クロックサイクル目：加算器ＡＤＤにて、レジスタＲ１０に記憶されたデータｙｒ２と、レジスタＲ１１に記憶されたデータｙｓ７との加算が実行され、加算結果ｘｘ３がレジスタＲ１２に記憶される。
また、減算器ＳＵＢにて、レジスタＲ１０に記憶されたデータｙｒ２と、レジスタＲ１１に記憶されたデータｙｓ７との減算が実行され、減算結果ｘｘ４がレジスタＲ１１に記憶される。
【０１０５】
このように計算回路３８では、図７および図８に示すように、１３〜２０クロックサイクル目にかけて、データｘｘ０、ｘｘ１、ｘｘ２、ｘｘ３、ｘｘ４、ｘｘ５、ｘｘ７およびｘｘ６が出力される。
【０１０６】
上述したように本実施例の２次元８×８ＩＤＣＴ装置３０では、乗算器３２、計算回路３４、並換回路３６および計算回路３８は、それぞれデータをシリアルに入力し、データをシリアルに出力する。
従って、２次元８×８ＩＤＣＴ装置３０では、従来の２次元８×８ＩＤＣＴ装置１３０のように合計２４個のレジスタを含むシリアル／パラレル変換器およびパラレル／シリアル変換器を必要とせず、Ｒ０〜Ｒ１２の１３個のレジスタを含む計算回路３４、３８を用いることで、入力データをシリアルデータのままで処理することができ、レジスタ数を大幅に低減できると共に回路規模をさらに縮小することが可能となる。
【０１０７】
第３実施例について説明する。
本実施例では、直列的に複数のレジスタが接続されて構成されるパイプラインレジスタを、データが順次、後段のレジスタに転送されていく過程において、所定の演算器による計算が実行されるディジタル信号処理装置の一般形であるディジタル信号処理装置５０について説明する。
【０１０８】
図９は、ディジタル信号処理装置５０の構成図である。
図９に示すように、ディジタル信号処理装置５０は、パイプラインレジスタ５２、バス６２および演算器５４、５６、５８、６０で構成される。
パイプラインレジスタ５２は、上述した図２に示すようなレジスタとセレクタと組み合わせて構成され、各レジスタとバス６２とが接続され、入力端子からシリアルに入力されたデータが順次、後段のレジスタに転送され、この転送されたデータは最終的に出力端子からシリアルに出力される。
【０１０９】
バス６２には、演算器５４〜６０が接続され、図示せぬ制御回路からの制御信号に基づいて、パイプラインレジスタ５２を構成する各レジスタからのデータがバス６２を介して、所定の演算器５４〜６０に供給され計算が実行される。
そして、演算器５４〜６０の計算結果は、図示せぬ制御回路からの制御信号に基づいて、パイプラインレジスタ５２の所定のレジスタに出力される。
ディジタル信号処理装置５０において、上述した２次元８×８ＤＣＴ装置１と同様に、入力端子からシリアルに入力されるデータを用いて所定の計算を実行し、その計算結果が出力端子からシリアルに出力されるように、図示せぬ制御回路から所定の制御信号がパイプラインレジスタ５２および演算器５４〜６０に出力される。
【０１１０】
本実施例のディジタル信号処理装置５０によれば、シリアルデータを、多数のレジスタを含むシリアル／パラレル変換器およびパラレル／シリアル変換器を用いることなく、そのまま処理し、処理されたデータをシリアルデータとして出力することができるため、レジスタ数を削減することができ、回路規模を縮小することが可能となる。
【０１１１】
【発明の効果】
本発明の２次元離散コサイン変換装置および２次元逆離散コサイン変換装置によれば、入力データおよび出力データとしてシリアルデータを用いる場合にも、多数のレジスタを必要とするシリアル／パラレル変換器およびパラレル／シリアル変換器を必要とせず、レジスタ数を削減することができる。
また、２次元離散コサイン変換装置および２次元逆離散コサイン変換装置によれば、レジスタ数を削減することができる結果、装置の規模を縮小することが可能となる。
【図面の簡単な説明】
【図１】  本発明の第１実施例に係わる２次元離散コサイン変換装置の構成図である。
【図２】  図１に示す計算回路の構成図である。
【図３】  図２に示す計算回路のタイミングチャートである。
【図４】  図２に示す計算回路の各構成要素における各クロックサイクル毎の計算内容を説明するための図である。
【図５】  図２に示す計算回路の除算器を説明するための図である。
【図６】  本発明の第２実施例に係わる２次元逆離散コサイン変換装置の構成図である。
【図７】  第２実施例における図２に示す計算回路のタイミングチャートである。
【図８】  第２実施例における図２に示す計算回路の各構成要素における各クロックサイクル毎の計算内容を説明するための図である。
【図９】  本発明の第３実施例に係わるディジタル信号処理装置の構成図である。
【図１０】  従来の２次元８×８ＤＣＴ装置の構成図である。
【図１１】  図１０に示す計算回路の構成図である。
【図１２】  図１０に示すシリアル／パラレル変換器の構成図である。
【図１３】  図１０に示すパラレル／シリアル変換器の構成図である。
【図１４】  従来の２次元８×８ＩＤＣＴ装置の構成図である。
【図１５】  図１４に示す計算回路の構成図である。
【符号の説明】
１、１００・・・２次元８×８ＤＣＴ装置
２、６、３４、３８、１２２、１２４、１３３、１３５・・・計算回路
４、６２・・・バス
５、３６、１２３、１３４・・・並換回路
６・・・制御回路
８、３２、１２６、１３１・・・乗算器
５２・・・パイプラインレジスタ
５４、５６、５８、６０・・・演算器
１２１・・・シリアル／パラレル変換器
１２５・・・パラレル／シリアル変換器
Ｒ０〜Ｒ１１、Ｒｅｇ０〜Ｒｅｇ１５・・・レジスタ
Ｈｏｌｄ０〜Ｈｏｌｄ７・・・ホードル回路
Ｓ１〜Ｓ１２、Ｓｅｌ１０〜Ｓｅｌ１７・・・セレクタ
ＡＳ１、ＡＳ２・・・加減算器
ＡＤＤ・・・加算器
ＳＵＢ・・・減算器
ＭＰＹ・・・乗算器
【図１】
0003697717.tif 000033
【図２】
0003697717.tif 000034
【図３】
0003697717.tif 000035
【図４】
0003697717.tif 000036
【図５】
0003697717.tif 000037
【図６】
0003697717.tif 000038
【図７】
0003697717.tif 000039
【図８】
0003697717.tif 000040
【図９】
0003697717.tif 000041
【図１０】
0003697717.tif 000042
【図１１】
0003697717.tif 000043
【図１２】
0003697717.tif 000044
【図１３】
0003697717.tif 000045
【図１４】
0003697717.tif 000046
【図１５】
0003697717.tif 000047