(58)【調査した分野】(Int.Cl.,DB名)
専用受信ピンをさらに備え、前記FSMが、前記専用受信ピンを介して前記リモートプロセッサから仮想GPIO信号の受信セットを直列受信し、前記GPIOインターフェースに前記仮想GPIO信号の受信セットを提供するようにさらに構成された、請求項1に記載の集積回路。
前記GPIOインターフェースが、前記GPIOピンからGPIO信号の受信セットを受信し、前記第1のプロセッサに前記GPIO信号の受信セットを送信するようにさらに構成された、請求項2に記載の集積回路。
前記FSMが、前記第1のフレームおよび第2のフレームが開始ビットおよび終了ビットによって各々画定されるように、前記第1のフレームおよび前記第2のフレームを直列送信するようにさらに構成された、請求項2に記載の集積回路。
前記FSMが、前記リモートプロセッサからの受信フレーム内の終了ビットを受信することの失敗の検出によって、前記リモートプロセッサの失敗を検出するようにさらに構成された、請求項6に記載の集積回路。
前記FSMが、外部クロックのサイクルに応答して、前記仮想GPIO信号の送信セットおよび前記メッセージング信号の送信セットを直列送信するようにさらに構成された、請求項3に記載の集積回路。
前記FSMが、前記外部クロックの第1のクロックエッジに応答して前記信号の送信セットを直列送信し、前記外部クロックの第2のクロックエッジに応答して前記受信セットを直列受信するようにさらに構成された、請求項8に記載の集積回路。
前記FSMが、発振器と、前記発振器からの発振をカウントする少なくとも1つのカウンタとを含み、前記FSMが、前記少なくとも1つのカウンタからのカウントに応答して各パルス幅変調信号のためのパルス幅を決定するようにさらに構成された、請求項10に記載の集積回路。
前記FSMが、第1のパルス幅または第2のパルス幅のいずれかを有するように各パルス幅変調信号を生成するようにさらに構成され、前記第2のパルス幅が、前記第1のパルス幅よりも大きい、請求項10に記載の集積回路。
【発明を実施するための形態】
【0017】
本発明の実施形態およびそれらの利点は、以下に続く詳細な説明を参照することによって最も理解される。同様の参照番号が、図のうちの1つまたは複数に示された同様の要素を識別するために使用されていることを諒解すべきである。
【0018】
システムが1対のピンを、それらがより多くの複数のGPIOピンならびにメッセージング信号のための専用の送信ピンおよび専用の受信ピンを構成しているかのように使用することを可能にするハイブリッド仮想汎用入力/出力(GPIO)アーキテクチャが提供される。本明細書で使用される場合、「メッセージング信号」は、IPCまたはSPIプロトコル内で実施されるように、従来は専用の送信ピンを介して送信される信号を指す。メッセージング信号は、したがって、受信プロセッサが受信したメッセージング信号を適切なレジスタにルーティングすることができるようにアドレスを含む。ハイブリッド仮想GPIOアーキテクチャは、仮想GPIO信号を作成するシステムレベルのアプリケーションに対して、これらの仮想GPIO信号が従来のGPIOピンにおける入力/出力に適応されていたかのようである点で「仮想」としてみなされる。言い換えれば、本明細書で開示される仮想GPIOアーキテクチャを有するシステムオンチップ(SoC)またはプロセッサは、GPIO信号と仮想GPIO信号との間で機能的な相違に遭遇しない。しかしながら、そうでなければ(GPIO信号が対称である場合)各々がそれら自体のGPIOピンの専用ペアを必要とするはずの仮想GPIO信号を送信および受信するために、2つのピンが使用されるだけである。ハイブリッド仮想GPIOアーキテクチャは、仮想GPIO信号を送信するために使用される専用送信ピンがリモートプロセッサにメッセージング信号を送信するためにも使用される点で、「ハイブリッド」としてみなされる。同様に、仮想GPIO信号を受信するために使用される専用受信ピンは、リモートプロセッサからメッセージング信号を受信するためにも使用される。
【0019】
本明細書で開示される仮想GPIO信号は、モバイル電話または他の通信デバイス内のアプリケーションプロセッサとモデムプロセッサとの間のIPCに適応することに関して説明される。しかしながら、本明細書で開示される仮想GPIOの回路および技法は、GPIO機能を必要とするシステムオンチップ(SoC)または特定用途向け集積回路(ASIC)に広く適用可能であることが諒解されよう。
【0020】
開示されるハイブリッド仮想GPIOアーキテクチャは、送信ノードの状態(health)を受信ノードに対して透明にする。これは、送信プロセッサが動作不能になる時間を受信プロセッサに示すので、特にソフトウェア実装用のデバッギング段階の間は、重要な利点である。そのような強固な仮想GPIO機能を可能にするために、各集積回路は、回路板上の送信ラインに結合された専用送信ピンと、回路板上の受信ラインに結合された専用受信ピンとを含む。その点において、仮想GPIO信号は、送信ラインを介した送信用の送信セットと、受信ライン上の受信用の受信セットとに分割することができる。シグナリングが対称である場合、プロセッサごとの送信セット内の信号の数は同じである。しかしながら、本明細書で開示されるハイブリッド仮想GPIOアーキテクチャは、1つのプロセッサのための仮想GPIO信号の送信セットがリモートプロセッサのための送信セットと同じサイズではない非対称シグナリングに適応することができる。仮想GPIO信号に類似して、メッセージング信号はまた、専用送信ピンを介して送信され、専用受信ピンにおいて受信される。
【0021】
ここで図面に向かうと、
図1は、モバイル電話または他の通信デバイス内のアプリケーションプロセッサ集積回路100およびモデムプロセッサ集積回路105を含むハイブリッド仮想GPIOアーキテクチャ101を示す。各集積回路は、専用の送信ラインおよび専用の受信ラインに結合するので、アプリケーションプロセッサ集積回路100のための送信ライン110aは、したがって、モデムプロセッサ集積回路105のための受信ラインである。同様に、モデムプロセッサ集積回路105のための送信ライン110bは、アプリケーションプロセッサ集積回路100のための受信ラインである。これらのラインまたはリードは、集積回路100と集積回路105との間の回路基板または他の物理的相互接続上に担持される。各集積回路は、対応する送信ライン(たとえば、モデムプロセッサ集積回路105のためのライン110b)に結合するために専用送信ピン112を含む。同様に、各集積回路は、対応する受信ライン(たとえば、モデムプロセッサ集積回路105のためのライン110a)に結合するために専用受信ピン111を含む。各集積回路内の有限状態機械(FSM)115は、32KHzスリープクロックなどの外部クロックソースからの外部クロック信号120に対して、これらの専用ラインおよび専用ピンを使用して、送信および受信を制御する。
【0022】
アプリケーションプロセッサ集積回路100は、プロセッサ101を含む。同様に、モデムプロセッサ集積回路105は、プロセッサ102を含む。各プロセッサは、GPIOインターフェース103を介して結合し、それによって、従来の方法においてGPIOピン125とインターフェースする。各ハイブリッドGPIOインターフェース103を介して処理された信号の特定の部分は、従来のGPIO信号130として従来のGPIOピン125上で送受信され得る。しかし、GPIOインターフェース103を介して処理された信号の残りの部分は、従来のGPIOピン125を介して送信または受信されない。代わりに、この残りの信号部分の一部は、専用送信ピンおよび専用受信ピンを使用して対応するFSM115を介して送受信される複数の仮想GPIO信号135を備える。各FSM115はまた、メッセージング信号136を受信および送信することに関して、対応するプロセッサと直接インターフェースする。メッセージング信号136は、GPIO信号ではないので、それらは、GPIOインターフェース103を介して結合しない。各FSM115は、その専用の送信ピン112および受信ピン111を介して、メッセージング信号136を送信および受信する。これらのピンは、したがって、それらが仮想GPIO信号135とメッセージング信号136の両方のために使用されるという点で、「ハイブリッド」ピンである。
【0023】
仮想GPIO信号135は、各々、従来のGPIO信号130の場合のようにそれら自体の専用ピンを持たない。これは、仮想GPIO信号135が各々それら自体のピンを要求することになる従来のGPIO実施形態と比較して、ハイブリッド仮想GPIOアーキテクチャ101がピンの大幅な削減を達成する点で非常に有利である。メッセージング信号136は、従来、別の専用送信ピンおよび別の専用受信ピンを同様に必要とする。しかし、これらの別のピンはまた、本主題の有利なハイブリッド仮想GPIOアーキテクチャにおいて除去される。
【0024】
集積回路は、ただ1つのFSM115を含む場合があるか、または複数の外部システムとインターフェースするための複数のこれらの要素を含む場合がある。
図2Aは、集積回路200が、それ自体のFSM115を含む集積回路205内のリモートプロセッサと通信するための単一のFSM115を含む、ハイブリッド仮想GPIOアーキテクチャを示す。対照的に、
図2Bに示された集積回路220は、それぞれ集積回路225および集積回路230内のリモートプロセッサと通信するためのFSM115AおよびFSM115Bを含む。この点において、本明細書で説明するプロセッサなどのシステムオンチップ(SoC)は、他のSoCとシグナリングするハイブリッド仮想GPIOに適応するために必要であるのと同じくらい多くのFSMで構成され得る。プロセッサが有することができるFSMの数にかかわらず、各FSMは、
図2Aに示されたように、それ自体の専用送信ピン240および受信ピン245を使用して通信する。
【0025】
再び
図1を参照すると、仮想GPIO信号135は、FSM115などの有限状態機械を使用して適応されるので、プロセッサ101および102は、依然として仮想GPIO信号135およびメッセージング信号136を受信することができるスリープまたは別のタイプの休止状態であってもよい。このようにして、仮想GPIOアーキテクチャ101は、GPIOインターフェース103ごとのピンの数を有利に節約するだけでなく、低電力でもある。
【0026】
本明細書で使用する「ピン」は、集積回路が回路板または他の物理的な相互接続(たとえば、パッケージ相互接続または相互接続を介したスルーホール)上のリードに結合するために使用するパッドまたは実際のピンなどの構造をカバーする総称である。たとえば、
図1に示すように各集積回路が16のGPIOピンまたはパッド125を有する場合、これらのピンは、8つの対称GPIO信号130(例示の明確さのため、4つの従来のGPIO信号#1〜#4のみが
図1に示されている)または16の非対称GPIO信号130に適応するように構成され得る。加えて、各集積回路は、ライン110aおよびライン110bを使用する複数のn個の仮想GPIO信号135の入出力インターフェースに適応することができ、nは任意の複数形の整数である。同様に、各集積回路は、ライン110aおよびライン110bを使用する複数のm個のメッセージング信号136の入出力インターフェースに適応することができ、mは正の複数形の整数である。各プロセッサコアに関して、GPIO信号130と仮想GPIO信号135との間に違いはなく、それらは両方とも、単に、GPIOインターフェース103を介して必要に応じて送受信される信号である。しかしながら、仮想GPIO信号135およびメッセージング信号136は、従来のGPIO信号130とは対照的に、専用ピンを持たず、仮想GPIO信号135およびメッセージング信号136は、ライン110aおよび110b上の送信のためにFSM115内でシリアライズされる。受信すると、各FSM115は、受信したシリアライズ化仮想GPIO信号および受信したシリアライズ化メッセージング信号をデシリアライズする。したがって、各FSM115は、仮想GPIO信号135およびメッセージング信号136に関してシリアライザ/デシリアライザとして機能する。
【0027】
プロセッサは、GPIO信号またはメッセージング信号のうちの選択されたものにおける変換に応答して割込み信号を受信する必要があることがある。仮想GPIO信号135およびメッセージング信号136に対して、モデム電力マネージャ(MPM:modem power manager)140は、割込み構成レジスタ(図示せず)を介してプログラムされたように、選択されたGPIO信号またはメッセージング信号を監視する。各仮想GPIO信号135は、対応する割込み構成レジスタを有する。仮想GPIO信号135がその信号変化状態に応答して割込みを生成する必要がある場合、対応する構成レジスタは、それに応じてプログラムされる。同様に、仮想GPIO信号135またはメッセージング信号136が、その信号が状態を変更しているかどうかにかかわらず、割込みを生成しないものである場合、対応する割込み構成レジスタはまた、それに応じてプログラムされる。MPM140は有限状態機械を含む場合もある。したがって、FSM115とまったく同様に、MPM140は低電力であり、そのプロセッサがスリープモードまたは他の何らかの休止状態にあるかどうかにかかわらず、アクティブである。
【0028】
仮想GPIO信号135は、送信セットおよび受信セットに細分することができる。対称システムでは、各送信セットは、同じ数を有することになる。同様に、各受信セットは、同じ数の信号を有することになる。しかしながら、仮想GPIO信号135およびメッセージング信号136の送信セットが異なるサイズを有し、GPIO信号135およびメッセージング信号136の受信セットも異なるサイズを有する非対称シグナリング実施形態に容易に対応することができるという点で、仮想GPIOアーキテクチャ101は有利であることが理解されるであろう。アーキテクチャ101が対称であるか非対称であるかにかかわらず、各FSM115は、仮想GPIO信号135の送信セット内の各信号がGPIOインターフェース103とFSM115との間のそれ自体のリード上に担持されるという意味で、GPIOインターフェース103から並列に仮想GPIO信号135の送信セットを受信する。メッセージング信号は、GPIO信号ではなく、したがって、GPIOインターフェース103を介して結合しない。その点において、各FSM115によって表されるように、ハイブリッドインターフェースは、対応するプロセッサ101または102によっていくらかの周辺機器アドレスを与えられてもよい。各FSM115は、所与のメッセージング信号136が対応するメッセージングレジスタ138内に記憶され得るように、メッセージング信号136内にアドレスフィールド137を復号するように構成される。これらのメッセージングレジスタ138は、各々、対応するプロセッサ101または102のためのアドレス空間内のFSM115のための一般的なアドレスのいくらかのオフセットにマッピングされる。MPM140からの割込みに応答して、プロセッサ101または102は、次いで、適切なメッセージング信号136を得るために、メッセージングレジスタ138にアクセスしてもよい。仮想GPIO信号135と同様に、メッセージング信号136は、送信セットおよび受信セットに細分され得る。アーキテクチャが対称または非対称のどちらであるかにかかわらず、FSM115によるこれらの送信セットの結果として生じる送信は、単一の送信ピン112を介して起こる。1つのプロセッサからの仮想GPIO信号135の送信セットは、リモートプロセッサのための仮想GPIO信号135の受信セットになる。同様に、メッセージング信号136の送信セットは、リモートプロセッサのためのメッセージング信号136の受信セットになる。リモートプロセッサのFSM115は、次いで、仮想GPIO信号135の受信セットがGPIOインターフェース103と並列に提供され得るように、仮想GPIO信号135の受信セットをデシリアライズする。
【0029】
各FSM115は、仮想GPIO信号135の送信セットのためおよびメッセージング信号136のための以前の状態を記憶する設定レジスタ(図示せず)を含む。この様式で、各FSM115は、GPIOインターフェース103から受信されるように仮想GPIO信号135の送信セットの現在の状態を監視することができ、現在の状態が以前の状態に対して変化した場合、単に対応する送信セットの直列送信をトリガしてもよい。言い換えれば、FSM115は、送信セット内の1つまたは複数の信号が、設定レジスタ107内の以前の状態の記憶を介して検出されるように状態を変化した場合にのみ、送信セットの直列送信をトリガすることになる。各プロセッサは、メッセージング信号レジスタ138のためのアドレスを知っており、したがって、それらに所望の送信セットを書き込むことができ、受信セットの任意の変化を読み取ることもできる。FSM115は、メッセージング信号136の送信セットがそれらの以前の送信に対して変化したかどうかを監視し、それに応じてリモートプロセッサへの送信セットの送信をトリガすることになる。MPM140は、受信セットが前述したように変化したかどうかを監視し、変化した受信セットが処理され得るように対応するプロセッサに割り込む。
【0030】
上記で説明したように、各FSM115は、各送信セットをシリアライズし、各受信セットをデシリアライズするシリアライザ/デシリアライザとして機能する。
図3は、これらの動作をより良く説明するFSM115のブロック図である。FSM115は、多重化モジュール300を介して対応するプロセッサと仮想GPIO信号135およびメッセージング信号136を交換する。多重化モジュールは、仮想GPIO信号135に関して仮想GPIOインターフェース103を介して対応するプロセッサとインターフェースし、メッセージング信号136に関して対応するプロセッサと直接インターフェースする。一実施形態では、各FSM115は、送信ライン110aを介する仮想GPIO信号135の送信セットまたはメッセージング信号136の送信セットの送信を、いずれかの送信セットに変化があった場合にのみ許可することになる論理回路301を含む。論理回路301は、したがって、仮想GPIO信号135(またはメッセージング信号136)の送信セットの現在の状態を、対応する設定レジスタ107に記憶されているような送信信号のこのセットの以前の状態と比較する。たとえば、論理回路301は、この比較を実行するXORゲート310を含む場合がある。多重化モジュール300は、並列入力直列出力(PISO)シフトレジスタ315の中に並列に送信セットをロードする。XORゲート310からのイネーブル信号320が高くなった(送信セットについての現在の状態と以前の状態との間の変化を示す)場合、PISOシフトレジスタ315はイネーブルにされて、外部クロック120のサイクルに応答して、その内容を送信ライン110a上に直列にシフトアウトする。
【0031】
FSM115はまた、直列入力並列出力(SIPO:serial-in-parallel-out)シフトレジスタ325を使用して、類似の方法で仮想GPIO信号135またはメッセージング信号136の受信セットをデシリアライズする。仮想GPIO信号135およびメッセージング信号136の受信セットは、リモートプロセッサによって生成され、リモートプロセッサによって受信ライン110b上に送信される。仮想GPIO信号135(またはメッセージング信号136)のこの受信セットは、外部クロック120のサイクルに応答してSIPOシフトレジスタ325内に連続的にシフトされる。FSM115は、本明細書でさらに説明するように、別個の開始ビットおよび終了ビットを有するフレームにおいて、仮想GPIO信号135およびメッセージング信号136の送信セットを送信し、受信セットを受信するように構成される。
【0032】
一実施形態では、FSM115は、GPIOインターフェースから仮想GPIO信号の送信セットを受信し、専用送信ピンを介してリモートプロセッサに仮想GPIO信号の送信セットを直列送信し、メッセージング信号レジスタからメッセージング信号の送信セットを取得し、専用送信ピンを介してリモートプロセッサにメッセージング信号の送信セットを直列送信するための手段を備えるものとみなされ得る。
【0033】
フレームは、あらかじめ定義されたサイズを有する。一実施形態では、フレームサイズは、特定の数のビット長であるようにヘッダによって決定される。例示的なフレーム400は、
図4に示されている。ヘッダ405は、2つの機能ビット、fn_0およびfn_1を備え得る。一実施形態では、両方の機能ビットがゼロである場合、後続のビットは、仮想GPIO信号135である。fn_0がゼロであり、fn_1が1に等しい場合、後続のビットは、メッセージング信号136である。fn_0が1であり、fn_1がゼロに等しい場合、後続のビットは、リモートプロセッサによって予想されるように仮想GPIOフレーム長を表す。同様に、両方の機能ビットが1である場合、後続のビットは、所望のフレーム長のリモートプロセッサによる確認を表す。仮想GPIO信号135の送信セット(または、メッセージング信号136の送信セット)がこの固定されたフレームサイズ未満である場合、各フレーム内の未使用ビットは、ドントケア値であり得る。代替として、各FSM115は、所与のアプリケーションに必要なビットの数に応じて、送信されるフレームのサイズを変更するように構成される場合がある。2つの機能ビットを使用するコーディングの前述の説明は、単なる一例であり、他のヘッダおよびコーディングプロトコルは、フレームが、仮想GPIO信号135、メッセージング信号136、仮想GPIOフレーム長の識別情報、仮想GPIOフレーム長の確認、メッセージング信号フレーム長の識別情報、またはメッセージング信号フレーム長の確認のいずれかを担持しているかを識別するために使用されてもよいことが理解されるであろう。一実施形態では、フレーム400はまた、以下でさらに説明するように、プログラミングおよび確認フレームに関連付けられたタイプビット(type_bit)を含んでもよい。たとえば、一実施形態では、タイプビットは、仮想GPIOフレームを識別するハイ、およびメッセージング信号フレームを識別するローであり得る。
【0034】
仮想GPIO信号135またはメッセージング信号136の送信セットを送信するために必要なフレームの数は、特定の送信セット内の信号の数と、フレームサイズとに依存する。たとえば、フレームサイズが8ビットであり、送信セット内に10の仮想GPIO信号135が存在すると仮定する。8ビットフレームを使用してその送信セットを送信することは、したがって、2フレームを必要とすることになる。
【0035】
仮想GPIO信号135またはメッセージング信号136の受信セットのための完全なフレームの受信を検出するために、FSM115は、フレームの開始ビットの受信後に外部クロック120の必要なサイクル数をカウントする、
図3に示すような論理回路350を含んでもよい。たとえば、受信セットが、外部クロック120の10サイクルに応答して受信される10の仮想GPIO信号135を備えると仮定する。開始ビットの検出、および外部クロック120の別の10サイクルの待機後、論理回路350は、次いで、終了ビットの受信を期待することになる。終了ビットがそれに応じて検出された場合、論理回路350は、次いで、完全なフレームとしてSIPOシフトレジスタ325内にシフトされている仮想GPIO信号135の受信セットを並列に受信するために、出力ラッチ351をストローブしてもよい。次いで、仮想GPIO信号のラッチされた受信セットは、多重化モジュール300を介してGPIOインターフェース103に与えることができる。メッセージング信号の受信セットが、GPIOインターフェース103を介してルーティングされる代わりに、メッセージング信号レジスタ138内にロードされるが、メッセージング信号136の受信セットのラッチングは、類似して発生する。
【0036】
再びPISOシフトレジスタ315を参照すると、このレジスタは、開始ビットおよび終了ビットで仮想GPIO信号およびメッセージング信号の送信セットをフレーム化するように構成されることが理解されるであろう。仮想GPIO信号の送信セットは、したがって、開始ビットおよび終了ビットによって画定されたフレーム400において送信される。送信プロセッサのための送信セットは、リモートプロセッサのための受信セットになるので、受信セットも、それに応じてフレーム化される。このフレーム化は、いかなる追加の専用ピンも必要とせずに、各プロセッサがそうすることでリモートプロセッサの健全性を監視できるという点で有利である。たとえば、各FSM115は、その専用送信ピン112を弱く引いて(したがって、送信ライン110aを弱く引いて)、(仮想GPIO信号の送信セットについての以前の状態に対する現在の状態に変化がない)デフォルト状態の間、電圧を供給するように構成することができる。FSM115が開始ビットの送信用の送信ライン110aを接地するような実施形態の場合、開始ビットは論理ゼロになる。このようにして、各FSM115は、受信ライン110bが接地に向かって引かれたことを検出することによって、開始ビットの受信を容易に検出することができる。一実施形態では、開始ビットと停止ビットは、互いの論理補数である。停止ビットは、したがって、開始ビットが論理ゼロである場合、論理ハイの値になる。フレームのペイロードは、次いで、タイプビットから、フレーム端を画定する停止ビット410まで延びてもよい。
【0037】
プロセッサが、その送信ライン110aを接地に不適切に引くように、失敗している可能性がある。したがって、リモートプロセッサは、開始ビットとしてこれを検出し、論理回路350は、それに応じてフレームの終了部に向かってカウントを開始する。しかし、終了ビットが論理1である場合、各FSM115は、フレーム送信の終了を信号送信するために、送信ライン110aを電源電圧に充電する。リモートFSM115が開始ビットであると思われるものを検出しているようにプロセッサが失敗している場合、論理回路350は、終了ビットを検出しないことになり、それに応じてリモートプロセッサの失敗をそのプロセッサに通知することになる。
【0038】
受信のための十分なセットアップ時間を可能にするために、フレーム400の送信は、第1のクロックエッジに対して起こるべきであり、受信は、残りのクロックエッジに対して起こるべきである。たとえば、PISOシフトレジスタ315内のビットは、外部クロック120についての立下りエッジまたは負のエッジに応答して、送信ライン110a上の送信のためにシフトアウトすることができる。逆に、受信ライン110b上で受信されたビットは、クロック120の立上りエッジまたは正のエッジに応答して、SIPOシフトレジスタ325の中にシフトすることができる。
【0039】
あるプロセッサがリモートプロセッサにおける非アクティブ状態を検出するために、各FSM115は、(送信するフレームが存在しない)デフォルト状態でその送信ライン高を弱く引くように構成することができる。前述したように、開始ビットおよび停止ビットは、反対の論理状態を有する。
図4のフレーム400のための開始ビット406は、したがって、送信ライン110aがその送信のために弱く引かれるように論理ゼロ(設置)であってもよく、一方、停止ビット410は、送信ライン110aがその送信のために電源電圧までハイに引かれるようにバイナリの1の値であってもよい。再び
図3を参照すると、論路回路350は、外部クロック120上の立上りエッジに対して受信ライン110bを監視するように構成される。フレーム送信がないデフォルトの論理状態は、前に説明されたようにその弱いプルアップのせいで高く残っているだけの受信ライン110bによって示される。論理回路350が外部クロック120についての立上りエッジのうちの1つで、(開始ビット406のゼロ値を示す)受信ライン110bが低く引かれたことを検出した場合、論理回路350は、フレーム400のあらかじめ定義されたサイズに応じた十分な数のクロックサイクルの間待機して、次いで停止ビット410の論理高の値を検出する。停止ビット410の受信は、完全なフレーム400がSIPOシフトレジスタ325の中に完全にシフトされていることを論理回路350に示す。その時点で、論理回路350は、受信されたフレームがラッチ351を介して多重化モジュール300に並列に供給されるように、SIPOシフトレジスタ325をストローブさせる。仮想GPIO信号(またはメッセージング信号136)の受信セットは、次いで、GPIOインターフェース103を介してそれに応じてプロセッサコアに提供される。
【0040】
32KHzスリープクロックなどの比較的遅い外部クロック120は、IPCのシグナリング要件に十分である。たとえば、仮想GPIO信号135およびメッセージング信号136の送信のための最小セットアップおよびホールド要件が各々2ナノ秒であり、FSM115における外部クロック120の受信のための最大に予測された先行または遅延が6ナノ秒であると仮定する。結果として生じる外部クロック120用の最大周波数は、62MHzであることを容易に示すことができる。したがって、スリープクロックなどからの32KHzの周波数は、そのような実施形態の場合、非常に大きいマージンの安全性を提供する。アーキテクチャ101のための例示的な動作方法をここで概説する。
【0041】
アーキテクチャ101のための動作方法が、
図5のフローチャートに要約される。方法は、ステップ500において、第1のプロセッサからGPIOインターフェースでGPIO信号のセットを受信することで開始する。ステップ505は、GPIOインターフェースからGPIOピンを介してリモートプロセッサにGPIO信号のセットの一部を送信することを備える。ステップ510は、GPIOインターフェースから専用送信ピンを介してリモートプロセッサに仮想GPIO信号としてGPIO信号のセットの残りの部分を直列送信することを備える。最後に、方法は、第1のプロセッサによって書き込まれたメッセージング信号レジスタからメッセージング信号を取得し、専用送信ピンを介してリモートプロセッサに取得したメッセージング信号を直列送信する行為515を含む。
【0042】
開示された仮想ハイブリッドGPIOアーキテクチャの利点を考えると、2つのピンのみが必要とされ、さらに、任意の数の仮想GPIO信号135およびメッセージング信号136が有限状態機械を介してシリアライズおよびデシリアライズされ得る。唯一の制限は、外部クロック120およびクロックのラグまたはリードの任意の予想される量に対する仮想GPIO信号についてのタイミング要件である。その上、あるプロセッサの健康を相対するプロセッサに対して透明にするために、他のピンが必要になることはない。
【0043】
フレーム400はまた、わずか2つの機能ビットのオーバヘッドだけで、様々なメッセージング信号136および仮想GPIO信号135が専用送信ピン112を介して送信され得るという点で、非常に有利である。仮想GPIOフレーム長を設定するため(かつ、メッセージング信号フレーム長を設定するため)の例示的なプログラミングフレームは、
図6に示されている。プログラミングフレーム600は、仮想GPIOフレーム長を設定する。同様に、プログラミングフレーム605は、メッセージング信号フレーム長を設定する。フレーム長(および、したがって各プログラミングフレームの長さ)を定義するために使用されるビット数は、あらかじめ定義される。したがって、FSM115は、(前述のように、1に等しいfn_0および0に等しいfn_1などの)プログラミング長が設定されていることを示すヘッダを見ると、フレーム本体からフレーム長を読み出すことになる。その点において、FSM115は、仮想GPIOフレーム長またはメッセージングフレーム長のどちらがプログラムされているのかを知る必要がある。したがって、フレーム600および605をプログラミングするための各ヘッダ405には、フレームタイプビット610が続く。たとえば、1に等しいフレームタイプビット610は、仮想GPIOフレーム長がプログラムされていることを意味してもよく、一方、ゼロに等しいフレームタイプビット610は、メッセージング信号フレーム長がプログラムされていることを意味してもよい。一実施形態では、各プログラミングフレーム600および605は、ビット0からビット4までの5つのプログラミングビットを有する。各ビットは、その名前によって識別されるように、2のべき乗の係数である。言い換えれば、ビット0は、2
0を乗算するための係数であり、ビット1は、2
1を乗算するための係数であり、ビット2は、2
2を乗算するための係数であり、ビット3は、2
3を乗算するための係数であり、ビット4は、2
4を乗算するための係数である。5つのプログラミングビットは、したがって、ゼロから31までのフレーム長をプログラムすることができる。追加のプログラミングビットは、63などまでのフレーム長のプログラミングを可能にすることになる。
【0044】
リモートFSM115は、フレーム600または605などのプログラミングフレームを受信すると、確認フレームを使用して、定義されたフレーム長を確認することに進んでもよい。例示的な確認フレームは、
図7に示されている。フレーム700は、仮想GPIO確認フレームであり、一方、フレーム705は、メッセージング信号確認フレームである。各フレーム700および705は、機能ビットが確認フレームとしてフレームを識別するヘッダ405を含む。一実施形態では、両方の機能ビットが論理1であるヘッダ405は、確認フレームを識別する。ヘッダ405に続くフレームタイプビット710は、確認フレームタイプを識別する。一実施形態では、仮想GPIO確認フレーム700は、論理1に等しいフレームタイプビット710によって識別される。逆に、メッセージング信号確認フレーム705は、論理ゼロに等しいフレームタイプビット710によって識別され得る。フレームタイプビット710に続くプログラミングビットは、対応するフレーム600または605内のプログラミングビットに等しい。
【0045】
フレーム長がこのようにプログラムされたら、仮想GPIO信号135のフレーム800またはメッセージング信号のフレーム805は、
図8に示すように送信され得る。
図1を再び参照すると、nの仮想GPIO信号135およびmのメッセージング信号136が存在することに留意されたい。各フレーム800は、したがって、ちょうど1つのGPIOポート(n個のGPIO信号135のうちの1つ)に専用になり得、または、n個のGPIO信号135から各々1ビットを含むことができる。言い換えれば、様々なポートに従ってGPIOワードを直列送信することができ、または、それらは、並列に送信され得る。同じ直列/並列の考慮事項は、メッセージング信号に適用される。各フレーム800および805が複数のポートまたはちょうど1つのポートのいずれを担持しているのかにかかわらず、ヘッダ405は、フレームが仮想GPIOフレームまたはメッセージング信号フレームのどちらであるのかを識別する。
【0046】
仮想GPIO信号135およびメッセージング信号136を送信するために別個のフレームを使用するのではなく、これらの信号は、各フレームが仮想GPIO信号135とメッセージング信号136の両方を含むハイブリッド仮想GPIOアーキテクチャのための代替実施形態において組み合わされてもよい。たとえば、
図9は、ヘッダ405ならびに拡張ヘッダ905を含む例示的なハイブリッドフレーム900を示す。拡張ヘッダ905は、拡張ヘッダ905に続いて、停止ビット410の前に、メッセージング信号ビットおよび仮想GPIOビットのビット位置を示す。待ち時間要件に応じて、メッセージングビット910または仮想GPIOビット915のいずれかが、フレーム本体内の最初のビットであり得る。いくつかの実施形態では、拡張ヘッダ905は、CRCビットなどの誤り訂正ビットを含んでもよい。残りのビットは、残りのビットカテゴリに属することがデフォルトで知られているので、拡張ヘッダ905は、単に、仮想GPIOビット915のみまたはメッセージングビット910のみの位置および長さを識別する必要があることに留意されたい。
【0047】
上記で説明したように、共通外部クロック120の使用は、実装するのが好都合に簡単であるが、各FSM115が共通クロック120を受信するためのクロックピンと関連することを必要とする。この追加のピンの要求を回避するために、その内容が参照により本明細書に組み込まれている米国仮出願第61/907,974号で説明されているように、外部クロック120は、除去されてもよい。再び
図1を参照すると、アーキテクチャ101は、したがって、外部クロック120およびその対応するピンを除去することによって変更されることになる。共通クロック120を受信するための各集積回路内のピンを確保するためのどのような必要性も排除するために、信号の送信セットの送信は、送信集積回路および受信集積回路に関して非同期である。この有利な非同期送信および受信を可能にするために、各FSM115は、リング発振器などの発振器を含んでもよく、またはそれに関連付けられてもよい。送信FSMは、発振器からの発振をカウントすることによって、送信セット内の各ビットに対応じて専用送信ピンを介して送信信号をパルス幅変調する。送信セット内のビットは、次いで、データのフレームにおいて送信され、フレーム内の各ビットは、送信セット内の対応するビットのパルス幅変調されたバージョンである。データの送信フレーム内の各ビットは、パルス幅変調に関連して使用される特定のビット期間を有する。たとえば、送信ビットがバイナリゼロなどの1つのバイナリ状態を有する場合、FSMは、ビット期間の大きい部分(majority fraction)が終了するように第1の数の発振をカウントしてもよい。第1の数の発振をカウントすると、FSMは、電源電圧VDDなど、第1のバイナリ電圧で、専用送信ピンをパルス化する。カウントの開始時に、専用送信ピンは、グランドなどの反対の第2のバイナリ電圧状態においてパルス化される。
【0048】
逆に、送信ビットが、バイナリ1などの反対のバイナリ状態を有する場合、FSMは、グランドなどの第2のバイナリ電圧状態で送信ビットを開始し、ビット期間の小さい部分(minority fraction)が終了するように第2の数の発振をカウントすることに進む。第2の数の発振をカウントすると、FSMは、第1のバイナリ電圧で専用送信ピンをパルス化する。このようにして、専用送信ピンに結合された送信ラインの電圧は、可変パルス幅に従って第1のバイナリ電圧でパルス化される。現在の送信ビットが第1のバイナリ値を有する場合、送信ラインは、第1のパルス幅に従って第1のバイナリ電圧でパルス化される。逆に、現在の送信ビットが反対の第2のバイナリ値を有する場合、送信ラインは、第2のパルス幅に従って第1のバイナリ電圧でパルス化される。
【0049】
リモートプロセッサからのデータの送信フレームのその専用受信ピンを介するFSMにおける受信は、類似の方法で復調される。(受信プロセッサのための受信ラインである)各送信ラインのデフォルト状態(またはアイドルモード)が電源電圧VDDに充電されることは、便利である。これは、以下でさらに説明するように、リモートプロセッサの状態を受信プロセッサに対して透明にする。そのような実施形態における第2のバイナリ電圧は、次いで、グランドになる。受信FSMは、次いで、専用受信ピンが放電されたときを検出することによって、受信ビットの開始を認識することになる。受信FSMは、次いで、その発振器からの発振をカウントし始めてよい。次いで、2つのカウント、すなわち、専用受信ピンが第1のバイナリ電圧に充電されるビット部分の間、どれくらい多くの発振が生じるのかについての第1の受信カウントと、専用受信ピンが第2のバイナリ電圧に充電されるビット部分の間、どれくらい多くの発振が生じるのかについての第2の受信カウントとが生成されることになる。2つの受信カウントを比較することによって、受信FSMは、第1のパルス幅または第2のパルス幅のいずれかが受信ビットに適用されたのかを決定してもよい。データの受信フレームは、送信ラインを介するデータのフレームの送信を調整するために共通クロックが必要とされないように、それに応じて復調される。外部クロックを使用するFSM115からそのようなFSMを区別するために、以下のFSMは、内部クロックFSMと表記される。
【0050】
図10は、その送信および受信動作をより良く示す内部クロックFSM1015のブロック図である。FSM1015は、多重化モジュール300を介して、そのGPIOインターフェース103(
図1に示す)から仮想GPIO信号135の送信セットを受信する。代替的には、多重化モジュール300は、FSM115に関して前述したように、メッセージング信号136の送信セットを受信してもよい。FSM1015は、送信セットの以前の状態と比較して送信セットに変化があった場合、送信ライン110aを介するパルス幅変調信号としての信号の送信セットの直列送信を許可する論理回路301を含む。このように、以前の送信と比較して状態が変化していない送信セットの不要な再送信はない。論理回路301は、したがって、仮想GPIO信号の現在の送信セットを、ラッチまたは設定レジスタ107に記憶された以前の送信セットと比較する。比較を実行するために、論理回路301は、現在の送信セットを、設定レジスタ107に記憶された以前の送信セットとXORするXORゲート310を含んでもよい(この以前の送信セットは、
図2に示すように「LAST GPIO Status」として示され得る)。多重化モジュール300は、並列入力直列出力(PISO)シフトレジスタ315の中に並列に現在の送信セットをロードする。XORゲート310からのイネーブル信号320が高くなった(現在の送信セットとレジスタ107に記憶された送信セットとの間の変化を示す)場合、PISOシフトレジスタ315は、シフト信号120に応答して、そのコンテンツを送信ライン110a上に直列にシフトアウトするようにイネーブルにされる。
【0051】
信号の各送信セットは、PISOシフトレジスタ315に記憶されたデータのフレームを備える。FSM1015は、PISOシフトレジスタ315からシフトアウトされたビットの送信セットを、送信ライン110a上のリモートプロセッサに駆動されるパルス幅変調出力信号にパルス幅変調するパルス幅変調器355を含む。この変調は、送信リング発振器(RO)361からの送信リング発振器出力信号360のカウントなどの、発振器からの発振サイクルのカウントに応答する。変調器355および送信リング発振器361は、XORゲート310からのイネーブル信号320のアサーションによってトリガされ得る。このトリガに応答して、変調器355は、PISOシフトレジスタ315が信号の送信セットの最初のビットを変調器355にシフトするように、シフト信号120をストローブする。
【0052】
変調器355は、リング発振器出力信号360におけるサイクルをカウントする少なくとも1つのカウンタ(たとえば、以下でさらに説明する
図11に示すカウンタ1105および1110)を含む。パルス幅変調からの所望のパルス幅に応じて、カウンタは、第1のカウント、または第1のカウントよりも大きい第2のカウントのいずれかをカウントする。第1および第2のカウントのうちの適切な1つを満たすのに十分な数のサイクルをカウントした後、PISOシフトレジスタ315内に記憶されたデータのフレームからの後続のビットが変調器355内にシフトされるように、カウンタはシフト信号120を再ストローブする。このように、PISOシフトレジスタ315内に記憶されたデータのフレームのための信号の送信セットは、一度に1ビットを変調器355内にシフトされる。PISOシフトレジスタ315のシフトアウトされた各ビットのバイナリ値に応じて、パルス幅変調器355は、送信ライン110aを介して送信された対応するパルスをパルス幅変調する。その点において、各プロセッサは、デフォルト状態(無データ伝送)の間、その送信ライン110aを電源電圧VDDまでハイに弱く充電するように構成され得る。そのような実施形態では、ビット時間期間のためのパルス送信は、データのフレームのための
図11のタイミング図に示すように、送信ライン110aをグランド(VSS)に放電することで開始する。各パルス幅変調ビット送信は、ビット時間期間の25%などのビット期間のいくらかの初期放電部分によるグランドへの送信ライン110aの放電で開始する。ビット値に応じて、変調器355は、ビット期間の大部分(たとえば、75%)の間、送信ライン110aの放電を維持し、または、ビット期間の初期放電部分の終了後、すぐに送信ライン110aをVDDに充電し戻す。言い換えれば、1つのバイナリ値は、ビット期間内でハイ電圧(VDD)の比較的狭いパルスに変調され得、バイナリ値の補数は、ビット期間内でハイ電圧(VDD)の比較的広いパルスに変調され得る。
【0053】
図11に示す例示的なデータフレームの最初のビットは、バイナリゼロである。一実施形態では、バイナリゼロは、送信ライン110aがビット期間の75%の間グランドに維持される第1のパルス幅に変調され得る。ビット期間のそのような大きい部分は、第2のカウントをカウントする大きい部分カウンタ1110に対応する。送信すべきビットがバイナリゼロである場合、パルス幅変調器355は、したがって、第2のカウントが満たされるまで、放電された送信ライン110aを保つことになる。第2のカウントに達すると、パルス幅変調器355は、次いで、ビット期間の残りの間、送信ライン110aを電源電圧VDDにパルス化することになる。このパルス持続時間は、このとき、ビット期間のちょうど25%である第1のカウントをカウントする小さい部分カウンタ1105に対応することになる。そのようなビットのための送信ライン110aを介して送信される結果として生じる電圧パルスは、このとき、ビット期間のちょうど25%のパルス幅を有することになる。
【0054】
逆に、バイナリ1は、送信ライン110aがビット期間の最初の25%などの小さい放電部分の間にのみ接地される第2のパルス幅に変調され得る。送信ライン110aは、このとき、第1のカウントが満たされるまで、放電されることになる。第1のカウントが満たされると、パルス幅変調器355は、次いで、大きい部分カウンタ1110をゼロにリセットし、第2のカウントを満たすまでカウントすることによって決定されるようなビット期間の残りの間、送信ライン110aを電源電圧VDDまでハイにパルス化することになる。送信ライン110aのための電圧が電源電圧VDDに充電される第2のパルス幅は、このとき、ビット期間の75%を備えることになる。しかしながら、異なるパルス幅が、代替実施形態では、所望のバイナリ値を表すために使用され得ることが理解されるであろう。
【0055】
一実施形態では、変調器355は、論理回路1100を備えてもよい。ビット値に応じて、論理回路1100は、カウントを開始するために小さい部分カウンタ1105または大きい部分カウンタ1110のいずれかをトリガする。しかしながら、所望のパルス幅変調に応じて第1または第2のカウントのいずれかをカウントする単一のカウンタが使用され得ることが理解されるであろう。論理回路1100によってトリガされると、小さい部分カウンタ1105または大きい部分カウンタ1110は、送信リング発振器(RO)361からのサイクルをカウントする。たとえば、小さい部分カウンタ1105は、ビット時間期間の25%に対応する十分な数のサイクルをカウントし、その後、第1のカウントが満たされたことを示すために出力信号をアサートするように構成されてもよい。同様に、大きい部分カウンタ1110は、ビット時間期間の75%に対応する十分な数のサイクルをカウントし、その後、その出力信号をアサートするように構成されてもよい。この実施形態では、変調器355は、各ビット時間期間の開始時に、送信ライン110aをグランドに放電するように構成される。ビット値に応じて、変調器355は、適切なカウンタからの出力信号のアサーションに際し、送信ライン110aを電源電圧VDDに充電し戻すことになる。たとえば、データフレーム内の第1のビットは、バイナリゼロであるので、変調器355は、カウンタ1105がその出力信号をアサートするに際し、送信ライン110aをVDDまでハイにアサートする。同様に、データフレーム内の第2のビットは、バイナリ1であるので、変調器355は、カウンタ1110がその出力信号をアサートするに際し、送信ライン110aをVDDまでハイにアサートする。初期の25%ロー期間は、単なる一例であり、ビット時間期間の他の部分が実施されてもよいことが理解されるであろう。
【0056】
一実施形態では、論理回路1100、カウンタ1105および1110、変調器355、ならびにSIPOシフトレジスタ315の組合せは、送信セット内の各信号を一連の対応するパルス幅変調信号に直列に処理するための手段を備えるものとみなされてもよく、手段は、直列処理された信号のバイナリ値に応答して第1のカウントおよび第2のカウントのうちの一方に発振器からの発振をカウントすることによって、各直列処理された信号のためのパルス幅を決定するように構成され、手段は、専用送信ピンを介してリモートプロセッサに専用送信ピンを介して一連の対応するパルス幅変調信号を送信するようにさらに構成される。
【0057】
再び
図9を参照すると、FSM1015はまた、直列入力並列出力(SIPO)シフトレジスタ325を使用して、類似の方法で信号(仮想GPIOおよび/またはメッセージング信号)の受信セットをデシリアライズする。復調器370は、受信ライン110b上で受信されるように、リモートプロセッサからの受信されたパルス幅変調信号を復調する。復調器370は、受信リング発振器出力信号380を発振することを開始するように受信リング発振器375をトリガするために、受信ライン110bの放電を検出することなどによって、受信したパルス幅変調信号からデータの受信フレームの開始を検出するように構成される。代替実施形態では、発振器375および361は、同じ発振器を備えてもよいことに留意されたい。変調器355に類似して、復調器370は、ローカウンタ415およびハイカウンタ420などのカウンタを含んでもよい。各ビット期間において、ローカウンタ415は、受信ライン110bが放電している間、カウントするようにトリガされる。逆に、ハイカウンタ420は、受信ライン110bが電源電圧VDDに充電される間、カウントするようにトリガされる。代替実施形態では、カウンタ415および420は、受信ライン110bのための各バイナリ電圧状態における発振の数をカウントする単一の共通カウンタを使用して実装されてもよい。カウンタ415および420からのカウントを比較することによって、復調器370は、それに応じて復調データ信号382を形成してもよい。具体的には、所与のビット期間においてハイカウンタ420からのカウントがローカウンタ415からのカウントよりも大きい場合、復調器370は、比較的広いパルス幅が受信されたことを示すために、復調データ信号382を電源電圧VDDまでハイに駆動してもよい。逆に、ローカウンタ415からのカウントがより大きい場合、復調器370は、比較的狭いパルスが受信されたことを示すために、復調データ信号382をVSSまで放電してもよい。
【0058】
復調器370はまた、ビット時間期間の境界のカウントからの検出時に、シフト信号381をSIPOシフトレジスタ325にアサートしてもよい。SIPOシフトレジスタ325は、次いで、復調器370からの復調データ信号382においてシフトすることになる。FSMモジュール1015は、上記で説明したプログラミングフレームによって決定されるように、信号の送信および受信セットのためのあらかじめ定義されたデータフレームサイズを処理するように構成されてもよい。カウンタ415と420の両方は、ビット時間期間の開始時に初期化される。ローカウンタ415は、受信ライン110b電圧がローである間、受信リング発振器375からのサイクルをカウントし、一方、ハイカウンタ420は、受信ライン電圧がハイ(VDD)である間、受信リング発振器375からのサイクルをカウントする。比較器425は、したがって、ローカウンタ415からローカウント(C
L)をハイカウンタ420からのハイカウント(C
H)と比較することによって、各ビット時間期間の終了において復調ビット決定を実行する。ビット期間は、ハイカウンタ420がカウントを停止し、放電されている受信ライン110bによってトリガされるように、C
Hを出力したいつからでも決定され得る。カウンタ420は、それに応じて、各ビット時間境界において初期化され得る。各ビット期間の終了時にC
LがC
Hよりも大きい場合、比較器425は、復調データ信号382を、一実施形態ではバイナリゼロの復調に対応するローに駆動する。逆に、ビット期間の終了時にC
HがC
Lよりも大きい場合、比較器は、復調データ信号382を、そのような実施形態ではバイナリ1の復調に対応するハイに駆動する。SIPOシフトレジスタ325は、シフト信号381のストローブに応答して、各復調ビット決定を登録する。
【0059】
当業者が今では認識するように、近い将来の特定の用途に応じて、本開示の要旨および範囲から逸脱することなく、多くの修正、置換、および変形が、本開示のデバイスの材料、装置、構成、および使用方法において、およびそれらに対してなされ得る。これを踏まえて、本明細書において図示および説明された特定の実施形態は本開示のいくつかの例にすぎないので、本開示の範囲は本明細書において図示および説明された特定の実施形態の範囲に限定されるべきでなく、むしろ、以下に添付される特許請求の範囲、その機能的均等物の範囲に完全に相応すべきである。