非同期モードのサポート - 1.0 日本語

Advanced IO Wizard v1.0 LogiCORE IP 製品ガイド (PG320)

Document ID
PG320
Release Date
2022-04-21
Version
1.0 日本語

非同期 (ベータ) モードでは、データに関連付けられたクロック/ストローブの入力がありません。データ キャプチャを可能にするために、ウィザードで生成したラッパーには CDR (クロック データ リカバリ) モジュールが提供されます。Data_Out は非同期モード デザインからの実際のデータで、Data_ValidDataout_Valid が High のときに Data_Out が有効であることを示す信号です。Advanced IO Wizard IP は、次の 2 種類の CDR モードをサポートしています。

  • PPM 差のある CDR
  • ゼロ PPM の CDR

アプリケーションを非同期モードに設定すると、デフォルトでは PPM 差のある CDR モジュールが使用されます。ゼロ PPM の CDR を使用するには、[Enable ZERO PPM CDR] をオンにします。このオプションはデフォルトでは淡色表示されており、アプリケーションを非同期に設定すると利用可能になります。

図 1. 非同期モードの構造

PPM 差のある CDR

注記: このモードでは、I/O ピンは差動である必要があります。

CDR の目的は、UI サンプリングを常に非同期信号の中央で実行できるようにすることにあります。データは、ビットスライスで差動ペアに受信されます。UI のサンプリングは、データ レートと同じ周波数で実行されます。たとえば、SGMII のデータ レートが 1250MBps の場合、RX および TX PLL クロック周波数は 1250MHz とする必要があります。このため、各 UI を 2 回ずつ (UI の中央で 1 回と、UI のエッジで 1 回) サンプリングすることになります。

UI の中央で取得したサンプルは有効データで、もう一方のサンプルは遅延ラインを更新してクロックをデータの中央に維持するために使用します。

クロックがいずれかのビットスライスの UI の中央にある場合、データのキャプチャを開始して次のステージに進みます。PPM 誤差がある場合、遅延ラインが 0 タップまたは 100 タップの方向へ移動します。いずれの場合も、データが失われないように基準データ サンプルを次の利用可能な UI へ移動し、データ レートがクロック レートより速い場合は余分なデータを連続して出力するか、データ レートがクロック レートより遅い場合は余分なサイクルを待機して、データの欠落やガーベッジ データの出力を防ぎます。

ブロック

  • 位相検出器
  • 遅延ライン トラッキング
  • オーバーフロー/アンダーフロー フィルター
  • データパス

位相検出器

マスター遅延ラインとスレーブ遅延ラインからのサンプルは Alexander Bang Bang 位相検出回路に入力され、遅延ラインの増加または減少が必要かどうかを判定します。1 UI ごとに、各ビットスライスにつき 2 つのサンプルが取得されます。クロックが早い場合は遅延を増やし、クロックが遅い場合は遅延を減らします。
図 2. PCLK と NCLK で同じデータをサンプリング

上図では、pclk と nclk で同じ UI をサンプリングしているため、遅延値を大きくします。

図 3. PCLK と NCLK で異なるデータをサンプリング

上図では、pclk と nclk で異なる UI をサンプリングしているため、遅延値を小さくします。

つまり、X=D なら遅延値を大きくし、X!=D なら遅延値を小さくするという規則になります。マスター ビットスライスの場合、P データを X、N データを D とします。自動的に、マスター ビットスライスは N の中央に揃います。スレーブ ビットスライスの場合、N データを X、P データを D とします。自動的に、スレーブ ビットスライスは P の中央に揃います。

遅延ライン トラッキング

このモジュールでは、ビットスライスの遅延値を追跡します。位相検出器の出力に応じて、一定のサイクル数 (前回の判定の更新された結果を見るためのループ帯域幅) の後、遅延ラインの値が更新されます。PHY から受信したそれぞれの D サンプルが UI の中央に揃う (遅延ラインのカウント値のディザリング効果が現れる) と、特定のビットスライスは遅延ラインの境界に到達するまでロックと見なされます。

遅延ラインの境界に到達したら、遅延ラインが特定の UI をこれ以上追跡できず、次の利用可能な UI へ移動する必要があることをデータパスに知らせるオーバーフローまたはアンダーフロー信号が生成されます。これは、ビットスライスが次の利用可能な UI に到達するまで位相検出器による増減の判定をオーバーライドすることによって実行されます。この期間中、次の UI の追跡を再開できるまでロック信号はプルダウンされます。

オーバーフロー/アンダーフロー フィルター

このモジュールは、遅延ライン トラッキング ロジックによって生成された複数のアンダーフローまたはオーバーフロー信号のバーストから、1 パルスのオーバーフローまたはアンダーフロー条件をデータパスに対して生成します。遅延ライン トラッキング ロジックは長時間にわたってオーバーフロー/アンダーフロー信号を生成し、ドリフトおよび送信クロックと受信クロックの PPM 差により、次の UI に進まなくても信号がトグルします。このため、1 パルスのオーバーフローまたはアンダーフロー条件を生成するには、フィルター機能が必要です。

データパス

このモジュールには、PHY からのデータを正しく選択して出力する役割があります。両方の遅延ラインがロックされると、一方のビットスライスは PCLK の中央に揃い、もう一方は NCLK の中央に揃うため、両者は ½ UI だけ離れていることになります。ロックされると、遅延の消費が少ない遅延ラインがアクティブなビットスライスとなり、データはそのビットスライスから取得されます。もう一方のビットスライスはモニターとなり、ドリフト量により常に ½ UI だけ先行するか後行します。アクティブなビットスライスに対してオーバーフローまたはアンダーフローが発生すると、モニター ビットスライスに切り替えてデータを取得します。これに対し、モニターに対してオーバーフローまたはアンダーフローが発生した場合は、単に参照ポインター (D_loc) を更新するだけです。

D_loc は、アクティブ ビットスライスからモニターへ切り替える際に UI が失われないようにするため、アクティブおよびモニター ビットスライスの両方に対する参照ポインターとして使用されます。マスターとスレーブの両方の 4 ビット D データが、12 ビットのシフト レジスタに格納されます。D_loc の値の範囲は 0 ~ 8 です。0 は出力データが 0:3 であることを表し、8 は 8:11 であることを表します。次に、このデータがサイズ 2x8 のバッファーに格納されます。8 ビット データがバッファーに格納されると、データを出力し、RX_DATA が有効であることを示す DATA_VALID をアサートします。アンダーフロー条件で 0 から 4 へ移動する場合は、出力するデータがないため、DATA_VALID に 2 サイクルのギャップがあります。一方、8 から 4 へ移動する場合は余分な出力データがあるため、DATA_VALID は連続します。それ以外の場合は、DATA_VALID が交互にアサートされます。

ENABLE_CDR_DEBUG パラメーターをオンにすると、デバッグ制御信号が有効になります。この信号は、CDR の内部信号にビット単位でアクセスします。

図 4. データ レートが受信クロックより低速な場合

図 5. データ レートが受信クロックより高速な場合

図 6. CDR のブロック図

ゼロ PPM の CDR

この場合、TX クロックと RX クロックは同じソースから生成する必要があります。また、I/O ピンはシングルエンドまたは差動とすることができます。CDR のアルゴリズムは、シングルエンド I/O ピンと差動 I/O ピンで異なります。以降のセクションでは、これについて説明します。

シングル エンド I/O デザインに対する CDR

CDR ブロックの目的は、UI サンプリングが常に非同期信号の中央となるようにすることにあります。UI のサンプリングは、データ レートと同じ周波数で実行されます。たとえば、インターフェイス速度が 1250Mb/s の場合、PLL クロック周波数は 1250MHz とする必要があります。このため、各 UI を 2 回ずつ (UI の中央で 1 回と、UI のエッジで 1 回) サンプリングすることになります。UI の中央で取得したサンプルは有効データで、エッジで取得したサンプルは遅延ラインを更新してクロックをデータの中央に維持するために使用します。次に、CDR ブロックのブロック図を示します。

図 7. シングル エンド I/O デザインに対する CDR インプリメンテーションのブロック図

遅延ラインからのサンプルは位相検出回路に入力され、遅延ラインの増加または減少が必要かどうかを判定します。1 UI ごとに、各ビットスライスにつき 2 つのサンプルが取得されます。クロックが早いか遅いかにより、遅延を増加または減少します。

位相検出器の出力に応じて、一定のサイクル数の後、遅延ラインの値が更新されます。PHY から受信したそれぞれの D サンプルが UI の中央に揃うと、特定のビットスライスはロックと見なされます。ビットスライスがロックされると、PHY からの 8 ビットのうち 4 ビットが RX ギアボックスに送信されます。8 ビットのうち、どの 4 ビットを選択するかは、データが N の中央に揃っているか P の中央に揃っているかにより異なります。

差動 I/O デザインに対する CDR

差動の場合、PHY からの 2 レーンの出力 (P と N) が CDR ブロックに入力されます。UI のサンプリングは、データ レートの半分の周波数で実行されます。たとえば、インターフェイス速度が 1250Mb/s の場合、PLL クロック周波数は 625MHz とする必要があります。したがって、1 レーンに対して各 UI を 1 回だけサンプリングします。同じ UI を、もう 1 つのレーンで再びサンプリングします。次に、差動 I/O に対する CDR ブロックのブロック図を示します。

図 8. 差動 I/O デザインに対する CDR インプリメンテーションのブロック図

差動 I/O の CDR のアルゴリズムは、シングルエンド I/O のものとは異なります。シングルエンドのアルゴリズムとは異なり、ここでは 2 レーンが Alexander Bang Bang 検出器に入力されます。Alexander Bang Bang 検出器が動作するには、1 つのレーンをエッジ アライン、もう 1 つのレーンをセンター アラインとする必要があります。これは、次のフローチャートに従って実行されます。

図 9. N レーンのセンタリングのフローチャート

次のフローチャートに示すように、P レーンはセンター アラインで、N レーンはエッジ アラインです。この後、両方のビットスライスがロックと見なされ、Alexander Bang Bang 検出器に入力されて VT トラッキングが実行されます。クロックが早いか遅いかにより、P と N の両方のレーンに対する遅延を増加または減少します。ビットスライスがロックされると、8 ビットの N チャネル出力がギアボックスに送信されます。

ギアボックス

ギアボックスは、8 ビット データから 10 ビット データへの変換など、データ幅の変換に使用します。