(58)【調査した分野】(Int.Cl.,DB名)
位相調整したクロックで取り込んだ入力データの位相ずれを検出し、検出した位相ずれに基づいて前記クロックの位相を制御する位相制御データを生成するCDR制御回路であって、
前記位相ずれにおけるオーバー変化を検出する変化検出回路と、
前記変化検出回路によるオーバー変化検出時に、前記オーバー変化検出時より前の前記位相ずれである変化前位相ずれを、前記位相ずれとして所定期間中出力する選択回路と、
前記位相ずれを記憶する記憶回路と、を有し、
前記変化検出回路は、
前記オーバー変化検出時より前記記憶回路に記憶された第1時間前の時刻における前記位相ずれと現在の前記位相ずれの差を変化量として算出し、
追従可能最大変化量から決定した前記第1時間前の時刻における前記位相ずれのリミットと、算出した前記変化量と比較し、前記変化量が前記リミットを超えた時に、前記オーバー変化が発生したと判定し、
前記選択回路は、
前記オーバー変化検出時の後の前記所定期間以外の時に、前記位相ずれのデータを出力し、
前記オーバー変化検出時の後の前記所定期間中に、前記第1時間より長い第2時間前の時刻における前記位相ずれのデータを、前記変化前位相ずれのデータとして出力し、
前記所定期間中には、前記変化前位相ずれに基づいて前記位相制御データを生成することを特徴とするCDR制御回路。
位相調整したクロックで取り込んだ入力データの位相ずれを検出し、検出した位相ずれに基づいて前記クロックの位相を制御する位相制御データを生成するCDR制御回路であって、
前記位相ずれにおけるオーバー変化を検出する変化検出回路と、
前記変化検出回路によるオーバー変化検出時に、前記オーバー変化検出時より前の前記位相ずれである変化前位相ずれを、前記位相ずれとして所定期間中出力する選択回路と、
前記位相ずれを記憶する記憶回路と、を有し、
前記変化検出回路は、
前記オーバー変化検出時より前記記憶回路に記憶された第1時間前の時刻における前記位相ずれと現在の前記位相ずれの差を変化量として算出し、
追従可能最大変化量から決定した前記第1時間前の時刻における前記位相ずれのリミットと、算出した前記変化量と比較し、前記変化量が前記リミットを超えた時に、前記オーバー変化が発生したと判定し、
前記記憶回路は、
前記位相ずれの変化に同期した基本クロックの分周クロックを発生する分周回路と、
初段に前記位相ずれが入力され、2段目以降前段の出力が入力されるように形成され、前記分周クロックまたは前記分周クロックの反転クロックに同期して各段のラッチが行われる複数段のラッチ回路と、を有し、
前記変化検出回路は、前記複数段のラッチ回路の初段以外の出力と現在の前記位相ずれの差を変化量として算出し、
前記選択回路は、前記オーバー変化検出時に、前記複数段のラッチ回路のうち、前記変化検出回路が前記変化量の算出に利用した段より後段の出力を、前記位相ずれとして前記所定期間中出力し、
前記所定期間中には、前記変化前位相ずれに基づいて前記位相制御データを生成することを特徴とするCDR制御回路。
位相調整したクロックで取り込んだ入力データの位相ずれを検出し、検出した位相ずれに基づいて前記クロックの位相を制御する位相制御データを生成するCDR制御回路であって、
前記位相ずれにおけるオーバー変化を検出する変化検出回路と、
前記変化検出回路によるオーバー変化検出時に、前記オーバー変化検出時より前の前記位相ずれである変化前位相ずれを、前記位相ずれとして所定期間中出力する選択回路と、
前記位相ずれを記憶する記憶回路と、を有し、
前記変化検出回路は、
前記オーバー変化検出時より前記記憶回路に記憶された第1時間前の時刻における前記位相ずれと現在の前記位相ずれの差を変化量として算出し、
追従可能最大変化量から決定した前記第1時間前の時刻における前記位相ずれのリミットと、算出した前記変化量と比較し、前記変化量が前記リミットを超えた時に、前記オーバー変化が発生したと判定し、
前記選択回路は、前記変化検出回路が検出した前記変化量が前記リミットを超えた時の前記変化量の値から、前記選択回路が前記変化前位相ずれを出力する前記所定期間の長さを変更し、
前記所定期間中には、前記変化前位相ずれに基づいて前記位相制御データを生成することを特徴とするCDR制御回路。
位相調整したクロックで取り込んだ入力データの位相ずれを検出し、検出した位相ずれに基づいて前記クロックの位相を制御する位相制御データを生成するCDR制御方法であって、
初期ロックが完了した後、
現在の位相ずれを検出し、
前記現在より第2時間前の時刻における位相ずれを更新して保持し、
前記現在より第1時間前の時刻における前記位相ずれと前記現在の位相ずれの差を変化量として算出し、前記第1時間当たりの前記位相ずれのリミット値と比較し、
前記変化量が前記リミット値を超えない時、前記現在の位相ずれに基づいて前記位相制御データを生成するCDR通常動作を行い、前記変化量が前記リミット値を超える時、前記CDR通常動作を停止し、所定期間中、前記第2時間前の時刻における位相ずれに基づいて前記位相制御データを生成し、
前記所定期間経過後、現在の位相ずれに基づいて前記位相制御データを生成する前記CDR通常動作を再開し、
前記リミット値は、
制御対象の設定から、前記第1時間当たりの前記位相ずれの変化可能最大値を算出し、
制御対象の制御品質から、前記第1時間当たりの前記位相ずれの必要な変化量を算出し、
前記変化可能最大値および前記必要な変化量から設定されることを特徴とするCDR制御方法。
【発明を実施するための形態】
【0014】
図1は、実施形態のCDR(クロックデータリカバリィ)回路の構成を示す図である。
実施形態のCDR回路は、PLL(Phase Locked Loop)回路11と、フェーズインターポレータ(Phase Interpolator: PI)12Aおよび12Bと、と有する。CDR回路は、ディシジョンラッチ(Decision Latch: DL)13と、DES(De-serializer)14と、デジタルフィルタ(Digital Filter: DF)15と、をさらに有する。CDR回路は、差動入力データDP、DMを受信する。実施形態のCDR回路は、DF15がリミット超変化検出制御部16を有していることが、一般的なCDR回路と異なり、他の部分は同じである。まず、リミット超変化検出制御部16以外の部分について説明する。
【0015】
実施形態では、差動入力データDPおよびDMは、転送クロックに同期してダブルデータレートで転送されるものとする。PLL回路11は、入力データDPおよびDMの転送クロックに近似したクロックで90°ずつ位相が異なる4相クロックPLL_2BITCLKA, PLL_2BITCLKB, PLL_2BITCLKAX, PLL_2BITCLKBXを発生する。したがって、4相のクロックの周波数は、送信側で発生される転送クロックの周波数に近似しているが、一致はしていない。
【0016】
PI12Aおよび12Bは、DF15の出力するPIコードPI_CODE[7:0]に基づいて4相クロックを合成し、90℃の位相差を保ったまま一律位相シフトした4相サンプリングクロックPI_2BITCLKA, PI_2BITCLKB, PI_2BITCLKAX, PI_2BITCLKBXを生成する。
【0017】
DL13は、入力データDPを2相クロックPI_2BITCLKAおよびPI_2BITCLKAXでラッチしデータD[1:0]を出力する2個のラッチと、DMを2相クロックPI_2BITCLKBおよびPI_2BITCLKAXでラッチしバウンダリィB[1:0]を出力する2個のラッチと、を有する。
【0018】
DES14は、2ビットのデータD[1:0]およびバウンダリィB[1:0]をそれぞれ8ビットのデータDATA[7:0]およびバウンダリィBOND[7:0]に変換する。データDATA[7:0]は、受信データDATA[7:0]として出力される。
【0019】
DF15は、データDATA[7:0]およびバウンダリィBOND[7:0]から、入力データDPおよびDMの多相クロックに対する位相ずれを検出し、位相ずれを無くすようにPIコードPI_CODE[7:0]を変化させる。
【0020】
PLL回路11は広く知られているので説明は省略する。また、DL13は、ラッチ回路であり、説明は省略する。
図2は、DES14の回路構成を示す図である。
【0021】
DES14は、PI12Aおよび12Bから出力された4相サンプリングクロックPI_2BITCLKA, PI_2BITCLKB, PI_2BITCLKAX, PI_2BITCLKBXおよびDL13から出力されたデータD[1:0]およびバウンダリィB[1:0]を受ける。ここでは、PI_2BITCLKA, PI_2BITCLKB, PI_2BITCLKAX, PI_2BITCLKBXを、CLKA、CLKB、CLKAX、CLKBXで表し、D[1:0]およびB[1:0]を、D1、D2、B1およびB2で表す。
【0022】
DES14は、2個の1/2分周回路21および22と、6個の2:4デマルチプレクサ(2:4DeMux)23−28と、を有する。
1/2分周回路21は、4相クロックを1/2分周し、1/2分周回路22は、1/2分周された4相クロックをさらに1/2分周する。1/2分周回路22は、例えば、CLKAを1/4分周したクロックをOCLKとして出力する。OCLKは、DF15に供給され、基本クロックとして利用される。
【0023】
2:4DeMux23は、1/2分周されたCLKAおよびCLKAXに応じて、2ビットのD1およびD2を4ビットのデータに変換する。2:4DeMux24は、1/2分周されたCLKBおよびCLKBXに応じて、2ビットのB1およびB2を4ビットのデータに変換する。2:4DeMux25−28は、1/4分周されたCLKAおよびCLKAXに応じて、2:4DeMux23および2:4DeMux24を1/2分周し、8ビットのデータDO[7:0]およびバウンダリィBO[7:0]を出力する。なお、2:4DeMux25−28は、パラレル変換したDO[7:0]およびB[7:0]を出力する時に、CLKAを1/4分周したクロック、すなわちOCLKに同期して、すなわち同時に出力するものとする。
【0024】
図3は、DF15の構成を示す図である。
DF15は、フェーズディテクトコンパレータ(Phased Detect Comparator: PDC)31と、増幅器32と、加算器33と、周波数レジスタ(Freg)34と、を有する。DF15は、増幅器35と、加算器36と、位相レジスタ(Preg)37と、PIコードエンコーダ(PI Code Encoder)38と、をさらに有する。
【0025】
DF15は、DES14からのパラレル変換したデータ、バウンダリの値を、PDC31により4相サンプリングクロックの位相が入力データDP、DMに対して早いか遅いかを検出し、Preg37で平均化し後、PI_CODEとして出力する。PI_CODEは、サンプリングクロック(CKA,CKAX)の変化がデータの真ん中にくるように調整される。この例では、DF15は、ビットクロックの4周期(4UI)分の周期のクロックで動作しており、PDC31で検出される早い/遅い/どちらでもないは4UIの平均である。Freg34は、積分要素としてPreg37よりも長い期間の位相変異を検出し、その検出結果をPreg37に加える。増幅器35および32のゲインは、GAINPとGAINFであり、図示していないCPUにより設定される定数である。Preg37は、2の補数で表されるバイナリーコードを生成し、変化時のヒゲを無くすためサーモメータコードであるPI_CODEに変換する。位相ずれを表す数値としては、Preg値の方がPI_CODEより直接的に位相ずれを表す。
【0026】
図4は、PDC31の構成を示す図である。
PDC31は、4個のPDC機能ユニット(pdc_func)41−44と、3個の加算器47−49と、を有する。
【0027】
図5は、PDC機能ユニットの入力値に対する出力値の表を示す図である。なお、
図5の表において、記載している以外のデータは、データ(Data)−バウンダリィ(Boundary)−データ(Data)が”010”または”101”を含むため、表に無くてもグリッチとして処理される。
PDC機能ユニット41−44は、DATA[7:0]およびBOND[7:0]を、
図4に示すように5ビットずつ受ける。隣接するPDC機能ユニットは1ビットを重複して受ける。PDC機能ユニット46は、D1、B0、D0に加えて、ラッチ45および47に保持された8UI前のD7およびB7を受ける。
【0028】
PDC機能ユニット41−44のそれぞれは、サンプリングクロックが真ん中の位相でデータを叩いているかを、データ値Dとその前後90°位相がずれた位置でラッチした値であるバウンダリデータBを比較して算出する。進みの場合は−1、遅れの場合は1、真ん中又はデータ変化が無い場合は0として、2ビット変化を同時に比較するため、結果は、−2、−1、0、1、2の5種類あり、それを3ビットの2の補数で出力する。
【0029】
4個のPDC機能ユニット41−44の出力値は、加算器47−49により加算されて和が算出され、−8から8までの位相ずれデータが、5ビットの2の補数として出力される。また、8UI中にグリッチを検出した場合は、前の8UIの結果を踏襲して出力する。
【0030】
最終的に、PDC31は、DF15の処理単位である8UI毎に位相の具合を示す2ビットのデータpdc[1:0]、すなわち進んでいることを示す2ビットのデータ"11"、遅れていることを示すデータ"01"、および真ん中であることを示すデータ"00"を出力する。
【0031】
図6は、増幅器32、加算器33およびFreg34の部分の構成を示す図である。
増幅器32は、GAINF[8:0]に−1を乗じる増幅器であり、図示はしていないがGAINF[8:0]に+1を乗じる増幅器も実質的に有しているといえる。加算器33は、freg[11:0]の値にGAINF[8:0]を加える加算器33Aと、freg[11:0]の値に-GAINF[8:0]を加える加算器33Bと、を含む。加算器33は、PDC[1:0]に応じてfreg[11:0]の値、加算器33Aの出力および加算器33Bの出力のいずれかFreg34に設定する選択回路を更に含む。Freg34自体は、12ビットの1本のレジスタであり、freg[11:0]を保持する。
【0032】
図6に示す回路で、現在のfreg[11:0]の値に、GAINFの値を進み遅れ情報(PDC)に応じて足したり引いたりすることで、進み遅れ情報の積分値を得る。例えば、PDC[1:0]で位相が進んでいる場合、Preg37にはより早くそれが反映されるため、すぐ遅らせる方向にPI12Aおよび12Bを動かすのに対し、Freg34の場合はGAINが低く、進み遅れ情報が徐々に積算されるようになっている。進み方向に積算された場合は位相が進み方向に変化していると分かるため、Freg34の出力値をPreg37に加えることにより積極的に遅らせる要素となっている。平均値とFregの出力値との違いは、fregはPDC出力の積分値であり、これをpregに足すことで周波数的追従動作を行うことができる。
【0033】
図7は、増幅器35、加算器36およびPreg37の部分の構成を示す図である。
増幅器35は、GAINP[8:0]に8を乗じる増幅器35Aと、GAINP[8:0]に−8を乗じる増幅器35Bと、を有する。加算器36は、preg[16:0]の値に増幅器35Aおよび35Bの出力を加算する加算器36Aおよび36Bと、PDC[1:0]に応じてpreg[16:0]の値、加算器35Aおよび35Bの出力のいずれかを選択する選択回路36Cと、を有する。加算器36は、選択回路36Cの出力にfreg[16:0]を加算する加算回路36Dをさらに有する。Preg37自体は、17ビットの1本のレジスタであり、preg[16:0]を保持する。
【0034】
図7のPreg37の部分は、pregの現在の値に、GAINPの値を進み遅れ情報(PDC)に応じて足したり引いたりする点では
図6のFreg34の部分と同様である。しかし、GAINFに比べてGAINPは大きな値に設定され、
図7に示すように、内部ではさらに8倍しているので、進み遅れ情報が早くPregに反映される。また、Fregも足し込まれるため、長い周期の位相の揺らぎを反映させることができる。
【0035】
図8は、PIコードエンコーダ(PI Code Encoder)38が、pregからPI_CODEを生成する変換表を示す図である。
PIコードエンコーダ38は、preg[16:0]の内の上位6ビットからO_PICODED[10:0]を生成する。位相調整時に、pregは変化ビットが多いためそのままPIコードとして使用したのではクロックにひげが乗るため、PIコードエンコーダ38は、PIコードに合ったコードに変換する。
【0036】
図9は、PI12Aの回路構成を示す図である。
図9では、PLL_2BITCLKAをINAで、PLL_2BITCLKAXをINAXで、PLL_2BITCLKBをINBで、PLL_2BITCLKBXをINBXで、PI_CODE[7:0]をPICODEで示している。
PI12Bも
図9の回路構成を有するが、INAおよびINAXとINBおよびINBXの入力位置が交換される。
【0037】
PI12Aは、4個の電流型D/A変換器(IDAC A)(IDAC AX)(IDAC B)(IDAC BX)71−74を有する。各IDACは、相補クロック(例えば、INAとINAX)をPICODEで示される混合比で混合する。4個のIDACの差動出力をそれぞれ電流加算した後、ローパスフィルタ75および76で高周波成分を除去し、さらにバッファ(BUFF)77で信号変化を急峻にする。これにより、PICODEに対応する位相ずらしたサンプリングクロックPI_2BITCLKA,PI_2BITCLKAXが生成される。
【0038】
図10は、実施形態のCDR回路における動作を示すタイムチャートである。
図10は、差動入力データDPおよびDMの位相と、サンプリングクロックPI_2BITCLKA, PI_2BITCLKB,PI_2BITCLKAX,PI_2BITCLKBXの位相が合致している状態を示す。
【0039】
図10の状態では、入力データDPおよびDMの真ん中をサンプリングクロックPI_2BITCLKAおよびPI_2BITCLKAXの立ち上りエッジでラッチする。この時、PI_2BITCLKBおよびPI_2BITCLKBXの立ち上りエッジは、入力データDPおよびDMの変化エッジに一致する。そのため、例えば、PI_2BITCLKBでサンプリングした値は、PI_2BITCLKAおよびPI_2BITCLKAXでサンプリングした値のいずれかに一致する。この状態の時、一般に、PDC31の2ビット出力は、“00”となり、真ん中であることを示す。
【0040】
図11は、実施形態のCDR回路における動作を示すタイムチャートであり、(A)はサンプリングクロックが入力データDPおよびDMに対して早い状態を、(B)が遅い状態を示す。
【0041】
図11の(A)に示すように、早い状態では、PI_2BITCLKAとPI_2BITCLKB、またはPI_2BITCLKAXとPI_2BITCLKBXが同じテータをラッチすることになり、PDC31の2ビット出力は“11”となり、サンプリングクロック全体を遅らせる方向に制御する。
【0042】
図11の(B)に示すように、遅い状態では、PI_2BITCLKAとPI_2BITCLKBX、またはPI_2BITCLKAXとPI_2BITCLKBが同じテータをラッチすることになり、PDC31の2ビット出力は“01”となり、サンプリングクロック全体を早める方向に制御する。
【0043】
以上説明したCDR回路の構成および動作は、広く知られており、これ以上の説明は省略する。なお、以下に説明する実施形態は、上記で説明したCDR回路の構成および動作に限定されず、同様の機能が実現できる構成であれば適用可能である。
【0044】
CDR回路は、位相差の変化が緩やかであれば、上記のように変化に追従し、ロック状態が維持される。データジッタ(入力データの位相変動)量は、規格により決まっており、その範囲のジッタであれば追従可能である。
【0045】
しかし、位相差の急激な変化が発生すると、ロック状態から外れ、変化に追従できない場合がある。例えば、電源変動やノイズにより、規定を超えた大きなジッタ(Time Interval Error: TIE)が一時的に発生することがある。この時、CDR回路は、このTIEの大きな変動に追従するように動作するが、追従できない場合、ロック外れが発生し、同期エラーが発生する。
【0046】
CDR回路は、その制御特性の関係で、ロック外れ後もフィードバック動作を繰り返すことになるが、それでもTIEの動きに追従できない場合、同期エラーが頻発し、TIE収束後もロック状態になるまでの時間が長くなる。そのため、TIE収束後も同期エラーがしばらくの間残る。
【0047】
上記のような大きなTIEが発生するのは、受信または送信の開始時や、転送方向の切り替え時等に多いため、パケットの先頭の同期パターン部分で起きることが多い。例えば、PC(パーソナルコンピュータ)または携帯端末とメモリカードの間の通信経路は、複数のチャネルを有し、状況に応じて通信方向の経路の割合を随時変更する。例えば、メモリカードは、複数のチャネルを有し、相手先からの受信経路と相手先への送信経路の割合を変更する。このような受信経路から送信経路への変更またはその逆の変更に伴い、メモリカードは入出力経路を受信用または送信用に切り替える。例えば、ある経路が受信経路または送信経路として動作している時に、他の経路を受信経路から送信経路へまたはその逆に変更する時、切り替えに伴い比較的大きなノイズが発生する。このノイズは、その時点で動作している受信回路または送信回路にも影響し、一時的に大きなジッタを発生する。これはメモリカードと通信するPCまたは携帯端末でも同様である。
【0048】
上記のような大きなジッタが発生すると、一時的であっても、CDR回路のロックが外れ、再ロックまでに時間を要し、データ部分の到達までに通信可能な状態への復帰が間に合わないという事態が発生する。
【0049】
以下に説明する実施形態では、大きなジッタ(TIE)が発生し、一時的にロックが外れても、TIEが収束した後は、速やかにロック状態に復帰できるCDR回路、CDR制御回路およびCDR制御方法が開示される。
【0050】
図12は、第1実施形態のCDR回路のデジタルフィルタ(DF)の回路構成を示すブロック図である。
図1に示すように、第1実施形態のCDR回路は、DF15がリミット超変化検出制御部16を有することがこれまでと異なり、他の部分は一般的なCDR回路を同じである。また、第1実施形態のDF15は、
図3の一般的なDFの構成に、Preg[16:0]を記憶する記憶回路(メモリ)(Preg Mem)81と、制御回路(Control)82と、選択回路83と、を有する。言い換えれば、リミット超変化検出制御部16は、メモリ81と、制御回路82と、選択回路83と、を有する。
【0051】
メモリ81は、Preg37の出力するPreg[16:0]を、所定数分記憶し、記憶内容を順次更新する。したがって、メモリ81は、現時点のPreg[16:0]から所定数前までのPreg[16:0]を記憶している。
選択回路83は、制御回路82の制御により、Preg37の出力するPreg[16:0]とメモリ81の出力する時間T2前のPreg[16:0]のいずれかを選択して、PIコードエンコーダ38に出力する。
【0052】
制御回路82は、Preg37から新たに出力されるPreg[16:0]と、メモリ81に記憶された時間T1前のPreg[16:0]との差を変化量として算出し、変化量が設定したリミット値より大きいか判定する。そして、制御回路82は、判定結果に応じて、選択回路83を制御する選択信号SelT2を出力する。具体的には、制御回路82は、変化量が設定したリミット値より小さい時には、選択回路83がPreg37から新たに出力されるPreg[16:0]を選択するように制御する。制御回路82は、変化量が設定したリミット値より大きい時には、メモリ81が時間T2前のPreg[16:0]を出力するように制御すると共に、選択回路83がメモリ81の出力するT2前のPreg[16:0]を選択するように制御する。
【0053】
これにより、位相ずれの変化量があらかじめ設定したリミット値より大きい時には、追従不可能なTIEが来たものとして、大きなTIEが来る前の過去のPregの値に固定して追従しないようにし、TIEが収束するまでやり過ごす。さらに、再ロックするまでに要する時間を短くして、データ受信におけるミスを減らし、制御コードの読み違いによるアボートやハングアップを防止する。
【0054】
図13は、第1実施形態のCDR回路のリミット超変化検出制御部16の設定処理および動作処理を示すフローチャートである。
ステップS10で、準備(設定)処理を開始する。この処理は、CDR回路を搭載する半導体装置を、機器に組み込む時に行われる。
【0055】
ステップS11で、DF15のゲイン設定から、DF15の一定量の動作クロック時間T1当たりのPreg変化可能最大値を算出する。ここで、DF15の動作クロックの周期は、DF15が新しいPregを出力するサイクルに相当する。例えば、PDCによりクロック位相が早い(又は遅い)状態が検出され続けた場合にPI_CODEの変化量の最大値は、GAINP=25、GAINF=0の場合、ΔPI_CODE/4UI=GAINP×8/1024=0.195 [CODE/4UI]、ΔPI_CODE/100UI=4.875 [CODE/100UI]とする。
【0056】
ステップS12で、ジッタ耐性仕様から、時間T1当たり必要なPreg変化量を算出する。例えば、仕様1.4UI(234kHz)の場合、PIの分解能が1UI当たり32Codeだとすると、1.4UIは、44.8CODEである。これが234kHzのSin波の1/4(=1/234k/4=1.068us)に相当する。これをUI時間に直すと、1.068us/641ps=1666.7UIとなる。よって、1666.7UIあたり44.8Codeだから、100UIあたり2.68Codeとなる。
【0057】
ステップS13で、Preg変化可能最大値と時間T1当たり必要なPreg変化量の間に、時間T1当たりのPreg変化リミット値を設定する。例えば、4.875Codeと2.68Codeの間の、100UI当たり4Codeをリミット値とする。
【0058】
ステップS11からS13で決定したリミット値を制御回路82に設定する。なお、時間T1は、追従を停止する大きさのジッタであることが判定可能なように適宜決定し、上記の例では、T1=100UIである。また、後述する時間T2は、大きなジッタの発生を検出した時より前の時間で、十分に安定していたとみなせる時間であり、当然T1より大きな値であり、例えば、T2=200〜600UIの何れかに設定する。T1およびT2は、機器に組み込む時に任意に設定できることが望ましく、制御回路82は、設定されたT1およびT2を記憶するレジスタを有するようにする。メモリ81は、例えばFIFOメモリで形成され、T2に相当するUI分のPregを記憶できることが必要であり、もしT2が大きくなればその分メモリ81の容量も増加する。もしT2を任意に設定可能にするならば、メモリ81は、T2の設定可能な上限範囲に相当する容量を少なくとも有する。
【0059】
ステップS20からS25は、CDR回路が動作中の処理を示す。
ステップS20で、通常動作を開始、初期ロックが終了するまでの処理を行う。この処理は、一般的なものと同様に行う。
【0060】
ステップS21で、メモリ81は、Preg37から新たにPreg[16:0]が出力されると、T2前までのPreg[16:0]を更新する。メモリ81がFIFOメモリであれば、メモリ81は、新しいPreg[16:0]を、もっとも古いPreg[16:0]が記憶されたアドレスに上書きする。
【0061】
ステップS22で、制御回路82は、Preg37から新たにPreg[16:0]が出力されると、メモリ81からT1前のPreg[16:0]を読み出し、新たにPreg[16:0]との差、すなわち変化量を算出する。
【0062】
ステップS23で、制御回路82は、変化量がリミット値より大きいか判定し、小さければステップS21に戻り、大きければステップS24に進む。したがって、変化量がリミット値より小さければ、一般的なCDR処理が続けられることになる。変化量がリミット値より大きい場合には、TIEが発生したと判断し、CDRの追従動作を停止する。
【0063】
ステップS24で、制御回路82は、メモリ81がT2前のPreg[16:0]を出力するように制御し、さらに選択回路83がメモリ81の出力するT2前のPreg[16:0]を選択するように制御する。これにより、PIコードエンコーダ38に入力するPreg[16:0]がT2前のPreg[16:0]に固定される。
【0064】
ステップS25で、タイマ処理を開始し、あらかじめ設定した時間T3を計時し、T3が経過したらステップS21に戻り、通常の追従を行うCDR動作を再開する。時間T3は、大きなジッタの発生する時間に合わせて設定することが望ましいが、実際には発生するジッタの大きさを予測することはできないので、搭載する機器の特性を勘案して適宜設定する。例えば、T3=T2とする。
【0065】
図14は、第1実施形態のCDR回路で、入力データDP、DMにTIEが発生した場合のPIコードの変化を示す図であり、PI_CODE'が一般的なCDR回路の場合のPIコードを、PI_CODEが第1実施形態の場合のPIコードを示す。
【0066】
図14に示すように、Xで示す時点からYで示す時点まで、入力データDP、DMに大きなTIEが発生した場合、一般的なCDR回路ではこの変化に追従する制御が行われる。しかし、追従は不可能であり、ジッタが無くなったYで示す時点の後もロック外れの状態が続き、ロック状態になるのはZで示す時点である。これに対して、第1実施形態では、Aで示す時点で追従を停止すると判断し、PI_CODEをT2前の値に固定する。そして、Bで示す時点で追従を再開するとすぐにロックした状態になる。このように、第1実施形態では、TIEが収まった後のCDRが再ロックするまでの時間が殆ど無くなりリードデータのビット誤りが減るため、シンボルの誤検出が減る。
【0067】
第1実施形態では、メモリ81は、時間T2までのPreg[16:0]を記憶する容量を有するが、T2が600UIという具合に大きくなると、大きな容量が必要になるという問題がある。次に説明する第2実施形態のCDR回路は、メモリ81の容量を低減にしたものである。
【0068】
図15は、第2実施形態のCDR回路のデジタルフィルタ(DF)の回路構成を示すブロック図である。
第2実施形態のCDR回路は、第1実施形態に類似した構成を有し、DF15のリミット超変化検出制御部16も類似の構成を有するが、メモリ81の代わりに容量が小さいメモリ81’と、構成が若干異なる制御回路82’と、を有することが異なる。
【0069】
第2実施形態では、メモリ81’は、時間T1までのPreg[16:0]を記憶する容量を有する。制御回路82’は、第1実施形態の構成に加えて、ジッタ発生前の安定した変化前Preg[16:0]を記憶するレジスタ(ラッチ)を有する。制御回路82’は、第1実施形態と同様に、新たに出力されたPreg[16:0]とT1前のPreg[16:0]との差である変化量を算出し、所定の閾値より小さいか判定する処理を行い、その判定結果に基づいて、選択回路83の制御を行う選択信号SelT2を出力する。制御回路82’は、算出した変化量が所定の閾値より小さいか判定し、小さければT1前のPreg[16:0]をレジスタに書き込む。もし閾値より大きければ、レジスタへの書込みは行わないので、レジスタは前の値を保持する。所定の閾値は十分に小さな値である。CDR回路がロックしていればPreg[16:0]の変化は小さく安定しているので、レジスタはジッタが検出される直前のロック状態におけるPreg[16:0]を、変化前Preg[16:0]として記憶することになる。第2実施形態では、第1実施形態におけるT2前のPreg[16:0]の代わりに、変化前Preg[16:0]を使用する。これにより第1実施形態に比べてメモリの容量を低減できる。他の部分は第1実施形態と同じなので説明は省略する。
【0070】
図16は、第3実施形態のCDR回路のデジタルフィルタ(DF)の回路構成を示すブロック図である。
第3実施形態のCDR回路は、第1実施形態に類似した構成を有し、DF15のリミット超変化検出制御部16も類似の構成を有するが、メモリ81を使用せず、代わりに分周回路84と、3個のラッチ回路(FF)85−87と、を有することが異なる。さらに、リミット超変化検出制御部16は、制御回路82の代わりに、構成が若干異なる制御回路(Control)88を有する。
【0071】
分周回路84は、Preg37がPreg[16:0]を出力サイクルに対応する周期のクロックCLK(OCLK)を分周し、正相のCLKMと、逆相のCLKMXを出力する。例えば、CLKの1周期が1UIとし、第1実施形態のT1=129UI、T2=395UIとすると、分周回路84は、CLKを128分周する。FF85は、Preg37が出力するPreg[16:0]を、分周回路84の出力するCLKMの立ち上りエッジでラッチしPを出力する。FF86は、FF85が出力するPを、分周回路84の出力するCLKMXの立ち上りエッジでラッチしQを出力する。FF87は、FF86が出力するQを、分周回路84の出力するCLKMXの立ち上りエッジでラッチしRを出力する。制御回路88は、Preg37が出力するPreg[16:0]とFF86が出力するQから変化量を算出し、変化量とリミット値の比較結果に基づいて選択信号SelT2を出力する。選択回路83は、選択信号SelT2に応じて、Preg37が出力するPreg[16:0]とFF87の出力するRのいずれかを選択する。
【0072】
図17は、第3実施形態における分周回路および3個のFFの出力変化を示すタイムチャートである。ここでは、図示の関係で、分周回路は4分周を行う場合を例として示している。
【0073】
図17に示すように、Preg37は、CLKの立ち上りエッジに同期してPreg[16:0]を出力する。CLKMは、分周回路84によりCLKを4分周した信号であり、CLKMXはCLKMの逆相の信号である。FF85は、Preg[16:0]をCLKMの立ち上りエッジに同期してラッチしPを出力するので、PはCLKの4周期で変化する。FF86は、PをCLKMXの立ち上りエッジに同期してラッチしQを出力するので、QはPをCLKの2周期分遅延した信号になる。さらに、FF87は、QをCLKMXの立ち上りエッジに同期してラッチしRを出力するので、RはQをCLKの4周期分遅延した信号、すなわちPを6周期分、Preg[16:0]を7周期分遅延した信号になる。
【0074】
制御回路88は、Preg37の出力するPreg[16:0]とQ、すなわち3周期前のPreg[16:0]とを比較する。Qが第1実施形態のT1前のPregに対応する。さらに、Preg37の出力するPreg[16:0]とQの差がリミット値より大きい場合には、選択回路83は、R、すなわち7周期前のPreg[16:0]を、変化前Preg[16:0]として出力する。
【0075】
分周回路84が256分周する場合には、T1は129周期前、T2は395周期前に相当する。分周回路84は、2の累乗で分周することが回路構成を簡単にする上では望ましく、T1およびT2は、その範囲で適宜設定することが望ましい。第3実施形態の他の部分は、第1実施形態と同じである。
【0076】
第3実施形態のCDR回路では、リミット超変化検出制御部16がメモリの代わりに分周回路および3個のFFを有するだけなので、回路規模を小さくできる。
【0077】
第1から第3実施形態では、Preg37の出力するPreg[16:0]の変化量を検出して追従不可能な大きなジッタが発生したかを検出したが、他の信号、例えばPDC31の出力するpdc[1:0]から大きなジッタが発生したかを検出可能である。次に説明する第4実施形態では、PDC31の出力するpdc[1:0]から大きなジッタが発生したかを検出する。
【0078】
図18は、第4実施形態のCDR回路のデジタルフィルタ(DF)の回路構成を示すブロック図である。
第4実施形態のCDR回路は、第1実施形態に類似した構成を有し、DF15のリミット超変化検出制御部16も類似の構成を有するが、カウンタ(Counter)91を有し、制御回路82の代わりに制御回路92を有することが異なる。
【0079】
カウンタ91は、アップダウンカウンタであり、PDC31の出力するpdc[1:0]の累積値を算出し、設定した下限または上限に達すると、制御回路(Control)92に限界到達の信号を出力する。前述のように、pdc[1:0]は、進みの(早い)場合は“11”を、遅れの場合は“01”を、真ん中の場合は“00”を出力する。したがって、ロック状態にある時には、“11”または“01”が連続して出力されることはなく、カウンタ91のカウント値が下限または上限に達することはない。これに対して、大きなジッタが発生した時には、“11”または“01”が長い期間連続して出力されるので、カウンタ91のカウント値が下限または上限に達する。そこで、制御回路92は、カウンタ91からカウント値が下限または上限に達したことを示す信号を受信したら、メモリ81に記憶されたT2前のPreg[16:0]が所定期間の間PIコードエンコーダに入力されるように選択信号SelT2を出力する。これにより、第1実施形態と同様に、CDRの追従動作が所定期間の間停止される。
【0080】
なお、転送クロックとPLL回路が出力するクロックの間に小さな周波数差がある場合、pdc[1:0]の累積値、すなわちカウンタ91のカウント値は、徐々に減少または増加し、下限または上限に達することがあり得る。そこで、カウンタ91は、周期的にリセットされるようにする。
【0081】
第4実施形態の構成は、第2および第3実施形態にも適用可能である。
【0082】
第1から第4実施形態では、大きなジッタを検出した後、追従を停止し、変化前Preg[16:0]を出力する期間は、あらかじめ決められていた。しかし、ジッタが想定より大きく、長い場合、追従を再開した時点ではなおジッタの影響があり、追従しない場合が起こる。この場合、再び追従を停止し、所定期間変化前Preg[16:0]を出力することになるため、再び追従した状態、すなわちロック状態になるまでの時間がかなり長くなるという問題がある。逆に、ジッタが想定より小さく、短い場合、追従を再開した時点ではすぐにロックするが、より早く追従を再開することが可能であったと考えられる。このように、ジッタの大きさにかかわらず追従を停止する期間の長さを固定すると、再ロックするまでの時間にロスが生じる。次に説明する第5実施形態のCDR回路は、ジッタは変化が急なほど大きく長いという仮定の下で、ジッタの変化率に応じて追従を停止する期間の長さを変更することにより、追従停止期間を短縮する。
【0083】
図19は、第5実施形態のCDR回路のデジタルフィルタ(DF)の回路構成を示すブロック図である。
第5実施形態のCDR回路は、第1実施形態に類似した構成を有し、DF15のリミット超変化検出制御部16も類似の構成を有するが、制御回路82の代わりに、若干異なる制御を行う制御回路95を有することが異なる。
【0084】
制御回路95は、第1実施形態と同様に、Preg37の出力するPreg[16:0]とT1前のPreg[16:0]の差を変化量として算出し、変化量をリミット値と比較して追従不可能な大きなジッタが発生したかを検出する。制御回路95は、これに加えて、変化量の大きさがジッタの変化率に対応するので、変化量に応じて追従停止期間を変更する。例えば、変化量がリミット値より少しだけ大きい時には、短い追従停止期間を設定し、変化量がリミット値より大幅に大きい時には、長い追従停止期間を設定する。制御回路95は、追従停止期間を変更する以外は、第1実施形態の制御回路82と同じ処理を行う。
【0085】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものである。特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。