時計データ復旧の初心者ガイド
設計と検証の世界に慣れていない場合は、おそらく多くの質問があります! クロックのデータ復旧–そのうちの一つは、重要な要素に関連する可能性があります。 このブログでは、私たちはこのプロセスを試してみて、神秘化しています。
さまざまなプロトコルを設計する目的は、ある場所から別の場所に一連の情報(データ)を転送することです。 多くの場合、シリアルデータ通信は、高速でデータを送信するために使用されます。 受信側では、送信されたデータは、付随するタイミング情報との整合性を失うことなく取得されなければならない。 このプロセスは、クロックとデータ復旧と呼ばれています。
この記事では、CDRの要件とその仕組み、cdrのモデル化におけるジッタやPPMなどの問題に取り組む方法について詳しく説明します。
ところで、波形を見つめて理にかなっているのに多くの時間を費やしているのであれば、protocol debug tool(PDA)が興味深いかもしれません。 ここで短い3分のデモを見てください(イヤホンはありませんか? 心配ありません! それは字幕を持っています!).
データ通信のさまざまな技術:
CDRを開始する前に、
1.データ通信のさまざまな技術を見てみましょう。 シリアルデータ通信
シリアル通信では、データビットは一つずつ順番に送信されます。
2. 並列データ通信
並列通信では、データビットは複数のワイヤ上で同時に駆動されます。
上記の図を見ると、並列通信がシリアル通信よりもはるかに高速であることを容易に判断することができます。
しかし、なぜシリアル通信が並列通信よりも優先されるのかという疑問が生じます。??
これは、実際には、並列通信はシリアル通信よりも高速ではないためです。 これは、次の理由によるものです-
a)スキュー
すべてのビットの移動経路の長さが異なることになります。このため、いくつかのビットは、情報を破損する可能性のある他のビットよりも早くまたは前に到着する可能性があります。
これを解決するには、ビットを埋め込むことができます。 しかし、これはすべてのリンクの速度を最も遅いものに減らすため、速度のコストになります。
b)複数の並列リンクによるシンボル間干渉とクロストーク
ISIとクロストークがシステムに導入され、リンクの長さが増加するにつれてより深刻にな したがって、これは接続の長さを制限します。
c)I/Oピン数の制限
パラレルデータ通信には、シリアルデータ通信に必要なI/Oピンよりも多くのI/Oピンが必要です。
クロックデータ復旧とは何ですか?
高速シリアルインタフェースのほとんどにはクロックが付属していないため、レシーバはシリアルライン上のデータをサンプリングするためにクロックを回復する必要があります。
サンプリングクロックを回復するには、レシーバにほぼ同じ周波数のリファレンスaクロックが必要です。 回復されたクロックを生成するには、レシーバは、受信データストリーム上の遷移に基準クロックを位相合わせする必要があります。 これはクロック回復と呼ばれます。
ビットストリームを生成するために回復されたクロックでその着信データ信号のサンプリングは、データ復旧と呼ばれています。 一緒に、これはクロックデータ復旧、またはCDRと呼ばれています。
CDRは、オーバー/アンダーサンプリングによるビットエラーなしに、付随するクロック信号がない場合に、着信データストリームからデータを回復するために必要です。
時計のデータ復旧はどのように機能しますか?
CDRを実行するための二つの主な機能は、周波数検出と位相アライメントです。
I)周波数検出
着信データストリームから取得される周波数をロックするプロセスです。 これは、データストリーム上の2つの連続したエッジ間の時間差を検出することによって行われます。
このロックされた周波数は、送信されたデータビットストリームの再生成に使用されます。
周波数検出をより身近にするために、文中の句読点のアナロジーを挙げましょう。 あなたは、道路が修理作業を受けるたびに、建設会社が通り過ぎる車を遅くするためにボード上に表示メッセージを置くことを観察したことがあります。 そのメッセージは次のようなものです–
遅い、仕事中の男性
同じメッセージが適切な句読点なしで書かれている場合、それは全く異なる何かを意味するかもしれません! –
仕事中のスローメン
句読点は、検出された周波数のようなものです。 誤ったデータサンプリングにつながる間違った周波数にロックされている場合!
ここでの質問は、着信データビットストリームを正しくサンプリングする方法ですか?
瞬時に頭に浮かぶ一つの解決策は、それが送信されたのと同じ周波数でビットストリームをサンプリングすることです。
それを行うには、データが送信されたのと同じ周波数の受信機でクロックを生成する必要があります。 しかし、同じ仕様であっても、二つの異なるクロックジェネレータを使用して全く同じ周波数を持つ二つのクロックを生成することはできません。
また、正確な周波数のクロックを生成することはできません。
同時に、サンプリング周波数の微小な違いは、次の図に示すようにビットエラーにつながる可能性があります:
上の図に示すように、TXとRXの周波数の微小な差のために、単一のビットが二度サンプリングされています。
“TX clock”と同じ周波数のクロックを生成するにはどうすればよいですか?
これは、入力データビットストリームのエッジをチェックすることによって行うことができます。しかし、このプロセスでは、周波数を検出するために使用される最初のビットが失われます。 これを解決するために、有効なデータを送信する前に、特定のビットシーケンスのセットが送信されます。 これらの配列は訓練配列と呼ばれます。 訓練順序は受信機が有効なデータの開始の前にワイヤーの連続した端の点検によって頻度で容易に締まることができるように、非常に高い端密度を 下の図は、エッジ密度の高いシーケンスを示しています。
受信データビットストリームからの周波数が回復されました。 回復された周波数に基づいてRXクロックを生成できるようになりました。
上記の回復周波数は、送信時にノイズが発生しない理想的な場合、つまりTXクロックのクロック周波数が全体で同じである場合には問題ありません。 また、データはTXクロック周期の整数倍です。 しかし、データ伝送に影響を与え、クロックの均一性を歪ませる多くの属性があるため、実際にはそうではありません。
下の図は、周期に変化があるリアルタイムクロックを示しています。
ほとんどの高速シリアルデータ通信に影響を与える主に二つの属性があります-
A)ジッタ:
ジッタは周期的な信号のエッジのシフトです。 これにより、信号の周期性が壊れます。
ジッタは短期的な効果です。 これはガウス分布に従うため、ジッタの平均平均がゼロである、すなわちジッタの累積効果がゼロである理由です。
ジッタによるクロック信号のエッジのシフトがあるので、問題はビットをサンプリングするのに最適な位置は何ですか?
ビットは中央でサンプリングする必要があります。 これは、いずれかの側のエッジの最大シフト(左から右または右から左)に遭遇することができる最適な位置です。 ただし、エッジのシフトがビット周期の半分より大きくなると、ビットエラーが発生します。
B)PPM(百万ごとの部品):
PPMは、回路内の特定の部品(クロック発生器の場合は水晶)の不正確さであり、不正確な周期の信号が生成されます。 PPMは信号の周期性を破壊しません。 その名前が述べているように、PPMは長期的な効果であり、100万クロックサイクルにわたるビット周期の不正確さを示します。 PPMは、本質的に加法的または減法的である。
TX CLKのジッタまたはPPMの累積効果がRX CLKの半分以上になる場合にのみ、オーバー/アンダーサンプリングによるエラーが発生します。
以下の例は、受信データストリームの継続的な変動がデータのサンプリングにどのように影響するかを示しています。 この同じ例は、私たちがさらに進むにつれて問題を解決するために考慮されます。
RX CLK(FD)は、周波数検出時に周波数ロックされます。 赤いボックスに示されているように、着信データストリームがFDでサンプリングされているので、単一のビットが二度サンプリングされています。 これは、着信データビットストリームの変動が原因で発生します。
TX CLKの周波数のこれらの変化に遭遇するために、CDRの第二の機能は、位相アライメントが図になります。 これはRX CLKエッジを再調整します。
II)位相アライメント
位相アライメントは、信号の位相を別の信号と一致させるプロセスです。 ここでは、周波数検出で回復されたクロックの位相を着信データビットストリームと一致させています。
位相アライメントの類推をしましょう。
アナログラジオを見たことがあるかもしれません。 アナログラジオには、粗い曲と細かい曲の二つのノブがあります。 一つは、任意の可聴信号を聞きたいときは、粗いチューンノブは、信号が聞こえるが、いくつかの外乱である周波数にロックするために使用されます。 ここで粗い曲は周波数検出と同じくらい良いですし、外乱はジッタとPPMです。 これらの外乱を除去し、音声が聞こえるようにするには、微調整ノブは、完璧な可聴信号を得るためにこことそこに少し前にロックされた周波数を調 ここで微調整は位相アライメントに似ています。
位相アライメントには、次の規則に従う必要があります:
- ワイヤ上で遷移が検出された場合は、RX CLK(FD+PD)=1のレベルにします。
- RX CLK(FD)期間がRX CLK(FD+PD)のposedgeの後で完了し、ワイヤーでどの遷移も検出されなければRX CLK(FD+PD)のposedgeを表明して下さい。
ここで、RX CLK(FD)は周波数検出処理中のクロック周波数ロック、RX CLK(FD+PD)は位相アライメント処理中のクロック周波数です。
位相アライメントの作業に目を向ける時が来ました。 PPMジッタについて先に考えたのと同じ例を見てみましょう。
ここで、クロック周期RX CLK(FD)=10
図中の周期が割り当てられていないクロックは、デフォルトで10の周期を持ちます。
上の図では、最後のビットがTX CLKの連続した一定の変動(10から12)の結果として2回サンプリングされていたことがわかりました(PPMのために可能しかし、今、赤いボックスに示されているように、ビットが正しくサンプリングされます。
最初のTXクロックサイクルでは、周期は周波数検出後にロックされ、RX CLK(FD+PD)にも反映される10時間単位です。 ルール1によれば、データ上のエッジは、RX CLK(FD+PD)のレベルを1にします(最初の点線の矢印で示されます)。 その後、negedgeはRX CLK(FD)期間の半分の後にRX CLK(FD+PD)でアサートされます。 その後、posedgeは、RX CLK(FD)期間の半分またはデータの遷移のいずれか早い方(ルール番号2)に応じて、RX CLK(FD+PD)でアサートされます。
第六および第七のTXクロックサイクルでは、データビットは0および0であり、ライン上での遷移はありません。 したがって、RX CLK(FD+PD)はルール番号2に従って、rx CLK(FD)のクロック周期を持ち、赤いボックスのRX CLK(FD+PD)の最初のサイクルに示されています。 第七クロックサイクルの期間は12時間単位であるため、データの遷移は予想よりも2単位の時間後に発生します。 ここで、RX CLK(FD+PD)はすでにposedgeをアサートしており、RX CLK(FD)でnegedgeをアサートするためにRX CLK(FD)期間の半分が完了するのを待っています(FD+PD)。 しかし、2時間単位の完了後、遷移が検出され、RX CLK(FD)の半分の待機時間が再開されます。 これは、5の代わりに7時間単位(すなわち、RX CLK(FD)期間の半分)の後にRX CLK(FD+PD)の否定をもたらす。 その後、5時間単位(赤いボックスのRX CLK(FD+PD)の2サイクル目)の後にposedge。 同様に、位相アライメントは、受信データストリームの一定の変動に基づいてクロック周期を調整します。
下の図は負のジッタの場合を示しています…
第三のTXクロック周期は、負のジッタのために10時間単位から7時間単位に変化しています。 この変化は、赤いボックスに示されているように、位相アライメントによ
RX CLK(FD+PD)上のposedgeは、データ上で検出された遷移として発生します。 RX CLK(FD)期間の半分が終了した後にRX CLK(FD+PD)上のネガッジが生じる。 ここで、rx CLK(FD+PD)上で0から1へのレベル遷移を引き起こすRX CLK(FD)期間の半分が完了する前のデータ上で遷移が見られる(3番目の湾曲した点線の矢印で示
下の図は正のジッタの場合を示しています…
第五のTXクロック周期は、正のジッタのために10時間単位から13時間単位に変化しています。 この変化は、赤いボックスに示されているように、位相アライメントによ<4 5 2 3><6 8 2 2>RX CLK(FD+PD)は、ルール番号2に従い、rx CLK(FD)のクロック周期を有し、赤枠のrx CLK(FD+PD)の最初のサイクルに示される。 第五クロックサイクルの期間は13であるため、データの遷移は予想よりも3単位の時間後に発生します。 ここで、RX CLK(FD+PD)はすでにposedgeをアサートし、RX CLK(FD)期間の半分が完了してRX CLK(FD+PD)上でnegedgeをアサートするのを待ち始める。 しかし、3時間単位の完了後、遷移が検出され、RX CLK(FD)の半分の待機時間が再開されます。 これは、5の代わりに8時間単位(すなわち、RX CLK(FD)期間の半分)の後にRX CLK(FD+PD)の否定をもたらす。 その後、5時間単位(赤いボックスのRX CLK(FD+PD)の2サイクル目)の後にposedge。
それはすべて位相アライメントの作業プロセスに関するものでした。
一つの注意点…!
周波数検出と位相アライメントでカバーされていない一つの問題があります! 位相アライメントは、受信データストリーム内の遷移で動作します。 しかし、その中に遷移を持たない長い同一のビットストリームを持つことは可能である。 この場合、エッジの累積シフトが回復されたクロック周期(RX CLK(FD))の半分以上になると、ビットエラーが発生し、データが誤ってサンプリングされます。
この問題を解決するために、ビットシーケンスは、ワイヤ上で送信する前に、様々なタイプの符号化で処理されます。 これにより、連続する同一ビットの数が特定のレベルに制限されます。 これにより、累積シフトがRX CLK(FD)の半分以上に近づく確率が減少します。
たとえば、USB3.0では、データビットはワイヤで送信する前に8B10Bエンコードで処理されます。
下の図は、CDRの動作ブロック図を示しています
FD(周波数検出器)、ED(エッジ検出器)およびDフリップフロップへの入力として渡される着信データストリーム。 Frequency detectorは、学習シーケンスに基づいて周波数を生成します。 エッジ検出器は、入力データの遷移を検出するたびに出力を提供します。 Frequency detectorとedge detectorの出力は、データをサンプリングするためのクロックを生成するclock generatorブロックに入力として渡されます。 これにより、ビットストリームを再生成するためにDフリップフロップに渡されたクロックと着信データが生成されました。
下の図は、位相アライメント後のクロック生成のフローチャートを示しています
RX CLK(FD+PD)は1または0のいずれかに初期化されます。 初期化後、2つの並列プロセスが開始され、RX CLK(FD)時間の半分の待機タイマーと着信データのエッジ検出が行われます。 二つの並列プロセスのうち、最初に完了した方が、他のプロセスを無効にします。 いずれかのエッジが検出される前にタイマーがタイムアウトした場合、RX CLK(FD+PD)の電流レベルをチェックします。 R X CLK(FD+PD)のレベルが1であれば、「R X CLK(FD+PD)=0」活性に進み、R X CLK(FD+PD)を0にリセットする。 両方の並列プロセスを再度再起動し、いずれかのプロセスが完了するのを待ちます。 完了待ちタイマの前にエッジが検出された場合は、”RX CLK(FD+PD)=0″アクティビティに移動し、RX CLK(FD+PD)のレベルを1に設定します。両方の並列プロセスを再度再起動し、いずれかのプロセスが完了するのを待ちます。
この記事が、エンジニアが時計とデータ復旧をモデル化するのに役立つことを願っています。
著者:ディーパックナガリアとAditya Mittal