受信クロッキング

UltraScale アーキテクチャ SelectIO リソース ユーザー ガイド (UG571)

Document ID
UG571
Release Date
2023-08-31
Revision
1.15 日本語

RXTX_BITSLICE には 2 つの異なるクロック/ストローブ ソースがあり、これらはデータをキャプチャするために属性または RIU レジスタ ビットによって開始されます。この属性またはレジスタ ビットは、SERIAL_MODE = TRUE/FALSE に設定した場合の BITSLICE_CONTROL プリミティブの機能に影響します。

SERIAL_MODE を TRUE に設定した場合、受信データは適用されたマスター クロック (PLL_CLK または REFCLK) を使用してキャプチャされます。このクロックは、一般にデータの半分の速度で動作する DDR キャプチャ クロックです。BITSLICE_CONTROL のロジックは、マスター クロックを再生成および分周してレシーバーで要求されるクロックを作成します。

属性 SERIAL_MODE を FALSE に設定した場合、受信データは、データと共に転送されたクロックまたはストローブを使用してキャプチャされます。属性 (INV_RXCLK) は、このレシーバー クロック パスでインバーターを有効にできます。BITSLICE_CONTROL マスター クロック入力に適用されるクロックは、BISC コントローラーによって入力遅延ラインのキャリブレーションに使用され、その周波数は受信データ レートと等価である必要があります。

SERIAL_MODE = TRUE

この図 に示すように、この設定は次の場合に使用できます。

接続されたコンポーネントからデータのみを受信します。

SGMII などのプロトコルのように、受信データにエンベデッド クロックが含まれる。これは通常、GTH または GTY 高速シリアル トランシーバーに供給されます。

データと共に供給されるクロックがビット クロックではなく、フレームまたはシステム同期クロックです。

図 2-65: シリアル モードでのデータ キャプチャ

X-Ref Target - Figure 2-65

X16049-data-capture-in-serial-mode.jpg

データを受信する際は、データをキャプチャするためにクロックが必要です。上記のいずれの場合においても、BITSLICE_CONTROL マスター クロック (PLL_CLK または REFCLK) を使用してデータをキャプチャします。

PLL には、BITSLICE_CONTROL への専用の高速で低ジッターの接続が備わっています。MMCM を使用した場合、クロックはグローバル FPGA クロック配線を経由して配線され、クロック バッファーの BUFG または BUFGCE をクロック パスに挿入する必要があるためジッターが大きくなります。PLL を使用すると、MMCM の使用時よりも高いデータ レートのキャプチャが可能になります。

データ キャプチャ クロックの生成に使用される PLL は、受信 RXTX_BITSLICE と同じ I/O バンク内にある必要があります。このモードでは、ニブルのすべての入力をデータ入力として使用できます。入力データが差動の場合、上位ニブルのビット 6 を使用することはできません。

このクロックの周波数は、受信データのキャプチャに使用する必要のある DDR クロックと同じになります。たとえば、1Gb/s のデータ ストリームを受信する場合、マスター クロックの周波数を 500MHz にする必要があります。

DATA_WIDTH 属性および DIV_MODE 属性を使用する BITSLICE_CONTROL のクロック ジェネレーターで、必ず、データのシリアル-パラレル変換に必要なすべてのクロックを生成するようにします。

たとえば、8 ビット幅のデータをキャプチャする場合、DATA_WIDTH を 8 に設定し、DIV_MODE を 4 に設定する必要があります。キャプチャされてシリアル/パラレル変換されたデータは、マスター クロック/4 のレートで RX_BITSLICE の出力 FIFO に書き込まれます。

各ニブル内の BITSLICE_0 の FIFO_WRCLK_OUT ピンは、RXTX_BITSLICE 内の FIFO へのデータの書き込みに使用されるクロックのコピーを供給します。この FIFO_WRCLK_OUT、あるいは PLL または MMCM から生成された同じ周波数のクロックを、FIFO_RD_CLK として使用できます。

注意: ニブルが属性 SERIAL_MODE = TRUE を使用する場合、デザインに BITSLICE_0 をインスタンシエートする必要があり、DATA_TYPE を SERIAL に設定する必要があります。BITSLICE_0 がデザインで使用されていない場合でも、I/O バッファーに接続する必要があります。接続しなければ、Vivado ツールでエラーが発生します。上位ニブルの BITSLICE_0 はバイト グループの BITSLICE_6 に相当します。バイトおよびニブル内のビット スライス番号の説明は、 この図 を参照してください。

SERIAL_MODE = FALSE

この図 に、あらゆる種類のソース同期インターフェイスで使用される設定を示します。これらのインターフェイスは、データを、関連付けられたクロックまたはストローブと共に供給します。BITSLICE_0 内の受信クロックまたはストローブは、ニブル、バイト、または I/O バンク全体のほかの RX_BITSLICE での受信データのキャプチャに使用されます。BITSLICE_CONTROL マスター クロック入力に供給されるクロックは、入力遅延ラインのキャリブレーションに使用され、その周波数は受信データ レートと等価である必要があります。

この種類のインターフェイスでは、クロックまたはストローブを、ニブルの BITSLICE_0 に接続する必要があります。これらのピンの名前は、専用バイト クロック (DBC)、クワッド バイト クロック (QBC)、または多目的ピン (GC/QBC) となっています。多目的 GC/QBC クロック入力によって、受信ビット クロックを使用してニブル、バイト、または I/O バンクのほかのビット スライスにあるデータ ビットをキャプチャできますが、PLL 用のクロック入力として使用して有効な BITSLICE_CONTROL マスター クロックを生成することもできます。

BITSLICE_0 をクロック入力として使用する間、ニブルのほかのビット スライスをデータ キャプチャに利用できます。クロック入力として使用する BITSLICE_0 は、データをデータ パターンとしてキャプチャできます。これは、デザインのさまざまな制御機能に役立ちます。

図 2-66: 非シリアル モードでのデータ キャプチャ

X-Ref Target - Figure 2-66

X16050-data-capture-in-non-serial-mode.jpg

ニブルの BITSLICE_0 のみがクロック/ストローブ入力として使用可能です。複数のニブルのビット スライスをデータ キャプチャに使用する場合、インターニブルおよび/またはインターバイト クロッキングを使用する必要があります。この方法を使用することにより、クロック/ストローブを I/O バンク全体に転送できます。たとえば、接続されたデバイスがシングル クロックで 16 のデータ チャネルを供給する場合、これにはデータをキャプチャするために複数のニブル/バイトが必要であり、一方で 1 つの BITSLICE_0 を転送クロックの入力として定義する必要があります。クロックには、すべてのデータ チャネルを処理するためにインターニブルおよびインターバイト クロッキングが必要です。供給されたデータ サンプル クロックまたはストローブは、BITSLICE_CONTROL プリミティブ内の BISC コントローラーによって電圧および温度に対して調整され、維持されます。

ヒント: BITSLICE_0 が使用するニブル内の BITSLICE_CONTROL の DLY_RDY 出力ピンまたは IDELAYCTRL の RDY 出力ピンが High になるまで、ニブル内で使用する BITSLICE_0、または関連する I/O ピンに接続されて BITSLICE_0 を通過する組み合わせ信号は FPGA のアプリケーションで使用できません。BITSLICE_0 はキャリブレーションに使用するため、キャリブレーションが完了するまで利用できません。Vivado ツールで生成されるクリティカル警告は、次の XDC 制約を使用してバイパスできます。

set_property UNAVAILABLE_DURING_CALIBRATION TRUE [get_ports <port name>]

ただし、例外が 1 つあります。I/O バンクに 1 組の差動 QBC/GC ピン セットまたは 2 つのシングルエンド QBC/GC ピンがある場合です。BISC が動作している間、および接続の可能性がある BITSLICE_0 が利用できない間、これらはクロックを MMCM または PLL に伝送するために使用できます。

BITSLICE_0 では、1 つの受信クロックを使用してニブル、バイト、または I/O バンク全体でデータをキャプチャできます。下位ニブルと上位ニブルを使用して、クロッキングを下位ニブルから上位ニブルに渡すと想定した場合、上位ニブルの BITSLICE_0 を通常のデータ入力にできると同時に、下位ニブルの BITSLICE_0 には入力/サンプル クロックを供給できます。

DATA_WIDTH 属性および DIV_MODE 属性は、シリアル-パラレル変換および RX_BITSLICE の FIFO 書き込み動作に必要なすべての分周クロックを生成するために、BITSLICE_CONTROL 内のクロック ジェネレーターを設定します。

受信クロック/ストローブは、BITSLICE_CONTROL を通り、BITSLICE_CONTROL によって調整されて転送され、ほかのビット スライスでの受信データのキャプチャに使用されます。データは、デスティネーション クロックを分周したクロック (DIV_MODE) によって並列化され、RX_BITSLICE の FIFO に書き込まれます。BITSLICE_CONTROL を通り、BITSLICE_CONTROL によって調整されて転送される受信クロック/ストローブは、クロックのイメージをキャプチャするために RX_BITSLICE_0 で使用できます。このクロック データは汎用デバイス ロジックで使用できます。クロックのイメージは、データ形式でインターコネクト ロジックに供給され、デザイン関連の任意の機能に使用できます。

FIFO からデータを読み出すために、クロックを FIFO_RD_CLK 入力に接続する必要があります。このクロックの周波数は、サンプル クロックの周波数を DIV_MODE パラメーターで割った値と同じ必要があります。FIFO_RD_CLK は、PLL または MMCM で生成できます。高速 PLL_CLK で使用される同じ PLL を利用して、この FIFO_RD_CLK を生成できます。

FIFO_RD_CLK は、サンプル クロック入力として使用されているときの BITSLICE_0 の FIFO_WRCLK_OUT から供給することもできます。FIFO_WRCLK_OUT と共に使用する BITSLICE_0 は、クロック供給される FIFO と同じ I/O バンクにある必要があります。

SELF_CALIBRATE が TRUE の場合、受信クロックは、BITSLICE_CONTROL 内で BISC コントローラーによって、RX_CLK_PHASE_P および RX_CLK_PHASE_N 属性の値に従い、90° または 0° に調整されます。また、BISC コントローラーは、RX_BITSLICE 入力に到達するデータとクロックの遅延の不一致を補正します。ただし、汎用デバイス ロジックの外部の遅延に対しては補正しません。BISC コントローラーは、BITSLICE_CONTROL に供給されたマスター クロック (PLL_CLK または REFCLK 入力) で動作します。マスター クロックは、キャプチャされるデータとは無関係であるため、その周波数レートを、受信データレートと同じになるように設定する必要があります。

BISC には、電圧および温度が変化してもクロックとデータのタイミング関係を維持できるように電圧と温度の変動を継続的にトラッキングする機能もあります。データ入力パスで入力遅延エレメントを使用した場合、BISC はトラッキングを実行して電圧および温度を補正します。

1 つのニブルに 6 つ (下位) または 7 つ (上位) のビット スライスが含まれている場合、I/O の数は次のようになります。

シングルエンド I/O

差動 I/O

1 クロック入力

1 クロック入力

5 または 6 データ入力

2 データ入力

上位ニブルと下位ニブルが 1 バイトに結合されている場合、I/O の数は次のようになります。

シングルエンド I/O

差動 I/O

1 クロック入力

1 クロック入力

12 データ入力

5 データ入力

4 バイトが 1 つの I/O バンクに結合されている場合、I/O の数は次のようになります。

シングルエンド I/O

差動 I/O

1 クロック入力

1 クロック入力

最大 51 データ入力

最大 23 データ入力