特開2018-206266(P2018-206266A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ソニーセミコンダクタソリューションズ株式会社の特許一覧
特開2018-206266通信装置、通信方法、プログラム、および、通信システム
<>
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000003
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000004
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000005
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000006
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000007
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000008
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000009
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000010
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000011
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000012
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000013
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000014
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000015
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000016
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000017
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000018
  • 特開2018206266-通信装置、通信方法、プログラム、および、通信システム 図000019
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2018-206266(P2018-206266A)
(43)【公開日】2018年12月27日
(54)【発明の名称】通信装置、通信方法、プログラム、および、通信システム
(51)【国際特許分類】
   G06F 13/14 20060101AFI20181130BHJP
   G06F 13/38 20060101ALI20181130BHJP
   H04L 12/40 20060101ALI20181130BHJP
【FI】
   G06F13/14 320A
   G06F13/38 330A
   G06F13/14 330A
   H04L12/40 A
【審査請求】未請求
【請求項の数】8
【出願形態】OL
【全頁数】28
(21)【出願番号】特願2017-113850(P2017-113850)
(22)【出願日】2017年6月8日
(71)【出願人】
【識別番号】316005926
【氏名又は名称】ソニーセミコンダクタソリューションズ株式会社
【住所又は居所】神奈川県厚木市旭町四丁目14番1号
(74)【代理人】
【識別番号】100121131
【弁理士】
【氏名又は名称】西川 孝
(74)【代理人】
【識別番号】100082131
【弁理士】
【氏名又は名称】稲本 義雄
(72)【発明者】
【氏名】越坂 直弘
【住所又は居所】神奈川県厚木市岡田四丁目16番1号 ソニーLSIデザイン株式会社内
(72)【発明者】
【氏名】高橋 宏雄
【住所又は居所】神奈川県厚木市旭町四丁目14番1号 ソニーセミコンダクタソリューションズ株式会社内
【テーマコード(参考)】
5B077
5K032
【Fターム(参考)】
5B077BA09
5K032AA01
5K032CC10
5K032DA02
5K032DA13
5K032EC03
(57)【要約】
【課題】より確実に効率良く通信を行う。
【解決手段】任意の複数台のスレーブを1つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、グループに所属して通信を行うことができるグループ所属能力を有するスレーブが認識される。そして、グループ所属能力を有するスレーブと、グループ所属能力を有さないスレーブとが混在してバスに参加している状態で、グループ所属能力を有すると認識されたスレーブに対してグループアドレスが割り当てられる。本技術は、例えば、バスIFに適用できる。
【選択図】図4
【特許請求の範囲】
【請求項1】
バスを介した通信の主導権を有する通信装置であって、
前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御する送受信制御部と、
前記バスに参加している2台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を1つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理、
および、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理
を行う処理実行部と
を備える通信装置。
【請求項2】
前記処理実行部は、前記グループ所属能力を有する前記他の通信装置と、前記グループ所属能力を有さない前記他の通信装置とが混在して前記バスに参加している状態で、前記グループ所属能力を有する前記他の通信装置を個別に宛先として前記グループアドレスの割り当てを指示するコマンドを送信する
請求項1に記載の通信装置。
【請求項3】
前記通信装置から前記通信の主導権が譲渡されると前記通信装置として機能することが可能で、前記通信の主導権を有していないときには前記通信装置による制御に従って通信を行う特定の他の通信装置が前記バスに参加することができ、
前記処理実行部は、前記バスに参加している前記特定の他の通信装置のうちの、前記グループアドレスを管理して通信を行うことができるグループ管理能力を有する前記特定の他の通信装置を認識する処理を行う
請求項1に記載の通信装置。
【請求項4】
前記処理実行部は、前記グループ管理能力を有すると認識された前記特定の他の通信装置との間で、前記他の通信装置のグループ所属能力の認識状況、前記特定の他の通信装置のグループ管理能力の認識状況、および、前記他の通信装置に対する前記グループアドレスの割り当て状況を共有する処理を行う
請求項3に記載の通信装置。
【請求項5】
前記バスに、複数台の前記グループ管理能力を有する前記特定の他の通信装置が接続されている状態で、
前記処理実行部は、前記グループアドレスに関する情報の共有を指示するコマンドを送信することで、前記他の通信装置のグループ所属能力の認識状況、前記特定の他の通信装置のグループ管理能力の認識状況、および、前記他の通信装置に対する前記グループアドレスの割り当て状況の共有を行う
請求項4に記載の通信装置。
【請求項6】
バスを介した通信の主導権を有する通信装置の通信方法であって、
前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御し、
前記バスに参加している2台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を1つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理を行い、
前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行う
ステップを含む通信方法。
【請求項7】
バスを介した通信の主導権を有する通信装置が内蔵するコンピュータに実行させるプログラムにおいて、
前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御し、
前記バスに参加している2台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を1つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理を行い、
前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行う
ステップを含む処理を実行させるプログラム。
【請求項8】
バスを介した通信の主導権を有する通信装置と、前記通信装置による制御に従って通信を行う他の通信装置とにより通信が行われる通信システムにおいて、
前記通信装置が、
前記他の通信装置との間における信号の送受信を制御する送受信制御部と、
前記バスに参加している2台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を1つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理、
および、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理
を行う処理実行部と
を備える通信システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、通信装置、通信方法、プログラム、および、通信システムに関し、特に、より確実に効率良く通信を行うことができるようにした通信装置、通信方法、プログラム、および、通信システムに関する。
【背景技術】
【0002】
従来、各種のデバイスにおけるレジスタを制御するためのバスIF(Interface)としてCCI(Camera Control Interface)が広く使用されており、CCIでは、物理層にI2C(Inter-Integrated Circuit)規格が採用されている。また、近年、I2Cの高速化を実現することが求められており、次世代の規格としてI3C(Improved Inter Integrated Circuit)の規定が策定され、その改定が進められている。
【0003】
例えば、I2CおよびI3Cは、バスIFを介した通信の主導権を有するマスタによる制御に従って、バスIFに接続されているスレーブと通信を行うことができるように構成される。さらに、I3Cでは、I2Cのデバイスと通信を行うことができるように互換性を維持する機能や、バスIFに途中からスレーブが参加することを可能とするホットジョインと称される機能、複数のマスタどうしでマスタ権限を譲渡する機能などが提供される。
【0004】
また、特許文献1には、I3Cにおいて、通信のスタートやストップなどの誤検出に伴って通信不能となることを回避するようにエラー検出方法を定義することで、より確実に通信を行うことが可能な通信装置が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】国際公開第2017/061330号
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、現行のI3Cの規格では、バスIFに接続された全てのデバイスを相手先として通信を行うこと、および、バスIFに接続された任意の1つのデバイスを相手先として通信を行うことが規定されている。
【0007】
そのため、例えば、バスIFに接続された任意の複数台のデバイスに同一の内容の書き込みを行いたい場合、マスタは、それらのデバイスに対して個々に書き込み転送を繰り返して行わなければならなかった。従って、より効率良く通信を行うことができるようにするために、任意の複数台のデバイスを相手先として通信を行う手法を確立することが考えられる。そして、そのような手法で通信を行うのに伴って発生することが懸念される通信エラーを回避し、確実に通信が行われるようにすることが必要となる。
【0008】
本開示は、このような状況に鑑みてなされたものであり、より確実に効率良く通信を行うことができるようにするものである。
【課題を解決するための手段】
【0009】
本開示の一側面の通信装置は、バスを介した通信の主導権を有する通信装置であって、前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御する送受信制御部と、前記バスに参加している2台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を1つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理、および、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行う処理実行部とを備える。
【0010】
本開示の一側面の通信方法またはプログラムは、バスを介した通信の主導権を有する通信装置の通信方法、または、バスを介した通信の主導権を有する通信装置が内蔵するコンピュータに実行させるプログラムにおいて、前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御し、前記バスに参加している2台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を1つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理を行い、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行うステップを含む。
【0011】
本開示の一側面の通信システムは、バスを介した通信の主導権を有する通信装置と、前記通信装置による制御に従って通信を行う他の通信装置とにより通信が行われる通信システムにおいて、前記通信装置が、前記他の通信装置との間における信号の送受信を制御する送受信制御部と、前記バスに参加している2台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を1つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理、および、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行う処理実行部とを備える。
【0012】
本開示の一側面においては、通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信が制御され、バスに参加している2台以上の他の通信装置のうちの、任意の複数台の他の通信装置を1つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、グループに所属して通信を行うことができるグループ所属能力を有する他の通信装置を認識する処理が行われ、グループ所属能力を有すると認識された他の通信装置に対してグループアドレスを割り当てる処理が行われる。
【発明の効果】
【0013】
本開示の一側面によれば、より確実に効率良く通信を行うことができる。
【0014】
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【0015】
図1】本技術を適用したバスIFの一実施の形態の構成例を示すブロック図である。
図2】マスタおよびスレーブの構成例を示すブロック図である。
図3】デバイス情報が登録されたテーブルの一例を示す図である。
図4】ダイナミックアドレスおよびグループアドレスを割り当てる処理を説明するフローチャートである。
図5】ダイナミックアドレスおよびグループアドレスを割り当てる処理の変形例を説明するフローチャートである。
図6】GETGRPCAPコマンドの第1のフォーマット例を示す図である。
図7】GETGRPCAPコマンドの第2のフォーマット例を示す図である。
図8】GETGRPCAPコマンドの第3のフォーマット例を示す図である。
図9】SETGRPAコマンドの第1のフォーマット例を示す図である。
図10】SETGRPAコマンドの第2のフォーマット例を示す図である。
図11】DEFGRPSコマンドの第1のフォーマット例を示す図である。
図12】DEFGRPSコマンドの第2のフォーマット例を示す図である。
図13】DEFGRPSコマンドの第3のフォーマット例を示す図である。
図14】書き込み転送における通信フォーマットの一例を示す図である。
図15】書き込み転送および読み出し転送における通信フォーマットの一例を示す図である。
図16】書き込み転送および読み出し転送における通信フォーマットの一例を示す図である。
図17】本技術を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【0016】
以下、本技術を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【0017】
<バスIFの構成例>
図1は、本技術を適用したバスIFの一実施の形態の構成例を示すブロック図である。
【0018】
図1に示されているバスIF11は、3台のマスタ12−1乃至12−3および6台のスレーブ13−1乃至13−6が、シリアルデータSDAを伝送するデータ信号線14と、シリアルクロックSCLを伝送するクロック信号線15とを介して接続されて構成される。
【0019】
マスタ12−1および12−2、並びに、スレーブ13−1乃至13−4は、新たに提案されるバージョンのI3Cの規格(I3C_v1.1)に準拠している。また、マスタ12−3およびスレーブ13−5は、現行のバージョンのI3Cの規格(I3C_v1.0)に準拠しており、スレーブ13−6は、I2Cの規格に準拠している。このように、バスIF11は、I3C_v1.1に準拠しているデバイス、I3C_v1.0に準拠しているデバイス、およびI2Cの規格に準拠しているデバイスが混在しても運用可能に構成される。
【0020】
また、I3Cでは、稼働している状態のバスIF11に途中から参加することを可能とする機能であるホットジョインが規定されている。図1において破線で示されているスレーブ13−4は、例えば、パワーオフとされてバスIF11に参加していない状態を表している。そして、スレーブ13−4は、パワーオンとなった後にホットジョインリクエストを送信して、バスIF11に参加することができる。
【0021】
マスタ12−1乃至12−3は、バスIF11を介した通信を主導的に制御する機能を備えており、スレーブ13−1乃至13−6は、マスタ12−1乃至12−3のうちの主導権を有する1台の制御に従って、バスIF11を介した通信を行うことができる。なお、以下適宜、マスタ12−1乃至12−3それぞれを区別する必要がない場合、単に、マスタ12と称し、スレーブ13−1乃至13−6それぞれを区別する必要がない場合、単に、スレーブ13と称する。
【0022】
また、マスタ12−1乃至12−3のうち、バスIF11における通信の主導権(以下、マスタ権限と称する)を有する1台のマスタ12をカレントマスタ12Cと称し、その他のマスタ12をセカンダリマスタ12Sと称する。例えば、マスタ権限を有していないセカンダリマスタ12Sは、カレントマスタ12Cの制御に従ってバスIF11を介した通信を行うことができ、カレントマスタ12Cからマスタ権限が譲渡されると、カレントマスタ12Cとして機能する。このように、マスタ12は、通信の主導権を有している状態でカレントマスタ12Cとして機能し、通信の主導権を有していない状態のセカンダリマスタ12Sはスレーブ13と同様に扱われる。従って、本実施の形態では、カレントマスタ12Cの制御に従って通信を行うセカンダリマスタ12Sも、スレーブ13に含まれるものとして説明する。
【0023】
ここで、以下適宜、I3C_v1.1に準拠しているスレーブ13−1乃至13−4、および、I3C_v1.0に準拠しているスレーブ13−5のことを、I3Cスレーブ13とも称する。さらに、I3C_v1.1およびI3C_v1.0いずれかに準拠しているデバイス(即ち、マスタ12およびI3Cスレーブ13)を、I3Cデバイスとも称する。
【0024】
ところで、I3C_v1.1では、カレントマスタ12Cが、任意の複数台のI3Cスレーブ13を相手先として、それらのI3Cスレーブ13に対して一斉に書き込み転送を行うことを可能とするグループアドレスを設定して運用することが検討されている。
【0025】
即ち、後述する図6乃至8に示すようなフォーマットのSETGRPAコマンドを定義することで、同一のグループに属する複数台のI3Cスレーブ13に対して、同一のグループアドレスが設定される。例えば、個々のグループごとにダイナミックアドレスを設定することで、そのダイナミックアドレスをグループアドレスとして使用することができる。なお、1台のI3Cスレーブ13が複数のグループに属することもでき、1台のI3Cスレーブ13に対して、少なくとも1つ以上のグループアドレスを割り当てることが可能とされる。
【0026】
例えば、カレントマスタ12Cは、SETGRPAコマンドを使用して、それぞれのグループに対してグループアドレスを設定する。そして、カレントマスタ12Cは、I3Cで規定される各種の書き込み転送(Direct Write CCC/Private Write/HDR Write)を行う際に、書き込み転送のコマンドのスレーブアドレスフィールドに、グループアドレスを指定する。これにより、カレントマスタ12Cは、1回の書き込み転送で、そのグループに属する複数台のI3Cスレーブ13に対して、一斉にデータを書き込むことができる。
【0027】
一方、I3Cスレーブ13は、バスIF11に参加している全てのI3Cスレーブ13を指定するアドレス7'h7E、自身のダイナミックアドレス、または自身が属するグループアドレスに対する通信を受信して、その通信の内容に従った処理を行う。
【0028】
なお、カレントマスタ12Cが、グループアドレスによる指定を行って複数台のI3Cスレーブ13に対して読み出しコマンドを送信した場合、それらの複数台のI3Cスレーブ13から転送される読み出しデータがコンフリクトすることが想定される。そのため、I3Cで規定される各種の読み出し転送(Direct Read CCC/Private Read/HDR Read)を行う際に、読み出し転送のコマンドのスレーブアドレスフィールドに、グループアドレスを指定することを禁止する運用が想定される。なお、後述の図15および図16に示すように、複数台のI3Cスレーブ13ごとに読み出しデータを出力するタイミングを制御する場合、読み出しデータのコンフリクトを回避することができる。この場合、各種の読み出し転送を行う際に、グループアドレスを指定することを禁止せずに運用することができる。さらに、グループアドレスを指定した読み出し転送をイネーブルとするために、レジスタなどを備えるようにしてもよい。
【0029】
ところで、図1に示すバスIF11は、グループアドレスに関する機能が規定されるI3C_v1.1に準拠しているマスタ12−1および12−2並びにI3Cスレーブ13−1乃至13−4と、グループアドレスに関する機能が規定されていないI3C_v1.0に準拠しているマスタ12−3およびI3Cスレーブ13−5と、I2Cの規格に準拠しているI2Cスレーブ13−6とが混在した構成となっている。
【0030】
このように構成されるバスIF11では、マスタ12−1および12−2が、グループアドレスの割り当てを行うためには、バスIF11に参加している全てのマスタ12およびスレーブ13のうち、グループアドレスに対応しているI3Cデバイスを認識することができるようにI3C_v1.1を規定する必要がある。
【0031】
また、バスIF11に参加している複数のマスタ12がグループアドレスに対応している場合、それらのマスタ12どうしで、他のマスタ12が割り当てたグループアドレスを認識することができるようにI3C_v1.1を規定する必要がある。即ち、あるマスタ12が、他のマスタ12が割り当てたグループアドレスを認識することができない場合、既に使用済みのアドレス値をグループアドレスに使用してしまって、通信エラーが発生することが懸念される。また、あるマスタ12が設定したグループアドレスを、他のマスタ12が書き換えてしまうことにより、グループアドレス情報が破壊されてしまって、通信エラーが発生することが懸念される。
【0032】
そこで、I3C_v1.1に準拠しているマスタ12−1および12−2は、グループアドレスを運用するにあたり、グループアドレスへの対応状況を認識して、グループアドレスを使用することにより発生することが懸念される通信エラーを回避することができるように構成される。これにより、バスIF11では、通信エラーを回避して確実に、グループアドレスを利用して効率良く通信を行うことができる。
【0033】
<マスタおよびスレーブの構成例>
図2は、マスタ12およびスレーブ13の構成例を示すブロック図である。
【0034】
図2に示す構成では、マスタ12は、マスタデバイス21の物理層として組み込まれ、マスタデバイス21は、マスタ12に対して上位となる上位層22(例えば、CCIレイヤ)を備える。同様に、スレーブ13は、スレーブデバイス31の物理層として組み込まれ、スレーブデバイス31は、スレーブ13に対して上位となる上位層32(例えば、CCIレイヤ)を備える。
【0035】
図2に示すように、マスタ12は、送受信制御部41、データ受信部42、データ送信部43、マスタシップリクエスト制御部44、コマンド解釈部45、情報保持部46、コマンド送信部47、およびテーブル保持部48を備えて構成される。なお、これらの各部、または、その一部は、例えば、半導体集積回路や、プログラマブルな半導体集積回路、ソフトウエアなどによって実現するようにしてもよい。
【0036】
送受信制御部41は、バスIF11に接続されている他のデバイスとの間における信号の送受信を制御する。例えば、送受信制御部41は、クロック信号線15を駆動してシリアルクロックSCLを送信し、シリアルクロックSCLのタイミングに合わせてデータ信号線14を駆動することでシリアルデータSDAの他のデバイスへの送信を制御する。また、送受信制御部41は、シリアルクロックSCLのタイミングに合わせて、他のデバイスがデータ信号線14を駆動して送信してくるシリアルデータSDAの受信を制御する。
【0037】
データ受信部42は、送受信制御部41による制御に従って、他のデバイスから送信されてくるデータを受信し、上位層22に供給する。
【0038】
データ送信部43は、上位層22から供給されるデータを、送受信制御部41による制御に従って、他のデバイスに送信する。
【0039】
マスタシップリクエスト制御部44は、上位層22からの要求に従って、マスタ12がセカンダリマスタ12Sであるときに、カレントマスタ12Cに対してマスタ権限の譲渡を要求するマスタシップリクエストの送信に関する制御を行う。
【0040】
コマンド解釈部45は、送受信制御部41による制御に従って受信したコマンドに対する解釈を行って、情報保持部46に保持されている各種の情報を参照し、そのコマンドに応じた処理を実行する。
【0041】
情報保持部46は、コマンド解釈部45がコマンドに応じた処理を行うのに必要な各種の情報を保持することができる。例えば、情報保持部46には、グループに関連する能力であって、マスタ12自身が有する能力を示す情報であるグループ関連能力情報が保持される。例えば、マスタ12自身がグループアドレスを割り当てる能力(以下、グループ管理能力とも称する)を有する場合、情報保持部46には、グループ管理能力を有することを示すグループ関連能力情報が保持される。
【0042】
コマンド送信部47は、上位層22からの要求に従って、送受信制御部41による制御により、バスIF11を介してコマンドを送信する。また、コマンド送信部47は、例えば、マスタ12から送信されたコマンドに応じて、バスIF11に参加しているデバイスから送信されてくるグループ関連能力情報を、テーブル保持部48に供給する。
【0043】
テーブル保持部48は、バスIF11に参加している全てのデバイスに対応付けて、それぞれのデバイスに関するデバイス情報が登録されたデバイス情報テーブル(後述する図3参照)を保持する。例えば、デバイス情報テーブルには、デバイスを識別するデバイスID(Identification)に対応付けて、グループ関連能力情報やグループアドレスなどを含むデバイス情報が登録される。そして、テーブル保持部48は、コマンド送信部47から供給される各デバイスのグループ関連能力情報を、デバイス情報テーブルに保持するとともに上位層22にも通知する。
【0044】
スレーブ13は、送受信制御部51、データ受信部52、データ送信部53、ホットジョインリクエスト制御部54、ダイナミックアドレス保持部55、グループアドレス保持部56、コマンド解釈部57、および情報保持部58を備えて構成される。なお、これらの各部、または、その一部は、例えば、半導体集積回路や、プログラマブルな半導体集積回路、ソフトウエアなどによって実現するようにしてもよい。
【0045】
送受信制御部51は、バスIF11に接続されている他のデバイスとの間における信号の送受信を制御する。例えば、送受信制御部51は、シリアルクロックSCLのタイミングに合わせて、他のデバイスがデータ信号線14を駆動して送信してくるシリアルデータSDAの受信を制御する。また、送受信制御部51は、シリアルクロックSCLのタイミングに合わせてデータ信号線14を駆動することでシリアルデータSDAの他のデバイスへの送信を制御する。
【0046】
データ受信部52は、送受信制御部41による制御に従って、他のデバイスから送信されてくるデータを受信し、上位層32に供給する。
【0047】
データ送信部53は、上位層32から供給されるデータを、送受信制御部41による制御に従って、他のデバイスに送信する。
【0048】
ホットジョインリクエスト制御部54は、例えば、バスIF11に参加していない状態のスレーブ13が、稼働している状態のバスIF11に参加することを要求するホットジョインリクエストの送信に関する制御を行う。
【0049】
ダイナミックアドレス保持部55は、スレーブ13に割り当てられたダイナミックアドレスを保持することができ、コマンド解釈部57による指示に従って、適宜、ダイナミックアドレスを保持する。
【0050】
グループアドレス保持部56は、スレーブ13に割り当てられたグループアドレスを保持することができ、コマンド解釈部57による指示に従って、適宜、グループアドレスを保持する。
【0051】
コマンド解釈部57は、送受信制御部51による制御に従って受信したコマンドに対する解釈を行って、情報保持部58に保持されている各種の情報を参照し、そのコマンドに応じた処理を実行する。
【0052】
情報保持部58は、コマンド解釈部57がコマンドに応じた処理を行うのに必要な各種の情報を保持することができる。例えば、情報保持部58には、グループに関連する能力であって、スレーブ13自身が有する能力を示す情報であるグループ関連能力情報が保持される。例えば、スレーブ13自身がグループアドレスを割り当てられる能力(以下、グループ所属能力とも称する)を有する場合、情報保持部58には、グループ所属能力を有することを示すグループ関連能力情報が保持される。
【0053】
ここで、図3を参照して、テーブル保持部48に保持されるデバイス情報テーブルについて説明する。図3Aには、I3C_v1.1に準拠しているマスタ12−1および12−2のテーブル保持部48に保持されるデバイス情報テーブルの一例が示されており、図3Bには、I3C_v1.0に準拠しているマスタ12−3のテーブル保持部48に保持されるデバイス情報テーブルの一例が示されている。
【0054】
図3Aに示すように、I3C_v1.1のデバイス情報テーブルには、バスIF11に参加している全てのデバイスを識別するデバイスID(図3の例では、デバイスID:A〜H)が登録される。そして、それぞれのデバイスIDに対応付けて、機能情報、スタティックアドレス(SA)、ダイナミックアドレス(DA)、グループ情報有効情報、グループ管理能力情報、グループ所属能力情報、およびグループアドレス(GRPA)が、デバイス情報として登録される。また、このデバイス情報テーブルには、カレントマスタ12Cとなっているマスタ12のデバイスID(図3の例では、デバイスID:A)が登録される。
【0055】
機能情報には、バスIF11に参加しているデバイスが備える機能を示すデバイス情報が登録され、例えば、I3Cメインマスタ、I3Cセカンダリマスタ、I3Cスレーブ、およびI2Cスレーブの何れかを示すデバイス情報が登録される。
【0056】
スタティックアドレスには、デバイスが持つスタティックアドレスを示すアドレス値(SA値)がデバイス情報として登録される他、スタティックアドレスを持たないデバイスに対しては、その旨を示すデバイス情報(無)が登録される。
【0057】
ダイナミックアドレスには、デバイスに割り当てられたダイナミックアドレスを示すアドレス値(DA値)がデバイス情報として登録される他、ダイナミックアドレスを持つことができないデバイス(I2Cデバイス)に対しては、その旨を示すデバイス情報(無)が登録される。また、ダイナミックアドレスには、ダイナミックアドレスを持つことができるが、ダイナミックアドレスが未だ割り当てられていない場合には、その旨を示すデバイス情報(未)が登録される。
【0058】
グループ情報有効情報には、グループ管理能力情報、グループ所属能力情報、およびグループアドレスに登録されているデバイス情報が有効であることを示すデバイス情報(有)、または、それらのデバイス情報が未だ取得されていないことを示すデバイス情報(無)が登録される。
【0059】
グループ管理能力情報には、デバイスがグループアドレスを割り当てる能力を有することを示すデバイス情報(有)、または、デバイスがグループアドレスを割り当てる能力を有さないことを示すデバイス情報(無)が登録される。また、グループ管理能力情報が取得されていないデバイスについては、グループ管理能力情報は空欄のままとなる。
【0060】
グループ所属能力情報には、デバイスがグループアドレスを割り当てられる能力を有することを示すデバイス情報(有)、または、デバイスがグループアドレスを割り当てられる能力を有さないことを示すデバイス情報(無)が登録される。また、グループ所属能力情報が取得されていないデバイスについては、グループ所属能力情報は空欄のままとなる。
【0061】
グループアドレスには、デバイスが所属するグループに割り当てられたグループアドレスを示すアドレス値(GRPA値)がデバイス情報として登録される。また、グループアドレスを割り当てられる応力を有さないデバイス(I2Cデバイスや、グループ所属能力情報を有さないI3Cデバイスなど)に対しては、その旨を示すデバイス情報(無)が登録される。さらに、グループアドレスには、グループアドレスを割り当てられる応力を有するが、グループアドレスが未だ割り当てられていない場合には、その旨を示すデバイス情報(未)が登録される。また、グループアドレスが取得されていないデバイスについては、グループアドレスは空欄のままとなる。
【0062】
また、図3Bに示すように、I3C_v1.0のデバイス情報テーブルには、I3C_v1.1のデバイス情報テーブルに登録されるデバイス情報のうち、それぞれのデバイスIDに対応付けて、機能情報、スタティックアドレス(SA)、およびダイナミックアドレス(DA)が、デバイス情報として登録される。即ち、I3C_v1.0では、グループアドレスについては定義されていないため、グループ情報有効情報、グループ管理能力情報、グループ所属能力情報、およびグループアドレスは、デバイス情報テーブルに登録されない。
【0063】
このように、テーブル保持部48には、スタティックアドレス、ダイナミックアドレス、またはグループアドレスの割り当て状況などが登録されたデバイス情報テーブルが保持される。
【0064】
<アドレス割り当て処理>
図4に示すフローチャートを参照して、カレントマスタ12Cが、ダイナミックアドレスおよびグループアドレスを割り当てる処理について説明する。
【0065】
例えば、カレントマスタ12Cがパワーオンとなると処理が開始され、ステップS11において、カレントマスタ12Cは、自身の初期化を行う。その後、カレントマスタ12Cの送受信制御部41は、データ信号線14およびクロック信号線15の電位を共にHレベルに駆動して、バスIF11をバスフリー状態にする。
【0066】
ステップS12において、カレントマスタ12Cは、バスIF11に参加しているI3Cデバイスのうち、スタティックアドレスを持つI3Cデバイスの存在を認識する。そして、カレントマスタ12Cは、I3Cデバイスのスタティックアドレスを指定して、ダイナミックアドレスの割り当てを指示するSETDASAコマンドを送信する。これに応じて、スタティックアドレスを持つI3Cデバイスに対するダイナミックアドレスの割り当てが完了すると、処理はステップS13に進む。
【0067】
ステップS13において、カレントマスタ12Cは、ステップS12でダイナミックアドレスが割り当てられなかった残りのI3Cデバイスに対してダイナミックアドレスの割り当てを指示するENTDAAコマンドシーケンスを実行する。これに応じて、バスIF11に参加している全てのI3Cデバイスに対してダイナミックアドレスが割り当てられると、処理はステップS14に進む。
【0068】
ステップS14において、カレントマスタ12Cは、バスIF11に参加している全てのセカンダリマスタ12Sに対して、デバイス情報の共有を指示するDEFSLVSコマンドを送信する。これにより、カレントマスタ12Cは、バスIF11に参加している全てのデバイスに関するデバイス情報をセカンダリマスタ12Sと共有する。なお、この時点ではグループアドレスに関する処理は行われていないため、ステップS14で共有されるデバイス情報には、上述の図3に示したテーブルに登録されているデバイス情報のうちの、デバイスID、機能情報、スタティックアドレス、および、ダイナミックアドレスが含まれる。
【0069】
ステップS15において、カレントマスタ12Cは、情報保持部46が保持しているグループ関連能力情報を参照し、自身がグループアドレスを割り当てる能力を有するか否かを判定する。
【0070】
ステップS15において、カレントマスタ12Cが、グループアドレスを割り当てる能力を有さないと判定した場合、処理は終了される。例えば、カレントマスタ12Cが、I3C_v1.0に準拠しているマスタ12−3である場合、グループアドレスを割り当てる能力を有さない。また、I3C_v1.1においてグループアドレスを割り当てる能力がオプションと規定されていて、カレントマスタ12Cとなっているマスタ12−1または12−2に、その能力が設定されていない場合、グループアドレスを割り当てる能力を有さないと判定される。
【0071】
一方、ステップS15において、カレントマスタ12Cが、グループアドレスを割り当てる能力を有すると判定した場合、処理はステップS16に進む。なお、カレントマスタ12Cおよびセカンダリマスタ12Sがグループ管理能力を有することが必須であると規定される場合、ステップS15の処理は省略してもよく、ステップS15をスキップして処理はステップS16へ進む。
【0072】
ステップS16において、カレントマスタ12Cは、バスIF11に参加している全てのI3Cデバイスに対して、グループ関連能力情報の送信の要求を指示するGETGRPCAPコマンド(後述の図6乃至図8参照)を送信する。これに応じて、カレントマスタ12Cが、各I3Cデバイスから送信されてくるグループ関連能力情報を取得すると、処理はステップS17に進む。
【0073】
ステップS17において、カレントマスタ12Cは、ステップS16で取得したグループ関連能力情報を、図2の上位層22に通知する。これにより、上位層22は、各I3Cデバイスのグループアドレスへの対応を把握することができ、例えば、どのI3Cスレーブ13にグループアドレスを割り当てるかを判断することができる。
【0074】
ステップS18において、カレントマスタ12Cは、I3Cスレーブ13にグループアドレスの割り当てを行うか否かを判定する。例えば、カレントマスタ12Cは、グループ関連能力情報に基づいて判断を行った上位層22から、グループアドレスの割り当てが指示されると、その指示に従ってI3Cスレーブ13にグループアドレスを割り当てると判定することができる。
【0075】
ステップS18において、カレントマスタ12Cが、グループアドレスの割り当てを行うと判定した場合、処理はステップS19に進む。ステップS19において、カレントマスタ12Cは、グループアドレスの割り当てを指示するSETGRPAコマンド(後述の図9および図10参照)を送信し、上位層22からの指示に従ったI3Cスレーブ13に対してグループアドレスを割り当てる。
【0076】
一方、ステップS18において、カレントマスタ12Cが、グループアドレスの割り当てを行わないと判定した場合、または、ステップS19の処理後、処理はステップS20に進む。
【0077】
ステップS20において、カレントマスタ12Cは、テーブル保持部48に保持されているデバイス情報テーブルを参照して、カレントマスタ12C以外に、グループアドレスを割り当てる能力を有するセカンダリマスタ12Sがあるか否かを判定する。
【0078】
ステップS20において、カレントマスタ12Cが、グループアドレスを割り当てる能力を有するセカンダリマスタ12Sがあると判定した場合、処理はステップS21に進む。なお、カレントマスタ12Cおよびセカンダリマスタ12Sがグループ管理能力を有することが必須であると規定される場合、ステップS20の処理は省略してもよく、ステップS20をスキップして処理はステップS21へ進む。
【0079】
ステップS21において、カレントマスタ12Cは、グループアドレスを割り当てる能力を有するセカンダリマスタ12Sに対して、グループアドレスに関する情報の共有を指示するDEFGRPSコマンド(後述の図11乃至図13参照)を送信する。これにより、カレントマスタ12Cは、グループアドレスを割り当てる能力を有するセカンダリマスタ12Sとの間で、バスIF11に参加している全てのデバイスについてのグループアドレスに関する情報を共有する。例えば、グループアドレスに関する情報として、カレントマスタ12Cは、バスIF11に参加している個々のデバイスについて、グループ管理能力情報およびグループ所属能力情報を共有する。さらに、カレントマスタ12Cは、ステップS19でI3Cスレーブ13にグループアドレスを割り当てた場合には、グループアドレスに関する情報としてグループアドレスを共有する。
【0080】
ステップS20でカレントマスタ12Cが、グループアドレスを割り当てる能力を有するセカンダリマスタ12Sがないと判定した場合、または、ステップS21の処理後、処理は終了される。
【0081】
以上のように、カレントマスタ12Cは、バスIF11に参加している全てのI3Cデバイスのグループ関連能力情報を取得することにより、グループ所属能力を有するI3Cスレーブ13を認識することができる。これにより、カレントマスタ12Cは、グループ所属能力を有するI3Cスレーブ13に対して、確実にグループアドレスを割り当てることができる。
【0082】
さらに、カレントマスタ12Cは、バスIF11に参加している全てのI3Cデバイスのグループ関連能力情報を取得することにより、グループ管理能力を有するセカンダリマスタ12Sを認識することができる。これにより、カレントマスタ12Cは、グループ管理能力を有するセカンダリマスタ12Sとの間で、グループアドレスに関する情報を共有することができる。
【0083】
このように、グループアドレスに関する情報が共有されることにより、バスIF11では、例えば、他のマスタ12により既に使用済みのアドレス値を、新たにグループアドレスとして使用することによって通信エラーが発生するような事態を回避することができる。また、グループアドレスに関する情報が共有されることにより、バスIF11では、例えば、他のマスタ12が設定したグループアドレスを、書き換えてしまうことによって通信エラーが発生するような事態を回避することができる。従って、バスIF11では、通信エラーが発生することがなく、より確実に、グループアドレスを使用して効率良く通信を行うことができる。
【0084】
なお、カレントマスタ12Cが、ダイナミックアドレスおよびグループアドレスを割り当てる処理は、図4を参照して説明したような手順に限定されることなく、その他の手順を採用してもよい。
【0085】
例えば、カレントマスタ12Cは、図5に示すような手順で、ダイナミックアドレスおよびグループアドレスを割り当ててもよい。
【0086】
即ち、図5に示すフローチャートでは、ステップS31乃至S33において、図4のステップS11乃至ステップS13と同様の処理が行われる。そして、ステップS34において、カレントマスタ12Cは、情報保持部46が保持しているグループ関連能力情報を参照し、自身がグループアドレスを割り当てる能力を有するか否かを判定する。
【0087】
ステップS34において、カレントマスタ12Cが、グループアドレスを割り当てる能力を有すると判定した場合、ステップS35乃至S38において、図4のステップS16乃至S19と同様の処理が行われた後、処理はステップS39に進む。また、ステップS34において、カレントマスタ12Cが、グループアドレスを割り当てる能力を有さないと判定した場合、処理はステップS39に進む。
【0088】
ステップS39において、カレントマスタ12Cは、バスIF11に参加している全てのセカンダリマスタ12Sに対して、デバイス情報の共有を指示するDEFSLVSコマンドを送信する。これにより、カレントマスタ12Cは、バスIF11に参加している全てのデバイスに関するデバイス情報(デバイスID、機能情報、スタティックアドレス、およびダイナミックアドレス)をセカンダリマスタ12Sと共有する。
【0089】
その後、ステップS40において、カレントマスタ12Cは、情報保持部46が保持しているグループ関連能力情報を参照し、自身がグループアドレスを割り当てる能力を有するか否かを判定する。
【0090】
ステップS40において、カレントマスタ12Cが、グループアドレスを割り当てる能力を有さないと判定した場合、処理は終了される。一方、ステップS40において、カレントマスタ12Cが、グループアドレスを割り当てる能力を有すると判定した場合、ステップS41およびS42において、図4のステップS20および21と同様の処理が行われ、その後、処理は終了される。
【0091】
以上のように、バスIF11では、例えば、スタティックアドレスおよびダイナミックアドレスとともに、グループアドレスを共有することができる。
【0092】
<GETGRPCAPコマンドのフォーマット例>
図6には、図4のステップS16で送信されるGETGRPCAPコマンドの第1のフォーマット例が示されている。
【0093】
上述したように、GETGRPCAPコマンドは、バスIF11に参加している全てのI3Cデバイスに対して、グループ関連能力情報の送信の要求を指示する。
【0094】
図6に示す例では、まず、カレントマスタ12Cは、スタートコンディション(S)を発行し、バスIF11に参加している全てのデバイスを指定するアドレス7'h7Eを送信するのに続いて、グループ関連能力情報の送信を要求するコモンコマンドコード(GETGRPCAP CCC)を送信する。そして、カレントマスタ12Cが、リスタート(Sr)に続いてスレーブアドレス(Slave Address)を送信すると、そのスレーブアドレスのI3Cスレーブ13が、グループ関連能力情報(GRPCAP)を返信する。
【0095】
図示するように、8ビットのグループ関連能力情報のうち、0ビット目は、グループ管理能力を有するか否かを示すフラグであり、1ビット目は、グループ所属能力を有するか否かを示すフラグであり、2ビット目から7ビット目まではリザーブとなっている。従って、グループ関連能力情報の送信を要求するコモンコマンドコードを受信し、スレーブアドレスで指定されたI3Cスレーブ13は、グループ所属能力を有するか否かを示すフラグにより、自身のグループ関連能力情報を、カレントマスタ12Cに認識させることができる。
【0096】
即ち、GETGRPCAPコマンドを受信したデバイスが、グループ管理能力またはグループ所属能力を有する場合、そのデバイスは、ACK応答する。さらに、グループ管理能力を有するデバイスは、グループ管理能力を有するか否かを示すフラグに1を送信し、グループ管理能力を有さないデバイスは、グループ管理能力を有するか否かを示すフラグに0を送信する。また、グループ所属能力を有するデバイスは、グループ所属能力を有するか否かを示すフラグに1を送信し、グループ所属能力を有さないデバイスは、グループ所属能力を有するか否かを示すフラグに0を送信する。また、リザーブ領域は、全て0を送信する。
【0097】
一方、GETGRPCAPコマンドを受信したデバイスが、グループ管理能力およびグループ所属能力を有さない場合、そのデバイスは、NACK応答するか、ACK応答した上でデータをALL0で送信するようにI3C_v1.1で規定する必要がある。例えば、I3C_v1.0の規格では、サポートしないダイレクトコモンコマンドコード(Direct CCC)を受信したデバイスは、NACK応答することが規定されている。そして、GETGRPCAPコマンドは、I3C_v1.0の規格では規定されていないため、I3C_v1.0に準拠するデバイスは、GETGRPCAPコマンドに対しては、必ず、NACK応答することになる。
【0098】
このように、GETGRPCAPコマンドに対する応答を規定することで、I3C_v1.1に準拠するデバイスと、I3C_v1.0に準拠するデバイスとが混在しているバスIF11でも、矛盾が発生することなく、GETGRPCAPコマンドを運用することができる。
【0099】
なお、GETGRPCAPコマンドは、読み出しコマンドであるので、スレーブアドレスにはダイナミックアドレスのみ指定することが可能であり、グループアドレスを指定することはできない。
【0100】
また、グループアドレスを割り当てる能力を有しているマスタ12は、図6に示すようなGETGRPCAPコマンドを必ず送信することができるようにI3C_v1.1で規定する必要がある。一方、グループアドレスを割り当てる能力を有していないマスタ12は、図6に示すようなGETGRPCAPコマンドを送信してはならないとI3C_v1.1で規定する必要がある。
【0101】
図7には、GETGRPCAPコマンドの第2のフォーマット例が示されている。
【0102】
図7に示すように、GETGRPCAPコマンドを受信したデバイスは、ACK応答した上で、第1のグループ関連能力情報(GRPCAP1)および第2のグループ関連能力情報(GRPCAP2)を送信する。第1のグループ関連能力情報(GRPCAP1)では、グループ管理能力を有するか否かを示すフラグが送信され、第2のグループ関連能力情報(GRPCAP2)では、グループ所属能力を有するか否かを示すフラグに加えて、自身に割り当てられているグループアドレスが送信される。なお、グループアドレスが割り当てられていないデバイス、および、グループ所属能力を有さないデバイスは、第2のグループ関連能力情報のグループアドレスとして7'h00(割り当て禁止)を送信する。
【0103】
図8には、GETGRPCAPコマンドの第3のフォーマット例が示されている。
【0104】
上述したように、1台のI3Cスレーブ13が複数のグループに属することもでき、1台のI3Cスレーブ13に対して、少なくとも1つ以上のグループアドレスを割り当てることが可能とされる。従って、GETGRPCAPコマンドを受信したI3Cスレーブ13は、自身に割り当て可能なグループアドレスの個数を、カレントマスタ12Cに通知することができる。
【0105】
図8に示すように、グループ関連能力情報(GRPCAP)は、0ビット目から2ビット目までに、グループアドレスのスロット数(割り当て可能な個数)が送信される。なお、グループ所属能力を有さないデバイスは、例えば、0ビット目から2ビット目までを全て0を送信することで、その旨を示すことができる。また、3ビット目から6ビット目まではリザーブとなっており、7ビット目に、グループ管理能力を有するか否かを示すフラグが送信される。
【0106】
なお、図8に示す例では、グループアドレスのスロット数は3ビットで表されているが、それに限定されることなく、規格上最大のスロット数に応じてビット幅を決定することができる。
【0107】
以上のようなフォーマットのGETGRPCAPコマンドを用いて、カレントマスタ12Cは、バスIF11に参加している全てのデバイスのグループ管理能力およびグループ所属能力を認識することができる。
【0108】
<SETGRPAコマンドのフォーマット例>
図9には、図4のステップS19で送信されるSETGRPAコマンドの第1のフォーマット例が示されている。
【0109】
図9に示す例では、まず、カレントマスタ12Cは、スタートコンディション(S)を発行し、バスIF11に参加している全てのデバイスを指定するアドレス7'h7Eを送信するのに続いて、グループアドレスの割り当てを指示するコモンコマンドコード(SETGRPA CCC)を送信する。
【0110】
そして、カレントマスタ12Cは、リスタート(Sr)に続いてスレーブアドレス(Slave Address)を送信し、そのスレーブアドレスのI3Cスレーブ13に対して割り当てる7ビットのアドレス値のグループアドレスを送信する。なお、ここで送信されるスレーブアドレスには、ダイナミックアドレス、または、既に割り当て済みのグループアドレスを指定することができる。従って、ダイナミックアドレスを指定してI3Cスレーブ13を個別に宛先として、または、グループアドレスを指定してグループを宛先として、グループアドレスを割り当てることができる。
【0111】
そして、SETGRPAコマンドを受信したデバイスが、グループ管理能力またはグループ所属能力を有する場合、そのデバイスは、ACK応答する。さらに、そのデバイスは、グループアドレスが未だ割り当てられていない場合、受信したアドレス値のグループアドレスを、自身のグループアドレスとして設定する。また、そのデバイスが、グループアドレスが既に割り当てられている場合、受信したアドレス値のグループアドレスを、自身のグループアドレスとして更新する。
【0112】
一方、SETGRPAコマンドを受信したデバイスが、グループ管理能力およびグループ所属能力を有さない場合、そのデバイスは、NACK応答しなければならない。例えば、I3C_v1.0の規格では、サポートしないダイレクトコモンコマンドコード(Direct CCC)を受信したデバイスは、NACK応答することが規定されている。そして、SETGRPAコマンドは、I3C_v1.0の規格では規定されていないため、I3C_v1.0に準拠するデバイスは、SETGRPAコマンドに対しては、必ず、NACK応答することになる。
【0113】
また、グループアドレスを割り当てる能力を有しているマスタ12は、図9に示すようなSETGRPAコマンドを必ず送信することができるようにI3C_v1.1で規定する必要がある。一方、グループアドレスを割り当てる能力を有していないマスタ12は、図9に示すようなSETGRPAコマンドを送信してはならないとI3C_v1.1で規定する必要がある。
【0114】
図10には、SETGRPAコマンドの第2のフォーマット例が示されている。
【0115】
上述したように、1台のI3Cスレーブ13が複数のグループに属することもでき、1台のI3Cスレーブ13に対して、少なくとも1つ以上のグループアドレスを割り当てることが可能とされる。
【0116】
従って、カレントマスタ12Cは、グループアドレスの割り当てを指示するコモンコマンドコード(SETGRPA CCC)を送信した後、スレーブアドレス(Slave Address)に続けて、そのスレーブアドレスのI3Cスレーブ13に対して割り当てることが可能な個数分のvalid flagおよびグループアドレスのアドレス値を送信する。
【0117】
なお、SETGRPAコマンドで複数のグループアドレスを割り当てる場合、スレーブアドレスにはダイナミックアドレスのみが指定可能とされ、グループアドレスの指定は禁止される。即ち、I3Cスレーブ13を個別に宛先とするダイナミックアドレスを使用して、グループアドレスの割り当てが行われる。
【0118】
また、valid=0のスロットはグループアドレスを無効とし、valid=1のスロットはグループアドレスを有効とする。そして、カレントマスタ12Cは、グループアドレスを割り当てるデバイスのグループアドレスのスロット数分だけ、グループアドレスを設定するバイトを送信しなければならない。このとき、例えば、バイト数がスロット数未満である場合、そのデバイスは、受信したバイト数分だけはグループアドレスを設定し、足りない分の設定は行わない。また、例えば、バイト数がスロット数より大きい場合、そのデバイスは、スロット数を超えた分のバイトは無視する。
【0119】
以上のようなフォーマットのSETGRPAコマンドを用いて、カレントマスタ12Cは、バスIF11に参加しているI3Cデバイスに対して、グループアドレスを割り当てることができる。即ち、上述したように、I3C_v1.1に準拠しているデバイス、I3C_v1.0に準拠しているデバイス、およびI2Cの規格に準拠しているデバイスが混在してバスIF11に参加している状態であっても、例えば、グループ所属能力を有するI3Cスレーブ13を個別に宛先としてグループアドレスを割り当てることができる。
【0120】
<DEFGRPSコマンドのフォーマット例>
図11には、図4のステップS21で送信されるDEFGRPSコマンドの第1のフォーマット例が示されている。
【0121】
上述したように、DEFGRPSコマンドにより、グループ管理能力を有するマスタ12どうしで、グループ関連能力情報を共有することができる。
【0122】
図11に示す例では、まず、カレントマスタ12Cは、スタートコンディション(S)を発行し、バスIF11に参加している全てのデバイスを指定するアドレス7'h7Eを送信するのに続いて、グループアドレスに関する情報の共有を指示するDEFGRPSコマンド(DEFGRPS CCC)を送信する。さらに、カレントマスタ12Cは、カレントマスタ12Cが存在を認識しているバスIF11に参加している全てのデバイスの個数(Count)、即ち、後続して送信するデータの組数を送信する。
【0123】
それに続いて、カレントマスタ12Cは、カレントマスタ12C自身のダイナミックアドレス(DA)、グループ関連能力情報(GRPCAP)、グループアドレス(GRPA)、およびGAvalidを送信する。その後、カレントマスタ12Cは、バスIF11に参加している全てのデバイスの個数分だけ、同様のデータを繰り返して送信する。なお、I3Cデバイスについてはダイナミックアドレス(DA)が送信され、I2Cデバイスについてはスタティックアドレス(SA)が送信される。
【0124】
例えば、GAvalidは、グループ所属能力を有さない場合には1'b0が送信され、グループ所属能力を有するがグループアドレスが未だ割り当てられていない場合には1'b0が送信され、グループ所属能力を有しグループアドレスが割り当て済みの場合には1'b1が送信される。また、グループアドレスは、グループ所属能力を有さない場合には7'h00が送信され、グループ所属能力を有するがグループアドレスが未だ割り当てられていない場合には7'h00が送信され、グループ所属能力を有しグループアドレスが割り当て済みの場合にはアドレス値が送信される。
【0125】
また、グループアドレスを割り当てる能力を有しているマスタ12は、図11に示すようなDEFGRPSコマンドを必ず送信することができるようにI3C_v1.1で規定する必要がある。一方、グループアドレスを割り当てる能力を有していないマスタ12は、図11に示すようなDEFGRPSコマンドを送信してはならないとI3C_v1.1で規定する必要がある。
【0126】
グループアドレスを割り当てる能力を有していないマスタ12は、DEFGRPSコマンドを受信しても無視しなければならない。例えば、I3C_v1.0では、サポートしないブロードキャストコモンコマンドコード(Broadcast CCC)を受信したデバイスは、そのコマンドを無視することが規定されている。そして、DEFGRPSコマンドは、I3C_v1.0の規格では規定されていないため、I3C_v1.0に準拠するデバイスは、DEFGRPSコマンドに対しては、必ず、無視することになる。
【0127】
そして、グループアドレスを割り当てる能力を有しているマスタ12は、DEFGRPSコマンドを受信できなければならない。
【0128】
図12には、DEFGRPSコマンドの第2のフォーマット例が示されている。
【0129】
図12に示すDEFGRPSコマンドでは、DEFGRPSコマンド(DEFGRPS CCC)に続いて、カレントマスタ12Cが存在を認識しているI3Cデバイスの個数(Count)、即ち、後続して送信するデータの組数を送信する。即ち、I2Cデバイスは、グループ管理能力およびグループ所属能力のどちらも有していないことは明白であり、I3Cデバイスについてだけグループ関連能力情報を共有するようにしてもよい。
【0130】
それに続いて、カレントマスタ12Cは、カレントマスタ12C自身のダイナミックアドレス(DA)、グループ管理能力情報(GETGRPCAPコマンドで取得したフラグ)、グループアドレス(GRPA)、グループ所属能力情報(GETGRPCAPコマンドで取得したフラグ)を送信する。その後、カレントマスタ12Cは、I3Cデバイスの個数分だけ、同様のデータを繰り返して送信する。なお、グループアドレス(GRPA)として、グループアドレスが未だ割り当てられていない場合には、7'h00が送信され、グループ所属能力情報を有するI3Cデバイスに対してグループアドレスが割り当て済みの場合、そのアドレス値が送信される。
【0131】
また、図12に示すDEFGRPSコマンドの第2のフォーマット例では、1デバイス分の情報を2バイト領域に詰めて送り、かつ、I2Cデバイス分の情報を送信しないことで、送信データ量の削減を図ることができる。
【0132】
図13には、DEFGRPSコマンドの第3のフォーマット例が示されている。
【0133】
図13に示すDEFGRPSコマンドでは、DEFGRPSコマンド(DEFGRPS CCC)に続いて、カレントマスタ12Cが存在を認識しているバスIF11に参加している全てのデバイスの個数(Count)、即ち、後続して送信するデータの組数が送信される。
【0134】
それに続いて、カレントマスタ12Cは、カレントマスタ12C自身のダイナミックアドレス(DA)、グループ関連能力情報(GRPCAP)、グループアドレス(GRPA)、およびGAvalidを送信する。このとき、カレントマスタ12Cは、グループ関連能力情報(GRPCAP)において、図8を参照して説明したのと同様に、グループアドレスのスロット数を送信する。そして、図10を参照して説明したのと同様に、グループアドレスのスロット数と同じバイト数分のvalid flagおよびグループアドレスを送信する。
【0135】
また、図13に示すDEFGRPSコマンドの第3のフォーマット例では、デバイスごとに割り当てられることができるグループアドレスのスロット数と、グループアドレススロット数分だけ、グループアドレスの情報を送信する。
【0136】
以上のようなフォーマットのDEFGRPSコマンドを用いて、カレントマスタ12Cは、セカンダリマスタ12Sとの間で、バスIF11に参加しているデバイスのグループアドレス管理能力、グループアドレスの割り当て状況、および、グループアドレスのアドレス値を共有することができる。
【0137】
<グループアドレスを利用した通信フォーマット>
図14乃至図16を参照して、グループアドレスを利用した通信において用いられる通信フォーマットについて説明する。
【0138】
図14には、書き込み転送(I3C Directed CCC Write)における通信フォーマットの一例が示されている。
【0139】
図14に示すように、任意の複数台のI3Cスレーブ13を相手先としてカレントマスタ12Cから送信されるグループアドレス(I3C Group Address)に対し、I3Cスレーブ13からACKが返信され、その後、そのグループを対象として書き込むデータ(Optional Write Data)が送信される。そして、必要なデータ量だけ、そのグループアドレスを相手先としたデータの送信が行われる。
【0140】
なお、同一のグループに所属する複数台のI3Cスレーブ13のうち、多数のI3Cスレーブ13がACKを返信し、一部のI3Cスレーブ13がNACKを送信した場合、カレントマスタ12CがNACKを認識することができないことも想定されるが、その後の通信処理におけるエラー検出で対応することにより、正常な通信を行うことが可能である。
【0141】
図15には、書き込み転送(I3C Private Write)および読み出し転送(I3C Private Read)における通信フォーマットの一例が示されている。
【0142】
図15に示す4つの通信フォーマットのうちの、上側の2つが書き込み転送における通信フォーマットを表しており、下側の2つが書き込み転送における通信フォーマットを表している。
【0143】
書き込み転送では、任意の複数台のI3Cスレーブ13を相手先としてカレントマスタ12Cから送信されるグループアドレス(I3C Group Address)に対し、I3Cスレーブ13からACKが返信され、その後、そのグループを対象として書き込むN個のデータ(Write Data-1〜Write Data-N)が送信される。
【0144】
読み出し転送では、同一のグループに所属する複数台のI3Cスレーブ13について、順次、それぞれのI3Cスレーブ13からN個のデータ(Read Data-1〜Read Data-N)が読み出される。即ち、複数台のI3Cスレーブ13から読み出されたデータがコンフリクトを発生しないように、それぞれのI3Cスレーブ13からデータを読み出すタイミングが異なるものとなるように制御する必要がある。
【0145】
図16には、書き込み転送(I3C Private Write)および読み出し転送(I3C Private Read)における通信フォーマットの一例が示されている。
【0146】
図15に示した通信フォーマットと同様に、書き込み転送では、グループを対象として書き込むN個のデータが送信され、読み出し転送では、同一のグループのI3Cスレーブ13ごとに順次、N個のデータが読み出される。
【0147】
例えば、スタートコンディション(Sのみ、Srは含まず)の後のグループアドレス(I3C Group Address)は、カレントマスタ12C側からオープンドレイン出力によって400kHz程度でデータ転送が行われる。このとき、最初の1バイトのみオープンドレイン出力とし、それ以降のビット(6bit+R/W)は、プッシュプル出力によって12.5MHzでデータ転送されるようにしてもよい。
【0148】
<コンピュータの構成例>
なお、上述のフローチャートを参照して説明した各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。また、プログラムは、単一のCPUにより処理されるものであっても良いし、複数のCPUによって分散処理されるものであっても良い。
【0149】
また、上述した一連の処理(通信方法)は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラムが記録されたプログラム記録媒体からインストールされる。
【0150】
図14は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例(マスタ12が行う処理を実行する処理実行部の一例)を示すブロック図である。
【0151】
コンピュータにおいて、CPU(Central Processing Unit)101,ROM(Read Only Memory)102,RAM(Random Access Memory)103、およびEEPROM(Electronically Erasable and Programmable Read Only Memory)104は、バス105により相互に接続されている。バス105には、さらに、入出力インタフェース106が接続されており、入出力インタフェース106が外部(例えば、図1のデータ信号線14およびクロック信号線15)に接続される。
【0152】
以上のように構成されるコンピュータでは、CPU101が、例えば、ROM102およびEEPROM104に記憶されているプログラムを、バス105を介してRAM103にロードして実行することにより、上述した一連の処理が行われる。また、コンピュータ(CPU101)が実行するプログラムは、ROM102に予め書き込んでおく他、入出力インタフェース105を介して外部からEEPROM104にインストールしたり、更新したりすることができる。
【0153】
<構成の組み合わせ例>
なお、本技術は以下のような構成も取ることができる。
(1)
バスを介した通信の主導権を有する通信装置であって、
前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御する送受信制御部と、
前記バスに参加している2台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を1つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理、
および、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理
を行う処理実行部と
を備える通信装置。
(2)
前記処理実行部は、前記グループ所属能力を有する前記他の通信装置と、前記グループ所属能力を有さない前記他の通信装置とが混在して前記バスに参加している状態で、前記グループ所属能力を有する前記他の通信装置を個別に宛先として前記グループアドレスの割り当てを指示するコマンドを送信する
上記(1)に記載の通信装置。
(3)
前記通信装置から前記通信の主導権が譲渡されると前記通信装置として機能することが可能で、前記通信の主導権を有していないときには前記通信装置による制御に従って通信を行う特定の他の通信装置が前記バスに参加することができ、
前記処理実行部は、前記バスに参加している前記特定の他の通信装置のうちの、前記グループアドレスを管理して通信を行うことができるグループ管理能力を有する前記特定の他の通信装置を認識する処理を行う
上記(1)または(2)に記載の通信装置。
(4)
前記処理実行部は、前記グループ管理能力を有すると認識された前記特定の他の通信装置との間で、前記他の通信装置のグループ所属能力の認識状況、前記特定の他の通信装置のグループ管理能力の認識状況、および、前記他の通信装置に対する前記グループアドレスの割り当て状況を共有する処理を行う
(3)に記載の通信装置。
(5)
前記バスに、複数台の前記グループ管理能力を有する前記特定の他の通信装置が接続されている状態で、
前記処理実行部は、前記グループアドレスに関する情報の共有を指示するコマンドを送信することで、前記他の通信装置のグループ所属能力の認識状況、前記特定の他の通信装置のグループ管理能力の認識状況、および、前記他の通信装置に対する前記グループアドレスの割り当て状況の共有を行う
(4)に記載の通信装置。
(6)
バスを介した通信の主導権を有する通信装置の通信方法であって、
前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御し、
前記バスに参加している2台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を1つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理を行い、
前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行う
ステップを含む通信方法。
(7)
バスを介した通信の主導権を有する通信装置が内蔵するコンピュータに実行させるプログラムにおいて、
前記通信装置による制御に従って通信を行う他の通信装置との間における信号の送受信を制御し、
前記バスに参加している2台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を1つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理を行い、
前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理を行う
ステップを含む処理を実行させるプログラム。
(8)
バスを介した通信の主導権を有する通信装置と、前記通信装置による制御に従って通信を行う他の通信装置とにより通信が行われる通信システムにおいて、
前記通信装置が、
前記他の通信装置との間における信号の送受信を制御する送受信制御部と、
前記バスに参加している2台以上の前記他の通信装置のうちの、任意の複数台の前記他の通信装置を1つのグループとして、そのグループを相手先とするグループアドレスを使用した通信を行うために、前記グループに所属して通信を行うことができるグループ所属能力を有する前記他の通信装置を認識する処理、
および、前記グループ所属能力を有すると認識された前記他の通信装置に対して前記グループアドレスを割り当てる処理
を行う処理実行部と
を備える通信システム。
【0154】
なお、本実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。また、本明細書に記載された効果はあくまで例示であって限定されるものではなく、他の効果があってもよい。
【符号の説明】
【0155】
11 バスIF, 12−1乃至12−3 マスタ, 13−1乃至13−6 スレーブ, 14 データ信号線, 15 クロック信号線, 21 マスタデバイス, 22 上位層, 31 スレーブデバイス, 32 上位層, 41 送受信制御部, 42 データ受信部, 43 データ送信部, 44 マスタシップリクエスト制御部, 45 コマンド解釈部, 46 情報保持部, 47 コマンド送信部, 48 テーブル保持部, 51 送受信制御部, 52 データ受信部, 53 データ送信部, 54 ホットジョインリクエスト制御部, 55 ダイナミックアドレス保持部, 56 グループアドレス保持部, 57 コマンド解釈部, 58 情報保持部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17