クロッキング

Versal アダプティブ SoC SelectIO リソース アーキテクチャ マニュアル (AM010)

Document ID
AM010
Release Date
2024-03-18
Revision
1.5 日本語

各 XPIO バンクには、2 つの XPLL があります。各 XPLL にはプログラマブル ロジックへのユーザー制御によるクロック出力が 4 つ (XPLL.CLKOUT<0-3>) と、XPIO バンク内のすべての XPHY ニブルへの専用高速クロック接続 (XPLL.CLKOUTPHY) が 1 つあります。XPLL の詳細は、 『Versal アダプティブ SoC クロッキング リソース アーキテクチャ マニュアル』 (AM003) を参照してください。次の表に、XPHY のクロッキング ポートと属性をまとめます。詳細は、ポート および 属性 を参照してください。

表 1. XPHY のクロック
クロック I/O 説明
PLL_CLK 入力 XPHY インターフェイス クロック
CTRL_CLK 入力 RIU/遅延ライン/BISC クロック
FIFO_RD_CLK 入力 FIFO 読み出しクロック
CLK_FROM_OTHER_XPHY 入力 バイト間クロック入力
NCLK_NIBBLE_IN 入力 ニブル間クロッキング用の N 側クロック入力
PCLK_NIBBLE_IN 入力 ニブル間クロッキング用の P 側クロック入力
FIFO_WR_CLK 出力 FIFO の書き込みクロック。内部で生成されます。
CLK_TO_LOWER 出力 数字の小さいニブルへのバイト間クロック出力 (例外として、数字の大きいニブルへの場合が 1 つ存在)。
CLK_TO_UPPER 出力 数字の大きいニブルへのバイト間クロック出力。
NCLK_NIBBLE_OUT 出力 ニブル間クロッキング用の N 側クロック出力
PCLK_NIBBLE_OUT 出力 ニブル間クロッキング用の P 側クロック出力
ストローブ/キャプチャ クロック 入力 (RX)

出力 (TX)

ストローブ/キャプチャ クロックは、NIBBLESLICE[0] への IOB を経由するか、ニブル間/バイト間クロッキングを使用して受信できます。ストローブは XPHY 内部で P 側クロックと N 側クロックに分離され、ニブル間クロッキングとデータ キャプチャにはこれらを使用できます。

ソース同期受信インターフェイス (SERIAL_MODE = FALSE) の場合、ストローブ/キャプチャ クロックは位相関係が既知のデータと一緒に受信します。それ以外の受信インターフェイス (SERIAL_MODE = TRUE) では、キャプチャ クロックは XPHY 内部で PLL_CLK から生成されます。SERIAL_MODE = TRUE の場合、ニブル間およびバイト間クロッキングはサポートされません。

表 2. クロックの接続
クロック I/O 接続 (TX) 接続 (RX)
PLL_CLK 入力 XPLL.CLKOUTPHY XPLL.CLKOUTPHY
CTRL_CLK 入力 任意のクロック ソースに接続可能 任意のクロック ソースに接続可能。
FIFO_RD_CLK 入力 FIFO_MODE_x による。詳細は、FIFO モードの制御 を参照。
CLK_FROM_OTHER_XPHY 入力 バイト間クロックを受信する場合は、バイト間クロック送信元のソース ニブルの CLK_TO_LOWER または CLK_TO_UPPER に接続。
PCLK_NIBBLE_IN、NCLK_NIBBLE_IN 入力 ニブル間クロックを受信する場合は、ソース ニブルの PCLK_NIBBLE_OUT をデスティネーション ニブルの PCLK_NIBBLE_IN に接続。NCLK_NIBBLE_OUT および NCLK_NIBBLE_IN も同様に接続します。
FIFO_WR_CLK 出力 ストローブから内部で生成するか、SERIAL_MODE = TRUE の場合は PLL_CLK から生成。
CLK_TO_LOWER、CLK_TO_UPPER 出力 バイト間クロックを送信する場合は、バイト間クロックを受信するデスティネーション ニブルの CLK_FROM_OTHER_XPHY にソース ニブルの CLK_TO_LOWER または CLK_TO_UPPER を接続。
PCLK_NIBBLE_OUT、NCLK_NIBBLE_OUT 出力 ニブル間クロックを送信する場合は、ソース ニブルの PCLK_NIBBLE_OUT をデスティネーション ニブルの PCLK_NIBBLE_IN に接続。NCLK_NIBBLE_OUT および NCLK_NIBBLE_IN も同様に接続します。
ストローブ/キャプチャ クロック 出力 (TX から見た場合) または入力 (RX から見た場合)。 D<0-5> 入力のいずれか 1 つから送信した後、対応する O0[x] ビットによって IOB に出力。 ソース同期インターフェイスの場合、ストローブ/キャプチャ クロックは NIBBLESLICE[0] (DATAIN[0])、ニブル間クロッキング (ポートは 表 1 参照)、またはバイト間クロッキング (ポートは 表 1 参照) で受信する必要があります。シングルエンドか差動かにかかわらず、ストローブ/キャプチャ クロックを NIBBLESLICE[0] で受信する場合は、DELAY_VALUE_0 のみを 0 に設定する必要があります。ソース同期インターフェイスが複数のニブルにまたがる場合、ニブル間/バイト間クロッキングを使用してストローブを転送できます。

SERIAL_MODE = TRUE の場合、キャプチャ クロックはインターフェイスの各ニブルに対して PLL_CLK 入力から生成されます。SERIAL_MODE = TRUE の場合、ニブル間およびバイト間クロッキングはサポートされません。

表 3. XPHY クロッキングの属性
属性 説明
CONTINUOUS_DQS RX_GATING と組み合わせて、ストローブのゲーティングの有無および方法を指定します。
DQS_SRC ストローブをどこから受信するか (NIBBLESLICE[0]、ニブル間クロッキング、バイト間クロッキング、またはシリアル モードの場合 PLL_CLK) を指定します。
EN_CLK_TO_LOWER 数字の小さいニブルへのストローブ出力 (バイト間クロッキング) を有効にします。
EN_CLK_TO_UPPER 数字の大きいニブルへのストローブ出力 (バイト間クロッキング) を有効にします。
EN_OTHER_NCLK ニブル間クロッキングからのストローブの N 側クロックを有効にします。
EN_OTHER_PCLK ニブル間クロッキングからのストローブの P 側クロックを有効にします。
INV_RXCLK NIBBLESLICE[0] への受信ストローブを反転します。
REFCLK_FREQUENCY PLL_CLK の周波数に設定します。
RX_CLK_PHASE_P、RX_CLK_PHASE_N ソース同期インターフェイスの場合、ストローブ (この場合は P 側クロックと N 側クロック) のセンタリングを制御します。
RX_GATING CONTINUOUS_DQS と組み合わせて、ストローブのゲーティングの有無および方法を指定します。
TX_GATING PHY_WREN を使用して送信データと送信ストローブ/キャプチャ クロックをゲーティングします。NIBBLESLICE[1] は TX_GATING の影響を受けません。
TX_OUTPUT_PHASE_90_<0-5> トランスミッター側でストローブ/キャプチャ クロックをデータの中央に揃えるために使用します。ストローブ/キャプチャ クロックを送信する NIBBLESLICE に適用すると、クロックがデータの中央に揃います。
重要: すべての PL-XPHY インターフェイスに XPLL の位相検出器を使用することを推奨します。インターフェイスが複数のバンクにまたがる場合は、PL にクロックを供給している XPLL の位相検出器のみを使用してください。詳細は、 『Versal アダプティブ SoC クロッキング リソース アーキテクチャ マニュアル』 (AM003) を参照してください。

送信インターフェイスがトリプレット内に配置されている場合、CLKOUT0 クロック出力から、隣接する XPIO バンク内の XPLL への専用カスケード パスが存在します (クロック バッファーは不要)。XPLL が隣接するバンク (最大 3 つまで) に配置されている場合、Advanced IO Wizard で [Multi Banks are part of a Triplet] をオンするることで、XPLL はこれらの専用カスケードを使用できます。カスケードされた CLKOUT0 の配線遅延は、選択したスピード グレードに基づく固定遅延になります。専用パスの配線遅延を大まかに補正する場合、Advanced IO Wizard は、CLKOUT0_PHASE に対して負の位相シフトを使用します。正確な遅延を計算し、CLKOUT0_PHASE の最適な位相シフト設定を決めるには、カスケードされた遅延のタイミング解析が必要です。

送信インターフェイス クロックは XPLL から供給しますが、ソース同期インターフェイスの受信クロックはニブル間クロッキングとバイト間クロッキングを使用してストローブを転送できます。インターフェイスが複数のニブルにまたがる場合、ニブル間/バイト間クロッキングを使用してストローブをほかのニブルに転送できます。

  • ニブル間クロッキングは、ニブル ペア内でサポートされます (下図参照)。ニブル ペアは、XPHY ニブル (0,1)、(2,3)、(4,5)、および (6,7) です。
  • バイト間クロッキングは、XPIO バンク内の特定の XPHY ニブル間でサポートされます (下表参照)。ニブル間クロッキングは 2 つのニブルの間でのみ実行されますが、バイト間クロッキングは各ニブルがバイト間クロックを受信して転送することにより、1 つのストローブをさらに転送できます。ニブルはバイト間クロックを受信してニブル間クロックを生成できますが、ニブル間クロックを受信してバイト間クロックを生成することはできません。バイト間クロッキングを開始するソース ニブルの CLK_FROM_OTHER_XPHY は、1'b1 に設定する必要があります。
  • XPHY ニブル 8 はどのニブルともペアにならないため、ニブル間クロッキングはサポートされません。ただし、XPHY ニブル 6 からバイト間クロックを受信することはできます。XPHY ニブル 6 から XPHY ニブル 8 へのバイト間クロッキングを実行する場合は、CLK_TO_LOWER を使用します。この場合のみ、CLK_TO_LOWER/CLK_TO_UPPER の命名規則の例外として扱います。
  • SERIAL_MODE = TRUE の場合、ニブル間/バイト間クロッキングはサポートされません。その代わり、各ニブルが PLL_CLK 入力からそれぞれのキャプチャ クロックを生成します。
  • ニブル間およびバイト間クロッキングは、同じバンク内のニブル間でのみ可能で、プログラマブル ロジック (PL) には接続できません。
  • バイト間クロッキングは、CRSE 遅延および QTR 遅延の前に送受信されます。このため、バイト間クロックはソース ニブルとデスティネーション ニブルの両方の遅延ブロックを通過します。
  • ニブル間クロッキングは CRSE 遅延と QTR 遅延の間で送受信されます。このため、ニブル間クロックはソース ニブルの CRSE 遅延およびデスティネーション ニブルの QTR 遅延を通過します。
  • BISC を使用する場合、NIBBLESLICE は互いに揃えられますが、ワード アライメントは保証されません。ニブル間およびバイト間クロッキングの両方、または一方を使用すると、ワード アライメントにさらにマイナスの影響を与えることがあります。

次の図に示す XPLL の配置は代表例で、ニブルに対する XPLL の実際の位置は異なることがあります。

図 1. XPIO バンク内のニブル間およびバイト間クロッキング

図 1 を表にしたものを、次に示します。

表 4. XPIO バンク内のバイト間およびニブル間クロッキング
XPHY ニブル 可能な接続先 (ニブル間クロッキング使用) 可能な接続先 (バイト間クロッキング使用) 可能な接続先 (バイト間、ニブル間、またはこれら 2 つの組み合わせを使用)
0 1 - 1
1 0 - 0
2 3 0、4 0、1、3、4、5、6、7、8
3 2 1、5 0、1、2、4、5、6、7
4 5 2、6 0、1、2、3、5、6、7、8
5 4 3、7 0、1、2、3、4、6、7
6 7 8 7、8
7 6 - 6
8 - - -

クロッキングの図に示したように、1 つのバンク内には目的の異なる 2 種類のクロック入力があります。

  • グローバル クロック (GC): 専用のクロック配線を備えたクロック入力で、スキューとデューティ サイクルの歪みを抑え、ジッター耐性を高めるように設計されています。このため、外部クロックは GC ピンから入力することを推奨します。XPHY を使用するインターフェイスでは、GC ピンは通常 XPLL のクロック ソースとして使用され、ここから XPHY へのクロックが供給されます。GC は、1 つの XPIO バンク内のすべての XPLL、および隣接するバンク内の XPLL に接続できます。
  • XCC: XPHY 受信インターフェイス用のストローブ入力
  • GC/XCC: これらのピンは、GC と XCC のいずれか、または両方として使用可能
注記: GC、XCC、または GC/XCC 入力をクロックまたはストローブの受信に使用しない場合、通常の I/O ピンとして使用できます。

GC および XCC ピンの詳細は、 『Versal アダプティブ SoC クロッキング リソース アーキテクチャ マニュアル』 (AM003) を参照してください。

次の図に、クロックを受信可能な XCC および GC ピンと、それぞれに関連する NIBBLESLICE を示します。GC または XCC 入力に入る (データではなく) クロックは、シングルエンドか差動かにかかわらず、NIBBLESLICE[0] に関連する I/O ピンに入力する必要があります。差動クロックの場合、負側クロック (NIBBLESLICE[1] に関連する I/O ピンで受信) を NIBBLESLICE[0] の I/O ピンに入る信号と同じ差動バッファーに接続するようにしてください。NIBBLESLICE のうち、ストローブ回路に接続できるのは NIBBLESLICE[0] のみであるため、ストローブ配線における NIBBLESLICE[1] の使用はこのバッファーで終わります。1 つの NIBBLESLICE が 1 本のピンに配線されているため、クロックかデータかを問わず、差動信号を受信すると 2 つの NIBBLESLICE のピンと RX データパスが占有されます。NIBBLESLICE[0] がクロックを受信する場合は、GC/XCC 回路 (個々の使用状況とピンの機能による) を経由して、通常の RX データパスを通過します。

図 2. XCC および GC ピンと XPHY NIBBLESLICE の関係

各バンクには 2 つの XPLL があるため、1 つのバンクで 2 種類のデータ レートをサポートできます。ソース同期 (SERIAL_MODE = FALSE) インターフェイスと SERIAL_MODE = TRUE のインターフェイスは同じバンクに共存できますが、各インターフェイスの各ニブルはソース同期のみ、または SERIAL_MODE = TRUE のみとして構成する必要があります。