(57)【要約】【課題】未知の入力データに対しても、複数のレーン間で発生するスキューを取り除くことが可能なデスキュー回路及びデスキュー方法を提供する。【解決手段】ｎ＋１周期目のパターンに遅延量を付加する遅延量付加部１３と、ｎ周期目とｎ＋１周期目のパターンから得られたＭビット幅のパラレルデータＤＭ，ＤＭ'に基づいて、各レーンの見掛けのスキュー量とその変化量を検出するスキュー量仮検出部１８と、変化量が１ビットのレーンを特定することにより、ｎ周期目のパターンから得られたＮビット幅のパラレルデータＤＮを特定するパラレルデータ特定部１９と、ｎ周期目のパターンから得られた各レーンの見掛けのスキュー量から、特定されたパラレルデータＤＮの各レーンにおける"０"と"１"の変化点のレーン間での相対的なビットずれ量を減算するスキュー量補正部２０と、を備える。【選択図】図１
2018152820.tif 000002
【特許請求の範囲】
【請求項１】
シリアルデータである入力データのビットレートに応じたクロックを生成するクロック・データ・リカバリ回路（１１）と、
前記クロックの整数倍の周期の周期パターンを発生させるパターン発生器（１２）と、
前記周期パターン又は前記入力データを前記クロックのタイミングでＮビット幅（Ｎは２以上の整数）のパラレルデータに直並列変換し、前記Ｎビット幅のパラレルデータをＮ個のレーンに順次出力する直並列変換部（１５）と、
前記Ｎ個のレーンにそれぞれ設けられ、前記Ｎビット幅のパラレルデータを受信して、前記レーンごとにＭビット幅（Ｍは２以上の整数）のパラレルデータに順次変換するＮ個のＳｅｒＤｅｓ（１６）と、
前記パターン発生器と前記直並列変換部の間に設けられ、前記パターン発生器からｎ周期分（ｎは自然数）の前記周期パターンが入力されたタイミングで、前記パターン発生器から入力されるｎ＋１周期目の前記周期パターンに前記クロックの１クロック分の遅延量を付加する遅延量付加部（１３）と、
ｎ周期目の前記周期パターンから得られた前記Ｍビット幅のパラレルデータと、ｎ＋１周期目の前記周期パターンから得られた前記Ｍビット幅のパラレルデータとに基づいて、各前記レーンの見掛けのスキュー量とその変化量を検出するスキュー量仮検出部（１８）と、
前記Ｎ個のレーンのうち前記変化量が１ビットである１つのレーンを特定し、前記特定したレーンに基づいて、ｎ周期目の前記周期パターンから得られた前記Ｎビット幅のパラレルデータを特定するパラレルデータ特定部（１９）と、
ｎ周期目の前記周期パターンから得られた各前記レーンの前記見掛けのスキュー量から、前記パラレルデータ特定部により特定された前記Ｎビット幅のパラレルデータの各前記レーンにおける"０"と"１"の変化点の前記レーン間での相対的なビットずれ量を減算した値を、補正スキュー量として算出するスキュー量補正部（２０）と、
前記補正スキュー量に応じて、前記入力データのＭビット幅のパラレルデータを前記レーンごとにビットシフトして、前記レーン間のスキューを除去するスキュー除去部（２２）と、を備えることを特徴とするデスキュー回路。
【請求項２】
前記スキュー量仮検出部は、
前記周期パターンから得られた前記Ｍビット幅のパラレルデータにおける立ち上がりエッジを検出するエッジ検出部（２５）と、
前記立ち上がりエッジのビット位置に基づいて、各前記レーンの前記見掛けのスキュー量を推定するスキュー量仮推定部（２６）と、を含むことを特徴とする請求項１に記載のデスキュー回路。
【請求項３】
前記入力データと前記遅延量付加部から出力された前記周期パターンとのいずれかを前記直並列変換部に入力させるセレクタ（１４）を更に備えることを特徴とする請求項１又は請求項２に記載のデスキュー回路。
【請求項４】
シリアルデータである入力データのビットレートに応じたクロックを生成するステップ（Ｓ１）と、
前記クロックの整数倍の周期の周期パターンを発生させるステップ（Ｓ２）と、
前記周期パターン又は前記入力データを前記クロックのタイミングでＮビット幅（Ｎは２以上の整数）のパラレルデータに直並列変換し、前記Ｎビット幅のパラレルデータをＮ個のレーンに順次出力する直並列変換ステップ（Ｓ５，Ｓ９）と、
前記Ｎ個のレーンにそれぞれ設けられたＮ個のＳｅｒＤｅｓにより、前記Ｎビット幅のパラレルデータを受信して、前記レーンごとにＭビット幅のパラレルデータに順次変換するステップ（Ｓ６，Ｓ１０）と、
ｎ周期分（ｎは自然数）の前記周期パターンが入力されたタイミングで、ｎ＋１周期目の前記周期パターンに前記クロックの１クロック分の遅延量を付加する遅延量付加ステップ（Ｓ２２）と、
ｎ周期目の前記周期パターンから得られた前記Ｍビット幅のパラレルデータと、ｎ＋１周期目の前記周期パターンから得られた前記Ｍビット幅のパラレルデータとに基づいて、各前記レーンの見掛けのスキュー量とその変化量を検出するスキュー量仮検出ステップ（Ｓ２４）と、
前記Ｎ個のレーンのうち前記変化量が１ビットである１つのレーンを特定し、前記特定したレーンに基づいて、ｎ周期目の前記周期パターンから得られた前記Ｎビット幅のパラレルデータを特定するパラレルデータ特定ステップ（Ｓ２５）と、
ｎ周期目の前記周期パターンから得られた各前記レーンの前記見掛けのスキュー量から、前記パラレルデータ特定ステップで特定された前記Ｎビット幅のパラレルデータの各前記レーンにおける"０"と"１"の変化点の前記レーン間での相対的なビットずれ量を減算した値を、補正スキュー量として算出するステップ（Ｓ２６）と、
前記補正スキュー量に応じて、前記入力データのＭビット幅のパラレルデータを前記レーンごとにビットシフトして、前記レーン間のスキューを除去するステップ（Ｓ１１）と、を含むことを特徴とするデスキュー方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デスキュー回路及びデスキュー方法に関し、特に、複数のレーン間に生じるスキューを除去するデスキュー回路及びデスキュー方法に関する。
【背景技術】
【０００２】
近年、１００Ｇイーサネット（登録商標）や４００Ｇイーサネット（登録商標）の規格に対応した高速な通信システムの導入や開発が活発に進められている。一般に、高速な通信システムに採用される送受信機や計測機器においては、例えば高速シリアルデータを低速パラレルデータに変換して、複数のレーンで信号処理を行うことで、要求される処理速度を実現することが行われている。
【０００３】
複数のレーンを用いてデータを送受信する際には、レーン間に生じるスキューを除去する必要がある。例えば、１００Ｇイーサネット（登録商標）では、各レーンを伝送される信号データの中にアライメントマーカと呼ばれるスキュー調整用のデータが送信側で同じタイミングで挿入されており、受信側ではこれらのアライメントマーカの検出時間の差に基づいてスキューの除去が行われる。
【０００４】
また、複数のレーンを用いた処理を行う系として、制御シンボル及び制御データなどの冗長制御情報を差動レーンのそれぞれのチャネルによって供給し、冗長制御情報に基づいて複数のレーンの間でデスキューを行う方法が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第５０１０７３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示されたような従来の方法では、複数レーンを使用した信号処理を行う系であって、冗長制御情報などのスキューを除去するためのデータを用いない系においては、レーン間のスキューを取り除けないという問題があった。
【０００７】
本発明は、このような従来の課題を解決するためになされたものであって、スキューを除去するためのデータが挿入されていない未知の入力データに対しても、複数のレーン間で発生するスキューを取り除くことが可能なデスキュー回路及びデスキュー方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明に係るデスキュー回路は、シリアルデータである入力データのビットレートに応じたクロックを生成するクロック・データ・リカバリ回路と、前記クロックの整数倍の周期の周期パターンを発生させるパターン発生器と、前記周期パターン又は前記入力データを前記クロックのタイミングでＮビット幅（Ｎは２以上の整数）のパラレルデータに直並列変換し、前記Ｎビット幅のパラレルデータをＮ個のレーンに順次出力する直並列変換部と、前記Ｎ個のレーンにそれぞれ設けられ、前記Ｎビット幅のパラレルデータを受信して、前記レーンごとにＭビット幅（Ｍは２以上の整数）のパラレルデータに順次変換するＮ個のＳｅｒＤｅｓと、前記パターン発生器と前記直並列変換部の間に設けられ、前記パターン発生器からｎ周期分（ｎは自然数）の前記周期パターンが入力されたタイミングで、前記パターン発生器から入力されるｎ＋１周期目の前記周期パターンに前記クロックの１クロック分の遅延量を付加する遅延量付加部と、ｎ周期目の前記周期パターンから得られた前記Ｍビット幅のパラレルデータと、ｎ＋１周期目の前記周期パターンから得られた前記Ｍビット幅のパラレルデータとに基づいて、各前記レーンの見掛けのスキュー量とその変化量を検出するスキュー量仮検出部と、前記Ｎ個のレーンのうち前記変化量が１ビットである１つのレーンを特定し、前記特定したレーンに基づいて、ｎ周期目の前記周期パターンから得られた前記Ｎビット幅のパラレルデータを特定するパラレルデータ特定部と、ｎ周期目の前記周期パターンから得られた各前記レーンの前記見掛けのスキュー量から、前記パラレルデータ特定部により特定された前記Ｎビット幅のパラレルデータの各前記レーンにおける"０"と"１"の変化点の前記レーン間での相対的なビットずれ量を減算した値を、補正スキュー量として算出するスキュー量補正部と、前記補正スキュー量に応じて、前記入力データのＭビット幅のパラレルデータを前記レーンごとにビットシフトして、前記レーン間のスキューを除去するスキュー除去部と、を備える構成である。
【０００９】
この構成により、本発明に係るデスキュー回路は、スキューを除去するためのデータが挿入されていない未知の入力データに対しても、複数のレーンに設けられたＮ個のＳｅｒＤｅｓで発生するスキューを取り除くことができる。つまり、本発明に係るデスキュー回路は、通信プロトコルによらずにハード的にレーン間のスキューを除去できるため、複数のレーンでデータを処理するあらゆる装置に適用できる。例えば、本発明に係るデスキュー回路により、高い時間精度でパケットの送受信を行うことなどが可能になる。
【００１０】
また、本発明に係るデスキュー回路においては、前記スキュー量仮検出部は、前記周期パターンから得られた前記Ｍビット幅のパラレルデータにおける立ち上がりエッジを検出するエッジ検出部と、前記立ち上がりエッジのビット位置に基づいて、各前記レーンの前記見掛けのスキュー量を推定するスキュー量仮推定部と、を含む構成であってもよい。
【００１１】
この構成により、本発明に係るデスキュー回路は、遅延量付加部により周期パターンに遅延量が付加された前後で各ＳｅｒＤｅｓにより変換されたＭビット幅のパラレルデータに基づいて、各レーンの見掛けのスキュー量を検出することができる。
【００１２】
また、本発明に係るデスキュー回路は、前記入力データと前記遅延量付加部から出力された前記周期パターンとのいずれかを前記直並列変換部に入力させるセレクタを更に備える構成であってもよい。
【００１３】
この構成により、本発明に係るデスキュー回路は、セレクタを切り替えることにより、各レーンのスキュー量を算出するためのスキュー量算出モードと、入力データが入力された状態で各レーンのスキューを取り除くためのスキュー除去モードとを切り替えることができる。
【００１４】
また、本発明に係るデスキュー方法は、シリアルデータである入力データのビットレートに応じたクロックを生成するステップと、前記クロックの整数倍の周期の周期パターンを発生させるステップと、前記周期パターン又は前記入力データを前記クロックのタイミングでＮビット幅（Ｎは２以上の整数）のパラレルデータに直並列変換し、前記Ｎビット幅のパラレルデータをＮ個のレーンに順次出力する直並列変換ステップと、前記Ｎ個のレーンにそれぞれ設けられたＮ個のＳｅｒＤｅｓにより、前記Ｎビット幅のパラレルデータを受信して、前記レーンごとにＭビット幅のパラレルデータに順次変換するステップと、ｎ周期分（ｎは自然数）の前記周期パターンが入力されたタイミングで、ｎ＋１周期目の前記周期パターンに前記クロックの１クロック分の遅延量を付加する遅延量付加ステップと、ｎ周期目の前記周期パターンから得られた前記Ｍビット幅のパラレルデータと、ｎ＋１周期目の前記周期パターンから得られた前記Ｍビット幅のパラレルデータとに基づいて、各前記レーンの見掛けのスキュー量とその変化量を検出するスキュー量仮検出ステップと、前記Ｎ個のレーンのうち前記変化量が１ビットである１つのレーンを特定し、前記特定したレーンに基づいて、ｎ周期目の前記周期パターンから得られた前記Ｎビット幅のパラレルデータを特定するパラレルデータ特定ステップと、ｎ周期目の前記周期パターンから得られた各前記レーンの前記見掛けのスキュー量から、前記パラレルデータ特定ステップで特定された前記Ｎビット幅のパラレルデータの各前記レーンにおける"０"と"１"の変化点の前記レーン間での相対的なビットずれ量を減算した値を、補正スキュー量として算出するステップと、前記補正スキュー量に応じて、前記入力データのＭビット幅のパラレルデータを前記レーンごとにビットシフトして、前記レーン間のスキューを除去するステップと、を含む構成である。
【００１５】
この構成により、本発明に係るデスキュー方法は、スキューを除去するためのデータが挿入されていない未知の入力データに対しても、複数のレーン間で発生するスキューを取り除くことができる。つまり、本発明に係るデスキュー方法は、通信プロトコルによらずにハード的にレーン間のスキューを除去できるため、複数のレーンでデータを処理するあらゆる装置に適用できる。例えば、本発明に係るデスキュー方法により、高い時間精度でパケットの送受信を行うことなどが可能になる。
【発明の効果】
【００１６】
本発明は、スキューを除去するためのデータが挿入されていない未知の入力データに対しても、複数のレーン間で発生するスキューを取り除くことが可能なデスキュー回路及びデスキュー方法を提供するものである。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態に係るデスキュー回路の構成を示すブロック図である。
【図２】本発明の実施形態に係るデスキュー回路が備えるパターン発生器と遅延量付加部によって生成されるスキュー補償パターンの一例を示す図である。
【図３】（ａ），（ｂ）はＤＥＭＵＸから未知のスキュー補償パターンが出力された場合に、各ＳｅｒＤｅｓから出力されるパラレルデータの見掛けのスキュー量を示す説明図（その１）である。
【図４】（ａ），（ｂ）はＤＥＭＵＸから未知のスキュー補償パターンが出力された場合に、各ＳｅｒＤｅｓから出力されるパラレルデータの見掛けのスキュー量を示す説明図（その２）である。
【図５】本発明の実施形態に係るデスキュー回路によるデスキュー方法の処理を説明するためのフローチャートである。
【図６】図５のフローチャートにおけるステップＳ７の処理を詳細に説明するためのフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明に係るデスキュー回路及びデスキュー方法の実施形態について、図面を用いて説明する。本発明は、高速シリアルデータとしての入力データを低速パラレルデータに変換して、Ｎ（Ｎは２以上の整数）個のレーンを用いて信号処理する際に、レーン間に生じるスキューを調整するものである。
【００１９】
図１に示すように、本発明の実施形態に係るデスキュー回路１０は、クロック・データ・リカバリ回路（以下、「ＣＤＲ」と称する）１１と、パターン発生器１２と、遅延量付加部１３と、セレクタ１４と、直並列変換部としてのＤＥＭＵＸ（デマルチプレクサ）１５と、Ｎ個のＳｅｒＤｅｓ１６と、データスイッチ１７と、スキュー量仮検出部１８と、パラレルデータ特定部１９と、スキュー量補正部２０と、記憶部２１と、スキュー除去部２２と、キャプチャ回路２３と、制御部２４と、を備える。
【００２０】
ＣＤＲ１１は、シリアルデータである入力データからクロックを抽出し、入力データのビットレートに応じたクロックＣＬＫを生成するようになっている。
【００２１】
パターン発生器１２は、ＣＤＲ１１により生成されたクロックＣＬＫの整数倍の周期Ｔの周期パターンを発生させるようになっている。パターン発生器１２で発生した周期パターンは、レーン間に生じるスキューを補償するためのスキュー補償パターンとして用いられる。
【００２２】
遅延量付加部１３は、パターン発生器１２とＤＥＭＵＸ１５の間に設けられ、パターン発生器１２からｎ周期分（ｎは自然数）のスキュー補償パターンが入力されたタイミングで、パターン発生器１２から入力されるｎ＋１周期目のスキュー補償パターンにクロックＣＬＫの１クロック分の遅延量を付加するようになっている。すなわち、この遅延量はビットレートに応じて決まる。
【００２３】
セレクタ１４は、入力データと遅延量付加部１３から出力されたスキュー補償パターンとのいずれかをＤＥＭＵＸ１５に入力させるようになっている。
【００２４】
ＤＥＭＵＸ１５は、スキュー補償パターン又は入力データをクロックＣＬＫのタイミングでＮビット幅（Ｎは２以上の整数）のパラレルデータに直並列変換し、Ｎビット幅のパラレルデータをＮ個のレーンに順次出力するようになっている。
【００２５】
Ｎ個のＳｅｒＤｅｓ１６は、Ｎ個のレーンにそれぞれ設けられ、ＤＥＭＵＸ１５により直並列変換されたＮビット幅のパラレルデータを受信して、レーンごとにＭビット幅（Ｍは２以上の整数）のパラレルデータに順次変換するようになっている。各ＳｅｒＤｅｓ１６は、入力されたデータの直並列変換をレーンごとに独立して行うため、レーン間のスキューを発生させる要因となる。また、レーン間のスキュー量は、入力データのビットレート変更や、入力データの入力のオン／オフごとに変動してしまう。このため、従来はあらかじめレーン間のスキュー量を推定することができなかった。
【００２６】
なお、パターン発生器１２で発生するスキュー補償パターンは、クロックＣＬＫのＮ×Ｍ倍の周期Ｔを有していることが望ましい。また、このスキュー補償パターンにおいては、"０"の値が少なくともＮ個以上連続し、かつ、"１"の値も少なくともＮ個以上連続している必要がある。
【００２７】
データスイッチ１７は、Ｎ個のＳｅｒＤｅｓ１６により変換されたＭビット幅のパラレルデータを、スキュー量仮検出部１８とスキュー除去部２２のいずれかに出力するようになっている。本実施形態のデスキュー回路１０は、セレクタ１４とデータスイッチ１７により、各レーンのスキュー量を算出するためのスキュー量算出モードと、入力データが入力された状態で各レーン間のスキューを除去するためのスキュー除去モードとに切り替わるようになっている。
【００２８】
スキュー量算出モードにおいては、セレクタ１４によって遅延量付加部１３から出力されたスキュー補償パターンがＤＥＭＵＸ１５に入力される。また、データスイッチ１７によってＮ個のＳｅｒＤｅｓ１６により変換されたＭビット幅のパラレルデータがスキュー量仮検出部１８に入力される。
【００２９】
一方、スキュー除去モードにおいては、セレクタ１４によって入力データがＤＥＭＵＸ１５に入力される。また、データスイッチ１７によってＮ個のＳｅｒＤｅｓ１６により変換されたＭビット幅のパラレルデータがスキュー除去部２２に入力される。
【００３０】
なお以下では、遅延量付加部１３により遅延量が付加されたｎ＋１周期目のスキュー補償パターンの１周期分前のｎ周期目のスキュー補償パターンから得られたＮビット幅又はＭビット幅のパラレルデータをそれぞれＤＮ，ＤＭとも称する。また、遅延量付加部１３により遅延量が付加されたｎ＋１周期目のスキュー補償パターンから得られたＮビット幅又はＭビット幅のパラレルデータをそれぞれＤＮ'，ＤＭ'とも称する。
【００３１】
スキュー量仮検出部１８は、エッジ検出部２５と、スキュー量仮推定部２６と、変化量算出部２７と、を含み、パラレルデータＤＭとパラレルデータＤＭ'とに基づいて、各レーンの見掛けのスキュー量とその変化量を検出するようになっている。
【００３２】
パラレルデータ特定部１９は、Ｎ個のＳｅｒＤｅｓ１６から出力されたＮビット幅のパラレルデータが、どのような位相のスキュー補償パターンに由来しているのかを判別するためのものである。具体的には、パラレルデータ特定部１９は、Ｎ個のレーンのうちスキュー量仮検出部１８により検出された変化量が１ビットである１つのレーンを特定し、特定したレーンに基づいて、遅延量付加部１３により遅延量が付加されたｎ＋１周期目のスキュー補償パターンの１周期分前のｎ周期目のスキュー補償パターンから得られたＮビット幅のパラレルデータＤＮを特定するようになっている。
【００３３】
あるいは、パラレルデータ特定部１９は、特定したレーンに基づいて、遅延量付加部１３により遅延量が付加されたｎ＋１周期目のスキュー補償パターンから得られたＮビット幅のパラレルデータＤＮ'を特定するものであってもよい。
【００３４】
スキュー量補正部２０は、パラレルデータＤＭから得られた各レーンの見掛けのスキュー量から、パラレルデータ特定部１９により特定されたＮビット幅のパラレルデータＤＮの各レーンにおける"０"と"１"の変化点のレーン間での相対的なビットずれ量を減算した値を、補正スキュー量として算出するようになっている。
【００３５】
あるいは、スキュー量補正部２０は、パラレルデータＤＭ'から得られた各レーンの見掛けのスキュー量から、パラレルデータ特定部１９により特定されたＮビット幅のパラレルデータＤＮ'の各レーンにおける"０"と"１"の変化点のレーン間での相対的なビットずれ量を減算した値を、補正スキュー量として算出するものであってもよい。
【００３６】
記憶部２１は、スキュー量補正部２０により算出された補正スキュー量を各レーンに対応付けて記憶するようになっている。
【００３７】
スキュー除去部２２は、記憶部２１に記憶された補正スキュー量に応じて、入力データのＭビット幅のパラレルデータをレーンごとにビットシフトして、Ｎ個のレーン間のスキューを除去するようになっている。
【００３８】
キャプチャ回路２３は、スキュー除去部２２によりビットシフトされた入力データのＭビット幅のパラレルデータをキャプチャするようになっている。
【００３９】
制御部２４は、例えばＣＰＵ、記憶部２１を構成するＲＯＭ、ＲＡＭ、ＨＤＤなどを含むマイクロコンピュータ又はパーソナルコンピュータ等で構成され、デスキュー回路１０を構成する上記各部の動作を制御するようになっている。
【００４０】
図２に、パターン発生器１２と遅延量付加部１３によって生成されるスキュー補償パターンの一例を示す。図２は、レーン数Ｎが４の場合におけるスキュー補償パターン１〜５の１周期分を示している。スキュー補償パターン２〜５は、スキュー補償パターン１に対してクロックＣＬＫのそれぞれ１〜４クロック分の遅延量が付加されたものとなっている。
【００４１】
例えば、遅延量付加部１３は、パターン発生器１２から１周期分のスキュー補償パターン１が入力されたタイミングで、以降に入力される周期パターンに１クロック分の遅延量を付加することにより、スキュー補償パターン２を生成する。
【００４２】
スキュー補償パターンはＤＥＭＵＸ１５に入力されることにより、図３及び図４においてスキュー補償パターン１〜５として示すように、レーン数Ｎに応じたパラレルデータに変換される。また、例えば図３（ａ）のスキュー補償パターン１からスキュー補償パターン２への変化に示すように、ＤＥＭＵＸ１５を通過したスキュー補償パターンは、遅延量付加部１３による１クロック分の遅延量の付加により、Ｎ個のレーンのうちの１つのレーンにおいて"０"から"１"への変化点が移動することになる。
【００４３】
以下、スキュー量仮検出部１８、パラレルデータ特定部１９、スキュー量補正部２０、及びスキュー除去部２２の処理について説明する。
【００４４】
スキュー量仮検出部１８のエッジ検出部２５は、スキュー補償パターンから得られたＭビット幅のパラレルデータにおける立ち上がりエッジ、すなわち"０"から"１"への変化点を検出するようになっている。あるいは、エッジ検出部２５は、スキュー補償パターンから得られたＭビット幅のパラレルデータにおける立ち下がりエッジ、すなわち"１"から"０"への変化点を検出するものであってもよい。
【００４５】
スキュー量仮検出部１８のスキュー量仮推定部２６は、エッジ検出部２５により検出されたＭビット幅のパラレルデータにおける立ち上がりエッジ又は立ち下がりエッジのビット位置に基づいて、各レーンの見掛けのスキュー量を推定するようになっている。
【００４６】
図３（ａ）及び（ｂ）、図４（ａ）及び（ｂ）の上段は、ＤＥＭＵＸ１５から未知のスキュー補償パターンが出力された場合に、各ＳｅｒＤｅｓ１６から出力されるパラレルデータＤＭの見掛けのスキュー量を示している。また、図３（ａ）及び（ｂ）、図４（ａ）及び（ｂ）の下段は、上段に示した未知のスキュー補償パターンに遅延量が付加された場合に、各ＳｅｒＤｅｓ１６から出力されるパラレルデータＤＭ'の見掛けのスキュー量を示している。
【００４７】
例えば、図３（ａ）の上段に示した例（レーン数Ｎが４）では、各ＳｅｒＤｅｓ１６から出力されたパラレルデータＤＭの見掛けのスキュー量は、レーン０において２ビット、レーン１において３ビット、レーン２において４ビット、レーン３において５ビットである。また、図３（ａ）の下段に示した例（レーン数Ｎが４）では、各ＳｅｒＤｅｓ１６から出力されたパラレルデータＤＭ'の見掛けのスキュー量は、レーン０において３ビット、レーン１において３ビット、レーン２において４ビット、レーン３において５ビットである。
【００４８】
変化量算出部２７は、スキュー量仮推定部２６により推定された、パラレルデータＤＭにおける各レーンの見掛けのスキュー量と、パラレルデータＤＭ'における各レーンの見掛けのスキュー量との差分を変化量として算出するようになっている。よって、図３（ａ）の例では、レーン０においてのみ１ビットの変化量が算出される。
【００４９】
図３（ａ）の例において、パラレルデータ特定部１９は、レーン０から１ビットの変化量が検出されたことに基づいて、遅延量付加の前後で未知のスキュー補償パターンがスキュー補償パターン１からスキュー補償パターン２に変化したこと、すなわち、遅延量付加の直前の未知のスキュー補償パターンがスキュー補償パターン１であることを特定する。
【００５０】
図３（ａ）の例において、スキュー補償パターン１から得られたパラレルデータＤＮの各レーンにおける"０"と"１"の変化点の相対的なビットずれ量は０ビットである。よって、スキュー量補正部２０は、パラレルデータＤＭから得られた各レーンの見掛けのスキュー量をそのまま補正スキュー量とする。
【００５１】
また、図３（ｂ）の例においては、パラレルデータ特定部１９は、レーン１から１ビットの変化量が検出されたことに基づいて、遅延量付加の直前の未知のスキュー補償パターンがスキュー補償パターン２であることを特定する。スキュー補償パターン２から得られたパラレルデータＤＮの各レーンにおける"０"と"１"の変化点の相対的なビットずれ量は、レーン０において１ビット、レーン１〜３において０ビットである。よって、スキュー量補正部２０は、パラレルデータＤＭから得られたレーン０の見掛けのスキュー量から１ビット減算して補正スキュー量とし、レーン１〜３については見掛けのスキュー量をそのまま補正スキュー量とする。
【００５２】
また、図４（ａ）の例においては、パラレルデータ特定部１９は、レーン２から１ビットの変化量が検出されたことに基づいて、遅延量付加の直前の未知のスキュー補償パターンがスキュー補償パターン３であることを特定する。スキュー補償パターン３から得られたパラレルデータＤＮの各レーンにおける"０"と"１"の変化点の相対的なビットずれ量は、レーン０，１において１ビット、レーン２，３において０ビットである。よって、スキュー量補正部２０は、パラレルデータＤＭから得られたレーン０，１の見掛けのスキュー量から１ビット減算して補正スキュー量とし、レーン２，３については見掛けのスキュー量をそのまま補正スキュー量とする。
【００５３】
また、図４（ｂ）の例においては、パラレルデータ特定部１９は、レーン３から１ビットの変化量が検出されたことに基づいて、遅延量付加の直前の未知のスキュー補償パターンがスキュー補償パターン４であることを特定する。スキュー補償パターン４から得られたパラレルデータＤＮの各レーンにおける"０"と"１"の変化点の相対的なビットずれ量は、レーン０〜２において１ビット、レーン３において０ビットである。よって、スキュー量補正部２０は、パラレルデータＤＭから得られたレーン０〜２の見掛けのスキュー量から１ビット減算して補正スキュー量とし、レーン３については見掛けのスキュー量をそのまま補正スキュー量とする。
【００５４】
スキュー除去部２２は、入力データのＭビット幅のパラレルデータに対して、例えば、レーン０のデータを−２ビット、レーン１のデータを−３ビット、レーン２のデータを−４ビット、レーン３のデータを−５ビットだけビットシフトする。これにより、レーン間のスキューが除去される。
【００５５】
以下、本実施形態のデスキュー回路１０を用いるデスキュー方法について、図５のフローチャートを参照しながら説明する。
【００５６】
まず、ＣＤＲ１１は、シリアルデータである入力データのビットレートに応じたクロックＣＬＫを生成する（ステップＳ１）。
【００５７】
次に、パターン発生器１２は、ステップＳ１で生成されたクロックＣＬＫの整数倍の周期Ｔのスキュー補償パターンを発生させる（ステップＳ２）。
【００５８】
次に、制御部２４は、入力データをＮ個のＳｅｒＤｅｓ１６に所定時間入力させるようにセレクタ１４を切り替える（ステップＳ３）。これにより、Ｎ個のＳｅｒＤｅｓ１６が動作状態になる。
【００５９】
次に、制御部２４は、セレクタ１４とデータスイッチ１７により、各レーンの補正スキュー量を算出するためのスキュー量算出モードに切り替える（ステップＳ４）。これにより、パターン発生器１２からのスキュー補償パターンがＤＥＭＵＸ１５に入力されるようになる。
【００６０】
次に、ＤＥＭＵＸ１５は、パターン発生器１２からのスキュー補償パターンをＮビット幅のパラレルデータに直並列変換して、Ｎ個のレーンに順次出力する処理を開始する（直並列変換ステップＳ５）。
【００６１】
次に、Ｎ個のＳｅｒＤｅｓ１６は、ステップＳ５で変換されたＮビット幅のパラレルデータを受信して、レーンごとにＭビット幅のパラレルデータに順次変換する処理を開始する（ステップＳ６）。
【００６２】
次に、スキュー量補正部２０は、レーンごとに補正スキュー量を算出する（ステップＳ７）。なお、この処理の詳細については後述する。
【００６３】
次に、制御部２４は、セレクタ１４とデータスイッチ１７により、各レーン間のスキューを除去するスキュー除去モードに切り替える（ステップＳ８）。これにより、入力データがＤＥＭＵＸ１５に入力されるようになる。
【００６４】
次に、ＤＥＭＵＸ１５は、入力データをＮビット幅のパラレルデータに直並列変換して、Ｎ個のレーンに順次出力する処理を開始する（直並列変換ステップＳ９）。
【００６５】
次に、Ｎ個のＳｅｒＤｅｓ１６は、ステップＳ９で変換されたＮビット幅のパラレルデータを受信して、レーンごとにＭビット幅のパラレルデータに順次変換する処理を開始する（ステップＳ１０）。
【００６６】
次に、スキュー除去部２２は、ステップＳ７で記憶された補正スキュー量に応じて、入力データのＭビット幅のパラレルデータをレーンごとにビットシフトして、Ｎ個のレーン間のスキューを除去する（ステップＳ１１）。
【００６７】
図６は、図５のフローチャートのステップＳ７の処理の詳細の一例を示すフローチャートである。
【００６８】
まず、制御部２４は、パターン発生器１２から１周期分のスキュー補償パターンが遅延量付加部１３に入力されたか否かを判断する（ステップＳ２１）。否定判断の場合には制御部２４は再びステップＳ２１を実行し、肯定判断の場合には遅延量付加ステップＳ２２に進む。
【００６９】
ステップＳ２２において遅延量付加部１３は、パターン発生器１２から入力された２周期目のスキュー補償パターンに１クロック分の遅延量を付加する。
【００７０】
次に、制御部２４は、パターン発生器１２から２周期分のスキュー補償パターンが遅延量付加部１３に入力されたか否かを判断する（ステップＳ２３）。否定判断の場合には制御部２４は再びステップＳ２３を実行し、肯定判断の場合にはステップＳ２４に進む。
【００７１】
次に、ステップＳ２４においてスキュー量仮検出部１８は、１周期目のスキュー補償パターンから得られたパラレルデータＤＭと、２周期目のスキュー補償パターンから得られたパラレルデータＤＭ'とに基づいて、各レーンの見掛けのスキュー量とその変化量を検出する。
【００７２】
次に、パラレルデータ特定部１９は、１周期目のスキュー補償パターンから得られたＮビット幅のパラレルデータＤＮが、図３（ａ）及び（ｂ）、図４（ａ）及び（ｂ）の上段に示されたスキュー補償パターン１〜４のいずれによるものかを特定する（ステップＳ２５）。
【００７３】
次に、スキュー量補正部２０は、ステップＳ２４で得られた各レーンの見掛けのスキュー量と、ステップＳ２５で特定されたパラレルデータＤＮに基づいて、補正スキュー量を算出する（ステップＳ２６）。
【００７４】
次に、記憶部２１は、ステップＳ２６で算出された補正スキュー量を各レーンに対応付けて記憶する（ステップＳ２７）。
【００７５】
以上説明したように、本実施形態に係るデスキュー回路１０は、スキュー補償パターンに遅延量を付加することで、遅延量が付加される前のスキュー補償パターンを特定し、特定したスキュー補償パターンの位相に基づいて、実際のスキュー量を算出する構成になっている。
【００７６】
なお、従来は、レーン間のスキューを取り除くためには既知の周期パターンの入力が必要であったため、未知のパターンを有する入力データが入力された場合には、レーン間のスキューを十分に取り除くことができなかった。
【００７７】
これに対して、本実施形態に係るデスキュー回路１０は、未知のパターンを有する入力データに対しても、複数のレーンに設けられたＮ個のＳｅｒＤｅｓで発生するスキューを取り除くことができる。つまり、デスキュー回路１０は、通信プロトコルによらずにハード的にレーン間のスキューを除去できるため、複数のレーンでデータを処理するあらゆる装置に適用できる。例えば、デスキュー回路１０により、高い時間精度でパケットの送受信を行うことなどが可能になる。
【００７８】
また、デスキュー回路１０は、キャプチャ回路２３により、未知の入力データをキャプチャすることができるため、他の測定回路において未知の入力データに対する任意の解析処理を実行することなどが可能になる。
【００７９】
また、本実施形態に係るデスキュー回路１０は、セレクタ１４を切り替えることにより、各レーンのスキュー量を算出するためのスキュー量算出モードと、入力データが入力された状態で各レーンのスキューを取り除くためのスキュー除去モードとを切り替えることができる。
【符号の説明】
【００８０】
１０  デスキュー回路
１１  ＣＤＲ
１２  パターン発生器
１３  遅延量付加部
１４  セレクタ
１５  ＤＥＭＵＸ
１６  ＳｅｒＤｅｓ
１７  データスイッチ
１８  スキュー量仮検出部
１９  パラレルデータ特定部
２０  スキュー量補正部
２１  記憶部
２２  スキュー除去部
２３  キャプチャ回路
２４  制御部
２５  エッジ検出部
２６  スキュー量仮推定部
２７  変化量算出部
【図１】
2018152820.tif 000003
【図２】
2018152820.tif 000004
【図３】
2018152820.tif 000005
【図４】
2018152820.tif 000006
【図５】
2018152820.tif 000007
【図６】
2018152820.tif 000008