(57)【要約】一実施例では、通信プロトコルを実施するためにシリアルデータライン(110)およびクロックライン(120)を有するシリアルデータ転送バスを使用する通信システム（100,300）は、Ｉ２Ｃシリアルバスを同時使用する並列スレーブデバイス（320,330,340,350）のプログラミングを含む。少なくとも２つのスレーブデバイスは、データ転送バスに並列に結合され、通信プロトコルを用いてシリアルデータをシリアルデータラインにロードするように設定される。各スレーブデバイスは、通信プロトコルを用いて、複数の選択可能なスレーブデバイス設定の１つを選択するようにプログラム設定されるプログラム可能な設定レジスタを含む。選択可能なスレーブデバイス設定の１つは、少なくとも２つのスレーブデバイスに、シリアルデータを並列にロードさせ、選択可能なスレーブデバイス設定のもう１つは、少なくとも２つのスレーブデバイスにシリアルデータを１つずつロードさせる。
2008539498.tif 000002
【特許請求の範囲】
【請求項１】
通信プロトコルを実施するために用いられるシリアルデータラインおよびクロックラインを具えるシリアルデータ転送バスと、
前記データ転送バスに並列に結合され、前記通信プロトコルを用いて前記シリアルデータラインにシリアルデータをロードするように設定された少なくとも２つのスレーブデバイスとを具える通信システムであって、
前記スレーブデバイスの各々は、前記通信プロトコルを用いて、複数の選択可能なスレーブデバイス設定の１つを選択するようにプログラム設定されるプログラム可能な設定レジスタを具え、
前記複数の選択可能なスレーブデバイス設定の１つは、前記少なくとも２つのスレーブデバイスに、前記シリアルデータを並列にロードさせ、前記複数の選択可能なスレーブデバイス設定のもう１つは、前記少なくとも２つのスレーブデバイスに、前記信号リアルデータを１つずつロードさせる
ことを特徴とする通信システム。
【請求項２】
並列に結合され、前記シリアルデータをロードするように設定された３つ以上のスレーブデバイスを具え、
各スレーブデバイス内の前記プログラム可能な設定レジスタは、前記３つ以上のスレーブデバイスの各々を、前記プログラム可能な設定レジスタに基づいて、１つの設定では前記シリアルデータを個別に、他の設定では他のスレーブデバイスに対して並列に、ロードするように個別に設定するようにプログラム設定される
ことを特徴とする請求項１に記載の通信システム。
【請求項３】
並列にロードされるスレーブデバイスが一斉にロードされることを特徴とする請求項１に記載の通信システム。
【請求項４】
並列にロードされるスレーブデバイスが同時（コンカレント）にロードされことを特徴とする請求項１に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、通信装置およびその方法に関するものであり、特には、Ｉ２Ｃシリアルバスを同時（コンカレント）に使用する並列スレーブデバイスをプログラミングするための方法および装置に関するものである。
【背景技術】
【０００２】
フィリップス社が開発した Ｉ２Ｃ（Inter-Integrated Circuit）バスによって、集積回路は（電源およびグラウンドに加えて）簡単な双方向２線バスを介して、互いに直接通信することができる。デバイスはバス上の２ライン、すなわち、データ通信のためのシリアルデータライン（SDA）と、デバイス間のデータ通信の制御および同期のためのシリアルクロックライン（SCL）との各々に接続する。各デバイスは他の各デバイスと並列に結合され、各バスライン（SDAおよびSCL）はバス上の全ラインのワイヤード・アンドとして機能する。各デバイスの出力はオープンコレクタ／オープンドレイン・デバイスとして構成され、バスが休止状態にある間、１つ以上のプルアップ抵抗がバス上に「ソフト」ロジックハイ値を維持する。デバイスがバスにアクセス要求をするとき、デバイスは、導電状態でグラウンド電位になるオープンコレクタ／オープンドレイン・デバイスによって、バスをロジックロー値に引く。
【０００３】
Ｉ２Ｃバスに接続している各デバイスは、アドレスによって識別可能であり、送信機あるいは受信機として、または両方として動作することができる。データ転送は、マスタ−スレーブ通信プロトコルを使用して実行される。マスタはデータ転送を開始するデバイスであり、転送を可能にするためのクロック信号を生成し、アドレス指定される任意のデバイスはこの転送のスレーブとみなされる。データ転送はマスタによって開始され、データをスレーブに送信する（本明細書ではライトと表現される）、または、データをスレーブから要求する（本明細書ではリードと表現される）ことができる。例えば、表示スクリーンのような出力装置は、一般的にデータ転送を開始することができないので、スレーブデバイスとしてのみ動作するように構成される。一方、マイクロプロセッサは、一般的に、状況に応じてマスタあるいはスレーブとして動作するように構成される。
【０００４】
休止状態では、SDAおよびSCLバスラインは、ロジックハイの状態（本明細書では、ハイまたは論理状態１と表現される）にある。SCLラインがハイの間に、マスタはロジックローの状態（本明細書では、ローまたは論理状態０と表現される）への遷移をSDAラインにアサートすることによってデータ転送を開始し、これはスタートコンディションと呼ばれる。その後、マスタは、データ転送を同期制御するために、SCLラインの状態を交互に切り替え、SCLクロックがローのときに、データ値の変化がSDAラインに生じ、SCLクロックがハイのときは、SDAラインの状態が有効であるとみなされるだけである。
【０００５】
複数のスタートコンディションをアサートし、同じ転送セッション内で一連のデータ転送を実行することができる。通常、各データ転送は、データ転送のアドレス指定された受信側からの肯定応答を必要とする。データ転送を終了するには、SCLクロックがハイの間に、ホストはSDAラインにローからハイへの遷移をアサートする。これは、ストップコンディションと呼ばれる。その後、任意のデバイスが、上述したように、ハイからローへの遷移をSDAラインにアサートすることによって、マスタとしてバスを制御することができる。本明細書では、説明を簡略化するために、特定の論理状態を有効にするあるいは有効にするよう試みることをアサートという用語で表していることに注意されたい。ロジックハイ状態への遷移は、一般的に、アサートするデバイスによる強制プルダウン状態からのバスの解放によって与えられる。他のデバイスがプルダウン状態を強制していない限り、このロジックハイ状態のアサーションは、上述したプルアップ抵抗によりバスをロジックハイの状態にすることができる。
【０００６】
Ｉ２Ｃデータ転送の一般的なフォーマットは、Ｉ２Ｃバスを形成するSDAラインおよびSCLライン上の信号を含む。SCLラインがハイの間、スタートコンディション（S）はSDAライン上の信号のハイからローへの遷移に対応する。スタートコンディションの後、ホストはアドレス（公称７ビット）に続いてリード／ライトビットを送信する。アドレスおよびデータ転送方向（Ｒ／Ｗ）を送信した後に、ホストはSDAラインを解放するので、SDAラインはロジックハイレベルまで上昇することができる。スレーブデバイスは自分のアドレスを認識すると、バスをローに引くことによって肯定応答信号（ACK）を送信する。したがって、ホストがSDAラインを解放するときにロー信号がないことは否定応答（NAK）を示す。SDAのローによってアドレスが肯定される場合、送信装置はデータを送信する。データ転送の方向がホストに対して「リード」の場合、スレーブデバイスが送信装置となり、データ転送の方向がホストに対して「ライト」の場合、マスタデバイスが送信装置となる。送信装置がSDAラインの制御を解放し、受信装置がSDAラインにロジックロー値をアサートすることによってデータ受信を肯定する。データ受信が肯定される場合、送信装置は追加データを送信する。全データが伝達されるまで、または、送信されたデータ項目が否定されるまで、このプロセスが続く。その後、マスタはスタート信号を再びアサートして上述したプロセスを繰り返す、あるいは、ストップ信号（P）をアサートしてこのデータ転送セッションを終了することができる。
【０００７】
上記のインタフェースプロトコルを、さまざまな方法で実現することができる。Ｉ２Ｃインタフェースをプログラムまたは設計するための開発時間を最短にするために、種々の汎用インタフェース方式が発表されてきた。（「Design Of A Behavioral (Register Transfer Level, RTL) Model Of The Inter-Integrated Circuit Or I2C-Bus Master-Slave Interface」, Master's Thesis of Amrita Deshpande, University of New Mexico, 1999）は、Ｉ２Ｃデバイスに具現化するように意図されたＩ２Ｃマスタインタフェースおよびスレーブインタフェースを開示しており、参考のためにここに含まれる。検証済のＩ２Ｃインタフェースを提供することによって、システム設計者はＩ２Ｃの仕様およびプロトコルの詳細に対処する必要がなくなる。この論文のマスタおよびスレーブインタフェースは、ともにステートマシンベースである。ステートマシンベースのシステムおよび方法は米国特許第6,799,233号明細書に更に記載され、参考のためにここに含まれる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明のさまざまな態様は、上述した問題を解決するように、Ｉ２Ｃシリアルバスをコンカレントに使用して並列のスレーブデバイスをプログラミングするための方法および装置を対象にしている。
【課題を解決するための手段】
【０００９】
一実施例では、本発明の通信システムは、通信プロトコルを実施するためにシリアルデータラインおよびクロックラインを有するシリアルデータ転送バスを使用するものであり、Ｉ２Ｃシリアルバスを同時（コンカレント）に使用する並列スレーブデバイスのプログラミングを含む。少なくとも２つのスレーブデバイスは、データ転送バスに並列に結合され、通信プロトコルを使用して、シリアルデータをシリアルデータラインにロードするように設定される。各スレーブデバイスは、通信プロトコルを用いて、複数の選択可能なスレーブデバイス設定の１つを選択するようにプログラム設定されるプログラム可能な設定レジスタを含む。選択可能なスレーブデバイス設定の１つは、少なくとも２つのスレーブデバイスに、シリアルデータを並列にロードさせ、選択可能なスレーブデバイス設定のもう１つは、少なくとも２つのスレーブデバイスに、シリアルデータを１つずつロードさせる。
【００１０】
本発明の他の実施例では、本発明は、各スレーブデバイス内の設定レジスタを、Ｉ２Ｃシリアルデータ転送バス上の通信プロトコルを用いて、２つ以上の選択可能なスレーブデバイス設定のうちの１つを選択するようにプログラミングするステップを含む方法を提供する。２つ以上の選択可能なスレーブデバイス設定の１つは、少なくとも２つのスレーブデバイスに、シリアルデータ転送バスに供給されるデータを並列にロードさせる。２つ以上の選択可能なスレーブデバイス設定のもう１つは、少なくとも２つのスレーブデバイスに、シリアルデータ転送バスに供給されるデータを１つずつロードさせる。データは、選択された設定に基づいて、少なくとも２つのスレーブデバイスにロードされる。
【００１１】
上述した本発明の要旨は、本発明の各実施例または全実施例を記載することを目的としない。添付図面と合わせて以下の詳細な説明および特許請求の範囲を参照することによって、本発明をより完全に理解するとともに、本発明の効果および達成するものを明らかにする。
【発明を実施するための最良の形態】
【００１２】
本発明は、添付図面と関連した本発明の各種実施例の以下の詳細な説明を考慮すると、より完全に理解することができる。
【００１３】
本発明は種々の変更例および代替例が可能であるが、特定の実施例を一例として図面に示し、以下に詳細に説明する。しかし、本発明は、記載されている特定の実施例に限定されるものではない。それどころか、本発明は、添付の請求の範囲で特定される本発明の範囲に入る全ての変更物、等価物および代替物をカバーするものである。
【００１４】
本発明は、一般的に、Ｉ２Ｃシリアルバスを同時使用する複数の並列スレーブデバイスをプログラミングする方法および装置に適用できる。本発明は、特に、Ｉ２Ｃ（Inter Integrated Circuit）シリアルデータ通信バスに有利であるとわかったが、システムマネジメントバス（ＳＭＢｕｓ）アーキテクチャおよび／またはプロトコルまたは他のシリアルデータ通信システムのような、他のバスおよび通信プロトコルにもまた有利であることがわった。本発明は、限定ではなく例示のために、スレーブデバイスに対する通信を制御するマスタデバイスを有するＩ２Ｃバスに関して説明される。
【００１５】
マスタは、Ｉ２Ｃバス・アーキテクチャ上でＩ２Ｃスレーブとの通信を制御する。Ｉ２Ｃスレーブは、携帯電話、ＰＤＡおよびスマートフォンからＬＣＤ  ＴＶ、医療機器、ゲーム機にわたる分野の多数のアプリケーションおよび他のアプリケーションに見られる。Ｉ２Ｃスレーブの１つの特定のアプリケーションは、汎用入出力（ＧＰＩＯ）デバイスである。この種のデバイスでは、入力または出力として用いることができる多くの多機能ピンがある。一般的に、これらのピンは、入力として使われるとき、特定の信号の状態（モニタされている）を示す。
【００１６】
Ｉ２Ｃスレーブの１つの特定のアプリケーションは、汎用入出力（ＧＰＩＯ）デバイスである。この種のデバイスでは、入力または出力として用いることができる多くの多機能ピンがある。出力として構成されるとき、これらのデバイスはシステム内で、例えば、多くの発光ダイオード（ＬＥＤ）を駆動するために使用できる。これらの出力は、一般的にバンクに分割され、Ｉ２Ｃバスを介して個々にプログラムされる。
【００１７】
一実施例では、本発明の通信システムは、通信プロトコルを実施するためにシリアルデータラインおよびクロックラインを有するシリアルデータ転送バスを使用するものであり、Ｉ２Ｃシリアルバスを同時（コンカレント）に使用する並列スレーブデバイスのプログラミングを含む。少なくとも２つのスレーブデバイスは、データ転送バスに並列に結合され、シリアルデータを、通信プロトコルを使用してシリアルデータライン上にロードするように構成される。各スレーブデバイスは、通信プロトコルを用いて、複数の選択可能なスレーブデバイス設定の１つを選択するようにプログラム設定されるプログラム可能な設定レジスタを含む。選択可能なスレーブデバイス設定の１つは、少なくとも２つのスレーブデバイスに、シリアルデータを並列にロードさせ、選択可能なスレーブデバイス設定のもう１つは、少なくとも２つのスレーブデバイスに、シリアルデータを１つずつロードさせる。
【００１８】
データを同時にロードする並列スレーブデバイスは、汎用入出力（ＧＰＩＯ）デバイスまたは他のスレーブデバイスとして構成することができる。通信システムは、Ｉ２Ｃ、ＳＭＢｕｓおよび／または他のシリアル通信仕様に従うことができる。
【００１９】
図１は、本発明の実施例に係る、Ｉ２Ｃシリアルバスを同時に使用する並列スレーブデバイスのプログラミングを実現するデータ通信システム100のブロック図である。SDAライン110およびSCLライン120はＩ２Ｃデータバス125として構成されている。マスタデバイス130およびスレーブデバイス140は、Ｉ２Ｃデータバス125に接続されている。マスタデバイス130は、SCLライン120およびSDAライン110にそれぞれ電気的に接続されたクロック接続134およびデータ接続132を用いて、Ｉ２Ｃデータバス125に電気的に接続されている。
【００２０】
２以上のスレーブデバイス140は、SCLライン120およびSDAライン110にそれぞれ電気的に接続されたクロック接続144およびデータ接続142を用いて、Ｉ２Ｃデータバス125に電気的に接続されている。マスタデバイス130は、152において、２以上のスレーブデバイス140をアドレス指定し、154において、スレーブデバイス140が特定の設定で動作するようにプログラムする。これらのスレーブデバイスのプログラミング１５４は、例えば、スレーブデバイス140のアドレスをＩ２Ｃデータバス125上で観測されるとき指定し、指定されたアドレスを認識する任意のスレーブデバイスを、アドレスの後に続くデータを受信するように設定することによって実行することができる。このアドレスを認識する全てのスレーブデバイスは、その後バスにおかれたデータを並列に受信する。Ｉ２Ｃ通信プロトコルのために、最も遅いスレーブデバイスが伝送速度を制御するので、データは指定された全ての並列スレーブデバイスによって受信される。
【００２１】
スレーブデバイス140は、162において、例えば、スレーブデバイス140の設定を指定するワードをレジスタにおくことによって、プログラム154を受信する。マスタデバイス130は、156において、シリアルデータをＩ２Ｃデータバス125でスレーブデバイス140に送信し、スレーブデバイス140は、164において、このシリアルデータを受信する。次に、166において、スレーブデバイスは、そのシリアルデータを指定されたアドレスを認識する他のデバイスと並列にロードする。
【００２２】
図２は、本発明の実施例に係る、Ｉ２Ｃシリアルバスを同時に使用する並列スレーブデバイスのプログラミングを実施するデータ通信システムのためのシリアルデータストリーム200の一例である。図２に示されるシリアルデータストリーム200は、Ｉ２Ｃ通信プロトコルに従う。オールコール（ALL  CALL）アドレス202は、Ｉ２Ｃバス上にマスタによって送信されるスタートコンディション222の後に続く。オールコールアドレス202の後に、リード／ライトビット210およびオールコールアドレス202を認識する全てのスレーブデバイスからのアクノレッジ信号212が続く。図２では、リード／ライト信号210は、マスタからスレーブに対する書き込みを示すロジック０として示されている。第１のデータバイト204、第２のデータバイト206および第３のデータバイト208はマスタデバイスによって送信され、各データバイト204、206、208の後に、オールコールアドレス202を認識するスレーブデバイスからのそれぞれのアクノレッジ214、216、218が続く。このように、オールコールアドレス202を認識する全てのスレーブデバイスはデータバイト204、206、208を並列にロードするようにプログラムされる。
【００２３】
図３は、本発明の実施例に係る、Ｉ２Ｃシリアルバスを同時使用する並列スレーブデバイスのプログラミングを実施するシステム300のブロック図である。スレーブデバイス320、330、340および350は、Ｉ２Ｃバス310に接続されている。図３では、スレーブデバイス320、330、340および350はＧＰＩＯデバイスとして示されるが、これは説明のためであって、限定のためではない。スレーブデバイス320、330、340および350は、アセンブリ並びにＩ２Ｃバス310への及び／又はからのデータフローを制御するために、設定レジスタ325、335、345および355を含むことができる。
【００２４】
一つの特定の例では、スレーブデバイス320、330および340を特定のオールコールアドレスを認識するようにプログラムし、スレーブデバイス350を特定のオールコールアドレスを認識するようにプログラムしないことができる。この場合に、特定のオールコールアドレスがＩ２Ｃバス310におかれると、スレーブデバイス320、330および340は特定のオールコールアドレスの後に続くデータをロードするが、スレーブデバイス350は特定のオールコールアドレスの後に続くデータをロードしない。
【００２５】
図４は、本発明の実施例に係る、Ｉ２Ｃシリアルバスを同時に使用する並列スレーブデバイスのプログラミングを実施する方法400のフローチャートである。方法400は、プログラム可能な設定レジスタによって選択されるスレーブデバイス設定に基づいて、一度に１つずつあるいは並列にデータ更新する一群のスレーブデバイス、例えばＧＰＩＯを含む。
【００２６】
方法400は、例えば、スレーブデバイス内の設定レジスタを用いることによって、または、スレーブデバイスによって認識される特定のアドレスを書き込むことによって、スレーブデバイスを特定の設定にプログラミングするステップ410を含む。このプログラミングは、Ｉ２Ｃ通信プロトコルを使用して実行し、スレーブデバイスがＩ２Ｃバス上の他のスレーブデバイスに対してシーケンシャルに更新するのか、並列に更新するのかを指定することができる。ステップ420において、シリアルデータは、Ｉ２Ｃバスのようなシリアルデータ転送バスを使用して、バス上のあらゆるスレーブデバイスによって受信される。ステップ430において、選択あるいは設定されたスレーブデバイスは、データをロードし、プログラミングステップ410に基づいて、１つずつあるいは他のスレーブデバイスに対して並列に更新する。方法400を実現するスレーブデバイスとしてＧＰＩＯデバイスを挙げたのは、単に例示のためであり、限定するためではない。
【００２７】
ハードウェア、ファームウェア、ソフトウェアまたはそれらの組合せを用いて、本明細書に記載したＩ２Ｃシリアルバスを同時使用する並列スレーブデバイスをプログラミングする種々の実施例を実行することができる。本発明と関連して用いられるマスタデバイスの機能は、上記の如きＩ２Ｃマスタデバイスにもたせることもでできるが、スタンドアロンコンピュータあるいはシリアルデータ通信システム100に接続されるネットワーク型コンピュータにもたせることもできる。図１に示すシリアルデータ通信システム100は、本発明の動作を実行するために、この種の通信システム、コンピュータまたは他のコンピュータ実装デバイスと関連して用いることができる構成の一例である。
【００２８】
図１に示すマスタデバイス130の例は、本発明のプログラミング方法を実行するのに適しており、一般的に、ランダムアクセスメモリ（ＲＡＭ）および／または数種類のリードオンリーメモリ（ＲＯＭ）に結合された中央制御装置（ＣＰＵ）を含む。また、ＲＯＭは、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）などのような、プログラムを格納する他のタイプの記憶媒体でもよい。プロセッサは、入出力（Ｉ／Ｏ）回路および／または他のバスを介して、他の内部及び外部構成要素と通信して、制御信号、通信信号などを供給することができる。
【００２９】
マスタデバイス130は、情報の読み込みおよび／または格納ができるハードディスクドライブ、フレキシブルディスクドライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤなどの他のハードウェアを含む１つ以上のデータ記憶装置を含むことができる。一実施例においては、本発明に係る、Ｉ２Ｃシリアルバスを同時使用する並列スレーブデバイスをプログラミングする実施例を実行するためのソフトウェアは、ＣＤ−ＲＯＭ、ディスケットまたは携帯可能に情報を格納できる他の形態の媒体に格納し、流通させることができる。これらの記憶媒体は、ＣＤ−ＲＯＭドライブ、ディスクドライブなどに挿入し、読み出すことができる。ソフトウェアは、例えばインターネットのようなネットワークを介して電子的にダウンロードされるデータ信号によって、コンピュータ装置に送信することができる。さらに、代案として、前述したように、本発明と関連する機能を実行するためのソフトウェアは、コンピュータデバイスの内部メモリ／記憶装置（例えばＲＯＭ）に格納することができる。
【００３０】
結果として得られる、コンピュータ読取り可能なプログラムコードを有するプログラムを、１つ以上のコンピュータ使用可能な記憶装置のような媒体内または送信装置内に具現化することによって、本発明によるコンピュータプログラム製品を作製することができる。以上のように、本明細書において使用する「コンピュータ読取り可能な媒体」、「製品」、「コンピュータプログラム製品」という用語または他の類似語は、任意の記憶装置のようなコンピュータ使用可能な媒体あるいは任意の送信装置において、永久にあるいは一時的に存在するコンピュータプログラムを含むものである。
【００３１】
明示的に別段の定めをした場合を除き、本明細書（添付の請求の範囲、要約および図面を含む）で開示される各機能は、同一、等価、あるいは類似の目的を有する他の機能によって置換可能である。このように、明示的に別段の定めをした場合を除き、開示される各機能は一般的な一連の等価あるいは類似の機能の一例にすぎない。
【００３２】
本発明は、上述した特定の実施例に限定されるものとみなしてはならない。本発明を適用可能なさまざまな変更例および等価方法ならびに多数の構成が本発明の範囲に含まれる。例えば、本発明の実施例は、共通バス（例えばＳＭＢｕｓまたは他のバス構成）上のデバイス間の通信のための、同様に構成された一方向または双方向インタフェースを使用して実現することができる。この種の変更は、添付の請求の範囲に記載されているので、本発明の特許請求の範囲の一部とみなすことができる。
【図面の簡単な説明】
【００３３】
【図１】本発明の実施例に係る、Ｉ２Ｃシリアルバスを同時使用する並列スレーブデバイスのプログラミングを実施するデータ通信システム100のブロック図である。
【図２】本発明の実施例に係る、Ｉ２Ｃシリアルバスを同時使用する並列スレーブデバイスのプログラミングを実施するデータ通信システムのためのシリアルデータストリーム200の一例である。
【図３】本発明の実施例に係る、Ｉ２Ｃシリアルバスを同時使用する並列スレーブデバイスのプログラミングを実施するシステム300のブロック図である。
【図４】本発明の実施例に係る、Ｉ２Ｃシリアルバスを同時使用する並列スレーブデバイスのプログラミングを実施する方法400のフローチャートである。
【図１】
2008539498.tif 000003
【図２】
2008539498.tif 000004
【図３】
2008539498.tif 000005
【図４】
2008539498.tif 000006
【国際調査報告】
2008539498.tif 000007
2008539498.tif 000008