(57)【要約】【課題】外部から非同期で入力されるウエイト信号のタイミングに複雑な制約のないプロセッサを提供する。【解決手段】バスマスタがバススレーブへリード処理を行う際には、ＲＤ＿ｒｅｇ信号及びＣＳ＿ｒｅｇ信号をＬｏｗにし、３ステートバッファ２０１・２２１を介してバススレーブ側へ出力する。バススレーブがバスマスタからの信号を入力すると、ＯＲ素子４０４からＷＡＩＴ＿信号をＬｏｗで出力する。ＷＡＩＴ＿信号がＬｏｗになると、バスマスタ内のｏｕｔ＿ｅｎ信号もＬｏｗとなり、バス状態保持回路２０〜２４内の３ステートバッファはハイインピーダンス出力となり、その直前の状態がバス状態保持回路２０〜２４内のバスホルダー回路で保持される。この後、ＷＡＩＴ＿ｒｅｇ信号がＬｏｗとなり、レジスタ１０〜１４がホールド状態となる前にバスマスタの状態が次の状態へと遷移しても、遷移後の状態はバススレーブ側へ出力されない。【選択図】図２
2007199904.tif 000002
【特許請求の範囲】
【請求項１】
バスマスタとなる第１デバイスと、バススレーブとなる第２デバイスと、前記バスマスタと前記バススレーブとを接続するバスとを備えた情報処理装置であって、
前記第１デバイスと前記バスとの間に介挿され、当該バスを駆動して前記第１デバイスから当該バスへデータを転送する転送回路と、
前記バスの信号レベルを保持するバスホルダー回路と、
前記第２デバイスから出力される前記第１デバイスの動作クロックに対して非同期のウエイト信号に基づき、前記転送回路による前記バスの駆動を禁止させる制御回路と、
前記ウエイト信号を前記第１デバイスの動作クロックに同期して前記第１デバイスをウエイト状態に制御する同期化回路と
を備えていることを特徴とする情報処理装置。
【請求項２】
前記転送回路は３ステートバッファ回路であり、
前記制御回路は、前記第２デバイスから出力される非同期のウエイト信号に基づき、前記３ステートバッファをハイインピーダンス出力とすることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
所定の動作クロックでバスマスタとして動作する情報処理装置であって、
外部バスを駆動してデータを転送する転送回路と、
前記外部バスの信号レベルを保持するバスホルダー回路と、
外部のバススレーブから出力された前記所定の動作クロックに対して非同期のウエイト信号に基づき、前記転送回路による前記外部バスの駆動を禁止させる制御回路と、
前記ウエイト信号を前記所定の動作クロックに同期させ、前記転送回路の前段に接続された内部回路を前記同期化されたウエイト信号によりウエイト状態に制御する同期化回路と
を備えていることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスマスタ及びバススレーブとで構成され、バスマスタがバススレーブ側からのウエイト信号を検出し動作を一時停止するウエイト処理を行うプロセッサ等の情報処理装置に関する。
【背景技術】
【０００２】
従来、プロセッサ内部においては、バスマスタとなるＣＰＵ（Central Processing Unit）がバススレーブとなる周辺ブロック（メモリ、ＲＳ−２３２Ｃコントローラ等）との間で通信を行い、様々な処理を行っている。
【０００３】
ここで、ＣＰＵの処理速度はクロックの動作周波数の速度であるが、周辺のバススレーブの処理速度はＣＰＵの処理速度よりも遅い場合が多い。そのため、ＣＰＵとバススレーブとの間で通信を行う場合は、バススレーブ側からＣＰＵへ適宜ウエイト信号を出力し、ＣＰＵの動作を停止させている（以下では、ウエイト処理と呼ぶ）。
【０００４】
従来のプロセッサにおけるウエイト処理を図７から図１０を参照して説明する。図７はバスマスタとバススレーブとが同期化されている場合のウエイト処理に関係する回路構成を示した図である。
【０００５】
図７において、ＣＳ＿信号がＬｏｗ、ＲＤ＿信号（リードパルス）又はＷＲ＿信号（ライトパルス）がＬｏｗとなると、ＡＮＤ素子７０７の出力がＬｏｗからＨｉｇｈに変化し、ＷＡＩＴ＿信号（ウエイト信号）がＨｉｇｈからＬｏｗへと変化する。
【０００６】
ＷＡＩＴ＿信号がＬｏｗとなると、ＡＮＤ素子７１２の出力は常にＬｏｗの状態となり、バスマスタ出力段のフリップフロップ７０１〜７０５へのクロック供給が停止され、バスマスタがウエイト状態となる。この後、カウンタ７０９、デコーダ７１０、レジスタ７１１によりクロックがカウントされ、カウント数が一定値になるとレジスタ７１１がＨｉｇｈを出力する。
【０００７】
例えば、カウンタ７０９が２ビットのダウンカウンタである場合、初期値２から２クロック後にカウントが０になると、ｅｑ０＿ｒｅｇ信号がＨｉｇｈとなり、ＷＡＩＴ＿信号がＬｏｗからＨｉｇｈへと変化する。ＷＡＩＴ＿信号がＨｉｇｈになると、ＡＮＤ素子７１２から再びクロックが出力され、バスマスタの処理が再開される。
【０００８】
図７の回路は、クロックの供給ライン上にゲートを設け（ゲーテッドクロック）、ＷＡＩＴ＿信号でクロックの供給を停止することによりバスマスタをウエイト状態に制御する構成である。
【０００９】
このようなゲーテッドクロックを用いる方法では、ゲーテッドクロックを用いるフリップフロップと、クロックを直接入力するフリップフロップの動作タイミングがずれてしまい、このフリップフロップ間でレーシングが発生し誤動作を起こしやすい欠点がある。したがって、通常は図８に示す回路構成のように、バスマスタ出力段の内部レジスタに設けられるイネーブル信号にＷＡＩＴ＿信号を入力する方法が取られる。
【００１０】
ここまでは、バスマスタとバススレーブとが同期化された場合について説明したが、続いて、バスマスタとバススレーブとが非同期で動作する場合について図９及び図１０を参照して説明する。
【００１１】
図９はバスマスタとバススレーブとが非同期で動作する場合のウエイト処理に関係する回路構成を示した図であり、図１０はウエイト処理のタイミングチャートである。図９において、バスマスタはクロックとしてＣｌｏｃｋ１を用いており、バススレーブはＣｌｏｃｋ２を用いている。
【００１２】
図１０において、ケース1のタイミングチャートは２クロックのＷＲ＿信号（ライトパルス）に対してウエイト処理が発生した場合の動作を示すものである。ケース2のタイミングチャートは、ＷＲ＿信号（ライトパルス）の幅が2クロックであり、ウエイト処理が無い場合の動作を示すものである。ケース３のタイミングチャートは、ＷＲ＿信号（ライトパルス）の幅が１クロックであり、ウエイト処理が無い場合の動作を示すものである。
【００１３】
図１０のケース１において、ＣＳ＿信号がＬｏｗ、ＲＤ＿信号又はＷＲ＿信号がＬｏｗとなると（図１０のＡ点、Ｂ点）、図９のＡＮＤ素子９０７の出力がＨｉｇｈとなり、ＷＡＩＴ＿信号がＬｏｗへと変化する。
【００１４】
ＷＡＩＴ＿信号がＬｏｗとなった次のＣｌｏｃｋ１のタイミング（図１０のＣ点）で、ＷＡＩＴ＿信号を同期化するフリップフロップ９１０の出力であるｗａｉｔ＿ｒｅｇ１信号がＬｏｗとなる。ｗａｉｔ＿ｒｅｇ１信号がＬｏｗである間は（図１０のＤ点）、レジスタ９０１〜９０５がホールド状態となり、バスマスタがウエイト状態となる。このとき、ＣＳ＿信号及びＲＤ＿信号、ＷＲ＿信号はＬｏｗである。
【００１５】
ｗａｉｔ＿ｒｅｇ１信号がＬｏｗとなった次のクロックのタイミングでは（図１０のＥ点）、ＷＡＩＴ＿信号はＬｏｗであるため、ｗａｉｔ＿ｒｅｇ１信号もそのままＬｏｗとなる。ここで、ケース２でＲＤ＿信号又はＷＲ＿信号が再びＬｏｗからＨｉｇｈへと変化する前にケース１のｗａｉｔ＿ｒｅｇ１信号をＨｉｇｈからＬｏｗへと変化させる必要がある。
【００１６】
このため、ＲＤ＿信号又はＷＲ＿信号がＬｏｗとなる図１０のa点から次のＣｌｏｃｋ１のタイミング（図１０のｂ点）までの間にＷＡＩＴ＿信号がバスマスタへ入力されなければならない。
【００１７】
バススレーブ内での処理が終了し、バスマスタのウエイト状態を解除する際は、バススレーブ側のフリップフロップ９０９がＣｌｏｃｋ２のタイミングでＨｉｇｈを出力する。
【００１８】
フリップフロップ９０９の出力がＨｉｇｈになると、ＷＡＩＴ＿信号がＬｏｗからＨｉｇｈへと変化する。ＷＡＩＴ＿信号がＨｉｇｈとなった次のＣｌｏｃｋ１のタイミング（図１０のＦ点）でｗａｉｔ＿ｒｅｇ１信号がＨｉｇｈとなる。なお、ＲＤ＿信号及びＷＲ＿信号のパルス幅は２クロックであり、ケース２に示すようにウエイト処理が無い場合は図１０のＥ点からＦ点の間のタイミングでＬｏｗからＨｉｇｈへと変化するが、ケース１では２サイクル（２クロック）のウエイトが発生するため、ＲＤ＿信号及びＷＲ＿信号のパルス幅は結果的に４クロックとなる。
【００１９】
ｗａｉｔ＿ｒｅｇ１信号がＨｉｇｈとなった次のクロックのタイミングで（図１０のＧ点）、レジスタ９０１〜９０５のホールド状態が解除される。この時点でバスマスタのウエイト状態が解除され、ＣＳ＿信号、ＲＤ＿信号及びＷＲ＿信号がＬｏｗからＨｉｇｈとなる。
【００２０】
ここで、ケース３に示したように、ＷＲ＿信号（ライトパルス）の幅が１クロックである場合には、ｗａｉｔ＿ｒｅｇ１信号がＨｉｇｈからＬｏｗへと変化するタイミングとＷＲ＿信号がＬｏｗからＨｉｇｈへ戻るタイミングとが接近する。このため、バスマスタがウエイト状態になる前に次のＣｌｏｃｋ１の状態へと遷移し（ＲＤ＿信号又はＷＲ＿信号がＬｏｗからＨｉｇｈに変化する）、その遷移後の状態がバススレーブへと出力される可能性がある。
【００２１】
このように、本来ウエイト状態になるべき状態の次の状態がバスマスタからバススレーブへと出力されることを防ぐため、従来のプロセッサではリード、ライトのパルス幅は２サイクル以上で使用していた。
なお、本出願に関する従来技術の参考文献として、特許文献1が知られている。
【特許文献１】特開昭６２−６７６５５号公報
【発明の開示】
【発明が解決しようとする課題】
【００２２】
しかし、図７及び図８に示したプロセッサのウエイト処理は、バスマスタとバススレーブとが同一のクロックもしくは同期したクロックで動作することを前提としており、非同期のクロックを使用するプロセッサでは使用できない。さらに、ウエイト信号生成のタイミングに制約があり、また遅延が大きく付きやすい経路であるため、バスマスタの高速動作を妨げる。
【００２３】
一方、図９に示したプロセッサのウエイト処理によればリード、ライトのパルス幅は２サイクルかそれ以上とする必要があり、１サイクルの動作に使用できない。また、図１０のタイミングチャートに示したとおり、リード、ライトのパルス幅が２サイクルの場合にウエイト信号をバスマスタに入れなければならない最長時間は、バスマスタ側のクロックＣｌｏｃｋ１の１サイクルと短い。
【００２４】
このように、従来のプロセッサにおけるウエイト処理においては、ウエイト信号を入力するタイミングの制約が複雑であり、リード、ライトパルス幅が１サイクルの場合には使用できないという課題があった。
本発明は上記事情を考慮してなされたもので、その目的は、外部から非同期で入力されるウエイト信号のタイミングに複雑な制約のない情報処理装置を提供することにある。
【課題を解決するための手段】
【００２５】
本発明は上記の課題を解決するためになされたもので、請求項1に記載の発明は、バスマスタとなる第１デバイスと、バススレーブとなる第２デバイスと、前記第１デバイスと前記バススレーブとを接続するバスとを備えた情報処理装置であって、前記第１デバイスと前記バスとの間に介挿され、当該バスを駆動して前記バスマスタから当該バスへデータを転送する転送回路と、前記バスの信号レベルを保持するバスホルダー回路と、前記第２デバイスから出力される前記第１デバイスの動作クロックに対して非同期のウエイト信号に基づき、前記転送回路による前記バスの駆動を禁止させる制御回路と、前記ウエイト信号を前記第１デバイスの動作クロックに同期して前記第１デバイスをウエイト状態に制御する同期化回路とを備えていることを特徴とする。
【００２６】
また、請求項２に記載の発明は、請求項１に記載の発明において、前記転送回路は３ステートバッファ回路であり、前記制御回路は、前記第２デバイスから出力される非同期のウエイト信号に基づき、前記３ステートバッファをハイインピーダンス出力とすることを特徴とする。
【００２７】
また、請求項３に記載の発明は、所定の動作クロックでバスマスタとして動作する情報処理装置であって、外部バスを駆動してデータを転送する転送回路と、前記外部バスの信号レベルを保持するバスホルダー回路と、外部のバススレーブから出力された前記所定の動作クロックに対して非同期のウエイト信号に基づき、前記転送回路による前記外部バスの駆動を禁止させる制御回路と、前記ウエイト信号を前記所定の動作クロックに同期させ、前記転送回路の前段に接続された内部回路を前記同期化されたウエイト信号によりウエイト状態に制御する同期化回路とを備えていることを特徴とする。
【発明の効果】
【００２８】
本発明の情報処理装置によれば、バスマスタからバススレーブへのバスに出力制御とバスホルダー回路を設け、バススレーブからのウエイト信号入力時に転送回路でバスマスタからバスへの駆動を禁止し、バスホルダー回路によりバスの状態を保持することが可能である。
【００２９】
したがって、バススレーブからのウエイト信号入力後からバスマスタがウエイト状態になるまでの間に、バスマスタの状態が１クロック先の状態に遷移するようなタイミングでバススレーブからウエイト信号が出力されたとしても、その遷移した状態がバススレーブ側へと出力されることはないため、バススレーブからウエイト信号を入力するタイミングに複雑な制約がなくなる。
【００３０】
さらに、従来の情報処理装置では実現できなかった１サイクルのリード、ライトパルスによるウエイト処理も可能となる。また、外部から非同期で入力されるウエイト信号を１つのフリップフロップで同期化することができるため、回路の安定性が向上する。
【発明を実施するための最良の形態】
【００３１】
以下、図面を参照して本発明の実施形態について説明する。
図１は、本発明の実施形態に係るマイクロコンピュータ（情報処理装置）の構成を示す構成図である。図１において、符号１はＣＰＵであり、バスマスタとして周辺ブロックの制御を行うものである。
【００３２】
符号２はメモリであり、ＣＰＵ１からの指示に基づいて情報を記憶するものである。符号３はＲＳ−２３２Ｃコントローラであり、外部装置とのＲＳ−２３２Ｃの通信規格に基づく通信を制御するものである。符号４は時間の計測を行うタイマである。メモリ２、ＲＳ−２３２Ｃコントローラ３、タイマ４はバススレーブとして動作する。なお、マイクロコンピュータは、図１に示した以外にも様々な種類のバススレーブを構成要素とする。
【００３３】
続いて、図１に示したマイクロコンピュータにおけるバスマスタとバススレーブとの間の通信で行われるウエイト処理に関して、図２から図６を参照して詳細に説明する。
【００３４】
図２は、バスマスタ（ＣＰＵ１）とバススレーブ（例えば、メモリ２）のウエイト処理に関する部分の回路構成を示した回路図である。図２において、符号１０〜１４はバスマスタ内部のステートマシーンからバススレーブへ供給すべき各信号の出力段に設けられるレジスタであり、イネーブル信号としてｗａｉｔ＿ｒｅｇ信号を入力し、ｗａｉｔ＿ｒｅｇ信号がＨｉｇｈの時には入力側の状態を出力側に透過する透過状態、Ｌｏｗの時には入力側の状態によらず出力側の状態を保持するホールド状態となるものである。
【００３５】
符号２０〜２４は、イネーブル信号としてｏｕｔ＿ｅｎ信号を入力し、ｏｕｔ＿ｅｎ信号がＨｉｇｈの時には入力を透過し、ｏｕｔ＿ｅｎ信号がＬｏｗの時にはそのＬｏｗとなる直前のバスの状態を保持するバス状態保持部である。
【００３６】
レジスタ１０及びバス状態保持部２０はバススレーブへの読み取り動作を制御するリードパルス（ＲＤ＿信号）の出力回路であり、レジスタ１１及びバス状態保持部２１はバススレーブへの書き込み動作を制御するライトパルス（ＷＲ＿信号）の出力回路であり、レジスタ１２及びバス状態保持部２２はバススレーブを選択するチップセレクト信号（ＣＳ＿信号）の出力回路である。
【００３７】
レジスタ１３及びバス状態保持部２３はバススレーブへの書き込み・読み取り時におけるアドレスを出力するアドレス信号（Ａｄｄｒｅｓｓ信号）の出力回路であり、レジスタ１４及びバス状態保持部２４はバススレーブへの書き込み・読み取り時におけるデータを入出力するデータ信号（Ｄａｔａ信号）の入出力回路である。
【００３８】
ウエイト信号同期化回路３０は、バススレーブ側から（Ｃｌｏｃｋ２のタイミングで発生された）ウエイト信号（ＷＡＩＴ＿信号）を入力し、Ｃｌｏｃｋ１で同期化を行う回路である。ウエイト信号同期化回路３０から出力されるｏｕｔ＿ｅｎ信号はバス状態保持部２０〜２４で用いられ、ｗａｉｔ＿ｒｅｇ信号はレジスタ１０〜１４で用いられる。
【００３９】
なお、本実施形態では、請求項１に記載の制御回路及び同期化回路をウエイト信号同期化回路３０で実現している。
【００４０】
レジスタ１０は、ＡＮＤ素子１０１、１０２、ＯＲ素子１０３及びフリップフロップ１０４から構成される。ＡＮＤ素子１０１の一の入力端子はバスマスタ内部のステートマシーンからの命令を入力し、他方の入力端子はフリップフロップ３０１の出力端子と接続され、ｗａｉｔ＿ｒｅｇ信号をレジスタ１０のイネーブル信号として入力する。
【００４１】
ＡＮＤ素子１０２の一の入力端子はローアクティブの論理であり、フリップフロップ３０１の出力端子と接続され、ｗａｉｔ＿ｒｅｇ信号を入力する。ＡＮＤ素子１０２の他方の入力端子はフリップフロップ１０４の出力端子と接続される。
【００４２】
ＯＲ素子１０３の一の入力端子はＡＮＤ素子１０１の出力端子と接続され、他方の入力端子はＡＮＤ素子１０２の出力端子と接続される。ＯＲ素子１０３の出力端子は、フリップフロップ１０４の入力端子と接続される。レジスタ１１〜１４の構成は、上述したレジスタ１０の構成と同様であり、説明を省略する。
【００４３】
バス状態保持部２０は、３ステートバッファ２０１（転送回路）とバスホルダー回路２０２とから構成される。３ステートバッファ２０１の入力端子は、フリップフロップ１０４の出力端子と接続され、イネーブル端子はＡＮＤ素子３０２の出力と接続されｏｕｔ＿ｅｎ信号を入力する。
【００４４】
３ステートバッファ２０１の出力端子は、バススレーブ側へデータをＲＤ＿信号として出力するための端子である。また、３ステートバッファ２０１の出力端子は、同時にバスホルダー回路２０２と接続される。バス状態保持部２１〜２３の構成も同様であり、説明を省略する。
【００４５】
バス状態保持部２４は、３ステートバッファ２４１、バスホルダー回路２４２、バッファ２４３、ＡＮＤ素子２４４とから構成される。３ステートバッファ２４１の入力端子はレジスタ１４内のフリップフロップの出力端子と接続され、イネーブル端子はＡＮＤ素子２４４の出力と接続される。
【００４６】
ＡＮＤ素子２４４の一の入力端子はＡＮＤ素子３０２の出力と接続されｏｕｔ＿ｅｎ信号を入力する。ＡＮＤ素子２４４の他方の入力端子はｏｕｔｐｕｔ＿ｅｎａｂｌｅ信号と接続され、データを入力する動作と出力する動作とを切り替える。
【００４７】
３ステートバッファ２４１の出力端子は、ＤＡＴＡ信号としてバススレーブ側へ出力される。また、３ステートバッファ２４１の出力端子は、バスホルダー回路２４２及びバッファ２４３と接続される。バッファ２４３は、バススレーブからバス状態保持部２４へデータが入力される時に、バススレーブからのデータをバスマスタのＣＰＵ内部へと出力する。
【００４８】
図３は、図２のバスホルダー回路の具体的な回路構成を示した図である。図３の（ａ）に示したバスホルダー回路２０２は、２つのバッファＢ１、Ｂ２で構成されている。バッファＢ１の入力端子及びバッファＢ２の出力端子は、ＲＤ＿信号が出力される信号線（バス）と接続され、バッファＢ１の出力端子とバッファＢ２の入力端子とが接続される。
【００４９】
図３の（ａ）において、３ステートバッファ２０１からＨｉｇｈが出力されている場合は、バッファＢ１の入力がＨｉｇｈとなり、バッファＢ１はＨｉｇｈを出力する。このとき、バッファＢ２の入力がＨｉｇｈとなり、バッファＢ２はＨｉｇｈを出力する。
【００５０】
この状態で３ステートバッファ２０１のイネーブル信号がＨｉｇｈとなると、３ステートバッファ２０１がハイインピーダンス出力となり、バスへの駆動が禁止される。このとき、ＲＤ＿信号はバッファＢ２による駆動によりＨｉｇｈの状態で保持される。なお、バッファＢ２の駆動能力は３ステートバッファ２０１の駆動能力より弱いため、バスホルダー回路２０２で保持する論理と３ステートバッファ２０１が出力する論理とが異なる場合は、３ステートバッファ２０１が出力する論理が優先される。
【００５１】
図３の（ｂ）は、バスホルダー回路の別の回路構成を示した図であり、（ａ）のバッファＢ１、Ｂ２をＮＯＴ素子Ｎ１、Ｎ２に置き換えたものである。その動作は、（ａ）と同様であるため、説明を省略する。
【００５２】
図２に戻って、クロック同期化回路３０は、Ｃｌｏｃｋ１で動作するフリップフロップ３０１及びＡＮＤ素子３０２から構成される。フリップフロップ３０１及びＡＮＤ素子３０２の一の入力端子へは、バススレーブ側からのＷＡＩＴ＿信号が入力される。
【００５３】
フリップフロップ３０１の出力端子は、ＷＡＩＴ＿信号をＣｌｏｃｋ１に同期化したｗａｉｔ＿ｒｅｇ信号を出力するための端子であり、ＡＮＤ素子３０２の他方の入力端子とも接続される。ＡＮＤ素子３０２は、ＷＡＩＴ＿信号及びｗａｉｔ＿ｒｅｇ信号が共にＨｉｇｈであるときのみＨｉｇｈを出力し、それ以外の場合にはＬｏｗを出力する。
【００５４】
本実施形態では、バススレーブから非同期で入力されるＷＡＩＴ＿信号を１つのフリップフロップ３０１で同期化することができるため、複数のフリップフロップで同期化する場合と比べて複雑なタイミング調整を行う必要が無く、回路の安定性が向上する。
【００５５】
なお、請求項１及び請求項２に記載の情報処理装置とは、図２のバスマスタ側及びバススレーブ側の双方の回路で構成されるものであり、請求項３に記載の情報処理装置とは、図２のバスマスタ側の回路のみで構成されるものである。
【００５６】
続いて、バススレーブ側の回路に関して説明する。なお、バススレーブ側の回路に関しては従来と同様であるため、図２においてはウエイト処理に関係のある回路のみを記載し、その他の回路構成は省略している。
【００５７】
ＯＲ回路４０１の２つの入力端子は、ともにローアクティブの端子であり、一方の端子にはバスマスタからのＲＤ＿信号が、他方の端子にはＷＲ＿信号が入力される。ＡＮＤ素子４０２は一方の入力端子のみがローアクティブであり、ローアクティブの入力端子にはＣＳ＿信号が、ローアクティブではない他方の入力端子はＯＲ素子４０１の出力端子と接続される。
【００５８】
ＡＮＤ素子４０２の出力は２つに分岐され、一方がバススレーブの内部へ、他方がＯＲ素子４０４のローアクティブな入力端子へと入力される。フリップフロップ４０３は、Ｃｌｏｃｋ２で動作するフリップフロップであり、バスマスタのウエイトを解除する際にＣｌｏｃｋ２のタイミングでＨｉｇｈを出力する。フリップフロップ４０３の出力端子はＯＲ素子４０４の他方の入力端子と接続され、ＯＲ素子４０４の出力はＷＡＩＴ＿信号としてバスマスタ側へ出力される。
【００５９】
次に、上述した実施形態の動作を、図４のタイミングチャートを参照して説明する。図４は、バスマスタ内部のステートマシーンから１クロック（Ｃｌｏｃｋ１）の幅のリードパルスがレジスタ１０へと入力される場合のタイミングチャートである。図４では、バスマスタがバススレーブへＣＳ＿信号及びＲＤ＿信号を出力して行う読み取り動作について説明する。
【００６０】
図４において、レジスタ１２の出力であるＣＳ＿ｒｅｇ信号がＨｉｇｈからＬｏｗへと変化すると（図４のＡ点）、バス状態保持部２２の出力であるＣＳ＿信号がＨｉｇｈからＬｏｗへと変化する。なお、ウエイトがかかる前の状態では、ＷＡＩＴ＿信号はＨｉｇｈ、すなわちｏｕｔ＿ｅｎ信号もＨｉｇｈであるため、３ステートバッファ２２１はその入力を出力側へ透過する動作を行う。
【００６１】
続いて、レジスタ１０の出力であるＲＤ＿ｒｅｇ信号がＨｉｇｈからＬｏｗへと変化すると（図４のＢ点）、バス状態保持部２０の出力であるＲＤ＿信号がＨｉｇｈからＬｏｗへと変化する。ＣＳ＿信号及びＲＤ＿信号がＬｏｗになると（図４のＣ点、Ｄ点）、バススレーブ側のＯＲ素子４０１の出力がＨｉｇｈ、ＡＮＤ素子４０２の出力がＨｉｇｈとなる。
【００６２】
これを受けて、ＯＲ素子４０４の出力（ＷＡＩＴ＿信号）がＨｉｇｈからＬｏｗへと変化する。ＷＡＩＴ＿信号がＬｏｗとなると、ＡＮＤ素子３０２の出力（ｏｕｔ＿ｅｎ信号）がＨｉｇｈからＬｏｗへと変化し、バス状態保持部２０〜２４内の３ステートバッファの出力がハイインピーダンス状態となり、その直前の状態がバスホルダー回路により保持される。
【００６３】
ＷＡＩＴ＿信号がＬｏｗとなった次のＣｌｏｃｋ１のタイミングで（図４のＥ点）、フリップフロップ３０１の出力（ｗａｉｔ＿ｒｅｇ信号）がＨｉｇｈからＬｏｗへと変化すると、レジスタ１０〜１４がホールド状態となり、バスマスタがウエイト状態となる。
【００６４】
しかし、本実施形態ではステートマシーンからレジスタ１０へ入力される信号のパルス幅が１クロックであるため、図４のＥ点と同じタイミングでバスマスタ側のレジスタ１０〜１４が次の状態へと遷移する。本実施形態では、ＣＳ＿ｒｅｇ信号及びＲＤ＿ｒｅｇ信号がＬｏｗからＨｉｇｈへと変化し（図４のＦ点）、バスマスタはこの状態でウエイト状態となる。
【００６５】
ｗａｉｔ＿ｒｅｇ信号がＬｏｗとなった次のＣｌｏｃｋ１のタイミングでは、ＷＡＩＴ＿信号がＬｏｗ（図４のＧ点）、ｗａｉｔ＿ｒｅｇ信号がＬｏｗ（図４のＨ点）、ｏｕｔ＿ｅｎ信号もＬｏｗである。ここで、ＣＳ＿ｒｅｇ信号及びＲＤ＿ｒｅｇ信号はＬｏｗからＨｉｇｈへと変化しているが、３ステートバッファ２０１及び２２１による駆動が禁止されているため、ＣＳ＿信号及びＲＤ＿信号はＬｏｗの状態で保持される。
【００６６】
従来のマイクロコンピュータでは、ウエイト状態になる前にバスマスタの状態が次のクロックの状態へと遷移すると、その遷移後の状態がバススレーブ側へ出力されるとの課題があったが、本実施形態では、３ステートバッファ２０１によるＲＤ＿信号の駆動が禁止され、ＲＤ＿信号は遷移する直前の状態で保持されるため、バススレーブ側へは遷移後の状態が出力されない。
【００６７】
したがって、リード、ライトパルス幅が１クロックであってもバススレーブを正常に動作させることが可能であり、本実施形態のマイクロコンピュータを用いることによりパルス幅が１クロックのリード、ライトパルスによる制御ができる。これにより、本実施形態のマイクロコンピュータは従来のマイクロコンピュータと比較してバスマスタの高速動作を実現できる。
【００６８】
この後、バススレーブ側でバスマスタのウエイト状態を解除する段階になると、フリップフロップ４０３の出力がＣｌｏｃｋ２のタイミングでＬｏｗからＨｉｇｈへと変化する。ＯＲ素子４０４の出力（ＷＡＩＴ＿信号）もＬｏｗからＨｉｇｈへと変化する。
【００６９】
ＷＡＩＴ＿信号がＨｉｇｈとなった次のＣｌｏｃｋ１のタイミングで（図４のＩ点）、フリップフロップ３０１の出力（ｗａｉｔ＿ｒｅｇ信号）がＬｏｗからＨｉｇｈへと変化し、バスマスタのウエイト状態が解除される。
【００７０】
ｗａｉｔ＿ｒｅｇ信号がＬｏｗからＨｉｇｈに変わるタイミングでは（図４のＪ点）、ｏｕｔ＿ｅｎ信号はＬｏｗであるため、ＲＤ＿ｒｅｇ信号とＲＤ＿信号との間の接続は切断された状態で維持される。すなわち、この段階ではＣＳ＿信号、ＲＤ＿信号はＬｏｗで維持される。
【００７１】
ＷＡＩＴ＿信号がＨｉｇｈ（図４のＫ点）、ｗａｉｔ＿ｒｅｇ信号がＨｉｇｈ（図４のＬ点）となると、ＡＮＤ素子３０２の出力（ｏｕｔ＿ｅｎ信号）がＬｏｗからＨｉｇｈへと変化する。ｏｕｔ＿ｅｎ信号がＨｉｇｈになると（Ｍ点）、バス状態保持部２０〜２４内の３ステートバッファによる駆動が再開される。
【００７２】
この時点で、ＣＳ＿ｒｅｇ信号及びＲＤ＿ｒｅｇ信号の状態（図４Ｆ点の時点で次の状態へと遷移している）がそれぞれＣＳ＿信号及びＲＤ＿信号側へと出力され、ＣＳ＿信号およびＲＤ＿信号がＬｏｗからＨｉｇｈへと変化する。この後、バスマスタ及びバススレーブはそれぞれ通常の動作を継続する。
【００７３】
以上がＲＤ＿信号のパルス幅が１クロックの場合のウエイト処理の説明であるが、続いて、パルス幅が２クロックの場合のウエイト処理に関して図５及び図６のタイミングチャートを用いて説明する。
【００７４】
前述したとおり、パルス幅が２クロックのウエイト処理に関しては従来のプロセッサでも可能であるが、この従来のプロセッサによればバススレーブ側からＷＡＩＴ＿信号を入れる必要のあるタイミングが最長でもバスマスタのクロックの１サイクル以内に設定しなければならず、タイミング上の制約が厳しいという課題があった。
【００７５】
以下では、本実施形態により、バススレーブ側からＷＡＩＴ＿信号を入れる必要のあるタイミングが最長で２サイクルまで許容されることを説明する。
図５はリードパルス（ＲＤ＿信号）がＨｉｇｈからＬｏｗへ変化してから次のＣｌｏｃｋ１のタイミングまでにＷＡＩＴ＿信号が入力された場合のタイミングチャートである。
【００７６】
図５において、ＣＳ＿ｒｅｇ信号及びＲＤ＿ｒｅｇ信号がＨｉｇｈからＬｏｗへ変化すると（図５のＡ点、Ｂ点）、ＣＳ＿信号及びＲＤ＿信号もＨｉｇｈからＬｏｗへと変化し（図５のＣ点、Ｄ点）する。
【００７７】
ＲＤ＿信号がＬｏｗとなってから次のＣｌｏｃｋ１のタイミングまでにＷＡＩＴ＿信号がＨｉｇｈから変化すると、ＷＡＩＴ＿信号の変化した次のＣｌｏｃｋ１のタイミングで（図５のＥ点）、ｗａｉｔ＿ｒｅｇ信号がＨｉｇｈからＬｏｗへと変化し、バスマスタはウエイト状態となる。
【００７８】
図４のタイミングチャートとは異なり、ＲＤ＿信号のパルス幅が２クロックであるため、レジスタ１０〜１４の状態が次の状態へと遷移する前にｗａｉｔ＿ｒｅｇ信号が入力されてホールド状態となる。この後、ＷＡＩＴ＿信号が再びＬｏｗからＨｉｇｈへと変化した後の動作は図４と同様であるため、説明を省略する。
【００７９】
次に、図６を参照し、リード信号がＨｉｇｈからＬｏｗへ変化後の最初のＣｌｏｃｋ１のタイミングから２度目のＣｌｏｃｋ１のタイミングまでにＷＡＩＴ＿信号が入力された場合の動作について説明する。
【００８０】
図６において、ＣＳ＿ｒｅｇ信号及びＲＤ＿ｒｅｇ信号がＨｉｇｈからＬｏｗへ変化すると（図６のＡ点、Ｂ点）、ＣＳ＿信号及びＲＤ＿信号もＨｉｇｈからＬｏｗへと変化し（図６のＣ点、Ｄ点）する。
【００８１】
ＲＤ＿信号がＬｏｗとなってから最初のＣｌｏｃｋ１のタイミングから２度目のＣｌｏｃｋ１のタイミングまでにＷＡＩＴ＿信号がＨｉｇｈから変化すると、ｏｕｔ＿ｅｎ信号がＨｉｇｈからＬｏｗへと変化し、バス状態保持部２０〜２４内の３ステートバッファの出力がハイインピーダンス状態となる。バス状態保持部２０〜２４内のバスホルダー回路は、３ステートバッファがハイインピーダンス出力となる直前の状態を保持する。
【００８２】
ＷＡＩＴ＿信号の変化した次のＣｌｏｃｋ１のタイミングで（図６のＥ点）、ｗａｉｔ＿ｒｅｇ信号がＨｉｇｈからＬｏｗへと変化し、バスマスタはウエイト状態となる。しかし、この同じ２度目のＣｌｏｃｋ１のタイミングでレジスタ１０〜１４の状態が次の状態へと遷移し、ＣＳ＿ｒｅｇ信号及びＲＤ＿ｒｅｇ信号がＬｏｗからＨｉｇｈへと変化する。
【００８３】
したがって、この遷移後の状態でバスマスタがウエイト状態となるが、図４と同様に、遷移後の状態は３ステートバッファによりバススレーブ側へと出力されない。バスマスタからバススレーブへの出力は、バス状態保持部２０〜２４内のバスホルダー回路で保持された状態で変化しない。この後、ＷＡＩＴ＿信号が再びＬｏｗからＨｉｇｈへと変化した後の動作は図４と同様であるため、説明を省略する。
【００８４】
従来のプロセッサにおいては、バススレーブからバスマスタへ非同期で入力されるウエイト信号をバスマスタのクロックで同期化する処理で発生する遅延のためにウエイト信号を入力するタイミングが短く制限されていた。具体的には、図５に示したタイミングチャートのように、バスマスタが次の状態に遷移するより前にバスマスタをウエイト状態にする必要があった。
【００８５】
これに対して、本実施形態ではウエイト信号の入力時に３ステートバッファによりバスマスタの状態変化がバススレーブ側へ出力されるのを防ぐことが可能であるため、クロック同期化の遅延によりバスマスタがウエイト状態になるタイミングが遅れ、ウエイト状態となる前にバスマスタの状態が変化したとしてもバススレーブは正常に動作することができる。
【００８６】
したがって、本実施形態のマイクロコンピュータでは、リードパルスのパルス幅が２クロックの場合にバススレーブからウエイト信号を入力するタイミングは、リードパルスが変化するタイミング（図６のａ点）からバスマスタのレジスタが変化するタイミング（図６のｂ点）までとなり、最長でバスマスタのクロックの２サイクルとなる。なお、本実施形態では、主としてリードパルスに関して説明を行ったが、ライトパルスに関しても同様である。
【００８７】
以上、本発明の実施形態を詳述してきたが、具体的な構成は本実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、ウエイト動作時にバスマスタとバススレーブ間の接続を切断する手段として実施形態では３ステートバッファを挙げたが、３ステートバッファに限られることはなく、図２のｏｕｔ＿ｅｎ信号によりバスマスタとバススレーブ間の接続を切り替えることが可能な回路であればよい。
【産業上の利用可能性】
【００８８】
本発明は、バスマスタ及びバススレーブとで構成され、バスマスタがバススレーブ側からのウエイト信号を検出し動作を一時停止するウエイト処理を行うプロセッサ、マイクロコンピュータ等に用いて好適である。
【図面の簡単な説明】
【００８９】
【図１】本発明の実施形態に係るプロセッサの構成を示す構成図である。
【図２】図１のＣＰＵ１（バスマスタ）とメモリ２（バススレーブ）のウエイト処理に関する部分の回路構成を示した回路図である。
【図３】図２のバスホルダー回路の具体的な回路構成を示した図である。
【図４】図２のプロセッサにおいて、リード信号のパルス幅が１クロックのウエイト処理のタイミングチャートである。
【図５】図２のプロセッサにおいて、リード信号のパルス幅が２クロックのウエイト処理のタイミングチャートである。
【図６】図５よりも遅いタイミングでウエイト信号が入力された場合のタイミングチャートである。
【図７】バスマスタとバススレーブとで同期化されたクロックを用いる、従来のプロセッサの構成を示す構成図である。
【図８】図７の構成図からＷＡＩＴ＿信号をバスマスタ側の内部レジスタへ出力するように変更した、従来のプロセッサの構成を示す構成図である。
【図９】バスマスタとバススレーブとで非同期のクロックを用いる、従来のプロセッサの構成を示す構成図である。
【図１０】図９のプロセッサにおけるウエイト処理のタイミングチャートである。
【符号の説明】
【００９０】
１…ＣＰＵ（バスマスタ）、２…メモリ、３…ＲＳ−２３２Ｃコントローラ、４…タイマ、１０〜１４…レジスタ、２０〜２４…バス状態保持部、３０…クロック同期化回路、２０１・２１１・２２１・２３１・２４１…３ステートバッファ（転送回路）、２０２・２１２・２２２・２３２・２４２…バスホルダー回路、ＷＡＩＴ＿…ウエイト信号
【図１】
2007199904.tif 000003
【図２】
2007199904.tif 000004
【図３】
2007199904.tif 000005
【図４】
2007199904.tif 000006
【図５】
2007199904.tif 000007
【図６】
2007199904.tif 000008
【図７】
2007199904.tif 000009
【図８】
2007199904.tif 000010
【図９】
2007199904.tif 000011
【図１０】
2007199904.tif 000012