(58)【調査した分野】(Int.Cl.,DB名)
複数のマスタデバイスが結合される単線割込み要求(IRQ)バスであって、前記複数のマスタデバイスは、1つのアクティブマスタデバイスと、1つまたは複数の非アクティブマスタデバイスとを含む、単線割込み要求(IRQ)バスと、
前記複数のマスタデバイスが結合されるデータバスと、
前記アクティブマスタデバイス内の処理回路とを備え、前記処理回路は、
前記IRQバスを介してアサートされた割込み信号に基づいて、前記データバスに結合されるすべてのデバイスに関する前記データバスを介しての通信を管理し、
IRQ信号がアサートされたときを確認するために前記IRQバスを監視し、
どの非アクティブマスタデバイスが前記IRQバス上で前記IRQ信号をアサートしたかを確認するために、前記データバスを介して前記非アクティブマスタデバイスをポーリングし、
マスタ要求を行ったという非アクティブマスタデバイスからの指示を得ると、前記データバスの制御をアサート中非アクティブマスタデバイスに引き渡すように構成される、デバイス。
マスタ要求を行ったという前記非アクティブマスタデバイスからの前記指示は、前記1つまたは複数の非アクティブマスタデバイスから前記アクティブマスタデバイスへの送信を符号化することによって得られた未使用のビット内に符号化される、請求項1に記載のデバイス。
前記得られたインジケータに基づいて、前記IRQ信号が関連付けられる前記アサート中非アクティブマスタデバイスを識別するステップをさらに含む、請求項13に記載の方法。
どのデバイスが前記IRQバス上で前記IRQ信号をアサートしたかを確認するために、前記識別されたグループに関する前記デバイスをスキャンするステップをさらに含む、請求項16に記載の方法。
ポーリングされる各非アクティブマスタデバイスから得られたステータスレジスタ内の特定のビットを調べることによって、前記ポーリングされる非アクティブマスタデバイスが前記IRQ信号をアサートし、前記マスタ要求を行ったか否かを確認するステップをさらに含む、請求項13に記載の方法。
単線割込み要求(IRQ)バスに結合するための第1のインターフェースであって、複数の他のデバイスが前記単線割込み要求(IRQ)バスに結合される、第1のインターフェースと、
データバスに結合するための第2のインターフェースであって、前記複数の他のデバイスが前記データバスに結合される、第2のインターフェースと、
前記第1のインターフェースおよび前記第2のインターフェースに結合される処理回路とを備え、前記処理回路は、
前記IRQバスを介してアサートされた割込み信号に基づいて、前記データバスに結合されるすべてのデバイスに関する前記データバスを介しての通信を管理し、
IRQ信号がアサートされたときを確認するために前記IRQバスを監視し、
どの非アクティブマスタデバイスが前記IRQバス上で前記IRQ信号をアサートしたかを確認するために、前記データバスを介して前記非アクティブマスタデバイスをポーリングし、
マスタ要求を行ったという非アクティブマスタデバイスからの指示を得ると、前記データバスの制御をアサート中非アクティブマスタデバイスに引き渡すように構成される、デバイス。
【発明を実施するための形態】
【0015】
以下の説明では、実施形態を完全に理解してもらうために、具体的な詳細が与えられる。しかしながら、実施形態はこれらの具体的な詳細を用いることなく実施できることは当業者によって理解されるだろう。たとえば、回路は、不必要な詳細で実施形態を不明瞭にしないために、ブロック図で示される場合がある。他の例では、よく知られている回路、構造、および技法は、実施形態を不明瞭にしないために、詳細に示されない場合がある。
【0016】
概説
第1の特徴は、複数のマスタデバイスがシングルマスタバスを共有するための方法を提供する。いくつかのバスアーキテクチャ(たとえば、CCIおよびCCIe)において、単一のマスタのみが、共有されるデータバスを制御することを許される。そのようなバスアーキテクチャにおいて複数のマスタデバイスの動作に対応するために、新たなマスタデバイスが、共有単線割込み(IRQ)バスを介してIRQ信号をトリガするための機構が提供される。その後、現在のマスタデバイスは、どのマスタデバイスがIRQ信号をアサートしているかを確認するために、共有されるデータバスを介して他のマスタデバイスをポーリングする。アサート中マスタデバイスを識別すると、現在のマスタデバイスは、新たなマスタデバイスにデータバスの制御を与える。
【0017】
一態様によれば、他のマスタデバイスは、マスタモードにおいてのみ動作することができる。第2の態様によれば、他のマスタデバイスは、データバスの現在のマスタデバイスからデータバスの使用を要求することによって、マスタデバイス動作に切り替わることができるスレーブデバイスとすることができる。
【0018】
マスタ権限を転送するための例示的な方法
図1は、ベースバンドプロセッサ104およびイメージセンサ106を有し、画像データバス116および制御データバス108(たとえば、I2Cバス)を実装するデバイス102を示すブロック図である。
図1はカメラデバイス内の制御データバス108を示すが、この制御データバス108が種々の異なるデバイスおよび/またはシステム内に実装される場合があることは明らかにすべきである。画像データは、画像データバス116(たとえば、高速差動DPHYリンク)を介して、イメージセンサ106からベースバンドプロセッサ104に送られる場合がある。一例では、制御データバス108は2つの線、クロック線(SCL)およびシリアルデータ線(SDA)を備えることができる。データ線SDAおよびクロック線SCLは、制御データバス108上にあるすべてのデバイス112、114、118および122に結合することができる。
【0019】
この例では、CCIeマスタ112が、CCIeスレーブ114と、複数の非アクティブマスタ118aおよび118bと、複数のCCIe(I2C)スレーブ122aおよび122bとに結合されるアクティブマスタである。制御データバス108アーキテクチャは、一度に1つのアクティブマスタのみを可能にする。さらに、マスタ112、118およびスレーブ114および122は、共有単線IRQバス120に結合することができる。
【0020】
非アクティブCCIeマスタ118aおよび118bは、一実装形態では、マスタとしてのみ動作するように構成することができる(たとえば、それらのマスタはスレーブとして動作することができない)。一般に、「マスタ」は、制御データバス108に結合されるデバイスであり、制御データバス108を介して(他のデバイスからの)通信を管理する。アクティブマスタになるために、非アクティブマスタは、現在のマスタによる制御データバス108を介しての制御を(たとえば、1つずつ)与えられる場合がある。たとえば、非アクティブマスタ118aがアクティブになりたい場合には、非アクティブマスタ118aは、(たとえば、単線共有IRQバス120をプルダウンすることによって)IRQバス120上でIRQ信号をアサートする。現在アクティブのマスタ112は、割込み信号を受信し、その後、どのデバイスが、いかなる理由で割込みをアサートしたかを判断するために、制御データバス108に結合されるすべてのデバイスをポーリング/スキャンする。たとえば、スレーブ114は、制御バス108の一時的使用を要求することができる。さらに、非アクティブマスタ118aおよび/または118bは、マスタ要求を行うことができる。すなわち、非アクティブマスタ118aおよび/または118bは、一時的な時間以上にわたって、制御を引き継ぎ、制御バス108を制御するための要求を行う。通常、新たにアクティブになるマスタは、無制限に、または別の非アクティブマスタが制御を求めるまで、制御データバス108を制御する。一態様によれば、共有単線IRQバス120は、マスタデバイス112、118aおよび118bだけでなく、スレーブデバイス114、122aおよび122bにも結合される。この共有IRQ線120は、プルアップ(たとえば、ハイに引き込まれる)場合があり、スレーブデバイスがIRQ信号をアサートするときにローに引き込まれる場合がある。すなわち、各スレーブデバイス114、122aおよび122bは、IRQ信号(たとえば、要求)をマスタデバイス112に送ることによって、制御データバス108上で送信するためのアクセスを独立して要求することができる。
【0021】
制御データバス108を介して、ベースバンドプロセッサ104と、イメージセンサ106および他の周辺デバイス114、122aおよび122b(スレーブデバイス)との間で制御データを交換することができる。
【0022】
いくつかの例では、単線IRQバスは、非同期バスとすることができる(たとえば、マスタデバイスまたは任意の他のデバイスによって管理されない)。これは、スレーブデバイスがいつでもIRQ信号を一方的にアサートできることを意味する。別の例では、単線IRQバスは、スレーブデバイスからマスタデバイスへの単方向信号送信専用とすることができる。すなわち、単線IRQバスは、IRQ信号のためにのみ使用することができ、他のタイプの信号には使用できない。一例では、制御データバス108は、カメラ制御インターフェース(CCI)またはCCI拡張互換バスとすることができる。別の例では、制御データバスは、スレーブデバイスとマスタデバイスとの間の双方向バスとすることができる。
【0023】
一態様によれば、カメラ動作をサポートするために、改善された(すなわち、1MHzより高い)動作モードをマルチモード制御データバス108を介して実施することができる。I2Cバスを介してのこの改善された動作モードは、カメラの適用例のために使用されるとき、カメラ制御インターフェース拡張(CCIe)モードと呼ばれる場合がある。この例では、ベースバンドプロセッサ104はマスタノード112を含み、イメージセンサ106はスレーブノード114を含み、マスタノード112とスレーブノード114はいずれも、制御データバス108に結合されたスレーブ122aおよび122bのような他のレガシーI2Cデバイスの適切な動作に影響を与えることなく、制御データバス108を介してカメラ制御インターフェース拡張(CCIe)モードに従って動作することができる。一態様によれば、制御データバス108を介してのこの改善されたモードは、CCIeデバイスと、任意のレガシーI2Cスレーブデバイス122aおよび122bとの間に任意のブリッジデバイスを用いることなく実施することができる。一態様によれば、レガシーI2Cデバイス122aおよび122bは、第1のクロック、第1のバス速度および/または第1の信号プロトコルを有する第1のモードにおいて動作することができ、一方、CCIe対応デバイスは、第2のクロック、第2のバス速度および/または第2のプロトコルを有する第2のモードにおいて動作することができる。第1のクロック、第1のバス速度、および/または第1の信号プロトコルは、第2のクロック、第2のバス速度、および/または第2のプロトコルとは異なる場合がある。たとえば、第2のクロックおよび/または第2のバス速度はそれぞれ、第1のクロックおよび/または第1のバス速度よりも速くすることができるか、または高い速度を有することができる。
【0024】
一態様によれば、すべてのスレーブデバイス114、122aおよび122bは、第1の動作モードと第2の動作モードとを切り替える必要がないようなCCIe対応デバイスとすることができる。すなわち、すべてのシグナリングおよび/または通信は、第2のモードに従って(たとえば、第2のクロック、第2のバス速度および/または第2のプロトコルにおいて)実行することができる。たとえば、第2のモードは、第1の速度より高いビット速度を与えることができるので、第1のモードと第2のモードとの間を行き来する必要はない。実際には、第1のモードに適合するレガシーデバイスに対応する必要はないので、第2のモードより高い/速いビット速度を与える第3の動作モードを実施することができる。
【0025】
図2は、CCIeバス204(たとえば、制御データバス)およびIRQバス206に結合される複数のマスタおよび/またはスレーブデバイス202を含むシステムにおけるマスタ要求および引渡し動作を示す。非アクティブマスタX208が、IRQバス206上で割込み信号をアサートする。現在アクティブのマスタ1 210(現在のマスタ)が、アサートされた割込み信号を受信する。マスタ1 210は、どのデバイスがIRQ信号をアサートしたかを確認するために、CCIeバス204を介して各非アクティブマスタをポーリングする。アサート中マスタを識別すると、現在アクティブのマスタ210は、CCIeバス204の制御を放棄し、アサート中非アクティブマスタ208が、新たな現在アクティブのマスタになる。
【0026】
一例では、アサート中マスタを確認するために非アクティブマスタをそのようにポーリングすることは、ポーリングされている各非アクティブマスタ内の1つまたは複数のステータスレジスタをチェックする(たとえば、読み出すことを要求する)ことができる。一例では、そのようなステータスレジスタは、デバイスがIRQ信号をトリガ/アサートしたか否か、および/またはそのようなアサートがマスタ要求を目的とする(たとえば、制御データバスのマスタになることを要求する)か否かを指示することができる。一例では、非アクティブマスタがCCIeバス204の制御を引き継ぐのに、(IRQ信号をアサートした後に)非アクティブマスタによって現在のマスタにマスタ要求を指示するそのようなステータスレジスタ(またはCCIeバスを介しての他の情報)を搬送すれば十分な場合がある。他の実装形態では、非アクティブマスタは(たとえば、現在アクティブのマスタによってポーリングされた後に)、現在アクティブのマスタから、非アクティブマスタが現在CCIeバスの制御を有し、アクティブマスタになるべきであることを指示する付加メッセージを受信することができる。
【0027】
いくつかの実装形態では、CCIおよびCCIeのように、マスタ要求がアサートされている否かを指示する特定の機構が利用できない場合がある(たとえば、ステータスレジスタが、複数のマスタをサポートすることを意図していなかったため)。結果として、非アクティブマスタが、その新たなマスタとしてCCIeバス204を制御したいことを指示できるようにする方法が必要とされる。
【0028】
第1の特徴によれば、20ビットのうちの19ビットしかデータのために使用されないので、1つの予備ビットを利用することができる。この予備ビットを用いて、マスタ要求を指示することができる。
【0029】
通常のI2Cバスは、シリアルクロック(SCL)線およびシリアルデータ(SDA)線を含む。しかしながら、1つの特徴によれば、CCIeバス204は、クロックがシンボル送信内に埋め込まれる符号化されたデータ送信のために、これら2つの線を再利用することができる。
【0030】
図3は、コード変換されたシンボル内にクロック信号を埋め込むために、送信機においてデータビットをコード変換し、コード変換済みシンボルにするための例示的な方法を示すブロック図である。送信機302において、一連のデータビット304が3進数(3進法)(すなわち、「遷移数」)に変換され、その後、3進数が(順次)シンボルに変換され、シンボルがクロック線SCL312およびデータ線SDA314を介して送信される。一例では、2進データの元の20ビットが、12桁3進数に変換されることになるビット/遷移数変換器ブロック308に入力される。12桁3進数の各桁は、「遷移数」を表すことができる。2つの連続する遷移数は、同じ数字を有することができる。各遷移数は、2つの連続する順次シンボルが同じ値を有しないように、遷移/シンボルブロック310において順次シンボルに変換される。順次シンボルごとに1つの遷移が保証されるので、そのような順次シンボル遷移は、クロック信号を埋め込むための役割を果たすことができる。その後、各順次シンボル316が2線物理リンク(たとえば、SCL線312およびSDA線314を備えるI2Cバス)を介して送られる。
【0031】
図4は、3進数(遷移数)402と(順次)シンボル404との間の変換の一例を示す図である。3進数、3進法は、遷移数とも呼ばれ、3つの取り得る数字または状態、0、1または2のうちの1つを有することができる。3進数の2つの連続する数字において同じ値が現れる場合もあるが、2つの連続するシンボルは同じ値を有しない。
【0032】
変換関数は、先行する生のシンボル値に、遷移数+1を加算する。加算の結果として、3より大きな数になる場合には、その数が0からロールオーバし、その結果が、現在のシンボルのための状態番号になる。
【0033】
第1のサイクル406において、第1の遷移数1が入力されるときに、先行するシンボルが1であるので、先行するシンボルに遷移数1+1が加算され、その結果3が、物理リンクに送られる現在のシンボル状態になる。
【0034】
第2のサイクル408では、次のサイクルにおいて遷移数0が入力され、先行するシンボル3に遷移数0+1が加算される。加算の結果として、4は3より大きくなるので、ロールオーバされた数0が現在のシンボルになる。
【0035】
第3のサイクル410では、同じ遷移数0が入力される。変換ロジックが先行するシンボル0に1を加算し、現在のシンボル1を生成する。
【0036】
第4のサイクル412では、遷移数2が入力される。変換ロジックは、遷移数2+1を先行するシンボル1に加算し、現在のシンボル0を生成する(加算の結果、すなわち、4が3より大きいので、ロールオーバされた数0が現在のシンボルになる)。
【0037】
結果として、2つの連続する3進数字402が同じ数を有する場合であっても、この変換は、2つの連続するシンボル数字が異なる状態値を有することを保証する。このため、一連のシンボル404内の保証されたシンボル遷移がクロック信号を埋め込むための役割を果たすことができ、それにより、データ送信のためのI2Cバス内のクロック線SCLを解放することができる。
【0038】
図3を再び参照すると、受信機320において、そのプロセスは入れ替えられ、コード変換済みシンボルが元のビットに変換され、そのプロセスにおいて、シンボル遷移からクロック信号が抽出される。受信機320は、2線物理リンク(たとえば、SCL線324およびSDA線326を備えるI2Cバス)を介して一連の順次シンボル322を受信する。受信された順次シンボル322は、クロック-データ再生(CDR)ブロック328に入力され、クロックタイミングを再生し、コード変換済みシンボル(S)をサンプリングする。その後、シンボル/遷移数変換器ブロック330が、コード変換済み(順次)シンボルを、遷移数、すなわち、1つの3進数字に変換する。この例では、遷移数/ビット変換器332は、12個の遷移数を変換して、12桁3進数から元のデータの20ビットを復元する。
【0039】
本明細書において示される本技法を用いて、I2C標準バスが提供し、本明細書においてCCIeモードと呼ばれるものを超えて、制御バス108(
図1)または204(
図2)のリンク速度を高めることができる。一例において、制御データバス108に結合されるマスタノードおよび/またはスレーブノードが、標準的なI2Cバスを使用して可能である同じ制御データバスより高いビット速度を達成するために、シンボル送信内にクロック信号を埋め込む送信機および/または受信機(
図3に示される)を実装することができる。
【0040】
図5は、送信機502におけるビットから遷移数への、そしてその後、受信機504における遷移数からビットへの例示的な変換を示す。この例は、12個の遷移シンボルを用いる2線システムの場合の送信を示す。送信機502は、2進情報、Bitsを「Bits/12xT」変換器506に供給し、12個のシンボル遷移数T0〜T11を生成する。受信機504は12個のシンボル遷移数T0〜T11を受信し、シンボル遷移数は「12xT/Bits」変換器508に供給され、2進情報(Bits)が取り出される。T0〜T11の1つのTあたりにr個の取り得るシンボル遷移状態がある場合には、12個の遷移がr
12個の異なる状態を送ることができる。2線バスの場合、r=2
2-1である。結果として、遷移T0...T11は、(2
2-1)
12個の異なる状態を有することができるデータを含む。結果として、r = 4-1 = 3であり、状態の数=(4-1)
12 = 531441である。
【0041】
この例において、12個のシンボル遷移数を用いる2線システムの場合、1つのTあたりの取り得るシンボル遷移、rは3(=2
2-1)と考えることができる。1つのグループ内のシンボル数が12である場合には、それぞれがTi: 0, 1, 2である12桁3進数(3進法):T11, T10,…, T2, T1, T0を用いることができる。たとえば、{T11,T10,…,T2,T1,T0}={2,1,0,0,1,1,0,1,0,1,2,1}の場合、3進数は、
2100_1101_0121
3(3進数)
=2×3
11+1×3
10+0×3
9+0×3
8
+1×3
7+1×3
6+0×3
5+1×3
4
0×3
3+1×3
2+2×3
1+1×3
0
=416356(0x65A64)
である。
【0042】
このようにして、12個の遷移数を1つの数に変換することができる。3進数2100,1101,1101,0121
3が、たとえば
図3の遷移数として用いられる場合があり、それにより、各整数が順次シンボルにマッピングされる場合があり、その逆も同様であることに留意されたい。
【0043】
2線システムおよび12個のシンボル遷移数の場合に示される例は、n線システムおよびm個のシンボル遷移数に一般化することができる。T0〜Tm-1の1つのTあたりにr個の取り得るシンボル遷移状態がある場合、m個の遷移がr
m個の異なる状態、すなわち、r = 2
n-1個の状態を送ることができる。結果として、遷移T0...Tm-1は、(2
n-1)
m個の異なる状態を有することができるデータを含む。
【0044】
図6はデータワード610を示しており、ただし、16ビット(ビット0〜15)は読出しデータであり、3ビットはパリティビット(16〜18)である。言い換えると、読出しデータワードは16ビット読出しデータ値および3ビットパリティビットからなることができる。現在のアドレスワードの制御コードが'000'(C0)〜'101'(C5)であるとき、後続のアドレスワードが存在することになる。次の書込みアドレスは、現在のデータのアドレス+制御データ値である。'111'の制御コードは、SIDマーカのために予約されるので、違法である。制御コードが'110'(E)である場合には、次のワードはSID(スレーブID)または終了コードである。
図6には示されないが、データワード610は、非アクティブマスタデバイスが本明細書において示されるようにアクティブマスタデバイスになろうと試みることを指示するために用いられる予備ビット(たとえば、第20のビット、またはビットカウントが第0のビットから開始するとき、「ビット19」とも呼ばれる)を有することができる。
図3〜
図5に示されるコード変換方式は、19ビット(ビット0〜18と呼ばれる場合もある)がデータワード610によって利用される場合があり、CCIeバス204(
図2)を介して送信するために符号化される場合があることを示す。しかし、そのコード変換方式は、12桁3進数内の少なくとも20ビットを実効的に送信することができる。ビット19が設定されるとき、ビット13〜18は常に0であり、ビット[12-0]は0x0000から0x1BF0までのみを表すことができる。結果として、ビット19(第20のビット)は、非アクティブマスタによって、マスタ要求を指示するために用いられる場合がある。
【0045】
図7は、
図3、
図4および
図5に示される符号化方式から生じる余分な(第20の)ビットの利用可能性を示す図である。コンピュータ科学において一般的であるように、ビット単位のカウントは0から開始し、第20のビットは多くの場合に、ビット19と呼ばれる。ここで、ビット0〜18は、0000_0000_0000
3から2221_2201_2001
3の3進数範囲内で表される。2221_2201_2002
3から2222_2222_2222
3の範囲内の3進数は使用されない。結果として、3進数範囲2221_2201_2002
3から2222_222_2222
3を用いて、ビット19(すなわち、第20のビット)を表すことができる。言い換えると、2221_2201_2002
33進数は、1000_0000_0000_0000_0000 2進数(0x80000 16進数)であり、2222_2222_2222
33進数(0x81BF0)は取り得る最も大きな12桁の3進数である。マスタ要求の一実装形態では、アサート中非アクティブマスタによって、第20のビット(ビット19)が1に設定される。
【0046】
図8は、アクティブマスタデバイスが、データバスの制御を非アクティブマスタデバイスに転送するための方法を示す。アクティブマスタデバイスは、制御データバスおよび共有単線割込み(IRQ)バスに結合することができる。複数の非アクティブマスタデバイスおよび/またはスレーブデバイスも、制御データバスおよび共有単線割込みバスに結合することができる。アクティブマスタデバイスは、IRQバスを介してアサートされる割込み信号に基づいて、データバスに結合されるすべてのデバイスに関するデータバスを介しての通信を管理することができる。アクティブマスタデバイスは、IRQ信号がアサートされたときを確認するために、IRQバスを監視することができる、804。その後、マスタデバイスは、どの非アクティブマスタデバイスがIRQバス上でIRQ信号をアサートしたかを確認するために、非アクティブマスタデバイスをポーリングすることができる、806。マスタ要求を行ったという非アクティブマスタデバイスのうちの1つからの指示を得ると、アクティブマスタは、データバスの制御をアサート中非アクティブマスタデバイスに引き渡す、808。
【0047】
図9は、単線IRQバス920が複数のスレーブデバイス918a〜cおよび1つまたは複数のマスタデバイス912a〜cによっていかに共有される場合があるかを示すブロック図であり、
図2に示されるようなマスタ制御の要求および転送を実施することができる。この例では、スレーブデバイス918a〜cおよびマスタデバイス912a〜cは論理的にグループ化される(たとえば、グループ-1 906a、グループ-2 906bなど)。そのようなグループ化は、たとえば、あらかじめ構成することができるか、またはアクティブマスタ1デバイス912aによる起動時に動的に規定することができ(たとえば、列挙による)、その場合、マスタデバイス2および3 912b〜cは非アクティブである。そのようなグループ化によって、マスタデバイス912aは、許容できないほどの遅延を生じることなく、どのスレーブデバイスおよび/または非アクティブマスタデバイスがIRQバス920上でIRQ信号をトリガしたかを、より迅速に識別できるようになる。
【0048】
各デバイスグループ906aおよび906bは、異なるIRQ信号を有することができる(たとえば、
図10に示される)。たとえば、第1のグループ906aは、第1の期間を有する第1の信号を用いることができ、第2のグループ906bは、第2の期間を有する第2の信号を用いることができ、それ以外も同様である。たとえば、「期間」は、アサート中スレーブデバイスによってIRQバス920がローに引き込まれる時間長とすることができる。他の形の信号区別、たとえば、異なるスレーブデバイスグループによって用いられるIRQ信号に関して異なる電圧レベルなどを用いることもできることに留意されたい。一実装形態では、デバイスの「グループ」は、各「グループ」が単一のデバイスを含む場合があるように、論理グループを規定することができる。他の実装形態では、各「グループ」は、2つ、3つおよび/または4つのデバイスまたはそれより多くのデバイスを含むことができる。グループあたりのスレーブデバイスまたはマスタデバイスの数は、アサート中デバイスに問い合わせ、識別するのに要する時間の関数とすることができる。たとえば、IRQバス920に結合されるすべてのデバイスがアクティブマスタデバイス912aによって問い合わせられなければならない場合には、これにより、許容できないほどの長い遅延が生じるおそれがある。結果として、デバイスをグループ化し、グループごとに異なるIRQ信号を使用することによって、マスタデバイス912aは、マスタ要求を指示するために設定されたビット19を有するアサート中デバイスを識別できるようになる。さらに、非アクティブマスタが906aにグループ化され、スレーブが906bにグループ化されるように示されるが、非アクティブマスタおよびスレーブは、一緒にグループ化することができる。
【0049】
マスタデバイス912aは、共有単線IRQバス920上でIRQ信号の発生を検出し、グループ内の各デバイスに問い合わせ、どのデバイスがIRQ信号をトリガまたはアサートしたかを識別する。たとえば、IRQ信号がグループ2 906bスレーブデバイスを識別する場合には、アクティブマスタデバイス912aは、グループ2内の第1のスレーブデバイス918aに(制御データバス908を用いて)レジスタステータス要求を送ることができる。
【0050】
第1のスレーブデバイス918aのステータス応答が、アサート中スレーブデバイスでないことを指示する場合には、マスタデバイス912aは、グループ2内の第2のスレーブデバイス918bに(制御データバス908を用いて)別のレジスタステータス要求を送ることができる。このプロセスは、IRQ信号をアサートしたスレーブデバイスが識別されるまで(スレーブがマスタになることができる一実装形態の場合)、グループ2 906b内のすべてのスレーブデバイスに対して繰り返される。このプロセスは、IRQ信号をアサートしたスレーブデバイスが識別されるまで、グループ2 906b内のすべてのスレーブデバイスに対して繰り返される。これは、グループからIRQステータスをスキャンする1つの方法であり、第1の要求中スレーブが見つけられるとき(たとえば、グループ内にさらに要求中スレーブが存在する場合であっても)、スキャニングが終わる。この方法が用いられるとき、マスタは第1の要求中スレーブからの要求のみに対応することを指示するか、または大域的に通知しなければならないので、対応されていないスレーブは、対応されるべきIRQを再発行しなければならないことを知ることができる。
【0051】
グループからのIRQステータスをスキャンする別の方法は、グループ内のすべてのスレーブをスキャンし(そして、第1の要求中スレーブを検出した後であってもスキャンし続け)、すべての要求中スレーブのリストを保持することである。このようにして、現在アクティブのマスタは、スレーブにIRQを再発行させることなく、複数の要求中スレーブを見つけ、すべての要求に対応することができる。
【0052】
同様に、非アクティブマスタ912b〜cのうちの1つからアクティブマスタ912aにシグナリングすることができる。たとえば、IRQ信号がグループ1 906aを識別する場合には、アクティブマスタデバイス912aは、グループ1内の第1の非アクティブマスタデバイス912bにレジスタステータス要求を(制御データバス908を用いて)送ることができる。
【0053】
第1の非アクティブマスタデバイス912bのステータス応答が、アサート中非アクティブマスタデバイスでないことを指示する場合には、アクティブマスタデバイス912aは、グループ1内の第2の非アクティブマスタデバイス912cに(制御データバス908を用いて)別のレジスタステータス要求を送ることができる。このプロセスは、IRQ信号をアサートした非アクティブマスタデバイスが識別されるまで、グループ1 906a内のすべての非アクティブマスタデバイスに対して繰り返される。さらに、非アクティブマスタデバイスが、IRQステータスレジスタのビット19を設定しているとき、現在のマスタは、その非アクティブマスタをアクティブにさせる。本明細書において用いられるときに、アクティブマスタという用語は、制御データバスを能動的に制御することを意味する。さらに、非アクティブマスタは、外部活動だけでなく、内部活動も行っている可能性があるが、非アクティブマスタは、制御データバスを介しての現在の制御を有しない。それゆえ、非アクティブは、活動していないことを意味するのではなく、むしろ、そのデバイスがその時点で制御データバスの通信または使用を能動的に制御または管理していないことのみを意味する。
【0054】
図10は、異なるグループに割り当てることができるか、または関連付けることができる異なるIRQ信号の例を示す図である。この例は、第1の期間を有する第1のIRQ信号1002と、第2の期間を有する第2のIRQ信号1004と、第3の期間を有する第3のIRQ信号1006とを示す。さらに、異なるグループを区別する任意の方法を利用して、割込み要求を送るグループを識別することができる。一例では、すべての非アクティブマスタデバイスに特定の信号を割り当てることができ、その信号を用いて、IRQバスを介してのマスタ要求を指示することができる。
【0055】
図11は、シングルマスタバスを介してのマルチマスタ動作のために構成された例示的なマスタデバイスを示すブロック図である。マスタデバイス1102は、第1の通信インターフェース/回路1106、第2の通信インターフェース/回路1108、および/または処理回路1104を含むことができる。第1の通信インターフェース/回路1106は、複数の他のデバイスが結合される場合がある単線割込み要求(IRQ)バスに結合するための役割を果たすことができる。第2の通信インターフェース/回路1108は、複数の他のデバイスがやはり結合されるデータバスに結合するための役割を果たすことができる。
【0056】
処理回路1104は、本明細書において説明される1つまたは複数の機能を実行する種々のサブ回路および/またはモジュールを含むことができる。たとえば、通信管理回路/モジュール1110は、IRQバスを介してアサートされた割込み信号に基づいて、データバスに結合されるすべてのデバイスに関するデータバスを介しての通信を管理するように構成することができる。IRQバス監視回路/モジュール1112は、IRQ信号がアサートされたときを確認するために、IRQバスを監視するように構成することができる。データバスポーリング回路/モジュール1114は、どの非アクティブマスタデバイスがIRQバス上でIRQ信号をアサートしたかを確認するために、データバスを介して非アクティブマスタデバイスをポーリングするように構成することができる。データバス引渡し回路/モジュール1116は、マスタ要求を行ったという非アクティブマスタデバイスからの指示を得ると、データバスの制御をアサート中非アクティブマスタデバイスに引き渡すように構成することができる。一例では、非アクティブマスタデバイスからのマスタ要求は、第1のインターフェースを介して得ることができる。非アクティブマスタデバイスからの指示は、第2のインターフェースを介して得ることができる。種々の例において、データバスはカメラ制御インターフェース拡張(CCIe)互換バスおよび/または双方向バスとすることができる。
【0057】
いくつかの実装形態では、処理回路は、得られたインジケータに基づいて、IRQ信号が関連付けられるアサート中非アクティブマスタデバイスを識別するようにさらに構成することができる。たとえば、各非アクティブマスタデバイスからのインジケータが異なるパルス幅を有する場合には、これは、アサート中非アクティブマスタを識別するのに十分である場合がある。
【0058】
他の実装形態では、処理回路は、IRQ信号が関連付けられるデバイスグループを識別するようにさらに構成することができる。たとえば、各デバイスグループは、単一のデバイスまたは複数のデバイスを含むことができる。グループが複数のデバイスを含む場合、処理回路は、どのデバイスがIRQバス上でIRQ信号をアサートしたかを確認するために、識別されたグループに関するデバイスをスキャンするようにさらに構成することができる。各グループが関連付けられるIRQ信号は、他のグループに関連付けられる他のIRQ信号とは異なるパルス幅を有することができる。
【0059】
処理回路は、(a)ポーリングされる各非アクティブマスタデバイスから得られたステータスレジスタ内の特定のビットを調べることによって、ポーリングされる非アクティブマスタデバイスがIRQ信号をアサートし、マスタ要求を行ったか否かを確認し、および/または(b)データバスの制御を転送するために、データバスを介してアサート中非アクティブマスタデバイスにインジケータを送るようにさらに構成することができる。
【0060】
図面に示された構成要素、ステップ、特徴、および/または機能のうちの1つまたは複数は、再配置し、かつ/または組み合わせて単一の構成要素、ステップ、特徴または機能にすることができるか、あるいは複数の構成要素、ステップ、または機能において具現することができる。本明細書において開示された新規の特徴から逸脱することなく、さらなる要素、構成要素、ステップ、および/または機能も追加することもできる。図示される装置、デバイス、および/または構成要素は、図示された方法、特徴、またはステップのうちの1つまたは複数を実行するように構成することができる。本明細書において記載の新規のアルゴリズムは、ソフトウェアにおいて効率的に実現され、および/またはハードウェアに埋め込まれてもよい。
【0061】
さらに、実施形態は、流れ図、フロー図、構造図、またはブロック図として示されるプロセスとして説明される場合があることに留意されたい。流れ図は、動作を順次プロセスとして説明する場合があるが、動作の多くは、並列にまたは同時に実行することができる。さらに、動作の順序は並べ替えることができる。プロセスは、その動作が完了したとき、終了する。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応することができる。プロセスが関数に対応するときには、その終了は、その関数が、呼出し関数またはメイン関数に戻ることに対応する。
【0062】
さらに、記憶媒体は、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および/または情報を記憶するための他の機械可読媒体を含む、データを記憶するための1つまたは複数のデバイスを表す場合がある。「機械可読媒体(machine readable medium)」という用語は、限定はしないが、ポータブルまたは固定記憶デバイス、光記憶デバイス、ワイヤレスチャネル、ならびに命令および/またはデータを記憶するか、包含するか、または搬送することができる種々の他の媒体を含む。
【0063】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはそれらの任意の組合せによって実現することができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードにおいて実現される場合、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、記憶媒体または他の記憶装置などの機械可読媒体に記憶することができる。プロセッサは必要なタスクを実行することができる。コードセグメントは、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造もしくはプログラムステートメントの任意の組合せを表すことができる。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡し、かつ/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合することができる。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク伝送などを含む任意の適切な手段を介して渡すことができるか、転送することができるか、または送信することができる。
【0064】
本明細書において開示される例に関して説明される種々の例示的な論理ブロック、モジュール、回路、要素、および/または構成要素は、汎用プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理構成要素、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書において説明される機能を実行するように設計されたそれらの任意の組合せで実現または実行することができる。汎用プロセッサはマイクロプロセッサとすることができるが、代替形態では、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることができる。プロセッサはまた、コンピューティング構成要素の組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、いくつかのマイクロプロセッサ、DSPコアと連係した1つまたは複数のマイクロプロセッサ、あるいは他の任意のそのような構成として実現することができる。
【0065】
本明細書において開示される例に関連して説明される方法またはアルゴリズムは、ハードウェアにおいて直接に、プロセッサによって実行可能なソフトウェアモジュールにおいて、またはその両方の組合せにおいて、処理ユニット、プログラミング命令、または他の指示の形において具現することができ、単一のデバイス内に含まれる場合があるか、複数のデバイスにわたって分散する場合がある。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体に存在することができる。記憶媒体は、プロセッサがその記憶媒体から情報を読み取り、かつその記憶媒体に情報を書き込むことができるように、プロセッサに結合することができる。代替形態では、記憶媒体はプロセッサと一体に構成することができる。
【0066】
本明細書において開示された実施形態に関連して説明される種々の例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップを、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実現できることは当業者はさらに理解されよう。ハードウェアとソフトウェアとのこの互換性を明確に示すために、種々の例示的な構成要素、ブロック、モジュール、回路、およびステップが、これまで概してそれらの機能の観点から説明されてきた。そのような機能がハードウェアで実現されるか、ソフトウェアにおいて実施されるのかは、システム全体に課される特定の用途および設計制約によって決まる。
【0067】
本明細書において記載される本発明の種々の特徴は、本発明から逸脱することなく、異なるシステムにおいて実施することができる。上記の実施形態は例にすぎず、本発明を限定するものと解釈すべきではないことに留意されたい。実施形態の説明は、例示的であり、特許請求の範囲を限定することは意図していない。したがって、本教示は、他のタイプの装置、ならびに多くの代替形態、変更形態、および変形形態に容易に適用できることは当業者には明らかであろう。