(57)【特許請求の範囲】
【請求項１】
データバスを介して、ＣＰＵと、デバイスとに接続されたバスアクセスタイミング制御回路であって、
ＲＥＡＤタイミング生成回路と、ラッチ回路とを備え、
前記ＲＥＡＤタイミング生成回路が、前記ＣＰＵによる前記デバイスへのＲＥＡＤアクセスを検出し、前記ＲＥＡＤアクセスのバスサイクルを伸長させるウエイト信号の出力を開始し、
前記デバイスの出力遅延量が最大のときと、前記出力遅延量が最小のときとの間で、前記デバイスが前記ＲＥＡＤアクセスに係る出力データを出力する期間が重複するように時間幅を設定した第１のリードイネーブル信号を、前記デバイスに出力し、
前記出力遅延量が最大でも最小でもラッチできるタイミングで、ラッチイネーブル信号を前記ラッチ回路に出力して、前記ラッチ回路に前記タイミングで前記デバイスからの前記出力データをラッチさせ、
前記ラッチ回路に対して、前記第１のリードイネーブル信号より後のタイミングであって、前記デバイスからの前記出力データの出力と重複しないタイミングで、第２のリードイネーブル信号を前記ラッチ回路に出力して、前記データバスを介して、前記出力データを前記ラッチ回路から前記ＣＰＵに出力させ、
前記ウエイト信号は、少なくとも、前記第２のリードイネーブル信号が出力されるタイミングまで、前記バスサイクルが伸長するように出力されることを特徴とするバスアクセスタイミング制御回路。
【請求項２】
前記デバイスが複数接続され、各々のデバイスに対して前記ＲＥＡＤアクセスを行うタイミングを制御する請求項１に記載のバスアクセスタイミング制御回路。
【請求項３】
前記ＲＥＡＤタイミング生成回路は、前記ＣＰＵから前記デバイスへの前記ＲＥＡＤアクセスを示すＲＥＡＤ信号と前記ＲＥＡＤアクセス対象である前記デバイスのアドレスを示すアドレスデコード信号が入力され、前記ＲＥＡＤ信号と前記アドレスでコード信号の和信号を微分してカウンタロード信号を出力する微分回路、前記微分回路からのカウンタロード信号を受けてカウント出力を行うカウンタ回路及び複数のデコーダを備え、
前記複数のデコーダは、
前記微分回路の出力を受けて前記カウンタ回路にカウントを開始させる第１のデコーダ、前記出力遅延量が最大の時と最小の時で前記デバイスからのデータ読み出し期間が重複するように前記デバイスに対する前記第１のリードイネーブル信号の時間幅を設定する第２のデコーダ、
前記ラッチ回路に前記デバイスから読み出したデータをラッチさせるラッチイネーブル信号を出力する第３のデコーダ、
前記ラッチ回路でラッチした前記デバイスからのデータを、前記第１のリードイネーブル信号より後のタイミングで前記ラッチ回路から前記データバスに出力させる前記第２のリードイネーブル信号を出力する第４のデコーダ、
前記ＲＥＡＤタイミング生成回路が第２の出力イネーブル信号を出力するまで継続する前記ウエイト信号を出力する第５のデコーダ、
である請求項１に記載のバスアクセスタイミング制御回路。
【請求項４】
前記ラッチ回路と接続され、前記ＣＰＵ及び前記デバイスとのインタフェースとなるバッファを設けた請求項１から３のいずれか一項に記載のバスアクセスタイミング制御回路。
【請求項５】
前記バッファは双方向バッファであり、前記ＣＰＵ及び前記デバイスと前記データバスで接続され、前記第１のリードイネーブル信号のタイミングで前記デバイスからのデータを前記双方向バッファを経由して前記ラッチ回路に出力し、前記ラッチ回路に保持した前記データを前記第２のリードイネーブル信号のタイミングで前記双方向バッファを経由して前記データバスに出力する請求項４に記載のバスアクセスタイミング制御回路。
【請求項６】
前記ＣＰＵへ出力するまでの出力遅延量の最小値と最大値の差が大きいデバイスは、前記出力遅延量の最小値と最大値の差が前記ＣＰＵの動作クロック幅を超えるデバイスである請求項１から５のいずれか１項に記載のバスアクセスタイミング制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Central Processing Unit、中央演算装置）と、そのシステムバス上に接続されるデバイスとの間の通信、特にＲＥＡＤ（読み出し）アクセス時のバスファイトが防止できるバスアクセスタイミング制御回路に関する。
【背景技術】
【０００２】
通常、ＲＥＡＤアクセス時にバスファイトつまりデータバス上でのデータの衝突の危険性がある場合は、まずソフトウェアでウエイト及びインターバルタイムを設けることで、バスファイトを回避する。それだけでは間に合わず、バスファイトが起こる可能性がある場合に、現在は、ＣＰＵと該当デバイスの間に双方向バッファを設けることで、バスファイト防止を実現している。
【０００３】
即ち、ＲＥＡＤ信号に対して十分に遅延が少ない双方向バッファで、該当デバイスからの出力データの遅延分を切り、ＣＰＵのデータバス上に出力しないようにすることで、バスファイトを防止していた。
【０００４】
ただし、双方向バッファをディスクリート部品で構成すると、部品点数が増える事、及びバスパターンの引き回しが増える事などにより、実装面で不利である。
【０００５】
そのため、アドレス・デコーダ等のＣＰＵ周辺回路を内蔵するために既に存在しているＦＰＧＡ（Field Programmable Gate Array）／ＣＰＬＤ（Complex Programmable Logic Device）等に、双方向バッファも内蔵することが一般的である。よって、以下では、ＦＰＧＡ／ＣＰＬＤ（表記が煩雑になるので以下ＦＰＧＡで代表させる）を用いる場合を前提に述べる。
【０００６】
例えば、図５に示すような構成である。図５は、ＣＰＵ１とＣＰＵ１がアクセスしたいデバイス２の間にアドレス制御機能を持ったバスアクセスタイミング制御回路１０を設けたものである。バスアクセスタイミング制御回路１０はＦＰＧＡ８に内蔵されており、アドレス・デコーダ３、双方向バッファ４、タイミング生成回路５、ＯＲ回路７を備えている。ＦＰＧＡ８は他の機能の回路も持っているが、それは図５中に他回路９として簡略化して示している。
【０００７】
図６は、図５の動作タイミング図である。デバイス２からのローカル・バス出力であるＩＤＴ＿ＢＵＳ信号１１５は、そのままでは、次のバスサイクルにかかってしまうタイミングで出力されるが、双方向バッファ４によってカットされて、データバス（ＤＴ＿ＢＵＳ）上ではＤＴ＿ＢＵＳ信号１０１は、問題のないタイミングとなる。
【０００８】
しかし、この方法では、データバスの入出力口を２個（ＣＰＵ〜ＦＰＧＡ間とデバイス〜ＦＰＧＡ間）以上持つ必要があり、ＦＰＧＡのＩ／Ｏ数が、どうしても多数必要となり、ＦＰＧＡパッケージのサイズアップが必要になる可能性があった。
【０００９】
特許文献１には次のような制御回路が記載されている。発明の目的としては、データの衝突およびアクセス速度の低下を生じさせることなくＣＰＵに低速デバイスを直結することができ、かつ簡素な構成で集積化することができるインタフェース回路を提供することである。
【００１０】
そのために、特許文献１の制御回路では、ＣＰＵにデータバスを介して接続される低速デバイスからの上記ＣＰＵへのデータの取り込み時に一時的にデータを格納するバッファと、このバッファへのデータの格納のタイミングを制御するとともに、データの格納の直後に上記データバスにデータを出力するように上記バッファを制御している。
【００１１】
また特許文献２には次のようなバス制御装置が記載されている。発明の目的としては、プロセッサの内部で外部バスサイクル開始可能状態になってから、外部バスサイクルを実際に開始するまでの外部クロック信号に対する同期待ちの為の無駄なサイクルが発生しないバス制御装置および情報処理装置を提供することである。
【００１２】
そのために特許文献２では、アドレス・デコーダとハードウェア・ウエイトを組み合わせて使用することにより、メモリマップ上の同一ブロックにアサインされたデバイスが複数でも、アドレス・デコーダにより、該当するデバイスを認識し、そのデバイス用に個別に設定されたハードウェア・ウエイト値をＣＰＵに入力することにより、無駄のないアクセス制御をすることが記載されている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２０００−９９４４９号公報
【特許文献２】特開平９−３１９７０４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかし特許文献１の制御回路では、極端に応答の遅いデバイスや、更には、出力遅延差のあるデバイスに対して何ら考慮していない。つまりソフトウェアでウエイトやインターバルタイムを設けても対応できないほど出力遅延が大きい場合や、出力遅延量の最小と最大の差が大きい場合に対処できない可能性がある。また特許文献２のバス制御装置でも、出力遅延差のあるデバイスに対して何ら考慮していない。
【００１５】
本発明の目的は、ＣＰＵからのＲＥＡＤアクセスにおいて、ＲＥＡＤ要求に対するデータ出力応答が遅く、または、出力遅延差が大きく、バスファイトが起こる可能性があるデバイスに対して、バスファイトを防止することである。
【課題を解決するための手段】
【００１６】
本発明は、ＣＰＵ（中央演算装置）から、応答が遅くかつ出力遅延差が大きいデバイスへのＲＥＡＤアクセスのタイミングを制御するバスアクセスタイミング制御回路であって、
前記ＲＥＡＤアクセスを検出し、バスサイクルをカウントして、前記バスサイクルを伸長するウエイト信号を生成し、ラッチタイミング及び出力タイミングを生成するタイミング生成回路と、前記デバイスから出力されたデータを一時保持するラッチ回路と、前記ラッチ回路と接続され、前記ＣＰＵ及び前記デバイスとのインタフェースとなるバッファを設けたことを特徴とするバスアクセスタイミング制御回路である。
【発明の効果】
【００１７】
本発明によれば、ＣＰＵからのＲＥＡＤアクセスにおいて、ＲＥＡＤ要求に対するデータ出力応答が遅く、かつ、出力遅延差が大きく、バスファイトが起こる可能性があるデバイスに対して、バスファイトを防止できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態のブロック図である。
【図２】図１のＲＥＡＤタイミング生成回路５の詳細ブロック図である。
【図３】図１及び図２の動作タイミング図である。
【図４】応答が遅いデバイスが複数の場合のブロック図である。
【図５】既存のバスアクセスタイミング制御回路のブロック図である。
【図６】図５の回路の動作タイミング図である。
【発明を実施するための形態】
【００１９】
（第１の実施形態）
［構成の説明］
本発明の第１の実施形態について図面を参照して詳細に説明する。
【００２０】
図１には第１の実施形態を示すブロック図である。ＣＰＵ１がＦＰＧＡ８を経由してデバイス２にＲＥＡＤアクセスしデータを読み出す。デバイス２はＤＴ＿ＢＵＳ１０１でＣＰＵ１に接続される応答の遅いデバイスである。ＦＰＧＡ８はタイミング制御に関する回路として、ＲＥＡＤタイミング生成回路５，アドレス・デコーダ３、ＯＲ回路７，双方向バッファ４を内蔵している。タイミング制御としてはＲＥＡＤタイミングとＷＲＩＴＥタイミングがあるが、本実施形態では前者の場合を述べる。なおＦＰＧＡには他の機能の回路もあるが、それは図１中に他回路９として簡略表示し、ここでは説明しない。
【００２１】
アドレス・デコーダ３はＣＰＵ１から出力されるＡＤ＿ＢＵＳ信号１０２（アドレスバス信号）及びＣＳ信号１０３（Chip Select信号(Active Low)）からアドレスデコード信号１０６を生成する。
【００２２】
ＲＥＡＤタイミング生成回路５は、ＣＰＵ１から出力されるＲＤ信号１０４（ＲＥＡＤ信号(Active Low)）、ＣＳ信号１０３、及びＣＬＫ信号１０５（クロック信号、ＣＰＵ動作基準クロック）から、デバイス２用のＲＤ＿ＳＦＴ信号１０７（Read Enable信号(Active Low)）と、双方向バッファ４用のＲＤ＿ＥＮＢ信号１０９（Read Enable信号(Active Low））、及びＣＰＵ１にウエイト（待機）を挿入するＨＷ＿ＷＡＩＴ信号１１４（ハードウェア・ウエイト信号（Active Low））を生成する。
【００２３】
双方向バッファ４はラッチ回路６と接続され、ＤＴ＿ＢＵＳ信号１０１（データバス信号）について、デバイス２及びＣＰＵ１とのＦＰＧＡ８のインタフェースとなる。
【００２４】
図２は図１のＲＥＡＤタイミング生成回路５を更に詳細なブロック図としたものである。ＲＥＡＤタイミング生成回路５は、微分回路（Ｄ−Ｆ／Ｆ１３、Ｄ−Ｆ／Ｆ１４、ＡＮＤ回路１５）、カウンタ１１、デコーダ１６、１７、１８、１９、２０を備える。微分回路は該当デバイス２へのＲＥＡＤアクセスを検出する。カウンタ１１はＲＥＡＤアクセスがあった場合に、タイミングを計数する。
【００２５】
デコーダ１７はカウンタ出力信号１１１をデコードして、デバイス２へ出力するＲＤ＿ＳＦＴ信号１０７を生成する。同様にデコーダ１８はカウンタ出力信号１１１をデコードして、ラッチ回路６にデバイス２が出力したＤＴ＿ＢＵＳ信号１０１をラッチさせるＬＡＴ＿ＥＮ信号１０８を生成する。デコーダ２０はＲＤ＿ＥＮＢ信号１０９を生成するデコーダ１９、ＨＷ＿ＷＡＩＴ信号１１４を生成する。さらに、デコーダ１６はカウンタ１１にカウンタ動作を開始させるカウント・イネーブル信号１１２（Active High）を生成する。
［動作の説明］
本実施形態のアクセスタイミング制御回路１０では、読み出そうとするデバイスに対するバスサイクルとＲＥＡＤ信号を最適化する。さらにそのＲＥＡＤ信号によって読み出される該当デバイスの出力データをＦＰＧＡ内で一度ラッチし、バスサイクルを越えないように適切なタイミングでデータバスに出力することにより、バスファイト防止を実現する。
【００２６】
図３は本実施形態のＦＰＧＡ／ＣＰＬＤの動作タイミング図である。
【００２７】
もちろん、デバイス２の出力遅延量やＣＰＵ１の動作周波数などの条件により、必要とされるタイミングは左右されるので、図３は一例を示したにすぎない。
【００２８】
図３を参照しながら、図１及び図２の回路の動作を以下に説明する。
【００２９】
ＣＰＵ１からデバイス２へ、ＲＥＡＤアクセスがあると、ＣＳ信号１０３、ＲＤ信号１０４（ＲＥＡＤ信号）、及びアドレス・デコーダ３から出力されたＡＤ＿ＤＥＣ信号１０６（アドレスデコード信号）がそれぞれアクティブとなり、ＯＲ回路１２の出力が”１”→”０”となる。この立下りが、Ｆ／Ｆ１３，１４及びＡＮＤ回路１５より構成される微分回路により微分され、カウンタロード信号１１０が１クロック幅アクティブ”１”となる。なおＣＰＵ１のバスサイクル（図３中のＣＹＣＬＥ）はＣＬＫ信号１０５に同期している。
【００３０】
カウンタロード信号１１０がアクティブになると、カウンタ１１に「１」がロードされる。デコーダ１６はカウンタ１１が０以外（ＣＴ≠０）を出力した場合に”１”を出力するので、その出力であるカウント・イネーブル信号１１２の出力先であるカウンタ１１のクロックイネーブルＥＮがアクティブとなる。その結果カウンタ１１がＣＬＫ信号１０５に同期してカウントアップを始める。
【００３１】
カウンタ１１がカウントアップすることにより、カウンタ出力信号１１１が、デコーダ１７、同１８、同１９、同２０によりデコードされ、それぞれ、ＲＤ＿ＳＦＴ信号１０７、ＬＡＴ＿ＥＮ信号１０８、ＲＤ＿ＥＮＢ信号１０９、ＨＷ＿ＷＡＩＴ信号１１４が生成される。なおカウンタ１１は“１”から“１０”までカウントすると次は“０”になる。
【００３２】
デコーダ１７はカウンタ１１が“１，２，３”をカウントした時（ＣＴ＝１〜３）にＲＤ＿ＳＦＴ信号１０７をデバイス２に出力する。デコーダ１８はカウンタ１１が“６”をカウントした時（ＣＴ＝６）にＬＡＴ＿ＥＮ信号１０８をラッチ回路６に出力する。デコーダ１９はカウンタ１１が“１０”をカウントした時（ＣＴ＝１０）にＲＤ＿ＥＮＢ信号１０９をラッチ回路６に出力する。デコーダ２０はカウンタ１１が“１”から“８”をカウントする期間（ＣＴ＝１〜８）にＨＷ＿ＷＡＩＴ信号１１４をＣＰＵ１に出力することでバスサイクルを伸長する。
【００３３】
ＲＤ＿ＳＦＴ信号１０７は、デコーダ１７がカウンタ出力信号１１１＝「１」〜「３」をデコードした時にアクティブとなる（デコード値は、デバイス２のスペック（最小ＲＥＡＤ幅及びＲＥＡＤサイクル）を満たすように設定する）。
【００３４】
ＲＤ＿ＳＦＴ信号１０７により、ＲＥＡＤ  ＤＡＴＡ（読み出しデータ）がデバイス２からＤＴ＿ＢＵＳ信号１０１として読み出される。図３は、この読み出しの際の遅延量が大きく、かつ遅延量の最小／最大差が大きい場合である。デコーダ１７は、出力遅延が最大時と最小時で重複する時間ができるようにデバイス２に対するＲＤ＿ＳＦＴ信号１０７の時間幅を設定する。この場合は設定する時間幅はカウンタ出力＝「１」〜「３」の時間幅である。
【００３５】
デバイス２から読み出されたＤＴ＿ＢＵＳ信号１０１は、双方向バッファ４を通り、ＬＡＴ＿ＥＮ信号１０８（Latch Enable信号(Active High)）とクロック信号１０５により、ラッチ回路６にラッチされる。具体的には図３に示すように、デバイス２のデータ読み出し遅延量が最小でも最大でもラッチできるタイミングでＬＡＴ＿ＥＮ信号１０８がアクティブになるようにする。図３の場合、デコーダ１８をカウンタ出力信号１１１＝「６」をデコードするように設定する。
【００３６】
次にＲＤ＿ＥＮＢ信号１０９により、ラッチ回路６の出力信号ＬＡＴ＿ＤＡＴＡ１１３をデータバス（ＤＴ＿ＢＵＳ）にＤＴ＿ＢＵＳ信号１０１として出力する。具体的には、図３に示すように、デバイス２からのデータ読み出しとバッティングせず、かつ、ＣＰＵ１のＲＥＡＤタイミングに合致するようにする。図３の場合、デコーダ１９をカウンタ出力信号１１１＝「１０」をデコードするように設定する。
【００３７】
ＨＷ＿ＷＡＩＴ信号１１４は、デコーダ２０がカウンタ出力信号１１１＝「１」〜「８」をデコードした時にアクティブになる。デコード値は、ＲＤ＿ＥＮＢ信号１０９を出力できるまで、カウンタ１１を回せるように、ＣＰＵ１にウエイトをかける値を設定する。また、ＨＷ＿ＷＡＩＴ信号が有効（Active Low）になるまで、ソフトウェアでＣＰＵ１にウエイトがかかるようにする。
【００３８】
ＲＥＡＤタイミング生成回路５とラッチ回路６を用いて、デバイス２からの出力とぶつからず、しかも、ＣＰＵのＲＥＡＤタイミングに対して適切なタイミングでＲＤ＿ＥＮＢ１０９をアクティブにして、ラッチしたデータ（ＬＡＴ＿ＤＡＴ１１３）をＣＰＵ１に出力できるようになった。そのため双方向バッファ４とＣＰＵ１、デバイス２の間のＢＵＳ接続を一カ所にできるようになった。図５の二カ所に比べてＩ／Ｏ数が少なくできた。
【００３９】
そのあと、カウンタ１１が「１０」から「０」にカウントアップすると、デコーダ１６の出力が”０”になり、カウンタ１１のクロックイネーブルがディセーブルとなるため、再びＲＥＡＤアクセスがあるまでカウントアップが停止し、ＲＥＡＤタイミング生成回路５は待機状態となる。
【００４０】
本実施形態では、応答の遅いデバイスに対して、ＲＥＡＤタイミング生成回路５のカウンタ１１のカウント値１１１、ハードウェア・ウエイト幅（デコーダ２０）及び、ＲＤ＿ＳＦＴ信号のActive幅（デコーダ１７）の各パラメータを変えることにより、デバイス出力遅延量、及びその最小値と最大値の差がいかなる値になろうとも対応可能である。
【００４１】
一方特許文献１では、応答の遅いデバイスの一例として、フラッシュＲＯＭを想定していて、非常に遅延量が大きいためにソフトウェア・ウエイトで対応しきれず、ハードウェア・ウエイトが必要な場合や、遅延量の最小値と最大値の差が大きく、ＣＰＵ動作クロック幅を超えるような場合は想定していないと考えられる。従って想定外の遅延量及び遅延差がある場合は、特許文献１の制御回路では対応できない。
（第２の実施形態）
本発明の第２の実施形態を以下に示す。図４はＣＰＵバスに応答の遅いデバイスが複数（図４の例は２ａ、２ｂ、２ｃの３個）接続される場合のブロック図である。図２のデバイスが一つだけの場合との構成上の相違は、デバイスが２ａ，２ｂ、２ｃと３つあり、それに対応するＯＲ回路２１、ＡＮＤ回路２２、２３を備えている点である。
【００４２】
ＣＰＵ１はどのデバイスのデータを読み出すかを決定しそのデバイスにアクセスする。
【００４３】
ＯＲ回路２１には、３つのＲＥＡＤタイミング生成回路５ａ〜５ｃからLatch Enable信号(Active High)であるＬＡＴ＿ＥＮ＿Ａ信号１０８ａ、ＬＡＴ＿ＥＮ＿Ａ信号１０８ｂ、ＬＡＴ＿ＥＮ＿Ｃ信号１０８ｃがそれぞれ入力される。該当するデバイスから読み出されたＤＴ＿ＢＵＳ信号は双方向バス４を通り、ＬＡＴ＿ＥＮ＿Ａ信号１０８ａ〜ＬＡＴ＿ＥＮ＿Ｃ信号１０８ｃのいずれかの信号が“１”の場合に、図１の回路と同様にラッチ回路６にラッチされる。
【００４４】
次にＲＤ＿ＥＮＢ＿Ａ、ＲＤ＿ＥＮＢ＿Ｂ、ＲＤ＿ＥＮＢ＿Ｃ信号(Active Low)により、ラッチ回路６にラッチしていたデータをＤＴ＿ＢＵＳ１０１に出力する。
【００４５】
ＨＷ＿ＷＡＩＴ＿Ａ、ＨＷ＿ＷＡＩＴ＿Ｂ、ＨＷ＿ＷＡＩＴ＿Ｃ信号(Active Low)は、ＲＥＡＤタイミング生成回路５ａ〜５ｃ内にあるデコーダ（図示せず）がカウンタ出力＝「１」〜「８」をデコードした時にアクティブになる。また、第１の実施形態と同様に、ＨＷ＿ＷＡＩＴ＿Ａ〜ＨＷ＿ＷＡＩＴ＿Ｃ信号が有効（Active Low）になるまで、ソフトウェアでＣＰＵ１にウエイトがかかるようにする。
【００４６】
図５、６で説明した、デバイスと一対の双方向バッファを用いて、デバイス出力データの遅延分を遮断する接続では、デバイスとＦＰＧＡ間にデバイスの個数分のローカルＤＡＴＡ  ＢＵＳ（ＩＤＴ＿ＢＵＳ１１５）接続が必要であった。
【００４７】
しかし、本実施形態では、図４に示すようにＤＡＴＡ  ＢＵＳの接続口は１箇所で済む。そのため、ＦＧＰＡのＩ／Ｏ数を大幅に抑えることができる。  本実施形態のようにＣＰＵバスに応答が遅いデバイスを複数接続する場合は、[『遅いデバイス』〜ＦＰＧＡ間のバス本数]×[遅いデバイス個数]分、削減できるＩ／Ｏ数が増加し効果が大きい。Ｉ／Ｏ数削減によって、より小型のパッケージを採用可能である。或いは、余ったＩ／Ｏを他の用途に割り当てるなど、設計の自由度が増すという効果が得られる。
【００４８】
また、図４に示したようにＲＥＡＤタイミング生成回路５ａ〜５ｃはデバイス２ａ〜２ｃにそれぞれ最適化するために個別に設けるが、双方向バッファ４及びラッチ回路６は１個あればよく、共用可能である。その理由は、双方向バッファ４及びラッチ回路６は各デバイスへ同時にアクセスすることが無いことと、ＲＤ＿ＥＮＢ＿Ａ信号１０９ａ〜ＲＤ＿ＥＮＢ＿Ｃ信号１０９ｃ、ＬＡＴ＿ＥＮ＿Ａ信号１０８ａ〜ＬＡＴ＿ＥＮ＿Ｃ信号１０８ｃをそれぞれ論理ＯＲしているためである。
【００４９】
なお、上記実施形態ではバスアクセスタイミング制御回路はＦＰＧＡに内蔵されたＦＰＧＡの機能の一部として説明したが、専用のチップで実現してもよい。
【００５０】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
ＣＰＵ（中央演算装置）から、応答が遅くかつ出力遅延差が大きいデバイスへのＲＥＡＤアクセスのタイミングを制御するバスアクセスタイミング制御回路であって、
前記ＲＥＡＤアクセスを検出し、バスサイクルをカウントして、前記バスサイクルを伸長するウエイト信号を生成し、ラッチタイミング及び出力タイミングを生成するタイミング生成回路と、前記デバイスから出力されたデータを一時保持するラッチ回路と、前記ラッチ回路と接続され、前記ＣＰＵ及び前記デバイスとのインタフェースとなるバッファを設けたことを特徴とするバスアクセスタイミング制御回路。
（付記２）
前記タイミング生成回路は、前記出力遅延が最大時と最小時で重複する時間ができるように前記デバイスに対する第１のリードイネーブル信号の時間幅を設定する付記１に記載のバスアクセスタイミング制御回路。
（付記３）
前記タイミング生成回路は、前記出力遅延が最大でも最小でもラッチできるタイミングで前記デバイスからの出力データをラッチする付記１または２に記載のバスアクセスタイミング制御回路。
（付記４）
ラッチした前記デバイスからの出力データを、前記デバイスからのデータ読み出しとぶつからないタイミングで前記バッファに第２のリードイネーブル信号を出力して前記ラッチ回路から前記ＣＰＵに前記出力データを出力する付記１から３のいずれか１項に記載のバスアクセスタイミング制御回路。
（付記５）
前記ウエイト信号は、前記ラッチした前記デバイスからの出力データが前記第２のリードイネーブル信号を出力できるまで継続する付記１から４のいずれか１項に記載のバスアクセスタイミング制御回路。
（付記６）
前記デバイスが複数接続され、各々のデバイスに対してＲＥＡＤアクセスを行うタイミングを制御する付記１から５のいずれか１項に記載のバスアクセスタイミング制御回路。
（付記７）
前記タイミング生成回路は、ＲＥＡＤ信号とアドレスデコード信号が入力される微分回路、前記微分回路からの出力を受けてカウント出力を行うカウンタ回路、前記カウンタ回路のカウンタ出力の値によって動作する複数のデコーダを備えた付記１から６のいずれか１項に記載のバスアクセスタイミング制御回路。
（付記８）
前記複数のデコーダは、
前記微分回路の出力を受けて前記カウンタにカウントを開始させる第１のデコーダ、
前記出力遅延が最大時と最小時で重複する時間ができるように前記デバイスに対する第１のリードイネーブル信号の時間幅を設定する第２のデコーダ、
前記ラッチ回路に前記デバイスから読み出した出力データをラッチさせるラッチイネーブル信号を出力する第３のデコーダ、
デバイスから読み出した前記出力データを、前記デバイスからの出力とぶつからず、しかも、前記ＣＰＵのＲＥＡＤタイミングに対して適切なタイミングで前記ラッチ回路から前記ＣＰＵに出力させる第２のリードイネーブル信号を出力する第４のデコーダ、
前記ラッチした前記デバイスからの出力データが前記第２のリードイネーブル信号を出力できるまで継続するウエイト信号を出力する第５のデコーダ、
である付記７に記載のバスアクセスタイミング制御回路。
（付記９）
【００５１】
前記バッファは双方向バッファであり、前記ＣＰＵ及び前記デバイスとデータバスで接続され、前記デバイスからの出力データの取り込みと前記出力データの前記ＣＰＵへの出力を行う付記１から８のいずれか１項に記載のバスアクセスタイミング制御回路。
（付記１０）
【００５２】
前記出力遅延差が大きいデバイスは、前記出力遅延量の最小値と最大値の差が前記ＣＰＵの動作クロック幅を超えるデバイスである請求項１から９のいずれか１項に記載のバスアクセスタイミング制御回路。
（付記１１）
ソフトウェア・ウエイトの後に前記バスサイクルの伸長を行う付記１から１０に記載のバスアクセスタイミング制御回路。
（付記１２）
前記カウンタ回路は、所定のカウント値までカウントしたら停止し、再びＲＥＡＤ信号があるまで待機状態となる付記１から１１のいずれか１項に記載のバスアクセスタイミング制御回路。
【符号の説明】
【００５３】
１    ＣＰＵ
２    デバイス
３    アドレス・デコーダ
４    双方向バッファ
５    ＲＥＡＤタイミング生成回路
６    ラッチ回路
７、１２、２１    ＯＲ回路
８    ＦＰＧＡ
９    他回路
１０    バスアクセスタイミング制御回路
１１    カウンタ
１３、１４    Ｄ−Ｆ／Ｆ
１５、２２、２３    ＡＮＤ回路
１６、１７、１８、１９、２０    デコーダ
１０１    ＤＴ＿ＢＵＳ
１０２    ＡＤ＿ＢＵＳ信号
１０３    ＣＳ信号
１０４    ＲＤ信号
１０５    ＣＬＫ信号
１０６    アドレスデコード信号
１０７    ＲＤ＿ＳＦＴ信号
１０８    ＬＡＴ＿ＥＮ信号
１０９    ＲＤ＿ＥＮＢ信号
１１１    カウンタ出力信号
１１２    カウント・イネーブル信号
１１３    ＬＡＴ＿ＤＡＴＡ
１１４    ＨＷ＿ＷＡＩＴ信号
１１５    ＩＤＴ＿ＢＵＳ（ローカルＤＡＴＡ ＢＵＳ）
【図１】
0006580815.tif 000002
【図２】
0006580815.tif 000003
【図３】
0006580815.tif 000004
【図４】
0006580815.tif 000005
【図５】
0006580815.tif 000006
【図６】
0006580815.tif 000007