JP6277267B2 - CCIeバスを介したスレーブ識別子スキャニングおよびホットプラグ能力 - Google Patents

CCIeバスを介したスレーブ識別子スキャニングおよびホットプラグ能力 Download PDF

Info

Publication number
JP6277267B2
JP6277267B2 JP2016521307A JP2016521307A JP6277267B2 JP 6277267 B2 JP6277267 B2 JP 6277267B2 JP 2016521307 A JP2016521307 A JP 2016521307A JP 2016521307 A JP2016521307 A JP 2016521307A JP 6277267 B2 JP6277267 B2 JP 6277267B2
Authority
JP
Japan
Prior art keywords
bit
query
slave
configuration
control data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2016521307A
Other languages
English (en)
Other versions
JP2016539400A (ja
JP2016539400A5 (ja
Inventor
祥一郎 仙石
祥一郎 仙石
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2016539400A publication Critical patent/JP2016539400A/ja
Publication of JP2016539400A5 publication Critical patent/JP2016539400A5/ja
Application granted granted Critical
Publication of JP6277267B2 publication Critical patent/JP6277267B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Small-Scale Networks (AREA)

Description

関連技術の相互参照
本出願は、その内容全体が参照により本明細書に組み込まれている、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 クロック発生回路またはモジュール

Claims (28)

  1. マスタデバイスにより実施される方法であって、
    第1の問合せを制御データバスで送信するステップであって、前記第1の問合せは第1のビットの構成とマスクとを含むステップと、
    前記第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する、スレーブデバイスの存在を決定するステップと、
    前記スレーブ識別子のすべてのビットが決定されるまで、追加の問合せを、異なるビットの構成とともに前記制御データバスで繰り返し送信するステップと
    を含み、
    前記スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに対する応答が前記スレーブデバイスによりアサートされ、
    前記第1の問合せ内で送信された前記第1のビットの構成を、前記第1の問合せ内で送信された前記マスクを適用することによってマスクされた前記スレーブ識別子のコピーと比較することによって、前記第1のビットの構成と前記第2のビットの構成との間のマッチが識別される、方法。
  2. 前記追加の問合せが第2の問合せを含み、前記方法が、
    前記マスクを修正して、比較のために前記スレーブ識別子の追加のビットを露出する修正マスクを取得するステップと、
    前記第2の問合せを前記制御データバスで送信するステップであって、前記第2の問合せが、前記第1のビットの構成と前記修正マスクとを含むステップと
    をさらに含む、請求項1に記載の方法。
  3. 前記追加の問合せが、先行する問合せに対する応答が受信されないときに送信される第3の問合せを含み、前記方法が、
    前記第1のビットの構成の有効な最上位ビット(MSB)の値をトグルすることによって、前記第1のビットの構成を修正して、第3のビットの構成を取得するステップであって、前記有効なMSBが、前記先行する問合せ内で送信された前記マスクの適用によって前記スレーブ識別子内で抑制されない最高値ビットに対応するビットとして定義されるステップと、
    前記第3の問合せを前記制御データバスで送信するステップであって、前記第3の問合せが、前記第3のビットの構成と、前記先行する問合せ内で送信された前記マスクとを含むステップと
    をさらに含む、請求項1に記載の方法。
  4. 前記追加の問合せが、前記スレーブ識別子のすべてのビットが決定された後に送信される第4の問合せを含み、前記方法が、
    前記マスクを回復させて、少なくとも1つのスレーブデバイスが前記応答をアサートすることを引き起こした以前の問合せ内で送信された値を有する、回復されたマスクを取得するステップと、
    前記以前の問合せ内で送信された前記ビットの構成を修正して、第4のビットの構成を取得するステップと、
    前記第4の問合せを前記制御データバスで送信するステップであって、前記第4の問合せが、前記第4のビットの構成と前記回復されたマスクとを含むステップと
    をさらに含む、請求項1に記載の方法。
  5. 異なるスレーブデバイスが、前記第4の問合せに応答し、前記異なるスレーブデバイスが、前記第4のビットの構成が前記異なるスレーブデバイスに関連付けられる異なるスレーブ識別子内の対応するビットの構成にマッチするとき、前記応答をアサートする、請求項4に記載の方法。
  6. 複数のスレーブデバイスが、前記第1の問合せに応答し、前記複数のスレーブデバイスが、前記第1のビットの構成が前記複数のスレーブデバイスのそれぞれのスレーブ識別子内の対応するビットの構成にマッチするとき、同じ応答をアサートする、請求項1に記載の方法。
  7. 前記応答が、前記制御データバスの第1のラインを使用してアサートされる、請求項6に記載の方法。
  8. 前記制御データバスが2ラインバスであり、前記2ラインバスの両方のラインが、前記第1の問合せを転送するために使用される、請求項1に記載の方法。
  9. 前記スレーブ識別子のすべてのビットが決定された後、
    前記制御データバスに結合されたすべてのスレーブデバイスのためのすべてのスレーブ識別子が決定されるまで、追加の問合せを、異なるビットの構成とともに前記制御データバスで繰り返し送信するステップ
    をさらに含む、請求項1に記載の方法。
  10. 前記第1の問合せが、前記制御データバスに結合されたすべてのスレーブデバイスに向けられる、請求項1に記載の方法。
  11. 前記第1の問合せが、前に識別されていない、前記制御データバスに結合されたスレーブデバイスに向けられる、請求項1に記載の方法。
  12. 前記第1の問合せが、前記第2のビットの構成と前記第1のビットの構成との間のマッチがある場合、前記スレーブデバイスが前記制御データバスを介して応答しなければならない応答期間を定義する、請求項1に記載の方法。
  13. 前記第2のビットの構成と前記第1のビットの構成との間のマッチがある場合、前記スレーブデバイスが前記制御データバスの第1のラインを瞬間的にプルダウンすることによって、前記応答がアサートされる、請求項1に記載の方法。
  14. 前記制御データバスに結合された他のデバイスが、応答期間中に前記制御データバスの前記第1のラインからの入力をマスクする、請求項13に記載の方法。
  15. 制御データバスに結合されたスレーブデバイスと、
    前記制御データバスに結合され、前記制御データバスの通信を管理するように適応されたマスタデバイスであって、
    第1の問合せを前記制御データバスで送信することであって、前記第1の問合せは第1のビットの構成とマスクとを含むこと、
    前記第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する、スレーブデバイスの存在を決定すること、および
    前記スレーブ識別子のすべてのビットが決定されるまで、追加の問合せを、異なるビットの構成とともに前記制御データバスで繰り返し送信すること
    を行うように構成されたマスタデバイスと
    を備え、
    前記スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに対する応答が前記スレーブデバイスによりアサートされ、
    前記第1の問合せ内で送信された前記第1のビットの構成を、前記第1の問合せ内で送信された前記マスクを適用することによってマスクされた前記スレーブ識別子のコピーと比較することによって、前記第1のビットの構成と前記第2のビットの構成との間のマッチが識別される、デバイス。
  16. 前記追加の問合せが第2の問合せを含み、前記マスタデバイスが、
    前記マスクを修正して、比較のために前記スレーブ識別子の追加のビットを露出する修正マスクを取得すること、および
    前記第2の問合せを前記制御データバスで送信することであって、前記第2の問合せが、前記第1のビットの構成と前記修正マスクとを含むこと
    を行うようにさらに構成される、請求項15に記載のデバイス。
  17. 前記追加の問合せが、先行する問合せに対する応答が受信されないときに送信される第3の問合せを含み、前記マスタデバイスが、
    前記第1のビットの構成の有効な最上位ビット(MSB)の値をトグルすることによって、前記第1のビットの構成を修正して、第3のビットの構成を取得することであって、前記有効なMSBが、前記先行する問合せ内で送信された前記マスクの適用によって前記スレーブ識別子内で抑制されない最高値ビットに対応するビットとして定義されること、
    前記第3の問合せを前記制御データバスで送信することであって、前記第3の問合せが、前記第3のビットの構成と、前記先行する問合せ内で送信された前記マスクとを含むことを行うようにさらに構成される、請求項15に記載のデバイス。
  18. 前記追加の問合せが、前記スレーブ識別子のすべてのビットが決定された後に送信される第4の問合せを含み、前記マスタデバイスが、
    前記マスクを回復させて、少なくとも1つのスレーブデバイスが前記応答をアサートすることを引き起こした以前の問合せ内で送信された値を有する、回復されたマスクを取得すること、
    前記以前の問合せ内で送信された前記ビットの構成を修正して、第4のビットの構成を取得すること、および
    前記第4の問合せを前記制御データバスで送信することであって、前記第4の問合せが、前記第4のビットの構成と前記回復されたマスクとを含むこと
    を行うようにさらに構成され、
    異なるスレーブデバイスが、前記第4の問合せに応答し、前記異なるスレーブデバイスが、前記第4のビットの構成が前記異なるスレーブデバイスに関連付けられる異なるスレーブ識別子内の対応するビットの構成にマッチするとき、前記応答をアサートすることによって応答する、請求項15に記載のデバイス。
  19. 複数のスレーブデバイスが、前記第1の問合せに応答し、前記複数のスレーブデバイスが、前記第1のビットの構成が前記複数のスレーブデバイスのそれぞれのスレーブ識別子内の対応するビットの構成にマッチするとき、前記応答をアサートすることによって応答する、請求項15に記載のデバイス。
  20. 前記第1の問合せが、前記第2のビットの構成と前記第1のビットの構成との間のマッチがある場合、前記スレーブデバイスが前記制御データバスを介して応答しなければならない応答期間を定義する、請求項15に記載のデバイス。
  21. 前記第2のビットの構成と前記第1のビットの構成との間のマッチがある場合、前記スレーブデバイスが前記制御データバスの第1のラインを瞬間的にプルダウンすることによって、前記応答がアサートされる、請求項15に記載のデバイス。
  22. 前記制御データバスに結合された他のデバイスが、応答期間中に前記制御データバスの前記第1のラインからの入力をマスクする、請求項21に記載のデバイス。
  23. 第1の問合せを制御データバスで送信するための手段であって、前記第1の問合せは第1のビットの構成を含む手段と、
    前記第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する、スレーブデバイスの存在を決定するための手段と
    を備え、
    前記送信するための手段が、前記スレーブ識別子のすべてのビットが決定されるまで、追加の問合せを、異なるビットの構成とともに前記制御データバスで繰り返し送信するように構成され、
    前記スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに対する応答が前記スレーブデバイスによりアサートされ、
    前記第1の問合せ内で送信された前記第1のビットの構成を、前記第1の問合せ内で送信されたマスクを適用することによってマスクされた前記スレーブ識別子のコピーと比較することによって、前記第1のビットの構成と前記第2のビットの構成との間のマッチが識別される、デバイス。
  24. 前記追加の問合せが第2の問合せを含み、前記デバイスが、
    前記マスクを修正して、比較のために前記スレーブ識別子の追加のビットを露出する修正マスクを取得するための手段と、
    前記第2の問合せを前記制御データバスで送信するための手段であって、前記第2の問合せが、前記第1のビットの構成と前記修正マスクとを含む手段と
    をさらに備える、請求項23に記載のデバイス。
  25. 前記追加の問合せが、先行する問合せに対する応答が受信されないときに送信される第3の問合せを含み、前記デバイスが、
    前記第1のビットの構成の有効な最上位ビット(MSB)の値をトグルすることによって、前記第1のビットの構成を修正して、第3のビットの構成を取得するための手段であって、前記有効なMSBが、前記先行する問合せ内で送信された前記マスクの適用によって前記スレーブ識別子内で抑制されない最高値ビットに対応するビットとして定義される手段と、
    前記第3の問合せを前記制御データバスで送信するための手段であって、前記第3の問合せが、前記第3のビットの構成と、前記先行する問合せ内で送信された前記マスクとを含む手段と
    をさらに備える、請求項23に記載のデバイス。
  26. 複数のスレーブデバイスが、前記第1の問合せに応答し、前記複数のスレーブデバイスが、前記第1のビットの構成が前記複数のスレーブデバイスのそれぞれのスレーブ識別子内の対応するビットの構成にマッチするとき、前記応答をアサートし、前記応答が、複数のスレーブデバイスによって共有された前記制御データバスを介して、前記第1の問合せによって定義された応答期間内にアサートされる、請求項23に記載のデバイス。
  27. 1つまたは複数の命令が記憶された機械可読記憶媒体であって、前記命令は、少なくとも1つのプロセッサによって実行されたときに、前記少なくとも1つのプロセッサに、
    第1の問合せを制御データバスで送信することであって、前記第1の問合せは第1のビットの構成を含むこと、
    前記第1のビットの構成にマッチする第2のビットの構成を含むスレーブ識別子を有する、スレーブデバイスの存在を決定すること、および
    前記スレーブ識別子のすべてのビットが決定されるまで、追加の問合せを、異なるビットの構成とともに前記制御データバスで繰り返し送信すること
    を行わせ、
    前記スレーブ識別子内の対応するビットの構成にマッチするビットの構成を含む各問合せに対する応答が前記スレーブデバイスによりアサートされ、
    前記第1の問合せ内で送信された前記第1のビットの構成を、前記第1の問合せ内で送信されたマスクを適用することによってマスクされた前記スレーブ識別子のコピーと比較することによって、前記第1のビットの構成と前記第2のビットの構成との間のマッチが識別される、非一時的機械可読記憶媒体。
  28. 複数のスレーブデバイスが、前記第1の問合せに応答し、前記複数のスレーブデバイスが、前記第1のビットの構成が前記複数のスレーブデバイスのそれぞれのスレーブ識別子内の対応するビットの構成にマッチするとき、前記応答をアサートし、前記応答が、前記複数のスレーブデバイスによって共有された前記制御データバスを介して、前記第1の問合せによって定義された応答期間内にアサートされる、請求項27に記載の非一時的機械可読記憶媒体。
JP2016521307A 2013-10-09 2014-10-09 CCIeバスを介したスレーブ識別子スキャニングおよびホットプラグ能力 Expired - Fee Related JP6277267B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361889028P 2013-10-09 2013-10-09
US61/889,028 2013-10-09
PCT/US2014/059982 WO2015054549A1 (en) 2013-10-09 2014-10-09 SLAVE IDENTIFIER SCANNING AND HOT-PLUG CAPABILITY OVER CCIe BUS

Publications (3)

Publication Number Publication Date
JP2016539400A JP2016539400A (ja) 2016-12-15
JP2016539400A5 JP2016539400A5 (ja) 2017-09-14
JP6277267B2 true JP6277267B2 (ja) 2018-02-07

Family

ID=51894189

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016521307A Expired - Fee Related JP6277267B2 (ja) 2013-10-09 2014-10-09 CCIeバスを介したスレーブ識別子スキャニングおよびホットプラグ能力

Country Status (6)

Country Link
US (1) US9672176B2 (ja)
EP (1) EP3055780A1 (ja)
JP (1) JP6277267B2 (ja)
KR (1) KR101861453B1 (ja)
CN (1) CN105637496B (ja)
WO (1) WO2015054549A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519603B2 (en) * 2013-09-09 2016-12-13 Qualcomm Incorporated Method and apparatus to enable multiple masters to operate in a single master bus architecture
US10169274B1 (en) 2017-06-08 2019-01-01 Qualcomm Incorporated System and method for changing a slave identification of integrated circuits over a shared bus
CN107332749B (zh) * 2017-07-05 2020-09-22 北京东土科技股份有限公司 基于工业互联网现场层宽带总线架构的同步方法及装置
US11030133B2 (en) * 2018-08-30 2021-06-08 Qualcomm Incorporated Aggregated in-band interrupt based on responses from slave devices on a serial data bus line
CN110532196B (zh) * 2019-08-30 2021-10-01 英业达科技有限公司 多地址响应的复杂可程序逻辑装置及运作方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62125731A (ja) * 1985-11-26 1987-06-08 Nec Corp ポ−リング制御装置
EP0988042B1 (en) * 1997-04-15 2008-01-09 Advanced Viral Research Corp. Combination of product r and an antiviral agent in the therapy of hiv infections
US20020159477A1 (en) * 2001-02-28 2002-10-31 Koninklijke Philips Electronics N.V. Enhanced crosspoint bus protocol
US7631110B2 (en) * 2006-05-03 2009-12-08 Standard Microsystems Corporation Address assignment through device ID broadcast
DE102008059204B9 (de) 2008-11-27 2011-05-05 Infineon Technologies Ag Verfahren zum Suchen eines Slave-Knotens in einem Kommunikationsnetz, Master-Knoten und Slave-Knoten für ein Kommunikationsnetz
US8225021B2 (en) * 2009-05-28 2012-07-17 Lexmark International, Inc. Dynamic address change for slave devices on a shared bus
JP2012100222A (ja) * 2010-11-05 2012-05-24 Denki Kogyo Co Ltd 識別id検索方法
US9037766B2 (en) 2011-11-18 2015-05-19 Fairchild Semiconductor Corporation Pin selectable I2C slave addresses
WO2013077012A1 (ja) * 2011-11-25 2013-05-30 三菱電機株式会社 通信装置、通信方法、及び通信システム

Also Published As

Publication number Publication date
US9672176B2 (en) 2017-06-06
CN105637496A (zh) 2016-06-01
US20150100714A1 (en) 2015-04-09
JP2016539400A (ja) 2016-12-15
EP3055780A1 (en) 2016-08-17
KR20160067222A (ko) 2016-06-13
CN105637496B (zh) 2018-09-07
KR101861453B1 (ko) 2018-05-28
WO2015054549A1 (en) 2015-04-16

Similar Documents

Publication Publication Date Title
US10353837B2 (en) Method and apparatus to enable multiple masters to operate in a single master bus architecture
JP6411480B2 (ja) CCIeプロトコルを介したエラー検出能力
JP6277267B2 (ja) CCIeバスを介したスレーブ識別子スキャニングおよびホットプラグ能力
EP3095038B1 (en) Camera control interface extension with in-band interrupt
KR101790900B1 (ko) 카메라 제어 인터페이스 확장 버스
JP2017511044A (ja) エラー検出最適化を容易にするための共有バスを介したビット割振り
US9519603B2 (en) Method and apparatus to enable multiple masters to operate in a single master bus architecture
KR102445344B1 (ko) 시리얼 버스를 위한 수신 클록 캘리브레이션
US20150100713A1 (en) Coexistence of i2c slave devices and camera control interface extension devices on a shared control data bus
JP2016533608A (ja) カメラ制御インターフェースのスレーブデバイス間通信
JP2017514394A (ja) マルチシンボルワードのための同期方法
JP2016532967A (ja) 周辺装置からのirq線の数を1線に最小化する方法
WO2017172269A1 (en) Method and apparatus to enable multiple masters to operate in a single master bus architecture
JP2017501493A (ja) レシーバクロックのみを用いるCCIeレシーバ論理レジスタ書込み

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170801

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170801

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170801

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170808

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170904

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171204

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180115

R150 Certificate of patent or registration of utility model

Ref document number: 6277267

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees