(57)【特許請求の範囲】
【請求項１】
画像画素の行と列に並んだ画素の値を表す更新データ信号と、前記更新データ信号がその値を表す画素の行と列を特定する対応した更新アドレス信号と、を生成する中央処理装置と、
記憶位置の行と列に編成された記憶位置を合わせて提供する０からＮ−１の番号が付けられたＮ個の別々に動作可能なメモリモジュールからなり、（ｎ（ｍｏｄ）Ｎ）番目のメモリモジュールはｎ番目の記憶位置の行を有しており、一回に一つのモジュールだけに前記更新データ信号で表された値を対応する更新アドレス信号で表された記憶位置の行と列に格納するために前記更新データ信号及び前記更新アドレス信号に応答し、さらに提供されたメモリリフレッシュアドレス信号で特定された全てのメモリモジュール内の記憶位置の内容を同時に表すメモリ出力信号を生成する画像メモリと、
連続して走査された複数のメモリ列のそれぞれに従って次のメモリ行の位置を連続して特定する前記メモリリフレッシュアドレス信号を生成し、前記画像メモリへ提供するリフレッシュアドレスジェネレータと、
それぞれの表示行に従って次の表示列位置に、前記メモリリフレッシュアドレス信号に応答して生成された前記メモリ出力信号で表された画素値を表示する表示装置と、
前記画像メモリと前記表示装置との間配置されたビット順並べ替え網と、
を含み、
前記記憶位置は、それぞれＭ個の画素値を保有しており、
前記メモリリフレッシュアドレス信号は、次のメモリ行の位置を次のメモリ列に従って特定する前に、走査された複数のメモリ列のそれぞれに従って次のメモリ行位置を連続してＭ回特定するものであり、
前記メモリ出力信号は、前記記憶位置それぞれの内容をビット列として表しているものであり、
前記ビット順並べ替え網は、前記メモリリフレッシュアドレス信号が次のメモリ行の位置を所定のメモリ列に従って連続してＭ回特定するそれぞれ毎回異なる順序並べ替えスキームに従ってビット列の順序を並べ替え、オメガ網を含むことを特徴とするコンピュータシステム。
【請求項２】
Ｎ＝２であることを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
画像画素の行と列に並んだ画素の値を表す更新データ信号と、前記更新データ信号がその値を表す画素の行と列を特定する対応した更新アドレス信号と、を生成する中央処理装置と、
記憶位置の行と列に編成された記憶位置からなり、前記更新データ信号及び前記更新アドレス信号に応答して、前記記憶位置それぞれがＭ個の画素値を保有するように対応する更新アドレス信号で特定された記憶位置の行と列に更新データ信号で表された値を格納し、印加されたメモリリフレッシュアドレス信号で特定された記憶位置の内容をそれぞれのビット列で表すメモリ出力信号を生成する画像メモリと、
次のメモリ行の位置を次のメモリ列に従って特定する前に、前記メモリリフレッシュアドレス信号を生成し、前記画像メモリへ提供するためのリフレッシュアドレスジェネレータと、
前記メモリリフレッシュアドレス信号が次のメモリ行の位置を所定のメモリ列に従って連続してＭ回特定するそれぞれ毎回異なる順序並べ替えスキームに従って、ビット列の順序を並べ替えることによって順序が変わったビット列を生成し、オメガ網を含むビット順並べ替え網と、
それぞれの表示行に従って次の表示列位置に、前記メモリリフレッシュアドレス信号に応答して生成された前記メモリ出力信号から生じる順序が並べ替えられたビット列の所定のビットで表された画素値を、表示するための表示装置と、
を含むことを特徴とするコンピュータシステム。
【請求項４】
前記オメガ網は、３段オメガ網であることを特徴とする請求項１乃至３のいずれかに記載のコンピュータシステム。
【請求項５】
記憶位置の行と列に編成された記憶位置を合わせて提供する0からN-1の番号が付けられたN個の別々に動作可能なメモリモジュールからなり、（ｎ（ｍｏｄ）Ｎ）番目のメモリモジュールはn番目の記憶位置の行を有しており、一回に一つのモジュールだけに更新データ信号で表された値を対応する更新アドレス信号で表された記憶位置の行と列に格納するために画像画素の行と列に並んだ画素の値を表す更新データ信号に応答すると共に、更新データ信号がその値を表す画素の行と列を特定する対応した更新アドレス信号にも応答し、提供されたメモリリフレッシュアドレス信号で特定された全てのメモリモジュール内の記憶位置の内容を同時に表すメモリ出力信号を生成する画像メモリと、
連続して走査された複数のメモリ列のそれぞれに従って次のメモリ行の位置を連続して特定する前記メモリリフレッシュアドレス信号を生成し、前記画像メモリへ提供するためのリフレッシュアドレスジェネレータと、
それぞれの表示行に従って次の表示列位置に、前記メモリリフレッシュアドレス信号に応答して生成された前記メモリ出力信号で表された画素値を表示するための信号出力手段と、
前記画像メモリと前記表示装置との間配置されたビット順並べ替え網と、を含み、
前記記憶位置は、
それぞれＭ個の画素値を保有しており、
前記メモリリフレッシュアドレス信号は、
次のメモリ行の位置を次のメモリ列に従って連続して特定する前に、走査された複数のメモリ列のそれぞれに従って次のメモリ行位置を連続してＭ回特定するものであり、
前記メモリ出力信号は、
前記記憶位置それぞれの内容をビット列として表しているものであり、
前記ビット順並べ替え網は、
前記メモリリフレッシュアドレス信号が次のメモリ行の位置を所定のメモリ列に従って連続してＭ回特定するそれぞれ毎回異なる順序並べ替えスキームに従ってビット列の順序を並べ替え、オメガ網を含むことを特徴とする表示制御回路。
【請求項６】
Ｎ＝２であることを特徴とする請求項５に記載の表示制御回路。
【請求項７】
記憶位置の行と列に編成された記憶位置からなり、画像画素の行と列に並んだ画素の値を表す更新データ信号及び更新データ信号がその値を表す画素の行と列を特定する対応した更新アドレス信号に応答して、前記記憶位置それぞれがＭ個の画素値を保有するように対応する更新アドレス信号で特定された記憶位置の行と列に更新データ信号で表された値を格納し、印加されたメモリリフレッシュアドレス信号で特定された記憶位置の内容をそれぞれのビット列で表すメモリ出力信号を生成する画像メモリと、
次のメモリ行の位置を次のメモリ列に従って特定する前に、連続して走査された複数のメモリ列のそれぞれに従って次のメモリ行の位置を連続してＭ回特定する前記メモリリフレッシュアドレス信号を生成し、前記画像メモリへ提供するためのリフレッシュアドレスジェネレータと、
前記メモリリフレッシュアドレス信号が次のメモリ行の位置を所定のメモリ列に従って連続してＭ回特定するそれぞれ毎回異なる順序並べ替えスキームに従って、ビット列の順序を並べ替えることによって順序が変わったビット列を生成し、オメガ網を含むビット順並べ替え網と、
それぞれの表示行に従って次の表示列位置に、前記メモリリフレッシュアドレス信号に応答して生成された前記メモリ出力信号から生じる順序が並べ替えられたビット列の所定のビットで表された画素値を、表示装置に表示するための信号出力手段と、
を有することを特徴とする表示制御回路。
【請求項８】
前記オメガ網は、３段オメガ網であることを特徴とする請求項５乃至７のいずれかに記載の表示制御回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本願発明はコンピュータシステム及び表示制御回路に関し、特にリフレッシュメモリに従って表示装置をリフレッシュするためのシステムに関する。
【０００２】
【従来の技術】
陰極線管（CRT）、液晶ディスプレイ（LCD）やその他のタイプの表示機構は周期的なリフレッシングを用いる。例えば、CRTディスプレイの場合、電子ビームが高速で表示画面上の蛍光体を走査して画像がずっと目に見えるようにする。このために、リフレッシュメモリは画像を構成する画素の値を表す画素データを保有し、これらのデータは画面の位置を「着色」しなければならない順序でメモリからフェッチされる。
【０００３】
特に小型のハンドヘルド型ディスプレイの場合、画像表示の配向を変えることができることは価値がある。縦長の画像は「ポートレート」オリエンテーションを有すると称されるのに対し、横長の画像は「ランドスケープ」オリエンテーションを有すると称される。
【０００４】
表示される典型的な画像と同様に、典型的な表示装置は一方が他方より長いので、小型のディスプレイでは表示装置が使用されている特定の画像に応じてユーザがポートレート又はランドスケープいずれかのオリエンテーションにディスプレイを配向させることができると便利である。ハードウェアの観点からは、表示装置が保持されている或いは搭載されている特定のオリエンテーションに応じて表示装置がその走査を変えるというのは非実用的である。すなわち、表示装置は普通、表示の長さ方向が水平方向であろうが垂直方向であろうが係わりなく、表示の長さ方向に延びる走査線に沿って連続する表示位置を走査するようになっている。
【０００５】
【発明が解決しようとする課題】
しかしながら、プログラミングの観点からは、意図する画像オリエンテーションに応じて画素位置を参照できると便利である。すなわち、連続するアドレスは表示装置の走査方向に係わりなく水平方向に進むようにすべきである。言い換えれば、ポートレートオリエンテーションの画像の水平方向に沿って順番にたとえ表示装置はその順番にメモリから画像データを検索しなくても画素位置を参照できると便利である。これは、サポートしているハードウェアが表示装置の走査方向の変化を補正できるようにしなければならないから、プログラマーには見えないということを意味する。
【０００６】
これを達成する一つのやり方は、プログラマーのソフトウェアアドレスをシーケンスが表示装置の走査シーケンスと一致する記憶位置に変換するハードウェアを実現することである。このアプローチが望ましいアプリケーションがいくつかある。しかしながら、更新アドレスはランダムな順序で発生して、変換プロセスが込み入ったものになってしまうから、ハードウェア設計の観点からは、そうした変換をリアルタイムで行なわない方が好ましい場合がある。
【０００７】
【課題を解決するための手段】
そのために、シーケンスがハードウェア装置の走査シーケンスではなく標準の画像走査シーケンスと一致するリフレッシュメモリ位置に更新データが格納されるようにするアプローチを考案した。リフレッシュデータをフェッチするのに、表示行に沿って連続する画素位置のデータを検索するとソフトウェアアドレスの行オフセットだけ出力値を繰り返し進めていくアドレスジェネレータを用いる。さらに、データがフェッチされているその特定の表示行により、単一記憶位置からフェッチされたビットを表示装置を駆動するのに用いる前に並べ替えるようにする。このようにすると、いくつかの画素に値するデータが各記憶位置に格納されるけれども、画像データを正しく表示することができる。本発明のもう一つの態様によれば、連続する画像行を異なるメモリモジュールの共通するアドレスで指定された位置に格納するようにする。そうすると、所定の表示行にある複数の表示画素のデータは別の画像行を表すけれどもこれらのデータを同時にフェッチすることができる。
【０００８】
【発明の実施の形態】
図1は典型的なコンピュータシステムのブロック図である。中央処理装置（ CPU ）10はバス14によって他のバス装置12と通信する。また、バス14によってCPU１０がディスプレイ制御器16にアクセスできるようになる。CPU１０はディスプレイ制御器１６に画像更新データ及び対応するアドレスを送り、その対応するアドレスによって画像メモリ（スタティックRAM） 18のどこにデータを格納するかをディスプレイ制御器16に教える。コンカレントに、ディスプレイ制御器16はそのようにして格納されたデータを用いて表示装置20をリフレッシュするデータを供給する。
【０００９】
図2は図１のディスプレイ制御器１６をさらに詳細に示す図である。クロック回路30は動作してディスプレイ制御器全体のタイミングをとるようにする。ホストインタフェースモジュール34は中央処理装置からディスプレイ制御器に向けて送られたバス信号に応答する。そうしたコマンドによって、オンボードコンフィギュレーションのレジスタ36に指定の値がロードされるように指示することができる。すなわち、それらの値が読み出されるように指示することができるのでホストインタフェース34がバス14でその値を中央処理装置に送信することができる。
【００１０】
中央処理装置からの他の信号によってホストインタフェースモジュール34がアドレスジェネレータ及びメモリインタフェースモジュール38のインタフェース回路を動作させて画像メモリ18にロードしたり或いはそこからデータをフェッチするようにすることができる。シーケンサ40はアドレスジェネレータ及びメモリインタフェース38を動作させ、表示パイプライン41にディスプレイ用のリフレッシュデータを供給するようにする。典型的に、データによってルックアップテーブル42が保有するパレットからの選択を指定し、そのようにしてルックアップテーブルからフェッチされたデータはディスプレイインタフェースモジュール44によって表示駆動に適切な信号に変換される。
【００１１】
中央処理装置が表示メモリ18を「更新」すると、メモリに画素の値だけでなく画像内の位置も送る。図3a及び3bはランドスケープオリエンテーションの画像の場合の画像オリエンテーションリフレッシュシーケンスの典型的な関連を示す図である。画像行に沿って連続する画素のデータを保有する記憶位置のアドレス値は普通左から右に増えていく。もし記憶位置がそれぞれ1画素分だけのデータを保有するとしたら、1画素分のデータはアドレスが同じ画像行でその左側にある画素のデータを保有する記憶位置より1つ大きい記憶位置に保有される。もし各記憶位置が一つ以上の画素のデータを保有するとしたら、メモリアドレスはn画素ごとに1だけ増える。その場合、nは画素数で、そのデータは単一の記憶位置に保有される。
【００１２】
ランドスケープオリエンテーションの画像の場合、典型的な表示装置は基本的に同じシーケンスで新たな画素を着色し直す行内を左から右に進み上から下に連続して行から行を走査する。従って、リフレッシュデータがフェッチされるべきアドレスの生成は比較的にわかりやすい。一行が走査されると連続するアドレスは1だけ増え、新たな行開始アドレスは、例えば、各行の始まりにその前の行の開始アドレスからオフセットとして計算される。
【００１３】
画像がポートレートオリエンテーションになっている時、すなわち、垂直方向の長さが水平方向の長さを超えている場合、アドレスを画像の行で左から右に増えていくように指定するのが便利である。その場合、所定の画像行の全てのアドレスはその下の画像行のどのアドレスよりも大きい。しかしながら、スピードを考慮しなければならないから、実際の表示装置では同じ方向に走査しないようにするのが最も好ましい。図4a及び4bに示すように、画像データを図4aに示したシーケンスで進むアドレスで指定することができるが、その画像を表示する表示装置は概して図4bに示すように走査する。すなわち、右上から始めて垂直方向に行を下に向けて右から左に進む。そうした構成で、画像位置のメモリアドレスへの変換がもっと込み入っているか、リフレッシュアドレスシーケンスの生成がもっと込み入っているかいずれかのはずである。
【００１４】
以下に説明する表示システムは後者のアプローチを用いる。メモリアドレスの連続はおおまかに従来の画像位置シーケンスに従うが、リフレッシュアドレス生成は表示装置の異なる走査オリエンテーションを補正するシーケンスで実行される。その実行の仕方については図5及び図6に関して説明するが、図5及び図6はそれぞれ図2のモジュール38のメモリインタフェース及びアドレス生成の部分である。
【００１５】
図5に示すように、メモリインタフェース回路は出力ラッチ50を含む。ラッチ50の出力は表示メモリ18のアドレス入力になる。MEM_CLK信号が表示リフレッシュアクセスの間ところどころ中央処理装置のアクセスを入れられる程度に高速でラッチ50に対してパルスを発生する。シーケンサからのREFRESH_SLOT信号のレベルによってラッチ50がマルチプレクサ52の下位のリフレッシュアドレス入力を受け取るか或いは上位の更新アドレス入力を受け取るか決まる。
【００１６】
ここで最も重要なのはディスプレイをリフレッシュするためのアドレスであり、そのアドレスは更なるマルチプレクサ54の出力である。説明を進めていくうちに理由が明らかになってくるが、マルチプレクサ54は図6に関して説明するように生成された16ビットのGEN_ADDRESS信号のビット[14:0]或いは[15:1]かいずれかを用いる。
【００１７】
先ずランドスケープモードのアドレス生成について考える。メモリアドレスを生成するには、ラッチ60がメモリクロック信号MEM_CLKのパルスごとにマルチプレクサ61の出力をロードする。マルチプレクサ61は普通ラッチ60のGEN_ADDRESS出力のフィードバックとメモリ計算加算器62の出力の転送を交互に行なう。図7aに示すように、メモリクロック信号MEM_CLKは普通REFRESH_SLOTをトグルスイッチで切り換えるが、 REFRESH_SLOTはリフレッシュアクセス期間の範囲を限定する。リフレッシュアクセス期間はCPU期間と交互に発生し、 CPU期間にCPUは画像メモリを更新したり読み出しを行なう。ランドスケープモードにおけるREFRESH_SLOTの周波数は記憶位置あたりの画素数で割った画素クロックの周波数と同じである。
【００１８】
ディスプレイがランドスケープモードで行を走査していると、マルチプレクサ66は現在のメモリアドレスを加算器62の入力ポートに転送する。その他の入力ポートは通常ディスエーブルになっているANDゲートのバンク68からマルチプレクサ70によって転送されたゼロの値を受け取るが、加算器はゲート71から「1」の値の桁上げを受け取るので加算器の出力値NEXT_ADDRESS（図7a）は現在のメモリアドレスより一つ大きくなる。従って、マルチプレクサ61が加算器62の出力を転送すると、アドレスジェネレータの出力はMEM_CLKパルスの1つ置きに増分される。
【００１９】
ディスプレイが行の終わりにくると、シーケンサ40のLOAD_NEXT_ROW出力がANDゲートバンク68をイネーブルにしてレジスタのPITCH_ADJUSTMENT出力を転送できるようにする。レジスタのPITCH_ADJUSTMENT出力は表示の一行の最後の画素値と次の表示行の最初の画素値の差より一つ小さい。格納されている画像全体が表示されていると、一般にこの値はゼロである。しかしながら表示されている画像は往々にして格納された画像の一部だけで、ユーザはその周りをパンすることができ、ゼロでないPITCH_ADJUSTMENT値を加算すると格納された画像のうち表示される部分の左側及び／或いは右側になる部分はカットされる。
【００２０】
アドレス生成はこのようにしてディスプレイがその最後の行を完了するまで続けられる。完了すると、アドレス値は画像の開始アドレスに戻るはずである。それはCPUがレジスタ36にロードしたのでそのSOFTWARE_FRAME_START_ADDRESS出力のように見える。ランドスケープモードにおいて、アドレス変換回路72はFRAME_START_ADDRESSとして変更されていないこのアドレスをマルチプレクサ61に渡し、フレームの始まりにデコーダ73は一瞬だけマルチプレクサ61が加算器の出力ではなくこの値を転送するようにする。従ってこれは出力ラッチが最初にアドレスジェネレータの出力として表示する値になる。アドレスの生成は今説明したように続けられる。
【００２１】
ポートレートモードのアドレス生成は上述したランドスケープモードの生成とは異なる。この点については図8を考察すれば分かる。図8はポートレートモードの画像に割り当てられたメモリ空間を示す。例として、画像は幅240画素、長さ320画素であるとする。画素データは4色パレットからの選択を表し、画素ごとに2ビットを要するが、各記憶位置は1バイトだけを保有するので4画素分のデータを保有できると想定する。
【００２２】
図8は（16値で表現された）記憶位置2180を始まりとして画像データを描いており、その第1（ポートレートオリエンテーションの）行のデータの終わりは記憶位置21BBである。この例において、第2行は記憶位置21C0から始まる。表示装置は連続する（ランドスケープ型走査の）表示の列に沿ってその長さ方向に走査されるから、データは連続する（ポートレートオリエンテーションの）画像行の位置からフェッチされなければならない。そのために画面のリフレッシングは、たとえ画像データに割り当てられたメモリブロックは記憶位置2180にあるポートレート画像の左上角のデータから始まっても、ポートレートオリエンテーションの画像の右上角のデータを保有する記憶位置21BBのデータから始まらなければならない。
【００２３】
さらに、連続してフェッチされる画素データのアドレスは一行のオフセットだけ異なっていなければならない。この例では4016。これを達成するために、デコーダ73はマルチプレクサ70が加算器62の下位入力を更なるマルチプレクサ74から得るようにし、デコーダは通常マルチプレクサ74がデコーダのROW_OFFSET出力を転送するようにする。デコーダはそのINCREMENT_EN出力のアサートを取り下げ、ゲート71が桁上げ入力をそれ以上加算器に送らないようにする。従って加算器の出力は、表示がランドスケープの行に沿って進むと、MEM_CLKパルスの一つ置きにポートレート行のオフセット分だけ増し、出力ラッチ60のGEN_ADDRESS出力も増える。
【００２４】
ディスプレイが新たな（ランドスケープ）行を開始すると、デコーダ73はマルチプレクサ74がデコーダが生成した「0」または「-1」の値をマルチプレクサ70が加算器62の下位入力ポートに転送する入力として供給するようにし、それによってマルチプレクサ66が出力ラッチ60ではなく行の開始が透明なラッチ76から加算器の上位入力を得るようにする。これから説明するように、ラッチ76の出力は今完了したばかりの表示行の開始の画素データを保有する記憶位置のアドレスである。
【００２５】
もし各記憶位置が一つ以上の画素値を保持していれば、次の表示行の第1画素はその前の行と同じ位置にある。その場合、デコーダ73はマルチプレクサ74に「0」値を供給し、新たな表示行の最初の入力をその前の行と同じ記憶位置から得るようにする。例えば、記憶位置21BBは4つの連続する表示行（画像の列）のそれぞれに第1画素のデータを保有するので、4つの連続する表示行の走査それぞれのデータのフェッチはそこから始まらなければならない。5番目の行を開始する時、デコーダはマルチプレクサ74に「-1」を一つ供給し、それによって次の行の最初の入力をその前の行の最初の入力を得た記憶位置の前の位置から得るようにする。
【００２６】
表示行の始まりに、シーケンサ40はLOAD_NEXT_ROW信号をアサートしてANDゲート77がラッチ78にREFRESH_SLOT信号を一瞬だけ転送するようにする。レジスタのポートレートモードを示すPORTRAIT信号によってイネーブルされると、ANDゲート79はORゲート80を経由して更なるラッチ81にLOAD_NEXT_ROW信号も転送する。従って、次のMEM_CLKパルスで、ラッチ81の出力はマルチプレクサ82がその上位入力GEN_ADDRESSを透明ラッチ76に転送するレベルになり、一方ORゲート83で転送されたラッチ78の出力は透明ラッチ76を単にGEN_ADDRESS入力を転送するだけの透明な状態に切り換えるレベルになる。そこでREFRESH_SLOTのパルスが終わり、ANDゲート77をディスエーブルにして、次のMEM_CLKパルスによってラッチ78の出力が透明ラッチ76をラッチ状態に戻すようにする。ラッチ状態ではその時点で有効なGEN_ADDRESS、すなわち、現在の表示行の始まりにある画素のデータを保有する記憶位置のアドレスを保持する。
【００２７】
先に述べたように、透明ラッチ76は通常、「0」か「-1」が加算されて次の表示行の開始アドレスが決まると、表示行の走査の終わりまでこの値を保持する。だが、新たなフレームの始まりに、シーケンサ40はORゲート83を介して一瞬だけLOAD_FRAME_STARTをアサートし、透明ラッチ76が一瞬だけ透明状態になるようにする。これはマルチプレクサ82がFRAME_START_ADDRESS信号を転送している間に起きるので、その信号の値が最後の行の行開始値と置き換わる。
【００２８】
ポートレートモードで、アドレス変換回路72は単に、CPUが画像データの検索をどこから始めるべきかを示すためにレジスタにロードする値を表すSOFTWARE_FRAME_START_ADDRESSを転送することができる。しかしながら、それの代わりに、必要なメモリクロック周波数を低下させる、以下に説明するメモリ編成に適応するために開始アドレスを変換することができる。
【００２９】
先に述べたように、個々の記憶位置は一つ以上の画素のデータを保有する。そのために連続する表示装置の行の走査の場合アドレスジェネレータはポートレートモードオペレーションでメモリロケーションアドレスのシーケンスを数回繰り返さなければならない。これは、アドレスジェネレータが同じメモリシーケンスを生成する度ごとにメモリ出力は同じ画素位置集合のデータを表すことを意味するが、ディスプレイを制御すべきこれらの記憶位置の特定のビットは走査から走査へと変化する。所定の走査で適切なビットを決めるのに、表示システムは図9のオメガ網90を用いる。オメガ網90は図2の表示パイプライン41の一部である。
【００３０】
図9は画像メモリ18を、図8に提案している8ビットの記憶位置ではなく、16ビットの記憶位置に実際編成されているとして示している。これは、例えば、システムのリフレッシュ側がMEM_ADDRESS信号の最下位ビットに従って、メモリ出力の上位の2バイトと下位の2バイトのどちらかを選ぶのにマルチプレクサ92を用いるからである。
【００３１】
図10及び図11にオメガ網をより詳細に示す。図10に示すように、オメガ網90は、3つのスイッチ網ステージ94、96、98からなる3段のネットワークである。各ステージには図11に示すタイプのスイッチ網が4つある。スイッチ回路にはそれぞれ上下の入力線100及び102の他に上下の出力線104及び106がある。スイッチング回路はそれぞれが上下の入力線信号をそれぞれ上下の出力線に転送するか、或いは信号を切り換えるかして、下位の出力信号が上位の入力信号になり、上位に出力信号が下位の入力信号になるようにする。所定のステージで転送するか或いは切り換えるかの選択はマルチプレクサ制御器108からの3つのセレクト出力の一つがあると信号によって決められる（図9）。
【００３２】
図10に示すように、第1スイッチバンクの最上部のスイッチ回路94aはビット7と5を受け取り、その際ビット7は最上位ビットである。その次のスイッチ回路94bはビット3と1を受け取り、回路94cはビット6と4を、回路94dは2と0を受け取る。言い換えれば、所定の段においてスイッチ回路の上位半分は降順で奇数ビットを受け取るのに対し、下位半分は降順で偶数ビットを受け取る。同様に、第1段の出力は上から下に降順で番号が付けられると想定すれば、第2段の回路96a及び96bは降順で奇数番号が付けられた第1段の出力を受け取り、一方下位の回路96c及び96dは同様に降順で偶数番号が付けられた第1段の出力を受け取る。バンク98のスイッチ回路は同じようにバンク96の出力を受け取る。
【００３３】
結果として生じた信号の経路をたどることによって、所定の走査に選択されるべき適切なデータをイネーブルするように出力ビットの順序を並べ替えられることが分かる。とりわけ、マルチプレクサ制御器108はシーケンサ40からTOTAL_ROW_COUNT信号を受け取る。 TOTAL_ROW_COUNT信号は現在の表示走査線数を表し、マルチプレクサ制御器108はその数の最下位3ビットに従って別のスイッチバンクのマルチプレクサ選択信号を生成する。
【００３４】
例えば、各メモリバイトに4画素相当のデータがあるとすれば、マルチプレクサ制御器108は図12の表の通りに出力を生成する。図10に示した、結果として生じる信号の経路をたどると、オメガ網の入力ビット線[1:0]に印加される信号は走査線ゼロの期間にオメガ網の上位2つの出力線110及び112に現れることが分かる。同様に線[3:2]、[5:4]、[7:6]からの信号はそれぞれ第1、第2、第3の表示行の走査中それらの出力線に現れることが分かる。そのため、もしルックアップテーブルがその出力は上位2ビットだけに依存するようになっていれば、連続するシーケンスが同じ記憶位置を通るようにすると適切な画素データが選択されることになる。
【００３５】
よく考えれば、各記憶位置に1画素、2画素、4画素、或いは8画素相当のデータがある場合、同じネットワークを用いることができることが明らかになる。もし各記憶位置が1画素相当のデータを保有していれば、全てのスイッチのセレクト入力は図面にゼロと表されている値を有し、図13及び14ではそれぞれスイッチは画素あたり1ビット及び画素あたり4ビットを選択することができる。なお、図13は各記憶位置が8画素相当のデータを保有する場合の上述した実施例によって用いられる類似の表である。また、図14は記憶位置につき2画素分のデータに関する類似の表である。
【００３６】
低コスト化を求められる製品の場合、所要メモリスピードを低減するように設計変更するのが望ましい。上記の実施例のポートレートモードの動作を検討すると、リフレッシュスロットは表示画素がリフレッシュされると同じ速度で発生しなければならないことが明らかになる。リフレッシュスロットの周波数は画素クロックの周波数と等しくなければならない。これは、画像メモリ18のクロックは、もしアクセスが表示装置及びホストインタフェースの両方と一致していれば、画素クロックの2倍の速さでなければならないということを意味する。図15に示す編成を用いることによってこの所要速度を低減することができる。
【００３７】
図15は、画像メモリ18が2個別々のモジュール120及び122として実際に動作できることを示す。図5に示すように、ホストインタフェースで生成されたUPDATE_ADDRESS信号はアドレス変換回路124によって受け取られる。ホストインタフェースが供給するアドレスは図8に示すメモリ空間を指定するが、アドレス変換回路124はそれらのアドレスを変換して図16に示すアドレス空間になるようにする。
【００３８】
図8の第1行及び第2行はポートレートモード画像データの最初の2行が格納される記憶位置を表す。図16の編成では、図15の2個のモジュール120及び122においてその画像に対して割り当てられたメモリのそれぞれの第1行に同じデータが格納される。すなわち、各モジュールは1行置きにデータを受け取る。従って、リフレッシュサイクル中に、所定のメモリアドレスがモジュール120及び122の両方に用いられると、連続する画像2行の対応する画像位置からデータが同時にフェッチされる。これは、同じ表示行の2個の隣接画素のデータが同時にフェッチされるので、表示画素1個置きに1回のリフレッシュサイクルだけが必要になる。
【００３９】
図15に示すように、オメガ回路130及び132はそれぞれ2個のメモリモジュール120及び122の出力を受け取り、マルチプレクサ137がその上位入力を出力としてラッチ134に転送すると上述のビット順を生成してその結果をラッチ134及び136それぞれに用いる。その状態で、MEM_CLK信号によってオメガ網の値それぞれをラッチ134及び136に送り込み、また更なるフィードバックワイヤードラッチ140を動作させ、それによりラッチ140の出力を切り換え、次のMEM_CLK期間にマルチプレクサ137がラッチ136のそのようにラッチされた出力をラッチ134に転送するようにする。
【００４０】
表示スロットではなくむしろ更新スロットであるその期間に、オメガ網130及び132に印加される信号は表示データではないので、その期間の終わりにラッチ136に送り込まれたデータは有効でなくなる。しかしラッチ134の入力はラッチ136がその前のMEM_CLKパルスの結果として格納した（有効な）データだから、ラッチ134は連続するクロックパルスに応答してメモリモジュール120及び122それぞれから出力をシーケンシャルに生成する。ラッチ134はそのように表示スロット期間と更新スロット期間の両期間に有効な表示データを生成することになるから、メモリクロックは画素クロックの2倍の速さでなければならない必要はなく、メモリの値段が安くなる。
【００４１】
プログラミングの観点からは、メモリアドレスが図16に示した編成よりむしろ図8のような編成であるかのように指定すると都合がいい。このために、図5のアドレス変換回路（ADDRESS  TRANSLATION）124は一つのアドレス形から別のアドレス形に変換する。図17に図5のアドレス変換回路124をより詳細に示す。アドレス変換回路はUPDATE_ADDRESS信号を受け取り、図5のマルチプレクサ138は更新時間スロット期間にメモリモジュールに印加される次のMEM_ADDRESS信号を生成するために普通はUPDATE_ADDRESS信号をマルチプレクサ52に転送する。しかしながら、レジスタ（REGISTERS）36が画像はポートレートオリエンテーションだが、システムは仮想アドレスモードで動作するようになっていることを示すと、ANDゲート139はアドレス変換回路124がUPDATE_ADDRESSから生成するVIRTUAL_ADDRESS信号を代わりに転送する。
【００４２】
アドレス変換回路の動作の原理を理解するには、図8に示した更新アドレスと図16に示した対応する仮想アドレスとの関係を考えるといい。先に述べたように、仮想アドレススキームを用いて画像行を一つ置きにメモリモジュール一つ置きに入れることができる。従って、16値アドレス2180 ~ 21BBを保有する図8の一番上の行は第1のメモリモジュールの記憶位置10C0 ~ 10FBに入れられる。図8の2番目の行からの更新アドレス、つまり、21C0 ~ 21FBは図16の2番目のメモリモジュールに入れられるが、図8の1行目のアドレスが変換されたと同じアドレスの仮想アドレスがある。
【００４３】
さて、16値アドレスを2値アドレスに展開すると、図8の1行目のアドレスは図8の2行目の対応するアドレスとは7番目のビットが異なることが分かる。それは、すなわち、26を表すビットで、連続する行の対応する列アドレス間の差で、ROW_OFFSET信号によって表される。図8のアドレスの一つからこのビットを取り除くと図16における対応する仮想アドレスを得ることができる。この仮想アドレススキームの場合、行のオフセットは常に2のべき乗になるようにすることができるので、この関係は常に有効である。すなわち、同じ仮想アドレスになる2個の更新アドレスの差は1ビットだけで、そのビットは関連データを格納するメモリモジュールを示している。
【００４４】
図17は、アドレス変換回路124によるこの原理の実現を示す。仮想アドレスを生成する更新アドレスから単一ビットが削除されるから、UPDATE_ADDRESS[15:0]はVIRTUAL_ADDRESS[14:0]に変換される。また、行オフセットは27以上にはなりそうにない。すなわち、取り除かれるビットは上位のアドレスバイトにはないから、図に示すように、UPDATE_ADDRESS[15:8]はVIRTUAL_ADDRESS[14:7]になる。
【００４５】
しかしながら、UPDATE_ADDRESS[7]は削除されるビットと仮定するから、VIRTUAL_ADDRESS[6]はUPDATE_ADDRESS[7]又はUPDATE_ADDRESSS[6]のいずれかの可能性があるので、マルチプレクサ142aはROW_OFFSET[7]の値によってこれらの2つの可能性のどちらかを選択する。
【００４６】
マルチプレクサ142bはUPDATE_ADDRESS[6]とUPDATE_ADDRESS[5]のどちらかを選ぶことにより同様にVIRTUAL_ADDRESS[5]を生成する。ROW_OFFSET[6]又はROW_OFFSET[7]がアサートされたら、マルチプレクサ142bはVIRTUAL_ADDRESS[5]の値としてUPDATE_ADDRESS[５]を選択する。それ以外は、UPDATE_ADDRESS[6]を転送する。マルチプレクサ142cから142fは同様に動作する。もし対応するROW_OFFSETビット或いはより上位のROW_OFFSETビットのどれかが設定されていれば、VIRTUAL_ADDRESSSビットは対応するUPDATE_ADDRESSビットと同じである。それ以外は、その次に下位のROW_OFFSETビットと同じである。更新が行なわれると、CPUは4バイトの出力として単一のアドレスを与えることが多いが、単一のCPUスロット期間にその出力の2バイトだけを適切な2バイト幅のメモリモジュールに書き込むことができる。従って、シーケンサの出力CYCLE_CONTROLによってマルチプレクサ142gが連続するCPUスロットでUPDATE_ADDRESS[0]とその補数を交代で用いるようにし2バイトのワード2個を連続する記憶位置に格納するようにする。
【００４７】
すぐ上に説明したように、仮想アドレスを生成する更新アドレスから取り除かれたビットは2個のメモリバンクのどれがデータを受け取るかを指定する。図18にそのビットに応じてチップ選択信号を生成するための回路を示す。その回路は複数のマルチプレクサ148aから148fを含み、その各々は選択信号としてROW_OFFSETの対応する1ビットを用いる。所定のROW_OFFSETビットがアサートされると、対応するマルチプレクサ148は出力としてUPDATE_ADDRESSの対応するビットを転送する。それ以外は、その上のマルチプレクサの出力を転送する。ROW_OFFSETが表す値は2のべき乗だから、そのビットの1個だけが設定されるので、マルチプレクサの1個だけがそれに対応するビットのUPDATE_ADDRESSを転送する。マルチプレクサ148aを除き、その他のマルチプレクサは全てが上のマルチプレクサの出力を下のマルチプレクサに転送する。従って、マルチプレクサ148fの出力はROW_ADDRESSSの（唯一）アサートされたビットに対応するUPDATE_ADDRESSビットの値である。2個のアドレスモジュールはそれぞれこの値とその補数をCHIP_SELECT_0及びCHIP_SELECT_1として受け取る。
【００４８】
上記の説明によって、本願発明はプログラミングを容易にしディスプレイに柔軟性をもたらす幅広い実施例に実施できることが実証されている。本願は従って重要な技術の進歩となるものである。
【図面の簡単な説明】
【図１】本願発明の実施例の表示メモリ編成を用いることのできるタイプのコンピュータシステムのブロック図を示す。
【図２】図1のディスプレイ制御器のより詳細な図である。
【図３】ａ及びｂランドスケープオリエンテーションの画像の画像空間とディスプレイ走査シーケンスとの関係を示す図である。
【図４】ａ及びｂポートレートオリエンテーションの画像のシーケンスを示した図である。
【図５】図2のアドレスジェネレータ／メモリインタフェース・モジュールのメモリインタフェース部分のブロック図である。
【図６】図２のモジュールのアドレスジェネレータ回路のブロック図である。
【図７】ａ及びｂシステムのランドスケープモード及びポートレートモードそれぞれのアドレス生成を示すタイミング図である。
【図８】本発明の実施例によって用いられるポートレートモードのメモリ編成の一つの形を示す図である。
【図９】本発明の実施例のメモリモジュール及び表示パイプラインを示すブロック図である。
【図１０】図9の表示パイプラインが用いるオメガ網を示すブロック図である。
【図１１】図10の個々のオメガ網スイッチの一つのより詳細なブロック図である。
【図１２】各記憶位置が4画素相当のデータを保有する場合、ポートレートモードで実施例が用いる、オメガ網選択信号と走査線との関係を示す表である。
【図１３】各記憶位置が8画素相当のデータを保有する場合の実施例によって用いられる類似の表である。
【図１４】記憶位置につき2画素分のデータに関する類似の表である。
【図１５】本願発明の別の実施例によって用いられるメモリモジュールと表示パイプラインのブロック図である。
【図１６】図15の実施例のメモリ編成を示す図である。
【図１７】図15及び16の別の実施例によって用いられるアドレス変換ネットワークの論理図である。
【図１８】図15及び16の別の実施例メモリチップ選択回路を示す図である。
【図１】
0004631112.tif 000002
【図２】
0004631112.tif 000003
【図３】
0004631112.tif 000004
【図４】
0004631112.tif 000005
【図５】
0004631112.tif 000006
【図６】
0004631112.tif 000007
【図７】
0004631112.tif 000008
【図８】
0004631112.tif 000009
【図９】
0004631112.tif 000010
【図１０】
0004631112.tif 000011
【図１１】
0004631112.tif 000012
【図１２】
0004631112.tif 000013
【図１３】
0004631112.tif 000014
【図１４】
0004631112.tif 000015
【図１５】
0004631112.tif 000016
【図１６】
0004631112.tif 000017
【図１７】
0004631112.tif 000018
【図１８】
0004631112.tif 000019