各 XPIO バンクには、2 つの XPLL があります。各 XPLL にはプログラマブル ロジックへのユーザー制御によるクロック出力が 4 つ (XPLL.CLKOUT<0-3>) と、XPIO バンク内のすべての XPHY ニブルへの専用高速クロック接続 (XPLL.CLKOUTPHY) が 1 つあります。XPLL の詳細は、 『Versal アダプティブ SoC クロッキング リソース アーキテクチャ マニュアル』 (AM003) を参照してください。次の表に、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 の場合、ニブル間およびバイト間クロッキングはサポートされません。 |
クロック | 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 の場合、ニブル間およびバイト間クロッキングはサポートされません。 |
属性 | 説明 |
---|---|
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 に適用すると、クロックがデータの中央に揃います。 |
送信インターフェイスがトリプレット内に配置されている場合、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 を表にしたものを、次に示します。
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 ピンの詳細は、 『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 つの XPLL があるため、1 つのバンクで 2 種類のデータ レートをサポートできます。ソース同期 (SERIAL_MODE = FALSE) インターフェイスと SERIAL_MODE = TRUE のインターフェイスは同じバンクに共存できますが、各インターフェイスの各ニブルはソース同期のみ、または SERIAL_MODE = TRUE のみとして構成する必要があります。