UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 52806

クロッキング デバッグ ガイド

説明

このクロッキング デバッグ ガイドでは、クロッキングのデバッグ手順を説明し、DCM および PLL の使用にあたっての最良事例やヒントを紹介します。本書には次のセクションが含まれています。

ソリューション

概要

ザイリンクス FPGA のクロッキング リソースを使用する際に直面する一般的な問題をデバッグしやすくするのが本書の目的です。ハイパーリンクをクリックすると、デバッグ手順を確認することができます。また、DCM および PLL の使用にあたっての最良事例やヒントも紹介していきます。これは、デバイスのユーザー ガイドを置き換えるものではありません (その他の情報を参照)。 各問題の説明には、次のセクションがあります。

  • 関連性: 説明されている問題が実際に起きている問題と同じであることを確認する方法が記載されています。
  • ソリューションまたは回避策: 問題の解決策をリストしています。
  • 次のステップ: このデバッグ ガイドでは問題を解決できない場合に利用できる追加参考資料を紹介しています。
問題の詳細

このガイドに含まれている問題の詳細は次のとおりです。

DCM を使用するにあたっての最良事例やヒントは、このガイドの次のセクションで紹介されています。

  • Virtex-4 DCM NBTI: NBTI の影響を受けているザイリンクス FPGA は Virtex-4 のみです。このセクションでは、DCM マクロおよび自動キャリブレーション ブロックの問題と使用について説明します。自動キャリブレーション ブロックを使用する具体的なデバッグ手順が説明されています。
  • DCM/PLL 設定 : FPGA 内部でのクロック生成に関する問題、またはソフトウェアでの DCM/PLL 設定に関する問題が説明されています。デバッグ手順は含まれていませんが、DCM/PLL 設定方法について質問や問題がある場合に役立つ情報が含まれています。
DCM がロックしない

LOCKED 出力は、DCM/DLL クロックが正しい初期周波数および位相アライメントを得たときを示します。Spartan-II および Virtex/-E デバイスには DLL (遅延ロック ループ)、Virtex-4 および Virtex-5 には DCM が含まれています。DCM は、追加周波数合成と位相シフト機能と DLL をあわせたものです。このセクションは、DCM と DLL の両方を対象にしています。リセットの後、ロック状態にするため、DCM は数千サイクル間クロックをサンプルします。DCM/DLL がロック状態になると、LOCKED 信号が High にアサートされます。LOCKED 信号が High にアサートされるまでは、DCM/DLL 出力クロックは有効ではなく、グリッチ、スパイクなどの間違った動作をすることがあります。特に、CLK2X 出力はデューティ サイクルが 25/75 の 1x クロックとして現れます。

LOCKED が High にアサートされるまでは DCM/DLL 出力は有効ではないので、出力を監視する必要があります。

DCM がロックしない: 関連性

DCM の LOCKED 信号が Low (High になっていない)、またはアサートされたが今はディアサートされている状態であれば、ここで説明している問題が発生している可能性があります。

LOCKED または監視可能な出力を使用して LED を駆動してください。LOCKED を監視するための出力がない場合は、デバッグしている間は ChipScope を使用して監視してください。

デザインで複数の DCM/DLL を使用していて、監視前に LOCKED 信号を AND でつなげている場合は、どの DCM/DLL が問題を引き起こしているか判別するため、それらを隔離してデバッグするようにしてください。

ステータス信号も監視するとよいかもしれません。ステータス信号は DCM の特定コンディションを示すためのものです。

たとえば、Virtex-5 ではステータス バスは DO および DO[0] = 位相シフト オーバーフロー、DO[1] = CLKIN 停止、DO[2] CLKFX 停止、DO[3] = CLKFB 停止となっています。

ステータス バスの詳細はデバイスのユーザー ガイドを参照してください。

DCM がロックしない: ソリューション

CLKIN の最低 3 サイクル間、RST 信号を High にアサートします。自動キャリブレーション マクロを設定して Virtex-4 を使用している場合は、RST を最低 200ms 間アサートする必要があります。

RST 信号はアクティブ High の非同期リセットです。RST 信号を非同期にアサートすると、伝搬遅延の後すべての DCM が Low になります。

すべてのデザインで、CLKIN が安定するまで DCM をリセットに保持しておく必要があります。

内部または外部フィードバックで DCM がコンフィギュレーションされている場合は、コンフィギュレーション後にリセットを適用して、一定してロック状態になるようにすることを強く推奨します。

外部フィードバック コンフィギュレーション

最適なロック プロセスのため、フィードバック コンフィギュレーションの DCM には、DCM がロックし始めるときに 安定した CLKIN と CLKFB の両方が必要です。外部フィードバックを使用したコンフィギュレーション中は、ロック プロセスの開始時に CLKFB を供給することはできません。コンフィギュレーションの最後に、デバイスがスタートアップ シーケンスを開始すると、DCM はロックを開始します。GTS (グローバル トライステート) はこの時はまだアサートされているので、出力 I/O ピンはまだトライステート状態です。このため、GTS がリリースされるまで外部フィードバックは FPGA から出力されません。

GTS のディアサート後 CLKFB が現れるときに、DCM がロックされます。ただし、DCM が最適なポイントでロックされず、ジッタおよびクロック サイクルのレイテンシが増加する可能性があります。

また CLKFB がトライステートになるときに別の信号とカップリングされる場合は (PCB シグナル インテグリティの問題)、DCM でこの無効なクロックが CLKFB として識別されて、ロックに使用される場合があります。この場合、GTS がディアサートされ、本来の CLKFB 信号が現れたときに、DCM が正しくロックされない可能性もあります。コンフィギュレーション後にリセットを行うと、このロック プロセスが有効な CLKIN および CLKFB 信号で開始し、一定したロック状態になります。

内部フィードバック コンフィギュレーション

入力クロック オシレーターをコンフィギュレーション中に確実に安定させることができず、フィードバックが内部フィードバックの場合は、コンフィギュレーション後にリセットを適用し、ロックが発生するようにする必要があります。

注記:

  • BitGen や Project Navigator の GUI のオプションなどを使用してスタートアップ シーケンスを変更する場合は、LCK_cycle (DCM がロック状態になるまで待機) を GTS_cycle (GTS をディアサート) の前に配置しないでください。配置すると、DCM がロックせず、コンフィギュレーションが完了しません。
  • Project Navigator を使用してプログラミング ファイルを生成する場合は、[Generate Programming File] のスタートアップ オプションのタブで設定します。LCK_cycle は「Release DLL」、GTS_cycle は「Enable Outputs」と呼ばれます。
  • デフォルト値は -g LCK_cycle:NoWait および -g GTS_cycle:5 です。この設定の場合は、DCM がロックするまで、スタートアップ シーケンスが待機することはありません。
  • 外部フィードバックの場合は、BitGen オプションで GTS_cycle を GWE_cycle の前に設定する必要があります (これがデフォルト)。これで、DCM が I/O ピンがアクティブになった後にリセットされます。
  • Virtex-4 デバイスを使用している場合は、AUTOCALIBRATION が TRUE のとき、200ms のリセット要件が満たされるようにしてください。

DCM をリセットしていますか。

DCM のリセット

DCM をリセットしておらず、DCM ロックに問題がある場合は、必要な時間 DCM をリセットしてみてください。

リセット後に DCM がロックする場合は、DCM への入力クロックと電源供給を初期ロック中にチェックして、ロックにエラーを生じさせるようなノイズがないかを確認します。

DCM がロックしない: 次のステップ

これでも問題が解決できない場合は、次のセクションに進んでください。

DCM 設定

DCM は正しいモードになっていますか。入力クロックは推奨リソースで駆動されていますか。またはグローバル配線上に配線されていますか。

  • はい
  • いいえ
    • DLL_FREQUENCY_MODE、DFS_FREQUENCY_MODE、DCM_PERFORMANCE_MODE が正しく設定されているかどうか、ソース コードを確認します。
    • 入力クロックが、PLL (Virtex-5)、PMCD (Virtex-4)、IBUFG で駆動されているか、またはグローバル配線上に配線されているか、ソース コードを確認します。
      • FPGA Editor でもこれは確認できます。
DCM は High と Low の 2 つの周波数モードで動作可能です。選択されているモードにより、入力および出力の周波数の許容範囲が変わります。CLKFX や CLKFX180 などの DFS 出力のみを使用している場合は、範囲は異なります。CLK0 がデスキューに使用されているなど、DLL 出力と DFS 出力を使用している場合は、狭い範囲で DLL を使用する必要があります。

Spartan-3 FPGA の DCM では FREQUENCY_MODE 設定が使用されるので、入力クロックの周波数に基づいて設定する必要があります。範囲および設定については、デバイスのデータシートを使用してください。Spartan-3E および Spartan-3A ファミリの DCM の場合、ソフトウェアで FREQUENCY_MODE 設定は使用されません。代わりに、ハードウェアで入力周波数が検出され、正しい設定が自動調整されます。

使用しているデバイスが Virtex-4 または Virtex-5 の場合は、DCM_PERFORMANCE_MODE にも依存しています。DCM_PERFORMANCE_MODE は MAX_RANGE または MAX_SPEED に設定できます。これはデバイスのユーザー ガイドに記載されており、範囲値はデバイスのデータシートを参照してください。

たとえば、Virtex-4 (-12 スピード グレード) では、入力周波数が 100 MHz で、CLK0 および CLKFX が 220 MHz の場合、次のようになります。

最大スピード モード (デフォルト) で DLL 出力を使用している場合、低周波数モードの入力周波数の許容範囲は、32 MHz から 150 MHz まで、すなわち CLKIN_FREQ_DLL_LF_MS_MIN から CLKIN_FREQ_DLL_LF_MS_MAX までです。

最大スピード モード (デフォルト) で DFS 出力を使用している場合、高周波数モードの周波数の許容範囲は、210 MHz から 350 MHz まで、すなわち CLKOUT_FREQ_FX_HF_MS_MIN から CLKOUT_FREQ_FX_HF_MS_MAX までです。
つまり、DCM_PERFORMANCE_MODE = MAX_SPEED および DLL_FREQUENCY_MODE=LOW および DFS_FREQUENCY=HIGH です。

周波数の範囲については、Virtex-4 データシート を参照してください。

間違ったモード

間違ったモードを選択していると、DCM が動作しません。

間違ったモードを使用している場合は、ソース コードで修正して、再度インプリメントする必要があります。
フィードバック パスを修正してもまだ問題を解決できない場合は、次のセクションに進んでください。

フィードバック

クロックのデスキューにフィードバックを使用していますか。

スキューは、クロック エッジの到達時間の差で、ポイント間のクロック パス遅延の差により発生します。スキューはセットアップおよびホールド タイムに悪影響を及ぼし、システム パフォーマンスを低下させます。

DCM/DLL は CLKIN と CLKFB を比較し、同期タップを調節してこれらをアラインします。DCM/DLL で FPGA のクロック分配遅延を補正するには、フィードバック パスを使用する必要があり、また、グローバル クロック ラインにそのフィードバックを配線する必要があります (BUFG を使用するなど)。デバイス ファミリによっては、DCM と同じデバイス ハーフに BUFG を配置させる必要があります (詳細はデバイスのユーザー ガイドを参照)。フィードバック パスがローカル配線に配線されている場合、DCM/DLL はロックしますが、クロックがデスキューされません。DCM の DLL 出力が使用される場合、デスキューをする必要があるなしにかかわらず、LOCK 信号が High になるにはフィードバックが必要です。

DCM を使用していて、クロックをデスキューする場合は、DCM の DLL 部分が使用されます。DFS 専用モードの DCM は範囲が広いのですが、クロックをデスキューする場合は、範囲の狭い DLL 仕様に沿う必要があります。

内部 vs 外部フィードバック

内部フィードバックまたは外部フィードバックを使用していますか。

クロックをデスキューするには、DLL/DCM の CLKFB ピンにフィードバック クロックを入力する必要があります。ザイリンクス FPGA には、内部パスまたは外部パスに相対してデスキューする機能があります。

内部フィードバックが選択されている場合は、外部 FPGA 入力ピンにクロックが到達するのと同時に、デバイスの同期エレメントにクロックが到達するよう、DLL/DCM はクロックをデスキューします。

外部フィードバックが選択されている場合は、外部 FPGA 入力ピンにクロックが到達するのと同時に、ダウンストリーム デバイスにクロックが到達するよう、DLL/DCM はクロックをデスキューします。

外部フィードバックを使用しているときは、一定したロックを得るため、コンフィギュレーション直後に DCM にリセットを適用するようにしてください。

また、フィードバック パス遅延の変動は必ず CLKFB_DELAY_VAR_EXT の制限内になるようにしてください。グローバス クロック ラインに接続されているときはオンチップ変動は最小限なので、この制限は外部フィードバック パスのみに適用されます。

内部フィードバック

フィードバック クロックに CLK0 が使用されていますか。
BUFG に CLK0 は配線されていますか。
フィードバック パスに使用されている BUFG は DCM と同じデバイス ハーフにありますか。

  • はい
  • いいえ
    • CLK0 が BUFG に配線され、DCM の CLKFB 入力に接続されているか、ソース コードを確認します。
    • FPGA Editor でもこれは確認できます。
    • フィードバック パスに使用されている BUFG が DCM と同じデバイス ハーフにあること確認するには FPGA Editor を使用します。

DCM が遅延を補正できるよう、内部フィードバック パスが正しく設定されていることが重要です。パスが間違っている場合は、DCM が一定してロックしません。

Spartan-3 ジェネレーション デバイスでは、フィードバック パスに CLK0 だけでなく CLK2X も使用できます。どちらもテストされ、指定の動作範囲内で機能することが確認されています。CLK2X フィードバックではロック状態にならず、CLK0 フィードバックであればロック状態になるというケースがいくつかあります。入力ジッターが指定最大値かそれ以上の場合に、このケースが見られました。CLK2X に比べ CLK0 はストレートなので、CLK2X よりもジッターがやや少なく、デスキュー回路でロックしやすくなっています。しかし、先に述べたように、指定範囲内では CLK0 と CLK2X はどちらも機能します。

間違った内部フィードバック パス

外部フィードバック パスが間違っている場合は、ソース コードで修正する必要があります。ISE のインスタンシエーション テンプレートにあるコードを使用して BUFG をインスタンシエートできます (ISE で電球の形をしたアイコンをクリック)。LOC 制約を使用して BUFG を正しいほうのデバイス ハーフにロックすることができます。
フィードバック パスを修正してもまだ問題を解決できない場合は、次のセクションに進んでください。

外部フィードバック

外部フィードバック CLK0 を使用するとき、OBUF または ODDR を介して FPGA から出力していますか。入力されたフィードバック クロックは IBUFG などの専用配線に配線されていますか。外部フィードバック パスは CLKFB_DELAY_VAR_EXT 仕様に沿っていますか。

  • はい
  • いいえ
    • フィードバック クロック入力が IBUFG に配線され、DCM の CLKFB 入力に接続されているか、ソース コードを確認します。
    • FPGA Editor でもこれは確認できます。
    • また、FPGA から出力されている CLK0 が OBUF または ODDR を介しているかチェックします。

DCM が遅延を補正できるよう、外部フィードバック パスが正しく設定されていることが重要です。パスが間違っている場合は、DCM が一定してロックしません。

CLKFB_DELAY_VAR_EXT はデバイスのデータシートで指定されています。この仕様が満たされていない場合、DCM でロックを取得できなくなったり、ロックを失う可能性があります。ユーザーが使用しているボードでこの値を計測または見積もる必要があります。

間違った外部フィードバック パス

外部フィードバック パスが間違っている場合は、ソース コードで修正する必要があります。ISE のインスタンシエーション テンプレートにあるコードを使用して BUFG をインスタンシエートできます (ISE で電球の形をしたアイコンをクリック)。LOC 制約を使用して BUFG を正しいほうのデバイス ハーフにロックすることができます。

フィードバック パスを修正してもまだ問題を解決できない場合は、次のセクションに進んでください。

DCM 入力ジッター

DCM の入力クロックのジッターは指定範囲内ですか。

DCM/PLL が正しく設定されているのにロックしない場合は、入力ジッターに問題がある可能性があります。デバイスのデータシートに、DCM/PLL で許容可能なジッター量が指定されています。

DCM/PLL 入力ジッターが多過ぎる

FPGA へのクロック ソースにジッターが多過ぎる場合、DCM/PLL が正しく動作しません。FPGA に入力されるクロックに問題がないことを確認してください。

ホワイト ペーパー『Jitter: Variations in the Significant Instants of a Clock or Data Signal』 (WP319) にはデジタル システムでのジッターの計測および管理についての説明があります。

入力ジッターを計測している場合は、入力ピンに出来る限り近いところで計測することが重要です。また、ODDR2 を介して DCM に入力クロックを供給することも可能です。この場合はデバイスからジッターが追加されます。
ジッターを計測するための参考資料:

参考記事:

その他の PCB デザイン リソース

外部要因

FPGA に電力は供給されていますか。FPGA は適切にデカップルされていますか。

電力レールが DCM/DLL にジッターを誘発させる可能性があります。システムにジッター/ノイズが多過ぎると、DCM/DLL がロックできなくなることがあります。遅延ラインは VCCAUX、制御ロジックは VCCINT から電源供給されています。

電力プレーンに電圧ノイズがあるかどうかを監視するため、VCCINT、VCCAUX、GND プレーンをテストします (テクニカル サポートでケースを開く場合はこのスコープ ショットを保存しておきます)。

デカップリングに関しては、『Virtex-4 PCB Designers Guide』 (UG072) および『Virtex-5 PCB Designers Guide』 (UG203) を参照してください。FPGA が適切にデカップルされていることを確認してください(その他の FPGA の場合は XAPP623 を参照)。

DCM/PLL のみが使用されているテスト ケースを作成し、問題が起きるかどうかチェックしてみてください。デザインの一部を使用し、VCCINT、VCCAUX、GND プレーンを監視し、電圧ノイズに変化が見られるか確認します。この方法で DCM/PLL 操作に問題が見られない場合は、デザインのほかの部分の電力プレーンまたはグランド プレーンに追加ノイズがあります。次の点をチェックしてみてください。

  • 同時スイッチ出力 (SSO) の値をチェックして、その違反が無いことを確認します。
  • DCM と、関連付けられているグローバル バッファーを別の位置に移動させてみてください。デバイス スイッチの激しい箇所から遠ざけてみてください。
  • デザインの大部分 (デバイスおよび出力) が同じクロック エッジでクロック供給されている場合、同時に電流引き込みが発生するため、電力またはグランド プレーンにスパイクが発生する可能性があります。電流需要を均一にするため、位相シフトしたクロックでデザイン異なる部分にクロック供給してみてください。
  • ボード レベルのデカップリングを改善させる必要がある場合があります。

XAPP689 には「Differentiating Ground Bounce From Other Signal Integrity Issues」というセクションがあります。FPGA にグランド バウンスがあるかどうかを判別するためのテスト方法が説明されています。

電源ノイズ

FPGA の電源にノイズが多い場合は、ボード レベルで解決する必要があります。FPGA が適切にデカップルされていることを確認してください。

その他の PCB デザイン リソース

テクニカル サポートでケースを開き、次の情報を提出してください。
  • デバイスおよびソフトウェアの詳細 (例: XC5VLX50T-2C、ISE 10.1.1)
  • 入力周波数
  • 使用されている DCM/DLL 出力
  • DFS および DLL モードで使用されている周波数デスキュー調整の属性に設定されている値
  • DCM のステータス バスのステート
  • デスキュー機能を使用している場合は、フィードバックの設定方法
  • 電力および GND レール、入力クロックおよび出力クロック (転送されている場合) のスコープ ショットも含めてください。
  • 問題が現れているテスト ケースの抜粋も含めてください。
    (プトジェクト アーカイブがベストですが、PCF や NCD でも十分です。)
LOCKED が High のままだが DCM 出力が間違っている

DCM の出力が間違っているのに、LOCKED 信号が High のままという状態が発生する場合があります。LOCKED 信号のアサートは、DCM の出力が有効であることを示します。しかし、問題が発生すると LOCKED 信号がディアサートしなくなることがあります。このため、エラーをフラグする DCM のステータス バスを監視するようにしてください。

LOCKED が High のままになっている: 関連性

たとえば、Virtex-5 の場合、ステータス バスは、DO および DO[0] = 位相シフト オーバーフロー、DO[1] = CLKIN 停止、DO[2] CLKFX 停止、および DO[3] = CLKFB 停止、となります。

これらのステータス信号のいずれかがアサートされた場合は、DCM をリセットしてください。ステータス信号を監視する以外に解決策はありません。ユーザー デザイン用のモニター回路を設計するかどうかは、ユーザーが判断してください。

LOCKED が High のままになっている: 解決策

CLKIN が停止してしまったとき (CLKIN 耐性の許容範囲外に移動してしまった場合) を示すステータス ビット 1 を監視することを推奨します。STATUS(1) は、CLKIN が戻ってくると Low になります。DCM の出力クロックのステータスを確認するのに一番よい方法は、LOCKED および STATUS(1) ビットの両方を監視することです。

DCM の入力クロックに相対した出力クロック信号に関する追加情報は次のとおりです。
入力クロックが停止し始めると (CLKIN が 2 サイクル以上 High または Low のままになる)、遅延ラインがフラッシュされるため、さらに 1 クロックから 8 クロック サイクル生成され続けます。出力クロックが停止すると、CLKIN は停止、STATUS(1) 信号がアサートされます。クロックが再開すると、出力クロック サイクルは遅延ラインがいっぱいになるまで 1 から 8 サイクル間生成されません。同様に STATUS(1) 信号は出力クロックがいったん生成されるとディアサートされます。

モニター回路を作成するとき、DCM の CLKFX 出力が未使用の場合は、デザインで STATUS[2] ビットを使用しないでください。CLKFX が使用されていないときデフォルト値の 1 がシリコンで確認されています。しかし、CLKFX が使用されていないときの STATUS[2] ビット値はザイリンクスではテストされていないので、この値は保証できません。

また、モニター回路を作成している場合、監視している DCM の出力を使用しないでください。DCM の出力が機能していない場合は、このモニター回路に問題が発生している可能性があります。
この状態が見られ、またステータス バスを監視していない場合は、ステータス ビットを ChipScope コアに接続するとよいでしょう。この場合 ILA へのクロックが有効である必要があります (CLKIN を使用し、スコープを使用して CLKIN を監視し、正しく機能していることを確認します)。

ユーザーは、DCM の機能性を失わずに CLKIN を 100ms 間停止できます。この間、CLKIN が停止したこと、CLKIN が再開したらディアサートすることを示すため、ステータス バスの CLKIN 停止ビットがアサートされます。この場合、CLKIN が 100ms より長く停止しない限り、モニター回路で DCM をリセットする必要はありません。

LOCKED が High のままになっている: 次のステップ

DCM のステータス バスを監視した後もなお、出力が間違っているのに DCM の LOCKED が High のままになっている原因がつかめない場合は、このガイドの「DCM 設定」のセクションをよくお読みください。

テクニカル サポートでケースを開き、次の情報を提出してください。

  • デバイスおよびソフトウェアの詳細 (例: XC5VLX50T-2C、ISE 10.1.1)
  • 入力周波数
  • 使用されている DCM/DLL 出力
  • 入力クロックおよび出力クロック (特に間違っているクロック) のスコープ ショットを含めてください。また DCM の関連ステータス ビットのスコープ ショットも含めてください。
  • DFS および DLL モードで使用されている周波数デスキュー調整の属性に設定されている値
  • デスキュー機能を使用している場合は、フィードバックの設定方法
  • 電力および GND レール (転送されている場合) のスコープ ショットも含めてください。
  • 問題が現れているテスト ケースの抜粋も含めてください。
    (プトジェクト アーカイブがベストですが、PCF や NCD でも十分です。)

テクニカル アシスタンスが必要な場合は、サービス ポータルでサービス リクエストを開きます。

https://japan.xilinx.com/support.html#serviceportal

ソリューションのディスカッションは、ザイリンクス ユーザー コミュニティをご覧ください。

DCM 位相シフトが機能しない

DCM の位相シフト制限に達したかどうかを確認するため、DCM の DO(0) 位相シフト オーバーフロー ステータス ピンをチェックします。たとえば、Virtex-4/-5 の場合、VARIABLE_CENTER で +- 255、VARIABLE_POSITIVE で +255、DIRECT で 0 または 1023 が制限値です。制限値に達した後、数クロック サイクル間アサートされたままになります。

DCM が FINE_SHIFT_RANGE の制限値付近で動作している場合、位相シフトの方向を逆にするためのフラグに、位相シフト オーバーフローを使用しないでください。位相シフト オーバーフローが短いシフト範囲でアサートされ、ディアサートされ、またアサートされると、間違って位相シフトの方向が逆になることがあります。代わりに、位相シフト値を追跡し、位相シフト方向 (PSINCDEC) を逆にするには、単純カウンターを使用します。カウンターが以前決められた位相シフトの最大/最小値に達したときにのみ位相シフト方向が逆になります。

PSEN のアサート後、PSDONE はどれぐらいアサートされますか。

Virtex-4 の場合、PSEN のアサートと PSDONE のアサートまでのクロック サイクル数は変動するので正確な数は指定されていません。別の位相シフト操作を実行する前に PSDONE がアサートするのを待つようにしてください。

Spartan-3 ファミリの場合 (Spartan-3 および Spartan-3E/-3A の DCM 位相シフトには違いがあるので注意)
位相調整に 100 CLKIN サイクルかかり、さらに DCM の PSDONE 出力が 1 PSCLK サイクル間 High になるまでに 3 PSCLK サイクルかかる可能性があるため、『Spartan-3 ユーザー ガイド』 を参照してください。このパルスは、前の位相調整が PS ユニットで完了し、次のリクエストの準備が整ったことを示します。位相シフトは Spartan-II/-IIE DLL では使用できません。

DCM 位相シフトのソリューション/回避策

可変ファイン グレイン位相シフトを使用していますが、出力の位相が変化しません。なぜですか。

PSCLK を 1 サイクルのみ PSEN をアサートしてから、別の位相シフトを実行する前に PSDONE がアサートされるのを待ちます。PSCLK を 2 サイクル以上 PSEN をアサートすると、DCM が予測不可能な状態で位相シフトしてしまいます。


 

図 1: 推奨可変ファイン位相シフト シーケンス

その他の情報

コース グレイン位相シフト、ファイン グレイン位相シフト、 DIRECT モードの違いは何ですか。

コース位相シフトとは、DCM の CLK90、CLK180、CLK270、CLK2X180、CLKFX180 出力を指します。これらの出力は、Virtex-4 および Virtex-5 で常に使用でき、フィードバックなしで相互位相関係を維持します。Spartan-3 ジェネレーション FPGA では、これらのクロックは四分位相シフト出力と呼ばれ、DLL を使用しているときは常に使用可能です。

ファイン グレイン位相シフトは、CLKOUT_PHASE_SHIFT と PHASE_SHIFT パラメーター、DCM の PSINCDEC、PSEN、PSCLK ポートを使用して実行します。この位相シフトではフィードバックを使用する必要があります。FIXED、VARIABLE_POSITIVE、および VARIABLE_CENTER モードでファイン グレイン位相シフトを使用するときは、位相シフト値はクロック周期の分周で、温度および電圧に対して調節されます。

DIRECT ファイン グレイン位相シフトは、DCM のダイナミック リコンフィギュレーション ポート (DRP) を使用して実行します。このモードでは、ユーザーが DCM の個々の遅延タップにアクセスでき、位相シフト値は 1 タップに等しくなります。この位相シフトは温度や電圧に対して調節されず、DCM 出力のすべてに影響します。Spartan-3 ファミリおよび Virtex-II/-II Pro の場合は、FIXED と VARIABLE のオプションがあります。

DCM 位相シフト: 次のステップ

テクニカル アシスタンスが必要な場合は、サービス ポータルでサービス リクエストを開きます。

https://japan.xilinx.com/support.html#serviceportal

ソリューションのディスカッションは、ザイリンクス ユーザー コミュニティをご覧ください。

DCM/PLL 設定

次のセクションでは、DCM/DLL/PLL をデザインに含めるにあたっての設計の判断について説明します。DCM/DLL/PLL は Architecture Wizard またはインスタンシエーションで設計できます。DCM/DLL/PLL のインスタンシエーション テンプレートは、ISE の『ライブラリ ガイド』、ユーザー ガイド、言語テンプレートに含まれています。

決定の影響を受ける属性設定の詳細は「設定方法」を参照してください。Architecture Wizard は自動設定します。Architecture Wizard で生成されるコードを表示したい場合は、ISE の [Sources] パネルで XAW ファイルを選択し、[Processes] パネルで [View HDL Source] をダブルクリックします。 インスタンシエーションを使用している場合は、「設定方法」にあるように属性および接続を変更できます。

DCM/DLL vs PLL

Virtex-5 の PLL または DCM/DLL を使用していますか。

PLL および DCM は、周波数合成、クロック調整、位相シフトなど、同じ基本的な機能を実行しますが、異なるアーキテクチャでアーカイブされます。

非常に単純な DLL は、タップ遅延ラインと制御ロジックで構成されています。制御ロジックは、遅延ラインを調整するため、入力クロックとフィードバック クロックを連続してサンプルします。遅延ラインは遅延エレメントで構成されています。

PLL は電圧制御のオシレーターを使用し、入力クロックを概算するクロック信号を生成します。位相検出器とフィルターで構成されている制御ロジックは、クロック分配遅延を補正するため、オシレーター周波数と位相を調節します。

DCM か PLL かの選択

PLL の利点

  1. PLL は基準クロック ジッターをフィルターすることができます (低減するのであり、削除するわけではない)。
  2. PLL は、融通性に優れたコンフィギュレーションを可能にします。

DCM の利点

  1. DCM を使用するとファイン位相シフトが可能になる。
  2. DCM に慣れているザイリンクス ユーザーが多い。
  3. デジタル周波数合成では、高域周波数がサポートされている。
デスキュー

クロックをデスキューする必要がありますか。

スキューは、クロック エッジの到達時間の差で、ポイント間のクロック パス遅延の差により発生します。スキューはセットアップおよびホールド タイムに悪影響を及ぼし、システム パフォーマンスを低下させます。

DCM/DLL は、CLKIN と CLKFB を比較し、同期タップを調整してアラインします。FPGA のクロック分配遅延を正しく DCM/DLL で補正できるようにするには、フィードバック パスを使用する必要があり、また、BUFG を使用するなどしてグローバル クロック ラインにフィードバックを配線する必要があります。フィードバック パスがローカル配線に配線されていると、DCM/DLL はロックしますが、クロックはデスキューされません。DCM の DLL 出力のいずれかが使用されている場合は、デスキューをしているかしていないかに関係なく、LOCKED 信号が High になるようにするには CLKFB が必要です。

DCM を使用して、クロックをデスキューするよう選択している場合は、DCM の DLL 部分が使用されます。DFS モードの DCM には幅広い範囲で使用できます。クロックをデスキューするよう選択している場合は、厳しい DLL 仕様に従う必要があります。

設定方法

  • クロックをデスキューする必要がある場合は、CLK_FEEDBACK を 1X に、その必要がない場合は NONE に設定します (Spartan-3 ジェネレーション FPGA の場合は 2X もサポートされています)。
  • クロックをデスキューする場合、または DCM 出力の DLL 部分を使用する場合は、DCM の CLKFB 入力を CLK0 出力に接続する必要もあります。内部フィードバックの場合は BUFG、外部フィードバックの場合は PCB トレースを介して接続します。この詳細は次のセクションを参照してください。

クロックのデスキューについての詳細は、デバイスのユーザー ガイドを参照してください。

デスキュー調整

デスキュー調整に、システム同期またはソース同期のどちらを使用する必要がありますか。

GCLK パッドから DCM 入力までの追加配線遅延を補正するには、DESKEW_ADJUST というアドバンス属性を使用して、DCM により僅かな遅延が追加されます。

SYSTEM_SYNCHRONOUS: ホールド タイムを 0 にするためすべてのクロック遅延を補正しようとします。 データ パスにあるすべてのデバイスで、共通のクロック ソースを共有しているときに使用されます。これがデフォルト値です。DCM のクロック スキュー除去機能により、クロックが前へ進められ、ワースト ケースのクロック パスが劇的に短くなります。しかし、クロックがデータの前にあらわれるほどにクロック パスが前に進められると、ホールド タイムは正の値になります。SYSTEM_SYNCHRONOUS の設定により、ホールド タイムを 0 にするため、クロック パスに十分な追加スキューが挿入されますが、clock-to-output タイムはやや長くなります。

SOURCE_SYNCHRONOUS: データとともにクロックが供給されるときに使用されます。クロックは通常エッジ アラインされるか、データを使用して中央にアラインされます。SOURCE_SYNCHRONOUS モードは主に高速データ通信 インターフェイスで使用されます。入力クロックと、DCM からのデスキューされた出力クロックの位相差を、実質 0 にします。ソース同期アプリケーションでは、データおよびクロックの両方が同じクロック ソースから派生します。送信デバイスはデータとクロックの両方を受信デバイスに送信します。これを受けて、受信デバイスは、データ受信をベストにするためクロック タイミングを調整します。高速デュアル データ レート (DDR) および LVDS 接続がこうしたシステムの例です。

設定方法

DESKEW_ADJUST を SYSTEM_SYNCHRONOUS または SOURCE_SYNCHRONOUS に設定します。

例:

DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS",

フィードバック

内部フィードバック、または外部フィードバックを使用する必要がありますか。

クロックをデスキューするには、フィードバック クロックを DLL/DCM/PLL に入力する必要があります。ザイリンクス FPGA には、内部パスまたは外部パスに相対してデスキューできる機能があります。

内部フィードバックが選択されている場合、デバイスの同期エレメントにクロックが到達するのと同時に、外部 FPGA 入力ピンにも到達するよう、DLL/DCM によりクロックがデスキューされます。

外部フィードバックが選択されている場合は、ダウンストリーム デバイスにクロックが到達するのと同時に、外部 FPGA 入力ピンにも到達するよう、DLL/DCM によりクロックがデスキューされます。

外部フィードバックを使用するときは、コンフィギュレーション直後に DCM にリセット パルスを適用して、一定したロック状態が得られるようにしてください。

また、フィードバック パス遅延の変動は必ず CLKFB_DELAY_VAR_EXT の制限内になるようにしてください。グローバス クロック ラインに接続されているときはオンチップ変動は最小限なので、この制限は外部フィードバック パスのみに適用されます。

設定方法

  • 内部フィードバックを使用する必要がある場合は、BUFG を介して CLK0 を CLKFB 入力にフィードバックする必要があります。

例:
   CLK0_BUFG_INST : BUFG
      port map
(I=>CLK0_BUF,
                    O=>CLKFB_IN);
-- edited section of DCM instantiation --
CLKFB=>CLKFB_IN,
CLK0=>CLK0_BUF,

  • 外部フィードバックを使用する場合は、次の条件を満たしている必要があります。
    • CLK0 がオフチップで配線されている。
    • スキューを削除するため、ダウンストリーム デバイスまでのフォーワード パスの遅延が、フィードバック PCB トレース パス遅延に一致している。
    • フィードバックが IBUFG (GCLK ピン) を介して配線されている。 CLK および CLKFB の両方に同じ I/O バッファーがある。

さらに、外部フィードバックを使用していて、セットアップをシミュレーションしたい場合は、PCB トレースの外部遅延をエミュレートするためテストベンチに外部遅延を追加する必要があります。

例:   

-- Instantiate the Unit Under Test (UUT)
    uut: ext_fb_top PORT MAP(
        clkin => clkin,
        clkfb => clkfb,
        din => din,
        qout => qout,
        rst => rst,
        locked => locked,
        clkout => clkout
    );
clkin <= not clkin after 5 ns;
clkfb <= transport clkout after 1 ns;

周波数モード

高周波数モードまたは低周波数のどちらを使用すべきですか。

DCM は High と Low の 2 つの周波数モードで動作可能です。選択されているモードにより、入力および出力の周波数の許容範囲が変わります。CLKFX や CLKFX180 などの DFS 出力のみを使用している場合は、範囲が異なります。 DLL 出力と DFS 出力の両方を使用している場合、たとえば、デスキューに CLK0 が使用されている場合などは、範囲の狭い DLL が使用されます。

Spartan-3 DCM では FREQUENCY_MODE 設定が使用され、これは入力クロックの周波数に基づいて設定する必要があります。正しい範囲および設定についてはデバイスのデータシートを参照してください。Spartan-3E および Spartan-3A ファミリの DCM の場合、ソフトウェアでは FREQUENCY_MODE 設定は使用されません。代わりに、入力周波数はハードウェアにより検出され、正しい設定に自動的に調整されます。

たとえば、Virtex-4 (スピード グレード -12) では、最高速 (MS) モード (このモードについては次のセクションを参照) で DLL 出力を使用しているとき、低周波数モードの入力周波数の許容範囲は 32MHz から 150MHz までです (たとえば、CLKIN_FREQ_DLL_LF_MS_MIN から CLKIN_FREQ_DLL_LF_MS_MAX まで)。

MS モードで DLL 出力を使用しているときの高周波数モードの許容範囲は、150MHz から 500MHz までです (たとえば CLKIN_FREQ_DLL_HF_MS_MIN から CLKIN_FREQ_DLL_HF_MS_MAX です)。

どの入力/出力周波数の組み合わせを使用するかを決める前に、DCM が動作する周波数を理解しておくことが重要です。

周波数モードを選択するには、DLL_FREQUENCY_MODE および DFS_FREQUENCY_MODE の属性を設定する必要があります。DLL_FREQUENCY_MODE 属性は、DLL の周波数モードを設定します。DFS_FREQUENCY_MODE 属性は、デジタル周波数合成 (DFS) の周波数モードを設定します。どちらの属性にも HIGH と LOW の値を指定できます。どちらもデフォルトは LOW です。DFS_FREQUENCY_MODE は、CLKIN、CLKFX、CLKFX180 の周波数範囲を決定します。

DLL_FREQUENCY_MODE と DFS_FREQUENCY_MODE を同じ値に設定する必要はありません。たとえば、スピード グレード -12 の Virtex-4 を使用している場合、入力クロックが 200MHz であれば、必要な出力は CLK0 が 200MHz、CLKFX が 125MHz となります。DLL_FREQUENCY_MODE を HIGH に、DFS_FREQUENCY MODE を LOW に設定する必要があります。

設定方法

DLL_FREQUENCY_MODE およびDFS_FREQUENCY_MODE 属性を HIGH または LOW に設定します。

例:

DLL_FREQUENCY_MODE => HIGH,

パフォーマンス モード

DCM パフォーマンス モードに最大範囲または最高速モードを使用していますか。

Virtex-4 および Virtex-5 の DCM のみにパフォーマンス モードがあります。DCM_PERFORMANCE_MODE 属性を使用して、DCM を高周波数で低ジッターに最適化するか、低周波数で幅広い位相シフトに最適化するかを決めることができます。

 

注記: Spartan-3 ジェネレーション デバイスには DCM パフォーマンス モードはありません。

属性値は MAX_SPEED および MAX_RANGE で、デフォルトは MAX_SPEED です。

MAX_SPEED に設定すると、DCM は高周波数のクロックを低ジッターで生成するよう最適化されます。しかし、位相シフトの範囲は、MAX_RANGE を選択する場合よりも狭くなります。

MAX_RANGE に設定すると、DCM は、位相シフトの範囲が広く、低周波数クロックを生成するように最適化されます。

DCM_PERFORMANCE_MODE は、DCM の入力および出力周波数範囲、位相シフトの範囲、出力ジッター、DCM_TAP、CLKIN_CLKFB_PHASE、CLKOUT_PHASE、およびデューティ サイクル精度に影響します。ほとんどのケースで DCM_PERFORMANCE_MODE 属性は MAX_SPEED (デフォルト) に設定する必要があります。次の場合のみ、MAX_RANGE への変更を考慮してください。

  • 周波数を MAX_SPEED 設定の周波数の最小値よりも低くする必要がある。
  • 位相シフトの範囲を大きく広げる必要がある。

設定方法

DCM_PERFORMANCE_MODE 属性を MAX_SPEED または MAX_RANGE に設定します。

:

DCM_PERFORMANCE_MODE => "MAX_SPEED",

DCM のカスケード

DCM をカスケードしていますか。

一般的に、DCM のカスケードは推奨されません。ジッターは累積するので、2 段目の DCM の出力クロック ジッターが 1 段目の DCM のものより悪化するためです。可能であれば、2 つの DCM を直列ではなく並列に使用してください。しかし、デザインで必要なクロック周波数を生成するには、DCM のカスケードが必要になることがあります。

DCM をカスケードする必要がある場合は、次のルールに必ず従ってください。

  • DLL 出力の出力ジッター仕様がデータシートに記載されています。Architecture Wizard のジッター計算機能を使用し、CLKFX のジッターを決定します。可能であれば、高周波数モードで CLKFX から CLKFX へカスケードするのは避けてください。一般的に、ジッターの累積合計は次の式に基づいて計算されます。


 

  • 各 DCM の入力および出力周波数およびジッター仕様が満たされている必要があります。両方の DCM の入力周波数が許容範囲内にある場合、両方の DCM にフィードバックを使用します。
  • DCM2 のリセットを作成するには DCM1 からの LOCKED 出力を使用します。リセット パルスの長さは 3 CLKIN サイクルにしてください。DCM1 からの LOCKED 信号は反転させ、SRL16 への入力として使用できます。SRL16 の出力は DCM2 へのリセット入力を供給します。DCM1 の出力を BUFG を介して DCM2 の CLKIN に接続します。
  • 次の場合 R1 > R2 にしてください。

R1 = DCM1 に対する M/D 比
R2 = DCM2 に対する M/D 比
M および D の値の範囲はデータシートにあります。

設定方法

自動キャリブレーション マクロを使用している DCM をカスケードするには、 Virtex-4 FPGA User Guide (UG070) を参照してください。


 

Virtex-5 PLL

PLL を使用したデスキュー

スキューは、クロック エッジの到達時間の差で、ポイント間のクロック パス遅延の差により発生します。スキューはセットアップおよびホールド タイムに悪影響を及ぼし、システム パフォーマンスを低下させます。

PLL は CLKIN と CLKFBIN を比較し、同期タップを調整してこの 2 つをアラインします。PLL には専用フィードバック出力および入力ポート、CLKFBIN と CLKFBOUT があります。PLL で FPGA のクロック分配遅延を補正するには、BUFG を介した CLKFBOUT から CLKFBIN へのフィードバック パスを使用する必要があります。位相関係を維持させる必要がない場合は、CLKFBOUT から CLKFBIN へのパスには BUFG は不要です。

PLL でのデスキュー制御には COMPENSTION 属性が使用されます。ユーザーが使用できる値は SYSTEM_SYNCHRONOUS および SOURCE_SYNCHRONOUS です。SYSTEM_SYNCHRONOUS は、ホールド タイムを 0 にするためすべてのクロック遅延を補正しようとします。

SOURCE_SYNCHRONOUS は、データと共にクロックが提供されているときに使用され、クロックと位相関係を保ちます。ほかに、INTERNAL、EXTERNAL、DCM2PLL、PLL2DCM という ISE で使用可能な値が 4 つあります。ユーザー設定にベストな値が ISE で選択されます。

たとえば、外部フィードバックを使用している場合は、COMPENSATION 属性を SYSTEM_SYNCHRONOUS に設定する必要があり、インプリメンテーション中にツールによってこれが EXTERNAL に変更されます。
スタンドアロンの周波数合成に PLL が使用されていて、PLL がクロックをデスキューしていない場合、ISE により INTERNAL が選択されるので、COMPENSATION 属性は デフォルトの SYSTEM_SYNCHRONOUS のままにしておく必要があります。

設定方法

COMPENSATION 属性を SYSTEM_SYNCHRONOUS または SOURCE_SYNCHRONOUS に設定します。

:

COMPENSATION => "SYSTEM_SYNCHRONOUS",

内部フィードバック、または外部フィードバックを使用する必要がありますか。

内部フィードバックが選択されている場合、デバイスの同期エレメントにクロックが到達するのと同時に、外部 FPGA 入力ピンにも到達するよう、PLL によりクロックがデスキューされます。

外部フィードバックが選択されている場合は、ダウンストリーム デバイスにクロックが到達するのと同時に、外部 FPGA 入力ピンにも到達するよう、PLL によりクロックがデスキューされます。

また、フィードバック パス遅延の変動は必ず CLKFB_DELAY_VAR_EXT の制限内になるようにしてください。グローバス クロック ラインに接続されているときはオンチップ変動は最小限なので、この制限は外部フィードバック パスのみに適用されます。

外部フィードバックを使用する場合は、次の条件が満たされている必要があります。

  • CLKFBOUT がオフチップで配線されている。
  • スキューを削除するため、ダウンストリーム デバイスまでのフォーワード パスの遅延が、フィードバック PCB トレース パス遅延に一致している。
  • フィードバックが IBUFG (GCLK ピン) を介して配線されている。

さらに、外部フィードバックを使用していて、セットアップをシミュレーションしたい場合は、PCB トレースの外部遅延をエミュレートするためテストベンチに外部遅延を追加する必要があります。

例:

    -- Instantiate the Unit Under Test (UUT)
    uut: ext_fb_top PORT MAP(
        clkin => clkin,
        clkfbin => clkfbin,
        din => din,
        qout => qout,
        rst => rst,
        locked => locked,
        clkfbout => clkfbout
    );
clkin <= not clkin after 5 ns;
clkfbin <= transport clkfbout after 1 ns

PLL を使用している場合の周波数の注意事項

PLL の入力および出力周波数を選択するとき、次のように定義されている FVCO および FOUT の仕様に合わせる必要があります。


 

PLL に対し M、D、D0 の値を選択する場合、FVCO および FOUT が仕様範囲内であることを必ず確認してください。VCO 動作周波数の最小値と最大値、CLKIN 入力周波数の最小値と最大値は、Virtex-5 データシートの電気的仕様のセクションで定義されています。

Virtex-5 の PLL を使用するときは BANDWIDTH 属性の値の選択に注意してください。使用可能な値は HIGH、LOW、OPTIMIZED で、デフォルトは OPTIMIZED です。バンド幅はソフトウェアで選択されます。PLL はジッター フィルターとして機能し、PLL で BANDWIDTH を LOW に設定するとさらにこのフィルター機能が高まります。BANDWIDTH を LOW に設定すると PLL のスタティック オフセットが増加する可能性があります。

Virtex-4 DCM NBTI

NBTI の発生

NBTI の詳細については、WP224 を参照してください。NBTI を簡単に説明すると、小さいプロセスでは、PMOS に長時間負のバイアスがかかると、しきい値がシフトする可能性が高くなります。

Virtex-4 DCM のみが NBTI の影響を受けるため、DCM の入力がトグルされていることが重要です。

DCM 入力クロックが長時間停止する可能性がある場合は、マクロが必要です (CLKIN および CLKFB が 100ms より長く停止する場合など)。

早期シリコン要件

早期 Virtex-4 シリコンには、Virtex-4 LX/SX の ES およびステップ 1 デバイス、Virtex-4 FX の ES1、ES2、ES3 デバイスがあります。これらのデバイスには TCONFIG、DCM_INPUT_CLOCK_STOP、および DCM_RESET に関する要件があります。

TCONFIG: VCCINT が適用された後デバイスをコンフィギュレーションするために必要な時間の最大値 (10min)

DCM_INPUT_CLOCK_STOP: CLKIN および CLKFB の停止期間の最大値 (100ms)

DCM_RESET: RST をアサート状態にしておくことができる時間の最大値 (10sec)

デバイスが損傷するなどの可能性があるため、デバイスに電源を投入し、コンフィギュレーションしないまま放置しておくことはできません。デバイスに電源を投入しておく必要がある場合は、ヌルのビットストリームをデバイスにダウンロードしてください。DCM がアクティベートされ、連続キャリブレーション ステートに保たれます。

FX ヌル ビットストリームの場合は、(Xilinx Answer 22471) を参照してください。

DCM_STANDBY マクロは、Virtex-4 LX/SX ES およびステップ 1 デバイスと、Virtex-4 FX ES デバイスに対する回避策です。これは新しいステップ番号のシリコンで使用できます。しかし、DCM_STANDBY マクロは自動キャリブレーション ブロックよりもサイズがかなり大きくなっています (100 スライス vs 15 スライス)。このため、新しいステッピング シリコンのみをターゲットにしている場合は、DCM_STANDBY マクロを使用するよりも、ソフトウェアでマクロを挿入したほうが効率的です。

XST サポート:

Synplify サポート:

最新のプロダクション Virtex-4 の要件

最新のプロダクション Virtex-4 デバイスには、Virtex-4 LX/SX のステップ 2、および Virtex-4 FX の ES4 およびそれ以上のものがあります。ISE 7.1.2 以降、AUTOCALIBRATION ブロックはソフトウェアにより自動的にインサートされます。このサイズは DCM_STANDBY よりも小さくなっています。CLKIN および CLKFB が停止しないことが確実になるまで、AUTOCALIBRATION ブロックはオフにしないてください。DCM_AUTOCALIBRATION が FALSE に設定されている場合、リセット要件は 3 クロック サイクルです。

シリコンのステッピング レベルを確認するには、『デバイス パッケージ ユーザー ガイド』 (UG112) を参照してください。

マクロの概要

DCM_STANDY マクロ、自動キャリブレーション ブロック、DFS スタンバイ マクロのオプションがあります。

Virtex-4 LX/SX ES およびステップ 1 デバイス、Virtex-4 FX ES1、ES2、ES3 の場合は、DCM_STANDY マクロを使用する必要があります。

Virtex-4 LX/SX のステップ 2 および Virtex-4 FX の ES4 の場合は、自動キャリブレーション ブロックを使用します。

このマクロは、ステップ 1 および新しい XC4VLX と XC4VSX デバイス、SCD1 および新しい XC4VFX デバイスには不要です。

Virtex-4 DCM のリセット

DCM をどれぐらいの期間リセットすべきですか。

自動キャリブレーションまたはスタンドバイ マクロを使用している場合、DCM を 200ms 間リセットする必要があります。これらのマクロは 10KHz のクロックで実行するので、PVT 変動に対して十分な期間リセットする必要があるからです。

DFS マクロを使用しているか、マクロを使用していない場合は、3 サイクル以上 DCM をリセットする必要があります。

リセット期間が 200ms 未満だと、DCM がリセットから回復しない可能性があります。

DCM がリセット状態のときの LOCKED のトグル

ISE v7.1.03i 以降のバージョンでは、Virtex-4 LX/SX のプロダクション ステップ 2 以降のデバイス、 Virtex-4 FX の ES4 およびプロダクション デバイスをターゲットにしたデザインで、各 DCM に対し自動キャリブレーション ブロックがマップによりインスタンシエートされます。アクティブ Low のリセットを使用している場合、DCM がリセットに保持されていると LOCKED 信号はトグルします。

この問題を回避するには、可能であれば、リセットをアクティブ High に変更します。
可能でない場合は、インバーターとしてコンフィギュレーションされた LUT を手動で挿入して回避できます。ツールでこの LUT が最適化されてしまわないようにするため、LUT の入力および出力ネットに KEEP 制約を設定する必要があります。

例:

Verilog;
assign RESET = ~RESET_N;
VHDL;
   LUT1_inst : LUT1
generic map (
      INIT => "01") -- Specify LUT to be an inverter
   port map (
      O => RESET, -- Output of LUT, route to reset port of DCM
      I0 => RESET_N  -- Active Low reset input to LUT
   );

次の制約を .ucf ファイルに追加する必要があります。

NET "RESET_N_IBUF" KEEP;

# The net coming from the active Low reset pad needs to be constrained
# check in FPGA Editor for the correct name of the net

注記: Synplify を使用している場合は、synthesis syn_keep = 1 制約を HDL および UCF の両方でネットに適用する必要があります。

DFS 出力のみが使用されている

DCM の DFS 部分のみを使用している場合は、別のソリューションが必要です。DLL 出力のいずれかを使用している場合 (デスキュー目的で CLK0 を使用している場合でも) は、自動キャリブレーションまたはスタンバイ マクロが必要です。

DFS 出力のみが使用されていて、DCM の CLKIN が DLL 出力の範囲外にあるケースでは、マクロを使用して LOCKED 信号を監視する必要があります。

  • マクロの Verilog および VHDL 版をダウンロード
    このマクロは Virtex-4 LX および SX ES、ステップ 0 および FX ES、ES1、ES2、および ES3 に必要です。  Virtex-4 LX および SX ステップ 1、
    ステップ 2、および FX ES4、ES5、および 0 デバイスにはこのマクロは不要です。

DFS のみのマクロを使用している場合、自動キャリブレーションはオフにする必要があります。自動キャリブレーション ブロックは CLK0 および CLKFB の動きを監視するのですが、DFS のみが使用されているときは CLK0 または CLKFB に動きがないので使用できません。DCM の DFS 部は NBTI 影響を受けないため、自動キャリブレーション ブロックは不要なのですが、DFS として使用した後に DLL として使用しないでください。

自動キャリブレーションのオフ

DCM へのクロック入力が中断されないことが確実である場合、マクロは不要です。一般的に、ISE により挿入される自動キャリブレーション ブロックの使用を推奨します。

余分なロジック挿入は、次のいずれかの方法でオフにできます。

  • デザイン内の DCM のいずれにもクロック停止回路が不要である場合 (DCM ソース クロックが絶対に停止しないなど)、XIL_DCM_AUTOCALIBRATION_OFF 環境変数を設定してグローバルにロジック挿入をオフにすることができます。
  • また、DCM_AUTOCALIBRATION 属性を特定の DCM に設定して、個別にロジック挿入をオフにすることもできます。使用可能な値は TRUE および FALSE で、デフォルト値である TRUE を指定すると、クロック停止回路がマップで挿入され、FALSE を指定するとロジック挿入がオフになります。この属性は、VHDL generic または Verilog defparam を使用して HDL デザイン ソースに追加できます。また、合成属性として入力することもできます (構文は、使用している合成ツールを確認)。

UCF ファイルでこの属性を適用する場合の構文は、次のようになります。

INST DCM_INST DCM_AUTOCALIBRATION="FALSE";

未使用の Virtex-4 DCM

ISE 7.1i SP1 およびそれ以降ソフトウェアを使用している場合、未使用 DCM は自動的に連続キャリブレーション モードに自動的にコンフィギュレーションされます。

このデバッグ ガイドにリストされていない問題

シリコンおよびソフトウェアに関する Q&A のデータベースを検索するには、またはサービス ポータルでサービス リクエストを開くには、こちらをクリックしてください。

https://japan.xilinx.com/support.html#serviceportal

ソリューションのディスカッションには、ザイリンクス ユーザー コミュニティ フォーラムを使用してください。

その他のリソース

The information disclosed to you hereunder is provided AS-IS with no warranty of any kind, express or implied; and is provided subject to our website Terms or Use, Notices, and Disclaimers found at (ここに記す情報は現状のまま提供され、明示または暗示を問わず一切の保証を伴いません。また次のリンク先にある利用規約、告知、免責事項に従うものとします。)http://www.xilinx.com/legal.htm

AR# 52806
日付 03/02/2017
ステータス アクティブ
種類 一般
デバイス
  • Virtex-4
  • Virtex-5
このページをブックマークに追加