(57)【特許請求の範囲】
【請求項１】
第１デバイスと、同一アドレスが設定された複数の第２デバイスとを接続する複数のバスのそれぞれに、前記第１デバイスから各第２デバイスへのデータ転送を行なう第１バッファと各第２デバイスから前記第１デバイスへのデータ転送を行なう第２バッファとを備え、
前記同一アドレスを用いた、前記第１デバイスから前記複数の第２デバイスへのデータ一斉送信要求に応じて、前記第１バッファを前記第１デバイスから各第２デバイスへのデータ転送許可状態に切り替えるとともに前記第２バッファを各第２デバイスから前記第１デバイスへのデータ転送禁止状態に切り替える切替制御部と、
前記データ一斉送信要求に応じて各第２デバイスから前記第１デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第１デバイスへ返送する疑似応答生成部と、を有する、バス制御装置。
【請求項２】
各第２デバイスから前記応答信号を受信して前記応答信号の状態を保存する保存部と、
前記第１デバイスからの状態返送要求に応じて、前記保存部から前記応答信号の状態を読み出して前記第１デバイスへ返送する返送制御部と、を有する、請求項１に記載のバス制御装置。
【請求項３】
前記切替制御部は、前記返送制御部からの前記応答信号の状態が異常を示す場合の再送信要求に応じて、前記第１バッファを前記第１デバイスから各第２デバイスへのデータ転送許可状態に切り替えるとともに前記第２バッファを各第２デバイスから前記第１デバイスへのデータ転送禁止状態に切り替え、前記第１デバイスに前記データ一斉送信要求を再実行させる、請求項２に記載のバス制御装置。
【請求項４】
前記切替制御部は、前記返送制御部からの前記応答信号の状態が異常を示す場合の再送信要求に応じて、前記異常に対応する第２デバイスを特定し、特定された第２デバイスに対応する前記第１バッファのみを前記データ転送許可状態に切り替え、前記第１デバイスに前記データ一斉送信要求を再実行させる、請求項２に記載のバス制御装置。
【請求項５】
前記切替制御部は、前記複数の第２デバイスのうちの特定の第２デバイスにおけるデータの読出要求に応じて、前記特定の第２デバイスに対応する前記第１バッファおよび前記第２バッファを前記データ転送許可状態に切り替え、前記第１デバイスに前記特定の第２デバイスにおけるデータの読出を実行させる、請求項１〜請求項４のいずれか一項に記載のバス制御装置。
【請求項６】
前記第１バッファおよび前記第２バッファは、それぞれスリーステートバッファによって構成され、
前記切替制御部は、各スリーステートバッファの制御入力端子への制御信号を切り替えることにより、前記データ転送許可状態もしくは前記データ転送禁止状態への切替を制御する、請求項１〜請求項５のいずれか一項に記載のバス制御装置。
【請求項７】
前記第１バッファおよび前記第２バッファのそれぞれに、各バッファからの転送対象の出力もしくは各バッファへの転送対象の入力を接断するスイッチを接続し、
前記切替制御部は、各スイッチの接断状態を切り替えることにより、前記データ転送許可状態もしくは前記データ転送禁止状態への切替を制御する、請求項１〜請求項５のいずれか一項に記載のバス制御装置。
【請求項８】
前記バスは、シリアルインタフェースバスであり、
前記複数の第２デバイスに対し前記同一アドレスを設定することにより、前記第１デバイスから前記複数の第２デバイスへの前記データ一斉送信要求が実行される、請求項１〜請求項７のいずれか一項に記載のバス制御装置。
【請求項９】
第１デバイスと、
同一アドレスが設定された複数の第２デバイスと、
前記第１デバイスと前記複数の第２デバイスとの間でデータ転送を行なうバスを制御するバス制御装置と、を備え、
前記バス制御装置は、
前記第１デバイスと前記複数の第２デバイスとを接続する複数のバスのそれぞれに備えられ、前記第１デバイスから各第２デバイスへのデータ転送を行なう第１バッファと各第２デバイスから前記第１デバイスへのデータ転送を行なう第２バッファとを有し、
前記同一アドレスを用いた、前記第１デバイスから前記複数の第２デバイスへのデータ一斉送信要求に応じて、前記第１バッファを前記第１デバイスから各第２デバイスへのデータ転送許可状態に切り替えるとともに前記第２バッファを各第２デバイスから前記第１デバイスへのデータ転送禁止状態に切り替える切替制御部と、
前記データ一斉送信要求に応じて各第２デバイスから前記第１デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第１デバイスへ返送する疑似応答生成部と、を有する、データ転送システム。
【請求項１０】
第１デバイスと、同一アドレスが設定された複数の第２デバイスとを接続する複数のバスのそれぞれに、前記第１デバイスから各第２デバイスへのデータ転送を行なう第１バッファと各第２デバイスから前記第１デバイスへのデータ転送を行なう第２バッファとを備えるデータ転送システムにおいて、
切替制御部が、前記同一アドレスを用いた、前記第１デバイスから前記複数の第２デバイスへのデータ一斉送信要求に応じて、前記第１バッファを前記第１デバイスから各第２デバイスへのデータ転送許可状態に切り替えるとともに前記第２バッファを各第２デバイスから前記第１デバイスへのデータ転送禁止状態に切り替え、
疑似応答生成部が、前記データ一斉送信要求に応じて各第２デバイスから前記第１デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第１デバイスへ返送する、バス制御方法。
【請求項１１】
前記切替制御部は、前記疑似応答生成部を前記データ転送許可状態又は前記データ転送禁止状態に切り替え、
前記疑似応答生成部が前記データ転送許可状態である場合、前記疑似応答生成部は前記疑似応答信号を前記第１デバイスへ返送し、前記疑似応答生成部が前記データ転送禁止状態である場合、前記第２デバイスから前記第１デバイスへデータが送信される、請求項１〜請求項８のいずれか一項に記載のバス制御装置。
【請求項１２】
前記切替制御部は、前記疑似応答生成部を前記データ転送許可状態又は前記データ転送禁止状態に切り替え、
前記疑似応答生成部が前記データ転送許可状態である場合、前記疑似応答生成部は前記疑似応答信号を前記第１デバイスへ返送し、前記疑似応答生成部が前記データ転送禁止状態である場合、前記第２デバイスから前記第１デバイスへデータが送信される、請求項９に記載のデータ転送システム。
【請求項１３】
前記切替制御部は、前記疑似応答生成部を前記データ転送許可状態又は前記データ転送禁止状態に切り替え、
前記疑似応答生成部が前記データ転送許可状態である場合、前記疑似応答生成部は前記疑似応答信号を前記第１デバイスへ返送し、前記疑似応答生成部が前記データ転送禁止状態である場合、前記第２デバイスから前記第１デバイスへデータが送信される、請求項１０に記載のバス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス制御装置、データ転送システム、及びバス制御方法に関する。
【背景技術】
【０００２】
複数のデバイス間でデータのやり取りを行なう通信方式としては、様々な通信方式がある。特に、同一基板上などにおいて近距離に配置されたデバイス間では、シリアルインタフェースによりデータを伝送するＩ２Ｃ（Inter-Integrated Circuit）通信方式が用いられる場合がある。
【０００３】
Ｉ２Ｃ通信方式において、デバイス間を接続するＩ２Ｃバスは、通常２線式であり、２本の信号線、つまりＳＤＡ（シリアルデータ）信号線とＳＣＬ（シリアルクロック）信号線とで構成される。
【０００４】
Ｉ２Ｃバスに接続される各デバイスは、マスタデバイスとスレーブマスタとのいずれか一方に分類される。また、通常、各デバイスには、固有のＩ２Ｃアドレスが設定される。
【０００５】
例えば図１７（Ａ）および図１７（Ｂ）に示すように、一のマスタデバイス（I2C Master）１００に対し、一組のＩ２Ｃバス３００を介して、複数（図中３個）のスレーブデバイス（I2C Slave）２００が接続される。
【０００６】
なお、図１７（Ａ）および図１７（Ｂ）は、一般的なＩ２Ｃツリー構成およびＩ２Ｃの通信手順を説明する図である。また、以下の説明では、３個のスレーブデバイスのうちの一つを特定する場合には符号２００−１，２００−２，２００−３が用られ、任意のスレーブデバイスを指す場合には符号２００が用いられる。
【０００７】
図１７（Ａ）および図１７（Ｂ）に示す例では、スレーブデバイス２００−１，２００−２，２００−３には、それぞれＩ２Ｃスレーブアドレス（I2C Address）として0xA0, 0xA1, 0xA2が設定されている。
【０００８】
そして、マスタデバイス１００は、Ｉ２Ｃスレーブアドレスによって通信相手のスレーブデバイス２００を指定し、指定したスレーブデバイス２００との間でシリアルにデータ転送を行なう。Ｉ２Ｃ通信方式では、オープンドレインで信号線を接続するようになっており、一組のＩ２Ｃバス３００に、一のマスタデバイス１００と二以上のスレーブデバイス２００とを繋げることが可能になっている。
【０００９】
Ｉ２Ｃ通信方式の仕様上、マスタデバイス１００は、スレーブデバイス２００に対し１対１のアクセスを行なう。マスタデバイス１００からのコマンドを受け取ったスレーブデバイス２００は、自身へのアクセスを認知すると応答信号（ＡＣＫ；Acknowledge）を返信するまで、Ｉ２Ｃバス３００を占有する。
【００１０】
例えば、マスタデバイス１００がスレーブデバイス２００−３内のレジスタに対する書込み（ライト）を行なう場合、マスタデバイス１００は、図１７（Ａ）に示すように、Ｉ２Ｃバス３００へのデータ出力を行なう。つまり、マスタデバイス１００は、スレーブデバイス２００−３のアドレス（0xA2）とライト指示（write）とライト対象のレジスタアドレス（Reg add）とライトデータ（図示略）とをＩ２Ｃバス３００（ＳＤＡ信号線）へシリアルに出力する。これにより、スレーブデバイス２００−３は、アドレス0xA2を自分へのアクセスとして認知し、対象レジスタへのライトを完了してＡＣＫを返信するまでＩ２Ｃバスを占有する。なお、図１７（Ｂ）には、マスタデバイス１００がスレーブデバイス２００−１内のレジスタに対するライトを行なう場合の例が示されており、マスタデバイス１００は、スレーブデバイス２００−３以外のスレーブデバイス２００に対しても上述と同様にライトを行なう。
【００１１】
マスタデバイス１００が複数のスレーブデバイス２００にアクセスし同一データのライトを行なう場合、図１７（Ａ）や図１７（Ｂ）に示す処理が、例えば図１８に示すように繰り返しシリアルに行なわれる。図１８では、一のマスタデバイス（ＭＤと略記）が５個のスレーブデバイス（それぞれＳＤ＃１〜ＳＤ＃５と略記）に対してライト（Write）アクセスを行なう際の処理手順（ステップＳ１０１〜Ｓ１２０）が示されている。
【００１２】
このとき、図１８に示すように、まず、ＭＤは、ＳＤ＃１のアドレスを指定し、ＳＤ＃１に対しライトアクセス開始信号“Ｈ(High；１)”を含むライトコマンドを送信する（ステップＳ１０１）。ＳＤ＃１は、ＭＤからのアドレスによって自身に対するライトコマンドを認知すると、当該ライトコマンドを受信し（ステップＳ１０２）、当該ライトコマンドに応じた書込みを行なった後、ＡＣＫ信号“Ｌ(Low；０)”をＭＤへ送信する（ステップＳ１０３）。ＭＤは、ＳＤ＃１からＡＣＫ信号を受信すると（ステップＳ１０４）、ＳＤ＃２に対するアクセスを、上述したＳＤ＃１に対する処理（ステップＳ１０５〜Ｓ１０８）と同様の手順で行なう。以下、同様に、ＭＤは、ＳＤ＃３に対するアクセス（ステップＳ１０９〜Ｓ１１２）、ＳＤ＃４に対するアクセス（ステップＳ１１３〜Ｓ１１６）、ＳＤ＃５に対するアクセス（ステップＳ１１７〜Ｓ１２０）を順次実行する。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２０１３−１７５１２８号公報
【特許文献２】特開２００６−１１９２６号公報
【特許文献３】特開２０１０−１２８９０９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
上述のように、各ＳＤに一意のアドレスが設定されている場合に各ＳＤに対し同一データを書き込む際には、図１８に示すように、ＳＤの数だけ、同様の処理がシリアルに繰り返される。例えば一のＭＤとＮ個（Ｎは２以上の整数）のＳＤとを有するサーバ装置等の立上げ時に、同じ初期値をＩ２Ｃ通信方式によって各ＳＤに設定する場合、ＭＤは、同様の処理をＮ回繰り返すことになる。したがって、ＭＤが最初のＳＤに対する書込みを開始してから最後のＳＤに対する書込みを完了するまでに要する時間は、ＳＤの数Ｎに比例して増大する。つまり、ＳＤの数Ｎが多くなるほど、当該装置の立上げ処理（データ転送処理）に多大な時間を要し、極めて非効率的である。
【００１５】
そこで、Ｉ２Ｃ通信方式では、例えば図１９に示すように、複数のＳＤ２００に同一のＩ２Ｃアドレス（例えば0xA2）を設定することで、ＭＤ１００から複数のＳＤ２００に対するデータ一斉送信つまりＩ２Ｃマルチキャストが行なわれる。これにより、ＭＤ１００は、複数のＳＤ２００に対し同時にライトアクセスを行なうことが可能である。しかし、このとき、バス３００上で各ＳＤ２００からの応答信号（ＡＣＫ）が衝突し、ＭＤ１００とＳＤ２００との間でやり取りされるデータが壊れるなどの不具合が生じる場合がある。このように、単に同一のＩ２Ｃアドレスを複数のＳＤ２００に設定してデータ一斉送信を行なうだけでは、複数のＳＤ２００に対する同時アクセスを正常に実現することができない。
【００１６】
一つの側面で、本発明は、複数のデバイスに対する同時アクセスを実現することを目的とする。
【課題を解決するための手段】
【００１７】
本件のバス制御装置は、第１バッファ，第２バッファ，切替制御部，疑似応答生成部を有する。前記第１バッファは、第１デバイスと、同一アドレスが設定された複数の第２デバイスとを接続する複数のバスのそれぞれに、前記第１デバイスから各第２デバイスへのデータ転送を行なう。前記第２バッファは、各第２デバイスから前記第１デバイスへのデータ転送を行なう。前記切替制御部は、前記同一アドレスを用いた、前記第１デバイスから前記複数の第２デバイスへのデータ一斉送信要求に応じて、前記第１バッファを前記第１デバイスから各第２デバイスへのデータ転送許可状態に切り替えるとともに前記第２バッファを各第２デバイスから前記第１デバイスへのデータ転送禁止状態に切り替える。前記疑似応答生成部は、前記データ一斉送信要求に応じて各第２デバイスから前記第１デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第１デバイスへ返送する。
【発明の効果】
【００１８】
複数のデバイスに対する同時アクセスを実現することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１実施形態のバス制御装置を含むデータ転送システムの構成を示すブロック図である。
【図２】図１に示すＡＣＫ生成部の構成を示すブロック図である。
【図３】図２に示すＡＣＫ生成回路の制御論理を説明する図である。
【図４】（Ａ）および（Ｂ）は図２に示すＡＣＫ生成部の機能を説明するタイミングチャートである。
【図５】（Ａ）〜（Ｅ）は図１に示すＡＣＫチェック部を説明する図で、（Ａ）〜（Ｄ）はＡＣＫチェック部に入力される信号を示すタイミングチャート、（Ｅ）はＡＣＫチェック部の構成および機能を示すブロック図である。
【図６】図１に示すデータ転送システムにおけるＩ２Ｃマルチキャストによる一斉ライト動作時の状態を示す図である。
【図７】本発明の第２実施形態のバス制御装置を含むデータ転送システムの構成を示すブロック図である。
【図８】第２実施形態におけるＩ２Ｃマルチキャストによる一斉ライト動作および一斉リトライ動作を説明する図である。
【図９】第２実施形態における一斉ライト時および一斉リトライ時の切替制御部の動作を説明する図である。
【図１０】第２実施形態における一斉ライト動作および一斉リトライ動作を説明するフローチャートである。
【図１１】第２実施形態におけるＩ２Ｃマルチキャストによる一斉ライト動作および個別リトライ動作を説明する図である。
【図１２】第２実施形態における個別リトライ時の切替制御部の動作を説明する図である。
【図１３】第２実施形態における一斉ライト動作および個別リトライ動作を説明するフローチャートである。
【図１４】第２実施形態におけるＩ２Ｃマルチキャストによる個別リード動作を説明する図である。
【図１５】第２実施形態における個別リード時の切替制御部の動作を説明する図である。
【図１６】第２実施形態における個別リード動作を説明するフローチャートである。
【図１７】（Ａ）および（Ｂ）は一般的なＩ２Ｃツリー構成およびＩ２Ｃの通信手順を説明する図である。
【図１８】一のマスタデバイスが５個のスレーブデバイスに対してライトアクセスを行なう際の処理手順を示す図である。
【図１９】Ｉ２Ｃマルチキャストを説明する図である。
【発明を実施するための形態】
【００２０】
以下に、図面を参照し、本願の開示するバス制御装置、データ転送システム、及びバス制御方法の実施形態について、詳細に説明する。ただし、以下に示す実施形態は、あくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能を含むことができる。そして、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００２１】
〔１〕第１実施形態
〔１−１〕第１実施形態の構成
まず、図１に示すブロック図を参照しながら、本発明の第１実施形態のバス制御装置４を含むデータ転送システム１の構成について説明する。
【００２２】
データ転送システム１は、一のマスタデバイス（I2C Master；ＭＤ；第１デバイス）２と、複数（図中３個）のスレーブデバイス（I2C Slave；ＳＤ；第２デバイス）３とを含む。デバイス２，３によって、各種装置、例えばサーバ装置が構成される。なお、以下の説明では、３個のスレーブデバイスのうちの一つを特定する場合には符号３−１，３−２，３−３が用られ、任意のスレーブデバイスを指す場合には符号３が用いられる。
【００２３】
サーバ装置等の立上げ時にＩ２Ｃ通信方式によって初期値をＭＤ２から各ＳＤ３に設定すべく、ＭＤ２と複数のＳＤ３とは、Ｉ２Ｃバス５ａ，５ｂを介して接続される。ここで、一のＭＤ２にはＩ２Ｃバス５ａが接続され、Ｉ２Ｃバス５ａから３本のＩ２Ｃバス５ｂ−１，５ｂ−２，５ｂ−３が分岐され、３個のＳＤ３−１，３−２，３−３にそれぞれＩ２Ｃバス５ｂ−１，５ｂ−２，５ｂ−３が接続される。なお、以下の説明では、３本のＩ２Ｃバスのうちの一つを特定する場合には符号５ｂ−１，５ｂ−２，５ｂ−３が用られ、任意のＩ２Ｃバスを指す場合には符号５ｂが用いられる。
【００２４】
上述したＩ２Ｃバス５ａ，５ｂや後述するＩ２Ｃバス５ｃ〜５ｅは、シリアルインタフェースバスであり、各バス５ａ〜５ｅは、２本の信号線、つまりＳＤＡ信号線とＳＣＬ信号線とで構成される。また、本実施形態では、ＭＤ２から複数のＳＤ３に対するデータ一斉送信つまりＩ２Ｃマルチキャスト（同時アクセス）を行なうべく、複数のＳＤ３には、同一のＩ２Ｃアドレス（例えば0xA2）が設定される。
【００２５】
ＭＤ２と複数のＳＤ３との間におけるバス５ａ，５ｂ上には、当該バス５ａ，５ｂを制御するバス制御装置４が備えられる。バス制御装置４は、双方向バッファ１０−１，１０−２，１０−３と切替制御部２０と疑似ＡＣＫ生成部３０とＡＣＫチェック部４０とを有する。
【００２６】
双方向バッファ１０−１，１０−２，１０−３は、それぞれ、ＳＤ３−１，３−２，３−３に対応して備えられ、バス５ｂ−１，５ｂ−２，５ｂ−３に介装される。なお、以下の説明では、３個の双方向バッファのうちの一つを特定する場合には符号１０−１，１０−２，１０−３が用られ、任意の双方向バッファを指す場合には符号１０が用いられる。
【００２７】
各双方向バッファ１０は、第１バッファ１０ａおよび第２バッファ１０ｂを有する。
【００２８】
第１バッファ１０ａは、各バス５ｂにおいて一方向つまりＭＤ２から各ＳＤ３へのデータ転送（アクセス）を可能にするもので、例えばスリーステートバッファによって構成される。第１バッファ（スリーステートバッファ）１０ａは、制御入力端子を有し、当該制御入力端子には、制御信号線６ａを介して切替制御部２０が接続されている。第１バッファ１０ａは、切替制御部２０からの制御信号によってイネーブル(enable)／ディセーブル(disable)状態を切替制御される。例えば、本実施形態では、第１バッファ１０ａへの制御信号がＬ(Low)つまり“０”である場合、第１バッファ１０ａは、イネーブル状態となり、ＭＤ２から各ＳＤ３へのデータ転送許可状態に切り替えられる。一方、第１バッファ１０ａへの制御信号がＨ(High)つまり“１”である場合、第１バッファ１０ａは、ディセーブル状態となり、ＭＤ２から各ＳＤ３へのデータ転送禁止状態に切り替えられる。
【００２９】
第２バッファ１０ｂは、各バス５ｂにおいて逆方向つまり各ＳＤ３からＭＤ２へのデータ転送（アクセス）を可能にするもので、例えばスリーステートバッファによって構成される。第２バッファ（スリーステートバッファ）１０ｂは、制御入力端子を有し、当該制御入力端子には、制御信号線６ｂを介して切替制御部２０が接続されている。第２バッファ１０ｂは、切替制御部２０からの制御信号によってイネーブル／ディセーブル状態を切替制御される。例えば、本実施形態では、第２バッファ１０ｂへの制御信号がＬつまり“０”である場合、第２バッファ１０ｂは、イネーブル状態となり、各ＳＤ３からＭＤ２へのデータ転送許可状態に切り替えられる。一方、第２バッファ１０ｂへの制御信号がＨつまり“１”である場合、第２バッファ１０ｂは、ディセーブル状態となり、各ＳＤ３からＭＤ２へのデータ転送禁止状態に切り替えられる。
【００３０】
なお、双方向バッファ１０−１のバッファ１０ａ，１０ｂの制御入力端子には、それぞれ制御信号線６ａ−１，６ｂ−１を介して切替制御部２０が接続される。また、双方向バッファ１０−２のバッファ１０ａ，１０ｂの制御入力端子には、それぞれ制御信号線６ａ−２，６ｂ−２を介して切替制御部２０が接続される。さらに、双方向バッファ１０−３のバッファ１０ａ，１０ｂの制御入力端子には、それぞれ制御信号線６ａ−３，６ｂ−３を介して切替制御部２０が接続される。制御信号線の一つを特定する場合には符号６ａ−１，６ｂ−１，６ａ−２，６ｂ−２，６ａ−３，６ｂ−３が用いられ、任意の制御信号線を指す場合には符号６ａ，６ｂが用いられる。
【００３１】
切替制御部２０は、Ｉ２Ｃバス５ａと当該Ｉ２Ｃバス５ａから分岐するＩ２Ｃバス５ｄとを介してＭＤ２に接続され、ＭＤ２によって制御され、各バッファ１０ａ，１０ｂの状態および疑似ＡＣＫ生成部３０の状態を制御する。なお、切替制御部２０は、ＭＤ２によってアクセスされる各ＳＤ３と同種のデバイスによって構成され、ＭＤ２は、Ｉ２Ｃバス５ａ，５ｄを介しＩ２Ｃ通信によって切替制御部２０の動作を制御可能になっている。このとき、ＭＤ２の書込み対象である各ＳＤ３のアドレス（例えば0xA2）と異なる切替制御部２０固有のＩ２Ｃアドレス（例えば0xA0）が、切替制御部２０に設定される。これにより、ＭＤ２は、各ＳＤ３に対する書込み時に切替制御部２０を誤って動作させることを抑止可能であり、また、切替制御部２０の制御時に各ＳＤ３を誤って動作させることを抑止可能になっている。切替制御部２０の具体的な機能については後述する。
【００３２】
疑似ＡＣＫ生成部（疑似応答生成部）３０は、Ｉ２Ｃバス５ａに介装され、ＭＤ２によるデータ一斉送信（Ｉ２Ｃマルチキャスト）に応じて各ＳＤ３からＭＤ２へ返送されるＡＣＫを模した疑似ＡＣＫ（疑似応答信号）を生成してＭＤ２へ返送する。疑似ＡＣＫ生成部３０は、制御入力端子（後述する疑似ＡＣＫ生成回路３１のイネーブル端子；図２参照）を有し、当該制御入力端子には、制御信号線６−０を介して切替制御部２０が接続されている。
【００３３】
疑似ＡＣＫ生成部３０は、切替制御部２０からの制御信号ACK_ENによってイネーブル／ディセーブル状態を切替制御される。例えば図３に示すように、本実施形態では、疑似ＡＣＫ生成部３０への制御信号ACK_ENがＬつまり“０”である場合、疑似ＡＣＫ生成部３０は、イネーブル状態となり、疑似ＡＣＫを生成する状態（ACK generation）に切り替えられる。一方、疑似ＡＣＫ生成部３０への制御信号ACK_ENがＨつまり“１”である場合、疑似ＡＣＫ生成部３０は、ディセーブル状態となり、Ｉ２Ｃバス５ａの信号をそのまま通過させる状態（Pass through）に切り替えられる。疑似ＡＣＫ生成部３０の具体的な構成および機能については、図２〜図４を参照しながら後述する。
【００３４】
ＡＣＫチェック部４０は、バス５ｂ−１，５ｂ−２，５ｂ−３からそれぞれ分岐するＩ２Ｃバス５ｃ−１，５ｃ−２，５ｃ−３に接続されるとともに、Ｉ２Ｃバス５ｅを介してＭＤ２に接続される。なお、以下の説明では、３本のＩ２Ｃバスのうちの一つを特定する場合には符号５ｃ−１，５ｃ−２，５ｃ−３が用られ、任意のＩ２Ｃバスを指す場合には符号５ｃが用いられる。
【００３５】
ＡＣＫチェック部４０は、少なくとも、エラーフラグレジスタ４３（図５（Ｅ）参照）およびＩ２Ｃコントローラ４４（図５（Ｅ）参照）を有している。エラーフラグレジスタ４３は、各バス５ｂ，５ｃを介して各ＳＤ３からＡＣＫを受信してＡＣＫの状態（０または１）を保存する保存部として機能する。Ｉ２Ｃコントローラ４４は、バス５ｅを介してＭＤ２からの状態返送要求を受けると、当該状態返送要求に応じて、エラーフラグレジスタ４３からＡＣＫの状態を読み出してＭＤ２へ返送する返送制御部として機能する。ＡＣＫチェック部４０の具体的な構成および機能については、図５を参照しながら後述する。
【００３６】
〔１−２〕切替制御部（enable control）
ここで、下記項目［Ａ１］〜［Ａ４］において、切替制御部２０の具体的な切替機能について説明する。切替制御部２０は、バス５ａ，５ｄを介しＭＤ２によって制御され、各双方向バッファ１０におけるスリーステートバッファ１０ａ，１０ｂの制御入力端子への制御信号をＬ（０）またはＨ（１）に切り替える。これにより、切替制御部２０は、各バッファ１０ａ，１０ｂをデータ転送許可状態もしくはデータ転送禁止状態に切り替える。同様に、切替制御部２０は、バス５ａ，５ｄを介しＭＤ２によって制御され、疑似ＡＣＫ生成部３０への制御信号ACK_ENをＬ（０）またはＨ（１）に切り替える。これにより、切替制御部２０は、疑似ＡＣＫ生成部３０を、疑似ＡＣＫを生成する状態、または、Ｉ２Ｃバス５ａの信号をそのまま通過させる状態に切り替える。
【００３７】
［Ａ１］ＭＤ２が複数のＳＤ３へのデータ一斉送信要求つまりＩ２Ｃマルチキャストによる一斉ライト要求を行なう場合、切替制御部２０は、疑似ＡＣＫ生成部３０への制御信号ACK_ENをＬ（０）に切り替え、疑似ＡＣＫ生成部３０を、疑似ＡＣＫを生成する状態に切り替える。さらに、切替制御部２０は、各第１バッファ１０ａへの制御信号をＬ（０）に切り替え、各第１バッファ１０ａをデータ転送許可状態に切り替える一方、各第２バッファ１０ｂへの制御信号をＨ（１）に切り替え、各第２バッファ１０ｂをデータ転送禁止状態に切り替える。このような切替機能の詳細については、図６（第１実施形態）や図８〜図１０（第２実施形態）を参照しながら後述する。
【００３８】
［Ａ２］ＡＣＫチェック部４０のＩ２Ｃコントローラ４４から返送されたＡＣＫの状態が異常（１）を示す際にＭＤ２が全てのＳＤ３に対する一斉リトライ要求（再送信要求）を行なう場合、切替制御部２０は、上記項目［Ａ１］と同様の切替制御を行なう。当該切替制御後、ＭＤ２は、複数のＳＤ３へのデータ一斉送信つまりＩ２Ｃマルチキャストによる一斉ライトを再実行することで、一斉リトライを実行する。
【００３９】
［Ａ３］ＡＣＫチェック部４０のＩ２Ｃコントローラ４４から返送されたＡＣＫの状態が異常（１）を示す際にＭＤ２が異常を示すバスに対応するＳＤ３に対する個別リトライ要求（再送信要求）を行なう場合、切替制御部２０は、以下のような切替制御を行なう。つまり、切替制御部２０は、疑似ＡＣＫ生成部３０への制御信号ACK_ENをＬ（０）に切り替え、疑似ＡＣＫ生成部３０を、疑似ＡＣＫを生成する状態に切り替える。さらに、切替制御部２０は、異常を示すバスに対応するＳＤ３を特定し、特定したＳＤ３に対応する第１バッファ１０ａへの制御信号をＬ（０）に切り替え、当該第１バッファ１０ａをデータ転送許可状態に切り替える。一方、切替制御部２０は、特定したＳＤ３に対応する第１バッファ１０ａ以外の対象外バッファ１０ａ，１０ｂへの制御信号をＨ（１）に切り替え、当該対象外バッファ１０ａ，１０ｂをデータ転送禁止状態に切り替える。当該切替制御後、ＭＤ２は、複数のＳＤ３へのデータ一斉送信つまりＩ２Ｃマルチキャストによる一斉ライトを再実行することで、個別リトライを実行する。このような切替機能の詳細については、図１１〜図１３（第２実施形態）を参照しながら後述する。
【００４０】
［Ａ４］ＭＤ２が複数のＳＤ３のうちの特定のＳＤ３におけるデータを読み出す場合、当該特定のＳＤ３におけるデータの読出要求に応じて、切替制御部２０は、以下のような切替制御を行なう。つまり、切替制御部２０は、疑似ＡＣＫ生成部３０への制御信号ACK_ENをＨ（１）に切り替え、疑似ＡＣＫ生成部３０を、Ｉ２Ｃバス５ａの信号をそのまま通過させる状態に切り替える。さらに、切替制御部２０は、当該特定のＳＤ３に対応する第１バッファ１０ａおよび第２バッファ１０ｂへの制御信号をＬ（０）に切り替え、当該第１バッファ１０ａおよび第２バッファ１０ｂをデータ転送許可状態に切り替える。一方、切替制御部２０は、当該特定のＳＤ３に対応する第１バッファ１０ａおよび第２バッファ１０ｂ以外の対象外バッファ１０ａ，１０ｂへの制御信号をＨ（１）に切り替え、当該対象外バッファ１０ａ，１０ｂをデータ転送禁止状態に切り替える。当該切替制御後、ＭＤ２は、Ｉ２Ｃマルチキャストによる一斉リードを実行することで、特定のＳＤ３に対する個別リードを実行する。このような切替機能の詳細については、図１４〜図１６（第２実施形態）を参照しながら後述する。
【００４１】
なお、切替制御部２０の切替機能［Ａ１］〜［Ａ４］は、各ＳＤ３と同種のデバイスによって実現されているが、ＭＤ２に内蔵されＭＤ２によって実現されてもよい。
【００４２】
〔１−３〕疑似ＡＣＫ生成部（ACK generator）
ついで、図２〜図４を参照しながら、疑似ＡＣＫ生成部３０の具体的な構成および機能について説明する。図２はＡＣＫ生成部３０の構成を示すブロック図、図３は図２に示すＡＣＫ生成回路３１の制御論理を説明する図、図４（Ａ）および図４（Ｂ）はＡＣＫ生成部３０の機能を説明するタイミングチャートである。
【００４３】
図４（Ａ）および図４（Ｂ）は、一般的なＩ２Ｃアクセスのバスにおける信号挙動を示しており、図４（Ａ）は、例えばＩ２Ｃバス５ａのＳＤＡ信号線の信号挙動を示し、図４（Ｂ）は、例えばＩ２Ｃバス５ａのＳＣＬ信号線の信号挙動を示している。ＳＤＡ信号とＳＣＬ信号との状態が開始条件(START condition)Ｓを満たすと、ＭＤ２から各ＳＤ３へのデータ送信が開始される。当該データ送信は、８ビット単位で行なわれ、ＭＤ２が８ビット分のデータ送信を行なうと、当該８ビット分のデータ送信に対する応答信号が、９ビット目のデータとしてＳＤ３からＭＤ２へ返送される。当該応答信号は、Ｌ(Low)状態であれば８ビット分のデータを正常に受信したことを示すＡＣＫになる一方、Ｈ(High)状態であれば８ビット分のデータを正常に受信しなかったことを示すＮＡＣＫになる。
【００４４】
ＭＤ２は、応答信号としてＡＣＫを受信すると、次のコマンド列もしくはデータ列を送信する。図４（Ａ）に示すＳＤＡにおいては、最初の８ビットのうちの７ビットで送信先ＳＤ３のアドレスが指定され、最初の８ビットのうちの１ビットでリードまたはライトが指定される。最初の８ビットに対し９ビット目にＡＣＫが応答されると、次の８ビットで送信先ＳＤ３におけるアクセス対象レジスタのアドレスが指定される。当該アドレスに対し９ビット目にＡＣＫが応答されると、次の８ビットでライトデータもしくはリードデータがやり取りされる。そして、９ビット目にＡＣＫが応答され、ＳＤＡ信号とＳＣＬ信号との状態が停止条件(STOP condition)Ｐを満たすと、ＭＤ２から各ＳＤ３へのアクセスが終了する。
【００４５】
本実施形態では、ＭＤ２が一斉ライト，一斉リトライ，個別リトライを行なう際、各第２バッファ１０ｂをデータ転送禁止状態に切り替えることで、各ＳＤ３からの実際のＡＣＫ（もしくはＮＡＣＫ）がＭＤ２に返送されるのを抑止している。これにより、図１９に示すごとき応答信号の衝突が発生するのを防止している。しかし、各ＳＤ３からのＡＣＫの返送を抑止すると、ＭＤ２は、８ビット分のデータについてのアクセスが完結せず、以降のアクセスを継続することができない。
【００４６】
そこで、疑似ＡＣＫ生成部３０は、図４（Ａ）に示すごとく、ＳＤＡにおいて、ＭＤ２とＳＤ３との間で８ビット単位のデータをやり取りする都度、９ビット目のＳＤＡの状態をＬ(Low)にする。つまり、疑似ＡＣＫ生成部３０は、Ｉ２Ｃバス５ａ上でＳＤ３からＭＤ２への疑似ＡＣＫを生成しＭＤ２に返送する機能を果たす。当該機能を実現すべく、ＡＣＫ生成部３０は、ＣＰＬＤ（Complex Programmable Logic Device），ＦＰＧＡ（Field Programmable Gate Array）等によって構成され、図２に示すように、疑似ＡＣＫ生成回路３１およびクロックカウンタ３２としての機能を有する。
【００４７】
クロックカウンタ３２は、Ｉ２Ｃバス５ａのＳＣＬ信号線に接続され、データ送信開始後に当該ＳＣＬ信号線を通過するクロック数を計数し、９クロック目（９の倍数のクロック）を計数する度にトリガ信号をＡＣＫ生成回路３１に出力する。
【００４８】
疑似ＡＣＫ生成回路３１は、Ｉ２Ｃバス５ａのＳＤＡ信号線に介装し、トリガ端子およびイネーブル端子を有している。前述の通り、イネーブル端子（制御入力端子）に、制御信号線６−０を介して切替制御部２０から制御信号ACK_ENが入力される。図３に示すように、制御信号ACK_ENがＬ(Low)である場合、疑似ＡＣＫ生成回路３１は、イネーブル状態となり、疑似ＡＣＫを生成する状態（ACK generation）に切り替えられる。これにより、疑似ＡＣＫ生成機能が有効化される。一方、制御信号ACK_ENがＨ(High)である場合、疑似ＡＣＫ生成回路３１は、ディセーブル状態となって疑似ＡＣＫ生成機能が無効化され、Ｉ２Ｃバス５ａの信号をそのまま通過させる状態（Pass through）に切り替えられる。
【００４９】
疑似ＡＣＫ生成回路３１は、Ｌ状態の制御信号ACK_ENを入力され疑似ＡＣＫ生成機能を有効化されると、図４に示すタイミングで、Ｉ２Ｃバス５ａのＳＤＡ信号線をＬ状態にする。つまり、疑似ＡＣＫ生成回路３１は、応答信号として疑似ＡＣＫを生成してＩ２Ｃバス５ａのＳＤＡ信号線に出力する。疑似ＡＣＫを生成するタイミング（ＳＤＡをLowにするタイミング）は、トリガ端子にクロックカウンタ３２からのトリガ信号を入力されるタイミング、つまりクロックカウンタ３２がデータ送信を開始してからクロックを９の倍数カウントするタイミングである。
【００５０】
〔１−４〕ＡＣＫチェック部
ついで、図５（Ａ）〜図５（Ｅ）を参照しながら、ＡＣＫチェック部４０の具体的な構成および機能について説明する。図５（Ａ）〜図５（Ｄ）はＡＣＫチェック部４０に入力される信号を示すタイミングチャート、図５（Ｅ）はＡＣＫチェック部４０の構成および機能を示すブロック図である。
【００５１】
前述した通り、本実施形態では、ＭＤ２が一斉ライト，一斉リトライ，個別リトライを行なう際、各第２バッファ１０ｂをデータ転送禁止状態に切り替えることで、各ＳＤ３からの実際のＡＣＫ（もしくはＮＡＣＫ）がＭＤ２に返送されるのを抑止している。これにより、図１９に示すごとき応答信号の衝突が発生するのを防止している。しかし、この場合、ＭＤ２は、実際に各ＳＤ３においてライトアクセスやリトライアクセスに成功しているか否かを確認することができない。
【００５２】
そこで、ＡＣＫチェック部４０は、各ＳＤ３から返送されるＡＣＫ（またはＮＡＣＫ）の状態を保存し、保存した状態を、ＭＤ２からの状態返送要求に応じてＭＤ２へ返送する機能を果たす。これにより、ＭＤ２は、各ＳＤ３からの実際のＡＣＫをチェックすることが可能になっている。当該機能を実現すべく、ＡＣＫチェック部４０は、ＣＰＬＤ，ＦＰＧＡ等によって構成され、図５（Ｅ）に示すように、エラー判断ロジック４１，クロックカウンタ４２，エラーフラグレジスタ４３およびＩ２Ｃコントローラ４４としての機能を有する。
【００５３】
クロックカウンタ４２は、図５（Ｄ）に示すように、Ｉ２Ｃバス５ｃ（バス５ｃ−１，５ｃ−２，５ｃ−３のいずれか）のＳＣＬ信号線に接続される。そして、クロックカウンタ４２は、前述したクロックカウンタ３２と同様、データ送信開始後に当該ＳＣＬ信号線を通過するクロック数を計数し、９クロック目（９の倍数のクロック）を計数する度にトリガ信号（Ｈ（１）状態）をエラー判断ロジック４１に出力する。
【００５４】
エラー判断ロジック４１は、３つのＳＤ３−１，３−２，３−３（Ｉ２Ｃバス５ｃ−１，５ｃ−２，５ｃ−３）にそれぞれ対応するＡＮＤゲート４１１−１，４１１−２，４１１−３を有する。なお、図５において、Ｉ２Ｃバス５ｃ−１，５ｃ−２，５ｃ−３をそれぞれBUS#0, BUS#1, BUS#2と表記する。また、ＳＤＡ信号線の９ビット目のデータは、各ＳＤ３からの応答信号で、“０”の場合、ＡＣＫであり、“１”の場合、ＮＡＣＫである。また、３つのＡＮＤゲートのうちの一つを特定する場合には符号４１１−１，４１１−２，４１１−３が用られ、任意のＡＮＤゲートを指す場合には符号４１１が用いられる。
【００５５】
ＡＮＤゲート４１１−１は、図５（Ａ）に示すＳＤ３−１からのＳＤＡ信号と、９クロック毎に立ち上がるクロックカウンタ４２からのトリガ信号との論理積を出力する。また、ＡＮＤゲート４１１−２は、図５（Ｂ）に示すＳＤ３−２からのＳＤＡ信号と、９クロック毎に立ち上がるクロックカウンタ４２からのトリガ信号との論理積を出力する。同様に、ＡＮＤゲート４１１−３は、図５（Ｃ）に示すＳＤ３−３からのＳＤＡ信号と、９クロック毎に立ち上がるクロックカウンタ４２からのトリガ信号との論理積を出力する。
【００５６】
ＳＤＡ信号は、９クロック毎に、各ＳＤ３からのＡＣＫの状態を示すＡＣＫ／ＮＡＣＫビットになる。当該ＡＣＫ／ＮＡＣＫビットが０(レベルがLow)の場合、各ＳＤ３でのアクセス結果は正常（ＯＫ）である一方、当該ＡＣＫ／ＮＡＣＫビットが１(レベルがHigh)の場合、各ＳＤ３でのアクセス結果は異常（ＮＧ）であると判断することができる。ＡＮＤゲート４１１は、９クロック毎に、Ｈレベルのトリガ信号とＳＤＡ信号のＡＣＫ／ＮＡＣＫビットとの論理積を出力する。これにより、ＡＮＤゲート４１１は、ＡＣＫ／ＮＡＣＫビットが０の場合に正常状態を示す０（ＡＣＫ）を出力し、ＡＣＫ／ＮＡＣＫビットが１の場合に異常状態（エラー状態）を示す１（ＮＡＣＫ）を出力する。
【００５７】
エラーフラグレジスタ（保存部）４３は、３つのＡＮＤゲート４１１−１，４１１−２，４１１−３にそれぞれ対応するBUS#0用ビット４３１−１，BUS#1用ビット４３１−２，BUS#2用ビット４３１−３を有する。なお、３つのビットのうちの一つを特定する場合には符号４３１−１，４３１−２，４３１−３が用られ、任意のビットを指す場合には符号４３１が用いられる。
【００５８】
BUS#0用ビット４３１−１は、ＡＮＤゲート４１１−１の出力が“０”である場合つまりＳＤ３−１でのアクセス結果が正常である場合、“０”を保持する。一方、BUS#0用ビット４３１−１は、ＡＮＤゲート４１１−１の出力が“１”になった場合つまりＳＤ３−１でのアクセス結果が異常である場合、“１”を保存する。
【００５９】
また、BUS#1用ビット４３１−２は、ＡＮＤゲート４１１−２の出力が“０”である場合つまりＳＤ３−２でのアクセス結果が正常である場合、“０”を保持する。一方、BUS#1用ビット４３１−２は、ＡＮＤゲート４１１−２の出力が“１”になった場合つまりＳＤ３−２でのアクセス結果が異常である場合、“１”を保存する。
【００６０】
同様に、BUS#2用ビット４３１−３は、ＡＮＤゲート４１１−３の出力が“０”である場合つまりＳＤ３−３でのアクセス結果が正常である場合、“０”を保持する。一方、BUS#2用ビット４３１−３は、ＡＮＤゲート４１１−３の出力が“１”になった場合つまりＳＤ３−３でのアクセス結果が異常である場合、“１”を保存する。
【００６１】
Ｉ２Ｃコントローラ（返送制御部）４４は、前述した通り、バス５ｅを介してＭＤ２からの状態返送要求を受けると、当該状態返送要求に応じて、エラーフラグレジスタ４３から各ビット４３１に保存されている値（正常の場合０、異常の場合１）を読み出す。このとき、Ｉ２Ｃコントローラ４４は、Ｉ２Ｃバス経由でレジスタ４３にアクセスして各ビット４３１の値を読み出し、当該値が異常を示す場合（１である場合）、その旨をＩ２Ｃバス５ｅを介してＭＤ２へ返送する。なお、異常を示す値“１”を保存するビット４３１がある場合、Ｉ２Ｃコントローラ４４は、当該異常を示すバス５ｃ（当該バス５ｃに接続されるＳＤ３）を特定する識別情報をＭＤ２に返送する。
【００６２】
なお、図５（Ａ）〜図５（Ｅ）では、ＳＤ３−３でのアクセス結果が異常でありＩ２Ｃバス５ｃ−３のＳＤＡ信号の９ビット目のレベルがＨ状態である場合の例が示されている。この場合、ＳＣＬの９クロック目でクロックカウンタ４２のトリガ信号が立ち上がると、ＡＮＤゲート４１１−３の出力がＮＧを示す“１”となり、BUS#2用ビット４３１−３に“１”が保存される。ＭＤ２は、Ｉ２Ｃバス５ｅおよびＩ２Ｃコントローラ４４を介してエラーフラグレジスタ４３を参照することで、ＳＤ３−３でのアクセス結果の異常を認識することができる。これに応じ、ＭＤ２は、上述したような一斉リトライもしくは個別リトライを実行する。
【００６３】
〔１−５〕第１実施形態の動作
次に、上述のごとき構成および機能を有する第１実施形態のバス制御装置４の動作について、図１〜図６を参照しながら説明する。なお、図６は、図１に示すデータ転送システム１におけるＩ２Ｃマルチキャスト（データ一斉送信）による一斉ライト動作時の状態を示す図である。
【００６４】
図１に、ＭＤ２から複数のＳＤ３に対して一斉に同時アクセスすることを可能にする構成が示されている。図１に示すように、ＭＤ２と複数のＳＤ３との間には、双方向バッファ１０，切替制御部２０，疑似ＡＣＫ生成部３０およびＡＣＫチェック部４０が介装されている。
【００６５】
ＭＤ２から複数のＳＤ３に対して一斉に同時アクセスすることを実現するには、図１９を参照しながら前述したように、複数のＳＤ３に同一のＩ２Ｃアドレス（例えば0xA2）を設定する。これにより、ＭＤ２から複数のＳＤ３に対する同時アクセス（Ｉ２Ｃマルチキャスト）を行なうことが可能になる。しかし、図１９を参照しながら前述したように、複数のＳＤ３からの応答が衝突してしまう。
【００６６】
このような応答の衝突を回避すべく、各双方向バッファ１０には、スリーステートバッファである第１バッファ１０ａおよび第２バッファ１０ｂが備えられる。第１バッファ１０ａおよび第２バッファ１０ｂは、切替制御部２０によってイネーブル／ディセーブル制御される。このとき、図６に示すように、第１バッファ１０ａをイネーブル状態とし且つ第２バッファ１０ｂをディセーブル状態とする。これに伴い、双方向バッファ１０は、ＭＤ２から各ＳＤ３へのアクセスを行なうことは可能であるが、各ＳＤ３からＭＤ２へのデータ送信を行なえない状態になる。これにより、各ＳＤ３からの応答信号の衝突を確実に抑止でき、ＭＤ２とＳＤ３との間でやり取りされるデータが壊れるなどの不具合の発生を確実に防止できる。
【００６７】
このとき、各ＳＤ３からＭＤ２への第２バッファ１０ｂをディセーブル状態にすることで、各ＳＤ３からＭＤ２への応答（ＡＣＫ）が返送されなくなる。ＡＣＫが返送されないままではアクセスが完結しない。そこで、バス制御装置４では、図２〜図４を参照しながら前述したように、イネーブル状態の疑似ＡＣＫ生成部３０によって図６に示すごとく疑似ＡＣＫが生成されてＭＤ２に返送される。これにより、ＭＤ２は、アクセス（例えばＳＤ３に対するライトコマンド処理）を確実に完結させることができる。
【００６８】
また、本実施形態では、複数のＳＤ３のうちの一つのみ（特定ＳＤ３）に対するアクセスも可能にすべく、疑似ＡＣＫ生成部３０も、切替制御部２０によってイネーブル／ディセーブル制御される。特定ＳＤ３のみに対しアクセスする際には、上記項目［Ａ４］の切替機能で説明したように、疑似ＡＣＫ生成部３０はディセーブル状態に切り替えられる。また、同時に、特定ＳＤ３に対応するバッファ１０ａ，１０ｂのみがデータ転送許可状態にされ、その他のバッファ１０ａ，１０ｂはデータ転送禁止状態にされる。これにより、ＭＤ２は、同一のアドレスを設定された複数のＳＤ３に対しＩ２Ｃマルチキャストを行なっても、特定ＳＤ３のみを対象とするアクセスを、従来通り行なうことができる。
【００６９】
さらに、項目［Ａ１］の切替機能で説明したように、一斉ライト時には、ＭＤ２からＳＤ３方向への第１バッファ１０ａをイネーブル状態とすることで、全てのＳＤ３へのアクセス経路が有効化されデータ転送許可状態に切り替えられる。また、ＳＤ３からＭＤ２方向への第２バッファ１０ｂをディセーブル状態することで、ＭＤ２へのアクセス経路が無効化されデータ転送禁止状態に切り替えられる。この状態で、ＭＤ２は、特定のアドレス（例えば0xA2）に対しアクセス（コマンド）を実施すれば、全てのＳＤ３は、当該アクセスを自身へのアクセスであると認識し応答（ＡＣＫ）を返送する。この応答のＭＤ２への返送は禁止されるが、図６に示すように、疑似ＡＣＫ生成部３０によって生成された疑似ＡＣＫがＭＤ２へ送信されるため、ＭＤ２もコマンドが実行されたものと認識し、当該コマンドの処理が終了する。
【００７０】
さて、本実施形態では、疑似ＡＣＫ生成部３０によってＡＣＫを疑似的に生成しているため、ＭＤ２は、疑似ＡＣＫを受けても、実際のライトアクセス（一斉ライト）に成功しているか否かを確認することができない。そこで、本実施形態では、図５を参照しながら前述したＡＣＫチェック部４０が備えられている。
【００７１】
ＡＣＫチェック部４０は、各ＳＤ３に接続されるＩ２Ｃバス５ｃ（ＳＤＡ信号線）の挙動を監視しており、ＭＤ２は、ＡＣＫチェック部４０による監視結果を参照することで、各ＳＤ３において正常にアクセスが完了したか否かを判断する。つまり、ＡＣＫチェック部４０は、ＭＤ２からのアクセスについて、９クロックを計数する都度、各ＳＤ３のバス５ａのＳＤＡ信号のレベルがLowに落ちているか否かを監視し、各ＳＤ３がＡＣＫを応答しているか否かを判断する。ＡＣＫチェック部４０は、当該判断をすべてのＳＤ３に対して行なう。
【００７２】
ＡＣＫチェック部４０は、上記判断結果として、各ＳＤ３でのアクセス成否の情報（アクセス結果の正常／異常）を、エラーフラグレジスタ４３に保持する。ＭＤ２は、Ｉ２Ｃバス５ｅおよびＩ２Ｃコントローラ４４を介して、エラーフラグレジスタ４３の情報を読み込むことにより、どのバス５ｃでアクセスに失敗しているか、つまりはどのＳＤ３でアクセスに失敗しているかを認識することができる。ＭＤ２は、アクセスに失敗していることを認識した場合、上記項目［Ａ２］で説明した切替機能を用いて一斉リトライを行なうか、もしくは、アクセスに失敗したＳＤ３を特定した上で、上記項目［Ａ３］で説明した切替機能を用いて個別リトライを行なう。
【００７３】
一方、特定のＳＤ３における設定値等を読み出す場合、上記項目［Ａ４］で説明した切替機能を用いて、当該特定のＳＤ３に対応するバス５ｂ上のバッファ１０ａ，１０ｂのみを有効にするとともに、疑似ＡＣＫ生成部３０の機能をディセーブル状態にする。本実施形態では、複数のＳＤ３について同一のＩ２Ｃアドレスが共通に用いられるため、アドレスによって各ＳＤ３の個別アクセスを行なうことができない。そこで、上述のように特定のＳＤ３に対応するアクセス経路（バッファ１０）のみを有効化することで、特定のＳＤ３に対する個別アクセスが実現される。このような個別アクセスによって特定のＳＤ３から読み出されたデータは、ディセーブル状態の疑似ＡＣＫ生成部３０をそのまま通過し、ＭＤ２に送信される。
【００７４】
〔１−６〕第１実施形態の効果
このように、第１実施形態のバス制御装置４によれば、ＭＤ２から、同一アドレスを付与された複数のＳＤ３へのデータ一斉送信時（Ｉ２Ｃマルチキャスト時）には、第１バッファ１０ａによって、ＭＤ２から各ＳＤ３へのデータ転送が可能な状態にされる。これと同時に、第２バッファ１０ｂによって各ＳＤ３からＭＤ２へのデータ転送は抑止される。これにより、複数のＳＤ３からの応答の衝突が回避され、ＭＤ２とＳＤ３との間でやり取りされるデータが壊れるなどの不具合の発生が確実に防止される。
【００７５】
このとき、各ＳＤ３からＭＤ２への応答（ＡＣＫ）が返送されなくなるが、イネーブル状態の疑似ＡＣＫ生成部３０によって疑似ＡＣＫが生成されてＭＤ２に返送される。これにより、ＭＤ２は、ＳＤ３に対するライトアクセス等のコマンド処理を確実に完結させることができる。
【００７６】
また、第１実施形態では、ＡＣＫチェック部４０によって、各ＳＤ３でのアクセス結果の正常／異常に関する情報が保持される。したがって、ＭＤ２は、Ｉ２Ｃバス５ｅおよびＩ２Ｃコントローラ４４を介して当該情報を読み込むことにより、どのＳＤ３でアクセスに失敗しているかを正確に認識し、アクセスに失敗したＳＤ３に対し、ライトアクセスのリトライを行なうことができる。
【００７７】
さらに、第１実施形態では、特定のＳＤ３における設定値等を読み出す場合、特定のＳＤ３に対応するアクセス経路上のバッファ１０のみを有効化することで、特定のＳＤ３に対する個別アクセスが実現される。このような個別アクセスによって特定のＳＤ３から読み出されたデータは、ディセーブル状態の疑似ＡＣＫ生成部３０をそのまま通過し、ＭＤ２に送信されるため、通常通りのリードアクセスを行なうことができる。
【００７８】
以上のように、第１実施形態によれば、ライト時にはＭＤ２は複数のＳＤ３に対する同時一斉アクセスが可能になり、且つ、リード時には各ＳＤ３に対する個別アクセスが可能になる。これにより、通所のＩ２Ｃアクセスの機能を損なうことなく、複数のＳＤ３に対するライトアクセスに要する時間を大幅に短縮することができる。
【００７９】
また、例えば、サーバ装置等の立上げ時には、当該サーバ装置等を構成する各ユニットに対し初期情報を設定すべく、Ｉ２Ｃを使用して各ＳＤ３へ初期設定値が書き込まれる。その際、複数の同一のユニットが備えられている場合、全く同じデータを複数のＳＤ３に書き込む必要があり、その書込み処理をシリアルに実行すると（図１８参照）、ＳＤ３の数が多ければ多いほど装置の立上げに多大な時間を要することになる。
【００８０】
これに対し、第１実施形態によれば、上述のごとく、通常のＩ２Ｃアクセスの機能を損なうことなく、複数のデバイスに対する同時アクセスを正常に実現することができる。これにより、同じアクセス内容を個々のＳＤ３にインプリメントするファームウエアの工数削減され、アクセス処理に関する作業が効率化される。また、シリアルアクセスに代えて一斉に同時アクセスを採用することが可能になったことに伴い、ライトアクセス処理に要する時間が大幅に短縮される。したがって、出荷前試験時の装置立上げ処理や実運用時の装置立上げ処理が高速化されるので、試験等の作業時間が短縮されるほか、スピーディな実運用を実現することができる。
【００８１】
〔２〕第２実施形態
〔２−１〕第２実施形態の構成
ついで、図７に示すブロック図を参照しながら、本発明の第２実施形態のバス制御装置４Ａを含むデータ転送システム１Ａの構成について説明する。なお、既述の符号と同一の符号は、同一もしくはほぼ同一の部分を示しているので、その説明は省略する。
【００８２】
第２実施形態のデータ転送システム１Ａは、図７に示すように、第１実施形態のデータ転送システム１におけるバス制御装置４に代えてバス制御装置４Ａを備えた点で第１実施形態と異なっている。また、第２実施形態のバス制御装置４Ａは、第１実施形態のバス制御装置４とほぼ同様に構成されているが、図７に示すように、第１実施形態の双方向バッファ１０−１，１０−２，１０−３に代えて双方向バッファ１０Ａ−１，１０Ａ−２，１０Ａ−３を備えた点で第１実施形態と異なっている。なお、以下の説明では、３個の双方向バッファのうちの一つを特定する場合には符号１０Ａ−１，１０Ａ−２，１０Ａ−３が用られ、任意の双方向バッファを指す場合には符号１０Ａが用いられる。
【００８３】
以下では、第２実施形態の双方向バッファ１０Ａの構成について説明する。図７に示すように、各双方向バッファ１０Ａにおいては、第１実施形態の第１バッファ（スリーステートバッファ）１０ａに代えて第１バッファ１０ａ′およびスイッチ１１ａが備えられている。同様に、各双方向バッファ１０Ａにおいては、第１実施形態の第２バッファ（スリーステートバッファ）１０ｂに代えて第２バッファ１０ｂ′およびスイッチ１１ｂが備えられている。
【００８４】
第１バッファ１０ａ′は、アクセス方向を制限するためのバッファであり、ＭＤ２から各ＳＤ３へのデータ転送のみを許容する。第１バッファ１０ａ′は、ＳＣＬ入力端子[1A]およびＳＤＡ入力端子[2A]と、ＳＣＬ出力端子[1Y]およびＳＤＡ出力端子[2Y]とを有する。第１バッファ１０ａ′のＳＣＬ入力端子[1A]およびＳＤＡ入力端子[2A]には、それぞれ、スイッチ１１ａの端子[1B]および端子[2B]が接続される。また、第１バッファ１０ａ′のＳＣＬ出力端子[1Y]およびＳＤＡ出力端子[2Y]には、それぞれ、Ｉ２Ｃバス５ｂを介してＳＤ３のＳＣＬ端子[SCL]およびＳＤＡ端子[SDA]が接続される。さらに、第１バッファ１０ａ′のＳＣＬ出力端子[1Y]およびＳＤＡ出力端子[2Y]には、図７に示すように、Ｉ２Ｃバス５ｃを介してＡＣＫチェック部４０が接続される。
【００８５】
第２バッファ１０ｂ′は、アクセス方向を制限するためのバッファであり、各ＳＤ３からＭＤ２へのデータ転送のみを許容する。第２バッファ１０ｂ′も、ＳＣＬ入力端子[1A]およびＳＤＡ入力端子[2A]と、ＳＣＬ出力端子[1Y]およびＳＤＡ出力端子[2Y]とを有する。第２バッファ１０ｂ′のＳＣＬ出力端子[1Y]およびＳＤＡ出力端子[2Y]には、それぞれ、スイッチ１１ｂの端子[1B]および端子[2B]が接続される。また、第２バッファ１０ｂ′のＳＣＬ入力端子[1A]およびＳＤＡ入力端子[2A]には、それぞれ、Ｉ２Ｃバス５ｂを介してＳＤ３のＳＣＬ端子[SCL]およびＳＤＡ端子[SDA]が接続される。さらに、第２バッファ１０ｂ′のＳＣＬ入力端子[1A]およびＳＤＡ入力端子[2A]には、図５に示すように、Ｉ２Ｃバス５ｃを介してＡＣＫチェック部４０が接続される。
【００８６】
スイッチ１１ａは、第１バッファ１０ａ′への転送対象（ＳＣＬ信号およびＳＣＬ信号）の入力を接断すべくＩ２Ｃバス５ｂを接続／接断する。スイッチ１１ａは、端子[1A], [2A], [1B], [2B]と、制御入力端子[1OE], [2OE]と、接断部１１ａ−１，１１ａ−２とを有する。スイッチ１１ａの端子[1A], [2A]には、それぞれ、Ｉ２Ｃバス５ｂのＳＣＬ信号線およびＳＤＡ信号線を介してＩ２Ｃバス５ａのＳＣＬ信号線およびＳＤＡ信号線が接続される。スイッチ１１ａの端子[1B], [2B]には、それぞれ第１バッファ１０ａ′のＳＣＬ入力端子[1A]およびＳＤＡ入力端子[2A]が接続される。なお、制御入力端子[1OE], [2OE]における“OE”はOutput Enableの略記である。
【００８７】
接断部１１ａ−１は、スイッチ１１ａの端子[1A]と端子[1B]との間を接続／切断するもので、制御入力端子[1OE]に入力される制御信号がＬ（０；イネーブル）状態の場合にスイッチ１１ａの端子[1A]と端子[1B]との間を接続する。一方、接断部１１ａ−１は、制御入力端子[1OE]に入力される制御信号がＨ（１；ディセーブル）状態の場合にスイッチ１１ａの端子[1A]と端子[1B]との間を切断する。同様に、接断部１１ａ−２は、スイッチ１１ａの端子[2A]と端子[2B]との間を接続／切断するもので、制御入力端子[2OE]に入力される制御信号がＬ（０；イネーブル）状態の場合にスイッチ１１ａの端子[2A]と端子[2B]との間を接続する。一方、接断部１１ａ−２は、制御入力端子[2OE]に入力される制御信号がＨ（１；ディセーブル）状態の場合にスイッチ１１ａの端子[2A]と端子[2B]との間を切断する。なお、制御入力端子[1OE], [2OE]には、同一の制御信号が入力される。また、図７では、接断部１１ａ−１，１１ａ−２の切断状態が図示されている。
【００８８】
スイッチ１１ｂは、第２バッファ１０ｂ′からの転送対象（ＳＣＬ信号およびＳＣＬ信号）の出力を接断すべくＩ２Ｃバス５ｂを接続／接断する。スイッチ１１ｂも、端子[1A], [2A], [1B], [2B]と、制御入力端子[1OE], [2OE]と、接断部１１ｂ−１，１１ｂ−２とを有する。スイッチ１１ｂの端子[1A], [2A]には、それぞれ、Ｉ２Ｃバス５ｂのＳＣＬ信号線およびＳＤＡ信号線を介してＩ２Ｃバス５ａのＳＣＬ信号線およびＳＤＡ信号線が接続される。スイッチ１１ｂの端子[1B], [2B]には、それぞれ第２バッファ１０ｂ′のＳＣＬ出力端子[1Y]およびＳＤＡ出力端子[2Y]が接続される。
【００８９】
接断部１１ｂ−１は、スイッチ１１ｂの端子[1A]と端子[1B]との間を接続／切断するもので、制御入力端子[1OE]に入力される制御信号がＬ（０；イネーブル）状態の場合にスイッチ１１ｂの端子[1A]と端子[1B]との間を接続する。一方、接断部１１ｂ−１は、制御入力端子[1OE]に入力される制御信号がＨ（１；ディセーブル）状態の場合にスイッチ１１ｂの端子[1A]と端子[1B]との間を切断する。同様に、接断部１１ｂ−２は、スイッチ１１ｂの端子[2A]と端子[2B]との間を接続／切断するもので、制御入力端子[2OE]に入力される制御信号がＬ（０；イネーブル）状態の場合にスイッチ１１ｂの端子[2A]と端子[2B]との間を接続する。一方、接断部１１ａ−２は、制御入力端子[2OE]に入力される制御信号がＨ（１；ディセーブル）状態の場合にスイッチ１１ｂの端子[2A]と端子[2B]との間を切断する。なお、制御入力端子[1OE], [2OE]には、同一の制御信号が入力される。また、図７では、接断部１１ｂ−１，１１ｂ−２の切断状態が図示されている。
【００９０】
なお、第２実施形態の切替制御部２０には、８個の制御出力端子[I/O 0.0]〜[I/O 0.7]が備えられている。これらのうち７個の制御出力端子[I/O 0.0]〜[I/O 0.6]には、それぞれ、第１実施形態で上述した制御信号線６−０，６ａ−１，６ｂ−１，６ａ−２，６ｂ−２，６ａ−３，６ｂ−３が接続され、制御出力端子[I/O 0.7]は未使用である（図９，図１２，図１５参照）。
【００９１】
制御出力端子[I/O 0.0]は、制御信号線６−０を介して疑似ＡＣＫ生成回路３１のイネーブル端子（図２参照）に接続される。
【００９２】
制御出力端子[I/O 0.1]は、制御信号線６ａ−１を介して、双方向バッファ１０Ａ−１のスイッチ１１ａの制御入力端子[1OE], [2OE]に接続される。制御出力端子[I/O 0.2]は、制御信号線６ｂ−１を介して、双方向バッファ１０Ａ−１のスイッチ１１ｂの制御入力端子[1OE], [2OE]に接続される。
【００９３】
制御出力端子[I/O 0.3]は、制御信号線６ａ−２を介して、双方向バッファ１０Ａ−２のスイッチ１１ａの制御入力端子[1OE], [2OE]に接続される。制御出力端子[I/O 0.4]は、制御信号線６ｂ−２を介して、双方向バッファ１０Ａ−２のスイッチ１１ｂの制御入力端子[1OE], [2OE]に接続される。
【００９４】
制御出力端子[I/O 0.5]は、制御信号線６ａ−３を介して、双方向バッファ１０Ａ−３のスイッチ１１ａの制御入力端子[1OE], [2OE]に接続される。制御出力端子[I/O 0.6]は、制御信号線６ｂ−３を介して、双方向バッファ１０Ａ−３のスイッチ１１ｂの制御入力端子[1OE], [2OE]に接続される。
【００９５】
切替制御部２０は、制御出力端子[I/O 0.1]〜[I/O 0.6]から出力される制御信号のイネーブル／ディセーブル状態を切替制御することで、各双方向バッファ１０におけるスイッチ１１ａ，１１ｂの接断状態を切り替える。これにより、第１実施形態の双方向バッファ１０と同様、第２実施形態の双方向バッファ１０Ａにおける第１バッファ１０ａ′および第２バッファ１０ｂ′についても、データ転送許可状態もしくはデータ転送禁止状態の切替が制御される。
【００９６】
なお、切替制御部２０にも、ＳＤ３と同様、ＳＣＬ端子[SCL]およびＳＤＡ端子[SDA]が備えられ、これらのＳＣＬ端子[SCL]およびＳＤＡ端子[SDA]には、それぞれＩ２Ｃバス５ｄのＳＣＬ信号線およびＳＤＡ信号線を介してＭＤ２に接続される。これにより、Ｉ２Ｃバス５ｄを介し、ＭＤ２によって、切替制御部２０から出力される制御信号の設定値（イネーブル／ディセーブル状態）が切替制御される。また、ＳＤ３および切替制御部２０のそれぞれには、端子[A0], [A1], [A2]が備えられており、当該端子[A0]〜[A2]を通じて電源供給が行なわれる。
【００９７】
〔２−２〕第２実施形態の動作
次に、上述のごとき構成および機能を有する第２実施形態のバス制御装置４Ａの動作について、図８〜図１６を参照しながら説明する。
【００９８】
〔２−２−１〕一斉ライト動作および一斉リトライ動作
まず、図１０に示すフローチャート（ステップＳ１１〜Ｓ１６）に従って、図８および図９を参照しながら、第２実施形態におけるＩ２Ｃマルチキャストによる一斉ライト動作および一斉リトライ動作について説明する。なお、図８は、その一斉ライト動作および一斉リトライ動作を説明する図である。図９は、第２実施形態における一斉ライト時および一斉リトライ時の切替制御部２０の動作を説明する図であり、一斉ライト時および一斉リトライ時に切替制御部２０によって設定される制御信号の設定値と有効になるバスとの関連表を示す。図９において、ＳＤ＃１，ＳＤ＃２，ＳＤ＃３は、それぞれ図７および図８のＳＤ３−１，３−２，３−３に対応する。
【００９９】
Ｉ２Ｃマルチキャストによって一斉ライト動作を行なうべく、切替制御部２０は、制御出力端子[I/O 0.0]〜[I/O 0.6]から各制御信号線へ出力される制御信号の値を、図９に示すように設定する（図８の矢印Ａ１および図１０のステップＳ１１参照）。つまり、切替制御部２０は、制御出力端子[I/O 0.0]から疑似ＡＣＫ生成部３０への制御信号ACK_ENを“０”に設定し、疑似ＡＣＫ生成部３０の機能(ACK generation)をイネーブル状態にする。また、切替制御部２０は、双方向バッファ１０Ａの第１バッファ１０ａ′をイネーブル状態にしてデータ転送許可状態にすべく、制御出力端子[I/O 0.1], [I/O 0.3], [I/O 0.5]からスイッチ１１ａの制御入力端子[1OE], [2OE]への制御信号を“０”に設定する。さらに、切替制御部２０は、双方向バッファ１０Ａの第２バッファ１０ｂ′をディセーブル状態にしてデータ転送禁止状態にすべく、制御出力端子[I/O 0.2], [I/O 0.4], [I/O 0.6]からスイッチ１１ｂの制御入力端子[1OE], [2OE]への制御信号を“１”に設定する。これにより、ＭＤ２から各ＳＤ３へのデータ転送はイネーブルとなり、各ＳＤ３からＭＤ２へのデータ転送はディセーブルとなる。
【０１００】
図９に示すように制御信号の値を設定した状態で、ＭＤ２は、同一アドレス（例えば0xA2）を設定された複数のＳＤ３に対し、Ｉ２Ｃマルチキャストにより一斉ライト処理（ライトコマンドの発行）を実行する（図８の矢印Ａ２および図１０のステップＳ１２参照）。
【０１０１】
各ＳＤ３は、ライトコマンドに応じて応答信号（ＡＣＫ／ＮＡＣＫ）を返送する。しかし、スイッチ１１ｂによって、各ＳＤ３からＭＤ２へのデータ転送は、ディセーブル状態になっているため、遮断され、応答信号はＭＤ２に返送されない（図８の矢印Ａ３および太点線参照）。このとき、疑似ＡＣＫ生成部３０は、図４を参照しながら前述した応答信号の返送タイミングで疑似ＡＣＫを生成し、ＭＤ２へ送信する（図８の矢印Ａ４および図１０のステップＳ１３参照）。疑似ＡＣＫを受信したＭＤ２はライトアクセスを完了する（図１０のステップＳ１４参照）。
【０１０２】
この後、ＭＤ２は、Ｉ２Ｃバス５ｅを介して、ＡＣＫチェック部３０（エラーフラグレジスタ４３）に保持されている、各ＳＤ３でのアクセス成否の情報（アクセス結果の正常／異常）を参照しチェックする（図８の矢印Ａ６，Ａ７および図１０のステップＳ１５参照）。複数のＳＤ３の全てのでのアクセス結果が正常である場合、つまり複数のＳＤ３の全てからＡＣＫ応答があった場合（ステップＳ１６のＹＥＳルート）、ＭＤ２は、一斉ライト処理を完了する。なお、ＡＣＫチェック部３０（エラーフラグレジスタ４３）には、図４を参照しながら前述した応答信号の返送タイミングで、各ＳＤ３でのアクセス成否の情報が保存されている（図８の矢印Ａ５参照）。
【０１０３】
一方、複数のＳＤ３のいずれかでのアクセス結果が異常である場合、つまり複数のＳＤ３のいずれかからＮＡＣＫ応答が行なわれた場合（図１０のステップＳ１６のＮＯルート）、ＭＤ２は、ステップＳ１２の処理に戻ってステップＳ１２〜Ｓ１６の処理を再度実行する。これにより、一斉リトライが実行される。一斉リトライは、ステップＳ１６でＹＥＳと判断されるまで、繰り返し実行される。
【０１０４】
〔２−２−２〕一斉ライト動作および個別リトライ動作
ついで、図１３に示すフローチャート（ステップＳ２１〜Ｓ２８）に従って、図１１および図１２を参照しながら、第２実施形態におけるＩ２Ｃマルチキャストによる一斉ライト動作および個別リトライ動作について説明する。なお、図１１は、その一斉ライト動作および個別リトライ動作を説明する図である。図１２は、第２実施形態における個別リトライ時の切替制御部２０の動作を説明する図であり、個別リトライ時に切替制御部２０によって設定される制御信号の設定値と有効になるバスとの関連表を示す。図１２において、ＳＤ＃１，ＳＤ＃２，ＳＤ＃３は、それぞれ図７および図８のＳＤ３−１，３−２，３−３に対応する。
【０１０５】
ここでも、まず、図８〜図１０を参照しながら前述した手順（図８の矢印Ａ１〜Ａ７および図１０のステップＳ１１〜Ｓ１６）と同様の手順（図１３のステップＳ２１〜Ｓ２６参照）で、Ｉ２Ｃマルチキャストによる一斉ライト動作が実行される。
【０１０６】
そして、複数のＳＤ３のいずれかでのアクセス結果が異常である場合、つまり複数のＳＤ３のいずれかからＮＡＣＫ応答が行なわれた場合（図１３のステップＳ２６のＮＯルート）、ＭＤ２は、ＡＣＫチェック部４０における情報を参照する。そして、ＭＤ２は、どのバス５ｃがエラーバスであるか、つまりはどのＳＤ３で異常が生じているかを特定する（図１３のステップＳ２７）。
【０１０７】
ＭＤ２は、異常の生じたＳＤ３を特定すると、Ｉ２Ｃマルチキャストによって個別ライト動作を行なうべく切替制御部２０を制御する。以下、異常の生じたＳＤ３を、ＳＤ３−２（ＳＤ＃２）として説明する。このとき、ＭＤ２からＳＤ＃２へのデータ転送（エラーバス）のみをイネーブル状態にすべく、切替制御部２０は、制御出力端子[I/O 0.0]〜[I/O 0.6]から各制御信号線へ出力される制御信号の値を、図１２に示すように設定する（図１１の矢印Ａ１１および図１３のステップＳ２８参照）。
【０１０８】
つまり、切替制御部２０は、制御出力端子[I/O 0.0]から疑似ＡＣＫ生成部３０への制御信号ACK_ENを“０”に設定し、疑似ＡＣＫ生成部３０の機能(ACK generation)をイネーブル状態にする。また、切替制御部２０は、双方向バッファ１０Ａ−２の第１バッファ１０ａ′をイネーブル状態にしてデータ転送許可状態にすべく、制御出力端子[I/O 0.3]から双方向バッファ１０Ａ−２のスイッチ１１ａの制御入力端子[1OE], [2OE]への制御信号を“０”に設定する。さらに、切替制御部２０は、その他の第１バッファ１０ａ′や第２バッファ１０ｂ′をディセーブル状態にしてデータ転送禁止状態にすべく、制御出力端子[I/O 0.1], [I/O 0.2], [I/O 0.4], [I/O 0.5], [I/O 0.6]からスイッチ１１ａまたは１１ｂの制御入力端子[1OE], [2OE]への制御信号を“１”に設定する。これにより、ＭＤ２からＳＤ＃２へのデータ転送のみがイネーブルとなり、その他のデータ転送はディセーブルとなる。
【０１０９】
図１２に示すように制御信号の値を設定した状態で、ＭＤ２は、他のＳＤ３と同一アドレス（例えば0xA2）を設定された特定のＳＤ＃２に対し、Ｉ２Ｃマルチキャストにより一斉ライト処理（ライトコマンドの発行）を実行する。このとき、ＭＤ２からＳＤ＃２へのデータ転送のみがイネーブルになっているので、一斉ライト処理を行なっても、ＳＤ＃２のみにライトコマンドが転送され個別リトライ動作が行なわれる（図１１の矢印Ａ１２および図１３のステップＳ２２参照）。
【０１１０】
ＳＤ＃２は、ライトコマンドに応じて応答信号（ＡＣＫ／ＮＡＣＫ）を返送する。しかし、スイッチ１１ｂによって、ＳＤ＃２からＭＤ２へのデータ転送は、ディセーブル状態になっているため、遮断され、応答信号はＭＤ２に返送されない（図１１の矢印Ａ１３および太点線参照）。このとき、疑似ＡＣＫ生成部３０は、図４を参照しながら前述した応答信号の返送タイミングで疑似ＡＣＫを生成し、ＭＤ２へ送信する（図１１の矢印Ａ１４および図１３のステップＳ２３参照）。疑似ＡＣＫを受信したＭＤ２はライトアクセス（リトライアクセス）を完了する（図１３のステップＳ２４参照）。
【０１１１】
この後、ＭＤ２は、Ｉ２Ｃバス５ｅを介して、ＡＣＫチェック部４０（エラーフラグレジスタ４３）に保持されている、ＳＤ＃２でのアクセス成否の情報（アクセス結果の正常／異常）を参照しチェックする（図１１の矢印Ａ１６，Ａ１７および図１３のステップＳ２５参照）。ＳＤ＃２でのアクセス結果が正常である場合、つまりＳＤ＃２からＡＣＫ応答があった場合（ステップＳ２６のＹＥＳルート）、ＭＤ２は、一斉ライト処理および個別リトライ処理を完了する。なお、ＡＣＫチェック部４０（エラーフラグレジスタ４３）には、図４を参照しながら前述した応答信号の返送タイミングで、ＳＤ＃２でのアクセス成否の情報が保存されている（図１１の矢印Ａ１５参照）。
【０１１２】
一方、個別リトライを行なってもＳＤ＃２でのアクセス結果が異常である場合、つまりＳＤ＃２からＮＡＣＫ応答が行なわれた場合（図１３のステップＳ２６のＮＯルート）、ＭＤ２は、ステップＳ２７，Ｓ２８およびＳ２２〜Ｓ２６の処理を再度実行する。これにより、ステップＳ２６でＹＥＳと判断されるまで、個別リトライが繰り返し実行される。なお、２回目の個別リトライでは、異常の生じたＳＤ３が既に特定されているので、ステップＳ２７，Ｓ２８の処理は省略することが可能である。
【０１１３】
〔２−２−３〕個別リード動作
ついで、図１６に示すフローチャート（ステップＳ３１〜Ｓ３４）に従って、図１４および図１５を参照しながら、第２実施形態におけるＩ２Ｃマルチキャストによる個別リード動作について説明する。なお、図１４は、その個別リード動作を説明する図である。図１５は、第２実施形態における個別リード時の切替制御部２０の動作を説明する図であり、個別リード時に切替制御部２０によって設定される設定値と有効になるバスとの関連表を示す。図１５において、ＳＤ＃１，ＳＤ＃２，ＳＤ＃３は、それぞれ図７および図８のＳＤ３−１，３−２，３−３に対応する。
【０１１４】
ＭＤ２が特定のＳＤ３における設定値等を読み出す場合、Ｉ２Ｃマルチキャストによって個別リード動作を行なうべく、切替制御部２０は、制御出力端子[I/O 0.0]〜[I/O 0.6]から各制御信号線へ出力される制御信号の値を、図１５に示すように設定する（図１４の矢印Ａ２１および図１６のステップＳ３１参照）。ここでは、特定のＳＤ３つまりリード対象のＳＤ３が、ＳＤ３−１（ＳＤ＃１）として説明する。
【０１１５】
このとき、切替制御部２０は、制御出力端子[I/O 0.0]から疑似ＡＣＫ生成部３０への制御信号ACK_ENを“１”に設定し、疑似ＡＣＫ生成部３０を、Ｉ２Ｃバス５ａの信号をそのまま通過させる状態(Pass through)に切り替える。
【０１１６】
また、切替制御部２０は、リード対象のＳＤ＃１に対応するバス５ｂ−１上の第１バッファ１０ａ′および第２バッファ１０ｂ′をイネーブルにしてデータ転送許可状態にする。このため、切替制御部２０は、制御出力端子[I/O 0.1], [I/O 0.2]から双方向バッファ１０Ａ−１のスイッチ１１ａおよびスイッチ１１ｂの制御入力端子[1OE], [2OE]への制御信号を“０”に設定する。
【０１１７】
さらに、切替制御部２０は、双方向バッファ１０Ａ−２および１０Ａ−３におけるバッファ１０ａ′および１０ｂ′をディセーブル状態にしてデータ転送禁止状態にする。このため、切替制御部２０は、制御出力端子[I/O 0.3]〜[I/O 0.6]からスイッチ１１ａおよびスイッチ１１ｂの制御入力端子[1OE], [2OE]への制御信号を“１”に設定する。
【０１１８】
これにより、ＭＤ２とリード対象ＳＤ＃１との間のデータ転送のみがイネーブルとなり、ＭＤ２とＳＤ＃２との間のデータ転送、および、ＭＤ２とＳＤ＃３との間のデータ転送はディセーブルとなる。
【０１１９】
図１５に示すように制御信号の値を設定した状態で、ＭＤ２は、同一アドレス（例えば0xA2）を設定された複数のＳＤ３に対し、Ｉ２Ｃマルチキャストによりリードコマンドの発行を実行する。このとき、ＭＤ２からＳＤ＃１へのデータ転送がイネーブルになっているので、一斉にリードコマンドを発行しても、ＳＤ＃１のみにリードコマンドが転送され個別リードアクセスが行なわれる（図１４の矢印Ａ２２および図１６のステップＳ３２参照）。
【０１２０】
ＳＤ＃１において、ＭＤ２から指定されたデータが読み出されると、読み出されたデータは、ＳＤ＃１からＭＤ２へのデータ転送がイネーブルになっているので、通常通り、ＭＤ２へ送信される。このとき、疑似ＡＣＫ生成部３０は、ディセーブル状態、つまりパススルー状態になっているので、リードデータは、そのまま疑似ＡＣＫ生成部３０を通過し、Ｉ２Ｃバス５ａを通じてＭＤ２に送信される（図１４の矢印Ａ２３，Ａ２４および図１６のステップＳ３３参照）。
【０１２１】
この後、ＭＤ２によるリードアクセスが完了していれば（図１６のステップＳ３４のＹＥＳルート）、ＭＤ２は、リードアクセス処理を終了する。一方、ＭＤ２によるリードアクセスが完了していなければ（図１６のステップＳ３４のＮＯルート）、ＭＤ２は、ステップＳ３２の処理に戻り、リードアクセスを完了するまで、ステップＳ３２〜Ｓ３４の処理を繰り返し実行する。
【０１２２】
〔２−３〕第２実施形態の効果
このように、第２実施形態のバス制御装置４Ａによれば、第１実施形態と同様の作用効果を得ることができる。
【０１２３】
〔３〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【０１２４】
例えば、上述した実施形態では、スレーブデバイス（ＳＤ）が３個である場合について説明したが、本発明は、これに限定されるものでなく、スレーブデーバス（ＳＤ）の数が２または４以上であっても、上述した実施形態と同様に適用され、上述した実施形態と同様の作用効果を得ることができる。
【０１２５】
また、上述した実施形態では、本発明のデータ転送システムをサーバ装置等に適用する場合について説明したが、本発明は、これに限定されるものでなく、各種データ処理装置や、テレビジョン受像機の制御システムや、大量の画像データを扱う画像形成装置など、複数の同一デバイスを有する装置であれば、上述した実施形態と同様に適用され、上述した実施形態と同様の作用効果を得ることができる。
【０１２６】
〔４〕付記
以上の各実施形態を含む実施形態に関し、さらに以下の付記を開示する。
【０１２７】
（付記１）
第１デバイスと複数の第２デバイスとを接続する複数のバスのそれぞれに、前記第１デバイスから各第２デバイスへのデータ転送を行なう第１バッファと各第２デバイスから前記第１デバイスへのデータ転送を行なう第２バッファとを備え、
前記第１デバイスから前記複数の第２デバイスへのデータ一斉送信要求に応じて、前記第１バッファを前記第１デバイスから各第２デバイスへのデータ転送許可状態に切り替えるとともに前記第２バッファを各第２デバイスから前記第１デバイスへのデータ転送禁止状態に切り替える切替制御部と、
前記データ一斉送信に応じて各第２デバイスから前記第１デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第１デバイスへ返送する疑似応答生成部と、を有する、バス制御装置。
【０１２８】
（付記２）
各第２デバイスから前記応答信号を受信して前記応答信号の状態を保存する保存部と、
前記第１デバイスからの状態返送要求に応じて、前記保存部から前記応答信号の状態を読み出して前記第１デバイスへ返送する返送制御部と、を有する、付記１に記載のバス制御装置。
【０１２９】
（付記３）
前記切替制御部は、前記返送制御部からの前記応答信号の状態が異常を示す場合の再送信要求に応じて、前記第１バッファを前記第１デバイスから各第２デバイスへのデータ転送許可状態に切り替えるとともに前記第２バッファを各第２デバイスから前記第１デバイスへのデータ転送禁止状態に切り替え、前記第１デバイスに前記データ一斉送信を再実行させる、付記２に記載のバス制御装置。
【０１３０】
（付記４）
前記切替制御部は、前記返送制御部からの前記応答信号の状態が異常を示す場合の再送信要求に応じて、前記異常に対応する第２デバイスを特定し、特定された第２デバイスに対応する前記第１バッファのみを前記データ転送許可状態に切り替え、前記第１デバイスに前記データ一斉送信を再実行させる、付記２に記載のバス制御装置。
【０１３１】
（付記５）
前記切替制御部は、前記複数の第２デバイスのうちの特定の第２デバイスにおけるデータの読出要求に応じて、前記特定の第２デバイスに対応する前記第１バッファおよび前記第２バッファを前記データ転送許可状態に切り替え、前記第１デバイスに前記特定の第２デバイスにおけるデータの読出を実行させる、付記１〜付記４のいずれか一項に記載のバス制御装置。
【０１３２】
（付記６）
前記第１バッファおよび前記第２バッファは、それぞれスリーステートバッファによって構成され、
前記切替制御部は、各スリーステートバッファの制御入力端子への制御信号を切り替えることにより、前記データ転送許可状態もしくは前記データ転送禁止状態への切替を制御する、付記１〜付記５のいずれか一項に記載のバス制御装置。
【０１３３】
（付記７）
前記第１バッファおよび前記第２バッファのそれぞれに、各バッファからの転送対象の出力もしくは各バッファへの転送対象の入力を接断するスイッチを接続し、
前記切替制御部は、各スイッチの接断状態を切り替えることにより、前記データ転送許可状態もしくは前記データ転送禁止状態への切替を制御する、付記１〜付記５のいずれか一項に記載のバス制御装置。
【０１３４】
（付記８）
前記バスは、シリアルインタフェースバスであり、
前記複数の第２デバイスに対し同一アドレスを設定することにより、前記第１デバイスから前記複数の第２デバイスへの前記データ一斉送信が実行される、付記１〜付記７のいずれか一項に記載のバス制御装置。
【０１３５】
（付記９）
第１デバイスと、
複数の第２デバイスと、
前記第１デバイスと前記複数の第２デバイスとの間でデータ転送を行なうバスを制御するバス制御装置と、を備え、
前記バス制御装置は、
前記第１デバイスと前記複数の第２デバイスとを接続する複数のバスのそれぞれに備えられ、前記第１デバイスから各第２デバイスへのデータ転送を行なう第１バッファと各第２デバイスから前記第１デバイスへのデータ転送を行なう第２バッファとを有し、
前記第１デバイスから前記複数の第２デバイスへのデータ一斉送信要求に応じて、前記第１バッファを前記第１デバイスから各第２デバイスへのデータ転送許可状態に切り替えるとともに前記第２バッファを各第２デバイスから前記第１デバイスへのデータ転送禁止状態に切り替える切替制御部と、
前記データ一斉送信に応じて各第２デバイスから前記第１デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第１デバイスへ返送する疑似応答生成部と、を有する、データ転送システム。
【０１３６】
（付記１０）
前記バス制御装置は、
各第２デバイスから前記応答信号を受信して前記応答信号の状態を保存する保存部と、
前記第１デバイスからの状態返送要求に応じて、前記保存部から前記応答信号の状態を読み出して前記第１デバイスへ返送する返送制御部と、を有する、付記９に記載のデータ転送システム。
【０１３７】
（付記１１）
前記切替制御部は、前記返送制御部からの前記応答信号の状態が異常を示す場合の再送信要求に応じて、前記第１バッファを前記第１デバイスから各第２デバイスへのデータ転送許可状態に切り替えるとともに前記第２バッファを各第２デバイスから前記第１デバイスへのデータ転送禁止状態に切り替え、前記第１デバイスに前記データ一斉送信を再実行させる、付記１０に記載のデータ転送システム。
【０１３８】
（付記１２）
前記切替制御部は、前記返送制御部からの前記応答信号の状態が異常を示す場合の再送信要求に応じて、前記異常に対応する第２デバイスを特定し、特定された第２デバイスに対応する前記第１バッファのみを前記データ転送許可状態に切り替え、前記第１デバイスに前記データ一斉送信を再実行させる、付記１０に記載のデータ転送システム。
【０１３９】
（付記１３）
前記切替制御部は、前記複数の第２デバイスのうちの特定の第２デバイスにおけるデータの読出要求に応じて、前記特定の第２デバイスに対応する前記第１バッファおよび前記第２バッファを前記データ転送許可状態に切り替え、前記第１デバイスに前記特定の第２デバイスにおけるデータの読出を実行させる、付記９〜付記１２のいずれか一項に記載のデータ転送システム。
【０１４０】
（付記１４）
前記第１バッファおよび前記第２バッファは、それぞれスリーステートバッファによって構成され、
前記切替制御部は、各スリーステートバッファの制御入力端子への制御信号を切り替えることにより、前記データ転送許可状態もしくは前記データ転送禁止状態への切替を制御する、付記９〜付記１３のいずれか一項に記載のデータ転送システム。
【０１４１】
（付記１５）
前記第１バッファおよび前記第２バッファのそれぞれに、各バッファからの転送対象の出力もしくは各バッファへの転送対象の入力を接断するスイッチを接続し、
前記切替制御部は、各スイッチの接断状態を切り替えることにより、前記データ転送許可状態もしくは前記データ転送禁止状態への切替を制御する、付記９〜付記１３のいずれか一項に記載のデータ転送システム。
【０１４２】
（付記１６）
前記バスは、シリアルインタフェースバスであり、
前記複数の第２デバイスに対し同一アドレスを設定することにより、前記第１デバイスから前記複数の第２デバイスへの前記データ一斉送信が実行される、付記９〜付記１５のいずれか一項に記載のデータ転送システム。
【０１４３】
（付記１７）
第１デバイスと複数の第２デバイスとを接続する複数のバスのそれぞれに、前記第１デバイスから各第２デバイスへのデータ転送を行なう第１バッファと各第２デバイスから前記第１デバイスへのデータ転送を行なう第２バッファとを備えるデータ転送システムにおいて、
前記第１デバイスから前記複数の第２デバイスへのデータ一斉送信要求に応じて、前記第１バッファを前記第１デバイスから各第２デバイスへのデータ転送許可状態に切り替えるとともに前記第２バッファを各第２デバイスから前記第１デバイスへのデータ転送禁止状態に切り替え、
前記データ一斉送信に応じて各第２デバイスから前記第１デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第１デバイスへ返送する、バス制御方法。
【０１４４】
（付記１８）
各第２デバイスから前記応答信号を受信して前記応答信号の状態を保存し、
前記第１デバイスからの状態返送要求に応じて、保存された前記応答信号の状態を読み出して前記第１デバイスへ返送する、付記１７に記載のバス制御方法。
【０１４５】
（付記１９）
返送された前記応答信号の状態が異常を示す場合に応じた前記第１デバイスからの再送信要求に応じて、前記第１バッファを前記第１デバイスから各第２デバイスへのデータ転送許可状態に切り替えるとともに前記第２バッファを各第２デバイスから前記第１デバイスへのデータ転送禁止状態に切り替え、前記第１デバイスに前記データ一斉送信を再実行させる、付記１８に記載のバス制御方法。
【０１４６】
（付記２０）
返送された前記応答信号の状態が異常を示す場合に応じた前記第１デバイスからの再送信要求に応じて、前記異常に対応する第２デバイスを特定し、特定された第２デバイスに対応する前記第１バッファのみを前記データ転送許可状態に切り替え、前記第１デバイスに前記データ一斉送信を再実行させる、付記１８に記載のバス制御方法。
【符号の説明】
【０１４７】
１，１Ａ    データ転送システム
２    マスタデバイス（第１デバイス，I2C Master）
３−１，３−２，３−３    スレーブデバイス（第２デバイス，I2C Slave）
４    バス制御装置
５ａ，５ｂ−１，５ｂ−２，５ｂ−３，５ｃ-１，５ｃ−２，５ｃ−３，５ｄ，５ｅ    バス（シリアルインタフェースバス，Ｉ２Ｃバス）
６−０，６ａ−１，６ｂ−１，６ａ−２，６ｂ−２，６ａ−３，６ｂ−３    制御信号線
１０−１，１０−２，１０−３，１０Ａ−１，１０Ａ−２，１０Ａ−３    双方向バッファ
１０ａ    第１バッファ（スリーステートバッファ）
１０ｂ    第２バッファ（スリーステートバッファ）
１０ａ′    第１バッファ
１０ｂ′    第２バッファ
１１ａ，１１ｂ    スイッチ
１１ａ−１，１１ａ−２，１１ｂ−１，１１ｂ−２    接断部
２０    切替制御部
３０    疑似ＡＣＫ生成部（疑似応答生成部）
３１    疑似ＡＣＫ生成回路
３２    クロックカウンタ
４０    ＡＣＫチェック部
４１    エラー判断ロジック
４１１−１，４１１−２，４１１−３    ＡＮＤゲート
４２    クロックカウンタ
４３  エラーフラグレジスタ（保存部）
４３１−１    BUS#0用ビット
４３１−２    BUS#1用ビット
４３１−３    BUS#2用ビット
４４    Ｉ２Ｃコントローラ（返送制御部）
【図１】
0006340962.tif 000002
【図２】
0006340962.tif 000003
【図３】
0006340962.tif 000004
【図４】
0006340962.tif 000005
【図５】
0006340962.tif 000006
【図６】
0006340962.tif 000007
【図７】
0006340962.tif 000008
【図８】
0006340962.tif 000009
【図９】
0006340962.tif 000010
【図１０】
0006340962.tif 000011
【図１１】
0006340962.tif 000012
【図１２】
0006340962.tif 000013
【図１３】
0006340962.tif 000014
【図１４】
0006340962.tif 000015
【図１５】
0006340962.tif 000016
【図１６】
0006340962.tif 000017
【図１７】
0006340962.tif 000018
【図１８】
0006340962.tif 000019
【図１９】
0006340962.tif 000020