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