(57)【要約】  パラレルデータワード(102)を複数のシリアルデータストリーム(122,124,126,128)へ変換するようになされる送信モジュールを備えるデータ通信装置(100)が説明される。送信モジュールは、複数のグループに配置され、各グループは、データキャリング線(122,124,126,128)を含む。受信モジュール(200)は、送信モジュール(100)から伝えられるデジタルデータを、複数のデータキャリング線(122,124,126,128)を介して集めるようになされる。受信モジュール(200)は、頻度補償コードを検出し、かつ、それに応じて、パラレルワードに戻されるデータを整列し、並びにスキューが原因の再トレーニングシーケンス及び構成シーケンスを軽減するのに使用されるコード検出信号を与える。受信モジュール(200)は、連続的に、グループ間の整列をチェックし、複数のデータグループの整列を自発的に訂正する。
2007502570.tif 000002
【特許請求の範囲】
【請求項１】
パラレルデータワードを複数のシリアルデータストリームへ変換する送信モジュールであって、該シリアルデータストリームがそれぞれデータキャリング線で運ばれる、送信モジュールと、
各データキャリング線に対して、前記データキャリング線により前記送信モジュールから運ばれるデータを集め、頻度補償コードを検出し、前記頻度補償コードに応じて、前記送信モジュールから運ばれる前記データを整列する受信モジュールとを有するデータ通信装置。
【請求項２】
前記受信モジュールは、前記シリアルデータストリーム間の整列を連続的にチェックし、自発的に前記シリアルデータストリーム間の整列を訂正する、請求項１に記載のデータ通信装置。
【請求項３】
前記受信モジュールは、再トレーニングシーケンスリクエストを遅延させ、スキューが原因の再トレーニング及び構成シーケンスを緩和するよう前記頻度補償コードに応じてリトライデータ送信リクエストを与える再トレーニングシーケンス遅延回路を含む、請求項１に記載のデータ通信装置。
【請求項４】
前記頻度補償コードは、スキップコードである、請求項１に記載のデータ通信装置。
【請求項５】
前記受信モジュールは、前記頻度補償コードに応じて、少なくとも１ビット分前記シリアルデータストリームをシフトするシフトレジスタを少なくとも１つ含む、請求項１に記載のデータ通信装置。
【請求項６】
前記受信モジュールは、前記頻度補償コードに応じて少なくとも１ビット分前記シリアルデータをシフトするビットシフトポインタを少なくとも１つ含む、請求項１に記載のデータ通信装置。
【請求項７】
前記受信モジュールは、前記ビットシフトポインタのシフト方向の指示を与える方向指示器を含む、請求項６に記載のデータ通信装置。
【請求項８】
複数のパラレルシリアル変換モジュールを持つパラレルワード格納回路であって、各パラレルシリアル変換モジュールは、前記パラレルワード格納回路からデータの一部である部分データをシリアルに送信し、該部分データはそれぞれ、頻度補償コードが埋め込まれて送信される、パラレルワード格納回路と、
複数のシリアルパラレル変換モジュールを持つ整列格納回路であって、各シリアルパラレル変換モジュールは、前記パラレルワード格納回路から前記部分データを受信し、各シリアルパラレル変換モジュールは、FIFOに並列に接続される、整列格納回路とを有し、前記整列格納回路は、受信した部分データのそれぞれに対する前記頻度補償コードの検出に応じて、データシフト回路へ整列検出信号を与え、前記整列検出信号に応じて、前記部分データから出力されるパラレルデータを適応させるようにシフトする、データ通信装置。
【請求項９】
前記整列格納回路は、再トレーニングリクエストを遅延させ、前記頻度補償コードに応じてリトライデータ送信リクエストを与える再トレーニングシーケンス遅延モジュールを含む、請求項８に記載のデータ通信装置。
【請求項１０】
前記頻度補償コードは、スキップコードである、請求項８に記載のデータ通信装置。
【請求項１１】
前記スキップコードは、ドロップされ、FIFOに置かれない、請求項１０に記載のデータ通信装置。
【請求項１２】
複数のシリアルパラレル変換モジュールを持つ整列格納回路であって、各シリアルパラレル変換モジュールが、PCI Expressバス線に接続し、かつシリアルビットストリームをパラレルデータワードに変換し、各シリアルパラレル変換モジュールはFIFOに並列に接続される、整列格納回路を有するPCI Expressバス受信機において、前記整列格納回路は、各シリアルビットストリームに対する頻度補償コードの検出に応じて、データシフト回路に整列検出信号を与え、前記整列検出信号に応じて各シリアルパラレル変換モジュールでシリアルビットストリームから出力される前記パラレルデータを適応させるようにシフトする、PCI Expressバス受信機。
【請求項１３】
前記整列格納回路は、前記複数のシリアルパラレル変換モジュール間の整列を連続的にチェックし、自発的に前記複数のシリアルパラレル変換モジュール間の整列を訂正する、請求項１２に記載のPCI Expressバス受信機。
【請求項１４】
前記整列格納回路は、再トレーニングシーケンスリクエストを遅延させ、前記頻度補償コードに応じてリトライデータ送信リクエストを与える再トレーニングシーケンス遅延モジュールを含む、請求項１２に記載のPCI Expressバス受信機。
【請求項１５】
前記整列格納回路は、前記複数のシリアルパラレル変換モジュール間の同期エラーを自動的に訂正する前記頻度補償コードを用いる、請求項１２に記載のPCI Expressバス受信機。
【請求項１６】
前記整列格納回路は、前記整列検出信号に応じて、少なくとも１ビット分前記シリアルビットストリームをシフトするシフトレジスタを少なくとも１つ含む、請求項１２に記載のPCI Expressバス受信機。
【請求項１７】
前記整列格納回路は、前記整列検出信号に応じて、少なくとも１ビット分前記シリアルデータをシフトするビットシフトポインタを少なくとも１つ含む、請求項１２に記載のPCI Expressバス受信機。
【請求項１８】
前記整列格納回路は、前記ビットシフトポインタのシフト方向の指示を与える方向指示器を含む、請求項１７に記載のPCI Expressバス受信機。
【請求項１９】
複数のバイトレーンを整列させる方法であって、
パラレルデータを複数のシリアルデータストリームに変換し、前記データストリームは、頻度補償コードでエンコードされており、
複数のバイトレーンを介してシリアルデータを送信し、
複数のバイトレーンからシリアルデータを受信し、
前記複数のバイトレーンからのシリアルデータストリームを、パラレルデータに変換することを有し、前記パラレルデータは前記頻度補償コードを用いて整列される、方法。
【請求項２０】
前記シリアルデータは、PCI Expressバスを介して送信される、請求項１９に記載の方法。
【請求項２１】
前記シリアルデータは、ファストイーサネット接続を介して送信される、請求項１９に記載の方法。
【請求項２２】
パラレルデータを複数のシリアルデータストリームに変換する手段であって、前記データストリームが頻度補償コードでエンコードされる、手段と、
複数のバイトレーンを介してシリアルデータを送信する手段と、
複数のバイトレーンからシリアルデータを受信する手段と、
複数のバイトレーンからのシリアルデータストリームをパラレルデータに変換する手段とを有し、前記パラレルデータが、前記頻度補償コードを用いて整列される、データ通信装置。
【請求項２３】
前記頻度補償コードは、コンマコードを含む、請求項２２に記載のデータ通信装置。
【請求項２４】
前記頻度補償コードは、スキップコードを含む、請求項２２に記載のデータ通信装置。
【請求項２５】
前記頻度補償コードは、スキップコードを含む、請求項２３に記載のデータ通信装置。
【請求項２６】
複数のデータ線においてシリアルフォームでデータ符号を与えるパラレル回路であって、該データ符号の少なくともいくつかが、頻度補償に有益なコードを含む、パラレル回路と、
前記データ符号を整列することにより、及び前記コードを削除することにより、前記コードに応答する整列回路とを有するデータ通信装置。
【請求項２７】
前記整列回路は、再トレーニングシーケンスリクエストを遅延させ、前記コードに応じてリトライデータ送信リクエストを与える再トレーニングシーケンス遅延モジュールを含む、請求項２６に記載のデータ通信装置。
【請求項２８】
前記整列回路は、シフト方向を反転するシフトレジスタを含む、請求項２６に記載のデータ通信装置。
【請求項２９】
前記符号は、クロック情報を含む、請求項２６に記載のデータ通信装置。
【請求項３０】
前記コードは、スキップコードである、請求項２６に記載のデータ通信装置。
【請求項３１】
前記整列回路は、前記コードを検出するとシリアルデータを適応させるようにシフトする、請求項２６に記載のデータ通信装置。
【請求項３２】
データのスキューを解消する方法であって、
パラレルデータを複数のシリアルビットストリームに変換し、
頻度補償コードを前記ビットストリームの少なくとも１つに挿入し、
データスキューの影響を受けやすい複数のパラレルバイトレーンを介して、前記複数のシリアルビットストリームを送信し、
前記複数のシリアルビットストリームを受信し、
前記少なくとも１つの前記ビットストリームの１ビットシフトを行い、
前記複数のシリアルビットストリームをパラレルデータに戻す変換をする前に、前記少なくとも１つの前記ビットストリームから前記頻度補償コードをドロップすることを有する方法。
【請求項３３】
更に、前記１ビットシフトを行う前にシフト方向を決定する事を有する、請求項３２に記載の方法。
【請求項３４】
更に、複数の１ビットシフトを行う前にビットカウントを決定することを有し、シフトの数は、前記決定されたビットカウントに等しい、請求項３２に記載の方法。
【請求項３５】
前記頻度補償コードは、スキップコードである、請求項３２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にデータ通信を対象とする。より詳細には、本発明は、複数のシリアルバイトレーンで送信されるデータ信号のスキューエラー(skew error)から回復し、スキューエラーを訂正する方法及び装置に関する。
【背景技術】
【０００２】
エレクトロニクス産業は、強力で高機能な回路を得ようと努力し続けている。この点に関する重要な功績は、超大規模集積回路の開発により実現された。これらの複雑な回路は、しばしば、一組のデータに関して動作し、かつ、それからそのデータを更なる処理に渡す、機能的に規定されたモジュールとしてデザインされる。このような機能的に規定されたモジュールからのこの通信は、個々の分離した回路間で、同じチップ内に集積された回路間で、システム又はサブシステムの様々な部分に結合され又はその範囲内で離れて位置する回路間で、及びシステムのネットワーク間で、少量又は大量のデータで渡されることができる。構成に関わらず、その通信は通常、一方で実現スペースと利用可能な動作電力との観点から実用的な限界に細心の注意を払う回路デザインを用いながら、データの整合性が維持されることを確実にするようデザインされる綿密に制御されたインタフェースを必要とする。
【０００３】
強力で高機能な半導体デバイスに対する要求の増加は、データが回路ブロック間で渡される際のスピードを増加させることに対する要求をかつてないほど増大させることをもたらした。２つのASICデバイス間での高速、高帯域データ伝送を実現するためには、例えば、バックプレーンで、ワイドパラレル入力データワード(wide parallel input data word)が、より小さな複数のワードに分割され、より小さなワードはそれぞれシリアル形式に変換され、それからシステムクロックに比べ高いクロックレートで、各サブリンクを介して送信される。受信側で、クロックがシリアルワードから再生され、シリアルワードがパラレル形式に戻るよう変換される。それから、整列プロセス(alignment process)が実行される。最初に、ワードのビットの位置を検出することを伴い、それからそのワードをバッファFIFOレジスタに格納する。有効なワードがFIFOレジスタに受信されたことが一旦検出されると、FIFOレジスタのワードは、システムクロックの制御の下、同期するようにクロックアウト(clock out)される。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
このようなシステムにおいて、個々の受信された信号間での任意の位相関係が、適切なデータ再生を与えるよう整列されていることを確実にすることは有益である。しばしば、送信されたデータ信号自身の間、及びデータ信号と目的地で受信されたクロックとの間で、予想される量の時間「スキュー(skew)」が存在する。スキューの原因としては多くのものが存在し、例えば、相互接続に関する信号線の容量的及び導電的負荷によりもたらされる送信遅延、I/O(入力／出力)ドライバソースでの変動、送信線のインピーダンス及び長さにおける符号間干渉及び変動を含む。スキューをもたらすこうした現象に関わらず適切なデータ再生及び訂正を伴う通信を達成するには、多くのアプリケーションにおいて、この問題を考慮すべきことになる。
【０００５】
従って、複数のシリアルバイトレーンを介するデータ通信を改善する必要がある。それは、より実用的な高速データ通信をもたらし、順に、データ整合性を保ち、かつ、実現スペースと消費電力とを少なくするといったような必要性に注意を払いつつ強力な高機能回路を可能にするであろう。複数のレーン間でスキューを訂正し、かつ、レーン内での整列を訂正するという特定の必要性が存在する。
【課題を解決するための手段】
【０００６】
本発明のさまざまな側面が、上述した問題を処理し、解消するような態様で、通信線回路(communication line circuit)を介するデータ転送に向けられる。
【０００７】
ある例示の実施形態によれば、本発明は、パラレルデータワードを複数のシリアルデータストリームに変換する送信モジュールを備えるデータ通信装置を対象とする。送信モジュールは、複数のグループに配置され、各グループは、データキャリング線(data-carrying line)を含む。受信モジュールも、複数のグループに配置され、受信モジュールは、各グループに対して、その複数のデータキャリング線を介して送信モジュールから伝えられるデジタルデータを集めるようになされる。受信モジュールは、頻度補償コード(frequency compensation code)を検出し、頻度補償コードの検出に応じて、受信モジュール内の各グループにコード検出信号を与えるようになされる。コード検出信号は、元のパラレルデータに戻すため集められたデータを整列し、スキューが原因の再トレーニングシーケンスと構成シーケンスとを軽減するのに使用される。
【０００８】
データ通信装置の受信モジュールは、連続的にグループ間の整列をチェックし、自発的に複数のデータグループの整列を訂正する。データ通信装置は、また、再トレーニングシーケンス・リクエストを遅延させ、頻度補償コードに応じてリトライデータ送信リクエストを与えるようになされる再トレーニングシーケンス遅延モジュールも含む。
【０００９】
別の実施形態において、データ通信装置は、複数のグループ間で自動的に同期エラーを訂正するよう頻度補償コードを使用する。データ通信装置は、コード検出信号に応じて、少なくとも１ビット分シリアルデータをシフトするようになされるビットシフトポインタを少なくとも１つ含んでよい。データ通信装置は、また、ビットシフトポインタにおけるシフト方向の指示を与えるようになされる方向指示器を含んでいてもよい。
【００１０】
本発明の更に別の実施形態において、データ通信装置は、複数のパラレルシリアル変換モジュール(parallel to serial conversion module)を持つパラレル回路を含む。各パラレルシリアル変換モジュールは、パラレル回路からのデータの一部（部分データ）をシリアルに(serially)送信するようになされる。各部分データは、頻度補償コードが埋め込まれ送信される。複数のシリアルパラレル変換モジュール(serial to parallel conversion module)を持つ整列回路が含まれる。各シリアルパラレル変換モジュールは、パラレル回路からシリアルビットストリームを受信するようになされ、各シリアルパラレル変換モジュールは、FIFOに並列に接続される。整列回路は、受信した部分データのそれぞれに対する頻度補償コードの検出に応じて、データシフト回路へ整列検出信号を与え、整列検出信号に応じて、適応させるようにシリアルビットストリームをシフトするようになされる。
【００１１】
本発明の別の実施形態において、以下のステップを含む、複数のバイトレーンを整列する方法を開示する。A)パラレルデータを複数のシリアルデータストリームに変換する。ここで、データストリームは、頻度補償コードでエンコードされている；B)シリアルデータを複数のバイトレーンを介して送信する；C)複数のバイトレーンからシリアルデータを受信する；D)複数のバイトレーンからのシリアルデータストリームをパラレルデータに変換する。ここで、パラレルデータは、頻度補償コードを用いて整列される。
【００１２】
本発明の別の実施形態において、複数のシリアルパラレル変換モジュールを持つ整列回路を備えるPCI Expressバス受信機を開示する。各シリアルパラレル変換モジュールは、PCI Expressバス線へ接続し、シリアルビットストリームをパラレルデータワードに変換するようになされる。各シリアルパラレル変換モジュールは、また、FIFOへ並列に接続される。整列回路は、受信した部分データのそれぞれに対する頻度補償コードの検出に応じて、データシフト回路に整列検出信号を与え、整列検出信号に応じて、適応させるように各シリアルパラレル変換モジュールでシリアルビットストリームをシフトするようになされる。整列回路は、連続的に、複数のシリアルパラレル変換モジュール間の整列をチェックし、複数のシリアルパラレル変換モジュール間の整列を自発的に訂正する。
【発明を実施するための最良の形態】
【００１３】
本発明は、対応する図面と共に、本発明の様々な実施形態についての以下の詳細な説明を考慮することでより完全に理解されるであろう。
【００１４】
本発明は、様々な変形及び別の形態に従うことができるが、その仕様は、図面による例を用いて示され、詳細に説明されるであろう。しかしながら、本発明は、説明される特定の実施形態に本発明を限定するものではないことは理解されるべきである。一方、本発明は、添付される請求項により規定される本発明の精神及び範囲に含まれるすべての変形、均等の範囲、及び代替例を覆う。
【００１５】
本発明は、バイトレーンとしても知られる複数のシリアルデータリンクにより相互結合される２つのモジュール（機能ブロック）間でデータを転送する方法及び装置に一般的に適用可能であると確信される。本発明は、特に、データスキューエラーに影響を受けやすい高速データ転送アプリケーションを訂正し、再生することに対して有利であることがわかった。このようなアプリケーションの例示には、とりわけ、Peripheral Component Interconnect Express(PCI Express)；100 BASE-T4(Fast Ethernet)インタフェース；例えば、データ通信パスが１つのチップ上で２つのモジュールを相互結合するようなパケット化内部ルータを用いるシステムオンチップ(system-on-chip)；及び通常同じプリント回路基板上で互いにすぐ隣接して位置するチップ間でのオフボード(off-board)高速通信を含む。本発明は、必ずしも、このようなアプリケーションに限定されないが、本発明の様々な側面における正しい認識が、このような環境における例示の議論を介して最も良く得られる。
【００１６】
本発明の１つの例示的な実施形態によれば、データ通信装置は、送信（又は第１の）モジュール及び受信（又は第２の）モジュールと呼ばれる一組の回路モジュール間での複数のシリアルデータ線でデジタルデータを渡す。デジタルデータは、バイトレーンにより伝えられるスキューイング(skewing:スキューの生じている)データに影響を受けやすい複数のバイトレーンを介して第１のモジュールから第２のモジュールへと送信される。通信装置は、第１及び第２のモジュールが複数のグループ内のバイトレーンを介してデータを通信するようデザインされる。各グループは、データキャリング線を含む。データ処理回路は、これらのデータグループにおけるバイトレーンを介した送信用にデータのセットが提供されるよう、それらを配置する。複数のシステムクロック信号を用いて、データは第２のモジュールでの受信のために複数のバイトレーン上を連続的に送信される。
【００１７】
第２のモジュールは、シリアルイン・パラレルアウト(SIPO)レジスタ又はデータバッファである受信回路と、データ処理回路と、各グループに対する先入れ先出し(FIFO)バッファとを含む。グループに対するデータから再生されるクロック信号を用いて、各グループ内で、受信されたデジタルデータが受信回路で受信され、それから処理されてFIFOバッファへ渡される。
【００１８】
しかしながら、様々なグループ間でのスキューが原因のずれ(misalignment)は、この時点では必ずしも解決されてはいない。FIFOバッファから各グループに対して集められるデータが更に処理される。例えば、整列のために複数のグループ（アプリケーションによっては、すべてのグループ）からのデータを受け入れるのに十分広い別のFIFOバッファを用いて、受信段におけるこの時点でのいずれかのスキューを解消する処理が行われる。バックエンドの整列努力に依存して、多くの実現において、一層大きなFIFOが複数のクロックピリオドにおける内部グループのずれ(inter-group misalignment)を解決するために使用されることができる。もし、ずれが解決されないのであれば、そのときはエラーが生成され、通信リンクは再トレーニングシーケンスと構成シーケンスとを必要とする。
【００１９】
FIFOは、符号整列に対して使用され、送信側及び受信側間での頻度変動を処理するのに使用される。本発明は、頻度補償に使用される特殊なコードを用いて再整列できる能力を含むようこれらのFIFOの機能を拡張する。頻度補償コードは通常、スキップコード(Skip Code)と呼ばれ、中間段(intermediate stage)FIFOに置かれるが、再整列されたパラレルデータワードを転送するのに使用される最終(final)FIFOには置かれない。これは、送信及び発信デバイスにおけるわずかな頻度変動を可能にする。これらのコードは、そこで、再整列のためにも、エラーからの回復のためのどちらにも使用されない。本発明は、現在の使用に対する互換性を保ちつつ、インタフェースを自動的に再整列するのにこれらの同じシーケンスのコードを使用する。
【００２０】
図１を参照すれば、CPU５０は、複数のシリアルリンク１２２、１２４、１２６及び１２８を介してCPU７５にデータを送信することが描かれ、データ通信装置１００を作り出している。データは、ストレージ回路１０２に置かれ、複数のデータ部分１３８、１４０、１４２及び１４４に分割される。部分データ１３８、１４０、１４２及び１４４はそれぞれ、パラレルイン・シリアルアウト(PISO)１０６、１０８、１１０及び１１２にそれぞれ置かれる。部分データ１３８、１４０、１４２及び１４４は、それからシリアルデータストリームに変換され、シリアルリンク１２２、１２４、１２６及び１２８を介して複数のシリアルイン・パラレルアウト(SIPO)１１４、１１６、１１８及び１２０に送信される。
【００２１】
SIPO１１４、１１６、１１８及び１２０は、シリアルデータストリームを複数の受信されたパラレルデータ部分１３０、１３２、１３４及び１３６にそれぞれ戻すよう変換する。前述されたように、データ部分１３０、１３２、１３４及び１３６は、データスキューや他の送信問題の影響を受けやすい。データ部分１３０、１３２、１３４及び１３６は、受信ストレージ回路１０４に置かれ、続いて、CPU７５へ転送される。本発明による受信モジュール２００は、図２において更に詳細に説明される。
【００２２】
受信モジュール２００で説明される要素は、本発明の理解を助けるための説明のためだけのものであることは理解されたい。技術分野において知られているように、ハードウェアとして表される要素は、ソフトウェアでも同様に実現されることができる。特定の電子回路への参照もまた、本発明の理解を助けるためだけのものであり、本質的に同じ機能を行う任意の回路は、均等な回路であると考えられる。
【００２３】
図２を参照すると、受信モジュール２００は、複数のシフトレジスタ２１０、２２０、２３０及び２４０をそれぞれ含んで示されるSIPO１１４、１１６、１１８及び１２０を含む。シフトレジスタ２１０、２２０、２３０及び２４０は、パラレルデータを複数のFIFO２５２、２６２、２７２及び２８２にそれぞれ与える。各FIFO２５２、２６２、２７２及び２８２から少なくとも１ビットが、エラー検出の際にそのデータストリームをシフトするシフトレジスタ２１０、２２０、２３０及び２４０に通知するのに最後に使用される信号を与える整列検出回路２８３により使用される。
【００２４】
SIPO１１４、１１６、１１８及び１２０は、検出整列モジュール２５０、２６０、２７０及び２８０それぞれからの指示を介して、少なくとも１ビット早く(early)又は遅く(late)そのデータをシフトするようになされる。本発明の別の実施形態によれば、SIPO１１４、１１６、１１８及び１２０はまた、複数のドロップスキップモジュール２５５、２６５、２７５及び２８５をそれぞれ介して、例えば、コンマ(COMMA)コード及びスキップ(Skip)シーケンスなどのシーケンスを削除するようになされる。FIFO２５２、２６２、２７２及び２８２へデータをロードする前段でCOMMA及びスキップシーケンスをドロップする(drop:削除する)ことにより、FIFOは、受信ストレージ回路１０４を必要とすることなく、CPU７５（図１）への入力用に直接使用されることができ、ビットレベルのスキューエラーに対する改善された機能とデータ訂正能力とを備えることになる。
【００２５】
図３は、検出整列モジュール２５０、２６０、２７０及び２８０の１つの実現を説明する図である。受信側のデータが到着すると、検出整列モジュールは、新しい符号３１０、以前の符号３２０、及び最古の符号３３０を保持する。以下でより完全に説明されるように、３つの符号はすべて複数のスキップシーケンス比較モジュール３４０、３５０、３６０、３７０、３８０及び３９０で比較される。スキップシーケンスモジュール３４０、３５０及び３６０は、アラインド(aligned:整列された)状態、レイト(late:遅い)状態及びアーリィ(early:早い)状態の符号を比較し、アラインドネガティブ(aligned negative:整列された負)の指示３４１、レイトネガティブ(late negative:遅い負)の指示３５１、及びアーリィネガティブ(early negative:早い負)の指示３６１を与える。スキップシーケンスモジュール３７０、３８０及び３９０は、アラインド状態、レイト状態及びアーリィ状態の符号を比較し、アラインドポジティブ(aligned positive:整列された正)の指示３９１、レイトポジティブ(late positive:遅い正)の指示３８１、及びアーリィポジティブ(early positive:早い正)の指示３７１を与える。
【００２６】
複数のORゲート３１５、３２５及び３３５は、指示３４１、３５１、３６１、３７１、３８１及び３９１を受信し、アーリィ信号３１６、レイト信号３２６及びアラインド信号３３６を与える。アーリィ信号３１６とレイト信号３２６とは、エラーを訂正するためシフトレジスタ２１０、２２０、２３０及び２４０に与えられる。その様子は、以下及び図４においてより詳細に説明されるだろう。アラインド信号３３６は、FIFO２５２、２６２、２７２及び２８２に与えられ、整列検出回路２８３で使用される。
【００２７】
図４は、例えば、シフトレジスタ２１０、２２０、２３０及び２４０のようなビットレベルのスキュー解消の実現を説明するシフト装置を表す。ビットレベルのスキュー解消装置４００は、ラッチ４２０と組み合わされるシフトレジスタ４１０を含む。カウンタ４１５は、適切にスキューが解消されたデータがラッチのために利用可能になったとき、ラッチ４２０に信号を与える。長さ制御モジュール４２５は、アーリィ信号３１６とレイト信号３２６とを受信し、符号又はデータワード内で適切なビットレベルのスキュー解消を与えるようカウントするカウンタ４１５に長さを与える。例えば、カウンタ４１５は通常、符号をラッチする前に１０ビットのシリアルデータをカウントする。もし、１ビット早い状態が検出されると、長さ制御モジュール４２５は、ラッチ４２０に新しいカウント長として１１を与えるであろう。同様に、１ビット遅い状態に対しては、カウンタ４１５は、スキューが解消された符号をラッチする前に９までしかカウントしないであろう。続いて、本発明の機能を説明する。
【００２８】
本発明は、すべての出力が整列されるべきときを一意に識別するビットをFIFOに追加することを含む。この追加ビットは、有益なデータ及び／又は符号と共にFIFOに置かれる。これは、FIFOの読み出し側が、いかなる追加的なスキップコードも必要とすることなく送信レート(sending rate)より遅いスピードで動作する場合に対応する。頻度変動に対して、連続的にすべての個別のシリアル化シフトレジスタとFIFOとを自動再整列することを可能にするためにのみ意図されるスキップシーケンスを用いることが可能である。
【００２９】
この技術を使用することは、決して、FIFOへの入力が遅らされることをもたらすものではない。すべての入力は、独立に書き込まれる。この技術は、また、FIFOの有効な出力が遅らされる又は立ち往生されることをもたらすものでも決してない。整列されたワードのみが使用されることができ、そうしてパフォーマンスにおける罰(performance penalty)又は余分なFIFO深度(FIFO depth)が必要とされることはない。１レーン毎のFIFO深度の余分なビットと最小限の論理とが検出のための追加されるすべてである。自動再整列のこの技術を使用することは、バイトレーンをシフトするための何らかの方法を追加することを必要とする。
【００３０】
最初の仮定は、すべてのレーンが同一のスキューシーケンスを得て、すべてのスキューシーケンスが送信機で整列されるというものである。スキューシーケンスは、再生されるパラレルデータではないスキップ文字(Skip character)を含む。受信及び送信FIFOは、ほぼ同一のスピードで動作する。しかし、どちらか一方が基準レート(base rate)よりわずかに速い又は遅いことが起こりうる。各FIFOは、整列(ALIGN)フラグ専用のビットを持つ。
【００３１】
FIFOの入力側では：
・常にすべてのコム(COM)文字を挿入する
・決してスキップ文字を挿入しない
・COM -> SKIP シーケンスは、ALIGN_PENDING[n]と呼ばれるフラグをセットする。nは、レーン番号である。
・ALIGN[n]フラグは、ALIGN_PENDING[n]がセットされるとき、何らかの値がFIFOに書き込まれるとき、及びALIGN_PENDING[n]がクリアされるときFIFOにセットされる。（これは、最初のデータ又はALIGN[n]フラグを伴うスキップシーケンスに続くKコードにタグ付けをする(tagging)という効果を持つ。）
【００３２】
FIFOの出力側では：
・FIFOは、すべてのFIFOレディフラグ(FIFO ready flag)がフルワードが用意されることを示す真(true)であるときにのみ読み出されることができる
・もしすべてのALIGN[m:0]フラグが、0に等しい場合、転送は整列状態にあると考えられる
・もしすべてのALIGN[m:0]フラグが、1に等しい場合、転送は整列状態にある
・もしいくつかのALIGN[m:0]フラグが1に等しく、いくつかが0に等しい場合、整列エラーが発生した。
【００３３】
正常動作中、自動スキュー調整をシングルクロック（シリアルクロック領域におけるシングルクロック）に限定することは合理的である。しかしながら、トレーニングシーケンスの間、これは、複数のクロックスキューエラーの訂正を可能にするよう拡張されることができる。例えば：
→  以下のすべての例に対して４レーンリンクであると仮定する。
・整列検出 = 0000（これは、正常なシーケンス、フラグはセットされていない。もしすべてのFIFOの用意が整っている(ready)のなら、整列されたワーク(work)のすべてのコンテンツは、整列されており有効であると考えられることができる。）
・整列検出 = 1111（各レーンは、整列シーケンスに続く第１の文字を含む。もしすべてのFIFOの用意が整っているなら、整列されたワークのすべてのコンテンツは、整列されており有効であると考えられることができる。）
・整列検出 = 1101（レーンのうち３つが、有効な整列されたデータを持つ。もしすべてのFIFOが有効であるなら、これはエラーである。自己整列は、整列フラグを欠いているレーンを進める(advancing)必要がある。データコラプションが発生しているであろうが、後続のレーンを進めることはFIFOを自動整列し、エラーをすぐに検出することになるであろう。）
【００３４】
整列エラーが発生し、検出されるとき、利用可能な多くの可能性のある動作が存在する。この種のエラーは通常、この段階で検出される。しかしながら、この段階での致命的なエラーの検出は、復旧時間を短縮し、レーン及びリンク同期を改善するであろう。特に、スタートアップ／構成シーケンスを解析するとき、シーケンスがより一層冗長にされるであろう。これらの目的を容易にするために、以下、自動整列を達成するためこの検出の使用を説明する：
・整列エラーを検出すると、１ビット早い状態又は１ビット遅い状態の検出を用い、それに沿って１ビット入力(bit in)から１０ビットコードへ変換する１０ビットシフトレジスタを調整する。
・バイト同期のための新規検索を開始するため、すべての受信FIFOをリセットし、シンクフラグ(sync flag)のシリアルトゥパラレル(serial to parallel)をクリアする。
・後続するFIFOを進める
【００３５】
[整列検出]
整列検出の機能は、スキップシーケンスの整列を検出することである。スキップシーケンスは通常、コンマコード(Comma code)の後に１つ又は複数のスキップコードが続く。整列検出ブロックは、このシーケンスを検出し、また、２つの追加的なシーケンス、１ビット早い状態であるスキップシーケンスと１ビット遅い状態であるスキップシーケンスとをも検出する。（これは、複数ビット早い状態及び複数ビット遅い状態であるスキップシーケンスも検出するよう拡張されることができるであろう。）
【００３６】
[正常な適切に整列されるスキップシーケンス]
正常な正確に整列されるスキップシーケンスは、正又は負のはっきりした不均一と共に発生することができる。これは、２つの有効なスキップシーケンス、つまり、+コンマ(+comma)の後に１つ又は複数のスキップシーケンスが続く及び -コンマ(-comma)の後に１つ又は複数のスキップシーケンスが続くものをもたらす。以下のビットシーケンスは、すべて、合法な、適切に整列されたスキップシーケンスを表す。
【００３７】
[負のはっきりした不均一を伴うスキップコードシーケンス]
・DATA(n)、+comma、-Skip、+Skip、(+-スキップコードのどちらかが幾つか続く)、DATA(n+1)
(DATA(n)、0011111010、1100001011、0011110100、、、DATA(n+1))
【００３８】
[正のはっきりした不均一を伴うスキップコードシーケンス]
・DATA(n)、-comma、+Skip、-Skip、(+-スキップコードのどちらかが幾つか続く)、DATA(n+1)
(DATA(n)、1100000101、0011110100、1100001011、、、DATA(n+1))
【００３９】
検出整列モジュール２５０、２６０、２７０及び２８０は、上記２つのシーケンスのいずれかが観測されるとき整列フラグを生成する。DATA(n+1)符号が上記２つのシーケンスのいずれかに続く整列フラグを伴いフラグ化される。データストリームにおいて、逃した(missed)又は挿入されたシリアルクロックの場合には、上記シーケンスが１ビット分遅らされるか又は早められる。スキップシーケンスは、高い次元の精度でこの致命的な種類のエラーを検出するのに使用されることができ、かつこのエラーを即座に訂正することを可能にする、周期的な知られるシーケンスである。これらのシーケンスを検出することは、シーケンスがパラレルの１０ビットインタフェースでモニタされるが、エラーはビットレベルにあるという事実によって複雑にされる。
【００４０】
[負のはっきりした不均一を伴うアーリィスキップコードシーケンス]
(DATA(n)、xxxxxxxxx0、0111110101、100001011x、)
【００４１】
[正のはっきりした不均一を伴うアーリィスキップコードシーケンス]
・DATA(n)、-comma、+Skip、-Skip、(+-スキップコードのどちらかが幾つか続く)、DATA(n+1)
(DATA(n)、xxxxxxxxx1、1000001010、011110100x、)
【００４２】
[負のはっきりした不均一を伴うレイトスキップコードシーケンス]
・DATA(n)、+comma、-Skip、+Skip、(+-スキップコードのどちらかが幾つか続く)、DATA(n+1)
(DATA(n)、x001111101、0110000101、1xxxxxxxxx、)
【００４３】
[正のはっきりした不均一を伴うレイトスキップコードシーケンス]
・DATA(n)、-comma、+Skip、-Skip、(+-スキップコードのどちらかが幾つか続く)、DATA(n+1)
(DATA(n)、x110000010、1001111010、0xxxxxxxxx、、、DATA(n+1))
【００４４】
[アラインド、アーリィ、レイトスキップコードの実現]
簡単化のため、負の不均一を伴い始まるシーケンスだけを考える。正の不均一シーケンスは、機能的に同等の論理パスに従うが、正反対の極性と方向とに対してのものとなる。この回路は、実際、両方の種類の動作不均一性をチェックする。即座的な実施形態において、スキップシーケンスが存在するかどうかを見るために、シリアルビットストリームから受信した最近の３バイト（符号）が検査される。最近の３バイトの履歴から適切なビットを選択することによって、整列されたシーケンスが最近の２バイト内に発見され、アーリィ及びレイトシーケンスが図３に示される最近の３バイトの様々なビット内に発見される。
【００４５】
適切に整列されたデータストリームにおいて、スキップシーケンスが実際のスキップシーケンスに対してのみ検出されるであろうことが保証される。しかしながら、良いストリームが、誤ったアーリィ及びスキップコードシーケンス検出を持つことは起こりうる。これは、受け入れることができ、問題、又は誤った訂正を何も引き起こさない。アーリィであるビットストリームが、整列されたスキップコード又はレイトスキップコードシーケンスを正常なデータ内に誤って検出することができることも起こりうる。レイトであるビットストリームが、整列されたスキップコード又はアーリィスキップコードシーケンスを誤って検出することができることが起こりうる。適切に整列されたデータストリームは、整列されたフラグを常に正確に生成する。訂正は、１つのレーンがエラー状態にあるときにのみ、前に説明された、複数の整列フラグからのエラー検出を用いて、ビットストリームに対してなされるべきである。エラー状態のレーンは、適切な訂正において最良の推測を行うために、アーリィ、レイト又はアラインドという、最後に観測されたスキップコードシーケンス整列を用いることができる。
【００４６】
最後に観測された整列が、アラインド(aligned)である場合、何の訂正もなされるべきではない。しかし、スキップコードの最後に観測された整列が、アーリィである場合、シリアルパラレル変換は、１ビットクロック分遅延されるべきであり、最後に観測されたスキップシーケンスの整列が、レイトである場合、ストリームは、シリアルストリームを１ビット進めることにより、つまりそれを９ビットに遅らせることによりアーリィ(early)に変動されるべきである。
【００４７】
従って、複数のバイトレーンアプリケーションにおけるスキュー問題を処理するため、様々な実施形態が、本発明の例示の実現として説明された。このような実現のそれぞれにおいて、グループにまたがるスキューが、データスキューエラーを再整列し、エラーから回復するための頻度補償コードを用いて、再トレーニングシーケンス及び構成シーケンスを必要とすることなく再整列され、及び訂正される。
【００４８】
本発明は、上述された特定の例に限定されると考えられるべきではない。本発明が適用可能な多数の構造に加え、様々な修正、均等なプロセスが、本発明の範囲に含まれる。例えば、マルチチップ又はシングルチップ装置が、チップセット装置間で通信するための同様に構築される片方向又は双方向のインタフェースを用いて実現されることができる。このような変形は、添付される請求項において適正に説明される、請求項に記載された発明の一部として考えることができる。
【図面の簡単な説明】
【００４９】
【図１】本発明による、複数のデータキャリング線を含む通信チャネルを介して、デジタルデータが第１のモジュールから第２のモジュールへと複数のシリアルパスで転送される、例示的なデータ通信装置を示す図である。
【図２】本発明による、図１で説明される受信モジュールの拡大図である。
【図３】データ整列検出装置を説明する図である。
【図４】スキュー解消シフト装置を説明する図である。
【図１】
2007502570.tif 000003
【図２】
2007502570.tif 000004
【図３】
2007502570.tif 000005
【図４】
2007502570.tif 000006
【国際調査報告】
2007502570.tif 000007
2007502570.tif 000008
2007502570.tif 000009