(57)【特許請求の範囲】
【請求項１】
第１期間において、第１乱数を用いて第１データ列をスクランブルすることで生成される、前記第１乱数を含む第１送信データ列を、データ送信装置から受信し、第２期間において、前記第１乱数を更新して得られる第２乱数を用いて第２データ列をスクランブルすることで生成される、前記第２乱数を含む第２送信データ列を、前記データ送信装置から受信する受信部と、
前記受信部が受信した前記第１送信データ列に含まれる前記第１乱数を更新して、前記第２乱数を生成する更新部と、
前記更新部が生成した前記第２乱数を用いて前記第２送信データ列をデスクランブルすることで、前記第２送信データ列から前記第２データ列を復元する復元部と、
前記復元部が復元した前記第２データ列が所定のデータ列である場合、生成した乱数を更新するように前記更新部を制御する制御部と、
を備えることを特徴とするデータ転送装置。
【請求項２】
前記受信部は、前記第２期間を含む複数の期間それぞれにおいて、前記第２送信データ列を含む複数の送信データ列を前記データ送信装置から受信し、
前記復元部は、前記複数の送信データ列をデスクランブルすることで、前記複数の送信データ列から前記第２データ列を含む複数のデータ列を復元し、
前記制御部は、
前記復元部が復元した前記複数のデータ列から前記所定のデータ列を検出する第１検出部と、
前記第１検出部が前記所定のデータ列を検出した回数をカウントし、前記所定のデータ列を検出した回数が第１所定回数に達した場合、前記生成した乱数の更新を指示する制御信号を前記更新部へ出力する判定部と、
を含むことを特徴とする請求項１記載のデータ転送装置。
【請求項３】
前記制御部は、前記復元部が復元した前記複数のデータ列から、前記所定のデータ列とは異なるデータ列を検出する第２検出部をさらに含み、
前記判定部は、前記所定のデータ列を検出した回数が前記第１所定回数に達した後に、前記第２検出部が前記異なるデータ列を検出しなかった回数をカウントし、前記異なるデータ列を検出しなかった回数が第２所定回数に達した場合、前記制御信号を解除して、前記第１検出部が前記所定のデータ列を検出した回数をリセットすることを特徴とする請求項２記載のデータ転送装置。
【請求項４】
前記判定部は、前記所定のデータ列を検出した回数が前記第１所定回数に達した後に、前記第２検出部が前記異なるデータ列を検出した回数をカウントし、前記異なるデータ列を検出した回数が第３所定回数に達しない場合、前記制御信号を解除して、前記第１検出部が前記所定のデータ列を検出した回数をリセットすることを特徴とする請求項２又は３記載のデータ転送装置。
【請求項５】
第１データ転送装置と第２データ転送装置とを備えるデータ転送システムであって、
前記第１データ転送装置は、
第１データ列と第２データ列とを生成する生成部と、
第１乱数を更新して第２乱数を生成する第１更新部と、
前記第１乱数を用いて前記第１データ列をスクランブルすることで、前記第１乱数を含む第１送信データ列を生成し、前記第２乱数を用いて前記第２データ列をスクランブルすることで、前記第２乱数を含む第２送信データ列を生成するランダム化部と、
第１期間において前記第１送信データ列を前記第２データ転送装置へ送信し、第２期間において前記第２送信データ列を前記第２データ転送装置へ送信する送信部とを含み、
前記第２データ転送装置は、
前記第１期間において前記第１データ転送装置から前記第１送信データ列を受信し、前記第２期間において前記第１データ転送装置から前記第２送信データ列を受信する受信部と、
前記受信部が受信した前記第１送信データ列に含まれる前記第１乱数を更新して、前記第２乱数を生成する第２更新部と、
前記第２更新部が生成した前記第２乱数を用いて前記第２送信データ列をデスクランブルすることで、前記第２送信データ列から前記第２データ列を復元する復元部と、
前記復元部が復元した前記第２データ列が所定のデータ列である場合、生成した乱数を更新するように前記第２更新部を制御する制御部とを含む、
ことを特徴とするデータ転送システム。
【請求項６】
第１データ転送装置と第２データ転送装置とを備えるデータ転送システムの制御方法であって、
前記第１データ転送装置が、第１乱数を用いて第１データ列をスクランブルすることで、前記第１乱数を含む第１送信データ列を生成し、
第１期間において、前記第１データ転送装置が、前記第１送信データ列を前記第２データ転送装置へ送信し、
前記第２データ転送装置が、前記第１データ転送装置から前記第１送信データ列を受信し、
前記第２データ転送装置が、受信した前記第１送信データ列に含まれる前記第１乱数を更新して、前記第２乱数を生成し、
前記第１データ転送装置が、前記第１乱数を更新して前記第２乱数を生成し、
前記第１データ転送装置が、前記第２乱数を用いて第２データ列をスクランブルすることで、前記第２乱数を含む第２送信データ列を生成し、
第２期間において、前記第１データ転送装置が、前記第２送信データ列を前記第２データ転送装置へ送信し、
前記第２データ転送装置が、前記第１データ転送装置から前記第２送信データ列を受信し、
前記第２データ転送装置が、生成した前記第２乱数を用いて前記第２送信データ列をデスクランブルすることで、前記第２送信データ列から前記第２データ列を復元し、
前記第２データ転送装置が、復元した前記第２データ列が所定のデータ列である場合、生成した乱数を更新する、
ことを特徴とするデータ転送システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置、データ転送システム、及びデータ転送システムの制御方法に関する。
【背景技術】
【０００２】
情報処理システムの高速シリアルバスを用いたデータ転送において、伝送品質向上のために、スクランブラ及びデスクランブラと呼ばれる回路が用いられている。送信側のデータ転送装置（データ送信装置）は、スクランブラによってデータをランダム化し、ランダム化したデータを受信側のデータ転送装置（データ受信装置）へ送信する。データ受信装置は、ランダム化されたデータを受信し、デスクランブラによって受信データから元のデータを復元する。このように、スクランブラによって送信データをランダム化することで、次のような効果が得られる。
（１）データ受信装置に設けられたClock Data Recovery（ＣＤＲ）回路がクロック信号を再生するために利用する、データエッジの発生頻度が増加する。
（２）送信データの論理“１”と論理“０”のバランスが良くなり、ベースライン・ワンダによる伝送品質の悪化が防止される。
（３）送信データの固定周波数成分が低下するため、電磁波ノイズのピーク低減に寄与する。
（４）送信データの固定周波数成分による符号間干渉（Intersymbol Interference）によって伝送品質が悪化することが防止される。
【０００３】
スクランブラ及びデスクランブラは、同一の多項式に基づいてデータのランダム化及び復元を行う。このため、デスクランブラがデータを復元する際には、デスクランブラがスクランブラと同期化される。
【０００４】
例えば、PCI Express Base Specification Revision 3.0等で使用されるアディティブ・スクランブラの場合、線形帰還シフトレジスタ（ＬＦＳＲ）を用いて乱数が生成される。データ送信装置のスクランブラは、スクランブラ及びデスクランブラの同期化のために、ＬＦＳＲ初期化パターンをデータ受信装置へ送信するとき、スクランブラのＬＦＳＲが保持する乱数を、シード値と呼ばれる初期値に初期化する。データ受信装置のデスクランブラは、データ送信装置からＬＦＳＲ初期化パターンを受信したとき、デスクランブラのＬＦＳＲが保持する乱数をシード値に初期化する。
【０００５】
データ送信装置及びデータ受信装置は、ＬＦＳＲ初期化パターンを送受信することで、スクランブラ及びデスクランブラの乱数を同じ値に初期化し、これによってスクランブラ及びデスクランブラの同期化が完了する。同期化完了後に、デスクランブラは、スクランブルされている受信データを正しく復元できるようになる。アディティブ・スクランブラは、同期スクランブラと呼ばれることがある。
【０００６】
フレーム同期信号にデータ信号列を付加した信号をスクランブルして伝送するシステムも知られている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開昭６３−２２６１４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来のデータ転送装置では、通常データはスクランブルしてから送信されるが、ＬＦＳＲ初期化パターンはスクランブルすることなく送信される。このため、スクランブルされていないＬＦＳＲ初期化パターンの送信によって、伝送品質の低下を招く可能性がある。
【０００９】
なお、かかる問題は、PCI Expressで使用されるアディティブ・スクランブラに限らず、他のデータ転送システムにおいて使用されるスクランブラにおいても生ずるものである。
【００１０】
１つの側面において、本発明は、スクランブラ及びデスクランブラの同期化を行うデータ転送システムにおいて、伝送品質の低下を抑制することを目的とする。
【課題を解決するための手段】
【００１１】
１つの案では、データ転送装置は、受信部、更新部、復元部、及び制御部を含む。
受信部は、第１期間において、第１乱数を用いて第１データ列をスクランブルすることで生成される、第１乱数を含む第１送信データ列を、データ送信装置から受信する。そして、受信部は、第２期間において、第１乱数を更新して得られる第２乱数を用いて第２データ列をスクランブルすることで生成される、第２乱数を含む第２送信データ列を、データ送信装置から受信する。
【００１２】
更新部は、受信部が受信した第１送信データ列に含まれる第１乱数を更新して、第２乱数を生成する。復元部は、更新部が生成した第２乱数を用いて第２送信データ列をデスクランブルすることで、第２送信データ列から第２データ列を復元する。制御部は、復元部が復元した第２データ列が所定のデータ列である場合、生成した乱数を更新するように更新部を制御する。
【発明の効果】
【００１３】
実施形態によれば、スクランブラ及びデスクランブラの同期化を行うデータ転送システムにおいて、伝送品質の低下を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】アディティブ・スクランブラを用いたデータ転送システムの構成図である。
【図２】スクランブラの構成図である。
【図３】デスクランブラの構成図である。
【図４】ＬＦＳＲ初期化パターンを用いないデータ転送システムの構成図である。
【図５】データ転送システムの制御方法のフローチャートである。
【図６】データ転送システムの具体例を示す構成図である。
【図７】デスクランブラロックパターンを示す図である。
【図８】ＬＦＳＲ初期化パターンを用いないスクランブラの構成図である。
【図９】ＬＦＳＲ初期化パターンを用いないデスクランブラの構成図である。
【図１０Ａ】判定部の動作を示すフローチャート（その１）である。
【図１０Ｂ】判定部の動作を示すフローチャート（その２）である。
【図１１】デスクランブラの動作を示すタイミングチャートである。
【図１２Ａ】受信シーケンスコントローラの動作を示すフローチャート（その１）である。
【図１２Ｂ】受信シーケンスコントローラの動作を示すフローチャート（その２）である。
【図１３Ａ】送信シーケンスコントローラの動作を示すフローチャート（その１）である。
【図１３Ｂ】送信シーケンスコントローラの動作を示すフローチャート（その２）である。
【図１３Ｃ】送信シーケンスコントローラの動作を示すフローチャート（その３）である。
【図１４】送信シーケンスコントローラの動作を示すタイミングチャートである。
【図１５】情報処理システムの構成図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照しながら、実施形態を詳細に説明する。
図１は、アディティブ・スクランブラを用いたデータ転送システムの構成例を示している。図１のデータ転送システムは、データ転送装置１０１及びデータ転送装置１０２を含む。データ転送装置１０１は、送信回路１１１、受信回路１１２、及びトレーニング制御部１１３を含み、データ転送装置１０２は、送信回路１２１、受信回路１２２、及びトレーニング制御部１２３を含む。シリアルバス１０３は、データ転送装置１０１の送信回路１１１と、データ転送装置１０２の受信回路１２２とを接続するとともに、データ転送装置１０２の送信回路１２１と、データ転送装置１０１の受信回路１１２とを接続する。
【００１６】
トレーニング制御部１１３は、送信シーケンスコントローラ１５１及び受信シーケンスコントローラ１５２を含み、シリアルバス１０３のリンク初期化及びリンク再初期化の制御を行う。送信シーケンスコントローラ１５１は、主として送信回路１１１に対する制御を行い、受信シーケンスコントローラ１５２は、主として受信回路１１２に対する制御を行う。
【００１７】
送信回路１１１は、Cyclic Redundancy Check（ＣＲＣ）生成部１３１、パターン生成部１３２、セレクタ１３３、スクランブラ１３４、セレクタ１３５、エンコーダ１３６、及び変換部１３７を含む。受信回路１１２は、変換部１４１、アライメント回路１４２、アライメント検出部１４３、エラスティックバッファ１４４、デコーダ１４５、デスクランブラ１４６、パターン受信部１４７、及びＣＲＣチェッカ１４８を含む。
【００１８】
スクランブラ１３４は、アディティブ・スクランブラであり、デスクランブラ１４６は、アディティブ・デスクランブラである。以下では、スクランブラ１３４及びデスクランブラ１４６が保持する乱数を、ＬＦＳＲ値と記すことがある。
【００１９】
データ転送装置１０２の送信回路１２１、受信回路１２２、及びトレーニング制御部１２３の構成についても、データ転送装置１０１の送信回路１１１、受信回路１１２、及びトレーニング制御部１１３の構成と同様である。
【００２０】
まず、送信回路１１１の動作について説明する。リンク初期化中において、送信回路１１１は、Training Sequence Ordered Set 1（ｔｓｏｓ１）及びｔｓｏｓ２と呼ばれるトレーニングパターンをデータ転送装置１０２へ送信する。以下では、ｔｓｏｓ１及びｔｓｏｓ２を、単にｔｓｏｓと記すことがある。
【００２１】
トレーニング制御部１１３は、ｔｓｏｓ１の送信を指示する信号ｔｓｏｓ１＿ｓｅｎｄ及びｔｓｏｓ２の送信を指示する信号ｔｓｏｓ２＿ｓｅｎｄをパターン生成部１３２へ出力する。また、トレーニング制御部１１３は、スクランブラ１３４の出力を選択する信号ｓｃｒａｍｂｌｅｒ＿ｓｅｌｅｃｔをセレクタ１３５へ出力する。パターン生成部１３２は、ｔｓｏｓを生成し、セレクタ１３３は、ｔｓｏｓをスクランブラ１３４へ出力し、スクランブラ１３４は、ｔｓｏｓをスクランブルし、セレクタ１３５は、スクランブルされたｔｓｏｓをエンコーダ１３６へ出力する。
【００２２】
エンコーダ１３６は、スクランブルされたｔｓｏｓをエンコードすることで、そのｔｓｏｓにｅｎｃ−ｂｉｔを付加する。ｅｎｃ−ｂｉｔは、エンコードブロックの境界、トレーニングパターン又はパケット等のデータ種別、スクランブルの有無等を示す情報を含む。データ転送装置１０２は、ｅｎｃ−ｂｉｔによって、エンコードブロックの境界、データ種別、スクランブルの有無等を判定することができる。スクランブル後に付加されるｅｎｃ−ｂｉｔ自体は、スクランブルされていない。
【００２３】
変換部１３７は、エンコードされたｔｓｏｓを、パラレルデータからシリアルデータに変換し、シリアルバス１０３へ出力する。これにより、ｔｓｏｓがデータ転送装置１０１からデータ転送装置１０２へ送信される。
【００２４】
ｔｓｏｓの送信中において、送信回路１１１は、スクランブラ１３４と受信回路１２２内のデスクランブラとを同期化するため、定期的に、ＬＦＳＲ初期化パターンと呼ばれるトレーニングパターンをデータ転送装置１０２へ送信する。
【００２５】
トレーニング制御部１１３は、ＬＦＳＲ初期化パターンの送信を指示する信号ｄｓｃ＿ｉｎｉｔ＿ｐｔｎ＿ｓｅｎｄをパターン生成部１３２へ出力し、ＬＦＳＲ値の初期値を選択する信号ｓｃｒａｍｂｌｅｒ＿ｉｎｉｔをスクランブラ１３４へ出力する。パターン生成部１３２は、ＬＦＳＲ初期化パターンを生成し、セレクタ１３３は、ＬＦＳＲ初期化パターンをセレクタ１３５へ出力し、セレクタ１３５は、ＬＦＳＲ初期化パターンをエンコーダ１３６へ出力する。したがって、ＬＦＳＲ初期化パターンは、スクランブラ１３４を迂回してエンコーダ１３６へ出力される。
【００２６】
エンコーダ１３６は、ＬＦＳＲ初期化パターンをエンコードし、変換部１３７は、エンコードされたＬＦＳＲ初期化パターンをシリアルデータに変換して、シリアルバス１０３へ出力する。これにより、ＬＦＳＲ初期化パターンがデータ転送装置１０１からデータ転送装置１０２へ送信される。
【００２７】
リンク初期化が完了すると、ＣＲＣ生成部１３１は、通常データのパケットにＣＲＣを付加して、セレクタ１３３へ出力する。トレーニング制御部１１３は、ＣＲＣ生成部１３１の出力を選択する信号ｐａｃｋｅｔ＿ｓｅｌｅｃｔをセレクタ１３３へ出力し、スクランブラ１３４の出力を選択する信号ｓｃｒａｍｂｌｅｒ＿ｓｅｌｅｃｔをセレクタ１３５へ出力する。
【００２８】
セレクタ１３３は、パケットをスクランブラ１３４へ出力し、スクランブラ１３４は、パケットをスクランブルする。セレクタ１３５は、スクランブルされたパケットをエンコーダ１３６へ出力し、エンコーダ１３６は、スクランブルされたパケットをエンコードし、変換部１３７は、エンコードされたパケットをシリアルデータに変換して、シリアルバス１０３へ出力する。これにより、パケットがデータ転送装置１０１からデータ転送装置１０２へ送信される。
【００２９】
リンク初期化中又はリンク初期化完了後に関わらず、送信回路１１１は、定期的にSKIP Ordered Set（ｓｋｐｏｓ）と呼ばれるパターンをデータ転送装置１０２へ送信する。ｓｋｐｏｓは、データ転送装置１０１とデータ転送装置１０２との間におけるオシレータの周波数偏差を吸収するために用いられる。
【００３０】
トレーニング制御部１１３は、ｓｋｐｏｓの送信を指示する信号ｓｋｐｏｓ＿ｓｅｎｄをパターン生成部１３２へ出力する。パターン生成部１３２によって生成されるｓｋｐｏｓは、スクランブラ１３４を迂回してエンコーダ１３６へ出力され、変換部１３７からシリアルバス１０３へ出力される。これにより、ｓｋｐｏｓがデータ転送装置１０１からデータ転送装置１０２へ送信される。
【００３１】
このとき、トレーニング制御部１１３は、ＬＦＳＲ値のホールドを指示する信号ｓｃｒａｍｂｌｅｒ＿ｈｏｌｄをスクランブラ１３４へ出力し、スクランブラ１３４は、ＬＦＳＲ値をホールドする。
【００３２】
次に、受信回路１１２の動作について説明する。データ転送装置１０２の送信回路１２１も、送信回路１１１と同様に動作して、ｔｓｏｓ、ＬＦＳＲ初期化パターン、及びｓｋｐｏｓをデータ転送装置１０１へ送信する。変換部１４１は、シリアルバス１０３から入力される受信データを、シリアルデータからパラレルデータに変換して、アライメント回路１４２及びアライメント検出部１４３へ出力する。
【００３３】
リンク初期化中において、アライメント検出部１４３は、受信データのｅｎｃ−ｂｉｔ等に基づいて、エンコードブロックの境界を検出する。そして、アライメント検出部１４３は、エンコードブロックの境界の検出を示す信号ａｌｉｇｎ＿ｄｅｔと、エンコードブロックの境界を含むデータａｌｉｇｎ＿ｂｏｕｎｄａｒｙとを、アライメント回路１４２へ出力する。
【００３４】
アライメント回路１４２は、検出されたエンコードブロックの境界に基づいて、受信データをエラスティックバッファ１４４のライト側に書き込む。これにより、エラスティックバッファ１４４のリード側は、エンコードブロック単位で受信データを扱えるようになる。
【００３５】
エラスティックバッファ１４４は、アライメント回路１４２からライト動作が継続して行われているとき、エラスティックバッファ１４４がアクティブであることを示す信号ｅｌｂｆ＿ａｃｔをトレーニング制御部１１３へ出力する。トレーニング制御部１１３は、エラスティックバッファ１４４がアクティブである場合、エンコードブロックのアライメントが完了していると認識する。そして、リンク初期化が完了すると、検出されたエンコードブロックのアライメントがホールドされる。
【００３６】
変換部１４１、アライメント回路１４２、アライメント検出部１４３、及びエラスティックバッファ１４４のライト側は、クロック信号ｒｘ＿ｃｌｋの領域である。受信回路１１２内に設けられたＣＤＲ回路（不図示）は、受信データからタイミング信号を再生することで、ｒｘ＿ｃｌｋを生成する。エラスティックバッファ１４４において、ｒｘ＿ｃｌｋから、受信回路１１２のPhysical Coding Sublayer（ＰＣＳ）のクロック信号ｐｃｓ＿ｃｌｋへの乗り換えが行われる。
【００３７】
リンク初期化中又はリンク初期化完了後に関わらず、デコーダ１４５は、エラスティックバッファ１４４から読み出された受信データをデコードする。このとき、デコーダ１４５は、ｅｎｃ−ｂｉｔを参照して、データ種別及びスクランブルの有無を判定し、スクランブルされている受信データを、デスクランブラ１４６へ出力する。また、デコーダ１４５は、スクランブルされていないＬＦＳＲ初期化パターン、ｓｋｐｏｓ等の受信データを、パターン受信部１４７へ出力する。デスクランブラ１４６は、スクランブルされている受信データをデスクランブルして、非スクランブルデータを復元する。
【００３８】
パターン受信部１４７は、デスクランブラ１４６から出力される非スクランブルデータからｔｓｏｓを検出し、ｔｓｏｓ１の検出を示す信号ｔｓｏｓ１＿ｄｅｔ及びｔｓｏｓ２の検出を示す信号ｔｓｏｓ２＿ｄｅｔをトレーニング制御部１１３へ出力する。また、パターン受信部１４７は、デコーダ１４５から直接出力される受信データから、ＬＦＳＲ初期化パターン及びｓｋｐｏｓを検出する。
【００３９】
パターン受信部１４７は、ＬＦＳＲ初期化パターンを検出したとき、ＬＦＳＲ値の初期値を選択する信号ｄｅｓｃｒａｍｂｌｅｒ＿ｉｎｉｔをデスクランブラ１４６へ出力し、デスクランブラ１４６は、ＬＦＳＲ値を初期化する。また、パターン受信部１４７は、ｓｋｐｏｓを検出したとき、ＬＦＳＲ値をホールドする信号ｄｅｓｃｒａｍｂｌｅｒ＿ｈｏｌｄをデスクランブラ１４６へ出力し、デスクランブラ１４６は、ＬＦＳＲ値をホールドする。
【００４０】
そして、リンク初期化が完了すると、ＣＲＣチェッカ１４８は、非スクランブルデータのＣＲＣをチェックし、非スクランブルデータをパケットとして出力する。また、トレーニング制御部１１３は、受信データが有効であることを示す信号ｒｘ＿ｐａｃｋｅｔ＿ｖａｌｉｄを出力する。
【００４１】
リンク初期化中又はリンク初期化完了後に関わらず、デコーダ１４５は、デコードエラーが発生したとき、デコードエラーの発生を示す信号ｄｅｃｏｄｅ＿ｅｒｒｏｒをトレーニング制御部１１３へ出力する。また、ＣＲＣチェッカ１４８は、ＣＲＣエラーが発生したとき、ＣＲＣエラーの発生を示す信号ｃｒｃ＿ｅｒｒｏｒをトレーニング制御部１１３へ出力する。
【００４２】
トレーニング制御部１１３は、デコードエラー又はＣＲＣエラーの多発に基づいて、エンコードブロックのアライメントずれ等を検出することができる。エンコードブロックのアライメントずれが発生していると推測される場合、トレーニング制御部１１３は、アライメント検出部１４３に対してアライメントの再実行を指示する信号ａｌｉｇｎ＿ｒｅ＿ｌｏｃｋを出力する。リンク初期化が完了している場合は、リンク初期化が再開される。
【００４３】
図２は、図１のスクランブラ１３４の構成例を示している。図２のスクランブラ１３４は、ＬＦＳＲ２０１、セレクタ２０２、論理和（ＯＲ）回路２０３、フリップフロップ（ＦＦ）２０４、及び排他的論理和（ＸＯＲ）回路２０５を含む。ＦＦ２０４は、ＬＦＳＲ値を保持し、ＸＯＲ回路２０５は、ＦＦ２０４が出力するＬＦＳＲ値と入力データＤ１との排他的論理和を、スクランブルされた送信データＤ２として出力する。
【００４４】
ＬＦＳＲ２０１は、ＦＦ２０４が出力するＬＦＳＲ値を更新して、次のＬＦＳＲ値を生成し、セレクタ２０２へ出力する。ＯＲ回路２０３は、セレクタ２０２が出力する信号とリセット信号Ｒとの論理和を、ＦＦ２０４へ出力する。リセット時以外は、リセット信号Ｒは論理“０”に設定される。セレクタ２０２は、トレーニング制御部１１３が出力するｓｃｒａｍｂｌｅｒ＿ｉｎｉｔ及びｓｃｒａｍｂｌｅｒ＿ｈｏｌｄによって制御される。
【００４５】
ＬＦＳＲ初期化パターンの送信時に、トレーニング制御部１１３は、ｓｃｒａｍｂｌｅｒ＿ｉｎｉｔを論理“１”に設定し、セレクタ２０２は、初期値を表す信号ｌｆｓｒ＿ｉｎｉｔ＿ｖａｌｕｅを選択して、ＯＲ回路２０３へ出力する。これにより、ｌｆｓｒ＿ｉｎｉｔ＿ｖａｌｕｅがＦＦ２０４に格納され、ＬＦＳＲ値が初期化される。
【００４６】
また、ｓｋｐｏｓの送信時に、トレーニング制御部１１３は、ｓｃｒａｍｂｌｅｒ＿ｈｏｌｄを論理“１”に設定し、セレクタ２０２は、ＦＦ２０４が出力するＬＦＳＲ値を選択して、ＯＲ回路２０３へ出力する。これにより、ＦＦ２０４のＬＦＳＲ値がホールドされ、ＬＦＳＲ値は更新されない。
【００４７】
一方、ｔｓｏｓ及び通常データの送信時に、セレクタ２０２は、ＬＦＳＲ２０１が出力する信号を選択して、ＯＲ回路２０３へ出力する。これにより、ＦＦ２０４のＬＦＳＲ値が次のＬＦＳＲ値に更新される。
【００４８】
図３は、図１のデスクランブラ１４６の構成例を示している。図３のデスクランブラ１４６は、ＬＦＳＲ３０１、セレクタ３０２、ＯＲ回路３０３、ＦＦ３０４、及びＸＯＲ回路３０５を含む。ＦＦ３０４は、ＬＦＳＲ値を保持し、ＸＯＲ回路３０５は、ＦＦ３０４が出力するＬＦＳＲ値と、スクランブルされた入力データＤ３との排他的論理和を、非スクランブルデータＤ４として出力する。
【００４９】
ＬＦＳＲ３０１は、ＦＦ３０４が出力するＬＦＳＲ値を更新して、次のＬＦＳＲ値を生成し、セレクタ３０２へ出力する。ＯＲ回路３０３は、セレクタ３０２が出力する信号とリセット信号Ｒとの論理和を、ＦＦ３０４へ出力する。セレクタ３０２は、パターン受信部１４７が出力するｄｅｓｃｒａｍｂｌｅｒ＿ｉｎｉｔ及びｄｅｓｃｒａｍｂｌｅｒ＿ｈｏｌｄによって制御される。
【００５０】
ＬＦＳＲ初期化パターンの受信時に、パターン受信部１４７は、ｄｅｓｃｒａｍｂｌｅｒ＿ｉｎｉｔを論理“１”に設定し、セレクタ３０２は、初期値を表す信号ｌｆｓｒ＿ｉｎｉｔ＿ｖａｌｕｅを選択して、ＯＲ回路３０３へ出力する。これにより、ｌｆｓｒ＿ｉｎｉｔ＿ｖａｌｕｅがＦＦ３０４に格納され、ＬＦＳＲ値が初期化される。
【００５１】
また、ｓｋｐｏｓの受信時に、パターン受信部１４７は、ｄｅｓｃｒａｍｂｌｅｒ＿ｈｏｌｄを論理“１”に設定し、セレクタ３０２は、ＦＦ３０４が出力するＬＦＳＲ値を選択して、ＯＲ回路３０３へ出力する。これにより、ＦＦ３０４のＬＦＳＲ値がホールドされ、ＬＦＳＲ値は更新されない。
【００５２】
一方、ｔｓｏｓ及び通常データの受信時に、セレクタ３０２は、ＬＦＳＲ３０１が出力する信号を選択して、ＯＲ回路３０３へ出力する。これにより、ＦＦ３０４のＬＦＳＲ値が次のＬＦＳＲ値に更新される。
【００５３】
このように、図１のデータ転送システムでは、ｔｓｏｓ及び通常データはスクランブルしてから送信されるが、ＬＦＳＲ初期化パターン及びｓｋｐｏｓはスクランブルすることなく送信される。したがって、シリアルバス１０３は、スクランブルされたデータとスクランブルされていないデータの２種類のデータを転送する。
【００５４】
そもそも、データ転送システムでは伝送品質向上のために、スクランブルされたデータを送信しているので、スクランブルされていないＬＦＳＲ初期化パターンの送信によって、伝送品質の低下を招く可能性がある。したがって、このようなＬＦＳＲ初期化パターンを用いることなく、スクランブラ及びデスクランブラの同期化を行うことが望ましい。
【００５５】
さらに、受信回路には、スクランブルされたデータとスクランブルされていないデータとを区別するための回路が設けられる。また、送信回路及び受信回路の両方において、データ種別に応じてスクランブラ又はデスクランブラを有効又は無効にする制御が行われる。このように、ＬＦＳＲ初期化パターンを送受信するために、送信回路及び受信回路の制御が複雑になる。
【００５６】
アディティブ・スクランブラとは別のスクランブラとして、ＩＥＥＥ８０２．３−２００８の４９項で規格化され、１０ＧｂＥ等で使用される、自己同期型スクランブラも知られている。自己同期型スクランブラを採用した場合、自己同期型の名称が示すように、簡単な回路構成で、送信回路のスクランブラと受信回路のデスクランブラとの同期化が可能である。
【００５７】
例えば、多項式Ｇ（ｘ）＝ｘ５８＋ｘ３９＋１に基づきＬＦＳＲ値を生成する場合、５８ビットのデータを送受信するだけで、スクランブラとデスクランブラとの同期化が可能である。つまり、特別なＬＦＳＲ初期化パターンの送受信を行うことなく、単に通信を継続していれば、スクランブラとデスクランブラとの同期化が行われる。自己同期型スクランブラは、マルティプリカティブ・スクランブラと呼ばれることがある。
【００５８】
しかし、自己同期型スクランブラは、１ビットの伝送路エラーを多項式のタップ数分増加させる。例えば、上記多項式に基づきＬＦＳＲ値を生成する場合、タップ数は２であるから、１ビットの伝送路エラーに２ビットを加算した、３ビットの伝送路エラーが生成される。通常、高速シリアルバスはＣＲＣ等の冗長ビットで保護されているため、伝送路エラーのビット数が増えると、伝送路エラーの発生がＣＲＣエラーによって検出されない確率が増加する。
【００５９】
図４は、ＬＦＳＲ初期化パターンを用いることなく、スクランブラ及びデスクランブラの同期化を行うデータ転送システムの構成例を示している。図４のデータ転送システムは、データ転送装置４０１及びデータ転送装置４０２を含む。データ転送装置４０１は、生成部４１１、ランダム化部４１２、送信部４１３、及び更新部４１４を含み、データ転送装置４０２は、受信部４２１、復元部４２２、更新部４２３、及び制御部４２４を含む。
【００６０】
生成部４１１は、第１データ列及び第２データ列を生成し、更新部４１４は、第１乱数を更新して第２乱数を生成する。ランダム化部４１２は、第１乱数を用いて第１データ列をスクランブルすることで、第１乱数を含む第１送信データ列を生成し、第２乱数を用いて第２データ列をスクランブルすることで、第２乱数を含む第２送信データ列を生成する。
【００６１】
送信部４１３は、第１期間において第１送信データ列をデータ転送装置４０２へ送信し、第２期間において第２送信データ列をデータ転送装置４０２へ送信する。受信部４２１は、第１期間においてデータ転送装置４０１から第１送信データ列を受信し、第２期間においてデータ転送装置４０１から第２送信データ列を受信する。
【００６２】
更新部４２３は、受信部４２１が受信した第１送信データ列に含まれる第１乱数を更新して、第２乱数を生成する。復元部４２２は、更新部４２３が生成した第２乱数を用いて第２送信データ列をデスクランブルすることで、第２送信データ列から第２データ列を復元する。制御部４２４は、復元部４２２が復元した第２データ列が所定のデータ列である場合、生成した乱数を更新するように更新部４２３を制御する。
【００６３】
図５は、図４のデータ転送システムの制御方法の例を示すフローチャートである。まず、データ転送装置４０１の生成部４１１は、第１乱数を用いて第１データ列をスクランブルすることで第１送信データ列を生成し（ステップ５０１）、第１期間において、送信部４１３は、第１送信データ列をデータ転送装置４０２へ送信する（ステップ５０２）。
【００６４】
次に、データ転送装置４０２の受信部４２１は、データ転送装置４０１から第１送信データ列を受信し（ステップ５０３）、更新部４２３は、受信した第１送信データ列に含まれる第１乱数を更新して、第２乱数を生成する（ステップ５０４）。
【００６５】
次に、データ転送装置４０１の更新部４１４は、第１乱数を更新して第２乱数を生成する（ステップ５０５）。そして、生成部４１１は、第２乱数を用いて第２データ列をスクランブルすることで第２送信データ列を生成し（ステップ５０６）、第２期間において、送信部４１３は、第２送信データ列をデータ転送装置４０２へ送信する（ステップ５０７）。
【００６６】
次に、データ転送装置４０２の受信部４２１は、データ転送装置４０１から第２送信データ列を受信し（ステップ５０８）、復元部４２２は、第２乱数を用いて第２送信データ列をデスクランブルすることで第２データ列を復元する（ステップ５０９）。そして、更新部４２３は、復元した第２データ列が所定のデータ列である場合、制御部４２４からの指示に基づいて、生成した乱数を更新する（ステップ５１０）。
【００６７】
図４のデータ転送システムによれば、スクランブラ及びデスクランブラの同期化を行うデータ転送システムにおいて、伝送品質の低下を抑制することができる。
【００６８】
図６は、図４のデータ転送システムの具体例を示している。図６のデータ転送システムは、データ転送装置６０１及びデータ転送装置６０２を含む。データ転送装置６０１は、送信回路６１１、受信回路６１２、及びトレーニング制御部６１３を含み、データ転送装置６０２は、送信回路６２１、受信回路６２２、及びトレーニング制御部６２３を含む。シリアルバス６０３は、データ転送装置６０１の送信回路６１１と、データ転送装置６０２の受信回路６２２とを接続するとともに、データ転送装置６０２の送信回路６２１と、データ転送装置６０１の受信回路６１２とを接続する。
【００６９】
トレーニング制御部６１３は、送信シーケンスコントローラ６５１及び受信シーケンスコントローラ６５２を含み、シリアルバス６０３のリンク初期化及びリンク再初期化の制御を行う。送信シーケンスコントローラ６５１は、主として送信回路６１１に対する制御を行い、受信シーケンスコントローラ６５２は、主として受信回路６１２に対する制御を行う。
【００７０】
送信回路６１１は、ＣＲＣ生成部６３１、パターン生成部６３２、セレクタ６３３、エンコーダ６３４、スクランブラ６３５、及び変換部６３６を含む。受信回路６１２は、変換部６４１、デスクランブラ６４２、アライメント回路６４３、エラスティックバッファ６４４、デコーダ６４５、パターン受信部６４６、及びＣＲＣチェッカ６４７を含む。スクランブラ６３５は、アディティブ・スクランブラであり、デスクランブラ６４２は、アディティブ・デスクランブラである。デスクランブラ６４２は、制御部６４８を含む。
【００７１】
データ転送装置６０２の送信回路６２１、受信回路６２２、及びトレーニング制御部６２３の構成についても、データ転送装置６０１の送信回路６１１、受信回路６１２、及びトレーニング制御部６１３の構成と同様である。
【００７２】
データ転送装置６０１及びデータ転送装置６０２が、図４のデータ転送装置４０１及びデータ転送装置４０２にそれぞれ対応する場合、送信回路６１１内のパターン生成部６３２及び変換部６３６は、生成部４１１及び送信部４１３にそれぞれ対応する。また、受信回路６２２内の変換部及び制御部は、受信部４２１及び制御部４２４にそれぞれ対応する。
【００７３】
一方、データ転送装置６０１及びデータ転送装置６０２が、図４のデータ転送装置４０２及びデータ転送装置４０１にそれぞれ対応する場合、送信回路６２１内のパターン生成部及び変換部は、生成部４１１及び送信部４１３にそれぞれ対応する。また、受信回路６１２内の変換部６４１及び制御部６４８は、受信部４２１及び制御部４２４にそれぞれ対応する。
【００７４】
まず、送信回路６１１の動作について説明する。リンク初期化中又はリンク初期化完了後に関わらず、エンコーダ６３４は、セレクタ６３３が出力するデータ列をエンコードすることで、そのデータ列にｅｎｃ−ｂｉｔを付加する。スクランブラ６３５は、エンコーダ６３４が出力するデータ列をスクランブルすることで、送信データ列を生成する。この場合、データ列がエンコードされた後にスクランブルされるため、ｅｎｃ−ｂｉｔもスクランブルされる。
【００７５】
変換部６３６は、送信データ列をパラレルデータからシリアルデータに変換し、シリアルバス６０３へ出力する。これにより、送信データ列がデータ転送装置６０１からデータ転送装置６０２へ送信される。
【００７６】
リンク初期化中において、送信回路６１１は、ｔｓｏｓ１及びｔｓｏｓ２をデータ転送装置６０２へ送信する。トレーニング制御部６１３は、ｔｓｏｓ１＿ｓｅｎｄ及びｔｓｏｓ２＿ｓｅｎｄをパターン生成部６３２へ出力する。パターン生成部６３２は、ｔｓｏｓのデータ列を生成し、セレクタ６３３は、ｔｓｏｓをエンコーダ６３４へ出力する。
【００７７】
エンコーダ６３４は、ｔｓｏｓをエンコードし、スクランブラ６３５は、エンコードされたｔｓｏｓをスクランブルし、変換部６３６は、スクランブルされたｔｓｏｓをシリアルデータに変換して、シリアルバス６０３へ出力する。これにより、ｔｓｏｓがデータ転送装置６０１からデータ転送装置６０２へ送信される。
【００７８】
ｔｓｏｓの送信中において、送信回路６１１は、スクランブラ６３５と受信回路６２２内のデスクランブラとを同期化するため、定期的に、デスクランブラロックパターンと呼ばれるトレーニングパターンをデータ転送装置６０２へ送信する。
【００７９】
トレーニング制御部６１３は、デスクランブラロックパターンの送信を指示する信号ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ＿ｓｅｎｄをパターン生成部６３２へ出力する。パターン生成部６３２は、デスクランブラロックパターンのデータ列を生成し、セレクタ６３３は、デスクランブラロックパターンをエンコーダ６３４へ出力する。
【００８０】
エンコーダ６３４は、デスクランブラロックパターンをエンコードし、スクランブラ６３５は、エンコードされたデスクランブラロックパターンをスクランブルする。変換部６３６は、スクランブルされたデスクランブラロックパターンをシリアルデータに変換して、シリアルバス６０３へ出力する。これにより、デスクランブラロックパターンがデータ転送装置６０１からデータ転送装置６０２へ送信される。
【００８１】
リンク初期化が完了すると、ＣＲＣ生成部６３１は、通常データのパケットのデータ列にＣＲＣを付加して、セレクタ６３３へ出力する。トレーニング制御部６１３は、ＣＲＣ生成部６３１の出力を選択する信号ｐａｃｋｅｔ＿ｓｅｌｅｃｔをセレクタ６３３へ出力し、セレクタ６３３は、パケットをエンコーダ６３４へ出力する。
【００８２】
エンコーダ６３４は、パケットをエンコードし、スクランブラ６３５は、エンコードされたパケットをスクランブルし、変換部６３６は、スクランブルされたパケットをシリアルデータに変換して、シリアルバス６０３へ出力する。これにより、パケットがデータ転送装置６０１からデータ転送装置６０２へ送信される。
【００８３】
リンク初期化中又はリンク初期化完了後に関わらず、送信回路６１１は、定期的にｓｋｐｏｓをデータ転送装置６０２へ送信する。トレーニング制御部６１３は、ｓｋｐｏｓ＿ｓｅｎｄをパターン生成部６３２へ出力する。パターン生成部６３２は、ｓｋｐｏｓのデータ列を生成し、セレクタ６３３は、ｓｋｐｏｓをエンコーダ６３４へ出力する。
【００８４】
エンコーダ６３４は、ｓｋｐｏｓをエンコードし、スクランブラ６３５は、エンコードされたｓｋｐｏｓをスクランブルし、変換部６３６は、スクランブルされたｓｋｐｏｓをシリアルデータに変換して、シリアルバス６０３へ出力する。これにより、ｓｋｐｏｓがデータ転送装置６０１からデータ転送装置６０２へ送信される。
【００８５】
このように、図６のデータ転送システムでは、ＬＦＳＲ初期化パターンが用いられず、スクランブルされた送信データ列のみがシリアルバス６０３に出力されるため、図４のデータ転送システムよりも伝送品質が向上する。
【００８６】
次に、受信回路６１２の動作について説明する。データ転送装置６０２の送信回路６２１も、送信回路６１１と同様に動作して、ｔｓｏｓ、デスクランブラロックパターン、及びｓｋｐｏｓをデータ転送装置６０１へ送信する。変換部６４１は、シリアルバス６０３から入力される受信データ列を、シリアルデータからパラレルデータに変換して、デスクランブラ６４２へ出力する。
【００８７】
デスクランブラ６４２は、スクランブルされている受信データ列をデスクランブルすることで、非スクランブルデータ列を復元し、復元した非スクランブルデータ列をアライメント回路６４３へ出力する。
【００８８】
デスクランブラ６４２は、ロックされていない状態では、スクランブルされている受信データ列から次のＬＦＳＲ値を生成し、ロックされた状態では、保持しているＬＦＳＲ値から次のＬＦＳＲ値を生成する。リンク初期化の開始時には、デスクランブラ６４２はロックされておらず、デスクランブラロックパターンを受信することによってロックされる。
【００８９】
リンク初期化中において、デスクランブラ６４２は、デスクランブラロックパターンに基づいて、送信回路６２１内のスクランブラとデスクランブラ６４２とを同期化するとともに、エンコードブロックのアライメントを検出する。そして、デスクランブラ６４２は、エンコードブロックの境界の検出を示す信号ａｌｉｇｎ＿ｄｅｔと、エンコードブロックの境界を含むデータａｌｉｇｎ＿ｂｏｕｎｄａｒｙとを、アライメント回路６４３へ出力する。
【００９０】
アライメント回路６４３は、検出されたエンコードブロックの境界に基づいて、デスクランブラ６４２が出力するデータ列を、エラスティックバッファ６４４のライト側に書き込む。これにより、エラスティックバッファ６４４のリード側は、エンコードブロック単位でデータ列を扱えるようになる。
【００９１】
エラスティックバッファ６４４は、アライメント回路６４３からライト動作が継続して行われているとき、ｅｌｂｆ＿ａｃｔをトレーニング制御部６１３へ出力する。トレーニング制御部６１３は、ｅｌｂｆ＿ａｃｔを受信した場合、デスクランブラ６４２のロック及びエンコードブロックのアライメントが完了していると認識する。そして、リンク初期化が完了すると、デスクランブラ６４２のロック状態と、検出されたエンコードブロックのアライメントとがホールドされる。
【００９２】
変換部６４１、デスクランブラ６４２、アライメント回路６４３、及びエラスティックバッファ６４４のライト側は、クロック信号ｒｘ＿ｃｌｋの領域である。エラスティックバッファ６４４において、ｒｘ＿ｃｌｋからＰＣＳのクロック信号ｐｃｓ＿ｃｌｋへの乗り換えが行われる。
【００９３】
リンク初期化中又はリンク初期化完了後に関わらず、デコーダ６４５は、エラスティックバッファ６４４から読み出されたデータ列をデコードする。このとき、デコーダ６４５は、ｅｎｃ−ｂｉｔを参照してデータ種別を判定し、デスクランブラロックパターン、ｔｓｏｓ、ｓｋｐｏｓ等のデータ列を、パターン受信部６４６へ出力する。パターン受信部６４６は、デコーダ６４５が出力するデータ列からｔｓｏｓを検出し、ｔｓｏｓ１＿ｄｅｔ及びｔｓｏｓ２＿ｄｅｔをトレーニング制御部６１３へ出力する。
【００９４】
そして、リンク初期化が完了すると、ＣＲＣチェッカ６４７は、デコーダ６４５が出力するデータ列のＣＲＣをチェックし、データ列をパケットとして出力する。また、トレーニング制御部６１３は、ｒｘ＿ｐａｃｋｅｔ＿ｖａｌｉｄを出力する。
【００９５】
リンク初期化中又はリンク初期化完了後に関わらず、デコーダ６４５は、デコードエラーが発生したとき、ｄｅｃｏｄｅ＿ｅｒｒｏｒをトレーニング制御部６１３へ出力する。また、ＣＲＣチェッカ６４７は、ＣＲＣエラーが発生したとき、ｃｒｃ＿ｅｒｒｏｒをトレーニング制御部６１３へ出力する。
【００９６】
トレーニング制御部６１３は、デコードエラー又はＣＲＣエラーの多発に基づいて、デスクランブラ６４２の同期ずれ、エンコードブロックのアライメントずれ等を検出することができる。デスクランブラ６４２の同期ずれ又はエンコードブロックのアライメントずれが発生していると推測される場合、トレーニング制御部６１３は、デスクランブラ６４２に対して同期化の再実行を指示する信号ｌｆｓｒ＿ｒｅ＿ｌｏｃｋを出力する。リンク初期化が完了している場合は、リンク初期化が再開される。
【００９７】
図７は、デスクランブラロックパターンの例を示している。図７のデスクランブラロックパターンは、２Ｋ個（Ｋは２以上の整数）のエンコードブロックを含み、各エンコードブロックは、複数のビットを含む。前半Ｋ個のエンコードブロックの各々は、すべてのビットが論理“０”のデータＡＬＬ０であり、後半Ｋ個のエンコードブロックの各々は、すべてのビットが論理“１”のデータＡＬＬ１である。
【００９８】
データＡＬＬ０とＬＦＳＲ値との排他的論理和はＬＦＳＲ値になるため、前半Ｋ個のエンコードブロックの送信時には、スクランブラ６３５のＬＦＳＲ値がそのままシリアルバス６０３に出力される。一方、データＡＬＬ１とＬＦＳＲ値との排他的論理和はＬＦＳＲ値を反転した値になるため、後半Ｋ個のエンコードブロックの送信時には、スクランブラ６３５のＬＦＳＲ値を反転した値がシリアルバス６０３に出力される。
【００９９】
したがって、デスクランブラ６４２は、スクランブルされたデータＡＬＬ０から送信回路６２１のスクランブラのＬＦＳＲ値を抽出することができ、データＡＬＬ０とデータＡＬＬ１との境界を、エンコードブロックの境界として検出することができる。
【０１００】
このとき、デスクランブラ６４２は、スクランブルされたデータＡＬＬ１がＬＦＳＲ値を反転した値として正しく認識されることをチェックする。これにより、誤った位置でデスクランブラ６４２をロックする確率が低下する。誤った位置でデスクランブラ６４２をロックする確率を低減するためには、前半Ｋ個のエンコードブロックのビット幅が、デスクランブラ６４２内のＬＦＳＲのビット幅よりも十分に大きいことが望ましい。
【０１０１】
例えば、Ｋ＝８であり、１個のエンコードブロックのビット幅が２０ビットである場合、前半８個のエンコードブロックのビット幅は、１６０ビットとなる。また、ＬＦＳＲの多項式が２３次多項式Ｇ（Ｘ）＝Ｘ２３＋Ｘ２１＋Ｘ１６＋Ｘ８＋Ｘ５＋Ｘ２＋１である場合、ＬＦＳＲのビット幅は、２３ビットとなる。この場合、前半８個のエンコードブロックのビット幅はＬＦＳＲのビット幅よりも十分に大きいと考えられる。
【０１０２】
図８は、図６のスクランブラ６３５の構成例を示している。図８のスクランブラ６３５は、ＬＦＳＲ８０１、ＯＲ回路８０２、ＦＦ８０３、及びＸＯＲ回路８０４を含む。ＦＦ８０３は、ＬＦＳＲ値を保持し、ＸＯＲ回路８０４は、ＦＦ８０３が出力するＬＦＳＲ値と入力データＤ５との排他的論理和を、スクランブルされた送信データＤ６として出力する。
【０１０３】
ＬＦＳＲ８０１は、ＦＦ８０３が出力するＬＦＳＲ値を更新して、次のＬＦＳＲ値を生成し、ＯＲ回路８０２へ出力する。ＯＲ回路８０２は、ＬＦＳＲ８０１が出力するＬＦＳＲ値とリセット信号Ｒとの論理和を、ＦＦ８０３へ出力する。リセット時以外は、リセット信号Ｒは論理“０”に設定される。これにより、ＦＦ８０３のＬＦＳＲ値が次のＬＦＳＲ値に更新される。
【０１０４】
図９は、図６のデスクランブラ６４２の構成例を示している。図９のデスクランブラ６４２は、制御部６４８、ＦＦ９０１、セレクタ９０２、ＬＦＳＲ９０３、ＯＲ回路９０４、ＦＦ９０５、及びＸＯＲ回路９０６を含む。制御部６４８は、検出部９１１、検出部９１２、判定部９１３、及びＦＦ９１４を含む。
【０１０５】
ＦＦ９０５は、ＬＦＳＲ値を保持し、ＸＯＲ回路９０６は、ＦＦ９０５が出力するＬＦＳＲ値と、スクランブルされた入力データＤ７との排他的論理和を、非スクランブルデータＤ８として出力する。ＦＦ９０１は、スクランブルされた入力データＤ７をラッチして、セレクタ９０２へ出力することで、セレクタ９０２の入力データ９２１のビット幅をＦＦ９０５のビット幅に合わせる。
【０１０６】
例えば、ＬＦＳＲ９０３の多項式が２３次多項式である場合、ＦＦ９０５のビット幅は、２３ビットとなる。そして、入力データＤ７のビット幅が１６ビットであり、１６ビットの入力データ［１５：０］のうち、ビット１５が最初に受信したビットに対応し、ビット０が最後に受信したビットに対応する場合を考える。この場合、ＦＦ９０１が出力する１６ビットのデータ［１５：０］のうち末尾７ビットのデータ［６：０］と、１６ビットの入力データ［１５：０］とを統合することで、２３ビットの入力データ９２１を生成することができる。
【０１０７】
セレクタ９０２は、判定部９１３が出力する信号ｌｆｓｒ＿ｌｏｃｋによって制御され、入力データ９２１又はＦＦ９０５が出力するＬＦＳＲ値を選択して、ＬＦＳＲ９０３へ出力する。ＬＦＳＲ９０３は、セレクタ９０２が出力するデータを更新して、次のＬＦＳＲ値を生成し、ＯＲ回路９０４へ出力する。ＯＲ回路９０４は、ＬＦＳＲ９０３が出力するＬＦＳＲ値とリセット信号Ｒとの論理和を、ＦＦ９０５へ出力する。リセット時以外は、リセット信号Ｒは論理“０”に設定される。これにより、ＦＦ９０５のＬＦＳＲ値が次のＬＦＳＲ値に更新される。
【０１０８】
検出部９１１は、例えば、コンパレータであり、ＸＯＲ回路９０６が出力するデータＤ８と、すべてのビットが論理“０”のデータＡＬＬ０とを比較する。データＤ８とデータＡＬＬ０とが一致した場合、検出部９１１は、論理“０”のパターンの検出を示す信号ｐｔｎ＿ａｌｌ０を、判定部９１３へ出力する。
【０１０９】
検出部９１２は、例えば、コンパレータであり、ＸＯＲ回路９０６が出力するデータＤ８と、すべてのビットが論理“１”のデータＡＬＬ１とを比較する。データＤ８とデータＡＬＬ１とが一致した場合、検出部９１２は、論理“１”のパターンの検出を示す信号ｐｔｎ＿ａｌｌ１を、判定部９１３へ出力する。
【０１１０】
判定部９１３は、リンク初期化中において、ｐｔｎ＿ａｌｌ０及びｐｔｎ＿ａｌｌ１に基づいて、デスクランブラロックパターン及びエンコードブロックの境界を検出したか否かを判定する。デスクランブラ６４２がロックしていない状態の場合、判定部９１３は、デスクランブラ６４２がロックしている状態を示す信号ｌｆｓｒ＿ｌｏｃｋを論理“０”に設定する。これにより、セレクタ９０２は、入力データ９２１を選択し、ＬＦＳＲ９０３は、入力データ９２１から次のＬＦＳＲ値を生成する。
【０１１１】
デスクランブラロックパターンを検出した後、判定部９１３は、ｌｆｓｒ＿ｌｏｃｋを論理“１”に設定する。これにより、セレクタ９０２は、ＦＦ９０５が出力するＬＦＳＲ値を選択し、ＬＦＳＲ９０３は、ＦＦ９０５が出力するＬＦＳＲ値から次のＬＦＳＲ値を生成する。このように、判定部９１３がｌｆｓｒ＿ｌｏｃｋを論理“１”に設定することで、デスクランブラ６４２がロックされる。
【０１１２】
判定部９１３は、エンコードブロックの境界を検出しない場合、ａｌｉｇｎ＿ｄｅｔを論理“０”に設定し、エンコードブロックの境界を検出した場合、ａｌｉｇｎ＿ｄｅｔを論理“１”に設定する。ＦＦ９１４は、ＸＯＲ回路９０６が出力するデータＤ８をラッチし、ａｌｉｇｎ＿ｂｏｕｎｄａｒｙとして出力する。
【０１１３】
データ転送装置６０１及びデータ転送装置６０２が、図４のデータ転送装置４０１及びデータ転送装置４０２にそれぞれ対応する場合、図８のＬＦＳＲ８０１及びＸＯＲ回路８０４は、更新部４１４及びランダム化部４１２にそれぞれ対応する。
【０１１４】
一方、データ転送装置６０１及びデータ転送装置６０２が、図４のデータ転送装置４０２及びデータ転送装置４０１にそれぞれ対応する場合、図９のＬＦＳＲ９０３及びＸＯＲ回路９０６は、更新部４２３及び復元部４２２にそれぞれ対応する。
【０１１５】
図６のデータ転送システムによれば、リンク初期化中においても、スクランブルされた送信データ列のみがシリアルバス６０３に出力されるため、送信データ列のランダム性が高くなり、伝送品質が向上する。また、スクランブルされたデータとスクランブルされていないデータとを区別するための回路が不要になるため、送信回路及び受信回路の構成及び制御が簡単化される。
【０１１６】
図７に示したデスクランブラロックパターンの代わりに、前半Ｋ個のエンコードブロックにデータＡＬＬ１を設定し、後半Ｋ個のエンコードブロックにデータＡＬＬ０を設定した、デスクランブラロックパターンを用いることも可能である。
【０１１７】
図１０Ａ及び図１０Ｂは、図９の判定部９１３が行う動作の例を示すフローチャートである。判定部９１３は、データ判定を開始すると（ステップ１００１）、ｉｄｌｅ状態に移行し、ｌｆｓｒ＿ｌｏｃｋ及びａｌｉｇｎ＿ｄｅｔを論理“０”に設定する（ステップ１００２）。そして、判定部９１３は、カウント値を表すｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒを０に設定する（ステップ１００３）。
【０１１８】
次に、判定部９１３は、検出部９１１が出力するｐｔｎ＿ａｌｌ０の値をチェックし（ステップ１００４）、ｐｔｎ＿ａｌｌ０が論理“０”である場合（ステップ１００４，ＮＯ）、ステップ１００３以降の動作を繰り返す。一方、ｐｔｎ＿ａｌｌ０が論理“１”である場合（ステップ１００４，ＹＥＳ）、判定部９１３は、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒを１だけインクリメントする（ステップ１００５）。そして、判定部９１３は、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒを、ＡＬＬ０を検出した回数に対する閾値ＴＨ１と比較する（ステップ１００６）。
【０１１９】
ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒがＴＨ１よりも小さい場合（ステップ１００６，ＮＯ）、判定部９１３は、ステップ１００４以降の動作を繰り返す。一方、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒがＴＨ１に達した場合（ステップ１００６，ＹＥＳ）、判定部９１３は、ｌｆｓｒ＿ｌｏｃｋを論理“１”に設定し（ステップ１００７）、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒを０に設定して、ｐｒｅｌｏｃｋ状態に移行する（ステップ１００８）。ｐｒｅｌｏｃｋ状態は、デスクランブラロックパターンの前半のＡＬＬ０が検出された状態を表す。
【０１２０】
次に、判定部９１３は、検出部９１２が出力するｐｔｎ＿ａｌｌ１の値をチェックする（ステップ１００９）。ｐｔｎ＿ａｌｌ１が論理“０”である場合（ステップ１００９，ＮＯ）、判定部９１３は、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒを１だけインクリメントする（ステップ１０１０）。そして、判定部９１３は、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒを、ＡＬＬ１を検出しなかった回数に対する閾値ＴＨ２と比較する（ステップ１０１１）。
【０１２１】
ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒがＴＨ２よりも小さい場合（ステップ１０１１，ＮＯ）、判定部９１３は、ステップ１００９以降の動作を繰り返す。一方、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒがＴＨ２に達した場合（ステップ１０１１，ＹＥＳ）、判定部９１３は、ステップ１００２以降の動作を繰り返す。この場合、判定部９１３は、デスクランブラロックパターンを検出しなかったと判定して、ｉｄｌｅ状態に戻り、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒを０にリセットする。
【０１２２】
ｐｔｎ＿ａｌｌ１が論理“１”である場合（ステップ１００９，ＹＥＳ）、判定部９１３は、ａｌｉｇｎ＿ｄｅｔを論理“１”に設定し（ステップ１０１２）、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒに０を設定して、ｄｅｔ状態に移行する（ステップ１０１３）。ｄｅｔ状態は、デスクランブラロックパターンに含まれるエンコードブロックの境界が検出された状態を表す。
【０１２３】
次に、判定部９１３は、ｐｔｎ＿ａｌｌ１の値をチェックし（ステップ１０１４）、ｐｔｎ＿ａｌｌ１が論理“０”である場合（ステップ１０１４，ＮＯ）、ステップ１００２以降の動作を繰り返す。この場合、判定部９１３は、デスクランブラロックパターンを検出しなかったと判定して、ｉｄｌｅ状態に戻り、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒを０にリセットする。
【０１２４】
一方、ｐｔｎ＿ａｌｌ１が論理“１”である場合（ステップ１０１４，ＹＥＳ）、判定部９１３は、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒを１だけインクリメントする（ステップ１０１５）。そして、判定部９１３は、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒを、ＡＬＬ１を検出した回数に対する閾値ＴＨ３と比較する（ステップ１０１６）。
【０１２５】
ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒがＴＨ３よりも小さい場合（ステップ１０１６，ＮＯ）、判定部９１３は、ステップ１０１４以降の動作を繰り返す。一方、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒがＴＨ３に達した場合（ステップ１０１６，ＹＥＳ）、判定部９１３は、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒを０に設定して、ｌｏｃｋ状態に移行する（ステップ１０１７）。ｌｏｃｋ状態は、デスクランブラロックパターン全体が検出された状態を表す。
【０１２６】
ａｌｉｇｎ＿ｄｅｔが論理“１”に設定されると、アライメント回路６４３は、エラスティックバッファ６４４に対する書き込みを開始する。このとき、エラスティックバッファ６４４は、ｅｌｂｆ＿ａｃｔを論理“１”に設定することで、間接的に、デスクランブラ６４２の同期化とエンコードブロックのアライメントの両方が完了していることを、トレーニング制御部６１３へ通知する。
【０１２７】
次に、判定部９１３は、トレーニング制御部６１３が出力するｌｆｓｒ＿ｒｅ＿ｌｏｃｋの値をチェックし（ステップ１０１８）、ｌｆｓｒ＿ｒｅ＿ｌｏｃｋが論理“１”である場合（ステップ１０１８，ＹＥＳ）、ステップ１００２以降の動作を繰り返す。この場合、判定部９１３は、ｉｄｌｅ状態に戻ってリンク初期化を再開する。
【０１２８】
一方、ｌｆｓｒ＿ｒｅ＿ｌｏｃｋが論理“０”である場合（ステップ１０１８，ＮＯ）、判定部９１３は、データ判定を終了するか否かを判定する（ステップ１０１９）。データ判定を終了しない場合（ステップ１０１９，ＮＯ）、判定部９１３は、ステップ１０１８以降の動作を繰り返す。したがって、判定部９１３は、トレーニング制御部６１３から同期化の再実行を指示されない限り、ｌｏｃｋ状態を維持する。
【０１２９】
一方、データ判定を終了する場合（ステップ１０１９，ＹＥＳ）、判定部９１３は、動作を終了する。例えば、デスクランブラ６４２の電源がオフになった場合、又はトレーニング制御部６１３から動作停止指示を受信した場合に、データ判定を終了すると判定される。
【０１３０】
図１０Ａ及び図１０Ｂのデータ判定によれば、デスクランブラロックパターンを用いて、デスクランブラ６４２の同期化とエンコードブロックのアライメントの両方を同時に行うことができる。
【０１３１】
ステップ１００６において、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒをＴＨ１と比較することで、デスクランブラロックパターンの前半部分を検出したことを確認できる。そして、デスクランブラロックパターンの前半部分とは異なるデータ列を受信した場合は、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒをリセットして、デスクランブラロックパターンの検出をやり直すことができる。
【０１３２】
また、ステップ１０１１において、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒをＴＨ２と比較することで、デスクランブラロックパターンの後半部分を検出しなかったことを確認した上で、デスクランブラロックパターンの検出をやり直すことができる。
【０１３３】
さらに、ステップ１０１６において、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒをＴＨ３と比較することで、デスクランブラロックパターンの後半部分を検出したことを確認できる。そして、デスクランブラロックパターンの後半部分とは異なるデータ列を受信した場合は、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒをリセットして、デスクランブラロックパターンの検出をやり直すことができる。
【０１３４】
図１１は、デスクランブラ６４２が行う動作の例を示すタイミングチャートである。図１１において、ｔ０〜ｔ２２の各期間は、クロック信号ｒｘ＿ｃｌｋの１サイクルに対応する。
【０１３５】
状態は、判定部９１３の状態を表し、ｓｃｒａｍｂｌｅ  ｒｅｃｅｉｖｅ  ｄａｔａ［１５：０］は、１６ビットの入力データＤ７を表し、ｓｈｆｔ−ｒｅｇ出力［１５：０］は、ＦＦ９０１が出力する１６ビットのデータを表す。
【０１３６】
ｎｅｘｔ  ｌｆｓｒ入力［２２：０］は、セレクタ９０２が出力する２３ビットのデータを表し、ｎｅｘｔ  ｌｆｓｒ出力［２２：０］は、ＬＦＳＲ９０３が出力する２３ビットのデータを表す。ｌｆｓｒ−ｒｅｇ出力［２２：０］は、ＦＦ９０５が出力する２３ビットのデータを表し、ｎｏｎ−ｓｃｒａｍｂｌｅ  ｒｅｃｅｉｖｅ  ｄａｔａ［１５：０］は、１６ビットの非スクランブルデータＤ８を表す。
【０１３７】
１個のエンコードブロックのビット幅は２０ビットであり、デスクランブラロックパターンは、前半８個のデータＡＬＬ０及び後半８個のデータＡＬＬ１を含むものとする。また、送信回路６２１内のＬＦＳＲは、連続する３２０ビットのＬＦＳＲ値ｂｉｔ＿ｐｔｎ［０：３１９］を生成し、このうちビット０が先頭のビットであり、ビット３１９が末尾のビットであるものとする。
【０１３８】
この場合、デスクランブラロックパターンの前半８個のＡＬＬ０をスクランブルしたデータは、ｂｉｔ＿ｐｔｎ［０：１５９］そのものである。ｓｃｒａｍｂｌｅ  ｒｅｃｅｉｖｅ  ｄａｔａ［１５：０］の“０：８”等は、ｂｉｔ＿ｐｔｎ［０：３１９］の対応するビット列を表す。
【０１３９】
一方、後半８個のＡＬＬ１をスクランブルしたデータは、ｂｉｔ＿ｐｔｎ［１６０：３１９］を反転した値になる。ｓｃｒａｍｂｌｅ  ｒｅｃｅｉｖｅ  ｄａｔａ［１５：０］の“１６０：１６８”等は、ｂｉｔ＿ｐｔｎ［０：３１９］の対応するビット列を反転した値を表す。
【０１４０】
ステップ１００６のＴＨ１、ステップ１０１１のＴＨ２、及びステップ１０１６のＴＨ３は、例えば、次式を満たすように決定される。
【０１４１】
１≦ＴＨ１≦（Ｂ１−Ｂ２）／Ｂ３−２          （１）
ＴＨ２≧（Ｂ１−Ｂ２）／Ｂ３−ＴＨ１＋１      （２）
１≦ＴＨ３≦Ｂ４／Ｂ３−３                    （３）
【０１４２】
Ｂ１は、デスクランブラロックパターンの前半Ｋ個のＡＬＬ０のビット幅を表し、Ｂ２は、ＬＦＳＲ９０３のビット幅を表し、Ｂ３は、入力データＤ７のビット幅を表し、Ｂ４は、デスクランブラロックパターンの後半Ｋ個のＡＬＬ１のビット幅を表す。Ｋ＝８、Ｂ１＝Ｂ４＝１６０、Ｂ２＝２３、Ｂ３＝１６である場合、式（１）及び式（３）は、次式によって置き換えられる。
【０１４３】
１≦ＴＨ１≦６．５６      （４）
１≦ＴＨ３≦７            （５）
【０１４４】
また、ＴＨ１＝５である場合、式（２）は、次式によって置き換えられる。
【０１４５】
ＴＨ２≧４．５６          （６）
【０１４６】
デスクランブラ６４２が未だロックされていないｔ０〜ｔ８の各期間においては、ｌｆｓｒ＿ｌｏｃｋ＝０であるため、セレクタ９０２は、入力データ９２１をＬＦＳＲ９０３へ出力する。したがって、ｎｅｘｔ＿ｌｆｓｒ入力［２２：０］には、１サイクル前の期間におけるｓｈｉｆｔ−ｒｅｇ出力［６：０］と、当該期間におけるｓｃｒａｍｂｌｅ  ｒｅｃｅｉｖｅ  ｄａｔａ［１５：０］とが混在している。
【０１４７】
この場合、ＬＦＳＲ９０３は、ｎｅｘｔ＿ｌｆｓｒ入力［２２：０］を、ｓｃｒａｍｂｌｅ  ｒｅｃｅｉｖｅ  ｄａｔａ［１５：０］のビット数に相当する１６ビット分更新して、次のＬＦＳＲ値を生成し、ｎｅｘｔ  ｌｆｓｒ出力［２２：０］として出力する。そして、ＦＦ９０５は、ＬＦＳＲ９０３が生成した次のＬＦＳＲ値を、次の期間において、ｌｆｓｒ−ｒｅｇ出力［２２：０］として出力する。
【０１４８】
例えば、期間ｔ２において、ＬＦＳＲ９０３は、ｎｅｘｔ＿ｌｆｓｒ入力［２２：０］として入力されるｂｉｔ＿ｐｔｎ［２：２４］を１６ビット分更新することで、ｂｉｔ＿ｐｔｎ［１８：４０］を生成し、ｎｅｘｔ  ｌｆｓｒ出力［２２：０］として出力する。そして、ＦＦ９０５は、期間ｔ３において、ｂｉｔ＿ｐｔｎ［１８：４０］をｌｆｓｒ−ｒｅｇ出力［２２：０］として出力する。
【０１４９】
デスクランブラロックパターンのＡＬＬ０を受信している間は、ｎｏｎ−ｓｃｒａｍｂｌｅ  ｒｅｃｅｉｖｅ  ｄａｔａ［１５：０］はＡＬＬ０であり、ｐｔｎ＿ａｌｌ０は論理“１”に設定される。そして、ＴＨ１に相当する規定回数だけ連続してｐｔｎ＿ａｌｌ０＝１が検出されると、ｌｆｓｒ＿ｌｏｃｋが論理“１”に設定され、判定部９１３はｐｒｅｌｏｃｋ状態になる。例えば、ＴＨ１＝５である場合、期間ｔ８において、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒ＝５になるため、期間ｔ９において、ｌｆｓｒ＿ｌｏｃｋ＝１になる。
【０１５０】
ｌｆｓｒ＿ｌｏｃｋ＝１になると、セレクタ９０２は、ｌｆｓｒ−ｒｅｇ出力［２２：０］をＬＦＳＲ９０３へ出力する。したがって、ｎｅｘｔ＿ｌｆｓｒ入力［２２：０］＝ｌｆｓｒ−ｒｅｇ出力［２２：０］になる。例えば、期間ｔ９において、ＦＦ９０５からｌｆｓｒ−ｒｅｇ出力［２２：０］として出力されるｂｉｔ＿ｐｔｎ［１１４：１３６］は、ｎｅｘｔ＿ｌｆｓｒ入力［２２：０］としてＬＦＳＲ９０３へ入力される。
【０１５１】
次に、期間ｔ１２において、ｎｏｎ−ｓｃｒａｍｂｌｅ  ｒｅｃｅｉｖｅ  ｄａｔａ［１５：０］がＡＬＬ１になると、ｐｔｎ＿ａｌｌ１が論理“１”に設定されるとともに、ａｌｉｇｎ＿ｄｅｔが論理“１”に設定される。このとき、ＦＦ９１４は、１サイクル前の期間ｔ１１におけるｎｏｎ−ｓｃｒａｍｂｌｅ  ｒｅｃｅｉｖｅ  ｄａｔａ［１５：０］を、ａｌｉｇｎ＿ｂｏｕｎｄａｒｙとして出力する。
【０１５２】
デスクランブラ６４２が正しくロックされている場合、ａｌｉｇｎ＿ｂｏｕｎｄａｒｙは、ＡＬＬ０のパターン、又は“００．．００１１１．．１１”のように“０”と“１”の切り替わりを１箇所だけ含むパターンになる。この例では、期間ｔ１２におけるａｌｉｇｎ＿ｂｏｕｎｄａｒｙは、７ビットの“０”と９ビットの“１”とからなるビット列｛７’ｈ００，９’ｈ１ｆｆ｝である。
【０１５３】
｛７’ｈ００，９’ｈ１ｆｆ｝＝“０００００００１１１１１１１１１”      （７）
【０１５４】
この場合、ａｌｉｇｎ＿ｂｏｕｎｄａｒｙに含まれる“０”と“１”の切り替わりの位置が、エンコードブロックの境界を示している。その後、期間ｔ１３において、判定部９１３はｄｅｔ状態になる。
【０１５５】
ｄｅｔ状態において、ＴＨ３に相当する規定回数だけ連続してｐｔｎ＿ａｌｌ１＝１が検出されると、判定部９１３はｌｏｃｋ状態になる。例えば、ＴＨ３＝４である場合、期間ｔ１７において、ｐａｔｔｅｒｎ  ｃｏｕｎｔｅｒ＝４になるため、期間ｔ１８において、判定部９１３はｌｏｃｋ状態になる。その後、期間ｔ２１において、ｔｓｏｓ等のトレーニングパターンがデスクランブラ６４２に入力される。
【０１５６】
図１２Ａ及び図１２Ｂは、図６の受信シーケンスコントローラ６５２が行う動作の例を示すフローチャートである。受信シーケンスコントローラ６５２は、ステージ０〜ステージ２の３つの状態になり得る。ステージ０及びステージ１は、リンク初期化中の状態であり、ステージ２は、リンク初期化が完了した状態である。
【０１５７】
受信シーケンスコントローラ６５２は、リンク初期化を開始すると、ｌｆｓｒ＿ｒｅ＿ｌｏｃｋ及びｒｘ＿ｐａｃｋｅｔ＿ｖａｌｉｄを論理“０”に設定し、ステージ０に移行する（ステップ１２０１）。
【０１５８】
次に、受信シーケンスコントローラ６５２は、エラスティックバッファ６４４が出力するｅｌｂｆ＿ａｃｔの値をチェックする（ステップ１２０２）。ｅｌｂｆ＿ａｃｔが論理“１”である場合（ステップ１２０２，ＹＥＳ）、受信シーケンスコントローラ６５２は、デスクランブラ６４２の同期化を再度実行するか否かを判定する（ステップ１２０３）。
【０１５９】
このとき、受信シーケンスコントローラ６５２は、デコーダ６４５がｄｅｃｏｄｅ＿ｅｒｒｏｒを出力した回数及びＣＲＣチェッカ６４７がｃｒｃ＿ｅｒｒｏｒを出力した回数をカウントする。そして、受信シーケンスコントローラ６５２は、いずれかの回数が所定回数以上である場合、デスクランブラ６４２の同期化を再度実行すると判定し、いずれの回数も所定回数未満である場合、デスクランブラ６４２の同期化を再度実行しないと判定する。
【０１６０】
デスクランブラ６４２の同期化を再度実行する場合（ステップ１２０３，ＹＥＳ）、受信シーケンスコントローラ６５２は、ｌｆｓｒ＿ｒｅ＿ｌｏｃｋを論理“１”に設定し（ステップ１２０４）、ｅｌｂｆ＿ａｃｔの値をチェックする（ステップ１２０５）。
【０１６１】
ｌｆｓｒ＿ｒｅ＿ｌｏｃｋが論理“１”に設定されると、デスクランブラ６４２は、ａｌｉｇｎ＿ｄｅｔを論理“０”に設定する。そして、アライメント回路６４３は、エラスティックバッファ６４４に対する書き込みを中止し、エラスティックバッファ６４４は、ｅｌｂｆ＿ａｃｔを論理“０”に設定する。したがって、受信シーケンスコントローラ６５２は、ｅｌｂｆ＿ａｃｔの変化を検出することで、再同期化の指示がデスクランブラ６４２に伝わったことを認識できる。
【０１６２】
ｅｌｂｆ＿ａｃｔが論理“１”である場合（ステップ１２０５，ＮＯ）、受信シーケンスコントローラ６５２は、ステップ１２０５の動作を繰り返す。一方、ｅｌｂｆ＿ａｃｔが論理“０”である場合（ステップ１２０５，ＹＥＳ）、受信シーケンスコントローラ６５２は、ｌｆｓｒ＿ｒｅ＿ｌｏｃｋを論理“０”に設定し（ステップ１２０６）、ｅｌｂｆ＿ａｃｔの値をチェックする（ステップ１２０７）。
【０１６３】
デスクランブラ６４２が同期化を再開し、ａｌｉｇｎ＿ｄｅｔを論理“１”に設定すると、アライメント回路６４３は、エラスティックバッファ６４４に対する書き込みを再開し、エラスティックバッファ６４４は、ｅｌｂｆ＿ａｃｔを論理“１”に設定する。したがって、受信シーケンスコントローラ６５２は、ｅｌｂｆ＿ａｃｔの変化を検出することで、デスクランブラ６４２の再同期化が完了したことを認識できる。
【０１６４】
ｅｌｂｆ＿ａｃｔが論理“０”である場合（ステップ１２０７，ＮＯ）、受信シーケンスコントローラ６５２は、ステップ１２０７の動作を繰り返す。一方、ｅｌｂｆ＿ａｃｔが論理“１”である場合（ステップ１２０７，ＹＥＳ）、受信シーケンスコントローラ６５２は、パターン受信部６４６が出力するｔｓｏｓ１＿ｄｅｔ及びｔｓｏｓ２＿ｄｅｔの値をチェックする（ステップ１２０８）。ステージ０の状態で、かつ、ｔｓｏｓ１＿ｄｅｔ又はｔｓｏｓ２＿ｄｅｔが論理“１”である場合（ステップ１２０８，ＹＥＳ）、受信シーケンスコントローラ６５２は、ステージ１に移行する（ステップ１２０９）。
【０１６５】
次に、受信シーケンスコントローラ６５２は、ｔｓｏｓ２＿ｄｅｔの値をチェックする（ステップ１２１０）。ステージ１の状態で、かつ、ｔｓｏｓ２＿ｄｅｔが論理“１”である場合（ステップ１２１０，ＹＥＳ）、受信シーケンスコントローラ６５２は、リンク初期化を終了して、パケットの受信を開始する（ステップ１２１１）。そして、受信シーケンスコントローラ６５２は、ステージ２に移行して、ｒｘ＿ｐａｃｋｅｔ＿ｖａｌｉｄを論理“１”に設定する。
【０１６６】
次に、受信シーケンスコントローラ６５２は、ｔｓｏｓ１＿ｄｅｔの値をチェックする（ステップ１２１２）。ｔｓｏｓ１＿ｄｅｔが論理“０”である場合（ステップ１２１２，ＮＯ）、受信シーケンスコントローラ６５２は、ステップ１２０３と同様にして、デスクランブラ６４２の同期化を再度実行するか否かを判定する（ステップ１２１３）。
【０１６７】
デスクランブラ６４２の同期化を再度実行しない場合（ステップ１２１３，ＮＯ）、受信シーケンスコントローラ６５２は、パケットの受信を終了するか否かを判定する（ステップ１２１４）。パケットの受信を終了しない場合（ステップ１２１４，ＮＯ）、受信シーケンスコントローラ６５２は、ステップ１２１２以降の動作を繰り返す。一方、パケットの受信を終了する場合（ステップ１２１４，ＹＥＳ）、受信シーケンスコントローラ６５２は、動作を終了する。
【０１６８】
ステップ１２０２において、ｅｌｂｆ＿ａｃｔが論理“０”である場合（ステップ１２０２，ＮＯ）、受信シーケンスコントローラ６５２は、ステップ１２０７以降の動作を行う。ステップ１２０３において、デスクランブラ６４２の同期化を再度実行しない場合（ステップ１２０３，ＮＯ）、受信シーケンスコントローラ６５２は、ステップ１２０６以降の動作を行う。
【０１６９】
ステップ１２０８において、ｔｓｏｓ１＿ｄｅｔ及びｔｓｏｓ２＿ｄｅｔがともに論理“０”、もしくは、ステージ１の状態である場合（ステップ１２０８，ＮＯ）、受信シーケンスコントローラ６５２は、ステップ１２１０以降の動作を行う。ステップ１２１０において、ｔｓｏｓ２＿ｄｅｔが論理“０”、もしくは、ステージ０の状態である場合（ステップ１２１０，ＮＯ）、受信シーケンスコントローラ６５２は、ステップ１２０２以降の動作を繰り返す。
【０１７０】
ステップ１２１２において、ｔｓｏｓ１＿ｄｅｔが論理“１”である場合（ステップ１２１２，ＹＥＳ）、受信シーケンスコントローラ６５２は、ステップ１２０１以降の動作を繰り返す。ステップ１２１３において、デスクランブラ６４２の同期化を再度実行する場合（ステップ１２１３，ＹＥＳ）、受信シーケンスコントローラ６５２は、ステップ１２０１以降の動作を行う。
【０１７１】
図１３Ａ〜図１３Ｃは、図６の送信シーケンスコントローラ６５１が行う動作の例を示すフローチャートである。リンク初期化中において、送信シーケンスコントローラ６５１は、受信シーケンスコントローラ６５２の状態に応じて、ｔｓｏｓ１又はｔｓｏｓ２を切り替えて送信する。
【０１７２】
受信シーケンスコントローラ６５２の状態がステージ０である場合は、ｔｓｏｓ１が送信され、ステージ１である場合は、ｔｓｏｓ２が送信される。また、受信シーケンスコントローラ６５２がステージ２に移行した直後は、データ転送装置６０２に対するｔｓｏｓ２の送信を保証するため、Ｍ個（Ｍは２以上の整数）のｔｓｏｓ２が送信される。
【０１７３】
まず、送信シーケンスコントローラ６５１は、ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒ及びｄｓｃ＿ｌｏｃｋ＿ｐｔｎ  ｃｏｕｎｔｅｒを０に設定する（ステップ１３０１）。ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒは、ｓｋｐｏｓの送信タイミングを示すカウント値であり、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ  ｃｏｕｎｔｅｒは、デスクランブラロックパターンの送信タイミングを示すカウント値である。
【０１７４】
次に、送信シーケンスコントローラ６５１は、リンク初期化を開始し、ｐａｃｋｅｔ＿ｓｅｌｅｃｔ、ｔｓｏｓ２＿ｓｅｎｄ、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ＿ｓｅｎｄ、及びｓｋｐｏｓ＿ｓｅｎｄを論理“０”に設定する（ステップ１３０２）。そして、送信シーケンスコントローラ６５１は、ｔｓｏｓ１＿ｓｅｎｄを論理“１”に設定する。これにより、パターン生成部６３２は、ｔｓｏｓ１を生成し、送信回路６１１は、ｔｓｏｓ１をデータ転送装置６０２へ送信する。
【０１７５】
次に、送信シーケンスコントローラ６５１は、送信回路６１１が１個のエンコードブロックを送信したか否かをチェックする（ステップ１３０３）。送信回路６１１が１個のエンコードブロックを送信中である場合（ステップ１３０３，ＮＯ）、送信シーケンスコントローラ６５１は、ステップ１３０３の動作を繰り返す。
【０１７６】
一方、送信回路６１１が１個のエンコードブロックを送信した場合（ステップ１３０３，ＹＥＳ）、送信シーケンスコントローラ６５１は、ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒを１だけインクリメントする（ステップ１３０４）。そして、送信シーケンスコントローラ６５１は、送信されたエンコードブロックがｔｓｏｓの末尾であるか否かをチェックする（ステップ１３０５）。送信されたエンコードブロックがｔｓｏｓの末尾ではない場合（ステップ１３０５，ＮＯ）、送信シーケンスコントローラ６５１は、ステップ１３０３以降の動作を繰り返す。
【０１７７】
一方、送信されたエンコードブロックがｔｓｏｓの末尾である場合（ステップ１３０５，ＹＥＳ）、送信シーケンスコントローラ６５１は、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ  ｃｏｕｎｔｅｒを１だけインクリメントする（ステップ１３０６）。そして、送信シーケンスコントローラ６５１は、ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒを閾値ＴＨ４と比較する（ステップ１３０７）。
【０１７８】
ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒがＴＨ４よりも大きい場合（ステップ１３０７，ＹＥＳ）、送信シーケンスコントローラ６５１は、ｓｋｐｏｓ＿ｓｅｎｄを論理“１”に設定する（ステップ１３０８）。これにより、パターン生成部６３２は、ｓｋｐｏｓを生成し、送信回路６１１は、ｓｋｐｏｓをデータ転送装置６０２へ送信する。ただし、ｔｓｏｓ又はデスクランブラロックパターンの送信中である場合、その送信完了を待ってから、ｓｋｐｏｓが送信される。
【０１７９】
次に、送信シーケンスコントローラ６５１は、送信回路６１１がｓｋｐｏｓを送信したか否かをチェックする（ステップ１３０９）。送信回路６１１がｓｋｐｏｓを送信中である場合（ステップ１３０９，ＮＯ）、送信シーケンスコントローラ６５１は、ステップ１３０９の動作を繰り返す。
【０１８０】
一方、送信回路６１１がｓｋｐｏｓを送信した場合（ステップ１３０９，ＹＥＳ）、送信シーケンスコントローラ６５１は、ｓｋｐｏｓ＿ｓｅｎｄを論理“０”に設定し、ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒを０に設定する（ステップ１３１０）。そして、送信シーケンスコントローラ６５１は、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ  ｃｏｕｎｔｅｒを閾値ＴＨ５と比較する（ステップ１３１１）。
【０１８１】
ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ  ｃｏｕｎｔｅｒがＴＨ５よりも大きい場合（ステップ１３１１，ＹＥＳ）、送信シーケンスコントローラ６５１は、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ＿ｓｅｎｄを論理“１”に設定する（ステップ１３１２）。これにより、パターン生成部６３２は、デスクランブラロックパターンを生成し、送信回路６１１は、デスクランブラロックパターンをデータ転送装置６０２へ送信する。
【０１８２】
次に、送信シーケンスコントローラ６５１は、送信回路６１１がデスクランブラロックパターンを送信したか否かをチェックする（ステップ１３１３）。送信回路６１１がデスクランブラロックパターンを送信中である場合（ステップ１３１３，ＮＯ）、送信シーケンスコントローラ６５１は、ステップ１３１３の動作を繰り返す。
【０１８３】
一方、送信回路６１１がデスクランブラロックパターンを送信した場合（ステップ１３１３，ＹＥＳ）、送信シーケンスコントローラ６５１は、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ＿ｓｅｎｄを論理“０”に設定する（ステップ１３１４）。そして、送信シーケンスコントローラ６５１は、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ  ｃｏｕｎｔｅｒを０に設定する。
【０１８４】
次に、送信シーケンスコントローラ６５１は、受信シーケンスコントローラ６５２の状態をチェックする（ステップ１３１５）。受信シーケンスコントローラ６５２の状態がステージ０である場合（ステップ１３１５，ＮＯ）、送信シーケンスコントローラ６５１は、ステップ１３０２以降の動作を繰り返す。
【０１８５】
一方、受信シーケンスコントローラ６５２の状態がステージ１又はステージ２である場合（ステップ１３１５，ＹＥＳ）、送信シーケンスコントローラ６５１は、ｔｓｏｓ１＿ｓｅｎｄを論理“０”に設定する（ステップ１３１６）。そして、送信シーケンスコントローラ６５１は、ｔｓｏｓ２＿ｓｅｎｄを論理“１”に設定する。これにより、パターン生成部６３２は、ｔｓｏｓ２を生成し、送信回路６１１は、ｔｓｏｓ２をデータ転送装置６０２へ送信する。
【０１８６】
次に、送信シーケンスコントローラ６５１は、受信シーケンスコントローラ６５２の状態をチェックする（ステップ１３１７）。受信シーケンスコントローラ６５２の状態がステージ０もしくはステージ１である場合（ステップ１３１７，ＮＯ）、送信シーケンスコントローラ６５１は、ステップ１３０３以降の動作を繰り返す。
【０１８７】
一方、受信シーケンスコントローラ６５２の状態がステージ２である場合（ステップ１３１７，ＹＥＳ）、送信シーケンスコントローラ６５１は、送信回路６１１がＭ個のｔｓｏｓ２を送信したか否かをチェックする（ステップ１３１８）。送信回路６１１がＭ個のｔｓｏｓ２を送信していない場合（ステップ１３１８，ＮＯ）、送信シーケンスコントローラ６５１は、ステップ１３１８の動作を繰り返す。
【０１８８】
一方、送信回路６１１がＭ個のｔｓｏｓ２を送信した場合（ステップ１３１８，ＹＥＳ）、送信シーケンスコントローラ６５１は、リンク初期化を終了して、パケットの送信を開始する（ステップ１３１９）。そして、送信シーケンスコントローラ６５１は、ｔｓｏｓ２＿ｓｅｎｄを論理“０”に設定し、ｐａｃｋｅｔ＿ｓｅｌｅｃｔを論理“１”に設定する。
【０１８９】
次に、送信シーケンスコントローラ６５１は、パケットの送信を終了するか否かを判定する（ステップ１３２０）。パケットの送信を終了しない場合（ステップ１３２０，ＮＯ）、送信シーケンスコントローラ６５１は、受信シーケンスコントローラ６５２がリンク初期化を再開したか否かをチェックする（ステップ１３２１）。受信シーケンスコントローラ６５２がリンク初期化を再開した場合（ステップ１３２１，ＹＥＳ）、送信シーケンスコントローラ６５１は、ステップ１３０２以降の動作を繰り返す。
【０１９０】
一方、受信シーケンスコントローラ６５２がリンク初期化を再開していない場合（ステップ１３２１，ＮＯ）、送信シーケンスコントローラ６５１は、送信回路６１１が１個のエンコードブロックを送信したか否かをチェックする（ステップ１３２２）。送信回路６１１が１個のエンコードブロックを送信中である場合（ステップ１３２２，ＮＯ）、送信シーケンスコントローラ６５１は、ステップ１３２０以降の動作を繰り返す。
【０１９１】
一方、送信回路６１１が１個のエンコードブロックを送信した場合（ステップ１３２２，ＹＥＳ）、送信シーケンスコントローラ６５１は、ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒを１だけインクリメントする（ステップ１３２３）。そして、送信シーケンスコントローラ６５１は、ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒを閾値ＴＨ４と比較する（ステップ１３２４）。ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒがＴＨ４以下である場合（ステップ１３２４，ＮＯ）、送信シーケンスコントローラ６５１は、ステップ１３２０以降の動作を繰り返す。
【０１９２】
一方、ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒがＴＨ４よりも大きい場合（ステップ１３２４，ＹＥＳ）、送信シーケンスコントローラ６５１は、送信回路６１１がｓｋｐｏｓの送信が可能か否かをチェックする（ステップ１３２５）。パケットの送信中である場合、ｓｋｐｏｓの送信が不可能と判定され、パケットの送信中ではない場合又はパケットの送信が完了したとき、ｓｋｐｏｓの送信が可能と判定される。
【０１９３】
ｓｋｐｏｓの送信が不可能である場合（ステップ１３２５，ＮＯ）、送信シーケンスコントローラ６５１は、ステップ１３２５の動作を繰り返す。一方、ｓｋｐｏｓの送信が可能である場合（ステップ１３２５，ＹＥＳ）、送信シーケンスコントローラ６５１は、ｓｋｐｏｓ＿ｓｅｎｄを論理“１”に設定する（ステップ１３２６）。そして、送信シーケンスコントローラ６５１は、ｐａｃｋｅｔ＿ｓｅｌｅｃｔを論理“０”に設定する。
【０１９４】
次に、送信シーケンスコントローラ６５１は、送信回路６１１がｓｋｐｏｓを送信したか否かをチェックする（ステップ１３２７）。送信回路６１１がｓｋｐｏｓを送信中である場合（ステップ１３２７，ＮＯ）、送信シーケンスコントローラ６５１は、ステップ１３２７の動作を繰り返す。
【０１９５】
一方、送信回路６１１がｓｋｐｏｓを送信した場合（ステップ１３２７，ＹＥＳ）、送信シーケンスコントローラ６５１は、ｓｋｐｏｓ＿ｓｅｎｄを論理“０”に設定し、ｐａｃｋｅｔ＿ｓｅｌｅｃｔを論理“１”に設定する（ステップ１３２８）。そして、送信シーケンスコントローラ６５１は、ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒを０に設定して、ステップ１３２０以降の動作を繰り返す。
【０１９６】
ステップ１３０７において、ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒがＴＨ４以下である場合（ステップ１３０７，ＮＯ）、送信シーケンスコントローラ６５１は、ステップ１３１１以降の動作を行う。ステップ１３１１において、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ  ｃｏｕｎｔｅｒがＴＨ５以下である場合（ステップ１３１１，ＮＯ）、送信シーケンスコントローラ６５１は、ステップ１３１５以降の動作を行う。ステップ１３２０において、パケットの送信を終了する場合（ステップ１３２０，ＹＥＳ）、送信シーケンスコントローラ６５１は、動作を終了する。
【０１９７】
図１４は、送信シーケンスコントローラの動作の例を示すタイミングチャートである。図１４において、ｕ０、ｕ２〜ｕ３、ｕ５、ｕ６、ｕ８、ｕ９、ｕ１１〜ｕ１３、ｕ１５〜ｕ１７、ｕ１９、ｕ２１、及びｕ２２の各期間は、１６個のエンコードブロックを送信する時間に対応する。一方、ｕ１、ｕ４、ｕ７、ｕ１０、ｕ１４、ｕ１８、及びｕ２０の各期間は、より多数のエンコードブロックを送信する時間に対応し、期間の途中で切断することで、実際よりも短縮して示されている。
【０１９８】
ＴＸは、送信シーケンスコントローラ６５１の動作を表し、ＲＸは、受信シーケンスコントローラ６５２の動作を表し、ｎｏｎ−ｅｎｃｏｄｅ  ｓｅｎｄ  ｄａｔａは、送信回路６１１のセレクタ６３３が出力するデータを表す。ｎｏｎ−ｅｎｃｏｄｅ  ｓｅｎｄ  ｄａｔａのＴＳＯＳ１、ＴＳＯＳ２、及びＳＫＰＯＳは、１６個のエンコードブロックからなるｔｓｏｓ１、ｔｓｏｓ２、及びｓｋｐｏｓを表す。ｄｓｃ＿ｌｏｃｋ＿ｐｔｎは、１６個のエンコードブロックからなるデスクランブラロックパターンを表し、前半８個のデータＡＬＬ０及び後半８個のデータＡＬＬ１を含む。
【０１９９】
この例では、ステップ１３０７及びステップ１３２４のＴＨ４は１５００であり、ステップ１３１１のＴＨ５は１５であり、ステップ１３１８のＭは１６である。
【０２００】
リンク初期化中であるｕ０〜ｕ９の各期間において、受信シーケンスコントローラ６５２の状態はステージ０であるため、ｔｓｏｓ１＿ｓｅｎｄが論理“１”に設定され、ＴＳＯＳ１が送信される。そして、期間ｕ１の末尾において、ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒ＝１５０１＞ＴＨ４となるため、ＴＳＯＳ１の送信完了を待って、期間ｕ２において、ｓｋｐｏｓ＿ｓｅｎｄが論理“１”に設定され、ＳＫＰＯＳが送信される。
【０２０１】
また、期間ｕ５において、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ  ｃｏｕｎｔｅｒ＝１６＞ＴＨ５となるため、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ＿ｓｅｎｄが論理“１”に設定され、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎが送信される。同様に、期間ｕ８においても、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ  ｃｏｕｎｔｅｒ＝１６となるため、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎが送信される。
【０２０２】
次に、ｕ１０〜ｕ１６の各期間において、受信シーケンスコントローラ６５２の状態はステージ１であるため、ｔｓｏｓ１＿ｓｅｎｄが論理“０”に設定され、ｔｓｏｓ２＿ｓｅｎｄが論理“１”に設定されて、ＴＳＯＳ２が送信される。そして、期間ｕ１０の末尾において、ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒ＝１５０１となるため、ＴＳＯＳ２の送信完了を待って、期間ｕ１１において、ＳＫＰＯＳが送信される。また、期間ｕ１５において、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎ  ｃｏｕｎｔｅｒ＝１６となるため、ｄｓｃ＿ｌｏｃｋ＿ｐｔｎが送信される。
【０２０３】
次に、受信シーケンスコントローラ６５２がステージ２に移行した直後の期間ｕ１７及び期間ｕ１８において、１６個のＴＳＯＳ２が送信される。そして、１６個のＴＳＯＳ２の送信が完了した期間ｕ１９において、送信シーケンスコントローラ６５１は、リンク初期化を完了し、パケットｐａｋｅｔ（１）〜ｐａｋｅｔ（Ｎ＋１）の送信を開始する。その後、期間ｕ２０の末尾において、ｓｋｐｏｓ＿ｓｅｎｄ  ｃｏｕｎｔｅｒ＝１５０１となるため、ｐａｋｅｔ（Ｎ）の送信完了を待って、期間ｕ２１において、ＳＫＰＯＳが送信される。
【０２０４】
図１５は、図６のデータ転送システムに対応する情報処理システムの構成例を示している。図１５の情報処理システムは、Central Processing Unit（ＣＰＵ）１５０１、Memory Control Unit（ＭＣＵ）１５０２、及びメモリ１５０３を含む。情報処理システムは、さらに、入出力部（ＩＯＵ）１５０４、アダプタ１５０５〜アダプタ１５０７、及びRead Only Memory（ＲＯＭ）１５０８を含む。
【０２０５】
ＭＣＵ１５０２は、ＣＰＵ１５０１（プロセッサ）及びＩＯＵ１５０４からメモリ１５０３に対するアクセスを制御し、アダプタ１５０５〜アダプタ１５０７は、周辺装置との間でデータ通信を行う。アダプタ１５０６は、ＲＯＭ１５０８と通信し、アダプタ１５０７は、Local Area Network（ＬＡＮ）を介して他の装置と通信する。ＩＯＵ１５０４は、アダプタ１５０５〜アダプタ１５０７を制御する。この場合、図６のシリアルバス６０３は、以下の装置間の接続に用いることができる。
（ａ）ＣＰＵ１５０１とＭＣＵ１５０２の接続
（ｂ）ＭＣＵ１５０２とＩＯＵ１５０４の接続
（ｃ）ＩＯＵ１５０４とアダプタ１５０５の接続
（ｄ）ＩＯＵ１５０４とアダプタ１５０６の接続
（ｅ）ＩＯＵ１５０４とアダプタ１５０７の接続
（ｆ）アダプタ１５０６とＲＯＭ１５０８の接続
【０２０６】
そして、データ転送装置６０１及びデータ転送装置６０２は、シリアルバス６０３の両端に位置する装置内に、通信用の大規模集積回路（ＬＳＩ）として実装される。
【０２０７】
図１、図４、及び図６のデータ転送システムの構成は一例に過ぎず、データ転送システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、図６のデータ転送システムにおいて、データ転送装置６０１が送信動作のみを行う場合は、受信回路６１２及び受信シーケンスコントローラ６５２を省略することができる。同様に、データ転送装置６０２が受信動作のみを行う場合は、送信回路６２１を省略することができる。
【０２０８】
図２及び図８のスクランブラと図３及び図９のデスクランブラの構成は一例に過ぎず、データ転送システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【０２０９】
図１５の情報処理システムの構成は一例に過ぎず、情報処理システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。図１、図４、及び図６のデータ転送システムは、複数のＣＰＵを含む大規模な情報処理システムに対して適用することも可能である。
【０２１０】
図７のデスクランブラロックパターンは一例に過ぎず、データ転送システムの構成又は条件に応じて別のデスクランブラロックパターンを用いてもよい。例えば、前半部分と後半部分のエンコードブロックの個数は異なっていてもよく、ＡＬＬ０又はＡＬＬ１以外の所定のデータ列をデスクランブラロックパターンとして用いてもよい。
【０２１１】
図５、図１０Ａ、図１０Ｂ、図１２Ａ、図１２Ｂ、及び図１３Ａ〜図１３Ｃのフローチャートは一例に過ぎず、データ転送システムの構成又は条件に応じて一部の処理を省略又は変更してもよい。
【０２１２】
図１１及び図１４のタイミングチャートは一例に過ぎず、データ転送システムの構成又は条件に応じてタイミングチャートは変化する。ｔｓｏｓ又はｓｋｐｏｓの代わりに、別のトレーニングパターンを用いてもよい。
【０２１３】
式（１）〜式（６）のＴＨ１〜ＴＨ３は一例に過ぎず、デスクランブラロックパターンに応じて別の閾値を用いてもよい。
【０２１４】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０２１５】
図１乃至図１５を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）
第１期間において、第１乱数を用いて第１データ列をスクランブルすることで生成される、前記第１乱数を含む第１送信データ列を、データ送信装置から受信し、第２期間において、前記第１乱数を更新して得られる第２乱数を用いて第２データ列をスクランブルすることで生成される、前記第２乱数を含む第２送信データ列を、前記データ送信装置から受信する受信部と、
前記受信部が受信した前記第１送信データ列に含まれる前記第１乱数を更新して、前記第２乱数を生成する更新部と、
前記更新部が生成した前記第２乱数を用いて前記第２送信データ列をデスクランブルすることで、前記第２送信データ列から前記第２データ列を復元する復元部と、
前記復元部が復元した前記第２データ列が所定のデータ列である場合、生成した乱数を更新するように前記更新部を制御する制御部と、
を備えることを特徴とするデータ転送装置。
（付記２）
前記受信部は、前記第２期間を含む複数の期間それぞれにおいて、前記第２送信データ列を含む複数の送信データ列を前記データ送信装置から受信し、
前記復元部は、前記複数の送信データ列をデスクランブルすることで、前記複数の送信データ列から前記第２データ列を含む複数のデータ列を復元し、
前記制御部は、
前記復元部が復元した前記複数のデータ列から前記所定のデータ列を検出する第１検出部と、
前記第１検出部が前記所定のデータ列を検出した回数をカウントし、前記所定のデータ列を検出した回数が第１所定回数に達した場合、前記生成した乱数の更新を指示する制御信号を前記更新部へ出力する判定部と、
を含むことを特徴とする付記１記載のデータ転送装置。
（付記３）
前記制御部は、前記復元部が復元した前記複数のデータ列から、前記所定のデータ列とは異なるデータ列を検出する第２検出部をさらに含み、
前記判定部は、前記所定のデータ列を検出した回数が前記第１所定回数に達した後に、前記第２検出部が前記異なるデータ列を検出しなかった回数をカウントし、前記異なるデータ列を検出しなかった回数が第２所定回数に達した場合、前記制御信号を解除して、前記第１検出部が前記所定のデータ列を検出した回数をリセットすることを特徴とする付記２記載のデータ転送装置。
（付記４）
前記判定部は、前記所定のデータ列を検出した回数が前記第１所定回数に達した後に、前記第２検出部が前記異なるデータ列を検出した回数をカウントし、前記異なるデータ列を検出した回数が第３所定回数に達しない場合、前記制御信号を解除して、前記第１検出部が前記所定のデータ列を検出した回数をリセットすることを特徴とする付記２又は３記載のデータ転送装置。
（付記５）
前記受信部は、前記異なるデータ列を検出した回数が前記第３所定回数に達した後に、スクランブルされたトレーニングパターンを前記データ送信装置から受信することを特徴とする付記４記載のデータ転送装置。
（付記６）
第１データ転送装置と第２データ転送装置とを備えるデータ転送システムであって、
前記第１データ転送装置は、
第１データ列と第２データ列とを生成する生成部と、
第１乱数を更新して第２乱数を生成する第１更新部と、
前記第１乱数を用いて前記第１データ列をスクランブルすることで、前記第１乱数を含む第１送信データ列を生成し、前記第２乱数を用いて前記第２データ列をスクランブルすることで、前記第２乱数を含む第２送信データ列を生成するランダム化部と、
第１期間において前記第１送信データ列を前記第２データ転送装置へ送信し、第２期間において前記第２送信データ列を前記第２データ転送装置へ送信する送信部とを含み、
前記第２データ転送装置は、
前記第１期間において前記第１データ転送装置から前記第１送信データ列を受信し、前記第２期間において前記第１データ転送装置から前記第２送信データ列を受信する受信部と、
前記受信部が受信した前記第１送信データ列に含まれる前記第１乱数を更新して、前記第２乱数を生成する第２更新部と、
前記第２更新部が生成した前記第２乱数を用いて前記第２送信データ列をデスクランブルすることで、前記第２送信データ列から前記第２データ列を復元する復元部と、
前記復元部が復元した前記第２データ列が所定のデータ列である場合、生成した乱数を更新するように前記第２更新部を制御する制御部とを含む、
ことを特徴とするデータ転送システム。
（付記７）
前記受信部は、前記第２期間を含む複数の期間それぞれにおいて、前記第２送信データ列を含む複数の送信データ列を前記第１データ転送装置から受信し、
前記復元部は、前記複数の送信データ列をデスクランブルすることで、前記複数の送信データ列から前記第２データ列を含む複数のデータ列を復元し、
前記制御部は、
前記復元部が復元した前記複数のデータ列から前記所定のデータ列を検出する第１検出部と、
前記第１検出部が前記所定のデータ列を検出した回数をカウントし、前記所定のデータ列を検出した回数が第１所定回数に達した場合、前記生成した乱数の更新を指示する制御信号を前記第２更新部へ出力する判定部と、
を含むことを特徴とする付記６記載のデータ転送システム。
（付記８）
前記制御部は、前記復元部が復元した前記複数のデータ列から、前記所定のデータ列とは異なるデータ列を検出する第２検出部をさらに含み、
前記判定部は、前記所定のデータ列を検出した回数が前記第１所定回数に達した後に、前記第２検出部が前記異なるデータ列を検出しなかった回数をカウントし、前記異なるデータ列を検出しなかった回数が第２所定回数に達した場合、前記制御信号を解除して、前記第１検出部が前記所定のデータ列を検出した回数をリセットすることを特徴とする付記７記載のデータ転送システム。
（付記９）
前記判定部は、前記所定のデータ列を検出した回数が前記第１所定回数に達した後に、前記第２検出部が前記異なるデータ列を検出した回数をカウントし、前記異なるデータ列を検出した回数が第３所定回数に達しない場合、前記制御信号を解除して、前記第１検出部が前記所定のデータ列を検出した回数をリセットすることを特徴とする付記７又は８記載のデータ転送システム。
（付記１０）
前記受信部は、前記異なるデータ列を検出した回数が前記第３所定回数に達した後に、スクランブルされたトレーニングパターンを前記第１データ転送装置から受信することを特徴とする付記９記載のデータ転送システム。
（付記１１）
第１データ転送装置と第２データ転送装置とを備えるデータ転送システムの制御方法であって、
前記第１データ転送装置が、第１乱数を用いて第１データ列をスクランブルすることで、前記第１乱数を含む第１送信データ列を生成し、
第１期間において、前記第１データ転送装置が、前記第１送信データ列を前記第２データ転送装置へ送信し、
前記第２データ転送装置が、前記第１データ転送装置から前記第１送信データ列を受信し、
前記第２データ転送装置が、受信した前記第１送信データ列に含まれる前記第１乱数を更新して、前記第２乱数を生成し、
前記第１データ転送装置が、前記第１乱数を更新して前記第２乱数を生成し、
前記第１データ転送装置が、前記第２乱数を用いて第２データ列をスクランブルすることで、前記第２乱数を含む第２送信データ列を生成し、
第２期間において、前記第１データ転送装置が、前記第２送信データ列を前記第２データ転送装置へ送信し、
前記第２データ転送装置が、前記第１データ転送装置から前記第２送信データ列を受信し、
前記第２データ転送装置が、生成した前記第２乱数を用いて前記第２送信データ列をデスクランブルすることで、前記第２送信データ列から前記第２データ列を復元し、
前記第２データ転送装置が、復元した前記第２データ列が所定のデータ列である場合、生成した乱数を更新する、
ことを特徴とするデータ転送システムの制御方法。
（付記１２）
前記第１データ転送装置が、前記第２データ列を含む複数のデータ列をスクランブルすることで、前記第２送信データ列を含む複数の送信データ列を生成し、
前記第２期間を含む複数の期間それぞれにおいて、前記第１データ転送装置が、前記複数の送信データ列を前記第２データ転送装置へ送信し、
前記第２データ転送装置が、前記第１データ転送装置から前記複数の送信データ列を受信し、
前記第２データ転送装置が、前記複数の送信データ列をデスクランブルすることで、前記複数の送信データ列から前記複数のデータ列を復元し、
前記第２データ転送装置が、復元した前記複数のデータ列から前記所定のデータ列を検出し、
前記第２データ転送装置が、前記所定のデータ列を検出した回数をカウントし、
前記第２データ転送装置が、前記所定のデータ列を検出した回数が第１所定回数に達した場合、前記生成した乱数を更新する、
ことを特徴とする付記１１記載の制御方法。
（付記１３）
前記第２データ転送装置が、前記所定のデータ列を検出した回数が前記第１所定回数に達した後に、前記所定のデータ列とは異なるデータ列を検出しなかった回数をカウントし、
前記第２データ転送装置が、前記異なるデータ列を検出しなかった回数が第２所定回数に達した場合、前記制御信号を解除して、前記所定のデータ列を検出した回数をリセットする、
ことを特徴とする付記１２記載の制御方法。
（付記１４）
前記第２データ転送装置が、前記所定のデータ列を検出した回数が前記第１所定回数に達した後に、前記複数のデータ列から前記異なるデータ列を検出し、
前記第２データ転送装置が、前記異なるデータ列を検出した回数をカウントし、
前記第２データ転送装置が、前記異なるデータ列を検出した回数が第３所定回数に達しない場合、前記制御信号を解除して、前記所定のデータ列を検出した回数をリセットする、
ことを特徴とする付記１２又は１３記載の制御方法。
（付記１５）
前記第２データ転送装置が、前記異なるデータ列を検出した回数が前記第３所定回数に達した後に、スクランブルされたトレーニングパターンを前記第１データ転送装置から受信することを特徴とする付記１４記載の制御方法。
【符号の説明】
【０２１６】
１０１、１０２、４０１、４０２、６０１、６０２  データ転送装置
１０３、６０３  シリアルバス
１１１、６１１  送信回路
１１２、６１２  受信回路
１１３、１２３、６１３、６２３  トレーニング制御部
１２１、６２１  送信回路
１２２、６２２  受信回路
１３１、６３１  ＣＲＣ生成部
１３２、６３２  パターン生成部
１３３、１３５、２０２、３０２、６３３、９０２  セレクタ
１３４、６３５  スクランブラ
１３６、６３４  エンコーダ
１３７、１４１、６３６、６４１  変換部
１４２、６４３  アライメント回路
１４３  アライメント検出部
１４４、６４４  エラスティックバッファ
１４５、６４５  デコーダ
１４６、６４２  デスクランブラ
１４７、６４６  パターン受信部
１４８、６４７  ＣＲＣチェッカ
１５１、６５１  送信シーケンスコントローラ
１５２、６５２  受信シーケンスコントローラ
２０１、３０１、８０１、９０３  ＬＦＳＲ
２０３、３０３、８０２、９０４  ＯＲ回路
２０５、３０５、８０４、９０６  ＸＯＲ回路
２０４、３０４、８０３、９０１、９０５、９１４  ＦＦ
４１１  生成部
４１２  ランダム化部
４１３  送信部
４１４、４２３  更新部
４２１  受信部
４２２  復元部
４２４、６４８  制御部
９１１、９１２  検出部
９１３  判定部
９２１  入力データ
１５０１  ＣＰＵ
１５０２  ＭＣＵ
１５０３  メモリ
１５０４  ＩＯＵ
１５０５〜１５０７  アダプタ
１５０８  ＲＯＭ
【図１】
0006601282.tif 000002
【図２】
0006601282.tif 000003
【図３】
0006601282.tif 000004
【図４】
0006601282.tif 000005
【図５】
0006601282.tif 000006
【図６】
0006601282.tif 000007
【図７】
0006601282.tif 000008
【図８】
0006601282.tif 000009
【図９】
0006601282.tif 000010
【図１０Ａ】
0006601282.tif 000011
【図１０Ｂ】
0006601282.tif 000012
【図１１】
0006601282.tif 000013
【図１２Ａ】
0006601282.tif 000014
【図１２Ｂ】
0006601282.tif 000015
【図１３Ａ】
0006601282.tif 000016
【図１３Ｂ】
0006601282.tif 000017
【図１３Ｃ】
0006601282.tif 000018
【図１４】
0006601282.tif 000019
【図１５】
0006601282.tif 000020