(57)【要約】非同期フィードバックトレーニングシーケンスを実行するための、システム、装置及び方法が説明される。送信機は、複数のデータ回線を含む通信チャネルを介して、トレーニングシーケンス指示を受信機に送信する。トレーニングシーケンス指示は、トレーニングシーケンスの開始を示すビットシーケンスを含む。トレーニングシーケンス指示は、長さが「Ｎ」クロックサイクルのスーパーサイクルの中間点で０から１、その後に所定数の１が続く遷移を含む。トレーニングシーケンス指示の後にテストパターンが続く。テストパターンの開始はスーパーサイクルの終わりに生じる。受信機は、受信したテストパターンにおいてエラーがあるかどうかを判別した後に、エラーが検出されたかどうかを示すフィードバックを送信機に送信する。送信機は、フィードバックを受信したことに応じて、１つ以上のデータ回線の遅延設定を変更する。【選択図】図６
2019519029.tif 000002
【特許請求の範囲】
【請求項１】
送信機と、
１つ以上のデータレーンを含む通信チャネルを介して前記送信機に接続された受信機と、
を備えるシステムであって、
前記送信機は、前記チャネルの第１レーンで、テストパターンが後に続くトレーニングシーケンス指示を送信するように構成されており、
前記受信機は、前記トレーニングシーケンス指示及び前記テストパターンを受信し、前記テストパターンにおいてエラーが検出されたかどうかを示すエラー表示を前記第１レーンを介して前記送信機に伝えるように構成されている、
システム。
【請求項２】
前記送信機は、前記エラー表示を受信したことに応じて、エラーが検出されたことを前記エラー表示が示す場合に、前記第１レーンの遅延設定を変更するように構成されている、
請求項１のシステム。
【請求項３】
前記受信機は、前記トレーニングシーケンス指示を検出したことに応じて、前記テストパターンをキャプチャするように構成されている、
請求項１のシステム。
【請求項４】
前記送信機は、スーパーサイクル中に前記トレーニングシーケンス指示を複数のビットとして送信するように構成されており、
前記トレーニングシーケンス指示は、第１マルチビットシーケンスと、後に続く第２マルチビットシーケンスと、を含み、前記第１マルチビットシーケンス及び前記第２マルチビットシーケンスは互いに異なる極性を有しており、前記第１マルチビットシーケンスから前記第２マルチビットシーケンスへの遷移は、前記スーパーサイクルの中間点で生じる、
請求項３のシステム。
【請求項５】
前記テストパターンは、前記スーパーサイクルの終わりに開始し、
前記受信機は、前記スーパーサイクルを識別するために、前記トレーニングシーケンス指示を使用することによって、前記テストパターンシーケンスをキャプチャするタイミングを決定するように構成されている、
請求項４のシステム。
【請求項６】
前記受信機は、前記トレーニングシーケンス指示を検出するために、
各スーパーサイクルの終わりに前記第１レーンの状態をサンプリングし、
２つの連続するテストの間に前記第１レーンで遷移が生じていると判別したことに応じて、各スーパーサイクルの終わりに前記第１レーンの状態をサンプリングし、前記第１レーンの状態が所定数のサンプルに対して変化していない場合に前記トレーニングシーケンス指示が検出されていると判別し、前記第１レーンの状態が前記所定数のサンプルの間に変化している場合に前記トレーニングシーケンス指示が検出されていないと判別する、ように構成されている、
請求項４のシステム。
【請求項７】
前記エラー表示は単一のビットである、
請求項１のシステム。
【請求項８】
送信機と、
受信機と、
複数のデータレーンを含む通信チャネルと、を備える装置であって、
前記送信機は、前記複数のレーンの各レーンでテストパターンを送信するように構成されており、
前記受信機は、前記複数のレーンの各々で前記テストパターンを受信し、対応するレーンで前記テストパターンにおいてエラーが検出されたかどうかを示すエラー表示を前記複数のレーンの各々で前記送信機に伝えるように構成されている、
装置。
【請求項９】
前記送信機は、
前記複数のレーンの各々に対する個別の遅延ユニットと、
前記複数のレーンのレーンのグループに単一の遅延設定を適用するように構成された単一の遅延ユニットと、を備える、
請求項８の装置。
【請求項１０】
前記送信機は、前記複数のレーンの各々のレーンで、トレーニングシーケンス指示及びその後に続く前記テストパターンを送信するように構成されており、
前記受信機は、前記トレーニングシーケンス指示を検出したことに応じて、前記テストパターンをキャプチャするように構成されている、
請求項８の装置。
【請求項１１】
前記送信機は、スーパーサイクル中に前記トレーニングシーケンス指示を複数のビットとして送信するように構成されており、
前記トレーニングシーケンス指示は、第１マルチビットシーケンスと、後に続く第２マルチビットシーケンスと、を含み、前記第１マルチビットシーケンス及び前記第２マルチビットシーケンスは互いに異なる極性を有しており、前記第１マルチビットシーケンスから前記第２マルチビットシーケンスへの遷移は、前記スーパーサイクルの中間点で生じる、
請求項１０の装置。
【請求項１２】
前記テストパターンは、前記スーパーサイクルの終わりに開始し、
前記受信機は、前記スーパーサイクルを識別するために、前記トレーニングシーケンス指示を使用することによって、前記テストパターンシーケンスをキャプチャするタイミングを決定するように構成されている、
請求項１１の装置。
【請求項１３】
前記受信機は、前記トレーニングシーケンス指示を検出するために、
各スーパーサイクルの終わりに第１レーンの状態をサンプリングし、
２つの連続するテストの間に前記第１レーンで遷移が生じていると判別したことに応じて、各スーパーサイクルの終わりに前記第１レーンの状態をサンプリングし、前記第１レーンの状態が所定数のサンプルに対して変化していない場合に前記トレーニングシーケンス指示が検出されていると判別し、前記第１レーンの状態が前記所定数のサンプルの間に変化している場合に前記トレーニングシーケンス指示が検出されていないと判別する、ように構成されている、
請求項１１の装置。
【請求項１４】
前記エラー表示は単一ビットである、
請求項８の装置。
【請求項１５】
送信機によって、チャネルの第１レーンで、トレーニングシーケンス指示及びその後に続くテストパターンを受信機に送信することと、
前記受信機によって、前記トレーニングシーケンス指示及び前記テストパターンを受信することと、
前記テストパターンにおいてエラーが検出されたかどうかを示すエラー表示を前記第１レーンを介して前記送信機に伝えることと、を含む、
方法。
【請求項１６】
前記エラー表示を受信したことに応じて、エラーが検出されたことを前記エラー表示が示す場合に、前記第１レーンの遅延設定を変更することを含む、
請求項１５の方法。
【請求項１７】
前記トレーニングシーケンス指示を検出したことに応じて、前記テストパターンをキャプチャすることを含む、
請求項１６の方法。
【請求項１８】
スーパーサイクル中に前記トレーニングシーケンス指示を複数のビットとして送信することを含み、
前記トレーニングシーケンス指示は、第１マルチビットシーケンスと、後に続く第２マルチビットシーケンスと、を含み、前記第１マルチビットシーケンス及び前記第２マルチビットシーケンスは互いに異なる極性を有しており、前記第１マルチビットシーケンスから前記第２マルチビットシーケンスへの遷移は、前記スーパーサイクルの中間点で生じる、
請求項１７の方法。
【請求項１９】
前記テストパターンは、前記スーパーサイクルの終わりに開始し、
前記スーパーサイクルを識別するために、前記トレーニングシーケンス指示を使用することによって、前記テストパターンシーケンスをキャプチャするタイミングを決定することを含む、
請求項１８の方法。
【請求項２０】
前記トレーニングシーケンス指示を検出するために、
各スーパーサイクルの終わりに前記第１レーンの状態をサンプリングすることと、
２つの連続するテストの間に前記第１レーンで遷移が生じていると判別したことに応じて、各スーパーサイクルの終わりに前記第１レーンの状態をサンプリングし、前記第１レーンの状態が所定数のサンプルに対して変化していない場合に前記トレーニングシーケンス指示が検出されていると判別し、前記第１レーンの状態が前記所定数のサンプルの間に変化している場合に前記トレーニングシーケンス指示が検出されていないと判別することと、を含む、
請求項１８の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載される実施形態は、データ通信に関し、より詳細には、ビットシリアルデータリンクのトレーニングを実行することに関する。
【背景技術】
【０００２】
集積回路のデータスループットは、アプリケーション需要及びデータ消費が増加するにつれて増加し続けている。例えば、マイクロプロセッサ速度の改善率は、メモリ速度の改善率を超え続けている。データの送信レートが増加することで、データを送受信するために使用される回路のタイミング要求が増加する。コンピューティングデバイス及びコンピューティングシステムにおいて利用される多くの回路では、これらの回路内でグローバルクロックを使用してデータが転送される。例えば、クロックの立ち上がりエッジは、フリップフロップに入るデータをロードし、その後、データを、フリップフロップを通過させるか又はフリップフロップから処理することができる。いくつかのシナリオでは、単一のクロックを使用して、複数のデータレーンのデータバスをラッチすることができる。しかしながら、これは、クロックの遷移をデータバス全体に使用する必要があるのでデータバスの速度が制限されるが、一部のデータビットは、他のデータビットと比較してバスを通るのに時間がかかる場合がある。データレーン間のばらつきが大きすぎる場合、データバス全体において正確にクロックするためにクロックエッジを配置する場所が存在しない場合がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
ビットシリアルデータリンクのトレーニングを実行するためのシステム、装置及び方法について検討する。
【０００４】
一実施形態では、送信機と受信機との間の遅延設定をテストするために、非同期フィードバックトレーニング（ＡＦＴ）シーケンスが実行される。送信機は、１つ以上のデータレーンの通信チャネルを介して受信機に接続されている。送信機及び受信機の各々は、スーパーサイクルをカウントするためのカウンタを含み、単一のスーパーサイクルは、より高い周波数のシステムクロックの「Ｎ」クロックサイクルに対応するものとして定義され、「Ｎ」は１より大きい正の整数である。一実施形態では、スーパーサイクルの長さは、８システムクロックサイクルである。他の実施形態では、スーパーサイクルは、他の数の長さのクロックサイクルである。
【０００５】
ＡＦＴシーケンスを行うために、送信機は、チャネルの１つ以上のレーンで、トレーニングシーケンス指示の開始（又は、「トレーニングシーケンス指示」）を受信機に送信するように構成されている。様々な実施形態では、トレーニングシーケンス指示は、第１値を有するビットから、第１値とは異なる第２値を有するビットに続いて、第２値を有する所定数のビットが続くビット遷移で構成されている。例えば、一実施形態では、トレーニングシーケンス指示は、所定の長さを有しており、一連の０から始まり、後に一連の１が続く。一実施形態では、一連の０から一連の１への遷移は、スーパーサイクルの中間点で生じる。
【０００６】
送信機がトレーニングシーケンス指示を受信機に送った後、送信機は、テストパターンを受信機に送る。トレーニングシーケンス指示からテストパターンへの遷移は、スーパーサイクル境界で生じる。一実施形態では、テストパターンは、疑似ランダムバイナリシーケンス（ＰＲＢＳ）である。受信機は、各スーパーサイクルの終わりにチャネルの１つ以上のデータレーンの状態をサンプリングするように構成されている。受信機は、連続するスーパーサイクルの終わりに、２つのテスト間において各レーンで遷移が生じるかどうかを判別する。２つの連続するテスト間において所定のレーンで遷移が生じたと受信機が判別した場合、受信機は、遷移が検出された後に、所定数のスーパーサイクルをテストパターンとしてキャプチャする。次に、受信機は、受信したテストパターンにおいてエラーが検出されたかどうかを判別する。
【０００７】
送信機が所定のデータレーンで受信機にテストパターンを送った後、送信機は、所定のデータレーンに接続された出力バッファを無効にする。次に、送信機は、送信したテストパターンに関する受信機からのフィードバックを待機する。受信機は、テストパターンにおいてエラーが検出されたかどうかを判別した後、キャプチャされたテストパターンにおいてエラーが検出されたかどうかを示すフィードバックを送信機に送る。一の実施形態では、受信機は、エラー無しにデータを受信した場合、第１極性（例えば、高電圧）で回線を駆動し、１つ以上のエラーと共にデータを受信した場合、第２極性（例えば、低電圧）で回線を駆動する。次に、送信機は、テストパターンの送信を終了した後で所定のデータレーンの状態をキャプチャする前に、所定数のクロックサイクルを待機する。次いで、送信機は、キャプチャされた所定のデータレーンの状態を利用して、所定のデータレーンの遅延設定をどのように調整するかを決定する。
【０００８】
一実施形態では、送信機は、チャネルの各データレーンに対して異なる遅延設定で複数のＡＦＴシーケンスを実行する。これらのＡＦＴシーケンスに対する受信機からのフィードバックは、データ有効期間（又は、「データアイ」）の位置を判別するために送信機によって使用される。一連のＡＦＴシーケンスを実行している間、送信機は、受信機によって示される、エラー結果からエラーのない結果への遷移を識別して、所定のデータレーンのデータアイの開始を判別する。次に、送信機は、エラーのない結果からエラー結果への遷移を識別して、データアイの終了を判別する。次いで、送信機は、識別されたデータアイの開始及び終了の平均を取得し、データアイの中央のサンプリングポイントを決定する。次に、送信機は、所定のデータレーンの遅延設定を、決定したサンプリングポイントに調整する。
【０００９】
これらの特徴及び利点と、他の特徴及び利点とは、本明細書に提示される以下の詳細な説明を考慮して、当業者に明らかとなるであろう。
【００１０】
方法及びメカニズムの上記の利点と、さらなる利点とは、添付の図面と併せて以下の説明を参照することによって、より良く理解することができる。
【図面の簡単な説明】
【００１１】
【図１】コンピューティングシステムの送信機及び受信機の一実施形態のブロック図である。
【図２】非同期フィードバックトレーニングシーケンスの一実施形態のタイミング図である。
【図３】非同期フィードバックトレーニングスーパーサイクルカウンタの一実施形態のタイミング図である。
【図４】通信チャネル及び送信機の一実施形態のブロック図である。
【図５】データアイの一実施形態を示す図である。
【図６】チャネルの第１データレーンに対して非同期テストシーケンスを実行する方法の一実施形態を示す一般化されたフロー図である。
【図７】チャネルの第１データレーンに対して非同期テストシーケンスを実行する方法の他の実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【００１２】
下記の説明では、本明細書に提示される方法及びメカニズムを十分に理解してもらうために、多数の具体的な詳細が示されている。しかしながら、当業者であれば、これらの具体的な詳細無しに様々な実施形態を実施可能であることを認識すべきである。いくつかの例では、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術は、本明細書で説明するアプローチを不明瞭にするのを避けるために詳細に示されていない。説明を簡単且つ明瞭にするために、図面に示される要素が必ずしも一定の縮尺で描かれていないことを理解されたい。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている。
【００１３】
図１を参照すると、コンピューティングシステム１００の送信機１０５及び受信機１１０の一実施形態を示すブロック図が示されている。送信機１０５は、チャネル１５５を介して受信機１１０に接続されている。チャネル１５５は、実施形態に応じて、任意の数のデータレーンを含む。また、チャネル１５５は、クロックレーン及び／又は１つ以上の他のレーンを含む。コンピューティングシステム１００は、クロック１４５と、クロック１５０と、図面を不明瞭にするのを避けるために示されていない１つ以上の他のコンポーネントと、を含む。例えば、コンピューティングシステム１００は、１つ以上の処理ユニット（例えば、プロセッサ、プロセッサコア、プログラマブルロジックデバイス、特定用途向け集積回路等）、１つ以上のメモリデバイス、及び／又は、他のコンポーネントを含む。１つ以上の処理ユニットは、実施形態に応じて、命令を実行し、及び／又は、１つ以上のタイプの計算（例えば、浮動小数点、整数、メモリ、Ｉ／Ｏ）を実行するように構成されている。様々な実施形態では、コンピューティングシステム１００のコンポーネントは、１つ以上の通信バスによって相互接続されている。一実施形態では、送信機１０５及び受信機１１０は、プロセッサのメモリパスに存在する。様々な実施形態において、プロセッサに接続されたメモリは、ダブルデータレート同期ダイナミックランダムアクセスメモリ（ＤＤＲ  ＳＤＲＡＭ）である。他の実施形態では、メモリは、他のタイプのメモリデバイスを使用して実装される。
【００１４】
送信機１０５は、チャネル１５５に接続されたバッファ１１５を含む。一実施形態では、バッファ１１５は、非同期フィードバックトレーニングシーケンスの状態に関して、送信機１０５が受信機１１０からのフィードバックを受信するのを待機している場合に、チャネル１５５の出力を駆動するか、高インピーダンス状態を生成するためのトライステートバッファである。また、送信機１０５は、非同期フィードバックトレーニングシーケンスを生成し、チャネル１５５のレーンの遅延設定を制御し、及び／又は、他の機能を実行する制御ロジック１３５も含む。さらに、送信機１０５は、スーパーサイクルをカウントするためのカウンタ１２５を含む。様々な実施形態では、スーパーサイクルは、長さが「Ｎ」クロックサイクルであり、「Ｎ」は正の整数である。例えば、一実施形態では、スーパーサイクルは８クロックサイクルの長さであり、他の実施形態では、スーパーサイクルは数クロックサイクルである。一実施形態では、クロック１４５は、カウンタ１２５をクロックするためのクロック信号を提供する。
【００１５】
受信機１１０は、チャネル１５５に接続するためのバッファ１２０を含む。一実施形態では、バッファ１２０は、フィードバック結果をチャネル１５５に運ぶ、又は、受信機１１０が送信機１０５からデータを受信している場合に高インピーダンス状態を生成するためのトライステートバッファである。また、受信機１１０は、チャネル１５５上のトレーニングシーケンス指示を検出し、受信したテストパターンを期待値と比較し、及び／又は、他の機能を実行する制御ロジック１４０も含む。さらに、受信機１１０は、スーパーサイクルをカウントするためのカウンタ１３０を含む。一実施形態では、クロック１５０は、カウンタ１３０をクロックするためのクロック信号を提供する。他の実施形態では、受信機１１０は、カウンタ１３０をクロックするためのクロック信号として、チャネル１５５で受信したクロック信号を使用する。
【００１６】
図示された実施形態では、送信機１０５は、チャネル１５５の１つ以上のデータレーンに亘って非同期フィードバックトレーニングシーケンスを開始するように構成されている。送信機１０５は、非同期フィードバックトレーニングシーケンスを開始するために、テストされる各レーンでトレーニングシーケンス指示を送信する。トレーニングシーケンス指示は、第１マルチビットシーケンスと、後に続く第２マルチビットシーケンスと、を含み、第１マルチビットシーケンスは、第２マルチビットシーケンスとは反対の極性を有する。例えば、一実施形態では、第１マルチビットシーケンスは０のシーケンスであり、第２マルチビットシーケンスは１のシーケンスである。第１マルチビットシーケンスから第２マルチビットシーケンスへの遷移は、スーパーサイクルの中間点で生じる。
【００１７】
受信機１１０は、スーパーサイクル境界上で各データレーンの状態をテストするように構成されている。受信機１１０は、連続するテストでの電圧遷移を検出することによって、及び、第２マルチビットシーケンスが規定のビット数の間続くことを検出することによって、トレーニングシーケンス指示を検出する。送信機１０５は、トレーニングシーケンス指示後にテストパターンを送信し、テストパターンは、スーパーサイクル境界で開始する。受信機１１０は、トレーニングシーケンス指示を検出した後に、送信機１０５によって送信されたテストパターンをキャプチャする。次に、受信機１１０は、キャプチャされたテストパターンにエラーがあるかチェックする。
【００１８】
送信機１０５は、テストパターンを送信した後にバッファ１１５を無効にし、キャプチャされたテストパターンに関するフィードバックを受信機１１０が送信するのを待機する。受信機１１０は、バッファ１２０を有効にし、キャプチャされたテストパターンにおいてエラーが検出されたかどうかを判別した後に、「エラー表示」と呼ばれる場合があるフィードバックを送信機１０５に送信する。一実施形態では、フィードバックは、エラーが検出されたかどうかを示す単一のビットである。受信機１１０は、チャネル１５５の所定のデータレーンでフィードバックを送信機１０５に送る。送信機１０５は、フィードバックをキャプチャし、そのフィードバックを（他の遅延設定を用いた他のテストからのフィードバックと共に）使用して、所定のデータレーンのデータアイを決定する。送信機１０５は、フィードバックをキャプチャした後に、別のテストを実行するかどうか、又は、通常のデータ演算に戻るかどうかを決定する。様々な実施形態及びシナリオでは、複数の非同期フィードバックトレーニングシーケンスが、チャネル１５５の複数のデータレーンで同時に実行される。
【００１９】
システム１００は、送信機１０５及び受信機１１０を含む任意のタイプのコンピューティングシステム又はコンピューティングデバイスを表す。例えば、様々な実施形態では、システム１００は、コンピュータ、サーバ、計算ノード、プロセッサ、処理デバイス、プログラマブル論理デバイス、メモリデバイス、プロセッシングインメモリ（ＰＩＭ）ノード、モバイルデバイス、テレビ、娯楽システム若しくはデバイス、及び／又は、他のタイプのシステム若しくはデバイスを含むことができる。また、システム１００は、送信機１０５及び受信機１１０に加えて、任意の数の他の送信機及び受信機を含む。
【００２０】
次に、図２を参照すると、非同期フィードバックトレーニングシーケンスの一実施形態のタイミング図２００が示されている。図示された実施形態では、非同期フィードバックトレーニングシーケンスは、送信機（例えば、図１の送信機１０５）と受信機（例えば、図１の受信機１１０）との間で実行される。送信機は、スーパーサイクルをカウントするためのカウンタ２０２（ＴｘＳｕｐｅｒＣｙｃｌｅＣｎｔ）を含み、受信機は、スーパーサイクルをカウントするためのカウンタ２１０（ＲｘＳｕｐｅｒＣｙｃｌｅＣｎｔ）を含む。一実施形態では、スーパーサイクルは、８クロックサイクルの長さであり、カウンタは、モジュロ８カウンタである。他の実施形態では、スーパーサイクルは、８以外の数の長さのクロックサイクルである。図示された例では、送信機状態２０４（ＴｘＡＦＴＳｔａｔｅ）は、スーパーサイクルの中間点で信号開始状態（信号開始）に遷移する。送信機は、送信機が信号開始状態に入ると、スーパーサイクルの中間点において開始する送信データレーン２０６（Ｔｘｄａｔａ）でトレーニングシーケンス指示（インジケータ）を送信する。一実施形態では、トレーニングシーケンス指示は、２進数０から２進数１、その後に所定数の１が続く遷移である。
【００２１】
図示された例では、受信機は、インジケータ（「インジケータ？」と示されている）を検出するのを待機している受信機状態２１２（ＲｘＡＦＴＳｔａｔｅ）で開始する。受信機は、インジケータを検出すると、待機パターン状態（ＷａｉｔＰａｔｔｅｒｎ）に遷移する。様々な実施形態では、受信機は、データレーン２０８（Ｒｘｄａｔａ）での０から１への遷移を検出し、後に所定数の１が続く遷移を検出することによって、インジケータを検出する。例えば、一実施形態では、受信機は、各スーパーサイクルの終了時に受信データレーン２０８の状態をチェックする。受信機が２つの連続するスーパーサイクルにおいて「０」から「１」へのデータレーン２０８での変化を検出した場合、受信機は、スーパーサイクル毎に受信したデータをモニタリングし続け、所定数の１を受信したかどうかを判別する間に、待機パターン状態に遷移する。図２００に示すように、受信機は、スーパーサイクルカウント「ｉ＋３」の開始時に待機パターン状態に遷移する。
【００２２】
トレーニングシーケンス指示は、実施形態に応じて任意の長さを有しており、その長さは受信機に知られている。トレーニングシーケンス指示が送信機から受信機に送られた後、送信機は、テストパターンを受信機に送信する。一実施形態では、テストパターンは、疑似ランダムバイナリシーケンス（ＰＲＢＳ）である。一般的に言えば、ＰＲＢＳは、ランダムバイナリシーケンスと同様の挙動を示す決定性（deterministic）バイナリシーケンスである。受信機は、テストパターンを受信し、受信したデータを期待値と比較することによって、受信したテストパターンにエラーがあるかどうかをチェックする。
【００２３】
送信機は、テストパターンを送信後、出力バッファを無効にする。一実施形態では、出力バッファは、送信機がテストパターンを受信機に送信した後に送信機によって高インピーダンス状態に切り替えられるトライステートバッファである。受信機は、フィードバックを準備する期間の後に、出力バッファをアクティブにし、フィードバックを送信機に送信する。一実施形態では、フィードバックは、受信したテストパターンにエラーがあるかどうかを示す。一実施形態では、フィードバックは、単一のビットである。他の実施形態では、フィードバックは、エラーの数を示す複数のビットを利用する。次に、送信機は、フィードバックを受信し、フィードバックを利用して、現在の遅延設定がデータアイの内側か外側かを判別する。送信機がフィードバックを受信した後に、送信機は、１つ以上の遅延設定を変更し、トレーニングが不完全であるとみなされる場合（例えば、エラーが示されている場合）、別のテストが実行される。或いは、トレーニングは、（例えば、エラーが示されていない場合に）完了したとみなされ、送信機は、通常のデータオペレーションモードに移行する。
【００２４】
次に、図３を参照すると、非同期フィードバックトレーニングに対応するタイミング図３００の一実施形態が示されている。上述した、非同期フィードバックトレーニングは、送信機と受信機との間の通信を容易にするために、トレーニングシーケンスインジケータを使用することができる。一実施形態では、受信機は、テストパターンのチェックを開始するタイミングを決定するように構成されている。送信クロック３０２が開始すると、送信機及び受信機の両方は、「Ｎ」の整数倍のクロック境界を追跡する。ここで、「Ｎ」はプログラム可能レジスタに記憶され、「Ｎ」はスーパーサイクルにおけるクロックサイクル数を表す。送信機は、スーパーサイクル境界をカウントし、Ｎ／２のスーパーサイクル境界も追跡する。様々な実施形態では、受信機は、スーパーサイクル境界を単に追跡する。一実施形態では、送信機は、トレーニングシーケンス指示を送信する場合に、半分（Ｎ／２）のスーパーサイクル境界（すなわち、スーパーサイクルの中間点）から始まる１のストリングを送信する。スーパーサイクルの途中でこの指示を送信することによって、トレーニングシーケンス指示遷移が受信機でのスーパーサイクル境界内に完全に位置し、境界自体ではなくなることを確実にする。この想定により、受信機は、テストパターンのチェックを開始するタイミングを決定するために、トレーニングシーケンス指示を受信したときからプログラマブルな（Ｍ）個のスーパーサイクルをカウントすることができる。例えば、送信機は、Ｍ番目のスーパーサイクルの境界上でテストパターンを送信し始めるようにプログラミングされている。ここで、Ｍは、いくつかの実施形態においてもプログラム可能な整数である。他の実施形態では、Ｍは、プログラム可能ではない（例えば、Ｍはハードウェアに固定されている）。受信機は、同様に、トレーニングシーケンス指示の検出後にテストパターンがＭ個のスーパーサイクルを開始するのを知るように構成されている。
【００２５】
タイミング図３００は、通信チャネル上の状態変化後にスーパーサイクルカウンタがどのように初期化されるかの一実施形態を示している。上述したように、送信機は、スーパーサイクルをカウントするためのスーパーサイクルカウンタ３０４を有する。送信クロック３０２のサイクルは、送信スーパーサイクルカウンタ３０４の上の行に示されている。一実施形態では、１つのスーパーサイクルは、送信クロック３０２の８クロックサイクルに対応する。このような実施形態では、カウンタは、モジュロ８カウンタである。他の実施形態では、スーパーサイクルは、異なる数の送信クロックサイクルに対応する。受信機は、スーパーサイクルをカウントするスーパーサイクルカウンタ３０８も含み、スーパーサイクルカウンタ３０８は、受信クロック３０６のサイクルの下に示されている。
【００２６】
送信機は、非同期フィードバックトレーニングテストを開始するために、トレーニングシーケンスインジケータ（インジケータ）を受信機に送信する。一実施形態では、トレーニングシーケンスインジケータは、０から１の後に所定数の１が続く遷移である。１のシーケンスの長さは、実施形態に従って変動してもよく、受信機は、トレーニングシーケンスインジケータを検出するために、シーケンスの長さを知っている。一実施形態では、０のシーケンスから１のシーケンスへの遷移は、送信機のスーパーサイクルカウンタ３０４によって決定されるスーパーサイクルの中間点で生じる。受信機は、各のスーパーサイクル境界上のチャネルの状態をチェック後に、この遷移を検出する。例えば、受信機は、所定のスーパーサイクル境界でチャネル上の低電圧を検出し、その後、後続のスーパーサイクル境界でチャネル上の高電圧を検出する。受信機は、連続するスーパーサイクル境界でチャネルの変化を検出したことに応じて、トレーニングパターンシーケンスを受信したかどうか判別するために、チャネル上の後続の高電圧状態の数をカウントする。次に、規定数のスーパーサイクル及び１が受信された後に、テストパターンが（トレーニングシーケンス指示が検出されたと想定して）開始される。図示するように、テストパターンは、タイミング図３００のスーパーサイクル境界で開始される。受信機は、テストパターンを受信して、テストパターンにエラーがあるかチェックする。受信機は、テストパターンの精度をチェックした後に、エラーの有無に関するフィードバックを送信機に返す。
【００２７】
次に、図４を参照すると、通信チャネル４０５及び送信機４２５の一実施形態のブロック図が示されている。通信チャネル４０５は、送信機４２５及び受信機（図示省略）を接続する任意のタイプの通信チャネルを表す。通信チャネル４０５は、実施形態に応じて任意の数のデータレーン４１５Ａ〜４１５Ｌを有してもよい。各データレーン４１５Ａ〜４１５Ｌは、シリアルビットストリームを伝送するように構成されている。通信チャネル４０５は、クロックレーン（図示省略）及び／又は１つ以上の他のレーンを含む。
【００２８】
一実施形態では、通信チャネル４０５のデータレーン４１５Ａ〜４１５Ｌは、データレーンのグループ４２０Ａ〜４２０Ｎに編成される。データレーンの各グループ４２０Ａ〜４２０Ｎのレイアウトは、所定のグループの各データレーンの長さを一致させて、当該グループの信号スキューを最小化するように最適化される。次に、データレーンの各グループは、対応するグループの全てのデータレーンに対して単一の遅延設定を選択するように構成された、対応する遅延ユニット４３５Ａ〜４３５Ｎに接続されている。遅延ユニット４３５Ａ〜４３５Ｎの各々は、他の遅延ユニット４３５Ａ〜４３５Ｎによって選択された遅延設定とは無関係に、データレーンのグループの遅延設定を設定するように構成されている。例えば、１つのシナリオでは、遅延ユニット４３５Ａは、レーン４４０Ａ〜４４０Ｃの各々に対して単一の遅延設定を選択し、遅延ユニット４３５Ｂは、レーン４４０Ｆ〜４４０Ｈに対して異なる単一の遅延設定を選択する。様々な実施形態では、遅延ユニット４３５Ａ〜４３５Ｎは、位相補間及び／又は他の回路構成を備え、他のグループに対して設定された遅延とは異なる可能性のある各グループの遅延を設定するように構成されている。したがって、遅延ユニット４３５Ａは、データグループ４２０Ａの全てのデータ回線４１５Ａ〜４１５Ｃに単一の遅延（すなわち、同じ遅延）を適用し、遅延ユニット４３５Ｂは、データグループ４２０Ｂの全てのデータ回線４１５Ｆ〜４１５Ｈに単一の遅延を適用し、遅延ユニット４３５Ｎは、データグループ４２０Ｎの全てのデータ回線４１５Ｊ〜４１５Ｌに単一の遅延を適用する。さらに、各データレーン４１５Ａ〜４１５Ｌは、個別に制御される遅延要素４４０Ａ〜４４０Ｌを使用して、さらなる遅延によって最適化される。一実施形態では、遅延要素４４０Ａ〜４４０Ｌによって適用されるさらなるレベルの遅延は、本明細書で説明するように、非同期フィードバックトレーニングシーケンスを実行した後に個別にプログラミングされる。
【００２９】
グループ４２０Ａ〜４２０Ｎ及び遅延ユニット４３５Ａ〜４３５Ｎの各々は、所定の通信チャネル４０５に対して実装される任意の数のグループ及び遅延ユニット回路構成を表わしていることに留意されたい。一実施形態では、各グループ４２０Ａ〜４２０Ｎは、同じ数のデータレーンを有する。他の実施形態では、グループ４２０Ａ〜４２０Ｎの一部は、グループ４２０Ａ〜４２０Ｎの他のグループと異なる数のデータレーンを有する。
【００３０】
次に、図５を参照すると、データアイ５００の一実施形態の図が示されている。データアイ５００は、チャネル（例えば、図４の通信チャネル４０５）のデータレーンでのビット遷移をキャプチャすることによってモニタリングされるデータ有効期間の一例である。一実施形態では、送信機（例えば、図４の送信機４２５）は、データアイ５００の境界を検出するために、異なる遅延設定で複数の非同期フィードバックトレーニングシーケンスを実行するように構成されている。送信機は、各テストの結果に関するフィードバックを受信機（例えば、図１の受信機１１０）から受信するように構成されている。受信機は、所定のテストについて検出されたエラーがなかったかどうか、又は、所定のテストについて１つ以上のエラーが検出されたかどうかを示すために、所定のデータレーンでフィードバックを運ぶ。
【００３１】
様々な実施形態では、送信機は、複数の遅延設定で複数のテストを実行し、フィードバックが不良（すなわち、１つ以上のエラーがある）から良好（すなわち、エラーがない）になると、その特定の遅延設定がデータアイ５００の開始５１０と一致すると認識する。送信機は、僅かな増分で遅延を追加し、追加のテストを実行し、フィードバックが良好から不良になると、これをデータアイ５００の終了５２０と識別する。送信機は、データアイ５００の中央５３０を算出するために、開始５１０及び終了５２０の平均をもとめる。データアイ５００の中央５３０に対応する遅延設定は、チャネルの所定のデータレーンに対する遅延設定とみなされる。送信機は、チャネルの各データレーンに対してこれらのテストを実行する。
【００３２】
次に、図６を参照すると、チャネルの第１データレーンに対して非同期トレーニングシーケンスを実行する方法６００の一実施形態が示されている。説明目的で、本実施形態におけるステップは、順番に示されている。後述する方法の様々な実施形態において、説明する要素のうち１つ以上が同時に行われてもよいし、図示した順序とは異なる順序で行われてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素を実行してもよい。同様の代替の実施形態は、図７に示す方法ステップに適用される。本明細書において説明する様々なシステム又は装置の何れかは、方法６００を実行するように構成されている。
【００３３】
送信機は、スーパーサイクルをカウントするためのカウンタを利用する（ブロック６０５）。様々な実施形態では、スーパーサイクルは「Ｎ」クロックサイクルであり、「Ｎ」は正の整数である。例えば、一実施形態では、スーパーサイクルは、別のより高い周波数のシステムクロックの８サイクルに対応し、他の実施形態では、スーパーサイクルは、異なる数のクロックサイクルに対応する。送信機は、送信機を受信機に接続するチャネルの第１データレーンに対して第１遅延設定をプログラミングする（或いは、初期遅延設定を既に有している）（ブロック６１０）。
【００３４】
次に、送信機は、テストパターンが後に続くトレーニングシーケンス指示を受信機に送信する（ブロック６１５）。一実施形態では、トレーニングシーケンス指示は、第１の２進値から、第１の２進値とは異なる第２の２進値（例えば、０から１、又は、その逆）、その後に第２の２進値のビットシーケンスが続くビット遷移を含む。例えば、一実施形態では、トレーニングシーケンス指示は、０から１への遷移から始まり、後に一連の１が続く。一連の１は、所定数のビットを含む。一実施形態では、０から１への遷移は、スーパーサイクルの中間点で生じ、トレーニングシーケンス指示からテストパターンへの遷移は、スーパーサイクルの終わりに生じる。
【００３５】
送信機は、テストパターンを受信機に送信後、チャネルの第１レーンに接続された出力バッファを無効にし、チャネルの同じ第１レーンで受信機からのフィードバックを待機する（ブロック６２０）。様々な実施形態において、フィードバックは、送信されたテストパターンにおいて受信機がエラーを検出したかどうかに関する指標を含む。一実施形態では、送信機は、テストパターンを送信し終えた後、所定数のクロックサイクルを待機する。次に、送信機は、所定数のクロックサイクルを待機した後に第１レーンの状態をキャプチャする（ブロック６２５）。場合によっては、所定数のサイクルは、スーパーサイクルにおいて特定される。
【００３６】
次に、送信機は、第１レーンに対して別のテストを実行するかどうかを判別する（条件ブロック６３０）。一実施形態では、送信機は、第１レーンのデータアイを識別するために、異なる遅延設定でいくつかのテストを実行する。送信機が第１レーンに対して別のテストを実行すると判別した場合（条件ブロック６３０：「はい」）、送信機は、第１レーンの遅延設定を調整し（ブロック６３５）、方法６００は、その後ブロック６１５に戻る。送信機が第１レーンに対して別のテストを実行しないと判別した場合（条件ブロック６３０：「いいえ」）、送信機は、テストからのフィードバックを利用して、第１レーンの遅延設定を決定する（ブロック６４０）。ブロック６４０の後、方法６００は終了する。送信機が、通信チャネルの複数のデータレーンに対して並列に方法６００の複数のインスタンスを実行することができることに留意されたい。
【００３７】
次に、図７を参照すると、チャネルの第１データレーンに対して非同期テストシーケンスを実行する方法７００の一実施形態が示されている。様々な実施形態では、受信機は、スーパーサイクルをカウントする（ブロック７０５）ように構成されている。一実施形態では、単一のスーパーサイクルは、より高いクロック周波数を有するシステムクロックの「Ｎ」クロックサイクルに対応し、「Ｎ」は正の整数である。例えば、一実施形態では、スーパーサイクルは、長さが８（システム）クロックサイクルであり、他の実施形態では、スーパーサイクルは、異なる数のクロックサイクルに対応する。
【００３８】
ブロック７１０では、受信機は、各スーパーサイクルの終わり（又は、境界）において第１データレーンの状態をサンプリングする。第１データレーンは、受信機を送信機に接続するチャネルの１つのレーンである。受信機は、２つの連続するテストの間に第１レーンで（例えば、ビット遷移を表す）電圧遷移が検出されたかどうかを判別する（条件ブロック７１５）。２つの連続するサンプルについて第１レーンで遷移が検出された場合（条件ブロック７１５：「はい」）、受信機は、トレーニングシーケンス指示が第１レーンで受信されたかどうかを判別するために、第１データレーンをサンプリングし続ける（条件ブロック７２０）。一実施形態では、受信機は、第１レーンで検出された値が所定数のクロックサイクルの予想されるトレーニングシーケンス指示と一致する場合、トレーニングシーケンス指示が第１レーンで受信されていると判別する。例えば、トレーニングシーケンス指示が、所定の長さの１のシーケンスが後に続く遷移である場合の実施形態において、受信機は、第１レーンをモニタリングして、受信機が条件ブロック７１５において遷移を検出した後に、１のシーケンスが所定の長さで継続するかどうかを判別する。
【００３９】
受信機が第１レーンでトレーニングシーケンス指示を検出した場合（条件ブロック７２０：「はい」）、受信機は、トレーニングシーケンス指示が終了した後に第１データレーンでデータのキャプチャを開始する（ブロック７２５）。様々な実施形態では、テストパターンは所定の長さを有しており、所定の長さのデータが受信機によってキャプチャされる。一実施形態では、トレーニングシーケンス指示は、スーパーサイクル境界において終了し、テストパターンは、スーパーサイクル境界において開始する。トレーニングシーケンス指示及びテストパターンの正確な長さは、受信機に知られている。受信機が第１レーンでトレーニングシーケンス指示を検出しない場合（条件ブロック７２０：「いいえ」）、方法７００はブロック７１０に戻り、受信機は第１レーンをモニタリングし続ける。
【００４０】
ブロック７２５の後、受信機は、キャプチャされたテストパターンのエラーに関してテストする（ブロック７３０）。一実施形態では、テストパターンは、既知のビットパターンを有する所定の長さの疑似ランダムバイナリシーケンスである。次に、受信機は、第１レーン上の送信機に対して、キャプチャされたテストパターンでエラーが検出されたかどうかを示すフィードバックを送信する（ブロック７３５）。ブロック７３５の後、方法７００はブロック７１０に戻り、受信機は第１レーンをモニタリングし続ける。受信機が、受信機と送信機との間に接続された複数のデータレーンに対して方法７００の複数のインスタンスを同時に実行してもよいことに留意されたい。
【００４１】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令は、上述した方法及び／又はメカニズムを実施するために使用される。プログラム命令には、Ｃ等の高水準プログラミング言語でハードウェアの動作が記述されている。或いは、Ｖｅｒｉｌｏｇ等のハードウェア設計言語（ＨＤＬ）が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多数のタイプの記憶媒体が利用可能である。記憶媒体は、プログラム実行のためにプログラム命令及び付随データをコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。コンピューティングシステムは、少なくとも１つ以上のメモリと、プログラム命令を実行するように構成された１つ以上のプロセッサと、を含む。
【００４２】
上述した実施形態は、実装の非限定的な例に過ぎないことが強調されるべきである。上記の開示を十分に理解することで、多数の変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正の全てを包含すると解釈されることが意図される。
【図１】
2019519029.tif 000003
【図２】
2019519029.tif 000004
【図３】
2019519029.tif 000005
【図４】
2019519029.tif 000006
【図５】
2019519029.tif 000007
【図６】
2019519029.tif 000008
【図７】
2019519029.tif 000009
【国際調査報告】
2019519029.tif 000010
2019519029.tif 000011