(57)【要約】  少なくとも第1のラインを含む制御データバスを備えるデバイスが提供される。マスターデバイスは、制御データバスに結合され得、制御データバスを制御するように構成され得る。複数のスレーブデバイスは、制御データバスに結合され得、第1のラインを共有することができる。マスターデバイスは、全てのスリープしているスレーブデバイスをウェイクアップさせる単一のグローバルウェイクアップ信号を、制御データバス上で送るように構成され得る。代替的には、マスターデバイスは、特定のスレーブデバイスの「標的ウェイクアップ」を実施するために、非標的スレーブデバイスに、標的スリープコマンドが続くグローバルウェイクアップ信号を送ることができる。マスターデバイスは、所定の期間の間、第1のラインをローにすることによって、単一のグローバルウェイクアップ信号を送ることができる。
2016532925.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも第1のラインを含む制御データバスと、
前記制御データバスに結合され、前記制御データバスへのアクセスを管理するように構成されたマスターデバイスと、
前記制御データバスに結合され、前記第1のラインを共有する複数のスレーブデバイスとを備え、
前記マスターデバイスが、全てのスリープしているスレーブデバイスをウェイクアップさせる単一のグローバルウェイクアップ信号を前記制御データバス上で送るように構成された、デバイス。
【請求項２】
前記マスターデバイスが、所定の期間中に前記第1のラインをローにすることによって前記単一のグローバルウェイクアップ信号を送るように構成された、請求項1に記載のデバイス。
【請求項３】
前記単一のグローバルウェイクアップ信号を送ることは、少なくとも約30マイクロ秒の所定の期間中に前記第1のラインをローにすることを含む、請求項1に記載のデバイス。
【請求項４】
前記マスターデバイスが、スリープしているスレーブデバイスのスレーブデバイススリープ状態リストを維持する、請求項1に記載のデバイス。
【請求項５】
すべてのスリープしているスレーブデバイスが、ウェイクアップした後、前記マスターデバイスにウェイクアップ確認信号を送り、前記マスターデバイスが、前記ウェイクアップ確認信号に基づいて、前記スレーブデバイススリープ状態リストを更新する、請求項4に記載のデバイス。
【請求項６】
少なくとも第1のスレーブデバイスが、マスターモードまたはスレーブモードのいずれかにおいて動作するように動的に構成可能であり、前記マスターデバイスが、前記第1のスレーブデバイスからマスター要求を受信したとき、前記マスターデバイスが、前記制御データバスの制御を前記第1のスレーブデバイスに渡す前に、前記第1のスレーブデバイスに、スリープしているスレーブデバイスの前記スレーブデバイススリープ状態リストを転送する、請求項4に記載のデバイス。
【請求項７】
前記マスターデバイスが、前記制御データバスに結合されたすべてのデバイスに、スリープブロードキャスト信号を送り、
前記スリープブロードキャスト信号が、具体的には、スリープモードになるべき1つまたは複数のスレーブデバイスを識別するか、または、具体的には、スリープ要求を無視すべき1つまたは複数のスレーブデバイスを識別する、請求項1に記載のデバイス。
【請求項８】
前記制御データバスに結合された第1のスレーブデバイスが、一方的にスリープモードに入り、前記制御データバスとは別のバスを介して、前記スリープモードに入ったことを前記マスターデバイスに通知する、請求項1に記載のデバイス。
【請求項９】
前記マスターデバイスが、前記スリープ通知の受信時に、前記第1のスレーブデバイスをスレーブデバイススリープ状態リストに追加する、請求項8に記載のデバイス。
【請求項１０】
前記制御データバスに結合された第1のスレーブデバイスが、前記マスターデバイスからの関与なしに、自発的にウェイクアップし、前記制御データバスとは別のバスを介して、前記第1のスレーブデバイスがアウェイクしていることの割込み信号を前記マスターデバイスに送る、請求項1に記載のデバイス。
【請求項１１】
前記割込み信号の受信時に、前記マスターデバイスが、前記第1のスレーブデバイスをスレーブデバイススリープ状態リストから除去する、請求項10に記載のデバイス。
【請求項１２】
前記マスターデバイスが、スリープモードも備え、前記マスターデバイスが、制御データバスとは別の割込みラインを介するスレーブデバイスからの第1の割込み信号の受信時にウェイクアップするように適合された、請求項1に記載のデバイス。
【請求項１３】
前記第1の割込み信号を送ったとき、前記割込みラインの競合が検出された場合、前記スレーブデバイスが、第2の割込み信号を送る、請求項12に記載のデバイス。
【請求項１４】
前記第1の割込み信号が、前記マスターデバイスをスリープモードからアウェイクさせ、前記マスターデバイスが、前記スレーブデバイスによる割込み信号調停プロセスをトリガするために、前記割込みラインをローに引き下げる、請求項12に記載のデバイス。
【請求項１５】
マスターデバイス上で使用できる方法であって、
前記マスターデバイスで制御データバスを制御するステップであって、前記制御データバスが、少なくとも第1のラインを含む、ステップと、
前記制御データバスを介して、前記マスターデバイスから複数のスレーブデバイスに、全てのスリープしているスレーブデバイスをウェイクアップさせる単一のグローバルウェイクアップ信号を送信するステップと
を含む方法。
【請求項１６】
前記制御データバスが、2ラインバスであり、前記ウェイクアップ信号が、所定の期間中に前記第1のラインをハイまたはローにすることによって実現される、請求項15に記載の方法。
【請求項１７】
前記マスターデバイスにおいてスレーブデバイススリープ状態リストを維持するステップをさらに含む、請求項15に記載の方法。
【請求項１８】
各スレーブデバイスがウェイクアップした後、割込み信号を受信するステップと、
前記受信した割込み信号に基づいて、前記スレーブデバイススリープ状態リストを更新するステップと
をさらに含む、請求項17に記載の方法。
【請求項１９】
マスターデバイスが、マスターモードまたはスレーブモードのいずれかにおいて動作するように動的に構成可能であり、前記マスターデバイスが第1のスレーブデバイスからマスター要求を受信したとき、前記マスターデバイスが、前記制御データバスの制御を前記第1のスレーブデバイスに渡す前に、スリープしているスレーブデバイスの前記スレーブデバイススリープ状態リストを前記第1のスレーブデバイスに転送する、請求項17に記載の方法。
【請求項２０】
前記制御データバスの制御を渡した後、スレーブモードにおける動作に切り替えるステップをさらに含む、請求項19に記載の方法。
【請求項２１】
前記制御データバスに結合されたすべてのデバイスに、スリープブロードキャスト信号を送るステップをさらに含み、
前記スリープブロードキャスト信号が、具体的には、スリープモードになるべき1つまたは複数のスレーブデバイスを識別するか、または、具体的には、スリープ要求を無視すべき1つまたは複数のスレーブデバイスを識別する、請求項15に記載の方法。
【請求項２２】
割込み要求バスを介して、第1のスレーブデバイスから、前記第1のスレーブデバイスがスリープモードに入っていることを示す割込み信号を受信するステップをさらに含む、請求項15に記載の方法。
【請求項２３】
前記マスターデバイスが、前記制御データバスとは別の割込み要求バスを介して、スレーブデバイスから、前記スレーブデバイスが自発的にウェイクアップしていることを示す割込み信号を受信する、請求項15に記載の方法。
【請求項２４】
前記割込み信号を受信すると、前記マスターデバイスが、スレーブデバイススリープ状態リストから第1のスレーブデバイスを除去する、請求項23に記載の方法。
【請求項２５】
前記マスターデバイスが、スリープモードに入り、前記マスターデバイスが、制御データバスとは別の割込みラインを介するスレーブデバイスからの第1の割込み信号の受信時にウェイクアップするように適合された、請求項15に記載の方法。
【請求項２６】
前記割込み信号の受信時に、前記マスターデバイスが、スレーブデバイススリープ状態リストから第1のスレーブデバイスを除去する、請求項25に記載の方法。
【請求項２７】
複数のスレーブデバイスによって共有される制御データバスに結合するためのバスインターフェースと、
前記バスインターフェースに結合され、
前記複数のスレーブデバイスによる前記制御データバスへのアクセスを管理し、
前記制御データバスを介して前記複数のスレーブデバイスにグローバルウェイクアップコマンドを発行するように構成された処理回路と
を備えるマスターデバイス。
【請求項２８】
前記処理回路が、さらに、
スレーブデバイススリープ状態リストを維持し、
スレーブデバイスのウェイクアップの指標を受信すると、前記スレーブデバイススリープ状態リストを更新するように構成された、請求項27に記載のマスターデバイス。
【請求項２９】
前記処理回路が、さらに、
所定の期間の間、前記制御データバスの第1のラインをローにすることによって、単一のグローバルウェイクアップ信号を送るように構成された、請求項27に記載のマスターデバイス。
【請求項３０】
割込みライン上のスレーブデバイスからの割込み要求を感知し、前記マスターデバイスがスリープモードにあるときであっても、前記マスターデバイスをアウェイクさせるように適合された受信機論理回路をさらに備える、請求項27に記載のマスターデバイス。
【請求項３１】
複数のスレーブデバイスによって共有される制御データバスに結合するためのバスインターフェースと、
前記バスインターフェースに結合され、動作のスリープモードにあるとき、
自走クロック信号を取得し、
前記制御データバスのラインがローもしくはハイのいずれかに引かれる時間の長さを測定するために、前記自走クロック信号を使用し、
前記測定された時間の長さが所定の時間よりも長い場合、前記スレーブデバイスをウェイクアップするように構成された受信機論理回路と
を備えるスレーブデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本特許出願は、本明細書の譲受人に譲受され、参照により本明細書に明確に組み込まれている、2013年10月2日に出願した、「Camera Control Interface Sleep and Wakeup Signaling」と題する、仮出願第61/885,995号、および2014年10月1日に出願した、「Camera Control Interface Sleep and Wake Up Signaling」と題する、米国実用特許出願第14/504,413号の優先権を主張するものである。
【０００２】
本開示は、共有制御データバス上での動作を可能にすることに関し、より具体的には、マルチワイヤデータおよび/またはクロック制御データバス上でスリープ信号およびウェイクアップ信号を送信することに関する。
【背景技術】
【０００３】
I2C(I2Cとも呼ばれる)は、低速周辺機器を、マザーボード、組込みシステム、携帯電話、または他の電子デバイスに取り付けるために使用されるマルチマスターシリアルシングルエンド制御データバスである。I2C制御データバスは、7ビットアドレス指定を有するクロック(SCL)ラインとデータ(SDA)ラインとを含む。制御データバスは、ノードのための2つの役割、マスターとスレーブとを有する。マスターノードは、クロックを生成し、スレーブノードとの通信を開始するノードである。スレーブノードは、クロックを受信し、マスターによってアドレス指定されたとき応答するノードである。I2C制御データバスは、任意の数のマスターノードが存在し得ることを意味するマルチマスター制御データバスである。加えて、マスターの役割およびスレーブの役割は、メッセージ間で交換され得る。I2Cは、メッセージの基本的なタイプを定義し、その各々は、STARTで開始し、STOPで終了する。
【０００４】
カメラの具現化のこの文脈において、一方向送信は、センサからの画像を取り込み、そのような画像データをベースバンドプロセッサ内のメモリに送信するために使用され得る。一例において、カメラ制御インターフェース(CCI:Camera Control Interface)プロトコルは、ベースバンドプロセッサと画像センサ(および/または1つもしくは複数のスレーブノード)との間のそのような制御データのために使用され得る。一例において、CCIプロトコルは、画像センサとベースバンドプロセッサとの間のI2Cシリアル制御データバス上に実装され得る。
【０００５】
I2C制御データバスシステムにおいて、I2Cスレーブデバイスが、迅速な方法で動作を再開することができるように、電源をシャットダウンすることなく、デバイスを低電力消費モードにするために、スリープ機能を有するとき、「ウェイクアップ」イベントを示すために、少なくとも1つのサイドバンド信号がホスト/マスターデバイスから必要である。たとえば、そのような機能を有する10のスレーブデバイスが存在するとき、システムは、10の「ウェイクアップ」信号を有する必要があり、特にホスト/マスターデバイスのためのデバイスのピン、および回路基板上の余分なワイヤの費用がかかる。言い換えれば、現在、スリープモードにある各々の単一のスレーブデバイスを個別にウェイクアップするために必要なピンおよび関連する回路基板ワイヤが存在する。
【０００６】
したがって、スリープモードにあるスレーブデバイスをウェイクアップする、および/またはアクティブなスレーブデバイスにスリープモードに入るように命令する際に利用されるピンおよび/またはワイヤの数を減少させることが望ましい。
【発明の概要】
【課題を解決するための手段】
【０００７】
第1の特徴は、少なくとも第1のラインを含む制御データバスを備える装置を提供する。マスターデバイスは、制御データバスに結合され得、制御データバスを制御するように構成され得る。複数のスレーブデバイスは、制御データバスに結合され得、第1のラインを共有し、マスターデバイスは、全てのスリープしているスレーブデバイスをウェイクアップさせる単一のグローバルウェイクアップ信号を制御データバス上で送るように構成される。
【０００８】
第2の特徴は、マスターデバイス上で動作可能な方法を提供する。マスターデバイスは、制御データバスを介する送信を制御することができ、制御データバスは、少なくとも第1のラインを含む。マスターデバイスは、制御データバスを介して、マスターデバイスから複数のスレーブデバイスに、全てのスリープしているスレーブデバイスをウェイクアップさせる単一のグローバルウェイクアップ信号を送信することができる。マスターデバイスは、スレーブデバイススリープ状態リストを維持することができる。制御データバスは、2ラインバスであり得、ウェイクアップ信号は、所定の期間中に第1のラインをハイまたはローにすることによって実現され得る。
【０００９】
一態様によれば、マスターデバイスは、各スレーブデバイスがウェイクアップした後、割込み信号を受信することができる。これは、マスターデバイスが、受信した割込み信号に基づいて、スレーブデバイススリープ状態リストを更新することを可能にする。
【００１０】
一例において、マスターデバイスは、マスターモードまたはスレーブモードのいずれかにおいて動作するように動的に構成され得、マスターデバイスが第1のスレーブデバイスからマスター要求を受信したとき、マスターデバイスは、制御データバスの制御を第1のスレーブデバイスに渡す前に、スリープしているスレーブデバイスのスレーブデバイススリープ状態リストを第1のスレーブデバイスに転送する。マスターデバイスは、次いで、制御データバスの制御を渡した後、スレーブモードにおける動作に切り替えることができる。
【００１１】
別の例において、マスターデバイスは、制御データバスに結合されたすべてのデバイスに、スリープブロードキャスト信号を送ることができ、スリープブロードキャスト信号は、具体的には、スリープモードになるべき1つまたは複数のスレーブデバイスを識別する、または、具体的には、スリープ要求を無視すべき1つまたは複数のスレーブデバイスを識別する。
【００１２】
マスターデバイスは、また、割込み要求バスを介して、第1のスレーブデバイスから、第1のスレーブデバイスがスリープモードに入っていることを示す割込み信号を受信することができる。そのような割込み信号を受信すると、マスターデバイスは、スレーブデバイススリープ状態リストに第1のスレーブデバイスを追加することができる。
【００１３】
マスターデバイスは、また、スレーブデバイスが自発的にウェイクアップしたことを示す割込み信号を、制御データバスとは別の割込み要求バスを介して受信することができる。割込み信号を受信すると、マスターデバイスは、スレーブデバイススリープ状態リストから第1のスレーブデバイスを除去することができる。
【００１４】
マスターデバイスがスリープモードに入った場合、マスターデバイスは、制御データバスとは別の割込みラインを介するスレーブデバイスからの第1の割込み信号の受信時にウェイクアップするように適合され得る。マスターデバイスは、割込みラインまたはバスを介して同時のおよび/または重複する割込み信号を発行する競合するスレーブデバイス間を調停するために、スレーブデバイスによって使用される調停プロトコルを使用することができる。すなわち、スレーブデバイスは、第1の所定の時間(または、第1の時間範囲)の間、割込みラインを(たとえば、接地に)プルダウンすることによって、それらの割込み信号をアサートすることができる。マスターデバイスは、検出された割込み信号を使用してウェイクアップすると、第2の期間の間、割込みラインをローに保持し、第2の期間は、第1の期間よりも長い。これは、現在または同時に割込み信号をアサートしている全てのスレーブデバイスに、割込みラインにおいて競合が存在することを認識させる(たとえば、割込みラインは、スレーブデバイスからの割込み信号が終了した場合であっても、ローのままである)。その結果、調停プロトコル/機構は、スレーブデバイスが、割込みラインが再びハイになったことを感知した後、その割込み信号を再送することを示すことができる。したがって、マスターデバイスウェイクアップ機構は、既存の割込み調停機構を使用するので、マスターデバイススリープモードを実現するために、スレーブデバイスにおいて、変更は、必要とされない。
【００１５】
マスターデバイスがアウェイクである(たとえば、スリープモードにない)間、マスターデバイスは、第1のスレーブデバイスから割込み信号を受信することができる。そのような割込み信号を受信した結果として、マスターデバイスは、スレーブデバイススリープ状態リストからその第1のスレーブデバイスを除去する。すなわち、特定のスレーブデバイスからの割込み信号の受信は、そのようなスレーブデバイスがスリープモードにないことの指標として作用し、スレーブデバイススリープ状態リスト内に存在する場合、それは、そのようなリストから除去される。
【００１６】
第3の特徴は、複数のスレーブデバイスによって共有される制御データバスに結合するためのバスインターフェースと、バスインターフェースに結合された処理回路とを備えるマスターデバイスを提供する。処理回路は、(a)複数のスレーブデバイスによる制御データバスへのアクセスを管理し(たとえば、どのデバイスが制御データバスを使用することができるのかを管理し)、および/または(b)制御データバスを介して複数のスレーブデバイスにグローバルウェイクアップコマンドを発行するように構成され得る。マスターデバイスは、また、制御データバスを介して、非標的スレーブデバイスに(非標的デバイスにスリープ状態になるように命令する)標的スリープコマンドが続く(すべてのスレーブデバイスをウェイクアップする)グローバルウェイクアップ信号を送ることによって、標的スレーブデバイスをウェイクアップするマルチステップ標的ウェイクアップ機構を実現することができる。マスターデバイスは、所定の期間の間、第1のラインをローにすることによって、単一のグローバルウェイクアップ信号を送ることができる。加えて、マスターデバイスは、制御データバスを介するアクセス/通信を制御するために、通常/アウェイクモードにおいて動作することができるが、スリープモードに入ることもできる。スリープモードからウェイクアップするために、マスターデバイスは、スレーブデバイスからの割込み信号に依存することができ、以前の割込み信号を送るとき、割込みバスの競合が検出された場合、スレーブデバイスに割込み信号を再送させるために、割込み調停プロトコルに依存する。
【００１７】
第4の特徴は、複数のスレーブデバイスによって共有される制御データバスに結合するためのバスインターフェースと、バスインターフェースに結合された受信機論理回路とを備えるスレーブデバイスを提供する。スレーブデバイスが動作のスリープモードにあるとき、受信機回路は、(a)自走クロック信号を取得し、(b)制御データバスのラインがローもしくはハイのいずれかに引かれる時間の長さを測定するために、自走クロック信号を使用し、および/または(c)測定された時間の長さが所定の時間よりも長い場合、スレーブデバイスをウェイクアップするように構成され得る。
【００１８】
様々な特徴、性質、および利点は、同様の参照文字が全体を通じて対応して識別する図面に関連する以下に記載の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【００１９】
【図１】ベースバンドプロセッサと画像センサとを有し、画像データバスとマルチモード制御データバスとを実装する例示的なデバイスを示すブロック図である。
【図２】例示的な書込みデータワードを概念的に示す図である。
【図３】例示的なメッセージフレームまたは一般呼(general call)の概念図である。
【図４】マスターデバイスが開始したスリーププロセスの例示的な第1のステップを概念的に示す図である。
【図５】2つの例示的なスリープコマンドを概念的に示す図である。
【図６】マスターデバイスが開始したスリーププロセスの例示的な第2のステップを示す図である。
【図７】スレーブデバイスが開始したスリーププロセスの例示的な第1のステップを示す図である。
【図８】スレーブデバイスが開始したスリーププロセスの例示的な第2のステップを示す図である。
【図９】マスターデバイスが特定のスレーブデバイスを標的とするスリープコマンドを送ることができる方法を概念的かつグラフィカルに示す図である。
【図１０】標的スレーブデバイスがマスターデバイスからの標的スリープコマンドに応答してスリープモードに入る方法を概念的かつグラフィカルに示す図である。
【図１１】マスターデバイスがスレーブデバイススリープ状態リストを維持することができることを概念的に示す図である。
【図１２】例示的なマスターデバイスハンドオフプロトコルを示す図である。
【図１３】マスターデバイスが開始したウェイクアッププロトコルの例示的な第1のステップを示す図である。
【図１４】マスターデバイスが開始したウェイクアッププロトコルの例示的な第2のステップを示す図である。
【図１５】マスターデバイスが開始したウェイクアッププロトコルの例示的な第3のステップを示す図である。
【図１６】マスターデバイスが開始したウェイクアッププロトコルの例示的な第4のステップを示す図である。
【図１７】マスターデバイスが開始したウェイクアップ信号を受信するための例示的なスレーブデバイス受信機ロジックを示す図である。
【図１８】データビットをトランスコードされたシンボルにトランスコードするための例示的な方法を示すブロック図である。
【図１９】19ビットデータ領域(たとえば、ビット0〜ビット18)と、追加の第20のビット領域(たとえば、ビット19)とを備える20ビット領域の一例を示す図である。
【図２０】ビット19以外が数2221_2201_20023〜2222_2222_22223のために設定され、数の範囲が6つのセクションに細分され得ることを示す図である。
【図２１】マスターデバイスが開始したウェイクアップ信号を感知するとリセット信号を生成する例示的なスレーブデバイスロジックを示す図である。
【図２２】マスターデバイスの外部のトリガが、スリープしているスレーブデバイスとの相互作用をトリガしているシナリオを示す図である。
【図２３】スレーブデバイスが自発的にウェイクアップすることができ、割込み要求(IRQ)を発行することによって、スレーブデバイスがウェイクアップしていることをマスターデバイスに通知することができる方法の第1の手法を示す図である。
【図２４】スレーブデバイスが自発的にウェイクアップすることができ、割込み要求(IRQ)を発行することによって、スレーブデバイスがウェイクアップしていることをマスターデバイスに通知することができる方法の第2の手法を示す図である。
【図２５】スレーブデバイスがスリープしているマスターデバイスのウェイクアップを開始する実施態様を示す図である。
【図２６】スレーブデバイスからの割込み要求に応答してウェイクアップ信号を生成する例示的なマスターデバイス受信機ロジックを示す図である。
【図２７】マスターデバイスによって制御される共有バスを介してスレーブデバイスのスリープモードを監視および制御するために適合された例示的なマスターデバイスを示すブロック図である。
【図２８】スリープモードからアウェイクする、および/または、1つまたは複数のスリープしているスレーブデバイスをアウェイクさせるための、マスターデバイスにおいて動作する例示的な方法を示す図である。
【図２９】スレーブデバイスのスリープ状態および/またはアウェイク状態を維持するための、マスターデバイスにおいて動作する例示的な方法を示す図である。
【図３０】マスターデバイスによって制御される共有バス上でのマスターデバイスにより制御されるウェイクアップ/スリープおよび自発的ウェイクアップのために適合された例示的なスレーブデバイスを示すブロック図である。
【図３１】スレーブデバイスのスリープ状態および/またはアウェイク状態を維持するための、スレーブデバイスにおいて動作する例示的な方法を示す図である。
【発明を実施するための形態】
【００２０】
以下の説明において、具体的な詳細が、実施形態の完全な理解を提供するために与えられる。しかしながら、実施形態はこれらの具体的な詳細なしに実施できることは当業者には理解されよう。たとえば、回路は、不必要な詳細で実施形態を不明瞭にしないために、ブロック図で示される場合がある。他の例において、周知の回路、構造、および技術は、実施形態を不明瞭にしないために、詳細には示されないことがある。
【００２１】
《概要》
第1の特徴は、システムデータライン(SDA)上で、マスターデバイスによって、複数のスレーブデバイスに、どのスレーブデバイスがスリープするのかを正確に識別するスリープオンリーコマンドと、どのスレーブデバイスがアウェイクのままでいるのかを正確に識別するスリープ除外コマンドとのうちの少なくとも1つを送信することを提供する。2つのスリープコマンドは、拡張CCI(CCIe)書込みデータフォーマットにおいて発行され得る。両方のコマンドのために、明確に列挙されているリストが、スレーブデバイス識別(SID)リストにおいて指定される。たとえば、スリープオンリーコマンドには、スリープする予定のスレーブデバイスをそれらのそれぞれの識別子(ID)によってリストにしたSIDリストが続く。同様に、スリープ除外コマンドには、アウェイクのままである予定のスレーブデバイスをIDによってリストにしたSIDリストが続く。加えて、すべてのスリープしているスレーブデバイスをウェイクアップするグローバルウェイクアップコマンドが利用可能である。スリープコマンドおよびグローバルウェイクアップコマンドは、SDA上で送信されるが、スレーブデバイスからの情報は、割込みライン(IRQまたはIRQN)を介してマスターデバイスに通信され得る。たとえば、ウェイクアップされたスレーブデバイスは、IRQラインを介してマスターデバイスに、完全にアウェイクしていることの確認を送ることができる。
【００２２】
第2の特徴は、複数のスレーブデバイスを、共有割込み要求ライン上でグループに配置することを提供し、スレーブデバイスのうちのいくつかは、自発的ウェイクアップ機能を有し、スレーブデバイスのうちのいくつかは、自発的ウェイクアップ機能を持たない。自発的ウェイクアップ機能を有するすべてのスレーブデバイスは、サイズ1のグループ(すなわち、グループごとに1つのスレーブデバイス)に配置され得る。これは、形式的にスリープ中であるどのスレーブデバイスが今アウェイクしているのかを調査するために、すべてのスレーブデバイスをウェイクアップする必要性を排除する。
【００２３】
第3の特徴は、スリープモードに入るためのマスターデバイスを提供し、割込み要求ラインを介するスレーブデバイスからの割込み信号の検出時にウェイクアップするために、受信機ロジックを使用する。マスターデバイスは、割込みラインまたはバスを介して同時のおよび/または重複する割込み信号を発行する競合するスレーブデバイス間を調停するために、スレーブデバイスによって使用される調停プロトコルを使用することができる。すなわち、スレーブデバイスは、第1の所定の時間(または、第1の時間範囲)の間、割込みラインを(たとえば、接地に)プルダウンすることによって、それらの割込み信号をアサートすることができる。マスターデバイスは、検出された割込み信号を使用してウェイクアップすると、第2の期間の間、割込みラインをローに保持する。ここで第2の期間は、第1の期間よりも長い。これは、割込みバス上の信号の競合をスレーブデバイスに示すために役立ち、スレーブデバイスは、次いで、割込みラインがハイになったときにそれらの割込みを再送する調停プロトコルに従う。
【００２４】
《I2C制御データバス上でスリープ信号およびウェイクアップ信号を送るための例示的な方法》
図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(たとえば、スレーブデバイス)との間で交換され得る。いくつかの実施態様において、I2C制御データバス上の動作モードは、カメラ用途のために使用されるとき、カメラ制御インターフェース(CCI)モードと呼ばれることがある。
【００２５】
一態様によれば、カメラ動作をサポートするために、改善された動作モードをマルチモード制御データバス108上に実装することができる。I2C制御データバス上の動作のこの改善されたモードは、カメラ用途のために使用されるとき、カメラ制御インターフェース拡張(CCIe)モードと呼ばれることがある。この例において、ベースバンドプロセッサ104は、マスターノード112を含み、画像センサ106は、スレーブノード114を含み、マスターノード112とスレーブノード114の両方は、制御データバス108に結合された他のレガシーI2Cデバイス(たとえば、CCIeモードにおいて動作しないデバイス)の適切な動作に影響を与えることなく、制御データバス108上のカメラ制御インターフェース拡張(CCIe)モードに従って動作することができる。一態様によれば、制御データバス108上のこの改善されたモードは、CCIeデバイスと任意のレガシーI2Cスレーブデバイスとの間の任意のブリッジデバイスなしで実装され得る。
【００２６】
一態様によれば、すべてのスレーブデバイス118は、アウェイクモード(すなわち、通常モード)よりも少ないエネルギーを利用するスリープモードに入る能力を有するCCIe対応デバイスであり得る。スリープモードは、代わりにスレーブデバイスがオフにされた場合よりも、スレーブデバイス118がより早くまたはより迅速に通常モードに切り替わることを可能にする。たとえば、CCIeデバイスは、典型的には、スリープモード中に動作し続ける32.768kHzリアルタイムクロックおよび/または他の低速クロックを有し、マスターデバイスによるスレーブデバイスへの「ウェイクアップ」指示は、受信機論理回路によって、ならびに、SDAラインを長い期間(たとえば、40マイクロ秒)ダウン/ローに保持/引き下げるマスターデバイスによって達成される。SDAラインがダウン/ローに保持/引き下げられる期間は、共有制御データバス108に結合された他のデバイスが、それを別のCCIeまたはI2C動作または信号と混同しない十分な長さであり得る(たとえば、コントロールデータバス108を介して、そのような他のCCIeまたはI2C動作は、より短い期間中ラインをローに保持する)。その結果、すべての他のCCIeまたはI2C動作または信号は、「ウェイクアップ」指示として検出されることは決してない。この方法は、意図されたスレーブデバイスのみをウェイクアップさせるだけでなく、同じ制御データバス上の機能を有するすべてのスレーブデバイスもウェイクアップさせるので、ホスト/マスターデバイスは、次いで、スリープモードにすべき各デバイスに「スリープ」コマンドアクションを発行する。本明細書で説明する方法および装置は、「ウェイクアップ」指示のための余計なサイドバンド信号の使用を回避し、したがって、デバイスのピン数ならびに回路基板上のワイヤの数を低減する。
【００２７】
図2は、例示的な書込みデータワード200を概念的に示しており、ここで16ビット(ビット0〜15)202は、書込みデータであり、3ビットは、制御コードビット(ビット16〜18)204である。すなわち、書込みデータワードは、16ビット書込みデータ値および3ビット制御コードビットから構成され得、またはこれらを含むことができる。一例において、書込みデータワード200は、CCIe書込みデータワードであり得る。現在のアドレスワードの制御コードが「000」(C0)〜「101」(C5)であるとき、後続のアドレスワードが存在することになる。次の書込みアドレスは、制御データ値を加えた現在のデータのアドレスである。「111」の制御コードは、SIDマーカのために予約されているので、不正である。制御コードが「110」(E)である場合、次のワードは、SID(スレーブデバイスID)または終了コードである。データワード200は、マスターデバイスとスレーブデバイスとの間でコマンドおよび他の情報を送信するために使用され得る予備ビット206(たとえば、ビット19)を有することができる。
【００２８】
図3は、CCIeメッセージフレームまたは一般呼300の概念図である。フレームのスレーブデバイス識別(SID)部分/フィールド302は、呼のタイプを識別する16ビット(0〜15)を含む。一般呼は、SIDがすべてゼロ(0x0000)のときに定義される。この一般呼のために、SID部分302のビット16〜18は、たとえば、「111」に固定され得る。この一般呼300は、制御データバス108に結合されたすべてのスレーブデバイスへのブロードキャスト書込みコマンドまたはメッセージであるので、SID部分/フィールド302は、特定のスレーブデバイスを指定しない。マスターデバイス112は、アドレスワードを用いて一般呼メッセージタイプを指定し、一般呼ペイロードは、書き込まれるべきデータワードとして後に続く。一般呼が特定のデバイスを識別する特定のSIDを指定するいくつかの実施形態において、これは、その特定のデバイスからの読出し動作を指定することができる。
【００２９】
図4は、マスターデバイスが開始したスリーププロセスの例示的な第1のステップを概念的に示す。回路400は、制御データバス108および割込み要求バス402を介して1つまたは複数のスレーブデバイス406に結合されたマスターデバイス404を含むことができる。マスターデバイス404は、アウェイクしたままである第1のスレーブデバイス406を除いて、スリープすべきすべてのスレーブデバイス406にスリープコマンドを送ることができる。いくつかの実施態様において、そのようなスリープコマンドは、また、すべての他のマスターデバイス410aおよび410bをスリープさせることができる(たとえば、他のマスターデバイス410aおよび410bは、スレーブモード動作とマスターモード動作との間で切り替わることができる)。制御データバス108は、スレーブデバイス406にスリープコマンドを送るためにマスターデバイス404によって使用され得る。制御データバス108および/または割込み要求バス402(たとえば、単一ラインバス)の組合せは、スレーブデバイスをウェイクアップさせるために、スレーブデバイス406および/またはマスターデバイス404によって使用され得る。図4において、マスターデバイス404は、「スリープオンリー」コマンド408を発行している。スリープオンリーコマンド408は、すべての他のスレーブデバイス(すなわち、スリープオンリーコマンド408において識別されないデバイス)がアウェイクしたままである間、どのスレーブデバイスがスリープするべきなのかを正確に識別する。すなわち、スレーブデバイスは、コマンド408を読み取り、スレーブデバイスがコマンドによって識別されない場合、スレーブデバイスは、コマンドを無視することができる(たとえば、スリープモードに入らない)。
【００３０】
代替的には、マスターデバイス408は、「スリープ除外」コマンドを送ることができる。スリープ除外コマンドは、スリープオンリーコマンドとは逆である。言い換えれば、スリープオンリーコマンドは、どのスレーブデバイスがスリープするべきかを明確に識別するが、スリープ除外コマンドは、どのスレーブデバイスがアウェイクしたままでいるべきかを正確に識別する。言い換えれば、スリープコマンドは、どのスレーブデバイスがアウェイクしたままであるべきかを明確に識別し、すべての他のリストされていないスレーブデバイスは、デフォルトでスリープモードになる。
【００３１】
図5は、2つの例示的なスリープコマンドを概念的に示す。スリープ除外コマンド504は、0x0001などの第1のコードであるように定義され得、スリープオンリーコマンド506は、0x0002などの第2のコードであるように定義され得る。両方のコマンドのために、明確に表現されている(すなわち、列挙されている、または描写されている)スレーブデバイスのリストが、SIDリスト502内で指定される。たとえば、0x0001のスリープ除外コマンド504には、スリープする予定のスレーブデバイスをSIDによってリストにしたSIDリスト502が続く。同様に、0x0002のスリープオンリーコマンド506には、アウェイクのままである予定のスレーブデバイスをIDによってリストにしたSIDリスト502が続く。
【００３２】
図4は、マスターデバイスが開始したスリーププロセスの第1のステップを示したが、図6は、マスターデバイスが開始したスリーププロセスの例示的な第2のステップを示す。より具体的には、図6は、2つだけのデバイス、マスターデバイス404および第1のスレーブデバイス406aがアウェイクしていることを示す。第2のマスターデバイス610と、第3のマスターデバイス612と、他のスレーブデバイス406bおよび406cとを含むすべての他のデバイスは、スリープしている。スレーブデバイス406a、406b、および406cは、常にスレーブデバイスであり、一方、マスターデバイス404、610、および612は、スレーブモードにおいて動作することができ、スレーブモードとマスターモードの両方においてスリープすることができる。
【００３３】
図7は、スレーブデバイスが開始したスリーププロセスの例示的な第1のステップを示す。スリープモードになることを望む第1のスレーブデバイス714(たとえば、CCIeスレーブデバイス1)は、現在アクティブなマスターデバイス704にスリープ要求(たとえば、「あくび(yawn)」)を送るために、割込み要求ライン702を使用する。IRQスリープ要求信号720は、IRQラインをローに引き下げることによって作られる。一実施態様において、第1のマスターデバイス704は、次いで、IRQ信号720を受信し、どのスレーブデバイスが、スレーブデバイスが開始したスリープ要求を送ったのかを決定するために、すべてのアウェイクしているスレーブデバイス714に順次問い合わせる。スレーブデバイスは、本明細書で説明したようにグループに配置され得、第1のマスターデバイス704は、スレーブデバイスが属するグループ内のアウェイクしているスレーブデバイスのみに順次問い合わせる。言い換えれば、第1のマスターデバイス704は、スレーブデバイスが開始したスリープ要求が来たグループを決定し、次いで、そのグループ内のアウェイクしているスレーブデバイスのみに順次問い合わせる。
【００３４】
図8スレーブデバイスが開始したスリーププロセスの例示的な第2のステップを示す。第1のマスターデバイス704は、スレーブデバイスが開始したスリープ要求804を受信しており、第1のマスターデバイス704は、どのスレーブデバイスが、スレーブデバイスが開始したスリープ要求720を送ったのかを決定するために、すべてのアウェイクしているスレーブデバイスに順次問い合わせる。より具体的には、第1のマスターデバイス704は、スレーブデバイス714に状態要求コマンドを送ることができ、スレーブデバイス714は、要求元のスレーブデバイス714からスリープ要求804の状態を返す。代替の実施態様において、要求元のスレーブデバイス714は、あくびIRQ信号720から一意に識別可能であり得、要求元スレーブデバイス714からの応答がないことは、スレーブデバイス714がスリープモードになっていることであると理解され得る。スリープ要求804が第1のマスターデバイス704に受入れ可能である場合、第1のマスターデバイス704はSIDリスト内のスレーブデバイス714のみを載せたスリープオンリーコマンド(図9に示すような)を送る。すなわち、スリープコマンドは、要求元スレーブデバイス714にスリープするように指示する。要求元スレーブデバイスは、次いで、マスターデバイスによって維持されるスレーブデバイススリープ状態リストに追加され得る。このスレーブデバイススリープ状態リストは、マスターデバイスが、どのスレーブデバイスがスリープしているのかおよび/またはどのスレーブデバイスがアウェイクしているのかを追跡し続けることを可能にする。
【００３５】
図9は、マスターデバイスが、特定のスレーブデバイスを標的とするスリープオンリー一般呼コマンドを送ることができる方法を概念的にかつグラフィカルに示す。この例において、第1のマスターデバイス704は、制御データバス108に結合されたすべてのデバイスにスリープオンリー一般呼コマンド904をブロードキャストする(たとえば、SIDフィールド908は、「ブロードキャストする」ための「0x0000」であるが、メッセージタイプフィールド910は、「スリープオンリーコマンド」を定義する)。スリープオンリー一般呼コマンド904は、メッセージタイプフィールド910によって「スリープオンリーコマンド」として識別され、これは、SIDリスト906が添付されることを意味する。SIDリスト906は、スリープオンリーコマンドが標的とするデバイスを識別する。この例において、SIDリスト906は、第1のスレーブデバイス714(S1)のみを識別することができる。単一のデバイス(S1)のみがSIDリスト906内に記載されているが、複数のデバイスがSIDリスト内に記載され得る。
【００３６】
図10は、標的スレーブデバイス714がマスターデバイス704からの標的スリープコマンドに応答してスリープモードに入る方法を概念的にかつグラフィカルに示す。加えて、第1のマスターデバイス704は、それ自体でスリープモードに入ることができる。
【００３７】
図11は、マスターデバイスがスレーブデバイススリープ状態リストを維持することができる方法を概念的に示す。このスレーブデバイススリープ状態リスト1100は、マスターデバイスが、どのスレーブデバイスがスリープモードに置かれたのかを常に知ることを可能にすることができる。一実施形態において、マスターデバイスは、スレーブデバイススリープ状態リスト1100を維持することができるが、マスターデバイスは、ベースバンドプロセッサ104(図1)および/またはデバイス102によって保持され得るリストにアクセスすることを必要とするだけである。現在のマスターデバイスは、アップ(アウェイク)フラグまたはダウン(アスリープ)フラグを用いて、制御データバスに結合されたすべての利用可能なスレーブデバイスのリストを追跡し続けることができ、リストを維持することができる。これは、最初のウェイクアッププロセスなしに、全てのスリープしているスレーブデバイスをアクセスしようとすることを回避する。いくつかの実施態様において、マスターデバイスは、スレーブモード(たとえば、スレーブデバイス機能)とマスターモード(マスターデバイス機能)の両方において動作することが可能であり得るが、別のマスターデバイスは、マスターモード(たとえば、マスターデバイス機能)においてのみ動作することができる。スレーブデバイス機能なしのマスターデバイスのためのマスター識別子(ID)は、SIDリスト1100によって追跡されなくてよいが、スレーブデバイス機能を有するマスターデバイスのためのスレーブデバイスIDは、リスト1100によって追跡され得る。
【００３８】
図12は、例示的なマスターデバイスハンドオフプロトコルを示す。この例において、非アクティブなマスターデバイス1204からのマスター要求を受信したアクティブなマスターデバイス1202は、非アクティブなマスターデバイスがアクティブにされるのを可能にする前に、将来のマスターデバイス1204にスレーブデバイススリープ状態リスト1206を転送する。スレーブデバイススリープ状態リスト1206の転送は、制御データバス108(図1)を介して実行され得る。
【００３９】
図13は、マスターデバイスが開始したウェイクアッププロトコルの例示的な第1のステップを示す。この例において、アクティブなマスターデバイス1304は、グローバルウェイクアップ信号1308を送る。具体的には、アクティブなマスターデバイス1304は、所定の時間の間、制御データバス108のSDAラインをプルダウンすることができる。たとえば、制御データバス108は、少なくとも30.6マイクロ秒の間、プルダウンされ(たとえば、接地に引き下げられ)得、スレーブデバイス1310、1312、1318、および非アクティブなマスターデバイス1314、1316は、この延長されたプルダウンをウェイクアップ呼として認識するように構成される。したがって、すべてのスリープしているデバイスは、ウェイクアップし、一実施形態において、リセットを受ける。アウェイクしたデバイスは、マスターデバイス1304にウェイクアップ確認メッセージ(たとえば、割込みバスまたはIRQライン1302を介する割込み信号)を送ることができ、マスターデバイス1304は、アスリープとして示されたスレーブデバイススリープ状態リスト上のすべてのスレーブデバイスからの受信を確認する。リストは、「スレーブデバイス」スリープ状態リストと呼ばれるが、スリープ機能を有する(たとえば、スリープモードならびにマスターモードにおいて動作することができる)全てのマスターデバイスも、同様にリスト上にあってもよいことに留意されたい。
【００４０】
図14は、マスターデバイスが開始したウェイクアッププロトコルの例示的な第2のステップを示す。スリープしているデバイス1314、1310、および1318が、ウェイクアップ信号1308の受信時にアウェイクされると、これらのデバイス1314、1310、および1318は、ウェイクアップおよびリセット期間中、最初にIRQライン1302をプルダウンすることによって、それらのアウェイクした状態を合図することができ、次いで、終了したときにIRQライン1302を解放することができる。言い換えれば、IRQライン1302は、第1のデバイスの作動時に接地に駆動され、最後のデバイスが終了するまで、そのままでいる。マスターデバイス1304は、次いで、以前にスリープしていたデバイス1314、1310、1318が今はアウェイクしている(すなわち、通常モード)ことを確認するために、維持されたスレーブデバイススリープ状態リスト上に記載されたすべてのデバイスに順次問い合わせることができる。したがって、マスターデバイス1304は、SDAライン上でウェイクアップ信号1308を送り、IRQライン1302上ですべてのデバイスのアウェイクの指標を受信し、各デバイスの状態レジスタに順次問い合わせることによってSDAライン上の状態を確認する。
【００４１】
図15は、マスターデバイスが開始したウェイクアッププロトコルの例示的な第3のステップを示す。この例示的なステップにおいて、マスターデバイス1304は、選択されたデバイスを再びスリープさせる。ウェイクアップ呼1308は、グローバルウェイクアップ呼であるので、1つのスリープしているデバイスのみがアウェイクしている必要があったとしても、すべてのスリープしているデバイスは、アウェイクされる。したがって、すべてのスリープしているデバイスをウェイクアップした後、マスターデバイス1304は、次いで、付随的にアウェイクされたこれらのデバイスを再びスリープさせることに進むことができる。図15の図示の例において、マスターデバイス1304は、制御データバス108のSDAライン上にスリープオンリーコマンド1502を発行することによって、第2のマスターデバイス1314および第2のスレーブデバイス1318を再びスリープさせている。
【００４２】
図16は、マスターデバイスが開始したウェイクアッププロトコルの例示的な第4のステップを示す。この例示的なステップにおいて、アクティブなマスターデバイス1304は、以前にグローバルウェイクアップ信号を送り、すべてのスリープしているデバイスをウェイクアップし、次いで、標的の/所望のスレーブデバイス1310(たとえば、ウェイクアップ呼を必要としたスレーブデバイス)を除くすべてのウェイクアップされたデバイスを再びスリープモードにしている。図13に戻って参照すると、第2のマスターデバイス1314、第1のスレーブデバイス1310、および第2のスレーブデバイス1318は、最初にスリープしており、第1のマスターデバイス1304は、第1のスレーブデバイス1310をウェイクアップさせたがっていた。図16において、第1のスレーブデバイス1310は、アウェイクしており、第2のマスターデバイス1314および第2のスレーブデバイス1318は、再びスリープしている。
【００４３】
図17は、マスターデバイスが開始したウェイクアップ信号を受信するための例示的なスレーブデバイスロジックを示す。この例において、スレーブデバイスは、制御データバス(たとえば、シリアルデータ(SDA)ライン1702およびシリアルクロック(SCL)ライン1704)上のウェイクアップ信号を感知するように適合された受信機論理回路1700を含むことができる。受信機論理回路1700は、ORゲート1706とANDゲート1708とを含むことができ、これらのゲートの出力は、第1のDフリップフロップ1710に接続され、第1のDフリップフロップのQ出力(M)は、第2のDフリップフロップ1712に供給される。リアルタイムクロック(RTCCLK)ライン1714は、両方のDフリップフロップ1710および1712に結合される。クロック信号は、SDAライン1702およびSCL1704からの出力がシンボルのストリーム1716に結合されるように、制御データバス上のトランスコードされたシンボル内に組み込まれ得、シンボルのストリーム1716からクロック信号は、抽出され得る。通常の動作プロトコルの下で、SDAライン1702は、この延長された期間中、決してローに引き下げられない。したがって、少なくとも30.6マイクロ秒の時間の間、SDAライン1702をローに引き下げることは、スリープしているデバイスのウェイクアップをトリガするために使用される。
【００４４】
図18は、トランスコードされたシンボル内にクロック信号を組み込むために、送信機において、トランスコードされたシンボル内にデータビットをトランスコードするための例示的な方法を示すブロック図である。送信機1802において、データビットのシーケンス1804は、3進(底3)数(すなわち、「遷移数」)に変換され、3進数は、クロックラインSCL1812およびデータラインSDA1814を介して送信される(逐次的)シンボルに変換される。
【００４５】
一例において、バイナリデータの元の20ビットは、12桁の3進数に変換するために、ビット-遷移数変換器ブロック1808に入力される。12桁の3進数の各桁は、「遷移数」を表す。2つの連続する遷移数は、同じ数を有することがある。各遷移数は、2つの連続する逐次的シンボルが同じ値を持たないように、遷移-シンボルブロック1810において逐次的シンボルに変換される。遷移は、あらゆる逐次的シンボルにおいて保証されるので、そのような逐次的シンボル遷移は、クロック信号を組み込むために役に立つことができる。各逐次的シンボル1816は、次いで、2ワイヤ物理リンク(たとえば、SCLライン1812とSDAライン1814とを備えるI2C制御データバス)を介して送られる。
【００４６】
受信機1820において、プロセスは、トランスコードされたシンボルをビットに変換し戻すために逆にされ、このプロセスにおいて、クロック信号は、シンボル遷移から抽出される。受信機1820は、2ワイヤ物理リンク(たとえば、SCLライン1824とSDAライン1826とを備えるI2C制御データバス)を介して、逐次的シンボル1822のシーケンスを受信する。受信された逐次的シンボル1822は、クロックタイミングを回復し、トランスコードされたシンボル(S)をサンプリングするために、クロックデータ回復(CDR)ブロック1828に入力される。シンボル-遷移数変換器ブロック1830は、次いで、トランスコードされた(逐次的)シンボルを遷移数、すなわち1桁の3進数に変換する。次いで、遷移数-ビット変換器1832は、12桁の3進数から元のデータの20ビットを復元するために、12の遷移数を変換する。
【００４７】
本明細書に示すこの技術は、I2C標準制御データバスが提供する、CCIeモードとして本明細書に参照されるものを超えて制御データバス108(図1)のリンクレートを増加させるために使用され得る。一例において、制御データバス108に結合されたマスターノードおよび/またはスレーブノードは、同じ制御データバス上で標準I2C制御データバスを使用して可能であるよりも高いビットレートを達成するために、(図18に示すように)シンボル送信内にクロック信号を組み込む送信機および/または受信機を実現することができる。
【００４８】
図19は、19ビットデータ領域1902と、追加の第20のビット領域1904とを備える20ビット領域の一例を示す。第1のビットが「ビット0」と呼ばれるとき、第20のビットは、「ビット19」と呼ばれることに留意されたい。すなわち、コンピュータ科学において典型的であるように、ビット単位のカウントは、ゼロにおいて始まり、ビット19は、第20のビットである。ここで、ビット0〜18は、0000_0000_00003〜2221_2201_20013の3進数の範囲内で表される。2221_2201_20023〜2222_2222_22223の範囲内の3進数は、使用されない。その結果、3進数の範囲2221_2201_20023〜2222_222_22223は、ビット19(すなわち、第20のビット)を表すために使用され得る。すなわち、2221_2201_20023の3進数は、1000_0000_0000_0000_0000の2進数(0x80000の16進数)であり、2222_2222_22223の3進数(0x81BF0)は、最大12桁の3進数が可能である。一実施態様において、第20のビットデータ領域は、マスターデバイスとスレーブデバイスとの間で、スリープオンリーコマンドとスリープ除外コマンドとを含むコマンドを送るために使用され得る。
【００４９】
図20は、ビット19以外が数2221_2201_20023〜2222_2222_22223のために設定され、数の範囲が6つのセクションに細分され得ることを示す。2222_2220_00023(0x81B00)〜2222_2221_12103(0x81B7F)のサブ範囲は、スレーブデバイススリープ要求ならびにマスターデバイスハンドオーバのために使用され得る。前述したように、CCIeは、マルチマスター制御データバスアーキテクチャであり、制御データバス108の制御は、1つのマスターデバイスから別のマスターデバイスに移行され得る。2221_2201_20023(0x80000)〜2222_1121_02023(0x80FFF)のサブ範囲は、マスター制御データバス要求のために使用され得る。
【００５０】
図21は、マスターデバイスが開始したウェイクアップ信号を感知するとリセット信号を生成する例示的なスレーブデバイスロジックを示す。図17に関連して論じたように、スレーブデバイスは、制御データバス上のウェイクアップ信号を感知するように適合された受信機論理回路1700を含むことができる。一例において、マスターデバイスがグローバルウェイクアップ呼を開始した後、ウェイクアップしたスレーブデバイスは、エラー回復プロセスの一部としてそれらのCCIeロジックをリセットすることができる。
【００５１】
図22は、マスターデバイスの外部のトリガが、スリープしているスレーブデバイスとの相互作用をトリガしているシナリオを示す。すなわち、スリープモードのときであっても、スリープしているスレーブデバイスは、依然としてリッスンし、図17に記載の受信機論理回路1700の使用によって、または、制御データバス108の外部の他のトリガ信号2202によってウェイクアップすることができる。そのようなトリガ信号2202は、スレーブデバイス内またはスレーブデバイスに結合されたデバイスまたは構成要素によって送られ得る。たとえば、温度センサ、重力センサ、加速度計、などは、感知される状態または条件の変化時に、そのようなトリガ信号2202を送ることができ、それによって、スリープしているスレーブデバイス2210をウェイクアップさせる。これは、スリープしているスレーブデバイス2210が、その他のデバイスと相互作用するために、(たとえば、制御データバス108に結合された、または制御データバス108の外部の)別のデバイスからの要求を受信することを可能にする。しかしながら、スリープしているデバイス2210は、最初にウェイクアップし、状態のこの変化をマスターデバイス2204に通知する必要がある。別のデバイスは、スリープしているスレーブデバイス2210と通信する別のスレーブまたは外部デバイス(たとえば、制御データバス108に直接結合されていないデバイス)であり得る。一実施形態において、別のデバイスは、任意の非マスターデバイス(すなわち、スレーブデバイススリープ状態リストを維持する現在アクティブなマスターデバイスではない任意のデバイス)であり得る。
【００５２】
《I2C制御データバス上のスレーブデバイスをグループ化するための例示的な方法》
図23は、スレーブデバイスが自発的にウェイクアップすることができ、割込み要求(IRQ)を発行することによって、スレーブデバイスがウェイクアップしていることをマスターデバイスに通知することができる方法の第1の手法を示す。たとえば、第1のスレーブデバイス2310は、ウェイクアップすることができ、IRQを発行することによって、第1のスレーブデバイス2310がアウェイクしていることをアクティブな第1のマスターデバイス2304に通知することができる。この例において、第1のスレーブデバイス2310は、第2のスレーブデバイス2312とともに論理グループ(グループK)2308内にあり得る。そのようなグループ化を使用するとき、各グループは、その固有のIRQ署名を有することができる。たとえば、最小時間は、T0と呼ばれ、グループは、複数のT0に基づいて、時間周期を有する割込みが割り当てられ得る。たとえば、第1のグループ(グループA)は、IRQを開始するために、T0の時間周期の間、IRQライン2302を下方に保持し、第2のグループBは、T0の2倍である時間周期の間、IRQラインを下方に保持し、第3のグループCは、T0の3倍である時間周期の間、IRQライン2302を下方に保持する、などである。IRQライン2302がどれくらい長くプルダウンされたかを測定することによって、アクティブな第1のマスターデバイス2304は、どのグループがIRQを発行したのかを識別することができ、次いで、そのグループのメンバーの状態のみを順次問い合わせることができる。これは、IRQライン2302上のすべてのデバイスに順次問い合わせるのにかかる時間を節約する。今説明したパルス幅変化以外の、グループを一意に識別する方法が存在し、一意のグループ識別の任意の方法が用いられ得、または、必要に応じてまったく用いられなくてもよい。
【００５３】
このグループ化実施態様において、生じ可能性がある1つの問題は、グループの1つのメンバーが自発的ウェイクアップ機能を有し(スレーブデバイスがそれ自体でウェイクアップすることができる)、そのウェイクアップ通知が、なんらかの理由ですでにアウェイクしているグループのメンバーの割込みIRQと一致するときである。アクティブなマスターデバイス2304は、1つの割込みを見て、どのメンバーが要求をしたのかを学習または識別するために探しているアウェイクしているグループのメンバーに順次問い合わせる。維持されているスレーブデバイススリープ状態リストによれば、スレーブデバイス2310は、スリープしているので、アクティブな第1のマスターデバイス2304は、IRQを行ったすでにアウェイクしているメンバーを見つけ、第1のスレーブデバイス2310に順次問い合わせない。グループ内のスリープしているデバイスは、それらが順次問い合わせされ得る前にウェイクアップしなければならないので、第1のマスターデバイス2304は、停止する。スリープしているグループのメンバーに順次問い合わせるために、すべてのスリープしているデバイスがグローバルウェイクアップ呼を用いてウェイクアップされるので、これは、理想的ではない。すなわち、第1のマスターデバイス2304は、第1のスレーブデバイス2310が自発的にアウェイクしており、IRQを発行していることに気づかない可能性がある。
【００５４】
すべてのスレーブデバイスが自発的ウェイクアップ機能を有するわけではないことに留意し、1つの解決策は、自発的ウェイクアップ機能を有するデバイスをそれら自体によるグループ(すなわち、サイズ1のグループ)内に常に配置することである。自発的ウェイクアップ機能を有するデバイスを、それら自体の個々のグループ内に常に配置することの欠点は、これが、グループの数を増加させることになり、特に自発的ウェイクアップ機能を有する多くのデバイスが存在する場合、悪影響を有することである。しかしながら、より重要な良い面は、自発的ウェイクアップ機能を有するデバイスがそれら自体のグループ内にあるとき、グローバルウェイクアップ呼が必要でないことである。むしろ、最近アウェイクしたスレーブデバイスから割込み(IRQ)信号を受信した後、アクティブな第1のマスターデバイス2304は、この特定のデバイスが現在動作の通常モードにあることを示すために、状態を更新するだけである。
【００５５】
図24は、スレーブデバイス2410が自発的にウェイクアップすることができ、割込み要求(IRQ)2412を発行することによって、スレーブデバイス2410がウェイクアップしていることをマスターデバイス2404に通知することができる方法の第2の手法を示す。この手法において、ウェイクアップIRQ2412は、T0の(N+K)倍に延長され得る(ここで、T0=TLOW、Nは、グループの総数であり、Kは、その特定のグループのためのインデックスである)。したがって、定期的な割込みがウェイクアップIRQ2412と一致したとき、より長いIRQは、調停に勝利する(すなわち、ウェイクアップIRQが勝利する)。しかしながら、IRQ衝突の問題に対処し、適切なグループを正確に識別した後であっても、スリープしているグループのメンバーに順次問い合わせるために、すべてのスリープしているデバイスは、グローバルウェイクアップ呼を用いてアウェイクされ、これは、この第2の手法を、すべての自発的ウェイクアップが可能なデバイスをそれら自体の1つのデバイスグループに分離する第1の手法よりも劣ったものにする。
【００５６】
図25は、スレーブデバイス2512がスリープしているマスターデバイス2504のウェイクアップを開始する実施態様を示す図である。スレーブデバイス2512は、通常動作においてアウェイクしており、IRQライン2502を介する通常の割込み信号2508の試みによって、マスターデバイス2504からのサービスを要求する。割込み信号2508は、たとえば、第1の所定の期間の間、割込みライン/バス2502をローに引き下げることによって実現され得る。この第1のIRQ信号2508は、マスターデバイス2504にウェイクアップを開始させる。ウェイクアッププロセスの一部として、マスターデバイス2504は、IRQライン2502がハイになるマスターデバイス2504が完全にアウェイクするときまで、第2の所定の期間の間、IRQライン2502をローにまたは接地に引き下げる(マスターデバイスプルダウン期間2514参照)ように構成される。第1の所定の期間は、第2の所定の期間よりも短いので、スレーブデバイス2512は、その第1の割込み信号2508が、IRQライン/バス2502上の別の信号によって上書きされたか、その信号と競合した(すなわち、割込みライン/バス2502上で別のデバイスとの競合が存在した)ことを認識する。第2の所定の期間は、スリープしているマスターデバイスが、ウェイクアップするためにIRQライン/バス2502上の競合調停機構を利用することを可能にするために、スレーブデバイスからの全ての可能な割込み信号よりも長くなるように意図的に設定され得る。すなわち、スレーブデバイスは、競合する信号が割込みライン/バス2502上に発行されていることに気づいた場合、割込み信号を(割込みライン/バス2502が再びハイになった後)再試行/再送するように構成され得る。
【００５７】
この例において、スレーブデバイス2512は、第1の所定の期間の間、IRQライン/バス2502をローに引き下げることによって、その第1の割込み信号2508を送る。第1の所定の期間の満了時に、スレーブデバイス2512は、IRQライン/バス2502を解放する(たとえば、そのため、割込みライン/バス2502は、再びハイになるべきである)。しかし、ハイになるよりも、割込みライン/バス2502は、マスターデバイス2504が第2の所定の期間の間、IRQライン/バス2502をローに引き下げているため、ローのままである。その結果、スレーブデバイス2512は、そのIRQ信号2508が認識されていなかったことを知る。IRQライン2502が所定の期間(すなわち、IRQNバス空き時間2516)の間ハイであったことを感知した後、スレーブデバイス2512は、(IRQライン/バス調停プロセスの一部として)第2のIRQ信号2510を発行し、完全にアウェイクしているマスターデバイス2504は、ここで第2のIRQ信号2510を検出し、スレーブデバイス2512に応答を送る。たとえば、マスターデバイス2504は、スレーブデバイス2512に状態要求を送ることができ、状態要求は、その第2の割込み信号2510に対する応答であるとしてスレーブデバイス2512によって理解され得る。
【００５８】
図26は、スレーブデバイスからの割込み要求に応答してウェイクアップ信号2602を生成する例示的なマスターデバイス受信機ロジック2600を示す。スレーブデバイスは、IRQライン2502をローに引き下げ、アクティブなマスターデバイスにウェイクアップを開始させる。ウェイクアップの一部として、システムクロックSYSCLK2606は、いくらかの時間後、安定2608に達する。(スレーブデバイスによって引き起こされた)ローIRQライン2502が終了したとき、IRQライン2502は、アクティブなマスターデバイスが完全にアウェイクし、SYSUPシステムアップインジケータライン2604をプルアップする(2610)ことによって、IRQライン2502をハイに戻すまで、ローのままである。IRQライン2502が所定の期間(すなわち、IRQNバス空き時間)の間ハイであることを感知した後、スレーブデバイスは、完全にアウェイクしているアクティブなマスターデバイスが検出し、応答する第2のIRQを発行する。したがって、スリープしているアクティブなマスターデバイスと対話することを望んでいるスレーブデバイスに関して、スレーブデバイスは、2つのIRQを発行し、第1のIRQは、マスターデバイスをウェイクアップさせ、第2のIRQは、マスターデバイスに、スレーブデバイスが注意を要求していることを知らせる。マスターデバイスは、スレーブデバイスが望んでいるサービスを決定するために、スレーブデバイス内の状態レジスタに順次問い合わせる。
【００５９】
《例示的なマスターデバイスとその動作》
図27は、マスターデバイスによって制御される共有制御データバスを介してスレーブデバイスのスリープモードを監視および制御するために適合された例示的なマスターデバイス2702を示すブロック図である。マスターデバイス2702は、図1〜図26に関連して説明および/または論じた1つまたは複数の特徴を実現することができる。マスターデバイス2702は、第1の通信インターフェース/回路2706、第2の通信インターフェース/回路2708、メモリ/記憶デバイス2724、および/または処理回路2704を含むことができる。第1の通信インターフェース/回路2706は、複数の他のデバイスが結合され得る単一ライン割込み要求(IRQ)バスに結合するように機能することができる。一例において、第1の通信インターフェース2706は、IRQバスを介するスレーブデバイスによる割込み信号の検出時にマスターデバイスがスリープモードからウェイクアップすることを許可するマスターデバイス受信機ロジック2600(図26)を含むことができる。第2の通信インターフェース/回路2708は、複数の他のデバイスも結合され得る共有制御データバスに結合するように機能することができる。第2の通信インターフェースは、マスターデバイスが、共有制御データバスに結合された複数のスレーブデバイスに順次問い合わせ、ならびに/またはコマンド(たとえば、読出しおよび/もしくは書込み動作)をスレーブデバイスに送るために機能することができる。
【００６０】
処理回路2704は、本明細書に記載の1つまたは複数の機能を実行するために、様々なサブ回路および/またはモジュールを含むことができる。たとえば、通信管理回路/モジュール2710は、別個のIRQバス上でアサートされた割込み信号に基づいて、制御データバスに結合されたすべてのデバイスに関する共有制御データバス上の通信を管理するように適合され得る。IRQバス監視回路/モジュール2712は、IRQ信号が(たとえば、スレーブデバイスによって)アサートされたとき、確認するためにIRQバスを監視するように適合され得る。スレーブウェイクアップ回路/モジュール2714は、共有制御データバスに結合されたデバイスのためのグローバルウェイクアップコマンドを送る、および/または標的ウェイクアッププロセス(たとえば、非標的デバイスの標的スリープコマンドが続くグローバルウェイクアップ)を実施するように適合され得る。スレーブスリープ回路/モジュール2716は、共有制御データバスに結合されたデバイスに、グローバルスリープコマンドおよび/または標的スリープコマンドを送るように適合され得る。データバス監視回路/モジュール2718は、共有制御データバス上の通信の開始および/または終了を確認するために、マスターデバイスが制御データバスを監視することを可能にするように適合され得る。省電力回路/モジュール2720は、マスターデバイスを動作のスリープモードにするために機能することができる。マスター/スレーブモード回路/モジュール2722は、スレーブデバイスとして動作することと、マスターデバイスとして動作することとの間でマスターデバイス2702を切り替えるために機能することができる。
【００６１】
メモリ/記憶デバイス2724は、どのスレーブデバイスがスリープモードにあり、どれがアウェイクしているのかを追跡するために、マスターデバイス2702によって維持され得るスレーブデバイススリープ状態リストを記憶するように機能することができる。マスターデバイス2702は、スレーブデバイスがスリープモードに入ったことの指標に応じて、そのようなスレーブデバイスをリストに追加することができ、スレーブデバイスがアウェイクしていることの指標を受信したとき、そのようなデバイスをリストから除去することができる。
【００６２】
図28は、スリープモードからアウェイクする、および/または、1つまたは複数のスリープしているスレーブデバイスをアウェイクさせるための、マスターデバイスにおいて動作する例示的な方法2800を示す。マスターデバイスは、マスターデバイスにより制御データバスを制御することができ、制御データバスは、少なくとも第1のラインを含む(2802)。一例において、制御データバスは、2ラインバスであり得、ウェイクアップ信号は、所定の期間中に第1のラインをハイまたはローにすることによって実現される。様々な例によれば、所定の期間は、約および/または少なくとも10マイクロ秒、20マイクロ秒、25マイクロ秒、30マイクロ秒、35マイクロ秒、または40マイクロ秒であり得る。いくつかの例において、所定の期間は、25マイクロ秒と30マイクロ秒との間、28マイクロ秒と32マイクロ秒との間、および/または25マイクロ秒と40マイクロ秒との間であり得る。スレーブデバイススリープ状態リストは、マスターデバイスにおいて維持され得る(2804)。マスターデバイスは、制御データバスを介して、マスターデバイスから複数のスレーブデバイスに、全てのスリープしているスレーブデバイスをウェイクアップさせる単一のグローバルウェイクアップ信号を送信することができる(2806)。グローバルウェイクアップ信号に応答して、マスターデバイスは、各スレーブデバイスがウェイクアップした後、割込み信号を受信することができる(2808)。マスターデバイスは、受信した割込み信号に基づいて、スレーブデバイススリープ状態リストを更新することができる(2810)。
【００６３】
代替の実施態様において、マスターデバイスは、グローバルウェイクアップ信号の代わりに、マルチ信号および/またはマルチコマンド標的ウェイクアップ方式を実施することができる。スリープしているスレーブデバイスは、個別に連絡することができないので、標的ウェイクアップ信号は、共有制御データバスを介しては不可能であることに留意されたい。代わりに、2ステッププロセスが使用され、2ステッププロセスでは、グローバルウェイクアップ信号がまず、共有制御データバス上で動作しているアウェイクしているすべてのデバイスに送られる。続いて、いくつかのデバイス(たとえば、アウェイクしていることを意味しない非標的デバイス)にスリープモードに入るように選択的に命じる標的スリープコマンドが送られる。標的スリープコマンドは、どのスレーブデバイスがスリープモードに入るべきであるか、または、スリープコマンドを無視するべきそれらのスレーブデバイスを示すことができる。
【００６４】
1つの特徴によれば、マスターデバイスは、マスターモードまたはスレーブモードのいずれかで動作するように動的に構成可能であり得、マスターデバイスが第1のスレーブデバイスからマスター要求を受信したとき、マスターデバイスは、制御データバスの制御を第1のスレーブデバイスに渡す前に、第1のスレーブデバイスに、スリープしているスレーブデバイスのスレーブデバイススリープ状態リストを転送する。マスターデバイスは、制御データバスの制御を渡した後、スレーブモードにおける動作に切り替わる。
【００６５】
1つの例示的な実施態様において、マスターデバイスは、制御データバスに結合されたすべてのデバイスにスリープブロードキャスト信号を送ることができ、スリープブロードキャスト信号は、スリープモードに入るべき1つもしくは複数のスレーブデバイスを具体的に識別する、または、スリープ要求を無視するべき1つもしくは複数のスレーブデバイスを具体的に識別する(2812)。スリープブロードキャスト信号に続いて、マスターデバイスは、割込み要求バスを介して、第1のスレーブデバイスから、第1のスレーブデバイスがスリープモードに入っていることを示す割込み信号を受信することができる(2814)。
【００６６】
代替の実施態様において、マスターデバイスは、グローバルスリープブロードキャスト信号の代わりに、標的スリープコマンドを送ることができる。標的スリープコマンドは、どのスレーブデバイスがスリープモードに入るべきか、または、スリープコマンドを無視するべきそれらのスレーブデバイスを示すことができる。
【００６７】
別の特徴によれば、マスターデバイスは、スリープモードに入ることができる。マスターデバイスは、制御データバスとは別の割込みラインを介するスレーブデバイスからの第1の割込み信号の受信時にウェイクアップするように適合され得る。たとえば、マスターデバイスは、マスターデバイスがスリープモードにある場合、第1の割込み信号の検出時にマスターデバイスをウェイクアップさせる受信機論理回路を含むことができる。
【００６８】
スレーブデバイスの自発的ウェイクアップ機能によれば、マスターデバイスは、制御データバスとは別の割込み要求バスを開始して、アウェイクしているスレーブデバイスから割込み信号を受信することができる。この割込み信号は、スレーブデバイスが自発的にウェイクアップしており、もはやスリープモードにないことを、マスターデバイスが発見または確認することを可能にすることができる。割込み信号の受信時に、マスターデバイスは、スレーブデバイススリープ状態リストから第1のスレーブデバイスを除去する。
【００６９】
図29は、スレーブデバイスのスリープ状態および/またはアウェイク状態を維持するための、マスターデバイスにおいて動作する例示的な方法2900を示す。複数のスレーブデバイスは、共有割込み要求ライン上でグループに配置され、スレーブデバイスのいくつかは、自発的ウェイクアップ機能を有し、スレーブデバイスのいくつかは、自発的ウェイクアップ機能を持たず、自発的ウェイクアップ機能を有するすべのスレーブデバイスは、サイズ1のグループに配置される(2902)。方法は、また、ステップ2904において、スリープしているスレーブデバイスおよびスリープしていないスレーブデバイスのスレーブデバイススリープ状態リストを維持するステップを含む。ステップ2906において、マスターデバイスは、その特定のスレーブデバイスから(たとえば、割込みバスを介して)割込み信号を受信すると、自発的ウェイクアップ機能を有するスレーブデバイスに関して、スリープしている状態をスリープしていない状態に変更する。
【００７０】
《例示的なスレーブデバイスおよびその動作》
図30は、マスターデバイスによって制御される共有バス上でのマスターデバイスにより制御されるウェイクアップ/スリープおよび自発的ウェイクアップのために適合された例示的なスレーブデバイスを示すブロック図である。スレーブデバイス3002は、図1〜図26に関連して説明したおよび/または論じた1つまたは複数の特徴を実現することができる。スレーブデバイス3002は、第1の通信インターフェース/回路3006、第2の通信インターフェース/回路3008、処理回路3004、および/またはクロック3016を含むことができる。第1の通信インターフェース/回路3006は、複数の他のデバイスが結合され得る単一ライン割込み要求(IRQ)バスに結合するように機能することができる。第2の通信インターフェース/回路3008は、同様に複数の他のデバイスが結合され得る共有制御データバスに結合するように機能することができる。一例において、第2の通信インターフェース/回路3008は、スレーブデバイス受信機ロジック1700(図17)を含むことができ、スレーブデバイス受信機ロジック1700は、共有制御データバス上のマスターデバイスによるウェイクアップ信号の検出時に、スレーブデバイスがスリープモードからウェイクアップすることを許可する。クロック3016は、たとえば、第2の通信インターフェース/回路3008および/または処理回路3004に自走クロック信号を提供するデバイスであり得る。
【００７１】
処理回路3004は、本明細書に記載の1つまたは複数の機能を実行するために、様々なサブ回路および/またはモジュールを含むことができる。たとえば、割込み(IRQ)発生器回路/モジュール3010は、割込みバス上に割込み要求を生成するように適合され得る。コマンド処理回路/モジュール3012は、制御データバスへの/からのコマンドを処理するように適合され得る。モード切替え回路/モジュール3014は、スレーブデバイスが通常モード動作とスリープモードの動作との間で切り替わることを可能にするように適合され得る。省電力回路/モジュール3014は、スレーブデバイスをスリープモードの動作にするように機能することができる。自発的ウェイクアップ回路/モジュール3018は、トリガ信号を開始するように機能することができ、または、スレーブデバイス3002を自発的にウェイクアップさせるように機能する外部トリガ信号を受信することができる。たとえば、そのような自発的ウェイクアップ回路/モジュール3018は、たとえば、割込みバスおよび制御データバス以外のインターフェースを介して、センサからの外部信号を受信することができる。マスター/スレーブモード回路/モジュール3020は、スレーブデバイスとして動作することと、マスターデバイスとして動作することとの間でスレーブデバイスを切り替えるように機能することができる。
【００７２】
一例において、受信機論理回路は、共有制御データバスに結合された第2の通信インターフェース/回路3008内で動作することができる。スレーブデバイスが動作のスリープモードにあるとき、受信機論理回路は、(a)(たとえば、クロック3016から)自走クロック信号を取得し、(b)制御データバスのラインがローもしくはハイのいずれかに引かれる時間の長さを測定するために自走クロックシグナルを使用し、および/または(c)測定された時間の長さが所定の時間よりも長い場合、スレーブデバイスをウェイクアップさせるように構成され得る。
【００７３】
一態様によれば、スリープモードからのウェイクアップに応答して、IRQ生成器3010は、制御データバスとは別のバス(すなわち、IRQバス)を介して、スレーブデバイスがウェイクアップしていることを示す割込み信号をマスターデバイスに送るように構成され得る。マスターデバイスからの関与なしに、スレーブデバイスが自発的にスリープモードからウェイクアップする場合、スレーブデバイスは、共有割込み要求ラインを介して第1の割込み信号を送ることができる。この第1の割込み信号は、このスレーブデバイス3002がアウェイクしていることをマスターデバイスに示すように機能することができる。しかしながら、スレーブデバイスは、第1の割込み信号を送るとき、割込みバスの競合が検出された場合、共有割込みラインを介して第2の割込み信号を送ることができる。図25において注意したように、マスターデバイスがスリープモードにある場合、第1の割込み信号は、マスターデバイスをウェイクアップさせるように機能することができたが、第2の割込み信号は、マスターデバイスが、このスレーブデバイスがアウェイクしていることを検出することを可能にする。図25に関連して論じたように、マスターデバイスは、スレーブデバイスからの割込み信号を見失うことなく、スリープモードからウェイクアップすることを可能にするために、共有割込み要求ライン(たとえば、割込みバス)上の調停処理を利用する。
【００７４】
図31は、マスターデバイスによって制御される共有制御データバス上のウェイクアップモードおよび/またはスリープモードを容易にするためのスレーブデバイスにおいて動作する例示的な方法3100を示す。スレーブデバイスは、制御データバスを制御するマスターデバイスからのグローバルまたは標的スリープおよび/またはウェイクアップコマンドに関して共有制御データバスを監視することができる(3102)。スレーブデバイスは、マスターデバイスから受信したウェイクアップまたはスリープコマンドに従って(または、応答して)ウェイクアップまたはスリープするように動作のモードを変更することができる(3104)。スレーブデバイスがウェイクアップしている、またはアウェイクしていることを示す第1の割込み信号は、制御データバスとは別の割込みバスを介して、マスターデバイスに送られ得る(3106)。マスターデバイスがアウェイクしている場合、マスターデバイスは、共有制御データバスを介して(たとえば、スレーブデバイスに状態要求を送ることによって)第1の割込み信号に応答することになる。しかしながら、スレーブデバイスに気づかれずに、マスターデバイスは、スリープモードである可能性がある。そこで、マスターデバイスにおける受信機論理回路は、第1の割込み信号の検出時にマスターデバイスをウェイクアップさせるように機能することができる。このウェイクアッププロセスの一部として、マスターデバイスは、割込みバスをローに引き下げることができ、それによって、スレーブデバイスによる割込みライン上の調停プロセスをトリガする。すなわち、スレーブデバイスは、他の何かが割込みバス/ライン上のその割込みを上書きしていることに気づく(たとえば、第1の割込み信号が送られたとき、割込みラインの競合を検出する)ことになる。その結果、スレーブデバイスは、共有割込みラインを介して、マスターデバイスに第2の割込み信号を送ることができる(3108)。この第2の割込み信号は、マスターデバイスが認識し、(たとえば、スレーブデバイスに順次問い合わせる、またはスレーブデバイスに状態要求を送ることによって)スレーブデバイスに応答することができるものである。
【００７５】
図に示す構成要素、ステップ、特徴、および/または機能の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  デバイス
200  書込みデータワード
202  書込みデータ
204  制御コードビット
206  予備ビット
300  一般呼
302  スレーブデバイス識別(SID)部分/フィールド
400  回路
402  割込み要求バス
404  マスターデバイス
406  スレーブデバイス
406a  スレーブデバイス
406b  スレーブデバイス
406c  スレーブデバイス
408  スリープオンリーコマンド
410a  マスターデバイス
410b  マスターデバイス
502  SIDリスト
504  スリープ除外コマンド
506  スリープオンリーコマンド
610  マスターデバイス
612  マスターデバイス
702  割込み要求ライン
704  マスターデバイス
714  スレーブデバイス
720  IRQスリープ要求信号、IRQ信号、スリープ要求、あくびIRQ信号
804  スリープ要求
904  スリープオンリー一般呼コマンド
906  SIDリスト
908  SIDフィールド
910  メッセージタイプフィールド
1100  スレーブデバイススリープ状態リスト
1202  マスターデバイス
1204  マスターデバイス
1206  スレーブデバイススリープ状態リスト
1302  IRQライン
1304  マスターデバイス
1308  グローバルウェイクアップ信号
1310  スレーブデバイス
1312  スレーブデバイス
1314  マスターデバイス
1316  マスターデバイス
1318  スレーブデバイス
1502  スリープオンリーコマンド
1700  受信機論理回路
1702  シリアルデータ(SDA)ライン
1704  シリアルクロック(SCL)ライン
1706  ORゲート
1708  ANDゲート
1710  Dフリップフロップ
1712  Dフリップフロップ
1714  リアルタイムクロック(RTCCLK)ライン
1716  シンボルのストリーム
1802  送信機
1804  データビットのシーケンス
1808  ビット-遷移数変換器ブロック
1810  遷移-シンボルブロック
1812  クロックラインSCL
1814  データラインSDA
1816  逐次的シンボル
1820  受信機
1822  逐次的シンボル
1824  SCLライン
1826  SDAライン
1828  クロックデータ回復(CDR)ブロック
1830  シンボル-遷移数変換器ブロック
1832  遷移数-ビット変換器
1902  19ビットデータ領域
1904  第20のビット領域
2202  トリガ信号
2204  マスターデバイス
2210  スレーブデバイス
2302  IRQライン
2304  マスターデバイス
2308  論理グループ(グループK)
2310  スレーブデバイス
2312  スレーブデバイス
2404  マスターデバイス
2410  スレーブデバイス
2412  割込み要求(IRQ)
2502  IRQライン
2504  マスターデバイス
2508  割込み信号
2510  IRQ信号
2512  スレーブデバイス
2514  マスターデバイスプルダウン期間
2516  IRQNバス空き時間
2600  マスターデバイス受信機ロジック
2602  ウェイクアップ信号
2604  SYSUPシステムアップインジケータライン
2606  システムクロックSYSCLK
2608  安定
2610  プルアップする
2702  マスターデバイス
2704  処理回路
2706  第1の通信インターフェース/回路
2708  第2の通信インターフェース/回路
2710  通信管理回路/モジュール
2712  IRQバス管理監視回路/モジュール
2714  スレーブウェイクアップ回路/モジュール
2716  スレーブスリープ回路/モジュール
2718  データバス監視回路/モジュール
2720  省電力回路/モジュール
2722  マスター/スレーブモード回路/モジュール
2724  メモリ/記憶デバイス
3002  スレーブデバイス
3004  処理回路
3006  第1の通信インターフェース/回路
3008  第2の通信インターフェース/回路
3010  割込み(IRQ)発生器回路/モジュール
3012  コマンド処理回路/モジュール
3014  モード切替え回路/モジュール、省電力回路/モジュール
3016  クロック
3018  自発的ウェイクアップ回路/モジュール
3020  マスター/スレーブモード回路/モジュール
【図１】
2016532925.tif 000003
【図６】
2016532925.tif 000004
【図７】
2016532925.tif 000005
【図８】
2016532925.tif 000006
【図９】
2016532925.tif 000007
【図１０】
2016532925.tif 000008
【図１１】
2016532925.tif 000009
【図１３】
2016532925.tif 000010
【図１４】
2016532925.tif 000011
【図１５】
2016532925.tif 000012
【図１６】
2016532925.tif 000013
【図１７】
2016532925.tif 000014
【図１８】
2016532925.tif 000015
【図１９】
2016532925.tif 000016
【図２１】
2016532925.tif 000017
【図２２】
2016532925.tif 000018
【図２３】
2016532925.tif 000019
【図２４】
2016532925.tif 000020
【図２５】
2016532925.tif 000021
【図２６】
2016532925.tif 000022
【図２７】
2016532925.tif 000023
【図２８】
2016532925.tif 000024
【図２９】
2016532925.tif 000025
【図３０】
2016532925.tif 000026
【図３１】
2016532925.tif 000027
【図２】
2016532925.tif 000028
【図３】
2016532925.tif 000029
【図４】
2016532925.tif 000030
【図５】
2016532925.tif 000031
【図１２】
2016532925.tif 000032
【図２０】
2016532925.tif 000033
【国際調査報告】
2016532925.tif 000034
2016532925.tif 000035