(57)【要約】【課題】高周波数のクロックドメインと低周波数のクロックドメインとの間でクロックドメイン変換をすることができるブリッジ回路を提供することを課題とする。【解決手段】ブリッジ回路は、第１のクロック信号に同期して動作する第１のクロックドメイン（１２１）と、前記第１のクロック信号より周波数が低い第２のクロック信号に同期して動作する第２のクロックドメイン（１２２）と、前記第２のクロックドメインから入力したデータを前記第２のクロック信号に同期した状態から前記第１のクロック信号に同期した状態に変換して前記第１のクロックドメインに出力する第１のクロックドメイン変換部（２０２）と、前記第１のクロックドメインから入力したデータを前記第１のクロック信号に同期した状態から前記第２のクロック信号に同期した状態に変換して前記第２のクロックドメインに出力する第２のクロックドメイン変換部（２３５）とを有する。【選択図】図２
2014010550.tif 000002
【特許請求の範囲】
【請求項１】
第１のクロック信号に同期して動作する第１のクロックドメインと、
前記第１のクロック信号より周波数が低い第２のクロック信号に同期して動作する第２のクロックドメインと、
前記第２のクロックドメインから入力したデータを前記第２のクロック信号に同期した状態から前記第１のクロック信号に同期した状態に変換して前記第１のクロックドメインに出力する第１のクロックドメイン変換部と、
前記第１のクロックドメインから入力したデータを前記第１のクロック信号に同期した状態から前記第２のクロック信号に同期した状態に変換して前記第２のクロックドメインに出力する第２のクロックドメイン変換部とを有し、
前記第１のクロックドメインは、
前記第１のクロックドメイン変換部から入力したデータをバッファリングして外部に出力するための第１のバッファと、
外部から入力したデータをバッファリングして前記第２のクロックドメイン変換部に出力するための第２のバッファとを有し、
前記第１のバッファは、前記第１のクロックドメイン変換部から第１のデータを入力すると、前記入力した同じ前記第１のデータを繰り返して外部に出力し、
前記第２のバッファは、外部から第２のデータを入力すると、前記第２のデータを間引いて前記第２のクロックドメイン変換部に出力することを特徴とするブリッジ回路。
【請求項２】
前記第１のバッファは、前記第１のクロックドメイン変換部から第３のデータを入力すると、前記入力した前記第３のデータを繰り返さずに外部に出力することを特徴とする請求項１記載のブリッジ回路。
【請求項３】
前記第１のクロックドメインは、
前記第１のクロックドメイン変換部から入力したデータがロジカルアイドルデータであるときには、前記ロジカルアイドルデータを前記第１のバッファにバッファリングせず、前記第１のバッファの出力データがないときにはロジカルアイドルデータを外部に出力し、
外部から入力したデータがロジカルアイドルデータであるときには、前記ロジカルアイドルデータを前記第２のバッファにバッファリングせず、前記第２のバッファの出力データがないときにはロジカルアイドルデータを前記第２のクロックドメイン変換部に出力することを特徴とする請求項１又は２記載のブリッジ回路。
【請求項４】
前記第１のクロックドメインは、
前記第１のバッファからのデータを暗号化して外部に出力する第１のスクランブラと、
外部からのデータを復号して前記第２のバッファに出力する第１のデスクランブラとを有し、
前記第２のクロックドメインは、
外部からのデータを復号して前記第１のクロックドメイン変換部に出力する第２のデスクランブラと、
前記第２のクロックドメイン変換部からのデータを暗号化して外部に出力する第２のスクランブラとを有することを特徴とする請求項１〜３のいずれか１項に記載のブリッジ回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブリッジ回路に関する。
【背景技術】
【０００２】
PCI Express規格のスイッチ及びバスを介してデータの転送を受けるPCI Express規格のエンドポイントを備えるデータ分配装置が知られている（例えば、特許文献１参照）。バッファは、上位のスイッチ及びバスを介して転送されたデータをバッファリングする。分配制御回路は、この転送されたデータを下位の複数の出力先である出力部に分配して転送する制御を行う。PCI Express規格のルートコンプレックス及びスイッチは、分配制御回路の制御によりデータの転送を行なう。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３３２３１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
高速入出力インタフェース回路を使用した実機デバイス評価では、デジタル部の動作周波数が高く、ＦＰＧＡ（フィールドプログラマブルゲートアレイ：Field Programmable Gate Array）にて動作させることが困難である課題が存在する。例えば、PCI ExpressやUSB3.0などのインタフェース規格は、動作周波数が２５０ＭＨｚであり、高周波数であるため、ＦＰＧＡにおいては動作させることが難しい状況にある。
【０００５】
本発明の目的は、高周波数のクロックドメインと低周波数のクロックドメインとの間でクロックドメイン変換をすることができるブリッジ回路を提供することである。
【課題を解決するための手段】
【０００６】
ブリッジ回路は、第１のクロック信号に同期して動作する第１のクロックドメインと、前記第１のクロック信号より周波数が低い第２のクロック信号に同期して動作する第２のクロックドメインと、前記第２のクロックドメインから入力したデータを前記第２のクロック信号に同期した状態から前記第１のクロック信号に同期した状態に変換して前記第１のクロックドメインに出力する第１のクロックドメイン変換部と、前記第１のクロックドメインから入力したデータを前記第１のクロック信号に同期した状態から前記第２のクロック信号に同期した状態に変換して前記第２のクロックドメインに出力する第２のクロックドメイン変換部とを有し、前記第１のクロックドメインは、前記第１のクロックドメイン変換部から入力したデータをバッファリングして外部に出力するための第１のバッファと、外部から入力したデータをバッファリングして前記第２のクロックドメイン変換部に出力するための第２のバッファとを有し、前記第１のバッファは、前記第１のクロックドメイン変換部から第１のデータを入力すると、前記入力した同じ前記第１のデータを繰り返して外部に出力し、前記第２のバッファは、外部から第２のデータを入力すると、前記第２のデータを間引いて前記第２のクロックドメイン変換部に出力する。
【発明の効果】
【０００７】
第１のクロック信号に同期する第１のクロックドメインと第２のクロック信号に同期する第２のクロックドメインとの間でクロックドメイン変換をすることができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態による入出力インタフェース回路の構成例を示す図である。
【図２】図２は、図１のブリッジ回路の構成例を示す図である。
【図３】図３は、図２のスクランブラの構成例を示す図である。
【図４】図４（Ａ）〜（Ｄ）は、パケットのフォーマット例を示す図である。
【図５】図５（Ａ）及び（Ｂ）は、バッファの入力データ及び出力データの例を示す図である。
【発明を実施するための形態】
【０００９】
図１は、実施形態による入出力インタフェース回路の構成例を示す図である。以下、入出力インタフェース回路の例として、PCI Express規格の高速入出力インタフェース回路の例を説明するが、他の入出力インタフェース回路に適用することもできる。
【００１０】
入出力インタフェース回路は、物理層１１１、ブリッジ回路１１２及びリンク層１１３を有する。例えば、物理層１１１はシリコン１０１により構成され、ブリッジ回路１１２及びリンク層１１３はＦＰＧＡ１０２により構成される。入出力インタフェース回路は、高速クロックドメイン１２１及び低速クロックドメイン１２２を有する。シリコン１０１は、高速動作可能である。ＦＰＧＡ１０２は、シリコン１０１と同じ高速度で動作することが困難であり、シリコン１０１よりも低速で動作可能である。物理層１１１の一部及びブリッジ回路１１２の一部は、高速クロックドメイン１２１に属する。リンク層１１３及びブリッジ回路１１２の他の一部は、低速クロックドメイン１２２に属する。高速クロックドメイン１２１は、第１のクロック信号に同期して動作する。低速クロックドメイン１２２は、第１のクロック信号より周波数が低い第２のクロック信号に同期して動作する。ブリッジ回路１１２は、リンク層１１３から入力した第２のクロック信号に同期した送信データｔｘを、第１のクロック信号に同期した送信データｔｘに変換して物理層１１１に出力する。また、ブリッジ回路１１２は、物理層１１１から入力した第１のクロック信号に同期した受信データｒｘを、第２のクロック信号に同期した受信データｒｘに変換してリンク層１１３に出力する。
【００１１】
ブリッジ回路１１２は、リンク層１１３の論理を変えずに（バス幅を変更せずに）、リンク層１１３が第２のクロック信号の低周波数でデータｔｘ，ｒｘを送受信できるようにすることにより、リンク層１１３の動作周波数を低速にすることができる。ここで、データｔｘ，ｒｘの送受信は、待ち時間がなく、連続で送受信しなければならないため、単純にデータｔｘ，ｒｘを受け渡す制御では、受信動作（高速クロックドメイン１２１から低速クロックドメイン１２２への受け渡し）では受信データｒｘが溢れ、送信動作（低速クロックドメイン１２２から高速クロックドメイン１２１への受け渡し）では送信データｔｘが不足することになる。そこで、ブリッジ回路１１２は、クロック周波数の変換を行い、さらに、データｔｘ及びｒｘの特性を利用し、データｔｘ及びｒｘの溢れや不足が発生しないように制御する。
【００１２】
図２は、図１のブリッジ回路１１２の構成例を示す図である。ブリッジ回路１１２は、第１のクロックドメイン（高速クロックドメイン）１２１、第２のクロックドメイン（低速クロックドメイン）１２２、第１のクロックドメイン変換部２０２及び第２のクロックドメイン変換部２３５を有する。第１のクロックドメイン１２１は、第１のクロック信号に同期して動作する。第２のクロックドメイン１２２は、第１のクロック信号より周波数が低い第２のクロック信号に同期して動作する。
【００１３】
第１のクロックドメイン１２１は、第１のスクランブラ２１９、第１のデスクランブラ２２０、第１のバッファ２０４、第２のバッファ２２２及びセレクタ２１８，２０３，２２１，２３４を有する。第２のクロックドメイン１２２は、第２のデスクランブラ２０１及び第２のスクランブラ２３６を有する。
【００１４】
図３は、図２のスクランブラ２１９及び２３６の構成例を示す図である。スクランブラ２１９及び２３６は、それぞれ、Ｄ型フリップフロップＤ０〜Ｄ１５，Ｄ２０〜Ｄ２７、バッファ３０１及び排他的論理和回路３０２〜３０５を有し、クロック信号ＣＫに同期して、入力データＤｉを暗号化し、暗号化した出力データＤｏを出力する。排他的論理和回路３０２は、フリップフロップＤ０〜Ｄ１５のシフトレジスタにより生成されたデータと、フリップフロップＤ２０〜Ｄ２７のシフトレジスタのデータとの排他的論理和データを出力データＤｏとして出力する。スクランブラ２１９及び２３６は、ＥＭＣ（電磁両立性：Electro-Magnetic Compatibility）対策のため、同じデータ列を繰り返し転送する場合でも、暗号化により、違うデータ列として転送できるため、シリアルバス上から発生される電磁ノイズの周波数成分を平坦化できる。
【００１５】
なお、図１のデスクランブラ２０１及び２２０は、スクランブラ２１９及び２３６による暗号化データを復号することにより、元のデータに戻す。デスクランブラ２０１及び２２０は、スクランブラ２１９及び２３６と同じアルゴリズムで排他的論理和演算することにより、アルゴリズム論理が打ち消されることになる。
【００１６】
図２の送信データｔｘ及び受信データｒｘは、スクランブラにより暗号化されている。そのため、送信データｔｘの入口には第２のデスクランブラ２０１を設け、送信データｔｘの出口には第１のスクランブラ２１９を設ける。また、受信データｒｘの入口には第１のデスクランブラ２２０を設け、受信データｒｘの出口には第２のスクランブラ２３６を設ける。
【００１７】
まず、送信データｔｘについて説明する。図２において、第２のデスクランブラ２０１は、図１のリンク層１１３からの送信データｔｘを復号して第１のクロックドメイン変換部２０２に出力する。第１のクロックドメイン変換部２０２は、第２のデスクランブラ２０１から入力した送信データを第２のクロック信号に同期した状態から第１のクロック信号に同期した状態に変換してセレクタ２０３に出力する。例えば、第１のクロックドメイン変換部２０２は、同期化バッファを有し、第２のデスクランブラ２０１からの送信データを第２のクロック信号に同期して同期化バッファに書き込み、その同期化バッファから第１のクロック信号に同期して読み出してセレクタ２０３に出力する。
【００１８】
セレクタ２０３は、送信データ（パケット）の種類に応じて、第１のクロックドメイン変換部２０２から入力した送信データを、第１のバッファ２０４内の１０個のバッファ２０５〜２１４のいずれかに書き込む。ただし、セレクタ２０３は、第１のクロックドメイン変換部２０２から入力した送信データがロジカルアイドルデータであるときには、そのロジカルアイドルデータを第１のバッファ２０４に書き込まずに廃棄する。ロジカルアイドルデータは、０値データであり、意味がある通信を行っていない期間に送受信されるデータ（無効データ）である。
【００１９】
第１のバッファ２０４は、送信データ（パケット）の種類毎のバッファ２０５〜２１４を有し、セレクタ２０３から入力したデータをバッファリングしてセレクタ２１８に出力する。送信動作では、低周波数の第２のクロック信号から高周波数の第１のクロック信号へデータを受け渡す。そのため、第１のバッファ２０４は、出力データが入力データより多いデータ量となる。第１のバッファ２０４は、入力データをそのまま出力すると、出力するデータが不足するため、次のような制御でデータを追加する。
【００２０】
バッファ２０５〜２０７は、ＰＬＰ（物理層パケット：Physical Layer Packet）のバッファである。図４（Ａ）は、ＰＬＰのフォーマット例を示す図である。ＰＬＰは、１バイトの開始フレーム４０１及び３バイトの制御コード４０２を有し、物理層１１１の基本制御に必要なパケットである。開始フレーム４０１は、8B10BエンコードのK28.5（COM）で表される。制御コード４０２は、ＫコードのK28.1で表されるＦＴＳと、K28.0で表されるＳＫＰと、K28.3で表されるＩＤＬとのうちのいずれかのコードを示す。ＰＬＰのＦＴＳは、バッファ２０５によりバッファリングされる。ＰＬＰのＳＫＰは、バッファ２０６によりバッファリングされる。ＰＬＰのＩＤＬは、バッファ２０７によりバッファリングされる。
【００２１】
バッファ２０５は、セレクタ２０３からＰＬＰのＦＴＳを入力してバッファリングする。ＦＴＳは、シリアルバスのビットを識別するためのビットロック、及びシンボルを識別するためのシンボルロックに使用されるパケットである。ＦＴＳは、ビットロック及びシンボルロックするまで連続転送が必要である。そのため、バッファ２０５は、図５（Ａ）に示すように、セレクタ２０３からＰＬＰのＦＴＳ（第１のデータ）を入力すると、その入力した同じＰＬＰのＦＴＳ２１５を繰り返してセレクタ２１８に出力する。
【００２２】
図５（Ａ）は、ＰＬＰのＦＴＳのバッファ２０５の入力データ及び出力データの例を示す図である。バッファ２０５の入力データは、低周波数の第２のクロック信号の周期で入力される。バッファ２０５は、その入力データが入力される度にバッファリングデータを更新する。バッファ２０５の出力データは、バッファ２０５内のデータが更新されると、高周波数の第１のクロック信号に同期して、バッファ２０５内の同じデータを所定回数（例えば４回）繰り返して出力される。同じデータを繰り返し出力することにより、連続転送が可能になる。これにより、ビットロック及びシンボルロックを確実に行うことができる。
【００２３】
図２において、バッファ２０６は、セレクタ２０３からＰＬＰのＳＫＰを入力してバッファリングする。ＳＫＰは、通信デバイス間の周波数偏差を吸収しデータの過不足の調整するために送受信されるパケットである。バッファ２０６は、セレクタ２０３からＰＬＰのＳＫＰ（第３のデータ）を入力すると、その入力したＰＬＰのＳＫＰを繰り返さずにセレクタ２１８に出力する。
【００２４】
バッファ２０７は、セレクタ２０３からＰＬＰのＩＤＬを入力してバッファリングする。ＩＤＬは、パワーセーブ時にバスの振幅を停止する際に使用され、以降は送受信データがないことを示すパケットである。バッファ２０７は、セレクタ２０３からＰＬＰのＩＤＬを入力すると、その入力したＰＬＰのＩＤＬを繰り返さずにセレクタ２１８に出力する。
【００２５】
バッファ２０８〜２１２は、ＤＬＬＰ（データリンク層パケット：Data Link Layer Packet）のバッファである。図４（Ｂ）は、ＤＬＬＰのフォーマット例を示す図である。ＤＬＬＰは、１バイトの開始フレーム４１１、４バイトの制御コード４１２、２バイト（１６ビット）のＣＲＣ（巡回冗長検査：Cyclic Redundancy Check）コード４１３及び１バイトの終了フレーム４１４を有し、リンク層１１３の情報伝達用のパケットである。開始フレーム４１１は、8B10BエンコードのK28.2（SDP）で表される。制御コード４１２は、Ａｃｋ／Ｎａｃ、ＦＣ（Flow Control）のＰｏｓｔｅｄ、ＦＣのＮｏｎ−Ｐｏｓｔｅｄ、ＦＣのＣｏｍｐｌｅｔｉｏｎ、及びＰＭ（Power Management）のいずれかのコードで表される。
【００２６】
ＤＬＬＰのＡｃｋ／Ｎａｃは、バッファ２０８によりバッファリングされる。ＤＬＬＰのＦＣのＰｏｓｔｅｄは、バッファ２０９によりバッファリングされる。ＤＬＬＰのＦＣのＮｏｎ−Ｐｏｓｔｅｄは、バッファ２１０によりバッファリングされる。ＤＬＬＰのＦＣのＣｏｍｐｌｅｔｉｏｎは、バッファ２１１によりバッファリングされる。ＤＬＬＰのＰＭは、バッファ２１２によりバッファリングされる。
【００２７】
バッファ２０８は、セレクタ２０３からＤＬＬＰのＡｃｋ／Ｎａｃを入力してバッファリングする。ＤＬＬＰのＡｃｋ／Ｎａｃは、受信した後述のＴＬＰ（図４（Ｄ））が正しいことを示すときにはＡｃｋ、又は受信したＴＬＰにエラーがあったことを示すときにはＮａｋで表される。制御コード４１２内にて、受領できたところまでのＴＬＰのシーケンス番号が示される。ＴＬＰの通信が進行することにより、処理されているＴＬＰのシーケンス番号も更新されていくため、最新のシーケンス番号が把握できていれば、古い情報は必要なくなる。したがって、バッファ２０８は、セレクタ２０３からＤＬＬＰのＡｃｋ／Ｎａｃを入力すると、その入力したＤＬＬＰのＡｃｋ／Ｎａｃを繰り返さずにセレクタ２１８に出力する。
【００２８】
バッファ２０９〜２１１は、セレクタ２０３からＤＬＬＰのＦＣを入力してバッファリングする。ＤＬＬＰのＦＣは、後述のＴＬＰについて受信用バッファのオーバーフローを抑制するためのパケットである。
【００２９】
バッファ２０９は、セレクタ２０３からＤＬＬＰのＦＣのＰｏｓｔｅｄを入力してバッファリングする。ＤＬＬＰのＦＣのＰｏｓｔｅｄは、応答なしで完了するパケットである。
【００３０】
バッファ２１０は、セレクタ２０３からＤＬＬＰのＦＣのＮｏｎ−Ｐｏｓｔｅｄを入力してバッファリングする。ＤＬＬＰのＦＣのＮｏｎ−Ｐｏｓｔｅｄは、応答を待って完了するパケットである。
【００３１】
バッファ２１１は、セレクタ２０３からＤＬＬＰのＦＣのＣｏｍｐｌｅｔｉｏｎを入力してバッファリングする。ＤＬＬＰのＦＣのＣｏｍｐｌｅｔｉｏｎは、応答（完了通知）のパケットである。
【００３２】
ＤＬＬＰのＦＣは、制御コード４１２内にてＴＬＰの「受信総量＋受信バッファの空き量」を通知する。これにより、ＴＬＰの送信側は自己が送信した総量と、上記の通知された値との差分により、受信側のバッファの空き量を判断することが可能となる。これを使って、受信バッファのオーバーフローを防止するための制御が行われる。ＴＬＰの通信が進行することにより値が更新されていくが、最新のＦＣにより最新の受信バッファの情報が得られるため古い情報は必要なくなる。したがって、バッファ２０９〜２１１は、それぞれ、セレクタ２０３からＤＬＬＰのＦＣを入力すると、その入力したＤＬＬＰのＦＣを繰り返さずにセレクタ２１８に出力する。
【００３３】
バッファ２１２は、セレクタ２０３からＤＬＬＰのＰＭを入力してバッファリングする。ＤＬＬＰのＰＭは、電力の状態を制御するためのパケットであり、連続転送する必要はない。したがって、バッファ２１２は、セレクタ２０３からＤＬＬＰのＰＭを入力すると、その入力したＤＬＬＰのＰＭを繰り返さずにセレクタ２１８に出力する。
【００３４】
バッファ２１３は、ＴＳ（トレーニングシーケンス：Training Sequence）のバッファである。図４（Ｃ）は、ＴＳのフォーマット例を示す図である。ＴＳは、１バイトの開始フレーム４２１及び１５バイトの制御コード４２２を有し、物理層１１１の基本情報の交換や制御に必要なパケットである。開始フレーム４２１は、8B10BエンコードのK28.5（COM）で表される。制御コード４２２は、ＫコードのK23.7（PAD）又はＤコードで表される。ＴＳは、図４（Ａ）のＰＬＰに対して、開始フレーム４２１が同じだが、制御コード４２２が異なる。
【００３５】
バッファ２１３は、セレクタ２０３からＴＳを入力してバッファリングする。ＴＳは、PCI Express規格の２個のデバイス間が正しく通信できることの確認や調整を行い、物理層１１１の制御（レート変更やリセットなど）をコントロールするためのパケットであり、連続転送が必要なパケットである。連続転送の期間は、送信データｔｘの入力状態が連続していると判断できる期間となる。したがって、バッファ２１３は、図５（Ａ）に示すように、セレクタ２０３からＴＳを入力すると、その入力した同じＴＳ２１６を繰り返してセレクタ２１８に出力する。
【００３６】
図５（Ａ）に示すように、バッファ２１３の入力データは、低周波数の第２のクロック信号の周期で入力される。バッファ２１３は、その入力データが入力される度にバッファリングデータを更新する。バッファ２１３の出力データは、バッファ２１３内のデータが更新されると、高周波数の第１のクロック信号に同期して、バッファ２１３内の同じデータを所定回数（例えば４回）繰り返して出力される。
【００３７】
バッファ２１４は、ＴＬＰ（トランザクション層パケット：Transaction Layer Packet）のバッファである。図４（Ｄ）は、ＴＬＰのフォーマット例を示す図である。ＴＬＰは、１バイトの開始フレーム４３１、２バイトのシーケンス番号４３２、１２又は１６バイトのヘッダ部４３３、０〜４０９６バイトのデータ部４３４、０又は４バイトのＥＣＲＣコード４３５、４バイトのＬＣＲＣコード４３６及び１バイトの終了フレーム４３７を有し、上位層であるトランザクション層でデータを送受信するためのパケットである。開始フレーム４３１は、8B10BエンコードのK27.7（STP）である。ヘッダ部４３３は、データの種別として、メモリリード／ライト、入出力回路リード／ライト、コンフィグレーションリード／ライト、完了通知（Ｃｏｍｐｌｅｔｉｏｎ）、又はメッセージを表す。
【００３８】
データの種類に応じて、上記のＦＣによる転送制御が異なり、Ｐｏｓｔｅｄ、Ｎｏｎ−Ｐｏｓｔｅｄ、Ｃｏｍｐｌｅｔｉｏｎに分類される。Ｐｏｓｔｅｄは、メモリライト及びメッセージである。Ｎｏｎ−Ｐｏｓｔｅｄは、メモリリード、入出力回路リード／ライト、コンフィグレーションリード／ライトである。Ｃｏｍｐｌｅｔｉｏｎは、完了通知である。
【００３９】
シーケンス番号４３２は、ＴＬＰの送信毎に１増加されるフィールドであり、ＤＬＬＰのＡｃｋ／Ｎａｋにて受領できたＴＬＰのシーケンス番号と対応付けることにより、転送が正しく行われたことを確認することができる。
【００４０】
ＥＣＲＣコード４３５は、データ部４３４のＣＲＣコードである。ＬＣＲＣコード４３６は、シーケンス番号４３２からＥＣＲＣコード４３５までのＣＲＣコードである。
【００４１】
図２のバッファ２１４は、セレクタ２０３からＴＬＰを入力すると、その入力したＴＬＰを繰り返さずにセレクタ２１８に出力する。
【００４２】
上記のように、セレクタ２０３は、第１のクロックドメイン変換部２０２から入力した送信データがロジカルアイドルデータであるときには、そのロジカルアイドルデータを第１のバッファ２０４に書き込まずに廃棄する。ロジカルアイドルデータは、０値データであり、意味がある通信を行っていない期間に送受信されるデータ（無効データ）である。第１のクロックドメイン１２１は、セレクタ２０３の入力データがロジカルアイドルデータであるときには、そのロジカルアイドルデータを第１のバッファ２０４にバッファリングせず、第１のバッファ２０４の出力データがないときにはロジカルアイドルデータ（０値データ）２１７をセレクタ２１８に出力する。
【００４３】
セレクタ２１８は、プロトコルの優先順位に従い、バッファ２０５〜２１４からの出力データ及びロジカルアイドルデータ２１７を、ＰＬＰ＞ＤＬＬＰ＞ＴＳ＞ＴＬＰ＞ロジカルアイドルデータ（０値データ）の優先順位で選択し、第１のスクランブラ２１９に出力する。すなわち、セレクタ２１８は、バッファ２０５〜２１４のデータ、ロジカルアイドルデータ２１７の順の優先順位で選択する。バッファ２０５のデータの優先順位が最も高く、ロジカルアイドルデータ２１７の優先順位が最も低い。バッファ２０５〜２１４間のデータ切り替えは、ＰＬＰ／ＴＳ／ＤＬＬＰ／ＴＬＰ単位の切れ目で行う。例えば、ＴＬＰの出力期間中にＰＬＰのバッファ２０５〜２０７にデータが格納されたとしても、出力中の１つのＴＬＰが出力を完了するまで新たなＰＬＰは出力しない。
【００４４】
第１のスクランブラ２１９は、図３の構成を有し、上記と同様に、セレクタ２１８からのデータを暗号化して図１の物理層１１１に送信データｔｘを出力する。
【００４５】
次に、受信データｒｘについて説明する。第１のデスクランブラ２２０は、第２のスクランブラ２０１と同様に、図１の物理層１１１からの受信データｒｘを復号してセレクタ２２１に出力する。セレクタ２２１は、上記のセレクタ２０３と同様に、入力データ（パケット）の種類に応じて、入力データを第２のバッファ２２２内の１０個のバッファ２２３〜２３２のいずれかに書き込む。ただし、セレクタ２２１は、入力データがロジカルアイドルデータ（０値データ）であるときには、そのロジカルアイドルデータを第２のバッファ２２２に書き込まずに廃棄する。
【００４６】
第２のバッファ２２２は、第１のバッファ２０４と同様に、受信データ（パケット）の種類毎のバッファ２２３〜２３２を有し、セレクタ２２１から入力したデータをバッファリングしてセレクタ２３４に出力する。受信動作では、高周波数の第１のクロック信号から低周波数の第２のクロック信号へデータを受け渡す。そのため、第２のバッファ２２２は、出力データが入力データよりも少ないデータ量となる。第２のバッファ２２２は、入力データを全てバッファリングすると、データが溢れる状況となるため、次のような制御を行う。
【００４７】
バッファ２２３は、バッファ２０５と同様に、セレクタ２２１からＰＬＰのＦＴＳを入力してバッファリングする。バッファ２２３は、図５（Ｂ）に示すように、セレクタ２２１からＰＬＰのＦＴＳ（第２のデータ）を入力すると、そのＰＬＰのＦＴＳを間引いてセレクタ２３４に出力する。
【００４８】
図５（Ｂ）は、ＰＬＰのＦＴＳのバッファ２２３の入力データ及び出力データの例を示す図である。バッファ２２３の入力データは、高周波数の第１のクロック信号の周期で入力される。バッファ２２３は、その入力データが入力される度にバッファリングデータを更新（上書き）する。バッファ２０５の出力データは、低周波数の第２のクロック信号の周期でバッファ２０５のデータが出力される。例えば、「１」、「２」、「３」、「５」、「６」、「７」のデータが間引かれ、「０」、「４」、「８」のデータが出力される。これにより、バッファ２２３は、入力されたＰＬＰのＦＴＳを間引いて出力することができる。
【００４９】
バッファ２２４は、バッファ２０６と同様に、セレクタ２２１からＰＬＰのＳＫＰを入力してバッファリングする。バッファ２２４は、図５（Ｂ）と同様に、セレクタ２２１からＰＬＰのＳＫＰを入力すると、そのＰＬＰのＳＫＰを間引いてセレクタ２３４に出力する。
【００５０】
バッファ２２５は、バッファ２０７と同様に、セレクタ２２１からＰＬＰのＩＤＬを入力してバッファリングする。バッファ２２５は、図５（Ｂ）と同様に、セレクタ２２１からＰＬＰのＩＤＬを入力すると、そのＰＬＰのＩＤＬを間引いてセレクタ２３４に出力する。
【００５１】
バッファ２２６は、バッファ２０８と同様に、セレクタ２２１からＤＬＬＰのＡｃｋ／Ｎａｋを入力してバッファリングする。バッファ２２６は、図５（Ｂ）と同様に、セレクタ２２１からＤＬＬＰのＡｃｋ／Ｎａｋを入力すると、そのＤＬＬＰのＡｃｋ／Ｎａｋを間引いてセレクタ２３４に出力する。
【００５２】
バッファ２２７は、バッファ２０９と同様に、セレクタ２２１からＤＬＬＰのＦＣのＰｏｓｔｅｄを入力してバッファリングする。バッファ２２７は、図５（Ｂ）と同様に、セレクタ２２１からＤＬＬＰのＦＣのＰｏｓｔｅｄを入力すると、そのＤＬＬＰのＦＣのＰｏｓｔｅｄを間引いてセレクタ２３４に出力する。
【００５３】
バッファ２２８は、バッファ２１０と同様に、セレクタ２２１からＤＬＬＰのＦＣのＮｏｎ−Ｐｏｓｔｅｄを入力してバッファリングする。バッファ２２８は、図５（Ｂ）と同様に、セレクタ２２１からＤＬＬＰのＦＣのＮｏｎ−Ｐｏｓｔｅｄを入力すると、そのＤＬＬＰのＦＣのＮｏｎ−Ｐｏｓｔｅｄを間引いてセレクタ２３４に出力する。
【００５４】
バッファ２２９は、バッファ２１１と同様に、セレクタ２２１からＤＬＬＰのＦＣのＣｏｍｐｌｅｔｉｏｎを入力してバッファリングする。バッファ２２９は、図５（Ｂ）と同様に、セレクタ２２１からＤＬＬＰのＦＣのＣｏｍｐｌｅｔｉｏｎを入力すると、そのＤＬＬＰのＦＣのＣｏｍｐｌｅｔｉｏｎを間引いてセレクタ２３４に出力する。
【００５５】
バッファ２３０は、バッファ２１２と同様に、セレクタ２２１からＤＬＬＰのＰＭを入力してバッファリングする。バッファ２３０は、図５（Ｂ）と同様に、セレクタ２２１からＤＬＬＰのＰＭを入力すると、そのＤＬＬＰのＰＭを間引いてセレクタ２３４に出力する。
【００５６】
バッファ２３１は、バッファ２１３と同様に、セレクタ２２１からＴＳを入力してバッファリングする。バッファ２３１は、図５（Ｂ）と同様に、セレクタ２２１からＴＳを入力すると、そのＴＳを間引いてセレクタ２３４に出力する。
【００５７】
バッファ２３２は、バッファ２１４と同様に、セレクタ２２１からＴＬＰを入力してバッファリングする。ＴＬＰのバッファ２３２は、受信側のリンク層１１３（図１）にある受信バッファ以上のバッファサイズを用意すれば、オーバーフローしない。したがって、バッファ２３２は、セレクタ２２１からＴＬＰを入力すると、そのＴＬＰを間引かずにセレクタ２３４に出力する。
【００５８】
上記のように、セレクタ２２１は、第１のデスクランブラ２２０から入力した受信データｒｘがロジカルアイドルデータであるときには、そのロジカルアイドルデータを第２のバッファ２２２に書き込まずに廃棄する。ロジカルアイドルデータは、０値データであり、意味がある通信を行っていない期間に送受信されるデータ（無効データ）である。第１のクロックドメイン１２１は、セレクタ２２１の入力データがロジカルアイドルデータであるときには、ロジカルアイドルデータを第２のバッファ２２２にバッファリングせず、第２のバッファ２２２の出力データがないときにはロジカルアイドルデータ（０値データ）２３３をセレクタ２３４に出力する。
【００５９】
セレクタ２３４は、プロトコルの優先順位に従い、バッファ２２３〜２３２からの出力データ及びロジカルアイドルデータ２３３を、ＰＬＰ＞ＤＬＬＰ＞ＴＳ＞ＴＬＰ＞ロジカルアイドルデータ（０値データ）の優先順位で選択し、第２のクロックドメイン変換部２３５に出力する。すなわち、セレクタ２３４は、バッファ２２３〜２３２のデータ、ロジカルアイドルデータ２３３の順の優先順位で選択する。バッファ２２３のデータの優先順位が最も高く、ロジカルアイドルデータ２３３の優先順位が最も低い。バッファ２２３〜２３２間のデータ切り替えは、ＰＬＰ／ＴＳ／ＤＬＬＰ／ＴＬＰ単位の切れ目で行う。例えば、ＴＬＰの出力期間中にＰＬＰのバッファ２２３〜２２５にデータが格納されたとしても、出力中の１つのＴＬＰが出力を完了するまで新たなＰＬＰは出力しない。
【００６０】
第２のクロックドメイン変換部２３５は、第１のクロックドメイン変換部２０２と同様に、セレクタ２３４から入力したデータを第１のクロック信号に同期した状態から第２のクロック信号に同期した状態に変換して第２のスクランブラ２３６に出力する。
【００６１】
第２のスクランブラ２３６は、図３の構成を有し、上記と同様に、第２のクロックドメイン変換部２３５からの受信データを暗号化して受信データｒｘを図１のリンク層１１３に出力する。
【００６２】
以上のように、ＰＬＰのＦＴＳの送信バッファ２０５及びＴＳの送信バッファ２１３については、データの連続性が必要であるが、送信バッファ２０５及び２１３への入力が遅いため、連続で入力する状況でもバッファ２０５及び２１３が空になる状態が発生する。送信する情報が無いことで、データの連続性が損なわれるため、バッファ２０５及び２１３が空になった状態では、次の入力データが格納されるまでの一定期間、同じデータを繰り返し出力することで連続性を維持する。
【００６３】
また、バッファ２０５〜２１４に格納されているデータが無く、繰り返し出力も行っていない場合は、ロジカルアイドルデータ２１７を出力することにより、データが途切れることなく、データ転送することが可能となる。
【００６４】
ＰＬＰのＦＴＳのバッファ２０５のパケットは、すべて内容が同じデータであり、シリアルバスのビットロック及びシンボルロックのために連続性と転送期間が必要なパケットである。また、ＴＳのバッファ２１３のパケットは、通信デバイス間でハンドシェークを行いながら同じデータを繰り返し転送する性質があり、対向側のデータが変化するまでは同じデータを連続で転送し続ける。以上から、連続転送が必要なパケットについては、同じデータ送信しているため、バッファ２０５及び２１３内において同じデータを繰り返し転送しても送信動作として影響はない。
【００６５】
なお、PCI Express規格以外の高速入出力インタフェース回路でも同様に、データ（パケット）の種別毎にバッファリングし、連続転送が必要なものについては繰り返し転送し、無データ時にはロジカルアイドルデータ２１７を転送することにより、送信動作を確立させることができる。
【００６６】
次に、第２のバッファ２２２について説明する。ＰＬＰ（ＦＴＳ／ＳＫＰ／ＩＤＬ）の受信バッファ２２３〜２２５のデータは、バッファ２２３〜２２５の内容を間引いても問題はない。ＰＬＰのＦＴＳについては、データの連続性が必要であるが、受信動作については、出力するよりも入力が速いため、繰り返すことなく、そのままの制御で連続性を保つことができる。
【００６７】
ＴＳの受信バッファ２３１は、通信デバイス間でハンドシェークを行いながら、同じデータを繰り返し転送する性質があり、対向側のデータが変化するまでは同じデータを連続で転送し続ける。バッファ２３１の内容を上書きして出力しても、最終的にハンドシェークされたことが判断できれば良いので、間引いても影響はない。連続性については、受信動作では、出力するよりも入力が速いため、そのままの制御で連続性を保つことができる。
【００６８】
ＤＬＬＰのＡｃｋ／Ｎａｋの受信バッファ２２６のパケットは、シーケンス番号の管理により、ＴＬＰの受領状況を判断するためにある。このシーケンス番号は、ＴＬＰの送信毎に１増加する番号であり、この番号を利用して、どのＴＬＰまでが受領できたのかを判断することに利用される。最新のＤＬＬＰのＡｃｋ／Ｎａｋを参照することにより、今現在のＴＬＰの受領状況が判断できるので、古い情報を上書きしたとしても、受信動作として影響はない。
【００６９】
ＤＬＬＰのＦＣの受信バッファ２２７〜２２９についても同様で、更新された「受信総量＋受信バッファの空き量」を通知するので、最新の受信バッファの空き量が判断できれば良く、古い情報を上書きしたとしても、受信動作として影響はない。
【００７０】
ＤＬＬＰのＰＭの受信バッファ２３０のパケットについては、連続性もなく、転送間隔がバッファの制御時間に対して十分に長いため、バッファに入力できたことを通知できれば良い。
【００７１】
ＴＬＰの受信バッファ２３２は、全ての入力データをバッファリングし、データを出力する。ＴＬＰの受信バッファ２３２は、リンク層１１３の受信バッファがオーバーフローしない原理を利用し、リンク層１１３と同じ量の受信バッファ容量を持たせることで、オーバーフローを回避する。ＴＬＰの受信バッファがオーバーフローしない制御は、ＤＬＬＰのＦＣを利用して行われ、受信バッファの空き容量を送信側で判断し、受信バッファが溢れない範囲で新たなＴＬＰを送信する。ブリッジ回路１１２内でＴＬＰをバッファリングすることにより、遅れて受信バッファへ転送されたとしても、ＤＬＬＰのＦＣの値が更新されず、送信側にとっては受信バッファに空きがない状況として判断できるため、必要以上のＴＬＰ送信が発生することは無く、受信動作としても影響はない。
【００７２】
また、各バッファ２２３〜２３２に格納されているデータが無い場合は、ロジカルアイドルデータ（０値データ）２３３を出力することにより、データが途切れることなく、データ転送することが可能となる。
【００７３】
なお、PCI Express規格以外の高速入出力インタフェース回路でも同様に、データ（パケット）の種別毎にバッファリングし、最新の情報のみが必要なものについてはバッファへの上書きし、無データ時にはロジカルアイドルデータ２３３を転送することにより、受信動作を確立させることができる。
【００７４】
本実施形態によれば、クロックドメイン変換部２０２および２３５は、第１のクロック信号に同期する第１のクロックドメイン１２１と第２のクロック信号に同期する第２のクロックドメイン１２２との間でクロックドメイン変換をすることができる。また、リンク層１１３の論理を変更することなく（バス幅を変更することなく）、リンク層１１３をＦＰＧＡ１０２へ実装（低速クロックの動作）することが可能になる。また、リンク層１１３をシリコン基板に実装した場合でも、リンク層１１３の動作クロックを低速にすることができ、低消費電力化が可能になる。
【００７５】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００７６】
１０１  シリコン
１０２  ＦＰＧＡ
１１１  物理層
１１２  ブリッジ回路
１１３  リンク層
１２１  高速クロックドメイン
１２２  低速クロックドメイン
２０１  第２のデスクランブラ
２０２  第１のクロックドメイン変換部
２０３，２１８，２２１，２３４  セレクタ
２０４  第１のバッファ
２１９  第１のスクランブラ
２２０  第１のデスクランブラ
２２２  第２のバッファ
２３５  第２のクロックドメイン変換部
２３６  第２のスクランブラ
【図１】
2014010550.tif 000003
【図２】
2014010550.tif 000004
【図３】
2014010550.tif 000005
【図４】
2014010550.tif 000006
【図５】
2014010550.tif 000007