(57)【要約】Ｉ２Ｃバスに対するスレーブインタフェイスを制御するためのロバストなステートマシンがもたらされる。ステートマシンは、Ｉ２Ｃ規格のスレーブデバイスプロトコルを施すと共に異常なマスタデバイスの動作からの回復をもたらすように構成される。本発明によれば、スレーブデバイスにおけるステートマシンの状態遷移は、開始状態が検出される場合を除いて、Ｉ２ＣバスのＳＣＬラインのマスタデバイス制御によって制御される。前記ステートマシンは、自身の現在の状態にかかわらず、Ｉ２Ｃバス上の開始状態に非同期に応答して、自身を、知られている状態にするように構成される。開始状態に後続する知られている状態において、スレーブデバイスはＩ２Ｃバスへのいかなる送信も終了させる。それによって、バス上において引き続いて起こる干渉が最小限化される。
2004534322.tif 000002
【特許請求の範囲】
【請求項１】
Ｉ２Ｃバスに、及びＩ２Ｃバスからデータを供給又は受信するように構成される機能素子と、
前記機能素子及び前記Ｉ２Ｃバスに可動的に結合され、前記機能素子と前記Ｉ２Ｃバスとの間のデータ通信を容易にするように構成されるインタフェイスと
を有するデバイスであって、
前記インタフェイスは、
アイドル状態、アドレス状態、データロード状態、データ送信状態、データ消去状態、データ受信状態、及び開始状態を含む複数の状態
を含む前記インタフェイスを制御するように構成されるステートマシン
を有し、
前記ステートマシンは、
前記Ｉ２Ｃバス上の開始信号の検出時に前記開始状態に非同期に入り、
前記Ｉ２Ｃバス上のリセット信号の検出時に前記アイドル状態に非同期に入り、
前記Ｉ２Ｃバス上の複数のクロック信号の各々の受信時に、
前記ステートマシンが前記開始状態にある場合、前記アドレス状態に入り、
前記ステートマシンが前記アドレス状態にあると共に読み出しコマンドが前記Ｉ２Ｃバスから受信される場合、前記データロード状態に入り、
前記ステートマシンが前記データロード状態にある場合、前記データ送信状態に入り、
前記ステートマシンが前記アドレス状態にあると共に書き込みコマンドが前記Ｉ２Ｃバスから受信される場合、前記データ消去状態に入り、
前記ステートマシンが前記データ消去状態にある場合、前記データ受信状態に入る
ように構成されるデバイス。
【請求項２】
前記ステートマシンは、
前記ステートマシンが前記アドレス状態から前記データ消去状態又は前記データロード状態に入るときはいつも通知信号を活性化させる
ように更に構成される請求項１に記載のデバイス。
【請求項３】
前記ステートマシンは、
前記ステートマシンが前記データ送信状態にあると共に通知信号が前記Ｉ２Ｃバス上に受信されない場合、前記アイドル状態に入り、
前記ステートマシンが前記データ受信状態にあると共に前記Ｉ２Ｃバス上のデータ転送が完了している場合、前記アイドル状態に入る
ように更に構成される請求項１に記載のデバイス。
【請求項４】
前記ステートマシンは、
前記ステートマシンが前記データ受信状態から前記アイドル状態に入るときはいつも非通知信号を活性化させる
ように更に構成される請求項３に記載のデバイス。
【請求項５】
前記ステートマシンは、
前記ステートマシンが前記アドレス状態にあると共に前記受信アドレスが、前記デバイスに関係するアドレスに対応しない場合、前記アイドル状態に入る
ように更に構成される請求項１に記載のデバイス。
【請求項６】
前記ステートマシンは、
前記ステートマシンが前記データ送信状態にあると共に送信データアイテムが通知される場合、前記データロード状態に入り、
前記ステートマシンが前記データ受信状態にあると共にデータアイテムが受信される場合、前記データ消去状態に入る
ように更に構成される請求項１に記載のデバイス。
【請求項７】
前記複数の機能状態は１セットのビットとして符号化されるので、前記クロック信号の受信時の各々の状態変化が前記ビットのセットのうちの一つのビットの変化を含む請求項１に記載のデバイス。
【請求項８】
前記複数の機能状態は１セットのビットとして符号化され、各々のビットが第一の状態ａ及び第二の状態ｂを有するので、
前記アイドル状態はａａａａと符号化され、
前記アドレス状態はａｂａａと符号化され、
前記データロード状態はｂｂａａと符号化され、
前記データ送信状態はｂａａａと符号化され、
前記データ消去状態はａｂｂａと符号化され、
前記データ受信状態はａａｂａと符号化され、
前記開始状態はａｂａｂと符号化される
請求項１に記載のデバイス。
【請求項９】
前記ステートマシンは、
前記Ｉ２Ｃバス上の終了信号の検出時に、非同期に前記アイドル状態に入る
ように更に構成される請求項１に記載のデバイス。
【請求項１０】
Ｉ２Ｃバスを介して通信を容易にするように構成されるインタフェイスデバイスであって、
アイドル状態、アドレス状態、データロード状態、データ送信状態、データ消去状態、データ受信状態、及び開始状態を含む複数の状態
を含む前記インタフェイスを制御するように構成されるステートマシン
を有し、
前記ステートマシンは、
前記Ｉ２Ｃバス上の開始信号の検出時に前記開始状態に非同期に入り、
前記Ｉ２Ｃバス上のリセット信号の検出時に前記アイドル状態に非同期に入り、
前記Ｉ２Ｃバス上の複数のクロック信号の各々の受信時に、
前記ステートマシンが前記開始状態にある場合、前記アドレス状態に入り、
前記ステートマシンが前記アドレス状態にあると共に読み出しコマンドが前記バスから受信される場合、前記データロード状態に入り、
前記ステートマシンが前記データロード状態にある場合、前記データ送信状態に入り、
前記ステートマシンが前記アドレス状態にあると共に書き込みコマンドが前記Ｉ２Ｃバスから受信される場合、前記データ消去状態に入り、
前記データ消去状態から前記データ受信状態に入る
ように構成されるインタフェイスデバイス。
【請求項１１】
前記ステートマシンは、
前記ステートマシンが前記アドレス状態から前記データ消去状態又は前記データロード状態に入るときはいつも通知信号を活性化し、
前記ステートマシンが前記データ受信状態から前記アイドル状態に入るときはいつも非通知信号を活性化させる
ように更に構成される請求項１０に記載のインタフェイスデバイス。
【請求項１２】
前記ステートマシンは、
前記ステートマシンが前記データ送信状態にあると共に通知信号が前記Ｉ２Ｃバスに受信されない場合、前記アイドル状態に入り、
前記ステートマシンが前記データ受信状態にあると共に前記Ｉ２Ｃバス上のデータ転送が完了している場合、前記アイドル状態に入り、
受信アドレスが無効のとき、前記ステートマシンが前記アドレス状態にある場合、前記アイドル状態に入り、
前記ステートマシンが前記データ送信状態にあると共に送信データアイテムが通知される場合、前記データロード状態に入り、
前記ステートマシンが前記データ受信状態にあると共にデータアイテムが受信される場合、前記データ消去状態に入る
ように更に構成される請求項１０に記載のインタフェイスデバイス。
【請求項１３】
前記複数の機能状態は１セットのビットとして符号化されるので、前記クロック信号の受信時の各々の状態変化が前記ビットのセットのうちの一つのビットの変化を含む請求項１０に記載のインタフェイスデバイス。
【請求項１４】
前記複数の機能状態は１セットのビットとして符号化され、各々のビットが第一の状態ａ及び第二の状態ｂを有するので、
前記アイドル状態はａａａａと符号化され、
前記アドレス状態はａｂａａと符号化され、
前記データロード状態はｂｂａａと符号化され、
前記データ送信状態はｂａａａと符号化され、
前記データ消去状態はａｂｂａと符号化され、
前記データ受信状態はａａｂａと符号化され、
前記開始状態はａｂａｂと符号化される
請求項１０に記載のインタフェイスデバイス。
【請求項１５】
前記ステートマシンは、
前記Ｉ２Ｃバス上の終了信号の検出時に、非同期に前記アイドル状態に入る
ように更に構成される請求項１０に記載のインタフェイスデバイス。
【請求項１６】
ステートマシンを介してＩ２Ｃバス上の通信を容易にするための方法であって、
前記Ｉ２Ｃバス上の開始信号の検出時に開始状態に非同期に入るステップと、
前記Ｉ２Ｃバス上のリセット信号の検出時にアイドル状態に非同期に入るステップと、
前記Ｉ２Ｃバス上の複数のクロック信号の各々の受信時に、
前記ステートマシンが前記開始状態にある場合、アドレス状態に入るステップと、
前記ステートマシンが前記アドレス状態にあると共に読み出しコマンドが前記Ｉ２Ｃバスから受信される場合、データロード状態に入るステップと、
前記ステートマシンが前記データロード状態にある場合、データ送信状態に入るステップと、
前記ステートマシンが前記アドレス状態にあると共に書き込みコマンドが前記バスから受信される場合、データ消去状態に入るステップと、
前記ステートマシンが前記データ消去状態にある場合、データ受信状態に入るステップと
を有する方法。
【請求項１７】
前記ステートマシンが前記アドレス状態にある場合、前記データ消去状態又は前記データロード状態に入るステップは、通知信号を活性化させるステップを含み、
前記ステートマシンが前記データ受信状態にある場合、前記アイドル状態に入るステップは、非通知信号を活性化させるステップを含む
請求項１６に記載の方法。
【請求項１８】
前記ステートマシンが前記データ送信状態にあると共に通知信号が前記Ｉ２Ｃバス上において受信されない場合、前記アイドル状態に入るステップと、
前記ステートマシンが前記データ受信状態にあると共に前記Ｉ２Ｃバス上のデータ転送が完了している場合、前記アイドル状態に入るステップと、
前記ステートマシンが前記アドレス状態にあると共に受信アドレスが前記ステートマシンに関係するアドレスに対応していない場合、前記アイドル状態に入るステップと、
前記ステートマシンが前記データ送信状態にあると共に送信データアイテムが通知される場合、前記データロード状態に入るステップと、
前記ステートマシンが前記データ受信状態にあると共にデータアイテムが受信される場合、前記データ消去状態に入るステップと
を更に含む請求項１６に記載の方法。
【請求項１９】
前記Ｉ２Ｃバス上の終了信号の検出時に、非同期に前記アイドル状態に入るステップ
を更に含む請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信システムの分野、特にＩ２Ｃバスを介して通信を容易にするための方法及びデバイスに関する。
【背景技術】
【０００２】
フィリップス（Ｐｈｉｌｉｐｓ）社によって開発されたインターインテグレイティッドサーキットバス（Ｉｎｔｅｒ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（I２Ｃ）  ｂｕｓ）により、集積回路は単純な双方向２線式（更にグランドも加わる）バスを介して互いに直接通信することが可能になる。デバイスは、バス上の二つの線の各々に接続される。一方（ＳＤＡ）はデータの通信のためのものであり、他方（ＳＣＬ）はデバイス間のデータの通信の同期及び制御のためのものである。各々のデバイスは他方のデバイスの各々に平行に接続され、バスラインＳＤＡ及びＳＣＬの各々は、バス上の全ラインのワイヤードアンド（ｗｉｒｅｄ−ＡＮＤ）としての機能を果たす。各々のデバイスの出力部は、オープンコレクタ（ｏｐｅｎ−ｃｏｌｌｅｃｔｏｒ）／オープンドレイン（ｏｐｅｎ−ｄｒａｉｎ）デバイスとして構成されており、バスが動作休止状態（ｑｕｉｅｓｃｅｎｔ  ｓｔａｔｅ）にある間、一つ又はそれより多くのプルアップ抵抗はバス上で‘ソフト’論理ハイ値を保持する。デバイスがバスへのアクセスを要求するとき、デバイスは、グランド電位への導通状態に置かされるオープンコレクタ／オープンドレインを介してバスを論理ロー値に引き下げる。
【０００３】
Ｉ２Ｃバスに接続されている各々のデバイスは、固有のアドレス（ｕｎｉｑｕｅ  ａｄｄｒｅｓ）によって特定されることが可能であり、送信器若しくは受信器の何れか、又はその両方として動作することが可能である。データ転送は、マスタスレーブプロトコル（ｍａｓｔｅｒ−ｓｌａｖｅ  ｐｒｏｔｏｃｏｌ）を使用して行われる。マスタは、データ転送を初期化すると共に前記転送を可能にするクロック信号を生成するデバイスであり、アドレスされる何れのデバイスも当該転送のためのスレーブと認識される。データ転送は、スレーブにデータを送信（書き込み）するか、又はスレーブからデータを要求（読み出し）するマスタによって初期化され得る。特定のデバイスは、マスタ若しくはスレーブ又はその両方の何れかとして動作し得る。例えば、ディスプレイスクリーンのような出力デバイスは、通常データ転送を初期化することができず、それ故にスレーブデバイスとしてのみ動作するように構成されるであろう。他方マイクロプロセッサは通常、状況に応じてマスタ又はスレーブの何れかとして動作するように構成されるであろう。
【０００４】
動作休止状態において、ＳＤＡとＳＣＬとの両方のバスラインは論理ハイ状態（“ハイ”）にある。マスタは、ＳＣＬラインがハイになっている間、ＳＤＡライン上の論理ロー状態（“ｌｏｗ”）への遷移を活性化させることによってデータ転送を初期化する。これは開始状態（ＳＴＡＲＴ  ｃｏｎｄｉｔｉｏｎ）と称される。その後、マスタはデータ転送の同期を制御するためにＳＣＬラインを切り換える（ｔｏｇｇｌｅ）。ＳＣＬクロックがローのとき、データ値の変化がＳＤＡライン上でもたらされ、ＳＣＬクロックがハイのときにのみ、ＳＤＡラインの状態が有効と認識される。同じ転送セッション内で一連のデータ転送を行うために複数の開始コマンド（ＳＴＡＲＴ）が活性化され得る。通常、各々のデータ転送は、データ転送の、アドレスされた受信器（ｒｅｃｉｐｉｅｎｔ）からの通知（ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）を要求する。データ転送を終了させるためにホストは、ＳＣＬクロックがハイの間、ＳＤＡライン上のローからハイへの遷移を活性化させる。これは終了状態（ＳＴＯＰ  ｃｏｎｄｉｔｉｏｎ）と称される。その後上記のように、何れかのデバイスが、ＳＤＡライン上のハイからローへの遷移を活性化させることによって、マスタとしてバスの制御を行ってもよい。各々の参照に対して用語活性化はこの場合、特定された論理状態をもたらすために、又はもたらそうとするために使用されることは注意されるべきである。論理ハイ状態への遷移の例において、これは活性化デバイスによる強制プルダウン（ｆｏｒｃｅｄ  ｐｕｌｌ−ｄｏｗｎ）状態からのバスの開放（リリース（ｒｅｌｅａｓｅ））によって通常もたらされる。この論理ハイ状態の活性化によりバス上の前述のプルアップデバイスは、他のデバイスもプルダウン状態を強制するまで、バスを論理ハイ状態にさせることが可能になる。
【０００５】
Ｉ２Ｃデータ転送の通常のフォーマットが図１に示されている。当該図において、Ｉ２Ｃバスを形成するＳＣＬライン及びＳＤＡライン上の信号が示されている。一つ又は複数の開始状態は、ＳＣＬラインがハイの間、ＳＤＡライン上の信号のハイからローへの遷移に対応して１１０において示されている。開始の後、ホストは、読み出し／書き込み否定インジケータ（ｒｅａｄ／ｗｒｉｔｅ−ｎｏｔ  ｉｎｄｉｃａｔｏｒ）１３０によって後続される、名目上７ビットのアドレス１２０を送信する。アドレス１２０を送信し、データ転送（Ｒ／Ｗ−）１３０を方向付けた後、ホストはＳＤＡラインを開放する。それによって、当該ラインは論理ハイレベルに上げられ得る。スレーブデバイスが自身のアドレスを認識する場合、スレーブデバイスは、バスをローに引くことによって通知信号（ＡＣＫ）（ａｃｋｎｏｗｌｅｄｇｅ  ｓｉｇｎａｌ）１４０を送信する。ホストがＳＤＡラインを開放するときにロー信号が存在しないことにより、非通知（ＮＡＫ（ｎｏｎ−ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ））が示される。１４０におけるローを介してアドレス１２０が通知される場合、送信デバイスはデータ１５０を送信する。データ転送の方向がホストに対して“読み出し”となっている場合、スレーブデバイスが送信デバイスとなり、前記方向がホストに対して“書き込み”となっている場合、マスタデバイスが送信デバイスとなる。送信デバイスはＳＤＡラインの制御を開放し、受信デバイスは、１６０においてＳＤＡライン上の論理ロー値を活性化させることによってデータ１５０の受信を通知する。データが通知されると、送信器は更なるデータ１７０を送信する。１８０において示されているように、データの全部が通信されるまで、又は送信されたデータアイテム（ｄａｔａ  ｉｔｅｍ）（データ要素）が非通知になるまで、このプロセスは継続される。マスタは、その後開始信号（図示略）を再活性化させると共に上記のプロセスを繰り返しことが可能であり、又は終了信号（Ｐ）１９０を活性化させて当該データ転送セッションを終了させることが可能である。
【０００６】
上記のインタフェイスプロトコルは様々な態様で実現され得る。Ｉ２Ｃインタフェイスを設計又はプログラミングするための開発期間を最短化するために、様々な汎用インタフェイス方式が公開されてきた。ニューメキシコ大学の１９９９年のＡｍｒｉｔａ  Ｄｅｓｈｐａｎｄｅ氏の修士論文「インタインテグレイティッド回路又はＩ２Ｃバスマスタ・スレーブインタフェイスの（レジスタ転送レベル（ＲＴＬレベル（ｒｅｇｉｓｔｅｒ  ｔｒａｎｓｆｅｒ  ｌｅｖｅｌ））の）挙動モデルの設計（ＤＥＳＩＧＮ  ＯＦ  Ａ  ＢＥＨＡＶＯＲＩＡＬ（ＲＥＧＩＳＴＥＲ  ＴＲＡＮＳＦＥＲ  ＬＥＶＥＬ，ＲＴＬ）ＭＯＤＥＬ  ＯＦ  ＴＨＥ  ＩＮＴＥＲ−ＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴ  ＯＲ  Ｉ２Ｃ−ＢＵＳ  ＭＡＳＴＥＲ−ＳＬＡＶＥ  ＩＮＴＥＲＦＡＣＥ）」は、Ｉ２Ｃデバイスにおいて具現化されることを目的とすると共に本明細書に参照によって取り入れられているＩ２Ｃマスタインタフェイス及びスレーブインタフェイスを開示している。正しいことが確認されたＩ２Ｃインタフェイスをもたらすことによって、システム設計者はＩ２Ｃの規格及びプロトコルの詳細を扱う必要がない。当該論文のマスタとスレーブとの両方のインタフェイスはステートマシン（状態機械）（ｓｔａｔｅ  ｍａｃｈｉｎｅ）に基づいている。
【０００７】
参照された論文のＩ２Ｃスレーブプロトコルに対応する状態図（ｓｔａｔｅ−ｄｉａｇｒａｍ）２００が図２に示されている。状態図２００は、六つの状態Ａ乃至Ｆを有しており、状態遷移は、マスタからのＳＣＬクロック信号のアクティブエッジ（ａｃｔｉｖｅ  ｅｄｇｅ）（０から１への遷移（０−ｔｏ−１  ｔｒａｎｓｉｔｉｏｎ））において行われている。すなわちＩ２Ｃ規格に従って、マスタは、ＳＣＬクロックラインを制御することによってバス上の動作の同期及びシーケンスを制御する。スレーブデバイスはマスタデバイスと同期して動作しなければならないので、ＳＤＡライン上の遷移は、ＳＣＬラインがローである間にのみ発生すると共に、ＳＣＬライン上のハイ状態の期間に、有効なデータがＳＤＡライン上にもたらされる。
【０００８】
リセット信号、通常パワーオンリセット（ｐｏｗｅｒ−ｏｎ  ｒｅｓｅｔ）は、インタフェイスに状態Ａ、すなわちアイドル状態をもたらす。開始状態が検出されると、インタフェイスは、当該インタフェイスが前述（図１）のアドレス１２０及びデータ方向（ｄａｔａ−ｄｉｒｅｃｔｉｏｎ）１３０の情報をホストから受信する状態Ｂに入る。受信されたスレーブアドレスが、特定のインタフェイス２００に関係するアドレスと一致しない場合、インタフェイスはアイドル状態Ａに戻る。データ方向１３０の情報が読み出しの場合、インタフェイスは状態Ｃに入る。又は、データ方向１３０の情報が書き込みの場合、インタフェイスは状態Ｅに入る。インタフェイスが状態Ｃ又は状態Ｅに入る場合、当該インタフェイスは自身のアドレス及びデータ方向の受信を通知すると共に、要求された読み出し又は書き込み動作のためのインタフェイスを準備する。上記のように、読み出し及び書き込み方向はマスタデバイスに関係している。それ故にスレーブデバイスにおいて読み出しは、スレーブが、読み出しのためにマスタにデータを送信するための要求に対応し、書き込みは、スレーブがマスタから書き込まれるデータを受信するための要求に対応する。
【０００９】
状態Ｃにおいて、マスタに送信されるべきデータがロードされ、インタフェイスは状態Ｄへ移行する。状態Ｄにおいてインタフェイスはロードされたデータをマスタに送信する。マスタがデータの受信を通知する場合、インタフェイスは状態Ｃに再び入る。又はインタフェイスは状態Ａに再び入り、他の開始状態を待つ。通常マスタは、最後に所望されたデータアイテムが受信されると、非通知信号（ＮＡＫ）をスレーブに通信することによって受信されるデータ量を制御する。それによって、スレーブはアイドル状態Ａに戻される。
【００１０】
状態Ｅにおいて、受信データが記憶されるべき位置（ｌｏｃａｔｉｏｎ）は消去され、インタフェイスは状態Ｆに移行する。状態Ｆにおいてインタフェイスはマスタからデータを受信する。各々のデータアイテムを受信した後、インタフェイスは通知信号を送信し、次のデータアイテムを受信するために状態Ｅに戻る。スレーブデバイスがマスタからデータを受信し得ない場合、当該デバイスはマスタへの非通知信号を活性化させる。それによって、現在のデータ転送セッションが終了され、アイドル状態Ａに戻される。マスタが他の開始状態を活性化させる場合、インタフェイスは状態Ｂに戻る。又はマスタが終了状態を活性化させる場合、インタフェイスはアイドル状態Ａに戻って、次の開始状態を待つ。
【００１１】
従来技術の状態図２００は、Ｉ２Ｃバス規格を実現しており、それ故に状態図２００を具現化するステートマシンを設けることによって、Ｉ２Ｃデバイスのための標準インタフェイスをもたらし得る。例えばプロセッサ、メモリ素子、及びディスプレイデバイス等のＩ２Ｃデバイスの機能素子は、状態Ｃにおいて送信されるべきデータをステートマシンに供給しさえすればよく、又は状態Ｅにおいて受信されるべきデータを受信するためのメモリスペース（ｍｅｍｏｒｙ  ｓｐａｃｅ）をステートマシンに供給しさえすればよい。このように、Ｉ２Ｃデバイスの機能素子の設計者は、Ｉ２Ｃバスに対するインタフェイスを実現する詳細について関わる必要がない。参照の容易化のため、用語ステートマシン２００は以下、状態図２００を具現化するステートマシンを意味するように使用される。
【００１２】
従来技術のステートマシン２００はＩ２Ｃバス規格を実現するが、いくつかの制限事項を有している。上記のようにＩ２Ｃ規格は、マスタデバイスがＩ２Ｃバス上のタイミングを制御することを要求している。理想的な環境においてよく動作するマスタは、Ｉ２Ｃバスインタフェイスを施すためにスレーブデバイスおいてステートマシン２００を効果的に制御するが、あまりよく動作しないマスタ又は非理想的な環境は、従来技術のステートマシン２００の動作を異常停止（ロックアップ（ｌｏｃｋ−ｕｐ））させるか、又は当該動作に不利な影響を及ぼす可能性を有すると共に、ことによるとＩ２Ｃバス全体の動作に影響を及ぼす可能性を有する。例えば、ステートマシン２００が状態Ｄ、すなわちデータ送信の状態にある間、マスタにおける問題又は意に反した断線（ｕｎｉｎｔｅｎｔｉｏｎａｌ  ｄｉｓｃｏｎｎｅｃｔ）のためにマスタがＳＣＬラインを切り換えることを中止させる場合、ステートマシン２００は状態Ｄに保持されるであろう。開始状態の活性化を介して他のマスタが新たな転送セッションを初期化し、ＳＣＬラインを切り換えると、状態Ｄにおいて終了する、ステートマシン２００は続行されると共に、他のマスタが転送セッションの目的とするスレーブのアドレスを送信している間、次のビットを送信するであろう。その後、Ｉ２Ｃバスの状態、ステートマシン２００の状態、及び他のマスタの状態が不定（ｉｎｄｅｔｅｒｍｉｎａｔｅ）となるであろう。他のマスタは干渉及び“バックオフ（ｂａｃｋ−ｏｆｆ）”を認識し得るであろう。しかしながら、当該マスタ又は更に他のマスタが、他の開始信号を活性化した後に通信することを試みると、前記問題が再発するであろう。ステートマシン２００が、現在のデータバイトのデータビットの全てを送信し、それから次のアクティブなＳＣＬ期間におけるＳＤＡライン上のハイ状態を検出し、更にアイドル状態Ａに戻るまで、前記問題はもたらされ続ける。ステートマシンが、自身の最後のデータビットの送信に後続する次のアクティブなＳＣＬ期間におけるＳＤＡライン上のロー値を検出する場合、当該ステートマシンはこれを通知信号として認識し、状態Ｃに再び入り、次のバイトをロードし、各々のＳＣＬの遷移においてこの新たなバイトのビットの各々を送信し続けるであろう。可能性のある問題の他のシナリオは、ステートマシン２００が他の状態にある間の、ＳＣＬライン上の他の異常の発生に対しても体系的に説明され得る。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明の目的は、Ｉ２Ｃバスに対するインタフェイスをロバストに制御するための装置及び方法を提供することにある。本発明の他の目的は、Ｉ２Ｃバス上の、不適切な送信及び／又は干渉する送信（ｉｎｔｅｒｆｅｒｉｎｇ  ｔｒａｎｓｍｉｓｓｉｏｎ）を防止するための装置及び方法を提供することにある。本発明の他の目的は、異常なマスタデバイスの動作後の、Ｉ２Ｃバス上のスレーブデバイスに対する回復メカニズム（ｒｅｃｏｖｅｒｙ  ｍｅｃｈａｎｉｓｍ）を提供することにある。
【課題を解決するための手段】
【００１４】
これらの目的及び他の目的は、Ｉ２Ｃバスインタフェイスを制御するロバストなステートマシンを提供することによって達成される。前記ステートマシンは、Ｉ２Ｃ規格のスレーブデバイスプロトコルを施すと共に異常なマスタデバイスの動作からの回復をもたらすように構成される。本発明によれば、スレーブデバイスにおけるステートマシンの状態遷移は、開始状態が検出される場合を除いて、Ｉ２ＣバスのＳＣＬラインのマスタデバイス制御によって制御される。前記ステートマシンは、Ｉ２Ｃバス上の開始状態に非同期に（ａｓｙｎｃｈｒｏｎｏｕｓｌｙ）応答するように構成され、自身の現在の状態（ｃｕｒｒｅｎｔ  ｓｔａｔｅ）にかかわらず、ステートマシンを、知られている状態にする。開始状態に後続する知られている状態において、スレーブデバイスはＩ２Ｃバスへのいかなる送信も終了させる。それによって、バス上において引き続いて起こる干渉が最小限化される。
【００１５】
本発明は、添付図面に関連して例示によって更に詳細に説明される。
【００１６】
図面を通して、同じ参照番号及び状態識別子は、類似若しくは対応する特徴又は機能を示している。
【発明を実施するための最良の形態】
【００１７】
図３は、本発明によるＩ２Ｃバスを介してデータ転送を容易にするステートマシン３００の状態図の例を示している。当該ステートマシン３００は、図２のステートマシン２００と類似の状態Ａ乃至Ｆを含んでいると共に別個特有の開始状態（ｓｔａｒｔ  ｓｔａｔｅ）Ｇも含んでいる。状態遷移は、以下注意される場合を除いて、マスタデバイスからのＳＣＬクロック信号によって制御される。
【００１８】
本発明によれば、開始状態Ｇはアイドル状態（ｉｄｌｅ  ｓｔａｔｅ）Ａと明らかに異なっており、従来のステートマシン２００のアドレス状態Ｂと明らかに異なっている。開始状態Ｇは、Ｉ２Ｃバス上で開始状態が検出されるときはいつでも他の何れかの状態から非同期に入力される。すなわち、ステートマシン３００はＳＣＬラインのクロックによって制御されるが、開始状態の発生によりこの制御は無効化（ｏｖｅｒｒｉｄｅ）される。
【００１９】
Ｉ２Ｃバスの通常の動作において、開始状態は、ステートマシンがアイドル状態Ａにある間にのみ生成される。しかしながら、マスタデバイスによる異常な動作の可能性、Ｉ２Ｃバス上にノイズを誘起する遷移、及び他の異常に対処することによって、並びにステートマシン３００がアイドル状態Ａと異なる状態にある間、開始状態の異常な発生を可能にすることによって、ステートマシン３００はこのような異常の効果からの迅速な回復（リカバリ）に対処する。更に、開始状態Ｇへの遷移が非同期化させられることによって、知られている状態へのステートマシン３００の回復は、ＳＣＬライン上のマスタデバイスのクロック信号から独立して行われる。
【００２０】
従来技術においては普通なことに、ステートマシンは、現在の状態の各々のビットの符号化に対して記憶素子、通常Ｄ−フリップフロップ（Ｄ−ｆｌｉｐ−ｆｌｏｐ）を含んでいる。例えば開始状態の検出に対応する信号を、各々の記憶素子の適切な非同期のセット（ＳＥＴ）又はリセット（ＲＥＳＥＴ）入力部に接続することによって、知られている状態への記憶素子の非同期のセットが行われる。開始状態の検出、すなわちＳＣＬラインがハイになっている間のＳＤＡライン上のハイからローへの遷移の発生は、データ入力部としてのＳＣＬライン及びクロック入力部としてのＳＤＡラインを有するネガティブエッジトリガ型フリップフロップ（ｎｅｇａｔｉｖｅ−ｅｄｇｅ  ｔｒｉｇｇｅｒｅｄ  ｆｌｉｐ−ｆｌｏｐ）によってもたらされ得る。普通且つ正常な非開始Ｉ２Ｃ動作において、ＳＤＡラインの遷移は、ＳＣＬラインがローになっている間にのみ発生し、開始状態検出器（ＳＴＡＲＴ  ｃｏｎｄｉｔｉｏｎ  ｄｅｔｅｃｔｏｒ）はロー出力を継続的に供給するであろう。
【００２１】
テーブル１は、本発明によるステートマシン３００の動作を示している。示されているように、状態Ａ乃至Ｆの各々は、次のＧの状態、すなわち開始状態を生成する開始＊入力状態（Ｓｔａｒｔ＊  ｉｎｐｕｔ  ｃｏｎｄｉｔｉｏｎ）を含んでいる。アスタリスクは、当該入力状態が、ステートマシン状態転送を制御するクロック信号から独立して、次の状態に直接的な非同期転送をもたらすことを示している。
【００２２】
本発明の好ましい実施例において、状態Ａ乃至Ｇに関連する、符号化された値はグレイコード（Ｇｒａｙ−ｃｏｄｅ）を使用して符号化されるので、状態Ｇへの非同期転送の間を除いて、各々の状態遷移は、状態値においてたった一つのビットの変化しか含んでいない。例えば状態Ｂは０１００として符号化される。状態Ｂからの有効な遷移は、状態Ａ、Ｃ、又はＥへの遷移を含んでいる。状態Ａは００００として符号化されるが、（左から右へ読む場合）２番目の最上位ビット（ｓｅｃｏｎｄ  ｍｏｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔ（ＭＳＢ））の値が状態Ｂと異なっている。状態Ｃは１１００として符号化されるが、１番目の最上位ビットの値が状態Ｂと異なっている。状態Ｅは０１１０として符号化されるが、３番目の最上位ビットの値が状態Ｂと異なっている。ビット値を同時に変化させる数を制限することによって、直接遷移状態値（ｉｍｍｅｄｉａｔｅ  ｔｒａｎｓｉｔｉｏｎ  ｓｔａｔｅ  ｖａｌｕｅ）が生成されず、それによって、誤った（異常な）状態変化（ｅｒｒｏｎｅｏｕｓ  ｓｔａｔｅ  ｃｈａｎｇｅ）が防止される。例えば状態Ｃは、１番目及び３番目のＭＳＢが状態Ｂ（０１００）と異なっている１１１０として符号化されていた場合、Ｂの０１００から１１１０への遷移は、１番目のＭＳＢ遷移が３番目のＭＳＢ遷移の前に発生すると１１００の遷移状態値をもたらし、又は１番目のＭＳＢ遷移が３番目のＭＳＢ遷移の後に発生すると０１１０の遷移状態値をもたらし得る。グレイコード符号化をもたらす七つの４ビット値のセットが、テーブル１に示されている。当業者に知られているように、所与の符号化された値の単純な反転（ｉｎｖｅｒｓｉｏｎ）及び順列（ｐｅｒｍｕｔａｔｉｏｎ）は、等価なグレイコードである。
【００２３】
【表１】
2004534322.tif 000003
【００２４】
図４は、Ｉ２Ｃバス上のＩ２Ｃデバイス４１０乃至４３０の構成体の例を示している。ここで、少なくとも一つのデバイス４１０は、本発明によるステートマシン３００を含むＩ２Ｃバスインタフェイス４１４を含んでいる。Ｉ２Ｃデバイス４１０乃至４３０は、Ｉ２Ｃバス４５０に、及びＩ２Ｃバス４５０から、データを供給及び／又は受信する、プロセッサ、メモリ素子、及びディスプレイデバイス等のような機能素子を含んでいる。本発明によれば、Ｉ２Ｃインタフェイス４１４により機能素子４１２は、Ｉ２Ｃバス４５０に送信されるべきデータアウトバイト（ｄａｔａ−ｏｕｔ  ｂｉｔｅ）をただ供給することによって、及び／又はバス４５０からデータインバイト（ｄａｔａ−ｉｎ  ｂｉｔｅ）を受信するためのメモリをただ供給することによって、Ｉ２Ｃバス４５０に、及びＩ２Ｃバス４５０からデータを転送することが可能になる。インタフェイス４１４は、Ｉ２Ｃ規格に準拠する通信方式の実施例をもたらすと共に、上記のようにステートマシン３００によって制御されるスレーブデバイスインタフェイスを特に含む。正しいことが確認されたインタフェイスをＩ２Ｃバスにもたらすことによって、Ｉ２Ｃデバイス４１０乃至４３０の機能素子４１２の設計者がデータアウトバイトとデータインバイトのためのメモリとをもたらしさえすればよく、Ｉ２Ｃ通信プロトコルの詳細に拘束されないことは注意されるべきである。
【００２５】
以上は本発明の原理のみを示している。従って、明示的に記載されていないし、又は本明細書に示されていないが、本発明の原理を具現化し、それ故に請求項の範囲内にある様々な装置を当業者が考案し得ることは評価されるであろう。
【図面の簡単な説明】
【００２６】
【図１】従来技術で知られている、Ｉ２Ｃバスを介したデータ転送のタイミング図の例を示している。
【図２】Ｉ２Ｃバスを介したデータ転送を容易にする従来のステートマシンの状態図の例を示している。
【図３】本発明による、Ｉ２Ｃバスを介したデータ転送を容易にするステートマシンの状態図の例を示している。
【図４】本発明による、Ｉ２Ｃバスを介したデータ転送を容易にするステートマシンを含む、Ｉ２Ｃバスの構成例を示している。
【図１】
2004534322.tif 000004
【図２】
2004534322.tif 000005
【図３】
2004534322.tif 000006
【図４】
2004534322.tif 000007
【国際公開パンフレット】
2004534322.tif 000008
2004534322.tif 000009
2004534322.tif 000010
2004534322.tif 000011
2004534322.tif 000012
2004534322.tif 000013
2004534322.tif 000014
2004534322.tif 000015
2004534322.tif 000016
2004534322.tif 000017
2004534322.tif 000018
2004534322.tif 000019
2004534322.tif 000020
2004534322.tif 000021
2004534322.tif 000022
2004534322.tif 000023
2004534322.tif 000024
2004534322.tif 000025
【国際公開パンフレット（コレクトバージョン）】
2004534322.tif 000026
【国際調査報告】
2004534322.tif 000027
2004534322.tif 000028
2004534322.tif 000029