(57)【要約】  マスタ/スレーブ実施形態および半二重実施形態を含むエニュマレーション技法が提供される。
2018504714.tif 000002
【特許請求の範囲】
【請求項１】
送信ピンおよび受信ピンを有する2-ワイヤインターフェースを含む第1のデバイスのために、第1の開始パルスを前記送信ピンを通して送出することによって、第2のデバイスのエニュマレーションを開始するステップと、
前記第1の開始パルスに応答して、少なくとも1つの受信パルスを前記送信ピンを介して前記第2のデバイスから受信するステップであって、前記少なくとも1つの受信パルスはエニュマレーションデータの少なくとも第1のビットを表すように変調され、前記エニュマレーションデータは、前記少なくとも第1のビットから最終ビットまでエニュマレーションデータシーケンスに従って配列される、受信するステップと、
前記第2のデバイスからの前記エニュマレーションデータの残りの部分が前記送信ピンを通して付加的な受信パルスとして前記エニュマレーションデータシーケンスに従って受信されるまで、付加的な開始パルスを前記送信ピンを通して前記第2のデバイスに送信するステップと、
すべての前記エニュマレーションデータの受信後に、前記エニュマレーションデータに応答して構成される通常動作モードを開始するステップであって、前記通常動作モードにおいて、前記第2のデバイスにデータを送信するために前記送信ピンが使用され、かつ前記第2のデバイスからデータを受信するために前記受信ピンが使用される、開始するステップと
を含む、エニュマレーション方法。
【請求項２】
前記少なくとも1つの受信パルスおよび前記付加的な受信パルスは、パルス幅変調されたパルスである、請求項1に記載のエニュマレーション方法。
【請求項３】
前記少なくとも1つの受信パルスおよび前記付加的な受信パルスは、振幅変調されたパルスを含む、請求項1に記載のエニュマレーション方法。
【請求項４】
前記第1の開始パルスおよび前記付加的な開始パルスは電流パルスを含む、請求項1に記載のエニュマレーション方法。
【請求項５】
前記第1の開始パルスおよび前記付加的な開始パルスは電圧パルスを含む、請求項1に記載のエニュマレーション方法。
【請求項６】
前記エニュマレーションデータから前記第2のデバイスのための仮想GPIOフレームサイズを決定するステップをさらに含む、請求項1に記載のエニュマレーション方法。
【請求項７】
前記第1のデバイス内の汎用入出力(GPIO)インターフェースにおいて、プロセッサから第1の信号のセットを受信し、前記プロセッサから第2のGPIO信号のセットを受信するステップと、
前記GPIOインターフェースから、前記第2のGPIO信号のセットを対応するGPIOピンを通して前記第2のデバイスに送信するステップと、
前記GPIOインターフェースから、有限ステートマシン(FSM)に前記第2GPIO信号のセットを並列に与えるステップであって、前記第2のGPIO信号のセットのためのサイズは、前記決定された仮想GPIOフレームサイズに等しい、与えるステップと
をさらに含む、請求項6に記載のエニュマレーション方法。
【請求項８】
前記第2のGPIO信号のセットを仮想GPIO信号として前記送信ピンを介して前記第2のデバイスにシリアルに送信するステップをさらに含む、請求項7に記載のエニュマレーション方法。
【請求項９】
前記エニュマレーションデータから前記第2のデバイスに関する仮想GPIOインターフェースのためのワイヤ数を決定するステップをさらに含む、請求項1に記載のエニュマレーション方法。
【請求項１０】
前記エニュマレーションデータが完了したか否かを判断するために、前記エニュマレーションデータ内のカウントを記憶された値と比較するステップをさらに含む、請求項1に記載のエニュマレーション方法。
【請求項１１】
前記決定されたワイヤ数は2である、請求項9に記載のエニュマレーション方法。
【請求項１２】
前記通常動作中にパルス幅変調された仮想GPIO信号を前記送信ピンを介して前記第2のデバイスに送信するステップをさらに含む、請求項11に記載のエニュマレーション方法。
【請求項１３】
前記決定されたワイヤ数は3であり、前記方法は、
前記仮想GPIOインターフェースのための第3のワイヤ上で外部クロックを受信するステップと、
前記通常動作中に前記受信した外部クロックに応答して、前記送信ピンを介しての前記第2のデバイスへの仮想GPIO信号のシリアル送信を同期させるステップと
をさらに含む、請求項9に記載のエニュマレーション方法。
【請求項１４】
送信ピンと、
受信ピンと、
電流源と、
一連の開始パルスを前記送信ピンを介して遠隔デバイスに送信することによって、前記遠隔デバイスのエニュマレーションを開始するように構成されるエニュマレーションステートマシンであって、前記遠隔デバイスのためのエニュマレーションデータを決定するために、前記送信ピンを介して受信された前記遠隔デバイスからの一連のパルスを復調するようにさらに構成される、エニュマレーションステートマシンと
を備える、集積回路。
【請求項１５】
前記エニュマレーションデータに従って構成される仮想GPIOフレームサイズを用いて通常動作モードにおいて仮想GPIOデータを前記送信ピンを介して前記遠隔デバイスに送信するように構成され、かつ仮想GPIOデータを前記受信ピンを介して前記遠隔デバイスから受信するように構成される仮想GPIOインターフェースをさらに備える、請求項14に記載の集積回路。
【請求項１６】
前記エニュマレーションステートマシンは、前記仮想GPIOインターフェース内の有限ステートマシンを含む、請求項15に記載の集積回路。
【請求項１７】
前記エニュマレーションステートマシンは、パルス幅復調に従って前記遠隔デバイスからの前記一連のパルスを復調するようにさらに構成される、請求項14に記載の集積回路。
【請求項１８】
前記エニュマレーションステートマシンは、振幅復調に従って前記遠隔デバイスからの前記一連のパルスを復調するようにさらに構成される、請求項14に記載の集積回路。
【請求項１９】
送信ピンおよび受信ピンを有するマスタデバイスのために、先頭パルスを前記送信ピンを通して送信することによって、スレーブデバイスのエニュマレーションを開始するステップであって、前記エニュマレーションデータは第1のビットから最終ビットまでエニュマレーションデータシーケンスに従って配列される、開始するステップと、
前記先頭パルスの前記送信に応答して、前記エニュマレーションデータの少なくとも第1のビットを前記受信ピンを介して前記スレーブデバイスから受信するステップと、
前記エニュマレーションデータシーケンスに従って前記エニュマレーションデータの残りの部分を順次に受信するために、付加的なパルスを前記送信ピンを通して前記スレーブデバイスに送信するステップと、
前記マスタデバイスにおいて前記エニュマレーションデータをすべて受信した後に、前記エニュマレーションデータに応答して構成されるシリアル通信プロトコルに従って前記マスタデバイスが前記スレーブデバイスと通信する通常動作モードを開始するステップと
を含む、エニュマレーション方法。
【請求項２０】
前記スレーブデバイスの前記エニュマレーションを開始するステップが、パワーオンリセット信号のアサート動作に応答する、請求項19に記載のエニュマレーション方法。
【請求項２１】
前記先頭パルスおよび前記付加的なパルスを送信するステップが、前記送信ピンを通してビットバンクロック信号のサイクルを送信するステップを含む、請求項19に記載のエニュマレーション方法。
【請求項２２】
前記シリアル通信プロトコルが仮想GPIO通信プロトコルであり、前記エニュマレーション方法は、前記スレーブデバイスのための仮想GPIOフレームサイズを決定するために前記エニュマレーションデータを使用するステップをさらに含む、請求項19に記載のエニュマレーション方法。
【請求項２３】
前記シリアル通信プロトコルは仮想GPIO通信プロトコルであり、前記エニュマレーション方法は、前記スレーブデバイスのための仮想GPIOインターフェースのためのワイヤ数を決定するために前記エニュマレーションデータを使用するステップをさらに含む、請求項19に記載のエニュマレーション方法。
【請求項２４】
前記通常動作モードを開始するステップは、
前記マスタデバイス内の汎用入出力(GPIO)インターフェースにおいて、プロセッサから第1の信号のセットを受信し、前記プロセッサから第2のGPIO信号のセットを受信するステップと、
前記GPIOインターフェースから、対応するGPIOピンを通して前記スレーブデバイスに前記第2のGPIO信号のセットを送信するステップと、
前記GPIOインターフェースから、有限ステートマシン(FSM)に前記第2のGPIO信号のセットを並列に与えるステップであって、前記第2のGPIO信号のセットのためのサイズは、前記決定された仮想GPIOフレームサイズに等しい、与えるステップと
を含む、請求項22に記載のエニュマレーション方法。
【請求項２５】
前記第2のGPIO信号のセットを仮想GPIO信号として前記送信ピンを介して前記スレーブデバイスにシリアルに送信するステップをさらに含む、請求項24に記載のエニュマレーション方法。
【請求項２６】
複数のGPIOピンと、
プロセッサから第1の信号のセットを受信し、GPIO信号として遠隔スレーブデバイスに送信するために、前記第1の信号のセットのGPIO部分を前記複数のGPIOピンに与えるように構成されるGPIOインターフェースと、
専用送信ピンと、
専用受信ピンと、
有限ステートマシン(FSM)であって、
前記スレーブデバイスからのエニュマレーションデータの送信を開始するために、第1のパルスを前記送信ピンを介して送信することであって、前記エニュマレーションデータは、第1のビットから最終ビットまでエニュマレーションデータシーケンスに従って配列される、送信することと、
前記第1のパルスの前記送信に応答して、前記エニュマレーションデータの少なくとも第1のビットを前記受信ピンを介して受信することと、
前記エニュマレーションデータシーケンスに従って前記エニュマレーションデータの残りの部分を順次に受信するために、付加的なパルスを前記送信ピンを通して前記スレーブデバイスに送信することであって、前記FSMは、前記エニュマレーションデータによって識別された仮想GPIOフレームサイズに従って、前記専用送信ピンを介して前記スレーブデバイスに仮想GPIO信号の送信セットをシリアルに送信するようにさらに構成される、送信することと
を行うように構成される、有限ステートマシンと
を備える、マスタ集積回路。
【請求項２７】
前記FSMは、前記仮想GPIO信号の送信セットをパルス幅変調仮想GPIO信号としてシリアルに送信するようにさらに構成される、請求項26に記載のマスタ集積回路。
【請求項２８】
前記FSMは、前記仮想GPIO信号の送信セットを振幅変調仮想GPIO信号としてシリアルに送信するようにさらに構成される、請求項26に記載のマスタ集積回路。
【請求項２９】
前記FSMは、前記仮想GPIO信号の送信セットを一連の電圧パルスとしてシリアルに送信するようにさらに構成される、請求項26に記載のマスタ集積回路。
【請求項３０】
前記FSMは、前記仮想GPIO信号の送信セットを一連の電流パルスとしてシリアルに送信するようにさらに構成される、請求項26に記載のマスタ集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2015年2月4日に出願された米国仮出願第62/112,078号の利益を主張する。さらに、本出願は、2015年4月14日に出願された米国仮出願第62/147,266号の利益を主張する。
【０００２】
本出願は集積回路に関し、より詳細には、スレーブ集積回路のエニュマレーション(enumeration)に関する。
【背景技術】
【０００３】
モバイルデバイスのようなシステム内の集積回路間の通信をサポートするために、種々のデジタルシグナリングプロトコルが開発されてきた。そのようなデジタルシグナリングプロトコルの例は、汎用I/O(GPIO:general purpose I/O)、ユニバーサル非同期レシーバトランスミッタ(UART:universal asynchronous receiver transmitter)、シリアル周辺機器インターフェース(SPI:serial peripheral interface)、およびインター集積回路(I2C:inter-integrated circuit)を含む。技術が進歩するにつれて、これらの種々のデジタルシグナリングプロトコルも向上してきた。たとえば、本件の譲受人は、GPIOステートマシンおよびインターフェースがプロセッサからのGPIOデータをシリアライズし、シリアライズされたGPIOデータを専用送信ピンを介して送信する「仮想」GPIOアーキテクチャを開発した。GPIOインターフェースを通して引き続き従来通りに接続してもよいという点で、プロセッサはまったく、またはほとんどソフトウェア変更を必要としないので、対応する複数の従来のGPIOピンを介してではなく、専用送信ピンを介して多種多様のGPIO信号を送信することは、プロセッサから見てトランスペアレントである。遠隔集積回路が、シリアライズされた仮想GPIOデータを専用受信ピンを介して受信する。したがって、各仮想GPIO集積回路は、少なくとも2つのピン(送信ピンおよび受信ピン)を含む。さらに、送信側集積回路および受信側集積回路を同期させるために、クロックピンが設けられる場合がある。他の実施形態では、2ピンおよび3ピンの両方の仮想GPIO実施形態が存在するように、クロックピンは利用されない。
【０００４】
種々のデジタルシグナリングプロトコル構成が存在するので、デバイスエニュマレーション中に、実施されている特定のプロトコルが識別されることが望ましい。しかしながら、既存のデバイスエニュマレーション技法は、マスタおよびスレーブのためのシグナリングプロトコルが同種であることを想定する。
【０００５】
したがって、当該技術分野において異種のリンクおよびプロトコルをサポートする改善されたエニュマレーション技法が必要とされている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願第14/540,366号
【発明の概要】
【課題を解決するための手段】
【０００７】
同じシステム内の他のスレーブ集積回路の前に、マスタ集積回路がパワーオンするのを保証される、集積回路のシステムのためのマスタ/スレーブエニュマレーション技法が提供される。さらに、そのピアの前に、単一の集積回路がパワーオンしないのを保証する、ピア集積回路のシステムのための半二重エニュマレーション技法が提供される。最初に、マスタ/スレーブエニュマレーション技法が論じられ、その後半二重エニュマレーション技法が論じられることになる。
【０００８】
マスタ/スレーブエニュマレーション実施形態において、マスタデバイスは、残りのデバイスの前に、パワーオンするように構成される。マスタデバイスとのインターフェースを有する残りのデバイスは、本明細書においてスレーブデバイスとして表される(「デバイス」および「集積回路」という用語は、本明細書において同等であるとみなされることに留意されたい)。マスタデバイスの一例は、センサまたはワイヤレスインターフェースモジュールのような周辺デバイスの前に常にパワーオンするように設計されるスマートフォンプロセッサのようなシステムオンチップ(SOC)である。マスタデバイスが最初にパワーオンするのが確実にされるので、マスタデバイスによってエニュマレーションされるという点で、これらの残りのデバイスはスレーブデバイスである。スレーブデバイスは、同じ電圧シグナリングレベルを用いて電圧モードシグナリングプロトコルに従ってマスタデバイスに応答してもよい(たとえば、グラウンドの送信はバイナリ0を表すのに対して、電源電圧VDDの送信はバイナリ1を表す)。
【０００９】
マスタデバイスおよびスレーブデバイスはそれぞれ、専用送信ピンおよび専用受信ピンを含み、それらのピンは、通常動作時に対応するシリアル通信プロトコルを用いて通信するために使用される。マスタデバイスの送信ピンは、対応するスレーブデバイスの受信ピンに結合する。スレーブデバイスの送信ピンは、マスタデバイスの受信ピンに結合する。これらの同じピンは、マスタデバイスがそのスレーブデバイスをエニュマレーションしてもよいように、エニュマレーション動作モードにおいて使用される。マスタデバイスは、エニュマレーション動作モードを開始するために、パワーオンリセット信号のようなエニュマレーションモード信号に応答してもよい。各スレーブデバイスは、パワーオンした後に、その送信ピンを電源電圧にアサートするように構成されてもよい。したがってマスタデバイスは、対応するスレーブデバイスがエニュマレーションされる準備ができたことを判断するために、その受信ピンが電源電圧にアサートされたか否かを監視することができる。
【００１０】
エニュマレーションモードにおいて、マスタデバイスは、所定のクロックサイクル数を用いてその送信ピンにクロックを供給する。この所定の数は、クロックを供給されるスレーブデバイスによって記憶されるエニュマレーションデータ全体を引き出すのに十分である。マスタがその送信ピンにクロックを供給するときに、スレーブの受信ピンがクロックを供給されるように、マスタデバイスの送信ピンはスレーブデバイスの受信ピンに結合する。応答して、スレーブデバイスは、自らのエニュマレーションデータをその送信ピンを通してシフトアウトする。スレーブデバイスの送信ピンは、マスタデバイスの受信ピンに結合する。複数のスレーブデバイスを含むシステムの場合、マスタデバイスは、したがってスレーブデバイスごとの送信/受信ピン対を含む場合がある。したがって、マスタデバイスは、スレーブのエニュマレーションデータをその受信ピン上で受信する。このエニュマレーションデータは、通常動作モード中に専用送信ピンおよび専用受信ピンを通して通信するためにスレーブデバイスによって使用される特定のシリアルプロトコルを識別する。マスタデバイスが、引き出されたエニュマレーションデータをその受信ピン上で受信するように、スレーブの送信ピンはマスタの受信ピンに結合する。エニュマレーションデータは、フレーム長、送信プロトコル、フロー制御などに関するエニュマレーションデータのような多種多様のフィールドを含んでもよい。スレーブデバイスがすべてエニュマレーションされると、マスタデバイスおよびスレーブデバイスは、その際、通常動作モードに移行することができる。引き出されたエニュマレーションデータに誤りがなく、マスタデバイスが、スレーブデバイスによって使用される特定のシリアル通信プロトコルをサポートすると仮定すると、マスタデバイスおよびスレーブデバイスは、その際、エニュマレーションモードを完了した後に通常動作モードを開始してもよい。たとえば、エニュマレーションされたスレーブデバイスが2-ワイヤ仮想GPIO(VGI)デバイスである場合には、マスタデバイスおよびスレーブデバイスのための専用送信ピンおよび受信ピンは、通常動作モードにおいて2-ワイヤVGIインターフェースとして使用されることになる。ここで、半二重エニュマレーション技法が論じられることになる。
【００１１】
半二重エニュマレーション技法は、システム設計者が、どのピアデバイスが最初に起動することになるかを確信できないすべてのピアデバイスのシステムにおいて使用されることがある。その際、各デバイスがマスタデバイスとしての役割を果たし、マスタ/スレーブエニュマレーション技法に関して先に論じられたように、そのピアにクロックを供給しようと試みる場合には、競合条件の結果としてデバイスの送信ピンおよび受信ピンの両方がクロックを供給される可能性がある。それらのクロック供給に起因して、送信ピンおよび受信ピンの両方がデータ送信のために利用できないという点で、そのような同時のクロック供給中にエニュマレーションデータを引き出すのが妨げられる。ピアシステム環境におけるそのような競合条件を防ぐために、各デバイスは、起動時にその送信ピンを電源電圧にアサートするように構成される。第1の起動されたデバイスによる送信ピン電圧のこのアサート動作は、受信ピンが第1のピアの送信ピンに結合される第2のピアデバイスの受信ピンにおいて受信される。したがって、第2のピアデバイスは、第1のピアデバイスがエニュマレーションされる準備ができたことを通知される。エニュマレーションを開始するために、1つのピアデバイスは、電流パルスまたは電圧パルスをその送信ピンを通して送出する。このパルスは、受信側デバイスによってその受信ピンにおいて受信される。その際、受信側デバイスは、残りのピアへのエニュマレーションデータの送信を開始するために、1つまたは複数の電流パルスまたは電圧パルスをその受信ピンを通して送信することによって、受信したパルスに応答する。したがって、その送信は2つのデバイスが単一のリンクまたはワイヤを共有するという点で半二重である。しかしながら、そのデバイスはマスタ/スレーブエニュマレーション技法に関して先に論じられたのに類似の2-ワイヤインターフェースを含むことに留意されたい。エニュマレーション後に、ピアデバイスは、したがって2-ワイヤエニュマレーション技法の場合のように通常動作モードにおいて2-ワイヤインターフェースを使用することができる。マスタ/スレーブエニュマレーションモードは両方のピンを使用するが、半二重エニュマレーション技法は、デバイスごとに単一のピン/ワイヤを介して行われることに留意されたい。
【００１２】
半二重エニュマレーション技法は単一のワイヤを介して行われるが、両方のピアデバイスが互いを同時にエニュマレーションしてもよいことに留意されたい。たとえば、各ピアデバイスは、先に論じられたように、もう一方のピアデバイスをその送信ピンを通してエニュマレーションしてもよい。各エニュマレーションは自らの対応するワイヤにおいて行われるので、競合条件が生じる可能性はない。対照的に、先に論じられたマスタ/スレーブ(2-ワイヤ)エニュマレーション技法は、エニュマレーション中に競合条件が生じないように、最初に起動するのが確実であるマスタデバイスを必要とする。両方のエニュマレーションモードのための有利な特徴は、以下の詳細な説明を通してより深く理解することができる。
【図面の簡単な説明】
【００１３】
【図１Ａ】本開示の一実施形態によるマスタ/スレーブエニュマレーションシステムのブロック図である。
【図１Ｂ】本開示の一実施形態による仮想GPIOエニュマレーションシステムのためのブロック図である。
【図２】図1Aのスレーブデバイスのための例示的なエニュマレーションデータフォーマットを示す図である。
【図３】エニュマレーションデータを引き出すための図1Aのマスタデバイスによるスレーブデバイスのクロック供給を示す図である。
【図４】図1Aのエニュマレーションシステムのためのいくつかの例示的なエラーコードを示す図である。
【図５】図1Aのマスタデバイスのためのエニュマレーションの例示的な方法のための流れ図である。
【図６】2-ワイヤインターフェースを通しての半二重エニュマレーション技法のために構成される例示的なシステムのブロック図である。
【図７Ａ】図6のシステムにおいてパルス単位で引き出される振幅変調電流パルスのタイミング図である。
【図７Ｂ】図6のシステムにおいてパルス単位で引き出されるパルス幅変調電流パルスのタイミング図である。
【図７Ｃ】図6のシステムにおいて1フレームにおいて引き出される振幅変調電流パルスのタイミング図である。
【図７Ｄ】図6のシステムにおいて1フレームにおいて引き出されるパルス幅変調電流パルスのタイミング図である。
【図７Ｅ】図6のシステムにおいて1フレームにおいて引き出されるUART様式電流パルスのタイミング図である。
【図８】図6のシステムのための例示的な半二重エニュマレーション方法のための流れ図である。
【図９】マスタ/スレーブエニュマレーション技法または半二重エニュマレーション技法のために構成される複数のデバイスを含む一例の電子システムのブロック図である。
【発明を実施するための形態】
【００１４】
本開示の実施形態およびそれらの利点は、以下の詳細な説明を参照することによって最も深く理解される。同様の参照番号が、図のうちの1つまたは複数に示される同様の要素を識別するために使用されることを理解されたい。
【００１５】
2つのエニュマレーションモードが本明細書において開示される。マスタ/スレーブ(2-ワイヤ)エニュマレーションモードは、有利にはマスタデバイスがエニュマレーションを制御するのを保証されるマスタ/スレーブアーキテクチャにおいて実施されてもよい。代替的には、半二重エニュマレーションモードは、そのスレーブの前にマスタデバイスが起動するのを保証されないピアデバイスのシステムにおいて実施されてもよい。2-ワイヤエニュマレーションモードが最初に論じられることになる。
【００１６】
2-ワイヤエニュマレーション
以下の例示的な実施形態は、2-ワイヤ仮想GPIOリンクおよびプロトコルと3-ワイヤ仮想GPIOおよびプロトコルとの間のエニュマレーションを対象とするが、本明細書において開示されるシステムおよび方法は、任意の適切なシリアルデジタルシグナリングプロトコルおよび対応するリンクアーキテクチャに広く適用可能であることを理解されよう。たとえば、ユニバーサル非同期レシーバトランスミッタ(UART)インターフェース、シリアル周辺機器インターフェース(SPI)またはインター集積回路(I2CまたはI3C)インターフェースを通して通信するように構成される集積回路はすべて、本明細書において論じられるエニュマレーション技法を実践するように構成されてもよい。
【００１７】
ここで図面を参照すると、図1Aは、例示的なマスタ/スレーブエニュマレーションシステム100を示す。マスタ集積回路(マスタデバイスA)105およびスレーブ集積回路(スレーブデバイスB)110はそれぞれ、専用送信ピン(TX)111aおよび専用受信ピン(RX)111bを含む。マスタデバイス105は、エニュマレーションプロセスを制御するように構成されるので、マスタとみなされる。したがって、スレーブデバイス110は、マスタデバイス105によって制御されるエニュマレーションプロセスに応答するように構成される。システム100のための有利なエニュマレーション機構をより深く理解してもらうために、システム100のための通常の仮想GPIO動作が最初に論じられることになる。各デバイスのTXピン111aは、他のデバイスのRXピン111bに結合する。先に論じられたように、仮想GPIO通信セッション中に、各デバイス内のGPIOインターフェース(後にさらに論じられる)が、デバイスのプロセッサ(図示せず)からGPIOデータを受信する。このGPIOデータのうちのいくつかは、その後従来のGPIOのようにしてGPIOピンを介して遠隔デバイスに転送されてもよい。しかし、GPIOデータの残りの部分は、シリアル仮想GPIOデータとして専用TXピン111aを介して送信するために仮想GPIOステートマシン(後にさらに論じられる)によってシリアライズされる。GPIOデータがGPIOピンを介して送信されるか、専用TXピン111aを介して送信されるかは、各デバイス内のプロセッサ(図示せず)から見てトランスペアレントであり、したがってシリアライズされたGPIOデータは、プロセッサにとって、GPIOデータであるという点で、「仮想」GPIOとして示される。しかし、この仮想GPIOデータは、各デバイス105および110からGPIOピンを介して送信されるのではなく、代わりに、シリアライズされ、デバイスの専用TXピン111aを介して送信される。
【００１８】
受信側デバイス内のVGIステートマシンは、仮想GPIOデータをデシリアライズし、デシリアライズされた仮想GPIOデータをそのGPIOインターフェースに提示する。GPIOインターフェースから、デシリアライズされた仮想GPIOデータは、GPIOデータとして受信側デバイスのプロセッサに提示される。仮想GPIOデータ(仮想GPIOフレーム内にカプセル化される)の送信および受信を同期させるために、各デバイス105および110は、外部クロック116を受信するためのクロックピンを含むことができる。代替的には、各デバイス105および110は、外部クロックが通信を同期させない「2-ワイヤ」VGIプロトコルのために構成されてもよい。システム100の例示的な2-ワイヤ実施形態が図1Bに示される。送信ピン111aを介してマスタデバイス105から仮想GPIO信号を送信するための送信線またはリード112aは、スレーブデバイス105において受信ピン111b上でこれらの信号を受信するための受信線でもある。同様に、仮想GPIO信号を送信するためのスレーブデバイス110のための送信線112bは、マスタデバイス105のための受信線でもある。これらの送信線および受信線は、回路基板上で、破線150によって示されるような集積回路間で引き回すことができる。各デバイス105および110内の有限ステートマシン(FSM)115が、これらの専用線およびピンを用いて仮想GPIO信号の送信および受信を制御する。
【００１９】
GPIO技術分野において既知であるように、デバイスごとのプロセッサは、GPIOインターフェース103を含み、プロセッサはこのインターフェースを通して複数のGPIOピン125とのインターフェースを有する。有利には、各プロセッサは対応するGPIOインターフェース103を用いて従来通りに動作してもよい。言い換えると、各プロセッサは、GPIOインターフェース103を通して従来通りに信号を受信および送信し、そのようなプロセッサは、GPIOインターフェース103を通して通信するためのソフトウェア変更を必要としない。各GPIOインターフェース103を通して処理された信号のある部分は、GPIO信号130として従来のGPIOピン125で送信および受信されることがある。しかし、GPIOインターフェース103を通して処理された信号の残りの部分は、従来のGPIOピン125を通して送信または受信されない。代わりに、GPIOインターフェース103を通して処理された信号のこの残りの部分は、専用TXピン(またはパッド)111aを介してFSM115からシリアルに送信され、専用受信ピン(またはパッド)111b上で受信される複数の仮想GPIO信号135を含む。従来のGPIO信号130として処理される、対応するデバイスのプロセッサからGPIOインターフェース103において受信される信号の部分は、本明細書において第1の信号のセットとして示されることがある。同様に、仮想GPIO信号135として処理される、対応するデバイスのプロセッサからGPIOインターフェース103において受信される信号の残りの部分は、本明細書において第2の信号のセットとして示されることがある。従来のGPIO信号130とは対照的に、各仮想GPIO信号135は、自らの専用ピンを有するのではなく、代わりに、ピン111aおよび111b上で残りの仮想GPIO信号135とシリアルに多重化される。これは、各プロセッサコアがそのGPIOインターフェース103の一新(retooling)を必要とせず、しかも、結果として生じる仮想GPIO通信が、各仮想GPIO信号135が自らの専用GPIOピンを必要とする従来のGPIO実施形態と比較して、著しいピン削減を達成するという点で、極めて有利である。仮想GPIO信号135がFSM115などの有限ステートマシンを使用して対応されるので、プロセッサコアは休止または他のタイプの非活動状態にあってもよく、それでも、仮想GPIO信号135を受信することができる。このようにして、仮想GPIOアーキテクチャは、仮想GPIOインターフェース103ごとのピンの数を有利に節約するだけでなく、低電力でもある。
【００２０】
本明細書において使用されるときに、「ピン」は、集積回路が回路基板または他の物理的な相互接続(たとえば、パッケージ相互接続またはスルーホールビア相互接続)上のリードに結合するために使用するパッドまたは実際のピンのような構造を包含する総称である。たとえば、各デバイス105および110が16個のGPIOピン125を有する場合には、これらのピンは、8個の対称GPIO信号130(説明を明確にするために、図1では4つの従来のGPIO信号#1〜#4だけが示されている)または16個の非対称GPIO信号130に対応するように構成することができる。したがって、対称GPIO信号130は、両方のデバイス105および110によって送信される信号である。デバイス105および110のうちの一方のみが特定のタイプのGPIO信号130を送信する場合には、結果として生じるGPIO信号130は、非対称として示される。さらに、各デバイス105および110は、その送信ピン111aおよび受信ピン111bを使用する複数のn個の仮想GPIO信号135の入出力インターフェースに対応することができ、nは任意の2以上の整数である。デバイスのプロセッサに関して、GPIO信号130と仮想GPIO信号135との間に違いはなく、両方とも単にGPIOインターフェース103を介して必要に応じて送信および受信される信号である。しかしながら、仮想GPIO信号135は、従来のGPIO信号130とは対照的に専用ピンを有していないので、仮想GPIO信号135は、ライン112aおよびライン112b上で送信するためにFSM115内でシリアライズされる。受信すると、各FSM115は、シリアライズされた受信仮想GPIO信号をデシリアライズする。したがって、各FSM115は、仮想GPIO信号135に対するシリアライザ/デシリアライザとして機能する。
【００２１】
遠隔プロセッサから送信されるような、受信された仮想GPIO信号135の存在を識別するために、各デバイスのプロセッサは、仮想GPIO信号135のうちの選択された仮想GPIO信号の変化に応答して、割込み信号を受信するように構成されてもよい。割込みを与えるために、モデムパワーマネージャ(MPM)140が、割込み(INT_configuration)レジスタ145を通してプログラミングされるような、選択された仮想GPIO信号を監視することができる。MPM140が監視された信号変化状態を確認する場合には、それに応じてそのプロセッサに割込みを送信する。さらに、各FSM115は、GPIO信号135の現在の状態を記憶する構成レジスタ107を含むことができる。
【００２２】
デバイス105と110との間の仮想GPIO信号135のシリアル送信は、UARTインターフェース内のデータ送信に類似のオーバーサンプリングクロックのサンプルに応答して実行されてもよい。代替的には、仮想GPIO信号135のための各ビットは、対応する送信ピン111aを介して対応するパルス幅変調パルスとして送信されてもよい。たとえば、ビット周期の25%のパルス幅を用いてバイナリ0を表すことがあるのに対して、ビット周期の75%のパルス幅を用いてバイナリ1を表すことがある。より一般的には、送信されるパルスは、対応する仮想GPIO信号135ビットのためのバイナリ値に応じて、第1のパルス幅または第2のパルス幅のいずれかを有することがある。このパルス送信は、デバイス100と105との間の非同期送信(共通クロックなし)を可能にするという点で極めて有利である。たとえば、FSM115は、リング発振器のような適切なクロックのサイクルに応答して各送信パルスをパルス幅変調することができる。パルス幅変調に関するさらなる詳細は、2014年11月13日に出願された同じ譲受人に譲渡された米国特許出願第14/540,366号において論じられており、その内容は参照により本明細書に援用される。送信線112aは、送信ピン111aが受信ピン111bとして順次に使用されるように、デバイス105および110によって多重化されてもよいことに留意されたい。したがって、結果として生じるVGIインターフェース(図示せず)は、VGI信号135の受信セットおよび送信セットの両方に対して1つの線しか必要としないという点で、「1-ワイヤ」VGIインターフェースとして動作することになる。
【００２３】
VGI信号135のシリアル通信のために、システム100が、1-ワイヤVGIシステムとして構成されるか、2-ワイヤVGIシステムとして構成されるか、3-ワイヤVGIシステムとして構成されるかにかかわらず、従来のGPIO信号130と、VGI信号135との間の違いに留意されたい。詳細には、従来のGPIO信号130は、従来のGPIOピン125のうちの対応するGPIOピン上での受信を通して識別される。対照的に、FSM115は、VGIフレーム内のVGI信号135をそのフレーム内のその位置を通して識別する。たとえば、VGIフレームのためのペイロードサイズが、第1のビットから最終ビットまで8ビットで配列される場合には、VGIフレームペイロード内に8つの異なるビット位置が存在することになる。したがって、送信側および受信側FSM115はいずれも、どのビット位置がどのVGI信号に対応するかに関する情報を設定される場合がある。異なるFSM115は、起動時に異なるサイズのVGIフレームを使用するように構成されてもよい。したがって、VGIフレームサイズは、マスタデバイス105およびスレーブデバイス110が適切なサイズのVGIフレームを用いて通信してもよいように、起動時にエニュマレーションされてもよいパラメータである。
【００２４】
システム100の起動時にエニュマレーションされてもよい他のパラメータがある。エニュマレーション前に、マスタデバイス105は、スレーブデバイス110が、1-ワイヤ仮想GPIOデバイスであるか、2-ワイヤ仮想GPIOデバイスであるか、3-ワイヤ仮想GPIOデバイスであるかを知らない場合がある。開示されるエニュマレーションは、パワーオンリセット信号または他の適切な信号によってトリガされることなどによって、この問題を解決する。エニュマレーションモードをトリガすると、マスタデバイス105は、そのTXピン111aにクロックまたはパルスを供給する。そのRXピン111b上で受信されたパルスは、受信されたパルスに応答してそのエニュマレーションデータをシフトアウトするようにスレーブデバイス110をトリガする。たとえば、そのRXピン上で受信した各パルスに応答して、スレーブデバイスのTXピン上に、エニュマレーションデータの1ビットがシフトアウトされてもよい。各FSM115は、このエニュマレーションを実行するように構成されてもよい。したがって、各FSM115は、エニュマレーションステートマシンとして機能するように構成される。代替的には、エニュマレーションは、各デバイスのプロセッサ上のソフトウェアを通して実施されてもよい。ソフトウェア制御エニュマレーション実施形態において、マスタデバイス105は、ビットバンクロック信号(図示せず)を用いてその送信ピン111aをストローブする。マスタデバイス105によって使用されるクロックの性質にかかわらず、スレーブデバイス110によって結果として行われるエニュマレーションデータフェッチは、クロックの単一のエッジに応答するか、または両方のエッジに応答するものであってもよい。
【００２５】
スレーブデバイス110において記憶されるエニュマレーションデータのフォーマットは、図2に示されるようであってもよい。フィールド205は、デバイスベンダのための識別番号のために予約される。フィールド210は、スレーブデバイス110のための識別番号のために予約される。フィールド215は、スレーブデバイス110のためのエラー軽減を識別する。フィールド215のための例示的な値は、CRC、パケット再送、フルフレームエコー、またはエラー軽減なしのいずれが使用されるかを識別してもよい。さらに、フィールド215のための特定の値は、将来の使用のための予約(RFU)が行われてもよい。別のフィールド220は、フロー制御のタイプを識別する。たとえば、ハードウェア(HW)フロー制御、ソフトウェアフロー制御(SW)、またはフロー制御なしが存在する場合がある。
【００２６】
仮想GPIO(VGI)入力および出力フレーム長は、バイナリ重み値としてそれぞれフィールド225および230を通して識別されることがある。フィールド235は、VGIフレームのためのメッセージ長をバイナリ重み値として識別する。フィールド240は、通信プロトコル(たとえば、VGI、UART、SPI、I2Cなど)を識別してもよい。同様に、別のフィールド245は、VGIプロトコルのための物理リンクのタイプを識別する。たとえば、それは、3-ワイヤリンク、または2-ワイヤリンクの種々のバージョンとすることができる。最後に、フィールド250は、マスタデバイス105によるカウントクロスチェックのために、スレーブデバイス110によってカウントされたパルスの数を表す。エニュマレーションデータのために使用される個々のフィールドは、スレーブデバイス110によって使用される特定のシグナリングプロトコルおよび関連する物理リンクに応じて異なることを理解されよう。
【００２７】
スレーブデバイス110は、エニュマレーションデータが規定されたエニュマレーションデータシーケンスを有するように、図3に示されるようにレジスタリンクリストアレイ300内にエニュマレーションデータを記憶してもよい。パワーオンリセット(POR)信号のアサート動作に応答して、マスタデバイス105は、クロック源320からのクロック信号305を用いてその送信ピン111aにクロックを供給する。スレーブデバイス110は、クロック信号305をその受信ピン111b上で受信する。クロック信号305の単一のエッジに応答して(または両方のエッジに応答して)、スレーブデバイス110は、レジスタリンクリストアレイ300の内容をシフトアウトする。スレーブデバイス110は、クロック信号305の各トリガ用クロックエッジに応答して、レジスタリンクリストアレイ300の内容の1ビットをシフトアウトすることができる。その関連で、エニュマレーションデータは、ベンダフィールド205の第1のビットからクロックカウントフィールド250の最終ビットまでエニュマレーションデータシーケンス内に配列されるとみなされてもよい。クロックカウントフィールド250を例示すると、スレーブデバイス110は、クロックカウンタ310を含む。カウンタ310は、クロックカウント(エニュマレーション終了)フィールド250の中に書き込まれるクロックカウントを生成するために、物理リンクフィールド245の最後のビットがシフトアウトされるまで、クロック信号305の各トリガ用エッジをカウントする。したがって、クロックサイクルの最終周は、クロックカウントをマスタデバイス105にシフトアウトするように機能する。
【００２８】
再び図1Aを参照すると、マスタデバイス105は、その後スレーブデバイス110からフェッチされたエニュマレーションデータをエニュマレーションデータメモリ120に書き込むことができる。マスタデバイス105がスレーブデバイス110とのエニュマレーションされたシリアルプロトコルに従って通常動作を再開してもよいように、記憶されたエニュマレーションデータは、その後登録されたデバイスプロファイルデータベース126からのプロファイルデータと組み合わせられてもよい。たとえば、エニュマレーションデータは、スレーブデバイス110が3-ワイヤVGIデバイスであることをマスタデバイス105に知らせてもよい。マスタデバイス105は、その後3-ワイヤVGIプロトコルを用いてスレーブデバイス110と通信し始めてもよい。代替的には、エニュマレーションデータが、スレーブデバイス110を2-ワイヤVGIデバイスと識別する場合には、マスタデバイス105は、2-ワイヤVGIプロトコルを用いてスレーブデバイス110と通信することになる。データベース126からのプロファイルデータは、たとえば、VGIインターフェースを通して交換されることになるGPIOデータのタイプを識別することがある。デバイス105および110ごとの専用TXピン111aおよびRXピン111bは、したがって2つの動作モードを有する。エニュマレーションモードにおいて、これらのピンは、先に論じられたように、エニュマレーションデータを引き出すために使用される。通常動作モードにおいて、これらのピンは、エニュマレーションデータがエニュマレーションしたあらゆる通信リンクの一部として機能する。
【００２９】
エニュマレーションデータを引き出すと、マスタデバイス105は、引き続き任意のエラーを識別してもよい。たとえば、返送されたカウントが正しくない場合には、マスタデバイス105は、図4に示されるように、スレーブデバイス110が無応答であることを識別するエラーコード400を記録することがある。エニュマレーションフィールドミスマッチ405、不明ベンダIDエラー410、不明デバイスIDエラー415、エラー軽減タイプ非サポートエラー420、フロー制御方法非サポートエラー425、エニュマレーションI/O長非サポートエラー430、エニュマレーションメッセージ長非サポートエラー435、プロトコルタイプ非サポートエラー440、および物理リンクタイプ非サポートエラー445のような、数多くのそのようなエラーコードが生成される場合がある。
【００３０】
エニュマレーション前に、マスタデバイス105およびスレーブデバイス110は、異なるパワードメインにある場合がある。いくつかの実施形態では、マスタデバイス105は、したがってスレーブデバイス110のための電源電圧を受信するためのピンを含む。エニュマレーションモードの開始時に、マスタデバイス105は、したがってスレーブデバイス110が異なるパワードメインにあるか否かを判断してもよい。同様に、スレーブデバイス110も、エニュマレーションモードの開始時に、マスタデバイス105が異なるパワードメインにあるか否かがわかるように、スレーブデバイス110は、マスタデバイス105のための電源電圧を受信するためのピンを含んでもよい。デバイス105および110ごとのパワードメインの通信は、図3において、破線330によって表される。パワードメインが異なる場合には、エニュマレーションデータを引き出すためのクロック供給を電流モードクロックパルスを用いて実行してもよい。代替的には、パワードメインが同じである場合には、クロック供給は、電圧モードクロックパルスを用いて実行されてもよい。その後スレーブデバイス110の結果として生じるエニュマレーションが、通常動作モードが、専用受信および送信ピンを含む通信リンクを介して電圧モードシグナリングを使用するか、電流モードシグナリングを使用するかを判断してもよい。
【００３１】
ここで、マスタ/スレーブシステム100のための例示的なエニュマレーション方法が、図5の流れ図に関して論じられることになる。本方法は、送信ピンおよび受信ピンを有するインターフェースを含むマスタデバイスのために、先頭パルスを送信ピンを介して送信することによって、エニュマレーションデータを記憶しているスレーブデバイスのエニュマレーションを開始する動作500を含み、エニュマレーションデータは、第1のビットから最終ビットまでエニュマレーションデータシーケンスに従って配列される。図3に関して論じられたクロック信号305の先頭サイクルの送信が動作500の一例である。図3に示されるように、エニュマレーションデータは、レジスタリンクリストアレイ300内の連結によって規定されるエニュマレーションデータシーケンスに従って配列される。図3に関して、エニュマレーションデータシーケンス内の第1のビットは、ベンダIDフィールド205の先頭ビットである。エニュマレーションデータシーケンス内の最後のビットは、クロックカウント(エニュマレーション終了)フィールド250の最終ビットである。そのようなエニュマレーションデータシーケンスは典型にすぎず、代替の実施形態では変更される場合があることを理解されよう。
【００３２】
本方法はさらに、先頭パルスの送信に応答して、受信ピンを介してスレーブデバイスからエニュマレーションデータの少なくとも第1のビットを受信する動作505を含む。単一エッジ実施形態において、最初のパルスによって、第1のビットのみがトリガされることになる。逆に、二重エッジ実施形態では、第1のビットおよび第2のビットがトリガされることになる。
【００３３】
さらに、本方法は、エニュマレーションデータシーケンスに従って、受信ピンを介してエニュマレーションデータの残りの部分を順次に受信するために、送信ピンを通してスレーブデバイスに付加的なパルスを送信する動作510を含む。先に言及されたように、図3に示されるクロック信号305のパルスは、電圧モードクロックパルスまたは電流モードクロックパルスとすることができる。
【００３４】
最後に、本方法は、マスタデバイスにおいてすべてのエニュマレーションデータを受信した後に、エニュマレーションデータに応答して構成されるシリアル通信プロトコルに従って、マスタデバイスがスレーブデバイスと通信する通常動作モードを開始する動作515を含む。動作515の一例が、動作500〜510を通してエニュマレーションされるような2-ワイヤVGIインターフェースのための通常動作であろう。先に論じられたことはデバイス間エニュマレーションを対象としていたが、本明細書において開示される概念および技法は、マルチポイントツーポイントエニュマレーションに容易に拡張されることを理解されよう。ここで、半二重エニュマレーション技法が論じられることになる。
【００３５】
半二重エニュマレーション
論じられたばかりの2-ワイヤエニュマレーション技法は、たとえば、最初に起動することが保証され、したがってマスタデバイスの役割を果たすことが確実であるSOCが存在するスマートフォンのようなシステムに広く適用することができるが、マスタデバイスと同時にスレーブデバイスも起動する場合があることも起こり得る。その際、スレーブデバイスは、別のマスタデバイスの役割を担う場合があり、エニュマレーションデータを受信するためにマスタデバイスにクロックを供給し始める場合がある。しかしながら、両方のデバイスが、エニュマレーションデータの代わりに、クロックを受信することになるように、その時点で、マスタデバイスもスレーブデバイスにクロックを供給している場合がある。したがってエニュマレーションは失敗し、両方のデバイスがエニュマレーションを再試行する場合がある。デバイスは非同期であるので、両方のデバイスが再び衝突し、互いに同時にクロックを供給する可能性は低い。しかしながら、別の衝突が生じ、その後また別の衝突が生じるなどの事態が生じる場合がある。スマートフォンは、緊急通話の場合のようなサービスを保証しなければならないことに留意されたい。そのように衝突が繰り返される可能性は極めて低いが、以下の半二重エニュマレーションモードは、そのような衝突が生じないことを保証する。より一般的には、半二重エニュマレーション技法は、最初にパワーオンし、したがってマスタデバイスの役割を担うことが確実であるデバイスを有するという意味におけるマスタデバイスが保証されないシステムにおいて実施されてもよい。マスタデバイスが保証されないので、対応するシステムは、本明細書において、ピアデバイスのシステムを構成するとみなされる。先に論じられたマスタデバイスおよびスレーブデバイスと同様に、各ピアデバイスは2-ワイヤインターフェースを含む。3-ワイヤVGIインターフェースの場合のように、外部クロックを受信するための第3の線が含まれる場合もある。
【００３６】
各ピアデバイスがマスタデバイスとしての役割を果たし、2-ワイヤエニュマレーション技法に関して先に論じられたように、そのピアにクロックを供給しようと試みる場合には、競合条件の結果としてピアデバイスがその送信ピンを介してクロックを送信するが、その際、遠隔ピアデバイスもマスタデバイスの役割を担っている場合には、その受信ピン上で別のクロックを受信するということが起こり得る。送信ピンおよび受信ピンがいずれもそのクロック供給が理由でデータ送信のために利用できないという点で、そのような同時クロック供給中にエニュマレーションデータを引き出すことはできない。そのような同時クロック供給は、以下の半二重エニュマレーション技法では、生じる可能性はない。半二重エニュマレーションシステムでは、各デバイスが、起動時にその送信ピンを電源電圧にアサートするように構成される。第1のピアデバイスによる送信ピン電圧のこのアサート動作は、第1のピアデバイスが起動されたことを第2のピアデバイスに知らせる。したがって送信ピン電圧のアサート動作は、UARTシステムにおける送信要求(RTS)アサート動作に類似である。第1の起動されたピアデバイスによる送信ピン電圧のアサート動作は、受信ピンが第1のピアの送信ピンに結合される第2のピアデバイスの受信ピンにおいて受信される。したがって第2のピアデバイスは、第1のピアデバイスがエニュマレーションされる準備ができたことを通知される。エニュマレーションを開始するために、開始側のピアデバイスは、その送信ピンを通して開始電流モードパルスまたは電圧モードパルスを送出する。このパルスは、エニュマレーションされるピアデバイスによって、その受信ピンにおいて受信される。その際、エニュマレーションされるデバイスは、残りのピアへのエニュマレーションデータの送信を開始するために、その受信ピンを通して1つまたは複数の電流モードパルスまたは電圧モードパルスを送信することによって、受信したパルスに応答する。したがって、エニュマレーションデータ送信は、2つのデバイスが単一のリンクまたはワイヤを共有しているという点で半二重である。送信は、送信パルスに応答するたびに、エニュマレーションされるデバイスから戻される単一のパルスを開始側デバイスが受信するように、パルス単位であってもよい。代替的には、エニュマレーションされるデバイスは、パルスのフレームをその受信ピンを介して開始側デバイスの送信ピンに送信することによって、開始側デバイスによって送信されたパルスに応答してもよい。
【００３７】
ピアデバイスに関して、その出力パルスのための電圧振幅に関して保証することができないという事態が生じる場合がある。たとえば、1つのピアデバイスが、第1の電源電圧を用いてエニュマレーション中に応答する場合があるのに対して、別のデバイスは、第1の電源電圧とは異なる第2の電源電圧に従って応答する。そのエニュマレーションパルスシグナリングに関する電圧振幅の相違があるとすると、相対的に高い電源電圧を有する受信側ピアデバイスは、相対的に低い電源電圧を用いる送信側ピアデバイスからのバイナリ1パルスを、代わりにバイナリ0パルス(グラウンド)に相当すると誤る可能性がある。そのようなバイナリ復号誤りを防ぐために、シグナリングが電流パルスを含む電流モード半二重エニュマレーション実施形態が提供される。代替的には、代替の半二重エニュマレーション実施形態において電圧モードパルスを送信することができるように、ピアデバイスがすべて、同じ電源電圧を用いてシグナリングすることを保証される事態が生じる場合がある。以下の半二重実施形態は電流モード実施形態であるが、上で述べられたように、本開示によれば、対応する電圧モードシグナリング実施形態が実施されてもよいことを理解されよう。
【００３８】
電流モードピアデバイス605および610の例示的なシステム600が図6に示される。各ピアデバイス605および610は、図1Aに関して先に論じられたようなTXピンおよびRXピンを備える2-ワイヤインターフェースを含む。しかしながら、"TX"および"RX"という記号表示は、エニュマレーション後の通常動作モード中に意味を有するにすぎない。エニュマレーション中に、各RXピンおよびTXピンは双方向である。各ピアデバイス605および610は、パワーオンされるのに応答して、そのTXピン上に電圧をアサートするように構成される。たとえば、ピアデバイス610が、ピアデバイス605の直後にパワーオンしたと仮定する。ピアデバイス605は、そのRXピン上に結果として生じたアサートされた電圧を通してピアデバイス610がエニュマレーションされる準備ができたことを検出する。エニュマレーションを制御するために、各ピアデバイス605および610は、エニュマレーションステートマシン615を含んでもよい。代替的には、エニュマレーションステートマシン615の機能は、デバイスのプロセッサ(図示せず)上のファームウェアにおいて実施されてもよい。ピアデバイス610がパワーオンされたことを検出するのに応答して、ピアデバイス605内のエニュマレーションステートマシン615は、電流源620に、第1の開始電流パルスをそのTXピンを通してデバイス610に送出するように指示する。ピアデバイス610内のエニュマレーションステートマシン615は、電流パルスを検出し、エニュマレーションデータをピアデバイス605に送信するために、自らの電流源625を用いてそのRXピンを通して1つまたは複数の電流パルスで応答する。同様に、ピアデバイス610は、ピアデバイス605が、パワーオンされるのに応答して、そのTXピンを電源電圧にアサートしたことを検出してもよい。ピアデバイス610は、その際、電流源630に、電流パルスをそのTXピンを通してピアデバイス605に送出するように指示してもよく、ピアデバイス605は、ピアデバイス610にエニュマレーションデータを送信するために、電流源635を用いて1つまたは複数の電流パルスで応答する。再び図1Bを参照すると、デバイス105および110はピアデバイスとして構成されてもよい。そのような実施形態では、各FSM115は、エニュマレーションステートマシン615としても機能するように構成されることになる。
【００３９】
一実施形態において、エニュマレーションデータは、したがって開始側デバイスが、エニュマレーションされたデバイスからの各リターンパルスを取得するために個別のパルスを送信しなければならないように、パルス単位でフェッチされてもよい。そのようなパルス単位のフェッチ動作の一例が図7Aに示される。開始側ピアデバイス(デバイスAと表される(Dev-A))は、開始電流パルス700をそのTXピンを介してエニュマレーションされるピアデバイスのRXピンに送信する。それに応答して、エニュマレーションされるピアデバイス(Dev-B)は、電流パルス705として1ビットのエニュマレーションデータをそのRXピンを介して開始側デバイスのTXピンに送信する。パルス間の時間多重化分離を与えるために、各パルスは、たとえば、パルス周期の25%だけ、隣接するパルスから分離されてもよい。より一般的には、各パルス周期T間の分離は、デルタTによって表される。ただし、デルタはパルス周期Tのあるパーセンテージである。開始側デバイスは、電流パルス705を受信し、その振幅に基づいてそのパルスを復号する。バイナリモード(2振幅レベル)では、第1のバイナリ値は、電流パルス705における20mAのような第1の電流振幅によって表される場合があるのに対して、相補的な第2のバイナリ値は、後続の電流パルス710における4mAのような第2の電流振幅によって表される場合がある。したがって、各電流パルスは、第1の電流レベルAまたは第2の電流レベルBを有する場合がある。各ピアデバイスは、パルス幅と、パルス間の遅延とを決定するためのローカルカウンタを含んでもよい。結果として生じるフィールドおよび引き出されたエニュマレーションデータのためのエニュマレーションデータシーケンスの例は、図2および図3に関して論じられたようであってもよい。エニュマレーションは単一のワイヤを介して半二重のように実行されるので、競合条件が生じる可能性はない。実際には、各デバイスは、図6に関して先に論じられたように、その送信ピンを通して対応するデバイスを独立してエニュマレーションすることができる。
【００４０】
振幅変調に対する代替形態として、引き出されるパルスは、図7Bに示されるようにパルス幅変調されてもよい。開始パルス700は、ピアデバイスA(Dev-A)から、図7Aに関して論じられたように送信される。振幅変調は使用されていないので、パルス700のような各パルスは、同じ電流レベル(レベルA)を有する。しかしながら、エニュマレーションされるピアデバイス(Dev-B)は、第1のパルス幅を有する第1のパルス715、またはより狭いパルス幅を有する第2のパルス720のいずれかを用いてパルス単位で応答してもよい。たとえば、4つの異なるパルス幅を有する、より高次の変調が使用される場合があることを理解されよう。
【００４１】
パルス単位で応答するのではなく、エニュマレーションされるピアデバイスは、図7Cに示されるように、振幅変調されたパルスのフレーム721を用いて各開始パルス700に応答してもよい。代替的には、エニュマレーションされるピアデバイスは、図7Dに示されるように、パルス幅変調されたパルスのフレーム725を用いて各開始パルス700に応答してもよい。UART実施形態では、開始パルス(フェッチトリガ)に応答して、図7Eに示されるように、UARTプロトコルに従うエニュマレーションされるデバイスによって、フレーム730が生成される場合がある。UARTプロトコルによれば、フレーム730はスタートビットおよびストップビットを含む。各デバイスは、フレームをサンプリングするためのオーバーサンプリングクロックを含んでもよい。たとえば、16Xオーバーサンプリングクロックレートが使用される場合には、フレーム730中の各ビットは、16サンプルによって表されることになる。バイナリ0を送信するために、エニュマレーションされるデバイスは単に、オーバーサンプリングクロックの16サンプルにわたってそのRXピンにパルスを送出しない。逆に、エニュマレーションされるデバイスは、バイナリ1を送信するために、オーバーサンプリングクロックの16サンプルにわたってそのRXピンにパルスを送出することになる。UART実施形態において、他のオーバーサンプリングクロックレートが使用される場合があることを理解されよう。さらに、図7A〜図7Eの電流パルスは、代替の実施形態において、電圧パルスで置き換えられてもよい。図7A〜図7Eにおいて、マスタデバイス605は、「デバイスA」(略してDev-A)と表される。同様に、スレーブデバイス610は、「デバイスB」(略してDev-B)と表される。
【００４２】
ここで、半二重エニュマレーションシステムのための動作方法が、図8の流れ図に関して論じられることになる。本方法は、送信ピンおよび受信ピンを含む第1のピアデバイスのために、第1の開始パルスを送信ピンを通して送出することによって、第2のピアデバイスのエニュマレーションを開始する動作800を含む。図7A〜図7Eにおける第1の開始パルス700の送信が、動作800の一例である。
【００４３】
本方法は、第1の開始パルスに応答して、少なくとも1つの受信パルスを送信ピンを介して第2のピアデバイスから受信する動作805も含み、受信パルスはエニュマレーションデータの少なくとも第1のビットを表すように変調され、エニュマレーションデータは、少なくとも第1のビットから最終ビットまでエニュマレーションデータシーケンスに従って配列される。図7Aにおける第1のパルス705または図7Bにおける第1のパルス715の送信が、動作805の一例である。
【００４４】
同様に、本方法は、第2のピアデバイスからのエニュマレーションデータの残りの部分が、送信ピンを通して付加的な受信パルスとしてエニュマレーションデータシーケンスに従って受信されるまで、付加的な開始パルスを送信ピンを通して第2のピアデバイスに送信する動作810を含む。図7Aに関して論じられた、付加的なパルス700の送信および対応するパルス705および710の受信が動作810の一例である。
【００４５】
最後に、本方法は、すべてのエニュマレーションデータの受信後に、エニュマレーションデータに応答して構成される通常動作モードを開始する動作815を含み、通常動作モードでは、第2のピアデバイスにデータを送信するために送信ピンが使用され、第2のピアデバイスからデータを受信するために受信ピンが使用される。適切な2-ワイヤまたは3-ワイヤVGIプロトコルに従って通常通りに動作し続ける図1BのFSM115のようなVGI FSMが動作815の一例である。ここで、マスタ/スレーブまたは半二重エニュマレーション技法のいずれかのために構成される例示的な電子システムが論じられることになる。
【００４６】
例示的なシステム900が図9に示されており、システムオンチップ(SOC)905が、複数の周辺デバイス910と通信するために、先に論じられたFSM115のようなエニュマレーションステートマシン(図示せず)で構成される。したがって、各周辺デバイス910も、対応するエニュマレーションステートマシンを含む。例示を明確にするために、SOC905と各周辺デバイス910との間の対応する2-ワイヤリンクも図示されないが、システムバス915内に収容される。システム900内に3つの周辺デバイス910が存在するので、システムバス915は、3つの2-ワイヤリンクを含むことになる。システム900は、セルラーフォン、スマートフォン、携帯情報端末、タブレットコンピュータ、ラップトップコンピュータ、デジタルカメラ、ハンドヘルドゲーミングデバイス、または他の適切なデバイスを含んでもよい。周辺デバイス910と通信することに加えて、SOC905は、また、システムバス915を通してDRAMのようなメモリ920、およびディスプレイコントローラ925と通信する。ディスプレイコントローラ925は、ディスプレイ935を駆動するビデオプロセッサ930に結合する。
【００４７】
当業者は現時点で理解されるように、目下の特定の応用例に応じて、本開示のデバイスの材料、装置、構成および使用方法において、また、それらに対して、多くの修正、代替、および変形をその範囲から逸脱することなく行うことができる。これを踏まえて、本明細書において図示および説明される特定の実施形態は、本開示のいくつかの例にすぎないので、本開示の範囲はそれらの特定の実施形態の範囲に限定されるべきではなく、むしろ、下記に添付されている特許請求の範囲およびそれらの機能的な均等物の範囲と完全に同等であるべきである。
【符号の説明】
【００４８】
100  マスタ/スレーブエニュマレーションシステム
103  GPIOインターフェース
105  マスタ集積回路(マスタデバイスA)
107  構成レジスタ
110  スレーブ集積回路(スレーブデバイスB)
111a  専用送信ピン(TX)
111b  専用受信ピン(RX)
112a  送信線またはリード
112b  送信線
115  有限ステートマシン(FSM)
116  外部クロック
120  エニュマレーションデータメモリ
125  GPIOピン
126  登録されたデバイスプロファイルデータベース
130  GPIO信号
135  仮想GPIO信号
140  モデムパワーマネージャ(MPM)
145  割込み(INT_configuration)レジスタ
150  破線
205  フィールド
210  フィールド
215  フィールド
220  フィールド
225  フィールド
230  フィールド
235  フィールド
240  フィールド
245  フィールド
250  フィールド
300  レジスタリンクリストアレイ
305  クロック信号
310  カウンタ
320  クロック源
330  破線
400  エラーコード
405  エラーコード
410  エラーコード
415  エラーコード
420  エラーコード
425  エラーコード
430  エラーコード
435  エラーコード
440  エラーコード
445  エラーコード
600  システム
605  電流モードピアデバイス、マスタデバイス
610  電流モードピアデバイス、スレーブデバイス
615  エニュマレーションステートマシン
620  電流源
625  電流源
630  電流源
635  電流源
700  パルス
705  パルス
710  パルス
715  パルス
720  パルス
721  フレーム
725  フレーム
730  フレーム
900  システム
905  システムオンチップ(SOC)
910  周辺デバイス
915  システムバス
920  メモリ
925  ディスプレイコントローラ
930  ビデオプロセッサ
935  ディスプレイ
【図１Ａ】
2018504714.tif 000003
【図１Ｂ】
2018504714.tif 000004
【図２】
2018504714.tif 000005
【図３】
2018504714.tif 000006
【図４】
2018504714.tif 000007
【図５】
2018504714.tif 000008
【図６】
2018504714.tif 000009
【図７Ａ】
2018504714.tif 000010
【図７Ｂ】
2018504714.tif 000011
【図７Ｃ】
2018504714.tif 000012
【図７Ｄ】
2018504714.tif 000013
【図７Ｅ】
2018504714.tif 000014
【図８】
2018504714.tif 000015
【図９】
2018504714.tif 000016
【手続補正書】
【提出日】平成29年8月7日(2017.8.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
送信ピンおよび受信ピンを有する2-ワイヤインターフェースを含む第1のデバイスのためのエニュマレーション方法であって、
第1の開始パルスを前記第1のデバイスの前記送信ピンを通して送出することによって、第2のデバイスのエニュマレーションを開始するステップと、
前記第1の開始パルスに応答して、前記第1のデバイスの前記送信ピンにおいて、前記第2のデバイスから少なくとも1つの受信パルスを受信するステップであって、前記少なくとも1つの受信パルスはエニュマレーションデータの少なくとも第1のビットを表すように変調され、前記エニュマレーションデータは、前記少なくとも第1のビットから最終ビットまでエニュマレーションデータシーケンスに従って配列される、受信するステップと、
前記第2のデバイスからの前記エニュマレーションデータの残りの部分が前記送信ピンを通して付加的な受信パルスとして前記エニュマレーションデータシーケンスに従って受信されるまで、付加的な開始パルスを前記送信ピンを通して前記第2のデバイスに送信するステップと、
すべての前記エニュマレーションデータの受信後に、前記第1のデバイスによって受信された前記エニュマレーションデータに応答して構成される通常動作モードを開始するステップであって、前記通常動作モードにおいて、前記第2のデバイスにデータを送信するために前記第1のデバイスの前記送信ピンが使用され、かつ前記第2のデバイスからデータを受信するために前記第1のデバイスの前記受信ピンが使用される、開始するステップと
を含む、エニュマレーション方法。
【請求項２】
前記少なくとも1つの受信パルスおよび前記付加的な受信パルスは、パルス幅変調されたパルスである、請求項1に記載のエニュマレーション方法。
【請求項３】
前記少なくとも1つの受信パルスおよび前記付加的な受信パルスは、振幅変調されたパルスを含む、請求項1に記載のエニュマレーション方法。
【請求項４】
前記第1の開始パルスおよび前記付加的な開始パルスは電流パルスを含む、請求項1に記載のエニュマレーション方法。
【請求項５】
前記第1の開始パルスおよび前記付加的な開始パルスは電圧パルスを含む、請求項1に記載のエニュマレーション方法。
【請求項６】
前記エニュマレーションデータから前記第2のデバイスのための仮想GPIOフレームサイズを決定するステップをさらに含む、請求項1に記載のエニュマレーション方法。
【請求項７】
前記第1のデバイス内の汎用入出力(GPIO)インターフェースにおいて、プロセッサから第1の信号のセットを受信し、前記プロセッサから第2のGPIO信号のセットを受信するステップと、
前記GPIOインターフェースから、前記第2のGPIOのセット信号を対応するGPIOピンを通して前記第2のデバイスに送信するステップと、
前記GPIOインターフェースから、有限ステートマシン(FSM)に前記第2のGPIO信号のセットを並列に与えるステップであって、前記第2のGPIOのセット信号のためのサイズは、前記決定された仮想GPIOフレームサイズに等しい、与えるステップと
をさらに含む、請求項6に記載のエニュマレーション方法。
【請求項８】
前記第2のGPIOのセット信号を仮想GPIO信号として前記送信ピンを介して前記第2のデバイスにシリアルに送信するステップをさらに含む、請求項7に記載のエニュマレーション方法。
【請求項９】
前記エニュマレーションデータから前記第2のデバイスに関する仮想GPIOインターフェースのためのワイヤ数を決定するステップをさらに含む、請求項1に記載のエニュマレーション方法。
【請求項１０】
前記エニュマレーションデータが完了したか否かを判断するために、前記エニュマレーションデータ内のカウントを記憶された値と比較するステップをさらに含む、請求項1に記載のエニュマレーション方法。
【請求項１１】
前記決定されたワイヤ数は2である、請求項9に記載のエニュマレーション方法。
【請求項１２】
前記通常動作中にパルス幅変調された仮想GPIO信号を前記送信ピンを介して前記第2のデバイスに送信するステップをさらに含む、請求項11に記載のエニュマレーション方法。
【請求項１３】
前記決定されたワイヤ数は3であり、前記方法は、
前記仮想GPIOインターフェースのための第3の線上で外部クロックを受信するステップと、
前記通常動作中に前記受信した外部クロックに応答して、前記送信ピンを介しての前記第2のデバイスへの仮想GPIO信号のシリアル送信を同期させるステップと
をさらに含む、請求項9に記載のエニュマレーション方法。
【請求項１４】
送信ピンと、
受信ピンと、
電流源と、
一連の開始パルスを前記送信ピンを介して遠隔デバイスに送信することによって、前記遠隔デバイスのエニュマレーションを開始するように構成されるエニュマレーションステートマシンであって、前記遠隔デバイスのためのエニュマレーションデータを決定するために、前記送信ピンにおいて前記遠隔デバイスから受信された一連のパルスを復調するようにさらに構成される、エニュマレーションステートマシンと
を備える、集積回路。
【請求項１５】
前記エニュマレーションデータに従って構成される仮想GPIOフレームサイズを用いて通常動作モードにおいて仮想GPIOデータを前記送信ピンを介して前記遠隔デバイスに送信するように構成され、かつ仮想GPIOデータを前記受信ピンを介して前記遠隔デバイスから受信するように構成される仮想GPIOインターフェースをさらに備える、請求項14に記載の集積回路。
【請求項１６】
前記エニュマレーションステートマシンは、前記仮想GPIOインターフェース内の有限ステートマシンを含む、請求項15に記載の集積回路。
【請求項１７】
前記エニュマレーションステートマシンは、パルス幅復調に従って前記遠隔デバイスからの前記一連のパルスを復調するようにさらに構成される、請求項14に記載の集積回路。
【請求項１８】
前記エニュマレーションステートマシンは、振幅復調に従って前記遠隔デバイスからの前記一連のパルスを復調するようにさらに構成される、請求項14に記載の集積回路。
【請求項１９】
送信ピンおよび受信ピンを有するマスタデバイスのために、先頭パルスを前記送信ピンを通して送信することによって、スレーブデバイスのエニュマレーションを開始するステップであって、前記エニュマレーションデータは第1のビットから最終ビットまでエニュマレーションデータシーケンスに従って配列される、開始するステップと、
前記先頭パルスの前記送信に応答して、前記エニュマレーションデータの少なくとも第1のビットを前記受信ピンを介して前記スレーブデバイスから受信するステップと、
前記エニュマレーションデータシーケンスに従って前記エニュマレーションデータの残りの部分を順次に受信するために、付加的なパルスを前記送信ピンを通して前記スレーブデバイスに送信するステップと、
前記マスタデバイスにおいて前記エニュマレーションデータをすべて受信した後に、前記エニュマレーションデータに応答して構成されるシリアル通信プロトコルに従って前記マスタデバイスが前記スレーブデバイスと通信する通常動作モードを開始するステップと
を含む、エニュマレーション方法。
【請求項２０】
前記スレーブデバイスの前記エニュマレーションを開始するステップが、パワーオンリセット信号のアサート動作に応答する、請求項19に記載のエニュマレーション方法。
【請求項２１】
前記先頭パルスおよび前記付加的なパルスを送信するステップが、前記送信ピンを通してビットバンクロック信号のサイクルを送信するステップを含む、請求項19に記載のエニュマレーション方法。
【請求項２２】
前記シリアル通信プロトコルが仮想GPIO通信プロトコルであり、前記エニュマレーション方法は、前記スレーブデバイスのための仮想GPIOフレームサイズを決定するために前記エニュマレーションデータを使用するステップをさらに含む、請求項19に記載のエニュマレーション方法。
【請求項２３】
前記シリアル通信プロトコルは仮想GPIO通信プロトコルであり、前記エニュマレーション方法は、前記スレーブデバイスのための仮想GPIOインターフェースのためのワイヤ数を決定するために前記エニュマレーションデータを使用するステップをさらに含む、請求項19に記載のエニュマレーション方法。
【請求項２４】
前記通常動作モードを開始するステップは、
前記マスタデバイス内の汎用入出力(GPIO)インターフェースにおいて、プロセッサから第1の信号のセットを受信し、かつ前記プロセッサから第2のGPIO信号のセットを受信するステップと、
前記GPIOインターフェースから、対応するGPIOピンを通して前記スレーブデバイスに前記第2のGPIOのセット信号を送信するステップと、
前記GPIOインターフェースから、有限ステートマシン(FSM)に前記第2のGPIO信号のセットを並列に与えるステップであって、前記第2のGPIOのセット信号のためのサイズは、前記決定された仮想GPIOフレームサイズに等しい、与えるステップと
を含む、請求項22に記載のエニュマレーション方法。
【請求項２５】
前記第2のGPIO信号のセットを仮想GPIO信号として前記送信ピンを介して前記スレーブデバイスにシリアルに送信するステップをさらに含む、請求項24に記載のエニュマレーション方法。
【請求項２６】
複数のGPIOピンと、
プロセッサから第1の信号のセットを受信し、かつGPIO信号として遠隔スレーブデバイスに送信するために、前記第1の信号のセットのGPIO部分を前記複数のGPIOピンに与えるように構成されるGPIOインターフェースと、
専用送信ピンと、
専用受信ピンと、
有限ステートマシン(FSM)であって、
前記スレーブデバイスからのエニュマレーションデータの送信を開始するために、第1のパルスを前記送信ピンを介して送信することであって、前記エニュマレーションデータは、第1のビットから最終ビットまでエニュマレーションデータシーケンスに従って配列される、送信することと、
前記第1のパルスの前記送信に応答して、前記エニュマレーションデータの少なくとも第1のビットを前記受信ピンを介して受信することと、
前記エニュマレーションデータシーケンスに従って前記エニュマレーションデータの残りの部分を順次に受信するために、付加的なパルスを前記送信ピンを通して前記スレーブデバイスに送信することであって、前記FSMは、前記エニュマレーションデータによって識別された仮想GPIOフレームサイズに従って、前記専用送信ピンを介して前記スレーブデバイスに送信セットをシリアルに送信するようにさらに構成される、送信することと
を行うように構成される、有限ステートマシンと
を備える、マスタ集積回路。
【請求項２７】
前記FSMは、前記仮想GPIO信号の送信セットをパルス幅変調仮想GPIO信号としてシリアルに送信するようにさらに構成される、請求項26に記載のマスタ集積回路。
【請求項２８】
前記FSMは、前記仮想GPIO信号の送信セットを振幅変調仮想GPIO信号としてシリアルに送信するようにさらに構成される、請求項26に記載のマスタ集積回路。
【請求項２９】
前記FSMは、前記仮想GPIO信号の送信セットを一連の電圧パルスとしてシリアルに送信するようにさらに構成される、請求項26に記載のマスタ集積回路。
【請求項３０】
前記FSMは、前記仮想GPIO信号の送信セットを一連の電流パルスとしてシリアルに送信するようにさらに構成される、請求項26に記載のマスタ集積回路。
【国際調査報告】
2018504714.tif 000017
2018504714.tif 000018