デバイス スタートアップの制御と同期化 - 2023.2 日本語

FPGA および SoC 用 UltraFast 設計手法ガイド (UG949)

Document ID
UG949
Release Date
2023-11-29
Version
2023.2 日本語

デバイスのコンフィギュレーションが完了すると、デバイスがコンフィギュレーション ステートを完了し、通常動作に移行するためにイベントのシーケンスが実行されます。ほとんどのコンフィギュレーション シーケンスでは、最後の手順の 1 つとしてグローバル セット/リセット (GSR) がディアサートされ、その後グローバル イネーブル (GWE) 信号がディアサートされます。これでデザインが既知の初期ステートになり、動作を開始できるようになります。

このディアサートが指定のクロック ドメインに同期していないか、クロックが高速で動作しているために GWE を安全にディアサートできない場合、デザインの一部が不明なステートになる可能性があります。これが問題とならないデザインもありますが、デザインによってはこれが原因で不安定な状態になったり、初期データ セットが正しく処理されなかったりする可能性があります。

デザインを既知のステートで開始させる必要がある場合は、AMDでは次のいずれかの方法を使用してスタートアップ時の同期プロセスを制御することをお勧めします。

  • ステート マシンなどのデザインのクリティカルな部分にクロック イネーブル、ローカル リセット (同期)、またはその両方を使用して、これらの部分のスタートアップを制御し、既知のものになるようにします。
  • クロック イネーブル機能を持つクロック バッファー コンポーネントをインスタンシエートします。

    デザイン クロックをイネーブルにする前に、必要なクロック数だけリセットのディアサートを遅らせます。次に、UltraScale デバイスでリセットをディアサートした後の最初のデザイン クロック エッジを遅延させる方法の例を示します。シンクロナイザー レジスタに ASYNC_REG=TRUE を設定することにより、すべてのレジスタが 1 つのスライスに配置されるので、グローバル クロック リソースで駆動する必要はありません。シンクロナイザー クロックにクロック バッファーが挿入されないようにするには、入力クロック ポートに CLOCK_BUFFER_TYPE=NONE プロパティを使用します。

    図 1. 安全にクロックを開始するためのリセットの同期化と遅延の例

  • MMCM を使用する場合は、Clocking WizardSafe Clock Startup オプションをオンにして、デザイン クロックが安定した後のにのみイネーブルになるようにします。

    次の例に、UltraScale デバイスでユーザー ロジックを駆動する BUFGCE の CE ピンに接続された MMCM LOCKED 信号の同期化段を示します。2 番目の BUFGCE はファンアウトの大きい BUFGCE (ユーザー クロック) に並列に接続され、BUFGCE/CE ピンを制御するロジック専用に使用されます。このトポロジは、シンクロナイザーと BUFGCE ピンの間のクロック スキューを最小限に抑えることにより、UltraScale デバイスの BUFGCE/CE でタイミング クロージャを達成するのに有益です。

    図 2. MMCM での安全なクロック開始例

    ヒント: MMCM または PLL の補正モードが ZHOLD または BUF_IN に設定されている場合、CLKOUT0 からのすべてのクロックがフィードバック クロックと共にグループ化され、同じ CLOCK_ROOT が使用されます。これにより BUFGCE/CE でタイミング違反が発生する場合は、ファンアウトの大きいクロックとフィードバック クロックの間のみに CLOCK_DELAY_GROUP 制約を作成します。オプションで、ファンアウトの小さいクロック ネットに USER_CLOCK_ROOT 制約を設定し、MMCM と同じクロック領域へのロードに制約を設定することもできます。7 シリーズ デバイスでは、クロッキング アーキテクチャが異なるので、タイミング クロージャを達成するために 2 番目のクロック バッファーは通常必要ありません。