(57)【特許請求の範囲】
【請求項１】
入力される複数系統のデータを順に記憶するデータ記憶手段と、
前記データ記憶手段に記憶されたデータの記憶順序を前記系統ごとに管理する記憶順序管理手段と、
各系統ごとのデータの出力要求に応じて、前記記憶順序管理手段に管理されている前記系統ごとのデータの記憶順序に基づいて、当該要求された系統の前記記憶されているデータを前記入力された順に読み出し出力する出力手段と
を有し、
前記記憶順序管理手段は、
前記データ記憶手段の未だ読み出されていないデータが記憶されている領域以外の空き領域の任意のアドレスを、入力されるデータを記憶する記憶アドレスとして生成する記憶アドレス生成手段と、
前記各系統ごとに、最後に入力され記憶されたデータに対する前記記憶アドレスを記憶するアドレス記憶手段と、
前記データ記憶手段のアドレス空間に対応したアドレス空間を有し、各アドレスのデータとして、前記データ記憶手段の対応するアドレスに記憶されているデータと同一の系統の前記入力されるデータで、当該アドレスのデータの次に入力され記憶されたデータが記憶されている前記データ記憶手段のアドレスを記憶するテーブルと、
入力される任意の系統のデータが前記データ記憶手段の前記生成された記憶アドレスに記憶された際に、前記テーブルの前記アドレス記憶手段に記憶されているアドレスに、前記生成された記憶アドレスを記憶するテーブル更新手段と、
を有し、
前記記憶アドレス生成手段は、
前記データ記憶手段の各アドレスごとの当該アドレスに未だ読み出されていないデータが記憶されているか否かを示すフラグを記憶するフラグ記憶手段と、
前記記憶されているフラグに基づいて、前記データ記憶手段の前記空き領域を検出し、当該空き領域のいずれか１の領域のアドレスを前記記憶アドレスとして選択する記憶アドレス選択手段と、
新たに入力されるデータの記憶および前記出力手段による記憶されたデータの読み出しに基づいて、前記フラグを更新するフラグ更新手段とを有し、
前記データ記憶手段は、前記記憶アドレス生成手段により生成されたアドレスに、前記入力される任意の系統のデータを記憶する
データ記憶装置。
【請求項２】
前記出力手段は、
前記各系統ごとに、前記データ記憶手段より最後にデータを読み出したアドレスの、前記テーブルに記憶されている前記記憶アドレスを、読み出しアドレスとして記憶する読み出しアドレス記憶手段と、
任意の前記系統のデータの出力要求があった場合に、前記データ記憶手段の前記読み出しアドレス記憶手段に記憶されている当該系統の前記読み出しアドレスのデータを読み出し出力するデータ読み出し手段と、
を有する請求項１に記載のデータ記憶装置。
【請求項３】
前記データ記憶手段、前記記憶順序管理手段および前記出力手段は、半導体集積回路として構成されている
請求項１に記載のデータ記憶装置。
【請求項４】
前記データ記憶手段は、データの記憶と読み出しを同サイクル中に行うことができるデュアルポートメモリを有する
請求項３に記載のデータ記憶装置。
【請求項５】
データ記憶手段と、記憶順序管理手段と、出力手段とを有するデータ記憶装置のデータ記憶方法であって、
入力される複数系統のデータをメモリに記憶する第１の工程と、
前記記憶されたデータの記憶順序を前記系統ごとに管理する第２の工程と、
各系統ごとのデータの出力要求に応じて、前記管理されている前記系統ごとのデータの記憶順序に基づいて、当該要求された系統の前記記憶されているデータを前記入力された順に読み出し出力する第３の工程と、
を有し、
前記第２の工程は、
前記各系統ごとに、最後に入力され記憶されたデータに対する前記記憶アドレスを記憶しておく第４の工程と、
任意の系統のデータが入力された場合に、前記メモリの未だ読み出されていないデータが記憶されている領域以外の空き領域の任意のアドレスを、入力されるデータを記憶する記憶アドレスとして生成する第５の工程と、
前記データ記憶手段のアドレス空間に対応したアドレス空間を有し、各アドレスのデータとして、前記データ記憶手段の対応するアドレスに記憶されているデータと同一の系統の前記入力されるデータで、当該アドレスのデータの次に入力され記憶されたデータが記憶されている前記データ記憶手段のアドレスを記憶するテーブルの、前記記憶されている当該系統の最後に入力され記憶されたデータに対する記憶アドレスに、当該入力されるデータが前記メモリの前記生成された記憶アドレスに記憶された際に、当該生成された記憶アドレスを記憶する第６の工程と、
を有し、
前記第４の工程は、
前記メモリの各アドレスに未だ読み出されていないデータが記憶されているか否かを示すフラグを設定しておく第７の工程と、
前記記憶されているフラグに基づいて前記メモリの前記空き領域を検出する第８の工程と、
当該空き領域のいずれか１の領域のアドレスを前記記憶アドレスとして選択する第９の工程と、
を有するデータ記憶方法。
【請求項６】
任意の表示用画像データを生成する画像生成手段と、
前記生成された表示用画像データを記憶する画像メモリと、
前記記憶された表示用画像データより所望の領域のデータを読み出し表示用画面データとして出力する出力手段と
を有し、
前記画像メモリは、
入力される複数系統のデータを順に記憶するデータ記憶手段と、
前記データ記憶手段に記憶されたデータの記憶順序を前記系統ごとに管理する記憶順序管理手段と、
各系統ごとのデータの出力要求に応じて、前記記憶順序管理手段に管理されている前記系統ごとのデータの記憶順序に基づいて、当該要求された系統の前記記憶されているデータを前記入力された順に読み出し出力する出力手段と
を有し、
前記記憶順序管理手段は、
前記データ記憶手段の未だ読み出されていないデータが記憶されている領域以外の空き領域の任意のアドレスを、入力されるデータを記憶する記憶アドレスとして生成する記憶アドレス生成手段と、
前記各系統ごとに、最後に入力され記憶されたデータに対する前記記憶アドレスを記憶するアドレス記憶手段と、
前記データ記憶手段のアドレス空間に対応したアドレス空間を有し、各アドレスのデータとして、前記データ記憶手段の対応するアドレスに記憶されているデータと同一の系統の前記入力されるデータで、当該アドレスのデータの次に入力され記憶されたデータが記憶されている前記データ記憶手段のアドレスを記憶するテーブルと、
入力される任意の系統のデータが前記データ記憶手段の前記生成された記憶アドレスに記憶された際に、前記テーブルの前記アドレス記憶手段に記憶されているアドレスに、前記生成された記憶アドレスを記憶するテーブル更新手段と、
を有し、
前記記憶アドレス生成手段は、
前記データ記憶手段の各アドレスごとの当該アドレスに未だ読み出されていないデータが記憶されているか否かを示すフラグを記憶するフラグ記憶手段と、
前記記憶されているフラグに基づいて、前記データ記憶手段の前記空き領域を検出し、当該空き領域のいずれか１の領域のアドレスを前記記憶アドレスとして選択する記憶アドレス選択手段と、
新たに入力されるデータの記憶および前記出力手段による記憶されたデータの読み出しに基づいて、前記フラグを更新するフラグ更新手段とを有し、
前記データ記憶手段は、前記記憶アドレス生成手段により生成されたアドレスに、前記入力される任意の系統のデータを記憶する
画像処理装置。
【請求項７】
前記画像生成手段は、
任意の３次元立体モデルが、少なくとも３次元位置情報を有する頂点によって示される基本多角形の集合として示されている３次元画像データの、当該基本多角形の前記頂点に対して所定の座標変換を行う座標変換手段と、
前記基本多角形の頂点のデータに基づいて、当該基本多角形の画素データを生成する画素データ生成手段と、
前記生成された画素データに対して、所望のテクスチャパタンを用いてテクスチャマッピングし、表示用３次元画像データを前記表示用画像データとして生成するテクスチャマッピング手段と
を有する請求項６に記載の画像処理装置。
【請求項８】
前記出力手段は、
前記各系統ごとに、前記データ記憶手段より最後にデータを読み出したアドレスの、前記テーブルに記憶されている前記記憶アドレスを、読み出しアドレスとして記憶する読み出しアドレス記憶手段と、
任意の前記系統のデータの出力要求があった場合に、前記データ記憶手段の前記読み出しアドレス記憶手段に記憶されている当該系統の前記読み出しアドレスのデータを読み出し出力するデータ読み出し手段と、
を有する請求項７に記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数系統のデータに対する先入れ先出し形式（以降、ＦＩＦＯ(First In First Out)形式と言う。）のデータ記憶装置とデータ記憶方法、および、そのデータ記憶装置を用いて表示用画像の生成を効率よく行うことのできる画像処理装置に関する。
【０００２】
【従来の技術】
入力したデータを入力した順に読み出すいわゆるＦＩＦＯメモリは、種々の電子回路において広く使用されている。特に近年、あらゆる電子機器において処理速度の向上が図られているため、結果的に各処理部間でのデータの処理速度に差異が生じたり、適切に同期をとってデータを転送することが難しくなるなどの問題が生じており、これを解決するために、各処理部間に緩衝手段としてＦＩＦＯメモリを設けることが多くなっている。
たとえば、ＣＡＤ装置やゲーム機器などに用いられる３次元画像を生成する画像処理装置などは、座標変換やテクスチャマッピング、各画素に対する特殊効果処理、生成した画像の高速表示など、多数の画素に対して高速に処理を行う各種の処理部が順次接続されて構成されている。そして、これらの各処理部の間におけるデータ転送を高速かつ適切に行うために、ＦＩＦＯメモリが多数使用されている。
【０００３】
【発明が解決しようとする課題】
ところで、たとえばそのような画像処理装置の各構成部間においては、複数種類のデータが必要に応じて転送される場合が多い。特に、画像データのみならず制御データまでをも含めると、特定の１種類のデータのみが転送されるということは稀と考えられる。そのような場合に、これまでは、たとえば図７に示すように、そのデータの種類（データの系統と言う場合もある。）に応じて複数系統のＦＩＦＯメモリが並列に設けられていた。
しかし、そのように複数のＦＩＦＯメモリを並列に設けると、各系統ごとにマージンを確保しなければならなかったり、共通的な信号処理が多いにも係わらず制御部を独立して設けることになるなど、回路を効率よく利用することができない、すなわち、必要以上に回路規模が大きくなるという問題がある。
特に、このような回路は、半導体集積回路として実現する場合が多いため、回路規模、換言すれば回路のゲート規模を少しでも小さくしたいという要望もある。
【０００４】
したがって本発明の目的は、より小さい回路規模で複数系統のデータに対して適切にＦＩＦＯ機能を提供できるデータ記憶装置とその方法を提供することにある。
また、本発明の他の目的は、より小さい回路規模で各処理手段でのデータの転送が適切に行え、これにより所望の画像処理を効率よく行えるような画像処理装置を提供することにある。
【０００５】
前記課題を解決するために、本発明のデータ記憶装置は、入力される複数系統のデータを順に記憶するデータ記憶手段と、前記データ記憶手段に記憶されたデータの記憶順序を前記系統ごとに管理する記憶順序管理手段と、各系統ごとのデータの出力要求に応じて、前記記憶順序管理手段に管理されている前記系統ごとのデータの記憶順序に基づいて、当該要求された系統の前記記憶されているデータを前記入力された順に読み出し出力する出力手段とを有し、前記記憶順序管理手段は、前記データ記憶手段の未だ読み出されていないデータが記憶されている領域以外の空き領域の任意のアドレスを、入力されるデータを記憶する記憶アドレスとして生成する記憶アドレス生成手段と、前記各系統ごとに、最後に入力され記憶されたデータに対する前記記憶アドレスを記憶するアドレス記憶手段と、前記データ記憶手段のアドレス空間に対応したアドレス空間を有し、各アドレスのデータとして、前記データ記憶手段の対応するアドレスに記憶されているデータと同一の系統の前記入力されるデータで、当該アドレスのデータの次に入力され記憶されたデータが記憶されている前記データ記憶手段のアドレスを記憶するテーブルと、入力される任意の系統のデータが前記データ記憶手段の前記生成された記憶アドレスに記憶された際に、前記テーブルの前記アドレス記憶手段に記憶されているアドレスに、前記生成された記憶アドレスを記憶するテーブル更新手段と、を有し、前記記憶アドレス生成手段は、前記データ記憶手段の各アドレスごとの当該アドレスに未だ読み出されていないデータが記憶されているか否かを示すフラグを記憶するフラグ記憶手段と、前記記憶されているフラグに基づいて、前記データ記憶手段の前記空き領域を検出し、当該空き領域のいずれか１の領域のアドレスを前記記憶アドレスとして選択する記憶アドレス選択手段と、新たに入力されるデータの記憶および前記出力手段による記憶されたデータの読み出しに基づいて、前記フラグを更新するフラグ更新手段とを有し、前記データ記憶手段は、前記記憶アドレス生成手段により生成されたアドレスに、前記入力される任意の系統のデータを記憶する。
【０００６】
第２の発明のデータ記憶方法は、データ記憶手段と、記憶順序管理手段と、出力手段とを有するデータ記憶装置のデータ記憶方法であって、入力される複数系統のデータをメモリに記憶する第１の工程と、前記記憶されたデータの記憶順序を前記系統ごとに管理する第２の工程と、各系統ごとのデータの出力要求に応じて、前記管理されている前記系統ごとのデータの記憶順序に基づいて、当該要求された系統の前記記憶されているデータを前記入力された順に読み出し出力する第３の工程と、を有し、前記第２の工程は、前記各系統ごとに、最後に入力され記憶されたデータに対する前記記憶アドレスを記憶しておく第４の工程と、任意の系統のデータが入力された場合に、前記メモリの未だ読み出されていないデータが記憶されている領域以外の空き領域の任意のアドレスを、入力されるデータを記憶する記憶アドレスとして生成する第５の工程と、前記データ記憶手段のアドレス空間に対応したアドレス空間を有し、各アドレスのデータとして、前記データ記憶手段の対応するアドレスに記憶されているデータと同一の系統の前記入力されるデータで、当該アドレスのデータの次に入力され記憶されたデータが記憶されている前記データ記憶手段のアドレスを記憶するテーブルの、前記記憶されている当該系統の最後に入力され記憶されたデータに対する記憶アドレスに、当該入力されるデータが前記メモリの前記生成された記憶アドレスに記憶された際に、当該生成された記憶アドレスを記憶する第６の工程と、を有し、前記第４の工程は、前記メモリの各アドレスに未だ読み出されていないデータが記憶されているか否かを示すフラグを設定しておく第７の工程と、前記記憶されているフラグに基づいて前記メモリの前記空き領域を検出する第８の工程と、当該空き領域のいずれか１の領域のアドレスを前記記憶アドレスとして選択する第９の工程と、を有する。
【０００７】
第３の発明の画像処理装置は、任意の表示用画像データを生成する画像生成手段と、前記生成された表示用画像データを記憶する画像メモリと、前記記憶された表示用画像データより所望の領域のデータを読み出し表示用画面データとして出力する出力手段とを有し、前記画像メモリは、入力される複数系統のデータを順に記憶するデータ記憶手段と、前記データ記憶手段に記憶されたデータの記憶順序を前記系統ごとに管理する記憶順序管理手段と、各系統ごとのデータの出力要求に応じて、前記記憶順序管理手段に管理されている前記系統ごとのデータの記憶順序に基づいて、当該要求された系統の前記記憶されているデータを前記入力された順に読み出し出力する出力手段とを有し、前記記憶順序管理手段は、前記データ記憶手段の未だ読み出されていないデータが記憶されている領域以外の空き領域の任意のアドレスを、入力されるデータを記憶する記憶アドレスとして生成する記憶アドレス生成手段と、前記各系統ごとに、最後に入力され記憶されたデータに対する前記記憶アドレスを記憶するアドレス記憶手段と、前記データ記憶手段のアドレス空間に対応したアドレス空間を有し、各アドレスのデータとして、前記データ記憶手段の対応するアドレスに記憶されているデータと同一の系統の前記入力されるデータで、当該アドレスのデータの次に入力され記憶されたデータが記憶されている前記データ記憶手段のアドレスを記憶するテーブルと、入力される任意の系統のデータが前記データ記憶手段の前記生成された記憶アドレスに記憶された際に、前記テーブルの前記アドレス記憶手段に記憶されているアドレスに、前記生成された記憶アドレスを記憶するテーブル更新手段と、を有し、前記記憶アドレス生成手段は、前記データ記憶手段の各アドレスごとの当該アドレスに未だ読み出されていないデータが記憶されているか否かを示すフラグを記憶するフラグ記憶手段と、前記記憶されているフラグに基づいて、前記データ記憶手段の前記空き領域を検出し、当該空き領域のいずれか１の領域のアドレスを前記記憶アドレスとして選択する記憶アドレス選択手段と、新たに入力されるデータの記憶および前記出力手段による記憶されたデータの読み出しに基づいて、前記フラグを更新するフラグ更新手段とを有し、前記データ記憶手段は、前記記憶アドレス生成手段により生成されたアドレスに、前記入力される任意の系統のデータを記憶する。
【００１３】
【発明の実施の形態】
本発明の一実施の形態について図１〜図６を参照して説明する。
本実施の形態においては、家庭用ゲーム機などに適用され、任意の３次元物体モデルの所望の３次元画像をディスプレイ上に高速に表示する３次元コンピュータグラフィックスシステムを例示して、本発明を説明する。
【００１４】
まず、その３次元コンピュータグラフィックスシステムの全体の構成および動作について図１を参照して説明する。
この３次元コンピュータグラフィックスシステムは、立体モデルを単位図形である三角形（ポリゴン）の張り合わせとして表現しておき、このポリゴンを描画することで表示画面の各画素の色を決定しディスプレイに表示するポリゴンレンダリング処理を行うシステムである。
また、３次元コンピュータグラフィックスシステム１においては、平面を表わす（ｘ、ｙ）座標のほかに、奥行きを表わすｚ座標を用いて３次元物体を表わし、またこのｘ、ｙ、ｚの３つの座標で３次元空間内の任意の１点を特定する。
【００１５】
図１は、その３次元コンピュータグラフィックスシステム１の構成を示すブロック図である。
３次元コンピュータグラフィックスシステム１は、入力部２、３次元画像生成装置３および表示装置４を有する。
また、３次元画像生成装置３は、ジオメトリ演算部３２、パラメータ演算部３３、画素発生部３４、テクスチャマッピング部３５、テクスチャメモリ３６、メモリインターフェイス（Ｉ／Ｆ）３７、画像メモリ３８およびプログラマブル・ディスプレイ制御部３９を有する。
【００１６】
まず、各部の構成・機能について説明する。
入力部２は、３次元画像生成装置３に対して、表示対象の立体モデルのデータを入力する。本実施の形態においては、３次元コンピュータグラフィックスシステム１は家庭用ゲーム機に適用されているので、入力部２は、その家庭用ゲーム機のゲーム自体を制御する主制御装置などに接続される。その主制御装置においては、ゲームの進行状況などに基づいて表示する画面を決定し、その画面表示に必要な立体モデルを選択し、その表示方法の情報を生成する。したがって入力部２は、これらの情報を、家庭用ゲーム機の主制御装置より受け取り、３次元画像生成装置３へ入力するのに適した形態に変換するなどして３次元画像生成装置３に入力する。
具体的には、入力部２は、前述したような表示する立体モデルのポリゴンデータを３次元画像生成装置３のジオメトリ演算部３２に入力する。また、その入力されるポリゴンのデータは、各頂点のｘ，ｙ，ｚ座標データおよびカラー、透明度、テクスチャなどの付随データである。
【００１７】
ジオメトリ演算部３２は、入力部２より入力されたポリゴンを、３次元空間中の所望の位置に配置させその位置におけるポリゴンデータを生成する。具体的には、ポリゴンの各頂点（ｘ、ｙ、ｚ）ごとに、並進変換、平行変換および回転変換などの幾何学的変換処理（ジオメトリ変換処理という場合もある）を行う。ジオメトリ変換処理を行ったポリゴンデータは、パラメータ演算部３３に出力される。
【００１８】
パラメータ演算部３３は、ジオメトリ演算部３２から入力されたポリゴンのデータ、すなわち、ポリゴンの各頂点のデータに基づいて、画素発生部３４においてポリゴン内部の画素データを発生するために必要なパラメータを求め、画素発生部３４に出力する。具体的にはたとえば、カラー、奥行きおよびテクスチャの傾きの情報などを求める。
【００１９】
画素発生部３４は、ジオメトリ演算部３２でジオメトリ変換処理が行われたポリゴンデータ、および、パラメータ演算部３３で求められたパラメータに基づいて、ポリゴンの各頂点間を線型補間してポリゴン内部およびエッジ部分の画素データを発生する。また画素発生回路３４は、画素データの表示に対応した所定の２次元平面上でのアドレスの生成を行う。生成された画素データおよびアドレスは順次テクスチャマッピング部３５に出力される。
【００２０】
テクスチャマッピング部３５は、画素発生部３４で生成された画素データに対して、テクスチャメモリ３６に格納されているテクスチャデータを用いて、テクスチャマッピング処理を行う。テクスチャマッピング処理を行った画素データおよびアドレスは、メモリインターフェイス３７に出力する。
【００２１】
テクスチャメモリ３６は、テクスチャマッピング部３５でテクスチャマッピングする際に用いるテクスチャパタンを記憶しておくメモリである。
【００２２】
メモリインターフェイス３７は、テクスチャマッピング部３５から入力される画素データおよびアドレス、および、既に画像メモリ３８に記憶されている対応する画素データに基づいて、新たな画素データを生成し、画像メモリ３８に記憶する。すなわち、メモリインターフェイス３７は、テクスチャマッピング部３５から入力されるアドレスに対応した画素データを画像メモリ３８から読み出し、その画素データと、テクスチャマッピング部３５から入力された画素データとを用いて、所望の画素演算処理を行い、得られた画素データを画像メモリ３８へ書き込む。
またメモリインターフェイス３７は、プログラマブル・ディスプレイ制御部３９から表示領域が指定された場合には、その表示領域の画素データを、画像メモリ３８から読み出し、プログラマブル・ディスプレイ制御部３９に出力する。
【００２３】
画像メモリ３８は、表示用の画像データを記録するメモリであり、同時にアクセスすることができる２つのメモリバッファ、フレームバッファとＺバッファを有する。フレームバッファには、各画素のカラー情報であるフレームデータが格納される。また、Ｚバッファには、各画素の奥行き情報（Ｚ値）であるＺデータが格納される。
画像メモリ３８については、後に詳細に説明する。
【００２４】
プログラマブル・ディスプレイ制御部３９は、メモリインターフェイス３７を介して画像メモリ３８より読み出した表示領域の画素データを、表示装置４により表示可能なたとえば所定のアナログ信号に変換し、表示装置４に出力する。この時の出力信号の形式およびそれに基づく変換条件などは、接続される表示装置４の信号特性などに基づいて、プログラムすることにより任意に設定可能である。
なお、プログラマブル・ディスプレイ制御部３９は、メモリインターフェイス３７に対して表示すべき表示領域の画素データの要求を行い、これにより画像メモリ３８より所望の表示領域の画素データを読み出す。
【００２５】
表示装置４は、本実施の形態においては、通常家庭などで用いられているビデオ入力端子などを有するテレビジョン受信機である。３次元画像生成装置３のプログラマブル・ディスプレイ制御部３９からは、ビデオ信号入力端子を介してアナログビデオ信号が入力され、その信号に基づいて３次元映像を画面上に表示する。
【００２６】
次に、この３次元コンピュータグラフィックスシステム１の動作について説明する。
まず、家庭用ゲーム機のゲーム自体を制御する主制御装置などにおいて、表示する３次元画像が決定されると、その画面表示に必要な立体モデルの情報が入力部２に入力される。入力部２はこの情報に基づいて、その画像を表示するための立体モデルのポリゴンデータを３次元画像生成装置３に入力する。
３次元画像生成装置３に入力された各ポリゴンデータは、まず、ジオメトリ演算部３２において、画面表示のために３次元空間中の所望の位置に配置されるように、並進変換、平行変換および回転変換などのジオメトリ変換処理が行われる。
【００２７】
次に、座標変換の行われたポリゴンデータに対して、パラメータ演算部３３においてポリゴン内部の画素データを発生するために必要なパラメータが求められ、画素発生部３４において、実際にポリゴンの各頂点間を線型補間してポリゴン内部およびエッジ部分の画素データが発生される。
発生された画素データは順次テクスチャマッピング部３５に入力され、テクスチャマッピング部３５において、テクスチャメモリ３６に記録されているテクスチャパタンデータを参照して、テクスチャマッピング処理が行われ、生成された画素データがメモリインターフェイス３７を介して画像メモリ３８に記憶される。
【００２８】
画像メモリ３８に記憶された画素データは、同様の経路により入力される他の画素データや任意の制御データに基づいて適宜所望の処理が行われる。
これにより画像メモリ３８には常に最新の画像データが格納され、画面表示に供される。すなわち、表示装置４に表示するための所定の領域のデータの出力の要求がプログラマブル・ディスプレイ制御部３９からメモリインターフェイス３７に対して行われ、その領域の画素データが適宜画像メモリ３８から読み出され、プログラマブル・ディスプレイ制御部３９において画面表示用の所定の信号に変換され、表示装置４に出力される。
これにより、表示装置４には、所望の画像が画面に表示される。
【００２９】
次に、このような３次元コンピュータグラフィックスシステム１の、本発明に係わる画像メモリ３８の周辺回路について詳細に説明する。
３次元コンピュータグラフィックスシステム１においては、テクスチャマッピング部３５、メモリインターフェイス３７およびプログラマブル・ディスプレイ制御部３９が、実質的に画像メモリ３８に対してアクセスを行なう構成部である。以下の説明においては、本発明の係わる特徴が明らかになるように、これらの処理部を画像メモリ３８に対する１つの信号処理部とみなして説明を行なう。
なお、実際の回路は、図１に示したように各構成部が独立した構成でもよいし、後述するように、たとえば汎用のシグナルプロセッサなどを用いて一体的に構成したものであってもよい。
【００３０】
図２は、その画像メモリ３８の周辺回路（以後、これをメモリ装置５０として示す）を論理的に示す図であり、図１に示したテクスチャマッピング部３５〜プログラマブル・ディスプレイ制御部３９の構成を、別の観点から示した図である。
なお、このメモリ装置５０は、前述したように、たとえば各画素のカラー情報であるフレームデータと、各画素の奥行き情報（Ｚ値）であるＺデータの２系統のデータを順次バッファリングする機能を有するものとする。
【００３１】
ＭＴＸＰＣ５１は、３次元コンピュータグラフィックスシステム１におけるメモリインターフェイス（Ｍｅｍｏｒｙ  ｉｎｔｅｒｆａｃｅ）３７、マッピング（ＴｅＸｔｕｒｅ  Ｍａｐｐｉｎｇ）部３５およびプログラマブル・ディスプレイ制御部（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｃｒｔ  ｃｏｎｔｒｏｌｌｅｒ）３９が一体化された信号処理部である。ＭＴＸＰＣ５１で生成された画像データは、ＦＩＦＯメモリ１００に入力される。
ＦＩＦＯメモリ１００は、ＭＴＸＰＣ５１より入力された画像データを、その系統（種類）は問わずに順次記憶し、バッファリングして信号処理部５３に出力する。
【００３２】
信号処理部５３は、ＦＩＦＯメモリ１００より読み出した画像データに任意の処理を施し、再び画像メモリ３８に記憶する。前述したように、信号処理部５３では、たとえば、既に画像メモリ３８に記憶されている対応する画素データと、テクスチャマッピングされた画素データとを用いて所望の画素演算処理を行う。そして、得られた画素データは再び画像メモリ３８へ書き込まれる。
第１のＲＡＭ５４および第２のＲＡＭ５５は、各々特定の系統のデータを記憶する２バンクのＦＩＦＯメモリであり、信号処理部５３より入力されるデータを各々順次記憶する。また、図示しないが、たとえばＭＴＸＰＣ５１からの読み出し要求に応じて、記憶したデータを記憶した順に出力する。
なお、第１のＲＡＭ５４（バンクＡ）および第２のＲＡＭ５５（バンクＢ）は、各々２７５ビット幅で、合わせて１６ワードの記憶容量を有する。
【００３３】
メモリ装置５０（画像メモリ３８の周辺回路）は、論理的にはこのようにその構成を示すことができるが、以下、本発明に係わるＦＩＦＯメモリ１００について、図３〜図６を参照して説明する。
前述したように、このＦＩＦＯメモリ１００は、図１における画像メモリ３８として描画データをバッファリングするメモリであり、２７５ビット×１６ワードの容量を有する。また、共有データバッファにより２系統のデータに対応し、書き込みから読み出しまでのレイタンシー３、読み出しレイタンシー２のＦＩＦＯメモリである。
【００３４】
まず、そのＦＩＦＯメモリ１００の構成の概略について、図３を参照して、データの流れを中心にして説明する。
図３は、ＦＩＦＯメモリ１００におけるデータの流れを示すのに好適な、ＦＩＦＯメモリ１００の主要な構成を模式的に示すブロック図である。
図３に示すように、ＦＩＦＯメモリ１００は、デュアルポートＲＡＭ（ＤｐｏｒｔＲＡＭ）１２０、出力レジスタ（ＲＥＧ）１４０、ライトポインタ部（Ｗｐｏｉｎｔｅｒ）１６０、リードポインタ部（Ｒｐｏｉｎｔｅｒ）１８０、フル信号生成部（ＦｕｌｌＧｅｎ）２００およびエンプティ信号生成部（ＥＭＰＴＹ
Ｇｅｎ）２２０を有する。
【００３５】
デュアルポートＲＡＭ１２０は、２７５ビット×１６ワード構成の同時に書き込みおよび読み出しが可能なメモリである。
デュアルポートＲＡＭ１２０は、データ入力端子に入力データＤＡＴＡｉｎが印加されており、ライトポインタ部１６０からのライト制御信号に基づいてこれを順に記憶する。また、デュアルポートＲＡＭ１２０に記憶されたデータは、リードポインタ部１８０からのリード制御信号に基づいて記憶された順番に読み出され、出力レジスタ１４０に出力される。
【００３６】
出力レジスタ１４０は、リードポインタ部１８０より出力されるリード制御信号に基づいてデュアルポートＲＡＭ１２０より読み出されたデータＲＡＭｏｕｔを記憶し、ＦＩＦＯメモリ１００より出力する。
【００３７】
ライトポインタ部１６０は、ＦＩＦＯメモリ１００に入力されるバンクＡ、バンクＢのそれぞれのライトイネーブル信号ＷＥ＿Ａ，ＷＥ＿Ｂに基づいて、デュアルポートＲＡＭ１２０に対する記憶制御信号を生成しデュアルポートＲＡＭ１２０に印加することにより、デュアルポートＲＡＭ１２０へのデータの記憶を制御する。
【００３８】
リードポインタ部１８０は、ＦＩＦＯメモリ１００に入力されるバンクＡ、バンクＢのそれぞれのリードイネーブル信号ＲＥ＿Ａ，ＲＥ＿Ｂに基づいて、デュアルポートＲＡＭ１２０に対するリード制御信号を生成しデュアルポートＲＡＭ１２０に印加することにより、デュアルポートＲＡＭ１２０からのデータの読み出しを制御する。
【００３９】
フル信号生成部２００は、図示せぬＦＩＦＯメモリ１００内の種々の制御信号および状態信号に基づいて、デュアルポートＲＡＭ１２０へ格納されたデータの合計がそれぞれ１６、１５、１４以上であることを示すフル信号ＦＵＬＬ、プレ・フル信号ＰＦＵＬＬ、および、プレ・プレ・フル信号ＰＰＦＵＬＬ、換言すれば、デュアルポートＲＡＭ１２０の記憶領域が満杯の状態を示すプレ信号ＦＵＬＬ、あと１ワードで満杯となる状態を示すプレ・フル信号ＰＦＵＬＬ、および、あと１ワードでプレ・フルとなる状態を示すプレ・プレ・フル信号ＰＰＦＵＬＬを生成し、３次元コンピュータグラフィックスシステム１のメモリインターフェイス３７に相当する図示せぬ制御部に出力する。
【００４０】
エンプティ信号生成部２２０は、図示せぬＦＩＦＯメモリ１００内の種々の制御信号および状態信号に基づいて、デュアルポートＲＡＭ１２０へ格納されたデータが無い状態、すなわちエンプティな状態を示す信号ＥＭＰＴＹを生成し、３次元コンピュータグラフィックスシステム１のメモリインターフェイス３７に相当する図示せぬ制御部に出力する。
図示せぬ制御部は、これら信号ＦＵＬＬ，ＰＦＵＬＬ，ＰＰＦＵＬＬおよびＥＭＰＴＹに基づいて、画像メモリ３８（ＦＩＦＯメモリ１００）へのデータの書き込みおよび読み出しを制御する。
【００４１】
次に、ＦＩＦＯメモリ１００のより詳細な構成について、図４および図５を参照して説明する。
図４は、ＦＩＦＯメモリ１００の詳細の構成を示す回路図である。
ＦＩＦＯメモリ１００は、デュアルポートＲＡＭ１２０、出力レジスタ１４０および制御部１５０を有する。
また、制御部１５０は、ライトイネーブルデコーダ１５１、リードイネーブルデコーダ１５２、セレクタ１５３、レジスタ１５４、フル信号生成部２００、エンプティ信号生成部２２０およびアドレス制御部２４０を有する。
【００４２】
デュアルポートＲＡＭ１２０は、前述したように２７５ビット×１６ワード構成の同時に書き込みおよび読み出しが可能なメモリである。デュアルポートＲＡＭ１２０は、制御部１５０のアドレス制御部２４０より入力される書き込みアドレスｗｐ＿ｍおよびライトイネーブルデコーダ１５１より入力されるライトイネーブル信号ｒａｍ＿ｗｅに基づいて、印加されるデータｉｎを記憶する。また、制御部１５０のセレクタ１５３より入力される読み出しアドレスｒｐ＿ｍおよびリードイネーブルデコーダ１５２より入力されるリードイネーブル信号ｒａｍ＿ｒｅに基づいて、データを読み出し出力レジスタ１４０に出力する。
【００４３】
出力レジスタ１４０は、制御部１５０のレジスタ１５４より入力されるイネーブル信号ｏｒｅｇ＿ｅｎに基づいて、デュアルポートＲＡＭ１２０より読み出されたデータを一旦記憶し、出力信号ｏｕｔとしてＦＩＦＯメモリ１００より出力する。
【００４４】
制御部１５０のライトイネーブルデコーダ１５１は、外部よりＦＩＦＯメモリ１００に入力される２つのバンクＡ，Ｂ各々に対するライトイネーブル信号ｗｅ＿ａ，ｗｅ＿ｂおよびアドレス制御部２４０より入力されるデュアルポートＲＡＭ１２０がフルであることを示す信号ｒａｍ＿ｆｕｌｌに基づいて、デュアルポートＲＡＭ１２０に対するライトイネーブル信号ｒａｍ＿ｗｅ、および、各バンクのデータの書き込みを示す信号ｒａｍ＿ｗｅ＿ａ，ｒａｍ＿ｗｅ＿ｂを生成し、各々、デュアルポートＲＡＭ１２０おいアドレス制御部２４０に出力する。
【００４５】
具体的には、ライトイネーブルデコーダ１５１は、デュアルポートＲＡＭ１２０がフルでない場合には、ライトイネーブル信号ｗｅ＿ａ，ｗｅ＿ｂのいずれかが入力された場合に、デュアルポートＲＡＭ１２０に対するライトイネーブル信号ｒａｍ＿ｗｅをアクティブにする。また、ライトイネーブル信号ｗｅ＿ａ，ｗｅ＿ｂに応じて、データの書き込みを示す信号ｒａｍ＿ｗｅ＿ａ，ｒａｍ＿ｗｅ＿ｂのいずれかをアクティブにする。デュアルポートＲＡＭ１２０がフルであることを示す信号ｒａｍ＿ｆｕｌｌがアクティブの時には、ライトイネーブルデコーダ１５１はいずれの信号もアクティブにしない。
【００４６】
リードイネーブルデコーダ１５２は、外部よりＦＩＦＯメモリ１００に入力される２つのバンクＡ，Ｂ各々に対するリード信号ｒｅ＿ａ，ｒｅ＿ｂおよびアドレス制御部２４０より入力される各バンクの記憶データがエンプティであることを示す信号ｒａｍ＿ｅｍｐｔｙ＿ａ，ｒａｍ＿ｅｍｐｔｙ＿ｂに基づいて、デュアルポートＲＡＭ１２０に対するリードイネーブル信号ｒａｍ＿ｒｅ、および、各バンクのデータの読み出しを示す信号ｒａｍ＿ｒｅ＿ａ，ｒａｍ＿ｒｅ＿ｂを生成し、各々、デュアルポートＲＡＭ１２０おいアドレス制御部２４０に出力する。
【００４７】
具体的には、リードイネーブルデコーダ１５２は、バンクＡまたはバンクＢのいずれかに対するリード信号ｒｅ＿ａ，ｒｅ＿ｂのいずれかが入力された場合であって、そのバンクがエンプティでない場合には、デュアルポートＲＡＭ１２０に対するリードイネーブル信号ｒａｍ＿ｒｅをアクティブにし、そのバンクのデータの読み出しを示す信号ｒａｍ＿ｒｅ＿ａ，ｒａｍ＿ｒｅ＿ｂをアクティブにする。そのバンクがエンプティであることを示す信号ｒａｍ＿ｅｍｐｔｙ＿ａまたはｒａｍ＿ｅｍｐｔｙ＿ｂがアクティブの時には、リードイネーブルデコーダ１５１はいずれの信号もアクティブにしない。
【００４８】
セレクタ１５３は、アドレス制御部２４０より入力される、デュアルポートＲＡＭ１２０に記憶されている各バンクの先頭データのアドレスｒｐ＿ａ，ｒｐ＿ｂのいずれかを、選択し、デュアルポートＲＡＭ１２０に印加する。本実施の形態においては、ＦＩＦＯメモリ１００に入力されるバンクＢのリード信号ｒｅ＿ｂがアクテオィブの時にバンクＢの記憶データの先頭アドレスｒｐ＿ｂを選択し、そうでない時にバンクＡの記憶データの先頭アドレスｒｐ＿ａを選択する。
【００４９】
レジスタ１５４は、リードイネーブルデコーダ１５２よりデュアルポートＲＡＭ１２０に出力されるリードイネーブル信号ｒａｍ＿ｒｅを１クロックラッチし、デュアルポートＲＡＭ１２０より出力されるデータを出力レジスタ１４０が記憶するためのイネーブル信号ｏｒｅｇ＿ｅｎとして、出力レジスタ１４０に出力する。
【００５０】
フル信号生成部２００は、後述するアドレス制御部２４０において生成されるフル信号ｆｕｌｌに基づいて、さらに、あと１ワードでフルとなる状態を示す信号ＰＦＵＬＬ、および、あと１ワードでＰＦＵＬＬとなる状態を示す信号ＰＰＦＵＬＬを各々生成し出力する。
【００５１】
エンプティ信号生成部２２０は、後述するアドレス制御部２４０において生成される各バンクのデータがエンプティであることを示す信号ｅｍｐｔｙ＿ａ，ｅｍｐｔｙ＿ｂに基づいて、デュアルポートＲＡＭ１２０へ格納されたデータが無い状態、すなわちエンプティな状態を示す信号ＥＭＰＴＹを生成し出力する。
【００５２】
アドレス制御部２４０は、前述したようなデュアルポートＲＡＭ１２０および外部に対する種々の制御信号を生成するとともに、デュアルポートＲＡＭ１２０に記憶したデータの順序などを管理する。
アドレス制御部２４０の構成について、図５を参照して詳細に説明する。
図５は、アドレス制御部２４０の構成を示す回路図である。
アドレス制御部２４０は、ＲＡＭ使用領域フラグ２４１、フラグ更新部２４２、書き込みアドレスデコーダ２４３、バンクＡ書き込みアドレス記憶部２４４、バンクＢ書き込みアドレス記憶部２４５、セレクタ２４６、ネクストポインタ２４７、バンクＡリードアドレス選択部２４８、バンクＡリードアドレスレジスタ２４９、バンクＢリードアドレス選択部２５０、バンクＢリードアドレスレジスファ２５１、バンクＡエンプティ検出カウンタ２５２およびバンクＢエンプティ検出カウンタ２５３を有する。
【００５３】
ＲＡＭ使用領域フラグ２４１は、デュアルポートＲＡＭ１２０の各アドレスに未だ読み出されていないデータが記憶せているか否を示すフラグを記憶し、デュアルポートＲＡＭ１２０の使用状態を管理するための、デュアルポートＲＡＭ１２０の各アドレスに１ビットが対応した１６ビットのレジスタである。
ＲＡＭ使用領域フラグ２４１は、ライトイネーブルデコーダ１５１よりいずれかのバンクの書き込みを示す信号ｒａｍ＿ｗｅ＿ａ（アドレス制御部２４０内部ではｗｅ＿ａ。以下同じ），ｒａｍ＿ｗｅ＿ｂ（ｗｅ＿ｂ）が入力された場合、または、リードイネーブルデコーダ１５２よりいずれかのバンクの読み出しを示す信号ｒａｍ＿ｒｅ＿ａ（ｒｅ＿ａ），ｒａｍ＿ｒｅ＿ｂ（ｒｅ＿ｂ）が入力された場合に、フラグ更新部２４２から印加される新たなフラグデータにより更新される。
【００５４】
フラグ更新部２４２は、デュアルポートＲＡＭ１２０に対してデータの書き込みおよび読み出しが行なわれた場合、すなわち、いずれかのバンクの書き込みを示す信号ｒａｍ＿ｗｅ＿ａ（ｗｅ＿ａ），ｒａｍ＿ｗｅ＿ｂ（ｗｅ＿ｂ）およびいずれかのバンクの読み出しを示す信号ｒａｍ＿ｒｅ＿ａ（ｒｅ＿ａ），ｒａｍ＿ｒｅ＿ｂ（ｒｅ＿ｂ）のいずれかが入力された場合に、ＲＡＭ使用領域フラグ２４１の更新データを生成し、ＲＡＭ使用領域フラグ２４１に印加する。
【００５５】
書き込みアドレスデコーダ２４３は、ＲＡＭ使用領域フラグ２４１に記憶されているデュアルポートＲＡＭ１２０の記憶領域の使用フラグに基づいて、次にデータを記憶するアドレスを生成し、バンクＡ書き込みアドレス記憶部２４４、バンクＢ書き込みアドレス記憶部２４５およびネクストポインタ２４７に出力するとともに、アドレス制御部２４０より出力してデュアルポートＲＡＭ１２０に印加する。
なお、バンクＡまたはバンクＢがエンプティの状態でデュアルポートＲＡＭ１２０にデータを記憶した場合には、このアドレスｗｐは、ネクストポインタ２４７は介さずに直接バンクＡリードアドレス選択部２４８またはバンクＢリードアドレス選択部２５０に入力され、データの読み出しに用いられる。
【００５６】
なお、書き込みアドレスデコーダ２４３は、この時、デュアルポートＲＡＭ１２０の空き領域のうち、アドレスの大きい方から順に記憶領域を選択し、そのアドレスを出力する。
また、書き込みアドレスデコーダ２４３は、ＲＡＭ使用領域フラグ２４１に記憶されているデュアルポートＲＡＭ１２０の使用フラグに基づいて、デュアルポートＲＡＭ１２０の全ての記憶領域に未だ読み出されていないデータが記憶されているか否か、すなわち、デュアルポートＲＡＭ１２０がフルであるか否かを検出し、フルである場合にはフル信号ｆｕｌｌを出力する。
【００５７】
バンクＡ書き込みアドレス記憶部２４４は、バンクＡの最後にデータを書き込んだデュアルポートＲＡＭ１２０のアドレスを記憶するレジスタである。バンクＡ書き込みアドレス記憶部２４４には、バンクＡへの書き込みを示す信号ｒａｍ＿ｗｅ＿ａ（ｗｅ＿ａ）がアクティブになった時の、書き込みアドレスデコーダ２４３の出力アドレスが記憶される。
【００５８】
バンクＢ書き込みアドレス記憶部２４５は、バンクＢの最後にデータを書き込んだデュアルポートＲＡＭ１２０のアドレスを記憶するレジスタである。バンクＢ書き込みアドレス記憶部２４５には、バンクＢへの書き込みを示す信号ｒａｍ＿ｗｅ＿ｂ（ｗｅ＿ｂ）がアクティブになった時の、書き込みアドレスデコーダ２４３の出力アドレスが記憶される。
【００５９】
セレクタ２４６は、データが書き込まれるバンクに応じて、バンクＡ書き込みアドレス記憶部２４４またはバンクＢ書き込みアドレス記憶部２４５に記憶されているアドレスを選択し、ネクストポインタ２４７に印加する。
【００６０】
ネクストポインタ２４７は、各バンクごとのデータの順序を記憶するレジスタである。ネクストポインタ２４７は、デュアルポートＲＡＭ１２０と同じ１６ワードのアドレス空間を有し、各ワード４ビットのレジスタファイルである。
そして、ネクストポインタ２４７は、新たなデータがデュアルポートＲＡＭ１２０に書き込まれるごとに、セレクタ２４６により選択され印加されるアドレスに、書き込みアドレスデコーダ２４３より出力されるアドレスを記憶する。
これにより、新たなデータがデュアルポートＲＡＭ１２０に書き込まれるごとに、ネクストポインタ２４７の、そのデータと同じバンクに対して書き込まれたそのデータの前のデータが記憶されているアドレスに、そのデータが記憶されたアドレスを記憶することになる。換言すれば、ネクストポインタ２４７の各アドレスには、そのアドレスに記憶されているデータと同じバンクのデータで、そのデータに続く次のデータが記憶されているアドレスが記憶されることになる。
【００６１】
バンクＡリードアドレス選択部２４８は、ネクストポインタ２４７の１６ワードのデータよりバンクＡのデータを順に選択し、バンクＡリードアドレスレジスタ２４９に出力する。バンクＡリードアドレス選択部２４８は、バンクＡのデータが読み出されるごとに、自らが選択したアドレスのデータであり、後段のバンクＡリードアドレスレジスタ２４９に記憶されているアドレスのネクストポインタ２４７のデータを順に選択する。
【００６２】
バンクＡリードアドレスレジスタ２４９は、バンクＡリードアドレス選択部２４８により選択されたネクストポインタ２４７のデータ、すなわち、バンクＡのデータとして記憶された次に読み出すデータのアドレスｒａｍ＿ｒｅ＿ａ（ｒｅ＿ａ）を記憶するレジスタであり、記憶したアドレスはアドレス制御部２４０よりリードイネーブルデコーダ１５２に出力される。
【００６３】
バンクＢリードアドレス選択部２５０は、ネクストポインタ２４７の１６ワードのデータよりバンクＢのデータを順に選択し、バンクＢリードアドレスレジスタ２５１に出力する。バンクＢリードアドレス選択部２５０は、バンクＢのデータが読み出されるごとに、自らが選択したアドレスのデータであり、後段のバンクＢリードアドレスレジスタ２５１に記憶されているアドレスのネクストポインタ２４７のデータを順に選択する。
【００６４】
バンクＢリードアドレスレジスタ２５１は、バンクＢリードアドレス選択部２５０により選択されたネクストポインタ２４７のデータ、すなわち、バンクＢのデータとして記憶された次に読み出すデータのアドレスｒａｍ＿ｒｅ＿ｂ（ｒｅ＿ｂ）を記憶するレジスタであり、記憶したアドレスはアドレス制御部２４０よりリードイネーブルデコーダ１５２に出力される。
【００６５】
バンクＡエンプティ検出カウンタ２５２は、バンクＡの有効データ数をカウントするカウンタであり、バンクＡへの書き込みを示す信号ｒａｍ＿ｗｅ＿ａ（ｗｅ＿ａ）が入力されるごとにインクリメントされ、バンクＡからの読み出しを示す信号ｒａｍ＿ｒｅ＿ａ（ｒｅ＿ａ）が入力されるごとにデクリメントされる。そして、このカウンタ値が０の時、バンクＡにはデータが記憶されていないものとして、エンプティ信号ｒａｍ＿ｅｍｐｔｙ＿ａ（ｅｍｐｔｙ＿ａ）がアクティブにされる。
【００６６】
バンクＢエンプティ検出カウンタ２５３は、バンクＢの有効データ数をカウントするカウンタであり、バンクＢへの書き込みを示す信号ｒａｍ＿ｗｅ＿ｂ（ｗｅ＿ｂ）が入力されるごとにインクリメントされ、バンクＢからの読み出しを示す信号ｒａｍ＿ｒｅ＿ｂ（ｒｅ＿ｂ）が入力されるごとにデクリメントされる。そして、このカウンタ値が０の時、バンクＢにはデータが記憶されていないものとして、エンプティ信号ｒａｍ＿ｅｍｐｔｙ＿ｂ（ｅｍｐｔｙ＿ｂ）がアクティブにされる。
【００６７】
次に、このような構成のＦＩＦＯメモリ１００の動作について、図３〜図６を参照して説明する。
まず、図４および図５を参照して、ＦＩＦＯメモリ１００におけるアドレスの制御方法を中心として、その動作を詳細に説明する。
【００６８】
まず、たとえばバンクＡ（第１の系統）のデータが記憶される時には、デュアルポートＲＡＭ１２０に対して入力データＤＡＴＡｉｎが印加され、バンクＡのライトイネーブル信号ｗｅ＿ａがアクティブにされる。
ＦＩＦＯメモリ１００の制御部１５０のライトイネーブルデコーダ１５１がこのライトイネーブル信号ｗｅ＿ａを検出し、デュアルポートＲＡＭ１２０に対するライトイネーブル信号ｒａｍ＿ｗｅをアクティブにするとともに、アドレス制御部２４０に対してバンクＡにデータを書き込む旨の信号ｒａｍ＿ｗｅ＿ａ（ｗｅ＿ａ）を入力する。
アドレス制御部２４０からは、既に書き込みアドレスデコーダ２４３において空き領域のアドレスが検出され、デュアルポートＲＡＭ１２０に印加されているので、デュアルポートＲＡＭ１２０においては、このライトイネーブルデコーダ１５１からのライトイネーブル信号ｒａｍ＿ｗｅにより、書き込みアドレスデコーダ２４３が指示するアドレスｗｐにデータが記録される。
【００６９】
そして、アドレス制御部２４０においては、ライトイネーブルデコーダ１５１より入力されるバンクＡにデータを書き込む旨の信号ｒａｍ＿ｗｅ＿ａ（ｗｅ＿ａ）に基づいて、書き込みアドレスｗｐがバンクＡ書き込みアドレス記憶部２４４に記憶される。
また、フラグ更新部２４２により、ＲＡＭ使用領域フラグ２４１に記憶されているフラグに対して、アドレスｗｐのフラグが使用されている状態とされた新たなフラグデータが生成され、これによりＲＡＭ使用領域フラグ２４１の内容が更新される。
そしてまた、バンクＡリードアドレス選択部２４８ではこのアドレスｗｐが選択されて、バンクＡリードアドレスレジスタ２４９にバンクＡの先頭データのアドレスとしてセットされる。
さらに、更新されたＲＡＭ使用領域フラグ２４１のフラグデータに基づいて、書き込みアドレスデコーダ２４３が、次にデータの書き込みを行なうアドレスを生成し、新たなアドレスｗｐとして出力する。
【００７０】
次に、たとえばバンクＢ（第２の系統）のデータが記憶されるとすると、デュアルポートＲＡＭ１２０に対して入力データＤＡＴＡｉｎが印加され、バンクＢのライトイネーブル信号ｗｅ＿ｂがアクティブにされる。このライトイネーブル信号ｗｅ＿ｂを、制御部１５０のライトイネーブルデコーダ１５１が検出し、デュアルポートＲＡＭ１２０に対するライトイネーブル信号ｒａｍ＿ｗｅをアクティブにする。これにより、既にアドレス制御部２４０より出力されデュアルポートＲＡＭ１２０に印加されているアドレスｒａｍ＿ｗｐ（ｗｐ）に、入力されたデータが書き込まれる。
【００７１】
また、ライトイネーブルデコーダ１５１からアドレス制御部２４０に対してバンクＢにデータを書き込む旨の信号ｒａｍ＿ｗｅ＿ｂ（ｗｅ＿ｂ）が入力され、これにより、書き込みアドレスｗｐがバンクＢ書き込みアドレス記憶部２４５に記憶される。
また、フラグ更新部２４２により、ＲＡＭ使用領域フラグ２４１に記憶されているフラグに対して、アドレスｗｐのフラグが使用されている状態とされた新たなフラグデータが生成され、これによりＲＡＭ使用領域フラグ２４１の内容が更新される。
そしてまた、バンクＢリードアドレス選択部２５０ではこのアドレスｗｐが選択されて、バンクＢリードアドレスレジスタ２５１にバンクＢの先頭データのアドレスとしてセットされる。
さらに、更新されたＲＡＭ使用領域フラグ２４１のフラグデータに基づいて、書き込みアドレスデコーダ２４３が、次にデータの書き込みを行なうアドレスを生成し、新たなアドレスｗｐとして出力する。
【００７２】
次に、再びバンクＡのデータが記憶されるとすると、デュアルポートＲＡＭ１２０に対して入力データＤＡＴＡｉｎが印加され、バンクＡのライトイネーブル信号ｗｅ＿ａがアクティブにされる。このライトイネーブル信号ｗｅ＿ａをライトイネーブルデコーダ１５１が検出し、デュアルポートＲＡＭ１２０に対するライトイネーブル信号ｒａｍ＿ｗｅをアクティブにすることにより、アドレス制御部２４０よりデュアルポートＲＡＭ１２０に印加されているアドレスｒａｍ＿ｗｐ（ｗｐ）に、入力されたデータが書き込まれる。
【００７３】
そしてこの時、アドレス制御部２４０においては、入力されるバンクＡにデータを書き込む旨の信号ｒａｍ＿ｗｅ＿ａ（ｗｅ＿ａ）に基づいて、セレクタ２４６において、バンクＡ書き込みアドレス記憶部２４４の出力である１回目にバンクＡのデータを記録したアドレスが選択され、これがネクストポインタ２４７に印加され、今回のデータ記録アドレス、すなわち、２回目のバンクＡのデータを記録したアドレスが、この１回目のデータ記録アドレスに記憶される。
その後、１回目の時あるいはバンクＢに対する書き込みの時と同様に、この記録アドレスがバンクＡ書き込みアドレス記憶部２４４に記録され、フラグ更新部２４２ではＲＡＭ使用領域フラグ２４１に記憶されているフラグの内容が更新され、また、書き込みアドレスデコーダ２４３では更新されたＲＡＭ使用領域フラグ２４１のフラグデータに基づいて新たな書き込みアドレスが生成される。
なお、既にデータが蓄積されている状態からの追加のデータの記憶の際には、バンクＡリードアドレスレジスタ２４９への書き込みアドレスデコーダ２４３からのアドレスの書き込みは行なわれない。
【００７４】
さて、このようにデータを書き込んだ状態で、バンクＡのデータの読み出しが要求された場合には、バンクＡのリードイネーブル信号ｒｅ＿ａがアクティブにされる。
ＦＩＦＯメモリ１００の制御部１５０のリードイネーブルデコーダ１５２がこのリードイネーブル信号ｗｅ＿ａを検出し、デュアルポートＲＡＭ１２０に対するリードイネーブル信号ｒａｍ＿ｒｅをアクティブにするとともに、アドレス制御部２４０に対してバンクＡのデータを読み出す旨の信号ｒａｍ＿ｒｅ＿ａ（ｒｅ＿ａ）を入力する。
【００７５】
アドレス制御部２４０からは、既にバンクＡリードアドレスレジスタ２４９およびバンクＢリードアドレスレジスタ２５１を介して、各バンクの記憶データ先頭アドレスがセレクタ１５３に出力されている。
そして、セレクタ１５３においては、バンクＢのリードイネーブル信号ｒｅ＿ｂがネガティブであることから、バンクＡリードアドレスレジスタ２４９の出力であるバンクＡの先頭アドレスが選択されて、デュアルポートＲＡＭ１２０に印加される。
その結果、デュアルポートＲＡＭ１２０からは先に記憶したバンクＡの先頭データが読み出され、出力レジスタ１４０を介してＦＩＦＯメモリ１００より出力される。
【００７６】
また、アドレス制御部２４０においては、リードイネーブルデコーダ１５２より入力されるバンクＡのデータを読み出す旨の信号ｒａｍ＿ｒｅ＿ａ（ｒｅ＿ａ）に基づいて、バンクＡリードアドレス選択部２４８が、ネクストポインタ２４７より、バンクＡリードアドレスレジスタ２４９に記憶されていた今回データを読み出したアドレスのデータを選択し、バンクＡの次のデータのアドレスとしてバンクＡリードアドレスレジスタ２４９にセットする。その結果、アドレス制御部２４０からは、新たなバンクＡの記憶データ先頭アドレスがセレクタ１５３に出力される。
さらに、アドレス制御部２４０においては、フラグ更新部２４２により、ＲＡＭ使用領域フラグ２４１に記憶されているフラグに対して、アドレスｗｐのフラグが未使用の状態とされた新たなフラグデータが生成され、これによりＲＡＭ使用領域フラグ２４１の内容が更新される。
【００７７】
このようにして、以下順次各バンクのデータの読み出しおよび書き込みが行なわれる。
【００７８】
最後に、ＦＩＦＯメモリ１００の全体の動作について図３および図６を参照して説明する。
図６は、ＦＩＦＯメモリ１００の全体の動作を示すタイムチャートであり、（Ａ）ＦＩＦＯメモリ１００の動作クロックＣＬＫを示す図、（Ｂ）はＦＩＦＯメモリ１００への入力データＤＡＴＡｉｎを示す図、（Ｃ）はデュアルポートＲＡＭ１２０に印加されているデータＦＩＦＯｉｎを示す図、（Ｄ）はバンクＡに対するライトイネーブル信号ＷＥ＿Ａ、（Ｅ）はバンクＢに対するライトイネーブル信号ＷＥ＿Ｂ、（Ｆ）は全体のエンプティ信号ＥＭＰＴＹ、（Ｇ）はフル信号ＦＵＬＬ、（Ｈ）はプレ・フル信号ＰＦＵＬＬ、（Ｉ）はプレ・プレ・フル信号ＰＰＦＵＬＬ、（Ｊ）はバンクＢに対するリードイネーブル信号、（Ｋ）はデュアルポートＲＡＭ１２０からの出力データＦＩＦＯｏｕｔである。
【００７９】
まず、図６（Ｂ）に示すようにデータを順次ＦＩＦＯメモリ１００に入力し、データＤ０〜Ｄ３はバンクＡに記憶し、データＤ４〜Ｄ７はバンクＢに記憶するようにしたい場合、図６（Ｄ）および図６（Ｅ）に示すようにバンクＡおよびバンクＢに対する各ライトイネーブル信号をアクティブにすれば、前述したようにＦＩＦＯメモリ１００内で信号処理が行なわれ、所望の形態でデータが記憶される。
そして、図６（Ｆ）に示すようにデータＤ０を記憶した段階でエンプティ信号はネガティブになり、図６（Ｉ）に示すようにデータＤ５までの６個のデータを記憶した段階でプレ・プレ・フル信号ＰＰＦＵＬＬがアクティブになり、図６（Ｈ）に示すようにデータＤ６までの７個のデータを記憶した段階でプレ・フル信号ＰＦＵＬＬがアクティブになり、さらに、図６（Ｇ）に示すようにデータＤ７までの８個のデータを記憶した段階でフル信号ＦＵＬＬがアクティブになる。
【００８０】
そして、このような状態で、図６（Ｊ）に示すように、バンクＢのリードイネーブル信号をアクティブにすることにより、図６（Ｋ）に示すように、データＤ４以下のバンクＢのデータが順次読み出される。    Ｆ
そして、データの読み出しとともに、図６（Ｇ）に示すフル信号ＦＵＬＬ、図６（Ｈ）に示すプレ・フル信号ＰＦＵＬＬおよび図６（Ｉ）に示すプレ・プレ・フル信号ＰＰＦＵＬＬが各々ネガティブになっていく。
ＦＩＦＯメモリ１００は、このように動作する。
【００８１】
このように、本実施の形態のＦＩＦＯメモリ１００においては、１つのデュアルポートＲＡＭ１２０を用いて、２つの系統のＦＩＦＯを実現することができる。これにより、全く独立したＦＩＦＯを２系統備える場合に比べて、ＦＩＦＯのマージンを全体として少なくすることができ、また、制御回路の一部を共通化することができ、その結果、回路規模を大幅に削減することができる。
また、その２つの系統における記憶容量の割り当ては、入力されるデータに基づいてダイナミックに決定すればよく予め固定されるものではない。したがって、全体として、よりフレキシブルなバッファを構成することができる。
【００８２】
そして、このような構成のＦＩＦＯメモリ１００を、たとえば前述したような３次元コンピュータグラフィックスシステム１の３次元画像生成装置３に適用することにより、各々が複雑で高速な処理を行なう各構成部間のデータの転送を、少ない規模の回路で、効率よく行なうことができ、その結果、効率よく所望の画像の生成ができる。
【００８３】
なお、本発明は前述した実施の形態に限られるものではなく、さらに種々の改変が可能である。
たとえば、本実施の形態においては、２種類（２系統）のデータを処理するＦＩＦＯを例示したが、これは２系統に限られるものではなく、任意の数の系統を処理できるようにしてよい。
【００８４】
また、実際にデータを記憶するメモリは、デュアルポートＲＡＭに限られるものではなく、シングルポートＲＡＭを用いてもよい。その場合には、たとえばシングルポートＲＡＭを２つ具備し、１つのシングルポートＲＡＭに対して記憶と読み出しを同時に行わないようにデータの記憶および読み出しを制御することにより、記憶または読み出しを同時に行えないシングルポートＲＡＭを用いて、また動作クロックを早めることなく、本発明と同様の動作を行なうＦＩＦＯメモリを構成することができる。
もちろん、メモリの種類は、シングルポートＲＡＭ以外の任意のメモリを用いてよい。
【００８５】
また、本実施の形態においては、ＦＩＦＯメモリ１００メモリ１００の適用例として、３次元画像生成装置を例示したが、このＦＩＦＯメモリ装置は通常のＦＩＦＯメモリとして、任意好適な装置に適用可能である。
【００８６】
【発明の効果】
以上説明したように、本発明によれば、より小さい回路規模で複数系統のデータに対して適切にＦＩＦＯ機能を提供できるデータ記憶装置とその方法を提供することができる。
また、より小さい回路規模で各処理手段でのデータの転送が適切に行え、これにより所望の画像処理を効率よく行えるような画像処理装置を提供することがにできる。
【図面の簡単な説明】
【図１】図１は、本発明の一実施の形態であって、本発明のメモリ装置を適用する３次元コンピュータグラフィックスシステムの構成を示すブロック図である。
【図２】図２は、図１に示した３次元コンピュータグラフィックスシステムの画像メモリおよびその周辺回路を含むメモリ装置の構成を論理的に示す図である。
【図３】図３は、図２に示したメモリ装置におけるデータの流れを示すのに好適な、メモリ装置のＦＩＦＯメモリの構成を模式的に示すブロック図である。
【図４】図４は、図３に示したＦＩＦＯメモリの詳細な構成を示す回路図である。
【図５】図５は、図４に示したＦＩＦＯメモリのアドレス制御部の構成を示す回路図である。
【図６】図６は、図３に示したＦＩＦＯメモリの全体の動作を示すタイムチャートである。
【図７】図７は、従来の３次元コンピュータグラフィックスシステムの画像メモリおよびその周辺回路を含むメモリ装置の構成を論理的に示す図である。
【符号の説明】
１…３次元コンピュータグラフィックスシステム、２…入力部、３…３次元画像生成装置、４…表示装置、３２…ジオメトリ演算部、３３…パラメータ演算部、３４…画素発生部、３５…テクスチャマッピング部、３６…テクスチャメモリ、３７…メモリインターフェイス、３８…画像メモリ、３９…プログラマブル・ディスプレイ制御部、５０…メモリ装置、５１…ＭＴＸＰＣ、５３…信号処理部、５４…第１のＲＡＭ、５５…第２のＲＡＭ、１００…ＦＩＦＯメモリ、１２０…デュアルポートＲＡＭ、１４０…出力レジスタ、１５０…制御部、１５１…ライトイネーブルデコーダ、１５２…リードイネーブルデコーダ、１５３…セレクタ、１５４…レジスタ、１６０…ライトポインタ部、１８０…リードポインタ部、２００…フル信号生成部、２２０…エンプティ信号生成部、２４０…アドレス制御部、２４１…ＲＡＭ使用領域フラグ、２４２…フラグ更新部、２４３…書き込みアドレスデコーダ、２４４…バンクＡ書き込みアドレス記憶部、２４５…バンクＢ書き込みアドレス記憶部、２４６…セレクタ、２４７…ネクストポインタ、２４８…バンクＡリードアドレス選択部、２４９…バンクＡリードアドレスレジスタ、２５０…バンクＢリードアドレス選択部、２５１…バンクＢリードアドレスレジスファ、２５２…バンクＡエンプティ検出カウンタ、２５３…バンクＢエンプティ検出カウンタ
【図１】
0004482996.tif 000002
【図２】
0004482996.tif 000003
【図３】
0004482996.tif 000004
【図４】
0004482996.tif 000005
【図５】
0004482996.tif 000006
【図６】
0004482996.tif 000007
【図７】
0004482996.tif 000008