JP4482996B2 - Data storage apparatus and method and image processing apparatus - Google Patents

Data storage apparatus and method and image processing apparatus Download PDF

Info

Publication number
JP4482996B2
JP4482996B2 JP2000021836A JP2000021836A JP4482996B2 JP 4482996 B2 JP4482996 B2 JP 4482996B2 JP 2000021836 A JP2000021836 A JP 2000021836A JP 2000021836 A JP2000021836 A JP 2000021836A JP 4482996 B2 JP4482996 B2 JP 4482996B2
Authority
JP
Japan
Prior art keywords
data
address
storage
stored
input
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.)
Expired - Fee Related
Application number
JP2000021836A
Other languages
Japanese (ja)
Other versions
JP2001209811A (en
Inventor
武司 猿谷
篤史 成田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2000021836A priority Critical patent/JP4482996B2/en
Publication of JP2001209811A publication Critical patent/JP2001209811A/en
Application granted granted Critical
Publication of JP4482996B2 publication Critical patent/JP4482996B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、複数系統のデータに対する先入れ先出し形式(以降、FIFO(First In First Out)形式と言う。)のデータ記憶装置とデータ記憶方法、および、そのデータ記憶装置を用いて表示用画像の生成を効率よく行うことのできる画像処理装置に関する。
【0002】
【従来の技術】
入力したデータを入力した順に読み出すいわゆるFIFOメモリは、種々の電子回路において広く使用されている。特に近年、あらゆる電子機器において処理速度の向上が図られているため、結果的に各処理部間でのデータの処理速度に差異が生じたり、適切に同期をとってデータを転送することが難しくなるなどの問題が生じており、これを解決するために、各処理部間に緩衝手段としてFIFOメモリを設けることが多くなっている。
たとえば、CAD装置やゲーム機器などに用いられる3次元画像を生成する画像処理装置などは、座標変換やテクスチャマッピング、各画素に対する特殊効果処理、生成した画像の高速表示など、多数の画素に対して高速に処理を行う各種の処理部が順次接続されて構成されている。そして、これらの各処理部の間におけるデータ転送を高速かつ適切に行うために、FIFOメモリが多数使用されている。
【0003】
【発明が解決しようとする課題】
ところで、たとえばそのような画像処理装置の各構成部間においては、複数種類のデータが必要に応じて転送される場合が多い。特に、画像データのみならず制御データまでをも含めると、特定の1種類のデータのみが転送されるということは稀と考えられる。そのような場合に、これまでは、たとえば図7に示すように、そのデータの種類(データの系統と言う場合もある。)に応じて複数系統のFIFOメモリが並列に設けられていた。
しかし、そのように複数のFIFOメモリを並列に設けると、各系統ごとにマージンを確保しなければならなかったり、共通的な信号処理が多いにも係わらず制御部を独立して設けることになるなど、回路を効率よく利用することができない、すなわち、必要以上に回路規模が大きくなるという問題がある。
特に、このような回路は、半導体集積回路として実現する場合が多いため、回路規模、換言すれば回路のゲート規模を少しでも小さくしたいという要望もある。
【0004】
したがって本発明の目的は、より小さい回路規模で複数系統のデータに対して適切にFIFO機能を提供できるデータ記憶装置とその方法を提供することにある。
また、本発明の他の目的は、より小さい回路規模で各処理手段でのデータの転送が適切に行え、これにより所望の画像処理を効率よく行えるような画像処理装置を提供することにある。
【0005】
前記課題を解決するために、本発明のデータ記憶装置は、入力される複数系統のデータを順に記憶するデータ記憶手段と、前記データ記憶手段に記憶されたデータの記憶順序を前記系統ごとに管理する記憶順序管理手段と、各系統ごとのデータの出力要求に応じて、前記記憶順序管理手段に管理されている前記系統ごとのデータの記憶順序に基づいて、当該要求された系統の前記記憶されているデータを前記入力された順に読み出し出力する出力手段とを有し、前記記憶順序管理手段は、前記データ記憶手段の未だ読み出されていないデータが記憶されている領域以外の空き領域の任意のアドレスを、入力されるデータを記憶する記憶アドレスとして生成する記憶アドレス生成手段と、前記各系統ごとに、最後に入力され記憶されたデータに対する前記記憶アドレスを記憶するアドレス記憶手段と、前記データ記憶手段のアドレス空間に対応したアドレス空間を有し、各アドレスのデータとして、前記データ記憶手段の対応するアドレスに記憶されているデータと同一の系統の前記入力されるデータで、当該アドレスのデータの次に入力され記憶されたデータが記憶されている前記データ記憶手段のアドレスを記憶するテーブルと、入力される任意の系統のデータが前記データ記憶手段の前記生成された記憶アドレスに記憶された際に、前記テーブルの前記アドレス記憶手段に記憶されているアドレスに、前記生成された記憶アドレスを記憶するテーブル更新手段と、を有し、前記記憶アドレス生成手段は、前記データ記憶手段の各アドレスごとの当該アドレスに未だ読み出されていないデータが記憶されているか否かを示すフラグを記憶するフラグ記憶手段と、前記記憶されているフラグに基づいて、前記データ記憶手段の前記空き領域を検出し、当該空き領域のいずれか1の領域のアドレスを前記記憶アドレスとして選択する記憶アドレス選択手段と、新たに入力されるデータの記憶および前記出力手段による記憶されたデータの読み出しに基づいて、前記フラグを更新するフラグ更新手段とを有し、前記データ記憶手段は、前記記憶アドレス生成手段により生成されたアドレスに、前記入力される任意の系統のデータを記憶する。
【0006】
第2の発明のデータ記憶方法は、データ記憶手段と、記憶順序管理手段と、出力手段とを有するデータ記憶装置のデータ記憶方法であって、入力される複数系統のデータをメモリに記憶する第1の工程と、前記記憶されたデータの記憶順序を前記系統ごとに管理する第2の工程と、各系統ごとのデータの出力要求に応じて、前記管理されている前記系統ごとのデータの記憶順序に基づいて、当該要求された系統の前記記憶されているデータを前記入力された順に読み出し出力する第3の工程と、を有し、前記第2の工程は、前記各系統ごとに、最後に入力され記憶されたデータに対する前記記憶アドレスを記憶しておく第4の工程と、任意の系統のデータが入力された場合に、前記メモリの未だ読み出されていないデータが記憶されている領域以外の空き領域の任意のアドレスを、入力されるデータを記憶する記憶アドレスとして生成する第5の工程と、前記データ記憶手段のアドレス空間に対応したアドレス空間を有し、各アドレスのデータとして、前記データ記憶手段の対応するアドレスに記憶されているデータと同一の系統の前記入力されるデータで、当該アドレスのデータの次に入力され記憶されたデータが記憶されている前記データ記憶手段のアドレスを記憶するテーブルの、前記記憶されている当該系統の最後に入力され記憶されたデータに対する記憶アドレスに、当該入力されるデータが前記メモリの前記生成された記憶アドレスに記憶された際に、当該生成された記憶アドレスを記憶する第6の工程と、を有し、前記第4の工程は、前記メモリの各アドレスに未だ読み出されていないデータが記憶されているか否かを示すフラグを設定しておく第7の工程と、前記記憶されているフラグに基づいて前記メモリの前記空き領域を検出する第8の工程と、当該空き領域のいずれか1の領域のアドレスを前記記憶アドレスとして選択する第9の工程と、を有する。
【0007】
第3の発明の画像処理装置は、任意の表示用画像データを生成する画像生成手段と、前記生成された表示用画像データを記憶する画像メモリと、前記記憶された表示用画像データより所望の領域のデータを読み出し表示用画面データとして出力する出力手段とを有し、前記画像メモリは、入力される複数系統のデータを順に記憶するデータ記憶手段と、前記データ記憶手段に記憶されたデータの記憶順序を前記系統ごとに管理する記憶順序管理手段と、各系統ごとのデータの出力要求に応じて、前記記憶順序管理手段に管理されている前記系統ごとのデータの記憶順序に基づいて、当該要求された系統の前記記憶されているデータを前記入力された順に読み出し出力する出力手段とを有し、前記記憶順序管理手段は、前記データ記憶手段の未だ読み出されていないデータが記憶されている領域以外の空き領域の任意のアドレスを、入力されるデータを記憶する記憶アドレスとして生成する記憶アドレス生成手段と、前記各系統ごとに、最後に入力され記憶されたデータに対する前記記憶アドレスを記憶するアドレス記憶手段と、前記データ記憶手段のアドレス空間に対応したアドレス空間を有し、各アドレスのデータとして、前記データ記憶手段の対応するアドレスに記憶されているデータと同一の系統の前記入力されるデータで、当該アドレスのデータの次に入力され記憶されたデータが記憶されている前記データ記憶手段のアドレスを記憶するテーブルと、入力される任意の系統のデータが前記データ記憶手段の前記生成された記憶アドレスに記憶された際に、前記テーブルの前記アドレス記憶手段に記憶されているアドレスに、前記生成された記憶アドレスを記憶するテーブル更新手段と、を有し、前記記憶アドレス生成手段は、前記データ記憶手段の各アドレスごとの当該アドレスに未だ読み出されていないデータが記憶されているか否かを示すフラグを記憶するフラグ記憶手段と、前記記憶されているフラグに基づいて、前記データ記憶手段の前記空き領域を検出し、当該空き領域のいずれか1の領域のアドレスを前記記憶アドレスとして選択する記憶アドレス選択手段と、新たに入力されるデータの記憶および前記出力手段による記憶されたデータの読み出しに基づいて、前記フラグを更新するフラグ更新手段とを有し、前記データ記憶手段は、前記記憶アドレス生成手段により生成されたアドレスに、前記入力される任意の系統のデータを記憶する。
【0013】
【発明の実施の形態】
本発明の一実施の形態について図1〜図6を参照して説明する。
本実施の形態においては、家庭用ゲーム機などに適用され、任意の3次元物体モデルの所望の3次元画像をディスプレイ上に高速に表示する3次元コンピュータグラフィックスシステムを例示して、本発明を説明する。
【0014】
まず、その3次元コンピュータグラフィックスシステムの全体の構成および動作について図1を参照して説明する。
この3次元コンピュータグラフィックスシステムは、立体モデルを単位図形である三角形(ポリゴン)の張り合わせとして表現しておき、このポリゴンを描画することで表示画面の各画素の色を決定しディスプレイに表示するポリゴンレンダリング処理を行うシステムである。
また、3次元コンピュータグラフィックスシステム1においては、平面を表わす(x、y)座標のほかに、奥行きを表わすz座標を用いて3次元物体を表わし、またこのx、y、zの3つの座標で3次元空間内の任意の1点を特定する。
【0015】
図1は、その3次元コンピュータグラフィックスシステム1の構成を示すブロック図である。
3次元コンピュータグラフィックスシステム1は、入力部2、3次元画像生成装置3および表示装置4を有する。
また、3次元画像生成装置3は、ジオメトリ演算部32、パラメータ演算部33、画素発生部34、テクスチャマッピング部35、テクスチャメモリ36、メモリインターフェイス(I/F)37、画像メモリ38およびプログラマブル・ディスプレイ制御部39を有する。
【0016】
まず、各部の構成・機能について説明する。
入力部2は、3次元画像生成装置3に対して、表示対象の立体モデルのデータを入力する。本実施の形態においては、3次元コンピュータグラフィックスシステム1は家庭用ゲーム機に適用されているので、入力部2は、その家庭用ゲーム機のゲーム自体を制御する主制御装置などに接続される。その主制御装置においては、ゲームの進行状況などに基づいて表示する画面を決定し、その画面表示に必要な立体モデルを選択し、その表示方法の情報を生成する。したがって入力部2は、これらの情報を、家庭用ゲーム機の主制御装置より受け取り、3次元画像生成装置3へ入力するのに適した形態に変換するなどして3次元画像生成装置3に入力する。
具体的には、入力部2は、前述したような表示する立体モデルのポリゴンデータを3次元画像生成装置3のジオメトリ演算部32に入力する。また、その入力されるポリゴンのデータは、各頂点のx,y,z座標データおよびカラー、透明度、テクスチャなどの付随データである。
【0017】
ジオメトリ演算部32は、入力部2より入力されたポリゴンを、3次元空間中の所望の位置に配置させその位置におけるポリゴンデータを生成する。具体的には、ポリゴンの各頂点(x、y、z)ごとに、並進変換、平行変換および回転変換などの幾何学的変換処理(ジオメトリ変換処理という場合もある)を行う。ジオメトリ変換処理を行ったポリゴンデータは、パラメータ演算部33に出力される。
【0018】
パラメータ演算部33は、ジオメトリ演算部32から入力されたポリゴンのデータ、すなわち、ポリゴンの各頂点のデータに基づいて、画素発生部34においてポリゴン内部の画素データを発生するために必要なパラメータを求め、画素発生部34に出力する。具体的にはたとえば、カラー、奥行きおよびテクスチャの傾きの情報などを求める。
【0019】
画素発生部34は、ジオメトリ演算部32でジオメトリ変換処理が行われたポリゴンデータ、および、パラメータ演算部33で求められたパラメータに基づいて、ポリゴンの各頂点間を線型補間してポリゴン内部およびエッジ部分の画素データを発生する。また画素発生回路34は、画素データの表示に対応した所定の2次元平面上でのアドレスの生成を行う。生成された画素データおよびアドレスは順次テクスチャマッピング部35に出力される。
【0020】
テクスチャマッピング部35は、画素発生部34で生成された画素データに対して、テクスチャメモリ36に格納されているテクスチャデータを用いて、テクスチャマッピング処理を行う。テクスチャマッピング処理を行った画素データおよびアドレスは、メモリインターフェイス37に出力する。
【0021】
テクスチャメモリ36は、テクスチャマッピング部35でテクスチャマッピングする際に用いるテクスチャパタンを記憶しておくメモリである。
【0022】
メモリインターフェイス37は、テクスチャマッピング部35から入力される画素データおよびアドレス、および、既に画像メモリ38に記憶されている対応する画素データに基づいて、新たな画素データを生成し、画像メモリ38に記憶する。すなわち、メモリインターフェイス37は、テクスチャマッピング部35から入力されるアドレスに対応した画素データを画像メモリ38から読み出し、その画素データと、テクスチャマッピング部35から入力された画素データとを用いて、所望の画素演算処理を行い、得られた画素データを画像メモリ38へ書き込む。
またメモリインターフェイス37は、プログラマブル・ディスプレイ制御部39から表示領域が指定された場合には、その表示領域の画素データを、画像メモリ38から読み出し、プログラマブル・ディスプレイ制御部39に出力する。
【0023】
画像メモリ38は、表示用の画像データを記録するメモリであり、同時にアクセスすることができる2つのメモリバッファ、フレームバッファとZバッファを有する。フレームバッファには、各画素のカラー情報であるフレームデータが格納される。また、Zバッファには、各画素の奥行き情報(Z値)であるZデータが格納される。
画像メモリ38については、後に詳細に説明する。
【0024】
プログラマブル・ディスプレイ制御部39は、メモリインターフェイス37を介して画像メモリ38より読み出した表示領域の画素データを、表示装置4により表示可能なたとえば所定のアナログ信号に変換し、表示装置4に出力する。この時の出力信号の形式およびそれに基づく変換条件などは、接続される表示装置4の信号特性などに基づいて、プログラムすることにより任意に設定可能である。
なお、プログラマブル・ディスプレイ制御部39は、メモリインターフェイス37に対して表示すべき表示領域の画素データの要求を行い、これにより画像メモリ38より所望の表示領域の画素データを読み出す。
【0025】
表示装置4は、本実施の形態においては、通常家庭などで用いられているビデオ入力端子などを有するテレビジョン受信機である。3次元画像生成装置3のプログラマブル・ディスプレイ制御部39からは、ビデオ信号入力端子を介してアナログビデオ信号が入力され、その信号に基づいて3次元映像を画面上に表示する。
【0026】
次に、この3次元コンピュータグラフィックスシステム1の動作について説明する。
まず、家庭用ゲーム機のゲーム自体を制御する主制御装置などにおいて、表示する3次元画像が決定されると、その画面表示に必要な立体モデルの情報が入力部2に入力される。入力部2はこの情報に基づいて、その画像を表示するための立体モデルのポリゴンデータを3次元画像生成装置3に入力する。
3次元画像生成装置3に入力された各ポリゴンデータは、まず、ジオメトリ演算部32において、画面表示のために3次元空間中の所望の位置に配置されるように、並進変換、平行変換および回転変換などのジオメトリ変換処理が行われる。
【0027】
次に、座標変換の行われたポリゴンデータに対して、パラメータ演算部33においてポリゴン内部の画素データを発生するために必要なパラメータが求められ、画素発生部34において、実際にポリゴンの各頂点間を線型補間してポリゴン内部およびエッジ部分の画素データが発生される。
発生された画素データは順次テクスチャマッピング部35に入力され、テクスチャマッピング部35において、テクスチャメモリ36に記録されているテクスチャパタンデータを参照して、テクスチャマッピング処理が行われ、生成された画素データがメモリインターフェイス37を介して画像メモリ38に記憶される。
【0028】
画像メモリ38に記憶された画素データは、同様の経路により入力される他の画素データや任意の制御データに基づいて適宜所望の処理が行われる。
これにより画像メモリ38には常に最新の画像データが格納され、画面表示に供される。すなわち、表示装置4に表示するための所定の領域のデータの出力の要求がプログラマブル・ディスプレイ制御部39からメモリインターフェイス37に対して行われ、その領域の画素データが適宜画像メモリ38から読み出され、プログラマブル・ディスプレイ制御部39において画面表示用の所定の信号に変換され、表示装置4に出力される。
これにより、表示装置4には、所望の画像が画面に表示される。
【0029】
次に、このような3次元コンピュータグラフィックスシステム1の、本発明に係わる画像メモリ38の周辺回路について詳細に説明する。
3次元コンピュータグラフィックスシステム1においては、テクスチャマッピング部35、メモリインターフェイス37およびプログラマブル・ディスプレイ制御部39が、実質的に画像メモリ38に対してアクセスを行なう構成部である。以下の説明においては、本発明の係わる特徴が明らかになるように、これらの処理部を画像メモリ38に対する1つの信号処理部とみなして説明を行なう。
なお、実際の回路は、図1に示したように各構成部が独立した構成でもよいし、後述するように、たとえば汎用のシグナルプロセッサなどを用いて一体的に構成したものであってもよい。
【0030】
図2は、その画像メモリ38の周辺回路(以後、これをメモリ装置50として示す)を論理的に示す図であり、図1に示したテクスチャマッピング部35〜プログラマブル・ディスプレイ制御部39の構成を、別の観点から示した図である。
なお、このメモリ装置50は、前述したように、たとえば各画素のカラー情報であるフレームデータと、各画素の奥行き情報(Z値)であるZデータの2系統のデータを順次バッファリングする機能を有するものとする。
【0031】
MTXPC51は、3次元コンピュータグラフィックスシステム1におけるメモリインターフェイス(Memory interface)37、マッピング(TeXture Mapping)部35およびプログラマブル・ディスプレイ制御部(Programmable Crt controller)39が一体化された信号処理部である。MTXPC51で生成された画像データは、FIFOメモリ100に入力される。
FIFOメモリ100は、MTXPC51より入力された画像データを、その系統(種類)は問わずに順次記憶し、バッファリングして信号処理部53に出力する。
【0032】
信号処理部53は、FIFOメモリ100より読み出した画像データに任意の処理を施し、再び画像メモリ38に記憶する。前述したように、信号処理部53では、たとえば、既に画像メモリ38に記憶されている対応する画素データと、テクスチャマッピングされた画素データとを用いて所望の画素演算処理を行う。そして、得られた画素データは再び画像メモリ38へ書き込まれる。
第1のRAM54および第2のRAM55は、各々特定の系統のデータを記憶する2バンクのFIFOメモリであり、信号処理部53より入力されるデータを各々順次記憶する。また、図示しないが、たとえばMTXPC51からの読み出し要求に応じて、記憶したデータを記憶した順に出力する。
なお、第1のRAM54(バンクA)および第2のRAM55(バンクB)は、各々275ビット幅で、合わせて16ワードの記憶容量を有する。
【0033】
メモリ装置50(画像メモリ38の周辺回路)は、論理的にはこのようにその構成を示すことができるが、以下、本発明に係わるFIFOメモリ100について、図3〜図6を参照して説明する。
前述したように、このFIFOメモリ100は、図1における画像メモリ38として描画データをバッファリングするメモリであり、275ビット×16ワードの容量を有する。また、共有データバッファにより2系統のデータに対応し、書き込みから読み出しまでのレイタンシー3、読み出しレイタンシー2のFIFOメモリである。
【0034】
まず、そのFIFOメモリ100の構成の概略について、図3を参照して、データの流れを中心にして説明する。
図3は、FIFOメモリ100におけるデータの流れを示すのに好適な、FIFOメモリ100の主要な構成を模式的に示すブロック図である。
図3に示すように、FIFOメモリ100は、デュアルポートRAM(DportRAM)120、出力レジスタ(REG)140、ライトポインタ部(Wpointer)160、リードポインタ部(Rpointer)180、フル信号生成部(FullGen)200およびエンプティ信号生成部(EMPTY
Gen)220を有する。
【0035】
デュアルポートRAM120は、275ビット×16ワード構成の同時に書き込みおよび読み出しが可能なメモリである。
デュアルポートRAM120は、データ入力端子に入力データDATAinが印加されており、ライトポインタ部160からのライト制御信号に基づいてこれを順に記憶する。また、デュアルポートRAM120に記憶されたデータは、リードポインタ部180からのリード制御信号に基づいて記憶された順番に読み出され、出力レジスタ140に出力される。
【0036】
出力レジスタ140は、リードポインタ部180より出力されるリード制御信号に基づいてデュアルポートRAM120より読み出されたデータRAMoutを記憶し、FIFOメモリ100より出力する。
【0037】
ライトポインタ部160は、FIFOメモリ100に入力されるバンクA、バンクBのそれぞれのライトイネーブル信号WE_A,WE_Bに基づいて、デュアルポートRAM120に対する記憶制御信号を生成しデュアルポートRAM120に印加することにより、デュアルポートRAM120へのデータの記憶を制御する。
【0038】
リードポインタ部180は、FIFOメモリ100に入力されるバンクA、バンクBのそれぞれのリードイネーブル信号RE_A,RE_Bに基づいて、デュアルポートRAM120に対するリード制御信号を生成しデュアルポートRAM120に印加することにより、デュアルポートRAM120からのデータの読み出しを制御する。
【0039】
フル信号生成部200は、図示せぬFIFOメモリ100内の種々の制御信号および状態信号に基づいて、デュアルポートRAM120へ格納されたデータの合計がそれぞれ16、15、14以上であることを示すフル信号FULL、プレ・フル信号PFULL、および、プレ・プレ・フル信号PPFULL、換言すれば、デュアルポートRAM120の記憶領域が満杯の状態を示すプレ信号FULL、あと1ワードで満杯となる状態を示すプレ・フル信号PFULL、および、あと1ワードでプレ・フルとなる状態を示すプレ・プレ・フル信号PPFULLを生成し、3次元コンピュータグラフィックスシステム1のメモリインターフェイス37に相当する図示せぬ制御部に出力する。
【0040】
エンプティ信号生成部220は、図示せぬFIFOメモリ100内の種々の制御信号および状態信号に基づいて、デュアルポートRAM120へ格納されたデータが無い状態、すなわちエンプティな状態を示す信号EMPTYを生成し、3次元コンピュータグラフィックスシステム1のメモリインターフェイス37に相当する図示せぬ制御部に出力する。
図示せぬ制御部は、これら信号FULL,PFULL,PPFULLおよびEMPTYに基づいて、画像メモリ38(FIFOメモリ100)へのデータの書き込みおよび読み出しを制御する。
【0041】
次に、FIFOメモリ100のより詳細な構成について、図4および図5を参照して説明する。
図4は、FIFOメモリ100の詳細の構成を示す回路図である。
FIFOメモリ100は、デュアルポートRAM120、出力レジスタ140および制御部150を有する。
また、制御部150は、ライトイネーブルデコーダ151、リードイネーブルデコーダ152、セレクタ153、レジスタ154、フル信号生成部200、エンプティ信号生成部220およびアドレス制御部240を有する。
【0042】
デュアルポートRAM120は、前述したように275ビット×16ワード構成の同時に書き込みおよび読み出しが可能なメモリである。デュアルポートRAM120は、制御部150のアドレス制御部240より入力される書き込みアドレスwp_mおよびライトイネーブルデコーダ151より入力されるライトイネーブル信号ram_weに基づいて、印加されるデータinを記憶する。また、制御部150のセレクタ153より入力される読み出しアドレスrp_mおよびリードイネーブルデコーダ152より入力されるリードイネーブル信号ram_reに基づいて、データを読み出し出力レジスタ140に出力する。
【0043】
出力レジスタ140は、制御部150のレジスタ154より入力されるイネーブル信号oreg_enに基づいて、デュアルポートRAM120より読み出されたデータを一旦記憶し、出力信号outとしてFIFOメモリ100より出力する。
【0044】
制御部150のライトイネーブルデコーダ151は、外部よりFIFOメモリ100に入力される2つのバンクA,B各々に対するライトイネーブル信号we_a,we_bおよびアドレス制御部240より入力されるデュアルポートRAM120がフルであることを示す信号ram_fullに基づいて、デュアルポートRAM120に対するライトイネーブル信号ram_we、および、各バンクのデータの書き込みを示す信号ram_we_a,ram_we_bを生成し、各々、デュアルポートRAM120おいアドレス制御部240に出力する。
【0045】
具体的には、ライトイネーブルデコーダ151は、デュアルポートRAM120がフルでない場合には、ライトイネーブル信号we_a,we_bのいずれかが入力された場合に、デュアルポートRAM120に対するライトイネーブル信号ram_weをアクティブにする。また、ライトイネーブル信号we_a,we_bに応じて、データの書き込みを示す信号ram_we_a,ram_we_bのいずれかをアクティブにする。デュアルポートRAM120がフルであることを示す信号ram_fullがアクティブの時には、ライトイネーブルデコーダ151はいずれの信号もアクティブにしない。
【0046】
リードイネーブルデコーダ152は、外部よりFIFOメモリ100に入力される2つのバンクA,B各々に対するリード信号re_a,re_bおよびアドレス制御部240より入力される各バンクの記憶データがエンプティであることを示す信号ram_empty_a,ram_empty_bに基づいて、デュアルポートRAM120に対するリードイネーブル信号ram_re、および、各バンクのデータの読み出しを示す信号ram_re_a,ram_re_bを生成し、各々、デュアルポートRAM120おいアドレス制御部240に出力する。
【0047】
具体的には、リードイネーブルデコーダ152は、バンクAまたはバンクBのいずれかに対するリード信号re_a,re_bのいずれかが入力された場合であって、そのバンクがエンプティでない場合には、デュアルポートRAM120に対するリードイネーブル信号ram_reをアクティブにし、そのバンクのデータの読み出しを示す信号ram_re_a,ram_re_bをアクティブにする。そのバンクがエンプティであることを示す信号ram_empty_aまたはram_empty_bがアクティブの時には、リードイネーブルデコーダ151はいずれの信号もアクティブにしない。
【0048】
セレクタ153は、アドレス制御部240より入力される、デュアルポートRAM120に記憶されている各バンクの先頭データのアドレスrp_a,rp_bのいずれかを、選択し、デュアルポートRAM120に印加する。本実施の形態においては、FIFOメモリ100に入力されるバンクBのリード信号re_bがアクテオィブの時にバンクBの記憶データの先頭アドレスrp_bを選択し、そうでない時にバンクAの記憶データの先頭アドレスrp_aを選択する。
【0049】
レジスタ154は、リードイネーブルデコーダ152よりデュアルポートRAM120に出力されるリードイネーブル信号ram_reを1クロックラッチし、デュアルポートRAM120より出力されるデータを出力レジスタ140が記憶するためのイネーブル信号oreg_enとして、出力レジスタ140に出力する。
【0050】
フル信号生成部200は、後述するアドレス制御部240において生成されるフル信号fullに基づいて、さらに、あと1ワードでフルとなる状態を示す信号PFULL、および、あと1ワードでPFULLとなる状態を示す信号PPFULLを各々生成し出力する。
【0051】
エンプティ信号生成部220は、後述するアドレス制御部240において生成される各バンクのデータがエンプティであることを示す信号empty_a,empty_bに基づいて、デュアルポートRAM120へ格納されたデータが無い状態、すなわちエンプティな状態を示す信号EMPTYを生成し出力する。
【0052】
アドレス制御部240は、前述したようなデュアルポートRAM120および外部に対する種々の制御信号を生成するとともに、デュアルポートRAM120に記憶したデータの順序などを管理する。
アドレス制御部240の構成について、図5を参照して詳細に説明する。
図5は、アドレス制御部240の構成を示す回路図である。
アドレス制御部240は、RAM使用領域フラグ241、フラグ更新部242、書き込みアドレスデコーダ243、バンクA書き込みアドレス記憶部244、バンクB書き込みアドレス記憶部245、セレクタ246、ネクストポインタ247、バンクAリードアドレス選択部248、バンクAリードアドレスレジスタ249、バンクBリードアドレス選択部250、バンクBリードアドレスレジスファ251、バンクAエンプティ検出カウンタ252およびバンクBエンプティ検出カウンタ253を有する。
【0053】
RAM使用領域フラグ241は、デュアルポートRAM120の各アドレスに未だ読み出されていないデータが記憶せているか否を示すフラグを記憶し、デュアルポートRAM120の使用状態を管理するための、デュアルポートRAM120の各アドレスに1ビットが対応した16ビットのレジスタである。
RAM使用領域フラグ241は、ライトイネーブルデコーダ151よりいずれかのバンクの書き込みを示す信号ram_we_a(アドレス制御部240内部ではwe_a。以下同じ),ram_we_b(we_b)が入力された場合、または、リードイネーブルデコーダ152よりいずれかのバンクの読み出しを示す信号ram_re_a(re_a),ram_re_b(re_b)が入力された場合に、フラグ更新部242から印加される新たなフラグデータにより更新される。
【0054】
フラグ更新部242は、デュアルポートRAM120に対してデータの書き込みおよび読み出しが行なわれた場合、すなわち、いずれかのバンクの書き込みを示す信号ram_we_a(we_a),ram_we_b(we_b)およびいずれかのバンクの読み出しを示す信号ram_re_a(re_a),ram_re_b(re_b)のいずれかが入力された場合に、RAM使用領域フラグ241の更新データを生成し、RAM使用領域フラグ241に印加する。
【0055】
書き込みアドレスデコーダ243は、RAM使用領域フラグ241に記憶されているデュアルポートRAM120の記憶領域の使用フラグに基づいて、次にデータを記憶するアドレスを生成し、バンクA書き込みアドレス記憶部244、バンクB書き込みアドレス記憶部245およびネクストポインタ247に出力するとともに、アドレス制御部240より出力してデュアルポートRAM120に印加する。
なお、バンクAまたはバンクBがエンプティの状態でデュアルポートRAM120にデータを記憶した場合には、このアドレスwpは、ネクストポインタ247は介さずに直接バンクAリードアドレス選択部248またはバンクBリードアドレス選択部250に入力され、データの読み出しに用いられる。
【0056】
なお、書き込みアドレスデコーダ243は、この時、デュアルポートRAM120の空き領域のうち、アドレスの大きい方から順に記憶領域を選択し、そのアドレスを出力する。
また、書き込みアドレスデコーダ243は、RAM使用領域フラグ241に記憶されているデュアルポートRAM120の使用フラグに基づいて、デュアルポートRAM120の全ての記憶領域に未だ読み出されていないデータが記憶されているか否か、すなわち、デュアルポートRAM120がフルであるか否かを検出し、フルである場合にはフル信号fullを出力する。
【0057】
バンクA書き込みアドレス記憶部244は、バンクAの最後にデータを書き込んだデュアルポートRAM120のアドレスを記憶するレジスタである。バンクA書き込みアドレス記憶部244には、バンクAへの書き込みを示す信号ram_we_a(we_a)がアクティブになった時の、書き込みアドレスデコーダ243の出力アドレスが記憶される。
【0058】
バンクB書き込みアドレス記憶部245は、バンクBの最後にデータを書き込んだデュアルポートRAM120のアドレスを記憶するレジスタである。バンクB書き込みアドレス記憶部245には、バンクBへの書き込みを示す信号ram_we_b(we_b)がアクティブになった時の、書き込みアドレスデコーダ243の出力アドレスが記憶される。
【0059】
セレクタ246は、データが書き込まれるバンクに応じて、バンクA書き込みアドレス記憶部244またはバンクB書き込みアドレス記憶部245に記憶されているアドレスを選択し、ネクストポインタ247に印加する。
【0060】
ネクストポインタ247は、各バンクごとのデータの順序を記憶するレジスタである。ネクストポインタ247は、デュアルポートRAM120と同じ16ワードのアドレス空間を有し、各ワード4ビットのレジスタファイルである。
そして、ネクストポインタ247は、新たなデータがデュアルポートRAM120に書き込まれるごとに、セレクタ246により選択され印加されるアドレスに、書き込みアドレスデコーダ243より出力されるアドレスを記憶する。
これにより、新たなデータがデュアルポートRAM120に書き込まれるごとに、ネクストポインタ247の、そのデータと同じバンクに対して書き込まれたそのデータの前のデータが記憶されているアドレスに、そのデータが記憶されたアドレスを記憶することになる。換言すれば、ネクストポインタ247の各アドレスには、そのアドレスに記憶されているデータと同じバンクのデータで、そのデータに続く次のデータが記憶されているアドレスが記憶されることになる。
【0061】
バンクAリードアドレス選択部248は、ネクストポインタ247の16ワードのデータよりバンクAのデータを順に選択し、バンクAリードアドレスレジスタ249に出力する。バンクAリードアドレス選択部248は、バンクAのデータが読み出されるごとに、自らが選択したアドレスのデータであり、後段のバンクAリードアドレスレジスタ249に記憶されているアドレスのネクストポインタ247のデータを順に選択する。
【0062】
バンクAリードアドレスレジスタ249は、バンクAリードアドレス選択部248により選択されたネクストポインタ247のデータ、すなわち、バンクAのデータとして記憶された次に読み出すデータのアドレスram_re_a(re_a)を記憶するレジスタであり、記憶したアドレスはアドレス制御部240よりリードイネーブルデコーダ152に出力される。
【0063】
バンクBリードアドレス選択部250は、ネクストポインタ247の16ワードのデータよりバンクBのデータを順に選択し、バンクBリードアドレスレジスタ251に出力する。バンクBリードアドレス選択部250は、バンクBのデータが読み出されるごとに、自らが選択したアドレスのデータであり、後段のバンクBリードアドレスレジスタ251に記憶されているアドレスのネクストポインタ247のデータを順に選択する。
【0064】
バンクBリードアドレスレジスタ251は、バンクBリードアドレス選択部250により選択されたネクストポインタ247のデータ、すなわち、バンクBのデータとして記憶された次に読み出すデータのアドレスram_re_b(re_b)を記憶するレジスタであり、記憶したアドレスはアドレス制御部240よりリードイネーブルデコーダ152に出力される。
【0065】
バンクAエンプティ検出カウンタ252は、バンクAの有効データ数をカウントするカウンタであり、バンクAへの書き込みを示す信号ram_we_a(we_a)が入力されるごとにインクリメントされ、バンクAからの読み出しを示す信号ram_re_a(re_a)が入力されるごとにデクリメントされる。そして、このカウンタ値が0の時、バンクAにはデータが記憶されていないものとして、エンプティ信号ram_empty_a(empty_a)がアクティブにされる。
【0066】
バンクBエンプティ検出カウンタ253は、バンクBの有効データ数をカウントするカウンタであり、バンクBへの書き込みを示す信号ram_we_b(we_b)が入力されるごとにインクリメントされ、バンクBからの読み出しを示す信号ram_re_b(re_b)が入力されるごとにデクリメントされる。そして、このカウンタ値が0の時、バンクBにはデータが記憶されていないものとして、エンプティ信号ram_empty_b(empty_b)がアクティブにされる。
【0067】
次に、このような構成のFIFOメモリ100の動作について、図3〜図6を参照して説明する。
まず、図4および図5を参照して、FIFOメモリ100におけるアドレスの制御方法を中心として、その動作を詳細に説明する。
【0068】
まず、たとえばバンクA(第1の系統)のデータが記憶される時には、デュアルポートRAM120に対して入力データDATAinが印加され、バンクAのライトイネーブル信号we_aがアクティブにされる。
FIFOメモリ100の制御部150のライトイネーブルデコーダ151がこのライトイネーブル信号we_aを検出し、デュアルポートRAM120に対するライトイネーブル信号ram_weをアクティブにするとともに、アドレス制御部240に対してバンクAにデータを書き込む旨の信号ram_we_a(we_a)を入力する。
アドレス制御部240からは、既に書き込みアドレスデコーダ243において空き領域のアドレスが検出され、デュアルポートRAM120に印加されているので、デュアルポートRAM120においては、このライトイネーブルデコーダ151からのライトイネーブル信号ram_weにより、書き込みアドレスデコーダ243が指示するアドレスwpにデータが記録される。
【0069】
そして、アドレス制御部240においては、ライトイネーブルデコーダ151より入力されるバンクAにデータを書き込む旨の信号ram_we_a(we_a)に基づいて、書き込みアドレスwpがバンクA書き込みアドレス記憶部244に記憶される。
また、フラグ更新部242により、RAM使用領域フラグ241に記憶されているフラグに対して、アドレスwpのフラグが使用されている状態とされた新たなフラグデータが生成され、これによりRAM使用領域フラグ241の内容が更新される。
そしてまた、バンクAリードアドレス選択部248ではこのアドレスwpが選択されて、バンクAリードアドレスレジスタ249にバンクAの先頭データのアドレスとしてセットされる。
さらに、更新されたRAM使用領域フラグ241のフラグデータに基づいて、書き込みアドレスデコーダ243が、次にデータの書き込みを行なうアドレスを生成し、新たなアドレスwpとして出力する。
【0070】
次に、たとえばバンクB(第2の系統)のデータが記憶されるとすると、デュアルポートRAM120に対して入力データDATAinが印加され、バンクBのライトイネーブル信号we_bがアクティブにされる。このライトイネーブル信号we_bを、制御部150のライトイネーブルデコーダ151が検出し、デュアルポートRAM120に対するライトイネーブル信号ram_weをアクティブにする。これにより、既にアドレス制御部240より出力されデュアルポートRAM120に印加されているアドレスram_wp(wp)に、入力されたデータが書き込まれる。
【0071】
また、ライトイネーブルデコーダ151からアドレス制御部240に対してバンクBにデータを書き込む旨の信号ram_we_b(we_b)が入力され、これにより、書き込みアドレスwpがバンクB書き込みアドレス記憶部245に記憶される。
また、フラグ更新部242により、RAM使用領域フラグ241に記憶されているフラグに対して、アドレスwpのフラグが使用されている状態とされた新たなフラグデータが生成され、これによりRAM使用領域フラグ241の内容が更新される。
そしてまた、バンクBリードアドレス選択部250ではこのアドレスwpが選択されて、バンクBリードアドレスレジスタ251にバンクBの先頭データのアドレスとしてセットされる。
さらに、更新されたRAM使用領域フラグ241のフラグデータに基づいて、書き込みアドレスデコーダ243が、次にデータの書き込みを行なうアドレスを生成し、新たなアドレスwpとして出力する。
【0072】
次に、再びバンクAのデータが記憶されるとすると、デュアルポートRAM120に対して入力データDATAinが印加され、バンクAのライトイネーブル信号we_aがアクティブにされる。このライトイネーブル信号we_aをライトイネーブルデコーダ151が検出し、デュアルポートRAM120に対するライトイネーブル信号ram_weをアクティブにすることにより、アドレス制御部240よりデュアルポートRAM120に印加されているアドレスram_wp(wp)に、入力されたデータが書き込まれる。
【0073】
そしてこの時、アドレス制御部240においては、入力されるバンクAにデータを書き込む旨の信号ram_we_a(we_a)に基づいて、セレクタ246において、バンクA書き込みアドレス記憶部244の出力である1回目にバンクAのデータを記録したアドレスが選択され、これがネクストポインタ247に印加され、今回のデータ記録アドレス、すなわち、2回目のバンクAのデータを記録したアドレスが、この1回目のデータ記録アドレスに記憶される。
その後、1回目の時あるいはバンクBに対する書き込みの時と同様に、この記録アドレスがバンクA書き込みアドレス記憶部244に記録され、フラグ更新部242ではRAM使用領域フラグ241に記憶されているフラグの内容が更新され、また、書き込みアドレスデコーダ243では更新されたRAM使用領域フラグ241のフラグデータに基づいて新たな書き込みアドレスが生成される。
なお、既にデータが蓄積されている状態からの追加のデータの記憶の際には、バンクAリードアドレスレジスタ249への書き込みアドレスデコーダ243からのアドレスの書き込みは行なわれない。
【0074】
さて、このようにデータを書き込んだ状態で、バンクAのデータの読み出しが要求された場合には、バンクAのリードイネーブル信号re_aがアクティブにされる。
FIFOメモリ100の制御部150のリードイネーブルデコーダ152がこのリードイネーブル信号we_aを検出し、デュアルポートRAM120に対するリードイネーブル信号ram_reをアクティブにするとともに、アドレス制御部240に対してバンクAのデータを読み出す旨の信号ram_re_a(re_a)を入力する。
【0075】
アドレス制御部240からは、既にバンクAリードアドレスレジスタ249およびバンクBリードアドレスレジスタ251を介して、各バンクの記憶データ先頭アドレスがセレクタ153に出力されている。
そして、セレクタ153においては、バンクBのリードイネーブル信号re_bがネガティブであることから、バンクAリードアドレスレジスタ249の出力であるバンクAの先頭アドレスが選択されて、デュアルポートRAM120に印加される。
その結果、デュアルポートRAM120からは先に記憶したバンクAの先頭データが読み出され、出力レジスタ140を介してFIFOメモリ100より出力される。
【0076】
また、アドレス制御部240においては、リードイネーブルデコーダ152より入力されるバンクAのデータを読み出す旨の信号ram_re_a(re_a)に基づいて、バンクAリードアドレス選択部248が、ネクストポインタ247より、バンクAリードアドレスレジスタ249に記憶されていた今回データを読み出したアドレスのデータを選択し、バンクAの次のデータのアドレスとしてバンクAリードアドレスレジスタ249にセットする。その結果、アドレス制御部240からは、新たなバンクAの記憶データ先頭アドレスがセレクタ153に出力される。
さらに、アドレス制御部240においては、フラグ更新部242により、RAM使用領域フラグ241に記憶されているフラグに対して、アドレスwpのフラグが未使用の状態とされた新たなフラグデータが生成され、これによりRAM使用領域フラグ241の内容が更新される。
【0077】
このようにして、以下順次各バンクのデータの読み出しおよび書き込みが行なわれる。
【0078】
最後に、FIFOメモリ100の全体の動作について図3および図6を参照して説明する。
図6は、FIFOメモリ100の全体の動作を示すタイムチャートであり、(A)FIFOメモリ100の動作クロックCLKを示す図、(B)はFIFOメモリ100への入力データDATAinを示す図、(C)はデュアルポートRAM120に印加されているデータFIFOinを示す図、(D)はバンクAに対するライトイネーブル信号WE_A、(E)はバンクBに対するライトイネーブル信号WE_B、(F)は全体のエンプティ信号EMPTY、(G)はフル信号FULL、(H)はプレ・フル信号PFULL、(I)はプレ・プレ・フル信号PPFULL、(J)はバンクBに対するリードイネーブル信号、(K)はデュアルポートRAM120からの出力データFIFOoutである。
【0079】
まず、図6(B)に示すようにデータを順次FIFOメモリ100に入力し、データD0〜D3はバンクAに記憶し、データD4〜D7はバンクBに記憶するようにしたい場合、図6(D)および図6(E)に示すようにバンクAおよびバンクBに対する各ライトイネーブル信号をアクティブにすれば、前述したようにFIFOメモリ100内で信号処理が行なわれ、所望の形態でデータが記憶される。
そして、図6(F)に示すようにデータD0を記憶した段階でエンプティ信号はネガティブになり、図6(I)に示すようにデータD5までの6個のデータを記憶した段階でプレ・プレ・フル信号PPFULLがアクティブになり、図6(H)に示すようにデータD6までの7個のデータを記憶した段階でプレ・フル信号PFULLがアクティブになり、さらに、図6(G)に示すようにデータD7までの8個のデータを記憶した段階でフル信号FULLがアクティブになる。
【0080】
そして、このような状態で、図6(J)に示すように、バンクBのリードイネーブル信号をアクティブにすることにより、図6(K)に示すように、データD4以下のバンクBのデータが順次読み出される。 F
そして、データの読み出しとともに、図6(G)に示すフル信号FULL、図6(H)に示すプレ・フル信号PFULLおよび図6(I)に示すプレ・プレ・フル信号PPFULLが各々ネガティブになっていく。
FIFOメモリ100は、このように動作する。
【0081】
このように、本実施の形態のFIFOメモリ100においては、1つのデュアルポートRAM120を用いて、2つの系統のFIFOを実現することができる。これにより、全く独立したFIFOを2系統備える場合に比べて、FIFOのマージンを全体として少なくすることができ、また、制御回路の一部を共通化することができ、その結果、回路規模を大幅に削減することができる。
また、その2つの系統における記憶容量の割り当ては、入力されるデータに基づいてダイナミックに決定すればよく予め固定されるものではない。したがって、全体として、よりフレキシブルなバッファを構成することができる。
【0082】
そして、このような構成のFIFOメモリ100を、たとえば前述したような3次元コンピュータグラフィックスシステム1の3次元画像生成装置3に適用することにより、各々が複雑で高速な処理を行なう各構成部間のデータの転送を、少ない規模の回路で、効率よく行なうことができ、その結果、効率よく所望の画像の生成ができる。
【0083】
なお、本発明は前述した実施の形態に限られるものではなく、さらに種々の改変が可能である。
たとえば、本実施の形態においては、2種類(2系統)のデータを処理するFIFOを例示したが、これは2系統に限られるものではなく、任意の数の系統を処理できるようにしてよい。
【0084】
また、実際にデータを記憶するメモリは、デュアルポートRAMに限られるものではなく、シングルポートRAMを用いてもよい。その場合には、たとえばシングルポートRAMを2つ具備し、1つのシングルポートRAMに対して記憶と読み出しを同時に行わないようにデータの記憶および読み出しを制御することにより、記憶または読み出しを同時に行えないシングルポートRAMを用いて、また動作クロックを早めることなく、本発明と同様の動作を行なうFIFOメモリを構成することができる。
もちろん、メモリの種類は、シングルポートRAM以外の任意のメモリを用いてよい。
【0085】
また、本実施の形態においては、FIFOメモリ100メモリ100の適用例として、3次元画像生成装置を例示したが、このFIFOメモリ装置は通常のFIFOメモリとして、任意好適な装置に適用可能である。
【0086】
【発明の効果】
以上説明したように、本発明によれば、より小さい回路規模で複数系統のデータに対して適切にFIFO機能を提供できるデータ記憶装置とその方法を提供することができる。
また、より小さい回路規模で各処理手段でのデータの転送が適切に行え、これにより所望の画像処理を効率よく行えるような画像処理装置を提供することがにできる。
【図面の簡単な説明】
【図1】図1は、本発明の一実施の形態であって、本発明のメモリ装置を適用する3次元コンピュータグラフィックスシステムの構成を示すブロック図である。
【図2】図2は、図1に示した3次元コンピュータグラフィックスシステムの画像メモリおよびその周辺回路を含むメモリ装置の構成を論理的に示す図である。
【図3】図3は、図2に示したメモリ装置におけるデータの流れを示すのに好適な、メモリ装置のFIFOメモリの構成を模式的に示すブロック図である。
【図4】図4は、図3に示したFIFOメモリの詳細な構成を示す回路図である。
【図5】図5は、図4に示したFIFOメモリのアドレス制御部の構成を示す回路図である。
【図6】図6は、図3に示したFIFOメモリの全体の動作を示すタイムチャートである。
【図7】図7は、従来の3次元コンピュータグラフィックスシステムの画像メモリおよびその周辺回路を含むメモリ装置の構成を論理的に示す図である。
【符号の説明】
1…3次元コンピュータグラフィックスシステム、2…入力部、3…3次元画像生成装置、4…表示装置、32…ジオメトリ演算部、33…パラメータ演算部、34…画素発生部、35…テクスチャマッピング部、36…テクスチャメモリ、37…メモリインターフェイス、38…画像メモリ、39…プログラマブル・ディスプレイ制御部、50…メモリ装置、51…MTXPC、53…信号処理部、54…第1のRAM、55…第2のRAM、100…FIFOメモリ、120…デュアルポートRAM、140…出力レジスタ、150…制御部、151…ライトイネーブルデコーダ、152…リードイネーブルデコーダ、153…セレクタ、154…レジスタ、160…ライトポインタ部、180…リードポインタ部、200…フル信号生成部、220…エンプティ信号生成部、240…アドレス制御部、241…RAM使用領域フラグ、242…フラグ更新部、243…書き込みアドレスデコーダ、244…バンクA書き込みアドレス記憶部、245…バンクB書き込みアドレス記憶部、246…セレクタ、247…ネクストポインタ、248…バンクAリードアドレス選択部、249…バンクAリードアドレスレジスタ、250…バンクBリードアドレス選択部、251…バンクBリードアドレスレジスファ、252…バンクAエンプティ検出カウンタ、253…バンクBエンプティ検出カウンタ
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a data storage device and a data storage method in a first-in first-out format (hereinafter referred to as FIFO (First In First Out) format) for data of a plurality of systems, and generation of a display image using the data storage device. The present invention relates to an image processing apparatus that can be efficiently performed.
[0002]
[Prior art]
A so-called FIFO memory that reads input data in the input order is widely used in various electronic circuits. In particular, in recent years, the processing speed has been improved in all electronic devices. As a result, there is a difference in the data processing speed between the processing units, and it is difficult to transfer the data in proper synchronization. In order to solve this problem, a FIFO memory is often provided as a buffer means between the processing units.
For example, an image processing device that generates a three-dimensional image used for a CAD device, a game machine, or the like is capable of processing many pixels such as coordinate conversion, texture mapping, special effect processing for each pixel, and high-speed display of the generated image. Various processing units that perform high-speed processing are sequentially connected. A large number of FIFO memories are used in order to transfer data between these processing units at high speed and appropriately.
[0003]
[Problems to be solved by the invention]
By the way, for example, a plurality of types of data are often transferred as necessary between the components of such an image processing apparatus. In particular, when not only image data but also control data is included, it is rare that only one specific type of data is transferred. In such a case, as shown in FIG. 7, for example, a plurality of FIFO memories are provided in parallel according to the type of data (sometimes referred to as a data system).
However, when a plurality of FIFO memories are provided in parallel as described above, a margin must be secured for each system, or a control unit is provided independently despite a lot of common signal processing. There is a problem that the circuit cannot be used efficiently, that is, the circuit scale becomes larger than necessary.
In particular, since such a circuit is often realized as a semiconductor integrated circuit, there is a demand for reducing the circuit scale, in other words, the gate scale of the circuit as much as possible.
[0004]
Accordingly, it is an object of the present invention to provide a data storage device and method thereof that can appropriately provide a FIFO function for data of a plurality of systems with a smaller circuit scale.
Another object of the present invention is to provide an image processing apparatus capable of appropriately transferring data in each processing means with a smaller circuit scale, thereby efficiently performing desired image processing.
[0005]
  In order to solve the above problems, a data storage device according to the present invention manages data storage means for sequentially storing input data of a plurality of systems, and the storage order of data stored in the data storage means for each system. In response to a data output request for each system, the storage order management means that performs the storage of the requested system based on the data storage order for each system managed by the storage order management means. Output means for reading out and outputting data in the order of input, and the storage order management means is an arbitrary free area other than the area in which the data that has not yet been read is stored in the data storage means. Storage address generation means for generating the address of the input as a storage address for storing the input data, and for each of the systems, the last input and stored data Address storage means for storing the storage address, and an address space corresponding to the address space of the data storage means, and the same as the data stored at the corresponding address of the data storage means as the data of each address The address of the data storage means in which the data inputted and stored next to the data of the address is stored in the input data of the system ofTeTable and the input data of any system stored in the generated storage address of the data storage means, the generated storage at the address stored in the address storage means of the table Table updating means for storing addresses, and the storage address generating means includes a flag indicating whether or not unread data is stored in the address for each address of the data storage means. Based on the flag storage means for storing and the stored flag, the free area of the data storage means is detected, and a storage address selection for selecting the address of any one of the free areas as the storage address And the storage of newly input data and the reading of the stored data by the output means, And a flag updating means for updating the lug, said data storage means, the address generated by the memory address generating means, for storing data of any line that is the input.
[0006]
  According to a second aspect of the present invention, there is provided a data storage method for a data storage device having a data storage means, a storage order management means, and an output means, wherein a plurality of input data are stored in a memory. 1 step, a second step of managing the storage order of the stored data for each system, and storage of the data for each managed system in response to an output request for data for each system A third step of reading out and outputting the stored data of the requested system in the input order based on the order, and the second step is performed at the end for each of the systems. A fourth step of storing the storage address for the data input and stored in the memory, and a region in which data not yet read out of the memory is stored when data of an arbitrary system is input A fifth step of generating an arbitrary address of a free area other than as a storage address for storing the input data,It has an address space corresponding to the address space of the data storage means, and the input data of the same system as the data stored in the corresponding address of the data storage means as the data of each address, the address The address of the data storage means in which the data input and stored next to the data is stored is stored.In the storage address of the table, the data input and stored at the end of the stored system,When the input data is stored at the generated storage address of the memory,A sixth step of storing the generated storage address, wherein the fourth step includes a flag indicating whether or not unread data is stored in each address of the memory. A seventh step to be set, an eighth step of detecting the free area of the memory based on the stored flag, and an address of any one of the free areas as the storage address A ninth step of selectingThe
[0007]
  According to a third aspect of the present invention, there is provided an image processing device for generating arbitrary display image data, an image memory for storing the generated display image data, and a desired one from the stored display image data. Output data for reading out area data as display screen data, and the image memory sequentially stores data of a plurality of input systems, and stores the data stored in the data storage means. Based on the storage order of the data for each system managed by the storage order management means in response to the output request of the data for each system, the storage order management means for managing the storage order for each system Output means for reading out and outputting the stored data of the requested system in the order of the input, and the storage order management means is not stored in the data storage means. Storage address generation means for generating an arbitrary address in an empty area other than an area where unread data is stored as a storage address for storing input data, and the last input for each system. Address storage means for storing the storage address for stored data, and an address space corresponding to the address space of the data storage means, each address data being stored at a corresponding address of the data storage means A table for storing the address of the data storage means in which the data inputted and stored next to the data of the address is stored in the same system as the existing data, and an arbitrary system to be input When the data is stored at the generated storage address of the data storage means. Table updating means for storing the generated storage address at the address stored in the address storage means, and the storage address generation means is still in the address for each address of the data storage means Flag storage means for storing a flag indicating whether or not unread data is stored, and detecting the free area of the data storage means based on the stored flag, A storage address selection unit that selects an address of any one area as the storage address, and a flag update that updates the flag based on storage of newly input data and reading of the stored data by the output unit And the data storage means adds the input to the address generated by the storage address generation means. Stores any system data that is input.
[0013]
DETAILED DESCRIPTION OF THE INVENTION
  An embodiment of the present invention will be described with reference to FIGS.
  In the present embodiment, a three-dimensional computer graphics system that is applied to a home game machine or the like and displays a desired three-dimensional image of an arbitrary three-dimensional object model on a display at high speed is exemplified. explain.
[0014]
  First, the overall configuration and operation of the three-dimensional computer graphics system will be described with reference to FIG.
  This three-dimensional computer graphics system expresses a three-dimensional model as a united figure of triangles (polygons), draws this polygon, determines the color of each pixel on the display screen, and displays the polygon on the display This is a system that performs rendering processing.
  In the three-dimensional computer graphics system 1, in addition to (x, y) coordinates representing a plane, a three-dimensional object is represented using a z coordinate representing depth, and the three coordinates x, y, z To specify an arbitrary point in the three-dimensional space.
[0015]
  FIG. 1 is a block diagram showing the configuration of the three-dimensional computer graphics system 1.
  The three-dimensional computer graphics system 1 includes an input unit 2, a three-dimensional image generation device 3, and a display device 4.
  The three-dimensional image generation apparatus 3 includes a geometry calculation unit 32, a parameter calculation unit 33, a pixel generation unit 34, a texture mapping unit 35, a texture memory 36, a memory interface (I / F) 37, an image memory 38, and a programmable display. A control unit 39 is included.
[0016]
  First, the configuration and function of each unit will be described.
  The input unit 2 inputs data of a stereoscopic model to be displayed to the three-dimensional image generation device 3. In the present embodiment, since the three-dimensional computer graphics system 1 is applied to a consumer game machine, the input unit 2 is connected to a main controller or the like that controls the game itself of the consumer game machine. . In the main control device, a screen to be displayed is determined based on the progress of the game, etc., a three-dimensional model necessary for the screen display is selected, and information on the display method is generated. Accordingly, the input unit 2 receives these pieces of information from the main control device of the consumer game machine and converts them into a form suitable for input to the three-dimensional image generation device 3. To do.
  Specifically, the input unit 2 inputs the polygon data of the stereoscopic model to be displayed as described above to the geometry calculation unit 32 of the three-dimensional image generation device 3. The input polygon data is x, y, z coordinate data of each vertex and accompanying data such as color, transparency, texture, and the like.
[0017]
  The geometry calculation unit 32 arranges the polygon input from the input unit 2 at a desired position in the three-dimensional space and generates polygon data at that position. Specifically, for each vertex (x, y, z) of the polygon, geometric conversion processing (also referred to as geometry conversion processing) such as translation conversion, parallel conversion, and rotation conversion is performed. The polygon data subjected to the geometry conversion process is output to the parameter calculation unit 33.
[0018]
  The parameter calculation unit 33 obtains parameters necessary for generating pixel data inside the polygon in the pixel generation unit 34 based on the polygon data input from the geometry calculation unit 32, that is, the data of each vertex of the polygon. , Output to the pixel generator 34. Specifically, for example, information on color, depth, and texture inclination is obtained.
[0019]
The pixel generation unit 34 linearly interpolates between the vertices of the polygon based on the polygon data subjected to the geometry conversion processing by the geometry calculation unit 32 and the parameters obtained by the parameter calculation unit 33, and the inside of the polygon and the edge Partial pixel data is generated. The pixel generation circuit 34 generates an address on a predetermined two-dimensional plane corresponding to the display of the pixel data. The generated pixel data and address are sequentially output to the texture mapping unit 35.
[0020]
The texture mapping unit 35 performs texture mapping processing on the pixel data generated by the pixel generation unit 34 using the texture data stored in the texture memory 36. The pixel data and address subjected to the texture mapping process are output to the memory interface 37.
[0021]
The texture memory 36 is a memory for storing a texture pattern used when texture mapping is performed by the texture mapping unit 35.
[0022]
The memory interface 37 generates new pixel data based on the pixel data and address input from the texture mapping unit 35 and the corresponding pixel data already stored in the image memory 38 and stores the new pixel data in the image memory 38. To do. That is, the memory interface 37 reads out pixel data corresponding to the address input from the texture mapping unit 35 from the image memory 38, and uses the pixel data and the pixel data input from the texture mapping unit 35 to perform a desired process. Pixel calculation processing is performed, and the obtained pixel data is written into the image memory 38.
In addition, when a display area is designated from the programmable display control unit 39, the memory interface 37 reads out pixel data of the display area from the image memory 38 and outputs it to the programmable display control unit 39.
[0023]
The image memory 38 is a memory for recording image data for display, and has two memory buffers, a frame buffer and a Z buffer, which can be accessed simultaneously. The frame buffer stores frame data that is color information of each pixel. The Z buffer stores Z data that is depth information (Z value) of each pixel.
The image memory 38 will be described in detail later.
[0024]
The programmable display control unit 39 converts pixel data in the display area read from the image memory 38 via the memory interface 37 into, for example, a predetermined analog signal that can be displayed by the display device 4 and outputs the analog signal to the display device 4. The format of the output signal at this time and the conversion condition based on the format can be arbitrarily set by programming based on the signal characteristics of the display device 4 to be connected.
The programmable display controller 39 requests the memory interface 37 for pixel data in the display area to be displayed, and thereby reads out pixel data in the desired display area from the image memory 38.
[0025]
In the present embodiment, display device 4 is a television receiver having a video input terminal or the like normally used at home. An analog video signal is input from the programmable display control unit 39 of the three-dimensional image generation device 3 through a video signal input terminal, and a three-dimensional image is displayed on the screen based on the signal.
[0026]
Next, the operation of the three-dimensional computer graphics system 1 will be described.
First, when a three-dimensional image to be displayed is determined in a main control device that controls the game itself of the consumer game machine, information on a three-dimensional model necessary for screen display is input to the input unit 2. Based on this information, the input unit 2 inputs polygon data of a three-dimensional model for displaying the image to the three-dimensional image generation device 3.
Each polygon data input to the 3D image generation device 3 is first translated, converted and rotated by the geometry calculation unit 32 so that it is arranged at a desired position in the 3D space for screen display. Geometry conversion processing such as conversion is performed.
[0027]
Next, the parameter calculation unit 33 obtains parameters necessary for generating pixel data inside the polygon with respect to the polygon data subjected to the coordinate conversion, and the pixel generation unit 34 actually determines between the vertices of the polygon. Is linearly interpolated to generate pixel data inside and at the edge of the polygon.
The generated pixel data is sequentially input to the texture mapping unit 35. The texture mapping unit 35 performs texture mapping processing with reference to the texture pattern data recorded in the texture memory 36, and the generated pixel data is It is stored in the image memory 38 via the memory interface 37.
[0028]
The pixel data stored in the image memory 38 is appropriately subjected to desired processing based on other pixel data input through a similar path or arbitrary control data.
As a result, the latest image data is always stored in the image memory 38 and used for screen display. That is, a request for outputting data in a predetermined area to be displayed on the display device 4 is made from the programmable display control unit 39 to the memory interface 37, and pixel data in that area is read from the image memory 38 as appropriate. The programmable display control unit 39 converts the signal into a predetermined signal for screen display and outputs the signal to the display device 4.
Thereby, a desired image is displayed on the screen on the display device 4.
[0029]
Next, the peripheral circuit of the image memory 38 according to the present invention of the three-dimensional computer graphics system 1 will be described in detail.
In the three-dimensional computer graphics system 1, the texture mapping unit 35, the memory interface 37, and the programmable display control unit 39 are components that substantially access the image memory 38. In the following description, these processing units are regarded as one signal processing unit for the image memory 38 so that the features related to the present invention become clear.
The actual circuit may have a configuration in which each component is independent as shown in FIG. 1, or may be integrally configured using, for example, a general-purpose signal processor, as will be described later. .
[0030]
FIG. 2 is a diagram logically showing peripheral circuits of the image memory 38 (hereinafter referred to as the memory device 50). The configuration of the texture mapping unit 35 to the programmable display control unit 39 shown in FIG. It is the figure shown from another viewpoint.
As described above, the memory device 50 has a function of sequentially buffering two systems of data, for example, frame data that is color information of each pixel and Z data that is depth information (Z value) of each pixel. Shall have.
[0031]
The MTXPC 51 is a signal processing unit in which a memory interface 37, a mapping mapping unit 35, and a programmable display control unit 39 are integrated in the three-dimensional computer graphics system 1. Image data generated by the MTXPC 51 is input to the FIFO memory 100.
The FIFO memory 100 sequentially stores the image data input from the MTXPC 51 regardless of the system (type), buffers it, and outputs it to the signal processing unit 53.
[0032]
The signal processing unit 53 performs arbitrary processing on the image data read from the FIFO memory 100 and stores it in the image memory 38 again. As described above, the signal processing unit 53 performs a desired pixel calculation process using, for example, corresponding pixel data already stored in the image memory 38 and texture-mapped pixel data. The obtained pixel data is written into the image memory 38 again.
The first RAM 54 and the second RAM 55 are 2-bank FIFO memories each storing data of a specific system, and sequentially store data input from the signal processing unit 53. Although not shown, for example, in response to a read request from the MTXPC 51, the stored data is output in the stored order.
The first RAM 54 (bank A) and the second RAM 55 (bank B) are each 275 bits wide and have a total storage capacity of 16 words.
[0033]
The memory device 50 (peripheral circuit of the image memory 38) can logically show the configuration as described above. Hereinafter, the FIFO memory 100 according to the present invention will be described with reference to FIGS. To do.
As described above, the FIFO memory 100 is a memory for buffering drawing data as the image memory 38 in FIG. 1, and has a capacity of 275 bits × 16 words. Further, the FIFO memory has a latency 3 from reading to reading and a reading latency 2 corresponding to two systems of data by the shared data buffer.
[0034]
First, an outline of the configuration of the FIFO memory 100 will be described with reference to FIG.
FIG. 3 is a block diagram schematically showing the main configuration of the FIFO memory 100 suitable for showing the data flow in the FIFO memory 100.
As shown in FIG. 3, the FIFO memory 100 includes a dual port RAM (DportRAM) 120, an output register (REG) 140, a write pointer unit (Wpointer) 160, a read pointer unit (Rpointer) 180, and a full signal generation unit (FullGen). 200 and an empty signal generator (EMPTY
Gen) 220.
[0035]
The dual port RAM 120 is a memory capable of simultaneous writing and reading of 275 bits × 16 words.
The dual port RAM 120 has input data DATAin applied to the data input terminal, and stores the data sequentially based on the write control signal from the write pointer unit 160. The data stored in the dual port RAM 120 is read out in the order stored based on the read control signal from the read pointer unit 180 and is output to the output register 140.
[0036]
The output register 140 stores the data RAMout read from the dual port RAM 120 based on the read control signal output from the read pointer unit 180 and outputs the data RAMout from the FIFO memory 100.
[0037]
The write pointer unit 160 generates a storage control signal for the dual port RAM 120 based on the write enable signals WE_A and WE_B of the banks A and B input to the FIFO memory 100, and applies them to the dual port RAM 120. Controls storage of data in the dual port RAM 120.
[0038]
The read pointer unit 180 generates a read control signal for the dual port RAM 120 based on the read enable signals RE_A and RE_B of the banks A and B input to the FIFO memory 100 and applies them to the dual port RAM 120. Controls reading of data from the dual port RAM 120.
[0039]
The full signal generation unit 200 indicates that the total of data stored in the dual port RAM 120 is 16, 15, 14 or more based on various control signals and status signals in the FIFO memory 100 (not shown). The signal FULL, the pre-full signal PFULL, and the pre-pre-full signal PFULL, in other words, the pre-signal FULL indicating that the storage area of the dual port RAM 120 is full, and the pre-state indicating that one more word is full. A full signal PFULL and a pre-pre-full signal PFULL indicating a pre-full state in one word are generated, and the control unit (not shown) corresponding to the memory interface 37 of the three-dimensional computer graphics system 1 Output.
[0040]
The empty signal generation unit 220 generates a signal EMPTY indicating that there is no data stored in the dual port RAM 120, that is, an empty state, based on various control signals and status signals in the FIFO memory 100 (not shown). The data is output to a control unit (not shown) corresponding to the memory interface 37 of the three-dimensional computer graphics system 1.
A control unit (not shown) controls writing and reading of data to and from the image memory 38 (FIFO memory 100) based on these signals FULL, PFULL, PFULL, and EMPTY.
[0041]
Next, a more detailed configuration of the FIFO memory 100 will be described with reference to FIG. 4 and FIG.
FIG. 4 is a circuit diagram showing a detailed configuration of the FIFO memory 100.
The FIFO memory 100 includes a dual port RAM 120, an output register 140, and a control unit 150.
The control unit 150 includes a write enable decoder 151, a read enable decoder 152, a selector 153, a register 154, a full signal generation unit 200, an empty signal generation unit 220, and an address control unit 240.
[0042]
As described above, the dual port RAM 120 is a memory capable of simultaneous writing and reading of 275 bits × 16 words. The dual port RAM 120 stores the applied data in based on the write address wp_m input from the address control unit 240 of the control unit 150 and the write enable signal ram_we input from the write enable decoder 151. Further, based on the read address rp_m input from the selector 153 of the control unit 150 and the read enable signal ram_re input from the read enable decoder 152, data is read and output to the output register 140.
[0043]
The output register 140 temporarily stores the data read from the dual port RAM 120 based on the enable signal oreg_en input from the register 154 of the control unit 150 and outputs the data from the FIFO memory 100 as the output signal out.
[0044]
The write enable decoder 151 of the control unit 150 is such that the dual port RAM 120 input from the address control unit 240 and the write enable signals we_a and we_b for the two banks A and B input from the outside to the FIFO memory 100 are full. The write enable signal ram_we for the dual port RAM 120 and the signals ram_we_a and ram_we_b indicating the writing of data in each bank are generated based on the signal ram_full indicating
[0045]
Specifically, when the dual port RAM 120 is not full, the write enable decoder 151 activates the write enable signal ram_we for the dual port RAM 120 when one of the write enable signals we_a and we_b is input. In response to the write enable signals we_a and we_b, one of the signals ram_we_a and ram_we_b indicating data writing is activated. When the signal ram_full indicating that the dual port RAM 120 is full is active, the write enable decoder 151 does not activate any signal.
[0046]
The read enable decoder 152 is a signal indicating that the read data re_a and re_b for each of the two banks A and B inputted to the FIFO memory 100 from the outside and the storage data of each bank inputted from the address control unit 240 are empty. Based on ram_empty_a and ram_empty_b, a read enable signal ram_re for the dual port RAM 120 and signals ram_re_a and ram_re_b indicating data reading of each bank are generated and output to the dual port RAM 120 and the address control unit 240, respectively.
[0047]
Specifically, the read enable decoder 152 receives the read signals re_a and re_b for either the bank A or the bank B, and when the bank is not empty, The read enable signal ram_re is activated, and signals ram_re_a and ram_re_b indicating the reading of data in the bank are activated. When the signal ram_empty_a or ram_empty_b indicating that the bank is empty is active, the read enable decoder 151 does not activate any signal.
[0048]
The selector 153 selects one of the addresses rp_a and rp_b of the first data of each bank stored in the dual port RAM 120 and input from the address control unit 240 and applies the selected address to the dual port RAM 120. In this embodiment, when the read signal re_b of the bank B input to the FIFO memory 100 is active, the start address rp_b of the storage data of the bank B is selected, and when not, the start address rp_a of the storage data of the bank A is selected. select.
[0049]
The register 154 latches the read enable signal ram_re output from the read enable decoder 152 to the dual port RAM 120 by one clock, and uses the output register 140 as an enable signal oreg_en for storing the data output from the dual port RAM 120 as an output register. Output to 140.
[0050]
Based on a full signal full generated by an address control unit 240 described later, the full signal generation unit 200 further includes a signal PFULL indicating a state in which one more word is full, and a state in which another one word is PFULL. Each signal PFULL indicated is generated and output.
[0051]
The empty signal generation unit 220 is in a state where there is no data stored in the dual port RAM 120 based on signals empty_a and empty_b indicating that the data of each bank generated by the address control unit 240 described later is empty, that is, empty. A signal EMPTY indicating an abnormal state is generated and output.
[0052]
The address control unit 240 generates various control signals for the dual port RAM 120 and the outside as described above, and manages the order of data stored in the dual port RAM 120.
The configuration of the address control unit 240 will be described in detail with reference to FIG.
FIG. 5 is a circuit diagram showing a configuration of the address control unit 240.
The address control unit 240 includes a RAM use area flag 241, a flag update unit 242, a write address decoder 243, a bank A write address storage unit 244, a bank B write address storage unit 245, a selector 246, a next pointer 247, and a bank A read address selection. 248, bank A read address register 249, bank B read address selection unit 250, bank B read address register 251, bank A empty detection counter 252, and bank B empty detection counter 253.
[0053]
The RAM use area flag 241 stores a flag indicating whether or not data that has not yet been read is stored in each address of the dual port RAM 120, and manages the use state of the dual port RAM 120. This is a 16-bit register with 1 bit corresponding to each address.
The RAM use area flag 241 is input when a signal ram_we_a (we_a in the address control unit 240, the same applies below) or ram_we_b (we_b) indicating the writing of any bank is input from the write enable decoder 151, or the read enable decoder When signals ram_re_a (re_a) and ram_re_b (re_b) indicating reading of any bank are input from 152, the data is updated with new flag data applied from the flag update unit 242.
[0054]
When data is written to and read from the dual-port RAM 120, the flag update unit 242 reads signals ram_we_a (we_a), ram_we_b (we_b) indicating the writing of any bank and any bank. When any one of the signals ram_re_a (re_a) and ram_re_b (re_b) indicating the above is input, update data of the RAM use area flag 241 is generated and applied to the RAM use area flag 241.
[0055]
The write address decoder 243 generates an address for storing data next based on the use flag of the storage area of the dual port RAM 120 stored in the RAM use area flag 241, and generates the bank A write address storage unit 244, the bank B In addition to being output to the write address storage unit 245 and the next pointer 247, it is output from the address control unit 240 and applied to the dual port RAM 120.
When data is stored in the dual port RAM 120 with the bank A or bank B being empty, the address wp is directly selected by the bank A read address selection unit 248 or the bank B read address without using the next pointer 247. The data is input to the unit 250 and used for reading data.
[0056]
At this time, the write address decoder 243 selects a storage area in order from the larger address among the empty areas of the dual port RAM 120 and outputs the addresses.
Further, the write address decoder 243 determines whether data that has not been read yet is stored in all the storage areas of the dual port RAM 120 based on the use flag of the dual port RAM 120 stored in the RAM use area flag 241. That is, whether or not the dual port RAM 120 is full is detected, and if it is full, a full signal full is output.
[0057]
The bank A write address storage unit 244 is a register that stores the address of the dual port RAM 120 into which data is written at the end of the bank A. The bank A write address storage unit 244 stores the output address of the write address decoder 243 when the signal ram_we_a (we_a) indicating writing to the bank A becomes active.
[0058]
The bank B write address storage unit 245 is a register that stores the address of the dual port RAM 120 into which data is written at the end of the bank B. The bank B write address storage unit 245 stores an output address of the write address decoder 243 when the signal ram_we_b (we_b) indicating writing to the bank B becomes active.
[0059]
The selector 246 selects an address stored in the bank A write address storage unit 244 or the bank B write address storage unit 245 according to the bank to which data is written, and applies the selected address to the next pointer 247.
[0060]
The next pointer 247 is a register that stores the order of data for each bank. The next pointer 247 has the same 16-word address space as the dual port RAM 120, and is a register file of 4 bits for each word.
The next pointer 247 stores the address output from the write address decoder 243 as the address selected and applied by the selector 246 each time new data is written into the dual port RAM 120.
As a result, each time new data is written to the dual port RAM 120, the next pointer 247 stores the data at the address where the previous data written to the same bank as the data is stored. The stored address is stored. In other words, each address of the next pointer 247 stores data of the same bank as the data stored at the address and the address at which the next data following the data is stored.
[0061]
The bank A read address selection unit 248 sequentially selects bank A data from the 16-word data of the next pointer 247 and outputs the selected data to the bank A read address register 249. Each time bank A data is read, the bank A read address selection unit 248 is data of the address selected by itself, and the data of the next pointer 247 of the address stored in the bank A read address register 249 in the subsequent stage is read. Select in order.
[0062]
The bank A read address register 249 stores data of the next pointer 247 selected by the bank A read address selection unit 248, that is, an address ram_re_a (re_a) of data to be read next stored as data of the bank A. The stored address is output from the address control unit 240 to the read enable decoder 152.
[0063]
The bank B read address selection unit 250 sequentially selects bank B data from the 16-word data of the next pointer 247 and outputs the selected data to the bank B read address register 251. Each time bank B data is read, the bank B read address selection unit 250 is the data of the address selected by itself, and the data of the next pointer 247 of the address stored in the bank B read address register 251 at the subsequent stage is read. Select in order.
[0064]
The bank B read address register 251 is a register that stores data of the next pointer 247 selected by the bank B read address selection unit 250, that is, an address ram_re_b (re_b) of data to be read next stored as bank B data. The stored address is output from the address control unit 240 to the read enable decoder 152.
[0065]
The bank A empty detection counter 252 is a counter that counts the number of valid data in the bank A. The bank A empty detection counter 252 is incremented every time a signal ram_we_a (we_a) indicating writing to the bank A is input, and a signal indicating reading from the bank A Each time ram_re_a (re_a) is input, it is decremented. When the counter value is 0, it is assumed that no data is stored in the bank A, and the empty signal ram_empty_a (empty_a) is activated.
[0066]
The bank B empty detection counter 253 is a counter that counts the number of valid data in the bank B. The bank B empty detection counter 253 is incremented each time a signal ram_we_b (we_b) indicating writing to the bank B is input, and indicates a reading from the bank B. Each time ram_re_b (re_b) is input, it is decremented. When the counter value is 0, the empty signal ram_empty_b (empty_b) is activated assuming that no data is stored in the bank B.
[0067]
Next, the operation of the FIFO memory 100 having such a configuration will be described with reference to FIGS.
First, with reference to FIG. 4 and FIG. 5, the operation will be described in detail with a focus on the address control method in the FIFO memory 100.
[0068]
First, for example, when data of the bank A (first system) is stored, the input data DATAin is applied to the dual port RAM 120, and the write enable signal we_a of the bank A is activated.
The write enable decoder 151 of the control unit 150 of the FIFO memory 100 detects the write enable signal we_a, activates the write enable signal ram_we for the dual port RAM 120, and writes data to the bank A to the address control unit 240. The signal ram_we_a (we_a) is input.
Since the address controller 240 has already detected the address of the empty area in the write address decoder 243 and applied it to the dual port RAM 120, the dual port RAM 120 uses the write enable signal ram_we from the write enable decoder 151. Data is recorded at the address wp designated by the write address decoder 243.
[0069]
In the address control unit 240, the write address wp is stored in the bank A write address storage unit 244 based on the signal ram_we_a (we_a) for writing data to the bank A input from the write enable decoder 151.
Further, the flag update unit 242 generates new flag data in which the flag of the address wp is used for the flag stored in the RAM use area flag 241, and thereby the RAM use area flag The contents of 241 are updated.
The bank A read address selection unit 248 selects this address wp and sets it in the bank A read address register 249 as the address of the first data of the bank A.
Further, based on the updated flag data of the RAM use area flag 241, the write address decoder 243 generates an address to which data is next written and outputs it as a new address wp.
[0070]
Next, for example, assuming that data in bank B (second system) is stored, input data DATAin is applied to dual port RAM 120, and write enable signal we_b in bank B is activated. This write enable signal we_b is detected by the write enable decoder 151 of the control unit 150 and activates the write enable signal ram_we for the dual port RAM 120. As a result, the input data is written to the address ram_wp (wp) already output from the address control unit 240 and applied to the dual port RAM 120.
[0071]
Further, a signal ram_we_b (we_b) for writing data to the bank B is input from the write enable decoder 151 to the address control unit 240, whereby the write address wp is stored in the bank B write address storage unit 245.
Further, the flag update unit 242 generates new flag data in which the flag of the address wp is used for the flag stored in the RAM use area flag 241, and thereby the RAM use area flag The contents of 241 are updated.
The bank B read address selection unit 250 selects this address wp and sets it in the bank B read address register 251 as the address of the first data in the bank B.
Further, based on the updated flag data of the RAM use area flag 241, the write address decoder 243 generates an address to which data is next written and outputs it as a new address wp.
[0072]
Next, assuming that the data of the bank A is stored again, the input data DATAin is applied to the dual port RAM 120, and the write enable signal we_a of the bank A is activated. The write enable decoder 151 detects the write enable signal we_a and activates the write enable signal ram_we for the dual port RAM 120, thereby inputting the address ram_wp (wp) applied to the dual port RAM 120 from the address control unit 240. Written data is written.
[0073]
At this time, the address controller 240 uses the selector 246 to output the first bank, which is the output of the bank A write address storage unit 244, based on the signal ram_we_a (we_a) for writing data to the input bank A. The address at which the A data is recorded is selected and applied to the next pointer 247, and the current data recording address, that is, the address at which the second bank A data is recorded is stored in the first data recording address. The
Thereafter, as in the first time or when writing to the bank B, this recording address is recorded in the bank A write address storage unit 244, and the flag update unit 242 stores the contents of the flag stored in the RAM usage area flag 241. Is updated, and the write address decoder 243 generates a new write address based on the updated flag data of the RAM use area flag 241.
Note that when storing additional data from the state in which data has already been stored, the address is not written from the write address decoder 243 to the bank A read address register 249.
[0074]
Now, in the state where data is written in this way, when the reading of the data of the bank A is requested, the read enable signal re_a of the bank A is activated.
The read enable decoder 152 of the control unit 150 of the FIFO memory 100 detects the read enable signal we_a, activates the read enable signal ram_re for the dual port RAM 120, and reads the bank A data to the address control unit 240. Signal ram_re_a (re_a).
[0075]
From the address control unit 240, the stored data start address of each bank has already been output to the selector 153 via the bank A read address register 249 and the bank B read address register 251.
In the selector 153, since the read enable signal re_b of the bank B is negative, the leading address of the bank A that is the output of the bank A read address register 249 is selected and applied to the dual port RAM 120.
As a result, the first data stored in bank A is read from the dual port RAM 120 and output from the FIFO memory 100 via the output register 140.
[0076]
Further, in the address control unit 240, the bank A read address selection unit 248 receives the bank A from the next pointer 247 based on the signal ram_re_a (re_a) for reading the data of the bank A input from the read enable decoder 152. The address data read from the current data stored in the read address register 249 is selected and set in the bank A read address register 249 as the address of the next data in the bank A. As a result, the address control unit 240 outputs the storage data head address of the new bank A to the selector 153.
Further, in the address control unit 240, new flag data in which the flag of the address wp is not used is generated by the flag update unit 242 with respect to the flag stored in the RAM use area flag 241. As a result, the contents of the RAM use area flag 241 are updated.
[0077]
In this way, data reading and writing of each bank are sequentially performed thereafter.
[0078]
Finally, the overall operation of the FIFO memory 100 will be described with reference to FIG. 3 and FIG.
6A and 6B are time charts showing the overall operation of the FIFO memory 100. FIG. 6A is a diagram showing an operation clock CLK of the FIFO memory 100, and FIG. 6B is a diagram showing input data DATAin to the FIFO memory 100. ) Is a diagram showing data FIFOin applied to the dual port RAM 120, (D) is a write enable signal WE_A for the bank A, (E) is a write enable signal WE_B for the bank B, (F) is the entire empty signal EMPTY, (G) is full signal FULL, (H) is pre-full signal PFULL, (I) is pre-pre-full signal PFULL, (J) is a read enable signal for bank B, and (K) is from dual port RAM 120. Output data FIFOout.
[0079]
First, as shown in FIG. 6B, when data is sequentially input to the FIFO memory 100, the data D0 to D3 are stored in the bank A, and the data D4 to D7 are stored in the bank B, FIG. D) and write enable signals for banks A and B are activated as shown in FIG. 6E, signal processing is performed in the FIFO memory 100 as described above, and data is stored in a desired form. Is done.
Then, the empty signal becomes negative when the data D0 is stored as shown in FIG. 6 (F), and pre-pre-play is performed when the six data up to the data D5 are stored as shown in FIG. 6 (I). The full signal PFULL becomes active, and the pre-full signal PFULL becomes active at the stage where seven data up to the data D6 are stored as shown in FIG. 6 (H), and further, as shown in FIG. 6 (G). In this way, the full signal FULL becomes active at the stage where eight data up to the data D7 are stored.
[0080]
In this state, as shown in FIG. 6 (J), by activating the read enable signal for bank B, as shown in FIG. 6 (K), data in bank B below data D4 is transferred. Read sequentially. F
As the data is read out, the full signal FULL shown in FIG. 6G, the pre-full signal PFUL shown in FIG. 6H, and the pre-pre-full signal PFULL shown in FIG. 6I become negative. To go.
The FIFO memory 100 operates in this way.
[0081]
As described above, in the FIFO memory 100 of the present embodiment, two systems of FIFOs can be realized by using one dual port RAM 120. As a result, the FIFO margin can be reduced as a whole, and a part of the control circuit can be shared as compared with the case where two completely independent FIFOs are provided. As a result, the circuit scale is greatly increased. Can be reduced.
Further, the storage capacity allocation in the two systems may be determined dynamically based on the input data, and is not fixed in advance. Therefore, as a whole, a more flexible buffer can be configured.
[0082]
Then, by applying the FIFO memory 100 having such a configuration to, for example, the three-dimensional image generating apparatus 3 of the three-dimensional computer graphics system 1 as described above, each component unit that performs complex and high-speed processing is used. The data can be transferred efficiently with a small scale circuit, and as a result, a desired image can be generated efficiently.
[0083]
The present invention is not limited to the embodiment described above, and various modifications can be made.
For example, in the present embodiment, a FIFO that processes two types (two systems) of data is illustrated, but this is not limited to two systems, and any number of systems may be processed.
[0084]
The memory for actually storing data is not limited to the dual port RAM, and a single port RAM may be used. In that case, for example, two single-port RAMs are provided, and storage and reading of data cannot be performed simultaneously by controlling storage and reading of data so that storage and reading of one single-port RAM are not performed simultaneously. A FIFO memory that operates in the same manner as the present invention can be configured using a single-port RAM and without increasing the operating clock.
Of course, any memory other than the single port RAM may be used as the type of memory.
[0085]
In the present embodiment, the three-dimensional image generation apparatus is illustrated as an application example of the FIFO memory 100 memory 100. However, this FIFO memory apparatus can be applied to any suitable apparatus as a normal FIFO memory.
[0086]
【The invention's effect】
As described above, according to the present invention, it is possible to provide a data storage apparatus and method that can appropriately provide a FIFO function for data of a plurality of systems with a smaller circuit scale.
In addition, it is possible to provide an image processing apparatus capable of appropriately transferring data in each processing means with a smaller circuit scale, and thereby performing desired image processing efficiently.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of a three-dimensional computer graphics system to which a memory device of the present invention is applied according to an embodiment of the present invention.
2 is a diagram logically showing a configuration of a memory device including an image memory and its peripheral circuits of the three-dimensional computer graphics system shown in FIG. 1. FIG.
FIG. 3 is a block diagram schematically showing a configuration of a FIFO memory of a memory device suitable for showing a data flow in the memory device shown in FIG. 2;
FIG. 4 is a circuit diagram showing a detailed configuration of the FIFO memory shown in FIG. 3;
FIG. 5 is a circuit diagram showing a configuration of an address control unit of the FIFO memory shown in FIG. 4;
FIG. 6 is a time chart showing the overall operation of the FIFO memory shown in FIG. 3;
FIG. 7 is a diagram logically showing a configuration of a memory device including an image memory and its peripheral circuit in a conventional three-dimensional computer graphics system.
[Explanation of symbols]
DESCRIPTION OF SYMBOLS 1 ... Three-dimensional computer graphics system, 2 ... Input part, 3 ... Three-dimensional image generation apparatus, 4 ... Display apparatus, 32 ... Geometry calculation part, 33 ... Parameter calculation part, 34 ... Pixel generation part, 35 ... Texture mapping part 36 ... Texture memory, 37 ... Memory interface, 38 ... Image memory, 39 ... Programmable display control unit, 50 ... Memory device, 51 ... MTXPC, 53 ... Signal processing unit, 54 ... First RAM, 55 ... Second RAM, 100 ... FIFO memory, 120 ... Dual port RAM, 140 ... Output register, 150 ... Control unit, 151 ... Write enable decoder, 152 ... Read enable decoder, 153 ... Selector, 154 ... Register, 160 ... Write pointer unit, 180 ... Read pointer part, 200 ... Full signal generation , 220 ... Empty signal generation unit, 240 ... Address control unit, 241 ... RAM use area flag, 242 ... Flag update unit, 243 ... Write address decoder, 244 ... Bank A write address storage unit, 245 ... Bank B write address storage , 246 ... selector, 247 ... next pointer, 248 ... bank A read address selection section, 249 ... bank A read address register, 250 ... bank B read address selection section, 251 ... bank B read address register, 252 ... bank A Empty detection counter, 253 ... Bank B empty detection counter

Claims (8)

入力される複数系統のデータを順に記憶するデータ記憶手段と、
前記データ記憶手段に記憶されたデータの記憶順序を前記系統ごとに管理する記憶順序管理手段と、
各系統ごとのデータの出力要求に応じて、前記記憶順序管理手段に管理されている前記系統ごとのデータの記憶順序に基づいて、当該要求された系統の前記記憶されているデータを前記入力された順に読み出し出力する出力手段と
を有し、
前記記憶順序管理手段は、
前記データ記憶手段の未だ読み出されていないデータが記憶されている領域以外の空き領域の任意のアドレスを、入力されるデータを記憶する記憶アドレスとして生成する記憶アドレス生成手段と、
前記各系統ごとに、最後に入力され記憶されたデータに対する前記記憶アドレスを記憶するアドレス記憶手段と、
前記データ記憶手段のアドレス空間に対応したアドレス空間を有し、各アドレスのデータとして、前記データ記憶手段の対応するアドレスに記憶されているデータと同一の系統の前記入力されるデータで、当該アドレスのデータの次に入力され記憶されたデータが記憶されている前記データ記憶手段のアドレスを記憶するテーブルと、
入力される任意の系統のデータが前記データ記憶手段の前記生成された記憶アドレスに記憶された際に、前記テーブルの前記アドレス記憶手段に記憶されているアドレスに、前記生成された記憶アドレスを記憶するテーブル更新手段と、
を有し、
前記記憶アドレス生成手段は、
前記データ記憶手段の各アドレスごとの当該アドレスに未だ読み出されていないデータが記憶されているか否かを示すフラグを記憶するフラグ記憶手段と、
前記記憶されているフラグに基づいて、前記データ記憶手段の前記空き領域を検出し、当該空き領域のいずれか1の領域のアドレスを前記記憶アドレスとして選択する記憶アドレス選択手段と、
新たに入力されるデータの記憶および前記出力手段による記憶されたデータの読み出しに基づいて、前記フラグを更新するフラグ更新手段とを有し、
前記データ記憶手段は、前記記憶アドレス生成手段により生成されたアドレスに、前記入力される任意の系統のデータを記憶する
データ記憶装置。
Data storage means for sequentially storing input data of a plurality of systems;
Storage order management means for managing the storage order of the data stored in the data storage means for each of the systems;
In response to a data output request for each system, the stored data of the requested system is input based on the storage order of the data for each system managed by the storage order management means. Output means for reading out and outputting in the order of
The storage order management means includes
A storage address generating means for generating an arbitrary address of an empty area other than an area where data that has not yet been read from the data storage means is stored as a storage address for storing input data;
For each of the systems, address storage means for storing the storage address for the last input and stored data;
It has an address space corresponding to the address space of the data storage means, and the input data of the same system as the data stored in the corresponding address of the data storage means as the data of each address, the address and lutein Buru to store an address of the data memory means the data stored is input to the next is stored data,
When the data of an arbitrary system to be inputted is stored in the generated storage address of the data storage means, the generated storage address is stored in the address stored in the address storage means of the table. Table updating means to
Have
The storage address generating means
Flag storage means for storing a flag indicating whether or not data that has not yet been read is stored in the address for each address of the data storage means;
Storage address selection means for detecting the free area of the data storage means based on the stored flag and selecting the address of any one of the free areas as the storage address;
Flag update means for updating the flag based on storage of newly input data and reading of stored data by the output means;
The data storage means stores data of an arbitrary system to be inputted at an address generated by the storage address generation means.
前記出力手段は、
前記各系統ごとに、前記データ記憶手段より最後にデータを読み出したアドレスの、前記テーブルに記憶されている前記記憶アドレスを、読み出しアドレスとして記憶する読み出しアドレス記憶手段と、
任意の前記系統のデータの出力要求があった場合に、前記データ記憶手段の前記読み出しアドレス記憶手段に記憶されている当該系統の前記読み出しアドレスのデータを読み出し出力するデータ読み出し手段と、
を有する請求項1に記載のデータ記憶装置。
The output means includes
Read address storage means for storing, as a read address, the storage address stored in the table of the address at which data was last read from the data storage means for each of the systems,
Data read means for reading out and outputting the data of the read address of the system stored in the read address storage means of the data storage means when there is an output request of data of the arbitrary system,
The data storage device according to claim 1, comprising:
前記データ記憶手段、前記記憶順序管理手段および前記出力手段は、半導体集積回路として構成されている
請求項1に記載のデータ記憶装置。
The data storage device according to claim 1, wherein the data storage unit, the storage order management unit, and the output unit are configured as a semiconductor integrated circuit.
前記データ記憶手段は、データの記憶と読み出しを同サイクル中に行うことができるデュアルポートメモリを有する
請求項3に記載のデータ記憶装置。
The data storage device according to claim 3, wherein the data storage unit includes a dual port memory capable of storing and reading data during the same cycle.
データ記憶手段と、記憶順序管理手段と、出力手段とを有するデータ記憶装置のデータ記憶方法であって、
入力される複数系統のデータをメモリに記憶する第1の工程と、
前記記憶されたデータの記憶順序を前記系統ごとに管理する第2の工程と、
各系統ごとのデータの出力要求に応じて、前記管理されている前記系統ごとのデータの記憶順序に基づいて、当該要求された系統の前記記憶されているデータを前記入力された順に読み出し出力する第3の工程と、
を有し、
前記第2の工程は、
前記各系統ごとに、最後に入力され記憶されたデータに対する前記記憶アドレスを記憶しておく第4の工程と、
任意の系統のデータが入力された場合に、前記メモリの未だ読み出されていないデータが記憶されている領域以外の空き領域の任意のアドレスを、入力されるデータを記憶する記憶アドレスとして生成する第5の工程と、
前記データ記憶手段のアドレス空間に対応したアドレス空間を有し、各アドレスのデータとして、前記データ記憶手段の対応するアドレスに記憶されているデータと同一の系統の前記入力されるデータで、当該アドレスのデータの次に入力され記憶されたデータが記憶されている前記データ記憶手段のアドレスを記憶するテーブルの、前記記憶されている当該系統の最後に入力され記憶されたデータに対する記憶アドレスに、当該入力されるデータが前記メモリの前記生成された記憶アドレスに記憶された際に、当該生成された記憶アドレスを記憶する第6の工程と、
を有し、
前記第4の工程は、
前記メモリの各アドレスに未だ読み出されていないデータが記憶されているか否かを示すフラグを設定しておく第7の工程と、
前記記憶されているフラグに基づいて前記メモリの前記空き領域を検出する第8の工程と、
当該空き領域のいずれか1の領域のアドレスを前記記憶アドレスとして選択する第9の工程と、
を有するデータ記憶方法。
A data storage method of a data storage device having data storage means, storage order management means, and output means,
A first step of storing input data of a plurality of systems in a memory;
A second step of managing the storage order of the stored data for each of the systems;
In response to a data output request for each system, the stored data of the requested system is read and output in the input order based on the managed data storage order for each system. A third step;
Have
The second step includes
For each of the systems, a fourth step of storing the storage address for the last input and stored data;
When data of an arbitrary system is input, an arbitrary address in an empty area other than an area in which data that has not yet been read is stored is generated as a storage address for storing input data. A fifth step;
It has an address space corresponding to the address space of the data storage means, and the input data of the same system as the data stored in the corresponding address of the data storage means as the data of each address, the address data stored is input to the following table for storing an address of said data storage means having stored therein the data, the last entered stored address for the stored data of the lines being the storage, the A sixth step of storing the generated storage address when input data is stored in the generated storage address of the memory;
Have
The fourth step includes
A seventh step of setting a flag indicating whether data not yet read is stored in each address of the memory;
An eighth step of detecting the free area of the memory based on the stored flag;
A ninth step of selecting an address of any one of the empty areas as the storage address;
A data storage method comprising:
任意の表示用画像データを生成する画像生成手段と、
前記生成された表示用画像データを記憶する画像メモリと、
前記記憶された表示用画像データより所望の領域のデータを読み出し表示用画面データとして出力する出力手段と
を有し、
前記画像メモリは、
入力される複数系統のデータを順に記憶するデータ記憶手段と、
前記データ記憶手段に記憶されたデータの記憶順序を前記系統ごとに管理する記憶順序管理手段と、
各系統ごとのデータの出力要求に応じて、前記記憶順序管理手段に管理されている前記系統ごとのデータの記憶順序に基づいて、当該要求された系統の前記記憶されているデータを前記入力された順に読み出し出力する出力手段と
を有し、
前記記憶順序管理手段は、
前記データ記憶手段の未だ読み出されていないデータが記憶されている領域以外の空き領域の任意のアドレスを、入力されるデータを記憶する記憶アドレスとして生成する記憶アドレス生成手段と、
前記各系統ごとに、最後に入力され記憶されたデータに対する前記記憶アドレスを記憶するアドレス記憶手段と、
前記データ記憶手段のアドレス空間に対応したアドレス空間を有し、各アドレスのデータとして、前記データ記憶手段の対応するアドレスに記憶されているデータと同一の系統の前記入力されるデータで、当該アドレスのデータの次に入力され記憶されたデータが記憶されている前記データ記憶手段のアドレスを記憶するテーブルと、
入力される任意の系統のデータが前記データ記憶手段の前記生成された記憶アドレスに記憶された際に、前記テーブルの前記アドレス記憶手段に記憶されているアドレスに、前記生成された記憶アドレスを記憶するテーブル更新手段と、
を有し、
前記記憶アドレス生成手段は、
前記データ記憶手段の各アドレスごとの当該アドレスに未だ読み出されていないデータが記憶されているか否かを示すフラグを記憶するフラグ記憶手段と、
前記記憶されているフラグに基づいて、前記データ記憶手段の前記空き領域を検出し、当該空き領域のいずれか1の領域のアドレスを前記記憶アドレスとして選択する記憶アドレス選択手段と、
新たに入力されるデータの記憶および前記出力手段による記憶されたデータの読み出しに基づいて、前記フラグを更新するフラグ更新手段とを有し、
前記データ記憶手段は、前記記憶アドレス生成手段により生成されたアドレスに、前記入力される任意の系統のデータを記憶する
画像処理装置。
Image generating means for generating arbitrary display image data;
An image memory for storing the generated display image data;
Output means for reading out data of a desired area from the stored display image data and outputting it as display screen data;
The image memory is
Data storage means for sequentially storing input data of a plurality of systems;
Storage order management means for managing the storage order of the data stored in the data storage means for each of the systems;
In response to a data output request for each system, the stored data of the requested system is input based on the storage order of the data for each system managed by the storage order management means. Output means for reading out and outputting in the order of
The storage order management means includes
A storage address generating means for generating an arbitrary address of an empty area other than an area where data that has not yet been read from the data storage means is stored as a storage address for storing input data;
For each of the systems, address storage means for storing the storage address for the last input and stored data;
It has an address space corresponding to the address space of the data storage means, and the input data of the same system as the data stored in the corresponding address of the data storage means as the data of each address, the address and lutein Buru to store an address of the data memory means the data stored is input to the next is stored data,
When the data of an arbitrary system to be inputted is stored in the generated storage address of the data storage means, the generated storage address is stored in the address stored in the address storage means of the table. Table updating means to
Have
The storage address generating means
Flag storage means for storing a flag indicating whether or not data that has not yet been read is stored in the address for each address of the data storage means;
Storage address selection means for detecting the free area of the data storage means based on the stored flag and selecting the address of any one of the free areas as the storage address;
Flag update means for updating the flag based on storage of newly input data and reading of stored data by the output means;
The image processing apparatus, wherein the data storage unit stores the input data of an arbitrary system at the address generated by the storage address generation unit.
前記画像生成手段は、
任意の3次元立体モデルが、少なくとも3次元位置情報を有する頂点によって示される基本多角形の集合として示されている3次元画像データの、当該基本多角形の前記頂点に対して所定の座標変換を行う座標変換手段と、
前記基本多角形の頂点のデータに基づいて、当該基本多角形の画素データを生成する画素データ生成手段と、
前記生成された画素データに対して、所望のテクスチャパタンを用いてテクスチャマッピングし、表示用3次元画像データを前記表示用画像データとして生成するテクスチャマッピング手段と
を有する請求項6に記載の画像処理装置。
The image generating means includes
Arbitrary three-dimensional solid model performs predetermined coordinate transformation on the vertexes of the basic polygons of the three-dimensional image data shown as a set of basic polygons indicated by the vertices having at least three-dimensional position information. Coordinate transformation means to perform,
Pixel data generating means for generating pixel data of the basic polygon based on the data of the vertices of the basic polygon;
The image processing according to claim 6, further comprising: a texture mapping unit that texture-maps the generated pixel data using a desired texture pattern and generates display three-dimensional image data as the display image data. apparatus.
前記出力手段は、
前記各系統ごとに、前記データ記憶手段より最後にデータを読み出したアドレスの、前記テーブルに記憶されている前記記憶アドレスを、読み出しアドレスとして記憶する読み出しアドレス記憶手段と、
任意の前記系統のデータの出力要求があった場合に、前記データ記憶手段の前記読み出しアドレス記憶手段に記憶されている当該系統の前記読み出しアドレスのデータを読み出し出力するデータ読み出し手段と、
を有する請求項7に記載の画像処理装置。
The output means includes
Read address storage means for storing, as a read address, the storage address stored in the table of the address at which data was last read from the data storage means for each of the systems,
Data read means for reading out and outputting the data of the read address of the system stored in the read address storage means of the data storage means when there is an output request of data of the arbitrary system,
The image processing apparatus according to claim 7.
JP2000021836A 2000-01-26 2000-01-26 Data storage apparatus and method and image processing apparatus Expired - Fee Related JP4482996B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000021836A JP4482996B2 (en) 2000-01-26 2000-01-26 Data storage apparatus and method and image processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000021836A JP4482996B2 (en) 2000-01-26 2000-01-26 Data storage apparatus and method and image processing apparatus

Publications (2)

Publication Number Publication Date
JP2001209811A JP2001209811A (en) 2001-08-03
JP4482996B2 true JP4482996B2 (en) 2010-06-16

Family

ID=18548197

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000021836A Expired - Fee Related JP4482996B2 (en) 2000-01-26 2000-01-26 Data storage apparatus and method and image processing apparatus

Country Status (1)

Country Link
JP (1) JP4482996B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4487959B2 (en) 2006-03-17 2010-06-23 ソニー株式会社 Image processing apparatus, image processing method, and program

Also Published As

Publication number Publication date
JP2001209811A (en) 2001-08-03

Similar Documents

Publication Publication Date Title
JP3645024B2 (en) Drawing apparatus and drawing method
KR100648293B1 (en) Graphic system and graphic processing method for the same
JPS60239796A (en) Circuit and apparatus for altering data in display memory
JPH0863608A (en) Computer graphic system and usage method of frame buffer
US5949421A (en) Method and system for efficient register sorting for three dimensional graphics
US5621866A (en) Image processing apparatus having improved frame buffer with Z buffer and SAM port
JPH1079043A (en) Texure data reader and rendering device
TWI395152B (en) A graphics processing unit and a method of processing border color information
TWI233573B (en) Method and apparatus for reducing primitive storage requirements and improving memory bandwidth utilization in a tiled graphics architecture
JP4482996B2 (en) Data storage apparatus and method and image processing apparatus
JP3903557B2 (en) Data conversion apparatus and image generation apparatus
JP2003323339A (en) Memory access device, semiconductor device, memory access control method, computer program and recording medium
US6816162B2 (en) Data management to enable video rate anti-aliasing convolution
US5999200A (en) Method and apparatus for automatically controlling the destination of a graphics command in a register file
US5917503A (en) Converging data pipeline device
US5895502A (en) Data writing and reading method for a frame memory having a plurality of memory portions each having a plurality of banks
US7671866B2 (en) Memory controller with graphic processing function
JP3548648B2 (en) Drawing apparatus and drawing method
US6985153B2 (en) Sample request mechanism for supplying a filtering engine
JP3741053B2 (en) Image processing device
JPH06309471A (en) Device for plotting three-dimensional graphics
JP3971448B2 (en) Drawing apparatus and drawing method
US5946003A (en) Method and apparatus for increasing object read-back performance in a rasterizer machine
JP2009048509A (en) Multi-texture mapping device and memory storage method of multi-texture data
US6489967B1 (en) Image formation apparatus and image formation method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100205

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100302

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100315

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees