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 に送信します。
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 に並列に送信されます。
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 の動作を示します。
BYPASS モードでは、次の図に示すように、FIFO_EMPTY は常に High になり、FIFO_RD_CLK は使用されません。タイミングを満たすため、FIFO_RD_CLK は未接続のままにするか、固定値に接続する必要があります。これにより、FIFO_RD_CLK の無効なタイミングによるデザインの性能低下を防ぐことができます。BYPASS モードでは、X5IO Wizard で DQS/ストローブ ピンにクロック制約を与えると、内部で生成された FIFO_WR_CLK のタイミングが決定します。
FIFO モードは、RXFIFO_MODE_<0-7> 属性で指定してビット単位で制御できます。同じオクタッド内で SYNC と ASYNC の FIFO_MODE を混在させることはできません。書き込みポインターと読み出しポインターが等しくなると、FIFO_EMPTY がアサートされます。これが、次に示す ASYNC のレイテンシ波形の開始点となります。読み出しポインターが特定の位置 (FIFO_RDEN がディアサートされた位置など) でロックされ、書き込みポインターがまだインクリメントしている場合、FIFO_WR_CLK の 10 サイクル後に書き込みポインターは読み出しポインターの位置までラップアラウンドします。これにより、新しいデータが Q<0-5> ピンに現れ、FIFO_EMPTY が再びアサートされます。
次の表に、FIFO 関連の属性を簡単にまとめます。詳細は、属性 を参照してください。
| 属性 | 説明 |
|---|---|
| FIFO_MODE_<0-7> | RX データパス内の FIFO のクロッキング トポロジを決定します。 |
| RX_DATA_WIDTH | デシリアライズ係数: 1:16、1:8、1:4、1:2 |
|
|
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] のものですが、すべてのビットに共通です。