JP6340962B2 - バス制御装置、データ転送システム、及びバス制御方法 - Google Patents

バス制御装置、データ転送システム、及びバス制御方法 Download PDF

Info

Publication number
JP6340962B2
JP6340962B2 JP2014139743A JP2014139743A JP6340962B2 JP 6340962 B2 JP6340962 B2 JP 6340962B2 JP 2014139743 A JP2014139743 A JP 2014139743A JP 2014139743 A JP2014139743 A JP 2014139743A JP 6340962 B2 JP6340962 B2 JP 6340962B2
Authority
JP
Japan
Prior art keywords
buffer
state
data transfer
data
bus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014139743A
Other languages
English (en)
Other versions
JP2016018319A (ja
Inventor
明子 大年
明子 大年
利尚 安倍
利尚 安倍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014139743A priority Critical patent/JP6340962B2/ja
Priority to US14/730,295 priority patent/US9846668B2/en
Publication of JP2016018319A publication Critical patent/JP2016018319A/ja
Application granted granted Critical
Publication of JP6340962B2 publication Critical patent/JP6340962B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Description

本発明は、バス制御装置、データ転送システム、及びバス制御方法に関する。
複数のデバイス間でデータのやり取りを行なう通信方式としては、様々な通信方式がある。特に、同一基板上などにおいて近距離に配置されたデバイス間では、シリアルインタフェースによりデータを伝送するI2C(Inter-Integrated Circuit)通信方式が用いられる場合がある。
I2C通信方式において、デバイス間を接続するI2Cバスは、通常2線式であり、2本の信号線、つまりSDA(シリアルデータ)信号線とSCL(シリアルクロック)信号線とで構成される。
I2Cバスに接続される各デバイスは、マスタデバイスとスレーブマスタとのいずれか一方に分類される。また、通常、各デバイスには、固有のI2Cアドレスが設定される。
例えば図17(A)および図17(B)に示すように、一のマスタデバイス(I2C Master)100に対し、一組のI2Cバス300を介して、複数(図中3個)のスレーブデバイス(I2C Slave)200が接続される。
なお、図17(A)および図17(B)は、一般的なI2Cツリー構成およびI2Cの通信手順を説明する図である。また、以下の説明では、3個のスレーブデバイスのうちの一つを特定する場合には符号200−1,200−2,200−3が用られ、任意のスレーブデバイスを指す場合には符号200が用いられる。
図17(A)および図17(B)に示す例では、スレーブデバイス200−1,200−2,200−3には、それぞれI2Cスレーブアドレス(I2C Address)として0xA0, 0xA1, 0xA2が設定されている。
そして、マスタデバイス100は、I2Cスレーブアドレスによって通信相手のスレーブデバイス200を指定し、指定したスレーブデバイス200との間でシリアルにデータ転送を行なう。I2C通信方式では、オープンドレインで信号線を接続するようになっており、一組のI2Cバス300に、一のマスタデバイス100と二以上のスレーブデバイス200とを繋げることが可能になっている。
I2C通信方式の仕様上、マスタデバイス100は、スレーブデバイス200に対し1対1のアクセスを行なう。マスタデバイス100からのコマンドを受け取ったスレーブデバイス200は、自身へのアクセスを認知すると応答信号(ACK;Acknowledge)を返信するまで、I2Cバス300を占有する。
例えば、マスタデバイス100がスレーブデバイス200−3内のレジスタに対する書込み(ライト)を行なう場合、マスタデバイス100は、図17(A)に示すように、I2Cバス300へのデータ出力を行なう。つまり、マスタデバイス100は、スレーブデバイス200−3のアドレス(0xA2)とライト指示(write)とライト対象のレジスタアドレス(Reg add)とライトデータ(図示略)とをI2Cバス300(SDA信号線)へシリアルに出力する。これにより、スレーブデバイス200−3は、アドレス0xA2を自分へのアクセスとして認知し、対象レジスタへのライトを完了してACKを返信するまでI2Cバスを占有する。なお、図17(B)には、マスタデバイス100がスレーブデバイス200−1内のレジスタに対するライトを行なう場合の例が示されており、マスタデバイス100は、スレーブデバイス200−3以外のスレーブデバイス200に対しても上述と同様にライトを行なう。
マスタデバイス100が複数のスレーブデバイス200にアクセスし同一データのライトを行なう場合、図17(A)や図17(B)に示す処理が、例えば図18に示すように繰り返しシリアルに行なわれる。図18では、一のマスタデバイス(MDと略記)が5個のスレーブデバイス(それぞれSD#1〜SD#5と略記)に対してライト(Write)アクセスを行なう際の処理手順(ステップS101〜S120)が示されている。
このとき、図18に示すように、まず、MDは、SD#1のアドレスを指定し、SD#1に対しライトアクセス開始信号“H(High;1)”を含むライトコマンドを送信する(ステップS101)。SD#1は、MDからのアドレスによって自身に対するライトコマンドを認知すると、当該ライトコマンドを受信し(ステップS102)、当該ライトコマンドに応じた書込みを行なった後、ACK信号“L(Low;0)”をMDへ送信する(ステップS103)。MDは、SD#1からACK信号を受信すると(ステップS104)、SD#2に対するアクセスを、上述したSD#1に対する処理(ステップS105〜S108)と同様の手順で行なう。以下、同様に、MDは、SD#3に対するアクセス(ステップS109〜S112)、SD#4に対するアクセス(ステップS113〜S116)、SD#5に対するアクセス(ステップS117〜S120)を順次実行する。
特開2013−175128号公報 特開2006−11926号公報 特開2010−128909号公報
上述のように、各SDに一意のアドレスが設定されている場合に各SDに対し同一データを書き込む際には、図18に示すように、SDの数だけ、同様の処理がシリアルに繰り返される。例えば一のMDとN個(Nは2以上の整数)のSDとを有するサーバ装置等の立上げ時に、同じ初期値をI2C通信方式によって各SDに設定する場合、MDは、同様の処理をN回繰り返すことになる。したがって、MDが最初のSDに対する書込みを開始してから最後のSDに対する書込みを完了するまでに要する時間は、SDの数Nに比例して増大する。つまり、SDの数Nが多くなるほど、当該装置の立上げ処理(データ転送処理)に多大な時間を要し、極めて非効率的である。
そこで、I2C通信方式では、例えば図19に示すように、複数のSD200に同一のI2Cアドレス(例えば0xA2)を設定することで、MD100から複数のSD200に対するデータ一斉送信つまりI2Cマルチキャストが行なわれる。これにより、MD100は、複数のSD200に対し同時にライトアクセスを行なうことが可能である。しかし、このとき、バス300上で各SD200からの応答信号(ACK)が衝突し、MD100とSD200との間でやり取りされるデータが壊れるなどの不具合が生じる場合がある。このように、単に同一のI2Cアドレスを複数のSD200に設定してデータ一斉送信を行なうだけでは、複数のSD200に対する同時アクセスを正常に実現することができない。
一つの側面で、本発明は、複数のデバイスに対する同時アクセスを実現することを目的とする。
本件のバス制御装置は、第1バッファ,第2バッファ,切替制御部,疑似応答生成部を有する。前記第1バッファは、第1デバイスと、同一アドレスが設定された複数の第2デバイスとを接続する複数のバスのそれぞれに、前記第1デバイスから各第2デバイスへのデータ転送を行なう。前記第2バッファは、各第2デバイスから前記第1デバイスへのデータ転送を行なう。前記切替制御部は、前記同一アドレスを用いた、前記第1デバイスから前記複数の第2デバイスへのデータ一斉送信要求に応じて、前記第1バッファを前記第1デバイスから各第2デバイスへのデータ転送許可状態に切り替えるとともに前記第2バッファを各第2デバイスから前記第1デバイスへのデータ転送禁止状態に切り替える。前記疑似応答生成部は、前記データ一斉送信要求に応じて各第2デバイスから前記第1デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第1デバイスへ返送する。
複数のデバイスに対する同時アクセスを実現することができる。
本発明の第1実施形態のバス制御装置を含むデータ転送システムの構成を示すブロック図である。 図1に示すACK生成部の構成を示すブロック図である。 図2に示すACK生成回路の制御論理を説明する図である。 (A)および(B)は図2に示すACK生成部の機能を説明するタイミングチャートである。 (A)〜(E)は図1に示すACKチェック部を説明する図で、(A)〜(D)はACKチェック部に入力される信号を示すタイミングチャート、(E)はACKチェック部の構成および機能を示すブロック図である。 図1に示すデータ転送システムにおけるI2Cマルチキャストによる一斉ライト動作時の状態を示す図である。 本発明の第2実施形態のバス制御装置を含むデータ転送システムの構成を示すブロック図である。 第2実施形態におけるI2Cマルチキャストによる一斉ライト動作および一斉リトライ動作を説明する図である。 第2実施形態における一斉ライト時および一斉リトライ時の切替制御部の動作を説明する図である。 第2実施形態における一斉ライト動作および一斉リトライ動作を説明するフローチャートである。 第2実施形態におけるI2Cマルチキャストによる一斉ライト動作および個別リトライ動作を説明する図である。 第2実施形態における個別リトライ時の切替制御部の動作を説明する図である。 第2実施形態における一斉ライト動作および個別リトライ動作を説明するフローチャートである。 第2実施形態におけるI2Cマルチキャストによる個別リード動作を説明する図である。 第2実施形態における個別リード時の切替制御部の動作を説明する図である。 第2実施形態における個別リード動作を説明するフローチャートである。 (A)および(B)は一般的なI2Cツリー構成およびI2Cの通信手順を説明する図である。 一のマスタデバイスが5個のスレーブデバイスに対してライトアクセスを行なう際の処理手順を示す図である。 I2Cマルチキャストを説明する図である。
以下に、図面を参照し、本願の開示するバス制御装置、データ転送システム、及びバス制御方法の実施形態について、詳細に説明する。ただし、以下に示す実施形態は、あくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能を含むことができる。そして、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
〔1〕第1実施形態
〔1−1〕第1実施形態の構成
まず、図1に示すブロック図を参照しながら、本発明の第1実施形態のバス制御装置4を含むデータ転送システム1の構成について説明する。
データ転送システム1は、一のマスタデバイス(I2C Master;MD;第1デバイス)2と、複数(図中3個)のスレーブデバイス(I2C Slave;SD;第2デバイス)3とを含む。デバイス2,3によって、各種装置、例えばサーバ装置が構成される。なお、以下の説明では、3個のスレーブデバイスのうちの一つを特定する場合には符号3−1,3−2,3−3が用られ、任意のスレーブデバイスを指す場合には符号3が用いられる。
サーバ装置等の立上げ時にI2C通信方式によって初期値をMD2から各SD3に設定すべく、MD2と複数のSD3とは、I2Cバス5a,5bを介して接続される。ここで、一のMD2にはI2Cバス5aが接続され、I2Cバス5aから3本のI2Cバス5b−1,5b−2,5b−3が分岐され、3個のSD3−1,3−2,3−3にそれぞれI2Cバス5b−1,5b−2,5b−3が接続される。なお、以下の説明では、3本のI2Cバスのうちの一つを特定する場合には符号5b−1,5b−2,5b−3が用られ、任意のI2Cバスを指す場合には符号5bが用いられる。
上述したI2Cバス5a,5bや後述するI2Cバス5c〜5eは、シリアルインタフェースバスであり、各バス5a〜5eは、2本の信号線、つまりSDA信号線とSCL信号線とで構成される。また、本実施形態では、MD2から複数のSD3に対するデータ一斉送信つまりI2Cマルチキャスト(同時アクセス)を行なうべく、複数のSD3には、同一のI2Cアドレス(例えば0xA2)が設定される。
MD2と複数のSD3との間におけるバス5a,5b上には、当該バス5a,5bを制御するバス制御装置4が備えられる。バス制御装置4は、双方向バッファ10−1,10−2,10−3と切替制御部20と疑似ACK生成部30とACKチェック部40とを有する。
双方向バッファ10−1,10−2,10−3は、それぞれ、SD3−1,3−2,3−3に対応して備えられ、バス5b−1,5b−2,5b−3に介装される。なお、以下の説明では、3個の双方向バッファのうちの一つを特定する場合には符号10−1,10−2,10−3が用られ、任意の双方向バッファを指す場合には符号10が用いられる。
各双方向バッファ10は、第1バッファ10aおよび第2バッファ10bを有する。
第1バッファ10aは、各バス5bにおいて一方向つまりMD2から各SD3へのデータ転送(アクセス)を可能にするもので、例えばスリーステートバッファによって構成される。第1バッファ(スリーステートバッファ)10aは、制御入力端子を有し、当該制御入力端子には、制御信号線6aを介して切替制御部20が接続されている。第1バッファ10aは、切替制御部20からの制御信号によってイネーブル(enable)/ディセーブル(disable)状態を切替制御される。例えば、本実施形態では、第1バッファ10aへの制御信号がL(Low)つまり“0”である場合、第1バッファ10aは、イネーブル状態となり、MD2から各SD3へのデータ転送許可状態に切り替えられる。一方、第1バッファ10aへの制御信号がH(High)つまり“1”である場合、第1バッファ10aは、ディセーブル状態となり、MD2から各SD3へのデータ転送禁止状態に切り替えられる。
第2バッファ10bは、各バス5bにおいて逆方向つまり各SD3からMD2へのデータ転送(アクセス)を可能にするもので、例えばスリーステートバッファによって構成される。第2バッファ(スリーステートバッファ)10bは、制御入力端子を有し、当該制御入力端子には、制御信号線6bを介して切替制御部20が接続されている。第2バッファ10bは、切替制御部20からの制御信号によってイネーブル/ディセーブル状態を切替制御される。例えば、本実施形態では、第2バッファ10bへの制御信号がLつまり“0”である場合、第2バッファ10bは、イネーブル状態となり、各SD3からMD2へのデータ転送許可状態に切り替えられる。一方、第2バッファ10bへの制御信号がHつまり“1”である場合、第2バッファ10bは、ディセーブル状態となり、各SD3からMD2へのデータ転送禁止状態に切り替えられる。
なお、双方向バッファ10−1のバッファ10a,10bの制御入力端子には、それぞれ制御信号線6a−1,6b−1を介して切替制御部20が接続される。また、双方向バッファ10−2のバッファ10a,10bの制御入力端子には、それぞれ制御信号線6a−2,6b−2を介して切替制御部20が接続される。さらに、双方向バッファ10−3のバッファ10a,10bの制御入力端子には、それぞれ制御信号線6a−3,6b−3を介して切替制御部20が接続される。制御信号線の一つを特定する場合には符号6a−1,6b−1,6a−2,6b−2,6a−3,6b−3が用いられ、任意の制御信号線を指す場合には符号6a,6bが用いられる。
切替制御部20は、I2Cバス5aと当該I2Cバス5aから分岐するI2Cバス5dとを介してMD2に接続され、MD2によって制御され、各バッファ10a,10bの状態および疑似ACK生成部30の状態を制御する。なお、切替制御部20は、MD2によってアクセスされる各SD3と同種のデバイスによって構成され、MD2は、I2Cバス5a,5dを介しI2C通信によって切替制御部20の動作を制御可能になっている。このとき、MD2の書込み対象である各SD3のアドレス(例えば0xA2)と異なる切替制御部20固有のI2Cアドレス(例えば0xA0)が、切替制御部20に設定される。これにより、MD2は、各SD3に対する書込み時に切替制御部20を誤って動作させることを抑止可能であり、また、切替制御部20の制御時に各SD3を誤って動作させることを抑止可能になっている。切替制御部20の具体的な機能については後述する。
疑似ACK生成部(疑似応答生成部)30は、I2Cバス5aに介装され、MD2によるデータ一斉送信(I2Cマルチキャスト)に応じて各SD3からMD2へ返送されるACKを模した疑似ACK(疑似応答信号)を生成してMD2へ返送する。疑似ACK生成部30は、制御入力端子(後述する疑似ACK生成回路31のイネーブル端子;図2参照)を有し、当該制御入力端子には、制御信号線6−0を介して切替制御部20が接続されている。
疑似ACK生成部30は、切替制御部20からの制御信号ACK_ENによってイネーブル/ディセーブル状態を切替制御される。例えば図3に示すように、本実施形態では、疑似ACK生成部30への制御信号ACK_ENがLつまり“0”である場合、疑似ACK生成部30は、イネーブル状態となり、疑似ACKを生成する状態(ACK generation)に切り替えられる。一方、疑似ACK生成部30への制御信号ACK_ENがHつまり“1”である場合、疑似ACK生成部30は、ディセーブル状態となり、I2Cバス5aの信号をそのまま通過させる状態(Pass through)に切り替えられる。疑似ACK生成部30の具体的な構成および機能については、図2〜図4を参照しながら後述する。
ACKチェック部40は、バス5b−1,5b−2,5b−3からそれぞれ分岐するI2Cバス5c−1,5c−2,5c−3に接続されるとともに、I2Cバス5eを介してMD2に接続される。なお、以下の説明では、3本のI2Cバスのうちの一つを特定する場合には符号5c−1,5c−2,5c−3が用られ、任意のI2Cバスを指す場合には符号5cが用いられる。
ACKチェック部40は、少なくとも、エラーフラグレジスタ43(図5(E)参照)およびI2Cコントローラ44(図5(E)参照)を有している。エラーフラグレジスタ43は、各バス5b,5cを介して各SD3からACKを受信してACKの状態(0または1)を保存する保存部として機能する。I2Cコントローラ44は、バス5eを介してMD2からの状態返送要求を受けると、当該状態返送要求に応じて、エラーフラグレジスタ43からACKの状態を読み出してMD2へ返送する返送制御部として機能する。ACKチェック部40の具体的な構成および機能については、図5を参照しながら後述する。
〔1−2〕切替制御部(enable control)
ここで、下記項目[A1]〜[A4]において、切替制御部20の具体的な切替機能について説明する。切替制御部20は、バス5a,5dを介しMD2によって制御され、各双方向バッファ10におけるスリーステートバッファ10a,10bの制御入力端子への制御信号をL(0)またはH(1)に切り替える。これにより、切替制御部20は、各バッファ10a,10bをデータ転送許可状態もしくはデータ転送禁止状態に切り替える。同様に、切替制御部20は、バス5a,5dを介しMD2によって制御され、疑似ACK生成部30への制御信号ACK_ENをL(0)またはH(1)に切り替える。これにより、切替制御部20は、疑似ACK生成部30を、疑似ACKを生成する状態、または、I2Cバス5aの信号をそのまま通過させる状態に切り替える。
[A1]MD2が複数のSD3へのデータ一斉送信要求つまりI2Cマルチキャストによる一斉ライト要求を行なう場合、切替制御部20は、疑似ACK生成部30への制御信号ACK_ENをL(0)に切り替え、疑似ACK生成部30を、疑似ACKを生成する状態に切り替える。さらに、切替制御部20は、各第1バッファ10aへの制御信号をL(0)に切り替え、各第1バッファ10aをデータ転送許可状態に切り替える一方、各第2バッファ10bへの制御信号をH(1)に切り替え、各第2バッファ10bをデータ転送禁止状態に切り替える。このような切替機能の詳細については、図6(第1実施形態)や図8〜図10(第2実施形態)を参照しながら後述する。
[A2]ACKチェック部40のI2Cコントローラ44から返送されたACKの状態が異常(1)を示す際にMD2が全てのSD3に対する一斉リトライ要求(再送信要求)を行なう場合、切替制御部20は、上記項目[A1]と同様の切替制御を行なう。当該切替制御後、MD2は、複数のSD3へのデータ一斉送信つまりI2Cマルチキャストによる一斉ライトを再実行することで、一斉リトライを実行する
[A3]ACKチェック部40のI2Cコントローラ44から返送されたACKの状態が異常(1)を示す際にMD2が異常を示すバスに対応するSD3に対する個別リトライ要求(再送信要求)を行なう場合、切替制御部20は、以下のような切替制御を行なう。つまり、切替制御部20は、疑似ACK生成部30への制御信号ACK_ENをL(0)に切り替え、疑似ACK生成部30を、疑似ACKを生成する状態に切り替える。さらに、切替制御部20は、異常を示すバスに対応するSD3を特定し、特定したSD3に対応する第1バッファ10aへの制御信号をL(0)に切り替え、当該第1バッファ10aをデータ転送許可状態に切り替える。一方、切替制御部20は、特定したSD3に対応する第1バッファ10a以外の対象外バッファ10a,10bへの制御信号をH(1)に切り替え、当該対象外バッファ10a,10bをデータ転送禁止状態に切り替える。当該切替制御後、MD2は、複数のSD3へのデータ一斉送信つまりI2Cマルチキャストによる一斉ライトを再実行することで、個別リトライを実行する。このような切替機能の詳細については、図11〜図13(第2実施形態)を参照しながら後述する。
[A4]MD2が複数のSD3のうちの特定のSD3におけるデータを読み出す場合、当該特定のSD3におけるデータの読出要求に応じて、切替制御部20は、以下のような切替制御を行なう。つまり、切替制御部20は、疑似ACK生成部30への制御信号ACK_ENをH(1)に切り替え、疑似ACK生成部30を、I2Cバス5aの信号をそのまま通過させる状態に切り替える。さらに、切替制御部20は、当該特定のSD3に対応する第1バッファ10aおよび第2バッファ10bへの制御信号をL(0)に切り替え、当該第1バッファ10aおよび第2バッファ10bをデータ転送許可状態に切り替える。一方、切替制御部20は、当該特定のSD3に対応する第1バッファ10aおよび第2バッファ10b以外の対象外バッファ10a,10bへの制御信号をH(1)に切り替え、当該対象外バッファ10a,10bをデータ転送禁止状態に切り替える。当該切替制御後、MD2は、I2Cマルチキャストによる一斉リードを実行することで、特定のSD3に対する個別リードを実行する。このような切替機能の詳細については、図14〜図16(第2実施形態)を参照しながら後述する。
なお、切替制御部20の切替機能[A1]〜[A4]は、各SD3と同種のデバイスによって実現されているが、MD2に内蔵されMD2によって実現されてもよい。
〔1−3〕疑似ACK生成部(ACK generator)
ついで、図2〜図4を参照しながら、疑似ACK生成部30の具体的な構成および機能について説明する。図2はACK生成部30の構成を示すブロック図、図3は図2に示すACK生成回路31の制御論理を説明する図、図4(A)および図4(B)はACK生成部30の機能を説明するタイミングチャートである。
図4(A)および図4(B)は、一般的なI2Cアクセスのバスにおける信号挙動を示しており、図4(A)は、例えばI2Cバス5aのSDA信号線の信号挙動を示し、図4(B)は、例えばI2Cバス5aのSCL信号線の信号挙動を示している。SDA信号とSCL信号との状態が開始条件(START condition)Sを満たすと、MD2から各SD3へのデータ送信が開始される。当該データ送信は、8ビット単位で行なわれ、MD2が8ビット分のデータ送信を行なうと、当該8ビット分のデータ送信に対する応答信号が、9ビット目のデータとしてSD3からMD2へ返送される。当該応答信号は、L(Low)状態であれば8ビット分のデータを正常に受信したことを示すACKになる一方、H(High)状態であれば8ビット分のデータを正常に受信しなかったことを示すNACKになる。
MD2は、応答信号としてACKを受信すると、次のコマンド列もしくはデータ列を送信する。図4(A)に示すSDAにおいては、最初の8ビットのうちの7ビットで送信先SD3のアドレスが指定され、最初の8ビットのうちの1ビットでリードまたはライトが指定される。最初の8ビットに対し9ビット目にACKが応答されると、次の8ビットで送信先SD3におけるアクセス対象レジスタのアドレスが指定される。当該アドレスに対し9ビット目にACKが応答されると、次の8ビットでライトデータもしくはリードデータがやり取りされる。そして、9ビット目にACKが応答され、SDA信号とSCL信号との状態が停止条件(STOP condition)Pを満たすと、MD2から各SD3へのアクセスが終了する。
本実施形態では、MD2が一斉ライト,一斉リトライ,個別リトライを行なう際、各第2バッファ10bをデータ転送禁止状態に切り替えることで、各SD3からの実際のACK(もしくはNACK)がMD2に返送されるのを抑止している。これにより、図19に示すごとき応答信号の衝突が発生するのを防止している。しかし、各SD3からのACKの返送を抑止すると、MD2は、8ビット分のデータについてのアクセスが完結せず、以降のアクセスを継続することができない。
そこで、疑似ACK生成部30は、図4(A)に示すごとく、SDAにおいて、MD2とSD3との間で8ビット単位のデータをやり取りする都度、9ビット目のSDAの状態をL(Low)にする。つまり、疑似ACK生成部30は、I2Cバス5a上でSD3からMD2への疑似ACKを生成しMD2に返送する機能を果たす。当該機能を実現すべく、ACK生成部30は、CPLD(Complex Programmable Logic Device),FPGA(Field Programmable Gate Array)等によって構成され、図2に示すように、疑似ACK生成回路31およびクロックカウンタ32としての機能を有する。
クロックカウンタ32は、I2Cバス5aのSCL信号線に接続され、データ送信開始後に当該SCL信号線を通過するクロック数を計数し、9クロック目(9の倍数のクロック)を計数する度にトリガ信号をACK生成回路31に出力する。
疑似ACK生成回路31は、I2Cバス5aのSDA信号線に介装し、トリガ端子およびイネーブル端子を有している。前述の通り、イネーブル端子(制御入力端子)に、制御信号線6−0を介して切替制御部20から制御信号ACK_ENが入力される。図3に示すように、制御信号ACK_ENがL(Low)である場合、疑似ACK生成回路31は、イネーブル状態となり、疑似ACKを生成する状態(ACK generation)に切り替えられる。これにより、疑似ACK生成機能が有効化される。一方、制御信号ACK_ENがH(High)である場合、疑似ACK生成回路31は、ディセーブル状態となって疑似ACK生成機能が無効化され、I2Cバス5aの信号をそのまま通過させる状態(Pass through)に切り替えられる。
疑似ACK生成回路31は、L状態の制御信号ACK_ENを入力され疑似ACK生成機能を有効化されると、図4に示すタイミングで、I2Cバス5aのSDA信号線をL状態にする。つまり、疑似ACK生成回路31は、応答信号として疑似ACKを生成してI2Cバス5aのSDA信号線に出力する。疑似ACKを生成するタイミング(SDAをLowにするタイミング)は、トリガ端子にクロックカウンタ32からのトリガ信号を入力されるタイミング、つまりクロックカウンタ32がデータ送信を開始してからクロックを9の倍数カウントするタイミングである。
〔1−4〕ACKチェック部
ついで、図5(A)〜図5(E)を参照しながら、ACKチェック部40の具体的な構成および機能について説明する。図5(A)〜図5(D)はACKチェック部40に入力される信号を示すタイミングチャート、図5(E)はACKチェック部40の構成および機能を示すブロック図である。
前述した通り、本実施形態では、MD2が一斉ライト,一斉リトライ,個別リトライを行なう際、各第2バッファ10bをデータ転送禁止状態に切り替えることで、各SD3からの実際のACK(もしくはNACK)がMD2に返送されるのを抑止している。これにより、図19に示すごとき応答信号の衝突が発生するのを防止している。しかし、この場合、MD2は、実際に各SD3においてライトアクセスやリトライアクセスに成功しているか否かを確認することができない。
そこで、ACKチェック部40は、各SD3から返送されるACK(またはNACK)の状態を保存し、保存した状態を、MD2からの状態返送要求に応じてMD2へ返送する機能を果たす。これにより、MD2は、各SD3からの実際のACKをチェックすることが可能になっている。当該機能を実現すべく、ACKチェック部40は、CPLD,FPGA等によって構成され、図5(E)に示すように、エラー判断ロジック41,クロックカウンタ42,エラーフラグレジスタ43およびI2Cコントローラ44としての機能を有する。
クロックカウンタ42は、図5(D)に示すように、I2Cバス5c(バス5c−1,5c−2,5c−3のいずれか)のSCL信号線に接続される。そして、クロックカウンタ42は、前述したクロックカウンタ32と同様、データ送信開始後に当該SCL信号線を通過するクロック数を計数し、9クロック目(9の倍数のクロック)を計数する度にトリガ信号(H(1)状態)をエラー判断ロジック41に出力する。
エラー判断ロジック41は、3つのSD3−1,3−2,3−3(I2Cバス5c−1,5c−2,5c−3)にそれぞれ対応するANDゲート411−1,411−2,411−3を有する。なお、図5において、I2Cバス5c−1,5c−2,5c−3をそれぞれBUS#0, BUS#1, BUS#2と表記する。また、SDA信号線の9ビット目のデータは、各SD3からの応答信号で、“0”の場合、ACKであり、“1”の場合、NACKである。また、3つのANDゲートのうちの一つを特定する場合には符号411−1,411−2,411−3が用られ、任意のANDゲートを指す場合には符号411が用いられる。
ANDゲート411−1は、図5(A)に示すSD3−1からのSDA信号と、9クロック毎に立ち上がるクロックカウンタ42からのトリガ信号との論理積を出力する。また、ANDゲート411−2は、図5(B)に示すSD3−2からのSDA信号と、9クロック毎に立ち上がるクロックカウンタ42からのトリガ信号との論理積を出力する。同様に、ANDゲート411−3は、図5(C)に示すSD3−3からのSDA信号と、9クロック毎に立ち上がるクロックカウンタ42からのトリガ信号との論理積を出力する。
SDA信号は、9クロック毎に、各SD3からのACKの状態を示すACK/NACKビットになる。当該ACK/NACKビットが0(レベルがLow)の場合、各SD3でのアクセス結果は正常(OK)である一方、当該ACK/NACKビットが1(レベルがHigh)の場合、各SD3でのアクセス結果は異常(NG)であると判断することができる。ANDゲート411は、9クロック毎に、Hレベルのトリガ信号とSDA信号のACK/NACKビットとの論理積を出力する。これにより、ANDゲート411は、ACK/NACKビットが0の場合に正常状態を示す0(ACK)を出力し、ACK/NACKビットが1の場合に異常状態(エラー状態)を示す1(NACK)を出力する。
エラーフラグレジスタ(保存部)43は、3つのANDゲート411−1,411−2,411−3にそれぞれ対応するBUS#0用ビット431−1,BUS#1用ビット431−2,BUS#2用ビット431−3を有する。なお、3つのビットのうちの一つを特定する場合には符号431−1,431−2,431−3が用られ、任意のビットを指す場合には符号431が用いられる。
BUS#0用ビット431−1は、ANDゲート411−1の出力が“0”である場合つまりSD3−1でのアクセス結果が正常である場合、“0”を保持する。一方、BUS#0用ビット431−1は、ANDゲート411−1の出力が“1”になった場合つまりSD3−1でのアクセス結果が異常である場合、“1”を保存する。
また、BUS#1用ビット431−2は、ANDゲート411−2の出力が“0”である場合つまりSD3−2でのアクセス結果が正常である場合、“0”を保持する。一方、BUS#1用ビット431−2は、ANDゲート411−2の出力が“1”になった場合つまりSD3−2でのアクセス結果が異常である場合、“1”を保存する。
同様に、BUS#2用ビット431−3は、ANDゲート411−3の出力が“0”である場合つまりSD3−3でのアクセス結果が正常である場合、“0”を保持する。一方、BUS#2用ビット431−3は、ANDゲート411−3の出力が“1”になった場合つまりSD3−3でのアクセス結果が異常である場合、“1”を保存する。
I2Cコントローラ(返送制御部)44は、前述した通り、バス5eを介してMD2からの状態返送要求を受けると、当該状態返送要求に応じて、エラーフラグレジスタ43から各ビット431に保存されている値(正常の場合0、異常の場合1)を読み出す。このとき、I2Cコントローラ44は、I2Cバス経由でレジスタ43にアクセスして各ビット431の値を読み出し、当該値が異常を示す場合(1である場合)、その旨をI2Cバス5eを介してMD2へ返送する。なお、異常を示す値“1”を保存するビット431がある場合、I2Cコントローラ44は、当該異常を示すバス5c(当該バス5cに接続されるSD3)を特定する識別情報をMD2に返送する。
なお、図5(A)〜図5(E)では、SD3−3でのアクセス結果が異常でありI2Cバス5c−3のSDA信号の9ビット目のレベルがH状態である場合の例が示されている。この場合、SCLの9クロック目でクロックカウンタ42のトリガ信号が立ち上がると、ANDゲート411−3の出力がNGを示す“1”となり、BUS#2用ビット431−3に“1”が保存される。MD2は、I2Cバス5eおよびI2Cコントローラ44を介してエラーフラグレジスタ43を参照することで、SD3−3でのアクセス結果の異常を認識することができる。これに応じ、MD2は、上述したような一斉リトライもしくは個別リトライを実行する。
〔1−5〕第1実施形態の動作
次に、上述のごとき構成および機能を有する第1実施形態のバス制御装置4の動作について、図1〜図6を参照しながら説明する。なお、図6は、図1に示すデータ転送システム1におけるI2Cマルチキャスト(データ一斉送信)による一斉ライト動作時の状態を示す図である。
図1に、MD2から複数のSD3に対して一斉に同時アクセスすることを可能にする構成が示されている。図1に示すように、MD2と複数のSD3との間には、双方向バッファ10,切替制御部20,疑似ACK生成部30およびACKチェック部40が介装されている。
MD2から複数のSD3に対して一斉に同時アクセスすることを実現するには、図19を参照しながら前述したように、複数のSD3に同一のI2Cアドレス(例えば0xA2)を設定する。これにより、MD2から複数のSD3に対する同時アクセス(I2Cマルチキャスト)を行なうことが可能になる。しかし、図19を参照しながら前述したように、複数のSD3からの応答が衝突してしまう。
このような応答の衝突を回避すべく、各双方向バッファ10には、スリーステートバッファである第1バッファ10aおよび第2バッファ10bが備えられる。第1バッファ10aおよび第2バッファ10bは、切替制御部20によってイネーブル/ディセーブル制御される。このとき、図6に示すように、第1バッファ10aをイネーブル状態とし且つ第2バッファ10bをディセーブル状態とする。これに伴い、双方向バッファ10は、MD2から各SD3へのアクセスを行なうことは可能であるが、各SD3からMD2へのデータ送信を行なえない状態になる。これにより、各SD3からの応答信号の衝突を確実に抑止でき、MD2とSD3との間でやり取りされるデータが壊れるなどの不具合の発生を確実に防止できる。
このとき、各SD3からMD2への第2バッファ10bをディセーブル状態にすることで、各SD3からMD2への応答(ACK)が返送されなくなる。ACKが返送されないままではアクセスが完結しない。そこで、バス制御装置4では、図2〜図4を参照しながら前述したように、イネーブル状態の疑似ACK生成部30によって図6に示すごとく疑似ACKが生成されてMD2に返送される。これにより、MD2は、アクセス(例えばSD3に対するライトコマンド処理)を確実に完結させることができる。
また、本実施形態では、複数のSD3のうちの一つのみ(特定SD3)に対するアクセスも可能にすべく、疑似ACK生成部30も、切替制御部20によってイネーブル/ディセーブル制御される。特定SD3のみに対しアクセスする際には、上記項目[A4]の切替機能で説明したように、疑似ACK生成部30はディセーブル状態に切り替えられる。また、同時に、特定SD3に対応するバッファ10a,10bのみがデータ転送許可状態にされ、その他のバッファ10a,10bはデータ転送禁止状態にされる。これにより、MD2は、同一のアドレスを設定された複数のSD3に対しI2Cマルチキャストを行なっても、特定SD3のみを対象とするアクセスを、従来通り行なうことができる。
さらに、項目[A1]の切替機能で説明したように、一斉ライト時には、MD2からSD3方向への第1バッファ10aをイネーブル状態とすることで、全てのSD3へのアクセス経路が有効化されデータ転送許可状態に切り替えられる。また、SD3からMD2方向への第2バッファ10bをディセーブル状態することで、MD2へのアクセス経路が無効化されデータ転送禁止状態に切り替えられる。この状態で、MD2は、特定のアドレス(例えば0xA2)に対しアクセス(コマンド)を実施すれば、全てのSD3は、当該アクセスを自身へのアクセスであると認識し応答(ACK)を返送する。この応答のMD2への返送は禁止されるが、図6に示すように、疑似ACK生成部30によって生成された疑似ACKがMD2へ送信されるため、MD2もコマンドが実行されたものと認識し、当該コマンドの処理が終了する。
さて、本実施形態では、疑似ACK生成部30によってACKを疑似的に生成しているため、MD2は、疑似ACKを受けても、実際のライトアクセス(一斉ライト)に成功しているか否かを確認することができない。そこで、本実施形態では、図5を参照しながら前述したACKチェック部40が備えられている。
ACKチェック部40は、各SD3に接続されるI2Cバス5c(SDA信号線)の挙動を監視しており、MD2は、ACKチェック部40による監視結果を参照することで、各SD3において正常にアクセスが完了したか否かを判断する。つまり、ACKチェック部40は、MD2からのアクセスについて、9クロックを計数する都度、各SD3のバス5aのSDA信号のレベルがLowに落ちているか否かを監視し、各SD3がACKを応答しているか否かを判断する。ACKチェック部40は、当該判断をすべてのSD3に対して行なう。
ACKチェック部40は、上記判断結果として、各SD3でのアクセス成否の情報(アクセス結果の正常/異常)を、エラーフラグレジスタ43に保持する。MD2は、I2Cバス5eおよびI2Cコントローラ44を介して、エラーフラグレジスタ43の情報を読み込むことにより、どのバス5cでアクセスに失敗しているか、つまりはどのSD3でアクセスに失敗しているかを認識することができる。MD2は、アクセスに失敗していることを認識した場合、上記項目[A2]で説明した切替機能を用いて一斉リトライを行なうか、もしくは、アクセスに失敗したSD3を特定した上で、上記項目[A3]で説明した切替機能を用いて個別リトライを行なう。
一方、特定のSD3における設定値等を読み出す場合、上記項目[A4]で説明した切替機能を用いて、当該特定のSD3に対応するバス5b上のバッファ10a,10bのみを有効にするとともに、疑似ACK生成部30の機能をディセーブル状態にする。本実施形態では、複数のSD3について同一のI2Cアドレスが共通に用いられるため、アドレスによって各SD3の個別アクセスを行なうことができない。そこで、上述のように特定のSD3に対応するアクセス経路(バッファ10)のみを有効化することで、特定のSD3に対する個別アクセスが実現される。このような個別アクセスによって特定のSD3から読み出されたデータは、ディセーブル状態の疑似ACK生成部30をそのまま通過し、MD2に送信される。
〔1−6〕第1実施形態の効果
このように、第1実施形態のバス制御装置4によれば、MD2から、同一アドレスを付与された複数のSD3へのデータ一斉送信時(I2Cマルチキャスト時)には、第1バッファ10aによって、MD2から各SD3へのデータ転送が可能な状態にされる。これと同時に、第2バッファ10bによって各SD3からMD2へのデータ転送は抑止される。これにより、複数のSD3からの応答の衝突が回避され、MD2とSD3との間でやり取りされるデータが壊れるなどの不具合の発生が確実に防止される。
このとき、各SD3からMD2への応答(ACK)が返送されなくなるが、イネーブル状態の疑似ACK生成部30によって疑似ACKが生成されてMD2に返送される。これにより、MD2は、SD3に対するライトアクセス等のコマンド処理を確実に完結させることができる。
また、第1実施形態では、ACKチェック部40によって、各SD3でのアクセス結果の正常/異常に関する情報が保持される。したがって、MD2は、I2Cバス5eおよびI2Cコントローラ44を介して当該情報を読み込むことにより、どのSD3でアクセスに失敗しているかを正確に認識し、アクセスに失敗したSD3に対し、ライトアクセスのリトライを行なうことができる。
さらに、第1実施形態では、特定のSD3における設定値等を読み出す場合、特定のSD3に対応するアクセス経路上のバッファ10のみを有効化することで、特定のSD3に対する個別アクセスが実現される。このような個別アクセスによって特定のSD3から読み出されたデータは、ディセーブル状態の疑似ACK生成部30をそのまま通過し、MD2に送信されるため、通常通りのリードアクセスを行なうことができる。
以上のように、第1実施形態によれば、ライト時にはMD2は複数のSD3に対する同時一斉アクセスが可能になり、且つ、リード時には各SD3に対する個別アクセスが可能になる。これにより、通所のI2Cアクセスの機能を損なうことなく、複数のSD3に対するライトアクセスに要する時間を大幅に短縮することができる。
また、例えば、サーバ装置等の立上げ時には、当該サーバ装置等を構成する各ユニットに対し初期情報を設定すべく、I2Cを使用して各SD3へ初期設定値が書き込まれる。その際、複数の同一のユニットが備えられている場合、全く同じデータを複数のSD3に書き込む必要があり、その書込み処理をシリアルに実行すると(図18参照)、SD3の数が多ければ多いほど装置の立上げに多大な時間を要することになる。
これに対し、第1実施形態によれば、上述のごとく、通常のI2Cアクセスの機能を損なうことなく、複数のデバイスに対する同時アクセスを正常に実現することができる。これにより、同じアクセス内容を個々のSD3にインプリメントするファームウエアの工数削減され、アクセス処理に関する作業が効率化される。また、シリアルアクセスに代えて一斉に同時アクセスを採用することが可能になったことに伴い、ライトアクセス処理に要する時間が大幅に短縮される。したがって、出荷前試験時の装置立上げ処理や実運用時の装置立上げ処理が高速化されるので、試験等の作業時間が短縮されるほか、スピーディな実運用を実現することができる。
〔2〕第2実施形態
〔2−1〕第2実施形態の構成
ついで、図7に示すブロック図を参照しながら、本発明の第2実施形態のバス制御装置4Aを含むデータ転送システム1Aの構成について説明する。なお、既述の符号と同一の符号は、同一もしくはほぼ同一の部分を示しているので、その説明は省略する。
第2実施形態のデータ転送システム1Aは、図7に示すように、第1実施形態のデータ転送システム1におけるバス制御装置4に代えてバス制御装置4Aを備えた点で第1実施形態と異なっている。また、第2実施形態のバス制御装置4Aは、第1実施形態のバス制御装置4とほぼ同様に構成されているが、図7に示すように、第1実施形態の双方向バッファ10−1,10−2,10−3に代えて双方向バッファ10A−1,10A−2,10A−3を備えた点で第1実施形態と異なっている。なお、以下の説明では、3個の双方向バッファのうちの一つを特定する場合には符号10A−1,10A−2,10A−3が用られ、任意の双方向バッファを指す場合には符号10Aが用いられる。
以下では、第2実施形態の双方向バッファ10Aの構成について説明する。図7に示すように、各双方向バッファ10Aにおいては、第1実施形態の第1バッファ(スリーステートバッファ)10aに代えて第1バッファ10a′およびスイッチ11aが備えられている。同様に、各双方向バッファ10Aにおいては、第1実施形態の第2バッファ(スリーステートバッファ)10bに代えて第2バッファ10b′およびスイッチ11bが備えられている。
第1バッファ10a′は、アクセス方向を制限するためのバッファであり、MD2から各SD3へのデータ転送のみを許容する。第1バッファ10a′は、SCL入力端子[1A]およびSDA入力端子[2A]と、SCL出力端子[1Y]およびSDA出力端子[2Y]とを有する。第1バッファ10a′のSCL入力端子[1A]およびSDA入力端子[2A]には、それぞれ、スイッチ11aの端子[1B]および端子[2B]が接続される。また、第1バッファ10a′のSCL出力端子[1Y]およびSDA出力端子[2Y]には、それぞれ、I2Cバス5bを介してSD3のSCL端子[SCL]およびSDA端子[SDA]が接続される。さらに、第1バッファ10a′のSCL出力端子[1Y]およびSDA出力端子[2Y]には、図に示すように、I2Cバス5cを介してACKチェック部40が接続される。
第2バッファ10b′は、アクセス方向を制限するためのバッファであり、各SD3からMD2へのデータ転送のみを許容する。第2バッファ10b′も、SCL入力端子[1A]およびSDA入力端子[2A]と、SCL出力端子[1Y]およびSDA出力端子[2Y]とを有する。第2バッファ10b′のSCL出力端子[1Y]およびSDA出力端子[2Y]には、それぞれ、スイッチ11bの端子[1B]および端子[2B]が接続される。また、第2バッファ10b′のSCL入力端子[1A]およびSDA入力端子[2A]には、それぞれ、I2Cバス5bを介してSD3のSCL端子[SCL]およびSDA端子[SDA]が接続される。さらに、第2バッファ10b′のSCL入力端子[1A]およびSDA入力端子[2A]には、図5に示すように、I2Cバス5cを介してACKチェック部40が接続される。
スイッチ11aは、第1バッファ10a′への転送対象(SCL信号およびSCL信号)の入力を接断すべくI2Cバス5bを接続/接断する。スイッチ11aは、端子[1A], [2A], [1B], [2B]と、制御入力端子[1OE], [2OE]と、接断部11a−1,11a−2とを有する。スイッチ11aの端子[1A], [2A]には、それぞれ、I2Cバス5bのSCL信号線およびSDA信号線を介してI2Cバス5aのSCL信号線およびSDA信号線が接続される。スイッチ11aの端子[1B], [2B]には、それぞれ第1バッファ10a′のSCL入力端子[1A]およびSDA入力端子[2A]が接続される。なお、制御入力端子[1OE], [2OE]における“OE”はOutput Enableの略記である。
接断部11a−1は、スイッチ11aの端子[1A]と端子[1B]との間を接続/切断するもので、制御入力端子[1OE]に入力される制御信号がL(0;イネーブル)状態の場合にスイッチ11aの端子[1A]と端子[1B]との間を接続する。一方、接断部11a−1は、制御入力端子[1OE]に入力される制御信号がH(1;ディセーブル)状態の場合にスイッチ11aの端子[1A]と端子[1B]との間を切断する。同様に、接断部11a−2は、スイッチ11aの端子[2A]と端子[2B]との間を接続/切断するもので、制御入力端子[2OE]に入力される制御信号がL(0;イネーブル)状態の場合にスイッチ11aの端子[2A]と端子[2B]との間を接続する。一方、接断部11a−2は、制御入力端子[2OE]に入力される制御信号がH(1;ディセーブル)状態の場合にスイッチ11aの端子[2A]と端子[2B]との間を切断する。なお、制御入力端子[1OE], [2OE]には、同一の制御信号が入力される。また、図7では、接断部11a−1,11a−2の切断状態が図示されている。
スイッチ11bは、第2バッファ10b′からの転送対象(SCL信号およびSCL信号)の出力を接断すべくI2Cバス5bを接続/接断する。スイッチ11bも、端子[1A], [2A], [1B], [2B]と、制御入力端子[1OE], [2OE]と、接断部11b−1,11b−2とを有する。スイッチ11bの端子[1A], [2A]には、それぞれ、I2Cバス5bのSCL信号線およびSDA信号線を介してI2Cバス5aのSCL信号線およびSDA信号線が接続される。スイッチ11bの端子[1B], [2B]には、それぞれ第2バッファ10b′のSCL出力端子[1Y]およびSDA出力端子[2Y]が接続される。
接断部11b−1は、スイッチ11bの端子[1A]と端子[1B]との間を接続/切断するもので、制御入力端子[1OE]に入力される制御信号がL(0;イネーブル)状態の場合にスイッチ11bの端子[1A]と端子[1B]との間を接続する。一方、接断部11b−1は、制御入力端子[1OE]に入力される制御信号がH(1;ディセーブル)状態の場合にスイッチ11bの端子[1A]と端子[1B]との間を切断する。同様に、接断部11b−2は、スイッチ11bの端子[2A]と端子[2B]との間を接続/切断するもので、制御入力端子[2OE]に入力される制御信号がL(0;イネーブル)状態の場合にスイッチ11bの端子[2A]と端子[2B]との間を接続する。一方、接断部11a−2は、制御入力端子[2OE]に入力される制御信号がH(1;ディセーブル)状態の場合にスイッチ11bの端子[2A]と端子[2B]との間を切断する。なお、制御入力端子[1OE], [2OE]には、同一の制御信号が入力される。また、図7では、接断部11b−1,11b−2の切断状態が図示されている。
なお、第2実施形態の切替制御部20には、8個の制御出力端子[I/O 0.0]〜[I/O 0.7]が備えられている。これらのうち7個の制御出力端子[I/O 0.0]〜[I/O 0.6]には、それぞれ、第1実施形態で上述した制御信号線6−0,6a−1,6b−1,6a−2,6b−2,6a−3,6b−3が接続され、制御出力端子[I/O 0.7]は未使用である(図9,図12,図15参照)。
制御出力端子[I/O 0.0]は、制御信号線6−0を介して疑似ACK生成回路31のイネーブル端子(図2参照)に接続される。
制御出力端子[I/O 0.1]は、制御信号線6a−1を介して、双方向バッファ10A−1のスイッチ11aの制御入力端子[1OE], [2OE]に接続される。制御出力端子[I/O 0.2]は、制御信号線6b−1を介して、双方向バッファ10A−1のスイッチ11bの制御入力端子[1OE], [2OE]に接続される。
制御出力端子[I/O 0.3]は、制御信号線6a−2を介して、双方向バッファ10A−2のスイッチ11aの制御入力端子[1OE], [2OE]に接続される。制御出力端子[I/O 0.4]は、制御信号線6b−2を介して、双方向バッファ10A−2のスイッチ11bの制御入力端子[1OE], [2OE]に接続される。
制御出力端子[I/O 0.5]は、制御信号線6a−3を介して、双方向バッファ10A−3のスイッチ11aの制御入力端子[1OE], [2OE]に接続される。制御出力端子[I/O 0.6]は、制御信号線6b−3を介して、双方向バッファ10A−3のスイッチ11bの制御入力端子[1OE], [2OE]に接続される。
切替制御部20は、制御出力端子[I/O 0.1]〜[I/O 0.6]から出力される制御信号のイネーブル/ディセーブル状態を切替制御することで、各双方向バッファ10におけるスイッチ11a,11bの接断状態を切り替える。これにより、第1実施形態の双方向バッファ10と同様、第2実施形態の双方向バッファ10Aにおける第1バッファ10a′および第2バッファ10b′についても、データ転送許可状態もしくはデータ転送禁止状態の切替が制御される。
なお、切替制御部20にも、SD3と同様、SCL端子[SCL]およびSDA端子[SDA]が備えられ、これらのSCL端子[SCL]およびSDA端子[SDA]には、それぞれI2Cバス5dのSCL信号線およびSDA信号線を介してMD2に接続される。これにより、I2Cバス5dを介し、MD2によって、切替制御部20から出力される制御信号の設定値(イネーブル/ディセーブル状態)が切替制御される。また、SD3および切替制御部20のそれぞれには、端子[A0], [A1], [A2]が備えられており、当該端子[A0]〜[A2]を通じて電源供給が行なわれる。
〔2−2〕第2実施形態の動作
次に、上述のごとき構成および機能を有する第2実施形態のバス制御装置4Aの動作について、図8〜図16を参照しながら説明する。
〔2−2−1〕一斉ライト動作および一斉リトライ動作
まず、図10に示すフローチャート(ステップS11〜S16)に従って、図8および図9を参照しながら、第2実施形態におけるI2Cマルチキャストによる一斉ライト動作および一斉リトライ動作について説明する。なお、図8は、その一斉ライト動作および一斉リトライ動作を説明する図である。図9は、第2実施形態における一斉ライト時および一斉リトライ時の切替制御部20の動作を説明する図であり、一斉ライト時および一斉リトライ時に切替制御部20によって設定される制御信号の設定値と有効になるバスとの関連表を示す。図9において、SD#1,SD#2,SD#3は、それぞれ図7および図8のSD3−1,3−2,3−3に対応する。
I2Cマルチキャストによって一斉ライト動作を行なうべく、切替制御部20は、制御出力端子[I/O 0.0]〜[I/O 0.6]から各制御信号線へ出力される制御信号の値を、図9に示すように設定する(図8の矢印A1および図10のステップS11参照)。つまり、切替制御部20は、制御出力端子[I/O 0.0]から疑似ACK生成部30への制御信号ACK_ENを“0”に設定し、疑似ACK生成部30の機能(ACK generation)をイネーブル状態にする。また、切替制御部20は、双方向バッファ10Aの第1バッファ10a′をイネーブル状態にしてデータ転送許可状態にすべく、制御出力端子[I/O 0.1], [I/O 0.3], [I/O 0.5]からスイッチ11aの制御入力端子[1OE], [2OE]への制御信号を“0”に設定する。さらに、切替制御部20は、双方向バッファ10Aの第2バッファ10b′をディセーブル状態にしてデータ転送禁止状態にすべく、制御出力端子[I/O 0.2], [I/O 0.4], [I/O 0.6]からスイッチ11bの制御入力端子[1OE], [2OE]への制御信号を“1”に設定する。これにより、MD2から各SD3へのデータ転送はイネーブルとなり、各SD3からMD2へのデータ転送はディセーブルとなる。
図9に示すように制御信号の値を設定した状態で、MD2は、同一アドレス(例えば0xA2)を設定された複数のSD3に対し、I2Cマルチキャストにより一斉ライト処理(ライトコマンドの発行)を実行する(図8の矢印A2および図10のステップS12参照)。
各SD3は、ライトコマンドに応じて応答信号(ACK/NACK)を返送する。しかし、スイッチ11bによって、各SD3からMD2へのデータ転送は、ディセーブル状態になっているため、遮断され、応答信号はMD2に返送されない(図8の矢印A3および太点線参照)。このとき、疑似ACK生成部30は、図4を参照しながら前述した応答信号の返送タイミングで疑似ACKを生成し、MD2へ送信する(図8の矢印A4および図10のステップS13参照)。疑似ACKを受信したMD2はライトアクセスを完了する(図10のステップS14参照)。
この後、MD2は、I2Cバス5eを介して、ACKチェック部30(エラーフラグレジスタ43)に保持されている、各SD3でのアクセス成否の情報(アクセス結果の正常/異常)を参照しチェックする(図8の矢印A6,A7および図10のステップS15参照)。複数のSD3の全てのでのアクセス結果が正常である場合、つまり複数のSD3の全てからACK応答があった場合(ステップS16のYESルート)、MD2は、一斉ライト処理を完了する。なお、ACKチェック部30(エラーフラグレジスタ43)には、図4を参照しながら前述した応答信号の返送タイミングで、各SD3でのアクセス成否の情報が保存されている(図8の矢印A5参照)。
一方、複数のSD3のいずれかでのアクセス結果が異常である場合、つまり複数のSD3のいずれかからNACK応答が行なわれた場合(図10のステップS16のNOルート)、MD2は、ステップS12の処理に戻ってステップS12〜S16の処理を再度実行する。これにより、一斉リトライが実行される。一斉リトライは、ステップS16でYESと判断されるまで、繰り返し実行される。
〔2−2−2〕一斉ライト動作および個別リトライ動作
ついで、図13に示すフローチャート(ステップS21〜S28)に従って、図11および図12を参照しながら、第2実施形態におけるI2Cマルチキャストによる一斉ライト動作および個別リトライ動作について説明する。なお、図11は、その一斉ライト動作および個別リトライ動作を説明する図である。図12は、第2実施形態における個別リトライ時の切替制御部20の動作を説明する図であり、個別リトライ時に切替制御部20によって設定される制御信号の設定値と有効になるバスとの関連表を示す。図12において、SD#1,SD#2,SD#3は、それぞれ図7および図8のSD3−1,3−2,3−3に対応する。
ここでも、まず、図8〜図10を参照しながら前述した手順(図8の矢印A1〜A7および図10のステップS11〜S16)と同様の手順(図13のステップS21〜S26参照)で、I2Cマルチキャストによる一斉ライト動作が実行される。
そして、複数のSD3のいずれかでのアクセス結果が異常である場合、つまり複数のSD3のいずれかからNACK応答が行なわれた場合(図13のステップS26のNOルート)、MD2は、ACKチェック部40における情報を参照する。そして、MD2は、どのバス5cがエラーバスであるか、つまりはどのSD3で異常が生じているかを特定する(図13のステップS27)。
MD2は、異常の生じたSD3を特定すると、I2Cマルチキャストによって個別ライト動作を行なうべく切替制御部20を制御する。以下、異常の生じたSD3を、SD3−2(SD#2)として説明する。このとき、MD2からSD#2へのデータ転送(エラーバス)のみをイネーブル状態にすべく、切替制御部20は、制御出力端子[I/O 0.0]〜[I/O 0.6]から各制御信号線へ出力される制御信号の値を、図12に示すように設定する(図11の矢印A11および図13のステップS28参照)。
つまり、切替制御部20は、制御出力端子[I/O 0.0]から疑似ACK生成部30への制御信号ACK_ENを“0”に設定し、疑似ACK生成部30の機能(ACK generation)をイネーブル状態にする。また、切替制御部20は、双方向バッファ10A−2の第1バッファ10a′をイネーブル状態にしてデータ転送許可状態にすべく、制御出力端子[I/O 0.3]から双方向バッファ10A−2のスイッチ11aの制御入力端子[1OE], [2OE]への制御信号を“0”に設定する。さらに、切替制御部20は、その他の第1バッファ10a′や第2バッファ10b′をディセーブル状態にしてデータ転送禁止状態にすべく、制御出力端子[I/O 0.1], [I/O 0.2], [I/O 0.4], [I/O 0.5], [I/O 0.6]からスイッチ11aまたは11bの制御入力端子[1OE], [2OE]への制御信号を“1”に設定する。これにより、MD2からSD#2へのデータ転送のみがイネーブルとなり、その他のデータ転送はディセーブルとなる。
図12に示すように制御信号の値を設定した状態で、MD2は、他のSD3と同一アドレス(例えば0xA2)を設定された特定のSD#2に対し、I2Cマルチキャストにより一斉ライト処理(ライトコマンドの発行)を実行する。このとき、MD2からSD#2へのデータ転送のみがイネーブルになっているので、一斉ライト処理を行なっても、SD#2のみにライトコマンドが転送され個別リトライ動作が行なわれる(図11の矢印A12および図13のステップS22参照)。
SD#2は、ライトコマンドに応じて応答信号(ACK/NACK)を返送する。しかし、スイッチ11bによって、SD#2からMD2へのデータ転送は、ディセーブル状態になっているため、遮断され、応答信号はMD2に返送されない(図11の矢印A13および太点線参照)。このとき、疑似ACK生成部30は、図4を参照しながら前述した応答信号の返送タイミングで疑似ACKを生成し、MD2へ送信する(図11の矢印A14および図13のステップS23参照)。疑似ACKを受信したMD2はライトアクセス(リトライアクセス)を完了する(図13のステップS24参照)。
この後、MD2は、I2Cバス5eを介して、ACKチェック部40(エラーフラグレジスタ43)に保持されている、SD#2でのアクセス成否の情報(アクセス結果の正常/異常)を参照しチェックする(図11の矢印A16,A17および図13のステップS25参照)。SD#2でのアクセス結果が正常である場合、つまりSD#2からACK応答があった場合(ステップS26のYESルート)、MD2は、一斉ライト処理および個別リトライ処理を完了する。なお、ACKチェック部40(エラーフラグレジスタ43)には、図4を参照しながら前述した応答信号の返送タイミングで、SD#2でのアクセス成否の情報が保存されている(図11の矢印A15参照)。
一方、個別リトライを行なってもSD#2でのアクセス結果が異常である場合、つまりSD#2からNACK応答が行なわれた場合(図13のステップS26のNOルート)、MD2は、ステップS27,S28およびS22〜S26の処理を再度実行する。これにより、ステップS26でYESと判断されるまで、個別リトライが繰り返し実行される。なお、2回目の個別リトライでは、異常の生じたSD3が既に特定されているので、ステップS27,S28の処理は省略することが可能である。
〔2−2−3〕個別リード動作
ついで、図16に示すフローチャート(ステップS31〜S34)に従って、図14および図15を参照しながら、第2実施形態におけるI2Cマルチキャストによる個別リード動作について説明する。なお、図14は、その個別リード動作を説明する図である。図15は、第2実施形態における個別リード時の切替制御部20の動作を説明する図であり、個別リード時に切替制御部20によって設定される設定値と有効になるバスとの関連表を示す。図15において、SD#1,SD#2,SD#3は、それぞれ図7および図8のSD3−1,3−2,3−3に対応する。
MD2が特定のSD3における設定値等を読み出す場合、I2Cマルチキャストによって個別リード動作を行なうべく、切替制御部20は、制御出力端子[I/O 0.0]〜[I/O 0.6]から各制御信号線へ出力される制御信号の値を、図15に示すように設定する(図14の矢印A21および図16のステップS31参照)。ここでは、特定のSD3つまりリード対象のSD3が、SD3−1(SD#1)として説明する。
このとき、切替制御部20は、制御出力端子[I/O 0.0]から疑似ACK生成部30への制御信号ACK_ENを“1”に設定し、疑似ACK生成部30を、I2Cバス5aの信号をそのまま通過させる状態(Pass through)に切り替える。
また、切替制御部20は、リード対象のSD#1に対応するバス5b−1上の第1バッファ10a′および第2バッファ10b′をイネーブルにしてデータ転送許可状態にする。このため、切替制御部20は、制御出力端子[I/O 0.1], [I/O 0.2]から双方向バッファ10A−1のスイッチ11aおよびスイッチ11bの制御入力端子[1OE], [2OE]への制御信号を“0”に設定する。
さらに、切替制御部20は、双方向バッファ10A−2および10A−3におけるバッファ10a′および10b′をディセーブル状態にしてデータ転送禁止状態にする。このため、切替制御部20は、制御出力端子[I/O 0.3]〜[I/O 0.6]からスイッチ11aおよびスイッチ11bの制御入力端子[1OE], [2OE]への制御信号を“1”に設定する。
これにより、MD2とリード対象SD#1との間のデータ転送のみがイネーブルとなり、MD2とSD#2との間のデータ転送、および、MD2とSD#3との間のデータ転送はディセーブルとなる。
図15に示すように制御信号の値を設定した状態で、MD2は、同一アドレス(例えば0xA2)を設定された複数のSD3に対し、I2Cマルチキャストによりリードコマンドの発行を実行する。このとき、MD2からSD#1へのデータ転送がイネーブルになっているので、一斉にリードコマンドを発行しても、SD#1のみにリードコマンドが転送され個別リードアクセスが行なわれる(図14の矢印A22および図16のステップS32参照)。
SD#1において、MD2から指定されたデータが読み出されると、読み出されたデータは、SD#1からMD2へのデータ転送がイネーブルになっているので、通常通り、MD2へ送信される。このとき、疑似ACK生成部30は、ディセーブル状態、つまりパススルー状態になっているので、リードデータは、そのまま疑似ACK生成部30を通過し、I2Cバス5aを通じてMD2に送信される(図14の矢印A23,A24および図16のステップS33参照)。
この後、MD2によるリードアクセスが完了していれば(図16のステップS34のYESルート)、MD2は、リードアクセス処理を終了する。一方、MD2によるリードアクセスが完了していなければ(図16のステップS34のNOルート)、MD2は、ステップS32の処理に戻り、リードアクセスを完了するまで、ステップS32〜S34の処理を繰り返し実行する。
〔2−3〕第2実施形態の効果
このように、第2実施形態のバス制御装置4Aによれば、第1実施形態と同様の作用効果を得ることができる。
〔3〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、上述した実施形態では、スレーブデバイス(SD)が3個である場合について説明したが、本発明は、これに限定されるものでなく、スレーブデーバス(SD)の数が2または4以上であっても、上述した実施形態と同様に適用され、上述した実施形態と同様の作用効果を得ることができる。
また、上述した実施形態では、本発明のデータ転送システムをサーバ装置等に適用する場合について説明したが、本発明は、これに限定されるものでなく、各種データ処理装置や、テレビジョン受像機の制御システムや、大量の画像データを扱う画像形成装置など、複数の同一デバイスを有する装置であれば、上述した実施形態と同様に適用され、上述した実施形態と同様の作用効果を得ることができる。
〔4〕付記
以上の各実施形態を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1デバイスと複数の第2デバイスとを接続する複数のバスのそれぞれに、前記第1デバイスから各第2デバイスへのデータ転送を行なう第1バッファと各第2デバイスから前記第1デバイスへのデータ転送を行なう第2バッファとを備え、
前記第1デバイスから前記複数の第2デバイスへのデータ一斉送信要求に応じて、前記第1バッファを前記第1デバイスから各第2デバイスへのデータ転送許可状態に切り替えるとともに前記第2バッファを各第2デバイスから前記第1デバイスへのデータ転送禁止状態に切り替える切替制御部と、
前記データ一斉送信に応じて各第2デバイスから前記第1デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第1デバイスへ返送する疑似応答生成部と、を有する、バス制御装置。
(付記2)
各第2デバイスから前記応答信号を受信して前記応答信号の状態を保存する保存部と、
前記第1デバイスからの状態返送要求に応じて、前記保存部から前記応答信号の状態を読み出して前記第1デバイスへ返送する返送制御部と、を有する、付記1に記載のバス制御装置。
(付記3)
前記切替制御部は、前記返送制御部からの前記応答信号の状態が異常を示す場合の再送信要求に応じて、前記第1バッファを前記第1デバイスから各第2デバイスへのデータ転送許可状態に切り替えるとともに前記第2バッファを各第2デバイスから前記第1デバイスへのデータ転送禁止状態に切り替え、前記第1デバイスに前記データ一斉送信を再実行させる、付記2に記載のバス制御装置。
(付記4)
前記切替制御部は、前記返送制御部からの前記応答信号の状態が異常を示す場合の再送信要求に応じて、前記異常に対応する第2デバイスを特定し、特定された第2デバイスに対応する前記第1バッファのみを前記データ転送許可状態に切り替え、前記第1デバイスに前記データ一斉送信を再実行させる、付記2に記載のバス制御装置。
(付記5)
前記切替制御部は、前記複数の第2デバイスのうちの特定の第2デバイスにおけるデータの読出要求に応じて、前記特定の第2デバイスに対応する前記第1バッファおよび前記第2バッファを前記データ転送許可状態に切り替え、前記第1デバイスに前記特定の第2デバイスにおけるデータの読出を実行させる、付記1〜付記4のいずれか一項に記載のバス制御装置。
(付記6)
前記第1バッファおよび前記第2バッファは、それぞれスリーステートバッファによって構成され、
前記切替制御部は、各スリーステートバッファの制御入力端子への制御信号を切り替えることにより、前記データ転送許可状態もしくは前記データ転送禁止状態への切替を制御する、付記1〜付記5のいずれか一項に記載のバス制御装置。
(付記7)
前記第1バッファおよび前記第2バッファのそれぞれに、各バッファからの転送対象の出力もしくは各バッファへの転送対象の入力を接断するスイッチを接続し、
前記切替制御部は、各スイッチの接断状態を切り替えることにより、前記データ転送許可状態もしくは前記データ転送禁止状態への切替を制御する、付記1〜付記5のいずれか一項に記載のバス制御装置。
(付記8)
前記バスは、シリアルインタフェースバスであり、
前記複数の第2デバイスに対し同一アドレスを設定することにより、前記第1デバイスから前記複数の第2デバイスへの前記データ一斉送信が実行される、付記1〜付記7のいずれか一項に記載のバス制御装置。
(付記9)
第1デバイスと、
複数の第2デバイスと、
前記第1デバイスと前記複数の第2デバイスとの間でデータ転送を行なうバスを制御するバス制御装置と、を備え、
前記バス制御装置は、
前記第1デバイスと前記複数の第2デバイスとを接続する複数のバスのそれぞれに備えられ、前記第1デバイスから各第2デバイスへのデータ転送を行なう第1バッファと各第2デバイスから前記第1デバイスへのデータ転送を行なう第2バッファとを有し、
前記第1デバイスから前記複数の第2デバイスへのデータ一斉送信要求に応じて、前記第1バッファを前記第1デバイスから各第2デバイスへのデータ転送許可状態に切り替えるとともに前記第2バッファを各第2デバイスから前記第1デバイスへのデータ転送禁止状態に切り替える切替制御部と、
前記データ一斉送信に応じて各第2デバイスから前記第1デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第1デバイスへ返送する疑似応答生成部と、を有する、データ転送システム。
(付記10)
前記バス制御装置は、
各第2デバイスから前記応答信号を受信して前記応答信号の状態を保存する保存部と、
前記第1デバイスからの状態返送要求に応じて、前記保存部から前記応答信号の状態を読み出して前記第1デバイスへ返送する返送制御部と、を有する、付記9に記載のデータ転送システム。
(付記11)
前記切替制御部は、前記返送制御部からの前記応答信号の状態が異常を示す場合の再送信要求に応じて、前記第1バッファを前記第1デバイスから各第2デバイスへのデータ転送許可状態に切り替えるとともに前記第2バッファを各第2デバイスから前記第1デバイスへのデータ転送禁止状態に切り替え、前記第1デバイスに前記データ一斉送信を再実行させる、付記10に記載のデータ転送システム。
(付記12)
前記切替制御部は、前記返送制御部からの前記応答信号の状態が異常を示す場合の再送信要求に応じて、前記異常に対応する第2デバイスを特定し、特定された第2デバイスに対応する前記第1バッファのみを前記データ転送許可状態に切り替え、前記第1デバイスに前記データ一斉送信を再実行させる、付記10に記載のデータ転送システム。
(付記13)
前記切替制御部は、前記複数の第2デバイスのうちの特定の第2デバイスにおけるデータの読出要求に応じて、前記特定の第2デバイスに対応する前記第1バッファおよび前記第2バッファを前記データ転送許可状態に切り替え、前記第1デバイスに前記特定の第2デバイスにおけるデータの読出を実行させる、付記9〜付記12のいずれか一項に記載のデータ転送システム。
(付記14)
前記第1バッファおよび前記第2バッファは、それぞれスリーステートバッファによって構成され、
前記切替制御部は、各スリーステートバッファの制御入力端子への制御信号を切り替えることにより、前記データ転送許可状態もしくは前記データ転送禁止状態への切替を制御する、付記9〜付記13のいずれか一項に記載のデータ転送システム。
(付記15)
前記第1バッファおよび前記第2バッファのそれぞれに、各バッファからの転送対象の出力もしくは各バッファへの転送対象の入力を接断するスイッチを接続し、
前記切替制御部は、各スイッチの接断状態を切り替えることにより、前記データ転送許可状態もしくは前記データ転送禁止状態への切替を制御する、付記9〜付記13のいずれか一項に記載のデータ転送システム。
(付記16)
前記バスは、シリアルインタフェースバスであり、
前記複数の第2デバイスに対し同一アドレスを設定することにより、前記第1デバイスから前記複数の第2デバイスへの前記データ一斉送信が実行される、付記9〜付記15のいずれか一項に記載のデータ転送システム。
(付記17)
第1デバイスと複数の第2デバイスとを接続する複数のバスのそれぞれに、前記第1デバイスから各第2デバイスへのデータ転送を行なう第1バッファと各第2デバイスから前記第1デバイスへのデータ転送を行なう第2バッファとを備えるデータ転送システムにおいて、
前記第1デバイスから前記複数の第2デバイスへのデータ一斉送信要求に応じて、前記第1バッファを前記第1デバイスから各第2デバイスへのデータ転送許可状態に切り替えるとともに前記第2バッファを各第2デバイスから前記第1デバイスへのデータ転送禁止状態に切り替え、
前記データ一斉送信に応じて各第2デバイスから前記第1デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第1デバイスへ返送する、バス制御方法。
(付記18)
各第2デバイスから前記応答信号を受信して前記応答信号の状態を保存し、
前記第1デバイスからの状態返送要求に応じて、保存された前記応答信号の状態を読み出して前記第1デバイスへ返送する、付記17に記載のバス制御方法。
(付記19)
返送された前記応答信号の状態が異常を示す場合に応じた前記第1デバイスからの再送信要求に応じて、前記第1バッファを前記第1デバイスから各第2デバイスへのデータ転送許可状態に切り替えるとともに前記第2バッファを各第2デバイスから前記第1デバイスへのデータ転送禁止状態に切り替え、前記第1デバイスに前記データ一斉送信を再実行させる、付記18に記載のバス制御方法。
(付記20)
返送された前記応答信号の状態が異常を示す場合に応じた前記第1デバイスからの再送信要求に応じて、前記異常に対応する第2デバイスを特定し、特定された第2デバイスに対応する前記第1バッファのみを前記データ転送許可状態に切り替え、前記第1デバイスに前記データ一斉送信を再実行させる、付記18に記載のバス制御方法。
1,1A データ転送システム
2 マスタデバイス(第1デバイス,I2C Master)
3−1,3−2,3−3 スレーブデバイス(第2デバイス,I2C Slave)
4 バス制御装置
5a,5b−1,5b−2,5b−3,5c-1,5c−2,5c−3,5d,5e バス(シリアルインタフェースバス,I2Cバス)
6−0,6a−1,6b−1,6a−2,6b−2,6a−3,6b−3 制御信号線
10−1,10−2,10−3,10A−1,10A−2,10A−3 双方向バッファ
10a 第1バッファ(スリーステートバッファ)
10b 第2バッファ(スリーステートバッファ)
10a′ 第1バッファ
10b′ 第2バッファ
11a,11b スイッチ
11a−1,11a−2,11b−1,11b−2 接断部
20 切替制御部
30 疑似ACK生成部(疑似応答生成部)
31 疑似ACK生成回路
32 クロックカウンタ
40 ACKチェック部
41 エラー判断ロジック
411−1,411−2,411−3 ANDゲート
42 クロックカウンタ
43 エラーフラグレジスタ(保存部)
431−1 BUS#0用ビット
431−2 BUS#1用ビット
431−3 BUS#2用ビット
44 I2Cコントローラ(返送制御部)

Claims (13)

  1. 第1デバイスと、同一アドレスが設定された複数の第2デバイスとを接続する複数のバスのそれぞれに、前記第1デバイスから各第2デバイスへのデータ転送を行なう第1バッファと各第2デバイスから前記第1デバイスへのデータ転送を行なう第2バッファとを備え、
    前記同一アドレスを用いた、前記第1デバイスから前記複数の第2デバイスへのデータ一斉送信要求に応じて、前記第1バッファを前記第1デバイスから各第2デバイスへのデータ転送許可状態に切り替えるとともに前記第2バッファを各第2デバイスから前記第1デバイスへのデータ転送禁止状態に切り替える切替制御部と、
    前記データ一斉送信要求に応じて各第2デバイスから前記第1デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第1デバイスへ返送する疑似応答生成部と、を有する、バス制御装置。
  2. 各第2デバイスから前記応答信号を受信して前記応答信号の状態を保存する保存部と、
    前記第1デバイスからの状態返送要求に応じて、前記保存部から前記応答信号の状態を読み出して前記第1デバイスへ返送する返送制御部と、を有する、請求項1に記載のバス制御装置。
  3. 前記切替制御部は、前記返送制御部からの前記応答信号の状態が異常を示す場合の再送信要求に応じて、前記第1バッファを前記第1デバイスから各第2デバイスへのデータ転送許可状態に切り替えるとともに前記第2バッファを各第2デバイスから前記第1デバイスへのデータ転送禁止状態に切り替え、前記第1デバイスに前記データ一斉送信要求を再実行させる、請求項2に記載のバス制御装置。
  4. 前記切替制御部は、前記返送制御部からの前記応答信号の状態が異常を示す場合の再送信要求に応じて、前記異常に対応する第2デバイスを特定し、特定された第2デバイスに対応する前記第1バッファのみを前記データ転送許可状態に切り替え、前記第1デバイスに前記データ一斉送信要求を再実行させる、請求項2に記載のバス制御装置。
  5. 前記切替制御部は、前記複数の第2デバイスのうちの特定の第2デバイスにおけるデータの読出要求に応じて、前記特定の第2デバイスに対応する前記第1バッファおよび前記第2バッファを前記データ転送許可状態に切り替え、前記第1デバイスに前記特定の第2デバイスにおけるデータの読出を実行させる、請求項1〜請求項4のいずれか一項に記載のバス制御装置。
  6. 前記第1バッファおよび前記第2バッファは、それぞれスリーステートバッファによって構成され、
    前記切替制御部は、各スリーステートバッファの制御入力端子への制御信号を切り替えることにより、前記データ転送許可状態もしくは前記データ転送禁止状態への切替を制御する、請求項1〜請求項5のいずれか一項に記載のバス制御装置。
  7. 前記第1バッファおよび前記第2バッファのそれぞれに、各バッファからの転送対象の出力もしくは各バッファへの転送対象の入力を接断するスイッチを接続し、
    前記切替制御部は、各スイッチの接断状態を切り替えることにより、前記データ転送許可状態もしくは前記データ転送禁止状態への切替を制御する、請求項1〜請求項5のいずれか一項に記載のバス制御装置。
  8. 前記バスは、シリアルインタフェースバスであり、
    前記複数の第2デバイスに対し前記同一アドレスを設定することにより、前記第1デバイスから前記複数の第2デバイスへの前記データ一斉送信要求が実行される、請求項1〜請求項7のいずれか一項に記載のバス制御装置。
  9. 第1デバイスと、
    同一アドレスが設定された複数の第2デバイスと、
    前記第1デバイスと前記複数の第2デバイスとの間でデータ転送を行なうバスを制御するバス制御装置と、を備え、
    前記バス制御装置は、
    前記第1デバイスと前記複数の第2デバイスとを接続する複数のバスのそれぞれに備えられ、前記第1デバイスから各第2デバイスへのデータ転送を行なう第1バッファと各第2デバイスから前記第1デバイスへのデータ転送を行なう第2バッファとを有し、
    前記同一アドレスを用いた、前記第1デバイスから前記複数の第2デバイスへのデータ一斉送信要求に応じて、前記第1バッファを前記第1デバイスから各第2デバイスへのデータ転送許可状態に切り替えるとともに前記第2バッファを各第2デバイスから前記第1デバイスへのデータ転送禁止状態に切り替える切替制御部と、
    前記データ一斉送信要求に応じて各第2デバイスから前記第1デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第1デバイスへ返送する疑似応答生成部と、を有する、データ転送システム。
  10. 第1デバイスと、同一アドレスが設定された複数の第2デバイスとを接続する複数のバスのそれぞれに、前記第1デバイスから各第2デバイスへのデータ転送を行なう第1バッファと各第2デバイスから前記第1デバイスへのデータ転送を行なう第2バッファとを備えるデータ転送システムにおいて、
    切替制御部が、前記同一アドレスを用いた、前記第1デバイスから前記複数の第2デバイスへのデータ一斉送信要求に応じて、前記第1バッファを前記第1デバイスから各第2デバイスへのデータ転送許可状態に切り替えるとともに前記第2バッファを各第2デバイスから前記第1デバイスへのデータ転送禁止状態に切り替え、
    疑似応答生成部が、前記データ一斉送信要求に応じて各第2デバイスから前記第1デバイスへ返送される応答信号を模した疑似応答信号を生成して前記第1デバイスへ返送する、バス制御方法。
  11. 前記切替制御部は、前記疑似応答生成部を前記データ転送許可状態又は前記データ転送禁止状態に切り替え、
    前記疑似応答生成部が前記データ転送許可状態である場合、前記疑似応答生成部は前記疑似応答信号を前記第1デバイスへ返送し、前記疑似応答生成部が前記データ転送禁止状態である場合、前記第2デバイスから前記第1デバイスへデータが送信される、請求項1〜請求項8のいずれか一項に記載のバス制御装置。
  12. 前記切替制御部は、前記疑似応答生成部を前記データ転送許可状態又は前記データ転送禁止状態に切り替え、
    前記疑似応答生成部が前記データ転送許可状態である場合、前記疑似応答生成部は前記疑似応答信号を前記第1デバイスへ返送し、前記疑似応答生成部が前記データ転送禁止状態である場合、前記第2デバイスから前記第1デバイスへデータが送信される、請求項9に記載のデータ転送システム。
  13. 前記切替制御部は、前記疑似応答生成部を前記データ転送許可状態又は前記データ転送禁止状態に切り替え、
    前記疑似応答生成部が前記データ転送許可状態である場合、前記疑似応答生成部は前記疑似応答信号を前記第1デバイスへ返送し、前記疑似応答生成部が前記データ転送禁止状態である場合、前記第2デバイスから前記第1デバイスへデータが送信される、請求項10に記載のバス制御方法。
JP2014139743A 2014-07-07 2014-07-07 バス制御装置、データ転送システム、及びバス制御方法 Active JP6340962B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014139743A JP6340962B2 (ja) 2014-07-07 2014-07-07 バス制御装置、データ転送システム、及びバス制御方法
US14/730,295 US9846668B2 (en) 2014-07-07 2015-06-04 Bus controller, data forwarding system, and method for controlling buses

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014139743A JP6340962B2 (ja) 2014-07-07 2014-07-07 バス制御装置、データ転送システム、及びバス制御方法

Publications (2)

Publication Number Publication Date
JP2016018319A JP2016018319A (ja) 2016-02-01
JP6340962B2 true JP6340962B2 (ja) 2018-06-13

Family

ID=55017105

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014139743A Active JP6340962B2 (ja) 2014-07-07 2014-07-07 バス制御装置、データ転送システム、及びバス制御方法

Country Status (2)

Country Link
US (1) US9846668B2 (ja)
JP (1) JP6340962B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160335213A1 (en) * 2015-05-13 2016-11-17 Hong Fu Jin Precision Industry (Shenzhen) Co., Ltd. Motherboard with multiple interfaces
CN106598891B (zh) * 2015-10-15 2021-04-30 恩智浦美国有限公司 集成电路间i2c总线***中的从设备报警信号
US10296434B2 (en) * 2017-01-17 2019-05-21 Quanta Computer Inc. Bus hang detection and find out
TWI767997B (zh) 2017-03-23 2022-06-21 日商索尼半導體解決方案公司 通信裝置、通信方法、程式及通信系統
JP6976729B2 (ja) * 2017-06-08 2021-12-08 ソニーセミコンダクタソリューションズ株式会社 通信装置、通信方法、プログラム、および、通信システム
JP6953226B2 (ja) * 2017-08-04 2021-10-27 ソニーセミコンダクタソリューションズ株式会社 通信装置、通信方法、プログラム、および、通信システム
JP7031961B2 (ja) 2017-08-04 2022-03-08 ソニーセミコンダクタソリューションズ株式会社 通信装置、通信方法、プログラム、および、通信システム
US10579581B2 (en) * 2018-02-28 2020-03-03 Qualcomm Incorporated Multilane heterogeneous serial bus
JPWO2021049357A1 (ja) * 2019-09-13 2021-03-18
JPWO2021161909A1 (ja) * 2020-02-13 2021-08-19
CN114302256B (zh) * 2021-12-23 2024-04-16 锐捷网络股份有限公司 一种i2c通信防冲突方法及***

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0817393B2 (ja) * 1988-11-25 1996-02-21 トヨタ自動車株式会社 伝送ライン分岐装置
JPH02149148A (ja) * 1988-11-30 1990-06-07 Fujitsu Ltd 一斉送信応答方式
JPH08147193A (ja) * 1994-11-18 1996-06-07 Toyo Commun Equip Co Ltd Cpuアクノリッジ監視回路
JPH1078934A (ja) * 1996-07-01 1998-03-24 Sun Microsyst Inc パケット切替えコンピュータ・システムのマルチサイズ・バス結合システム
US7145903B2 (en) * 2001-09-06 2006-12-05 Meshnetworks, Inc. Multi-master bus architecture for system-on-chip designs
US7428523B2 (en) * 2002-07-11 2008-09-23 Oracle International Corporation Portal bridge
US7015825B2 (en) * 2003-04-14 2006-03-21 Carpenter Decorating Co., Inc. Decorative lighting system and decorative illumination device
JP2006011926A (ja) 2004-06-28 2006-01-12 Ricoh Co Ltd シリアルデータ転送システム、シリアルデータ転送装置、シリアルデータ転送方法及び画像形成装置
CN102036070A (zh) * 2005-12-08 2011-04-27 维德约股份有限公司 用于视频通信***中的差错弹性和随机接入的***和方法
US20110044338A1 (en) * 2006-12-20 2011-02-24 Thomas Anthony Stahl Throughput in a lan by managing tcp acks
JP2010128909A (ja) 2008-11-28 2010-06-10 Sony Corp データ処理装置及び方法、並びにプログラム
JP5444911B2 (ja) * 2009-07-23 2014-03-19 富士通株式会社 送受信制御装置、電子機器、データ送信方法及び制御プログラム
JP5682392B2 (ja) * 2011-03-22 2015-03-11 富士通株式会社 情報処理装置、制御装置および異常ユニット判定方法
SG11201404389UA (en) * 2012-01-27 2014-08-28 Interdigital Patent Holdings Method for transmission of an e-dch control channel in mimo operations
JP6007509B2 (ja) * 2012-02-27 2016-10-12 株式会社リコー シリアルi/fバス制御装置及び撮像装置
US20130304990A1 (en) * 2012-05-08 2013-11-14 International Business Machines Corporation Dynamic Control of Cache Injection Based on Write Data Type
US9152598B2 (en) * 2012-11-28 2015-10-06 Atmel Corporation Connecting multiple slave devices to a single master controller in bus system
US9213643B2 (en) * 2013-03-13 2015-12-15 Applied Micro Circuits Corporation Broadcast messaging and acknowledgment messaging for power management in a multiprocessor system
JP2014186376A (ja) * 2013-03-21 2014-10-02 Fujitsu Ltd 障害箇所特定方法、スイッチング装置、障害箇所特定装置、及び情報処理装置

Also Published As

Publication number Publication date
US9846668B2 (en) 2017-12-19
US20160004659A1 (en) 2016-01-07
JP2016018319A (ja) 2016-02-01

Similar Documents

Publication Publication Date Title
JP6340962B2 (ja) バス制御装置、データ転送システム、及びバス制御方法
AU725945B2 (en) Digital data processing methods and apparatus for fault isolation
US20060159115A1 (en) Method of controlling information processing system, information processing system, direct memory access control device and program
JPS59188752A (ja) 欠陥サイクル作動式デ−タ処理システム用バス
CN103279434B (zh) 从设备地址修改方法和装置
CN110580235B (zh) 一种sas扩展器通信方法及装置
CN103678031A (zh) 二乘二取二冗余***及方法
JPH024932B2 (ja)
US8244930B1 (en) Mechanisms for synchronizing data transfers between non-uniform memory architecture computers
JP2020021313A (ja) データ処理装置および診断方法
WO2012046634A1 (ja) 電子装置およびシリアルデータ通信方法
CN109154925A (zh) 通信设备、通信方法、程序和通信***
CN110071860A (zh) 机器人通信方法、机器人通信***及机器人
CN104484260A (zh) 一种基于GJB289总线接口SoC的仿真监控电路
CN116578521B (zh) 一种单总线通信方法、装置、***及设备
JP2012133456A (ja) ストレージ装置及びストレージ装置の制御方法
JP2007280313A (ja) 冗長化システム
US20180270015A1 (en) Data transmission apparatus and data transmission method, reception device and reception method, program, and data transmission system
WO2017199762A1 (ja) 通信装置、通信方法、プログラム、および、通信システム
JP5907099B2 (ja) 入出力処理装置、アドレス正当性検証方法およびアドレス正当性検証用プログラム
US20130067130A1 (en) Bus control apparatus and bus control method
JP2012235335A (ja) 装置間ケーブルの誤接続検出方法及び装置
US8639967B2 (en) Controlling apparatus, method for controlling apparatus and information processing apparatus
JP6394727B1 (ja) 制御装置、制御方法、及び、フォールトトレラント装置
JP2008210183A (ja) 冗長化制御システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180130

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180402

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180417

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180430

R150 Certificate of patent or registration of utility model

Ref document number: 6340962

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150