(57)【要約】  通信がマスタデバイスによって管理される共有バスにおいて、直接的スレーブデバイス間(S2S)通信が実装される。第2のスレーブデバイスと通信することを望む第1のスレーブデバイスが、マスタデバイスにS2S通信要求を行い得る。要求は、第1のスレーブデバイスが共有バスを介して送ることを望む、要求されるワード数を含み得る。マスタデバイスは、動作パラメータに基づいて変動し得る現在のワード限度を有し得る。要求されるワード数が現在のワード限度よりも大きい場合、またはマスタデバイスがS2S通信をサポートしない場合、マスタデバイスは要求を拒否し得る。要求の拒否は、共有バスを介する活動などの、他の理由のためでもあり得る。マスタデバイスが要求を許可する場合、スレーブデバイスは、共有バスを介して、要求されるワード数を別のスレーブデバイスに送り得る。
2016533608.tif 000002
【特許請求の範囲】
【請求項１】
マスタデバイスであって、
複数のスレーブデバイスで共有される制御データバスに結合するためのバスインターフェース回路と、
前記バスインターフェース回路に結合され、
前記複数のスレーブデバイスによる前記制御データバスへのアクセスを制御し、
前記制御データバスへのアクセスを要求するスレーブデバイスからスレーブデバイス間通信要求を受信する
ように構成された処理回路と
を備えるマスタデバイス。
【請求項２】
前記スレーブデバイス間通信要求が、前記要求スレーブデバイスによって別のスレーブデバイスに転送されるべき、要求されるワード数を含む請求項1に記載のマスタデバイス。
【請求項３】
前記スレーブデバイス間通信要求が、前記制御データバスを介して前記要求スレーブデバイスから別のスレーブデバイスに転送されるべき、要求される最大ワード数を含み、前記処理回路が、
前記要求スレーブデバイスに、前記要求を許可する応答を送る
ようにさらに構成される請求項1に記載のマスタデバイス。
【請求項４】
前記応答が、前記要求において指定された最大ワード数以上であるワード限度数を前記応答内に含めることによって前記要求を許可する請求項3に記載のマスタデバイス。
【請求項５】
前記処理回路が、
前記制御データバスを監視して、スレーブデバイス間通信の終了を検出し、
スレーブデバイス間通信の終了が検出された後、前記制御データバスの制御を回復する
ようにさらに構成される請求項3に記載のマスタデバイス。
【請求項６】
前記スレーブデバイス間通信要求が、前記制御データバスを介して前記要求スレーブデバイスから別のスレーブデバイスに転送されるべき、要求される最大ワード数を含み、前記処理回路が、
前記要求スレーブデバイスに、前記要求を拒否する応答を送る
ようにさらに構成される請求項1に記載のマスタデバイス。
【請求項７】
前記要求される最大ワード数が前記マスタデバイスの現在のワード限度よりも大きい場合、前記スレーブデバイス間通信要求が拒否される請求項6に記載のマスタデバイス。
【請求項８】
前記処理回路が、
前記要求スレーブデバイスによって与えられる、要求される最大ワード数が現在のワード限度よりも大きいとき、前記要求スレーブデバイスに、受け入れられるワード数を送ることによって前記要求を拒否する応答を送る
ようにさらに構成される請求項6に記載のマスタデバイス。
【請求項９】
前記マスタデバイスがスレーブデバイス間通信をサポートしない場合、前記マスタデバイスが、前記要求を拒否する前記応答を送る請求項6に記載のマスタデバイス。
【請求項１０】
マスタデバイスによって動作可能な方法であって、
複数のスレーブデバイスで共有される制御データバスへのアクセスを制御するステップと、
前記制御データバスへのアクセスを要求するスレーブデバイスから、スレーブデバイス間通信要求を受信するステップと
を含む、方法。
【請求項１１】
前記スレーブデバイス間通信要求が、前記制御データバスを介して前記要求スレーブデバイスから別のスレーブデバイスに転送されるべき、要求される最大ワード数を含む請求項10に記載の方法。
【請求項１２】
前記要求スレーブデバイスに、前記要求を許可する応答を送るステップ
をさらに含む請求項11に記載の方法。
【請求項１３】
前記制御データバスを監視して、スレーブデバイス間通信の終了を検出するステップと、
スレーブデバイス間通信の終了が検出された後、前記制御データバスの制御を回復するステップと
をさらに含む請求項12に記載の方法。
【請求項１４】
前記要求スレーブデバイスに、前記要求を拒否する応答を送るステップ
をさらに含む請求項11に記載の方法。
【請求項１５】
前記要求スレーブデバイスと前記別のスレーブデバイスとの間で一定の量の情報を前記マスタデバイスに転送させるための要求を前記要求スレーブデバイスから受信するステップと、
前記要求スレーブデバイスと前記別のスレーブデバイスとの間で、要求された情報間のデータを転送するステップと
をさらに含む請求項14に記載の方法。
【請求項１６】
前記要求を拒否する前記応答が、前記要求される最大ワード数未満である、受け入れられるワード数を含む請求項14に記載の方法。
【請求項１７】
複数のスレーブデバイスおよび少なくとも1つのマスタデバイスで共有される制御データバスに結合するためのバスインターフェース回路と、
前記バスインターフェース回路に結合され、
前記制御データバスを介して前記スレーブデバイスから前記マスタデバイスにスレーブデバイス間通信要求を送る
ように構成された処理回路と
を備えるスレーブデバイス。
【請求項１８】
前記通信要求が、前記スレーブデバイスによって前記制御データバスを介して別のスレーブデバイスに送信されるべき、要求される最大ワード数を含む請求項17に記載のスレーブデバイス。
【請求項１９】
前記処理回路が、
前記マスタデバイスから前記要求を拒否する応答を受信する
ようにさらに構成される請求項18に記載のスレーブデバイス。
【請求項２０】
前記応答が、前記マスタデバイスから普通なら受け入れられるワード数を含む請求項19に記載のスレーブデバイス。
【請求項２１】
前記処理回路が、
前記マスタデバイスに新しいスレーブデバイス間通信要求を送るようにさらに構成され、前記新しいスレーブデバイス間通信要求が、受信された受け入れられるワード数以下である、新しい要求される最大ワード数を含む請求項20に記載のスレーブデバイス。
【請求項２２】
前記処理回路が、
前記要求スレーブデバイスと前記別のスレーブデバイスとの間で一定の量の情報を前記マスタデバイスに転送させるための新しい要求を送る
ようにさらに構成される請求項19に記載のスレーブデバイス。
【請求項２３】
前記処理回路が、
後で、同一の最大ワード数を有する、同一のスレーブデバイス間通信要求を前記マスタデバイスに再送し、または
要求された前の最大ワード限度未満であるが、初期要求の拒否において前記マスタデバイスによって識別される、受け入れられるワード数よりも大きい第2のワード限度を有する、新しいスレーブデバイス間通信要求を送る
ようにさらに構成される請求項19に記載のスレーブデバイス。
【請求項２４】
前記処理回路が、
前記要求スレーブデバイスに前記制御データバスの制御を移転するために前記マスタデバイスにマスタ要求を送り、
前記マスタ要求が前記マスタデバイスによって許可される場合、前記制御データバスの新しいマスタとして動作し、
所望のデータワード量を別のスレーブデバイスに送る
ようにさらに構成される請求項19に記載のスレーブデバイス。
【請求項２５】
前記処理回路が、
前記要求を許可する応答を受信し、
前記制御データバスにスレーブデバイス間通信を送る
ようにさらに構成される請求項17に記載のスレーブデバイス。
【請求項２６】
前記スレーブデバイス間通信が、前記マスタデバイスによって承認される、受け入れられるワード数に限定される請求項17に記載のスレーブデバイス。
【請求項２７】
スレーブデバイス上で動作可能な方法であって、
複数のスレーブデバイスおよび少なくとも1つのマスタデバイスで共有される制御データバスに前記スレーブデバイスを結合するステップと、
前記制御データバスを介して前記スレーブデバイスから前記マスタデバイスにスレーブデバイス間通信要求を送るステップと
を含む方法。
【請求項２８】
前記スレーブデバイス間通信要求が、前記スレーブデバイスによって前記制御データバスを介して別のスレーブデバイスに転送されるべき、要求されるワード数を含む請求項27に記載の方法。
【請求項２９】
前記要求を許可する応答を受信するステップと、
前記制御データバスにスレーブデバイス間通信を送るステップと
をさらに含む請求項27に記載の方法。
【請求項３０】
前記スレーブデバイス間通信が、前記マスタデバイスによって承認される、受け入れられるワード数に限定される請求項29に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本特許出願は、本明細書の譲受人に譲渡され、参照により本明細書に明白に組み込まれる、2013年10月7日出願の「Camera Control Interface Slave Device to Slave Device Communication」という名称の仮出願第61/887895号、および2014年10月6日出願の「Camera Control Interface Slave Device to Slave Device Communication」という名称の非仮出願第14/507179号の優先権を主張する。
【０００２】
本開示は、共有制御データバスを介する動作を可能にすることに関し、より詳細には、マルチワイヤデータおよび/またはクロック制御データバスを介する、あるスレーブデバイスから別のスレーブデバイスへのデータの通信に関する。
【背景技術】
【０００３】
I2C(I2Cとも呼ばれる)は、低速周辺機器をマザーボード、組込みシステム、セルフォン、または他の電子デバイスに接続するために使用されるマルチマスタシリアルシングルエンデッド制御データバス(multi-master serial single-ended control data bus)である。I2C制御データバスは、7ビットアドレッシングを用いるクロック(SCL)およびデータ(SDA)線を含む。制御データバスは、ノードに対して、マスタとスレーブという2つの役割を有する。マスタノードは、クロックを生成し、スレーブノードとの通信を開始するノードである。スレーブノードは、クロックを受信し、マスタによってアドレス指定されたときに応答するノードである。I2C制御データバスはマルチマスタ制御データバスであり、マルチマスタ制御データバスとは、任意の数のマスタノードが存在し得ることを意味する。さらに、マスタとスレーブの役割が、メッセージ間で変更され得る。I2Cは基本タイプのメッセージを定義し、その各々は、STARTで始まり、STOPで終了する。
【０００４】
このカメラ実装の状況においては、センサからイメージを取り込み、そのようなイメージデータをベースバンドプロセッサ内のメモリに送信するために単方向送信が使用され得、一方、ベースバンドプロセッサと、センサならびに他の周辺デバイスとの間で制御データが交換され得る。一例では、ベースバンドプロセッサとイメージセンサ(および/または1つまたは複数のスレーブノード)との間のそのような制御データのために、カメラ制御インターフェース(CCI)プロトコルが使用され得る。一例では、CCIプロトコルが、イメージセンサとベースバンドプロセッサとの間でI2Cシリアル制御データバスを介して実装され得る。
【０００５】
マスタデバイスは、制御データバスへのアクセスを制御する。いくつかのスレーブデバイスは、マスタ動作モードへの切換えの能力を有し得るが、他のスレーブデバイスは、マスタモードで動作することができない。スレーブ専用スレーブデバイスと、マスタ対応スレーブデバイスとの間の1つの主な区別は、割込み要求線(IRQ)上で割込みを受信(たとえば、処理)する能力である。スレーブ専用スレーブデバイスは、割込みを引き起こし/送ることができるが、そのような割込みを処理することができない。したがって、割込み処理は極めて重要であるので、従来のスレーブデバイスは、他のスレーブデバイスと直接的に通信することができない。したがって、マスタデバイスによって制御される、共有データバスを介するスレーブデバイス間(slave device to slave device)通信を可能にすることが望ましいことになる。
【発明の概要】
【課題を解決するための手段】
【０００６】
バスインターフェース回路および処理回路を備えるマスタデバイスが提供される。バスインターフェース回路は、複数のスレーブデバイスと共有される制御データバスに結合する役割を果たし得る。処理回路は、バスインターフェースに結合され、(a)複数のスレーブデバイスによって制御データバスへのアクセスを制御し、かつ/または(b)制御データバスへのアクセスを要求するスレーブデバイスから、スレーブデバイス間通信要求を受信するように構成され得る。
【０００７】
一例では、スレーブデバイス間通信要求は、要求スレーブデバイスによって別のスレーブデバイスに転送されるべき、要求されるワード数を含み得る。
【０００８】
別の例では、スレーブデバイス間通信要求は、制御データバスを介して要求スレーブデバイスから別のスレーブデバイスに転送されるべき、要求される最大ワード数を含み得る。処理回路は、要求スレーブデバイスに、要求を許可する応答を送るようにさらに構成され得る。応答は、要求において指定された最大ワード数以上であるワード限度数を応答内に含めることによって要求を許可する。処理回路は、(a)制御データバスを監視して、スレーブデバイス間通信の終了を検出し、かつ/または(b)スレーブデバイス間通信の終了が検出された後、制御データバスの制御を回復するようにさらに構成され得る。
【０００９】
さらに別の例では、スレーブデバイス間通信要求は、制御データバスを介して要求スレーブデバイスから別のスレーブデバイスに転送されるべき、要求される最大ワード数を含み得る。処理回路は、要求スレーブデバイスに、要求を拒否する応答を送るようにさらに構成され得る。要求される最大ワード数がマスタデバイスの現在のワード限度よりも大きい場合、スレーブデバイス間通信要求は拒否され得る。要求スレーブデバイスによって与えられる、要求される最大ワード数が現在のワード限度よりも大きいとき、処理回路は、要求スレーブデバイスに、受け入れられるワード数を送ることによって要求を拒否する応答を送るようにさらに構成され得る。マスタデバイスがスレーブデバイス間通信をサポートしない場合、マスタデバイスはまた、要求を拒否する応答を送り得る。
【００１０】
(a)複数のスレーブデバイスで共有される制御データバスへのアクセスを制御すること、および/または(b)制御データバスへのアクセスを要求するスレーブデバイスから、スレーブデバイス間通信要求を受信することを含む、マスタデバイスによって動作可能な方法が提供される。スレーブデバイス間通信要求は、制御データバスを介して要求スレーブデバイスから別のスレーブデバイスに転送されるべき、要求される最大ワード数を含み得る。
【００１１】
方法は、(a)要求スレーブデバイスに、要求を許可する応答を送ること、(b)制御データバスを監視してスレーブデバイス間通信の終了を検出すること、および/または(c)スレーブデバイス間通信の終了が検出された後、制御データバスの制御を回復することをさらに含み得る。
【００１２】
方法は、要求スレーブデバイスに、要求を拒否する応答を送ることをさらに含み得る。一例では、要求拒否に応答して、方法は、(a)要求スレーブデバイスと別のスレーブデバイスとの間で一定の量の情報をマスタデバイスに転送させるための要求を要求スレーブデバイスから受信すること、および/または要求スレーブデバイスと別のスレーブデバイスとの間で、要求された情報間のデータを転送することをさらに含み得る。別の例では、要求を拒否する応答は、要求される最大ワード数未満である、受け入れられるワード数を含み得る。
【００１３】
バスインターフェース回路および処理回路を備えるスレーブデバイス。バスインターフェース回路は、複数のスレーブデバイスおよび少なくとも1つのマスタデバイスで共有される制御データバスにスレーブデバイスを結合する働きをし得る。処理回路は、バスインターフェース回路に結合され、制御データバスを介してスレーブデバイスからマスタデバイスにスレーブデバイス間通信要求を送るように構成され得る。通信要求は、スレーブデバイスによって制御データバスを介して別のスレーブデバイスに送信されるべき、要求される最大ワード数を含み得る。
【００１４】
一例では、処理回路は、マスタデバイスから要求を拒否する応答を受信するようにさらに構成され得る。拒否応答は、マスタデバイスから普通なら受け入れられるワード数を含み得る。
【００１５】
拒否応答に対する別の手法では、処理回路は、マスタデバイスに新しいスレーブデバイス間通信要求を送るようにさらに構成され得、新しいスレーブデバイス間通信要求は、受信された受け入れられるワード数以下である、新しい要求される最大ワード数を含む。
【００１６】
拒否応答に対するさらに別の代替手法では、処理回路は、要求スレーブデバイスと別のスレーブデバイスとの間で一定の量の情報をマスタデバイスに転送させるための新しい要求を送るようにさらに構成され得る。
【００１７】
拒否応答に対するさらに別の代替手法では、処理回路は、(a)後で、同一の最大ワード数を有する、同一のスレーブデバイス間通信要求をマスタデバイスに再送し、または(b)要求された前の最大ワード限度未満であるが、初期要求の拒否においてマスタデバイスによって識別される、受け入れられるワード数よりも大きい第2のワード限度を有する、新しいスレーブデバイス間通信要求を送るようにさらに構成され得る。
【００１８】
拒否応答に対するさらに別の代替手法では、処理回路は、(a)要求スレーブデバイスに制御データバスの制御を移転するためにマスタデバイスにマスタ要求を送り、(b)マスタ要求がマスタデバイスによって許可される場合、制御データバスの新しいマスタとして動作し、かつ/または(c)所望のデータワード量を別のスレーブデバイスに送るようにさらに構成され得る。
【００１９】
別の例では、処理回路は、(a)要求を許可する応答を受信し、かつ/または(b)制御データバスにスレーブデバイス間通信を送るようにさらに構成され得る。
【００２０】
スレーブデバイス間通信は、マスタデバイスによって承認される、受け入れられるワード数に限定され得る。
【００２１】
別の態様によれば、(a)複数のスレーブデバイスおよび少なくとも1つのマスタデバイスで共有される制御データバスにスレーブデバイスを結合すること、および/または(b)制御データバスを介してスレーブデバイスからマスタデバイスにスレーブデバイス間通信要求を送ることを含む、スレーブデバイス上で動作可能な方法が提供される。スレーブデバイス間通信要求は、スレーブデバイスによって制御データバスを介して別のスレーブデバイスに転送されるべき、要求されるワード数を含み得る。一例では、方法は、(a)要求を許可する応答を受信すること、および/または(b)制御データバスにスレーブデバイス間通信を送ることをさらに含み得る。スレーブデバイス間通信は、マスタデバイスによって承認される、受け入れられるワード数に限定され得る。
【００２２】
図面とともに読むとき、以下に記載の詳細な説明から、様々な特徴、性質、および利点が明らかとなり得る。図面では、同様の参照符号が全体を通じてそれに対応して識別される。
【図面の簡単な説明】
【００２３】
【図１】ベースバンドプロセッサおよびイメージセンサを有し、イメージデータバスおよびマルチモード制御データバスを実装する例示的デバイスを示すブロック図である。
【図２】例示的スレーブ間通信プロセスを示す図である。
【図３】例示的書込みデータワードを概念的に示す図である。
【図４】送信機においてデータビットをシーケンシャルシンボルにトランスコーディングし、シーケンシャルシンボル内にクロック信号を埋め込むための例示的方法を示すブロック図である。
【図５】遷移数とシーケンシャルシンボルとの間の例示的変換を示す図である。
【図６】送信機におけるビットから遷移数へ、次いで受信機における遷移数からビットへの例示的変換を示す図である。
【図７】{T11,T10,...T2,T1,T0}内の各Tがシンボル遷移数であるとして、三進数(3進数)を二進数に変換する一般的例を示す図である。
【図８】二進数(ビット)を12桁の三進数(3進数)に変換するための例示的方法を示す図である。
【図９】任意の市販の合成ツールによって合成可能であり得る、図8の除算演算および剰余演算の可能な一実装の一例を示す図である。
【図１０】19ビットのデータ領域(たとえば、ビット0〜18)および追加の第20ビットの領域(たとえば、ビット19)を備える20ビットの領域の一例を示す図である。
【図１１】ビット19が数2221_2201_20023から2222_2222_22223についてセットされることに加えて、その範囲の数が6つの区間に細分され得ることを示す図である。
【図１２】図11のビット19のマッピングの一部の例示的マッピングを示す図である。
【図１３】スレーブデバイス間通信のために実施され得る、制御データバスを介する送信のシーケンスを概念的に示す図である。
【図１４】例示的スレーブ間転送要求を概念的に示す図である。
【図１５】スレーブデバイス間通信プロトコルについての許可コマンドを概念的に示す図である。
【図１６】スレーブデバイス間転送についての許可コマンドの詳細を概念的に示す図である。
【図１７】スレーブデバイス間通信のために適合された例示的マスタデバイスを示すブロック図である。
【図１８】スレーブデバイス間通信を可能にするためにマスタデバイス上で動作可能な方法を示す図である。
【図１９】スレーブデバイス間通信のために適合された例示的スレーブデバイスを示すブロック図である。
【図２０】スレーブデバイス間通信を実施するためにスレーブデバイス上で動作可能な方法を示す図である。
【発明を実施するための形態】
【００２４】
以下の説明では、実施形態の完全な理解をもたらすために特定の詳細が与えられる。しかしながら、実施形態はこれらの特定の詳細なしに実施できることは当業者には理解されよう。たとえば、不必要な詳細で実施形態を不明瞭にしないために、回路がブロック図で示されることがある。別の例では、実施形態を不明瞭にしないために、周知の回路、構造、および技法が詳細には示されないことがある。
【００２５】
概要
第1の特徴が、マスタデバイスによって管理される共有制御データバスを介する直接的スレーブデバイス間通信を提供する。第2のスレーブデバイスと通信することを望む第1のスレーブデバイスが、マスタデバイスにスレーブデバイス間通信要求を行い得る。要求は、マスタデバイスによって管理される共有制御データバスを介して第1のスレーブデバイスが第2のスレーブデバイスに送ることを望む、要求されるワード数を含み得る。そのような通信要求は、マスタデバイスを迂回しながら、第1のスレーブデバイスと第2のスレーブデバイスとの間の直接的転送(たとえば、読取りまたは書込み動作)についてのものであり得る(たとえば、転送されるべきデータが、マスタデバイスによって管理または送信されない)。マスタデバイスは、動作パラメータに基づいて変動し得る現在のワード限度を有し得る。たとえば、マスタデバイスは、異なる時にスレーブデバイス間で異なるワード数を通信することを可能にし得る。たとえば、ピーク制御バス使用期間中は、スレーブデバイスは、一度にせいぜい8ワードを使用して互いに通信することに限定され得る。スレーブデバイス間通信が許可されない時があり得る(すなわち、現在のワード限度がゼロであり得る)。さらに、低制御バス使用期間中は、現在のワード限度は、たとえば1024ワードであり得る。したがって、現在のワード限度は、バスを管理するマスタデバイスによって動的に調節され得、制御データバス条件に従って、または任意の他の望ましい理由で、経時的に変化し得る。
【００２６】
ワード限度は動的に変化し得、スレーブデバイスは現在のワード限度が何であるかを知らないことがあるので、第2の特徴が、スレーブデバイスに現在のワード限度を通信することを実現する。たとえば、第2のスレーブデバイスと通信することを望む第1のスレーブデバイスは、第2のスレーブデバイスに通信されるべき所望のワード数を含むスレーブデバイス間通信要求を送る。所望のワード数が現在のワード限度よりも大きいとき、マスタデバイスは、現在のワード限度を含む拒否メッセージを第1のスレーブデバイスに送り、したがってスレーブは、より小さいメッセージを第2のスレーブデバイスに送るように要求することができる。マスタデバイスは、より小さいメッセージを求めるこの要求を受信し、要求を許可するメッセージを第1のスレーブデバイスに送る。次いで第1のスレーブデバイスは、第2のスレーブデバイスにメッセージを送る。マスタデバイスは、第1のスレーブデバイスから第2のスレーブデバイスに送られるメッセージを監視する。第1のスレーブデバイスから第2のスレーブデバイスに送られる「終了」制御コードの検出時に、マスタデバイスは、通信が終了したことを知り、まさにマスタデバイスが第1のスレーブデバイスによる通信要求を許可する前に有していた制御データバスの制御を回復する。さらに、第1のスレーブデバイスが第2のスレーブデバイスと通信している間、マスタデバイスは、IRQ線を継続的に監視し得る。スレーブデバイス間通信中に割込み要求が生じる場合それは、スレーブデバイス間通信が終了した後、処理される。一特徴では、現在のワード限度は、制御データバストラフィックだけでなく、割込み要求の最近の頻度にも基づいて可変である。したがって、比較的高い割込み要求の期間中、現在のワード限度は、比較的低い割込み要求の期間よりも低くなり得る。
【００２７】
スレーブデバイス間通信のための例示的システム
図1は、本明細書で説明されるようにスレーブデバイス間通信がその中で動作可能にされ得る、ベースバンドプロセッサ104およびイメージセンサ106を有し、イメージデータバス116およびマルチモード制御データバス108を実装するデバイス102を示すブロック図である。図1はカメラデバイス内のマルチモード制御データバス108を示すが、この制御データバス108は様々な異なるデバイスおよび/またはシステムで実装され得ることは明らかなはずである。イメージデータが、イメージデータバス116(たとえば、高速ディファレンシャルDPHYリンク)を介してイメージセンサ106からベースバンドプロセッサ104に送られ得る。一例では、制御データバス108は、クロック線(SCL)およびシリアルデータ線(SDA)という2つのワイヤを備えるI2C制御データバスであり得る。クロック線SCLは、I2Cバス(制御データバス108)を介してすべてのデータ転送を同期するために使用され得る。データ線SDAおよびクロック線SCLは、I2Cバス(制御データバス108)上のすべてのデバイス112、114、および118に結合される。この例では、制御データが、制御データバス108を介して、ベースバンドプロセッサ104と、イメージセンサ106ならびに他の周辺デバイス118との間で交換され得る。いくつかの実装では、I2C制御データバスを介する動作モードは、カメラ応用例について使用されるとき、カメラ制御インターフェース(CCI)モードと呼ばれることがある。
【００２８】
一態様によれば、カメラ動作をサポートするために、改良型動作モードがマルチモード制御データバス108を介して実装され得る。I2C制御データバスを介するこの改良型動作モードは、カメラ応用例について使用されるとき、カメラ制御インターフェース拡張(CCIe)モードと呼ばれることがある。この例では、ベースバンドプロセッサ104はマスタデバイス112を含み、イメージセンサ106はスレーブデバイス114を含み、マスタデバイス112とスレーブデバイス114の両方は、制御データバス108に結合された他のレガシーI2Cデバイスの適切な動作に影響を及ぼすことなく、制御データバス108を介してカメラ制御インターフェース拡張(CCIe)モードに従って動作し得る。一態様によれば、制御データバス108を介するこの改良型モードは、CCIeデバイスと任意のレガシーI2Cスレーブデバイスとの間のどんなブリッジデバイスも用いずに実装され得る。割込み要求(IRQ)線/バス120は、スレーブデバイス114および118をマスタデバイス112に結合し、スレーブデバイス114および118は注意が必要であることをスレーブデバイスがマスタデバイス112に通知することを可能にする。言い換えれば、注意を要求するスレーブデバイスは、通常は高のIRQ線を低にプルし(IRQ線120を接地し)、マスタデバイスは、第1に、どのスレーブデバイスが割込みを要求したかを識別し、第2に、IRQステータスを求めてスレーブにポーリングすることによって応答する。たとえば、ステータスは、スレーブデバイス間通信を実施するための要求であり得る。
【００２９】
図2は、例示的スレーブデバイス間通信プロセスを示す。図1と同様に、デバイスは、共有制御データバス202(たとえば、CCIeバス)を含み、複数のデバイスが結合され得る単線割込みバス204を分離し得る。この例では、アクティブ/現在のマスタデバイス206が、1つまたは複数の他のデバイス(たとえば、非アクティブマスタデバイスおよび/またはスレーブデバイス)による制御データバス202へのアクセスを制御/管理し得る。
【００３０】
第1のステージ210において、第1のスレーブデバイス208が、第2のスレーブデバイス216との通信を開始することを望み得る。これを行うために、第1のスレーブデバイスは、割込みバス204を介して割込み信号218を発行し/送り得る。割込みバス204は、割込みバス204に結合された任意のデバイスが、他のデバイスがすでに割込み信号をアサートしていない限り、割込みバス204を介して割込み信号を単方向に発行することを可能にし得る。割込み要求信号218を感知または受信したことに応答して、マスタデバイス206は、要求スレーブデバイス(たとえば、割込み信号218を発行したデバイス)を確認しようと試み得る。このことは、マスタデバイス206が各スレーブデバイスにそのステータスを提供するようにポーリングまたは要求する(220)ことによって達成され得る。一例では、このことは、割込み信号218を発行した第1のスレーブデバイス208が識別されるまで、マスタデバイス206が制御データバス202に結合された各デバイスにステータスを要求する(220)ことによって行われ得る。
【００３１】
第2のステージ212において、ステータス要求220を受信したことに応答して、第1のスレーブデバイス208は、第1のスレーブデバイス208が割込み218を発行したこと、および/または第1のスレーブデバイス208がスレーブデバイス間転送/通信を実施することを望むことを示す、第1のスレーブデバイス208のステータス222を送り得る。そのようなスレーブデバイス間通信要求は、マスタデバイス206を迂回しながら、第1のスレーブデバイス208と第2のスレーブデバイス216との間の直接的データ転送(たとえば、読取りまたは書込み動作)についてのものであり得る(たとえば、転送されるべきデータが、マスタデバイスによって管理または送信されない)。一例では、ステータス222は、マスタデバイス206が第1のスレーブデバイス208についてのステータスレジスタ内の情報を読み取ることによって取得され得る。
【００３２】
第1のスレーブデバイス208を割込み信号の発行側と識別し、所望のサービス(たとえば、スレーブ間通信のための制御データバス202の使用)を確認したとき、マスタデバイス206は、割込みバス204を介して許可標識224を送ることによってそのような要求を許可し得る。この時点では、第1のスレーブデバイス208には、別のスレーブデバイス216とのそれ自体の通信のために制御データバス202を使用するための限定された許可が与えられている。マスタデバイス206は、制御データバス202に結合されたすべてのデバイスによる制御データバス202の使用を制御または管理するので、別のデバイスによる制御データバス202の使用が競合する機会はないことに留意されたい。一例では、第1のスレーブデバイス208は、所定のデータワード数を送り、または受信するために制御データバス202の使用が許可される。スレーブデバイス間通信要求の使用は、制御データバス202の制御を第1のスレーブに移転することとは異なるものである。
【００３３】
第3のステージ214において、第1のスレーブデバイス208は、マスタデバイス206がその要求を許可したことを認識し、スレーブ間転送または通信224を実施し得る。スレーブ間転送または通信224は、第2のスレーブデバイス216からデータを読み取り、第2のスレーブデバイス216にデータを送り得る。所定のデータワード数が制御データバス202を介して送られた後、マスタデバイスは、制御データバス202の制御および使用を回復し得る。所定のデータワード数を送り、かつ/または受信した後、第1のスレーブデバイス208は、制御データバス202を介する送信を停止する。
【００３４】
スレーブデバイス間通信をサポートする例示的通信プロトコル
図3は、例示的書込みデータワードフォーマットを示す。これは、各データワード300が16ビットのデータ部分302、2ビットの制御コード304、1ビットの誤り検出定数310、および予備ビット306を含むことを示す。16ビットのデータ部分302は、14ビットの最下位ビット部分312(データワード300のビット5から18に位置する)と、2ビットの最上位ビット部分308(データワード300のビット1から2に位置する)とにセグメント化され得る。1ビットの誤り検出定数310は、値が予想される定数(たとえば、「0」)以外の何かである場合、データワード300上の誤りを検出する働きをし得る。一例では、書込みデータワード300はCCIe書込みデータワードであり得る。
【００３５】
制御コードテーブル314は、制御コード304についての様々な可能な値を示す。一例では、複数の書込みデータワードが順次送られ得る。現在の書込みワードの制御コードが「00」(シンボルC0)である場合、データが前のアドレスに書き込まれるべきである。現在の書込みワードの制御コードが「01」(シンボルC1)である場合、データが前のアドレス+1に書き込まれるべきである。現在の書込みワードの制御コードが「10」(シンボルE)である場合、これはフレームの終了を示し、次のワードがスレーブデバイス識別子(SID)またはExitコードであり得る。
【００３６】
データワード300はまた、マスタデバイスと1つまたは複数のスレーブデバイスとの間でコマンドおよび他の情報を送信するために使用され得る予備ビット306(たとえば、第20のビットとも呼ばれるビット19)をも有し得る。予備ビット306(たとえば、ビット19)は、制御データバス108に結合されたデバイス間のコマンドを符号化するために使用され得る。この予備ビット306(たとえば、第20のビットとも呼ばれるビット19)の使用によって定義され得る予備ビットのデータ領域が、図10、図11、および図12にさらに図示され、論じられる。
【００３７】
図4は、送信機においてデータビットをシーケンシャルシンボルにトランスコーディングし、シーケンシャルシンボル内にクロック信号を埋め込むための例示的方法を示すブロック図である。送信機402において、データビット404のシーケンスが三進(3進)数(たとえば、三進数の個々の桁が「遷移数」である)に変換され、三進数がシーケンシャルシンボルに変換され、シーケンシャルシンボルが、クロック線SCL412およびデータ線SDA414を含む制御データバスを介して送信される。
【００３８】
一例では、バイナリデータの元の20ビット404がビット-遷移数変換器ブロック408に入力され、12桁の三進数409に変換される。12桁の三進数の各桁は「遷移数」を表し得る。遷移数の2つの連続する桁は、同一の桁の値であり得る。遷移数の各桁は、2つの連続するシーケンシャルシンボルが同一の値を有さないように、遷移-シンボルブロック410においてシーケンシャルシンボルに変換される。遷移(たとえば、変更)がシーケンシャルシンボルごとに保証されるので、そのようなシーケンシャルシンボル遷移は、クロック信号を埋め込む働きをし得る。次いで、各シーケンシャルシンボル416が、2つのワイヤ物理リンク(たとえば、SCL線412およびSDA線414を備えるI2C制御データバス)を介して送られる。
【００３９】
受信機420において、プロセスが、シーケンシャルシンボルを再びビットに変換するように反転され、プロセスでは、クロック信号が、シーケンシャルシンボル遷移から抽出される。受信機420は、2つのワイヤ物理リンク(たとえば、SCL線424およびSDA線426を備えるI2C制御データバス)を介してシーケンシャルシンボル422を受信する。受信されたシーケンシャルシンボル422がクロックデータリカバリ(CDR)ブロック428に入力され、クロックタイミングが回復され、シーケンシャルシンボル(S)がサンプリングされる。次いでシンボル-遷移数変換器ブロック430は、各シーケンシャルシンボルを遷移数に変換し、各遷移数は三進数の桁を表す。次いで、遷移数-ビット変換器432が、12個の遷移数(すなわち、三進数)を変換して、12桁の三進数から元のデータの20ビットを復元する。
【００４０】
本明細書で示される技法は、I2C標準制御データバスが提供し、本明細書でCCIeモードと呼ばれるものを超えて、制御データバス108(図1)のリンクレートを増大させるために使用され得る。一例では、制御データバス108に結合されるマスタノード/デバイスおよび/またはスレーブノード/デバイスは、標準I2C制御データバスを使用して可能なビットレートよりも、同一の制御データバスを介する高いビットレートを達成するために、(図5に示されるように)シーケンシャルシンボル変更/遷移内にクロック信号を埋め込む送信機および/または受信機を実装し得る。
【００４１】
図5は、遷移数502とシーケンシャルシンボル504との間の例示的変換を示す。遷移数とも呼ばれる、三進数、または3進数の個々の桁は、3つのあり得る桁または状態0、1、または2のうちの1つを有し得る。同一の桁が三進数の2つの連続する桁に出現し得るが、2つの連続するシーケンシャルシンボルは同一の値を有さない。遷移数とシーケンシャルシンボルとの間の変換は、連続する遷移数が同一である場合であっても、シーケンシャルシンボルが(シーケンシャルシンボルごとに)常に変化することを保証する。
【００４２】
一例では、変換機能は、遷移数(たとえば、三進数の桁)プラス1を前のローシーケンシャルシンボル値に加算する。加算の結果、3よりも大きい数となった場合、それは0からロールオーバし、次いで結果は、現在のシーケンシャルシンボルについての状態数または値となる。
【００４３】
第1のサイクル506では、第1の遷移数(Ta)1が入力されるとき、前のシーケンシャルシンボル(Ps)は1であり、したがって第1の遷移数1プラス1が前のシーケンシャルシンボル(Ps)に加算され、得られる現在のシーケンシャルシンボル(Cs)3が、物理リンクに送られる現在のシーケンシャルシンボルとなる。
【００４４】
第2の(次の)サイクル508では、第2の遷移数(Tb)0が入力され、第2の遷移数0プラス1が前のシーケンシャルシンボル(Ps)3に加算される。加算の結果(0+1+3)が4に等しく、3よりも大きいので、ロールオーバされた数0が現在のシーケンシャルシンボル(Cs)となる。
【００４５】
第3のサイクル510では、第3の遷移数(Tc)0が入力される。変換ロジックは、第3の遷移数0プラス1を前のシーケンシャルシンボル(Ps)0に加算し、現在のシーケンシャルシンボル(Cs)1を生成する。
【００４６】
第4のサイクル512では、第4の遷移数(Td)2が入力される。変換ロジックは、第4の遷移数(Td)2プラス1を前のシンボル(Ps)1に加算し、現在のシーケンシャルシンボル(Cs)0を生成する(加算の結果4は3よりも大きいので、ロールオーバされた数0が現在のシーケンシャルシンボルとなる)。
【００４７】
したがって、2つの連続する三進数の桁TbおよびTcが同一の数値を有する場合であっても、この変換は、2つの連続するシーケンシャルシンボルが異なる状態値を有することを保証する。この変換のために、シンボルのシーケンス504内の保証されたシーケンシャルシンボル変更または遷移は、クロック信号を埋め込む働きをし得、それによってデータ送信のためのI2C制御データバス内のクロック線SCLを解放する。
【００４８】
この遷移数-シーケンシャル数変換の例は、連続するシーケンシャルシンボル間を増分するために、保証された数「1」を加算するが、他の実装では、シーケンシャルシンボル間の遷移または変更を保証するために他の値が使用され得ることに留意されたい。
【００４９】
図4を再び参照すると、受信機420において、図5に示されるプロセスが、シーケンシャルシンボルを再びビットに変換するように反転され、プロセスでは、クロック信号が、シンボル遷移から抽出される。受信機420は、2つのワイヤ物理リンク(たとえば、SCL線424およびSDA線426を備えるI2Cバス)を介してシーケンシャルシンボル422を受信する。受信されたシーケンシャルシンボル422がクロックデータリカバリ(CDR)ブロック428に入力され、クロックタイミングが回復され、トランスコーディングされたシンボル(S)がサンプリングされる。次いでシンボル-遷移数変換器ブロック430は、各シーケンシャルシンボルを遷移数に変換し、すなわち遷移数は三進数内の桁を構成する。次いで、遷移数-ビット変換器432は、12個の遷移数(すなわち、三進数)を変換して、12桁の三進数から元のデータの20ビットを復元する。
【００５０】
図6は、送信機602におけるビットから遷移数へ、次いで受信機604における遷移数からビットへの例示的変換を示す。この例は、12個の遷移シンボルを使用する2ワイヤシステムについての送信を示す。送信機602はバイナリ情報Bitを「Bit-12×T」変換器606に送り、12個のシンボル遷移数T0からT11を生成する。受信機604は、12個のシンボル遷移数T0からT11を受信し、それが「12×T-Bit」変換器608に送られ、バイナリ情報(Bit)が取り出される。T0からT11の1つのT当たりr個の可能なシンボル遷移状態がある場合、12個の遷移がr12個の異なる状態を送り得る。2ワイヤバスでは、r=22-1である。したがって、遷移T0...T11は、(22-1)12個の異なる状態を有し得るデータを含む。したがって、r=4-1=3および状態数=(4-1)^12=531441である。
【００５１】
12個のシンボル遷移数を使用する2ワイヤシステムについてのこの例では、1つのT当たりの可能なシンボル遷移rは3(=22-1)であると仮定され得る。グループ内のシンボル数が12である場合、各Ti:0、1、2として、12桁の三進数(3進数):T11、T10、...、T2、T1、T0が使用され得る。たとえば、{T11,T10,...T2,T1,T0}={2,1,0,0,1,1,0,1,0,1,2,1}では、三進数は、
2100_1101_01213(三進数)
=2×311+1×310+0×39+0×38
+1×37+1×36+0×35+1×34
+0×33+1×32+2×31+1×30
=416356(0x65A64)。
【００５２】
このようにして、12個の遷移数が数に変換され得る。たとえば図4で、三進数2100_1101_01213が遷移数として使用され得、したがって各遷移数(たとえば、三進数の桁)がシーケンシャルシンボルにマッピングされ得、逆も同様であることに留意されたい。
【００５３】
2ワイヤシステムおよび12個のシンボル遷移数について図6で示される例は、nワイヤシステムおよびm個のシンボル遷移数に一般化され得る。T0からTm-1の1つのT当たりr個の可能なシンボル遷移状態がある場合、m個の遷移がrm個の異なる状態を送り得、すなわちr=2n-1である。したがって、遷移数T0...Tm-1は、(2n-1)m個の異なる状態(たとえば、シーケンシャル数)を有し得るデータを含む。
【００５４】
図7は、{T11,T10,...T2,T1,T0}内の各Tが遷移数であるとして、三進数(3進数)を二進数に変換する一般的な例を示す。
【００５５】
図8は、二進数(ビット)を12桁の三進数(3進数)に変換するための例示的方法を示す。三進数の各桁は、上位桁の計算からの剰余(剰余演算の結果)を3の桁数のべき乗で除算し、小数点数を無視することによって計算され得る。
【００５６】
図9は、任意の市販の合成ツールによって合成可能であり得る、図8の除算演算および剰余演算の可能な一実装の一例を示す。
【００５７】
図10は、ビット19(第20のビットまたは図3の「予備ビット」306)がCCIeプロトコルではほとんど未使用であり、スレーブデバイス間通信を動作可能にするために使用され得ることを概念的に示す。より具体的には、図10は、ビット19(すなわち、ビットカウントがビット0である第1のビットで開始するとき、第20のビット)を示す。言い換えれば、計算機科学では典型的なように、ビットでカウントすることはゼロから始まり、ビット19が第20のビットとなる。ここで、ビット0〜18は、0000_0000_00003から2221_2201_20013の三進数範囲内で表現される。2221_2201_20023から2222_2222_22223の範囲の三進数は未使用である。したがって、三進数範囲2221_2201_20023から2222_2222_22223が、ビット19(すなわち、第20のビット)を表現するために使用され得る。言い換えれば、2221_2201_20023 三進数は、10,000,000,000,000,000,000 二進数(0x80000 十六進数)であり、2222_2222_22223 三進数(0x81BF0)が、可能な最大の12桁の三進数である。スレーブデバイス間通信の一実装では、本明細書で説明されるように第20のビット(ビット19)が利用される。
【００５８】
図11は、三進数0000_0000_00003から2222_2222_22223についてのCCIeのビット19のマッピングプロトコルを概念的に示す。異なるタイプのコマンドがビット19の領域(たとえば、第20のビット)内に符号化され得ることに留意されたい。
【００５９】
図12は、図11のビット19のマッピングの一部の例示的マッピングを示す。
【００６０】
図13は、スレーブデバイス間通信のために実施され得る、制御データバスを介する送信のシーケンスを概念的に示す。この例では、スレーブデバイス間通信プロトコルは、2222_2112_11223から2222_2202_21203の範囲を利用する。スレーブデバイスは、別々の割込みバス/線を介してマスタデバイスに割込み信号を送り得る。そのような割込み信号1301に応答して、マスタデバイスは、制御データバスを介してIRQ照会1303を開始し/送り得、IRQ照会1303は、要求スレーブデバイス(S1)に応答させる(1304)。次いでマスタデバイスは、スレーブ間通信要求1306が示される、要求スレーブデバイス(S1)のステータス1305を読み取り得る。このスレーブ間通信要求1306は、別のスレーブデバイスへの要求される送信についてのワードの上限(最大限度)を含み得る。ワード数は、単にメッセージのデータ部分ではなく、むしろ、スレーブ識別子(SID)、周期的冗長検査あるいはチェックサム(CRC)、および/または同期(SYNC)情報などのすべてのオーバヘッドおよび/またはエンベロープ情報を含む、スレーブデバイス間で送信されるべきワード数全体を含み得る。マスタデバイスは、スレーブデバイスの要求を許可した(1308)後、次いで、スレーブデバイスの送信1310を監視し、終了コードが送信側スレーブデバイスから送られた後、マスタデバイスは、制御データバスを介する制御を再開する。言い換えれば、マスタデバイスは、要求を送ったスレーブデバイスに、要求が許可されることを通知した後、制御データバスを監視して、許可されたアクセスの終了を検出する。このスレーブ間送信フレーム1310の間、要求スレーブデバイスは、書込みコマンド1312および/または読取りコマンド1314を別のスレーブデバイスに送り得ることに留意されたい。
【００６１】
図14は、例示的スレーブ間転送要求を概念的に示す。この例示的スレーブ間転送要求1403は、図11および図12に示されるビット19のマッピングの一部1402とともに埋め込まれ得る(たとえば、2222_2112_11223から2222_2202_21203の範囲を利用する)。スレーブ間転送要求1403の一例が、第1のビットシーケンス1404によって、2つのテーブル1406および1408とともに定義される。このスレーブ間転送要求1403は、スレーブ間転送中に制御データバスを介して送信されるべきワード数1408を含み得る。
【００６２】
図15は、スレーブデバイス間通信プロトコルについての許可コマンドを概念的に示す。この例では、スレーブデバイス間通信プロトコル1502は、要求許可および/または拒否を送る際に2222_2112_11223から2222_2202_21203までの範囲を利用する。マスタデバイスは、スレーブデバイスからマスタデバイスに元々送られたスレーブデバイス間通信要求内の同一のワード限度数を含むメッセージを要求スレーブデバイスに返すことによって、スレーブデバイス間通信要求を許可する。あるいは、マスタデバイスは、要求された数よりも小さいワード限度数を返し、スレーブデバイスは、それを元の要求の拒否および新しいワード限度の提供であると理解する。新しい(すなわち、現在の)ワード限度がゼロであるとき、スレーブデバイスは、スレーブデバイス間通信が現在は動作不能にされていることを知り、第2の要求を行う前に事前プログラミングされた時間量だけ待機する。そうではなく、返された現在のワード限度が非ゼロである場合、スレーブデバイスは、元の長過ぎるメッセージを、返された現在のワード限度以下の複数のメッセージに分割する。さらに、いくつかの実施形態では、1つまたは複数のスレーブデバイスは、エネルギーを節約するためのスリープモードを有し得、スレーブデバイス間通信の所期の受信側がスリープモードにあるとき、マスタデバイスは、要求スレーブデバイスの通信要求を許可する前に、スリープ中のスレーブデバイスをウェイクアップし得る。あるいは、マスタデバイスは、現在のワード限度ゼロを送ることによって要求スレーブデバイスの通信要求をまず拒否し得、次いでスリープ中のスレーブをウェイクアップする。事前プログラムされた期間の後、拒否されたスレーブデバイスは、マスタデバイスがその時は許可し得る第2の要求を開始する。
【００６３】
スレーブ間転送許可1503の一例が、第1のビットシーケンス1504によって、2つの表1506および1508とともに定義される。このスレーブ間転送許可1503は、スレーブ間転送中に制御データバスを介して送信されるべきワード数1508を含み得る。
【００６４】
図16は、スレーブデバイス間転送についての許可コマンドの詳細を概念的に示す。この例では、マスタデバイスは、要求スレーブデバイスの識別子(SID)および余分なワード1606を含むフレーム1602を送り得る。「アドレス」フィールドの部分として、マスタデバイスは、スレーブデバイス間許可1608を提供し得る。
【００６５】
例示的マスタデバイスおよびその中で動作可能な方法
図17は、スレーブデバイス間通信のために適合された例示的マスタデバイスを示すブロック図である。マスタデバイス1702は、第1の通信インターフェース/回路1706、第2の通信インターフェース/回路1708、および/または処理回路1704を含み得る。第1の通信インターフェース/回路1706は、複数の他のデバイスが結合され得る単線割込み要求(IRQ)バスに結合する働きをし得る。第2の通信インターフェース/回路1708は、複数の他のデバイスも結合され得る制御データバスに結合する働きをし得る。
【００６６】
処理回路1704は、本明細書で説明される1つまたは複数の機能を実施するための様々なサブ回路および/またはモジュールを含み得る。たとえば、通信管理回路/モジュール1710は、IRQバスを介してアサートされる割込み信号に基づいて、制御データバスに結合されたすべてのデバイスについてのデータバスを介する通信を管理するように適合され得る。IRQバス監視回路/モジュール1712は、いつIRQ信号が(たとえば、スレーブデバイスによって)アサートされたかを確認するために、IRQバスを監視するように適合され得る。スレーブ間通信許可/拒否回路/モジュール1714は、スレーブデバイスによる、制御データバスを介して別のスレーブデバイスと直接的に通信するための要求に応答(たとえば、許可または拒否)するように適合され得る。データバス監視回路/モジュール1716は、いつスレーブ間通信が終了したかを確認するために、マスタデバイスが制御データバスを監視することを可能にするように適合され得る。
【００６７】
図18は、スレーブデバイス間通信を可能にためにマスタデバイス上で動作可能な方法1800を示す。方法1800は、マスタデバイスに、複数のスレーブデバイスで共有される制御データバスへのアクセスを制御/管理させることを含む(1802)。マスタデバイスは、制御データバスへのアクセスを要求するスレーブデバイスから、スレーブデバイス間通信/転送要求を受信し得る(1804)。スレーブデバイス間通信/転送要求は、要求スレーブデバイスが制御データバスを介して送信することを望む最大ワード数を含み得る。そのような要求に応答して、要求される最大ワード数が現在の最大ワード限度よりも大きいとき、マスタデバイスは、受け入れられる最大ワード数を送ることによって、要求を拒否する応答を要求スレーブデバイスに送り得る(1806)。たとえば、受け入れられるワード数は、(マスタデバイスによって維持される)現在の最大ワード限度に等しく、かつ/または要求される最大ワード数未満の数であり得る。あるいは、マスタデバイスは、要求スレーブデバイスに、要求を許可する応答を送り得る(1808)。さらに、マスタデバイスは、要求スレーブデバイスへの許可したアクセスの終了を検出するために、制御データバスを監視し得る(1810)。共有制御バスを介するスレーブデバイス間通信の終了の検出時に、マスタデバイスは、制御データバスの制御を回復し得る。
【００６８】
一例では、マスタデバイスからの応答は、要求において指定された最大ワード数以上であるワード限度数を応答内に含めることによって要求を許可する。すなわち、応答が、要求スレーブデバイスによって指定される、要求される最大ワード数に合致し、または要求される最大ワード数よりも大きいワード限度数を含む場合、要求スレーブデバイスは、これを要求の許可と認識し得る。
【００６９】
別の態様によれば、マスタデバイスがスレーブデバイス間通信をサポートしない場合、マスタデバイスは、その応答においてワード限度数ゼロ(0)で要求に応答する。したがって、マスタデバイスが(たとえば、プロトコル規格によって)スレーブデバイス間通信要求に応答するように要求され得る場合、しかしマスタデバイスは、ワード限度数ゼロ(0)を含めることによって要求を拒否し得る。この理由で、スレーブデバイス間通信をサポートするマスタデバイスが、その応答において非ゼロワード限度数で応答することが望ましいことがある。
【００７０】
一態様によれば、マスタデバイスがスレーブデバイス間通信要求を拒否する場合、スレーブデバイスは、ある時間量だけ待機し得、次いで、制御データバスを介してマスタデバイスに同一のスレーブデバイス間通信要求(たとえば、転送されるべき同一の所望のワード数)を再送する。元の拒否がビジー制御データバスのためであったことがあり得、したがって、後で再試行した結果、要求が許可され得ることに留意されたい。さらに、スレーブデバイスは、断念する前に、同一の要求を送ることを何回か再試行し得る。
【００７１】
別の態様によれば、マスタデバイスがスレーブデバイス間通信要求を拒否する場合、スレーブデバイスは、要求を再送し得るが、要求スレーブデバイスによって制御データバスを介して転送されるべき、より小さい最大ワード数で再送し得る。いくつかの実装では、スレーブデバイスは、マスタデバイスによって許可される最大ワード数よりも大きいデータ転送を複数のスレーブデバイス間通信要求に分割し得る。
【００７２】
代替手法では、マスタデバイスがスレーブデバイス間通信要求を拒否するが、スレーブデバイスがデータ転送を複数の部分に分割することができない場合、スレーブデバイスは、要求スレーブデバイスと別のスレーブデバイスとの間のデータ転送を引き継ぐようにマスタデバイスに要求し得る。
【００７３】
例示的スレーブデバイスおよびその中で動作可能な方法
図19は、スレーブデバイス間通信を実施するように適合された例示的スレーブデバイスを示すブロック図である。スレーブデバイス1902は、第1の通信インターフェース/回路1906、第2の通信インターフェース/回路1908、および/または処理回路1904を含み得る。第1の通信インターフェース/回路1906は、複数の他のデバイスが結合され得る単線割込み要求(IRQ)バスに結合する働きをし得る。第2の通信インターフェース/回路1908は、複数の他のデバイスも結合され得る制御データバスに結合する働きをし得る。
【００７４】
処理回路1904は、本明細書で説明される1つまたは複数の機能を実施するための様々なサブ回路および/またはモジュールを含み得る。たとえば、割込み(IRQ)ジェネレータ回路/モジュール1910は、割込みバスを介して割込み要求を生成するように適合され得る。スレーブ間通信要求回路/モジュール1912は、別のスレーブデバイスと直接的にスレーブ間通信を実施するために、マスタデバイスに制御データバスの使用を要求するように適合され得る。スレーブ間通信送信回路/モジュール1914は、制御データバスを介してスレーブ間通信を送るように適合され得る。
【００７５】
図20は、スレーブデバイス間通信を実施するためにスレーブデバイス上で動作可能な方法2000を示す。方法2000は、複数のスレーブデバイスで共有され、マスタデバイスによって管理される制御データバスにスレーブデバイスを結合することを含む(2002)。スレーブデバイスは、制御データバスを介してマスタデバイスにスレーブデバイス間通信要求を送り得る(2004)。要求に応答して、スレーブデバイスは、マスタデバイスから、普通なら受け入れられる最大ワード数を含む、要求を拒否する応答を受信し得る(2006)。要求が当初拒否される場合、スレーブデバイスは、単に時間量だけ待機し、同一の初期要求を再送し得る。あるいは、スレーブデバイスは、受信した受け入れられる最大ワード数以下の、要求される最大ワード数を含む新しいスレーブデバイス間通信要求をマスタデバイスに送り得る(2008)。
【００７６】
スレーブデバイスは、マスタデバイスから、要求を許可する応答を受信し得る(2010)。マスタデバイスから許可応答を受信したとき、スレーブデバイスは、多くても要求ワード数で、制御データバスを介して第2のスレーブデバイスに情報を送信し得る(2012)。
【００７７】
一態様によれば、マスタデバイスがスレーブデバイス間通信要求を拒否する場合、スレーブデバイスは、ある時間量だけ待機し得、次いで、制御データバスを介してマスタデバイスに同一のスレーブデバイス間通信要求(たとえば、転送されるべき同一の所望のワード数)を再送する。元の拒否がビジー制御データバスのためであったことがあり得、したがって、後で再試行した結果、要求が許可され得ることに留意されたい。さらに、スレーブデバイスは、断念する前に、同一の要求を送ることを何回か再試行し得る。
【００７８】
別の態様によれば、マスタデバイスがスレーブデバイス間通信要求を拒否する場合、スレーブデバイスは、要求を再送し得るが、要求スレーブデバイスによって制御データバスを介して転送されるべき、より小さい最大ワード数で再送し得る。いくつかの実装では、スレーブデバイスは、マスタデバイスによって許可される最大ワード数よりも大きいデータ転送を複数のスレーブデバイス間通信要求に分割し得る。
【００７９】
代替手法では、マスタデバイスがスレーブデバイス間通信要求を拒否するが、スレーブデバイスがデータ転送を複数の部分に分割することができない場合、スレーブデバイスは、要求スレーブデバイスと別のスレーブデバイスとの間のデータ転送を引き継ぐようにマスタデバイスに要求し得る。
【００８０】
さらに別の手法では、マスタデバイスがスレーブデバイス間通信要求を拒否し、要求スレーブデバイスがマスタモードまたはスレーブモードのどちらかで動作することができる場合、要求スレーブデバイスは、所望のワード数を転送するために、共有制御データバスのマスタとなるように要求し得る。
【００８１】
図で示される構成要素、ステップ、特徴、および/または機能のうちの1つまたは複数は、再構成され、かつ/または単一の構成要素、ステップ、特徴、または機能に組み合わされ、もしくはいくつかの構成要素、ステップ、または機能で実施され得る。本明細書で開示される新規な特徴から逸脱することなく、追加の要素、構成要素、ステップ、および/または機能も追加され得る。図に示される装置、デバイス、および/または構成要素は、図で説明される方法、特徴、またはステップのうちの1つまたは複数を実施するように構成され得る。本明細書で説明される新規なアルゴリズムはまた、ソフトウェアで効率的に実装され、かつ/またはハードウェアに組み込まれ得る。
【００８２】
さらに、フローチャート、流れ図、構造図、またはブロック図として図示されるプロセスとして実施形態が説明され得ることに留意されたい。フローチャートは動作を順次プロセスとして説明するが、動作の多くは並列または同時に実施され得る。さらに、動作の順序は再構成され得る。プロセスは、その動作が完了するときに終了する。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが機能に対応するとき、その終了は、呼出し側機能またはメイン機能への機能の戻りに対応する。
【００８３】
さらに、記憶媒体は、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および/または情報を記憶するための他の機械可読媒体を含む、データを記憶するための1つまたは複数のデバイスを表し得る。「機械可読媒体」という用語は、限定はしないが、ポータブルまたは固定記憶デバイス、光記憶デバイス、ワイヤレスチャネル、ならびに命令および/またはデータを記憶、収容、または搬送することのできる様々な他の媒体を含む。
【００８４】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはそれらの任意の組合せによって実装され得る。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装されるとき、必要なタスクを実施するためのプログラムコードまたはコードセグメントが、記憶媒体や他のストレージなどの機械可読媒体内に記憶され得る。プロセッサは、必要なタスクを実施し得る。コードセグメントは、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、あるいは命令、データ構造、またはプログラムステートメントの任意の組合せを表し得る。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡し、かつ/または受信することによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む任意の適切な手段を介して渡され、転送され、または送信される。
【００８５】
本明細書で開示される例とともに説明される様々な例示的論理ブロック、モジュール、回路、要素、および/または構成要素は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他のプログラマブル論理構成要素、ディスクリートゲートまたはトランジスタロジック、ディスクリートハードウェア構成要素、または本明細書で説明される機能を実施するために設計されるそれらの任意の組合せで実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替実施形態では、プロセッサは、任意の従来型プロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティング構成要素の組合せ、たとえばDSPとマイクロプロセッサの組合せ、いくつかのマイクロプロセッサ、1つまたは複数のマイクロプロセッサとDSPコア、あるいは任意の他のそのような構成として実装され得る。
【００８６】
本明細書で開示される例に関連して説明される方法またはアルゴリズムは、ハードウェアで直接的に、プロセッサによって実行可能なソフトウェアモジュールで、あるいは処理装置、プログラミング命令、または他の指示の形態の、両者の組合せで実施され得、単一のデバイス内に収容され、または複数のデバイスにわたって分散され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取外し可能ディスク、CD-ROM、または当技術分野で周知の任意の他の形態の記憶媒体内に常駐し得る。記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合され得る。代替実施形態では、記憶媒体はプロセッサと一体であり得る。
【００８７】
本明細書で開示される実施形態に関連して説明される様々な例示的論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、または両者の組合せとして実装され得ることを当業者はさらに理解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的構成要素、ブロック、モジュール、回路、およびステップが、上記ではその機能に関して一般的に説明された。そのような機能がハードウェアとして実装されるか、それともソフトウェアとして実装されるかは、特定の応用例およびシステム全体に対して課される設計制限に依存する。
【００８８】
本明細書で説明される本発明の様々な特徴は、本発明から逸脱することなく、異なるシステムで実装され得る。上記の実施形態は単に例であり、本発明を限定すると解釈されるべきではないことに留意されたい。実施形態の説明は例示的なものであり、特許請求の範囲を限定するものではない。したがって、この教示は、他のタイプの装置に容易に適用され得、多くの代替実施形態、修正形態、および変形形態が当業者には明らかであろう。
【符号の説明】
【００８９】
102  デバイス
104  ベースバンドプロセッサ
106  イメージセンサ
108  マルチモード制御データバス
112  マスタデバイス
114  スレーブデバイス
116  イメージデータバス
118  周辺デバイス
120  割込み要求(IRQ)線/バス
202  共有制御データバス
204  単線割込みバス
206  マスタデバイス
208  第1のスレーブデバイス
216  第2のスレーブデバイス
218  割込み信号
222  ステータス
300  データワード
302  16ビットのデータ部分
304  2ビットの制御コード
306  予備ビット
310  1ビットの誤り検出定数
314  制御コードテーブル
402  送信機
404  データビット
408  ビット-遷移数変換器ブロック
409  12桁の三進数
410  遷移-シンボルブロック
412  SCL線
414  SDA線
416  シーケンシャルシンボル
420  受信機
422  シーケンシャルシンボル
424  SCL線
426  SDA線
428  クロックデータリカバリ(CDR)ブロック
430  シンボル-遷移数変換器ブロック
432  遷移数-ビット変換器
502  遷移数
504  シーケンシャルシンボル
506  第1のサイクル
508  第2のサイクル
510  第3のサイクル
512  第4のサイクル
602  送信機
604  受信機
606  Bit-12×T変換器
608  12×T-Bit変換器
1301  割込み信号
1303  IRQ照会
1305  ステータス
1306  スレーブ間通信要求
1310  スレーブ間送信フレーム
1312  書込みコマンド
1314  読取りコマンド
1402  ビット19のマッピングの一部
1403  スレーブ間転送要求
1404  第1のビットシーケンス
1406  テーブル
1408  テーブル、ワード数
1502  スレーブデバイス間通信プロトコル
1503  スレーブ間転送許可
1504  第1のビットシーケンス
1508  ワード数
1602  フレーム
1606  余分なワード
1608  スレーブデバイス間許可
1702  マスタデバイス
1704  処理回路
1706  第1の通信インターフェース/回路
1708  第2の通信インターフェース/回路
1710  通信管理回路/モジュール
1712  IRQバス監視回路/モジュール
1714  スレーブ間通信許可/拒否回路/モジュール
1716  データバス監視回路/モジュール
1902  スレーブデバイス
1904  処理回路
1906  第1の通信インターフェース/回路
1908  第2の通信インターフェース/回路
1910  割込み(IRQ)ジェネレータ回路/モジュール
1912  スレーブ間通信要求回路/モジュール
1914  スレーブ間通信送信回路/モジュール
【図１】
2016533608.tif 000003
【図２】
2016533608.tif 000004
【図３】
2016533608.tif 000005
【図４】
2016533608.tif 000006
【図５】
2016533608.tif 000007
【図６】
2016533608.tif 000008
【図７】
2016533608.tif 000009
【図８】
2016533608.tif 000010
【図９】
2016533608.tif 000011
【図１０】
2016533608.tif 000012
【図１１】
2016533608.tif 000013
【図１２】
2016533608.tif 000014
【図１３】
2016533608.tif 000015
【図１４】
2016533608.tif 000016
【図１５】
2016533608.tif 000017
【図１６】
2016533608.tif 000018
【図１７】
2016533608.tif 000019
【図１８】
2016533608.tif 000020
【図１９】
2016533608.tif 000021
【図２０】
2016533608.tif 000022
【手続補正書】
【提出日】平成28年4月8日(2016.4.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マスタデバイスであって、
複数のスレーブデバイスで共有される制御データバスに結合するためのバスインターフェース回路と、
前記バスインターフェース回路に結合され、
前記複数のスレーブデバイスによる前記制御データバスへのアクセスを制御し、
前記制御データバスへのアクセスを要求するスレーブデバイスからスレーブデバイス間通信要求を受信する
ように構成された処理回路であって、
前記スレーブデバイス間通信要求が、前記マスタデバイスを迂回しながら、前記スレーブデバイスと、前記複数のスレーブデバイスのうちの別のスレーブデバイスとの間の直接的データ転送のためのものである処理回路と
を備えるマスタデバイス。
【請求項２】
前記スレーブデバイス間通信要求が、前記要求スレーブデバイスによって別のスレーブデバイスに転送されるべき、要求されるワード数を含む請求項1に記載のマスタデバイス。
【請求項３】
前記スレーブデバイス間通信要求が、前記制御データバスを介して前記要求スレーブデバイスから別のスレーブデバイスに転送されるべき、要求される最大ワード数を含み、前記処理回路が、
前記要求スレーブデバイスに、前記要求を許可する応答を送る
ようにさらに構成される請求項1に記載のマスタデバイス。
【請求項４】
前記応答が、前記要求において指定された最大ワード数以上であるワード限度数を前記応答内に含めることによって前記要求を許可する請求項3に記載のマスタデバイス。
【請求項５】
前記処理回路が、
前記制御データバスを監視して、スレーブデバイス間通信の終了を検出し、
スレーブデバイス間通信の終了が検出された後、前記制御データバスの制御を回復する
ようにさらに構成される請求項3に記載のマスタデバイス。
【請求項６】
前記スレーブデバイス間通信要求が、前記制御データバスを介して前記要求スレーブデバイスから別のスレーブデバイスに転送されるべき、要求される最大ワード数を含み、前記処理回路が、
前記要求スレーブデバイスに、前記要求を拒否する応答を送る
ようにさらに構成される請求項1に記載のマスタデバイス。
【請求項７】
前記要求される最大ワード数が前記マスタデバイスの現在のワード限度よりも大きい場合、前記スレーブデバイス間通信要求が拒否される請求項6に記載のマスタデバイス。
【請求項８】
前記処理回路が、
前記要求スレーブデバイスによって与えられる、要求される最大ワード数が現在のワード限度よりも大きいとき、前記要求スレーブデバイスに、受け入れられるワード数を送ることによって前記要求を拒否する応答を送る
ようにさらに構成される請求項6に記載のマスタデバイス。
【請求項９】
前記マスタデバイスがスレーブデバイス間通信をサポートしない場合、前記マスタデバイスが、前記要求を拒否する前記応答を送る請求項6に記載のマスタデバイス。
【請求項１０】
マスタデバイスによって動作可能な方法であって、
複数のスレーブデバイスで共有される制御データバスへのアクセスを制御するステップと、
前記制御データバスへのアクセスを要求するスレーブデバイスから、スレーブデバイス間通信要求を受信するステップであって、前記スレーブデバイス間通信要求が、前記マスタデバイスを迂回しながら、前記スレーブデバイスと、前記複数のスレーブデバイスのうちの別のスレーブデバイスとの間の直接的データ転送のためのものであるステップと
を含む、方法。
【請求項１１】
前記スレーブデバイス間通信要求が、前記制御データバスを介して前記要求スレーブデバイスから別のスレーブデバイスに転送されるべき、要求される最大ワード数を含む請求項10に記載の方法。
【請求項１２】
前記要求スレーブデバイスに、前記要求を許可する応答を送るステップ
をさらに含む請求項11に記載の方法。
【請求項１３】
前記制御データバスを監視して、スレーブデバイス間通信の終了を検出するステップと、
スレーブデバイス間通信の終了が検出された後、前記制御データバスの制御を回復するステップと
をさらに含む請求項12に記載の方法。
【請求項１４】
前記要求スレーブデバイスに、前記要求を拒否する応答を送るステップ
をさらに含む請求項11に記載の方法。
【請求項１５】
前記要求スレーブデバイスと前記別のスレーブデバイスとの間で一定の量の情報を前記マスタデバイスに転送させるための要求を前記要求スレーブデバイスから受信するステップと、
前記要求スレーブデバイスと前記別のスレーブデバイスとの間で、要求された情報間のデータを転送するステップと
をさらに含む請求項14に記載の方法。
【請求項１６】
前記要求を拒否する前記応答が、前記要求される最大ワード数未満である、受け入れられるワード数を含む請求項14に記載の方法。
【請求項１７】
複数のスレーブデバイスおよび少なくとも1つのマスタデバイスで共有される制御データバスに結合するためのバスインターフェース回路と、
前記バスインターフェース回路に結合され、
前記制御データバスを介して前記スレーブデバイスから前記マスタデバイスにスレーブデバイス間通信要求を送る
ように構成された処理回路であって、前記スレーブデバイス間通信要求が、前記マスタデバイスを迂回しながら、前記スレーブデバイスと、前記複数のスレーブデバイスのうちの別のスレーブデバイスとの間の直接的データ転送のためのものである処理回路と
を備えるスレーブデバイス。
【請求項１８】
前記通信要求が、前記スレーブデバイスによって前記制御データバスを介して別のスレーブデバイスに送信されるべき、要求される最大ワード数を含む請求項17に記載のスレーブデバイス。
【請求項１９】
前記処理回路が、
前記マスタデバイスから前記要求を拒否する応答を受信する
ようにさらに構成される請求項18に記載のスレーブデバイス。
【請求項２０】
前記応答が、前記マスタデバイスから普通なら受け入れられるワード数を含む請求項19に記載のスレーブデバイス。
【請求項２１】
前記処理回路が、
前記マスタデバイスに新しいスレーブデバイス間通信要求を送るようにさらに構成され、前記新しいスレーブデバイス間通信要求が、受信された受け入れられるワード数以下である、新しい要求される最大ワード数を含む請求項20に記載のスレーブデバイス。
【請求項２２】
前記処理回路が、
前記要求スレーブデバイスと前記別のスレーブデバイスとの間で一定の量の情報を前記マスタデバイスに転送させるための新しい要求を送る
ようにさらに構成される請求項19に記載のスレーブデバイス。
【請求項２３】
前記処理回路が、
後で、同一の最大ワード数を有する、同一のスレーブデバイス間通信要求を前記マスタデバイスに再送し、または
要求された前の最大ワード限度未満であるが、初期要求の拒否において前記マスタデバイスによって識別される、受け入れられるワード数よりも大きい第2のワード限度を有する、新しいスレーブデバイス間通信要求を送る
ようにさらに構成される請求項19に記載のスレーブデバイス。
【請求項２４】
前記処理回路が、
前記要求スレーブデバイスに前記制御データバスの制御を移転するために前記マスタデバイスにマスタ要求を送り、
前記マスタ要求が前記マスタデバイスによって許可される場合、前記制御データバスの新しいマスタとして動作し、
所望のデータワード量を別のスレーブデバイスに送る
ようにさらに構成される請求項19に記載のスレーブデバイス。
【請求項２５】
前記処理回路が、
前記要求を許可する応答を受信し、
前記制御データバスにスレーブデバイス間通信を送る
ようにさらに構成される請求項17に記載のスレーブデバイス。
【請求項２６】
前記スレーブデバイス間通信が、前記マスタデバイスによって承認される、受け入れられるワード数に限定される請求項17に記載のスレーブデバイス。
【請求項２７】
スレーブデバイス上で動作可能な方法であって、
複数のスレーブデバイスおよび少なくとも1つのマスタデバイスで共有される制御データバスに前記スレーブデバイスを結合するステップと、
前記制御データバスを介して前記スレーブデバイスから前記マスタデバイスにスレーブデバイス間通信要求を送るステップであって、前記スレーブデバイス間通信要求が、前記マスタデバイスを迂回しながら、前記スレーブデバイスと、前記複数のスレーブデバイスのうちの別のスレーブデバイスとの間の直接的データ転送のためのものであるステップと
を含む方法。
【請求項２８】
前記スレーブデバイス間通信要求が、前記スレーブデバイスによって前記制御データバスを介して別のスレーブデバイスに転送されるべき、要求されるワード数を含む請求項27に記載の方法。
【請求項２９】
前記要求を許可する応答を受信するステップと、
前記制御データバスにスレーブデバイス間通信を送るステップと
をさらに含む請求項27に記載の方法。
【請求項３０】
前記スレーブデバイス間通信が、前記マスタデバイスによって承認される、受け入れられるワード数に限定される請求項29に記載の方法。
【国際調査報告】
2016533608.tif 000023
2016533608.tif 000024