FIFO モードの制御

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

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

FIFO モードは、FIFO_MODE_<0-5> 属性で指定して NIBBLESLICE 単位で制御できます。

書き込みポインターと読み出しポインターが等しくなると、FIFO_EMPTY がアサートされます。これが、次に示す ASYNC のレイテンシ波形の開始点となります。読み出しポインターが特定の位置 (FIFO_RDEN がディアサートされた位置など) でロックされ、書き込みポインターがまだインクリメントしている場合、FIFO_WR_CLK の 8 サイクル後に書き込みポインターは読み出しポインターの位置までラップアラウンドします。これにより、新しいデータが Q<0-5> ピンに現れ、FIFO_EMPTY が再びアサートされます。

重要: フロップの場所 (BLI または PL) にかかわらず、ストローブ信号 (キャプチャ クロックではない) を受信する場合は、FIFO_RDEN = !FIFO_EMPTY に関連する FIFO_EMPTY をレジスタ経由で使用しないでください。図 1 を参照してください。

次の表に、FIFO 関連の属性を簡単にまとめます。詳細は、属性 を参照してください。

表 1. FIFO 関連の属性
属性 説明
FIFO_MODE_<0-5> RX データパス内の FIFO のクロッキング トポロジを決定します。
RX_DATA_WIDTH RX データパスのデシリアライズを決定します。これにより、DATAIN と Qx のマップが変化します。

次の表に、DATAIN と Qx のマップを示します。DATAIN[x] は NIBBLESLICE[x] に対応します。P0、N0、…、P3、N3 の内容は、次に示すレイテンシの波形を参照してください。

表 2. DATAIN[x] と Qx のマップ
デシリアライズ (RX_DATA_WIDTH) DATAIN[x]
N3 P3 N2 P2 N1 P1 N0 P0
1:8 Qx[3] Qx[7] Qx[2] Qx[6] Qx[1] Qx[5] Qx[0] Qx[4]
1:4 Qx[3] Qx[7] Qx[2] Qx[6]
1:2 Qx[3] Qx[7]

FIFO_MODE_x = ASYNC の場合:

  • FIFO_EMPTY の値の変化には 2 ~ 3 サイクルかかります。
  • 2 ~ 3 サイクルのレイテンシによって、書き込みポインターが常に読み出しポインターの 2 ~ 3 サイクル先に動作するようになっています。
  • FIFO_RD_CLK と FIFO_WR_CLK は同じ周波数にする必要がありますが、位相は独立しています。
  • FIFO_EMPTY と Qx は FIFO_RD_CLK ドメインに属します。

次に示す図の DATAIN と Q は、同じ NIBBLESLICE のものを表します。DATAIN[x] は、Qx 出力の 1 つにマップします。この波形は NIBBLESLICE[2] のものですが、すべての NIBBLESLICE に共通です。

注記: ASYNC モードでは、Advanced IO Wizard を使用すると FIFO_WR_CLK を利用できます。ストローブ/RdClk ピンに適用したクロック制約は、FIFO_WR_CLK ピンには伝搬しません。FIFO_WR_CLK によって生成されたクロック バッファーに対してクロック制約を作成してください。
図 1. 8 ビット RX データパスのレイテンシ (FIFO_MODE_x = ASYNC)
図 2. 4 ビット RX データパスのレイテンシ (FIFO_MODE_x = ASYNC)
図 3. 2 ビット RX データパスのレイテンシ (FIFO_MODE_x = ASYNC)
FIFO_MODE_x = SYNC の場合:
  • XPLL スキュー調整回路と組み合わせて使用する場合、FIFO_EMPTY の値が変化するには 1 サイクルが必要です。
  • スキュー調整回路が正しくロックするように、継続的な受信データ クロックが必要です。
  • また、最適な性能を得るには、クロック出力を FIFO_WR_CLK に揃えるために XPLL のスキュー調整回路が必要です。
  • FIFO_EMPTY と Qx は FIFO_RD_CLK ドメインに属します。
  • FIFO_WR_CLK は、キャプチャ クロックによって駆動されます。
  • TXRX_LOOPBACK_0 = TRUE の場合、DATAIN[0] に create_clock 制約を適用する必要があります。ループバックの詳細は、TX から RX へのループバックの制御 を参照してください。
図 4. 8 ビット RX データパスのレイテンシ (FIFO_MODE_x = SYNC)

図 5. 4 ビット RX データパスのレイテンシ (FIFO_MODE_x = SYNC)

図 6. 2 ビット RX データパスのレイテンシ (FIFO_MODE_x = SYNC)

注記: 図の Calibrated Capture Clock は、RX_GATING = DISABLE の場合を示しています。CONTINUOUS_DQS = TRUE および RX_GATING = ENABLE を使用する場合は、2 段シンクロナイザーがあるため追加で 2 クロックが必要です。

FIFO_RD_CLK を FIFO_WR_CLK に揃えるには、次の図に示すように FIFO_WR_CLK を XPLL に接続してスキュー調整回路を使用します。この結果、FIFO_RD_CLK は FIFO_WR_CLK に対して固定された位相アライメントとなります。

図 7. FIFO_WR_CLK スキュー調整回路

図 8. 8 ビット RX データパスのレイテンシ (FIFO_MODE_x = BYPASS)

図 9. 4 ビット RX データパスのレイテンシ (FIFO_MODE_x = BYPASS)

図 10. 2 ビット RX データパスのレイテンシ (FIFO_MODE_x = BYPASS)

FIFO_MODE_x = BYPASS の場合、XPHY データは FIFO_WR_CLK ドメインから送信されます。タイミング クロージャを達成し、安定したクロック配線とするには、図 7 に示すように FIFO_WR_CLK をスキュー調整回路に接続してクロック バッファーの位相を揃えてください。