説明

集積回路、集積回路システム、シリアルパラレル変換装置およびスキュー調整方法

【課題】簡単な回路または簡単な処理によりスキュー調整する。
【解決手段】集積回路3は、入力された外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路43と、入力されたデータ信号を内クロック信号によりラッチするラッチ回路45と、クロック遅延回路43に対して、外クロック信号に対する内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路58と、複数の遅延量それぞれの設定の下でのラッチ回路45の出力信号を判定するラッチ判定回路52と、ラッチ判定回路52による複数の遅延量それぞれについての複数の判定値を記憶する記憶部53と、記憶部53に記憶された複数の判定値とクロック遅延回路43に設定した複数の遅延量との関係から、クロック遅延回路43による内クロック信号の遅延量を取得する遅延量取得部とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ信号とともに通信されたクロック信号を用いて当該データ信号をラッチする集積回路、集積回路システム、シリアルパラレル変換装置およびスキュー調整方法に関する。
【背景技術】
【0002】
特許文献1は、クロック信号を用いてシリアルデータ信号をラッチする集積回路を開示する。
このような集積回路では、シリアルデータ信号に対するクロック信号のタイミングがずれて、たとえばシリアルデータ信号が変化している時にラッチすると、送信されたデータを正しくラッチできない。
そのため、クロック信号を用いてシリアルデータ信号をラッチする集積回路では、シリアルデータ信号に対するクロック信号のタイミングのずれを補正するスキュー調整が必要になる。
【0003】
そして、特許文献1の集積回路は、内部で発生するクロックの位相を、DLL(Digital Locked Loop)回路を用いて変化させ、BIST(Built In Self Test)を実行する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−127460号公報
【特許文献2】特開2003−133965号公報
【特許文献3】国際公開WO2002/065690号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1のように、集積回路の内部で発生するクロック信号の位相を変化させてテストをしても、その内部で発生するクロック信号は、集積回路の外から入力されるクロック信号との間で位相の同期がとれていない。
つまり、特許文献1のテスト方法は、集積回路に入力されるシリアルデータ信号と、このシリアルデータ信号をラッチするために集積回路に入力されるクロック信号との位相を変化させてテストするものではない。
【0006】
そのため、特許文献1のテスト方法では、たとえばシリアルデータ信号およびクロック信号を出力する他の集積回路において不具合が生じてこれらの信号の間にタイミングずれが生じている場合に、当該他の集積回路の不具合に起因するスキューを調整できない。
この他にも例えば、特許文献1のテスト方法では、シリアルデータ信号およびクロック信号を送受する複数の集積回路が実装されるプリント基板に不具合が発生してこれらの信号の間にタイミングずれが生じている場合に、当該スキューを調整できない。
【0007】
このように特許文献1のテスト方法では、シリアルデータ信号およびクロック信号を送受する複数の集積回路を組み合わせた複数のチップセットから、特定の組み合わせにおいて生じる不具合を検出することができない。
よって、特許文献1のテスト方法では、良品のチップセットだけを出荷するようにすることはできない。
【0008】
これに対して、特許文献2、3は、実動作時にスキューを検出して調整する方法を開示する。
【0009】
特許文献2は、具体的には、シリアル・パラレル変換装置を開示する。
この変換装置は、PLL(Phase Locked Loop)回路のタップ出力信号から複数のストローブ信号を生成する。また、変換装置は、スキュー検出回路で検出したスキューの程度に応じてシリアル・パラレル変換に用いてるストローブ信号を選択する。
そして、変換装置は、選択したストローブ信号をクロック信号に用いてシリアルデータ信号をラッチする。
【0010】
また、特許文献3は、集積回路を開示する。
この集積回路は、2個のPLL回路もしくは2個のDLL回路によって相が互いに異なる2つのクロック信号を生成する。また、集積回路は、この2つのクロック信号によりシリアル伝送データをサンプリングする。
そして、集積回路は、サンプリングした2系列の論理値に基づいて1つの制御値を得る。
【0011】
しかしながら、このように実動作時にスキューを検出して調整する場合、スキューを検出して調整するための回路規模が大きくなる。
たとえば、特許文献2は、クロック信号を遅延させるDLL回路ではなく、装置内部でクロック信号を発生し、この内部のクロック信号を外部のクロック信号に同期させるPLL回路を用いる。
PLL回路は、装置内部で発生するクロック信号を外部のクロック信号に同期させる回路の他に、そのクロック信号を発生するための回路が必要である。
これに対して、DLL回路は、多段の遅延回路で構成できる。
そのため、特許文献2の装置では、回路規模および処理負荷が大きくなる。
【0012】
なお、クロック信号の周期がシリアルデータ信号の周期と同じまたは2倍の期間である場合、シリアルデータ信号に対するクロック信号の位相をずらすだけで、スキュー調整が可能である。
そのため、このような信号の組み合わせの場合、クロック信号をDLL回路で遅延させるだけでスキューを調整できるので、PLL回路が不要である。
【0013】
また、特許文献3の集積回路では、2個のDLL回路または2個のPLL回路が必要である。
そのため、特許文献3の集積回路では、回路規模および処理負荷が大きい。
【0014】
このようにクロック信号を用いてシリアルデータ信号などのデータ信号をラッチする集積回路、集積回路システム、シリアルパラレル変換装置およびスキュー調整方法では、簡単な回路または簡単な処理によりスキュー調整することが望まれている。
【課題を解決するための手段】
【0015】
本発明の第1の観点の集積回路は、入力された外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路と、入力されたデータ信号を内クロック信号によりラッチするラッチ回路と、クロック遅延回路に対して、外クロック信号に対する内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路と、複数の遅延量それぞれの設定の下でのラッチ回路の出力信号を判定するラッチ判定回路と、ラッチ判定回路による複数の遅延量それぞれについての複数の判定値を記憶する記憶部と、記憶部に記憶された複数の判定値とクロック遅延回路に設定した複数の遅延量との関係から、クロック遅延回路による内クロック信号の遅延量を取得する遅延量取得部とを有する。
【0016】
好適には、遅延量設定回路がクロック遅延回路に設定する複数の遅延量は、当該複数の遅延量のうちの最大の遅延量と最小の遅延量との遅延量差が、外クロック信号の半周期以上であり、ラッチ判定回路は、ラッチ回路の出力信号のレベルを二値に判定し、記憶部は、ラッチ判定回路により複数の遅延量について判定される複数の二値の判定値を1ビット毎に記憶するレジスタに、遅延量の大きさの順番に並べて記憶し、遅延量取得部は、レジスタにおいて隣接する2ビット毎に、当該2ビットの排他論理和の値を複数取得し、複数の排他論理和の値に含まれる値1の個数に応じた取得方式により、クロック遅延回路による内クロック信号の遅延量を取得してもよい。
【0017】
本発明の第2の観点の集積回路システムは、データ信号およびデータ信号をラッチするための外クロック信号を出力する第1集積回路と、データ信号および外クロック信号が入力される第2集積回路とを有する。そして、第2集積回路は、入力された外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路と、入力されたデータ信号を内クロック信号によりラッチするラッチ回路と、クロック遅延回路に対して、外クロック信号に対する内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路と、複数の遅延量それぞれの設定の下で、ラッチ回路の出力信号を判定するラッチ判定回路と、ラッチ判定回路による複数の遅延量それぞれについての複数の判定値を記憶する記憶部と、記憶部に記憶された複数の判定値とクロック遅延回路に設定した複数の遅延量との関係から、クロック遅延回路による内クロック信号の遅延量を取得する遅延量取得部とを有する。
【0018】
本発明の第3の観点のシリアルパラレル変換装置は、入力された外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路と、入力されたシリアルデータ信号を内クロック信号によりラッチするラッチ回路と、クロック遅延回路に対して、外クロック信号に対する内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路と、複数の遅延量それぞれの設定の下でのラッチ回路の出力信号を判定するラッチ判定回路と、ラッチ判定回路による複数の遅延量それぞれについての複数の判定値を記憶する記憶部と、記憶部に記憶された複数の判定値とクロック遅延回路に設定した複数の遅延量との関係から、クロック遅延回路による内クロック信号の遅延量を取得する遅延量取得部とを有する。
【0019】
本発明の第4の観点のスキュー調整方法は、データ信号と、データ信号をラッチ回路でラッチするためのクロック信号とのスキューを調整するために、クロック信号についての複数の遅延量から1つの遅延量を選択するステップと、選択した遅延量でラッチ回路に入力されるクロック信号を遅延させるステップと、選択した遅延量により遅延させたクロック信号を用いてラッチしたラッチ回路の出力信号を判定する判定ステップと、判定ステップにより判定された複数の遅延量それぞれについての複数の判定値を記憶部に記憶するステップと、記憶部に記憶された複数の判定値と複数の遅延量との関係から、クロック信号の遅延量を取得するステップと、取得された遅延量によりクロック信号を遅延し、当該遅延されたクロック信号を用いてラッチ回路によりデータ信号をラッチするステップとを有する。
【0020】
第1の観点の集積回路では、クロック遅延回路による内クロック信号の遅延量を取得するために、遅延量設定回路が、クロック遅延回路に対して内クロック信号についての複数の遅延量を設定する。
また、ラッチ判定回路は、複数の遅延量それぞれの設定の下でのラッチ回路の出力信号を判定し、記憶部は、複数の遅延量それぞれでの複数の判定値を記憶する。
そして、遅延量取得部は、記憶部に記憶された複数の判定値と複数の遅延量との関係から、クロック遅延回路による内クロック信号の遅延量を取得する。
【発明の効果】
【0021】
本発明では、簡単な回路または簡単な処理によりスキュー調整することができる。
【図面の簡単な説明】
【0022】
【図1】図1は、本発明の第1の実施形態に係るシリアル通信システムの構成図である。
【図2】図2は、図1の第2集積回路のブロック図である。
【図3】図3は、図2のDLL回路のブロック図である。
【図4】図4は、DLL回路の遅延設定値と遅延量との関係を示す説明図である。
【図5】図5は、外クロック信号と遅延設定値との関係を示す説明図である。
【図6】図6は、データとクロックとのタイミングチャートの例である。
【図7】図7は、データとクロックとのタイミングチャートの他の例である。
【図8】図8は、データレジスタから排他論理和レジスタまでのブロック図である。
【図9】図9は、排他論理和レジスタからエラーレジスタまでのブロック図である。
【図10】図10は、図1のシリアル通信システムのシーケンスチャートである。
【図11】図11は、第1の実施形態のスキュー調整処理のフローチャートである。
【図12】図12は、排他論理和レジスタの値がすべて0となる例の説明図である。
【図13】図13は、図12の場合のレジスタ値である。
【図14】図14は、排他論理和レジスタに値1が2つ含まれる例の説明図である。
【図15】図15は、図14の場合のレジスタ値である。
【図16】図16は、排他論理和レジスタの第7ビット以下に値1が1つ含まれる例の説明図である。
【図17】図17は、図16の場合のレジスタ値である。
【図18】図18は、排他論理和レジスタの第8ビット以上に値1が1つ含まれる例の説明図である。
【図19】図19は、図18の場合のレジスタ値である。
【図20】図20は、第2の実施形態の第2集積回路のブロック図である。
【図21】図21は、第2の実施形態でのスキュー調整処理のフローチャートである。
【図22】図22は、8チャネルのデータレジスタの一例を示す図である。
【図23】図23は、図1のシリアル通信システムの変形例の構成図である。
【発明を実施するための形態】
【0023】
以下、本発明の実施の形態を図面に関連付けて説明する。なお、説明は以下の順序で行う。
1.第1の実施形態(1対の差動シリアルデータ信号により通信する例)
2.第2の実施形態(複数対の差動シリアルデータ信号により通信する例)
【0024】
<第1の実施形態>
[シリアル通信システムの構成]
図1は、本発明の第1の実施形態に係るシリアル通信システム1のシステム構成図である。
シリアル通信システム1は、パラレルシリアル変換装置としての第1集積回路2と、シリアルパラレル変換装置としての第2集積回路3と、これらが実装されたプリント基板4とを有する。
図1のシリアル通信システム1において第1集積回路2と第2集積回路3との間で通信されるシリアルデータ信号には、たとえば映像信号がある。
このようなシリアル通信システム1は、たとえば映像表示装置、ビデオ記録装置、ビデオ再生装置などにおいて画像処理モジュールとして用いられる。
【0025】
第1集積回路2は、パッケージ11と、複数の端子12とを有する。
パッケージ11は、絶縁性の封止材料により形成される。パッケージ11内には、図示しない半導体チップが配設される。半導体チップには、電気回路が集積化される。
複数の端子12は、たとえばパッケージ11の外周に沿って並べられる。第1集積回路2の複数の端子12には、一対のクロック出力端子13p,13mと、一対のデータ出力端子14p,14mとが含まれる。
【0026】
一対のクロック出力端子13p,13mは、一対の差動クロック信号を出力する端子である。
差動クロック信号は、一定の周期で、ハイレベルとローレベルとの間で変化する波形を有する信号である。
一対の差動クロック信号は、同一の周期を有し、180度ずれた位相で変化する波形を有する信号である。差動クロック信号は、たとえばLVDS(Low Voltage Differential Signal)であればよい。
【0027】
一対のデータ出力端子14p,14mは、一対の差動シリアルデータ信号を出力する端子である。
一対の差動シリアルデータ信号は、同一のタイミングにおいて、180度ずれた位相に変化する。一対の差動シリアルデータ信号は、たとえばLVDSであればよい。
そして、第1集積回路2は、差動シリアルデータ信号にデータを重畳する。
これにより、差動シリアルデータ信号は、重畳されるデータの値(シンボル値)に応じてハイレベルとローレベルとの間で変化する。
また、第1集積回路2が差動シリアルデータ信号に重畳するデータとしては、たとえば第1集積回路2に入力されるデータ、および第1集積回路2内で発生したデータがある。
【0028】
第2集積回路3は、パッケージ21と、複数の端子22とを有する。
第2集積回路3の複数の端子22には、一対のクロック入力端子23p,23mと、一対のデータ入力端子24p,24mとが含まれる。
一対のクロック入力端子23p,23mには、第1集積回路2が出力した一対の差動クロック信号が入力される。
一対のデータ入力端子24p,24mには、第1集積回路2が出力した一対の差動シリアルデータ信号が入力される。
【0029】
プリント基板4は、第1集積回路2と第2集積回路3とが実装される。第1集積回路2の複数の端子12と、第2集積回路3の複数の端子22とは、プリント基板4にはんだ付けされる。
また、プリント基板4には、複数の配線31が形成される。この複数の配線31により、第1集積回路2の一対のクロック出力端子13p,13mと第2集積回路3の一対のクロック入力端子23p,23mとが電気的に接続される。
また、複数の配線31により、第1集積回路2の一対のデータ出力端子14p,14mと第2集積回路3の一対のデータ入力端子24p,24mとが電気的に接続される。
【0030】
[第2集積回路3(シリアルパラレル変換装置)の構成]
図2は、図1の第2集積回路3の回路ブロック図である。
第2集積回路3は、信号処理系回路として、一対のデータ入力端子24p,24m、データコンパレータ41、一対のクロック入力端子23p,23m、クロックコンパレータ42、DLL(Delayed Locked Loop)回路43を有する。
また、第2集積回路3は、負ラッチ回路44、正ラッチ回路45、分周回路46、デマルチプレクサ47、内部信号処理回路48を有する。
さらに、第2集積回路3は、スキュー調整回路として、スキュー計測回路51、CPU(Central Processing Unit)62、遅延量設定レジスタ63、遅延量セレクタ64、リセットセレクタ65を有する。
【0031】
一対のデータ入力端子24p,24mには、第1集積回路2が出力した一対の差動シリアルデータ信号が入力される。
データコンパレータ41は、一対のデータ入力端子24p,24mに接続される。
データコンパレータ41は、一対の差動シリアルデータ信号が交差するタイミングにおいてハイレベルとローレベルとの間で切り替わる外シリアルデータ信号を生成する。
【0032】
一対のクロック入力端子23p,23mには、第1集積回路2が出力した一対の差動クロック信号が入力される。
クロックコンパレータ42は、一対のクロック入力端子23p,23mに接続される。
クロックコンパレータ42は、一対の差動クロック信号が交差するタイミングにおいてハイレベルとローレベルとの間で切り替わる外クロック信号を生成する。
【0033】
遅延量設定レジスタ63は、クロック信号の遅延量を示す遅延量データを保持する。
遅延量設定レジスタ63に記憶されるクロック信号の遅延量は、第1集積回路2と第2集積回路3との間で実際にデータを通信する場合に使用される遅延量である。
遅延量設定レジスタ63は、たとえば後述する図4の複数の遅延設定値のうちの1つの遅延設定値を記憶する。
【0034】
遅延量セレクタ64は、遅延量設定レジスタ63と、スキュー計測回路51の後述するタイミング制御回路58とに接続される。
遅延量セレクタ64は、CPU62からのモード選択信号S62に基づいて、遅延量設定レジスタ63およびタイミング制御回路58から1つの回路を選択する。
遅延量セレクタ64は、選択したレジスタ63またはタイミング制御回路58の遅延量データをDLL回路43へ出力する。
【0035】
リセットセレクタ65は、CPU62と、スキュー計測回路51のタイミング制御回路58とに接続される。
リセットセレクタ65は、CPU62からのモード選択信号S62に基づいて、CPU62およびタイミング制御回路58から1つの回路を選択する。
リセットセレクタ65は、選択したCPU62またはタイミング制御回路58のリセット信号をDLL回路43へ出力する。
【0036】
図3は、図2のDLL回路43の回路ブロック図である。
DLL回路43は、外クロック信号を遅延させて内クロック信号を生成する。
DLL回路43は、クロックコンパレータ42、遅延量セレクタ64、およびリセットセレクタ65に接続される。
DLL回路43は、複数の遅延回路71、位相比較器72、ローパスフィルタ回路73、およびDLLセレクタ74を有する。
【0037】
遅延回路71は、入力レベルに応じた遅延量で、それぞれに入力される信号を遅延して出力する。
複数の遅延回路71は、互いの入力に互いの出力が接続されるように一列に接続される。
これにより、多段遅延回路75が構成される。なお、多段接続される複数の遅延回路71の個数は、たとえば16個であればよい。
また、多段遅延回路75の初段の遅延回路71は、クロックコンパレータ42に接続される。多段遅延回路75には、外クロック信号が入力される。多段遅延回路75の複数の遅延回路71は、外クロック信号を遅延する。
多段遅延回路75の最終段の遅延回路71は、この多段遅延回路75が遅延したクロック信号を出力する。
【0038】
位相比較器72は、クロックコンパレータ42と、多段遅延回路75の最終段の遅延回路71とに接続される。
そして、位相比較器72は、入力される外クロック信号と、最終段の遅延回路71から出力される遅延されたクロック信号との位相を比較する。
また、位相比較器72は、これらの信号の位相差に応じた波形の信号をローパスフィルタ回路73へ出力する。
たとえば、位相比較器72は、外クロック信号の位相と最終段の遅延クロック信号の位相との位相差が180度である場合を基準として、その180度の位相差からのずれ量に応じた波形の信号を生成する。
位相比較器72は、生成した信号をローパスフィルタ回路73へ出力する。
【0039】
ローパスフィルタ回路73は、位相比較器72と、複数の遅延回路71とに接続される。
そして、ローパスフィルタ回路73は、位相比較器72から出力される信号を、適切な帯域を残したレベル信号に変換する。
ローパスフィルタ回路73は、変換したレベル信号を複数の遅延回路71へ出力する。これにより、フィードバックループが形成される。
複数の遅延回路71には、ローパスフィルタ回路73から同じレベル信号が入力される。そのため、複数の遅延回路71の遅延量は略揃う。
【0040】
そして、180度の位相差を基準として、たとえば最終段の遅延回路71のクロック信号の位相が外クロック信号の位相より遅れると、それらの位相差に応じて位相比較器72およびローパスフィルタ回路73の出力が変化する。
そして、複数の遅延回路71によるクロック信号の遅延量が減る。
また、180度の位相差を基準として、最終段の遅延回路71のクロック信号の位相が外クロック信号の位相より進むと、それらの位相差に応じて位相比較器72およびローパスフィルタ回路73の出力が変化する。
そして、複数の遅延回路71によるクロック信号の遅延量が増える。
この位相制御により、安定した外クロック信号が入力されている定常状態では、最終段の遅延回路71のクロック信号と外クロック信号との位相差が180度になる。
この定常状態では、各遅延回路71は、外クロック信号の半周期を遅延回路71の個数で割った期間に相当する遅延量で、それぞれに入力されるクロック信号を遅延している。
そのため、外クロック信号が入力される側から数えてo(oは1以上の自然数)番目の遅延回路71は、外クロック信号を下記式1の遅延量T(o)で遅延させたクロック信号を出力することになる。
下記式1において、Δtは、1つの遅延回路71でのクロック信号の遅延量である。
T(o)=Δt×(o−1) ・・・式1
【0041】
また、複数の遅延回路71の出力信号と外クロック信号とは、分岐配線によりタップアウトされ、DLLセレクタ74に入力される。
DLLセレクタ74は、リセット信号が入力される。
DLLセレクタ74は、リセット信号が入力されるタイミングでDLLセレクタ74に入力されている遅延量データに基づいて、DLLセレクタ74に入力されている複数のクロック信号から1つを選択する。
【0042】
図4は、DLL回路43の遅延設定値と、DLL回路43によるクロック信号の遅延量との関係を示す説明図である。
内クロック信号は、外クロック信号をこの遅延量で遅延した信号である。
DLL回路43は、図4に示すよう[4:0]の5ビットの遅延設定値を設定できる。
また、図4は、0〜16の17個の遅延設定値を設定する例である。
図4の17個の遅延設定値の値が大きくなるほど、DLL回路43によるクロック信号の遅延量が大きくなる。
なお、図4では、DLL回路43によるクロック信号の遅延量は、外クロック信号に対する位相遅延量(度)により表記されている。
たとえば遅延設定値=0の場合の位相遅延量は0度(遅延なし)である。また、遅延設定値=16の場合の位相遅延量は180度(遅延なし)である。
【0043】
図5は、外クロック信号と、図4の17個の遅延設定値との関係を示す説明図である。
図5に示すように、図4の17個の遅延設定値は、外クロック信号の半周期を均等に16分割する。
具体的には、17個の遅延設定値は、外クロック信号の半周期を0度、11.25度、22.50度、・・・、168.75度、180.00度により16分割する。
このようにDLL回路43に設定可能な複数の遅延設定値は、最大の遅延量と最小の遅延量との遅延量の差が外クロック信号の半周期になっている。
【0044】
DLL回路43は、図4に示す5ビットの遅延設定値の1つが設定された状態でリセット信号が入力されると、入力されている遅延設定値に対応するタップアウトを選択する。
たとえば、値0を示す5ビットの遅延設定値が入力されると、DLL回路43は、0番目の外クロック信号を選択する。
また、値1を示す5ビットの遅延設定値が入力されると、DLL回路43は、最初の遅延回路71の出力信号を選択する。
【0045】
図2に示すように、DLL回路43は、DLLセレクタ74により選択したクロック信号を、内クロック信号として、負ラッチ回路44、正ラッチ回路45および分周回路46へ出力する。
【0046】
図6および図7は、第2集積回路3の複数の信号のタイミングチャートの例である。
図6(A)および図7(A)は、差動シリアルデータ信号の波形である。
図6(B)および図7(B)は、差動クロック信号の波形である。
図6(C)および図7(C)は、内クロック信号の波形である。
なお、図6(B)および図7(B)には、説明のために、一対の差動クロック信号のうちの一方のクロック信号の波形のみを図示している。
【0047】
差動シリアルデータ信号は、たとえば図6(A)および図6(B)に示すように、差動クロック信号の半周期毎にデータが重畳できる。すなわち、差動シリアルデータ信号は、差動クロック信号の周波数の2倍のビットレートで通信データを伝送できる。
また、差動シリアルデータ信号と差動シリアルデータ信号とは、基本的に、第1集積回路2において、同じタイミングでレベルが変化するように同期して生成される。
しかしながら、図6(A)に示すように、実際の差動シリアルデータ信号の信号レベルの変化タイミングは、ジッタや配線遅延などにより、差動クロック信号の信号レベルの変化タイミングに対して変動する。
そのため、実際の差動シリアルデータ信号には、シンボル値に応じた信号レベルに安定した有効期間(Valid期間)と、シンボル値に応じた信号レベルに安定しているとは言えない無効期間(Invalid期間)とがある。
差動シリアルデータ信号を受信する第2集積回路3は、有効期間においてデータをラッチする必要がある。
【0048】
そして、図6のタイミングチャートでは、第2集積回路3に入力される差動シリアルデータ信号の位相と、差動クロック信号の位相とが略揃っている。
そのため、第2集積回路3は、DLL回路43により内クロック信号の位相を、差動クロック信号(外クロック信号)において90度分遅らせる。
これにより、第2集積回路3は、内クロック信号の立ち上がりエッジを、差動シリアルデータ信号の有効期間内のタイミング(略90度のタイミング)とすることができる。
また、第2集積回路3は、内クロック信号の立ち下がりエッジを、差動シリアルデータ信号の有効期間内のタイミング(略270度のタイミング)とすることができる。
この場合、第2集積回路3の正ラッチ回路45および負ラッチ回路44は、外シリアルデータ信号の信号レベルが安定している有効期間の中央タイミングにおいて、外シリアルデータ信号を正常にラッチすることができる。
そして、第2集積回路3の正ラッチ回路45および負ラッチ回路44は、外シリアルデータ信号に重畳された正しいデータを得ることができる。
【0049】
これに対して、図7のタイミングチャートでは、スキューが発生して、第2集積回路3に入力される差動シリアルデータ信号に対して、差動クロック信号の位相が遅れている。
このように第2集積回路3に入力される信号の位相のずれは、たとえば第1集積回路2から出力される差動シリアルデータ信号の位相と差動クロック信号の位相とがずれている場合に生じる。
この他にも例えば、第1集積回路2および第2集積回路3が実装されるプリント基板4の配線31において不具合が生じている場合にも、第2集積回路3に入力される信号に位相ずれが生じる。
図7のスキューが発生している場合において図6と同様に内クロック信号の位相を90度分遅らせると、図7(C)に示すように、内クロック信号の立ち上がりエッジのタイミングは、差動シリアルデータ信号の無効期間になってしまう。
また、内クロック信号の立ち下がりエッジのタイミングも、差動シリアルデータ信号の無効期間になってしまう。
【0050】
このように図7のスキューが発生している場合において図6と同様に内クロック信号の位相を90度分遅らせると、正ラッチ回路45および負ラッチ回路44は、外シリアルデータ信号に重畳された正しいデータを取得できない可能性がある。
よって、第1集積回路2から第2集積回路3へ送信される差動クロック信号を用いて、第1集積回路2から第2集積回路3へ送信される差動シリアルデータ信号をラッチする場合、スキュー調整をする必要がある。
つまり、正ラッチ回路45および負ラッチ回路44に入力される内クロック信号と外シリアルデータ信号との位相差が図6の関係となるように、これらの信号の位相を調整する必要がある。
【0051】
図2に示すように、正ラッチ回路45は、データコンパレータ41、DLL回路43に接続される。
正ラッチ回路45は、Dフリップフロップを含む。
正ラッチ回路45のDフリップフロップは、内クロック信号の立ち上がりエッジが入力されたタイミングで、外シリアルデータ信号をラッチする。
正ラッチ回路45は、Dフリップフロップがラッチしたレベルの正ラッチ信号を、デマルチプレクサ47へ出力する。
【0052】
負ラッチ回路44は、データコンパレータ41、DLL回路43に接続される。
負ラッチ回路44は、Dフリップフロップを含む。
負ラッチ回路44のDフリップフロップは、内クロック信号の立ち下がりエッジが入力されたタイミングで、外シリアルデータ信号をラッチする。
負ラッチ回路44は、Dフリップフロップがラッチしたレベルの負ラッチ信号を、デマルチプレクサ47へ出力する。
【0053】
分周回路46は、DLL回路43に接続される。
分周回路46は、内クロック信号を分周した分周クロック信号を、デマルチプレクサ47へ出力する。
【0054】
デマルチプレクサ47は、正ラッチ回路45、負ラッチ回路44および分周回路46に接続される。
デマルチプレクサ47は、分周クロック信号に基づいて動作し、正ラッチ信号および負ラッチ信号から、シリアルデータ信号に重畳されていた複数のデータを生成する。
デマルチプレクサ47は、生成した複数のデータを内部信号処理回路48へ出力する。
【0055】
スキュー計測回路51は、判定回路52、データレジスタ53、排他論理和モジュール54、排他論理和レジスタ55、多入力論理和回路56、エラーレジスタ57、タイミング制御回路58、イネーブル回路59を有する。
そして、スキュー計測回路51は、システムクロック入力端子61に入力されるシステムクロック信号に基づいて動作する。
システムクロック入力端子61には、水晶発振器101が接続される。
水晶発振器101は、たとえばプリント基板4に実装される。
なお、スキュー計測回路51は、システムクロック入力端子61に入力されるシステムクロック信号をたとえばPLL回路で逓倍または分周したシステムクロック信号を用いてもよい。
【0056】
判定回路52は、正ラッチ回路45に接続される。
判定回路52は、正ラッチ信号のレベルを0または1に判定し、1ビットの二値の判定値を生成する。
判定回路52は、たとえば正ラッチ信号のレベルについて複数回判定し、値1および値0のうちで判定数が多い方の値を、判定値としてデータレジスタ53へ出力する。
【0057】
図8は、図2のデータレジスタ53、排他論理和モジュール54、および排他論理和レジスタ55の一例を示すブロック図である。
【0058】
データレジスタ53は、判定回路52とイネーブル回路59とに接続される。
データレジスタ53は、複数のDフリップフロップで構成されるレジスタである。図8の例では、データレジスタ53は、番号0〜16の17個のDフリップフロップ53(1)〜53(17)により構成されている。
なお、データレジスタ53を構成する複数のDフリップフロップ53(1)〜53(17)は、スキュー計測回路51がDLL回路43に設定する複数の遅延量と同数であればよい。
そして、データレジスタ53は、判定回路52が遅延量毎に判定した複数の判定値を記憶する。
また、データレジスタ53は、複数の判定値を、スキュー計測回路51が設定する複数の遅延量の大きさの順番に並べて記憶する。
【0059】
排他論理和モジュール54は、データレジスタ53に接続される。
排他論理和モジュール54は、複数の二入力排他論理和回路54(1)〜54(16)を有する。図8の例では、排他論理和モジュール54は、16個の二入力排他論理和回路54(1)〜54(16)を有する。
なお、排他論理和モジュール54を構成する複数の二入力排他論理和回路54(1)〜54(16)は、データレジスタ53のビット数より1つ少ない個数であればよい。
そして、各二入力排他論理和回路54(1)〜54(16)には、データレジスタ53において隣り合う2ビットの判定値が入力される。
各二入力排他論理和回路54(1)〜54(16)は、排他論理和の値を演算し、排他論理和レジスタ55へ出力する。
【0060】
排他論理和レジスタ55は、排他論理和モジュール54と、多入力論理和回路56と、CPU62に接続される。
排他論理和レジスタ55は、複数のDフリップフロップで構成されるレジスタである。
図8の例では、排他論理和レジスタ55は、番号0〜15の16個のDフリップフロップで構成される16ビッドのレジスタである。
なお、排他論理和レジスタ55を構成する複数のDフリップフロップ53(1)〜53(17)は、排他論理和モジュール54を構成する複数の二入力排他論理和回路54と同数であればよい。
そして、図8に示すように、排他論理和レジスタ55は、データレジスタ53の2つの判定値reg[i]とreg[i+1]の排他論理和の値をexor_reg[i]のDフリップフロップに記憶する。
また、排他論理和レジスタ55は、複数の排他論理和の値を、スキュー計測回路51が設定する複数の遅延量の大きさにしたがった順番に並べて記憶する。
【0061】
図9は、図2の排他論理和レジスタ55、多入力論理和回路56およびエラーレジスタ57の一例を示すブロック図である。
【0062】
多入力論理和回路56は、排他論理和レジスタ55と、エラーレジスタ57とに接続される。
多入力論理和回路56には、排他論理和レジスタ55において連続して並ぶ複数のビットの値が入力される。
図9の例では、多入力論理和回路56には、排他論理和レジスタ55のexor_reg[6]からexor_reg[9]までの第6〜9の4ビットの排他論理和の値が入力される。
exor_reg[6]は、90度を基準として−22.50°〜−11.25°の範囲内でのデータのトグル情報を有する。
exor_reg[7]は、90度を基準として−11.25°〜0°の範囲内でのデータのトグル情報を有する。
exor_reg[8]は、90度を基準として0°〜11.25°の範囲内でのデータのトグル情報を有する。
exor_reg[9]は、90度を基準として11.25°〜22.50°の範囲内でのデータのトグル情報を有する。
これにより、多入力論理和回路56は、外クロック信号の位相において90度の位相遅れを基準とした±22.5度の範囲でのデータのトグル情報が入力される。
そして、多入力論理和回路56は、この位相遅延量の範囲内でデータがトグルして、入力される複数の排他論理和の値に値1が含まれる場合、値1をエラーレジスタ57へ出力する。
値1が含まれない場合、多入力論理和回路56は、値0をエラーレジスタ57へ出力する。
【0063】
エラーレジスタ57は、多入力論理和回路56と、CPU62とに接続される。
エラーレジスタ57は、1ビットのレジスタである。
そして、エラーレジスタ57は、多入力論理和回路56から入力される多入力論理和の値を記憶する。
【0064】
図2のタイミング制御回路58は、CPU62、遅延量セレクタ64、リセットセレクタ65、およびイネーブル回路59に接続される。
【0065】
タイミング制御回路58は、CPU62からテストスタート信号が入力されると、スキュー計測のためのタイミング制御を実行する。
スキュー計測のためのタイミング制御において、タイミング制御回路58は、図4の複数の遅延設定値を、上から順番に1つずつ遅延量セレクタ64へ出力する。
また、タイミング制御回路58は、各遅延設定値を遅延量セレクタ64へ出力している期間中に、リセットセレクタ65へリセット信号を出力し、さらにイネーブル回路59へイネーブル信号の出力を指示する。
イネーブル回路59は、タイミング制御回路58から出力を指示されると、イネーブル信号をデータレジスタ53へ出力する。
データレジスタ53は、イネーブル信号が入力されると、そのタイミングに判定回路52から入力されている判定値を取り込んで記憶する。
また、タイミング制御回路58は、図4のすべての遅延設定値について、上述したタイミング制御を実行し終えると、CPU62へテスト終了信号を出力する。
【0066】
CPU62は、遅延量設定レジスタ63、遅延量セレクタ64、リセットセレクタ65、タイミング制御回路58、排他論理和レジスタ55、エラーレジスタ57に接続される。
CPU62は、第2集積回路3に電源が供給されると、所定のプログラムを実行する。これにより、CPU62には制御部66が実現される。
【0067】
そして、制御部66は、外シリアルデータ信号と外クロック信号とのスキューを調整するための所定のテスト処理を実行した後、調整したスキューの下で実際の外シリアルデータ信号をラッチさせるための設定処理を実行する。
【0068】
スキューを調整するための所定のテスト処理では、制御部66は、タイミング制御回路58を選択させるモード選択信号S62を、遅延量セレクタ64およびリセットセレクタ65へ出力する。
また、制御部66は、タイミング制御回路58へテストスタート信号を出力する。
これにより、タイミング制御回路58は、遅延設定値およびリセット信号をテストのために出力する。
また、遅延量セレクタ64およびリセットセレクタ65は、タイミング制御回路58の遅延設定値およびリセット信号を選択し、DLL回路43へ出力する。
また、タイミング制御回路58からテスト終了信号が入力されると、制御部66は、排他論理和レジスタ55およびエラーレジスタ57からテスト結果を示すデータを読み込み、実動作時に使用する遅延量を取得する。
【0069】
実際の外シリアルデータ信号をラッチさせるための設定処理において、制御部66は、取得した遅延量を遅延量設定レジスタ63に設定する。
また、制御部66は、CPU62を選択させるモード選択信号S62を、遅延量セレクタ64およびリセットセレクタ65へ出力する。
これにより、遅延量セレクタ64は、遅延量設定レジスタ63に設定された遅延量データを選択し、DLL回路43へ出力する。
また、リセットセレクタ65は、CPU62から入力されるリセット信号をDLL回路43へ出力する。
そして、DLL回路43は、スキュー調整された遅延設定値により、外クロック信号を遅延させて内クロック信号を生成する。
【0070】
[シリアル通信システム1の動作]
図10は、図1のシリアル通信システム1の動作の一例を示すシーケンスチャートである。
図10には、パラレルシリアル変換装置としての第1集積回路2の処理と、シリアルパラレル変換装置としての第2集積回路3の処理と、これらの集積回路2、3の間でのシリアル通信の内容とを図示している。
【0071】
図10のシーケンスチャートは、たとえば図1のシリアル通信システム1に電源が投入された場合に実行される。また、図10のシーケンスチャートは、シリアル通信システム1がリセットにより再起動された場合に実行される。
【0072】
図10のシーケンスにおいて、パラレルシリアル変換装置としての第1集積回路2は、スキュー調整のために、一対の差動シリアルデータ信号および一対の差動クロック信号の出力を開始する(ステップS1)。
このスキュー調整のために第1集積回路2が出力する一対の差動シリアルデータ信号には、データが重畳されていない。第1集積回路2は、たとえばテスト用のデータ列「010101..」を一対の差動シリアルデータ信号に重畳して出力する。
テスト用のデータ列「010101..」を一対の差動シリアルデータ信号に重畳した場合、一対の差動シリアルデータ信号は、一対の差動クロック信号の半周期毎にハイレベルとローレベルとの間で切り替わる。
【0073】
また、図10のシーケンスにおいて、シリアルパラレル変換装置としての第2集積回路3は、スキュー調整のために、一対の差動シリアルデータ信号および一対の差動クロック信号の受信を開始する。
そして、第2集積回路3は、後述する図11に示すように、スキュー検出および調整処理を実行する(ステップS2)。
【0074】
また、第2集積回路3は、このスキュー検出および調整処理を正常に終了すると、遅延量設定レジスタ63にスキュー調整を加味した遅延設定値を記憶する(ステップS3)。
遅延量設定レジスタ63には、内クロック信号の位相が外シリアルデータ信号に対して90度ずれる遅延設定値が記憶される。
これにより、差動シリアルデータ信号(外シリアルデータ信号)に実際の通信データが重畳される実動作時には、DLL回路43は、外シリアルデータ信号に対して位相が90度ずれた内クロック信号を生成する。
【0075】
また、スキュー検出および調整処理を終了すると、第2集積回路3は、スキュー調整が正常に終了できたか否かを示すテスト結果を第1集積回路2へ通知する(ステップS4)。
なお、このテスト結果通知は、たとえばシリアルデータとして第2集積回路3から第1集積回路2へ通信されてもよい。
【0076】
第2集積回路3からテスト結果通知を受信すると、第1集積回路2は、テスト用の一対の差動シリアルデータ信号および一対の差動クロック信号の出力を停止する。
また、第1集積回路2は、第2集積回路3から通知されたテスト結果が良好であるか否かを判断する(ステップS5)。
テスト結果が良好である場合、第1集積回路2は、シリアルデータ通信の実動作を開始する(ステップS6)。
【0077】
シリアルデータ通信の実動作において、第1集積回路2は、たとえば外部からシリアル通信するデータを受信したり、内部においてシリアル通信するデータが発生すると、一対の差動シリアルデータ信号にこれらのデータを重畳する(ステップS7)。
そして、第1集積回路2は、データを重畳した一対の差動シリアルデータ信号と、これに同期した一対の差動クロック信号とを、第2集積回路3へ出力する(ステップS8)。
【0078】
第2集積回路3は、一対の差動シリアルデータ信号と、一対の差動クロック信号とを受信する。
データコンパレータ41は、一対の差動シリアルデータ信号から外シリアルデータ信号を生成し、正ラッチ回路45および負ラッチ回路44へ出力する。
クロックコンパレータ42は、一対の差動クロック信号から外クロック信号を生成する。
DLL回路43は、遅延量設定レジスタ63に設定された遅延設定値に基づいて、外クロック信号を遅延させた内クロック信号を生成し、正ラッチ回路45および負ラッチ回路44へ出力する。
正ラッチ回路45および負ラッチ回路44は、内クロック信号が変化する所定のタイミングで、外シリアルデータ信号をラッチする(ステップS9)。
そして、この実動作時の内クロック信号の位相は、外シリアルデータ信号に対して90度ずれている。
そのため、正ラッチ回路45および負ラッチ回路44は、有効期間の中央において外シリアルデータ信号をラッチし、外シリアルデータ信号に重畳された正しいデータをラッチできる。
正ラッチ回路45および負ラッチ回路44は、ラッチ信号をデマルチプレクサ47へ出力する。
デマルチプレクサ47は、正ラッチ回路45のラッチ信号および負ラッチ回路44のラッチ信号から外シリアルデータ信号に重畳されていた複数のデータを生成し、内部信号処理回路48へ出力する。
これにより、第2集積回路3の内部信号処理回路48は、第1集積回路2が第2集積回路3へシリアル通信した正しいデータに基づいて動作する。
【0079】
これに対して、第2集積回路3から通知されたテスト結果が良好でない場合、第1集積回路2は、シリアルデータ通信の実動作を停止する(ステップS10)。
【0080】
[スキュー調整処理および品質判定処理]
次に、図10中のステップS2のスキュー検出および調整処理について詳しく説明する。
図11は、図10中のステップS2における第2集積回路3のスキュー検出および調整処理のフローチャートである。
【0081】
スキュー調整処理において、第2集積回路3に一対の差動シリアルデータ信号および一対の差動クロック信号が入力される(ステップS21)と、第2集積回路3の制御部66は、タイミング制御回路58へテストスタート信号を出力する(ステップS22)。
テストスタート信号が入力されると、タイミング制御回路58は、スキュー計測処理を開始する。
【0082】
タイミング制御回路58は、制御変数iに最初の遅延設定値「0」を設定し(ステップS23)、制御変数iと同じ値の遅延設定値「0」を遅延量セレクタ64へ出力する(ステップS24)。
遅延量セレクタ64は、タイミング制御回路58から入力される遅延設定値「0」をDLL回路43へ出力する。また、タイミング制御回路58は、リセット信号を出力する。
これにより、DLL回路43は、遅延設定値「0」に対応する遅延量で外クロック信号を遅延させ、内クロック信号を生成する。
遅延設定値の値が「0」である場合、DLL回路43は、外クロック信号を複数の遅延回路71により遅延していない内クロック信号を出力する。
【0083】
また、正ラッチ回路45は、内クロック信号の立ち上がりタイミングにおいて外シリアルデータ信号をラッチし、ラッチした信号レベルのラッチ信号を出力する。
判定回路52は、ジッタ等の影響を排除するために、正ラッチ回路45のラッチ信号のレベルを複数回判定し、値1と値0とで多い方の値を、1ビットの二値の判定値としてデータレジスタ53へ出力する。
判定回路52は、例えば10回計測して0および1のうちで判定回数が多い方の値を採用する。
このような判定回路52は、例えば各計測ごとにカウンタで0の発生回数と1の発生回数とを積算し、多い方の値をデータレジスタ53へ出力するようにすればよい。
【0084】
遅延設定値「0」の設定の下でDLL回路43および正ラッチ回路45が複数回動作し終える所定のタイミングになると、タイミング制御回路58は、イネーブル回路59にイネーブル信号を出力させる。
データレジスタ53は、イネーブル信号が入力されたタイミングにおいて判定回路52が出力している判定値を取り込んで記憶する。
データレジスタ53は、取り込んだ判定値を第iビットに記憶する(ステップS25)。
このタイミングでは制御変数iは「0」なので、データレジスタ53は、取り込んだ判定値を、第0ビットに記憶する。
【0085】
イネーブル回路59にイネーブル信号を出力させた後の所定のタイミングにおいて、タイミング制御回路58は、制御変数iが遅延設定値の最大値となったか否かを判断する(ステップS26)。図4の場合、遅延設定値の最大値は「16」である。
制御変数iが遅延設定値の最大値となっていない場合、タイミング制御回路58は、制御変数iに値1を加算する(ステップS27)。
また、タイミング制御回路58は、制御変数iと同じ値の遅延設定値「i」を遅延量セレクタ64へ出力し、新たな遅延設定値の下での判定値をデータレジスタ53に記憶させる(ステップS24〜S25)。
【0086】
たとえば値1の加算処理により制御変数iが「1」となる場合、タイミング制御回路58は、制御変数iに値1を加算する。また、タイミング制御回路58は、制御変数1と同じ値の遅延設定値「1」を遅延量セレクタ64へ出力する。
これにより、DLL回路43が出力する内クロック信号は、図4に示すように11.25度の位相遅延量で遅延されたものとなる。
また、正ラッチ回路45は、この11.25度で遅延された内クロック信号の立ち上がりエッジのタイミングで外シリアルデータ信号をラッチする。
この11.25度の遅延時間の間で、外シリアルデータ信号の信号レベルが変化している場合、正ラッチ回路45の出力レベルおよび判定回路52の判定値が変化する。
よって、データレジスタ53の第1ビットに取り込まれる判定値の値も変化する。
【0087】
タイミング制御回路58は、制御変数iが遅延設定値の最大値となるまで、以上の検出値の取得処理を繰り返す(ステップS24〜S27)。
そして、制御変数iが遅延設定値の最大値になると、データレジスタ53の第0ビットから第i(たとえば16)ビットまでに、図4の複数の遅延量での複数の検出値が記憶される。
また、図8に示すように、排他論理和モジュール54は、データレジスタ53の複数の検出値について、2ビット毎の排他論理和を演算し、演算結果を排他論理和レジスタ55に出力する。排他論理和レジスタ55は、この2ビット毎の排他論理和の値を記憶する。
また、図9に示すように、多入力論理和回路56は、排他論理和レジスタ55の第6ビットから第9ビットの4ビットの論理和を演算し、エラーレジスタ57へ出力する。エラーレジスタ57は、4ビットの論理和を記憶する。
【0088】
このように排他論理和レジスタ55およびエラーレジスタ57に、新たに検出した検出値に基づく値が記憶された状態において、タイミング制御回路58は、CPU62へテスト終了信号を出力する(ステップS28)。
これにより、スキュー計測回路51によるハードウェア処理が終了し、制御部66によるソフトウェア処理が開始される。
【0089】
タイミング制御回路58からCPU62へテスト終了信号が入力されると、制御部66は、検出した値に基づいて、実動作時にDLL回路43に設定する遅延量の取得処理を開始する。
制御部66は、まず、排他論理和レジスタ55の値を読み込む(ステップS29)。そして、制御部66は、排他論理和レジスタ55の値に含まれる値1のビットの個数を判断する(ステップS30、S32、S34)。
【0090】
そして、排他論理和レジスタ55のすべてのビットの値が0である場合、すなわち値1のビットが含まれない場合、制御部66は、ステップS30においてyesと判断する。
制御部66は、外クロック信号の位相において90度に相当する遅延量を取得し、遅延量設定レジスタ63に設定する(ステップS31)。
図4で言えば、制御部66は、遅延設定値「8」を取得し、遅延量設定レジスタ63に設定する。
これは後述する図12に示すように、計測した位相範囲180度のなかにデータのトグルがない場合であり、このような場合にはDLL回路43の位相遅延量を通常の90度としても問題が生じないからである。前後90度分のマージンが確保されている。
【0091】
また、排他論理和レジスタ55に値が1となるビットが2個ある場合、制御部66は、ステップS32においてyesと判断する。
制御部66は、2つのビットの中央のビットの遅延量を取得し、遅延量設定レジスタ63に設定する(ステップS33)。
たとえば2個のビットが第a番目と第b番目のビットである場合、制御部66は、(a+b)/2の位置のビットの遅延量を取得し、遅延量設定レジスタ63に設定する。
これは後述する図14に示すように、2箇所のエッジの中心位置でデータをラッチすると、前後のマージンを最も大きく確保できるからである。
【0092】
なお、図14および図15の例のように、2つのビットが0と15とであり、取得した値が7.5(=(0+15)/2)のように端数が生じる場合には、制御部66は、整数値に切り上げた値(この例では8)を取得する。
これは、exor_reg[15:0]の[i]はdata_reg[16:0]の[i]ビットと[i+1]ビットとの排他論理和の値を有するため、元々切り上げる方向にオフセットが存在するからである。
【0093】
また、排他論理和レジスタ55に値が1となるビットが1個ある場合、制御部66は、ステップS34においてyesと判断する。
制御部66は、外クロック信号の位相においてそのビットと90度ずれた位置のビットの遅延量を取得し、遅延量設定レジスタ63に設定する。
具体的には、制御部66は、値が1となる1つのビット[c]が7より小さく、ステップS35でyesと判断する場合、遅延量設定レジスタ63に「c+8」をセットする(ステップS36)。
これは、後述する図16に示すように、半周期分の検出をした場合に検出範囲の前半にデータの変化点が存在する場合には、データがクロックに対して遅れていると想定できるからである。
【0094】
一方、[c]が8以上であり、ステップS35でnoと判断する場合、制御部66は、遅延量設定レジスタ63に「c−8」をセットする(ステップS37)。
これは、後述する図18に示すように、半周期分の検出をした場合に検出範囲の後半にデータの変化点が存在する場合には、データがクロックに対して進んでいると想定できるからである。
【0095】
また、排他論理和レジスタ55に値が1となるビットが0から2個含まれていない場合、制御部66は、ステップS34においてnoと判断する。
制御部66は、測定エラーと判断し、新たな遅延量を遅延量設定レジスタ63に設定しない(ステップS38)。
たとえば、半周期分の検出をした場合に排他論理和レジスタ55に値が1となるビットが3箇以上存在する場合は、正常にラッチができている状態ではない。
この場合、制御部66は、たとえばCPU62内の図示しないスキューチェックフラグをアクティブに設定する。
このスキューチェックフラグがアクティブに設定されているか否かを確認することで、CPU62は測定後の任意のタイミングにおいて測定NGであったことを認識できる。
また、制御部66は、再測定などの処理を実行してもよい。
【0096】
以上のスキュー調整処理(ステップS29〜S38)を終えると、制御部66は、次に当該第2集積回路3および第1集積回路2の品質を判定する。
制御部66は、エラーレジスタ57の値を読み込み、エラーレジスタ57の値が0または1であるか否かを判断する(ステップS39)。
エラーレジスタ57には、DLL回路43が出力する内クロック信号の特定の位相範囲(90度±α)に含まれる複数の検出値において検出値の値が0と1との間で変化する場合に、値1が記憶される。
これ以外の場合には、エラーレジスタ57には、値0が記憶される。
【0097】
そして、エラーレジスタ57の値が0である場合、制御部66は、第2集積回路3および第1集積回路2が良品であると判断し、その旨を第1集積回路2へ通知する(ステップS40)。
【0098】
また、エラーレジスタ57の値が1である場合、制御部66は、第2集積回路3および第1集積回路2によるチップセットに不具合の可能性があると判断し、品質が低いことを第1集積回路2へ通知する(ステップS41)。
このように、第2集積回路3は、第1集積回路2と第2集積回路3からなるチップセットの品質を判断する。
【0099】
[スキュー調整の具体例1:排他論理和レジスタ55のすべてのビットの値が0となる場合]
次に、値1となるビットの個数毎の具体例を説明する。
図12および図13に、排他論理和レジスタ55のすべてのビットの値が0となる場合の例を示す。
図12(A)は、半周期毎にレベルが変化する外シリアルデータ信号の波形である。
図12(B)は、DLL回路43に設定された遅延設定値の値である。
図12(C)の点線の矢印は、テスト時の複数の内クロック信号の立ち上がりエッジのタイミングである。
【0100】
図12では、テスト時の複数の内クロック信号の立ち上がりエッジのタイミングがすべて、外シリアルデータ信号がハイレベルとなる半周期の期間内に含まれる。
この場合、図13(A)に示すように、データレジスタ53の17ビットの値は、すべて「1」となる。
また、排他論理和レジスタ55のすべてのビットの値は、図13(B)に示すように0になる。
【0101】
よって、制御部66は、図11のステップS30においてyesと判断し、外クロック信号の位相において90度に相当する遅延量を取得し、遅延量設定レジスタ63に設定する(ステップS31)。
これにより、図12(C)の実線の矢印に示すように、実動作時には、DLL回路43が出力する内クロック信号の立ち上がりエッジは、図12(A)の外シリアルデータ信号の位相において90度のタイミングになる。
【0102】
[スキュー調整の具体例2:排他論理和レジスタ55に値1のビットが2つ含まれる場合]
図14および図15に、排他論理和レジスタ55に値1のビットが2つ含まれる場合の例を示す。図14の記載内容は図12に対応し、図15の記載内容は図13に対応する。
図14では、遅延設定値0と1との間のタイミングで外シリアルデータ信号がローレベルからハイレベルへ変化し、かつ、遅延設定値15と16との間のタイミングで外シリアルデータ信号がハイレベルからローレベルへ変化している。
この場合、図15(A)に示すように、データレジスタ53の第0ビットと第16ビットが「0」となり、それ以外のビットはすべて「1」となる。
また、図15(B)に示すように、排他論理和レジスタ55の第0ビットの値と第15ビットの値とが1になる。
【0103】
よって、制御部66は、図11のステップS32においてyesと判断し、(0+15)/2の位置となる第8ビットの遅延量を取得し、遅延量設定レジスタ63に設定する(ステップS33)。
なお、演算結果に小数点以下の端数が出る場合には、制御部66は、切り上げた値のビットの遅延量を取得する。
これにより、図12(C)の実線の矢印に示すように、実動作時には、DLL回路43が出力する内クロック信号の立ち上がりエッジは、図12(A)の外シリアルデータ信号の位相において90度のタイミングになる。
【0104】
[スキュー調整の具体例3:排他論理和レジスタ55の第7ビット以下に値1のビットが1つ含まれる場合]
図16および図17に、排他論理和レジスタ55の第7ビット以下に値1のビットが1つ含まれる場合の例を示す。図16の記載内容は図12に対応し、図17の記載内容は図13に対応する。
図16では、遅延設定値1と2との間のタイミングで外シリアルデータ信号がローレベルからハイレベルへ変化する
この場合、図17(A)に示すように、データレジスタ53の第0ビットと第1ビットが「0」となり、それ以外のビットはすべて「1」となる。
また、図17(B)に示すように、排他論理和レジスタ55の第1ビットの値が1になる。
【0105】
よって、制御部66は、図11のステップS34においてyesと判断し、さらにステップS35においてyesと判断し、第(c+8)ビットの遅延量を取得し、遅延量設定レジスタ63に設定する(ステップS36)。
ここで、cは、値が1になった排他論理和レジスタ55のビットの番号である。
これにより、図16(C)の実線の矢印に示すように、実動作時には、DLL回路43が出力する内クロック信号の立ち上がりエッジは、図16(A)の外シリアルデータ信号の位相において90度のタイミングになる。
【0106】
[スキュー調整の具体例4:排他論理和レジスタ55の第8ビット以上に値1のビットが1つ含まれる場合]
図18および図19に、排他論理和レジスタ55の第8ビット以上に値1のビットが1つ含まれる場合の例を示す。図18の記載内容は図12に対応し、図19の記載内容は図13に対応する。
図18では、遅延設定値14と15との間のタイミングで外シリアルデータ信号がハイレベルからローレベルへ変化する。
この場合、図19(A)に示すように、データレジスタ53の第15ビットと第16ビットが「0」となり、それ以外のビットはすべて「1」となる。
また、図19(B)に示すように、排他論理和レジスタ55の第14ビットの値が1になる。
【0107】
よって、制御部66は、図11のステップS34においてyesと判断し、さらにステップS35においてnoと判断し、第(c−8)ビットの遅延量を取得し、遅延量設定レジスタ63に設定する(ステップS37)。
ここで、cは、値が1になった排他論理和レジスタ55のビットの番号である。
これにより、図18(C)の実線の矢印に示すように、実動作時には、DLL回路43が出力する内クロック信号の立ち上がりエッジは、図18(A)の外シリアルデータ信号の位相において90度のタイミングになる。
【0108】
以上のように、第1の実施形態では、第1の実施形態の第2集積回路3は、差動シリアルデータ信号と差動クロック信号とのスキューが生じていても、外シリアルデータ信号の有効期間の中央において外シリアルデータ信号をラッチできる。
また、第2集積回路3は、入力される差動シリアルデータ信号が劣化していても、データコンパレータ41により差分を増幅して、外シリアルデータ信号の有効期間の中央において外シリアルデータ信号をラッチできる。
【0109】
また、第2集積回路3は、第1集積回路2とともにプリント基板4に実装された実使用環境において、内蔵するタイミング制御回路58が出力する複数の遅延量に基づいてスキューを検出し、有効期間(window)の中央においてラッチするように調整する。
データおよびクロックが差動信号として伝送されていることと相俟って、第2集積回路3は、データ信号のアイパターンの中心点でのハードディシジョンが可能となる。
よって、第1の実施形態の第2集積回路3は、入力される信号がこのように劣化していても、外シリアルデータ信号に重畳されたシンボル値を安定して検出できる。
【0110】
ところで、第1の実施形態とは別に、スキューおよび有効期間を検出する方法には、たとえば第2集積回路3を実装したプリント基板4にタイミングジェネレータ装置などの機械を接続して検出する方法がある。
この場合、タイミングジェネレータ装置を接続するソケットの不具合などに起因して、信号の品質が実使用時に比べて劣化する。なお、ソケットの不具合に起因した信号品質劣化としては、たとえばデューティの変動、ジッタの増加などがある。
そして、デューティが変動したり、またはジッタが増加したりすると、検出される有効期間は、実使用時より短くなる。また、検出されるスキューも、実使用時とは異なる。
これに対して、第1の実施形態のスキューおよび有効期間の検出方法では、このような信号品質の劣化の影響を受けずに、実使用時のスキューおよび有効期間を正確に検出することができる。
【0111】
また、スキューおよび有効期間の検出方法には、さらに他にも、第2集積回路3をテスタ装置に接続し、テスタ装置のATE(Automated Test Equipment)から第2集積回路3へ位相をずらしながらデータとクロックとを入力する方法がある。
しかしながら、このようにテスタ装置のATEを用いてパス領域を測定する場合、コストアップ、テストのためのセットアップに時間を要する等のデメリットがある。
これに対して、第1の実施形態のスキューおよび有効期間の検出方法では、外部のテスト装置を用いずに測定できるので、コストアップ、テストのためのセットアップ時間を最小限に抑えることができる。
【0112】
また、量産されたチップセットの品質を判断する場合、データとクロックとの位相関係が固定された一つの条件下でテストするのが一般的である。
この場合、例えば位相関係がマージナルなケースにおいてテスト条件とセットシステム間での温度や電圧の微妙な差により、テスト漏れが発生する可能性がある。
そして、良品ではないチップセットが出荷される可能性がある。
これに対して、第1の実施形態のスキューおよび有効期間の検出方法は、量産されたチップセットのテストにおいても、すべてのチップセットについて品質を判断することが可能である。
このように第1の実施形態のシリアル通信システム1は、高速シリアルインタフェースについて、[A]データを安定して検出できるスキュー補正が可能である。
また、シリアル通信システム1は、[B]スキュー量の評価を簡便かつ正確に行うことができる。
また、シリアル通信システム1は、[C]ある程度のマージンを持って良品選別を行う機能とを備える。
【0113】
また、第1の実施形態では、たとえばプリント基板4の配線31における信号遅延、またはソケットの接触不良などがあったとしても、その影響を打ち消すようにスキュー調整および評価が可能である。
そのため、第1の実施形態のシリアル通信システム1のチップセットでは、サンプルの評価を正確かつ短時間に実施できる。
また、第1の実施形態のシリアル通信システム1のチップセットでは、実セットシステムにおけるスキューの評価が個別に可能であるため、良品のチップセットのみを出荷することが可能となる。
また、第1の実施形態のシリアル通信システム1のチップセットでは、データのトグル位置が想定される範囲内にない場合にエラーフラグが立つ。
そのため、データとクロックとの間のスキューマージンが厳しいサンプルについては、調整が可能である場合でも良品と判断しないようにすることができる。
その結果、複数のチップセットでの品質を、高い品質とすることができる。
また、第1の実施形態のシリアル通信システム1のチップセットでは、第2集積回路3にのみ、既存のDLL回路43を用いたテスト機能を追加している。よって、第1の実施形態では、論理回路の追加を最小限に抑えて、テスト機能を実現できる。
また、第1の実施形態では、トグル位置の判断に複数回の測定結果を用いる。よって、第1の実施形態では、ジッタ等の影響を排除して、より正確な検出値を取り込んでスキュー調整および良品判定ができる。
【0114】
<第2の実施形態>
[シリアル通信システム1の構成]
第2の実施形態のシリアル通信システム1では、第1集積回路2と第2集積回路3とは、複数対の差動シリアルデータ信号により通信データを送受する。
【0115】
[第2集積回路3(シリアルパラレル変換装置)の構成]
図20は、第2の実施形態の第2集積回路3のブロック図である。
図20の第2集積回路3は、第1集積回路2から第2集積回路3へ送信される差動シリアルデータ信号がnビット(nは2以上の自然数)である場合の例である。
第2集積回路3は、n対のデータ入力端子24−1〜24−nと、一対のクロック入力端子23p,23mとを有する。
n対のデータ入力端子24−1〜24−nには、図示しない第1集積回路2のn対のデータ出力端子14から出力されたn対の差動シリアルデータ信号が入力される。
【0116】
また、第2集積回路3は、この他にも、各対の差動シリアルデータ信号毎の回路として、複数のデータコンパレータ41−1〜41−n、複数の負ラッチ回路44−1〜44−n、複数の正ラッチ回路45−1〜45−nを有する。
これにより、第2集積回路3は、n対のデータ入力端子24−1〜24−nに入力された差動シリアルデータ信号を、差動シリアルデータ信号毎にデータコンパレータ41−1〜41−nにより外シリアルデータ信号へ変換する。
また、第2集積回路3は、n個の外シリアルデータ信号を、外シリアルデータ信号毎に負ラッチ回路44−1〜44−nおよび正ラッチ回路45−1〜45−nによりラッチする。
また、第2集積回路3は、n個の外シリアルデータ信号の2×n個のラッチ信号をデマルチプレクサ47へ入力する。
【0117】
さらに、第2集積回路3のスキュー計測回路51は、各対の差動シリアルデータ信号毎の回路を有する。
具体的には、スキュー計測回路51は、複数の判定回路52−1〜52−n、複数のデータレジスタ53−1〜53−n、複数の排他論理和モジュール54−1〜54−nを有する。
また、スキュー計測回路51は、複数の排他論理和レジスタ55−1〜55−n、複数の多入力論理和回路56−1〜56−n、複数のエラーレジスタ57−1〜57−nを有する。
また、CPU62には、遅延量設定レジスタ63の他に、複数のチャネル別レジスタ81−1〜81−nを有する。
これにより、スキュー計測回路51は、複数の正ラッチ回路45−1〜45−nのラッチ信号を、正ラッチ回路45毎に判定し、各対の差動シリアルデータ信号毎の複数の判定値をデータレジスタ53−1〜53−nに記憶できる。
また、複数の排他論理和レジスタ55−1〜55−nおよび複数のエラーレジスタ57−1〜57−nは、各対の差動シリアルデータ信号毎の値を記憶できる。
【0118】
[シリアル通信システム1のスキュー調整処理および品質判定処理]
図21は、第2の実施形態での第2集積回路3のスキュー検出および調整処理のフローチャートである。
【0119】
スキュー検出および調整処理では、第2集積回路3に、一対の差動シリアルデータ信号および一対の差動クロック信号が入力される(ステップS21)。
第2集積回路3の制御部66は、タイミング制御回路58へテストスタート信号を出力する(ステップS22)。
テストスタート信号が入力されると、タイミング制御回路58は、スキュー計測処理を開始する。
タイミング制御回路58は、制御変数iに最初の遅延設定値「0」を設定し(ステップS23)、制御変数iと同じ値の遅延設定値「0」を遅延量セレクタ64へ出力する(ステップS24)。
これにより、DLL回路43は、遅延設定値「0」に対応する遅延量で外クロック信号を遅延させた内クロック信号を生成する。
複数の正ラッチ回路45−1〜45−nは、内クロック信号の立ち上がりタイミングにおいてそれぞれに入力される外シリアルデータ信号をラッチし、ラッチした信号レベルのラッチ信号を出力する。
複数の判定回路52−1〜52−nは、それぞれの正ラッチ回路45−1〜45−nのラッチ信号のレベルを複数回判定し、多い方の値をデータレジスタ53−1〜53−nへ出力する。
複数のデータレジスタ53−1〜53−nは、イネーブル回路59からイネーブル信号が入力されると、それぞれの判定回路52−1〜52−nの判定値を取り込む。
複数のデータレジスタ53−1〜53−nは、判定値を第iビットに記憶する(ステップS25)。
その後、所定のタイミングにおいて、タイミング制御回路58は、制御変数iが遅延設定値の最大値となったか否かを判断する(ステップS26)。
制御変数iが遅延設定値の最大値となっていない場合、タイミング制御回路58は、制御変数iに値1を加算し(ステップS27)、以上の処理(ステップS24〜S27)を繰り返す。
制御変数iが遅延設定値の最大値(ここでは16)になると、タイミング制御回路58は、検出値の取得処理を終了する。
これにより、複数のデータレジスタ53−1〜53−nには、複数の外シリアルデータ信号についての複数の判定値が、外シリアルデータ信号毎に記憶される。
【0120】
図22は、第0チャネルから第7チャネルまでの8個のデータレジスタ53−1〜53−nに記憶される複数の判定値の一例を示す図である。
第0チャネルでは、2個のエッジが検出されている。
第1チャネルでは、1個のエッジが検出されている。
第6チャネルでは、0個のエッジが検出されている。
そして、複数のデータレジスタ53−1〜53−nに複数の検出値が記憶されると、複数の排他論理和モジュール54−1〜54−nは、データレジスタ53−1〜53−n毎に2ビット毎の排他論理和を演算する。
排他論理和レジスタ55−1〜55−nは、データレジスタ53−1〜53−n毎の排他論理和の値を記憶する。
また、複数の多入力論理和回路56−1〜56−nは、それぞれの排他論理和レジスタ55−1〜55−nの第6ビットから第9ビットの4ビットの論理和を演算する。
複数のエラーレジスタ57−1〜57−nは、データレジスタ53−1〜53−n毎の論理和の値を記憶する。
これらの処理が終えた所定のタイミングで、タイミング制御回路58は、CPU62へテスト終了信号を出力する(ステップS28)。
【0121】
タイミング制御回路58からCPU62へテスト終了信号が入力されると、制御部66は、検出した値に基づいて、実動作時にDLL回路43に設定する遅延量の取得処理を開始する。
【0122】
制御部66は、まず、ループ制御変数jに0を代入する(ステップS51)。
制御部66は、第jチャネルの排他論理和レジスタ55の値を読み込み(ステップS29)、第jチャネルの排他論理和レジスタ55の値に含まれる値1のビットの個数を判断する(ステップS30、S32、S34)。
そして、第jチャネルの排他論理和レジスタ55のすべてのビットの値が0である場合、制御部66は、ステップS30でyesと判断する。
制御部66は、外クロック信号の位相において90度に相当する遅延量を取得し、第jチャネルのチャネル別レジスタ81−jに設定する(ステップS31)。
また、第jチャネルの排他論理和レジスタ55に値が1となるビットが2個ある場合、制御部66は、ステップS32でyesと判断する。
制御部66は、2つのビットの中央のビットの遅延量を取得し、第jチャネルのチャネル別レジスタ81−jに設定する(ステップS33)。
また、第jチャネルの排他論理和レジスタ55に値が1となるビットが1個ある場合、制御部66は、ステップS34でyesと判断する。
制御部66は、外クロック信号の位相においてそのビットと90度ずれた位置のビットの遅延量を取得し、第jチャネルのチャネル別レジスタ81−jに設定する(ステップS35〜S37)。
具体的には、値が1となる1つのビット[c]が7より小さい場合は、制御部66は、第jチャネルのチャネル別レジスタ81−jに「c+8」をセットする(ステップS36)。
一方、[c]が8以上の場合は、制御部66は、第jチャネルのチャネル別レジスタ81−jに「c−8」をセットする(ステップS37)。
また、第jチャネルの排他論理和レジスタ55に値が1となるビットが0から2個含まれていない場合、制御部66は、ステップS34でnoと判断する。
制御部66は、測定エラーと判断し、新たな遅延量を第jチャネルのチャネル別レジスタ81−jに設定することなく、スキュー調整処理を中断する(ステップS38)。
【0123】
ステップS31、S33、S36またはS37において第jチャネルのチャネル別レジスタ81−jに第jチャネルの値をセットした場合、制御部66は、ループ制御変数jが7に達したか否かを判断する(ステップS52)。
【0124】
ループ制御変数jが7に達していない場合、制御部66は、ループ制御変数jに1を加算する(ステップS53)。
また、制御部66は、新たな第jチャネルの排他論理和レジスタ55の値を読み込み、排他論理和レジスタ55の値に含まれる値1のビットの個数に応じて第jチャネルのチャネル別レジスタ81−jの値を更新する(ステップS29〜S38)。
各ループ制御において測定エラーと判断することなく、ループ制御変数jが7に達すると、制御部66は、ステップS52でyesと判断する。
制御部66は、複数のチャネル別レジスタ81−1〜81−nに記憶されたチャネル毎の遅延量を読み込み、その平均値を演算する(ステップS54)。
また、制御部66は、平均値を遅延量設定レジスタ63に記憶する。
【0125】
図22の場合、制御部66は、第0チャネルについては8ビットに対応する値8をセットし、第1チャネルについては7をセットし、第2チャネルについては8をセットし、第3チャネルについては9をセットする。
また、制御部66は、第4チャネルについては6をセットし、第5チャネルについては6をセットし、第6チャネルについては8をセットし、第7チャネルについては7をセットする。
よって、制御部66は、平均値として7.375(=(8+7+8+9+6+6+8+7)÷8)を演算し、遅延量設定値として7を取得する。
これにより、制御部66は、システム動作時に全てのデータを総合的に見たときに最もマージンがある位置に、DLL回路43による遅延位相量をセットできる。
【0126】
以上のスキュー調整処理を終えると、制御部66は、次に当該第2集積回路3および第1集積回路2の品質を判定する。
制御部66は、複数のエラーレジスタ57−1〜57−nの値を読み込み、複数のエラーレジスタ57−1〜57−nのうちの1つに1が含まれるか否かを判断する(ステップS39)。
そして、複数のエラーレジスタ57−1〜57−nのうちに値1が1つでも含まれる場合、制御部66は、第2集積回路3および第1集積回路2によるチップセットに不具合がある可能性があると判断する。
制御部66は、スキュー調整が良好に完了しなかった旨を第1集積回路2へ通知する(ステップS41)。
また、複数のエラーレジスタ57−1〜57−nの値がすべて0である場合、制御部66は、第2集積回路3および第1集積回路2が良品であると判断する。
制御部66は、良好にスキュー調整を完了した旨を第1集積回路2へ通知する(ステップS40)。
【0127】
以上のように、第2の実施形態の第2集積回路3は、複数の外シリアルデータ信号のそれぞれに最適な複数の遅延量を取得し、さらにその複数の遅延量の平均値を遅延量設定レジスタ63に設定する。
よって、第2集積回路3のDLL回路43は、実動作時には、その平均値の遅延量で遅延させた内クロック信号を生成する。
また、複数の正ラッチ回路45−1〜45−nおよび複数の負ラッチ回路44−1〜44−nは、その共通する内クロック信号のタイミングでそれぞれの外シリアルデータ信号をラッチする。
その結果、第2の実施形態では、複数のシリアルデータの全ビットの有効期間内において、データを適切にラッチすることができる。全ビットについて総合的に最適なラッチタイミングとなるように、内クロック信号の遅延量を設定できる。
例えば量産されたチップセットのテストにおいて上記処理を行って、全ビットについて最適なラッチタイミングとなる遅延量を遅延量設定レジスタ63に記憶することで、チップセットごとに最適な遅延量を設定することができる。
また、出荷する複数のチップセットを品質の良いものに揃えることができる。
【0128】
このように第2の実施形態のシリアル通信システム1では、第2集積回路3において、複数のシリアルデータ信号とクロック信号とのスキューを調整する。
よって、第2の実施形態では、第2集積回路3の設計時には、複数のチャネルのデータ入力端子24−1〜24−nから初段の複数のラッチ回路44−1〜44−n、45−1〜45−nまでの遅延値を大まかに揃えればよい。
そして、第2の実施形態では、この状態で、クロックとデータとのスキューを調整し、全ビットについて最適なラッチタイミングとなるように、内クロック信号の遅延量を設定できる。
このように第2の実施形態では、設計時の厳しいセットアップタイム、ホールドタイムのAC制約条件が緩和されるので、組み込み設計が容易になる。
また、このように第2の実施形態では、データビットが複数の場合にも、最も適した位置にクロックの位相を定めることができる。
【0129】
以上の実施の形態は、本発明の好適な実施の形態の例であるが、本発明は、これに限定されることはなく、種々の変形または変更が可能である。
【0130】
たとえば上記実施形態では、DLL回路43の複数の遅延回路71は、外クロック信号を180度遅らせるものである。また、DLL回路43は、内クロック信号を、180度を16分割した位相遅延量毎に変化する。
この他にも例えば、DLL回路43の複数の遅延回路71は、外クロック信号を360度遅らせるものであってもよい。
また、DLL回路43は、内クロック信号を、180度または360度をp(pは整数)分割した位相遅延量毎に変化させてもよい。DLL回路43による遅延量の分割値pの値を大きくすることで、より高い精度でスキューを判定できる。
【0131】
上記実施の形態では、第1集積回路2が、第2集積回路3に対して、テスト時の差動シリアルデータ信号および差動クロック信号を出力している。
この他にも例えば、シグナルジェネレータ装置、テスタ装置のATEなどから、第2集積回路3に対して、テスト時の差動シリアルデータ信号および差動クロック信号を出力するようにしてもよい。
【0132】
上記実施の形態では、テスト時に第2集積回路3に入力する外シリアルデータ信号として、0と1とを繰り返すクロック形式の外シリアルデータ信号を入力している。
この他にもたとえば、テスト時に第2集積回路3に対して、PRBS(Pseudo Random Bit Stream)などのクロック形式以外のパターンの外シリアルデータ信号を入力してもよい。
【0133】
上記実施の形態では、制御部66は、正ラッチ回路45の出力を判定し、その判定結果に基づいてスキューを調整している。
この他にもたとえば、制御部66は、負ラッチ回路44の出力を判定し、その判定結果に基づいてスキューを調整してもよい。
また、制御部66は、正ラッチ回路45および負ラッチ回路44の出力を判定し、それらの判定結果に基づいてスキューを調整してもよい。
【0134】
上記実施の形態では、第1集積回路2および第2集積回路3が共通のプリント基板4に実装されたる半導体システムにおいて、シリアル通信システム1が実現されている。
この他にも例えば、第1集積回路2と第2集積回路3とは別々のプリント基板4に実装されてもよい。
【0135】
図23は、第1集積回路2と第2集積回路3とが別々のプリント基板4に実装されているシリアル通信システム1の例である。
図23において、第1集積回路2は、第1コネクタ7とともに第1プリント基板5に実装されている。
また、第2集積回路3は、第2コネクタ8とともに第2プリント基板6に実装されている。
そして、第1プリント基板5の第1コネクタ7と第2プリント基板6の第2コネクタ8とは、複数の信号線を有する信号ケーブル9により接続されている。
この場合、第1集積回路2は、第1プリント基板5、第1コネクタ7、信号ケーブル9、第2コネクタ8および第2プリント基板6を通じて、第2集積回路3へ差動シリアルデータ信号および差動クロック信号を送信する。
【0136】
なお、図23において、第1プリント基板5の第1コネクタ7と第2プリント基板6の第2コネクタ8とは、信号ケーブル9の代わりに、コンピュータ装置の拡張基板を装着するバックプレーンバス用の基板などに接続されていてもよい。
【0137】
また、シリアル通信システム1のパラレルシリアル変換装置またはシリアルパラレル変換装置は、単一の集積回路に集積化されていなくてもよい。
パラレルシリアル変換装置またはシリアルパラレル変換装置は、たとえば複数のディスクリート素子を組み合わせて実現されていてもよい。
たとえばパラレルシリアル変換装置は、図2中の各ブロックを実現するディスクリート素子を組み合わせて実現してもよい。
【符号の説明】
【0138】
1…シリアル通信システム(集積回路システム)、2…第1集積回路(パラレルシリアル変換装置)、3…第2集積回路(集積回路、シリアルパラレル変換装置)、23p、23m…クロック入力端子、24p、24m、24−1〜24−n…データ入力端子(シリアルデータ入力端子)、43…DLL回路(クロック遅延回路)、44、44−1〜44−n…負ラッチ回路(ラッチ回路)、45、45−1〜45−n…正ラッチ回路(ラッチ回路)、52、52−1〜52−n…判定回路(ラッチ判定回路)、53、53−1〜53−n…データレジスタ(記憶部)、58…タイミング制御回路(遅延量設定回路)、63…遅延量設定レジスタ、66…制御部(遅延量取得部、品質判定部)

【特許請求の範囲】
【請求項1】
入力された外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路と、
入力されたデータ信号を前記内クロック信号によりラッチするラッチ回路と、
前記クロック遅延回路に対して、前記外クロック信号に対する前記内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路と、
前記複数の遅延量それぞれの設定の下での前記ラッチ回路の出力信号を判定するラッチ判定回路と、
前記ラッチ判定回路による前記複数の遅延量それぞれについての複数の判定値を記憶する記憶部と、
前記記憶部に記憶された前記複数の判定値と前記クロック遅延回路に設定した複数の遅延量との関係から、前記クロック遅延回路による前記内クロック信号の遅延量を取得する遅延量取得部と
を有する集積回路。
【請求項2】
前記遅延量設定回路が前記クロック遅延回路に設定する前記複数の遅延量は、
当該複数の遅延量のうちの最大の遅延量と最小の遅延量との遅延量差が、前記外クロック信号の半周期以上であり、
前記ラッチ判定回路は、
前記ラッチ回路の出力信号のレベルを二値に判定し、
前記記憶部は、
前記ラッチ判定回路により前記複数の遅延量について判定される複数の二値の判定値を1ビット毎に記憶するレジスタに、遅延量の大きさの順番に並べて記憶し、
前記遅延量取得部は、
前記レジスタでの値の変化点の個数に応じた取得方式により、前記クロック遅延回路による前記内クロック信号の遅延量を取得する
請求項1記載の集積回路。
【請求項3】
前記遅延量取得部は、
前記レジスタにおいて隣接する2ビット毎に、当該2ビットの排他論理和の値を複数取得し、
複数の前記排他論理和の値に含まれる値1の個数を、前記レジスタでの値の変化点の個数とする
請求項2記載の集積回路。
【請求項4】
前記遅延量取得部は、
前記外クロック信号の半周期内に含まれる複数の遅延量のビットについての前記複数の排他論理和の値に値1が2個含まれる場合、
前記クロック遅延回路による前記内クロック信号の遅延量として、前記レジスタにおいて、前記排他論理和の値を値1にした2組の2ビットそれぞれから選択された2個のビットの中央に位置するビットの遅延量を取得する
請求項3記載の集積回路。
【請求項5】
前記遅延量取得部は、
前記外クロック信号の半周期内に含まれる複数の遅延量のビットについての前記複数の排他論理和の値に値1が1個含まれる場合、
前記クロック遅延回路による前記内クロック信号の遅延量として、前記レジスタにおいて、前記排他論理和の値を値1にした2ビットから選択された1ビットと前記外クロック信号の位相において90度ずれた位置のビットの遅延量を取得する
請求項4記載の集積回路。
【請求項6】
前記遅延量取得部は、
前記外クロック信号の半周期内に含まれる複数の遅延量のビットについての前記複数の排他論理和の値に値1が0個含まれる場合、
前記クロック遅延回路による前記内クロック信号の遅延量として、前記外クロック信号の位相において90度に相当する遅延量を取得する
請求項5記載の集積回路。
【請求項7】
前記遅延量取得部は、
前記外クロック信号の半周期内に含まれる複数の遅延量のビットについての前記複数の排他論理和の値に値1が0から2個含まれていない場合、
測定エラーと判断し、
前記クロック遅延回路による前記内クロック信号の遅延量を新たに取得しない
請求項6記載の集積回路。
【請求項8】
当該集積回路は、
当該集積回路の品質を判定する品質判定部を有し、
前記品質判定部は、
前記複数の遅延量のうち、前記外クロック信号の位相において所定の位相遅れ範囲に含まれる複数の遅延量についての複数の判定値の排他論理和の値に値1が含まれない場合、当該集積回路を良品と判定する
請求項3記載の集積回路。
【請求項9】
前記品質判定部は、
前記外クロック信号の位相において90度の位相遅れを基準とした所定の位相遅れの角度範囲に含まれる複数の遅延量についての複数の判定値の排他論理和の値に値1が含まれない場合、当該集積回路を良品と判定する
請求項8記載の集積回路。
【請求項10】
前記ラッチ判定回路は、
前記遅延量設定回路による各遅延量の設定の下での前記ラッチ回路の出力信号を複数回判定し、
前記記憶部は、
各遅延量の設定の下で前記ラッチ判定回路が判定した複数の二値の判定値において、値1および値0のうち判定回数が多い値を、当該各遅延量の設定の下での判定値として記憶する
請求項3記載の集積回路。
【請求項11】
前記遅延量設定回路は、
テスト用の外クロック信号およびデータ信号が入力されている状態で、前記クロック遅延回路に対して複数の遅延量を設定し、
前記遅延量取得部は、
前記記憶部に記憶された前記複数の判定値と前記クロック遅延回路に設定した複数の遅延量との関係から、実際の外クロック信号およびデータ信号
が入力される実使用時の前記クロック遅延回路の遅延量を取得する
請求項1記載の集積回路。
【請求項12】
当該集積回路は、
前記ラッチ回路を、入力される複数のデータ信号それぞれに対応して複数有し、
前記ラッチ判定回路は、
複数の前記ラッチ回路の複数の出力信号それぞれについて前記複数の遅延量での複数の判定値を判定し、
前記記憶部は、
前記ラッチ判定回路により判定された複数のラッチ回路の複数の出力信号それぞれについての複数の遅延量での複数の判定値を記憶し、
前記遅延量取得部は、
前記記憶部に記憶された複数の前記ラッチ回路の複数の遅延量での複数の判定値から、前記クロック遅延回路による前記内クロック信号の遅延量を取得する
請求項1記載の集積回路。
【請求項13】
前記遅延量取得部は、
複数の前記ラッチ回路それぞれについて、各前記ラッチ回路の複数の遅延量での複数の判定値に基づいて当該各前記ラッチ回路に適した遅延量を取得し、
取得した前記ラッチ回路毎の複数の前記遅延量の平均値を、前記クロック遅延回路による前記内クロック信号の遅延量として取得する
請求項12記載の集積回路。
【請求項14】
データ信号および前記データ信号をラッチするための外クロック信号を出力する第1集積回路と、
前記データ信号および前記外クロック信号が入力される第2集積回路と
を有し、
前記第2集積回路は、
入力された前記外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路と、
入力された前記データ信号を前記内クロック信号によりラッチするラッチ回路と、
前記クロック遅延回路に対して、前記外クロック信号に対する前記内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路と、
前記複数の遅延量それぞれの設定の下で、前記ラッチ回路の出力信号を判定するラッチ判定回路と、
前記ラッチ判定回路による前記複数の遅延量それぞれについての複数の判定値を記憶する記憶部と、
前記記憶部に記憶された前記複数の判定値と前記クロック遅延回路に設定した複数の遅延量との関係から、前記クロック遅延回路による前記内クロック信号の遅延量を取得する遅延量取得部と
を有する集積回路システム。
【請求項15】
入力された外クロック信号を遅延させた内クロック信号を出力するクロック遅延回路と、
入力されたシリアルデータ信号を前記内クロック信号によりラッチするラッチ回路と、
前記クロック遅延回路に対して、前記外クロック信号に対する前記内クロック信号の遅延量として、複数の遅延量を設定する遅延量設定回路と、
前記複数の遅延量それぞれの設定の下での前記ラッチ回路の出力信号を判定するラッチ判定回路と、
前記ラッチ判定回路による前記複数の遅延量それぞれについての複数の判定値を記憶する記憶部と、
前記記憶部に記憶された前記複数の判定値と前記クロック遅延回路に設定した複数の遅延量との関係から、前記クロック遅延回路による前記内クロック信号の遅延量を取得する遅延量取得部と
を有するシリアルパラレル変換装置。
【請求項16】
データ信号と、前記データ信号をラッチ回路でラッチするためのクロック信号とのスキューを調整するために、前記クロック信号についての複数の遅延量から1つの遅延量を選択するステップと、
選択した遅延量で前記ラッチ回路に入力される前記クロック信号を遅延させるステップと、
選択した遅延量により遅延させた前記クロック信号を用いてラッチした前記ラッチ回路の出力信号を判定する判定ステップと、
前記判定ステップにより判定された前記複数の遅延量それぞれについての複数の判定値を記憶部に記憶するステップと、
前記記憶部に記憶された前記複数の判定値と前記複数の遅延量との関係から、前記クロック信号の遅延量を取得するステップと、
取得された前記遅延量により前記クロック信号を遅延し、当該遅延されたクロック信号を用いて前記ラッチ回路により前記データ信号をラッチするステップと
を有するスキュー調整方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2010−263408(P2010−263408A)
【公開日】平成22年11月18日(2010.11.18)
【国際特許分類】
【出願番号】特願2009−112649(P2009−112649)
【出願日】平成21年5月7日(2009.5.7)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】