(57)【特許請求の範囲】
【請求項１】
マスタデバイスにより実施される方法であって、
第1の問合せを制御データバスで送信するステップであって、前記第1の問合せは第1のビットの構成とマスクとを含むステップと、
前記第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する、スレーブデバイスの存在を決定するステップと、
前記スレーブ識別子のすべてのビットが決定されるまで、追加の問合せを、異なるビットの構成とともに前記制御データバスで繰り返し送信するステップと
を含み、
前記スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに対する応答が前記スレーブデバイスによりアサートされ、
前記第1の問合せ内で送信された前記第1のビットの構成を、前記第1の問合せ内で送信された前記マスクを適用することによってマスクされた前記スレーブ識別子のコピーと比較することによって、前記第1のビットの構成と前記第2のビットの構成との間のマッチが識別される、方法。
【請求項２】
前記追加の問合せが第2の問合せを含み、前記方法が、
前記マスクを修正して、比較のために前記スレーブ識別子の追加のビットを露出する修正マスクを取得するステップと、
前記第2の問合せを前記制御データバスで送信するステップであって、前記第2の問合せが、前記第1のビットの構成と前記修正マスクとを含むステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記追加の問合せが、先行する問合せに対する応答が受信されないときに送信される第3の問合せを含み、前記方法が、
前記第1のビットの構成の有効な最上位ビット(MSB)の値をトグルすることによって、前記第1のビットの構成を修正して、第3のビットの構成を取得するステップであって、前記有効なMSBが、前記先行する問合せ内で送信された前記マスクの適用によって前記スレーブ識別子内で抑制されない最高値ビットに対応するビットとして定義されるステップと、
前記第3の問合せを前記制御データバスで送信するステップであって、前記第3の問合せが、前記第3のビットの構成と、前記先行する問合せ内で送信された前記マスクとを含むステップと
をさらに含む、請求項1に記載の方法。
【請求項４】
前記追加の問合せが、前記スレーブ識別子のすべてのビットが決定された後に送信される第4の問合せを含み、前記方法が、
前記マスクを回復させて、少なくとも1つのスレーブデバイスが前記応答をアサートすることを引き起こした以前の問合せ内で送信された値を有する、回復されたマスクを取得するステップと、
前記以前の問合せ内で送信された前記ビットの構成を修正して、第4のビットの構成を取得するステップと、
前記第4の問合せを前記制御データバスで送信するステップであって、前記第4の問合せが、前記第4のビットの構成と前記回復されたマスクとを含むステップと
をさらに含む、請求項1に記載の方法。
【請求項５】
異なるスレーブデバイスが、前記第4の問合せに応答し、前記異なるスレーブデバイスが、前記第4のビットの構成が前記異なるスレーブデバイスに関連付けられる異なるスレーブ識別子内の対応するビットの構成にマッチするとき、前記応答をアサートする、請求項4に記載の方法。
【請求項６】
複数のスレーブデバイスが、前記第1の問合せに応答し、前記複数のスレーブデバイスが、前記第1のビットの構成が前記複数のスレーブデバイスのそれぞれのスレーブ識別子内の対応するビットの構成にマッチするとき、同じ応答をアサートする、請求項1に記載の方法。
【請求項７】
前記応答が、前記制御データバスの第1のラインを使用してアサートされる、請求項6に記載の方法。
【請求項８】
前記制御データバスが2ラインバスであり、前記2ラインバスの両方のラインが、前記第1の問合せを転送するために使用される、請求項1に記載の方法。
【請求項９】
前記スレーブ識別子のすべてのビットが決定された後、
前記制御データバスに結合されたすべてのスレーブデバイスのためのすべてのスレーブ識別子が決定されるまで、追加の問合せを、異なるビットの構成とともに前記制御データバスで繰り返し送信するステップ
をさらに含む、請求項1に記載の方法。
【請求項１０】
前記第1の問合せが、前記制御データバスに結合されたすべてのスレーブデバイスに向けられる、請求項1に記載の方法。
【請求項１１】
前記第1の問合せが、前に識別されていない、前記制御データバスに結合されたスレーブデバイスに向けられる、請求項1に記載の方法。
【請求項１２】
前記第1の問合せが、前記第2のビットの構成と前記第1のビットの構成との間のマッチがある場合、前記スレーブデバイスが前記制御データバスを介して応答しなければならない応答期間を定義する、請求項1に記載の方法。
【請求項１３】
前記第2のビットの構成と前記第1のビットの構成との間のマッチがある場合、前記スレーブデバイスが前記制御データバスの第1のラインを瞬間的にプルダウンすることによって、前記応答がアサートされる、請求項1に記載の方法。
【請求項１４】
前記制御データバスに結合された他のデバイスが、応答期間中に前記制御データバスの前記第1のラインからの入力をマスクする、請求項13に記載の方法。
【請求項１５】
制御データバスに結合されたスレーブデバイスと、
前記制御データバスに結合され、前記制御データバスの通信を管理するように適応されたマスタデバイスであって、
第1の問合せを前記制御データバスで送信することであって、前記第1の問合せは第1のビットの構成とマスクとを含むこと、
前記第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する、スレーブデバイスの存在を決定すること、および
前記スレーブ識別子のすべてのビットが決定されるまで、追加の問合せを、異なるビットの構成とともに前記制御データバスで繰り返し送信すること
を行うように構成されたマスタデバイスと
を備え、
前記スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに対する応答が前記スレーブデバイスによりアサートされ、
前記第1の問合せ内で送信された前記第1のビットの構成を、前記第1の問合せ内で送信された前記マスクを適用することによってマスクされた前記スレーブ識別子のコピーと比較することによって、前記第1のビットの構成と前記第2のビットの構成との間のマッチが識別される、デバイス。
【請求項１６】
前記追加の問合せが第2の問合せを含み、前記マスタデバイスが、
前記マスクを修正して、比較のために前記スレーブ識別子の追加のビットを露出する修正マスクを取得すること、および
前記第2の問合せを前記制御データバスで送信することであって、前記第2の問合せが、前記第1のビットの構成と前記修正マスクとを含むこと
を行うようにさらに構成される、請求項15に記載のデバイス。
【請求項１７】
前記追加の問合せが、先行する問合せに対する応答が受信されないときに送信される第3の問合せを含み、前記マスタデバイスが、
前記第1のビットの構成の有効な最上位ビット(MSB)の値をトグルすることによって、前記第1のビットの構成を修正して、第3のビットの構成を取得することであって、前記有効なMSBが、前記先行する問合せ内で送信された前記マスクの適用によって前記スレーブ識別子内で抑制されない最高値ビットに対応するビットとして定義されること、
前記第3の問合せを前記制御データバスで送信することであって、前記第3の問合せが、前記第3のビットの構成と、前記先行する問合せ内で送信された前記マスクとを含むことを行うようにさらに構成される、請求項15に記載のデバイス。
【請求項１８】
前記追加の問合せが、前記スレーブ識別子のすべてのビットが決定された後に送信される第4の問合せを含み、前記マスタデバイスが、
前記マスクを回復させて、少なくとも1つのスレーブデバイスが前記応答をアサートすることを引き起こした以前の問合せ内で送信された値を有する、回復されたマスクを取得すること、
前記以前の問合せ内で送信された前記ビットの構成を修正して、第4のビットの構成を取得すること、および
前記第4の問合せを前記制御データバスで送信することであって、前記第4の問合せが、前記第4のビットの構成と前記回復されたマスクとを含むこと
を行うようにさらに構成され、
異なるスレーブデバイスが、前記第4の問合せに応答し、前記異なるスレーブデバイスが、前記第4のビットの構成が前記異なるスレーブデバイスに関連付けられる異なるスレーブ識別子内の対応するビットの構成にマッチするとき、前記応答をアサートすることによって応答する、請求項15に記載のデバイス。
【請求項１９】
複数のスレーブデバイスが、前記第1の問合せに応答し、前記複数のスレーブデバイスが、前記第1のビットの構成が前記複数のスレーブデバイスのそれぞれのスレーブ識別子内の対応するビットの構成にマッチするとき、前記応答をアサートすることによって応答する、請求項15に記載のデバイス。
【請求項２０】
前記第1の問合せが、前記第2のビットの構成と前記第1のビットの構成との間のマッチがある場合、前記スレーブデバイスが前記制御データバスを介して応答しなければならない応答期間を定義する、請求項15に記載のデバイス。
【請求項２１】
前記第2のビットの構成と前記第1のビットの構成との間のマッチがある場合、前記スレーブデバイスが前記制御データバスの第1のラインを瞬間的にプルダウンすることによって、前記応答がアサートされる、請求項15に記載のデバイス。
【請求項２２】
前記制御データバスに結合された他のデバイスが、応答期間中に前記制御データバスの前記第1のラインからの入力をマスクする、請求項21に記載のデバイス。
【請求項２３】
第1の問合せを制御データバスで送信するための手段であって、前記第1の問合せは第1のビットの構成を含む手段と、
前記第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する、スレーブデバイスの存在を決定するための手段と
を備え、
前記送信するための手段が、前記スレーブ識別子のすべてのビットが決定されるまで、追加の問合せを、異なるビットの構成とともに前記制御データバスで繰り返し送信するように構成され、
前記スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに対する応答が前記スレーブデバイスによりアサートされ、
前記第1の問合せ内で送信された前記第1のビットの構成を、前記第1の問合せ内で送信されたマスクを適用することによってマスクされた前記スレーブ識別子のコピーと比較することによって、前記第1のビットの構成と前記第2のビットの構成との間のマッチが識別される、デバイス。
【請求項２４】
前記追加の問合せが第2の問合せを含み、前記デバイスが、
前記マスクを修正して、比較のために前記スレーブ識別子の追加のビットを露出する修正マスクを取得するための手段と、
前記第2の問合せを前記制御データバスで送信するための手段であって、前記第2の問合せが、前記第1のビットの構成と前記修正マスクとを含む手段と
をさらに備える、請求項23に記載のデバイス。
【請求項２５】
前記追加の問合せが、先行する問合せに対する応答が受信されないときに送信される第3の問合せを含み、前記デバイスが、
前記第1のビットの構成の有効な最上位ビット(MSB)の値をトグルすることによって、前記第1のビットの構成を修正して、第3のビットの構成を取得するための手段であって、前記有効なMSBが、前記先行する問合せ内で送信された前記マスクの適用によって前記スレーブ識別子内で抑制されない最高値ビットに対応するビットとして定義される手段と、
前記第3の問合せを前記制御データバスで送信するための手段であって、前記第3の問合せが、前記第3のビットの構成と、前記先行する問合せ内で送信された前記マスクとを含む手段と
をさらに備える、請求項23に記載のデバイス。
【請求項２６】
複数のスレーブデバイスが、前記第1の問合せに応答し、前記複数のスレーブデバイスが、前記第1のビットの構成が前記複数のスレーブデバイスのそれぞれのスレーブ識別子内の対応するビットの構成にマッチするとき、前記応答をアサートし、前記応答が、複数のスレーブデバイスによって共有された前記制御データバスを介して、前記第1の問合せによって定義された応答期間内にアサートされる、請求項23に記載のデバイス。
【請求項２７】
1つまたは複数の命令が記憶された機械可読記憶媒体であって、前記命令は、少なくとも1つのプロセッサによって実行されたときに、前記少なくとも1つのプロセッサに、
第1の問合せを制御データバスで送信することであって、前記第1の問合せは第1のビットの構成を含むこと、
前記第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する、スレーブデバイスの存在を決定すること、および
前記スレーブ識別子のすべてのビットが決定されるまで、追加の問合せを、異なるビットの構成とともに前記制御データバスで繰り返し送信すること
を行わせ、
前記スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに対する応答が前記スレーブデバイスによりアサートされ、
前記第1の問合せ内で送信された前記第1のビットの構成を、前記第1の問合せ内で送信されたマスクを適用することによってマスクされた前記スレーブ識別子のコピーと比較することによって、前記第1のビットの構成と前記第2のビットの構成との間のマッチが識別される、非一時的機械可読記憶媒体。
【請求項２８】
複数のスレーブデバイスが、前記第1の問合せに応答し、前記複数のスレーブデバイスが、前記第1のビットの構成が前記複数のスレーブデバイスのそれぞれのスレーブ識別子内の対応するビットの構成にマッチするとき、前記応答をアサートし、前記応答が、前記複数のスレーブデバイスによって共有された前記制御データバスを介して、前記第1の問合せによって定義された応答期間内にアサートされる、請求項27に記載の非一時的機械可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連技術の相互参照
本出願は、その内容全体が参照により本明細書に組み込まれている、2013年10月9日に出願した米国仮特許出願第61/889,028号の優先権および利益を主張するものである。
【０００２】
本開示は、共有バスを介して効率的な動作を可能にすることに関し、より詳細には、共有バスに結合されたスレーブデバイスを効率的に識別し、共有バスへのデバイスのホットプラグを容易にするための技法に関する。
【背景技術】
【０００３】
I2C(I2Cとも呼ばれる)は、マザーボード、埋込みシステム、携帯電話または他の電子デバイスに低速周辺装置を取り付けるために使用されるマルチマスタシリアルシングルエンドバスである。I2Cバスは、クロック(SCL)ラインと、7ビットアドレス指定を用いるデータ(SDA)ラインとを含む。バスは、デバイス/ノードに関する2つの役割、すなわち、マスタおよびスレーブを有する。マスタデバイスは、クロックを生成し、スレーブデバイスとの通信を開始するデバイスである。スレーブデバイスは、クロックを受信し、マスタによってアドレス指定されたときに応答するデバイスである。I2Cバスは、任意の数のマスタデバイスが存在できることを意味するマルチマスタバスである。加えて、マスタおよびスレーブの役割は、メッセージの間で(STOPが送られた後に)変更される場合がある。I2Cは、メッセージの基本タイプを定義し、それらの各々はSTARTで開始し、STOPで終了する。
【０００４】
カメラの実装形態との関連では、単方向送信を用いて、センサから画像を取り込み、そのような画像データをベースバンドプロセッサ内のメモリに送信することができ、一方、制御データは、ベースバンドプロセッサとセンサならびに他の周辺デバイスとの間で交換することができる。一例では、ベースバンドプロセッサとイメージセンサ(および/または1つもしくは複数のスレーブデバイス)との間のそのような制御データのために、カメラ制御インターフェース(CCI)プロトコルが使用される場合がある。一例では、CCIプロトコルは、イメージセンサとベースバンドプロセッサとの間のI2Cシリアルバスを介して実装される場合がある。
【０００５】
マスタデバイスが、共有バスに結合されたスレーブデバイスおよび/または他のデバイスを識別することを可能にする技法が必要である。
【発明の概要】
【課題を解決するための手段】
【０００６】
本明細書で開示する実施形態は、データ通信のためのシステム、方法および装置を提供する。特に、本開示のいくつかの態様は、CCIeバス上のスレーブ識別子(SID)についてのスキャニングに関する。
【０００７】
本開示のいくつかの態様では、SIDについてスキャンするための方法は、第1の問合せを制御データバス上で送信するステップであって、第1の問合せは第1のビットの構成を含むステップと、第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する、スレーブデバイスの存在を決定するステップと、スレーブ識別子のすべてのビットが決定されるまで、追加の問合せを、異なるビットの構成とともに制御データバス上で繰り返し送信するステップとを含む。スレーブデバイスは、スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに対する応答をアサートすることができる。
【０００８】
一態様では、スレーブデバイスは、第1の問合せ内で送信されたワードを、第1の問合せ内で送信されたマスクを適用することによってマスクされたスレーブ識別子のコピーと比較することによって、第1のビットの構成と第2のビットの構成との間のマッチを識別する。
【０００９】
別の態様では、追加の問合せは、第2の問合せを含み得る。この方法は、マスクを修正して、比較のためにスレーブ識別子の追加のビットを露出する修正マスクを取得するステップと、第2の問合せを制御データバス上で送信するステップとをさらに含み得る。第2の問合せは、第1のビットの構成と修正マスクとを含み得る。
【００１０】
別の態様では、追加の問合せは、先行する問合せに対する応答が受信されないときに送信される第3の問合せを含み得る。この方法は、第1のビットの構成の有効な最上位ビット(MSB)の値をトグルすることによって、第1のビットの構成を修正して、第3のビットの構成を取得するステップであって、有効なMSBが、先行する問合せ内で送信されたマスクの適用によってスレーブ識別子内で抑制されない最高値ビットに対応するビットとして定義されるステップと、マスクを修正して、比較のためにスレーブ識別子の追加のビットを露出する修正マスクを取得するステップと、第3の問合せを制御データバス上で送信するステップとをさらに含み得る。第3の問合せは、第3のビットの構成と、先行する問合せ内で送信されたマスクとを含み得る。
【００１１】
別の態様では、追加の問合せは、スレーブ識別子のすべてのビットが決定された後に送信される第4の問合せを含む。この方法は、マスクを回復させて、少なくとも1つのスレーブデバイスが応答をアサートすることを引き起こした以前の問合せ内で送信された値を有する、回復されたマスクを取得するステップと、以前の問合せ内で送信されたビットの構成を修正して、第4のビットの構成を取得するステップと、第4の問合せを制御データバス上で送信するステップとをさらに含み得る。第4の問合せは、第4のビットの構成と回復されたマスクとを含む。異なるスレーブデバイスが、第4の問合せに応答することができる。異なるスレーブデバイスは、第4のビットの構成が、異なるスレーブデバイスに関連付けられる異なるスレーブ識別子内の対応するビットの構成にマッチするとき、応答をアサートすることができる。
【００１２】
別の態様では、複数のスレーブデバイスが、第1の問合せに応答する。複数のスレーブデバイスは、第1のビットの構成が、複数のスレーブデバイスのそれぞれのスレーブ識別子内の対応するビットの構成にマッチするとき、同じ応答をアサートすることができる。応答は、制御データバスの第1のラインを使用してアサートされ得る。
【００１３】
別の態様では、制御データバスは2ラインバスである。2ラインバスの両方のラインが、第1の問合せを転送するために使用され得る。
【００１４】
別の態様では、および、スレーブ識別子のすべてのビットが決定された後、この方法は、制御データバスに結合されたすべてのスレーブデバイスのためのすべてのスレーブ識別子が決定されるまで、追加の問合せを、異なるビットの構成とともに制御データバス上で繰り返し送信するステップをさらに含む。
【００１５】
別の態様では、第1の問合せは、制御データバスに結合されたすべてのスレーブデバイスに向けられる。第1の問合せは、前に識別されていない、制御データバスに結合されたスレーブデバイスに向けられ得る。第1の問合せは、第2のビットの構成と第1のビットの構成との間のマッチがある場合、スレーブデバイスが制御データバスを介して応答しなければならない応答期間を定義することができる。第2のビットの構成と第1のビットの構成との間のマッチがある場合、スレーブデバイスが制御データバスの第1のラインを瞬間的にプルダウンすることによって、応答がアサートされ得る。制御データバスに結合された他のデバイスは、応答期間中に制御データバスの第1のラインへのそれらの入力をマスクする。
【００１６】
本開示のいくつかの態様では、SIDについてスキャンするように適応されたデバイスは、制御データバスに結合されたスレーブデバイスと、制御データバスに結合され、制御データバス上の通信を管理するように適応されたマスタデバイスとを含む。マスタデバイスは、第1の問合せを制御データバス上で送信することであって、第1の問合せは第1のビットの構成を含むこと、第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する、スレーブデバイスの存在を決定すること、および、スレーブ識別子のすべてのビットが決定されるまで、追加の問合せを、異なるビットの構成とともに制御データバス上で繰り返し送信することを行うように構成され得る。スレーブデバイスは、スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに対する応答をアサートすることができる。
【００１７】
本開示のいくつかの態様では、SIDについてスキャンするように適応されたデバイスは、第1の問合せを制御データバス上で送信するための手段であって、第1の問合せは第1のビットの構成を含む手段と、第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する、スレーブデバイスの存在を決定するための手段とを含む。送信するための手段は、スレーブ識別子のすべてのビットが決定されるまで、追加の問合せを、異なるビットの構成とともに制御データバス上で繰り返し送信するように構成され得る。スレーブデバイスは、スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに対する応答をアサートすることができる。スレーブデバイスは、第1の問合せ内で送信されたワードを、第1の問合せ内で送信されたマスクを適用することによってマスクされたスレーブ識別子のコピーと比較することによって、第1のビットの構成と第2のビットの構成との間のマッチを識別することができる。
【００１８】
本開示のいくつかの態様では、機械可読記憶媒体は、1つまたは複数の命令を記憶している。1つまたは複数の命令は、少なくとも1つのプロセッサによって実行されたときに、第1の問合せを制御データバス上で送信することであって、第1の問合せは第1のビットの構成を含むこと、第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する、スレーブデバイスの存在を決定すること、および、スレーブ識別子のすべてのビットが決定されるまで、追加の問合せを、異なるビットの構成とともに制御データバス上で繰り返し送信することによって、SIDについてスキャンすることを、少なくとも1つのプロセッサに行わせることができる。スレーブデバイスは、スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに対する応答をアサートすることができる。スレーブデバイスは、第1の問合せ内で送信されたワードを、第1の問合せ内で送信されたマスクを適用することによってマスクされたスレーブ識別子のコピーと比較することによって、第1のビットの構成と第2のビットの構成との間のマッチを識別することができる。
【００１９】
様々な特徴、性質、および利点は、同様の参照文字が全体を通じて対応して識別する図面と併せて読まれたとき、以下に記載の詳細な説明から明らかになる場合がある。
【図面の簡単な説明】
【００２０】
【図１】ベースバンドプロセッサおよびイメージセンサを有し、画像データバスおよびマルチモード制御データバスを実装するデバイスを示すブロック図である。
【図２】どのようにクロックがCCIeモードでシンボル間遷移内に埋め込まれ、それによって、データ送信のためにI2Cバスにおける2本のライン(すなわち、SDAラインおよびSCLライン)の使用を可能にし得るかを示す図である。
【図３】トランスコーディングされたシンボル内にクロック信号を埋め込むために、送信機においてデータビットをトランスコーディングし、トランスコーディングされたシンボルにするための例示的な方法を示すブロック図である。
【図４】遷移番号と順次シンボルとの間の例示的な変換を示す図である。
【図５】遷移番号と順次シンボルとの間の変換を示す図である。
【図６】最上位ビットから最下位ビットまで、2進ビットを3進数に変換するための方法を示す図である。
【図７】最上位ビットから最下位ビットまで、2進ビットを3進数に変換するための送信機側論理回路を示す図である。
【図８】最上位ビットから最下位ビットまで、3進数を2進ビットに変換するための方法を示す図である。
【図９】12桁の3進数を20ビットに変換するための受信機側論理回路を示す図である。
【図１０】ビット19(すなわち、ビットカウントが、ビット0である第1のビットにおいて開始するとき、第20のビット)が、CCIeプロトコルでは大抵使用されず、共有バス上のデバイス間のコマンドのために使用され得ることを、概念的に示す図である。
【図１１】共有バスがI2CモードからCCIeモードへ動作するように切り替え中であることをスレーブデバイスに示すために、共有バスを介してマスタデバイスによって送られ得る、CCIeモードエントリインジケータのための例示的な一般呼出し(general call)を示す図である。
【図１２】CCIeモードからI2Cモードへの遷移をすべてのCCIe可能デバイスに示すために、CCIeマスタデバイス(たとえば、I2Cモードである間に、図1におけるマスタデバイス)によって発行され得る、例示的なCCIe呼出しを示す図である。
【図１３】例示的なCCIeスレーブ識別子(SID)ワードフォーマットを示す図である。これは、CCIe SIDワードフォーマットの一部としての16ビットのスレーブ識別子(SID)の使用を示す。
【図１４】例示的なCCIeアドレスワードフォーマットを示す図である。
【図１５】例示的な書込みデータワードフォーマットを示す図である。
【図１６】例示的な読取り指定ワードフォーマットを示す図である。
【図１７】例示的な読取りデータワードフォーマットを示す図である。
【図１８】I2Cの1バイト書込みデータ動作の例示的なタイミング図である。
【図１９】SDAラインおよびSCLラインを介した送信のために、データビットが12シンボルにトランスコーディングされた、例示的なCCIe送信を示す図である。
【図２０】図2〜図10に示した符号化方式から得られた第20のビット(ビット19)の例示的なマッピングを示す図である。
【図２１】図20の第20のビット(ビット19)領域の例示的なマッピング内の下位領域の詳細を示す図である。
【図２２】本明細書で開示するいくつかの態様による、マスタデバイスによって発行され得る「SID Scan All」コマンドの一例を示す図である。
【図２３】本明細書で開示するいくつかの態様による、SIDについてスキャンするために使用され得るアルゴリズムの一例を示す図である。
【図２４】SDAラインとSCLラインとを備える共有バスを介したSIDスキャンのためのタイミング図である。
【図２５】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図２６】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図２７】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図２８】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図２９】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図３０】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図３１】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図３２】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図３３】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図３４】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図３５】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図３６】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図３７】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図３８】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図３９】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図４０】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図４１】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図４２】本明細書で開示するいくつかの態様に従って実施されるSIDスキャンの様々なステップの一例を示す図である。
【図４３】マスタデバイスによって発行され得る「SID Scan New」コマンドの一例を示す図である。
【図４４】本明細書で開示するいくつかの態様に従って適応され得る処理システムを採用する装置の一例を示すブロック図である。
【図４５】通信リンク上でスレーブ識別子スキャンを行うための方法を示すフローチャートである。
【図４６】通信リンク上でスレーブ識別子スキャンを行うように構成された処理回路を採用する装置のためのハードウェア実装形態の一例を示す概念図である。
【発明を実施するための形態】
【００２１】
以下の説明では、実施形態の完全な理解を提供するために、具体的な詳細が与えられる。ただし、実施形態はこれらの具体的な詳細なしに実施され得ることを当業者は理解されよう。たとえば、回路は、不必要な詳細で実施形態を不明瞭にしないために、ブロック図で示される場合がある。他の例では、よく知られている回路、構造、および技法は、実施形態を不明瞭にしないために、詳細に示されない場合がある。
【００２２】
例示的な動作環境
図1は、ベースバンドプロセッサ104およびイメージセンサ106を有し、画像データバス116およびマルチモード制御データバス108を実装するデバイス102を示すブロック図である。図1はカメラデバイス内のマルチモード制御データバス108を示すが、この制御データバス108が様々な異なるデバイスおよび/またはシステム内に実装され得ることは明らかであろう。画像データは、画像データバス116(たとえば、高速差動DPHYリンク)を介して、イメージセンサ106からベースバンドプロセッサ104に送られる場合がある。
【００２３】
一例では、制御データバス108は、2本の線、クロックライン(SCL)およびシリアルデータライン(SDA)を備える、I2Cバスであり得る。クロックラインSCLは、I2Cバス(制御データバス108)を介してすべてのデータ転送を同期させるために使用されるクロックを送るために使用され得る。データラインSDAおよびクロックラインSCLは、I2Cバス(制御データバス108)上ですべてのデバイス112、114、および118に結合される。この例では、制御データが、制御データバス108を介して、ベースバンドプロセッサ104とイメージセンサ106ならびに他の周辺デバイス118、122、および/または124との間で交換され得る。I2Cのための標準クロック(SCL)速度は、最高100KHzである。I2C高速モードにおける標準クロックSCL速度は、最高400KHzであり、I2C高速モードプラス(Fm+)では、最高1MHzである。I2Cバスを介したこれらの動作モードは、カメラの適用例に使用されるとき、カメラ制御インターフェース(CCI)モードと呼ばれる場合がある。
【００２４】
一態様によれば、カメラ動作をサポートするために、改善された(すなわち、1MHzよりも大きい制御データバス送信周波数を用いる)動作モードを、マルチモード制御データバス108を介して実装することができる。I2Cバスを介してのこの改善された動作モードは、カメラの適用例のために使用されるとき、カメラ制御インターフェース拡張(CCIe)モードと呼ばれる場合がある。CCIeモードでは、SCLラインおよびSDAラインは両方とも、それらの2本のラインを介したシンボル間遷移内にクロックが埋め込まれる間に、データを送信するために使用され得る。この例では、ベースバンドプロセッサ104はマスタデバイス112を含み、イメージセンサ106はスレーブデバイス114を含み、マスタデバイス112とスレーブデバイス114の両方は、制御データバス108に結合された他のレガシーI2Cデバイスの適切な動作に影響を与えることなく、制御データバス108を介してカメラ制御インターフェース拡張(CCIe)モードに従って動作することができる。一態様によれば、制御データバス108を介したこの改善されたモードは、CCIeデバイスとレガシーI2Cスレーブデバイスとの間にいかなるブリッジデバイスを用いることもなく、実装され得る。
【００２５】
I2C互換デバイスとCCIe互換デバイスとが共有制御データバス108に並行して結合されることを可能にするプロトコルが提供される。制御データバス108は、別個の通信プロトコル(たとえば、I2CモードおよびCCIeモード)に従った動作間で動的に切り替えることができる。前記のように、共有制御データバス108への通信および/またはアクセスは、マルチモードマスタデバイス112によって管理される。マスタデバイスは、制御データバス108がその通信プロトコルを第1のプロトコルモード(たとえば、I2Cモード)から第2のプロトコルモード(たとえば、CCIeモード)へ切り替えるべきであることを示すために、エントリ呼出し(entry call)を送信する。同様に、マスタデバイスは、制御データバス108がその通信プロトコルを第2のプロトコルモード(たとえば、CCIeモード)から第1のプロトコルモード(たとえば、I2Cモード)へ切り替えるべきであることを示すために、終了呼出し(exit call)を送信する。共有バス108に結合されたスレーブデバイスは、これらのエントリ呼出しと終了呼出しとを監視して、いつ共有バス108上で動作することができるかを確認する。
【００２６】
例示的なCCIe符号化技法
図2は、どのようにクロックがCCIeモードでシンボル間遷移内に埋め込まれ、それによって、データ送信のためにI2Cバスにおける2本のライン(すなわち、SDAラインおよびSCLライン)の使用を可能にし得るかを示す。一例では、このクロックの埋め込みは、遷移クロックトランスコーディングによって達成され得る。たとえば、物理リンク(線)を介して送信されるべきデータ204は、送信されるシンボルが、送信シンボル206のシンボルサイクルまたは遷移ごとに状態を変化させることを保証されるように、トランスコーディングされる。一例では、ビットのシーケンスが3進数に変換され、3進数の各桁が、送信のためにシンボルに変換される。順次シンボルは、3進数の2つの順次の桁が同じであるときでも、異なるように保証される。したがって、元のクロック202は、シンボルサイクルごとのシンボル状態の変化において埋め込まれ得る。受信機は、(送信シンボル206内の)各シンボルにおける状態遷移からクロック情報208を復元し、次いで、送信シンボル206のトランスコーディングを逆転させて、元のデータ210を取得する。一例では、各シンボルが桁に変換され、複数の桁が3進数を構成し、次いで、3進数が複数のビットに変換される。したがって、元のクロック202は、シンボルサイクルごとのシンボル状態の変化において埋め込まれ得る。これによって、I2Cバスの両方の線(図1における制御データバス108、SDAラインおよびSCLライン)がデータ情報を送るために使用されることが可能になる。加えて、クロック信号とデータ信号との間のセットアップ時間および保持時間を有する必要がもはやないので、シンボルレートが倍増され得る。
【００２７】
図3は、トランスコーディングされたシンボル内にクロック信号を埋め込むために、送信機においてデータビットをトランスコーディングし、トランスコーディングされたシンボルにするための例示的な方法を示すブロック図である。送信機302において、データビット304のシーケンスが3進(3進法の)数(すなわち、「遷移番号」)に変換され、次いで、3進数が(順次)シンボルに変換され、それらのシンボルがクロックラインSCL324およびデータラインSDA326を介して送信される。
【００２８】
一例では、2進データの元の20ビットが、ビット-遷移番号変換器ブロック308に入力されて、12桁の3進数に変換される。12桁の3進数の各桁は、「遷移番号」を表す。2つの連続する遷移番号は、同じ数であってよい(すなわち、3進数の連続する桁が同じであってよい)。各遷移番号は、2つの連続する順次シンボルが同じ値を有することがないように、遷移-シンボルブロック310において順次シンボルに変換される。順次シンボルごとに遷移が保証されるので、そのような順次シンボル遷移は、クロック信号を埋め込むように働き得る。次いで、各順次シンボル316が、2線式物理リンク(たとえば、SCLライン324とSDAライン326とを備えるI2Cバス)を介して送られる。
【００２９】
図4は、遷移番号402と順次シンボル404との間の例示的な変換を示す。遷移番号とも呼ばれる、3進数、3進法の数の個々の桁は、3つの可能な数字または状態、0、1または2のうちの1つを有することができる。3進数の2つの連続する桁において同じ数字が現れる場合があるが、2つの連続する順次シンボルは同じ値を有しない。遷移番号と順次シンボルとの間の変換は、連続する遷移番号が同じである場合でも、順次シンボルが(順次シンボルから順次シンボルへと)常に変化することを保証する。
【００３０】
この変換関数を図5に例示的に記載する。送信機側(TX:TからSへ)502では、遷移番号(T)が順次シンボル(S)に変換され得る。たとえば、現在の順次シンボル(Cs)は、前の順次シンボル(Ps)と、現在の遷移番号(T)の関数である一時遷移番号(Ttmp)とに基づいて、取得され得る。一時遷移番号(Ttmp)は、現在の遷移番号Tを0と比較することによって取得することができ、T=0のとき、一時遷移番号(Ttmp)は3に等しくなり、そうでない場合(Tが0に等しくないとき)、TtmpはTに等しくなる(すなわち、Ttmp=T=0?3:T)。現在の順次シンボルは、現在の順次シンボル(Cs)+前の順次シンボル(Ps)+一時遷移番号(Ttmp)の和として取得され得る(すなわち、Cs=Ps+Ttmp)。
【００３１】
受信機側(RX:SからTへ)504では、変換演算が逆にされて、現在の順次シンボル(Cs)および前の順次シンボル(Ps)から遷移番号が取得される。一時遷移番号(Ttmp)は、現在の順次シンボル(Cs)+4の和-前の順次シンボル(Ps)として取得され得る(すなわち、Ttmp=Cs+4-Ps)。現在の遷移番号(T)は一時遷移番号(Ttmp)に等しいが、一時遷移番号(Ttmp)が3と比較され、Ttmp=3のとき、一時遷移番号(Ttmp)は0に等しくなり、そうでない場合(Ttmpが3に等しくないとき)、TはTtmpに等しくなる(すなわち、T=Ttmp=3?0:T)。
【００３２】
テーブル506は、遷移番号と順次シンボルとの間の変換を示す。
【００３３】
再び図4を参照すると、遷移番号と順次シンボルとの間の変換の一例がその中に示されている。たとえば、第1のサイクル406では、現在の遷移番号(Ta)は2であり、そのためTtmpもまた2であり、前の順次シンボルPsは1であり、新しい現在の順次シンボルCsは現在3である。
【００３４】
第2のサイクル408では、遷移番号(Tb)は1である。遷移番号(Tb)は0に等しくないので、一時遷移番号Ttmpは、1である遷移番号(Tb)値に等しい。現在の順次シンボル(Cs)は、3である前の順次シンボル(Ps)値を、1である一時遷移番号Ttmpに加算することによって、取得される。加算演算の結果が、3よりも大きい4に等しいので、ロールオーバされた数0が現在の順次シンボル(Cs)になる。
【００３５】
第3のサイクル410では、現在の遷移番号(T)は1である。遷移番号Tが1であるので、一時遷移番号Ttmpもまた1である。現在の順次シンボル(Cs)は、0である前の順次シンボル(Ps)値を、1である一時遷移番号Ttmpに加算することによって、取得される。加算演算の結果が、3よりも大きくない1に等しいので、現在の順次シンボル(Cs)は1に等しい。
【００３６】
第4のサイクル412では、現在の遷移番号(T)は0である。遷移番号Tが0であるので、一時遷移番号Ttmpは3である。
【００３７】
現在の順次シンボル(Cs)は、1である前の順次シンボル(Ps)値を、3である一時遷移番号Ttmpに加算することによって、取得される。加算演算の結果が、3よりも大きい4であるので、ロールオーバされた数0が現在の順次シンボル(Cs)になる。
【００３８】
2つの連続する3進数の桁TbおよびTcが同じ数を有する場合でも、この変換は、2つの連続する順次シンボルが異なる状態値を有することを保証することに留意されたい。このため、順次シンボル404内の保証された遷移がクロック信号を埋め込むように働き、それによって、データ送信のためにI2Cバス内のクロックラインSCLを解放することができる。
【００３９】
図3を再び参照すると、受信機320において、このプロセスが逆にされて、トランスコーディングされたシンボルがビットに戻るように変換され、このプロセスにおいて、クロック信号がシンボル遷移から抽出される。受信機320は、2線式物理リンク(たとえば、SCLライン324およびSDAライン326を備えるI2Cバス)を介して、順次シンボル322のシーケンスを受信する。受信された順次シンボル322は、クロック-データ復元(CDR)ブロック328に入力されて、クロックタイミングが復元され、トランスコーディングされたシンボル(S)がサンプリングされる。次いで、シンボル-遷移番号変換器ブロック330が、トランスコーディングされた(順次)シンボルを、遷移番号、すなわち、1つの3進数字に変換する。次いで、遷移番号-ビット変換器332は、12個の遷移番号を変換して、12桁の3進数から20ビットの元のデータを回復させる。
【００４０】
2線式バスおよび12個の遷移番号について図3および図4に示した例は、n線式システムおよびm個の遷移番号に一般化され得る。T0〜Tm-1の1つのTあたりにr個の可能なシンボル遷移状態がある場合、m個の遷移がrm個の異なる状態を送ることができ、すなわち、r=2n-1個である。したがって、遷移T0...Tm-1は、(2n-1)m個の異なる状態を有することができるデータを含む。
【００４１】
本明細書で説明する本技法を使用して、I2C標準バスが提供し、本明細書でCCIeモードと呼ばれるものを超えて、制御バス108(図1)のリンクレートを高めることができる。一例では、制御データバス108に結合されるマスタデバイスおよび/またはスレーブデバイスは、同じ制御データバスを介して、標準I2Cバスを使用して可能であるよりも高いビットレートを達成するために、(図2、図3、図4、および図5に示すような)シンボル送信内にクロック信号を埋め込む送信機および/または受信機を実装することができる。
【００４２】
図6は、最上位ビットから最下位ビットまで、2進ビットを3進数に変換するための方法を示す。3進数の各桁は、受信デバイスに送信されるシンボルにトランスコーディング(変換)され得る。3進数を表すT0、T1...T11を有する12桁の3進数602では、T0は30の桁を表し(かつ、最下位桁であり)、T11は311の桁を表す(かつ、最上位桁である)。受信ビット(たとえば、20ビットのシーケンス)で開始すると、3進数602の最上位桁T11が最初に取得される。次いで、次の最上位桁T10が次に取得される。このプロセスは、最下位桁T0が取得されるまで続く。3進数602の桁の各々はまた、「遷移番号」と呼ばれることもある。
【００４３】
図7は、最上位ビットから最下位ビットまで、2進ビットを3進数に変換するための送信機側論理回路を示す。図6および図7は、T11、T10、T9、...、T0の順序で送られる12桁の3進数602を示す。最上位ビットを最初に取得し、送ることによって、関連する論理および回路の複雑さが簡略化される。図6および図7における手法では、最上位の順次シンボルが受信デバイスに最初に送信され、したがって、MSS最優先(MSS first:most significant symbol first)と呼ばれる。本明細書で使用する「最下位シンボル」は、3進数602の最下位桁に対応するトランスコーディングされたシンボルを指す。たとえば、ならびに図4および図5の説明を参照すると、T0が順次シンボルにトランスコーディングされるとき、それは最下位の3進数の桁から発生したので、最下位シンボルである。同様に、本明細書で使用する「最上位シンボル」は、3進数602の最上位桁に対応するトランスコーディングされたシンボルを指す。たとえば、ならびに図4および図5の説明を参照すると、T11が順次シンボルにトランスコーディングされるとき、それは最上位の3進数の桁から発生したので、最上位シンボルである。また、シンボル-遷移番号変換器ブロック330(図3)が、後で、トランスコーディングされた(順次)シンボルを受信し、遷移番号、すなわち、3進数の桁に変換するとき、それは、最上位桁T11が最初に、最下位桁T0が最後になる。
【００４４】
図3に戻って参照すると、20ビットの元のデータが、逆順で3進数に変換され(すなわち、最上位ビットが変換器に最初に供給され)、次いで、3進数の各桁(たとえば、各遷移番号)が、逆順で順次シンボルに変換(すなわち、トランスコーディング)され、これらのトランスコーディングされたシンボルが、バス上で逆順に(すなわち、最上位シンボルが最初に)送信される。
【００４５】
図8は、最上位ビットから最下位ビットまで、3進数を2進ビットに変換するための方法を示す。すなわち、この受信機側変換は、図6および図7に示した送信機側変換において実施された動作を逆にする。受信デバイス(たとえば、スレーブデバイス)は、逆順送信を受信し、クロック復元およびシンボルサンプリングを実施して、トランスコーディングされたシンボルを3進数に戻すように変換し、次いで、3進数は逆順で図9における論理回路に供給され、論理回路は3進数を20ビットの2進の元データに戻すように変換する。図7は、論理デバイスへの単出力に結合された12個の入力を有するマルチプレクサを示す。
【００４６】
図9は、12桁の3進数を20ビットに変換するための受信機側論理回路を示す。
【００４７】
図10は、ビット19(すなわち、ビットカウントが、ビット0である第1のビットにおいて開始するとき、第20のビット)が、CCIeプロトコルでは大抵使用されず、共有バス上のデバイス間のコマンドのために使用され得ることを、概念的に示す。すなわち、図3〜図9に示した符号化方式の結果として、余分のビット(すなわち、ビット19)が現在、送信シンボル内で利用可能である。より具体的には、図10は、ビット19(すなわち、第20のビット)を示す。言い換えれば、コンピュータサイエンスにおいて典型的であるように、ビットワイズのカウントは0で開始し、ビット19は第20のビットである。ここで、ビット0〜18は、0000_0000_00003から2221_2201_20013の3進数範囲内で表される。2221_2201_20023から2222_2222_22223の範囲内の3進数は使用されない。したがって、3進数範囲2221_2201_20023から2222_2222_22223を使用して、ビット19(すなわち、第20のビット)を表すことができる。言い換えれば、2221,2201,20023 3進数は、10,000,000,000,000,000,000 2進数(0x80000 16進数)であり、2222_2222_22223 3進数(0x81BF0)は、可能な最大の12桁の3進数である。
【００４８】
CCIeモードのための例示的なプロトコル
図11は、共有バスがI2CモードからCCIeモードへ動作するように切り替え中であることをスレーブデバイスに示すために、共有バスを介してマスタデバイスによって送られ得る、CCIeモードエントリインジケータのための例示的な一般呼出しを示す。一般呼出し1102は、I2CモードからCCIeモードへの遷移をすべてのI2C互換デバイスに示すために、共有バスを介してI2Cマスタデバイス(たとえば、SDAラインおよびSCLラインを介して、I2Cモードである間、図1におけるマスタデバイス112)によって発行され得る。
【００４９】
I2Cモードでは、CCIeマスタデバイスは、このI2C一般呼出し1102を、「CCIeモード」バイトまたはインジケータ1104とともに発行する。CCIe互換スレーブデバイスは、一般呼出し1102の受信を肯定応答する。CCIe互換スレーブデバイスは、必要な場合、一般呼出し中に(制御データバス108の)SCLラインを低に保持することによって、待機サイクルを挿入することができる。
【００５０】
CCIeモードになると、すべてのCCIe互換デバイスは、CCIeマスタデバイスからの要求に応答することができる。CCIeモードをサポートしない共有制御データバス上のレガシーI2C互換スレーブデバイスの動作状態または任意の機能は、いかなるCCIeトランザクションによっても影響を受けない。
【００５１】
図12は、CCIeモードからI2Cモードへの遷移をすべてのCCIe可能デバイスに示すために、CCIeマスタデバイス(たとえば、I2Cモードである間に、図1におけるマスタ112)によって発行され得る、例示的なCCIe呼出し1202を示す。CCIeマスタデバイスは、CCIe SIDの代わりにこの終了呼出し1202を発行することができる。
【００５２】
CCIeモードで、CCIeモードにおける最後のデータおよび後続するSの後、CCIeマスタは、CCIeモードの終了とI2Cモードへ戻る遷移とを(たとえば、CCIe互換デバイスに)示すために、特殊なCCIe SIDコードである「終了」コード/インジケータ1204を送る。加えて、「終了」コード/インジケータ1204の後、CCIeマスタデバイスは、S(開始ビット)および後続する「一般呼出し」1206を、I2Cプロトコルに従って、I2Cプロトコル内の第2のバイトにおける「終了」コード1208とともに送る。すべてのCCIe対応スレーブは、一般呼出し1204に対して肯定応答しなければならない。
【００５３】
図13は、例示的なCCIeスレーブ識別子(SID)ワードフォーマットを示す。これは、CCIe SIDワードフォーマット1302の一部としての16ビットのスレーブ識別子(SID)1304の使用を示す。そのようなSIDワードフォーマットは、そのワードが制御データバス上に配置されるとき、特定のスレーブデバイスを識別するために使用されることになる。
【００５４】
図14は、例示的なCCIeアドレスワードフォーマット1402を示す。これは、各アドレスワード1406が16ビットのアドレス1404を含むことを示す。アドレスワード1406はまた、2ビットの制御コード1408と、1ビットのエラー検出定数1410とを含む。テーブル1412は、制御コードのための様々な可能な値を示す。
【００５５】
複数のアドレスワードが順次送られ得る。現在の制御ワードが「00」である場合、これは、アドレスワードが後続することになることを意味する。制御コードが「01」である場合、次のデータワードは、書込みデータワードである。制御コードが「10」である場合、次のデータワードは、1ワード読取りデータワードである。制御コード「11」は禁止される。
【００５６】
図15は、例示的な書込みデータワードフォーマット1500を示す。これは、各データワード1500が16ビットの書込みデータ部分1502を含むことを示す。書込みデータワード1500はまた、2ビットの制御コード1504と、1ビットのエラー検出定数1510とを含む。テーブル1514は、制御コードのための様々な可能な値を示す。
【００５７】
複数の書込みデータワードが順次送られ得る。現在の書込みワードの制御コードが「00」(シンボルC0)である場合、データは、前のアドレスに書き込まれるべきである。現在の書込みワードの制御コードが「01」(シンボルC1)である場合、データは、前のアドレス+1に書き込まれるべきである。制御コードが「10」(シンボルE)である場合、次のワードはSIDまたは終了コードになる。
【００５８】
図16は、例示的な読取り指定ワードフォーマット1600を示す。読取り指定データワード1600は、16ビットの読取りデータ値部分1604と、2ビットの制御コード1608と、3ビットのエラー検出定数1610とを含み得る。
【００５９】
最後のアドレスワード1607の後、「読取り指定」(RS)ワード1612が後続する。読取り指定(RS)ワード1612は、後続する読取りデータワードの数を指定する。テーブル1616に示すように、制御コード「00」は、同じアドレスからの読取りワードを示すために使用される。制御コード「01」は、増分アドレスからの読取りワードを示すために使用される。(そこからデータが読み取られている)スレーブデバイスは、「読取り指定」(RS)ワード1604によって指定されるよりも多くのデータワード(CHKワードを含まない)を送らないものとする。スレーブデバイスは、少なくとも1つの読取りワード(CHKワードを含まない)を送るものとする。スレーブデバイスは、「読取り指定」(RS)ワード1604によって指定された数のワードを送る前に、読取り転送を終了することができる。
【００６０】
図17は、例示的な読取りデータワードフォーマット1702を示す。読取りデータワード1702は、16ビットの読取りデータ値部分1704と、2ビットの制御コード1706と、1ビットのエラー検出定数1708とを含み得る。SID1707によってアドレス指定されたスレーブデバイスは、要求するマスタデバイスに戻すためのワードの数を決定する。テーブル1716に示すように、読取りワードが同じアドレスから続く場合、制御コードは「00」(シンボルR0)である。読取りワードが増分アドレスから続く場合、制御コードは「01」(シンボルR1)である。ワードが最後の読取りワードであり、その後、CHKがない場合、制御コードは「10」(シンボルE)である。制御コード「00」は禁止される。
【００６１】
例示的な共有バスを介したI2C送信対CCIe送信
図18は、I2Cの1バイト書込みデータ動作の例示的なタイミング図を示す。この例では、共有制御データバス108(図1)は、シリアルデータラインSDA1802とシリアルクロックラインSCL1804とを含む。図18に示す送信方式は、「I2Cモード」と呼ばれることがある。SCLライン1804は、マスタデバイスからすべてのスレーブデバイスへクロックを送るために使用されるが、SDAライン1802は、データビットを送信する。I2Cマスタデバイスは、I2Cバス上のどのスレーブデバイスにマスタデバイスがアクセスすることを望むかを示すために、SDAライン1802において7ビットのスレーブID1808を送り、次いで、書込み動作を示すために1ビットを送る。そのIDが7ビットのスレーブID1808にマッチするスレーブデバイスのみが、意図されたアクションを引き起こすことができる。I2Cスレーブデバイスがそれ自体のIDを検出するために、マスタデバイスは、SDAライン上で少なくとも8ビット(または、SCLライン1804上で8個のクロックパルス)を送らなければならない。
【００６２】
I2C規格は、すべてのI2C互換スレーブデバイスが、(たとえば、SCLラインが高である間にSDAライン上の高から低への遷移によって示される)START条件1806を受信すると、それらのバス論理をリセットすることを必要とする。
【００６３】
CCIeプロトコルは、クロック信号をデータ送信内に埋め込みながら、SDAライン1802とSCLライン1804の両方をデータ送信のために使用する。たとえば、データビットは、次いでラインを介して送信される複数のシンボルにトランスコーディングされ得る。クロック信号(図18におけるI2CバスではSCLライン)をシンボル送信内に埋め込むことによって、SDAライン1802とSCLライン1804の両方が、データ送信のために使用され得る。
【００６４】
図19は、SDAライン1902およびSCLライン1904を介した送信のために、データビットが12シンボルにトランスコーディングされた、例示的なCCIe送信を示す。図19に示す送信方式は、「CCIeモード」と呼ばれることがある。CCIeモードは、ソース同期であり、プッシュプルドライバによって駆動される。共有制御データバスを介してデータを送出するものはどれもまた、データ内(たとえば、シンボル間遷移内)に埋め込まれたクロック情報を送出する。したがって、制御データバス上のただ1つのデバイスが一度に共有制御データバスを駆動することが可能にされる。
【００６５】
同じバスを介してレガシーI2CデバイスとCCIeデバイスの両方をサポートするために、CCIeモード動作は、同じSTART条件1906、1908、1910を使用し、これによって、レガシーI2CスレーブデバイスがいかなるCCIe動作に反応することも防止される(たとえば、CCIeモード中の開始条件は、レガシーI2Cスレーブデバイスをリセットさせる)。この例では、START条件1906、1908、1910(すなわち、SCLライン1904が高である間に、SDAライン1902上の高から低への遷移によって示される)は、完全なスレーブID(すなわち、完全な7ビット)が送信される前に検出され、したがって、これは、不完全なスレーブID(7ビット未満)である。マスタデバイスが6個のSCLパルスを送り、次いで、START条件1906、1908、1910を発行する場合、すべてのレガシーI2Cスレーブデバイスは、データをI2CスレーブIDとして認識する前に、それらのバス論理をリセットする。6ビットシーケンス(たとえば、2つおきのシンボルに対応する)が2つのSTART条件1906、1908、1910の間で送られるので、これらの6ビットシーケンスは、いかなるI2Cスレーブデバイスによっても有効なスレーブIDとして複号されない。したがって、レガシーI2Cスレーブデバイスは、不完全なスレーブIDに作用しないようになる。
【００６６】
このシステムでは、マスタデバイスは、バスへのアクセスを制御する。そのため、制御データバスを介して送信することを望むいかなるデバイスも、典型的には、たとえば、割込み要求を発行することによって、マスタデバイスにそのようなアクセスを要求しなければならない。割込みを発行するための従来技術の機構は、専用の割込みラインまたは専用の割込みバスに依拠していた。しかしながら、そのような専用の割込みラインまたはバスは、そのような割込みラインまたはバスを収容するために、デバイスが少なくとも1つの追加のピンを含まなければならないことを意味する。そのような専用の割込みピンおよびライン/バスの必要性をなくすために、CCIe内の帯域内割込みのための機構が必要とされる。
【００６７】
帯域内割込みの使用はまた、バス競合または衝突を回避するべきである。たとえば、衝突を回避するために、スレーブデバイスは、マスタデバイスが制御データバスを駆動中である間に、IRQをアサートするために制御データバス(たとえば、SDAライン1902またはSCLライン1904のいずれか)を駆動することが可能にされるべきではない。
【００６８】
例示的なビット19領域およびチェックサム
図20は、図2〜図10に示した符号化方式から得られた第20のビット(ビット19)の例示的なマッピングを示す。諒解され得るように、利用可能な3進数は、マスタデバイスとスレーブデバイスとの間の特徴および能力を拡張するように働き得る。たとえば、ビット19内で利用可能なこの3進数空間(すなわち、そのビット19が「1」であるデータ領域)は、(a)スレーブ間送信、(b)送信のためのチェックサム、(c)スレーブデバイスへのマスタ動作ハンドオーバ、(d)ハートビートクロックなどを容易にするか、または示すように働き得る。
【００６９】
図21は、図20の第20のビット(ビット19)領域の例示的なマッピング内の下位領域の詳細を示す。
【００７０】
SIDスキャニング機能
一態様によれば、マスタデバイスが、制御データバスに結合されたすべてのデバイスについて効率的にスキャンすることが望ましくなり得る。たとえば、マスタデバイスは、マスタデバイスが起動するとき、制御バスに結合されたすべてのスレーブデバイスについてスキャンすることができる。
【００７１】
図22は、SID「Scan All」コマンド2202とその対応するペイロード2204とを含む、CCIe送信の一例2200を示す。SID「Scan All」コマンド2202(「0x4」コードによって識別される)は、マスタデバイスによって発行され得る。ペイロード2204は、複数のユニットスキャンID2210を含み得る。各ユニットスキャンID2210は、SIDマスクペア2208と応答期間2206とを含む。SIDマスクペア2208は、それについて問い合わせるためのSID内の単一ビット位置を識別するマスクを定義することができる。
【００７２】
テーブル2220において示すように、32ビットのSIDマスクペア2208(2つの16ビットデータD0およびD1に広がる)は、16ビットのSIDの特定のビットロケーションが照会されているか否か、および、そうである場合、どの値(すなわち、0または1)について照会されているかを識別するように働く。たとえば、SIDマスクペア2208のビット[1]は、SIDのビット[0]がチェックされるべきであるか、マスクされる(すなわち、チェックされない)べきであるかを定義することができる。ビット[1]が「チェック」を示す場合、SIDマスクペア2208のビット[0]は、問合せが「0」についてであるか、「1」についてであるかを定義する。
【００７３】
応答2206によって定義された期間は、スレーブデバイスが共有バスを介して帯域内でSID問合せに応答することを可能にする。ユニットSID問合せ2210ごとに、そのマスクされていないSIDビットが問合せビットにマッチする(すなわち、スレーブデバイスのSIDが、問合せビットにマッチする、問い合わせられたビットロケーションにおけるビットを有する)各スレーブデバイスは、共有バスの少なくとも1つのラインを介して帯域内で問合せ応答を送る。これによって、マスタデバイスが、バス上のいずれかのスレーブデバイスが部分的にマッチするSID(すなわち、問合せビットにマッチする、問い合わせられたビットロケーションにおけるビットを有するSID)を有するか否かを確かめることが可能になる。
【００７４】
複数のユニットSID問合せ2210が、マスタデバイスによって、共有バスに結合されたすべてのデバイスのためのSIDを完全に識別するために送られる。
【００７５】
「Scan All」コマンド2202またはその変形態は、マスタの起動に直接関係しない機会において発行されることがある。一例では、マスタデバイスは、すべてのスレーブデバイスが同期しているか否かをチェックするために、制御バスに結合されたすべてのスレーブデバイスについてスキャンすることができる。この例では、マスタデバイスは、完全な「ブラインドスキャン」(たとえば、図26〜図42参照)を必ずしも実行する必要があるとは限らず、マスタデバイスは、どのスレーブデバイスがバスに結合されているかをすでに知り得るので、マスタは、比較からいかなるSIDビットも排除しないマスクなし、および/またはマスクありの問合せを発行することができる。別の例では、マスタデバイスは、1つまたは複数の特定のデバイスが同期しているか否かをチェックするために、制御バスに結合されたすべてのスレーブデバイスについてスキャンすることができる。この例では、マスタデバイスは、スキャンされるべきスレーブデバイスごとにただ1つのユニットSID問合せを送ることができる。
【００７６】
図23は、SIDについてスキャンするために使用され得る1つのアルゴリズム2300の一例を示す。アルゴリズム2300は、SIDビットを反復的にマスクすること、および、マスクなしビットにマッチするビットを有する各スレーブデバイスが応答を送ることを要求することによって、動作し得る。一例では、SIDビットは、最下位ビットから最上位ビットまで反復的にマスクされ得るが、他のマスキングシーケンスが採用されてよい。
【００７７】
図24は、SDAラインとSCLラインとを備える共有バスを介したSIDスキャン応答ワード、「RESP」2206のためのタイミング図を示す。この例では、SIDスキャン応答2430は、12シンボルシーケンス3131_3130_2323に等しい、3進数2222_2221_21013または16進の0x81B8Fによって識別される。これらのシンボルは、SDAライン2426およびSCLライン2427を介して送信される。スレーブデバイスが、応答期間2406中に、SDAライン2426を使用して、SIDスキャン問合せに応答することを可能にするために、マスタデバイスはSDAラインを解放する。次いで、各受信機デバイスは、応答期間2406にわたって、そのクロックデータ復元回路(CDR)へのSDAライン入力をマスクする。マスタは、SCLラインをトグルし(その状態を変化させ)て、SDAラインが使用中である間に、各受信機デバイスがSCLライン上のそのようなトグリングからクロックを復元することができるようにする。
【００７８】
CCIeプロトコルによれば、受信するスレーブデバイスは、たとえば、開始Sインジケータ2412の後、第nのRXCLK2414を検出することができる。第nのRXCLK2414は、内部SDAマスク2424をトリガして、内部的に(たとえば、受信するスレーブデバイス内で)SDAライン2426をマスクすることができる。
【００７９】
第n+1のRXCLK2416において、スレーブデバイスは、SDAライン2426を低にプルすることによって、応答をアサート/発行することができる。SDAライン2426は、マスタデバイスによって高に弱くプルされるので、(スレーブデバイスによって)低にプルされるとき、これは、SIDスキャン問合せに対する肯定的応答を示すように働くようになる。SDAライン2426を高に弱くプルすることによって、これによって、スレーブデバイスがSDAライン2426を低にプルして、SIDスキャン問合せに対する応答をアサートすることが可能になる。
【００８０】
第n+1のRXCLK2416との間であるが、第n+2のRXCLK2418の前の、次のクロックサイクルまで待機するのではなく、マスタデバイスは、SDAライン2426を監視して、応答がアサート/発行されたことを意味する、それが低になるかどうか、および/またはそれがいつ低になるかを確かめることができる。マスタデバイスによるSDAライン2426のそのような監視は、スレーブデバイスからのいかなるアサート/発行された応答をも非同期的に検出するために、応答期間2406中のみに実施され得ることに留意されたい。
【００８１】
第n+2のRXCLK2418において、スレーブデバイスは、SDAライン2426を解放することができる。
【００８２】
第n+2のRXCLK2418と第n+3のRXCLK2420との間で、マスタデバイスは、そのSDAラインドライバを再有効化することができ、SDAライン2426を高に駆動することを開始する。したがって、受信機デバイス(たとえば、アサートするスレーブデバイス)は、第n+3のRXCLK2420において、SDAマスク2424を安全に解放することができる。
【００８３】
第n+3のRXCLK2420において、スレーブデバイスは、SDAマスク2424を解放することができる。このようにして、SIDスキャン応答は、SDAライン2426上で定義された応答期間2406中に、スレーブデバイスによって送信され得る。
【００８４】
図25は、シリアルバスに結合された複数のデバイスのSIDを見つけるために反復的に実施され得る、スキャンシーケンスを示すフローチャート2500である。このスキャンは、SIDビット2530とマスク2532とを含む問合せを、シリアルバス上で送信することを含む。シリアルバスに結合されたスレーブデバイスは、マスク2532をそれ自体の一意のSIDに適用して、たとえば、マスクされたビットが2進の0に強制されるようにする。次いで、スレーブデバイスは、そのマスクされたSIDを、問合せ内で送信されたSIDビット2530と比較することができる。この比較がマッチを生じる場合、スレーブデバイスは、応答期間2406中に、SDAライン2426を低に駆動して、マスタデバイスにマッチの発生をシグナリングする。次いで、マスタデバイスは、マスクを修正して、スレーブデバイスにおける比較から除去されるビット数を低減した後、新しい問合せを送信することができる。マスタデバイスは、ビット位置ごとに、スレーブデバイスのSIDを発見することができる。フローチャート2500に示した例では、マスタは、0の値をもつSIDビット位置を探し、応答が発生しない場合、マスタは、SIDビット位置において2進の1の値をもつスレーブデバイスについてスキャンする。
【００８５】
マスクが少なくとも1つのビット位置をマスクするように動作するとき、複数のデバイスが問合せに応答することができることは諒解されよう。マスクが、すべてのビットがSID内でテストされることを可能にするとき、SIDビットは一意のSIDに対応し、その一意のSIDに関連付けられたスレーブデバイスのみが問合せに応答することを期待され得る。
【００８６】
SDAライン2426がいずれかの問合せに応答して低に駆動されるとき、マスタデバイスは、少なくとも1つのスレーブデバイスがそのSIDスキャン問合せに応答中であることに留意することができる。次いで、マスタデバイスは、第1のスレーブデバイスの一意のSIDが発見されるまで、残りのSIDビットをテストすることができる。次いで、マスタデバイスは、第1のスレーブデバイスと同じ問合せに応答した可能性のある他のスレーブデバイスを見つけるために、「バックトラック」することができる。たとえば、第2のスレーブデバイスは、第1のスレーブデバイスのSID内の同じビット数に等しいある数の最下位ビットを有するSIDを有し得る。マスタデバイスは、SIDビット内でマスクなしにされた最上位ビット(MSB)(有効なMSB)が0に設定された、前の各問合せに戻ることができ、マスタデバイスは、1の値に設定された有効なMSBとともに問合せを送信することができる。この手法は、発見されたスレーブデバイスと並行して1つまたは複数の問合せに応答した1つまたは複数のスレーブデバイスを発見することができる。言い換えれば、バックトラックすることで、先行するスキャン中にカバーされなかったパスを再訪および探索する。
【００８７】
マスタデバイスが、問合せに対する応答を受信しないとき、マスタデバイスは、問合せ内にSIDビット構成を含むさらなる問合せを送ることを控えることができる。
【００８８】
フローチャート2500は、スキャンシーケンス内の所与の点から後続されるスキャンプロセスを示す。最初に、SIDビットのすべてを0に設定することができ、マスクが、スレーブデバイスによって、それらの一意のSIDの最下位ビット(LSB)を除いてすべての比較をブロックするために設定され得る。
【００８９】
プロセスはブロック2502で開始し、そこで、マスタデバイスは、スキャンのための開始点を決定する。開始点は、最初の開始点、または、SIDが発見された後のスキャンの再開であり得る。開始点は、現在のマスク2532および現在のSIDビット2530として定義され得る。ブロック2504で、マスタデバイスは、現在のマスク2532および現在のSIDビット2530とともに、問合せを送る。スレーブデバイスは、問合せを受信し、問合せ内で与えられたマスク2532を使用して、それらのそれぞれの一意のSIDをマスクする。一例では、マスキングは、ある数の最下位ビットをマスクされたSIDとして残す。スレーブデバイスは、マスクされたSIDが問合せ内で受信されたSIDビット2530にマッチする場合、SDAライン2426を低に駆動することができる。
【００９０】
マスタデバイスは、SDAライン2426のアサーションを、問合せ内で送信されたSIDビット2530にマッチする少なくともいくつかのビットを有する一意のSIDをスレーブデバイスが有するという確認として見なす。したがって、マスタデバイスは、ブロック2506で、SDAライン2426がアサートされたと決定することができ、ブロック2516へ進むことができる。ブロック2516で、マスタデバイスは、マスク2532が、スレーブSID内のいずれかのビットが比較中に無視されることを引き起こしたか否かを決定する。そうでない場合、ブロック2518で、マスタデバイスは、スレーブデバイスが問合せ内で送られたSIDビットに厳密にマッチするSIDを有すると決定する。ブロック2516で、マスク2532が、スレーブSIDの1つまたは複数のビットを検討からブロックしたと決定される場合、プロセスはブロック2520へ続く。ブロック2520で、マスタデバイスは、スレーブSIDの次のより上位のビットが、次の問合せ内で送信されるべきSIDビット2530と比較されるように、マスクを修正することができる。マスタデバイスは、ブロック2522で、SIDビット2530の現在のMSBをクリアすることができる。次いで、スキャンは、ブロック2504で、更新されたマスク2532およびSIDビット2530とともに再開することができる。場合によっては、マスタデバイスは、ステップ2524で生成されたビット構成についての問合せを送ることをスキップすることができる。ブロック2526で、マスタデバイスは、前の肯定的な応答が受信されたか否かを決定することができる。前の応答が受信されていないと決定される場合、スキャンはブロック2504へ続く。ブロック2526で、前の応答が受信されたと決定される場合、MSB(=0)のための代替値が少なくとも1つのスレーブデバイスからの応答を誘導しなかったので、少なくとも1つのスレーブデバイスは、ステップ2524で生成されたビット構成を有する。したがって、スキャンはブロック2512へ続くことができる。
【００９１】
ブロック2506で、マスタデバイスが、SDAライン2426が問合せに応答してアサートされなかったと決定する場合、プロセスはブロック2508へ続く。ブロック2508で、マスタデバイスは、現在のSIDビット2530に、シリアルバスに結合されたいかなるスレーブデバイスのSID内でも発生しないビットパターンとして、随意にタグ付けすることができる。次いで、マスタデバイスは、マスク2532に対応するビット位置内で現在のSIDビットをもつ任意のデバイスについてスキャンすることを控えることができる。次いで、プロセスはブロック2510へ続き、そこで、マスタデバイスは、マスク2532の演算によって定義されるようなSIDビット2530の現在のMSBが0に設定されているか否かを決定する。ブロック2510で、SIDビット2530の現在のMSBが1に設定されていると決定される場合、どのデバイスも、1または0に設定された現在のMSBをもつ問合せに応答しなかったと仮定することができ、スキャンはブロック2528で終了され得る。どのスレーブデバイスもスキャンシーケンス内でいずれかの問合せに応答しないとき、ブロック2528に到達し得ることは諒解されよう。
【００９２】
ブロック2510で、SIDビット2530の現在のMSBが0に設定されていると決定される場合、ブロック2524で、SIDビット2530の現在のMSBが、2進の1という値に設定される。次いで、スキャンは、更新されたSIDビット2530とともにブロック2526へ進む。
【００９３】
ブロック2526で、前の応答が現在のスキャンにおいて受信されなかったと決定される場合、スキャンはブロック2504へ続き、そこで、問合せが、1に設定された現在のMSBとともに送られる。ブロック2526で、以前の応答が受信された場合、0に設定された現在のMSBをもつ問合せに応答しなかったスレーブデバイスが、1に設定された現在のMSBをもつ問合せに応答することになると仮定され得る。したがって、1に設定された現在のMSBをもつ問合せが送られる必要がなく、スキャンはブロック2512へ進む。ブロック2512で、マスタデバイスは、マスク2532が、スレーブSID内のいずれかのビットが比較中に無視されることを引き起こしたか否かを決定する。そうでない場合、SIDが識別されたと決定され、現在のスキャンがブロック2514で終了することができる。
【００９４】
ブロック2512で、マスク2532が、スレーブSIDの1つまたは複数のビットを検討からブロックしたと決定される場合、プロセスはブロック2520へ続く。ブロック2520で、マスタデバイスは、スレーブSIDの次の現在のMSBが、次の問合せ内で送信されるべきSIDビット2530と比較されるように、マスクを修正することができる。マスタデバイスは、ブロック2522で、SIDビット2530の現在のMSBをクリアすることができる。次いで、スキャンは、ブロック2504で、更新されたマスク2532およびSIDビット2530とともに再開する。
【００９５】
マスタデバイスは、SDAライン2426のアサーションを生じた、任意のマスク2532とSIDビット2530との組合せを追跡することができ、これらのマスク2532とSIDビット2530との組合せのうちの1つまたは複数に基づいて、新しいスキャンを開始することができる。一例では、マスタデバイスは、第1のSIDを発見した後、または、1に設定されたMSBビットをもつ問合せから応答が受信されないとき、SIDパターンサブセットを有するスレーブデバイスがないことを了解した後、新しいスキャン(たとえば、フローチャート2500)を開始することができる。新しいスキャンは、0というMSB値をもつSIDビット2530に応答して、最後のSDAライン2426アサーションにおいて開始し、そこで、MSB値は、対応するマスク2532のアクションによって決定される。
【００９６】
図26〜図42は、本明細書で開示するいくつかの態様による、反復的なSIDスキャンの様々な結果を示す。SIDスキャンは、たとえば、図25に示したプロセスを使用して実施されてよく、スキャンシーケンスを図26〜図42に示し、図26〜図42は、SIDビットインデックス2602に関して、スキャンシーケンスの進行を示す。この説明のために、スキャンは、3つのスレーブデバイスがシリアルバスに結合されるときに実施される。第1のスレーブデバイスは、16進数0x402Aまたは2進数0100_0000_0010_1010に等しいデバイス識別子SID0を有し得る。第2のスレーブデバイスは、16進数0x113Eまたは2進数0001_0001_0011_1110に等しいデバイス識別子SID1を有し得る。第3のスレーブデバイスは、16進数0x0908または2進数0000_1001_0000_1000に等しいデバイス識別子SID2を有し得る。
【００９７】
図26に示すように、16ビットのSIDの最下位ビット2604で開始して、マスタデバイスは、それらのSIDの最下位ビット(ビット0)において「0」をもつすべてのスレーブデバイスが、たとえば、SDAライン2426を低に保持することによって応答することを要求する、問合せを送る。図26に示す3つのSIDの例では、すべての3つのスレーブデバイスが応答する。
【００９８】
図27に示すように、問合せプロセスは、ビット1 2704、および、それらのSIDのそのビット位置において「0」をもつすべてのスレーブデバイスが応答することを要求する問合せについて、繰り返される。SID 0x0908(SID2)を有するスレーブデバイスのみが、SDAライン2426を低に保持することによって応答する。
【００９９】
図28に示すように、問合せプロセスは、ビット2 2804、および、それらのSIDのそのビット位置において「0」をもつすべてのスレーブデバイスが応答することを要求する問合せについて、繰り返される。SID 0x0908(SID2)を有するスレーブデバイスが、応答する。
【０１００】
図29に示すように、問合せプロセスは、ビット3 2904、および、それらのSIDのそのビット位置において「0」をもつすべてのスレーブデバイスが応答することを要求する問合せについて、繰り返される。どのスレーブデバイスも応答しない。
【０１０１】
図30に示すように、問合せプロセスは、ビット3 2904、および、それらのSIDのそのビット位置において「1」をもつすべてのスレーブデバイスが応答することを要求する問合せについて、繰り返され得る。SID 0x0908(SID2)を有するスレーブデバイスが、応答することになる。しかしながら、マスタデバイスは、肯定的な応答がここで行われることになることを知っているので、マスタデバイスによって問合せが行われる必要がない。代わりに、マスタデバイスは、単に「1」の値をSIDビットインデックス2602に設定し、ビット4 3104(図31)へ移ることができる。
【０１０２】
図31に示すように、問合せプロセスは、ビット4 3104からビット7 3106、および、それらのSIDの対応するビット位置において「0」をもつすべてのスレーブデバイスが応答することを要求する問合せについて、反復的に繰り返される。SID 0x0908(SID2)を有するスレーブデバイスが、これらの別個の問合せの各々に応答する。
【０１０３】
図32に示すように、問合せプロセスは、ビット8 3204、および、それらのSIDのそのビット位置において「0」をもつすべてのスレーブデバイスが応答することを要求する問合せについて、繰り返される。どのスレーブデバイスも応答しない。
【０１０４】
図33に示すように、マスタデバイスは、ビット8 3204における「1」の問合せに対して肯定的な応答が行われることになることを知っているので、マスタデバイスによって問合せが行われる必要がない。代わりに、マスタデバイスは、単に「1」の値をSIDビットインデックス2602に設定し、ビット9 3404へ移ることができる。
【０１０５】
一般に、応答が受信されなくなるまで「0」に等しいビットについて使用し、次いで「1」に等しいビットに切り替えて問合せを行うこのプロセスは、第1のデバイスのための完全なSIDが見つかるまで繰り返される。
【０１０６】
図34に示すように、問合せプロセスは、ビット9 3404からビット15 3406について、反復的に繰り返される。SID 0x0908(SID2)を有するスレーブデバイスが、これらの別個の問合せの各々に応答する。SIDのすべての16ビットがチェックされたので、SID2 0x0908に関連付けられたスレーブデバイスが確実に識別される。
【０１０７】
スレーブデバイスSID2を識別した後、図35は、このパスに沿って別のスレーブデバイスを識別することを試みるために、問合せプロセスが次にバックトラックされることを示す。このバックトラックプロセスは、どのスレーブデバイスも応答しなくなるまで繰り返される。バックトラックされたビット位置の各々において、マスタデバイスは、前にテストされていない値を用いて問合せを実施する。たとえば、ビット15において、問合せは、そのバックトラックされた問合せのために「1」を使用する。次いで、ビット14において、問合せは、そのバックトラックされた問合せのために「1」を使用する。
【０１０８】
図36は、ビット1 2704まで、すべての可能なパスをバックトラックおよび除去した後、問合せプロセスが、それについて「バックトラック」が応答を得る最初の問合せである、ビット1 2704について続くことを示す。それらのSIDのそのビット位置において「1」をもつすべてのスレーブデバイスが応答することを要求する、問合せが送信される。SID 0x402A(SID0)を有するスレーブデバイス、および、SID 0x113E(SID1)を有するスレーブデバイスが、SDAライン2426を低に保持することによって応答する。
【０１０９】
図37および図38は、問合せプロセスが、SIDのすべての16ビットがチェックされるまで続くこと、SID0 0x402Aに関連付けられたスレーブデバイスが確実に識別されることを示す。
【０１１０】
図39は、より多くのマッチするSIDを探索するバックトラックプロセスを再び示す。
【０１１１】
図40は、ビット2 2804まで、すべての可能なパスをバックトラックおよび除去した後、問合せプロセスが、ビット2 2804、および、それらのSIDのそのビット位置において「1」をもつすべてのスレーブデバイスが応答することを要求する問合せについて続くことを示す。SID 0x113E(SID1)を有するスレーブデバイスのみが、SDAライン2426を低に保持することによって応答する。
【０１１２】
図41は、問合せプロセスが、SIDのすべての16ビットがチェックされるまで続くこと、SID1 0x113Eに関連付けられたスレーブデバイスが確実に識別されることを示す。
【０１１３】
図42は、すべての代替ビットがこのパスについてテストされるまで、より多くのマッチするSIDを探索するバックトラックプロセスを再び示す。
【０１１４】
マスタデバイスは、肯定的な応答を生じた問合せ内で使用されたSID値をマッピングまたはさもなければ追跡し、応答を生じなかった問合せ内で使用されたSID値を追跡することができる。
【０１１５】
マスタデバイスは、このSID Scan Allコマンドを採用して、新たにプラグ接続されたデバイス、ならびに共有制御データバスに結合された既存のデバイスのためのすべてのSIDについてスキャンすることができる。マスタデバイスが、SIDビットインデックス2602をトラバースする特定の順序に制限されないことは諒解されよう。この例では、本明細書で説明するように、SIDビットインデックス2602は、ビット0からビット15へトラバースされる。別の例では、SIDビットインデックス2602は、ビット15からビット0へトラバースされ得る。他の例では、本明細書で説明するように、SIDビットインデックス2602は、非線形および/またはランダムもしくは擬似ランダムな順序でトラバースされてよく、そこで、たとえば、スレーブデバイスは、特定の順序または方式に従って割り当てられたSIDを与えられることが期待される。
【０１１６】
SIDスキャンを用いたホットプラグのサポート
一態様によれば、共有バスおよび/またはマスタデバイスが動作可能になった後、デバイス(たとえば、スレーブデバイス)を共有制御データバスに「ホットプラグ」することが望ましいことがある。しかしながら、データバスを制御するマスタデバイスの最初の起動後、デバイスが制御データバスに結合されることを可能にすることで、マスタデバイスが、新たにプラグ接続されたスレーブデバイス(または、アクティブでないマスタデバイス)を検出することを可能にする何らかの方法が必要となる。そのような「ホットプラグ」機能を達成するために、新たにプラグインされたスレーブデバイスは、IRQ信号をマスタデバイスに(たとえば、専用のIRQNを介して)、最も長い可能な信号期間を使用して送ることができる。次いで、マスタデバイスは、「SID Scan New」コマンドを発行して、前にスキャンされていない共有制御データバスに結合されたすべてのスレーブデバイスをスキャンし、新たに追加されたスレーブデバイスを識別することができる。
【０１１７】
一態様によれば、SIDスキャンをサポートするスレーブデバイスは、そのSIDが電源投入後にスキャンされたか否かを示す情報を記憶することができる。たとえば、デバイスがそのSIDについてスキャンされた後、スレーブデバイスは、それがすでにスキャンされたことを示す内部レジスタを設定することができる。このレジスタは、前にスキャンされたスレーブデバイスがSID Scan Newコマンドを無視することを可能にするので、新たにプラグ接続されたデバイスのみが応答するようになる。
【０１１８】
前にスキャンされていないSIDを有するデバイスを含む、共有制御データバスに新たに結合されるデバイスは、典型的には、このSID scan newコマンドに応答することが必要とされ、かつ/または期待される。前にスキャンされたSIDを有するデバイスは、「SID Scan New」コマンドに応答する必要がない。
【０１１９】
図43は、SID「Scan New」コマンド4302とその対応するペイロード4304とを含む、CCIe送信の一例4300を示す。SID「Scan New」コマンド4302(「0x5」コードによって識別される)は、マスタデバイスによって発行され得る。ペイロード4304は、複数のユニットスキャンID4310を含み得る。各ユニットスキャンID4310は、SIDマスクペア4308と応答期間4306とを含む。SIDマスクペア4308は、それについて問い合わせるためのSID内の単一ビット位置を識別するマスクを定義することができる。これはSID Scan Newコマンド4302であるので、すべての前にスキャンされたデバイスは、それを無視することができる。したがって、共有バスに新たにプラグインされるデバイスのみが識別される。
【０１２０】
テーブル4320において示すように、32ビットのSIDマスクペア4308(2つの20ビットワードD0およびD1に広がる)は、16ビットのSIDの特定のビットロケーションが照会されているか否か、および、そうである場合、どの値(すなわち、0または1)について照会されているかを識別するように働く。たとえば、SIDマスクペア4308のビット[1]は、SIDのビット[0]がチェックされるべきであるか、マスクされる(すなわち、チェックされない)べきであるかを定義することができる。ビット[1]が「チェック」を示す場合、SIDマスクペア4308のビット[0]は、問合せが「0」についてであるか、「1」についてであるかを定義する。
【０１２１】
応答4306によって定義された期間は、スレーブデバイスが共有バスを介して帯域内でSID問合せに応答することを可能にする。ユニットSID問合せ4310ごとに、そのマスクされていないSIDビットが問合せビットにマッチする(すなわち、スレーブデバイスのSIDが、問合せビットにマッチする、問い合わせられたビットロケーションにおけるビットを有する)各スレーブデバイスは、共有バスの少なくとも1つのラインを介して帯域内で問合せ応答を送る。これによって、マスタデバイスが、バス上のいずれかのスレーブデバイスが部分的にマッチするSID(すなわち、問合せビットにマッチする、問い合わせられたビットロケーションにおけるビットを有するSID)を有するか否かを確かめることが可能になる。
【０１２２】
複数のユニットSID問合せ4310が、マスタデバイスによって、共有バスに結合されたすべてのデバイスのためのSIDを完全に識別するために送られる。
【０１２３】
新たにホットプラグされたスレーブデバイスのためのSIDのスキャンまたは発見は、図25〜図42に示すように実施され得る。
【０１２４】
図44は、本明細書で開示する1つまたは複数の機能を実施するように構成され得る処理回路4402を採用する装置のためのハードウェア実装形態の簡略化された例を示す概念図4400である。本開示の様々な態様によれば、本明細書で開示するような要素、または要素の任意の部分、または要素の任意の組合せは、処理回路4402を使用して実装され得る。処理回路4402は、ハードウェアモジュールとソフトウェアモジュールの何らかの組合せによって制御される1つまたは複数のプロセッサ4404を含む場合がある。プロセッサ4404の例には、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)、状態機械、シーケンサ、ゲート論理、個別ハードウェア回路、および本開示全体にわたって説明される様々な機能を実施するように構成された他の適切なハードウェアが含まれる。1つまたは複数のプロセッサ4404は、特定の機能を実施し、ソフトウェアモジュール4416のうちの1つによって構成され、増強され、または制御され得る専用プロセッサを含み得る。1つまたは複数のプロセッサ4404は、初期化中にロードされたソフトウェアモジュール4416の組合せを介して構成され、動作中に1つまたは複数のソフトウェアモジュール4416のローディングまたはアンローディングによってさらに構成される場合がある。
【０１２５】
図示の例では、処理回路4402は、バス4410によって概略的に表されるバスアーキテクチャを用いて実装されてもよい。バス4410は、処理回路4402の具体的な適用例および全体的な設計制約に応じて、任意の数の相互接続するバスおよびブリッジを含む場合がある。バス4410は、1つまたは複数のプロセッサ4404およびストレージ4406を含む様々な回路を互いにリンクさせる。ストレージ4406は、メモリデバイスおよび大容量ストレージデバイスを含む場合があり、本明細書ではコンピュータ可読媒体および/またはプロセッサ可読媒体と呼ばれる場合がある。バス4410は、タイミングソース、タイマー、周辺機器、電圧調整器、および電力管理回路などの様々な他の回路をリンクさせることもできる。バスインターフェース4408は、バス4410と1つまたは複数のトランシーバ4412との間のインターフェースを提供することができる。トランシーバ4412は、処理回路によってサポートされるネットワーキング技術ごとに提供され得る。場合によっては、複数のネットワーキング技術は、トランシーバ4412内で見出される回路または処理モジュールの一部または全部を共有することができる。各トランシーバ4412は、送信媒体を介して様々な他の装置と通信するための手段を提供する。装置の性質に応じて、ユーザインターフェース4418(たとえば、キーパッド、ディスプレイ、スピーカ、マイクロフォン、ジョイスティック)が設けられる場合もあり、直接またはバスインターフェース4408を介して、バス4410に通信可能に結合される場合がある。
【０１２６】
プロセッサ4404は、バス4410の管理、およびストレージ4406を含む場合があるコンピュータ可読媒体に記憶されたソフトウェアの実行を含む場合がある全体的な処理を担当することができる。この点で、処理回路4402は、プロセッサ4404を含み、本明細書で開示する方法、機能および技法のうちの任意のものを実装するために使用され得る。ストレージ4406は、ソフトウェアを実行するとき、プロセッサ4404によって操作されるデータを記憶するために使用され得、ソフトウェアは、本明細書で開示する方法のうちの任意のものを実装するように構成され得る。
【０１２７】
処理回路4402内の1つまたは複数のプロセッサ4404は、ソフトウェアを実行することができる。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語と呼ばれるか、または他の名称で呼ばれるかどうかにかかわらず、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能ファイル、実行スレッド、プロシージャ、機能、アルゴリズムなどを意味するように広く解釈されるべきである。ソフトウェアは、コンピュータ可読の形でストレージ4406内または外部コンピュータ可読媒体内に存在することができる。外部コンピュータ可読媒体および/またはストレージ4406は、非一時的コンピュータ可読媒体を含む場合がある。非一時的コンピュータ可読媒体には、例として、磁気ストレージデバイス(たとえば、ハードディスク、フロッピー（登録商標）ディスク、磁気ストリップ)、光ディスク(たとえば、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD))、スマートカード、フラッシュメモリデバイス(たとえば、「フラッシュドライブ」、カード、スティック、またはキードライブ)、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、レジスタ、リムーバブルディスク、ならびに、コンピュータがアクセスし読み取ることができるソフトウェアおよび/または命令を記憶するための任意の他の適切な媒体が含まれる。コンピュータ可読媒体および/またはストレージ4406には、例として、搬送波、伝送路、ならびに、コンピュータがアクセスし読み取ることができるソフトウェアおよび/または命令を送信するための任意の他の適切な媒体も含まれ得る。コンピュータ可読媒体および/またはストレージ4406は、処理回路4402の中に、プロセッサ4404の中に、処理回路4402の外部に存在するか、または処理回路4402を含む複数のエンティティにわたって分散される場合がある。コンピュータ可読媒体および/またはストレージ4406は、コンピュータプログラム製品内で具現化される場合がある。例として、コンピュータプログラム製品には、パッケージング材料内のコンピュータ可読媒体が含まれ得る。当業者は、特定の適用例および全体的なシステムに課された設計制約全体に応じて、本開示全体にわたって提示された記載の機能を最もよく実装する方法を認識されよう。
【０１２８】
ストレージ4406は、本明細書でソフトウェアモジュール4416と呼ばれる場合がある、ロード可能なコードセグメント、モジュール、アプリケーション、プログラムなどにおいて維持および/または編成されたソフトウェアを維持することができる。ソフトウェアモジュール4416の各々は、処理回路4402にインストールまたはロードされ、1つまたは複数のプロセッサ4404によって実行されると、1つまたは複数のプロセッサ4404の動作を制御するランタイムイメージ4414に寄与する命令およびデータを含み得る。実行されると、いくつかの命令は、処理回路4402に、本明細書で説明するいくつかの方法、アルゴリズム、およびプロセスに従って機能を実施させることができる。
【０１２９】
ソフトウェアモジュール4416のうちのいくつかは、処理回路4402の初期化の間にロードされ得、これらのソフトウェアモジュール4416は、本明細書で開示する様々な機能の実施を可能にするように処理回路4402を構成することができる。たとえば、いくつかのソフトウェアモジュール4416は、プロセッサ4404の内部デバイスおよび/または論理回路4422を構成することができ、たとえばトランシーバ4412、バスインターフェース4408、ユーザインターフェース4418、タイマー、数学的コプロセッサなどの外部デバイスへのアクセスを管理することができる。ソフトウェアモジュール4416は、割込みハンドラおよびデバイスドライバと対話し、処理回路4402によって提供される様々なリソースへのアクセスを制御する、制御プログラムおよび/またはオペレーティングシステムを含む場合がある。リソースには、メモリ、処理時間、トランシーバ4412へのアクセス、ユーザインターフェース4418などが含まれ得る。
【０１３０】
処理回路4402の1つまたは複数のプロセッサ4404は、多機能とすることができ、それによって、ソフトウェアモジュール4416のいくつかは、ロードされ、異なる機能または同じ機能の異なるインスタンスを実施するように構成される。1つまたは複数のプロセッサ4404は、さらに、たとえば、ユーザインターフェース4418、トランシーバ4412、およびデバイスドライバからの入力に応答して開始されるバックグラウンドタスクを管理するように適応され得る。複数の機能の実施をサポートするために、1つまたは複数のプロセッサ4404は、マルチタスク環境を提供するように構成される場合があり、それにより、複数の機能の各々が、必要または要望に応じて、1つまたは複数のプロセッサ4404によってサービスされる1組のタスクとして実装される。一例では、マルチタスク環境は、異なるタスク間でプロセッサ4404の制御を渡す時分割プログラム4420を使用して実装される場合があり、それにより、各タスクは、任意の未処理動作の完了後、および/または割込みなどの入力に応答して、時分割プログラム4420に1つまたは複数のプロセッサ4404の制御を戻す。タスクが1つまたは複数のプロセッサ4404の制御を有するとき、処理回路は、事実上、制御するタスクに関連付けられた機能によって対処される目的に特化される。時分割プログラム4420は、オペレーティングシステム、ラウンドロビンベースで制御を移すメインループ、機能の優先順位付けに従って1つもしくは複数のプロセッサ4404の制御を割り振る機能、および/または、1つもしくは複数のプロセッサ4404の制御を処理機能に提供することによって外部イベントに応答する割込み駆動のメインループを含み得る。
【０１３１】
図45は、通信リンク上のデータ通信のための方法を示すフローチャート4500である。この方法は、CCIeバスなどの制御データバスにおいてマスタデバイスによって実施され得る。ブロック4502で、第1の問合せが制御データバス上で送信され得る。第1の問合せは、第1のビットの構成を含み得る。
【０１３２】
ブロック4504で、スレーブデバイスの存在が決定され得、そこで、スレーブデバイスは、第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する。
【０１３３】
ブロック4506で、スレーブデバイスのSIDが識別されたか否かが決定され得る。SIDが識別された場合、この方法は終了し得る。SIDが識別されなかった場合、この方法はブロック4508へ続く。
【０１３４】
ブロック4508で、スレーブ識別子のすべてのビットが決定されるまで、追加の問合せが、異なるビットの構成とともに制御データバス上で繰り返し送信され得る。
【０１３５】
一例では、スレーブデバイスは、スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに対する応答をアサートする。
【０１３６】
スレーブデバイスは、第1の問合せ内で送信されたワードを、第1の問合せ内で送信されたマスクを適用することによってマスクされたスレーブ識別子のコピーと比較することによって、第1のビットの構成と第2のビットの構成との間のマッチを識別することができる。追加の問合せは、第2の問合せを含み得る。マスクが修正されて、比較のためにスレーブ識別子の追加のビットを露出する修正マスク取得され得、第2の問合せが制御データバス上で送信され得、そこで、第2の問合せは、第1のビットの構成と修正マスクとを含む。追加の問合せは、先行する問合せに対する応答が受信されないときに送信される第3の問合せを含み得る。第1のビットの構成が修正されて、第3のビットの構成が取得され得、第3の問合せが制御データバス上で送信され得、そこで、第3の問合せは、第3のビットの構成と、先行する問合せ内で送信されたマスクとを含む。
【０１３７】
追加の問合せは、スレーブ識別子のすべてのビットが決定された後に送信される第4の問合せを含み得る。マスクは、少なくとも1つのスレーブデバイスが応答をアサートすることを引き起こした以前の問合せ内で送信された値を有する、回復されたマスクとして回復され得る。以前の問合せ内で送信されたビットの構成が修正されて、第4のビットの構成が取得され得る。第4の問合せは、制御データバス上で送信され得、そこで、第4の問合せは、第4のビットの構成と回復されたマスクとを含む。
【０１３８】
異なるスレーブデバイスが、第4の問合せに応答することができる。異なるスレーブデバイスは、第4のビットの構成が、異なるスレーブデバイスに関連付けられる異なるスレーブ識別子内の対応するビットの構成にマッチするとき、応答をアサートすることができる。
【０１３９】
場合によっては、第1のビットの構成を修正することは、第1のビットの構成の有効なMSBの値をトグルすることを含む。有効なMSBは、マスクの適用によってスレーブ識別子内で抑制されない最高値ビットに対応するビットとして定義され得る。
【０１４０】
場合によっては、複数のスレーブデバイスが、第1の問合せに対して、その問合せによって定義された応答期間内に応答することができる。複数のスレーブデバイスは、第1のビットの構成が、複数のスレーブデバイスのそれぞれのスレーブ識別子内の対応するビットの構成にマッチするとき、応答をアサートすることによって応答することができる。応答は、たとえば、複数のスレーブデバイスによって共有される制御データバスを介してアサートされ得る。
【０１４１】
一例では、制御データバスは2ラインバスである。第1の問合せは、電源投入/リセットイベント、または、スレーブデバイスが制御データバスに最初に結合されるときにスレーブデバイスによって生成された割込みに応答して送信され得る。スレーブデバイスは、CCIeプロトコルに従って動作することができる。問合せは、スキャンコマンドにおいて送信され得る。スキャンコマンドは、制御データバスに結合されたすべてのスレーブデバイスに向けられ得る(たとえば「SID Scan All」コマンド)。スキャンコマンドは、前に識別されていない、制御データバスに結合されたスレーブデバイスに向けられ得る(たとえば「SID Scan New」コマンド)。
【０１４２】
図46は、処理回路4602を採用する装置4600のためのハードウェア実装形態の一例を示す概念図である。この例では、処理回路4602は、バス4616によって概略的に表されるバスアーキテクチャを用いて実装される場合がある。バス4616は、処理回路4602の具体的な適用例および全体的な設計制約に応じて、任意の数の相互接続するバスおよびブリッジを含む場合がある。バス4616は、プロセッサ4612によって概略的に表される1つまたは複数のプロセッサと、プロセッサ可読記憶媒体4614によって概略的に表されるコンピュータ可読媒体とを含む様々な回路を互いにリンクさせる。バス4616は、タイミングソース、タイマー、周辺機器、電圧調整器、および電力管理回路などの様々な他の回路をリンクさせることもできる。バスインターフェース4618は、バス4616とトランシーバ4620との間のインターフェースを提供する。トランシーバ4620は、送信媒体を介して様々な他の装置と通信するための手段を提供するバスインターフェースを含む場合がある。装置の性質に応じて、ユーザインターフェース4622(たとえば、キーパッド、ディスプレイ、スピーカ、マイクロフォン、ジョイスティック)が設けられる場合もある。1つまたは複数のクロック発生回路またはモジュール4624は、処理回路4602内に設けられるか、あるいは処理回路4602および/または1つもしくは複数のプロセッサ4612によって制御される場合がある。一例では、クロック発生回路またはモジュール4624は、1つもしくは複数の水晶発振器、1つもしくは複数の位相ロックループデバイス、および/または、1つもしくは複数の構成可能なクロックツリーを含む場合がある。
【０１４３】
プロセッサ4612は、バス4616の管理と、プロセッサ可読記憶媒体4614に記憶されたソフトウェアの実行を含む全体的な処理とを担当する。ソフトウェアは、プロセッサ4612によって実行されるとき、処理回路4602に、任意の特定の装置の上記で説明した様々な機能を実行させる。プロセッサ可読記憶媒体4614は、ソフトウェアを実行するときにプロセッサ4612によって操作されるデータを記憶するために使用される場合がある。
【０１４４】
1つの構成では、処理回路は、CCIeバスなどの制御データバス4620上で情報を送信するモジュールおよび/または回路4604を含み得る。処理回路は、問合せ内で送信されるマスクおよび/またはSIDビットを修正するように構成された、1つまたは複数のモジュールおよび/または回路4606を含み得る。処理回路は、問合せを構成し、問合せのシーケンスを使用して、SIDについてのスキャンを行うためのモジュールおよび/または回路4608を含み得る。処理回路は、たとえば、IRQバス上でIRQのアサーションを検出および処理するモジュールおよび/または回路4610を含み得る。一例では、モジュールおよび/または回路4604、4606、4608、4610、ならびにバスインターフェース4618は、協調して、第1の問合せを制御データバス上で送信し、第1の問合せは第1のビットの構成を含むこと、第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する、スレーブデバイスの存在を決定すること、スレーブ識別子のすべてのビットが決定されるまで、追加の問合せを、異なるビットの構成とともに制御データバス上で繰り返し送信することを行うことができる。スレーブデバイスは、スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに応答して、割込みをアサートすることができる。スレーブデバイスは、第1の問合せ内で送信されたワードを、第1の問合せ内で送信されたマスクを適用することによってマスクされたスレーブ識別子のコピーと比較することによって、第1のビットの構成と第2のビットの構成との間のマッチを識別することができる。
【０１４５】
開示されたプロセスにおけるステップの特定の順序または階層は、例示的な手法の説明であることを理解されたい。設計上の選好に基づいて、プロセスにおけるステップの特定の順序または階層が並べ替えられ得ることを理解されたい。添付の方法クレームは、様々なステップの要素を例示的な順序で提示したものであり、提示された特定の順序または階層に限定されることを意味するものではない。
【０１４６】
前述の説明は、いかなる当業者も本明細書で説明する様々な態様を実施することを可能にするように与えられる。これらの態様の種々の変更形態は、当業者に容易に明らかになり、本明細書に定められた一般的な原理は、他の態様にも適用することができる。したがって、特許請求の範囲は本明細書で示す態様に限定されるよう意図されているわけではなく、文言通りの特許請求の範囲と整合するすべての範囲を許容するよう意図されており、単数の要素への言及は、そのように明記されていない限り、「唯一無二の」ではなく、「1つまたは複数の」を意味するよう意図されている。別段に明記されていない限り、「いくつかの」という用語は「1つまたは複数の」を指す。当業者に知られているまたは後で知られることになる、本開示全体にわたって説明した様々な態様の要素の構造的および機能的なすべての均等物は、参照により本明細書に明確に組み込まれ、特許請求の範囲によって包含されることが意図される。その上、本明細書で開示する内容は、そのような開示が特許請求の範囲で明記されているかどうかにかかわりなく、公に供することは意図されていない。いかなるクレーム要素も、要素が「ための手段」という語句を使用して明確に記載されていない限り、ミーンズプラスファンクションとして解釈されるべきではない。
【０１４７】
図に示す構成要素、ステップ、特徴、および/または機能のうちの1つまたは複数は、並べ替えられてもよく、ならびに/あるいは、単一の構成要素、ステップ、特徴、または機能に組み合わされてもよく、またはいくつかの構成要素、ステップ、または機能で具現化されてもよい。また、本明細書で開示する新規の特徴から逸脱することなく追加の要素、構成要素、ステップ、および/または機能が、同様に追加され得る。図に示す装置、デバイス、および/または構成要素は、図に記載した方法、特徴、またはステップのうちの1つまたは複数を実施するように構成され得る。本明細書で説明する新規のアルゴリズムはまた、効率的にソフトウェアに実装され、および/またはハードウェアに埋め込まれ得る。
【０１４８】
さらに、実施形態は、フローチャート、流れ図、構造図、またはブロック図として示されるプロセスとして説明される場合があることに留意されたい。フローチャートは動作を順次プロセスとして説明する場合があるが、動作の多くは並行してまたは同時に実施され得る。さらに、動作の順序は並べ替えることができる。プロセスは、その動作が完了したとき、終了する。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応するときには、その終了は、その関数が、呼出し関数またはメイン関数に戻ることに対応する。
【０１４９】
その上、記憶媒体は、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および/または情報を記憶するための他の機械可読媒体を含む、データを記憶するための1つまたは複数のデバイスを表す場合がある。「機械可読媒体」という用語は、限定はしないが、ポータブルまたは固定ストレージデバイス、光ストレージデバイス、ワイヤレスチャネル、ならびに命令および/またはデータを記憶するか、包含するか、または搬送することができる様々な他の媒体を含む。
【０１５０】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはそれらの任意の組合せによって実装され得る。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装されるとき、必要なタスクを実施するためのプログラムコードまたはコードセグメントは、記憶媒体または他のストレージなどの機械可読媒体に記憶され得る。プロセッサは必要なタスクを実施することができる。コードセグメントは、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造もしくはプログラムステートメントの任意の組合せを表すことができる。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡し、かつ/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合することができる。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む任意の適切な手段を介して渡すことができるか、転送することができるか、または送信することができる。
【０１５１】
本明細書で開示する例に関して説明する様々な例示的な論理ブロック、モジュール、回路、要素、および/または構成要素は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理構成要素、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実施するように設計されたそれらの任意の組合せで実装または実施され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替としてプロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティング構成要素の組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、いくつかのマイクロプロセッサ、DSPコアと連係した1つまたは複数のマイクロプロセッサ、あるいは他の任意のそのような構成として実装され得る。
【０１５２】
本明細書で開示する例に関して説明する方法またはアルゴリズムは、直接ハードウェアにおいて、プロセッサによって実行可能なソフトウェアモジュールにおいて、または両方の組合せにおいて、処理ユニット、プログラミング命令、または他の指示の形態で具現化されてよく、かつ、単一のデバイスに含まれてよく、または複数のデバイスにわたって分散されてよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体に存在することができる。記憶媒体は、プロセッサがその記憶媒体から情報を読み取り、かつその記憶媒体に情報を書き込むことができるように、プロセッサに結合され得る。代替として、記憶媒体は、プロセッサと一体化され得る。
【０１５３】
本明細書で開示する実施形態に関して説明する、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを当業者はさらに諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能の観点から説明した。そのような機能がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約によって決まる。
【０１５４】
本明細書で説明する本発明の様々な特徴は、本発明から逸脱することなく、異なるシステムにおいて実施され得る。上記の実施形態は例にすぎず、本発明を限定するものと解釈すべきではないことに留意されたい。実施形態の説明は、例示的なものであり、特許請求の範囲を限定するものではない。したがって、本教示は、他のタイプの装置に容易に適用することができ、多くの代替形態、変更形態、および変形形態が当業者には明らかであろう。
【符号の説明】
【０１５５】
102  デバイス
104  ベースバンドプロセッサ
106  イメージセンサ
108  マルチモード制御データバス、制御データバス、共有制御データバス、共有バス、制御バス
112  デバイス、マスタデバイス、マルチモードマスタデバイス、マスタ
114  デバイス、スレーブデバイス
116  画像データバス
118  デバイス、周辺デバイス
122、124  周辺デバイス
202  元のクロック
204  データ
206  送信シンボル
208  クロック情報
210  元のデータ
302  送信機
304  データビット
308  ビット-遷移番号変換器ブロック
310  遷移-シンボルブロック
316、322、404  順次シンボル
320  受信機
324  クロックラインSCL、SCLライン
326  データラインSDA、SDAライン
328  クロック-データ復元(CDR)ブロック
330  シンボル-遷移番号変換器ブロック
332  遷移番号-ビット変換器
402  遷移番号
406  第1のサイクル
408  第2のサイクル
410  第3のサイクル
412  第4のサイクル
502  送信機側(TX:TからSへ)
504  受信機側(RX:SからTへ)
506、1412、1514、1616、1716、2220、4320  テーブル
602  3進数
1102  一般呼出し、I2C一般呼出し
1104  「CCIeモード」バイトまたはインジケータ
1202  CCIe呼出し、終了呼出し
1204  「終了」コード/インジケータ、一般呼出し
1206  「一般呼出し」
1208  「終了」コード
1302  CCIe SIDワードフォーマット
1304  16ビットのスレーブ識別子(SID)
1402  CCIeアドレスワードフォーマット
1404  16ビットのアドレス
1406  アドレスワード
1408、1504、1608、1706  制御コード
1410、1510、1610、1708  エラー検出定数
1500  書込みデータワードフォーマット、データワード、書込みデータワード
1502  16ビットの書込みデータ部分
1600  読取り指定ワードフォーマット、読取り指定データワード
1604  16ビットの読取りデータ値部分、「読取り指定」(RS)ワード
1607  最後のアドレスワード
1612  「読取り指定」(RS)ワード
1702  読取りデータワードフォーマット、読取りデータワード
1704  16ビットの読取りデータ値部分
1707  SID
1802  シリアルデータラインSDA、SDAライン
1804  シリアルクロックラインSCL、SCLライン
1806、1906、1908、1910  START条件
1808  スレーブID
1902、2426  SDAライン
1904、2427  SCLライン
2200、4300  CCIe送信の一例
2202  SID「Scan All」コマンド、「Scan All」コマンド
2204、4304  ペイロード
2206  応答期間、応答、「RESP」
2208、4308  SIDマスクペア
2210、4310  ユニットスキャンID、ユニットSID問合せ
2300  アルゴリズム
2406  応答期間
2412  開始Sインジケータ
2414  第nのRXCLK
2416  第n+1のRXCLK
2418  第n+2のRXCLK
2420  第n+3のRXCLK
2424  内部SDAマスク、SDAマスク
2430  SIDスキャン応答
2530  SIDビット
2532  マスク
2602  SIDビットインデックス
2604  最下位ビット
2704  ビット1
2804  ビット2
2904  ビット3
3104  ビット4
3106  ビット7
3204  ビット8
3404  ビット9
3406  ビット15
4302  SID「Scan New」コマンド
4306  応答期間、応答
4402、4602  処理回路
4404、4612  プロセッサ
4406  ストレージ
4408、4618  バスインターフェース
4410、4616  バス
4412  トランシーバ
4414  ランタイムイメージ
4416  ソフトウェアモジュール
4418、4622  ユーザインターフェース
4420  時分割プログラム
4422  論理回路
4600  装置
4604  制御データバス4620上で情報を送信するモジュールおよび/または回路、モジュールおよび/または回路
4606  問合せ内で送信されるマスクおよび/またはSIDビットを修正するように構成されたモジュールおよび/または回路、モジュールおよび/または回路
4608  問合せを構成し、問合せのシーケンスを使用して、SIDについてのスキャンを行うためのモジュールおよび/または回路、モジュールおよび/または回路
4610  IRQバス上でIRQのアサーションを検出および処理するモジュールおよび/または回路、モジュールおよび/または回路
4614  プロセッサ可読記憶媒体
4620  トランシーバ、制御データバス
4624  クロック発生回路またはモジュール
【図１】
0006277267.tif 000002
【図２】
0006277267.tif 000003
【図３】
0006277267.tif 000004
【図４】
0006277267.tif 000005
【図５】
0006277267.tif 000006
【図６】
0006277267.tif 000007
【図７】
0006277267.tif 000008
【図８】
0006277267.tif 000009
【図９】
0006277267.tif 000010
【図１０】
0006277267.tif 000011
【図１１】
0006277267.tif 000012
【図１２】
0006277267.tif 000013
【図１３】
0006277267.tif 000014
【図１４】
0006277267.tif 000015
【図１５】
0006277267.tif 000016
【図１６】
0006277267.tif 000017
【図１７】
0006277267.tif 000018
【図１８】
0006277267.tif 000019
【図１９】
0006277267.tif 000020
【図２０】
0006277267.tif 000021
【図２１】
0006277267.tif 000022
【図２２】
0006277267.tif 000023
【図２３】
0006277267.tif 000024
【図２４】
0006277267.tif 000025
【図２５】
0006277267.tif 000026
【図２６】
0006277267.tif 000027
【図２７】
0006277267.tif 000028
【図２８】
0006277267.tif 000029
【図２９】
0006277267.tif 000030
【図３０】
0006277267.tif 000031
【図３１】
0006277267.tif 000032
【図３２】
0006277267.tif 000033
【図３３】
0006277267.tif 000034
【図３４】
0006277267.tif 000035
【図３５】
0006277267.tif 000036
【図３６】
0006277267.tif 000037
【図３７】
0006277267.tif 000038
【図３８】
0006277267.tif 000039
【図３９】
0006277267.tif 000040
【図４０】
0006277267.tif 000041
【図４１】
0006277267.tif 000042
【図４２】
0006277267.tif 000043
【図４３】
0006277267.tif 000044
【図４４】
0006277267.tif 000045
【図４５】
0006277267.tif 000046
【図４６】
0006277267.tif 000047