以下の説明では、本開示の完全な理解を提供するために、具体的タイプのプロセッサおよびシステム構成、具体的ハードウェア構造、具体的アーキテクチャおよびマイクロアーキテクチャの詳細、具体的レジスタ構成、具体的命令タイプ、具体的システム構成要素、具体的計測値/高さ、具体的プロセッサパイプラインステージおよび動作などの例等の多数の具体的詳細が記載される。しかし、これらの具体的詳細が本開示を実践するために使用される必要はないことは、当業者に明らかとなるだろう。他の場合には、具体的および代替的なプロセッサアーキテクチャ、記載されたアルゴリズムのための具体的な論理回路/コード、具体的ファームウェアコード、具体的インタコネクト動作、具体的論理構成、具体的製造技術および材料、具体的コンパイラの実装、アルゴリズムのコードでの具体的表示、具体的パワーダウンおよびゲーティング技術/論理、ならびにコンピュータシステムのその他の具体的動作の詳細等の周知の構成要素または方法は、本開示を不必要に不明瞭にすることを回避するために詳述していない。
以下の実施形態は、コンピューティングプラットフォームまたはマイクロプロセッサ等の具体的集積回路におけるエネルギ節約およびエネルギ効率に関して記載されうるが、他の実施形態が他のタイプの集積回路および論理デバイスに適用されうる。本明細書に記載の実施形態の類似の技術および教示は、より良好なエネルギ効率およびエネルギ節約の利益を同様に享受しうる他のタイプの回路または半導体デバイスに適用されうる。例えば、本開示の実施形態は、デスクトップコンピュータシステムまたはUltrabooks(商標)に限定されない。また、ハンドヘルドデバイス、タブレット、他の薄型ノートブック、システムオンチップ(SOC)デバイス、および埋め込みアプリケーション等の他のデバイスにおいても使用されうる。ハンドヘルドデバイスのいくつかの例には、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、パーソナルデジタルアシスタント(PDA)、およびハンドヘルドPCが含まれる。埋め込みアプリケーションには、マイクロコントローラ、デジタル信号プロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、広域ネットワーク(WAN)スイッチ、または以下に教示される機能および動作を遂行しうるその他の任意のシステムが典型的に含まれる。さらに、本明細書に記載の装置、方法、およびシステムは、物理的コンピューティングデバイスに限定されず、エネルギ節約および効率のためのソフトウェア最適化にも関係しうる。以下の説明で直ちに明らかになるように、本明細書に記載の方法、装置、およびシステムの実施形態は(ハードウェアに関するものでも、ファームウェアに関するものでも、ソフトウェアに関するものでも、またはその組み合わせに関するものでも)、性能への配慮とのバランスをとった「環境保全技術」の未来に不可欠である。
コンピューティングシステムが進歩するにしたがい、その構成要素もより複雑化している。その結果、最適な構成要素の動作のための帯域幅要件が満たされることを確保するために、構成要素間で結合および通信するインタコネクトアーキテクチャも複雑さが増している。さらに、異なる市場セグメントが、市場のニーズに合った異なる態様のインタコネクトアーキテクチャを要求する。例えば、サーバはより高い性能を必要とする一方で、省電力化のためにモバイルエコシステムが全体の性能を犠牲にすることが可能なこともある。しかし、最大限の省電力化で可能な限り高い性能を提供することが、ほとんどの構造物の一つの目的である。以下では、本明細書に記載される開示の態様から潜在的に利益を受けると考えられるいくつかのインタコネクトについて論ずる。
図1を参照すると、マルチコアプロセッサを含むコンピューティングシステムのブロック図の実施形態が示される。プロセッサ100は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ(SOC)、またはコードを実行するためのその他のデバイス等の任意のプロセッサまたは処理デバイスを含む。プロセッサ100は、一実施形態では、少なくとも二つのコア、すなわちコア101および102を含み、これは非対称コアまたは対称コア(図の実施形態)を含みうる。しかしプロセッサ100は、対称でも非対称でもよい任意の数の処理エレメントを含みうる。
一実施形態では、処理エレメントは、ソフトウェアスレッドをサポートするハードウェアまたは論理をさす。ハードウェア処理エレメントの例には、スレッドユニット、スレッドスロット、スレッド、プロセスユニット、コンテキスト、コンテキストユニット、論理的プロセッサ、ハードウェアスレッド、コア、および/もしくは実行状態またはアーキテクチャ状態等のプロセッサの状態を保持する能力がある他の任意のエレメントが含まれる。換言すれば、処理エレメントは、一実施形態では、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、または他のコード等のコードと独立して関連付けられる能力がある任意のハードウェアをさす。物理プロセッサ(またはプロセッサソケット)は、コアまたはハードウェアスレッド等の任意の数の他の処理エレメントを潜在的に含む集積回路を典型的にさす。
コアは、独立したアーキテクチャ状態を維持する能力がある集積回路上に位置する論理であり、独立して維持される各アーキテクチャ状態が少なくともいくつかの専用の実行リソースと関連付けられるものをさすことが多い。コアとは対照的に、ハードウェアスレッドは、独立したアーキテクチャ状態を維持する能力がある集積回路上に位置する任意の論理であり、独立して維持されたアーキテクチャ状態が実行リソースへのアクセスを共有するものを典型的にさす。このように、あるリソースは共有され、他のリソースは一アーキテクチャ状態の専用である場合には、ハードウェアスレッドおよびコアの命名法の間の境界線が重なり合う。しかし、コアおよびハードウェアスレッドは、オペレーティングシステムが各論理的プロセッサ上の動作を個々にスケジューリングできる個々の論理的プロセッサとしてオペレーティングシステムにより見なされることが多い。
図1に示されるように、物理プロセッサ100は、二つのコア、すなわちコア101および102を含む。ここで、コア101および102は、対称コア、すなわち同じ構成、機能ユニット、および/または論理を有するコアと考えられる。別の実施形態では、コア101は、アウトオブオーダプロセッサコアを含む一方で、コア102はインオーダプロセッサコアを含む。しかし、コア101および102は、ネイティブコア、ソフトウェア管理されたコア、ネイティブ命令セットアーキテクチャ(ISA)を実行するように適合されたコア、トランスレートされた命令セットアーキテクチャ(ISA)を実行するように適合されたコア、コデザインされたコア、またはその他の周知のコア等の任意のタイプのコアから個々に選択されうる。ヘテロジニアスなコア環境(すなわち非対称コア)では、一方または両方のコアでコードをスケジューリングまたは実行するために、バイナリトランスレーション等の何らかの形のトランスレーションが利用されうる。さらに議論を進めるため、図示の実施形態ではコア102のユニットは同様の様式で動作することから、コア101に示される機能ユニットを以下にさらに詳述する。
図示のように、コア101は、ハードウェアスレッドスロット101aおよび101bとも呼称されうる二つのハードウェアスレッド101aおよび101bを含む。したがって一実施形態では、オペレーティングシステム等のソフトウェア実体は、プロセッサ100を、四つの別々のプロセッサ、すなわち四つのソフトウェアスレッドを同時に実行する能力がある四つの論理的プロセッサまたは処理エレメントとして潜在的に見る。上に暗示されるように、第一スレッドはアーキテクチャ状態レジスタ101aに関連付けられ、第二スレッドはアーキテクチャ状態レジスタ101bに関連付けられ、第三スレッドはアーキテクチャ状態レジスタ102aに関連付けられ、第四スレッドはアーキテクチャ状態レジスタ102bに関連付けられうる。ここで、各アーキテクチャ状態レジスタ(101a、101b、102a、および102b)は、上述の通り、処理エレメント、スレッドスロット、またはスレッドユニットと呼称されうる。示されるように、アーキテクチャ状態レジスタ101aは、アーキテクチャ状態レジスタ101bに複製されるので、個々のアーキテクチャ状態/コンテキストを論理的プロセッサ101aおよび論理的プロセッサ101bのために格納することができる。コア101においては、命令ポインタならびにアロケータおよびリネーマブロック130のリネーミング論理等の他のより小さなリソースも、スレッド101aおよび101bに対して複製されうる。リオーダ/リタイアメントユニット135のリオーダバッファ、ILTB120、ロード/ストアバッファ、およびキュー等のいくつかのリソースが、パーティショニングを通じて共有されうる。汎用内部レジスタ、ページテーブルベースレジスタ(単数または複数)、低レベルデータキャッシュおよびデータ−TLB115、実行ユニット(単数または複数)140、ならびにアウトオブオーダユニット135の部分等の他のリソースが潜在的に完全に共有される。
プロセッサ100は、処理エレメントにより完全に共有され、パーティショニングを通じて共有され、または処理エレメントの専用でありうる、その他のリソースを含むことが多い。図1には、プロセッサの例示的論理的ユニット/リソースを有する純粋に例示としてのプロセッサの実施形態が示される。プロセッサは、これらの機能ユニットの任意のものを含みまたは省略してもよいとともに、図示されていない他の任意の周知の機能ユニット、論理、またはファームウェアを含んでもよいことに注意されたい。示されるように、コア101は、簡単化された、代表的なアウトオブオーダ(OOO)プロセッサコアを含む。しかし、異なる実施形態ではインオーダプロセッサが利用されうる。OOOコアは、実行される/とられる分岐を予測する分岐ターゲットバッファ120と、命令についてのアドレストランスレーションエントリを格納する命令トランスレーションバッファ(I−TLB)120とを含む。
コア101は、フェッチユニット120に結合されたデコードモジュール125を更に含み、フェッチされたエレメントをデコードする。一実施形態では、フェッチ論理は、スレッドスロット101a、101bにそれぞれ関連付けられた個々のシーケンサを含む。通常、コア101は、プロセッサ100上で実行可能な命令を定義/特定する第一ISAに関連付けられる。第一ISAの一部である機械コード命令は、遂行されるべき命令または動作を参照/指定する命令の部分(オペコードと呼称される)を含むことが多い。デコード論理125は、これらの命令をそのオペコードから認識し、第一ISAにより定義される処理のためにデコードされた命令をパイプラインで送る回路を含む。例えば、以下にさらに詳述するように、一実施形態では、デコーダ125は、トランザクションの命令等の具体的命令を認識するようにデザインまたは適合される論理を含む。デコーダ125による認識の結果、アーキテクチャまたはコア101は、適切な命令に関連付けられたタスクを遂行するために具体的な予め定義されたアクションを行う。一つまたは複数の命令に応答して、本明細書に記載されるタスク、ブロック、動作、および方法のいずれかが遂行されればよく、命令のいくつかは新しい命令または古い命令でありうることに注意することが重要である。一実施形態では、デコーダ126は同じISA(またはそのサブセット)を認識することに注意されたい。あるいは、ヘテロジニアスなコア環境では、デコーダ126は第二ISA(第一ISAのサブセットまたは別個のISA)を認識する。
一例では、アロケータおよびリネーマブロック130は、命令処理結果を格納するためのレジスタファイル等のリソースをリザーブするためのアロケータを含む。しかし、スレッド101aおよび101bは潜在的にアウトオブオーダ実行の能力があり、その場合アロケータおよびリネーマブロック130が命令結果を追跡するリオーダバッファ等の他のリソースもリザーブする。ユニット130は、プログラム/命令参照レジスタをプロセッサ100の内部の他のレジスタにリネームするレジスタリネーマも含みうる。リオーダ/リタイアメントユニット135は、アウトオブオーダ実行およびアウトオブオーダ実行された命令の後のインオーダリタイアメントをサポートする、上述のリオーダバッファ、ロードバッファ、およびストアバッファ等の構成要素を含む。
一実施形態では、スケジューラおよび実行ユニット(単数または複数)ブロック140は、実行ユニットに命令/動作をスケジューリングするスケジューラユニットを含む。例えば、浮動小数点命令が、利用可能な浮動小数点実行ユニットを有する実行ユニットのポートにスケジューリングされる。実行ユニットに関連付けられるレジスタファイルも、情報命令処理結果を格納するために含まれる。例示的な実行ユニットは、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、ストア実行ユニット、および他の周知の実行ユニットを含む。
低レベルデータキャッシュおよびデータトランスレーションバッファ(D−TLB)150が、実行ユニット(単数または複数)140に結合される。データキャッシュは、潜在的にメモリコヒーレンシ状態において保持されるデータオペランド等の最近使用された/動作がなされたエレメントを格納するものである。D−TLBは、最近の仮想/リニアアドレスから物理アドレスへのトランスレーションを格納するものである。具体的例として、プロセッサは、物理メモリを複数の仮想ページに分割するページテーブル構造を含みうる。
ここでは、コア101および102は、オンチップインタフェース110に関連付けられた第二レベルのキャッシュ等のより高レベルのまたはより遠いキャッシュへのアクセスを共有する。より高レベルのまたはより遠いとは、実行ユニット(単数または複数)から増加するまたはより遠くなるキャッシュレベルをさすことに注意されたい。一実施形態では、より高レベルのキャッシュは、第二または第三レベルのデータキャッシュ等のラストレベルのデータキャッシュ、すなわちメモリ階層またはプロセッサ100の最後のキャッシュである。しかし、より高レベルのキャッシュはそれに限定されず、命令キャッシュに関連付けられまたはこれを含んでもよい。トレースキャッシュ、すなわちあるタイプの命令キャッシュが、最近デコードされたトレースを格納するためにデコーダ125の後に代わりに結合されてもよい。ここでは、命令は、いくつかのマイクロ命令(マイクロ動作)にデコードしうるマクロ命令(すなわちデコーダにより認識される一般的命令)を潜在的にさす。
図示の構成では、プロセッサ100は、オンチップインタフェースモジュール110も含む。歴史的に、以下でさらに詳述するメモリコントローラが、コンピューティングシステムのプロセッサ100の外部に含まれている。このシナリオでは、オンチップインタフェース110が、システムメモリ175、チップセット(メモリ175に接続するメモリコントローラハブおよび周辺機器を接続するI/Oコントローラハブを含むことが多い)、メモリコントローラハブ、ノースブリッジ、または他の集積回路等のプロセッサ100の外部のデバイスと通信することとなる。そしてこのシナリオでは、バス105は、マルチドロップバス、ポイントツーポイントインタコネクト、シリアルインタコネクト、パラレルバス、コヒーレント(例えばキャッシュコヒーレント)バス、レイヤードプロトコルアーキテクチャ、差動バス、およびGTLバス等の任意の周知のインタコネクトを含みうる。
メモリ175は、プロセッサ100の専用であってもシステム内の他のデバイスと共有されてもよい。メモリ175のタイプの一般的な例は、DRAM、SRAM、不揮発性メモリ(NVメモリ)、および他の周知のストレージデバイスを含む。デバイス180は、メモリコントローラハブに結合されたグラフィックアクセラレータ、プロセッサまたはカード、I/Oコントローラハブに結合されたデータストレージ、ワイヤレストランシーバ、フラッシュデバイス、オーディオコントローラ、ネットワークコントローラ、または他の周知のデバイスを含みうることに注意されたい。
しかし、最近ではSOC等、より多くの論理およびデバイスが一つのダイに集積されるに伴い、これらのデバイスの各々がプロセッサ100に組み込まれうる。例えば一実施形態では、メモリコントローラハブが、プロセッサ100と同じパッケージおよび/またはダイ上にある。ここで、コアの一部分(オンコア部分)110は、メモリ175またはグラフィックデバイス180等の他のデバイスとインタフェースするための一つ以上のコントローラ(単数または複数)を含む。このようなデバイスとインタフェースするためのインタコネクトおよびコントローラを含む構成は、オンコア(またはアンコア構成)と呼称されることが多い。一例として、オンチップインタフェース110は、オンチップ通信のためのリングインタコネクトおよびオフチップ通信のための高速シリアルポイントツーポイントリンク105を含む。しかしSOC環境においては、高機能性および低電力消費の小型フォームファクタを提供するために、ネットワークインタフェース、コプロセッサ、メモリ175、グラフィックプロセッサ180、および他の任意の周知のコンピュータデバイス/インタフェース等のさらに多くのデバイスが一つのダイまたは集積回路上に集積されうる。
一実施形態では、プロセッサ100は、本明細書に記載の装置および方法をサポートするためまたはこれとインタフェースするために、アプリケーションコード176をコンパイル、トランスレート、および/または最適化するためにコンパイラ、最適化、および/またはトランスレータコード177を実行する能力がある。コンパイラは、ソーステキスト/コードをターゲットテキスト/コードにトランスレートするプログラムまたはプログラムのセットを含むことが多い。通常は、コンパイラによるプログラム/アプリケーションコードのコンパイルは、複数のフェーズおよびパスでなされ、高レベルのプログラミング言語コードが低レベルの機械またはアセンブリ言語コードに変換される。しかし、単純なコンパイルのためにシングルパスのコンパイラがなお利用されうる。コンパイラは、任意の周知のコンパイル技術を利用し、字句解析、前処理、構文解析、意味解析、コード生成、コード変換、およびコード最適化等の任意の周知のコンパイラ動作を遂行しうる。
より大きいコンパイラは複数のフェーズを含むことが多いが、これらのフェーズは、(1)一般に構文処理、意味処理、および一部の変換/最適化が行われるフロントエンドと、(2)一般に解析、変換、最適化、およびコード生成が行われるバックエンドとの二つの一般的フェーズに含まれることがほとんどである。一部のコンパイラはミドルエンドと呼ばれるものを含むが、これはコンパイラのフロントエンドとバックエンドとの間の区別が曖昧であることを示す。その結果、コンパイラの挿入、関連付け、生成、またはその他の動作への言及は、上述したフェーズまたはパスのいずれかで行われうるとともに、コンパイラの他の任意の周知のフェーズまたはパスで行われうる。例示として、コンパイラは、コンパイルの一つ以上のフェーズに動作、呼び出し、関数などを潜在的に挿入し、例えばコンパイルのフロントエンドフェーズに呼び出し/動作を挿入し、その後変換フェーズの間に呼び出し/動作をより低レベルのコードに変換する。動的コンパイル中には、コンパイラコードまたは動的最適化コードがこのような動作/呼び出しを挿入しうるとともに、コードをランタイム中に実行のために最適化しうることに注意されたい。具体的実例として、バイナリコード(コンパイル済みコード)がランタイム中に動的に最適化されうる。ここでは、プログラムコードは、動的最適化コード、バイナリコード、またはその組み合わせを含みうる。
コンパイラと同様に、バイナリトランスレータ等のトランスレータは、コードを最適化および/またはトランスレートするために静的または動的にコードをトランスレートする。したがって、コード、アプリケーションコード、プログラムコード、または他のソフトウェア環境の実行への言及は、(1)プログラムコードをコンパイルするため、ソフトウェア構造を維持するため、他の動作を遂行するため、コードを最適化するため、またはコードをトランスレートするためのコンパイラプログラム(単数または複数)、最適化コードオプティマイザ、またはトランスレータの動的または静的実行;(2)最適化/コンパイルされているアプリケーションコード等の動作/呼び出しを含むメインプログラムコードの実行;(3)ソフトウェア構造を維持するため、他のソフトウェアに関係する動作を遂行するため、またはコードを最適化するためのメインプログラムコードに関連付けられたライブラリ等の他のプログラムコードの実行;または(4)これらの組み合わせをさしうる。
一つのインタコネクトファブリックアーキテクチャは、Peripheral Component Interconnect(PCI)Express(PCIe)アーキテクチャを含む。PCIeの主な目標は、クライアント(デスクトップおよびモバイル)、サーバ(スタンダードおよびエンタープライズ)、ならびに埋め込みおよび通信デバイスの複数の市場セグメントにわたり、異なるベンダからの構成要素およびデバイスがオープンアーキテクチャにおいて相互動作することを可能にすることである。PCI Expressは、多様な未来のコンピューティングおよび通信プラットフォームのために定義された高性能、汎用I/Oインタコネクトである。PCI使用モデル、ロードストアアーキテクチャ、およびソフトウェアインタフェース等の一部のPCI属性は、その改訂を通して維持されているが、以前のパラレルバス実装は、高度にスケーラブルな完全シリアルインタフェースに置き換えられている。PCI Expressのより最近のバージョンは、ポイントツーポイントインタコネクト、スイッチベースの技術、およびパケット化プロトコルの進歩を利用して、新たなレベルの性能および特徴を提供する。電力管理、クオリティオブサービス(QoS)、ホットプラグ/ホットスワップサポート、データ保全性、およびエラーハンドリングは、PCI Expressによりサポートされる高度な特徴の一部である。
図2を参照すると、低電力コンピューティングプラットフォームの実施形態が図示される。一実施形態では、低電力コンピューティングプラットフォーム200は、電話、スマートフォン、タブレット、超小型軽量ノートブック、ノートブック、デスクトップ、サーバ、伝送デバイス、受信デバイス、または他の任意の周知または利用可能なコンピューティングプラットフォーム等のユーザエンドポイントを含む。図のプラットフォームは、複数の異なるデバイスを結合するいくつかの異なるインタコネクトを図示する。これらのインタコネクトの例示的議論を、実装および包含の選択肢を提供するために以下に提供する。しかし、低電力プラットフォーム200は、図示されたインタコネクトまたはデバイスを包含または実装することを要しない。さらに、具体的に示されていないその他のデバイスおよびインタコネクト構造が含まれてもよい。
図の中央から開始して、プラットフォーム200はアプリケーションプロセッサ205を含む。これは、本明細書に記載のプロセッサ構成または当産業で周知のプロセッサ構成の一バージョンであればよい低電力プロセッサを含むことが多い。一例として、プロセッサ200は、システムオンチップ(SoC)として実装される。具体的実例として、プロセッサ200は、カリフォルニア州サンタクララ、Intel Corporationから入手可能なi3、i5、i7等のIntel(登録商標)Architecture Core(商標)−ベースのプロセッサまたは別のそのようなプロセッサを含む。しかし、カリフォルニア州サニーベール、Advanced Micro Devices,Inc.(AMD)から入手可能なもの等の他の低電力プロセッサ、カリフォルニア州サニーベール、MIPS Technologies,Inc.からのMIPSベースのデザイン、ARM Holdings,Ltd.もしくはそのカスタマー、またはそのライセンシーもしくは採用者からライセンスされたARMベースのデザインが、Apple A5/A6プロセッサ、Qualcomm Snapdragonプロセッサ、またはTI OMAPプロセッサ等の他の実施形態において代わりに存在しうることを理解されたい。
電子機器の集積回路(IC)およびデバイスの間の制御および通信のために、シリアルインタフェースが用いられる。電子機器の多くの集積回路およびデバイスは、構成要素および回路基板にとっての大きな費用増加原因である高いピン数を有する。例えば従来の携帯電話のIC間のシリアルインタフェースは、インタフェースあたり二本の配線を特徴とする。特に従来の携帯電話はクロックおよび双方向データピンを含み、場合によってチップが追加されて、バス特有の電力サプライピンを可能にする。例えばMIPI RFFEおよびI2C規格のプロトコルは、インタフェースあたり二本の配線を提供する。
実際には、いくつかのデジタルマイクロホンインタフェースは、マイクロホンへの四つの接続、すなわち電力接続、グランド接続、クロック接続、およびデータ接続を必要とする。したがって現在のデジタルマイクロホンインタフェース技術は、グランドおよび電力/信号のための二ピン接続を特徴とするアナログインタフェースからの後退である。
本開示は、高いデータビットレート(例えばMB/sビットレート)での全二重動作能力がある単線双方向インタフェースを提供する。加えて本開示は、二つの物理ピンを使用してデジタルマイクロホンを実装することを可能にする。さらに本開示は、二つの同一のマイクロホンがノイズ除去のために同じバスインタフェースリンクに取り付けられることを可能にする実施形態を提供する。有利に、本明細書に開示されるマスタデバイスおよび受信器スレーブデバイスが、少なくとも部分的に、デジタルマイクロホン、パーソナルコンピュータ、テレビジョン、トラックパッド、コンピュータマウス、GPS受信機、SIMカードリーダ、ブルートゥースコネクタなど等であるがこれに限定されない他のデバイス内に実装されうる。
図3は、デジタルマイクロホン350に結合されたバスマスタ300の実施形態を示すが、これらはいずれも本開示と一致するものである。しかし、いずれのデバイスもその構成要素も、本開示を実践することを要しない。図のように、バスマスタ300は、バスインタフェース320を介してデジタルマイクロホン350に結合される。いくつかの実施形態では、図3に示されるバスマスタ300およびデジタルマイクロホン350は、いずれも携帯電話(いくつかの実施形態では音声通信能力を有するユーザエンドポイント(UE)とも呼称される)の構成要素である。より具体的には、バスマスタ300およびデジタルマイクロホン350はいずれも、本開示のいくつかの実施形態によるデジタルマイクロホンの構成要素である。
いくつかの実施形態では、本開示と一致するバスマスタ(例えばバスマスタ300)は、スレーブ受信器デバイス(例えばデジタルマイクロホン350)から音声データを受信し、受信データを処理し、音声データを(例えば電波の形で)別のデバイスの受信器に伝送する、受信器およびアンテナ(いずれも図示せず)を含みうる。
いくつかの実施形態では、バスマスタ300は、各デバイス間の同期を維持するためにクロック信号の形のデータを符号化シンボルの形でデジタルマイクロホン350に連続的に伝送(例えばダウンリンク)する。加えて、デジタルマイクロホン350が、データ(例えば音声データ)をバスマスタ300に連続的に送信しうる。
通常の技術を有する当業者は、デジタルマイクロホン350が内部のエレメント(例えば振動板等)に当たって振動させうる音声信号を受信しうることを理解しうる。振動がサンプリング周波数にしたがって電気信号に転換されうる。
例えば、本開示と一致するデジタルマイクロホンは、20kHz、44kHz、48kHz、および96kHz等の従来のサンプリング周波数にしたがって音声データ(例えば話し声)をサンプリングしうる。
さらに、本開示と一致するデジタルマイクロホンまたは他のスレーブ受信器デバイスは、デジタルマイクロホンがバスマスタデバイスにデータを送り返すことを要求しうるバスマスタにより発行されたコマンド(単数または複数)にしたがってアクションを遂行しうる。
バスマスタ300は、CPUのコマンド下にありうる他の構成要素(例えばスレーブ)との直接の通信を可能にしうる。さらに、バスマスタ300は、アドレス信号、制御信号、およびデータ信号が流れるバスインタフェースリンク320を制御しうる。いくつかの実施形態では、デジタルマイクロホン350は、バスマスタ300のスレーブユニットである。有利に、バスマスタリングは、オペレーティングシステムのデータ転送速度を増加させ、システムリソースを節約し、性能および応答時間を向上させうる。
本開示のいくつかの実施形態では、バスマスタ300は、幅の広いクロックパルスおよび幅の狭いクロックパルスを作成し、これらのクロックパルスを、バスインタフェースリンク320をわたってスレーブデバイスへ、すなわちデジタルマイクロホン350へ伝送する。加えて、バスマスタ300は、バスインタフェースリンク320に沿った周波数より高い周波数を有する内部クロックを有しうる。特に、いくつかの実施形態では、バスマスタ300の内部クロックの周波数は、バスインタフェースリンク320に沿った周波数より大きな(例えば10)整数である。
例えば、バスマスタクロックが100Mhzの周波数を有する場合に、バスインタフェースリンク320に沿った周波数が10Mhzであればよい。したがって、この例によれば、バスマスタクロックは、バスインタフェースリンク320に沿って伝搬される各クロックサイクル(例えばBUSCLK)に対して十クロックサイクルを生成しうる。バスマスタ300は、伝送するデータに基づいてBUSCLK信号を生成する内部ステートマシンを含みうる。
いくつかの実施形態では、出力ドライバは、BUSCLKラインを高および低にそれぞれ駆動しうる。加えて、以下でさらに詳述するように、クロック電圧は高でVccおよび低でVssでありうる(図6参照)。
バスマスタ300は、幅の狭いクロックパルスを作成するために短時間BUSCLKが高になるように指示した後、より長い時間期間BUSCLKを低にしうる。例えば、BUSCLKは、三クロックサイクルの間高になった後、七クロックサイクルの間低になるように指示されうる。
あるいは、幅の広いクロックパルスを作成するために、バスマスタ300は、BUSCKLKに拡張された期間のクロックサイクル(例えば七クロックサイクル)の間高状態となることを指示した後、短期間のクロックサイクル(例えば三クロックサイクル)の間低状態になるように指示しうる。
さらに、いくつかの実施形態では、各十BUSCLKサイクルにつき、一つの8b/10bシンボルに対応する10ビットのデータが受信器スレーブユニット(例えばデジタルマイクロホン350)に伝送されうる。のちに8b/10bシンボルが、受信器スレーブユニットにおいて8b/10bデコーダによりデコードされうる。伝送される8b/10bシンボルは、8b/10b符号化プロトコルにしたがってコンマ、データ、またはコマンドシンボルを含みうる。
通常の技術を有する当業者は、本開示が8b/10b符号化プロトコルに限定されないことを理解しうる。したがって、バスマスタ300がデータ、コマンドなどをスレーブ受信器(例えばデジタルマイクロホン350)に伝送することを可能にする他の符号化プロトコルが利用されてもよい。
図に示されるように、バスマスタ300は、バスマスタ300がスレーブデジタルマイクロホン350からアップリンク中に受信するのが1か0かを検出する回路を提供する検出ユニット302を含む。いくつかの実施形態では、検出ユニット302内のクロック周波数は、バスインタフェース320に沿った周波数よりはるかに高くなりうる。例えば検出ユニット302内のクロック周波数は、バスインタフェース320に沿ったクロック周波数より最大およそ十倍大きければよい。バスマスタ300は、デジタルマイクロホン350にアクセス可能な電源303をさらに含む。
加えて、バスマスタ300は、電源303およびグランド306(Vss)に結合されたCMOSインバータ304を含む。さらに、バスマスタ300は、バスマスタ300を含む集積回路が外部デバイスに接続することを可能にするPAD305を含む。
いくつかの実施形態では、CMOSインバータ304内には、PMOSトランジスタ365とNMOSトランジスタ366とが含まれる。典型的には、CMOSインバータ304内のPMOSおよびNMOSトランジスタ365、366は、一方のトランジスタがオンであるときには他方のトランジスタがオフであるように相補的である。
図3にさらに示されるように、PMOSトランジスタ365は電力サプライ303に結合され、電圧または電流がこれに印加されたときには電力が放出されてPAD305を充電する。
あるいは、NMOSトランジスタ366はグランドに結合され、電圧または電流がこれに印加されたときにはPAD305がグランドに放電される。
いくつかの実施形態では、バスマスタ300内のクロック信号が高のときには、PMOSトランジスタ365がPAD305を電力サプライ303に接続する一方で、クロック信号が低のときには、NMOSトランジスタ366がPAD305をグランドライン306に接続する。
デジタルマイクロホン350は、クロックデータ信号が受信され、データ信号が伝送されることを可能にする、双方向通信線335を含みうる。図のように、双方向通信線335は、ダウンリンク中にクロックデータ信号を受信し、アップリンク中にデータを伝送する。
ダウンリンク中には、バスマスタ300がデジタルマイクロホン350にクロックデータ信号を伝送しうる。いくつかの実施形態では、データ信号は、クロックパルストレイン321により示されるようなクロックパルスの形で伝送される。図のように、クロックパルストレイン321は、複数の幅の狭いクロックパルスおよび幅の広いクロックパルス301、302を含む。
いくつかの実施形態では、以下でさらに詳述するように、デジタルマイクロホン350の受信器構成要素330が、バスマスタ300から伝送されるのが1ビット値か0ビット値かを検出しうる。
アップリンク中には、デジタルマイクロホン350が、バスマスタ300の電源303から電流を引き出すことまたは引き出すことを控えることによりデータを伝送しうる。いくつかの実施形態では、検出ユニット302が、各クロックサイクルの立ち下がりエッジ中にデジタルマイクロホン350から電力が引き出されているかを検出する。いくつかの実施形態では、検出ユニット302が、電源303のインピーダンスの差を検出しうる。
さらに、デジタルマイクロホン350は、電源303から電流を引き出すことを控えることにより、バスマスタ300へアップリンク中に1を伝送しうる。したがって、伝送データトレイン331は、電源303から電力も(例えば低電力)電流も引き出されないことを示唆する低出力信号312を示す。
あるいは、デジタルマイクロホン350は、電源303から電流を引き出すことによりバスマスタ300へアップリンク中に0を伝送する。いくつかの実施形態では、検出ユニット302が、各クロックサイクルの立ち下がりエッジ中にデジタルマイクロホン350が電源303から電流を引き出しているかを検出する。したがって、伝送データトレイン331は、電源から電力または電流が引き出されていることを示唆する高出力信号311を示す。
換言すると、デジタルマイクロホン350がアップリンク中に0を伝送するときには、トランジスタ340がバスマスタ300の電力サプライ303からグランドライン306への導管を提供する。いくつかの実施形態では、電力サプライ303からデジタルマイクロホン350に電流が引き出される間に検出ユニット302が低インピーダンスを検出する。
これに対して、デジタルマイクロホン350がアップリンク中に1を伝送するときには、トランジスタ340が電力サプライ303からグランドライン306への電気的アクセスをブロックする。したがって、電流が引き出されていないときには検出ユニット302が高インピーダンスを検出しうる。
したがって、本明細書に記載されるスレーブ受信器(例えばデジタルマイクロホン350)からバスマスタ(例えばバスマスタ300)へデータをアップリンクするプロセスは、本開示のいくつかの実施形態によれば、インピーダンスまたは振幅シフトキーイングとして特徴付けられうる。加えて、本明細書に記載される様式でのバスマスタからスレーブ受信器へデータをダウンリンクするプロセスは、フェーズシフトキーイングとして特徴付けられうる。
図4は、本開示と一致する受信器400の実施形態を示す。受信器400は、図3に示されるデジタルマイクロホン350内に実装されうる。いくつかの実施形態では、受信器400は、バスマスタ等のマスタデバイスから符号化されたデータストリームを受信する。例えば受信されるデータストリームは、8b/10b符号化されたものであればよい。
図のように、クロックデータ信号が、デジタルマイクロホン400に入力され、経路(配線)401a、401b、および401cに伝搬される。例えば、クロックデータ信号は経路401bに沿って伝搬されて、XORゲート406への入力405および(経路408に沿って)ANDゲート425への入力になる。さらに、以下でさらに詳述するように、ANDゲート425の出力412がトランジスタ416(M1)に印加される。
加えて、XORゲート406の出力407は、ANDゲート425、430に(経路409、410を介して)入力され、トランジスタ416、418に印加される各クロックパルスの極性を部分的に決定する。
加えて、受信器400は、XORゲート406の第二入力404にクロックデータ信号を伝送する経路を提供する。最も注意すべきことには、前述の経路は、二つのインバータ403、414および遅延エレメント402を含む。インバータ403、414および遅延エレメント402は、受信器400内において伝搬されるクロック信号を遅延させる。
図のように、遅延エレメント402は、レジスタ435およびキャパシタ436を含む。いくつかの実施形態では、遅延量はレジスタ435およびキャパシタ436のサイズに依存する。
例えばレジスタ435は、200kΩの抵抗を有し、キャパシタ436は100X10^−15(フェムト)ファラドのキャパシタンスを有していればよい。
いくつかの実施形態では、インバータ403、414および遅延エレメント402により、出力412から伝搬されるクロックパルス(P1)が、出力413からクロックパルス(P2)が伝搬される前に生じる。例えば、本開示のいくつかの実施形態によれば、P1クロックパルスはクロック信号の立ち上がりエッジで発せられうる一方で、P2クロックパルスはクロックサイクル(または信号)の立ち下がりエッジで発せられうる。
さらに、経路401aはインバータ414を通じてクロック信号を伝搬し、インバータ414がクロック信号を反転し、ANDゲート430の入力411に信号を伝送する。ANDゲート430の出力は、トランジスタ418に伝搬される。最後に、経路401cは、クロック信号が図の受信器回路400の下半分に伝搬する経路を提供する。
いくつかの実施形態では、クロック信号の立ち上がりエッジで、ANDゲート425の出力412が、短いクロックパルス(P1)をトランジスタ416に伝搬し、これがトランジスタ416をオンにし、その後C2キャパシタ415を放電する。加えて、短いP1パルスが発生すると、C2キャパシタ415がR2レジスタ429を通じて充電し始める。
いくつかの実施形態では、R2レジスタ429は10MΩの抵抗を有する。さらに、C2キャパシタ415は、100X10^−15ファラドのキャパシタンスを有する。同様に、両トランジスタ416、418は、およそ180nmの長さおよびおよそ500nmの幅を有するNMOSトランジスタである。
加えて、クロックサイクルの立ち下がりエッジでは、短いP2クロックパルスがC2キャパシタ415の一部分を放電し、C2キャパシタ415の電圧がC3キャパシタ417にコピーまたはサンプリングされる。したがって、P2クロックパルスが、C2キャパシタ415およびC3キャパシタ417に同じ電圧を持たせる。
換言すれば、P2クロックパルスが高のときには、C2キャパシタ415の電圧がC3キャパシタ417にコピーされる。これに対して、P2クロックパルスが低のときには、以下でさらに詳述するように、C3キャパシタ417の電圧が以前のクロックサイクルのC3キャパシタ417にわたる平均電圧と比較される。
さらに、P2クロックパルスが低のときには、クロック信号の立ち上がりエッジによりC2キャパシタ415が再充電するまでC2キャパシタ415が放電し続ける。いくつかの実施形態では、C2キャパシタ415のサイズは、C3キャパシタ417のサイズよりはるかに大きければよい。例えば、C2キャパシタ415のサイズは、C3キャパシタ417のサイズよりおよそ十倍大きければよい。例えば、C2キャパシタ415のキャパシタンスが100X10^−15ファラドである一方で、C3キャパシタ417のキャパシタンスはおよそ10X10^−15ファラドである。
さらに、C3キャパシタ417に電圧がコピーされると、この電圧は演算増幅器419(オペアンプ419)の出力428に伝搬されうる。有利に、C3キャパシタ417の電圧がオペアンプ419の入力427に印加されうる。
いくつかの実施形態では、オペアンプ419は、特有の高入力インピーダンスを有しうる。例えば、オペアンプ419のレジスタ444の抵抗は1GΩの大きさでありうる。したがってオペアンプ419は、入力427に印加されたC3電圧(Vin)がオペアンプ419の出力428(Vout)に伝搬されるように、理想的な演算増幅器として機能しうる。
さらに示されるように、出力428の電圧は演算増幅器420の第一入力431に伝搬される。最も注意すべきことには、以前のクロックサイクルの平均C3電圧が低パスフィルタ433のC4キャパシタ422に格納されうる。
低パスフィルタ433に格納される平均電圧は、フィルタ433内のレジスタおよびキャパシタ構成要素421、422のサイズの関数でありうる。したがって、低パスフィルタ433は、抵抗構成要素(レジスタ421)をわたって容量性構成要素(C4キャパシタ422)をその最終値の約63%まで充電するために必要な時間量として定義されうるRC時定数にしたがってデザインされうる。したがって、RC時定数がより大きいほど、より多くのC3キャパシタ電圧サイクルが平均C3キャパシタ電圧(すなわちC4キャパシタの電圧)に算入されうる。いくつかの実施形態では、レジスタ421は30、40、または100MΩでありうる一方で、C4キャパシタ422は100X10^−15ファラドでありうる。
したがって、C3容量性電圧が第一入力431に伝搬され、平均電圧(C4キャパシタ422)が第二入力432に印加されると、オペアンプ420が比較を遂行する。その後、オペアンプ420が1または0の出力を生成する。いくつかの実施形態では、現在のC3容量性電圧が平均電圧(例えばC4容量性電圧)より大きいときには、オペアンプ420が1を出力する。これに対して、現在のC3容量性電圧が平均電圧より小さいときには、オペアンプがその後0を出力する。
通常の技術を有する当業者は、バスマスタから送信されるコマンド等のメッセージにしたがって様々なコマンドを実施するために一連の1および0が(例えば8b/10b符号化スキームから)デコードされうることを理解するはずである。例えばデコードされるコマンドには、アップリンク中のデジタルマイクロホンのゲインのプログラミング、またはスレーブデバイスからバスマスタに0を伝送するときに引き出される電流量のセッティングを含みうるがこれに限定されない。
図5は、本開示と一致する受信器内でC2キャパシタの電圧がクロックパルストレインの様々なクロックパルス501、502の関数として変化する様子を表したグラフ500を示す。
注意すべきことには、各幅の広いクロックパルス501は1を表現する一方で、各幅の狭いパルス502は0を表現する。各幅の広いクロックパルス501は、立ち上がりエッジ501a、高状態501bおよび立ち下がりエッジ501cを含む。同様に、各幅の狭いパルス502は、立ち上がりエッジ502a、高状態502bおよび立ち下がりエッジ502cを含む。
ここで図4および図5を参照すると、クロック信号の立ち上がりエッジ(例えば図5の501aまたは502a)で、短いP1クロックパルスがトランジスタ416(図4)に印加され、トランジスタ416を通じてC2キャパシタ415を放電する。
加えて、P1パルスが収まり、クロック信号が高状態(501bまたは502b)でとどまると、レジスタ429を通じてC2キャパシタ415が充電される。あるいは、クロックサイクル(例えば501cまたは502c)の立ち下がりエッジで、短いP2クロックパルスがトランジスタ418に印加されて、C2キャパシタ415の電圧がC3キャパシタ417にサンプリングされる。
図5は、クロックパルストレインが幅の広いクロックパルス501から幅の狭いクロックパルス502へ変動する間などにC2キャパシタ415の電圧が変化する様子をさらに示す。図のように、時間0.0ではクロック信号は立ち上がりエッジ状態であり、したがってC2キャパシタ415の電圧はキャパシタが放電されるため0Vである。
しかし、クロック信号が高状態(501bまたは502b)に達すると、図の電圧上昇503a、504aにより示されるように、C2キャパシタ415はレジスタ429を通じて充電し始める。やがてクロック信号はその立ち下がりエッジ(501cまたは502c)に達し、C2キャパシタ415の電圧がC3キャパシタ417にコピーされる。
いくつかの実施形態では、C2キャパシタ415の電圧がC3キャパシタ417にサンプリングされるとき、両方のキャパシタの電圧はおよそ同じである。したがって、C2キャパシタ415の電圧の減少が、電圧低下503b、504bにより示される。図5に示すように、クロックサイクルが立ち上がりエッジ(503c、504c)から再び繰り返し、これによりC2キャパシタ415の放電が生じる。
図をさらに進むと、図6は、本開示に一致する回路を有する複数のデジタルマイクロホン650、660に結合されたバスマスタ600を示す。図のように、バスマスタ600は、二つのデジタルマイクロホン650、660とのデータ交換をサポートする回路を含む。通常の技術を有する当業者は、電気通信デバイス内の複数のデジタルマイクロホンがノイズ除去に有用でありうることを理解しうる。最も注意すべきことには、図6に示されるシステムは、バスマスタ600と二つのデジタルマイクロホン650、660との間に二ピン接続しか必要とされないように構成される。
示されるように、バスマスタ600は、二つの検出ユニット602、612を含む。検出ユニット602、612は、バスマスタ600がスレーブデジタルマイクロホン650、660からアップリンク中に受信するのが1か0かを検出する回路を集合的に提供する。いくつかの実施形態では、デジタルマイクロホン650、660は、そのデータをクロック信号のあるステージでバスマスタ600にアップリンクする。例えば、デジタルマイクロホン650、660の一方が、クロック信号の立ち上がりエッジでデータをアップリンクしうる一方で、他方のデジタルマイクロホンはクロックサイクルの立ち下がりエッジでデータをアップリンクしうる。
さらに、検出ユニット602、612内のクロック周波数は、バスインタフェースリンク620a、622aに沿った周波数よりはるかに高くなりうる。例えば、検出ユニット602、612内のクロック周波数は、バスインタフェース620a、622aに沿ったクロック周波数より最大およそ十倍大きければよい。
加えて、バスマスタ600は、デジタルマイクロホン650、660にアクセス可能でありうる二つの電源603、613をさらに含む。いくつかの実施形態では、デジタルマイクロホン650、660は、いずれかの電源603、613から電流を引き出すことで0ビット値を伝送し、いずれかの電源603、613から電流を引き出すことを控えることで1ビット値を伝送する。
最初に、バスマスタ600により水晶発振器、PLL、またはDLLから複数のクロック信号が受信されうる。これらのクロック信号およびデータに基づいて、バスマスタ600は、スレーブデバイスにバスマスタ600内のステートマシンを伝送しなければならず、入力接続部601に印加されるBUSCLK信号を生成しうる。
BUSCLK信号は符号化された幅の広いパルスおよび幅の狭いパルスを含めばよく、平均して等しい数の幅の広いパルスおよび幅の狭いパルスが所与の間隔で伝送される。いくつかの実施形態では、符号化は8b/10b符号化である。しかし、さらに別の実施形態では、符号化はDCフリー符号化である。生成されたクロック信号は、経路601aおよび601bを介してバスマスタ600の各サブユニットに伝搬されうる。
受信クロック信号は、経路601aおよび601bを介してバスマスタ600の各サブユニットに伝搬されうる。特に、クロック信号が経路601aに沿ってCMOSインバータ604に送信されうる一方で、クロック信号が経路601bに沿ってCMOSインバータ614に送信されうる。図のように、CMOSインバータ604、614は、電源603、613およびグランド接続606、616にそれぞれ結合される(Vss)。
いくつかの実施形態では、各CMOSインバータ604、614内には、PMOS(665、667)およびNMOS(666、668)トランジスタが含まれる。典型的には、CMOSインバータ604、614内のPMOSおよびNMOSトランジスタは、一方のトランジスタがオンのときに他方のトランジスタがオフであるように相補的である。
図6にさらに示されるように、PMOSトランジスタ665、667は電力サプライ603、613に結合され、電圧または電流がこれに印加されたときには電力が放出されてPAD605、615を充電する。あるいは、NMOSトランジスタ666、668はグランドに結合され、電圧または電流がこれに印加されたときにはPAD605、615がグランドに放電される。
例えば、バスマスタ600内のクロック信号が高のときには、PMOSトランジスタ667がPAD615を電力サプライ613に接続する一方で、クロック信号が低のときには、NMOSトランジスタ668がPAD615をグランドライン616に接続する。
加えて、バスマスタ600内のクロック信号が高のときには、PMOSトランジスタ665がPAD605を電力サプライ603に接続するようにインバータ607がクロック信号を反転しうる。あるいは、NMOSトランジスタ666がPAD605をグランドライン606に接続するように低のクロック信号が反転される。
したがって、本開示のいくつかの実施形態では、クロック信号の立ち上がりエッジでクロックデータ信号がデジタルマイクロホン650に伝送されうる一方で、クロックサイクルの立ち下がりエッジでクロックデータ信号がデジタルマイクロホン660に伝送されうる。したがって、CLKP信号が高のとき、CLKN信号は低である。
特に、アップリンク中にはBUSCLK信号の立ち上がりエッジでCLKPからCLKNへ、立ち下がりエッジでCLKNからCLKPへ電流が流れうる。さらに、BUSCLK信号の立ち上がりエッジ中にデジタルマイクロホン660内のトランジスタ(Vddに結合)が導通しうる一方で、BUSCLK信号の立ち下がりエッジ中にデジタルマイクロホン650内のトランジスタ(Vddに結合)が導通しうる。さらに、バスマスタ600のCLKPのサンプリング回路は早期のBUSCLKサイクル(例えばサイクル1)でサンプリングしうる一方で、CLKNのサンプリング回路は後期のBUSCLKサイクル(例えばサイクル8)でサンプリングしうる。
さらに、PAD605、615は、バスマスタ600およびバスマスタ600が配置された集積回路が外部デバイスに接続することを可能にする。PAD605、615は、バスインタフェースリンク620a、622aを介してデジタルマイクロホン650、660の内の各双方向通信ラインに接続されうる。
加えて、バスインタフェースリンク620aは、デジタルマイクロホン650内の双方向通信ライン655への経路620bに沿ってCLKPの入力を提供しうる。加えて、バスインタフェースリンク620aは、デジタルマイクロホン660内の双方向通信ライン658への経路620cに沿ってCLKNの入力を提供しうる。
加えて、バスインタフェースリンク622aは、デジタルマイクロホン660内の双方向通信ライン657への経路622bに沿ってCLKPの入力、および双方向通信ライン656への経路622cに沿ってCLKNの入力を提供しうる。
したがって、デジタルマイクロホン650、660は、クロックデータ信号が受信され、データ信号が伝送されることを可能にする双方向通信線655、666、667、668を含みうる。いくつかの実施形態では、双方向通信線655、666、667、668はダウンリンク中にクロック信号を受信し、アップリンク中にデータを伝送する。
アップリンク中には、デジタルマイクロホン650、660が、バスマスタ600の電源603、613から電流を引き出すことによりデータを伝送しうる。いくつかの実施形態では、検出ユニット602、612が、各デジタルマイクロホン650、660から電力が引き出されているかを検出する。例えば検出ユニット602、612は、電源603、613のインピーダンスの差を検出しうる。
本開示のいくつかの実施形態では、デジタルマイクロホン650、660がアップリンク中に0ビット値を伝送するときには、トランジスタ682、692がバスマスタ600の電力サプライ603、613からグランドライン625、635への導管を提供する。同様に、電力サプライ603、613からデジタルマイクロホン650、660に電流が引き出される間には、検出ユニット602、612が低インピーダンスを検出する。
これに対して、デジタルマイクロホン650、660がアップリンク中に1ビット値を伝送するときには、トランジスタ682、692が電力サプライ603、613からグランドライン625、635への電気的アクセスをブロックする。したがって、電流が引き出されていないときには、検出ユニット602、612が高インピーダンスを検出する。
したがって、本明細書に記載されるスレーブ受信器(例えばデジタルマイクロホン650、660)からマスタデバイス(例えばバスマスタ600)へデータをアップリンクするプロセスは、本開示のいくつかの実施形態によれば、インピーダンスまたは振幅シフトキーイングとして特徴付けられうる。加えて、本明細書に記載される様式でのバスマスタからスレーブ受信器へデータをダウンリンクするプロセスは、フェーズシフトキーイングとして特徴付けられうる。
いくつかの実施形態では、バスインタフェースリンク620a、622aは差動バスインタフェースであり、デジタルマイクロホン650、660は差動受信器である。いくつかの実施形態では、差動デジタルマイクロホン受信器650、660は、差動クロック信号の極性を自動的に検出しうる。
加えて、デジタルマイクロホン650、660は、CLKPが一方のデジタルマイクロホンの第一ピンに接続され、CLKNが他方のデジタルマイクロホンの第二ピンに接続されるように、それぞれ二つのピンを有する。したがって、二つのデジタルマイクロホン650、660は、各クロックサイクルの立ち上がりおよび立ち下がりエッジでデータ信号をそれぞれアップリンクしうる。
いくつかの実施形態では、クロック信号が高のときにそれぞれのデジタルマイクロホン650、660がデータをアップリンクしうる。しかし、デジタルマイクロホン650、660がデータを順にアップリンクするように、バスマスタ600のインバータ607がCMOSインバータ604にインバースバスクロック信号を提供する。
したがって、検出ユニット602は、反転クロック信号が高、すなわち低のバスクロック信号のときにデジタルマイクロホン650、660により何のデータが伝送されるかを決定しうる。あるいは、検出ユニット612は、バスマスタクロック信号が高のときにデジタルマイクロホン650、660により何のデータが伝送されるかを決定しうる。
いくつかの実施形態では、CLKNがデジタルマイクロホン内で最も正の電圧であるときには、(整流器623、633の)ダイオード624、634により電流がそれぞれのグランドライン623、633に流れることが妨げられうるため、Vssグランドライン625、635がオフになる。
当技術分野の通常の技術を有する当業者は、CLKNがデジタルマイクロホン650、660内で最も正の電圧であるときには、CLKPがデジタルマイクロホン内で最も負の電圧となることを理解するはずである。したがって、CLKNおよびCLKPが極性を変化させるため、「仮想グランド」がデジタルマイクロホンの一つのピンから他方のデジタルマイクロホンの他方のピンへと交互する。
したがって、CLKNがデジタルマイクロホン650、660内で最も正の電圧であるときには、CLKNはダイオード626、636を介してVddライン621、631に充電する。いくつかの実施形態では、各デジタルマイクロホン650、660は、マイクロホン650、660内の電圧を調整する電圧レギュレータ627、637を含む。
あるいは、CLKPがデジタルマイクロホン650、660内で最も正の電圧であるときには、CLKNが最も負の電圧となる。CLKPが、ダイオード681、691を介してVdd電力レール621、631にそれぞれ充電する。
CLKN電圧がグランドライン625、635の電圧より負である場合には、グランドライン625、635がそれぞれのデジタルマイクロホン650、660内で最も負の電圧を有するように、グランドライン625、635からCLKNに電流が流れうる。
したがって、整流器623、633は、最も正の電圧がVdd電力レール621、631に結合されるように構成される。整流器623、633は、最も負の電圧がVssグランドライン625、635に結合されるようにも構成される。したがって、Vdd電力レール621、631は常に最も正の電圧の高さになる一方で、Vssライン625、635は常に最も負の電圧の低さになる。
各双方向通信ラインは、デジタルマイクロホン650、660内のオペアンプ628、638の入力に結合される。本開示のいくつかの実施形態によれば、オペアンプ628、638はCLKPとCLKNの電圧を比較し、CLKPに関連付けられた電圧を出力する。さらにいくつかの実施形態では、各オペアンプ628、638は、オペアンプ628、638の出力629、639が理想的にVdd以下またはVss以上となるように、高いゲイン(例えば10k)を有する。
オペアンプ628、638は、本開示と一致する受信器685、686にその出力を伝送するように構成されうる。いくつかの実施形態では、受信器685、686は、図4に示される受信器400に一致する。
図7は、本開示と一致する受信器775に結合されたデジタルマイクロホン750の実施形態を示す。最も注意すべきことに、演算増幅器728の出力は、経路729を介してデジタルマイクロホン750の構成要素である受信器775に伝送される。
受信器775は、バスマスタにより伝送される幅の広いクロックパルスおよび幅の狭いクロックパルスを検出するように構成されうる。いくつかの実施形態では、受信器775は、幅の広いクロックパルスにつき1のビット値、幅の狭いパルスにつき0のビット値を出力する。その後、8b/10b符号化されていればよいビット値が後にデコードされて、バスマスタから伝送されたメッセージ(例えばシンボル)が決定される。例えば、デコードされたシンボルは、マイクロホン750内のゲインを増加または減少させるためにデジタルマイクロホン750にあるアクションを遂行させるコマンドを含みうる。
図8は、本開示と一致する方法800の実施形態を示す。方法800は、マスタデバイスとスレーブデバイスとの間にバスインタフェースリンクを形成するステップであり、マスタデバイスがスレーブデバイスにアクセス可能な電力サプライを含むステップを提供するブロック801から始めうる。マスタデバイスは、バスマスタを含みうる。スレーブデバイスは、デジタルマイクロホン、GPS受信器、Bluetooth(登録商標)コネクタ、SIMカードリーダを含めばよく、パーソナルコンピュータ、テレビジョン、トラックパッド、またはコンピュータマウス内に実装されうる。
次に、ブロック802にしたがい、マスタデバイスから複数のクロック信号を受信し、マスタデバイスと複数のデータ信号を交換するために、スレーブデバイスの双方向通信ライン(単数または複数)をバスインタフェースリンクに結合するステップ。本開示と一致する双方向通信ラインは、スレーブデバイスがマスタデバイスにデータ信号を伝送し返すことを可能にするのに加えて、スレーブデバイスがマスタデバイスからクロックデータ信号を受信することを可能にする。
さらに、ブロック803にしたがい、電力サプライから電流を引き出すことで0ビット値を送信し、電力サプライから電流を引き出すことを控えることで1ビット値を送信することにより、スレーブデバイスの双方向通信ラインに沿ってバスインタフェースリンクに沿ってマスタデバイスに少なくとも一つのデータ信号を伝送するステップ。
通常の技術を有する当業者は、本開示が前述したビット値の割り当てに限定されないことを理解しうる。例えば、本発明と一致するシステムは、電源から電流を引き出すことが1のビット値を示す一方で、電源から電流を引き出すことを控えることが0のビット値を示すように、マスタおよびスレーブデバイスを構成しうる。
次に、ブロック804により、スレーブデバイスから伝送されたのが1ビット値か0ビット値かを決定するためにクロック信号のあるステージで電力サプライのインピーダンス値をモニタするステップ。本開示のいくつかの実施形態では、インピーダンスまたは振幅シフトキーイング技術の使用が、スレーブデバイスにより伝送されるデータ信号を検出するために利用される。
以下の例は、さらなる実施形態に関係する。例の詳細は、一つ以上の実施形態のどこででも使用されうる。例えば、本明細書に記載される装置またはシステムの全ての任意の特徴は、本明細書に記載される方法またはプロセスについても実装されうる。
例1:電力サプライと;電力サプライのインピーダンスを検出する検出ユニットと;クロック信号の第一ステージで電力サプライへの第一経路を提供し、クロック信号の第二ステージで第一グランドラインへの第二経路を提供する、インバータと;を含むマスタデバイスと、該マスタデバイスをスレーブデバイスに結合するバスインタフェースリンクとを含む、システム。さらに、該スレーブデバイスは、該バスインタフェースリンクを通じて該マスタデバイスから複数の幅の狭いクロックパルスおよび幅の広いクロックパルスを受信する双方向通信ラインと;該電力サプライへの該第一経路から該双方向通信ラインを通って第二グランドラインへの導電性経路を提供するゲーティング構成要素と;該マスタデバイスから伝送される複数の幅の狭いクロックパルスおよび幅の広いクロックパルスに関連付けられたビット値を割り当てる受信器とを含む。
例2:該マスタデバイスには、バスマスタが含まれる。
例3:該スレーブデバイスには、デジタルマイクロホンが含まれる。
例4:該インバータには、CMOSインバータが含まれる。
例5:該マスタデバイスには、バスクロックがさらに含まれる。
例6:該ゲーティング構成要素には、トランジスタが含まれる。
例7:該検出ユニットは、該電力サプライのインピーダンスの変化を検出しうる。
例8:該双方向通信ラインは、該複数の幅の狭いクロックパルスおよび幅の広いクロックパルスならびに該電力サプライからの電流を同時に伝搬しうる。
例9:該割り当てられたビット値の一部分は、スレーブデバイスへのコマンドである。
例10:グランドラインと電力レールとに結合されるように結合された整流器であり、負のクロック電圧が該整流器に結合されたときに該グランドラインが放電することを可能にし、正のクロック電圧が該整流器に結合されたときに該電力レールが充電することを可能にする、整流器と;クロックデータ信号に応答してデータを伝送する双方向通信ラインのセットとを含む、デバイス。
例11:グランドラインと電力レールとをさらに含む、該デバイス。
例12:該双方向通信ラインのセットの少なくとも一つが、電力サプライのインピーダンスを変化させることを引き出すことによりデータをアップリンクする。
例13:該双方向通信ラインのセットの少なくとも一つが、電力サプライのインピーダンスを変化させることを控えることによりデータをアップリンクする。
例14:各受信クロックデータ信号にビット値を割り当てる受信器。
例15:該整流器が、バスインタフェースリンクに結合される。
例16:該双方向通信ラインのセットは、該スレーブデバイス内で電源からグランドラインへの経路を提供しうるゲーティングエレメントに結合される。
例17:第一電力サプライの第一インピーダンスを検出する第一検出ユニットと;クロック信号の第一ステージで該第一電力サプライへの第一経路を提供し、クロック信号の第二ステージで第一グランドラインへの第二経路を提供する、第一インバータと;第二電力サプライの第二インピーダンスを検出する第二検出ユニットと;該クロック信号の該第二ステージで該第二電力サプライへの第三経路を提供し、該クロック信号の該第一ステージで第二グランドラインへの第四経路を提供する、第二インバータと;該第一インバータに入力されたクロック信号を反転するために該第一インバータに結合された第三インバータとを含む、デバイス。
例18:マスタクロックを含む前述のデバイス。
例19:該第一インバータおよび該第二インバータが、それぞれ相補的なトランジスタのセットを含む。
例20:二つのスレーブデバイスにクロックデータ信号を伝送するための第一電気的接続および第二電気的接続。
例21:クロックデータ信号を生成するクロック。
例22:受信器、アンテナ、またはエンコーダの少なくとも一つをさらに含む、該デバイス。
例23:マスタデバイスとスレーブデバイスとの間にバスインタフェースリンクを形成するステップであり、該マスタデバイスが、該スレーブデバイスにアクセス可能である電力サプライを含むステップと;該スレーブデバイスの双方向通信ラインを該バスインタフェースリンクに結合するステップと;該バスインタフェースリンクおよび該双方向通信ラインを通じて該マスタデバイスから該スレーブデバイスに複数のクロックデータ信号をダウンリンクするステップと;該電力サプライから電流を引き出すことで第一ビット値を送信し、該電力サプライから電流を引き出すことを控えることで第二ビット値を送信することにより、該スレーブデバイスの該双方向通信ラインに沿って該バスインタフェースリンクに沿って該マスタデバイスに少なくとも一つのデータ信号をアップリンクするステップとを含む方法。
例24:該スレーブデバイスから伝送されたのが該第一ビット値か該第二ビット値かを決定するために該電力サプライのインピーダンス値をモニタするステップ。
例25:クロック信号の立ち下がりエッジで該電力サプライのインピーダンス値をモニタするステップ。
該マスタデバイス内のクロック周波数から該バスインタフェースリンクに沿ったクロック周波数を小さくし、各クロックパルスの所望の幅に対応するクロックサイクル期間にわたり該バスインタフェースリンクに沿ってクロック電圧を高にセットすることにより、変動幅を有する複数のクロックパルスを生成するステップ。
該スレーブデバイスが、クロック信号の立ち上がりエッジで該マスタデバイスから電流を引き出すことにより該少なくとも一つのデータ信号を伝送する。
該マスタデバイスはバスマスタを含み、該スレーブデバイスはデジタルマイクロホンを含む。
該複数のクロックデータ信号を8b/10符号化プロトコルにしたがって符号化するステップ。
該スレーブデバイスは、トランジスタが電力サプライとグランドラインとの間に導電性経路を提供するように該電力サプライと該グランドラインとの間に結合された該トランジスタに閾値電圧を印加することにより、該電力サプライから電流を引き出す。
配線に結合されるように構成された集積回路(IC)であり、該ICは、該配線との間で情報を伝送および受信する入力/出力(I/O)論理を含み、該配線に情報を伝送する該I/O論理が、第一データ論理レベルを表現する第一デューティサイクルを有する第一クロック信号を伝送し、第二データ論理レベルを表現する第二デューティサイクルを有する第二クロック信号を伝送し、該第二デューティサイクルは該第一デューティサイクルと異なる、該I/O論理を含む、該ICを含むデバイス。
該配線に情報を伝送する該I/O論理は、8b10b符号化データを提供するI/O論理をさらに含み、該8b10b符号化データは、該第一デューティサイクルを有する該第一クロック信号と該第二デューティサイクルを有する該第二クロック信号とを含む。
該ICは、該配線を通じて受信器デバイスに結合され、該受信器デバイスは、該配線から該第一クロック信号および該第二クロック信号を受信し、該第一デューティサイクルに基づいて該第一クロック信号が該第一データ論理レベルを表現することを決定し、該第二デューティサイクルに基づいて該第二クロック信号が該第二データ論理レベルを表現することを決定する、受信器I/O論理を含む。
該受信器デバイスは、第一マイクロホンを含み、該ICは、第二配線を通じて第二マイクロホンに結合する第二I/O論理をさらに含み、該第二I/O論理は、データを表現するために該第二配線で該第二マイクロホンに伝送されるクロック信号のデューティサイクルを変動させる。
本発明を限定数の実施形態に関して記載しているが、当業者はその多数の修正および変更形態を理解するだろう。添付の請求項は、本発明の真の精神および範囲内の全てのそのような修正および変更形態を包摂することを企図する。
デザインは、創生からシミュレーションから作製まで様々なステージを経うる。デザインを表現するデータは、いくつかの様式でデザインを表現しうる。第一に、シミュレーションにおいて有用であるように、ハードウェア記述言語または別の機能記述言語を使用してハードウェアが表現されうる。加えて、論理および/またはトランジスタゲートを有する回路レベルのモデルが、デザインプロセスのいくつかのステージで生産されうる。さらに、ほとんどのデザインは、あるステージで、ハードウェアモデル内の様々なデバイスの物理的配置を表現するデータのレベルに達する。従来の半導体製造技術が使用される場合には、ハードウェアモデルを表現するデータは、集積回路を生産するために使用されるマスクの異なるマスク層上の様々な特徴の有無を特定したデータでありうる。デザインのいずれの表現においても、データは、任意の形の機械可読媒体に格納されうる。メモリまたはディスク等の磁気または光ストレージが、情報を伝送するために変調または他の方法で生成された光波または電波を介して伝送されるそのような情報を格納する機械可読媒体であればよい。コードまたはデザインを示しまたは伝える電気搬送波が伝送されると、電気信号のコピー、バッファ、または再送が遂行される範囲で新たなコピーが作られる。したがって、本発明の実施形態の技術を具体化して、通信プロバイダまたはネットワークプロバイダは、有形の機械可読媒体に少なくとも一時的に、搬送波に符号化された情報等の物品を格納しうる。
本明細書で使用されるところのモジュールとは、ハードウェア、ソフトウェア、および/またはファームウェアの任意の組み合わせをいう。例えば、モジュールは、マイクロコントローラにより実行されるように適合されたコードを格納する非一時的媒体に関連付けられたマイクロコントローラ等のハードウェアを含む。したがって、モジュールへの言及は、一実施形態では、非一時的媒体に保持されるコードを認識および/または実行するように特に構成されたハードウェアをいう。さらに、別の実施形態では、モジュールの使用は、所定の動作を遂行するためにマイクロコントローラにより実行されるように特に適合されたコードを含む非一時的媒体をいう。また、推定されうるように、さらに別の実施形態では、(本例での)モジュールという用語は、マイクロコントローラと非一時的媒体との組み合わせをさしうる。分離したものとして示されるモジュール境界は、一般に変動し、潜在的に重なり合うことが多い。例えば、第一および第二モジュールがハードウェア、ソフトウェア、ファームウェア、またはその組み合わせを共有するとともに、潜在的にいくつかの独立のハードウェア、ソフトウェア、またはファームウェアを保持しうる。一実施形態では、論理という用語の使用には、トランジスタ、レジスタ、またはプログラマブルロジックデバイス等のその他のハードウェア等のハードウェアが含まれる。
「ための」または「ように構成された」というフレーズの使用は、一実施形態では、指定または決定されたタスクを遂行するように装置、ハードウェア、論理、またはエレメントを設置、組み立て、製造、販売提供、輸入および/またはデザインすることをいう。この例では、動作していない装置またはそのエレメントも、指定されたタスクを遂行するようにデザイン、結合、および/またはインタコネクトされている場合には、その指定されたタスクを遂行する「ように構成された」ものである。純粋に例示として、論理ゲートは、動作中に0または1を提供しうる。しかし、クロックにイネーブル信号を提供する「ように構成された」論理ゲートは、1または0を提供しうる全ての潜在的論理ゲートを含むものではない。そうではなく、論理ゲートは、動作中に1または0の出力がクロックをイネーブルにする何らかの様式で結合されたものである。「ように構成された」という用語の使用は動作を必要とせず、代わりに装置、ハードウェア、および/またはエレメントの潜在的状態に着目し、この潜在的状態においては、該装置、ハードウェア、および/またはエレメントが動作しているときに特定のタスクを遂行するように該装置、ハードウェア、および/またはエレメントがデザインされていることにもう一度注意されたい。
さらに、「の/する能力がある」およびまたは「ために動作可能」というフレーズの使用は、一実施形態では、装置、論理、ハードウェア、および/またはエレメントの特定された様式での使用を可能にするような方法でデザインされた何らかの装置、論理、ハードウェア、および/またはエレメントをさす。上述のように、ための、する能力がある、またはために動作可能の使用は、一実施形態では、装置、論理、ハードウェア、および/またはエレメントの潜在的状態をさし、この潜在的状態においては、該装置、論理、ハードウェア、および/またはエレメントが動作していないが、装置の特定された様式での使用を可能にするような様式でデザインされていることに注意されたい。
本明細書で用いられるところの値は、数、状態、論理的状態、またはバイナリ論理的状態の任意の周知の表現を含む。論理レベル、論理値、または論理的値の使用は、1および0とも呼称されることが多く、これは単純にバイナリ論理状態を表現する。例えば、1は高論理レベルをさし、0は低論理レベルをさす。一実施形態では、トランジスタまたはフラッシュセル等のストレージセルは、単一の論理的値または複数の論理的値を保持する能力がありうる。しかし、コンピュータシステムにおける他の値の表現が使用されている。例えば、十進数10は、二進値1010および十六進文字Aでも表現されうる。したがって、値には、コンピュータシステム内に保持される能力がある情報の任意の表現が含まれる。
さらに、状態は、値または値の部分により表現されうる。一例として、論理的1等の第一値が、デフォルトまたは初期状態を表現しうる一方で、論理的0等の第二値は、非デフォルト状態を表現しうる。加えて、リセットおよびセットという用語は、一実施形態では、それぞれデフォルトおよび更新された値または状態をさす。例えば、デフォルト値は潜在的に高の論理的値、すなわちリセットを含む一方で、更新値は潜在的に低の論理的値、すなわちセットを含む。任意の数の状態を表現するために値の任意の組み合わせが利用されうることに注意されたい。
上記の方法、ハードウェア、ソフトウェア、ファームウェアまたはコードの実施形態は、処理エレメントにより実行可能な、機械アクセス可能な、機械可読な、コンピュータアクセス可能な、またはコンピュータ可読な媒体に格納された命令またはコードを介して実装されうる。非一時的機械アクセス可能/可読媒体には、コンピュータまたは電子システム等の機械により可読な形の情報を提供(すなわち格納および/または伝送)する任意の機構が含まれる。例えば、非一時的機械アクセス可能媒体には、スタティックRAM(SRAM)またはダイナミックRAM(DRAM)等のランダムアクセスメモリ(RAM);ROM;磁気または光ストレージ媒体;フラッシュメモリデバイス;電気ストレージデバイス;光ストレージデバイス;音響ストレージデバイス;一時的(伝搬)信号(例えば搬送波、赤外線信号、デジタル信号)から受信された情報を保持するための他の形のストレージデバイス;などが含まれ、これらはここから情報を受信しうる非一時的媒体と区別されるべきものである。
本発明の実施形態を遂行する論理をプログラムするために使用される命令が、DRAM、キャッシュ、フラッシュメモリ、または他のストレージ等のシステムのメモリに格納されうる。さらに、ネットワークを介して、または他のコンピュータ可読媒体を経由して命令が配信されうる。したがって、機械可読媒体は、機械(例えばコンピュータ)により可読な形の情報を格納または伝送するための任意の機構を含みうるが、電気、光、音響、またはその他の形の伝搬信号(例えば搬送波、赤外線信号、デジタル信号など)を介したインターネットを通じた情報の伝送に使用されるフロッピー(登録商標)ディスケット、光ディスク、コンパクトディスク、リードオンリーメモリ(CD−ROM)、および光磁気ディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラム可能リードオンリーメモリ(EPROM)、電気的消去可能プログラム可能リードオンリーメモリ(EEPROM)、磁気もしくは光カード、フラッシュメモリ、または有形の機械可読ストレージに限定されない。したがって、コンピュータ可読媒体には、機械(例えばコンピュータ)により可読な形の電子的命令または情報を格納または伝送することに適した任意のタイプの有形の機械可読媒体が含まれる。
本明細書の全体での「一実施形態」または「ある実施形態」への言及は、実施形態と関連して記載された特定の特徴、構造、または特性が、本発明の少なくとも一つの実施形態に含まれることを意味する。したがって、本明細書の全体の様々な箇所での「一実施形態では」または「ある実施形態では」というフレーズの使用は、必ずしも全てが同じ実施形態をさすわけではない。さらに、一つ以上の実施形態において、特定の特徴、構造、または特性が任意の適切な方法で組み合わせられてもよい。
以上の明細書においては、具体的な例示的実施形態に関して詳細な説明が与えられている。しかし、添付の特許請求の範囲に記載される本発明のより広い精神および範囲から逸脱することなく、様々な修正および変化が加えられうることは明らかである。したがって、本明細書および図面は、制限の意味ではなく例示の意味で捉えられなければならない。さらに、前述の実施形態およびその他の例での言葉の使用は、必ずしも同じ実施形態または同じ例をさすものではなく、潜在的に同じ実施形態をさしうるだけでなく、異なる別個の実施形態もさしうる。