FIFO - FIFO - AM010

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

Document ID
AM010
Release Date
2025-05-22
Revision
1.7 日本語

CMPHY_OCTAD は TX および RX データパスの両方に対して FIFO をサポートします。   TX データパスの FIFO により、ファブリック ロジックは 1 つのクロック ドメインを使用してデータを CMPHY_OCTAD に送信します。X5IO PHY は、送信 FIFO のレイテンシを最短にするように設計されています。

次の図に、ファブリックからの 16 ビット データが出力パッド DIFF_P に送信される際の論理波形を示します。ファブリック データ PHY_DQ[15:0] は、16 ビット データとして CMPHY_OCTAD に送信されます。次に、CMPHY_OCTAD が 2 つの 8 ビット データ バイトを X5PHIO_XCVR_X2 に送信します。

図 1. FIFO シリアライズを使用したファブリックからの 16 ビット TX

PHY_WREN は 8 ビットに拡張され、データの上位バイトと下位バイトのどちらを送信するかを制御します。最初のクロック サイクルで、PHY_WREN は上位バイト PHY_D[15:8] を送信します。トライステート (X5IO PHY 制御) は論理的観点から PHY_WREN[7:0] の設定を直ちに反映します。同様に、phy2xcv_wr_dq[7:0] も PHY_CLK に基づいて PHY_D0[15:8] と PHY_D0[7:0] を直ちに反映します。

X5PHIO_XCVR_X2 では、書き込みデータが最大 8UI までロードされ、1.4ns 後に DIFF_P で送信が開始します。

次の図に、PHY_WREN[3:0] の 4 ビットを使用した 8 ビット インターフェイスを示します。この場合、CMPHY_OCTAD の 8 ビット データは X5PHIO_XCVR_X2 に並列に送信されます。

図 2. FIFO シリアライズを使用したファブリックからの 8 ビット TX

RX データパスの FIFO には、次の 3 つの動作モードがあります。

  • FIFO_MODE_x = SYNC: BIT[x] の FIFO の読み出し側と書き込み側で同じクロックを使用します。
  • FIFO_MODE_x = BYPASS: BIT[x] のデータと FIFO 書き込みクロックをそのままプログラマブル ロジックへ渡します。
  • FIFO_MODE_x = ASYNC: BIT[x] の FIFO の読み出しクロックと書き込みクロックは周波数が同じですが、独立した位相とすることができます。

次の図に、SYNC および ASYNC モードでの FIFO の動作を示します。

図 3. RX データパスの FIFO (SYNC、ASYNC)

BYPASS モードでは、次の図に示すように、FIFO_EMPTY は常に High になり、FIFO_RD_CLK は使用されません。タイミングを満たすため、FIFO_RD_CLK は未接続のままにするか、固定値に接続する必要があります。これにより、FIFO_RD_CLK の無効なタイミングによるデザインの性能低下を防ぐことができます。BYPASS モードでは、X5IO Wizard で DQS/ストローブ ピンにクロック制約を与えると、内部で生成された FIFO_WR_CLK のタイミングが決定します。

図 4. RX データパスの FIFO (BYPASS)

FIFO モードは、RXFIFO_MODE_<0-7> 属性で指定してビット単位で制御できます。同じオクタッド内で SYNC と ASYNC の FIFO_MODE を混在させることはできません。書き込みポインターと読み出しポインターが等しくなると、FIFO_EMPTY がアサートされます。これが、次に示す ASYNC のレイテンシ波形の開始点となります。読み出しポインターが特定の位置 (FIFO_RDEN がディアサートされた位置など) でロックされ、書き込みポインターがまだインクリメントしている場合、FIFO_WR_CLK の 10 サイクル後に書き込みポインターは読み出しポインターの位置までラップアラウンドします。これにより、新しいデータが Q<0-5> ピンに現れ、FIFO_EMPTY が再びアサートされます。

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

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

表 1. FIFO 関連の属性
属性 説明
FIFO_MODE_<0-7> RX データパス内の FIFO のクロッキング トポロジを決定します。
RX_DATA_WIDTH デシリアライズ係数: 1:16、1:8、1:4、1:2
  1. 詳細は、X5IO PHY のプリミティブ を参照してください。

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 は、同じビットのものを表します。DATAIN[x] は、Qx 出力の 1 つにマップします。この波形は BIT[2] のものですが、すべてのビットに共通です。
注記: ASYNC モードでは、X5IO Wizard を使用すると FIFO_WR_CLK を利用できます。ストローブ/RdClk ピンに適用したクロック制約は、FIFO_WR_CLK ピンには伝搬しません。FIFO_WR_CLK によって生成されたクロック バッファーに対してクロック制約を作成してください。