図1は、入出力送信機の自動的な同期化によるシステム100の例示的な実施の形態を示す図である。システム100は、データリンク111のようなリンクを介して、リモート装置120のような別の電子装置に通信可能に結合される電子装置102を含む。電子装置104は、例えば送信装置106を使用してデータソース104からリモート装置120にデータを送信するように構成される。送信装置106は、データを入力及び/又は出力するために自動的な同期化を含む。
送信装置106の例示的な実施の形態が示されているが、送信装置106は、より多くのコンポーネント又はより少ないコンポーネントを含む場合がある。さらに、様々な実施の形態では、送信装置106は、単一の装置として実現されない場合がある。係る実施の形態では、様々な送信装置106の部分は、電子装置102の異なる部分にある場合がある。
送信装置106は、データリンク111を通してデータソース104からデータを送出する適切なメカニズムを含む。送信装置106は、データリンク111よりも広い幅をもつ内部バスを通してデータソース104からデータを受信する。送信装置106は、データソース104からのデータが受信されるレートに整合するために十分なレートで、データリンク111を通してデータソース104からのデータを送出するように構成される。1実施の形態では、送信装置106は、データソース104からのデータの一部を変換するように構成されるシリアライザ110を含む。データソース104は、シリアライザ110に供給される多数の入力ビットを供給し、シリアライザは、入力ビットをシリーズに直列化する。シリアライザ110は、任意の適切なコンポーネント、チップ、回路、又は他のメカニズムにより実現される。シリアライザ110は、データリンク111を通して直列にデータソース104から受信されたデータを送出するように構成される。データがデータリンク111を通して送信されるレートは、例えば受信されたデータ量、直列化されたユニットのサイズ、データソース104からのデータを伝送するバスの幅、又はデータソース104からの係るデータが送信装置106に到達するレートに依存する。シリアライザ110は、データリンク111を通して情報を伝送するためのキューのような、ファーストイン・ファーストアウト(FIFO)データ構造を使用するように構成される。シリアライザ110は、所定の幅nのデータを受信する。シリアライザ110は、所定の幅mの直列化されたデータを伝送するように構成される。1実施の形態では、mの長さは、1ビットである場合がある。送信された直列化されたデータのレートは、n/mの割合、シリアライザ110及びI/Oクロック116により使用されるクロック速度に依存する。
電子装置102は、シリアライザ110及びデータリンク111に結合される送信ドライバ112を含む。シリアライザ110は、送信ドライバ112を通して情報が直列化された後に、情報を通過させるように構成される。送信ドライバ112は、シリアライザ110から受信されたときに、データをデータリンク111を通して送信される形式に変換するように構成される。係る形式は、物理的な信号を含む。
送信ドライバ112は、I/Oクロック信号116を使用して、データリンク111を通した情報の送信を計時する。係るI/Oクロック信号116は、データクロック118のような到来するデータの到達、又はデータがシリアライザ110に入力されるために到達する頻度を計時するために使用されるクロック信号に関連する。シリアライザ110は、シリアライザ110に入力される結果として到達するデータ自身のようなデータ信号、I/Oクロック112又はデータクロック112を使用して、入力データから直列化されたデータの生成、係る直列化されたデータの送信を計時するように構成される。
電子装置は、シンクロナイザ114を含む。1実施の形態では、シリアライザは、シンクロナイザ114を使用して、直列化されたデータの生成及び係る直列化されたデータの送信を計時するように構成される。シンクロナイザ114は、任意の適切なコンポーネント、チップ、回路、又は他のメカニズムにより実現される場合がある。シンクロナイザ114は、I/Oクロック116及び/又はシリアライザ110により使用されるクロックの入力、シリアライザ110及び/又はデータクロック118への入力データの入力を受信するように構成される。1実施の形態では、シンクロナイザ114は、I/Oクロック及びインクロナイザ110への入力データに基づいて、シリアライザ110のコンフィギュレーション情報を決定するように構成される。係るこのフィギュレーション情報は、データソース104及びI/Oクロック116からの到来するデータのクロックタイミングを同期化するための、シリアライザ110の命令を含む。係る命令は、生成されたコードを含む。シリアライザ110は、係る命令を使用して、データの出力をデータソース104からのデータの直列化と良好に同期を取る場合がある。例えば、シリアライザ110は、生成されたコードを使用して、その使用するI/Oクロック116の位相をシリアライザ110への入力データと同期を取るように構成される。
1実施の形態では、シンクロナイザ114は、I/Oクロック116の位相とシリアライザ110への入力データの位相との整合に基づいて、シリアライザ110のコンフィギュレーション情報を提供するように構成される。
シリアライザ110及びシンクロナイザ114の例示的な実施の形態が示されているが、シリアライザ110及び/又はシンクロナイザ114は、より多くのコンポーネントを含むか又はより少ないコンポーネントを含む場合がある。さらに、様々な実施の形態では、シリアライザ110及び/又はシンクロナイザ114は、単一の装置として実現されない場合がある。係る実施の形態では、シリアライザ110及び/又はシンクロナイザ114の様々な部分は、電子装置102の異なる部分にある場合がある。
動作において、電子装置102は、データリンク111を通して、データソース104からリモート装置120にデータを送出する。データソース104からのデータは、特定のレートで到達する。係るレートは、データクロック118により与えられるか、又はシリアライザ110に入力されるデータのレートにより与えられる場合がある。係るデータのレートは、シリアライザ110への入力を含めて、データ信号に含まれる。データは、シリアライザ110に供給され、このシリアライザは、データを小さな部分に分割し、係る小さな部分をI/Oクロック116により決定されたレートでデータリンク111を通して送出する。1実施の形態では、データは、シンクロナイザ114に供給され、シンクロナイザは、データがシリアライザ110に入力するときに、データの位相を決定する。シリアライザ110は、データを例えば物理的信号に変換するため、送信ドライバ112にアクセスすることで、データリンク111を通してデータを送出する。シリアライザ110は、シリアライザ110がデータを直列化するときに、データの位相を調節する。シリアライザ110は、シンクロナイザ114により提供される生成されたコードのような命令を使用して、係る位相の調節を行う。
シンクロナイザ114は、シンクロナイザ110と並行して動作する。シンクロナイザ114は、シリアライザ110への入力データに関する情報及びシリアライザ110の分周されたクロックの結果を使用して、係る信号のそれぞれの位相を評価する。シンクロナイザは、I/Oクロック116を分周する位相をどのように調節するかに関して、シリアライザ110に指示するコードのような命令を生成する。
図2は、図1の送信装置106のような、送信装置の一部の例示的な実施の形態の更に詳細な図である。シンクロナイザ206、シリアライザ202、データクロック208、I/Oクロック226、及び送信ドライバ204は、図1のシンクロナイザ114、シリアライザ106、データクロック118、I/Oクロック116及び送信ドライバ112をそれぞれ実現する。
シリアライザ202は、図1のシリアライザ110を実現する。シリアライザ202は、1以上のマルチプレクサ(MUX)212を含む。MUX212は、所定の幅のデータ入力を受け、入力セレクタに依存して、データ入力のうちの選択された1以上を出力する。出力は、所定の幅からなる場合がある。出力は、クロック信号の受信に応じて選択される(おそらく変化される)場合がある。一連のMUX212は、データの構造を小さな部分に直列化するように構成される。シリアライザ110において使用されるMUX212の数は、シリアライザ110への入力データのサイズ及びシリアライザ110の出力データのサイズに依存する。1実施の形態では、1ビットの幅に直列化されるようにNビットの入力が与えられると、MUX212のそれぞれは、入力を半分に分割するように構成され、必要とされるMUXの数は、k = log2(N)として与えられる。例えば、シリアライザ110が16ビットの入力を受け、1ビットの入力を送信するように構成される場合、シリアライザ110は、(k = log2(16) = 4)MUX212を含む。図2の例では、シリアライザ110は、2ビットを1ビットに多重化するように構成されるMUX212a、4ビットを2ビットに多重化するように構成されるMUX212b、NビットをN/2ビットに多重化するように構成されるMUX212kを含む。
それぞれのMUX212は、クロック信号に通信可能に結合される。それぞれのMUX212について使用されるクロック信号は、MUX212の特定の直列化の機能に依存する。I/Oクロック226は、データソース210から到達するデータの量に等しいレートで、送信ドライバ204を通して直列化されたデータを出力するために十分な特定の周波数で動作する。
データソース210は、内部データバスにより実現されるか、又はデータリンクを通して転送されるようにシリアライザ202にデータを供給する他の適切なメカニズムにより実現される。シリアライザ202への到来するデータは、所定のサイズNからなる。係るNサイズのデータの塊は、データクロック208により決定されるレートでデータソース210から到来する場合がある。データクロック208及び/又はI/Oクロック226の周波数は、必ずしも等しくはないが、シリアライザ202に到達するデータの全体の量がシリアライザ202により送信されるデータの全体の量に等しいように、同期される。シリアライザ202が、データソース210からのNサイズの到来データを小さなMサイズの部分に分割するように構成される場合、I/Oクロック226の周波数は、データクロック208の周波数の量N/Mの倍数である。
図2の例では、シリアライザ202が16ビットの入力を1ビットの出力に直列化するように構成されている場合、I/Oクロック226の周波数は、データクロック208の周波数の16倍である。
従って、それぞれMUX212は、ずっと小さなビットを半分に多重化するとき、前のMUXの2倍の周波数で動作する必要がある。従って、シリアライザ202は、それぞれのMUX212について適切なクロック信号を提供するため、1以上の分周器モジュール214を含む。1実施の形態では、シリアライザ202は、それぞれのMUX212kについて分周器モジュール214kを含む。分周器モジュール214は、1以上のMUX212についてクロック信号を供給する回路、コンポーネント又は他の適切なメカニズムを含む。それぞれの分周器モジュール214は、所与のクロック信号を取得し、周波数を分周し、結果として得られたクロック信号を1以上のMUX212に出力するように構成される。図2の例では、分周器モジュール214は、所与のI/Oクロック226で開始して、受信したクロック信号を半分に分周し、結果として得られたクロック信号を対応するMUX212に供給する。従って、全ての分周器モジュール214が(A)で動作した後に、結果として得られたクロック信号の周波数は、データクロック208の周波数に等しいか、又はシリアライザ202に入力されるデータソース210からのデータが到達する周波数に等しい。
シリアライザ202は、MUX212に供給されるクロック信号の位相を、データがシリアライザ202に到達する周波数に関連する位相と同期させることに関して、シンクロナイザ206から命令を受けるように構成される。係る周波数は、データクロック208のレートに等価である。係る命令は、それぞれの係る分周器モジュール214の位相を調節するため、それぞれの分周器モジュール214に適用される。それぞれの係る分周器モジュール214は、コード入力230のような係る命令の入力を含む。係る命令は、生成されたコードで実現される。1実施の形態では、係るコードは、シリアライザ202で使用される分周器モジュール214の数に等しい、長さkのストリンクで実現される。係るストリングのそれぞれのエレメントは、モジュールに結果として得られるクロック信号と共に含まれる位相に関して指示する、所与の分周器モジュール214kの情報を含む。1実施の形態では、係るストリングは、所与の分周器モジュール214kが0°又は180°の付加された位相をもつクロック信号を生成するかを示す、ビットストリングにより実現される。図2の例では、シリアライザ202は、kサイズの生成されたビットコードを分割するスプリッタ224を含み、ビット0は、分周器モジュール214aに供給され、ビット0は、分周器モジュール214bに供給され、ビット(k−1)は、分周器モジュール214kに供給される。
シンクロナイザ206は、何れか適切なメカニズムにより、MUX212による使用のために分周器モジュール214により生成されるクロック信号の位相を調節するシリアライザ202の命令を決定する。シンクロナイザ206は、係るクロック信号の位相を調節する係る命令を決定して、シリアライザ210への入力データの位相を整合させる。シンクロナイザ206は、シリアライザ202の動作と並行して係る命令を決定するように構成される。シンクロナイザ206は、所与の分周器モジュール214が0°又は180°の付加された位相をもつ結果として得られるクロック信号を生成し、従って命令を生成するかを判定するように構成される。
1実施の形態では、シンクロナイザ206は、I/Oクロックが(A)に落とされたとき、シリアライザ202への入力データの位相をI/Oクロック226の位相と整合させる遅延ロックループを実現するように構成される。シンクロナイザ206は、I/Oクロック226が分周器モジュール214により低減された後、シリアライザ202への入力データ及び結果として得られるクロック信号の示唆に通信可能に結合される位相検出器216を含む。入力データの係る示唆は、例えば、シンクロナイザ206に入力データの全部又は一部をダイレクトに送ること、データソース210からのデータのシリアライザ210への到達をモニタすること、又はデータクロック208をモニタすることで提供される。位相検出器216は、何れかの適切なメカニズムにより実現される。位相検出器216は、(A)でのシリアライザ202への入力データの位相及び分周されたクロック信号の位相を検出するように構成される。
シンクロナイザ206は、コードジェネレータ220に通信可能に結合される。位相検出器216は、フィルタ218に通信可能に結合される。フィルタ218は、位相検出器216の出力をフィルタリングし、コードジェネレータ220による使用のための情報を正規化する。
コードジェネレータ220は、シリアライザ202の命令を生成するように構成される。コードジェネレータ220は、チップ、回路、又は他の適切なメカニズムにより実現される。コードジェネレータ220は、前に決定された位相オフセット値に対して、位相検出器216により検出された位相オフセットを比較するように構成される。1実施の形態では、コードジェネレータ220は、ポイント(A)で生成されたコードとポイント(A)で得られた位相との間の関係に関する情報を含む。コードジェネレータ220は、生成されたコードをシンクロナイザ202に送出し、分周されたクロック信号の位相を進めるか又は遅らせる。コードジェネレータ220は、位相オフセットが最小化されるまで、係る動作を繰り返すように構成される。それぞれの係る繰返しの間、位相検出器216は、コードジェネレータ220により生成された命令が影響を及ぼした後、安定信号に応じてその計算を行う。従って、コードジェネレータ222は、ディザリングに応じて制御コードをフリーズするように構成されるロック検出回路222に結合される。
例えばコードジェネレータ220は、(A)で分周されたクロック信号を生成するため、予め決定されたコードが使用されたと想定している。係る予め決定されたコードは、“0000”である場合がある。コードジェネレータ220は、分周されたクロック信号の位相を進めるか又は遅らさせる傾向がある第二のコードを送出する。コードジェネレータ220は、分周されたクロック信号における増加又は減少された結果として生じる位相の順序において、コードのリストを含む。第二のコードが位相を増加することが意図された場合、コードジェネレータ220は、結果として生じるオフセットが小さいか又は大きいかを判定する。オフセットが小さい場合、コードジェネレータ220は、位相を増加することが意図される第三のコードを発生する。オフセットが大きい場合、コードジェネレータ220は、位相を減少することが意図される第三のコードを発生する。コードジェネレータは、係るステップを繰り返し、位相を増加又は減少するための前の判定が小さな位相オフセットを生じる場合には、係る判定が繰り返されるが、係る判定が大きな位相オフセットを生じる場合には、係る前の増加又は減少が逆にされる。
動作において、データクロック208により決定されるレートで、データソース210からシリアライザ202にデータが到達する。データは、データクロック208により指定されたレートでシリアライザ202に入力する場合がある。シリアライザ202は、一連のMUX212を通して、データを通過させることで係るデータを直列化する。それぞれのMUX212は、受信したデータを2つの部分に多重化する。それぞれのMUX212は、等しい時間量について2つの部分を多重化する。それぞれのMUX212の速度は、対応する分周器モジュール214により決定される。シリアライザ202は、結果として生じる多重化データが例えば1ビット幅となるまで、一連のMUX212を通してデータを通過させる。係る多重化の終わりにあるデータは、2^kに等しいクロックレートで送信される(MUX212の数)。係るレートは、I/Oクロック226の周波数に等しいか又は近似的に等しい。結果として生じるデータは、送信ドライバ204に送出される。
シリアライザ202は、それぞれ分周モジュール214の周波数及び位相を決定する。シリアライザ202は、分周器モジュール214を通してI/Oクロック226の信号を通過させることで、I/Oクロック226の周波数を落とす。それぞれの係る分周器モジュール230は、受信されたクロック信号の周波数を半分にする。それぞれの分周器モジュール214は、シンクロナイザ206から受信された命令に従って、結果として生じるクロック信号の位相を設定する。1実施の形態では、それぞれの分周器モジュール214は、0°又は180°の付加された位相をもつクロック信号を生成するかを示すコードビットをスプリッタ224から受信する。結果として生じるクロック信号は、MUX212、別の分周器モジュール214、又はシンクロナイザ206に供給される。最後の分周モジュール214kは、(A)により表されるその分周されたクロック信号をシンクロナイザ206に出力する。
1実施の形態では、コードビットは、コードジェネレータ220から唯一の分周器モジュール214に供給される。従って、結果として生じる分周されたクロック信号の位相は、分周器モジュール214のチェインにおいて一度だけ調節される。更なる実施の形態では、コードビットは、分周器モジュール214aに供給される。
シンクロナイザ206は、シリアライザ202と並行して動作する。シンクロナイザ206は、シリアライザ202に入力されるべきデータの到達に関する情報、I/Oクロック226から生じる分周されたクロック情報を受信する。位相検出器216は、2つの信号の位相を比較し、差を確定する。係る差は、フィルタ218を通してフィルタリングされ、コードジェネレータ220に送出される。コードジェネレータ220は、前に決定された差に対して、検出された位相における差を分析する。コードジェネレータ220は、シリアライザ202のマルチプレクサにより使用されるクロック信号の位相を変えるため、シリアライザ202に送出されるべき新たなセットの命令又は生成されたコードを生成する。ロック検出回路222は、前に生成されたコードの結果が係る結果を評価するために位相検出器216について十分に確定するまで、シンクロナイザの実行のループを保持する。
図3は、分周器モジュール300の例示的な実施の形態を示す図である。分周器モジュール300は、図2の分周器モジュール214を実現する。分周器モジュール300は、入力クロック信号306を受け、結果として生じるクロック出力314を提供するように構成される。係るクロック出力314は、図2の対応するMUX、及び/又は次の分周器モジュール、及び/又は位相検出器に供給される。分周器モジュール300は、クロック出力314に関連される位相に関して分周器モジュール300に指示する、位相セレクタ入力318を受けるように構成される。図3の例では、位相セレクタ入力318は、結果として付加された位相が0°であるか又は180°であるかを示すビット(0/1)である。
分周器モジュール300は、入力クロック信号306及びMUX304に結合される分周器302を含む。MUX304は、位相セレクタ入力318及びクロック入力314に結合される。分周器302及びMUX304は、回路、モジュール、チップ又は何れか他のメカニズムにより実現される。
分周器302は、クロック信号を分周するように構成される。図3の例では、分周器302は、クロック信号の周波数を半分に割るように構成される。分周器302は、1以上の定義された位相をもつ結果として生じるクロック信号を生成するように構成される。例えば、分周器302は、付加された0°の位相をもつ結果として生じるクロック信号308と、付加された180°の位相をもつ結果として生じるクロック信号310を生成するように構成される。両方の結果として生じるクロック信号308,310は、MUX304に出力される。
MUX304は、入力ビットに基づいて、その入力(0°の位相をもつ結果として生じるクロック信号308、付加された180°の位相をもつ結果として生じるクロック信号310)の何れかを出力するように構成される。係る入力ビットは、位相セレクタ入力318に結合される。例えば、位相セレクタ入力318が“0”である場合、MUX304は、0°の位相を持つクロック信号308を出力するように構成される。位相セレクタ入力318が“1”である場合、MUX304は、付加された180°位相をもつクロック信号310を出力するように構成される。
分周器モジュール300は、0°の位相信号と180°の位相信号との間の遷移に間にグリッチなしに出力信号314を提供するように構成される。1実施の形態では、係るグリッチのない出力動作を行うため、分周器モジュール300は、クロック信号308の出力とクロック信号310の出力との間の遷移の間、“0”レベル又は“1”レベルで出力信号314を保持するように構成される。
動作において、分周器モジュール300は、入力クロック信号306及び位相セレクタ入力318を受信する。分周器302は、クロック信号の周波数を半分に割り、0°の位相をもつ結果として生じるクロック信号308及び付加された180°の位相をもつ結果として生じるクロック信号310を出力する。係る出力は、MUX304に送出される。MUX304は、位相セレクタ入力318に従って結果として得られるクロック信号308,310を選択する。係る選択されたクロック信号は、クロック出力314として送出される。
図4は、グリッチのないマルチプレクサ321の実現の例示的な実施の形態である。係るマルチプレクサ321は、図3のMUX304を完全に又は部分的に実現する。マルチプレクサ321は、位相セレクタ入力312に基づいて、例えばゼロ位相シフト差をもつ受信されたクロック信号308又は180°の位相差をもつ受信されたクロック信号310をクロック出力314として提供するように構成される。1実施の形態では、位相セレクタ入力312における変化により検出されたとき、所望の出力の選択における変化に応じて、マルチプレクサ321は、クロック信号308,310の何れかをクロック信号314として出力することを遅延するように構成される。クロック信号308を出力することからクロック信号310を出力すること、逆にクロック信号310を出力することからクロック信号308を出力することへの瞬間的な変化は、クロック出力314においてグリッチを生じる場合がある。従って、位相セレクタ入力312における変換の検出に応じて、新たに選択されたクロック信号を瞬間的に出力する代わりに、マルチプレクサ321は、クロック信号の1以上の半サイクルについて出力値を保持するように構成される。係る期間の後、マルチプレクサ321は、新たに選択されたクロック信号の立ち上がり又は立下りと同期する新たに選択されたクロック信号を出力するように構成される。保持された出力値は、例えばグランドのような論理“0”を示すシステムの低電圧、又は電圧供給値のような論理“1”を示すシステムの高電圧である。
マルチプレクサ321は、何れかの適切なやり方で実現される。図4に例示される実施の形態では、マルチプレクサ321は、互いに通信可能に結合される1以上のラッチ322,324,326及び328を含む。ラッチ322,324,326及び328は、何れか適切な装置、コンポーネントモジュール、アナログ又はデジタル回路により実現される。ラッチ322,324,326及び328のそれぞれは、立ち上がりクロック信号が受信されるまで、現在の出力値を保持するように構成される。係る瞬間で、ラッチ322,324,326及び328は、時間的なその瞬間でラッチで受信された入力を出力するように構成される。ラッチ322及び326は、クロック信号入力としてクロック信号310に通信可能に結合される。従って、ラッチ322及び326は、マルチプレクサ321で受信された180°だけシフトされたクロック信号の立ち上がりエッジに応じて、更新された値を出力するように構成される。ラッチ324及び328は、クロック信号入力としてクロック信号308に通信可能に結合される。従って、ラッチ324及び328は、マルチプレクサ321で受信された0°だけシフトされたクロック信号の立ち上がりエッジに応じて、更新された値を出力するように構成される。
マルチプレクサ321は、3:1「ワンホット“one-hot”」マルチプレクサ332を含む。3:1「ワンホット」マルチプレクサ332は、可能性のある3つの入力D0,D1及びD2を受け、クロック出力314を送出するように構成されるその出力で3つのラインを多重化する。所与の瞬間で出力にどの入力を多重化すべきかに関する選択は、1以上の入力S0,S1及びS2により決定される。マルチプレクサ332は、入力のうちのどの入力が論理ハイ電圧すなわち“1”であるかを判定し、関連する入力を出力ラインで多重化する。例えば、S0が“1”に設定された場合、D0に関連される入力は、出力信号314に多重化される。S1が“1”に設定された場合、D1に関連する入力は、出力信号314に多重化される。S2が“1”に設定される場合、D2に関連する入力は、出力信号314に多重化される。マルチプレクサ332は、「ワンホット」マルチプレクサのコンフィギュレーションを実現する。
クロック信号310は、マルチプレクサ322の入力D0に通信可能に結合される。クロック信号308は、マルチプレクサ322の入力D1に通信可能に結合される。マルチプレクサ322の入力D2は、論理値に対応する一定の電圧レベルに結合される。1実施の形態では、マルチプレクサ322の入力D2は、VDD330に接続される。VDDは、適切な電圧源に通信可能に結合される。更なる実施の形態では、マルチプレクサ322の入力D2は、論理“1”の値に対応する電圧源を含む。別の実施の形態では、マルチプレクサ322の入力D2は、論理“0”値に対応する電圧源を含む。係る電圧源は、ロジックドライビングS0,S1,S2とは異なる。位相セレクタ入力312からの値の変化の間、マルチプレクサ322は、入力D1と入力D0との間の切り替えの間に、マルチプレクサ322の入力D2に対応するレベルで、出力信号314を保持するように構成される。マルチプレクサ322は、グリッチのない動作に行うために十分な時間について係る信号を保持するように構成される。
グリッチのない動作を行うため、適切なロジック又はコネクションがラッチ322,324、326,328とマルチプレクサ332との間で実現される。係るロジック又はコネクションは、唯一の論理“1”信号を一度にマルチプレクサ332の入力S0,S1及びS2に供給するように構成される。係る論理“1”信号は、入力D0に関連する信号を出力することと、D1に関連する信号を出力することとの間のスイッチ間の遷移に間に、入力D2に関連するホールド信号を出力するためにマルチプレクサ332に指示するように構成される。ロジック又はコネクションは、マルチプレクサ322と組み合わせて、選択された入力の次のハイ−ロウ又はロウ−ハイ遷移まで、位相セレクタ入力312における変化に応じて出力信号314の変化を遅延させるように構成される。遅延は、位相シフトのないクロック信号308を出力することと、180°をもつクロック信号310を出力することとの間のグリッチのない遷移に作用するため、ある期間について論理“0”又は“1”レベルに出力信号314を保持することで実現される。例えば、ラッチ326の出力は、マルチプレクサ332の入力S0に通信可能に結合される。ラッチ324の出力及びラッチ328の出力は、NORゲート334に通信可能に結合され、NORゲートの出力は、入力S1に通信可能に結合される。さらに、NORゲート334の出力とラッチ326の出力は、NORゲート336に通信可能に結合される。NORゲート336の出力は、S0に通信可能に結合される。
動作において、マルチプレクサ321は、位相セレクタ入力312の入力値に基づいて、出力ライン314にクロック信号308又はクロック信号310を出力する。例えば、位相セレクタ入力312が“0”である場合、マルチプレクサ321は、クロック信号308を出力するように構成され、位相セレクタ312が“1”である場合、マルチプレクサ321は、クロック信号310を出力するように構成される。出力クロック信号310は、ラッチ322、ラッチ326、及びマルチプレクサ332の入力D0に送出される。出力クロック信号308は、ラッチ324、ラッチ328、及びマルチプレクサ332の入力D1に送出される。
1つの例において、マルチプレクサ332は、はじめにクロック信号310を出力している。位相セレクタ入力312が受信され、“1”に等しい。値“1”は、ラッチ322、ラッチ324、ラッチ326、及びラッチ328で受信される。それぞれのラッチ322、ラッチ324、ラッチ326、及びラッチ328の出力は、“1”である。マルチプレクサ332の入力S0は、ラッチ326から“1”信号を受信する。マルチプレクサ332の入力S1は、NORゲート334から“0”を受信し、このNORゲートは、ラッチ328から“1”を受け、ラッチ324から“1”を受ける。マルチプレクサ332の入力S2は、NORゲート36から“0”を受け、このNORゲートは、NORゲート334から“1”を受け、ラッチ326から“1”を受ける。従って、マルチプレクサ336は、S0での入力により示されるように、D0で信号を出力する。
位相セレクタ入力312が、クロック信号310ではなくクロック信号308を出力する意図された変化を示す“0”を受信した場合、受信された変化は、クロック信号310の立ち上がりエッジが受信されるまで、ラッチ322により保持される。マルチプレクサ336は、S0での入力により示されるように、D0で信号を出力し続ける。
クロック信号310の立ち上がりエッジの受信に応じて、ラッチ322は、ラッチ324に“0”値を送出する。クロック信号308の立ち上がりエッジに応じて、ラッチ324は、ラッチ322から受信された“0”値をラッチ326及びNORゲート334に送出する。クロック信号310は、立ち下がりエッジを同時に体験する。NORゲート334は、ラッチ328がNORゲート334に“1”を送出し続けるときに、“0”を生成し続ける。マルチプレクサ336は、S0での入力により示されるように、D0での信号を出力し続ける。
クロック信号310の立ち上がりエッジの受信に応じて、ラッチ326は、ラッチ324から受信された“0”値をラッチ328、NORゲート336、及び入力S0に送出する。クロック信号308は、立ち下がりエッジを同時に体験する。マルチプレクサ336は、S0での入力がラッチ326からの“0”であるときに、D0での受信された入力を出力することを停止する。NORゲート334は、“0”を生成し、NORゲート336は、“1”を生成してS2に送出する。これは、NORゲート336、NORゲート334及びラッチ326の入力は、共に“0”値を送出しているからである。従って、マルチプレクサ336は、S2での入力により示されるように、D2での信号を出力する。D2での信号は、論理“1”電圧である。従って、マルチプレクサ322の前に出力である、クロック信号310の係る立ち上がりエッジに応じて、出力は、VDD330により論理“1”でハイに保持される。出力は、クロック信号308又はクロック信号310の何れかに従う代わりに、VDD330だけ保持される。
クロック信号308の立ち上がりエッジの受信に応じて、ラッチ328は、ラッチ326から受信された“0”値をNORゲート334に送出する。クロック信号310は、立ち下がりエッジを同時に体験する。しかし、マルチプレクサ336が出力ライン314にVDD330を送出することを選択したため、クロック信号310の立下りエッジで、ステップにおける立ち下がりの代わりに、信号は論理“1”で保持される。NORゲート334は、ラッチ328からの“0”値を入力として有し、ラッチ324からの“0”値を入力として有し、従って、値“1”をマルチプレクサ332の入力S1とNORゲート336とに送出する。NORゲート336は、値“1”を受信しており、“0”値を入力S2330に送出する。マルチプレクサ336は、その出力としてのVDD330を送出するのを停止し、クロック信号308を出力ライン314に送出し始める。従って、半サイクルについて論理“1”で保持された後、マルチプレクサ321は、クロック信号310から遷移においてグリッチをもたないクロック信号308を生成する。
その後に、フェーズセレクタ入力312がその選択値を、クロック信号308を送出することからクロック信号310を送出することに切り替える命令を示す、“0”から“1”に変えた場合、値“1”がラッチ322に到達する。クロック信号310のその後の立ち上がりエッジに応じて、ラッチ322は、ラッチ324に値“1”を送出する。マルチプレクサ336は、クロック信号308を出力ライン314に送出し続ける。
クロック信号308のその後の立ち上がりエッジに応じて、ラッチ324は、値“1”をラッチ326及びNORゲート334に送出する。NORゲート334は、結果として生じた“0”をマルチプレクサ332の入力S1及びNORゲート336に送出する。NORゲート336は、“1”をマルチプレクサ332の入力S2に送出する。従って、マルチプレクサ322は、VDD330、論理“1”を出力ライン314に送出する。
クロック信号310のその後の立ち上がりエッジに応じて、ラッチ326は、値“1”ラッチ328、NORゲート336、及びマルチプレクサ332の入力S0に送出する。NORゲート336は、“0”をマルチプレクサ332の入力S2に送出する。従って、マルチプレクサ322は、マルチプレクサ332のラインD0に通信可能に結合される、クロック信号310を出力ライン314に送出する。従って、マルチプレクサ322は、マルチプレクサ332のラインD0に通信可能に結合される、クロック信号310を出力ライン314に送出する。従って、半サイクルについて論理“1”で保持された後、マルチプレクサ321は、クロック信号308から、遷移におけるグリッチなしに、クロック信号310を生成する。
図5は、図4のマルチプレクサ321のような例示的なグリッチのないマルチプレクサの動作のタイミングダイアグラムである。図5は、位相シフトをもたない受信されたクロック信号であるか、又は180°の位相シフトをもつ受信されたクロック信号であるクロック信号308、位相セレクタ入力312、及び関連する出力ライン314のサンプルのタイミングダイアグラムを例示する。
はじめに、位相セレクタ入力313は“0”であり、従って出力ライン314は、クロック信号308である。“1”の位相セレクタ入力312の受信に応じて、出力ライン314は、クロック信号308又はクロック信号310の半サイクルについて値“1”で保持される。半サイクルの終わりの後、マルチプレクサ312は、出力ライン314としてクロック信号310を出力する。
“0”の位相セレクタ入力312の受信に応じて、出力ライン314は、クロック信号308又はクロック信号310の半サイクルについて値“1”で保持される。半サイクルの終了の後、マルチプレクサ321は、出力ライン314としてクロック信号308を出力する。
図6は、シンクロナイザ400の別の例示的な実施の形態である。シンクロナイザ400は、図2のシンクロナイザ206を実現する。シンクロナイザ400は、フィルタ418に結合される位相検出器416を有する。位相検出器416及びフィルタ418は、図2の位相検出器216及びフィルタ218と同様のやり方で実現される。
位相検出器416は、データクロック信号401及び分周されたクロック信号402を受信する。位相検出器は、信号の位相間の差を調べ、コードジェネレータ420に位相における決定された差を送出する前に、フィルタ420を通して結果をフィルタリングするように構成される。
シンクロナイザ400は、受信されたデータクロック信号401及び分周されたクロック信号402に基づいて、シリアライザに供給されるべきコード414のような命令を決定する。シンクロナイザ400は、可能性のあるコードの値414のサーチを行い、データクロック信号401と分周されたクロック信号402との間の最適な小さな位相差をもつコードを選択するように構成される。サーチは、スウィープ(sweep)、二分法アルゴリズム(bisection algorithm)、又は何れか他のタイプのサーチのような適切なやり方で行われる。
シンクロナイザ400は、可能性のあるコードの値414のスウィープを生成するように構成されるサーチコードモジュール404、前に生成されたコード414を考慮して、位相差を評価するように構成されるコードジェネレータ420、サーチコードモジュール404及びサーチコードモジュール420の出力は、MUX406に結合される。サーチコードモジュール404及びコードジェネレータ420は、回路、コンポーネント、チップ、又は何れか適切なメカニズムで実現される場合がある。
サーチコードモジュール404は、一連のコードを生成するように構成される。係る一連のコードは、可能性のあるコード値の一部又は全部のスウィープを判定する。サーチコードモジュール404は、係るコードのそれぞれをMUX406に次々に出力する。生成されたコードの可能性のある値は、シンクロナイザ400と使用されるシリアライザに依存し、直列化されるべきデータの幅に依存する。例えば、k次のシリアライザ(k個のMUX及び分周器を使用したシリアライザ)について、2^k個の可能性のあるコードが存在する。1実施の形態では、サーチコードモジュール404は、可能性のあるコード値のスウィープを循環させる。
コードジェネレータ420は、サーチコードモジュール404により生成された所与のコード値について、分周されたクロック402と位相検出器416により検出された受信されたデータとの間の対応する位相差を決定するように構成される。コードジェネレータ420は、所与のコード値について関連する位相差を記憶し、異なるコード値に基づいてその後に検出された位相に対して比較するように構成される。
コードジェネレータ420は、選択信号412をMUX406に送出するように構成される。係る選択信号412は、サーチコードモジュール404からのコードを出力すべきか又はコードジェネレータ420からのコードを出力すべきかをMUX406に示す。サーチコードモジュール404のスウィープの少なくとも1つのサイクルについて、コードジェネレータ420は、MUX406がサーチコードモジュール404からのコードを出力すべきことを示す選択信号412を送出するように構成される。コードジェネレータ420は、スウィープの間にサーチコードモジュール404から異なるコードが生成されたとき、最小の位相差に関連するコードを記憶するように構成される。例えば、スウィープのサイクルの間、コードジェネレータ420は、更に遭遇される最小の位相差を位相検出器416により現在検出された位相差に対して比較するように構成される。現在の位相が小さい場合、前に記憶された位相及び関連するコードが廃棄される。現在の位相及びその関連するコードは、更に遭遇された最小の位相として記憶される。
1実施の形態では、サーチコードモジュールによる生成されたコード値のサーチの後、コードジェネレータ420は、分周されたクロック402とデータクロック401との間の、最小の位相オフセット、さもなければ最適な位相オフセットに関連するコード値を決定するように構成される。コードジェネレータ420は、係るコード値が決定された最適なコード410であることを判定する。コードジェネレータ420は、係る決定された最適なコード410をMUX406に出力し、決定された最適コード410が出力コード414として送出されるべきことを示す選択信号412をMUX406に送出する。
別の実施の形態では、シンクロナイザは、所与の値で始まり、高く又は低く進展する可能性のあるコード値をスウィープする。係るスウィープは、位相誤差の符号における変化が検出されるとすぐに停止される。例えば、スウィープは、可能性のあるコード値を調べ、増加的に変化する位相誤差を検出する。位相誤差は、近似的にゼロに到達し、正から負に変化するか、又は負から正に変化する。係るポイントで、スウィープが停止される。
動作において、位相検出器416は、データクロック401及び分周されたクロック402について信号を受信する。位相検出器416は、信号間の位相オフセットを決定し、結果をフィルタ418を通してコードジェネレータ420に送出する。
コードジェネレータ420は、係る分周されたクロック402と関連する位相オフセット及びコードを記憶する。1実施の形態では、分周されたクロック402の最初のコードは、“0000”のようなプリセット値であることが想定される。コードジェネレータは、サーチコードモジュール404の出力が出力コード414として送出されるべきであることを示す選択信号412をMUX406に送出する。
サーチコードモジュール404は、可能性のあるコード値又は決定された範囲内のコード値のスウィープの第一の値を生成する。サーチコードモジュール404は、係る第一のコードをMUX406に送出する。MUX406は、出力コード414として第一の値を送出する。係る出力コードは、例えばシリアライザに送出される。
コードジェネレータは、サーチコードモジュール404による値のスウィープの間に選択信号412を保持する。サーチコードモジュール404により生成されたそれぞれの値について、コードジェネレータ420は、位相検出器416により検出された位相オフセットが最小の決定された位相オフセット未満であるかを評価する。位相オフセットが最小の決定された位相オフセット未満である場合、コードジェネレータ420は、最小の決定された位相オフセットとして新たな位相オフセットを記憶し、関連する分周されたクロック402を生成するために使用されるコードを記憶する。
スウィープの終了に応じて、コードジェネレータ420は、最小の位相オフセットがシンクロナイザ及びその分周されたクロック402の最適なコンフィギュレーションを生成するコードに関連することを判定する。コードジェネレータ420は、MUX406にコードを送出し、MUX406が決定された最適なコードを出力コードに送出すべきことを示す選択信号412を送出する。
図7は、入出力送信の自動的な同期化の方法500の例となる実施の形態である。ステップ505では、送信すべきデータが受信される。ステップ515では、出力クロック信号が受信、決定又は生成される。係る出力クロック信号は、送信すべきデータが到達するレートの倍数である周波数を有する。出力クロック信号の周波数は、データが送信されるレートである。
ステップ520では、位相の調節の命令が受信される。係る命令は、コードの形式であるか、又は同期モジュールから受信される。係る命令は、送信すべきデータの変換の間の使用のため、出力クロック信号の位相、又は分周されたバージョンの位相をどのように調節するかに関する情報を含む場合がある。ステップ52において、係る変換は、出力クロック信号を分周することを含む。係る分周は、マルチプレクサのような1以上のコンポーネントのついて行われる。
ステップ530では、位相の調節は、分周された信号のそれぞれに対して行われる。結果は、マルチプレクサのようなそれぞれの係るコンポーネントについて、位相が調節された、分周されたクロック信号である。ステップ535では、それぞれの係る信号は、マルチプレクサに送出される。
ステップ540では、第一のマルチプレクサは、送信すべき入力データを多重化する。多重化は、位相が調節された、分周されたクロック信号に基づく。係る多重化は、入力データが受信されたときの2倍のレートで多重されたデータの狭い幅となる。ステップ545において、送信のための所望のデータ幅に到達したかが判定される。所望のデータ幅に到達していない場合、多重化されたデータは、ダウンストリームに向けて別のマルチプレクサに送信され、本方法500は次のマルチプレクサについてステップ540を繰り返す。所望のデータ幅に到達した場合、ステップ550において、多重化されたデータは、例えば送信ドライバを通して送信される。
ステップ555では、最も低速のマルチプレクサについて使用される結果として生じるクロック信号は、同期モジュールに送信される。本方法500は、ステップ505〜555を繰り返す。
図8は、マルチプレクサのような送信コンポーネントの位相を調節する方法600の例示的な実施の形態である。ステップ605では、クロック信号が受信される。係るクロック信号は、I/Oクロックから受信されるか、又は係るI/Oクロックに向かってアップストリームにある分周器から受信される。
ステップ610では、位相選択信号が受信される。係る選択信号は、同期モジュールからの命令の一部として提供される。選択信号は、受信されたクロック信号に応じて実行されるべき位相の調節の程度を示す。1実施の形態では、位相の調節のオプションは、0°又は180°の位相の調節を含む。
ステップ615では、受信されたクロック信号の周波数が分周される。1実施の形態では、係るクロック信号の周波数は半分にされる。
ステップ620では、分周されたクロック信号の位相は、位相選択信号に従って調節される。1実施の形態では、クロック信号の分周により、0°の位相の調節をもつ半分の周波数信号が得られ、180°の位相の調節をもつ半分にされた周波数信号が得られる。係る実施の形態では、これらの結果として生じる信号のうちの1つを選択するため、位相選択信号が使用される。別の実施の形態では、分周されたクロック信号の位相は、位相選択信号により指定又は示された量だけ調節される。
ステップ625では、調節されたクロック信号が出力される。係る信号は、例えば位相検出器、分周器モジュール、又はマルチプレクサのような送信装置のコンポーネントに送出される。
図9は、送信装置の位相を送信すべきデータと同期させる方法700の例示的な実施の形態である。1実施の形態では、係る方法700は、その送信クロック信号の位相を調節するため、送信装置の命令の遅延ロックループの計算を実行することを含む。
ステップ705では、コードのような最初の命令が生成される。係るコードは、その送信クロック信号の位相をどのように調節すべきかに関して、送信装置に指示する。1実施の形態では、コードは、送信のためにデータを変換するために使用されるクロック信号の位相をどのように調節すべきかに関して送信装置に指示する。ステップ710では、コードが送信機に出力される。
ステップ715では、データクロック信号及び出力コードから得られた分周されたクロック信号が受信される。1実施の形態では、データクロック信号は、どのデータが送信又は受信されるかについてクロック信号を含む。別の実施の形態では、データクロック信号は、データ自身の受信により決定される。ステップ725では、係る信号間の位相差が決定される。
ステップ730では、その位相を調節することを送信装置に指示するコードが出力される。最初にステップ730が実行されたとき、係るコードは、位相を徐々に増加又は減少させることに関連する。生成されたコードが位相を減少させる場合、本方法500は、実行ステップ755を実行する。図9の例では、生成されたコードは、位相を徐々に増加するように選択される。ステップ735では、データクロック信号及び出力コードから得られる分周されたクロック信号が受信された。ステップ740では、信号を比較することで、係る信号間の位相差が決定される。
ステップ742では、位相がロックされたかが判定される。適切なメカニズム又はプロセスは、位相がロックされたかを判定するために使用される。例えば、データクロック信号の位相と分周されたクロック信号の位相との間の差があるセットの収束値又は近似的にあるセットの収束値となるように決定された値にある場合、位相がロックされる。別の例では、位相間の差がある閾値の量未満である場合、位相がロックされる。更に別の例では、2つの信号が本方法700の繰り返される実行の間にディザリングを示す場合、位相がロックされる。位相がロックされる場合、本方法700は、終了する。位相がロックされていない場合、本方法700は、ステップ745に進む。
ステップ745では、現在の位相差は前の位相差に対して比較される。1実施の形態では、位相差が増加した場合、本方法500は、ステップ750を実行し、反対のアクションが行われる。位相差が減少した場合、本方法500は、ステップ730を繰返し、同様のアクションが繰り返される。別の実施の形態では、分周されたクロックとデータクロックとの間の差は、正又は負の何れかであるように送信される。位相間の負の差は、クロックの位相がデータ位相よりも前にあり、クロックの位相が増加されるべきであることを判定するために使用される。位相間の正の差は、クロックの位相がデータの位相よりも遅れており、クロックの位相が減少されるべきであることを判定するために使用される。結果として、位相における差がゼロ未満である場合、クロックの位相はデータの位相よりも前にあり、本方法700は、ステップ730を繰返して、位相を増加する。位相における差がゼロよりも大きい場合、本方法700は、ステップ750に進んで、位相を減少させる。
ステップ750で、コードが出力され、このコードの適用により、送信装置は、その位相を徐々に減少させる。ステップ755では、データクロック信号及び出力コードから得られる分周されたクロック信号は受信される。ステップ760では、係る信号間の位相差が決定される。
ステップ762では、位相がロックされたかが判定される場合がある。任意の適切なメカニズム又はプロセスは、位相がロックされたかを判定するために使用される。例えば、データクロック信号の位相と分周されたクロック信号の位相との間の差があるセットの収束値又は近似的にあるセットの収束値であるように決定された値である場合、位相がロックされる。別の例では、位相間の差が閾値の量未満である場合、位相がロックされる。更に別の例では、2つの信号が本方法700の繰り返される実行の間にディザリングを示す場合、位相がロックされる。位相がロックされた場合、本方法700は終了する。位相がロックされない場合、本方法700は、ステップ765に進む。
ステップ765では、現在の位相差は、前の位相差と比較される。1実施の形態では、位相差が増加した場合、本方法500は、ステップ739を実行し、ここでは反対のアクションが行われる。位相差が減少した場合、本方法はステップ750で開始するのを繰返し、同様のアクションが繰り返される。別の実施の形態では、分周されたクロックとデータクロックとの間の現在の位相差が正又は負の何れかであるかが判定される。位相間の負の差は、クロックの位相がデータの位相よりも前であることを示し、クロックの位相が増加されるべきであることを判定するために使用される。位相間の正の差は、クロックの位相がデータの位相よりも遅れていることを示し、クロックの位相が減少されるべきであることを判定するために使用される。結果的に、位相における差がゼロ未満である場合、これはクロックの位相がデータの位相よりも前である場合であり、本方法700は、位相を増加するためにステップ730で繰り返す。位相における差がゼロ以上である場合、本方法700は、位相を減少するためにステップ750に進む。
図10は、送信装置の位相を送信されるデータと同期を取るための方法800の別の例示的な実施の形態である。1実施の形態では、係る方法800は、その送信クロック信号の位相を調節するために、送信装置により使用されるコードのような最適な命令のセットをサーチすることを含む。
ステップ805では、最適なコードについて評価されるべきコードの範囲が決定される。係るコードの範囲は、開始コード(initial code)で始まり、終了コード(final code)で終わる。係る符号は、クロック信号が分周されたとき、データの送信において使用するため、I/Oクロック信号の位相を調節するために使用される。ステップ820では、データクロック信号及び分周されたクロック信号が受信される。係る信号は、開始符号を送信装置に適用した結果である。ステップ825では、信号間の位相差が決定される。ステップ830では、位相差は、「最小“smallest”」として指定される。
ステップ835では、終了符号に到達したかが判定される。終了符号に到達した場合、本方法800は、ステップ870に進む。終了符号に到達していない場合、ステップ840で、コードがインクリメントされる。1実施の形態では、係るインクリメントは、コードの値へのシンプルな増加を含む。別の実施の形態では、係るインクリメントは、コードのパラメータをコードの範囲内の次の置換に代えることを含む。ステップ835〜865のうちの1以上を繰り返すことで、可能性のあるスウィープが行われる。
ステップ845では、データを変換するために使用されるクロック信号の位相を調節する適用のため、コードが送信機に出力される。ステップ850では、データクロック信号及び分周されたクロック信号が受信される。ステップ855では、信号間の位相差が決定される。
ステップ860では、ステップ855で決定された位相差が「最小」となるように前に割り当てられた位相差よりも小さい場合、ステップ865で、ステップ855で決定された位相差は、「最小」となるように割り当てられる。ステップ855で決定された位相差が「最小」となるように前に割り当てられた位相差よりも小さくない場合、本方法500は、ステップ835に戻る。
ステップ870では、「最小」となるように割り当てられた位相差は、コード値のスウィープの間に遭遇される最小の位相差となるように決定される。係る位相差に関連するコードは、考慮される範囲内の最適なコード値となるように決定される。係るコードは、送信機に出力される。
図7〜図10は、例示的な方法500,600,700及び800に関して行われるべき特定数のステップを開示しているが、本方法400,500,600,700及び800は、図7〜図10に示されるステップよりも多いか又は少ないステップで実行される場合がある。さらに、図7〜図10は、方法500,600,700及び800に関して行われるステップの所定の順序を開示しているが、本方法500,600,700及び800を含むステップは、任意の適切な順序で行われる場合がある。
本方法500,600,700及び800は、図1〜図6のシステム、又は、本方法500,600,700及び800を実現するために動作する任意の他のシステム、ネットワーク又は装置を使用して実現される場合がある。所定の実施の形態では、本方法500,600,700及び800は、コンピュータ読み取り可能な媒体で実施されるソフトウェアで部分的又は完全に実現される場合がある。
この開示のため、コンピュータ読み取り可能な媒体は、ある期間についてデータ及び/又は命令を保持する手段又は手段の集合を含む。コンピュータ読み取り可能な媒体は、限定されることなしに、ダイレクトアクセスストレージデバイス(例えばハードディスクドライブ又はフロプティカルディスク)、シーケンシャルアクセスストレージデバイス(たとえばテープディスクドライブ)のようなストレージメディア、コンパクトディスク、CD−ROM、DVD、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、及び/又はフラッシュメモリ、持続性媒体、及び/又は上述の組み合わせを含む。
本明細書の開示は詳細に記載されたが、様々な変形、置換え及び変更は特許請求の範囲により定義されるように、本明細書の開示の精神及び範囲から逸脱することなしに行うことができることを理解されたい。例えば、出力動作が記載されたが、等価なメカニズム及び方法により入力動作が行われる場合がある。