(57)【要約】【課題】より確実に効率良く通信を行う。【解決手段】任意の複数台のスレーブを１つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、グループに所属して通信を行うことができるグループ所属能力を有するスレーブが認識される。そして、グループ所属能力を有するスレーブと、グループ所属能力を有さないスレーブとが混在してバスに参加している状態で、グループ所属能力を有すると認識されたスレーブに対してグループアドレスが割り当てられる。本技術は、例えば、バスＩＦに適用できる。【選択図】図４
2018206266.tif 000002
【特許請求の範囲】
【請求項１】
バスを介した通信の主導権を有する通信装置であって、
前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御する送受信制御部と、
前記バスに参加している２台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を１つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理、
および、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理
を行う処理実行部と
を備える通信装置。
【請求項２】
前記処理実行部は、前記グループ所属能力を有する前記他の通信装置と、前記グループ所属能力を有さない前記他の通信装置とが混在して前記バスに参加している状態で、前記グループ所属能力を有する前記他の通信装置を個別に宛先として前記グループアドレスの割り当てを指示するコマンドを送信する
請求項１に記載の通信装置。
【請求項３】
前記通信装置から前記通信の主導権が譲渡されると前記通信装置として機能することが可能で、前記通信の主導権を有していないときには前記通信装置による制御に従って通信を行う特定の他の通信装置が前記バスに参加することができ、
前記処理実行部は、前記バスに参加している前記特定の他の通信装置のうちの、前記グループアドレスを管理して通信を行うことができるグループ管理能力を有する前記特定の他の通信装置を認識する処理を行う
請求項１に記載の通信装置。
【請求項４】
前記処理実行部は、前記グループ管理能力を有すると認識された前記特定の他の通信装置との間で、前記他の通信装置のグループ所属能力の認識状況、前記特定の他の通信装置のグループ管理能力の認識状況、および、前記他の通信装置に対する前記グループアドレスの割り当て状況を共有する処理を行う
請求項３に記載の通信装置。
【請求項５】
前記バスに、複数台の前記グループ管理能力を有する前記特定の他の通信装置が接続されている状態で、
前記処理実行部は、前記グループアドレスに関する情報の共有を指示するコマンドを送信することで、前記他の通信装置のグループ所属能力の認識状況、前記特定の他の通信装置のグループ管理能力の認識状況、および、前記他の通信装置に対する前記グループアドレスの割り当て状況の共有を行う
請求項４に記載の通信装置。
【請求項６】
バスを介した通信の主導権を有する通信装置の通信方法であって、
前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御し、
前記バスに参加している２台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を１つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理を行い、
前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行う
ステップを含む通信方法。
【請求項７】
バスを介した通信の主導権を有する通信装置が内蔵するコンピュータに実行させるプログラムにおいて、
前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御し、
前記バスに参加している２台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を１つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理を行い、
前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行う
ステップを含む処理を実行させるプログラム。
【請求項８】
バスを介した通信の主導権を有する通信装置と、前記通信装置による制御に従って通信を行う他の通信装置とにより通信が行われる通信システムにおいて、
前記通信装置が、
前記他の通信装置との間における信号の送受信を制御する送受信制御部と、
前記バスに参加している２台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を１つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理、
および、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理
を行う処理実行部と
を備える通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、通信装置、通信方法、プログラム、および、通信システムに関し、特に、より確実に効率良く通信を行うことができるようにした通信装置、通信方法、プログラム、および、通信システムに関する。
【背景技術】
【０００２】
従来、各種のデバイスにおけるレジスタを制御するためのバスＩＦ（Interface）としてCCI（Camera Control Interface）が広く使用されており、CCIでは、物理層にI2C（Inter-Integrated Circuit）規格が採用されている。また、近年、I2Cの高速化を実現することが求められており、次世代の規格としてI3C（Improved Inter Integrated Circuit）の規定が策定され、その改定が進められている。
【０００３】
例えば、I2CおよびI3Cは、バスＩＦを介した通信の主導権を有するマスタによる制御に従って、バスＩＦに接続されているスレーブと通信を行うことができるように構成される。さらに、I3Cでは、I2Cのデバイスと通信を行うことができるように互換性を維持する機能や、バスＩＦに途中からスレーブが参加することを可能とするホットジョインと称される機能、複数のマスタどうしでマスタ権限を譲渡する機能などが提供される。
【０００４】
また、特許文献１には、I3Cにおいて、通信のスタートやストップなどの誤検出に伴って通信不能となることを回避するようにエラー検出方法を定義することで、より確実に通信を行うことが可能な通信装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１７／０６１３３０号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、現行のI3Cの規格では、バスＩＦに接続された全てのデバイスを相手先として通信を行うこと、および、バスＩＦに接続された任意の１つのデバイスを相手先として通信を行うことが規定されている。
【０００７】
そのため、例えば、バスＩＦに接続された任意の複数台のデバイスに同一の内容の書き込みを行いたい場合、マスタは、それらのデバイスに対して個々に書き込み転送を繰り返して行わなければならなかった。従って、より効率良く通信を行うことができるようにするために、任意の複数台のデバイスを相手先として通信を行う手法を確立することが考えられる。そして、そのような手法で通信を行うのに伴って発生することが懸念される通信エラーを回避し、確実に通信が行われるようにすることが必要となる。
【０００８】
本開示は、このような状況に鑑みてなされたものであり、より確実に効率良く通信を行うことができるようにするものである。
【課題を解決するための手段】
【０００９】
本開示の一側面の通信装置は、バスを介した通信の主導権を有する通信装置であって、前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御する送受信制御部と、前記バスに参加している２台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を１つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理、および、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行う処理実行部とを備える。
【００１０】
本開示の一側面の通信方法またはプログラムは、バスを介した通信の主導権を有する通信装置の通信方法、または、バスを介した通信の主導権を有する通信装置が内蔵するコンピュータに実行させるプログラムにおいて、前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御し、前記バスに参加している２台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を１つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理を行い、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行うステップを含む。
【００１１】
本開示の一側面の通信システムは、バスを介した通信の主導権を有する通信装置と、前記通信装置による制御に従って通信を行う他の通信装置とにより通信が行われる通信システムにおいて、前記通信装置が、前記他の通信装置との間における信号の送受信を制御する送受信制御部と、前記バスに参加している２台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を１つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理、および、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行う処理実行部とを備える。
【００１２】
本開示の一側面においては、通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信が制御され、バスに参加している２台以上の他の通信装置のうちの、任意の複数台の他の通信装置を１つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、グループに所属して通信を行うことができるグループ所属能力を有する他の通信装置を認識する処理が行われ、グループ所属能力を有すると認識された他の通信装置に対してグループアドレスを割り当てる処理が行われる。
【発明の効果】
【００１３】
本開示の一側面によれば、より確実に効率良く通信を行うことができる。
【００１４】
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１５】
【図１】本技術を適用したバスＩＦの一実施の形態の構成例を示すブロック図である。
【図２】マスタおよびスレーブの構成例を示すブロック図である。
【図３】デバイス情報が登録されたテーブルの一例を示す図である。
【図４】ダイナミックアドレスおよびグループアドレスを割り当てる処理を説明するフローチャートである。
【図５】ダイナミックアドレスおよびグループアドレスを割り当てる処理の変形例を説明するフローチャートである。
【図６】GETGRPCAPコマンドの第１のフォーマット例を示す図である。
【図７】GETGRPCAPコマンドの第２のフォーマット例を示す図である。
【図８】GETGRPCAPコマンドの第３のフォーマット例を示す図である。
【図９】SETGRPAコマンドの第１のフォーマット例を示す図である。
【図１０】SETGRPAコマンドの第２のフォーマット例を示す図である。
【図１１】DEFGRPSコマンドの第１のフォーマット例を示す図である。
【図１２】DEFGRPSコマンドの第２のフォーマット例を示す図である。
【図１３】DEFGRPSコマンドの第３のフォーマット例を示す図である。
【図１４】書き込み転送における通信フォーマットの一例を示す図である。
【図１５】書き込み転送および読み出し転送における通信フォーマットの一例を示す図である。
【図１６】書き込み転送および読み出し転送における通信フォーマットの一例を示す図である。
【図１７】本技術を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、本技術を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００１７】
＜バスＩＦの構成例＞
図１は、本技術を適用したバスＩＦの一実施の形態の構成例を示すブロック図である。
【００１８】
図１に示されているバスＩＦ１１は、３台のマスタ１２−１乃至１２−３および６台のスレーブ１３−１乃至１３−６が、シリアルデータSDAを伝送するデータ信号線１４と、シリアルクロックSCLを伝送するクロック信号線１５とを介して接続されて構成される。
【００１９】
マスタ１２−１および１２−２、並びに、スレーブ１３−１乃至１３−４は、新たに提案されるバージョンのI3Cの規格（I3C_v1.1）に準拠している。また、マスタ１２−３およびスレーブ１３−５は、現行のバージョンのI3Cの規格（I3C_v1.0）に準拠しており、スレーブ１３−６は、I2Cの規格に準拠している。このように、バスＩＦ１１は、I3C_v1.1に準拠しているデバイス、I3C_v1.0に準拠しているデバイス、およびI2Cの規格に準拠しているデバイスが混在しても運用可能に構成される。
【００２０】
また、I3Cでは、稼働している状態のバスＩＦ１１に途中から参加することを可能とする機能であるホットジョインが規定されている。図１において破線で示されているスレーブ１３−４は、例えば、パワーオフとされてバスＩＦ１１に参加していない状態を表している。そして、スレーブ１３−４は、パワーオンとなった後にホットジョインリクエストを送信して、バスＩＦ１１に参加することができる。
【００２１】
マスタ１２−１乃至１２−３は、バスＩＦ１１を介した通信を主導的に制御する機能を備えており、スレーブ１３−１乃至１３−６は、マスタ１２−１乃至１２−３のうちの主導権を有する１台の制御に従って、バスＩＦ１１を介した通信を行うことができる。なお、以下適宜、マスタ１２−１乃至１２−３それぞれを区別する必要がない場合、単に、マスタ１２と称し、スレーブ１３−１乃至１３−６それぞれを区別する必要がない場合、単に、スレーブ１３と称する。
【００２２】
また、マスタ１２−１乃至１２−３のうち、バスＩＦ１１における通信の主導権（以下、マスタ権限と称する）を有する１台のマスタ１２をカレントマスタ１２Ｃと称し、その他のマスタ１２をセカンダリマスタ１２Ｓと称する。例えば、マスタ権限を有していないセカンダリマスタ１２Ｓは、カレントマスタ１２Ｃの制御に従ってバスＩＦ１１を介した通信を行うことができ、カレントマスタ１２Ｃからマスタ権限が譲渡されると、カレントマスタ１２Ｃとして機能する。このように、マスタ１２は、通信の主導権を有している状態でカレントマスタ１２Ｃとして機能し、通信の主導権を有していない状態のセカンダリマスタ１２Ｓはスレーブ１３と同様に扱われる。従って、本実施の形態では、カレントマスタ１２Ｃの制御に従って通信を行うセカンダリマスタ１２Ｓも、スレーブ１３に含まれるものとして説明する。
【００２３】
ここで、以下適宜、I3C_v1.1に準拠しているスレーブ１３−１乃至１３−４、および、I3C_v1.0に準拠しているスレーブ１３−５のことを、I3Cスレーブ１３とも称する。さらに、I3C_v1.1およびI3C_v1.0いずれかに準拠しているデバイス（即ち、マスタ１２およびI3Cスレーブ１３）を、I3Cデバイスとも称する。
【００２４】
ところで、I3C_v1.1では、カレントマスタ１２Ｃが、任意の複数台のI3Cスレーブ１３を相手先として、それらのI3Cスレーブ１３に対して一斉に書き込み転送を行うことを可能とするグループアドレスを設定して運用することが検討されている。
【００２５】
即ち、後述する図６乃至８に示すようなフォーマットのSETGRPAコマンドを定義することで、同一のグループに属する複数台のI3Cスレーブ１３に対して、同一のグループアドレスが設定される。例えば、個々のグループごとにダイナミックアドレスを設定することで、そのダイナミックアドレスをグループアドレスとして使用することができる。なお、１台のI3Cスレーブ１３が複数のグループに属することもでき、１台のI3Cスレーブ１３に対して、少なくとも１つ以上のグループアドレスを割り当てることが可能とされる。
【００２６】
例えば、カレントマスタ１２Ｃは、SETGRPAコマンドを使用して、それぞれのグループに対してグループアドレスを設定する。そして、カレントマスタ１２Ｃは、I3Cで規定される各種の書き込み転送（Direct Write CCC／Private Write／HDR Write）を行う際に、書き込み転送のコマンドのスレーブアドレスフィールドに、グループアドレスを指定する。これにより、カレントマスタ１２Ｃは、１回の書き込み転送で、そのグループに属する複数台のI3Cスレーブ１３に対して、一斉にデータを書き込むことができる。
【００２７】
一方、I3Cスレーブ１３は、バスＩＦ１１に参加している全てのI3Cスレーブ１３を指定するアドレス7'h7E、自身のダイナミックアドレス、または自身が属するグループアドレスに対する通信を受信して、その通信の内容に従った処理を行う。
【００２８】
なお、カレントマスタ１２Ｃが、グループアドレスによる指定を行って複数台のI3Cスレーブ１３に対して読み出しコマンドを送信した場合、それらの複数台のI3Cスレーブ１３から転送される読み出しデータがコンフリクトすることが想定される。そのため、I3Cで規定される各種の読み出し転送（Direct Read CCC／Private Read／HDR Read）を行う際に、読み出し転送のコマンドのスレーブアドレスフィールドに、グループアドレスを指定することを禁止する運用が想定される。なお、後述の図１５および図１６に示すように、複数台のI3Cスレーブ１３ごとに読み出しデータを出力するタイミングを制御する場合、読み出しデータのコンフリクトを回避することができる。この場合、各種の読み出し転送を行う際に、グループアドレスを指定することを禁止せずに運用することができる。さらに、グループアドレスを指定した読み出し転送をイネーブルとするために、レジスタなどを備えるようにしてもよい。
【００２９】
ところで、図１に示すバスＩＦ１１は、グループアドレスに関する機能が規定されるI3C_v1.1に準拠しているマスタ１２−１および１２−２並びにI3Cスレーブ１３−１乃至１３−４と、グループアドレスに関する機能が規定されていないI3C_v1.0に準拠しているマスタ１２−３およびI3Cスレーブ１３−５と、I2Cの規格に準拠しているI2Cスレーブ１３−６とが混在した構成となっている。
【００３０】
このように構成されるバスＩＦ１１では、マスタ１２−１および１２−２が、グループアドレスの割り当てを行うためには、バスＩＦ１１に参加している全てのマスタ１２およびスレーブ１３のうち、グループアドレスに対応しているI3Cデバイスを認識することができるようにI3C_v1.1を規定する必要がある。
【００３１】
また、バスＩＦ１１に参加している複数のマスタ１２がグループアドレスに対応している場合、それらのマスタ１２どうしで、他のマスタ１２が割り当てたグループアドレスを認識することができるようにI3C_v1.1を規定する必要がある。即ち、あるマスタ１２が、他のマスタ１２が割り当てたグループアドレスを認識することができない場合、既に使用済みのアドレス値をグループアドレスに使用してしまって、通信エラーが発生することが懸念される。また、あるマスタ１２が設定したグループアドレスを、他のマスタ１２が書き換えてしまうことにより、グループアドレス情報が破壊されてしまって、通信エラーが発生することが懸念される。
【００３２】
そこで、I3C_v1.1に準拠しているマスタ１２−１および１２−２は、グループアドレスを運用するにあたり、グループアドレスへの対応状況を認識して、グループアドレスを使用することにより発生することが懸念される通信エラーを回避することができるように構成される。これにより、バスＩＦ１１では、通信エラーを回避して確実に、グループアドレスを利用して効率良く通信を行うことができる。
【００３３】
＜マスタおよびスレーブの構成例＞
図２は、マスタ１２およびスレーブ１３の構成例を示すブロック図である。
【００３４】
図２に示す構成では、マスタ１２は、マスタデバイス２１の物理層として組み込まれ、マスタデバイス２１は、マスタ１２に対して上位となる上位層２２（例えば、CCIレイヤ）を備える。同様に、スレーブ１３は、スレーブデバイス３１の物理層として組み込まれ、スレーブデバイス３１は、スレーブ１３に対して上位となる上位層３２（例えば、CCIレイヤ）を備える。
【００３５】
図２に示すように、マスタ１２は、送受信制御部４１、データ受信部４２、データ送信部４３、マスタシップリクエスト制御部４４、コマンド解釈部４５、情報保持部４６、コマンド送信部４７、およびテーブル保持部４８を備えて構成される。なお、これらの各部、または、その一部は、例えば、半導体集積回路や、プログラマブルな半導体集積回路、ソフトウエアなどによって実現するようにしてもよい。
【００３６】
送受信制御部４１は、バスＩＦ１１に接続されている他のデバイスとの間における信号の送受信を制御する。例えば、送受信制御部４１は、クロック信号線１５を駆動してシリアルクロックSCLを送信し、シリアルクロックSCLのタイミングに合わせてデータ信号線１４を駆動することでシリアルデータSDAの他のデバイスへの送信を制御する。また、送受信制御部４１は、シリアルクロックSCLのタイミングに合わせて、他のデバイスがデータ信号線１４を駆動して送信してくるシリアルデータSDAの受信を制御する。
【００３７】
データ受信部４２は、送受信制御部４１による制御に従って、他のデバイスから送信されてくるデータを受信し、上位層２２に供給する。
【００３８】
データ送信部４３は、上位層２２から供給されるデータを、送受信制御部４１による制御に従って、他のデバイスに送信する。
【００３９】
マスタシップリクエスト制御部４４は、上位層２２からの要求に従って、マスタ１２がセカンダリマスタ１２Ｓであるときに、カレントマスタ１２Ｃに対してマスタ権限の譲渡を要求するマスタシップリクエストの送信に関する制御を行う。
【００４０】
コマンド解釈部４５は、送受信制御部４１による制御に従って受信したコマンドに対する解釈を行って、情報保持部４６に保持されている各種の情報を参照し、そのコマンドに応じた処理を実行する。
【００４１】
情報保持部４６は、コマンド解釈部４５がコマンドに応じた処理を行うのに必要な各種の情報を保持することができる。例えば、情報保持部４６には、グループに関連する能力であって、マスタ１２自身が有する能力を示す情報であるグループ関連能力情報が保持される。例えば、マスタ１２自身がグループアドレスを割り当てる能力（以下、グループ管理能力とも称する）を有する場合、情報保持部４６には、グループ管理能力を有することを示すグループ関連能力情報が保持される。
【００４２】
コマンド送信部４７は、上位層２２からの要求に従って、送受信制御部４１による制御により、バスＩＦ１１を介してコマンドを送信する。また、コマンド送信部４７は、例えば、マスタ１２から送信されたコマンドに応じて、バスＩＦ１１に参加しているデバイスから送信されてくるグループ関連能力情報を、テーブル保持部４８に供給する。
【００４３】
テーブル保持部４８は、バスＩＦ１１に参加している全てのデバイスに対応付けて、それぞれのデバイスに関するデバイス情報が登録されたデバイス情報テーブル（後述する図３参照）を保持する。例えば、デバイス情報テーブルには、デバイスを識別するデバイスＩＤ（Identification）に対応付けて、グループ関連能力情報やグループアドレスなどを含むデバイス情報が登録される。そして、テーブル保持部４８は、コマンド送信部４７から供給される各デバイスのグループ関連能力情報を、デバイス情報テーブルに保持するとともに上位層２２にも通知する。
【００４４】
スレーブ１３は、送受信制御部５１、データ受信部５２、データ送信部５３、ホットジョインリクエスト制御部５４、ダイナミックアドレス保持部５５、グループアドレス保持部５６、コマンド解釈部５７、および情報保持部５８を備えて構成される。なお、これらの各部、または、その一部は、例えば、半導体集積回路や、プログラマブルな半導体集積回路、ソフトウエアなどによって実現するようにしてもよい。
【００４５】
送受信制御部５１は、バスＩＦ１１に接続されている他のデバイスとの間における信号の送受信を制御する。例えば、送受信制御部５１は、シリアルクロックSCLのタイミングに合わせて、他のデバイスがデータ信号線１４を駆動して送信してくるシリアルデータSDAの受信を制御する。また、送受信制御部５１は、シリアルクロックSCLのタイミングに合わせてデータ信号線１４を駆動することでシリアルデータSDAの他のデバイスへの送信を制御する。
【００４６】
データ受信部５２は、送受信制御部４１による制御に従って、他のデバイスから送信されてくるデータを受信し、上位層３２に供給する。
【００４７】
データ送信部５３は、上位層３２から供給されるデータを、送受信制御部４１による制御に従って、他のデバイスに送信する。
【００４８】
ホットジョインリクエスト制御部５４は、例えば、バスＩＦ１１に参加していない状態のスレーブ１３が、稼働している状態のバスＩＦ１１に参加することを要求するホットジョインリクエストの送信に関する制御を行う。
【００４９】
ダイナミックアドレス保持部５５は、スレーブ１３に割り当てられたダイナミックアドレスを保持することができ、コマンド解釈部５７による指示に従って、適宜、ダイナミックアドレスを保持する。
【００５０】
グループアドレス保持部５６は、スレーブ１３に割り当てられたグループアドレスを保持することができ、コマンド解釈部５７による指示に従って、適宜、グループアドレスを保持する。
【００５１】
コマンド解釈部５７は、送受信制御部５１による制御に従って受信したコマンドに対する解釈を行って、情報保持部５８に保持されている各種の情報を参照し、そのコマンドに応じた処理を実行する。
【００５２】
情報保持部５８は、コマンド解釈部５７がコマンドに応じた処理を行うのに必要な各種の情報を保持することができる。例えば、情報保持部５８には、グループに関連する能力であって、スレーブ１３自身が有する能力を示す情報であるグループ関連能力情報が保持される。例えば、スレーブ１３自身がグループアドレスを割り当てられる能力（以下、グループ所属能力とも称する）を有する場合、情報保持部５８には、グループ所属能力を有することを示すグループ関連能力情報が保持される。
【００５３】
ここで、図３を参照して、テーブル保持部４８に保持されるデバイス情報テーブルについて説明する。図３Ａには、I3C_v1.1に準拠しているマスタ１２−１および１２−２のテーブル保持部４８に保持されるデバイス情報テーブルの一例が示されており、図３Ｂには、I3C_v1.0に準拠しているマスタ１２−３のテーブル保持部４８に保持されるデバイス情報テーブルの一例が示されている。
【００５４】
図３Ａに示すように、I3C_v1.1のデバイス情報テーブルには、バスＩＦ１１に参加している全てのデバイスを識別するデバイスＩＤ（図３の例では、デバイスＩＤ：Ａ〜Ｈ）が登録される。そして、それぞれのデバイスＩＤに対応付けて、機能情報、スタティックアドレス（SA）、ダイナミックアドレス（DA）、グループ情報有効情報、グループ管理能力情報、グループ所属能力情報、およびグループアドレス（GRPA）が、デバイス情報として登録される。また、このデバイス情報テーブルには、カレントマスタ１２Ｃとなっているマスタ１２のデバイスＩＤ（図３の例では、デバイスＩＤ：Ａ）が登録される。
【００５５】
機能情報には、バスＩＦ１１に参加しているデバイスが備える機能を示すデバイス情報が登録され、例えば、I3Cメインマスタ、I3Cセカンダリマスタ、I3Cスレーブ、およびI2Cスレーブの何れかを示すデバイス情報が登録される。
【００５６】
スタティックアドレスには、デバイスが持つスタティックアドレスを示すアドレス値（SA値）がデバイス情報として登録される他、スタティックアドレスを持たないデバイスに対しては、その旨を示すデバイス情報（無）が登録される。
【００５７】
ダイナミックアドレスには、デバイスに割り当てられたダイナミックアドレスを示すアドレス値（DA値）がデバイス情報として登録される他、ダイナミックアドレスを持つことができないデバイス（I2Cデバイス）に対しては、その旨を示すデバイス情報（無）が登録される。また、ダイナミックアドレスには、ダイナミックアドレスを持つことができるが、ダイナミックアドレスが未だ割り当てられていない場合には、その旨を示すデバイス情報（未）が登録される。
【００５８】
グループ情報有効情報には、グループ管理能力情報、グループ所属能力情報、およびグループアドレスに登録されているデバイス情報が有効であることを示すデバイス情報（有）、または、それらのデバイス情報が未だ取得されていないことを示すデバイス情報（無）が登録される。
【００５９】
グループ管理能力情報には、デバイスがグループアドレスを割り当てる能力を有することを示すデバイス情報（有）、または、デバイスがグループアドレスを割り当てる能力を有さないことを示すデバイス情報（無）が登録される。また、グループ管理能力情報が取得されていないデバイスについては、グループ管理能力情報は空欄のままとなる。
【００６０】
グループ所属能力情報には、デバイスがグループアドレスを割り当てられる能力を有することを示すデバイス情報（有）、または、デバイスがグループアドレスを割り当てられる能力を有さないことを示すデバイス情報（無）が登録される。また、グループ所属能力情報が取得されていないデバイスについては、グループ所属能力情報は空欄のままとなる。
【００６１】
グループアドレスには、デバイスが所属するグループに割り当てられたグループアドレスを示すアドレス値（GRPA値）がデバイス情報として登録される。また、グループアドレスを割り当てられる応力を有さないデバイス（I2Cデバイスや、グループ所属能力情報を有さないI3Cデバイスなど）に対しては、その旨を示すデバイス情報（無）が登録される。さらに、グループアドレスには、グループアドレスを割り当てられる応力を有するが、グループアドレスが未だ割り当てられていない場合には、その旨を示すデバイス情報（未）が登録される。また、グループアドレスが取得されていないデバイスについては、グループアドレスは空欄のままとなる。
【００６２】
また、図３Ｂに示すように、I3C_v1.0のデバイス情報テーブルには、I3C_v1.1のデバイス情報テーブルに登録されるデバイス情報のうち、それぞれのデバイスＩＤに対応付けて、機能情報、スタティックアドレス（SA）、およびダイナミックアドレス（DA）が、デバイス情報として登録される。即ち、I3C_v1.0では、グループアドレスについては定義されていないため、グループ情報有効情報、グループ管理能力情報、グループ所属能力情報、およびグループアドレスは、デバイス情報テーブルに登録されない。
【００６３】
このように、テーブル保持部４８には、スタティックアドレス、ダイナミックアドレス、またはグループアドレスの割り当て状況などが登録されたデバイス情報テーブルが保持される。
【００６４】
＜アドレス割り当て処理＞
図４に示すフローチャートを参照して、カレントマスタ１２Ｃが、ダイナミックアドレスおよびグループアドレスを割り当てる処理について説明する。
【００６５】
例えば、カレントマスタ１２Ｃがパワーオンとなると処理が開始され、ステップＳ１１において、カレントマスタ１２Ｃは、自身の初期化を行う。その後、カレントマスタ１２Ｃの送受信制御部４１は、データ信号線１４およびクロック信号線１５の電位を共にＨレベルに駆動して、バスＩＦ１１をバスフリー状態にする。
【００６６】
ステップＳ１２において、カレントマスタ１２Ｃは、バスＩＦ１１に参加しているI3Cデバイスのうち、スタティックアドレスを持つI3Cデバイスの存在を認識する。そして、カレントマスタ１２Ｃは、I3Cデバイスのスタティックアドレスを指定して、ダイナミックアドレスの割り当てを指示するSETDASAコマンドを送信する。これに応じて、スタティックアドレスを持つI3Cデバイスに対するダイナミックアドレスの割り当てが完了すると、処理はステップＳ１３に進む。
【００６７】
ステップＳ１３において、カレントマスタ１２Ｃは、ステップＳ１２でダイナミックアドレスが割り当てられなかった残りのI3Cデバイスに対してダイナミックアドレスの割り当てを指示するENTDAAコマンドシーケンスを実行する。これに応じて、バスＩＦ１１に参加している全てのI3Cデバイスに対してダイナミックアドレスが割り当てられると、処理はステップＳ１４に進む。
【００６８】
ステップＳ１４において、カレントマスタ１２Ｃは、バスＩＦ１１に参加している全てのセカンダリマスタ１２Ｓに対して、デバイス情報の共有を指示するDEFSLVSコマンドを送信する。これにより、カレントマスタ１２Ｃは、バスＩＦ１１に参加している全てのデバイスに関するデバイス情報をセカンダリマスタ１２Ｓと共有する。なお、この時点ではグループアドレスに関する処理は行われていないため、ステップＳ１４で共有されるデバイス情報には、上述の図３に示したテーブルに登録されているデバイス情報のうちの、デバイスＩＤ、機能情報、スタティックアドレス、および、ダイナミックアドレスが含まれる。
【００６９】
ステップＳ１５において、カレントマスタ１２Ｃは、情報保持部４６が保持しているグループ関連能力情報を参照し、自身がグループアドレスを割り当てる能力を有するか否かを判定する。
【００７０】
ステップＳ１５において、カレントマスタ１２Ｃが、グループアドレスを割り当てる能力を有さないと判定した場合、処理は終了される。例えば、カレントマスタ１２Ｃが、I3C_v1.0に準拠しているマスタ１２−３である場合、グループアドレスを割り当てる能力を有さない。また、I3C_v1.1においてグループアドレスを割り当てる能力がオプションと規定されていて、カレントマスタ１２Ｃとなっているマスタ１２−１または１２−２に、その能力が設定されていない場合、グループアドレスを割り当てる能力を有さないと判定される。
【００７１】
一方、ステップＳ１５において、カレントマスタ１２Ｃが、グループアドレスを割り当てる能力を有すると判定した場合、処理はステップＳ１６に進む。なお、カレントマスタ１２Ｃおよびセカンダリマスタ１２Ｓがグループ管理能力を有することが必須であると規定される場合、ステップＳ１５の処理は省略してもよく、ステップＳ１５をスキップして処理はステップＳ１６へ進む。
【００７２】
ステップＳ１６において、カレントマスタ１２Ｃは、バスＩＦ１１に参加している全てのI3Cデバイスに対して、グループ関連能力情報の送信の要求を指示するGETGRPCAPコマンド（後述の図６乃至図８参照）を送信する。これに応じて、カレントマスタ１２Ｃが、各I3Cデバイスから送信されてくるグループ関連能力情報を取得すると、処理はステップＳ１７に進む。
【００７３】
ステップＳ１７において、カレントマスタ１２Ｃは、ステップＳ１６で取得したグループ関連能力情報を、図２の上位層２２に通知する。これにより、上位層２２は、各I3Cデバイスのグループアドレスへの対応を把握することができ、例えば、どのI3Cスレーブ１３にグループアドレスを割り当てるかを判断することができる。
【００７４】
ステップＳ１８において、カレントマスタ１２Ｃは、I3Cスレーブ１３にグループアドレスの割り当てを行うか否かを判定する。例えば、カレントマスタ１２Ｃは、グループ関連能力情報に基づいて判断を行った上位層２２から、グループアドレスの割り当てが指示されると、その指示に従ってI3Cスレーブ１３にグループアドレスを割り当てると判定することができる。
【００７５】
ステップＳ１８において、カレントマスタ１２Ｃが、グループアドレスの割り当てを行うと判定した場合、処理はステップＳ１９に進む。ステップＳ１９において、カレントマスタ１２Ｃは、グループアドレスの割り当てを指示するSETGRPAコマンド（後述の図９および図１０参照）を送信し、上位層２２からの指示に従ったI3Cスレーブ１３に対してグループアドレスを割り当てる。
【００７６】
一方、ステップＳ１８において、カレントマスタ１２Ｃが、グループアドレスの割り当てを行わないと判定した場合、または、ステップＳ１９の処理後、処理はステップＳ２０に進む。
【００７７】
ステップＳ２０において、カレントマスタ１２Ｃは、テーブル保持部４８に保持されているデバイス情報テーブルを参照して、カレントマスタ１２Ｃ以外に、グループアドレスを割り当てる能力を有するセカンダリマスタ１２Ｓがあるか否かを判定する。
【００７８】
ステップＳ２０において、カレントマスタ１２Ｃが、グループアドレスを割り当てる能力を有するセカンダリマスタ１２Ｓがあると判定した場合、処理はステップＳ２１に進む。なお、カレントマスタ１２Ｃおよびセカンダリマスタ１２Ｓがグループ管理能力を有することが必須であると規定される場合、ステップＳ２０の処理は省略してもよく、ステップＳ２０をスキップして処理はステップＳ２１へ進む。
【００７９】
ステップＳ２１において、カレントマスタ１２Ｃは、グループアドレスを割り当てる能力を有するセカンダリマスタ１２Ｓに対して、グループアドレスに関する情報の共有を指示するDEFGRPSコマンド（後述の図１１乃至図１３参照）を送信する。これにより、カレントマスタ１２Ｃは、グループアドレスを割り当てる能力を有するセカンダリマスタ１２Ｓとの間で、バスＩＦ１１に参加している全てのデバイスについてのグループアドレスに関する情報を共有する。例えば、グループアドレスに関する情報として、カレントマスタ１２Ｃは、バスＩＦ１１に参加している個々のデバイスについて、グループ管理能力情報およびグループ所属能力情報を共有する。さらに、カレントマスタ１２Ｃは、ステップＳ１９でI3Cスレーブ１３にグループアドレスを割り当てた場合には、グループアドレスに関する情報としてグループアドレスを共有する。
【００８０】
ステップＳ２０でカレントマスタ１２Ｃが、グループアドレスを割り当てる能力を有するセカンダリマスタ１２Ｓがないと判定した場合、または、ステップＳ２１の処理後、処理は終了される。
【００８１】
以上のように、カレントマスタ１２Ｃは、バスＩＦ１１に参加している全てのI3Cデバイスのグループ関連能力情報を取得することにより、グループ所属能力を有するI3Cスレーブ１３を認識することができる。これにより、カレントマスタ１２Ｃは、グループ所属能力を有するI3Cスレーブ１３に対して、確実にグループアドレスを割り当てることができる。
【００８２】
さらに、カレントマスタ１２Ｃは、バスＩＦ１１に参加している全てのI3Cデバイスのグループ関連能力情報を取得することにより、グループ管理能力を有するセカンダリマスタ１２Ｓを認識することができる。これにより、カレントマスタ１２Ｃは、グループ管理能力を有するセカンダリマスタ１２Ｓとの間で、グループアドレスに関する情報を共有することができる。
【００８３】
このように、グループアドレスに関する情報が共有されることにより、バスＩＦ１１では、例えば、他のマスタ１２により既に使用済みのアドレス値を、新たにグループアドレスとして使用することによって通信エラーが発生するような事態を回避することができる。また、グループアドレスに関する情報が共有されることにより、バスＩＦ１１では、例えば、他のマスタ１２が設定したグループアドレスを、書き換えてしまうことによって通信エラーが発生するような事態を回避することができる。従って、バスＩＦ１１では、通信エラーが発生することがなく、より確実に、グループアドレスを使用して効率良く通信を行うことができる。
【００８４】
なお、カレントマスタ１２Ｃが、ダイナミックアドレスおよびグループアドレスを割り当てる処理は、図４を参照して説明したような手順に限定されることなく、その他の手順を採用してもよい。
【００８５】
例えば、カレントマスタ１２Ｃは、図５に示すような手順で、ダイナミックアドレスおよびグループアドレスを割り当ててもよい。
【００８６】
即ち、図５に示すフローチャートでは、ステップＳ３１乃至Ｓ３３において、図４のステップＳ１１乃至ステップＳ１３と同様の処理が行われる。そして、ステップＳ３４において、カレントマスタ１２Ｃは、情報保持部４６が保持しているグループ関連能力情報を参照し、自身がグループアドレスを割り当てる能力を有するか否かを判定する。
【００８７】
ステップＳ３４において、カレントマスタ１２Ｃが、グループアドレスを割り当てる能力を有すると判定した場合、ステップＳ３５乃至Ｓ３８において、図４のステップＳ１６乃至Ｓ１９と同様の処理が行われた後、処理はステップＳ３９に進む。また、ステップＳ３４において、カレントマスタ１２Ｃが、グループアドレスを割り当てる能力を有さないと判定した場合、処理はステップＳ３９に進む。
【００８８】
ステップＳ３９において、カレントマスタ１２Ｃは、バスＩＦ１１に参加している全てのセカンダリマスタ１２Ｓに対して、デバイス情報の共有を指示するDEFSLVSコマンドを送信する。これにより、カレントマスタ１２Ｃは、バスＩＦ１１に参加している全てのデバイスに関するデバイス情報（デバイスＩＤ、機能情報、スタティックアドレス、およびダイナミックアドレス）をセカンダリマスタ１２Ｓと共有する。
【００８９】
その後、ステップＳ４０において、カレントマスタ１２Ｃは、情報保持部４６が保持しているグループ関連能力情報を参照し、自身がグループアドレスを割り当てる能力を有するか否かを判定する。
【００９０】
ステップＳ４０において、カレントマスタ１２Ｃが、グループアドレスを割り当てる能力を有さないと判定した場合、処理は終了される。一方、ステップＳ４０において、カレントマスタ１２Ｃが、グループアドレスを割り当てる能力を有すると判定した場合、ステップＳ４１およびＳ４２において、図４のステップＳ２０および２１と同様の処理が行われ、その後、処理は終了される。
【００９１】
以上のように、バスＩＦ１１では、例えば、スタティックアドレスおよびダイナミックアドレスとともに、グループアドレスを共有することができる。
【００９２】
＜GETGRPCAPコマンドのフォーマット例＞
図６には、図４のステップＳ１６で送信されるGETGRPCAPコマンドの第１のフォーマット例が示されている。
【００９３】
上述したように、GETGRPCAPコマンドは、バスＩＦ１１に参加している全てのI3Cデバイスに対して、グループ関連能力情報の送信の要求を指示する。
【００９４】
図６に示す例では、まず、カレントマスタ１２Ｃは、スタートコンディション（Ｓ）を発行し、バスＩＦ１１に参加している全てのデバイスを指定するアドレス7'h7Eを送信するのに続いて、グループ関連能力情報の送信を要求するコモンコマンドコード（GETGRPCAP CCC）を送信する。そして、カレントマスタ１２Ｃが、リスタート（Ｓｒ）に続いてスレーブアドレス（Slave Address）を送信すると、そのスレーブアドレスのI3Cスレーブ１３が、グループ関連能力情報（GRPCAP）を返信する。
【００９５】
図示するように、８ビットのグループ関連能力情報のうち、０ビット目は、グループ管理能力を有するか否かを示すフラグであり、１ビット目は、グループ所属能力を有するか否かを示すフラグであり、２ビット目から７ビット目まではリザーブとなっている。従って、グループ関連能力情報の送信を要求するコモンコマンドコードを受信し、スレーブアドレスで指定されたI3Cスレーブ１３は、グループ所属能力を有するか否かを示すフラグにより、自身のグループ関連能力情報を、カレントマスタ１２Ｃに認識させることができる。
【００９６】
即ち、GETGRPCAPコマンドを受信したデバイスが、グループ管理能力またはグループ所属能力を有する場合、そのデバイスは、ACK応答する。さらに、グループ管理能力を有するデバイスは、グループ管理能力を有するか否かを示すフラグに１を送信し、グループ管理能力を有さないデバイスは、グループ管理能力を有するか否かを示すフラグに０を送信する。また、グループ所属能力を有するデバイスは、グループ所属能力を有するか否かを示すフラグに１を送信し、グループ所属能力を有さないデバイスは、グループ所属能力を有するか否かを示すフラグに０を送信する。また、リザーブ領域は、全て０を送信する。
【００９７】
一方、GETGRPCAPコマンドを受信したデバイスが、グループ管理能力およびグループ所属能力を有さない場合、そのデバイスは、NACK応答するか、ACK応答した上でデータをALL0で送信するようにI3C_v1.1で規定する必要がある。例えば、I3C_v1.0の規格では、サポートしないダイレクトコモンコマンドコード（Direct CCC）を受信したデバイスは、NACK応答することが規定されている。そして、GETGRPCAPコマンドは、I3C_v1.0の規格では規定されていないため、I3C_v1.0に準拠するデバイスは、GETGRPCAPコマンドに対しては、必ず、NACK応答することになる。
【００９８】
このように、GETGRPCAPコマンドに対する応答を規定することで、I3C_v1.1に準拠するデバイスと、I3C_v1.0に準拠するデバイスとが混在しているバスＩＦ１１でも、矛盾が発生することなく、GETGRPCAPコマンドを運用することができる。
【００９９】
なお、GETGRPCAPコマンドは、読み出しコマンドであるので、スレーブアドレスにはダイナミックアドレスのみ指定することが可能であり、グループアドレスを指定することはできない。
【０１００】
また、グループアドレスを割り当てる能力を有しているマスタ１２は、図６に示すようなGETGRPCAPコマンドを必ず送信することができるようにI3C_v1.1で規定する必要がある。一方、グループアドレスを割り当てる能力を有していないマスタ１２は、図６に示すようなGETGRPCAPコマンドを送信してはならないとI3C_v1.1で規定する必要がある。
【０１０１】
図７には、GETGRPCAPコマンドの第２のフォーマット例が示されている。
【０１０２】
図７に示すように、GETGRPCAPコマンドを受信したデバイスは、ACK応答した上で、第１のグループ関連能力情報（GRPCAP1）および第２のグループ関連能力情報（GRPCAP2）を送信する。第１のグループ関連能力情報（GRPCAP1）では、グループ管理能力を有するか否かを示すフラグが送信され、第２のグループ関連能力情報（GRPCAP2）では、グループ所属能力を有するか否かを示すフラグに加えて、自身に割り当てられているグループアドレスが送信される。なお、グループアドレスが割り当てられていないデバイス、および、グループ所属能力を有さないデバイスは、第２のグループ関連能力情報のグループアドレスとして7'h00（割り当て禁止）を送信する。
【０１０３】
図８には、GETGRPCAPコマンドの第３のフォーマット例が示されている。
【０１０４】
上述したように、１台のI3Cスレーブ１３が複数のグループに属することもでき、１台のI3Cスレーブ１３に対して、少なくとも１つ以上のグループアドレスを割り当てることが可能とされる。従って、GETGRPCAPコマンドを受信したI3Cスレーブ１３は、自身に割り当て可能なグループアドレスの個数を、カレントマスタ１２Ｃに通知することができる。
【０１０５】
図８に示すように、グループ関連能力情報（GRPCAP）は、０ビット目から２ビット目までに、グループアドレスのスロット数（割り当て可能な個数）が送信される。なお、グループ所属能力を有さないデバイスは、例えば、０ビット目から２ビット目までを全て０を送信することで、その旨を示すことができる。また、３ビット目から６ビット目まではリザーブとなっており、７ビット目に、グループ管理能力を有するか否かを示すフラグが送信される。
【０１０６】
なお、図８に示す例では、グループアドレスのスロット数は３ビットで表されているが、それに限定されることなく、規格上最大のスロット数に応じてビット幅を決定することができる。
【０１０７】
以上のようなフォーマットのGETGRPCAPコマンドを用いて、カレントマスタ１２Ｃは、バスＩＦ１１に参加している全てのデバイスのグループ管理能力およびグループ所属能力を認識することができる。
【０１０８】
＜SETGRPAコマンドのフォーマット例＞
図９には、図４のステップＳ１９で送信されるSETGRPAコマンドの第１のフォーマット例が示されている。
【０１０９】
図９に示す例では、まず、カレントマスタ１２Ｃは、スタートコンディション（Ｓ）を発行し、バスＩＦ１１に参加している全てのデバイスを指定するアドレス7'h7Eを送信するのに続いて、グループアドレスの割り当てを指示するコモンコマンドコード（SETGRPA CCC）を送信する。
【０１１０】
そして、カレントマスタ１２Ｃは、リスタート（Ｓｒ）に続いてスレーブアドレス（Slave Address）を送信し、そのスレーブアドレスのI3Cスレーブ１３に対して割り当てる７ビットのアドレス値のグループアドレスを送信する。なお、ここで送信されるスレーブアドレスには、ダイナミックアドレス、または、既に割り当て済みのグループアドレスを指定することができる。従って、ダイナミックアドレスを指定してI3Cスレーブ１３を個別に宛先として、または、グループアドレスを指定してグループを宛先として、グループアドレスを割り当てることができる。
【０１１１】
そして、SETGRPAコマンドを受信したデバイスが、グループ管理能力またはグループ所属能力を有する場合、そのデバイスは、ACK応答する。さらに、そのデバイスは、グループアドレスが未だ割り当てられていない場合、受信したアドレス値のグループアドレスを、自身のグループアドレスとして設定する。また、そのデバイスが、グループアドレスが既に割り当てられている場合、受信したアドレス値のグループアドレスを、自身のグループアドレスとして更新する。
【０１１２】
一方、SETGRPAコマンドを受信したデバイスが、グループ管理能力およびグループ所属能力を有さない場合、そのデバイスは、NACK応答しなければならない。例えば、I3C_v1.0の規格では、サポートしないダイレクトコモンコマンドコード（Direct CCC）を受信したデバイスは、NACK応答することが規定されている。そして、SETGRPAコマンドは、I3C_v1.0の規格では規定されていないため、I3C_v1.0に準拠するデバイスは、SETGRPAコマンドに対しては、必ず、NACK応答することになる。
【０１１３】
また、グループアドレスを割り当てる能力を有しているマスタ１２は、図９に示すようなSETGRPAコマンドを必ず送信することができるようにI3C_v1.1で規定する必要がある。一方、グループアドレスを割り当てる能力を有していないマスタ１２は、図９に示すようなSETGRPAコマンドを送信してはならないとI3C_v1.1で規定する必要がある。
【０１１４】
図１０には、SETGRPAコマンドの第２のフォーマット例が示されている。
【０１１５】
上述したように、１台のI3Cスレーブ１３が複数のグループに属することもでき、１台のI3Cスレーブ１３に対して、少なくとも１つ以上のグループアドレスを割り当てることが可能とされる。
【０１１６】
従って、カレントマスタ１２Ｃは、グループアドレスの割り当てを指示するコモンコマンドコード（SETGRPA CCC）を送信した後、スレーブアドレス（Slave Address）に続けて、そのスレーブアドレスのI3Cスレーブ１３に対して割り当てることが可能な個数分のvalid flagおよびグループアドレスのアドレス値を送信する。
【０１１７】
なお、SETGRPAコマンドで複数のグループアドレスを割り当てる場合、スレーブアドレスにはダイナミックアドレスのみが指定可能とされ、グループアドレスの指定は禁止される。即ち、I3Cスレーブ１３を個別に宛先とするダイナミックアドレスを使用して、グループアドレスの割り当てが行われる。
【０１１８】
また、valid＝０のスロットはグループアドレスを無効とし、valid＝１のスロットはグループアドレスを有効とする。そして、カレントマスタ１２Ｃは、グループアドレスを割り当てるデバイスのグループアドレスのスロット数分だけ、グループアドレスを設定するバイトを送信しなければならない。このとき、例えば、バイト数がスロット数未満である場合、そのデバイスは、受信したバイト数分だけはグループアドレスを設定し、足りない分の設定は行わない。また、例えば、バイト数がスロット数より大きい場合、そのデバイスは、スロット数を超えた分のバイトは無視する。
【０１１９】
以上のようなフォーマットのSETGRPAコマンドを用いて、カレントマスタ１２Ｃは、バスＩＦ１１に参加しているI3Cデバイスに対して、グループアドレスを割り当てることができる。即ち、上述したように、I3C_v1.1に準拠しているデバイス、I3C_v1.0に準拠しているデバイス、およびI2Cの規格に準拠しているデバイスが混在してバスＩＦ１１に参加している状態であっても、例えば、グループ所属能力を有するI3Cスレーブ１３を個別に宛先としてグループアドレスを割り当てることができる。
【０１２０】
＜DEFGRPSコマンドのフォーマット例＞
図１１には、図４のステップＳ２１で送信されるDEFGRPSコマンドの第１のフォーマット例が示されている。
【０１２１】
上述したように、DEFGRPSコマンドにより、グループ管理能力を有するマスタ１２どうしで、グループ関連能力情報を共有することができる。
【０１２２】
図１１に示す例では、まず、カレントマスタ１２Ｃは、スタートコンディション（Ｓ）を発行し、バスＩＦ１１に参加している全てのデバイスを指定するアドレス7'h7Eを送信するのに続いて、グループアドレスに関する情報の共有を指示するDEFGRPSコマンド（DEFGRPS CCC）を送信する。さらに、カレントマスタ１２Ｃは、カレントマスタ１２Ｃが存在を認識しているバスＩＦ１１に参加している全てのデバイスの個数（Count）、即ち、後続して送信するデータの組数を送信する。
【０１２３】
それに続いて、カレントマスタ１２Ｃは、カレントマスタ１２Ｃ自身のダイナミックアドレス（ＤＡ）、グループ関連能力情報（GRPCAP）、グループアドレス（GRPA）、およびGAvalidを送信する。その後、カレントマスタ１２Ｃは、バスＩＦ１１に参加している全てのデバイスの個数分だけ、同様のデータを繰り返して送信する。なお、I3Cデバイスについてはダイナミックアドレス（ＤＡ）が送信され、I2Cデバイスについてはスタティックアドレス（ＳＡ）が送信される。
【０１２４】
例えば、GAvalidは、グループ所属能力を有さない場合には1'b0が送信され、グループ所属能力を有するがグループアドレスが未だ割り当てられていない場合には1'b0が送信され、グループ所属能力を有しグループアドレスが割り当て済みの場合には1'b1が送信される。また、グループアドレスは、グループ所属能力を有さない場合には7'h00が送信され、グループ所属能力を有するがグループアドレスが未だ割り当てられていない場合には7'h00が送信され、グループ所属能力を有しグループアドレスが割り当て済みの場合にはアドレス値が送信される。
【０１２５】
また、グループアドレスを割り当てる能力を有しているマスタ１２は、図１１に示すようなDEFGRPSコマンドを必ず送信することができるようにI3C_v1.1で規定する必要がある。一方、グループアドレスを割り当てる能力を有していないマスタ１２は、図１１に示すようなDEFGRPSコマンドを送信してはならないとI3C_v1.1で規定する必要がある。
【０１２６】
グループアドレスを割り当てる能力を有していないマスタ１２は、DEFGRPSコマンドを受信しても無視しなければならない。例えば、I3C_v1.0では、サポートしないブロードキャストコモンコマンドコード（Broadcast CCC）を受信したデバイスは、そのコマンドを無視することが規定されている。そして、DEFGRPSコマンドは、I3C_v1.0の規格では規定されていないため、I3C_v1.0に準拠するデバイスは、DEFGRPSコマンドに対しては、必ず、無視することになる。
【０１２７】
そして、グループアドレスを割り当てる能力を有しているマスタ１２は、DEFGRPSコマンドを受信できなければならない。
【０１２８】
図１２には、DEFGRPSコマンドの第２のフォーマット例が示されている。
【０１２９】
図１２に示すDEFGRPSコマンドでは、DEFGRPSコマンド（DEFGRPS CCC）に続いて、カレントマスタ１２Ｃが存在を認識しているI3Cデバイスの個数（Count）、即ち、後続して送信するデータの組数を送信する。即ち、I2Cデバイスは、グループ管理能力およびグループ所属能力のどちらも有していないことは明白であり、I3Cデバイスについてだけグループ関連能力情報を共有するようにしてもよい。
【０１３０】
それに続いて、カレントマスタ１２Ｃは、カレントマスタ１２Ｃ自身のダイナミックアドレス（ＤＡ）、グループ管理能力情報（GETGRPCAPコマンドで取得したフラグ）、グループアドレス（ＧＲＰＡ）、グループ所属能力情報（GETGRPCAPコマンドで取得したフラグ）を送信する。その後、カレントマスタ１２Ｃは、I3Cデバイスの個数分だけ、同様のデータを繰り返して送信する。なお、グループアドレス（ＧＲＰＡ）として、グループアドレスが未だ割り当てられていない場合には、7'h00が送信され、グループ所属能力情報を有するI3Cデバイスに対してグループアドレスが割り当て済みの場合、そのアドレス値が送信される。
【０１３１】
また、図１２に示すDEFGRPSコマンドの第２のフォーマット例では、１デバイス分の情報を２バイト領域に詰めて送り、かつ、I2Cデバイス分の情報を送信しないことで、送信データ量の削減を図ることができる。
【０１３２】
図１３には、DEFGRPSコマンドの第３のフォーマット例が示されている。
【０１３３】
図１３に示すDEFGRPSコマンドでは、DEFGRPSコマンド（DEFGRPS CCC）に続いて、カレントマスタ１２Ｃが存在を認識しているバスＩＦ１１に参加している全てのデバイスの個数（Count）、即ち、後続して送信するデータの組数が送信される。
【０１３４】
それに続いて、カレントマスタ１２Ｃは、カレントマスタ１２Ｃ自身のダイナミックアドレス（ＤＡ）、グループ関連能力情報（GRPCAP）、グループアドレス（GRPA）、およびGAvalidを送信する。このとき、カレントマスタ１２Ｃは、グループ関連能力情報（GRPCAP）において、図８を参照して説明したのと同様に、グループアドレスのスロット数を送信する。そして、図１０を参照して説明したのと同様に、グループアドレスのスロット数と同じバイト数分のvalid flagおよびグループアドレスを送信する。
【０１３５】
また、図１３に示すDEFGRPSコマンドの第３のフォーマット例では、デバイスごとに割り当てられることができるグループアドレスのスロット数と、グループアドレススロット数分だけ、グループアドレスの情報を送信する。
【０１３６】
以上のようなフォーマットのDEFGRPSコマンドを用いて、カレントマスタ１２Ｃは、セカンダリマスタ１２Ｓとの間で、バスＩＦ１１に参加しているデバイスのグループアドレス管理能力、グループアドレスの割り当て状況、および、グループアドレスのアドレス値を共有することができる。
【０１３７】
＜グループアドレスを利用した通信フォーマット＞
図１４乃至図１６を参照して、グループアドレスを利用した通信において用いられる通信フォーマットについて説明する。
【０１３８】
図１４には、書き込み転送（I3C Directed CCC Write）における通信フォーマットの一例が示されている。
【０１３９】
図１４に示すように、任意の複数台のI3Cスレーブ１３を相手先としてカレントマスタ１２Ｃから送信されるグループアドレス（I3C Group Address）に対し、I3Cスレーブ１３からACKが返信され、その後、そのグループを対象として書き込むデータ（Optional Write Data）が送信される。そして、必要なデータ量だけ、そのグループアドレスを相手先としたデータの送信が行われる。
【０１４０】
なお、同一のグループに所属する複数台のI3Cスレーブ１３のうち、多数のI3Cスレーブ１３がACKを返信し、一部のI3Cスレーブ１３がNACKを送信した場合、カレントマスタ１２ＣがNACKを認識することができないことも想定されるが、その後の通信処理におけるエラー検出で対応することにより、正常な通信を行うことが可能である。
【０１４１】
図１５には、書き込み転送（I3C Private Write）および読み出し転送（I3C Private Read）における通信フォーマットの一例が示されている。
【０１４２】
図１５に示す４つの通信フォーマットのうちの、上側の２つが書き込み転送における通信フォーマットを表しており、下側の２つが書き込み転送における通信フォーマットを表している。
【０１４３】
書き込み転送では、任意の複数台のI3Cスレーブ１３を相手先としてカレントマスタ１２Ｃから送信されるグループアドレス（I3C Group Address）に対し、I3Cスレーブ１３からACKが返信され、その後、そのグループを対象として書き込むＮ個のデータ（Write Data-1〜Write Data-N）が送信される。
【０１４４】
読み出し転送では、同一のグループに所属する複数台のI3Cスレーブ１３について、順次、それぞれのI3Cスレーブ１３からＮ個のデータ（Read Data-1〜Read Data-N）が読み出される。即ち、複数台のI3Cスレーブ１３から読み出されたデータがコンフリクトを発生しないように、それぞれのI3Cスレーブ１３からデータを読み出すタイミングが異なるものとなるように制御する必要がある。
【０１４５】
図１６には、書き込み転送（I3C Private Write）および読み出し転送（I3C Private Read）における通信フォーマットの一例が示されている。
【０１４６】
図１５に示した通信フォーマットと同様に、書き込み転送では、グループを対象として書き込むＮ個のデータが送信され、読み出し転送では、同一のグループのI3Cスレーブ１３ごとに順次、Ｎ個のデータが読み出される。
【０１４７】
例えば、スタートコンディション（Ｓのみ、Ｓｒは含まず）の後のグループアドレス（I3C Group Address）は、カレントマスタ１２Ｃ側からオープンドレイン出力によって400kHz程度でデータ転送が行われる。このとき、最初の１バイトのみオープンドレイン出力とし、それ以降のビット（6bit+R/W）は、プッシュプル出力によって12.5MHzでデータ転送されるようにしてもよい。
【０１４８】
＜コンピュータの構成例＞
なお、上述のフローチャートを参照して説明した各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）も含むものである。また、プログラムは、単一のCPUにより処理されるものであっても良いし、複数のCPUによって分散処理されるものであっても良い。
【０１４９】
また、上述した一連の処理（通信方法）は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラムが記録されたプログラム記録媒体からインストールされる。
【０１５０】
図１４は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例（マスタ１２が行う処理を実行する処理実行部の一例）を示すブロック図である。
【０１５１】
コンピュータにおいて、CPU（Central Processing Unit）１０１，ROM（Read Only Memory）１０２，RAM（Random Access Memory）１０３、およびEEPROM（Electronically Erasable and Programmable Read Only Memory）１０４は、バス１０５により相互に接続されている。バス１０５には、さらに、入出力インタフェース１０６が接続されており、入出力インタフェース１０６が外部（例えば、図１のデータ信号線１４およびクロック信号線１５）に接続される。
【０１５２】
以上のように構成されるコンピュータでは、CPU１０１が、例えば、ROM１０２およびEEPROM１０４に記憶されているプログラムを、バス１０５を介してRAM１０３にロードして実行することにより、上述した一連の処理が行われる。また、コンピュータ（CPU１０１）が実行するプログラムは、ROM１０２に予め書き込んでおく他、入出力インタフェース１０５を介して外部からEEPROM１０４にインストールしたり、更新したりすることができる。
【０１５３】
＜構成の組み合わせ例＞
なお、本技術は以下のような構成も取ることができる。
（１）
バスを介した通信の主導権を有する通信装置であって、
前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御する送受信制御部と、
前記バスに参加している２台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を１つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理、
および、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理
を行う処理実行部と
を備える通信装置。
（２）
前記処理実行部は、前記グループ所属能力を有する前記他の通信装置と、前記グループ所属能力を有さない前記他の通信装置とが混在して前記バスに参加している状態で、前記グループ所属能力を有する前記他の通信装置を個別に宛先として前記グループアドレスの割り当てを指示するコマンドを送信する
上記（１）に記載の通信装置。
（３）
前記通信装置から前記通信の主導権が譲渡されると前記通信装置として機能することが可能で、前記通信の主導権を有していないときには前記通信装置による制御に従って通信を行う特定の他の通信装置が前記バスに参加することができ、
前記処理実行部は、前記バスに参加している前記特定の他の通信装置のうちの、前記グループアドレスを管理して通信を行うことができるグループ管理能力を有する前記特定の他の通信装置を認識する処理を行う
上記（１）または（２）に記載の通信装置。
（４）
前記処理実行部は、前記グループ管理能力を有すると認識された前記特定の他の通信装置との間で、前記他の通信装置のグループ所属能力の認識状況、前記特定の他の通信装置のグループ管理能力の認識状況、および、前記他の通信装置に対する前記グループアドレスの割り当て状況を共有する処理を行う
（３）に記載の通信装置。
（５）
前記バスに、複数台の前記グループ管理能力を有する前記特定の他の通信装置が接続されている状態で、
前記処理実行部は、前記グループアドレスに関する情報の共有を指示するコマンドを送信することで、前記他の通信装置のグループ所属能力の認識状況、前記特定の他の通信装置のグループ管理能力の認識状況、および、前記他の通信装置に対する前記グループアドレスの割り当て状況の共有を行う
（４）に記載の通信装置。
（６）
バスを介した通信の主導権を有する通信装置の通信方法であって、
前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御し、
前記バスに参加している２台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を１つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理を行い、
前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行う
ステップを含む通信方法。
（７）
バスを介した通信の主導権を有する通信装置が内蔵するコンピュータに実行させるプログラムにおいて、
前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御し、
前記バスに参加している２台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を１つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理を行い、
前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行う
ステップを含む処理を実行させるプログラム。
（８）
バスを介した通信の主導権を有する通信装置と、前記通信装置による制御に従って通信を行う他の通信装置とにより通信が行われる通信システムにおいて、
前記通信装置が、
前記他の通信装置との間における信号の送受信を制御する送受信制御部と、
前記バスに参加している２台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を１つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理、
および、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理
を行う処理実行部と
を備える通信システム。
【０１５４】
なお、本実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。また、本明細書に記載された効果はあくまで例示であって限定されるものではなく、他の効果があってもよい。
【符号の説明】
【０１５５】
１１  バスＩＦ，  １２−１乃至１２−３  マスタ，  １３−１乃至１３−６  スレーブ，  １４  データ信号線，  １５  クロック信号線，  ２１  マスタデバイス，  ２２  上位層，  ３１  スレーブデバイス，  ３２  上位層，  ４１  送受信制御部，  ４２  データ受信部，  ４３  データ送信部，  ４４  マスタシップリクエスト制御部，  ４５  コマンド解釈部，  ４６  情報保持部，  ４７  コマンド送信部，  ４８  テーブル保持部，  ５１  送受信制御部，  ５２  データ受信部，  ５３  データ送信部，  ５４  ホットジョインリクエスト制御部，  ５５  ダイナミックアドレス保持部，  ５６  グループアドレス保持部，  ５７  コマンド解釈部，  ５８  情報保持部
【図１】
2018206266.tif 000003
【図２】
2018206266.tif 000004
【図３】
2018206266.tif 000005
【図４】
2018206266.tif 000006
【図５】
2018206266.tif 000007
【図６】
2018206266.tif 000008
【図７】
2018206266.tif 000009
【図８】
2018206266.tif 000010
【図９】
2018206266.tif 000011
【図１０】
2018206266.tif 000012
【図１１】
2018206266.tif 000013
【図１２】
2018206266.tif 000014
【図１３】
2018206266.tif 000015
【図１４】
2018206266.tif 000016
【図１５】
2018206266.tif 000017
【図１６】
2018206266.tif 000018
【図１７】
2018206266.tif 000019