リセット シーケンス

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

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

XPHY ニブルをリセットするには、次の手順を実行します。複数のニブルにまたがるインターフェイスの場合、同じ手順をすべてのニブルで実行します。1 つのニブル内の各 NIBBLESLICE の出力遅延を正しくキャリブレーションするには、NIBBLESLICE[0] を使用する必要があります。NIBBESLICE[0] が使用されていない (通常、TX_RST[0] と RX_RST[0] が 1 に接続されている) が、ニブル内のほかの NIBBESLICE で出力遅延が使用されている場合は、TX_RST [0] と RX_RST [0] の (TX_RST[0] だけではなく) 両方を 1 ではなく 0 に接続してください。

次に、SERIAL_MODE = FALSE (ソース同期デザイン) に設定した XPHY ニブルのリセット シーケンスを示します。特に記載のない信号は、すべて XPHY のものです。

注記: 下記のリセット シーケンスを開始する前に、次の条件を考慮する必要があります。
  • リセット シーケンスの間、PHY_WREN と PHY_RDEN は常にディアサートしておく必要があります。
  • リセット シーケンスの間、TX_EN_VTC と RX_EN_VTC は常にアサートしておく必要があります。
  • 最初に RST、TX_RST、および RX_RST をアサートします。
  • XPLL.CLKOUTPHYEN はディアサートされた状態から開始します。この信号は、RST がアサートされたとき、またはデバイスの電源投入時にはディアサートされている必要があります。
  • EN_VTC はディアサートされた状態から開始します。外部キャリブレーションが不要で VTC を使用する場合は、EN_VTC を 1 にできます。
  1. XPLL.LOCKED_FB がアサートするまで待ちます。複数の XPLL を使用してインターフェイスにクロックを供給する場合、これら XPLL の各 XPLL.LOCKED_FB を AND ゲートに入力し、その出力でインターフェイスを駆動します。
  2. 手順 1 の結果がアサートしたら、インターフェイスを構成するすべてのニブルの RST、TX_RST、および RX_RST をディアサートします。
  3. XPLL.LOCKED_FB の AND ゲートからの出力がアサートしたら、CTRL_CLK の 64 サイクル待ってから、インターフェイスのクロッキングに使用するすべての XPLL の XPLL.CLKOUTPHYEN をアサートします。
  4. インターフェイスの各ニブルからの DLY_RDY を AND ゲートに入力し、その結果出力をユーザー アプリケーションのクロック ドメインに同期します。
  5. インターフェイスのすべての DLY_RDY の AND ゲートからの出力 (手順 4) が 1 になったら、インターフェイスを構成するすべてのニブルの EN_VTC をアサートします。VTC を使用しない場合、または REFCLK_FREQUENCY < 500MHz の場合 (この場合は VTC と DELAY_VALUE _x はサポートされないため、EN_VTC を 0 に接続する)、手順 4 で示したインターフェイスのすべての DLY_RDY の AND ゲートからの出力が 1 になったら、EN_VTC をアサートせず 手順 7 に進みます。
  6. インターフェイスの各ニブルからの PHY_RDY を AND ゲートに入力し、その出力が 1 になるのを待ちます。
  7. CTRL_CLK の 16 サイクル待機します。
  8. 16 番目のサイクル後、インターフェイスを構成するすべての XPLL の XPLL.LOCKED が 1 になると、リセット シーケンスは完了したものと見なされます。いずれかの時点で XPLL.LOCKED_FB がディアサートされた場合、インターフェイスを構成するすべてのニブルと XPLL をリセット状態 (この手順の上に示した箇条書きを参照) に戻してください。
図 1. ソース同期リセット シーケンス

次に、SERIAL_MODE = TRUE (ソース同期でないデザイン) に設定した XPHY ニブルのリセット シーケンスを示します。特に記載のない信号は、すべて XPHY のものです。

注記: 下記のリセット シーケンスを開始する前に、次の条件を考慮する必要があります。
  • リセット シーケンスの間、PHY_WREN と PHY_RDEN は常にディアサートしておく必要があります。
  • リセット シーケンスの間、TX_EN_VTC と RX_EN_VTC は常にアサートしておく必要があります。
  • 最初に RST、TX_RST、および RX_RST をアサートします。
  • XPLL.CLKOUTPHYEN はディアサートされた状態から開始します。この信号は、RST がアサートされたとき、またはデバイスの電源投入時にはディアサートされている必要があります。
  • このシーケンスでは、VTC を使用しません。このため、EN_VTC をディアサートするか、1'b0 にしてください。
  1. XPLL.LOCKED_FB がアサートするまで待ちます。複数の XPLL を使用してインターフェイスにクロックを供給する場合、これら XPLL の各 XPLL.LOCKED_FB を AND ゲートに入力し、その出力でインターフェイスを駆動します。
  2. 手順 (1 の結果が) がアサートされた後、インターフェイスを構成するすべてのニブルの RST、TX_RST、および RX_RST をディアサートします。
  3. XPLL.LOCKED_FB の AND ゲートからの出力がアサートしたら、CTRL_CLK の 64 サイクル待ってから、インターフェイスのクロッキングに使用するすべての XPLL の XPLL.CLKOUTPHYEN をアサートします。
  4. インターフェイスの各ニブルからの DLY_RDY を AND ゲートに入力し、その結果出力をユーザー アプリケーションのクロック ドメインに同期します。
  5. 手順 4 の結果がアサートされた後、さらに CTRL_CLK の 16 サイクルが経過するまで待機します。16 番目のサイクル後、インターフェイスを構成するすべての XPLL の XPLL.LOCKED が 1 になると、リセット シーケンスは完了したものと見なされます。いずれかの時点で XPLL.LOCKED_FB がディアサートされた場合、インターフェイスを構成するすべてのニブルと XPLL をリセット状態 (この手順の上に示した箇条書きを参照) に戻してください。
図 2. シリアル モードのリセット シーケンス
ヒント: インターフェイスが複数のニブルで構成されている場合、DLY_RDY のアサート時間はニブルごとに異なります。シミュレーションでは、DLY_RDY がアサートされるタイミングは 1 つのインターフェイス内ではすべてのニブルで同じですが、インターフェイスごとに異なります。