JP2005309474A - 離散コサイン変換(dct)を実行するために用いるdctプロセッサ - Google Patents
離散コサイン変換(dct)を実行するために用いるdctプロセッサ Download PDFInfo
- Publication number
- JP2005309474A JP2005309474A JP2002189382A JP2002189382A JP2005309474A JP 2005309474 A JP2005309474 A JP 2005309474A JP 2002189382 A JP2002189382 A JP 2002189382A JP 2002189382 A JP2002189382 A JP 2002189382A JP 2005309474 A JP2005309474 A JP 2005309474A
- Authority
- JP
- Japan
- Prior art keywords
- data
- storage
- output
- dct
- processing device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
Abstract
【課題】従来開発された所定のDCTアルゴリズムをベースとして、特殊構造の処理メモリを用いることによってリソースシェアリングを促進させ、これにより、必要とされる部材数の減少、ファンクションブロックエリアの減少、消費電力の減少、更には、処理スピードの高速化、あるいは、出力レイテンシイの減少を図る。
【解決手段】離散コサイン変換を実行するために用いるDCTプロセッサであって、データにパームテーションを行う記憶・処理手段と、データを所定のDCTアルゴリズムに従って計算し出力する計算手段と、を備え、記憶・処理手段と計算手段との間でデータを所定回数ループさせ、計算手段の出力部から読み出されるデータに基づいて離散コサイン変換の結果を得る。
【選択図】 図1
【解決手段】離散コサイン変換を実行するために用いるDCTプロセッサであって、データにパームテーションを行う記憶・処理手段と、データを所定のDCTアルゴリズムに従って計算し出力する計算手段と、を備え、記憶・処理手段と計算手段との間でデータを所定回数ループさせ、計算手段の出力部から読み出されるデータに基づいて離散コサイン変換の結果を得る。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、離散コサイン変換(以下、「DCT」)を実行するために用いるDCTプロセッサに関する。
【0002】
【従来の技術】
離散コサイン変換は、時間軸に沿った値として表されたデータを、周波数成分に分割されたデータに変換するためのものである。離散コサイン変換を実現するDCTアルゴリズムは、MPEGやMP3に代表される画像処理や周波数のサブバンドフィルタ等幅広い用途で利用されている。
【0003】
DCTアルゴリズムを実行するDCTプロセッサには、一般に、多数の加算・減算器や乗算器、膨大な数のクロスバースイッチ等が必要となる。必要とされる部材の数は、サンプリングポイントが増えるに従って急激に増加する。その主な原因は、データにパームテーション(置き換え)を行うことの複雑さにある。
【0004】
明らかなように、部材の増加は、DCTプロセッサのファンクションブロックエリアを増大させるとともに、周辺ロジックの配線による消費電力を増大させ、また、周辺ロジックの最大配線長を増大させ、更には、プロセッサの処理スピードを低下させ出力レイテンシイの増加を招く。
【0005】
例えば、従来のDCTアルゴリズムの代表的なものとして、LEEのアルゴリズムと呼ばれるものがある。このLEEのアルゴリズムを実行するDCTプロセッサを用いて、32個のサンプリングポイントで離散コサイン変換を実行するには、少なくとも273個の加算・減算器と80個の乗算器と、更に膨大な数のクロスバースイッチが必要となる。実際上、このような膨大な数のリソース全てをLSIに直接に配置することは非常に困難であり、また、そのような膨大な数の部材によって引き起こされる出力レイテンシイは重大な問題となる。
【0006】
今日知られているDCTプロセッサの中で最も優れているのは、このLEEのアルゴリズムを利用してLippen P.E.R等によって開発された「マルチ・フラクション・プロセッシング・ユニット(Multi Fraction Processing Unit)」と考えられている。しかしながら、このプロセッサでさえ、パームテーションの複雑さ故に多数の部材が必要とされ、未だに上記の問題を解決したものとは言えない。
【0007】
【発明が解決しようとする課題】
本発明は、上述した従来の問題点を解決しようとするものであり、従来開発された所定のDCTアルゴリズムをベースとし、且つ、このDCTアルゴリズムにおけるデータフローの規則性に着目して開発された特殊構造の処理メモリを用いてリソースシェアリングを促進させ、これによって、必要とされる部材数の減少、ファンクションブロックエリアの減少、消費電力の減少、更には、処理スピードの高速化、あるいは、出力レイテンシイの減少を図るものである。
【0008】
【課題を解決するための手段】
上記の目的を達成するために、本発明は、離散コサイン変換を実行するために用いるDCTプロセッサにおいて、データにパームテーションを行う記憶・処理装置と、所定のDCTアルゴリズムに従って計算を行う計算装置と、を備え、前記記憶・処理装置と前記計算装置との間でデータを所定回数ループさせ、前記計算装置から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴としている。
【0009】
また、本発明は、離散コサイン変換を実行するために用いるDCTプロセッサにおいて、複数の入力部と複数の出力部とを有し、前記複数の入力部を通じて入力される複数のデータにパームテーションを行った後に前記複数の出力部から出力する、前記記憶・処理装置と;前記記憶・処理装置の出力部に接続された複数の入力部と複数の出力部とを有し、前記複数の入力部から入力されたデータを所定のDCTアルゴリズムに従って計算し前記複数の出力部から出力する計算装置と;前記計算装置の出力部に接続された複数の入力部と前記記憶・処理装置の入力部に接続された複数の出力部とを有し、前記計算装置の出力部から出力された複数のデータを記憶し前記複数の出力部から出力する記憶装置と;前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と;を備え、前記記憶装置の出力部から出力された複数のデータを、前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間を所定回数ループさせ、前記記憶装置の出力部から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴としている。
【0010】
更に、本発明は、32個のサンプリングポイントでサンプリングすることによって得られた32個のデータに対して離散コサイン変換を行う32ポイントDCTプロセッサにおいて;8個の入力部と8個の出力部とを有し、一度に8個ずつ計4回、計32個のデータを入力し且つ出力することができる、記憶・処理装置であって、前記8個の入力部を通じて一度に8個ずつ計4回、順次に所定の記憶位置に書き込まれた計32個のデータを前記8個の出力部に所定の順番で出力する、前記記憶・処理装置と;各々が、前記記憶・処理装置の8個の出力部のうちの4個の出力部にそれぞれ接続された4個の入力部と4個の出力部とを有し、前記8個の入力部から入力されたデータを一度に4個ずつCGA−DCTアルゴリズムに従って計算し、前記4個の出力部からそれぞれ出力する、2個の計算装置と;前記2個の計算装置の計8個の出力部にそれぞれ接続された8個の入力部と前記記憶・処理装置の計8個の入力部にそれぞれ接続された8個の出力部とを有し、一度に8個ずつ計4回、計32個のデータを先入れ先出し方式で書き込み且つ読み出すことができる、記憶装置であって、前記計算装置の各出力部から出力された計8個のデータを計4回、計32個のデータを記憶する、前記記憶装置と;前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と;を備えることを特徴としている。
【0011】
上記のDCTプロセッサには、更に、前記DCTプロセッサの外部から内部にデータを入力する入力手段が、前記記憶・処理装置の直前に、あるいは、前記記憶・処理装置と前記計算装置の間に、あるいは、前記計算装置と前記記憶装置の間に設けられていてもよい。
【0012】
上記のDCTプロセッサにおいて、前記記憶・処理装置は、前記データを前記所定の記憶位置に書き込む際、前記入力されるデータと前記出力されるデータとの対応付けを変更しない第1の動作モードと、前記入力されるデータと前記出力されるデータとの対応付けを変更する第2の動作モードのいずれかで動作するものであって、前記入力手段からのデータは前記第1の動作モードで処理されるものであってもよい。
【0013】
上記のDCTプロセッサにおいて、前記第1の動作モードで動作する記憶・処理装置で処理された計32個のデータを、前記計算装置、前記記憶装置で順に処理し、その後、前記記憶装置の出力部から読み出された計32個のデータを、前記並び替え手段で処理した後に、前記第2の動作モードで動作する前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間をループさせ、4回目のループ時に前記記憶装置の出力部から読み出されたデータに基づいて、前記データを離散コサイン変換したときの結果を求めるようにしてもよい。
【0014】
上記のDCTプロセッサにおいて、前記記憶・処理装置は、計32個の記憶位置を有しており、前記32個のデータは、これら32個のいずれかの記憶位置に1つずつ書き込み且つ読み出されるものであってもよい。
【0015】
上記のDCTプロセッサにおいて、前記32個の記憶位置の各々に書き込みラインと読み出しラインが設けられており、これら書き込みラインと読み出しラインは互いに垂直に配線され、データの書き込み及び読み出し時に共用されなくともよい。
【0016】
上記のDCTプロセッサにおいて、前記所定の並び替えは、前記記憶装置と前記記憶・処理装置との間の伝送線をクロスさせることによって行ってもよい。
【0017】
上記のDCTプロセッサにおいて、計32個のデータを前記8個の出力部に所定の順番で出力するために並び替え装置を用いてもよい。
【0018】
上記のDCTプロセッサにおいて、前記記憶・処理装置は8R/Wメモリ回路であり、前記計算装置はDCT回路であり、前記記憶装置はFIFOであってもよい。
【0019】
上記のDCTプロセッサにおいて、前記並び替え手段は記憶・処理装置に設けられていてもよい。
【0020】
また、本発明は、離散コサイン変換を実行するために用いるDCTプロセッサで使用する記憶・処理装置であって、所定のDCTアルゴリズムに従って計算を行う計算装置との間でデータを所定回数ループさせ、前記計算装置から読み出されたデータに基づいて離散コサイン変換の結果を求めるようにデータにパームテーションを行うことを特徴としている。
【0021】
更に、本発明は、離散コサイン変換を実行するために用いるDCTプロセッサで使用する記憶・処理装置であって、該記憶・処理装置は、複数の入力部と複数の出力部とを有し、前記複数の入力部を通じて入力される複数のデータにパームテーションを行った後に前記複数の出力部から出力するものであり;前記DCTプロセッサは、更に、前記記憶・処理装置の出力部に接続された複数の入力部と複数の出力部とを有し、前記複数の入力部から入力されたデータを所定のDCTアルゴリズムに従って計算し前記複数の出力部から出力する計算装置と;前記計算装置の出力部に接続された複数の入力部と前記記憶・処理装置の入力部に接続された複数の出力部とを有し、前記計算装置の出力部から出力された複数のデータを記憶し前記複数の出力部から出力する記憶装置と;前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と;を備え、前記記憶装置の出力部から出力された複数のデータを、前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間を所定回数ループさせ、前記記憶装置の出力部から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴としている。
【0022】
更に、本発明は、32個のサンプリングポイントでサンプリングすることによって得られた32個のデータに対して離散コサイン変換を行う32ポイントDCTプロセッサで使用する記憶・処理装置であって、該記憶・処理装置は、8個の入力部と8個の出力部とを有し、一度に8個ずつ計4回、計32個のデータを入力し且つ出力することができ、前記8個の入力部を通じて一度に8個ずつ計4回、順次に所定の記憶位置に書き込まれた計32個のデータを前記8個の出力部に所定の順番で出力するものであり;前記DCTプロセッサは、更に、各々が、前記記憶・処理装置の8個の出力部のうちの4個の出力部にそれぞれ接続された4個の入力部と4個の出力部とを有し、前記8個の入力部から入力されたデータを一度に4個ずつCGA−DCTアルゴリズムに従って計算し、前記4個の出力部からそれぞれ出力する、2個の計算装置と;前記2個の計算装置の計8個の出力部にそれぞれ接続された8個の入力部と前記記憶・処理装置の計8個の入力部にそれぞれ接続された8個の出力部とを有し、一度に8個ずつ計4回、計32個のデータを先入れ先出し方式で書き込み且つ読み出すことができる、記憶装置であって、前記計算装置の各出力部から出力された計8個のデータを計4回、計32個のデータを記憶する、前記記憶装置と;前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と;を備えることを特徴としている。
【0023】
【発明の実施の形態】
A.第1の実施形態
1.DCTプロセッサの構成
1−1.全体構成
図1に、本発明の第1の実施形態によるDCTプロセッサ1のブロック図を示す。
【0024】
このDCTプロセッサ1は、特に、32個のサンプリングポイントでサンプリングすることによって得られた32個のサンプリングデータに対して離散コサイン変換を行うことができる、32ポイントDCTプロセッサ(以下、「DCTプロセッサ」)1である。尚、サンプリングデータを何ビットにするかは設計者が自由に決定できる。例えば、1ワード(16ビット)とする等の如くである。
【0025】
DCTプロセッサ1は、所定のDCTアルゴリズムに従って離散コサイン変換に必要な計算を行うことができる並列に並んだ2個の回路(以下、それぞれ「DCT回路」)3、3’と、このDCT回路で使用されるアルゴリズムにおけるデータフローの規則性に着目して開発された特殊構造の8読み出し/書き込みポートSRAMメモリ回路(以下、「8R/Wメモリ回路」)5(請求項中の「記憶・処理装置」に対応)と、8ワード×4デプス(depth)FIFO(先入れ先出し)バッファ(以下、「FIFO」)(請求項中の「記憶装置」に対応)7から成る。
【0026】
尚、DCT回路3とDCT回路3’は、全く同じものであると考えて良い。これらのDCT回路3、3’で使用されているアルゴリズムは、ここでは特に1999年と2000年にJakko AltolaやDavid Akopian等によって発表された「DCTのためのコンスタント・ジオメトリ・アルゴリズム(Constant Geometry Algorithm for DCT (CGA-DCT))[4]」(以下、「CGA−DCTアルゴリズム」)とする。
【0027】
図1から明らかなように、これら8R/Wメモリ回路5、DCT回路3、3’、及びFIFOは、これらの順に互いにループ状に接続されている。更に言えば、8R/Wメモリ回路5の8個の出力部53は、計8個のDCT回路3、3’の入力部31に、また、計8個のDCT回路3、3’の出力部33は、FIFO7の8個の入力部71に、更に、FIFO7の8個の出力部73は、8R/Wメモリ回路5の8個の入力部に、それぞれ接続されている。この結果、データをこれらの間でこれらの順に所望の回数だけループさせることができる、換言すれば、データに同じ処理を所望の回数だけ繰り返し行うことができる。
【0028】
尚、図中の矢印はデータが流れる方向を示すものである。図から明らかなように、特に、FIFO7から8R/Wメモリ回路5に伝達されるとき、データは、クロス部(請求項中の「並び替え手段」に対応)4、4’によって、更に言えば、それらの間に設けた伝送線を2ヶ所でクロスさせることによって、一部のデータについて並び替え(入れ換え)が行われることになっている。この並び替えによって、パームテーションが可能になるのであるが、これについては後述する。
【0029】
1−2.DCT回路
<概要>
DCT回路3、3’は各々、6個の加算・減算器35a〜fと、2個の乗算器36a、36b、2個のセレクタ(sel)37a、37b、2個のマスク(msk)38a、38b、及び1個のROM39から成る。入力部31と出力部33は各DCT回路3、3’にそれぞれ4個ずつ設けられており、従って、各DCT回路3、3’によって、データを一度に4個ずつ入力し且つ出力することができる。各DCT回路3、3’の入力部31から入力される4個のデータは、CGA−DCTアルゴリズムに従って計算され、その後、出力部33から4個のデータとして出力されることになる。
【0030】
DCT回路3、3’の構成は、Jarmo Astola、David Akopian等による論文「Architecture-oriented regular algorithms for discrete sine and cosince transforms」IEEE Trans.Signal Processing Vol.47. pp1109〜1124、1999年4月に記載されているものと同じである。以下にその構成を概説するが、詳細については上記論文を参照のこと。
【0031】
<各機能素子の構成>
図1に示した各DCT回路3、3’は、図2のa)〜c)にそれぞれ示したモード(mode)0〜2の機能素子の各機能を1個の回路で実現可能としたものと考えて良い。そこで、図1のDCT回路を説明する前に、先ず、図2に示した機能素子の各機能を説明する。
【0032】
図2から明らかなように、モード0の機能素子は、4個の加算・減算器35a〜eと2個の乗算器36a、36bから成る。モード1の機能素子は、これらの部材に加えて更に、1個の加算・減算器35fを有し、モード2の機能素子は更に、1個の加算・減算器35fをも有する。これより明らかなように、モード2の機能素子に設けられた加算・減算器や乗算器の数は、図1のDCT回路3、3’のそれと同じであるが、モード2の機能素子には、図1のDCT回路3、3’のように、セレクタ37a、37bや、マスク38a、38b、ROM39は設けられていない。これらの部材は、主として、モードを選択するためだけに使用される部材だからである。
【0033】
尚、モード0〜モード2の各機能素子に設けられた加算・減算器のうち、負の記号(−)が付されているもの35b、35d、35fは減算器として機能し、何も記号が付されていないもの35a、35c、35eは加算器として機能する。また、各機能素子の各乗算器の上部に記載された記号d(n)あるいは2d(n)(2×d(n)の意味である)は、nの値によって定まる、乗算で使用される係数を示すものである。具体的には、以下の3種類の式から成る式(以下、「式1」)によって計算される係数である。
▲1▼ d(1)=√(0.5)
▲2▼ d(2i)=√(0.5(1+d(i))
▲3▼ d(2i+1)=√(0.5(1−d(i)))
(但し、ここでi=1/2、2/2、3/2、…n/2(nは整数))
【0034】
上の式1)において、例えばn=2であれば、▲2▼の式を用いて、乗算で使用される係数はd(2)=√(0.5(1+d(1))=√(0.5(1+√(0.5))である。尚、nの値は予め決定されているものであるが、これについては後述する。
【0035】
<各機能素子の動作>
図2のa)に示したモード0の機能素子の動作は以下の通りである。
機能素子の4個の各入力部31にそれぞれ、データA〜Dの値が入力されたとすると、位置アにおいては、データAと、クロス部40aとクロス部40bを介して伝達されたデータCとが、加算・減算器35aによって加算されるためA+Cが得られ、一方、位置イにおいては、クロス部40aを介して伝達されたデータCと、クロス部40bを介して伝達されたデータAとが、加算・減算器35bによって減算されるためA−Cが得られる。
【0036】
同様に、位置ウにおいては、クロス部40aを介して伝達されたデータBとクロス部40cを介して伝達されたデータDとが、加算・減算器35cによって加算されるためB+Dが得られ、一方、位置エにおいては、クロス部40aとクロス部40cを介して伝達されたデータBと、Dとが、加算・減算器35dによって減算されるため、B−Dが得られる。
【0037】
更に、位置イにおいて得られたA−Cは、乗算器36aによってnの値に応じた係数d(n)が掛算された後に、クロス部40dによって出力位置が入れ換えられ、また、位置エにおいて得られたB−Dは、乗算器36bによって係数d(n)が掛算される。
【0038】
以上より、モード0の機能素子によれば、4個の各出力A’〜D’においてそれぞれ、A+C、B+D、(A−C)×d(n)、(B−D)×d(n)という結果が得られる。同様に、モード1の機能素子によれば、各出力A''〜D''においてA+C、B+D、(A−C)×d(n)、(B−D)×2d(n)−(B+D)という結果が、モード2の機能素子によれば、各出力A'''〜D'''においてA+C、B+D、(A−C)×2d(n)−(A+C)、(B−D)×2d(n)−(B+D)という結果が得られる。
【0039】
<DCT回路の構成>
DCT回路3、3’は、上に説明したモード1〜3の機能素子を、2個のセレクタ37a、37b、2個のマスク38a、38b、及び1個のROM39を利用することによって、1個の回路で実現可能としたものである。
【0040】
ここで、セレクタ37a、37bはそれぞれ、それらに接続された2つの加算・減算器35b、35dのいずれかを選択するためのものである。また、マスク38aは、それに接続された加算・減算器35eに、マスク38bは、それに接続された加算・減算器35fに、信号を送ったり、信号を送らなかったりするためのものである。
【0041】
ROM39は、セレクタ37a、37bやマスク38a、38bを制御するために必要な情報を記憶させるためのものである。これらの情報は、2つのテーブル、即ち、係数テーブル41aと指令テーブル41bに記憶されている。ここで、係数テーブル41aは、上記の式1)の計算式を記憶するものである。各乗算器は、使用すべきnの値を得た後に、この係数テーブル41aを利用して係数を計算する。一方、指令テーブル41bは、選択すべきモードに応じて、選択すべきセレクタ、あるいは、マスクを記憶するものである。DCT回路3、3’は、この指令テーブル41bの情報に基づいて、各モードに応じて、セレクタ37a、37bのいずれを選択すべきか、あるいは、マスク38a、38bのいずれを選択すべきかを知る。
【0042】
指令テーブル41bについて更に説明する。例えば、モード1の機能素子として機能させる場合、DCT回路3、3’の処理部(図示されていない)は、指令テーブル41bの情報に基づいて、セレクタ37aは、加算・減算器35b、35dのうちの加算・減算器35bを選択するように、一方、セレクタ37bは、加算・減算器35b、35dのうちの加算・減算器35dを選択するように、それらのセレクタ37a、37bに指令を出す。また、DCT回路3、3’の処理部(図示されていない)は、マスク38aは、それに接続された加算・減算器35eに対して加算・減算器35aからの信号を送らないように、一方、マスク38bは、それに接続された加算・減算器35fに対して加算・減算器35cからの信号を送らないように、それらに指令を出す。
【0043】
同様に、モード2の機能素子として機能させる場合、DCT回路3、3’は、セレクタ37a、セレクタ37b、及びマスク38aについては、モード1の場合と同様にし、マスク38bについては、それに接続された加算・減算器35fに対して加算・減算器35cからの信号を送るように、それらに指令を出す。
【0044】
同様に、モード3の機能素子として機能させる場合、DCT回路3、3’は、セレクタ37aは、加算・減算器35b、35dのうちの加算・減算器35dを選択するように、一方、セレクタ37bは、加算・減算器35b、35dのうちの加算・減算器35bを選択するように、それらに指令を出す。また、DCT回路3、3’は、マスク38aは、それに接続された加算・減算器35eに対して加算・減算器35aからの信号を送るように、一方、マスク38bは、それに接続された加算・減算器35fに対して加算・減算器35cからの信号を送るように、それらに指令を出す。
【0045】
以上の働きにより、図1のDCT回路3、3’は、図2のモード1〜3の機能素子の各機能を全て実現することができる。
【0046】
1−3.FIFOの構成
FIFO7は、一般に用いられているFIFOと同様のものであり、先入れ先出し方式でデータを書き込み且つ読み出すことができる記憶装置である。これらのFIFOのうち、ここでは特に、8個×4デプスのFIFO7を使用する。つまり、このFIFO7によって一度に書き込み且つ読み出すことができるデータは8個であり、そのような8個のデータを4回連続して計32個書き込むことができ、また、4回連続して計32個読み出すことができる。明らかなように、このFIFO7に一度に記憶させることができるデータは計32個である。
【0047】
FIFO7を設けた目的は、データを一時的に記憶させるため、換言すれば、データを遅延させて比較的動作が遅い8R/Wメモリ回路5による処理を可能とするためである。したがって、技術の進歩によって8R/Wメモリ回路5の動作が高速化されれば、このFIFO7は必ずしも必要ではないと考えられる。
【0048】
1−4.8R/Wメモリ回路の構成
<概要>
8R/Wメモリ回路5は、本発明のDCTプロセッサ1のために特別に開発されたメモリである。ただし、8R/Wメモリ回路5は、単なる記憶装置として機能するものではなく、離散コサイン変換を実行するために必要な処理、即ち、パームテーションを行うことを主たる目的とするものである。
【0049】
8R/Wメモリ回路の構成を簡単に言えば、従来使用されていた様々な部材(リソース)を共有することによって、その部材数を減少させたもの、換言すれば、リソースシェアリングを促進させたもの、ということができる。本発明では、この8R/Wメモリ回路を用いることによって、プロセッサに必要とされる部材、例えば、加算・減算器や乗算器、クロスバースイッチの数を大幅に減少させている。
【0050】
この8R/Wメモリ回路5によって一度に入力し且つ出力することができるデータは、FIFO7と同様、8個であり、そのような8個のデータを4回連続して計32個書き込む(入力する)ことができ、また、4回連続して計32個出力することができる。更に、この8R/Wメモリ回路5(のメモリ)に一度に記憶させることができるデータは計32個である。
【0051】
<詳細>
図3を参照して、8R/Wメモリ回路5の構成をより詳細に説明する。この図は、8R/Wメモリ回路5のブロック図を示したものである。
【0052】
本発明の8R/Wメモリ回路5は、32個のメモリブロック0〜31(請求項中の「記憶位置」に対応)と、これらの各メモリブロック0〜31にデータを書き込むための8本の書き込みライン52a〜h、これらの各メモリブロック0〜31からデータを読み出すため8本の読み出しライン53a〜h、各メモリブロック0〜31にデータを伝送するための8本の伝送ライン54a〜h、更に4個のクロスバースイッチ58a〜d(請求項中の「並び替え装置」に対応)を備える。書き込みライン52a〜hと読み出しライン53a〜hはそれぞれ、書き込みイネイブル部と読み出しイネイブル部に接続されている。
【0053】
参考のため、図4に8R/Wメモリ回路5の実際の回路図も示している。但し、この図にクロスバースイッチ58a〜dは示されていない。この図において、WL0〜7は書き込みライン52a〜hに、RL0〜7は読み出しライン53a〜hに、(0)〜(7)は伝送ライン54a〜hに、それぞれ対応する。
【0054】
<メモリブロック>
各メモリブロック0〜31には、1個のデータを書き込み且つ読み出すことができる。各メモリブロック0〜31は、0〜31の数字で区別される。これらの数字は、データが記憶される記憶位置を示すものということもできる。
【0055】
これらのメモリブロック0〜31は、4個のブロックグループ59a〜dに分割されている。計32個のメモリブロックが存在するから、各ブロックグループ59a〜dに8個(32÷4=8)のメモリブロックが含まれることになる。例えば、ブロックグループ59aには、メモリブロック0、16、6、22、8、24、14、30が含まれる。
【0056】
<伝送ライン・書き込みライン・読み出しライン>
伝送ライン54a〜hは、各ブロックグループ59a〜dに対して8本ずつ、各メモリブロック0〜31に1本ずつ割り当てられるようにして、一定の方向で(図面縦方向で)設けられている。FIFO7等から出力されたデータは、これらの伝送ライン54a〜hを通じて送られてくる。
【0057】
書き込みライン52は、各ブロックグループ59に対して2本ずつ計8本、各メモリブロック0〜31に1本ずつ割り当てられるようにして設けられている。各書き込みライン52は、伝送ライン54a〜hとの直交方向において、各ブロックグループ59内の8個のメモリブロックのうちの4個のメモリブロックと交差する。これらの書き込みライン52は、書き込みイネイブル部60の働きにより、一度に2本ずつイネイブルされ得る。データ伝送ライン54に信号が存在し、且つ、書き込みライン52がイネイブルされたときに、それらのラインの交差位置に存在するいずれかのメモリブロックにデータが書き込まれる。各書込みラインは4個のメモリブロックと交差し、また、一度に2本の書き込みラインがイネイブルされることから、1回の書き込みで計8個のデータがいずれかのメモリブロックに書き込まれることになる。
【0058】
読み出しライン53a〜hは、各ブロックグループ59a〜dに対して8本ずつ、データ伝送ライン54a〜hと同方向に設けられている。各読み出しライン53a〜hは、8個のメモリブロック(1個のブロックグループ59a〜dに対して2個)と交差するが、1回の読み出し動作の際に、実際に作用するのは各ブロックグループ59a〜dにおいて1個のみ、したがって、計4個のメモリブロックにおいてだけである。これらの読み出しライン53a〜hは、読み出しイネイブル部61の働きにより、書き込みライン52と同様に、一度に2本ずつイネイブルされる。各読み出しライン53が1回の読み出し動作の際に実際に作用するのは4個のメモリブロックであり、また、一度に2本の読出ラインがイネイブルされることから、1回の読み出しで計8個のデータがいずれかのメモリブロックから読み出されることになる。
【0059】
以上の説明からも明らかなように、本発明の8R/Wメモリ回路5では、書き込み時と読み出し時とでラインが共用されておらず、また、書き込みライン52と読み出しライン53が互いに垂直方向に配線されている。このような構成にすることによって、離散コサイン変換を行うために多数必要とされていたクロスバースイッチ58a〜dをたった4個とすることが可能となっている。
【0060】
<クロスバースイッチ>
クロスバースイッチ58a〜dは、各メモリブロック0〜31から読み出されたデータを8R/Wメモリ回路5から出力する前に適当に並び替えるために用いる。例えば、読み出しライン53aと読み出しライン53eをイネイブルすることによって読み出された8個のデータ、換言すれば、第1フェーズで読み出された8個のデータ[0]、[15]、[14]、[1]、[2]、[13]、[12、[3]は、クロスバースイッチ58a〜dによって、[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]の順に並び替えられる。尚、上の記載および明細書及び図面の全体を通じて、[n](nは0から31までの整数)は、メモリブロック0〜31のような記憶手段のnというメモリ位置に入っているデータの内容(値)を表す。
【0061】
<8R/Wメモリ回路のメモリブロックからの読み出し、及び8R/Wメモリ回路からの出力>
8R/Wメモリ回路のメモリブロックからの読み出し及び8R/Wメモリ回路からの出力は次の手順による。
【0062】
第1フェーズ、つまり最初の読み出しでは、読み出しライン53bと読み出しライン53eをイネイブルすることによってそれぞれ、[0]、[1]、[2]、[3]と、[15]、[14]、[13]、[12]が読み出され、これらのデータはクロスバースイッチ58によって[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]の順に並び替えられた後に、8R/Wメモリ回路5から出力される。
【0063】
第2フェーズ、つまり2回目の読み出しでは、読み出しライン53aと読み出しライン53fをイネイブルすることによってそれぞれ、[6]、[7]、[4]、[5]と、[9]、[8]、[11]、[10]が読み出され、これらのデータはクロスバースイッチ58によって[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]の順に並び替えられた後に、8R/Wメモリ回路5から出力される。
【0064】
第3フェーズ、つまり3回目の読み出しでは、読み出しライン53dと読み出しラインgをイネイブルすることによってそれぞれ、[16]、[17]、[18]、[19]と、[31]、[30]、[29]、[28]が読み出され、これらのデータはクロスバースイッチ58によって[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]の順に並び替えられた後に、8R/Wメモリ回路5から出力される。
【0065】
第4フェーズ、つまり4回目の読み出しでは、読み出しライン53cと読み出しライン53hをイネイブルすることによってそれぞれ、[22]、[23]、[20]、[21]と、[25]、[24]、[27]、[26]が読み出され、これらのデータはクロスバースイッチ58によって[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]の順に並び替えられた後に、8R/Wメモリ回路5から出力される。
【0066】
以上より明らかなように、8R/Wメモリ回路5にデータを一旦記憶させることにより、それらのデータを所定の順番で出力させることができる。更に言えば、8R/Wメモリ回路5から出力されるデータの順番を、8R/Wメモリ回路5のいずれのメモリブロック0〜31にデータを記憶させるかという事実に基づいて制御できるということである。
【0067】
<8R/Wメモリ回路のメモリブロックへのデータの書き込み、及びパームテーション>
8R/Wメモリ回路5のメモリブロック0〜31へのデータの書き込みは、DCTプロセッサの外部の、例えばCPU等(図示されていない)から行われる場合と、DCTプロセッサの内部でループ状に、FIFO7等を介して行われる場合の2通りがある。
【0068】
前者の書き込みを行うために、図1に示した8本の信号線24に加えて、更に、DCTプロセッサの外部からDCTプロセッサの内部にデータを入力するための手段、例えば、DCTプロセッサの外部からのデータを8R/Wメモリ回路5の入力部51に伝送するための信号線(図示されていない)が存在すると考えてよい。これらの信号線は、クロス部4、4’(及びFIFO5)と8R/Wメモリ回路5との間で、8R/Wメモリ回路5の入力部51に電気的に接続されていれば十分であり、8R/Wメモリ回路の入力部51に直接的に接続されてもよいし、あるいは、信号線24の途中、例えば、8R/Wメモリ回路の入力部51の直前(一点鎖線Aと信号線24との交差位置)に設けたセレクタのような選択手段を介してそれらに間接的に接続されていてもよい。選択手段には、外部データのための信号線とループ状の信号線24の双方が接続され、いずれかの一方の信号線だけが選択されるようになっている。選択手段を用いた場合には、外部データのための信号線と信号線24の競合を効果的に防止することができる。
【0069】
8R/Wメモリ回路の動作は、DCTプロセッサの外部からのデータ、つまり入力手段からのデータを処理する場合と、DCTプロセッサの内部からのデータを処理する場合とで異なる。便宜上、本明細書では、前者の場合の8R/Wメモリ回路の動作を「第1の動作モード」(請求項中の「第1の動作モード」に対応)、後者の場合の8R/Wメモリ回路の動作を「第2の動作モード」(請求項中の「第2の動作モード」に対応)と呼んで区別する。ここで、第1の動作モードでは、DCTプロセッサ以外(FIFO以外)からのデータを8R/Wメモリ回路に書き込んだ後にそれらのデータを出力し、第2の動作モードでは、DCTプロセッサ(FIFO)からのデータを8R/Wメモリ回路に書き込んだ後にそれらのデータを出力することになる。尚、上述した選択手段が使用されている場合には、第1の動作モードでは、外部データのための信号線を選択してCPU等からのデータを8R/Wメモリ回路に伝送するように、一方、第2の動作モードでは、信号線24を選択してFIFOからのデータを8R/Wメモリ回路に伝送するように、選択手段は適宜に切り換えられることになる。
【0070】
第1の動作モードの場合、データは入力手段(図示されていない)からのものであり、したがって、クロス部4、4’(図1参照)を介さずに、また、データの対応付けを変更しないで8R/Wメモリ回路に書き込まれる。一方、第2の動作モードの場合、データはFIFO5からのものであり、クロス部4、4’で並び替えが行われた後に、データの対応付けを変更するようにして8R/Wメモリに書き込まれる。この結果、第2の動作モードの場合においては、8R/Wメモリ回路から出力されるデータにパームテーションが行われることになる。
【0071】
更に説明すると、第1の動作モードの場合、データの書き込み位置は、各メモリブロック0〜31に付した0〜31の番号に従う。つまり、データ[0]はメモリブロック0に、[1]はメモリブロック1に、[2]はメモリブロック2に…といった具合に対応させる。この結果、第1の動作モードの場合、第1フェーズで読み出されるデータは、書き込みを行う前の[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]にそれぞれ対応するデータ[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]となり、第2フェーズで読み出されるデータは、書き込みを行う前の[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]にそれぞれ対応する[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]となり、また、第3フェーズで読み出されるデータは、書き込みを行う前の[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]にそれぞれ対応するデータ[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]となり、更に、第4フェーズで読み出されるデータは、書き込みを行う前の[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]にそれぞれ対応するデータ[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]となる。従って、この第1の動作モードでは、単に読み出されるべきデータの順番が制御されるだけである。
【0072】
一方、第2の動作モードの場合、データは、FIFOと8R/Wメモリ回路の間に設けたクロス部4、4’(図1参照)によって並び替えが行われた後に、データの対応付けを変更するようにして8R/Wメモリへ書き込まれる。この結果、データの書き込み位置は、必ずしも各メモリブロックに付した0〜31の数字に従わない。従って、この第2の動作モードでは、データの対応付けが変更された上で、つまりデータにパームテーションが行われた上で、読み出されるべきデータの順番が制御されることになる。
【0073】
図5に、パームテーションを実行することによって得られる効果を視覚的に示している。この図において、[]で囲まれていない数字は、メモリブロックの番号0〜31である。この図から明らかなように、例えば、左側に示した元のデータ[0]〜[31]は、パームテーションを行うことによって右側に示した[0]、[2]、[4]、[6]、[8]、[10]…にそれぞれ対応付けされることになる。更に言えば、パームテーション前の[0]、[2]、[4]、[6]、[8]、[10]…はそれぞれ、パームテーション後は、メモリブロック0、1、2、3…におけるデータ、つまり[0]、[1]、[2]、[3]…となるということである。
【0074】
図3を参照して更に詳細に説明する。パームテーションを行う前の第1フェーズのデータ[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]は、先ず、クロス部4、4’によって[0]、[2]、[1]、[3]、[12]、[14]、[13]、[15]の順に並び替えられ(図3の56参照)、その後、書き込みライン52a、52dをイネイブルすることによって、メモリブロック0、1、16、17と、6、7、22、23にそれぞれ書き込まれるため、これらのメモリブロックから[0]、[1]、[16]、[17]、[6]、[7]、[22]、[2]として読み出されることになる。つまり、パームテーションを行うことによって、元の[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]はそれぞれ、[0]、[16]、[1]、[17]、[6]、[22]、[7]、[23]にそれぞれ対応付けされたことになる。
【0075】
同様に、パームテーションを行う前の第2フェーズのデータ[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]は、先ず、クロス部4、4’によって[4]、[6]、[5]、[7]、[8]、[10]、[9]、[11]の順に並び替えられ(図3の56参照)、その後、書き込みライン52e、52hをイネイブルすることによって、メモリブロック2、3、18、19と、4、5、20、21にそれぞれ書き込まれるため、これらのメモリブロックから[2]、[3]、[18]、[19]、[4]、[5]、[20]、[21]として読み出されることになる。つまり、パームテーションを行うことによって、元の[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]はそれぞれ、[2]、[18]、[3]、[19]、[5]、[4]、[20]、[21]にそれぞれ対応付けされたことになる。
【0076】
また、パームテーションを行う前の第3フェーズの[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]は、先ず、クロス部4、4’によって[16]、[18]、[17]、[19]、[28]、[30]、[29]、[31]の順に並び替えられ(図3の56参照)、その後、書き込みライン52b、52cをイネイブルすることによって、メモリブロック8、9、24、25と、14、15、30、31にそれぞれ書き込まれるため、これらのメモリブロックから[8]、[9]、[24]、[25]、[14]、[15]、[30]、[31]として読み出されることになる。つまり、パームテーションを行うことによって、元の[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]はそれぞれ、[8]、[24]、[9]、[25]、[14]、[30]、[15]、[31]にそれぞれ対応付けされたことになる。
【0077】
更に、パームテーションを行う前の第4フェーズの[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]は、先ず、クロス部4、4’によって[20]、[22]、[21]、[23]、[24]、[26]、[25]、[27]の順に並び替えられ(図3の56参照)、その後、書き込みライン52g、52hをイネイブルすることによって、メモリブロック10、11、26、27、12、13、28、29にそれぞれ書き込まれるため、これらのメモリブロックから[10]、[11]、[26]、[27]、[12]、[13]、[28]、[29]として読み出されることになる。つまり、パームテーションを行うことによって、元の[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]はそれぞれ、[10]、[26]、[11]、[27]、[12]、[28]、[13]、[29]にそれぞれ対応付けされたことになる。
【0078】
2.DCTプロセッサの動作
図6に、本発明によるDCTプロセッサ1とその周辺機器(図示されていない)によって行われる離散コサイン変換処理のシーケンスフローを、また、図7に、この処理によって生じるデータのデータフローを表すデータフローグラフを、それぞれ示す。尚、図7の上部に示したステップ(ST)の番号は、図6のそれに対応する。
【0079】
尚、本発明のDCTプロセッサ1によって行われる処理は、図6に示したステップ1〜11のうち、ステップ3〜10のみである。残りのステップ1、2、11は、例えばCPU等の周辺機器によって行われることになっている。換言すれば、最終的な離散コサイン変換の結果を得るには、本発明のDCTプロセッサ1による処理に加えて更にステップ1、2、11の処理を行う周辺機器が必要、ということである。但し、設計変更によって、これらの処理を本発明のDCTプロセッサ1が行うようにしてもよい。
【0080】
ステップ1で、先ず、離散コサイン変換を実行すべきデータを32個のサンプリングポイントでサンプリングし、32個のサンプリングデータ[0]〜[31]を得る。
【0081】
ステップ2で、これらのサンプリングデータを、図7に示す順番に並び替える。この並び替えは、その後の処理を適切に行うために必要とされる処理である。この並び替えにより、データは[0]、[1]、[31]、[30]…の順に並び替えられる。
【0082】
次いで、ステップ3で、これらのデータを第1の動作モードで動作する8R/Wメモリ回路5のメモリブロック0〜31に書き込み且つ読み出す。尚、ここでの書き込みは、例えばCPU等から行われるものであってFIFO5(図1参照)から行われるものでないため、クロス部4、4’による並び替えはない。また、この場合、各データは、[0]、[1]、[31]、[30]…のそれぞれの数字に対応するメモリブロックに書き込まれる。つまり、[0]はメモリブロック0に、[1]はメモリブロック1に、[31]はメモリブロック31…といった具合である。これらの書き込みと読み出しにより、8R/Wメモリ回路5から出力されるデータは、図3を参照して説明したように、対応付けを何ら変更されることなく、第1フェーズにおいては、[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]となり、第2フェーズにおいては、[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]、第3フェーズにおいては、[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]、第4フェーズにおいては、[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]となる。
【0083】
次いで、ステップ4で、これらのデータは2個のDCT回路3、3’(図1参照)によって処理される(ST4)。図1から明らかなように、8R/Wメモリ回路5の8個の各出力部は、2個のDCT回路3、3’の4個の入力部にそれぞれ対応して接続されているから、8R/Wメモリ回路5によって、第1フェーズで読み出されたデータのうちの[0]、[1]、[2]、[3]はDCT回路3で、一方、[12]、[13]、[14]、[15]はDCT回路3’で処理される。同様に、第2フェーズで読み出されたデータのうちの[4]、[5]、[6]、[7]はDCT回路3で、一方、[8]、[9]、[10]、[11]はDCT回路3’で処理される。また、第3フェーズで読み出されたデータのうちの[16]、[17]、[18]、[19]はDCT回路3で、一方、[28]、[29]、[30]、[31]はDCT回路3’で処理される。更に、第4フェーズで読み出されたデータのうちの[20]、[21]、[22]、[23]はDCT回路3で、一方、[24]、[25]、[26]、[27]はDCT回路3’で処理される。
【0084】
尚、図7では、各DCT回路3、3’で処理されるデータを明らかにするため、1個のDCT回路3、3’によって処理されるデータ範囲を四角で囲っている。上の記載からも明らかなように、各四角において4個のデータが処理される。
【0085】
ここで、各四角内の<n>(nは1〜4の整数)は、それらのデータがフェーズ1〜4でそれぞれ処理されることを意味する。例えば、<1>が付された四角は2つあるが、これらは、第1フェーズで処理されることを意味し、また、それらで各々処理されるデータは[0]〜[4]あるいは[12]〜[15]であり、それぞれ、DCT回路3とDCT回路3’によって処理されることを意味する。同様に、<2>が付された2つの四角は、第2フェーズで処理されることを意味し、また、そのとき処理されるデータは[4]〜[7]あるいは[8]〜[11]であり、それぞれ、DCT回路3とDCT回路3’によって処理されることを意味する。また、<3>が付された2つの四角は、第3フェーズで処理されることを意味し、また、そのとき処理されるデータは[16]〜[19]あるいは[27]〜[31]であり、それぞれ、DCT回路3とDCT回路3’によって処理されることを意味する。同様に、<4>が付された四角も2つあるが、これらは、第4フェーズで処理されることを意味し、また、そのとき処理されるデータは[20]〜[23]あるいは[24]〜[27]であり、それぞれ、DCT回路3とDCT回路3’によって処理されることを意味する。
【0086】
更に、各四角内のmode(モード)n(nは0〜2の整数)は、各DCT回路3、3’によって使用されるモードを表し、また、d(n)(nは1から31までの整数)は、各DCT回路3、3’の乗算器36a、36b(図1参照)でそれぞれ使用される乗算の係数を表している。例えば、第1フェーズにおいて、DCT回路3はモード0の機能素子(図2のa)参照)として機能し、このモード0における機能素子の乗算器36aは、d(16)という係数を用い、また、乗算器36bはd(24)という係数を用い、一方、同じく第1フェーズにおいて、DCT回路3’はモード0の機能素子(図2のa)参照)として機能し、このモード0における機能素子の乗算器36aはd(19)という係数を用い、また、乗算器36bはd(27)という係数を用いる、といった具合である。
【0087】
その後、ステップ5で、各DCT回路3、3’で処理された8個のデータは、FIFO7(図1参照)に順次に書き込まれ、32個全てのデータが書き込まれた後に、再び、順次に読み出される。このとき読み出されるデータは、第1フェーズにおいては、[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]、第2フェーズにおいては、[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]、第3フェーズにおいては、[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]、第4フェーズにおいては、[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]に対応する。
【0088】
次いで、ステップ6で、クロス部4、4’(図1参照)によってデータの並び替えが行われる。この並び替えにより、FIFOからのデータは、図3の56で示すような順番となる。即ち、第1フェーズのデータは、[0]、[2]、[1]、[3]、[12]、[14]、[13]、[15]、第2フェーズのデータは、[4]、[6]、[5]、[7]、[8]、[10]、[9]、[11]、第3フェーズのデータは、[16]、[18]、[17]、[19]、[28]、[30]、[29]、[31]、第4フェーズのデータは、[20]、[22]、[21]、[23]、[24]、[26]、[25]、[27]である。
【0089】
次いで、ステップ7で、FIFO7から読み出されたデータは、第2の動作モードで動作する8R/Wメモリ回路5(図1)に戻され(回路動作としては、ループされということになる)、そこに書き込まれ且つ読み出される。この結果、パームテーションが行われ、第1フェーズのデータ[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]はそれぞれ、[0]、[16]、[1]、[17]、[6]、[22]、[7]、[23]に対応付けされることとなり、また、第2フェーズのデータ[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]はそれぞれ、[2]、[18]、[3]、[19]、[5]、[4]、[20]、[21]に対応付けされるることとなり、また、第3フェーズのデータ[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]はそれぞれ、[8]、[24]、[9]、[25]、[14]、[30]、[15]、[31]に対応付けされることとなり、更に、第4フェーズのデータ[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]はそれぞれ、[10]、[26]、[11]、[27]、[12]、[28]、[13]、[29]に対応付けされることとなる。
【0090】
次いで、ステップ8で、パームテーションが行われたデータを、再び、DCT回路3、3’で処理する。この処理は、ステップ4で述べたのと同様である。
【0091】
次いで、ステップ9で、DCT回路3、3’からのデータを、再び、FIFO7で処理する。この処理は、ステップ5で述べたのと同様である。
【0092】
次いで、ステップ10で、再びクロス部4、4、’(図1参照)によって並び替えが行われる。この処理は、ステップ6で述べたのと同様である。
【0093】
その後、ステップ7〜ステップ10の処理を更に3回反復(回路動作で言えば「ループ」)する。この結果、ステップ7〜10の処理を計4回反復することになる(但し、以下の記述や図6から明らかなように、4回目のループ時におけるステップ10の処理は、最終結果とは無関係であるため省略してよい)。
【0094】
最後に、ステップ11で、4回目のループ終了時に、ステップ9の処理後に得られたデータ、つまりFIFO7(図1参照)からのデータを[0]、[4]、[8]、[12]…の順番に並び替えるとともに、データ[0]についてはd(1)(つまり、√(0.5))の係数により乗算を行う。これらの処理は、最終結果を望ましい形で得るために必要とされる処理である。
【0095】
B.第2の実施形態
再び図1を参照して、本発明の第2の実施形態について説明する。この第2の実施形態は、DCTプロセッサの外部から内部にデータを入力する入力手段(図示されていない)を、8R/Wメモリ回路5とDCT回路3、3’との間(一点鎖線Bと信号線24との交差位置)に設けるもの、としたものである。
【0096】
この結果、この第2の実施形態では、第1の実施形態と異なり、DCTプロセッサの外部からのデータが、8R/Wメモリ回路5を介さずにDCT回路3、3’に直接付与されることになる。しかしながら、この場合にも、DCT回路3、3’に付与されるデータは、8R/Wメモリ回路5を介したデータと同じもの、更に言えば、第1の動作モードの8R/Wメモリ回路で処理されたデータと同じものとする必要がある。このため、この第2の実施形態では、データを予めCPU等で処理するものとする。
【0097】
明らかなように、第2の実施形態では、8R/Wメモリ回路5を第1の動作モードで処理させる必要はない。別の言い方をすれば、第2の実施形態では、8R/Wメモリ回路5を上述した第2の動作モードでのみ動作させるだけでよい。したがって、第2の実施形態によれば、第1の実施形態に比べて、CPU等によって行われる処理が多少多くなるものの、8R/Wメモリ5を単一の動作モード(第2の動作モード)でのみ動作させればよいため、8R/Wメモリ回路の制御や構成をより簡易なものとすることができる。これに対し、第1の実施形態では、第2の実施形態に比べて、8R/Wメモリ回路5の制御や構成が多少複雑になるものの、CPU等によって行われる処理を少なくすることができる点で有利である。
【0098】
C.第3の実施形態
本発明の第3の実施形態は、入力手段をDCT回路3、3’とFIFO7との間(一点鎖線Cと信号線24との交差位置)に設けるもの、としたものである。
【0099】
この結果、この第3の実施形態では、DCTプロセッサの外部からのデータは、8R/Wメモリ回路5やDCT回路3、3’を介さずにFIFO7に直接付与されることになる。しかしながら、この場合にも、FIFO5に付与されるデータは、8R/Wメモリ回路5やDCT回路3、3’を介したデータと同じもの、更に言えば、第1の動作モードの8R/Wメモリ回路とDCT回路3、3’で処理されたデータと同じものとする必要がある。この処理はCPU等によって行うことができる。
【0100】
明らかなように、第3の実施形態でも、第2の実施形態と同様に、8R/Wメモリ回路5を第1の動作モードで処理させる必要はない。よって、第2の実施形態で述べたものと同様の利点と欠点を有することになる。
【0101】
D.DCTプロセッサの性能
下の表に、本発明のDCTプロセッサの性能と従来装置であるLippen等によるDCTプロセッサのそれとを比較した比較結果を示す。
【0102】
【0103】
ここで、表中の「1つのサンプリングポイントを計算するに必要な算術演算器の数」とは、図6に記載された算術演算器、即ち、加算・減算器と乗算器の数を意味する。本発明では、各DCT回路3、3’に8個ずつ設けられているから計16個である。また、「1サイクル毎に発生する中間出力値の数」とは、DCT回路による1回の計算で発生し得る値の数であり、本発明では32個のサンプリングポイントを4回に分けて計算するから、8個ということになる。更に、「レジスタファイル(データの蓄積装置)の数」とは、計算結果を記憶させるための装置の数を意味し、本発明ではFIFO7と8R/Wメモリ回路5ということになるから2個である。「DCTの推定コア領域」とは、DCTプロセッサ1に必要な面積である。「出力レイテンシイ」は、出力結果を得るまでの平均時間である。
【0104】
上の表より明らかなように、例えば、メモリブロック等の周辺ロジックに必要な面積に関して、本発明のDCTプロセッサ1は、Lippenのアルゴリズムによるプロセッサで必要とされる面積の約半分ほどで足りる。また、出力レイテンシイ(遅延)について言えば、本発明のDCTプロセッサは、Lippenのプロセッサのそれの約1/4程で足りる。このように、本発明のDCTプロセッサは優れた性能を発揮する。
【0105】
最後に、上の実施形態では、FIFOからのデータを並び替えるためにクロス部を用いているが、例えば、クロスバースイッチを用いても良い。また、クロス部を、FIFOの出力部や8R/Wメモリ回路の入力部(8R/Wメモリ回路の内部)に設けても良い。必要なことは、8R/Wメモリ回路によるパームテーションが行われるよう、8R/Wメモリ回路のメモリブロックに書き込みを行う前に並び替えを行わなければならないことだけである。
【0106】
【発明の効果】
本発明によれば、8R/Wメモリ回路によってリソースシェアリングが促進されることから信号のパームテーション(置き換え)の複雑さが解消され、これによって、必要とされる部材数の減少、ファンクションブロックエリアの減少、消費電力の減少、更に、処理スピードの高速化、あるいは、出力レイテンシイの減少を図ることができる。
【図面の簡単な説明】
【図1】本発明によるDCTプロセッサのブロック図である。
【図2】DCT回路の機能素子の各機能を説明する図である。
【図3】8R/Wメモリ回路のブロック図を示す図である。
【図4】8R/Wメモリ回路の回路図である。
【図5】パームテーションを実行することによって得られる効果を視覚的に示した図である。
【図6】離散コサイン変換処理のシーケンスフローを示す図である。
【図7】離散コサイン変換処理によって生じるデータのデータフローを表すデータフローグラフである。
【発明の属する技術分野】
本発明は、離散コサイン変換(以下、「DCT」)を実行するために用いるDCTプロセッサに関する。
【0002】
【従来の技術】
離散コサイン変換は、時間軸に沿った値として表されたデータを、周波数成分に分割されたデータに変換するためのものである。離散コサイン変換を実現するDCTアルゴリズムは、MPEGやMP3に代表される画像処理や周波数のサブバンドフィルタ等幅広い用途で利用されている。
【0003】
DCTアルゴリズムを実行するDCTプロセッサには、一般に、多数の加算・減算器や乗算器、膨大な数のクロスバースイッチ等が必要となる。必要とされる部材の数は、サンプリングポイントが増えるに従って急激に増加する。その主な原因は、データにパームテーション(置き換え)を行うことの複雑さにある。
【0004】
明らかなように、部材の増加は、DCTプロセッサのファンクションブロックエリアを増大させるとともに、周辺ロジックの配線による消費電力を増大させ、また、周辺ロジックの最大配線長を増大させ、更には、プロセッサの処理スピードを低下させ出力レイテンシイの増加を招く。
【0005】
例えば、従来のDCTアルゴリズムの代表的なものとして、LEEのアルゴリズムと呼ばれるものがある。このLEEのアルゴリズムを実行するDCTプロセッサを用いて、32個のサンプリングポイントで離散コサイン変換を実行するには、少なくとも273個の加算・減算器と80個の乗算器と、更に膨大な数のクロスバースイッチが必要となる。実際上、このような膨大な数のリソース全てをLSIに直接に配置することは非常に困難であり、また、そのような膨大な数の部材によって引き起こされる出力レイテンシイは重大な問題となる。
【0006】
今日知られているDCTプロセッサの中で最も優れているのは、このLEEのアルゴリズムを利用してLippen P.E.R等によって開発された「マルチ・フラクション・プロセッシング・ユニット(Multi Fraction Processing Unit)」と考えられている。しかしながら、このプロセッサでさえ、パームテーションの複雑さ故に多数の部材が必要とされ、未だに上記の問題を解決したものとは言えない。
【0007】
【発明が解決しようとする課題】
本発明は、上述した従来の問題点を解決しようとするものであり、従来開発された所定のDCTアルゴリズムをベースとし、且つ、このDCTアルゴリズムにおけるデータフローの規則性に着目して開発された特殊構造の処理メモリを用いてリソースシェアリングを促進させ、これによって、必要とされる部材数の減少、ファンクションブロックエリアの減少、消費電力の減少、更には、処理スピードの高速化、あるいは、出力レイテンシイの減少を図るものである。
【0008】
【課題を解決するための手段】
上記の目的を達成するために、本発明は、離散コサイン変換を実行するために用いるDCTプロセッサにおいて、データにパームテーションを行う記憶・処理装置と、所定のDCTアルゴリズムに従って計算を行う計算装置と、を備え、前記記憶・処理装置と前記計算装置との間でデータを所定回数ループさせ、前記計算装置から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴としている。
【0009】
また、本発明は、離散コサイン変換を実行するために用いるDCTプロセッサにおいて、複数の入力部と複数の出力部とを有し、前記複数の入力部を通じて入力される複数のデータにパームテーションを行った後に前記複数の出力部から出力する、前記記憶・処理装置と;前記記憶・処理装置の出力部に接続された複数の入力部と複数の出力部とを有し、前記複数の入力部から入力されたデータを所定のDCTアルゴリズムに従って計算し前記複数の出力部から出力する計算装置と;前記計算装置の出力部に接続された複数の入力部と前記記憶・処理装置の入力部に接続された複数の出力部とを有し、前記計算装置の出力部から出力された複数のデータを記憶し前記複数の出力部から出力する記憶装置と;前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と;を備え、前記記憶装置の出力部から出力された複数のデータを、前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間を所定回数ループさせ、前記記憶装置の出力部から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴としている。
【0010】
更に、本発明は、32個のサンプリングポイントでサンプリングすることによって得られた32個のデータに対して離散コサイン変換を行う32ポイントDCTプロセッサにおいて;8個の入力部と8個の出力部とを有し、一度に8個ずつ計4回、計32個のデータを入力し且つ出力することができる、記憶・処理装置であって、前記8個の入力部を通じて一度に8個ずつ計4回、順次に所定の記憶位置に書き込まれた計32個のデータを前記8個の出力部に所定の順番で出力する、前記記憶・処理装置と;各々が、前記記憶・処理装置の8個の出力部のうちの4個の出力部にそれぞれ接続された4個の入力部と4個の出力部とを有し、前記8個の入力部から入力されたデータを一度に4個ずつCGA−DCTアルゴリズムに従って計算し、前記4個の出力部からそれぞれ出力する、2個の計算装置と;前記2個の計算装置の計8個の出力部にそれぞれ接続された8個の入力部と前記記憶・処理装置の計8個の入力部にそれぞれ接続された8個の出力部とを有し、一度に8個ずつ計4回、計32個のデータを先入れ先出し方式で書き込み且つ読み出すことができる、記憶装置であって、前記計算装置の各出力部から出力された計8個のデータを計4回、計32個のデータを記憶する、前記記憶装置と;前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と;を備えることを特徴としている。
【0011】
上記のDCTプロセッサには、更に、前記DCTプロセッサの外部から内部にデータを入力する入力手段が、前記記憶・処理装置の直前に、あるいは、前記記憶・処理装置と前記計算装置の間に、あるいは、前記計算装置と前記記憶装置の間に設けられていてもよい。
【0012】
上記のDCTプロセッサにおいて、前記記憶・処理装置は、前記データを前記所定の記憶位置に書き込む際、前記入力されるデータと前記出力されるデータとの対応付けを変更しない第1の動作モードと、前記入力されるデータと前記出力されるデータとの対応付けを変更する第2の動作モードのいずれかで動作するものであって、前記入力手段からのデータは前記第1の動作モードで処理されるものであってもよい。
【0013】
上記のDCTプロセッサにおいて、前記第1の動作モードで動作する記憶・処理装置で処理された計32個のデータを、前記計算装置、前記記憶装置で順に処理し、その後、前記記憶装置の出力部から読み出された計32個のデータを、前記並び替え手段で処理した後に、前記第2の動作モードで動作する前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間をループさせ、4回目のループ時に前記記憶装置の出力部から読み出されたデータに基づいて、前記データを離散コサイン変換したときの結果を求めるようにしてもよい。
【0014】
上記のDCTプロセッサにおいて、前記記憶・処理装置は、計32個の記憶位置を有しており、前記32個のデータは、これら32個のいずれかの記憶位置に1つずつ書き込み且つ読み出されるものであってもよい。
【0015】
上記のDCTプロセッサにおいて、前記32個の記憶位置の各々に書き込みラインと読み出しラインが設けられており、これら書き込みラインと読み出しラインは互いに垂直に配線され、データの書き込み及び読み出し時に共用されなくともよい。
【0016】
上記のDCTプロセッサにおいて、前記所定の並び替えは、前記記憶装置と前記記憶・処理装置との間の伝送線をクロスさせることによって行ってもよい。
【0017】
上記のDCTプロセッサにおいて、計32個のデータを前記8個の出力部に所定の順番で出力するために並び替え装置を用いてもよい。
【0018】
上記のDCTプロセッサにおいて、前記記憶・処理装置は8R/Wメモリ回路であり、前記計算装置はDCT回路であり、前記記憶装置はFIFOであってもよい。
【0019】
上記のDCTプロセッサにおいて、前記並び替え手段は記憶・処理装置に設けられていてもよい。
【0020】
また、本発明は、離散コサイン変換を実行するために用いるDCTプロセッサで使用する記憶・処理装置であって、所定のDCTアルゴリズムに従って計算を行う計算装置との間でデータを所定回数ループさせ、前記計算装置から読み出されたデータに基づいて離散コサイン変換の結果を求めるようにデータにパームテーションを行うことを特徴としている。
【0021】
更に、本発明は、離散コサイン変換を実行するために用いるDCTプロセッサで使用する記憶・処理装置であって、該記憶・処理装置は、複数の入力部と複数の出力部とを有し、前記複数の入力部を通じて入力される複数のデータにパームテーションを行った後に前記複数の出力部から出力するものであり;前記DCTプロセッサは、更に、前記記憶・処理装置の出力部に接続された複数の入力部と複数の出力部とを有し、前記複数の入力部から入力されたデータを所定のDCTアルゴリズムに従って計算し前記複数の出力部から出力する計算装置と;前記計算装置の出力部に接続された複数の入力部と前記記憶・処理装置の入力部に接続された複数の出力部とを有し、前記計算装置の出力部から出力された複数のデータを記憶し前記複数の出力部から出力する記憶装置と;前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と;を備え、前記記憶装置の出力部から出力された複数のデータを、前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間を所定回数ループさせ、前記記憶装置の出力部から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴としている。
【0022】
更に、本発明は、32個のサンプリングポイントでサンプリングすることによって得られた32個のデータに対して離散コサイン変換を行う32ポイントDCTプロセッサで使用する記憶・処理装置であって、該記憶・処理装置は、8個の入力部と8個の出力部とを有し、一度に8個ずつ計4回、計32個のデータを入力し且つ出力することができ、前記8個の入力部を通じて一度に8個ずつ計4回、順次に所定の記憶位置に書き込まれた計32個のデータを前記8個の出力部に所定の順番で出力するものであり;前記DCTプロセッサは、更に、各々が、前記記憶・処理装置の8個の出力部のうちの4個の出力部にそれぞれ接続された4個の入力部と4個の出力部とを有し、前記8個の入力部から入力されたデータを一度に4個ずつCGA−DCTアルゴリズムに従って計算し、前記4個の出力部からそれぞれ出力する、2個の計算装置と;前記2個の計算装置の計8個の出力部にそれぞれ接続された8個の入力部と前記記憶・処理装置の計8個の入力部にそれぞれ接続された8個の出力部とを有し、一度に8個ずつ計4回、計32個のデータを先入れ先出し方式で書き込み且つ読み出すことができる、記憶装置であって、前記計算装置の各出力部から出力された計8個のデータを計4回、計32個のデータを記憶する、前記記憶装置と;前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と;を備えることを特徴としている。
【0023】
【発明の実施の形態】
A.第1の実施形態
1.DCTプロセッサの構成
1−1.全体構成
図1に、本発明の第1の実施形態によるDCTプロセッサ1のブロック図を示す。
【0024】
このDCTプロセッサ1は、特に、32個のサンプリングポイントでサンプリングすることによって得られた32個のサンプリングデータに対して離散コサイン変換を行うことができる、32ポイントDCTプロセッサ(以下、「DCTプロセッサ」)1である。尚、サンプリングデータを何ビットにするかは設計者が自由に決定できる。例えば、1ワード(16ビット)とする等の如くである。
【0025】
DCTプロセッサ1は、所定のDCTアルゴリズムに従って離散コサイン変換に必要な計算を行うことができる並列に並んだ2個の回路(以下、それぞれ「DCT回路」)3、3’と、このDCT回路で使用されるアルゴリズムにおけるデータフローの規則性に着目して開発された特殊構造の8読み出し/書き込みポートSRAMメモリ回路(以下、「8R/Wメモリ回路」)5(請求項中の「記憶・処理装置」に対応)と、8ワード×4デプス(depth)FIFO(先入れ先出し)バッファ(以下、「FIFO」)(請求項中の「記憶装置」に対応)7から成る。
【0026】
尚、DCT回路3とDCT回路3’は、全く同じものであると考えて良い。これらのDCT回路3、3’で使用されているアルゴリズムは、ここでは特に1999年と2000年にJakko AltolaやDavid Akopian等によって発表された「DCTのためのコンスタント・ジオメトリ・アルゴリズム(Constant Geometry Algorithm for DCT (CGA-DCT))[4]」(以下、「CGA−DCTアルゴリズム」)とする。
【0027】
図1から明らかなように、これら8R/Wメモリ回路5、DCT回路3、3’、及びFIFOは、これらの順に互いにループ状に接続されている。更に言えば、8R/Wメモリ回路5の8個の出力部53は、計8個のDCT回路3、3’の入力部31に、また、計8個のDCT回路3、3’の出力部33は、FIFO7の8個の入力部71に、更に、FIFO7の8個の出力部73は、8R/Wメモリ回路5の8個の入力部に、それぞれ接続されている。この結果、データをこれらの間でこれらの順に所望の回数だけループさせることができる、換言すれば、データに同じ処理を所望の回数だけ繰り返し行うことができる。
【0028】
尚、図中の矢印はデータが流れる方向を示すものである。図から明らかなように、特に、FIFO7から8R/Wメモリ回路5に伝達されるとき、データは、クロス部(請求項中の「並び替え手段」に対応)4、4’によって、更に言えば、それらの間に設けた伝送線を2ヶ所でクロスさせることによって、一部のデータについて並び替え(入れ換え)が行われることになっている。この並び替えによって、パームテーションが可能になるのであるが、これについては後述する。
【0029】
1−2.DCT回路
<概要>
DCT回路3、3’は各々、6個の加算・減算器35a〜fと、2個の乗算器36a、36b、2個のセレクタ(sel)37a、37b、2個のマスク(msk)38a、38b、及び1個のROM39から成る。入力部31と出力部33は各DCT回路3、3’にそれぞれ4個ずつ設けられており、従って、各DCT回路3、3’によって、データを一度に4個ずつ入力し且つ出力することができる。各DCT回路3、3’の入力部31から入力される4個のデータは、CGA−DCTアルゴリズムに従って計算され、その後、出力部33から4個のデータとして出力されることになる。
【0030】
DCT回路3、3’の構成は、Jarmo Astola、David Akopian等による論文「Architecture-oriented regular algorithms for discrete sine and cosince transforms」IEEE Trans.Signal Processing Vol.47. pp1109〜1124、1999年4月に記載されているものと同じである。以下にその構成を概説するが、詳細については上記論文を参照のこと。
【0031】
<各機能素子の構成>
図1に示した各DCT回路3、3’は、図2のa)〜c)にそれぞれ示したモード(mode)0〜2の機能素子の各機能を1個の回路で実現可能としたものと考えて良い。そこで、図1のDCT回路を説明する前に、先ず、図2に示した機能素子の各機能を説明する。
【0032】
図2から明らかなように、モード0の機能素子は、4個の加算・減算器35a〜eと2個の乗算器36a、36bから成る。モード1の機能素子は、これらの部材に加えて更に、1個の加算・減算器35fを有し、モード2の機能素子は更に、1個の加算・減算器35fをも有する。これより明らかなように、モード2の機能素子に設けられた加算・減算器や乗算器の数は、図1のDCT回路3、3’のそれと同じであるが、モード2の機能素子には、図1のDCT回路3、3’のように、セレクタ37a、37bや、マスク38a、38b、ROM39は設けられていない。これらの部材は、主として、モードを選択するためだけに使用される部材だからである。
【0033】
尚、モード0〜モード2の各機能素子に設けられた加算・減算器のうち、負の記号(−)が付されているもの35b、35d、35fは減算器として機能し、何も記号が付されていないもの35a、35c、35eは加算器として機能する。また、各機能素子の各乗算器の上部に記載された記号d(n)あるいは2d(n)(2×d(n)の意味である)は、nの値によって定まる、乗算で使用される係数を示すものである。具体的には、以下の3種類の式から成る式(以下、「式1」)によって計算される係数である。
▲1▼ d(1)=√(0.5)
▲2▼ d(2i)=√(0.5(1+d(i))
▲3▼ d(2i+1)=√(0.5(1−d(i)))
(但し、ここでi=1/2、2/2、3/2、…n/2(nは整数))
【0034】
上の式1)において、例えばn=2であれば、▲2▼の式を用いて、乗算で使用される係数はd(2)=√(0.5(1+d(1))=√(0.5(1+√(0.5))である。尚、nの値は予め決定されているものであるが、これについては後述する。
【0035】
<各機能素子の動作>
図2のa)に示したモード0の機能素子の動作は以下の通りである。
機能素子の4個の各入力部31にそれぞれ、データA〜Dの値が入力されたとすると、位置アにおいては、データAと、クロス部40aとクロス部40bを介して伝達されたデータCとが、加算・減算器35aによって加算されるためA+Cが得られ、一方、位置イにおいては、クロス部40aを介して伝達されたデータCと、クロス部40bを介して伝達されたデータAとが、加算・減算器35bによって減算されるためA−Cが得られる。
【0036】
同様に、位置ウにおいては、クロス部40aを介して伝達されたデータBとクロス部40cを介して伝達されたデータDとが、加算・減算器35cによって加算されるためB+Dが得られ、一方、位置エにおいては、クロス部40aとクロス部40cを介して伝達されたデータBと、Dとが、加算・減算器35dによって減算されるため、B−Dが得られる。
【0037】
更に、位置イにおいて得られたA−Cは、乗算器36aによってnの値に応じた係数d(n)が掛算された後に、クロス部40dによって出力位置が入れ換えられ、また、位置エにおいて得られたB−Dは、乗算器36bによって係数d(n)が掛算される。
【0038】
以上より、モード0の機能素子によれば、4個の各出力A’〜D’においてそれぞれ、A+C、B+D、(A−C)×d(n)、(B−D)×d(n)という結果が得られる。同様に、モード1の機能素子によれば、各出力A''〜D''においてA+C、B+D、(A−C)×d(n)、(B−D)×2d(n)−(B+D)という結果が、モード2の機能素子によれば、各出力A'''〜D'''においてA+C、B+D、(A−C)×2d(n)−(A+C)、(B−D)×2d(n)−(B+D)という結果が得られる。
【0039】
<DCT回路の構成>
DCT回路3、3’は、上に説明したモード1〜3の機能素子を、2個のセレクタ37a、37b、2個のマスク38a、38b、及び1個のROM39を利用することによって、1個の回路で実現可能としたものである。
【0040】
ここで、セレクタ37a、37bはそれぞれ、それらに接続された2つの加算・減算器35b、35dのいずれかを選択するためのものである。また、マスク38aは、それに接続された加算・減算器35eに、マスク38bは、それに接続された加算・減算器35fに、信号を送ったり、信号を送らなかったりするためのものである。
【0041】
ROM39は、セレクタ37a、37bやマスク38a、38bを制御するために必要な情報を記憶させるためのものである。これらの情報は、2つのテーブル、即ち、係数テーブル41aと指令テーブル41bに記憶されている。ここで、係数テーブル41aは、上記の式1)の計算式を記憶するものである。各乗算器は、使用すべきnの値を得た後に、この係数テーブル41aを利用して係数を計算する。一方、指令テーブル41bは、選択すべきモードに応じて、選択すべきセレクタ、あるいは、マスクを記憶するものである。DCT回路3、3’は、この指令テーブル41bの情報に基づいて、各モードに応じて、セレクタ37a、37bのいずれを選択すべきか、あるいは、マスク38a、38bのいずれを選択すべきかを知る。
【0042】
指令テーブル41bについて更に説明する。例えば、モード1の機能素子として機能させる場合、DCT回路3、3’の処理部(図示されていない)は、指令テーブル41bの情報に基づいて、セレクタ37aは、加算・減算器35b、35dのうちの加算・減算器35bを選択するように、一方、セレクタ37bは、加算・減算器35b、35dのうちの加算・減算器35dを選択するように、それらのセレクタ37a、37bに指令を出す。また、DCT回路3、3’の処理部(図示されていない)は、マスク38aは、それに接続された加算・減算器35eに対して加算・減算器35aからの信号を送らないように、一方、マスク38bは、それに接続された加算・減算器35fに対して加算・減算器35cからの信号を送らないように、それらに指令を出す。
【0043】
同様に、モード2の機能素子として機能させる場合、DCT回路3、3’は、セレクタ37a、セレクタ37b、及びマスク38aについては、モード1の場合と同様にし、マスク38bについては、それに接続された加算・減算器35fに対して加算・減算器35cからの信号を送るように、それらに指令を出す。
【0044】
同様に、モード3の機能素子として機能させる場合、DCT回路3、3’は、セレクタ37aは、加算・減算器35b、35dのうちの加算・減算器35dを選択するように、一方、セレクタ37bは、加算・減算器35b、35dのうちの加算・減算器35bを選択するように、それらに指令を出す。また、DCT回路3、3’は、マスク38aは、それに接続された加算・減算器35eに対して加算・減算器35aからの信号を送るように、一方、マスク38bは、それに接続された加算・減算器35fに対して加算・減算器35cからの信号を送るように、それらに指令を出す。
【0045】
以上の働きにより、図1のDCT回路3、3’は、図2のモード1〜3の機能素子の各機能を全て実現することができる。
【0046】
1−3.FIFOの構成
FIFO7は、一般に用いられているFIFOと同様のものであり、先入れ先出し方式でデータを書き込み且つ読み出すことができる記憶装置である。これらのFIFOのうち、ここでは特に、8個×4デプスのFIFO7を使用する。つまり、このFIFO7によって一度に書き込み且つ読み出すことができるデータは8個であり、そのような8個のデータを4回連続して計32個書き込むことができ、また、4回連続して計32個読み出すことができる。明らかなように、このFIFO7に一度に記憶させることができるデータは計32個である。
【0047】
FIFO7を設けた目的は、データを一時的に記憶させるため、換言すれば、データを遅延させて比較的動作が遅い8R/Wメモリ回路5による処理を可能とするためである。したがって、技術の進歩によって8R/Wメモリ回路5の動作が高速化されれば、このFIFO7は必ずしも必要ではないと考えられる。
【0048】
1−4.8R/Wメモリ回路の構成
<概要>
8R/Wメモリ回路5は、本発明のDCTプロセッサ1のために特別に開発されたメモリである。ただし、8R/Wメモリ回路5は、単なる記憶装置として機能するものではなく、離散コサイン変換を実行するために必要な処理、即ち、パームテーションを行うことを主たる目的とするものである。
【0049】
8R/Wメモリ回路の構成を簡単に言えば、従来使用されていた様々な部材(リソース)を共有することによって、その部材数を減少させたもの、換言すれば、リソースシェアリングを促進させたもの、ということができる。本発明では、この8R/Wメモリ回路を用いることによって、プロセッサに必要とされる部材、例えば、加算・減算器や乗算器、クロスバースイッチの数を大幅に減少させている。
【0050】
この8R/Wメモリ回路5によって一度に入力し且つ出力することができるデータは、FIFO7と同様、8個であり、そのような8個のデータを4回連続して計32個書き込む(入力する)ことができ、また、4回連続して計32個出力することができる。更に、この8R/Wメモリ回路5(のメモリ)に一度に記憶させることができるデータは計32個である。
【0051】
<詳細>
図3を参照して、8R/Wメモリ回路5の構成をより詳細に説明する。この図は、8R/Wメモリ回路5のブロック図を示したものである。
【0052】
本発明の8R/Wメモリ回路5は、32個のメモリブロック0〜31(請求項中の「記憶位置」に対応)と、これらの各メモリブロック0〜31にデータを書き込むための8本の書き込みライン52a〜h、これらの各メモリブロック0〜31からデータを読み出すため8本の読み出しライン53a〜h、各メモリブロック0〜31にデータを伝送するための8本の伝送ライン54a〜h、更に4個のクロスバースイッチ58a〜d(請求項中の「並び替え装置」に対応)を備える。書き込みライン52a〜hと読み出しライン53a〜hはそれぞれ、書き込みイネイブル部と読み出しイネイブル部に接続されている。
【0053】
参考のため、図4に8R/Wメモリ回路5の実際の回路図も示している。但し、この図にクロスバースイッチ58a〜dは示されていない。この図において、WL0〜7は書き込みライン52a〜hに、RL0〜7は読み出しライン53a〜hに、(0)〜(7)は伝送ライン54a〜hに、それぞれ対応する。
【0054】
<メモリブロック>
各メモリブロック0〜31には、1個のデータを書き込み且つ読み出すことができる。各メモリブロック0〜31は、0〜31の数字で区別される。これらの数字は、データが記憶される記憶位置を示すものということもできる。
【0055】
これらのメモリブロック0〜31は、4個のブロックグループ59a〜dに分割されている。計32個のメモリブロックが存在するから、各ブロックグループ59a〜dに8個(32÷4=8)のメモリブロックが含まれることになる。例えば、ブロックグループ59aには、メモリブロック0、16、6、22、8、24、14、30が含まれる。
【0056】
<伝送ライン・書き込みライン・読み出しライン>
伝送ライン54a〜hは、各ブロックグループ59a〜dに対して8本ずつ、各メモリブロック0〜31に1本ずつ割り当てられるようにして、一定の方向で(図面縦方向で)設けられている。FIFO7等から出力されたデータは、これらの伝送ライン54a〜hを通じて送られてくる。
【0057】
書き込みライン52は、各ブロックグループ59に対して2本ずつ計8本、各メモリブロック0〜31に1本ずつ割り当てられるようにして設けられている。各書き込みライン52は、伝送ライン54a〜hとの直交方向において、各ブロックグループ59内の8個のメモリブロックのうちの4個のメモリブロックと交差する。これらの書き込みライン52は、書き込みイネイブル部60の働きにより、一度に2本ずつイネイブルされ得る。データ伝送ライン54に信号が存在し、且つ、書き込みライン52がイネイブルされたときに、それらのラインの交差位置に存在するいずれかのメモリブロックにデータが書き込まれる。各書込みラインは4個のメモリブロックと交差し、また、一度に2本の書き込みラインがイネイブルされることから、1回の書き込みで計8個のデータがいずれかのメモリブロックに書き込まれることになる。
【0058】
読み出しライン53a〜hは、各ブロックグループ59a〜dに対して8本ずつ、データ伝送ライン54a〜hと同方向に設けられている。各読み出しライン53a〜hは、8個のメモリブロック(1個のブロックグループ59a〜dに対して2個)と交差するが、1回の読み出し動作の際に、実際に作用するのは各ブロックグループ59a〜dにおいて1個のみ、したがって、計4個のメモリブロックにおいてだけである。これらの読み出しライン53a〜hは、読み出しイネイブル部61の働きにより、書き込みライン52と同様に、一度に2本ずつイネイブルされる。各読み出しライン53が1回の読み出し動作の際に実際に作用するのは4個のメモリブロックであり、また、一度に2本の読出ラインがイネイブルされることから、1回の読み出しで計8個のデータがいずれかのメモリブロックから読み出されることになる。
【0059】
以上の説明からも明らかなように、本発明の8R/Wメモリ回路5では、書き込み時と読み出し時とでラインが共用されておらず、また、書き込みライン52と読み出しライン53が互いに垂直方向に配線されている。このような構成にすることによって、離散コサイン変換を行うために多数必要とされていたクロスバースイッチ58a〜dをたった4個とすることが可能となっている。
【0060】
<クロスバースイッチ>
クロスバースイッチ58a〜dは、各メモリブロック0〜31から読み出されたデータを8R/Wメモリ回路5から出力する前に適当に並び替えるために用いる。例えば、読み出しライン53aと読み出しライン53eをイネイブルすることによって読み出された8個のデータ、換言すれば、第1フェーズで読み出された8個のデータ[0]、[15]、[14]、[1]、[2]、[13]、[12、[3]は、クロスバースイッチ58a〜dによって、[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]の順に並び替えられる。尚、上の記載および明細書及び図面の全体を通じて、[n](nは0から31までの整数)は、メモリブロック0〜31のような記憶手段のnというメモリ位置に入っているデータの内容(値)を表す。
【0061】
<8R/Wメモリ回路のメモリブロックからの読み出し、及び8R/Wメモリ回路からの出力>
8R/Wメモリ回路のメモリブロックからの読み出し及び8R/Wメモリ回路からの出力は次の手順による。
【0062】
第1フェーズ、つまり最初の読み出しでは、読み出しライン53bと読み出しライン53eをイネイブルすることによってそれぞれ、[0]、[1]、[2]、[3]と、[15]、[14]、[13]、[12]が読み出され、これらのデータはクロスバースイッチ58によって[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]の順に並び替えられた後に、8R/Wメモリ回路5から出力される。
【0063】
第2フェーズ、つまり2回目の読み出しでは、読み出しライン53aと読み出しライン53fをイネイブルすることによってそれぞれ、[6]、[7]、[4]、[5]と、[9]、[8]、[11]、[10]が読み出され、これらのデータはクロスバースイッチ58によって[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]の順に並び替えられた後に、8R/Wメモリ回路5から出力される。
【0064】
第3フェーズ、つまり3回目の読み出しでは、読み出しライン53dと読み出しラインgをイネイブルすることによってそれぞれ、[16]、[17]、[18]、[19]と、[31]、[30]、[29]、[28]が読み出され、これらのデータはクロスバースイッチ58によって[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]の順に並び替えられた後に、8R/Wメモリ回路5から出力される。
【0065】
第4フェーズ、つまり4回目の読み出しでは、読み出しライン53cと読み出しライン53hをイネイブルすることによってそれぞれ、[22]、[23]、[20]、[21]と、[25]、[24]、[27]、[26]が読み出され、これらのデータはクロスバースイッチ58によって[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]の順に並び替えられた後に、8R/Wメモリ回路5から出力される。
【0066】
以上より明らかなように、8R/Wメモリ回路5にデータを一旦記憶させることにより、それらのデータを所定の順番で出力させることができる。更に言えば、8R/Wメモリ回路5から出力されるデータの順番を、8R/Wメモリ回路5のいずれのメモリブロック0〜31にデータを記憶させるかという事実に基づいて制御できるということである。
【0067】
<8R/Wメモリ回路のメモリブロックへのデータの書き込み、及びパームテーション>
8R/Wメモリ回路5のメモリブロック0〜31へのデータの書き込みは、DCTプロセッサの外部の、例えばCPU等(図示されていない)から行われる場合と、DCTプロセッサの内部でループ状に、FIFO7等を介して行われる場合の2通りがある。
【0068】
前者の書き込みを行うために、図1に示した8本の信号線24に加えて、更に、DCTプロセッサの外部からDCTプロセッサの内部にデータを入力するための手段、例えば、DCTプロセッサの外部からのデータを8R/Wメモリ回路5の入力部51に伝送するための信号線(図示されていない)が存在すると考えてよい。これらの信号線は、クロス部4、4’(及びFIFO5)と8R/Wメモリ回路5との間で、8R/Wメモリ回路5の入力部51に電気的に接続されていれば十分であり、8R/Wメモリ回路の入力部51に直接的に接続されてもよいし、あるいは、信号線24の途中、例えば、8R/Wメモリ回路の入力部51の直前(一点鎖線Aと信号線24との交差位置)に設けたセレクタのような選択手段を介してそれらに間接的に接続されていてもよい。選択手段には、外部データのための信号線とループ状の信号線24の双方が接続され、いずれかの一方の信号線だけが選択されるようになっている。選択手段を用いた場合には、外部データのための信号線と信号線24の競合を効果的に防止することができる。
【0069】
8R/Wメモリ回路の動作は、DCTプロセッサの外部からのデータ、つまり入力手段からのデータを処理する場合と、DCTプロセッサの内部からのデータを処理する場合とで異なる。便宜上、本明細書では、前者の場合の8R/Wメモリ回路の動作を「第1の動作モード」(請求項中の「第1の動作モード」に対応)、後者の場合の8R/Wメモリ回路の動作を「第2の動作モード」(請求項中の「第2の動作モード」に対応)と呼んで区別する。ここで、第1の動作モードでは、DCTプロセッサ以外(FIFO以外)からのデータを8R/Wメモリ回路に書き込んだ後にそれらのデータを出力し、第2の動作モードでは、DCTプロセッサ(FIFO)からのデータを8R/Wメモリ回路に書き込んだ後にそれらのデータを出力することになる。尚、上述した選択手段が使用されている場合には、第1の動作モードでは、外部データのための信号線を選択してCPU等からのデータを8R/Wメモリ回路に伝送するように、一方、第2の動作モードでは、信号線24を選択してFIFOからのデータを8R/Wメモリ回路に伝送するように、選択手段は適宜に切り換えられることになる。
【0070】
第1の動作モードの場合、データは入力手段(図示されていない)からのものであり、したがって、クロス部4、4’(図1参照)を介さずに、また、データの対応付けを変更しないで8R/Wメモリ回路に書き込まれる。一方、第2の動作モードの場合、データはFIFO5からのものであり、クロス部4、4’で並び替えが行われた後に、データの対応付けを変更するようにして8R/Wメモリに書き込まれる。この結果、第2の動作モードの場合においては、8R/Wメモリ回路から出力されるデータにパームテーションが行われることになる。
【0071】
更に説明すると、第1の動作モードの場合、データの書き込み位置は、各メモリブロック0〜31に付した0〜31の番号に従う。つまり、データ[0]はメモリブロック0に、[1]はメモリブロック1に、[2]はメモリブロック2に…といった具合に対応させる。この結果、第1の動作モードの場合、第1フェーズで読み出されるデータは、書き込みを行う前の[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]にそれぞれ対応するデータ[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]となり、第2フェーズで読み出されるデータは、書き込みを行う前の[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]にそれぞれ対応する[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]となり、また、第3フェーズで読み出されるデータは、書き込みを行う前の[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]にそれぞれ対応するデータ[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]となり、更に、第4フェーズで読み出されるデータは、書き込みを行う前の[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]にそれぞれ対応するデータ[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]となる。従って、この第1の動作モードでは、単に読み出されるべきデータの順番が制御されるだけである。
【0072】
一方、第2の動作モードの場合、データは、FIFOと8R/Wメモリ回路の間に設けたクロス部4、4’(図1参照)によって並び替えが行われた後に、データの対応付けを変更するようにして8R/Wメモリへ書き込まれる。この結果、データの書き込み位置は、必ずしも各メモリブロックに付した0〜31の数字に従わない。従って、この第2の動作モードでは、データの対応付けが変更された上で、つまりデータにパームテーションが行われた上で、読み出されるべきデータの順番が制御されることになる。
【0073】
図5に、パームテーションを実行することによって得られる効果を視覚的に示している。この図において、[]で囲まれていない数字は、メモリブロックの番号0〜31である。この図から明らかなように、例えば、左側に示した元のデータ[0]〜[31]は、パームテーションを行うことによって右側に示した[0]、[2]、[4]、[6]、[8]、[10]…にそれぞれ対応付けされることになる。更に言えば、パームテーション前の[0]、[2]、[4]、[6]、[8]、[10]…はそれぞれ、パームテーション後は、メモリブロック0、1、2、3…におけるデータ、つまり[0]、[1]、[2]、[3]…となるということである。
【0074】
図3を参照して更に詳細に説明する。パームテーションを行う前の第1フェーズのデータ[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]は、先ず、クロス部4、4’によって[0]、[2]、[1]、[3]、[12]、[14]、[13]、[15]の順に並び替えられ(図3の56参照)、その後、書き込みライン52a、52dをイネイブルすることによって、メモリブロック0、1、16、17と、6、7、22、23にそれぞれ書き込まれるため、これらのメモリブロックから[0]、[1]、[16]、[17]、[6]、[7]、[22]、[2]として読み出されることになる。つまり、パームテーションを行うことによって、元の[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]はそれぞれ、[0]、[16]、[1]、[17]、[6]、[22]、[7]、[23]にそれぞれ対応付けされたことになる。
【0075】
同様に、パームテーションを行う前の第2フェーズのデータ[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]は、先ず、クロス部4、4’によって[4]、[6]、[5]、[7]、[8]、[10]、[9]、[11]の順に並び替えられ(図3の56参照)、その後、書き込みライン52e、52hをイネイブルすることによって、メモリブロック2、3、18、19と、4、5、20、21にそれぞれ書き込まれるため、これらのメモリブロックから[2]、[3]、[18]、[19]、[4]、[5]、[20]、[21]として読み出されることになる。つまり、パームテーションを行うことによって、元の[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]はそれぞれ、[2]、[18]、[3]、[19]、[5]、[4]、[20]、[21]にそれぞれ対応付けされたことになる。
【0076】
また、パームテーションを行う前の第3フェーズの[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]は、先ず、クロス部4、4’によって[16]、[18]、[17]、[19]、[28]、[30]、[29]、[31]の順に並び替えられ(図3の56参照)、その後、書き込みライン52b、52cをイネイブルすることによって、メモリブロック8、9、24、25と、14、15、30、31にそれぞれ書き込まれるため、これらのメモリブロックから[8]、[9]、[24]、[25]、[14]、[15]、[30]、[31]として読み出されることになる。つまり、パームテーションを行うことによって、元の[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]はそれぞれ、[8]、[24]、[9]、[25]、[14]、[30]、[15]、[31]にそれぞれ対応付けされたことになる。
【0077】
更に、パームテーションを行う前の第4フェーズの[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]は、先ず、クロス部4、4’によって[20]、[22]、[21]、[23]、[24]、[26]、[25]、[27]の順に並び替えられ(図3の56参照)、その後、書き込みライン52g、52hをイネイブルすることによって、メモリブロック10、11、26、27、12、13、28、29にそれぞれ書き込まれるため、これらのメモリブロックから[10]、[11]、[26]、[27]、[12]、[13]、[28]、[29]として読み出されることになる。つまり、パームテーションを行うことによって、元の[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]はそれぞれ、[10]、[26]、[11]、[27]、[12]、[28]、[13]、[29]にそれぞれ対応付けされたことになる。
【0078】
2.DCTプロセッサの動作
図6に、本発明によるDCTプロセッサ1とその周辺機器(図示されていない)によって行われる離散コサイン変換処理のシーケンスフローを、また、図7に、この処理によって生じるデータのデータフローを表すデータフローグラフを、それぞれ示す。尚、図7の上部に示したステップ(ST)の番号は、図6のそれに対応する。
【0079】
尚、本発明のDCTプロセッサ1によって行われる処理は、図6に示したステップ1〜11のうち、ステップ3〜10のみである。残りのステップ1、2、11は、例えばCPU等の周辺機器によって行われることになっている。換言すれば、最終的な離散コサイン変換の結果を得るには、本発明のDCTプロセッサ1による処理に加えて更にステップ1、2、11の処理を行う周辺機器が必要、ということである。但し、設計変更によって、これらの処理を本発明のDCTプロセッサ1が行うようにしてもよい。
【0080】
ステップ1で、先ず、離散コサイン変換を実行すべきデータを32個のサンプリングポイントでサンプリングし、32個のサンプリングデータ[0]〜[31]を得る。
【0081】
ステップ2で、これらのサンプリングデータを、図7に示す順番に並び替える。この並び替えは、その後の処理を適切に行うために必要とされる処理である。この並び替えにより、データは[0]、[1]、[31]、[30]…の順に並び替えられる。
【0082】
次いで、ステップ3で、これらのデータを第1の動作モードで動作する8R/Wメモリ回路5のメモリブロック0〜31に書き込み且つ読み出す。尚、ここでの書き込みは、例えばCPU等から行われるものであってFIFO5(図1参照)から行われるものでないため、クロス部4、4’による並び替えはない。また、この場合、各データは、[0]、[1]、[31]、[30]…のそれぞれの数字に対応するメモリブロックに書き込まれる。つまり、[0]はメモリブロック0に、[1]はメモリブロック1に、[31]はメモリブロック31…といった具合である。これらの書き込みと読み出しにより、8R/Wメモリ回路5から出力されるデータは、図3を参照して説明したように、対応付けを何ら変更されることなく、第1フェーズにおいては、[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]となり、第2フェーズにおいては、[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]、第3フェーズにおいては、[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]、第4フェーズにおいては、[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]となる。
【0083】
次いで、ステップ4で、これらのデータは2個のDCT回路3、3’(図1参照)によって処理される(ST4)。図1から明らかなように、8R/Wメモリ回路5の8個の各出力部は、2個のDCT回路3、3’の4個の入力部にそれぞれ対応して接続されているから、8R/Wメモリ回路5によって、第1フェーズで読み出されたデータのうちの[0]、[1]、[2]、[3]はDCT回路3で、一方、[12]、[13]、[14]、[15]はDCT回路3’で処理される。同様に、第2フェーズで読み出されたデータのうちの[4]、[5]、[6]、[7]はDCT回路3で、一方、[8]、[9]、[10]、[11]はDCT回路3’で処理される。また、第3フェーズで読み出されたデータのうちの[16]、[17]、[18]、[19]はDCT回路3で、一方、[28]、[29]、[30]、[31]はDCT回路3’で処理される。更に、第4フェーズで読み出されたデータのうちの[20]、[21]、[22]、[23]はDCT回路3で、一方、[24]、[25]、[26]、[27]はDCT回路3’で処理される。
【0084】
尚、図7では、各DCT回路3、3’で処理されるデータを明らかにするため、1個のDCT回路3、3’によって処理されるデータ範囲を四角で囲っている。上の記載からも明らかなように、各四角において4個のデータが処理される。
【0085】
ここで、各四角内の<n>(nは1〜4の整数)は、それらのデータがフェーズ1〜4でそれぞれ処理されることを意味する。例えば、<1>が付された四角は2つあるが、これらは、第1フェーズで処理されることを意味し、また、それらで各々処理されるデータは[0]〜[4]あるいは[12]〜[15]であり、それぞれ、DCT回路3とDCT回路3’によって処理されることを意味する。同様に、<2>が付された2つの四角は、第2フェーズで処理されることを意味し、また、そのとき処理されるデータは[4]〜[7]あるいは[8]〜[11]であり、それぞれ、DCT回路3とDCT回路3’によって処理されることを意味する。また、<3>が付された2つの四角は、第3フェーズで処理されることを意味し、また、そのとき処理されるデータは[16]〜[19]あるいは[27]〜[31]であり、それぞれ、DCT回路3とDCT回路3’によって処理されることを意味する。同様に、<4>が付された四角も2つあるが、これらは、第4フェーズで処理されることを意味し、また、そのとき処理されるデータは[20]〜[23]あるいは[24]〜[27]であり、それぞれ、DCT回路3とDCT回路3’によって処理されることを意味する。
【0086】
更に、各四角内のmode(モード)n(nは0〜2の整数)は、各DCT回路3、3’によって使用されるモードを表し、また、d(n)(nは1から31までの整数)は、各DCT回路3、3’の乗算器36a、36b(図1参照)でそれぞれ使用される乗算の係数を表している。例えば、第1フェーズにおいて、DCT回路3はモード0の機能素子(図2のa)参照)として機能し、このモード0における機能素子の乗算器36aは、d(16)という係数を用い、また、乗算器36bはd(24)という係数を用い、一方、同じく第1フェーズにおいて、DCT回路3’はモード0の機能素子(図2のa)参照)として機能し、このモード0における機能素子の乗算器36aはd(19)という係数を用い、また、乗算器36bはd(27)という係数を用いる、といった具合である。
【0087】
その後、ステップ5で、各DCT回路3、3’で処理された8個のデータは、FIFO7(図1参照)に順次に書き込まれ、32個全てのデータが書き込まれた後に、再び、順次に読み出される。このとき読み出されるデータは、第1フェーズにおいては、[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]、第2フェーズにおいては、[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]、第3フェーズにおいては、[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]、第4フェーズにおいては、[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]に対応する。
【0088】
次いで、ステップ6で、クロス部4、4’(図1参照)によってデータの並び替えが行われる。この並び替えにより、FIFOからのデータは、図3の56で示すような順番となる。即ち、第1フェーズのデータは、[0]、[2]、[1]、[3]、[12]、[14]、[13]、[15]、第2フェーズのデータは、[4]、[6]、[5]、[7]、[8]、[10]、[9]、[11]、第3フェーズのデータは、[16]、[18]、[17]、[19]、[28]、[30]、[29]、[31]、第4フェーズのデータは、[20]、[22]、[21]、[23]、[24]、[26]、[25]、[27]である。
【0089】
次いで、ステップ7で、FIFO7から読み出されたデータは、第2の動作モードで動作する8R/Wメモリ回路5(図1)に戻され(回路動作としては、ループされということになる)、そこに書き込まれ且つ読み出される。この結果、パームテーションが行われ、第1フェーズのデータ[0]、[1]、[2]、[3]、[12]、[13]、[14]、[15]はそれぞれ、[0]、[16]、[1]、[17]、[6]、[22]、[7]、[23]に対応付けされることとなり、また、第2フェーズのデータ[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]はそれぞれ、[2]、[18]、[3]、[19]、[5]、[4]、[20]、[21]に対応付けされるることとなり、また、第3フェーズのデータ[16]、[17]、[18]、[19]、[28]、[29]、[30]、[31]はそれぞれ、[8]、[24]、[9]、[25]、[14]、[30]、[15]、[31]に対応付けされることとなり、更に、第4フェーズのデータ[20]、[21]、[22]、[23]、[24]、[25]、[26]、[27]はそれぞれ、[10]、[26]、[11]、[27]、[12]、[28]、[13]、[29]に対応付けされることとなる。
【0090】
次いで、ステップ8で、パームテーションが行われたデータを、再び、DCT回路3、3’で処理する。この処理は、ステップ4で述べたのと同様である。
【0091】
次いで、ステップ9で、DCT回路3、3’からのデータを、再び、FIFO7で処理する。この処理は、ステップ5で述べたのと同様である。
【0092】
次いで、ステップ10で、再びクロス部4、4、’(図1参照)によって並び替えが行われる。この処理は、ステップ6で述べたのと同様である。
【0093】
その後、ステップ7〜ステップ10の処理を更に3回反復(回路動作で言えば「ループ」)する。この結果、ステップ7〜10の処理を計4回反復することになる(但し、以下の記述や図6から明らかなように、4回目のループ時におけるステップ10の処理は、最終結果とは無関係であるため省略してよい)。
【0094】
最後に、ステップ11で、4回目のループ終了時に、ステップ9の処理後に得られたデータ、つまりFIFO7(図1参照)からのデータを[0]、[4]、[8]、[12]…の順番に並び替えるとともに、データ[0]についてはd(1)(つまり、√(0.5))の係数により乗算を行う。これらの処理は、最終結果を望ましい形で得るために必要とされる処理である。
【0095】
B.第2の実施形態
再び図1を参照して、本発明の第2の実施形態について説明する。この第2の実施形態は、DCTプロセッサの外部から内部にデータを入力する入力手段(図示されていない)を、8R/Wメモリ回路5とDCT回路3、3’との間(一点鎖線Bと信号線24との交差位置)に設けるもの、としたものである。
【0096】
この結果、この第2の実施形態では、第1の実施形態と異なり、DCTプロセッサの外部からのデータが、8R/Wメモリ回路5を介さずにDCT回路3、3’に直接付与されることになる。しかしながら、この場合にも、DCT回路3、3’に付与されるデータは、8R/Wメモリ回路5を介したデータと同じもの、更に言えば、第1の動作モードの8R/Wメモリ回路で処理されたデータと同じものとする必要がある。このため、この第2の実施形態では、データを予めCPU等で処理するものとする。
【0097】
明らかなように、第2の実施形態では、8R/Wメモリ回路5を第1の動作モードで処理させる必要はない。別の言い方をすれば、第2の実施形態では、8R/Wメモリ回路5を上述した第2の動作モードでのみ動作させるだけでよい。したがって、第2の実施形態によれば、第1の実施形態に比べて、CPU等によって行われる処理が多少多くなるものの、8R/Wメモリ5を単一の動作モード(第2の動作モード)でのみ動作させればよいため、8R/Wメモリ回路の制御や構成をより簡易なものとすることができる。これに対し、第1の実施形態では、第2の実施形態に比べて、8R/Wメモリ回路5の制御や構成が多少複雑になるものの、CPU等によって行われる処理を少なくすることができる点で有利である。
【0098】
C.第3の実施形態
本発明の第3の実施形態は、入力手段をDCT回路3、3’とFIFO7との間(一点鎖線Cと信号線24との交差位置)に設けるもの、としたものである。
【0099】
この結果、この第3の実施形態では、DCTプロセッサの外部からのデータは、8R/Wメモリ回路5やDCT回路3、3’を介さずにFIFO7に直接付与されることになる。しかしながら、この場合にも、FIFO5に付与されるデータは、8R/Wメモリ回路5やDCT回路3、3’を介したデータと同じもの、更に言えば、第1の動作モードの8R/Wメモリ回路とDCT回路3、3’で処理されたデータと同じものとする必要がある。この処理はCPU等によって行うことができる。
【0100】
明らかなように、第3の実施形態でも、第2の実施形態と同様に、8R/Wメモリ回路5を第1の動作モードで処理させる必要はない。よって、第2の実施形態で述べたものと同様の利点と欠点を有することになる。
【0101】
D.DCTプロセッサの性能
下の表に、本発明のDCTプロセッサの性能と従来装置であるLippen等によるDCTプロセッサのそれとを比較した比較結果を示す。
【0102】
【0103】
ここで、表中の「1つのサンプリングポイントを計算するに必要な算術演算器の数」とは、図6に記載された算術演算器、即ち、加算・減算器と乗算器の数を意味する。本発明では、各DCT回路3、3’に8個ずつ設けられているから計16個である。また、「1サイクル毎に発生する中間出力値の数」とは、DCT回路による1回の計算で発生し得る値の数であり、本発明では32個のサンプリングポイントを4回に分けて計算するから、8個ということになる。更に、「レジスタファイル(データの蓄積装置)の数」とは、計算結果を記憶させるための装置の数を意味し、本発明ではFIFO7と8R/Wメモリ回路5ということになるから2個である。「DCTの推定コア領域」とは、DCTプロセッサ1に必要な面積である。「出力レイテンシイ」は、出力結果を得るまでの平均時間である。
【0104】
上の表より明らかなように、例えば、メモリブロック等の周辺ロジックに必要な面積に関して、本発明のDCTプロセッサ1は、Lippenのアルゴリズムによるプロセッサで必要とされる面積の約半分ほどで足りる。また、出力レイテンシイ(遅延)について言えば、本発明のDCTプロセッサは、Lippenのプロセッサのそれの約1/4程で足りる。このように、本発明のDCTプロセッサは優れた性能を発揮する。
【0105】
最後に、上の実施形態では、FIFOからのデータを並び替えるためにクロス部を用いているが、例えば、クロスバースイッチを用いても良い。また、クロス部を、FIFOの出力部や8R/Wメモリ回路の入力部(8R/Wメモリ回路の内部)に設けても良い。必要なことは、8R/Wメモリ回路によるパームテーションが行われるよう、8R/Wメモリ回路のメモリブロックに書き込みを行う前に並び替えを行わなければならないことだけである。
【0106】
【発明の効果】
本発明によれば、8R/Wメモリ回路によってリソースシェアリングが促進されることから信号のパームテーション(置き換え)の複雑さが解消され、これによって、必要とされる部材数の減少、ファンクションブロックエリアの減少、消費電力の減少、更に、処理スピードの高速化、あるいは、出力レイテンシイの減少を図ることができる。
【図面の簡単な説明】
【図1】本発明によるDCTプロセッサのブロック図である。
【図2】DCT回路の機能素子の各機能を説明する図である。
【図3】8R/Wメモリ回路のブロック図を示す図である。
【図4】8R/Wメモリ回路の回路図である。
【図5】パームテーションを実行することによって得られる効果を視覚的に示した図である。
【図6】離散コサイン変換処理のシーケンスフローを示す図である。
【図7】離散コサイン変換処理によって生じるデータのデータフローを表すデータフローグラフである。
Claims (17)
- 離散コサイン変換を実行するために用いるDCTプロセッサにおいて、
データにパームテーションを行う記憶・処理装置と、
所定のDCTアルゴリズムに従って計算を行う計算装置と、を備え、
前記記憶・処理装置と前記計算装置との間でデータを所定回数ループさせ、前記計算装置から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴とするDCTプロセッサ。 - 離散コサイン変換を実行するために用いるDCTプロセッサにおいて、
複数の入力部と複数の出力部とを有し、前記複数の入力部を通じて入力される複数のデータにパームテーションを行った後に前記複数の出力部から出力する、前記記憶・処理装置と、
前記記憶・処理装置の出力部に接続された複数の入力部と複数の出力部とを有し、前記複数の入力部から入力されたデータを所定のDCTアルゴリズムに従って計算し前記複数の出力部から出力する計算装置と、
前記計算装置の出力部に接続された複数の入力部と前記記憶・処理装置の入力部に接続された複数の出力部とを有し、前記計算装置の出力部から出力された複数のデータを記憶し前記複数の出力部から出力する記憶装置と、
前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と、を備え、
前記記憶装置の出力部から出力された複数のデータを、前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間を所定回数ループさせ、前記記憶装置の出力部から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴とするDCTプロセッサ。 - 32個のサンプリングポイントでサンプリングすることによって得られた32個のデータに対して離散コサイン変換を行う32ポイントDCTプロセッサにおいて、
8個の入力部と8個の出力部とを有し、一度に8個ずつ計4回、計32個のデータを入力し且つ出力することができる、記憶・処理装置であって、前記8個の入力部を通じて一度に8個ずつ計4回、順次に所定の記憶位置に書き込まれた計32個のデータを前記8個の出力部に所定の順番で出力する、前記記憶・処理装置と、
各々が、前記記憶・処理装置の8個の出力部のうちの4個の出力部にそれぞれ接続された4個の入力部と4個の出力部とを有し、前記8個の入力部から入力されたデータを一度に4個ずつCGA−DCTアルゴリズムに従って計算し、前記4個の出力部からそれぞれ出力する、2個の計算装置と、
前記2個の計算装置の計8個の出力部にそれぞれ接続された8個の入力部と前記記憶・処理装置の計8個の入力部にそれぞれ接続された8個の出力部とを有し、一度に8個ずつ計4回、計32個のデータを先入れ先出し方式で書き込み且つ読み出すことができる、記憶装置であって、前記計算装置の各出力部から出力された計8個のデータを計4回、計32個のデータを記憶する、前記記憶装置と、
前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と、
を備えることを特徴とするDCTプロセッサ。 - 請求項3記載のDCTプロセッサにおいて、更に、前記DCTプロセッサの外部から内部にデータを入力する入力手段が、前記記憶・処理装置の直前に設けられているDCTプロセッサ。
- 請求項4記載のDCTプロセッサにおいて、前記記憶・処理装置は、前記データを前記所定の記憶位置に書き込む際、前記入力されるデータと前記出力されるデータとの対応付けを変更しない第1の動作モードと、前記入力されるデータと前記出力されるデータとの対応付けを変更する第2の動作モードのいずれかで動作するものであって、前記入力手段からのデータは前記第1の動作モードで処理される、DCTプロセッサ。
- 請求項5記載のDCTプロセッサにおいて、前記第1の動作モードで動作する記憶・処理装置で処理された計32個のデータを、前記計算装置、前記記憶装置で順に処理し、その後、前記記憶装置の出力部から読み出された計32個のデータを、前記並び替え手段で処理した後に、前記第2の動作モードで動作する前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間をループさせ、4回目のループ時に前記記憶装置の出力部から読み出されたデータに基づいて、前記データを離散コサイン変換したときの結果を求めるDCTプロセッサ。
- 請求項3記載のDCTプロセッサにおいて、更に、前記DCTプロセッサの外部から内部にデータを入力する入力手段が、前記記憶・処理装置と前記計算装置の間に設けられているDCTプロセッサ。
- 請求項3記載のDCTプロセッサにおいて、更に、前記DCTプロセッサの外部から内部にデータを入力する入力手段が、前記計算装置と前記記憶装置の間に設けられているDCTプロセッサ。
- 請求項3に記載のDCTプロセッサにおいて、前記記憶・処理装置は、計32個の記憶位置を有しており、前記32個のデータは、これら32個のいずれかの記憶位置に1つずつ書き込み且つ読み出されるDCTプロセッサ。
- 請求項9記載のDCTプロセッサにおいて、前記32個の記憶位置の各々に書き込みラインと読み出しラインが設けられており、これら書き込みラインと読み出しラインは互いに垂直に配線され、データの書き込み及び読み出し時に共用されないDCTプロセッサ。
- 請求項3乃至10のいずれかに記載のDCTプロセッサにおいて、前記所定の並び替えは、前記記憶装置と前記記憶・処理装置との間の伝送線をクロスさせることによって行うDCTプロセッサ。
- 請求項3乃至11のいずれかに記載のDCTプロセッサにおいて、計32個のデータを前記8個の出力部に所定の順番で出力するために並び替え装置を用いるDCTプロセッサ。
- 請求項3乃至12のいずれかに記載のDCTプロセッサにおいて、前記記憶・処理装置は8R/Wメモリ回路であり、前記計算装置はDCT回路であり、前記記憶装置はFIFOであるDCTプロセッサ。
- 請求項3乃至13のいずれかに記載のDCTプロセッサにおいて、前記並び替え手段は記憶・処理装置に設けられているDCTプロセッサ。
- 離散コサイン変換を実行するために用いるDCTプロセッサで使用する記憶・処理装置であって、所定のDCTアルゴリズムに従って計算を行う計算装置との間でデータを所定回数ループさせ、前記計算装置から読み出されたデータに基づいて離散コサイン変換の結果を求めるようにデータにパームテーションを行うことを特徴とする記憶・処理装置。
- 離散コサイン変換を実行するために用いるDCTプロセッサで使用する記憶・処理装置であって、該記憶・処理装置は、複数の入力部と複数の出力部とを有し、前記複数の入力部を通じて入力される複数のデータにパームテーションを行った後に前記複数の出力部から出力するものであり、
前記DCTプロセッサは、更に、
前記記憶・処理装置の出力部に接続された複数の入力部と複数の出力部とを有し、前記複数の入力部から入力されたデータを所定のDCTアルゴリズムに従って計算し前記複数の出力部から出力する計算装置と、
前記計算装置の出力部に接続された複数の入力部と前記記憶・処理装置の入力部に接続された複数の出力部とを有し、前記計算装置の出力部から出力された複数のデータを記憶し前記複数の出力部から出力する記憶装置と、
前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と、を備え、
前記記憶装置の出力部から出力された複数のデータを、前記記憶・処理装置、前記計算装置、前記記憶装置、及び前記並び替え手段で、これらの順にそれらの間を所定回数ループさせ、前記記憶装置の出力部から読み出されたデータに基づいて離散コサイン変換の結果を求めることを特徴とする記憶・処理装置。 - 32個のサンプリングポイントでサンプリングすることによって得られた32個のデータに対して離散コサイン変換を行う32ポイントDCTプロセッサで使用する記憶・処理装置であって、該記憶・処理装置は、8個の入力部と8個の出力部とを有し、一度に8個ずつ計4回、計32個のデータを入力し且つ出力することができ、前記8個の入力部を通じて一度に8個ずつ計4回、順次に所定の記憶位置に書き込まれた計32個のデータを前記8個の出力部に所定の順番で出力するものであり、
前記DCTプロセッサは、更に、
各々が、前記記憶・処理装置の8個の出力部のうちの4個の出力部にそれぞれ接続された4個の入力部と4個の出力部とを有し、前記8個の入力部から入力されたデータを一度に4個ずつCGA−DCTアルゴリズムに従って計算し、前記4個の出力部からそれぞれ出力する、2個の計算装置と、
前記2個の計算装置の計8個の出力部にそれぞれ接続された8個の入力部と前記記憶・処理装置の計8個の入力部にそれぞれ接続された8個の出力部とを有し、一度に8個ずつ計4回、計32個のデータを先入れ先出し方式で書き込み且つ読み出すことができる、記憶装置であって、前記計算装置の各出力部から出力された計8個のデータを計4回、計32個のデータを記憶する、前記記憶装置と、
前記記憶装置と前記記憶・処理装置との間に設けられ、前記記憶装置からのデータを所定の順番に並び替える、並び替え手段と、
を備えることを特徴とする記憶・処理装置。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002189382A JP2005309474A (ja) | 2002-06-28 | 2002-06-28 | 離散コサイン変換(dct)を実行するために用いるdctプロセッサ |
AU2003244151A AU2003244151A1 (en) | 2002-06-28 | 2003-06-27 | Dct processor for executing discrete cosine transform (dct) |
EP03761831A EP1538532A1 (en) | 2002-06-28 | 2003-06-27 | Dct processor for executing discrete cosine transform (dct) |
PCT/JP2003/008222 WO2004003785A1 (ja) | 2002-06-28 | 2003-06-27 | 離散コサイン変換(dct)を実行するために用いるdctプロセッサ |
CNA038180944A CN1672148A (zh) | 2002-06-28 | 2003-06-27 | 用于执行离散余弦变换的离散余弦变换处理器 |
US11/023,954 US20050240643A1 (en) | 2002-06-28 | 2004-12-28 | DCT processor used for implementing discrete cosine transform (DCT) |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002189382A JP2005309474A (ja) | 2002-06-28 | 2002-06-28 | 離散コサイン変換(dct)を実行するために用いるdctプロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005309474A true JP2005309474A (ja) | 2005-11-04 |
Family
ID=29996843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002189382A Pending JP2005309474A (ja) | 2002-06-28 | 2002-06-28 | 離散コサイン変換(dct)を実行するために用いるdctプロセッサ |
Country Status (6)
Country | Link |
---|---|
US (1) | US20050240643A1 (ja) |
EP (1) | EP1538532A1 (ja) |
JP (1) | JP2005309474A (ja) |
CN (1) | CN1672148A (ja) |
AU (1) | AU2003244151A1 (ja) |
WO (1) | WO2004003785A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140089955A (ko) * | 2013-01-08 | 2014-07-16 | 주식회사 엘지화학 | 배터리 팩에 포함된 다수의 배터리 셀에 대한 전압 데이터 관리 장치 및 방법 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4996661A (en) * | 1988-10-05 | 1991-02-26 | United Technologies Corporation | Single chip complex floating point numeric processor |
JP2957845B2 (ja) * | 1993-05-19 | 1999-10-06 | 富士通株式会社 | 高速フーリエ変換装置 |
US5408425A (en) * | 1993-05-25 | 1995-04-18 | The Aerospace Corporation | Split-radix discrete cosine transform |
JP2662501B2 (ja) * | 1994-02-18 | 1997-10-15 | ホアバンティエンツーグーフウンユーシェンコンシー | 離散的コサイン変換及び逆変換のための集積回路プロセッサ |
US5831881A (en) * | 1994-12-02 | 1998-11-03 | Sican Gmbh | Method and circuit for forward/inverse discrete cosine transform (DCT/IDCT) |
US5671169A (en) * | 1995-06-23 | 1997-09-23 | United Microelectronics Corporation | Apparatus for two-dimensional inverse discrete cosine transform |
US6421695B1 (en) * | 1995-10-28 | 2002-07-16 | Lg Electronics Inc. | Apparatus for implementing inverse discrete cosine transform in digital image processing system |
JP3821316B2 (ja) * | 1996-08-06 | 2006-09-13 | ソニー株式会社 | 演算装置および方法 |
US5909572A (en) * | 1996-12-02 | 1999-06-01 | Compaq Computer Corp. | System and method for conditionally moving an operand from a source register to a destination register |
US6246396B1 (en) * | 1997-04-30 | 2001-06-12 | Canon Kabushiki Kaisha | Cached color conversion method and apparatus |
US6343304B1 (en) * | 1999-03-09 | 2002-01-29 | National Science Council | Apparatus with selective fixed-coefficient filter for performing recursive discrete cosine transforms |
JP2002117015A (ja) * | 2000-10-06 | 2002-04-19 | Takuro Sato | 高速フーリエ変換回路 |
US6996595B2 (en) * | 2001-05-16 | 2006-02-07 | Qualcomm Incorporated | Apparatus and method for consolidating output data from a plurality of processors |
-
2002
- 2002-06-28 JP JP2002189382A patent/JP2005309474A/ja active Pending
-
2003
- 2003-06-27 CN CNA038180944A patent/CN1672148A/zh active Pending
- 2003-06-27 AU AU2003244151A patent/AU2003244151A1/en not_active Abandoned
- 2003-06-27 WO PCT/JP2003/008222 patent/WO2004003785A1/ja active Application Filing
- 2003-06-27 EP EP03761831A patent/EP1538532A1/en not_active Withdrawn
-
2004
- 2004-12-28 US US11/023,954 patent/US20050240643A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140089955A (ko) * | 2013-01-08 | 2014-07-16 | 주식회사 엘지화학 | 배터리 팩에 포함된 다수의 배터리 셀에 대한 전압 데이터 관리 장치 및 방법 |
KR101599998B1 (ko) | 2013-01-08 | 2016-03-04 | 주식회사 엘지화학 | 배터리 팩에 포함된 다수의 배터리 셀에 대한 전압 데이터 관리 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP1538532A1 (en) | 2005-06-08 |
US20050240643A1 (en) | 2005-10-27 |
CN1672148A (zh) | 2005-09-21 |
WO2004003785A1 (ja) | 2004-01-08 |
AU2003244151A1 (en) | 2004-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102614616B1 (ko) | 동형 암호화에 의한 보안 계산 가속화를 위한 동형 처리 유닛(hpu) | |
JP4104538B2 (ja) | リコンフィギュラブル回路、リコンフィギュラブル回路を備えた処理装置、リコンフィギュラブル回路における論理回路の機能決定方法、回路生成方法および回路 | |
JP4900717B2 (ja) | 再構成可能な装置 | |
US10572225B1 (en) | Circuit arrangements and methods for performing multiply-and-accumulate operations | |
JP5601327B2 (ja) | データ並べ替え回路、可変遅延回路、高速フーリエ変換回路、およびデータ並べ替え方法 | |
JP6907700B2 (ja) | 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム | |
Dann et al. | GraphScale: Scalable bandwidth-efficient graph processing on FPGAs | |
US7114061B2 (en) | Information processing apparatus with configurable processor | |
KR20200013715A (ko) | 사전 프로그래밍 된 함수를 갖는 고속 컴퓨터 가속기 | |
JP2005309474A (ja) | 離散コサイン変換(dct)を実行するために用いるdctプロセッサ | |
US20070198811A1 (en) | Data-driven information processor performing operations between data sets included in data packet | |
KR20200110165A (ko) | 뉴럴 네트워크의 레이어들의 처리에서 제로 값(zero value)의 연산을 처리하는 방법 및 장치 | |
US20040250048A1 (en) | Information processing device and machine language program converter | |
WO2015087497A1 (ja) | 高速フーリエ変換装置、高速フーリエ変換方法、及び高速フーリエ変換プログラムが記憶された記憶媒体 | |
JP2009175861A (ja) | 値選択回路 | |
JP2888206B2 (ja) | データ処理装置 | |
US10409761B2 (en) | Parallel computer system, arithmetic method, and storage medium | |
Miura et al. | Efficient FPGA Implementation of a Convolutional Neural Network for Surgical Image Segmentation Focusing on Recursive Structure | |
JP7150668B2 (ja) | 高位合成装置及び高位合成方法 | |
US11327677B1 (en) | Data mover circuitry for N-dimensional data in an integrated circuit | |
JP2004334297A (ja) | 並列演算処理装置及び並列演算処理方法 | |
TW201137740A (en) | A near optimal configurable adder tree for arbitrary shaped 2D block sum of absolute differences (SAD) calculation engine | |
JP7140201B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP7157457B2 (ja) | データ処理装置 | |
JP4330472B2 (ja) | 処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070226 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070528 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070531 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080407 |