(57)【要約】【課題】  同期回路と非同期回路を接続するための同期・非同期インターフェース回路及び電子機器を提案する。【解決手段】  本発明の同期・非同期インターフェース回路（２０）は同期バス（３０）と非同期ＣＰＵ（１０）の間で行われるアクセス・サイクルをイベントドリブン式に制御する有限ステートマシン（２２）と、アクセス・サイクルの開始を検出する検出回路を備える。有限ステートマシン（２２）は、非同期ＣＰＵ（１０）とのインターフェースにおいては非同期ＣＰＵ（１０）とのハンドシェイクを通じて状態遷移することによりアクセス・サイクルを制御する一方で、同期バス（３０）とのインターフェースにおいては同期バス（３０）から供給されるグローバル・クロックに同期して状態遷移を行うことによりアクセス・サイクルを制御する。【選択図】    図１１
2005151412.tif 000002
【特許請求の範囲】
【請求項１】
同期回路と非同期回路との間のインターフェース制御を行うための同期・非同期インターフェース回路であって、
前記同期回路と前記非同期回路の間で行われるアクセス・サイクルをイベントドリブン式に制御する有限ステートマシンと、
前記アクセス・サイクルの開始を検出する検出回路を備え、
前記有限ステートマシンは、前記非同期回路とのインターフェースにおいては、前記非同期回路とのハンドシェイクを通じて状態遷移することにより前記アクセス・サイクルを制御する一方で、前記同期回路とのインターフェースにおいては、前記同期回路から供給されるグローバル・クロックに同期して状態遷移を行うことにより前記アクセス・サイクルを制御する、同期・非同期インターフェース回路。
【請求項２】
請求項１に記載の同期・非同期インターフェース回路であって、
前記検出回路は、前記同期回路から供給されるグローバル・クロックを微分する微分回路と、前記微分回路から出力される前記グローバル・クロックの立ち上がりエッジ信号又は立下りエッジ信号の論理状態が変化した時点において前記アクセス・サイクルを開始する制御信号をラッチするスルー・ラッチ回路を備える、同期・非同期インターフェース回路。
【請求項３】
請求項２に記載の同期・非同期インターフェース回路であって、
前記非同期回路から前記同期回路へ出力されるアドレス信号をラッチするアドレス・ラッチ回路と、
前記非同期回路から前記同期回路へ出力されるデータ信号をラッチするデータ・ラッチ回路を更に備え、
前記アドレス・ラッチ回路にてラッチされたアドレス信号、及び前記データ・ラッチ回路にてラッチされたデータ信号の前記同期回路への出力タイミングは前記有限ステートマシンによって前記グローバル・クロックに同期したタイミングに制御される、同期・非同期インターフェース回路。
【請求項４】
請求項２又は請求項３に記載の同期・非同期インターフェース回路であって、
前記スルー・ラッチ回路はレーシングフリーに構成されている、同期・非同期インターフェース回路。
【請求項５】
請求項１乃至請求項４のうち何れか１項に記載の同期・非同期インターフェース回路を備えた電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はグローバル・クロックに同期して駆動される同期回路に非同期回路を接続するための技術に関し、特に、同期回路と非同期回路を接続するインターフェース回路及び電子機器に関する。
【背景技術】
【０００２】
同期回路設計においては、クロック周期以内に次の遷移状態に安定することが最低条件である。即ち、クリティカル・パスにおいて、順序回路のスイッチング・ディレイと組み合わせ回路のセットアップ・タイムの合計が定格電圧及び温度条件においてクロック周期よりも十分に小さくなければならない。これは、非同期回路ブロックを同期回路全体系の回路部品として組み込む場合も同様の最低条件が適用される。非同期回路ブロックの応答遅延がこの条件を満たせない場合は、非同期回路ブロックの設計をやり直すか、又はグローバル・クロックの周波数を低くする必要があった。尚、上述の背景については米国特許第５，０６３，５３６号公報においても言及されている。
【特許文献１】米国特許第５，０６３，５３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、非同期回路ブロックの再設計によって上述の最低条件を満たすことは困難な場合が多い。また、グローバル・クロックの周波数を低くすることにより上述の最低条件を満たすことは出来ても、同期回路全体系のスループットが低下するという新たな問題が生じる。
【０００４】
本発明はこのような事情に鑑みなされたものであって、同期回路全体系のスループットを低下させることなく、且つ、上述の最低条件を満たすための非同期回路ブロックの再設計を必要とせずに、非同期回路ブロックを同期回路全体系の回路部品として組み込むための同期・非同期インターフェース回路及び電子機器を提案することを課題とする。
【課題を解決するための手段】
【０００５】
上記の課題を解決するため、本発明の同期・非同期インターフェース回路は、同期回路と非同期回路との間のインターフェース制御を行うための同期・非同期インターフェース回路であって、同期回路と非同期回路の間で行われるアクセス・サイクルをイベントドリブン式に制御する有限ステートマシンと、アクセス・サイクルの開始を検出する検出回路を備える。有限ステートマシンは、非同期回路とのインターフェースにおいては、非同期回路とのハンドシェイクを通じて状態遷移することによりアクセス・サイクルを制御する一方で、同期回路とのインターフェースにおいては、同期回路から供給されるグローバル・クロックに同期して状態遷移を行うことによりアクセス・サイクルを制御する。かかる構成によれば、非同期回路は同期回路とのインターフェースにおいて同期回路として動作するため、同期回路全体系のスループットを低下させることなく、非同期回路を同期回路全体系の回路部品として組み込むことができる。
【０００６】
アクセス・サイクルの開始を検出する検出回路としては、同期回路から供給されるグローバル・クロックを微分する微分回路と、微分回路から出力されるグローバル・クロックの立ち上がりエッジ信号又は立下りエッジ信号の論理状態が変化した時点において、アクセス・サイクルを開始する制御信号をラッチするスルー・ラッチ回路を備えた構成が望ましい。アクセス・サイクルの開始タイミングはグローバル・クロックとは無関係に生じえるため、アクセス・サイクルが開始されるタイミングがグローバル・クロックの論理状態が変化するタイミングと競合した場合でも、メタ・ステーブルな状態から速やかにステーブルな状態に遷移することができる。
【０００７】
本発明の同期・非同期インターフェース回路は、非同期回路から同期回路へ出力されるアドレス信号をラッチするアドレス・ラッチ回路と、非同期回路から同期回路へ出力されるデータ信号をラッチするデータ・ラッチ回路を更に備え、アドレス・ラッチ回路にてラッチされたアドレス信号、及びデータ・ラッチ回路にてラッチされたデータ信号の同期回路への出力タイミングは有限ステートマシンによってグローバル・クロックに同期したタイミングに制御される構成とするのが望ましい。かかる構成により、非同期回路から同期回路へ出力されるアドレス信号及びデータ信号の出力タイミングをグローバル・クロックに同期させることが可能となる。
【０００８】
また、アクセス・サイクルの開始を検出する検出回路を構成するスルー・ラッチ回路としては、レーシングフリーに構成されているのが望ましい。スルー・ラッチ回路をレーシングフリーに構成することで、有限ステートマシンの状態遷移を安定化できる。
【０００９】
本発明の電子機器は上述した同期・非同期インターフェース回路を備えている。かかる構成により、同期・非同期インターフェース回路の特徴を活かした高品位な電子機器を提供できる。
【発明の効果】
【００１０】
本発明によれば、非同期回路は同期回路とのインターフェースにおいて同期回路として動作することができるため、同期回路全体系のスループットを低下させることなく、非同期回路を同期回路全体系の回路部品として組み込むことができる。
【発明を実施するための最良の形態】
【００１１】
以下、各図を参照して本発明の好適な実施形態について説明する。  
図１は本実施形態の同期・非同期インターフェース回路の全体構成図である。同期・非同期インターフェース回路２０は非同期ＣＰＵ１０と同期バス３０の間に在って両者を接続し、同期バス３０から見た場合に、非同期ＣＰＵ１０を同期ＣＰＵ４０に見せるための回路である。同期・非同期インターフェース回路２０はその挙動において二面性を有し、一方では、同期バス３０との接点においてグローバル・クロック信号（CLK信号）によって駆動される同期回路部品として動作する。同期・非同期インターフェース回路２０は、非同期ＣＰＵ１０とのハンドシェイキングによって遷移する内部ステートに関わらず、上述の最低条件を満足する。同期バス３０との接続に関わる同期・非同期インターフェース回路２０の内部ステートはグローバル・クロックに同期して遷移するが、この内部ステートを保持するスルー・ラッチ回路をレーシングフリーに構成することで、グローバル・クロックとは全く非同期な非同期ＣＰＵ１０とのハンドシェイキングのタイミングと、グローバル・クロックのタイミングが競合しても、メタ・ステーブルな状態から速やかにステーブルな状態に安定することができる。他方、非同期ＣＰＵ１０との接点においては、同期・非同期インターフェース回路２０はグローバル・クロックから開放された非同期有限ステートマシンとして動作し、非同期ＣＰＵ１０とのハンドシェイキングによって状態遷移する。
【００１２】
尚、本明細書において「同期回路」とは、システムの中央制御用のグローバル・クロックを基準に回路動作をすることを目的として設計された回路をいう。上述した同期バス３０と同期ＣＰＵ４０はそれぞれ同期回路に含まれる。一方、「非同期回路」とは、グローバル・クロックを用いないで各々の最小機能回路（プロセス）が自律的に又は他律的に局所的な協調をとりながら分散制御を行うことを目的として設計された回路をいう。非同期回路においては、最小機能回路はイベント駆動によって制御され、自律的に動作する必要があると判断した場合と、他律的に動作する必要があると判断した場合にのみ動作する。つまり、各々の最小機能回路は他の最小機能回路とは独立して並列動作が可能であり、他の最小機能回路の処理が完了するまで処理待ちする必要がない。最小機能回路は所望の処理を実行する準備が完了した段階で処理を進めることができる。上述した非同期ＣＰＵ１０は非同期回路に含まれる。
【００１３】
図２は同期ＣＰＵ４０と同期バス３０の入出力信号を示し、図３は非同期ＣＰＵ１０と同期・非同期インターフェース２０の入出力信号を示している。本明細書において「Ｘ_信号」と標記した場合、Ｘ_信号はLow Active 信号を意味する。図４は同期・非同期インターフェース回路２０が演じる同期ＣＰＵ４０のバス・サイクルを示している。図４に示すように同期ＣＰＵ４０のバス・サイクルはＳ１→Ｓ２→Ｓ３→Ｓ４の４つのステートから成り、各々のステートはＰＫ信号及びＰＬ信号によってエンコードされる。例えば、ＰＫ＝０，ＰＬ＝０のときにＳ１、ＰＫ＝１，ＰＬ＝０のときにＳ２、ＰＫ＝１，ＰＬ＝１のときにＳ３、ＰＫ＝０，ＰＬ＝１のときにＳ４に遷移する。ここでは、説明の便宜上、WAIT_信号を省略したが、同期ＣＰＵ４０が低速デバイスにアクセスするときは、図５に示すように、ステートＳ３におけるCLK信号の立ち上がりでWAIT_信号をセンスし、WAIT_＝０ならば、ステートＳ３の期間をさらに１クロック分延長する。ここでは４ステートから成るバス・サイクルを例示するが、本発明はこれに限られるものではない。また、本実施形態では非同期ＣＰＵと周辺デバイスの間で交わされるアクセス・サイクルとしてバス・サイクルを例示するが、これに限られるものではない。
【００１４】
図６は同期ＣＰＵ４０のバス・サイクルの状態遷移を示している。同期ＣＰＵ４０が同期バス３０にアクセスせずにＣＰＵ内部で内部サイクルを実行しているときは、バス・サイクルは実行されず、ステートＳ１の状態を維持する（ＰＫ＝ＰＬ＝０）。同期ＣＰＵ４０が同期バス３０にアクセスすることにより、バス・サイクルが開始されると、半クロック後にはステートＳ２に移行し（ＰＫ＝１，ＰＬ＝０）、さらに半クロック後にはステートＳ３に移行する（ＰＫ＝ＰＬ＝１）。ステートＳ３ではCLK信号の立ち上がりでWAIT_信号をチェックし、WAIT_＝０である場合には、更に１クロック分、ステートＳ３の期間が延長される。CLK信号の立ち上がりでWAIT_＝１である場合には、ステートＳ３からステートＳ４に移行し（ＰＫ＝０，ＰＬ＝１）、更に半クロック後にはステートＳ１に再帰する（ＰＫ＝ＰＬ＝０）。このように、同期ＣＰＵ４０はCLK信号の立ち上がり又は立下りに同期したタイミングでバス・サイクルを実行することで、同期バス３０へのアクセスを実行する。
【００１５】
図７及び図８は非同期ＣＰＵ１０が同期・非同期インターフェース回路２０を仲介しないで周辺デバイス５０との間でリード・サイクルを実行するときのハンドシェイキングを示している。非同期ＣＰＵ１０のリード・サイクルは、アドレス・バスa15-00上に時刻ｔ１のタイミングでアドレス信号を出力した後、時刻ｔ２のタイミングでrd_信号をActive Lowにセットすることにより開始される。一方、周辺デバイス５０のリード・サイクルはrd_信号がActiveLowとなるのを待って開始される。周辺デバイス５０はアドレス指定された番地の内容（データ）を時刻ｔ３のタイミングでデータ・バスd7-0上に出力し、更に、時刻ｔ４のタイミングでack_信号をActive Lowとする。非同期ＣＰＵ１０はack_信号がActiveLowに遷移したことを受けて、所望のデータがデータ・バスd7-0上に出力されていることを検出し、これを内部レジスタに取り込む。非同期ＣＰＵ１０は内部レジスタへのデータの書き込みが完了した段階で時刻ｔ５のタイミングでrd_信号をNegativeHighにセットし、リード・サイクルの終結を宣言する。周辺デバイス５０はこれを受けて、時刻ｔ６のタイミングでack_信号をNegativeHighにセットし、リード・サイクル終結宣言を確認する。非同期ＣＰＵ１０はack_信号がNegativeHighとなるのを待って、時刻ｔ７のタイミングでアドレス・バスa15-00へのアドレスデータの出力を取り止めて、リード・サイクルを完結する。このように、非同期ＣＰＵ１０と周辺デバイス５０のリード・サイクルはrd_信号とack_信号による４相ハンドシェイキングによって実現される。
【００１６】
図９及び図１０は非同期ＣＰＵ１０が同期・非同期インターフェース回路２０を仲介しないで周辺デバイス５０との間でライト・サイクルを実行するときのハンドシェイキングを示している。非同期ＣＰＵ１０のライト・サイクルは、アドレス・バスa15-00上に時刻ｔ１のタイミングでアドレス信号を出力した後、同時刻から若干遅れた時刻ｔ２のタイミングでデータ・バスd7-0上にデータを出力した上で、時刻ｔ３のタイミングでwr_信号をActive Lowにセットすることにより開始される。一方、周辺デバイス５０は非同期ＣＰＵ１０からの書き込み要請を受けて指定アドレス（a15-00）に指定データ（d7-0）を書き込み、時刻ｔ４のタイミングでack_信号をActive Lowとする。非同期ＣＰＵ１０はack_信号がActiveLowに遷移したことを受けて、ライト・サイクルの終結を宣言するために時刻ｔ５のタイミングでwr_信号をNegativeHighにセットし、データ・バスd7-0上へのデータ出力を取り止める。この終結宣言を受けた周辺デバイス５０は時刻ｔ６のタイミングでack_信号をNegative Highとして終結宣言を確認する。非同期ＣＰＵ１０はack_信号がNegative Highとなったことを受けてライト・サイクルが完結したことを検出し、時刻ｔ７においてアドレス・バスa15-00へのアドレスデータの出力を取り止めてライト・サイクルを完結する。このように、非同期ＣＰＵ１０と周辺デバイス５０のライト・サイクルはrd_信号とack_信号による４相ハンドシェイキングによって実現される。
【００１７】
図１１は同期・非同期インターフェース回路２０の構成図を示している。同図に示すように、同期・非同期インターフェース回路２０は、主に、CLK信号を微分してCLK信号の立ち上がりエッジ信号と立下りエッジ信号の各々を生成する微分回路２１と、非同期ＣＰＵ１０と同期バス３０の間で行われるバス・サイクルをイベントドリブン式に制御する有限ステートマシン２２と、非同期ＣＰＵ１０から同期バス３０へ出力されるアドレスデータをラッチするＡラッチ回路（アドレス・ラッチ回路）２３と、非同期ＣＰＵ１０と同期バス３０相互間で入出力されるデータをラッチするＤラッチ回路（データ・ラッチ回路）２４を備えて構成されている。有限ステートマシン２２は非同期ＣＰＵ１０と同期バス３０の間で交わされるバス制御信号、アドレス信号、及びデータ信号の入出力タイミングをバス・サイクルに従ってイベントドリブン式に制御するイベント・ドリブン・システムである。有限ステートマシン２２は非同期ＣＰＵ１０とのインターフェースにおいては、非同期ＣＰＵ１０とのハンドシェイクを通じて非同期に状態遷移することによりバス・サイクルを制御する一方で、同期バス３０とのインターフェースにおいては、同期バス３０から供給されるグローバル・クロックに同期して状態遷移を行うことによりバス・サイクルを制御する。
【００１８】
同期・非同期インターフェース回路２０は非同期ＣＰＵ１０にとっては周辺デバイスとして動作する必要があるため、非同期ＣＰＵ１０から出力されるrd_信号、又はwr_信号を周辺デバイスに替わって受け付けて、これに応答するack_信号を非同期ＣＰＵ１０に出力する。その一方で、同期・非同期インターフェース回路２０は同期バス３０に対しては同期ＣＰＵ４０として動作する必要があるため、非同期ＣＰＵ１０に替わって同期バス３０にRD_信号、WR_信号、ＰＫ信号、ＰＬ信号を出力するとともに、同期バス３０から出力されるWAIT_信号を非同期ＣＰＵ１０に替わって受け付ける。有限ステートマシン２２から同期バス３０に出力されるバス制御信号（RD_信号、WR_信号）及びクロック信号（ＰＫ信号、ＰＬ信号）の出力タイミングは、微分回路２１から出力されるグローバル・クロックの立ち上がり信号又は立下り信号に同期している。同様に、Ａラッチ回路２３から同期バス３０へアドレス信号が出力されるタイミングと、Ｄラッチ回路２４から同期バス３０へデータ信号が出力されるタイミングはグローバル・クロックの立ち上がり信号又は立下り信号に同期するように有限ステートマシン２２によって制御される。
【００１９】
有限ステートマシン２２の内部には、バス・サイクルの開始を検出するバス・サイクル開始検出回路（図示せず）が実装されており、非同期ＣＰＵ１０から出力されるrd_信号又はwr_信号がActive Lowに遷移することによりバス・サイクルの開始を検出すると、上述した状態遷移図（図６）に従って半クロック毎に状態遷移し、各々のステートに予め割り当てられた通信手順に従ってバス・サイクルを制御する。バス・サイクル開始検出回路の詳細については図１９を用いて後述する。
【００２０】
図１２は非同期ＣＰＵ１０が同期・非同期インターフェース回路２０を仲介して周辺デバイス５０との間でリード・サイクルを実行するときのハンドシェイキングを示している。非同期ＣＰＵ１０のリード・サイクルは、アドレス・バスa15-00上に時刻ｔ２のタイミングでアドレスを出力した後、時刻ｔ３のタイミングでrd_信号をActive Lowにセットすることにより開始される。時刻ｔ２よりも時間的に先行する時刻ｔ１のタイミングではrd_信号はNegativeHighであるため、バス・サイクルは開始されない。時刻ｔ１から１クロック経過後の時刻ｔ４でrd_信号をセンスすると、rd_信号はActive Lowとなっているため、有限ステートマシン２２はバス・サイクルの開始を検出し、時刻ｔ４とほぼ同時刻の時刻ｔ５から半クロック毎にＳ１→Ｓ２→Ｓ３→Ｓ４と状態遷移して、バス・サイクルを実行する。これは、同期ＣＰＵ４０によるリード・サイクルが実行されることを意味する。Ａラッチ回路２３はアドレス・バスa15-00上に出力されたアドレスデータをラッチし、バス・サイクルが開始される時刻ｔ５のタイミングでこのラッチしたアドレスデータをアドレス・バスA15-00上に出力する。これにより、同期ＣＰＵ４０によるリード・サイクルが開始される。次いで、半クロック後にCLK信号が立ち上がる時刻ｔ６では、有限ステートマシン２２はステートＳ１からステートＳ２に移行し、RD_信号をActiveLowにセットする。RD_信号がActive Lowに遷移したことを受けて、同期バス３０に接続する周辺デバイス（図示せず）は、半クロック後にCLK信号が立ち下がる時刻ｔ７において、アドレス指定された番地の内容（データ）データ・バスD7-0上に出力する。リード・サイクルではＤラッチ回路２４はデータ信号をラッチせずにそのままデータ・バスD7-0上へスルーさせる。このとき有限ステートマシン２２はステートＳ３の状態にある。
【００２１】
有限ステートマシン２２は半クロック後にCLK信号が立ち上がる時刻ｔ８にWAIT_信号をセンスし、Negative Highであることを確認した上で、ステートＳ３からステートＳ４に移行する。非同期ＣＰＵ１０から見ると、同期・非同期インターフェース回路２０は周辺デバイスとして動作する必要があるので、データ・バスd7-0上に所望のデータが出力されていることを非同期ＣＰＵ１０に知らせるため、時刻ｔ８ではack_信号をActive Lowにセットする。ack_信号がActiveLowであることを検知して、非同期ＣＰＵ１０はデータ・バスd7-0上に出力されているデータを内部レジスタに書き込むと、rd_信号をNegative Highにセットし、リード・サイクルの終結を宣言する。これを受けて、有限ステートマシン２２はRD_信号をNegativeHighにセットし、周辺デバイスにリード・サイクルの終結を宣言する。rd_信号がNegative Highにセットされると、有限ステートマシン２２はack_信号をNegative Highにセットし、リード・サイクル終結宣言を確認する。非同期ＣＰＵ１０はack_信号がNegative Highとなるのを待って、時刻ｔ９のタイミングでアドレス・バスa15-00へのアドレスデータの出力を取り止めて、非同期ＣＰＵ１０のリード・サイクルを完結する。時刻ｔ８から半クロック後にCLK信号が立ち下がる時刻ｔ１０では同期・非同期インターフェース回路２０によるアドレス・バスA15-00へのアドレスデータの出力が取り止められ、同期ＣＰＵ４０によるリード・サイクルが完結する。
【００２２】
図１３は非同期ＣＰＵ１０が同期・非同期インターフェース回路２０を仲介して周辺デバイス５０との間でライト・サイクルを実行するときのハンドシェイキングを示している。非同期ＣＰＵ１０のライト・サイクルは、アドレス・バスa15-00上に時刻ｔ２のタイミングでアドレスを出力し、同時刻から若干遅れた時刻ｔ３のタイミングでデータ・バスd7-0上にデータを出力した上で、時刻ｔ４のタイミングでwr_信号をActive Lowにセットすることにより開始される。時刻ｔ２よりも時間的に先行する時刻ｔ１のタイミングではwr_信号はNegative Highであるため、バス・サイクルは開始されない。時刻ｔ１から１クロック経過後の時刻ｔ５でwr_信号をセンスすると、wr_信号はActive Lowとなっているため、有限ステートマシン２２はバス・サイクルの開始を検出し、時刻ｔ５とほぼ同時刻の時刻ｔ６から半クロック毎にＳ１→Ｓ２→Ｓ３→Ｓ４と状態遷移して、バス・サイクルを実行する。これは、同期ＣＰＵ４０によるライト・サイクルが実行されることを意味する。Ａラッチ回路２３はアドレス・バスa15-00上に出力されたアドレスデータをラッチし、このラッチしたアドレスデータをバス・サイクルが開始される時刻ｔ６のタイミングでアドレス・バスA15-00上に出力する。これにより、同期ＣＰＵ４０によるライト・サイクルが開始される。次いで、半クロック後にCLK信号が立ち上がる時刻ｔ７では有限ステートマシン２２はステートＳ１からステートＳ２に移行する。Ｄラッチ回路２４はデータ・バスd7-0上に出力されたデータをラッチし、このラッチしたデータを有限ステートマシン２２がステートＳ１からステートＳ２に移行する時刻ｔ７のタイミングでデータ・バスD7-0に出力する。次いで、半クロック後にCLK信号が立ち下がる時刻ｔ８のタイミングで有限ステートマシン２２はステートＳ２からステートＳ３に移行し、WR_信号をActiveLowにセットする。
【００２３】
有限ステートマシン２２は半クロック後にCLK信号が立ち上がる時刻ｔ９にWAIT_信号をセンスし、Negative Highであることを確認した上で、ステートＳ３からステートＳ４に移行する。非同期ＣＰＵ１０から見ると、同期・非同期インターフェース回路２０は周辺デバイスとして動作する必要があるので、同期バス３０に接続する周辺デバイス（図示せず）によるデータの書き込みが完了した時刻ｔ９においてack_信号をActive Lowにセットし、データの書き込みが完了したことを非同期ＣＰＵ１０に知らせる。すると、非同期ＣＰＵ１０はwr_信号をNegative Highにセットし、ライト・サイクルの終結を宣言する。これを受けて、有限ステートマシン２２はWR_信号をNegativeHighにセットし、周辺デバイスにライト・サイクルの終結を宣言する。wr_信号がNegative Highにセットされると、有限ステートマシン２２はack_信号をNegative Highにセットすることで、ライト・サイクルの終結宣言を確認する。非同期ＣＰＵ１０はack_信号がNegative Highとなるのを待って、時刻ｔ１０のタイミングでアドレス・バスa15-00へのアドレスデータの出力を取り止めて、非同期ＣＰＵ１０によるライト・サイクルを完結する。時刻ｔ９から半クロック後にCLK信号が立ち下がる時刻ｔ１１では同期・非同期インターフェース回路２０によるアドレス・バスA15-00へのアドレスデータの出力が取り止められ、同期ＣＰＵ４０によるライト・サイクルが完結する。
【００２４】
このように、同期・非同期インターフェース回路２０はCLK信号の立下りエッジでrd_信号又はwr_信号がActive Lowであることを検出すると、内部サイクルからバス・サイクルに移行して、同期・非同期インターフェース回路２０から同期バス３０に出力されるバス制御信号、データ信号、及びアドレス信号が全てCLK信号に同期するように時間調整を行っているため、非同期ＣＰＵ１０と同期バス３０の接続を可能にしている。リード・サイクル又はライト・サイクルにおける各ステート（Ｓ１，Ｓ２，Ｓ３，Ｓ４）の通信手順は予め定められており、同期・非同期インターフェース回路２０はCLK信号の立ち上がり信号又は立下り信号に同期したタイミングで上述の通信手順を実行することにより、同期バス３０から見た場合に、非同期ＣＰＵ１０を同期ＣＰＵ４０に見せることができる。
【００２５】
図１４は上述した微分回路２１の接続図を、図１５はその回路図を示している。図１６は微分回路２１によるCLK信号の微分波形を示している。同図に示すように、微分回路２１はCLK信号を微分することにより、立ち上がりエッジ（ライジング・エッジ）と立下りエッジ（フォーリング・エッジ）に微小のパルス幅を有するR-Edge信号と、F-Edge信号を出力する。図１７はスルー・ラッチ回路６０の接続図を、図１８はその回路図を示している。同図において、ＴＧ１及びＴＧ２はそれぞれＮ−チャンネル、Ｐ−チャンネルのトランジスタ各１個から構成されるトランスファーゲートである。ＴＧ１はsel信号がHigh、sel_信号がLowのときに導通し、インバータＩＮＶ１のゲート電位は入力信号dinとほぼ同電位になる。入力信号dinの電位は、一方ではＴＧ１−ＩＮＶ１−ＩＮＶ３を通って出力信号ｑに反映され、他方ではＴＧ１−ＩＮＶ１を通って出力信号ｑ_に反映される。ここで、sel信号がLow、sel_信号がHighに遷移すると、ＴＧ１は非導通となり、ＴＧ１が導通となるので、ＩＮＶ１−ＩＮＶ２−ＴＧ２−ＩＮＶ１と帰還ループが構成されて、その時の出力信号ｑの電位がラッチ（保持）される。
【００２６】
図１９はバス・サイクル開始検出回路２５の回路構成を示している。バス・サイクル開始検出回路２５は、主に、微分回路２１と、スルー・ラッチ回路６１，６２を備えて構成されている。スルー・ラッチ回路６１，６２の基本的な回路は上述したスルー・ラッチ回路６０と同じである。スルー・ラッチ回路６１，６２にはsel信号として、F-Edge信号が入力される一方、sel_信号として、インバータ７１を介してF-Edge信号の反転信号が入力される。さらに、入力信号dinとして、スルー・ラッチ回路６１，６２にはインバータ７２，７３を介してrd_信号、wr_信号の反転信号が入力される。スルー・ラッチ回路６１の出力信号はgo（READ CYCLE），go（READCYCLE）_である。スルー・ラッチ回路６２の出力信号はgo（WRITE CYCLE），go（WRITE CYCLE）_である。
【００２７】
上述した有限ステーマシン２２が内部サイクルからバス・サイクルに移行するには、CLK信号の立下りエッジでrd_信号又はwr_信号のActive Lowを検出する必要がある。同期バス３０から同期・非同期インターフェース回路２０に供給されるCLK信号と、非同期ＣＰＵ１０から同期・非同期インターフェース回路２０に供給されるrd_信号及びwr_信号は相互に非同期であるから、微妙なタイミングが存在し得る。即ち、CLK信号が立ち下がる正にその時にrd_信号又はwr_信号がActive Lowに遷移する場合がある。F-Edge信号がHighからLowに遷移する正にその時にrd_信号又はwr_信号が変化すると、スルー・ラッチ回路６１，６２がラッチする信号レベルはHigh，Lowの何れでもあり得る。
【００２８】
図２０はバス・サイクル開始検出回路２５がCLK信号の立下りでrd_信号のActive Lowを検出することにより、バス・サイクルを開始するタイミングを示している。同図に示すタイミングでは、最初のCLK信号の立下りでバス・サイクルの開始に失敗し、次の立下りではバス・サイクルの開始に成功している。図中、F-Edge信号がHighからLowに遷移する正にその時にrd_信号がHighからLowに遷移する微妙なタイミングにおいては、スルー・ラッチ回路６１の出力go（READ CYCLE）及びgo（READCYCLE）_に後段のゲートを駆動するだけのピークを持つ単発のグリッジが発生する場合がある。このグリッジのパルス幅は十分短くてCLK信号の立ち上がりまでには消滅してしまうため、同期・非同期インターフェース回路２０の状態遷移制御には何等問題を生じない。また、このスルー・ラッチ回路６１，６２はレーシングが発生しないように、レーシングフリーに設計・検証されている。
【００２９】
このように、CLK信号の立下りでF-Edge信号によりrd_信号の反転信号をラッチしてHighならばgo（READ CYCLE）信号にHighを出力してＳ１（内部サイクル）からＳ１（バス・サイクル）に遷移する。この時、非同期ＣＰＵ１０からのアドレス・バス（a15-00）にはアクセスすべきアドレスが出力されているので、この時点で同期バスのアドレス信号に出力する。図２０はリード・サイクルのバス・サイクル開始タイミングについて記述しているが、ライト・サイクルのバス・サイクル開始タイミングについても同様である。即ち、CLK信号の立下りでF-Edge信号によりwr_信号の反転信号をラッチしてHighならばgo（WRITECYCLE）信号にHighを出力してＳ１（内部サイクル）からＳ１（バス・サイクル）に遷移する一方で、LowならばＳ１（内部サイクル）の状態を維持する。
【００３０】
次に、CLK信号の立ち上がりでR-Edge信号によりgo（READ CYCLE）信号をラッチしてHighならばＰＫ信号にHighを出力し、Ｓ１からＳ２に遷移する一方で、LowならばＳ１の状態を維持する。次に、CLK信号の立下りでF-Edge信号によりPK信号をラッチしてHighならばPL信号にHighを出力し、Ｓ２からＳ３に遷移する一方で、LowならばＳ２の状態を維持する。次に、CLK信号の立ち上がりでR-Edge信号によりPL信号とWAIT_信号の論理積（AND）をラッチし、HighならばPK信号にLowを出力してＳ３からＳ４に遷移する一方で、LowならばＳ３の状態を維持する。上述したように、Ｓ３からＳ４への状態遷移のタイミングはWAIT_信号により異なり、WAIT_信号がLowである限りPK信号をLowにすることはなく、Ｓ３の状態を維持する。次に、CLK信号の立下りでF-Edge信号によりPL信号をラッチしてHighならばPL信号にLowを出力し、Ｓ４からＳ１に状態遷移する。以上、リード・サイクルの状態遷移に関わる信号の発生を簡単に説明したが、ライト・サイクルを含めて図２２に非同期ＣＰＵ１０と同期・非同期インターフェース回路２０のＳＴＧ（SignalTransition Graph）を示す。
【００３１】
以上、説明したように、本実施形態の同期・非同期インターフェース回路２０により、同期回路全体系のスループットを低下させることなく、かつ非同期ＣＰＵ１０を同期回路全体系の回路部品として組み込むことが可能となる。この場合において、非同期ＣＰＵ１０が上述した最低条件を満たすための再設計は不要である。更には、非同期ＣＰＵ１０が既に設計されていてＩＰとして適所に再利用する必要がある場合、本実施形態による同期・非同期インターフェース回路２０を適用することで極めて短期間に結合設計と検証を行うことができる。検証性の高さについては、同期・非同期インターフェース回路２０が有限ステートマシンとハンドシェイキングによって構成されていることに深く関わり、ハンドシェイキングに参画する全ての回路ブロックの入出力信号が必ずアクノリッジされることに起因する。
【００３２】
本発明の同期・非同期インターフェース回路は、携帯電話、ビデオカメラ、携帯型パーソナルコンピュータ（ＰＤＡ）、ヘッドマウントディスプレイ、リプロジェクタ等の各種の電子機器の回路部品として、又は、システム・オン・チップ製品、システム・オン・パネル製品として様々な応用分野に適用できる。
【図面の簡単な説明】
【００３３】
【図１】本実施形態の同期・非同期インターフェース回路の全体構成図である。
【図２】同期ＣＰＵと同期バスの入出力信号である。
【図３】非同期ＣＰＵと同期・非同期インターフェース回路の入出力信号である。
【図４】同期ＣＰＵのバス・サイクルである。
【図５】同期ＣＰＵのバス・サイクルである。
【図６】有限ステートマシンの状態遷移図である。
【図７】リード・サイクルのハンドシェイキングを示す図である。
【図８】非同期ＣＰＵのリード・サイクルを示す図である。
【図９】ライト・サイクルのハンドシェイキングを示す図である。
【図１０】非同期ＣＰＵのライト・サイクルを示す図である。
【図１１】同期・非同期インターフェース回路の構成図である。
【図１２】非同期ＣＰＵのリード・サイクルを示す図である。
【図１３】非同期ＣＰＵのライト・サイクルを示す図である。
【図１４】微分回路の接続図である。
【図１５】微分回路の回路構成図である。
【図１６】微分回路が出力する微分波形図である。
【図１７】スルー・ラッチ回路の接続図である。
【図１８】スルー・ラッチ回路の回路構成図である。
【図１９】バス・サイクル検出回路の回路構成図である。
【図２０】バス・サイクル開始のタイミング図である。
【図２１】ＰＫ出力回路の回路構成図である。
【図２２】バス・サイクルのＳＴＧである。
【符号の説明】
【００３４】
１０…非同期ＣＰＵ  ２０…同期・非同期インターフェース回路  ２１…微分回路  ２２…有限ステートマシン  ２３…Ａラッチ回路  ２４…Ｄラッチ回路  ３０…同期バス  ４０…同期ＣＰＵ
【図１】
2005151412.tif 000003
【図２】
2005151412.tif 000004
【図３】
2005151412.tif 000005
【図４】
2005151412.tif 000006
【図５】
2005151412.tif 000007
【図６】
2005151412.tif 000008
【図７】
2005151412.tif 000009
【図８】
2005151412.tif 000010
【図９】
2005151412.tif 000011
【図１０】
2005151412.tif 000012
【図１１】
2005151412.tif 000013
【図１２】
2005151412.tif 000014
【図１３】
2005151412.tif 000015
【図１４】
2005151412.tif 000016
【図１５】
2005151412.tif 000017
【図１６】
2005151412.tif 000018
【図１７】
2005151412.tif 000019
【図１８】
2005151412.tif 000020
【図１９】
2005151412.tif 000021
【図２０】
2005151412.tif 000022
【図２１】
2005151412.tif 000023
【図２２】
2005151412.tif 000024