(57)【要約】      （修正有）【課題】マスタデバイスがデータの出力完了後にクロック信号の供給を停止する場合であっても、ブリッジ回路がマスタデバイスから受信したデータを最後までスレーブデバイスに出力する。【解決手段】ブリッジデバイスは、データの入出力完了後に第１のクロック信号の出力を停止するマスタデバイスと、データに応じて制御されるスレーブデバイスと通信できるブリッジデバイスであって、第１のクロック信号に応じてデータを取得する取得手段と、取得手段により取得されたデータを記憶する記憶手段と、記憶手段に記憶されたデータを読み出して、スレーブデバイスに対して出力する出力手段と、を有する。出力手段は、マスタデバイスから入力される第１のクロック信号と異なる第２のクロック信号が入力され、第２のクロック信号に応じてデータを出力する。【選択図】図３
2020035336.tif 000002
【特許請求の範囲】
【請求項１】
第１のクロック信号とデータを出力し、データの入出力が完了したことに応じて前記第１のクロック信号の出力を停止する第１のデバイスと、前記第１のデバイスから出力された前記データに応じて制御される第２のデバイスと通信することのできるブリッジデバイスにおいて、
前記第１のデバイスから入力される前記第１のクロック信号に応じて前記第１のデバイスから出力されたデータを取得する取得手段と、
前記取得手段により取得されたデータを記憶する記憶手段と、
前記記憶手段に記憶されたデータを読み出して、前記第２のデバイスに対して出力する出力手段と、を有し、
前記出力手段は、前記第１のデバイスから入力される前記第１のクロック信号と異なる第２のクロック信号が入力され、前記第２のクロック信号に応じて前記データを出力することを特徴とするブリッジデバイス。
【請求項２】
前記出力手段は、前記第２のデバイスへのデータを出力している間、前記第１のデバイスから入力される前記第１のクロック信号と異なる前記第２のクロック信号を前記第２のデバイスに対して出力することを特徴とする請求項１に記載のブリッジデバイス。
【請求項３】
前記出力手段は、前記第２のデバイスへのデータの出力が完了したことに応じて、前記第２のデバイスに対する前記第２のクロック信号の出力を停止することを特徴とする請求項２に記載のブリッジデバイス。
【請求項４】
前記出力手段に供給される前記第２のクロック信号は、前記第１のデバイスから前記取得手段に供給される前記第１のクロック信号と異なるクロック供給手段により供給されるクロック信号であることを特徴とする請求項１乃至３のいずれか一項に記載のブリッジデバイス。
【請求項５】
前記記憶手段は、前記第１のデバイスから入力される前記第１のクロック信号が立ち上がるタイミングで、前記第１のデバイスから入力されるデータを記憶することを特徴とする請求項１乃至４のいずれか一項に記載のブリッジデバイス。
【請求項６】
前記出力手段に入力される前記第２のクロック信号は、前記第１のデバイスから入力される前記第１のクロック信号よりも周波数の高いクロック信号であること特徴とする請求項１乃至５のいずれか一項に記載のブリッジデバイス。
【請求項７】
前記第２のデバイスはメモリデバイスであり、
前記取得手段は、前記第２のデバイスに書き込まれるデータを前記第１のデバイスから取得し、
前記出力手段は、前記第２のデバイスに書き込まれる前記データを出力することを特徴とする請求項１乃至６のいずれか一項に記載のブリッジデバイス。
【請求項８】
前記第２のデバイスからデータを読み出す読出手段をさらに有し、
前記読出手段により読み出されたデータを前記第１のデバイスに入力する入力手段と、を有することができることを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記ブリッジデバイスは複数の前記第２のデバイスを接続することができ、
前記出力手段は、前記第２のデバイスのそれぞれに前記第２のクロック信号を供給することを特徴とする請求項１乃至８のいずれか一項に記載のブリッジデバイス。
【請求項１０】
前記出力手段から前記第２のデバイスへの前記第２のクロック信号の供給を制御する制御手段をさらに有することを特徴とする請求項１乃至９のいずれか一項に記載のブリッジデバイス。
【請求項１１】
前記制御手段は、前記第１のデバイスから入力されたアドレスに基づいて、前記第２のデバイスへのクロック信号の供給を制御することを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記制御手段は、前記第１のデバイスから入力された前記アドレスで指定されない前記第２のデバイスに対して、前記第２のクロック信号の供給を停止することを特徴とする請求項１１に記載のブリッジデバイス。
【請求項１３】
前記第２のクロック信号は、前記第２のデバイスが前記出力手段から出力されたデータを受信するのに用いられるクロック信号であることを特徴とする請求項１乃至１２のいずれか一項に記載のブリッジデバイス。
【請求項１４】
前記記憶手段は、前記第１のデバイスから入力されたアドレスを格納することを特徴とする請求項１乃至１３のいずれか一項に記載のブリッジデバイス。
【請求項１５】
前記記憶手段は、前記第１のデバイスから入力されたオペコードを格納することを特徴とする請求項１乃至１４のいずれか一項に記載のブリッジデバイス。
【請求項１６】
請求項１乃至１５のいずれか一項を有する情報処理装置。
【請求項１７】
第１のクロック信号とデータを出力し、データの入出力が完了したことに応じて前記クロック信号の出力を停止する第１のデバイスと、前記第１のデバイスから出力された前記データに応じて制御される第２のデバイスと通信することのできるブリッジデバイスの制御方法であって、
前記第１のデバイスから入力される前記第１のクロック信号に応じて前記第１のデバイスから出力されたデータを取得する取得工程と、
前記取得工程において取得されたデータを記憶する記憶工程と、
前記記憶工程において記憶されたデータを読み出して、前記第２のデバイスに対して出力する出力工程と、を有し、
前記出力工程は、前記第１のデバイスから入力される前記第１のクロック信号と異なる第２のクロック信号に応じて前記データを出力することを特徴とするブリッジデバイスの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブリッジデバイスとブリッジデバイスの制御方法、ならびに当該ブリッジデバイスを有する情報処理装置に関する。
【背景技術】
【０００２】
情報処理装置において、コントローラのメインバスには、メモリコントローラを介してＣＰＵが実行するソフトウェアの動作ログなどを記憶するメモリが接続される。
【０００３】
メモリコントローラとメモリとは、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）等のシリアルインタフェースの規格に則って接続される。このとき、メモリコントローラはマスタデバイスとして動作し、メモリはマスタデバイスにより制御されるスレーブデバイスとして動作する。ＳＰＩの規格に則った通信は、クロック信号を転送するクロック信号線と、データを転送するデータ信号線と、を用いて行われる。マスタデバイスはクロック信号線にクロック信号を供給し、データ信号線にデータを出力する。スレーブデバイスは、マスタデバイスからクロック信号線を介して入力されるクロック信号に合わせて、データを受信する。
【０００４】
特許文献１には、ブリッジデバイスを用いて、マスタデバイスと複数のスレーブデバイスを接続し、マスタデバイスが複数のスレーブデバイスを制御することが記載されている。特許文献１に記載の装置は、マスタデバイスから供給されるクロック信号がブリッジデバイスとスレーブデバイスに供給されている。ブリッジデバイスとスレーブデバイスはともにマスタデバイスから供給されるクロック信号で動作する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１０５２８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
バッファを備えたブリッジデバイスでは、マスタデバイスから入力されたデータを一度バッファに格納し、そのデータを読み出して出力回路からスレーブデバイスに対して出力する。そのため、出力回路によるデータの出力は、データをバッファに格納した分だけマスタデバイスからのデータの入力に比べて遅くなる。
【０００７】
上記のようなブリッジデバイスにおいて、ＱＳＰＩ（Ｑｕａｄ  ＳＰＩ）という規格でデータ通信を行うとする。ＱＳＰＩの規格に則った通信において、マスタデバイスはデータの入出力を完了するとともに、クロック信号の出力を停止する。すなわち、マスタデバイスはデータの入出力を完了すると、ブリッジデバイスの入力回路と出力回路へのクロック信号の供給を停止する。
【０００８】
マスタデバイスが入力回路へのデータ入力が完了したときに出力回路へのクロック供給を停止すると、出力回路がバッファに格納されたデータを最後までスレーブデバイスに出力する前に出力回路へのクロック信号の供給が停止されてしまう。したがって、出力回路はバッファに格納されたデータを最後までスレーブデバイスに出力できない。
【０００９】
本発明は、上記の課題を鑑みて、マスタデバイスがデータの出力完了後にクロック信号の供給を停止する場合であっても、ブリッジ回路がマスタデバイスから受信したデータを最後までスレーブデバイスに出力することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に記載のブリッジデバイスは、第１のクロック信号とデータを出力し、データの入出力が完了したことに応じて前記第１のクロック信号の出力を停止する第１のデバイスと、前記第１のデバイスから出力された前記データに応じて制御される第２のデバイスと通信することのできるブリッジデバイスにおいて、前記第１のデバイスから入力される前記第１のクロック信号に応じて前記第１のデバイスから出力されたデータを取得する取得手段と、
前記取得手段により取得されたデータを記憶する記憶手段と、前記記憶手段に記憶されたデータを読み出して、前記第２のデバイスに対して出力する出力手段と、を有し、前記出力手段は、前記第１のデバイスから入力される前記第１のクロック信号と異なる第２のクロック信号が入力され、当該クロック信号に応じて前記データを出力することを特徴とする。
【発明の効果】
【００１１】
本発明に記載のブリッジデバイスは、マスタデバイスがデータの出力完了後にクロック信号の供給を停止する場合であっても、ブリッジ回路がマスタデバイスから受信したデータを最後までスレーブデバイスに出力することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態における情報処理装置の概要を示す図である。
【図２】本実施形態における情報処理装置のコントローラ部のブロック図である。
【図３】本実施形態におけるＱＳＰＩマスタデバイスとＱＳＰＩブリッジデバイス、ＱＳＰＩスレーブデバイスの詳細を示す図である。
【図４】本実施形態におけるＱＳＰＩの規格に則ったライトアクセスのタイミングチャートである。
【図５】本実施形態におけるＱＳＰＩの規格に則ったリードアクセスのタイミングチャートである。
【図６】本実施形態におけるＱＳＰＩスレーブデバイスのメモリマップの一例を示す図である。
【図７】本実施形態のＱＳＰＩブリッジデバイスにおけるライトアクセス時のタイミングチャートを示す図である。
【図８】本実施形態のＱＳＰＩブリッジデバイスにおけるリードアクセス時のタイミングチャートを示す図である。
【図９】本実施形態のライトアクセス時のブリッジデバイスの実行する処理を示すフローチャートである。
【図１０】本実施形態のリードアクセス時のブリッジデバイスの実行する処理を示すフローチャートである。
【発明を実施するための形態】
【００１３】
＜第１の実施形態＞
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の実施例において示す構成は一例にすぎず、本発明は図示された構成に限定されるものではない。
【００１４】
図１は、本実施例に係る情報処理装置として動作するデジタル複合機の構成の一例を示すブロック図である。スキャナ部１０１０は、原稿を光学的に読み取って画像データに変換する。また、スキャナ部１０１０は、原稿を光学的に読み取るためのレーザ光源やレンズ等からなる原稿読取部１０１２と、原稿を搬送するベルト等からなる原稿搬送部１０１１とで構成される。プリンタ部１０４０は、記録媒体（用紙）を搬送し、その上に画像データを可視画像として印刷する。プリンタ部１０４０は、用紙を給紙する給紙部１０４２、画像データを用紙に転写、定着させる転写定着部１０４１、印刷された用紙をソート、ステイプルして機外へ搬出する排紙部１０４３で構成される。
【００１５】
コントローラ部１０２０は、スキャナ部１０１０、プリンタ部１０４０と電気的に接続され、さらにＬＡＮ、ＩＳＤＮ、インターネット／イントラネット等のネットワーク１０５０と接続されている。ユーザがコピー機能を利用する場合、コントローラ部１０２０は、スキャナ部１０１０を制御して原稿の画像データを取得し、プリンタ部１０４０を制御して画像を用紙に印刷し出力する。また、スキャン機能を利用する場合、スキャナ部１０１０を制御して原稿の画像データを取得してコードデータに変換し、ネットワーク１０５０を介してホストＰＣ（不図示）等へ送信する。また、プリント機能を利用する場合、ホストＰＣからネットワーク１０５０を介して受信した印刷データ（コードデータ）を画像データに変換し、プリンタ部１０４０を制御して画像を用紙に印刷して出力する。また、ＩＳＤＮ等からデータを受信してプリントするＦＡＸ受信機能やＩＳＤＮ等へスキャンしたデータを送信するＦＡＸ送信機能も有する。また、これら各機能における処理の実行指示をジョブと呼び、画像処理装置１０００は各機能に対応するジョブに従って所定の処理を実行する。操作部１０３０は、ユーザが入力操作を行うためのユーザインタフェースであり、例えばタッチパネルや各種ボタンで構成される。
【００１６】
図２は、本実施例に係る、コントローラ部１０２０の内部構成を示すブロック図である。以下、コントローラ部１０２０を構成する各要素について説明する。
【００１７】
ＣＰＵ１１１０は、システム全体を制御するプロセッサーである。ＣＰＵ１１１０は、ＲＡＭ１１９１に展開されたＯＳや制御プログラムに従って、プリント処理やスキャン処理といったジョブ処理を統括的に制御する。
【００１８】
ＲＯＭコントローラ１１２０は、システムのブートプラグラムを格納しているＲＯＭ１１９０にアクセスするための制御モジュールである。画像処理装置１０００の電源がＯＮされた時に、ＣＰＵ１１１０はＲＯＭコントローラ１１２０を介してＲＯＭ１１９０にアクセスし、ＣＰＵ１１１０がブートする。
【００１９】
ＲＡＭコントローラ１１３０は、システムの制御プログラムや画像データが格納されるＲＡＭ１１９１にアクセスするための制御モジュールである。ＲＡＭコントローラ１１３０は、ＲＡＭ１１９１の設定や制御を行うためのレジスタを備えており、このレジスタは、ＣＰＵ１１１０からアクセス可能である。操作部インターフェース１１４０は、ユーザが操作部１０３０を操作した操作指示の受付及び操作結果の表示の制御を行う。
【００２０】
スキャン画像処理部１１５１は、スキャナ部１０１０で取得した画像データに対し、シェーディング補正処理、ＭＴＦ補正処理、ガンマ補正処理、フィルタ処理といったスキャナ用画像処理を行う。また、スキャン画像処理部１１５１は、静電ノイズの影響による異常周期の同期信号を検出し、検出した異常周期の同期信号のマスク処理および、異常周期の同期信号の数をカウントする機能を持つ。
【００２１】
プリント画像処理部１１５０は、プリンタ部１０４０で使用する画像データのための色空間変換処理、中間調処理、ガンマ補正処理といったプリント用画像処理を行う。プリント用画像処理を施し、処理後の画像データをプリンタ部１０４０へ出力する。
【００２２】
ＨＤＤ１１９２は、システムソフトウェアやアプリケーションプログラム、画像データと各画像データに対応するページ情報やジョブ情報を格納する。ＨＤＤ１１９２は、ＨＤＤコントローラ１１６０を介してシステムバス１１００に接続されており、ＣＰＵ１１１０の指示に従ってデータの書き込みや読み出しを行う。
【００２３】
ＬＡＮコントローラ１１７０はＰＨＹ１１９３を介してネットワーク１０５０に接続し、外部のホストコンピュータとの間で画像データなどの情報の入出力を行う。
【００２４】
モデム１１７２は図示しない公衆回線に接続し、ＦＡＸ送信やＦＡＸ受信ジョブを処理する際に外部のＦＡＸ機器とデータ通信を行う。レンダリング部１１５２は、ネットワーク１０５０からＬＡＮコントローラ１１７０を経由して受信した画像データ（ＰＤＬデータ）を、プリンタ部１０４０で取り扱い可能なビットマップデータに変換する。
【００２５】
ＱＳＰＩマスタデバイス４１０は、ＱＳＰＩブリッジデバイス４１１を介してＱＳＰＩ  Ｉ／Ｆを持つメモリデバイスなどのＱＳＰＩスレーブ４１２、４１３にアクセスするための制御モジュールである。ＱＳＰＩマスタデバイス４１０とＱＳＰＩブリッジデバイス４１１は第１のＱＳＰＩ  Ｉ／Ｆ４２０で接続される。
【００２６】
ＱＳＰＩブリッジデバイス４１１は、第１のＱＳＰＩ  Ｉ／Ｆ４２０を介してＱＳＰＩマスタデバイス４１０から転送されたデータをＱＳＰＩスレーブデバイス４１２、４１３に転送する。ＱＳＰＩブリッジデバイス４１１は第２のＱＳＰＩ  Ｉ／Ｆ４２１を介してＱＳＰＩスレーブデバイス４１２と接続される。また、ＱＳＰＩブリッジデバイス４１１は第３のＱＳＰＩ  Ｉ／Ｆ４２２を介してＱＳＰＩスレーブデバイス４１３と接続される。
【００２７】
ＱＳＰＩスレーブデバイス４１２、４１３は、ＱＳＰＩ  Ｉ／Ｆを有するＦＲＡＭ（登録商標）（Ｆｅｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ｍｅｍｏｒｙ）やＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ｍｅｍｏｒｙ）等のメモリデバイスである。本実施形態では、ＱＳＰＩスレーブ４１２，４１３は、ＣＰＵ１１１０が実行するブート処理や、プログラムの実行のログを記録する。なお、本実施形態では、ＱＳＰＩスレーブデバイスとして、メモリデバイスを例に説明するが、ＱＳＰＩスレーブデバイスはこれに限定されるものではない。
【００２８】
本実施形態においては、コントローラ部１０２０は第１のプリント基板に実装され、ＱＳＰＩブリッジデバイス４１１、ＱＳＰＩスレーブデバイス４１２、４１３は第２のプリント基板に実装される。
【００２９】
本実施形態は、図２のようにＱＳＰＩブリッジデバイス４１１を用いて、ひとつのＱＳＰＩマスタデバイス４１０に対して複数のＱＳＰＩスレーブデバイス４１２、４１３を接続することができるように構成される。このようにＱＳＰＩブリッジデバイス４１１を用いることで、ＱＳＰＩマスタデバイス４１０の構成を変えることなく、ＱＳＰＩマスタデバイス４１０に接続されるＱＳＰＩスレーブデバイスの数を増やすことができる。ＱＳＰＩスレーブデバイスがＦＲＡＭ等のメモリである場合、ＱＳＰＩブリッジデバイス４１１を用いて、ＱＳＰＩスレーブデバイスの数を増やし、疑似的にメモリの容量を大きくすることができる。
【００３０】
図３を用いて、本実施形態における、ＱＳＰＩマスタデバイス４１０とＱＳＰＩブリッジデバイス４１１、ＱＳＰＩスレーブデバイス４１２、４１３の詳細を説明する。
【００３１】
ＱＳＰＩブリッジデバイス４１１は、ＱＳＰＩスレーブ回路５０１、ＱＳＰＩマスタ回路５０２、５０３およびＳＣＫゲート回路５３２、５３３で構成される。
【００３２】
ＱＳＰＩマスタデバイス４１０とＱＳＰＩスレーブ回路５０１は、以下に示す６本の信号線を用いてＱＳＰＩの規格に則った通信を行う。
【００３３】
ＣＳ信号線５４３は、ＱＳＰＩマスタデバイス４１０がアクセスするデバイスのアクセス開始を通知するチップセレクト信号を伝送する信号線である。ＳＣＫ信号線５４４は、ＩＯ＿０信号線５４５〜ＩＯ＿３信号線５４８を用いて行われるデータ転送を同期するためのクロック信号を伝送する信号線である。ＱＳＰＩの規格に則った通信では、クロック信号はデータ転送中のみ出力される。データ転送が完了した後、ＱＳＰＩマスタデバイス４１０は、ＣＳ信号をネゲートし、クロック信号の出力を停止する。
【００３４】
ＩＯ＿０信号線５４５〜ＩＯ＿３信号線５４８は、ＱＳＰＩマスタデバイス４１０とＱＳＰＩスレーブ回路５０１とがデータ転送するための信号線である。
【００３５】
ライトバッファ５１１は、ＱＳＰＩマスタデバイス４１０からライトアクセスがなされたときにＱＳＰＩスレーブデバイス４１２、４１３に書き込まれるデータを一時的に格納するバッファである。本実施形態では、ＱＳＰＩスレーブ回路５０１が８クロック分のライトバッファ５１１を備えるものとする。なお、ライトバッファ５１１の容量は上記の容量に限定されるものではない。
【００３６】
ＱＳＰＩスレーブ回路５０１とＱＳＰＩマスタ回路５０２は、信号線５２０を介して接続される。信号線５２０は、ＱＳＰＩマスタデバイス４１０から転送された信号を解析して得られるオペコードを転送るための信号線、アドレスを転送するための信号線、ライトバッファ５１１に格納されたデータを転送するための信号線等で構成される。さらに、信号線５２０は、ＱＳＰＩマスタ回路５０２の動作を制御するためのデータ通信イネーブル信号を転送するための信号線を有する。信号線５２０に含まれる信号線は、ＱＳＰＩスレーブ回路５０１のバッファに接続される。ＱＳＰＩスレーブ回路５０１は、マスタデバイス４１０から入力されるクロック信号に合わせて、バッファにデータを書き込む。ＱＳＰＩマスタ回路５０２は、信号線５５０を介して入力されるクロック信号に合わせて、ＱＳＰＩスレーブ回路５０１に格納されたデータを読み出して、スレーブデバイス４１２に渡す。図３や以下の説明では、簡略化のため信号線５２０と呼称するが、信号線５２０は上記のように複数の信号線で構成される。
【００３７】
ＱＳＰＩスレーブ回路５０１とＱＳＰＩマスタ回路５０３は信号線５２１を介して接続される。信号線５２１の詳細は信号線５２０と同様であるため説明を省略する。
【００３８】
外部クロック信号線５５０は、ＳＣＫ信号線５４４と異なる周波数のクロック信号をＱＳＰＩマスタ回路５０２とＱＳＰＩマスタ回路５０３に供給するための信号線である。本実施形態において、外部クロック信号線５５０を介してＱＳＰＩマスタ回路５０２、５０３に供給されるクロック信号の周波数はＱＳＰＩマスタデバイス４１０からＱＳＰＩスレーブ回路５０１に供給されるクロック信号の周波数よりも速い周波数であるとする。外部クロック信号線５５０にクロック信号を供給する振動子は、ＱＳＰＩマスタデバイス４１０にクロック信号を供給されるクロック信号を供給する振動子と異なる振動子である。
【００３９】
ＱＳＰＩマスタ回路５０２はＳＣＫゲート回路５３２を介して、ＱＳＰＩスレーブデバイス４１２と接続される。ＱＳＰＩマスタ回路５０２とＱＳＰＩスレーブデバイス４１２はＱＳＰＩの規格に則ってデータの転送を行う。なお、ＣＳ信号線５５３、ＳＣＫ信号線５５４、ＩＯ＿０信号線５５５〜ＩＯ＿３信号線５５８についてはＱＳＰＩマスタデバイス４１０とＱＳＰＩスレーブ回路５０１間の信号線と同様であるため説明を省略する。
【００４０】
ＳＣＫゲート回路５３２は、ＱＳＰＩマスタ回路５０２から出力されたクロック信号をゲートし、ＱＳＰＩスレーブデバイス４１２へクロック信号が入力されないよう制御する回路である。たとえば、ＱＳＰＩマスタデバイス４１０からのライトアクセス時にライトバッファが空になった場合に、ＳＣＫゲート回路５３２がＱＳＰＩスレーブデバイス４１２へのクロック信号の供給を一時停止する。また、ＱＳＰＩマスタデバイス４１０からのリードアクセス時に、リードバッファがいっぱいになった場合にＳＣＫゲート回路５３２がＱＳＰＩスレーブデバイスへのクロック信号の供給を停止する。
【００４１】
リードバッファ５１２は、ＱＳＰＩスレーブデバイス４１２から転送されたリードデータを格納するバッファである。本実施形態ではリードバッファ５１２は８クロック分のバッファとするが、バッファの容量はこれに限定されるものではない。
【００４２】
ＱＳＰＩマスタ回路５０３はＳＣＫゲート回路５３３を介してＱＳＰＩスレーブデバイス４１３に接続される。ＱＳＰＩマスタ回路５０３とＱＳＰＩスレーブデバイス４１３はＱＳＰＩの規格に則ってデータの転送を行う。ＱＳＰＩマスタ回路５０３とＱＳＰＩスレーブデバイス４１３の間の構成はＱＳＰＩマスタ回路５０２とＱＳＰＩスレーブデバイス４１２の間の構成と同様であるため説明を省略する。
【００４３】
ＱＳＰＩの規格において、データ転送の開始、終了はマスタ側のデバイスからしか制御することができない。そのため、例えば、ＱＳＰＩマスタデバイス４１０がデータを書き込む際、ライトバッファ５１１がフルになったとしても、ＱＳＰＩスレーブ回路５０１からＱＳＰＩマスタデバイス４１０のデータ転送を停止することができない。そこで、本実施形態では、ＱＳＰＩマスタ回路５０２に供給されるクロック信号の周波数をＱＳＰＩマスタデバイス４１０からＱＳＰＩスレーブデバイス４１２に供給されるクロック信号よりも速くする。それにより、ライトバッファ５１１からのデータの読み出し速度がライトバッファ５１１へのデータの書き込み速度よりも速くなる。そのため、ライトバッファ５１１がフルになるのを抑制することができる。本実施形態では、外部クロックがＱＳＰＩスレーブ回路５０１に供給されるクロック信号の周波数の２倍の周波数であるとする。外部クロックはＱＳＰＩスレーブ回路５０１に供給されるクロック信号の周波数よりもわずかでも速い周波数であればよい。
【００４４】
図４は、ＱＳＰＩの規格でマスタデバイス４１０、または、マスタ回路５０２、５０３がスレーブに対してライトアクセスするときのタイミングチャートである。ＱＳＰＩの規格に則った信号は、オペコード２０１、アドレス２０２、ライトデータ２０３の３つのフェーズで構成される。ＩＯ＿０信号１０５〜ＩＯ＿３で示されるデータ信号線を介して転送されるデータを示すブロックの中に記載される数字はスレーブデバイスがデータを解析するときのビットの順番を示している。ライトデータ２０３においては、ブロックの中の数字の上位の桁がバイト数を示しており、下位の桁が解析する時の順番を示している。
【００４５】
オペコード２０１は、ＱＳＰＩスレーブに対してどのような処理を実行するかを示す信号である。ＣＳ信号１０３がアサートされた後の２クロック分８ビットで送信される。オペコード２０１のフェーズで送信される信号はＩＯ＿３信号１０８の０番目のビットが最も下位のビットであり、ＩＯ＿０信号１０５の７番目のビットが最も上位のビットである。
【００４６】
アドレス２０２はデータのライトを開始するアドレスを指定するための信号である。アドレス２０２はオペコード２０１に続けて送信される、６クロック２４ビットで指定される。ここで、本実施形態で使用されるＱＳＰＩスレーブデバイス４１２、４１３はともに容量が５１２ＫｂｙｔｅのＦＲＡＭであるとする。すなわち、ＱＳＰＩブリッジデバイス４１１には１ＭｂｙｔｅのＦＲＡＭが接続されている。そのため、本実施形態では２４ｂｉｔある信号のうち、０番目のビットから１９番目のビットまでの２０ビットを使ってそれぞれのＱＳＰＩスレーブデバイスのアドレスを指定する。ＱＳＰＩスレーブデバイス４１２は１０番目〜２３番目のビットの信号を無効とする。本実施系形態では無効とされるデータの箇所にＸを記載している。
【００４７】
ライトデータ２０３は、ＱＳＰＩスレーブデバイス４１２または４１３に格納するデータの信号である。ライトデータ２０３のフェーズでは書き込むデータを連続して出力することができる。ライトデータが連続して出力された場合、アドレス２０２で指定されたアドレスからアクセスするアドレスを１つずつインクリメントしながらデータを書き込む。
【００４８】
次に、図５はＱＳＰＩの規格でマスタデバイス４１０、または、マスタ回路５０２、５０３がスレーブにリードアクセスするときのタイミングチャートである。図５のリードデータ３０４における各ブロック内の数字の上位の桁はバイト数を示しており、下位の桁はＱＳＰＩマスタデバイス４１０がデータを受信したときの解析順を示している。
【００４９】
リードコマンドは、オペコード３０１、アドレス３０２、ダミーサイクル３０３、リードデータ３０４のフェーズで構成される。オペコード３０１、アドレス３０２はライトコマンドと同様のため説明を省略する。ダミーサイクル３０３は、スレーブ回路やスレーブデバイスがデータを読み出すのに必要な待ち時間を示すフェーズである。マスタ側のデバイスには、予め接続されるスレーブデバイスで決められているダミーサイクルの数が設定される。マスタ側のデバイスはリードコマンドを出力する際に、予め設定されたサイクル数のクロック信号をダミーサイクル３０３とする。マスタ側のデバイスは、ダミーサイクル３０３の間はデータを受信しても、当該データを無効とする。リードデータ３０４では、アドレス３０２で指定されたアドレスに格納されたデータを取得する。リードデータ３０４では連続してデータを取得することができる。この時、アドレス３０２で指定されたアドレスを先頭とし、アドレスを１ずつインクリメントしながらＱＳＰＩスレーブデバイス４１２、４１３からデータを取得する。
【００５０】
図６は、本実施形態において、ＱＳＰＩマスタデバイス４１０がアドレスフェーズで指定するアドレスと、各アドレスに対応するＱＳＰＩスレーブデバイス４１２、４１３の関係を示す図である。ここでは、アドレスを１６進数で示している。０ｘ００００〜０ｘ０７ＦＦＦＦまではＱＳＰＩスレーブ４１２に対応するアドレスである。０ｘ０８００００から０ｘ０ＦＦＦＦＦまではＱＳＰＩスレーブデバイス４１３に対応するアドレスである。即ち、２進数であらわした際の２０番目のビットが０である場合、当該アクセスはＱＳＰＩスレーブデバイス４１２へのアクセスである。そして、２進数であらわした際の２０番目のビットが１である場合、当該アクセスはＱＳＰＩスレーブデバイス４１３へのアクセスである。このように、本実施形態では、複数のＱＳＰＩスレーブデバイスに対して連続したアドレスを付与する。このようにすることで、複数のＱＳＰＩスレーブデバイスを１つのＱＳＰＩスレーブデバイスであるかのように扱うことができるようになる。すなわち、ＱＳＰＩマスタデバイス４１０から、複数のＱＳＰＩスレーブデバイスを跨ぐようなアクセスを行う際も、アクセスするアドレスをインクリメントするだけで、次のＱＳＰＩスレーブデバイスへとアクセスを切り替えることができるようになる。
【００５１】
続いて、図７と図９を用いてＱＳＰＩブリッジデバイス４１１がＱＳＰＩマスタデバイス４１０からライトアクセスを受け付けたときの動作を説明する。図７は、ＱＳＰＩブリッジデバイス４１１がライトアクセスを受け付けたときのタイミングチャートである。図９は、ＱＳＰＩブリッジデバイス４１１がライトアクセスを受け付けたときの、ＱＳＰＩスレーブ回路５０１の実行する処理と、ＱＳＰＩマスタ回路５０２の実行する処理を示すフローチャートである。ここでは、ＱＳＰＩスレーブデバイス４１２に対するライトアクセスを例に説明する。
【００５２】
図７のＣＳ信号線５４３、ＳＣＫ信号線５４４、ＩＯ＿０信号線５４５〜ＩＯ＿３信号線５４８はＱＳＰＩマスタデバイス４１０とＱＳＰＩスレーブ回路５０１間の各信号線の状態を示している。オペコード７００、アドレス７０１、ライトデータバッファ０〜７  ５１１、ライトポインタ７０３、データ通信イネーブル７０４は、ＱＳＰＩスレーブ回路５０１とＱＳＰＩマスタ回路５０２、５０３との間の信号線５２０、５２１の状態を示している。ライトバッファのリードポインタ７０５は、ＱＳＰＩマスタ回路５０２が管理するライトバッファのアクセス先となるリードポインタである。外部クロック信号線５５０は、ＱＳＰＩマスタ回路５０２、５０３、ＳＣＫゲート回路５３２、５３３へ入力される外部クロック信号を示している。ＳＣＫゲート信号線５５２は、ＱＳＰＩマスタ回路５０２とＳＣＫゲート回路５３２を接続する信号線の状態を示す。ＣＳ信号線５５３、ＳＣＫ信号線５５４、ＩＯ＿０信号線５５５〜ＩＯ＿３信号線５５８は、ＱＳＰＩマスタ回路５０２とＱＳＰＩスレーブデバイス４１２の間の信号線の状態を示す。ＣＳ信号線５６３、ＳＣＫ信号線５６４、ＩＯ＿０信号線５６５〜ＩＯ＿３信号線５６８、ＳＣＫゲート信号線５６２はＱＳＰＩマスタ回路５０３とＱＳＰＩスレーブデバイス４１３との間の信号線の状態を示す。
【００５３】
図９（ａ）は、ＱＳＰＩマスタデバイス４１０からのライトアクセス時に、ＱＳＰＩスレーブ回路５０１の実行する処理を示すフローチャートである。図９（ｂ）は、ＱＳＰＩマスタデバイス４１０からのライトアクセス時に、ＱＳＰＩマスタ回路５０２が実行する処理を示すフローチャートである。
【００５４】
ＱＳＰＩスレーブ回路５０１は、ＣＳ信号がアサートされたか否かを判定する（Ｓ９０１）。Ｓ９０１において、ＱＳＰＩスレーブ回路５０１は、ＣＳ信号線５４３の電圧レベルがＬｏｗレベルであるか否かを判定する。Ｔ１０１において、ＱＳＰＩマスタデバイス４１０がＣＳ信号をＬｏｗレベルにアサートする。ＱＳＰＩスレーブ回路５０１は、ＣＳ信号がＬｏｗレベルにアサートされたことを検知し、処理をＳ９０２に進める。
【００５５】
ＱＳＰＩスレーブ回路５０１は、オペコードを受信し不図示のバッファに格納する（Ｓ９０２）。オペコードが格納されるバッファは、ライトバッファ５１１とは異なるバッファである。
【００５６】
ＱＳＰＩスレーブ回路５０１は、オペ―コードの受信が完了したか否かを判定する（Ｓ９０２）。ＱＳＰＩスレーブ回路５０１は、ＣＳ信号がアサートされてから２クロック分のデータの受信を完了している場合、Ｓ９０３に処理を進める。２クロック分のデータの受信が完了していない場合Ｓ９０２に戻り、オペコードを受信する。Ｔ２０２において、ＱＳＰＩスレーブ回路５０１はオペコードの受信を完了する。Ｔ１０２において、ＱＳＰＩスレーブ回路５０１はオペコードを解析し、オペコード７００を出力する。
【００５７】
続けて、ＱＳＰＩスレーブ回路５０１は、アドレスを受信し、不図示のバッファに格納する（Ｓ９０４）。アドレスが格納されるバッファは、オペコードが格納されるバッファや、ライトバッファとは異なるバッファである。ＱＳＰＩスレーブ回路５０１はオペコードの受信が完了したのち、受信されたオペコードをバッファに格納する。ＱＳＰＩスレーブ回路５０１は、アドレスの受信が完了したか否かを判定する（Ｓ９０５）。オペコードの受信完了後、６クロック分のデータを受信した場合、ＱＳＰＩスレーブ回路５０１はアドレスの受信が完了したと判定し、Ｓ９０６へ処理を進める。６クロック分のデータの受信が完了していない場合、ＱＳＰＩスレーブ回路５０１は、Ｓ９０４の処理を実行する。Ｔ１０３において、ＱＳＰＩスレーブ回路５０１はオペコードの受信を完了する。ＱＳＰＩスレーブ回路５０１は、受信したアドレス７０１を信号線５２０、５２１に出力する。
【００５８】
ＱＳＰＩスレーブ回路５０１は、データ通信イネーブル信号をＨｉｇｈレベルにアサートする（Ｓ９０６）。ＱＳＰＩスレーブ回路５０１は、ＣＳ信号がＬｏｗレベルにアサートされてから８クロック分のデータを受信した後のＴ１０４において、データ通信イネーブル７０４の電圧レベルをＨｉｇｈレベルに設定する。これにより、データ通信イネーブル信号がアサートされる。データ通信イネーブル信号は、ＱＳＰＩマスタ回路５０２，５０３がＱＳＰＩスレーブ回路５０１にアクセスして良いことを示す信号である。
【００５９】
ＱＳＰＩスレーブ回路５０１はＱＳＰＩマスタデバイス４１０からライトデータを受信する（Ｓ９０７）。ＱＳＰＩスレーブ回路５０１は、ＳＣＫ信号線５４４に合わせてライトデータを受信し、ライトバッファへのライトポインタ７０３で指示されるバッファにデータを書き込む。そして、ＱＳＰＩスレーブ回路５０１は、ライトポインタ７０３をインクリメントする（Ｓ９０８）。このとき、ライトポインタが７である場合は、ライトポインタを０に設定する。ライトデータバッファ０〜７のそれぞれに、ＩＯ＿０信号線５４５〜ＩＯ＿３信号線５４７の４ビット分のデータが格納される。
【００６０】
Ｓ９０９において、ＱＳＰＩスレーブ回路５０１はＣＳ信号がネゲートされたか否かを判定する。ＱＳＰＩスレーブ回路５０１は、ＣＳ信号線５４３の電圧レベルがＨｉｇｈレベルであるか否かを判定する。ＣＳ信号線５４３の電圧レベルがＨｉｇｈレベルの場合、ＱＳＰＩスレーブ回路５０１はＣＳ信号がネゲートされたと判定する。ＣＳ信号がネゲートされていない場合、ＱＳＰＩスレーブ回路はＳ９０７に処理を戻す。本実施形態では、Ｔ１０９でＣＳ信号がネゲートされる。ＣＳ信号がネゲートされている場合、ＱＳＰＩスレーブ回路５０１はデータ通信イネーブル７０４の電圧レベルをＬｏｗレベルに設定し、データ通信イネーブル信号をネゲートする（Ｓ９１０）。Ｔ１０９において、ＱＳＰＩスレーブ回路５０１は、データ通信イネーブル７０４の電圧レベルをＬｏｗレベルに設定する。これにより、ＱＳＰＩスレーブデバイス４１２、４１３からＱＳＰＩマスタ回路５０２，５０３へのアクセスを停止することができる。
【００６１】
次に、図９（ｂ）を用いて、ＱＳＰＩマスタ回路５０２の実行する処理を説明する。
【００６２】
ＱＳＰＩマスタ回路５０２は、データ通信イネーブル信号がアサートされているか否かを判定する（Ｓ９１１）。ＱＳＰＩマスタ回路５０２は、信号線５２０を介してデータ通信イネーブル７０４の電圧レベルがＨｉｇｈレベルになるまで、Ｓ９１１に記載の処理を実行する。Ｔ１０５でデータ通信イネーブル７０４の電圧レベルがＨｉｇｈレベルになったことに従って、ＱＳＰＩマスタ回路５０２はＳ９１２に記載の処理を実行する。
【００６３】
ＱＳＰＩマスタ回路５０２は、信号線５２０を介して入力されるアドレス７０１を取得し、取得したアドレスが接続されているＱＳＰＩスレーブデバイス４１２を選択するアドレスであるか否かを判定する（Ｓ９１２）。Ｓ９１２において、ＱＳＰＩマスタ回路５０２は予め自身に接続されるＱＳＰＩスレーブデバイス４１２のアドレスの１９ビット目の値を記憶している。そして、ＱＳＰＩスレーブデバイス４１２は受信したアドレスの１９ビット目の値を参照し、ＱＳＰＩスレーブデバイス４１２へのアクセスであるか否かを判定する。アドレス７０１で指定されるスレーブデバイスがＱＳＰＩマスタ回路５０２に接続されているスレーブデバイスでない場合、ＱＳＰＩマスタ回路５０２は、図９（ｂ）に記載の処理を完了する。
【００６４】
アドレス７０１で指定されているスレーブデバイスがＱＳＰＩマスタ回路５０２に接続されているスレーブデバイスである場合、ＱＳＰＩマスタ回路５０２はＣＳ信号をアサートする（Ｓ９１３）。ＱＳＰＩマスタ回路５０２は、Ｔ１０５においてＣＳ信号線５４３の電圧レベルをＬｏｗレベルに設定する。ＣＳ信号線５５３の電圧レベルがＬｏｗレベルに設定されると、ＱＳＰＩスレーブデバイス４１２へのクロック信号やデータの供給が開始される。
【００６５】
ＣＳ信号のアサートとともに、ＱＳＰＩマスタ回路５０２は、ＳＣＫゲート回路５３２によるクロック信号のゲートを解除する（Ｓ９１４）。ＱＳＰＩマスタ回路５０２は、ＳＣＫゲート信号線５５２の電圧レベルをＬｏｗレベルに設定し、ＳＣＫゲート信号をネゲートする。これにより、ＱＳＰＩスレーブデバイス４１２へのクロック信号の供給が開始される。
【００６６】
ＱＳＰＩマスタ回路５０２は、ＩＯ＿０信号線５５４〜ＩＯ＿３信号線５５８を介してオペコードをＱＳＰＩスレーブデバイス４１２に出力する（Ｓ９１５）。ＱＳＰＩマスタ回路５０２は、信号線５２０を介して、オペコード７００を取得し、４本の信号線を介して、２クロックでオペコードを出力する。
【００６７】
そして、ＱＳＰＩマスタ回路５０２は、ＩＯ＿０信号線５５４〜ＩＯ＿３信号線５５８を介してアドレスをＱＳＰＩスレーブデバイス４１２に出力する（Ｓ９１６）。ＱＳＰＩマスタ回路５０２は、信号線５２０を介してアドレス７０１を取得し、ＱＳＰＩスレーブデバイス４１２に対して出力する。
【００６８】
ＱＳＰＩマスタ回路５０２は、ライトバッファ５１１からデータを読み出す際のリードポインタ７０５の値を取得する（Ｓ９１７）。ＣＳ信号がアサートされ、オペコードとアドレスが受信された後のＴ１０６において、ＱＳＰＩマスタ回路５０２は、リードポインタ７０５を取得する。ＱＳＰＩマスタ回路５０２は、Ｓ９１７で取得したポインタに従って、ライトバッファ５１１からデータを読み出し、ＩＯ＿０信号線５５５〜ＩＯ＿３信号線５５８を介してスレーブデバイス４１２にライトデータを出力する（Ｓ９１８）。
【００６９】
ＱＳＰＩマスタ回路５０２は、ライトバッファ５１１が空になっているか否かを判定する（Ｓ９１９）。ＱＳＰＩマスタ回路５０２は、ライトポインタ７０３とリードポインタ７０５の値を取得する。取得したライトポインタとリードポインタの値が一致した場合、ライトバッファが空になっていると判定する。ライトバッファ５１１が空でない場合、ＱＳＰＩマスタ回路５０２は、Ｓ９２０に処理を進める。ライトバッファ５１１が空である場合、ＱＳＰＩマスタ回路５０２は、Ｓ９２１に処理を進める。たとえば、Ｔ１０７において、ＱＳＰＩマスタ回路５０２は、ライトポインタとリードポインタの値が異なるため、ライトバッファ５１１は空ではないと判定する。
【００７０】
Ｓ９２０において、ＱＳＰＩマスタ回路５０２は、ライトバッファへのリードポインタ７０５の値を１インクリメントする。設定されているリードポインタが７である場合、ＱＳＰＩマスタ回路５０２は、リードポインタを０に設定する。そして、Ｓ９１８処理を戻す。
【００７１】
Ｓ９１９でライトバッファ５１１が空であると判定された場合、ＱＳＰＩマスタ回路５０２は、データ通信イネーブル信号がネゲートされているか否かを判定する（Ｓ９２１）。ＱＳＰＩマスタ回路５０２は、データ通信イネーブル７０４の電圧レベルがＬｏｗレベルである場合、データ通信イネーブル信号がネゲートされていると判定する。
【００７２】
Ｓ９２１において、データ通信イネーブル信号がネゲートされていない場合、ＱＳＰＩマスタデバイス４１０はデータ転送の途中である。そこで、ＱＳＰＩマスタ回路５０２は、以下のＳ９２２〜Ｓ９２４に記載の処理を実行する。
【００７３】
ＱＳＰＩマスタ回路５０２は、ＳＣＫゲート回路５３２を制御し、ＱＳＰＩスレーブデバイス４１２に供給されるクロック信号をゲートする（Ｓ９２２）。これにより、ＱＳＰＩスレーブデバイス４１２へのデータの転送が一時停止される。
【００７４】
そして、ＱＳＰＩマスタ回路５０２は、ライトバッファ５１１が空か否かを改めて判定する（Ｓ９２３）。ＱＳＰＩマスタ回路５０２は、ライトポインタとリードポインタを取得し、取得したライトポインタとリードポインタを比較する。ライトポインタとリードポインタが一致している場合、ＱＳＰＩマスタ回路５０２はライトバッファ５１１が空であると判定する。ライトポインタとリードポインタが異なる値である場合、ＱＳＰＩマスタ回路５０２は、ライトバッファ５１１に読み出していないデータが格納されており、ライトバッファ５１１が空でないと判定する。たとえば、図７のＴ１０８において、リートポインタとライトポインタがともに同じ値となる。そのため、Ｔ１０８においてＱＳＰＩマスタ回路５０２は、読み出していないデータがライトバッファ５１１に格納されておらず、ライトバッファ５１１が空であると判定する。ＱＳＰＩマスタ回路５０２は、クロック信号をＱＳＰＩスレーブデバイス４１２に供給せず、ライトバッファ５１１にデータが溜まるのを待つ。そして、ライトバッファ５１１に読み出していないデータが溜まった後、ＱＳＰＩマスタ回路５０２はＱＳＰＩスレーブデバイス４１２へのクロック信号の供給を再開して、ＱＳＰＩスレーブデバイス４１２へのデータの書き込みを再開する。
【００７５】
ライトバッファ５１１が空の場合、ＱＳＰＩマスタ回路５０２はＳ９２３の処理を繰り返し実行する。ライトバッファ５１１に読み出しデータがない場合、ライトバッファ５１１に読み出すデータが溜まるまで、ＱＳＰＩスレーブデバイス４１２へのクロック供給を停止する。
【００７６】
ライトバッファ５１１が空でなかった場合、ＱＳＰＩマスタ回路５０２は、ＳＣＫゲート回路５３２を制御し、ＱＳＰＩスレーブデバイス４１２へのクロック信号のゲートを解消し、クロック信号の供給を再開する。クロック信号の供給の再開後、ＱＳＰＩマスタ回路５０２は、Ｓ９２０に処理を進める。
【００７７】
Ｓ９２１でデータ信号イネーブル信号がネゲートされている場合、ＱＳＰＩマスタ回路５０２は、ＣＳ信号線５５３の電圧レベルをＨｉｇｈレベルにし、ＣＳ信号をネゲートする（Ｓ９２５）。ライトバッファ５１１に格納されたデータを全て読出し、且つ、ＱＳＰＩマスタデバイス４１０がライトデータの転送を完了している場合、ＱＳＰＩスレーブデバイス４１２へのデータ転送が完了していることとなる。そこで、ＱＳＰＩマスタ回路５０２は、ＱＳＰＩマスタ回路５０２とＱＳＰＩスレーブデバイス４１２間のＣＳ信号をネゲートし、ＱＳＰＩマスタ回路５０２とＱＳＰＩスレーブデバイス４１２の間の通信を終了する。
【００７８】
本実施形態ではＱＳＰＩマスタ回路５０２からＱＳＰＩスレーブデバイス４１２に供給されるクロック信号の周波数をＱＳＰＩマスタデバイス４１０がＱＳＰＩスレーブ回路５０１に供給するクロック信号の周波数よりも速くする。このようにすることで、ライトバッファ５１１からのデータの読み出し速度が、ＱＳＰＩマスタ回路５０２，５０３がライトバッファ５１１への書き込み速度より速くなる。そのため、ライトバッファ５１１にデータが溜まり、読み出し前のデータでライトバッファ５１１があふれてしまうことを防ぐことができる。一方で、ライトバッファ５１１への書き込みが追い付かず、ライトバッファ５１１が空になる可能性がある。そこで、ＱＳＰＩスレーブデバイスへのクロック供給を停止し、ＱＳＰＩスレーブデバイスへのデータ転送を一時的に停止する。そして、ライトバッファ５１１にデータが溜まった後、再度ＱＳＰＩスレーブデバイスへの転送を再開する。
【００７９】
図９（ｂ）ではＱＳＰＩマスタ回路５０２の実行する処理を説明したが、ＱＳＰＩマスタ回路５０３も図９（ｂ）に示す処理を実行する。ＱＳＰＩマスタ回路５０３が図９（ｂ）に示す処理を実行する際には、ＱＳＰＩマスタ回路５０３はＳ９１２において受信したアドレスがＱＳＰＩスレーブデバイス４１３を示すアドレスか否かを判定する。
【００８０】
続いて、ＱＳＰＩブリッジデバイス４１１のリードアクセス時の処理について、図８と図１０を用いて詳しく説明する。図８はＱＳＰＩマスタデバイス４１０からリードコマンドが発行された場合の処理の流れを示すタイミングチャートである。なお、本実施形態においては、ＱＳＰＩマスタデバイス４１０がＱＳＰＩスレーブデバイス４１２からデータを読み出すとする。
【００８１】
図８のリードバッファからのリードポインタ８００は、ＱＳＰＩマスタ回路５０３のリードバッファ５１２に格納されたデータを読み出す場合のアクセス先となるバッファを示すポインタである。リードバッファへのライトポインタ８０１は、ＱＳＰＩマスタ回路５０２，５０３リードバッファ５１２、５１３へデータを格納するときのアクセス先となるバッファを示すポインタである。
【００８２】
図１０（ａ）は、ＱＳＰＩマスタデバイス４１０がリードコマンドを発行した場合の、ＱＳＰＩスレーブ回路５０１の実行する処理を示すフローチャートである。
【００８３】
ＱＳＰＩスレーブ回路５０１はＣＳ信号がアサートされた否かを判定する（Ｓ１００１）。時刻Ｔ２０１において、ＱＳＰＩマスタデバイス４１０はＱＳＰＩブリッジデバイス４１１に対してリード動作を開始するため、ＣＳ信号線５４３の電圧レベルをＬｏｗレベルに設定する。ＱＳＰＩスレーブ回路５０１は、ＣＳ信号がアサートされたことに従って、Ｓ１００２に処理を進める。
【００８４】
ＱＳＰＩスレーブ回路５０１は、ＱＳＰＩマスタデバイス４１０からＩＯ＿０信号線５４４〜ＩＯ＿３信号線５４８を介してオペコードを受信する（Ｓ１００２）。ＱＳＰＩスレーブ回路５０１はオペコードを受信して、不図示のバッファに格納する。ＱＳＰＩスレーブ回路５０１はオペコードの受信が完了したか否かを判定する（Ｓ１００３）。オペコードの受信が完了している場合、ＱＳＰＩスレーブ回路５０１は処理をＳ１００３以降に進める。オペコードの受信が完了していない場合、ＱＳＰＩスレーブ回路５０１は引き続きオペコードを受信する。時刻Ｔ２０２において、ＱＳＰＩスレーブ回路５０１はＱＳＰＩマスタデバイス４１０からオペコードの受信を完了する。また、ＱＳＰＩスレーブ回路５０１は、受信したオペコードを保持し、信号線５２０，５２１を介してＱＳＰＩマスタ回路５０２，５０３にオペコード７００を出力する。
【００８５】
ＱＳＰＩスレーブ回路５０１はＱＳＰＩマスタデバイス４１０からアドレスを受信する（Ｓ１００４）。ＱＳＰＩスレーブ回路５０１は、受信したアドレス７０１を不図示のバッファに格納し、信号線５２０、５２１を介してＱＳＰＩマスタ回路５０２、５０３に出力する。ＱＳＰＩスレーブ回路５０１は、アドレスの受信を完了したか否かを判定する（Ｓ１００５）。Ｔ２０３においてＱＳＰＩスレーブ回路５０１は、アドレスの受信を完了する。ＱＳＰＩスレーブ回路５０１は受信したアドレスを解析し、アドレスによって指定されるデバイスがＱＳＰＩスレーブデバイス４１２であるか、ＱＳＰＩスレーブデバイス４１３であるかを判定する。以降、ＱＳＰＩスレーブ回路５０１がリードバッファからデータを読み出す際には、Ｓ１００５で判別されたＱＳＰＩスレーブデバイスと接続されるＱＳＰＩマスタ回路のリードバッファからデータを読み出す。
【００８６】
時刻Ｔ２０４において、ＱＳＰＩスレーブ回路５０１は、データ通信イネーブル信号をアサートする（Ｓ１００６）。ＱＳＰＩスレーブ回路５０１は、データ通信イネーブル７０４の電圧レベルをＨｉｇｈレベルにする。そして、ＱＳＰＩスレーブ回路５０１は、信号線５２０、５２１を介してＱＳＰＩスレーブデバイス４１２、４１３からリードデータを受信したか否かを判定する（Ｓ１００７）。ＱＳＰＩスレーブ回路５０１はリードデータを受信するまで、Ｓ１００７に記載の処理を繰り替えし実行する。すなわち、ＱＳＰＩスレーブ回路５０１はダミーサイクルの間Ｓ１００７に記載の処理を実行する。ＱＳＰＩスレーブ回路５０１は、リードデータを受信した場合Ｓ１００８に処理を進める。ＱＳＰＩスレーブ回路５０１は、ＩＯ＿０信号線５４５〜ＩＯ＿３信号線３４８を介してＱＳＰＩマスタデバイス４１０に受信したリードデータを送信する。
【００８７】
ＱＳＰＩスレーブ回路５０１は、ＱＳＰＩマスタデバイス４１０の出力するＣＳ信号がネゲートされたか否かを判定する（Ｓ１００９）。ＱＳＰＩスレーブ回路５０１は、ＣＳ信号線５４３の電圧レベルがＨｉｇｈレベルである場合、ＣＳ信号がネゲートされたと判定する。ＱＳＰＩスレーブ回路５０１は、データ通信イネーブル信号をネゲートする（Ｓ１０１０）。Ｔ２０９でＱＳＰＩマスタデバイス４１０がＣＳ信号をネゲートした後、Ｔ２１０でＱＳＰＩスレーブ回路５０１がデータ通信イネーブル７０４の電圧レベルをＬｏｗレベルに設定する。
【００８８】
図１０（ｂ）は、ＱＳＰＩマスタ回路５０２の実行する処理を示すフローチャートである。
【００８９】
ＱＳＰＩマスタ回路５０２は、データ通信イネーブル信号がアサートされたか否かを判定する（Ｓ１０１１）。Ｓ１０１１において、ＱＳＰＩマスタ回路５０２は、データ通信イネーブル７０４の電圧レベルがＨｉｇｈレベルである場合に、データ通信イネーブル信号がアサートされていると判定する。Ｔ２０５において、データ通信イネーブル７０４がアサートされるまで、ＱＳＰＩマスタ回路５０２は、Ｓ１００９に記載の処理を実行する。
【００９０】
データ通信イネーブル信号がアサートされた後、ＱＳＰＩマスタ回路５０２は、信号線５２０を介して受信されるアドレス７０１が接続されているＱＳＰＩスレーブデバイス４１２を指定するアドレスであるか否かを判定する（Ｓ１０１２）。信号線５２０を介して受信されたアドレス７０１がＱＳＰＩスレーブデバイス４１２を指定するアドレスである場合、Ｓ１０１３以降の処理を実行する。信号線５２０を介して受信されたアドレスがＱＳＰＩスレーブデバイス４１２を指定するアドレスでない場合、図１０（ｂ）に記載の処理を終了する。
【００９１】
ＱＳＰＩマスタ回路５０２は、ＣＳ信号をアサートする（Ｓ１０１３）。Ｔ２０５において、ＱＳＰＩマスタ回路５０２は、ＣＳ信号線５４３の電圧レベルをＬｏｗレベルに設定し、ＣＳ信号をアサートする。そして、ＱＳＰＩマスタ回路５０２は、ＳＣＫゲート信号線５５２の電圧レベルをＬｏｗレベルに設定しＳＣＫゲート信号をアサートする（Ｓ１０１４）。
【００９２】
ＱＳＰＩマスタ回路５０２は、ＩＯ＿０信号５５４〜ＩＯ＿３信号５５７を介してオペコードをＱＳＰＩスレーブデバイス４１２に送信する（Ｓ１０１５）。続けて、ＱＳＰＩマスタ回路５０２は、ＩＯ＿０信号５５４〜ＩＯ＿３信号５５７を介してアドレスをＱＳＰＩスレーブデバイス４１２に送信する（Ｓ１０１６）。そして、ＱＳＰＩマスタ回路５０２は、リードバッファ５１２へアクセスする際のライトポインタを読み出す（Ｓ１０１７）。Ｔ２０６において、リードバッファへのライトポインタ８０１を取得する。
【００９３】
ＱＳＰＩマスタ回路５０２は、ＱＳＰＩスレーブデバイス４１２からリードデータを受信し、Ｓ１０１７で読み出したライトポインタで示されるリードバッファ５１２に受信したリードデータを格納する（Ｓ１０１８）。なお、本実施形態においては、リードコマンドの発行時のダミーサイクルは３サイクルであるとするが、サイクル数は上記のサイクル数に限らない。
【００９４】
ＱＳＰＩマスタ回路５０２は、データ通信イネーブル信号がネゲートされたか否かを判定する（Ｓ１０１９）。ＱＳＰＩマスタ回路５０２は、データ通信イネーブル７０４の電圧レベルがＬｏｗレベルであると判定した場合、データ通信イネーブル信号がネゲートされたと判定する。データ通信イネーブル信号がネゲートされている場合、ＱＳＰＩマスタデバイス４１０からのアクセスが完了している場合であるため、ＱＳＰＩマスタ回路５０２は図１０（ｂ）に記載の処理を完了する。
【００９５】
データ通信イネーブル信号がネゲートされていない場合、ＱＳＰＩマスタ回路５０２は、リードバッファがいっぱいになったか否かを判定する（Ｓ１０２０）。ＱＳＰＩマスタ回路５０２は、リードバッファ５１２にアクセスする際のライトポインタ８０１とリードポインタ８００の値を比較する。ＱＳＰＩマスタ回路５０２は、ライトポインタ８０１とリードポインタ８００の値が一致している場合にリードバッファ５１２がいっぱいであると判定する。リードバッファ５１２がいっぱいでない場合、ＱＳＰＩマスタ回路５０２はライトポインタの値を１インクリメントする（Ｓ１０２１）。
【００９６】
リードバッファがいっぱいである場合、ＱＳＰＩマスタ回路５０２は、ＳＣＫ信号をネゲートし、ＱＳＰＩスレーブデバイス４１２にＳＣＫ信号が入力されないよう制御する（Ｓ１０２２）。たとえば、Ｔ２０７では、リードバッファ５１２に対するライトポインタとリードポインタの値が一致している。ＱＳＰＩマスタ回路５０２は、リードバッファ５１２がいっぱいであると判定し、ＳＣＫゲート信号線５５２の電圧レベルをＨｉｇｈレベルに設定する。これにより、クロック信号がＱＳＰＩスレーブデバイス４１２に入力されないよう制御する。
【００９７】
ＱＳＰＩマスタ回路５０２は、リードバッファがいっぱいであるかを判定する（Ｓ１０２３）。Ｓ１０２３において、ＱＳＰＩマスタ回路５０２は、リードバッファ５１２に対するライトポインタとリードポインタを比較する。ライトポインタとリードポインタが一致する場合、リードバッファ５１２がいっぱいであると判定する。
【００９８】
リードバッファ５１２がいっぱいでなくなった場合、ＱＳＰＩマスタ回路５０２は、ＳＣＫゲート信号線５５２の電圧レベルをＬｏｗレベルに設定して、ＳＣＫゲート回路５３２によるクロック信号のゲートを解除する（Ｓ１０２４）。これにより、ふたたびＱＳＰＩスレーブデバイス４１２にクロック信号が供給される。たとえば、Ｔ２０８のようにリードポインタとライトポインタの値が異なる場合、ＱＳＰＩマスタ回路５０２はリードバッファ５１２がいっぱいでないと判定する。すなわり、リードバッファ５１２はＱＳＰＩスレーブデバイス４１２から読み出したデータを格納することができる。この場合、ＱＳＰＩマスタ回路５０２はＱＳＰＩスレーブデバイス４１２へのクロック信号のゲートを解除し、リードデータの読み出しを再開する。
【００９９】
Ｓ１０１９において、データ通信イネーブル信号がネゲートされてた場合、ＱＳＰＩマスタ回路５０２は、ＣＳ信号線５５３の電圧レベルをＨｉｇｈレベルにし、ＣＳ信号をネゲートする（Ｓ１０２５）。以上で図１０に記載の処理を完了する。
【０１００】
本実施形態では、ＱＳＰＩマスタ回路５０２、５０３に、ＱＳＰＩスレーブ回路５０１に供給されるクロック信号よりも速い周波数のクロック信号を供給する。そのため、ＱＳＰＩマスタデバイス４１０がリード要求を発行した際の、リードバッファ５１２、５１３からの読み出しがリードバッファへの書き込みよりも遅くなる。そして、リードバッファ５１２、５１３が読出しの完了していないデータでいっぱいになってしまう場合がある。そこで、リードバッファ５１２、５１３が読出しの完了していないデータでいっぱいになった場合に、ＱＳＰＩマスタ回路５０２、５０３はＱＳＰＩスレーブデバイス４１２，４１３へのクロック信号の供給を一時停止する。そして、ＱＳＰＩマスタ回路５０２、５０３は、ＱＳＰＩスレーブデバイス４１２，４１３からのデータの読み出しを一時的に停止し、ＱＳＰＩスレーブ回路５０１によるリードバッファ５１２からのデータの読み出しのみを実行する。このようにすることで、リードバッファ５１２、５１３のあふれによるデータの消失を防ぐことができる。
【０１０１】
上述のように、ブリッジデバイスを用いてＱＳＰＩマスタデバイスとＱＳＰＩスレーブデバイスを接続する場合に、ＱＳＰＩマスタデバイスから供給されるクロック信号と異なるクロック信号をＱＳＰＩスレーブデバイスに供給する。そして、ＱＳＰＩスレーブに供給されるクロック信号は、少なくともブリッジデバイスとＱＳＰＩスレーブデバイスがデータの転送を行っている間継続して供給される。このようにすることで、ブリッジデバイスが最後までＱＳＰＩデバイスとデータの転送を行うことができる。
【０１０２】
また、ブリッジデバイスは、ＱＳＰＩマスタデバイスから供給されるクロック信号よりも速い周波数のクロック信号をＱＳＰＩスレーブデバイスに供給する。このようにすることで、ブリッジデバイス内のバッファが、ＱＳＰＩマスタデバイスから転送されたデータであふれることなく、ブリッジデバイスに転送されたデータをＱＳＰＩスレーブデバイスに転送することができる。
【０１０３】
＜その他の実施形態＞
なお、本実施形態においては、ＱＳＰＩスレーブ回路５０１、ＱＳＰＩマスタ回路５０２、５０３を用いて図９、図１０に記載の処理を実行するとして説明した。ＣＰＵがブリッジデバイスを制御し、当該処理を実行するとしてもよい。
【０１０４】
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア（プログラム）をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム又は装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムコードを読み出して実行する処理である。この場合、そのコンピュータプログラム、及び該コンピュータプログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
2020035336.tif 000003
【図２】
2020035336.tif 000004
【図３】
2020035336.tif 000005
【図４】
2020035336.tif 000006
【図５】
2020035336.tif 000007
【図６】
2020035336.tif 000008
【図７】
2020035336.tif 000009
【図８】
2020035336.tif 000010
【図９】
2020035336.tif 000011
【図１０】
2020035336.tif 000012