ウィザードでは双方向モードがサポートされています。次に示す 3 つの BIDIR モードがあります。
- [Independent WrClk and RdClk]
- この場合、2 つの独立したピンがあり、ぞれぞれ WrClk と RdClk に使用します。Data I は双方向ですが、クロックは単方向で連続しています。RdClk は、ストローブの配置規則に従う必要があり、常に Nibbleslice0 に配置されます。WrClk は、任意の Nibbleslice に配置できます。
- [Single Continuous Clock]
- データおよびデータに関連付けられたクロックは双方向であり、データに関連付けられたクロックは常に連続しています。
- [Single Strobe]
- データおよびデータに関連付けられたクロックは双方向であり、データに関連付けられたクロックは連続していません。IO が BIDIR として構成されている場合は、双方向データパスを使用してバッファーからの出力をトライステートにするか、データパスをゲーティングしてデータ ロスが発生しないようにします。次の点に注意する必要があります。
- 次の場合、[Independent WrClk and RdClk] モードでは [TRI_SELECT as Serialized] を使用できません。BIDIR ピンと WrClk ピンが同じニブルを共有し、WrClk が NIbbleSlice1 の位置に配置されていない場合。この場合、[TRISTATE to Combinatorial] の使用を推奨しています。
- BIDIR インターフェイスがデータを受信できる状態になると、PHY_RDEN がアサートされます (永久的に High を維持できる)。FIFO_RDEN は、FIFO_EMPTY の後にアサートされます。
- BIDIR インターフェイスのデータ書き込み準備が整うと、PHY_WREN がアサートされてデータ書き込みが開始します。書き込みが完了すると、PHY_WREN がディアサートされます。注記: ニブル全体のデータ アライメントのため、固定のトレーニング パターンを使用してビットスリップ パターンを有効にする必要があります。パターンは、IP の GUI で指定できます。
- BIDIR データを使用する場合は、データ ロスのない TX/RX ターンアラウンドを可能にするために、RIU インターフェイスを有効にする必要があります。
- TRI_SELECT as Serialized の場合でのターンアラウンド プロセスは次のとおりです。
- 書き込み完了後、PHY_WREN がディアサートされる。
- BS_RESET_TRI、BS_RESET、および CLR_GATE が発行されてから、PHY_RDEN がアサートされてポインターが既知の位置に移動する。
- 8 RIU クロック サイクル間、RIU_WR_DATA = 0x0007 で RIU レジスタ BS_RESET_CTRL (RIU_ADDR 0x03) を使用し、その後 RIU_WR_DATA = 0x0000 でリセットをディアサートする。
- PHY_RDEN がディアサートされた後、CLR_GATE や BS_RESET をもう一度アサートする必要はない。
- FIFO_RDEN は、FIFO_EMPTY の後にアサートされる。バンク全体の読み出し開始時には、ビットスリップが必要。
IP には双方向ステート マシン (SM) のオプション (EN_BIDIR_SM) があり、このオプションを有効にすると、コアとサンプル デザインの動作を TX から RX、または RX から TX へ切り替えるステート マシンが追加されます。SM の動作中は読み出し/書き込みは実行されず、すべての信号 (phy_rd_en
と phy_wr_en
) がディアサートされます。このとき、SM はアクティブ状態です。BS_RESET_TRI、BS_RESET、および CLR_GATE を発行した後、PHY_RDEN をアサートしてポインターを既知の位置に移動します。8 RIU クロック サイクル間、RIU_WR_DATA = 0x0007 で RIU レジスタ BS_RESET_CTRL (RIU_ADDR 0x03) を使用し、その後 RIU_WR_DATA = 0x0000 でリセットをディアサートします。PHY_RDEN がディアサートされた後、CLR_GATE または BS_RESET を再びディアサートする必要はありません。SM が出力する done
信号を内部で使用して、TX から RX、または RX から TX へ役割を切り替えます。EN_BIDIR_SM を有効にしない場合、独自のカスタム BIDIR ステート マシンを追加して TX と RX の役割を切り替える必要があります。サンプル デザインでは、EN_BIDIR_SM=0 の場合、RIU SM ではなく、カウンター ロジックを使用して役割を切り替えます。