(57)【要約】【課題】読み書きストローブバイトイネーブルを用いる３２ビット汎用非同期バスインタフェース【解決手段】非同期バスインタフェースを有するディスプレイコントローラを提供する。マイクロプロセッサと通信するように構成されたディスプレイコントローラで、このディスプレイコントローラは第１のクロック速度で動作し、マイクロプロセッサは第の２クロック速度で動作する。ディスプレイコントローラは、表示される画像データを保持するためのメモリコア及び画像データの表示を可能にする構成データを保有するレジスタセットを有する。バスによるディスプレイコントローラのメモリコア及びマイクロプロセッサ間の通信を可能にする非同期バスインタフェースも有する。この非同期バスインタフェースは、マイクロプロセッサの第２クロックの速度に影響されないと共に、第１クロックの速度及び第２クロックの速度間の差違に影響されないように構成される。【選択図】　図２
2004005683.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサと通信するように構成されたディスプレイコントローラで、当該ディスプレイコントローラは第１のクロック速度で動作し、当該マイクロプロセッサは第２のクロック速度で動作し、前記ディスプレイコントローラは、
表示される画像データを保持するためのメモリコアと、
前記画像データの表示を可能にする構成データを保有するレジスタセットと、
前記ディスプレイコントローラのメモリコアと前記マイクロプロセッサと通信を可能にする非同期バスインタフェースとからなり、当該非同期バスインタフェースは前記第２のクロック速度に影響されないと共に前記第１のクロック速度及び前記第２のクロック速度との差に影響されないように構成され、前記非同期バスインタフェースはフリップフロップチェーン冗長回路を有することを特徴とする。
【請求項２】
前記非同期バスインタフェースはコマンド信号集合と通信するように構成され、前記コマンド信号は、３２ビットデータバスにおいてどのバイトが有効データを保有しているかを定義する４つのバイトセレクト信号と、リードサイクルか又はライトサイクルかを定義する読み書き制御信号とによって定義されることを特徴とする請求項１に記載のディスプレイコントローラ。
【請求項３】
前記フリップフロップチェーン冗長回路において、少なくとも２つのフリップフロップが直列接続されていることを特徴とする請求項１に記載のディスプレイコントローラ。
【請求項４】
前記少なくとも２つのフリップフロップはコマンド信号を受け取ることを特徴とする請求項３に記載のディスプレイコントローラ。
【請求項５】
前記コマンド信号は、チップセレクト信号、読み書き制御信号、及びバイトセレクト信号を含むことを特徴とする請求項４に記載のディスプレイコントローラ。
【請求項６】
前記ディスプレイコントローラはハンドシェーキング信号を発すると共にサンプリングするように構成され、前記ハンドシェーキング信号はバスサイクルを開始及び完了するように構成されていることを特徴とする請求項１に記載のディスプレイコントローラ。
【請求項７】
前記ハンドシェーキング信号は要求信号及び肯定応答信号を含み、肯定応答信号は要求信号に応答して生成されることを特徴とする請求項６に記載のディスプレイコントローラ。
【請求項８】
前記要求信号は、第１のクロックに基づいて発せられ、第２のクロックに基づいてサンプリングされることを特徴とする請求項７に記載のディスプレイコントローラ。
【請求項９】
前記要求信号は、前記第２のクロック速度に基づいてディスプレイコントローラに対して発せられるチップセレクト信号であって、前記肯定応答信号は前記第１のクロック速度に基づいてディスプレイコントローラから発せられることを特徴とする請求項７に記載のディスプレイコントローラ。
【請求項１０】
システムであって、
中央処理機構（ＣＰＵ）と、
データバスと、
前記データバスで前記ＣＰＵと通信しているディスプレイコントローラとからなり、当該ディスプレイコントローラは前記データバスで前記ＣＰＵとの通信を可能にするバスインタフェースを含んでおり、当該バスインタフェースは、前記ＣＰＵのクロックに影響されないと共に前記ＣＰＵのクロック速度及び前記ディスプレイコントローラのクロック速度との差に影響されないように構成され、前記非同期バスインタフェースはフリップフロップチェーン冗長回路を含むことを特徴とするシステム。
【請求項１１】
埋め込みシステムであることを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記フリップフロップチェーン冗長回路は少なくとも２つの直列接続されたフリップフロップを有し、当該少なくとも２つの直列接続されたフリップフロップはコマンド信号を受け取るように構成されていることを特徴とする請求項１０に記載のシステム。
【請求項１３】
前記コマンド信号は、チップセレクト信号、読み書き制御信号、及びバイトセレクト信号を含むことを特徴とする請求項１０に記載のシステム。
【請求項１４】
前記ディスプレイコントローラと通信している表示画面をさらに有し、当該表示画面は前記ディスプレイコントローラからの画像データを表示するように構成されていることを特徴とする請求項１０に記載のシステム。
【請求項１５】
前記ディスプレイコントローラは液晶ディスプレイ（ＬＣＤ）コントローラであることを特徴とする請求項１０に記載のシステム。
【請求項１６】
前記ＣＰＵ及び前記ディスプレイコントローラ間のハンドシェーキング信号によってバスサイクルが開始及び完了することを特徴とする請求項１０に記載のシステム。
【請求項１７】
前記ハンドシェーキング信号は、要求信号及びその要求信号に応答した肯定応答信号を含むことを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記ＣＰＵはＣＰＵのクロックに基づいて前記ディスプレイコントローラに対して要求信号を発し、前記ディスプレイコントローラはディスプレイコントローラのクロックに基づいてその要求信号をサンプリングすることを特徴とする請求項１７に記載のシステム。
【請求項１９】
第１のクロック速度で動作しているディスプレイコントローラと第２のクロック速度で動作しているマイクロプロセッサとの間で通信するための方法であって、当該方法は、
マイクロプロセッサから要求を受け取ることからなり、当該マイクロプロセッサからの要求はマイクロプロセッサのクロックに基づいて生成され、
前記要求をディスプレイコントローラのクロックに基づいてサンプリングし、
前記ディスプレイコントローラの内部サイクルを開始するために前記マイクロプロセッサからの要求に対して肯定応答を送り、
読み取り動作又は書き込み動作と関連付けられるデータを供給し、
前記内部サイクルを終えるために前記ディスプレイコントローラから要求を発すると共に当該ディスプレイコントローラからの要求は前記ディスプレイコントローラのクロックに基づいて生成され、
前記マイクロプロセッサのクロックに基づいて生成される前記マイクロプロセッサからの肯定応答を受け取ることからなることを特徴とする。
【請求項２０】
前記マイクロプロセッサからの要求及び前記マイクロプロセッサからの肯定応答はチップセレクト信号であることを特徴とする請求項１９に記載の方法。
【請求項２１】
前記ディスプレイコントローラからの要求及びその応答に対する前記マイクロプロセッサからの肯定応答はＷＡＩＴ信号であることを特徴とする請求項１９に記載のシステム。
【請求項２２】
ディスプレイコントローラのクロックに基づいて前記要求をサンプリングする前記オペレーションはさらに、
コマンド信号をダブルサンプリングすることによって準安定状態の発生を最小限するステップを含むことを特徴とする請求項１９に記載の方法。
【請求項２３】
前記ダブルサンプリングは、フリップフロップチェーン冗長回路を介して行うことを特徴とする請求項２２に記載の方法。
【請求項２４】
前記コマンド信号は、チップセレクト信号、読み書き制御信号、及び４つのバイトセレクト信号を含むことを特徴とする請求項２２に記載の方法。
【請求項２５】
前記コマンド信号は、ローをアクティブとすることを特徴とする請求項２２に記載の方法。
【請求項２６】
データバスでマイクロプロセッサ及びディスプレイコントローラ間で読み取り動作又は書き込み動作を行なうための方法であって、当該方法は、
第１のクロック速度でマイクロプロセッサを動作させ、
第２のクロック速度でディスプレイコントローラを動作させ、
前記マイクロプロセッサ及び前記ディスプレイコントローラで要求及び肯定応答を含むハンドシェーキングルーチンを実行することからなり、当該要求は当該肯定応答とは異なるクロックの速度と関連付けられており、
前記ハンドシェーキングルーチンの完了と同時にデータバスで読み取り動作及び書き込み動作の一方を開始することからなり、当該読み取り及び書き込み動作の一方の実行は前記第１のクロック速度及び前記第２のクロックの速度間の差に影響されないことを特徴とする。
【請求項２７】
前記マイクロプロセッサ及び前記ディスプレイコントローラで要求及び肯定応答を含むハンドシェーキングルーチンを実行する前記オペレーションはさらに、
前記マイクロプロセッサと関連付けられるクロックに基づいてマイクロプロセッサから要求を受け取り、
前記マイクロプロセッサからの要求を前記ディスプレイコントローラと関連付けられるクロックに基づいてサンプリングすることを含むことを特徴とする請求項２６に記載の方法。
【請求項２８】
バスサイクルが読み取り動作かあるいは書き込み動作かを判定すると共に前記データバス上の有効データの位置を判定するように構成されたコマンド信号の集合を定義することをさらに含むことを特徴とする請求項２６に記載の方法。
【請求項２９】
前記コマンド信号は、チップセレクト信号、読み書き制御信号、及び４つのバイトセレクト信号を含むことを特徴とする請求項２８に記載の方法。
【請求項３０】
前記読み書き制御信号によってバスサイクルが読み取り動作か或いは書き込み動作かが決まることを特徴とする請求項２９に記載の方法。
【請求項３１】
前記コマンド信号をダブルサンプリングすることにより、準安定状態の発生を最小限とすることを特徴とする請求項２８に記載の方法。
【請求項３２】
前記コマンド信号をダブルサンプリングすることにより準安定状態の発生を最小限にする前記オペレーションは、
前記コマンド信号をフリップフロップチェーン冗長回路を介して処理することをさらに含むことを特徴とする請求項３１に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的にはコンピュータシステムに関し、より具体的には様々なマイクロプロセッサと通信可能な汎用非同期バスインタフェースに関する。
【０００２】
【従来の技術】
消費者向け携帯用電子機器は、今日、社会のあらゆる分野に普及している。そうした機器の例としては、パーソナルディジタルアシスタント（ＰＤＡ）、モバイル電話、ページャ、ウェブタブレットなどがあげられる。こうした携帯用機器には、中央処理装置（ＣＰＵ）を含む埋め込みシステムが内蔵されている。こうしたハンドヘルド機器の提供できる機能範囲は狭いので、これらの埋め込みシステムと関連づけられるＣＰＵはデスクトップやラップトップのＣＰＵほど強力な計算力を有している必要はない。あるタイプのハンドヘルド機器専用に設計されたＣＰＵを提供するベンダは数多い。よく知られているように、ＣＰＵはそのＣＰＵをサポートする固有の（ｎａｔｉｖｅ）バスも含んでいる。さらに、機器は、液晶ディスプレイ（ＬＣＤ）コントローラなど、ディスプレイコントローラの制御の下で画像を表示する表示画面を有している。ディスプレイコントローラは、ＣＰＵとは異なるベンダが製造するのが普通で、ディスプレイコントローラがシステムバスで特定のＣＰＵと通信できるようにするバスインタフェースを組み込むようにカスタマイズされる。多種多様なＣＰＵがあるので、ディスプレイコントローラは、ある範囲のＣＰＵとインタフェースをとるようにカスタマイズされる傾向がある。
【０００３】
さらに、市販のいろいろなＣＰＵ及びディスプレイコントローラは別々のクロックの速度で動作する。従って、ＣＰＵとＬＣＤコントローラの通信に用いられるデータバスは、ＣＰＵ及びＬＣＤコントローラが動作する別々の速度に対応できるように非同期でよい。すなわち、ＣＰＵ及びＬＣＤコントローラが同じクロックを使用している場合のように、事象が所定の時間に発生するわけではないので、バスインタフェースは、ハンドシェーキング方式とも呼ばれるインターロック型通信に対応できるようになっている。さらに、省電力化のために、特定のＣＰＵ向けのディスプレイコントローラは、外部水晶振動子（ｅｘｔｅｒｎａｌ　ｃｒｙｓｔａｌ）によってクロックを提供する。しかしながら、外部水晶振動子は名目上のバス周波数のほんの一部の周波数で走行している可能性がある。従って、ＣＰＵとディスプレイコントローラが通信するには、クロックの速度間の差に一定の限定がなければならない。さらに、「非同期」という言葉は、可変長アクセスを可能にするＷＡＩＴ信号を含むバスインタフェースに対しても用いられる。バスインタフェースがＷＡＩＴ信号による可変長アクセスを許可すると共にバスマスタ及びバススレーブが同じバスクロックを使用している場合、つまりバスクロック信号に対して全てのバスの事象を定義する場合は、このタイミングは一つのＣＰＵオシレータのスレーブ状態にあるのだから、このバスインタフェースは真に非同期とは言えない。真の非同期のバスインタフェースでは、異なるクロックで信号の駆動やサンプリングが行われる。
【０００４】
図１は、ＬＣＤコントローラなどのディスプレイコントローラと通信しているＣＰＵを含む埋め込みシステムの概略図である。ＣＰＵ１００はバス１０２でＬＣＤコントローラ１０６のバスインタフェース１０４と通信する。ＣＰＵ１００は速度Ｙで動作するように構成されているのに対し、ＬＣＤコントローラ１０６は速度Ｘで動作する構成になっている。ＣＰＵ１００とＬＣＤコントローラ１０６のクロック速度間に大きな差があると、その２つのクロック速度の差に起因して問題が発生する。ＬＣＤコントローラ１０６が１キロヘルツ（ＫＨｚ）のクロック速度で動作し、ＣＰＵ１００が１００メガヘルツ（ＭＨｚ）のクロック速度で動作している状況を例として考える。この状況においては、ＣＰＵ１００は１００ＭＨｚのクロック周期で信号を有効にする。クロック速度に差があるため、１ＫＨｚで動作しているＬＣＤコントローラ１００は、割り当てられたクロック周期にその有効になった信号をおそらくサンプリングできない。従って、ＬＣＤコントローラ１０６はＣＰＵ１００と通信できなくなる。
【０００５】
動作速度の差によって引き起こされる問題に対処するアプローチの一つは、ＬＣＤコントローラとＣＰＵの速度差に限界を設けることである。すなわち、ＬＣＤコントローラは、そのＬＣＤコントローラとＣＰＵのクロック速度の差を前提として、特定のクロック速度のＣＰＵ向けに作られる。さらに、ＬＣＤコントローラは、速度の差を補償するために、一定の時間周期内に間違いなく信号がサンプリングされるように、一つの信号をダブルサンプリングあるいはトリプルサンプリングする。すなわち、コントローラの速度が一定範囲内になると信号のサンプリングを繰り返すことで、その信号の割り当てられたクロック周期内のサンプリングを保証している。この方法の一つの限界は、ＣＰＵ及びＬＣＤコントローラが互いに一定範囲内の速度になければならないという点である。そうでなければ、この方法による非同期モード動作は機能しない。
【０００６】
さらに、信号を受け取るためにＬＣＤコントローラが使用するクロックとは異なるクロックでＣＰＵが信号を有効にするため、非同期バスインタフェースは準安定状態に遭遇する可能性がある。ＣＰＵから生成された信号を受け取るＬＣＤコントローラのバスインタフェース内にあるフリップフロップ回路又はラッチ回路は、フリップフロップへのＤ出力と関連づけられるセットアップ時間及びホールド時間を有する。フリップフロップのセットアップ時間又はホールド時間に違反があると、出力（Ｑ）が準安定状態になる可能性がある。すなわち、ＣＰＵが信号を有効にするのと同じ時にＬＣＤコントローラのクロックの立上りエッジが発生すると、フリップフロップはどちらの状態になるべきなのか「混乱」してしまい、信号に２つの無限勾配が生じる。フリップフロップが使用するクロックはＬＣＤのクロックで、ＣＰＵが信号を生成する際に使用するクロックとは別のクロックだから、セットアップ期間に入力の遷移が発生しないことを保証することはできない。この準安定状態はチップにとって非常に危険な状態で、バスサイクルを完了できなくなる。従って、非同期バスインタフェースを安定して動作させるためには準安定状態の発生を最小限に抑えなければならない。
【０００７】
【特許文献１】
米国特許第６，１２２，６９０号明細書
【特許文献２】
米国特許第６，０４９，８４４号明細書
【０００８】
【発明が解決しようとする課題】
そこで、ディスプレイコントローラとマイクロプロセッサの動作速度の差に関係なく、いろいろなマイクロプロセッサと通信可能な非同期汎用バスインタフェースを有するディスプレイコントローラを提供するために、先行技術が抱える問題を解決する必要がある。さらに、ディスプレイコントローラの回路は、準安定状態の発生を最小限に抑えるように構成されなければならない。
【０００９】
【課題を解決するための手段】
大まかに言って、本発明は、ＬＣＤコントローラ及びそのＬＣＤコントローラと通信しているＣＰＵ間のクロック速度の差に影響されない非同期データ交換をサポートするディスプレイコントローラの汎用バスインタフェースを提供することでこうしたニーズに応える。さらに、この非同期汎用バスインタフェースは、準安定状態の発生を最小限に抑えるために、フリッププロップチェーン冗長回路（ｃｉｒｃｕｉｔｒｙ）を有する。なお、本発明の実現方法としては、プロセス、システム、デバイスなど、数多く考えられる。本発明の実施例を以下に数例あげて説明する。
【００１０】
一実施例においては、マイクロプロセッサと通信するように構成されたディスプレイコントローラを提供する。ディスプレイコントローラは第１のクロック速度で動作し、マイクロプロセッサは第２のクロック速度で動作する。ディスプレイコントローラは、表示される画像データを保持するメモリコアと、その画像データの表示を可能にする構成データを保有するレジスタセットとを有している。ディスプレイコントローラのメモリコアとマイクロプロセッサと間のバスによる通信を可能にする非同期バスインタフェースも含まれている。非同期バスインタフェースは、マイクロプロセッサの第の２クロック速度に影響されず、且つ第１のクロック速度と第２のクロック速度との差にも影響されない構成になっている。また、フリップフロップチェーン冗長回路がバスインタフェースに含まれている。
【００１１】
別の実施例では、データの非同期交換を可能にするシステムを提供する。このシステムは、中央処理装置（ＣＰＵ）とデータバスを含む。データバスでＣＰＵと通信するディスプレイコントローラも含まれる。ディスプレイコントローラは、バスでＣＰＵとの通信を可能にするバスインタフェースを有する。バスインタフェースは、ＣＰＵのクロックに影響されないと共に、ＣＰＵのクロック速度とディスプレイコントローラのクロック速度の違いに影響されない構成になっている。非同期バスインタフェースはフリップフロップチェーン冗長回路も含んでいる。
【００１２】
また別の実施例では、第１のクロック速度で動作するディスプレイコントローラと、第２のクロック速度で動作するマイクロプロセッサとの間で通信するための方法を提供する。この方法は、マイクロプロセッサからの要求をディスプレイコントローラが受け取ることから始まる。マイクロプロセッサの要求は、マイクロプロセッサのクロックに基づいて生成される。次に、その要求がディスプレイコントローラのクロックに基づいてサンプリングされる。次に、ディスプレイコントローラの内部サイクルを開始するべく、ディスプレイコントローラがマイクロプロセッサから要求を受け取ったことを通知する。次に、読み取り動作又は書き込み動作に関係したデータが提供される。次に、内部サイクルを終了させる要求がディスプレイコントローラからマイクロプロセッサに発せられる。ディスプレイコントローラからの要求はディスプレイコントローラのクロックに基づいて生成される。次に、ディスプレイコントローラがマイクロプロセッサから肯定応答を受け取る。肯定応答はマイクロプロセッサのクロックに基づいて生成される。
【００１３】
さらに別の実施例では、データバスでマイクロプロセッサとディスプレイコントローラとの間で読み取り動作又は書き込み動作を行なうための方法を提供する。この方法は、第１のクロック速度でマイクロプロセッサを動作させることから始まる。次に、第２のクロック速度でディスプレイコントローラを動作させる。次に、ハンドシェーキングルーチンが実行される。ハンドシェーキングルーチンは、マイクロプロセッサ及びディスプレイコントローラ間の要求及び肯定応答を含む。要求は、肯定応答とは異なるクロック速度と関連づけられている。次に、ハンドシェーキングルーチンが完了すると直ちにデータバスで読み取り動作又は書き込み動作が始まる。これにおいて、読み取り動作又は書き込み動作の実行は、第１のクロック速度と第２のクロック速度の差に影響されない。
【００１４】
本発明のその他の態様並びに効果については、本発明の原理を例として示した添付の図面と共に以下に述べる詳細な説明から明白になる。
【００１５】
【発明の実施の形態】
発明を、様々な中央処理装置（ＣＰＵ）と通信するように設計されたコントローラの汎用バスインタフェースを提供するための装置及び方法として説明する。なお、バスインタフェースを介して処理される種々の信号を、本明細書では信号の略語として後ろに符号「＃」を付けて示した。言うまでもなく、その他、技術分野で広く使用される信号の指定には、上線を付けて省略したり文字「Ｘ］を後ろに付ける省略形もある。さらに、論理のハイレベルを２値の「１」を有すると称する一方、論理のローレベルを２値の「０」を有すると称することもできる。しかしながら、当業者であれば、以下の説明に鑑みて、これら具体的な詳細の一部又は全てを知らなくても本発明を実施できることは明白であろう。その他の場合は、本発明を不要に不明瞭にしないために、よく知られたプロセスオペレーションについては詳細な説明を省いた。
【００１６】
本発明の実施例は、ＣＰＵと通信するディスプレイコントローラの汎用バスインタフェースを提供するものである。一実施例では、汎用バスインタフェースに供給されるコマンド信号の構成（ｃｏｎｆｉｇｕｒａｔｉｏｎ）により、いろいろなマイクロプロセッサ及びそれと関連づけられたネイティブバスとの通信が可能になる。さらに詳細に以下に説明するように、コマンド信号は、実行される読み取り又は書き込み動作を定義すると共に、ネイティブバス上の有効データの位置を定義する構成になっている。別の実施例において、汎用バスインタフェースはデータの非同期交換に対応する。ここで、ディスプレイコントローラ及びＣＰＵは、クロック速度が異なる別々のクロックによって制御される。ＣＰＵとディスプレイコントローラとの間でハンドシェーキングが定義されているので、クロック速度の差に対応できないがために必要だった以前の制約条件はあてはまらなくなる。
【００１７】
ここで説明する汎用バスインタフェースは、種々のＣＰＵ、それもとりわけ、ＨＩＴＡＣＨＩ，　ＭＯＴＯＲＯＬＡ，　ＩＮＴＥＬなどが製造しているプロセッサを含み、埋め込み型の市場に出ているＣＰＵと通信する機能を有する。よく知られているように、埋め込みシステム（ｅｍｂｅｄｄｅｄ　ｓｙｓｔｅｍ）によって、用途特定の機能集合を実行するマイクロプロセッサベースの電子システムが定義される。埋め込みシステムは、感知や入力への応答専用に用いられる傾向がある。当業者であれば、埋め込みシステムは、自動車、通信、消費者、工業など多くの産業界に存在していることが分かるだろう。もっと具体的に言えば、埋め込みシステムは、パーソナルディジタルアシスタント（ＰＤＡ）、モバイル電話、ページャ、ウェブタブレットなど、コンパクトな携帯用ハンドヘルド機器と共に使用されている。これら携帯用ハンドヘルド機器は、その性質上、デスクトップやラップトップコンピュータなどと同じ量の消費電力を必要としない。さらに、こうした機器は、電池電力に限界があるので、デスクトップやラップトップシステムと比べて電力消費が少ない。従って、埋め込みシステムを組み込んだ機器は、提供できる機能もデスクトップコンピュータシステムと同じではない。以下に説明する実施例はハンドヘルド電子機器用のＣＰＵを対象にしているが、こうした実施例はあくまで模式的なものであり、範囲を制限するものではない。当業者であれば、汎用バスインタフェースは、ハンドヘルド機器だけでなくデスクトップや携帯用パーソナルコンピュータのＣＰＵとも通信するよう構成可能なことが明らかであろう。
【００１８】
一つの実施例において、汎用バスインタフェースは２１ビットのアドレス空間にアドレス指定可能な３２ビットのデータ幅をサポートしている。言うまでもなく、バスインタフェースは、適した任意のビット数のアドレス空間のデータ幅をサポートすることができる。バスインタフェースは、以下により詳細に説明するコマンド信号を介してほとんどのＣＰＵインタフェースを取り付けるのに必要な信号に対応できるように構成されている。汎用バスインタフェースは、リトルエンディアン（ｌｉｔｔｌｅ　ｅｎｄｉａｎ）モード及びビッグエンディアン（ｂｉｇ　ｅｎｄｉａｎ）モードを共にサポートしている。当業者であれば、リトルエンディアンモード及びビッグエンディアンモードは、一連のバイトがメモリに保持される順番を記述していることが分かるだろう。以下にさらに詳しく説明するように、バスインタフェースの実施例には、同期モードで動作するように構成されたバスインタフェースと、非同期モードで動作するように構成されたバスインタフェースとがある。同期モードでは、ハイをアクティブにあるいはローをアクティブに設定可能な外部ＷＡＩＴ＃制御信号を利用してバスサイクルを延長することができる。非同期汎用バスインタフェースは、ディスプレイコントローラのクロック速度とそのディスプレイコントローラと通信しているＣＰＵのクロック速度との差に影響されないように構成されている。さらに、非同期バスインタフェースは準安定状態の発生を最小限に抑えるための回路（ｃｉｒｃｕｉｔｒｙ）を含んでいる。
【００１９】
図２は、本発明の一実施例に基づく、ＣＰＵと通信している汎用バスインタフェースを有する液晶ディスプレイ（ＬＣＤ）コントローラ等の、ディスプレイコントローラのハイレベルな概略図である。ＣＰＵ１０８はバス１１２を介してＬＣＤ１１６と通信している。ＣＰＵは、適した任意の個数のマイクロプロセッサでいい。一実施例において、ＣＰＵ１０８は、埋め込みシステム用に設計されたマイクロプロセッサである。そうした埋め込みシステムの一つは、ＨＩＴＡＣＨＩ　ＳＨ３マイクロプロセッサで、ＳＨ３マイクロプロセッサをサポートする固有のバスを内蔵している。なお、ＬＣＤコントローラ１１６は埋め込みシステム及び非埋め込みシステムのいろいろ適したＣＰＵと通信するように構成された汎用バスインタフェース１１４を内蔵しているので、説明上、ＨＩＴＡＣＨＩ　ＳＨ３マイクロプロセッサをとりあげただけで本発明を限定することを意図しているわけではない。本明細書で採用しているＬＣＤコントローラ１１６は、適していればどんなディスプレイコントローラでもよく、埋め込みシステムと関連づけられていてもいなくても構わない。
【００２０】
図２に話を戻すと、ＬＣＤコントローラ１１６はメモリコア領域１１８及びレジスタ領域１２０を有する。メモリコア領域１１８は、ＬＣＤパネルに表示される画像のデータを保有している。レジスタ領域１２０（レジスタセットとも称される）は、ＬＣＤコントローラ１１６を構成するためのデータを保有し、解像度、画面の大きさ、パネルタイプなど、画像を表示するために使用されるディスプレイパネルの構成データを含んでいる。すなわち、レジスタセットのレジスタは、ＬＣＤコントローラ１１６がメモリに入っている画像データを表示するために表示画面とインタフェースをとれるようにプログラミングされている。ＣＰＵ１０８は、ＬＣＤコントローラ１１６をＣＰＵのメモリ１１０にマップするレジスタを保有している。従って、ＣＰＵメモリ１１０がアドレス指定されると、ＣＰＵ１０８はチップセレクト信号（ＣＳ＃）を有効にする。一実施例において、ＣＳ＃は、以下に詳細に説明するように、ＬＣＤコントローラがアドレス指定されていることをＬＣＤコントローラ１１６に知らせるために使用される。
【００２１】
図３は、本発明の一実施例に基づく、現在のバスサイクルがリードサイクルかライトサイクルかを判定すると共にバス上の有効データの位置を判定する、コマンド信号集合を説明した表である。以下に説明するように、リードサイクルかライトサイクルかを指定する信号の集合が、同時に、３２ビットデータバスのどのバイトが有効データを保有しているかを指定している。従って、バスサイクルが読み取り動作か書き込み動作かどうかを指定している同じ信号集合によって、３２ビットデータバスの或る特定のビット幅、すなわち、８ビット、１６ビット、又は３２ビットが指定される。なお、コマンド信号は各々、読み取り動作か書き込み動作かいずれかのイネーブルデータを定義するものである。
【００２２】
さらに図３において、チップセレクト信号（ＣＳ＃）がローで有効になると、バスサイクルが始まる。ＣＳ＃が有効になった後、一つ以上の読み取りイネーブル信号（ＲＤｎ＃）が有効になるとリードサイクルが指定される。もしくは、ＣＳ＃が有効になった後、一つ以上の書き込みイネーブル信号（ＷＥｎ＃）が有効になるとライトサイクルが設定される。さらに、３２ビットデータバスのどのバイトが有効データを保有しているかをＲＤｎ＃及びＷＥｎ＃の構成によって指定することができる。すなわち、リードサイクル又はライトサイクルを、８ビット、１６ビット、又は３２ビットのリードサイクル又はライトサイクルとしてさらに指定することができる。なお、８ビット、１６ビット、３２ビットのリード／ライトに対応できるようにすることで、液晶ディスプレイ（ＬＣＤ）コントローラなどディスプレイコントローラのバスインタフェースは、８ビット又は１６ビットの読み取りに対応できるインタフェースを必要とするＣＰＵとも通信できる。従って、ディスプレイコントローラのバスインタフェースは種々のマイクロプロセッサとインタフェースをとることができる。
【００２３】
図３に話を戻すと、ＣＳ＃はロー・アクティブであることがわかる。リードサイクルでは、ＷＥ＃（ＷＥ＃０〜ＷＥ＃３）が全てハイに駆動され、リードサイクルであること、つまり、ＬＣＤコントローラがＣＰＵにデータを供給するサイクルであることを示している。一方ライトサイクルでは、ＲＤ＃（ＲＤ＃０〜ＲＤ＃３）が全てハイに駆動され、ライトサイクルであること、つまりＣＰＵがデータをＬＣＤコントローラ宛てに送るサイクルであることを示している。読み取り時にＷＥ＃が全てハイになると、ＲＤ＃信号の構成からデータバス上の有効データの位置がわかる。例えば、コマンド信号の構成を明確にするために、行１２１に定義された上位偶数８ビット読み出しのコマンド信号符号化についてさらに詳しく説明する。ここでは、ＣＳ＃がロー（有効）で、ＣＰＵがＬＣＤコントローラを選択していることがわかる。ＷＥ＃０〜ＷＥ＃３は全てハイで、リードサイクルであることがわかる。ＲＤ＃３、ＥＤ＃１、ＲＤ＃０はハイになっているが、ＲＤ＃２はローである。この組合せは、有効な情報がデータバスのビット１５〜２３に保有されていることを示している。従って、行１２１のコマンド信号は、上位偶数８ビットのリードバスサイクルを定義している。なお、一つのコマンド信号集合は、その処理が読み取り動作か又は書き込み動作かを定義すると共に、ディスプレイコントローラとＣＰＵが通信するのに用いられるデータバス上の有効データの位置も定義している。すなわち、読み取りか書き込みという一つのコマンド信号に、８ビットのセグメントが使用されている。
【００２４】
さらに、図３のコマンド信号は各々、読み取り動作又は書き込み動作のイネーブルデータも定義している。従って、ＷＥ＃０〜ＷＥ＃３は書き込み動作のイネーブルデータを定義し、ＲＤ＃０〜ＲＤ＃３は読み取り動作のイネーブルデータを定義している。従って、このバスインタフェースは、種々様々なＣＰＵに対応できるように、コマンドに基づいて読み書きの実行を修正することができる。すなわち、このバスインタフェースは、３２ビット読み取り動作に限定されることなく、８ビット、１６ビット、３２ビットの読み出しを必要とするＣＰＵインタフェースとそれぞれ通信する能力を有する。なお、図３に示した論理ハイ及びローの値を逆にしてコマンド信号集合を定義しても構わない。
【００２５】
図４は、本発明の一実施例に基づく、現在のバスサイクルがリードサイクルかライトサイクルかを判定すると共に、バス上の有効データの位置を判定するコマンド信号と関連づけられる汎用バスインタフェースのタイミング図である。バスクロック周期（ＴＣＬＫ）はクロックバス（ＣＬＫ）に対するシステム速度を示している。例えば、ＬＣＤコントローラは、Ａ［２０：０］で表わされるように２１ビットのアドレス空間を有している。そして、ＬＣＤコントローラ内のメモリ量はアドレス空間によって決まる。当業者であれば、ＬＣＤコントローラのアドレス空間量が様々であることが明らかであろう。一実施例にとして、ＬＣＤコントローラは約２メガバイト（ＭＢ）のメモリを有する。すなわち、２１ビットのアドレス空間が約２ＭＢのメモリにマップされる。ＬＣＤコントローラ内部のメモリはアドレス線Ａ［２０：０］によってアドレス指定される。当業者であれば、ＬＣＤコントローラは、ＬＣＤコントローラを有するシステムに適した任意のメモリ量を保有できるのであって、２ＭＢのメモリに限定されるものではないことが分かるだろう。メモリ／レジスタ信号（Ｍ／Ｒ＃）は、ＬＣＤコントローラのメモリ（Ｍ）又はレジスタ（Ｒ）の選択を行なう信号である。例えば、Ｍ／Ｒ＃端子から２ＭＢメモリが追加される。先に述べたように、メモリコアは表示される画像を保有するのに対し、レジスタはデータが表示される表示画面を構成するデータ、つまり構成データを含んでいる。当業者であれば、図４において説明したバスインタフェースは、ＣＰＵ及びＬＣＤコントローラが共通のクロックを共用している同期バスインタフェースであることが明らかであろう。
【００２６】
図２において、ＣＰＵ１０８は、ＬＣＤコントローラ１１６をＣＰＵのメモリ１１０にマップするレジスタを備えている。従って、ＣＰＵメモリ１１０がアドレス指定されると、ＣＰＵ１０８はＣＳ＃信号をロー（有効）としてＬＣＤコントローラ１１６が選択されていることをＬＣＤコントローラに知らせる。言うまでもなく、ＬＣＤコントローラが選択されていることを示すのに、ＣＳ＃をローで有効としてもハイで有効としても構わない。図４では、クロックの立上りエッジで信号がサンプリングされているが、当業者であれば、クロックの立下りエッジでサンプリングすることもできることは明らかであろう。クロックの立上りエッジで信号をサンプリングする場合、パラメータｔ２は、バスクロックがＣＳ＃がローになるのを確認するためのセットアップ時間を示す。コマンド信号ＷＥ＃０、ＷＥ１＃、ＷＥ２＃、ＷＥ３＃、ＲＤ０＃、ＲＤ１＃、ＲＤ２＃、ＲＤ３＃の構成は、アクセスタイプ、つまり、読み取り動作か書き込み動作かを示している。例えば、図３において、ＲＤ３＃が０（ロー）で、残りの読み取り及び書き込み信号が１（ハイ）のコマンド信号は、アクセスタイプが上位奇数８ビットの読み取りであることを示している。従って、コマンド信号で定義された有効データを有しているのはバスのデータビット３１〜２４だから、これらのビットが選択される。従って、ＣＰＵは、読み取り動作時に、データバスのビット３１〜２４をサンプリングする。
【００２７】
図４のパラメータｔ１は、ＣＳ＃がローになることを確認すると共にＷＥ＃又はＲＤ＃の構成により読み取り動作又は書き込み動作が発生するかどうかを判定するためのＬＣＤチップのセットアップ時間を表わしている。当業者であれば、セットアップ時間によって確実にＣＳ＃が好ましい状態でサンプリングされるようになることが明らかであろう。セットアップ時間ｔ３が、ディスプレイコントローラがリードコマンド信号及びライトコマンド信号をサンプリングする前に、リードコマンド信号及びライトコマンド信号の時間枠（ｗｉｎｄｏｗ）が有効となるようにする。例として、図３の行１２３に明記した、下位偶数８ビットの読み取り動作を定義するように構成されたコマンド信号に基づく読み取り動作を図４のタイミング図でさらに説明する。当業者であれば、本明細書で言及しているセットアップ時間及びホールド時間は、ハイ又はローの信号がサンプリングされた時点からそのハイ又はローの信号に基づいて次の動作が発生するまでの伝播遅延に対応できることが明らかであろう。
【００２８】
図４に話を戻すと、ＣＳ＃がローになると、矢印１２６で示すように、待ち信号（ＷＡＩＴ＃）がタイミングパラメータｔ４内でローに駆動される。ＷＡＩＴ＃は、ＬＣＤコントローラなどのディスプレイコントローラからＣＰＵに出力され、ＬＣＤコントローラがデータを供給する準備ができるまでＣＰＵに待つよう要求する。当業者であれば、読み取り動作では、ＬＣＤコントローラがＣＰＵにデータを供給することが分かるだろう。ＷＡＩＴ＃がローの間は、ＣＰＵは、ＬＣＤコントローラがデータの供給準備ができるまでサイクルを延長する。従って、ＣＰＵはＷＡＩＴ＃のサンプリングを続行し、ＷＡＩＴ＃がハイになるまでサイクルを延長し続ける。矢印１２８で示すように、有効データがバスに乗せられたらＷＡＩＴ＃がハイになる。バスクロックの立上りエッジで、ＣＰＵはＷＡＩＴ＃をサンプリングしてＷＡＩＴ＃がハイになったことを確認するので、ＣＰＵはコマンド信号で指定された下位偶数８ビット読み取りのビット０〜７に保有されているデータを読み出すことができる。リードサイクルのタイミングパラメータｔ１３の間に、有効データがＣＰＵに供給される。先に説明したように、クロックサイクルの立上りエッジではなく、立下りエッジでサンプリングするようにＣＰＵ又はＬＣＤコントローラを構成することもできる。
【００２９】
引き続き図４において、リードサイクルのタイミングパラメータｔ５は、ＬＣＤコントローラがデータバスを駆動する時間周期を定義している。黒い包絡線１２２は、ＬＣＤコントローラがデータバスを駆動中であり、そのためにバスが別のコントローラによって使用できないことを示している。図４の黒い包絡線は使用可能な有効データがないことを表わす一方、白い包絡線は有効データが使用可能であることを表わしている。従って、有効な読み取りデータは白い包絡線１２４内の或る時点で使用可能になる。タイミングパラメータｔ１６は、ＣＰＵがデータを読み取れるように、ＷＡＩＴ＃がハイになるためのセットアップ時間となる。従って、ＷＡＩＴ＃がハイの時バスクロックの立上りエッジが発生するので、タイミングパラメータｔ１３の間にデータが転送される、つまり、ＣＰＵがデータをラッチする。なお、タイミングパラメータｔ１１内に、ＷＡＩＴ＃は高インピーダンス状態に駆動され、他のデバイスが使用できるようにバスの制御がＬＣＤコントローラによって放棄される。
【００３０】
図４において、書き込み動作では、ＣＰＵがバスでデータをＬＣＤコントローラに送る。ＣＳ＃は、先に述べたようにローに駆動され、ＬＣＤコントローラによってサンプリングされる。セットアップ時間ｔ３により、ＬＣＤコントローラが読み書きコマンド信号をサンプリングする前に、読み書きコマンド信号の時間枠が有効となる。読み書きコマンド信号の構成はアクセスタイプを示すことになる。例として、例示的な書き込み動作を説明するために図３の３２ビット書き込みを採用する。すなわち、コマンド信号ＷＥ０＃、ＷＥ１＃、ＷＥ２＃、ＷＥ３＃は全てロー（値０）で、ＲＤ０＃、ＲＤ１＃、ＲＤ２＃、ＲＤ３＃は全てハイ（値１）である。従って、データバスに乗っている全３２ビットが有効である。読み取り及び書き込みコマンド信号がサンプリングされるのと同時に、アドレスがサンプリングされ、そのデータがＬＣＤのメモリコアのどこにアドレス指定されるのか判定する。書き込み動作の場合、ＣＰＵは読み取りイネーブル信号をハイにする。先に述べたように、３２ビットの書き込みでは、４つのライトイネーブル信号（ＷＥ０＃〜ＷＥ３＃）が全てローに駆動され、データバスに乗っている全３２ビットが有効であることを示す。有効データが使用可能になるまでバスサイクルを延長するためにＷＡＩＴ＃はローに駆動される。タイミングパラメータｔ６は、ＣＰＵがデータをデータバスに乗せなければならないセットアップ周期を定義している。ＬＣＤコントローラがデータを受け取る準備ができるまで、ＷＡＩＴ＃はローに保持され、データの受け取り準備ができた時点でＷＡＩＴ＃はハイに駆動される。ＷＡＩＴ＃がハイになると、データがＬＣＤコントローラによってサンプリングされ、ラッチされる。
【００３１】
引き続き図４において、タイミングパラメータｔ１２はホールド時間である。先に述べたように、信号のサンプリング及びサンプリングの結果として生じる動作の間にいくらかの伝播遅延がある。従って、ｔ１２は、ＬＣＤコントローラがデータ、つまり、ＷＡＩＴ＃を受け取る準備ができた後データが保持される時間周期を定義するホールド時間である。ＷＡＩＴ＃をハイに駆動するということはデータが書き込まれたことを意味する。読み取り動作と同様に、ＷＡＩＴ＃が一旦無効（ハイに駆動）となると、ＣＰＵは、線１３０で示した通り読み取り又は書き込みのストローブを無効としてそのサイクルを終える。さらに、ＣＰＵは、線１３２で示した通りＣＳ＃をハイに駆動することによってＣＳ＃の有効を解除する。タイミングパラメータｔ９は、ＷＡＩＴ＃の有効解除とリードサイクル又はライトサイクルの有効解除との間の時間周期を表わしている。
【００３２】
図５は、図４と関連づけられるタイミングパラメータをリストにした表である。タイミングパラメータｔ１〜ｔ６、ｔ９、ｔ１１〜ｔ１３、ｔ１６については、既に図４で説明した通りである。タイミングパラメータｔ７は、ＣＰＵがコマンド信号を有効解除した後、現サイクルをアクティブに、つまり、ＣＳ＃をローに保っておかなければならない時間周期を表わしている。パラメータｔ７の最小時間はゼロナノ秒（ｎｓ）であるが、当業者であれが、ほとんどのＣＰＵが、コマンド信号が有効解除された後１乃至２クロック経たないと、ＣＳ＃を有効解除しないことが分かるだろう。従って、ＬＣＤコントローラは、コマンド信号が有効解除されてからＣＳ＃を有効解除する能力を有するだけでなく、ＣＰＵからのコマンド信号及びＣＳ＃をコンカレントに有効解除する能力も有する。タイミングパラメータｔ８は、ＣＳ＃が有効解除（ハイに保持）される時間周期を表わしている。時間周期ｔ８の終わりに、ＣＳ＃信号が再び有効となり、それにより次の読み取り又は書き込み動作で選択されたことをＬＣＤコントローラに知らせる。タイミングパラメータｔ１０は、コマンド信号が有効解除されてから次の読み取り又は書き込み動作のコマンド信号が再び有効となる時点までの時間周期を示している。時間周期ｔ１４は、読み取り又は書き込み動作のサイクルの長さを表わす。時間周期ｔ１５は、バスクロックの立上りエッジと、ハイに駆動されているＷＡＩＴ＃との間の時間周期を示している。なお、タイミングパラメータは模式的なタイミング周期であり、各タイミングパラメータと関連づけられる実際のタイミング周期はオペレーションを各々達成できるのに適した任意の時間周期で構わない。
【００３３】
図６は、本発明の一実施例に基づく、現在のバスサイクルが読み取り動作か書き込み動作かを判定すると共に、バス上の有効データの位置を判定するために、２つの制御信号集合を活用するコマンド信号の符号化を説明した表である。図６のコマンド信号は全てローがアクティブである。ＬＣＤコントローラが選択されたことを知らせるためにチップセレクト信号（ＣＳ＃）がローに駆動される。読み取り制御信号（ＭＥＭＲ＃）が有効であるということはリードサイクルであることを示し、書き込み制御信号（ＭＥＭＷ＃）が有効であるということはライトサイクルであることを示す。なお、ＭＥＭＲ＃及びＭＥＭＷ＃は、データバスのどの部分に有効データが入っているかということの判定には何も影響しない。すなわち、ＭＥＭＲ＃及びＭＥＭＷ＃には、読み取り動作又は書き込み動作と関連づけられるデータに対応するイネーブルデータは含まれていない。３２ビットデータバスのどのバイトに有効データが入っているかを指定するために４つのバイトイネーブル信号（ＢＥ＃）を用いる。従って、８ビット、１６ビット、３２ビットの一回のリードバスサイクル或いはライトバスサイクルを、ＢＥ０＃〜ＢＥ３＃のいろいろな組合せで指定することができる。
【００３４】
図７は、本発明の一実施例に基づく、バスサイクルを定義するために図６で説明した個別の制御信号及びイネーブル信号を用いる汎用バスインタフェースのタイミング図である。バスインタフェースは２１ビットのアドレス空間でアドレス指定可能な３２ビットのデータ幅をサポートしている。先に述べたように、ここでは一例として２１ビットのアドレス空間を表示しているのであって、バスインタフェースは２１ビットのアドレス空間に限定されるものではない。当業者であれば、本明細書で説明しているバスインタフェースは、上限３２ビットのアドレス空間を有することができることが分かるだろう。バスインタフェースは、リトルエンディアン並びにビッグエンディアンモードをサポートしている。チップセレクト信号（ＣＳ＃）がロー（有効）となった後ＭＥＭＲ＃又はＭＥＭＷ＃が有効になると、バスサイクルがスタートする。一旦ＣＳ＃が認識されると、ＣＳ＃の受け取りを通知するために出力信号（ＩＯＣＨＲＤＹ＃）が有効となる。当業者であれば、ＩＯＣＨＲＤＹ＃は図４及び図５におけるＷＡＩＴ＃と同じ機能を実行することが分かるだろう。
【００３５】
図７に戻ると、リードサイクルの有効データをバスに乗せる準備ができるまで、あるいはライトサイクルのデータをうまく受け取り終える時まで、ＩＯＣＨＲＤＹ＃は有効である。図６において、ＭＥＭＲ＃〜ＭＥＭＷ＃と共に、バイトセレクト信号ＢＥ０＃〜ＢＥ３＃の構成によって、データバスビットが駆動されている（つまり、読み取り動作）か、あるいはサンプリングされている（つまり、書き込み動作）かが決まる。ＩＯＣＨＲＤＹ＃が有効解除されたことをＣＰＵのクロックが確認したら、そのバスサイクルを終了するためにＣＳ＃及びコマンド信号（ＢＥ０＃〜ＢＥ３＃及びＭＥＭＲ＃〜ＭＥＭＷ＃）は有効解除される。開始条件（ＣＳ＃がロー）を認識したら、バスサイクルに使用されたアドレスが一度サンプリングされる。バイトイネーブル信号によって下位アドレスビットが決まるから、一実施例では２１ビットのアドレス空間のアドレスビットＡ０とＡ１をバスインタフェースに使用しない。なお、当業者であれば、図６及び図７において説明したバスインタフェースは、図３〜図５において説明したバスインタフェースほどいろいろなＣＰＵと幅広くインタフェースをとる能力を有していないことが明らかであろう。図３〜図５と関連づけられるコマンド信号集合によって、バスインタフェースが広範囲なＣＰＵと通信できるようになる。但し、上に述べた両インタフェースのコマンド信号によって、コマンドに基づく修正可能な読み取りが可能になる。すなわち、３２ビットバスの場合、８ビット、１６ビット、３２ビットの読み取りを実行することができる。
【００３６】
図８は、図７と関連づけられるバスインタフェースのタイミングパラメータを表わす表である。図８のタイミングパラメータは図５のタイミングパラメータと相関している。言うまでもなく、図５と関連づけられるコマンド信号と、図７と関連づけられるコマンド信号とは別のものである。すなわち、図５と関連づけられるコマンド信号集合は、読み取り動作か或いは書き込み動作かを示すと共にバス上の有効データの位置を示す構成になっている。さらに、図５のコマンド信号は各々、図３において説明したように読み取り又は書き込みイネーブルデータをコンカレントに定義する構成になっている。それに対して、図８と関連づけられるコマンド信号は、バスサイクルが読み取り動作かあるいは書き込み動作かを定義すると共にバス上の有効データの位置を定義する信号集合を別途含んでいる。
【００３７】
図９は、本発明の一実施例に基づく、現在のバスサイクルがリードサイクルかライトサイクルかを判定すると共にバス上の有効データの位置を判定する非同期汎用バスインタフェースのコマンド信号符号化を説明した表である。図９のコマンド信号は全てローでアクティブである。ＬＣＤコントローラが選択されたことを示すために、チップセレクト信号（ＣＳ＃）がローに駆動される。リードサイクルを実行しようとしているか、ライトサイクルを実行しようとしているかを示すために読み書き制御信号（Ｒ／Ｗ＃）が用いられる。Ｒ／Ｗ＃をハイに駆動するとリードサイクルが実行されることを示し、Ｒ／Ｗ＃をローに駆動するとライトサイクルが実行されることを示す。なお、Ｒ／Ｗ＃は、データバスのどの部分に有効データが入っているかということの判定には関係がない。すなわち、Ｒ／Ｗ＃には、読み取り動作又は書き込み動作と関連づけられるデータに対応するイネーブルデータが入っていない。３２ビットデータバスのどのバイトに有効データが入っているかを指定するのに４つのバイトセレクト信号（ＢｙｔｅＳｅｌｎ＃）が用いられる。従って、８ビット、１６ビット、又は３２ビットの一回のリードバスサイクルあるいはライトバスサイクルを、示したように、ＢｙｔｅＳｅｌ０＃〜ＢｙｔｅＳｅｌ３＃のいろいろな組合せで指定することができる。
【００３８】
図１０は、本発明の一実施例に基づく、ディスプレイコントローラ及びディスプレイコントローラと通信しているＣＰＵとの間でクロック速度にどんな差があってもサポートするように構成されたディスプレイコントローラの非同期汎用バスインタフェースのタイミング図である。要求とも呼ばれるＣＳ＃をバスマスタ、つまり、ＣＰＵがロー（有効）となることでバスサイクルが始まる。この開始条件が認識された後、ＷＡＩＴ＃を有効にする（肯定応答と呼ばれる）ことによって、バススレーブ、つまり、ＬＣＤコントローラが要求を受け取ったことを通知する。リードサイクルの有効データをバスに乗せる準備ができるまで、又はライトサイクルのデータをうまく受け取り終える時まで、ＷＡＩＴ＃は有効となっている。言うまでもなく、Ｒ／Ｗ＃によってアクセスが読み取り動作か或いは書き込み動作かが決まるのに対し、ＢｙｔｅＳｅｌ０＃〜ＢｙｔｅＳｅｌ３＃の構成はどのデータバスビットが駆動されるかあるいはサンプリングされるかを定義している。バスマスタは、ＷＡＩＴ＃が有効解除されたことを確認した後、ＣＳ＃及びコマンド信号を有効解除する。一旦開始条件を認識した後、バスサイクルに用いたアドレスが一回サンプリングされる。なお、バイトセレクト信号によって下位アドレスビットが決まるから、一実施例ではバスインタフェースにアドレスビットＡ０とＡ１は使用していない。
【００３９】
図１０に戻って、模式的な読み取り動作について説明する。バスクロック（ＢＣＬＫ）はバスマスタ、つまり、ＣＰＵを制御するクロックであるのに対し、ＬＣＤ　ＢＣＬＫはバススレーブ、つまり、ＬＣＤコントローラなどディスプレイコントローラを制御するクロックである。例として、ＬＣＤコントローラにはＡ［２０：０］で表わされる２１ビットのアドレス空間があり、それによってＬＣＤコントローラ内部のメモリ量が決まる。先に述べたように、アドレス空間の量は可変だから、ＬＣＤコントローラは２１ビットのアドレス空間に限定されるものではない。一実施例において、ＬＣＤコントローラは約２メガバイト（ＭＢ）のメモリを有する。すなわち、２１ビットのアドレス空間は約２メガバイトのメモリにマップされる。ＬＣＤコントローラ内のメモリはアドレス線Ａ［２０：０］でアドレス指定される。当業者であれば、ＬＣＤコントローラはそのＬＣＤコントローラを含むシステムに適した任意のメモリ量を保有していて構わず、２ＭＢメモリに限定されるものでないことは明らかであろう。メモリ／レジスタ信号（Ｍ／Ｒ＃）は、ＬＣＤコントローラのメモリ（Ｍ）又はレジスタ（Ｒ）の選択を行なう信号である。一実施例では、さらに２ＭＢメモリがＭ／Ｒ＃ピンから追加される。先に述べたように、メモリコアは表示される画像データを保有しているが、レジスタには構成データが入っている。なお、ＬＣＤコントローラからバスインタフェースに送られる信号のタイミングはＬＣＤクロックによって制御されているので、非同期バスインタフェースは真に非同期である。すなわち、ＬＣＤコントローラからバスインタフェースに送られる信号はＣＰＵクロックに依存していない。従って、ＬＣＤコントローラからの信号は単一のＣＰＵクロック又は振動子のスレーブにならないので、真の非同期バスインタフェースを定義している。
【００４０】
ＣＰＵは、ＣＳ＃をロー（有効）とすることでＬＣＤコントローラに対してサイクルを要求する。ＬＣＤコントローラは、その要求に、肯定応答信号、つまり、ＷＡＩＴ＃で応答する。なお、要求信号及び肯定応答信号は、バスサイクルを開始するのに使用される２つのハンドシェーキング信号である。さらに、ＣＰＵはＣＰＵクロックに基づいて要求を発するのに対し、ＬＣＤコントローラはＬＣＤコントローラのクロック速度で要求をサンプリングする。すなわち、ＬＣＤコントローラは、ＢＣＬＫとは無関係のＬＣＤ　ＢＣＬＫの立上りエッジで要求をサンプリングする。言うまでもなく、ＬＣＤコントローラはＬＣＤ　ＢＣＬＫの立下りエッジでサンプリングすることもできる。タイミングパラメータｔ３は、ＬＣＤコントローラが、ＣＳ＃をローにサンプリングするのと、サンプル要求が出されていることをＣＰＵに通知するためにＷＡＩＴ＃を有効にする間の時間周期を表わしている。肯定応答信号によってＬＣＤコントローラのバスサイクルが始まる。なお、当業者であれば、ｔ３はＣＰＵ及びＬＣＤコントローラの速度いかんにより可変であることは明らかであろう。次に、ＣＰＵは、読み取り動作かあるいは書き込み動作かを示すＲ／Ｗ＃と、データバス上の有効データの位置を示すＢｙｔｅＳｅｌ０＃〜ＢｙｔｅＳｅｌ３＃とによって応答する。
【００４１】
リードサイクルの場合、図１０において、タイミングパラメータｔ５は、ＬＣＤコントローラがデータバスを駆動する時間周期を表わしている。黒い包絡線１４０は、ＬＣＤコントローラがデータバスを駆動中だから、他のコントローラはそのバスを使用できないことを示している。図１０の黒い包絡線は使用可能な有効データがないことを示しているのに対し、白い包絡線は有効データが使用可能であることを表わしている。従って、有効な読み取りデータは白い包絡線１４２内のある時点で使用可能になる。タイミングパラメータｔ８及びｔ９は、図４のタイミングパラメータｔ１６及びｔ１３と同様に、セットアップ時間及びホールド時間をそれぞれ表わす。ＷＡＩＴ＃が有効解除されると、つまり、ＷＡＩＴ＃がハイになると、ＬＣＤコントローラの内部サイクルの終わりが発生する。ＷＡＩＴ＃の有効解除は、ＬＣＤ　ＢＣＬＫに基づいてＬＣＤコントローラによって実行される。その後、ＣＰＵは、ＢＣＬＫの立上りエッジでＷＡＩＴ＃をサンプリングするとＷＡＩＴ＃がハイになるのを確認した後、ＣＳ＃を有効解除することでＬＣＤコントローラに通知する。従って、バスサイクルはＣＰＵ側から完了した。ここで、サイクルを終了させるために、サイクルを開始するハンドシェーキング手順と同じようなハンドシェーキング手順が発生する。異なるのは、ＬＣＤコントローラがＷＡＩＴ＃をハイにすることで要求を発し、ＣＰＵはＣＳ＃をハイすることでその要求の受信を通知する点である。なお、タイミングパラメータｔ９は、サンプリングのためにＣＰＵがデータを確実に使用できるようにするために、ＣＳ＃がハイになった後のホールド時間を定義している。矢印１４４は、ＬＣＤコントローラがＷＡＩＴ＃をハイに駆動し、ＷＡＩＴ＃がハイであることをＣＰＵが認識し、今度はＣＰＵがＣＳ＃をハイに駆動することを示している。なお、ＷＡＩＴ＃はＬＣＤコントローラのクロックに基づいて駆動されており、ＣＰＵのクロックとは同期をとっていないので、バスインタフェースは任意のクロック速度で、つまり、ＣＰＵのクロックの速度とは無関係の速度で走行することができる。ＬＣＤコントローラは、一旦ＣＳ＃がハイになることを確認すると、矢印１４６で示すように、ＷＡＩＴ＃を高インピーダンス状態に駆動することでバスを開放する。
【００４２】
引き続き図１０において、書き込み動作は読み取り動作と類似したハンドシェーキング方式に従って行なわれる。タイミングパラメータｔ４は、ＣＰＵがデータをデータバスに乗せなければならないセットアップ周期を定義しているのに対し、タイミングパラメータｔ７は、ＬＣＤコントローラがデータを受け取る準備ができた後、つまり、ＷＡＩＴ＃がハイになった後、データが保持される時間周期を定義するホールド時間である。なお、タイミングパラメータｔ４及びｔ７は、図４のタイミングパラメータｔ７及びｔ１２と類似している。準安定性状態発生の可能性を最小限にするために、ＬＣＤコントローラにおいては、Ｍ／Ｒ＃及び図９のコマンド信号、つまり、ＣＳ＃、Ｒ／Ｗ＃、ＢｙｔｅＳｅｌｎ＃など、コマンド信号を受け取る回路の中に、２つのフリップフロップが直列で設けられている。従って、直列のフリップフロップにより、コマンド信号のダブルサンプリングが可能になる。すなわち、準安定状態が発生するのを最小限に抑えるために、コマンド信号は直列接続された少なくとも２つのフリップフロップを介して処理される。
【００４３】
図１１は、図１０に示した非同期バスインタフェースのタイミングパラメータを表わす表である。タイミングパラメータｔ３〜ｔ５及びｔ７〜ｔ９については、既に図１０で説明した。タイミングパラメータｔ１はセットアップ時間を定義している。従って、タイミングパラメータｔ１により、ＣＳ＃がローになる時間周期が可能になる。タイミングパラメータｔ２は、ＣＳ＃がローになるのをＬＣＤ　ＢＣＬＫが確認するためのセットアップ時間を示している。パラメータｔ６は、ＣＰＵがコマンド信号を有効解除した後、現在のサイクルをアクティブに、つまり、ＣＳ＃をローに保つのに要する時間周期を示している。パラメータの最小時間はゼロナノ秒（ｎｓ）だが、当業者であれば、ほとんどのＣＰＵが、コマンド信号が有効解除された後１乃至２クロック経たないと、ＣＳ＃を有効解除しないことが分かるだろう。
【００４４】
図１２は、本発明の一実施例に基づく、準安定状態の発生を最小限にするように構成されたフリップフロップチェーン冗長回路の概略図である。フリップフロップ１５０は、フリップフロップ１５２との直列の配列になっている。クロック１５４はディスプレイコントローラクロックで、フリップフロップ１５０及び１５２はディスプレイコントローラのバスインタフェースの回路内に収容されている。信号１５６はフリップフロップ１５０のＤ入力である。フリップフロップ１５０のＤ入力にあるデータは、フリップフロップ１５０のＱ出力に送られる。フリップフロップ１５０のＱ出力は次に、フリップフロップ１５２のＤ入力となる。フリップフロップ１５２のＤ入力は、フリップフロップ１５２のＱ出力に送られ、そこで出力信号１５８として出力される。従って、もし入力信号１５６がセットアップ時間の間に変化した場合には、準安定状態が発生する可能性がある。例えば、非同期バスインタフェースに関して言えば、バスクロックとディスプレイコントローラクロックの立上りエッジがほぼ同時に発生し、その結果、２つの無限勾配になり、準安定状態が起きる。当業者であれば、準安定状態が発生してフリップフロップ１５０からの出力が浮動すると、つまり、０でも１でもなくなると、フリップフロップ１５２内の回路は、フリップフロップ１５０からの出力が浮動するレベルいかんによって０か又は１を出力する構成になっていることが分かるだろう。なお、図１２には２つのフリップフロップを示したが、任意の数のフリップフロップを直列配列で採用することができる。一実施例では、フリップフロップチェーン冗長回路は、コマンド信号を処理するが、読み取り及び書き込みデータは処理しない構成になっている。
【００４５】
図１３は、本発明の一実施例に基づく、第１のクロック速度で動作しているディスプレイコントローラと、第２のクロック速度で動作しているマイクロプロセッサとの間の通信方法のオペレーションを説明しているフローチャートである。このフローチャートは、マイクロプロセッサから要求を受け取るオペレーション１７０から始まる。マイクロプロセッサがＣＳ＃をローに駆動することで要求が達成され、それによりマイクロプロセッサのバスサイクルがスタートする。先に述べたように、ＣＳ＃がローに駆動されているということは、ディスプレイコントローラを選択中であることを示す。要求を発するはマイクロプロセッサだから、要求はマイクロプロセッサのクロック速度で生成される。この方法は次に、オペレーション１７２に進み、そこでディスプレイコントローラのクロックに基づいて要求のサンプリングが行なわれる。ここで、ＬＣＤコントローラなど、ディスプレイコントローラは、図１０で既に説明したように、要求をサンプリングする。なお、マイクロプロセッサのクロックとディスプレイコントローラのクロックとは、そのクロック速度にどれだけ違いがあっても動作することができる。一例として、ＣＰＵ及びマイクロプロセッサは、ハンドヘルドコンピューティング機器の組み込みシステムの一部をなしている。
【００４６】
図１３の方法は次にオペレーション１７４に進み、そこでディスプレイコントローラの内部サイクルを開始するためにマイクロプロセッサからの要求に対する肯定応答が行なわれる。例えば、ディスプレイコントローラの内部サイクルの始まりは、図１０のタイミング図でＷＡＩＴ＃がローになる領域によって示されている。肯定応答を送るのはディスプレイコントローラだから、肯定応答はディスプレイコントローラのクロックに基づいて生成される。従って、バスインタフェースは、ＣＰＵのバス速度とは無関係に、任意のクロック速度で走行することができる。
【００４７】
引き続き図１３において、この方法はオペレーション１７６に進み、そこで読み取り又は書き込み動作と関連づけられるデータが供給される。データは、読み取り動作ではマイクロプロセッサに供給されるが、書き込み動作ではディスプレイコントローラに供給される。読み取り動作又は書き込み動作のタイミングパラメータについては、図１０で既に説明した通りである。この方法は次にオペレーション１７８に進み、そこでディスプレイコントローラが内部サイクルを終了する要求を発する。一例としては、図１０で説明したように、ＷＡＩＴ＃をハイにすることで要求が実行される。言うまでもなく、要求はディスプレイコントローラのクロック速度で発せられる。この方法は次にオペレーション１８０に進み、そこでディスプレイコントローラがマイクロプロセッサからの肯定応答を受け取る。マイクロプロセッサは、マイクロプロセッサのクロック速度でオペレーション１８０からの要求をサンプリングし、それに応答して、図１０で説明されているように、ＣＳ＃をハイに駆動する（肯定応答）。次に、ディスプレイコントローラが、ディスプレイコントローラのクロック速度でＣＳ＃をハイにサンプリングする（肯定応答）。ＣＳ＃がハイに駆動された結果、マイクロプロセッサはマイクロプロセッサのバスサイクルを終了する。
【００４８】
【発明の効果】
上記の実施例を考慮すれば、本発明は、コンピュータシステムに保持されたデータを必要とする、コンピュータで実現される（ｃｏｍｐｕｔｅｒ−ｉｍｐｌｅｍｅｎｔｅｄ）様々なオペレーションを採用できることが分かる。こうしたオペレーションは、物理的数量の物理的操作を要するオペレーションである。必ずしもそうとは限らないが、こうした数量は、保持、転送、結合、比較、さもなければ操作が可能な電気信号又は磁気信号の形になっているのが普通である。さらに、実行される操作は、生じる、識別する、判定する、或いは比較する、と言った表現で呼ばれることが多い。
【００４９】
本明細書で説明した本発明を構成するオペレーションはいずれも役に立つ機械操作である。本発明は、こうした操作を実行するための機器にも関する。機器は、要求される目的のために特別に構築することができるし、あるいは、中に保持しているコンピュータプログラムによって選択的に起動又は構成される汎用コンピュータでもいい。具体的に言えば、本明細書で教示するところに基づいて書かれたコンピュータプログラムと共にいろいろな汎用の機械を使用することができるし、あるいは、要求されるオペレーションを実行するためにもっと専用化された機器を構築するほうが一層便利かもしれない。
【００５０】
上に説明した発明は、ハンドヘルド機器、マイクロプロセッサシステム、マイクロプロセッサベースの又はプログラミング可能な消費者向けエレクトロニクス、マイクロコンピュータ、メインフレームコンピュータなど、他のコンピュータシステム構成を用いて実施しても構わない。発明をはっきり理解できるようにある程度詳細に説明してきたが、上記の説明から、添付した特許請求の範囲内において或る程度の変更や修正が可能なことは明らかであろう。従って、本願の実施例は説明のためであり、制限するためのものではないと捉えられるべきである。また、本発明は、本明細書で説明した詳細に限定されるものではなく、添付の特許請求の範囲内並びに等価発明の範囲内において修正変更することができる。
【図面の簡単な説明】
【図１】従来のディスプレイコントローラと通信するＣＰＵを含んだ埋め込みシステムの概略図。
【図２】本発明のＣＰＵと通信する汎用バスインタフェースを有するＬＣＤコントローラのハイレベルの概略図。
【図３】現在のバスサイクルを判定すると共にバス上の有効データの位置を判定するコマンド信号の説明する表。
【図４】汎用バスインタフェースのタイミング図。
【図５】図４のバスインタフェースタイミングパラメータ表。
【図６】現在のバスサイクルを判定すると共にバス上の有効データの位置を判定する２集合の制御信号を用いるコマンド信号符号化を説明する表。
【図７】図６の汎用バスインタフェースのタイミング図。
【図８】図７のバスインタフェースのタイミングパレメータ表。
【図９】現在のバスサイクルを判定すると共にバス上の有効データの位置を判定する非同期汎用バスインタフェースのコマンド信号符号化を説明する表。
【図１０】非同期汎用バスインタフェースのタイミング図。
【図１１】図１０のバスインタフェースタイミングパラメータを表わす表。
【図１２】フリップフロップチェーン冗長回路の概略図。
【図１３】それぞれ異なるクロック速度で動作するディスプレイコントローラとマイクロプロセッサとの間で通信する方法。
【符号の説明】
１００、１０８　ＣＰＵ
１０２、１１２　バス
１０４　バスインタフェース
１０６、１１６　ＬＣＤコントローラ
１１０　ＣＰＵメモリ
１１４　汎用バスインタフェース
１１８　メモリコア領域
１２０　レジスタ領域
１５０、１５２　フリップフロップ
１５４　クロック
１５６　信号
１５８　出力信号
【図１】
2004005683.tif 000003
【図２】
2004005683.tif 000004
【図３】
2004005683.tif 000005
【図４】
2004005683.tif 000006
【図５】
2004005683.tif 000007
【図６】
2004005683.tif 000008
【図７】
2004005683.tif 000009
【図８】
2004005683.tif 000010
【図９】
2004005683.tif 000011
【図１０】
2004005683.tif 000012
【図１１】
2004005683.tif 000013
【図１２】
2004005683.tif 000014
【図１３】
2004005683.tif 000015