(57)【要約】【課題】簡単な回路または簡単な処理によりスキュー調整する。【解決手段】集積回路３は、入力された外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路４３と、入力されたデータ信号を内クロック信号によりラッチするラッチ回路４５と、クロック遅延回路４３に対して、外クロック信号に対する内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路５８と、複数の遅延量それぞれの設定の下でのラッチ回路４５の出力信号を判定するラッチ判定回路５２と、ラッチ判定回路５２による複数の遅延量それぞれについての複数の判定値を記憶する記憶部５３と、記憶部５３に記憶された複数の判定値とクロック遅延回路４３に設定した複数の遅延量との関係から、クロック遅延回路４３による内クロック信号の遅延量を取得する遅延量取得部とを有する。【選択図】図１
2010263408.tif 000002
【特許請求の範囲】
【請求項１】
入力された外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路と、
入力されたデータ信号を前記内クロック信号によりラッチするラッチ回路と、
前記クロック遅延回路に対して、前記外クロック信号に対する前記内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路と、
前記複数の遅延量それぞれの設定の下での前記ラッチ回路の出力信号を判定するラッチ判定回路と、
前記ラッチ判定回路による前記複数の遅延量それぞれについての複数の判定値を記憶する記憶部と、
前記記憶部に記憶された前記複数の判定値と前記クロック遅延回路に設定した複数の遅延量との関係から、前記クロック遅延回路による前記内クロック信号の遅延量を取得する遅延量取得部と
を有する集積回路。
【請求項２】
前記遅延量設定回路が前記クロック遅延回路に設定する前記複数の遅延量は、
当該複数の遅延量のうちの最大の遅延量と最小の遅延量との遅延量差が、前記外クロック信号の半周期以上であり、
前記ラッチ判定回路は、
前記ラッチ回路の出力信号のレベルを二値に判定し、
前記記憶部は、
前記ラッチ判定回路により前記複数の遅延量について判定される複数の二値の判定値を１ビット毎に記憶するレジスタに、遅延量の大きさの順番に並べて記憶し、
前記遅延量取得部は、
前記レジスタでの値の変化点の個数に応じた取得方式により、前記クロック遅延回路による前記内クロック信号の遅延量を取得する
請求項１記載の集積回路。
【請求項３】
前記遅延量取得部は、
前記レジスタにおいて隣接する２ビット毎に、当該２ビットの排他論理和の値を複数取得し、
複数の前記排他論理和の値に含まれる値１の個数を、前記レジスタでの値の変化点の個数とする
請求項２記載の集積回路。
【請求項４】
前記遅延量取得部は、
前記外クロック信号の半周期内に含まれる複数の遅延量のビットについての前記複数の排他論理和の値に値１が２個含まれる場合、
前記クロック遅延回路による前記内クロック信号の遅延量として、前記レジスタにおいて、前記排他論理和の値を値１にした２組の２ビットそれぞれから選択された２個のビットの中央に位置するビットの遅延量を取得する
請求項３記載の集積回路。
【請求項５】
前記遅延量取得部は、
前記外クロック信号の半周期内に含まれる複数の遅延量のビットについての前記複数の排他論理和の値に値１が１個含まれる場合、
前記クロック遅延回路による前記内クロック信号の遅延量として、前記レジスタにおいて、前記排他論理和の値を値１にした２ビットから選択された１ビットと前記外クロック信号の位相において９０度ずれた位置のビットの遅延量を取得する
請求項４記載の集積回路。
【請求項６】
前記遅延量取得部は、
前記外クロック信号の半周期内に含まれる複数の遅延量のビットについての前記複数の排他論理和の値に値１が０個含まれる場合、
前記クロック遅延回路による前記内クロック信号の遅延量として、前記外クロック信号の位相において９０度に相当する遅延量を取得する
請求項５記載の集積回路。
【請求項７】
前記遅延量取得部は、
前記外クロック信号の半周期内に含まれる複数の遅延量のビットについての前記複数の排他論理和の値に値１が０から２個含まれていない場合、
測定エラーと判断し、
前記クロック遅延回路による前記内クロック信号の遅延量を新たに取得しない
請求項６記載の集積回路。
【請求項８】
当該集積回路は、
当該集積回路の品質を判定する品質判定部を有し、
前記品質判定部は、
前記複数の遅延量のうち、前記外クロック信号の位相において所定の位相遅れ範囲に含まれる複数の遅延量についての複数の判定値の排他論理和の値に値１が含まれない場合、当該集積回路を良品と判定する
請求項３記載の集積回路。
【請求項９】
前記品質判定部は、
前記外クロック信号の位相において９０度の位相遅れを基準とした所定の位相遅れの角度範囲に含まれる複数の遅延量についての複数の判定値の排他論理和の値に値１が含まれない場合、当該集積回路を良品と判定する
請求項８記載の集積回路。
【請求項１０】
前記ラッチ判定回路は、
前記遅延量設定回路による各遅延量の設定の下での前記ラッチ回路の出力信号を複数回判定し、
前記記憶部は、
各遅延量の設定の下で前記ラッチ判定回路が判定した複数の二値の判定値において、値１および値０のうち判定回数が多い値を、当該各遅延量の設定の下での判定値として記憶する
請求項３記載の集積回路。
【請求項１１】
前記遅延量設定回路は、
テスト用の外クロック信号およびデータ信号が入力されている状態で、前記クロック遅延回路に対して複数の遅延量を設定し、
前記遅延量取得部は、
前記記憶部に記憶された前記複数の判定値と前記クロック遅延回路に設定した複数の遅延量との関係から、実際の外クロック信号およびデータ信号
が入力される実使用時の前記クロック遅延回路の遅延量を取得する
請求項１記載の集積回路。
【請求項１２】
当該集積回路は、
前記ラッチ回路を、入力される複数のデータ信号それぞれに対応して複数有し、
前記ラッチ判定回路は、
複数の前記ラッチ回路の複数の出力信号それぞれについて前記複数の遅延量での複数の判定値を判定し、
前記記憶部は、
前記ラッチ判定回路により判定された複数のラッチ回路の複数の出力信号それぞれについての複数の遅延量での複数の判定値を記憶し、
前記遅延量取得部は、
前記記憶部に記憶された複数の前記ラッチ回路の複数の遅延量での複数の判定値から、前記クロック遅延回路による前記内クロック信号の遅延量を取得する
請求項１記載の集積回路。
【請求項１３】
前記遅延量取得部は、
複数の前記ラッチ回路それぞれについて、各前記ラッチ回路の複数の遅延量での複数の判定値に基づいて当該各前記ラッチ回路に適した遅延量を取得し、
取得した前記ラッチ回路毎の複数の前記遅延量の平均値を、前記クロック遅延回路による前記内クロック信号の遅延量として取得する
請求項１２記載の集積回路。
【請求項１４】
データ信号および前記データ信号をラッチするための外クロック信号を出力する第１集積回路と、
前記データ信号および前記外クロック信号が入力される第２集積回路と
を有し、
前記第２集積回路は、
入力された前記外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路と、
入力された前記データ信号を前記内クロック信号によりラッチするラッチ回路と、
前記クロック遅延回路に対して、前記外クロック信号に対する前記内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路と、
前記複数の遅延量それぞれの設定の下で、前記ラッチ回路の出力信号を判定するラッチ判定回路と、
前記ラッチ判定回路による前記複数の遅延量それぞれについての複数の判定値を記憶する記憶部と、
前記記憶部に記憶された前記複数の判定値と前記クロック遅延回路に設定した複数の遅延量との関係から、前記クロック遅延回路による前記内クロック信号の遅延量を取得する遅延量取得部と
を有する集積回路システム。
【請求項１５】
入力された外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路と、
入力されたシリアルデータ信号を前記内クロック信号によりラッチするラッチ回路と、
前記クロック遅延回路に対して、前記外クロック信号に対する前記内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路と、
前記複数の遅延量それぞれの設定の下での前記ラッチ回路の出力信号を判定するラッチ判定回路と、
前記ラッチ判定回路による前記複数の遅延量それぞれについての複数の判定値を記憶する記憶部と、
前記記憶部に記憶された前記複数の判定値と前記クロック遅延回路に設定した複数の遅延量との関係から、前記クロック遅延回路による前記内クロック信号の遅延量を取得する遅延量取得部と
を有するシリアルパラレル変換装置。
【請求項１６】
データ信号と、前記データ信号をラッチ回路でラッチするためのクロック信号とのスキューを調整するために、前記クロック信号についての複数の遅延量から１つの遅延量を選択するステップと、
選択した遅延量で前記ラッチ回路に入力される前記クロック信号を遅延させるステップと、
選択した遅延量により遅延させた前記クロック信号を用いてラッチした前記ラッチ回路の出力信号を判定する判定ステップと、
前記判定ステップにより判定された前記複数の遅延量それぞれについての複数の判定値を記憶部に記憶するステップと、
前記記憶部に記憶された前記複数の判定値と前記複数の遅延量との関係から、前記クロック信号の遅延量を取得するステップと、
取得された前記遅延量により前記クロック信号を遅延し、当該遅延されたクロック信号を用いて前記ラッチ回路により前記データ信号をラッチするステップと
を有するスキュー調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ信号とともに通信されたクロック信号を用いて当該データ信号をラッチする集積回路、集積回路システム、シリアルパラレル変換装置およびスキュー調整方法に関する。
【背景技術】
【０００２】
特許文献１は、クロック信号を用いてシリアルデータ信号をラッチする集積回路を開示する。
このような集積回路では、シリアルデータ信号に対するクロック信号のタイミングがずれて、たとえばシリアルデータ信号が変化している時にラッチすると、送信されたデータを正しくラッチできない。
そのため、クロック信号を用いてシリアルデータ信号をラッチする集積回路では、シリアルデータ信号に対するクロック信号のタイミングのずれを補正するスキュー調整が必要になる。
【０００３】
そして、特許文献１の集積回路は、内部で発生するクロックの位相を、ＤＬＬ（Digital Locked Loop）回路を用いて変化させ、ＢＩＳＴ（Built In Self Test）を実行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１２７４６０号公報
【特許文献２】特開２００３−１３３９６５号公報
【特許文献３】国際公開ＷＯ２００２／０６５６９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１のように、集積回路の内部で発生するクロック信号の位相を変化させてテストをしても、その内部で発生するクロック信号は、集積回路の外から入力されるクロック信号との間で位相の同期がとれていない。
つまり、特許文献１のテスト方法は、集積回路に入力されるシリアルデータ信号と、このシリアルデータ信号をラッチするために集積回路に入力されるクロック信号との位相を変化させてテストするものではない。
【０００６】
そのため、特許文献１のテスト方法では、たとえばシリアルデータ信号およびクロック信号を出力する他の集積回路において不具合が生じてこれらの信号の間にタイミングずれが生じている場合に、当該他の集積回路の不具合に起因するスキューを調整できない。
この他にも例えば、特許文献１のテスト方法では、シリアルデータ信号およびクロック信号を送受する複数の集積回路が実装されるプリント基板に不具合が発生してこれらの信号の間にタイミングずれが生じている場合に、当該スキューを調整できない。
【０００７】
このように特許文献１のテスト方法では、シリアルデータ信号およびクロック信号を送受する複数の集積回路を組み合わせた複数のチップセットから、特定の組み合わせにおいて生じる不具合を検出することができない。
よって、特許文献１のテスト方法では、良品のチップセットだけを出荷するようにすることはできない。
【０００８】
これに対して、特許文献２、３は、実動作時にスキューを検出して調整する方法を開示する。
【０００９】
特許文献２は、具体的には、シリアル・パラレル変換装置を開示する。
この変換装置は、ＰＬＬ（Phase Locked Loop）回路のタップ出力信号から複数のストローブ信号を生成する。また、変換装置は、スキュー検出回路で検出したスキューの程度に応じてシリアル・パラレル変換に用いてるストローブ信号を選択する。
そして、変換装置は、選択したストローブ信号をクロック信号に用いてシリアルデータ信号をラッチする。
【００１０】
また、特許文献３は、集積回路を開示する。
この集積回路は、２個のＰＬＬ回路もしくは２個のＤＬＬ回路によって相が互いに異なる２つのクロック信号を生成する。また、集積回路は、この２つのクロック信号によりシリアル伝送データをサンプリングする。
そして、集積回路は、サンプリングした２系列の論理値に基づいて１つの制御値を得る。
【００１１】
しかしながら、このように実動作時にスキューを検出して調整する場合、スキューを検出して調整するための回路規模が大きくなる。
たとえば、特許文献２は、クロック信号を遅延させるＤＬＬ回路ではなく、装置内部でクロック信号を発生し、この内部のクロック信号を外部のクロック信号に同期させるＰＬＬ回路を用いる。
ＰＬＬ回路は、装置内部で発生するクロック信号を外部のクロック信号に同期させる回路の他に、そのクロック信号を発生するための回路が必要である。
これに対して、ＤＬＬ回路は、多段の遅延回路で構成できる。
そのため、特許文献２の装置では、回路規模および処理負荷が大きくなる。
【００１２】
なお、クロック信号の周期がシリアルデータ信号の周期と同じまたは２倍の期間である場合、シリアルデータ信号に対するクロック信号の位相をずらすだけで、スキュー調整が可能である。
そのため、このような信号の組み合わせの場合、クロック信号をＤＬＬ回路で遅延させるだけでスキューを調整できるので、ＰＬＬ回路が不要である。
【００１３】
また、特許文献３の集積回路では、２個のＤＬＬ回路または２個のＰＬＬ回路が必要である。
そのため、特許文献３の集積回路では、回路規模および処理負荷が大きい。
【００１４】
このようにクロック信号を用いてシリアルデータ信号などのデータ信号をラッチする集積回路、集積回路システム、シリアルパラレル変換装置およびスキュー調整方法では、簡単な回路または簡単な処理によりスキュー調整することが望まれている。
【課題を解決するための手段】
【００１５】
本発明の第１の観点の集積回路は、入力された外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路と、入力されたデータ信号を内クロック信号によりラッチするラッチ回路と、クロック遅延回路に対して、外クロック信号に対する内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路と、複数の遅延量それぞれの設定の下でのラッチ回路の出力信号を判定するラッチ判定回路と、ラッチ判定回路による複数の遅延量それぞれについての複数の判定値を記憶する記憶部と、記憶部に記憶された複数の判定値とクロック遅延回路に設定した複数の遅延量との関係から、クロック遅延回路による内クロック信号の遅延量を取得する遅延量取得部とを有する。
【００１６】
好適には、遅延量設定回路がクロック遅延回路に設定する複数の遅延量は、当該複数の遅延量のうちの最大の遅延量と最小の遅延量との遅延量差が、外クロック信号の半周期以上であり、ラッチ判定回路は、ラッチ回路の出力信号のレベルを二値に判定し、記憶部は、ラッチ判定回路により複数の遅延量について判定される複数の二値の判定値を１ビット毎に記憶するレジスタに、遅延量の大きさの順番に並べて記憶し、遅延量取得部は、レジスタにおいて隣接する２ビット毎に、当該２ビットの排他論理和の値を複数取得し、複数の排他論理和の値に含まれる値１の個数に応じた取得方式により、クロック遅延回路による内クロック信号の遅延量を取得してもよい。
【００１７】
本発明の第２の観点の集積回路システムは、データ信号およびデータ信号をラッチするための外クロック信号を出力する第１集積回路と、データ信号および外クロック信号が入力される第２集積回路とを有する。そして、第２集積回路は、入力された外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路と、入力されたデータ信号を内クロック信号によりラッチするラッチ回路と、クロック遅延回路に対して、外クロック信号に対する内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路と、複数の遅延量それぞれの設定の下で、ラッチ回路の出力信号を判定するラッチ判定回路と、ラッチ判定回路による複数の遅延量それぞれについての複数の判定値を記憶する記憶部と、記憶部に記憶された複数の判定値とクロック遅延回路に設定した複数の遅延量との関係から、クロック遅延回路による内クロック信号の遅延量を取得する遅延量取得部とを有する。
【００１８】
本発明の第３の観点のシリアルパラレル変換装置は、入力された外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路と、入力されたシリアルデータ信号を内クロック信号によりラッチするラッチ回路と、クロック遅延回路に対して、外クロック信号に対する内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路と、複数の遅延量それぞれの設定の下でのラッチ回路の出力信号を判定するラッチ判定回路と、ラッチ判定回路による複数の遅延量それぞれについての複数の判定値を記憶する記憶部と、記憶部に記憶された複数の判定値とクロック遅延回路に設定した複数の遅延量との関係から、クロック遅延回路による内クロック信号の遅延量を取得する遅延量取得部とを有する。
【００１９】
本発明の第４の観点のスキュー調整方法は、データ信号と、データ信号をラッチ回路でラッチするためのクロック信号とのスキューを調整するために、クロック信号についての複数の遅延量から１つの遅延量を選択するステップと、選択した遅延量でラッチ回路に入力されるクロック信号を遅延させるステップと、選択した遅延量により遅延させたクロック信号を用いてラッチしたラッチ回路の出力信号を判定する判定ステップと、判定ステップにより判定された複数の遅延量それぞれについての複数の判定値を記憶部に記憶するステップと、記憶部に記憶された複数の判定値と複数の遅延量との関係から、クロック信号の遅延量を取得するステップと、取得された遅延量によりクロック信号を遅延し、当該遅延されたクロック信号を用いてラッチ回路によりデータ信号をラッチするステップとを有する。
【００２０】
第１の観点の集積回路では、クロック遅延回路による内クロック信号の遅延量を取得するために、遅延量設定回路が、クロック遅延回路に対して内クロック信号についての複数の遅延量を設定する。
また、ラッチ判定回路は、複数の遅延量それぞれの設定の下でのラッチ回路の出力信号を判定し、記憶部は、複数の遅延量それぞれでの複数の判定値を記憶する。
そして、遅延量取得部は、記憶部に記憶された複数の判定値と複数の遅延量との関係から、クロック遅延回路による内クロック信号の遅延量を取得する。
【発明の効果】
【００２１】
本発明では、簡単な回路または簡単な処理によりスキュー調整することができる。
【図面の簡単な説明】
【００２２】
【図１】図１は、本発明の第１の実施形態に係るシリアル通信システムの構成図である。
【図２】図２は、図１の第２集積回路のブロック図である。
【図３】図３は、図２のＤＬＬ回路のブロック図である。
【図４】図４は、ＤＬＬ回路の遅延設定値と遅延量との関係を示す説明図である。
【図５】図５は、外クロック信号と遅延設定値との関係を示す説明図である。
【図６】図６は、データとクロックとのタイミングチャートの例である。
【図７】図７は、データとクロックとのタイミングチャートの他の例である。
【図８】図８は、データレジスタから排他論理和レジスタまでのブロック図である。
【図９】図９は、排他論理和レジスタからエラーレジスタまでのブロック図である。
【図１０】図１０は、図１のシリアル通信システムのシーケンスチャートである。
【図１１】図１１は、第１の実施形態のスキュー調整処理のフローチャートである。
【図１２】図１２は、排他論理和レジスタの値がすべて０となる例の説明図である。
【図１３】図１３は、図１２の場合のレジスタ値である。
【図１４】図１４は、排他論理和レジスタに値１が２つ含まれる例の説明図である。
【図１５】図１５は、図１４の場合のレジスタ値である。
【図１６】図１６は、排他論理和レジスタの第７ビット以下に値１が１つ含まれる例の説明図である。
【図１７】図１７は、図１６の場合のレジスタ値である。
【図１８】図１８は、排他論理和レジスタの第８ビット以上に値１が１つ含まれる例の説明図である。
【図１９】図１９は、図１８の場合のレジスタ値である。
【図２０】図２０は、第２の実施形態の第２集積回路のブロック図である。
【図２１】図２１は、第２の実施形態でのスキュー調整処理のフローチャートである。
【図２２】図２２は、８チャネルのデータレジスタの一例を示す図である。
【図２３】図２３は、図１のシリアル通信システムの変形例の構成図である。
【発明を実施するための形態】
【００２３】
以下、本発明の実施の形態を図面に関連付けて説明する。なお、説明は以下の順序で行う。
１．第１の実施形態（１対の差動シリアルデータ信号により通信する例）
２．第２の実施形態（複数対の差動シリアルデータ信号により通信する例）
【００２４】
＜第１の実施形態＞
［シリアル通信システムの構成］
図１は、本発明の第１の実施形態に係るシリアル通信システム１のシステム構成図である。
シリアル通信システム１は、パラレルシリアル変換装置としての第１集積回路２と、シリアルパラレル変換装置としての第２集積回路３と、これらが実装されたプリント基板４とを有する。
図１のシリアル通信システム１において第１集積回路２と第２集積回路３との間で通信されるシリアルデータ信号には、たとえば映像信号がある。
このようなシリアル通信システム１は、たとえば映像表示装置、ビデオ記録装置、ビデオ再生装置などにおいて画像処理モジュールとして用いられる。
【００２５】
第１集積回路２は、パッケージ１１と、複数の端子１２とを有する。
パッケージ１１は、絶縁性の封止材料により形成される。パッケージ１１内には、図示しない半導体チップが配設される。半導体チップには、電気回路が集積化される。
複数の端子１２は、たとえばパッケージ１１の外周に沿って並べられる。第１集積回路２の複数の端子１２には、一対のクロック出力端子１３ｐ，１３ｍと、一対のデータ出力端子１４ｐ，１４ｍとが含まれる。
【００２６】
一対のクロック出力端子１３ｐ，１３ｍは、一対の差動クロック信号を出力する端子である。
差動クロック信号は、一定の周期で、ハイレベルとローレベルとの間で変化する波形を有する信号である。
一対の差動クロック信号は、同一の周期を有し、１８０度ずれた位相で変化する波形を有する信号である。差動クロック信号は、たとえばＬＶＤＳ（Low Voltage Differential Signal）であればよい。
【００２７】
一対のデータ出力端子１４ｐ，１４ｍは、一対の差動シリアルデータ信号を出力する端子である。
一対の差動シリアルデータ信号は、同一のタイミングにおいて、１８０度ずれた位相に変化する。一対の差動シリアルデータ信号は、たとえばＬＶＤＳであればよい。
そして、第１集積回路２は、差動シリアルデータ信号にデータを重畳する。
これにより、差動シリアルデータ信号は、重畳されるデータの値（シンボル値）に応じてハイレベルとローレベルとの間で変化する。
また、第１集積回路２が差動シリアルデータ信号に重畳するデータとしては、たとえば第１集積回路２に入力されるデータ、および第１集積回路２内で発生したデータがある。
【００２８】
第２集積回路３は、パッケージ２１と、複数の端子２２とを有する。
第２集積回路３の複数の端子２２には、一対のクロック入力端子２３ｐ，２３ｍと、一対のデータ入力端子２４ｐ，２４ｍとが含まれる。
一対のクロック入力端子２３ｐ，２３ｍには、第１集積回路２が出力した一対の差動クロック信号が入力される。
一対のデータ入力端子２４ｐ，２４ｍには、第１集積回路２が出力した一対の差動シリアルデータ信号が入力される。
【００２９】
プリント基板４は、第１集積回路２と第２集積回路３とが実装される。第１集積回路２の複数の端子１２と、第２集積回路３の複数の端子２２とは、プリント基板４にはんだ付けされる。
また、プリント基板４には、複数の配線３１が形成される。この複数の配線３１により、第１集積回路２の一対のクロック出力端子１３ｐ，１３ｍと第２集積回路３の一対のクロック入力端子２３ｐ，２３ｍとが電気的に接続される。
また、複数の配線３１により、第１集積回路２の一対のデータ出力端子１４ｐ，１４ｍと第２集積回路３の一対のデータ入力端子２４ｐ，２４ｍとが電気的に接続される。
【００３０】
［第２集積回路３（シリアルパラレル変換装置）の構成］
図２は、図１の第２集積回路３の回路ブロック図である。
第２集積回路３は、信号処理系回路として、一対のデータ入力端子２４ｐ，２４ｍ、データコンパレータ４１、一対のクロック入力端子２３ｐ，２３ｍ、クロックコンパレータ４２、ＤＬＬ（Delayed Locked Loop）回路４３を有する。
また、第２集積回路３は、負ラッチ回路４４、正ラッチ回路４５、分周回路４６、デマルチプレクサ４７、内部信号処理回路４８を有する。
さらに、第２集積回路３は、スキュー調整回路として、スキュー計測回路５１、ＣＰＵ（Central Processing Unit）６２、遅延量設定レジスタ６３、遅延量セレクタ６４、リセットセレクタ６５を有する。
【００３１】
一対のデータ入力端子２４ｐ，２４ｍには、第１集積回路２が出力した一対の差動シリアルデータ信号が入力される。
データコンパレータ４１は、一対のデータ入力端子２４ｐ，２４ｍに接続される。
データコンパレータ４１は、一対の差動シリアルデータ信号が交差するタイミングにおいてハイレベルとローレベルとの間で切り替わる外シリアルデータ信号を生成する。
【００３２】
一対のクロック入力端子２３ｐ，２３ｍには、第１集積回路２が出力した一対の差動クロック信号が入力される。
クロックコンパレータ４２は、一対のクロック入力端子２３ｐ，２３ｍに接続される。
クロックコンパレータ４２は、一対の差動クロック信号が交差するタイミングにおいてハイレベルとローレベルとの間で切り替わる外クロック信号を生成する。
【００３３】
遅延量設定レジスタ６３は、クロック信号の遅延量を示す遅延量データを保持する。
遅延量設定レジスタ６３に記憶されるクロック信号の遅延量は、第１集積回路２と第２集積回路３との間で実際にデータを通信する場合に使用される遅延量である。
遅延量設定レジスタ６３は、たとえば後述する図４の複数の遅延設定値のうちの１つの遅延設定値を記憶する。
【００３４】
遅延量セレクタ６４は、遅延量設定レジスタ６３と、スキュー計測回路５１の後述するタイミング制御回路５８とに接続される。
遅延量セレクタ６４は、ＣＰＵ６２からのモード選択信号Ｓ６２に基づいて、遅延量設定レジスタ６３およびタイミング制御回路５８から１つの回路を選択する。
遅延量セレクタ６４は、選択したレジスタ６３またはタイミング制御回路５８の遅延量データをＤＬＬ回路４３へ出力する。
【００３５】
リセットセレクタ６５は、ＣＰＵ６２と、スキュー計測回路５１のタイミング制御回路５８とに接続される。
リセットセレクタ６５は、ＣＰＵ６２からのモード選択信号Ｓ６２に基づいて、ＣＰＵ６２およびタイミング制御回路５８から１つの回路を選択する。
リセットセレクタ６５は、選択したＣＰＵ６２またはタイミング制御回路５８のリセット信号をＤＬＬ回路４３へ出力する。
【００３６】
図３は、図２のＤＬＬ回路４３の回路ブロック図である。
ＤＬＬ回路４３は、外クロック信号を遅延させて内クロック信号を生成する。
ＤＬＬ回路４３は、クロックコンパレータ４２、遅延量セレクタ６４、およびリセットセレクタ６５に接続される。
ＤＬＬ回路４３は、複数の遅延回路７１、位相比較器７２、ローパスフィルタ回路７３、およびＤＬＬセレクタ７４を有する。
【００３７】
遅延回路７１は、入力レベルに応じた遅延量で、それぞれに入力される信号を遅延して出力する。
複数の遅延回路７１は、互いの入力に互いの出力が接続されるように一列に接続される。
これにより、多段遅延回路７５が構成される。なお、多段接続される複数の遅延回路７１の個数は、たとえば１６個であればよい。
また、多段遅延回路７５の初段の遅延回路７１は、クロックコンパレータ４２に接続される。多段遅延回路７５には、外クロック信号が入力される。多段遅延回路７５の複数の遅延回路７１は、外クロック信号を遅延する。
多段遅延回路７５の最終段の遅延回路７１は、この多段遅延回路７５が遅延したクロック信号を出力する。
【００３８】
位相比較器７２は、クロックコンパレータ４２と、多段遅延回路７５の最終段の遅延回路７１とに接続される。
そして、位相比較器７２は、入力される外クロック信号と、最終段の遅延回路７１から出力される遅延されたクロック信号との位相を比較する。
また、位相比較器７２は、これらの信号の位相差に応じた波形の信号をローパスフィルタ回路７３へ出力する。
たとえば、位相比較器７２は、外クロック信号の位相と最終段の遅延クロック信号の位相との位相差が１８０度である場合を基準として、その１８０度の位相差からのずれ量に応じた波形の信号を生成する。
位相比較器７２は、生成した信号をローパスフィルタ回路７３へ出力する。
【００３９】
ローパスフィルタ回路７３は、位相比較器７２と、複数の遅延回路７１とに接続される。
そして、ローパスフィルタ回路７３は、位相比較器７２から出力される信号を、適切な帯域を残したレベル信号に変換する。
ローパスフィルタ回路７３は、変換したレベル信号を複数の遅延回路７１へ出力する。これにより、フィードバックループが形成される。
複数の遅延回路７１には、ローパスフィルタ回路７３から同じレベル信号が入力される。そのため、複数の遅延回路７１の遅延量は略揃う。
【００４０】
そして、１８０度の位相差を基準として、たとえば最終段の遅延回路７１のクロック信号の位相が外クロック信号の位相より遅れると、それらの位相差に応じて位相比較器７２およびローパスフィルタ回路７３の出力が変化する。
そして、複数の遅延回路７１によるクロック信号の遅延量が減る。
また、１８０度の位相差を基準として、最終段の遅延回路７１のクロック信号の位相が外クロック信号の位相より進むと、それらの位相差に応じて位相比較器７２およびローパスフィルタ回路７３の出力が変化する。
そして、複数の遅延回路７１によるクロック信号の遅延量が増える。
この位相制御により、安定した外クロック信号が入力されている定常状態では、最終段の遅延回路７１のクロック信号と外クロック信号との位相差が１８０度になる。
この定常状態では、各遅延回路７１は、外クロック信号の半周期を遅延回路７１の個数で割った期間に相当する遅延量で、それぞれに入力されるクロック信号を遅延している。
そのため、外クロック信号が入力される側から数えてｏ（ｏは１以上の自然数）番目の遅延回路７１は、外クロック信号を下記式１の遅延量Ｔ（ｏ）で遅延させたクロック信号を出力することになる。
下記式１において、Δｔは、１つの遅延回路７１でのクロック信号の遅延量である。
Ｔ（ｏ）＝Δｔ×（ｏ−１）  ・・・式１
【００４１】
また、複数の遅延回路７１の出力信号と外クロック信号とは、分岐配線によりタップアウトされ、ＤＬＬセレクタ７４に入力される。
ＤＬＬセレクタ７４は、リセット信号が入力される。
ＤＬＬセレクタ７４は、リセット信号が入力されるタイミングでＤＬＬセレクタ７４に入力されている遅延量データに基づいて、ＤＬＬセレクタ７４に入力されている複数のクロック信号から１つを選択する。
【００４２】
図４は、ＤＬＬ回路４３の遅延設定値と、ＤＬＬ回路４３によるクロック信号の遅延量との関係を示す説明図である。
内クロック信号は、外クロック信号をこの遅延量で遅延した信号である。
ＤＬＬ回路４３は、図４に示すよう［４：０］の５ビットの遅延設定値を設定できる。
また、図４は、０〜１６の１７個の遅延設定値を設定する例である。
図４の１７個の遅延設定値の値が大きくなるほど、ＤＬＬ回路４３によるクロック信号の遅延量が大きくなる。
なお、図４では、ＤＬＬ回路４３によるクロック信号の遅延量は、外クロック信号に対する位相遅延量（度）により表記されている。
たとえば遅延設定値＝０の場合の位相遅延量は０度（遅延なし）である。また、遅延設定値＝１６の場合の位相遅延量は１８０度（遅延なし）である。
【００４３】
図５は、外クロック信号と、図４の１７個の遅延設定値との関係を示す説明図である。
図５に示すように、図４の１７個の遅延設定値は、外クロック信号の半周期を均等に１６分割する。
具体的には、１７個の遅延設定値は、外クロック信号の半周期を０度、１１．２５度、２２．５０度、・・・、１６８．７５度、１８０．００度により１６分割する。
このようにＤＬＬ回路４３に設定可能な複数の遅延設定値は、最大の遅延量と最小の遅延量との遅延量の差が外クロック信号の半周期になっている。
【００４４】
ＤＬＬ回路４３は、図４に示す５ビットの遅延設定値の１つが設定された状態でリセット信号が入力されると、入力されている遅延設定値に対応するタップアウトを選択する。
たとえば、値０を示す５ビットの遅延設定値が入力されると、ＤＬＬ回路４３は、０番目の外クロック信号を選択する。
また、値１を示す５ビットの遅延設定値が入力されると、ＤＬＬ回路４３は、最初の遅延回路７１の出力信号を選択する。
【００４５】
図２に示すように、ＤＬＬ回路４３は、ＤＬＬセレクタ７４により選択したクロック信号を、内クロック信号として、負ラッチ回路４４、正ラッチ回路４５および分周回路４６へ出力する。
【００４６】
図６および図７は、第２集積回路３の複数の信号のタイミングチャートの例である。
図６（Ａ）および図７（Ａ）は、差動シリアルデータ信号の波形である。
図６（Ｂ）および図７（Ｂ）は、差動クロック信号の波形である。
図６（Ｃ）および図７（Ｃ）は、内クロック信号の波形である。
なお、図６（Ｂ）および図７（Ｂ）には、説明のために、一対の差動クロック信号のうちの一方のクロック信号の波形のみを図示している。
【００４７】
差動シリアルデータ信号は、たとえば図６（Ａ）および図６（Ｂ）に示すように、差動クロック信号の半周期毎にデータが重畳できる。すなわち、差動シリアルデータ信号は、差動クロック信号の周波数の２倍のビットレートで通信データを伝送できる。
また、差動シリアルデータ信号と差動シリアルデータ信号とは、基本的に、第１集積回路２において、同じタイミングでレベルが変化するように同期して生成される。
しかしながら、図６（Ａ）に示すように、実際の差動シリアルデータ信号の信号レベルの変化タイミングは、ジッタや配線遅延などにより、差動クロック信号の信号レベルの変化タイミングに対して変動する。
そのため、実際の差動シリアルデータ信号には、シンボル値に応じた信号レベルに安定した有効期間（Ｖａｌｉｄ期間）と、シンボル値に応じた信号レベルに安定しているとは言えない無効期間（Ｉｎｖａｌｉｄ期間）とがある。
差動シリアルデータ信号を受信する第２集積回路３は、有効期間においてデータをラッチする必要がある。
【００４８】
そして、図６のタイミングチャートでは、第２集積回路３に入力される差動シリアルデータ信号の位相と、差動クロック信号の位相とが略揃っている。
そのため、第２集積回路３は、ＤＬＬ回路４３により内クロック信号の位相を、差動クロック信号（外クロック信号）において９０度分遅らせる。
これにより、第２集積回路３は、内クロック信号の立ち上がりエッジを、差動シリアルデータ信号の有効期間内のタイミング（略９０度のタイミング）とすることができる。
また、第２集積回路３は、内クロック信号の立ち下がりエッジを、差動シリアルデータ信号の有効期間内のタイミング（略２７０度のタイミング）とすることができる。
この場合、第２集積回路３の正ラッチ回路４５および負ラッチ回路４４は、外シリアルデータ信号の信号レベルが安定している有効期間の中央タイミングにおいて、外シリアルデータ信号を正常にラッチすることができる。
そして、第２集積回路３の正ラッチ回路４５および負ラッチ回路４４は、外シリアルデータ信号に重畳された正しいデータを得ることができる。
【００４９】
これに対して、図７のタイミングチャートでは、スキューが発生して、第２集積回路３に入力される差動シリアルデータ信号に対して、差動クロック信号の位相が遅れている。
このように第２集積回路３に入力される信号の位相のずれは、たとえば第１集積回路２から出力される差動シリアルデータ信号の位相と差動クロック信号の位相とがずれている場合に生じる。
この他にも例えば、第１集積回路２および第２集積回路３が実装されるプリント基板４の配線３１において不具合が生じている場合にも、第２集積回路３に入力される信号に位相ずれが生じる。
図７のスキューが発生している場合において図６と同様に内クロック信号の位相を９０度分遅らせると、図７（Ｃ）に示すように、内クロック信号の立ち上がりエッジのタイミングは、差動シリアルデータ信号の無効期間になってしまう。
また、内クロック信号の立ち下がりエッジのタイミングも、差動シリアルデータ信号の無効期間になってしまう。
【００５０】
このように図７のスキューが発生している場合において図６と同様に内クロック信号の位相を９０度分遅らせると、正ラッチ回路４５および負ラッチ回路４４は、外シリアルデータ信号に重畳された正しいデータを取得できない可能性がある。
よって、第１集積回路２から第２集積回路３へ送信される差動クロック信号を用いて、第１集積回路２から第２集積回路３へ送信される差動シリアルデータ信号をラッチする場合、スキュー調整をする必要がある。
つまり、正ラッチ回路４５および負ラッチ回路４４に入力される内クロック信号と外シリアルデータ信号との位相差が図６の関係となるように、これらの信号の位相を調整する必要がある。
【００５１】
図２に示すように、正ラッチ回路４５は、データコンパレータ４１、ＤＬＬ回路４３に接続される。
正ラッチ回路４５は、Ｄフリップフロップを含む。
正ラッチ回路４５のＤフリップフロップは、内クロック信号の立ち上がりエッジが入力されたタイミングで、外シリアルデータ信号をラッチする。
正ラッチ回路４５は、Ｄフリップフロップがラッチしたレベルの正ラッチ信号を、デマルチプレクサ４７へ出力する。
【００５２】
負ラッチ回路４４は、データコンパレータ４１、ＤＬＬ回路４３に接続される。
負ラッチ回路４４は、Ｄフリップフロップを含む。
負ラッチ回路４４のＤフリップフロップは、内クロック信号の立ち下がりエッジが入力されたタイミングで、外シリアルデータ信号をラッチする。
負ラッチ回路４４は、Ｄフリップフロップがラッチしたレベルの負ラッチ信号を、デマルチプレクサ４７へ出力する。
【００５３】
分周回路４６は、ＤＬＬ回路４３に接続される。
分周回路４６は、内クロック信号を分周した分周クロック信号を、デマルチプレクサ４７へ出力する。
【００５４】
デマルチプレクサ４７は、正ラッチ回路４５、負ラッチ回路４４および分周回路４６に接続される。
デマルチプレクサ４７は、分周クロック信号に基づいて動作し、正ラッチ信号および負ラッチ信号から、シリアルデータ信号に重畳されていた複数のデータを生成する。
デマルチプレクサ４７は、生成した複数のデータを内部信号処理回路４８へ出力する。
【００５５】
スキュー計測回路５１は、判定回路５２、データレジスタ５３、排他論理和モジュール５４、排他論理和レジスタ５５、多入力論理和回路５６、エラーレジスタ５７、タイミング制御回路５８、イネーブル回路５９を有する。
そして、スキュー計測回路５１は、システムクロック入力端子６１に入力されるシステムクロック信号に基づいて動作する。
システムクロック入力端子６１には、水晶発振器１０１が接続される。
水晶発振器１０１は、たとえばプリント基板４に実装される。
なお、スキュー計測回路５１は、システムクロック入力端子６１に入力されるシステムクロック信号をたとえばＰＬＬ回路で逓倍または分周したシステムクロック信号を用いてもよい。
【００５６】
判定回路５２は、正ラッチ回路４５に接続される。
判定回路５２は、正ラッチ信号のレベルを０または１に判定し、１ビットの二値の判定値を生成する。
判定回路５２は、たとえば正ラッチ信号のレベルについて複数回判定し、値１および値０のうちで判定数が多い方の値を、判定値としてデータレジスタ５３へ出力する。
【００５７】
図８は、図２のデータレジスタ５３、排他論理和モジュール５４、および排他論理和レジスタ５５の一例を示すブロック図である。
【００５８】
データレジスタ５３は、判定回路５２とイネーブル回路５９とに接続される。
データレジスタ５３は、複数のＤフリップフロップで構成されるレジスタである。図８の例では、データレジスタ５３は、番号０〜１６の１７個のＤフリップフロップ５３（１）〜５３（１７）により構成されている。
なお、データレジスタ５３を構成する複数のＤフリップフロップ５３（１）〜５３（１７）は、スキュー計測回路５１がＤＬＬ回路４３に設定する複数の遅延量と同数であればよい。
そして、データレジスタ５３は、判定回路５２が遅延量毎に判定した複数の判定値を記憶する。
また、データレジスタ５３は、複数の判定値を、スキュー計測回路５１が設定する複数の遅延量の大きさの順番に並べて記憶する。
【００５９】
排他論理和モジュール５４は、データレジスタ５３に接続される。
排他論理和モジュール５４は、複数の二入力排他論理和回路５４（１）〜５４（１６）を有する。図８の例では、排他論理和モジュール５４は、１６個の二入力排他論理和回路５４（１）〜５４（１６）を有する。
なお、排他論理和モジュール５４を構成する複数の二入力排他論理和回路５４（１）〜５４（１６）は、データレジスタ５３のビット数より１つ少ない個数であればよい。
そして、各二入力排他論理和回路５４（１）〜５４（１６）には、データレジスタ５３において隣り合う２ビットの判定値が入力される。
各二入力排他論理和回路５４（１）〜５４（１６）は、排他論理和の値を演算し、排他論理和レジスタ５５へ出力する。
【００６０】
排他論理和レジスタ５５は、排他論理和モジュール５４と、多入力論理和回路５６と、ＣＰＵ６２に接続される。
排他論理和レジスタ５５は、複数のＤフリップフロップで構成されるレジスタである。
図８の例では、排他論理和レジスタ５５は、番号０〜１５の１６個のＤフリップフロップで構成される１６ビッドのレジスタである。
なお、排他論理和レジスタ５５を構成する複数のＤフリップフロップ５３（１）〜５３（１７）は、排他論理和モジュール５４を構成する複数の二入力排他論理和回路５４と同数であればよい。
そして、図８に示すように、排他論理和レジスタ５５は、データレジスタ５３の２つの判定値ｒｅｇ［ｉ］とｒｅｇ［ｉ＋１］の排他論理和の値をｅｘｏｒ＿ｒｅｇ［ｉ］のＤフリップフロップに記憶する。
また、排他論理和レジスタ５５は、複数の排他論理和の値を、スキュー計測回路５１が設定する複数の遅延量の大きさにしたがった順番に並べて記憶する。
【００６１】
図９は、図２の排他論理和レジスタ５５、多入力論理和回路５６およびエラーレジスタ５７の一例を示すブロック図である。
【００６２】
多入力論理和回路５６は、排他論理和レジスタ５５と、エラーレジスタ５７とに接続される。
多入力論理和回路５６には、排他論理和レジスタ５５において連続して並ぶ複数のビットの値が入力される。
図９の例では、多入力論理和回路５６には、排他論理和レジスタ５５のｅｘｏｒ＿ｒｅｇ［６］からｅｘｏｒ＿ｒｅｇ［９］までの第６〜９の４ビットの排他論理和の値が入力される。
ｅｘｏｒ＿ｒｅｇ［６］は、９０度を基準として−２２．５０°〜−１１．２５°の範囲内でのデータのトグル情報を有する。
ｅｘｏｒ＿ｒｅｇ［７］は、９０度を基準として−１１．２５°〜０°の範囲内でのデータのトグル情報を有する。
ｅｘｏｒ＿ｒｅｇ［８］は、９０度を基準として０°〜１１．２５°の範囲内でのデータのトグル情報を有する。
ｅｘｏｒ＿ｒｅｇ［９］は、９０度を基準として１１．２５°〜２２．５０°の範囲内でのデータのトグル情報を有する。
これにより、多入力論理和回路５６は、外クロック信号の位相において９０度の位相遅れを基準とした±２２．５度の範囲でのデータのトグル情報が入力される。
そして、多入力論理和回路５６は、この位相遅延量の範囲内でデータがトグルして、入力される複数の排他論理和の値に値１が含まれる場合、値１をエラーレジスタ５７へ出力する。
値１が含まれない場合、多入力論理和回路５６は、値０をエラーレジスタ５７へ出力する。
【００６３】
エラーレジスタ５７は、多入力論理和回路５６と、ＣＰＵ６２とに接続される。
エラーレジスタ５７は、１ビットのレジスタである。
そして、エラーレジスタ５７は、多入力論理和回路５６から入力される多入力論理和の値を記憶する。
【００６４】
図２のタイミング制御回路５８は、ＣＰＵ６２、遅延量セレクタ６４、リセットセレクタ６５、およびイネーブル回路５９に接続される。
【００６５】
タイミング制御回路５８は、ＣＰＵ６２からテストスタート信号が入力されると、スキュー計測のためのタイミング制御を実行する。
スキュー計測のためのタイミング制御において、タイミング制御回路５８は、図４の複数の遅延設定値を、上から順番に１つずつ遅延量セレクタ６４へ出力する。
また、タイミング制御回路５８は、各遅延設定値を遅延量セレクタ６４へ出力している期間中に、リセットセレクタ６５へリセット信号を出力し、さらにイネーブル回路５９へイネーブル信号の出力を指示する。
イネーブル回路５９は、タイミング制御回路５８から出力を指示されると、イネーブル信号をデータレジスタ５３へ出力する。
データレジスタ５３は、イネーブル信号が入力されると、そのタイミングに判定回路５２から入力されている判定値を取り込んで記憶する。
また、タイミング制御回路５８は、図４のすべての遅延設定値について、上述したタイミング制御を実行し終えると、ＣＰＵ６２へテスト終了信号を出力する。
【００６６】
ＣＰＵ６２は、遅延量設定レジスタ６３、遅延量セレクタ６４、リセットセレクタ６５、タイミング制御回路５８、排他論理和レジスタ５５、エラーレジスタ５７に接続される。
ＣＰＵ６２は、第２集積回路３に電源が供給されると、所定のプログラムを実行する。これにより、ＣＰＵ６２には制御部６６が実現される。
【００６７】
そして、制御部６６は、外シリアルデータ信号と外クロック信号とのスキューを調整するための所定のテスト処理を実行した後、調整したスキューの下で実際の外シリアルデータ信号をラッチさせるための設定処理を実行する。
【００６８】
スキューを調整するための所定のテスト処理では、制御部６６は、タイミング制御回路５８を選択させるモード選択信号Ｓ６２を、遅延量セレクタ６４およびリセットセレクタ６５へ出力する。
また、制御部６６は、タイミング制御回路５８へテストスタート信号を出力する。
これにより、タイミング制御回路５８は、遅延設定値およびリセット信号をテストのために出力する。
また、遅延量セレクタ６４およびリセットセレクタ６５は、タイミング制御回路５８の遅延設定値およびリセット信号を選択し、ＤＬＬ回路４３へ出力する。
また、タイミング制御回路５８からテスト終了信号が入力されると、制御部６６は、排他論理和レジスタ５５およびエラーレジスタ５７からテスト結果を示すデータを読み込み、実動作時に使用する遅延量を取得する。
【００６９】
実際の外シリアルデータ信号をラッチさせるための設定処理において、制御部６６は、取得した遅延量を遅延量設定レジスタ６３に設定する。
また、制御部６６は、ＣＰＵ６２を選択させるモード選択信号Ｓ６２を、遅延量セレクタ６４およびリセットセレクタ６５へ出力する。
これにより、遅延量セレクタ６４は、遅延量設定レジスタ６３に設定された遅延量データを選択し、ＤＬＬ回路４３へ出力する。
また、リセットセレクタ６５は、ＣＰＵ６２から入力されるリセット信号をＤＬＬ回路４３へ出力する。
そして、ＤＬＬ回路４３は、スキュー調整された遅延設定値により、外クロック信号を遅延させて内クロック信号を生成する。
【００７０】
［シリアル通信システム１の動作］
図１０は、図１のシリアル通信システム１の動作の一例を示すシーケンスチャートである。
図１０には、パラレルシリアル変換装置としての第１集積回路２の処理と、シリアルパラレル変換装置としての第２集積回路３の処理と、これらの集積回路２、３の間でのシリアル通信の内容とを図示している。
【００７１】
図１０のシーケンスチャートは、たとえば図１のシリアル通信システム１に電源が投入された場合に実行される。また、図１０のシーケンスチャートは、シリアル通信システム１がリセットにより再起動された場合に実行される。
【００７２】
図１０のシーケンスにおいて、パラレルシリアル変換装置としての第１集積回路２は、スキュー調整のために、一対の差動シリアルデータ信号および一対の差動クロック信号の出力を開始する（ステップＳ１）。
このスキュー調整のために第１集積回路２が出力する一対の差動シリアルデータ信号には、データが重畳されていない。第１集積回路２は、たとえばテスト用のデータ列「０１０１０１．．」を一対の差動シリアルデータ信号に重畳して出力する。
テスト用のデータ列「０１０１０１．．」を一対の差動シリアルデータ信号に重畳した場合、一対の差動シリアルデータ信号は、一対の差動クロック信号の半周期毎にハイレベルとローレベルとの間で切り替わる。
【００７３】
また、図１０のシーケンスにおいて、シリアルパラレル変換装置としての第２集積回路３は、スキュー調整のために、一対の差動シリアルデータ信号および一対の差動クロック信号の受信を開始する。
そして、第２集積回路３は、後述する図１１に示すように、スキュー検出および調整処理を実行する（ステップＳ２）。
【００７４】
また、第２集積回路３は、このスキュー検出および調整処理を正常に終了すると、遅延量設定レジスタ６３にスキュー調整を加味した遅延設定値を記憶する（ステップＳ３）。
遅延量設定レジスタ６３には、内クロック信号の位相が外シリアルデータ信号に対して９０度ずれる遅延設定値が記憶される。
これにより、差動シリアルデータ信号（外シリアルデータ信号）に実際の通信データが重畳される実動作時には、ＤＬＬ回路４３は、外シリアルデータ信号に対して位相が９０度ずれた内クロック信号を生成する。
【００７５】
また、スキュー検出および調整処理を終了すると、第２集積回路３は、スキュー調整が正常に終了できたか否かを示すテスト結果を第１集積回路２へ通知する（ステップＳ４）。
なお、このテスト結果通知は、たとえばシリアルデータとして第２集積回路３から第１集積回路２へ通信されてもよい。
【００７６】
第２集積回路３からテスト結果通知を受信すると、第１集積回路２は、テスト用の一対の差動シリアルデータ信号および一対の差動クロック信号の出力を停止する。
また、第１集積回路２は、第２集積回路３から通知されたテスト結果が良好であるか否かを判断する（ステップＳ５）。
テスト結果が良好である場合、第１集積回路２は、シリアルデータ通信の実動作を開始する（ステップＳ６）。
【００７７】
シリアルデータ通信の実動作において、第１集積回路２は、たとえば外部からシリアル通信するデータを受信したり、内部においてシリアル通信するデータが発生すると、一対の差動シリアルデータ信号にこれらのデータを重畳する（ステップＳ７）。
そして、第１集積回路２は、データを重畳した一対の差動シリアルデータ信号と、これに同期した一対の差動クロック信号とを、第２集積回路３へ出力する（ステップＳ８）。
【００７８】
第２集積回路３は、一対の差動シリアルデータ信号と、一対の差動クロック信号とを受信する。
データコンパレータ４１は、一対の差動シリアルデータ信号から外シリアルデータ信号を生成し、正ラッチ回路４５および負ラッチ回路４４へ出力する。
クロックコンパレータ４２は、一対の差動クロック信号から外クロック信号を生成する。
ＤＬＬ回路４３は、遅延量設定レジスタ６３に設定された遅延設定値に基づいて、外クロック信号を遅延させた内クロック信号を生成し、正ラッチ回路４５および負ラッチ回路４４へ出力する。
正ラッチ回路４５および負ラッチ回路４４は、内クロック信号が変化する所定のタイミングで、外シリアルデータ信号をラッチする（ステップＳ９）。
そして、この実動作時の内クロック信号の位相は、外シリアルデータ信号に対して９０度ずれている。
そのため、正ラッチ回路４５および負ラッチ回路４４は、有効期間の中央において外シリアルデータ信号をラッチし、外シリアルデータ信号に重畳された正しいデータをラッチできる。
正ラッチ回路４５および負ラッチ回路４４は、ラッチ信号をデマルチプレクサ４７へ出力する。
デマルチプレクサ４７は、正ラッチ回路４５のラッチ信号および負ラッチ回路４４のラッチ信号から外シリアルデータ信号に重畳されていた複数のデータを生成し、内部信号処理回路４８へ出力する。
これにより、第２集積回路３の内部信号処理回路４８は、第１集積回路２が第２集積回路３へシリアル通信した正しいデータに基づいて動作する。
【００７９】
これに対して、第２集積回路３から通知されたテスト結果が良好でない場合、第１集積回路２は、シリアルデータ通信の実動作を停止する（ステップＳ１０）。
【００８０】
［スキュー調整処理および品質判定処理］
次に、図１０中のステップＳ２のスキュー検出および調整処理について詳しく説明する。
図１１は、図１０中のステップＳ２における第２集積回路３のスキュー検出および調整処理のフローチャートである。
【００８１】
スキュー調整処理において、第２集積回路３に一対の差動シリアルデータ信号および一対の差動クロック信号が入力される（ステップＳ２１）と、第２集積回路３の制御部６６は、タイミング制御回路５８へテストスタート信号を出力する（ステップＳ２２）。
テストスタート信号が入力されると、タイミング制御回路５８は、スキュー計測処理を開始する。
【００８２】
タイミング制御回路５８は、制御変数ｉに最初の遅延設定値「０」を設定し（ステップＳ２３）、制御変数ｉと同じ値の遅延設定値「０」を遅延量セレクタ６４へ出力する（ステップＳ２４）。
遅延量セレクタ６４は、タイミング制御回路５８から入力される遅延設定値「０」をＤＬＬ回路４３へ出力する。また、タイミング制御回路５８は、リセット信号を出力する。
これにより、ＤＬＬ回路４３は、遅延設定値「０」に対応する遅延量で外クロック信号を遅延させ、内クロック信号を生成する。
遅延設定値の値が「０」である場合、ＤＬＬ回路４３は、外クロック信号を複数の遅延回路７１により遅延していない内クロック信号を出力する。
【００８３】
また、正ラッチ回路４５は、内クロック信号の立ち上がりタイミングにおいて外シリアルデータ信号をラッチし、ラッチした信号レベルのラッチ信号を出力する。
判定回路５２は、ジッタ等の影響を排除するために、正ラッチ回路４５のラッチ信号のレベルを複数回判定し、値１と値０とで多い方の値を、１ビットの二値の判定値としてデータレジスタ５３へ出力する。
判定回路５２は、例えば１０回計測して０および１のうちで判定回数が多い方の値を採用する。
このような判定回路５２は、例えば各計測ごとにカウンタで０の発生回数と１の発生回数とを積算し、多い方の値をデータレジスタ５３へ出力するようにすればよい。
【００８４】
遅延設定値「０」の設定の下でＤＬＬ回路４３および正ラッチ回路４５が複数回動作し終える所定のタイミングになると、タイミング制御回路５８は、イネーブル回路５９にイネーブル信号を出力させる。
データレジスタ５３は、イネーブル信号が入力されたタイミングにおいて判定回路５２が出力している判定値を取り込んで記憶する。
データレジスタ５３は、取り込んだ判定値を第ｉビットに記憶する（ステップＳ２５）。
このタイミングでは制御変数ｉは「０」なので、データレジスタ５３は、取り込んだ判定値を、第０ビットに記憶する。
【００８５】
イネーブル回路５９にイネーブル信号を出力させた後の所定のタイミングにおいて、タイミング制御回路５８は、制御変数ｉが遅延設定値の最大値となったか否かを判断する（ステップＳ２６）。図４の場合、遅延設定値の最大値は「１６」である。
制御変数ｉが遅延設定値の最大値となっていない場合、タイミング制御回路５８は、制御変数ｉに値１を加算する（ステップＳ２７）。
また、タイミング制御回路５８は、制御変数ｉと同じ値の遅延設定値「ｉ」を遅延量セレクタ６４へ出力し、新たな遅延設定値の下での判定値をデータレジスタ５３に記憶させる（ステップＳ２４〜Ｓ２５）。
【００８６】
たとえば値１の加算処理により制御変数ｉが「１」となる場合、タイミング制御回路５８は、制御変数ｉに値１を加算する。また、タイミング制御回路５８は、制御変数１と同じ値の遅延設定値「１」を遅延量セレクタ６４へ出力する。
これにより、ＤＬＬ回路４３が出力する内クロック信号は、図４に示すように１１．２５度の位相遅延量で遅延されたものとなる。
また、正ラッチ回路４５は、この１１．２５度で遅延された内クロック信号の立ち上がりエッジのタイミングで外シリアルデータ信号をラッチする。
この１１．２５度の遅延時間の間で、外シリアルデータ信号の信号レベルが変化している場合、正ラッチ回路４５の出力レベルおよび判定回路５２の判定値が変化する。
よって、データレジスタ５３の第１ビットに取り込まれる判定値の値も変化する。
【００８７】
タイミング制御回路５８は、制御変数ｉが遅延設定値の最大値となるまで、以上の検出値の取得処理を繰り返す（ステップＳ２４〜Ｓ２７）。
そして、制御変数ｉが遅延設定値の最大値になると、データレジスタ５３の第０ビットから第ｉ（たとえば１６）ビットまでに、図４の複数の遅延量での複数の検出値が記憶される。
また、図８に示すように、排他論理和モジュール５４は、データレジスタ５３の複数の検出値について、２ビット毎の排他論理和を演算し、演算結果を排他論理和レジスタ５５に出力する。排他論理和レジスタ５５は、この２ビット毎の排他論理和の値を記憶する。
また、図９に示すように、多入力論理和回路５６は、排他論理和レジスタ５５の第６ビットから第９ビットの４ビットの論理和を演算し、エラーレジスタ５７へ出力する。エラーレジスタ５７は、４ビットの論理和を記憶する。
【００８８】
このように排他論理和レジスタ５５およびエラーレジスタ５７に、新たに検出した検出値に基づく値が記憶された状態において、タイミング制御回路５８は、ＣＰＵ６２へテスト終了信号を出力する（ステップＳ２８）。
これにより、スキュー計測回路５１によるハードウェア処理が終了し、制御部６６によるソフトウェア処理が開始される。
【００８９】
タイミング制御回路５８からＣＰＵ６２へテスト終了信号が入力されると、制御部６６は、検出した値に基づいて、実動作時にＤＬＬ回路４３に設定する遅延量の取得処理を開始する。
制御部６６は、まず、排他論理和レジスタ５５の値を読み込む（ステップＳ２９）。そして、制御部６６は、排他論理和レジスタ５５の値に含まれる値１のビットの個数を判断する（ステップＳ３０、Ｓ３２、Ｓ３４）。
【００９０】
そして、排他論理和レジスタ５５のすべてのビットの値が０である場合、すなわち値１のビットが含まれない場合、制御部６６は、ステップＳ３０においてｙｅｓと判断する。
制御部６６は、外クロック信号の位相において９０度に相当する遅延量を取得し、遅延量設定レジスタ６３に設定する（ステップＳ３１）。
図４で言えば、制御部６６は、遅延設定値「８」を取得し、遅延量設定レジスタ６３に設定する。
これは後述する図１２に示すように、計測した位相範囲１８０度のなかにデータのトグルがない場合であり、このような場合にはＤＬＬ回路４３の位相遅延量を通常の９０度としても問題が生じないからである。前後９０度分のマージンが確保されている。
【００９１】
また、排他論理和レジスタ５５に値が１となるビットが２個ある場合、制御部６６は、ステップＳ３２においてｙｅｓと判断する。
制御部６６は、２つのビットの中央のビットの遅延量を取得し、遅延量設定レジスタ６３に設定する（ステップＳ３３）。
たとえば２個のビットが第ａ番目と第ｂ番目のビットである場合、制御部６６は、（ａ＋ｂ）／２の位置のビットの遅延量を取得し、遅延量設定レジスタ６３に設定する。
これは後述する図１４に示すように、２箇所のエッジの中心位置でデータをラッチすると、前後のマージンを最も大きく確保できるからである。
【００９２】
なお、図１４および図１５の例のように、２つのビットが０と１５とであり、取得した値が７．５（＝（０＋１５）／２）のように端数が生じる場合には、制御部６６は、整数値に切り上げた値（この例では８）を取得する。
これは、ｅｘｏｒ＿ｒｅｇ［１５：０］の［ｉ］はｄａｔａ＿ｒｅｇ［１６：０］の［ｉ］ビットと［ｉ＋１］ビットとの排他論理和の値を有するため、元々切り上げる方向にオフセットが存在するからである。
【００９３】
また、排他論理和レジスタ５５に値が１となるビットが１個ある場合、制御部６６は、ステップＳ３４においてｙｅｓと判断する。
制御部６６は、外クロック信号の位相においてそのビットと９０度ずれた位置のビットの遅延量を取得し、遅延量設定レジスタ６３に設定する。
具体的には、制御部６６は、値が１となる１つのビット［ｃ］が７より小さく、ステップＳ３５でｙｅｓと判断する場合、遅延量設定レジスタ６３に「ｃ＋８」をセットする（ステップＳ３６）。
これは、後述する図１６に示すように、半周期分の検出をした場合に検出範囲の前半にデータの変化点が存在する場合には、データがクロックに対して遅れていると想定できるからである。
【００９４】
一方、［ｃ］が８以上であり、ステップＳ３５でｎｏと判断する場合、制御部６６は、遅延量設定レジスタ６３に「ｃ−８」をセットする（ステップＳ３７）。
これは、後述する図１８に示すように、半周期分の検出をした場合に検出範囲の後半にデータの変化点が存在する場合には、データがクロックに対して進んでいると想定できるからである。
【００９５】
また、排他論理和レジスタ５５に値が１となるビットが０から２個含まれていない場合、制御部６６は、ステップＳ３４においてｎｏと判断する。
制御部６６は、測定エラーと判断し、新たな遅延量を遅延量設定レジスタ６３に設定しない（ステップＳ３８）。
たとえば、半周期分の検出をした場合に排他論理和レジスタ５５に値が１となるビットが３箇以上存在する場合は、正常にラッチができている状態ではない。
この場合、制御部６６は、たとえばＣＰＵ６２内の図示しないスキューチェックフラグをアクティブに設定する。
このスキューチェックフラグがアクティブに設定されているか否かを確認することで、ＣＰＵ６２は測定後の任意のタイミングにおいて測定ＮＧであったことを認識できる。
また、制御部６６は、再測定などの処理を実行してもよい。
【００９６】
以上のスキュー調整処理（ステップＳ２９〜Ｓ３８）を終えると、制御部６６は、次に当該第２集積回路３および第１集積回路２の品質を判定する。
制御部６６は、エラーレジスタ５７の値を読み込み、エラーレジスタ５７の値が０または１であるか否かを判断する（ステップＳ３９）。
エラーレジスタ５７には、ＤＬＬ回路４３が出力する内クロック信号の特定の位相範囲（９０度±α）に含まれる複数の検出値において検出値の値が０と１との間で変化する場合に、値１が記憶される。
これ以外の場合には、エラーレジスタ５７には、値０が記憶される。
【００９７】
そして、エラーレジスタ５７の値が０である場合、制御部６６は、第２集積回路３および第１集積回路２が良品であると判断し、その旨を第１集積回路２へ通知する（ステップＳ４０）。
【００９８】
また、エラーレジスタ５７の値が１である場合、制御部６６は、第２集積回路３および第１集積回路２によるチップセットに不具合の可能性があると判断し、品質が低いことを第１集積回路２へ通知する（ステップＳ４１）。
このように、第２集積回路３は、第１集積回路２と第２集積回路３からなるチップセットの品質を判断する。
【００９９】
［スキュー調整の具体例１：排他論理和レジスタ５５のすべてのビットの値が０となる場合］
次に、値１となるビットの個数毎の具体例を説明する。
図１２および図１３に、排他論理和レジスタ５５のすべてのビットの値が０となる場合の例を示す。
図１２（Ａ）は、半周期毎にレベルが変化する外シリアルデータ信号の波形である。
図１２（Ｂ）は、ＤＬＬ回路４３に設定された遅延設定値の値である。
図１２（Ｃ）の点線の矢印は、テスト時の複数の内クロック信号の立ち上がりエッジのタイミングである。
【０１００】
図１２では、テスト時の複数の内クロック信号の立ち上がりエッジのタイミングがすべて、外シリアルデータ信号がハイレベルとなる半周期の期間内に含まれる。
この場合、図１３（Ａ）に示すように、データレジスタ５３の１７ビットの値は、すべて「１」となる。
また、排他論理和レジスタ５５のすべてのビットの値は、図１３（Ｂ）に示すように０になる。
【０１０１】
よって、制御部６６は、図１１のステップＳ３０においてｙｅｓと判断し、外クロック信号の位相において９０度に相当する遅延量を取得し、遅延量設定レジスタ６３に設定する（ステップＳ３１）。
これにより、図１２（Ｃ）の実線の矢印に示すように、実動作時には、ＤＬＬ回路４３が出力する内クロック信号の立ち上がりエッジは、図１２（Ａ）の外シリアルデータ信号の位相において９０度のタイミングになる。
【０１０２】
［スキュー調整の具体例２：排他論理和レジスタ５５に値１のビットが２つ含まれる場合］
図１４および図１５に、排他論理和レジスタ５５に値１のビットが２つ含まれる場合の例を示す。図１４の記載内容は図１２に対応し、図１５の記載内容は図１３に対応する。
図１４では、遅延設定値０と１との間のタイミングで外シリアルデータ信号がローレベルからハイレベルへ変化し、かつ、遅延設定値１５と１６との間のタイミングで外シリアルデータ信号がハイレベルからローレベルへ変化している。
この場合、図１５（Ａ）に示すように、データレジスタ５３の第０ビットと第１６ビットが「０」となり、それ以外のビットはすべて「１」となる。
また、図１５（Ｂ）に示すように、排他論理和レジスタ５５の第０ビットの値と第１５ビットの値とが１になる。
【０１０３】
よって、制御部６６は、図１１のステップＳ３２においてｙｅｓと判断し、（０＋１５）／２の位置となる第８ビットの遅延量を取得し、遅延量設定レジスタ６３に設定する（ステップＳ３３）。
なお、演算結果に小数点以下の端数が出る場合には、制御部６６は、切り上げた値のビットの遅延量を取得する。
これにより、図１２（Ｃ）の実線の矢印に示すように、実動作時には、ＤＬＬ回路４３が出力する内クロック信号の立ち上がりエッジは、図１２（Ａ）の外シリアルデータ信号の位相において９０度のタイミングになる。
【０１０４】
［スキュー調整の具体例３：排他論理和レジスタ５５の第７ビット以下に値１のビットが１つ含まれる場合］
図１６および図１７に、排他論理和レジスタ５５の第７ビット以下に値１のビットが１つ含まれる場合の例を示す。図１６の記載内容は図１２に対応し、図１７の記載内容は図１３に対応する。
図１６では、遅延設定値１と２との間のタイミングで外シリアルデータ信号がローレベルからハイレベルへ変化する
この場合、図１７（Ａ）に示すように、データレジスタ５３の第０ビットと第１ビットが「０」となり、それ以外のビットはすべて「１」となる。
また、図１７（Ｂ）に示すように、排他論理和レジスタ５５の第１ビットの値が１になる。
【０１０５】
よって、制御部６６は、図１１のステップＳ３４においてｙｅｓと判断し、さらにステップＳ３５においてｙｅｓと判断し、第（ｃ＋８）ビットの遅延量を取得し、遅延量設定レジスタ６３に設定する（ステップＳ３６）。
ここで、ｃは、値が１になった排他論理和レジスタ５５のビットの番号である。
これにより、図１６（Ｃ）の実線の矢印に示すように、実動作時には、ＤＬＬ回路４３が出力する内クロック信号の立ち上がりエッジは、図１６（Ａ）の外シリアルデータ信号の位相において９０度のタイミングになる。
【０１０６】
［スキュー調整の具体例４：排他論理和レジスタ５５の第８ビット以上に値１のビットが１つ含まれる場合］
図１８および図１９に、排他論理和レジスタ５５の第８ビット以上に値１のビットが１つ含まれる場合の例を示す。図１８の記載内容は図１２に対応し、図１９の記載内容は図１３に対応する。
図１８では、遅延設定値１４と１５との間のタイミングで外シリアルデータ信号がハイレベルからローレベルへ変化する。
この場合、図１９（Ａ）に示すように、データレジスタ５３の第１５ビットと第１６ビットが「０」となり、それ以外のビットはすべて「１」となる。
また、図１９（Ｂ）に示すように、排他論理和レジスタ５５の第１４ビットの値が１になる。
【０１０７】
よって、制御部６６は、図１１のステップＳ３４においてｙｅｓと判断し、さらにステップＳ３５においてｎｏと判断し、第（ｃ−８）ビットの遅延量を取得し、遅延量設定レジスタ６３に設定する（ステップＳ３７）。
ここで、ｃは、値が１になった排他論理和レジスタ５５のビットの番号である。
これにより、図１８（Ｃ）の実線の矢印に示すように、実動作時には、ＤＬＬ回路４３が出力する内クロック信号の立ち上がりエッジは、図１８（Ａ）の外シリアルデータ信号の位相において９０度のタイミングになる。
【０１０８】
以上のように、第１の実施形態では、第１の実施形態の第２集積回路３は、差動シリアルデータ信号と差動クロック信号とのスキューが生じていても、外シリアルデータ信号の有効期間の中央において外シリアルデータ信号をラッチできる。
また、第２集積回路３は、入力される差動シリアルデータ信号が劣化していても、データコンパレータ４１により差分を増幅して、外シリアルデータ信号の有効期間の中央において外シリアルデータ信号をラッチできる。
【０１０９】
また、第２集積回路３は、第１集積回路２とともにプリント基板４に実装された実使用環境において、内蔵するタイミング制御回路５８が出力する複数の遅延量に基づいてスキューを検出し、有効期間（ｗｉｎｄｏｗ）の中央においてラッチするように調整する。
データおよびクロックが差動信号として伝送されていることと相俟って、第２集積回路３は、データ信号のアイパターンの中心点でのハードディシジョンが可能となる。
よって、第１の実施形態の第２集積回路３は、入力される信号がこのように劣化していても、外シリアルデータ信号に重畳されたシンボル値を安定して検出できる。
【０１１０】
ところで、第１の実施形態とは別に、スキューおよび有効期間を検出する方法には、たとえば第２集積回路３を実装したプリント基板４にタイミングジェネレータ装置などの機械を接続して検出する方法がある。
この場合、タイミングジェネレータ装置を接続するソケットの不具合などに起因して、信号の品質が実使用時に比べて劣化する。なお、ソケットの不具合に起因した信号品質劣化としては、たとえばデューティの変動、ジッタの増加などがある。
そして、デューティが変動したり、またはジッタが増加したりすると、検出される有効期間は、実使用時より短くなる。また、検出されるスキューも、実使用時とは異なる。
これに対して、第１の実施形態のスキューおよび有効期間の検出方法では、このような信号品質の劣化の影響を受けずに、実使用時のスキューおよび有効期間を正確に検出することができる。
【０１１１】
また、スキューおよび有効期間の検出方法には、さらに他にも、第２集積回路３をテスタ装置に接続し、テスタ装置のＡＴＥ（Automated Test Equipment）から第２集積回路３へ位相をずらしながらデータとクロックとを入力する方法がある。
しかしながら、このようにテスタ装置のＡＴＥを用いてパス領域を測定する場合、コストアップ、テストのためのセットアップに時間を要する等のデメリットがある。
これに対して、第１の実施形態のスキューおよび有効期間の検出方法では、外部のテスト装置を用いずに測定できるので、コストアップ、テストのためのセットアップ時間を最小限に抑えることができる。
【０１１２】
また、量産されたチップセットの品質を判断する場合、データとクロックとの位相関係が固定された一つの条件下でテストするのが一般的である。
この場合、例えば位相関係がマージナルなケースにおいてテスト条件とセットシステム間での温度や電圧の微妙な差により、テスト漏れが発生する可能性がある。
そして、良品ではないチップセットが出荷される可能性がある。
これに対して、第１の実施形態のスキューおよび有効期間の検出方法は、量産されたチップセットのテストにおいても、すべてのチップセットについて品質を判断することが可能である。
このように第１の実施形態のシリアル通信システム１は、高速シリアルインタフェースについて、［Ａ］データを安定して検出できるスキュー補正が可能である。
また、シリアル通信システム１は、［Ｂ］スキュー量の評価を簡便かつ正確に行うことができる。
また、シリアル通信システム１は、［Ｃ］ある程度のマージンを持って良品選別を行う機能とを備える。
【０１１３】
また、第１の実施形態では、たとえばプリント基板４の配線３１における信号遅延、またはソケットの接触不良などがあったとしても、その影響を打ち消すようにスキュー調整および評価が可能である。
そのため、第１の実施形態のシリアル通信システム１のチップセットでは、サンプルの評価を正確かつ短時間に実施できる。
また、第１の実施形態のシリアル通信システム１のチップセットでは、実セットシステムにおけるスキューの評価が個別に可能であるため、良品のチップセットのみを出荷することが可能となる。
また、第１の実施形態のシリアル通信システム１のチップセットでは、データのトグル位置が想定される範囲内にない場合にエラーフラグが立つ。
そのため、データとクロックとの間のスキューマージンが厳しいサンプルについては、調整が可能である場合でも良品と判断しないようにすることができる。
その結果、複数のチップセットでの品質を、高い品質とすることができる。
また、第１の実施形態のシリアル通信システム１のチップセットでは、第２集積回路３にのみ、既存のＤＬＬ回路４３を用いたテスト機能を追加している。よって、第１の実施形態では、論理回路の追加を最小限に抑えて、テスト機能を実現できる。
また、第１の実施形態では、トグル位置の判断に複数回の測定結果を用いる。よって、第１の実施形態では、ジッタ等の影響を排除して、より正確な検出値を取り込んでスキュー調整および良品判定ができる。
【０１１４】
＜第２の実施形態＞
［シリアル通信システム１の構成］
第２の実施形態のシリアル通信システム１では、第１集積回路２と第２集積回路３とは、複数対の差動シリアルデータ信号により通信データを送受する。
【０１１５】
［第２集積回路３（シリアルパラレル変換装置）の構成］
図２０は、第２の実施形態の第２集積回路３のブロック図である。
図２０の第２集積回路３は、第１集積回路２から第２集積回路３へ送信される差動シリアルデータ信号がｎビット（ｎは２以上の自然数）である場合の例である。
第２集積回路３は、ｎ対のデータ入力端子２４−１〜２４−ｎと、一対のクロック入力端子２３ｐ，２３ｍとを有する。
ｎ対のデータ入力端子２４−１〜２４−ｎには、図示しない第１集積回路２のｎ対のデータ出力端子１４から出力されたｎ対の差動シリアルデータ信号が入力される。
【０１１６】
また、第２集積回路３は、この他にも、各対の差動シリアルデータ信号毎の回路として、複数のデータコンパレータ４１−１〜４１−ｎ、複数の負ラッチ回路４４−１〜４４−ｎ、複数の正ラッチ回路４５−１〜４５−ｎを有する。
これにより、第２集積回路３は、ｎ対のデータ入力端子２４−１〜２４−ｎに入力された差動シリアルデータ信号を、差動シリアルデータ信号毎にデータコンパレータ４１−１〜４１−ｎにより外シリアルデータ信号へ変換する。
また、第２集積回路３は、ｎ個の外シリアルデータ信号を、外シリアルデータ信号毎に負ラッチ回路４４−１〜４４−ｎおよび正ラッチ回路４５−１〜４５−ｎによりラッチする。
また、第２集積回路３は、ｎ個の外シリアルデータ信号の２×ｎ個のラッチ信号をデマルチプレクサ４７へ入力する。
【０１１７】
さらに、第２集積回路３のスキュー計測回路５１は、各対の差動シリアルデータ信号毎の回路を有する。
具体的には、スキュー計測回路５１は、複数の判定回路５２−１〜５２−ｎ、複数のデータレジスタ５３−１〜５３−ｎ、複数の排他論理和モジュール５４−１〜５４−ｎを有する。
また、スキュー計測回路５１は、複数の排他論理和レジスタ５５−１〜５５−ｎ、複数の多入力論理和回路５６−１〜５６−ｎ、複数のエラーレジスタ５７−１〜５７−ｎを有する。
また、ＣＰＵ６２には、遅延量設定レジスタ６３の他に、複数のチャネル別レジスタ８１−１〜８１−ｎを有する。
これにより、スキュー計測回路５１は、複数の正ラッチ回路４５−１〜４５−ｎのラッチ信号を、正ラッチ回路４５毎に判定し、各対の差動シリアルデータ信号毎の複数の判定値をデータレジスタ５３−１〜５３−ｎに記憶できる。
また、複数の排他論理和レジスタ５５−１〜５５−ｎおよび複数のエラーレジスタ５７−１〜５７−ｎは、各対の差動シリアルデータ信号毎の値を記憶できる。
【０１１８】
［シリアル通信システム１のスキュー調整処理および品質判定処理］
図２１は、第２の実施形態での第２集積回路３のスキュー検出および調整処理のフローチャートである。
【０１１９】
スキュー検出および調整処理では、第２集積回路３に、一対の差動シリアルデータ信号および一対の差動クロック信号が入力される（ステップＳ２１）。
第２集積回路３の制御部６６は、タイミング制御回路５８へテストスタート信号を出力する（ステップＳ２２）。
テストスタート信号が入力されると、タイミング制御回路５８は、スキュー計測処理を開始する。
タイミング制御回路５８は、制御変数ｉに最初の遅延設定値「０」を設定し（ステップＳ２３）、制御変数ｉと同じ値の遅延設定値「０」を遅延量セレクタ６４へ出力する（ステップＳ２４）。
これにより、ＤＬＬ回路４３は、遅延設定値「０」に対応する遅延量で外クロック信号を遅延させた内クロック信号を生成する。
複数の正ラッチ回路４５−１〜４５−ｎは、内クロック信号の立ち上がりタイミングにおいてそれぞれに入力される外シリアルデータ信号をラッチし、ラッチした信号レベルのラッチ信号を出力する。
複数の判定回路５２−１〜５２−ｎは、それぞれの正ラッチ回路４５−１〜４５−ｎのラッチ信号のレベルを複数回判定し、多い方の値をデータレジスタ５３−１〜５３−ｎへ出力する。
複数のデータレジスタ５３−１〜５３−ｎは、イネーブル回路５９からイネーブル信号が入力されると、それぞれの判定回路５２−１〜５２−ｎの判定値を取り込む。
複数のデータレジスタ５３−１〜５３−ｎは、判定値を第ｉビットに記憶する（ステップＳ２５）。
その後、所定のタイミングにおいて、タイミング制御回路５８は、制御変数ｉが遅延設定値の最大値となったか否かを判断する（ステップＳ２６）。
制御変数ｉが遅延設定値の最大値となっていない場合、タイミング制御回路５８は、制御変数ｉに値１を加算し（ステップＳ２７）、以上の処理（ステップＳ２４〜Ｓ２７）を繰り返す。
制御変数ｉが遅延設定値の最大値（ここでは１６）になると、タイミング制御回路５８は、検出値の取得処理を終了する。
これにより、複数のデータレジスタ５３−１〜５３−ｎには、複数の外シリアルデータ信号についての複数の判定値が、外シリアルデータ信号毎に記憶される。
【０１２０】
図２２は、第０チャネルから第７チャネルまでの８個のデータレジスタ５３−１〜５３−ｎに記憶される複数の判定値の一例を示す図である。
第０チャネルでは、２個のエッジが検出されている。
第１チャネルでは、１個のエッジが検出されている。
第６チャネルでは、０個のエッジが検出されている。
そして、複数のデータレジスタ５３−１〜５３−ｎに複数の検出値が記憶されると、複数の排他論理和モジュール５４−１〜５４−ｎは、データレジスタ５３−１〜５３−ｎ毎に２ビット毎の排他論理和を演算する。
排他論理和レジスタ５５−１〜５５−ｎは、データレジスタ５３−１〜５３−ｎ毎の排他論理和の値を記憶する。
また、複数の多入力論理和回路５６−１〜５６−ｎは、それぞれの排他論理和レジスタ５５−１〜５５−ｎの第６ビットから第９ビットの４ビットの論理和を演算する。
複数のエラーレジスタ５７−１〜５７−ｎは、データレジスタ５３−１〜５３−ｎ毎の論理和の値を記憶する。
これらの処理が終えた所定のタイミングで、タイミング制御回路５８は、ＣＰＵ６２へテスト終了信号を出力する（ステップＳ２８）。
【０１２１】
タイミング制御回路５８からＣＰＵ６２へテスト終了信号が入力されると、制御部６６は、検出した値に基づいて、実動作時にＤＬＬ回路４３に設定する遅延量の取得処理を開始する。
【０１２２】
制御部６６は、まず、ループ制御変数ｊに０を代入する（ステップＳ５１）。
制御部６６は、第ｊチャネルの排他論理和レジスタ５５の値を読み込み（ステップＳ２９）、第ｊチャネルの排他論理和レジスタ５５の値に含まれる値１のビットの個数を判断する（ステップＳ３０、Ｓ３２、Ｓ３４）。
そして、第ｊチャネルの排他論理和レジスタ５５のすべてのビットの値が０である場合、制御部６６は、ステップＳ３０でｙｅｓと判断する。
制御部６６は、外クロック信号の位相において９０度に相当する遅延量を取得し、第ｊチャネルのチャネル別レジスタ８１−ｊに設定する（ステップＳ３１）。
また、第ｊチャネルの排他論理和レジスタ５５に値が１となるビットが２個ある場合、制御部６６は、ステップＳ３２でｙｅｓと判断する。
制御部６６は、２つのビットの中央のビットの遅延量を取得し、第ｊチャネルのチャネル別レジスタ８１−ｊに設定する（ステップＳ３３）。
また、第ｊチャネルの排他論理和レジスタ５５に値が１となるビットが１個ある場合、制御部６６は、ステップＳ３４でｙｅｓと判断する。
制御部６６は、外クロック信号の位相においてそのビットと９０度ずれた位置のビットの遅延量を取得し、第ｊチャネルのチャネル別レジスタ８１−ｊに設定する（ステップＳ３５〜Ｓ３７）。
具体的には、値が１となる１つのビット［ｃ］が７より小さい場合は、制御部６６は、第ｊチャネルのチャネル別レジスタ８１−ｊに「ｃ＋８」をセットする（ステップＳ３６）。
一方、［ｃ］が８以上の場合は、制御部６６は、第ｊチャネルのチャネル別レジスタ８１−ｊに「ｃ−８」をセットする（ステップＳ３７）。
また、第ｊチャネルの排他論理和レジスタ５５に値が１となるビットが０から２個含まれていない場合、制御部６６は、ステップＳ３４でｎｏと判断する。
制御部６６は、測定エラーと判断し、新たな遅延量を第ｊチャネルのチャネル別レジスタ８１−ｊに設定することなく、スキュー調整処理を中断する（ステップＳ３８）。
【０１２３】
ステップＳ３１、Ｓ３３、Ｓ３６またはＳ３７において第ｊチャネルのチャネル別レジスタ８１−ｊに第ｊチャネルの値をセットした場合、制御部６６は、ループ制御変数ｊが７に達したか否かを判断する（ステップＳ５２）。
【０１２４】
ループ制御変数ｊが７に達していない場合、制御部６６は、ループ制御変数ｊに１を加算する（ステップＳ５３）。
また、制御部６６は、新たな第ｊチャネルの排他論理和レジスタ５５の値を読み込み、排他論理和レジスタ５５の値に含まれる値１のビットの個数に応じて第ｊチャネルのチャネル別レジスタ８１−ｊの値を更新する（ステップＳ２９〜Ｓ３８）。
各ループ制御において測定エラーと判断することなく、ループ制御変数ｊが７に達すると、制御部６６は、ステップＳ５２でｙｅｓと判断する。
制御部６６は、複数のチャネル別レジスタ８１−１〜８１−ｎに記憶されたチャネル毎の遅延量を読み込み、その平均値を演算する（ステップＳ５４）。
また、制御部６６は、平均値を遅延量設定レジスタ６３に記憶する。
【０１２５】
図２２の場合、制御部６６は、第０チャネルについては８ビットに対応する値８をセットし、第１チャネルについては７をセットし、第２チャネルについては８をセットし、第３チャネルについては９をセットする。
また、制御部６６は、第４チャネルについては６をセットし、第５チャネルについては６をセットし、第６チャネルについては８をセットし、第７チャネルについては７をセットする。
よって、制御部６６は、平均値として７．３７５（＝（８＋７＋８＋９＋６＋６＋８＋７）÷８）を演算し、遅延量設定値として７を取得する。
これにより、制御部６６は、システム動作時に全てのデータを総合的に見たときに最もマージンがある位置に、ＤＬＬ回路４３による遅延位相量をセットできる。
【０１２６】
以上のスキュー調整処理を終えると、制御部６６は、次に当該第２集積回路３および第１集積回路２の品質を判定する。
制御部６６は、複数のエラーレジスタ５７−１〜５７−ｎの値を読み込み、複数のエラーレジスタ５７−１〜５７−ｎのうちの１つに１が含まれるか否かを判断する（ステップＳ３９）。
そして、複数のエラーレジスタ５７−１〜５７−ｎのうちに値１が１つでも含まれる場合、制御部６６は、第２集積回路３および第１集積回路２によるチップセットに不具合がある可能性があると判断する。
制御部６６は、スキュー調整が良好に完了しなかった旨を第１集積回路２へ通知する（ステップＳ４１）。
また、複数のエラーレジスタ５７−１〜５７−ｎの値がすべて０である場合、制御部６６は、第２集積回路３および第１集積回路２が良品であると判断する。
制御部６６は、良好にスキュー調整を完了した旨を第１集積回路２へ通知する（ステップＳ４０）。
【０１２７】
以上のように、第２の実施形態の第２集積回路３は、複数の外シリアルデータ信号のそれぞれに最適な複数の遅延量を取得し、さらにその複数の遅延量の平均値を遅延量設定レジスタ６３に設定する。
よって、第２集積回路３のＤＬＬ回路４３は、実動作時には、その平均値の遅延量で遅延させた内クロック信号を生成する。
また、複数の正ラッチ回路４５−１〜４５−ｎおよび複数の負ラッチ回路４４−１〜４４−ｎは、その共通する内クロック信号のタイミングでそれぞれの外シリアルデータ信号をラッチする。
その結果、第２の実施形態では、複数のシリアルデータの全ビットの有効期間内において、データを適切にラッチすることができる。全ビットについて総合的に最適なラッチタイミングとなるように、内クロック信号の遅延量を設定できる。
例えば量産されたチップセットのテストにおいて上記処理を行って、全ビットについて最適なラッチタイミングとなる遅延量を遅延量設定レジスタ６３に記憶することで、チップセットごとに最適な遅延量を設定することができる。
また、出荷する複数のチップセットを品質の良いものに揃えることができる。
【０１２８】
このように第２の実施形態のシリアル通信システム１では、第２集積回路３において、複数のシリアルデータ信号とクロック信号とのスキューを調整する。
よって、第２の実施形態では、第２集積回路３の設計時には、複数のチャネルのデータ入力端子２４−１〜２４−ｎから初段の複数のラッチ回路４４−１〜４４−ｎ、４５−１〜４５−ｎまでの遅延値を大まかに揃えればよい。
そして、第２の実施形態では、この状態で、クロックとデータとのスキューを調整し、全ビットについて最適なラッチタイミングとなるように、内クロック信号の遅延量を設定できる。
このように第２の実施形態では、設計時の厳しいセットアップタイム、ホールドタイムのＡＣ制約条件が緩和されるので、組み込み設計が容易になる。
また、このように第２の実施形態では、データビットが複数の場合にも、最も適した位置にクロックの位相を定めることができる。
【０１２９】
以上の実施の形態は、本発明の好適な実施の形態の例であるが、本発明は、これに限定されることはなく、種々の変形または変更が可能である。
【０１３０】
たとえば上記実施形態では、ＤＬＬ回路４３の複数の遅延回路７１は、外クロック信号を１８０度遅らせるものである。また、ＤＬＬ回路４３は、内クロック信号を、１８０度を１６分割した位相遅延量毎に変化する。
この他にも例えば、ＤＬＬ回路４３の複数の遅延回路７１は、外クロック信号を３６０度遅らせるものであってもよい。
また、ＤＬＬ回路４３は、内クロック信号を、１８０度または３６０度をｐ（ｐは整数）分割した位相遅延量毎に変化させてもよい。ＤＬＬ回路４３による遅延量の分割値ｐの値を大きくすることで、より高い精度でスキューを判定できる。
【０１３１】
上記実施の形態では、第１集積回路２が、第２集積回路３に対して、テスト時の差動シリアルデータ信号および差動クロック信号を出力している。
この他にも例えば、シグナルジェネレータ装置、テスタ装置のＡＴＥなどから、第２集積回路３に対して、テスト時の差動シリアルデータ信号および差動クロック信号を出力するようにしてもよい。
【０１３２】
上記実施の形態では、テスト時に第２集積回路３に入力する外シリアルデータ信号として、０と１とを繰り返すクロック形式の外シリアルデータ信号を入力している。
この他にもたとえば、テスト時に第２集積回路３に対して、ＰＲＢＳ（Pseudo Random Bit Stream）などのクロック形式以外のパターンの外シリアルデータ信号を入力してもよい。
【０１３３】
上記実施の形態では、制御部６６は、正ラッチ回路４５の出力を判定し、その判定結果に基づいてスキューを調整している。
この他にもたとえば、制御部６６は、負ラッチ回路４４の出力を判定し、その判定結果に基づいてスキューを調整してもよい。
また、制御部６６は、正ラッチ回路４５および負ラッチ回路４４の出力を判定し、それらの判定結果に基づいてスキューを調整してもよい。
【０１３４】
上記実施の形態では、第１集積回路２および第２集積回路３が共通のプリント基板４に実装されたる半導体システムにおいて、シリアル通信システム１が実現されている。
この他にも例えば、第１集積回路２と第２集積回路３とは別々のプリント基板４に実装されてもよい。
【０１３５】
図２３は、第１集積回路２と第２集積回路３とが別々のプリント基板４に実装されているシリアル通信システム１の例である。
図２３において、第１集積回路２は、第１コネクタ７とともに第１プリント基板５に実装されている。
また、第２集積回路３は、第２コネクタ８とともに第２プリント基板６に実装されている。
そして、第１プリント基板５の第１コネクタ７と第２プリント基板６の第２コネクタ８とは、複数の信号線を有する信号ケーブル９により接続されている。
この場合、第１集積回路２は、第１プリント基板５、第１コネクタ７、信号ケーブル９、第２コネクタ８および第２プリント基板６を通じて、第２集積回路３へ差動シリアルデータ信号および差動クロック信号を送信する。
【０１３６】
なお、図２３において、第１プリント基板５の第１コネクタ７と第２プリント基板６の第２コネクタ８とは、信号ケーブル９の代わりに、コンピュータ装置の拡張基板を装着するバックプレーンバス用の基板などに接続されていてもよい。
【０１３７】
また、シリアル通信システム１のパラレルシリアル変換装置またはシリアルパラレル変換装置は、単一の集積回路に集積化されていなくてもよい。
パラレルシリアル変換装置またはシリアルパラレル変換装置は、たとえば複数のディスクリート素子を組み合わせて実現されていてもよい。
たとえばパラレルシリアル変換装置は、図２中の各ブロックを実現するディスクリート素子を組み合わせて実現してもよい。
【符号の説明】
【０１３８】
１…シリアル通信システム（集積回路システム）、２…第１集積回路（パラレルシリアル変換装置）、３…第２集積回路（集積回路、シリアルパラレル変換装置）、２３p、２３m…クロック入力端子、２４p、２４m、２４−１〜２４−ｎ…データ入力端子（シリアルデータ入力端子）、４３…ＤＬＬ回路（クロック遅延回路）、４４、４４−１〜４４−ｎ…負ラッチ回路（ラッチ回路）、４５、４５−１〜４５−ｎ…正ラッチ回路（ラッチ回路）、５２、５２−１〜５２−ｎ…判定回路（ラッチ判定回路）、５３、５３−１〜５３−ｎ…データレジスタ（記憶部）、５８…タイミング制御回路（遅延量設定回路）、６３…遅延量設定レジスタ、６６…制御部（遅延量取得部、品質判定部）
【図１】
2010263408.tif 000003
【図２】
2010263408.tif 000004
【図３】
2010263408.tif 000005
【図４】
2010263408.tif 000006
【図５】
2010263408.tif 000007
【図６】
2010263408.tif 000008
【図７】
2010263408.tif 000009
【図８】
2010263408.tif 000010
【図９】
2010263408.tif 000011
【図１０】
2010263408.tif 000012
【図１１】
2010263408.tif 000013
【図１２】
2010263408.tif 000014
【図１３】
2010263408.tif 000015
【図１４】
2010263408.tif 000016
【図１５】
2010263408.tif 000017
【図１６】
2010263408.tif 000018
【図１７】
2010263408.tif 000019
【図１８】
2010263408.tif 000020
【図１９】
2010263408.tif 000021
【図２０】
2010263408.tif 000022
【図２１】
2010263408.tif 000023
【図２２】
2010263408.tif 000024
【図２３】
2010263408.tif 000025