71
XAPP462 (v1.0) 2003 7 11 w ww.xilinx.co .jp 1 © 2003 Xilinx, Inc. All rights reserved. すべての Xilinx の商標、登録商標、特許、免責条項は、http://www.xilinx.co .jp /legal.htm にリストされています。他のすべての商標お よび登録商標は、それぞれの所有者が所有しています。すべての仕様は通知なしに変更される可能性があります。 保証否認の通知 : Xilinx ではデザイン、コード、その他の情報を「現状有姿の状態」で提供しています。この特徴、アプリケーションまたは規格の一実施例としてデザイン、 コード、その他の情報を提供しておりますが、Xilinx はこの実施例が権利侵害のクレームを全く受けないということを表明するものではありません。お客様がご自分で実装 される場合には、必要な権利の許諾を受ける責任があります。Xilinx は、実装の妥当性に関するいかなる保証を行なうものではありません。この保証否認の対象となる保証 には、権利侵害のクレームを受けないことの保証または表明、および市場性や特定の目的に対する適合性についての黙示的な保証も含まれます。 概要 デジタル クロック マネージャ (DCM) を使用することによって、 Spartan-3 FPGA アプ リ ケーシ ョ ンに おいて高度な ク ロ ッ ク 機能の設計が可能にな り ます。 DCM は必要に応 じ て入力 ク ロ ッ ク の周波数を逓 倍または分周して周波数合成を行 う だけでな く 、 ク ロ ッ ク スキューを削減し、システムのパフォーマン ス を向上させます。 また、 入力ク ロ ッ ク周期の何分の一か遅れた ク ロ ッ ク を出力する よ う な位相シフ ト を行う こ とができます。 このよ う な機能を持つ DCM は、 FPGA の低スキューなグローバル クロック分 散ネッ ト ワークに直接統合できます。 はじめに DCM は、 Spartan-3 のグローバル クロック分散ネッ ト ワークに高度なクロック機能を統合します。 こ のことによって、 Spartan-3 では、 特に高性能、 かつ高周波数のアプ リ ケーシ ョ ンで起 こ り やすい ク ロ ッ ク設計の問題を解決できます。 入力 ク ロ ッ ク 周波数の逓倍ま たは分周によ る周波数合成を行い、 新しい周波数のク ロ ッ ク を生成し ます。 ク ロ ッ ク 調整を行う ことによって、デューティ サイクルが 50% の ク ロ ッ ク を確実に出力で き ます。 位相シ フ ト では、ク ロ ッ ク 周期の分数分、ま たは ク ロ ッ ク 周期に係数を掛けた値分シ フ ト し た ク ロ ッ ク信号を生成します。 デバイス内部または外部コンポーネン ト との クロック スキューを削減することによって、システム 全体のパフォーマンスを向上させ、 ク ロ ッ ク分散遅延を低減させます。 クロック信号のミ ラー、 フォワード、 リバッファ によって、 異なる I/O 標準への入力 ク ロ ッ ク 信号 のスキュー調整および変換を行います。たとえば、 LVTTL 入力 ク ロ ッ ク を LVDS へフォワードし、 変換します。 これらの機能は併用できます。 アプリケーション ノート : Spartan-3 FPGA ファミリ XAPP462 (v1.0) 2003 7 11 Spartan-3 FPGA におけるデジタル クロック マネージャ (DCM) の使用 R 1 : DCM の特長および機能 機能 説明 DCM 信号 各デバイスにおける DCM の個数 4 (XC3S50 以外) 2 (XC3S50 の場合) すべて デジ タ ル周波数合成 (DFS) の入力周波数範囲 * 1 MHz ~ 326 MHz CLKIN 遅延 ロ ッ ク ループ (DLL) の入力周波数範囲 * 24 MHz ~ 326 MHz CLKIN ク ロ ッ ク 入力 ソ ー ス グローバル バ ッ フ ァ 入力パ ッ ド グローバル バッファ出力 汎用 I/O ( スキュー調整なし ) 内部 ロ ジ ッ ク ( スキュー調整なし ) CLKIN

R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 1

copy 2003 Xilinx Inc All rights reservedすべての Xilinx の商標登録商標特許免責条項はhttpwwwxilinxcojplegalhtmにリストされています他のすべての商標および登録商標はそれぞれの所有者が所有していますすべての仕様は通知なしに変更される可能性があります

保証否認の通知 Xilinx ではデザインコードその他の情報を「現状有姿の状態」で提供していますこの特徴アプリケーションまたは規格の一実施例としてデザインコードその他の情報を提供しておりますがXilinx はこの実施例が権利侵害のクレームを全く受けないということを表明するものではありませんお客様がご自分で実装される場合には必要な権利の許諾を受ける責任がありますXilinx は実装の妥当性に関するいかなる保証を行なうものではありませんこの保証否認の対象となる保証には権利侵害のクレームを受けないことの保証または表明および市場性や特定の目的に対する適合性についての黙示的な保証も含まれます

概要 デジタル ク ロ ッ ク マネージャ (DCM) を使用するこ とによって Spartan-3 FPGA アプリ ケーシ ョ ンにおいて高度なクロ ッ ク機能の設計が可能になり ます DCM は必要に応じて入力クロ ッ クの周波数を逓倍または分周して周波数合成を行うだけでなく ク ロ ッ ク スキューを削減しシステムのパフォーマンスを向上させます また 入力クロ ッ ク周期の何分の一か遅れたクロ ッ クを出力するよ うな位相シフ ト

を行う こ とができます このよ うな機能を持つ DCM はFPGA の低スキューなグローバル ク ロ ッ ク分散ネッ ト ワークに直接統合できます

はじめに DCM は Spartan-3 のグローバル ク ロ ッ ク分散ネッ ト ワークに高度なク ロ ッ ク機能を統合します このこ とによってSpartan-3 では特に高性能かつ高周波数のアプリ ケーシ ョ ンで起こ りやすいクロ ック設計の問題を解決できます

bull 入力クロ ッ ク周波数の逓倍または分周による周波数合成を行い 新しい周波数のクロ ッ クを生成し

ます

bull ク ロ ッ ク調整を行う こ とによってデューティ サイクルが 50 のクロ ッ クを確実に出力できます

bull 位相シフ トではク ロ ッ ク周期の分数分またはクロ ッ ク周期に係数を掛けた値分シフ ト したクロ ッ

ク信号を生成します

bull デバイス内部または外部コンポーネン ト とのクロ ッ ク スキューを削減するこ とによってシステム全体のパフォーマンスを向上させ ク ロ ッ ク分散遅延を低減させます

bull ク ロ ッ ク信号のミ ラー フォワード リバッファによって 異なる IO 標準への入力クロ ッ ク信号のスキュー調整および変換を行いますたとえばLVTTL 入力クロ ッ クを LVDS へフォワード し変換します

bull これらの機能は併用できます

アプリケーシ ョ ン ノート Spartan-3 FPGA ファ ミ リ

XAPP462 (v10) 2003 年 7 月 11 日

Spartan-3 FPGA におけるデジタル クロック マネージャ (DCM) の使用

R

表 1 DCM の特長および機能

機能 説明 DCM 信号

各デバイスにおける DCM の個数 bull 4 個 (XC3S50 以外)bull 2 個 (XC3S50 の場合)

すべて

デジタル周波数合成 (DFS) の入力周波数範囲 1 MHz ~ 326 MHz CLKIN

遅延ロッ ク ループ (DLL) の入力周波数範囲 24 MHz ~ 326 MHz CLKIN

ク ロ ッ ク入力ソース bull グローバル バッファ入力パッ ドbull グローバル バッファ出力bull 汎用 IO (スキュー調整なし )bull 内部ロジッ ク (スキュー調整なし )

CLKIN

2 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

概要R

概要 このアプ リ ケーシ ョ ン ノートは 特定の FPGA アプリ ケーシ ョ ンに限定するものではなく デジタルクロ ッ ク マネージャに関連した内容を総合的に説明します

「DCM 機能の概要」 では DCM およびその機能についての概要を述べます 次に 「DCM プリ ミ テ ィブ」 では DCM に関連したすべての接続ポート と属性 および制約について説明し 「DCM Wizard」「VHDL および Verilog のインスタンシエーシ ョ ン」ではDCM デザインの指定方法について示します

続く 「DCM 使用のためのクロ ッ ク条件」 および 「入力クロ ッ クおよび出力クロ ッ クの周波数条件」 では DCM を使用する場合のクロ ッ ク入力およびクロ ッ ク出力の周波数条件について説明します また「ク ロ ッ ク ジッタおよび位相ノ イズ」 では 出力クロ ッ クにおけるジッ タの影響について考察します

最後に 「ク ロ ッ ク スキューの低減」 「ク ロ ッ ク調整」 「位相シフ ト - ク ロ ッ ク周期の分数でクロ ッ クを遅延」 「ク ロ ッ ク逓倍 ク ロ ッ ク分周 周波数合成」 および 「ク ロ ッ クのフォワード ミ ラー リバッファ」 では DCM ブロ ッ クを使用したさまざまなアプリ ケーシ ョ ンを示します

周波数合成出力 CLKIN を (MD) 逓倍(M=232 D=132)

bull CLKFXbull CLKFX180

ク ロ ッ ク分周出力 CLKIN 周波数を 15 2 25 3 35 4 45 5 55 6 65 7 75 89 10 11 12 13 14 15 16 で分周

CLKDV

2 逓倍クロ ッ ク出力 CLKIN 周波数を 2 逓倍 bull CLK2Xbull CLK2X180

ク ロ ッ ク調整とデューティ サイ クル調整 常にほとんどの出力で可能 CLK0 CLK90 CLK180 CLK270 ではオプシ ョ ン 50 デューティ サイクル plusmn 100 ps

すべて

14 位相シフ ト出力 0deg(位相シフ ト なし )90deg(14 周期)180deg(12 周期)270deg(34 周期)

bull CLK0bull CLK90bull CLK180bull CLK270

12 周期位相シフ ト出力 0degおよび 180degの位相シフ ト出力ペアDDR アプリ ケーシ ョ ンに理想的

bull CLK0 CLK180bull CLK2X CLK2X180bull CLKFX CLKFX180

動的位相シフ ト または固定位相シフ ト ク ロ ッ ク周期の 1256 単位 (または 30 ~ 50 ps)

すべて

汎用内部接続へのクロ ッ ク出力数 最大 9 出力 すべて

グローバル ク ロ ッ ク ネッ ト ワークへのクロ ッ ク出力数 4 出力 すべて

出力ピンへのクロ ッ ク出力数 最大 9 出力 すべて

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 1 DCM の特長および機能 (Continued)

機能 説明 DCM 信号

DCM 位置およびクロック分散 ネッ トワーク インターフェイス

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 3

R

DCM 位置およびクロック分散ネッ トワーク インターフェイス

図 1 に示すよ うに2 個の DCM ブロ ッ クを持つ XC3S50 以外の Spartan-3 FPGA デバイスには 4 個のDCM ブロッ クがあ り これらのブロッ クは FPGA デバイスの左右に位置するブロ ッ ク RAM乗算器列の上下に位置します また XC3S50 にある 2 個の DCM は左側にあるブロ ッ ク RAM乗算器列の上下に位置します

DCM ブロ ッ クには デバイス上で同一エッジにあるグローバル バッファ入力およびグローバル バッファ マルチプレクサへの専用接続があ り ます図 2 に示すよ うにDCM は FPGA のグローバル ク ロ ック設計構造には不可欠な要素であ り ク ロ ッ ク分散ネッ ト ワークでは必要に応じてオプシ ョ ンと して使

用できます図 2a では ク ロ ッ ク入力はグローバル バッファ入力およびグローバル ク ロ ッ ク バッファを介して 低スキュー かつ高ファンアウ トのグローバル ク ロ ッ ク ネッ ト ワークを駆動します

アプ リ ケーシ ョ ンで複数 またはすべての DCM のクロ ッ ク機能を使用する場合には 図 2b に示すように DCM をグローバル バッファ入力とグローバル ク ロ ッ ク バッファ間で使用します

図 1 Spartan-3 FPGA における 4 つの DCM ブロック位置

Block RAMColumn

DCM_X1Y1

DCM_X1Y0DCM_X0Y0

DCM_X0Y1Global buffer multiplexers

EmbeddedMultiplierColumn

Global buffer multiplexers

XC3S50 only

x462_01_061803

4 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM 機能の概要R

DCM 機能の概要 図 3 に示すよ うにデジタル ク ロ ッ ク マネージャ (DCM) と呼ばれる 1 つのエン ト リは実際には別々の機能を持つ 4 つのユニッ トで構成され これらは独立して または互いに関連して動作します 次に各ユニッ トの機能について説明します

図 2 FPGA のグローバル クロック ネッ トワークに不可欠な要素としての DCM

I OIBUFG

I OBUFG

Global Buffer Input

GCLK

Global Clock Buffer

Low-SkewGlobal ClockNetwork

x462_02a_062403

I OIBUFG

I OBUFG

GlobalBuffer Input

GlobalClock BufferDigital Clock

Manager

CLKIN Output

CLKFB

DCM

x462_02b_062403

GCLK

a グローバル バッファ入力およびグローバル クロック バッファが低スキューのグローバル ネッ トワークを駆動する例

b DCM を直接グローバル クロック パスに挿入する例

図 3 DCM 機能ブロック図

DS099-2_07_040103

PSINCDECPSEN

PSCLK

CLKIN

CLKFB

RSTSTATUS [70]

LOCKED8

CLKFX180

CLKFX

CLK0

PSDONE

ClockDistribution

DelayCLK90CLK180CLK270CLK2XCLK2X180CLKDV

StatusLogic

DFSDLL

PhaseShifter

Del

ay T

aps

Out

put S

tage

Inpu

t Sta

ge

DCM

DCM 機能の概要

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 5

R

遅延ロック ループ (DLL)遅延ロ ッ ク ループ (DLL) ユニッ トは ク ロ ッ クの出力信号の伝搬遅延がゼロになるよ うにチップ上でスキュー調整を行います スキューを調整するためのデジタル回路では ク ロ ッ ク出力 (CLK0 またはCLK2X) を確認しネッ ト ワーク配線上に遅延を挿入します DLL は外部クロ ッ ク入力ポートからデバイス内の各クロ ッ ク入力までの遅延を削減する場合に有効です 効率的にバッファを使用したグロー

バル ネッ ト ワークでは さまざまな負荷がかかるこ とによって発生するネッ ト ワーク上のク ロ ッ ク スキューを最小限に抑えるこ とができます

DLL への入力信号は CLKIN および CLKFB であ りDLL からの出力信号は CLK0CLK90CLK180CLK270 CLK2X CLK2X180 および CLKDV です

この DLL を使用するこ とによって 2 逓倍クロ ッ ク (CLK2X CLK2X180) ク ロ ッ ク分周 (CLKDV)および 14 位相シフ ト出力の各出力を生成できます

デジタル周波数合成 (DFS)デジタル周波数合成 (DFS) ユニッ トは 設計者が定義した 2 つの整数 逓倍値 (CLKFX_MULTIPLY)および分周値 (CLKFX_DIVIDE) を使用して 柔軟 かつ広範囲の出力周波数を生成します こ こでは入力クロ ッ ク (CLKIN) 周波数を逓倍または分周し派生出力クロ ッ ク周波数を生成します この機能はDCM の DLL 機能の有無に関わらず使用できDLL を使用しない場合には CLKIN と DFS 出力間に位相関係はあ り ません

DFS は 周波数合成回路 (CLKFX CLKFX180) 出力を生成します

位相シフ ト (PS)位相シフ ト (PS) ユニッ トは DCM の CLKIN 入力に対するクロ ッ ク出力の位相関係を制御します

PS は位相シフ ト値を入力クロ ッ ク周期の分数で指定し9 つすべての DCM ク ロ ッ ク出力信号の位相をシフ ト させます この位相シフ ト値は設計段階で指定し FPGA コンフ ィギュレーシ ョ ン中に DCMに読み込まれます

PS は現在のク ロ ッ ク周期の 1256 単位で前後に位相をシフ ト させる こ とができる FPGA アプ リ ケーシ ョ ンのデジタル インターフェイスを提供します

PS の入力信号は PSINCDENPSEN および PSCLK であ り出力信号は PSDONE および STATUS[0]です

ステータス ロジックステータス ロジッ クはLOCKED と STATUS[0]STATUS[1]および STATUS[2] 出力信号によってDCM の現在のステート を示します LOCKED 出力信号は DCM 出力が CLKIN と同位相であるかを示し STATUS 出力信号は DLL および PS のステート を示します

RST 入力信号によってDCM 全体がリセッ ト されコンフ ィギュレーシ ョ ン後のステートに戻るためリセッ ト後は CLKIN 入力に再びロッ クする必要があ り ます

6 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

DCM プリ ミテ ィブ

DCM プリ ミ ティブはデジタル ク ロ ッ ク マネージャのすべての機能を表します図 4 に DCM プリ ミティブを示し 次に DCM の接続ポート 属性 プロパティ および制約の要約を示します

シンボル

接続ポート

表 3 にデジタル ク ロ ッ ク マネージャの接続ポート を示し 各ポートについて 信号方向およびその接続を必要とする DCM ユニッ ト などを簡潔に説明します 表 2 には表 3 で使用している各機能ユニットの略称を示します

図 4 DCM プリ ミテ ィブ

表 2 表 3 で使用している機能ユニッ トの略称

略称 機能ユニッ ト

DLL 遅延ロッ ク ループ

PS 位相シフ ト

DFS デジタル周波数合成

CLK0

CLK90

CLK180

CLK270

CLK2X

CLK2X180

CLKDV

CLKFX

CLKFX180

STATUS[70]

LOCKED

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDEC

PSCLK

DCM

x462_04_061803

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 7

R

表 3 DCM 接続ポート

ポート 方向 説明機能ユニッ ト

DLL PS DFS

CLKIN ク ロ ッ ク入力 DCM へのクロ ッ ク入力であ り 常に必要です CLKIN の周波数およびジッタは 『Spartan-3 データ シート 』 で指定された範囲内である必要があり 周波数モードは DLL_FREQUENCY_MODE 属性または DFS_FREQUENCY_MODE 属性で指定されます

CLKFB 入力 DCM へのクロ ッ ク フ ィードバッ ク入力です フ ィードバッ ク入力はデジタル周波数合成出力である CLKFX または CLKFX180 のみが使用されている場合は必要あ り ません CLKFB 入力のソースは DCM からの CLK0 出力または CLK2X 出力であ り状況に応じて CLK_FEEDBACK を 1X または 2X に設定する必要があ り ます 理論的には フ ィードバッ ク地点には内部または外部のクロ ッ ク分散ネッ ト ワークで追加された遅延が含まれます

「確実なソースからのフ ィードバッ ク」 を参照してください

オプ

シ ョ ン

RST 入力 非同期のリセッ ト入力であ り DCM ロジッ クを リセッ ト してコンフ ィギュレーシ ョ ン後の設定に戻します この入力を使用した場合 DCM では再び CLKIN を確認し ロ ッ ク します また DCM ブロ ッ ク内部で反転可能であり 反転させない場合の動作については下表に示します 「RST 入力」 を参照してください

PSEN 入力 動的位相シフ ト イネーブル信号であ り DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位

相シフ ト 」 を参照してください

PSINCDEC 入力 動的位相シフ ト値を増減する場合に使用し DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位相シフ ト 」 を参照してください

PSCLK ク ロ ッ ク入力 PS へのクロ ッ ク入力であ り 立ち上がりエッジで入力されます DCM ブロ ッ ク内部で反転可能です 周波数モードは DLL_FREQUENCY_MODE 属性によって指定されます 「動的ファイン位相シフ ト 」 を参照してくださ

0 影響なし

1 DCM ブロ ッ クを リセッ ト します アクティブ High であ り最低 2ns 間 High を維持する必要があ り ます

0 動的位相シフ ト をディ スエーブルにし PS への入力は無視されます

1 PSCLK ク ロ ッ クの次の立ち上がりエッジで動的位相シフ トをイネーブルにします

0 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を増加させます

1 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を減少させます

8 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLK0 ク ロ ッ ク出力 位相シフ トは 0degであ り CLKIN と同一周波数の出力ですDUTY_CYCLE_CORRECTION 属性が TRUE の場合は デューティ サイクルが 50 に調整されます DLL 機能にはフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK90 ク ロ ッ ク出力 90deg(14 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません またDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK180 ク ロ ッ ク出力 180deg(12 周期) 位相シフ ト した CLKIN と同一周波数であ りDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイクルが 50 に調整されます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK270 ク ロ ッ ク出力 270deg(34 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません また DUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK2X ク ロ ッ ク出力 位相シフ トは 0degであ り 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合には 常にデューティ サイクルが 50 とな りDLL へのフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLK2X180 ク ロ ッ ク出力 180deg位相シフ ト し 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合はデューティ サイクルが常に 50 とな り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKDV ク ロ ッ ク出力 分周クロ ッ ク出力であ り CLKDV_DIVIDE 属性で制御されます DLL_FREQUENCY_MODE 属性が High であ り CLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 です また CLKDV_DIVIDE 値が整数ではないではない場合はロ ッ ク状態になるまでに必要な時間が長くなり ます これはクロ ッ ク分周 (CLKDV) 出力です

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 9

R

CLKFX ク ロ ッ ク出力 合成クロ ッ ク出力であ り CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性で制御されます デューティ サイクルは常に 50 です CLKFX または CLKFX180 ク ロ ッ ク出力のみが使用されている場合には クロ ッ ク フ ィードバッ クは必要あ り ません 「周波数合成回路 (CLKFX CLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKFX180 ク ロ ッ ク出力 CLKFX を 180deg位相シフ ト した (CLKFX を反転したよ うに見える) 合成クロ ッ ク出力であ り デューティ サイ クルは常に 50 です CLKFX ク ロ ック出力または CLKFX180 ク ロ ッ ク出力が DCM で使用されている場合には フ ィードバッ ク ループは必要あ り ません 「周波数合成回路 (CLKFXCLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

STATUS[0] 出力 動的位相シフ トがオーバーフローであるこ とを示します 動的ファイン位

相シフ トの制御出力で 動的位相シフ トが最小値または最大値に達してい

るこ とを示します 制限値は plusmn255 または位相シフ ト遅延ラインの最後に達した場合は その値以下になり ます 「動的ファイン位相シフ ト 」 を参照し

てください

STATUS[1] 出力 CLKIN 入力が停止したこ とを示し CLKFB フ ィードバッ ク入力が接続されている場合のみに使用できます LOCKED 出力がアサート されるまではリセッ ト状態であ り アクティブになるためには CLKIN が 1 サイクル以上必要です CLKIN が最初から ト グルしない場合にはアサート されません

STATUS[2] 出力 CLKFX 出力または CLKFX180 出力が停止したこ とを示します 周波数合成回路 (CLKFX CLKFX180) を参照してください

STATUS[73]

出力 予約済み

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

0 位相シフ トは制限値に達していません

1 位相シフ トが制限値に達しています

0 CLKIN がト グルしています

1 CLKIN がト グルしていません

0 CLKFX 出力および CLKFX180 出力がト グルしています

1 CLKFX 出力および CLKFX180 出力がト グルしていませんただしLOCKED 出力が High に維持されている場合があ ります

10 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

LOCKED 出力 すべての DCM 機能は CLKIN の周波数にロッ ク しています CLKIN が指定された範囲内 ( 「DCM 使用のためのクロ ッ ク条件」 に記載) である場合に クロ ッ ク出力が有効です 「周波数合成回路 (CLKFX CLKFX180)」を参照してください

PSDONE 出力 動的位相シフ トが完了したこ とを示します 「動的ファイン位相シフ ト 」 を

参照してください

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

0 DCM は CLKIN の周波数に対してロ ッ クする過程であ りDCM のクロ ッ ク出力は無効です

1 DCM は CLKIN の周波数に対してロ ッ ク しDCM のクロ ック出力は有効です

1 rarr 0 DCM のロ ッ ク状態が解除され DCM を リセッ トする必要があ り ます

0 位相シフ トが行われていない または実行中です

1 要求された位相シフ トは完了しています この出力が PSCLK の 1 サイクル間 High になった後次の位相シフ ト を実行できます

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 11

R

属性 プロパティ および制約

表 4 にデジタル ク ロ ッ ク マネージャの属性を示しますすべての属性は設計段階で設定されコンフ ィギュレーシ ョ ン中にプログラムされます 動的ファイン位相シフ ト以外では FPGA アプリ ケーシ ョ ンの実行中にこれらの設定を変更するこ とはできません 使用するデザイン入力ツールに合わせて lt属性gt=lt設定gtを使用し 属性を設定します

表 4 DCM 属性

属性 可能な設定および説明

DLL_FREQUENCY_MODE CLKIN 入力 PSCLK 入力 および遅延ロッ ク ループ (DLL) からの出力クロ ッ クの有効周波数範囲を指定します DLL ク ロ ッ ク出力には CLK0 CLK90 CLK180 CLK270CLK2X CLK2X180 CLKDV が含まれます

CLK_FEEDBACK フ ィードバッ ク ク ロ ッ クの周波数を指定します

DUTY_CYCLE_CORRECTION DLL からの出力である CLK0 CLK90 CLK180 および CLK270 に対する 50 デューティ サイ クル調整をイネーブルまたはディ スエーブルに設定します

CLKDV_DIVIDE CLKDV 出力の周波数を指定します 設定可能な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 です

CLKDV_DIVIDE が整数ではない場合 ロ ッ クするために必要な時間が長くなり 出力ジッ タが増加します

CLKFX_MULTIPLY CLKFX 出力および CLKFX180 出力の周波数を逓倍する場合の係数を指定します この値は CLKDV_DIVIDE 属性の値と と もに使用されます CLKFX_MULTIPLY に設定可能な範囲は整数値の 2 から 32 であ り デフォルトは 4 です

LOW デフォルトです DLL は低周波数モードで動作し DLL に関連したすべての出力が有効です ク ロ ッ ク入力およびクロ ッ ク出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DLL の指定範囲内にあ り ます

HIGH DLL は高周波数モードで動作します 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力 および 14 位相シフ ト出力 CLK90 と CLK270 は無効です CLKDV_DIVIDE 属性が整数以外の場合 CLKDV 出力のデューティ サイクルは 50 になり ません ク ロ ッ ク入力およびクロ ッ ク出力の周波数は『Spartan-3 データ シート 』 に記載されている高周波数 DLL の指定範囲内にあり ます

1X デフォルトであ り CLK0 フ ィードバッ クです周波数は CLKIN と同一です

2X CLK2X フ ィードバッ クであ り 周波数は CLKIN の 2 倍です

なし フ ィードバッ ク ク ロ ッ クはあ り ません CLKFX 出力または CLKFX180 出力のみを使用している場合に可能です

TRUE デフォルトであ り デューティ サイクルは 50 に調整されます

FALSE デューティ サイクル調整は行われません

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

12 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLKDV_DIVIDE CLKFX 出力および CLKFX180 出力の周波数を分周する場合の係数を指定します この値は CLKFX_MULTIPLY 属性の値と と もに使用されます設定可能な範囲は整数値の 1 から 32 であ り デフォルトは 1 です

PHASE_SHIFT この属性は CLKOUT_PHASE_SHIFT 属性が FIXED または VARIABLE に設定されている場合にのみ使用できます CLKIN とすべての DCM ク ロ ッ ク出力間の立ち上がりエッジにおけるスキューをコンフ ィギュレーシ ョ ンで定義し DCM ク ロ ッ ク出力を位相シフ ト させます

スキューまたは位相シフ ト値は整数で指定されます この整数値は 次の等式に示すよ うに

ク ロ ッ ク周期の分数で表され範囲は -255 から 255 になり ますデフォルト値は 0 であ り実際に設定可能な値は入力クロ ッ ク周波数によって異なり ます また TCLKIN gt FINE_SHIFT_RANGE の場合には 実際の範囲はよ り小さ くな り ますFINE_SHIFT_RANGE は遅延ラインにおけるすべてのタ ップの総遅延を示します 詳細は「ファ イン位相シフ ト 」 を参照してください

CLKOUT_PHASE_SHIFT 位相シフ ト モードを指定します PHASE_SHIFT 制約と共に使用し DCM のデジタル位相シフ ト (DPS) 機能をインプリ メン ト します また この設定は DLL および DFS からのすべてのクロ ッ ク出力に反映されます 詳細は 「ファ イン位相シフ ト 」 を参照してください

DESKEW_ADJUST FPGA ク ロ ッ ク入力ピンと DCM 出力クロ ッ ク間のクロ ッ ク遅延調整を制御します 「スキュー調整」 を参照してください

この設定を DCM ク ロ ッ ク出力の位相シフ トに使用しないでください 正確な位相シフ ト を行う場合にはCLKOUT_PHASE_SHIFT 制約または PHASE_SHIFT 制約を使用してください

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

なし デフォルトです CLKIN および CLKFB は同位相 (スキューなし ) であ り位相関係は変更できません PHASE_SHIFT = 0 の場合の FIXED 設定と同一です

FIXED 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定され アプ リ ケーシ ョ ンでは変更できません

VARIABLE 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定されますが 動的位相シフ ト制御信号 PSEN PSCLK PSINCDEC および PSDONE を使用してアプリ ケーシ ョ ンで変更可能です

SYSTEM_SYNCHRONOUS デフォルトであ り すべてのデバイスがシステム全体

に共通のクロ ッ ク ソースで動作します

SOURCE_SYNCHRONOUS データ ソースから クロ ッ クが入力されます ソース同期アプリ ケーシ ョ ンがその一例です

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 13

R

DFS_FREQUENCY_MODE DCM のデジタル周波数合成 (DFS) からのクロ ッ ク出力である CLKFX および CLKFX180 に有効な周波数範囲を指定します DLL ク ロ ッ ク出力が使用されている場合はDLL_FREQUENCY_MODE によって CLKIN 入力の周波数範囲がよ り制限されます

STARTUP_WAIT DCM の LOCKED 信号のアサート よ り先に FPGA コンフ ィギュレーシ ョ ンの DONE 信号を High にするかど うかを制御します

2 つ以上の DCM をコンフ ィギュレーシ ョ ンしている場合は すべての DCM がロ ッ クする必要があ り ます

CLKIN_DIVIDE_BY_2 CLKIN が DCM ブロ ッ クに入力される前に 周波数を 2 分周します アプリ ケーシ ョ ンによっては 入力クロ ッ クの周波数を適切な範囲内に低減できます

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

LOW デフォルトであ り DFS は低周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合 CLKIN 入力の周波数範囲はその出力によって変化します

HIGH DFS は高周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている高周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合CLKIN 入力の周波数範囲はその出力によって変化します

FALSE デフォルトであ り DCM がロ ッ ク状態になるのを待たずに DONE 信号がアサート されます

TRUE DCM がロ ッ ク状態になるまで DONE 信号は High になり ません ただし この STARTUP_WAIT は LOCKED 信号が High になるのを妨げるものではあり ません またFPGA のスタート アップ シーケンスのサイクルの始めに LCK (ロ ッ ク ) サイクルを挿入するよ うに修正する必要があ り ます ( 「ビッ ト ス ト リーム生成の設定」 を参照してください) 通常は DONE サイクルまたは GWE サイクルがその後に続きます

FALSE デフォルトであ り CLKIN は直接 DCM ブロ ッ クに入力されます

TRUE CLKIN が DCM に入力する前に その周波数を 2 分周され デューティ サイクルは約 50 に調整されます これは 高周波数のクロ ッ クを使用し DCM の入力クロ ッ クの周波数条件またはデューティ サイ クル条件を満たす場合に有効です また 周波数モードを決定する場合 または位相シフ ト範囲を算出する場合に クロ ッ ク周波数を 2 分周します

14 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他のザイリンクス FPGA ファ ミ リ との互換性R

その他のザイリンクス FPGA ファミ リ との互換性

Spartan-3 のデジタル ク ロ ッ ク マネージャ (DCM) は Virtextrade-II および Virtex-II Pro FPGA ファ ミ リで使用されている DCM とほぼ同様の機能を持ちますが Spartan-3 DCM は第三世代の DCM デザインであ り さ らに機能が向上しています 特に Virtex-II デバイス と比較する と Spartan-3 デバイスはVCCAUX 供給電源における ノ イズ耐性が改善されVirtex-IIPro ファ ミ リ よ り も位相シフ ト機能に柔軟性があ り ます 出力の周波数制限値はVirtex-II および Virtex-II Pro ファ ミ リの DCM の方が高くなっています

またSpartan-IIIIE と比較する と Spartan-3 DCM の遅延ロッ ク ループ (DLL) 機能は大幅に改善され Spartan-IIIIE DLL の機能をすべて備えているだけでなく 周波数合成および位相シフ ト機能が追加されました Spartan-3 の周波数合成では 最大 32 までの係数を使用して入力クロ ッ クを逓倍しますが Spartan-IIIIE DLL での周波数合成機能は 2 逓倍までです 同様に Spartan-3 DCM の分周機能はSpartan-II DLL よ り広範囲に対応しています

DCM 使用のためのクロック条件

DCM は その機能に最大限の柔軟性があるよ うに設計されていますが ク ロ ッ クの周波数と安定性周波数の変動 およびクロ ッ ク ジッタにいくつかの条件があ り ます

入力クロック周波数範囲

DCM のクロ ッ ク入力周波数は アプ リ ケーシ ョ ンにおける DLL ユニッ ト DFS ユニッ ト またはその両方によって決定されます

表 5 に デジタル周波数合成 (DFS) ユニッ トでの入力クロ ッ クCLKIN の周波数範囲を示します DFS ユニッ ト を単独で使用する場合の周波数範囲は DLL 入力ニッ ト よ り も広くな り ますが 両ユニッ ト を使用する場合には よ り厳しい周波数条件を DLL に適用する必要があ り ます 表には データ シートに記載されている仕様名および概算値の 1 つを示していますが実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

FACTORY_JF DCM の DLL ユニッ トでタ ップ設定を修正する頻度を制御します この設定は DLL エレメン トのジッ タ特性に影響を与え DLL_FREQUENCY_MODE 属性に基づいて自動的に指定されます

設計方法と して推奨された場合以外は デフォルト設定を変更しないでください (「FACTORY_JF 設定の修正」 を参照してください)

LOC 図 1 に示すよ うに DCM の物理的な配置位置を指定します

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

DLL_FREQUENCY_MODE FACTORY_JF

LOW 0xC080

HIGH 0xF0F0

DCM_X0Y0 DCM の左下

DCM_X1Y0 DCM の右下 (XC3S50 では設定不可)

DCM_X0Y1 DCM の左上

DCM_X1Y1 DCM の右上 (XC3S50 では設定不可)

DCM 使用のためのクロック条件

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 15

R

表 6 に遅延ロッ ク ループ (DLL) ユニッ トでの入力クロ ッ ク CLKIN の周波数範囲を示します DLLが単独で使用されている場合と DFS と と もに使用されている場合では 同一の周波数条件が適用されます 表には低周波数モードおよび高周波数モードの場合の DLL の周波数範囲を示しています この周波数モードはDLL_FREQUENCY_MODE 属性によって指定されます 表にはデータ シートに記載されている仕様名および概算値の 1 つを示していますが 実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

出力クロック周波数範囲

DCM の出力クロ ッ クに対しても周波数範囲が指定されています 詳細は 「入力クロ ッ クおよび出力クロ ッ クの周波数条件」 を参照して ください

クロック入力およびクロック フ ィードバック入力の変動「安定した単調なクロ ッ ク入力」 で説明するよ うに DCM では安定性があ り単調なクロ ッ ク入力を使用する必要があ り ます しかし DCM 機能の柔軟性を最大限に使用しよ う とする場合 CLKIN で発生するクロ ッ ク ジッタおよび CLKIN 入力と CLKFB 入力の変動をある程度まで許容しなければなり ません

CLKIN 入力におけるジッタには 2 つのタイプがあ り ます 1 つはサイ クル間ジッタであ り このジッタは CLKIN 入力周期があるサイ クルから次のサイ クル間でどの程度の変化を許容できるかを示します 表 7 にデータ シートに記載されている仕様名および概算値を含むサイクル間ジッタの最大許容範囲を示します

表 5 デジタル周波数合成 (DFS) ユニッ トのクロック入力周波数範囲

機能 最小周波数 最大周波数

デジタル周波数合成 (DFS) CLKIN_FREQ_FX_MIN ~ 100 MHz

CLKIN_FREQ_FX_MAX ~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 6 遅延ロック ループ ユニッ トのクロック入力周波数範囲

機能

DLL 周波数モード属性 (DLL_FREQUENCY_MODE)

= LOW = HIGH

最小周波数 最大周波数 最小周波数 最大周波数

遅延ロ ッ ク ループ (DLL)

CLKIN_FREQ_DLL_LF_MIN

~ 24 MHz

CLKIN_FREQ_DLL_LF_MAX

~ 180 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 48 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 7 サイクル間ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_CYC_JITT_FX_LF~ plusmn300 ps

CLKIN_CYC_JITT_FX_HF~ plusmn150 ps

遅延ロッ ク ループ (DLL) CLKIN_CYC_JITT_DLL_LF~ plusmn300 ps

CLKIN_CYC_JITT_DLL_HF~ plusmn150 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

16 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

LOCKED 出力R

も う 1 つのジッタは 周期ジッタ と呼ばれ クロ ッ ク周期間の最大変動を示します サイクル間ジッタがあるサイクルと次のサイクルの差を示すのに対し 周期ジッタはクロ ッ ク周期全体での変化範囲を示

します 表 8 にデータ シートに記載されている仕様名および概算値を含む周期ジッタの最大許容範囲を示します

DCM の安定性に影響を与える別の要素は DLL で使用される ク ロ ッ ク フ ィードバッ ク パスですフ ィードバッ ク パス遅延の変動は 表 9 に示す範囲内でなければな り ません ただし グローバル クロ ッ ク ラ インに接続される場合はチップ上の変動が最小になるため こ こに示した範囲制限は外部フ ィードバッ ク パスにのみ適用されます

LOCKED 出力 DCM の LOCKED 出力は すべての DCM 機能が CLKIN 入力にロ ッ ク している こ と を示し ますLOCKED 信号がアサート される場合にはFPGA アプリ ケーシ ョ ン内で出力クロ ッ クを使用できます

図 5 に LOCKED 出力信号の動作を示しますLOCKED 出力は FPGA のコンフ ィギュレーシ ョ ン終了直後に Low になり RST 入力がアサート されている場合は常に Low です

コンフ ィギュレーシ ョ ン後 DCM は CLKIN 信号の有効無効に関わらず 常にロ ッ ク状態になろ う とします入力クロ ッ クが安定していない場合にはCLKIN 入力が安定するまでFPGA 回路 で RST 入力をアサートする必要があ り ますDLL では CLKIN 入力および CLKFB 入力の両方を使用し これらの立ち上がりエッジが同位相である時に完全にロ ッ ク状態であるこ とを確認しますDFS ではCLKINを使用してク ロ ッ クの周波数が有効であるかを確認します また DCM がロ ッ ク状態になるために数千クロ ッ ク サイクルのサンプルが必要となる場合があ り ます

DCM の CLKIN に対するロッ クが完了する とLOCKED 出力が High にアサート されDCM のクロ ック出力が有効となるため FPGA アプリ ケーシ ョ ン内でこれらの出力を使用できます 『Spartan-3 データ シート 』 の タイ ミ ングに関する章には ロ ッ クに必要な時間のワース ト ケースが記載されています通常 クロ ッ ク周波数が高いほどDLL 出力は短時間でロッ ク状態になり ます またDFS 出力がロックするためには非常に長い時間が必要とな り ます この時間は 逓倍または分周の係数によって変化し

ますが これらの係数が小さいほど時間は短縮します

システム ク ロ ッ クが安定してから FPGA のコンフ ィギュレーシ ョ ンを完了させるために オプシ ョ ンと して DCM がロ ッ ク状態になるまでコンフ ィギュレーシ ョ ンの完了を遅らせるこ とができます この機能は STARTUP_WAIT 属性で制御します

LOCKED が High になる前の DCM ク ロ ッ ク出力信号の動作は保証していません LOCKED が Highになる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な波形が含まれている場合があ ります

表 8 周期ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_PER_JITT_FX_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_FX_HF~ plusmn1000 ps (plusmn1 ns)

遅延ロッ ク ループ (DLL) CLKIN_PER_JITT_DLL_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_DLL_HF~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 9 外部フ ィードバック パス遅延範囲

解説 指定範囲

チップ外にある CLKFB フ ィードバッ ク パス遅延の最大許容範囲 CLKFB_DELAY_VAR_EXT ~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

RST 入力

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 17

R

CLKIN 入力の周波数が指定範囲内である場合DCM は内部遅延のタップを調整し ロ ッ ク状態を維持しますが その制限を大幅に満たしていない場合には ロ ッ ク状態が解除され LOCKED 出力が Lowになり ます

一度 DCM のロ ッ ク状態が解除される と 自動的に再びロッ ク状態に戻るこ とはあ り ません ロ ッ ク状態が解除された場合つま り LOCKED が High から Low となった場合にはFPGA アプリ ケーシ ョ ンでは RST 入力を使用して DCM を リセッ トするなどの適切な方法を使用して 再びロ ッ ク状態にする必要があ り ます

RST 入力 非同期の RST 入力は DCM ロジッ クを リ セッ ト してコンフ ィギュレーシ ョ ン後の設定に戻しますRST ピンはFPGA を再コンフ ィギュレーシ ョ ンする場合または許容範囲を超えている入力周波数を変更する場合に使用して ください このピンはアクティブ High であ り ダイナミ ッ ク信号またはグランドに接続する必要があ り ます また RST 入力は最低 2ns 間アサート しなければなり ません

コンフ ィギュレーシ ョ ン後に 入力ク ロ ッ ク周波数が安定していない場合 ク ロ ッ クが安定するまで

RST をアサー ト して ください また 外部フ ィードバッ クを使用している場合は コンフ ィギュレーシ ョ ン直後に DCM を リセッ ト します31ページの図 20 に SRL16 シフ ト レジスタ プリ ミ ティブを使用した リセッ ト方法の例を示します

LOCKED 周波数が High から Low になる場合のよ うに DCM のロ ッ ク状態が解除される と FPGAアプリ ケーシ ョ ンでは RST をアサート しDCM に入力クロ ッ ク周波数に対して再ロ ッ ク させる必要があ り ます

図 5 LOCKED 出力の機能的な動作

LOCKED HIGH

FPGA RST

Y

N

Y

N

FPGA

LOCKED LOW

CLKIN

LOCKED LOW

RST

x462_05_062103

CLKIN

RST

RST

18 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

DCM の LOCKED 出力が High の場合 RST がアサート される と この LOCKED 出力は 4 ク ロ ッ クサイ クル以内に Low になり ます このため リセッ ト後は DCM を再びロ ッ ク状態にさせます

また RST をアサートするこ とによって DCM の遅延タップ位置がゼロに戻り このタ ップ位置を変更するこ とによってDCM のクロ ッ ク出力ピンでグ リ ッチが発生する可能性があ り ます 同様にRSTはクロ ッ ク出力のデューティ サイクルにも影響を与えます

さ らに RST がアサート される と現在の可変位相シフ ト値は PHASE_SHIFT 属性で指定された値に戻り ます

DCM Wizard DCM を使用するアプリ ケーシ ョ ンを容易にするために ザイ リ ンクス ISE には 順を追って DCM を設定できるソフ ト ウェア Wizard が含まれています 図 6 に示すよ うに DCM Wizard を使用するこ とによってVHDL 構文または Verilog 構文で DCM をインスタンシエートするベンダ固有のロジッ ク合成ファイルを生成できます また DCM Wizard では特定のインプリ メンテーシ ョ ン用にユーザー制約ファイル (UCF) を生成できますさ らにすべてのユーザー仕様はXilinx Architecture Wizard (XAW)設定ファイルに保存されます

DCM Wizard の起動DCM Wizard を起動するためにはWindows のスタート ボタンから起動するまたはザイ リ ンクス ISEProject Navigator ソフ ト ウェアから起動する という 2 つの方法があ り ます

Windows のスタート ボタンから起動

DCM Wizard を Windows スタート ボタンから起動する場合は[スタート ] rarr [すべてのプログラム] rarr[Xilinx ISE 5] rarr [アクセサリ ] rarr [Architecture Wizard] をク リ ッ ク します 図 7 に設定ウ ィンド ウを示します

bull DCM のオプシ ョ ン設定を保存する Xilinx Architecture Wizard (xaw) ファ イル名を入力します

bull こ こで [Browse] ボタンをク リ ッ ク して xaw ファ イルを選択するこ と も可能です

bull 出力ファイルのロジッ ク合成言語を VHDL または Verilog から選択します

bull ロジッ ク合成ツールを選択します DCM Wizard では 指定した合成ツールに応じて ベンダ固有の出力ファイルが生成されます

bull ターゲッ ト デバイスに Spartan-3 を選択します

図 6 DCM Wizard の DCM 設定用グラフ ィ カル インターフェイス

DCM Wizard

User contraintsfile (UCF)

Vendor-specificVHDL or Verilog

Xilinx ArchitectureWizard (XAW)

settings file

Graphically configure aSpartan-3 Digital ClockManager (DCM)

x462_06_061803

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 19

R

Project Navigator から起動

Project Navigator のメニュー バーから または [Sources in Project] ウ ィンド ウから DCM Wizard を起動できます メニュー バーで [Project] rarr [New Source] を選択するか [Sources in Project] ウ ィンドウで右ク リ ッ ク し [New Source] を選択してください

図 8 に示すよ う に リ ス ト か ら [Architecture Wizard] を選択し ます Xilinx Architecture Wizard(xaw) ファ イル名を入力し そのファイルを保存するディ レク ト リ を選択した後 [Next] をク リ ッ クします

図 7 Architecture Wizard の設定

図 8 Project Navigator での Architecture Wizard 設定

Xilinx Architecture Wizard Setup

My_Spartan-3 Browse

XAW File

Output File Type

VHDL Verilog

XST

Synthesis Tool

XC3S1000-FT256-4 Select

OK Cancel

Part

DCM

Spartan-3

[OK]

x462_07_061803

New

User DocumentVHDL ModuleCoreGen IPSchematicVHDL LibraryVHDL PackageVHDL Test BenchTest Bench WaveformBMM FileMEM FileImplementation Constraints FileArchitecture WizardState Diagram

My_Spartan-3

F ile Name

MyDirectory

Lo cation

Add to Project

lt Back Next gt Cancel Help

DCM

[Next]

Architecture Wizard

x462_08_061803

20 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

Wizard 選択前述した手順はすべての ISE Architecture Wizard に共通ですが Spartan-3 FPGA は図 9 に示す DCMWizard をサポート します こ こで [OK] をク リ ッ ク し 次に進みます

[General Setup] 図 10 に示すよ うに ほとんどのオプシ ョ ンは DCM Wizard の [General Setup] ダイアログ ボッ クスで設定します 楕円の枠内には その設定に対応する DCM プリ ミ ティブ属性名を示します

bull DCM のインスタンス名を入力します このインスタンス名は Verilog または VHDL 出力ファイル内で使用されます

bull 最終的なアプリ ケーシ ョ ンにおける出力および機能を選択するためには 必要な DCM ク ロ ッ ク出力のチェッ ク ボッ クスをオンにします チェッ ク ボッ クスをオンにした出力に対しては それに関連したオプシ ョ ンの設定が可能になり ます

bull CLKIN ク ロ ッ ク入力の周波数を入力します 周波数を MHz で指定するかまたはクロ ッ ク周期をns で指定して ください この値によって DCM の DLL_FREQUENCY_MODE 属性が設定されます

bull CLKIN ソースが FPGA の内部であるか外部であるかを指定します[External] を選択した場合DCM Wizard は自動的にグ ローバル バッ フ ァ入力 (IBUFG) プ リ ミ テ ィ ブを挿入し ます[Internal] を選択した場合は ソース信号は HDL ソース ファ イル内の ト ップ レベル入力となり ます

bull CLKDV 出力をオンにした場合は クロ ッ ク分周回路の [Divide by Value] 値を指定します この値によって DCM の CLKDV_DIVIDE 属性が設定されます

bull DCM へのフ ィードバッ ク パスを指定します CLKFX 出力または CLKFX180 出力のみを使用する場合は [None] を選択します これらの出力を使用しない場合は フ ィードバッ クが必要ですFPGA 内部からのフ ィードバッ クを使用する場合は [Internal] を選択し外部からのフ ィードバック ループを使用する場合は [External] を選択します さ らに DCM フ ィードバッ クのソースをCLK0 (1X) または CLK2X (2X) から選択します この選択によってDCM の CLK_FEEDBACK属性が設定されます

図 9 Spartan-3 FPGA でのみ選択可能な DCM Wizard

Xilinx Architecture Wizard Selection

DCM Wizard

OK Cancel

Select Wizard

Spartan-3 DCM Wizard [OK]

x462_09_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 21

R

bull すべての DCM 出力における位相シフ トの有無を指定します デフォルト設定は位相シフ ト なし (None) です 位相シフ トが必要な場合は 位相シフ ト値と して [Fixed] または [Variable] を選択します [Variable] を選択するこ とによって 動的位相シフ ト制御 PSEN PSINCDECPSCLK および PSDONE が使用可能となり DCM の CLKOUT_PHASE_SHIFT 属性が指定されます Fixed モードおよび Variable モードのいずれを選択する場合でも 固定位相シフ ト値あるいは動的位相シフ トの初期値を決定する [Phase Shift Value] を指定します この値によってDCM の PHASE_SHIFT 属性が設定されます

bull アドバンス ド オプシ ョ ン ウ ィンド ウを開く場合は [Advanced] ボタンをク リ ッ ク します

bull 設定の完了後 [Next] をク リ ッ ク し ク ロ ッ ク バッファ ダイアログ ボッ クスに進みます

アドバンスド オプシ ョ ン図 11 に示すアドバンス ド オプシ ョ ン ウ ィンド ウで さ らに詳細な DCM オプシ ョ ンを設定できます

bull デフォルトではDCM は FPGA のコンフ ィギュレーシ ョ ンに対して影響を与えませんが [Yes] をク リ ッ ク した場合は DCM が LOCKED 出力をアサートするまで FPGA コンフ ィギュレーシ ョンで DONE 信号のアサート を遅らせるこ とができます この設定は DCM の STARTUP_WAIT属性で定義します このよ うに [Yes] を選択した場合は ビッ ト ス ト リーム生成オプシ ョ ンの追加

図 10 [General Setup] ダイアログ ボックスでの DCM オプシ ョ ン設定

Xilinx DCM Wizard - General Setup

MY_DCMDCM Instance Name

Input Clock Frequency

MHz ns 2

Phase Shift Value

30

Advanced

Source

CLK0

CLK90

CLK180

CLK270

CLKDV

CLK2X

CLK2X180

CLKFX

CLKFX180

LOCKED

STATUS

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDECPSCLK

CLKIN SourceInternal

External

Divide By Value

FeedbackInternal External None

Value 1X 2X

Duty Cycle Correction

Yes No

Phase ShiftNone Fixed Variable

23 More Info

lt B ack Next gt Cancel

DCM

CLKFX CLKFX180

CLKDV

MHz ns

Advanced

(BUFG)

[Yes] CLK0CLK90 CLK180 CLK270

50CLK0 (1X)CLK2X (2X)

[Next]

CLKDV

[Fixed] PSEN PSINCDECPSCLK

[Variable]

DLL_FREQUENCY_MODE

CLK_FEEDBACK

CLKDV_DIVIDE

CLKIN IBUFG

[External][Internal]

DUTY_CYCLE_CORRECTIONCLKOUT_PHASE_SHIFT

DCM

PHASE_SHIFT

x462_10_061803

22 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

変更が必要です この変更については 「DCM LOCKED 出力と コンフ ィギュレーシ ョ ン ロジッ クの設定」 で説明します

bull ある特定の DCM において CLKIN 入力の周波数が高すぎる場合には [Divide Input Click by 2]の [Yes] をク リ ッ ク し 入力周波数を半減させて ください これによって DCM ブロ ッ クに入力前のデューティ サイ クルは約 50 にな り ます この設定は DCM の CLK_FEEDBACK 属性で定義します

bull ソース同期のデータ転送が必要なアプリ ケーシ ョ ンでは [DCM Deskew Adjust] 値を [SOURCE_SYNCHRONOUS] に変更します SOURCE_SYNCHRONOUS または SYSTEM_SYNCHRONOUS 以外の値を使用する場合はザイ リ ンクスにお問い合わせください この設定は DCM の CLK_FEEDBACK 属性を定義します 「スキュー調整」 を参照して ください

bull [OK] をク リ ッ ク し 変更を適用して [General Setup] ウ ィンド ウに戻り ます

クロック バッファ次に DCM の各クロ ッ ク出力に対するクロ ッ ク バッファを定義します(図 12 参照) DCM Wizard のデフォルト設定では 自動的にすべての DCM ク ロ ッ ク出力にグローバル バッファ (BUFG) を使用しますが Spartan-3 デバイスでは 上辺および下辺のそれぞれにある 4 つのグローバル バッファを同一辺にある 2 つの DCM で共有しますXC3S50 では上辺または下辺に 1 つの DCM があ り オプシ ョ ンと して同じ辺にある 4 つのクロ ッ ク バッファすべてに接続できます

bull [Clock Buffer Settings] にある [Customize] をク リ ッ ク し DCM の各クロ ッ ク出力にクロ ッ クバッファの種類を指定します

bull DCM の各クロ ッ ク出力に対して リ ス トから [Clock Buffer] 出力タイプを選択します 表 10 に選択可能なクロ ッ ク バッファ オプシ ョ ンを示します

bull [Enabled Buffer] 出力タイプを使用する際にはバッファ イネーブル (CE) 入力の信号名を指定できますが 自動的に作成された信号名も使用できます

bull [Clock Mux] 出力タイプを使用する場合もセレク ト (S) 入力の信号名を指定できますが自動的に作成された信号名も使用できます

bull [Next] まはた [Finish] をク リ ッ ク し 設定を完了します [Next] ボタンが表示されるのは[General Setup]ダイアログ ウ ィ ン ド ウで CLKFX 出力または CLKFX180 出力を選択した場合のみです それ以外の場合は [Finish] をク リ ッ ク し HDL 出力を生成します ( 「HDL 出力の生成」を参照して ください)

図 11 DCM アドバンスド オプシ ョ ン設定

Xilinx DCM Wizard Advanced

Wait for DCM lock before DONE signal goes high

Yes No

Divide Input Clock by 2

Yes No

SYSTEM_SYNCHRONOUS

OK Cancel

DCM Deskew Adjust

CLKIN 12

FPGA

DONEDCM

DCM

[OK]

DCM

STARTUP_WAIT

CLKIN_DIVIDE_BY_2

DESKEW_ADJUST

x462_11_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 23

R

図 12 DCM Wizard を使用した DCM 出力のバッファ オプシ ョ ン設定

Xilinx DCM Wizard - Clock Buffers

This dialog sets up the clock buffers for all the DCM clock outputs selected in the GeneralSetup dialog

Clock Buffer Settings

U se Global Buffer (BUFG) for all selected DCM clock outputs

C ustomize (using grid below)

Reference the lsquoMore Inforsquo button for more information on customizing the global buffers

M ore Info

lt Back N ext gt Cancel

Clock Buffer Input I0 Input I1 Input CES

Global Buffer CLK0

Enabled Buffer CLK90 CLK90_ENABLE_IN

Clock Mux CLK2X180 CLKFX CLKFX_SELECT_IN

Lowskewline CLK180

Local Routing CLK270

CLK2XGlobal BufferGlobal Buffer

Enabled BufferClock MuxLowskewlineLocal RoutingNone

Output O

CLK0_OUT

CLK90_OUT

CLKFX_OUT

CLK180_OUT

CLK270_OUT

CLK2X_OUT

DCM Wizard

BUFG

DCM

DCMFPGA

FPGA

[Next]

x462_12_061703

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

グローバル バッファ

4 つあるグローバル バッファ (BUFG) の 1 つを同じ辺にある DCM に接続します

イネーブル バッファ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク バッファ (BUFGCE) と して設定しているバッファに接続します CE 入力は High の場合にバッファをイネーブルにしLow の場合は バッファ出力がゼロになり ます

BUFGI0 O

BUFGCEI0 O

CE

CE O

0 0

1 I0

24 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

クロック周波数合成

図 13 に示すク ロ ッ ク周波数合成ダイアログ ボッ ク スは [General Setup] ダイアログ ウ ィ ン ド ウでCLKFX 出力または CLKFX180 出力を選択した場合のみに表示されます

こ こでは必要な出力周波数 または逓倍および分周の係数を指定します [Valid Ranges for SelectedSpeed Grade] で周波数範囲 (CLKIN を ns で指定した場合は遅延) を指定します 周波数範囲にはDFS_FREQUENCY_MODE 属性で設定可能な両方の値が表示されます DCM で DLL に関係したクロ ッ ク出力を使用する場合 この範囲条件はよ り厳し くな り ます

bull [Use output frequency] のチェッ クをオンにし MHz または ns で周波数を入力します [Calculate] をク リ ッ クする と CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性の値が算出されます 入力した範囲から可能な逓倍値および分周値を算出できない場合は DCM Wizard で別の出力周波数値を入力するよ うに求めるエラー メ ッセージが表示されます ソ リ ューシ ョ ンがある場合は [Generated Output] に逓倍値 分周値 およびジッ タの値が表示されます ( 「ク ロ ック ジッタおよび位相ノ イズ」 を参照してください)

bull オプシ ョ ンと して[Use Multiply (M) and Divide (D) values] のチェッ クをオンにしこれらの値を入力でき ます [Calculate] を ク リ ッ ク し 出力周波数およびジ ッ タ を計算し ます 結果は[Generated Output] に表示されます

bull 最後に[Finish] をク リ ッ ク しHDL 出力を生成します (「HDL 出力の生成」を参照してください)

ク ロ ッ ク マルチプレクサ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク マルチプレクサ (BUFGMUX) として設定しているバッファに接続します S 入力はクロ ッ ク ソースを選択します

低スキュー ライン 低スキューのプログラマブル相互接続に接続します

ローカル配線 スキューが重要ではない場合において ローカル相互接続に接続します

なし DCM 出力をディ スエーブルにします

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

O

S

BUFGMUXI0

I1 S O

0 I0

1 I1

I0

I0

VHDL および Verilog のインスタンシエーシ ョ ン

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 25

R

HDL 出力の生成すべてのパラ メータを入力後 [Finish] をク リ ッ クする と 図 14 に示すよ うに DCM Wizard が自動的に VHDL または Verilog HDL 出力ファイルを生成します また ユーザー制約ファイル (UCF) も生成されます

VHDL および Verilog のインスタンシエーシ ョ ン

DCM Wizard を使用し VHDL または Verilog HDL 記述を作成する方法が最も容易ですが VHDLソースおよび Verilog ソースも利用できます

Project Navigator の言語テンプレート

ISE 52i およびそれ以降の Project Navigator では DCM の言語テンプレートが使用できます DCMテンプレート を選択する場合はProject Navigator のメニューで [Edit] rarr [Language Templates] をクリ ッ ク します 図 15 に示すテンプレー ト で Verilog フォルダまたは VHDL フォルダを展開表示し

図 13 デジタル周波数合成の逓倍値と分周値の設定 およびジッ タの算出

Xilinx DCM Wizard - Clock Frequency Synthesizer

Valid Ranges for Selected Speed Grade

Inputs for Jitter Calculations

U se output frequency

M Hz ns875

U se Multiply (M) and Divide (D) values

4M 1D

Input Clock Frequency 30 ns C alculate

lt Back Finish Cancel

More Info

Generated Output

MOutput

Frequency(MHz)

29 111

Period Jitter(pk-to-pk ns)

D

11 875

Period Jitter(unit interval)

010

DFSMode

Fin (MHz)

Low

High

24000 - 18]0000

50000 - 270000

24000 - 210000

210000 - 270000

Fout (MHz)

MHz ns[Calculate]

DCM Wizard (M)

(D)

(M)(D)

[Calculate]

[Calculate]

[Finish]

DCM

CLKFX_MULTIPLY CLKFX_DIVIDE

CLKFX_MULTIPLY CLKFX_DIVIDE

DFS_FREQUENCY_MODE

x462_13_061803

図 14 DCM Wizard での VHDL または Verilog HDL 出力ファイルの生成

Xilinx Architecture Wizard

Cancel

Generating HDL file

x462_14_061803

26 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

Component Instantiation フォルダの DCM フォルダを選択します 次にDCM フォルダにある DCMソース ファ イルを選択する と 隣接したウ ィンド ウにソース ファ イルが表示されます

このファイルは参照用と して または内容を新規ソース ファ イルに貼り付けて使用できます

VHDL および Verilog リファレンス ファイル

また この VHDL および Verilog のソース ファ イルは 次のザイ リ ンクス FTP サイ トからダウンロードできます

bull VHDL DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_vhdlzip

bull Verilog DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_verilogzip

クロック スキューの低減

スキューの低減はDCM の基本的な機能の 1 つです 50 MHz 以上の速度で動作するデザインではクロ ッ ク スキューの低減が重要であ り このク ロ ッ ク スキューの低減に関連する概念は DCM を使用したその他のアプリ ケーシ ョ ンにも応用できます

クロック スキューとはク ロ ッ ク スキューは本質的にすべての同期システムに存在します ク ロ ッ ク ソースによって生成されたクロ ッ ク エッジは システム内の異なる点に 異なる時間に到達します これは 1 つのデバイス内の場合も クロ ッ クで接続された異なるデバイスへのクロ ッ ク入力の場合もあ り ます こ こで発生する到達時間の差がクロ ッ ク スキューです

図 16 に 同期システムにおけるクロ ッ ク スキューの例を示します ク ロ ッ ク ソースによって ク ロ ック入力が FPGA へ駆動され FPGA 上の入力ピンに入る と 内部の低スキュー グローバル ク ロ ッ クネッ ト ワークを使用して分配され FPGA 内部のフ リ ップフロ ップに到達します ク ロ ッ ク パスにある各エレ メン トによって フ リ ップフロ ップにクロ ッ ク エッジが到達する時間に遅延が生じます その結果と して フ リ ップフロ ップにおけるク ロ ッ ク入力 (B) で遅延が発生する つま り ク ロ ッ ク ソース (A)と比較してスキューが発生します この例では ク ロ ッ ク スキュー つま り到達時間の差を ∆b と します

図 15 Project Navigator 言語テンプレートでの DCM デザインの選択

Language Templates

Verilog

Component Instantiation

Block RAM

CLK0

CLK0_FB

CLK2X

Templates Module BUFG_CLK0_SUBM Description Verilog Submodule DCM with CLK0 deskew-

module BUFG_CKL0_SUBM ( CLK_IN RST CLK1X LOCK

DCM

x462_15_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 27

R

同様に ク ロ ッ ク ソースは FPGA 内部で再びバッファを介し ボード上にある別のデバイスを駆動します この例では クロ ッ ク ソースは再び入力ピンを通って FPGA に入り グローバル ク ロ ッ ク ネット ワークで分配され FPGA の出力ピンを通って PCB 上のト レースで別のデバイスに接続されますそのため ク ロ ッ ク パスにおける総遅延が大き くな り その結果と して発生するスキュー ∆c も大き くな り ます

クロック スキュー パフォーマンス低下の原因ク ロ ッ ク スキューによって セッ ト アップ時間 および clock-to-output 遅延が増加し ク ロ ッ ク サイクル時間が長くなるため デザインのパフォーマンス全体が低下する可能性があ り ます また ク ロ ッ クスキューによって 長いホールド時間が必要となる場合があ り このホールド時間を確保できない場合

には 不安定な動作を引き起こす可能性があ り ます

スキューの削除

ク ロ ッ ク スキューを削除する方法はあるのでし ょ う か 幸いにも デジタル ク ロ ッ ク マネージャ(DCM) はこのよ うな機能を備えています 図 17 に図 16 と同様の例を示しますがこ こでは Spartan-3 デバイスを使用しています 2 つの DCM によって次のよ うにクロ ッ ク スキューが削除されます 1つの DCM がFPGA 内部でクロ ッ ク入力されたものからのスキューを削除しも う一方の DCM が ボード上で別のデバイスにクロ ッ ク入力する場合のスキューを削除します この結果 (A) (B) および (C)のすべての点で理想的なクロ ッ ク間のアライ メン ト を実現できます

実際には ク ロ ッ ク スキューはどのよ うに削除されるのでし ょ うか ク ロ ッ ク スキューの原因は クロ ッ ク パスにおける遅延である こ と を思い出して ください 図 17 では (B) のク ロ ッ クで ∆ 分のスキューがあ り (C) のクロ ッ クに ∆c 分のスキューがあ り ましたが ク ロ ッ クを (B) に ∆b 分早く到達させ (C) に ∆c 分早く到達させる方法がある場合には どのよ うになるでし ょ うか このよ う な場合にはすべてのクロ ッ クのエッジが一致するよ うに調整されセッ ト アップ時間および clock-to-output 遅延が減少するため システム全体のパフォーマンスが向上します

図 16 すべての同期システムに存在するクロック スキュー

OtherDevice on

Board

FPGA

c b

A

A

C

B

B

C

x462_16_062403

28 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

過去のクロック動作から将来のクロック動作を予測

Spartan-3 FPGA は非常に高度なデジタル ロジッ クを使用していますが 将来の動作を予測するこ とはできません だたし DCM は過去のクロ ッ ク動作を使用し 将来のク ロ ッ ク動作を予測するために役立てます システムに入力されるほとんどのクロ ッ クの周波数は 不変で単調であるため 入力クロ ックの周期 (T) もほぼ一定になり ます

マイナスの遅延を挿入し ク ロ ッ ク スキューの影響を無効にするこ とはできないため DCM は目的としている時間に到達しているよ うに見えるよ うにクロ ッ クを遅らせます これは どのよ うに行われるのでし ょ うか ク ロ ッ ク サイクルは一定の周期 (T) で繰り返されます 図 18 に示すよ うに (B) におけるクロ ッ クは ∆b 分進んでいるよ うにみえますが 実際には (T ndash ∆b) 分遅くなっています 同様に(C) におけるクロ ッ クは (T ndash ∆c) 分遅れています

図 17 Spartan-3 デザインにおけるクロック スキューの削減

図 18 一定周波数のクロックを遅延させる

OtherDevice on

Board

Spartan-3 FPGA

DC

M

Ideal Clock Alignment

b

cEarly Clocks Eliminate Skew

A

B

C

A

B

C

DC

M

A

B

C

x462_17_062403

c

b

Clock Period (T)

Delay=T- b

Delay=T- c

A

B

C

x462_18_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 29

R

入力クロ ッ ク信号は単調であるため ク ロ ッ ク周期 (T) は容易にわかり ますが ク ロ ッ ク スキュー遅延である ∆b および ∆c はど うでし ょ うか 異なる条件の元で複数のシステムにおける動作を詳細に検証するこ とによって これらの値を決定するこ と もできますが 実際には現実的である とは言えません

さ らに ∆b および∆c の値はデバイスによって異なり 同一のデバイス上でも温度または電圧によって変化します

Spartan-3 DCM では ∆b および ∆c をあらかじめ決定するのではなく フ ィードバッ ク ループによって遅延を確認する遅延ロッ ク ループ (DLL) を使用します (図 17 を参照してください) こ こで示している例では 2 つの DCM を使用して 1 つの DCM が内部信号のスキューを削減し も う一方の DCMが外部デバイスへの信号のスキューを削減します また 両方の DCM に各ク ロ ッ ク フ ィードバッ クループがあ り ます DLL は温度または電圧によって引き起こ されるわずかな変更にも適応します

ターゲッ トのロック

適切な遅延を決定し挿入するためにはDCM で数千クロ ッ ク サイ クルのサンプルが必要です DCMで適切な遅延が挿入される と LOCKED 出力信号がアサート されます

DCM で LOCKED 信号がアサート されるまでDCM ク ロ ッ ク出力は使用しないでください DCM が入力クロ ッ ク信号に対してロ ッ ク状態になるまでのク ロ ッ ク出力は無効です DCM がロ ッ ク状態になる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な要素が含まれている可能性があ り ます

アプリ ケーシ ョ ンではLOCKED 信号を出力クロ ッ クが有効であるこ とを確認するために使用しますLOCKED 信号をクロ ッ ク信号が使用可能な状態であるこ とを示すものと して理解してください

安定した単調なクロック入力

DCM が適切に動作するためには 安定した単調なクロ ッ ク入力が必要です そのよ う なク ロ ッ ク入力によって ク ロ ッ ク周期を予測でき出力クロ ッ クのタイ ミ ングを適切に調整できます DCM はいったんロ ッ ク状態になる と『Spartan-3 データ シート 』 で指定された値までのクロ ッ ク周期変動に対応できます 「DCM 使用のためのクロ ッ ク条件」 を参照して ください

入力ク ロ ッ ク周波数が変動して指定された範囲外と なった場合 DCM のロ ッ ク状態が解除されLOCKED 出力は Low になり ます ロ ッ ク状態が解除された場合 DCM を リセッ ト して再びロ ッ クする必要があ り ます 入力クロ ッ クが指定された制限を満たしている場合はLOCKED 出力が High である限り出力クロ ッ クは常に有効です しかし LOCKED 出力は High を維持していますが クロ ッ ク入力が指定された範囲外で CLKDV 出力または CLKFX 出力が無効となる場合があるため問題のないデザインを作成するためには 安定した単調なクロ ッ ク入力が重要です

DCM CLKIN 入力へのパスと して 4 つのグローバル バッファ入力 (IBUFG) のうち デバイス上で同一辺にあるバッファ入力の 1 つを使用する こ と を推奨します IBUFG パスを使用する こ とによってパッ ドからグローバル バッファを通って DCM に到達までの遅延がスキュー調整された出力から削除されます ただし 表 11 に示すその他のパスも使用できます また CLKIN 入力を駆動する信号は汎用相互接続を通る汎用入力ピン (IBUF プリ ミ ティブ) グローバル バッファ入力 (IBUFG) グローバル バッファ マルチプレクサ (BUFGMUX BUFGCE) からの入力と して使用できます 同様に LVDSク ロ ッ ク入力をクロ ッ ク入力と して使用できる場合もあ り ます スキュー調整ロジッ クはLVCMOS または LVTTL のよ うなシングル エンドのクロ ッ ク入力のために特性評価されています ただし 差動信号では IO タイ ミ ングによって わずかな位相エラーが発生する可能性があ り ます 特定の IO タイミ ングについては 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

30 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

確実なソースからのフ ィードバック

適切な遅延に対してロ ッ ク信号をアサートするために DCM は 入力クロ ッ クおよびクロ ッ ク分散遅延後にタ ップされるフ ィードバッ ク ク ロ ッ クの両方をモニタします ク ロ ッ ク フ ィードバッ ク パスにおける総遅延に制限はあ り ません DLL では 必要に応じて逓倍したク ロ ッ ク周期を使用する こ とによって出力クロ ッ クを遅らせます このよ うにDCM は内部遅延または外部遅延を相殺できますがクロ ッ ク フ ィードバッ クは適切なフ ィードバッ ク地点に接続する必要があ り ます

内部クロック信号からのスキュー削除

図 19 に示すよ うにFPGA 内部のスキューを削減する場合フ ィードバッ ク タ ップは FPGA 内部のエレ メン トに入力されるクロ ッ ク と同一のクロ ッ ク とな り ます 通常 フ ィードバッ ク ク ロ ッ クは デバイス上で DCM と同一辺にある ク ロ ッ ク バッファ (BUFG) またはグローバル ク ロ ッ ク マルチプレクサ (BUFGMUX または BUFGCE) に接続されている DCM からの CLK0 出力 (位相シフ ト なし ) ですまたは CLK0 出力ではなく DCM の CLK2K 出力 (位相シフ ト なし 2 逓倍) をフ ィードバッ ク と して使用できます

表 11 クロック入力ソース

CLKIN ソース 説明

グローバル バッファ入力を使用

グローバル バッファ入力 IBUFG は DCM への外部クロ ッ クのソースと して適切です パッ ドからグローバル バッファを通り CLKIN 入力までの遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

グローバル ク ロ ッ ク バッファ BUFG BUFGCE または BUFGMUX プリ ミ ティブを使用するグローバル ク ロ ッ ク バッファは内部生成された DCM へのクロ ッ ク ソース と して適切です グローバル バッファを通る際の遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

汎用 IO を使用 任意のユーザー IO IBUF は 外部クロ ッ クのソースと して使用できます パッ ドから DCM への遅延をあらかじめ決定するこ とはできません これは入力パスとなる可能性を持つパスが多数

存在するためであ り その結果 DCM は遅延を削除できません

内部ロジッ クから派生 FPGA 内部のロジッ ク も ク ロ ッ ク ソース と して使用できます しかしロジッ クから DCM への遅延をあらかじめ決定するこ とはできないため DCM は遅延を削除できません

I OIBUFG

BUFGI O

BUFGCEI O

CE

O

S

BUFGMUXI0

I1

I OIBUF

InternalLogic

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 31

R

外部クロック信号からのスキュー削除

外部クロ ッ クを使用した DCM フ ィードバッ クの設計は内部クロ ッ クの場合よ り も複雑です 図 20 に示すよ うに理想的にはフ ィードバッ ク ク ロ ッ クは PCB ト レースまたは外部クロ ッ クの再バッファの後のすべての外部クロ ッ クに入力される点から始ま り ます

LOCKED 信号は DCM がロ ッ ク状態になったこ と およびク ロ ッ ク信号が有効であるこ とを示します LOCKED 信号によって 外部デバイスが使用可能になり その反転バージ ョ ンはアクティブ Lowのチップ イネーブル信号に接続できます

コンフ ィギュレーシ ョ ン後の DCM リセッ ト

外部フ ィードバッ クを使用する場合 コンフ ィ ギュレーシ ョ ン直後に DCM の リ セッ ト をパルスしDCM のロ ッ ク状態を維持する必要があ り ます 図 20に示すよ うに0x000F で初期化された SRL16 から必要な リセッ ト パルス信号を出力できます 「RST 入力」 を参照して ください

なぜリセッ トする必要があるのか

なぜ このよ うに追加的な リセッ ト パルスが必要なのでし ょ うか 最適にロ ッ クするためには DCMをロ ッ ク状態にし その状態で安定させるために 外部フ ィードバッ クでコンフ ィギュレーシ ョ ンされ

た DCM で CLKIN および CLK0 または CLK2X のいずれかの信号を使用する必要があ り ます コンフ ィギュレーシ ョ ン実行中は FPGA の IO バッファがまだアクティブではないために 外部フ ィードバッ ク CLKFB を使用できません

コンフ ィギュレーシ ョ ンの終了時に デバイスがスター ト アップ シーケンスを開始する と DCM はキャプチャ プロセスを開始します この時点では FPGA のグローバル 3-ステート信号 (GTS) はアサー

図 19 内部クロック信号でのスキュー削減

I OBUFG

FPGA

(or BUFGMUX or BUFGCE)

( )

ldquoClock Goodrdquo

I OIBUFG

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)(

)

x462_19_061803

図 20 外部クロック信号でのスキュー削減

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)

I OOBUF

I OOBUF

FPGA

CLK

ENABLE

( )

RESETD

WCLK

A[30]

Q

INIT=000F

SRL16

I OIBUFG

I OIBUFG

x462_20_062203

32 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ト されているため すべての出力ピンは 3-ステート (ハイ -インピーダンス フローティング) 状態を維持しています このため CLKFB 信号のロジッ ク ステートはわかり ません

GTS のアサート状態の解除後CLKFB に信号が現れDCM が CLKFB 信号を取り込みますが リセット パルスがない場合 DCM が適切な時点でロ ッ ク しない可能性があ り DCM でジッタがわずかに増加し ク ロ ッ ク サイクル レイテンシも増加する可能性があ り ます

また リセッ ト パルスがない場合 PCB のシグナル インテグ リティの問題によって 3-ステート状態にある CLKFB 信号がボード上でほかの信号と ク ロス カップルする とい う問題が発生する可能性があり ます DCM では この無効なクロス カップルされた信号を CLKFB 信号と認識し ロ ッ クするためGTS 信号のアサートが解除され 適切な CLKFB 信号が現れたと きにロ ッ クできない場合があ り ます

遅延ロック ループとはク ロ ッ ク遅延を削除するための 2 つのタイプの回路

bull 遅延ロッ ク ループ (DLL)

bull 位相ロッ ク ループ (PLL)

DLL および PLL には クロ ッ ク分散遅延を削除する という機能以外に周波数合成 クロ ッ ク調整および位相シフ ト などの機能があ り ます

遅延ロック ループ (DLL)

図 21 に示すよ うに単純な形の DLL はタップ遅延ラインおよび制御ロジッ クで構成されます 遅延ラインは入力クロ ッ クCLKINに遅延を挿入したク ロ ッ クを生成し ク ロ ッ ク分散ネッ ト ワークでは そのクロ ッ クがすべての内部レジスタおよびクロ ッ ク フ ィードバッ ク CLKFB ピンに配線されます 一方制御ロジッ クは遅延ラインを調整するために常に入力クロ ッ クおよびフ ィードバック ク ロ ッ クをサンプルします 遅延ラインでは電圧制御遅延または不連続の遅延エレ メン トが使用されています 最適で安定したパフォーマンスを実現するために Spartan-3 DLL ではすべてのデジタル遅延ラインを使用します

DLL は入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クの立ち上がりエッジが調整されるまで それらのクロ ッ ク間に遅延を挿入し ク ロ ック周期から クロ ッ ク分散遅延分を差し引いた時間だけフ ィードバッ ク ク ロ ッ クを遅らせるこ とによって機能します DLL および PLLの専門的解説では フ ィードバッ ク ク ロ ッ クは 360deg 位相がずれたもの つま り同一の位相に再び現れるものと定義されています

入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クのエッジが調整される とDLL がロ ッ ク し これらの 2 つのクロ ッ ク間に認識できる差異はなくな り ます つま り DLL 出力クロ ッ クのクロ ッ ク分散ネッ ト ワークにおける遅延がなくな り ソース ク ロ ッ ク とそのロード間の遅延を効果的に削除されています

図 21 遅延ロック ループ (DLL) ブロック図

ClockDistributionNetwork

Control

VariableDelay Line

CLKOUT

CLKFB

CLKIN

x462_21_061903

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 33

R

スキュー調整

こ こでは主にスキューの削減方法およびクロ ッ ク ソースに対する内部クロ ッ ク と外部クロ ッ クの位相調整の方法について説明します 実際には DCM は DESKEW_ADJUST という属性を使用し 意図的にわずかなスキューを追加します DCM Wizard では アドバンス ド オプシ ョ ン ウ ィ ンド ウでこのDESKEW_ADJUST 属性を設定します

この属性には STEM_SYNCHRONOUS および SOURCE_SYNCHRONOUS という 2 つの基本的なアプリ ケーシ ョ ンがあ り ます 大多数のアプリ ケーシ ョ ンではSYSTEM_SYNCHRONOUS 設定を使用します 次に 各モードの目的を説明します

システム同期

図 23 に示すよ うに システム同期アプリ ケーシ ョ ンでは 1 つのデータ パスにあるすべてのデバイスが共通のクロ ッ ク ソースを使用します これが 従来の最も一般的なシステム構成です デフォルト設定である SYSTEM_SYNCHRONOUS オプシ ョ ンを選択する と データ キャプチャ時のホールド時間がゼロになるよ うに わずかなクロ ッ ク遅延が追加されます ホールド時間とは 基本的にベス ト ケースのデータ パスと ワース ト ケースのクロ ッ ク パス間の差です DCM のクロ ッ ク スキュー削減機能はクロ ッ クを進めるこ とによって動的にワース ト ケースのクロ ッ ク パスを短縮します しかし ク ロ ッ

位相ロック ループ (PLL)

PLL は DLL と同様の基本的な機能を持つよ うに設計されていますが異なるアーキテクチャを使用します 図 22 に示すよ うにPLLと DLL の根本的な違いは DLL が遅延ラインを使用するのに対して PLL では電圧制御オシレータを使用し CLKIN と同様のクロ ッ ク信号を生成します位相検出器およびフ ィルタで構成される制御ロジッ クは ク ロ ッ ク分散システムでの遅延を補う よ うにオシ

レータの周波数と位相を調整します PLL の制御ロジッ クは 入力ク ロ ッ ク と フ ィードバッ ク ク ロ ッ ク CLKFB を比較し 入力クロ ッ クの立ち上がりエッジがフ ィードバッ ク ク ロ ッ クの立ち上がりエッジと一致するよ うにオシレータのクロ ッ クを調整します その後 PLL はロッ ク状態になり ます

インプリ メンテーシ ョ ン

DLL および PLL 内部では アナログ回路またはデジタル回路のいずれかが使用され 各回路はぞれぞれに利点があ り ます 慎重な回路設計を行ったアナログ回路の場合 DLL または PLL ではよ り厳密にタイ ミ ングを調整でき 使用するシ リ コン エリ アが少なくなり ます

一方デジタル回路を使用した設計の場合 ノ イズ耐性が優れ消費電力が低く ジッ タのパフォーマンスよ り良いという利点があ り

ます また ク ロ ッ クを停止させるこ とができるため 電力管理が容易になり ます アナログ設計では 追加の電力供給が必要な場合があ りよ り正確に電源供給の制御を行う必要があるために新しい処理テク ノ ロジに移行する際に問題が発生する可能性があ り ます

DLL と PLL

アプリ ケーシ ョ ンで PLL または DLL を選択する場合は アーキテクチャの違いを理解するこ とが重要です PLL で使用されるオシレータは 本質的に不安定な状態であるため ク ロ ッ ク分散ネッ ト ワークの遅延を補う際に PLL のパフォーマンスが低下します 逆に常に安定している DLL アーキテクチャは遅延およびクロ ッ ク調整の機能の点では PLL よ り優れている一方で PLL はDLL より柔軟に新しいクロ ッ ク周波数の合成を行います

図 22 位相ロック ループ (PLL) ブロック図

ClockDistributionNetwork

Control

Voltage ControlledOscillator

CLKOUT

CLKFB

CLKIN

x462_22_061903

34 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ク パスを短縮するこ とによって ク ロ ッ クがデータの前に現れる場合には結果と してホールド時間が発生します SYSTEM_SYNCHRONOUS オプシ ョ ンを使用するこ とによってホールド時間がゼロになるために十分なスキューをクロ ッ ク パスに追加できる一方でclock-to-output 時間がわずかに増加します

ソース同期

SOURCE_SYNCHRONOUS モードは本来高速データ通信インターフェイスで使用される高度な設定です 図 24 に示すよ うに ソース同期アプリ ケーシ ョ ンではデータおよびクロ ッ クの両方が同一のクロ ッ ク ソースから派生します 送信デバイスは データおよびクロ ッ クを受信デバイスに送信し 受信デバイスはデータに対して最適なクロ ッ クが入力されるよ うにクロ ッ ク タイ ミ ングを調整します 高速デュアル データ レート (DDR) および LVDS 接続などがこのシステムの例です

SOURCE_SYNCHRONOUS 設定によって入力クロ ッ ク と DCM からのデスキュー出力クロ ッ ク間の位相をゼロにし 次に FPGA アプリ ケーシ ョ ンでは固定位相シフ ト モードまたは動的ファ イン位相シフ ト モードを使用してクロ ッ クのタイ ミ ングを調整します 次のアプリ ケーシ ョ ン ノートではソース同期デザインおよび動的位相調整について説明しています

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcomxappxapp622pdf

また 次のアプ リ ケーシ ョ ン ノート では システム レベルのタイ ミ ングについて詳細に解説しています このアプリ ケーシ ョ ン ノートはVirtex-II および Virtex-II Pro FPGA アーキテクチャについて説明するものですが ほとんどの概念を Spartan-3 FPGA に適用できます

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

タイ ミングの比較

図 25 にデュアル データ レート (DDR) アプリ ケーシ ョ ンで SYSTEM_SYNCHRONOUS 設定およびSOURCE_SYNCHRONOUS 設定を使用した場合のタイ ミ ング比較を示します DDR アプリ ケーシ ョンでは 各データ ラインに 2 つのデータ ビッ トが ク ロ ッ ク周期の前半および後半に各 1 つずつ現れます

図 23 共通のクロック ソースによってクロック入力されるシステム同期アプリケーシ ョ ン

図 24 データ ソースがデータ クロックを入力するソース同期アプリケーシ ョ ン

ClockSource

DATA_INDATA_OUT

x462_23_061903

ClockSource

DATA_INDATA_OUT

DATA_CLK

x462_24_061903

クロック調整

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 35

R

SYSTEM_SYNCHRONOUS モードではDCM のクロ ッ ク パスに適切なスキューが追加されホールド時間がゼロになり ます

これに対して SOURCE_SYNCHRONOUS モードでは DCM のクロ ッ ク パスにスキューは追加されませんが FPGA アプ リ ケーシ ョ ンでスキュー追加 または位相シフ ト が行われ ク ロ ッ クはデータウ ィンド ウにおいて理想的な位置で入力されます

クロック調整 ク ロ ッ ク調整とは 入力ク ロ ッ クのデューティ サイ クルが 50 以外の場合に 50 に調整する機能です 図 26 にHigh 時間が約 40 であ りLow 時間が約 60 (4060 デューティ サイクル) である入力ク ロ ッ クを ほぼ完全な 50 デューティ サイ クルを持つ入力クロ ッ クに調整する例を示します完全な 50 デューテ ィ サイ クル と な ら ない理由は CLKOUT_DUTY_CYCLE_DLL およびCLKOUT_DUTY_CYCLE_FX で指定されるデューティ サイ クルのずれが存在するためです これらの値は 『Spartan-3 データ シート 』 に記載されています デューティ サイクルのずれの概算値は 150ps未満です

クロ ッ クのデューティ サイクルが 50 であるこ とはVLDS またはデュアル データ レート (DDR) アプリ ケーシ ョ ンなどの高速通信インターフェイス ク ロ ッ ク転送アプリ ケーシ ョ ン またはクロ ッ ク ミラー アプリ ケーシ ョ ンにおいて不可欠な条件です 「デュアル データ レート (DDR) ク ロ ッ クの例」 を参照して ください

DCM では 自動的にほとんどのク ロ ッ ク出力のデューティ サイ クルが 50 に調整され それ以外の場合には動作条件または属性設定によって オプシ ョ ンと して調整されます 表 12 を参照して ください

図 25 デュアル データ レート (DDR) アプリケーシ ョ ンにおける SYSTEM_SYNCHRONOUS モードおよび SOURCE_SYNCHRONOUS モードのタイ ミング比較

SYSTEM_SYNCHRONOUS

DATA_IN

SOURCE_SYNCHRONOUS

SOURCE_SYNCHRONOUS+ Fixed or Dynamic Phase Shift

Data capture windowor data ldquoeyerdquo

x462_25_061903

図 26 DCM におけるデューテ ィ サイクル修正機能

CLKIN

ConditionedClock Output

50 50

40 60

x462_26_061903

36 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

14 位相シフ ト出力である CLK0 CLK90 CLK180 および CLK270 はDUTY_CYCLE_CORRECTION 属性を使用し ク ロ ッ ク調整を行う こ とができます デフォルトではDUTY_CYCLE_CORRECTION 属性は TRUE に設定され これらの出力は 50 デューティ サイクルに調整されます この属性を FALSE に設定する場合 クロ ッ ク調整は機能せず クロ ッ ク出力のデューティ サイクルは入力クロ ッ ク とほぼ同一になり ますが 完全に CLKIN のデューティ サイクルと一致するこ とは保証されていません

位相シフ ト - クロック周期の分数でクロックを遅延

また DCM ではクロ ッ ク周期の分数分だけ入力クロ ッ クを遅らせるこ とによって 位相をシフ ト させるこ とができます

DCM は 4 つの位相シフ ト タイプをサポート し各タイプを別々に使用するこ と またはほかの位相シフ ト タイプと組み合わせて使用するこ とができます 表 13 に 各クロ ッ ク出力での位相シフ ト機能を示します

1 ほとんどの 12 ク ロ ッ ク周期位相シフ ト出力では50 デューティ サイクル調整を行います 出力のペアの立ち上がりエッジは0degおよび 180deg位相シフ ト した位置またはクロ ッ ク周期の最初および 12 周期の位置にあ り ます

2 0deg(CLK0) 90deg(CLK90) 180deg(CLK180) および 270deg(CLK270) の 14 位相シフ ト出力ではオプシ ョ ンと して 50 デューティ サイ クル調整を行います

3 固定ファイン位相シフ トではすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

4 動的ファイン位相シフ トでは FPGA アプリ ケーシ ョ ン内部のすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

表 12 デューティ サイクルを 50 にするためのクロック出力調整

DCM クロック出力

50 デューティ サイクル出力

CLK0CLK90

DUTY_CYCLE_CORRECTION = TRUE

CLK180CLK270

CLK2XCLK2X180

CLKDV

CLKFXCLKFX180

常に

DLL_FREQUENCY_MODE 属性

LOW HIGH

DUTY_CYCLE_CORRECTION = TRUE 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に CLKDV_DIVIDE が整数値の場合

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 37

R

12 クロック周期位相シフ ト出力12 周期位相シフ ト出力では 位相シフ トのないク ロ ッ ク およびそのクロ ッ クを 12 周期シフ ト させた (180deg位相シフ ト ) ク ロ ッ クが出力されます 12 周期位相シフ ト出力は表 14 に示すよ うにペアで出力されます

表 13 クロック出力の位相シフ ト機能

クロック出力12 クロック周期

14 クロック周期

固定または動的

位相シフ ト

CLK0CLK90CLK180CLK270CLK2XCLK2X180CLKDVCLKFXCLKFX180

表 14 12 クロック周期位相シフ ト出力

出力ペア解説

位相シフ トなし 180deg位相シフ ト

CLK0 CLK180 周波数は CLKIN と同一です デフォルトで 50 デューティ サイクルに調整されDUTY_CYCLE_CORRECTION 属性に制御されます

CLK2X CLK2X180 2 逓倍クロ ッ ク (CLK2XCLK2X180) からの出力です周波数は CLKIN 周波数の 2 倍であ り デューティ サイ クルは常に 50 です

CLKFX CLKFX180 周波数合成回路 (CLKFX CLKFX180) からの出力です 出力周波数は周波数合成の属性によって決定されます デューティ サイ クルは常に 50 です

38 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

12 周期位相シフ ト出力は高速デュアル データ レート (DDR) デザインおよびクロ ッ ク ミ ラーなどのデューティ サイクルが重要となるデザインにとって理想的です 図 27 に示すよ うに12 周期位相シフト出力のペアの 1 つはクロ ッ ク周期の始めに立ち上がり も う 1 つはそのクロ ッ ク周期の半分の地点で正確に立ち上がり ます

12 周期位相シフ ト出力によるデューテ ィ サイクルのずれの削減

DCM のクロ ッ ク出力が 50 デューティ サイクルに調整された場合 180deg位相シフ ト ク ロ ッ クは位相シフ トのないクロ ッ クを反転させたよ うに見えます 低周波数アプリ ケーシ ョ ンでは 基本的にこれが成立します

しかし アプリ ケーシ ョ ンが非常に高い周波数で動作する場合は 各ト ランジスタの立ち上がり時間お

よび立ち下がり時間の差が原因となって発生するデューティ サイ クルのずれが FPGA 内部で問題となり ます つま り 始めはデューティ サイクルが 50 の場合でも ク ロ ッ ク サイクル間で常にクロ ッ クHigh と ク ロ ッ ク Low の間に差が生じます

デュアル データ レート (DDR) クロックの例

図 28 に DCM ク ロ ッ ク出力 CLKx が デュアル データ レート (DDR) 出力フ リ ップフロ ップの 2 つのクロ ッ クを駆動する例を示します DDR ク ロ ッ ク入力の 1 つはクロ ッ ク出力をそのまま使用しますが も う一方の入力は DDR フ リ ップフロ ップ内部でクロ ッ クを反転させます DCM からの CLKx 出力のデューティ サイクルは 50 ですが FPGA のクロ ッ ク ネッ ト ワークを伝搬する間にデューティサイ クルにずれが発生します こ こで示す例では このデューティ サイクルのずれによって ク ロ ッ クHigh 時間が短縮され ク ロ ッ ク Low 時間が長くな り ます その結果と してC1 ク ロ ッ ク入力はクロ ック周期の半分の時点よ り もわずかに前にト リガします 低周波数の場合 このずれは無視して問題あ りませんが 高性能の DDR ベースのシステムでは 正確なクロ ッ ク設計が必要です

図 27 12 周期位相シフ ト出力

180˚0˚

frac12T 1T

CLKx

CLKx180

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)

x462_27_061903

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 39

R

図 29 に 図 28 に若干の修正を加えた回路例を示します この例では DCM からの位相シフ ト していない出力および 180deg位相シフ ト した出力の両方が DDR 出力フ リ ップフ ロ ップに入力されますCLKx ク ロ ッ ク信号は ク ロ ッ ク周波数の開始時点で正確に DDR フ リ ップフロ ップの C0 入力を ト リガし CLKx180 ク ロ ッ ク信号はクロ ッ ク周波数の半分の時点で正確に C1 入力を ト リガします この方法を使用する場合には 追加のグローバル バッファおよびグローバル ク ロ ッ ク ラ インが必要になりますが 約 300 ps (この値は概算です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください) までのデューティ サイクルを削減できます

図 28 デュアル データ レート (DDR) 出力におけるデューティ サイクルのずれ

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx at Flip-Flop(with duty-cycle distortion)

Duty-cycle distortion

Factor in distortionwhen using a singleinverted clock

CLKx(50 duty cycle)

BUFGCLKx

DCM

CLKIN

x462_28_061903

40 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

表 15 に DDR 出力フ リ ップフロ ップおよび LVDS 出力を使用して測定したデューティ サイクルのずれの値を示します この出力タイプ以外では 立ち上がり時間および立ち下がり時間に差が生じるこ とによって さ らにずれが大き くなる可能性があ り ます このずれは IBIS を使用してシ ミ ュレーシ ョ ンを実行し 検証できます

14 位相シフ ト出力図 30 および表 17 に示すよ うに 14 位相シフ ト出力は CLKIN 入力を 14 周期分シフ ト させたものです 14 位相シフ ト出力には CLKFB 入力へ戻るフ ィードバッ ク パスが必要であるため CLK0 出力の位相は CLKIN 入力の立ち上がりエッジと一致するよ うに調整されます CLK90 出力は CLKIN 入力を90deg位相シフ ト させて生成したものであ り ほかの位相シフ ト出力も同様に生成されます

図 29 12 周期位相シフ ト出力を使用したデューテ ィ サイクルのずれの削減

CLKx at Flip-Flop(with duty-cycle distortion)

180 ˚Phase Shift

CLKx180 at Flip-Flop(with duty-cycle distortion)

CLKx(50 duty cycle)

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKIN

CLKx180

BUFG

BUFG

x462_29_061903

表 15 デューティ サイクルのずれのパラメータ

パラ メータ 説明 概算値

TDCD_CLK0 IO ブロ ッ クにある DDR エレ メン トに対して ク ロ ッ ク立ち下がりエッジでローカル反転したクロ ッ クを入力する場合のデューティ サイクルのずれです 図 28を参照してください

~400 ps

TDCD_CLK180 IO ブロ ッ クにある DDR エレ メン トに対して DCM CLKx180 をクロ ッ ク入力する場合のデューティ サイクルのずれです 図 29を参照してください

~60 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 41

R

DLL 周波数モードによる出力の有効性

14 位相シフ ト出力が有効であるかは DLL_FREQUENCY_MODE 属性で制御される DLL の周波数モードによって決定されます 表 16 に示すよ うに 低周波数モード (DLL_FREQUENCY_MODE=LOW) ではすべての 14 位相シフ ト出力が有効ですが高周波数モードでも有効な出力は CLK0 および CLK180 のみです

5050 デューティ サイクル調整オプシ ョ ン

オプシ ョ ン と して DUTY_CYCLE_CORRECT 属性を使用し 14 位相シフ ト出力を一括して 50デューテ ィ サイ クルに調整できます この属性が TRUE の場合 (デフォル ト ) 4 つの出力すべてのデューティ サイ クルが 50 にな り FALSE の場合は 各出力のデューティ サイ クルと CLKIN 入力のデューティ サイクルは一致しません 詳細は 「ク ロ ッ ク調整」 を参照してください

4 つの位相 遅延クロックエッジ 位相パルス

表 17 に示すよ うに 14 位相シフ ト出力は ぞれぞれ 1 つ前のパルスから 14 周期遅れた立ち上がりエッジで出力されます これらの出力は メモ リ インターフェイスおよびペリ フェラル制御などのアプリ ケーシ ョ ンにおけるタイ ミ ングを柔軟にします

また デューテ ィ サイ クル修正オプシ ョ ンがイネーブルの場合 (DUTY_CYCLE_CORRECTION =TRUE の場合) これらの出力を次のよ うに考えるこ とができますこれらの出力には 14 周期の間隔で

図 30 CLKIN 入力 の 14 周期位相シフ ト出力 (デューティ サイクル修正イネーブルの場合)

表 16 DLL 周波数モードによる 14 位相シフ ト出力の有効性

出力DLL_FREQUENCY_MODE

LOW HIGH

CLK0

CLK90

CLK180

CLK270

270˚180˚90˚0˚

frac14T frac12 T frac34T 1T

CLK0

CLK90

CLK180

CLK270

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)x462_30_061903

42 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

立ち下がりエッジがあ り ます (表 17 を参照) 同様に各出力には周期幅が同一である High パルス時間と Low パルス時間があるこ とになり たとえば 図 30 に示す CLK90 の High パルス部分は CLK0 クロ ッ ク周期の中央に位置しています

ファイン位相シフ ト

DCM では ファ イン位相シフ ト を使用するこ とによって ク ロ ッ ク スキューを制御するこ と もできます ファ イン位相調整はすべての DCM 出力に対して同時に機能します この位相調整にはDCM のDLL 機能ユニッ ト を使用するため CLKFB 入力を通るクロ ッ ク フ ィードバッ クが必要です

物理的には CLKIN と CLKFB の立ち上がりエッジ間の位相関係を調整するこ とによってシフ トが行われますが すべての DCM 出力が CLKIN 入力に関連して位相シフ ト されます

デフォルトでは ファ イン位相シフ トはディ スエーブル (CLKOUT_PHASE_SHIFT=NONE) です つま り ク ロ ッ ク入力は CLKIN で位相調整されています この場合 入力クロ ッ ク CLKIN と フ ィードバッ ク ク ロ ッ ク間におおよそのフ ィードバッ ク地点で計測されるスキューはあ り ません (「確実なソースからのフ ィードバッ ク」 を参照して ください) 図 31 に示すよ うに ファ イン位相シフ トがイネーブルの場合 出力クロ ッ クのエッジは位相シフ ト され CLKIN 入力の前または後になり ます

次にファイン位相シフ トの 2 つのモードについて説明します一般に高速データ通信アプリ ケーシ ョ ンでは 両方のモードが使用されます 「ソース同期」 を参照してください

1 固定ファイン位相シフ ト モードは位相シフ ト値を設計段階で設定します 位相シフ ト値はFPGAコンフ ィギュレーシ ョ ン実行中に取り込まれ アプリ ケーシ ョ ンで変更するこ とはできません

2 動的ファイン位相シフ トモードには 初期位相シフ ト値があ り 固定ファイン位相シフ トの場合と同様に この値は FPGA コンフ ィギュレーシ ョ ン中に取り込まれますが DCM の LOCKED 出力が High になった後であれば アプリ ケーシ ョ ンで変更可能です

固定ファイン位相シフ ト

固定ファ イン位相シフ ト モードでは 設計段階で指定されたシフ ト値が FPGA コンフ ィギュレーシ ョン実行中に設定され この値はアプリ ケーシ ョ ンで変更できません

このモードは 次の 2 つの属性によって制御されます CLKOUT_PHASE_SHIFT 属性が FIXED に設定し PHASE_SHIFT 属性が位相シフ ト量を制御します 図 31 に示すよ うに PHASE_SHIFT = 0 の場合は 出力ク ロ ッ クおよび CLKIN 入力の位相が一致する よ う 調整され ク ロ ッ ク出力はPHASE_SHIFT が負の整数の場合に CLKIN の前に位相シフ ト し正の整数の場合には CLKIN の後に位相シフ ト します

固定ファイン位相シフ ト範囲

PHASE_SHIFT 属性は常に整数値であ り その範囲は -255 ~ +255 ですが 実際の範囲は使用されるCLKIN の周波数によって異なり ます

表 17 14 位相シフ ト出力とそれらの特性 (DUTY_CYCLE_CORRECTION=TRUE)

DCM 出力 位相シフ トクロック周期

に対する遅延

立ち上がり

エッジ

立ち下がり

エッジ解説

CLK0 0deg 0 0 frac12T スキュー調整された入力クロ ッ ク 位相シフ ト なし

CLK90 90deg frac14T frac14T frac34T High パルス (frac34T 周期幅 周期の中央)

CLK180 180deg frac12T frac12T 0T CLK0 の反転 (立ち上がりエッジは周期の中央)

CLK270 270deg frac34T frac34T frac14T Low パルス (frac34T 周期幅 周期の中央)

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 43

R

PHASE_SHIFT 属性の範囲は 次の 2 つの値によって決定されます

1 1 つはナノセカンドで測定される CLKIN 入力の周期 である TCLKIN 値です

2 も う 1 つは Spartan-3 デバイスおよびスピード グレードによって指定される FINE_SHIFT_RANGE の値です この値は 『Spartan-3 データ シート 』 モジュール 3 に記載されています FINE_SHIFT_RANGE は 位相シフ ト遅延ラインにおける総遅延であ り 回路内の遅延タップ数の関数です 実際の遅延ラインは FINE_SHIFT_RANGE よ り長い場合があ り ますがFINE_SHIFT_RANGE までの値が保証されています

これらの値を 等式 1 に適用しSHIFT_DELAY_RATIO を算出します PHASE_SHIFT 属性の範囲はこの算出結果と 1 との不等式関係によって異なり ます

等式 1

SHIFT_DELAY_RATIO lt 1 の場合

ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り長い場合はSHIFT_DELAY_RATIO lt 1 であ り最大ファイン位相シフ ト範囲は FINE_SHIFT_RANGE によって決定されます SHIFT_DELAY_RATIO lt 1 の場合 PHASE_SHIFT 範囲は 等式 2 から求めるこ とができます

等式 2

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 PHASE_SHIFT 値は plusmn191 とな り ます

したがって SHIFT_DELAY_RATIO lt 1 の場合の位相シフ ト値は 等式 3 とな り ますPHASE_SHIFT = 1 と して ください

等式 3

図 31 固定ファイン位相シフ ト

0

Fixed Phase Shift- Limit

Fixed Phase Shift+ Limit

Clock Outputs

PHASE_SHIFT CLKIN DCM

CLKIN

x462_31_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

SHIFT_DELAY_RATIO FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------=

PHASE_SHIFTLIMITS plusmn INTEGER 256 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞=

TPhaseShiftPHASE_SHIFT

PHASE_SHIFTLIMITS----------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

44 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

SHIFT_DELAY_RATIO ge 1 の場合

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 1 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 4

したがって SHIFT_DELAY_RATIO ge 1 の場合の位相シフ ト値は 等式 5 とな り ます PHASE_SHIFT = 1 と して ください

等式 5

最小位相シフ ト

最小位相シフ トの大きさは 次の値の大きな方によって決定されます

1 『Spartan-3 データ シート 』 に DCM_TAP_MIN 仕様と して記載されている最小遅延ライン タ ップ値 (概算値は ~30ps)

2 ク ロ ッ ク周期の 1256

その他の考察点

固定位相シフ トモードでは 動的位相シフ ト制御入力をグランドに接続する必要があ り ます この接続

は DCM Wizard では自動的に行われます

DCM Wizard

固定位相シフ トモードを使用する場合は図 32 に示すよ うにDCM Wizard の [General Setup] ダイアログ ウ ィンド ウに表示される Phase Shift で [Fixed] をク リ ッ ク して ください これによって CLKOUT_PHASE_SHIFT 属性が FIXED に設定されます

[Phase Shift Value] を入力しますが この値は 上述した範囲内にある整数でなければなり ません これによってPHASE_SHIFT 属性値が設定されます DCM Wizard は位相シフ ト値が指定範囲内であるかを確認します

動的ファイン位相シフ ト

動的ファ イン位相シフ ト モードでは 固定ファ イン位相シフ ト モード と同様に 初期スキューまたは初期位相シフ トがコンフ ィギュレーシ ョ ン中に PHASE_SHIFT 属性によって制御されます ただし動的シフ ト モードの場合 DCM の LOCKED 入力が High になった後に 動的ファ イン位相シフ ト制御入力 PSEN PSCLK および PSINCDEC を使用して FPGA アプリ ケーシ ョ ンで現在の位相シフ ト値を修正できます

動作

図 33 に示すよ うに位相シフ ト制御入力を使用し現在の位相シフ ト値を修正します すべての動的位相シフ トは PSCLK の立ち上がりエッジに同期して行われ 有効な位相シフ トは PSEN イネーブル入

図 32 固定ファイン位相モードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

Fixed

x462_32_061803

PHASE_SHIFTLIMITS 255plusmn=

TPhaseShiftPHASE_SHIFT

256--------------------------------------------⎝ ⎠

⎛ ⎞ TCLKINbull=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 45

R

力を正確に 1 PSCLK ク ロ ッ ク周期間アサートするこ とによって開始します PSEN を 1 ク ロ ッ ク周期よ り長くアサートする場合には 適切に位相シフ ト を行う こ とができない可能性があ り ます

PSINCDEC の値は制御入力の増減を指定し 位相シフ トの方向を決定します PSINCDEC を High に設定する と 動的位相シフ ト値が増加し Low に設定する とその値は減少します

実際の位相シフ ト が行われる タ イ ミ ングはさ まざまであ り DCM で PSCLK ク ロ ッ クの 1 周期間PSDONE 出力が High にアサート された時に完了します PSEN がイネーブルであ り PSDONE がアサート されるまでの間 DCM 出力クロ ッ クは 初期位相シフ ト値から新しい位相シフ ト値まで 1 ビットずつスライ ド します シフ トが行われている間 DCM は入力クロ ッ クに対してロ ッ ク状態 つま りLOCKED 出力がアサート された状態を維持します

PSDONE がアサート されたと き またはアサート後に 次の位相シフ ト処理が開始されます

動的ファ イン位相シフ ト モードを使用する場合は CLKOUT_PHASE_SHIFT 属性を VARIABLE に設定し FPGA コンフ ィギュレーシ ョ ン後に PHASE_SHIFT 属性値によって 位相シフ トの初期位置を設定できます DCM の LOCKED 出力が High になる と FPGA アプリ ケーシ ョ ンでは DCM 出力クロ ッ クにおけるスキュー または位相シフ ト を動的に修正できます また DCM がリセッ ト された場合は PHASE_SHIFT 値は初期設定値に戻り ます

図 33 動的ファイン位相シフ ト制御インターフェイス

PSINCDEC

PSEN

PSCLK

PSDONE

0 = 1 =

STATUS[0](

)

PSDONE

If phase shift incremented ordecremented to limit valueSTATUS[0] stays High until newoperation shifts away from limit

x462_33_062403

46 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

動的ファイン位相シフ ト範囲

PHASE_SHIFT と同様に 動的位相シフ トに対しても位相シフ ト範囲の制限があ り ます 図 34 を参照して ください また その範囲は SHIFT_DELAY_RATIO 等式で示したよ うにFINE_SHIFT_RANGE 対入力クロ ッ ク周期の比率によって決定されます

SHIFT_DELAY_RATIO lt 2

指定された FINE_SHIFT_RANGE 値がクロ ッ ク周期の 2 倍よ り小さい場合 (SHIFT_DELAY_RATIOlt 2)最大動的位相シフ ト値は最大遅延タップ値である FINE_SHIFT_RANGE によって決定されますSHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト範囲は 等式 6 によって決定されます

等式 6

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 動的位相シフ ト値の範囲は plusmn96 とな り ます

図 34 動的位相シフ ト制御

Clock Outputs

PHASE_SHIFT DCM LOCKED

RESET

CLKIN

0Fixed Phase Shift

- LimitFixed Phase Shift+ Limit

PSEN

PSINCDEC

PSCLK

PSDONE

STATUS[0]

0

Dynamic Phase Shift- Limit

Dynamic Phase Shift+ Limit

Increment PhaseShift Value

Decrement PhaseShift Value

Enable

IncrementDecrement

Phase Shift Clock

Phase Shift Done

Variable PhaseShift Overflow

DCM LOCKEDFPGA

DCM Variable PhaseShift Control

x462_34_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

DynamicPhaseShiftLIMITS INTEGER 128 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞plusmn=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 47

R

したがって SHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト値は 等式 7 とな り ます PHASE_SHIFT = 1 と して ください

等式 7

SHIFT_DELAY_RATIO ge 2

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 2 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 8

したがって SHIFT_DELAY_RATIO ge 2 の場合の位相シフ ト値は 等式 9 とな り ますPHASE_SHIFT = 1 と して ください

等式 9

制御

45ページの図 33 46ページの図 34 に示すよ うにDCM の動的位相シフ ト制御信号によって FPGAアプリ ケーシ ョ ンは現在の CLKIN 入力と DCM ク ロ ッ ク出力間の関係を修正できます 表 18 に 制御入力 現在の位相と次の位相の関係 遅延タ ップへの影響と制御出力の関係を示します

TPhaseShiftDynamicPhaseShift

DynamicPhaseShiftLIMITS-----------------------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

DynamicPhaseShiftLIMITS 255plusmn=

TPhaseShiftDynamicPhaseShift

256--------------------------------------------------------- TCLKINbull=

表 18 動的位相シフ ト制御 (内部反転がない場合)

PSENPSINC-

DECPSCLK 現在の

位相シフ ト

次の

位相シフ ト遅延ライン PSDONE

STATUS[0](オーバーフロー )

動作

0 X X X 変更なし 変更なし 動的位相シフ トはディ スエーブル

1 0 uarr gt -制限 現在の位相

シフ ト -1現在の位相

シフ ト -11 0 位相シフ トおよびシフ ト ポインタ

のデク リ メン ト

1 0 uarr le -制限およびgt -255

現在の位相

シフ ト -1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがデク

リ メン ト

1 0 uarr -255 -255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

1 1 uarr lt +制限 現在の位相

シフ ト +1現在の位相

シフ ト +11 0 位相シフ トおよびシフ ト ポインタ

のインク リ メ ン ト

1 1 uarr ge+制限およびlt +255

現在の位相

シフ ト +1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがイン

ク リ メ ン ト

1 1 uarr +255 +255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

メモ X = 考慮する必要があ り ません = 不確定であ り 現在のアプリ ケーシ ョ ンの状態によって決定されます1 = PSDONE が 1 PSCLK 周期間 High にアサート されます-制限 = 遅延ラインの最小位置+制限 = 遅延ラインの最大位置PSEN を 1 PSCLK サイ クル間アサート します

48 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

PSEN が Low の場合 動的位相シフ トはディ スエーブルであ り その他のすべての入力は無視されます したがって すべての現在のシフ ト値および遅延ライン位置に変更はあ り ません

遅延ラインがその制限 (デク リ メン トで - 制限 または -255 インク リ メン トで + 制限 または +255)に到っていない場合 FPGA アプリ ケーシ ョ ンでは PSEN を High にアサートする とによって現在の位相シフ ト値を変更でき PSCLK の次の立ち上がりエッジの前に PSINCDEC に対して適切なインク リメン ト デク リ メン ト値を設定できます 位相シフ ト値は指定されたよ うにインク リ メン ト またはデクリ メン ト します 位相シフ トの最後に PSDONE が PSCLK の 1 周期間 High にアサート され 位相シフ ト が完了したこ と を示し ます また 位相シフ ト のオーバーフロー状態が発生していないため

STATUS[0] は Low を維持します

DCM が +255 を超える値にインク リ メン ト された場合 または -255 よ り小さな値にデク リ メン ト された場合には遅延ラインの位置はその限界である +255 または -255 から変更されず位相は変更されません STATUS[0] は High にな り 動的位相シフ トがオーバーフローである こ とを示します こ こで 新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0]が Low に戻り ます

位相シフ トが +255 または -255 には達していませんが 遅延ライン範囲 (表 18 では + 制限および - 制限)を超えている場合には位相は変更されませんがSTATUS[0] が再び High になり ます STATUS[0]出力は 遅延タ ップが遅延ラインの限界に到達したと きを示します ただし FPGA アプリ ケーシ ョ ンでは等式 8 または等式 6 を使用して制限値が算出され求められた遅延ラインの制限値は保証された値とな り ます 特定のデバイスでは 処理電圧または処理温度によって 遅延ラインが長くなる場合があ り ますが これの値はデバイスによって異なるため 保証されていません 遅延ラインの位置ではなく 位相シフ ト値は +255 または -255 に到達するまでインク リ メン ト またはデク リ メン ト を続けます新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0] がLow に戻り ます こ こで位相シフ ト値は遅延ラインにおいて有効な遅延値に対応する値に戻るよ うにインク リ メン ト またはデク リ メン ト されます

DCM Wizard

動的位相シフ トは図 35 に示す DCM Wizard の [General Setup] ダイアログ ウ ィンド ウで設定します動的ファ イン位相シフ ト を有効にするためには 図 35 に示すよ うに [Variable] を選択します 次に初期の [Phase Shift Value] を入力します 初期値は前述した固定ファイン位相シフ トモードの場合と同様に動作します

図 36 に示すよ うに[Variable] モードを選択するこ とによって動的位相シフ ト制御信号である PSENPSINCDEC PSCLK および PSDONE がイネーブルにな り ます これらの制御信号を FPGA アプ リケーシ ョ ンで使用するために入力および出力チェッ ク ボッ クスをオンにして ください またSTATUS

図 35 DCM Wizard での動的ファイン位相シフ トモードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

[Variable]

x462_35_061903

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 49

R

出力のボッ クスをオンにし STATUS[0] 信号をイネーブルにします STATUS[0] は 位相シフ ト値がその最大または最小制限値に達したと きを示します

アプリケーシ ョ ン例

動的位相調整を行う場合の動的位相シフ ト機能については 次の リ ンクからアプ リ ケーシ ョ ン ノー トXAPP268 を参照してください

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

クロック逓倍クロック分周周波数合成

DCM アプリ ケーシ ョ ンのもっと も使用される機能の 1 つと して 新しいク ロ ッ ク周波数を柔軟に生成できる機能があ り ます 次に説明するよ うにSpartan-3 DCM は 3 つの独立した周波数合成機能を持ちます図 37 および表 19 を参照してください アプリ ケーシ ョ ンでは これらの機能の 1 つを使用する場合 またはすべてを同時に使用する場合があ り ます 次に 各機能の詳細について説明します

1 2 逓倍クロ ッ ク (CLK2X CLK2X180) は 入力クロ ッ クの周波数を 2 倍にします

2 ク ロ ッ ク分周 (CLKDV) は 入力クロ ッ ク周波数を一定の分周値を使用して分周します

3 周波数合成回路 (CLKFX CLKFX180) は 入力クロ ッ ク周波数から新しい周波数を生成します

図 36 DCM Wizard での動的位相シフ ト制御出力の選択

LOCKEDSTATUS

PSDONE

PSENPSINCDECPSCLK

STATUS[0] STATUS

x462_36_061903

図 37 クロック合成オプシ ョ ン

CLKIN CLK0

CLKFB

DCM

CLKFX

CLKFX180

Frequency Synthesizer

F = FCLKIN CLKFX_MULTIPLY

CLKFX_DIVIDE

CLKDV

Clock Divider

F =FCLKIN

CLKDV_DIVIDE

CLK2X

CLK2X180

F = 2 FCLKIN Clock Doubler

ClockDistribution

Delay

CLK0or

CLK2X

Clock Feedback LoopCLK0 CLK2X CLK2X180 CLKDV CLKFB

CLK0

CLKFXCLKFX180

50

DLL_FREQUENCY_MODE=LOW50

50

Deskewed ClockF = FCLKIN

DUTY_CYCLE_CORRECTION=TRUE50

x462_37_062203

50 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

CLKDV 以外のすべての周波数合成出力は 5050 デューティ サイ クルを持ちます 表 23 に示すよ うに高周波数で分周値が整数の場合通常 CLKDV は 50 のデューティ サイクルを持ちます また 2逓倍クロ ッ ク (CLK2X CLK2X180) 回路は高周波数では使用できません

CLKFX および CLKFX180 以外のすべての DCM ク ロ ッ ク出力はDCM の 遅延ロッ ク ループ (DLL)ユニッ トで生成され CLKFB ピンへのクロ ッ ク フ ィードバッ クが必要になり ます DCM の デジタル周波数合成 (DFS) ユニッ トはCLKFX および CLKFX180 ク ロ ッ ク出力を生成します アプリ ケーシ ョンで CLKFX 出力または CLKFX180 出力のみが使用される場合にはフ ィードバッ ク パスを削除できDCM の動作範囲が広くな り ます 周波数合成回路は DCM 内部に CLKIN に基づいたフ ィードバック パスを持ちます

ク ロ ッ ク フ ィードバッ クを使用した場合 すべての出力クロ ッ クの位相が調整されます また 出力のいくつかは分周クロ ッ クであるためすべての DCM 出力がクロ ッ ク エッジで一致するよ うに調整されるこ とはまれであるこ とがわかり ます たとえば CLKDV 出力は CLKDV_DIVID の各サイクルごとに CLKIN および CLK0 に対して調整されCLK2X 出力は CLK0 のサイクル 1 つおきに この信号に対して調整されます またCLKFX 出力はCLKIN の CLKFX_DIVIDE サイクルごとおよび CLKFBの CLKFX_MULTIPLY サイクルごとに CLKIN に位相調整されます

周波数合成アプリケーシ ョ ン

周波数合成を使用するアプリ ケーシ ョ ンは ほぼ無制限に考えられますが 次にいくつかのアプリ ケー

シ ョ ン例を示します

bull ボード上で利用可能なクロ ッ クを使用している FPGA および外部ロジッ クに対して完全に新しいクロ ッ ク周波数を生成する

bull 低速の外部クロ ッ ク ソースから高周波数の内部クロ ッ クを生成し システムの EMI を低減する

bull 図 38 に示すよ うに高速シ リ アルデータ ク ロ ッ クを分周しFPGA 内部でデータの並行処理を行う

bull 同様に 図 38 に示すよ うに 高速シ リアル データ フォーマッ トに変換する前に 並行で動作するデータ ク ロ ッ クの周波数を逓倍する

bull 適切な速度の機能をインプリ メン トする場合に 入力クロ ッ クを逓倍し 内部ロジッ クをクロ ッ ク

アップするこ とによって 使用する リ ソースを削減する

表 19 DCM 周波数合成オプシ ョ ン

機能 DCM 出力 周波数DCM の機能ユニッ ト

フ ィードバック50 の

デューティ サイクル

スキュー調整

クロ ッ ク

CLK0 DLL 必要 DUTY_CYCLE_CORRECTION = TRUE の場合に 50 です

2 逓倍クロ ッ ク CLK2XCLK2X180

DLL 必要 常に 50 です

分周クロ ッ ク CLKDV DLL 必要 高周波数モードで分周値が

整数以外の場合を除いて常

に 50 です

周波数合成 CLKFXCLKFX180

DFS オプシ ョ ン フ ィードバッ クに

よって ク ロ ッ ク

入力周波数範囲は

広くなるこ とは

あ り ません

常に 50 です

FCLKIN

2 FCLKINbull

FCLKINCLKDV_DIVIDE---------------------------------------------------

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE------------------------------------------------------------⎝ ⎠

⎛ ⎞bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 51

R

入力クロックおよび出力クロックの周波数条件

周波数合成を行う場合の入力クロ ッ クおよび出力クロ ッ クの周波数条件は DCM で使用されるク ロ ック出力によって決定されます たとえば CLKFX 出力および CLKFX180 出力は DCM のデジタル周波数合成 (DFS) ユニッ トのみを使用し その他のすべての出力は遅延ロッ ク ループ (DLL) ユニッ ト を使用します DLL における周波数の制限は DFS よ り も厳しいため DFS のみを使用する場合の方が周波数の動作範囲は広くな り ますDFS および DLL の両方を使用する場合アプリ ケーシ ョ ンは DLLの周波数範囲によって制限されます

また DLL および DFS は 低周波数モード と高周波数モードの両方で動作可能であるため モード設定によっても有効な周波数範囲が変動します

DCM デザインが有効であるためには CLKIN 周波数が 『Spartan-3 データ シート 』 モジュール 3 に記載されている動作範囲内である必要があ り 使用されているすべての出力クロ ッ クの周波数もそれぞれ

指定された範囲内でなければなり ません

図 39 に クロ ッ ク入力およびクロ ッ ク出力と対応する周波数範囲を示します ただし こ こで示すのは低周波数モードの場合のみです データ シートに記載されている仕様名は影付きのボッ クス内に示しています また 表 20 に DCM アプリ ケーシ ョ ンの例および周波数条件を示します

図 38 周波数合成アプリケーシ ョ ンの一般的な例

DCM DCM

F

n-bitswide

Fn

F F m

m-bitswide

F F

Overclockedtime-shared logic

DCM

F

F F x

High-speed serial datadown-converted toslower parallel data

Slower parallel dataup-converted to high-speed serial data

FPGA

x462_38_070903

52 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

2 逓倍クロック (CLK2X CLK2X180)表 21 に示すよ うに 2 逓倍クロ ッ ク回路によって CLKIN 入力の周波数は 2 倍になり ます この 2 逓倍クロ ッ ク回路は DLL 機能ユニッ トの一部であ り CLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します 2 逓倍クロ ッ ク回路からの出力は CLK2X および CLK2X180 であ り これらの出力のデューテ ィ サイ クルは常に 50 です また これらの周波数は同一ですがCLK2X180 は CLK2X を 180deg位相シフ ト したものであ り 基本的に CLK2X 出力を反転したものになり ます 高性能のデュアル データ レート (DDR) アプリ ケーシ ョ ンまたはクロ ッ ク転送アプリ ケーシ ョ ンでは 両方の位相を使用するこ とが不可欠です

CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE 属性が LOW に設定されている場合のみに使用できます アプリ ケーシ ョ ンにおける必要性に応じてオプシ ョ ンの 2 分周機能を使用しCLKIN 入力周波数を低下させてください ( 「アドバンス ド オプシ ョ ン」 を参照)

図 39 入力クロックおよび出力クロックの周波数条件 (低周波数モード )

DFS(CLKIN_FREQ_FX_MINMAX)

DLL (Low-Frequency Mode)(CLKIN_FREQ_DLL_LF_MINMAX)

~1 MHz ~326 MHz

~24 MHz ~180 MHzFCLKIN

DFS (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~24 MHz ~200 MHz

DLL CLKDV (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~15 MHz ~120 MHz

DLL CLK2X (Low-Frequency Mode)(CLKOUT_FREQ_2X_LF_MINMAX)

~48 MHz ~326 MHz

FCLKFXFCLKFX180

FCLKDV

FCLK2XFCLK2X180

x462_39_070903

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 20 DCM 周波数条件の例

入力周波数 出力周波数 解説

12 MHz 128 MHz 1 つの DCM のみを使用する場合には条件を満たしません FCLKIN は DFS の条件を満たす範囲内ですが FCLKFX は最低 24MHz 出力周波数が必要です

12 MHz 324 MHz DFS を使用する DCM で条件を満たします CLKFX_MULTIPLY=27 と設定してくださいFCLKFX は DFS 出力周波数範囲内です

25 MHz 25 MHz30 MHz

DFS および DLL を使用する DCM で条件を満たします CLKDV 出力を 25MHz 信号に使用しCLKDV_DIVIDE=10 と設定してください また CLKFX 出力を 30MHz 信号に使用しCLKFX_MULTIPLY=6 および CLKFX_DIVIDE=5 と設定してください すべての入力周波数および出力周波数は適切な範囲内です

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 53

R

表 21 2 逓倍クロック回路のまとめ

DCM 出力 CLK2XCLK2X180

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク 必要です

50 デューティ サイ クル出力 はい

制御属性

DLL_FREQUENCY_MODE CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE = LOW の場合にのみ有効です

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます 2 逓倍クロ ッ クの出力は 高周波数モードでは使用できませんが ほかの DCM ク ロ ッ ク出力に必要となる場合があ り ます

CLK2XCLK2X180

CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

2 FCLKINbull

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (~24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (~48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~326 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_2X_LF_MIN (48 MHz)

CLKOUT_FREQ_2X_LF_MAX (~325 MHz)

HIGH 設定不可 設定不可

54 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

クロック分周 (CLKDV)表 22 に概要を示すクロ ッ ク分周ユニッ トは デザインに設定した CLKDV_DIVIDE 属性の値を使用し CLKIN 入力の周波数を分周します ク ロ ッ ク分周ユニッ ト は DLL 機能ユニッ ト の一部であ りCLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します

表 22 クロック分周回路のまとめ

DCM 出力 CLKDV

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク DCM からの CLK0 出力または CLK2X 出力を使用する場合に必要です

50 デューティ サイ クル出力 はい ただし DLL_FREQUENCY_MODE=HIGH および CLKDV_DIVIDE が整数値ではない場合を除きます

制御属性

DLL_FREQUENCY_MODE CLKDV は両モードで使用できます 分周値によっては 出力のデューティ サイ クルに影響を与える場合があ り ます ( 「CLKDV ク ロ ッ ク調整」 を参照してください)

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 有効な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 であ り 整数値の場合 よ り短時間で DLL はロッ ク状態になり ます また 整数値を設定する場合には出力ジッ タが低くな り ます

周波数制約

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

CLKDV CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

FCLKINCLKDV_DIVIDE--------------------------------------------------

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~325 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_DV_LF_MIN (15 MHz)

CLKOUT_FREQ_DV_LF_MAX (~120 MHz)

HIGH CLKOUT_FREQ_DV_HF_MIN (30 MHz)

CLKOUT_FREQ_DV_HF_MAX (~240 MHz)

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 55

R

CLKDV クロック調整

DLL_FREQUENCY_MODE 属性が High であ りCLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 になり ます 表 23 に CLKDV のデューティ サイクルを示します Spartan-3 DCM では CLKIN のデューティ サイクルが 6040 (または 4060) 以上である必要があ り高周波数モードの場合に 15 で分周された CLKDV 出力は次にカスケード接続された DCM へクロ ッ ク入力するこ とはできません

CLKDV のジッ タは 周波数モードおよび属性値が整数か 整数ではないかによって決定されます

CLKDV_DIVIDE 属性に整数値を設定するこ とによって 出力ジッ タが半分になり DLL がロ ッ ク状態になるために要する時間も短縮されます

DCM Wizard

ク ロ ッ ク分周は DCM Wizard の[General Setup]ウ ィ ン ド ウで設定し ます 図 40a に示すよ う にCLKDV 出力のチェッ ク ボッ クスをオンにし 次に図 40b に示すよ うに ド ロ ップ ダウン リ ス トから[Divide by Value] を選択します

表 23 CLKDV デューティ サイクル (DLL_FREQUENCY_MODE=HIGH の場合)

CLKDV_DIVIDE 属性 デューティ サイクル High 時間総サイクル

整数 50000 12

15 33333 13

25 40000 25

35 42857 37

45 44444 49

55 45454 511

65 46154 613

75 46667 715

表 24 CLKDV 出力ジッ タ

CLKDV_DIVIDE CLKDV 出力周期ジッ タ

整数値 CLKOUT_PER_JITT_DV1 (plusmn~150 ps)

整数以外の値 CLKOUT_PER_JITT_DV2 (plusmn~300 ps)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

a CLKDV 出力のチェ ック ボックスをオン b ドロップ ダウン リス トから [Divide by Value を選択]

図 40 DCM Wizard での分周クロック設定

CLKDV

x462_40a_0619032

Divide By Value

x462_40b_061903

56 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

周波数合成回路 (CLKFX CLKFX180)周波数合成回路を使用するこ とによって 入力周波数の逓倍 分周 またはその両方をもっと も柔軟に

行う こ とができます 表 25 に示すよ うに 2 つの周波数合成出力は CLKFX および CLKFX180 ですCLKFX180 出力は CLKFX と同一の周波数を持ちますがCLKFX を 180degまたは 12 ク ロ ッ ク周期位相シフ ト させた ものです これらの周波数合成出力のデューテ ィ サイ クルは 50 であ るためCLKFX180 は CLKFX の反転クロ ッ クのよ うに見えます

表 25 にある等式が示すよ うに設計段階で 2 つの属性を使用し合成出力周波数を制御します CLKINク ロ ッ ク入力は CLKFX_MULTIPLY が分子 CLKDV_DIVIDE が分母である比率を使用して逓倍されます たとえば 75MHz CLKIN 入力を使用して 155MHz の出力を生成するためには 周波数合成回路では 3115 の比率で CLKIN を逓倍します これは CLKIN を始めに 31 倍し 次に 15 で割ることではあ り ませんCLKIN を 31 倍するこ とによって出力周波数は2325GHz とな りSpartan-3 DCMの周波数範囲を越えるこ とにな り ます

68 を 34 と約分するよ うに 逓倍値および分周値はもっと も簡潔な値にする必要があ り ます このことによって ロ ッ クするために必要な時間が短縮します

周波数合成には 常にク ロ ッ ク フ ィードバッ クが必要ですが DFS には CLKIN を基準と した内部フ ィードバッ ク ループがあるため DLL を使用せずに DFS を使用する場合には CLKFB に別のループは必要あ り ません

また CLKFB 出力は CLKIN の CLKFX_DIVIDE サイ クルごと および CLKFB の CLKFX_MULTIPLY サイクルごとに CLKIN に対して位相調整されます たとえばCLKFX_MULTIPLY = 3 であ りCLKFX_DIVIDE = 5 の場合CLKFX 出力の位相は CLKIN の各 5 サイクルごと および CLKFB の 3 サイクルごとに CLKIN 入力に対して位相調整されます DCM で LOCKED 出力がアサート される と DFS は CLKIN 入力の立ち上がりエッジごとに再同期し ほぼ完璧に位相調整されます

表 25 周波数合成回路のまとめ

DCM 出力 CLKFX

CLKFX180 (CLKFX を 180deg位相シフ ト した場合と同一)

出力周波数

DCM の機能ユニッ ト デジタル周波数合成 (DFS)

フ ィードバッ ク CLKIN を基準にして内部フ ィードバッ クを使用するため 必要あ り ません 遅延ロッ ク ループ (DLL) を使用する場合は オプシ ョ ンと して CLKFB 入力を使用できます

50 デューティ サイ クル出力 常に 50 です

制御属性

DFS_FREQUENCY_MODE CLKIN CLKFX 出力 CLKFX180 出力の周波数条件に影響します

DLL_FREQUENCY_MODE アプリ ケーシ ョ ンで DLL 出力が使用される場合に 周波数合成回路のみに影響を与えます また よ り厳しい DLL の条件に適用するよ うに CLKIN 周波数を低下させる可能性があ り ます CLKFX 出力または CLKFX180 出力が使用されている場合 周波数条件は DFS_FREQUENCY_MODE によってのみ指定されます

CLKFX_MULTIPLY 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 2 から 32 であ りデフォルトは 4 です

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 1 から 32 であ りデフォルトは 1 です

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 57

R

DCM Wizard

周波数合成を使用する場合図 41 に示すよ うに DCM Wizard の[General Setup]ダイアログ ボッ クスで CLKFX または CLKFX180 あるいはその両方のチェッ ク ボッ クスをオンにしてください

CLKFX 出力または CLKFX180 出力のみを使用する場合はオプシ ョ ンと して DLL ク ロ ッ ク出力およびフ ィードバッ クをディ スエーブルにするこ とによって 周波数範囲を広げるこ とができます

bull デフォルトでは CLK0 出力は常にオンになっていますが CLKFX または CLKFX180 のみを使用する場合は CLK0 のチェッ ク ボッ クスをオフにしてください

bull 図 42 に示すよ うに DCM フ ィードバッ クをディ スエーブルにする場合は [None] を選択してください フ ィードバッ クを使用しない場合はCLKFX および CLKFX180 の周波数範囲は高域と低域の両方で広くな り ます

周波数制約

CLKIN アプリ ケーシ ョ ンで 遅延ロッ ク ループ (DLL) からの出力が使用されていない場合CLKIN の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます DLL が使用されている場合は DLL のクロ ッ ク周波数条件はよ り厳し くな り ます

CLKFXCLKFX180

CLKIN 出力および CLKFX180 出力の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 25 周波数合成回路のまとめ (Continued)

最小周波数 最大周波数

CLKIN_FREQ_FX_MIN (~10 MHz) CLKIN_FREQ_FX_MAX (~326 MHz)

DFS_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_FX_LF_MIN(~24 MHz)

CLKIN_FREQ_FX_LF_MAX(~210 MHz)

HIGH CLKIN_FREQ_FX_HF_MIN(~210 MHz)

CLKIN_FREQ_FX_HF_MAX(~325 MHz)

図 41 DCM Wizard での Frequency Synthesizer 設定

CLK0

CLKFXCLKFX180

CLKFXCLKFX180

CLKFX CLKFX180

DCM

x462_41_070903

58 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロックのフォワード ミ ラー リバッファR

DCM Wizard のクロ ッ ク周波数合成で示したよ うに必要は出力周波数または逓倍値と分周値を入力します

クロックのフォワード ミ ラーリバッファ

DCM は高度なクロ ッ ク制御機能を持ちさ らに Spartan-3 IO ピンは多様な IO 電圧標準をサポートするため 通常 Spartan-3 FPGA ではクロ ッ ク信号のリバッファ またはミ ラーを行い 入力クロ ッ クの電圧を変更ために使用されます 同様に DCM の入力クロ ッ ク条件を変更し デューティ サイクルを50 に調整します

図 20 に DCM の入力クロ ッ クを 50 デューティ サイ クルに調整し その周波数で CLK0 出力を使用してクロ ッ クをフォワードする または DCM CLK2X を使用して周波数を 2 倍にする DCM の例を示しました DCM が LOCKED 出力をアサートする と 入力クロ ッ クおよび出力クロ ッ クは位相調整されます CLKFB へのフ ィードバッ ク パスは外部のクロ ッ ク フ ィードバッ ク地点でクロ ッ ク分散遅延を確認し 削除します

出力クロ ッ クのデューティ サイクルが 50 であるこ とは重要であるため出力 IO 標準が 50 デューティ サイ クルを維持できるために十分な速度でスイ ッチできる こ と を確認して ください デューティサイ クルの動作は 出力信号でのシ ミ ュレーシ ョ ンを行う こ とによって検証します IBIS シ ミ ュレーシ ョ ンで確認できるよ うに IO 標準には立ち上がり と立ち下がりが対称的ではなく デューティ サイクルにずれが発生しているものもあ り ます HSTL SSTL および LVCMOS の DCI バージ ョ ンの IO標準の立ち上がりおよび立ち下がりがよ り対称的です

100 MHz を越える場合のデューテ ィ サイ クルを確実に 50 にするためには CLKIN のソースのデューティ サイ クルが 50 の場合にも DCM のデューティ サイクル調整機能を使用する必要があ ります したがって ク ロ ッ ク フォワードに CLK0 CLK90 CLK180 または CLK270 を使用する場合はDUTY_CYCLE_CORRECTION 属性を TRUE に設定してください 通常その他の DCM ク ロ ック出力は常に 50 のデューティ サイ クルに調整されます ( 「ク ロ ッ ク調整」 を参照して ください)

200 MHz 以上で動作する場合のデューティ サイ クルを最適にするためには図 43 に示すよ うな回路を使用して ください こ こでは DCM からの CLKx 出力および CLKx180 出力がデュアル データ レート (DDR) 出力フ リ ップフロ ップの C0 入力および C1 入力を駆動するよ うに使用します DDR フ リ ップフロ ップの D0 入力を VCC に接続し D1 入力を GND に接続します また DCM の各出力は個々のグローバル バッファを駆動しデューティ サイクルのずれを最小にします 高周波数の場合に 1つのク ロ ッ クのみを分散し DDR フ リ ップフロ ップ内部でローカル位相シフ ト を行う と 約 150ps のデューティ サイクルのずれが発生するため このよ うな回路設計は推奨していません

周波数が 250 MHz 以上の場合には分散クロ ッ クに LVDS のよ うな差動信号標準を使用します 図 43にCLKIN ク ロ ッ ク入力およびクロ ッ ク出力がと もに VLDS を使用する例を示します さ らにク ロ ック フ ィードバッ ク パスも LVDS を使用します パフォーマンスを最適にするためには ク ロ ッ ク入力およびクロ ッ ク フ ィードバッ ク パスにグローバル バッファ入力 (IBUFGDS) を使用する必要があ り ます これによってデバイスの一辺にあるすべてのグローバル バッファ入力を使用するこ とになり ますが 高周波数でのクロ ッ ク フォワードを最適に行う こ とができます

図 42 フ ィードバックに [None] を選択し 周波数範囲を拡大

SourceFeedback

Internal External None

Value 1X 2X

If only using the CLKFX or CLKFX180clock ouputs optionally click None to extend the DCM frequency limits

x462_42_070903

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 59

R

クロック ジッ タおよび位相ノイズ

もっと も高価で高精度なものの場合においてもすべてのクロ ッ クにはクロ ッ ク ジッタまたは位相ノイズがあ り ます こ こでは Spartan-3 デジタル ク ロ ッ ク マネージャに固有のジッ タ特性について説明します 低周波数 たとえば 20 MHz で動作する場合は 一般に ジッ タの影響は無視できますが200 MHz のよ う な高周波数で動作する場合には 特にデュアル データ レート (DDR) アプリ ケーシ ョンにおいて ジッ タはデザインの問題に関連する要素となり ます ク ロ ッ ク ジッタによって アクティブ ク ロ ッ ク エッジ間で実際に有効な時間が削減されるため FPGA アプ リ ケーシ ョ ンで使用できる時間が制限されます

クロック ジッ タ とは図 44 に示すよ うにク ロ ッ ク ジッタ とは理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジの相違です 太線は 理想的なクロ ッ ク信号を表します 各クロ ッ ク エッジでは 理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジ間に若干のずれがあ り このずれの最大値と最小値の差異をピーク ジッ タ と呼びます ジッ タは アクテ ィブなク ロ ッ ク エッジのみに関係します たとえば シングル データ レート(SDR) アプリ ケーシ ョ ンの場合データは各立ち上がりエッジでクロ ッ ク入力され この場合のジッタは総クロ ッ ク周期から引く こ とによって求められます 一方 デュアル データ レート (DDR) の場合データは各クロ ッ ク周期の始ま り および 12 ク ロ ッ ク周期の点でクロ ッ ク入力されるため ジッ タは12 ク ロ ッ ク周期ごとに影響を与えます

図 43 高周波数 (250 MHz 以上) での LVDS クロック フォワード回路

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKx180

BUFG

BUFG

VCC

GND

OBUFDS

CLKIN

CLKFB

IBUFGDS

IBUFGDS

External Clock Feedback (LVDS)

FPGA

x462_43_061903

図 44 クロック信号におけるジッ タ

x462_44_061903

60 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

クロック ジッ タの原因ク ロ ッ ク ジッタはすべてのシステムに存在しそれを避けるこ とはできません ク ロ ッ ク ジッタの原因は システム内のノ イズのソース または不完全な信号であ り 実際 ジッ タは時間軸上における ノ イ

ズである と言えます たとえば 入力クロ ッ ク ソースには ク リ スタルからの任意の温度振動ノ イズまたは機械的な振動ノ イズによる固有のジッタ特性があ り ます 多くの同時スイ ッチ出力 (SSO) は回路基板にノ イズを追加するため 内部スイ ッチしきい値がわずかに変更し ジッ タが増加します 同様に適切に設計されていない電源供給または不十分なデカップリ ングによってもジッ タは増加します

その他のジッタの原因と しては近接した信号のクロス トーク不適切な終端 グランド バウンス電磁干渉 (EMI) などが考えられます

このアプ リ ケーシ ョ ン ノートでは Spartan-3 デジタル ク ロ ッ ク マネージャ (DCM) および FPGA 内部でのジッタ全般について説明します

クロック ジッ タ特性の理解ク ロ ッ ク ジッタの特性はさまざまな方法で定められ次のよ うにいろいろな方法でその特徴を捉えることができます

サイクル間ジッ タ

隣接サイクル ジッタ と も呼ばれるサイクル間ジッタは 図 45 に示すよ うに 1 つのクロ ッ ク サイクルと次のクロ ッ ク サイクル間でのクロ ッ ク周期の最大差異です この例ではあるクロ ッ ク サイクルと次のクロ ッ ク サイクル間の最大差異は +100 ps および -100 ps または plusmn100 ps です数百万クロ ッ ク サイクル間の計測を行う場合にはクロ ッ ク周期の変動の絶対値が大き くなる可能性があ り ますがク ロ ッ

ク サイクル間の変動が plusmn100 ps よ り大き くなるこ とはあ り ません

サイクル間ジッタは ク ロ ッ ク出力またはオシレータの特性を測定するために重要ですが アプ リ ケー

シ ョ ンのタイ ミ ング解析には有効ではあ り ません

周期ジッ タ

周期ジッタは 数百万クロ ッ ク サイクル間で計測したサイ クル間ジッタの合計です ピーク ジッ タは理想的なクロ ッ ク移行時間と比較した場合の最短および最小移行時間を示します

デジタル ク ロ ッ ク マネージャの周期ジッ タは一定ではく ピーク間ジッタ と して表されます 図 46 に示すよ うに 理論的には クロ ッ ク移行位置は理想的なクロ ッ ク位置を中心とする確率的な分散 また

はヒ ス ト グラムですが実際の分散はガウス分布ではなく二峰性分布の場合があ り ます 実際のクロ ック移行のほとんどは理想的なクロ ッ ク位置付近で起こ り ますが数百万クロ ッ ク サイクルにおける測定の結果 望ましい位置から離れた地点で起こるクロ ッ ク移行もあ り ます

理想的な位置からの統計的な距離はσ (シグマ) と呼ばれる標準偏差で測定されます DCM はすべてデジタルで機能するデザインであるため 非常に安定しており ザイ リ ンクスでは ジッ タの偏差を plusmn7σまたはピーク間ジッ タを 14σ と定めています 判断基準と して 偏差が plusmn7σ である とい う こ とは ジッタの 9999999999974 が指定されたワース ト ケース ジッ タよ り小さい値であるこ とを保証していま

図 45 サイクル間ジッ タ例

T0 T1 = T0 + 100 ps T2 = T1 - 100 ps

x462_45_062203

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 61

R

す また 14σ ピーク間ジッ タ plusmn7σ ジッタ偏差は 最大ビッ ト エラー レート (BER) が 128 x 10-12 という こ とを意味します

ユニッ ト インターバル(UI)

ジッタの仕様を単位間隔 (UI) の割合と して指定する別の方法もあ り ます 1 UI は 周波数に関わらず1 ビッ ト時間を表します ク ロ ッ クの立ち上がりエッジ または立ち下がりエッジのいずれかでデータが取り込まれるシングル データ レート (SDR) アプリ ケーシ ョ ンでは1 UI は 1 ク ロ ッ ク周期になり ます 一方 2 倍のクロ ッ ク レートでデータがクロ ッ ク入力されるデュアル データ レート (DDR) アプリケーシ ョ ンでは 1 UI が 12 ク ロ ッ ク周期になり ます

UI で指定されるピーク間ジッタ幅は 総ビッ ト周期時間に対するピーク間ジッタ値の比率です

総ジッ タの計算

『Spartan-3 データ シート 』 には CLKFXCLKFX180 以外の DCMのク ロ ッ ク出力におけるジッ タが記載されてます デジタル周波数合成 (DFS) ジッ タは 逓倍値および分周値に基づいて算出されます

データ シートには DLL からのクロ ッ ク出力 (CLKFX および CLKFX180 を除くすべてのクロ ッ ク出力) に対するワース ト ケース ジッ タが記載されています DLL ではジッ タが削減されないため DLLク ロ ッ ク出力の総ジッタには入力クロ ッ クである CLKIN のジッタおよびデータ シートに記載された値が含まれます

また DFS ク ロ ッ ク出力である CLKFX および CLKFX180 では 入力ク ロ ッ ク ジッ タがある程度削減されるため 算出された出力ジッタが総ジッタにな り ます

図 46 ピーク間周期ジッ タ例

図 47 ユニッ ト インターバルの比率で示された周期ジッ タ

Desired clock period

Measured clock period

Num

ber

of s

ampl

esPeak-to-peak Period Jitter

(14σ)

+7σ-7σ

x462_46_061903

Bit Period

Unit Interval (UI)

x462_47_061903

62 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

DLL 出力ジッ タへの入力ジッ タの加算

入力ジッタに DLL 出力ジッタを加える場合ノ イズ計算と同様に 2 乗平均平方根 (RMS) 計算を使用します

ピーク間

等式 10

ピーク間偏差

等式 11

定義

入力クロ ッ クのピーク間周期ジッ タが 150 ps (plusmn75 ps) であ り このク ロ ッ クのデューティ サイ クルがDCM の CLK0 出力と同一の周波数を使用して修正される場合について考えます

この場合 JITTERINPUT = 150 ps であ り JITTERSPEC の値は 『Spartan-3 データ シート 』 で指定されている CLKOUT_JITT_PER_0 と呼ばれる値です これは ピーク間で plusmn100 ps または 200 ps である と概算されます

したがって DCM 出力の総ジッタはピーク間で 250 ps または plusmn125 ps です

カスケード接続された DCM のジッ タ計算図 48 に 複数の DCM をカスケード接続し さまざまな出力周波数を生成しているアプ リ ケーシ ョ ンの例を示します この場合のジッタは 次によって決定されます

bull 前のソースからのジッタ

bull 使用されている DCM 出力

データ シートに記載されているよ うにジッ タ特性は各 DCM 出力によってわずかに異なり ます またDFS からの CLKFX 出力および CLKFX180 出力は 入力ジッタをある程度削減し ジッ タ値は DCMWizard で算出されます ( 「ク ロ ッ ク周波数合成」 参照して ください)

JITTERINPUT = FPGA のクロ ッ ク入力ピンで測定された入力周期ジッタ

JITTERSPEC = 『Spartan-3 データ シート 』 に記載されている適切な出力ポートに対する DLL ク ロ ッ ク出力周期ジッタ

JITTERTOTAL = 予想される総出力周期ジッタ

JITTERTOTAL JITTERINPUT( )2 JITTERSPEC( )

2+=

JITTERTOTALJITTERINPUT( )

2 JITTERSPEC( )2+

2--------------------------------------------------------------------------------------------------------plusmn=

JITTERTOTAL 150 ps( )2200 ps( )

2+ 250 ps= =

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 63

R

したがって カスケード接続された DCM チェーンの任意の点におけるジッタは前述した 2 つの要因によって決定されます 次の例では 回路上のいくつかの点で総ジッタを計算する方法を示します

例 1 すべての DCM が DLL 出力を使用する場合

この例では 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

こ こでは DCM (A) が CLK2X 出力を使用する場合について考えます また DCM 出力ジッ タに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_2X 値を使用してください この値は 400 ps (plusmn200 ps) と概算されています 等式 10 を使用しク ロ ッ ク (A) の総周期ジッタを計算します

次にDCM (B) で分周値が整数である CLKDV 出力を使用する場合について考えます またDCM 出力ジッタに対して 『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_DV1 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (B) の総周期ジッタを計算します この場合 入力ジッタ DCM (A) からのジッタ DCM (B) からのジッタを考慮する必要があるため RMS 等式は次のよ うになり ます

最後に DCM (C) が DCM (B) からの出力を 90deg位相シフ トする場合について考えます また DCM出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します この場合 入力ジッ タ DCM (A) からのジッ タ DCM (B) からのジッ タDCM (C) からのジッ タを考慮する必要があるため RMS 等式は次のよ うにな り ます

例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合

この例は DFS からの CLKFX 出力または CLKFX180 出力を使用する DCM がある点以外は 例 1 すべての DCM が DLL 出力を使用する場合と同様です

この例では 75MHz 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

例 1 と同様に まず DCM (A) が CLK2X 出力を使用する場合について考えます 出力ジッタは 次に示す等式になり ます

この例ではDCM (A) で生成された 150MHz を使用してDCM (B) で 90MHz 合成クロ ッ クを生成します DCM Wizard ( 「ク ロ ッ ク周波数合成」 を参照して ください) を使用し CLKFX_MULTIPLY=3および CLKFX_DIVIDE=5 と設定します ワース ト ケースの出力周期ジッタは 700 ps とな り ます

図 48 カスケード接続された DCM のジッ タ計算

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

A B C

x462_48_061903

JITTERTOTAL A( ) 150ps( )2400ps( )

2+ 427ps 214psplusmn= = =

JITTERTOTAL B( ) 150ps( )2400ps( )

2300ps( )

2+ + 522ps 261psplusmn= = =

JITTERTOTAL C( ) 150ps( )2 400ps( )2 300ps( )2 300ps( )2+ + + 602ps 301psplusmn= = =

JITTERTOTAL B( ) 700ps 350psplusmn= =

64 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

最後にDCM (C) が DCM (B) からの出力を 90deg位相シフ ト させる場合について考えます DCM 出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用してください この値は 300 ps (plusmn150 ps) と概算されています 次の等式を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します 次の DCM では CLKFX を使用するため 総入力ジッ タは ワース ト ケースで700 ps とな り ます 次の RMS 等式を使用し 出力ジッタを計算します

カスケード接続した DCM を使用する場合の推奨デザイン

DCM をカスケード接続して使用する場合 図 48 に示すよ うに DCM からの LOCKED 出力が次のDCM の RST 入力を制御しているこ とを確認してください カスケード接続した DCM では 1 つ前のDCM で LOCKED 出力がアサート され ク ロ ッ クが安定しているこ とが示されてた後に 入力クロ ックにロ ッ クする必要があ り ます

また DCM をカスケード接続する場合には 最もジッ タの影響を回避する必要のあるク ロ ッ ク出力が最初の DCM に接続されるよ うに DCM チェーンを構成してください

システム パフォーマンスにおけるジッ タの影響ク ロ ッ ク ジッタによっても有効なビッ ト周期が狭くな りシステム パフォーマンスが低下します 次の等式に示すよ うに FPGA アプリ ケーシ ョ ンで使用可能なビッ ト周期は 総ビッ ト周期 TBIT からいくつかの影響を差し引いたものです シングル データ レート (SDR) アプリ ケーシ ョ ンでは ク ロ ッ ク周期とビッ ト周期は一致しますがデュアル データ レート (DDR) アプリ ケーシ ョ ンのビッ ト周期はクロ ッ ク周期の 12 になり ます

定義

総ジッ タがク ロ ッ ク周期からの偏差ではな く正の値に指定されている場合 (たとえば plusmn100 ps ではなく200 ps の場合) 正の値を 2 で割り ます (100 ps) ビッ ト周期は負の偏差によってのみ短くなり 正の偏差によってはビッ ト周期が長くな り さ らにタイ ミ ング スラ ッ クが追加されます

入力クロ ッ ク信号の周波数は 75 MHz であ り ク ロ ッ ク ソースのジッ タは plusmn100 ps です アプリ ケーシ ョ ンは内部で生成された 150 MHz のクロ ッ クの立ち上がりエッジでデータを入力します また 総ビッ ト周期 TBIT は 667 ns です ジッ タの影響を考慮する と 有効なビッ ト周期 TAVAILABLE は

どのよ うになるでし ょ うか

2 逓倍クロ ッ ク回路からの CLK2X 出力によって75MHz ク ロ ッ ク入力から 150MHz ク ロ ッ クが生成されます 『Spartan-3 データ シート 』 の CLKOUT_PER_JITT_2X 仕様による と 2 逓倍クロ ッ ク出力である CLK2X には plusmn~200 ps (概算) のワース ト ケース ジッタがあ り ます 2 乗平均平方根を使用し

TBIT = ビッ ト周期時間

tTOTAL_JITTER = 総クロ ッ ク ジッ タ ク ロ ッ ク入力ジッタに DCM 出力ジッタ またはカスケード接続された DCM のジッタを加算したものです

tDUTY_CYCLE_DISTORTION = デューティ サイ クルのずれ デュアル データ レート (DDR) アプリケーシ ョ ンのみで必要であ り それ以外の場合はゼロです 使用する DCM ク ロ ッ ク出力によって データ シートに記載されている CLKOUT_DUTY_CYCLE_DLL または CLKOUT_DUTY_CYCLE_FX を使用します

JITTERTOTAL C( ) 700ps( )2300ps( )

2+ 762ps 381psplusmn= = =

TAVAILABLE TBIT tTOTAL_JITTERndash tDUTY_CYCLE_DISTORTIONndash=

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 65

R

DCM のジ ッ タplusmn200 ps にク ロ ッ ク ソースのジ ッ タ plusmn100 ps を加算する こ と によ って 総ジ ッ タtTOTAL_JITTER が plusmn0223 ns であるこ とがわかり ます

データはクロ ッ クの立ち上がりエッジでのみ入力されるためデューティ サイクルのずれが影響を与えるこ とはな く tDUTY_CYCLE_DISTORTION = 0 です

結果と して 有効な総クロ ッ ク周期 TAVAILABLE は総ビッ ト周期である 6667 ns から 6444 ns に減少します 結果と して ロジッ クは 150 MHz ではなく 1551831 MHz で動作します

クロック ジッ タを最小限にするための推奨デザイン高性能アプリ ケーシ ョ ンでは ク ロ ッ ク ジッタによって有効なビッ ト周期が短くな り ますシステム全体のクロ ッ ク ジッタを最小限にするためには次の推奨デザインを参考にしてください

適切な電力分散システム設計

電力プレーン デカップ リ ングを含む 電力分散システム (PDS) を適切に設計するこ とによって 安定した電力環境を作成し システム ジッ タを削減できます アプ リ ケーシ ョ ン ノー ト XAPP623 ではPDS の適切な設計にについて説明しています

bull XAPP623 電力分散システム (PDS) デザイン バイパスデカップリ ング キャパシタhttpwwwxilinxcomxappxapp623pdf

適切なプリン ト サーキッ ト ボードの設計

予想される動作周波数範囲およびアプ リ ケーシ ョ ン環境に適したプ リ ン ト サーキッ ト ボード設計を行ってください

bull WP174 PCB への効果的な FPGA 統合httpwwwxilinxcojppublicationswhitepaperswp_pdfwp174pdf

bull PCB チェッ ク リ ス トhttpsupportxilinxcomxlnxxil_prodcat_productjsptitle=si_pcbcheck

同時スイッチ出力 (SSO) の推奨デザイン

DCM へのク ロ ッ ク入力 または DCM からのク ロ ッ ク出力の信号に関連した問題を回避するために『Spartan-3 データ シート 』 に記載されている同時スイ ッチ出力 (SSO) 仕様に沿っているこ とを確認して ください

また 可能な限り DCM の入力または出力をスイ ッチング回数の多い IO の近くに配置するこ とを避けてください 特に 出力電圧幅が大きい IO または駆動電流が高い IO の場合にはこのこ とが重要です

仮想グランド ピンを DCM 入力および出力接続の近くに配置

さまざまな影響を受けやすく高周波数である DCM の入力または出力では仮想グランド ピンのよ うなユーザー IO ピンを追加して PCB へ別の接続を作成します このよ うな仮想グランド ピンは ジッタの影響を受けやすい DCM 信号に近接する IO パッ ドに配置して ください IO パッ ドは パッケージのピンまたはボール上だけでなく FPGA のダイ レベルでも近接しているこ とを確認して くださいBGA パッケージ上で隣接しているボールは 必ずしも FPGA 上にある隣接したパッ ドに接続する必要はあ り ません このよ うに設計するこ とによって 内部電圧降下が軽減され ジッ タが削減されます

仮想グランドを作成する場合は図 49 に示すよ うに IOB を GND (Low ロジッ ク レベル) を駆動する出力と して設定し その IOB を外部で直接グランド プレーンに接続します

tTOTAL_JITTER 100psplusmn( )2 200psplusmn( )2+ 22360psplusmn 0223nsplusmn= = =

TAVAILABLE 6667ns 0223nsndash 6444ns= =

66 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

VCCAUX 考察

デジタル ク ロ ッ ク マネージャは VCCAUX 入力によって電源が供給されます FPGA への電源供給入力である VCCAUX の過剰ノ イズは DCM の特性 特にジッタ特性を低下させます DCM のパフォーマンスを最適にするために 次に従ってください

1 図 50 に示すよ うに VCCAUX 電源供給 またはグランド上の変動を 1 ms 間で 10 mV よ り小さ くして ください この制限によって DCM は変動に適切に対応して動作します

2 図 50 に示すよ うに 電源供給のノ イズをピーク間で 200 mV 以内にして ください

3 VCCAUX および VCCO が同一の電源プレーンにある場合 すべての VCCAUXVCCO ピンを適切にデカップリ ングまたはバイパスする必要があ り ます ( 「適切な電力分散システム設計」 を参照してください) また 上記の 1 および 2 を維持できない場合 VCCAUX と VCCO を分離して使用してください

4 特に CLK2X 出力は電源シフ ト またはグランド シフ トの影響を受けます したがって すべての IOB および CLB でスイ ッチングがある場合には CLKFX_MULTIPLY =2 および CLKFX_DIVIDE=1 と設定されている CLKFX 出力はよ り よい特性を持つ出力を供給します DFS モードの場合 CLK2X 出力の更新が遅いのに対して CLKFB 迂回回路では 3 入力クロ ッ クごとにタ ップが更新されます

FACTORY_JF 設定の修正

適切に設計され 安定し 適切にデカップリ ングされた電源供給が FPGA 内のクロ ッ ク スキューおよびジッタを低減するためにもっと も有効な方法ですが FACTORY_JF 属性を 0xFFFF に設定することによって 問題の発生しているボード上のジッタを低減できる場合があ り ます FACTORY_JF=FFFF の場合 DCM はおよそ 20 入力クロ ッ クごとにタ ップ設定を更新し 周波数を基にしたデフォルト設定よ り もタ ップ更新の間隔は短くな り ます

図 49 DCM 入力または出力クロック信号への仮想グランド ピンの使用

IBUFG

OBUF

OBUF

To DCMCLKIN Input

Sensitive DCMClock Input

FPGAldquoVirtualrdquoground pin

Direct connectionto PCB groundplane

GND

GND

x462_49_061903

図 50 電圧降下を回避するための VCCAUX 考察

VCCAUXSupply(at FPGA)

dV lt 10 mV

dt lt 1 mS

Keep VCCAUX noiseenvelope to lt 200 mVpeak-to-peak

Avoid sudden changes fromone DC level to anotherKeep dVdt lt 10mVmS x462_50_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 67

R

ただし FACTORY_JF の設定値を大き くするこ とによって DCM では遅延ラインが頻繁に更新されジッ タがわずかに増加する (~30 ps) 可能性もあるため FACTORY_JF のデフォルト設定は最大値ではあ り ません 電源供給が不安定の場合には 発生した位相エラーが増加したジッタよ り大きい場合があり この場合には FACTORY_JF の設定値を大き くするこ とによって デザインのパフォーマンスを向上できます

その他 ビッ トス ト リーム生成の設定

DCM では 次の 2 つのビッ ト ス ト リーム生成 (BitGen) オプシ ョ ンがあ り ます

bull -g lck_cycle このオプシ ョ ンを使用する場合インスタンシエート された DCM で LOCKED 出力がアサート されるまで FPGA のコンフ ィギュレーシ ョ ン スタート アップ シーケンスを遅らせるこ とができます

bull -g DCMShutdown このオプシ ョ ンを使用する場合JTAG ポート を使用した部分再コンフ ィギュレーシ ョ ン または全体の再コンフ ィギュレーシ ョ ンを実行中に コンフ ィギュレーシ ョ ン ロジックに SHUTDOWN コマンドがロード される と DCM ロジッ クがリセッ ト されます

Project Navigator でのビッ トス ト リーム生成オプシ ョ ン

ISE 52i Project Navigator を使用する場合は 図 51 に示すよ うに [Processes for Source] ウ ィンド ウで [Generate Programming File] を右ク リ ッ ク し [Properties] を選択するこ とによってビッ ト ス トリーム生成オプシ ョ ンを設定します

詳細は 「BitGen スイ ッチおよびオプシ ョ ン」 を参照してください

コマンド ライン またはスクリプ ト を使用したビッ トス ト リーム生成オプシ ョ ン

設定可能なオプシ ョ ンを表示するためには 次のコマンドを入力します

bitgen -help spartan3

DCM LOCKED 出力とコンフ ィギュレーシ ョ ン ロジックの設定

DCM の STARTUP_WAIT 属性を使用するこ とによってDCM で LOCKED 出力がアサート されるまで FPGA で DONE 信号がアサート されるを遅らせFPGA のコンフ ィギュレーシ ョ ン スタート アップロジッ クを待たせるこ とができます ただし このためには設計段階で次の二つの設定を行う必要があり ます まず ロ ッ ク状態になってからコンフ ィギュレーシ ョ ンを完了する必要がある各 DCM に対するSTARTUP_WAIT 属性を TRUE に設定します 次に各信号がスタート アップの 6 ク ロ ッ ク サイクルで 図 52 に示すよ うに動作するよ うにビッ ト ス ト リーム生成オプシ ョ ンを変更します デバイスがコンフ ィギュレーシ ョ ン スタート アップ シーケンスを完了するためにはDCM が LOCKED をアサート後に十分なコンフ ィギュレーシ ョ ン ク ロ ッ ク サイ クルが必要です

図 51 Project Navigator でのビッ トス ト リーム生成 (BitGen) オプシ ョ ン

Processes for Current Source

Generate Programming File

Programming File Generation Report

RunRerunRerun AllStopOpen without Updating

Properties

x462_51_061903

68 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他R

A FPGA 内部のグローバル ト ラ イ ステート信号 (GTS_cycle) を開放し すべての IO 信号をイネーブルにします

B GTS_cycle 後に DCM で LOCKED がアサート されるまでスタート アップ ロジッ クが待機するよにサイクルを設定します DCM では クロ ッ ク信号でロ ッ ク状態になる前に ク ロ ッ クおよび可能ならばフ ィードバッ ク信号のよ うな外部入力が必要です

C DCM がロ ッ ク状態になった後 FPGA の内部グローバル書き込みイネーブル (GWE_cycle) 信号をアサート します

D 最後に 内部の DONE 信号をアサート します

図 53 に Project Navigator を使用したオプシ ョ ン設定を示します

スタート アップ位相タイ ミ ングおよび GWE_cycle と DONE_cycle のタイ ミ ングには柔軟性があ り ますがDCM で STARTUP_WAIT 属性を使用する場合は必ず LCK_cycle の前に GTS_cycle がなければなり ません シーケンスがこのよ うになっていない場合にはDCM がロッ クせずコンフ ィギュレーシ ョ ンが完了しません

図 52 DCM LOCKED 出力とスタートアップ ロジックの相互関係

0 1 2 3 4 5 6

DONE_cycle

Start-up CLK

GTS_cycle

GWE_cycle

LCK_cycle

Start-up Cycles

A

B

C

D

x462_52_062403

図 53 BitGen オプシ ョ ン

Process Properties

Startup options

Value

CCLK

6

3

5

4

Default (NoWait)

General Options Configuration Options Readback Options

Property Name

FPGA Startup Clock

Enable Internal Done Pipe

Done (Output Events)

Enable Outputs (Output Events)Release Write Enable (Output Events)Release DLL (Output Events)

Match Cycle (Output Events)

Drive Done Pin High

OK Cancel Default Help

Optionally set GWE_cycle to follow GTS_cycleensuring DCM(s) reset afterIOs activate

LCK_cycle indicates cyclewhere start-up logic waitsfor DCM(s) to assertLOCKED

Done_cycle after LCK_cycle GTS_cycle must occur

before LCK_cycle to enableIO pins

[Startup options]

[OK] x462_53_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 69

R

JTAG を使用した部分再コンフ ィギュレーシ ョ ンまたは全体の再コンフ ィギュレーシ ョ ン中の DCM リセッ ト

も う 1 つのビッ ト ス ト リーム オプシ ョ ンと して SelectMAP を使用した部分再コンフ ィギュレーシ ョン中 または JTAG ポート を使用した全体および部分再コンフ ィギュレーシ ョ ン中に FPGA にあるすべての DCM を リセッ トできます このオプシ ョ ンを使用する場合 SHUTDOWN コマンド シーケンス中に AGHIGH コンフ ィギュレーシ ョ ン コマンドが発行される とDCM がリセッ ト されます JTAGを使用して再コンフ ィ ギュレーシ ョ ンを行う場合には 必ず DCM を リ セッ トする必要があ り ますProject Navigator でビッ ト ス ト リーム生成オプシ ョ ンを変更するためには (「Project Navigator でのビット ス ト リーム生成オプシ ョ ン」 を参照) 図 54 に示すよ うに Configuration options タブをク リ ッ クし [Reset DCM if SHUTDOWN amp AGHIGH performed] オプシ ョ ンのチェッ ク ボッ クスをオンにして ください

一時的な CLKIN の停止厳密なアナログ測定を行っている間のシステム全体のノ イズを削減するため FPGA アプリ ケーシ ョ ンのその他の部分に影響を与えるこ とな く 一時的に DCM へのクロ ッ ク入力を停止できます これが可能である理由の一部はDCM がすべてデジタルで安定して機能するシステムであるためです DCM では最初に入力クロ ッ クに対してロ ッ ク し次に LOCKED 出力をアサートする必要があ り ます DCM がリセッ ト しない場合には デスキュー回路にほとんど影響を与えずに CLKIN 入力クロ ッ クを一時的に停止できますが 次の条件を満たす必要があ り ます

bull デバイスが冷却するこ とによるタ ップ遅延の変化の影響を最小限にするために ク ロ ッ クの停止時

間は 100 ms 未満である必要があ り ます

bull ク ロ ッ クが Low である間に停止する必要があ り12 周期分の High から再開する必要があ り ます

上述の条件は理論的にはクロ ッ ク入力ジッタの仕様に違反しますがDCM の LOCKED 出力は Highを維持し ク ロ ッ クが再び動作する際にも High を維持しています したがって LOCKED が High であるこ とは必ずしも有効なクロ ッ クが使用可能であるこ とにはなり ません このため実際にはクロ ック入力ジッタの仕様に違反していますが これらの条件を満たす限り問題はあ り ません

CLKIN を停止する際にはDCM のデジタル遅延ラインにあるクロ ッ クが出力されるため 1 から 8 出力クロ ッ ク サイクルが生成されます 同様に CLKIN が再開する場合には 遅延ラインが満たされる

図 54 再コンフ ィギュレーシ ョ ン中に DCM をリセッ トするためのコンフ ィギュレーシ ョ ン オプシ ョ ン

Process Properties

Configuration options

ValuePull Up

Pull UpFloatPull UpPull Down0xFFFFFFFF

General Options Startup options Readback Options

Property NameConfiguration Pin DoneJTAG Pin TCKJTAG Pin TDIJTAG Pin TDOJTAG Pin TMSUnused IOBsUserID Code (8 Digit Hexadecimal)Reset DCM if SHUTDOWN amp AGHIGH performed

OK Cancel Default Help

Click Configuration options tab

Click OK when finished

Pull Up

Check to reset all the DCMsin the FPGA if the AGHIGHcommand issued duringSHUTDOWN sequence

x462_54_062103

70 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

参考資料R

までの 1 から 4 ク ロ ッ クサイ クル間は出力クロ ッ クが生成されません 通常 遅延ラインが満たされるためは 2 または 3 ク ロ ッ ク サイ クルが必要です

また 入力ク ロ ッ クを停止するこ とによって 位相シフ ト を行う こ とができます この位相シフ トは

DCM による制御を中断させるこ とな く 1 から 4 ク ロ ッ ク サイクル後のクロ ッ ク出力から影響を与えます

図 55 に CLKIN 入力クロ ッ クを一時的に停止する例を示します また この図には CLK2X ク ロ ッ ク出力への影響も示しています

参考資料 bull 『Spartan-3 データ シート 』 (モジュール 2) デジタル  ク ロ ッ ク  マネージャの特長および機能httpwwwxilinxcojpbvdocspublicationsds099-2pdf

bull 『Spartan-3 データ シート 』 (モジュール 3) タイ ミ ングおよびジッタ特性

httpwwwxilinxcojpbvdocspublicationsds099-3pdf

bull ザイ リ ンクス ISE 52i ライブラ リ ガイ ドDCM プリ ミ ティブhttptoolboxxilinxcomdocsanxilinx5pdfdocsliblibpdf

bull Architecture Wizard 録音版 Web セミナーhttpsupportxilinxcojpsupporttrainingjapan-home-pagehtm

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcojpxappxapp622pdf

bull 『開発システム リ ファレンス ガイ ド』 15 章 「BitGen」 ビッ ト ス ト リーム生成プログラムおよびオプシ ョ ン 335-367 ページhttptoolboxxilinxcomdocsanxilinx5pdfdocsdevdevpdf

図 55 CLKIN の一時的な停止

CLKIN

CLK2X

Clock input must bestopped in Low phase andfor no more than 100 ms

When restarted the clockinput must generate a fullHigh half-period

x462_55_062403

改訂履歴

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 71

R

改訂履歴 次の表に このアプリ ケーシ ョ ン ノートの改訂履歴を示します

日付 バージョ ン 履歴

20030709 10 初版リ リース

  • Spartan-3 FPGA におけるデジタル クロック
  • マネージャ (DCM) の使用
    • 概要
    • はじめに
    • 概要
    • DCM 位置および クロック分散 ネットワーク インターフェイス
    • DCM 機能の概要
      • 遅延ロック ループ (DLL)
      • デジタル周波数合成 (DFS)
      • 位相シフト (PS)
      • ステータス ロジック
        • DCM プリミティブ
          • シンボル
          • 接続ポート
          • 属性プロパティおよび制約
            • その他のザイリン クス FPGA ファ ミリとの互換性
            • DCM 使用のため のクロック条件
              • 入力クロック周波数範囲
              • 出力クロック周波数範囲
              • クロック入力およびクロック フィードバック入力の変動
                • LOCKED 出力
                • RST 入力
                • DCM Wizard
                  • DCM Wizard の起動
                    • Windows のスタート ボタンから起動
                    • Project Navigator から起動
                      • Wizard 選択
                      • [General Setup]
                      • アドバンスド オプション
                      • クロック バッファ
                      • クロック周波数合成
                      • HDL 出力の生成
                        • VHDL および Verilog のインス タンシエーション
                          • Project Navigator の言語テンプレート
                          • VHDL および Verilog リファレンス ファイル
                            • クロック スキュー の低減
                              • クロック スキューとは
                              • クロック スキュー パフォーマンス低下の原因
                              • スキューの削除
                              • 過去のクロック動作から将来のクロック動作を予測
                              • ターゲットのロック
                              • 安定した単調なクロック入力
                              • 確実なソースからのフィードバック
                              • 内部クロック信号からのスキュー削除
                              • 外部クロック信号からのスキュー削除
                                • コンフィギュレーション後の DCM リセット
                                • なぜリセットする必要があるのか
                                  • 遅延ロック ループとは
                                    • 遅延ロック ループ (DLL)
                                    • 位相ロック ループ (PLL)
                                    • インプリメンテーション
                                    • DLL と PLL
                                      • スキュー調整
                                        • システム同期
                                        • ソース同期
                                        • タイミングの比較
                                            • クロック調整
                                            • 位相シフト- ク ロック周期の分数 でクロックを遅延
                                              • 12 クロック周期位相シフト出力
                                                • 12 周期位相シフト出力によるデューティ サイクルのずれの削減
                                                • デュアル データ レート (DDR) クロックの例
                                                  • 14 位相シフト出力
                                                    • DLL 周波数モードによる出力の有効性
                                                    • 5050 デューティ サイクル調整オプション
                                                    • 4 つの位相遅延クロックエッジ位相パルス
                                                      • ファイン位相シフト
                                                      • 固定ファイン位相シフト
                                                        • 固定ファイン位相シフト範囲
                                                        • 最小位相シフト
                                                        • その他の考察点
                                                        • DCM Wizard
                                                          • 動的ファイン位相シフト
                                                            • 動作
                                                            • 動的ファイン位相シフト範囲
                                                            • 制御
                                                            • DCM Wizard
                                                            • アプリケーション例
                                                                • クロック逓倍 クロック分周 周波数合成
                                                                  • 周波数合成アプリケーション
                                                                  • 入力クロックおよび出力クロックの周波数条件
                                                                  • 2 逓倍クロック (CLK2XCLK2X180)
                                                                  • クロック分周 (CLKDV)
                                                                    • CLKDV クロック調整
                                                                    • CLKDV のジッタは周波数モードおよび属性値が整数か整数ではないかによって決定されます
                                                                    • DCM Wizard
                                                                      • 周波数合成回路 (CLKFXCLKFX180)
                                                                        • DCM Wizard
                                                                            • クロックのフォ ワードミラー リバッファ
                                                                            • クロック ジッタお よび位相ノイズ
                                                                              • クロック ジッタとは
                                                                              • クロック ジッタの原因
                                                                              • クロック ジッタ特性の理解
                                                                                • サイクル間ジッタ
                                                                                • 周期ジッタ
                                                                                • ユニット インターバル(UI)
                                                                                  • 総ジッタの計算
                                                                                    • DLL 出力ジッタへの入力ジッタの加算
                                                                                      • カスケード接続された DCM のジッタ計算
                                                                                        • 例 1 すべての DCM が DLL 出力を使用する場合
                                                                                        • 例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合
                                                                                        • カスケード接続した DCM を使用する場合の推奨デザイン
                                                                                          • システム パフォーマンスにおけるジッタの影響
                                                                                              • クロック ジッタを最小限にするための推奨デザイン
                                                                                                • 適切な電力分散システム設計
                                                                                                • 適切なプリント サーキット ボードの設計
                                                                                                • 同時スイッチ出力 (SSO) の推奨デザイン
                                                                                                • 仮想グランド ピンを DCM 入力および出力接続の近くに配置
                                                                                                • VCCAUX 考察
                                                                                                • FACTORY_JF 設定の修正
                                                                                                    • その他
                                                                                                      • ビットストリーム生成の設定
                                                                                                        • Project Navigator でのビットストリーム生成オプション
                                                                                                        • コマンド ラインまたはスクリプトを使用したビットストリーム生成オプション
                                                                                                        • DCM LOCKED 出力とコンフィギュレーション ロジックの設定
                                                                                                        • JTAG を使用した部分再コンフィギュレーションまたは全体の再コンフィギュレーション中の DCM リセット
                                                                                                          • 一時的な CLKIN の停止
                                                                                                            • 参考資料
                                                                                                            • 改訂履歴
Page 2: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々

2 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

概要R

概要 このアプ リ ケーシ ョ ン ノートは 特定の FPGA アプリ ケーシ ョ ンに限定するものではなく デジタルクロ ッ ク マネージャに関連した内容を総合的に説明します

「DCM 機能の概要」 では DCM およびその機能についての概要を述べます 次に 「DCM プリ ミ テ ィブ」 では DCM に関連したすべての接続ポート と属性 および制約について説明し 「DCM Wizard」「VHDL および Verilog のインスタンシエーシ ョ ン」ではDCM デザインの指定方法について示します

続く 「DCM 使用のためのクロ ッ ク条件」 および 「入力クロ ッ クおよび出力クロ ッ クの周波数条件」 では DCM を使用する場合のクロ ッ ク入力およびクロ ッ ク出力の周波数条件について説明します また「ク ロ ッ ク ジッタおよび位相ノ イズ」 では 出力クロ ッ クにおけるジッ タの影響について考察します

最後に 「ク ロ ッ ク スキューの低減」 「ク ロ ッ ク調整」 「位相シフ ト - ク ロ ッ ク周期の分数でクロ ッ クを遅延」 「ク ロ ッ ク逓倍 ク ロ ッ ク分周 周波数合成」 および 「ク ロ ッ クのフォワード ミ ラー リバッファ」 では DCM ブロ ッ クを使用したさまざまなアプリ ケーシ ョ ンを示します

周波数合成出力 CLKIN を (MD) 逓倍(M=232 D=132)

bull CLKFXbull CLKFX180

ク ロ ッ ク分周出力 CLKIN 周波数を 15 2 25 3 35 4 45 5 55 6 65 7 75 89 10 11 12 13 14 15 16 で分周

CLKDV

2 逓倍クロ ッ ク出力 CLKIN 周波数を 2 逓倍 bull CLK2Xbull CLK2X180

ク ロ ッ ク調整とデューティ サイ クル調整 常にほとんどの出力で可能 CLK0 CLK90 CLK180 CLK270 ではオプシ ョ ン 50 デューティ サイクル plusmn 100 ps

すべて

14 位相シフ ト出力 0deg(位相シフ ト なし )90deg(14 周期)180deg(12 周期)270deg(34 周期)

bull CLK0bull CLK90bull CLK180bull CLK270

12 周期位相シフ ト出力 0degおよび 180degの位相シフ ト出力ペアDDR アプリ ケーシ ョ ンに理想的

bull CLK0 CLK180bull CLK2X CLK2X180bull CLKFX CLKFX180

動的位相シフ ト または固定位相シフ ト ク ロ ッ ク周期の 1256 単位 (または 30 ~ 50 ps)

すべて

汎用内部接続へのクロ ッ ク出力数 最大 9 出力 すべて

グローバル ク ロ ッ ク ネッ ト ワークへのクロ ッ ク出力数 4 出力 すべて

出力ピンへのクロ ッ ク出力数 最大 9 出力 すべて

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 1 DCM の特長および機能 (Continued)

機能 説明 DCM 信号

DCM 位置およびクロック分散 ネッ トワーク インターフェイス

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 3

R

DCM 位置およびクロック分散ネッ トワーク インターフェイス

図 1 に示すよ うに2 個の DCM ブロ ッ クを持つ XC3S50 以外の Spartan-3 FPGA デバイスには 4 個のDCM ブロッ クがあ り これらのブロッ クは FPGA デバイスの左右に位置するブロ ッ ク RAM乗算器列の上下に位置します また XC3S50 にある 2 個の DCM は左側にあるブロ ッ ク RAM乗算器列の上下に位置します

DCM ブロ ッ クには デバイス上で同一エッジにあるグローバル バッファ入力およびグローバル バッファ マルチプレクサへの専用接続があ り ます図 2 に示すよ うにDCM は FPGA のグローバル ク ロ ック設計構造には不可欠な要素であ り ク ロ ッ ク分散ネッ ト ワークでは必要に応じてオプシ ョ ンと して使

用できます図 2a では ク ロ ッ ク入力はグローバル バッファ入力およびグローバル ク ロ ッ ク バッファを介して 低スキュー かつ高ファンアウ トのグローバル ク ロ ッ ク ネッ ト ワークを駆動します

アプ リ ケーシ ョ ンで複数 またはすべての DCM のクロ ッ ク機能を使用する場合には 図 2b に示すように DCM をグローバル バッファ入力とグローバル ク ロ ッ ク バッファ間で使用します

図 1 Spartan-3 FPGA における 4 つの DCM ブロック位置

Block RAMColumn

DCM_X1Y1

DCM_X1Y0DCM_X0Y0

DCM_X0Y1Global buffer multiplexers

EmbeddedMultiplierColumn

Global buffer multiplexers

XC3S50 only

x462_01_061803

4 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM 機能の概要R

DCM 機能の概要 図 3 に示すよ うにデジタル ク ロ ッ ク マネージャ (DCM) と呼ばれる 1 つのエン ト リは実際には別々の機能を持つ 4 つのユニッ トで構成され これらは独立して または互いに関連して動作します 次に各ユニッ トの機能について説明します

図 2 FPGA のグローバル クロック ネッ トワークに不可欠な要素としての DCM

I OIBUFG

I OBUFG

Global Buffer Input

GCLK

Global Clock Buffer

Low-SkewGlobal ClockNetwork

x462_02a_062403

I OIBUFG

I OBUFG

GlobalBuffer Input

GlobalClock BufferDigital Clock

Manager

CLKIN Output

CLKFB

DCM

x462_02b_062403

GCLK

a グローバル バッファ入力およびグローバル クロック バッファが低スキューのグローバル ネッ トワークを駆動する例

b DCM を直接グローバル クロック パスに挿入する例

図 3 DCM 機能ブロック図

DS099-2_07_040103

PSINCDECPSEN

PSCLK

CLKIN

CLKFB

RSTSTATUS [70]

LOCKED8

CLKFX180

CLKFX

CLK0

PSDONE

ClockDistribution

DelayCLK90CLK180CLK270CLK2XCLK2X180CLKDV

StatusLogic

DFSDLL

PhaseShifter

Del

ay T

aps

Out

put S

tage

Inpu

t Sta

ge

DCM

DCM 機能の概要

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 5

R

遅延ロック ループ (DLL)遅延ロ ッ ク ループ (DLL) ユニッ トは ク ロ ッ クの出力信号の伝搬遅延がゼロになるよ うにチップ上でスキュー調整を行います スキューを調整するためのデジタル回路では ク ロ ッ ク出力 (CLK0 またはCLK2X) を確認しネッ ト ワーク配線上に遅延を挿入します DLL は外部クロ ッ ク入力ポートからデバイス内の各クロ ッ ク入力までの遅延を削減する場合に有効です 効率的にバッファを使用したグロー

バル ネッ ト ワークでは さまざまな負荷がかかるこ とによって発生するネッ ト ワーク上のク ロ ッ ク スキューを最小限に抑えるこ とができます

DLL への入力信号は CLKIN および CLKFB であ りDLL からの出力信号は CLK0CLK90CLK180CLK270 CLK2X CLK2X180 および CLKDV です

この DLL を使用するこ とによって 2 逓倍クロ ッ ク (CLK2X CLK2X180) ク ロ ッ ク分周 (CLKDV)および 14 位相シフ ト出力の各出力を生成できます

デジタル周波数合成 (DFS)デジタル周波数合成 (DFS) ユニッ トは 設計者が定義した 2 つの整数 逓倍値 (CLKFX_MULTIPLY)および分周値 (CLKFX_DIVIDE) を使用して 柔軟 かつ広範囲の出力周波数を生成します こ こでは入力クロ ッ ク (CLKIN) 周波数を逓倍または分周し派生出力クロ ッ ク周波数を生成します この機能はDCM の DLL 機能の有無に関わらず使用できDLL を使用しない場合には CLKIN と DFS 出力間に位相関係はあ り ません

DFS は 周波数合成回路 (CLKFX CLKFX180) 出力を生成します

位相シフ ト (PS)位相シフ ト (PS) ユニッ トは DCM の CLKIN 入力に対するクロ ッ ク出力の位相関係を制御します

PS は位相シフ ト値を入力クロ ッ ク周期の分数で指定し9 つすべての DCM ク ロ ッ ク出力信号の位相をシフ ト させます この位相シフ ト値は設計段階で指定し FPGA コンフ ィギュレーシ ョ ン中に DCMに読み込まれます

PS は現在のク ロ ッ ク周期の 1256 単位で前後に位相をシフ ト させる こ とができる FPGA アプ リ ケーシ ョ ンのデジタル インターフェイスを提供します

PS の入力信号は PSINCDENPSEN および PSCLK であ り出力信号は PSDONE および STATUS[0]です

ステータス ロジックステータス ロジッ クはLOCKED と STATUS[0]STATUS[1]および STATUS[2] 出力信号によってDCM の現在のステート を示します LOCKED 出力信号は DCM 出力が CLKIN と同位相であるかを示し STATUS 出力信号は DLL および PS のステート を示します

RST 入力信号によってDCM 全体がリセッ ト されコンフ ィギュレーシ ョ ン後のステートに戻るためリセッ ト後は CLKIN 入力に再びロッ クする必要があ り ます

6 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

DCM プリ ミテ ィブ

DCM プリ ミ ティブはデジタル ク ロ ッ ク マネージャのすべての機能を表します図 4 に DCM プリ ミティブを示し 次に DCM の接続ポート 属性 プロパティ および制約の要約を示します

シンボル

接続ポート

表 3 にデジタル ク ロ ッ ク マネージャの接続ポート を示し 各ポートについて 信号方向およびその接続を必要とする DCM ユニッ ト などを簡潔に説明します 表 2 には表 3 で使用している各機能ユニットの略称を示します

図 4 DCM プリ ミテ ィブ

表 2 表 3 で使用している機能ユニッ トの略称

略称 機能ユニッ ト

DLL 遅延ロッ ク ループ

PS 位相シフ ト

DFS デジタル周波数合成

CLK0

CLK90

CLK180

CLK270

CLK2X

CLK2X180

CLKDV

CLKFX

CLKFX180

STATUS[70]

LOCKED

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDEC

PSCLK

DCM

x462_04_061803

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 7

R

表 3 DCM 接続ポート

ポート 方向 説明機能ユニッ ト

DLL PS DFS

CLKIN ク ロ ッ ク入力 DCM へのクロ ッ ク入力であ り 常に必要です CLKIN の周波数およびジッタは 『Spartan-3 データ シート 』 で指定された範囲内である必要があり 周波数モードは DLL_FREQUENCY_MODE 属性または DFS_FREQUENCY_MODE 属性で指定されます

CLKFB 入力 DCM へのクロ ッ ク フ ィードバッ ク入力です フ ィードバッ ク入力はデジタル周波数合成出力である CLKFX または CLKFX180 のみが使用されている場合は必要あ り ません CLKFB 入力のソースは DCM からの CLK0 出力または CLK2X 出力であ り状況に応じて CLK_FEEDBACK を 1X または 2X に設定する必要があ り ます 理論的には フ ィードバッ ク地点には内部または外部のクロ ッ ク分散ネッ ト ワークで追加された遅延が含まれます

「確実なソースからのフ ィードバッ ク」 を参照してください

オプ

シ ョ ン

RST 入力 非同期のリセッ ト入力であ り DCM ロジッ クを リセッ ト してコンフ ィギュレーシ ョ ン後の設定に戻します この入力を使用した場合 DCM では再び CLKIN を確認し ロ ッ ク します また DCM ブロ ッ ク内部で反転可能であり 反転させない場合の動作については下表に示します 「RST 入力」 を参照してください

PSEN 入力 動的位相シフ ト イネーブル信号であ り DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位

相シフ ト 」 を参照してください

PSINCDEC 入力 動的位相シフ ト値を増減する場合に使用し DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位相シフ ト 」 を参照してください

PSCLK ク ロ ッ ク入力 PS へのクロ ッ ク入力であ り 立ち上がりエッジで入力されます DCM ブロ ッ ク内部で反転可能です 周波数モードは DLL_FREQUENCY_MODE 属性によって指定されます 「動的ファイン位相シフ ト 」 を参照してくださ

0 影響なし

1 DCM ブロ ッ クを リセッ ト します アクティブ High であ り最低 2ns 間 High を維持する必要があ り ます

0 動的位相シフ ト をディ スエーブルにし PS への入力は無視されます

1 PSCLK ク ロ ッ クの次の立ち上がりエッジで動的位相シフ トをイネーブルにします

0 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を増加させます

1 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を減少させます

8 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLK0 ク ロ ッ ク出力 位相シフ トは 0degであ り CLKIN と同一周波数の出力ですDUTY_CYCLE_CORRECTION 属性が TRUE の場合は デューティ サイクルが 50 に調整されます DLL 機能にはフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK90 ク ロ ッ ク出力 90deg(14 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません またDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK180 ク ロ ッ ク出力 180deg(12 周期) 位相シフ ト した CLKIN と同一周波数であ りDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイクルが 50 に調整されます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK270 ク ロ ッ ク出力 270deg(34 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません また DUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK2X ク ロ ッ ク出力 位相シフ トは 0degであ り 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合には 常にデューティ サイクルが 50 とな りDLL へのフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLK2X180 ク ロ ッ ク出力 180deg位相シフ ト し 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合はデューティ サイクルが常に 50 とな り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKDV ク ロ ッ ク出力 分周クロ ッ ク出力であ り CLKDV_DIVIDE 属性で制御されます DLL_FREQUENCY_MODE 属性が High であ り CLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 です また CLKDV_DIVIDE 値が整数ではないではない場合はロ ッ ク状態になるまでに必要な時間が長くなり ます これはクロ ッ ク分周 (CLKDV) 出力です

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 9

R

CLKFX ク ロ ッ ク出力 合成クロ ッ ク出力であ り CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性で制御されます デューティ サイクルは常に 50 です CLKFX または CLKFX180 ク ロ ッ ク出力のみが使用されている場合には クロ ッ ク フ ィードバッ クは必要あ り ません 「周波数合成回路 (CLKFX CLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKFX180 ク ロ ッ ク出力 CLKFX を 180deg位相シフ ト した (CLKFX を反転したよ うに見える) 合成クロ ッ ク出力であ り デューティ サイ クルは常に 50 です CLKFX ク ロ ック出力または CLKFX180 ク ロ ッ ク出力が DCM で使用されている場合には フ ィードバッ ク ループは必要あ り ません 「周波数合成回路 (CLKFXCLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

STATUS[0] 出力 動的位相シフ トがオーバーフローであるこ とを示します 動的ファイン位

相シフ トの制御出力で 動的位相シフ トが最小値または最大値に達してい

るこ とを示します 制限値は plusmn255 または位相シフ ト遅延ラインの最後に達した場合は その値以下になり ます 「動的ファイン位相シフ ト 」 を参照し

てください

STATUS[1] 出力 CLKIN 入力が停止したこ とを示し CLKFB フ ィードバッ ク入力が接続されている場合のみに使用できます LOCKED 出力がアサート されるまではリセッ ト状態であ り アクティブになるためには CLKIN が 1 サイクル以上必要です CLKIN が最初から ト グルしない場合にはアサート されません

STATUS[2] 出力 CLKFX 出力または CLKFX180 出力が停止したこ とを示します 周波数合成回路 (CLKFX CLKFX180) を参照してください

STATUS[73]

出力 予約済み

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

0 位相シフ トは制限値に達していません

1 位相シフ トが制限値に達しています

0 CLKIN がト グルしています

1 CLKIN がト グルしていません

0 CLKFX 出力および CLKFX180 出力がト グルしています

1 CLKFX 出力および CLKFX180 出力がト グルしていませんただしLOCKED 出力が High に維持されている場合があ ります

10 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

LOCKED 出力 すべての DCM 機能は CLKIN の周波数にロッ ク しています CLKIN が指定された範囲内 ( 「DCM 使用のためのクロ ッ ク条件」 に記載) である場合に クロ ッ ク出力が有効です 「周波数合成回路 (CLKFX CLKFX180)」を参照してください

PSDONE 出力 動的位相シフ トが完了したこ とを示します 「動的ファイン位相シフ ト 」 を

参照してください

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

0 DCM は CLKIN の周波数に対してロ ッ クする過程であ りDCM のクロ ッ ク出力は無効です

1 DCM は CLKIN の周波数に対してロ ッ ク しDCM のクロ ック出力は有効です

1 rarr 0 DCM のロ ッ ク状態が解除され DCM を リセッ トする必要があ り ます

0 位相シフ トが行われていない または実行中です

1 要求された位相シフ トは完了しています この出力が PSCLK の 1 サイクル間 High になった後次の位相シフ ト を実行できます

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 11

R

属性 プロパティ および制約

表 4 にデジタル ク ロ ッ ク マネージャの属性を示しますすべての属性は設計段階で設定されコンフ ィギュレーシ ョ ン中にプログラムされます 動的ファイン位相シフ ト以外では FPGA アプリ ケーシ ョ ンの実行中にこれらの設定を変更するこ とはできません 使用するデザイン入力ツールに合わせて lt属性gt=lt設定gtを使用し 属性を設定します

表 4 DCM 属性

属性 可能な設定および説明

DLL_FREQUENCY_MODE CLKIN 入力 PSCLK 入力 および遅延ロッ ク ループ (DLL) からの出力クロ ッ クの有効周波数範囲を指定します DLL ク ロ ッ ク出力には CLK0 CLK90 CLK180 CLK270CLK2X CLK2X180 CLKDV が含まれます

CLK_FEEDBACK フ ィードバッ ク ク ロ ッ クの周波数を指定します

DUTY_CYCLE_CORRECTION DLL からの出力である CLK0 CLK90 CLK180 および CLK270 に対する 50 デューティ サイ クル調整をイネーブルまたはディ スエーブルに設定します

CLKDV_DIVIDE CLKDV 出力の周波数を指定します 設定可能な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 です

CLKDV_DIVIDE が整数ではない場合 ロ ッ クするために必要な時間が長くなり 出力ジッ タが増加します

CLKFX_MULTIPLY CLKFX 出力および CLKFX180 出力の周波数を逓倍する場合の係数を指定します この値は CLKDV_DIVIDE 属性の値と と もに使用されます CLKFX_MULTIPLY に設定可能な範囲は整数値の 2 から 32 であ り デフォルトは 4 です

LOW デフォルトです DLL は低周波数モードで動作し DLL に関連したすべての出力が有効です ク ロ ッ ク入力およびクロ ッ ク出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DLL の指定範囲内にあ り ます

HIGH DLL は高周波数モードで動作します 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力 および 14 位相シフ ト出力 CLK90 と CLK270 は無効です CLKDV_DIVIDE 属性が整数以外の場合 CLKDV 出力のデューティ サイクルは 50 になり ません ク ロ ッ ク入力およびクロ ッ ク出力の周波数は『Spartan-3 データ シート 』 に記載されている高周波数 DLL の指定範囲内にあり ます

1X デフォルトであ り CLK0 フ ィードバッ クです周波数は CLKIN と同一です

2X CLK2X フ ィードバッ クであ り 周波数は CLKIN の 2 倍です

なし フ ィードバッ ク ク ロ ッ クはあ り ません CLKFX 出力または CLKFX180 出力のみを使用している場合に可能です

TRUE デフォルトであ り デューティ サイクルは 50 に調整されます

FALSE デューティ サイクル調整は行われません

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

12 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLKDV_DIVIDE CLKFX 出力および CLKFX180 出力の周波数を分周する場合の係数を指定します この値は CLKFX_MULTIPLY 属性の値と と もに使用されます設定可能な範囲は整数値の 1 から 32 であ り デフォルトは 1 です

PHASE_SHIFT この属性は CLKOUT_PHASE_SHIFT 属性が FIXED または VARIABLE に設定されている場合にのみ使用できます CLKIN とすべての DCM ク ロ ッ ク出力間の立ち上がりエッジにおけるスキューをコンフ ィギュレーシ ョ ンで定義し DCM ク ロ ッ ク出力を位相シフ ト させます

スキューまたは位相シフ ト値は整数で指定されます この整数値は 次の等式に示すよ うに

ク ロ ッ ク周期の分数で表され範囲は -255 から 255 になり ますデフォルト値は 0 であ り実際に設定可能な値は入力クロ ッ ク周波数によって異なり ます また TCLKIN gt FINE_SHIFT_RANGE の場合には 実際の範囲はよ り小さ くな り ますFINE_SHIFT_RANGE は遅延ラインにおけるすべてのタ ップの総遅延を示します 詳細は「ファ イン位相シフ ト 」 を参照してください

CLKOUT_PHASE_SHIFT 位相シフ ト モードを指定します PHASE_SHIFT 制約と共に使用し DCM のデジタル位相シフ ト (DPS) 機能をインプリ メン ト します また この設定は DLL および DFS からのすべてのクロ ッ ク出力に反映されます 詳細は 「ファ イン位相シフ ト 」 を参照してください

DESKEW_ADJUST FPGA ク ロ ッ ク入力ピンと DCM 出力クロ ッ ク間のクロ ッ ク遅延調整を制御します 「スキュー調整」 を参照してください

この設定を DCM ク ロ ッ ク出力の位相シフ トに使用しないでください 正確な位相シフ ト を行う場合にはCLKOUT_PHASE_SHIFT 制約または PHASE_SHIFT 制約を使用してください

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

なし デフォルトです CLKIN および CLKFB は同位相 (スキューなし ) であ り位相関係は変更できません PHASE_SHIFT = 0 の場合の FIXED 設定と同一です

FIXED 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定され アプ リ ケーシ ョ ンでは変更できません

VARIABLE 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定されますが 動的位相シフ ト制御信号 PSEN PSCLK PSINCDEC および PSDONE を使用してアプリ ケーシ ョ ンで変更可能です

SYSTEM_SYNCHRONOUS デフォルトであ り すべてのデバイスがシステム全体

に共通のクロ ッ ク ソースで動作します

SOURCE_SYNCHRONOUS データ ソースから クロ ッ クが入力されます ソース同期アプリ ケーシ ョ ンがその一例です

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 13

R

DFS_FREQUENCY_MODE DCM のデジタル周波数合成 (DFS) からのクロ ッ ク出力である CLKFX および CLKFX180 に有効な周波数範囲を指定します DLL ク ロ ッ ク出力が使用されている場合はDLL_FREQUENCY_MODE によって CLKIN 入力の周波数範囲がよ り制限されます

STARTUP_WAIT DCM の LOCKED 信号のアサート よ り先に FPGA コンフ ィギュレーシ ョ ンの DONE 信号を High にするかど うかを制御します

2 つ以上の DCM をコンフ ィギュレーシ ョ ンしている場合は すべての DCM がロ ッ クする必要があ り ます

CLKIN_DIVIDE_BY_2 CLKIN が DCM ブロ ッ クに入力される前に 周波数を 2 分周します アプリ ケーシ ョ ンによっては 入力クロ ッ クの周波数を適切な範囲内に低減できます

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

LOW デフォルトであ り DFS は低周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合 CLKIN 入力の周波数範囲はその出力によって変化します

HIGH DFS は高周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている高周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合CLKIN 入力の周波数範囲はその出力によって変化します

FALSE デフォルトであ り DCM がロ ッ ク状態になるのを待たずに DONE 信号がアサート されます

TRUE DCM がロ ッ ク状態になるまで DONE 信号は High になり ません ただし この STARTUP_WAIT は LOCKED 信号が High になるのを妨げるものではあり ません またFPGA のスタート アップ シーケンスのサイクルの始めに LCK (ロ ッ ク ) サイクルを挿入するよ うに修正する必要があ り ます ( 「ビッ ト ス ト リーム生成の設定」 を参照してください) 通常は DONE サイクルまたは GWE サイクルがその後に続きます

FALSE デフォルトであ り CLKIN は直接 DCM ブロ ッ クに入力されます

TRUE CLKIN が DCM に入力する前に その周波数を 2 分周され デューティ サイクルは約 50 に調整されます これは 高周波数のクロ ッ クを使用し DCM の入力クロ ッ クの周波数条件またはデューティ サイ クル条件を満たす場合に有効です また 周波数モードを決定する場合 または位相シフ ト範囲を算出する場合に クロ ッ ク周波数を 2 分周します

14 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他のザイリンクス FPGA ファ ミ リ との互換性R

その他のザイリンクス FPGA ファミ リ との互換性

Spartan-3 のデジタル ク ロ ッ ク マネージャ (DCM) は Virtextrade-II および Virtex-II Pro FPGA ファ ミ リで使用されている DCM とほぼ同様の機能を持ちますが Spartan-3 DCM は第三世代の DCM デザインであ り さ らに機能が向上しています 特に Virtex-II デバイス と比較する と Spartan-3 デバイスはVCCAUX 供給電源における ノ イズ耐性が改善されVirtex-IIPro ファ ミ リ よ り も位相シフ ト機能に柔軟性があ り ます 出力の周波数制限値はVirtex-II および Virtex-II Pro ファ ミ リの DCM の方が高くなっています

またSpartan-IIIIE と比較する と Spartan-3 DCM の遅延ロッ ク ループ (DLL) 機能は大幅に改善され Spartan-IIIIE DLL の機能をすべて備えているだけでなく 周波数合成および位相シフ ト機能が追加されました Spartan-3 の周波数合成では 最大 32 までの係数を使用して入力クロ ッ クを逓倍しますが Spartan-IIIIE DLL での周波数合成機能は 2 逓倍までです 同様に Spartan-3 DCM の分周機能はSpartan-II DLL よ り広範囲に対応しています

DCM 使用のためのクロック条件

DCM は その機能に最大限の柔軟性があるよ うに設計されていますが ク ロ ッ クの周波数と安定性周波数の変動 およびクロ ッ ク ジッタにいくつかの条件があ り ます

入力クロック周波数範囲

DCM のクロ ッ ク入力周波数は アプ リ ケーシ ョ ンにおける DLL ユニッ ト DFS ユニッ ト またはその両方によって決定されます

表 5 に デジタル周波数合成 (DFS) ユニッ トでの入力クロ ッ クCLKIN の周波数範囲を示します DFS ユニッ ト を単独で使用する場合の周波数範囲は DLL 入力ニッ ト よ り も広くな り ますが 両ユニッ ト を使用する場合には よ り厳しい周波数条件を DLL に適用する必要があ り ます 表には データ シートに記載されている仕様名および概算値の 1 つを示していますが実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

FACTORY_JF DCM の DLL ユニッ トでタ ップ設定を修正する頻度を制御します この設定は DLL エレメン トのジッ タ特性に影響を与え DLL_FREQUENCY_MODE 属性に基づいて自動的に指定されます

設計方法と して推奨された場合以外は デフォルト設定を変更しないでください (「FACTORY_JF 設定の修正」 を参照してください)

LOC 図 1 に示すよ うに DCM の物理的な配置位置を指定します

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

DLL_FREQUENCY_MODE FACTORY_JF

LOW 0xC080

HIGH 0xF0F0

DCM_X0Y0 DCM の左下

DCM_X1Y0 DCM の右下 (XC3S50 では設定不可)

DCM_X0Y1 DCM の左上

DCM_X1Y1 DCM の右上 (XC3S50 では設定不可)

DCM 使用のためのクロック条件

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 15

R

表 6 に遅延ロッ ク ループ (DLL) ユニッ トでの入力クロ ッ ク CLKIN の周波数範囲を示します DLLが単独で使用されている場合と DFS と と もに使用されている場合では 同一の周波数条件が適用されます 表には低周波数モードおよび高周波数モードの場合の DLL の周波数範囲を示しています この周波数モードはDLL_FREQUENCY_MODE 属性によって指定されます 表にはデータ シートに記載されている仕様名および概算値の 1 つを示していますが 実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

出力クロック周波数範囲

DCM の出力クロ ッ クに対しても周波数範囲が指定されています 詳細は 「入力クロ ッ クおよび出力クロ ッ クの周波数条件」 を参照して ください

クロック入力およびクロック フ ィードバック入力の変動「安定した単調なクロ ッ ク入力」 で説明するよ うに DCM では安定性があ り単調なクロ ッ ク入力を使用する必要があ り ます しかし DCM 機能の柔軟性を最大限に使用しよ う とする場合 CLKIN で発生するクロ ッ ク ジッタおよび CLKIN 入力と CLKFB 入力の変動をある程度まで許容しなければなり ません

CLKIN 入力におけるジッタには 2 つのタイプがあ り ます 1 つはサイ クル間ジッタであ り このジッタは CLKIN 入力周期があるサイ クルから次のサイ クル間でどの程度の変化を許容できるかを示します 表 7 にデータ シートに記載されている仕様名および概算値を含むサイクル間ジッタの最大許容範囲を示します

表 5 デジタル周波数合成 (DFS) ユニッ トのクロック入力周波数範囲

機能 最小周波数 最大周波数

デジタル周波数合成 (DFS) CLKIN_FREQ_FX_MIN ~ 100 MHz

CLKIN_FREQ_FX_MAX ~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 6 遅延ロック ループ ユニッ トのクロック入力周波数範囲

機能

DLL 周波数モード属性 (DLL_FREQUENCY_MODE)

= LOW = HIGH

最小周波数 最大周波数 最小周波数 最大周波数

遅延ロ ッ ク ループ (DLL)

CLKIN_FREQ_DLL_LF_MIN

~ 24 MHz

CLKIN_FREQ_DLL_LF_MAX

~ 180 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 48 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 7 サイクル間ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_CYC_JITT_FX_LF~ plusmn300 ps

CLKIN_CYC_JITT_FX_HF~ plusmn150 ps

遅延ロッ ク ループ (DLL) CLKIN_CYC_JITT_DLL_LF~ plusmn300 ps

CLKIN_CYC_JITT_DLL_HF~ plusmn150 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

16 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

LOCKED 出力R

も う 1 つのジッタは 周期ジッタ と呼ばれ クロ ッ ク周期間の最大変動を示します サイクル間ジッタがあるサイクルと次のサイクルの差を示すのに対し 周期ジッタはクロ ッ ク周期全体での変化範囲を示

します 表 8 にデータ シートに記載されている仕様名および概算値を含む周期ジッタの最大許容範囲を示します

DCM の安定性に影響を与える別の要素は DLL で使用される ク ロ ッ ク フ ィードバッ ク パスですフ ィードバッ ク パス遅延の変動は 表 9 に示す範囲内でなければな り ません ただし グローバル クロ ッ ク ラ インに接続される場合はチップ上の変動が最小になるため こ こに示した範囲制限は外部フ ィードバッ ク パスにのみ適用されます

LOCKED 出力 DCM の LOCKED 出力は すべての DCM 機能が CLKIN 入力にロ ッ ク している こ と を示し ますLOCKED 信号がアサート される場合にはFPGA アプリ ケーシ ョ ン内で出力クロ ッ クを使用できます

図 5 に LOCKED 出力信号の動作を示しますLOCKED 出力は FPGA のコンフ ィギュレーシ ョ ン終了直後に Low になり RST 入力がアサート されている場合は常に Low です

コンフ ィギュレーシ ョ ン後 DCM は CLKIN 信号の有効無効に関わらず 常にロ ッ ク状態になろ う とします入力クロ ッ クが安定していない場合にはCLKIN 入力が安定するまでFPGA 回路 で RST 入力をアサートする必要があ り ますDLL では CLKIN 入力および CLKFB 入力の両方を使用し これらの立ち上がりエッジが同位相である時に完全にロ ッ ク状態であるこ とを確認しますDFS ではCLKINを使用してク ロ ッ クの周波数が有効であるかを確認します また DCM がロ ッ ク状態になるために数千クロ ッ ク サイクルのサンプルが必要となる場合があ り ます

DCM の CLKIN に対するロッ クが完了する とLOCKED 出力が High にアサート されDCM のクロ ック出力が有効となるため FPGA アプリ ケーシ ョ ン内でこれらの出力を使用できます 『Spartan-3 データ シート 』 の タイ ミ ングに関する章には ロ ッ クに必要な時間のワース ト ケースが記載されています通常 クロ ッ ク周波数が高いほどDLL 出力は短時間でロッ ク状態になり ます またDFS 出力がロックするためには非常に長い時間が必要とな り ます この時間は 逓倍または分周の係数によって変化し

ますが これらの係数が小さいほど時間は短縮します

システム ク ロ ッ クが安定してから FPGA のコンフ ィギュレーシ ョ ンを完了させるために オプシ ョ ンと して DCM がロ ッ ク状態になるまでコンフ ィギュレーシ ョ ンの完了を遅らせるこ とができます この機能は STARTUP_WAIT 属性で制御します

LOCKED が High になる前の DCM ク ロ ッ ク出力信号の動作は保証していません LOCKED が Highになる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な波形が含まれている場合があ ります

表 8 周期ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_PER_JITT_FX_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_FX_HF~ plusmn1000 ps (plusmn1 ns)

遅延ロッ ク ループ (DLL) CLKIN_PER_JITT_DLL_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_DLL_HF~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 9 外部フ ィードバック パス遅延範囲

解説 指定範囲

チップ外にある CLKFB フ ィードバッ ク パス遅延の最大許容範囲 CLKFB_DELAY_VAR_EXT ~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

RST 入力

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 17

R

CLKIN 入力の周波数が指定範囲内である場合DCM は内部遅延のタップを調整し ロ ッ ク状態を維持しますが その制限を大幅に満たしていない場合には ロ ッ ク状態が解除され LOCKED 出力が Lowになり ます

一度 DCM のロ ッ ク状態が解除される と 自動的に再びロッ ク状態に戻るこ とはあ り ません ロ ッ ク状態が解除された場合つま り LOCKED が High から Low となった場合にはFPGA アプリ ケーシ ョ ンでは RST 入力を使用して DCM を リセッ トするなどの適切な方法を使用して 再びロ ッ ク状態にする必要があ り ます

RST 入力 非同期の RST 入力は DCM ロジッ クを リ セッ ト してコンフ ィギュレーシ ョ ン後の設定に戻しますRST ピンはFPGA を再コンフ ィギュレーシ ョ ンする場合または許容範囲を超えている入力周波数を変更する場合に使用して ください このピンはアクティブ High であ り ダイナミ ッ ク信号またはグランドに接続する必要があ り ます また RST 入力は最低 2ns 間アサート しなければなり ません

コンフ ィギュレーシ ョ ン後に 入力ク ロ ッ ク周波数が安定していない場合 ク ロ ッ クが安定するまで

RST をアサー ト して ください また 外部フ ィードバッ クを使用している場合は コンフ ィギュレーシ ョ ン直後に DCM を リセッ ト します31ページの図 20 に SRL16 シフ ト レジスタ プリ ミ ティブを使用した リセッ ト方法の例を示します

LOCKED 周波数が High から Low になる場合のよ うに DCM のロ ッ ク状態が解除される と FPGAアプリ ケーシ ョ ンでは RST をアサート しDCM に入力クロ ッ ク周波数に対して再ロ ッ ク させる必要があ り ます

図 5 LOCKED 出力の機能的な動作

LOCKED HIGH

FPGA RST

Y

N

Y

N

FPGA

LOCKED LOW

CLKIN

LOCKED LOW

RST

x462_05_062103

CLKIN

RST

RST

18 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

DCM の LOCKED 出力が High の場合 RST がアサート される と この LOCKED 出力は 4 ク ロ ッ クサイ クル以内に Low になり ます このため リセッ ト後は DCM を再びロ ッ ク状態にさせます

また RST をアサートするこ とによって DCM の遅延タップ位置がゼロに戻り このタ ップ位置を変更するこ とによってDCM のクロ ッ ク出力ピンでグ リ ッチが発生する可能性があ り ます 同様にRSTはクロ ッ ク出力のデューティ サイクルにも影響を与えます

さ らに RST がアサート される と現在の可変位相シフ ト値は PHASE_SHIFT 属性で指定された値に戻り ます

DCM Wizard DCM を使用するアプリ ケーシ ョ ンを容易にするために ザイ リ ンクス ISE には 順を追って DCM を設定できるソフ ト ウェア Wizard が含まれています 図 6 に示すよ うに DCM Wizard を使用するこ とによってVHDL 構文または Verilog 構文で DCM をインスタンシエートするベンダ固有のロジッ ク合成ファイルを生成できます また DCM Wizard では特定のインプリ メンテーシ ョ ン用にユーザー制約ファイル (UCF) を生成できますさ らにすべてのユーザー仕様はXilinx Architecture Wizard (XAW)設定ファイルに保存されます

DCM Wizard の起動DCM Wizard を起動するためにはWindows のスタート ボタンから起動するまたはザイ リ ンクス ISEProject Navigator ソフ ト ウェアから起動する という 2 つの方法があ り ます

Windows のスタート ボタンから起動

DCM Wizard を Windows スタート ボタンから起動する場合は[スタート ] rarr [すべてのプログラム] rarr[Xilinx ISE 5] rarr [アクセサリ ] rarr [Architecture Wizard] をク リ ッ ク します 図 7 に設定ウ ィンド ウを示します

bull DCM のオプシ ョ ン設定を保存する Xilinx Architecture Wizard (xaw) ファ イル名を入力します

bull こ こで [Browse] ボタンをク リ ッ ク して xaw ファ イルを選択するこ と も可能です

bull 出力ファイルのロジッ ク合成言語を VHDL または Verilog から選択します

bull ロジッ ク合成ツールを選択します DCM Wizard では 指定した合成ツールに応じて ベンダ固有の出力ファイルが生成されます

bull ターゲッ ト デバイスに Spartan-3 を選択します

図 6 DCM Wizard の DCM 設定用グラフ ィ カル インターフェイス

DCM Wizard

User contraintsfile (UCF)

Vendor-specificVHDL or Verilog

Xilinx ArchitectureWizard (XAW)

settings file

Graphically configure aSpartan-3 Digital ClockManager (DCM)

x462_06_061803

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 19

R

Project Navigator から起動

Project Navigator のメニュー バーから または [Sources in Project] ウ ィンド ウから DCM Wizard を起動できます メニュー バーで [Project] rarr [New Source] を選択するか [Sources in Project] ウ ィンドウで右ク リ ッ ク し [New Source] を選択してください

図 8 に示すよ う に リ ス ト か ら [Architecture Wizard] を選択し ます Xilinx Architecture Wizard(xaw) ファ イル名を入力し そのファイルを保存するディ レク ト リ を選択した後 [Next] をク リ ッ クします

図 7 Architecture Wizard の設定

図 8 Project Navigator での Architecture Wizard 設定

Xilinx Architecture Wizard Setup

My_Spartan-3 Browse

XAW File

Output File Type

VHDL Verilog

XST

Synthesis Tool

XC3S1000-FT256-4 Select

OK Cancel

Part

DCM

Spartan-3

[OK]

x462_07_061803

New

User DocumentVHDL ModuleCoreGen IPSchematicVHDL LibraryVHDL PackageVHDL Test BenchTest Bench WaveformBMM FileMEM FileImplementation Constraints FileArchitecture WizardState Diagram

My_Spartan-3

F ile Name

MyDirectory

Lo cation

Add to Project

lt Back Next gt Cancel Help

DCM

[Next]

Architecture Wizard

x462_08_061803

20 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

Wizard 選択前述した手順はすべての ISE Architecture Wizard に共通ですが Spartan-3 FPGA は図 9 に示す DCMWizard をサポート します こ こで [OK] をク リ ッ ク し 次に進みます

[General Setup] 図 10 に示すよ うに ほとんどのオプシ ョ ンは DCM Wizard の [General Setup] ダイアログ ボッ クスで設定します 楕円の枠内には その設定に対応する DCM プリ ミ ティブ属性名を示します

bull DCM のインスタンス名を入力します このインスタンス名は Verilog または VHDL 出力ファイル内で使用されます

bull 最終的なアプリ ケーシ ョ ンにおける出力および機能を選択するためには 必要な DCM ク ロ ッ ク出力のチェッ ク ボッ クスをオンにします チェッ ク ボッ クスをオンにした出力に対しては それに関連したオプシ ョ ンの設定が可能になり ます

bull CLKIN ク ロ ッ ク入力の周波数を入力します 周波数を MHz で指定するかまたはクロ ッ ク周期をns で指定して ください この値によって DCM の DLL_FREQUENCY_MODE 属性が設定されます

bull CLKIN ソースが FPGA の内部であるか外部であるかを指定します[External] を選択した場合DCM Wizard は自動的にグ ローバル バッ フ ァ入力 (IBUFG) プ リ ミ テ ィ ブを挿入し ます[Internal] を選択した場合は ソース信号は HDL ソース ファ イル内の ト ップ レベル入力となり ます

bull CLKDV 出力をオンにした場合は クロ ッ ク分周回路の [Divide by Value] 値を指定します この値によって DCM の CLKDV_DIVIDE 属性が設定されます

bull DCM へのフ ィードバッ ク パスを指定します CLKFX 出力または CLKFX180 出力のみを使用する場合は [None] を選択します これらの出力を使用しない場合は フ ィードバッ クが必要ですFPGA 内部からのフ ィードバッ クを使用する場合は [Internal] を選択し外部からのフ ィードバック ループを使用する場合は [External] を選択します さ らに DCM フ ィードバッ クのソースをCLK0 (1X) または CLK2X (2X) から選択します この選択によってDCM の CLK_FEEDBACK属性が設定されます

図 9 Spartan-3 FPGA でのみ選択可能な DCM Wizard

Xilinx Architecture Wizard Selection

DCM Wizard

OK Cancel

Select Wizard

Spartan-3 DCM Wizard [OK]

x462_09_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 21

R

bull すべての DCM 出力における位相シフ トの有無を指定します デフォルト設定は位相シフ ト なし (None) です 位相シフ トが必要な場合は 位相シフ ト値と して [Fixed] または [Variable] を選択します [Variable] を選択するこ とによって 動的位相シフ ト制御 PSEN PSINCDECPSCLK および PSDONE が使用可能となり DCM の CLKOUT_PHASE_SHIFT 属性が指定されます Fixed モードおよび Variable モードのいずれを選択する場合でも 固定位相シフ ト値あるいは動的位相シフ トの初期値を決定する [Phase Shift Value] を指定します この値によってDCM の PHASE_SHIFT 属性が設定されます

bull アドバンス ド オプシ ョ ン ウ ィンド ウを開く場合は [Advanced] ボタンをク リ ッ ク します

bull 設定の完了後 [Next] をク リ ッ ク し ク ロ ッ ク バッファ ダイアログ ボッ クスに進みます

アドバンスド オプシ ョ ン図 11 に示すアドバンス ド オプシ ョ ン ウ ィンド ウで さ らに詳細な DCM オプシ ョ ンを設定できます

bull デフォルトではDCM は FPGA のコンフ ィギュレーシ ョ ンに対して影響を与えませんが [Yes] をク リ ッ ク した場合は DCM が LOCKED 出力をアサートするまで FPGA コンフ ィギュレーシ ョンで DONE 信号のアサート を遅らせるこ とができます この設定は DCM の STARTUP_WAIT属性で定義します このよ うに [Yes] を選択した場合は ビッ ト ス ト リーム生成オプシ ョ ンの追加

図 10 [General Setup] ダイアログ ボックスでの DCM オプシ ョ ン設定

Xilinx DCM Wizard - General Setup

MY_DCMDCM Instance Name

Input Clock Frequency

MHz ns 2

Phase Shift Value

30

Advanced

Source

CLK0

CLK90

CLK180

CLK270

CLKDV

CLK2X

CLK2X180

CLKFX

CLKFX180

LOCKED

STATUS

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDECPSCLK

CLKIN SourceInternal

External

Divide By Value

FeedbackInternal External None

Value 1X 2X

Duty Cycle Correction

Yes No

Phase ShiftNone Fixed Variable

23 More Info

lt B ack Next gt Cancel

DCM

CLKFX CLKFX180

CLKDV

MHz ns

Advanced

(BUFG)

[Yes] CLK0CLK90 CLK180 CLK270

50CLK0 (1X)CLK2X (2X)

[Next]

CLKDV

[Fixed] PSEN PSINCDECPSCLK

[Variable]

DLL_FREQUENCY_MODE

CLK_FEEDBACK

CLKDV_DIVIDE

CLKIN IBUFG

[External][Internal]

DUTY_CYCLE_CORRECTIONCLKOUT_PHASE_SHIFT

DCM

PHASE_SHIFT

x462_10_061803

22 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

変更が必要です この変更については 「DCM LOCKED 出力と コンフ ィギュレーシ ョ ン ロジッ クの設定」 で説明します

bull ある特定の DCM において CLKIN 入力の周波数が高すぎる場合には [Divide Input Click by 2]の [Yes] をク リ ッ ク し 入力周波数を半減させて ください これによって DCM ブロ ッ クに入力前のデューティ サイ クルは約 50 にな り ます この設定は DCM の CLK_FEEDBACK 属性で定義します

bull ソース同期のデータ転送が必要なアプリ ケーシ ョ ンでは [DCM Deskew Adjust] 値を [SOURCE_SYNCHRONOUS] に変更します SOURCE_SYNCHRONOUS または SYSTEM_SYNCHRONOUS 以外の値を使用する場合はザイ リ ンクスにお問い合わせください この設定は DCM の CLK_FEEDBACK 属性を定義します 「スキュー調整」 を参照して ください

bull [OK] をク リ ッ ク し 変更を適用して [General Setup] ウ ィンド ウに戻り ます

クロック バッファ次に DCM の各クロ ッ ク出力に対するクロ ッ ク バッファを定義します(図 12 参照) DCM Wizard のデフォルト設定では 自動的にすべての DCM ク ロ ッ ク出力にグローバル バッファ (BUFG) を使用しますが Spartan-3 デバイスでは 上辺および下辺のそれぞれにある 4 つのグローバル バッファを同一辺にある 2 つの DCM で共有しますXC3S50 では上辺または下辺に 1 つの DCM があ り オプシ ョ ンと して同じ辺にある 4 つのクロ ッ ク バッファすべてに接続できます

bull [Clock Buffer Settings] にある [Customize] をク リ ッ ク し DCM の各クロ ッ ク出力にクロ ッ クバッファの種類を指定します

bull DCM の各クロ ッ ク出力に対して リ ス トから [Clock Buffer] 出力タイプを選択します 表 10 に選択可能なクロ ッ ク バッファ オプシ ョ ンを示します

bull [Enabled Buffer] 出力タイプを使用する際にはバッファ イネーブル (CE) 入力の信号名を指定できますが 自動的に作成された信号名も使用できます

bull [Clock Mux] 出力タイプを使用する場合もセレク ト (S) 入力の信号名を指定できますが自動的に作成された信号名も使用できます

bull [Next] まはた [Finish] をク リ ッ ク し 設定を完了します [Next] ボタンが表示されるのは[General Setup]ダイアログ ウ ィ ン ド ウで CLKFX 出力または CLKFX180 出力を選択した場合のみです それ以外の場合は [Finish] をク リ ッ ク し HDL 出力を生成します ( 「HDL 出力の生成」を参照して ください)

図 11 DCM アドバンスド オプシ ョ ン設定

Xilinx DCM Wizard Advanced

Wait for DCM lock before DONE signal goes high

Yes No

Divide Input Clock by 2

Yes No

SYSTEM_SYNCHRONOUS

OK Cancel

DCM Deskew Adjust

CLKIN 12

FPGA

DONEDCM

DCM

[OK]

DCM

STARTUP_WAIT

CLKIN_DIVIDE_BY_2

DESKEW_ADJUST

x462_11_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 23

R

図 12 DCM Wizard を使用した DCM 出力のバッファ オプシ ョ ン設定

Xilinx DCM Wizard - Clock Buffers

This dialog sets up the clock buffers for all the DCM clock outputs selected in the GeneralSetup dialog

Clock Buffer Settings

U se Global Buffer (BUFG) for all selected DCM clock outputs

C ustomize (using grid below)

Reference the lsquoMore Inforsquo button for more information on customizing the global buffers

M ore Info

lt Back N ext gt Cancel

Clock Buffer Input I0 Input I1 Input CES

Global Buffer CLK0

Enabled Buffer CLK90 CLK90_ENABLE_IN

Clock Mux CLK2X180 CLKFX CLKFX_SELECT_IN

Lowskewline CLK180

Local Routing CLK270

CLK2XGlobal BufferGlobal Buffer

Enabled BufferClock MuxLowskewlineLocal RoutingNone

Output O

CLK0_OUT

CLK90_OUT

CLKFX_OUT

CLK180_OUT

CLK270_OUT

CLK2X_OUT

DCM Wizard

BUFG

DCM

DCMFPGA

FPGA

[Next]

x462_12_061703

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

グローバル バッファ

4 つあるグローバル バッファ (BUFG) の 1 つを同じ辺にある DCM に接続します

イネーブル バッファ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク バッファ (BUFGCE) と して設定しているバッファに接続します CE 入力は High の場合にバッファをイネーブルにしLow の場合は バッファ出力がゼロになり ます

BUFGI0 O

BUFGCEI0 O

CE

CE O

0 0

1 I0

24 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

クロック周波数合成

図 13 に示すク ロ ッ ク周波数合成ダイアログ ボッ ク スは [General Setup] ダイアログ ウ ィ ン ド ウでCLKFX 出力または CLKFX180 出力を選択した場合のみに表示されます

こ こでは必要な出力周波数 または逓倍および分周の係数を指定します [Valid Ranges for SelectedSpeed Grade] で周波数範囲 (CLKIN を ns で指定した場合は遅延) を指定します 周波数範囲にはDFS_FREQUENCY_MODE 属性で設定可能な両方の値が表示されます DCM で DLL に関係したクロ ッ ク出力を使用する場合 この範囲条件はよ り厳し くな り ます

bull [Use output frequency] のチェッ クをオンにし MHz または ns で周波数を入力します [Calculate] をク リ ッ クする と CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性の値が算出されます 入力した範囲から可能な逓倍値および分周値を算出できない場合は DCM Wizard で別の出力周波数値を入力するよ うに求めるエラー メ ッセージが表示されます ソ リ ューシ ョ ンがある場合は [Generated Output] に逓倍値 分周値 およびジッ タの値が表示されます ( 「ク ロ ック ジッタおよび位相ノ イズ」 を参照してください)

bull オプシ ョ ンと して[Use Multiply (M) and Divide (D) values] のチェッ クをオンにしこれらの値を入力でき ます [Calculate] を ク リ ッ ク し 出力周波数およびジ ッ タ を計算し ます 結果は[Generated Output] に表示されます

bull 最後に[Finish] をク リ ッ ク しHDL 出力を生成します (「HDL 出力の生成」を参照してください)

ク ロ ッ ク マルチプレクサ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク マルチプレクサ (BUFGMUX) として設定しているバッファに接続します S 入力はクロ ッ ク ソースを選択します

低スキュー ライン 低スキューのプログラマブル相互接続に接続します

ローカル配線 スキューが重要ではない場合において ローカル相互接続に接続します

なし DCM 出力をディ スエーブルにします

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

O

S

BUFGMUXI0

I1 S O

0 I0

1 I1

I0

I0

VHDL および Verilog のインスタンシエーシ ョ ン

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 25

R

HDL 出力の生成すべてのパラ メータを入力後 [Finish] をク リ ッ クする と 図 14 に示すよ うに DCM Wizard が自動的に VHDL または Verilog HDL 出力ファイルを生成します また ユーザー制約ファイル (UCF) も生成されます

VHDL および Verilog のインスタンシエーシ ョ ン

DCM Wizard を使用し VHDL または Verilog HDL 記述を作成する方法が最も容易ですが VHDLソースおよび Verilog ソースも利用できます

Project Navigator の言語テンプレート

ISE 52i およびそれ以降の Project Navigator では DCM の言語テンプレートが使用できます DCMテンプレート を選択する場合はProject Navigator のメニューで [Edit] rarr [Language Templates] をクリ ッ ク します 図 15 に示すテンプレー ト で Verilog フォルダまたは VHDL フォルダを展開表示し

図 13 デジタル周波数合成の逓倍値と分周値の設定 およびジッ タの算出

Xilinx DCM Wizard - Clock Frequency Synthesizer

Valid Ranges for Selected Speed Grade

Inputs for Jitter Calculations

U se output frequency

M Hz ns875

U se Multiply (M) and Divide (D) values

4M 1D

Input Clock Frequency 30 ns C alculate

lt Back Finish Cancel

More Info

Generated Output

MOutput

Frequency(MHz)

29 111

Period Jitter(pk-to-pk ns)

D

11 875

Period Jitter(unit interval)

010

DFSMode

Fin (MHz)

Low

High

24000 - 18]0000

50000 - 270000

24000 - 210000

210000 - 270000

Fout (MHz)

MHz ns[Calculate]

DCM Wizard (M)

(D)

(M)(D)

[Calculate]

[Calculate]

[Finish]

DCM

CLKFX_MULTIPLY CLKFX_DIVIDE

CLKFX_MULTIPLY CLKFX_DIVIDE

DFS_FREQUENCY_MODE

x462_13_061803

図 14 DCM Wizard での VHDL または Verilog HDL 出力ファイルの生成

Xilinx Architecture Wizard

Cancel

Generating HDL file

x462_14_061803

26 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

Component Instantiation フォルダの DCM フォルダを選択します 次にDCM フォルダにある DCMソース ファ イルを選択する と 隣接したウ ィンド ウにソース ファ イルが表示されます

このファイルは参照用と して または内容を新規ソース ファ イルに貼り付けて使用できます

VHDL および Verilog リファレンス ファイル

また この VHDL および Verilog のソース ファ イルは 次のザイ リ ンクス FTP サイ トからダウンロードできます

bull VHDL DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_vhdlzip

bull Verilog DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_verilogzip

クロック スキューの低減

スキューの低減はDCM の基本的な機能の 1 つです 50 MHz 以上の速度で動作するデザインではクロ ッ ク スキューの低減が重要であ り このク ロ ッ ク スキューの低減に関連する概念は DCM を使用したその他のアプリ ケーシ ョ ンにも応用できます

クロック スキューとはク ロ ッ ク スキューは本質的にすべての同期システムに存在します ク ロ ッ ク ソースによって生成されたクロ ッ ク エッジは システム内の異なる点に 異なる時間に到達します これは 1 つのデバイス内の場合も クロ ッ クで接続された異なるデバイスへのクロ ッ ク入力の場合もあ り ます こ こで発生する到達時間の差がクロ ッ ク スキューです

図 16 に 同期システムにおけるクロ ッ ク スキューの例を示します ク ロ ッ ク ソースによって ク ロ ック入力が FPGA へ駆動され FPGA 上の入力ピンに入る と 内部の低スキュー グローバル ク ロ ッ クネッ ト ワークを使用して分配され FPGA 内部のフ リ ップフロ ップに到達します ク ロ ッ ク パスにある各エレ メン トによって フ リ ップフロ ップにクロ ッ ク エッジが到達する時間に遅延が生じます その結果と して フ リ ップフロ ップにおけるク ロ ッ ク入力 (B) で遅延が発生する つま り ク ロ ッ ク ソース (A)と比較してスキューが発生します この例では ク ロ ッ ク スキュー つま り到達時間の差を ∆b と します

図 15 Project Navigator 言語テンプレートでの DCM デザインの選択

Language Templates

Verilog

Component Instantiation

Block RAM

CLK0

CLK0_FB

CLK2X

Templates Module BUFG_CLK0_SUBM Description Verilog Submodule DCM with CLK0 deskew-

module BUFG_CKL0_SUBM ( CLK_IN RST CLK1X LOCK

DCM

x462_15_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 27

R

同様に ク ロ ッ ク ソースは FPGA 内部で再びバッファを介し ボード上にある別のデバイスを駆動します この例では クロ ッ ク ソースは再び入力ピンを通って FPGA に入り グローバル ク ロ ッ ク ネット ワークで分配され FPGA の出力ピンを通って PCB 上のト レースで別のデバイスに接続されますそのため ク ロ ッ ク パスにおける総遅延が大き くな り その結果と して発生するスキュー ∆c も大き くな り ます

クロック スキュー パフォーマンス低下の原因ク ロ ッ ク スキューによって セッ ト アップ時間 および clock-to-output 遅延が増加し ク ロ ッ ク サイクル時間が長くなるため デザインのパフォーマンス全体が低下する可能性があ り ます また ク ロ ッ クスキューによって 長いホールド時間が必要となる場合があ り このホールド時間を確保できない場合

には 不安定な動作を引き起こす可能性があ り ます

スキューの削除

ク ロ ッ ク スキューを削除する方法はあるのでし ょ う か 幸いにも デジタル ク ロ ッ ク マネージャ(DCM) はこのよ うな機能を備えています 図 17 に図 16 と同様の例を示しますがこ こでは Spartan-3 デバイスを使用しています 2 つの DCM によって次のよ うにクロ ッ ク スキューが削除されます 1つの DCM がFPGA 内部でクロ ッ ク入力されたものからのスキューを削除しも う一方の DCM が ボード上で別のデバイスにクロ ッ ク入力する場合のスキューを削除します この結果 (A) (B) および (C)のすべての点で理想的なクロ ッ ク間のアライ メン ト を実現できます

実際には ク ロ ッ ク スキューはどのよ うに削除されるのでし ょ うか ク ロ ッ ク スキューの原因は クロ ッ ク パスにおける遅延である こ と を思い出して ください 図 17 では (B) のク ロ ッ クで ∆ 分のスキューがあ り (C) のクロ ッ クに ∆c 分のスキューがあ り ましたが ク ロ ッ クを (B) に ∆b 分早く到達させ (C) に ∆c 分早く到達させる方法がある場合には どのよ うになるでし ょ うか このよ う な場合にはすべてのクロ ッ クのエッジが一致するよ うに調整されセッ ト アップ時間および clock-to-output 遅延が減少するため システム全体のパフォーマンスが向上します

図 16 すべての同期システムに存在するクロック スキュー

OtherDevice on

Board

FPGA

c b

A

A

C

B

B

C

x462_16_062403

28 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

過去のクロック動作から将来のクロック動作を予測

Spartan-3 FPGA は非常に高度なデジタル ロジッ クを使用していますが 将来の動作を予測するこ とはできません だたし DCM は過去のクロ ッ ク動作を使用し 将来のク ロ ッ ク動作を予測するために役立てます システムに入力されるほとんどのクロ ッ クの周波数は 不変で単調であるため 入力クロ ックの周期 (T) もほぼ一定になり ます

マイナスの遅延を挿入し ク ロ ッ ク スキューの影響を無効にするこ とはできないため DCM は目的としている時間に到達しているよ うに見えるよ うにクロ ッ クを遅らせます これは どのよ うに行われるのでし ょ うか ク ロ ッ ク サイクルは一定の周期 (T) で繰り返されます 図 18 に示すよ うに (B) におけるクロ ッ クは ∆b 分進んでいるよ うにみえますが 実際には (T ndash ∆b) 分遅くなっています 同様に(C) におけるクロ ッ クは (T ndash ∆c) 分遅れています

図 17 Spartan-3 デザインにおけるクロック スキューの削減

図 18 一定周波数のクロックを遅延させる

OtherDevice on

Board

Spartan-3 FPGA

DC

M

Ideal Clock Alignment

b

cEarly Clocks Eliminate Skew

A

B

C

A

B

C

DC

M

A

B

C

x462_17_062403

c

b

Clock Period (T)

Delay=T- b

Delay=T- c

A

B

C

x462_18_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 29

R

入力クロ ッ ク信号は単調であるため ク ロ ッ ク周期 (T) は容易にわかり ますが ク ロ ッ ク スキュー遅延である ∆b および ∆c はど うでし ょ うか 異なる条件の元で複数のシステムにおける動作を詳細に検証するこ とによって これらの値を決定するこ と もできますが 実際には現実的である とは言えません

さ らに ∆b および∆c の値はデバイスによって異なり 同一のデバイス上でも温度または電圧によって変化します

Spartan-3 DCM では ∆b および ∆c をあらかじめ決定するのではなく フ ィードバッ ク ループによって遅延を確認する遅延ロッ ク ループ (DLL) を使用します (図 17 を参照してください) こ こで示している例では 2 つの DCM を使用して 1 つの DCM が内部信号のスキューを削減し も う一方の DCMが外部デバイスへの信号のスキューを削減します また 両方の DCM に各ク ロ ッ ク フ ィードバッ クループがあ り ます DLL は温度または電圧によって引き起こ されるわずかな変更にも適応します

ターゲッ トのロック

適切な遅延を決定し挿入するためにはDCM で数千クロ ッ ク サイ クルのサンプルが必要です DCMで適切な遅延が挿入される と LOCKED 出力信号がアサート されます

DCM で LOCKED 信号がアサート されるまでDCM ク ロ ッ ク出力は使用しないでください DCM が入力クロ ッ ク信号に対してロ ッ ク状態になるまでのク ロ ッ ク出力は無効です DCM がロ ッ ク状態になる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な要素が含まれている可能性があ り ます

アプリ ケーシ ョ ンではLOCKED 信号を出力クロ ッ クが有効であるこ とを確認するために使用しますLOCKED 信号をクロ ッ ク信号が使用可能な状態であるこ とを示すものと して理解してください

安定した単調なクロック入力

DCM が適切に動作するためには 安定した単調なクロ ッ ク入力が必要です そのよ う なク ロ ッ ク入力によって ク ロ ッ ク周期を予測でき出力クロ ッ クのタイ ミ ングを適切に調整できます DCM はいったんロ ッ ク状態になる と『Spartan-3 データ シート 』 で指定された値までのクロ ッ ク周期変動に対応できます 「DCM 使用のためのクロ ッ ク条件」 を参照して ください

入力ク ロ ッ ク周波数が変動して指定された範囲外と なった場合 DCM のロ ッ ク状態が解除されLOCKED 出力は Low になり ます ロ ッ ク状態が解除された場合 DCM を リセッ ト して再びロ ッ クする必要があ り ます 入力クロ ッ クが指定された制限を満たしている場合はLOCKED 出力が High である限り出力クロ ッ クは常に有効です しかし LOCKED 出力は High を維持していますが クロ ッ ク入力が指定された範囲外で CLKDV 出力または CLKFX 出力が無効となる場合があるため問題のないデザインを作成するためには 安定した単調なクロ ッ ク入力が重要です

DCM CLKIN 入力へのパスと して 4 つのグローバル バッファ入力 (IBUFG) のうち デバイス上で同一辺にあるバッファ入力の 1 つを使用する こ と を推奨します IBUFG パスを使用する こ とによってパッ ドからグローバル バッファを通って DCM に到達までの遅延がスキュー調整された出力から削除されます ただし 表 11 に示すその他のパスも使用できます また CLKIN 入力を駆動する信号は汎用相互接続を通る汎用入力ピン (IBUF プリ ミ ティブ) グローバル バッファ入力 (IBUFG) グローバル バッファ マルチプレクサ (BUFGMUX BUFGCE) からの入力と して使用できます 同様に LVDSク ロ ッ ク入力をクロ ッ ク入力と して使用できる場合もあ り ます スキュー調整ロジッ クはLVCMOS または LVTTL のよ うなシングル エンドのクロ ッ ク入力のために特性評価されています ただし 差動信号では IO タイ ミ ングによって わずかな位相エラーが発生する可能性があ り ます 特定の IO タイミ ングについては 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

30 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

確実なソースからのフ ィードバック

適切な遅延に対してロ ッ ク信号をアサートするために DCM は 入力クロ ッ クおよびクロ ッ ク分散遅延後にタ ップされるフ ィードバッ ク ク ロ ッ クの両方をモニタします ク ロ ッ ク フ ィードバッ ク パスにおける総遅延に制限はあ り ません DLL では 必要に応じて逓倍したク ロ ッ ク周期を使用する こ とによって出力クロ ッ クを遅らせます このよ うにDCM は内部遅延または外部遅延を相殺できますがクロ ッ ク フ ィードバッ クは適切なフ ィードバッ ク地点に接続する必要があ り ます

内部クロック信号からのスキュー削除

図 19 に示すよ うにFPGA 内部のスキューを削減する場合フ ィードバッ ク タ ップは FPGA 内部のエレ メン トに入力されるクロ ッ ク と同一のクロ ッ ク とな り ます 通常 フ ィードバッ ク ク ロ ッ クは デバイス上で DCM と同一辺にある ク ロ ッ ク バッファ (BUFG) またはグローバル ク ロ ッ ク マルチプレクサ (BUFGMUX または BUFGCE) に接続されている DCM からの CLK0 出力 (位相シフ ト なし ) ですまたは CLK0 出力ではなく DCM の CLK2K 出力 (位相シフ ト なし 2 逓倍) をフ ィードバッ ク と して使用できます

表 11 クロック入力ソース

CLKIN ソース 説明

グローバル バッファ入力を使用

グローバル バッファ入力 IBUFG は DCM への外部クロ ッ クのソースと して適切です パッ ドからグローバル バッファを通り CLKIN 入力までの遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

グローバル ク ロ ッ ク バッファ BUFG BUFGCE または BUFGMUX プリ ミ ティブを使用するグローバル ク ロ ッ ク バッファは内部生成された DCM へのクロ ッ ク ソース と して適切です グローバル バッファを通る際の遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

汎用 IO を使用 任意のユーザー IO IBUF は 外部クロ ッ クのソースと して使用できます パッ ドから DCM への遅延をあらかじめ決定するこ とはできません これは入力パスとなる可能性を持つパスが多数

存在するためであ り その結果 DCM は遅延を削除できません

内部ロジッ クから派生 FPGA 内部のロジッ ク も ク ロ ッ ク ソース と して使用できます しかしロジッ クから DCM への遅延をあらかじめ決定するこ とはできないため DCM は遅延を削除できません

I OIBUFG

BUFGI O

BUFGCEI O

CE

O

S

BUFGMUXI0

I1

I OIBUF

InternalLogic

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 31

R

外部クロック信号からのスキュー削除

外部クロ ッ クを使用した DCM フ ィードバッ クの設計は内部クロ ッ クの場合よ り も複雑です 図 20 に示すよ うに理想的にはフ ィードバッ ク ク ロ ッ クは PCB ト レースまたは外部クロ ッ クの再バッファの後のすべての外部クロ ッ クに入力される点から始ま り ます

LOCKED 信号は DCM がロ ッ ク状態になったこ と およびク ロ ッ ク信号が有効であるこ とを示します LOCKED 信号によって 外部デバイスが使用可能になり その反転バージ ョ ンはアクティブ Lowのチップ イネーブル信号に接続できます

コンフ ィギュレーシ ョ ン後の DCM リセッ ト

外部フ ィードバッ クを使用する場合 コンフ ィ ギュレーシ ョ ン直後に DCM の リ セッ ト をパルスしDCM のロ ッ ク状態を維持する必要があ り ます 図 20に示すよ うに0x000F で初期化された SRL16 から必要な リセッ ト パルス信号を出力できます 「RST 入力」 を参照して ください

なぜリセッ トする必要があるのか

なぜ このよ うに追加的な リセッ ト パルスが必要なのでし ょ うか 最適にロ ッ クするためには DCMをロ ッ ク状態にし その状態で安定させるために 外部フ ィードバッ クでコンフ ィギュレーシ ョ ンされ

た DCM で CLKIN および CLK0 または CLK2X のいずれかの信号を使用する必要があ り ます コンフ ィギュレーシ ョ ン実行中は FPGA の IO バッファがまだアクティブではないために 外部フ ィードバッ ク CLKFB を使用できません

コンフ ィギュレーシ ョ ンの終了時に デバイスがスター ト アップ シーケンスを開始する と DCM はキャプチャ プロセスを開始します この時点では FPGA のグローバル 3-ステート信号 (GTS) はアサー

図 19 内部クロック信号でのスキュー削減

I OBUFG

FPGA

(or BUFGMUX or BUFGCE)

( )

ldquoClock Goodrdquo

I OIBUFG

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)(

)

x462_19_061803

図 20 外部クロック信号でのスキュー削減

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)

I OOBUF

I OOBUF

FPGA

CLK

ENABLE

( )

RESETD

WCLK

A[30]

Q

INIT=000F

SRL16

I OIBUFG

I OIBUFG

x462_20_062203

32 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ト されているため すべての出力ピンは 3-ステート (ハイ -インピーダンス フローティング) 状態を維持しています このため CLKFB 信号のロジッ ク ステートはわかり ません

GTS のアサート状態の解除後CLKFB に信号が現れDCM が CLKFB 信号を取り込みますが リセット パルスがない場合 DCM が適切な時点でロ ッ ク しない可能性があ り DCM でジッタがわずかに増加し ク ロ ッ ク サイクル レイテンシも増加する可能性があ り ます

また リセッ ト パルスがない場合 PCB のシグナル インテグ リティの問題によって 3-ステート状態にある CLKFB 信号がボード上でほかの信号と ク ロス カップルする とい う問題が発生する可能性があり ます DCM では この無効なクロス カップルされた信号を CLKFB 信号と認識し ロ ッ クするためGTS 信号のアサートが解除され 適切な CLKFB 信号が現れたと きにロ ッ クできない場合があ り ます

遅延ロック ループとはク ロ ッ ク遅延を削除するための 2 つのタイプの回路

bull 遅延ロッ ク ループ (DLL)

bull 位相ロッ ク ループ (PLL)

DLL および PLL には クロ ッ ク分散遅延を削除する という機能以外に周波数合成 クロ ッ ク調整および位相シフ ト などの機能があ り ます

遅延ロック ループ (DLL)

図 21 に示すよ うに単純な形の DLL はタップ遅延ラインおよび制御ロジッ クで構成されます 遅延ラインは入力クロ ッ クCLKINに遅延を挿入したク ロ ッ クを生成し ク ロ ッ ク分散ネッ ト ワークでは そのクロ ッ クがすべての内部レジスタおよびクロ ッ ク フ ィードバッ ク CLKFB ピンに配線されます 一方制御ロジッ クは遅延ラインを調整するために常に入力クロ ッ クおよびフ ィードバック ク ロ ッ クをサンプルします 遅延ラインでは電圧制御遅延または不連続の遅延エレ メン トが使用されています 最適で安定したパフォーマンスを実現するために Spartan-3 DLL ではすべてのデジタル遅延ラインを使用します

DLL は入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クの立ち上がりエッジが調整されるまで それらのクロ ッ ク間に遅延を挿入し ク ロ ック周期から クロ ッ ク分散遅延分を差し引いた時間だけフ ィードバッ ク ク ロ ッ クを遅らせるこ とによって機能します DLL および PLLの専門的解説では フ ィードバッ ク ク ロ ッ クは 360deg 位相がずれたもの つま り同一の位相に再び現れるものと定義されています

入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クのエッジが調整される とDLL がロ ッ ク し これらの 2 つのクロ ッ ク間に認識できる差異はなくな り ます つま り DLL 出力クロ ッ クのクロ ッ ク分散ネッ ト ワークにおける遅延がなくな り ソース ク ロ ッ ク とそのロード間の遅延を効果的に削除されています

図 21 遅延ロック ループ (DLL) ブロック図

ClockDistributionNetwork

Control

VariableDelay Line

CLKOUT

CLKFB

CLKIN

x462_21_061903

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 33

R

スキュー調整

こ こでは主にスキューの削減方法およびクロ ッ ク ソースに対する内部クロ ッ ク と外部クロ ッ クの位相調整の方法について説明します 実際には DCM は DESKEW_ADJUST という属性を使用し 意図的にわずかなスキューを追加します DCM Wizard では アドバンス ド オプシ ョ ン ウ ィ ンド ウでこのDESKEW_ADJUST 属性を設定します

この属性には STEM_SYNCHRONOUS および SOURCE_SYNCHRONOUS という 2 つの基本的なアプリ ケーシ ョ ンがあ り ます 大多数のアプリ ケーシ ョ ンではSYSTEM_SYNCHRONOUS 設定を使用します 次に 各モードの目的を説明します

システム同期

図 23 に示すよ うに システム同期アプリ ケーシ ョ ンでは 1 つのデータ パスにあるすべてのデバイスが共通のクロ ッ ク ソースを使用します これが 従来の最も一般的なシステム構成です デフォルト設定である SYSTEM_SYNCHRONOUS オプシ ョ ンを選択する と データ キャプチャ時のホールド時間がゼロになるよ うに わずかなクロ ッ ク遅延が追加されます ホールド時間とは 基本的にベス ト ケースのデータ パスと ワース ト ケースのクロ ッ ク パス間の差です DCM のクロ ッ ク スキュー削減機能はクロ ッ クを進めるこ とによって動的にワース ト ケースのクロ ッ ク パスを短縮します しかし ク ロ ッ

位相ロック ループ (PLL)

PLL は DLL と同様の基本的な機能を持つよ うに設計されていますが異なるアーキテクチャを使用します 図 22 に示すよ うにPLLと DLL の根本的な違いは DLL が遅延ラインを使用するのに対して PLL では電圧制御オシレータを使用し CLKIN と同様のクロ ッ ク信号を生成します位相検出器およびフ ィルタで構成される制御ロジッ クは ク ロ ッ ク分散システムでの遅延を補う よ うにオシ

レータの周波数と位相を調整します PLL の制御ロジッ クは 入力ク ロ ッ ク と フ ィードバッ ク ク ロ ッ ク CLKFB を比較し 入力クロ ッ クの立ち上がりエッジがフ ィードバッ ク ク ロ ッ クの立ち上がりエッジと一致するよ うにオシレータのクロ ッ クを調整します その後 PLL はロッ ク状態になり ます

インプリ メンテーシ ョ ン

DLL および PLL 内部では アナログ回路またはデジタル回路のいずれかが使用され 各回路はぞれぞれに利点があ り ます 慎重な回路設計を行ったアナログ回路の場合 DLL または PLL ではよ り厳密にタイ ミ ングを調整でき 使用するシ リ コン エリ アが少なくなり ます

一方デジタル回路を使用した設計の場合 ノ イズ耐性が優れ消費電力が低く ジッ タのパフォーマンスよ り良いという利点があ り

ます また ク ロ ッ クを停止させるこ とができるため 電力管理が容易になり ます アナログ設計では 追加の電力供給が必要な場合があ りよ り正確に電源供給の制御を行う必要があるために新しい処理テク ノ ロジに移行する際に問題が発生する可能性があ り ます

DLL と PLL

アプリ ケーシ ョ ンで PLL または DLL を選択する場合は アーキテクチャの違いを理解するこ とが重要です PLL で使用されるオシレータは 本質的に不安定な状態であるため ク ロ ッ ク分散ネッ ト ワークの遅延を補う際に PLL のパフォーマンスが低下します 逆に常に安定している DLL アーキテクチャは遅延およびクロ ッ ク調整の機能の点では PLL よ り優れている一方で PLL はDLL より柔軟に新しいクロ ッ ク周波数の合成を行います

図 22 位相ロック ループ (PLL) ブロック図

ClockDistributionNetwork

Control

Voltage ControlledOscillator

CLKOUT

CLKFB

CLKIN

x462_22_061903

34 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ク パスを短縮するこ とによって ク ロ ッ クがデータの前に現れる場合には結果と してホールド時間が発生します SYSTEM_SYNCHRONOUS オプシ ョ ンを使用するこ とによってホールド時間がゼロになるために十分なスキューをクロ ッ ク パスに追加できる一方でclock-to-output 時間がわずかに増加します

ソース同期

SOURCE_SYNCHRONOUS モードは本来高速データ通信インターフェイスで使用される高度な設定です 図 24 に示すよ うに ソース同期アプリ ケーシ ョ ンではデータおよびクロ ッ クの両方が同一のクロ ッ ク ソースから派生します 送信デバイスは データおよびクロ ッ クを受信デバイスに送信し 受信デバイスはデータに対して最適なクロ ッ クが入力されるよ うにクロ ッ ク タイ ミ ングを調整します 高速デュアル データ レート (DDR) および LVDS 接続などがこのシステムの例です

SOURCE_SYNCHRONOUS 設定によって入力クロ ッ ク と DCM からのデスキュー出力クロ ッ ク間の位相をゼロにし 次に FPGA アプリ ケーシ ョ ンでは固定位相シフ ト モードまたは動的ファ イン位相シフ ト モードを使用してクロ ッ クのタイ ミ ングを調整します 次のアプリ ケーシ ョ ン ノートではソース同期デザインおよび動的位相調整について説明しています

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcomxappxapp622pdf

また 次のアプ リ ケーシ ョ ン ノート では システム レベルのタイ ミ ングについて詳細に解説しています このアプリ ケーシ ョ ン ノートはVirtex-II および Virtex-II Pro FPGA アーキテクチャについて説明するものですが ほとんどの概念を Spartan-3 FPGA に適用できます

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

タイ ミングの比較

図 25 にデュアル データ レート (DDR) アプリ ケーシ ョ ンで SYSTEM_SYNCHRONOUS 設定およびSOURCE_SYNCHRONOUS 設定を使用した場合のタイ ミ ング比較を示します DDR アプリ ケーシ ョンでは 各データ ラインに 2 つのデータ ビッ トが ク ロ ッ ク周期の前半および後半に各 1 つずつ現れます

図 23 共通のクロック ソースによってクロック入力されるシステム同期アプリケーシ ョ ン

図 24 データ ソースがデータ クロックを入力するソース同期アプリケーシ ョ ン

ClockSource

DATA_INDATA_OUT

x462_23_061903

ClockSource

DATA_INDATA_OUT

DATA_CLK

x462_24_061903

クロック調整

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 35

R

SYSTEM_SYNCHRONOUS モードではDCM のクロ ッ ク パスに適切なスキューが追加されホールド時間がゼロになり ます

これに対して SOURCE_SYNCHRONOUS モードでは DCM のクロ ッ ク パスにスキューは追加されませんが FPGA アプ リ ケーシ ョ ンでスキュー追加 または位相シフ ト が行われ ク ロ ッ クはデータウ ィンド ウにおいて理想的な位置で入力されます

クロック調整 ク ロ ッ ク調整とは 入力ク ロ ッ クのデューティ サイ クルが 50 以外の場合に 50 に調整する機能です 図 26 にHigh 時間が約 40 であ りLow 時間が約 60 (4060 デューティ サイクル) である入力ク ロ ッ クを ほぼ完全な 50 デューティ サイ クルを持つ入力クロ ッ クに調整する例を示します完全な 50 デューテ ィ サイ クル と な ら ない理由は CLKOUT_DUTY_CYCLE_DLL およびCLKOUT_DUTY_CYCLE_FX で指定されるデューティ サイ クルのずれが存在するためです これらの値は 『Spartan-3 データ シート 』 に記載されています デューティ サイクルのずれの概算値は 150ps未満です

クロ ッ クのデューティ サイクルが 50 であるこ とはVLDS またはデュアル データ レート (DDR) アプリ ケーシ ョ ンなどの高速通信インターフェイス ク ロ ッ ク転送アプリ ケーシ ョ ン またはクロ ッ ク ミラー アプリ ケーシ ョ ンにおいて不可欠な条件です 「デュアル データ レート (DDR) ク ロ ッ クの例」 を参照して ください

DCM では 自動的にほとんどのク ロ ッ ク出力のデューティ サイ クルが 50 に調整され それ以外の場合には動作条件または属性設定によって オプシ ョ ンと して調整されます 表 12 を参照して ください

図 25 デュアル データ レート (DDR) アプリケーシ ョ ンにおける SYSTEM_SYNCHRONOUS モードおよび SOURCE_SYNCHRONOUS モードのタイ ミング比較

SYSTEM_SYNCHRONOUS

DATA_IN

SOURCE_SYNCHRONOUS

SOURCE_SYNCHRONOUS+ Fixed or Dynamic Phase Shift

Data capture windowor data ldquoeyerdquo

x462_25_061903

図 26 DCM におけるデューテ ィ サイクル修正機能

CLKIN

ConditionedClock Output

50 50

40 60

x462_26_061903

36 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

14 位相シフ ト出力である CLK0 CLK90 CLK180 および CLK270 はDUTY_CYCLE_CORRECTION 属性を使用し ク ロ ッ ク調整を行う こ とができます デフォルトではDUTY_CYCLE_CORRECTION 属性は TRUE に設定され これらの出力は 50 デューティ サイクルに調整されます この属性を FALSE に設定する場合 クロ ッ ク調整は機能せず クロ ッ ク出力のデューティ サイクルは入力クロ ッ ク とほぼ同一になり ますが 完全に CLKIN のデューティ サイクルと一致するこ とは保証されていません

位相シフ ト - クロック周期の分数でクロックを遅延

また DCM ではクロ ッ ク周期の分数分だけ入力クロ ッ クを遅らせるこ とによって 位相をシフ ト させるこ とができます

DCM は 4 つの位相シフ ト タイプをサポート し各タイプを別々に使用するこ と またはほかの位相シフ ト タイプと組み合わせて使用するこ とができます 表 13 に 各クロ ッ ク出力での位相シフ ト機能を示します

1 ほとんどの 12 ク ロ ッ ク周期位相シフ ト出力では50 デューティ サイクル調整を行います 出力のペアの立ち上がりエッジは0degおよび 180deg位相シフ ト した位置またはクロ ッ ク周期の最初および 12 周期の位置にあ り ます

2 0deg(CLK0) 90deg(CLK90) 180deg(CLK180) および 270deg(CLK270) の 14 位相シフ ト出力ではオプシ ョ ンと して 50 デューティ サイ クル調整を行います

3 固定ファイン位相シフ トではすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

4 動的ファイン位相シフ トでは FPGA アプリ ケーシ ョ ン内部のすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

表 12 デューティ サイクルを 50 にするためのクロック出力調整

DCM クロック出力

50 デューティ サイクル出力

CLK0CLK90

DUTY_CYCLE_CORRECTION = TRUE

CLK180CLK270

CLK2XCLK2X180

CLKDV

CLKFXCLKFX180

常に

DLL_FREQUENCY_MODE 属性

LOW HIGH

DUTY_CYCLE_CORRECTION = TRUE 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に CLKDV_DIVIDE が整数値の場合

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 37

R

12 クロック周期位相シフ ト出力12 周期位相シフ ト出力では 位相シフ トのないク ロ ッ ク およびそのクロ ッ クを 12 周期シフ ト させた (180deg位相シフ ト ) ク ロ ッ クが出力されます 12 周期位相シフ ト出力は表 14 に示すよ うにペアで出力されます

表 13 クロック出力の位相シフ ト機能

クロック出力12 クロック周期

14 クロック周期

固定または動的

位相シフ ト

CLK0CLK90CLK180CLK270CLK2XCLK2X180CLKDVCLKFXCLKFX180

表 14 12 クロック周期位相シフ ト出力

出力ペア解説

位相シフ トなし 180deg位相シフ ト

CLK0 CLK180 周波数は CLKIN と同一です デフォルトで 50 デューティ サイクルに調整されDUTY_CYCLE_CORRECTION 属性に制御されます

CLK2X CLK2X180 2 逓倍クロ ッ ク (CLK2XCLK2X180) からの出力です周波数は CLKIN 周波数の 2 倍であ り デューティ サイ クルは常に 50 です

CLKFX CLKFX180 周波数合成回路 (CLKFX CLKFX180) からの出力です 出力周波数は周波数合成の属性によって決定されます デューティ サイ クルは常に 50 です

38 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

12 周期位相シフ ト出力は高速デュアル データ レート (DDR) デザインおよびクロ ッ ク ミ ラーなどのデューティ サイクルが重要となるデザインにとって理想的です 図 27 に示すよ うに12 周期位相シフト出力のペアの 1 つはクロ ッ ク周期の始めに立ち上がり も う 1 つはそのクロ ッ ク周期の半分の地点で正確に立ち上がり ます

12 周期位相シフ ト出力によるデューテ ィ サイクルのずれの削減

DCM のクロ ッ ク出力が 50 デューティ サイクルに調整された場合 180deg位相シフ ト ク ロ ッ クは位相シフ トのないクロ ッ クを反転させたよ うに見えます 低周波数アプリ ケーシ ョ ンでは 基本的にこれが成立します

しかし アプリ ケーシ ョ ンが非常に高い周波数で動作する場合は 各ト ランジスタの立ち上がり時間お

よび立ち下がり時間の差が原因となって発生するデューティ サイ クルのずれが FPGA 内部で問題となり ます つま り 始めはデューティ サイクルが 50 の場合でも ク ロ ッ ク サイクル間で常にクロ ッ クHigh と ク ロ ッ ク Low の間に差が生じます

デュアル データ レート (DDR) クロックの例

図 28 に DCM ク ロ ッ ク出力 CLKx が デュアル データ レート (DDR) 出力フ リ ップフロ ップの 2 つのクロ ッ クを駆動する例を示します DDR ク ロ ッ ク入力の 1 つはクロ ッ ク出力をそのまま使用しますが も う一方の入力は DDR フ リ ップフロ ップ内部でクロ ッ クを反転させます DCM からの CLKx 出力のデューティ サイクルは 50 ですが FPGA のクロ ッ ク ネッ ト ワークを伝搬する間にデューティサイ クルにずれが発生します こ こで示す例では このデューティ サイクルのずれによって ク ロ ッ クHigh 時間が短縮され ク ロ ッ ク Low 時間が長くな り ます その結果と してC1 ク ロ ッ ク入力はクロ ック周期の半分の時点よ り もわずかに前にト リガします 低周波数の場合 このずれは無視して問題あ りませんが 高性能の DDR ベースのシステムでは 正確なクロ ッ ク設計が必要です

図 27 12 周期位相シフ ト出力

180˚0˚

frac12T 1T

CLKx

CLKx180

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)

x462_27_061903

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 39

R

図 29 に 図 28 に若干の修正を加えた回路例を示します この例では DCM からの位相シフ ト していない出力および 180deg位相シフ ト した出力の両方が DDR 出力フ リ ップフ ロ ップに入力されますCLKx ク ロ ッ ク信号は ク ロ ッ ク周波数の開始時点で正確に DDR フ リ ップフロ ップの C0 入力を ト リガし CLKx180 ク ロ ッ ク信号はクロ ッ ク周波数の半分の時点で正確に C1 入力を ト リガします この方法を使用する場合には 追加のグローバル バッファおよびグローバル ク ロ ッ ク ラ インが必要になりますが 約 300 ps (この値は概算です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください) までのデューティ サイクルを削減できます

図 28 デュアル データ レート (DDR) 出力におけるデューティ サイクルのずれ

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx at Flip-Flop(with duty-cycle distortion)

Duty-cycle distortion

Factor in distortionwhen using a singleinverted clock

CLKx(50 duty cycle)

BUFGCLKx

DCM

CLKIN

x462_28_061903

40 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

表 15 に DDR 出力フ リ ップフロ ップおよび LVDS 出力を使用して測定したデューティ サイクルのずれの値を示します この出力タイプ以外では 立ち上がり時間および立ち下がり時間に差が生じるこ とによって さ らにずれが大き くなる可能性があ り ます このずれは IBIS を使用してシ ミ ュレーシ ョ ンを実行し 検証できます

14 位相シフ ト出力図 30 および表 17 に示すよ うに 14 位相シフ ト出力は CLKIN 入力を 14 周期分シフ ト させたものです 14 位相シフ ト出力には CLKFB 入力へ戻るフ ィードバッ ク パスが必要であるため CLK0 出力の位相は CLKIN 入力の立ち上がりエッジと一致するよ うに調整されます CLK90 出力は CLKIN 入力を90deg位相シフ ト させて生成したものであ り ほかの位相シフ ト出力も同様に生成されます

図 29 12 周期位相シフ ト出力を使用したデューテ ィ サイクルのずれの削減

CLKx at Flip-Flop(with duty-cycle distortion)

180 ˚Phase Shift

CLKx180 at Flip-Flop(with duty-cycle distortion)

CLKx(50 duty cycle)

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKIN

CLKx180

BUFG

BUFG

x462_29_061903

表 15 デューティ サイクルのずれのパラメータ

パラ メータ 説明 概算値

TDCD_CLK0 IO ブロ ッ クにある DDR エレ メン トに対して ク ロ ッ ク立ち下がりエッジでローカル反転したクロ ッ クを入力する場合のデューティ サイクルのずれです 図 28を参照してください

~400 ps

TDCD_CLK180 IO ブロ ッ クにある DDR エレ メン トに対して DCM CLKx180 をクロ ッ ク入力する場合のデューティ サイクルのずれです 図 29を参照してください

~60 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 41

R

DLL 周波数モードによる出力の有効性

14 位相シフ ト出力が有効であるかは DLL_FREQUENCY_MODE 属性で制御される DLL の周波数モードによって決定されます 表 16 に示すよ うに 低周波数モード (DLL_FREQUENCY_MODE=LOW) ではすべての 14 位相シフ ト出力が有効ですが高周波数モードでも有効な出力は CLK0 および CLK180 のみです

5050 デューティ サイクル調整オプシ ョ ン

オプシ ョ ン と して DUTY_CYCLE_CORRECT 属性を使用し 14 位相シフ ト出力を一括して 50デューテ ィ サイ クルに調整できます この属性が TRUE の場合 (デフォル ト ) 4 つの出力すべてのデューティ サイ クルが 50 にな り FALSE の場合は 各出力のデューティ サイ クルと CLKIN 入力のデューティ サイクルは一致しません 詳細は 「ク ロ ッ ク調整」 を参照してください

4 つの位相 遅延クロックエッジ 位相パルス

表 17 に示すよ うに 14 位相シフ ト出力は ぞれぞれ 1 つ前のパルスから 14 周期遅れた立ち上がりエッジで出力されます これらの出力は メモ リ インターフェイスおよびペリ フェラル制御などのアプリ ケーシ ョ ンにおけるタイ ミ ングを柔軟にします

また デューテ ィ サイ クル修正オプシ ョ ンがイネーブルの場合 (DUTY_CYCLE_CORRECTION =TRUE の場合) これらの出力を次のよ うに考えるこ とができますこれらの出力には 14 周期の間隔で

図 30 CLKIN 入力 の 14 周期位相シフ ト出力 (デューティ サイクル修正イネーブルの場合)

表 16 DLL 周波数モードによる 14 位相シフ ト出力の有効性

出力DLL_FREQUENCY_MODE

LOW HIGH

CLK0

CLK90

CLK180

CLK270

270˚180˚90˚0˚

frac14T frac12 T frac34T 1T

CLK0

CLK90

CLK180

CLK270

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)x462_30_061903

42 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

立ち下がりエッジがあ り ます (表 17 を参照) 同様に各出力には周期幅が同一である High パルス時間と Low パルス時間があるこ とになり たとえば 図 30 に示す CLK90 の High パルス部分は CLK0 クロ ッ ク周期の中央に位置しています

ファイン位相シフ ト

DCM では ファ イン位相シフ ト を使用するこ とによって ク ロ ッ ク スキューを制御するこ と もできます ファ イン位相調整はすべての DCM 出力に対して同時に機能します この位相調整にはDCM のDLL 機能ユニッ ト を使用するため CLKFB 入力を通るクロ ッ ク フ ィードバッ クが必要です

物理的には CLKIN と CLKFB の立ち上がりエッジ間の位相関係を調整するこ とによってシフ トが行われますが すべての DCM 出力が CLKIN 入力に関連して位相シフ ト されます

デフォルトでは ファ イン位相シフ トはディ スエーブル (CLKOUT_PHASE_SHIFT=NONE) です つま り ク ロ ッ ク入力は CLKIN で位相調整されています この場合 入力クロ ッ ク CLKIN と フ ィードバッ ク ク ロ ッ ク間におおよそのフ ィードバッ ク地点で計測されるスキューはあ り ません (「確実なソースからのフ ィードバッ ク」 を参照して ください) 図 31 に示すよ うに ファ イン位相シフ トがイネーブルの場合 出力クロ ッ クのエッジは位相シフ ト され CLKIN 入力の前または後になり ます

次にファイン位相シフ トの 2 つのモードについて説明します一般に高速データ通信アプリ ケーシ ョ ンでは 両方のモードが使用されます 「ソース同期」 を参照してください

1 固定ファイン位相シフ ト モードは位相シフ ト値を設計段階で設定します 位相シフ ト値はFPGAコンフ ィギュレーシ ョ ン実行中に取り込まれ アプリ ケーシ ョ ンで変更するこ とはできません

2 動的ファイン位相シフ トモードには 初期位相シフ ト値があ り 固定ファイン位相シフ トの場合と同様に この値は FPGA コンフ ィギュレーシ ョ ン中に取り込まれますが DCM の LOCKED 出力が High になった後であれば アプリ ケーシ ョ ンで変更可能です

固定ファイン位相シフ ト

固定ファ イン位相シフ ト モードでは 設計段階で指定されたシフ ト値が FPGA コンフ ィギュレーシ ョン実行中に設定され この値はアプリ ケーシ ョ ンで変更できません

このモードは 次の 2 つの属性によって制御されます CLKOUT_PHASE_SHIFT 属性が FIXED に設定し PHASE_SHIFT 属性が位相シフ ト量を制御します 図 31 に示すよ うに PHASE_SHIFT = 0 の場合は 出力ク ロ ッ クおよび CLKIN 入力の位相が一致する よ う 調整され ク ロ ッ ク出力はPHASE_SHIFT が負の整数の場合に CLKIN の前に位相シフ ト し正の整数の場合には CLKIN の後に位相シフ ト します

固定ファイン位相シフ ト範囲

PHASE_SHIFT 属性は常に整数値であ り その範囲は -255 ~ +255 ですが 実際の範囲は使用されるCLKIN の周波数によって異なり ます

表 17 14 位相シフ ト出力とそれらの特性 (DUTY_CYCLE_CORRECTION=TRUE)

DCM 出力 位相シフ トクロック周期

に対する遅延

立ち上がり

エッジ

立ち下がり

エッジ解説

CLK0 0deg 0 0 frac12T スキュー調整された入力クロ ッ ク 位相シフ ト なし

CLK90 90deg frac14T frac14T frac34T High パルス (frac34T 周期幅 周期の中央)

CLK180 180deg frac12T frac12T 0T CLK0 の反転 (立ち上がりエッジは周期の中央)

CLK270 270deg frac34T frac34T frac14T Low パルス (frac34T 周期幅 周期の中央)

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 43

R

PHASE_SHIFT 属性の範囲は 次の 2 つの値によって決定されます

1 1 つはナノセカンドで測定される CLKIN 入力の周期 である TCLKIN 値です

2 も う 1 つは Spartan-3 デバイスおよびスピード グレードによって指定される FINE_SHIFT_RANGE の値です この値は 『Spartan-3 データ シート 』 モジュール 3 に記載されています FINE_SHIFT_RANGE は 位相シフ ト遅延ラインにおける総遅延であ り 回路内の遅延タップ数の関数です 実際の遅延ラインは FINE_SHIFT_RANGE よ り長い場合があ り ますがFINE_SHIFT_RANGE までの値が保証されています

これらの値を 等式 1 に適用しSHIFT_DELAY_RATIO を算出します PHASE_SHIFT 属性の範囲はこの算出結果と 1 との不等式関係によって異なり ます

等式 1

SHIFT_DELAY_RATIO lt 1 の場合

ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り長い場合はSHIFT_DELAY_RATIO lt 1 であ り最大ファイン位相シフ ト範囲は FINE_SHIFT_RANGE によって決定されます SHIFT_DELAY_RATIO lt 1 の場合 PHASE_SHIFT 範囲は 等式 2 から求めるこ とができます

等式 2

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 PHASE_SHIFT 値は plusmn191 とな り ます

したがって SHIFT_DELAY_RATIO lt 1 の場合の位相シフ ト値は 等式 3 とな り ますPHASE_SHIFT = 1 と して ください

等式 3

図 31 固定ファイン位相シフ ト

0

Fixed Phase Shift- Limit

Fixed Phase Shift+ Limit

Clock Outputs

PHASE_SHIFT CLKIN DCM

CLKIN

x462_31_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

SHIFT_DELAY_RATIO FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------=

PHASE_SHIFTLIMITS plusmn INTEGER 256 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞=

TPhaseShiftPHASE_SHIFT

PHASE_SHIFTLIMITS----------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

44 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

SHIFT_DELAY_RATIO ge 1 の場合

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 1 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 4

したがって SHIFT_DELAY_RATIO ge 1 の場合の位相シフ ト値は 等式 5 とな り ます PHASE_SHIFT = 1 と して ください

等式 5

最小位相シフ ト

最小位相シフ トの大きさは 次の値の大きな方によって決定されます

1 『Spartan-3 データ シート 』 に DCM_TAP_MIN 仕様と して記載されている最小遅延ライン タ ップ値 (概算値は ~30ps)

2 ク ロ ッ ク周期の 1256

その他の考察点

固定位相シフ トモードでは 動的位相シフ ト制御入力をグランドに接続する必要があ り ます この接続

は DCM Wizard では自動的に行われます

DCM Wizard

固定位相シフ トモードを使用する場合は図 32 に示すよ うにDCM Wizard の [General Setup] ダイアログ ウ ィンド ウに表示される Phase Shift で [Fixed] をク リ ッ ク して ください これによって CLKOUT_PHASE_SHIFT 属性が FIXED に設定されます

[Phase Shift Value] を入力しますが この値は 上述した範囲内にある整数でなければなり ません これによってPHASE_SHIFT 属性値が設定されます DCM Wizard は位相シフ ト値が指定範囲内であるかを確認します

動的ファイン位相シフ ト

動的ファ イン位相シフ ト モードでは 固定ファ イン位相シフ ト モード と同様に 初期スキューまたは初期位相シフ トがコンフ ィギュレーシ ョ ン中に PHASE_SHIFT 属性によって制御されます ただし動的シフ ト モードの場合 DCM の LOCKED 入力が High になった後に 動的ファ イン位相シフ ト制御入力 PSEN PSCLK および PSINCDEC を使用して FPGA アプリ ケーシ ョ ンで現在の位相シフ ト値を修正できます

動作

図 33 に示すよ うに位相シフ ト制御入力を使用し現在の位相シフ ト値を修正します すべての動的位相シフ トは PSCLK の立ち上がりエッジに同期して行われ 有効な位相シフ トは PSEN イネーブル入

図 32 固定ファイン位相モードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

Fixed

x462_32_061803

PHASE_SHIFTLIMITS 255plusmn=

TPhaseShiftPHASE_SHIFT

256--------------------------------------------⎝ ⎠

⎛ ⎞ TCLKINbull=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 45

R

力を正確に 1 PSCLK ク ロ ッ ク周期間アサートするこ とによって開始します PSEN を 1 ク ロ ッ ク周期よ り長くアサートする場合には 適切に位相シフ ト を行う こ とができない可能性があ り ます

PSINCDEC の値は制御入力の増減を指定し 位相シフ トの方向を決定します PSINCDEC を High に設定する と 動的位相シフ ト値が増加し Low に設定する とその値は減少します

実際の位相シフ ト が行われる タ イ ミ ングはさ まざまであ り DCM で PSCLK ク ロ ッ クの 1 周期間PSDONE 出力が High にアサート された時に完了します PSEN がイネーブルであ り PSDONE がアサート されるまでの間 DCM 出力クロ ッ クは 初期位相シフ ト値から新しい位相シフ ト値まで 1 ビットずつスライ ド します シフ トが行われている間 DCM は入力クロ ッ クに対してロ ッ ク状態 つま りLOCKED 出力がアサート された状態を維持します

PSDONE がアサート されたと き またはアサート後に 次の位相シフ ト処理が開始されます

動的ファ イン位相シフ ト モードを使用する場合は CLKOUT_PHASE_SHIFT 属性を VARIABLE に設定し FPGA コンフ ィギュレーシ ョ ン後に PHASE_SHIFT 属性値によって 位相シフ トの初期位置を設定できます DCM の LOCKED 出力が High になる と FPGA アプリ ケーシ ョ ンでは DCM 出力クロ ッ クにおけるスキュー または位相シフ ト を動的に修正できます また DCM がリセッ ト された場合は PHASE_SHIFT 値は初期設定値に戻り ます

図 33 動的ファイン位相シフ ト制御インターフェイス

PSINCDEC

PSEN

PSCLK

PSDONE

0 = 1 =

STATUS[0](

)

PSDONE

If phase shift incremented ordecremented to limit valueSTATUS[0] stays High until newoperation shifts away from limit

x462_33_062403

46 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

動的ファイン位相シフ ト範囲

PHASE_SHIFT と同様に 動的位相シフ トに対しても位相シフ ト範囲の制限があ り ます 図 34 を参照して ください また その範囲は SHIFT_DELAY_RATIO 等式で示したよ うにFINE_SHIFT_RANGE 対入力クロ ッ ク周期の比率によって決定されます

SHIFT_DELAY_RATIO lt 2

指定された FINE_SHIFT_RANGE 値がクロ ッ ク周期の 2 倍よ り小さい場合 (SHIFT_DELAY_RATIOlt 2)最大動的位相シフ ト値は最大遅延タップ値である FINE_SHIFT_RANGE によって決定されますSHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト範囲は 等式 6 によって決定されます

等式 6

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 動的位相シフ ト値の範囲は plusmn96 とな り ます

図 34 動的位相シフ ト制御

Clock Outputs

PHASE_SHIFT DCM LOCKED

RESET

CLKIN

0Fixed Phase Shift

- LimitFixed Phase Shift+ Limit

PSEN

PSINCDEC

PSCLK

PSDONE

STATUS[0]

0

Dynamic Phase Shift- Limit

Dynamic Phase Shift+ Limit

Increment PhaseShift Value

Decrement PhaseShift Value

Enable

IncrementDecrement

Phase Shift Clock

Phase Shift Done

Variable PhaseShift Overflow

DCM LOCKEDFPGA

DCM Variable PhaseShift Control

x462_34_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

DynamicPhaseShiftLIMITS INTEGER 128 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞plusmn=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 47

R

したがって SHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト値は 等式 7 とな り ます PHASE_SHIFT = 1 と して ください

等式 7

SHIFT_DELAY_RATIO ge 2

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 2 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 8

したがって SHIFT_DELAY_RATIO ge 2 の場合の位相シフ ト値は 等式 9 とな り ますPHASE_SHIFT = 1 と して ください

等式 9

制御

45ページの図 33 46ページの図 34 に示すよ うにDCM の動的位相シフ ト制御信号によって FPGAアプリ ケーシ ョ ンは現在の CLKIN 入力と DCM ク ロ ッ ク出力間の関係を修正できます 表 18 に 制御入力 現在の位相と次の位相の関係 遅延タ ップへの影響と制御出力の関係を示します

TPhaseShiftDynamicPhaseShift

DynamicPhaseShiftLIMITS-----------------------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

DynamicPhaseShiftLIMITS 255plusmn=

TPhaseShiftDynamicPhaseShift

256--------------------------------------------------------- TCLKINbull=

表 18 動的位相シフ ト制御 (内部反転がない場合)

PSENPSINC-

DECPSCLK 現在の

位相シフ ト

次の

位相シフ ト遅延ライン PSDONE

STATUS[0](オーバーフロー )

動作

0 X X X 変更なし 変更なし 動的位相シフ トはディ スエーブル

1 0 uarr gt -制限 現在の位相

シフ ト -1現在の位相

シフ ト -11 0 位相シフ トおよびシフ ト ポインタ

のデク リ メン ト

1 0 uarr le -制限およびgt -255

現在の位相

シフ ト -1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがデク

リ メン ト

1 0 uarr -255 -255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

1 1 uarr lt +制限 現在の位相

シフ ト +1現在の位相

シフ ト +11 0 位相シフ トおよびシフ ト ポインタ

のインク リ メ ン ト

1 1 uarr ge+制限およびlt +255

現在の位相

シフ ト +1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがイン

ク リ メ ン ト

1 1 uarr +255 +255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

メモ X = 考慮する必要があ り ません = 不確定であ り 現在のアプリ ケーシ ョ ンの状態によって決定されます1 = PSDONE が 1 PSCLK 周期間 High にアサート されます-制限 = 遅延ラインの最小位置+制限 = 遅延ラインの最大位置PSEN を 1 PSCLK サイ クル間アサート します

48 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

PSEN が Low の場合 動的位相シフ トはディ スエーブルであ り その他のすべての入力は無視されます したがって すべての現在のシフ ト値および遅延ライン位置に変更はあ り ません

遅延ラインがその制限 (デク リ メン トで - 制限 または -255 インク リ メン トで + 制限 または +255)に到っていない場合 FPGA アプリ ケーシ ョ ンでは PSEN を High にアサートする とによって現在の位相シフ ト値を変更でき PSCLK の次の立ち上がりエッジの前に PSINCDEC に対して適切なインク リメン ト デク リ メン ト値を設定できます 位相シフ ト値は指定されたよ うにインク リ メン ト またはデクリ メン ト します 位相シフ トの最後に PSDONE が PSCLK の 1 周期間 High にアサート され 位相シフ ト が完了したこ と を示し ます また 位相シフ ト のオーバーフロー状態が発生していないため

STATUS[0] は Low を維持します

DCM が +255 を超える値にインク リ メン ト された場合 または -255 よ り小さな値にデク リ メン ト された場合には遅延ラインの位置はその限界である +255 または -255 から変更されず位相は変更されません STATUS[0] は High にな り 動的位相シフ トがオーバーフローである こ とを示します こ こで 新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0]が Low に戻り ます

位相シフ トが +255 または -255 には達していませんが 遅延ライン範囲 (表 18 では + 制限および - 制限)を超えている場合には位相は変更されませんがSTATUS[0] が再び High になり ます STATUS[0]出力は 遅延タ ップが遅延ラインの限界に到達したと きを示します ただし FPGA アプリ ケーシ ョ ンでは等式 8 または等式 6 を使用して制限値が算出され求められた遅延ラインの制限値は保証された値とな り ます 特定のデバイスでは 処理電圧または処理温度によって 遅延ラインが長くなる場合があ り ますが これの値はデバイスによって異なるため 保証されていません 遅延ラインの位置ではなく 位相シフ ト値は +255 または -255 に到達するまでインク リ メン ト またはデク リ メン ト を続けます新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0] がLow に戻り ます こ こで位相シフ ト値は遅延ラインにおいて有効な遅延値に対応する値に戻るよ うにインク リ メン ト またはデク リ メン ト されます

DCM Wizard

動的位相シフ トは図 35 に示す DCM Wizard の [General Setup] ダイアログ ウ ィンド ウで設定します動的ファ イン位相シフ ト を有効にするためには 図 35 に示すよ うに [Variable] を選択します 次に初期の [Phase Shift Value] を入力します 初期値は前述した固定ファイン位相シフ トモードの場合と同様に動作します

図 36 に示すよ うに[Variable] モードを選択するこ とによって動的位相シフ ト制御信号である PSENPSINCDEC PSCLK および PSDONE がイネーブルにな り ます これらの制御信号を FPGA アプ リケーシ ョ ンで使用するために入力および出力チェッ ク ボッ クスをオンにして ください またSTATUS

図 35 DCM Wizard での動的ファイン位相シフ トモードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

[Variable]

x462_35_061903

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 49

R

出力のボッ クスをオンにし STATUS[0] 信号をイネーブルにします STATUS[0] は 位相シフ ト値がその最大または最小制限値に達したと きを示します

アプリケーシ ョ ン例

動的位相調整を行う場合の動的位相シフ ト機能については 次の リ ンクからアプ リ ケーシ ョ ン ノー トXAPP268 を参照してください

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

クロック逓倍クロック分周周波数合成

DCM アプリ ケーシ ョ ンのもっと も使用される機能の 1 つと して 新しいク ロ ッ ク周波数を柔軟に生成できる機能があ り ます 次に説明するよ うにSpartan-3 DCM は 3 つの独立した周波数合成機能を持ちます図 37 および表 19 を参照してください アプリ ケーシ ョ ンでは これらの機能の 1 つを使用する場合 またはすべてを同時に使用する場合があ り ます 次に 各機能の詳細について説明します

1 2 逓倍クロ ッ ク (CLK2X CLK2X180) は 入力クロ ッ クの周波数を 2 倍にします

2 ク ロ ッ ク分周 (CLKDV) は 入力クロ ッ ク周波数を一定の分周値を使用して分周します

3 周波数合成回路 (CLKFX CLKFX180) は 入力クロ ッ ク周波数から新しい周波数を生成します

図 36 DCM Wizard での動的位相シフ ト制御出力の選択

LOCKEDSTATUS

PSDONE

PSENPSINCDECPSCLK

STATUS[0] STATUS

x462_36_061903

図 37 クロック合成オプシ ョ ン

CLKIN CLK0

CLKFB

DCM

CLKFX

CLKFX180

Frequency Synthesizer

F = FCLKIN CLKFX_MULTIPLY

CLKFX_DIVIDE

CLKDV

Clock Divider

F =FCLKIN

CLKDV_DIVIDE

CLK2X

CLK2X180

F = 2 FCLKIN Clock Doubler

ClockDistribution

Delay

CLK0or

CLK2X

Clock Feedback LoopCLK0 CLK2X CLK2X180 CLKDV CLKFB

CLK0

CLKFXCLKFX180

50

DLL_FREQUENCY_MODE=LOW50

50

Deskewed ClockF = FCLKIN

DUTY_CYCLE_CORRECTION=TRUE50

x462_37_062203

50 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

CLKDV 以外のすべての周波数合成出力は 5050 デューティ サイ クルを持ちます 表 23 に示すよ うに高周波数で分周値が整数の場合通常 CLKDV は 50 のデューティ サイクルを持ちます また 2逓倍クロ ッ ク (CLK2X CLK2X180) 回路は高周波数では使用できません

CLKFX および CLKFX180 以外のすべての DCM ク ロ ッ ク出力はDCM の 遅延ロッ ク ループ (DLL)ユニッ トで生成され CLKFB ピンへのクロ ッ ク フ ィードバッ クが必要になり ます DCM の デジタル周波数合成 (DFS) ユニッ トはCLKFX および CLKFX180 ク ロ ッ ク出力を生成します アプリ ケーシ ョンで CLKFX 出力または CLKFX180 出力のみが使用される場合にはフ ィードバッ ク パスを削除できDCM の動作範囲が広くな り ます 周波数合成回路は DCM 内部に CLKIN に基づいたフ ィードバック パスを持ちます

ク ロ ッ ク フ ィードバッ クを使用した場合 すべての出力クロ ッ クの位相が調整されます また 出力のいくつかは分周クロ ッ クであるためすべての DCM 出力がクロ ッ ク エッジで一致するよ うに調整されるこ とはまれであるこ とがわかり ます たとえば CLKDV 出力は CLKDV_DIVID の各サイクルごとに CLKIN および CLK0 に対して調整されCLK2X 出力は CLK0 のサイクル 1 つおきに この信号に対して調整されます またCLKFX 出力はCLKIN の CLKFX_DIVIDE サイクルごとおよび CLKFBの CLKFX_MULTIPLY サイクルごとに CLKIN に位相調整されます

周波数合成アプリケーシ ョ ン

周波数合成を使用するアプリ ケーシ ョ ンは ほぼ無制限に考えられますが 次にいくつかのアプリ ケー

シ ョ ン例を示します

bull ボード上で利用可能なクロ ッ クを使用している FPGA および外部ロジッ クに対して完全に新しいクロ ッ ク周波数を生成する

bull 低速の外部クロ ッ ク ソースから高周波数の内部クロ ッ クを生成し システムの EMI を低減する

bull 図 38 に示すよ うに高速シ リ アルデータ ク ロ ッ クを分周しFPGA 内部でデータの並行処理を行う

bull 同様に 図 38 に示すよ うに 高速シ リアル データ フォーマッ トに変換する前に 並行で動作するデータ ク ロ ッ クの周波数を逓倍する

bull 適切な速度の機能をインプリ メン トする場合に 入力クロ ッ クを逓倍し 内部ロジッ クをクロ ッ ク

アップするこ とによって 使用する リ ソースを削減する

表 19 DCM 周波数合成オプシ ョ ン

機能 DCM 出力 周波数DCM の機能ユニッ ト

フ ィードバック50 の

デューティ サイクル

スキュー調整

クロ ッ ク

CLK0 DLL 必要 DUTY_CYCLE_CORRECTION = TRUE の場合に 50 です

2 逓倍クロ ッ ク CLK2XCLK2X180

DLL 必要 常に 50 です

分周クロ ッ ク CLKDV DLL 必要 高周波数モードで分周値が

整数以外の場合を除いて常

に 50 です

周波数合成 CLKFXCLKFX180

DFS オプシ ョ ン フ ィードバッ クに

よって ク ロ ッ ク

入力周波数範囲は

広くなるこ とは

あ り ません

常に 50 です

FCLKIN

2 FCLKINbull

FCLKINCLKDV_DIVIDE---------------------------------------------------

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE------------------------------------------------------------⎝ ⎠

⎛ ⎞bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 51

R

入力クロックおよび出力クロックの周波数条件

周波数合成を行う場合の入力クロ ッ クおよび出力クロ ッ クの周波数条件は DCM で使用されるク ロ ック出力によって決定されます たとえば CLKFX 出力および CLKFX180 出力は DCM のデジタル周波数合成 (DFS) ユニッ トのみを使用し その他のすべての出力は遅延ロッ ク ループ (DLL) ユニッ ト を使用します DLL における周波数の制限は DFS よ り も厳しいため DFS のみを使用する場合の方が周波数の動作範囲は広くな り ますDFS および DLL の両方を使用する場合アプリ ケーシ ョ ンは DLLの周波数範囲によって制限されます

また DLL および DFS は 低周波数モード と高周波数モードの両方で動作可能であるため モード設定によっても有効な周波数範囲が変動します

DCM デザインが有効であるためには CLKIN 周波数が 『Spartan-3 データ シート 』 モジュール 3 に記載されている動作範囲内である必要があ り 使用されているすべての出力クロ ッ クの周波数もそれぞれ

指定された範囲内でなければなり ません

図 39 に クロ ッ ク入力およびクロ ッ ク出力と対応する周波数範囲を示します ただし こ こで示すのは低周波数モードの場合のみです データ シートに記載されている仕様名は影付きのボッ クス内に示しています また 表 20 に DCM アプリ ケーシ ョ ンの例および周波数条件を示します

図 38 周波数合成アプリケーシ ョ ンの一般的な例

DCM DCM

F

n-bitswide

Fn

F F m

m-bitswide

F F

Overclockedtime-shared logic

DCM

F

F F x

High-speed serial datadown-converted toslower parallel data

Slower parallel dataup-converted to high-speed serial data

FPGA

x462_38_070903

52 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

2 逓倍クロック (CLK2X CLK2X180)表 21 に示すよ うに 2 逓倍クロ ッ ク回路によって CLKIN 入力の周波数は 2 倍になり ます この 2 逓倍クロ ッ ク回路は DLL 機能ユニッ トの一部であ り CLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します 2 逓倍クロ ッ ク回路からの出力は CLK2X および CLK2X180 であ り これらの出力のデューテ ィ サイ クルは常に 50 です また これらの周波数は同一ですがCLK2X180 は CLK2X を 180deg位相シフ ト したものであ り 基本的に CLK2X 出力を反転したものになり ます 高性能のデュアル データ レート (DDR) アプリ ケーシ ョ ンまたはクロ ッ ク転送アプリ ケーシ ョ ンでは 両方の位相を使用するこ とが不可欠です

CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE 属性が LOW に設定されている場合のみに使用できます アプリ ケーシ ョ ンにおける必要性に応じてオプシ ョ ンの 2 分周機能を使用しCLKIN 入力周波数を低下させてください ( 「アドバンス ド オプシ ョ ン」 を参照)

図 39 入力クロックおよび出力クロックの周波数条件 (低周波数モード )

DFS(CLKIN_FREQ_FX_MINMAX)

DLL (Low-Frequency Mode)(CLKIN_FREQ_DLL_LF_MINMAX)

~1 MHz ~326 MHz

~24 MHz ~180 MHzFCLKIN

DFS (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~24 MHz ~200 MHz

DLL CLKDV (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~15 MHz ~120 MHz

DLL CLK2X (Low-Frequency Mode)(CLKOUT_FREQ_2X_LF_MINMAX)

~48 MHz ~326 MHz

FCLKFXFCLKFX180

FCLKDV

FCLK2XFCLK2X180

x462_39_070903

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 20 DCM 周波数条件の例

入力周波数 出力周波数 解説

12 MHz 128 MHz 1 つの DCM のみを使用する場合には条件を満たしません FCLKIN は DFS の条件を満たす範囲内ですが FCLKFX は最低 24MHz 出力周波数が必要です

12 MHz 324 MHz DFS を使用する DCM で条件を満たします CLKFX_MULTIPLY=27 と設定してくださいFCLKFX は DFS 出力周波数範囲内です

25 MHz 25 MHz30 MHz

DFS および DLL を使用する DCM で条件を満たします CLKDV 出力を 25MHz 信号に使用しCLKDV_DIVIDE=10 と設定してください また CLKFX 出力を 30MHz 信号に使用しCLKFX_MULTIPLY=6 および CLKFX_DIVIDE=5 と設定してください すべての入力周波数および出力周波数は適切な範囲内です

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 53

R

表 21 2 逓倍クロック回路のまとめ

DCM 出力 CLK2XCLK2X180

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク 必要です

50 デューティ サイ クル出力 はい

制御属性

DLL_FREQUENCY_MODE CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE = LOW の場合にのみ有効です

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます 2 逓倍クロ ッ クの出力は 高周波数モードでは使用できませんが ほかの DCM ク ロ ッ ク出力に必要となる場合があ り ます

CLK2XCLK2X180

CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

2 FCLKINbull

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (~24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (~48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~326 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_2X_LF_MIN (48 MHz)

CLKOUT_FREQ_2X_LF_MAX (~325 MHz)

HIGH 設定不可 設定不可

54 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

クロック分周 (CLKDV)表 22 に概要を示すクロ ッ ク分周ユニッ トは デザインに設定した CLKDV_DIVIDE 属性の値を使用し CLKIN 入力の周波数を分周します ク ロ ッ ク分周ユニッ ト は DLL 機能ユニッ ト の一部であ りCLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します

表 22 クロック分周回路のまとめ

DCM 出力 CLKDV

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク DCM からの CLK0 出力または CLK2X 出力を使用する場合に必要です

50 デューティ サイ クル出力 はい ただし DLL_FREQUENCY_MODE=HIGH および CLKDV_DIVIDE が整数値ではない場合を除きます

制御属性

DLL_FREQUENCY_MODE CLKDV は両モードで使用できます 分周値によっては 出力のデューティ サイ クルに影響を与える場合があ り ます ( 「CLKDV ク ロ ッ ク調整」 を参照してください)

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 有効な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 であ り 整数値の場合 よ り短時間で DLL はロッ ク状態になり ます また 整数値を設定する場合には出力ジッ タが低くな り ます

周波数制約

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

CLKDV CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

FCLKINCLKDV_DIVIDE--------------------------------------------------

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~325 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_DV_LF_MIN (15 MHz)

CLKOUT_FREQ_DV_LF_MAX (~120 MHz)

HIGH CLKOUT_FREQ_DV_HF_MIN (30 MHz)

CLKOUT_FREQ_DV_HF_MAX (~240 MHz)

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 55

R

CLKDV クロック調整

DLL_FREQUENCY_MODE 属性が High であ りCLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 になり ます 表 23 に CLKDV のデューティ サイクルを示します Spartan-3 DCM では CLKIN のデューティ サイクルが 6040 (または 4060) 以上である必要があ り高周波数モードの場合に 15 で分周された CLKDV 出力は次にカスケード接続された DCM へクロ ッ ク入力するこ とはできません

CLKDV のジッ タは 周波数モードおよび属性値が整数か 整数ではないかによって決定されます

CLKDV_DIVIDE 属性に整数値を設定するこ とによって 出力ジッ タが半分になり DLL がロ ッ ク状態になるために要する時間も短縮されます

DCM Wizard

ク ロ ッ ク分周は DCM Wizard の[General Setup]ウ ィ ン ド ウで設定し ます 図 40a に示すよ う にCLKDV 出力のチェッ ク ボッ クスをオンにし 次に図 40b に示すよ うに ド ロ ップ ダウン リ ス トから[Divide by Value] を選択します

表 23 CLKDV デューティ サイクル (DLL_FREQUENCY_MODE=HIGH の場合)

CLKDV_DIVIDE 属性 デューティ サイクル High 時間総サイクル

整数 50000 12

15 33333 13

25 40000 25

35 42857 37

45 44444 49

55 45454 511

65 46154 613

75 46667 715

表 24 CLKDV 出力ジッ タ

CLKDV_DIVIDE CLKDV 出力周期ジッ タ

整数値 CLKOUT_PER_JITT_DV1 (plusmn~150 ps)

整数以外の値 CLKOUT_PER_JITT_DV2 (plusmn~300 ps)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

a CLKDV 出力のチェ ック ボックスをオン b ドロップ ダウン リス トから [Divide by Value を選択]

図 40 DCM Wizard での分周クロック設定

CLKDV

x462_40a_0619032

Divide By Value

x462_40b_061903

56 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

周波数合成回路 (CLKFX CLKFX180)周波数合成回路を使用するこ とによって 入力周波数の逓倍 分周 またはその両方をもっと も柔軟に

行う こ とができます 表 25 に示すよ うに 2 つの周波数合成出力は CLKFX および CLKFX180 ですCLKFX180 出力は CLKFX と同一の周波数を持ちますがCLKFX を 180degまたは 12 ク ロ ッ ク周期位相シフ ト させた ものです これらの周波数合成出力のデューテ ィ サイ クルは 50 であ るためCLKFX180 は CLKFX の反転クロ ッ クのよ うに見えます

表 25 にある等式が示すよ うに設計段階で 2 つの属性を使用し合成出力周波数を制御します CLKINク ロ ッ ク入力は CLKFX_MULTIPLY が分子 CLKDV_DIVIDE が分母である比率を使用して逓倍されます たとえば 75MHz CLKIN 入力を使用して 155MHz の出力を生成するためには 周波数合成回路では 3115 の比率で CLKIN を逓倍します これは CLKIN を始めに 31 倍し 次に 15 で割ることではあ り ませんCLKIN を 31 倍するこ とによって出力周波数は2325GHz とな りSpartan-3 DCMの周波数範囲を越えるこ とにな り ます

68 を 34 と約分するよ うに 逓倍値および分周値はもっと も簡潔な値にする必要があ り ます このことによって ロ ッ クするために必要な時間が短縮します

周波数合成には 常にク ロ ッ ク フ ィードバッ クが必要ですが DFS には CLKIN を基準と した内部フ ィードバッ ク ループがあるため DLL を使用せずに DFS を使用する場合には CLKFB に別のループは必要あ り ません

また CLKFB 出力は CLKIN の CLKFX_DIVIDE サイ クルごと および CLKFB の CLKFX_MULTIPLY サイクルごとに CLKIN に対して位相調整されます たとえばCLKFX_MULTIPLY = 3 であ りCLKFX_DIVIDE = 5 の場合CLKFX 出力の位相は CLKIN の各 5 サイクルごと および CLKFB の 3 サイクルごとに CLKIN 入力に対して位相調整されます DCM で LOCKED 出力がアサート される と DFS は CLKIN 入力の立ち上がりエッジごとに再同期し ほぼ完璧に位相調整されます

表 25 周波数合成回路のまとめ

DCM 出力 CLKFX

CLKFX180 (CLKFX を 180deg位相シフ ト した場合と同一)

出力周波数

DCM の機能ユニッ ト デジタル周波数合成 (DFS)

フ ィードバッ ク CLKIN を基準にして内部フ ィードバッ クを使用するため 必要あ り ません 遅延ロッ ク ループ (DLL) を使用する場合は オプシ ョ ンと して CLKFB 入力を使用できます

50 デューティ サイ クル出力 常に 50 です

制御属性

DFS_FREQUENCY_MODE CLKIN CLKFX 出力 CLKFX180 出力の周波数条件に影響します

DLL_FREQUENCY_MODE アプリ ケーシ ョ ンで DLL 出力が使用される場合に 周波数合成回路のみに影響を与えます また よ り厳しい DLL の条件に適用するよ うに CLKIN 周波数を低下させる可能性があ り ます CLKFX 出力または CLKFX180 出力が使用されている場合 周波数条件は DFS_FREQUENCY_MODE によってのみ指定されます

CLKFX_MULTIPLY 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 2 から 32 であ りデフォルトは 4 です

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 1 から 32 であ りデフォルトは 1 です

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 57

R

DCM Wizard

周波数合成を使用する場合図 41 に示すよ うに DCM Wizard の[General Setup]ダイアログ ボッ クスで CLKFX または CLKFX180 あるいはその両方のチェッ ク ボッ クスをオンにしてください

CLKFX 出力または CLKFX180 出力のみを使用する場合はオプシ ョ ンと して DLL ク ロ ッ ク出力およびフ ィードバッ クをディ スエーブルにするこ とによって 周波数範囲を広げるこ とができます

bull デフォルトでは CLK0 出力は常にオンになっていますが CLKFX または CLKFX180 のみを使用する場合は CLK0 のチェッ ク ボッ クスをオフにしてください

bull 図 42 に示すよ うに DCM フ ィードバッ クをディ スエーブルにする場合は [None] を選択してください フ ィードバッ クを使用しない場合はCLKFX および CLKFX180 の周波数範囲は高域と低域の両方で広くな り ます

周波数制約

CLKIN アプリ ケーシ ョ ンで 遅延ロッ ク ループ (DLL) からの出力が使用されていない場合CLKIN の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます DLL が使用されている場合は DLL のクロ ッ ク周波数条件はよ り厳し くな り ます

CLKFXCLKFX180

CLKIN 出力および CLKFX180 出力の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 25 周波数合成回路のまとめ (Continued)

最小周波数 最大周波数

CLKIN_FREQ_FX_MIN (~10 MHz) CLKIN_FREQ_FX_MAX (~326 MHz)

DFS_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_FX_LF_MIN(~24 MHz)

CLKIN_FREQ_FX_LF_MAX(~210 MHz)

HIGH CLKIN_FREQ_FX_HF_MIN(~210 MHz)

CLKIN_FREQ_FX_HF_MAX(~325 MHz)

図 41 DCM Wizard での Frequency Synthesizer 設定

CLK0

CLKFXCLKFX180

CLKFXCLKFX180

CLKFX CLKFX180

DCM

x462_41_070903

58 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロックのフォワード ミ ラー リバッファR

DCM Wizard のクロ ッ ク周波数合成で示したよ うに必要は出力周波数または逓倍値と分周値を入力します

クロックのフォワード ミ ラーリバッファ

DCM は高度なクロ ッ ク制御機能を持ちさ らに Spartan-3 IO ピンは多様な IO 電圧標準をサポートするため 通常 Spartan-3 FPGA ではクロ ッ ク信号のリバッファ またはミ ラーを行い 入力クロ ッ クの電圧を変更ために使用されます 同様に DCM の入力クロ ッ ク条件を変更し デューティ サイクルを50 に調整します

図 20 に DCM の入力クロ ッ クを 50 デューティ サイ クルに調整し その周波数で CLK0 出力を使用してクロ ッ クをフォワードする または DCM CLK2X を使用して周波数を 2 倍にする DCM の例を示しました DCM が LOCKED 出力をアサートする と 入力クロ ッ クおよび出力クロ ッ クは位相調整されます CLKFB へのフ ィードバッ ク パスは外部のクロ ッ ク フ ィードバッ ク地点でクロ ッ ク分散遅延を確認し 削除します

出力クロ ッ クのデューティ サイクルが 50 であるこ とは重要であるため出力 IO 標準が 50 デューティ サイ クルを維持できるために十分な速度でスイ ッチできる こ と を確認して ください デューティサイ クルの動作は 出力信号でのシ ミ ュレーシ ョ ンを行う こ とによって検証します IBIS シ ミ ュレーシ ョ ンで確認できるよ うに IO 標準には立ち上がり と立ち下がりが対称的ではなく デューティ サイクルにずれが発生しているものもあ り ます HSTL SSTL および LVCMOS の DCI バージ ョ ンの IO標準の立ち上がりおよび立ち下がりがよ り対称的です

100 MHz を越える場合のデューテ ィ サイ クルを確実に 50 にするためには CLKIN のソースのデューティ サイ クルが 50 の場合にも DCM のデューティ サイクル調整機能を使用する必要があ ります したがって ク ロ ッ ク フォワードに CLK0 CLK90 CLK180 または CLK270 を使用する場合はDUTY_CYCLE_CORRECTION 属性を TRUE に設定してください 通常その他の DCM ク ロ ック出力は常に 50 のデューティ サイ クルに調整されます ( 「ク ロ ッ ク調整」 を参照して ください)

200 MHz 以上で動作する場合のデューティ サイ クルを最適にするためには図 43 に示すよ うな回路を使用して ください こ こでは DCM からの CLKx 出力および CLKx180 出力がデュアル データ レート (DDR) 出力フ リ ップフロ ップの C0 入力および C1 入力を駆動するよ うに使用します DDR フ リ ップフロ ップの D0 入力を VCC に接続し D1 入力を GND に接続します また DCM の各出力は個々のグローバル バッファを駆動しデューティ サイクルのずれを最小にします 高周波数の場合に 1つのク ロ ッ クのみを分散し DDR フ リ ップフロ ップ内部でローカル位相シフ ト を行う と 約 150ps のデューティ サイクルのずれが発生するため このよ うな回路設計は推奨していません

周波数が 250 MHz 以上の場合には分散クロ ッ クに LVDS のよ うな差動信号標準を使用します 図 43にCLKIN ク ロ ッ ク入力およびクロ ッ ク出力がと もに VLDS を使用する例を示します さ らにク ロ ック フ ィードバッ ク パスも LVDS を使用します パフォーマンスを最適にするためには ク ロ ッ ク入力およびクロ ッ ク フ ィードバッ ク パスにグローバル バッファ入力 (IBUFGDS) を使用する必要があ り ます これによってデバイスの一辺にあるすべてのグローバル バッファ入力を使用するこ とになり ますが 高周波数でのクロ ッ ク フォワードを最適に行う こ とができます

図 42 フ ィードバックに [None] を選択し 周波数範囲を拡大

SourceFeedback

Internal External None

Value 1X 2X

If only using the CLKFX or CLKFX180clock ouputs optionally click None to extend the DCM frequency limits

x462_42_070903

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 59

R

クロック ジッ タおよび位相ノイズ

もっと も高価で高精度なものの場合においてもすべてのクロ ッ クにはクロ ッ ク ジッタまたは位相ノイズがあ り ます こ こでは Spartan-3 デジタル ク ロ ッ ク マネージャに固有のジッ タ特性について説明します 低周波数 たとえば 20 MHz で動作する場合は 一般に ジッ タの影響は無視できますが200 MHz のよ う な高周波数で動作する場合には 特にデュアル データ レート (DDR) アプリ ケーシ ョンにおいて ジッ タはデザインの問題に関連する要素となり ます ク ロ ッ ク ジッタによって アクティブ ク ロ ッ ク エッジ間で実際に有効な時間が削減されるため FPGA アプ リ ケーシ ョ ンで使用できる時間が制限されます

クロック ジッ タ とは図 44 に示すよ うにク ロ ッ ク ジッタ とは理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジの相違です 太線は 理想的なクロ ッ ク信号を表します 各クロ ッ ク エッジでは 理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジ間に若干のずれがあ り このずれの最大値と最小値の差異をピーク ジッ タ と呼びます ジッ タは アクテ ィブなク ロ ッ ク エッジのみに関係します たとえば シングル データ レート(SDR) アプリ ケーシ ョ ンの場合データは各立ち上がりエッジでクロ ッ ク入力され この場合のジッタは総クロ ッ ク周期から引く こ とによって求められます 一方 デュアル データ レート (DDR) の場合データは各クロ ッ ク周期の始ま り および 12 ク ロ ッ ク周期の点でクロ ッ ク入力されるため ジッ タは12 ク ロ ッ ク周期ごとに影響を与えます

図 43 高周波数 (250 MHz 以上) での LVDS クロック フォワード回路

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKx180

BUFG

BUFG

VCC

GND

OBUFDS

CLKIN

CLKFB

IBUFGDS

IBUFGDS

External Clock Feedback (LVDS)

FPGA

x462_43_061903

図 44 クロック信号におけるジッ タ

x462_44_061903

60 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

クロック ジッ タの原因ク ロ ッ ク ジッタはすべてのシステムに存在しそれを避けるこ とはできません ク ロ ッ ク ジッタの原因は システム内のノ イズのソース または不完全な信号であ り 実際 ジッ タは時間軸上における ノ イ

ズである と言えます たとえば 入力クロ ッ ク ソースには ク リ スタルからの任意の温度振動ノ イズまたは機械的な振動ノ イズによる固有のジッタ特性があ り ます 多くの同時スイ ッチ出力 (SSO) は回路基板にノ イズを追加するため 内部スイ ッチしきい値がわずかに変更し ジッ タが増加します 同様に適切に設計されていない電源供給または不十分なデカップリ ングによってもジッ タは増加します

その他のジッタの原因と しては近接した信号のクロス トーク不適切な終端 グランド バウンス電磁干渉 (EMI) などが考えられます

このアプ リ ケーシ ョ ン ノートでは Spartan-3 デジタル ク ロ ッ ク マネージャ (DCM) および FPGA 内部でのジッタ全般について説明します

クロック ジッ タ特性の理解ク ロ ッ ク ジッタの特性はさまざまな方法で定められ次のよ うにいろいろな方法でその特徴を捉えることができます

サイクル間ジッ タ

隣接サイクル ジッタ と も呼ばれるサイクル間ジッタは 図 45 に示すよ うに 1 つのクロ ッ ク サイクルと次のクロ ッ ク サイクル間でのクロ ッ ク周期の最大差異です この例ではあるクロ ッ ク サイクルと次のクロ ッ ク サイクル間の最大差異は +100 ps および -100 ps または plusmn100 ps です数百万クロ ッ ク サイクル間の計測を行う場合にはクロ ッ ク周期の変動の絶対値が大き くなる可能性があ り ますがク ロ ッ

ク サイクル間の変動が plusmn100 ps よ り大き くなるこ とはあ り ません

サイクル間ジッタは ク ロ ッ ク出力またはオシレータの特性を測定するために重要ですが アプ リ ケー

シ ョ ンのタイ ミ ング解析には有効ではあ り ません

周期ジッ タ

周期ジッタは 数百万クロ ッ ク サイクル間で計測したサイ クル間ジッタの合計です ピーク ジッ タは理想的なクロ ッ ク移行時間と比較した場合の最短および最小移行時間を示します

デジタル ク ロ ッ ク マネージャの周期ジッ タは一定ではく ピーク間ジッタ と して表されます 図 46 に示すよ うに 理論的には クロ ッ ク移行位置は理想的なクロ ッ ク位置を中心とする確率的な分散 また

はヒ ス ト グラムですが実際の分散はガウス分布ではなく二峰性分布の場合があ り ます 実際のクロ ック移行のほとんどは理想的なクロ ッ ク位置付近で起こ り ますが数百万クロ ッ ク サイクルにおける測定の結果 望ましい位置から離れた地点で起こるクロ ッ ク移行もあ り ます

理想的な位置からの統計的な距離はσ (シグマ) と呼ばれる標準偏差で測定されます DCM はすべてデジタルで機能するデザインであるため 非常に安定しており ザイ リ ンクスでは ジッ タの偏差を plusmn7σまたはピーク間ジッ タを 14σ と定めています 判断基準と して 偏差が plusmn7σ である とい う こ とは ジッタの 9999999999974 が指定されたワース ト ケース ジッ タよ り小さい値であるこ とを保証していま

図 45 サイクル間ジッ タ例

T0 T1 = T0 + 100 ps T2 = T1 - 100 ps

x462_45_062203

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 61

R

す また 14σ ピーク間ジッ タ plusmn7σ ジッタ偏差は 最大ビッ ト エラー レート (BER) が 128 x 10-12 という こ とを意味します

ユニッ ト インターバル(UI)

ジッタの仕様を単位間隔 (UI) の割合と して指定する別の方法もあ り ます 1 UI は 周波数に関わらず1 ビッ ト時間を表します ク ロ ッ クの立ち上がりエッジ または立ち下がりエッジのいずれかでデータが取り込まれるシングル データ レート (SDR) アプリ ケーシ ョ ンでは1 UI は 1 ク ロ ッ ク周期になり ます 一方 2 倍のクロ ッ ク レートでデータがクロ ッ ク入力されるデュアル データ レート (DDR) アプリケーシ ョ ンでは 1 UI が 12 ク ロ ッ ク周期になり ます

UI で指定されるピーク間ジッタ幅は 総ビッ ト周期時間に対するピーク間ジッタ値の比率です

総ジッ タの計算

『Spartan-3 データ シート 』 には CLKFXCLKFX180 以外の DCMのク ロ ッ ク出力におけるジッ タが記載されてます デジタル周波数合成 (DFS) ジッ タは 逓倍値および分周値に基づいて算出されます

データ シートには DLL からのクロ ッ ク出力 (CLKFX および CLKFX180 を除くすべてのクロ ッ ク出力) に対するワース ト ケース ジッ タが記載されています DLL ではジッ タが削減されないため DLLク ロ ッ ク出力の総ジッタには入力クロ ッ クである CLKIN のジッタおよびデータ シートに記載された値が含まれます

また DFS ク ロ ッ ク出力である CLKFX および CLKFX180 では 入力ク ロ ッ ク ジッ タがある程度削減されるため 算出された出力ジッタが総ジッタにな り ます

図 46 ピーク間周期ジッ タ例

図 47 ユニッ ト インターバルの比率で示された周期ジッ タ

Desired clock period

Measured clock period

Num

ber

of s

ampl

esPeak-to-peak Period Jitter

(14σ)

+7σ-7σ

x462_46_061903

Bit Period

Unit Interval (UI)

x462_47_061903

62 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

DLL 出力ジッ タへの入力ジッ タの加算

入力ジッタに DLL 出力ジッタを加える場合ノ イズ計算と同様に 2 乗平均平方根 (RMS) 計算を使用します

ピーク間

等式 10

ピーク間偏差

等式 11

定義

入力クロ ッ クのピーク間周期ジッ タが 150 ps (plusmn75 ps) であ り このク ロ ッ クのデューティ サイ クルがDCM の CLK0 出力と同一の周波数を使用して修正される場合について考えます

この場合 JITTERINPUT = 150 ps であ り JITTERSPEC の値は 『Spartan-3 データ シート 』 で指定されている CLKOUT_JITT_PER_0 と呼ばれる値です これは ピーク間で plusmn100 ps または 200 ps である と概算されます

したがって DCM 出力の総ジッタはピーク間で 250 ps または plusmn125 ps です

カスケード接続された DCM のジッ タ計算図 48 に 複数の DCM をカスケード接続し さまざまな出力周波数を生成しているアプ リ ケーシ ョ ンの例を示します この場合のジッタは 次によって決定されます

bull 前のソースからのジッタ

bull 使用されている DCM 出力

データ シートに記載されているよ うにジッ タ特性は各 DCM 出力によってわずかに異なり ます またDFS からの CLKFX 出力および CLKFX180 出力は 入力ジッタをある程度削減し ジッ タ値は DCMWizard で算出されます ( 「ク ロ ッ ク周波数合成」 参照して ください)

JITTERINPUT = FPGA のクロ ッ ク入力ピンで測定された入力周期ジッタ

JITTERSPEC = 『Spartan-3 データ シート 』 に記載されている適切な出力ポートに対する DLL ク ロ ッ ク出力周期ジッタ

JITTERTOTAL = 予想される総出力周期ジッタ

JITTERTOTAL JITTERINPUT( )2 JITTERSPEC( )

2+=

JITTERTOTALJITTERINPUT( )

2 JITTERSPEC( )2+

2--------------------------------------------------------------------------------------------------------plusmn=

JITTERTOTAL 150 ps( )2200 ps( )

2+ 250 ps= =

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 63

R

したがって カスケード接続された DCM チェーンの任意の点におけるジッタは前述した 2 つの要因によって決定されます 次の例では 回路上のいくつかの点で総ジッタを計算する方法を示します

例 1 すべての DCM が DLL 出力を使用する場合

この例では 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

こ こでは DCM (A) が CLK2X 出力を使用する場合について考えます また DCM 出力ジッ タに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_2X 値を使用してください この値は 400 ps (plusmn200 ps) と概算されています 等式 10 を使用しク ロ ッ ク (A) の総周期ジッタを計算します

次にDCM (B) で分周値が整数である CLKDV 出力を使用する場合について考えます またDCM 出力ジッタに対して 『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_DV1 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (B) の総周期ジッタを計算します この場合 入力ジッタ DCM (A) からのジッタ DCM (B) からのジッタを考慮する必要があるため RMS 等式は次のよ うになり ます

最後に DCM (C) が DCM (B) からの出力を 90deg位相シフ トする場合について考えます また DCM出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します この場合 入力ジッ タ DCM (A) からのジッ タ DCM (B) からのジッ タDCM (C) からのジッ タを考慮する必要があるため RMS 等式は次のよ うにな り ます

例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合

この例は DFS からの CLKFX 出力または CLKFX180 出力を使用する DCM がある点以外は 例 1 すべての DCM が DLL 出力を使用する場合と同様です

この例では 75MHz 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

例 1 と同様に まず DCM (A) が CLK2X 出力を使用する場合について考えます 出力ジッタは 次に示す等式になり ます

この例ではDCM (A) で生成された 150MHz を使用してDCM (B) で 90MHz 合成クロ ッ クを生成します DCM Wizard ( 「ク ロ ッ ク周波数合成」 を参照して ください) を使用し CLKFX_MULTIPLY=3および CLKFX_DIVIDE=5 と設定します ワース ト ケースの出力周期ジッタは 700 ps とな り ます

図 48 カスケード接続された DCM のジッ タ計算

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

A B C

x462_48_061903

JITTERTOTAL A( ) 150ps( )2400ps( )

2+ 427ps 214psplusmn= = =

JITTERTOTAL B( ) 150ps( )2400ps( )

2300ps( )

2+ + 522ps 261psplusmn= = =

JITTERTOTAL C( ) 150ps( )2 400ps( )2 300ps( )2 300ps( )2+ + + 602ps 301psplusmn= = =

JITTERTOTAL B( ) 700ps 350psplusmn= =

64 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

最後にDCM (C) が DCM (B) からの出力を 90deg位相シフ ト させる場合について考えます DCM 出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用してください この値は 300 ps (plusmn150 ps) と概算されています 次の等式を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します 次の DCM では CLKFX を使用するため 総入力ジッ タは ワース ト ケースで700 ps とな り ます 次の RMS 等式を使用し 出力ジッタを計算します

カスケード接続した DCM を使用する場合の推奨デザイン

DCM をカスケード接続して使用する場合 図 48 に示すよ うに DCM からの LOCKED 出力が次のDCM の RST 入力を制御しているこ とを確認してください カスケード接続した DCM では 1 つ前のDCM で LOCKED 出力がアサート され ク ロ ッ クが安定しているこ とが示されてた後に 入力クロ ックにロ ッ クする必要があ り ます

また DCM をカスケード接続する場合には 最もジッ タの影響を回避する必要のあるク ロ ッ ク出力が最初の DCM に接続されるよ うに DCM チェーンを構成してください

システム パフォーマンスにおけるジッ タの影響ク ロ ッ ク ジッタによっても有効なビッ ト周期が狭くな りシステム パフォーマンスが低下します 次の等式に示すよ うに FPGA アプリ ケーシ ョ ンで使用可能なビッ ト周期は 総ビッ ト周期 TBIT からいくつかの影響を差し引いたものです シングル データ レート (SDR) アプリ ケーシ ョ ンでは ク ロ ッ ク周期とビッ ト周期は一致しますがデュアル データ レート (DDR) アプリ ケーシ ョ ンのビッ ト周期はクロ ッ ク周期の 12 になり ます

定義

総ジッ タがク ロ ッ ク周期からの偏差ではな く正の値に指定されている場合 (たとえば plusmn100 ps ではなく200 ps の場合) 正の値を 2 で割り ます (100 ps) ビッ ト周期は負の偏差によってのみ短くなり 正の偏差によってはビッ ト周期が長くな り さ らにタイ ミ ング スラ ッ クが追加されます

入力クロ ッ ク信号の周波数は 75 MHz であ り ク ロ ッ ク ソースのジッ タは plusmn100 ps です アプリ ケーシ ョ ンは内部で生成された 150 MHz のクロ ッ クの立ち上がりエッジでデータを入力します また 総ビッ ト周期 TBIT は 667 ns です ジッ タの影響を考慮する と 有効なビッ ト周期 TAVAILABLE は

どのよ うになるでし ょ うか

2 逓倍クロ ッ ク回路からの CLK2X 出力によって75MHz ク ロ ッ ク入力から 150MHz ク ロ ッ クが生成されます 『Spartan-3 データ シート 』 の CLKOUT_PER_JITT_2X 仕様による と 2 逓倍クロ ッ ク出力である CLK2X には plusmn~200 ps (概算) のワース ト ケース ジッタがあ り ます 2 乗平均平方根を使用し

TBIT = ビッ ト周期時間

tTOTAL_JITTER = 総クロ ッ ク ジッ タ ク ロ ッ ク入力ジッタに DCM 出力ジッタ またはカスケード接続された DCM のジッタを加算したものです

tDUTY_CYCLE_DISTORTION = デューティ サイ クルのずれ デュアル データ レート (DDR) アプリケーシ ョ ンのみで必要であ り それ以外の場合はゼロです 使用する DCM ク ロ ッ ク出力によって データ シートに記載されている CLKOUT_DUTY_CYCLE_DLL または CLKOUT_DUTY_CYCLE_FX を使用します

JITTERTOTAL C( ) 700ps( )2300ps( )

2+ 762ps 381psplusmn= = =

TAVAILABLE TBIT tTOTAL_JITTERndash tDUTY_CYCLE_DISTORTIONndash=

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 65

R

DCM のジ ッ タplusmn200 ps にク ロ ッ ク ソースのジ ッ タ plusmn100 ps を加算する こ と によ って 総ジ ッ タtTOTAL_JITTER が plusmn0223 ns であるこ とがわかり ます

データはクロ ッ クの立ち上がりエッジでのみ入力されるためデューティ サイクルのずれが影響を与えるこ とはな く tDUTY_CYCLE_DISTORTION = 0 です

結果と して 有効な総クロ ッ ク周期 TAVAILABLE は総ビッ ト周期である 6667 ns から 6444 ns に減少します 結果と して ロジッ クは 150 MHz ではなく 1551831 MHz で動作します

クロック ジッ タを最小限にするための推奨デザイン高性能アプリ ケーシ ョ ンでは ク ロ ッ ク ジッタによって有効なビッ ト周期が短くな り ますシステム全体のクロ ッ ク ジッタを最小限にするためには次の推奨デザインを参考にしてください

適切な電力分散システム設計

電力プレーン デカップ リ ングを含む 電力分散システム (PDS) を適切に設計するこ とによって 安定した電力環境を作成し システム ジッ タを削減できます アプ リ ケーシ ョ ン ノー ト XAPP623 ではPDS の適切な設計にについて説明しています

bull XAPP623 電力分散システム (PDS) デザイン バイパスデカップリ ング キャパシタhttpwwwxilinxcomxappxapp623pdf

適切なプリン ト サーキッ ト ボードの設計

予想される動作周波数範囲およびアプ リ ケーシ ョ ン環境に適したプ リ ン ト サーキッ ト ボード設計を行ってください

bull WP174 PCB への効果的な FPGA 統合httpwwwxilinxcojppublicationswhitepaperswp_pdfwp174pdf

bull PCB チェッ ク リ ス トhttpsupportxilinxcomxlnxxil_prodcat_productjsptitle=si_pcbcheck

同時スイッチ出力 (SSO) の推奨デザイン

DCM へのク ロ ッ ク入力 または DCM からのク ロ ッ ク出力の信号に関連した問題を回避するために『Spartan-3 データ シート 』 に記載されている同時スイ ッチ出力 (SSO) 仕様に沿っているこ とを確認して ください

また 可能な限り DCM の入力または出力をスイ ッチング回数の多い IO の近くに配置するこ とを避けてください 特に 出力電圧幅が大きい IO または駆動電流が高い IO の場合にはこのこ とが重要です

仮想グランド ピンを DCM 入力および出力接続の近くに配置

さまざまな影響を受けやすく高周波数である DCM の入力または出力では仮想グランド ピンのよ うなユーザー IO ピンを追加して PCB へ別の接続を作成します このよ うな仮想グランド ピンは ジッタの影響を受けやすい DCM 信号に近接する IO パッ ドに配置して ください IO パッ ドは パッケージのピンまたはボール上だけでなく FPGA のダイ レベルでも近接しているこ とを確認して くださいBGA パッケージ上で隣接しているボールは 必ずしも FPGA 上にある隣接したパッ ドに接続する必要はあ り ません このよ うに設計するこ とによって 内部電圧降下が軽減され ジッ タが削減されます

仮想グランドを作成する場合は図 49 に示すよ うに IOB を GND (Low ロジッ ク レベル) を駆動する出力と して設定し その IOB を外部で直接グランド プレーンに接続します

tTOTAL_JITTER 100psplusmn( )2 200psplusmn( )2+ 22360psplusmn 0223nsplusmn= = =

TAVAILABLE 6667ns 0223nsndash 6444ns= =

66 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

VCCAUX 考察

デジタル ク ロ ッ ク マネージャは VCCAUX 入力によって電源が供給されます FPGA への電源供給入力である VCCAUX の過剰ノ イズは DCM の特性 特にジッタ特性を低下させます DCM のパフォーマンスを最適にするために 次に従ってください

1 図 50 に示すよ うに VCCAUX 電源供給 またはグランド上の変動を 1 ms 間で 10 mV よ り小さ くして ください この制限によって DCM は変動に適切に対応して動作します

2 図 50 に示すよ うに 電源供給のノ イズをピーク間で 200 mV 以内にして ください

3 VCCAUX および VCCO が同一の電源プレーンにある場合 すべての VCCAUXVCCO ピンを適切にデカップリ ングまたはバイパスする必要があ り ます ( 「適切な電力分散システム設計」 を参照してください) また 上記の 1 および 2 を維持できない場合 VCCAUX と VCCO を分離して使用してください

4 特に CLK2X 出力は電源シフ ト またはグランド シフ トの影響を受けます したがって すべての IOB および CLB でスイ ッチングがある場合には CLKFX_MULTIPLY =2 および CLKFX_DIVIDE=1 と設定されている CLKFX 出力はよ り よい特性を持つ出力を供給します DFS モードの場合 CLK2X 出力の更新が遅いのに対して CLKFB 迂回回路では 3 入力クロ ッ クごとにタ ップが更新されます

FACTORY_JF 設定の修正

適切に設計され 安定し 適切にデカップリ ングされた電源供給が FPGA 内のクロ ッ ク スキューおよびジッタを低減するためにもっと も有効な方法ですが FACTORY_JF 属性を 0xFFFF に設定することによって 問題の発生しているボード上のジッタを低減できる場合があ り ます FACTORY_JF=FFFF の場合 DCM はおよそ 20 入力クロ ッ クごとにタ ップ設定を更新し 周波数を基にしたデフォルト設定よ り もタ ップ更新の間隔は短くな り ます

図 49 DCM 入力または出力クロック信号への仮想グランド ピンの使用

IBUFG

OBUF

OBUF

To DCMCLKIN Input

Sensitive DCMClock Input

FPGAldquoVirtualrdquoground pin

Direct connectionto PCB groundplane

GND

GND

x462_49_061903

図 50 電圧降下を回避するための VCCAUX 考察

VCCAUXSupply(at FPGA)

dV lt 10 mV

dt lt 1 mS

Keep VCCAUX noiseenvelope to lt 200 mVpeak-to-peak

Avoid sudden changes fromone DC level to anotherKeep dVdt lt 10mVmS x462_50_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 67

R

ただし FACTORY_JF の設定値を大き くするこ とによって DCM では遅延ラインが頻繁に更新されジッ タがわずかに増加する (~30 ps) 可能性もあるため FACTORY_JF のデフォルト設定は最大値ではあ り ません 電源供給が不安定の場合には 発生した位相エラーが増加したジッタよ り大きい場合があり この場合には FACTORY_JF の設定値を大き くするこ とによって デザインのパフォーマンスを向上できます

その他 ビッ トス ト リーム生成の設定

DCM では 次の 2 つのビッ ト ス ト リーム生成 (BitGen) オプシ ョ ンがあ り ます

bull -g lck_cycle このオプシ ョ ンを使用する場合インスタンシエート された DCM で LOCKED 出力がアサート されるまで FPGA のコンフ ィギュレーシ ョ ン スタート アップ シーケンスを遅らせるこ とができます

bull -g DCMShutdown このオプシ ョ ンを使用する場合JTAG ポート を使用した部分再コンフ ィギュレーシ ョ ン または全体の再コンフ ィギュレーシ ョ ンを実行中に コンフ ィギュレーシ ョ ン ロジックに SHUTDOWN コマンドがロード される と DCM ロジッ クがリセッ ト されます

Project Navigator でのビッ トス ト リーム生成オプシ ョ ン

ISE 52i Project Navigator を使用する場合は 図 51 に示すよ うに [Processes for Source] ウ ィンド ウで [Generate Programming File] を右ク リ ッ ク し [Properties] を選択するこ とによってビッ ト ス トリーム生成オプシ ョ ンを設定します

詳細は 「BitGen スイ ッチおよびオプシ ョ ン」 を参照してください

コマンド ライン またはスクリプ ト を使用したビッ トス ト リーム生成オプシ ョ ン

設定可能なオプシ ョ ンを表示するためには 次のコマンドを入力します

bitgen -help spartan3

DCM LOCKED 出力とコンフ ィギュレーシ ョ ン ロジックの設定

DCM の STARTUP_WAIT 属性を使用するこ とによってDCM で LOCKED 出力がアサート されるまで FPGA で DONE 信号がアサート されるを遅らせFPGA のコンフ ィギュレーシ ョ ン スタート アップロジッ クを待たせるこ とができます ただし このためには設計段階で次の二つの設定を行う必要があり ます まず ロ ッ ク状態になってからコンフ ィギュレーシ ョ ンを完了する必要がある各 DCM に対するSTARTUP_WAIT 属性を TRUE に設定します 次に各信号がスタート アップの 6 ク ロ ッ ク サイクルで 図 52 に示すよ うに動作するよ うにビッ ト ス ト リーム生成オプシ ョ ンを変更します デバイスがコンフ ィギュレーシ ョ ン スタート アップ シーケンスを完了するためにはDCM が LOCKED をアサート後に十分なコンフ ィギュレーシ ョ ン ク ロ ッ ク サイ クルが必要です

図 51 Project Navigator でのビッ トス ト リーム生成 (BitGen) オプシ ョ ン

Processes for Current Source

Generate Programming File

Programming File Generation Report

RunRerunRerun AllStopOpen without Updating

Properties

x462_51_061903

68 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他R

A FPGA 内部のグローバル ト ラ イ ステート信号 (GTS_cycle) を開放し すべての IO 信号をイネーブルにします

B GTS_cycle 後に DCM で LOCKED がアサート されるまでスタート アップ ロジッ クが待機するよにサイクルを設定します DCM では クロ ッ ク信号でロ ッ ク状態になる前に ク ロ ッ クおよび可能ならばフ ィードバッ ク信号のよ うな外部入力が必要です

C DCM がロ ッ ク状態になった後 FPGA の内部グローバル書き込みイネーブル (GWE_cycle) 信号をアサート します

D 最後に 内部の DONE 信号をアサート します

図 53 に Project Navigator を使用したオプシ ョ ン設定を示します

スタート アップ位相タイ ミ ングおよび GWE_cycle と DONE_cycle のタイ ミ ングには柔軟性があ り ますがDCM で STARTUP_WAIT 属性を使用する場合は必ず LCK_cycle の前に GTS_cycle がなければなり ません シーケンスがこのよ うになっていない場合にはDCM がロッ クせずコンフ ィギュレーシ ョ ンが完了しません

図 52 DCM LOCKED 出力とスタートアップ ロジックの相互関係

0 1 2 3 4 5 6

DONE_cycle

Start-up CLK

GTS_cycle

GWE_cycle

LCK_cycle

Start-up Cycles

A

B

C

D

x462_52_062403

図 53 BitGen オプシ ョ ン

Process Properties

Startup options

Value

CCLK

6

3

5

4

Default (NoWait)

General Options Configuration Options Readback Options

Property Name

FPGA Startup Clock

Enable Internal Done Pipe

Done (Output Events)

Enable Outputs (Output Events)Release Write Enable (Output Events)Release DLL (Output Events)

Match Cycle (Output Events)

Drive Done Pin High

OK Cancel Default Help

Optionally set GWE_cycle to follow GTS_cycleensuring DCM(s) reset afterIOs activate

LCK_cycle indicates cyclewhere start-up logic waitsfor DCM(s) to assertLOCKED

Done_cycle after LCK_cycle GTS_cycle must occur

before LCK_cycle to enableIO pins

[Startup options]

[OK] x462_53_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 69

R

JTAG を使用した部分再コンフ ィギュレーシ ョ ンまたは全体の再コンフ ィギュレーシ ョ ン中の DCM リセッ ト

も う 1 つのビッ ト ス ト リーム オプシ ョ ンと して SelectMAP を使用した部分再コンフ ィギュレーシ ョン中 または JTAG ポート を使用した全体および部分再コンフ ィギュレーシ ョ ン中に FPGA にあるすべての DCM を リセッ トできます このオプシ ョ ンを使用する場合 SHUTDOWN コマンド シーケンス中に AGHIGH コンフ ィギュレーシ ョ ン コマンドが発行される とDCM がリセッ ト されます JTAGを使用して再コンフ ィ ギュレーシ ョ ンを行う場合には 必ず DCM を リ セッ トする必要があ り ますProject Navigator でビッ ト ス ト リーム生成オプシ ョ ンを変更するためには (「Project Navigator でのビット ス ト リーム生成オプシ ョ ン」 を参照) 図 54 に示すよ うに Configuration options タブをク リ ッ クし [Reset DCM if SHUTDOWN amp AGHIGH performed] オプシ ョ ンのチェッ ク ボッ クスをオンにして ください

一時的な CLKIN の停止厳密なアナログ測定を行っている間のシステム全体のノ イズを削減するため FPGA アプリ ケーシ ョ ンのその他の部分に影響を与えるこ とな く 一時的に DCM へのクロ ッ ク入力を停止できます これが可能である理由の一部はDCM がすべてデジタルで安定して機能するシステムであるためです DCM では最初に入力クロ ッ クに対してロ ッ ク し次に LOCKED 出力をアサートする必要があ り ます DCM がリセッ ト しない場合には デスキュー回路にほとんど影響を与えずに CLKIN 入力クロ ッ クを一時的に停止できますが 次の条件を満たす必要があ り ます

bull デバイスが冷却するこ とによるタ ップ遅延の変化の影響を最小限にするために ク ロ ッ クの停止時

間は 100 ms 未満である必要があ り ます

bull ク ロ ッ クが Low である間に停止する必要があ り12 周期分の High から再開する必要があ り ます

上述の条件は理論的にはクロ ッ ク入力ジッタの仕様に違反しますがDCM の LOCKED 出力は Highを維持し ク ロ ッ クが再び動作する際にも High を維持しています したがって LOCKED が High であるこ とは必ずしも有効なクロ ッ クが使用可能であるこ とにはなり ません このため実際にはクロ ック入力ジッタの仕様に違反していますが これらの条件を満たす限り問題はあ り ません

CLKIN を停止する際にはDCM のデジタル遅延ラインにあるクロ ッ クが出力されるため 1 から 8 出力クロ ッ ク サイクルが生成されます 同様に CLKIN が再開する場合には 遅延ラインが満たされる

図 54 再コンフ ィギュレーシ ョ ン中に DCM をリセッ トするためのコンフ ィギュレーシ ョ ン オプシ ョ ン

Process Properties

Configuration options

ValuePull Up

Pull UpFloatPull UpPull Down0xFFFFFFFF

General Options Startup options Readback Options

Property NameConfiguration Pin DoneJTAG Pin TCKJTAG Pin TDIJTAG Pin TDOJTAG Pin TMSUnused IOBsUserID Code (8 Digit Hexadecimal)Reset DCM if SHUTDOWN amp AGHIGH performed

OK Cancel Default Help

Click Configuration options tab

Click OK when finished

Pull Up

Check to reset all the DCMsin the FPGA if the AGHIGHcommand issued duringSHUTDOWN sequence

x462_54_062103

70 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

参考資料R

までの 1 から 4 ク ロ ッ クサイ クル間は出力クロ ッ クが生成されません 通常 遅延ラインが満たされるためは 2 または 3 ク ロ ッ ク サイ クルが必要です

また 入力ク ロ ッ クを停止するこ とによって 位相シフ ト を行う こ とができます この位相シフ トは

DCM による制御を中断させるこ とな く 1 から 4 ク ロ ッ ク サイクル後のクロ ッ ク出力から影響を与えます

図 55 に CLKIN 入力クロ ッ クを一時的に停止する例を示します また この図には CLK2X ク ロ ッ ク出力への影響も示しています

参考資料 bull 『Spartan-3 データ シート 』 (モジュール 2) デジタル  ク ロ ッ ク  マネージャの特長および機能httpwwwxilinxcojpbvdocspublicationsds099-2pdf

bull 『Spartan-3 データ シート 』 (モジュール 3) タイ ミ ングおよびジッタ特性

httpwwwxilinxcojpbvdocspublicationsds099-3pdf

bull ザイ リ ンクス ISE 52i ライブラ リ ガイ ドDCM プリ ミ ティブhttptoolboxxilinxcomdocsanxilinx5pdfdocsliblibpdf

bull Architecture Wizard 録音版 Web セミナーhttpsupportxilinxcojpsupporttrainingjapan-home-pagehtm

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcojpxappxapp622pdf

bull 『開発システム リ ファレンス ガイ ド』 15 章 「BitGen」 ビッ ト ス ト リーム生成プログラムおよびオプシ ョ ン 335-367 ページhttptoolboxxilinxcomdocsanxilinx5pdfdocsdevdevpdf

図 55 CLKIN の一時的な停止

CLKIN

CLK2X

Clock input must bestopped in Low phase andfor no more than 100 ms

When restarted the clockinput must generate a fullHigh half-period

x462_55_062403

改訂履歴

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 71

R

改訂履歴 次の表に このアプリ ケーシ ョ ン ノートの改訂履歴を示します

日付 バージョ ン 履歴

20030709 10 初版リ リース

  • Spartan-3 FPGA におけるデジタル クロック
  • マネージャ (DCM) の使用
    • 概要
    • はじめに
    • 概要
    • DCM 位置および クロック分散 ネットワーク インターフェイス
    • DCM 機能の概要
      • 遅延ロック ループ (DLL)
      • デジタル周波数合成 (DFS)
      • 位相シフト (PS)
      • ステータス ロジック
        • DCM プリミティブ
          • シンボル
          • 接続ポート
          • 属性プロパティおよび制約
            • その他のザイリン クス FPGA ファ ミリとの互換性
            • DCM 使用のため のクロック条件
              • 入力クロック周波数範囲
              • 出力クロック周波数範囲
              • クロック入力およびクロック フィードバック入力の変動
                • LOCKED 出力
                • RST 入力
                • DCM Wizard
                  • DCM Wizard の起動
                    • Windows のスタート ボタンから起動
                    • Project Navigator から起動
                      • Wizard 選択
                      • [General Setup]
                      • アドバンスド オプション
                      • クロック バッファ
                      • クロック周波数合成
                      • HDL 出力の生成
                        • VHDL および Verilog のインス タンシエーション
                          • Project Navigator の言語テンプレート
                          • VHDL および Verilog リファレンス ファイル
                            • クロック スキュー の低減
                              • クロック スキューとは
                              • クロック スキュー パフォーマンス低下の原因
                              • スキューの削除
                              • 過去のクロック動作から将来のクロック動作を予測
                              • ターゲットのロック
                              • 安定した単調なクロック入力
                              • 確実なソースからのフィードバック
                              • 内部クロック信号からのスキュー削除
                              • 外部クロック信号からのスキュー削除
                                • コンフィギュレーション後の DCM リセット
                                • なぜリセットする必要があるのか
                                  • 遅延ロック ループとは
                                    • 遅延ロック ループ (DLL)
                                    • 位相ロック ループ (PLL)
                                    • インプリメンテーション
                                    • DLL と PLL
                                      • スキュー調整
                                        • システム同期
                                        • ソース同期
                                        • タイミングの比較
                                            • クロック調整
                                            • 位相シフト- ク ロック周期の分数 でクロックを遅延
                                              • 12 クロック周期位相シフト出力
                                                • 12 周期位相シフト出力によるデューティ サイクルのずれの削減
                                                • デュアル データ レート (DDR) クロックの例
                                                  • 14 位相シフト出力
                                                    • DLL 周波数モードによる出力の有効性
                                                    • 5050 デューティ サイクル調整オプション
                                                    • 4 つの位相遅延クロックエッジ位相パルス
                                                      • ファイン位相シフト
                                                      • 固定ファイン位相シフト
                                                        • 固定ファイン位相シフト範囲
                                                        • 最小位相シフト
                                                        • その他の考察点
                                                        • DCM Wizard
                                                          • 動的ファイン位相シフト
                                                            • 動作
                                                            • 動的ファイン位相シフト範囲
                                                            • 制御
                                                            • DCM Wizard
                                                            • アプリケーション例
                                                                • クロック逓倍 クロック分周 周波数合成
                                                                  • 周波数合成アプリケーション
                                                                  • 入力クロックおよび出力クロックの周波数条件
                                                                  • 2 逓倍クロック (CLK2XCLK2X180)
                                                                  • クロック分周 (CLKDV)
                                                                    • CLKDV クロック調整
                                                                    • CLKDV のジッタは周波数モードおよび属性値が整数か整数ではないかによって決定されます
                                                                    • DCM Wizard
                                                                      • 周波数合成回路 (CLKFXCLKFX180)
                                                                        • DCM Wizard
                                                                            • クロックのフォ ワードミラー リバッファ
                                                                            • クロック ジッタお よび位相ノイズ
                                                                              • クロック ジッタとは
                                                                              • クロック ジッタの原因
                                                                              • クロック ジッタ特性の理解
                                                                                • サイクル間ジッタ
                                                                                • 周期ジッタ
                                                                                • ユニット インターバル(UI)
                                                                                  • 総ジッタの計算
                                                                                    • DLL 出力ジッタへの入力ジッタの加算
                                                                                      • カスケード接続された DCM のジッタ計算
                                                                                        • 例 1 すべての DCM が DLL 出力を使用する場合
                                                                                        • 例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合
                                                                                        • カスケード接続した DCM を使用する場合の推奨デザイン
                                                                                          • システム パフォーマンスにおけるジッタの影響
                                                                                              • クロック ジッタを最小限にするための推奨デザイン
                                                                                                • 適切な電力分散システム設計
                                                                                                • 適切なプリント サーキット ボードの設計
                                                                                                • 同時スイッチ出力 (SSO) の推奨デザイン
                                                                                                • 仮想グランド ピンを DCM 入力および出力接続の近くに配置
                                                                                                • VCCAUX 考察
                                                                                                • FACTORY_JF 設定の修正
                                                                                                    • その他
                                                                                                      • ビットストリーム生成の設定
                                                                                                        • Project Navigator でのビットストリーム生成オプション
                                                                                                        • コマンド ラインまたはスクリプトを使用したビットストリーム生成オプション
                                                                                                        • DCM LOCKED 出力とコンフィギュレーション ロジックの設定
                                                                                                        • JTAG を使用した部分再コンフィギュレーションまたは全体の再コンフィギュレーション中の DCM リセット
                                                                                                          • 一時的な CLKIN の停止
                                                                                                            • 参考資料
                                                                                                            • 改訂履歴
Page 3: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々

DCM 位置およびクロック分散 ネッ トワーク インターフェイス

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 3

R

DCM 位置およびクロック分散ネッ トワーク インターフェイス

図 1 に示すよ うに2 個の DCM ブロ ッ クを持つ XC3S50 以外の Spartan-3 FPGA デバイスには 4 個のDCM ブロッ クがあ り これらのブロッ クは FPGA デバイスの左右に位置するブロ ッ ク RAM乗算器列の上下に位置します また XC3S50 にある 2 個の DCM は左側にあるブロ ッ ク RAM乗算器列の上下に位置します

DCM ブロ ッ クには デバイス上で同一エッジにあるグローバル バッファ入力およびグローバル バッファ マルチプレクサへの専用接続があ り ます図 2 に示すよ うにDCM は FPGA のグローバル ク ロ ック設計構造には不可欠な要素であ り ク ロ ッ ク分散ネッ ト ワークでは必要に応じてオプシ ョ ンと して使

用できます図 2a では ク ロ ッ ク入力はグローバル バッファ入力およびグローバル ク ロ ッ ク バッファを介して 低スキュー かつ高ファンアウ トのグローバル ク ロ ッ ク ネッ ト ワークを駆動します

アプ リ ケーシ ョ ンで複数 またはすべての DCM のクロ ッ ク機能を使用する場合には 図 2b に示すように DCM をグローバル バッファ入力とグローバル ク ロ ッ ク バッファ間で使用します

図 1 Spartan-3 FPGA における 4 つの DCM ブロック位置

Block RAMColumn

DCM_X1Y1

DCM_X1Y0DCM_X0Y0

DCM_X0Y1Global buffer multiplexers

EmbeddedMultiplierColumn

Global buffer multiplexers

XC3S50 only

x462_01_061803

4 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM 機能の概要R

DCM 機能の概要 図 3 に示すよ うにデジタル ク ロ ッ ク マネージャ (DCM) と呼ばれる 1 つのエン ト リは実際には別々の機能を持つ 4 つのユニッ トで構成され これらは独立して または互いに関連して動作します 次に各ユニッ トの機能について説明します

図 2 FPGA のグローバル クロック ネッ トワークに不可欠な要素としての DCM

I OIBUFG

I OBUFG

Global Buffer Input

GCLK

Global Clock Buffer

Low-SkewGlobal ClockNetwork

x462_02a_062403

I OIBUFG

I OBUFG

GlobalBuffer Input

GlobalClock BufferDigital Clock

Manager

CLKIN Output

CLKFB

DCM

x462_02b_062403

GCLK

a グローバル バッファ入力およびグローバル クロック バッファが低スキューのグローバル ネッ トワークを駆動する例

b DCM を直接グローバル クロック パスに挿入する例

図 3 DCM 機能ブロック図

DS099-2_07_040103

PSINCDECPSEN

PSCLK

CLKIN

CLKFB

RSTSTATUS [70]

LOCKED8

CLKFX180

CLKFX

CLK0

PSDONE

ClockDistribution

DelayCLK90CLK180CLK270CLK2XCLK2X180CLKDV

StatusLogic

DFSDLL

PhaseShifter

Del

ay T

aps

Out

put S

tage

Inpu

t Sta

ge

DCM

DCM 機能の概要

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 5

R

遅延ロック ループ (DLL)遅延ロ ッ ク ループ (DLL) ユニッ トは ク ロ ッ クの出力信号の伝搬遅延がゼロになるよ うにチップ上でスキュー調整を行います スキューを調整するためのデジタル回路では ク ロ ッ ク出力 (CLK0 またはCLK2X) を確認しネッ ト ワーク配線上に遅延を挿入します DLL は外部クロ ッ ク入力ポートからデバイス内の各クロ ッ ク入力までの遅延を削減する場合に有効です 効率的にバッファを使用したグロー

バル ネッ ト ワークでは さまざまな負荷がかかるこ とによって発生するネッ ト ワーク上のク ロ ッ ク スキューを最小限に抑えるこ とができます

DLL への入力信号は CLKIN および CLKFB であ りDLL からの出力信号は CLK0CLK90CLK180CLK270 CLK2X CLK2X180 および CLKDV です

この DLL を使用するこ とによって 2 逓倍クロ ッ ク (CLK2X CLK2X180) ク ロ ッ ク分周 (CLKDV)および 14 位相シフ ト出力の各出力を生成できます

デジタル周波数合成 (DFS)デジタル周波数合成 (DFS) ユニッ トは 設計者が定義した 2 つの整数 逓倍値 (CLKFX_MULTIPLY)および分周値 (CLKFX_DIVIDE) を使用して 柔軟 かつ広範囲の出力周波数を生成します こ こでは入力クロ ッ ク (CLKIN) 周波数を逓倍または分周し派生出力クロ ッ ク周波数を生成します この機能はDCM の DLL 機能の有無に関わらず使用できDLL を使用しない場合には CLKIN と DFS 出力間に位相関係はあ り ません

DFS は 周波数合成回路 (CLKFX CLKFX180) 出力を生成します

位相シフ ト (PS)位相シフ ト (PS) ユニッ トは DCM の CLKIN 入力に対するクロ ッ ク出力の位相関係を制御します

PS は位相シフ ト値を入力クロ ッ ク周期の分数で指定し9 つすべての DCM ク ロ ッ ク出力信号の位相をシフ ト させます この位相シフ ト値は設計段階で指定し FPGA コンフ ィギュレーシ ョ ン中に DCMに読み込まれます

PS は現在のク ロ ッ ク周期の 1256 単位で前後に位相をシフ ト させる こ とができる FPGA アプ リ ケーシ ョ ンのデジタル インターフェイスを提供します

PS の入力信号は PSINCDENPSEN および PSCLK であ り出力信号は PSDONE および STATUS[0]です

ステータス ロジックステータス ロジッ クはLOCKED と STATUS[0]STATUS[1]および STATUS[2] 出力信号によってDCM の現在のステート を示します LOCKED 出力信号は DCM 出力が CLKIN と同位相であるかを示し STATUS 出力信号は DLL および PS のステート を示します

RST 入力信号によってDCM 全体がリセッ ト されコンフ ィギュレーシ ョ ン後のステートに戻るためリセッ ト後は CLKIN 入力に再びロッ クする必要があ り ます

6 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

DCM プリ ミテ ィブ

DCM プリ ミ ティブはデジタル ク ロ ッ ク マネージャのすべての機能を表します図 4 に DCM プリ ミティブを示し 次に DCM の接続ポート 属性 プロパティ および制約の要約を示します

シンボル

接続ポート

表 3 にデジタル ク ロ ッ ク マネージャの接続ポート を示し 各ポートについて 信号方向およびその接続を必要とする DCM ユニッ ト などを簡潔に説明します 表 2 には表 3 で使用している各機能ユニットの略称を示します

図 4 DCM プリ ミテ ィブ

表 2 表 3 で使用している機能ユニッ トの略称

略称 機能ユニッ ト

DLL 遅延ロッ ク ループ

PS 位相シフ ト

DFS デジタル周波数合成

CLK0

CLK90

CLK180

CLK270

CLK2X

CLK2X180

CLKDV

CLKFX

CLKFX180

STATUS[70]

LOCKED

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDEC

PSCLK

DCM

x462_04_061803

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 7

R

表 3 DCM 接続ポート

ポート 方向 説明機能ユニッ ト

DLL PS DFS

CLKIN ク ロ ッ ク入力 DCM へのクロ ッ ク入力であ り 常に必要です CLKIN の周波数およびジッタは 『Spartan-3 データ シート 』 で指定された範囲内である必要があり 周波数モードは DLL_FREQUENCY_MODE 属性または DFS_FREQUENCY_MODE 属性で指定されます

CLKFB 入力 DCM へのクロ ッ ク フ ィードバッ ク入力です フ ィードバッ ク入力はデジタル周波数合成出力である CLKFX または CLKFX180 のみが使用されている場合は必要あ り ません CLKFB 入力のソースは DCM からの CLK0 出力または CLK2X 出力であ り状況に応じて CLK_FEEDBACK を 1X または 2X に設定する必要があ り ます 理論的には フ ィードバッ ク地点には内部または外部のクロ ッ ク分散ネッ ト ワークで追加された遅延が含まれます

「確実なソースからのフ ィードバッ ク」 を参照してください

オプ

シ ョ ン

RST 入力 非同期のリセッ ト入力であ り DCM ロジッ クを リセッ ト してコンフ ィギュレーシ ョ ン後の設定に戻します この入力を使用した場合 DCM では再び CLKIN を確認し ロ ッ ク します また DCM ブロ ッ ク内部で反転可能であり 反転させない場合の動作については下表に示します 「RST 入力」 を参照してください

PSEN 入力 動的位相シフ ト イネーブル信号であ り DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位

相シフ ト 」 を参照してください

PSINCDEC 入力 動的位相シフ ト値を増減する場合に使用し DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位相シフ ト 」 を参照してください

PSCLK ク ロ ッ ク入力 PS へのクロ ッ ク入力であ り 立ち上がりエッジで入力されます DCM ブロ ッ ク内部で反転可能です 周波数モードは DLL_FREQUENCY_MODE 属性によって指定されます 「動的ファイン位相シフ ト 」 を参照してくださ

0 影響なし

1 DCM ブロ ッ クを リセッ ト します アクティブ High であ り最低 2ns 間 High を維持する必要があ り ます

0 動的位相シフ ト をディ スエーブルにし PS への入力は無視されます

1 PSCLK ク ロ ッ クの次の立ち上がりエッジで動的位相シフ トをイネーブルにします

0 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を増加させます

1 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を減少させます

8 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLK0 ク ロ ッ ク出力 位相シフ トは 0degであ り CLKIN と同一周波数の出力ですDUTY_CYCLE_CORRECTION 属性が TRUE の場合は デューティ サイクルが 50 に調整されます DLL 機能にはフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK90 ク ロ ッ ク出力 90deg(14 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません またDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK180 ク ロ ッ ク出力 180deg(12 周期) 位相シフ ト した CLKIN と同一周波数であ りDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイクルが 50 に調整されます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK270 ク ロ ッ ク出力 270deg(34 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません また DUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK2X ク ロ ッ ク出力 位相シフ トは 0degであ り 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合には 常にデューティ サイクルが 50 とな りDLL へのフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLK2X180 ク ロ ッ ク出力 180deg位相シフ ト し 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合はデューティ サイクルが常に 50 とな り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKDV ク ロ ッ ク出力 分周クロ ッ ク出力であ り CLKDV_DIVIDE 属性で制御されます DLL_FREQUENCY_MODE 属性が High であ り CLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 です また CLKDV_DIVIDE 値が整数ではないではない場合はロ ッ ク状態になるまでに必要な時間が長くなり ます これはクロ ッ ク分周 (CLKDV) 出力です

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 9

R

CLKFX ク ロ ッ ク出力 合成クロ ッ ク出力であ り CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性で制御されます デューティ サイクルは常に 50 です CLKFX または CLKFX180 ク ロ ッ ク出力のみが使用されている場合には クロ ッ ク フ ィードバッ クは必要あ り ません 「周波数合成回路 (CLKFX CLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKFX180 ク ロ ッ ク出力 CLKFX を 180deg位相シフ ト した (CLKFX を反転したよ うに見える) 合成クロ ッ ク出力であ り デューティ サイ クルは常に 50 です CLKFX ク ロ ック出力または CLKFX180 ク ロ ッ ク出力が DCM で使用されている場合には フ ィードバッ ク ループは必要あ り ません 「周波数合成回路 (CLKFXCLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

STATUS[0] 出力 動的位相シフ トがオーバーフローであるこ とを示します 動的ファイン位

相シフ トの制御出力で 動的位相シフ トが最小値または最大値に達してい

るこ とを示します 制限値は plusmn255 または位相シフ ト遅延ラインの最後に達した場合は その値以下になり ます 「動的ファイン位相シフ ト 」 を参照し

てください

STATUS[1] 出力 CLKIN 入力が停止したこ とを示し CLKFB フ ィードバッ ク入力が接続されている場合のみに使用できます LOCKED 出力がアサート されるまではリセッ ト状態であ り アクティブになるためには CLKIN が 1 サイクル以上必要です CLKIN が最初から ト グルしない場合にはアサート されません

STATUS[2] 出力 CLKFX 出力または CLKFX180 出力が停止したこ とを示します 周波数合成回路 (CLKFX CLKFX180) を参照してください

STATUS[73]

出力 予約済み

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

0 位相シフ トは制限値に達していません

1 位相シフ トが制限値に達しています

0 CLKIN がト グルしています

1 CLKIN がト グルしていません

0 CLKFX 出力および CLKFX180 出力がト グルしています

1 CLKFX 出力および CLKFX180 出力がト グルしていませんただしLOCKED 出力が High に維持されている場合があ ります

10 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

LOCKED 出力 すべての DCM 機能は CLKIN の周波数にロッ ク しています CLKIN が指定された範囲内 ( 「DCM 使用のためのクロ ッ ク条件」 に記載) である場合に クロ ッ ク出力が有効です 「周波数合成回路 (CLKFX CLKFX180)」を参照してください

PSDONE 出力 動的位相シフ トが完了したこ とを示します 「動的ファイン位相シフ ト 」 を

参照してください

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

0 DCM は CLKIN の周波数に対してロ ッ クする過程であ りDCM のクロ ッ ク出力は無効です

1 DCM は CLKIN の周波数に対してロ ッ ク しDCM のクロ ック出力は有効です

1 rarr 0 DCM のロ ッ ク状態が解除され DCM を リセッ トする必要があ り ます

0 位相シフ トが行われていない または実行中です

1 要求された位相シフ トは完了しています この出力が PSCLK の 1 サイクル間 High になった後次の位相シフ ト を実行できます

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 11

R

属性 プロパティ および制約

表 4 にデジタル ク ロ ッ ク マネージャの属性を示しますすべての属性は設計段階で設定されコンフ ィギュレーシ ョ ン中にプログラムされます 動的ファイン位相シフ ト以外では FPGA アプリ ケーシ ョ ンの実行中にこれらの設定を変更するこ とはできません 使用するデザイン入力ツールに合わせて lt属性gt=lt設定gtを使用し 属性を設定します

表 4 DCM 属性

属性 可能な設定および説明

DLL_FREQUENCY_MODE CLKIN 入力 PSCLK 入力 および遅延ロッ ク ループ (DLL) からの出力クロ ッ クの有効周波数範囲を指定します DLL ク ロ ッ ク出力には CLK0 CLK90 CLK180 CLK270CLK2X CLK2X180 CLKDV が含まれます

CLK_FEEDBACK フ ィードバッ ク ク ロ ッ クの周波数を指定します

DUTY_CYCLE_CORRECTION DLL からの出力である CLK0 CLK90 CLK180 および CLK270 に対する 50 デューティ サイ クル調整をイネーブルまたはディ スエーブルに設定します

CLKDV_DIVIDE CLKDV 出力の周波数を指定します 設定可能な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 です

CLKDV_DIVIDE が整数ではない場合 ロ ッ クするために必要な時間が長くなり 出力ジッ タが増加します

CLKFX_MULTIPLY CLKFX 出力および CLKFX180 出力の周波数を逓倍する場合の係数を指定します この値は CLKDV_DIVIDE 属性の値と と もに使用されます CLKFX_MULTIPLY に設定可能な範囲は整数値の 2 から 32 であ り デフォルトは 4 です

LOW デフォルトです DLL は低周波数モードで動作し DLL に関連したすべての出力が有効です ク ロ ッ ク入力およびクロ ッ ク出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DLL の指定範囲内にあ り ます

HIGH DLL は高周波数モードで動作します 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力 および 14 位相シフ ト出力 CLK90 と CLK270 は無効です CLKDV_DIVIDE 属性が整数以外の場合 CLKDV 出力のデューティ サイクルは 50 になり ません ク ロ ッ ク入力およびクロ ッ ク出力の周波数は『Spartan-3 データ シート 』 に記載されている高周波数 DLL の指定範囲内にあり ます

1X デフォルトであ り CLK0 フ ィードバッ クです周波数は CLKIN と同一です

2X CLK2X フ ィードバッ クであ り 周波数は CLKIN の 2 倍です

なし フ ィードバッ ク ク ロ ッ クはあ り ません CLKFX 出力または CLKFX180 出力のみを使用している場合に可能です

TRUE デフォルトであ り デューティ サイクルは 50 に調整されます

FALSE デューティ サイクル調整は行われません

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

12 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLKDV_DIVIDE CLKFX 出力および CLKFX180 出力の周波数を分周する場合の係数を指定します この値は CLKFX_MULTIPLY 属性の値と と もに使用されます設定可能な範囲は整数値の 1 から 32 であ り デフォルトは 1 です

PHASE_SHIFT この属性は CLKOUT_PHASE_SHIFT 属性が FIXED または VARIABLE に設定されている場合にのみ使用できます CLKIN とすべての DCM ク ロ ッ ク出力間の立ち上がりエッジにおけるスキューをコンフ ィギュレーシ ョ ンで定義し DCM ク ロ ッ ク出力を位相シフ ト させます

スキューまたは位相シフ ト値は整数で指定されます この整数値は 次の等式に示すよ うに

ク ロ ッ ク周期の分数で表され範囲は -255 から 255 になり ますデフォルト値は 0 であ り実際に設定可能な値は入力クロ ッ ク周波数によって異なり ます また TCLKIN gt FINE_SHIFT_RANGE の場合には 実際の範囲はよ り小さ くな り ますFINE_SHIFT_RANGE は遅延ラインにおけるすべてのタ ップの総遅延を示します 詳細は「ファ イン位相シフ ト 」 を参照してください

CLKOUT_PHASE_SHIFT 位相シフ ト モードを指定します PHASE_SHIFT 制約と共に使用し DCM のデジタル位相シフ ト (DPS) 機能をインプリ メン ト します また この設定は DLL および DFS からのすべてのクロ ッ ク出力に反映されます 詳細は 「ファ イン位相シフ ト 」 を参照してください

DESKEW_ADJUST FPGA ク ロ ッ ク入力ピンと DCM 出力クロ ッ ク間のクロ ッ ク遅延調整を制御します 「スキュー調整」 を参照してください

この設定を DCM ク ロ ッ ク出力の位相シフ トに使用しないでください 正確な位相シフ ト を行う場合にはCLKOUT_PHASE_SHIFT 制約または PHASE_SHIFT 制約を使用してください

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

なし デフォルトです CLKIN および CLKFB は同位相 (スキューなし ) であ り位相関係は変更できません PHASE_SHIFT = 0 の場合の FIXED 設定と同一です

FIXED 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定され アプ リ ケーシ ョ ンでは変更できません

VARIABLE 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定されますが 動的位相シフ ト制御信号 PSEN PSCLK PSINCDEC および PSDONE を使用してアプリ ケーシ ョ ンで変更可能です

SYSTEM_SYNCHRONOUS デフォルトであ り すべてのデバイスがシステム全体

に共通のクロ ッ ク ソースで動作します

SOURCE_SYNCHRONOUS データ ソースから クロ ッ クが入力されます ソース同期アプリ ケーシ ョ ンがその一例です

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 13

R

DFS_FREQUENCY_MODE DCM のデジタル周波数合成 (DFS) からのクロ ッ ク出力である CLKFX および CLKFX180 に有効な周波数範囲を指定します DLL ク ロ ッ ク出力が使用されている場合はDLL_FREQUENCY_MODE によって CLKIN 入力の周波数範囲がよ り制限されます

STARTUP_WAIT DCM の LOCKED 信号のアサート よ り先に FPGA コンフ ィギュレーシ ョ ンの DONE 信号を High にするかど うかを制御します

2 つ以上の DCM をコンフ ィギュレーシ ョ ンしている場合は すべての DCM がロ ッ クする必要があ り ます

CLKIN_DIVIDE_BY_2 CLKIN が DCM ブロ ッ クに入力される前に 周波数を 2 分周します アプリ ケーシ ョ ンによっては 入力クロ ッ クの周波数を適切な範囲内に低減できます

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

LOW デフォルトであ り DFS は低周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合 CLKIN 入力の周波数範囲はその出力によって変化します

HIGH DFS は高周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている高周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合CLKIN 入力の周波数範囲はその出力によって変化します

FALSE デフォルトであ り DCM がロ ッ ク状態になるのを待たずに DONE 信号がアサート されます

TRUE DCM がロ ッ ク状態になるまで DONE 信号は High になり ません ただし この STARTUP_WAIT は LOCKED 信号が High になるのを妨げるものではあり ません またFPGA のスタート アップ シーケンスのサイクルの始めに LCK (ロ ッ ク ) サイクルを挿入するよ うに修正する必要があ り ます ( 「ビッ ト ス ト リーム生成の設定」 を参照してください) 通常は DONE サイクルまたは GWE サイクルがその後に続きます

FALSE デフォルトであ り CLKIN は直接 DCM ブロ ッ クに入力されます

TRUE CLKIN が DCM に入力する前に その周波数を 2 分周され デューティ サイクルは約 50 に調整されます これは 高周波数のクロ ッ クを使用し DCM の入力クロ ッ クの周波数条件またはデューティ サイ クル条件を満たす場合に有効です また 周波数モードを決定する場合 または位相シフ ト範囲を算出する場合に クロ ッ ク周波数を 2 分周します

14 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他のザイリンクス FPGA ファ ミ リ との互換性R

その他のザイリンクス FPGA ファミ リ との互換性

Spartan-3 のデジタル ク ロ ッ ク マネージャ (DCM) は Virtextrade-II および Virtex-II Pro FPGA ファ ミ リで使用されている DCM とほぼ同様の機能を持ちますが Spartan-3 DCM は第三世代の DCM デザインであ り さ らに機能が向上しています 特に Virtex-II デバイス と比較する と Spartan-3 デバイスはVCCAUX 供給電源における ノ イズ耐性が改善されVirtex-IIPro ファ ミ リ よ り も位相シフ ト機能に柔軟性があ り ます 出力の周波数制限値はVirtex-II および Virtex-II Pro ファ ミ リの DCM の方が高くなっています

またSpartan-IIIIE と比較する と Spartan-3 DCM の遅延ロッ ク ループ (DLL) 機能は大幅に改善され Spartan-IIIIE DLL の機能をすべて備えているだけでなく 周波数合成および位相シフ ト機能が追加されました Spartan-3 の周波数合成では 最大 32 までの係数を使用して入力クロ ッ クを逓倍しますが Spartan-IIIIE DLL での周波数合成機能は 2 逓倍までです 同様に Spartan-3 DCM の分周機能はSpartan-II DLL よ り広範囲に対応しています

DCM 使用のためのクロック条件

DCM は その機能に最大限の柔軟性があるよ うに設計されていますが ク ロ ッ クの周波数と安定性周波数の変動 およびクロ ッ ク ジッタにいくつかの条件があ り ます

入力クロック周波数範囲

DCM のクロ ッ ク入力周波数は アプ リ ケーシ ョ ンにおける DLL ユニッ ト DFS ユニッ ト またはその両方によって決定されます

表 5 に デジタル周波数合成 (DFS) ユニッ トでの入力クロ ッ クCLKIN の周波数範囲を示します DFS ユニッ ト を単独で使用する場合の周波数範囲は DLL 入力ニッ ト よ り も広くな り ますが 両ユニッ ト を使用する場合には よ り厳しい周波数条件を DLL に適用する必要があ り ます 表には データ シートに記載されている仕様名および概算値の 1 つを示していますが実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

FACTORY_JF DCM の DLL ユニッ トでタ ップ設定を修正する頻度を制御します この設定は DLL エレメン トのジッ タ特性に影響を与え DLL_FREQUENCY_MODE 属性に基づいて自動的に指定されます

設計方法と して推奨された場合以外は デフォルト設定を変更しないでください (「FACTORY_JF 設定の修正」 を参照してください)

LOC 図 1 に示すよ うに DCM の物理的な配置位置を指定します

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

DLL_FREQUENCY_MODE FACTORY_JF

LOW 0xC080

HIGH 0xF0F0

DCM_X0Y0 DCM の左下

DCM_X1Y0 DCM の右下 (XC3S50 では設定不可)

DCM_X0Y1 DCM の左上

DCM_X1Y1 DCM の右上 (XC3S50 では設定不可)

DCM 使用のためのクロック条件

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 15

R

表 6 に遅延ロッ ク ループ (DLL) ユニッ トでの入力クロ ッ ク CLKIN の周波数範囲を示します DLLが単独で使用されている場合と DFS と と もに使用されている場合では 同一の周波数条件が適用されます 表には低周波数モードおよび高周波数モードの場合の DLL の周波数範囲を示しています この周波数モードはDLL_FREQUENCY_MODE 属性によって指定されます 表にはデータ シートに記載されている仕様名および概算値の 1 つを示していますが 実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

出力クロック周波数範囲

DCM の出力クロ ッ クに対しても周波数範囲が指定されています 詳細は 「入力クロ ッ クおよび出力クロ ッ クの周波数条件」 を参照して ください

クロック入力およびクロック フ ィードバック入力の変動「安定した単調なクロ ッ ク入力」 で説明するよ うに DCM では安定性があ り単調なクロ ッ ク入力を使用する必要があ り ます しかし DCM 機能の柔軟性を最大限に使用しよ う とする場合 CLKIN で発生するクロ ッ ク ジッタおよび CLKIN 入力と CLKFB 入力の変動をある程度まで許容しなければなり ません

CLKIN 入力におけるジッタには 2 つのタイプがあ り ます 1 つはサイ クル間ジッタであ り このジッタは CLKIN 入力周期があるサイ クルから次のサイ クル間でどの程度の変化を許容できるかを示します 表 7 にデータ シートに記載されている仕様名および概算値を含むサイクル間ジッタの最大許容範囲を示します

表 5 デジタル周波数合成 (DFS) ユニッ トのクロック入力周波数範囲

機能 最小周波数 最大周波数

デジタル周波数合成 (DFS) CLKIN_FREQ_FX_MIN ~ 100 MHz

CLKIN_FREQ_FX_MAX ~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 6 遅延ロック ループ ユニッ トのクロック入力周波数範囲

機能

DLL 周波数モード属性 (DLL_FREQUENCY_MODE)

= LOW = HIGH

最小周波数 最大周波数 最小周波数 最大周波数

遅延ロ ッ ク ループ (DLL)

CLKIN_FREQ_DLL_LF_MIN

~ 24 MHz

CLKIN_FREQ_DLL_LF_MAX

~ 180 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 48 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 7 サイクル間ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_CYC_JITT_FX_LF~ plusmn300 ps

CLKIN_CYC_JITT_FX_HF~ plusmn150 ps

遅延ロッ ク ループ (DLL) CLKIN_CYC_JITT_DLL_LF~ plusmn300 ps

CLKIN_CYC_JITT_DLL_HF~ plusmn150 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

16 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

LOCKED 出力R

も う 1 つのジッタは 周期ジッタ と呼ばれ クロ ッ ク周期間の最大変動を示します サイクル間ジッタがあるサイクルと次のサイクルの差を示すのに対し 周期ジッタはクロ ッ ク周期全体での変化範囲を示

します 表 8 にデータ シートに記載されている仕様名および概算値を含む周期ジッタの最大許容範囲を示します

DCM の安定性に影響を与える別の要素は DLL で使用される ク ロ ッ ク フ ィードバッ ク パスですフ ィードバッ ク パス遅延の変動は 表 9 に示す範囲内でなければな り ません ただし グローバル クロ ッ ク ラ インに接続される場合はチップ上の変動が最小になるため こ こに示した範囲制限は外部フ ィードバッ ク パスにのみ適用されます

LOCKED 出力 DCM の LOCKED 出力は すべての DCM 機能が CLKIN 入力にロ ッ ク している こ と を示し ますLOCKED 信号がアサート される場合にはFPGA アプリ ケーシ ョ ン内で出力クロ ッ クを使用できます

図 5 に LOCKED 出力信号の動作を示しますLOCKED 出力は FPGA のコンフ ィギュレーシ ョ ン終了直後に Low になり RST 入力がアサート されている場合は常に Low です

コンフ ィギュレーシ ョ ン後 DCM は CLKIN 信号の有効無効に関わらず 常にロ ッ ク状態になろ う とします入力クロ ッ クが安定していない場合にはCLKIN 入力が安定するまでFPGA 回路 で RST 入力をアサートする必要があ り ますDLL では CLKIN 入力および CLKFB 入力の両方を使用し これらの立ち上がりエッジが同位相である時に完全にロ ッ ク状態であるこ とを確認しますDFS ではCLKINを使用してク ロ ッ クの周波数が有効であるかを確認します また DCM がロ ッ ク状態になるために数千クロ ッ ク サイクルのサンプルが必要となる場合があ り ます

DCM の CLKIN に対するロッ クが完了する とLOCKED 出力が High にアサート されDCM のクロ ック出力が有効となるため FPGA アプリ ケーシ ョ ン内でこれらの出力を使用できます 『Spartan-3 データ シート 』 の タイ ミ ングに関する章には ロ ッ クに必要な時間のワース ト ケースが記載されています通常 クロ ッ ク周波数が高いほどDLL 出力は短時間でロッ ク状態になり ます またDFS 出力がロックするためには非常に長い時間が必要とな り ます この時間は 逓倍または分周の係数によって変化し

ますが これらの係数が小さいほど時間は短縮します

システム ク ロ ッ クが安定してから FPGA のコンフ ィギュレーシ ョ ンを完了させるために オプシ ョ ンと して DCM がロ ッ ク状態になるまでコンフ ィギュレーシ ョ ンの完了を遅らせるこ とができます この機能は STARTUP_WAIT 属性で制御します

LOCKED が High になる前の DCM ク ロ ッ ク出力信号の動作は保証していません LOCKED が Highになる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な波形が含まれている場合があ ります

表 8 周期ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_PER_JITT_FX_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_FX_HF~ plusmn1000 ps (plusmn1 ns)

遅延ロッ ク ループ (DLL) CLKIN_PER_JITT_DLL_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_DLL_HF~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 9 外部フ ィードバック パス遅延範囲

解説 指定範囲

チップ外にある CLKFB フ ィードバッ ク パス遅延の最大許容範囲 CLKFB_DELAY_VAR_EXT ~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

RST 入力

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 17

R

CLKIN 入力の周波数が指定範囲内である場合DCM は内部遅延のタップを調整し ロ ッ ク状態を維持しますが その制限を大幅に満たしていない場合には ロ ッ ク状態が解除され LOCKED 出力が Lowになり ます

一度 DCM のロ ッ ク状態が解除される と 自動的に再びロッ ク状態に戻るこ とはあ り ません ロ ッ ク状態が解除された場合つま り LOCKED が High から Low となった場合にはFPGA アプリ ケーシ ョ ンでは RST 入力を使用して DCM を リセッ トするなどの適切な方法を使用して 再びロ ッ ク状態にする必要があ り ます

RST 入力 非同期の RST 入力は DCM ロジッ クを リ セッ ト してコンフ ィギュレーシ ョ ン後の設定に戻しますRST ピンはFPGA を再コンフ ィギュレーシ ョ ンする場合または許容範囲を超えている入力周波数を変更する場合に使用して ください このピンはアクティブ High であ り ダイナミ ッ ク信号またはグランドに接続する必要があ り ます また RST 入力は最低 2ns 間アサート しなければなり ません

コンフ ィギュレーシ ョ ン後に 入力ク ロ ッ ク周波数が安定していない場合 ク ロ ッ クが安定するまで

RST をアサー ト して ください また 外部フ ィードバッ クを使用している場合は コンフ ィギュレーシ ョ ン直後に DCM を リセッ ト します31ページの図 20 に SRL16 シフ ト レジスタ プリ ミ ティブを使用した リセッ ト方法の例を示します

LOCKED 周波数が High から Low になる場合のよ うに DCM のロ ッ ク状態が解除される と FPGAアプリ ケーシ ョ ンでは RST をアサート しDCM に入力クロ ッ ク周波数に対して再ロ ッ ク させる必要があ り ます

図 5 LOCKED 出力の機能的な動作

LOCKED HIGH

FPGA RST

Y

N

Y

N

FPGA

LOCKED LOW

CLKIN

LOCKED LOW

RST

x462_05_062103

CLKIN

RST

RST

18 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

DCM の LOCKED 出力が High の場合 RST がアサート される と この LOCKED 出力は 4 ク ロ ッ クサイ クル以内に Low になり ます このため リセッ ト後は DCM を再びロ ッ ク状態にさせます

また RST をアサートするこ とによって DCM の遅延タップ位置がゼロに戻り このタ ップ位置を変更するこ とによってDCM のクロ ッ ク出力ピンでグ リ ッチが発生する可能性があ り ます 同様にRSTはクロ ッ ク出力のデューティ サイクルにも影響を与えます

さ らに RST がアサート される と現在の可変位相シフ ト値は PHASE_SHIFT 属性で指定された値に戻り ます

DCM Wizard DCM を使用するアプリ ケーシ ョ ンを容易にするために ザイ リ ンクス ISE には 順を追って DCM を設定できるソフ ト ウェア Wizard が含まれています 図 6 に示すよ うに DCM Wizard を使用するこ とによってVHDL 構文または Verilog 構文で DCM をインスタンシエートするベンダ固有のロジッ ク合成ファイルを生成できます また DCM Wizard では特定のインプリ メンテーシ ョ ン用にユーザー制約ファイル (UCF) を生成できますさ らにすべてのユーザー仕様はXilinx Architecture Wizard (XAW)設定ファイルに保存されます

DCM Wizard の起動DCM Wizard を起動するためにはWindows のスタート ボタンから起動するまたはザイ リ ンクス ISEProject Navigator ソフ ト ウェアから起動する という 2 つの方法があ り ます

Windows のスタート ボタンから起動

DCM Wizard を Windows スタート ボタンから起動する場合は[スタート ] rarr [すべてのプログラム] rarr[Xilinx ISE 5] rarr [アクセサリ ] rarr [Architecture Wizard] をク リ ッ ク します 図 7 に設定ウ ィンド ウを示します

bull DCM のオプシ ョ ン設定を保存する Xilinx Architecture Wizard (xaw) ファ イル名を入力します

bull こ こで [Browse] ボタンをク リ ッ ク して xaw ファ イルを選択するこ と も可能です

bull 出力ファイルのロジッ ク合成言語を VHDL または Verilog から選択します

bull ロジッ ク合成ツールを選択します DCM Wizard では 指定した合成ツールに応じて ベンダ固有の出力ファイルが生成されます

bull ターゲッ ト デバイスに Spartan-3 を選択します

図 6 DCM Wizard の DCM 設定用グラフ ィ カル インターフェイス

DCM Wizard

User contraintsfile (UCF)

Vendor-specificVHDL or Verilog

Xilinx ArchitectureWizard (XAW)

settings file

Graphically configure aSpartan-3 Digital ClockManager (DCM)

x462_06_061803

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 19

R

Project Navigator から起動

Project Navigator のメニュー バーから または [Sources in Project] ウ ィンド ウから DCM Wizard を起動できます メニュー バーで [Project] rarr [New Source] を選択するか [Sources in Project] ウ ィンドウで右ク リ ッ ク し [New Source] を選択してください

図 8 に示すよ う に リ ス ト か ら [Architecture Wizard] を選択し ます Xilinx Architecture Wizard(xaw) ファ イル名を入力し そのファイルを保存するディ レク ト リ を選択した後 [Next] をク リ ッ クします

図 7 Architecture Wizard の設定

図 8 Project Navigator での Architecture Wizard 設定

Xilinx Architecture Wizard Setup

My_Spartan-3 Browse

XAW File

Output File Type

VHDL Verilog

XST

Synthesis Tool

XC3S1000-FT256-4 Select

OK Cancel

Part

DCM

Spartan-3

[OK]

x462_07_061803

New

User DocumentVHDL ModuleCoreGen IPSchematicVHDL LibraryVHDL PackageVHDL Test BenchTest Bench WaveformBMM FileMEM FileImplementation Constraints FileArchitecture WizardState Diagram

My_Spartan-3

F ile Name

MyDirectory

Lo cation

Add to Project

lt Back Next gt Cancel Help

DCM

[Next]

Architecture Wizard

x462_08_061803

20 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

Wizard 選択前述した手順はすべての ISE Architecture Wizard に共通ですが Spartan-3 FPGA は図 9 に示す DCMWizard をサポート します こ こで [OK] をク リ ッ ク し 次に進みます

[General Setup] 図 10 に示すよ うに ほとんどのオプシ ョ ンは DCM Wizard の [General Setup] ダイアログ ボッ クスで設定します 楕円の枠内には その設定に対応する DCM プリ ミ ティブ属性名を示します

bull DCM のインスタンス名を入力します このインスタンス名は Verilog または VHDL 出力ファイル内で使用されます

bull 最終的なアプリ ケーシ ョ ンにおける出力および機能を選択するためには 必要な DCM ク ロ ッ ク出力のチェッ ク ボッ クスをオンにします チェッ ク ボッ クスをオンにした出力に対しては それに関連したオプシ ョ ンの設定が可能になり ます

bull CLKIN ク ロ ッ ク入力の周波数を入力します 周波数を MHz で指定するかまたはクロ ッ ク周期をns で指定して ください この値によって DCM の DLL_FREQUENCY_MODE 属性が設定されます

bull CLKIN ソースが FPGA の内部であるか外部であるかを指定します[External] を選択した場合DCM Wizard は自動的にグ ローバル バッ フ ァ入力 (IBUFG) プ リ ミ テ ィ ブを挿入し ます[Internal] を選択した場合は ソース信号は HDL ソース ファ イル内の ト ップ レベル入力となり ます

bull CLKDV 出力をオンにした場合は クロ ッ ク分周回路の [Divide by Value] 値を指定します この値によって DCM の CLKDV_DIVIDE 属性が設定されます

bull DCM へのフ ィードバッ ク パスを指定します CLKFX 出力または CLKFX180 出力のみを使用する場合は [None] を選択します これらの出力を使用しない場合は フ ィードバッ クが必要ですFPGA 内部からのフ ィードバッ クを使用する場合は [Internal] を選択し外部からのフ ィードバック ループを使用する場合は [External] を選択します さ らに DCM フ ィードバッ クのソースをCLK0 (1X) または CLK2X (2X) から選択します この選択によってDCM の CLK_FEEDBACK属性が設定されます

図 9 Spartan-3 FPGA でのみ選択可能な DCM Wizard

Xilinx Architecture Wizard Selection

DCM Wizard

OK Cancel

Select Wizard

Spartan-3 DCM Wizard [OK]

x462_09_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 21

R

bull すべての DCM 出力における位相シフ トの有無を指定します デフォルト設定は位相シフ ト なし (None) です 位相シフ トが必要な場合は 位相シフ ト値と して [Fixed] または [Variable] を選択します [Variable] を選択するこ とによって 動的位相シフ ト制御 PSEN PSINCDECPSCLK および PSDONE が使用可能となり DCM の CLKOUT_PHASE_SHIFT 属性が指定されます Fixed モードおよび Variable モードのいずれを選択する場合でも 固定位相シフ ト値あるいは動的位相シフ トの初期値を決定する [Phase Shift Value] を指定します この値によってDCM の PHASE_SHIFT 属性が設定されます

bull アドバンス ド オプシ ョ ン ウ ィンド ウを開く場合は [Advanced] ボタンをク リ ッ ク します

bull 設定の完了後 [Next] をク リ ッ ク し ク ロ ッ ク バッファ ダイアログ ボッ クスに進みます

アドバンスド オプシ ョ ン図 11 に示すアドバンス ド オプシ ョ ン ウ ィンド ウで さ らに詳細な DCM オプシ ョ ンを設定できます

bull デフォルトではDCM は FPGA のコンフ ィギュレーシ ョ ンに対して影響を与えませんが [Yes] をク リ ッ ク した場合は DCM が LOCKED 出力をアサートするまで FPGA コンフ ィギュレーシ ョンで DONE 信号のアサート を遅らせるこ とができます この設定は DCM の STARTUP_WAIT属性で定義します このよ うに [Yes] を選択した場合は ビッ ト ス ト リーム生成オプシ ョ ンの追加

図 10 [General Setup] ダイアログ ボックスでの DCM オプシ ョ ン設定

Xilinx DCM Wizard - General Setup

MY_DCMDCM Instance Name

Input Clock Frequency

MHz ns 2

Phase Shift Value

30

Advanced

Source

CLK0

CLK90

CLK180

CLK270

CLKDV

CLK2X

CLK2X180

CLKFX

CLKFX180

LOCKED

STATUS

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDECPSCLK

CLKIN SourceInternal

External

Divide By Value

FeedbackInternal External None

Value 1X 2X

Duty Cycle Correction

Yes No

Phase ShiftNone Fixed Variable

23 More Info

lt B ack Next gt Cancel

DCM

CLKFX CLKFX180

CLKDV

MHz ns

Advanced

(BUFG)

[Yes] CLK0CLK90 CLK180 CLK270

50CLK0 (1X)CLK2X (2X)

[Next]

CLKDV

[Fixed] PSEN PSINCDECPSCLK

[Variable]

DLL_FREQUENCY_MODE

CLK_FEEDBACK

CLKDV_DIVIDE

CLKIN IBUFG

[External][Internal]

DUTY_CYCLE_CORRECTIONCLKOUT_PHASE_SHIFT

DCM

PHASE_SHIFT

x462_10_061803

22 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

変更が必要です この変更については 「DCM LOCKED 出力と コンフ ィギュレーシ ョ ン ロジッ クの設定」 で説明します

bull ある特定の DCM において CLKIN 入力の周波数が高すぎる場合には [Divide Input Click by 2]の [Yes] をク リ ッ ク し 入力周波数を半減させて ください これによって DCM ブロ ッ クに入力前のデューティ サイ クルは約 50 にな り ます この設定は DCM の CLK_FEEDBACK 属性で定義します

bull ソース同期のデータ転送が必要なアプリ ケーシ ョ ンでは [DCM Deskew Adjust] 値を [SOURCE_SYNCHRONOUS] に変更します SOURCE_SYNCHRONOUS または SYSTEM_SYNCHRONOUS 以外の値を使用する場合はザイ リ ンクスにお問い合わせください この設定は DCM の CLK_FEEDBACK 属性を定義します 「スキュー調整」 を参照して ください

bull [OK] をク リ ッ ク し 変更を適用して [General Setup] ウ ィンド ウに戻り ます

クロック バッファ次に DCM の各クロ ッ ク出力に対するクロ ッ ク バッファを定義します(図 12 参照) DCM Wizard のデフォルト設定では 自動的にすべての DCM ク ロ ッ ク出力にグローバル バッファ (BUFG) を使用しますが Spartan-3 デバイスでは 上辺および下辺のそれぞれにある 4 つのグローバル バッファを同一辺にある 2 つの DCM で共有しますXC3S50 では上辺または下辺に 1 つの DCM があ り オプシ ョ ンと して同じ辺にある 4 つのクロ ッ ク バッファすべてに接続できます

bull [Clock Buffer Settings] にある [Customize] をク リ ッ ク し DCM の各クロ ッ ク出力にクロ ッ クバッファの種類を指定します

bull DCM の各クロ ッ ク出力に対して リ ス トから [Clock Buffer] 出力タイプを選択します 表 10 に選択可能なクロ ッ ク バッファ オプシ ョ ンを示します

bull [Enabled Buffer] 出力タイプを使用する際にはバッファ イネーブル (CE) 入力の信号名を指定できますが 自動的に作成された信号名も使用できます

bull [Clock Mux] 出力タイプを使用する場合もセレク ト (S) 入力の信号名を指定できますが自動的に作成された信号名も使用できます

bull [Next] まはた [Finish] をク リ ッ ク し 設定を完了します [Next] ボタンが表示されるのは[General Setup]ダイアログ ウ ィ ン ド ウで CLKFX 出力または CLKFX180 出力を選択した場合のみです それ以外の場合は [Finish] をク リ ッ ク し HDL 出力を生成します ( 「HDL 出力の生成」を参照して ください)

図 11 DCM アドバンスド オプシ ョ ン設定

Xilinx DCM Wizard Advanced

Wait for DCM lock before DONE signal goes high

Yes No

Divide Input Clock by 2

Yes No

SYSTEM_SYNCHRONOUS

OK Cancel

DCM Deskew Adjust

CLKIN 12

FPGA

DONEDCM

DCM

[OK]

DCM

STARTUP_WAIT

CLKIN_DIVIDE_BY_2

DESKEW_ADJUST

x462_11_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 23

R

図 12 DCM Wizard を使用した DCM 出力のバッファ オプシ ョ ン設定

Xilinx DCM Wizard - Clock Buffers

This dialog sets up the clock buffers for all the DCM clock outputs selected in the GeneralSetup dialog

Clock Buffer Settings

U se Global Buffer (BUFG) for all selected DCM clock outputs

C ustomize (using grid below)

Reference the lsquoMore Inforsquo button for more information on customizing the global buffers

M ore Info

lt Back N ext gt Cancel

Clock Buffer Input I0 Input I1 Input CES

Global Buffer CLK0

Enabled Buffer CLK90 CLK90_ENABLE_IN

Clock Mux CLK2X180 CLKFX CLKFX_SELECT_IN

Lowskewline CLK180

Local Routing CLK270

CLK2XGlobal BufferGlobal Buffer

Enabled BufferClock MuxLowskewlineLocal RoutingNone

Output O

CLK0_OUT

CLK90_OUT

CLKFX_OUT

CLK180_OUT

CLK270_OUT

CLK2X_OUT

DCM Wizard

BUFG

DCM

DCMFPGA

FPGA

[Next]

x462_12_061703

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

グローバル バッファ

4 つあるグローバル バッファ (BUFG) の 1 つを同じ辺にある DCM に接続します

イネーブル バッファ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク バッファ (BUFGCE) と して設定しているバッファに接続します CE 入力は High の場合にバッファをイネーブルにしLow の場合は バッファ出力がゼロになり ます

BUFGI0 O

BUFGCEI0 O

CE

CE O

0 0

1 I0

24 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

クロック周波数合成

図 13 に示すク ロ ッ ク周波数合成ダイアログ ボッ ク スは [General Setup] ダイアログ ウ ィ ン ド ウでCLKFX 出力または CLKFX180 出力を選択した場合のみに表示されます

こ こでは必要な出力周波数 または逓倍および分周の係数を指定します [Valid Ranges for SelectedSpeed Grade] で周波数範囲 (CLKIN を ns で指定した場合は遅延) を指定します 周波数範囲にはDFS_FREQUENCY_MODE 属性で設定可能な両方の値が表示されます DCM で DLL に関係したクロ ッ ク出力を使用する場合 この範囲条件はよ り厳し くな り ます

bull [Use output frequency] のチェッ クをオンにし MHz または ns で周波数を入力します [Calculate] をク リ ッ クする と CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性の値が算出されます 入力した範囲から可能な逓倍値および分周値を算出できない場合は DCM Wizard で別の出力周波数値を入力するよ うに求めるエラー メ ッセージが表示されます ソ リ ューシ ョ ンがある場合は [Generated Output] に逓倍値 分周値 およびジッ タの値が表示されます ( 「ク ロ ック ジッタおよび位相ノ イズ」 を参照してください)

bull オプシ ョ ンと して[Use Multiply (M) and Divide (D) values] のチェッ クをオンにしこれらの値を入力でき ます [Calculate] を ク リ ッ ク し 出力周波数およびジ ッ タ を計算し ます 結果は[Generated Output] に表示されます

bull 最後に[Finish] をク リ ッ ク しHDL 出力を生成します (「HDL 出力の生成」を参照してください)

ク ロ ッ ク マルチプレクサ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク マルチプレクサ (BUFGMUX) として設定しているバッファに接続します S 入力はクロ ッ ク ソースを選択します

低スキュー ライン 低スキューのプログラマブル相互接続に接続します

ローカル配線 スキューが重要ではない場合において ローカル相互接続に接続します

なし DCM 出力をディ スエーブルにします

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

O

S

BUFGMUXI0

I1 S O

0 I0

1 I1

I0

I0

VHDL および Verilog のインスタンシエーシ ョ ン

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 25

R

HDL 出力の生成すべてのパラ メータを入力後 [Finish] をク リ ッ クする と 図 14 に示すよ うに DCM Wizard が自動的に VHDL または Verilog HDL 出力ファイルを生成します また ユーザー制約ファイル (UCF) も生成されます

VHDL および Verilog のインスタンシエーシ ョ ン

DCM Wizard を使用し VHDL または Verilog HDL 記述を作成する方法が最も容易ですが VHDLソースおよび Verilog ソースも利用できます

Project Navigator の言語テンプレート

ISE 52i およびそれ以降の Project Navigator では DCM の言語テンプレートが使用できます DCMテンプレート を選択する場合はProject Navigator のメニューで [Edit] rarr [Language Templates] をクリ ッ ク します 図 15 に示すテンプレー ト で Verilog フォルダまたは VHDL フォルダを展開表示し

図 13 デジタル周波数合成の逓倍値と分周値の設定 およびジッ タの算出

Xilinx DCM Wizard - Clock Frequency Synthesizer

Valid Ranges for Selected Speed Grade

Inputs for Jitter Calculations

U se output frequency

M Hz ns875

U se Multiply (M) and Divide (D) values

4M 1D

Input Clock Frequency 30 ns C alculate

lt Back Finish Cancel

More Info

Generated Output

MOutput

Frequency(MHz)

29 111

Period Jitter(pk-to-pk ns)

D

11 875

Period Jitter(unit interval)

010

DFSMode

Fin (MHz)

Low

High

24000 - 18]0000

50000 - 270000

24000 - 210000

210000 - 270000

Fout (MHz)

MHz ns[Calculate]

DCM Wizard (M)

(D)

(M)(D)

[Calculate]

[Calculate]

[Finish]

DCM

CLKFX_MULTIPLY CLKFX_DIVIDE

CLKFX_MULTIPLY CLKFX_DIVIDE

DFS_FREQUENCY_MODE

x462_13_061803

図 14 DCM Wizard での VHDL または Verilog HDL 出力ファイルの生成

Xilinx Architecture Wizard

Cancel

Generating HDL file

x462_14_061803

26 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

Component Instantiation フォルダの DCM フォルダを選択します 次にDCM フォルダにある DCMソース ファ イルを選択する と 隣接したウ ィンド ウにソース ファ イルが表示されます

このファイルは参照用と して または内容を新規ソース ファ イルに貼り付けて使用できます

VHDL および Verilog リファレンス ファイル

また この VHDL および Verilog のソース ファ イルは 次のザイ リ ンクス FTP サイ トからダウンロードできます

bull VHDL DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_vhdlzip

bull Verilog DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_verilogzip

クロック スキューの低減

スキューの低減はDCM の基本的な機能の 1 つです 50 MHz 以上の速度で動作するデザインではクロ ッ ク スキューの低減が重要であ り このク ロ ッ ク スキューの低減に関連する概念は DCM を使用したその他のアプリ ケーシ ョ ンにも応用できます

クロック スキューとはク ロ ッ ク スキューは本質的にすべての同期システムに存在します ク ロ ッ ク ソースによって生成されたクロ ッ ク エッジは システム内の異なる点に 異なる時間に到達します これは 1 つのデバイス内の場合も クロ ッ クで接続された異なるデバイスへのクロ ッ ク入力の場合もあ り ます こ こで発生する到達時間の差がクロ ッ ク スキューです

図 16 に 同期システムにおけるクロ ッ ク スキューの例を示します ク ロ ッ ク ソースによって ク ロ ック入力が FPGA へ駆動され FPGA 上の入力ピンに入る と 内部の低スキュー グローバル ク ロ ッ クネッ ト ワークを使用して分配され FPGA 内部のフ リ ップフロ ップに到達します ク ロ ッ ク パスにある各エレ メン トによって フ リ ップフロ ップにクロ ッ ク エッジが到達する時間に遅延が生じます その結果と して フ リ ップフロ ップにおけるク ロ ッ ク入力 (B) で遅延が発生する つま り ク ロ ッ ク ソース (A)と比較してスキューが発生します この例では ク ロ ッ ク スキュー つま り到達時間の差を ∆b と します

図 15 Project Navigator 言語テンプレートでの DCM デザインの選択

Language Templates

Verilog

Component Instantiation

Block RAM

CLK0

CLK0_FB

CLK2X

Templates Module BUFG_CLK0_SUBM Description Verilog Submodule DCM with CLK0 deskew-

module BUFG_CKL0_SUBM ( CLK_IN RST CLK1X LOCK

DCM

x462_15_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 27

R

同様に ク ロ ッ ク ソースは FPGA 内部で再びバッファを介し ボード上にある別のデバイスを駆動します この例では クロ ッ ク ソースは再び入力ピンを通って FPGA に入り グローバル ク ロ ッ ク ネット ワークで分配され FPGA の出力ピンを通って PCB 上のト レースで別のデバイスに接続されますそのため ク ロ ッ ク パスにおける総遅延が大き くな り その結果と して発生するスキュー ∆c も大き くな り ます

クロック スキュー パフォーマンス低下の原因ク ロ ッ ク スキューによって セッ ト アップ時間 および clock-to-output 遅延が増加し ク ロ ッ ク サイクル時間が長くなるため デザインのパフォーマンス全体が低下する可能性があ り ます また ク ロ ッ クスキューによって 長いホールド時間が必要となる場合があ り このホールド時間を確保できない場合

には 不安定な動作を引き起こす可能性があ り ます

スキューの削除

ク ロ ッ ク スキューを削除する方法はあるのでし ょ う か 幸いにも デジタル ク ロ ッ ク マネージャ(DCM) はこのよ うな機能を備えています 図 17 に図 16 と同様の例を示しますがこ こでは Spartan-3 デバイスを使用しています 2 つの DCM によって次のよ うにクロ ッ ク スキューが削除されます 1つの DCM がFPGA 内部でクロ ッ ク入力されたものからのスキューを削除しも う一方の DCM が ボード上で別のデバイスにクロ ッ ク入力する場合のスキューを削除します この結果 (A) (B) および (C)のすべての点で理想的なクロ ッ ク間のアライ メン ト を実現できます

実際には ク ロ ッ ク スキューはどのよ うに削除されるのでし ょ うか ク ロ ッ ク スキューの原因は クロ ッ ク パスにおける遅延である こ と を思い出して ください 図 17 では (B) のク ロ ッ クで ∆ 分のスキューがあ り (C) のクロ ッ クに ∆c 分のスキューがあ り ましたが ク ロ ッ クを (B) に ∆b 分早く到達させ (C) に ∆c 分早く到達させる方法がある場合には どのよ うになるでし ょ うか このよ う な場合にはすべてのクロ ッ クのエッジが一致するよ うに調整されセッ ト アップ時間および clock-to-output 遅延が減少するため システム全体のパフォーマンスが向上します

図 16 すべての同期システムに存在するクロック スキュー

OtherDevice on

Board

FPGA

c b

A

A

C

B

B

C

x462_16_062403

28 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

過去のクロック動作から将来のクロック動作を予測

Spartan-3 FPGA は非常に高度なデジタル ロジッ クを使用していますが 将来の動作を予測するこ とはできません だたし DCM は過去のクロ ッ ク動作を使用し 将来のク ロ ッ ク動作を予測するために役立てます システムに入力されるほとんどのクロ ッ クの周波数は 不変で単調であるため 入力クロ ックの周期 (T) もほぼ一定になり ます

マイナスの遅延を挿入し ク ロ ッ ク スキューの影響を無効にするこ とはできないため DCM は目的としている時間に到達しているよ うに見えるよ うにクロ ッ クを遅らせます これは どのよ うに行われるのでし ょ うか ク ロ ッ ク サイクルは一定の周期 (T) で繰り返されます 図 18 に示すよ うに (B) におけるクロ ッ クは ∆b 分進んでいるよ うにみえますが 実際には (T ndash ∆b) 分遅くなっています 同様に(C) におけるクロ ッ クは (T ndash ∆c) 分遅れています

図 17 Spartan-3 デザインにおけるクロック スキューの削減

図 18 一定周波数のクロックを遅延させる

OtherDevice on

Board

Spartan-3 FPGA

DC

M

Ideal Clock Alignment

b

cEarly Clocks Eliminate Skew

A

B

C

A

B

C

DC

M

A

B

C

x462_17_062403

c

b

Clock Period (T)

Delay=T- b

Delay=T- c

A

B

C

x462_18_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 29

R

入力クロ ッ ク信号は単調であるため ク ロ ッ ク周期 (T) は容易にわかり ますが ク ロ ッ ク スキュー遅延である ∆b および ∆c はど うでし ょ うか 異なる条件の元で複数のシステムにおける動作を詳細に検証するこ とによって これらの値を決定するこ と もできますが 実際には現実的である とは言えません

さ らに ∆b および∆c の値はデバイスによって異なり 同一のデバイス上でも温度または電圧によって変化します

Spartan-3 DCM では ∆b および ∆c をあらかじめ決定するのではなく フ ィードバッ ク ループによって遅延を確認する遅延ロッ ク ループ (DLL) を使用します (図 17 を参照してください) こ こで示している例では 2 つの DCM を使用して 1 つの DCM が内部信号のスキューを削減し も う一方の DCMが外部デバイスへの信号のスキューを削減します また 両方の DCM に各ク ロ ッ ク フ ィードバッ クループがあ り ます DLL は温度または電圧によって引き起こ されるわずかな変更にも適応します

ターゲッ トのロック

適切な遅延を決定し挿入するためにはDCM で数千クロ ッ ク サイ クルのサンプルが必要です DCMで適切な遅延が挿入される と LOCKED 出力信号がアサート されます

DCM で LOCKED 信号がアサート されるまでDCM ク ロ ッ ク出力は使用しないでください DCM が入力クロ ッ ク信号に対してロ ッ ク状態になるまでのク ロ ッ ク出力は無効です DCM がロ ッ ク状態になる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な要素が含まれている可能性があ り ます

アプリ ケーシ ョ ンではLOCKED 信号を出力クロ ッ クが有効であるこ とを確認するために使用しますLOCKED 信号をクロ ッ ク信号が使用可能な状態であるこ とを示すものと して理解してください

安定した単調なクロック入力

DCM が適切に動作するためには 安定した単調なクロ ッ ク入力が必要です そのよ う なク ロ ッ ク入力によって ク ロ ッ ク周期を予測でき出力クロ ッ クのタイ ミ ングを適切に調整できます DCM はいったんロ ッ ク状態になる と『Spartan-3 データ シート 』 で指定された値までのクロ ッ ク周期変動に対応できます 「DCM 使用のためのクロ ッ ク条件」 を参照して ください

入力ク ロ ッ ク周波数が変動して指定された範囲外と なった場合 DCM のロ ッ ク状態が解除されLOCKED 出力は Low になり ます ロ ッ ク状態が解除された場合 DCM を リセッ ト して再びロ ッ クする必要があ り ます 入力クロ ッ クが指定された制限を満たしている場合はLOCKED 出力が High である限り出力クロ ッ クは常に有効です しかし LOCKED 出力は High を維持していますが クロ ッ ク入力が指定された範囲外で CLKDV 出力または CLKFX 出力が無効となる場合があるため問題のないデザインを作成するためには 安定した単調なクロ ッ ク入力が重要です

DCM CLKIN 入力へのパスと して 4 つのグローバル バッファ入力 (IBUFG) のうち デバイス上で同一辺にあるバッファ入力の 1 つを使用する こ と を推奨します IBUFG パスを使用する こ とによってパッ ドからグローバル バッファを通って DCM に到達までの遅延がスキュー調整された出力から削除されます ただし 表 11 に示すその他のパスも使用できます また CLKIN 入力を駆動する信号は汎用相互接続を通る汎用入力ピン (IBUF プリ ミ ティブ) グローバル バッファ入力 (IBUFG) グローバル バッファ マルチプレクサ (BUFGMUX BUFGCE) からの入力と して使用できます 同様に LVDSク ロ ッ ク入力をクロ ッ ク入力と して使用できる場合もあ り ます スキュー調整ロジッ クはLVCMOS または LVTTL のよ うなシングル エンドのクロ ッ ク入力のために特性評価されています ただし 差動信号では IO タイ ミ ングによって わずかな位相エラーが発生する可能性があ り ます 特定の IO タイミ ングについては 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

30 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

確実なソースからのフ ィードバック

適切な遅延に対してロ ッ ク信号をアサートするために DCM は 入力クロ ッ クおよびクロ ッ ク分散遅延後にタ ップされるフ ィードバッ ク ク ロ ッ クの両方をモニタします ク ロ ッ ク フ ィードバッ ク パスにおける総遅延に制限はあ り ません DLL では 必要に応じて逓倍したク ロ ッ ク周期を使用する こ とによって出力クロ ッ クを遅らせます このよ うにDCM は内部遅延または外部遅延を相殺できますがクロ ッ ク フ ィードバッ クは適切なフ ィードバッ ク地点に接続する必要があ り ます

内部クロック信号からのスキュー削除

図 19 に示すよ うにFPGA 内部のスキューを削減する場合フ ィードバッ ク タ ップは FPGA 内部のエレ メン トに入力されるクロ ッ ク と同一のクロ ッ ク とな り ます 通常 フ ィードバッ ク ク ロ ッ クは デバイス上で DCM と同一辺にある ク ロ ッ ク バッファ (BUFG) またはグローバル ク ロ ッ ク マルチプレクサ (BUFGMUX または BUFGCE) に接続されている DCM からの CLK0 出力 (位相シフ ト なし ) ですまたは CLK0 出力ではなく DCM の CLK2K 出力 (位相シフ ト なし 2 逓倍) をフ ィードバッ ク と して使用できます

表 11 クロック入力ソース

CLKIN ソース 説明

グローバル バッファ入力を使用

グローバル バッファ入力 IBUFG は DCM への外部クロ ッ クのソースと して適切です パッ ドからグローバル バッファを通り CLKIN 入力までの遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

グローバル ク ロ ッ ク バッファ BUFG BUFGCE または BUFGMUX プリ ミ ティブを使用するグローバル ク ロ ッ ク バッファは内部生成された DCM へのクロ ッ ク ソース と して適切です グローバル バッファを通る際の遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

汎用 IO を使用 任意のユーザー IO IBUF は 外部クロ ッ クのソースと して使用できます パッ ドから DCM への遅延をあらかじめ決定するこ とはできません これは入力パスとなる可能性を持つパスが多数

存在するためであ り その結果 DCM は遅延を削除できません

内部ロジッ クから派生 FPGA 内部のロジッ ク も ク ロ ッ ク ソース と して使用できます しかしロジッ クから DCM への遅延をあらかじめ決定するこ とはできないため DCM は遅延を削除できません

I OIBUFG

BUFGI O

BUFGCEI O

CE

O

S

BUFGMUXI0

I1

I OIBUF

InternalLogic

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 31

R

外部クロック信号からのスキュー削除

外部クロ ッ クを使用した DCM フ ィードバッ クの設計は内部クロ ッ クの場合よ り も複雑です 図 20 に示すよ うに理想的にはフ ィードバッ ク ク ロ ッ クは PCB ト レースまたは外部クロ ッ クの再バッファの後のすべての外部クロ ッ クに入力される点から始ま り ます

LOCKED 信号は DCM がロ ッ ク状態になったこ と およびク ロ ッ ク信号が有効であるこ とを示します LOCKED 信号によって 外部デバイスが使用可能になり その反転バージ ョ ンはアクティブ Lowのチップ イネーブル信号に接続できます

コンフ ィギュレーシ ョ ン後の DCM リセッ ト

外部フ ィードバッ クを使用する場合 コンフ ィ ギュレーシ ョ ン直後に DCM の リ セッ ト をパルスしDCM のロ ッ ク状態を維持する必要があ り ます 図 20に示すよ うに0x000F で初期化された SRL16 から必要な リセッ ト パルス信号を出力できます 「RST 入力」 を参照して ください

なぜリセッ トする必要があるのか

なぜ このよ うに追加的な リセッ ト パルスが必要なのでし ょ うか 最適にロ ッ クするためには DCMをロ ッ ク状態にし その状態で安定させるために 外部フ ィードバッ クでコンフ ィギュレーシ ョ ンされ

た DCM で CLKIN および CLK0 または CLK2X のいずれかの信号を使用する必要があ り ます コンフ ィギュレーシ ョ ン実行中は FPGA の IO バッファがまだアクティブではないために 外部フ ィードバッ ク CLKFB を使用できません

コンフ ィギュレーシ ョ ンの終了時に デバイスがスター ト アップ シーケンスを開始する と DCM はキャプチャ プロセスを開始します この時点では FPGA のグローバル 3-ステート信号 (GTS) はアサー

図 19 内部クロック信号でのスキュー削減

I OBUFG

FPGA

(or BUFGMUX or BUFGCE)

( )

ldquoClock Goodrdquo

I OIBUFG

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)(

)

x462_19_061803

図 20 外部クロック信号でのスキュー削減

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)

I OOBUF

I OOBUF

FPGA

CLK

ENABLE

( )

RESETD

WCLK

A[30]

Q

INIT=000F

SRL16

I OIBUFG

I OIBUFG

x462_20_062203

32 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ト されているため すべての出力ピンは 3-ステート (ハイ -インピーダンス フローティング) 状態を維持しています このため CLKFB 信号のロジッ ク ステートはわかり ません

GTS のアサート状態の解除後CLKFB に信号が現れDCM が CLKFB 信号を取り込みますが リセット パルスがない場合 DCM が適切な時点でロ ッ ク しない可能性があ り DCM でジッタがわずかに増加し ク ロ ッ ク サイクル レイテンシも増加する可能性があ り ます

また リセッ ト パルスがない場合 PCB のシグナル インテグ リティの問題によって 3-ステート状態にある CLKFB 信号がボード上でほかの信号と ク ロス カップルする とい う問題が発生する可能性があり ます DCM では この無効なクロス カップルされた信号を CLKFB 信号と認識し ロ ッ クするためGTS 信号のアサートが解除され 適切な CLKFB 信号が現れたと きにロ ッ クできない場合があ り ます

遅延ロック ループとはク ロ ッ ク遅延を削除するための 2 つのタイプの回路

bull 遅延ロッ ク ループ (DLL)

bull 位相ロッ ク ループ (PLL)

DLL および PLL には クロ ッ ク分散遅延を削除する という機能以外に周波数合成 クロ ッ ク調整および位相シフ ト などの機能があ り ます

遅延ロック ループ (DLL)

図 21 に示すよ うに単純な形の DLL はタップ遅延ラインおよび制御ロジッ クで構成されます 遅延ラインは入力クロ ッ クCLKINに遅延を挿入したク ロ ッ クを生成し ク ロ ッ ク分散ネッ ト ワークでは そのクロ ッ クがすべての内部レジスタおよびクロ ッ ク フ ィードバッ ク CLKFB ピンに配線されます 一方制御ロジッ クは遅延ラインを調整するために常に入力クロ ッ クおよびフ ィードバック ク ロ ッ クをサンプルします 遅延ラインでは電圧制御遅延または不連続の遅延エレ メン トが使用されています 最適で安定したパフォーマンスを実現するために Spartan-3 DLL ではすべてのデジタル遅延ラインを使用します

DLL は入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クの立ち上がりエッジが調整されるまで それらのクロ ッ ク間に遅延を挿入し ク ロ ック周期から クロ ッ ク分散遅延分を差し引いた時間だけフ ィードバッ ク ク ロ ッ クを遅らせるこ とによって機能します DLL および PLLの専門的解説では フ ィードバッ ク ク ロ ッ クは 360deg 位相がずれたもの つま り同一の位相に再び現れるものと定義されています

入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クのエッジが調整される とDLL がロ ッ ク し これらの 2 つのクロ ッ ク間に認識できる差異はなくな り ます つま り DLL 出力クロ ッ クのクロ ッ ク分散ネッ ト ワークにおける遅延がなくな り ソース ク ロ ッ ク とそのロード間の遅延を効果的に削除されています

図 21 遅延ロック ループ (DLL) ブロック図

ClockDistributionNetwork

Control

VariableDelay Line

CLKOUT

CLKFB

CLKIN

x462_21_061903

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 33

R

スキュー調整

こ こでは主にスキューの削減方法およびクロ ッ ク ソースに対する内部クロ ッ ク と外部クロ ッ クの位相調整の方法について説明します 実際には DCM は DESKEW_ADJUST という属性を使用し 意図的にわずかなスキューを追加します DCM Wizard では アドバンス ド オプシ ョ ン ウ ィ ンド ウでこのDESKEW_ADJUST 属性を設定します

この属性には STEM_SYNCHRONOUS および SOURCE_SYNCHRONOUS という 2 つの基本的なアプリ ケーシ ョ ンがあ り ます 大多数のアプリ ケーシ ョ ンではSYSTEM_SYNCHRONOUS 設定を使用します 次に 各モードの目的を説明します

システム同期

図 23 に示すよ うに システム同期アプリ ケーシ ョ ンでは 1 つのデータ パスにあるすべてのデバイスが共通のクロ ッ ク ソースを使用します これが 従来の最も一般的なシステム構成です デフォルト設定である SYSTEM_SYNCHRONOUS オプシ ョ ンを選択する と データ キャプチャ時のホールド時間がゼロになるよ うに わずかなクロ ッ ク遅延が追加されます ホールド時間とは 基本的にベス ト ケースのデータ パスと ワース ト ケースのクロ ッ ク パス間の差です DCM のクロ ッ ク スキュー削減機能はクロ ッ クを進めるこ とによって動的にワース ト ケースのクロ ッ ク パスを短縮します しかし ク ロ ッ

位相ロック ループ (PLL)

PLL は DLL と同様の基本的な機能を持つよ うに設計されていますが異なるアーキテクチャを使用します 図 22 に示すよ うにPLLと DLL の根本的な違いは DLL が遅延ラインを使用するのに対して PLL では電圧制御オシレータを使用し CLKIN と同様のクロ ッ ク信号を生成します位相検出器およびフ ィルタで構成される制御ロジッ クは ク ロ ッ ク分散システムでの遅延を補う よ うにオシ

レータの周波数と位相を調整します PLL の制御ロジッ クは 入力ク ロ ッ ク と フ ィードバッ ク ク ロ ッ ク CLKFB を比較し 入力クロ ッ クの立ち上がりエッジがフ ィードバッ ク ク ロ ッ クの立ち上がりエッジと一致するよ うにオシレータのクロ ッ クを調整します その後 PLL はロッ ク状態になり ます

インプリ メンテーシ ョ ン

DLL および PLL 内部では アナログ回路またはデジタル回路のいずれかが使用され 各回路はぞれぞれに利点があ り ます 慎重な回路設計を行ったアナログ回路の場合 DLL または PLL ではよ り厳密にタイ ミ ングを調整でき 使用するシ リ コン エリ アが少なくなり ます

一方デジタル回路を使用した設計の場合 ノ イズ耐性が優れ消費電力が低く ジッ タのパフォーマンスよ り良いという利点があ り

ます また ク ロ ッ クを停止させるこ とができるため 電力管理が容易になり ます アナログ設計では 追加の電力供給が必要な場合があ りよ り正確に電源供給の制御を行う必要があるために新しい処理テク ノ ロジに移行する際に問題が発生する可能性があ り ます

DLL と PLL

アプリ ケーシ ョ ンで PLL または DLL を選択する場合は アーキテクチャの違いを理解するこ とが重要です PLL で使用されるオシレータは 本質的に不安定な状態であるため ク ロ ッ ク分散ネッ ト ワークの遅延を補う際に PLL のパフォーマンスが低下します 逆に常に安定している DLL アーキテクチャは遅延およびクロ ッ ク調整の機能の点では PLL よ り優れている一方で PLL はDLL より柔軟に新しいクロ ッ ク周波数の合成を行います

図 22 位相ロック ループ (PLL) ブロック図

ClockDistributionNetwork

Control

Voltage ControlledOscillator

CLKOUT

CLKFB

CLKIN

x462_22_061903

34 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ク パスを短縮するこ とによって ク ロ ッ クがデータの前に現れる場合には結果と してホールド時間が発生します SYSTEM_SYNCHRONOUS オプシ ョ ンを使用するこ とによってホールド時間がゼロになるために十分なスキューをクロ ッ ク パスに追加できる一方でclock-to-output 時間がわずかに増加します

ソース同期

SOURCE_SYNCHRONOUS モードは本来高速データ通信インターフェイスで使用される高度な設定です 図 24 に示すよ うに ソース同期アプリ ケーシ ョ ンではデータおよびクロ ッ クの両方が同一のクロ ッ ク ソースから派生します 送信デバイスは データおよびクロ ッ クを受信デバイスに送信し 受信デバイスはデータに対して最適なクロ ッ クが入力されるよ うにクロ ッ ク タイ ミ ングを調整します 高速デュアル データ レート (DDR) および LVDS 接続などがこのシステムの例です

SOURCE_SYNCHRONOUS 設定によって入力クロ ッ ク と DCM からのデスキュー出力クロ ッ ク間の位相をゼロにし 次に FPGA アプリ ケーシ ョ ンでは固定位相シフ ト モードまたは動的ファ イン位相シフ ト モードを使用してクロ ッ クのタイ ミ ングを調整します 次のアプリ ケーシ ョ ン ノートではソース同期デザインおよび動的位相調整について説明しています

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcomxappxapp622pdf

また 次のアプ リ ケーシ ョ ン ノート では システム レベルのタイ ミ ングについて詳細に解説しています このアプリ ケーシ ョ ン ノートはVirtex-II および Virtex-II Pro FPGA アーキテクチャについて説明するものですが ほとんどの概念を Spartan-3 FPGA に適用できます

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

タイ ミングの比較

図 25 にデュアル データ レート (DDR) アプリ ケーシ ョ ンで SYSTEM_SYNCHRONOUS 設定およびSOURCE_SYNCHRONOUS 設定を使用した場合のタイ ミ ング比較を示します DDR アプリ ケーシ ョンでは 各データ ラインに 2 つのデータ ビッ トが ク ロ ッ ク周期の前半および後半に各 1 つずつ現れます

図 23 共通のクロック ソースによってクロック入力されるシステム同期アプリケーシ ョ ン

図 24 データ ソースがデータ クロックを入力するソース同期アプリケーシ ョ ン

ClockSource

DATA_INDATA_OUT

x462_23_061903

ClockSource

DATA_INDATA_OUT

DATA_CLK

x462_24_061903

クロック調整

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 35

R

SYSTEM_SYNCHRONOUS モードではDCM のクロ ッ ク パスに適切なスキューが追加されホールド時間がゼロになり ます

これに対して SOURCE_SYNCHRONOUS モードでは DCM のクロ ッ ク パスにスキューは追加されませんが FPGA アプ リ ケーシ ョ ンでスキュー追加 または位相シフ ト が行われ ク ロ ッ クはデータウ ィンド ウにおいて理想的な位置で入力されます

クロック調整 ク ロ ッ ク調整とは 入力ク ロ ッ クのデューティ サイ クルが 50 以外の場合に 50 に調整する機能です 図 26 にHigh 時間が約 40 であ りLow 時間が約 60 (4060 デューティ サイクル) である入力ク ロ ッ クを ほぼ完全な 50 デューティ サイ クルを持つ入力クロ ッ クに調整する例を示します完全な 50 デューテ ィ サイ クル と な ら ない理由は CLKOUT_DUTY_CYCLE_DLL およびCLKOUT_DUTY_CYCLE_FX で指定されるデューティ サイ クルのずれが存在するためです これらの値は 『Spartan-3 データ シート 』 に記載されています デューティ サイクルのずれの概算値は 150ps未満です

クロ ッ クのデューティ サイクルが 50 であるこ とはVLDS またはデュアル データ レート (DDR) アプリ ケーシ ョ ンなどの高速通信インターフェイス ク ロ ッ ク転送アプリ ケーシ ョ ン またはクロ ッ ク ミラー アプリ ケーシ ョ ンにおいて不可欠な条件です 「デュアル データ レート (DDR) ク ロ ッ クの例」 を参照して ください

DCM では 自動的にほとんどのク ロ ッ ク出力のデューティ サイ クルが 50 に調整され それ以外の場合には動作条件または属性設定によって オプシ ョ ンと して調整されます 表 12 を参照して ください

図 25 デュアル データ レート (DDR) アプリケーシ ョ ンにおける SYSTEM_SYNCHRONOUS モードおよび SOURCE_SYNCHRONOUS モードのタイ ミング比較

SYSTEM_SYNCHRONOUS

DATA_IN

SOURCE_SYNCHRONOUS

SOURCE_SYNCHRONOUS+ Fixed or Dynamic Phase Shift

Data capture windowor data ldquoeyerdquo

x462_25_061903

図 26 DCM におけるデューテ ィ サイクル修正機能

CLKIN

ConditionedClock Output

50 50

40 60

x462_26_061903

36 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

14 位相シフ ト出力である CLK0 CLK90 CLK180 および CLK270 はDUTY_CYCLE_CORRECTION 属性を使用し ク ロ ッ ク調整を行う こ とができます デフォルトではDUTY_CYCLE_CORRECTION 属性は TRUE に設定され これらの出力は 50 デューティ サイクルに調整されます この属性を FALSE に設定する場合 クロ ッ ク調整は機能せず クロ ッ ク出力のデューティ サイクルは入力クロ ッ ク とほぼ同一になり ますが 完全に CLKIN のデューティ サイクルと一致するこ とは保証されていません

位相シフ ト - クロック周期の分数でクロックを遅延

また DCM ではクロ ッ ク周期の分数分だけ入力クロ ッ クを遅らせるこ とによって 位相をシフ ト させるこ とができます

DCM は 4 つの位相シフ ト タイプをサポート し各タイプを別々に使用するこ と またはほかの位相シフ ト タイプと組み合わせて使用するこ とができます 表 13 に 各クロ ッ ク出力での位相シフ ト機能を示します

1 ほとんどの 12 ク ロ ッ ク周期位相シフ ト出力では50 デューティ サイクル調整を行います 出力のペアの立ち上がりエッジは0degおよび 180deg位相シフ ト した位置またはクロ ッ ク周期の最初および 12 周期の位置にあ り ます

2 0deg(CLK0) 90deg(CLK90) 180deg(CLK180) および 270deg(CLK270) の 14 位相シフ ト出力ではオプシ ョ ンと して 50 デューティ サイ クル調整を行います

3 固定ファイン位相シフ トではすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

4 動的ファイン位相シフ トでは FPGA アプリ ケーシ ョ ン内部のすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

表 12 デューティ サイクルを 50 にするためのクロック出力調整

DCM クロック出力

50 デューティ サイクル出力

CLK0CLK90

DUTY_CYCLE_CORRECTION = TRUE

CLK180CLK270

CLK2XCLK2X180

CLKDV

CLKFXCLKFX180

常に

DLL_FREQUENCY_MODE 属性

LOW HIGH

DUTY_CYCLE_CORRECTION = TRUE 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に CLKDV_DIVIDE が整数値の場合

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 37

R

12 クロック周期位相シフ ト出力12 周期位相シフ ト出力では 位相シフ トのないク ロ ッ ク およびそのクロ ッ クを 12 周期シフ ト させた (180deg位相シフ ト ) ク ロ ッ クが出力されます 12 周期位相シフ ト出力は表 14 に示すよ うにペアで出力されます

表 13 クロック出力の位相シフ ト機能

クロック出力12 クロック周期

14 クロック周期

固定または動的

位相シフ ト

CLK0CLK90CLK180CLK270CLK2XCLK2X180CLKDVCLKFXCLKFX180

表 14 12 クロック周期位相シフ ト出力

出力ペア解説

位相シフ トなし 180deg位相シフ ト

CLK0 CLK180 周波数は CLKIN と同一です デフォルトで 50 デューティ サイクルに調整されDUTY_CYCLE_CORRECTION 属性に制御されます

CLK2X CLK2X180 2 逓倍クロ ッ ク (CLK2XCLK2X180) からの出力です周波数は CLKIN 周波数の 2 倍であ り デューティ サイ クルは常に 50 です

CLKFX CLKFX180 周波数合成回路 (CLKFX CLKFX180) からの出力です 出力周波数は周波数合成の属性によって決定されます デューティ サイ クルは常に 50 です

38 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

12 周期位相シフ ト出力は高速デュアル データ レート (DDR) デザインおよびクロ ッ ク ミ ラーなどのデューティ サイクルが重要となるデザインにとって理想的です 図 27 に示すよ うに12 周期位相シフト出力のペアの 1 つはクロ ッ ク周期の始めに立ち上がり も う 1 つはそのクロ ッ ク周期の半分の地点で正確に立ち上がり ます

12 周期位相シフ ト出力によるデューテ ィ サイクルのずれの削減

DCM のクロ ッ ク出力が 50 デューティ サイクルに調整された場合 180deg位相シフ ト ク ロ ッ クは位相シフ トのないクロ ッ クを反転させたよ うに見えます 低周波数アプリ ケーシ ョ ンでは 基本的にこれが成立します

しかし アプリ ケーシ ョ ンが非常に高い周波数で動作する場合は 各ト ランジスタの立ち上がり時間お

よび立ち下がり時間の差が原因となって発生するデューティ サイ クルのずれが FPGA 内部で問題となり ます つま り 始めはデューティ サイクルが 50 の場合でも ク ロ ッ ク サイクル間で常にクロ ッ クHigh と ク ロ ッ ク Low の間に差が生じます

デュアル データ レート (DDR) クロックの例

図 28 に DCM ク ロ ッ ク出力 CLKx が デュアル データ レート (DDR) 出力フ リ ップフロ ップの 2 つのクロ ッ クを駆動する例を示します DDR ク ロ ッ ク入力の 1 つはクロ ッ ク出力をそのまま使用しますが も う一方の入力は DDR フ リ ップフロ ップ内部でクロ ッ クを反転させます DCM からの CLKx 出力のデューティ サイクルは 50 ですが FPGA のクロ ッ ク ネッ ト ワークを伝搬する間にデューティサイ クルにずれが発生します こ こで示す例では このデューティ サイクルのずれによって ク ロ ッ クHigh 時間が短縮され ク ロ ッ ク Low 時間が長くな り ます その結果と してC1 ク ロ ッ ク入力はクロ ック周期の半分の時点よ り もわずかに前にト リガします 低周波数の場合 このずれは無視して問題あ りませんが 高性能の DDR ベースのシステムでは 正確なクロ ッ ク設計が必要です

図 27 12 周期位相シフ ト出力

180˚0˚

frac12T 1T

CLKx

CLKx180

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)

x462_27_061903

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 39

R

図 29 に 図 28 に若干の修正を加えた回路例を示します この例では DCM からの位相シフ ト していない出力および 180deg位相シフ ト した出力の両方が DDR 出力フ リ ップフ ロ ップに入力されますCLKx ク ロ ッ ク信号は ク ロ ッ ク周波数の開始時点で正確に DDR フ リ ップフロ ップの C0 入力を ト リガし CLKx180 ク ロ ッ ク信号はクロ ッ ク周波数の半分の時点で正確に C1 入力を ト リガします この方法を使用する場合には 追加のグローバル バッファおよびグローバル ク ロ ッ ク ラ インが必要になりますが 約 300 ps (この値は概算です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください) までのデューティ サイクルを削減できます

図 28 デュアル データ レート (DDR) 出力におけるデューティ サイクルのずれ

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx at Flip-Flop(with duty-cycle distortion)

Duty-cycle distortion

Factor in distortionwhen using a singleinverted clock

CLKx(50 duty cycle)

BUFGCLKx

DCM

CLKIN

x462_28_061903

40 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

表 15 に DDR 出力フ リ ップフロ ップおよび LVDS 出力を使用して測定したデューティ サイクルのずれの値を示します この出力タイプ以外では 立ち上がり時間および立ち下がり時間に差が生じるこ とによって さ らにずれが大き くなる可能性があ り ます このずれは IBIS を使用してシ ミ ュレーシ ョ ンを実行し 検証できます

14 位相シフ ト出力図 30 および表 17 に示すよ うに 14 位相シフ ト出力は CLKIN 入力を 14 周期分シフ ト させたものです 14 位相シフ ト出力には CLKFB 入力へ戻るフ ィードバッ ク パスが必要であるため CLK0 出力の位相は CLKIN 入力の立ち上がりエッジと一致するよ うに調整されます CLK90 出力は CLKIN 入力を90deg位相シフ ト させて生成したものであ り ほかの位相シフ ト出力も同様に生成されます

図 29 12 周期位相シフ ト出力を使用したデューテ ィ サイクルのずれの削減

CLKx at Flip-Flop(with duty-cycle distortion)

180 ˚Phase Shift

CLKx180 at Flip-Flop(with duty-cycle distortion)

CLKx(50 duty cycle)

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKIN

CLKx180

BUFG

BUFG

x462_29_061903

表 15 デューティ サイクルのずれのパラメータ

パラ メータ 説明 概算値

TDCD_CLK0 IO ブロ ッ クにある DDR エレ メン トに対して ク ロ ッ ク立ち下がりエッジでローカル反転したクロ ッ クを入力する場合のデューティ サイクルのずれです 図 28を参照してください

~400 ps

TDCD_CLK180 IO ブロ ッ クにある DDR エレ メン トに対して DCM CLKx180 をクロ ッ ク入力する場合のデューティ サイクルのずれです 図 29を参照してください

~60 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 41

R

DLL 周波数モードによる出力の有効性

14 位相シフ ト出力が有効であるかは DLL_FREQUENCY_MODE 属性で制御される DLL の周波数モードによって決定されます 表 16 に示すよ うに 低周波数モード (DLL_FREQUENCY_MODE=LOW) ではすべての 14 位相シフ ト出力が有効ですが高周波数モードでも有効な出力は CLK0 および CLK180 のみです

5050 デューティ サイクル調整オプシ ョ ン

オプシ ョ ン と して DUTY_CYCLE_CORRECT 属性を使用し 14 位相シフ ト出力を一括して 50デューテ ィ サイ クルに調整できます この属性が TRUE の場合 (デフォル ト ) 4 つの出力すべてのデューティ サイ クルが 50 にな り FALSE の場合は 各出力のデューティ サイ クルと CLKIN 入力のデューティ サイクルは一致しません 詳細は 「ク ロ ッ ク調整」 を参照してください

4 つの位相 遅延クロックエッジ 位相パルス

表 17 に示すよ うに 14 位相シフ ト出力は ぞれぞれ 1 つ前のパルスから 14 周期遅れた立ち上がりエッジで出力されます これらの出力は メモ リ インターフェイスおよびペリ フェラル制御などのアプリ ケーシ ョ ンにおけるタイ ミ ングを柔軟にします

また デューテ ィ サイ クル修正オプシ ョ ンがイネーブルの場合 (DUTY_CYCLE_CORRECTION =TRUE の場合) これらの出力を次のよ うに考えるこ とができますこれらの出力には 14 周期の間隔で

図 30 CLKIN 入力 の 14 周期位相シフ ト出力 (デューティ サイクル修正イネーブルの場合)

表 16 DLL 周波数モードによる 14 位相シフ ト出力の有効性

出力DLL_FREQUENCY_MODE

LOW HIGH

CLK0

CLK90

CLK180

CLK270

270˚180˚90˚0˚

frac14T frac12 T frac34T 1T

CLK0

CLK90

CLK180

CLK270

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)x462_30_061903

42 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

立ち下がりエッジがあ り ます (表 17 を参照) 同様に各出力には周期幅が同一である High パルス時間と Low パルス時間があるこ とになり たとえば 図 30 に示す CLK90 の High パルス部分は CLK0 クロ ッ ク周期の中央に位置しています

ファイン位相シフ ト

DCM では ファ イン位相シフ ト を使用するこ とによって ク ロ ッ ク スキューを制御するこ と もできます ファ イン位相調整はすべての DCM 出力に対して同時に機能します この位相調整にはDCM のDLL 機能ユニッ ト を使用するため CLKFB 入力を通るクロ ッ ク フ ィードバッ クが必要です

物理的には CLKIN と CLKFB の立ち上がりエッジ間の位相関係を調整するこ とによってシフ トが行われますが すべての DCM 出力が CLKIN 入力に関連して位相シフ ト されます

デフォルトでは ファ イン位相シフ トはディ スエーブル (CLKOUT_PHASE_SHIFT=NONE) です つま り ク ロ ッ ク入力は CLKIN で位相調整されています この場合 入力クロ ッ ク CLKIN と フ ィードバッ ク ク ロ ッ ク間におおよそのフ ィードバッ ク地点で計測されるスキューはあ り ません (「確実なソースからのフ ィードバッ ク」 を参照して ください) 図 31 に示すよ うに ファ イン位相シフ トがイネーブルの場合 出力クロ ッ クのエッジは位相シフ ト され CLKIN 入力の前または後になり ます

次にファイン位相シフ トの 2 つのモードについて説明します一般に高速データ通信アプリ ケーシ ョ ンでは 両方のモードが使用されます 「ソース同期」 を参照してください

1 固定ファイン位相シフ ト モードは位相シフ ト値を設計段階で設定します 位相シフ ト値はFPGAコンフ ィギュレーシ ョ ン実行中に取り込まれ アプリ ケーシ ョ ンで変更するこ とはできません

2 動的ファイン位相シフ トモードには 初期位相シフ ト値があ り 固定ファイン位相シフ トの場合と同様に この値は FPGA コンフ ィギュレーシ ョ ン中に取り込まれますが DCM の LOCKED 出力が High になった後であれば アプリ ケーシ ョ ンで変更可能です

固定ファイン位相シフ ト

固定ファ イン位相シフ ト モードでは 設計段階で指定されたシフ ト値が FPGA コンフ ィギュレーシ ョン実行中に設定され この値はアプリ ケーシ ョ ンで変更できません

このモードは 次の 2 つの属性によって制御されます CLKOUT_PHASE_SHIFT 属性が FIXED に設定し PHASE_SHIFT 属性が位相シフ ト量を制御します 図 31 に示すよ うに PHASE_SHIFT = 0 の場合は 出力ク ロ ッ クおよび CLKIN 入力の位相が一致する よ う 調整され ク ロ ッ ク出力はPHASE_SHIFT が負の整数の場合に CLKIN の前に位相シフ ト し正の整数の場合には CLKIN の後に位相シフ ト します

固定ファイン位相シフ ト範囲

PHASE_SHIFT 属性は常に整数値であ り その範囲は -255 ~ +255 ですが 実際の範囲は使用されるCLKIN の周波数によって異なり ます

表 17 14 位相シフ ト出力とそれらの特性 (DUTY_CYCLE_CORRECTION=TRUE)

DCM 出力 位相シフ トクロック周期

に対する遅延

立ち上がり

エッジ

立ち下がり

エッジ解説

CLK0 0deg 0 0 frac12T スキュー調整された入力クロ ッ ク 位相シフ ト なし

CLK90 90deg frac14T frac14T frac34T High パルス (frac34T 周期幅 周期の中央)

CLK180 180deg frac12T frac12T 0T CLK0 の反転 (立ち上がりエッジは周期の中央)

CLK270 270deg frac34T frac34T frac14T Low パルス (frac34T 周期幅 周期の中央)

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 43

R

PHASE_SHIFT 属性の範囲は 次の 2 つの値によって決定されます

1 1 つはナノセカンドで測定される CLKIN 入力の周期 である TCLKIN 値です

2 も う 1 つは Spartan-3 デバイスおよびスピード グレードによって指定される FINE_SHIFT_RANGE の値です この値は 『Spartan-3 データ シート 』 モジュール 3 に記載されています FINE_SHIFT_RANGE は 位相シフ ト遅延ラインにおける総遅延であ り 回路内の遅延タップ数の関数です 実際の遅延ラインは FINE_SHIFT_RANGE よ り長い場合があ り ますがFINE_SHIFT_RANGE までの値が保証されています

これらの値を 等式 1 に適用しSHIFT_DELAY_RATIO を算出します PHASE_SHIFT 属性の範囲はこの算出結果と 1 との不等式関係によって異なり ます

等式 1

SHIFT_DELAY_RATIO lt 1 の場合

ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り長い場合はSHIFT_DELAY_RATIO lt 1 であ り最大ファイン位相シフ ト範囲は FINE_SHIFT_RANGE によって決定されます SHIFT_DELAY_RATIO lt 1 の場合 PHASE_SHIFT 範囲は 等式 2 から求めるこ とができます

等式 2

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 PHASE_SHIFT 値は plusmn191 とな り ます

したがって SHIFT_DELAY_RATIO lt 1 の場合の位相シフ ト値は 等式 3 とな り ますPHASE_SHIFT = 1 と して ください

等式 3

図 31 固定ファイン位相シフ ト

0

Fixed Phase Shift- Limit

Fixed Phase Shift+ Limit

Clock Outputs

PHASE_SHIFT CLKIN DCM

CLKIN

x462_31_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

SHIFT_DELAY_RATIO FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------=

PHASE_SHIFTLIMITS plusmn INTEGER 256 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞=

TPhaseShiftPHASE_SHIFT

PHASE_SHIFTLIMITS----------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

44 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

SHIFT_DELAY_RATIO ge 1 の場合

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 1 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 4

したがって SHIFT_DELAY_RATIO ge 1 の場合の位相シフ ト値は 等式 5 とな り ます PHASE_SHIFT = 1 と して ください

等式 5

最小位相シフ ト

最小位相シフ トの大きさは 次の値の大きな方によって決定されます

1 『Spartan-3 データ シート 』 に DCM_TAP_MIN 仕様と して記載されている最小遅延ライン タ ップ値 (概算値は ~30ps)

2 ク ロ ッ ク周期の 1256

その他の考察点

固定位相シフ トモードでは 動的位相シフ ト制御入力をグランドに接続する必要があ り ます この接続

は DCM Wizard では自動的に行われます

DCM Wizard

固定位相シフ トモードを使用する場合は図 32 に示すよ うにDCM Wizard の [General Setup] ダイアログ ウ ィンド ウに表示される Phase Shift で [Fixed] をク リ ッ ク して ください これによって CLKOUT_PHASE_SHIFT 属性が FIXED に設定されます

[Phase Shift Value] を入力しますが この値は 上述した範囲内にある整数でなければなり ません これによってPHASE_SHIFT 属性値が設定されます DCM Wizard は位相シフ ト値が指定範囲内であるかを確認します

動的ファイン位相シフ ト

動的ファ イン位相シフ ト モードでは 固定ファ イン位相シフ ト モード と同様に 初期スキューまたは初期位相シフ トがコンフ ィギュレーシ ョ ン中に PHASE_SHIFT 属性によって制御されます ただし動的シフ ト モードの場合 DCM の LOCKED 入力が High になった後に 動的ファ イン位相シフ ト制御入力 PSEN PSCLK および PSINCDEC を使用して FPGA アプリ ケーシ ョ ンで現在の位相シフ ト値を修正できます

動作

図 33 に示すよ うに位相シフ ト制御入力を使用し現在の位相シフ ト値を修正します すべての動的位相シフ トは PSCLK の立ち上がりエッジに同期して行われ 有効な位相シフ トは PSEN イネーブル入

図 32 固定ファイン位相モードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

Fixed

x462_32_061803

PHASE_SHIFTLIMITS 255plusmn=

TPhaseShiftPHASE_SHIFT

256--------------------------------------------⎝ ⎠

⎛ ⎞ TCLKINbull=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 45

R

力を正確に 1 PSCLK ク ロ ッ ク周期間アサートするこ とによって開始します PSEN を 1 ク ロ ッ ク周期よ り長くアサートする場合には 適切に位相シフ ト を行う こ とができない可能性があ り ます

PSINCDEC の値は制御入力の増減を指定し 位相シフ トの方向を決定します PSINCDEC を High に設定する と 動的位相シフ ト値が増加し Low に設定する とその値は減少します

実際の位相シフ ト が行われる タ イ ミ ングはさ まざまであ り DCM で PSCLK ク ロ ッ クの 1 周期間PSDONE 出力が High にアサート された時に完了します PSEN がイネーブルであ り PSDONE がアサート されるまでの間 DCM 出力クロ ッ クは 初期位相シフ ト値から新しい位相シフ ト値まで 1 ビットずつスライ ド します シフ トが行われている間 DCM は入力クロ ッ クに対してロ ッ ク状態 つま りLOCKED 出力がアサート された状態を維持します

PSDONE がアサート されたと き またはアサート後に 次の位相シフ ト処理が開始されます

動的ファ イン位相シフ ト モードを使用する場合は CLKOUT_PHASE_SHIFT 属性を VARIABLE に設定し FPGA コンフ ィギュレーシ ョ ン後に PHASE_SHIFT 属性値によって 位相シフ トの初期位置を設定できます DCM の LOCKED 出力が High になる と FPGA アプリ ケーシ ョ ンでは DCM 出力クロ ッ クにおけるスキュー または位相シフ ト を動的に修正できます また DCM がリセッ ト された場合は PHASE_SHIFT 値は初期設定値に戻り ます

図 33 動的ファイン位相シフ ト制御インターフェイス

PSINCDEC

PSEN

PSCLK

PSDONE

0 = 1 =

STATUS[0](

)

PSDONE

If phase shift incremented ordecremented to limit valueSTATUS[0] stays High until newoperation shifts away from limit

x462_33_062403

46 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

動的ファイン位相シフ ト範囲

PHASE_SHIFT と同様に 動的位相シフ トに対しても位相シフ ト範囲の制限があ り ます 図 34 を参照して ください また その範囲は SHIFT_DELAY_RATIO 等式で示したよ うにFINE_SHIFT_RANGE 対入力クロ ッ ク周期の比率によって決定されます

SHIFT_DELAY_RATIO lt 2

指定された FINE_SHIFT_RANGE 値がクロ ッ ク周期の 2 倍よ り小さい場合 (SHIFT_DELAY_RATIOlt 2)最大動的位相シフ ト値は最大遅延タップ値である FINE_SHIFT_RANGE によって決定されますSHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト範囲は 等式 6 によって決定されます

等式 6

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 動的位相シフ ト値の範囲は plusmn96 とな り ます

図 34 動的位相シフ ト制御

Clock Outputs

PHASE_SHIFT DCM LOCKED

RESET

CLKIN

0Fixed Phase Shift

- LimitFixed Phase Shift+ Limit

PSEN

PSINCDEC

PSCLK

PSDONE

STATUS[0]

0

Dynamic Phase Shift- Limit

Dynamic Phase Shift+ Limit

Increment PhaseShift Value

Decrement PhaseShift Value

Enable

IncrementDecrement

Phase Shift Clock

Phase Shift Done

Variable PhaseShift Overflow

DCM LOCKEDFPGA

DCM Variable PhaseShift Control

x462_34_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

DynamicPhaseShiftLIMITS INTEGER 128 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞plusmn=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 47

R

したがって SHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト値は 等式 7 とな り ます PHASE_SHIFT = 1 と して ください

等式 7

SHIFT_DELAY_RATIO ge 2

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 2 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 8

したがって SHIFT_DELAY_RATIO ge 2 の場合の位相シフ ト値は 等式 9 とな り ますPHASE_SHIFT = 1 と して ください

等式 9

制御

45ページの図 33 46ページの図 34 に示すよ うにDCM の動的位相シフ ト制御信号によって FPGAアプリ ケーシ ョ ンは現在の CLKIN 入力と DCM ク ロ ッ ク出力間の関係を修正できます 表 18 に 制御入力 現在の位相と次の位相の関係 遅延タ ップへの影響と制御出力の関係を示します

TPhaseShiftDynamicPhaseShift

DynamicPhaseShiftLIMITS-----------------------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

DynamicPhaseShiftLIMITS 255plusmn=

TPhaseShiftDynamicPhaseShift

256--------------------------------------------------------- TCLKINbull=

表 18 動的位相シフ ト制御 (内部反転がない場合)

PSENPSINC-

DECPSCLK 現在の

位相シフ ト

次の

位相シフ ト遅延ライン PSDONE

STATUS[0](オーバーフロー )

動作

0 X X X 変更なし 変更なし 動的位相シフ トはディ スエーブル

1 0 uarr gt -制限 現在の位相

シフ ト -1現在の位相

シフ ト -11 0 位相シフ トおよびシフ ト ポインタ

のデク リ メン ト

1 0 uarr le -制限およびgt -255

現在の位相

シフ ト -1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがデク

リ メン ト

1 0 uarr -255 -255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

1 1 uarr lt +制限 現在の位相

シフ ト +1現在の位相

シフ ト +11 0 位相シフ トおよびシフ ト ポインタ

のインク リ メ ン ト

1 1 uarr ge+制限およびlt +255

現在の位相

シフ ト +1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがイン

ク リ メ ン ト

1 1 uarr +255 +255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

メモ X = 考慮する必要があ り ません = 不確定であ り 現在のアプリ ケーシ ョ ンの状態によって決定されます1 = PSDONE が 1 PSCLK 周期間 High にアサート されます-制限 = 遅延ラインの最小位置+制限 = 遅延ラインの最大位置PSEN を 1 PSCLK サイ クル間アサート します

48 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

PSEN が Low の場合 動的位相シフ トはディ スエーブルであ り その他のすべての入力は無視されます したがって すべての現在のシフ ト値および遅延ライン位置に変更はあ り ません

遅延ラインがその制限 (デク リ メン トで - 制限 または -255 インク リ メン トで + 制限 または +255)に到っていない場合 FPGA アプリ ケーシ ョ ンでは PSEN を High にアサートする とによって現在の位相シフ ト値を変更でき PSCLK の次の立ち上がりエッジの前に PSINCDEC に対して適切なインク リメン ト デク リ メン ト値を設定できます 位相シフ ト値は指定されたよ うにインク リ メン ト またはデクリ メン ト します 位相シフ トの最後に PSDONE が PSCLK の 1 周期間 High にアサート され 位相シフ ト が完了したこ と を示し ます また 位相シフ ト のオーバーフロー状態が発生していないため

STATUS[0] は Low を維持します

DCM が +255 を超える値にインク リ メン ト された場合 または -255 よ り小さな値にデク リ メン ト された場合には遅延ラインの位置はその限界である +255 または -255 から変更されず位相は変更されません STATUS[0] は High にな り 動的位相シフ トがオーバーフローである こ とを示します こ こで 新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0]が Low に戻り ます

位相シフ トが +255 または -255 には達していませんが 遅延ライン範囲 (表 18 では + 制限および - 制限)を超えている場合には位相は変更されませんがSTATUS[0] が再び High になり ます STATUS[0]出力は 遅延タ ップが遅延ラインの限界に到達したと きを示します ただし FPGA アプリ ケーシ ョ ンでは等式 8 または等式 6 を使用して制限値が算出され求められた遅延ラインの制限値は保証された値とな り ます 特定のデバイスでは 処理電圧または処理温度によって 遅延ラインが長くなる場合があ り ますが これの値はデバイスによって異なるため 保証されていません 遅延ラインの位置ではなく 位相シフ ト値は +255 または -255 に到達するまでインク リ メン ト またはデク リ メン ト を続けます新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0] がLow に戻り ます こ こで位相シフ ト値は遅延ラインにおいて有効な遅延値に対応する値に戻るよ うにインク リ メン ト またはデク リ メン ト されます

DCM Wizard

動的位相シフ トは図 35 に示す DCM Wizard の [General Setup] ダイアログ ウ ィンド ウで設定します動的ファ イン位相シフ ト を有効にするためには 図 35 に示すよ うに [Variable] を選択します 次に初期の [Phase Shift Value] を入力します 初期値は前述した固定ファイン位相シフ トモードの場合と同様に動作します

図 36 に示すよ うに[Variable] モードを選択するこ とによって動的位相シフ ト制御信号である PSENPSINCDEC PSCLK および PSDONE がイネーブルにな り ます これらの制御信号を FPGA アプ リケーシ ョ ンで使用するために入力および出力チェッ ク ボッ クスをオンにして ください またSTATUS

図 35 DCM Wizard での動的ファイン位相シフ トモードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

[Variable]

x462_35_061903

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 49

R

出力のボッ クスをオンにし STATUS[0] 信号をイネーブルにします STATUS[0] は 位相シフ ト値がその最大または最小制限値に達したと きを示します

アプリケーシ ョ ン例

動的位相調整を行う場合の動的位相シフ ト機能については 次の リ ンクからアプ リ ケーシ ョ ン ノー トXAPP268 を参照してください

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

クロック逓倍クロック分周周波数合成

DCM アプリ ケーシ ョ ンのもっと も使用される機能の 1 つと して 新しいク ロ ッ ク周波数を柔軟に生成できる機能があ り ます 次に説明するよ うにSpartan-3 DCM は 3 つの独立した周波数合成機能を持ちます図 37 および表 19 を参照してください アプリ ケーシ ョ ンでは これらの機能の 1 つを使用する場合 またはすべてを同時に使用する場合があ り ます 次に 各機能の詳細について説明します

1 2 逓倍クロ ッ ク (CLK2X CLK2X180) は 入力クロ ッ クの周波数を 2 倍にします

2 ク ロ ッ ク分周 (CLKDV) は 入力クロ ッ ク周波数を一定の分周値を使用して分周します

3 周波数合成回路 (CLKFX CLKFX180) は 入力クロ ッ ク周波数から新しい周波数を生成します

図 36 DCM Wizard での動的位相シフ ト制御出力の選択

LOCKEDSTATUS

PSDONE

PSENPSINCDECPSCLK

STATUS[0] STATUS

x462_36_061903

図 37 クロック合成オプシ ョ ン

CLKIN CLK0

CLKFB

DCM

CLKFX

CLKFX180

Frequency Synthesizer

F = FCLKIN CLKFX_MULTIPLY

CLKFX_DIVIDE

CLKDV

Clock Divider

F =FCLKIN

CLKDV_DIVIDE

CLK2X

CLK2X180

F = 2 FCLKIN Clock Doubler

ClockDistribution

Delay

CLK0or

CLK2X

Clock Feedback LoopCLK0 CLK2X CLK2X180 CLKDV CLKFB

CLK0

CLKFXCLKFX180

50

DLL_FREQUENCY_MODE=LOW50

50

Deskewed ClockF = FCLKIN

DUTY_CYCLE_CORRECTION=TRUE50

x462_37_062203

50 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

CLKDV 以外のすべての周波数合成出力は 5050 デューティ サイ クルを持ちます 表 23 に示すよ うに高周波数で分周値が整数の場合通常 CLKDV は 50 のデューティ サイクルを持ちます また 2逓倍クロ ッ ク (CLK2X CLK2X180) 回路は高周波数では使用できません

CLKFX および CLKFX180 以外のすべての DCM ク ロ ッ ク出力はDCM の 遅延ロッ ク ループ (DLL)ユニッ トで生成され CLKFB ピンへのクロ ッ ク フ ィードバッ クが必要になり ます DCM の デジタル周波数合成 (DFS) ユニッ トはCLKFX および CLKFX180 ク ロ ッ ク出力を生成します アプリ ケーシ ョンで CLKFX 出力または CLKFX180 出力のみが使用される場合にはフ ィードバッ ク パスを削除できDCM の動作範囲が広くな り ます 周波数合成回路は DCM 内部に CLKIN に基づいたフ ィードバック パスを持ちます

ク ロ ッ ク フ ィードバッ クを使用した場合 すべての出力クロ ッ クの位相が調整されます また 出力のいくつかは分周クロ ッ クであるためすべての DCM 出力がクロ ッ ク エッジで一致するよ うに調整されるこ とはまれであるこ とがわかり ます たとえば CLKDV 出力は CLKDV_DIVID の各サイクルごとに CLKIN および CLK0 に対して調整されCLK2X 出力は CLK0 のサイクル 1 つおきに この信号に対して調整されます またCLKFX 出力はCLKIN の CLKFX_DIVIDE サイクルごとおよび CLKFBの CLKFX_MULTIPLY サイクルごとに CLKIN に位相調整されます

周波数合成アプリケーシ ョ ン

周波数合成を使用するアプリ ケーシ ョ ンは ほぼ無制限に考えられますが 次にいくつかのアプリ ケー

シ ョ ン例を示します

bull ボード上で利用可能なクロ ッ クを使用している FPGA および外部ロジッ クに対して完全に新しいクロ ッ ク周波数を生成する

bull 低速の外部クロ ッ ク ソースから高周波数の内部クロ ッ クを生成し システムの EMI を低減する

bull 図 38 に示すよ うに高速シ リ アルデータ ク ロ ッ クを分周しFPGA 内部でデータの並行処理を行う

bull 同様に 図 38 に示すよ うに 高速シ リアル データ フォーマッ トに変換する前に 並行で動作するデータ ク ロ ッ クの周波数を逓倍する

bull 適切な速度の機能をインプリ メン トする場合に 入力クロ ッ クを逓倍し 内部ロジッ クをクロ ッ ク

アップするこ とによって 使用する リ ソースを削減する

表 19 DCM 周波数合成オプシ ョ ン

機能 DCM 出力 周波数DCM の機能ユニッ ト

フ ィードバック50 の

デューティ サイクル

スキュー調整

クロ ッ ク

CLK0 DLL 必要 DUTY_CYCLE_CORRECTION = TRUE の場合に 50 です

2 逓倍クロ ッ ク CLK2XCLK2X180

DLL 必要 常に 50 です

分周クロ ッ ク CLKDV DLL 必要 高周波数モードで分周値が

整数以外の場合を除いて常

に 50 です

周波数合成 CLKFXCLKFX180

DFS オプシ ョ ン フ ィードバッ クに

よって ク ロ ッ ク

入力周波数範囲は

広くなるこ とは

あ り ません

常に 50 です

FCLKIN

2 FCLKINbull

FCLKINCLKDV_DIVIDE---------------------------------------------------

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE------------------------------------------------------------⎝ ⎠

⎛ ⎞bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 51

R

入力クロックおよび出力クロックの周波数条件

周波数合成を行う場合の入力クロ ッ クおよび出力クロ ッ クの周波数条件は DCM で使用されるク ロ ック出力によって決定されます たとえば CLKFX 出力および CLKFX180 出力は DCM のデジタル周波数合成 (DFS) ユニッ トのみを使用し その他のすべての出力は遅延ロッ ク ループ (DLL) ユニッ ト を使用します DLL における周波数の制限は DFS よ り も厳しいため DFS のみを使用する場合の方が周波数の動作範囲は広くな り ますDFS および DLL の両方を使用する場合アプリ ケーシ ョ ンは DLLの周波数範囲によって制限されます

また DLL および DFS は 低周波数モード と高周波数モードの両方で動作可能であるため モード設定によっても有効な周波数範囲が変動します

DCM デザインが有効であるためには CLKIN 周波数が 『Spartan-3 データ シート 』 モジュール 3 に記載されている動作範囲内である必要があ り 使用されているすべての出力クロ ッ クの周波数もそれぞれ

指定された範囲内でなければなり ません

図 39 に クロ ッ ク入力およびクロ ッ ク出力と対応する周波数範囲を示します ただし こ こで示すのは低周波数モードの場合のみです データ シートに記載されている仕様名は影付きのボッ クス内に示しています また 表 20 に DCM アプリ ケーシ ョ ンの例および周波数条件を示します

図 38 周波数合成アプリケーシ ョ ンの一般的な例

DCM DCM

F

n-bitswide

Fn

F F m

m-bitswide

F F

Overclockedtime-shared logic

DCM

F

F F x

High-speed serial datadown-converted toslower parallel data

Slower parallel dataup-converted to high-speed serial data

FPGA

x462_38_070903

52 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

2 逓倍クロック (CLK2X CLK2X180)表 21 に示すよ うに 2 逓倍クロ ッ ク回路によって CLKIN 入力の周波数は 2 倍になり ます この 2 逓倍クロ ッ ク回路は DLL 機能ユニッ トの一部であ り CLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します 2 逓倍クロ ッ ク回路からの出力は CLK2X および CLK2X180 であ り これらの出力のデューテ ィ サイ クルは常に 50 です また これらの周波数は同一ですがCLK2X180 は CLK2X を 180deg位相シフ ト したものであ り 基本的に CLK2X 出力を反転したものになり ます 高性能のデュアル データ レート (DDR) アプリ ケーシ ョ ンまたはクロ ッ ク転送アプリ ケーシ ョ ンでは 両方の位相を使用するこ とが不可欠です

CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE 属性が LOW に設定されている場合のみに使用できます アプリ ケーシ ョ ンにおける必要性に応じてオプシ ョ ンの 2 分周機能を使用しCLKIN 入力周波数を低下させてください ( 「アドバンス ド オプシ ョ ン」 を参照)

図 39 入力クロックおよび出力クロックの周波数条件 (低周波数モード )

DFS(CLKIN_FREQ_FX_MINMAX)

DLL (Low-Frequency Mode)(CLKIN_FREQ_DLL_LF_MINMAX)

~1 MHz ~326 MHz

~24 MHz ~180 MHzFCLKIN

DFS (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~24 MHz ~200 MHz

DLL CLKDV (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~15 MHz ~120 MHz

DLL CLK2X (Low-Frequency Mode)(CLKOUT_FREQ_2X_LF_MINMAX)

~48 MHz ~326 MHz

FCLKFXFCLKFX180

FCLKDV

FCLK2XFCLK2X180

x462_39_070903

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 20 DCM 周波数条件の例

入力周波数 出力周波数 解説

12 MHz 128 MHz 1 つの DCM のみを使用する場合には条件を満たしません FCLKIN は DFS の条件を満たす範囲内ですが FCLKFX は最低 24MHz 出力周波数が必要です

12 MHz 324 MHz DFS を使用する DCM で条件を満たします CLKFX_MULTIPLY=27 と設定してくださいFCLKFX は DFS 出力周波数範囲内です

25 MHz 25 MHz30 MHz

DFS および DLL を使用する DCM で条件を満たします CLKDV 出力を 25MHz 信号に使用しCLKDV_DIVIDE=10 と設定してください また CLKFX 出力を 30MHz 信号に使用しCLKFX_MULTIPLY=6 および CLKFX_DIVIDE=5 と設定してください すべての入力周波数および出力周波数は適切な範囲内です

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 53

R

表 21 2 逓倍クロック回路のまとめ

DCM 出力 CLK2XCLK2X180

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク 必要です

50 デューティ サイ クル出力 はい

制御属性

DLL_FREQUENCY_MODE CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE = LOW の場合にのみ有効です

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます 2 逓倍クロ ッ クの出力は 高周波数モードでは使用できませんが ほかの DCM ク ロ ッ ク出力に必要となる場合があ り ます

CLK2XCLK2X180

CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

2 FCLKINbull

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (~24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (~48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~326 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_2X_LF_MIN (48 MHz)

CLKOUT_FREQ_2X_LF_MAX (~325 MHz)

HIGH 設定不可 設定不可

54 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

クロック分周 (CLKDV)表 22 に概要を示すクロ ッ ク分周ユニッ トは デザインに設定した CLKDV_DIVIDE 属性の値を使用し CLKIN 入力の周波数を分周します ク ロ ッ ク分周ユニッ ト は DLL 機能ユニッ ト の一部であ りCLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します

表 22 クロック分周回路のまとめ

DCM 出力 CLKDV

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク DCM からの CLK0 出力または CLK2X 出力を使用する場合に必要です

50 デューティ サイ クル出力 はい ただし DLL_FREQUENCY_MODE=HIGH および CLKDV_DIVIDE が整数値ではない場合を除きます

制御属性

DLL_FREQUENCY_MODE CLKDV は両モードで使用できます 分周値によっては 出力のデューティ サイ クルに影響を与える場合があ り ます ( 「CLKDV ク ロ ッ ク調整」 を参照してください)

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 有効な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 であ り 整数値の場合 よ り短時間で DLL はロッ ク状態になり ます また 整数値を設定する場合には出力ジッ タが低くな り ます

周波数制約

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

CLKDV CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

FCLKINCLKDV_DIVIDE--------------------------------------------------

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~325 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_DV_LF_MIN (15 MHz)

CLKOUT_FREQ_DV_LF_MAX (~120 MHz)

HIGH CLKOUT_FREQ_DV_HF_MIN (30 MHz)

CLKOUT_FREQ_DV_HF_MAX (~240 MHz)

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 55

R

CLKDV クロック調整

DLL_FREQUENCY_MODE 属性が High であ りCLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 になり ます 表 23 に CLKDV のデューティ サイクルを示します Spartan-3 DCM では CLKIN のデューティ サイクルが 6040 (または 4060) 以上である必要があ り高周波数モードの場合に 15 で分周された CLKDV 出力は次にカスケード接続された DCM へクロ ッ ク入力するこ とはできません

CLKDV のジッ タは 周波数モードおよび属性値が整数か 整数ではないかによって決定されます

CLKDV_DIVIDE 属性に整数値を設定するこ とによって 出力ジッ タが半分になり DLL がロ ッ ク状態になるために要する時間も短縮されます

DCM Wizard

ク ロ ッ ク分周は DCM Wizard の[General Setup]ウ ィ ン ド ウで設定し ます 図 40a に示すよ う にCLKDV 出力のチェッ ク ボッ クスをオンにし 次に図 40b に示すよ うに ド ロ ップ ダウン リ ス トから[Divide by Value] を選択します

表 23 CLKDV デューティ サイクル (DLL_FREQUENCY_MODE=HIGH の場合)

CLKDV_DIVIDE 属性 デューティ サイクル High 時間総サイクル

整数 50000 12

15 33333 13

25 40000 25

35 42857 37

45 44444 49

55 45454 511

65 46154 613

75 46667 715

表 24 CLKDV 出力ジッ タ

CLKDV_DIVIDE CLKDV 出力周期ジッ タ

整数値 CLKOUT_PER_JITT_DV1 (plusmn~150 ps)

整数以外の値 CLKOUT_PER_JITT_DV2 (plusmn~300 ps)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

a CLKDV 出力のチェ ック ボックスをオン b ドロップ ダウン リス トから [Divide by Value を選択]

図 40 DCM Wizard での分周クロック設定

CLKDV

x462_40a_0619032

Divide By Value

x462_40b_061903

56 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

周波数合成回路 (CLKFX CLKFX180)周波数合成回路を使用するこ とによって 入力周波数の逓倍 分周 またはその両方をもっと も柔軟に

行う こ とができます 表 25 に示すよ うに 2 つの周波数合成出力は CLKFX および CLKFX180 ですCLKFX180 出力は CLKFX と同一の周波数を持ちますがCLKFX を 180degまたは 12 ク ロ ッ ク周期位相シフ ト させた ものです これらの周波数合成出力のデューテ ィ サイ クルは 50 であ るためCLKFX180 は CLKFX の反転クロ ッ クのよ うに見えます

表 25 にある等式が示すよ うに設計段階で 2 つの属性を使用し合成出力周波数を制御します CLKINク ロ ッ ク入力は CLKFX_MULTIPLY が分子 CLKDV_DIVIDE が分母である比率を使用して逓倍されます たとえば 75MHz CLKIN 入力を使用して 155MHz の出力を生成するためには 周波数合成回路では 3115 の比率で CLKIN を逓倍します これは CLKIN を始めに 31 倍し 次に 15 で割ることではあ り ませんCLKIN を 31 倍するこ とによって出力周波数は2325GHz とな りSpartan-3 DCMの周波数範囲を越えるこ とにな り ます

68 を 34 と約分するよ うに 逓倍値および分周値はもっと も簡潔な値にする必要があ り ます このことによって ロ ッ クするために必要な時間が短縮します

周波数合成には 常にク ロ ッ ク フ ィードバッ クが必要ですが DFS には CLKIN を基準と した内部フ ィードバッ ク ループがあるため DLL を使用せずに DFS を使用する場合には CLKFB に別のループは必要あ り ません

また CLKFB 出力は CLKIN の CLKFX_DIVIDE サイ クルごと および CLKFB の CLKFX_MULTIPLY サイクルごとに CLKIN に対して位相調整されます たとえばCLKFX_MULTIPLY = 3 であ りCLKFX_DIVIDE = 5 の場合CLKFX 出力の位相は CLKIN の各 5 サイクルごと および CLKFB の 3 サイクルごとに CLKIN 入力に対して位相調整されます DCM で LOCKED 出力がアサート される と DFS は CLKIN 入力の立ち上がりエッジごとに再同期し ほぼ完璧に位相調整されます

表 25 周波数合成回路のまとめ

DCM 出力 CLKFX

CLKFX180 (CLKFX を 180deg位相シフ ト した場合と同一)

出力周波数

DCM の機能ユニッ ト デジタル周波数合成 (DFS)

フ ィードバッ ク CLKIN を基準にして内部フ ィードバッ クを使用するため 必要あ り ません 遅延ロッ ク ループ (DLL) を使用する場合は オプシ ョ ンと して CLKFB 入力を使用できます

50 デューティ サイ クル出力 常に 50 です

制御属性

DFS_FREQUENCY_MODE CLKIN CLKFX 出力 CLKFX180 出力の周波数条件に影響します

DLL_FREQUENCY_MODE アプリ ケーシ ョ ンで DLL 出力が使用される場合に 周波数合成回路のみに影響を与えます また よ り厳しい DLL の条件に適用するよ うに CLKIN 周波数を低下させる可能性があ り ます CLKFX 出力または CLKFX180 出力が使用されている場合 周波数条件は DFS_FREQUENCY_MODE によってのみ指定されます

CLKFX_MULTIPLY 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 2 から 32 であ りデフォルトは 4 です

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 1 から 32 であ りデフォルトは 1 です

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 57

R

DCM Wizard

周波数合成を使用する場合図 41 に示すよ うに DCM Wizard の[General Setup]ダイアログ ボッ クスで CLKFX または CLKFX180 あるいはその両方のチェッ ク ボッ クスをオンにしてください

CLKFX 出力または CLKFX180 出力のみを使用する場合はオプシ ョ ンと して DLL ク ロ ッ ク出力およびフ ィードバッ クをディ スエーブルにするこ とによって 周波数範囲を広げるこ とができます

bull デフォルトでは CLK0 出力は常にオンになっていますが CLKFX または CLKFX180 のみを使用する場合は CLK0 のチェッ ク ボッ クスをオフにしてください

bull 図 42 に示すよ うに DCM フ ィードバッ クをディ スエーブルにする場合は [None] を選択してください フ ィードバッ クを使用しない場合はCLKFX および CLKFX180 の周波数範囲は高域と低域の両方で広くな り ます

周波数制約

CLKIN アプリ ケーシ ョ ンで 遅延ロッ ク ループ (DLL) からの出力が使用されていない場合CLKIN の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます DLL が使用されている場合は DLL のクロ ッ ク周波数条件はよ り厳し くな り ます

CLKFXCLKFX180

CLKIN 出力および CLKFX180 出力の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 25 周波数合成回路のまとめ (Continued)

最小周波数 最大周波数

CLKIN_FREQ_FX_MIN (~10 MHz) CLKIN_FREQ_FX_MAX (~326 MHz)

DFS_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_FX_LF_MIN(~24 MHz)

CLKIN_FREQ_FX_LF_MAX(~210 MHz)

HIGH CLKIN_FREQ_FX_HF_MIN(~210 MHz)

CLKIN_FREQ_FX_HF_MAX(~325 MHz)

図 41 DCM Wizard での Frequency Synthesizer 設定

CLK0

CLKFXCLKFX180

CLKFXCLKFX180

CLKFX CLKFX180

DCM

x462_41_070903

58 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロックのフォワード ミ ラー リバッファR

DCM Wizard のクロ ッ ク周波数合成で示したよ うに必要は出力周波数または逓倍値と分周値を入力します

クロックのフォワード ミ ラーリバッファ

DCM は高度なクロ ッ ク制御機能を持ちさ らに Spartan-3 IO ピンは多様な IO 電圧標準をサポートするため 通常 Spartan-3 FPGA ではクロ ッ ク信号のリバッファ またはミ ラーを行い 入力クロ ッ クの電圧を変更ために使用されます 同様に DCM の入力クロ ッ ク条件を変更し デューティ サイクルを50 に調整します

図 20 に DCM の入力クロ ッ クを 50 デューティ サイ クルに調整し その周波数で CLK0 出力を使用してクロ ッ クをフォワードする または DCM CLK2X を使用して周波数を 2 倍にする DCM の例を示しました DCM が LOCKED 出力をアサートする と 入力クロ ッ クおよび出力クロ ッ クは位相調整されます CLKFB へのフ ィードバッ ク パスは外部のクロ ッ ク フ ィードバッ ク地点でクロ ッ ク分散遅延を確認し 削除します

出力クロ ッ クのデューティ サイクルが 50 であるこ とは重要であるため出力 IO 標準が 50 デューティ サイ クルを維持できるために十分な速度でスイ ッチできる こ と を確認して ください デューティサイ クルの動作は 出力信号でのシ ミ ュレーシ ョ ンを行う こ とによって検証します IBIS シ ミ ュレーシ ョ ンで確認できるよ うに IO 標準には立ち上がり と立ち下がりが対称的ではなく デューティ サイクルにずれが発生しているものもあ り ます HSTL SSTL および LVCMOS の DCI バージ ョ ンの IO標準の立ち上がりおよび立ち下がりがよ り対称的です

100 MHz を越える場合のデューテ ィ サイ クルを確実に 50 にするためには CLKIN のソースのデューティ サイ クルが 50 の場合にも DCM のデューティ サイクル調整機能を使用する必要があ ります したがって ク ロ ッ ク フォワードに CLK0 CLK90 CLK180 または CLK270 を使用する場合はDUTY_CYCLE_CORRECTION 属性を TRUE に設定してください 通常その他の DCM ク ロ ック出力は常に 50 のデューティ サイ クルに調整されます ( 「ク ロ ッ ク調整」 を参照して ください)

200 MHz 以上で動作する場合のデューティ サイ クルを最適にするためには図 43 に示すよ うな回路を使用して ください こ こでは DCM からの CLKx 出力および CLKx180 出力がデュアル データ レート (DDR) 出力フ リ ップフロ ップの C0 入力および C1 入力を駆動するよ うに使用します DDR フ リ ップフロ ップの D0 入力を VCC に接続し D1 入力を GND に接続します また DCM の各出力は個々のグローバル バッファを駆動しデューティ サイクルのずれを最小にします 高周波数の場合に 1つのク ロ ッ クのみを分散し DDR フ リ ップフロ ップ内部でローカル位相シフ ト を行う と 約 150ps のデューティ サイクルのずれが発生するため このよ うな回路設計は推奨していません

周波数が 250 MHz 以上の場合には分散クロ ッ クに LVDS のよ うな差動信号標準を使用します 図 43にCLKIN ク ロ ッ ク入力およびクロ ッ ク出力がと もに VLDS を使用する例を示します さ らにク ロ ック フ ィードバッ ク パスも LVDS を使用します パフォーマンスを最適にするためには ク ロ ッ ク入力およびクロ ッ ク フ ィードバッ ク パスにグローバル バッファ入力 (IBUFGDS) を使用する必要があ り ます これによってデバイスの一辺にあるすべてのグローバル バッファ入力を使用するこ とになり ますが 高周波数でのクロ ッ ク フォワードを最適に行う こ とができます

図 42 フ ィードバックに [None] を選択し 周波数範囲を拡大

SourceFeedback

Internal External None

Value 1X 2X

If only using the CLKFX or CLKFX180clock ouputs optionally click None to extend the DCM frequency limits

x462_42_070903

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 59

R

クロック ジッ タおよび位相ノイズ

もっと も高価で高精度なものの場合においてもすべてのクロ ッ クにはクロ ッ ク ジッタまたは位相ノイズがあ り ます こ こでは Spartan-3 デジタル ク ロ ッ ク マネージャに固有のジッ タ特性について説明します 低周波数 たとえば 20 MHz で動作する場合は 一般に ジッ タの影響は無視できますが200 MHz のよ う な高周波数で動作する場合には 特にデュアル データ レート (DDR) アプリ ケーシ ョンにおいて ジッ タはデザインの問題に関連する要素となり ます ク ロ ッ ク ジッタによって アクティブ ク ロ ッ ク エッジ間で実際に有効な時間が削減されるため FPGA アプ リ ケーシ ョ ンで使用できる時間が制限されます

クロック ジッ タ とは図 44 に示すよ うにク ロ ッ ク ジッタ とは理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジの相違です 太線は 理想的なクロ ッ ク信号を表します 各クロ ッ ク エッジでは 理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジ間に若干のずれがあ り このずれの最大値と最小値の差異をピーク ジッ タ と呼びます ジッ タは アクテ ィブなク ロ ッ ク エッジのみに関係します たとえば シングル データ レート(SDR) アプリ ケーシ ョ ンの場合データは各立ち上がりエッジでクロ ッ ク入力され この場合のジッタは総クロ ッ ク周期から引く こ とによって求められます 一方 デュアル データ レート (DDR) の場合データは各クロ ッ ク周期の始ま り および 12 ク ロ ッ ク周期の点でクロ ッ ク入力されるため ジッ タは12 ク ロ ッ ク周期ごとに影響を与えます

図 43 高周波数 (250 MHz 以上) での LVDS クロック フォワード回路

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKx180

BUFG

BUFG

VCC

GND

OBUFDS

CLKIN

CLKFB

IBUFGDS

IBUFGDS

External Clock Feedback (LVDS)

FPGA

x462_43_061903

図 44 クロック信号におけるジッ タ

x462_44_061903

60 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

クロック ジッ タの原因ク ロ ッ ク ジッタはすべてのシステムに存在しそれを避けるこ とはできません ク ロ ッ ク ジッタの原因は システム内のノ イズのソース または不完全な信号であ り 実際 ジッ タは時間軸上における ノ イ

ズである と言えます たとえば 入力クロ ッ ク ソースには ク リ スタルからの任意の温度振動ノ イズまたは機械的な振動ノ イズによる固有のジッタ特性があ り ます 多くの同時スイ ッチ出力 (SSO) は回路基板にノ イズを追加するため 内部スイ ッチしきい値がわずかに変更し ジッ タが増加します 同様に適切に設計されていない電源供給または不十分なデカップリ ングによってもジッ タは増加します

その他のジッタの原因と しては近接した信号のクロス トーク不適切な終端 グランド バウンス電磁干渉 (EMI) などが考えられます

このアプ リ ケーシ ョ ン ノートでは Spartan-3 デジタル ク ロ ッ ク マネージャ (DCM) および FPGA 内部でのジッタ全般について説明します

クロック ジッ タ特性の理解ク ロ ッ ク ジッタの特性はさまざまな方法で定められ次のよ うにいろいろな方法でその特徴を捉えることができます

サイクル間ジッ タ

隣接サイクル ジッタ と も呼ばれるサイクル間ジッタは 図 45 に示すよ うに 1 つのクロ ッ ク サイクルと次のクロ ッ ク サイクル間でのクロ ッ ク周期の最大差異です この例ではあるクロ ッ ク サイクルと次のクロ ッ ク サイクル間の最大差異は +100 ps および -100 ps または plusmn100 ps です数百万クロ ッ ク サイクル間の計測を行う場合にはクロ ッ ク周期の変動の絶対値が大き くなる可能性があ り ますがク ロ ッ

ク サイクル間の変動が plusmn100 ps よ り大き くなるこ とはあ り ません

サイクル間ジッタは ク ロ ッ ク出力またはオシレータの特性を測定するために重要ですが アプ リ ケー

シ ョ ンのタイ ミ ング解析には有効ではあ り ません

周期ジッ タ

周期ジッタは 数百万クロ ッ ク サイクル間で計測したサイ クル間ジッタの合計です ピーク ジッ タは理想的なクロ ッ ク移行時間と比較した場合の最短および最小移行時間を示します

デジタル ク ロ ッ ク マネージャの周期ジッ タは一定ではく ピーク間ジッタ と して表されます 図 46 に示すよ うに 理論的には クロ ッ ク移行位置は理想的なクロ ッ ク位置を中心とする確率的な分散 また

はヒ ス ト グラムですが実際の分散はガウス分布ではなく二峰性分布の場合があ り ます 実際のクロ ック移行のほとんどは理想的なクロ ッ ク位置付近で起こ り ますが数百万クロ ッ ク サイクルにおける測定の結果 望ましい位置から離れた地点で起こるクロ ッ ク移行もあ り ます

理想的な位置からの統計的な距離はσ (シグマ) と呼ばれる標準偏差で測定されます DCM はすべてデジタルで機能するデザインであるため 非常に安定しており ザイ リ ンクスでは ジッ タの偏差を plusmn7σまたはピーク間ジッ タを 14σ と定めています 判断基準と して 偏差が plusmn7σ である とい う こ とは ジッタの 9999999999974 が指定されたワース ト ケース ジッ タよ り小さい値であるこ とを保証していま

図 45 サイクル間ジッ タ例

T0 T1 = T0 + 100 ps T2 = T1 - 100 ps

x462_45_062203

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 61

R

す また 14σ ピーク間ジッ タ plusmn7σ ジッタ偏差は 最大ビッ ト エラー レート (BER) が 128 x 10-12 という こ とを意味します

ユニッ ト インターバル(UI)

ジッタの仕様を単位間隔 (UI) の割合と して指定する別の方法もあ り ます 1 UI は 周波数に関わらず1 ビッ ト時間を表します ク ロ ッ クの立ち上がりエッジ または立ち下がりエッジのいずれかでデータが取り込まれるシングル データ レート (SDR) アプリ ケーシ ョ ンでは1 UI は 1 ク ロ ッ ク周期になり ます 一方 2 倍のクロ ッ ク レートでデータがクロ ッ ク入力されるデュアル データ レート (DDR) アプリケーシ ョ ンでは 1 UI が 12 ク ロ ッ ク周期になり ます

UI で指定されるピーク間ジッタ幅は 総ビッ ト周期時間に対するピーク間ジッタ値の比率です

総ジッ タの計算

『Spartan-3 データ シート 』 には CLKFXCLKFX180 以外の DCMのク ロ ッ ク出力におけるジッ タが記載されてます デジタル周波数合成 (DFS) ジッ タは 逓倍値および分周値に基づいて算出されます

データ シートには DLL からのクロ ッ ク出力 (CLKFX および CLKFX180 を除くすべてのクロ ッ ク出力) に対するワース ト ケース ジッ タが記載されています DLL ではジッ タが削減されないため DLLク ロ ッ ク出力の総ジッタには入力クロ ッ クである CLKIN のジッタおよびデータ シートに記載された値が含まれます

また DFS ク ロ ッ ク出力である CLKFX および CLKFX180 では 入力ク ロ ッ ク ジッ タがある程度削減されるため 算出された出力ジッタが総ジッタにな り ます

図 46 ピーク間周期ジッ タ例

図 47 ユニッ ト インターバルの比率で示された周期ジッ タ

Desired clock period

Measured clock period

Num

ber

of s

ampl

esPeak-to-peak Period Jitter

(14σ)

+7σ-7σ

x462_46_061903

Bit Period

Unit Interval (UI)

x462_47_061903

62 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

DLL 出力ジッ タへの入力ジッ タの加算

入力ジッタに DLL 出力ジッタを加える場合ノ イズ計算と同様に 2 乗平均平方根 (RMS) 計算を使用します

ピーク間

等式 10

ピーク間偏差

等式 11

定義

入力クロ ッ クのピーク間周期ジッ タが 150 ps (plusmn75 ps) であ り このク ロ ッ クのデューティ サイ クルがDCM の CLK0 出力と同一の周波数を使用して修正される場合について考えます

この場合 JITTERINPUT = 150 ps であ り JITTERSPEC の値は 『Spartan-3 データ シート 』 で指定されている CLKOUT_JITT_PER_0 と呼ばれる値です これは ピーク間で plusmn100 ps または 200 ps である と概算されます

したがって DCM 出力の総ジッタはピーク間で 250 ps または plusmn125 ps です

カスケード接続された DCM のジッ タ計算図 48 に 複数の DCM をカスケード接続し さまざまな出力周波数を生成しているアプ リ ケーシ ョ ンの例を示します この場合のジッタは 次によって決定されます

bull 前のソースからのジッタ

bull 使用されている DCM 出力

データ シートに記載されているよ うにジッ タ特性は各 DCM 出力によってわずかに異なり ます またDFS からの CLKFX 出力および CLKFX180 出力は 入力ジッタをある程度削減し ジッ タ値は DCMWizard で算出されます ( 「ク ロ ッ ク周波数合成」 参照して ください)

JITTERINPUT = FPGA のクロ ッ ク入力ピンで測定された入力周期ジッタ

JITTERSPEC = 『Spartan-3 データ シート 』 に記載されている適切な出力ポートに対する DLL ク ロ ッ ク出力周期ジッタ

JITTERTOTAL = 予想される総出力周期ジッタ

JITTERTOTAL JITTERINPUT( )2 JITTERSPEC( )

2+=

JITTERTOTALJITTERINPUT( )

2 JITTERSPEC( )2+

2--------------------------------------------------------------------------------------------------------plusmn=

JITTERTOTAL 150 ps( )2200 ps( )

2+ 250 ps= =

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 63

R

したがって カスケード接続された DCM チェーンの任意の点におけるジッタは前述した 2 つの要因によって決定されます 次の例では 回路上のいくつかの点で総ジッタを計算する方法を示します

例 1 すべての DCM が DLL 出力を使用する場合

この例では 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

こ こでは DCM (A) が CLK2X 出力を使用する場合について考えます また DCM 出力ジッ タに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_2X 値を使用してください この値は 400 ps (plusmn200 ps) と概算されています 等式 10 を使用しク ロ ッ ク (A) の総周期ジッタを計算します

次にDCM (B) で分周値が整数である CLKDV 出力を使用する場合について考えます またDCM 出力ジッタに対して 『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_DV1 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (B) の総周期ジッタを計算します この場合 入力ジッタ DCM (A) からのジッタ DCM (B) からのジッタを考慮する必要があるため RMS 等式は次のよ うになり ます

最後に DCM (C) が DCM (B) からの出力を 90deg位相シフ トする場合について考えます また DCM出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します この場合 入力ジッ タ DCM (A) からのジッ タ DCM (B) からのジッ タDCM (C) からのジッ タを考慮する必要があるため RMS 等式は次のよ うにな り ます

例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合

この例は DFS からの CLKFX 出力または CLKFX180 出力を使用する DCM がある点以外は 例 1 すべての DCM が DLL 出力を使用する場合と同様です

この例では 75MHz 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

例 1 と同様に まず DCM (A) が CLK2X 出力を使用する場合について考えます 出力ジッタは 次に示す等式になり ます

この例ではDCM (A) で生成された 150MHz を使用してDCM (B) で 90MHz 合成クロ ッ クを生成します DCM Wizard ( 「ク ロ ッ ク周波数合成」 を参照して ください) を使用し CLKFX_MULTIPLY=3および CLKFX_DIVIDE=5 と設定します ワース ト ケースの出力周期ジッタは 700 ps とな り ます

図 48 カスケード接続された DCM のジッ タ計算

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

A B C

x462_48_061903

JITTERTOTAL A( ) 150ps( )2400ps( )

2+ 427ps 214psplusmn= = =

JITTERTOTAL B( ) 150ps( )2400ps( )

2300ps( )

2+ + 522ps 261psplusmn= = =

JITTERTOTAL C( ) 150ps( )2 400ps( )2 300ps( )2 300ps( )2+ + + 602ps 301psplusmn= = =

JITTERTOTAL B( ) 700ps 350psplusmn= =

64 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

最後にDCM (C) が DCM (B) からの出力を 90deg位相シフ ト させる場合について考えます DCM 出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用してください この値は 300 ps (plusmn150 ps) と概算されています 次の等式を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します 次の DCM では CLKFX を使用するため 総入力ジッ タは ワース ト ケースで700 ps とな り ます 次の RMS 等式を使用し 出力ジッタを計算します

カスケード接続した DCM を使用する場合の推奨デザイン

DCM をカスケード接続して使用する場合 図 48 に示すよ うに DCM からの LOCKED 出力が次のDCM の RST 入力を制御しているこ とを確認してください カスケード接続した DCM では 1 つ前のDCM で LOCKED 出力がアサート され ク ロ ッ クが安定しているこ とが示されてた後に 入力クロ ックにロ ッ クする必要があ り ます

また DCM をカスケード接続する場合には 最もジッ タの影響を回避する必要のあるク ロ ッ ク出力が最初の DCM に接続されるよ うに DCM チェーンを構成してください

システム パフォーマンスにおけるジッ タの影響ク ロ ッ ク ジッタによっても有効なビッ ト周期が狭くな りシステム パフォーマンスが低下します 次の等式に示すよ うに FPGA アプリ ケーシ ョ ンで使用可能なビッ ト周期は 総ビッ ト周期 TBIT からいくつかの影響を差し引いたものです シングル データ レート (SDR) アプリ ケーシ ョ ンでは ク ロ ッ ク周期とビッ ト周期は一致しますがデュアル データ レート (DDR) アプリ ケーシ ョ ンのビッ ト周期はクロ ッ ク周期の 12 になり ます

定義

総ジッ タがク ロ ッ ク周期からの偏差ではな く正の値に指定されている場合 (たとえば plusmn100 ps ではなく200 ps の場合) 正の値を 2 で割り ます (100 ps) ビッ ト周期は負の偏差によってのみ短くなり 正の偏差によってはビッ ト周期が長くな り さ らにタイ ミ ング スラ ッ クが追加されます

入力クロ ッ ク信号の周波数は 75 MHz であ り ク ロ ッ ク ソースのジッ タは plusmn100 ps です アプリ ケーシ ョ ンは内部で生成された 150 MHz のクロ ッ クの立ち上がりエッジでデータを入力します また 総ビッ ト周期 TBIT は 667 ns です ジッ タの影響を考慮する と 有効なビッ ト周期 TAVAILABLE は

どのよ うになるでし ょ うか

2 逓倍クロ ッ ク回路からの CLK2X 出力によって75MHz ク ロ ッ ク入力から 150MHz ク ロ ッ クが生成されます 『Spartan-3 データ シート 』 の CLKOUT_PER_JITT_2X 仕様による と 2 逓倍クロ ッ ク出力である CLK2X には plusmn~200 ps (概算) のワース ト ケース ジッタがあ り ます 2 乗平均平方根を使用し

TBIT = ビッ ト周期時間

tTOTAL_JITTER = 総クロ ッ ク ジッ タ ク ロ ッ ク入力ジッタに DCM 出力ジッタ またはカスケード接続された DCM のジッタを加算したものです

tDUTY_CYCLE_DISTORTION = デューティ サイ クルのずれ デュアル データ レート (DDR) アプリケーシ ョ ンのみで必要であ り それ以外の場合はゼロです 使用する DCM ク ロ ッ ク出力によって データ シートに記載されている CLKOUT_DUTY_CYCLE_DLL または CLKOUT_DUTY_CYCLE_FX を使用します

JITTERTOTAL C( ) 700ps( )2300ps( )

2+ 762ps 381psplusmn= = =

TAVAILABLE TBIT tTOTAL_JITTERndash tDUTY_CYCLE_DISTORTIONndash=

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 65

R

DCM のジ ッ タplusmn200 ps にク ロ ッ ク ソースのジ ッ タ plusmn100 ps を加算する こ と によ って 総ジ ッ タtTOTAL_JITTER が plusmn0223 ns であるこ とがわかり ます

データはクロ ッ クの立ち上がりエッジでのみ入力されるためデューティ サイクルのずれが影響を与えるこ とはな く tDUTY_CYCLE_DISTORTION = 0 です

結果と して 有効な総クロ ッ ク周期 TAVAILABLE は総ビッ ト周期である 6667 ns から 6444 ns に減少します 結果と して ロジッ クは 150 MHz ではなく 1551831 MHz で動作します

クロック ジッ タを最小限にするための推奨デザイン高性能アプリ ケーシ ョ ンでは ク ロ ッ ク ジッタによって有効なビッ ト周期が短くな り ますシステム全体のクロ ッ ク ジッタを最小限にするためには次の推奨デザインを参考にしてください

適切な電力分散システム設計

電力プレーン デカップ リ ングを含む 電力分散システム (PDS) を適切に設計するこ とによって 安定した電力環境を作成し システム ジッ タを削減できます アプ リ ケーシ ョ ン ノー ト XAPP623 ではPDS の適切な設計にについて説明しています

bull XAPP623 電力分散システム (PDS) デザイン バイパスデカップリ ング キャパシタhttpwwwxilinxcomxappxapp623pdf

適切なプリン ト サーキッ ト ボードの設計

予想される動作周波数範囲およびアプ リ ケーシ ョ ン環境に適したプ リ ン ト サーキッ ト ボード設計を行ってください

bull WP174 PCB への効果的な FPGA 統合httpwwwxilinxcojppublicationswhitepaperswp_pdfwp174pdf

bull PCB チェッ ク リ ス トhttpsupportxilinxcomxlnxxil_prodcat_productjsptitle=si_pcbcheck

同時スイッチ出力 (SSO) の推奨デザイン

DCM へのク ロ ッ ク入力 または DCM からのク ロ ッ ク出力の信号に関連した問題を回避するために『Spartan-3 データ シート 』 に記載されている同時スイ ッチ出力 (SSO) 仕様に沿っているこ とを確認して ください

また 可能な限り DCM の入力または出力をスイ ッチング回数の多い IO の近くに配置するこ とを避けてください 特に 出力電圧幅が大きい IO または駆動電流が高い IO の場合にはこのこ とが重要です

仮想グランド ピンを DCM 入力および出力接続の近くに配置

さまざまな影響を受けやすく高周波数である DCM の入力または出力では仮想グランド ピンのよ うなユーザー IO ピンを追加して PCB へ別の接続を作成します このよ うな仮想グランド ピンは ジッタの影響を受けやすい DCM 信号に近接する IO パッ ドに配置して ください IO パッ ドは パッケージのピンまたはボール上だけでなく FPGA のダイ レベルでも近接しているこ とを確認して くださいBGA パッケージ上で隣接しているボールは 必ずしも FPGA 上にある隣接したパッ ドに接続する必要はあ り ません このよ うに設計するこ とによって 内部電圧降下が軽減され ジッ タが削減されます

仮想グランドを作成する場合は図 49 に示すよ うに IOB を GND (Low ロジッ ク レベル) を駆動する出力と して設定し その IOB を外部で直接グランド プレーンに接続します

tTOTAL_JITTER 100psplusmn( )2 200psplusmn( )2+ 22360psplusmn 0223nsplusmn= = =

TAVAILABLE 6667ns 0223nsndash 6444ns= =

66 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

VCCAUX 考察

デジタル ク ロ ッ ク マネージャは VCCAUX 入力によって電源が供給されます FPGA への電源供給入力である VCCAUX の過剰ノ イズは DCM の特性 特にジッタ特性を低下させます DCM のパフォーマンスを最適にするために 次に従ってください

1 図 50 に示すよ うに VCCAUX 電源供給 またはグランド上の変動を 1 ms 間で 10 mV よ り小さ くして ください この制限によって DCM は変動に適切に対応して動作します

2 図 50 に示すよ うに 電源供給のノ イズをピーク間で 200 mV 以内にして ください

3 VCCAUX および VCCO が同一の電源プレーンにある場合 すべての VCCAUXVCCO ピンを適切にデカップリ ングまたはバイパスする必要があ り ます ( 「適切な電力分散システム設計」 を参照してください) また 上記の 1 および 2 を維持できない場合 VCCAUX と VCCO を分離して使用してください

4 特に CLK2X 出力は電源シフ ト またはグランド シフ トの影響を受けます したがって すべての IOB および CLB でスイ ッチングがある場合には CLKFX_MULTIPLY =2 および CLKFX_DIVIDE=1 と設定されている CLKFX 出力はよ り よい特性を持つ出力を供給します DFS モードの場合 CLK2X 出力の更新が遅いのに対して CLKFB 迂回回路では 3 入力クロ ッ クごとにタ ップが更新されます

FACTORY_JF 設定の修正

適切に設計され 安定し 適切にデカップリ ングされた電源供給が FPGA 内のクロ ッ ク スキューおよびジッタを低減するためにもっと も有効な方法ですが FACTORY_JF 属性を 0xFFFF に設定することによって 問題の発生しているボード上のジッタを低減できる場合があ り ます FACTORY_JF=FFFF の場合 DCM はおよそ 20 入力クロ ッ クごとにタ ップ設定を更新し 周波数を基にしたデフォルト設定よ り もタ ップ更新の間隔は短くな り ます

図 49 DCM 入力または出力クロック信号への仮想グランド ピンの使用

IBUFG

OBUF

OBUF

To DCMCLKIN Input

Sensitive DCMClock Input

FPGAldquoVirtualrdquoground pin

Direct connectionto PCB groundplane

GND

GND

x462_49_061903

図 50 電圧降下を回避するための VCCAUX 考察

VCCAUXSupply(at FPGA)

dV lt 10 mV

dt lt 1 mS

Keep VCCAUX noiseenvelope to lt 200 mVpeak-to-peak

Avoid sudden changes fromone DC level to anotherKeep dVdt lt 10mVmS x462_50_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 67

R

ただし FACTORY_JF の設定値を大き くするこ とによって DCM では遅延ラインが頻繁に更新されジッ タがわずかに増加する (~30 ps) 可能性もあるため FACTORY_JF のデフォルト設定は最大値ではあ り ません 電源供給が不安定の場合には 発生した位相エラーが増加したジッタよ り大きい場合があり この場合には FACTORY_JF の設定値を大き くするこ とによって デザインのパフォーマンスを向上できます

その他 ビッ トス ト リーム生成の設定

DCM では 次の 2 つのビッ ト ス ト リーム生成 (BitGen) オプシ ョ ンがあ り ます

bull -g lck_cycle このオプシ ョ ンを使用する場合インスタンシエート された DCM で LOCKED 出力がアサート されるまで FPGA のコンフ ィギュレーシ ョ ン スタート アップ シーケンスを遅らせるこ とができます

bull -g DCMShutdown このオプシ ョ ンを使用する場合JTAG ポート を使用した部分再コンフ ィギュレーシ ョ ン または全体の再コンフ ィギュレーシ ョ ンを実行中に コンフ ィギュレーシ ョ ン ロジックに SHUTDOWN コマンドがロード される と DCM ロジッ クがリセッ ト されます

Project Navigator でのビッ トス ト リーム生成オプシ ョ ン

ISE 52i Project Navigator を使用する場合は 図 51 に示すよ うに [Processes for Source] ウ ィンド ウで [Generate Programming File] を右ク リ ッ ク し [Properties] を選択するこ とによってビッ ト ス トリーム生成オプシ ョ ンを設定します

詳細は 「BitGen スイ ッチおよびオプシ ョ ン」 を参照してください

コマンド ライン またはスクリプ ト を使用したビッ トス ト リーム生成オプシ ョ ン

設定可能なオプシ ョ ンを表示するためには 次のコマンドを入力します

bitgen -help spartan3

DCM LOCKED 出力とコンフ ィギュレーシ ョ ン ロジックの設定

DCM の STARTUP_WAIT 属性を使用するこ とによってDCM で LOCKED 出力がアサート されるまで FPGA で DONE 信号がアサート されるを遅らせFPGA のコンフ ィギュレーシ ョ ン スタート アップロジッ クを待たせるこ とができます ただし このためには設計段階で次の二つの設定を行う必要があり ます まず ロ ッ ク状態になってからコンフ ィギュレーシ ョ ンを完了する必要がある各 DCM に対するSTARTUP_WAIT 属性を TRUE に設定します 次に各信号がスタート アップの 6 ク ロ ッ ク サイクルで 図 52 に示すよ うに動作するよ うにビッ ト ス ト リーム生成オプシ ョ ンを変更します デバイスがコンフ ィギュレーシ ョ ン スタート アップ シーケンスを完了するためにはDCM が LOCKED をアサート後に十分なコンフ ィギュレーシ ョ ン ク ロ ッ ク サイ クルが必要です

図 51 Project Navigator でのビッ トス ト リーム生成 (BitGen) オプシ ョ ン

Processes for Current Source

Generate Programming File

Programming File Generation Report

RunRerunRerun AllStopOpen without Updating

Properties

x462_51_061903

68 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他R

A FPGA 内部のグローバル ト ラ イ ステート信号 (GTS_cycle) を開放し すべての IO 信号をイネーブルにします

B GTS_cycle 後に DCM で LOCKED がアサート されるまでスタート アップ ロジッ クが待機するよにサイクルを設定します DCM では クロ ッ ク信号でロ ッ ク状態になる前に ク ロ ッ クおよび可能ならばフ ィードバッ ク信号のよ うな外部入力が必要です

C DCM がロ ッ ク状態になった後 FPGA の内部グローバル書き込みイネーブル (GWE_cycle) 信号をアサート します

D 最後に 内部の DONE 信号をアサート します

図 53 に Project Navigator を使用したオプシ ョ ン設定を示します

スタート アップ位相タイ ミ ングおよび GWE_cycle と DONE_cycle のタイ ミ ングには柔軟性があ り ますがDCM で STARTUP_WAIT 属性を使用する場合は必ず LCK_cycle の前に GTS_cycle がなければなり ません シーケンスがこのよ うになっていない場合にはDCM がロッ クせずコンフ ィギュレーシ ョ ンが完了しません

図 52 DCM LOCKED 出力とスタートアップ ロジックの相互関係

0 1 2 3 4 5 6

DONE_cycle

Start-up CLK

GTS_cycle

GWE_cycle

LCK_cycle

Start-up Cycles

A

B

C

D

x462_52_062403

図 53 BitGen オプシ ョ ン

Process Properties

Startup options

Value

CCLK

6

3

5

4

Default (NoWait)

General Options Configuration Options Readback Options

Property Name

FPGA Startup Clock

Enable Internal Done Pipe

Done (Output Events)

Enable Outputs (Output Events)Release Write Enable (Output Events)Release DLL (Output Events)

Match Cycle (Output Events)

Drive Done Pin High

OK Cancel Default Help

Optionally set GWE_cycle to follow GTS_cycleensuring DCM(s) reset afterIOs activate

LCK_cycle indicates cyclewhere start-up logic waitsfor DCM(s) to assertLOCKED

Done_cycle after LCK_cycle GTS_cycle must occur

before LCK_cycle to enableIO pins

[Startup options]

[OK] x462_53_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 69

R

JTAG を使用した部分再コンフ ィギュレーシ ョ ンまたは全体の再コンフ ィギュレーシ ョ ン中の DCM リセッ ト

も う 1 つのビッ ト ス ト リーム オプシ ョ ンと して SelectMAP を使用した部分再コンフ ィギュレーシ ョン中 または JTAG ポート を使用した全体および部分再コンフ ィギュレーシ ョ ン中に FPGA にあるすべての DCM を リセッ トできます このオプシ ョ ンを使用する場合 SHUTDOWN コマンド シーケンス中に AGHIGH コンフ ィギュレーシ ョ ン コマンドが発行される とDCM がリセッ ト されます JTAGを使用して再コンフ ィ ギュレーシ ョ ンを行う場合には 必ず DCM を リ セッ トする必要があ り ますProject Navigator でビッ ト ス ト リーム生成オプシ ョ ンを変更するためには (「Project Navigator でのビット ス ト リーム生成オプシ ョ ン」 を参照) 図 54 に示すよ うに Configuration options タブをク リ ッ クし [Reset DCM if SHUTDOWN amp AGHIGH performed] オプシ ョ ンのチェッ ク ボッ クスをオンにして ください

一時的な CLKIN の停止厳密なアナログ測定を行っている間のシステム全体のノ イズを削減するため FPGA アプリ ケーシ ョ ンのその他の部分に影響を与えるこ とな く 一時的に DCM へのクロ ッ ク入力を停止できます これが可能である理由の一部はDCM がすべてデジタルで安定して機能するシステムであるためです DCM では最初に入力クロ ッ クに対してロ ッ ク し次に LOCKED 出力をアサートする必要があ り ます DCM がリセッ ト しない場合には デスキュー回路にほとんど影響を与えずに CLKIN 入力クロ ッ クを一時的に停止できますが 次の条件を満たす必要があ り ます

bull デバイスが冷却するこ とによるタ ップ遅延の変化の影響を最小限にするために ク ロ ッ クの停止時

間は 100 ms 未満である必要があ り ます

bull ク ロ ッ クが Low である間に停止する必要があ り12 周期分の High から再開する必要があ り ます

上述の条件は理論的にはクロ ッ ク入力ジッタの仕様に違反しますがDCM の LOCKED 出力は Highを維持し ク ロ ッ クが再び動作する際にも High を維持しています したがって LOCKED が High であるこ とは必ずしも有効なクロ ッ クが使用可能であるこ とにはなり ません このため実際にはクロ ック入力ジッタの仕様に違反していますが これらの条件を満たす限り問題はあ り ません

CLKIN を停止する際にはDCM のデジタル遅延ラインにあるクロ ッ クが出力されるため 1 から 8 出力クロ ッ ク サイクルが生成されます 同様に CLKIN が再開する場合には 遅延ラインが満たされる

図 54 再コンフ ィギュレーシ ョ ン中に DCM をリセッ トするためのコンフ ィギュレーシ ョ ン オプシ ョ ン

Process Properties

Configuration options

ValuePull Up

Pull UpFloatPull UpPull Down0xFFFFFFFF

General Options Startup options Readback Options

Property NameConfiguration Pin DoneJTAG Pin TCKJTAG Pin TDIJTAG Pin TDOJTAG Pin TMSUnused IOBsUserID Code (8 Digit Hexadecimal)Reset DCM if SHUTDOWN amp AGHIGH performed

OK Cancel Default Help

Click Configuration options tab

Click OK when finished

Pull Up

Check to reset all the DCMsin the FPGA if the AGHIGHcommand issued duringSHUTDOWN sequence

x462_54_062103

70 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

参考資料R

までの 1 から 4 ク ロ ッ クサイ クル間は出力クロ ッ クが生成されません 通常 遅延ラインが満たされるためは 2 または 3 ク ロ ッ ク サイ クルが必要です

また 入力ク ロ ッ クを停止するこ とによって 位相シフ ト を行う こ とができます この位相シフ トは

DCM による制御を中断させるこ とな く 1 から 4 ク ロ ッ ク サイクル後のクロ ッ ク出力から影響を与えます

図 55 に CLKIN 入力クロ ッ クを一時的に停止する例を示します また この図には CLK2X ク ロ ッ ク出力への影響も示しています

参考資料 bull 『Spartan-3 データ シート 』 (モジュール 2) デジタル  ク ロ ッ ク  マネージャの特長および機能httpwwwxilinxcojpbvdocspublicationsds099-2pdf

bull 『Spartan-3 データ シート 』 (モジュール 3) タイ ミ ングおよびジッタ特性

httpwwwxilinxcojpbvdocspublicationsds099-3pdf

bull ザイ リ ンクス ISE 52i ライブラ リ ガイ ドDCM プリ ミ ティブhttptoolboxxilinxcomdocsanxilinx5pdfdocsliblibpdf

bull Architecture Wizard 録音版 Web セミナーhttpsupportxilinxcojpsupporttrainingjapan-home-pagehtm

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcojpxappxapp622pdf

bull 『開発システム リ ファレンス ガイ ド』 15 章 「BitGen」 ビッ ト ス ト リーム生成プログラムおよびオプシ ョ ン 335-367 ページhttptoolboxxilinxcomdocsanxilinx5pdfdocsdevdevpdf

図 55 CLKIN の一時的な停止

CLKIN

CLK2X

Clock input must bestopped in Low phase andfor no more than 100 ms

When restarted the clockinput must generate a fullHigh half-period

x462_55_062403

改訂履歴

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 71

R

改訂履歴 次の表に このアプリ ケーシ ョ ン ノートの改訂履歴を示します

日付 バージョ ン 履歴

20030709 10 初版リ リース

  • Spartan-3 FPGA におけるデジタル クロック
  • マネージャ (DCM) の使用
    • 概要
    • はじめに
    • 概要
    • DCM 位置および クロック分散 ネットワーク インターフェイス
    • DCM 機能の概要
      • 遅延ロック ループ (DLL)
      • デジタル周波数合成 (DFS)
      • 位相シフト (PS)
      • ステータス ロジック
        • DCM プリミティブ
          • シンボル
          • 接続ポート
          • 属性プロパティおよび制約
            • その他のザイリン クス FPGA ファ ミリとの互換性
            • DCM 使用のため のクロック条件
              • 入力クロック周波数範囲
              • 出力クロック周波数範囲
              • クロック入力およびクロック フィードバック入力の変動
                • LOCKED 出力
                • RST 入力
                • DCM Wizard
                  • DCM Wizard の起動
                    • Windows のスタート ボタンから起動
                    • Project Navigator から起動
                      • Wizard 選択
                      • [General Setup]
                      • アドバンスド オプション
                      • クロック バッファ
                      • クロック周波数合成
                      • HDL 出力の生成
                        • VHDL および Verilog のインス タンシエーション
                          • Project Navigator の言語テンプレート
                          • VHDL および Verilog リファレンス ファイル
                            • クロック スキュー の低減
                              • クロック スキューとは
                              • クロック スキュー パフォーマンス低下の原因
                              • スキューの削除
                              • 過去のクロック動作から将来のクロック動作を予測
                              • ターゲットのロック
                              • 安定した単調なクロック入力
                              • 確実なソースからのフィードバック
                              • 内部クロック信号からのスキュー削除
                              • 外部クロック信号からのスキュー削除
                                • コンフィギュレーション後の DCM リセット
                                • なぜリセットする必要があるのか
                                  • 遅延ロック ループとは
                                    • 遅延ロック ループ (DLL)
                                    • 位相ロック ループ (PLL)
                                    • インプリメンテーション
                                    • DLL と PLL
                                      • スキュー調整
                                        • システム同期
                                        • ソース同期
                                        • タイミングの比較
                                            • クロック調整
                                            • 位相シフト- ク ロック周期の分数 でクロックを遅延
                                              • 12 クロック周期位相シフト出力
                                                • 12 周期位相シフト出力によるデューティ サイクルのずれの削減
                                                • デュアル データ レート (DDR) クロックの例
                                                  • 14 位相シフト出力
                                                    • DLL 周波数モードによる出力の有効性
                                                    • 5050 デューティ サイクル調整オプション
                                                    • 4 つの位相遅延クロックエッジ位相パルス
                                                      • ファイン位相シフト
                                                      • 固定ファイン位相シフト
                                                        • 固定ファイン位相シフト範囲
                                                        • 最小位相シフト
                                                        • その他の考察点
                                                        • DCM Wizard
                                                          • 動的ファイン位相シフト
                                                            • 動作
                                                            • 動的ファイン位相シフト範囲
                                                            • 制御
                                                            • DCM Wizard
                                                            • アプリケーション例
                                                                • クロック逓倍 クロック分周 周波数合成
                                                                  • 周波数合成アプリケーション
                                                                  • 入力クロックおよび出力クロックの周波数条件
                                                                  • 2 逓倍クロック (CLK2XCLK2X180)
                                                                  • クロック分周 (CLKDV)
                                                                    • CLKDV クロック調整
                                                                    • CLKDV のジッタは周波数モードおよび属性値が整数か整数ではないかによって決定されます
                                                                    • DCM Wizard
                                                                      • 周波数合成回路 (CLKFXCLKFX180)
                                                                        • DCM Wizard
                                                                            • クロックのフォ ワードミラー リバッファ
                                                                            • クロック ジッタお よび位相ノイズ
                                                                              • クロック ジッタとは
                                                                              • クロック ジッタの原因
                                                                              • クロック ジッタ特性の理解
                                                                                • サイクル間ジッタ
                                                                                • 周期ジッタ
                                                                                • ユニット インターバル(UI)
                                                                                  • 総ジッタの計算
                                                                                    • DLL 出力ジッタへの入力ジッタの加算
                                                                                      • カスケード接続された DCM のジッタ計算
                                                                                        • 例 1 すべての DCM が DLL 出力を使用する場合
                                                                                        • 例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合
                                                                                        • カスケード接続した DCM を使用する場合の推奨デザイン
                                                                                          • システム パフォーマンスにおけるジッタの影響
                                                                                              • クロック ジッタを最小限にするための推奨デザイン
                                                                                                • 適切な電力分散システム設計
                                                                                                • 適切なプリント サーキット ボードの設計
                                                                                                • 同時スイッチ出力 (SSO) の推奨デザイン
                                                                                                • 仮想グランド ピンを DCM 入力および出力接続の近くに配置
                                                                                                • VCCAUX 考察
                                                                                                • FACTORY_JF 設定の修正
                                                                                                    • その他
                                                                                                      • ビットストリーム生成の設定
                                                                                                        • Project Navigator でのビットストリーム生成オプション
                                                                                                        • コマンド ラインまたはスクリプトを使用したビットストリーム生成オプション
                                                                                                        • DCM LOCKED 出力とコンフィギュレーション ロジックの設定
                                                                                                        • JTAG を使用した部分再コンフィギュレーションまたは全体の再コンフィギュレーション中の DCM リセット
                                                                                                          • 一時的な CLKIN の停止
                                                                                                            • 参考資料
                                                                                                            • 改訂履歴
Page 4: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々

4 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM 機能の概要R

DCM 機能の概要 図 3 に示すよ うにデジタル ク ロ ッ ク マネージャ (DCM) と呼ばれる 1 つのエン ト リは実際には別々の機能を持つ 4 つのユニッ トで構成され これらは独立して または互いに関連して動作します 次に各ユニッ トの機能について説明します

図 2 FPGA のグローバル クロック ネッ トワークに不可欠な要素としての DCM

I OIBUFG

I OBUFG

Global Buffer Input

GCLK

Global Clock Buffer

Low-SkewGlobal ClockNetwork

x462_02a_062403

I OIBUFG

I OBUFG

GlobalBuffer Input

GlobalClock BufferDigital Clock

Manager

CLKIN Output

CLKFB

DCM

x462_02b_062403

GCLK

a グローバル バッファ入力およびグローバル クロック バッファが低スキューのグローバル ネッ トワークを駆動する例

b DCM を直接グローバル クロック パスに挿入する例

図 3 DCM 機能ブロック図

DS099-2_07_040103

PSINCDECPSEN

PSCLK

CLKIN

CLKFB

RSTSTATUS [70]

LOCKED8

CLKFX180

CLKFX

CLK0

PSDONE

ClockDistribution

DelayCLK90CLK180CLK270CLK2XCLK2X180CLKDV

StatusLogic

DFSDLL

PhaseShifter

Del

ay T

aps

Out

put S

tage

Inpu

t Sta

ge

DCM

DCM 機能の概要

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 5

R

遅延ロック ループ (DLL)遅延ロ ッ ク ループ (DLL) ユニッ トは ク ロ ッ クの出力信号の伝搬遅延がゼロになるよ うにチップ上でスキュー調整を行います スキューを調整するためのデジタル回路では ク ロ ッ ク出力 (CLK0 またはCLK2X) を確認しネッ ト ワーク配線上に遅延を挿入します DLL は外部クロ ッ ク入力ポートからデバイス内の各クロ ッ ク入力までの遅延を削減する場合に有効です 効率的にバッファを使用したグロー

バル ネッ ト ワークでは さまざまな負荷がかかるこ とによって発生するネッ ト ワーク上のク ロ ッ ク スキューを最小限に抑えるこ とができます

DLL への入力信号は CLKIN および CLKFB であ りDLL からの出力信号は CLK0CLK90CLK180CLK270 CLK2X CLK2X180 および CLKDV です

この DLL を使用するこ とによって 2 逓倍クロ ッ ク (CLK2X CLK2X180) ク ロ ッ ク分周 (CLKDV)および 14 位相シフ ト出力の各出力を生成できます

デジタル周波数合成 (DFS)デジタル周波数合成 (DFS) ユニッ トは 設計者が定義した 2 つの整数 逓倍値 (CLKFX_MULTIPLY)および分周値 (CLKFX_DIVIDE) を使用して 柔軟 かつ広範囲の出力周波数を生成します こ こでは入力クロ ッ ク (CLKIN) 周波数を逓倍または分周し派生出力クロ ッ ク周波数を生成します この機能はDCM の DLL 機能の有無に関わらず使用できDLL を使用しない場合には CLKIN と DFS 出力間に位相関係はあ り ません

DFS は 周波数合成回路 (CLKFX CLKFX180) 出力を生成します

位相シフ ト (PS)位相シフ ト (PS) ユニッ トは DCM の CLKIN 入力に対するクロ ッ ク出力の位相関係を制御します

PS は位相シフ ト値を入力クロ ッ ク周期の分数で指定し9 つすべての DCM ク ロ ッ ク出力信号の位相をシフ ト させます この位相シフ ト値は設計段階で指定し FPGA コンフ ィギュレーシ ョ ン中に DCMに読み込まれます

PS は現在のク ロ ッ ク周期の 1256 単位で前後に位相をシフ ト させる こ とができる FPGA アプ リ ケーシ ョ ンのデジタル インターフェイスを提供します

PS の入力信号は PSINCDENPSEN および PSCLK であ り出力信号は PSDONE および STATUS[0]です

ステータス ロジックステータス ロジッ クはLOCKED と STATUS[0]STATUS[1]および STATUS[2] 出力信号によってDCM の現在のステート を示します LOCKED 出力信号は DCM 出力が CLKIN と同位相であるかを示し STATUS 出力信号は DLL および PS のステート を示します

RST 入力信号によってDCM 全体がリセッ ト されコンフ ィギュレーシ ョ ン後のステートに戻るためリセッ ト後は CLKIN 入力に再びロッ クする必要があ り ます

6 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

DCM プリ ミテ ィブ

DCM プリ ミ ティブはデジタル ク ロ ッ ク マネージャのすべての機能を表します図 4 に DCM プリ ミティブを示し 次に DCM の接続ポート 属性 プロパティ および制約の要約を示します

シンボル

接続ポート

表 3 にデジタル ク ロ ッ ク マネージャの接続ポート を示し 各ポートについて 信号方向およびその接続を必要とする DCM ユニッ ト などを簡潔に説明します 表 2 には表 3 で使用している各機能ユニットの略称を示します

図 4 DCM プリ ミテ ィブ

表 2 表 3 で使用している機能ユニッ トの略称

略称 機能ユニッ ト

DLL 遅延ロッ ク ループ

PS 位相シフ ト

DFS デジタル周波数合成

CLK0

CLK90

CLK180

CLK270

CLK2X

CLK2X180

CLKDV

CLKFX

CLKFX180

STATUS[70]

LOCKED

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDEC

PSCLK

DCM

x462_04_061803

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 7

R

表 3 DCM 接続ポート

ポート 方向 説明機能ユニッ ト

DLL PS DFS

CLKIN ク ロ ッ ク入力 DCM へのクロ ッ ク入力であ り 常に必要です CLKIN の周波数およびジッタは 『Spartan-3 データ シート 』 で指定された範囲内である必要があり 周波数モードは DLL_FREQUENCY_MODE 属性または DFS_FREQUENCY_MODE 属性で指定されます

CLKFB 入力 DCM へのクロ ッ ク フ ィードバッ ク入力です フ ィードバッ ク入力はデジタル周波数合成出力である CLKFX または CLKFX180 のみが使用されている場合は必要あ り ません CLKFB 入力のソースは DCM からの CLK0 出力または CLK2X 出力であ り状況に応じて CLK_FEEDBACK を 1X または 2X に設定する必要があ り ます 理論的には フ ィードバッ ク地点には内部または外部のクロ ッ ク分散ネッ ト ワークで追加された遅延が含まれます

「確実なソースからのフ ィードバッ ク」 を参照してください

オプ

シ ョ ン

RST 入力 非同期のリセッ ト入力であ り DCM ロジッ クを リセッ ト してコンフ ィギュレーシ ョ ン後の設定に戻します この入力を使用した場合 DCM では再び CLKIN を確認し ロ ッ ク します また DCM ブロ ッ ク内部で反転可能であり 反転させない場合の動作については下表に示します 「RST 入力」 を参照してください

PSEN 入力 動的位相シフ ト イネーブル信号であ り DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位

相シフ ト 」 を参照してください

PSINCDEC 入力 動的位相シフ ト値を増減する場合に使用し DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位相シフ ト 」 を参照してください

PSCLK ク ロ ッ ク入力 PS へのクロ ッ ク入力であ り 立ち上がりエッジで入力されます DCM ブロ ッ ク内部で反転可能です 周波数モードは DLL_FREQUENCY_MODE 属性によって指定されます 「動的ファイン位相シフ ト 」 を参照してくださ

0 影響なし

1 DCM ブロ ッ クを リセッ ト します アクティブ High であ り最低 2ns 間 High を維持する必要があ り ます

0 動的位相シフ ト をディ スエーブルにし PS への入力は無視されます

1 PSCLK ク ロ ッ クの次の立ち上がりエッジで動的位相シフ トをイネーブルにします

0 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を増加させます

1 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を減少させます

8 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLK0 ク ロ ッ ク出力 位相シフ トは 0degであ り CLKIN と同一周波数の出力ですDUTY_CYCLE_CORRECTION 属性が TRUE の場合は デューティ サイクルが 50 に調整されます DLL 機能にはフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK90 ク ロ ッ ク出力 90deg(14 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません またDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK180 ク ロ ッ ク出力 180deg(12 周期) 位相シフ ト した CLKIN と同一周波数であ りDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイクルが 50 に調整されます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK270 ク ロ ッ ク出力 270deg(34 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません また DUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK2X ク ロ ッ ク出力 位相シフ トは 0degであ り 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合には 常にデューティ サイクルが 50 とな りDLL へのフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLK2X180 ク ロ ッ ク出力 180deg位相シフ ト し 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合はデューティ サイクルが常に 50 とな り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKDV ク ロ ッ ク出力 分周クロ ッ ク出力であ り CLKDV_DIVIDE 属性で制御されます DLL_FREQUENCY_MODE 属性が High であ り CLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 です また CLKDV_DIVIDE 値が整数ではないではない場合はロ ッ ク状態になるまでに必要な時間が長くなり ます これはクロ ッ ク分周 (CLKDV) 出力です

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 9

R

CLKFX ク ロ ッ ク出力 合成クロ ッ ク出力であ り CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性で制御されます デューティ サイクルは常に 50 です CLKFX または CLKFX180 ク ロ ッ ク出力のみが使用されている場合には クロ ッ ク フ ィードバッ クは必要あ り ません 「周波数合成回路 (CLKFX CLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKFX180 ク ロ ッ ク出力 CLKFX を 180deg位相シフ ト した (CLKFX を反転したよ うに見える) 合成クロ ッ ク出力であ り デューティ サイ クルは常に 50 です CLKFX ク ロ ック出力または CLKFX180 ク ロ ッ ク出力が DCM で使用されている場合には フ ィードバッ ク ループは必要あ り ません 「周波数合成回路 (CLKFXCLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

STATUS[0] 出力 動的位相シフ トがオーバーフローであるこ とを示します 動的ファイン位

相シフ トの制御出力で 動的位相シフ トが最小値または最大値に達してい

るこ とを示します 制限値は plusmn255 または位相シフ ト遅延ラインの最後に達した場合は その値以下になり ます 「動的ファイン位相シフ ト 」 を参照し

てください

STATUS[1] 出力 CLKIN 入力が停止したこ とを示し CLKFB フ ィードバッ ク入力が接続されている場合のみに使用できます LOCKED 出力がアサート されるまではリセッ ト状態であ り アクティブになるためには CLKIN が 1 サイクル以上必要です CLKIN が最初から ト グルしない場合にはアサート されません

STATUS[2] 出力 CLKFX 出力または CLKFX180 出力が停止したこ とを示します 周波数合成回路 (CLKFX CLKFX180) を参照してください

STATUS[73]

出力 予約済み

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

0 位相シフ トは制限値に達していません

1 位相シフ トが制限値に達しています

0 CLKIN がト グルしています

1 CLKIN がト グルしていません

0 CLKFX 出力および CLKFX180 出力がト グルしています

1 CLKFX 出力および CLKFX180 出力がト グルしていませんただしLOCKED 出力が High に維持されている場合があ ります

10 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

LOCKED 出力 すべての DCM 機能は CLKIN の周波数にロッ ク しています CLKIN が指定された範囲内 ( 「DCM 使用のためのクロ ッ ク条件」 に記載) である場合に クロ ッ ク出力が有効です 「周波数合成回路 (CLKFX CLKFX180)」を参照してください

PSDONE 出力 動的位相シフ トが完了したこ とを示します 「動的ファイン位相シフ ト 」 を

参照してください

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

0 DCM は CLKIN の周波数に対してロ ッ クする過程であ りDCM のクロ ッ ク出力は無効です

1 DCM は CLKIN の周波数に対してロ ッ ク しDCM のクロ ック出力は有効です

1 rarr 0 DCM のロ ッ ク状態が解除され DCM を リセッ トする必要があ り ます

0 位相シフ トが行われていない または実行中です

1 要求された位相シフ トは完了しています この出力が PSCLK の 1 サイクル間 High になった後次の位相シフ ト を実行できます

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 11

R

属性 プロパティ および制約

表 4 にデジタル ク ロ ッ ク マネージャの属性を示しますすべての属性は設計段階で設定されコンフ ィギュレーシ ョ ン中にプログラムされます 動的ファイン位相シフ ト以外では FPGA アプリ ケーシ ョ ンの実行中にこれらの設定を変更するこ とはできません 使用するデザイン入力ツールに合わせて lt属性gt=lt設定gtを使用し 属性を設定します

表 4 DCM 属性

属性 可能な設定および説明

DLL_FREQUENCY_MODE CLKIN 入力 PSCLK 入力 および遅延ロッ ク ループ (DLL) からの出力クロ ッ クの有効周波数範囲を指定します DLL ク ロ ッ ク出力には CLK0 CLK90 CLK180 CLK270CLK2X CLK2X180 CLKDV が含まれます

CLK_FEEDBACK フ ィードバッ ク ク ロ ッ クの周波数を指定します

DUTY_CYCLE_CORRECTION DLL からの出力である CLK0 CLK90 CLK180 および CLK270 に対する 50 デューティ サイ クル調整をイネーブルまたはディ スエーブルに設定します

CLKDV_DIVIDE CLKDV 出力の周波数を指定します 設定可能な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 です

CLKDV_DIVIDE が整数ではない場合 ロ ッ クするために必要な時間が長くなり 出力ジッ タが増加します

CLKFX_MULTIPLY CLKFX 出力および CLKFX180 出力の周波数を逓倍する場合の係数を指定します この値は CLKDV_DIVIDE 属性の値と と もに使用されます CLKFX_MULTIPLY に設定可能な範囲は整数値の 2 から 32 であ り デフォルトは 4 です

LOW デフォルトです DLL は低周波数モードで動作し DLL に関連したすべての出力が有効です ク ロ ッ ク入力およびクロ ッ ク出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DLL の指定範囲内にあ り ます

HIGH DLL は高周波数モードで動作します 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力 および 14 位相シフ ト出力 CLK90 と CLK270 は無効です CLKDV_DIVIDE 属性が整数以外の場合 CLKDV 出力のデューティ サイクルは 50 になり ません ク ロ ッ ク入力およびクロ ッ ク出力の周波数は『Spartan-3 データ シート 』 に記載されている高周波数 DLL の指定範囲内にあり ます

1X デフォルトであ り CLK0 フ ィードバッ クです周波数は CLKIN と同一です

2X CLK2X フ ィードバッ クであ り 周波数は CLKIN の 2 倍です

なし フ ィードバッ ク ク ロ ッ クはあ り ません CLKFX 出力または CLKFX180 出力のみを使用している場合に可能です

TRUE デフォルトであ り デューティ サイクルは 50 に調整されます

FALSE デューティ サイクル調整は行われません

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

12 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLKDV_DIVIDE CLKFX 出力および CLKFX180 出力の周波数を分周する場合の係数を指定します この値は CLKFX_MULTIPLY 属性の値と と もに使用されます設定可能な範囲は整数値の 1 から 32 であ り デフォルトは 1 です

PHASE_SHIFT この属性は CLKOUT_PHASE_SHIFT 属性が FIXED または VARIABLE に設定されている場合にのみ使用できます CLKIN とすべての DCM ク ロ ッ ク出力間の立ち上がりエッジにおけるスキューをコンフ ィギュレーシ ョ ンで定義し DCM ク ロ ッ ク出力を位相シフ ト させます

スキューまたは位相シフ ト値は整数で指定されます この整数値は 次の等式に示すよ うに

ク ロ ッ ク周期の分数で表され範囲は -255 から 255 になり ますデフォルト値は 0 であ り実際に設定可能な値は入力クロ ッ ク周波数によって異なり ます また TCLKIN gt FINE_SHIFT_RANGE の場合には 実際の範囲はよ り小さ くな り ますFINE_SHIFT_RANGE は遅延ラインにおけるすべてのタ ップの総遅延を示します 詳細は「ファ イン位相シフ ト 」 を参照してください

CLKOUT_PHASE_SHIFT 位相シフ ト モードを指定します PHASE_SHIFT 制約と共に使用し DCM のデジタル位相シフ ト (DPS) 機能をインプリ メン ト します また この設定は DLL および DFS からのすべてのクロ ッ ク出力に反映されます 詳細は 「ファ イン位相シフ ト 」 を参照してください

DESKEW_ADJUST FPGA ク ロ ッ ク入力ピンと DCM 出力クロ ッ ク間のクロ ッ ク遅延調整を制御します 「スキュー調整」 を参照してください

この設定を DCM ク ロ ッ ク出力の位相シフ トに使用しないでください 正確な位相シフ ト を行う場合にはCLKOUT_PHASE_SHIFT 制約または PHASE_SHIFT 制約を使用してください

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

なし デフォルトです CLKIN および CLKFB は同位相 (スキューなし ) であ り位相関係は変更できません PHASE_SHIFT = 0 の場合の FIXED 設定と同一です

FIXED 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定され アプ リ ケーシ ョ ンでは変更できません

VARIABLE 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定されますが 動的位相シフ ト制御信号 PSEN PSCLK PSINCDEC および PSDONE を使用してアプリ ケーシ ョ ンで変更可能です

SYSTEM_SYNCHRONOUS デフォルトであ り すべてのデバイスがシステム全体

に共通のクロ ッ ク ソースで動作します

SOURCE_SYNCHRONOUS データ ソースから クロ ッ クが入力されます ソース同期アプリ ケーシ ョ ンがその一例です

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 13

R

DFS_FREQUENCY_MODE DCM のデジタル周波数合成 (DFS) からのクロ ッ ク出力である CLKFX および CLKFX180 に有効な周波数範囲を指定します DLL ク ロ ッ ク出力が使用されている場合はDLL_FREQUENCY_MODE によって CLKIN 入力の周波数範囲がよ り制限されます

STARTUP_WAIT DCM の LOCKED 信号のアサート よ り先に FPGA コンフ ィギュレーシ ョ ンの DONE 信号を High にするかど うかを制御します

2 つ以上の DCM をコンフ ィギュレーシ ョ ンしている場合は すべての DCM がロ ッ クする必要があ り ます

CLKIN_DIVIDE_BY_2 CLKIN が DCM ブロ ッ クに入力される前に 周波数を 2 分周します アプリ ケーシ ョ ンによっては 入力クロ ッ クの周波数を適切な範囲内に低減できます

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

LOW デフォルトであ り DFS は低周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合 CLKIN 入力の周波数範囲はその出力によって変化します

HIGH DFS は高周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている高周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合CLKIN 入力の周波数範囲はその出力によって変化します

FALSE デフォルトであ り DCM がロ ッ ク状態になるのを待たずに DONE 信号がアサート されます

TRUE DCM がロ ッ ク状態になるまで DONE 信号は High になり ません ただし この STARTUP_WAIT は LOCKED 信号が High になるのを妨げるものではあり ません またFPGA のスタート アップ シーケンスのサイクルの始めに LCK (ロ ッ ク ) サイクルを挿入するよ うに修正する必要があ り ます ( 「ビッ ト ス ト リーム生成の設定」 を参照してください) 通常は DONE サイクルまたは GWE サイクルがその後に続きます

FALSE デフォルトであ り CLKIN は直接 DCM ブロ ッ クに入力されます

TRUE CLKIN が DCM に入力する前に その周波数を 2 分周され デューティ サイクルは約 50 に調整されます これは 高周波数のクロ ッ クを使用し DCM の入力クロ ッ クの周波数条件またはデューティ サイ クル条件を満たす場合に有効です また 周波数モードを決定する場合 または位相シフ ト範囲を算出する場合に クロ ッ ク周波数を 2 分周します

14 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他のザイリンクス FPGA ファ ミ リ との互換性R

その他のザイリンクス FPGA ファミ リ との互換性

Spartan-3 のデジタル ク ロ ッ ク マネージャ (DCM) は Virtextrade-II および Virtex-II Pro FPGA ファ ミ リで使用されている DCM とほぼ同様の機能を持ちますが Spartan-3 DCM は第三世代の DCM デザインであ り さ らに機能が向上しています 特に Virtex-II デバイス と比較する と Spartan-3 デバイスはVCCAUX 供給電源における ノ イズ耐性が改善されVirtex-IIPro ファ ミ リ よ り も位相シフ ト機能に柔軟性があ り ます 出力の周波数制限値はVirtex-II および Virtex-II Pro ファ ミ リの DCM の方が高くなっています

またSpartan-IIIIE と比較する と Spartan-3 DCM の遅延ロッ ク ループ (DLL) 機能は大幅に改善され Spartan-IIIIE DLL の機能をすべて備えているだけでなく 周波数合成および位相シフ ト機能が追加されました Spartan-3 の周波数合成では 最大 32 までの係数を使用して入力クロ ッ クを逓倍しますが Spartan-IIIIE DLL での周波数合成機能は 2 逓倍までです 同様に Spartan-3 DCM の分周機能はSpartan-II DLL よ り広範囲に対応しています

DCM 使用のためのクロック条件

DCM は その機能に最大限の柔軟性があるよ うに設計されていますが ク ロ ッ クの周波数と安定性周波数の変動 およびクロ ッ ク ジッタにいくつかの条件があ り ます

入力クロック周波数範囲

DCM のクロ ッ ク入力周波数は アプ リ ケーシ ョ ンにおける DLL ユニッ ト DFS ユニッ ト またはその両方によって決定されます

表 5 に デジタル周波数合成 (DFS) ユニッ トでの入力クロ ッ クCLKIN の周波数範囲を示します DFS ユニッ ト を単独で使用する場合の周波数範囲は DLL 入力ニッ ト よ り も広くな り ますが 両ユニッ ト を使用する場合には よ り厳しい周波数条件を DLL に適用する必要があ り ます 表には データ シートに記載されている仕様名および概算値の 1 つを示していますが実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

FACTORY_JF DCM の DLL ユニッ トでタ ップ設定を修正する頻度を制御します この設定は DLL エレメン トのジッ タ特性に影響を与え DLL_FREQUENCY_MODE 属性に基づいて自動的に指定されます

設計方法と して推奨された場合以外は デフォルト設定を変更しないでください (「FACTORY_JF 設定の修正」 を参照してください)

LOC 図 1 に示すよ うに DCM の物理的な配置位置を指定します

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

DLL_FREQUENCY_MODE FACTORY_JF

LOW 0xC080

HIGH 0xF0F0

DCM_X0Y0 DCM の左下

DCM_X1Y0 DCM の右下 (XC3S50 では設定不可)

DCM_X0Y1 DCM の左上

DCM_X1Y1 DCM の右上 (XC3S50 では設定不可)

DCM 使用のためのクロック条件

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 15

R

表 6 に遅延ロッ ク ループ (DLL) ユニッ トでの入力クロ ッ ク CLKIN の周波数範囲を示します DLLが単独で使用されている場合と DFS と と もに使用されている場合では 同一の周波数条件が適用されます 表には低周波数モードおよび高周波数モードの場合の DLL の周波数範囲を示しています この周波数モードはDLL_FREQUENCY_MODE 属性によって指定されます 表にはデータ シートに記載されている仕様名および概算値の 1 つを示していますが 実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

出力クロック周波数範囲

DCM の出力クロ ッ クに対しても周波数範囲が指定されています 詳細は 「入力クロ ッ クおよび出力クロ ッ クの周波数条件」 を参照して ください

クロック入力およびクロック フ ィードバック入力の変動「安定した単調なクロ ッ ク入力」 で説明するよ うに DCM では安定性があ り単調なクロ ッ ク入力を使用する必要があ り ます しかし DCM 機能の柔軟性を最大限に使用しよ う とする場合 CLKIN で発生するクロ ッ ク ジッタおよび CLKIN 入力と CLKFB 入力の変動をある程度まで許容しなければなり ません

CLKIN 入力におけるジッタには 2 つのタイプがあ り ます 1 つはサイ クル間ジッタであ り このジッタは CLKIN 入力周期があるサイ クルから次のサイ クル間でどの程度の変化を許容できるかを示します 表 7 にデータ シートに記載されている仕様名および概算値を含むサイクル間ジッタの最大許容範囲を示します

表 5 デジタル周波数合成 (DFS) ユニッ トのクロック入力周波数範囲

機能 最小周波数 最大周波数

デジタル周波数合成 (DFS) CLKIN_FREQ_FX_MIN ~ 100 MHz

CLKIN_FREQ_FX_MAX ~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 6 遅延ロック ループ ユニッ トのクロック入力周波数範囲

機能

DLL 周波数モード属性 (DLL_FREQUENCY_MODE)

= LOW = HIGH

最小周波数 最大周波数 最小周波数 最大周波数

遅延ロ ッ ク ループ (DLL)

CLKIN_FREQ_DLL_LF_MIN

~ 24 MHz

CLKIN_FREQ_DLL_LF_MAX

~ 180 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 48 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 7 サイクル間ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_CYC_JITT_FX_LF~ plusmn300 ps

CLKIN_CYC_JITT_FX_HF~ plusmn150 ps

遅延ロッ ク ループ (DLL) CLKIN_CYC_JITT_DLL_LF~ plusmn300 ps

CLKIN_CYC_JITT_DLL_HF~ plusmn150 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

16 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

LOCKED 出力R

も う 1 つのジッタは 周期ジッタ と呼ばれ クロ ッ ク周期間の最大変動を示します サイクル間ジッタがあるサイクルと次のサイクルの差を示すのに対し 周期ジッタはクロ ッ ク周期全体での変化範囲を示

します 表 8 にデータ シートに記載されている仕様名および概算値を含む周期ジッタの最大許容範囲を示します

DCM の安定性に影響を与える別の要素は DLL で使用される ク ロ ッ ク フ ィードバッ ク パスですフ ィードバッ ク パス遅延の変動は 表 9 に示す範囲内でなければな り ません ただし グローバル クロ ッ ク ラ インに接続される場合はチップ上の変動が最小になるため こ こに示した範囲制限は外部フ ィードバッ ク パスにのみ適用されます

LOCKED 出力 DCM の LOCKED 出力は すべての DCM 機能が CLKIN 入力にロ ッ ク している こ と を示し ますLOCKED 信号がアサート される場合にはFPGA アプリ ケーシ ョ ン内で出力クロ ッ クを使用できます

図 5 に LOCKED 出力信号の動作を示しますLOCKED 出力は FPGA のコンフ ィギュレーシ ョ ン終了直後に Low になり RST 入力がアサート されている場合は常に Low です

コンフ ィギュレーシ ョ ン後 DCM は CLKIN 信号の有効無効に関わらず 常にロ ッ ク状態になろ う とします入力クロ ッ クが安定していない場合にはCLKIN 入力が安定するまでFPGA 回路 で RST 入力をアサートする必要があ り ますDLL では CLKIN 入力および CLKFB 入力の両方を使用し これらの立ち上がりエッジが同位相である時に完全にロ ッ ク状態であるこ とを確認しますDFS ではCLKINを使用してク ロ ッ クの周波数が有効であるかを確認します また DCM がロ ッ ク状態になるために数千クロ ッ ク サイクルのサンプルが必要となる場合があ り ます

DCM の CLKIN に対するロッ クが完了する とLOCKED 出力が High にアサート されDCM のクロ ック出力が有効となるため FPGA アプリ ケーシ ョ ン内でこれらの出力を使用できます 『Spartan-3 データ シート 』 の タイ ミ ングに関する章には ロ ッ クに必要な時間のワース ト ケースが記載されています通常 クロ ッ ク周波数が高いほどDLL 出力は短時間でロッ ク状態になり ます またDFS 出力がロックするためには非常に長い時間が必要とな り ます この時間は 逓倍または分周の係数によって変化し

ますが これらの係数が小さいほど時間は短縮します

システム ク ロ ッ クが安定してから FPGA のコンフ ィギュレーシ ョ ンを完了させるために オプシ ョ ンと して DCM がロ ッ ク状態になるまでコンフ ィギュレーシ ョ ンの完了を遅らせるこ とができます この機能は STARTUP_WAIT 属性で制御します

LOCKED が High になる前の DCM ク ロ ッ ク出力信号の動作は保証していません LOCKED が Highになる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な波形が含まれている場合があ ります

表 8 周期ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_PER_JITT_FX_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_FX_HF~ plusmn1000 ps (plusmn1 ns)

遅延ロッ ク ループ (DLL) CLKIN_PER_JITT_DLL_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_DLL_HF~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 9 外部フ ィードバック パス遅延範囲

解説 指定範囲

チップ外にある CLKFB フ ィードバッ ク パス遅延の最大許容範囲 CLKFB_DELAY_VAR_EXT ~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

RST 入力

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 17

R

CLKIN 入力の周波数が指定範囲内である場合DCM は内部遅延のタップを調整し ロ ッ ク状態を維持しますが その制限を大幅に満たしていない場合には ロ ッ ク状態が解除され LOCKED 出力が Lowになり ます

一度 DCM のロ ッ ク状態が解除される と 自動的に再びロッ ク状態に戻るこ とはあ り ません ロ ッ ク状態が解除された場合つま り LOCKED が High から Low となった場合にはFPGA アプリ ケーシ ョ ンでは RST 入力を使用して DCM を リセッ トするなどの適切な方法を使用して 再びロ ッ ク状態にする必要があ り ます

RST 入力 非同期の RST 入力は DCM ロジッ クを リ セッ ト してコンフ ィギュレーシ ョ ン後の設定に戻しますRST ピンはFPGA を再コンフ ィギュレーシ ョ ンする場合または許容範囲を超えている入力周波数を変更する場合に使用して ください このピンはアクティブ High であ り ダイナミ ッ ク信号またはグランドに接続する必要があ り ます また RST 入力は最低 2ns 間アサート しなければなり ません

コンフ ィギュレーシ ョ ン後に 入力ク ロ ッ ク周波数が安定していない場合 ク ロ ッ クが安定するまで

RST をアサー ト して ください また 外部フ ィードバッ クを使用している場合は コンフ ィギュレーシ ョ ン直後に DCM を リセッ ト します31ページの図 20 に SRL16 シフ ト レジスタ プリ ミ ティブを使用した リセッ ト方法の例を示します

LOCKED 周波数が High から Low になる場合のよ うに DCM のロ ッ ク状態が解除される と FPGAアプリ ケーシ ョ ンでは RST をアサート しDCM に入力クロ ッ ク周波数に対して再ロ ッ ク させる必要があ り ます

図 5 LOCKED 出力の機能的な動作

LOCKED HIGH

FPGA RST

Y

N

Y

N

FPGA

LOCKED LOW

CLKIN

LOCKED LOW

RST

x462_05_062103

CLKIN

RST

RST

18 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

DCM の LOCKED 出力が High の場合 RST がアサート される と この LOCKED 出力は 4 ク ロ ッ クサイ クル以内に Low になり ます このため リセッ ト後は DCM を再びロ ッ ク状態にさせます

また RST をアサートするこ とによって DCM の遅延タップ位置がゼロに戻り このタ ップ位置を変更するこ とによってDCM のクロ ッ ク出力ピンでグ リ ッチが発生する可能性があ り ます 同様にRSTはクロ ッ ク出力のデューティ サイクルにも影響を与えます

さ らに RST がアサート される と現在の可変位相シフ ト値は PHASE_SHIFT 属性で指定された値に戻り ます

DCM Wizard DCM を使用するアプリ ケーシ ョ ンを容易にするために ザイ リ ンクス ISE には 順を追って DCM を設定できるソフ ト ウェア Wizard が含まれています 図 6 に示すよ うに DCM Wizard を使用するこ とによってVHDL 構文または Verilog 構文で DCM をインスタンシエートするベンダ固有のロジッ ク合成ファイルを生成できます また DCM Wizard では特定のインプリ メンテーシ ョ ン用にユーザー制約ファイル (UCF) を生成できますさ らにすべてのユーザー仕様はXilinx Architecture Wizard (XAW)設定ファイルに保存されます

DCM Wizard の起動DCM Wizard を起動するためにはWindows のスタート ボタンから起動するまたはザイ リ ンクス ISEProject Navigator ソフ ト ウェアから起動する という 2 つの方法があ り ます

Windows のスタート ボタンから起動

DCM Wizard を Windows スタート ボタンから起動する場合は[スタート ] rarr [すべてのプログラム] rarr[Xilinx ISE 5] rarr [アクセサリ ] rarr [Architecture Wizard] をク リ ッ ク します 図 7 に設定ウ ィンド ウを示します

bull DCM のオプシ ョ ン設定を保存する Xilinx Architecture Wizard (xaw) ファ イル名を入力します

bull こ こで [Browse] ボタンをク リ ッ ク して xaw ファ イルを選択するこ と も可能です

bull 出力ファイルのロジッ ク合成言語を VHDL または Verilog から選択します

bull ロジッ ク合成ツールを選択します DCM Wizard では 指定した合成ツールに応じて ベンダ固有の出力ファイルが生成されます

bull ターゲッ ト デバイスに Spartan-3 を選択します

図 6 DCM Wizard の DCM 設定用グラフ ィ カル インターフェイス

DCM Wizard

User contraintsfile (UCF)

Vendor-specificVHDL or Verilog

Xilinx ArchitectureWizard (XAW)

settings file

Graphically configure aSpartan-3 Digital ClockManager (DCM)

x462_06_061803

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 19

R

Project Navigator から起動

Project Navigator のメニュー バーから または [Sources in Project] ウ ィンド ウから DCM Wizard を起動できます メニュー バーで [Project] rarr [New Source] を選択するか [Sources in Project] ウ ィンドウで右ク リ ッ ク し [New Source] を選択してください

図 8 に示すよ う に リ ス ト か ら [Architecture Wizard] を選択し ます Xilinx Architecture Wizard(xaw) ファ イル名を入力し そのファイルを保存するディ レク ト リ を選択した後 [Next] をク リ ッ クします

図 7 Architecture Wizard の設定

図 8 Project Navigator での Architecture Wizard 設定

Xilinx Architecture Wizard Setup

My_Spartan-3 Browse

XAW File

Output File Type

VHDL Verilog

XST

Synthesis Tool

XC3S1000-FT256-4 Select

OK Cancel

Part

DCM

Spartan-3

[OK]

x462_07_061803

New

User DocumentVHDL ModuleCoreGen IPSchematicVHDL LibraryVHDL PackageVHDL Test BenchTest Bench WaveformBMM FileMEM FileImplementation Constraints FileArchitecture WizardState Diagram

My_Spartan-3

F ile Name

MyDirectory

Lo cation

Add to Project

lt Back Next gt Cancel Help

DCM

[Next]

Architecture Wizard

x462_08_061803

20 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

Wizard 選択前述した手順はすべての ISE Architecture Wizard に共通ですが Spartan-3 FPGA は図 9 に示す DCMWizard をサポート します こ こで [OK] をク リ ッ ク し 次に進みます

[General Setup] 図 10 に示すよ うに ほとんどのオプシ ョ ンは DCM Wizard の [General Setup] ダイアログ ボッ クスで設定します 楕円の枠内には その設定に対応する DCM プリ ミ ティブ属性名を示します

bull DCM のインスタンス名を入力します このインスタンス名は Verilog または VHDL 出力ファイル内で使用されます

bull 最終的なアプリ ケーシ ョ ンにおける出力および機能を選択するためには 必要な DCM ク ロ ッ ク出力のチェッ ク ボッ クスをオンにします チェッ ク ボッ クスをオンにした出力に対しては それに関連したオプシ ョ ンの設定が可能になり ます

bull CLKIN ク ロ ッ ク入力の周波数を入力します 周波数を MHz で指定するかまたはクロ ッ ク周期をns で指定して ください この値によって DCM の DLL_FREQUENCY_MODE 属性が設定されます

bull CLKIN ソースが FPGA の内部であるか外部であるかを指定します[External] を選択した場合DCM Wizard は自動的にグ ローバル バッ フ ァ入力 (IBUFG) プ リ ミ テ ィ ブを挿入し ます[Internal] を選択した場合は ソース信号は HDL ソース ファ イル内の ト ップ レベル入力となり ます

bull CLKDV 出力をオンにした場合は クロ ッ ク分周回路の [Divide by Value] 値を指定します この値によって DCM の CLKDV_DIVIDE 属性が設定されます

bull DCM へのフ ィードバッ ク パスを指定します CLKFX 出力または CLKFX180 出力のみを使用する場合は [None] を選択します これらの出力を使用しない場合は フ ィードバッ クが必要ですFPGA 内部からのフ ィードバッ クを使用する場合は [Internal] を選択し外部からのフ ィードバック ループを使用する場合は [External] を選択します さ らに DCM フ ィードバッ クのソースをCLK0 (1X) または CLK2X (2X) から選択します この選択によってDCM の CLK_FEEDBACK属性が設定されます

図 9 Spartan-3 FPGA でのみ選択可能な DCM Wizard

Xilinx Architecture Wizard Selection

DCM Wizard

OK Cancel

Select Wizard

Spartan-3 DCM Wizard [OK]

x462_09_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 21

R

bull すべての DCM 出力における位相シフ トの有無を指定します デフォルト設定は位相シフ ト なし (None) です 位相シフ トが必要な場合は 位相シフ ト値と して [Fixed] または [Variable] を選択します [Variable] を選択するこ とによって 動的位相シフ ト制御 PSEN PSINCDECPSCLK および PSDONE が使用可能となり DCM の CLKOUT_PHASE_SHIFT 属性が指定されます Fixed モードおよび Variable モードのいずれを選択する場合でも 固定位相シフ ト値あるいは動的位相シフ トの初期値を決定する [Phase Shift Value] を指定します この値によってDCM の PHASE_SHIFT 属性が設定されます

bull アドバンス ド オプシ ョ ン ウ ィンド ウを開く場合は [Advanced] ボタンをク リ ッ ク します

bull 設定の完了後 [Next] をク リ ッ ク し ク ロ ッ ク バッファ ダイアログ ボッ クスに進みます

アドバンスド オプシ ョ ン図 11 に示すアドバンス ド オプシ ョ ン ウ ィンド ウで さ らに詳細な DCM オプシ ョ ンを設定できます

bull デフォルトではDCM は FPGA のコンフ ィギュレーシ ョ ンに対して影響を与えませんが [Yes] をク リ ッ ク した場合は DCM が LOCKED 出力をアサートするまで FPGA コンフ ィギュレーシ ョンで DONE 信号のアサート を遅らせるこ とができます この設定は DCM の STARTUP_WAIT属性で定義します このよ うに [Yes] を選択した場合は ビッ ト ス ト リーム生成オプシ ョ ンの追加

図 10 [General Setup] ダイアログ ボックスでの DCM オプシ ョ ン設定

Xilinx DCM Wizard - General Setup

MY_DCMDCM Instance Name

Input Clock Frequency

MHz ns 2

Phase Shift Value

30

Advanced

Source

CLK0

CLK90

CLK180

CLK270

CLKDV

CLK2X

CLK2X180

CLKFX

CLKFX180

LOCKED

STATUS

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDECPSCLK

CLKIN SourceInternal

External

Divide By Value

FeedbackInternal External None

Value 1X 2X

Duty Cycle Correction

Yes No

Phase ShiftNone Fixed Variable

23 More Info

lt B ack Next gt Cancel

DCM

CLKFX CLKFX180

CLKDV

MHz ns

Advanced

(BUFG)

[Yes] CLK0CLK90 CLK180 CLK270

50CLK0 (1X)CLK2X (2X)

[Next]

CLKDV

[Fixed] PSEN PSINCDECPSCLK

[Variable]

DLL_FREQUENCY_MODE

CLK_FEEDBACK

CLKDV_DIVIDE

CLKIN IBUFG

[External][Internal]

DUTY_CYCLE_CORRECTIONCLKOUT_PHASE_SHIFT

DCM

PHASE_SHIFT

x462_10_061803

22 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

変更が必要です この変更については 「DCM LOCKED 出力と コンフ ィギュレーシ ョ ン ロジッ クの設定」 で説明します

bull ある特定の DCM において CLKIN 入力の周波数が高すぎる場合には [Divide Input Click by 2]の [Yes] をク リ ッ ク し 入力周波数を半減させて ください これによって DCM ブロ ッ クに入力前のデューティ サイ クルは約 50 にな り ます この設定は DCM の CLK_FEEDBACK 属性で定義します

bull ソース同期のデータ転送が必要なアプリ ケーシ ョ ンでは [DCM Deskew Adjust] 値を [SOURCE_SYNCHRONOUS] に変更します SOURCE_SYNCHRONOUS または SYSTEM_SYNCHRONOUS 以外の値を使用する場合はザイ リ ンクスにお問い合わせください この設定は DCM の CLK_FEEDBACK 属性を定義します 「スキュー調整」 を参照して ください

bull [OK] をク リ ッ ク し 変更を適用して [General Setup] ウ ィンド ウに戻り ます

クロック バッファ次に DCM の各クロ ッ ク出力に対するクロ ッ ク バッファを定義します(図 12 参照) DCM Wizard のデフォルト設定では 自動的にすべての DCM ク ロ ッ ク出力にグローバル バッファ (BUFG) を使用しますが Spartan-3 デバイスでは 上辺および下辺のそれぞれにある 4 つのグローバル バッファを同一辺にある 2 つの DCM で共有しますXC3S50 では上辺または下辺に 1 つの DCM があ り オプシ ョ ンと して同じ辺にある 4 つのクロ ッ ク バッファすべてに接続できます

bull [Clock Buffer Settings] にある [Customize] をク リ ッ ク し DCM の各クロ ッ ク出力にクロ ッ クバッファの種類を指定します

bull DCM の各クロ ッ ク出力に対して リ ス トから [Clock Buffer] 出力タイプを選択します 表 10 に選択可能なクロ ッ ク バッファ オプシ ョ ンを示します

bull [Enabled Buffer] 出力タイプを使用する際にはバッファ イネーブル (CE) 入力の信号名を指定できますが 自動的に作成された信号名も使用できます

bull [Clock Mux] 出力タイプを使用する場合もセレク ト (S) 入力の信号名を指定できますが自動的に作成された信号名も使用できます

bull [Next] まはた [Finish] をク リ ッ ク し 設定を完了します [Next] ボタンが表示されるのは[General Setup]ダイアログ ウ ィ ン ド ウで CLKFX 出力または CLKFX180 出力を選択した場合のみです それ以外の場合は [Finish] をク リ ッ ク し HDL 出力を生成します ( 「HDL 出力の生成」を参照して ください)

図 11 DCM アドバンスド オプシ ョ ン設定

Xilinx DCM Wizard Advanced

Wait for DCM lock before DONE signal goes high

Yes No

Divide Input Clock by 2

Yes No

SYSTEM_SYNCHRONOUS

OK Cancel

DCM Deskew Adjust

CLKIN 12

FPGA

DONEDCM

DCM

[OK]

DCM

STARTUP_WAIT

CLKIN_DIVIDE_BY_2

DESKEW_ADJUST

x462_11_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 23

R

図 12 DCM Wizard を使用した DCM 出力のバッファ オプシ ョ ン設定

Xilinx DCM Wizard - Clock Buffers

This dialog sets up the clock buffers for all the DCM clock outputs selected in the GeneralSetup dialog

Clock Buffer Settings

U se Global Buffer (BUFG) for all selected DCM clock outputs

C ustomize (using grid below)

Reference the lsquoMore Inforsquo button for more information on customizing the global buffers

M ore Info

lt Back N ext gt Cancel

Clock Buffer Input I0 Input I1 Input CES

Global Buffer CLK0

Enabled Buffer CLK90 CLK90_ENABLE_IN

Clock Mux CLK2X180 CLKFX CLKFX_SELECT_IN

Lowskewline CLK180

Local Routing CLK270

CLK2XGlobal BufferGlobal Buffer

Enabled BufferClock MuxLowskewlineLocal RoutingNone

Output O

CLK0_OUT

CLK90_OUT

CLKFX_OUT

CLK180_OUT

CLK270_OUT

CLK2X_OUT

DCM Wizard

BUFG

DCM

DCMFPGA

FPGA

[Next]

x462_12_061703

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

グローバル バッファ

4 つあるグローバル バッファ (BUFG) の 1 つを同じ辺にある DCM に接続します

イネーブル バッファ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク バッファ (BUFGCE) と して設定しているバッファに接続します CE 入力は High の場合にバッファをイネーブルにしLow の場合は バッファ出力がゼロになり ます

BUFGI0 O

BUFGCEI0 O

CE

CE O

0 0

1 I0

24 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

クロック周波数合成

図 13 に示すク ロ ッ ク周波数合成ダイアログ ボッ ク スは [General Setup] ダイアログ ウ ィ ン ド ウでCLKFX 出力または CLKFX180 出力を選択した場合のみに表示されます

こ こでは必要な出力周波数 または逓倍および分周の係数を指定します [Valid Ranges for SelectedSpeed Grade] で周波数範囲 (CLKIN を ns で指定した場合は遅延) を指定します 周波数範囲にはDFS_FREQUENCY_MODE 属性で設定可能な両方の値が表示されます DCM で DLL に関係したクロ ッ ク出力を使用する場合 この範囲条件はよ り厳し くな り ます

bull [Use output frequency] のチェッ クをオンにし MHz または ns で周波数を入力します [Calculate] をク リ ッ クする と CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性の値が算出されます 入力した範囲から可能な逓倍値および分周値を算出できない場合は DCM Wizard で別の出力周波数値を入力するよ うに求めるエラー メ ッセージが表示されます ソ リ ューシ ョ ンがある場合は [Generated Output] に逓倍値 分周値 およびジッ タの値が表示されます ( 「ク ロ ック ジッタおよび位相ノ イズ」 を参照してください)

bull オプシ ョ ンと して[Use Multiply (M) and Divide (D) values] のチェッ クをオンにしこれらの値を入力でき ます [Calculate] を ク リ ッ ク し 出力周波数およびジ ッ タ を計算し ます 結果は[Generated Output] に表示されます

bull 最後に[Finish] をク リ ッ ク しHDL 出力を生成します (「HDL 出力の生成」を参照してください)

ク ロ ッ ク マルチプレクサ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク マルチプレクサ (BUFGMUX) として設定しているバッファに接続します S 入力はクロ ッ ク ソースを選択します

低スキュー ライン 低スキューのプログラマブル相互接続に接続します

ローカル配線 スキューが重要ではない場合において ローカル相互接続に接続します

なし DCM 出力をディ スエーブルにします

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

O

S

BUFGMUXI0

I1 S O

0 I0

1 I1

I0

I0

VHDL および Verilog のインスタンシエーシ ョ ン

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 25

R

HDL 出力の生成すべてのパラ メータを入力後 [Finish] をク リ ッ クする と 図 14 に示すよ うに DCM Wizard が自動的に VHDL または Verilog HDL 出力ファイルを生成します また ユーザー制約ファイル (UCF) も生成されます

VHDL および Verilog のインスタンシエーシ ョ ン

DCM Wizard を使用し VHDL または Verilog HDL 記述を作成する方法が最も容易ですが VHDLソースおよび Verilog ソースも利用できます

Project Navigator の言語テンプレート

ISE 52i およびそれ以降の Project Navigator では DCM の言語テンプレートが使用できます DCMテンプレート を選択する場合はProject Navigator のメニューで [Edit] rarr [Language Templates] をクリ ッ ク します 図 15 に示すテンプレー ト で Verilog フォルダまたは VHDL フォルダを展開表示し

図 13 デジタル周波数合成の逓倍値と分周値の設定 およびジッ タの算出

Xilinx DCM Wizard - Clock Frequency Synthesizer

Valid Ranges for Selected Speed Grade

Inputs for Jitter Calculations

U se output frequency

M Hz ns875

U se Multiply (M) and Divide (D) values

4M 1D

Input Clock Frequency 30 ns C alculate

lt Back Finish Cancel

More Info

Generated Output

MOutput

Frequency(MHz)

29 111

Period Jitter(pk-to-pk ns)

D

11 875

Period Jitter(unit interval)

010

DFSMode

Fin (MHz)

Low

High

24000 - 18]0000

50000 - 270000

24000 - 210000

210000 - 270000

Fout (MHz)

MHz ns[Calculate]

DCM Wizard (M)

(D)

(M)(D)

[Calculate]

[Calculate]

[Finish]

DCM

CLKFX_MULTIPLY CLKFX_DIVIDE

CLKFX_MULTIPLY CLKFX_DIVIDE

DFS_FREQUENCY_MODE

x462_13_061803

図 14 DCM Wizard での VHDL または Verilog HDL 出力ファイルの生成

Xilinx Architecture Wizard

Cancel

Generating HDL file

x462_14_061803

26 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

Component Instantiation フォルダの DCM フォルダを選択します 次にDCM フォルダにある DCMソース ファ イルを選択する と 隣接したウ ィンド ウにソース ファ イルが表示されます

このファイルは参照用と して または内容を新規ソース ファ イルに貼り付けて使用できます

VHDL および Verilog リファレンス ファイル

また この VHDL および Verilog のソース ファ イルは 次のザイ リ ンクス FTP サイ トからダウンロードできます

bull VHDL DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_vhdlzip

bull Verilog DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_verilogzip

クロック スキューの低減

スキューの低減はDCM の基本的な機能の 1 つです 50 MHz 以上の速度で動作するデザインではクロ ッ ク スキューの低減が重要であ り このク ロ ッ ク スキューの低減に関連する概念は DCM を使用したその他のアプリ ケーシ ョ ンにも応用できます

クロック スキューとはク ロ ッ ク スキューは本質的にすべての同期システムに存在します ク ロ ッ ク ソースによって生成されたクロ ッ ク エッジは システム内の異なる点に 異なる時間に到達します これは 1 つのデバイス内の場合も クロ ッ クで接続された異なるデバイスへのクロ ッ ク入力の場合もあ り ます こ こで発生する到達時間の差がクロ ッ ク スキューです

図 16 に 同期システムにおけるクロ ッ ク スキューの例を示します ク ロ ッ ク ソースによって ク ロ ック入力が FPGA へ駆動され FPGA 上の入力ピンに入る と 内部の低スキュー グローバル ク ロ ッ クネッ ト ワークを使用して分配され FPGA 内部のフ リ ップフロ ップに到達します ク ロ ッ ク パスにある各エレ メン トによって フ リ ップフロ ップにクロ ッ ク エッジが到達する時間に遅延が生じます その結果と して フ リ ップフロ ップにおけるク ロ ッ ク入力 (B) で遅延が発生する つま り ク ロ ッ ク ソース (A)と比較してスキューが発生します この例では ク ロ ッ ク スキュー つま り到達時間の差を ∆b と します

図 15 Project Navigator 言語テンプレートでの DCM デザインの選択

Language Templates

Verilog

Component Instantiation

Block RAM

CLK0

CLK0_FB

CLK2X

Templates Module BUFG_CLK0_SUBM Description Verilog Submodule DCM with CLK0 deskew-

module BUFG_CKL0_SUBM ( CLK_IN RST CLK1X LOCK

DCM

x462_15_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 27

R

同様に ク ロ ッ ク ソースは FPGA 内部で再びバッファを介し ボード上にある別のデバイスを駆動します この例では クロ ッ ク ソースは再び入力ピンを通って FPGA に入り グローバル ク ロ ッ ク ネット ワークで分配され FPGA の出力ピンを通って PCB 上のト レースで別のデバイスに接続されますそのため ク ロ ッ ク パスにおける総遅延が大き くな り その結果と して発生するスキュー ∆c も大き くな り ます

クロック スキュー パフォーマンス低下の原因ク ロ ッ ク スキューによって セッ ト アップ時間 および clock-to-output 遅延が増加し ク ロ ッ ク サイクル時間が長くなるため デザインのパフォーマンス全体が低下する可能性があ り ます また ク ロ ッ クスキューによって 長いホールド時間が必要となる場合があ り このホールド時間を確保できない場合

には 不安定な動作を引き起こす可能性があ り ます

スキューの削除

ク ロ ッ ク スキューを削除する方法はあるのでし ょ う か 幸いにも デジタル ク ロ ッ ク マネージャ(DCM) はこのよ うな機能を備えています 図 17 に図 16 と同様の例を示しますがこ こでは Spartan-3 デバイスを使用しています 2 つの DCM によって次のよ うにクロ ッ ク スキューが削除されます 1つの DCM がFPGA 内部でクロ ッ ク入力されたものからのスキューを削除しも う一方の DCM が ボード上で別のデバイスにクロ ッ ク入力する場合のスキューを削除します この結果 (A) (B) および (C)のすべての点で理想的なクロ ッ ク間のアライ メン ト を実現できます

実際には ク ロ ッ ク スキューはどのよ うに削除されるのでし ょ うか ク ロ ッ ク スキューの原因は クロ ッ ク パスにおける遅延である こ と を思い出して ください 図 17 では (B) のク ロ ッ クで ∆ 分のスキューがあ り (C) のクロ ッ クに ∆c 分のスキューがあ り ましたが ク ロ ッ クを (B) に ∆b 分早く到達させ (C) に ∆c 分早く到達させる方法がある場合には どのよ うになるでし ょ うか このよ う な場合にはすべてのクロ ッ クのエッジが一致するよ うに調整されセッ ト アップ時間および clock-to-output 遅延が減少するため システム全体のパフォーマンスが向上します

図 16 すべての同期システムに存在するクロック スキュー

OtherDevice on

Board

FPGA

c b

A

A

C

B

B

C

x462_16_062403

28 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

過去のクロック動作から将来のクロック動作を予測

Spartan-3 FPGA は非常に高度なデジタル ロジッ クを使用していますが 将来の動作を予測するこ とはできません だたし DCM は過去のクロ ッ ク動作を使用し 将来のク ロ ッ ク動作を予測するために役立てます システムに入力されるほとんどのクロ ッ クの周波数は 不変で単調であるため 入力クロ ックの周期 (T) もほぼ一定になり ます

マイナスの遅延を挿入し ク ロ ッ ク スキューの影響を無効にするこ とはできないため DCM は目的としている時間に到達しているよ うに見えるよ うにクロ ッ クを遅らせます これは どのよ うに行われるのでし ょ うか ク ロ ッ ク サイクルは一定の周期 (T) で繰り返されます 図 18 に示すよ うに (B) におけるクロ ッ クは ∆b 分進んでいるよ うにみえますが 実際には (T ndash ∆b) 分遅くなっています 同様に(C) におけるクロ ッ クは (T ndash ∆c) 分遅れています

図 17 Spartan-3 デザインにおけるクロック スキューの削減

図 18 一定周波数のクロックを遅延させる

OtherDevice on

Board

Spartan-3 FPGA

DC

M

Ideal Clock Alignment

b

cEarly Clocks Eliminate Skew

A

B

C

A

B

C

DC

M

A

B

C

x462_17_062403

c

b

Clock Period (T)

Delay=T- b

Delay=T- c

A

B

C

x462_18_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 29

R

入力クロ ッ ク信号は単調であるため ク ロ ッ ク周期 (T) は容易にわかり ますが ク ロ ッ ク スキュー遅延である ∆b および ∆c はど うでし ょ うか 異なる条件の元で複数のシステムにおける動作を詳細に検証するこ とによって これらの値を決定するこ と もできますが 実際には現実的である とは言えません

さ らに ∆b および∆c の値はデバイスによって異なり 同一のデバイス上でも温度または電圧によって変化します

Spartan-3 DCM では ∆b および ∆c をあらかじめ決定するのではなく フ ィードバッ ク ループによって遅延を確認する遅延ロッ ク ループ (DLL) を使用します (図 17 を参照してください) こ こで示している例では 2 つの DCM を使用して 1 つの DCM が内部信号のスキューを削減し も う一方の DCMが外部デバイスへの信号のスキューを削減します また 両方の DCM に各ク ロ ッ ク フ ィードバッ クループがあ り ます DLL は温度または電圧によって引き起こ されるわずかな変更にも適応します

ターゲッ トのロック

適切な遅延を決定し挿入するためにはDCM で数千クロ ッ ク サイ クルのサンプルが必要です DCMで適切な遅延が挿入される と LOCKED 出力信号がアサート されます

DCM で LOCKED 信号がアサート されるまでDCM ク ロ ッ ク出力は使用しないでください DCM が入力クロ ッ ク信号に対してロ ッ ク状態になるまでのク ロ ッ ク出力は無効です DCM がロ ッ ク状態になる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な要素が含まれている可能性があ り ます

アプリ ケーシ ョ ンではLOCKED 信号を出力クロ ッ クが有効であるこ とを確認するために使用しますLOCKED 信号をクロ ッ ク信号が使用可能な状態であるこ とを示すものと して理解してください

安定した単調なクロック入力

DCM が適切に動作するためには 安定した単調なクロ ッ ク入力が必要です そのよ う なク ロ ッ ク入力によって ク ロ ッ ク周期を予測でき出力クロ ッ クのタイ ミ ングを適切に調整できます DCM はいったんロ ッ ク状態になる と『Spartan-3 データ シート 』 で指定された値までのクロ ッ ク周期変動に対応できます 「DCM 使用のためのクロ ッ ク条件」 を参照して ください

入力ク ロ ッ ク周波数が変動して指定された範囲外と なった場合 DCM のロ ッ ク状態が解除されLOCKED 出力は Low になり ます ロ ッ ク状態が解除された場合 DCM を リセッ ト して再びロ ッ クする必要があ り ます 入力クロ ッ クが指定された制限を満たしている場合はLOCKED 出力が High である限り出力クロ ッ クは常に有効です しかし LOCKED 出力は High を維持していますが クロ ッ ク入力が指定された範囲外で CLKDV 出力または CLKFX 出力が無効となる場合があるため問題のないデザインを作成するためには 安定した単調なクロ ッ ク入力が重要です

DCM CLKIN 入力へのパスと して 4 つのグローバル バッファ入力 (IBUFG) のうち デバイス上で同一辺にあるバッファ入力の 1 つを使用する こ と を推奨します IBUFG パスを使用する こ とによってパッ ドからグローバル バッファを通って DCM に到達までの遅延がスキュー調整された出力から削除されます ただし 表 11 に示すその他のパスも使用できます また CLKIN 入力を駆動する信号は汎用相互接続を通る汎用入力ピン (IBUF プリ ミ ティブ) グローバル バッファ入力 (IBUFG) グローバル バッファ マルチプレクサ (BUFGMUX BUFGCE) からの入力と して使用できます 同様に LVDSク ロ ッ ク入力をクロ ッ ク入力と して使用できる場合もあ り ます スキュー調整ロジッ クはLVCMOS または LVTTL のよ うなシングル エンドのクロ ッ ク入力のために特性評価されています ただし 差動信号では IO タイ ミ ングによって わずかな位相エラーが発生する可能性があ り ます 特定の IO タイミ ングについては 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

30 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

確実なソースからのフ ィードバック

適切な遅延に対してロ ッ ク信号をアサートするために DCM は 入力クロ ッ クおよびクロ ッ ク分散遅延後にタ ップされるフ ィードバッ ク ク ロ ッ クの両方をモニタします ク ロ ッ ク フ ィードバッ ク パスにおける総遅延に制限はあ り ません DLL では 必要に応じて逓倍したク ロ ッ ク周期を使用する こ とによって出力クロ ッ クを遅らせます このよ うにDCM は内部遅延または外部遅延を相殺できますがクロ ッ ク フ ィードバッ クは適切なフ ィードバッ ク地点に接続する必要があ り ます

内部クロック信号からのスキュー削除

図 19 に示すよ うにFPGA 内部のスキューを削減する場合フ ィードバッ ク タ ップは FPGA 内部のエレ メン トに入力されるクロ ッ ク と同一のクロ ッ ク とな り ます 通常 フ ィードバッ ク ク ロ ッ クは デバイス上で DCM と同一辺にある ク ロ ッ ク バッファ (BUFG) またはグローバル ク ロ ッ ク マルチプレクサ (BUFGMUX または BUFGCE) に接続されている DCM からの CLK0 出力 (位相シフ ト なし ) ですまたは CLK0 出力ではなく DCM の CLK2K 出力 (位相シフ ト なし 2 逓倍) をフ ィードバッ ク と して使用できます

表 11 クロック入力ソース

CLKIN ソース 説明

グローバル バッファ入力を使用

グローバル バッファ入力 IBUFG は DCM への外部クロ ッ クのソースと して適切です パッ ドからグローバル バッファを通り CLKIN 入力までの遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

グローバル ク ロ ッ ク バッファ BUFG BUFGCE または BUFGMUX プリ ミ ティブを使用するグローバル ク ロ ッ ク バッファは内部生成された DCM へのクロ ッ ク ソース と して適切です グローバル バッファを通る際の遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

汎用 IO を使用 任意のユーザー IO IBUF は 外部クロ ッ クのソースと して使用できます パッ ドから DCM への遅延をあらかじめ決定するこ とはできません これは入力パスとなる可能性を持つパスが多数

存在するためであ り その結果 DCM は遅延を削除できません

内部ロジッ クから派生 FPGA 内部のロジッ ク も ク ロ ッ ク ソース と して使用できます しかしロジッ クから DCM への遅延をあらかじめ決定するこ とはできないため DCM は遅延を削除できません

I OIBUFG

BUFGI O

BUFGCEI O

CE

O

S

BUFGMUXI0

I1

I OIBUF

InternalLogic

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 31

R

外部クロック信号からのスキュー削除

外部クロ ッ クを使用した DCM フ ィードバッ クの設計は内部クロ ッ クの場合よ り も複雑です 図 20 に示すよ うに理想的にはフ ィードバッ ク ク ロ ッ クは PCB ト レースまたは外部クロ ッ クの再バッファの後のすべての外部クロ ッ クに入力される点から始ま り ます

LOCKED 信号は DCM がロ ッ ク状態になったこ と およびク ロ ッ ク信号が有効であるこ とを示します LOCKED 信号によって 外部デバイスが使用可能になり その反転バージ ョ ンはアクティブ Lowのチップ イネーブル信号に接続できます

コンフ ィギュレーシ ョ ン後の DCM リセッ ト

外部フ ィードバッ クを使用する場合 コンフ ィ ギュレーシ ョ ン直後に DCM の リ セッ ト をパルスしDCM のロ ッ ク状態を維持する必要があ り ます 図 20に示すよ うに0x000F で初期化された SRL16 から必要な リセッ ト パルス信号を出力できます 「RST 入力」 を参照して ください

なぜリセッ トする必要があるのか

なぜ このよ うに追加的な リセッ ト パルスが必要なのでし ょ うか 最適にロ ッ クするためには DCMをロ ッ ク状態にし その状態で安定させるために 外部フ ィードバッ クでコンフ ィギュレーシ ョ ンされ

た DCM で CLKIN および CLK0 または CLK2X のいずれかの信号を使用する必要があ り ます コンフ ィギュレーシ ョ ン実行中は FPGA の IO バッファがまだアクティブではないために 外部フ ィードバッ ク CLKFB を使用できません

コンフ ィギュレーシ ョ ンの終了時に デバイスがスター ト アップ シーケンスを開始する と DCM はキャプチャ プロセスを開始します この時点では FPGA のグローバル 3-ステート信号 (GTS) はアサー

図 19 内部クロック信号でのスキュー削減

I OBUFG

FPGA

(or BUFGMUX or BUFGCE)

( )

ldquoClock Goodrdquo

I OIBUFG

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)(

)

x462_19_061803

図 20 外部クロック信号でのスキュー削減

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)

I OOBUF

I OOBUF

FPGA

CLK

ENABLE

( )

RESETD

WCLK

A[30]

Q

INIT=000F

SRL16

I OIBUFG

I OIBUFG

x462_20_062203

32 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ト されているため すべての出力ピンは 3-ステート (ハイ -インピーダンス フローティング) 状態を維持しています このため CLKFB 信号のロジッ ク ステートはわかり ません

GTS のアサート状態の解除後CLKFB に信号が現れDCM が CLKFB 信号を取り込みますが リセット パルスがない場合 DCM が適切な時点でロ ッ ク しない可能性があ り DCM でジッタがわずかに増加し ク ロ ッ ク サイクル レイテンシも増加する可能性があ り ます

また リセッ ト パルスがない場合 PCB のシグナル インテグ リティの問題によって 3-ステート状態にある CLKFB 信号がボード上でほかの信号と ク ロス カップルする とい う問題が発生する可能性があり ます DCM では この無効なクロス カップルされた信号を CLKFB 信号と認識し ロ ッ クするためGTS 信号のアサートが解除され 適切な CLKFB 信号が現れたと きにロ ッ クできない場合があ り ます

遅延ロック ループとはク ロ ッ ク遅延を削除するための 2 つのタイプの回路

bull 遅延ロッ ク ループ (DLL)

bull 位相ロッ ク ループ (PLL)

DLL および PLL には クロ ッ ク分散遅延を削除する という機能以外に周波数合成 クロ ッ ク調整および位相シフ ト などの機能があ り ます

遅延ロック ループ (DLL)

図 21 に示すよ うに単純な形の DLL はタップ遅延ラインおよび制御ロジッ クで構成されます 遅延ラインは入力クロ ッ クCLKINに遅延を挿入したク ロ ッ クを生成し ク ロ ッ ク分散ネッ ト ワークでは そのクロ ッ クがすべての内部レジスタおよびクロ ッ ク フ ィードバッ ク CLKFB ピンに配線されます 一方制御ロジッ クは遅延ラインを調整するために常に入力クロ ッ クおよびフ ィードバック ク ロ ッ クをサンプルします 遅延ラインでは電圧制御遅延または不連続の遅延エレ メン トが使用されています 最適で安定したパフォーマンスを実現するために Spartan-3 DLL ではすべてのデジタル遅延ラインを使用します

DLL は入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クの立ち上がりエッジが調整されるまで それらのクロ ッ ク間に遅延を挿入し ク ロ ック周期から クロ ッ ク分散遅延分を差し引いた時間だけフ ィードバッ ク ク ロ ッ クを遅らせるこ とによって機能します DLL および PLLの専門的解説では フ ィードバッ ク ク ロ ッ クは 360deg 位相がずれたもの つま り同一の位相に再び現れるものと定義されています

入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クのエッジが調整される とDLL がロ ッ ク し これらの 2 つのクロ ッ ク間に認識できる差異はなくな り ます つま り DLL 出力クロ ッ クのクロ ッ ク分散ネッ ト ワークにおける遅延がなくな り ソース ク ロ ッ ク とそのロード間の遅延を効果的に削除されています

図 21 遅延ロック ループ (DLL) ブロック図

ClockDistributionNetwork

Control

VariableDelay Line

CLKOUT

CLKFB

CLKIN

x462_21_061903

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 33

R

スキュー調整

こ こでは主にスキューの削減方法およびクロ ッ ク ソースに対する内部クロ ッ ク と外部クロ ッ クの位相調整の方法について説明します 実際には DCM は DESKEW_ADJUST という属性を使用し 意図的にわずかなスキューを追加します DCM Wizard では アドバンス ド オプシ ョ ン ウ ィ ンド ウでこのDESKEW_ADJUST 属性を設定します

この属性には STEM_SYNCHRONOUS および SOURCE_SYNCHRONOUS という 2 つの基本的なアプリ ケーシ ョ ンがあ り ます 大多数のアプリ ケーシ ョ ンではSYSTEM_SYNCHRONOUS 設定を使用します 次に 各モードの目的を説明します

システム同期

図 23 に示すよ うに システム同期アプリ ケーシ ョ ンでは 1 つのデータ パスにあるすべてのデバイスが共通のクロ ッ ク ソースを使用します これが 従来の最も一般的なシステム構成です デフォルト設定である SYSTEM_SYNCHRONOUS オプシ ョ ンを選択する と データ キャプチャ時のホールド時間がゼロになるよ うに わずかなクロ ッ ク遅延が追加されます ホールド時間とは 基本的にベス ト ケースのデータ パスと ワース ト ケースのクロ ッ ク パス間の差です DCM のクロ ッ ク スキュー削減機能はクロ ッ クを進めるこ とによって動的にワース ト ケースのクロ ッ ク パスを短縮します しかし ク ロ ッ

位相ロック ループ (PLL)

PLL は DLL と同様の基本的な機能を持つよ うに設計されていますが異なるアーキテクチャを使用します 図 22 に示すよ うにPLLと DLL の根本的な違いは DLL が遅延ラインを使用するのに対して PLL では電圧制御オシレータを使用し CLKIN と同様のクロ ッ ク信号を生成します位相検出器およびフ ィルタで構成される制御ロジッ クは ク ロ ッ ク分散システムでの遅延を補う よ うにオシ

レータの周波数と位相を調整します PLL の制御ロジッ クは 入力ク ロ ッ ク と フ ィードバッ ク ク ロ ッ ク CLKFB を比較し 入力クロ ッ クの立ち上がりエッジがフ ィードバッ ク ク ロ ッ クの立ち上がりエッジと一致するよ うにオシレータのクロ ッ クを調整します その後 PLL はロッ ク状態になり ます

インプリ メンテーシ ョ ン

DLL および PLL 内部では アナログ回路またはデジタル回路のいずれかが使用され 各回路はぞれぞれに利点があ り ます 慎重な回路設計を行ったアナログ回路の場合 DLL または PLL ではよ り厳密にタイ ミ ングを調整でき 使用するシ リ コン エリ アが少なくなり ます

一方デジタル回路を使用した設計の場合 ノ イズ耐性が優れ消費電力が低く ジッ タのパフォーマンスよ り良いという利点があ り

ます また ク ロ ッ クを停止させるこ とができるため 電力管理が容易になり ます アナログ設計では 追加の電力供給が必要な場合があ りよ り正確に電源供給の制御を行う必要があるために新しい処理テク ノ ロジに移行する際に問題が発生する可能性があ り ます

DLL と PLL

アプリ ケーシ ョ ンで PLL または DLL を選択する場合は アーキテクチャの違いを理解するこ とが重要です PLL で使用されるオシレータは 本質的に不安定な状態であるため ク ロ ッ ク分散ネッ ト ワークの遅延を補う際に PLL のパフォーマンスが低下します 逆に常に安定している DLL アーキテクチャは遅延およびクロ ッ ク調整の機能の点では PLL よ り優れている一方で PLL はDLL より柔軟に新しいクロ ッ ク周波数の合成を行います

図 22 位相ロック ループ (PLL) ブロック図

ClockDistributionNetwork

Control

Voltage ControlledOscillator

CLKOUT

CLKFB

CLKIN

x462_22_061903

34 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ク パスを短縮するこ とによって ク ロ ッ クがデータの前に現れる場合には結果と してホールド時間が発生します SYSTEM_SYNCHRONOUS オプシ ョ ンを使用するこ とによってホールド時間がゼロになるために十分なスキューをクロ ッ ク パスに追加できる一方でclock-to-output 時間がわずかに増加します

ソース同期

SOURCE_SYNCHRONOUS モードは本来高速データ通信インターフェイスで使用される高度な設定です 図 24 に示すよ うに ソース同期アプリ ケーシ ョ ンではデータおよびクロ ッ クの両方が同一のクロ ッ ク ソースから派生します 送信デバイスは データおよびクロ ッ クを受信デバイスに送信し 受信デバイスはデータに対して最適なクロ ッ クが入力されるよ うにクロ ッ ク タイ ミ ングを調整します 高速デュアル データ レート (DDR) および LVDS 接続などがこのシステムの例です

SOURCE_SYNCHRONOUS 設定によって入力クロ ッ ク と DCM からのデスキュー出力クロ ッ ク間の位相をゼロにし 次に FPGA アプリ ケーシ ョ ンでは固定位相シフ ト モードまたは動的ファ イン位相シフ ト モードを使用してクロ ッ クのタイ ミ ングを調整します 次のアプリ ケーシ ョ ン ノートではソース同期デザインおよび動的位相調整について説明しています

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcomxappxapp622pdf

また 次のアプ リ ケーシ ョ ン ノート では システム レベルのタイ ミ ングについて詳細に解説しています このアプリ ケーシ ョ ン ノートはVirtex-II および Virtex-II Pro FPGA アーキテクチャについて説明するものですが ほとんどの概念を Spartan-3 FPGA に適用できます

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

タイ ミングの比較

図 25 にデュアル データ レート (DDR) アプリ ケーシ ョ ンで SYSTEM_SYNCHRONOUS 設定およびSOURCE_SYNCHRONOUS 設定を使用した場合のタイ ミ ング比較を示します DDR アプリ ケーシ ョンでは 各データ ラインに 2 つのデータ ビッ トが ク ロ ッ ク周期の前半および後半に各 1 つずつ現れます

図 23 共通のクロック ソースによってクロック入力されるシステム同期アプリケーシ ョ ン

図 24 データ ソースがデータ クロックを入力するソース同期アプリケーシ ョ ン

ClockSource

DATA_INDATA_OUT

x462_23_061903

ClockSource

DATA_INDATA_OUT

DATA_CLK

x462_24_061903

クロック調整

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 35

R

SYSTEM_SYNCHRONOUS モードではDCM のクロ ッ ク パスに適切なスキューが追加されホールド時間がゼロになり ます

これに対して SOURCE_SYNCHRONOUS モードでは DCM のクロ ッ ク パスにスキューは追加されませんが FPGA アプ リ ケーシ ョ ンでスキュー追加 または位相シフ ト が行われ ク ロ ッ クはデータウ ィンド ウにおいて理想的な位置で入力されます

クロック調整 ク ロ ッ ク調整とは 入力ク ロ ッ クのデューティ サイ クルが 50 以外の場合に 50 に調整する機能です 図 26 にHigh 時間が約 40 であ りLow 時間が約 60 (4060 デューティ サイクル) である入力ク ロ ッ クを ほぼ完全な 50 デューティ サイ クルを持つ入力クロ ッ クに調整する例を示します完全な 50 デューテ ィ サイ クル と な ら ない理由は CLKOUT_DUTY_CYCLE_DLL およびCLKOUT_DUTY_CYCLE_FX で指定されるデューティ サイ クルのずれが存在するためです これらの値は 『Spartan-3 データ シート 』 に記載されています デューティ サイクルのずれの概算値は 150ps未満です

クロ ッ クのデューティ サイクルが 50 であるこ とはVLDS またはデュアル データ レート (DDR) アプリ ケーシ ョ ンなどの高速通信インターフェイス ク ロ ッ ク転送アプリ ケーシ ョ ン またはクロ ッ ク ミラー アプリ ケーシ ョ ンにおいて不可欠な条件です 「デュアル データ レート (DDR) ク ロ ッ クの例」 を参照して ください

DCM では 自動的にほとんどのク ロ ッ ク出力のデューティ サイ クルが 50 に調整され それ以外の場合には動作条件または属性設定によって オプシ ョ ンと して調整されます 表 12 を参照して ください

図 25 デュアル データ レート (DDR) アプリケーシ ョ ンにおける SYSTEM_SYNCHRONOUS モードおよび SOURCE_SYNCHRONOUS モードのタイ ミング比較

SYSTEM_SYNCHRONOUS

DATA_IN

SOURCE_SYNCHRONOUS

SOURCE_SYNCHRONOUS+ Fixed or Dynamic Phase Shift

Data capture windowor data ldquoeyerdquo

x462_25_061903

図 26 DCM におけるデューテ ィ サイクル修正機能

CLKIN

ConditionedClock Output

50 50

40 60

x462_26_061903

36 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

14 位相シフ ト出力である CLK0 CLK90 CLK180 および CLK270 はDUTY_CYCLE_CORRECTION 属性を使用し ク ロ ッ ク調整を行う こ とができます デフォルトではDUTY_CYCLE_CORRECTION 属性は TRUE に設定され これらの出力は 50 デューティ サイクルに調整されます この属性を FALSE に設定する場合 クロ ッ ク調整は機能せず クロ ッ ク出力のデューティ サイクルは入力クロ ッ ク とほぼ同一になり ますが 完全に CLKIN のデューティ サイクルと一致するこ とは保証されていません

位相シフ ト - クロック周期の分数でクロックを遅延

また DCM ではクロ ッ ク周期の分数分だけ入力クロ ッ クを遅らせるこ とによって 位相をシフ ト させるこ とができます

DCM は 4 つの位相シフ ト タイプをサポート し各タイプを別々に使用するこ と またはほかの位相シフ ト タイプと組み合わせて使用するこ とができます 表 13 に 各クロ ッ ク出力での位相シフ ト機能を示します

1 ほとんどの 12 ク ロ ッ ク周期位相シフ ト出力では50 デューティ サイクル調整を行います 出力のペアの立ち上がりエッジは0degおよび 180deg位相シフ ト した位置またはクロ ッ ク周期の最初および 12 周期の位置にあ り ます

2 0deg(CLK0) 90deg(CLK90) 180deg(CLK180) および 270deg(CLK270) の 14 位相シフ ト出力ではオプシ ョ ンと して 50 デューティ サイ クル調整を行います

3 固定ファイン位相シフ トではすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

4 動的ファイン位相シフ トでは FPGA アプリ ケーシ ョ ン内部のすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

表 12 デューティ サイクルを 50 にするためのクロック出力調整

DCM クロック出力

50 デューティ サイクル出力

CLK0CLK90

DUTY_CYCLE_CORRECTION = TRUE

CLK180CLK270

CLK2XCLK2X180

CLKDV

CLKFXCLKFX180

常に

DLL_FREQUENCY_MODE 属性

LOW HIGH

DUTY_CYCLE_CORRECTION = TRUE 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に CLKDV_DIVIDE が整数値の場合

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 37

R

12 クロック周期位相シフ ト出力12 周期位相シフ ト出力では 位相シフ トのないク ロ ッ ク およびそのクロ ッ クを 12 周期シフ ト させた (180deg位相シフ ト ) ク ロ ッ クが出力されます 12 周期位相シフ ト出力は表 14 に示すよ うにペアで出力されます

表 13 クロック出力の位相シフ ト機能

クロック出力12 クロック周期

14 クロック周期

固定または動的

位相シフ ト

CLK0CLK90CLK180CLK270CLK2XCLK2X180CLKDVCLKFXCLKFX180

表 14 12 クロック周期位相シフ ト出力

出力ペア解説

位相シフ トなし 180deg位相シフ ト

CLK0 CLK180 周波数は CLKIN と同一です デフォルトで 50 デューティ サイクルに調整されDUTY_CYCLE_CORRECTION 属性に制御されます

CLK2X CLK2X180 2 逓倍クロ ッ ク (CLK2XCLK2X180) からの出力です周波数は CLKIN 周波数の 2 倍であ り デューティ サイ クルは常に 50 です

CLKFX CLKFX180 周波数合成回路 (CLKFX CLKFX180) からの出力です 出力周波数は周波数合成の属性によって決定されます デューティ サイ クルは常に 50 です

38 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

12 周期位相シフ ト出力は高速デュアル データ レート (DDR) デザインおよびクロ ッ ク ミ ラーなどのデューティ サイクルが重要となるデザインにとって理想的です 図 27 に示すよ うに12 周期位相シフト出力のペアの 1 つはクロ ッ ク周期の始めに立ち上がり も う 1 つはそのクロ ッ ク周期の半分の地点で正確に立ち上がり ます

12 周期位相シフ ト出力によるデューテ ィ サイクルのずれの削減

DCM のクロ ッ ク出力が 50 デューティ サイクルに調整された場合 180deg位相シフ ト ク ロ ッ クは位相シフ トのないクロ ッ クを反転させたよ うに見えます 低周波数アプリ ケーシ ョ ンでは 基本的にこれが成立します

しかし アプリ ケーシ ョ ンが非常に高い周波数で動作する場合は 各ト ランジスタの立ち上がり時間お

よび立ち下がり時間の差が原因となって発生するデューティ サイ クルのずれが FPGA 内部で問題となり ます つま り 始めはデューティ サイクルが 50 の場合でも ク ロ ッ ク サイクル間で常にクロ ッ クHigh と ク ロ ッ ク Low の間に差が生じます

デュアル データ レート (DDR) クロックの例

図 28 に DCM ク ロ ッ ク出力 CLKx が デュアル データ レート (DDR) 出力フ リ ップフロ ップの 2 つのクロ ッ クを駆動する例を示します DDR ク ロ ッ ク入力の 1 つはクロ ッ ク出力をそのまま使用しますが も う一方の入力は DDR フ リ ップフロ ップ内部でクロ ッ クを反転させます DCM からの CLKx 出力のデューティ サイクルは 50 ですが FPGA のクロ ッ ク ネッ ト ワークを伝搬する間にデューティサイ クルにずれが発生します こ こで示す例では このデューティ サイクルのずれによって ク ロ ッ クHigh 時間が短縮され ク ロ ッ ク Low 時間が長くな り ます その結果と してC1 ク ロ ッ ク入力はクロ ック周期の半分の時点よ り もわずかに前にト リガします 低周波数の場合 このずれは無視して問題あ りませんが 高性能の DDR ベースのシステムでは 正確なクロ ッ ク設計が必要です

図 27 12 周期位相シフ ト出力

180˚0˚

frac12T 1T

CLKx

CLKx180

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)

x462_27_061903

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 39

R

図 29 に 図 28 に若干の修正を加えた回路例を示します この例では DCM からの位相シフ ト していない出力および 180deg位相シフ ト した出力の両方が DDR 出力フ リ ップフ ロ ップに入力されますCLKx ク ロ ッ ク信号は ク ロ ッ ク周波数の開始時点で正確に DDR フ リ ップフロ ップの C0 入力を ト リガし CLKx180 ク ロ ッ ク信号はクロ ッ ク周波数の半分の時点で正確に C1 入力を ト リガします この方法を使用する場合には 追加のグローバル バッファおよびグローバル ク ロ ッ ク ラ インが必要になりますが 約 300 ps (この値は概算です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください) までのデューティ サイクルを削減できます

図 28 デュアル データ レート (DDR) 出力におけるデューティ サイクルのずれ

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx at Flip-Flop(with duty-cycle distortion)

Duty-cycle distortion

Factor in distortionwhen using a singleinverted clock

CLKx(50 duty cycle)

BUFGCLKx

DCM

CLKIN

x462_28_061903

40 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

表 15 に DDR 出力フ リ ップフロ ップおよび LVDS 出力を使用して測定したデューティ サイクルのずれの値を示します この出力タイプ以外では 立ち上がり時間および立ち下がり時間に差が生じるこ とによって さ らにずれが大き くなる可能性があ り ます このずれは IBIS を使用してシ ミ ュレーシ ョ ンを実行し 検証できます

14 位相シフ ト出力図 30 および表 17 に示すよ うに 14 位相シフ ト出力は CLKIN 入力を 14 周期分シフ ト させたものです 14 位相シフ ト出力には CLKFB 入力へ戻るフ ィードバッ ク パスが必要であるため CLK0 出力の位相は CLKIN 入力の立ち上がりエッジと一致するよ うに調整されます CLK90 出力は CLKIN 入力を90deg位相シフ ト させて生成したものであ り ほかの位相シフ ト出力も同様に生成されます

図 29 12 周期位相シフ ト出力を使用したデューテ ィ サイクルのずれの削減

CLKx at Flip-Flop(with duty-cycle distortion)

180 ˚Phase Shift

CLKx180 at Flip-Flop(with duty-cycle distortion)

CLKx(50 duty cycle)

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKIN

CLKx180

BUFG

BUFG

x462_29_061903

表 15 デューティ サイクルのずれのパラメータ

パラ メータ 説明 概算値

TDCD_CLK0 IO ブロ ッ クにある DDR エレ メン トに対して ク ロ ッ ク立ち下がりエッジでローカル反転したクロ ッ クを入力する場合のデューティ サイクルのずれです 図 28を参照してください

~400 ps

TDCD_CLK180 IO ブロ ッ クにある DDR エレ メン トに対して DCM CLKx180 をクロ ッ ク入力する場合のデューティ サイクルのずれです 図 29を参照してください

~60 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 41

R

DLL 周波数モードによる出力の有効性

14 位相シフ ト出力が有効であるかは DLL_FREQUENCY_MODE 属性で制御される DLL の周波数モードによって決定されます 表 16 に示すよ うに 低周波数モード (DLL_FREQUENCY_MODE=LOW) ではすべての 14 位相シフ ト出力が有効ですが高周波数モードでも有効な出力は CLK0 および CLK180 のみです

5050 デューティ サイクル調整オプシ ョ ン

オプシ ョ ン と して DUTY_CYCLE_CORRECT 属性を使用し 14 位相シフ ト出力を一括して 50デューテ ィ サイ クルに調整できます この属性が TRUE の場合 (デフォル ト ) 4 つの出力すべてのデューティ サイ クルが 50 にな り FALSE の場合は 各出力のデューティ サイ クルと CLKIN 入力のデューティ サイクルは一致しません 詳細は 「ク ロ ッ ク調整」 を参照してください

4 つの位相 遅延クロックエッジ 位相パルス

表 17 に示すよ うに 14 位相シフ ト出力は ぞれぞれ 1 つ前のパルスから 14 周期遅れた立ち上がりエッジで出力されます これらの出力は メモ リ インターフェイスおよびペリ フェラル制御などのアプリ ケーシ ョ ンにおけるタイ ミ ングを柔軟にします

また デューテ ィ サイ クル修正オプシ ョ ンがイネーブルの場合 (DUTY_CYCLE_CORRECTION =TRUE の場合) これらの出力を次のよ うに考えるこ とができますこれらの出力には 14 周期の間隔で

図 30 CLKIN 入力 の 14 周期位相シフ ト出力 (デューティ サイクル修正イネーブルの場合)

表 16 DLL 周波数モードによる 14 位相シフ ト出力の有効性

出力DLL_FREQUENCY_MODE

LOW HIGH

CLK0

CLK90

CLK180

CLK270

270˚180˚90˚0˚

frac14T frac12 T frac34T 1T

CLK0

CLK90

CLK180

CLK270

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)x462_30_061903

42 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

立ち下がりエッジがあ り ます (表 17 を参照) 同様に各出力には周期幅が同一である High パルス時間と Low パルス時間があるこ とになり たとえば 図 30 に示す CLK90 の High パルス部分は CLK0 クロ ッ ク周期の中央に位置しています

ファイン位相シフ ト

DCM では ファ イン位相シフ ト を使用するこ とによって ク ロ ッ ク スキューを制御するこ と もできます ファ イン位相調整はすべての DCM 出力に対して同時に機能します この位相調整にはDCM のDLL 機能ユニッ ト を使用するため CLKFB 入力を通るクロ ッ ク フ ィードバッ クが必要です

物理的には CLKIN と CLKFB の立ち上がりエッジ間の位相関係を調整するこ とによってシフ トが行われますが すべての DCM 出力が CLKIN 入力に関連して位相シフ ト されます

デフォルトでは ファ イン位相シフ トはディ スエーブル (CLKOUT_PHASE_SHIFT=NONE) です つま り ク ロ ッ ク入力は CLKIN で位相調整されています この場合 入力クロ ッ ク CLKIN と フ ィードバッ ク ク ロ ッ ク間におおよそのフ ィードバッ ク地点で計測されるスキューはあ り ません (「確実なソースからのフ ィードバッ ク」 を参照して ください) 図 31 に示すよ うに ファ イン位相シフ トがイネーブルの場合 出力クロ ッ クのエッジは位相シフ ト され CLKIN 入力の前または後になり ます

次にファイン位相シフ トの 2 つのモードについて説明します一般に高速データ通信アプリ ケーシ ョ ンでは 両方のモードが使用されます 「ソース同期」 を参照してください

1 固定ファイン位相シフ ト モードは位相シフ ト値を設計段階で設定します 位相シフ ト値はFPGAコンフ ィギュレーシ ョ ン実行中に取り込まれ アプリ ケーシ ョ ンで変更するこ とはできません

2 動的ファイン位相シフ トモードには 初期位相シフ ト値があ り 固定ファイン位相シフ トの場合と同様に この値は FPGA コンフ ィギュレーシ ョ ン中に取り込まれますが DCM の LOCKED 出力が High になった後であれば アプリ ケーシ ョ ンで変更可能です

固定ファイン位相シフ ト

固定ファ イン位相シフ ト モードでは 設計段階で指定されたシフ ト値が FPGA コンフ ィギュレーシ ョン実行中に設定され この値はアプリ ケーシ ョ ンで変更できません

このモードは 次の 2 つの属性によって制御されます CLKOUT_PHASE_SHIFT 属性が FIXED に設定し PHASE_SHIFT 属性が位相シフ ト量を制御します 図 31 に示すよ うに PHASE_SHIFT = 0 の場合は 出力ク ロ ッ クおよび CLKIN 入力の位相が一致する よ う 調整され ク ロ ッ ク出力はPHASE_SHIFT が負の整数の場合に CLKIN の前に位相シフ ト し正の整数の場合には CLKIN の後に位相シフ ト します

固定ファイン位相シフ ト範囲

PHASE_SHIFT 属性は常に整数値であ り その範囲は -255 ~ +255 ですが 実際の範囲は使用されるCLKIN の周波数によって異なり ます

表 17 14 位相シフ ト出力とそれらの特性 (DUTY_CYCLE_CORRECTION=TRUE)

DCM 出力 位相シフ トクロック周期

に対する遅延

立ち上がり

エッジ

立ち下がり

エッジ解説

CLK0 0deg 0 0 frac12T スキュー調整された入力クロ ッ ク 位相シフ ト なし

CLK90 90deg frac14T frac14T frac34T High パルス (frac34T 周期幅 周期の中央)

CLK180 180deg frac12T frac12T 0T CLK0 の反転 (立ち上がりエッジは周期の中央)

CLK270 270deg frac34T frac34T frac14T Low パルス (frac34T 周期幅 周期の中央)

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 43

R

PHASE_SHIFT 属性の範囲は 次の 2 つの値によって決定されます

1 1 つはナノセカンドで測定される CLKIN 入力の周期 である TCLKIN 値です

2 も う 1 つは Spartan-3 デバイスおよびスピード グレードによって指定される FINE_SHIFT_RANGE の値です この値は 『Spartan-3 データ シート 』 モジュール 3 に記載されています FINE_SHIFT_RANGE は 位相シフ ト遅延ラインにおける総遅延であ り 回路内の遅延タップ数の関数です 実際の遅延ラインは FINE_SHIFT_RANGE よ り長い場合があ り ますがFINE_SHIFT_RANGE までの値が保証されています

これらの値を 等式 1 に適用しSHIFT_DELAY_RATIO を算出します PHASE_SHIFT 属性の範囲はこの算出結果と 1 との不等式関係によって異なり ます

等式 1

SHIFT_DELAY_RATIO lt 1 の場合

ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り長い場合はSHIFT_DELAY_RATIO lt 1 であ り最大ファイン位相シフ ト範囲は FINE_SHIFT_RANGE によって決定されます SHIFT_DELAY_RATIO lt 1 の場合 PHASE_SHIFT 範囲は 等式 2 から求めるこ とができます

等式 2

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 PHASE_SHIFT 値は plusmn191 とな り ます

したがって SHIFT_DELAY_RATIO lt 1 の場合の位相シフ ト値は 等式 3 とな り ますPHASE_SHIFT = 1 と して ください

等式 3

図 31 固定ファイン位相シフ ト

0

Fixed Phase Shift- Limit

Fixed Phase Shift+ Limit

Clock Outputs

PHASE_SHIFT CLKIN DCM

CLKIN

x462_31_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

SHIFT_DELAY_RATIO FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------=

PHASE_SHIFTLIMITS plusmn INTEGER 256 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞=

TPhaseShiftPHASE_SHIFT

PHASE_SHIFTLIMITS----------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

44 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

SHIFT_DELAY_RATIO ge 1 の場合

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 1 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 4

したがって SHIFT_DELAY_RATIO ge 1 の場合の位相シフ ト値は 等式 5 とな り ます PHASE_SHIFT = 1 と して ください

等式 5

最小位相シフ ト

最小位相シフ トの大きさは 次の値の大きな方によって決定されます

1 『Spartan-3 データ シート 』 に DCM_TAP_MIN 仕様と して記載されている最小遅延ライン タ ップ値 (概算値は ~30ps)

2 ク ロ ッ ク周期の 1256

その他の考察点

固定位相シフ トモードでは 動的位相シフ ト制御入力をグランドに接続する必要があ り ます この接続

は DCM Wizard では自動的に行われます

DCM Wizard

固定位相シフ トモードを使用する場合は図 32 に示すよ うにDCM Wizard の [General Setup] ダイアログ ウ ィンド ウに表示される Phase Shift で [Fixed] をク リ ッ ク して ください これによって CLKOUT_PHASE_SHIFT 属性が FIXED に設定されます

[Phase Shift Value] を入力しますが この値は 上述した範囲内にある整数でなければなり ません これによってPHASE_SHIFT 属性値が設定されます DCM Wizard は位相シフ ト値が指定範囲内であるかを確認します

動的ファイン位相シフ ト

動的ファ イン位相シフ ト モードでは 固定ファ イン位相シフ ト モード と同様に 初期スキューまたは初期位相シフ トがコンフ ィギュレーシ ョ ン中に PHASE_SHIFT 属性によって制御されます ただし動的シフ ト モードの場合 DCM の LOCKED 入力が High になった後に 動的ファ イン位相シフ ト制御入力 PSEN PSCLK および PSINCDEC を使用して FPGA アプリ ケーシ ョ ンで現在の位相シフ ト値を修正できます

動作

図 33 に示すよ うに位相シフ ト制御入力を使用し現在の位相シフ ト値を修正します すべての動的位相シフ トは PSCLK の立ち上がりエッジに同期して行われ 有効な位相シフ トは PSEN イネーブル入

図 32 固定ファイン位相モードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

Fixed

x462_32_061803

PHASE_SHIFTLIMITS 255plusmn=

TPhaseShiftPHASE_SHIFT

256--------------------------------------------⎝ ⎠

⎛ ⎞ TCLKINbull=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 45

R

力を正確に 1 PSCLK ク ロ ッ ク周期間アサートするこ とによって開始します PSEN を 1 ク ロ ッ ク周期よ り長くアサートする場合には 適切に位相シフ ト を行う こ とができない可能性があ り ます

PSINCDEC の値は制御入力の増減を指定し 位相シフ トの方向を決定します PSINCDEC を High に設定する と 動的位相シフ ト値が増加し Low に設定する とその値は減少します

実際の位相シフ ト が行われる タ イ ミ ングはさ まざまであ り DCM で PSCLK ク ロ ッ クの 1 周期間PSDONE 出力が High にアサート された時に完了します PSEN がイネーブルであ り PSDONE がアサート されるまでの間 DCM 出力クロ ッ クは 初期位相シフ ト値から新しい位相シフ ト値まで 1 ビットずつスライ ド します シフ トが行われている間 DCM は入力クロ ッ クに対してロ ッ ク状態 つま りLOCKED 出力がアサート された状態を維持します

PSDONE がアサート されたと き またはアサート後に 次の位相シフ ト処理が開始されます

動的ファ イン位相シフ ト モードを使用する場合は CLKOUT_PHASE_SHIFT 属性を VARIABLE に設定し FPGA コンフ ィギュレーシ ョ ン後に PHASE_SHIFT 属性値によって 位相シフ トの初期位置を設定できます DCM の LOCKED 出力が High になる と FPGA アプリ ケーシ ョ ンでは DCM 出力クロ ッ クにおけるスキュー または位相シフ ト を動的に修正できます また DCM がリセッ ト された場合は PHASE_SHIFT 値は初期設定値に戻り ます

図 33 動的ファイン位相シフ ト制御インターフェイス

PSINCDEC

PSEN

PSCLK

PSDONE

0 = 1 =

STATUS[0](

)

PSDONE

If phase shift incremented ordecremented to limit valueSTATUS[0] stays High until newoperation shifts away from limit

x462_33_062403

46 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

動的ファイン位相シフ ト範囲

PHASE_SHIFT と同様に 動的位相シフ トに対しても位相シフ ト範囲の制限があ り ます 図 34 を参照して ください また その範囲は SHIFT_DELAY_RATIO 等式で示したよ うにFINE_SHIFT_RANGE 対入力クロ ッ ク周期の比率によって決定されます

SHIFT_DELAY_RATIO lt 2

指定された FINE_SHIFT_RANGE 値がクロ ッ ク周期の 2 倍よ り小さい場合 (SHIFT_DELAY_RATIOlt 2)最大動的位相シフ ト値は最大遅延タップ値である FINE_SHIFT_RANGE によって決定されますSHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト範囲は 等式 6 によって決定されます

等式 6

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 動的位相シフ ト値の範囲は plusmn96 とな り ます

図 34 動的位相シフ ト制御

Clock Outputs

PHASE_SHIFT DCM LOCKED

RESET

CLKIN

0Fixed Phase Shift

- LimitFixed Phase Shift+ Limit

PSEN

PSINCDEC

PSCLK

PSDONE

STATUS[0]

0

Dynamic Phase Shift- Limit

Dynamic Phase Shift+ Limit

Increment PhaseShift Value

Decrement PhaseShift Value

Enable

IncrementDecrement

Phase Shift Clock

Phase Shift Done

Variable PhaseShift Overflow

DCM LOCKEDFPGA

DCM Variable PhaseShift Control

x462_34_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

DynamicPhaseShiftLIMITS INTEGER 128 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞plusmn=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 47

R

したがって SHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト値は 等式 7 とな り ます PHASE_SHIFT = 1 と して ください

等式 7

SHIFT_DELAY_RATIO ge 2

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 2 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 8

したがって SHIFT_DELAY_RATIO ge 2 の場合の位相シフ ト値は 等式 9 とな り ますPHASE_SHIFT = 1 と して ください

等式 9

制御

45ページの図 33 46ページの図 34 に示すよ うにDCM の動的位相シフ ト制御信号によって FPGAアプリ ケーシ ョ ンは現在の CLKIN 入力と DCM ク ロ ッ ク出力間の関係を修正できます 表 18 に 制御入力 現在の位相と次の位相の関係 遅延タ ップへの影響と制御出力の関係を示します

TPhaseShiftDynamicPhaseShift

DynamicPhaseShiftLIMITS-----------------------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

DynamicPhaseShiftLIMITS 255plusmn=

TPhaseShiftDynamicPhaseShift

256--------------------------------------------------------- TCLKINbull=

表 18 動的位相シフ ト制御 (内部反転がない場合)

PSENPSINC-

DECPSCLK 現在の

位相シフ ト

次の

位相シフ ト遅延ライン PSDONE

STATUS[0](オーバーフロー )

動作

0 X X X 変更なし 変更なし 動的位相シフ トはディ スエーブル

1 0 uarr gt -制限 現在の位相

シフ ト -1現在の位相

シフ ト -11 0 位相シフ トおよびシフ ト ポインタ

のデク リ メン ト

1 0 uarr le -制限およびgt -255

現在の位相

シフ ト -1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがデク

リ メン ト

1 0 uarr -255 -255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

1 1 uarr lt +制限 現在の位相

シフ ト +1現在の位相

シフ ト +11 0 位相シフ トおよびシフ ト ポインタ

のインク リ メ ン ト

1 1 uarr ge+制限およびlt +255

現在の位相

シフ ト +1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがイン

ク リ メ ン ト

1 1 uarr +255 +255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

メモ X = 考慮する必要があ り ません = 不確定であ り 現在のアプリ ケーシ ョ ンの状態によって決定されます1 = PSDONE が 1 PSCLK 周期間 High にアサート されます-制限 = 遅延ラインの最小位置+制限 = 遅延ラインの最大位置PSEN を 1 PSCLK サイ クル間アサート します

48 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

PSEN が Low の場合 動的位相シフ トはディ スエーブルであ り その他のすべての入力は無視されます したがって すべての現在のシフ ト値および遅延ライン位置に変更はあ り ません

遅延ラインがその制限 (デク リ メン トで - 制限 または -255 インク リ メン トで + 制限 または +255)に到っていない場合 FPGA アプリ ケーシ ョ ンでは PSEN を High にアサートする とによって現在の位相シフ ト値を変更でき PSCLK の次の立ち上がりエッジの前に PSINCDEC に対して適切なインク リメン ト デク リ メン ト値を設定できます 位相シフ ト値は指定されたよ うにインク リ メン ト またはデクリ メン ト します 位相シフ トの最後に PSDONE が PSCLK の 1 周期間 High にアサート され 位相シフ ト が完了したこ と を示し ます また 位相シフ ト のオーバーフロー状態が発生していないため

STATUS[0] は Low を維持します

DCM が +255 を超える値にインク リ メン ト された場合 または -255 よ り小さな値にデク リ メン ト された場合には遅延ラインの位置はその限界である +255 または -255 から変更されず位相は変更されません STATUS[0] は High にな り 動的位相シフ トがオーバーフローである こ とを示します こ こで 新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0]が Low に戻り ます

位相シフ トが +255 または -255 には達していませんが 遅延ライン範囲 (表 18 では + 制限および - 制限)を超えている場合には位相は変更されませんがSTATUS[0] が再び High になり ます STATUS[0]出力は 遅延タ ップが遅延ラインの限界に到達したと きを示します ただし FPGA アプリ ケーシ ョ ンでは等式 8 または等式 6 を使用して制限値が算出され求められた遅延ラインの制限値は保証された値とな り ます 特定のデバイスでは 処理電圧または処理温度によって 遅延ラインが長くなる場合があ り ますが これの値はデバイスによって異なるため 保証されていません 遅延ラインの位置ではなく 位相シフ ト値は +255 または -255 に到達するまでインク リ メン ト またはデク リ メン ト を続けます新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0] がLow に戻り ます こ こで位相シフ ト値は遅延ラインにおいて有効な遅延値に対応する値に戻るよ うにインク リ メン ト またはデク リ メン ト されます

DCM Wizard

動的位相シフ トは図 35 に示す DCM Wizard の [General Setup] ダイアログ ウ ィンド ウで設定します動的ファ イン位相シフ ト を有効にするためには 図 35 に示すよ うに [Variable] を選択します 次に初期の [Phase Shift Value] を入力します 初期値は前述した固定ファイン位相シフ トモードの場合と同様に動作します

図 36 に示すよ うに[Variable] モードを選択するこ とによって動的位相シフ ト制御信号である PSENPSINCDEC PSCLK および PSDONE がイネーブルにな り ます これらの制御信号を FPGA アプ リケーシ ョ ンで使用するために入力および出力チェッ ク ボッ クスをオンにして ください またSTATUS

図 35 DCM Wizard での動的ファイン位相シフ トモードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

[Variable]

x462_35_061903

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 49

R

出力のボッ クスをオンにし STATUS[0] 信号をイネーブルにします STATUS[0] は 位相シフ ト値がその最大または最小制限値に達したと きを示します

アプリケーシ ョ ン例

動的位相調整を行う場合の動的位相シフ ト機能については 次の リ ンクからアプ リ ケーシ ョ ン ノー トXAPP268 を参照してください

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

クロック逓倍クロック分周周波数合成

DCM アプリ ケーシ ョ ンのもっと も使用される機能の 1 つと して 新しいク ロ ッ ク周波数を柔軟に生成できる機能があ り ます 次に説明するよ うにSpartan-3 DCM は 3 つの独立した周波数合成機能を持ちます図 37 および表 19 を参照してください アプリ ケーシ ョ ンでは これらの機能の 1 つを使用する場合 またはすべてを同時に使用する場合があ り ます 次に 各機能の詳細について説明します

1 2 逓倍クロ ッ ク (CLK2X CLK2X180) は 入力クロ ッ クの周波数を 2 倍にします

2 ク ロ ッ ク分周 (CLKDV) は 入力クロ ッ ク周波数を一定の分周値を使用して分周します

3 周波数合成回路 (CLKFX CLKFX180) は 入力クロ ッ ク周波数から新しい周波数を生成します

図 36 DCM Wizard での動的位相シフ ト制御出力の選択

LOCKEDSTATUS

PSDONE

PSENPSINCDECPSCLK

STATUS[0] STATUS

x462_36_061903

図 37 クロック合成オプシ ョ ン

CLKIN CLK0

CLKFB

DCM

CLKFX

CLKFX180

Frequency Synthesizer

F = FCLKIN CLKFX_MULTIPLY

CLKFX_DIVIDE

CLKDV

Clock Divider

F =FCLKIN

CLKDV_DIVIDE

CLK2X

CLK2X180

F = 2 FCLKIN Clock Doubler

ClockDistribution

Delay

CLK0or

CLK2X

Clock Feedback LoopCLK0 CLK2X CLK2X180 CLKDV CLKFB

CLK0

CLKFXCLKFX180

50

DLL_FREQUENCY_MODE=LOW50

50

Deskewed ClockF = FCLKIN

DUTY_CYCLE_CORRECTION=TRUE50

x462_37_062203

50 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

CLKDV 以外のすべての周波数合成出力は 5050 デューティ サイ クルを持ちます 表 23 に示すよ うに高周波数で分周値が整数の場合通常 CLKDV は 50 のデューティ サイクルを持ちます また 2逓倍クロ ッ ク (CLK2X CLK2X180) 回路は高周波数では使用できません

CLKFX および CLKFX180 以外のすべての DCM ク ロ ッ ク出力はDCM の 遅延ロッ ク ループ (DLL)ユニッ トで生成され CLKFB ピンへのクロ ッ ク フ ィードバッ クが必要になり ます DCM の デジタル周波数合成 (DFS) ユニッ トはCLKFX および CLKFX180 ク ロ ッ ク出力を生成します アプリ ケーシ ョンで CLKFX 出力または CLKFX180 出力のみが使用される場合にはフ ィードバッ ク パスを削除できDCM の動作範囲が広くな り ます 周波数合成回路は DCM 内部に CLKIN に基づいたフ ィードバック パスを持ちます

ク ロ ッ ク フ ィードバッ クを使用した場合 すべての出力クロ ッ クの位相が調整されます また 出力のいくつかは分周クロ ッ クであるためすべての DCM 出力がクロ ッ ク エッジで一致するよ うに調整されるこ とはまれであるこ とがわかり ます たとえば CLKDV 出力は CLKDV_DIVID の各サイクルごとに CLKIN および CLK0 に対して調整されCLK2X 出力は CLK0 のサイクル 1 つおきに この信号に対して調整されます またCLKFX 出力はCLKIN の CLKFX_DIVIDE サイクルごとおよび CLKFBの CLKFX_MULTIPLY サイクルごとに CLKIN に位相調整されます

周波数合成アプリケーシ ョ ン

周波数合成を使用するアプリ ケーシ ョ ンは ほぼ無制限に考えられますが 次にいくつかのアプリ ケー

シ ョ ン例を示します

bull ボード上で利用可能なクロ ッ クを使用している FPGA および外部ロジッ クに対して完全に新しいクロ ッ ク周波数を生成する

bull 低速の外部クロ ッ ク ソースから高周波数の内部クロ ッ クを生成し システムの EMI を低減する

bull 図 38 に示すよ うに高速シ リ アルデータ ク ロ ッ クを分周しFPGA 内部でデータの並行処理を行う

bull 同様に 図 38 に示すよ うに 高速シ リアル データ フォーマッ トに変換する前に 並行で動作するデータ ク ロ ッ クの周波数を逓倍する

bull 適切な速度の機能をインプリ メン トする場合に 入力クロ ッ クを逓倍し 内部ロジッ クをクロ ッ ク

アップするこ とによって 使用する リ ソースを削減する

表 19 DCM 周波数合成オプシ ョ ン

機能 DCM 出力 周波数DCM の機能ユニッ ト

フ ィードバック50 の

デューティ サイクル

スキュー調整

クロ ッ ク

CLK0 DLL 必要 DUTY_CYCLE_CORRECTION = TRUE の場合に 50 です

2 逓倍クロ ッ ク CLK2XCLK2X180

DLL 必要 常に 50 です

分周クロ ッ ク CLKDV DLL 必要 高周波数モードで分周値が

整数以外の場合を除いて常

に 50 です

周波数合成 CLKFXCLKFX180

DFS オプシ ョ ン フ ィードバッ クに

よって ク ロ ッ ク

入力周波数範囲は

広くなるこ とは

あ り ません

常に 50 です

FCLKIN

2 FCLKINbull

FCLKINCLKDV_DIVIDE---------------------------------------------------

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE------------------------------------------------------------⎝ ⎠

⎛ ⎞bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 51

R

入力クロックおよび出力クロックの周波数条件

周波数合成を行う場合の入力クロ ッ クおよび出力クロ ッ クの周波数条件は DCM で使用されるク ロ ック出力によって決定されます たとえば CLKFX 出力および CLKFX180 出力は DCM のデジタル周波数合成 (DFS) ユニッ トのみを使用し その他のすべての出力は遅延ロッ ク ループ (DLL) ユニッ ト を使用します DLL における周波数の制限は DFS よ り も厳しいため DFS のみを使用する場合の方が周波数の動作範囲は広くな り ますDFS および DLL の両方を使用する場合アプリ ケーシ ョ ンは DLLの周波数範囲によって制限されます

また DLL および DFS は 低周波数モード と高周波数モードの両方で動作可能であるため モード設定によっても有効な周波数範囲が変動します

DCM デザインが有効であるためには CLKIN 周波数が 『Spartan-3 データ シート 』 モジュール 3 に記載されている動作範囲内である必要があ り 使用されているすべての出力クロ ッ クの周波数もそれぞれ

指定された範囲内でなければなり ません

図 39 に クロ ッ ク入力およびクロ ッ ク出力と対応する周波数範囲を示します ただし こ こで示すのは低周波数モードの場合のみです データ シートに記載されている仕様名は影付きのボッ クス内に示しています また 表 20 に DCM アプリ ケーシ ョ ンの例および周波数条件を示します

図 38 周波数合成アプリケーシ ョ ンの一般的な例

DCM DCM

F

n-bitswide

Fn

F F m

m-bitswide

F F

Overclockedtime-shared logic

DCM

F

F F x

High-speed serial datadown-converted toslower parallel data

Slower parallel dataup-converted to high-speed serial data

FPGA

x462_38_070903

52 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

2 逓倍クロック (CLK2X CLK2X180)表 21 に示すよ うに 2 逓倍クロ ッ ク回路によって CLKIN 入力の周波数は 2 倍になり ます この 2 逓倍クロ ッ ク回路は DLL 機能ユニッ トの一部であ り CLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します 2 逓倍クロ ッ ク回路からの出力は CLK2X および CLK2X180 であ り これらの出力のデューテ ィ サイ クルは常に 50 です また これらの周波数は同一ですがCLK2X180 は CLK2X を 180deg位相シフ ト したものであ り 基本的に CLK2X 出力を反転したものになり ます 高性能のデュアル データ レート (DDR) アプリ ケーシ ョ ンまたはクロ ッ ク転送アプリ ケーシ ョ ンでは 両方の位相を使用するこ とが不可欠です

CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE 属性が LOW に設定されている場合のみに使用できます アプリ ケーシ ョ ンにおける必要性に応じてオプシ ョ ンの 2 分周機能を使用しCLKIN 入力周波数を低下させてください ( 「アドバンス ド オプシ ョ ン」 を参照)

図 39 入力クロックおよび出力クロックの周波数条件 (低周波数モード )

DFS(CLKIN_FREQ_FX_MINMAX)

DLL (Low-Frequency Mode)(CLKIN_FREQ_DLL_LF_MINMAX)

~1 MHz ~326 MHz

~24 MHz ~180 MHzFCLKIN

DFS (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~24 MHz ~200 MHz

DLL CLKDV (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~15 MHz ~120 MHz

DLL CLK2X (Low-Frequency Mode)(CLKOUT_FREQ_2X_LF_MINMAX)

~48 MHz ~326 MHz

FCLKFXFCLKFX180

FCLKDV

FCLK2XFCLK2X180

x462_39_070903

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 20 DCM 周波数条件の例

入力周波数 出力周波数 解説

12 MHz 128 MHz 1 つの DCM のみを使用する場合には条件を満たしません FCLKIN は DFS の条件を満たす範囲内ですが FCLKFX は最低 24MHz 出力周波数が必要です

12 MHz 324 MHz DFS を使用する DCM で条件を満たします CLKFX_MULTIPLY=27 と設定してくださいFCLKFX は DFS 出力周波数範囲内です

25 MHz 25 MHz30 MHz

DFS および DLL を使用する DCM で条件を満たします CLKDV 出力を 25MHz 信号に使用しCLKDV_DIVIDE=10 と設定してください また CLKFX 出力を 30MHz 信号に使用しCLKFX_MULTIPLY=6 および CLKFX_DIVIDE=5 と設定してください すべての入力周波数および出力周波数は適切な範囲内です

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 53

R

表 21 2 逓倍クロック回路のまとめ

DCM 出力 CLK2XCLK2X180

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク 必要です

50 デューティ サイ クル出力 はい

制御属性

DLL_FREQUENCY_MODE CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE = LOW の場合にのみ有効です

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます 2 逓倍クロ ッ クの出力は 高周波数モードでは使用できませんが ほかの DCM ク ロ ッ ク出力に必要となる場合があ り ます

CLK2XCLK2X180

CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

2 FCLKINbull

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (~24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (~48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~326 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_2X_LF_MIN (48 MHz)

CLKOUT_FREQ_2X_LF_MAX (~325 MHz)

HIGH 設定不可 設定不可

54 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

クロック分周 (CLKDV)表 22 に概要を示すクロ ッ ク分周ユニッ トは デザインに設定した CLKDV_DIVIDE 属性の値を使用し CLKIN 入力の周波数を分周します ク ロ ッ ク分周ユニッ ト は DLL 機能ユニッ ト の一部であ りCLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します

表 22 クロック分周回路のまとめ

DCM 出力 CLKDV

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク DCM からの CLK0 出力または CLK2X 出力を使用する場合に必要です

50 デューティ サイ クル出力 はい ただし DLL_FREQUENCY_MODE=HIGH および CLKDV_DIVIDE が整数値ではない場合を除きます

制御属性

DLL_FREQUENCY_MODE CLKDV は両モードで使用できます 分周値によっては 出力のデューティ サイ クルに影響を与える場合があ り ます ( 「CLKDV ク ロ ッ ク調整」 を参照してください)

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 有効な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 であ り 整数値の場合 よ り短時間で DLL はロッ ク状態になり ます また 整数値を設定する場合には出力ジッ タが低くな り ます

周波数制約

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

CLKDV CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

FCLKINCLKDV_DIVIDE--------------------------------------------------

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~325 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_DV_LF_MIN (15 MHz)

CLKOUT_FREQ_DV_LF_MAX (~120 MHz)

HIGH CLKOUT_FREQ_DV_HF_MIN (30 MHz)

CLKOUT_FREQ_DV_HF_MAX (~240 MHz)

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 55

R

CLKDV クロック調整

DLL_FREQUENCY_MODE 属性が High であ りCLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 になり ます 表 23 に CLKDV のデューティ サイクルを示します Spartan-3 DCM では CLKIN のデューティ サイクルが 6040 (または 4060) 以上である必要があ り高周波数モードの場合に 15 で分周された CLKDV 出力は次にカスケード接続された DCM へクロ ッ ク入力するこ とはできません

CLKDV のジッ タは 周波数モードおよび属性値が整数か 整数ではないかによって決定されます

CLKDV_DIVIDE 属性に整数値を設定するこ とによって 出力ジッ タが半分になり DLL がロ ッ ク状態になるために要する時間も短縮されます

DCM Wizard

ク ロ ッ ク分周は DCM Wizard の[General Setup]ウ ィ ン ド ウで設定し ます 図 40a に示すよ う にCLKDV 出力のチェッ ク ボッ クスをオンにし 次に図 40b に示すよ うに ド ロ ップ ダウン リ ス トから[Divide by Value] を選択します

表 23 CLKDV デューティ サイクル (DLL_FREQUENCY_MODE=HIGH の場合)

CLKDV_DIVIDE 属性 デューティ サイクル High 時間総サイクル

整数 50000 12

15 33333 13

25 40000 25

35 42857 37

45 44444 49

55 45454 511

65 46154 613

75 46667 715

表 24 CLKDV 出力ジッ タ

CLKDV_DIVIDE CLKDV 出力周期ジッ タ

整数値 CLKOUT_PER_JITT_DV1 (plusmn~150 ps)

整数以外の値 CLKOUT_PER_JITT_DV2 (plusmn~300 ps)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

a CLKDV 出力のチェ ック ボックスをオン b ドロップ ダウン リス トから [Divide by Value を選択]

図 40 DCM Wizard での分周クロック設定

CLKDV

x462_40a_0619032

Divide By Value

x462_40b_061903

56 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

周波数合成回路 (CLKFX CLKFX180)周波数合成回路を使用するこ とによって 入力周波数の逓倍 分周 またはその両方をもっと も柔軟に

行う こ とができます 表 25 に示すよ うに 2 つの周波数合成出力は CLKFX および CLKFX180 ですCLKFX180 出力は CLKFX と同一の周波数を持ちますがCLKFX を 180degまたは 12 ク ロ ッ ク周期位相シフ ト させた ものです これらの周波数合成出力のデューテ ィ サイ クルは 50 であ るためCLKFX180 は CLKFX の反転クロ ッ クのよ うに見えます

表 25 にある等式が示すよ うに設計段階で 2 つの属性を使用し合成出力周波数を制御します CLKINク ロ ッ ク入力は CLKFX_MULTIPLY が分子 CLKDV_DIVIDE が分母である比率を使用して逓倍されます たとえば 75MHz CLKIN 入力を使用して 155MHz の出力を生成するためには 周波数合成回路では 3115 の比率で CLKIN を逓倍します これは CLKIN を始めに 31 倍し 次に 15 で割ることではあ り ませんCLKIN を 31 倍するこ とによって出力周波数は2325GHz とな りSpartan-3 DCMの周波数範囲を越えるこ とにな り ます

68 を 34 と約分するよ うに 逓倍値および分周値はもっと も簡潔な値にする必要があ り ます このことによって ロ ッ クするために必要な時間が短縮します

周波数合成には 常にク ロ ッ ク フ ィードバッ クが必要ですが DFS には CLKIN を基準と した内部フ ィードバッ ク ループがあるため DLL を使用せずに DFS を使用する場合には CLKFB に別のループは必要あ り ません

また CLKFB 出力は CLKIN の CLKFX_DIVIDE サイ クルごと および CLKFB の CLKFX_MULTIPLY サイクルごとに CLKIN に対して位相調整されます たとえばCLKFX_MULTIPLY = 3 であ りCLKFX_DIVIDE = 5 の場合CLKFX 出力の位相は CLKIN の各 5 サイクルごと および CLKFB の 3 サイクルごとに CLKIN 入力に対して位相調整されます DCM で LOCKED 出力がアサート される と DFS は CLKIN 入力の立ち上がりエッジごとに再同期し ほぼ完璧に位相調整されます

表 25 周波数合成回路のまとめ

DCM 出力 CLKFX

CLKFX180 (CLKFX を 180deg位相シフ ト した場合と同一)

出力周波数

DCM の機能ユニッ ト デジタル周波数合成 (DFS)

フ ィードバッ ク CLKIN を基準にして内部フ ィードバッ クを使用するため 必要あ り ません 遅延ロッ ク ループ (DLL) を使用する場合は オプシ ョ ンと して CLKFB 入力を使用できます

50 デューティ サイ クル出力 常に 50 です

制御属性

DFS_FREQUENCY_MODE CLKIN CLKFX 出力 CLKFX180 出力の周波数条件に影響します

DLL_FREQUENCY_MODE アプリ ケーシ ョ ンで DLL 出力が使用される場合に 周波数合成回路のみに影響を与えます また よ り厳しい DLL の条件に適用するよ うに CLKIN 周波数を低下させる可能性があ り ます CLKFX 出力または CLKFX180 出力が使用されている場合 周波数条件は DFS_FREQUENCY_MODE によってのみ指定されます

CLKFX_MULTIPLY 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 2 から 32 であ りデフォルトは 4 です

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 1 から 32 であ りデフォルトは 1 です

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 57

R

DCM Wizard

周波数合成を使用する場合図 41 に示すよ うに DCM Wizard の[General Setup]ダイアログ ボッ クスで CLKFX または CLKFX180 あるいはその両方のチェッ ク ボッ クスをオンにしてください

CLKFX 出力または CLKFX180 出力のみを使用する場合はオプシ ョ ンと して DLL ク ロ ッ ク出力およびフ ィードバッ クをディ スエーブルにするこ とによって 周波数範囲を広げるこ とができます

bull デフォルトでは CLK0 出力は常にオンになっていますが CLKFX または CLKFX180 のみを使用する場合は CLK0 のチェッ ク ボッ クスをオフにしてください

bull 図 42 に示すよ うに DCM フ ィードバッ クをディ スエーブルにする場合は [None] を選択してください フ ィードバッ クを使用しない場合はCLKFX および CLKFX180 の周波数範囲は高域と低域の両方で広くな り ます

周波数制約

CLKIN アプリ ケーシ ョ ンで 遅延ロッ ク ループ (DLL) からの出力が使用されていない場合CLKIN の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます DLL が使用されている場合は DLL のクロ ッ ク周波数条件はよ り厳し くな り ます

CLKFXCLKFX180

CLKIN 出力および CLKFX180 出力の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 25 周波数合成回路のまとめ (Continued)

最小周波数 最大周波数

CLKIN_FREQ_FX_MIN (~10 MHz) CLKIN_FREQ_FX_MAX (~326 MHz)

DFS_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_FX_LF_MIN(~24 MHz)

CLKIN_FREQ_FX_LF_MAX(~210 MHz)

HIGH CLKIN_FREQ_FX_HF_MIN(~210 MHz)

CLKIN_FREQ_FX_HF_MAX(~325 MHz)

図 41 DCM Wizard での Frequency Synthesizer 設定

CLK0

CLKFXCLKFX180

CLKFXCLKFX180

CLKFX CLKFX180

DCM

x462_41_070903

58 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロックのフォワード ミ ラー リバッファR

DCM Wizard のクロ ッ ク周波数合成で示したよ うに必要は出力周波数または逓倍値と分周値を入力します

クロックのフォワード ミ ラーリバッファ

DCM は高度なクロ ッ ク制御機能を持ちさ らに Spartan-3 IO ピンは多様な IO 電圧標準をサポートするため 通常 Spartan-3 FPGA ではクロ ッ ク信号のリバッファ またはミ ラーを行い 入力クロ ッ クの電圧を変更ために使用されます 同様に DCM の入力クロ ッ ク条件を変更し デューティ サイクルを50 に調整します

図 20 に DCM の入力クロ ッ クを 50 デューティ サイ クルに調整し その周波数で CLK0 出力を使用してクロ ッ クをフォワードする または DCM CLK2X を使用して周波数を 2 倍にする DCM の例を示しました DCM が LOCKED 出力をアサートする と 入力クロ ッ クおよび出力クロ ッ クは位相調整されます CLKFB へのフ ィードバッ ク パスは外部のクロ ッ ク フ ィードバッ ク地点でクロ ッ ク分散遅延を確認し 削除します

出力クロ ッ クのデューティ サイクルが 50 であるこ とは重要であるため出力 IO 標準が 50 デューティ サイ クルを維持できるために十分な速度でスイ ッチできる こ と を確認して ください デューティサイ クルの動作は 出力信号でのシ ミ ュレーシ ョ ンを行う こ とによって検証します IBIS シ ミ ュレーシ ョ ンで確認できるよ うに IO 標準には立ち上がり と立ち下がりが対称的ではなく デューティ サイクルにずれが発生しているものもあ り ます HSTL SSTL および LVCMOS の DCI バージ ョ ンの IO標準の立ち上がりおよび立ち下がりがよ り対称的です

100 MHz を越える場合のデューテ ィ サイ クルを確実に 50 にするためには CLKIN のソースのデューティ サイ クルが 50 の場合にも DCM のデューティ サイクル調整機能を使用する必要があ ります したがって ク ロ ッ ク フォワードに CLK0 CLK90 CLK180 または CLK270 を使用する場合はDUTY_CYCLE_CORRECTION 属性を TRUE に設定してください 通常その他の DCM ク ロ ック出力は常に 50 のデューティ サイ クルに調整されます ( 「ク ロ ッ ク調整」 を参照して ください)

200 MHz 以上で動作する場合のデューティ サイ クルを最適にするためには図 43 に示すよ うな回路を使用して ください こ こでは DCM からの CLKx 出力および CLKx180 出力がデュアル データ レート (DDR) 出力フ リ ップフロ ップの C0 入力および C1 入力を駆動するよ うに使用します DDR フ リ ップフロ ップの D0 入力を VCC に接続し D1 入力を GND に接続します また DCM の各出力は個々のグローバル バッファを駆動しデューティ サイクルのずれを最小にします 高周波数の場合に 1つのク ロ ッ クのみを分散し DDR フ リ ップフロ ップ内部でローカル位相シフ ト を行う と 約 150ps のデューティ サイクルのずれが発生するため このよ うな回路設計は推奨していません

周波数が 250 MHz 以上の場合には分散クロ ッ クに LVDS のよ うな差動信号標準を使用します 図 43にCLKIN ク ロ ッ ク入力およびクロ ッ ク出力がと もに VLDS を使用する例を示します さ らにク ロ ック フ ィードバッ ク パスも LVDS を使用します パフォーマンスを最適にするためには ク ロ ッ ク入力およびクロ ッ ク フ ィードバッ ク パスにグローバル バッファ入力 (IBUFGDS) を使用する必要があ り ます これによってデバイスの一辺にあるすべてのグローバル バッファ入力を使用するこ とになり ますが 高周波数でのクロ ッ ク フォワードを最適に行う こ とができます

図 42 フ ィードバックに [None] を選択し 周波数範囲を拡大

SourceFeedback

Internal External None

Value 1X 2X

If only using the CLKFX or CLKFX180clock ouputs optionally click None to extend the DCM frequency limits

x462_42_070903

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 59

R

クロック ジッ タおよび位相ノイズ

もっと も高価で高精度なものの場合においてもすべてのクロ ッ クにはクロ ッ ク ジッタまたは位相ノイズがあ り ます こ こでは Spartan-3 デジタル ク ロ ッ ク マネージャに固有のジッ タ特性について説明します 低周波数 たとえば 20 MHz で動作する場合は 一般に ジッ タの影響は無視できますが200 MHz のよ う な高周波数で動作する場合には 特にデュアル データ レート (DDR) アプリ ケーシ ョンにおいて ジッ タはデザインの問題に関連する要素となり ます ク ロ ッ ク ジッタによって アクティブ ク ロ ッ ク エッジ間で実際に有効な時間が削減されるため FPGA アプ リ ケーシ ョ ンで使用できる時間が制限されます

クロック ジッ タ とは図 44 に示すよ うにク ロ ッ ク ジッタ とは理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジの相違です 太線は 理想的なクロ ッ ク信号を表します 各クロ ッ ク エッジでは 理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジ間に若干のずれがあ り このずれの最大値と最小値の差異をピーク ジッ タ と呼びます ジッ タは アクテ ィブなク ロ ッ ク エッジのみに関係します たとえば シングル データ レート(SDR) アプリ ケーシ ョ ンの場合データは各立ち上がりエッジでクロ ッ ク入力され この場合のジッタは総クロ ッ ク周期から引く こ とによって求められます 一方 デュアル データ レート (DDR) の場合データは各クロ ッ ク周期の始ま り および 12 ク ロ ッ ク周期の点でクロ ッ ク入力されるため ジッ タは12 ク ロ ッ ク周期ごとに影響を与えます

図 43 高周波数 (250 MHz 以上) での LVDS クロック フォワード回路

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKx180

BUFG

BUFG

VCC

GND

OBUFDS

CLKIN

CLKFB

IBUFGDS

IBUFGDS

External Clock Feedback (LVDS)

FPGA

x462_43_061903

図 44 クロック信号におけるジッ タ

x462_44_061903

60 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

クロック ジッ タの原因ク ロ ッ ク ジッタはすべてのシステムに存在しそれを避けるこ とはできません ク ロ ッ ク ジッタの原因は システム内のノ イズのソース または不完全な信号であ り 実際 ジッ タは時間軸上における ノ イ

ズである と言えます たとえば 入力クロ ッ ク ソースには ク リ スタルからの任意の温度振動ノ イズまたは機械的な振動ノ イズによる固有のジッタ特性があ り ます 多くの同時スイ ッチ出力 (SSO) は回路基板にノ イズを追加するため 内部スイ ッチしきい値がわずかに変更し ジッ タが増加します 同様に適切に設計されていない電源供給または不十分なデカップリ ングによってもジッ タは増加します

その他のジッタの原因と しては近接した信号のクロス トーク不適切な終端 グランド バウンス電磁干渉 (EMI) などが考えられます

このアプ リ ケーシ ョ ン ノートでは Spartan-3 デジタル ク ロ ッ ク マネージャ (DCM) および FPGA 内部でのジッタ全般について説明します

クロック ジッ タ特性の理解ク ロ ッ ク ジッタの特性はさまざまな方法で定められ次のよ うにいろいろな方法でその特徴を捉えることができます

サイクル間ジッ タ

隣接サイクル ジッタ と も呼ばれるサイクル間ジッタは 図 45 に示すよ うに 1 つのクロ ッ ク サイクルと次のクロ ッ ク サイクル間でのクロ ッ ク周期の最大差異です この例ではあるクロ ッ ク サイクルと次のクロ ッ ク サイクル間の最大差異は +100 ps および -100 ps または plusmn100 ps です数百万クロ ッ ク サイクル間の計測を行う場合にはクロ ッ ク周期の変動の絶対値が大き くなる可能性があ り ますがク ロ ッ

ク サイクル間の変動が plusmn100 ps よ り大き くなるこ とはあ り ません

サイクル間ジッタは ク ロ ッ ク出力またはオシレータの特性を測定するために重要ですが アプ リ ケー

シ ョ ンのタイ ミ ング解析には有効ではあ り ません

周期ジッ タ

周期ジッタは 数百万クロ ッ ク サイクル間で計測したサイ クル間ジッタの合計です ピーク ジッ タは理想的なクロ ッ ク移行時間と比較した場合の最短および最小移行時間を示します

デジタル ク ロ ッ ク マネージャの周期ジッ タは一定ではく ピーク間ジッタ と して表されます 図 46 に示すよ うに 理論的には クロ ッ ク移行位置は理想的なクロ ッ ク位置を中心とする確率的な分散 また

はヒ ス ト グラムですが実際の分散はガウス分布ではなく二峰性分布の場合があ り ます 実際のクロ ック移行のほとんどは理想的なクロ ッ ク位置付近で起こ り ますが数百万クロ ッ ク サイクルにおける測定の結果 望ましい位置から離れた地点で起こるクロ ッ ク移行もあ り ます

理想的な位置からの統計的な距離はσ (シグマ) と呼ばれる標準偏差で測定されます DCM はすべてデジタルで機能するデザインであるため 非常に安定しており ザイ リ ンクスでは ジッ タの偏差を plusmn7σまたはピーク間ジッ タを 14σ と定めています 判断基準と して 偏差が plusmn7σ である とい う こ とは ジッタの 9999999999974 が指定されたワース ト ケース ジッ タよ り小さい値であるこ とを保証していま

図 45 サイクル間ジッ タ例

T0 T1 = T0 + 100 ps T2 = T1 - 100 ps

x462_45_062203

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 61

R

す また 14σ ピーク間ジッ タ plusmn7σ ジッタ偏差は 最大ビッ ト エラー レート (BER) が 128 x 10-12 という こ とを意味します

ユニッ ト インターバル(UI)

ジッタの仕様を単位間隔 (UI) の割合と して指定する別の方法もあ り ます 1 UI は 周波数に関わらず1 ビッ ト時間を表します ク ロ ッ クの立ち上がりエッジ または立ち下がりエッジのいずれかでデータが取り込まれるシングル データ レート (SDR) アプリ ケーシ ョ ンでは1 UI は 1 ク ロ ッ ク周期になり ます 一方 2 倍のクロ ッ ク レートでデータがクロ ッ ク入力されるデュアル データ レート (DDR) アプリケーシ ョ ンでは 1 UI が 12 ク ロ ッ ク周期になり ます

UI で指定されるピーク間ジッタ幅は 総ビッ ト周期時間に対するピーク間ジッタ値の比率です

総ジッ タの計算

『Spartan-3 データ シート 』 には CLKFXCLKFX180 以外の DCMのク ロ ッ ク出力におけるジッ タが記載されてます デジタル周波数合成 (DFS) ジッ タは 逓倍値および分周値に基づいて算出されます

データ シートには DLL からのクロ ッ ク出力 (CLKFX および CLKFX180 を除くすべてのクロ ッ ク出力) に対するワース ト ケース ジッ タが記載されています DLL ではジッ タが削減されないため DLLク ロ ッ ク出力の総ジッタには入力クロ ッ クである CLKIN のジッタおよびデータ シートに記載された値が含まれます

また DFS ク ロ ッ ク出力である CLKFX および CLKFX180 では 入力ク ロ ッ ク ジッ タがある程度削減されるため 算出された出力ジッタが総ジッタにな り ます

図 46 ピーク間周期ジッ タ例

図 47 ユニッ ト インターバルの比率で示された周期ジッ タ

Desired clock period

Measured clock period

Num

ber

of s

ampl

esPeak-to-peak Period Jitter

(14σ)

+7σ-7σ

x462_46_061903

Bit Period

Unit Interval (UI)

x462_47_061903

62 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

DLL 出力ジッ タへの入力ジッ タの加算

入力ジッタに DLL 出力ジッタを加える場合ノ イズ計算と同様に 2 乗平均平方根 (RMS) 計算を使用します

ピーク間

等式 10

ピーク間偏差

等式 11

定義

入力クロ ッ クのピーク間周期ジッ タが 150 ps (plusmn75 ps) であ り このク ロ ッ クのデューティ サイ クルがDCM の CLK0 出力と同一の周波数を使用して修正される場合について考えます

この場合 JITTERINPUT = 150 ps であ り JITTERSPEC の値は 『Spartan-3 データ シート 』 で指定されている CLKOUT_JITT_PER_0 と呼ばれる値です これは ピーク間で plusmn100 ps または 200 ps である と概算されます

したがって DCM 出力の総ジッタはピーク間で 250 ps または plusmn125 ps です

カスケード接続された DCM のジッ タ計算図 48 に 複数の DCM をカスケード接続し さまざまな出力周波数を生成しているアプ リ ケーシ ョ ンの例を示します この場合のジッタは 次によって決定されます

bull 前のソースからのジッタ

bull 使用されている DCM 出力

データ シートに記載されているよ うにジッ タ特性は各 DCM 出力によってわずかに異なり ます またDFS からの CLKFX 出力および CLKFX180 出力は 入力ジッタをある程度削減し ジッ タ値は DCMWizard で算出されます ( 「ク ロ ッ ク周波数合成」 参照して ください)

JITTERINPUT = FPGA のクロ ッ ク入力ピンで測定された入力周期ジッタ

JITTERSPEC = 『Spartan-3 データ シート 』 に記載されている適切な出力ポートに対する DLL ク ロ ッ ク出力周期ジッタ

JITTERTOTAL = 予想される総出力周期ジッタ

JITTERTOTAL JITTERINPUT( )2 JITTERSPEC( )

2+=

JITTERTOTALJITTERINPUT( )

2 JITTERSPEC( )2+

2--------------------------------------------------------------------------------------------------------plusmn=

JITTERTOTAL 150 ps( )2200 ps( )

2+ 250 ps= =

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 63

R

したがって カスケード接続された DCM チェーンの任意の点におけるジッタは前述した 2 つの要因によって決定されます 次の例では 回路上のいくつかの点で総ジッタを計算する方法を示します

例 1 すべての DCM が DLL 出力を使用する場合

この例では 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

こ こでは DCM (A) が CLK2X 出力を使用する場合について考えます また DCM 出力ジッ タに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_2X 値を使用してください この値は 400 ps (plusmn200 ps) と概算されています 等式 10 を使用しク ロ ッ ク (A) の総周期ジッタを計算します

次にDCM (B) で分周値が整数である CLKDV 出力を使用する場合について考えます またDCM 出力ジッタに対して 『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_DV1 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (B) の総周期ジッタを計算します この場合 入力ジッタ DCM (A) からのジッタ DCM (B) からのジッタを考慮する必要があるため RMS 等式は次のよ うになり ます

最後に DCM (C) が DCM (B) からの出力を 90deg位相シフ トする場合について考えます また DCM出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します この場合 入力ジッ タ DCM (A) からのジッ タ DCM (B) からのジッ タDCM (C) からのジッ タを考慮する必要があるため RMS 等式は次のよ うにな り ます

例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合

この例は DFS からの CLKFX 出力または CLKFX180 出力を使用する DCM がある点以外は 例 1 すべての DCM が DLL 出力を使用する場合と同様です

この例では 75MHz 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

例 1 と同様に まず DCM (A) が CLK2X 出力を使用する場合について考えます 出力ジッタは 次に示す等式になり ます

この例ではDCM (A) で生成された 150MHz を使用してDCM (B) で 90MHz 合成クロ ッ クを生成します DCM Wizard ( 「ク ロ ッ ク周波数合成」 を参照して ください) を使用し CLKFX_MULTIPLY=3および CLKFX_DIVIDE=5 と設定します ワース ト ケースの出力周期ジッタは 700 ps とな り ます

図 48 カスケード接続された DCM のジッ タ計算

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

A B C

x462_48_061903

JITTERTOTAL A( ) 150ps( )2400ps( )

2+ 427ps 214psplusmn= = =

JITTERTOTAL B( ) 150ps( )2400ps( )

2300ps( )

2+ + 522ps 261psplusmn= = =

JITTERTOTAL C( ) 150ps( )2 400ps( )2 300ps( )2 300ps( )2+ + + 602ps 301psplusmn= = =

JITTERTOTAL B( ) 700ps 350psplusmn= =

64 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

最後にDCM (C) が DCM (B) からの出力を 90deg位相シフ ト させる場合について考えます DCM 出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用してください この値は 300 ps (plusmn150 ps) と概算されています 次の等式を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します 次の DCM では CLKFX を使用するため 総入力ジッ タは ワース ト ケースで700 ps とな り ます 次の RMS 等式を使用し 出力ジッタを計算します

カスケード接続した DCM を使用する場合の推奨デザイン

DCM をカスケード接続して使用する場合 図 48 に示すよ うに DCM からの LOCKED 出力が次のDCM の RST 入力を制御しているこ とを確認してください カスケード接続した DCM では 1 つ前のDCM で LOCKED 出力がアサート され ク ロ ッ クが安定しているこ とが示されてた後に 入力クロ ックにロ ッ クする必要があ り ます

また DCM をカスケード接続する場合には 最もジッ タの影響を回避する必要のあるク ロ ッ ク出力が最初の DCM に接続されるよ うに DCM チェーンを構成してください

システム パフォーマンスにおけるジッ タの影響ク ロ ッ ク ジッタによっても有効なビッ ト周期が狭くな りシステム パフォーマンスが低下します 次の等式に示すよ うに FPGA アプリ ケーシ ョ ンで使用可能なビッ ト周期は 総ビッ ト周期 TBIT からいくつかの影響を差し引いたものです シングル データ レート (SDR) アプリ ケーシ ョ ンでは ク ロ ッ ク周期とビッ ト周期は一致しますがデュアル データ レート (DDR) アプリ ケーシ ョ ンのビッ ト周期はクロ ッ ク周期の 12 になり ます

定義

総ジッ タがク ロ ッ ク周期からの偏差ではな く正の値に指定されている場合 (たとえば plusmn100 ps ではなく200 ps の場合) 正の値を 2 で割り ます (100 ps) ビッ ト周期は負の偏差によってのみ短くなり 正の偏差によってはビッ ト周期が長くな り さ らにタイ ミ ング スラ ッ クが追加されます

入力クロ ッ ク信号の周波数は 75 MHz であ り ク ロ ッ ク ソースのジッ タは plusmn100 ps です アプリ ケーシ ョ ンは内部で生成された 150 MHz のクロ ッ クの立ち上がりエッジでデータを入力します また 総ビッ ト周期 TBIT は 667 ns です ジッ タの影響を考慮する と 有効なビッ ト周期 TAVAILABLE は

どのよ うになるでし ょ うか

2 逓倍クロ ッ ク回路からの CLK2X 出力によって75MHz ク ロ ッ ク入力から 150MHz ク ロ ッ クが生成されます 『Spartan-3 データ シート 』 の CLKOUT_PER_JITT_2X 仕様による と 2 逓倍クロ ッ ク出力である CLK2X には plusmn~200 ps (概算) のワース ト ケース ジッタがあ り ます 2 乗平均平方根を使用し

TBIT = ビッ ト周期時間

tTOTAL_JITTER = 総クロ ッ ク ジッ タ ク ロ ッ ク入力ジッタに DCM 出力ジッタ またはカスケード接続された DCM のジッタを加算したものです

tDUTY_CYCLE_DISTORTION = デューティ サイ クルのずれ デュアル データ レート (DDR) アプリケーシ ョ ンのみで必要であ り それ以外の場合はゼロです 使用する DCM ク ロ ッ ク出力によって データ シートに記載されている CLKOUT_DUTY_CYCLE_DLL または CLKOUT_DUTY_CYCLE_FX を使用します

JITTERTOTAL C( ) 700ps( )2300ps( )

2+ 762ps 381psplusmn= = =

TAVAILABLE TBIT tTOTAL_JITTERndash tDUTY_CYCLE_DISTORTIONndash=

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 65

R

DCM のジ ッ タplusmn200 ps にク ロ ッ ク ソースのジ ッ タ plusmn100 ps を加算する こ と によ って 総ジ ッ タtTOTAL_JITTER が plusmn0223 ns であるこ とがわかり ます

データはクロ ッ クの立ち上がりエッジでのみ入力されるためデューティ サイクルのずれが影響を与えるこ とはな く tDUTY_CYCLE_DISTORTION = 0 です

結果と して 有効な総クロ ッ ク周期 TAVAILABLE は総ビッ ト周期である 6667 ns から 6444 ns に減少します 結果と して ロジッ クは 150 MHz ではなく 1551831 MHz で動作します

クロック ジッ タを最小限にするための推奨デザイン高性能アプリ ケーシ ョ ンでは ク ロ ッ ク ジッタによって有効なビッ ト周期が短くな り ますシステム全体のクロ ッ ク ジッタを最小限にするためには次の推奨デザインを参考にしてください

適切な電力分散システム設計

電力プレーン デカップ リ ングを含む 電力分散システム (PDS) を適切に設計するこ とによって 安定した電力環境を作成し システム ジッ タを削減できます アプ リ ケーシ ョ ン ノー ト XAPP623 ではPDS の適切な設計にについて説明しています

bull XAPP623 電力分散システム (PDS) デザイン バイパスデカップリ ング キャパシタhttpwwwxilinxcomxappxapp623pdf

適切なプリン ト サーキッ ト ボードの設計

予想される動作周波数範囲およびアプ リ ケーシ ョ ン環境に適したプ リ ン ト サーキッ ト ボード設計を行ってください

bull WP174 PCB への効果的な FPGA 統合httpwwwxilinxcojppublicationswhitepaperswp_pdfwp174pdf

bull PCB チェッ ク リ ス トhttpsupportxilinxcomxlnxxil_prodcat_productjsptitle=si_pcbcheck

同時スイッチ出力 (SSO) の推奨デザイン

DCM へのク ロ ッ ク入力 または DCM からのク ロ ッ ク出力の信号に関連した問題を回避するために『Spartan-3 データ シート 』 に記載されている同時スイ ッチ出力 (SSO) 仕様に沿っているこ とを確認して ください

また 可能な限り DCM の入力または出力をスイ ッチング回数の多い IO の近くに配置するこ とを避けてください 特に 出力電圧幅が大きい IO または駆動電流が高い IO の場合にはこのこ とが重要です

仮想グランド ピンを DCM 入力および出力接続の近くに配置

さまざまな影響を受けやすく高周波数である DCM の入力または出力では仮想グランド ピンのよ うなユーザー IO ピンを追加して PCB へ別の接続を作成します このよ うな仮想グランド ピンは ジッタの影響を受けやすい DCM 信号に近接する IO パッ ドに配置して ください IO パッ ドは パッケージのピンまたはボール上だけでなく FPGA のダイ レベルでも近接しているこ とを確認して くださいBGA パッケージ上で隣接しているボールは 必ずしも FPGA 上にある隣接したパッ ドに接続する必要はあ り ません このよ うに設計するこ とによって 内部電圧降下が軽減され ジッ タが削減されます

仮想グランドを作成する場合は図 49 に示すよ うに IOB を GND (Low ロジッ ク レベル) を駆動する出力と して設定し その IOB を外部で直接グランド プレーンに接続します

tTOTAL_JITTER 100psplusmn( )2 200psplusmn( )2+ 22360psplusmn 0223nsplusmn= = =

TAVAILABLE 6667ns 0223nsndash 6444ns= =

66 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

VCCAUX 考察

デジタル ク ロ ッ ク マネージャは VCCAUX 入力によって電源が供給されます FPGA への電源供給入力である VCCAUX の過剰ノ イズは DCM の特性 特にジッタ特性を低下させます DCM のパフォーマンスを最適にするために 次に従ってください

1 図 50 に示すよ うに VCCAUX 電源供給 またはグランド上の変動を 1 ms 間で 10 mV よ り小さ くして ください この制限によって DCM は変動に適切に対応して動作します

2 図 50 に示すよ うに 電源供給のノ イズをピーク間で 200 mV 以内にして ください

3 VCCAUX および VCCO が同一の電源プレーンにある場合 すべての VCCAUXVCCO ピンを適切にデカップリ ングまたはバイパスする必要があ り ます ( 「適切な電力分散システム設計」 を参照してください) また 上記の 1 および 2 を維持できない場合 VCCAUX と VCCO を分離して使用してください

4 特に CLK2X 出力は電源シフ ト またはグランド シフ トの影響を受けます したがって すべての IOB および CLB でスイ ッチングがある場合には CLKFX_MULTIPLY =2 および CLKFX_DIVIDE=1 と設定されている CLKFX 出力はよ り よい特性を持つ出力を供給します DFS モードの場合 CLK2X 出力の更新が遅いのに対して CLKFB 迂回回路では 3 入力クロ ッ クごとにタ ップが更新されます

FACTORY_JF 設定の修正

適切に設計され 安定し 適切にデカップリ ングされた電源供給が FPGA 内のクロ ッ ク スキューおよびジッタを低減するためにもっと も有効な方法ですが FACTORY_JF 属性を 0xFFFF に設定することによって 問題の発生しているボード上のジッタを低減できる場合があ り ます FACTORY_JF=FFFF の場合 DCM はおよそ 20 入力クロ ッ クごとにタ ップ設定を更新し 周波数を基にしたデフォルト設定よ り もタ ップ更新の間隔は短くな り ます

図 49 DCM 入力または出力クロック信号への仮想グランド ピンの使用

IBUFG

OBUF

OBUF

To DCMCLKIN Input

Sensitive DCMClock Input

FPGAldquoVirtualrdquoground pin

Direct connectionto PCB groundplane

GND

GND

x462_49_061903

図 50 電圧降下を回避するための VCCAUX 考察

VCCAUXSupply(at FPGA)

dV lt 10 mV

dt lt 1 mS

Keep VCCAUX noiseenvelope to lt 200 mVpeak-to-peak

Avoid sudden changes fromone DC level to anotherKeep dVdt lt 10mVmS x462_50_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 67

R

ただし FACTORY_JF の設定値を大き くするこ とによって DCM では遅延ラインが頻繁に更新されジッ タがわずかに増加する (~30 ps) 可能性もあるため FACTORY_JF のデフォルト設定は最大値ではあ り ません 電源供給が不安定の場合には 発生した位相エラーが増加したジッタよ り大きい場合があり この場合には FACTORY_JF の設定値を大き くするこ とによって デザインのパフォーマンスを向上できます

その他 ビッ トス ト リーム生成の設定

DCM では 次の 2 つのビッ ト ス ト リーム生成 (BitGen) オプシ ョ ンがあ り ます

bull -g lck_cycle このオプシ ョ ンを使用する場合インスタンシエート された DCM で LOCKED 出力がアサート されるまで FPGA のコンフ ィギュレーシ ョ ン スタート アップ シーケンスを遅らせるこ とができます

bull -g DCMShutdown このオプシ ョ ンを使用する場合JTAG ポート を使用した部分再コンフ ィギュレーシ ョ ン または全体の再コンフ ィギュレーシ ョ ンを実行中に コンフ ィギュレーシ ョ ン ロジックに SHUTDOWN コマンドがロード される と DCM ロジッ クがリセッ ト されます

Project Navigator でのビッ トス ト リーム生成オプシ ョ ン

ISE 52i Project Navigator を使用する場合は 図 51 に示すよ うに [Processes for Source] ウ ィンド ウで [Generate Programming File] を右ク リ ッ ク し [Properties] を選択するこ とによってビッ ト ス トリーム生成オプシ ョ ンを設定します

詳細は 「BitGen スイ ッチおよびオプシ ョ ン」 を参照してください

コマンド ライン またはスクリプ ト を使用したビッ トス ト リーム生成オプシ ョ ン

設定可能なオプシ ョ ンを表示するためには 次のコマンドを入力します

bitgen -help spartan3

DCM LOCKED 出力とコンフ ィギュレーシ ョ ン ロジックの設定

DCM の STARTUP_WAIT 属性を使用するこ とによってDCM で LOCKED 出力がアサート されるまで FPGA で DONE 信号がアサート されるを遅らせFPGA のコンフ ィギュレーシ ョ ン スタート アップロジッ クを待たせるこ とができます ただし このためには設計段階で次の二つの設定を行う必要があり ます まず ロ ッ ク状態になってからコンフ ィギュレーシ ョ ンを完了する必要がある各 DCM に対するSTARTUP_WAIT 属性を TRUE に設定します 次に各信号がスタート アップの 6 ク ロ ッ ク サイクルで 図 52 に示すよ うに動作するよ うにビッ ト ス ト リーム生成オプシ ョ ンを変更します デバイスがコンフ ィギュレーシ ョ ン スタート アップ シーケンスを完了するためにはDCM が LOCKED をアサート後に十分なコンフ ィギュレーシ ョ ン ク ロ ッ ク サイ クルが必要です

図 51 Project Navigator でのビッ トス ト リーム生成 (BitGen) オプシ ョ ン

Processes for Current Source

Generate Programming File

Programming File Generation Report

RunRerunRerun AllStopOpen without Updating

Properties

x462_51_061903

68 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他R

A FPGA 内部のグローバル ト ラ イ ステート信号 (GTS_cycle) を開放し すべての IO 信号をイネーブルにします

B GTS_cycle 後に DCM で LOCKED がアサート されるまでスタート アップ ロジッ クが待機するよにサイクルを設定します DCM では クロ ッ ク信号でロ ッ ク状態になる前に ク ロ ッ クおよび可能ならばフ ィードバッ ク信号のよ うな外部入力が必要です

C DCM がロ ッ ク状態になった後 FPGA の内部グローバル書き込みイネーブル (GWE_cycle) 信号をアサート します

D 最後に 内部の DONE 信号をアサート します

図 53 に Project Navigator を使用したオプシ ョ ン設定を示します

スタート アップ位相タイ ミ ングおよび GWE_cycle と DONE_cycle のタイ ミ ングには柔軟性があ り ますがDCM で STARTUP_WAIT 属性を使用する場合は必ず LCK_cycle の前に GTS_cycle がなければなり ません シーケンスがこのよ うになっていない場合にはDCM がロッ クせずコンフ ィギュレーシ ョ ンが完了しません

図 52 DCM LOCKED 出力とスタートアップ ロジックの相互関係

0 1 2 3 4 5 6

DONE_cycle

Start-up CLK

GTS_cycle

GWE_cycle

LCK_cycle

Start-up Cycles

A

B

C

D

x462_52_062403

図 53 BitGen オプシ ョ ン

Process Properties

Startup options

Value

CCLK

6

3

5

4

Default (NoWait)

General Options Configuration Options Readback Options

Property Name

FPGA Startup Clock

Enable Internal Done Pipe

Done (Output Events)

Enable Outputs (Output Events)Release Write Enable (Output Events)Release DLL (Output Events)

Match Cycle (Output Events)

Drive Done Pin High

OK Cancel Default Help

Optionally set GWE_cycle to follow GTS_cycleensuring DCM(s) reset afterIOs activate

LCK_cycle indicates cyclewhere start-up logic waitsfor DCM(s) to assertLOCKED

Done_cycle after LCK_cycle GTS_cycle must occur

before LCK_cycle to enableIO pins

[Startup options]

[OK] x462_53_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 69

R

JTAG を使用した部分再コンフ ィギュレーシ ョ ンまたは全体の再コンフ ィギュレーシ ョ ン中の DCM リセッ ト

も う 1 つのビッ ト ス ト リーム オプシ ョ ンと して SelectMAP を使用した部分再コンフ ィギュレーシ ョン中 または JTAG ポート を使用した全体および部分再コンフ ィギュレーシ ョ ン中に FPGA にあるすべての DCM を リセッ トできます このオプシ ョ ンを使用する場合 SHUTDOWN コマンド シーケンス中に AGHIGH コンフ ィギュレーシ ョ ン コマンドが発行される とDCM がリセッ ト されます JTAGを使用して再コンフ ィ ギュレーシ ョ ンを行う場合には 必ず DCM を リ セッ トする必要があ り ますProject Navigator でビッ ト ス ト リーム生成オプシ ョ ンを変更するためには (「Project Navigator でのビット ス ト リーム生成オプシ ョ ン」 を参照) 図 54 に示すよ うに Configuration options タブをク リ ッ クし [Reset DCM if SHUTDOWN amp AGHIGH performed] オプシ ョ ンのチェッ ク ボッ クスをオンにして ください

一時的な CLKIN の停止厳密なアナログ測定を行っている間のシステム全体のノ イズを削減するため FPGA アプリ ケーシ ョ ンのその他の部分に影響を与えるこ とな く 一時的に DCM へのクロ ッ ク入力を停止できます これが可能である理由の一部はDCM がすべてデジタルで安定して機能するシステムであるためです DCM では最初に入力クロ ッ クに対してロ ッ ク し次に LOCKED 出力をアサートする必要があ り ます DCM がリセッ ト しない場合には デスキュー回路にほとんど影響を与えずに CLKIN 入力クロ ッ クを一時的に停止できますが 次の条件を満たす必要があ り ます

bull デバイスが冷却するこ とによるタ ップ遅延の変化の影響を最小限にするために ク ロ ッ クの停止時

間は 100 ms 未満である必要があ り ます

bull ク ロ ッ クが Low である間に停止する必要があ り12 周期分の High から再開する必要があ り ます

上述の条件は理論的にはクロ ッ ク入力ジッタの仕様に違反しますがDCM の LOCKED 出力は Highを維持し ク ロ ッ クが再び動作する際にも High を維持しています したがって LOCKED が High であるこ とは必ずしも有効なクロ ッ クが使用可能であるこ とにはなり ません このため実際にはクロ ック入力ジッタの仕様に違反していますが これらの条件を満たす限り問題はあ り ません

CLKIN を停止する際にはDCM のデジタル遅延ラインにあるクロ ッ クが出力されるため 1 から 8 出力クロ ッ ク サイクルが生成されます 同様に CLKIN が再開する場合には 遅延ラインが満たされる

図 54 再コンフ ィギュレーシ ョ ン中に DCM をリセッ トするためのコンフ ィギュレーシ ョ ン オプシ ョ ン

Process Properties

Configuration options

ValuePull Up

Pull UpFloatPull UpPull Down0xFFFFFFFF

General Options Startup options Readback Options

Property NameConfiguration Pin DoneJTAG Pin TCKJTAG Pin TDIJTAG Pin TDOJTAG Pin TMSUnused IOBsUserID Code (8 Digit Hexadecimal)Reset DCM if SHUTDOWN amp AGHIGH performed

OK Cancel Default Help

Click Configuration options tab

Click OK when finished

Pull Up

Check to reset all the DCMsin the FPGA if the AGHIGHcommand issued duringSHUTDOWN sequence

x462_54_062103

70 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

参考資料R

までの 1 から 4 ク ロ ッ クサイ クル間は出力クロ ッ クが生成されません 通常 遅延ラインが満たされるためは 2 または 3 ク ロ ッ ク サイ クルが必要です

また 入力ク ロ ッ クを停止するこ とによって 位相シフ ト を行う こ とができます この位相シフ トは

DCM による制御を中断させるこ とな く 1 から 4 ク ロ ッ ク サイクル後のクロ ッ ク出力から影響を与えます

図 55 に CLKIN 入力クロ ッ クを一時的に停止する例を示します また この図には CLK2X ク ロ ッ ク出力への影響も示しています

参考資料 bull 『Spartan-3 データ シート 』 (モジュール 2) デジタル  ク ロ ッ ク  マネージャの特長および機能httpwwwxilinxcojpbvdocspublicationsds099-2pdf

bull 『Spartan-3 データ シート 』 (モジュール 3) タイ ミ ングおよびジッタ特性

httpwwwxilinxcojpbvdocspublicationsds099-3pdf

bull ザイ リ ンクス ISE 52i ライブラ リ ガイ ドDCM プリ ミ ティブhttptoolboxxilinxcomdocsanxilinx5pdfdocsliblibpdf

bull Architecture Wizard 録音版 Web セミナーhttpsupportxilinxcojpsupporttrainingjapan-home-pagehtm

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcojpxappxapp622pdf

bull 『開発システム リ ファレンス ガイ ド』 15 章 「BitGen」 ビッ ト ス ト リーム生成プログラムおよびオプシ ョ ン 335-367 ページhttptoolboxxilinxcomdocsanxilinx5pdfdocsdevdevpdf

図 55 CLKIN の一時的な停止

CLKIN

CLK2X

Clock input must bestopped in Low phase andfor no more than 100 ms

When restarted the clockinput must generate a fullHigh half-period

x462_55_062403

改訂履歴

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 71

R

改訂履歴 次の表に このアプリ ケーシ ョ ン ノートの改訂履歴を示します

日付 バージョ ン 履歴

20030709 10 初版リ リース

  • Spartan-3 FPGA におけるデジタル クロック
  • マネージャ (DCM) の使用
    • 概要
    • はじめに
    • 概要
    • DCM 位置および クロック分散 ネットワーク インターフェイス
    • DCM 機能の概要
      • 遅延ロック ループ (DLL)
      • デジタル周波数合成 (DFS)
      • 位相シフト (PS)
      • ステータス ロジック
        • DCM プリミティブ
          • シンボル
          • 接続ポート
          • 属性プロパティおよび制約
            • その他のザイリン クス FPGA ファ ミリとの互換性
            • DCM 使用のため のクロック条件
              • 入力クロック周波数範囲
              • 出力クロック周波数範囲
              • クロック入力およびクロック フィードバック入力の変動
                • LOCKED 出力
                • RST 入力
                • DCM Wizard
                  • DCM Wizard の起動
                    • Windows のスタート ボタンから起動
                    • Project Navigator から起動
                      • Wizard 選択
                      • [General Setup]
                      • アドバンスド オプション
                      • クロック バッファ
                      • クロック周波数合成
                      • HDL 出力の生成
                        • VHDL および Verilog のインス タンシエーション
                          • Project Navigator の言語テンプレート
                          • VHDL および Verilog リファレンス ファイル
                            • クロック スキュー の低減
                              • クロック スキューとは
                              • クロック スキュー パフォーマンス低下の原因
                              • スキューの削除
                              • 過去のクロック動作から将来のクロック動作を予測
                              • ターゲットのロック
                              • 安定した単調なクロック入力
                              • 確実なソースからのフィードバック
                              • 内部クロック信号からのスキュー削除
                              • 外部クロック信号からのスキュー削除
                                • コンフィギュレーション後の DCM リセット
                                • なぜリセットする必要があるのか
                                  • 遅延ロック ループとは
                                    • 遅延ロック ループ (DLL)
                                    • 位相ロック ループ (PLL)
                                    • インプリメンテーション
                                    • DLL と PLL
                                      • スキュー調整
                                        • システム同期
                                        • ソース同期
                                        • タイミングの比較
                                            • クロック調整
                                            • 位相シフト- ク ロック周期の分数 でクロックを遅延
                                              • 12 クロック周期位相シフト出力
                                                • 12 周期位相シフト出力によるデューティ サイクルのずれの削減
                                                • デュアル データ レート (DDR) クロックの例
                                                  • 14 位相シフト出力
                                                    • DLL 周波数モードによる出力の有効性
                                                    • 5050 デューティ サイクル調整オプション
                                                    • 4 つの位相遅延クロックエッジ位相パルス
                                                      • ファイン位相シフト
                                                      • 固定ファイン位相シフト
                                                        • 固定ファイン位相シフト範囲
                                                        • 最小位相シフト
                                                        • その他の考察点
                                                        • DCM Wizard
                                                          • 動的ファイン位相シフト
                                                            • 動作
                                                            • 動的ファイン位相シフト範囲
                                                            • 制御
                                                            • DCM Wizard
                                                            • アプリケーション例
                                                                • クロック逓倍 クロック分周 周波数合成
                                                                  • 周波数合成アプリケーション
                                                                  • 入力クロックおよび出力クロックの周波数条件
                                                                  • 2 逓倍クロック (CLK2XCLK2X180)
                                                                  • クロック分周 (CLKDV)
                                                                    • CLKDV クロック調整
                                                                    • CLKDV のジッタは周波数モードおよび属性値が整数か整数ではないかによって決定されます
                                                                    • DCM Wizard
                                                                      • 周波数合成回路 (CLKFXCLKFX180)
                                                                        • DCM Wizard
                                                                            • クロックのフォ ワードミラー リバッファ
                                                                            • クロック ジッタお よび位相ノイズ
                                                                              • クロック ジッタとは
                                                                              • クロック ジッタの原因
                                                                              • クロック ジッタ特性の理解
                                                                                • サイクル間ジッタ
                                                                                • 周期ジッタ
                                                                                • ユニット インターバル(UI)
                                                                                  • 総ジッタの計算
                                                                                    • DLL 出力ジッタへの入力ジッタの加算
                                                                                      • カスケード接続された DCM のジッタ計算
                                                                                        • 例 1 すべての DCM が DLL 出力を使用する場合
                                                                                        • 例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合
                                                                                        • カスケード接続した DCM を使用する場合の推奨デザイン
                                                                                          • システム パフォーマンスにおけるジッタの影響
                                                                                              • クロック ジッタを最小限にするための推奨デザイン
                                                                                                • 適切な電力分散システム設計
                                                                                                • 適切なプリント サーキット ボードの設計
                                                                                                • 同時スイッチ出力 (SSO) の推奨デザイン
                                                                                                • 仮想グランド ピンを DCM 入力および出力接続の近くに配置
                                                                                                • VCCAUX 考察
                                                                                                • FACTORY_JF 設定の修正
                                                                                                    • その他
                                                                                                      • ビットストリーム生成の設定
                                                                                                        • Project Navigator でのビットストリーム生成オプション
                                                                                                        • コマンド ラインまたはスクリプトを使用したビットストリーム生成オプション
                                                                                                        • DCM LOCKED 出力とコンフィギュレーション ロジックの設定
                                                                                                        • JTAG を使用した部分再コンフィギュレーションまたは全体の再コンフィギュレーション中の DCM リセット
                                                                                                          • 一時的な CLKIN の停止
                                                                                                            • 参考資料
                                                                                                            • 改訂履歴
Page 5: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々

DCM 機能の概要

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 5

R

遅延ロック ループ (DLL)遅延ロ ッ ク ループ (DLL) ユニッ トは ク ロ ッ クの出力信号の伝搬遅延がゼロになるよ うにチップ上でスキュー調整を行います スキューを調整するためのデジタル回路では ク ロ ッ ク出力 (CLK0 またはCLK2X) を確認しネッ ト ワーク配線上に遅延を挿入します DLL は外部クロ ッ ク入力ポートからデバイス内の各クロ ッ ク入力までの遅延を削減する場合に有効です 効率的にバッファを使用したグロー

バル ネッ ト ワークでは さまざまな負荷がかかるこ とによって発生するネッ ト ワーク上のク ロ ッ ク スキューを最小限に抑えるこ とができます

DLL への入力信号は CLKIN および CLKFB であ りDLL からの出力信号は CLK0CLK90CLK180CLK270 CLK2X CLK2X180 および CLKDV です

この DLL を使用するこ とによって 2 逓倍クロ ッ ク (CLK2X CLK2X180) ク ロ ッ ク分周 (CLKDV)および 14 位相シフ ト出力の各出力を生成できます

デジタル周波数合成 (DFS)デジタル周波数合成 (DFS) ユニッ トは 設計者が定義した 2 つの整数 逓倍値 (CLKFX_MULTIPLY)および分周値 (CLKFX_DIVIDE) を使用して 柔軟 かつ広範囲の出力周波数を生成します こ こでは入力クロ ッ ク (CLKIN) 周波数を逓倍または分周し派生出力クロ ッ ク周波数を生成します この機能はDCM の DLL 機能の有無に関わらず使用できDLL を使用しない場合には CLKIN と DFS 出力間に位相関係はあ り ません

DFS は 周波数合成回路 (CLKFX CLKFX180) 出力を生成します

位相シフ ト (PS)位相シフ ト (PS) ユニッ トは DCM の CLKIN 入力に対するクロ ッ ク出力の位相関係を制御します

PS は位相シフ ト値を入力クロ ッ ク周期の分数で指定し9 つすべての DCM ク ロ ッ ク出力信号の位相をシフ ト させます この位相シフ ト値は設計段階で指定し FPGA コンフ ィギュレーシ ョ ン中に DCMに読み込まれます

PS は現在のク ロ ッ ク周期の 1256 単位で前後に位相をシフ ト させる こ とができる FPGA アプ リ ケーシ ョ ンのデジタル インターフェイスを提供します

PS の入力信号は PSINCDENPSEN および PSCLK であ り出力信号は PSDONE および STATUS[0]です

ステータス ロジックステータス ロジッ クはLOCKED と STATUS[0]STATUS[1]および STATUS[2] 出力信号によってDCM の現在のステート を示します LOCKED 出力信号は DCM 出力が CLKIN と同位相であるかを示し STATUS 出力信号は DLL および PS のステート を示します

RST 入力信号によってDCM 全体がリセッ ト されコンフ ィギュレーシ ョ ン後のステートに戻るためリセッ ト後は CLKIN 入力に再びロッ クする必要があ り ます

6 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

DCM プリ ミテ ィブ

DCM プリ ミ ティブはデジタル ク ロ ッ ク マネージャのすべての機能を表します図 4 に DCM プリ ミティブを示し 次に DCM の接続ポート 属性 プロパティ および制約の要約を示します

シンボル

接続ポート

表 3 にデジタル ク ロ ッ ク マネージャの接続ポート を示し 各ポートについて 信号方向およびその接続を必要とする DCM ユニッ ト などを簡潔に説明します 表 2 には表 3 で使用している各機能ユニットの略称を示します

図 4 DCM プリ ミテ ィブ

表 2 表 3 で使用している機能ユニッ トの略称

略称 機能ユニッ ト

DLL 遅延ロッ ク ループ

PS 位相シフ ト

DFS デジタル周波数合成

CLK0

CLK90

CLK180

CLK270

CLK2X

CLK2X180

CLKDV

CLKFX

CLKFX180

STATUS[70]

LOCKED

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDEC

PSCLK

DCM

x462_04_061803

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 7

R

表 3 DCM 接続ポート

ポート 方向 説明機能ユニッ ト

DLL PS DFS

CLKIN ク ロ ッ ク入力 DCM へのクロ ッ ク入力であ り 常に必要です CLKIN の周波数およびジッタは 『Spartan-3 データ シート 』 で指定された範囲内である必要があり 周波数モードは DLL_FREQUENCY_MODE 属性または DFS_FREQUENCY_MODE 属性で指定されます

CLKFB 入力 DCM へのクロ ッ ク フ ィードバッ ク入力です フ ィードバッ ク入力はデジタル周波数合成出力である CLKFX または CLKFX180 のみが使用されている場合は必要あ り ません CLKFB 入力のソースは DCM からの CLK0 出力または CLK2X 出力であ り状況に応じて CLK_FEEDBACK を 1X または 2X に設定する必要があ り ます 理論的には フ ィードバッ ク地点には内部または外部のクロ ッ ク分散ネッ ト ワークで追加された遅延が含まれます

「確実なソースからのフ ィードバッ ク」 を参照してください

オプ

シ ョ ン

RST 入力 非同期のリセッ ト入力であ り DCM ロジッ クを リセッ ト してコンフ ィギュレーシ ョ ン後の設定に戻します この入力を使用した場合 DCM では再び CLKIN を確認し ロ ッ ク します また DCM ブロ ッ ク内部で反転可能であり 反転させない場合の動作については下表に示します 「RST 入力」 を参照してください

PSEN 入力 動的位相シフ ト イネーブル信号であ り DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位

相シフ ト 」 を参照してください

PSINCDEC 入力 動的位相シフ ト値を増減する場合に使用し DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位相シフ ト 」 を参照してください

PSCLK ク ロ ッ ク入力 PS へのクロ ッ ク入力であ り 立ち上がりエッジで入力されます DCM ブロ ッ ク内部で反転可能です 周波数モードは DLL_FREQUENCY_MODE 属性によって指定されます 「動的ファイン位相シフ ト 」 を参照してくださ

0 影響なし

1 DCM ブロ ッ クを リセッ ト します アクティブ High であ り最低 2ns 間 High を維持する必要があ り ます

0 動的位相シフ ト をディ スエーブルにし PS への入力は無視されます

1 PSCLK ク ロ ッ クの次の立ち上がりエッジで動的位相シフ トをイネーブルにします

0 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を増加させます

1 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を減少させます

8 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLK0 ク ロ ッ ク出力 位相シフ トは 0degであ り CLKIN と同一周波数の出力ですDUTY_CYCLE_CORRECTION 属性が TRUE の場合は デューティ サイクルが 50 に調整されます DLL 機能にはフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK90 ク ロ ッ ク出力 90deg(14 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません またDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK180 ク ロ ッ ク出力 180deg(12 周期) 位相シフ ト した CLKIN と同一周波数であ りDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイクルが 50 に調整されます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK270 ク ロ ッ ク出力 270deg(34 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません また DUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK2X ク ロ ッ ク出力 位相シフ トは 0degであ り 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合には 常にデューティ サイクルが 50 とな りDLL へのフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLK2X180 ク ロ ッ ク出力 180deg位相シフ ト し 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合はデューティ サイクルが常に 50 とな り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKDV ク ロ ッ ク出力 分周クロ ッ ク出力であ り CLKDV_DIVIDE 属性で制御されます DLL_FREQUENCY_MODE 属性が High であ り CLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 です また CLKDV_DIVIDE 値が整数ではないではない場合はロ ッ ク状態になるまでに必要な時間が長くなり ます これはクロ ッ ク分周 (CLKDV) 出力です

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 9

R

CLKFX ク ロ ッ ク出力 合成クロ ッ ク出力であ り CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性で制御されます デューティ サイクルは常に 50 です CLKFX または CLKFX180 ク ロ ッ ク出力のみが使用されている場合には クロ ッ ク フ ィードバッ クは必要あ り ません 「周波数合成回路 (CLKFX CLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKFX180 ク ロ ッ ク出力 CLKFX を 180deg位相シフ ト した (CLKFX を反転したよ うに見える) 合成クロ ッ ク出力であ り デューティ サイ クルは常に 50 です CLKFX ク ロ ック出力または CLKFX180 ク ロ ッ ク出力が DCM で使用されている場合には フ ィードバッ ク ループは必要あ り ません 「周波数合成回路 (CLKFXCLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

STATUS[0] 出力 動的位相シフ トがオーバーフローであるこ とを示します 動的ファイン位

相シフ トの制御出力で 動的位相シフ トが最小値または最大値に達してい

るこ とを示します 制限値は plusmn255 または位相シフ ト遅延ラインの最後に達した場合は その値以下になり ます 「動的ファイン位相シフ ト 」 を参照し

てください

STATUS[1] 出力 CLKIN 入力が停止したこ とを示し CLKFB フ ィードバッ ク入力が接続されている場合のみに使用できます LOCKED 出力がアサート されるまではリセッ ト状態であ り アクティブになるためには CLKIN が 1 サイクル以上必要です CLKIN が最初から ト グルしない場合にはアサート されません

STATUS[2] 出力 CLKFX 出力または CLKFX180 出力が停止したこ とを示します 周波数合成回路 (CLKFX CLKFX180) を参照してください

STATUS[73]

出力 予約済み

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

0 位相シフ トは制限値に達していません

1 位相シフ トが制限値に達しています

0 CLKIN がト グルしています

1 CLKIN がト グルしていません

0 CLKFX 出力および CLKFX180 出力がト グルしています

1 CLKFX 出力および CLKFX180 出力がト グルしていませんただしLOCKED 出力が High に維持されている場合があ ります

10 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

LOCKED 出力 すべての DCM 機能は CLKIN の周波数にロッ ク しています CLKIN が指定された範囲内 ( 「DCM 使用のためのクロ ッ ク条件」 に記載) である場合に クロ ッ ク出力が有効です 「周波数合成回路 (CLKFX CLKFX180)」を参照してください

PSDONE 出力 動的位相シフ トが完了したこ とを示します 「動的ファイン位相シフ ト 」 を

参照してください

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

0 DCM は CLKIN の周波数に対してロ ッ クする過程であ りDCM のクロ ッ ク出力は無効です

1 DCM は CLKIN の周波数に対してロ ッ ク しDCM のクロ ック出力は有効です

1 rarr 0 DCM のロ ッ ク状態が解除され DCM を リセッ トする必要があ り ます

0 位相シフ トが行われていない または実行中です

1 要求された位相シフ トは完了しています この出力が PSCLK の 1 サイクル間 High になった後次の位相シフ ト を実行できます

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 11

R

属性 プロパティ および制約

表 4 にデジタル ク ロ ッ ク マネージャの属性を示しますすべての属性は設計段階で設定されコンフ ィギュレーシ ョ ン中にプログラムされます 動的ファイン位相シフ ト以外では FPGA アプリ ケーシ ョ ンの実行中にこれらの設定を変更するこ とはできません 使用するデザイン入力ツールに合わせて lt属性gt=lt設定gtを使用し 属性を設定します

表 4 DCM 属性

属性 可能な設定および説明

DLL_FREQUENCY_MODE CLKIN 入力 PSCLK 入力 および遅延ロッ ク ループ (DLL) からの出力クロ ッ クの有効周波数範囲を指定します DLL ク ロ ッ ク出力には CLK0 CLK90 CLK180 CLK270CLK2X CLK2X180 CLKDV が含まれます

CLK_FEEDBACK フ ィードバッ ク ク ロ ッ クの周波数を指定します

DUTY_CYCLE_CORRECTION DLL からの出力である CLK0 CLK90 CLK180 および CLK270 に対する 50 デューティ サイ クル調整をイネーブルまたはディ スエーブルに設定します

CLKDV_DIVIDE CLKDV 出力の周波数を指定します 設定可能な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 です

CLKDV_DIVIDE が整数ではない場合 ロ ッ クするために必要な時間が長くなり 出力ジッ タが増加します

CLKFX_MULTIPLY CLKFX 出力および CLKFX180 出力の周波数を逓倍する場合の係数を指定します この値は CLKDV_DIVIDE 属性の値と と もに使用されます CLKFX_MULTIPLY に設定可能な範囲は整数値の 2 から 32 であ り デフォルトは 4 です

LOW デフォルトです DLL は低周波数モードで動作し DLL に関連したすべての出力が有効です ク ロ ッ ク入力およびクロ ッ ク出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DLL の指定範囲内にあ り ます

HIGH DLL は高周波数モードで動作します 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力 および 14 位相シフ ト出力 CLK90 と CLK270 は無効です CLKDV_DIVIDE 属性が整数以外の場合 CLKDV 出力のデューティ サイクルは 50 になり ません ク ロ ッ ク入力およびクロ ッ ク出力の周波数は『Spartan-3 データ シート 』 に記載されている高周波数 DLL の指定範囲内にあり ます

1X デフォルトであ り CLK0 フ ィードバッ クです周波数は CLKIN と同一です

2X CLK2X フ ィードバッ クであ り 周波数は CLKIN の 2 倍です

なし フ ィードバッ ク ク ロ ッ クはあ り ません CLKFX 出力または CLKFX180 出力のみを使用している場合に可能です

TRUE デフォルトであ り デューティ サイクルは 50 に調整されます

FALSE デューティ サイクル調整は行われません

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

12 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLKDV_DIVIDE CLKFX 出力および CLKFX180 出力の周波数を分周する場合の係数を指定します この値は CLKFX_MULTIPLY 属性の値と と もに使用されます設定可能な範囲は整数値の 1 から 32 であ り デフォルトは 1 です

PHASE_SHIFT この属性は CLKOUT_PHASE_SHIFT 属性が FIXED または VARIABLE に設定されている場合にのみ使用できます CLKIN とすべての DCM ク ロ ッ ク出力間の立ち上がりエッジにおけるスキューをコンフ ィギュレーシ ョ ンで定義し DCM ク ロ ッ ク出力を位相シフ ト させます

スキューまたは位相シフ ト値は整数で指定されます この整数値は 次の等式に示すよ うに

ク ロ ッ ク周期の分数で表され範囲は -255 から 255 になり ますデフォルト値は 0 であ り実際に設定可能な値は入力クロ ッ ク周波数によって異なり ます また TCLKIN gt FINE_SHIFT_RANGE の場合には 実際の範囲はよ り小さ くな り ますFINE_SHIFT_RANGE は遅延ラインにおけるすべてのタ ップの総遅延を示します 詳細は「ファ イン位相シフ ト 」 を参照してください

CLKOUT_PHASE_SHIFT 位相シフ ト モードを指定します PHASE_SHIFT 制約と共に使用し DCM のデジタル位相シフ ト (DPS) 機能をインプリ メン ト します また この設定は DLL および DFS からのすべてのクロ ッ ク出力に反映されます 詳細は 「ファ イン位相シフ ト 」 を参照してください

DESKEW_ADJUST FPGA ク ロ ッ ク入力ピンと DCM 出力クロ ッ ク間のクロ ッ ク遅延調整を制御します 「スキュー調整」 を参照してください

この設定を DCM ク ロ ッ ク出力の位相シフ トに使用しないでください 正確な位相シフ ト を行う場合にはCLKOUT_PHASE_SHIFT 制約または PHASE_SHIFT 制約を使用してください

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

なし デフォルトです CLKIN および CLKFB は同位相 (スキューなし ) であ り位相関係は変更できません PHASE_SHIFT = 0 の場合の FIXED 設定と同一です

FIXED 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定され アプ リ ケーシ ョ ンでは変更できません

VARIABLE 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定されますが 動的位相シフ ト制御信号 PSEN PSCLK PSINCDEC および PSDONE を使用してアプリ ケーシ ョ ンで変更可能です

SYSTEM_SYNCHRONOUS デフォルトであ り すべてのデバイスがシステム全体

に共通のクロ ッ ク ソースで動作します

SOURCE_SYNCHRONOUS データ ソースから クロ ッ クが入力されます ソース同期アプリ ケーシ ョ ンがその一例です

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 13

R

DFS_FREQUENCY_MODE DCM のデジタル周波数合成 (DFS) からのクロ ッ ク出力である CLKFX および CLKFX180 に有効な周波数範囲を指定します DLL ク ロ ッ ク出力が使用されている場合はDLL_FREQUENCY_MODE によって CLKIN 入力の周波数範囲がよ り制限されます

STARTUP_WAIT DCM の LOCKED 信号のアサート よ り先に FPGA コンフ ィギュレーシ ョ ンの DONE 信号を High にするかど うかを制御します

2 つ以上の DCM をコンフ ィギュレーシ ョ ンしている場合は すべての DCM がロ ッ クする必要があ り ます

CLKIN_DIVIDE_BY_2 CLKIN が DCM ブロ ッ クに入力される前に 周波数を 2 分周します アプリ ケーシ ョ ンによっては 入力クロ ッ クの周波数を適切な範囲内に低減できます

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

LOW デフォルトであ り DFS は低周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合 CLKIN 入力の周波数範囲はその出力によって変化します

HIGH DFS は高周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている高周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合CLKIN 入力の周波数範囲はその出力によって変化します

FALSE デフォルトであ り DCM がロ ッ ク状態になるのを待たずに DONE 信号がアサート されます

TRUE DCM がロ ッ ク状態になるまで DONE 信号は High になり ません ただし この STARTUP_WAIT は LOCKED 信号が High になるのを妨げるものではあり ません またFPGA のスタート アップ シーケンスのサイクルの始めに LCK (ロ ッ ク ) サイクルを挿入するよ うに修正する必要があ り ます ( 「ビッ ト ス ト リーム生成の設定」 を参照してください) 通常は DONE サイクルまたは GWE サイクルがその後に続きます

FALSE デフォルトであ り CLKIN は直接 DCM ブロ ッ クに入力されます

TRUE CLKIN が DCM に入力する前に その周波数を 2 分周され デューティ サイクルは約 50 に調整されます これは 高周波数のクロ ッ クを使用し DCM の入力クロ ッ クの周波数条件またはデューティ サイ クル条件を満たす場合に有効です また 周波数モードを決定する場合 または位相シフ ト範囲を算出する場合に クロ ッ ク周波数を 2 分周します

14 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他のザイリンクス FPGA ファ ミ リ との互換性R

その他のザイリンクス FPGA ファミ リ との互換性

Spartan-3 のデジタル ク ロ ッ ク マネージャ (DCM) は Virtextrade-II および Virtex-II Pro FPGA ファ ミ リで使用されている DCM とほぼ同様の機能を持ちますが Spartan-3 DCM は第三世代の DCM デザインであ り さ らに機能が向上しています 特に Virtex-II デバイス と比較する と Spartan-3 デバイスはVCCAUX 供給電源における ノ イズ耐性が改善されVirtex-IIPro ファ ミ リ よ り も位相シフ ト機能に柔軟性があ り ます 出力の周波数制限値はVirtex-II および Virtex-II Pro ファ ミ リの DCM の方が高くなっています

またSpartan-IIIIE と比較する と Spartan-3 DCM の遅延ロッ ク ループ (DLL) 機能は大幅に改善され Spartan-IIIIE DLL の機能をすべて備えているだけでなく 周波数合成および位相シフ ト機能が追加されました Spartan-3 の周波数合成では 最大 32 までの係数を使用して入力クロ ッ クを逓倍しますが Spartan-IIIIE DLL での周波数合成機能は 2 逓倍までです 同様に Spartan-3 DCM の分周機能はSpartan-II DLL よ り広範囲に対応しています

DCM 使用のためのクロック条件

DCM は その機能に最大限の柔軟性があるよ うに設計されていますが ク ロ ッ クの周波数と安定性周波数の変動 およびクロ ッ ク ジッタにいくつかの条件があ り ます

入力クロック周波数範囲

DCM のクロ ッ ク入力周波数は アプ リ ケーシ ョ ンにおける DLL ユニッ ト DFS ユニッ ト またはその両方によって決定されます

表 5 に デジタル周波数合成 (DFS) ユニッ トでの入力クロ ッ クCLKIN の周波数範囲を示します DFS ユニッ ト を単独で使用する場合の周波数範囲は DLL 入力ニッ ト よ り も広くな り ますが 両ユニッ ト を使用する場合には よ り厳しい周波数条件を DLL に適用する必要があ り ます 表には データ シートに記載されている仕様名および概算値の 1 つを示していますが実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

FACTORY_JF DCM の DLL ユニッ トでタ ップ設定を修正する頻度を制御します この設定は DLL エレメン トのジッ タ特性に影響を与え DLL_FREQUENCY_MODE 属性に基づいて自動的に指定されます

設計方法と して推奨された場合以外は デフォルト設定を変更しないでください (「FACTORY_JF 設定の修正」 を参照してください)

LOC 図 1 に示すよ うに DCM の物理的な配置位置を指定します

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

DLL_FREQUENCY_MODE FACTORY_JF

LOW 0xC080

HIGH 0xF0F0

DCM_X0Y0 DCM の左下

DCM_X1Y0 DCM の右下 (XC3S50 では設定不可)

DCM_X0Y1 DCM の左上

DCM_X1Y1 DCM の右上 (XC3S50 では設定不可)

DCM 使用のためのクロック条件

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 15

R

表 6 に遅延ロッ ク ループ (DLL) ユニッ トでの入力クロ ッ ク CLKIN の周波数範囲を示します DLLが単独で使用されている場合と DFS と と もに使用されている場合では 同一の周波数条件が適用されます 表には低周波数モードおよび高周波数モードの場合の DLL の周波数範囲を示しています この周波数モードはDLL_FREQUENCY_MODE 属性によって指定されます 表にはデータ シートに記載されている仕様名および概算値の 1 つを示していますが 実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

出力クロック周波数範囲

DCM の出力クロ ッ クに対しても周波数範囲が指定されています 詳細は 「入力クロ ッ クおよび出力クロ ッ クの周波数条件」 を参照して ください

クロック入力およびクロック フ ィードバック入力の変動「安定した単調なクロ ッ ク入力」 で説明するよ うに DCM では安定性があ り単調なクロ ッ ク入力を使用する必要があ り ます しかし DCM 機能の柔軟性を最大限に使用しよ う とする場合 CLKIN で発生するクロ ッ ク ジッタおよび CLKIN 入力と CLKFB 入力の変動をある程度まで許容しなければなり ません

CLKIN 入力におけるジッタには 2 つのタイプがあ り ます 1 つはサイ クル間ジッタであ り このジッタは CLKIN 入力周期があるサイ クルから次のサイ クル間でどの程度の変化を許容できるかを示します 表 7 にデータ シートに記載されている仕様名および概算値を含むサイクル間ジッタの最大許容範囲を示します

表 5 デジタル周波数合成 (DFS) ユニッ トのクロック入力周波数範囲

機能 最小周波数 最大周波数

デジタル周波数合成 (DFS) CLKIN_FREQ_FX_MIN ~ 100 MHz

CLKIN_FREQ_FX_MAX ~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 6 遅延ロック ループ ユニッ トのクロック入力周波数範囲

機能

DLL 周波数モード属性 (DLL_FREQUENCY_MODE)

= LOW = HIGH

最小周波数 最大周波数 最小周波数 最大周波数

遅延ロ ッ ク ループ (DLL)

CLKIN_FREQ_DLL_LF_MIN

~ 24 MHz

CLKIN_FREQ_DLL_LF_MAX

~ 180 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 48 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 7 サイクル間ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_CYC_JITT_FX_LF~ plusmn300 ps

CLKIN_CYC_JITT_FX_HF~ plusmn150 ps

遅延ロッ ク ループ (DLL) CLKIN_CYC_JITT_DLL_LF~ plusmn300 ps

CLKIN_CYC_JITT_DLL_HF~ plusmn150 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

16 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

LOCKED 出力R

も う 1 つのジッタは 周期ジッタ と呼ばれ クロ ッ ク周期間の最大変動を示します サイクル間ジッタがあるサイクルと次のサイクルの差を示すのに対し 周期ジッタはクロ ッ ク周期全体での変化範囲を示

します 表 8 にデータ シートに記載されている仕様名および概算値を含む周期ジッタの最大許容範囲を示します

DCM の安定性に影響を与える別の要素は DLL で使用される ク ロ ッ ク フ ィードバッ ク パスですフ ィードバッ ク パス遅延の変動は 表 9 に示す範囲内でなければな り ません ただし グローバル クロ ッ ク ラ インに接続される場合はチップ上の変動が最小になるため こ こに示した範囲制限は外部フ ィードバッ ク パスにのみ適用されます

LOCKED 出力 DCM の LOCKED 出力は すべての DCM 機能が CLKIN 入力にロ ッ ク している こ と を示し ますLOCKED 信号がアサート される場合にはFPGA アプリ ケーシ ョ ン内で出力クロ ッ クを使用できます

図 5 に LOCKED 出力信号の動作を示しますLOCKED 出力は FPGA のコンフ ィギュレーシ ョ ン終了直後に Low になり RST 入力がアサート されている場合は常に Low です

コンフ ィギュレーシ ョ ン後 DCM は CLKIN 信号の有効無効に関わらず 常にロ ッ ク状態になろ う とします入力クロ ッ クが安定していない場合にはCLKIN 入力が安定するまでFPGA 回路 で RST 入力をアサートする必要があ り ますDLL では CLKIN 入力および CLKFB 入力の両方を使用し これらの立ち上がりエッジが同位相である時に完全にロ ッ ク状態であるこ とを確認しますDFS ではCLKINを使用してク ロ ッ クの周波数が有効であるかを確認します また DCM がロ ッ ク状態になるために数千クロ ッ ク サイクルのサンプルが必要となる場合があ り ます

DCM の CLKIN に対するロッ クが完了する とLOCKED 出力が High にアサート されDCM のクロ ック出力が有効となるため FPGA アプリ ケーシ ョ ン内でこれらの出力を使用できます 『Spartan-3 データ シート 』 の タイ ミ ングに関する章には ロ ッ クに必要な時間のワース ト ケースが記載されています通常 クロ ッ ク周波数が高いほどDLL 出力は短時間でロッ ク状態になり ます またDFS 出力がロックするためには非常に長い時間が必要とな り ます この時間は 逓倍または分周の係数によって変化し

ますが これらの係数が小さいほど時間は短縮します

システム ク ロ ッ クが安定してから FPGA のコンフ ィギュレーシ ョ ンを完了させるために オプシ ョ ンと して DCM がロ ッ ク状態になるまでコンフ ィギュレーシ ョ ンの完了を遅らせるこ とができます この機能は STARTUP_WAIT 属性で制御します

LOCKED が High になる前の DCM ク ロ ッ ク出力信号の動作は保証していません LOCKED が Highになる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な波形が含まれている場合があ ります

表 8 周期ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_PER_JITT_FX_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_FX_HF~ plusmn1000 ps (plusmn1 ns)

遅延ロッ ク ループ (DLL) CLKIN_PER_JITT_DLL_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_DLL_HF~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 9 外部フ ィードバック パス遅延範囲

解説 指定範囲

チップ外にある CLKFB フ ィードバッ ク パス遅延の最大許容範囲 CLKFB_DELAY_VAR_EXT ~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

RST 入力

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 17

R

CLKIN 入力の周波数が指定範囲内である場合DCM は内部遅延のタップを調整し ロ ッ ク状態を維持しますが その制限を大幅に満たしていない場合には ロ ッ ク状態が解除され LOCKED 出力が Lowになり ます

一度 DCM のロ ッ ク状態が解除される と 自動的に再びロッ ク状態に戻るこ とはあ り ません ロ ッ ク状態が解除された場合つま り LOCKED が High から Low となった場合にはFPGA アプリ ケーシ ョ ンでは RST 入力を使用して DCM を リセッ トするなどの適切な方法を使用して 再びロ ッ ク状態にする必要があ り ます

RST 入力 非同期の RST 入力は DCM ロジッ クを リ セッ ト してコンフ ィギュレーシ ョ ン後の設定に戻しますRST ピンはFPGA を再コンフ ィギュレーシ ョ ンする場合または許容範囲を超えている入力周波数を変更する場合に使用して ください このピンはアクティブ High であ り ダイナミ ッ ク信号またはグランドに接続する必要があ り ます また RST 入力は最低 2ns 間アサート しなければなり ません

コンフ ィギュレーシ ョ ン後に 入力ク ロ ッ ク周波数が安定していない場合 ク ロ ッ クが安定するまで

RST をアサー ト して ください また 外部フ ィードバッ クを使用している場合は コンフ ィギュレーシ ョ ン直後に DCM を リセッ ト します31ページの図 20 に SRL16 シフ ト レジスタ プリ ミ ティブを使用した リセッ ト方法の例を示します

LOCKED 周波数が High から Low になる場合のよ うに DCM のロ ッ ク状態が解除される と FPGAアプリ ケーシ ョ ンでは RST をアサート しDCM に入力クロ ッ ク周波数に対して再ロ ッ ク させる必要があ り ます

図 5 LOCKED 出力の機能的な動作

LOCKED HIGH

FPGA RST

Y

N

Y

N

FPGA

LOCKED LOW

CLKIN

LOCKED LOW

RST

x462_05_062103

CLKIN

RST

RST

18 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

DCM の LOCKED 出力が High の場合 RST がアサート される と この LOCKED 出力は 4 ク ロ ッ クサイ クル以内に Low になり ます このため リセッ ト後は DCM を再びロ ッ ク状態にさせます

また RST をアサートするこ とによって DCM の遅延タップ位置がゼロに戻り このタ ップ位置を変更するこ とによってDCM のクロ ッ ク出力ピンでグ リ ッチが発生する可能性があ り ます 同様にRSTはクロ ッ ク出力のデューティ サイクルにも影響を与えます

さ らに RST がアサート される と現在の可変位相シフ ト値は PHASE_SHIFT 属性で指定された値に戻り ます

DCM Wizard DCM を使用するアプリ ケーシ ョ ンを容易にするために ザイ リ ンクス ISE には 順を追って DCM を設定できるソフ ト ウェア Wizard が含まれています 図 6 に示すよ うに DCM Wizard を使用するこ とによってVHDL 構文または Verilog 構文で DCM をインスタンシエートするベンダ固有のロジッ ク合成ファイルを生成できます また DCM Wizard では特定のインプリ メンテーシ ョ ン用にユーザー制約ファイル (UCF) を生成できますさ らにすべてのユーザー仕様はXilinx Architecture Wizard (XAW)設定ファイルに保存されます

DCM Wizard の起動DCM Wizard を起動するためにはWindows のスタート ボタンから起動するまたはザイ リ ンクス ISEProject Navigator ソフ ト ウェアから起動する という 2 つの方法があ り ます

Windows のスタート ボタンから起動

DCM Wizard を Windows スタート ボタンから起動する場合は[スタート ] rarr [すべてのプログラム] rarr[Xilinx ISE 5] rarr [アクセサリ ] rarr [Architecture Wizard] をク リ ッ ク します 図 7 に設定ウ ィンド ウを示します

bull DCM のオプシ ョ ン設定を保存する Xilinx Architecture Wizard (xaw) ファ イル名を入力します

bull こ こで [Browse] ボタンをク リ ッ ク して xaw ファ イルを選択するこ と も可能です

bull 出力ファイルのロジッ ク合成言語を VHDL または Verilog から選択します

bull ロジッ ク合成ツールを選択します DCM Wizard では 指定した合成ツールに応じて ベンダ固有の出力ファイルが生成されます

bull ターゲッ ト デバイスに Spartan-3 を選択します

図 6 DCM Wizard の DCM 設定用グラフ ィ カル インターフェイス

DCM Wizard

User contraintsfile (UCF)

Vendor-specificVHDL or Verilog

Xilinx ArchitectureWizard (XAW)

settings file

Graphically configure aSpartan-3 Digital ClockManager (DCM)

x462_06_061803

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 19

R

Project Navigator から起動

Project Navigator のメニュー バーから または [Sources in Project] ウ ィンド ウから DCM Wizard を起動できます メニュー バーで [Project] rarr [New Source] を選択するか [Sources in Project] ウ ィンドウで右ク リ ッ ク し [New Source] を選択してください

図 8 に示すよ う に リ ス ト か ら [Architecture Wizard] を選択し ます Xilinx Architecture Wizard(xaw) ファ イル名を入力し そのファイルを保存するディ レク ト リ を選択した後 [Next] をク リ ッ クします

図 7 Architecture Wizard の設定

図 8 Project Navigator での Architecture Wizard 設定

Xilinx Architecture Wizard Setup

My_Spartan-3 Browse

XAW File

Output File Type

VHDL Verilog

XST

Synthesis Tool

XC3S1000-FT256-4 Select

OK Cancel

Part

DCM

Spartan-3

[OK]

x462_07_061803

New

User DocumentVHDL ModuleCoreGen IPSchematicVHDL LibraryVHDL PackageVHDL Test BenchTest Bench WaveformBMM FileMEM FileImplementation Constraints FileArchitecture WizardState Diagram

My_Spartan-3

F ile Name

MyDirectory

Lo cation

Add to Project

lt Back Next gt Cancel Help

DCM

[Next]

Architecture Wizard

x462_08_061803

20 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

Wizard 選択前述した手順はすべての ISE Architecture Wizard に共通ですが Spartan-3 FPGA は図 9 に示す DCMWizard をサポート します こ こで [OK] をク リ ッ ク し 次に進みます

[General Setup] 図 10 に示すよ うに ほとんどのオプシ ョ ンは DCM Wizard の [General Setup] ダイアログ ボッ クスで設定します 楕円の枠内には その設定に対応する DCM プリ ミ ティブ属性名を示します

bull DCM のインスタンス名を入力します このインスタンス名は Verilog または VHDL 出力ファイル内で使用されます

bull 最終的なアプリ ケーシ ョ ンにおける出力および機能を選択するためには 必要な DCM ク ロ ッ ク出力のチェッ ク ボッ クスをオンにします チェッ ク ボッ クスをオンにした出力に対しては それに関連したオプシ ョ ンの設定が可能になり ます

bull CLKIN ク ロ ッ ク入力の周波数を入力します 周波数を MHz で指定するかまたはクロ ッ ク周期をns で指定して ください この値によって DCM の DLL_FREQUENCY_MODE 属性が設定されます

bull CLKIN ソースが FPGA の内部であるか外部であるかを指定します[External] を選択した場合DCM Wizard は自動的にグ ローバル バッ フ ァ入力 (IBUFG) プ リ ミ テ ィ ブを挿入し ます[Internal] を選択した場合は ソース信号は HDL ソース ファ イル内の ト ップ レベル入力となり ます

bull CLKDV 出力をオンにした場合は クロ ッ ク分周回路の [Divide by Value] 値を指定します この値によって DCM の CLKDV_DIVIDE 属性が設定されます

bull DCM へのフ ィードバッ ク パスを指定します CLKFX 出力または CLKFX180 出力のみを使用する場合は [None] を選択します これらの出力を使用しない場合は フ ィードバッ クが必要ですFPGA 内部からのフ ィードバッ クを使用する場合は [Internal] を選択し外部からのフ ィードバック ループを使用する場合は [External] を選択します さ らに DCM フ ィードバッ クのソースをCLK0 (1X) または CLK2X (2X) から選択します この選択によってDCM の CLK_FEEDBACK属性が設定されます

図 9 Spartan-3 FPGA でのみ選択可能な DCM Wizard

Xilinx Architecture Wizard Selection

DCM Wizard

OK Cancel

Select Wizard

Spartan-3 DCM Wizard [OK]

x462_09_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 21

R

bull すべての DCM 出力における位相シフ トの有無を指定します デフォルト設定は位相シフ ト なし (None) です 位相シフ トが必要な場合は 位相シフ ト値と して [Fixed] または [Variable] を選択します [Variable] を選択するこ とによって 動的位相シフ ト制御 PSEN PSINCDECPSCLK および PSDONE が使用可能となり DCM の CLKOUT_PHASE_SHIFT 属性が指定されます Fixed モードおよび Variable モードのいずれを選択する場合でも 固定位相シフ ト値あるいは動的位相シフ トの初期値を決定する [Phase Shift Value] を指定します この値によってDCM の PHASE_SHIFT 属性が設定されます

bull アドバンス ド オプシ ョ ン ウ ィンド ウを開く場合は [Advanced] ボタンをク リ ッ ク します

bull 設定の完了後 [Next] をク リ ッ ク し ク ロ ッ ク バッファ ダイアログ ボッ クスに進みます

アドバンスド オプシ ョ ン図 11 に示すアドバンス ド オプシ ョ ン ウ ィンド ウで さ らに詳細な DCM オプシ ョ ンを設定できます

bull デフォルトではDCM は FPGA のコンフ ィギュレーシ ョ ンに対して影響を与えませんが [Yes] をク リ ッ ク した場合は DCM が LOCKED 出力をアサートするまで FPGA コンフ ィギュレーシ ョンで DONE 信号のアサート を遅らせるこ とができます この設定は DCM の STARTUP_WAIT属性で定義します このよ うに [Yes] を選択した場合は ビッ ト ス ト リーム生成オプシ ョ ンの追加

図 10 [General Setup] ダイアログ ボックスでの DCM オプシ ョ ン設定

Xilinx DCM Wizard - General Setup

MY_DCMDCM Instance Name

Input Clock Frequency

MHz ns 2

Phase Shift Value

30

Advanced

Source

CLK0

CLK90

CLK180

CLK270

CLKDV

CLK2X

CLK2X180

CLKFX

CLKFX180

LOCKED

STATUS

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDECPSCLK

CLKIN SourceInternal

External

Divide By Value

FeedbackInternal External None

Value 1X 2X

Duty Cycle Correction

Yes No

Phase ShiftNone Fixed Variable

23 More Info

lt B ack Next gt Cancel

DCM

CLKFX CLKFX180

CLKDV

MHz ns

Advanced

(BUFG)

[Yes] CLK0CLK90 CLK180 CLK270

50CLK0 (1X)CLK2X (2X)

[Next]

CLKDV

[Fixed] PSEN PSINCDECPSCLK

[Variable]

DLL_FREQUENCY_MODE

CLK_FEEDBACK

CLKDV_DIVIDE

CLKIN IBUFG

[External][Internal]

DUTY_CYCLE_CORRECTIONCLKOUT_PHASE_SHIFT

DCM

PHASE_SHIFT

x462_10_061803

22 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

変更が必要です この変更については 「DCM LOCKED 出力と コンフ ィギュレーシ ョ ン ロジッ クの設定」 で説明します

bull ある特定の DCM において CLKIN 入力の周波数が高すぎる場合には [Divide Input Click by 2]の [Yes] をク リ ッ ク し 入力周波数を半減させて ください これによって DCM ブロ ッ クに入力前のデューティ サイ クルは約 50 にな り ます この設定は DCM の CLK_FEEDBACK 属性で定義します

bull ソース同期のデータ転送が必要なアプリ ケーシ ョ ンでは [DCM Deskew Adjust] 値を [SOURCE_SYNCHRONOUS] に変更します SOURCE_SYNCHRONOUS または SYSTEM_SYNCHRONOUS 以外の値を使用する場合はザイ リ ンクスにお問い合わせください この設定は DCM の CLK_FEEDBACK 属性を定義します 「スキュー調整」 を参照して ください

bull [OK] をク リ ッ ク し 変更を適用して [General Setup] ウ ィンド ウに戻り ます

クロック バッファ次に DCM の各クロ ッ ク出力に対するクロ ッ ク バッファを定義します(図 12 参照) DCM Wizard のデフォルト設定では 自動的にすべての DCM ク ロ ッ ク出力にグローバル バッファ (BUFG) を使用しますが Spartan-3 デバイスでは 上辺および下辺のそれぞれにある 4 つのグローバル バッファを同一辺にある 2 つの DCM で共有しますXC3S50 では上辺または下辺に 1 つの DCM があ り オプシ ョ ンと して同じ辺にある 4 つのクロ ッ ク バッファすべてに接続できます

bull [Clock Buffer Settings] にある [Customize] をク リ ッ ク し DCM の各クロ ッ ク出力にクロ ッ クバッファの種類を指定します

bull DCM の各クロ ッ ク出力に対して リ ス トから [Clock Buffer] 出力タイプを選択します 表 10 に選択可能なクロ ッ ク バッファ オプシ ョ ンを示します

bull [Enabled Buffer] 出力タイプを使用する際にはバッファ イネーブル (CE) 入力の信号名を指定できますが 自動的に作成された信号名も使用できます

bull [Clock Mux] 出力タイプを使用する場合もセレク ト (S) 入力の信号名を指定できますが自動的に作成された信号名も使用できます

bull [Next] まはた [Finish] をク リ ッ ク し 設定を完了します [Next] ボタンが表示されるのは[General Setup]ダイアログ ウ ィ ン ド ウで CLKFX 出力または CLKFX180 出力を選択した場合のみです それ以外の場合は [Finish] をク リ ッ ク し HDL 出力を生成します ( 「HDL 出力の生成」を参照して ください)

図 11 DCM アドバンスド オプシ ョ ン設定

Xilinx DCM Wizard Advanced

Wait for DCM lock before DONE signal goes high

Yes No

Divide Input Clock by 2

Yes No

SYSTEM_SYNCHRONOUS

OK Cancel

DCM Deskew Adjust

CLKIN 12

FPGA

DONEDCM

DCM

[OK]

DCM

STARTUP_WAIT

CLKIN_DIVIDE_BY_2

DESKEW_ADJUST

x462_11_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 23

R

図 12 DCM Wizard を使用した DCM 出力のバッファ オプシ ョ ン設定

Xilinx DCM Wizard - Clock Buffers

This dialog sets up the clock buffers for all the DCM clock outputs selected in the GeneralSetup dialog

Clock Buffer Settings

U se Global Buffer (BUFG) for all selected DCM clock outputs

C ustomize (using grid below)

Reference the lsquoMore Inforsquo button for more information on customizing the global buffers

M ore Info

lt Back N ext gt Cancel

Clock Buffer Input I0 Input I1 Input CES

Global Buffer CLK0

Enabled Buffer CLK90 CLK90_ENABLE_IN

Clock Mux CLK2X180 CLKFX CLKFX_SELECT_IN

Lowskewline CLK180

Local Routing CLK270

CLK2XGlobal BufferGlobal Buffer

Enabled BufferClock MuxLowskewlineLocal RoutingNone

Output O

CLK0_OUT

CLK90_OUT

CLKFX_OUT

CLK180_OUT

CLK270_OUT

CLK2X_OUT

DCM Wizard

BUFG

DCM

DCMFPGA

FPGA

[Next]

x462_12_061703

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

グローバル バッファ

4 つあるグローバル バッファ (BUFG) の 1 つを同じ辺にある DCM に接続します

イネーブル バッファ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク バッファ (BUFGCE) と して設定しているバッファに接続します CE 入力は High の場合にバッファをイネーブルにしLow の場合は バッファ出力がゼロになり ます

BUFGI0 O

BUFGCEI0 O

CE

CE O

0 0

1 I0

24 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

クロック周波数合成

図 13 に示すク ロ ッ ク周波数合成ダイアログ ボッ ク スは [General Setup] ダイアログ ウ ィ ン ド ウでCLKFX 出力または CLKFX180 出力を選択した場合のみに表示されます

こ こでは必要な出力周波数 または逓倍および分周の係数を指定します [Valid Ranges for SelectedSpeed Grade] で周波数範囲 (CLKIN を ns で指定した場合は遅延) を指定します 周波数範囲にはDFS_FREQUENCY_MODE 属性で設定可能な両方の値が表示されます DCM で DLL に関係したクロ ッ ク出力を使用する場合 この範囲条件はよ り厳し くな り ます

bull [Use output frequency] のチェッ クをオンにし MHz または ns で周波数を入力します [Calculate] をク リ ッ クする と CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性の値が算出されます 入力した範囲から可能な逓倍値および分周値を算出できない場合は DCM Wizard で別の出力周波数値を入力するよ うに求めるエラー メ ッセージが表示されます ソ リ ューシ ョ ンがある場合は [Generated Output] に逓倍値 分周値 およびジッ タの値が表示されます ( 「ク ロ ック ジッタおよび位相ノ イズ」 を参照してください)

bull オプシ ョ ンと して[Use Multiply (M) and Divide (D) values] のチェッ クをオンにしこれらの値を入力でき ます [Calculate] を ク リ ッ ク し 出力周波数およびジ ッ タ を計算し ます 結果は[Generated Output] に表示されます

bull 最後に[Finish] をク リ ッ ク しHDL 出力を生成します (「HDL 出力の生成」を参照してください)

ク ロ ッ ク マルチプレクサ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク マルチプレクサ (BUFGMUX) として設定しているバッファに接続します S 入力はクロ ッ ク ソースを選択します

低スキュー ライン 低スキューのプログラマブル相互接続に接続します

ローカル配線 スキューが重要ではない場合において ローカル相互接続に接続します

なし DCM 出力をディ スエーブルにします

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

O

S

BUFGMUXI0

I1 S O

0 I0

1 I1

I0

I0

VHDL および Verilog のインスタンシエーシ ョ ン

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 25

R

HDL 出力の生成すべてのパラ メータを入力後 [Finish] をク リ ッ クする と 図 14 に示すよ うに DCM Wizard が自動的に VHDL または Verilog HDL 出力ファイルを生成します また ユーザー制約ファイル (UCF) も生成されます

VHDL および Verilog のインスタンシエーシ ョ ン

DCM Wizard を使用し VHDL または Verilog HDL 記述を作成する方法が最も容易ですが VHDLソースおよび Verilog ソースも利用できます

Project Navigator の言語テンプレート

ISE 52i およびそれ以降の Project Navigator では DCM の言語テンプレートが使用できます DCMテンプレート を選択する場合はProject Navigator のメニューで [Edit] rarr [Language Templates] をクリ ッ ク します 図 15 に示すテンプレー ト で Verilog フォルダまたは VHDL フォルダを展開表示し

図 13 デジタル周波数合成の逓倍値と分周値の設定 およびジッ タの算出

Xilinx DCM Wizard - Clock Frequency Synthesizer

Valid Ranges for Selected Speed Grade

Inputs for Jitter Calculations

U se output frequency

M Hz ns875

U se Multiply (M) and Divide (D) values

4M 1D

Input Clock Frequency 30 ns C alculate

lt Back Finish Cancel

More Info

Generated Output

MOutput

Frequency(MHz)

29 111

Period Jitter(pk-to-pk ns)

D

11 875

Period Jitter(unit interval)

010

DFSMode

Fin (MHz)

Low

High

24000 - 18]0000

50000 - 270000

24000 - 210000

210000 - 270000

Fout (MHz)

MHz ns[Calculate]

DCM Wizard (M)

(D)

(M)(D)

[Calculate]

[Calculate]

[Finish]

DCM

CLKFX_MULTIPLY CLKFX_DIVIDE

CLKFX_MULTIPLY CLKFX_DIVIDE

DFS_FREQUENCY_MODE

x462_13_061803

図 14 DCM Wizard での VHDL または Verilog HDL 出力ファイルの生成

Xilinx Architecture Wizard

Cancel

Generating HDL file

x462_14_061803

26 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

Component Instantiation フォルダの DCM フォルダを選択します 次にDCM フォルダにある DCMソース ファ イルを選択する と 隣接したウ ィンド ウにソース ファ イルが表示されます

このファイルは参照用と して または内容を新規ソース ファ イルに貼り付けて使用できます

VHDL および Verilog リファレンス ファイル

また この VHDL および Verilog のソース ファ イルは 次のザイ リ ンクス FTP サイ トからダウンロードできます

bull VHDL DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_vhdlzip

bull Verilog DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_verilogzip

クロック スキューの低減

スキューの低減はDCM の基本的な機能の 1 つです 50 MHz 以上の速度で動作するデザインではクロ ッ ク スキューの低減が重要であ り このク ロ ッ ク スキューの低減に関連する概念は DCM を使用したその他のアプリ ケーシ ョ ンにも応用できます

クロック スキューとはク ロ ッ ク スキューは本質的にすべての同期システムに存在します ク ロ ッ ク ソースによって生成されたクロ ッ ク エッジは システム内の異なる点に 異なる時間に到達します これは 1 つのデバイス内の場合も クロ ッ クで接続された異なるデバイスへのクロ ッ ク入力の場合もあ り ます こ こで発生する到達時間の差がクロ ッ ク スキューです

図 16 に 同期システムにおけるクロ ッ ク スキューの例を示します ク ロ ッ ク ソースによって ク ロ ック入力が FPGA へ駆動され FPGA 上の入力ピンに入る と 内部の低スキュー グローバル ク ロ ッ クネッ ト ワークを使用して分配され FPGA 内部のフ リ ップフロ ップに到達します ク ロ ッ ク パスにある各エレ メン トによって フ リ ップフロ ップにクロ ッ ク エッジが到達する時間に遅延が生じます その結果と して フ リ ップフロ ップにおけるク ロ ッ ク入力 (B) で遅延が発生する つま り ク ロ ッ ク ソース (A)と比較してスキューが発生します この例では ク ロ ッ ク スキュー つま り到達時間の差を ∆b と します

図 15 Project Navigator 言語テンプレートでの DCM デザインの選択

Language Templates

Verilog

Component Instantiation

Block RAM

CLK0

CLK0_FB

CLK2X

Templates Module BUFG_CLK0_SUBM Description Verilog Submodule DCM with CLK0 deskew-

module BUFG_CKL0_SUBM ( CLK_IN RST CLK1X LOCK

DCM

x462_15_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 27

R

同様に ク ロ ッ ク ソースは FPGA 内部で再びバッファを介し ボード上にある別のデバイスを駆動します この例では クロ ッ ク ソースは再び入力ピンを通って FPGA に入り グローバル ク ロ ッ ク ネット ワークで分配され FPGA の出力ピンを通って PCB 上のト レースで別のデバイスに接続されますそのため ク ロ ッ ク パスにおける総遅延が大き くな り その結果と して発生するスキュー ∆c も大き くな り ます

クロック スキュー パフォーマンス低下の原因ク ロ ッ ク スキューによって セッ ト アップ時間 および clock-to-output 遅延が増加し ク ロ ッ ク サイクル時間が長くなるため デザインのパフォーマンス全体が低下する可能性があ り ます また ク ロ ッ クスキューによって 長いホールド時間が必要となる場合があ り このホールド時間を確保できない場合

には 不安定な動作を引き起こす可能性があ り ます

スキューの削除

ク ロ ッ ク スキューを削除する方法はあるのでし ょ う か 幸いにも デジタル ク ロ ッ ク マネージャ(DCM) はこのよ うな機能を備えています 図 17 に図 16 と同様の例を示しますがこ こでは Spartan-3 デバイスを使用しています 2 つの DCM によって次のよ うにクロ ッ ク スキューが削除されます 1つの DCM がFPGA 内部でクロ ッ ク入力されたものからのスキューを削除しも う一方の DCM が ボード上で別のデバイスにクロ ッ ク入力する場合のスキューを削除します この結果 (A) (B) および (C)のすべての点で理想的なクロ ッ ク間のアライ メン ト を実現できます

実際には ク ロ ッ ク スキューはどのよ うに削除されるのでし ょ うか ク ロ ッ ク スキューの原因は クロ ッ ク パスにおける遅延である こ と を思い出して ください 図 17 では (B) のク ロ ッ クで ∆ 分のスキューがあ り (C) のクロ ッ クに ∆c 分のスキューがあ り ましたが ク ロ ッ クを (B) に ∆b 分早く到達させ (C) に ∆c 分早く到達させる方法がある場合には どのよ うになるでし ょ うか このよ う な場合にはすべてのクロ ッ クのエッジが一致するよ うに調整されセッ ト アップ時間および clock-to-output 遅延が減少するため システム全体のパフォーマンスが向上します

図 16 すべての同期システムに存在するクロック スキュー

OtherDevice on

Board

FPGA

c b

A

A

C

B

B

C

x462_16_062403

28 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

過去のクロック動作から将来のクロック動作を予測

Spartan-3 FPGA は非常に高度なデジタル ロジッ クを使用していますが 将来の動作を予測するこ とはできません だたし DCM は過去のクロ ッ ク動作を使用し 将来のク ロ ッ ク動作を予測するために役立てます システムに入力されるほとんどのクロ ッ クの周波数は 不変で単調であるため 入力クロ ックの周期 (T) もほぼ一定になり ます

マイナスの遅延を挿入し ク ロ ッ ク スキューの影響を無効にするこ とはできないため DCM は目的としている時間に到達しているよ うに見えるよ うにクロ ッ クを遅らせます これは どのよ うに行われるのでし ょ うか ク ロ ッ ク サイクルは一定の周期 (T) で繰り返されます 図 18 に示すよ うに (B) におけるクロ ッ クは ∆b 分進んでいるよ うにみえますが 実際には (T ndash ∆b) 分遅くなっています 同様に(C) におけるクロ ッ クは (T ndash ∆c) 分遅れています

図 17 Spartan-3 デザインにおけるクロック スキューの削減

図 18 一定周波数のクロックを遅延させる

OtherDevice on

Board

Spartan-3 FPGA

DC

M

Ideal Clock Alignment

b

cEarly Clocks Eliminate Skew

A

B

C

A

B

C

DC

M

A

B

C

x462_17_062403

c

b

Clock Period (T)

Delay=T- b

Delay=T- c

A

B

C

x462_18_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 29

R

入力クロ ッ ク信号は単調であるため ク ロ ッ ク周期 (T) は容易にわかり ますが ク ロ ッ ク スキュー遅延である ∆b および ∆c はど うでし ょ うか 異なる条件の元で複数のシステムにおける動作を詳細に検証するこ とによって これらの値を決定するこ と もできますが 実際には現実的である とは言えません

さ らに ∆b および∆c の値はデバイスによって異なり 同一のデバイス上でも温度または電圧によって変化します

Spartan-3 DCM では ∆b および ∆c をあらかじめ決定するのではなく フ ィードバッ ク ループによって遅延を確認する遅延ロッ ク ループ (DLL) を使用します (図 17 を参照してください) こ こで示している例では 2 つの DCM を使用して 1 つの DCM が内部信号のスキューを削減し も う一方の DCMが外部デバイスへの信号のスキューを削減します また 両方の DCM に各ク ロ ッ ク フ ィードバッ クループがあ り ます DLL は温度または電圧によって引き起こ されるわずかな変更にも適応します

ターゲッ トのロック

適切な遅延を決定し挿入するためにはDCM で数千クロ ッ ク サイ クルのサンプルが必要です DCMで適切な遅延が挿入される と LOCKED 出力信号がアサート されます

DCM で LOCKED 信号がアサート されるまでDCM ク ロ ッ ク出力は使用しないでください DCM が入力クロ ッ ク信号に対してロ ッ ク状態になるまでのク ロ ッ ク出力は無効です DCM がロ ッ ク状態になる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な要素が含まれている可能性があ り ます

アプリ ケーシ ョ ンではLOCKED 信号を出力クロ ッ クが有効であるこ とを確認するために使用しますLOCKED 信号をクロ ッ ク信号が使用可能な状態であるこ とを示すものと して理解してください

安定した単調なクロック入力

DCM が適切に動作するためには 安定した単調なクロ ッ ク入力が必要です そのよ う なク ロ ッ ク入力によって ク ロ ッ ク周期を予測でき出力クロ ッ クのタイ ミ ングを適切に調整できます DCM はいったんロ ッ ク状態になる と『Spartan-3 データ シート 』 で指定された値までのクロ ッ ク周期変動に対応できます 「DCM 使用のためのクロ ッ ク条件」 を参照して ください

入力ク ロ ッ ク周波数が変動して指定された範囲外と なった場合 DCM のロ ッ ク状態が解除されLOCKED 出力は Low になり ます ロ ッ ク状態が解除された場合 DCM を リセッ ト して再びロ ッ クする必要があ り ます 入力クロ ッ クが指定された制限を満たしている場合はLOCKED 出力が High である限り出力クロ ッ クは常に有効です しかし LOCKED 出力は High を維持していますが クロ ッ ク入力が指定された範囲外で CLKDV 出力または CLKFX 出力が無効となる場合があるため問題のないデザインを作成するためには 安定した単調なクロ ッ ク入力が重要です

DCM CLKIN 入力へのパスと して 4 つのグローバル バッファ入力 (IBUFG) のうち デバイス上で同一辺にあるバッファ入力の 1 つを使用する こ と を推奨します IBUFG パスを使用する こ とによってパッ ドからグローバル バッファを通って DCM に到達までの遅延がスキュー調整された出力から削除されます ただし 表 11 に示すその他のパスも使用できます また CLKIN 入力を駆動する信号は汎用相互接続を通る汎用入力ピン (IBUF プリ ミ ティブ) グローバル バッファ入力 (IBUFG) グローバル バッファ マルチプレクサ (BUFGMUX BUFGCE) からの入力と して使用できます 同様に LVDSク ロ ッ ク入力をクロ ッ ク入力と して使用できる場合もあ り ます スキュー調整ロジッ クはLVCMOS または LVTTL のよ うなシングル エンドのクロ ッ ク入力のために特性評価されています ただし 差動信号では IO タイ ミ ングによって わずかな位相エラーが発生する可能性があ り ます 特定の IO タイミ ングについては 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

30 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

確実なソースからのフ ィードバック

適切な遅延に対してロ ッ ク信号をアサートするために DCM は 入力クロ ッ クおよびクロ ッ ク分散遅延後にタ ップされるフ ィードバッ ク ク ロ ッ クの両方をモニタします ク ロ ッ ク フ ィードバッ ク パスにおける総遅延に制限はあ り ません DLL では 必要に応じて逓倍したク ロ ッ ク周期を使用する こ とによって出力クロ ッ クを遅らせます このよ うにDCM は内部遅延または外部遅延を相殺できますがクロ ッ ク フ ィードバッ クは適切なフ ィードバッ ク地点に接続する必要があ り ます

内部クロック信号からのスキュー削除

図 19 に示すよ うにFPGA 内部のスキューを削減する場合フ ィードバッ ク タ ップは FPGA 内部のエレ メン トに入力されるクロ ッ ク と同一のクロ ッ ク とな り ます 通常 フ ィードバッ ク ク ロ ッ クは デバイス上で DCM と同一辺にある ク ロ ッ ク バッファ (BUFG) またはグローバル ク ロ ッ ク マルチプレクサ (BUFGMUX または BUFGCE) に接続されている DCM からの CLK0 出力 (位相シフ ト なし ) ですまたは CLK0 出力ではなく DCM の CLK2K 出力 (位相シフ ト なし 2 逓倍) をフ ィードバッ ク と して使用できます

表 11 クロック入力ソース

CLKIN ソース 説明

グローバル バッファ入力を使用

グローバル バッファ入力 IBUFG は DCM への外部クロ ッ クのソースと して適切です パッ ドからグローバル バッファを通り CLKIN 入力までの遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

グローバル ク ロ ッ ク バッファ BUFG BUFGCE または BUFGMUX プリ ミ ティブを使用するグローバル ク ロ ッ ク バッファは内部生成された DCM へのクロ ッ ク ソース と して適切です グローバル バッファを通る際の遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

汎用 IO を使用 任意のユーザー IO IBUF は 外部クロ ッ クのソースと して使用できます パッ ドから DCM への遅延をあらかじめ決定するこ とはできません これは入力パスとなる可能性を持つパスが多数

存在するためであ り その結果 DCM は遅延を削除できません

内部ロジッ クから派生 FPGA 内部のロジッ ク も ク ロ ッ ク ソース と して使用できます しかしロジッ クから DCM への遅延をあらかじめ決定するこ とはできないため DCM は遅延を削除できません

I OIBUFG

BUFGI O

BUFGCEI O

CE

O

S

BUFGMUXI0

I1

I OIBUF

InternalLogic

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 31

R

外部クロック信号からのスキュー削除

外部クロ ッ クを使用した DCM フ ィードバッ クの設計は内部クロ ッ クの場合よ り も複雑です 図 20 に示すよ うに理想的にはフ ィードバッ ク ク ロ ッ クは PCB ト レースまたは外部クロ ッ クの再バッファの後のすべての外部クロ ッ クに入力される点から始ま り ます

LOCKED 信号は DCM がロ ッ ク状態になったこ と およびク ロ ッ ク信号が有効であるこ とを示します LOCKED 信号によって 外部デバイスが使用可能になり その反転バージ ョ ンはアクティブ Lowのチップ イネーブル信号に接続できます

コンフ ィギュレーシ ョ ン後の DCM リセッ ト

外部フ ィードバッ クを使用する場合 コンフ ィ ギュレーシ ョ ン直後に DCM の リ セッ ト をパルスしDCM のロ ッ ク状態を維持する必要があ り ます 図 20に示すよ うに0x000F で初期化された SRL16 から必要な リセッ ト パルス信号を出力できます 「RST 入力」 を参照して ください

なぜリセッ トする必要があるのか

なぜ このよ うに追加的な リセッ ト パルスが必要なのでし ょ うか 最適にロ ッ クするためには DCMをロ ッ ク状態にし その状態で安定させるために 外部フ ィードバッ クでコンフ ィギュレーシ ョ ンされ

た DCM で CLKIN および CLK0 または CLK2X のいずれかの信号を使用する必要があ り ます コンフ ィギュレーシ ョ ン実行中は FPGA の IO バッファがまだアクティブではないために 外部フ ィードバッ ク CLKFB を使用できません

コンフ ィギュレーシ ョ ンの終了時に デバイスがスター ト アップ シーケンスを開始する と DCM はキャプチャ プロセスを開始します この時点では FPGA のグローバル 3-ステート信号 (GTS) はアサー

図 19 内部クロック信号でのスキュー削減

I OBUFG

FPGA

(or BUFGMUX or BUFGCE)

( )

ldquoClock Goodrdquo

I OIBUFG

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)(

)

x462_19_061803

図 20 外部クロック信号でのスキュー削減

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)

I OOBUF

I OOBUF

FPGA

CLK

ENABLE

( )

RESETD

WCLK

A[30]

Q

INIT=000F

SRL16

I OIBUFG

I OIBUFG

x462_20_062203

32 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ト されているため すべての出力ピンは 3-ステート (ハイ -インピーダンス フローティング) 状態を維持しています このため CLKFB 信号のロジッ ク ステートはわかり ません

GTS のアサート状態の解除後CLKFB に信号が現れDCM が CLKFB 信号を取り込みますが リセット パルスがない場合 DCM が適切な時点でロ ッ ク しない可能性があ り DCM でジッタがわずかに増加し ク ロ ッ ク サイクル レイテンシも増加する可能性があ り ます

また リセッ ト パルスがない場合 PCB のシグナル インテグ リティの問題によって 3-ステート状態にある CLKFB 信号がボード上でほかの信号と ク ロス カップルする とい う問題が発生する可能性があり ます DCM では この無効なクロス カップルされた信号を CLKFB 信号と認識し ロ ッ クするためGTS 信号のアサートが解除され 適切な CLKFB 信号が現れたと きにロ ッ クできない場合があ り ます

遅延ロック ループとはク ロ ッ ク遅延を削除するための 2 つのタイプの回路

bull 遅延ロッ ク ループ (DLL)

bull 位相ロッ ク ループ (PLL)

DLL および PLL には クロ ッ ク分散遅延を削除する という機能以外に周波数合成 クロ ッ ク調整および位相シフ ト などの機能があ り ます

遅延ロック ループ (DLL)

図 21 に示すよ うに単純な形の DLL はタップ遅延ラインおよび制御ロジッ クで構成されます 遅延ラインは入力クロ ッ クCLKINに遅延を挿入したク ロ ッ クを生成し ク ロ ッ ク分散ネッ ト ワークでは そのクロ ッ クがすべての内部レジスタおよびクロ ッ ク フ ィードバッ ク CLKFB ピンに配線されます 一方制御ロジッ クは遅延ラインを調整するために常に入力クロ ッ クおよびフ ィードバック ク ロ ッ クをサンプルします 遅延ラインでは電圧制御遅延または不連続の遅延エレ メン トが使用されています 最適で安定したパフォーマンスを実現するために Spartan-3 DLL ではすべてのデジタル遅延ラインを使用します

DLL は入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クの立ち上がりエッジが調整されるまで それらのクロ ッ ク間に遅延を挿入し ク ロ ック周期から クロ ッ ク分散遅延分を差し引いた時間だけフ ィードバッ ク ク ロ ッ クを遅らせるこ とによって機能します DLL および PLLの専門的解説では フ ィードバッ ク ク ロ ッ クは 360deg 位相がずれたもの つま り同一の位相に再び現れるものと定義されています

入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クのエッジが調整される とDLL がロ ッ ク し これらの 2 つのクロ ッ ク間に認識できる差異はなくな り ます つま り DLL 出力クロ ッ クのクロ ッ ク分散ネッ ト ワークにおける遅延がなくな り ソース ク ロ ッ ク とそのロード間の遅延を効果的に削除されています

図 21 遅延ロック ループ (DLL) ブロック図

ClockDistributionNetwork

Control

VariableDelay Line

CLKOUT

CLKFB

CLKIN

x462_21_061903

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 33

R

スキュー調整

こ こでは主にスキューの削減方法およびクロ ッ ク ソースに対する内部クロ ッ ク と外部クロ ッ クの位相調整の方法について説明します 実際には DCM は DESKEW_ADJUST という属性を使用し 意図的にわずかなスキューを追加します DCM Wizard では アドバンス ド オプシ ョ ン ウ ィ ンド ウでこのDESKEW_ADJUST 属性を設定します

この属性には STEM_SYNCHRONOUS および SOURCE_SYNCHRONOUS という 2 つの基本的なアプリ ケーシ ョ ンがあ り ます 大多数のアプリ ケーシ ョ ンではSYSTEM_SYNCHRONOUS 設定を使用します 次に 各モードの目的を説明します

システム同期

図 23 に示すよ うに システム同期アプリ ケーシ ョ ンでは 1 つのデータ パスにあるすべてのデバイスが共通のクロ ッ ク ソースを使用します これが 従来の最も一般的なシステム構成です デフォルト設定である SYSTEM_SYNCHRONOUS オプシ ョ ンを選択する と データ キャプチャ時のホールド時間がゼロになるよ うに わずかなクロ ッ ク遅延が追加されます ホールド時間とは 基本的にベス ト ケースのデータ パスと ワース ト ケースのクロ ッ ク パス間の差です DCM のクロ ッ ク スキュー削減機能はクロ ッ クを進めるこ とによって動的にワース ト ケースのクロ ッ ク パスを短縮します しかし ク ロ ッ

位相ロック ループ (PLL)

PLL は DLL と同様の基本的な機能を持つよ うに設計されていますが異なるアーキテクチャを使用します 図 22 に示すよ うにPLLと DLL の根本的な違いは DLL が遅延ラインを使用するのに対して PLL では電圧制御オシレータを使用し CLKIN と同様のクロ ッ ク信号を生成します位相検出器およびフ ィルタで構成される制御ロジッ クは ク ロ ッ ク分散システムでの遅延を補う よ うにオシ

レータの周波数と位相を調整します PLL の制御ロジッ クは 入力ク ロ ッ ク と フ ィードバッ ク ク ロ ッ ク CLKFB を比較し 入力クロ ッ クの立ち上がりエッジがフ ィードバッ ク ク ロ ッ クの立ち上がりエッジと一致するよ うにオシレータのクロ ッ クを調整します その後 PLL はロッ ク状態になり ます

インプリ メンテーシ ョ ン

DLL および PLL 内部では アナログ回路またはデジタル回路のいずれかが使用され 各回路はぞれぞれに利点があ り ます 慎重な回路設計を行ったアナログ回路の場合 DLL または PLL ではよ り厳密にタイ ミ ングを調整でき 使用するシ リ コン エリ アが少なくなり ます

一方デジタル回路を使用した設計の場合 ノ イズ耐性が優れ消費電力が低く ジッ タのパフォーマンスよ り良いという利点があ り

ます また ク ロ ッ クを停止させるこ とができるため 電力管理が容易になり ます アナログ設計では 追加の電力供給が必要な場合があ りよ り正確に電源供給の制御を行う必要があるために新しい処理テク ノ ロジに移行する際に問題が発生する可能性があ り ます

DLL と PLL

アプリ ケーシ ョ ンで PLL または DLL を選択する場合は アーキテクチャの違いを理解するこ とが重要です PLL で使用されるオシレータは 本質的に不安定な状態であるため ク ロ ッ ク分散ネッ ト ワークの遅延を補う際に PLL のパフォーマンスが低下します 逆に常に安定している DLL アーキテクチャは遅延およびクロ ッ ク調整の機能の点では PLL よ り優れている一方で PLL はDLL より柔軟に新しいクロ ッ ク周波数の合成を行います

図 22 位相ロック ループ (PLL) ブロック図

ClockDistributionNetwork

Control

Voltage ControlledOscillator

CLKOUT

CLKFB

CLKIN

x462_22_061903

34 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ク パスを短縮するこ とによって ク ロ ッ クがデータの前に現れる場合には結果と してホールド時間が発生します SYSTEM_SYNCHRONOUS オプシ ョ ンを使用するこ とによってホールド時間がゼロになるために十分なスキューをクロ ッ ク パスに追加できる一方でclock-to-output 時間がわずかに増加します

ソース同期

SOURCE_SYNCHRONOUS モードは本来高速データ通信インターフェイスで使用される高度な設定です 図 24 に示すよ うに ソース同期アプリ ケーシ ョ ンではデータおよびクロ ッ クの両方が同一のクロ ッ ク ソースから派生します 送信デバイスは データおよびクロ ッ クを受信デバイスに送信し 受信デバイスはデータに対して最適なクロ ッ クが入力されるよ うにクロ ッ ク タイ ミ ングを調整します 高速デュアル データ レート (DDR) および LVDS 接続などがこのシステムの例です

SOURCE_SYNCHRONOUS 設定によって入力クロ ッ ク と DCM からのデスキュー出力クロ ッ ク間の位相をゼロにし 次に FPGA アプリ ケーシ ョ ンでは固定位相シフ ト モードまたは動的ファ イン位相シフ ト モードを使用してクロ ッ クのタイ ミ ングを調整します 次のアプリ ケーシ ョ ン ノートではソース同期デザインおよび動的位相調整について説明しています

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcomxappxapp622pdf

また 次のアプ リ ケーシ ョ ン ノート では システム レベルのタイ ミ ングについて詳細に解説しています このアプリ ケーシ ョ ン ノートはVirtex-II および Virtex-II Pro FPGA アーキテクチャについて説明するものですが ほとんどの概念を Spartan-3 FPGA に適用できます

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

タイ ミングの比較

図 25 にデュアル データ レート (DDR) アプリ ケーシ ョ ンで SYSTEM_SYNCHRONOUS 設定およびSOURCE_SYNCHRONOUS 設定を使用した場合のタイ ミ ング比較を示します DDR アプリ ケーシ ョンでは 各データ ラインに 2 つのデータ ビッ トが ク ロ ッ ク周期の前半および後半に各 1 つずつ現れます

図 23 共通のクロック ソースによってクロック入力されるシステム同期アプリケーシ ョ ン

図 24 データ ソースがデータ クロックを入力するソース同期アプリケーシ ョ ン

ClockSource

DATA_INDATA_OUT

x462_23_061903

ClockSource

DATA_INDATA_OUT

DATA_CLK

x462_24_061903

クロック調整

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 35

R

SYSTEM_SYNCHRONOUS モードではDCM のクロ ッ ク パスに適切なスキューが追加されホールド時間がゼロになり ます

これに対して SOURCE_SYNCHRONOUS モードでは DCM のクロ ッ ク パスにスキューは追加されませんが FPGA アプ リ ケーシ ョ ンでスキュー追加 または位相シフ ト が行われ ク ロ ッ クはデータウ ィンド ウにおいて理想的な位置で入力されます

クロック調整 ク ロ ッ ク調整とは 入力ク ロ ッ クのデューティ サイ クルが 50 以外の場合に 50 に調整する機能です 図 26 にHigh 時間が約 40 であ りLow 時間が約 60 (4060 デューティ サイクル) である入力ク ロ ッ クを ほぼ完全な 50 デューティ サイ クルを持つ入力クロ ッ クに調整する例を示します完全な 50 デューテ ィ サイ クル と な ら ない理由は CLKOUT_DUTY_CYCLE_DLL およびCLKOUT_DUTY_CYCLE_FX で指定されるデューティ サイ クルのずれが存在するためです これらの値は 『Spartan-3 データ シート 』 に記載されています デューティ サイクルのずれの概算値は 150ps未満です

クロ ッ クのデューティ サイクルが 50 であるこ とはVLDS またはデュアル データ レート (DDR) アプリ ケーシ ョ ンなどの高速通信インターフェイス ク ロ ッ ク転送アプリ ケーシ ョ ン またはクロ ッ ク ミラー アプリ ケーシ ョ ンにおいて不可欠な条件です 「デュアル データ レート (DDR) ク ロ ッ クの例」 を参照して ください

DCM では 自動的にほとんどのク ロ ッ ク出力のデューティ サイ クルが 50 に調整され それ以外の場合には動作条件または属性設定によって オプシ ョ ンと して調整されます 表 12 を参照して ください

図 25 デュアル データ レート (DDR) アプリケーシ ョ ンにおける SYSTEM_SYNCHRONOUS モードおよび SOURCE_SYNCHRONOUS モードのタイ ミング比較

SYSTEM_SYNCHRONOUS

DATA_IN

SOURCE_SYNCHRONOUS

SOURCE_SYNCHRONOUS+ Fixed or Dynamic Phase Shift

Data capture windowor data ldquoeyerdquo

x462_25_061903

図 26 DCM におけるデューテ ィ サイクル修正機能

CLKIN

ConditionedClock Output

50 50

40 60

x462_26_061903

36 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

14 位相シフ ト出力である CLK0 CLK90 CLK180 および CLK270 はDUTY_CYCLE_CORRECTION 属性を使用し ク ロ ッ ク調整を行う こ とができます デフォルトではDUTY_CYCLE_CORRECTION 属性は TRUE に設定され これらの出力は 50 デューティ サイクルに調整されます この属性を FALSE に設定する場合 クロ ッ ク調整は機能せず クロ ッ ク出力のデューティ サイクルは入力クロ ッ ク とほぼ同一になり ますが 完全に CLKIN のデューティ サイクルと一致するこ とは保証されていません

位相シフ ト - クロック周期の分数でクロックを遅延

また DCM ではクロ ッ ク周期の分数分だけ入力クロ ッ クを遅らせるこ とによって 位相をシフ ト させるこ とができます

DCM は 4 つの位相シフ ト タイプをサポート し各タイプを別々に使用するこ と またはほかの位相シフ ト タイプと組み合わせて使用するこ とができます 表 13 に 各クロ ッ ク出力での位相シフ ト機能を示します

1 ほとんどの 12 ク ロ ッ ク周期位相シフ ト出力では50 デューティ サイクル調整を行います 出力のペアの立ち上がりエッジは0degおよび 180deg位相シフ ト した位置またはクロ ッ ク周期の最初および 12 周期の位置にあ り ます

2 0deg(CLK0) 90deg(CLK90) 180deg(CLK180) および 270deg(CLK270) の 14 位相シフ ト出力ではオプシ ョ ンと して 50 デューティ サイ クル調整を行います

3 固定ファイン位相シフ トではすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

4 動的ファイン位相シフ トでは FPGA アプリ ケーシ ョ ン内部のすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

表 12 デューティ サイクルを 50 にするためのクロック出力調整

DCM クロック出力

50 デューティ サイクル出力

CLK0CLK90

DUTY_CYCLE_CORRECTION = TRUE

CLK180CLK270

CLK2XCLK2X180

CLKDV

CLKFXCLKFX180

常に

DLL_FREQUENCY_MODE 属性

LOW HIGH

DUTY_CYCLE_CORRECTION = TRUE 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に CLKDV_DIVIDE が整数値の場合

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 37

R

12 クロック周期位相シフ ト出力12 周期位相シフ ト出力では 位相シフ トのないク ロ ッ ク およびそのクロ ッ クを 12 周期シフ ト させた (180deg位相シフ ト ) ク ロ ッ クが出力されます 12 周期位相シフ ト出力は表 14 に示すよ うにペアで出力されます

表 13 クロック出力の位相シフ ト機能

クロック出力12 クロック周期

14 クロック周期

固定または動的

位相シフ ト

CLK0CLK90CLK180CLK270CLK2XCLK2X180CLKDVCLKFXCLKFX180

表 14 12 クロック周期位相シフ ト出力

出力ペア解説

位相シフ トなし 180deg位相シフ ト

CLK0 CLK180 周波数は CLKIN と同一です デフォルトで 50 デューティ サイクルに調整されDUTY_CYCLE_CORRECTION 属性に制御されます

CLK2X CLK2X180 2 逓倍クロ ッ ク (CLK2XCLK2X180) からの出力です周波数は CLKIN 周波数の 2 倍であ り デューティ サイ クルは常に 50 です

CLKFX CLKFX180 周波数合成回路 (CLKFX CLKFX180) からの出力です 出力周波数は周波数合成の属性によって決定されます デューティ サイ クルは常に 50 です

38 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

12 周期位相シフ ト出力は高速デュアル データ レート (DDR) デザインおよびクロ ッ ク ミ ラーなどのデューティ サイクルが重要となるデザインにとって理想的です 図 27 に示すよ うに12 周期位相シフト出力のペアの 1 つはクロ ッ ク周期の始めに立ち上がり も う 1 つはそのクロ ッ ク周期の半分の地点で正確に立ち上がり ます

12 周期位相シフ ト出力によるデューテ ィ サイクルのずれの削減

DCM のクロ ッ ク出力が 50 デューティ サイクルに調整された場合 180deg位相シフ ト ク ロ ッ クは位相シフ トのないクロ ッ クを反転させたよ うに見えます 低周波数アプリ ケーシ ョ ンでは 基本的にこれが成立します

しかし アプリ ケーシ ョ ンが非常に高い周波数で動作する場合は 各ト ランジスタの立ち上がり時間お

よび立ち下がり時間の差が原因となって発生するデューティ サイ クルのずれが FPGA 内部で問題となり ます つま り 始めはデューティ サイクルが 50 の場合でも ク ロ ッ ク サイクル間で常にクロ ッ クHigh と ク ロ ッ ク Low の間に差が生じます

デュアル データ レート (DDR) クロックの例

図 28 に DCM ク ロ ッ ク出力 CLKx が デュアル データ レート (DDR) 出力フ リ ップフロ ップの 2 つのクロ ッ クを駆動する例を示します DDR ク ロ ッ ク入力の 1 つはクロ ッ ク出力をそのまま使用しますが も う一方の入力は DDR フ リ ップフロ ップ内部でクロ ッ クを反転させます DCM からの CLKx 出力のデューティ サイクルは 50 ですが FPGA のクロ ッ ク ネッ ト ワークを伝搬する間にデューティサイ クルにずれが発生します こ こで示す例では このデューティ サイクルのずれによって ク ロ ッ クHigh 時間が短縮され ク ロ ッ ク Low 時間が長くな り ます その結果と してC1 ク ロ ッ ク入力はクロ ック周期の半分の時点よ り もわずかに前にト リガします 低周波数の場合 このずれは無視して問題あ りませんが 高性能の DDR ベースのシステムでは 正確なクロ ッ ク設計が必要です

図 27 12 周期位相シフ ト出力

180˚0˚

frac12T 1T

CLKx

CLKx180

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)

x462_27_061903

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 39

R

図 29 に 図 28 に若干の修正を加えた回路例を示します この例では DCM からの位相シフ ト していない出力および 180deg位相シフ ト した出力の両方が DDR 出力フ リ ップフ ロ ップに入力されますCLKx ク ロ ッ ク信号は ク ロ ッ ク周波数の開始時点で正確に DDR フ リ ップフロ ップの C0 入力を ト リガし CLKx180 ク ロ ッ ク信号はクロ ッ ク周波数の半分の時点で正確に C1 入力を ト リガします この方法を使用する場合には 追加のグローバル バッファおよびグローバル ク ロ ッ ク ラ インが必要になりますが 約 300 ps (この値は概算です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください) までのデューティ サイクルを削減できます

図 28 デュアル データ レート (DDR) 出力におけるデューティ サイクルのずれ

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx at Flip-Flop(with duty-cycle distortion)

Duty-cycle distortion

Factor in distortionwhen using a singleinverted clock

CLKx(50 duty cycle)

BUFGCLKx

DCM

CLKIN

x462_28_061903

40 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

表 15 に DDR 出力フ リ ップフロ ップおよび LVDS 出力を使用して測定したデューティ サイクルのずれの値を示します この出力タイプ以外では 立ち上がり時間および立ち下がり時間に差が生じるこ とによって さ らにずれが大き くなる可能性があ り ます このずれは IBIS を使用してシ ミ ュレーシ ョ ンを実行し 検証できます

14 位相シフ ト出力図 30 および表 17 に示すよ うに 14 位相シフ ト出力は CLKIN 入力を 14 周期分シフ ト させたものです 14 位相シフ ト出力には CLKFB 入力へ戻るフ ィードバッ ク パスが必要であるため CLK0 出力の位相は CLKIN 入力の立ち上がりエッジと一致するよ うに調整されます CLK90 出力は CLKIN 入力を90deg位相シフ ト させて生成したものであ り ほかの位相シフ ト出力も同様に生成されます

図 29 12 周期位相シフ ト出力を使用したデューテ ィ サイクルのずれの削減

CLKx at Flip-Flop(with duty-cycle distortion)

180 ˚Phase Shift

CLKx180 at Flip-Flop(with duty-cycle distortion)

CLKx(50 duty cycle)

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKIN

CLKx180

BUFG

BUFG

x462_29_061903

表 15 デューティ サイクルのずれのパラメータ

パラ メータ 説明 概算値

TDCD_CLK0 IO ブロ ッ クにある DDR エレ メン トに対して ク ロ ッ ク立ち下がりエッジでローカル反転したクロ ッ クを入力する場合のデューティ サイクルのずれです 図 28を参照してください

~400 ps

TDCD_CLK180 IO ブロ ッ クにある DDR エレ メン トに対して DCM CLKx180 をクロ ッ ク入力する場合のデューティ サイクルのずれです 図 29を参照してください

~60 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 41

R

DLL 周波数モードによる出力の有効性

14 位相シフ ト出力が有効であるかは DLL_FREQUENCY_MODE 属性で制御される DLL の周波数モードによって決定されます 表 16 に示すよ うに 低周波数モード (DLL_FREQUENCY_MODE=LOW) ではすべての 14 位相シフ ト出力が有効ですが高周波数モードでも有効な出力は CLK0 および CLK180 のみです

5050 デューティ サイクル調整オプシ ョ ン

オプシ ョ ン と して DUTY_CYCLE_CORRECT 属性を使用し 14 位相シフ ト出力を一括して 50デューテ ィ サイ クルに調整できます この属性が TRUE の場合 (デフォル ト ) 4 つの出力すべてのデューティ サイ クルが 50 にな り FALSE の場合は 各出力のデューティ サイ クルと CLKIN 入力のデューティ サイクルは一致しません 詳細は 「ク ロ ッ ク調整」 を参照してください

4 つの位相 遅延クロックエッジ 位相パルス

表 17 に示すよ うに 14 位相シフ ト出力は ぞれぞれ 1 つ前のパルスから 14 周期遅れた立ち上がりエッジで出力されます これらの出力は メモ リ インターフェイスおよびペリ フェラル制御などのアプリ ケーシ ョ ンにおけるタイ ミ ングを柔軟にします

また デューテ ィ サイ クル修正オプシ ョ ンがイネーブルの場合 (DUTY_CYCLE_CORRECTION =TRUE の場合) これらの出力を次のよ うに考えるこ とができますこれらの出力には 14 周期の間隔で

図 30 CLKIN 入力 の 14 周期位相シフ ト出力 (デューティ サイクル修正イネーブルの場合)

表 16 DLL 周波数モードによる 14 位相シフ ト出力の有効性

出力DLL_FREQUENCY_MODE

LOW HIGH

CLK0

CLK90

CLK180

CLK270

270˚180˚90˚0˚

frac14T frac12 T frac34T 1T

CLK0

CLK90

CLK180

CLK270

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)x462_30_061903

42 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

立ち下がりエッジがあ り ます (表 17 を参照) 同様に各出力には周期幅が同一である High パルス時間と Low パルス時間があるこ とになり たとえば 図 30 に示す CLK90 の High パルス部分は CLK0 クロ ッ ク周期の中央に位置しています

ファイン位相シフ ト

DCM では ファ イン位相シフ ト を使用するこ とによって ク ロ ッ ク スキューを制御するこ と もできます ファ イン位相調整はすべての DCM 出力に対して同時に機能します この位相調整にはDCM のDLL 機能ユニッ ト を使用するため CLKFB 入力を通るクロ ッ ク フ ィードバッ クが必要です

物理的には CLKIN と CLKFB の立ち上がりエッジ間の位相関係を調整するこ とによってシフ トが行われますが すべての DCM 出力が CLKIN 入力に関連して位相シフ ト されます

デフォルトでは ファ イン位相シフ トはディ スエーブル (CLKOUT_PHASE_SHIFT=NONE) です つま り ク ロ ッ ク入力は CLKIN で位相調整されています この場合 入力クロ ッ ク CLKIN と フ ィードバッ ク ク ロ ッ ク間におおよそのフ ィードバッ ク地点で計測されるスキューはあ り ません (「確実なソースからのフ ィードバッ ク」 を参照して ください) 図 31 に示すよ うに ファ イン位相シフ トがイネーブルの場合 出力クロ ッ クのエッジは位相シフ ト され CLKIN 入力の前または後になり ます

次にファイン位相シフ トの 2 つのモードについて説明します一般に高速データ通信アプリ ケーシ ョ ンでは 両方のモードが使用されます 「ソース同期」 を参照してください

1 固定ファイン位相シフ ト モードは位相シフ ト値を設計段階で設定します 位相シフ ト値はFPGAコンフ ィギュレーシ ョ ン実行中に取り込まれ アプリ ケーシ ョ ンで変更するこ とはできません

2 動的ファイン位相シフ トモードには 初期位相シフ ト値があ り 固定ファイン位相シフ トの場合と同様に この値は FPGA コンフ ィギュレーシ ョ ン中に取り込まれますが DCM の LOCKED 出力が High になった後であれば アプリ ケーシ ョ ンで変更可能です

固定ファイン位相シフ ト

固定ファ イン位相シフ ト モードでは 設計段階で指定されたシフ ト値が FPGA コンフ ィギュレーシ ョン実行中に設定され この値はアプリ ケーシ ョ ンで変更できません

このモードは 次の 2 つの属性によって制御されます CLKOUT_PHASE_SHIFT 属性が FIXED に設定し PHASE_SHIFT 属性が位相シフ ト量を制御します 図 31 に示すよ うに PHASE_SHIFT = 0 の場合は 出力ク ロ ッ クおよび CLKIN 入力の位相が一致する よ う 調整され ク ロ ッ ク出力はPHASE_SHIFT が負の整数の場合に CLKIN の前に位相シフ ト し正の整数の場合には CLKIN の後に位相シフ ト します

固定ファイン位相シフ ト範囲

PHASE_SHIFT 属性は常に整数値であ り その範囲は -255 ~ +255 ですが 実際の範囲は使用されるCLKIN の周波数によって異なり ます

表 17 14 位相シフ ト出力とそれらの特性 (DUTY_CYCLE_CORRECTION=TRUE)

DCM 出力 位相シフ トクロック周期

に対する遅延

立ち上がり

エッジ

立ち下がり

エッジ解説

CLK0 0deg 0 0 frac12T スキュー調整された入力クロ ッ ク 位相シフ ト なし

CLK90 90deg frac14T frac14T frac34T High パルス (frac34T 周期幅 周期の中央)

CLK180 180deg frac12T frac12T 0T CLK0 の反転 (立ち上がりエッジは周期の中央)

CLK270 270deg frac34T frac34T frac14T Low パルス (frac34T 周期幅 周期の中央)

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 43

R

PHASE_SHIFT 属性の範囲は 次の 2 つの値によって決定されます

1 1 つはナノセカンドで測定される CLKIN 入力の周期 である TCLKIN 値です

2 も う 1 つは Spartan-3 デバイスおよびスピード グレードによって指定される FINE_SHIFT_RANGE の値です この値は 『Spartan-3 データ シート 』 モジュール 3 に記載されています FINE_SHIFT_RANGE は 位相シフ ト遅延ラインにおける総遅延であ り 回路内の遅延タップ数の関数です 実際の遅延ラインは FINE_SHIFT_RANGE よ り長い場合があ り ますがFINE_SHIFT_RANGE までの値が保証されています

これらの値を 等式 1 に適用しSHIFT_DELAY_RATIO を算出します PHASE_SHIFT 属性の範囲はこの算出結果と 1 との不等式関係によって異なり ます

等式 1

SHIFT_DELAY_RATIO lt 1 の場合

ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り長い場合はSHIFT_DELAY_RATIO lt 1 であ り最大ファイン位相シフ ト範囲は FINE_SHIFT_RANGE によって決定されます SHIFT_DELAY_RATIO lt 1 の場合 PHASE_SHIFT 範囲は 等式 2 から求めるこ とができます

等式 2

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 PHASE_SHIFT 値は plusmn191 とな り ます

したがって SHIFT_DELAY_RATIO lt 1 の場合の位相シフ ト値は 等式 3 とな り ますPHASE_SHIFT = 1 と して ください

等式 3

図 31 固定ファイン位相シフ ト

0

Fixed Phase Shift- Limit

Fixed Phase Shift+ Limit

Clock Outputs

PHASE_SHIFT CLKIN DCM

CLKIN

x462_31_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

SHIFT_DELAY_RATIO FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------=

PHASE_SHIFTLIMITS plusmn INTEGER 256 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞=

TPhaseShiftPHASE_SHIFT

PHASE_SHIFTLIMITS----------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

44 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

SHIFT_DELAY_RATIO ge 1 の場合

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 1 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 4

したがって SHIFT_DELAY_RATIO ge 1 の場合の位相シフ ト値は 等式 5 とな り ます PHASE_SHIFT = 1 と して ください

等式 5

最小位相シフ ト

最小位相シフ トの大きさは 次の値の大きな方によって決定されます

1 『Spartan-3 データ シート 』 に DCM_TAP_MIN 仕様と して記載されている最小遅延ライン タ ップ値 (概算値は ~30ps)

2 ク ロ ッ ク周期の 1256

その他の考察点

固定位相シフ トモードでは 動的位相シフ ト制御入力をグランドに接続する必要があ り ます この接続

は DCM Wizard では自動的に行われます

DCM Wizard

固定位相シフ トモードを使用する場合は図 32 に示すよ うにDCM Wizard の [General Setup] ダイアログ ウ ィンド ウに表示される Phase Shift で [Fixed] をク リ ッ ク して ください これによって CLKOUT_PHASE_SHIFT 属性が FIXED に設定されます

[Phase Shift Value] を入力しますが この値は 上述した範囲内にある整数でなければなり ません これによってPHASE_SHIFT 属性値が設定されます DCM Wizard は位相シフ ト値が指定範囲内であるかを確認します

動的ファイン位相シフ ト

動的ファ イン位相シフ ト モードでは 固定ファ イン位相シフ ト モード と同様に 初期スキューまたは初期位相シフ トがコンフ ィギュレーシ ョ ン中に PHASE_SHIFT 属性によって制御されます ただし動的シフ ト モードの場合 DCM の LOCKED 入力が High になった後に 動的ファ イン位相シフ ト制御入力 PSEN PSCLK および PSINCDEC を使用して FPGA アプリ ケーシ ョ ンで現在の位相シフ ト値を修正できます

動作

図 33 に示すよ うに位相シフ ト制御入力を使用し現在の位相シフ ト値を修正します すべての動的位相シフ トは PSCLK の立ち上がりエッジに同期して行われ 有効な位相シフ トは PSEN イネーブル入

図 32 固定ファイン位相モードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

Fixed

x462_32_061803

PHASE_SHIFTLIMITS 255plusmn=

TPhaseShiftPHASE_SHIFT

256--------------------------------------------⎝ ⎠

⎛ ⎞ TCLKINbull=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 45

R

力を正確に 1 PSCLK ク ロ ッ ク周期間アサートするこ とによって開始します PSEN を 1 ク ロ ッ ク周期よ り長くアサートする場合には 適切に位相シフ ト を行う こ とができない可能性があ り ます

PSINCDEC の値は制御入力の増減を指定し 位相シフ トの方向を決定します PSINCDEC を High に設定する と 動的位相シフ ト値が増加し Low に設定する とその値は減少します

実際の位相シフ ト が行われる タ イ ミ ングはさ まざまであ り DCM で PSCLK ク ロ ッ クの 1 周期間PSDONE 出力が High にアサート された時に完了します PSEN がイネーブルであ り PSDONE がアサート されるまでの間 DCM 出力クロ ッ クは 初期位相シフ ト値から新しい位相シフ ト値まで 1 ビットずつスライ ド します シフ トが行われている間 DCM は入力クロ ッ クに対してロ ッ ク状態 つま りLOCKED 出力がアサート された状態を維持します

PSDONE がアサート されたと き またはアサート後に 次の位相シフ ト処理が開始されます

動的ファ イン位相シフ ト モードを使用する場合は CLKOUT_PHASE_SHIFT 属性を VARIABLE に設定し FPGA コンフ ィギュレーシ ョ ン後に PHASE_SHIFT 属性値によって 位相シフ トの初期位置を設定できます DCM の LOCKED 出力が High になる と FPGA アプリ ケーシ ョ ンでは DCM 出力クロ ッ クにおけるスキュー または位相シフ ト を動的に修正できます また DCM がリセッ ト された場合は PHASE_SHIFT 値は初期設定値に戻り ます

図 33 動的ファイン位相シフ ト制御インターフェイス

PSINCDEC

PSEN

PSCLK

PSDONE

0 = 1 =

STATUS[0](

)

PSDONE

If phase shift incremented ordecremented to limit valueSTATUS[0] stays High until newoperation shifts away from limit

x462_33_062403

46 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

動的ファイン位相シフ ト範囲

PHASE_SHIFT と同様に 動的位相シフ トに対しても位相シフ ト範囲の制限があ り ます 図 34 を参照して ください また その範囲は SHIFT_DELAY_RATIO 等式で示したよ うにFINE_SHIFT_RANGE 対入力クロ ッ ク周期の比率によって決定されます

SHIFT_DELAY_RATIO lt 2

指定された FINE_SHIFT_RANGE 値がクロ ッ ク周期の 2 倍よ り小さい場合 (SHIFT_DELAY_RATIOlt 2)最大動的位相シフ ト値は最大遅延タップ値である FINE_SHIFT_RANGE によって決定されますSHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト範囲は 等式 6 によって決定されます

等式 6

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 動的位相シフ ト値の範囲は plusmn96 とな り ます

図 34 動的位相シフ ト制御

Clock Outputs

PHASE_SHIFT DCM LOCKED

RESET

CLKIN

0Fixed Phase Shift

- LimitFixed Phase Shift+ Limit

PSEN

PSINCDEC

PSCLK

PSDONE

STATUS[0]

0

Dynamic Phase Shift- Limit

Dynamic Phase Shift+ Limit

Increment PhaseShift Value

Decrement PhaseShift Value

Enable

IncrementDecrement

Phase Shift Clock

Phase Shift Done

Variable PhaseShift Overflow

DCM LOCKEDFPGA

DCM Variable PhaseShift Control

x462_34_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

DynamicPhaseShiftLIMITS INTEGER 128 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞plusmn=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 47

R

したがって SHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト値は 等式 7 とな り ます PHASE_SHIFT = 1 と して ください

等式 7

SHIFT_DELAY_RATIO ge 2

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 2 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 8

したがって SHIFT_DELAY_RATIO ge 2 の場合の位相シフ ト値は 等式 9 とな り ますPHASE_SHIFT = 1 と して ください

等式 9

制御

45ページの図 33 46ページの図 34 に示すよ うにDCM の動的位相シフ ト制御信号によって FPGAアプリ ケーシ ョ ンは現在の CLKIN 入力と DCM ク ロ ッ ク出力間の関係を修正できます 表 18 に 制御入力 現在の位相と次の位相の関係 遅延タ ップへの影響と制御出力の関係を示します

TPhaseShiftDynamicPhaseShift

DynamicPhaseShiftLIMITS-----------------------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

DynamicPhaseShiftLIMITS 255plusmn=

TPhaseShiftDynamicPhaseShift

256--------------------------------------------------------- TCLKINbull=

表 18 動的位相シフ ト制御 (内部反転がない場合)

PSENPSINC-

DECPSCLK 現在の

位相シフ ト

次の

位相シフ ト遅延ライン PSDONE

STATUS[0](オーバーフロー )

動作

0 X X X 変更なし 変更なし 動的位相シフ トはディ スエーブル

1 0 uarr gt -制限 現在の位相

シフ ト -1現在の位相

シフ ト -11 0 位相シフ トおよびシフ ト ポインタ

のデク リ メン ト

1 0 uarr le -制限およびgt -255

現在の位相

シフ ト -1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがデク

リ メン ト

1 0 uarr -255 -255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

1 1 uarr lt +制限 現在の位相

シフ ト +1現在の位相

シフ ト +11 0 位相シフ トおよびシフ ト ポインタ

のインク リ メ ン ト

1 1 uarr ge+制限およびlt +255

現在の位相

シフ ト +1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがイン

ク リ メ ン ト

1 1 uarr +255 +255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

メモ X = 考慮する必要があ り ません = 不確定であ り 現在のアプリ ケーシ ョ ンの状態によって決定されます1 = PSDONE が 1 PSCLK 周期間 High にアサート されます-制限 = 遅延ラインの最小位置+制限 = 遅延ラインの最大位置PSEN を 1 PSCLK サイ クル間アサート します

48 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

PSEN が Low の場合 動的位相シフ トはディ スエーブルであ り その他のすべての入力は無視されます したがって すべての現在のシフ ト値および遅延ライン位置に変更はあ り ません

遅延ラインがその制限 (デク リ メン トで - 制限 または -255 インク リ メン トで + 制限 または +255)に到っていない場合 FPGA アプリ ケーシ ョ ンでは PSEN を High にアサートする とによって現在の位相シフ ト値を変更でき PSCLK の次の立ち上がりエッジの前に PSINCDEC に対して適切なインク リメン ト デク リ メン ト値を設定できます 位相シフ ト値は指定されたよ うにインク リ メン ト またはデクリ メン ト します 位相シフ トの最後に PSDONE が PSCLK の 1 周期間 High にアサート され 位相シフ ト が完了したこ と を示し ます また 位相シフ ト のオーバーフロー状態が発生していないため

STATUS[0] は Low を維持します

DCM が +255 を超える値にインク リ メン ト された場合 または -255 よ り小さな値にデク リ メン ト された場合には遅延ラインの位置はその限界である +255 または -255 から変更されず位相は変更されません STATUS[0] は High にな り 動的位相シフ トがオーバーフローである こ とを示します こ こで 新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0]が Low に戻り ます

位相シフ トが +255 または -255 には達していませんが 遅延ライン範囲 (表 18 では + 制限および - 制限)を超えている場合には位相は変更されませんがSTATUS[0] が再び High になり ます STATUS[0]出力は 遅延タ ップが遅延ラインの限界に到達したと きを示します ただし FPGA アプリ ケーシ ョ ンでは等式 8 または等式 6 を使用して制限値が算出され求められた遅延ラインの制限値は保証された値とな り ます 特定のデバイスでは 処理電圧または処理温度によって 遅延ラインが長くなる場合があ り ますが これの値はデバイスによって異なるため 保証されていません 遅延ラインの位置ではなく 位相シフ ト値は +255 または -255 に到達するまでインク リ メン ト またはデク リ メン ト を続けます新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0] がLow に戻り ます こ こで位相シフ ト値は遅延ラインにおいて有効な遅延値に対応する値に戻るよ うにインク リ メン ト またはデク リ メン ト されます

DCM Wizard

動的位相シフ トは図 35 に示す DCM Wizard の [General Setup] ダイアログ ウ ィンド ウで設定します動的ファ イン位相シフ ト を有効にするためには 図 35 に示すよ うに [Variable] を選択します 次に初期の [Phase Shift Value] を入力します 初期値は前述した固定ファイン位相シフ トモードの場合と同様に動作します

図 36 に示すよ うに[Variable] モードを選択するこ とによって動的位相シフ ト制御信号である PSENPSINCDEC PSCLK および PSDONE がイネーブルにな り ます これらの制御信号を FPGA アプ リケーシ ョ ンで使用するために入力および出力チェッ ク ボッ クスをオンにして ください またSTATUS

図 35 DCM Wizard での動的ファイン位相シフ トモードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

[Variable]

x462_35_061903

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 49

R

出力のボッ クスをオンにし STATUS[0] 信号をイネーブルにします STATUS[0] は 位相シフ ト値がその最大または最小制限値に達したと きを示します

アプリケーシ ョ ン例

動的位相調整を行う場合の動的位相シフ ト機能については 次の リ ンクからアプ リ ケーシ ョ ン ノー トXAPP268 を参照してください

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

クロック逓倍クロック分周周波数合成

DCM アプリ ケーシ ョ ンのもっと も使用される機能の 1 つと して 新しいク ロ ッ ク周波数を柔軟に生成できる機能があ り ます 次に説明するよ うにSpartan-3 DCM は 3 つの独立した周波数合成機能を持ちます図 37 および表 19 を参照してください アプリ ケーシ ョ ンでは これらの機能の 1 つを使用する場合 またはすべてを同時に使用する場合があ り ます 次に 各機能の詳細について説明します

1 2 逓倍クロ ッ ク (CLK2X CLK2X180) は 入力クロ ッ クの周波数を 2 倍にします

2 ク ロ ッ ク分周 (CLKDV) は 入力クロ ッ ク周波数を一定の分周値を使用して分周します

3 周波数合成回路 (CLKFX CLKFX180) は 入力クロ ッ ク周波数から新しい周波数を生成します

図 36 DCM Wizard での動的位相シフ ト制御出力の選択

LOCKEDSTATUS

PSDONE

PSENPSINCDECPSCLK

STATUS[0] STATUS

x462_36_061903

図 37 クロック合成オプシ ョ ン

CLKIN CLK0

CLKFB

DCM

CLKFX

CLKFX180

Frequency Synthesizer

F = FCLKIN CLKFX_MULTIPLY

CLKFX_DIVIDE

CLKDV

Clock Divider

F =FCLKIN

CLKDV_DIVIDE

CLK2X

CLK2X180

F = 2 FCLKIN Clock Doubler

ClockDistribution

Delay

CLK0or

CLK2X

Clock Feedback LoopCLK0 CLK2X CLK2X180 CLKDV CLKFB

CLK0

CLKFXCLKFX180

50

DLL_FREQUENCY_MODE=LOW50

50

Deskewed ClockF = FCLKIN

DUTY_CYCLE_CORRECTION=TRUE50

x462_37_062203

50 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

CLKDV 以外のすべての周波数合成出力は 5050 デューティ サイ クルを持ちます 表 23 に示すよ うに高周波数で分周値が整数の場合通常 CLKDV は 50 のデューティ サイクルを持ちます また 2逓倍クロ ッ ク (CLK2X CLK2X180) 回路は高周波数では使用できません

CLKFX および CLKFX180 以外のすべての DCM ク ロ ッ ク出力はDCM の 遅延ロッ ク ループ (DLL)ユニッ トで生成され CLKFB ピンへのクロ ッ ク フ ィードバッ クが必要になり ます DCM の デジタル周波数合成 (DFS) ユニッ トはCLKFX および CLKFX180 ク ロ ッ ク出力を生成します アプリ ケーシ ョンで CLKFX 出力または CLKFX180 出力のみが使用される場合にはフ ィードバッ ク パスを削除できDCM の動作範囲が広くな り ます 周波数合成回路は DCM 内部に CLKIN に基づいたフ ィードバック パスを持ちます

ク ロ ッ ク フ ィードバッ クを使用した場合 すべての出力クロ ッ クの位相が調整されます また 出力のいくつかは分周クロ ッ クであるためすべての DCM 出力がクロ ッ ク エッジで一致するよ うに調整されるこ とはまれであるこ とがわかり ます たとえば CLKDV 出力は CLKDV_DIVID の各サイクルごとに CLKIN および CLK0 に対して調整されCLK2X 出力は CLK0 のサイクル 1 つおきに この信号に対して調整されます またCLKFX 出力はCLKIN の CLKFX_DIVIDE サイクルごとおよび CLKFBの CLKFX_MULTIPLY サイクルごとに CLKIN に位相調整されます

周波数合成アプリケーシ ョ ン

周波数合成を使用するアプリ ケーシ ョ ンは ほぼ無制限に考えられますが 次にいくつかのアプリ ケー

シ ョ ン例を示します

bull ボード上で利用可能なクロ ッ クを使用している FPGA および外部ロジッ クに対して完全に新しいクロ ッ ク周波数を生成する

bull 低速の外部クロ ッ ク ソースから高周波数の内部クロ ッ クを生成し システムの EMI を低減する

bull 図 38 に示すよ うに高速シ リ アルデータ ク ロ ッ クを分周しFPGA 内部でデータの並行処理を行う

bull 同様に 図 38 に示すよ うに 高速シ リアル データ フォーマッ トに変換する前に 並行で動作するデータ ク ロ ッ クの周波数を逓倍する

bull 適切な速度の機能をインプリ メン トする場合に 入力クロ ッ クを逓倍し 内部ロジッ クをクロ ッ ク

アップするこ とによって 使用する リ ソースを削減する

表 19 DCM 周波数合成オプシ ョ ン

機能 DCM 出力 周波数DCM の機能ユニッ ト

フ ィードバック50 の

デューティ サイクル

スキュー調整

クロ ッ ク

CLK0 DLL 必要 DUTY_CYCLE_CORRECTION = TRUE の場合に 50 です

2 逓倍クロ ッ ク CLK2XCLK2X180

DLL 必要 常に 50 です

分周クロ ッ ク CLKDV DLL 必要 高周波数モードで分周値が

整数以外の場合を除いて常

に 50 です

周波数合成 CLKFXCLKFX180

DFS オプシ ョ ン フ ィードバッ クに

よって ク ロ ッ ク

入力周波数範囲は

広くなるこ とは

あ り ません

常に 50 です

FCLKIN

2 FCLKINbull

FCLKINCLKDV_DIVIDE---------------------------------------------------

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE------------------------------------------------------------⎝ ⎠

⎛ ⎞bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 51

R

入力クロックおよび出力クロックの周波数条件

周波数合成を行う場合の入力クロ ッ クおよび出力クロ ッ クの周波数条件は DCM で使用されるク ロ ック出力によって決定されます たとえば CLKFX 出力および CLKFX180 出力は DCM のデジタル周波数合成 (DFS) ユニッ トのみを使用し その他のすべての出力は遅延ロッ ク ループ (DLL) ユニッ ト を使用します DLL における周波数の制限は DFS よ り も厳しいため DFS のみを使用する場合の方が周波数の動作範囲は広くな り ますDFS および DLL の両方を使用する場合アプリ ケーシ ョ ンは DLLの周波数範囲によって制限されます

また DLL および DFS は 低周波数モード と高周波数モードの両方で動作可能であるため モード設定によっても有効な周波数範囲が変動します

DCM デザインが有効であるためには CLKIN 周波数が 『Spartan-3 データ シート 』 モジュール 3 に記載されている動作範囲内である必要があ り 使用されているすべての出力クロ ッ クの周波数もそれぞれ

指定された範囲内でなければなり ません

図 39 に クロ ッ ク入力およびクロ ッ ク出力と対応する周波数範囲を示します ただし こ こで示すのは低周波数モードの場合のみです データ シートに記載されている仕様名は影付きのボッ クス内に示しています また 表 20 に DCM アプリ ケーシ ョ ンの例および周波数条件を示します

図 38 周波数合成アプリケーシ ョ ンの一般的な例

DCM DCM

F

n-bitswide

Fn

F F m

m-bitswide

F F

Overclockedtime-shared logic

DCM

F

F F x

High-speed serial datadown-converted toslower parallel data

Slower parallel dataup-converted to high-speed serial data

FPGA

x462_38_070903

52 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

2 逓倍クロック (CLK2X CLK2X180)表 21 に示すよ うに 2 逓倍クロ ッ ク回路によって CLKIN 入力の周波数は 2 倍になり ます この 2 逓倍クロ ッ ク回路は DLL 機能ユニッ トの一部であ り CLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します 2 逓倍クロ ッ ク回路からの出力は CLK2X および CLK2X180 であ り これらの出力のデューテ ィ サイ クルは常に 50 です また これらの周波数は同一ですがCLK2X180 は CLK2X を 180deg位相シフ ト したものであ り 基本的に CLK2X 出力を反転したものになり ます 高性能のデュアル データ レート (DDR) アプリ ケーシ ョ ンまたはクロ ッ ク転送アプリ ケーシ ョ ンでは 両方の位相を使用するこ とが不可欠です

CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE 属性が LOW に設定されている場合のみに使用できます アプリ ケーシ ョ ンにおける必要性に応じてオプシ ョ ンの 2 分周機能を使用しCLKIN 入力周波数を低下させてください ( 「アドバンス ド オプシ ョ ン」 を参照)

図 39 入力クロックおよび出力クロックの周波数条件 (低周波数モード )

DFS(CLKIN_FREQ_FX_MINMAX)

DLL (Low-Frequency Mode)(CLKIN_FREQ_DLL_LF_MINMAX)

~1 MHz ~326 MHz

~24 MHz ~180 MHzFCLKIN

DFS (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~24 MHz ~200 MHz

DLL CLKDV (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~15 MHz ~120 MHz

DLL CLK2X (Low-Frequency Mode)(CLKOUT_FREQ_2X_LF_MINMAX)

~48 MHz ~326 MHz

FCLKFXFCLKFX180

FCLKDV

FCLK2XFCLK2X180

x462_39_070903

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 20 DCM 周波数条件の例

入力周波数 出力周波数 解説

12 MHz 128 MHz 1 つの DCM のみを使用する場合には条件を満たしません FCLKIN は DFS の条件を満たす範囲内ですが FCLKFX は最低 24MHz 出力周波数が必要です

12 MHz 324 MHz DFS を使用する DCM で条件を満たします CLKFX_MULTIPLY=27 と設定してくださいFCLKFX は DFS 出力周波数範囲内です

25 MHz 25 MHz30 MHz

DFS および DLL を使用する DCM で条件を満たします CLKDV 出力を 25MHz 信号に使用しCLKDV_DIVIDE=10 と設定してください また CLKFX 出力を 30MHz 信号に使用しCLKFX_MULTIPLY=6 および CLKFX_DIVIDE=5 と設定してください すべての入力周波数および出力周波数は適切な範囲内です

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 53

R

表 21 2 逓倍クロック回路のまとめ

DCM 出力 CLK2XCLK2X180

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク 必要です

50 デューティ サイ クル出力 はい

制御属性

DLL_FREQUENCY_MODE CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE = LOW の場合にのみ有効です

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます 2 逓倍クロ ッ クの出力は 高周波数モードでは使用できませんが ほかの DCM ク ロ ッ ク出力に必要となる場合があ り ます

CLK2XCLK2X180

CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

2 FCLKINbull

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (~24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (~48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~326 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_2X_LF_MIN (48 MHz)

CLKOUT_FREQ_2X_LF_MAX (~325 MHz)

HIGH 設定不可 設定不可

54 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

クロック分周 (CLKDV)表 22 に概要を示すクロ ッ ク分周ユニッ トは デザインに設定した CLKDV_DIVIDE 属性の値を使用し CLKIN 入力の周波数を分周します ク ロ ッ ク分周ユニッ ト は DLL 機能ユニッ ト の一部であ りCLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します

表 22 クロック分周回路のまとめ

DCM 出力 CLKDV

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク DCM からの CLK0 出力または CLK2X 出力を使用する場合に必要です

50 デューティ サイ クル出力 はい ただし DLL_FREQUENCY_MODE=HIGH および CLKDV_DIVIDE が整数値ではない場合を除きます

制御属性

DLL_FREQUENCY_MODE CLKDV は両モードで使用できます 分周値によっては 出力のデューティ サイ クルに影響を与える場合があ り ます ( 「CLKDV ク ロ ッ ク調整」 を参照してください)

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 有効な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 であ り 整数値の場合 よ り短時間で DLL はロッ ク状態になり ます また 整数値を設定する場合には出力ジッ タが低くな り ます

周波数制約

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

CLKDV CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

FCLKINCLKDV_DIVIDE--------------------------------------------------

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~325 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_DV_LF_MIN (15 MHz)

CLKOUT_FREQ_DV_LF_MAX (~120 MHz)

HIGH CLKOUT_FREQ_DV_HF_MIN (30 MHz)

CLKOUT_FREQ_DV_HF_MAX (~240 MHz)

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 55

R

CLKDV クロック調整

DLL_FREQUENCY_MODE 属性が High であ りCLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 になり ます 表 23 に CLKDV のデューティ サイクルを示します Spartan-3 DCM では CLKIN のデューティ サイクルが 6040 (または 4060) 以上である必要があ り高周波数モードの場合に 15 で分周された CLKDV 出力は次にカスケード接続された DCM へクロ ッ ク入力するこ とはできません

CLKDV のジッ タは 周波数モードおよび属性値が整数か 整数ではないかによって決定されます

CLKDV_DIVIDE 属性に整数値を設定するこ とによって 出力ジッ タが半分になり DLL がロ ッ ク状態になるために要する時間も短縮されます

DCM Wizard

ク ロ ッ ク分周は DCM Wizard の[General Setup]ウ ィ ン ド ウで設定し ます 図 40a に示すよ う にCLKDV 出力のチェッ ク ボッ クスをオンにし 次に図 40b に示すよ うに ド ロ ップ ダウン リ ス トから[Divide by Value] を選択します

表 23 CLKDV デューティ サイクル (DLL_FREQUENCY_MODE=HIGH の場合)

CLKDV_DIVIDE 属性 デューティ サイクル High 時間総サイクル

整数 50000 12

15 33333 13

25 40000 25

35 42857 37

45 44444 49

55 45454 511

65 46154 613

75 46667 715

表 24 CLKDV 出力ジッ タ

CLKDV_DIVIDE CLKDV 出力周期ジッ タ

整数値 CLKOUT_PER_JITT_DV1 (plusmn~150 ps)

整数以外の値 CLKOUT_PER_JITT_DV2 (plusmn~300 ps)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

a CLKDV 出力のチェ ック ボックスをオン b ドロップ ダウン リス トから [Divide by Value を選択]

図 40 DCM Wizard での分周クロック設定

CLKDV

x462_40a_0619032

Divide By Value

x462_40b_061903

56 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

周波数合成回路 (CLKFX CLKFX180)周波数合成回路を使用するこ とによって 入力周波数の逓倍 分周 またはその両方をもっと も柔軟に

行う こ とができます 表 25 に示すよ うに 2 つの周波数合成出力は CLKFX および CLKFX180 ですCLKFX180 出力は CLKFX と同一の周波数を持ちますがCLKFX を 180degまたは 12 ク ロ ッ ク周期位相シフ ト させた ものです これらの周波数合成出力のデューテ ィ サイ クルは 50 であ るためCLKFX180 は CLKFX の反転クロ ッ クのよ うに見えます

表 25 にある等式が示すよ うに設計段階で 2 つの属性を使用し合成出力周波数を制御します CLKINク ロ ッ ク入力は CLKFX_MULTIPLY が分子 CLKDV_DIVIDE が分母である比率を使用して逓倍されます たとえば 75MHz CLKIN 入力を使用して 155MHz の出力を生成するためには 周波数合成回路では 3115 の比率で CLKIN を逓倍します これは CLKIN を始めに 31 倍し 次に 15 で割ることではあ り ませんCLKIN を 31 倍するこ とによって出力周波数は2325GHz とな りSpartan-3 DCMの周波数範囲を越えるこ とにな り ます

68 を 34 と約分するよ うに 逓倍値および分周値はもっと も簡潔な値にする必要があ り ます このことによって ロ ッ クするために必要な時間が短縮します

周波数合成には 常にク ロ ッ ク フ ィードバッ クが必要ですが DFS には CLKIN を基準と した内部フ ィードバッ ク ループがあるため DLL を使用せずに DFS を使用する場合には CLKFB に別のループは必要あ り ません

また CLKFB 出力は CLKIN の CLKFX_DIVIDE サイ クルごと および CLKFB の CLKFX_MULTIPLY サイクルごとに CLKIN に対して位相調整されます たとえばCLKFX_MULTIPLY = 3 であ りCLKFX_DIVIDE = 5 の場合CLKFX 出力の位相は CLKIN の各 5 サイクルごと および CLKFB の 3 サイクルごとに CLKIN 入力に対して位相調整されます DCM で LOCKED 出力がアサート される と DFS は CLKIN 入力の立ち上がりエッジごとに再同期し ほぼ完璧に位相調整されます

表 25 周波数合成回路のまとめ

DCM 出力 CLKFX

CLKFX180 (CLKFX を 180deg位相シフ ト した場合と同一)

出力周波数

DCM の機能ユニッ ト デジタル周波数合成 (DFS)

フ ィードバッ ク CLKIN を基準にして内部フ ィードバッ クを使用するため 必要あ り ません 遅延ロッ ク ループ (DLL) を使用する場合は オプシ ョ ンと して CLKFB 入力を使用できます

50 デューティ サイ クル出力 常に 50 です

制御属性

DFS_FREQUENCY_MODE CLKIN CLKFX 出力 CLKFX180 出力の周波数条件に影響します

DLL_FREQUENCY_MODE アプリ ケーシ ョ ンで DLL 出力が使用される場合に 周波数合成回路のみに影響を与えます また よ り厳しい DLL の条件に適用するよ うに CLKIN 周波数を低下させる可能性があ り ます CLKFX 出力または CLKFX180 出力が使用されている場合 周波数条件は DFS_FREQUENCY_MODE によってのみ指定されます

CLKFX_MULTIPLY 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 2 から 32 であ りデフォルトは 4 です

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 1 から 32 であ りデフォルトは 1 です

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 57

R

DCM Wizard

周波数合成を使用する場合図 41 に示すよ うに DCM Wizard の[General Setup]ダイアログ ボッ クスで CLKFX または CLKFX180 あるいはその両方のチェッ ク ボッ クスをオンにしてください

CLKFX 出力または CLKFX180 出力のみを使用する場合はオプシ ョ ンと して DLL ク ロ ッ ク出力およびフ ィードバッ クをディ スエーブルにするこ とによって 周波数範囲を広げるこ とができます

bull デフォルトでは CLK0 出力は常にオンになっていますが CLKFX または CLKFX180 のみを使用する場合は CLK0 のチェッ ク ボッ クスをオフにしてください

bull 図 42 に示すよ うに DCM フ ィードバッ クをディ スエーブルにする場合は [None] を選択してください フ ィードバッ クを使用しない場合はCLKFX および CLKFX180 の周波数範囲は高域と低域の両方で広くな り ます

周波数制約

CLKIN アプリ ケーシ ョ ンで 遅延ロッ ク ループ (DLL) からの出力が使用されていない場合CLKIN の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます DLL が使用されている場合は DLL のクロ ッ ク周波数条件はよ り厳し くな り ます

CLKFXCLKFX180

CLKIN 出力および CLKFX180 出力の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 25 周波数合成回路のまとめ (Continued)

最小周波数 最大周波数

CLKIN_FREQ_FX_MIN (~10 MHz) CLKIN_FREQ_FX_MAX (~326 MHz)

DFS_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_FX_LF_MIN(~24 MHz)

CLKIN_FREQ_FX_LF_MAX(~210 MHz)

HIGH CLKIN_FREQ_FX_HF_MIN(~210 MHz)

CLKIN_FREQ_FX_HF_MAX(~325 MHz)

図 41 DCM Wizard での Frequency Synthesizer 設定

CLK0

CLKFXCLKFX180

CLKFXCLKFX180

CLKFX CLKFX180

DCM

x462_41_070903

58 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロックのフォワード ミ ラー リバッファR

DCM Wizard のクロ ッ ク周波数合成で示したよ うに必要は出力周波数または逓倍値と分周値を入力します

クロックのフォワード ミ ラーリバッファ

DCM は高度なクロ ッ ク制御機能を持ちさ らに Spartan-3 IO ピンは多様な IO 電圧標準をサポートするため 通常 Spartan-3 FPGA ではクロ ッ ク信号のリバッファ またはミ ラーを行い 入力クロ ッ クの電圧を変更ために使用されます 同様に DCM の入力クロ ッ ク条件を変更し デューティ サイクルを50 に調整します

図 20 に DCM の入力クロ ッ クを 50 デューティ サイ クルに調整し その周波数で CLK0 出力を使用してクロ ッ クをフォワードする または DCM CLK2X を使用して周波数を 2 倍にする DCM の例を示しました DCM が LOCKED 出力をアサートする と 入力クロ ッ クおよび出力クロ ッ クは位相調整されます CLKFB へのフ ィードバッ ク パスは外部のクロ ッ ク フ ィードバッ ク地点でクロ ッ ク分散遅延を確認し 削除します

出力クロ ッ クのデューティ サイクルが 50 であるこ とは重要であるため出力 IO 標準が 50 デューティ サイ クルを維持できるために十分な速度でスイ ッチできる こ と を確認して ください デューティサイ クルの動作は 出力信号でのシ ミ ュレーシ ョ ンを行う こ とによって検証します IBIS シ ミ ュレーシ ョ ンで確認できるよ うに IO 標準には立ち上がり と立ち下がりが対称的ではなく デューティ サイクルにずれが発生しているものもあ り ます HSTL SSTL および LVCMOS の DCI バージ ョ ンの IO標準の立ち上がりおよび立ち下がりがよ り対称的です

100 MHz を越える場合のデューテ ィ サイ クルを確実に 50 にするためには CLKIN のソースのデューティ サイ クルが 50 の場合にも DCM のデューティ サイクル調整機能を使用する必要があ ります したがって ク ロ ッ ク フォワードに CLK0 CLK90 CLK180 または CLK270 を使用する場合はDUTY_CYCLE_CORRECTION 属性を TRUE に設定してください 通常その他の DCM ク ロ ック出力は常に 50 のデューティ サイ クルに調整されます ( 「ク ロ ッ ク調整」 を参照して ください)

200 MHz 以上で動作する場合のデューティ サイ クルを最適にするためには図 43 に示すよ うな回路を使用して ください こ こでは DCM からの CLKx 出力および CLKx180 出力がデュアル データ レート (DDR) 出力フ リ ップフロ ップの C0 入力および C1 入力を駆動するよ うに使用します DDR フ リ ップフロ ップの D0 入力を VCC に接続し D1 入力を GND に接続します また DCM の各出力は個々のグローバル バッファを駆動しデューティ サイクルのずれを最小にします 高周波数の場合に 1つのク ロ ッ クのみを分散し DDR フ リ ップフロ ップ内部でローカル位相シフ ト を行う と 約 150ps のデューティ サイクルのずれが発生するため このよ うな回路設計は推奨していません

周波数が 250 MHz 以上の場合には分散クロ ッ クに LVDS のよ うな差動信号標準を使用します 図 43にCLKIN ク ロ ッ ク入力およびクロ ッ ク出力がと もに VLDS を使用する例を示します さ らにク ロ ック フ ィードバッ ク パスも LVDS を使用します パフォーマンスを最適にするためには ク ロ ッ ク入力およびクロ ッ ク フ ィードバッ ク パスにグローバル バッファ入力 (IBUFGDS) を使用する必要があ り ます これによってデバイスの一辺にあるすべてのグローバル バッファ入力を使用するこ とになり ますが 高周波数でのクロ ッ ク フォワードを最適に行う こ とができます

図 42 フ ィードバックに [None] を選択し 周波数範囲を拡大

SourceFeedback

Internal External None

Value 1X 2X

If only using the CLKFX or CLKFX180clock ouputs optionally click None to extend the DCM frequency limits

x462_42_070903

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 59

R

クロック ジッ タおよび位相ノイズ

もっと も高価で高精度なものの場合においてもすべてのクロ ッ クにはクロ ッ ク ジッタまたは位相ノイズがあ り ます こ こでは Spartan-3 デジタル ク ロ ッ ク マネージャに固有のジッ タ特性について説明します 低周波数 たとえば 20 MHz で動作する場合は 一般に ジッ タの影響は無視できますが200 MHz のよ う な高周波数で動作する場合には 特にデュアル データ レート (DDR) アプリ ケーシ ョンにおいて ジッ タはデザインの問題に関連する要素となり ます ク ロ ッ ク ジッタによって アクティブ ク ロ ッ ク エッジ間で実際に有効な時間が削減されるため FPGA アプ リ ケーシ ョ ンで使用できる時間が制限されます

クロック ジッ タ とは図 44 に示すよ うにク ロ ッ ク ジッタ とは理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジの相違です 太線は 理想的なクロ ッ ク信号を表します 各クロ ッ ク エッジでは 理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジ間に若干のずれがあ り このずれの最大値と最小値の差異をピーク ジッ タ と呼びます ジッ タは アクテ ィブなク ロ ッ ク エッジのみに関係します たとえば シングル データ レート(SDR) アプリ ケーシ ョ ンの場合データは各立ち上がりエッジでクロ ッ ク入力され この場合のジッタは総クロ ッ ク周期から引く こ とによって求められます 一方 デュアル データ レート (DDR) の場合データは各クロ ッ ク周期の始ま り および 12 ク ロ ッ ク周期の点でクロ ッ ク入力されるため ジッ タは12 ク ロ ッ ク周期ごとに影響を与えます

図 43 高周波数 (250 MHz 以上) での LVDS クロック フォワード回路

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKx180

BUFG

BUFG

VCC

GND

OBUFDS

CLKIN

CLKFB

IBUFGDS

IBUFGDS

External Clock Feedback (LVDS)

FPGA

x462_43_061903

図 44 クロック信号におけるジッ タ

x462_44_061903

60 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

クロック ジッ タの原因ク ロ ッ ク ジッタはすべてのシステムに存在しそれを避けるこ とはできません ク ロ ッ ク ジッタの原因は システム内のノ イズのソース または不完全な信号であ り 実際 ジッ タは時間軸上における ノ イ

ズである と言えます たとえば 入力クロ ッ ク ソースには ク リ スタルからの任意の温度振動ノ イズまたは機械的な振動ノ イズによる固有のジッタ特性があ り ます 多くの同時スイ ッチ出力 (SSO) は回路基板にノ イズを追加するため 内部スイ ッチしきい値がわずかに変更し ジッ タが増加します 同様に適切に設計されていない電源供給または不十分なデカップリ ングによってもジッ タは増加します

その他のジッタの原因と しては近接した信号のクロス トーク不適切な終端 グランド バウンス電磁干渉 (EMI) などが考えられます

このアプ リ ケーシ ョ ン ノートでは Spartan-3 デジタル ク ロ ッ ク マネージャ (DCM) および FPGA 内部でのジッタ全般について説明します

クロック ジッ タ特性の理解ク ロ ッ ク ジッタの特性はさまざまな方法で定められ次のよ うにいろいろな方法でその特徴を捉えることができます

サイクル間ジッ タ

隣接サイクル ジッタ と も呼ばれるサイクル間ジッタは 図 45 に示すよ うに 1 つのクロ ッ ク サイクルと次のクロ ッ ク サイクル間でのクロ ッ ク周期の最大差異です この例ではあるクロ ッ ク サイクルと次のクロ ッ ク サイクル間の最大差異は +100 ps および -100 ps または plusmn100 ps です数百万クロ ッ ク サイクル間の計測を行う場合にはクロ ッ ク周期の変動の絶対値が大き くなる可能性があ り ますがク ロ ッ

ク サイクル間の変動が plusmn100 ps よ り大き くなるこ とはあ り ません

サイクル間ジッタは ク ロ ッ ク出力またはオシレータの特性を測定するために重要ですが アプ リ ケー

シ ョ ンのタイ ミ ング解析には有効ではあ り ません

周期ジッ タ

周期ジッタは 数百万クロ ッ ク サイクル間で計測したサイ クル間ジッタの合計です ピーク ジッ タは理想的なクロ ッ ク移行時間と比較した場合の最短および最小移行時間を示します

デジタル ク ロ ッ ク マネージャの周期ジッ タは一定ではく ピーク間ジッタ と して表されます 図 46 に示すよ うに 理論的には クロ ッ ク移行位置は理想的なクロ ッ ク位置を中心とする確率的な分散 また

はヒ ス ト グラムですが実際の分散はガウス分布ではなく二峰性分布の場合があ り ます 実際のクロ ック移行のほとんどは理想的なクロ ッ ク位置付近で起こ り ますが数百万クロ ッ ク サイクルにおける測定の結果 望ましい位置から離れた地点で起こるクロ ッ ク移行もあ り ます

理想的な位置からの統計的な距離はσ (シグマ) と呼ばれる標準偏差で測定されます DCM はすべてデジタルで機能するデザインであるため 非常に安定しており ザイ リ ンクスでは ジッ タの偏差を plusmn7σまたはピーク間ジッ タを 14σ と定めています 判断基準と して 偏差が plusmn7σ である とい う こ とは ジッタの 9999999999974 が指定されたワース ト ケース ジッ タよ り小さい値であるこ とを保証していま

図 45 サイクル間ジッ タ例

T0 T1 = T0 + 100 ps T2 = T1 - 100 ps

x462_45_062203

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 61

R

す また 14σ ピーク間ジッ タ plusmn7σ ジッタ偏差は 最大ビッ ト エラー レート (BER) が 128 x 10-12 という こ とを意味します

ユニッ ト インターバル(UI)

ジッタの仕様を単位間隔 (UI) の割合と して指定する別の方法もあ り ます 1 UI は 周波数に関わらず1 ビッ ト時間を表します ク ロ ッ クの立ち上がりエッジ または立ち下がりエッジのいずれかでデータが取り込まれるシングル データ レート (SDR) アプリ ケーシ ョ ンでは1 UI は 1 ク ロ ッ ク周期になり ます 一方 2 倍のクロ ッ ク レートでデータがクロ ッ ク入力されるデュアル データ レート (DDR) アプリケーシ ョ ンでは 1 UI が 12 ク ロ ッ ク周期になり ます

UI で指定されるピーク間ジッタ幅は 総ビッ ト周期時間に対するピーク間ジッタ値の比率です

総ジッ タの計算

『Spartan-3 データ シート 』 には CLKFXCLKFX180 以外の DCMのク ロ ッ ク出力におけるジッ タが記載されてます デジタル周波数合成 (DFS) ジッ タは 逓倍値および分周値に基づいて算出されます

データ シートには DLL からのクロ ッ ク出力 (CLKFX および CLKFX180 を除くすべてのクロ ッ ク出力) に対するワース ト ケース ジッ タが記載されています DLL ではジッ タが削減されないため DLLク ロ ッ ク出力の総ジッタには入力クロ ッ クである CLKIN のジッタおよびデータ シートに記載された値が含まれます

また DFS ク ロ ッ ク出力である CLKFX および CLKFX180 では 入力ク ロ ッ ク ジッ タがある程度削減されるため 算出された出力ジッタが総ジッタにな り ます

図 46 ピーク間周期ジッ タ例

図 47 ユニッ ト インターバルの比率で示された周期ジッ タ

Desired clock period

Measured clock period

Num

ber

of s

ampl

esPeak-to-peak Period Jitter

(14σ)

+7σ-7σ

x462_46_061903

Bit Period

Unit Interval (UI)

x462_47_061903

62 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

DLL 出力ジッ タへの入力ジッ タの加算

入力ジッタに DLL 出力ジッタを加える場合ノ イズ計算と同様に 2 乗平均平方根 (RMS) 計算を使用します

ピーク間

等式 10

ピーク間偏差

等式 11

定義

入力クロ ッ クのピーク間周期ジッ タが 150 ps (plusmn75 ps) であ り このク ロ ッ クのデューティ サイ クルがDCM の CLK0 出力と同一の周波数を使用して修正される場合について考えます

この場合 JITTERINPUT = 150 ps であ り JITTERSPEC の値は 『Spartan-3 データ シート 』 で指定されている CLKOUT_JITT_PER_0 と呼ばれる値です これは ピーク間で plusmn100 ps または 200 ps である と概算されます

したがって DCM 出力の総ジッタはピーク間で 250 ps または plusmn125 ps です

カスケード接続された DCM のジッ タ計算図 48 に 複数の DCM をカスケード接続し さまざまな出力周波数を生成しているアプ リ ケーシ ョ ンの例を示します この場合のジッタは 次によって決定されます

bull 前のソースからのジッタ

bull 使用されている DCM 出力

データ シートに記載されているよ うにジッ タ特性は各 DCM 出力によってわずかに異なり ます またDFS からの CLKFX 出力および CLKFX180 出力は 入力ジッタをある程度削減し ジッ タ値は DCMWizard で算出されます ( 「ク ロ ッ ク周波数合成」 参照して ください)

JITTERINPUT = FPGA のクロ ッ ク入力ピンで測定された入力周期ジッタ

JITTERSPEC = 『Spartan-3 データ シート 』 に記載されている適切な出力ポートに対する DLL ク ロ ッ ク出力周期ジッタ

JITTERTOTAL = 予想される総出力周期ジッタ

JITTERTOTAL JITTERINPUT( )2 JITTERSPEC( )

2+=

JITTERTOTALJITTERINPUT( )

2 JITTERSPEC( )2+

2--------------------------------------------------------------------------------------------------------plusmn=

JITTERTOTAL 150 ps( )2200 ps( )

2+ 250 ps= =

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 63

R

したがって カスケード接続された DCM チェーンの任意の点におけるジッタは前述した 2 つの要因によって決定されます 次の例では 回路上のいくつかの点で総ジッタを計算する方法を示します

例 1 すべての DCM が DLL 出力を使用する場合

この例では 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

こ こでは DCM (A) が CLK2X 出力を使用する場合について考えます また DCM 出力ジッ タに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_2X 値を使用してください この値は 400 ps (plusmn200 ps) と概算されています 等式 10 を使用しク ロ ッ ク (A) の総周期ジッタを計算します

次にDCM (B) で分周値が整数である CLKDV 出力を使用する場合について考えます またDCM 出力ジッタに対して 『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_DV1 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (B) の総周期ジッタを計算します この場合 入力ジッタ DCM (A) からのジッタ DCM (B) からのジッタを考慮する必要があるため RMS 等式は次のよ うになり ます

最後に DCM (C) が DCM (B) からの出力を 90deg位相シフ トする場合について考えます また DCM出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します この場合 入力ジッ タ DCM (A) からのジッ タ DCM (B) からのジッ タDCM (C) からのジッ タを考慮する必要があるため RMS 等式は次のよ うにな り ます

例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合

この例は DFS からの CLKFX 出力または CLKFX180 出力を使用する DCM がある点以外は 例 1 すべての DCM が DLL 出力を使用する場合と同様です

この例では 75MHz 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

例 1 と同様に まず DCM (A) が CLK2X 出力を使用する場合について考えます 出力ジッタは 次に示す等式になり ます

この例ではDCM (A) で生成された 150MHz を使用してDCM (B) で 90MHz 合成クロ ッ クを生成します DCM Wizard ( 「ク ロ ッ ク周波数合成」 を参照して ください) を使用し CLKFX_MULTIPLY=3および CLKFX_DIVIDE=5 と設定します ワース ト ケースの出力周期ジッタは 700 ps とな り ます

図 48 カスケード接続された DCM のジッ タ計算

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

A B C

x462_48_061903

JITTERTOTAL A( ) 150ps( )2400ps( )

2+ 427ps 214psplusmn= = =

JITTERTOTAL B( ) 150ps( )2400ps( )

2300ps( )

2+ + 522ps 261psplusmn= = =

JITTERTOTAL C( ) 150ps( )2 400ps( )2 300ps( )2 300ps( )2+ + + 602ps 301psplusmn= = =

JITTERTOTAL B( ) 700ps 350psplusmn= =

64 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

最後にDCM (C) が DCM (B) からの出力を 90deg位相シフ ト させる場合について考えます DCM 出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用してください この値は 300 ps (plusmn150 ps) と概算されています 次の等式を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します 次の DCM では CLKFX を使用するため 総入力ジッ タは ワース ト ケースで700 ps とな り ます 次の RMS 等式を使用し 出力ジッタを計算します

カスケード接続した DCM を使用する場合の推奨デザイン

DCM をカスケード接続して使用する場合 図 48 に示すよ うに DCM からの LOCKED 出力が次のDCM の RST 入力を制御しているこ とを確認してください カスケード接続した DCM では 1 つ前のDCM で LOCKED 出力がアサート され ク ロ ッ クが安定しているこ とが示されてた後に 入力クロ ックにロ ッ クする必要があ り ます

また DCM をカスケード接続する場合には 最もジッ タの影響を回避する必要のあるク ロ ッ ク出力が最初の DCM に接続されるよ うに DCM チェーンを構成してください

システム パフォーマンスにおけるジッ タの影響ク ロ ッ ク ジッタによっても有効なビッ ト周期が狭くな りシステム パフォーマンスが低下します 次の等式に示すよ うに FPGA アプリ ケーシ ョ ンで使用可能なビッ ト周期は 総ビッ ト周期 TBIT からいくつかの影響を差し引いたものです シングル データ レート (SDR) アプリ ケーシ ョ ンでは ク ロ ッ ク周期とビッ ト周期は一致しますがデュアル データ レート (DDR) アプリ ケーシ ョ ンのビッ ト周期はクロ ッ ク周期の 12 になり ます

定義

総ジッ タがク ロ ッ ク周期からの偏差ではな く正の値に指定されている場合 (たとえば plusmn100 ps ではなく200 ps の場合) 正の値を 2 で割り ます (100 ps) ビッ ト周期は負の偏差によってのみ短くなり 正の偏差によってはビッ ト周期が長くな り さ らにタイ ミ ング スラ ッ クが追加されます

入力クロ ッ ク信号の周波数は 75 MHz であ り ク ロ ッ ク ソースのジッ タは plusmn100 ps です アプリ ケーシ ョ ンは内部で生成された 150 MHz のクロ ッ クの立ち上がりエッジでデータを入力します また 総ビッ ト周期 TBIT は 667 ns です ジッ タの影響を考慮する と 有効なビッ ト周期 TAVAILABLE は

どのよ うになるでし ょ うか

2 逓倍クロ ッ ク回路からの CLK2X 出力によって75MHz ク ロ ッ ク入力から 150MHz ク ロ ッ クが生成されます 『Spartan-3 データ シート 』 の CLKOUT_PER_JITT_2X 仕様による と 2 逓倍クロ ッ ク出力である CLK2X には plusmn~200 ps (概算) のワース ト ケース ジッタがあ り ます 2 乗平均平方根を使用し

TBIT = ビッ ト周期時間

tTOTAL_JITTER = 総クロ ッ ク ジッ タ ク ロ ッ ク入力ジッタに DCM 出力ジッタ またはカスケード接続された DCM のジッタを加算したものです

tDUTY_CYCLE_DISTORTION = デューティ サイ クルのずれ デュアル データ レート (DDR) アプリケーシ ョ ンのみで必要であ り それ以外の場合はゼロです 使用する DCM ク ロ ッ ク出力によって データ シートに記載されている CLKOUT_DUTY_CYCLE_DLL または CLKOUT_DUTY_CYCLE_FX を使用します

JITTERTOTAL C( ) 700ps( )2300ps( )

2+ 762ps 381psplusmn= = =

TAVAILABLE TBIT tTOTAL_JITTERndash tDUTY_CYCLE_DISTORTIONndash=

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 65

R

DCM のジ ッ タplusmn200 ps にク ロ ッ ク ソースのジ ッ タ plusmn100 ps を加算する こ と によ って 総ジ ッ タtTOTAL_JITTER が plusmn0223 ns であるこ とがわかり ます

データはクロ ッ クの立ち上がりエッジでのみ入力されるためデューティ サイクルのずれが影響を与えるこ とはな く tDUTY_CYCLE_DISTORTION = 0 です

結果と して 有効な総クロ ッ ク周期 TAVAILABLE は総ビッ ト周期である 6667 ns から 6444 ns に減少します 結果と して ロジッ クは 150 MHz ではなく 1551831 MHz で動作します

クロック ジッ タを最小限にするための推奨デザイン高性能アプリ ケーシ ョ ンでは ク ロ ッ ク ジッタによって有効なビッ ト周期が短くな り ますシステム全体のクロ ッ ク ジッタを最小限にするためには次の推奨デザインを参考にしてください

適切な電力分散システム設計

電力プレーン デカップ リ ングを含む 電力分散システム (PDS) を適切に設計するこ とによって 安定した電力環境を作成し システム ジッ タを削減できます アプ リ ケーシ ョ ン ノー ト XAPP623 ではPDS の適切な設計にについて説明しています

bull XAPP623 電力分散システム (PDS) デザイン バイパスデカップリ ング キャパシタhttpwwwxilinxcomxappxapp623pdf

適切なプリン ト サーキッ ト ボードの設計

予想される動作周波数範囲およびアプ リ ケーシ ョ ン環境に適したプ リ ン ト サーキッ ト ボード設計を行ってください

bull WP174 PCB への効果的な FPGA 統合httpwwwxilinxcojppublicationswhitepaperswp_pdfwp174pdf

bull PCB チェッ ク リ ス トhttpsupportxilinxcomxlnxxil_prodcat_productjsptitle=si_pcbcheck

同時スイッチ出力 (SSO) の推奨デザイン

DCM へのク ロ ッ ク入力 または DCM からのク ロ ッ ク出力の信号に関連した問題を回避するために『Spartan-3 データ シート 』 に記載されている同時スイ ッチ出力 (SSO) 仕様に沿っているこ とを確認して ください

また 可能な限り DCM の入力または出力をスイ ッチング回数の多い IO の近くに配置するこ とを避けてください 特に 出力電圧幅が大きい IO または駆動電流が高い IO の場合にはこのこ とが重要です

仮想グランド ピンを DCM 入力および出力接続の近くに配置

さまざまな影響を受けやすく高周波数である DCM の入力または出力では仮想グランド ピンのよ うなユーザー IO ピンを追加して PCB へ別の接続を作成します このよ うな仮想グランド ピンは ジッタの影響を受けやすい DCM 信号に近接する IO パッ ドに配置して ください IO パッ ドは パッケージのピンまたはボール上だけでなく FPGA のダイ レベルでも近接しているこ とを確認して くださいBGA パッケージ上で隣接しているボールは 必ずしも FPGA 上にある隣接したパッ ドに接続する必要はあ り ません このよ うに設計するこ とによって 内部電圧降下が軽減され ジッ タが削減されます

仮想グランドを作成する場合は図 49 に示すよ うに IOB を GND (Low ロジッ ク レベル) を駆動する出力と して設定し その IOB を外部で直接グランド プレーンに接続します

tTOTAL_JITTER 100psplusmn( )2 200psplusmn( )2+ 22360psplusmn 0223nsplusmn= = =

TAVAILABLE 6667ns 0223nsndash 6444ns= =

66 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

VCCAUX 考察

デジタル ク ロ ッ ク マネージャは VCCAUX 入力によって電源が供給されます FPGA への電源供給入力である VCCAUX の過剰ノ イズは DCM の特性 特にジッタ特性を低下させます DCM のパフォーマンスを最適にするために 次に従ってください

1 図 50 に示すよ うに VCCAUX 電源供給 またはグランド上の変動を 1 ms 間で 10 mV よ り小さ くして ください この制限によって DCM は変動に適切に対応して動作します

2 図 50 に示すよ うに 電源供給のノ イズをピーク間で 200 mV 以内にして ください

3 VCCAUX および VCCO が同一の電源プレーンにある場合 すべての VCCAUXVCCO ピンを適切にデカップリ ングまたはバイパスする必要があ り ます ( 「適切な電力分散システム設計」 を参照してください) また 上記の 1 および 2 を維持できない場合 VCCAUX と VCCO を分離して使用してください

4 特に CLK2X 出力は電源シフ ト またはグランド シフ トの影響を受けます したがって すべての IOB および CLB でスイ ッチングがある場合には CLKFX_MULTIPLY =2 および CLKFX_DIVIDE=1 と設定されている CLKFX 出力はよ り よい特性を持つ出力を供給します DFS モードの場合 CLK2X 出力の更新が遅いのに対して CLKFB 迂回回路では 3 入力クロ ッ クごとにタ ップが更新されます

FACTORY_JF 設定の修正

適切に設計され 安定し 適切にデカップリ ングされた電源供給が FPGA 内のクロ ッ ク スキューおよびジッタを低減するためにもっと も有効な方法ですが FACTORY_JF 属性を 0xFFFF に設定することによって 問題の発生しているボード上のジッタを低減できる場合があ り ます FACTORY_JF=FFFF の場合 DCM はおよそ 20 入力クロ ッ クごとにタ ップ設定を更新し 周波数を基にしたデフォルト設定よ り もタ ップ更新の間隔は短くな り ます

図 49 DCM 入力または出力クロック信号への仮想グランド ピンの使用

IBUFG

OBUF

OBUF

To DCMCLKIN Input

Sensitive DCMClock Input

FPGAldquoVirtualrdquoground pin

Direct connectionto PCB groundplane

GND

GND

x462_49_061903

図 50 電圧降下を回避するための VCCAUX 考察

VCCAUXSupply(at FPGA)

dV lt 10 mV

dt lt 1 mS

Keep VCCAUX noiseenvelope to lt 200 mVpeak-to-peak

Avoid sudden changes fromone DC level to anotherKeep dVdt lt 10mVmS x462_50_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 67

R

ただし FACTORY_JF の設定値を大き くするこ とによって DCM では遅延ラインが頻繁に更新されジッ タがわずかに増加する (~30 ps) 可能性もあるため FACTORY_JF のデフォルト設定は最大値ではあ り ません 電源供給が不安定の場合には 発生した位相エラーが増加したジッタよ り大きい場合があり この場合には FACTORY_JF の設定値を大き くするこ とによって デザインのパフォーマンスを向上できます

その他 ビッ トス ト リーム生成の設定

DCM では 次の 2 つのビッ ト ス ト リーム生成 (BitGen) オプシ ョ ンがあ り ます

bull -g lck_cycle このオプシ ョ ンを使用する場合インスタンシエート された DCM で LOCKED 出力がアサート されるまで FPGA のコンフ ィギュレーシ ョ ン スタート アップ シーケンスを遅らせるこ とができます

bull -g DCMShutdown このオプシ ョ ンを使用する場合JTAG ポート を使用した部分再コンフ ィギュレーシ ョ ン または全体の再コンフ ィギュレーシ ョ ンを実行中に コンフ ィギュレーシ ョ ン ロジックに SHUTDOWN コマンドがロード される と DCM ロジッ クがリセッ ト されます

Project Navigator でのビッ トス ト リーム生成オプシ ョ ン

ISE 52i Project Navigator を使用する場合は 図 51 に示すよ うに [Processes for Source] ウ ィンド ウで [Generate Programming File] を右ク リ ッ ク し [Properties] を選択するこ とによってビッ ト ス トリーム生成オプシ ョ ンを設定します

詳細は 「BitGen スイ ッチおよびオプシ ョ ン」 を参照してください

コマンド ライン またはスクリプ ト を使用したビッ トス ト リーム生成オプシ ョ ン

設定可能なオプシ ョ ンを表示するためには 次のコマンドを入力します

bitgen -help spartan3

DCM LOCKED 出力とコンフ ィギュレーシ ョ ン ロジックの設定

DCM の STARTUP_WAIT 属性を使用するこ とによってDCM で LOCKED 出力がアサート されるまで FPGA で DONE 信号がアサート されるを遅らせFPGA のコンフ ィギュレーシ ョ ン スタート アップロジッ クを待たせるこ とができます ただし このためには設計段階で次の二つの設定を行う必要があり ます まず ロ ッ ク状態になってからコンフ ィギュレーシ ョ ンを完了する必要がある各 DCM に対するSTARTUP_WAIT 属性を TRUE に設定します 次に各信号がスタート アップの 6 ク ロ ッ ク サイクルで 図 52 に示すよ うに動作するよ うにビッ ト ス ト リーム生成オプシ ョ ンを変更します デバイスがコンフ ィギュレーシ ョ ン スタート アップ シーケンスを完了するためにはDCM が LOCKED をアサート後に十分なコンフ ィギュレーシ ョ ン ク ロ ッ ク サイ クルが必要です

図 51 Project Navigator でのビッ トス ト リーム生成 (BitGen) オプシ ョ ン

Processes for Current Source

Generate Programming File

Programming File Generation Report

RunRerunRerun AllStopOpen without Updating

Properties

x462_51_061903

68 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他R

A FPGA 内部のグローバル ト ラ イ ステート信号 (GTS_cycle) を開放し すべての IO 信号をイネーブルにします

B GTS_cycle 後に DCM で LOCKED がアサート されるまでスタート アップ ロジッ クが待機するよにサイクルを設定します DCM では クロ ッ ク信号でロ ッ ク状態になる前に ク ロ ッ クおよび可能ならばフ ィードバッ ク信号のよ うな外部入力が必要です

C DCM がロ ッ ク状態になった後 FPGA の内部グローバル書き込みイネーブル (GWE_cycle) 信号をアサート します

D 最後に 内部の DONE 信号をアサート します

図 53 に Project Navigator を使用したオプシ ョ ン設定を示します

スタート アップ位相タイ ミ ングおよび GWE_cycle と DONE_cycle のタイ ミ ングには柔軟性があ り ますがDCM で STARTUP_WAIT 属性を使用する場合は必ず LCK_cycle の前に GTS_cycle がなければなり ません シーケンスがこのよ うになっていない場合にはDCM がロッ クせずコンフ ィギュレーシ ョ ンが完了しません

図 52 DCM LOCKED 出力とスタートアップ ロジックの相互関係

0 1 2 3 4 5 6

DONE_cycle

Start-up CLK

GTS_cycle

GWE_cycle

LCK_cycle

Start-up Cycles

A

B

C

D

x462_52_062403

図 53 BitGen オプシ ョ ン

Process Properties

Startup options

Value

CCLK

6

3

5

4

Default (NoWait)

General Options Configuration Options Readback Options

Property Name

FPGA Startup Clock

Enable Internal Done Pipe

Done (Output Events)

Enable Outputs (Output Events)Release Write Enable (Output Events)Release DLL (Output Events)

Match Cycle (Output Events)

Drive Done Pin High

OK Cancel Default Help

Optionally set GWE_cycle to follow GTS_cycleensuring DCM(s) reset afterIOs activate

LCK_cycle indicates cyclewhere start-up logic waitsfor DCM(s) to assertLOCKED

Done_cycle after LCK_cycle GTS_cycle must occur

before LCK_cycle to enableIO pins

[Startup options]

[OK] x462_53_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 69

R

JTAG を使用した部分再コンフ ィギュレーシ ョ ンまたは全体の再コンフ ィギュレーシ ョ ン中の DCM リセッ ト

も う 1 つのビッ ト ス ト リーム オプシ ョ ンと して SelectMAP を使用した部分再コンフ ィギュレーシ ョン中 または JTAG ポート を使用した全体および部分再コンフ ィギュレーシ ョ ン中に FPGA にあるすべての DCM を リセッ トできます このオプシ ョ ンを使用する場合 SHUTDOWN コマンド シーケンス中に AGHIGH コンフ ィギュレーシ ョ ン コマンドが発行される とDCM がリセッ ト されます JTAGを使用して再コンフ ィ ギュレーシ ョ ンを行う場合には 必ず DCM を リ セッ トする必要があ り ますProject Navigator でビッ ト ス ト リーム生成オプシ ョ ンを変更するためには (「Project Navigator でのビット ス ト リーム生成オプシ ョ ン」 を参照) 図 54 に示すよ うに Configuration options タブをク リ ッ クし [Reset DCM if SHUTDOWN amp AGHIGH performed] オプシ ョ ンのチェッ ク ボッ クスをオンにして ください

一時的な CLKIN の停止厳密なアナログ測定を行っている間のシステム全体のノ イズを削減するため FPGA アプリ ケーシ ョ ンのその他の部分に影響を与えるこ とな く 一時的に DCM へのクロ ッ ク入力を停止できます これが可能である理由の一部はDCM がすべてデジタルで安定して機能するシステムであるためです DCM では最初に入力クロ ッ クに対してロ ッ ク し次に LOCKED 出力をアサートする必要があ り ます DCM がリセッ ト しない場合には デスキュー回路にほとんど影響を与えずに CLKIN 入力クロ ッ クを一時的に停止できますが 次の条件を満たす必要があ り ます

bull デバイスが冷却するこ とによるタ ップ遅延の変化の影響を最小限にするために ク ロ ッ クの停止時

間は 100 ms 未満である必要があ り ます

bull ク ロ ッ クが Low である間に停止する必要があ り12 周期分の High から再開する必要があ り ます

上述の条件は理論的にはクロ ッ ク入力ジッタの仕様に違反しますがDCM の LOCKED 出力は Highを維持し ク ロ ッ クが再び動作する際にも High を維持しています したがって LOCKED が High であるこ とは必ずしも有効なクロ ッ クが使用可能であるこ とにはなり ません このため実際にはクロ ック入力ジッタの仕様に違反していますが これらの条件を満たす限り問題はあ り ません

CLKIN を停止する際にはDCM のデジタル遅延ラインにあるクロ ッ クが出力されるため 1 から 8 出力クロ ッ ク サイクルが生成されます 同様に CLKIN が再開する場合には 遅延ラインが満たされる

図 54 再コンフ ィギュレーシ ョ ン中に DCM をリセッ トするためのコンフ ィギュレーシ ョ ン オプシ ョ ン

Process Properties

Configuration options

ValuePull Up

Pull UpFloatPull UpPull Down0xFFFFFFFF

General Options Startup options Readback Options

Property NameConfiguration Pin DoneJTAG Pin TCKJTAG Pin TDIJTAG Pin TDOJTAG Pin TMSUnused IOBsUserID Code (8 Digit Hexadecimal)Reset DCM if SHUTDOWN amp AGHIGH performed

OK Cancel Default Help

Click Configuration options tab

Click OK when finished

Pull Up

Check to reset all the DCMsin the FPGA if the AGHIGHcommand issued duringSHUTDOWN sequence

x462_54_062103

70 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

参考資料R

までの 1 から 4 ク ロ ッ クサイ クル間は出力クロ ッ クが生成されません 通常 遅延ラインが満たされるためは 2 または 3 ク ロ ッ ク サイ クルが必要です

また 入力ク ロ ッ クを停止するこ とによって 位相シフ ト を行う こ とができます この位相シフ トは

DCM による制御を中断させるこ とな く 1 から 4 ク ロ ッ ク サイクル後のクロ ッ ク出力から影響を与えます

図 55 に CLKIN 入力クロ ッ クを一時的に停止する例を示します また この図には CLK2X ク ロ ッ ク出力への影響も示しています

参考資料 bull 『Spartan-3 データ シート 』 (モジュール 2) デジタル  ク ロ ッ ク  マネージャの特長および機能httpwwwxilinxcojpbvdocspublicationsds099-2pdf

bull 『Spartan-3 データ シート 』 (モジュール 3) タイ ミ ングおよびジッタ特性

httpwwwxilinxcojpbvdocspublicationsds099-3pdf

bull ザイ リ ンクス ISE 52i ライブラ リ ガイ ドDCM プリ ミ ティブhttptoolboxxilinxcomdocsanxilinx5pdfdocsliblibpdf

bull Architecture Wizard 録音版 Web セミナーhttpsupportxilinxcojpsupporttrainingjapan-home-pagehtm

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcojpxappxapp622pdf

bull 『開発システム リ ファレンス ガイ ド』 15 章 「BitGen」 ビッ ト ス ト リーム生成プログラムおよびオプシ ョ ン 335-367 ページhttptoolboxxilinxcomdocsanxilinx5pdfdocsdevdevpdf

図 55 CLKIN の一時的な停止

CLKIN

CLK2X

Clock input must bestopped in Low phase andfor no more than 100 ms

When restarted the clockinput must generate a fullHigh half-period

x462_55_062403

改訂履歴

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 71

R

改訂履歴 次の表に このアプリ ケーシ ョ ン ノートの改訂履歴を示します

日付 バージョ ン 履歴

20030709 10 初版リ リース

  • Spartan-3 FPGA におけるデジタル クロック
  • マネージャ (DCM) の使用
    • 概要
    • はじめに
    • 概要
    • DCM 位置および クロック分散 ネットワーク インターフェイス
    • DCM 機能の概要
      • 遅延ロック ループ (DLL)
      • デジタル周波数合成 (DFS)
      • 位相シフト (PS)
      • ステータス ロジック
        • DCM プリミティブ
          • シンボル
          • 接続ポート
          • 属性プロパティおよび制約
            • その他のザイリン クス FPGA ファ ミリとの互換性
            • DCM 使用のため のクロック条件
              • 入力クロック周波数範囲
              • 出力クロック周波数範囲
              • クロック入力およびクロック フィードバック入力の変動
                • LOCKED 出力
                • RST 入力
                • DCM Wizard
                  • DCM Wizard の起動
                    • Windows のスタート ボタンから起動
                    • Project Navigator から起動
                      • Wizard 選択
                      • [General Setup]
                      • アドバンスド オプション
                      • クロック バッファ
                      • クロック周波数合成
                      • HDL 出力の生成
                        • VHDL および Verilog のインス タンシエーション
                          • Project Navigator の言語テンプレート
                          • VHDL および Verilog リファレンス ファイル
                            • クロック スキュー の低減
                              • クロック スキューとは
                              • クロック スキュー パフォーマンス低下の原因
                              • スキューの削除
                              • 過去のクロック動作から将来のクロック動作を予測
                              • ターゲットのロック
                              • 安定した単調なクロック入力
                              • 確実なソースからのフィードバック
                              • 内部クロック信号からのスキュー削除
                              • 外部クロック信号からのスキュー削除
                                • コンフィギュレーション後の DCM リセット
                                • なぜリセットする必要があるのか
                                  • 遅延ロック ループとは
                                    • 遅延ロック ループ (DLL)
                                    • 位相ロック ループ (PLL)
                                    • インプリメンテーション
                                    • DLL と PLL
                                      • スキュー調整
                                        • システム同期
                                        • ソース同期
                                        • タイミングの比較
                                            • クロック調整
                                            • 位相シフト- ク ロック周期の分数 でクロックを遅延
                                              • 12 クロック周期位相シフト出力
                                                • 12 周期位相シフト出力によるデューティ サイクルのずれの削減
                                                • デュアル データ レート (DDR) クロックの例
                                                  • 14 位相シフト出力
                                                    • DLL 周波数モードによる出力の有効性
                                                    • 5050 デューティ サイクル調整オプション
                                                    • 4 つの位相遅延クロックエッジ位相パルス
                                                      • ファイン位相シフト
                                                      • 固定ファイン位相シフト
                                                        • 固定ファイン位相シフト範囲
                                                        • 最小位相シフト
                                                        • その他の考察点
                                                        • DCM Wizard
                                                          • 動的ファイン位相シフト
                                                            • 動作
                                                            • 動的ファイン位相シフト範囲
                                                            • 制御
                                                            • DCM Wizard
                                                            • アプリケーション例
                                                                • クロック逓倍 クロック分周 周波数合成
                                                                  • 周波数合成アプリケーション
                                                                  • 入力クロックおよび出力クロックの周波数条件
                                                                  • 2 逓倍クロック (CLK2XCLK2X180)
                                                                  • クロック分周 (CLKDV)
                                                                    • CLKDV クロック調整
                                                                    • CLKDV のジッタは周波数モードおよび属性値が整数か整数ではないかによって決定されます
                                                                    • DCM Wizard
                                                                      • 周波数合成回路 (CLKFXCLKFX180)
                                                                        • DCM Wizard
                                                                            • クロックのフォ ワードミラー リバッファ
                                                                            • クロック ジッタお よび位相ノイズ
                                                                              • クロック ジッタとは
                                                                              • クロック ジッタの原因
                                                                              • クロック ジッタ特性の理解
                                                                                • サイクル間ジッタ
                                                                                • 周期ジッタ
                                                                                • ユニット インターバル(UI)
                                                                                  • 総ジッタの計算
                                                                                    • DLL 出力ジッタへの入力ジッタの加算
                                                                                      • カスケード接続された DCM のジッタ計算
                                                                                        • 例 1 すべての DCM が DLL 出力を使用する場合
                                                                                        • 例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合
                                                                                        • カスケード接続した DCM を使用する場合の推奨デザイン
                                                                                          • システム パフォーマンスにおけるジッタの影響
                                                                                              • クロック ジッタを最小限にするための推奨デザイン
                                                                                                • 適切な電力分散システム設計
                                                                                                • 適切なプリント サーキット ボードの設計
                                                                                                • 同時スイッチ出力 (SSO) の推奨デザイン
                                                                                                • 仮想グランド ピンを DCM 入力および出力接続の近くに配置
                                                                                                • VCCAUX 考察
                                                                                                • FACTORY_JF 設定の修正
                                                                                                    • その他
                                                                                                      • ビットストリーム生成の設定
                                                                                                        • Project Navigator でのビットストリーム生成オプション
                                                                                                        • コマンド ラインまたはスクリプトを使用したビットストリーム生成オプション
                                                                                                        • DCM LOCKED 出力とコンフィギュレーション ロジックの設定
                                                                                                        • JTAG を使用した部分再コンフィギュレーションまたは全体の再コンフィギュレーション中の DCM リセット
                                                                                                          • 一時的な CLKIN の停止
                                                                                                            • 参考資料
                                                                                                            • 改訂履歴
Page 6: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々

6 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

DCM プリ ミテ ィブ

DCM プリ ミ ティブはデジタル ク ロ ッ ク マネージャのすべての機能を表します図 4 に DCM プリ ミティブを示し 次に DCM の接続ポート 属性 プロパティ および制約の要約を示します

シンボル

接続ポート

表 3 にデジタル ク ロ ッ ク マネージャの接続ポート を示し 各ポートについて 信号方向およびその接続を必要とする DCM ユニッ ト などを簡潔に説明します 表 2 には表 3 で使用している各機能ユニットの略称を示します

図 4 DCM プリ ミテ ィブ

表 2 表 3 で使用している機能ユニッ トの略称

略称 機能ユニッ ト

DLL 遅延ロッ ク ループ

PS 位相シフ ト

DFS デジタル周波数合成

CLK0

CLK90

CLK180

CLK270

CLK2X

CLK2X180

CLKDV

CLKFX

CLKFX180

STATUS[70]

LOCKED

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDEC

PSCLK

DCM

x462_04_061803

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 7

R

表 3 DCM 接続ポート

ポート 方向 説明機能ユニッ ト

DLL PS DFS

CLKIN ク ロ ッ ク入力 DCM へのクロ ッ ク入力であ り 常に必要です CLKIN の周波数およびジッタは 『Spartan-3 データ シート 』 で指定された範囲内である必要があり 周波数モードは DLL_FREQUENCY_MODE 属性または DFS_FREQUENCY_MODE 属性で指定されます

CLKFB 入力 DCM へのクロ ッ ク フ ィードバッ ク入力です フ ィードバッ ク入力はデジタル周波数合成出力である CLKFX または CLKFX180 のみが使用されている場合は必要あ り ません CLKFB 入力のソースは DCM からの CLK0 出力または CLK2X 出力であ り状況に応じて CLK_FEEDBACK を 1X または 2X に設定する必要があ り ます 理論的には フ ィードバッ ク地点には内部または外部のクロ ッ ク分散ネッ ト ワークで追加された遅延が含まれます

「確実なソースからのフ ィードバッ ク」 を参照してください

オプ

シ ョ ン

RST 入力 非同期のリセッ ト入力であ り DCM ロジッ クを リセッ ト してコンフ ィギュレーシ ョ ン後の設定に戻します この入力を使用した場合 DCM では再び CLKIN を確認し ロ ッ ク します また DCM ブロ ッ ク内部で反転可能であり 反転させない場合の動作については下表に示します 「RST 入力」 を参照してください

PSEN 入力 動的位相シフ ト イネーブル信号であ り DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位

相シフ ト 」 を参照してください

PSINCDEC 入力 動的位相シフ ト値を増減する場合に使用し DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位相シフ ト 」 を参照してください

PSCLK ク ロ ッ ク入力 PS へのクロ ッ ク入力であ り 立ち上がりエッジで入力されます DCM ブロ ッ ク内部で反転可能です 周波数モードは DLL_FREQUENCY_MODE 属性によって指定されます 「動的ファイン位相シフ ト 」 を参照してくださ

0 影響なし

1 DCM ブロ ッ クを リセッ ト します アクティブ High であ り最低 2ns 間 High を維持する必要があ り ます

0 動的位相シフ ト をディ スエーブルにし PS への入力は無視されます

1 PSCLK ク ロ ッ クの次の立ち上がりエッジで動的位相シフ トをイネーブルにします

0 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を増加させます

1 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を減少させます

8 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLK0 ク ロ ッ ク出力 位相シフ トは 0degであ り CLKIN と同一周波数の出力ですDUTY_CYCLE_CORRECTION 属性が TRUE の場合は デューティ サイクルが 50 に調整されます DLL 機能にはフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK90 ク ロ ッ ク出力 90deg(14 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません またDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK180 ク ロ ッ ク出力 180deg(12 周期) 位相シフ ト した CLKIN と同一周波数であ りDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイクルが 50 に調整されます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK270 ク ロ ッ ク出力 270deg(34 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません また DUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK2X ク ロ ッ ク出力 位相シフ トは 0degであ り 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合には 常にデューティ サイクルが 50 とな りDLL へのフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLK2X180 ク ロ ッ ク出力 180deg位相シフ ト し 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合はデューティ サイクルが常に 50 とな り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKDV ク ロ ッ ク出力 分周クロ ッ ク出力であ り CLKDV_DIVIDE 属性で制御されます DLL_FREQUENCY_MODE 属性が High であ り CLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 です また CLKDV_DIVIDE 値が整数ではないではない場合はロ ッ ク状態になるまでに必要な時間が長くなり ます これはクロ ッ ク分周 (CLKDV) 出力です

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 9

R

CLKFX ク ロ ッ ク出力 合成クロ ッ ク出力であ り CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性で制御されます デューティ サイクルは常に 50 です CLKFX または CLKFX180 ク ロ ッ ク出力のみが使用されている場合には クロ ッ ク フ ィードバッ クは必要あ り ません 「周波数合成回路 (CLKFX CLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKFX180 ク ロ ッ ク出力 CLKFX を 180deg位相シフ ト した (CLKFX を反転したよ うに見える) 合成クロ ッ ク出力であ り デューティ サイ クルは常に 50 です CLKFX ク ロ ック出力または CLKFX180 ク ロ ッ ク出力が DCM で使用されている場合には フ ィードバッ ク ループは必要あ り ません 「周波数合成回路 (CLKFXCLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

STATUS[0] 出力 動的位相シフ トがオーバーフローであるこ とを示します 動的ファイン位

相シフ トの制御出力で 動的位相シフ トが最小値または最大値に達してい

るこ とを示します 制限値は plusmn255 または位相シフ ト遅延ラインの最後に達した場合は その値以下になり ます 「動的ファイン位相シフ ト 」 を参照し

てください

STATUS[1] 出力 CLKIN 入力が停止したこ とを示し CLKFB フ ィードバッ ク入力が接続されている場合のみに使用できます LOCKED 出力がアサート されるまではリセッ ト状態であ り アクティブになるためには CLKIN が 1 サイクル以上必要です CLKIN が最初から ト グルしない場合にはアサート されません

STATUS[2] 出力 CLKFX 出力または CLKFX180 出力が停止したこ とを示します 周波数合成回路 (CLKFX CLKFX180) を参照してください

STATUS[73]

出力 予約済み

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

0 位相シフ トは制限値に達していません

1 位相シフ トが制限値に達しています

0 CLKIN がト グルしています

1 CLKIN がト グルしていません

0 CLKFX 出力および CLKFX180 出力がト グルしています

1 CLKFX 出力および CLKFX180 出力がト グルしていませんただしLOCKED 出力が High に維持されている場合があ ります

10 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

LOCKED 出力 すべての DCM 機能は CLKIN の周波数にロッ ク しています CLKIN が指定された範囲内 ( 「DCM 使用のためのクロ ッ ク条件」 に記載) である場合に クロ ッ ク出力が有効です 「周波数合成回路 (CLKFX CLKFX180)」を参照してください

PSDONE 出力 動的位相シフ トが完了したこ とを示します 「動的ファイン位相シフ ト 」 を

参照してください

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

0 DCM は CLKIN の周波数に対してロ ッ クする過程であ りDCM のクロ ッ ク出力は無効です

1 DCM は CLKIN の周波数に対してロ ッ ク しDCM のクロ ック出力は有効です

1 rarr 0 DCM のロ ッ ク状態が解除され DCM を リセッ トする必要があ り ます

0 位相シフ トが行われていない または実行中です

1 要求された位相シフ トは完了しています この出力が PSCLK の 1 サイクル間 High になった後次の位相シフ ト を実行できます

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 11

R

属性 プロパティ および制約

表 4 にデジタル ク ロ ッ ク マネージャの属性を示しますすべての属性は設計段階で設定されコンフ ィギュレーシ ョ ン中にプログラムされます 動的ファイン位相シフ ト以外では FPGA アプリ ケーシ ョ ンの実行中にこれらの設定を変更するこ とはできません 使用するデザイン入力ツールに合わせて lt属性gt=lt設定gtを使用し 属性を設定します

表 4 DCM 属性

属性 可能な設定および説明

DLL_FREQUENCY_MODE CLKIN 入力 PSCLK 入力 および遅延ロッ ク ループ (DLL) からの出力クロ ッ クの有効周波数範囲を指定します DLL ク ロ ッ ク出力には CLK0 CLK90 CLK180 CLK270CLK2X CLK2X180 CLKDV が含まれます

CLK_FEEDBACK フ ィードバッ ク ク ロ ッ クの周波数を指定します

DUTY_CYCLE_CORRECTION DLL からの出力である CLK0 CLK90 CLK180 および CLK270 に対する 50 デューティ サイ クル調整をイネーブルまたはディ スエーブルに設定します

CLKDV_DIVIDE CLKDV 出力の周波数を指定します 設定可能な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 です

CLKDV_DIVIDE が整数ではない場合 ロ ッ クするために必要な時間が長くなり 出力ジッ タが増加します

CLKFX_MULTIPLY CLKFX 出力および CLKFX180 出力の周波数を逓倍する場合の係数を指定します この値は CLKDV_DIVIDE 属性の値と と もに使用されます CLKFX_MULTIPLY に設定可能な範囲は整数値の 2 から 32 であ り デフォルトは 4 です

LOW デフォルトです DLL は低周波数モードで動作し DLL に関連したすべての出力が有効です ク ロ ッ ク入力およびクロ ッ ク出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DLL の指定範囲内にあ り ます

HIGH DLL は高周波数モードで動作します 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力 および 14 位相シフ ト出力 CLK90 と CLK270 は無効です CLKDV_DIVIDE 属性が整数以外の場合 CLKDV 出力のデューティ サイクルは 50 になり ません ク ロ ッ ク入力およびクロ ッ ク出力の周波数は『Spartan-3 データ シート 』 に記載されている高周波数 DLL の指定範囲内にあり ます

1X デフォルトであ り CLK0 フ ィードバッ クです周波数は CLKIN と同一です

2X CLK2X フ ィードバッ クであ り 周波数は CLKIN の 2 倍です

なし フ ィードバッ ク ク ロ ッ クはあ り ません CLKFX 出力または CLKFX180 出力のみを使用している場合に可能です

TRUE デフォルトであ り デューティ サイクルは 50 に調整されます

FALSE デューティ サイクル調整は行われません

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

12 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLKDV_DIVIDE CLKFX 出力および CLKFX180 出力の周波数を分周する場合の係数を指定します この値は CLKFX_MULTIPLY 属性の値と と もに使用されます設定可能な範囲は整数値の 1 から 32 であ り デフォルトは 1 です

PHASE_SHIFT この属性は CLKOUT_PHASE_SHIFT 属性が FIXED または VARIABLE に設定されている場合にのみ使用できます CLKIN とすべての DCM ク ロ ッ ク出力間の立ち上がりエッジにおけるスキューをコンフ ィギュレーシ ョ ンで定義し DCM ク ロ ッ ク出力を位相シフ ト させます

スキューまたは位相シフ ト値は整数で指定されます この整数値は 次の等式に示すよ うに

ク ロ ッ ク周期の分数で表され範囲は -255 から 255 になり ますデフォルト値は 0 であ り実際に設定可能な値は入力クロ ッ ク周波数によって異なり ます また TCLKIN gt FINE_SHIFT_RANGE の場合には 実際の範囲はよ り小さ くな り ますFINE_SHIFT_RANGE は遅延ラインにおけるすべてのタ ップの総遅延を示します 詳細は「ファ イン位相シフ ト 」 を参照してください

CLKOUT_PHASE_SHIFT 位相シフ ト モードを指定します PHASE_SHIFT 制約と共に使用し DCM のデジタル位相シフ ト (DPS) 機能をインプリ メン ト します また この設定は DLL および DFS からのすべてのクロ ッ ク出力に反映されます 詳細は 「ファ イン位相シフ ト 」 を参照してください

DESKEW_ADJUST FPGA ク ロ ッ ク入力ピンと DCM 出力クロ ッ ク間のクロ ッ ク遅延調整を制御します 「スキュー調整」 を参照してください

この設定を DCM ク ロ ッ ク出力の位相シフ トに使用しないでください 正確な位相シフ ト を行う場合にはCLKOUT_PHASE_SHIFT 制約または PHASE_SHIFT 制約を使用してください

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

なし デフォルトです CLKIN および CLKFB は同位相 (スキューなし ) であ り位相関係は変更できません PHASE_SHIFT = 0 の場合の FIXED 設定と同一です

FIXED 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定され アプ リ ケーシ ョ ンでは変更できません

VARIABLE 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定されますが 動的位相シフ ト制御信号 PSEN PSCLK PSINCDEC および PSDONE を使用してアプリ ケーシ ョ ンで変更可能です

SYSTEM_SYNCHRONOUS デフォルトであ り すべてのデバイスがシステム全体

に共通のクロ ッ ク ソースで動作します

SOURCE_SYNCHRONOUS データ ソースから クロ ッ クが入力されます ソース同期アプリ ケーシ ョ ンがその一例です

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 13

R

DFS_FREQUENCY_MODE DCM のデジタル周波数合成 (DFS) からのクロ ッ ク出力である CLKFX および CLKFX180 に有効な周波数範囲を指定します DLL ク ロ ッ ク出力が使用されている場合はDLL_FREQUENCY_MODE によって CLKIN 入力の周波数範囲がよ り制限されます

STARTUP_WAIT DCM の LOCKED 信号のアサート よ り先に FPGA コンフ ィギュレーシ ョ ンの DONE 信号を High にするかど うかを制御します

2 つ以上の DCM をコンフ ィギュレーシ ョ ンしている場合は すべての DCM がロ ッ クする必要があ り ます

CLKIN_DIVIDE_BY_2 CLKIN が DCM ブロ ッ クに入力される前に 周波数を 2 分周します アプリ ケーシ ョ ンによっては 入力クロ ッ クの周波数を適切な範囲内に低減できます

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

LOW デフォルトであ り DFS は低周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合 CLKIN 入力の周波数範囲はその出力によって変化します

HIGH DFS は高周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている高周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合CLKIN 入力の周波数範囲はその出力によって変化します

FALSE デフォルトであ り DCM がロ ッ ク状態になるのを待たずに DONE 信号がアサート されます

TRUE DCM がロ ッ ク状態になるまで DONE 信号は High になり ません ただし この STARTUP_WAIT は LOCKED 信号が High になるのを妨げるものではあり ません またFPGA のスタート アップ シーケンスのサイクルの始めに LCK (ロ ッ ク ) サイクルを挿入するよ うに修正する必要があ り ます ( 「ビッ ト ス ト リーム生成の設定」 を参照してください) 通常は DONE サイクルまたは GWE サイクルがその後に続きます

FALSE デフォルトであ り CLKIN は直接 DCM ブロ ッ クに入力されます

TRUE CLKIN が DCM に入力する前に その周波数を 2 分周され デューティ サイクルは約 50 に調整されます これは 高周波数のクロ ッ クを使用し DCM の入力クロ ッ クの周波数条件またはデューティ サイ クル条件を満たす場合に有効です また 周波数モードを決定する場合 または位相シフ ト範囲を算出する場合に クロ ッ ク周波数を 2 分周します

14 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他のザイリンクス FPGA ファ ミ リ との互換性R

その他のザイリンクス FPGA ファミ リ との互換性

Spartan-3 のデジタル ク ロ ッ ク マネージャ (DCM) は Virtextrade-II および Virtex-II Pro FPGA ファ ミ リで使用されている DCM とほぼ同様の機能を持ちますが Spartan-3 DCM は第三世代の DCM デザインであ り さ らに機能が向上しています 特に Virtex-II デバイス と比較する と Spartan-3 デバイスはVCCAUX 供給電源における ノ イズ耐性が改善されVirtex-IIPro ファ ミ リ よ り も位相シフ ト機能に柔軟性があ り ます 出力の周波数制限値はVirtex-II および Virtex-II Pro ファ ミ リの DCM の方が高くなっています

またSpartan-IIIIE と比較する と Spartan-3 DCM の遅延ロッ ク ループ (DLL) 機能は大幅に改善され Spartan-IIIIE DLL の機能をすべて備えているだけでなく 周波数合成および位相シフ ト機能が追加されました Spartan-3 の周波数合成では 最大 32 までの係数を使用して入力クロ ッ クを逓倍しますが Spartan-IIIIE DLL での周波数合成機能は 2 逓倍までです 同様に Spartan-3 DCM の分周機能はSpartan-II DLL よ り広範囲に対応しています

DCM 使用のためのクロック条件

DCM は その機能に最大限の柔軟性があるよ うに設計されていますが ク ロ ッ クの周波数と安定性周波数の変動 およびクロ ッ ク ジッタにいくつかの条件があ り ます

入力クロック周波数範囲

DCM のクロ ッ ク入力周波数は アプ リ ケーシ ョ ンにおける DLL ユニッ ト DFS ユニッ ト またはその両方によって決定されます

表 5 に デジタル周波数合成 (DFS) ユニッ トでの入力クロ ッ クCLKIN の周波数範囲を示します DFS ユニッ ト を単独で使用する場合の周波数範囲は DLL 入力ニッ ト よ り も広くな り ますが 両ユニッ ト を使用する場合には よ り厳しい周波数条件を DLL に適用する必要があ り ます 表には データ シートに記載されている仕様名および概算値の 1 つを示していますが実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

FACTORY_JF DCM の DLL ユニッ トでタ ップ設定を修正する頻度を制御します この設定は DLL エレメン トのジッ タ特性に影響を与え DLL_FREQUENCY_MODE 属性に基づいて自動的に指定されます

設計方法と して推奨された場合以外は デフォルト設定を変更しないでください (「FACTORY_JF 設定の修正」 を参照してください)

LOC 図 1 に示すよ うに DCM の物理的な配置位置を指定します

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

DLL_FREQUENCY_MODE FACTORY_JF

LOW 0xC080

HIGH 0xF0F0

DCM_X0Y0 DCM の左下

DCM_X1Y0 DCM の右下 (XC3S50 では設定不可)

DCM_X0Y1 DCM の左上

DCM_X1Y1 DCM の右上 (XC3S50 では設定不可)

DCM 使用のためのクロック条件

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 15

R

表 6 に遅延ロッ ク ループ (DLL) ユニッ トでの入力クロ ッ ク CLKIN の周波数範囲を示します DLLが単独で使用されている場合と DFS と と もに使用されている場合では 同一の周波数条件が適用されます 表には低周波数モードおよび高周波数モードの場合の DLL の周波数範囲を示しています この周波数モードはDLL_FREQUENCY_MODE 属性によって指定されます 表にはデータ シートに記載されている仕様名および概算値の 1 つを示していますが 実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

出力クロック周波数範囲

DCM の出力クロ ッ クに対しても周波数範囲が指定されています 詳細は 「入力クロ ッ クおよび出力クロ ッ クの周波数条件」 を参照して ください

クロック入力およびクロック フ ィードバック入力の変動「安定した単調なクロ ッ ク入力」 で説明するよ うに DCM では安定性があ り単調なクロ ッ ク入力を使用する必要があ り ます しかし DCM 機能の柔軟性を最大限に使用しよ う とする場合 CLKIN で発生するクロ ッ ク ジッタおよび CLKIN 入力と CLKFB 入力の変動をある程度まで許容しなければなり ません

CLKIN 入力におけるジッタには 2 つのタイプがあ り ます 1 つはサイ クル間ジッタであ り このジッタは CLKIN 入力周期があるサイ クルから次のサイ クル間でどの程度の変化を許容できるかを示します 表 7 にデータ シートに記載されている仕様名および概算値を含むサイクル間ジッタの最大許容範囲を示します

表 5 デジタル周波数合成 (DFS) ユニッ トのクロック入力周波数範囲

機能 最小周波数 最大周波数

デジタル周波数合成 (DFS) CLKIN_FREQ_FX_MIN ~ 100 MHz

CLKIN_FREQ_FX_MAX ~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 6 遅延ロック ループ ユニッ トのクロック入力周波数範囲

機能

DLL 周波数モード属性 (DLL_FREQUENCY_MODE)

= LOW = HIGH

最小周波数 最大周波数 最小周波数 最大周波数

遅延ロ ッ ク ループ (DLL)

CLKIN_FREQ_DLL_LF_MIN

~ 24 MHz

CLKIN_FREQ_DLL_LF_MAX

~ 180 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 48 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 7 サイクル間ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_CYC_JITT_FX_LF~ plusmn300 ps

CLKIN_CYC_JITT_FX_HF~ plusmn150 ps

遅延ロッ ク ループ (DLL) CLKIN_CYC_JITT_DLL_LF~ plusmn300 ps

CLKIN_CYC_JITT_DLL_HF~ plusmn150 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

16 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

LOCKED 出力R

も う 1 つのジッタは 周期ジッタ と呼ばれ クロ ッ ク周期間の最大変動を示します サイクル間ジッタがあるサイクルと次のサイクルの差を示すのに対し 周期ジッタはクロ ッ ク周期全体での変化範囲を示

します 表 8 にデータ シートに記載されている仕様名および概算値を含む周期ジッタの最大許容範囲を示します

DCM の安定性に影響を与える別の要素は DLL で使用される ク ロ ッ ク フ ィードバッ ク パスですフ ィードバッ ク パス遅延の変動は 表 9 に示す範囲内でなければな り ません ただし グローバル クロ ッ ク ラ インに接続される場合はチップ上の変動が最小になるため こ こに示した範囲制限は外部フ ィードバッ ク パスにのみ適用されます

LOCKED 出力 DCM の LOCKED 出力は すべての DCM 機能が CLKIN 入力にロ ッ ク している こ と を示し ますLOCKED 信号がアサート される場合にはFPGA アプリ ケーシ ョ ン内で出力クロ ッ クを使用できます

図 5 に LOCKED 出力信号の動作を示しますLOCKED 出力は FPGA のコンフ ィギュレーシ ョ ン終了直後に Low になり RST 入力がアサート されている場合は常に Low です

コンフ ィギュレーシ ョ ン後 DCM は CLKIN 信号の有効無効に関わらず 常にロ ッ ク状態になろ う とします入力クロ ッ クが安定していない場合にはCLKIN 入力が安定するまでFPGA 回路 で RST 入力をアサートする必要があ り ますDLL では CLKIN 入力および CLKFB 入力の両方を使用し これらの立ち上がりエッジが同位相である時に完全にロ ッ ク状態であるこ とを確認しますDFS ではCLKINを使用してク ロ ッ クの周波数が有効であるかを確認します また DCM がロ ッ ク状態になるために数千クロ ッ ク サイクルのサンプルが必要となる場合があ り ます

DCM の CLKIN に対するロッ クが完了する とLOCKED 出力が High にアサート されDCM のクロ ック出力が有効となるため FPGA アプリ ケーシ ョ ン内でこれらの出力を使用できます 『Spartan-3 データ シート 』 の タイ ミ ングに関する章には ロ ッ クに必要な時間のワース ト ケースが記載されています通常 クロ ッ ク周波数が高いほどDLL 出力は短時間でロッ ク状態になり ます またDFS 出力がロックするためには非常に長い時間が必要とな り ます この時間は 逓倍または分周の係数によって変化し

ますが これらの係数が小さいほど時間は短縮します

システム ク ロ ッ クが安定してから FPGA のコンフ ィギュレーシ ョ ンを完了させるために オプシ ョ ンと して DCM がロ ッ ク状態になるまでコンフ ィギュレーシ ョ ンの完了を遅らせるこ とができます この機能は STARTUP_WAIT 属性で制御します

LOCKED が High になる前の DCM ク ロ ッ ク出力信号の動作は保証していません LOCKED が Highになる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な波形が含まれている場合があ ります

表 8 周期ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_PER_JITT_FX_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_FX_HF~ plusmn1000 ps (plusmn1 ns)

遅延ロッ ク ループ (DLL) CLKIN_PER_JITT_DLL_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_DLL_HF~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 9 外部フ ィードバック パス遅延範囲

解説 指定範囲

チップ外にある CLKFB フ ィードバッ ク パス遅延の最大許容範囲 CLKFB_DELAY_VAR_EXT ~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

RST 入力

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 17

R

CLKIN 入力の周波数が指定範囲内である場合DCM は内部遅延のタップを調整し ロ ッ ク状態を維持しますが その制限を大幅に満たしていない場合には ロ ッ ク状態が解除され LOCKED 出力が Lowになり ます

一度 DCM のロ ッ ク状態が解除される と 自動的に再びロッ ク状態に戻るこ とはあ り ません ロ ッ ク状態が解除された場合つま り LOCKED が High から Low となった場合にはFPGA アプリ ケーシ ョ ンでは RST 入力を使用して DCM を リセッ トするなどの適切な方法を使用して 再びロ ッ ク状態にする必要があ り ます

RST 入力 非同期の RST 入力は DCM ロジッ クを リ セッ ト してコンフ ィギュレーシ ョ ン後の設定に戻しますRST ピンはFPGA を再コンフ ィギュレーシ ョ ンする場合または許容範囲を超えている入力周波数を変更する場合に使用して ください このピンはアクティブ High であ り ダイナミ ッ ク信号またはグランドに接続する必要があ り ます また RST 入力は最低 2ns 間アサート しなければなり ません

コンフ ィギュレーシ ョ ン後に 入力ク ロ ッ ク周波数が安定していない場合 ク ロ ッ クが安定するまで

RST をアサー ト して ください また 外部フ ィードバッ クを使用している場合は コンフ ィギュレーシ ョ ン直後に DCM を リセッ ト します31ページの図 20 に SRL16 シフ ト レジスタ プリ ミ ティブを使用した リセッ ト方法の例を示します

LOCKED 周波数が High から Low になる場合のよ うに DCM のロ ッ ク状態が解除される と FPGAアプリ ケーシ ョ ンでは RST をアサート しDCM に入力クロ ッ ク周波数に対して再ロ ッ ク させる必要があ り ます

図 5 LOCKED 出力の機能的な動作

LOCKED HIGH

FPGA RST

Y

N

Y

N

FPGA

LOCKED LOW

CLKIN

LOCKED LOW

RST

x462_05_062103

CLKIN

RST

RST

18 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

DCM の LOCKED 出力が High の場合 RST がアサート される と この LOCKED 出力は 4 ク ロ ッ クサイ クル以内に Low になり ます このため リセッ ト後は DCM を再びロ ッ ク状態にさせます

また RST をアサートするこ とによって DCM の遅延タップ位置がゼロに戻り このタ ップ位置を変更するこ とによってDCM のクロ ッ ク出力ピンでグ リ ッチが発生する可能性があ り ます 同様にRSTはクロ ッ ク出力のデューティ サイクルにも影響を与えます

さ らに RST がアサート される と現在の可変位相シフ ト値は PHASE_SHIFT 属性で指定された値に戻り ます

DCM Wizard DCM を使用するアプリ ケーシ ョ ンを容易にするために ザイ リ ンクス ISE には 順を追って DCM を設定できるソフ ト ウェア Wizard が含まれています 図 6 に示すよ うに DCM Wizard を使用するこ とによってVHDL 構文または Verilog 構文で DCM をインスタンシエートするベンダ固有のロジッ ク合成ファイルを生成できます また DCM Wizard では特定のインプリ メンテーシ ョ ン用にユーザー制約ファイル (UCF) を生成できますさ らにすべてのユーザー仕様はXilinx Architecture Wizard (XAW)設定ファイルに保存されます

DCM Wizard の起動DCM Wizard を起動するためにはWindows のスタート ボタンから起動するまたはザイ リ ンクス ISEProject Navigator ソフ ト ウェアから起動する という 2 つの方法があ り ます

Windows のスタート ボタンから起動

DCM Wizard を Windows スタート ボタンから起動する場合は[スタート ] rarr [すべてのプログラム] rarr[Xilinx ISE 5] rarr [アクセサリ ] rarr [Architecture Wizard] をク リ ッ ク します 図 7 に設定ウ ィンド ウを示します

bull DCM のオプシ ョ ン設定を保存する Xilinx Architecture Wizard (xaw) ファ イル名を入力します

bull こ こで [Browse] ボタンをク リ ッ ク して xaw ファ イルを選択するこ と も可能です

bull 出力ファイルのロジッ ク合成言語を VHDL または Verilog から選択します

bull ロジッ ク合成ツールを選択します DCM Wizard では 指定した合成ツールに応じて ベンダ固有の出力ファイルが生成されます

bull ターゲッ ト デバイスに Spartan-3 を選択します

図 6 DCM Wizard の DCM 設定用グラフ ィ カル インターフェイス

DCM Wizard

User contraintsfile (UCF)

Vendor-specificVHDL or Verilog

Xilinx ArchitectureWizard (XAW)

settings file

Graphically configure aSpartan-3 Digital ClockManager (DCM)

x462_06_061803

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 19

R

Project Navigator から起動

Project Navigator のメニュー バーから または [Sources in Project] ウ ィンド ウから DCM Wizard を起動できます メニュー バーで [Project] rarr [New Source] を選択するか [Sources in Project] ウ ィンドウで右ク リ ッ ク し [New Source] を選択してください

図 8 に示すよ う に リ ス ト か ら [Architecture Wizard] を選択し ます Xilinx Architecture Wizard(xaw) ファ イル名を入力し そのファイルを保存するディ レク ト リ を選択した後 [Next] をク リ ッ クします

図 7 Architecture Wizard の設定

図 8 Project Navigator での Architecture Wizard 設定

Xilinx Architecture Wizard Setup

My_Spartan-3 Browse

XAW File

Output File Type

VHDL Verilog

XST

Synthesis Tool

XC3S1000-FT256-4 Select

OK Cancel

Part

DCM

Spartan-3

[OK]

x462_07_061803

New

User DocumentVHDL ModuleCoreGen IPSchematicVHDL LibraryVHDL PackageVHDL Test BenchTest Bench WaveformBMM FileMEM FileImplementation Constraints FileArchitecture WizardState Diagram

My_Spartan-3

F ile Name

MyDirectory

Lo cation

Add to Project

lt Back Next gt Cancel Help

DCM

[Next]

Architecture Wizard

x462_08_061803

20 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

Wizard 選択前述した手順はすべての ISE Architecture Wizard に共通ですが Spartan-3 FPGA は図 9 に示す DCMWizard をサポート します こ こで [OK] をク リ ッ ク し 次に進みます

[General Setup] 図 10 に示すよ うに ほとんどのオプシ ョ ンは DCM Wizard の [General Setup] ダイアログ ボッ クスで設定します 楕円の枠内には その設定に対応する DCM プリ ミ ティブ属性名を示します

bull DCM のインスタンス名を入力します このインスタンス名は Verilog または VHDL 出力ファイル内で使用されます

bull 最終的なアプリ ケーシ ョ ンにおける出力および機能を選択するためには 必要な DCM ク ロ ッ ク出力のチェッ ク ボッ クスをオンにします チェッ ク ボッ クスをオンにした出力に対しては それに関連したオプシ ョ ンの設定が可能になり ます

bull CLKIN ク ロ ッ ク入力の周波数を入力します 周波数を MHz で指定するかまたはクロ ッ ク周期をns で指定して ください この値によって DCM の DLL_FREQUENCY_MODE 属性が設定されます

bull CLKIN ソースが FPGA の内部であるか外部であるかを指定します[External] を選択した場合DCM Wizard は自動的にグ ローバル バッ フ ァ入力 (IBUFG) プ リ ミ テ ィ ブを挿入し ます[Internal] を選択した場合は ソース信号は HDL ソース ファ イル内の ト ップ レベル入力となり ます

bull CLKDV 出力をオンにした場合は クロ ッ ク分周回路の [Divide by Value] 値を指定します この値によって DCM の CLKDV_DIVIDE 属性が設定されます

bull DCM へのフ ィードバッ ク パスを指定します CLKFX 出力または CLKFX180 出力のみを使用する場合は [None] を選択します これらの出力を使用しない場合は フ ィードバッ クが必要ですFPGA 内部からのフ ィードバッ クを使用する場合は [Internal] を選択し外部からのフ ィードバック ループを使用する場合は [External] を選択します さ らに DCM フ ィードバッ クのソースをCLK0 (1X) または CLK2X (2X) から選択します この選択によってDCM の CLK_FEEDBACK属性が設定されます

図 9 Spartan-3 FPGA でのみ選択可能な DCM Wizard

Xilinx Architecture Wizard Selection

DCM Wizard

OK Cancel

Select Wizard

Spartan-3 DCM Wizard [OK]

x462_09_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 21

R

bull すべての DCM 出力における位相シフ トの有無を指定します デフォルト設定は位相シフ ト なし (None) です 位相シフ トが必要な場合は 位相シフ ト値と して [Fixed] または [Variable] を選択します [Variable] を選択するこ とによって 動的位相シフ ト制御 PSEN PSINCDECPSCLK および PSDONE が使用可能となり DCM の CLKOUT_PHASE_SHIFT 属性が指定されます Fixed モードおよび Variable モードのいずれを選択する場合でも 固定位相シフ ト値あるいは動的位相シフ トの初期値を決定する [Phase Shift Value] を指定します この値によってDCM の PHASE_SHIFT 属性が設定されます

bull アドバンス ド オプシ ョ ン ウ ィンド ウを開く場合は [Advanced] ボタンをク リ ッ ク します

bull 設定の完了後 [Next] をク リ ッ ク し ク ロ ッ ク バッファ ダイアログ ボッ クスに進みます

アドバンスド オプシ ョ ン図 11 に示すアドバンス ド オプシ ョ ン ウ ィンド ウで さ らに詳細な DCM オプシ ョ ンを設定できます

bull デフォルトではDCM は FPGA のコンフ ィギュレーシ ョ ンに対して影響を与えませんが [Yes] をク リ ッ ク した場合は DCM が LOCKED 出力をアサートするまで FPGA コンフ ィギュレーシ ョンで DONE 信号のアサート を遅らせるこ とができます この設定は DCM の STARTUP_WAIT属性で定義します このよ うに [Yes] を選択した場合は ビッ ト ス ト リーム生成オプシ ョ ンの追加

図 10 [General Setup] ダイアログ ボックスでの DCM オプシ ョ ン設定

Xilinx DCM Wizard - General Setup

MY_DCMDCM Instance Name

Input Clock Frequency

MHz ns 2

Phase Shift Value

30

Advanced

Source

CLK0

CLK90

CLK180

CLK270

CLKDV

CLK2X

CLK2X180

CLKFX

CLKFX180

LOCKED

STATUS

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDECPSCLK

CLKIN SourceInternal

External

Divide By Value

FeedbackInternal External None

Value 1X 2X

Duty Cycle Correction

Yes No

Phase ShiftNone Fixed Variable

23 More Info

lt B ack Next gt Cancel

DCM

CLKFX CLKFX180

CLKDV

MHz ns

Advanced

(BUFG)

[Yes] CLK0CLK90 CLK180 CLK270

50CLK0 (1X)CLK2X (2X)

[Next]

CLKDV

[Fixed] PSEN PSINCDECPSCLK

[Variable]

DLL_FREQUENCY_MODE

CLK_FEEDBACK

CLKDV_DIVIDE

CLKIN IBUFG

[External][Internal]

DUTY_CYCLE_CORRECTIONCLKOUT_PHASE_SHIFT

DCM

PHASE_SHIFT

x462_10_061803

22 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

変更が必要です この変更については 「DCM LOCKED 出力と コンフ ィギュレーシ ョ ン ロジッ クの設定」 で説明します

bull ある特定の DCM において CLKIN 入力の周波数が高すぎる場合には [Divide Input Click by 2]の [Yes] をク リ ッ ク し 入力周波数を半減させて ください これによって DCM ブロ ッ クに入力前のデューティ サイ クルは約 50 にな り ます この設定は DCM の CLK_FEEDBACK 属性で定義します

bull ソース同期のデータ転送が必要なアプリ ケーシ ョ ンでは [DCM Deskew Adjust] 値を [SOURCE_SYNCHRONOUS] に変更します SOURCE_SYNCHRONOUS または SYSTEM_SYNCHRONOUS 以外の値を使用する場合はザイ リ ンクスにお問い合わせください この設定は DCM の CLK_FEEDBACK 属性を定義します 「スキュー調整」 を参照して ください

bull [OK] をク リ ッ ク し 変更を適用して [General Setup] ウ ィンド ウに戻り ます

クロック バッファ次に DCM の各クロ ッ ク出力に対するクロ ッ ク バッファを定義します(図 12 参照) DCM Wizard のデフォルト設定では 自動的にすべての DCM ク ロ ッ ク出力にグローバル バッファ (BUFG) を使用しますが Spartan-3 デバイスでは 上辺および下辺のそれぞれにある 4 つのグローバル バッファを同一辺にある 2 つの DCM で共有しますXC3S50 では上辺または下辺に 1 つの DCM があ り オプシ ョ ンと して同じ辺にある 4 つのクロ ッ ク バッファすべてに接続できます

bull [Clock Buffer Settings] にある [Customize] をク リ ッ ク し DCM の各クロ ッ ク出力にクロ ッ クバッファの種類を指定します

bull DCM の各クロ ッ ク出力に対して リ ス トから [Clock Buffer] 出力タイプを選択します 表 10 に選択可能なクロ ッ ク バッファ オプシ ョ ンを示します

bull [Enabled Buffer] 出力タイプを使用する際にはバッファ イネーブル (CE) 入力の信号名を指定できますが 自動的に作成された信号名も使用できます

bull [Clock Mux] 出力タイプを使用する場合もセレク ト (S) 入力の信号名を指定できますが自動的に作成された信号名も使用できます

bull [Next] まはた [Finish] をク リ ッ ク し 設定を完了します [Next] ボタンが表示されるのは[General Setup]ダイアログ ウ ィ ン ド ウで CLKFX 出力または CLKFX180 出力を選択した場合のみです それ以外の場合は [Finish] をク リ ッ ク し HDL 出力を生成します ( 「HDL 出力の生成」を参照して ください)

図 11 DCM アドバンスド オプシ ョ ン設定

Xilinx DCM Wizard Advanced

Wait for DCM lock before DONE signal goes high

Yes No

Divide Input Clock by 2

Yes No

SYSTEM_SYNCHRONOUS

OK Cancel

DCM Deskew Adjust

CLKIN 12

FPGA

DONEDCM

DCM

[OK]

DCM

STARTUP_WAIT

CLKIN_DIVIDE_BY_2

DESKEW_ADJUST

x462_11_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 23

R

図 12 DCM Wizard を使用した DCM 出力のバッファ オプシ ョ ン設定

Xilinx DCM Wizard - Clock Buffers

This dialog sets up the clock buffers for all the DCM clock outputs selected in the GeneralSetup dialog

Clock Buffer Settings

U se Global Buffer (BUFG) for all selected DCM clock outputs

C ustomize (using grid below)

Reference the lsquoMore Inforsquo button for more information on customizing the global buffers

M ore Info

lt Back N ext gt Cancel

Clock Buffer Input I0 Input I1 Input CES

Global Buffer CLK0

Enabled Buffer CLK90 CLK90_ENABLE_IN

Clock Mux CLK2X180 CLKFX CLKFX_SELECT_IN

Lowskewline CLK180

Local Routing CLK270

CLK2XGlobal BufferGlobal Buffer

Enabled BufferClock MuxLowskewlineLocal RoutingNone

Output O

CLK0_OUT

CLK90_OUT

CLKFX_OUT

CLK180_OUT

CLK270_OUT

CLK2X_OUT

DCM Wizard

BUFG

DCM

DCMFPGA

FPGA

[Next]

x462_12_061703

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

グローバル バッファ

4 つあるグローバル バッファ (BUFG) の 1 つを同じ辺にある DCM に接続します

イネーブル バッファ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク バッファ (BUFGCE) と して設定しているバッファに接続します CE 入力は High の場合にバッファをイネーブルにしLow の場合は バッファ出力がゼロになり ます

BUFGI0 O

BUFGCEI0 O

CE

CE O

0 0

1 I0

24 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

クロック周波数合成

図 13 に示すク ロ ッ ク周波数合成ダイアログ ボッ ク スは [General Setup] ダイアログ ウ ィ ン ド ウでCLKFX 出力または CLKFX180 出力を選択した場合のみに表示されます

こ こでは必要な出力周波数 または逓倍および分周の係数を指定します [Valid Ranges for SelectedSpeed Grade] で周波数範囲 (CLKIN を ns で指定した場合は遅延) を指定します 周波数範囲にはDFS_FREQUENCY_MODE 属性で設定可能な両方の値が表示されます DCM で DLL に関係したクロ ッ ク出力を使用する場合 この範囲条件はよ り厳し くな り ます

bull [Use output frequency] のチェッ クをオンにし MHz または ns で周波数を入力します [Calculate] をク リ ッ クする と CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性の値が算出されます 入力した範囲から可能な逓倍値および分周値を算出できない場合は DCM Wizard で別の出力周波数値を入力するよ うに求めるエラー メ ッセージが表示されます ソ リ ューシ ョ ンがある場合は [Generated Output] に逓倍値 分周値 およびジッ タの値が表示されます ( 「ク ロ ック ジッタおよび位相ノ イズ」 を参照してください)

bull オプシ ョ ンと して[Use Multiply (M) and Divide (D) values] のチェッ クをオンにしこれらの値を入力でき ます [Calculate] を ク リ ッ ク し 出力周波数およびジ ッ タ を計算し ます 結果は[Generated Output] に表示されます

bull 最後に[Finish] をク リ ッ ク しHDL 出力を生成します (「HDL 出力の生成」を参照してください)

ク ロ ッ ク マルチプレクサ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク マルチプレクサ (BUFGMUX) として設定しているバッファに接続します S 入力はクロ ッ ク ソースを選択します

低スキュー ライン 低スキューのプログラマブル相互接続に接続します

ローカル配線 スキューが重要ではない場合において ローカル相互接続に接続します

なし DCM 出力をディ スエーブルにします

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

O

S

BUFGMUXI0

I1 S O

0 I0

1 I1

I0

I0

VHDL および Verilog のインスタンシエーシ ョ ン

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 25

R

HDL 出力の生成すべてのパラ メータを入力後 [Finish] をク リ ッ クする と 図 14 に示すよ うに DCM Wizard が自動的に VHDL または Verilog HDL 出力ファイルを生成します また ユーザー制約ファイル (UCF) も生成されます

VHDL および Verilog のインスタンシエーシ ョ ン

DCM Wizard を使用し VHDL または Verilog HDL 記述を作成する方法が最も容易ですが VHDLソースおよび Verilog ソースも利用できます

Project Navigator の言語テンプレート

ISE 52i およびそれ以降の Project Navigator では DCM の言語テンプレートが使用できます DCMテンプレート を選択する場合はProject Navigator のメニューで [Edit] rarr [Language Templates] をクリ ッ ク します 図 15 に示すテンプレー ト で Verilog フォルダまたは VHDL フォルダを展開表示し

図 13 デジタル周波数合成の逓倍値と分周値の設定 およびジッ タの算出

Xilinx DCM Wizard - Clock Frequency Synthesizer

Valid Ranges for Selected Speed Grade

Inputs for Jitter Calculations

U se output frequency

M Hz ns875

U se Multiply (M) and Divide (D) values

4M 1D

Input Clock Frequency 30 ns C alculate

lt Back Finish Cancel

More Info

Generated Output

MOutput

Frequency(MHz)

29 111

Period Jitter(pk-to-pk ns)

D

11 875

Period Jitter(unit interval)

010

DFSMode

Fin (MHz)

Low

High

24000 - 18]0000

50000 - 270000

24000 - 210000

210000 - 270000

Fout (MHz)

MHz ns[Calculate]

DCM Wizard (M)

(D)

(M)(D)

[Calculate]

[Calculate]

[Finish]

DCM

CLKFX_MULTIPLY CLKFX_DIVIDE

CLKFX_MULTIPLY CLKFX_DIVIDE

DFS_FREQUENCY_MODE

x462_13_061803

図 14 DCM Wizard での VHDL または Verilog HDL 出力ファイルの生成

Xilinx Architecture Wizard

Cancel

Generating HDL file

x462_14_061803

26 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

Component Instantiation フォルダの DCM フォルダを選択します 次にDCM フォルダにある DCMソース ファ イルを選択する と 隣接したウ ィンド ウにソース ファ イルが表示されます

このファイルは参照用と して または内容を新規ソース ファ イルに貼り付けて使用できます

VHDL および Verilog リファレンス ファイル

また この VHDL および Verilog のソース ファ イルは 次のザイ リ ンクス FTP サイ トからダウンロードできます

bull VHDL DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_vhdlzip

bull Verilog DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_verilogzip

クロック スキューの低減

スキューの低減はDCM の基本的な機能の 1 つです 50 MHz 以上の速度で動作するデザインではクロ ッ ク スキューの低減が重要であ り このク ロ ッ ク スキューの低減に関連する概念は DCM を使用したその他のアプリ ケーシ ョ ンにも応用できます

クロック スキューとはク ロ ッ ク スキューは本質的にすべての同期システムに存在します ク ロ ッ ク ソースによって生成されたクロ ッ ク エッジは システム内の異なる点に 異なる時間に到達します これは 1 つのデバイス内の場合も クロ ッ クで接続された異なるデバイスへのクロ ッ ク入力の場合もあ り ます こ こで発生する到達時間の差がクロ ッ ク スキューです

図 16 に 同期システムにおけるクロ ッ ク スキューの例を示します ク ロ ッ ク ソースによって ク ロ ック入力が FPGA へ駆動され FPGA 上の入力ピンに入る と 内部の低スキュー グローバル ク ロ ッ クネッ ト ワークを使用して分配され FPGA 内部のフ リ ップフロ ップに到達します ク ロ ッ ク パスにある各エレ メン トによって フ リ ップフロ ップにクロ ッ ク エッジが到達する時間に遅延が生じます その結果と して フ リ ップフロ ップにおけるク ロ ッ ク入力 (B) で遅延が発生する つま り ク ロ ッ ク ソース (A)と比較してスキューが発生します この例では ク ロ ッ ク スキュー つま り到達時間の差を ∆b と します

図 15 Project Navigator 言語テンプレートでの DCM デザインの選択

Language Templates

Verilog

Component Instantiation

Block RAM

CLK0

CLK0_FB

CLK2X

Templates Module BUFG_CLK0_SUBM Description Verilog Submodule DCM with CLK0 deskew-

module BUFG_CKL0_SUBM ( CLK_IN RST CLK1X LOCK

DCM

x462_15_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 27

R

同様に ク ロ ッ ク ソースは FPGA 内部で再びバッファを介し ボード上にある別のデバイスを駆動します この例では クロ ッ ク ソースは再び入力ピンを通って FPGA に入り グローバル ク ロ ッ ク ネット ワークで分配され FPGA の出力ピンを通って PCB 上のト レースで別のデバイスに接続されますそのため ク ロ ッ ク パスにおける総遅延が大き くな り その結果と して発生するスキュー ∆c も大き くな り ます

クロック スキュー パフォーマンス低下の原因ク ロ ッ ク スキューによって セッ ト アップ時間 および clock-to-output 遅延が増加し ク ロ ッ ク サイクル時間が長くなるため デザインのパフォーマンス全体が低下する可能性があ り ます また ク ロ ッ クスキューによって 長いホールド時間が必要となる場合があ り このホールド時間を確保できない場合

には 不安定な動作を引き起こす可能性があ り ます

スキューの削除

ク ロ ッ ク スキューを削除する方法はあるのでし ょ う か 幸いにも デジタル ク ロ ッ ク マネージャ(DCM) はこのよ うな機能を備えています 図 17 に図 16 と同様の例を示しますがこ こでは Spartan-3 デバイスを使用しています 2 つの DCM によって次のよ うにクロ ッ ク スキューが削除されます 1つの DCM がFPGA 内部でクロ ッ ク入力されたものからのスキューを削除しも う一方の DCM が ボード上で別のデバイスにクロ ッ ク入力する場合のスキューを削除します この結果 (A) (B) および (C)のすべての点で理想的なクロ ッ ク間のアライ メン ト を実現できます

実際には ク ロ ッ ク スキューはどのよ うに削除されるのでし ょ うか ク ロ ッ ク スキューの原因は クロ ッ ク パスにおける遅延である こ と を思い出して ください 図 17 では (B) のク ロ ッ クで ∆ 分のスキューがあ り (C) のクロ ッ クに ∆c 分のスキューがあ り ましたが ク ロ ッ クを (B) に ∆b 分早く到達させ (C) に ∆c 分早く到達させる方法がある場合には どのよ うになるでし ょ うか このよ う な場合にはすべてのクロ ッ クのエッジが一致するよ うに調整されセッ ト アップ時間および clock-to-output 遅延が減少するため システム全体のパフォーマンスが向上します

図 16 すべての同期システムに存在するクロック スキュー

OtherDevice on

Board

FPGA

c b

A

A

C

B

B

C

x462_16_062403

28 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

過去のクロック動作から将来のクロック動作を予測

Spartan-3 FPGA は非常に高度なデジタル ロジッ クを使用していますが 将来の動作を予測するこ とはできません だたし DCM は過去のクロ ッ ク動作を使用し 将来のク ロ ッ ク動作を予測するために役立てます システムに入力されるほとんどのクロ ッ クの周波数は 不変で単調であるため 入力クロ ックの周期 (T) もほぼ一定になり ます

マイナスの遅延を挿入し ク ロ ッ ク スキューの影響を無効にするこ とはできないため DCM は目的としている時間に到達しているよ うに見えるよ うにクロ ッ クを遅らせます これは どのよ うに行われるのでし ょ うか ク ロ ッ ク サイクルは一定の周期 (T) で繰り返されます 図 18 に示すよ うに (B) におけるクロ ッ クは ∆b 分進んでいるよ うにみえますが 実際には (T ndash ∆b) 分遅くなっています 同様に(C) におけるクロ ッ クは (T ndash ∆c) 分遅れています

図 17 Spartan-3 デザインにおけるクロック スキューの削減

図 18 一定周波数のクロックを遅延させる

OtherDevice on

Board

Spartan-3 FPGA

DC

M

Ideal Clock Alignment

b

cEarly Clocks Eliminate Skew

A

B

C

A

B

C

DC

M

A

B

C

x462_17_062403

c

b

Clock Period (T)

Delay=T- b

Delay=T- c

A

B

C

x462_18_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 29

R

入力クロ ッ ク信号は単調であるため ク ロ ッ ク周期 (T) は容易にわかり ますが ク ロ ッ ク スキュー遅延である ∆b および ∆c はど うでし ょ うか 異なる条件の元で複数のシステムにおける動作を詳細に検証するこ とによって これらの値を決定するこ と もできますが 実際には現実的である とは言えません

さ らに ∆b および∆c の値はデバイスによって異なり 同一のデバイス上でも温度または電圧によって変化します

Spartan-3 DCM では ∆b および ∆c をあらかじめ決定するのではなく フ ィードバッ ク ループによって遅延を確認する遅延ロッ ク ループ (DLL) を使用します (図 17 を参照してください) こ こで示している例では 2 つの DCM を使用して 1 つの DCM が内部信号のスキューを削減し も う一方の DCMが外部デバイスへの信号のスキューを削減します また 両方の DCM に各ク ロ ッ ク フ ィードバッ クループがあ り ます DLL は温度または電圧によって引き起こ されるわずかな変更にも適応します

ターゲッ トのロック

適切な遅延を決定し挿入するためにはDCM で数千クロ ッ ク サイ クルのサンプルが必要です DCMで適切な遅延が挿入される と LOCKED 出力信号がアサート されます

DCM で LOCKED 信号がアサート されるまでDCM ク ロ ッ ク出力は使用しないでください DCM が入力クロ ッ ク信号に対してロ ッ ク状態になるまでのク ロ ッ ク出力は無効です DCM がロ ッ ク状態になる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な要素が含まれている可能性があ り ます

アプリ ケーシ ョ ンではLOCKED 信号を出力クロ ッ クが有効であるこ とを確認するために使用しますLOCKED 信号をクロ ッ ク信号が使用可能な状態であるこ とを示すものと して理解してください

安定した単調なクロック入力

DCM が適切に動作するためには 安定した単調なクロ ッ ク入力が必要です そのよ う なク ロ ッ ク入力によって ク ロ ッ ク周期を予測でき出力クロ ッ クのタイ ミ ングを適切に調整できます DCM はいったんロ ッ ク状態になる と『Spartan-3 データ シート 』 で指定された値までのクロ ッ ク周期変動に対応できます 「DCM 使用のためのクロ ッ ク条件」 を参照して ください

入力ク ロ ッ ク周波数が変動して指定された範囲外と なった場合 DCM のロ ッ ク状態が解除されLOCKED 出力は Low になり ます ロ ッ ク状態が解除された場合 DCM を リセッ ト して再びロ ッ クする必要があ り ます 入力クロ ッ クが指定された制限を満たしている場合はLOCKED 出力が High である限り出力クロ ッ クは常に有効です しかし LOCKED 出力は High を維持していますが クロ ッ ク入力が指定された範囲外で CLKDV 出力または CLKFX 出力が無効となる場合があるため問題のないデザインを作成するためには 安定した単調なクロ ッ ク入力が重要です

DCM CLKIN 入力へのパスと して 4 つのグローバル バッファ入力 (IBUFG) のうち デバイス上で同一辺にあるバッファ入力の 1 つを使用する こ と を推奨します IBUFG パスを使用する こ とによってパッ ドからグローバル バッファを通って DCM に到達までの遅延がスキュー調整された出力から削除されます ただし 表 11 に示すその他のパスも使用できます また CLKIN 入力を駆動する信号は汎用相互接続を通る汎用入力ピン (IBUF プリ ミ ティブ) グローバル バッファ入力 (IBUFG) グローバル バッファ マルチプレクサ (BUFGMUX BUFGCE) からの入力と して使用できます 同様に LVDSク ロ ッ ク入力をクロ ッ ク入力と して使用できる場合もあ り ます スキュー調整ロジッ クはLVCMOS または LVTTL のよ うなシングル エンドのクロ ッ ク入力のために特性評価されています ただし 差動信号では IO タイ ミ ングによって わずかな位相エラーが発生する可能性があ り ます 特定の IO タイミ ングについては 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

30 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

確実なソースからのフ ィードバック

適切な遅延に対してロ ッ ク信号をアサートするために DCM は 入力クロ ッ クおよびクロ ッ ク分散遅延後にタ ップされるフ ィードバッ ク ク ロ ッ クの両方をモニタします ク ロ ッ ク フ ィードバッ ク パスにおける総遅延に制限はあ り ません DLL では 必要に応じて逓倍したク ロ ッ ク周期を使用する こ とによって出力クロ ッ クを遅らせます このよ うにDCM は内部遅延または外部遅延を相殺できますがクロ ッ ク フ ィードバッ クは適切なフ ィードバッ ク地点に接続する必要があ り ます

内部クロック信号からのスキュー削除

図 19 に示すよ うにFPGA 内部のスキューを削減する場合フ ィードバッ ク タ ップは FPGA 内部のエレ メン トに入力されるクロ ッ ク と同一のクロ ッ ク とな り ます 通常 フ ィードバッ ク ク ロ ッ クは デバイス上で DCM と同一辺にある ク ロ ッ ク バッファ (BUFG) またはグローバル ク ロ ッ ク マルチプレクサ (BUFGMUX または BUFGCE) に接続されている DCM からの CLK0 出力 (位相シフ ト なし ) ですまたは CLK0 出力ではなく DCM の CLK2K 出力 (位相シフ ト なし 2 逓倍) をフ ィードバッ ク と して使用できます

表 11 クロック入力ソース

CLKIN ソース 説明

グローバル バッファ入力を使用

グローバル バッファ入力 IBUFG は DCM への外部クロ ッ クのソースと して適切です パッ ドからグローバル バッファを通り CLKIN 入力までの遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

グローバル ク ロ ッ ク バッファ BUFG BUFGCE または BUFGMUX プリ ミ ティブを使用するグローバル ク ロ ッ ク バッファは内部生成された DCM へのクロ ッ ク ソース と して適切です グローバル バッファを通る際の遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

汎用 IO を使用 任意のユーザー IO IBUF は 外部クロ ッ クのソースと して使用できます パッ ドから DCM への遅延をあらかじめ決定するこ とはできません これは入力パスとなる可能性を持つパスが多数

存在するためであ り その結果 DCM は遅延を削除できません

内部ロジッ クから派生 FPGA 内部のロジッ ク も ク ロ ッ ク ソース と して使用できます しかしロジッ クから DCM への遅延をあらかじめ決定するこ とはできないため DCM は遅延を削除できません

I OIBUFG

BUFGI O

BUFGCEI O

CE

O

S

BUFGMUXI0

I1

I OIBUF

InternalLogic

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 31

R

外部クロック信号からのスキュー削除

外部クロ ッ クを使用した DCM フ ィードバッ クの設計は内部クロ ッ クの場合よ り も複雑です 図 20 に示すよ うに理想的にはフ ィードバッ ク ク ロ ッ クは PCB ト レースまたは外部クロ ッ クの再バッファの後のすべての外部クロ ッ クに入力される点から始ま り ます

LOCKED 信号は DCM がロ ッ ク状態になったこ と およびク ロ ッ ク信号が有効であるこ とを示します LOCKED 信号によって 外部デバイスが使用可能になり その反転バージ ョ ンはアクティブ Lowのチップ イネーブル信号に接続できます

コンフ ィギュレーシ ョ ン後の DCM リセッ ト

外部フ ィードバッ クを使用する場合 コンフ ィ ギュレーシ ョ ン直後に DCM の リ セッ ト をパルスしDCM のロ ッ ク状態を維持する必要があ り ます 図 20に示すよ うに0x000F で初期化された SRL16 から必要な リセッ ト パルス信号を出力できます 「RST 入力」 を参照して ください

なぜリセッ トする必要があるのか

なぜ このよ うに追加的な リセッ ト パルスが必要なのでし ょ うか 最適にロ ッ クするためには DCMをロ ッ ク状態にし その状態で安定させるために 外部フ ィードバッ クでコンフ ィギュレーシ ョ ンされ

た DCM で CLKIN および CLK0 または CLK2X のいずれかの信号を使用する必要があ り ます コンフ ィギュレーシ ョ ン実行中は FPGA の IO バッファがまだアクティブではないために 外部フ ィードバッ ク CLKFB を使用できません

コンフ ィギュレーシ ョ ンの終了時に デバイスがスター ト アップ シーケンスを開始する と DCM はキャプチャ プロセスを開始します この時点では FPGA のグローバル 3-ステート信号 (GTS) はアサー

図 19 内部クロック信号でのスキュー削減

I OBUFG

FPGA

(or BUFGMUX or BUFGCE)

( )

ldquoClock Goodrdquo

I OIBUFG

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)(

)

x462_19_061803

図 20 外部クロック信号でのスキュー削減

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)

I OOBUF

I OOBUF

FPGA

CLK

ENABLE

( )

RESETD

WCLK

A[30]

Q

INIT=000F

SRL16

I OIBUFG

I OIBUFG

x462_20_062203

32 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ト されているため すべての出力ピンは 3-ステート (ハイ -インピーダンス フローティング) 状態を維持しています このため CLKFB 信号のロジッ ク ステートはわかり ません

GTS のアサート状態の解除後CLKFB に信号が現れDCM が CLKFB 信号を取り込みますが リセット パルスがない場合 DCM が適切な時点でロ ッ ク しない可能性があ り DCM でジッタがわずかに増加し ク ロ ッ ク サイクル レイテンシも増加する可能性があ り ます

また リセッ ト パルスがない場合 PCB のシグナル インテグ リティの問題によって 3-ステート状態にある CLKFB 信号がボード上でほかの信号と ク ロス カップルする とい う問題が発生する可能性があり ます DCM では この無効なクロス カップルされた信号を CLKFB 信号と認識し ロ ッ クするためGTS 信号のアサートが解除され 適切な CLKFB 信号が現れたと きにロ ッ クできない場合があ り ます

遅延ロック ループとはク ロ ッ ク遅延を削除するための 2 つのタイプの回路

bull 遅延ロッ ク ループ (DLL)

bull 位相ロッ ク ループ (PLL)

DLL および PLL には クロ ッ ク分散遅延を削除する という機能以外に周波数合成 クロ ッ ク調整および位相シフ ト などの機能があ り ます

遅延ロック ループ (DLL)

図 21 に示すよ うに単純な形の DLL はタップ遅延ラインおよび制御ロジッ クで構成されます 遅延ラインは入力クロ ッ クCLKINに遅延を挿入したク ロ ッ クを生成し ク ロ ッ ク分散ネッ ト ワークでは そのクロ ッ クがすべての内部レジスタおよびクロ ッ ク フ ィードバッ ク CLKFB ピンに配線されます 一方制御ロジッ クは遅延ラインを調整するために常に入力クロ ッ クおよびフ ィードバック ク ロ ッ クをサンプルします 遅延ラインでは電圧制御遅延または不連続の遅延エレ メン トが使用されています 最適で安定したパフォーマンスを実現するために Spartan-3 DLL ではすべてのデジタル遅延ラインを使用します

DLL は入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クの立ち上がりエッジが調整されるまで それらのクロ ッ ク間に遅延を挿入し ク ロ ック周期から クロ ッ ク分散遅延分を差し引いた時間だけフ ィードバッ ク ク ロ ッ クを遅らせるこ とによって機能します DLL および PLLの専門的解説では フ ィードバッ ク ク ロ ッ クは 360deg 位相がずれたもの つま り同一の位相に再び現れるものと定義されています

入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クのエッジが調整される とDLL がロ ッ ク し これらの 2 つのクロ ッ ク間に認識できる差異はなくな り ます つま り DLL 出力クロ ッ クのクロ ッ ク分散ネッ ト ワークにおける遅延がなくな り ソース ク ロ ッ ク とそのロード間の遅延を効果的に削除されています

図 21 遅延ロック ループ (DLL) ブロック図

ClockDistributionNetwork

Control

VariableDelay Line

CLKOUT

CLKFB

CLKIN

x462_21_061903

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 33

R

スキュー調整

こ こでは主にスキューの削減方法およびクロ ッ ク ソースに対する内部クロ ッ ク と外部クロ ッ クの位相調整の方法について説明します 実際には DCM は DESKEW_ADJUST という属性を使用し 意図的にわずかなスキューを追加します DCM Wizard では アドバンス ド オプシ ョ ン ウ ィ ンド ウでこのDESKEW_ADJUST 属性を設定します

この属性には STEM_SYNCHRONOUS および SOURCE_SYNCHRONOUS という 2 つの基本的なアプリ ケーシ ョ ンがあ り ます 大多数のアプリ ケーシ ョ ンではSYSTEM_SYNCHRONOUS 設定を使用します 次に 各モードの目的を説明します

システム同期

図 23 に示すよ うに システム同期アプリ ケーシ ョ ンでは 1 つのデータ パスにあるすべてのデバイスが共通のクロ ッ ク ソースを使用します これが 従来の最も一般的なシステム構成です デフォルト設定である SYSTEM_SYNCHRONOUS オプシ ョ ンを選択する と データ キャプチャ時のホールド時間がゼロになるよ うに わずかなクロ ッ ク遅延が追加されます ホールド時間とは 基本的にベス ト ケースのデータ パスと ワース ト ケースのクロ ッ ク パス間の差です DCM のクロ ッ ク スキュー削減機能はクロ ッ クを進めるこ とによって動的にワース ト ケースのクロ ッ ク パスを短縮します しかし ク ロ ッ

位相ロック ループ (PLL)

PLL は DLL と同様の基本的な機能を持つよ うに設計されていますが異なるアーキテクチャを使用します 図 22 に示すよ うにPLLと DLL の根本的な違いは DLL が遅延ラインを使用するのに対して PLL では電圧制御オシレータを使用し CLKIN と同様のクロ ッ ク信号を生成します位相検出器およびフ ィルタで構成される制御ロジッ クは ク ロ ッ ク分散システムでの遅延を補う よ うにオシ

レータの周波数と位相を調整します PLL の制御ロジッ クは 入力ク ロ ッ ク と フ ィードバッ ク ク ロ ッ ク CLKFB を比較し 入力クロ ッ クの立ち上がりエッジがフ ィードバッ ク ク ロ ッ クの立ち上がりエッジと一致するよ うにオシレータのクロ ッ クを調整します その後 PLL はロッ ク状態になり ます

インプリ メンテーシ ョ ン

DLL および PLL 内部では アナログ回路またはデジタル回路のいずれかが使用され 各回路はぞれぞれに利点があ り ます 慎重な回路設計を行ったアナログ回路の場合 DLL または PLL ではよ り厳密にタイ ミ ングを調整でき 使用するシ リ コン エリ アが少なくなり ます

一方デジタル回路を使用した設計の場合 ノ イズ耐性が優れ消費電力が低く ジッ タのパフォーマンスよ り良いという利点があ り

ます また ク ロ ッ クを停止させるこ とができるため 電力管理が容易になり ます アナログ設計では 追加の電力供給が必要な場合があ りよ り正確に電源供給の制御を行う必要があるために新しい処理テク ノ ロジに移行する際に問題が発生する可能性があ り ます

DLL と PLL

アプリ ケーシ ョ ンで PLL または DLL を選択する場合は アーキテクチャの違いを理解するこ とが重要です PLL で使用されるオシレータは 本質的に不安定な状態であるため ク ロ ッ ク分散ネッ ト ワークの遅延を補う際に PLL のパフォーマンスが低下します 逆に常に安定している DLL アーキテクチャは遅延およびクロ ッ ク調整の機能の点では PLL よ り優れている一方で PLL はDLL より柔軟に新しいクロ ッ ク周波数の合成を行います

図 22 位相ロック ループ (PLL) ブロック図

ClockDistributionNetwork

Control

Voltage ControlledOscillator

CLKOUT

CLKFB

CLKIN

x462_22_061903

34 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ク パスを短縮するこ とによって ク ロ ッ クがデータの前に現れる場合には結果と してホールド時間が発生します SYSTEM_SYNCHRONOUS オプシ ョ ンを使用するこ とによってホールド時間がゼロになるために十分なスキューをクロ ッ ク パスに追加できる一方でclock-to-output 時間がわずかに増加します

ソース同期

SOURCE_SYNCHRONOUS モードは本来高速データ通信インターフェイスで使用される高度な設定です 図 24 に示すよ うに ソース同期アプリ ケーシ ョ ンではデータおよびクロ ッ クの両方が同一のクロ ッ ク ソースから派生します 送信デバイスは データおよびクロ ッ クを受信デバイスに送信し 受信デバイスはデータに対して最適なクロ ッ クが入力されるよ うにクロ ッ ク タイ ミ ングを調整します 高速デュアル データ レート (DDR) および LVDS 接続などがこのシステムの例です

SOURCE_SYNCHRONOUS 設定によって入力クロ ッ ク と DCM からのデスキュー出力クロ ッ ク間の位相をゼロにし 次に FPGA アプリ ケーシ ョ ンでは固定位相シフ ト モードまたは動的ファ イン位相シフ ト モードを使用してクロ ッ クのタイ ミ ングを調整します 次のアプリ ケーシ ョ ン ノートではソース同期デザインおよび動的位相調整について説明しています

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcomxappxapp622pdf

また 次のアプ リ ケーシ ョ ン ノート では システム レベルのタイ ミ ングについて詳細に解説しています このアプリ ケーシ ョ ン ノートはVirtex-II および Virtex-II Pro FPGA アーキテクチャについて説明するものですが ほとんどの概念を Spartan-3 FPGA に適用できます

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

タイ ミングの比較

図 25 にデュアル データ レート (DDR) アプリ ケーシ ョ ンで SYSTEM_SYNCHRONOUS 設定およびSOURCE_SYNCHRONOUS 設定を使用した場合のタイ ミ ング比較を示します DDR アプリ ケーシ ョンでは 各データ ラインに 2 つのデータ ビッ トが ク ロ ッ ク周期の前半および後半に各 1 つずつ現れます

図 23 共通のクロック ソースによってクロック入力されるシステム同期アプリケーシ ョ ン

図 24 データ ソースがデータ クロックを入力するソース同期アプリケーシ ョ ン

ClockSource

DATA_INDATA_OUT

x462_23_061903

ClockSource

DATA_INDATA_OUT

DATA_CLK

x462_24_061903

クロック調整

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 35

R

SYSTEM_SYNCHRONOUS モードではDCM のクロ ッ ク パスに適切なスキューが追加されホールド時間がゼロになり ます

これに対して SOURCE_SYNCHRONOUS モードでは DCM のクロ ッ ク パスにスキューは追加されませんが FPGA アプ リ ケーシ ョ ンでスキュー追加 または位相シフ ト が行われ ク ロ ッ クはデータウ ィンド ウにおいて理想的な位置で入力されます

クロック調整 ク ロ ッ ク調整とは 入力ク ロ ッ クのデューティ サイ クルが 50 以外の場合に 50 に調整する機能です 図 26 にHigh 時間が約 40 であ りLow 時間が約 60 (4060 デューティ サイクル) である入力ク ロ ッ クを ほぼ完全な 50 デューティ サイ クルを持つ入力クロ ッ クに調整する例を示します完全な 50 デューテ ィ サイ クル と な ら ない理由は CLKOUT_DUTY_CYCLE_DLL およびCLKOUT_DUTY_CYCLE_FX で指定されるデューティ サイ クルのずれが存在するためです これらの値は 『Spartan-3 データ シート 』 に記載されています デューティ サイクルのずれの概算値は 150ps未満です

クロ ッ クのデューティ サイクルが 50 であるこ とはVLDS またはデュアル データ レート (DDR) アプリ ケーシ ョ ンなどの高速通信インターフェイス ク ロ ッ ク転送アプリ ケーシ ョ ン またはクロ ッ ク ミラー アプリ ケーシ ョ ンにおいて不可欠な条件です 「デュアル データ レート (DDR) ク ロ ッ クの例」 を参照して ください

DCM では 自動的にほとんどのク ロ ッ ク出力のデューティ サイ クルが 50 に調整され それ以外の場合には動作条件または属性設定によって オプシ ョ ンと して調整されます 表 12 を参照して ください

図 25 デュアル データ レート (DDR) アプリケーシ ョ ンにおける SYSTEM_SYNCHRONOUS モードおよび SOURCE_SYNCHRONOUS モードのタイ ミング比較

SYSTEM_SYNCHRONOUS

DATA_IN

SOURCE_SYNCHRONOUS

SOURCE_SYNCHRONOUS+ Fixed or Dynamic Phase Shift

Data capture windowor data ldquoeyerdquo

x462_25_061903

図 26 DCM におけるデューテ ィ サイクル修正機能

CLKIN

ConditionedClock Output

50 50

40 60

x462_26_061903

36 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

14 位相シフ ト出力である CLK0 CLK90 CLK180 および CLK270 はDUTY_CYCLE_CORRECTION 属性を使用し ク ロ ッ ク調整を行う こ とができます デフォルトではDUTY_CYCLE_CORRECTION 属性は TRUE に設定され これらの出力は 50 デューティ サイクルに調整されます この属性を FALSE に設定する場合 クロ ッ ク調整は機能せず クロ ッ ク出力のデューティ サイクルは入力クロ ッ ク とほぼ同一になり ますが 完全に CLKIN のデューティ サイクルと一致するこ とは保証されていません

位相シフ ト - クロック周期の分数でクロックを遅延

また DCM ではクロ ッ ク周期の分数分だけ入力クロ ッ クを遅らせるこ とによって 位相をシフ ト させるこ とができます

DCM は 4 つの位相シフ ト タイプをサポート し各タイプを別々に使用するこ と またはほかの位相シフ ト タイプと組み合わせて使用するこ とができます 表 13 に 各クロ ッ ク出力での位相シフ ト機能を示します

1 ほとんどの 12 ク ロ ッ ク周期位相シフ ト出力では50 デューティ サイクル調整を行います 出力のペアの立ち上がりエッジは0degおよび 180deg位相シフ ト した位置またはクロ ッ ク周期の最初および 12 周期の位置にあ り ます

2 0deg(CLK0) 90deg(CLK90) 180deg(CLK180) および 270deg(CLK270) の 14 位相シフ ト出力ではオプシ ョ ンと して 50 デューティ サイ クル調整を行います

3 固定ファイン位相シフ トではすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

4 動的ファイン位相シフ トでは FPGA アプリ ケーシ ョ ン内部のすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

表 12 デューティ サイクルを 50 にするためのクロック出力調整

DCM クロック出力

50 デューティ サイクル出力

CLK0CLK90

DUTY_CYCLE_CORRECTION = TRUE

CLK180CLK270

CLK2XCLK2X180

CLKDV

CLKFXCLKFX180

常に

DLL_FREQUENCY_MODE 属性

LOW HIGH

DUTY_CYCLE_CORRECTION = TRUE 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に CLKDV_DIVIDE が整数値の場合

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 37

R

12 クロック周期位相シフ ト出力12 周期位相シフ ト出力では 位相シフ トのないク ロ ッ ク およびそのクロ ッ クを 12 周期シフ ト させた (180deg位相シフ ト ) ク ロ ッ クが出力されます 12 周期位相シフ ト出力は表 14 に示すよ うにペアで出力されます

表 13 クロック出力の位相シフ ト機能

クロック出力12 クロック周期

14 クロック周期

固定または動的

位相シフ ト

CLK0CLK90CLK180CLK270CLK2XCLK2X180CLKDVCLKFXCLKFX180

表 14 12 クロック周期位相シフ ト出力

出力ペア解説

位相シフ トなし 180deg位相シフ ト

CLK0 CLK180 周波数は CLKIN と同一です デフォルトで 50 デューティ サイクルに調整されDUTY_CYCLE_CORRECTION 属性に制御されます

CLK2X CLK2X180 2 逓倍クロ ッ ク (CLK2XCLK2X180) からの出力です周波数は CLKIN 周波数の 2 倍であ り デューティ サイ クルは常に 50 です

CLKFX CLKFX180 周波数合成回路 (CLKFX CLKFX180) からの出力です 出力周波数は周波数合成の属性によって決定されます デューティ サイ クルは常に 50 です

38 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

12 周期位相シフ ト出力は高速デュアル データ レート (DDR) デザインおよびクロ ッ ク ミ ラーなどのデューティ サイクルが重要となるデザインにとって理想的です 図 27 に示すよ うに12 周期位相シフト出力のペアの 1 つはクロ ッ ク周期の始めに立ち上がり も う 1 つはそのクロ ッ ク周期の半分の地点で正確に立ち上がり ます

12 周期位相シフ ト出力によるデューテ ィ サイクルのずれの削減

DCM のクロ ッ ク出力が 50 デューティ サイクルに調整された場合 180deg位相シフ ト ク ロ ッ クは位相シフ トのないクロ ッ クを反転させたよ うに見えます 低周波数アプリ ケーシ ョ ンでは 基本的にこれが成立します

しかし アプリ ケーシ ョ ンが非常に高い周波数で動作する場合は 各ト ランジスタの立ち上がり時間お

よび立ち下がり時間の差が原因となって発生するデューティ サイ クルのずれが FPGA 内部で問題となり ます つま り 始めはデューティ サイクルが 50 の場合でも ク ロ ッ ク サイクル間で常にクロ ッ クHigh と ク ロ ッ ク Low の間に差が生じます

デュアル データ レート (DDR) クロックの例

図 28 に DCM ク ロ ッ ク出力 CLKx が デュアル データ レート (DDR) 出力フ リ ップフロ ップの 2 つのクロ ッ クを駆動する例を示します DDR ク ロ ッ ク入力の 1 つはクロ ッ ク出力をそのまま使用しますが も う一方の入力は DDR フ リ ップフロ ップ内部でクロ ッ クを反転させます DCM からの CLKx 出力のデューティ サイクルは 50 ですが FPGA のクロ ッ ク ネッ ト ワークを伝搬する間にデューティサイ クルにずれが発生します こ こで示す例では このデューティ サイクルのずれによって ク ロ ッ クHigh 時間が短縮され ク ロ ッ ク Low 時間が長くな り ます その結果と してC1 ク ロ ッ ク入力はクロ ック周期の半分の時点よ り もわずかに前にト リガします 低周波数の場合 このずれは無視して問題あ りませんが 高性能の DDR ベースのシステムでは 正確なクロ ッ ク設計が必要です

図 27 12 周期位相シフ ト出力

180˚0˚

frac12T 1T

CLKx

CLKx180

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)

x462_27_061903

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 39

R

図 29 に 図 28 に若干の修正を加えた回路例を示します この例では DCM からの位相シフ ト していない出力および 180deg位相シフ ト した出力の両方が DDR 出力フ リ ップフ ロ ップに入力されますCLKx ク ロ ッ ク信号は ク ロ ッ ク周波数の開始時点で正確に DDR フ リ ップフロ ップの C0 入力を ト リガし CLKx180 ク ロ ッ ク信号はクロ ッ ク周波数の半分の時点で正確に C1 入力を ト リガします この方法を使用する場合には 追加のグローバル バッファおよびグローバル ク ロ ッ ク ラ インが必要になりますが 約 300 ps (この値は概算です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください) までのデューティ サイクルを削減できます

図 28 デュアル データ レート (DDR) 出力におけるデューティ サイクルのずれ

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx at Flip-Flop(with duty-cycle distortion)

Duty-cycle distortion

Factor in distortionwhen using a singleinverted clock

CLKx(50 duty cycle)

BUFGCLKx

DCM

CLKIN

x462_28_061903

40 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

表 15 に DDR 出力フ リ ップフロ ップおよび LVDS 出力を使用して測定したデューティ サイクルのずれの値を示します この出力タイプ以外では 立ち上がり時間および立ち下がり時間に差が生じるこ とによって さ らにずれが大き くなる可能性があ り ます このずれは IBIS を使用してシ ミ ュレーシ ョ ンを実行し 検証できます

14 位相シフ ト出力図 30 および表 17 に示すよ うに 14 位相シフ ト出力は CLKIN 入力を 14 周期分シフ ト させたものです 14 位相シフ ト出力には CLKFB 入力へ戻るフ ィードバッ ク パスが必要であるため CLK0 出力の位相は CLKIN 入力の立ち上がりエッジと一致するよ うに調整されます CLK90 出力は CLKIN 入力を90deg位相シフ ト させて生成したものであ り ほかの位相シフ ト出力も同様に生成されます

図 29 12 周期位相シフ ト出力を使用したデューテ ィ サイクルのずれの削減

CLKx at Flip-Flop(with duty-cycle distortion)

180 ˚Phase Shift

CLKx180 at Flip-Flop(with duty-cycle distortion)

CLKx(50 duty cycle)

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKIN

CLKx180

BUFG

BUFG

x462_29_061903

表 15 デューティ サイクルのずれのパラメータ

パラ メータ 説明 概算値

TDCD_CLK0 IO ブロ ッ クにある DDR エレ メン トに対して ク ロ ッ ク立ち下がりエッジでローカル反転したクロ ッ クを入力する場合のデューティ サイクルのずれです 図 28を参照してください

~400 ps

TDCD_CLK180 IO ブロ ッ クにある DDR エレ メン トに対して DCM CLKx180 をクロ ッ ク入力する場合のデューティ サイクルのずれです 図 29を参照してください

~60 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 41

R

DLL 周波数モードによる出力の有効性

14 位相シフ ト出力が有効であるかは DLL_FREQUENCY_MODE 属性で制御される DLL の周波数モードによって決定されます 表 16 に示すよ うに 低周波数モード (DLL_FREQUENCY_MODE=LOW) ではすべての 14 位相シフ ト出力が有効ですが高周波数モードでも有効な出力は CLK0 および CLK180 のみです

5050 デューティ サイクル調整オプシ ョ ン

オプシ ョ ン と して DUTY_CYCLE_CORRECT 属性を使用し 14 位相シフ ト出力を一括して 50デューテ ィ サイ クルに調整できます この属性が TRUE の場合 (デフォル ト ) 4 つの出力すべてのデューティ サイ クルが 50 にな り FALSE の場合は 各出力のデューティ サイ クルと CLKIN 入力のデューティ サイクルは一致しません 詳細は 「ク ロ ッ ク調整」 を参照してください

4 つの位相 遅延クロックエッジ 位相パルス

表 17 に示すよ うに 14 位相シフ ト出力は ぞれぞれ 1 つ前のパルスから 14 周期遅れた立ち上がりエッジで出力されます これらの出力は メモ リ インターフェイスおよびペリ フェラル制御などのアプリ ケーシ ョ ンにおけるタイ ミ ングを柔軟にします

また デューテ ィ サイ クル修正オプシ ョ ンがイネーブルの場合 (DUTY_CYCLE_CORRECTION =TRUE の場合) これらの出力を次のよ うに考えるこ とができますこれらの出力には 14 周期の間隔で

図 30 CLKIN 入力 の 14 周期位相シフ ト出力 (デューティ サイクル修正イネーブルの場合)

表 16 DLL 周波数モードによる 14 位相シフ ト出力の有効性

出力DLL_FREQUENCY_MODE

LOW HIGH

CLK0

CLK90

CLK180

CLK270

270˚180˚90˚0˚

frac14T frac12 T frac34T 1T

CLK0

CLK90

CLK180

CLK270

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)x462_30_061903

42 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

立ち下がりエッジがあ り ます (表 17 を参照) 同様に各出力には周期幅が同一である High パルス時間と Low パルス時間があるこ とになり たとえば 図 30 に示す CLK90 の High パルス部分は CLK0 クロ ッ ク周期の中央に位置しています

ファイン位相シフ ト

DCM では ファ イン位相シフ ト を使用するこ とによって ク ロ ッ ク スキューを制御するこ と もできます ファ イン位相調整はすべての DCM 出力に対して同時に機能します この位相調整にはDCM のDLL 機能ユニッ ト を使用するため CLKFB 入力を通るクロ ッ ク フ ィードバッ クが必要です

物理的には CLKIN と CLKFB の立ち上がりエッジ間の位相関係を調整するこ とによってシフ トが行われますが すべての DCM 出力が CLKIN 入力に関連して位相シフ ト されます

デフォルトでは ファ イン位相シフ トはディ スエーブル (CLKOUT_PHASE_SHIFT=NONE) です つま り ク ロ ッ ク入力は CLKIN で位相調整されています この場合 入力クロ ッ ク CLKIN と フ ィードバッ ク ク ロ ッ ク間におおよそのフ ィードバッ ク地点で計測されるスキューはあ り ません (「確実なソースからのフ ィードバッ ク」 を参照して ください) 図 31 に示すよ うに ファ イン位相シフ トがイネーブルの場合 出力クロ ッ クのエッジは位相シフ ト され CLKIN 入力の前または後になり ます

次にファイン位相シフ トの 2 つのモードについて説明します一般に高速データ通信アプリ ケーシ ョ ンでは 両方のモードが使用されます 「ソース同期」 を参照してください

1 固定ファイン位相シフ ト モードは位相シフ ト値を設計段階で設定します 位相シフ ト値はFPGAコンフ ィギュレーシ ョ ン実行中に取り込まれ アプリ ケーシ ョ ンで変更するこ とはできません

2 動的ファイン位相シフ トモードには 初期位相シフ ト値があ り 固定ファイン位相シフ トの場合と同様に この値は FPGA コンフ ィギュレーシ ョ ン中に取り込まれますが DCM の LOCKED 出力が High になった後であれば アプリ ケーシ ョ ンで変更可能です

固定ファイン位相シフ ト

固定ファ イン位相シフ ト モードでは 設計段階で指定されたシフ ト値が FPGA コンフ ィギュレーシ ョン実行中に設定され この値はアプリ ケーシ ョ ンで変更できません

このモードは 次の 2 つの属性によって制御されます CLKOUT_PHASE_SHIFT 属性が FIXED に設定し PHASE_SHIFT 属性が位相シフ ト量を制御します 図 31 に示すよ うに PHASE_SHIFT = 0 の場合は 出力ク ロ ッ クおよび CLKIN 入力の位相が一致する よ う 調整され ク ロ ッ ク出力はPHASE_SHIFT が負の整数の場合に CLKIN の前に位相シフ ト し正の整数の場合には CLKIN の後に位相シフ ト します

固定ファイン位相シフ ト範囲

PHASE_SHIFT 属性は常に整数値であ り その範囲は -255 ~ +255 ですが 実際の範囲は使用されるCLKIN の周波数によって異なり ます

表 17 14 位相シフ ト出力とそれらの特性 (DUTY_CYCLE_CORRECTION=TRUE)

DCM 出力 位相シフ トクロック周期

に対する遅延

立ち上がり

エッジ

立ち下がり

エッジ解説

CLK0 0deg 0 0 frac12T スキュー調整された入力クロ ッ ク 位相シフ ト なし

CLK90 90deg frac14T frac14T frac34T High パルス (frac34T 周期幅 周期の中央)

CLK180 180deg frac12T frac12T 0T CLK0 の反転 (立ち上がりエッジは周期の中央)

CLK270 270deg frac34T frac34T frac14T Low パルス (frac34T 周期幅 周期の中央)

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 43

R

PHASE_SHIFT 属性の範囲は 次の 2 つの値によって決定されます

1 1 つはナノセカンドで測定される CLKIN 入力の周期 である TCLKIN 値です

2 も う 1 つは Spartan-3 デバイスおよびスピード グレードによって指定される FINE_SHIFT_RANGE の値です この値は 『Spartan-3 データ シート 』 モジュール 3 に記載されています FINE_SHIFT_RANGE は 位相シフ ト遅延ラインにおける総遅延であ り 回路内の遅延タップ数の関数です 実際の遅延ラインは FINE_SHIFT_RANGE よ り長い場合があ り ますがFINE_SHIFT_RANGE までの値が保証されています

これらの値を 等式 1 に適用しSHIFT_DELAY_RATIO を算出します PHASE_SHIFT 属性の範囲はこの算出結果と 1 との不等式関係によって異なり ます

等式 1

SHIFT_DELAY_RATIO lt 1 の場合

ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り長い場合はSHIFT_DELAY_RATIO lt 1 であ り最大ファイン位相シフ ト範囲は FINE_SHIFT_RANGE によって決定されます SHIFT_DELAY_RATIO lt 1 の場合 PHASE_SHIFT 範囲は 等式 2 から求めるこ とができます

等式 2

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 PHASE_SHIFT 値は plusmn191 とな り ます

したがって SHIFT_DELAY_RATIO lt 1 の場合の位相シフ ト値は 等式 3 とな り ますPHASE_SHIFT = 1 と して ください

等式 3

図 31 固定ファイン位相シフ ト

0

Fixed Phase Shift- Limit

Fixed Phase Shift+ Limit

Clock Outputs

PHASE_SHIFT CLKIN DCM

CLKIN

x462_31_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

SHIFT_DELAY_RATIO FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------=

PHASE_SHIFTLIMITS plusmn INTEGER 256 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞=

TPhaseShiftPHASE_SHIFT

PHASE_SHIFTLIMITS----------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

44 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

SHIFT_DELAY_RATIO ge 1 の場合

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 1 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 4

したがって SHIFT_DELAY_RATIO ge 1 の場合の位相シフ ト値は 等式 5 とな り ます PHASE_SHIFT = 1 と して ください

等式 5

最小位相シフ ト

最小位相シフ トの大きさは 次の値の大きな方によって決定されます

1 『Spartan-3 データ シート 』 に DCM_TAP_MIN 仕様と して記載されている最小遅延ライン タ ップ値 (概算値は ~30ps)

2 ク ロ ッ ク周期の 1256

その他の考察点

固定位相シフ トモードでは 動的位相シフ ト制御入力をグランドに接続する必要があ り ます この接続

は DCM Wizard では自動的に行われます

DCM Wizard

固定位相シフ トモードを使用する場合は図 32 に示すよ うにDCM Wizard の [General Setup] ダイアログ ウ ィンド ウに表示される Phase Shift で [Fixed] をク リ ッ ク して ください これによって CLKOUT_PHASE_SHIFT 属性が FIXED に設定されます

[Phase Shift Value] を入力しますが この値は 上述した範囲内にある整数でなければなり ません これによってPHASE_SHIFT 属性値が設定されます DCM Wizard は位相シフ ト値が指定範囲内であるかを確認します

動的ファイン位相シフ ト

動的ファ イン位相シフ ト モードでは 固定ファ イン位相シフ ト モード と同様に 初期スキューまたは初期位相シフ トがコンフ ィギュレーシ ョ ン中に PHASE_SHIFT 属性によって制御されます ただし動的シフ ト モードの場合 DCM の LOCKED 入力が High になった後に 動的ファ イン位相シフ ト制御入力 PSEN PSCLK および PSINCDEC を使用して FPGA アプリ ケーシ ョ ンで現在の位相シフ ト値を修正できます

動作

図 33 に示すよ うに位相シフ ト制御入力を使用し現在の位相シフ ト値を修正します すべての動的位相シフ トは PSCLK の立ち上がりエッジに同期して行われ 有効な位相シフ トは PSEN イネーブル入

図 32 固定ファイン位相モードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

Fixed

x462_32_061803

PHASE_SHIFTLIMITS 255plusmn=

TPhaseShiftPHASE_SHIFT

256--------------------------------------------⎝ ⎠

⎛ ⎞ TCLKINbull=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 45

R

力を正確に 1 PSCLK ク ロ ッ ク周期間アサートするこ とによって開始します PSEN を 1 ク ロ ッ ク周期よ り長くアサートする場合には 適切に位相シフ ト を行う こ とができない可能性があ り ます

PSINCDEC の値は制御入力の増減を指定し 位相シフ トの方向を決定します PSINCDEC を High に設定する と 動的位相シフ ト値が増加し Low に設定する とその値は減少します

実際の位相シフ ト が行われる タ イ ミ ングはさ まざまであ り DCM で PSCLK ク ロ ッ クの 1 周期間PSDONE 出力が High にアサート された時に完了します PSEN がイネーブルであ り PSDONE がアサート されるまでの間 DCM 出力クロ ッ クは 初期位相シフ ト値から新しい位相シフ ト値まで 1 ビットずつスライ ド します シフ トが行われている間 DCM は入力クロ ッ クに対してロ ッ ク状態 つま りLOCKED 出力がアサート された状態を維持します

PSDONE がアサート されたと き またはアサート後に 次の位相シフ ト処理が開始されます

動的ファ イン位相シフ ト モードを使用する場合は CLKOUT_PHASE_SHIFT 属性を VARIABLE に設定し FPGA コンフ ィギュレーシ ョ ン後に PHASE_SHIFT 属性値によって 位相シフ トの初期位置を設定できます DCM の LOCKED 出力が High になる と FPGA アプリ ケーシ ョ ンでは DCM 出力クロ ッ クにおけるスキュー または位相シフ ト を動的に修正できます また DCM がリセッ ト された場合は PHASE_SHIFT 値は初期設定値に戻り ます

図 33 動的ファイン位相シフ ト制御インターフェイス

PSINCDEC

PSEN

PSCLK

PSDONE

0 = 1 =

STATUS[0](

)

PSDONE

If phase shift incremented ordecremented to limit valueSTATUS[0] stays High until newoperation shifts away from limit

x462_33_062403

46 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

動的ファイン位相シフ ト範囲

PHASE_SHIFT と同様に 動的位相シフ トに対しても位相シフ ト範囲の制限があ り ます 図 34 を参照して ください また その範囲は SHIFT_DELAY_RATIO 等式で示したよ うにFINE_SHIFT_RANGE 対入力クロ ッ ク周期の比率によって決定されます

SHIFT_DELAY_RATIO lt 2

指定された FINE_SHIFT_RANGE 値がクロ ッ ク周期の 2 倍よ り小さい場合 (SHIFT_DELAY_RATIOlt 2)最大動的位相シフ ト値は最大遅延タップ値である FINE_SHIFT_RANGE によって決定されますSHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト範囲は 等式 6 によって決定されます

等式 6

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 動的位相シフ ト値の範囲は plusmn96 とな り ます

図 34 動的位相シフ ト制御

Clock Outputs

PHASE_SHIFT DCM LOCKED

RESET

CLKIN

0Fixed Phase Shift

- LimitFixed Phase Shift+ Limit

PSEN

PSINCDEC

PSCLK

PSDONE

STATUS[0]

0

Dynamic Phase Shift- Limit

Dynamic Phase Shift+ Limit

Increment PhaseShift Value

Decrement PhaseShift Value

Enable

IncrementDecrement

Phase Shift Clock

Phase Shift Done

Variable PhaseShift Overflow

DCM LOCKEDFPGA

DCM Variable PhaseShift Control

x462_34_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

DynamicPhaseShiftLIMITS INTEGER 128 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞plusmn=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 47

R

したがって SHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト値は 等式 7 とな り ます PHASE_SHIFT = 1 と して ください

等式 7

SHIFT_DELAY_RATIO ge 2

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 2 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 8

したがって SHIFT_DELAY_RATIO ge 2 の場合の位相シフ ト値は 等式 9 とな り ますPHASE_SHIFT = 1 と して ください

等式 9

制御

45ページの図 33 46ページの図 34 に示すよ うにDCM の動的位相シフ ト制御信号によって FPGAアプリ ケーシ ョ ンは現在の CLKIN 入力と DCM ク ロ ッ ク出力間の関係を修正できます 表 18 に 制御入力 現在の位相と次の位相の関係 遅延タ ップへの影響と制御出力の関係を示します

TPhaseShiftDynamicPhaseShift

DynamicPhaseShiftLIMITS-----------------------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

DynamicPhaseShiftLIMITS 255plusmn=

TPhaseShiftDynamicPhaseShift

256--------------------------------------------------------- TCLKINbull=

表 18 動的位相シフ ト制御 (内部反転がない場合)

PSENPSINC-

DECPSCLK 現在の

位相シフ ト

次の

位相シフ ト遅延ライン PSDONE

STATUS[0](オーバーフロー )

動作

0 X X X 変更なし 変更なし 動的位相シフ トはディ スエーブル

1 0 uarr gt -制限 現在の位相

シフ ト -1現在の位相

シフ ト -11 0 位相シフ トおよびシフ ト ポインタ

のデク リ メン ト

1 0 uarr le -制限およびgt -255

現在の位相

シフ ト -1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがデク

リ メン ト

1 0 uarr -255 -255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

1 1 uarr lt +制限 現在の位相

シフ ト +1現在の位相

シフ ト +11 0 位相シフ トおよびシフ ト ポインタ

のインク リ メ ン ト

1 1 uarr ge+制限およびlt +255

現在の位相

シフ ト +1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがイン

ク リ メ ン ト

1 1 uarr +255 +255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

メモ X = 考慮する必要があ り ません = 不確定であ り 現在のアプリ ケーシ ョ ンの状態によって決定されます1 = PSDONE が 1 PSCLK 周期間 High にアサート されます-制限 = 遅延ラインの最小位置+制限 = 遅延ラインの最大位置PSEN を 1 PSCLK サイ クル間アサート します

48 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

PSEN が Low の場合 動的位相シフ トはディ スエーブルであ り その他のすべての入力は無視されます したがって すべての現在のシフ ト値および遅延ライン位置に変更はあ り ません

遅延ラインがその制限 (デク リ メン トで - 制限 または -255 インク リ メン トで + 制限 または +255)に到っていない場合 FPGA アプリ ケーシ ョ ンでは PSEN を High にアサートする とによって現在の位相シフ ト値を変更でき PSCLK の次の立ち上がりエッジの前に PSINCDEC に対して適切なインク リメン ト デク リ メン ト値を設定できます 位相シフ ト値は指定されたよ うにインク リ メン ト またはデクリ メン ト します 位相シフ トの最後に PSDONE が PSCLK の 1 周期間 High にアサート され 位相シフ ト が完了したこ と を示し ます また 位相シフ ト のオーバーフロー状態が発生していないため

STATUS[0] は Low を維持します

DCM が +255 を超える値にインク リ メン ト された場合 または -255 よ り小さな値にデク リ メン ト された場合には遅延ラインの位置はその限界である +255 または -255 から変更されず位相は変更されません STATUS[0] は High にな り 動的位相シフ トがオーバーフローである こ とを示します こ こで 新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0]が Low に戻り ます

位相シフ トが +255 または -255 には達していませんが 遅延ライン範囲 (表 18 では + 制限および - 制限)を超えている場合には位相は変更されませんがSTATUS[0] が再び High になり ます STATUS[0]出力は 遅延タ ップが遅延ラインの限界に到達したと きを示します ただし FPGA アプリ ケーシ ョ ンでは等式 8 または等式 6 を使用して制限値が算出され求められた遅延ラインの制限値は保証された値とな り ます 特定のデバイスでは 処理電圧または処理温度によって 遅延ラインが長くなる場合があ り ますが これの値はデバイスによって異なるため 保証されていません 遅延ラインの位置ではなく 位相シフ ト値は +255 または -255 に到達するまでインク リ メン ト またはデク リ メン ト を続けます新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0] がLow に戻り ます こ こで位相シフ ト値は遅延ラインにおいて有効な遅延値に対応する値に戻るよ うにインク リ メン ト またはデク リ メン ト されます

DCM Wizard

動的位相シフ トは図 35 に示す DCM Wizard の [General Setup] ダイアログ ウ ィンド ウで設定します動的ファ イン位相シフ ト を有効にするためには 図 35 に示すよ うに [Variable] を選択します 次に初期の [Phase Shift Value] を入力します 初期値は前述した固定ファイン位相シフ トモードの場合と同様に動作します

図 36 に示すよ うに[Variable] モードを選択するこ とによって動的位相シフ ト制御信号である PSENPSINCDEC PSCLK および PSDONE がイネーブルにな り ます これらの制御信号を FPGA アプ リケーシ ョ ンで使用するために入力および出力チェッ ク ボッ クスをオンにして ください またSTATUS

図 35 DCM Wizard での動的ファイン位相シフ トモードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

[Variable]

x462_35_061903

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 49

R

出力のボッ クスをオンにし STATUS[0] 信号をイネーブルにします STATUS[0] は 位相シフ ト値がその最大または最小制限値に達したと きを示します

アプリケーシ ョ ン例

動的位相調整を行う場合の動的位相シフ ト機能については 次の リ ンクからアプ リ ケーシ ョ ン ノー トXAPP268 を参照してください

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

クロック逓倍クロック分周周波数合成

DCM アプリ ケーシ ョ ンのもっと も使用される機能の 1 つと して 新しいク ロ ッ ク周波数を柔軟に生成できる機能があ り ます 次に説明するよ うにSpartan-3 DCM は 3 つの独立した周波数合成機能を持ちます図 37 および表 19 を参照してください アプリ ケーシ ョ ンでは これらの機能の 1 つを使用する場合 またはすべてを同時に使用する場合があ り ます 次に 各機能の詳細について説明します

1 2 逓倍クロ ッ ク (CLK2X CLK2X180) は 入力クロ ッ クの周波数を 2 倍にします

2 ク ロ ッ ク分周 (CLKDV) は 入力クロ ッ ク周波数を一定の分周値を使用して分周します

3 周波数合成回路 (CLKFX CLKFX180) は 入力クロ ッ ク周波数から新しい周波数を生成します

図 36 DCM Wizard での動的位相シフ ト制御出力の選択

LOCKEDSTATUS

PSDONE

PSENPSINCDECPSCLK

STATUS[0] STATUS

x462_36_061903

図 37 クロック合成オプシ ョ ン

CLKIN CLK0

CLKFB

DCM

CLKFX

CLKFX180

Frequency Synthesizer

F = FCLKIN CLKFX_MULTIPLY

CLKFX_DIVIDE

CLKDV

Clock Divider

F =FCLKIN

CLKDV_DIVIDE

CLK2X

CLK2X180

F = 2 FCLKIN Clock Doubler

ClockDistribution

Delay

CLK0or

CLK2X

Clock Feedback LoopCLK0 CLK2X CLK2X180 CLKDV CLKFB

CLK0

CLKFXCLKFX180

50

DLL_FREQUENCY_MODE=LOW50

50

Deskewed ClockF = FCLKIN

DUTY_CYCLE_CORRECTION=TRUE50

x462_37_062203

50 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

CLKDV 以外のすべての周波数合成出力は 5050 デューティ サイ クルを持ちます 表 23 に示すよ うに高周波数で分周値が整数の場合通常 CLKDV は 50 のデューティ サイクルを持ちます また 2逓倍クロ ッ ク (CLK2X CLK2X180) 回路は高周波数では使用できません

CLKFX および CLKFX180 以外のすべての DCM ク ロ ッ ク出力はDCM の 遅延ロッ ク ループ (DLL)ユニッ トで生成され CLKFB ピンへのクロ ッ ク フ ィードバッ クが必要になり ます DCM の デジタル周波数合成 (DFS) ユニッ トはCLKFX および CLKFX180 ク ロ ッ ク出力を生成します アプリ ケーシ ョンで CLKFX 出力または CLKFX180 出力のみが使用される場合にはフ ィードバッ ク パスを削除できDCM の動作範囲が広くな り ます 周波数合成回路は DCM 内部に CLKIN に基づいたフ ィードバック パスを持ちます

ク ロ ッ ク フ ィードバッ クを使用した場合 すべての出力クロ ッ クの位相が調整されます また 出力のいくつかは分周クロ ッ クであるためすべての DCM 出力がクロ ッ ク エッジで一致するよ うに調整されるこ とはまれであるこ とがわかり ます たとえば CLKDV 出力は CLKDV_DIVID の各サイクルごとに CLKIN および CLK0 に対して調整されCLK2X 出力は CLK0 のサイクル 1 つおきに この信号に対して調整されます またCLKFX 出力はCLKIN の CLKFX_DIVIDE サイクルごとおよび CLKFBの CLKFX_MULTIPLY サイクルごとに CLKIN に位相調整されます

周波数合成アプリケーシ ョ ン

周波数合成を使用するアプリ ケーシ ョ ンは ほぼ無制限に考えられますが 次にいくつかのアプリ ケー

シ ョ ン例を示します

bull ボード上で利用可能なクロ ッ クを使用している FPGA および外部ロジッ クに対して完全に新しいクロ ッ ク周波数を生成する

bull 低速の外部クロ ッ ク ソースから高周波数の内部クロ ッ クを生成し システムの EMI を低減する

bull 図 38 に示すよ うに高速シ リ アルデータ ク ロ ッ クを分周しFPGA 内部でデータの並行処理を行う

bull 同様に 図 38 に示すよ うに 高速シ リアル データ フォーマッ トに変換する前に 並行で動作するデータ ク ロ ッ クの周波数を逓倍する

bull 適切な速度の機能をインプリ メン トする場合に 入力クロ ッ クを逓倍し 内部ロジッ クをクロ ッ ク

アップするこ とによって 使用する リ ソースを削減する

表 19 DCM 周波数合成オプシ ョ ン

機能 DCM 出力 周波数DCM の機能ユニッ ト

フ ィードバック50 の

デューティ サイクル

スキュー調整

クロ ッ ク

CLK0 DLL 必要 DUTY_CYCLE_CORRECTION = TRUE の場合に 50 です

2 逓倍クロ ッ ク CLK2XCLK2X180

DLL 必要 常に 50 です

分周クロ ッ ク CLKDV DLL 必要 高周波数モードで分周値が

整数以外の場合を除いて常

に 50 です

周波数合成 CLKFXCLKFX180

DFS オプシ ョ ン フ ィードバッ クに

よって ク ロ ッ ク

入力周波数範囲は

広くなるこ とは

あ り ません

常に 50 です

FCLKIN

2 FCLKINbull

FCLKINCLKDV_DIVIDE---------------------------------------------------

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE------------------------------------------------------------⎝ ⎠

⎛ ⎞bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 51

R

入力クロックおよび出力クロックの周波数条件

周波数合成を行う場合の入力クロ ッ クおよび出力クロ ッ クの周波数条件は DCM で使用されるク ロ ック出力によって決定されます たとえば CLKFX 出力および CLKFX180 出力は DCM のデジタル周波数合成 (DFS) ユニッ トのみを使用し その他のすべての出力は遅延ロッ ク ループ (DLL) ユニッ ト を使用します DLL における周波数の制限は DFS よ り も厳しいため DFS のみを使用する場合の方が周波数の動作範囲は広くな り ますDFS および DLL の両方を使用する場合アプリ ケーシ ョ ンは DLLの周波数範囲によって制限されます

また DLL および DFS は 低周波数モード と高周波数モードの両方で動作可能であるため モード設定によっても有効な周波数範囲が変動します

DCM デザインが有効であるためには CLKIN 周波数が 『Spartan-3 データ シート 』 モジュール 3 に記載されている動作範囲内である必要があ り 使用されているすべての出力クロ ッ クの周波数もそれぞれ

指定された範囲内でなければなり ません

図 39 に クロ ッ ク入力およびクロ ッ ク出力と対応する周波数範囲を示します ただし こ こで示すのは低周波数モードの場合のみです データ シートに記載されている仕様名は影付きのボッ クス内に示しています また 表 20 に DCM アプリ ケーシ ョ ンの例および周波数条件を示します

図 38 周波数合成アプリケーシ ョ ンの一般的な例

DCM DCM

F

n-bitswide

Fn

F F m

m-bitswide

F F

Overclockedtime-shared logic

DCM

F

F F x

High-speed serial datadown-converted toslower parallel data

Slower parallel dataup-converted to high-speed serial data

FPGA

x462_38_070903

52 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

2 逓倍クロック (CLK2X CLK2X180)表 21 に示すよ うに 2 逓倍クロ ッ ク回路によって CLKIN 入力の周波数は 2 倍になり ます この 2 逓倍クロ ッ ク回路は DLL 機能ユニッ トの一部であ り CLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します 2 逓倍クロ ッ ク回路からの出力は CLK2X および CLK2X180 であ り これらの出力のデューテ ィ サイ クルは常に 50 です また これらの周波数は同一ですがCLK2X180 は CLK2X を 180deg位相シフ ト したものであ り 基本的に CLK2X 出力を反転したものになり ます 高性能のデュアル データ レート (DDR) アプリ ケーシ ョ ンまたはクロ ッ ク転送アプリ ケーシ ョ ンでは 両方の位相を使用するこ とが不可欠です

CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE 属性が LOW に設定されている場合のみに使用できます アプリ ケーシ ョ ンにおける必要性に応じてオプシ ョ ンの 2 分周機能を使用しCLKIN 入力周波数を低下させてください ( 「アドバンス ド オプシ ョ ン」 を参照)

図 39 入力クロックおよび出力クロックの周波数条件 (低周波数モード )

DFS(CLKIN_FREQ_FX_MINMAX)

DLL (Low-Frequency Mode)(CLKIN_FREQ_DLL_LF_MINMAX)

~1 MHz ~326 MHz

~24 MHz ~180 MHzFCLKIN

DFS (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~24 MHz ~200 MHz

DLL CLKDV (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~15 MHz ~120 MHz

DLL CLK2X (Low-Frequency Mode)(CLKOUT_FREQ_2X_LF_MINMAX)

~48 MHz ~326 MHz

FCLKFXFCLKFX180

FCLKDV

FCLK2XFCLK2X180

x462_39_070903

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 20 DCM 周波数条件の例

入力周波数 出力周波数 解説

12 MHz 128 MHz 1 つの DCM のみを使用する場合には条件を満たしません FCLKIN は DFS の条件を満たす範囲内ですが FCLKFX は最低 24MHz 出力周波数が必要です

12 MHz 324 MHz DFS を使用する DCM で条件を満たします CLKFX_MULTIPLY=27 と設定してくださいFCLKFX は DFS 出力周波数範囲内です

25 MHz 25 MHz30 MHz

DFS および DLL を使用する DCM で条件を満たします CLKDV 出力を 25MHz 信号に使用しCLKDV_DIVIDE=10 と設定してください また CLKFX 出力を 30MHz 信号に使用しCLKFX_MULTIPLY=6 および CLKFX_DIVIDE=5 と設定してください すべての入力周波数および出力周波数は適切な範囲内です

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 53

R

表 21 2 逓倍クロック回路のまとめ

DCM 出力 CLK2XCLK2X180

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク 必要です

50 デューティ サイ クル出力 はい

制御属性

DLL_FREQUENCY_MODE CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE = LOW の場合にのみ有効です

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます 2 逓倍クロ ッ クの出力は 高周波数モードでは使用できませんが ほかの DCM ク ロ ッ ク出力に必要となる場合があ り ます

CLK2XCLK2X180

CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

2 FCLKINbull

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (~24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (~48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~326 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_2X_LF_MIN (48 MHz)

CLKOUT_FREQ_2X_LF_MAX (~325 MHz)

HIGH 設定不可 設定不可

54 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

クロック分周 (CLKDV)表 22 に概要を示すクロ ッ ク分周ユニッ トは デザインに設定した CLKDV_DIVIDE 属性の値を使用し CLKIN 入力の周波数を分周します ク ロ ッ ク分周ユニッ ト は DLL 機能ユニッ ト の一部であ りCLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します

表 22 クロック分周回路のまとめ

DCM 出力 CLKDV

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク DCM からの CLK0 出力または CLK2X 出力を使用する場合に必要です

50 デューティ サイ クル出力 はい ただし DLL_FREQUENCY_MODE=HIGH および CLKDV_DIVIDE が整数値ではない場合を除きます

制御属性

DLL_FREQUENCY_MODE CLKDV は両モードで使用できます 分周値によっては 出力のデューティ サイ クルに影響を与える場合があ り ます ( 「CLKDV ク ロ ッ ク調整」 を参照してください)

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 有効な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 であ り 整数値の場合 よ り短時間で DLL はロッ ク状態になり ます また 整数値を設定する場合には出力ジッ タが低くな り ます

周波数制約

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

CLKDV CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

FCLKINCLKDV_DIVIDE--------------------------------------------------

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~325 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_DV_LF_MIN (15 MHz)

CLKOUT_FREQ_DV_LF_MAX (~120 MHz)

HIGH CLKOUT_FREQ_DV_HF_MIN (30 MHz)

CLKOUT_FREQ_DV_HF_MAX (~240 MHz)

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 55

R

CLKDV クロック調整

DLL_FREQUENCY_MODE 属性が High であ りCLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 になり ます 表 23 に CLKDV のデューティ サイクルを示します Spartan-3 DCM では CLKIN のデューティ サイクルが 6040 (または 4060) 以上である必要があ り高周波数モードの場合に 15 で分周された CLKDV 出力は次にカスケード接続された DCM へクロ ッ ク入力するこ とはできません

CLKDV のジッ タは 周波数モードおよび属性値が整数か 整数ではないかによって決定されます

CLKDV_DIVIDE 属性に整数値を設定するこ とによって 出力ジッ タが半分になり DLL がロ ッ ク状態になるために要する時間も短縮されます

DCM Wizard

ク ロ ッ ク分周は DCM Wizard の[General Setup]ウ ィ ン ド ウで設定し ます 図 40a に示すよ う にCLKDV 出力のチェッ ク ボッ クスをオンにし 次に図 40b に示すよ うに ド ロ ップ ダウン リ ス トから[Divide by Value] を選択します

表 23 CLKDV デューティ サイクル (DLL_FREQUENCY_MODE=HIGH の場合)

CLKDV_DIVIDE 属性 デューティ サイクル High 時間総サイクル

整数 50000 12

15 33333 13

25 40000 25

35 42857 37

45 44444 49

55 45454 511

65 46154 613

75 46667 715

表 24 CLKDV 出力ジッ タ

CLKDV_DIVIDE CLKDV 出力周期ジッ タ

整数値 CLKOUT_PER_JITT_DV1 (plusmn~150 ps)

整数以外の値 CLKOUT_PER_JITT_DV2 (plusmn~300 ps)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

a CLKDV 出力のチェ ック ボックスをオン b ドロップ ダウン リス トから [Divide by Value を選択]

図 40 DCM Wizard での分周クロック設定

CLKDV

x462_40a_0619032

Divide By Value

x462_40b_061903

56 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

周波数合成回路 (CLKFX CLKFX180)周波数合成回路を使用するこ とによって 入力周波数の逓倍 分周 またはその両方をもっと も柔軟に

行う こ とができます 表 25 に示すよ うに 2 つの周波数合成出力は CLKFX および CLKFX180 ですCLKFX180 出力は CLKFX と同一の周波数を持ちますがCLKFX を 180degまたは 12 ク ロ ッ ク周期位相シフ ト させた ものです これらの周波数合成出力のデューテ ィ サイ クルは 50 であ るためCLKFX180 は CLKFX の反転クロ ッ クのよ うに見えます

表 25 にある等式が示すよ うに設計段階で 2 つの属性を使用し合成出力周波数を制御します CLKINク ロ ッ ク入力は CLKFX_MULTIPLY が分子 CLKDV_DIVIDE が分母である比率を使用して逓倍されます たとえば 75MHz CLKIN 入力を使用して 155MHz の出力を生成するためには 周波数合成回路では 3115 の比率で CLKIN を逓倍します これは CLKIN を始めに 31 倍し 次に 15 で割ることではあ り ませんCLKIN を 31 倍するこ とによって出力周波数は2325GHz とな りSpartan-3 DCMの周波数範囲を越えるこ とにな り ます

68 を 34 と約分するよ うに 逓倍値および分周値はもっと も簡潔な値にする必要があ り ます このことによって ロ ッ クするために必要な時間が短縮します

周波数合成には 常にク ロ ッ ク フ ィードバッ クが必要ですが DFS には CLKIN を基準と した内部フ ィードバッ ク ループがあるため DLL を使用せずに DFS を使用する場合には CLKFB に別のループは必要あ り ません

また CLKFB 出力は CLKIN の CLKFX_DIVIDE サイ クルごと および CLKFB の CLKFX_MULTIPLY サイクルごとに CLKIN に対して位相調整されます たとえばCLKFX_MULTIPLY = 3 であ りCLKFX_DIVIDE = 5 の場合CLKFX 出力の位相は CLKIN の各 5 サイクルごと および CLKFB の 3 サイクルごとに CLKIN 入力に対して位相調整されます DCM で LOCKED 出力がアサート される と DFS は CLKIN 入力の立ち上がりエッジごとに再同期し ほぼ完璧に位相調整されます

表 25 周波数合成回路のまとめ

DCM 出力 CLKFX

CLKFX180 (CLKFX を 180deg位相シフ ト した場合と同一)

出力周波数

DCM の機能ユニッ ト デジタル周波数合成 (DFS)

フ ィードバッ ク CLKIN を基準にして内部フ ィードバッ クを使用するため 必要あ り ません 遅延ロッ ク ループ (DLL) を使用する場合は オプシ ョ ンと して CLKFB 入力を使用できます

50 デューティ サイ クル出力 常に 50 です

制御属性

DFS_FREQUENCY_MODE CLKIN CLKFX 出力 CLKFX180 出力の周波数条件に影響します

DLL_FREQUENCY_MODE アプリ ケーシ ョ ンで DLL 出力が使用される場合に 周波数合成回路のみに影響を与えます また よ り厳しい DLL の条件に適用するよ うに CLKIN 周波数を低下させる可能性があ り ます CLKFX 出力または CLKFX180 出力が使用されている場合 周波数条件は DFS_FREQUENCY_MODE によってのみ指定されます

CLKFX_MULTIPLY 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 2 から 32 であ りデフォルトは 4 です

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 1 から 32 であ りデフォルトは 1 です

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 57

R

DCM Wizard

周波数合成を使用する場合図 41 に示すよ うに DCM Wizard の[General Setup]ダイアログ ボッ クスで CLKFX または CLKFX180 あるいはその両方のチェッ ク ボッ クスをオンにしてください

CLKFX 出力または CLKFX180 出力のみを使用する場合はオプシ ョ ンと して DLL ク ロ ッ ク出力およびフ ィードバッ クをディ スエーブルにするこ とによって 周波数範囲を広げるこ とができます

bull デフォルトでは CLK0 出力は常にオンになっていますが CLKFX または CLKFX180 のみを使用する場合は CLK0 のチェッ ク ボッ クスをオフにしてください

bull 図 42 に示すよ うに DCM フ ィードバッ クをディ スエーブルにする場合は [None] を選択してください フ ィードバッ クを使用しない場合はCLKFX および CLKFX180 の周波数範囲は高域と低域の両方で広くな り ます

周波数制約

CLKIN アプリ ケーシ ョ ンで 遅延ロッ ク ループ (DLL) からの出力が使用されていない場合CLKIN の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます DLL が使用されている場合は DLL のクロ ッ ク周波数条件はよ り厳し くな り ます

CLKFXCLKFX180

CLKIN 出力および CLKFX180 出力の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 25 周波数合成回路のまとめ (Continued)

最小周波数 最大周波数

CLKIN_FREQ_FX_MIN (~10 MHz) CLKIN_FREQ_FX_MAX (~326 MHz)

DFS_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_FX_LF_MIN(~24 MHz)

CLKIN_FREQ_FX_LF_MAX(~210 MHz)

HIGH CLKIN_FREQ_FX_HF_MIN(~210 MHz)

CLKIN_FREQ_FX_HF_MAX(~325 MHz)

図 41 DCM Wizard での Frequency Synthesizer 設定

CLK0

CLKFXCLKFX180

CLKFXCLKFX180

CLKFX CLKFX180

DCM

x462_41_070903

58 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロックのフォワード ミ ラー リバッファR

DCM Wizard のクロ ッ ク周波数合成で示したよ うに必要は出力周波数または逓倍値と分周値を入力します

クロックのフォワード ミ ラーリバッファ

DCM は高度なクロ ッ ク制御機能を持ちさ らに Spartan-3 IO ピンは多様な IO 電圧標準をサポートするため 通常 Spartan-3 FPGA ではクロ ッ ク信号のリバッファ またはミ ラーを行い 入力クロ ッ クの電圧を変更ために使用されます 同様に DCM の入力クロ ッ ク条件を変更し デューティ サイクルを50 に調整します

図 20 に DCM の入力クロ ッ クを 50 デューティ サイ クルに調整し その周波数で CLK0 出力を使用してクロ ッ クをフォワードする または DCM CLK2X を使用して周波数を 2 倍にする DCM の例を示しました DCM が LOCKED 出力をアサートする と 入力クロ ッ クおよび出力クロ ッ クは位相調整されます CLKFB へのフ ィードバッ ク パスは外部のクロ ッ ク フ ィードバッ ク地点でクロ ッ ク分散遅延を確認し 削除します

出力クロ ッ クのデューティ サイクルが 50 であるこ とは重要であるため出力 IO 標準が 50 デューティ サイ クルを維持できるために十分な速度でスイ ッチできる こ と を確認して ください デューティサイ クルの動作は 出力信号でのシ ミ ュレーシ ョ ンを行う こ とによって検証します IBIS シ ミ ュレーシ ョ ンで確認できるよ うに IO 標準には立ち上がり と立ち下がりが対称的ではなく デューティ サイクルにずれが発生しているものもあ り ます HSTL SSTL および LVCMOS の DCI バージ ョ ンの IO標準の立ち上がりおよび立ち下がりがよ り対称的です

100 MHz を越える場合のデューテ ィ サイ クルを確実に 50 にするためには CLKIN のソースのデューティ サイ クルが 50 の場合にも DCM のデューティ サイクル調整機能を使用する必要があ ります したがって ク ロ ッ ク フォワードに CLK0 CLK90 CLK180 または CLK270 を使用する場合はDUTY_CYCLE_CORRECTION 属性を TRUE に設定してください 通常その他の DCM ク ロ ック出力は常に 50 のデューティ サイ クルに調整されます ( 「ク ロ ッ ク調整」 を参照して ください)

200 MHz 以上で動作する場合のデューティ サイ クルを最適にするためには図 43 に示すよ うな回路を使用して ください こ こでは DCM からの CLKx 出力および CLKx180 出力がデュアル データ レート (DDR) 出力フ リ ップフロ ップの C0 入力および C1 入力を駆動するよ うに使用します DDR フ リ ップフロ ップの D0 入力を VCC に接続し D1 入力を GND に接続します また DCM の各出力は個々のグローバル バッファを駆動しデューティ サイクルのずれを最小にします 高周波数の場合に 1つのク ロ ッ クのみを分散し DDR フ リ ップフロ ップ内部でローカル位相シフ ト を行う と 約 150ps のデューティ サイクルのずれが発生するため このよ うな回路設計は推奨していません

周波数が 250 MHz 以上の場合には分散クロ ッ クに LVDS のよ うな差動信号標準を使用します 図 43にCLKIN ク ロ ッ ク入力およびクロ ッ ク出力がと もに VLDS を使用する例を示します さ らにク ロ ック フ ィードバッ ク パスも LVDS を使用します パフォーマンスを最適にするためには ク ロ ッ ク入力およびクロ ッ ク フ ィードバッ ク パスにグローバル バッファ入力 (IBUFGDS) を使用する必要があ り ます これによってデバイスの一辺にあるすべてのグローバル バッファ入力を使用するこ とになり ますが 高周波数でのクロ ッ ク フォワードを最適に行う こ とができます

図 42 フ ィードバックに [None] を選択し 周波数範囲を拡大

SourceFeedback

Internal External None

Value 1X 2X

If only using the CLKFX or CLKFX180clock ouputs optionally click None to extend the DCM frequency limits

x462_42_070903

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 59

R

クロック ジッ タおよび位相ノイズ

もっと も高価で高精度なものの場合においてもすべてのクロ ッ クにはクロ ッ ク ジッタまたは位相ノイズがあ り ます こ こでは Spartan-3 デジタル ク ロ ッ ク マネージャに固有のジッ タ特性について説明します 低周波数 たとえば 20 MHz で動作する場合は 一般に ジッ タの影響は無視できますが200 MHz のよ う な高周波数で動作する場合には 特にデュアル データ レート (DDR) アプリ ケーシ ョンにおいて ジッ タはデザインの問題に関連する要素となり ます ク ロ ッ ク ジッタによって アクティブ ク ロ ッ ク エッジ間で実際に有効な時間が削減されるため FPGA アプ リ ケーシ ョ ンで使用できる時間が制限されます

クロック ジッ タ とは図 44 に示すよ うにク ロ ッ ク ジッタ とは理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジの相違です 太線は 理想的なクロ ッ ク信号を表します 各クロ ッ ク エッジでは 理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジ間に若干のずれがあ り このずれの最大値と最小値の差異をピーク ジッ タ と呼びます ジッ タは アクテ ィブなク ロ ッ ク エッジのみに関係します たとえば シングル データ レート(SDR) アプリ ケーシ ョ ンの場合データは各立ち上がりエッジでクロ ッ ク入力され この場合のジッタは総クロ ッ ク周期から引く こ とによって求められます 一方 デュアル データ レート (DDR) の場合データは各クロ ッ ク周期の始ま り および 12 ク ロ ッ ク周期の点でクロ ッ ク入力されるため ジッ タは12 ク ロ ッ ク周期ごとに影響を与えます

図 43 高周波数 (250 MHz 以上) での LVDS クロック フォワード回路

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKx180

BUFG

BUFG

VCC

GND

OBUFDS

CLKIN

CLKFB

IBUFGDS

IBUFGDS

External Clock Feedback (LVDS)

FPGA

x462_43_061903

図 44 クロック信号におけるジッ タ

x462_44_061903

60 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

クロック ジッ タの原因ク ロ ッ ク ジッタはすべてのシステムに存在しそれを避けるこ とはできません ク ロ ッ ク ジッタの原因は システム内のノ イズのソース または不完全な信号であ り 実際 ジッ タは時間軸上における ノ イ

ズである と言えます たとえば 入力クロ ッ ク ソースには ク リ スタルからの任意の温度振動ノ イズまたは機械的な振動ノ イズによる固有のジッタ特性があ り ます 多くの同時スイ ッチ出力 (SSO) は回路基板にノ イズを追加するため 内部スイ ッチしきい値がわずかに変更し ジッ タが増加します 同様に適切に設計されていない電源供給または不十分なデカップリ ングによってもジッ タは増加します

その他のジッタの原因と しては近接した信号のクロス トーク不適切な終端 グランド バウンス電磁干渉 (EMI) などが考えられます

このアプ リ ケーシ ョ ン ノートでは Spartan-3 デジタル ク ロ ッ ク マネージャ (DCM) および FPGA 内部でのジッタ全般について説明します

クロック ジッ タ特性の理解ク ロ ッ ク ジッタの特性はさまざまな方法で定められ次のよ うにいろいろな方法でその特徴を捉えることができます

サイクル間ジッ タ

隣接サイクル ジッタ と も呼ばれるサイクル間ジッタは 図 45 に示すよ うに 1 つのクロ ッ ク サイクルと次のクロ ッ ク サイクル間でのクロ ッ ク周期の最大差異です この例ではあるクロ ッ ク サイクルと次のクロ ッ ク サイクル間の最大差異は +100 ps および -100 ps または plusmn100 ps です数百万クロ ッ ク サイクル間の計測を行う場合にはクロ ッ ク周期の変動の絶対値が大き くなる可能性があ り ますがク ロ ッ

ク サイクル間の変動が plusmn100 ps よ り大き くなるこ とはあ り ません

サイクル間ジッタは ク ロ ッ ク出力またはオシレータの特性を測定するために重要ですが アプ リ ケー

シ ョ ンのタイ ミ ング解析には有効ではあ り ません

周期ジッ タ

周期ジッタは 数百万クロ ッ ク サイクル間で計測したサイ クル間ジッタの合計です ピーク ジッ タは理想的なクロ ッ ク移行時間と比較した場合の最短および最小移行時間を示します

デジタル ク ロ ッ ク マネージャの周期ジッ タは一定ではく ピーク間ジッタ と して表されます 図 46 に示すよ うに 理論的には クロ ッ ク移行位置は理想的なクロ ッ ク位置を中心とする確率的な分散 また

はヒ ス ト グラムですが実際の分散はガウス分布ではなく二峰性分布の場合があ り ます 実際のクロ ック移行のほとんどは理想的なクロ ッ ク位置付近で起こ り ますが数百万クロ ッ ク サイクルにおける測定の結果 望ましい位置から離れた地点で起こるクロ ッ ク移行もあ り ます

理想的な位置からの統計的な距離はσ (シグマ) と呼ばれる標準偏差で測定されます DCM はすべてデジタルで機能するデザインであるため 非常に安定しており ザイ リ ンクスでは ジッ タの偏差を plusmn7σまたはピーク間ジッ タを 14σ と定めています 判断基準と して 偏差が plusmn7σ である とい う こ とは ジッタの 9999999999974 が指定されたワース ト ケース ジッ タよ り小さい値であるこ とを保証していま

図 45 サイクル間ジッ タ例

T0 T1 = T0 + 100 ps T2 = T1 - 100 ps

x462_45_062203

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 61

R

す また 14σ ピーク間ジッ タ plusmn7σ ジッタ偏差は 最大ビッ ト エラー レート (BER) が 128 x 10-12 という こ とを意味します

ユニッ ト インターバル(UI)

ジッタの仕様を単位間隔 (UI) の割合と して指定する別の方法もあ り ます 1 UI は 周波数に関わらず1 ビッ ト時間を表します ク ロ ッ クの立ち上がりエッジ または立ち下がりエッジのいずれかでデータが取り込まれるシングル データ レート (SDR) アプリ ケーシ ョ ンでは1 UI は 1 ク ロ ッ ク周期になり ます 一方 2 倍のクロ ッ ク レートでデータがクロ ッ ク入力されるデュアル データ レート (DDR) アプリケーシ ョ ンでは 1 UI が 12 ク ロ ッ ク周期になり ます

UI で指定されるピーク間ジッタ幅は 総ビッ ト周期時間に対するピーク間ジッタ値の比率です

総ジッ タの計算

『Spartan-3 データ シート 』 には CLKFXCLKFX180 以外の DCMのク ロ ッ ク出力におけるジッ タが記載されてます デジタル周波数合成 (DFS) ジッ タは 逓倍値および分周値に基づいて算出されます

データ シートには DLL からのクロ ッ ク出力 (CLKFX および CLKFX180 を除くすべてのクロ ッ ク出力) に対するワース ト ケース ジッ タが記載されています DLL ではジッ タが削減されないため DLLク ロ ッ ク出力の総ジッタには入力クロ ッ クである CLKIN のジッタおよびデータ シートに記載された値が含まれます

また DFS ク ロ ッ ク出力である CLKFX および CLKFX180 では 入力ク ロ ッ ク ジッ タがある程度削減されるため 算出された出力ジッタが総ジッタにな り ます

図 46 ピーク間周期ジッ タ例

図 47 ユニッ ト インターバルの比率で示された周期ジッ タ

Desired clock period

Measured clock period

Num

ber

of s

ampl

esPeak-to-peak Period Jitter

(14σ)

+7σ-7σ

x462_46_061903

Bit Period

Unit Interval (UI)

x462_47_061903

62 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

DLL 出力ジッ タへの入力ジッ タの加算

入力ジッタに DLL 出力ジッタを加える場合ノ イズ計算と同様に 2 乗平均平方根 (RMS) 計算を使用します

ピーク間

等式 10

ピーク間偏差

等式 11

定義

入力クロ ッ クのピーク間周期ジッ タが 150 ps (plusmn75 ps) であ り このク ロ ッ クのデューティ サイ クルがDCM の CLK0 出力と同一の周波数を使用して修正される場合について考えます

この場合 JITTERINPUT = 150 ps であ り JITTERSPEC の値は 『Spartan-3 データ シート 』 で指定されている CLKOUT_JITT_PER_0 と呼ばれる値です これは ピーク間で plusmn100 ps または 200 ps である と概算されます

したがって DCM 出力の総ジッタはピーク間で 250 ps または plusmn125 ps です

カスケード接続された DCM のジッ タ計算図 48 に 複数の DCM をカスケード接続し さまざまな出力周波数を生成しているアプ リ ケーシ ョ ンの例を示します この場合のジッタは 次によって決定されます

bull 前のソースからのジッタ

bull 使用されている DCM 出力

データ シートに記載されているよ うにジッ タ特性は各 DCM 出力によってわずかに異なり ます またDFS からの CLKFX 出力および CLKFX180 出力は 入力ジッタをある程度削減し ジッ タ値は DCMWizard で算出されます ( 「ク ロ ッ ク周波数合成」 参照して ください)

JITTERINPUT = FPGA のクロ ッ ク入力ピンで測定された入力周期ジッタ

JITTERSPEC = 『Spartan-3 データ シート 』 に記載されている適切な出力ポートに対する DLL ク ロ ッ ク出力周期ジッタ

JITTERTOTAL = 予想される総出力周期ジッタ

JITTERTOTAL JITTERINPUT( )2 JITTERSPEC( )

2+=

JITTERTOTALJITTERINPUT( )

2 JITTERSPEC( )2+

2--------------------------------------------------------------------------------------------------------plusmn=

JITTERTOTAL 150 ps( )2200 ps( )

2+ 250 ps= =

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 63

R

したがって カスケード接続された DCM チェーンの任意の点におけるジッタは前述した 2 つの要因によって決定されます 次の例では 回路上のいくつかの点で総ジッタを計算する方法を示します

例 1 すべての DCM が DLL 出力を使用する場合

この例では 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

こ こでは DCM (A) が CLK2X 出力を使用する場合について考えます また DCM 出力ジッ タに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_2X 値を使用してください この値は 400 ps (plusmn200 ps) と概算されています 等式 10 を使用しク ロ ッ ク (A) の総周期ジッタを計算します

次にDCM (B) で分周値が整数である CLKDV 出力を使用する場合について考えます またDCM 出力ジッタに対して 『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_DV1 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (B) の総周期ジッタを計算します この場合 入力ジッタ DCM (A) からのジッタ DCM (B) からのジッタを考慮する必要があるため RMS 等式は次のよ うになり ます

最後に DCM (C) が DCM (B) からの出力を 90deg位相シフ トする場合について考えます また DCM出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します この場合 入力ジッ タ DCM (A) からのジッ タ DCM (B) からのジッ タDCM (C) からのジッ タを考慮する必要があるため RMS 等式は次のよ うにな り ます

例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合

この例は DFS からの CLKFX 出力または CLKFX180 出力を使用する DCM がある点以外は 例 1 すべての DCM が DLL 出力を使用する場合と同様です

この例では 75MHz 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

例 1 と同様に まず DCM (A) が CLK2X 出力を使用する場合について考えます 出力ジッタは 次に示す等式になり ます

この例ではDCM (A) で生成された 150MHz を使用してDCM (B) で 90MHz 合成クロ ッ クを生成します DCM Wizard ( 「ク ロ ッ ク周波数合成」 を参照して ください) を使用し CLKFX_MULTIPLY=3および CLKFX_DIVIDE=5 と設定します ワース ト ケースの出力周期ジッタは 700 ps とな り ます

図 48 カスケード接続された DCM のジッ タ計算

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

A B C

x462_48_061903

JITTERTOTAL A( ) 150ps( )2400ps( )

2+ 427ps 214psplusmn= = =

JITTERTOTAL B( ) 150ps( )2400ps( )

2300ps( )

2+ + 522ps 261psplusmn= = =

JITTERTOTAL C( ) 150ps( )2 400ps( )2 300ps( )2 300ps( )2+ + + 602ps 301psplusmn= = =

JITTERTOTAL B( ) 700ps 350psplusmn= =

64 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

最後にDCM (C) が DCM (B) からの出力を 90deg位相シフ ト させる場合について考えます DCM 出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用してください この値は 300 ps (plusmn150 ps) と概算されています 次の等式を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します 次の DCM では CLKFX を使用するため 総入力ジッ タは ワース ト ケースで700 ps とな り ます 次の RMS 等式を使用し 出力ジッタを計算します

カスケード接続した DCM を使用する場合の推奨デザイン

DCM をカスケード接続して使用する場合 図 48 に示すよ うに DCM からの LOCKED 出力が次のDCM の RST 入力を制御しているこ とを確認してください カスケード接続した DCM では 1 つ前のDCM で LOCKED 出力がアサート され ク ロ ッ クが安定しているこ とが示されてた後に 入力クロ ックにロ ッ クする必要があ り ます

また DCM をカスケード接続する場合には 最もジッ タの影響を回避する必要のあるク ロ ッ ク出力が最初の DCM に接続されるよ うに DCM チェーンを構成してください

システム パフォーマンスにおけるジッ タの影響ク ロ ッ ク ジッタによっても有効なビッ ト周期が狭くな りシステム パフォーマンスが低下します 次の等式に示すよ うに FPGA アプリ ケーシ ョ ンで使用可能なビッ ト周期は 総ビッ ト周期 TBIT からいくつかの影響を差し引いたものです シングル データ レート (SDR) アプリ ケーシ ョ ンでは ク ロ ッ ク周期とビッ ト周期は一致しますがデュアル データ レート (DDR) アプリ ケーシ ョ ンのビッ ト周期はクロ ッ ク周期の 12 になり ます

定義

総ジッ タがク ロ ッ ク周期からの偏差ではな く正の値に指定されている場合 (たとえば plusmn100 ps ではなく200 ps の場合) 正の値を 2 で割り ます (100 ps) ビッ ト周期は負の偏差によってのみ短くなり 正の偏差によってはビッ ト周期が長くな り さ らにタイ ミ ング スラ ッ クが追加されます

入力クロ ッ ク信号の周波数は 75 MHz であ り ク ロ ッ ク ソースのジッ タは plusmn100 ps です アプリ ケーシ ョ ンは内部で生成された 150 MHz のクロ ッ クの立ち上がりエッジでデータを入力します また 総ビッ ト周期 TBIT は 667 ns です ジッ タの影響を考慮する と 有効なビッ ト周期 TAVAILABLE は

どのよ うになるでし ょ うか

2 逓倍クロ ッ ク回路からの CLK2X 出力によって75MHz ク ロ ッ ク入力から 150MHz ク ロ ッ クが生成されます 『Spartan-3 データ シート 』 の CLKOUT_PER_JITT_2X 仕様による と 2 逓倍クロ ッ ク出力である CLK2X には plusmn~200 ps (概算) のワース ト ケース ジッタがあ り ます 2 乗平均平方根を使用し

TBIT = ビッ ト周期時間

tTOTAL_JITTER = 総クロ ッ ク ジッ タ ク ロ ッ ク入力ジッタに DCM 出力ジッタ またはカスケード接続された DCM のジッタを加算したものです

tDUTY_CYCLE_DISTORTION = デューティ サイ クルのずれ デュアル データ レート (DDR) アプリケーシ ョ ンのみで必要であ り それ以外の場合はゼロです 使用する DCM ク ロ ッ ク出力によって データ シートに記載されている CLKOUT_DUTY_CYCLE_DLL または CLKOUT_DUTY_CYCLE_FX を使用します

JITTERTOTAL C( ) 700ps( )2300ps( )

2+ 762ps 381psplusmn= = =

TAVAILABLE TBIT tTOTAL_JITTERndash tDUTY_CYCLE_DISTORTIONndash=

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 65

R

DCM のジ ッ タplusmn200 ps にク ロ ッ ク ソースのジ ッ タ plusmn100 ps を加算する こ と によ って 総ジ ッ タtTOTAL_JITTER が plusmn0223 ns であるこ とがわかり ます

データはクロ ッ クの立ち上がりエッジでのみ入力されるためデューティ サイクルのずれが影響を与えるこ とはな く tDUTY_CYCLE_DISTORTION = 0 です

結果と して 有効な総クロ ッ ク周期 TAVAILABLE は総ビッ ト周期である 6667 ns から 6444 ns に減少します 結果と して ロジッ クは 150 MHz ではなく 1551831 MHz で動作します

クロック ジッ タを最小限にするための推奨デザイン高性能アプリ ケーシ ョ ンでは ク ロ ッ ク ジッタによって有効なビッ ト周期が短くな り ますシステム全体のクロ ッ ク ジッタを最小限にするためには次の推奨デザインを参考にしてください

適切な電力分散システム設計

電力プレーン デカップ リ ングを含む 電力分散システム (PDS) を適切に設計するこ とによって 安定した電力環境を作成し システム ジッ タを削減できます アプ リ ケーシ ョ ン ノー ト XAPP623 ではPDS の適切な設計にについて説明しています

bull XAPP623 電力分散システム (PDS) デザイン バイパスデカップリ ング キャパシタhttpwwwxilinxcomxappxapp623pdf

適切なプリン ト サーキッ ト ボードの設計

予想される動作周波数範囲およびアプ リ ケーシ ョ ン環境に適したプ リ ン ト サーキッ ト ボード設計を行ってください

bull WP174 PCB への効果的な FPGA 統合httpwwwxilinxcojppublicationswhitepaperswp_pdfwp174pdf

bull PCB チェッ ク リ ス トhttpsupportxilinxcomxlnxxil_prodcat_productjsptitle=si_pcbcheck

同時スイッチ出力 (SSO) の推奨デザイン

DCM へのク ロ ッ ク入力 または DCM からのク ロ ッ ク出力の信号に関連した問題を回避するために『Spartan-3 データ シート 』 に記載されている同時スイ ッチ出力 (SSO) 仕様に沿っているこ とを確認して ください

また 可能な限り DCM の入力または出力をスイ ッチング回数の多い IO の近くに配置するこ とを避けてください 特に 出力電圧幅が大きい IO または駆動電流が高い IO の場合にはこのこ とが重要です

仮想グランド ピンを DCM 入力および出力接続の近くに配置

さまざまな影響を受けやすく高周波数である DCM の入力または出力では仮想グランド ピンのよ うなユーザー IO ピンを追加して PCB へ別の接続を作成します このよ うな仮想グランド ピンは ジッタの影響を受けやすい DCM 信号に近接する IO パッ ドに配置して ください IO パッ ドは パッケージのピンまたはボール上だけでなく FPGA のダイ レベルでも近接しているこ とを確認して くださいBGA パッケージ上で隣接しているボールは 必ずしも FPGA 上にある隣接したパッ ドに接続する必要はあ り ません このよ うに設計するこ とによって 内部電圧降下が軽減され ジッ タが削減されます

仮想グランドを作成する場合は図 49 に示すよ うに IOB を GND (Low ロジッ ク レベル) を駆動する出力と して設定し その IOB を外部で直接グランド プレーンに接続します

tTOTAL_JITTER 100psplusmn( )2 200psplusmn( )2+ 22360psplusmn 0223nsplusmn= = =

TAVAILABLE 6667ns 0223nsndash 6444ns= =

66 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

VCCAUX 考察

デジタル ク ロ ッ ク マネージャは VCCAUX 入力によって電源が供給されます FPGA への電源供給入力である VCCAUX の過剰ノ イズは DCM の特性 特にジッタ特性を低下させます DCM のパフォーマンスを最適にするために 次に従ってください

1 図 50 に示すよ うに VCCAUX 電源供給 またはグランド上の変動を 1 ms 間で 10 mV よ り小さ くして ください この制限によって DCM は変動に適切に対応して動作します

2 図 50 に示すよ うに 電源供給のノ イズをピーク間で 200 mV 以内にして ください

3 VCCAUX および VCCO が同一の電源プレーンにある場合 すべての VCCAUXVCCO ピンを適切にデカップリ ングまたはバイパスする必要があ り ます ( 「適切な電力分散システム設計」 を参照してください) また 上記の 1 および 2 を維持できない場合 VCCAUX と VCCO を分離して使用してください

4 特に CLK2X 出力は電源シフ ト またはグランド シフ トの影響を受けます したがって すべての IOB および CLB でスイ ッチングがある場合には CLKFX_MULTIPLY =2 および CLKFX_DIVIDE=1 と設定されている CLKFX 出力はよ り よい特性を持つ出力を供給します DFS モードの場合 CLK2X 出力の更新が遅いのに対して CLKFB 迂回回路では 3 入力クロ ッ クごとにタ ップが更新されます

FACTORY_JF 設定の修正

適切に設計され 安定し 適切にデカップリ ングされた電源供給が FPGA 内のクロ ッ ク スキューおよびジッタを低減するためにもっと も有効な方法ですが FACTORY_JF 属性を 0xFFFF に設定することによって 問題の発生しているボード上のジッタを低減できる場合があ り ます FACTORY_JF=FFFF の場合 DCM はおよそ 20 入力クロ ッ クごとにタ ップ設定を更新し 周波数を基にしたデフォルト設定よ り もタ ップ更新の間隔は短くな り ます

図 49 DCM 入力または出力クロック信号への仮想グランド ピンの使用

IBUFG

OBUF

OBUF

To DCMCLKIN Input

Sensitive DCMClock Input

FPGAldquoVirtualrdquoground pin

Direct connectionto PCB groundplane

GND

GND

x462_49_061903

図 50 電圧降下を回避するための VCCAUX 考察

VCCAUXSupply(at FPGA)

dV lt 10 mV

dt lt 1 mS

Keep VCCAUX noiseenvelope to lt 200 mVpeak-to-peak

Avoid sudden changes fromone DC level to anotherKeep dVdt lt 10mVmS x462_50_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 67

R

ただし FACTORY_JF の設定値を大き くするこ とによって DCM では遅延ラインが頻繁に更新されジッ タがわずかに増加する (~30 ps) 可能性もあるため FACTORY_JF のデフォルト設定は最大値ではあ り ません 電源供給が不安定の場合には 発生した位相エラーが増加したジッタよ り大きい場合があり この場合には FACTORY_JF の設定値を大き くするこ とによって デザインのパフォーマンスを向上できます

その他 ビッ トス ト リーム生成の設定

DCM では 次の 2 つのビッ ト ス ト リーム生成 (BitGen) オプシ ョ ンがあ り ます

bull -g lck_cycle このオプシ ョ ンを使用する場合インスタンシエート された DCM で LOCKED 出力がアサート されるまで FPGA のコンフ ィギュレーシ ョ ン スタート アップ シーケンスを遅らせるこ とができます

bull -g DCMShutdown このオプシ ョ ンを使用する場合JTAG ポート を使用した部分再コンフ ィギュレーシ ョ ン または全体の再コンフ ィギュレーシ ョ ンを実行中に コンフ ィギュレーシ ョ ン ロジックに SHUTDOWN コマンドがロード される と DCM ロジッ クがリセッ ト されます

Project Navigator でのビッ トス ト リーム生成オプシ ョ ン

ISE 52i Project Navigator を使用する場合は 図 51 に示すよ うに [Processes for Source] ウ ィンド ウで [Generate Programming File] を右ク リ ッ ク し [Properties] を選択するこ とによってビッ ト ス トリーム生成オプシ ョ ンを設定します

詳細は 「BitGen スイ ッチおよびオプシ ョ ン」 を参照してください

コマンド ライン またはスクリプ ト を使用したビッ トス ト リーム生成オプシ ョ ン

設定可能なオプシ ョ ンを表示するためには 次のコマンドを入力します

bitgen -help spartan3

DCM LOCKED 出力とコンフ ィギュレーシ ョ ン ロジックの設定

DCM の STARTUP_WAIT 属性を使用するこ とによってDCM で LOCKED 出力がアサート されるまで FPGA で DONE 信号がアサート されるを遅らせFPGA のコンフ ィギュレーシ ョ ン スタート アップロジッ クを待たせるこ とができます ただし このためには設計段階で次の二つの設定を行う必要があり ます まず ロ ッ ク状態になってからコンフ ィギュレーシ ョ ンを完了する必要がある各 DCM に対するSTARTUP_WAIT 属性を TRUE に設定します 次に各信号がスタート アップの 6 ク ロ ッ ク サイクルで 図 52 に示すよ うに動作するよ うにビッ ト ス ト リーム生成オプシ ョ ンを変更します デバイスがコンフ ィギュレーシ ョ ン スタート アップ シーケンスを完了するためにはDCM が LOCKED をアサート後に十分なコンフ ィギュレーシ ョ ン ク ロ ッ ク サイ クルが必要です

図 51 Project Navigator でのビッ トス ト リーム生成 (BitGen) オプシ ョ ン

Processes for Current Source

Generate Programming File

Programming File Generation Report

RunRerunRerun AllStopOpen without Updating

Properties

x462_51_061903

68 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他R

A FPGA 内部のグローバル ト ラ イ ステート信号 (GTS_cycle) を開放し すべての IO 信号をイネーブルにします

B GTS_cycle 後に DCM で LOCKED がアサート されるまでスタート アップ ロジッ クが待機するよにサイクルを設定します DCM では クロ ッ ク信号でロ ッ ク状態になる前に ク ロ ッ クおよび可能ならばフ ィードバッ ク信号のよ うな外部入力が必要です

C DCM がロ ッ ク状態になった後 FPGA の内部グローバル書き込みイネーブル (GWE_cycle) 信号をアサート します

D 最後に 内部の DONE 信号をアサート します

図 53 に Project Navigator を使用したオプシ ョ ン設定を示します

スタート アップ位相タイ ミ ングおよび GWE_cycle と DONE_cycle のタイ ミ ングには柔軟性があ り ますがDCM で STARTUP_WAIT 属性を使用する場合は必ず LCK_cycle の前に GTS_cycle がなければなり ません シーケンスがこのよ うになっていない場合にはDCM がロッ クせずコンフ ィギュレーシ ョ ンが完了しません

図 52 DCM LOCKED 出力とスタートアップ ロジックの相互関係

0 1 2 3 4 5 6

DONE_cycle

Start-up CLK

GTS_cycle

GWE_cycle

LCK_cycle

Start-up Cycles

A

B

C

D

x462_52_062403

図 53 BitGen オプシ ョ ン

Process Properties

Startup options

Value

CCLK

6

3

5

4

Default (NoWait)

General Options Configuration Options Readback Options

Property Name

FPGA Startup Clock

Enable Internal Done Pipe

Done (Output Events)

Enable Outputs (Output Events)Release Write Enable (Output Events)Release DLL (Output Events)

Match Cycle (Output Events)

Drive Done Pin High

OK Cancel Default Help

Optionally set GWE_cycle to follow GTS_cycleensuring DCM(s) reset afterIOs activate

LCK_cycle indicates cyclewhere start-up logic waitsfor DCM(s) to assertLOCKED

Done_cycle after LCK_cycle GTS_cycle must occur

before LCK_cycle to enableIO pins

[Startup options]

[OK] x462_53_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 69

R

JTAG を使用した部分再コンフ ィギュレーシ ョ ンまたは全体の再コンフ ィギュレーシ ョ ン中の DCM リセッ ト

も う 1 つのビッ ト ス ト リーム オプシ ョ ンと して SelectMAP を使用した部分再コンフ ィギュレーシ ョン中 または JTAG ポート を使用した全体および部分再コンフ ィギュレーシ ョ ン中に FPGA にあるすべての DCM を リセッ トできます このオプシ ョ ンを使用する場合 SHUTDOWN コマンド シーケンス中に AGHIGH コンフ ィギュレーシ ョ ン コマンドが発行される とDCM がリセッ ト されます JTAGを使用して再コンフ ィ ギュレーシ ョ ンを行う場合には 必ず DCM を リ セッ トする必要があ り ますProject Navigator でビッ ト ス ト リーム生成オプシ ョ ンを変更するためには (「Project Navigator でのビット ス ト リーム生成オプシ ョ ン」 を参照) 図 54 に示すよ うに Configuration options タブをク リ ッ クし [Reset DCM if SHUTDOWN amp AGHIGH performed] オプシ ョ ンのチェッ ク ボッ クスをオンにして ください

一時的な CLKIN の停止厳密なアナログ測定を行っている間のシステム全体のノ イズを削減するため FPGA アプリ ケーシ ョ ンのその他の部分に影響を与えるこ とな く 一時的に DCM へのクロ ッ ク入力を停止できます これが可能である理由の一部はDCM がすべてデジタルで安定して機能するシステムであるためです DCM では最初に入力クロ ッ クに対してロ ッ ク し次に LOCKED 出力をアサートする必要があ り ます DCM がリセッ ト しない場合には デスキュー回路にほとんど影響を与えずに CLKIN 入力クロ ッ クを一時的に停止できますが 次の条件を満たす必要があ り ます

bull デバイスが冷却するこ とによるタ ップ遅延の変化の影響を最小限にするために ク ロ ッ クの停止時

間は 100 ms 未満である必要があ り ます

bull ク ロ ッ クが Low である間に停止する必要があ り12 周期分の High から再開する必要があ り ます

上述の条件は理論的にはクロ ッ ク入力ジッタの仕様に違反しますがDCM の LOCKED 出力は Highを維持し ク ロ ッ クが再び動作する際にも High を維持しています したがって LOCKED が High であるこ とは必ずしも有効なクロ ッ クが使用可能であるこ とにはなり ません このため実際にはクロ ック入力ジッタの仕様に違反していますが これらの条件を満たす限り問題はあ り ません

CLKIN を停止する際にはDCM のデジタル遅延ラインにあるクロ ッ クが出力されるため 1 から 8 出力クロ ッ ク サイクルが生成されます 同様に CLKIN が再開する場合には 遅延ラインが満たされる

図 54 再コンフ ィギュレーシ ョ ン中に DCM をリセッ トするためのコンフ ィギュレーシ ョ ン オプシ ョ ン

Process Properties

Configuration options

ValuePull Up

Pull UpFloatPull UpPull Down0xFFFFFFFF

General Options Startup options Readback Options

Property NameConfiguration Pin DoneJTAG Pin TCKJTAG Pin TDIJTAG Pin TDOJTAG Pin TMSUnused IOBsUserID Code (8 Digit Hexadecimal)Reset DCM if SHUTDOWN amp AGHIGH performed

OK Cancel Default Help

Click Configuration options tab

Click OK when finished

Pull Up

Check to reset all the DCMsin the FPGA if the AGHIGHcommand issued duringSHUTDOWN sequence

x462_54_062103

70 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

参考資料R

までの 1 から 4 ク ロ ッ クサイ クル間は出力クロ ッ クが生成されません 通常 遅延ラインが満たされるためは 2 または 3 ク ロ ッ ク サイ クルが必要です

また 入力ク ロ ッ クを停止するこ とによって 位相シフ ト を行う こ とができます この位相シフ トは

DCM による制御を中断させるこ とな く 1 から 4 ク ロ ッ ク サイクル後のクロ ッ ク出力から影響を与えます

図 55 に CLKIN 入力クロ ッ クを一時的に停止する例を示します また この図には CLK2X ク ロ ッ ク出力への影響も示しています

参考資料 bull 『Spartan-3 データ シート 』 (モジュール 2) デジタル  ク ロ ッ ク  マネージャの特長および機能httpwwwxilinxcojpbvdocspublicationsds099-2pdf

bull 『Spartan-3 データ シート 』 (モジュール 3) タイ ミ ングおよびジッタ特性

httpwwwxilinxcojpbvdocspublicationsds099-3pdf

bull ザイ リ ンクス ISE 52i ライブラ リ ガイ ドDCM プリ ミ ティブhttptoolboxxilinxcomdocsanxilinx5pdfdocsliblibpdf

bull Architecture Wizard 録音版 Web セミナーhttpsupportxilinxcojpsupporttrainingjapan-home-pagehtm

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcojpxappxapp622pdf

bull 『開発システム リ ファレンス ガイ ド』 15 章 「BitGen」 ビッ ト ス ト リーム生成プログラムおよびオプシ ョ ン 335-367 ページhttptoolboxxilinxcomdocsanxilinx5pdfdocsdevdevpdf

図 55 CLKIN の一時的な停止

CLKIN

CLK2X

Clock input must bestopped in Low phase andfor no more than 100 ms

When restarted the clockinput must generate a fullHigh half-period

x462_55_062403

改訂履歴

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 71

R

改訂履歴 次の表に このアプリ ケーシ ョ ン ノートの改訂履歴を示します

日付 バージョ ン 履歴

20030709 10 初版リ リース

  • Spartan-3 FPGA におけるデジタル クロック
  • マネージャ (DCM) の使用
    • 概要
    • はじめに
    • 概要
    • DCM 位置および クロック分散 ネットワーク インターフェイス
    • DCM 機能の概要
      • 遅延ロック ループ (DLL)
      • デジタル周波数合成 (DFS)
      • 位相シフト (PS)
      • ステータス ロジック
        • DCM プリミティブ
          • シンボル
          • 接続ポート
          • 属性プロパティおよび制約
            • その他のザイリン クス FPGA ファ ミリとの互換性
            • DCM 使用のため のクロック条件
              • 入力クロック周波数範囲
              • 出力クロック周波数範囲
              • クロック入力およびクロック フィードバック入力の変動
                • LOCKED 出力
                • RST 入力
                • DCM Wizard
                  • DCM Wizard の起動
                    • Windows のスタート ボタンから起動
                    • Project Navigator から起動
                      • Wizard 選択
                      • [General Setup]
                      • アドバンスド オプション
                      • クロック バッファ
                      • クロック周波数合成
                      • HDL 出力の生成
                        • VHDL および Verilog のインス タンシエーション
                          • Project Navigator の言語テンプレート
                          • VHDL および Verilog リファレンス ファイル
                            • クロック スキュー の低減
                              • クロック スキューとは
                              • クロック スキュー パフォーマンス低下の原因
                              • スキューの削除
                              • 過去のクロック動作から将来のクロック動作を予測
                              • ターゲットのロック
                              • 安定した単調なクロック入力
                              • 確実なソースからのフィードバック
                              • 内部クロック信号からのスキュー削除
                              • 外部クロック信号からのスキュー削除
                                • コンフィギュレーション後の DCM リセット
                                • なぜリセットする必要があるのか
                                  • 遅延ロック ループとは
                                    • 遅延ロック ループ (DLL)
                                    • 位相ロック ループ (PLL)
                                    • インプリメンテーション
                                    • DLL と PLL
                                      • スキュー調整
                                        • システム同期
                                        • ソース同期
                                        • タイミングの比較
                                            • クロック調整
                                            • 位相シフト- ク ロック周期の分数 でクロックを遅延
                                              • 12 クロック周期位相シフト出力
                                                • 12 周期位相シフト出力によるデューティ サイクルのずれの削減
                                                • デュアル データ レート (DDR) クロックの例
                                                  • 14 位相シフト出力
                                                    • DLL 周波数モードによる出力の有効性
                                                    • 5050 デューティ サイクル調整オプション
                                                    • 4 つの位相遅延クロックエッジ位相パルス
                                                      • ファイン位相シフト
                                                      • 固定ファイン位相シフト
                                                        • 固定ファイン位相シフト範囲
                                                        • 最小位相シフト
                                                        • その他の考察点
                                                        • DCM Wizard
                                                          • 動的ファイン位相シフト
                                                            • 動作
                                                            • 動的ファイン位相シフト範囲
                                                            • 制御
                                                            • DCM Wizard
                                                            • アプリケーション例
                                                                • クロック逓倍 クロック分周 周波数合成
                                                                  • 周波数合成アプリケーション
                                                                  • 入力クロックおよび出力クロックの周波数条件
                                                                  • 2 逓倍クロック (CLK2XCLK2X180)
                                                                  • クロック分周 (CLKDV)
                                                                    • CLKDV クロック調整
                                                                    • CLKDV のジッタは周波数モードおよび属性値が整数か整数ではないかによって決定されます
                                                                    • DCM Wizard
                                                                      • 周波数合成回路 (CLKFXCLKFX180)
                                                                        • DCM Wizard
                                                                            • クロックのフォ ワードミラー リバッファ
                                                                            • クロック ジッタお よび位相ノイズ
                                                                              • クロック ジッタとは
                                                                              • クロック ジッタの原因
                                                                              • クロック ジッタ特性の理解
                                                                                • サイクル間ジッタ
                                                                                • 周期ジッタ
                                                                                • ユニット インターバル(UI)
                                                                                  • 総ジッタの計算
                                                                                    • DLL 出力ジッタへの入力ジッタの加算
                                                                                      • カスケード接続された DCM のジッタ計算
                                                                                        • 例 1 すべての DCM が DLL 出力を使用する場合
                                                                                        • 例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合
                                                                                        • カスケード接続した DCM を使用する場合の推奨デザイン
                                                                                          • システム パフォーマンスにおけるジッタの影響
                                                                                              • クロック ジッタを最小限にするための推奨デザイン
                                                                                                • 適切な電力分散システム設計
                                                                                                • 適切なプリント サーキット ボードの設計
                                                                                                • 同時スイッチ出力 (SSO) の推奨デザイン
                                                                                                • 仮想グランド ピンを DCM 入力および出力接続の近くに配置
                                                                                                • VCCAUX 考察
                                                                                                • FACTORY_JF 設定の修正
                                                                                                    • その他
                                                                                                      • ビットストリーム生成の設定
                                                                                                        • Project Navigator でのビットストリーム生成オプション
                                                                                                        • コマンド ラインまたはスクリプトを使用したビットストリーム生成オプション
                                                                                                        • DCM LOCKED 出力とコンフィギュレーション ロジックの設定
                                                                                                        • JTAG を使用した部分再コンフィギュレーションまたは全体の再コンフィギュレーション中の DCM リセット
                                                                                                          • 一時的な CLKIN の停止
                                                                                                            • 参考資料
                                                                                                            • 改訂履歴
Page 7: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 7

R

表 3 DCM 接続ポート

ポート 方向 説明機能ユニッ ト

DLL PS DFS

CLKIN ク ロ ッ ク入力 DCM へのクロ ッ ク入力であ り 常に必要です CLKIN の周波数およびジッタは 『Spartan-3 データ シート 』 で指定された範囲内である必要があり 周波数モードは DLL_FREQUENCY_MODE 属性または DFS_FREQUENCY_MODE 属性で指定されます

CLKFB 入力 DCM へのクロ ッ ク フ ィードバッ ク入力です フ ィードバッ ク入力はデジタル周波数合成出力である CLKFX または CLKFX180 のみが使用されている場合は必要あ り ません CLKFB 入力のソースは DCM からの CLK0 出力または CLK2X 出力であ り状況に応じて CLK_FEEDBACK を 1X または 2X に設定する必要があ り ます 理論的には フ ィードバッ ク地点には内部または外部のクロ ッ ク分散ネッ ト ワークで追加された遅延が含まれます

「確実なソースからのフ ィードバッ ク」 を参照してください

オプ

シ ョ ン

RST 入力 非同期のリセッ ト入力であ り DCM ロジッ クを リセッ ト してコンフ ィギュレーシ ョ ン後の設定に戻します この入力を使用した場合 DCM では再び CLKIN を確認し ロ ッ ク します また DCM ブロ ッ ク内部で反転可能であり 反転させない場合の動作については下表に示します 「RST 入力」 を参照してください

PSEN 入力 動的位相シフ ト イネーブル信号であ り DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位

相シフ ト 」 を参照してください

PSINCDEC 入力 動的位相シフ ト値を増減する場合に使用し DCM ブロ ッ ク内部で反転可能です 反転させない場合の動作については下表に示します 「動的ファイン位相シフ ト 」 を参照してください

PSCLK ク ロ ッ ク入力 PS へのクロ ッ ク入力であ り 立ち上がりエッジで入力されます DCM ブロ ッ ク内部で反転可能です 周波数モードは DLL_FREQUENCY_MODE 属性によって指定されます 「動的ファイン位相シフ ト 」 を参照してくださ

0 影響なし

1 DCM ブロ ッ クを リセッ ト します アクティブ High であ り最低 2ns 間 High を維持する必要があ り ます

0 動的位相シフ ト をディ スエーブルにし PS への入力は無視されます

1 PSCLK ク ロ ッ クの次の立ち上がりエッジで動的位相シフ トをイネーブルにします

0 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を増加させます

1 次の有効な PSCLK ク ロ ッ クの立ち上がりエッジで位相シフト値を減少させます

8 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLK0 ク ロ ッ ク出力 位相シフ トは 0degであ り CLKIN と同一周波数の出力ですDUTY_CYCLE_CORRECTION 属性が TRUE の場合は デューティ サイクルが 50 に調整されます DLL 機能にはフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK90 ク ロ ッ ク出力 90deg(14 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません またDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK180 ク ロ ッ ク出力 180deg(12 周期) 位相シフ ト した CLKIN と同一周波数であ りDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイクルが 50 に調整されます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK270 ク ロ ッ ク出力 270deg(34 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません また DUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK2X ク ロ ッ ク出力 位相シフ トは 0degであ り 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合には 常にデューティ サイクルが 50 とな りDLL へのフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLK2X180 ク ロ ッ ク出力 180deg位相シフ ト し 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合はデューティ サイクルが常に 50 とな り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKDV ク ロ ッ ク出力 分周クロ ッ ク出力であ り CLKDV_DIVIDE 属性で制御されます DLL_FREQUENCY_MODE 属性が High であ り CLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 です また CLKDV_DIVIDE 値が整数ではないではない場合はロ ッ ク状態になるまでに必要な時間が長くなり ます これはクロ ッ ク分周 (CLKDV) 出力です

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 9

R

CLKFX ク ロ ッ ク出力 合成クロ ッ ク出力であ り CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性で制御されます デューティ サイクルは常に 50 です CLKFX または CLKFX180 ク ロ ッ ク出力のみが使用されている場合には クロ ッ ク フ ィードバッ クは必要あ り ません 「周波数合成回路 (CLKFX CLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKFX180 ク ロ ッ ク出力 CLKFX を 180deg位相シフ ト した (CLKFX を反転したよ うに見える) 合成クロ ッ ク出力であ り デューティ サイ クルは常に 50 です CLKFX ク ロ ック出力または CLKFX180 ク ロ ッ ク出力が DCM で使用されている場合には フ ィードバッ ク ループは必要あ り ません 「周波数合成回路 (CLKFXCLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

STATUS[0] 出力 動的位相シフ トがオーバーフローであるこ とを示します 動的ファイン位

相シフ トの制御出力で 動的位相シフ トが最小値または最大値に達してい

るこ とを示します 制限値は plusmn255 または位相シフ ト遅延ラインの最後に達した場合は その値以下になり ます 「動的ファイン位相シフ ト 」 を参照し

てください

STATUS[1] 出力 CLKIN 入力が停止したこ とを示し CLKFB フ ィードバッ ク入力が接続されている場合のみに使用できます LOCKED 出力がアサート されるまではリセッ ト状態であ り アクティブになるためには CLKIN が 1 サイクル以上必要です CLKIN が最初から ト グルしない場合にはアサート されません

STATUS[2] 出力 CLKFX 出力または CLKFX180 出力が停止したこ とを示します 周波数合成回路 (CLKFX CLKFX180) を参照してください

STATUS[73]

出力 予約済み

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

0 位相シフ トは制限値に達していません

1 位相シフ トが制限値に達しています

0 CLKIN がト グルしています

1 CLKIN がト グルしていません

0 CLKFX 出力および CLKFX180 出力がト グルしています

1 CLKFX 出力および CLKFX180 出力がト グルしていませんただしLOCKED 出力が High に維持されている場合があ ります

10 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

LOCKED 出力 すべての DCM 機能は CLKIN の周波数にロッ ク しています CLKIN が指定された範囲内 ( 「DCM 使用のためのクロ ッ ク条件」 に記載) である場合に クロ ッ ク出力が有効です 「周波数合成回路 (CLKFX CLKFX180)」を参照してください

PSDONE 出力 動的位相シフ トが完了したこ とを示します 「動的ファイン位相シフ ト 」 を

参照してください

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

0 DCM は CLKIN の周波数に対してロ ッ クする過程であ りDCM のクロ ッ ク出力は無効です

1 DCM は CLKIN の周波数に対してロ ッ ク しDCM のクロ ック出力は有効です

1 rarr 0 DCM のロ ッ ク状態が解除され DCM を リセッ トする必要があ り ます

0 位相シフ トが行われていない または実行中です

1 要求された位相シフ トは完了しています この出力が PSCLK の 1 サイクル間 High になった後次の位相シフ ト を実行できます

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 11

R

属性 プロパティ および制約

表 4 にデジタル ク ロ ッ ク マネージャの属性を示しますすべての属性は設計段階で設定されコンフ ィギュレーシ ョ ン中にプログラムされます 動的ファイン位相シフ ト以外では FPGA アプリ ケーシ ョ ンの実行中にこれらの設定を変更するこ とはできません 使用するデザイン入力ツールに合わせて lt属性gt=lt設定gtを使用し 属性を設定します

表 4 DCM 属性

属性 可能な設定および説明

DLL_FREQUENCY_MODE CLKIN 入力 PSCLK 入力 および遅延ロッ ク ループ (DLL) からの出力クロ ッ クの有効周波数範囲を指定します DLL ク ロ ッ ク出力には CLK0 CLK90 CLK180 CLK270CLK2X CLK2X180 CLKDV が含まれます

CLK_FEEDBACK フ ィードバッ ク ク ロ ッ クの周波数を指定します

DUTY_CYCLE_CORRECTION DLL からの出力である CLK0 CLK90 CLK180 および CLK270 に対する 50 デューティ サイ クル調整をイネーブルまたはディ スエーブルに設定します

CLKDV_DIVIDE CLKDV 出力の周波数を指定します 設定可能な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 です

CLKDV_DIVIDE が整数ではない場合 ロ ッ クするために必要な時間が長くなり 出力ジッ タが増加します

CLKFX_MULTIPLY CLKFX 出力および CLKFX180 出力の周波数を逓倍する場合の係数を指定します この値は CLKDV_DIVIDE 属性の値と と もに使用されます CLKFX_MULTIPLY に設定可能な範囲は整数値の 2 から 32 であ り デフォルトは 4 です

LOW デフォルトです DLL は低周波数モードで動作し DLL に関連したすべての出力が有効です ク ロ ッ ク入力およびクロ ッ ク出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DLL の指定範囲内にあ り ます

HIGH DLL は高周波数モードで動作します 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力 および 14 位相シフ ト出力 CLK90 と CLK270 は無効です CLKDV_DIVIDE 属性が整数以外の場合 CLKDV 出力のデューティ サイクルは 50 になり ません ク ロ ッ ク入力およびクロ ッ ク出力の周波数は『Spartan-3 データ シート 』 に記載されている高周波数 DLL の指定範囲内にあり ます

1X デフォルトであ り CLK0 フ ィードバッ クです周波数は CLKIN と同一です

2X CLK2X フ ィードバッ クであ り 周波数は CLKIN の 2 倍です

なし フ ィードバッ ク ク ロ ッ クはあ り ません CLKFX 出力または CLKFX180 出力のみを使用している場合に可能です

TRUE デフォルトであ り デューティ サイクルは 50 に調整されます

FALSE デューティ サイクル調整は行われません

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

12 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLKDV_DIVIDE CLKFX 出力および CLKFX180 出力の周波数を分周する場合の係数を指定します この値は CLKFX_MULTIPLY 属性の値と と もに使用されます設定可能な範囲は整数値の 1 から 32 であ り デフォルトは 1 です

PHASE_SHIFT この属性は CLKOUT_PHASE_SHIFT 属性が FIXED または VARIABLE に設定されている場合にのみ使用できます CLKIN とすべての DCM ク ロ ッ ク出力間の立ち上がりエッジにおけるスキューをコンフ ィギュレーシ ョ ンで定義し DCM ク ロ ッ ク出力を位相シフ ト させます

スキューまたは位相シフ ト値は整数で指定されます この整数値は 次の等式に示すよ うに

ク ロ ッ ク周期の分数で表され範囲は -255 から 255 になり ますデフォルト値は 0 であ り実際に設定可能な値は入力クロ ッ ク周波数によって異なり ます また TCLKIN gt FINE_SHIFT_RANGE の場合には 実際の範囲はよ り小さ くな り ますFINE_SHIFT_RANGE は遅延ラインにおけるすべてのタ ップの総遅延を示します 詳細は「ファ イン位相シフ ト 」 を参照してください

CLKOUT_PHASE_SHIFT 位相シフ ト モードを指定します PHASE_SHIFT 制約と共に使用し DCM のデジタル位相シフ ト (DPS) 機能をインプリ メン ト します また この設定は DLL および DFS からのすべてのクロ ッ ク出力に反映されます 詳細は 「ファ イン位相シフ ト 」 を参照してください

DESKEW_ADJUST FPGA ク ロ ッ ク入力ピンと DCM 出力クロ ッ ク間のクロ ッ ク遅延調整を制御します 「スキュー調整」 を参照してください

この設定を DCM ク ロ ッ ク出力の位相シフ トに使用しないでください 正確な位相シフ ト を行う場合にはCLKOUT_PHASE_SHIFT 制約または PHASE_SHIFT 制約を使用してください

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

なし デフォルトです CLKIN および CLKFB は同位相 (スキューなし ) であ り位相関係は変更できません PHASE_SHIFT = 0 の場合の FIXED 設定と同一です

FIXED 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定され アプ リ ケーシ ョ ンでは変更できません

VARIABLE 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定されますが 動的位相シフ ト制御信号 PSEN PSCLK PSINCDEC および PSDONE を使用してアプリ ケーシ ョ ンで変更可能です

SYSTEM_SYNCHRONOUS デフォルトであ り すべてのデバイスがシステム全体

に共通のクロ ッ ク ソースで動作します

SOURCE_SYNCHRONOUS データ ソースから クロ ッ クが入力されます ソース同期アプリ ケーシ ョ ンがその一例です

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 13

R

DFS_FREQUENCY_MODE DCM のデジタル周波数合成 (DFS) からのクロ ッ ク出力である CLKFX および CLKFX180 に有効な周波数範囲を指定します DLL ク ロ ッ ク出力が使用されている場合はDLL_FREQUENCY_MODE によって CLKIN 入力の周波数範囲がよ り制限されます

STARTUP_WAIT DCM の LOCKED 信号のアサート よ り先に FPGA コンフ ィギュレーシ ョ ンの DONE 信号を High にするかど うかを制御します

2 つ以上の DCM をコンフ ィギュレーシ ョ ンしている場合は すべての DCM がロ ッ クする必要があ り ます

CLKIN_DIVIDE_BY_2 CLKIN が DCM ブロ ッ クに入力される前に 周波数を 2 分周します アプリ ケーシ ョ ンによっては 入力クロ ッ クの周波数を適切な範囲内に低減できます

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

LOW デフォルトであ り DFS は低周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合 CLKIN 入力の周波数範囲はその出力によって変化します

HIGH DFS は高周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている高周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合CLKIN 入力の周波数範囲はその出力によって変化します

FALSE デフォルトであ り DCM がロ ッ ク状態になるのを待たずに DONE 信号がアサート されます

TRUE DCM がロ ッ ク状態になるまで DONE 信号は High になり ません ただし この STARTUP_WAIT は LOCKED 信号が High になるのを妨げるものではあり ません またFPGA のスタート アップ シーケンスのサイクルの始めに LCK (ロ ッ ク ) サイクルを挿入するよ うに修正する必要があ り ます ( 「ビッ ト ス ト リーム生成の設定」 を参照してください) 通常は DONE サイクルまたは GWE サイクルがその後に続きます

FALSE デフォルトであ り CLKIN は直接 DCM ブロ ッ クに入力されます

TRUE CLKIN が DCM に入力する前に その周波数を 2 分周され デューティ サイクルは約 50 に調整されます これは 高周波数のクロ ッ クを使用し DCM の入力クロ ッ クの周波数条件またはデューティ サイ クル条件を満たす場合に有効です また 周波数モードを決定する場合 または位相シフ ト範囲を算出する場合に クロ ッ ク周波数を 2 分周します

14 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他のザイリンクス FPGA ファ ミ リ との互換性R

その他のザイリンクス FPGA ファミ リ との互換性

Spartan-3 のデジタル ク ロ ッ ク マネージャ (DCM) は Virtextrade-II および Virtex-II Pro FPGA ファ ミ リで使用されている DCM とほぼ同様の機能を持ちますが Spartan-3 DCM は第三世代の DCM デザインであ り さ らに機能が向上しています 特に Virtex-II デバイス と比較する と Spartan-3 デバイスはVCCAUX 供給電源における ノ イズ耐性が改善されVirtex-IIPro ファ ミ リ よ り も位相シフ ト機能に柔軟性があ り ます 出力の周波数制限値はVirtex-II および Virtex-II Pro ファ ミ リの DCM の方が高くなっています

またSpartan-IIIIE と比較する と Spartan-3 DCM の遅延ロッ ク ループ (DLL) 機能は大幅に改善され Spartan-IIIIE DLL の機能をすべて備えているだけでなく 周波数合成および位相シフ ト機能が追加されました Spartan-3 の周波数合成では 最大 32 までの係数を使用して入力クロ ッ クを逓倍しますが Spartan-IIIIE DLL での周波数合成機能は 2 逓倍までです 同様に Spartan-3 DCM の分周機能はSpartan-II DLL よ り広範囲に対応しています

DCM 使用のためのクロック条件

DCM は その機能に最大限の柔軟性があるよ うに設計されていますが ク ロ ッ クの周波数と安定性周波数の変動 およびクロ ッ ク ジッタにいくつかの条件があ り ます

入力クロック周波数範囲

DCM のクロ ッ ク入力周波数は アプ リ ケーシ ョ ンにおける DLL ユニッ ト DFS ユニッ ト またはその両方によって決定されます

表 5 に デジタル周波数合成 (DFS) ユニッ トでの入力クロ ッ クCLKIN の周波数範囲を示します DFS ユニッ ト を単独で使用する場合の周波数範囲は DLL 入力ニッ ト よ り も広くな り ますが 両ユニッ ト を使用する場合には よ り厳しい周波数条件を DLL に適用する必要があ り ます 表には データ シートに記載されている仕様名および概算値の 1 つを示していますが実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

FACTORY_JF DCM の DLL ユニッ トでタ ップ設定を修正する頻度を制御します この設定は DLL エレメン トのジッ タ特性に影響を与え DLL_FREQUENCY_MODE 属性に基づいて自動的に指定されます

設計方法と して推奨された場合以外は デフォルト設定を変更しないでください (「FACTORY_JF 設定の修正」 を参照してください)

LOC 図 1 に示すよ うに DCM の物理的な配置位置を指定します

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

DLL_FREQUENCY_MODE FACTORY_JF

LOW 0xC080

HIGH 0xF0F0

DCM_X0Y0 DCM の左下

DCM_X1Y0 DCM の右下 (XC3S50 では設定不可)

DCM_X0Y1 DCM の左上

DCM_X1Y1 DCM の右上 (XC3S50 では設定不可)

DCM 使用のためのクロック条件

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 15

R

表 6 に遅延ロッ ク ループ (DLL) ユニッ トでの入力クロ ッ ク CLKIN の周波数範囲を示します DLLが単独で使用されている場合と DFS と と もに使用されている場合では 同一の周波数条件が適用されます 表には低周波数モードおよび高周波数モードの場合の DLL の周波数範囲を示しています この周波数モードはDLL_FREQUENCY_MODE 属性によって指定されます 表にはデータ シートに記載されている仕様名および概算値の 1 つを示していますが 実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

出力クロック周波数範囲

DCM の出力クロ ッ クに対しても周波数範囲が指定されています 詳細は 「入力クロ ッ クおよび出力クロ ッ クの周波数条件」 を参照して ください

クロック入力およびクロック フ ィードバック入力の変動「安定した単調なクロ ッ ク入力」 で説明するよ うに DCM では安定性があ り単調なクロ ッ ク入力を使用する必要があ り ます しかし DCM 機能の柔軟性を最大限に使用しよ う とする場合 CLKIN で発生するクロ ッ ク ジッタおよび CLKIN 入力と CLKFB 入力の変動をある程度まで許容しなければなり ません

CLKIN 入力におけるジッタには 2 つのタイプがあ り ます 1 つはサイ クル間ジッタであ り このジッタは CLKIN 入力周期があるサイ クルから次のサイ クル間でどの程度の変化を許容できるかを示します 表 7 にデータ シートに記載されている仕様名および概算値を含むサイクル間ジッタの最大許容範囲を示します

表 5 デジタル周波数合成 (DFS) ユニッ トのクロック入力周波数範囲

機能 最小周波数 最大周波数

デジタル周波数合成 (DFS) CLKIN_FREQ_FX_MIN ~ 100 MHz

CLKIN_FREQ_FX_MAX ~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 6 遅延ロック ループ ユニッ トのクロック入力周波数範囲

機能

DLL 周波数モード属性 (DLL_FREQUENCY_MODE)

= LOW = HIGH

最小周波数 最大周波数 最小周波数 最大周波数

遅延ロ ッ ク ループ (DLL)

CLKIN_FREQ_DLL_LF_MIN

~ 24 MHz

CLKIN_FREQ_DLL_LF_MAX

~ 180 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 48 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 7 サイクル間ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_CYC_JITT_FX_LF~ plusmn300 ps

CLKIN_CYC_JITT_FX_HF~ plusmn150 ps

遅延ロッ ク ループ (DLL) CLKIN_CYC_JITT_DLL_LF~ plusmn300 ps

CLKIN_CYC_JITT_DLL_HF~ plusmn150 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

16 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

LOCKED 出力R

も う 1 つのジッタは 周期ジッタ と呼ばれ クロ ッ ク周期間の最大変動を示します サイクル間ジッタがあるサイクルと次のサイクルの差を示すのに対し 周期ジッタはクロ ッ ク周期全体での変化範囲を示

します 表 8 にデータ シートに記載されている仕様名および概算値を含む周期ジッタの最大許容範囲を示します

DCM の安定性に影響を与える別の要素は DLL で使用される ク ロ ッ ク フ ィードバッ ク パスですフ ィードバッ ク パス遅延の変動は 表 9 に示す範囲内でなければな り ません ただし グローバル クロ ッ ク ラ インに接続される場合はチップ上の変動が最小になるため こ こに示した範囲制限は外部フ ィードバッ ク パスにのみ適用されます

LOCKED 出力 DCM の LOCKED 出力は すべての DCM 機能が CLKIN 入力にロ ッ ク している こ と を示し ますLOCKED 信号がアサート される場合にはFPGA アプリ ケーシ ョ ン内で出力クロ ッ クを使用できます

図 5 に LOCKED 出力信号の動作を示しますLOCKED 出力は FPGA のコンフ ィギュレーシ ョ ン終了直後に Low になり RST 入力がアサート されている場合は常に Low です

コンフ ィギュレーシ ョ ン後 DCM は CLKIN 信号の有効無効に関わらず 常にロ ッ ク状態になろ う とします入力クロ ッ クが安定していない場合にはCLKIN 入力が安定するまでFPGA 回路 で RST 入力をアサートする必要があ り ますDLL では CLKIN 入力および CLKFB 入力の両方を使用し これらの立ち上がりエッジが同位相である時に完全にロ ッ ク状態であるこ とを確認しますDFS ではCLKINを使用してク ロ ッ クの周波数が有効であるかを確認します また DCM がロ ッ ク状態になるために数千クロ ッ ク サイクルのサンプルが必要となる場合があ り ます

DCM の CLKIN に対するロッ クが完了する とLOCKED 出力が High にアサート されDCM のクロ ック出力が有効となるため FPGA アプリ ケーシ ョ ン内でこれらの出力を使用できます 『Spartan-3 データ シート 』 の タイ ミ ングに関する章には ロ ッ クに必要な時間のワース ト ケースが記載されています通常 クロ ッ ク周波数が高いほどDLL 出力は短時間でロッ ク状態になり ます またDFS 出力がロックするためには非常に長い時間が必要とな り ます この時間は 逓倍または分周の係数によって変化し

ますが これらの係数が小さいほど時間は短縮します

システム ク ロ ッ クが安定してから FPGA のコンフ ィギュレーシ ョ ンを完了させるために オプシ ョ ンと して DCM がロ ッ ク状態になるまでコンフ ィギュレーシ ョ ンの完了を遅らせるこ とができます この機能は STARTUP_WAIT 属性で制御します

LOCKED が High になる前の DCM ク ロ ッ ク出力信号の動作は保証していません LOCKED が Highになる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な波形が含まれている場合があ ります

表 8 周期ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_PER_JITT_FX_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_FX_HF~ plusmn1000 ps (plusmn1 ns)

遅延ロッ ク ループ (DLL) CLKIN_PER_JITT_DLL_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_DLL_HF~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 9 外部フ ィードバック パス遅延範囲

解説 指定範囲

チップ外にある CLKFB フ ィードバッ ク パス遅延の最大許容範囲 CLKFB_DELAY_VAR_EXT ~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

RST 入力

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 17

R

CLKIN 入力の周波数が指定範囲内である場合DCM は内部遅延のタップを調整し ロ ッ ク状態を維持しますが その制限を大幅に満たしていない場合には ロ ッ ク状態が解除され LOCKED 出力が Lowになり ます

一度 DCM のロ ッ ク状態が解除される と 自動的に再びロッ ク状態に戻るこ とはあ り ません ロ ッ ク状態が解除された場合つま り LOCKED が High から Low となった場合にはFPGA アプリ ケーシ ョ ンでは RST 入力を使用して DCM を リセッ トするなどの適切な方法を使用して 再びロ ッ ク状態にする必要があ り ます

RST 入力 非同期の RST 入力は DCM ロジッ クを リ セッ ト してコンフ ィギュレーシ ョ ン後の設定に戻しますRST ピンはFPGA を再コンフ ィギュレーシ ョ ンする場合または許容範囲を超えている入力周波数を変更する場合に使用して ください このピンはアクティブ High であ り ダイナミ ッ ク信号またはグランドに接続する必要があ り ます また RST 入力は最低 2ns 間アサート しなければなり ません

コンフ ィギュレーシ ョ ン後に 入力ク ロ ッ ク周波数が安定していない場合 ク ロ ッ クが安定するまで

RST をアサー ト して ください また 外部フ ィードバッ クを使用している場合は コンフ ィギュレーシ ョ ン直後に DCM を リセッ ト します31ページの図 20 に SRL16 シフ ト レジスタ プリ ミ ティブを使用した リセッ ト方法の例を示します

LOCKED 周波数が High から Low になる場合のよ うに DCM のロ ッ ク状態が解除される と FPGAアプリ ケーシ ョ ンでは RST をアサート しDCM に入力クロ ッ ク周波数に対して再ロ ッ ク させる必要があ り ます

図 5 LOCKED 出力の機能的な動作

LOCKED HIGH

FPGA RST

Y

N

Y

N

FPGA

LOCKED LOW

CLKIN

LOCKED LOW

RST

x462_05_062103

CLKIN

RST

RST

18 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

DCM の LOCKED 出力が High の場合 RST がアサート される と この LOCKED 出力は 4 ク ロ ッ クサイ クル以内に Low になり ます このため リセッ ト後は DCM を再びロ ッ ク状態にさせます

また RST をアサートするこ とによって DCM の遅延タップ位置がゼロに戻り このタ ップ位置を変更するこ とによってDCM のクロ ッ ク出力ピンでグ リ ッチが発生する可能性があ り ます 同様にRSTはクロ ッ ク出力のデューティ サイクルにも影響を与えます

さ らに RST がアサート される と現在の可変位相シフ ト値は PHASE_SHIFT 属性で指定された値に戻り ます

DCM Wizard DCM を使用するアプリ ケーシ ョ ンを容易にするために ザイ リ ンクス ISE には 順を追って DCM を設定できるソフ ト ウェア Wizard が含まれています 図 6 に示すよ うに DCM Wizard を使用するこ とによってVHDL 構文または Verilog 構文で DCM をインスタンシエートするベンダ固有のロジッ ク合成ファイルを生成できます また DCM Wizard では特定のインプリ メンテーシ ョ ン用にユーザー制約ファイル (UCF) を生成できますさ らにすべてのユーザー仕様はXilinx Architecture Wizard (XAW)設定ファイルに保存されます

DCM Wizard の起動DCM Wizard を起動するためにはWindows のスタート ボタンから起動するまたはザイ リ ンクス ISEProject Navigator ソフ ト ウェアから起動する という 2 つの方法があ り ます

Windows のスタート ボタンから起動

DCM Wizard を Windows スタート ボタンから起動する場合は[スタート ] rarr [すべてのプログラム] rarr[Xilinx ISE 5] rarr [アクセサリ ] rarr [Architecture Wizard] をク リ ッ ク します 図 7 に設定ウ ィンド ウを示します

bull DCM のオプシ ョ ン設定を保存する Xilinx Architecture Wizard (xaw) ファ イル名を入力します

bull こ こで [Browse] ボタンをク リ ッ ク して xaw ファ イルを選択するこ と も可能です

bull 出力ファイルのロジッ ク合成言語を VHDL または Verilog から選択します

bull ロジッ ク合成ツールを選択します DCM Wizard では 指定した合成ツールに応じて ベンダ固有の出力ファイルが生成されます

bull ターゲッ ト デバイスに Spartan-3 を選択します

図 6 DCM Wizard の DCM 設定用グラフ ィ カル インターフェイス

DCM Wizard

User contraintsfile (UCF)

Vendor-specificVHDL or Verilog

Xilinx ArchitectureWizard (XAW)

settings file

Graphically configure aSpartan-3 Digital ClockManager (DCM)

x462_06_061803

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 19

R

Project Navigator から起動

Project Navigator のメニュー バーから または [Sources in Project] ウ ィンド ウから DCM Wizard を起動できます メニュー バーで [Project] rarr [New Source] を選択するか [Sources in Project] ウ ィンドウで右ク リ ッ ク し [New Source] を選択してください

図 8 に示すよ う に リ ス ト か ら [Architecture Wizard] を選択し ます Xilinx Architecture Wizard(xaw) ファ イル名を入力し そのファイルを保存するディ レク ト リ を選択した後 [Next] をク リ ッ クします

図 7 Architecture Wizard の設定

図 8 Project Navigator での Architecture Wizard 設定

Xilinx Architecture Wizard Setup

My_Spartan-3 Browse

XAW File

Output File Type

VHDL Verilog

XST

Synthesis Tool

XC3S1000-FT256-4 Select

OK Cancel

Part

DCM

Spartan-3

[OK]

x462_07_061803

New

User DocumentVHDL ModuleCoreGen IPSchematicVHDL LibraryVHDL PackageVHDL Test BenchTest Bench WaveformBMM FileMEM FileImplementation Constraints FileArchitecture WizardState Diagram

My_Spartan-3

F ile Name

MyDirectory

Lo cation

Add to Project

lt Back Next gt Cancel Help

DCM

[Next]

Architecture Wizard

x462_08_061803

20 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

Wizard 選択前述した手順はすべての ISE Architecture Wizard に共通ですが Spartan-3 FPGA は図 9 に示す DCMWizard をサポート します こ こで [OK] をク リ ッ ク し 次に進みます

[General Setup] 図 10 に示すよ うに ほとんどのオプシ ョ ンは DCM Wizard の [General Setup] ダイアログ ボッ クスで設定します 楕円の枠内には その設定に対応する DCM プリ ミ ティブ属性名を示します

bull DCM のインスタンス名を入力します このインスタンス名は Verilog または VHDL 出力ファイル内で使用されます

bull 最終的なアプリ ケーシ ョ ンにおける出力および機能を選択するためには 必要な DCM ク ロ ッ ク出力のチェッ ク ボッ クスをオンにします チェッ ク ボッ クスをオンにした出力に対しては それに関連したオプシ ョ ンの設定が可能になり ます

bull CLKIN ク ロ ッ ク入力の周波数を入力します 周波数を MHz で指定するかまたはクロ ッ ク周期をns で指定して ください この値によって DCM の DLL_FREQUENCY_MODE 属性が設定されます

bull CLKIN ソースが FPGA の内部であるか外部であるかを指定します[External] を選択した場合DCM Wizard は自動的にグ ローバル バッ フ ァ入力 (IBUFG) プ リ ミ テ ィ ブを挿入し ます[Internal] を選択した場合は ソース信号は HDL ソース ファ イル内の ト ップ レベル入力となり ます

bull CLKDV 出力をオンにした場合は クロ ッ ク分周回路の [Divide by Value] 値を指定します この値によって DCM の CLKDV_DIVIDE 属性が設定されます

bull DCM へのフ ィードバッ ク パスを指定します CLKFX 出力または CLKFX180 出力のみを使用する場合は [None] を選択します これらの出力を使用しない場合は フ ィードバッ クが必要ですFPGA 内部からのフ ィードバッ クを使用する場合は [Internal] を選択し外部からのフ ィードバック ループを使用する場合は [External] を選択します さ らに DCM フ ィードバッ クのソースをCLK0 (1X) または CLK2X (2X) から選択します この選択によってDCM の CLK_FEEDBACK属性が設定されます

図 9 Spartan-3 FPGA でのみ選択可能な DCM Wizard

Xilinx Architecture Wizard Selection

DCM Wizard

OK Cancel

Select Wizard

Spartan-3 DCM Wizard [OK]

x462_09_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 21

R

bull すべての DCM 出力における位相シフ トの有無を指定します デフォルト設定は位相シフ ト なし (None) です 位相シフ トが必要な場合は 位相シフ ト値と して [Fixed] または [Variable] を選択します [Variable] を選択するこ とによって 動的位相シフ ト制御 PSEN PSINCDECPSCLK および PSDONE が使用可能となり DCM の CLKOUT_PHASE_SHIFT 属性が指定されます Fixed モードおよび Variable モードのいずれを選択する場合でも 固定位相シフ ト値あるいは動的位相シフ トの初期値を決定する [Phase Shift Value] を指定します この値によってDCM の PHASE_SHIFT 属性が設定されます

bull アドバンス ド オプシ ョ ン ウ ィンド ウを開く場合は [Advanced] ボタンをク リ ッ ク します

bull 設定の完了後 [Next] をク リ ッ ク し ク ロ ッ ク バッファ ダイアログ ボッ クスに進みます

アドバンスド オプシ ョ ン図 11 に示すアドバンス ド オプシ ョ ン ウ ィンド ウで さ らに詳細な DCM オプシ ョ ンを設定できます

bull デフォルトではDCM は FPGA のコンフ ィギュレーシ ョ ンに対して影響を与えませんが [Yes] をク リ ッ ク した場合は DCM が LOCKED 出力をアサートするまで FPGA コンフ ィギュレーシ ョンで DONE 信号のアサート を遅らせるこ とができます この設定は DCM の STARTUP_WAIT属性で定義します このよ うに [Yes] を選択した場合は ビッ ト ス ト リーム生成オプシ ョ ンの追加

図 10 [General Setup] ダイアログ ボックスでの DCM オプシ ョ ン設定

Xilinx DCM Wizard - General Setup

MY_DCMDCM Instance Name

Input Clock Frequency

MHz ns 2

Phase Shift Value

30

Advanced

Source

CLK0

CLK90

CLK180

CLK270

CLKDV

CLK2X

CLK2X180

CLKFX

CLKFX180

LOCKED

STATUS

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDECPSCLK

CLKIN SourceInternal

External

Divide By Value

FeedbackInternal External None

Value 1X 2X

Duty Cycle Correction

Yes No

Phase ShiftNone Fixed Variable

23 More Info

lt B ack Next gt Cancel

DCM

CLKFX CLKFX180

CLKDV

MHz ns

Advanced

(BUFG)

[Yes] CLK0CLK90 CLK180 CLK270

50CLK0 (1X)CLK2X (2X)

[Next]

CLKDV

[Fixed] PSEN PSINCDECPSCLK

[Variable]

DLL_FREQUENCY_MODE

CLK_FEEDBACK

CLKDV_DIVIDE

CLKIN IBUFG

[External][Internal]

DUTY_CYCLE_CORRECTIONCLKOUT_PHASE_SHIFT

DCM

PHASE_SHIFT

x462_10_061803

22 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

変更が必要です この変更については 「DCM LOCKED 出力と コンフ ィギュレーシ ョ ン ロジッ クの設定」 で説明します

bull ある特定の DCM において CLKIN 入力の周波数が高すぎる場合には [Divide Input Click by 2]の [Yes] をク リ ッ ク し 入力周波数を半減させて ください これによって DCM ブロ ッ クに入力前のデューティ サイ クルは約 50 にな り ます この設定は DCM の CLK_FEEDBACK 属性で定義します

bull ソース同期のデータ転送が必要なアプリ ケーシ ョ ンでは [DCM Deskew Adjust] 値を [SOURCE_SYNCHRONOUS] に変更します SOURCE_SYNCHRONOUS または SYSTEM_SYNCHRONOUS 以外の値を使用する場合はザイ リ ンクスにお問い合わせください この設定は DCM の CLK_FEEDBACK 属性を定義します 「スキュー調整」 を参照して ください

bull [OK] をク リ ッ ク し 変更を適用して [General Setup] ウ ィンド ウに戻り ます

クロック バッファ次に DCM の各クロ ッ ク出力に対するクロ ッ ク バッファを定義します(図 12 参照) DCM Wizard のデフォルト設定では 自動的にすべての DCM ク ロ ッ ク出力にグローバル バッファ (BUFG) を使用しますが Spartan-3 デバイスでは 上辺および下辺のそれぞれにある 4 つのグローバル バッファを同一辺にある 2 つの DCM で共有しますXC3S50 では上辺または下辺に 1 つの DCM があ り オプシ ョ ンと して同じ辺にある 4 つのクロ ッ ク バッファすべてに接続できます

bull [Clock Buffer Settings] にある [Customize] をク リ ッ ク し DCM の各クロ ッ ク出力にクロ ッ クバッファの種類を指定します

bull DCM の各クロ ッ ク出力に対して リ ス トから [Clock Buffer] 出力タイプを選択します 表 10 に選択可能なクロ ッ ク バッファ オプシ ョ ンを示します

bull [Enabled Buffer] 出力タイプを使用する際にはバッファ イネーブル (CE) 入力の信号名を指定できますが 自動的に作成された信号名も使用できます

bull [Clock Mux] 出力タイプを使用する場合もセレク ト (S) 入力の信号名を指定できますが自動的に作成された信号名も使用できます

bull [Next] まはた [Finish] をク リ ッ ク し 設定を完了します [Next] ボタンが表示されるのは[General Setup]ダイアログ ウ ィ ン ド ウで CLKFX 出力または CLKFX180 出力を選択した場合のみです それ以外の場合は [Finish] をク リ ッ ク し HDL 出力を生成します ( 「HDL 出力の生成」を参照して ください)

図 11 DCM アドバンスド オプシ ョ ン設定

Xilinx DCM Wizard Advanced

Wait for DCM lock before DONE signal goes high

Yes No

Divide Input Clock by 2

Yes No

SYSTEM_SYNCHRONOUS

OK Cancel

DCM Deskew Adjust

CLKIN 12

FPGA

DONEDCM

DCM

[OK]

DCM

STARTUP_WAIT

CLKIN_DIVIDE_BY_2

DESKEW_ADJUST

x462_11_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 23

R

図 12 DCM Wizard を使用した DCM 出力のバッファ オプシ ョ ン設定

Xilinx DCM Wizard - Clock Buffers

This dialog sets up the clock buffers for all the DCM clock outputs selected in the GeneralSetup dialog

Clock Buffer Settings

U se Global Buffer (BUFG) for all selected DCM clock outputs

C ustomize (using grid below)

Reference the lsquoMore Inforsquo button for more information on customizing the global buffers

M ore Info

lt Back N ext gt Cancel

Clock Buffer Input I0 Input I1 Input CES

Global Buffer CLK0

Enabled Buffer CLK90 CLK90_ENABLE_IN

Clock Mux CLK2X180 CLKFX CLKFX_SELECT_IN

Lowskewline CLK180

Local Routing CLK270

CLK2XGlobal BufferGlobal Buffer

Enabled BufferClock MuxLowskewlineLocal RoutingNone

Output O

CLK0_OUT

CLK90_OUT

CLKFX_OUT

CLK180_OUT

CLK270_OUT

CLK2X_OUT

DCM Wizard

BUFG

DCM

DCMFPGA

FPGA

[Next]

x462_12_061703

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

グローバル バッファ

4 つあるグローバル バッファ (BUFG) の 1 つを同じ辺にある DCM に接続します

イネーブル バッファ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク バッファ (BUFGCE) と して設定しているバッファに接続します CE 入力は High の場合にバッファをイネーブルにしLow の場合は バッファ出力がゼロになり ます

BUFGI0 O

BUFGCEI0 O

CE

CE O

0 0

1 I0

24 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

クロック周波数合成

図 13 に示すク ロ ッ ク周波数合成ダイアログ ボッ ク スは [General Setup] ダイアログ ウ ィ ン ド ウでCLKFX 出力または CLKFX180 出力を選択した場合のみに表示されます

こ こでは必要な出力周波数 または逓倍および分周の係数を指定します [Valid Ranges for SelectedSpeed Grade] で周波数範囲 (CLKIN を ns で指定した場合は遅延) を指定します 周波数範囲にはDFS_FREQUENCY_MODE 属性で設定可能な両方の値が表示されます DCM で DLL に関係したクロ ッ ク出力を使用する場合 この範囲条件はよ り厳し くな り ます

bull [Use output frequency] のチェッ クをオンにし MHz または ns で周波数を入力します [Calculate] をク リ ッ クする と CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性の値が算出されます 入力した範囲から可能な逓倍値および分周値を算出できない場合は DCM Wizard で別の出力周波数値を入力するよ うに求めるエラー メ ッセージが表示されます ソ リ ューシ ョ ンがある場合は [Generated Output] に逓倍値 分周値 およびジッ タの値が表示されます ( 「ク ロ ック ジッタおよび位相ノ イズ」 を参照してください)

bull オプシ ョ ンと して[Use Multiply (M) and Divide (D) values] のチェッ クをオンにしこれらの値を入力でき ます [Calculate] を ク リ ッ ク し 出力周波数およびジ ッ タ を計算し ます 結果は[Generated Output] に表示されます

bull 最後に[Finish] をク リ ッ ク しHDL 出力を生成します (「HDL 出力の生成」を参照してください)

ク ロ ッ ク マルチプレクサ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク マルチプレクサ (BUFGMUX) として設定しているバッファに接続します S 入力はクロ ッ ク ソースを選択します

低スキュー ライン 低スキューのプログラマブル相互接続に接続します

ローカル配線 スキューが重要ではない場合において ローカル相互接続に接続します

なし DCM 出力をディ スエーブルにします

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

O

S

BUFGMUXI0

I1 S O

0 I0

1 I1

I0

I0

VHDL および Verilog のインスタンシエーシ ョ ン

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 25

R

HDL 出力の生成すべてのパラ メータを入力後 [Finish] をク リ ッ クする と 図 14 に示すよ うに DCM Wizard が自動的に VHDL または Verilog HDL 出力ファイルを生成します また ユーザー制約ファイル (UCF) も生成されます

VHDL および Verilog のインスタンシエーシ ョ ン

DCM Wizard を使用し VHDL または Verilog HDL 記述を作成する方法が最も容易ですが VHDLソースおよび Verilog ソースも利用できます

Project Navigator の言語テンプレート

ISE 52i およびそれ以降の Project Navigator では DCM の言語テンプレートが使用できます DCMテンプレート を選択する場合はProject Navigator のメニューで [Edit] rarr [Language Templates] をクリ ッ ク します 図 15 に示すテンプレー ト で Verilog フォルダまたは VHDL フォルダを展開表示し

図 13 デジタル周波数合成の逓倍値と分周値の設定 およびジッ タの算出

Xilinx DCM Wizard - Clock Frequency Synthesizer

Valid Ranges for Selected Speed Grade

Inputs for Jitter Calculations

U se output frequency

M Hz ns875

U se Multiply (M) and Divide (D) values

4M 1D

Input Clock Frequency 30 ns C alculate

lt Back Finish Cancel

More Info

Generated Output

MOutput

Frequency(MHz)

29 111

Period Jitter(pk-to-pk ns)

D

11 875

Period Jitter(unit interval)

010

DFSMode

Fin (MHz)

Low

High

24000 - 18]0000

50000 - 270000

24000 - 210000

210000 - 270000

Fout (MHz)

MHz ns[Calculate]

DCM Wizard (M)

(D)

(M)(D)

[Calculate]

[Calculate]

[Finish]

DCM

CLKFX_MULTIPLY CLKFX_DIVIDE

CLKFX_MULTIPLY CLKFX_DIVIDE

DFS_FREQUENCY_MODE

x462_13_061803

図 14 DCM Wizard での VHDL または Verilog HDL 出力ファイルの生成

Xilinx Architecture Wizard

Cancel

Generating HDL file

x462_14_061803

26 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

Component Instantiation フォルダの DCM フォルダを選択します 次にDCM フォルダにある DCMソース ファ イルを選択する と 隣接したウ ィンド ウにソース ファ イルが表示されます

このファイルは参照用と して または内容を新規ソース ファ イルに貼り付けて使用できます

VHDL および Verilog リファレンス ファイル

また この VHDL および Verilog のソース ファ イルは 次のザイ リ ンクス FTP サイ トからダウンロードできます

bull VHDL DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_vhdlzip

bull Verilog DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_verilogzip

クロック スキューの低減

スキューの低減はDCM の基本的な機能の 1 つです 50 MHz 以上の速度で動作するデザインではクロ ッ ク スキューの低減が重要であ り このク ロ ッ ク スキューの低減に関連する概念は DCM を使用したその他のアプリ ケーシ ョ ンにも応用できます

クロック スキューとはク ロ ッ ク スキューは本質的にすべての同期システムに存在します ク ロ ッ ク ソースによって生成されたクロ ッ ク エッジは システム内の異なる点に 異なる時間に到達します これは 1 つのデバイス内の場合も クロ ッ クで接続された異なるデバイスへのクロ ッ ク入力の場合もあ り ます こ こで発生する到達時間の差がクロ ッ ク スキューです

図 16 に 同期システムにおけるクロ ッ ク スキューの例を示します ク ロ ッ ク ソースによって ク ロ ック入力が FPGA へ駆動され FPGA 上の入力ピンに入る と 内部の低スキュー グローバル ク ロ ッ クネッ ト ワークを使用して分配され FPGA 内部のフ リ ップフロ ップに到達します ク ロ ッ ク パスにある各エレ メン トによって フ リ ップフロ ップにクロ ッ ク エッジが到達する時間に遅延が生じます その結果と して フ リ ップフロ ップにおけるク ロ ッ ク入力 (B) で遅延が発生する つま り ク ロ ッ ク ソース (A)と比較してスキューが発生します この例では ク ロ ッ ク スキュー つま り到達時間の差を ∆b と します

図 15 Project Navigator 言語テンプレートでの DCM デザインの選択

Language Templates

Verilog

Component Instantiation

Block RAM

CLK0

CLK0_FB

CLK2X

Templates Module BUFG_CLK0_SUBM Description Verilog Submodule DCM with CLK0 deskew-

module BUFG_CKL0_SUBM ( CLK_IN RST CLK1X LOCK

DCM

x462_15_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 27

R

同様に ク ロ ッ ク ソースは FPGA 内部で再びバッファを介し ボード上にある別のデバイスを駆動します この例では クロ ッ ク ソースは再び入力ピンを通って FPGA に入り グローバル ク ロ ッ ク ネット ワークで分配され FPGA の出力ピンを通って PCB 上のト レースで別のデバイスに接続されますそのため ク ロ ッ ク パスにおける総遅延が大き くな り その結果と して発生するスキュー ∆c も大き くな り ます

クロック スキュー パフォーマンス低下の原因ク ロ ッ ク スキューによって セッ ト アップ時間 および clock-to-output 遅延が増加し ク ロ ッ ク サイクル時間が長くなるため デザインのパフォーマンス全体が低下する可能性があ り ます また ク ロ ッ クスキューによって 長いホールド時間が必要となる場合があ り このホールド時間を確保できない場合

には 不安定な動作を引き起こす可能性があ り ます

スキューの削除

ク ロ ッ ク スキューを削除する方法はあるのでし ょ う か 幸いにも デジタル ク ロ ッ ク マネージャ(DCM) はこのよ うな機能を備えています 図 17 に図 16 と同様の例を示しますがこ こでは Spartan-3 デバイスを使用しています 2 つの DCM によって次のよ うにクロ ッ ク スキューが削除されます 1つの DCM がFPGA 内部でクロ ッ ク入力されたものからのスキューを削除しも う一方の DCM が ボード上で別のデバイスにクロ ッ ク入力する場合のスキューを削除します この結果 (A) (B) および (C)のすべての点で理想的なクロ ッ ク間のアライ メン ト を実現できます

実際には ク ロ ッ ク スキューはどのよ うに削除されるのでし ょ うか ク ロ ッ ク スキューの原因は クロ ッ ク パスにおける遅延である こ と を思い出して ください 図 17 では (B) のク ロ ッ クで ∆ 分のスキューがあ り (C) のクロ ッ クに ∆c 分のスキューがあ り ましたが ク ロ ッ クを (B) に ∆b 分早く到達させ (C) に ∆c 分早く到達させる方法がある場合には どのよ うになるでし ょ うか このよ う な場合にはすべてのクロ ッ クのエッジが一致するよ うに調整されセッ ト アップ時間および clock-to-output 遅延が減少するため システム全体のパフォーマンスが向上します

図 16 すべての同期システムに存在するクロック スキュー

OtherDevice on

Board

FPGA

c b

A

A

C

B

B

C

x462_16_062403

28 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

過去のクロック動作から将来のクロック動作を予測

Spartan-3 FPGA は非常に高度なデジタル ロジッ クを使用していますが 将来の動作を予測するこ とはできません だたし DCM は過去のクロ ッ ク動作を使用し 将来のク ロ ッ ク動作を予測するために役立てます システムに入力されるほとんどのクロ ッ クの周波数は 不変で単調であるため 入力クロ ックの周期 (T) もほぼ一定になり ます

マイナスの遅延を挿入し ク ロ ッ ク スキューの影響を無効にするこ とはできないため DCM は目的としている時間に到達しているよ うに見えるよ うにクロ ッ クを遅らせます これは どのよ うに行われるのでし ょ うか ク ロ ッ ク サイクルは一定の周期 (T) で繰り返されます 図 18 に示すよ うに (B) におけるクロ ッ クは ∆b 分進んでいるよ うにみえますが 実際には (T ndash ∆b) 分遅くなっています 同様に(C) におけるクロ ッ クは (T ndash ∆c) 分遅れています

図 17 Spartan-3 デザインにおけるクロック スキューの削減

図 18 一定周波数のクロックを遅延させる

OtherDevice on

Board

Spartan-3 FPGA

DC

M

Ideal Clock Alignment

b

cEarly Clocks Eliminate Skew

A

B

C

A

B

C

DC

M

A

B

C

x462_17_062403

c

b

Clock Period (T)

Delay=T- b

Delay=T- c

A

B

C

x462_18_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 29

R

入力クロ ッ ク信号は単調であるため ク ロ ッ ク周期 (T) は容易にわかり ますが ク ロ ッ ク スキュー遅延である ∆b および ∆c はど うでし ょ うか 異なる条件の元で複数のシステムにおける動作を詳細に検証するこ とによって これらの値を決定するこ と もできますが 実際には現実的である とは言えません

さ らに ∆b および∆c の値はデバイスによって異なり 同一のデバイス上でも温度または電圧によって変化します

Spartan-3 DCM では ∆b および ∆c をあらかじめ決定するのではなく フ ィードバッ ク ループによって遅延を確認する遅延ロッ ク ループ (DLL) を使用します (図 17 を参照してください) こ こで示している例では 2 つの DCM を使用して 1 つの DCM が内部信号のスキューを削減し も う一方の DCMが外部デバイスへの信号のスキューを削減します また 両方の DCM に各ク ロ ッ ク フ ィードバッ クループがあ り ます DLL は温度または電圧によって引き起こ されるわずかな変更にも適応します

ターゲッ トのロック

適切な遅延を決定し挿入するためにはDCM で数千クロ ッ ク サイ クルのサンプルが必要です DCMで適切な遅延が挿入される と LOCKED 出力信号がアサート されます

DCM で LOCKED 信号がアサート されるまでDCM ク ロ ッ ク出力は使用しないでください DCM が入力クロ ッ ク信号に対してロ ッ ク状態になるまでのク ロ ッ ク出力は無効です DCM がロ ッ ク状態になる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な要素が含まれている可能性があ り ます

アプリ ケーシ ョ ンではLOCKED 信号を出力クロ ッ クが有効であるこ とを確認するために使用しますLOCKED 信号をクロ ッ ク信号が使用可能な状態であるこ とを示すものと して理解してください

安定した単調なクロック入力

DCM が適切に動作するためには 安定した単調なクロ ッ ク入力が必要です そのよ う なク ロ ッ ク入力によって ク ロ ッ ク周期を予測でき出力クロ ッ クのタイ ミ ングを適切に調整できます DCM はいったんロ ッ ク状態になる と『Spartan-3 データ シート 』 で指定された値までのクロ ッ ク周期変動に対応できます 「DCM 使用のためのクロ ッ ク条件」 を参照して ください

入力ク ロ ッ ク周波数が変動して指定された範囲外と なった場合 DCM のロ ッ ク状態が解除されLOCKED 出力は Low になり ます ロ ッ ク状態が解除された場合 DCM を リセッ ト して再びロ ッ クする必要があ り ます 入力クロ ッ クが指定された制限を満たしている場合はLOCKED 出力が High である限り出力クロ ッ クは常に有効です しかし LOCKED 出力は High を維持していますが クロ ッ ク入力が指定された範囲外で CLKDV 出力または CLKFX 出力が無効となる場合があるため問題のないデザインを作成するためには 安定した単調なクロ ッ ク入力が重要です

DCM CLKIN 入力へのパスと して 4 つのグローバル バッファ入力 (IBUFG) のうち デバイス上で同一辺にあるバッファ入力の 1 つを使用する こ と を推奨します IBUFG パスを使用する こ とによってパッ ドからグローバル バッファを通って DCM に到達までの遅延がスキュー調整された出力から削除されます ただし 表 11 に示すその他のパスも使用できます また CLKIN 入力を駆動する信号は汎用相互接続を通る汎用入力ピン (IBUF プリ ミ ティブ) グローバル バッファ入力 (IBUFG) グローバル バッファ マルチプレクサ (BUFGMUX BUFGCE) からの入力と して使用できます 同様に LVDSク ロ ッ ク入力をクロ ッ ク入力と して使用できる場合もあ り ます スキュー調整ロジッ クはLVCMOS または LVTTL のよ うなシングル エンドのクロ ッ ク入力のために特性評価されています ただし 差動信号では IO タイ ミ ングによって わずかな位相エラーが発生する可能性があ り ます 特定の IO タイミ ングについては 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

30 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

確実なソースからのフ ィードバック

適切な遅延に対してロ ッ ク信号をアサートするために DCM は 入力クロ ッ クおよびクロ ッ ク分散遅延後にタ ップされるフ ィードバッ ク ク ロ ッ クの両方をモニタします ク ロ ッ ク フ ィードバッ ク パスにおける総遅延に制限はあ り ません DLL では 必要に応じて逓倍したク ロ ッ ク周期を使用する こ とによって出力クロ ッ クを遅らせます このよ うにDCM は内部遅延または外部遅延を相殺できますがクロ ッ ク フ ィードバッ クは適切なフ ィードバッ ク地点に接続する必要があ り ます

内部クロック信号からのスキュー削除

図 19 に示すよ うにFPGA 内部のスキューを削減する場合フ ィードバッ ク タ ップは FPGA 内部のエレ メン トに入力されるクロ ッ ク と同一のクロ ッ ク とな り ます 通常 フ ィードバッ ク ク ロ ッ クは デバイス上で DCM と同一辺にある ク ロ ッ ク バッファ (BUFG) またはグローバル ク ロ ッ ク マルチプレクサ (BUFGMUX または BUFGCE) に接続されている DCM からの CLK0 出力 (位相シフ ト なし ) ですまたは CLK0 出力ではなく DCM の CLK2K 出力 (位相シフ ト なし 2 逓倍) をフ ィードバッ ク と して使用できます

表 11 クロック入力ソース

CLKIN ソース 説明

グローバル バッファ入力を使用

グローバル バッファ入力 IBUFG は DCM への外部クロ ッ クのソースと して適切です パッ ドからグローバル バッファを通り CLKIN 入力までの遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

グローバル ク ロ ッ ク バッファ BUFG BUFGCE または BUFGMUX プリ ミ ティブを使用するグローバル ク ロ ッ ク バッファは内部生成された DCM へのクロ ッ ク ソース と して適切です グローバル バッファを通る際の遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

汎用 IO を使用 任意のユーザー IO IBUF は 外部クロ ッ クのソースと して使用できます パッ ドから DCM への遅延をあらかじめ決定するこ とはできません これは入力パスとなる可能性を持つパスが多数

存在するためであ り その結果 DCM は遅延を削除できません

内部ロジッ クから派生 FPGA 内部のロジッ ク も ク ロ ッ ク ソース と して使用できます しかしロジッ クから DCM への遅延をあらかじめ決定するこ とはできないため DCM は遅延を削除できません

I OIBUFG

BUFGI O

BUFGCEI O

CE

O

S

BUFGMUXI0

I1

I OIBUF

InternalLogic

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 31

R

外部クロック信号からのスキュー削除

外部クロ ッ クを使用した DCM フ ィードバッ クの設計は内部クロ ッ クの場合よ り も複雑です 図 20 に示すよ うに理想的にはフ ィードバッ ク ク ロ ッ クは PCB ト レースまたは外部クロ ッ クの再バッファの後のすべての外部クロ ッ クに入力される点から始ま り ます

LOCKED 信号は DCM がロ ッ ク状態になったこ と およびク ロ ッ ク信号が有効であるこ とを示します LOCKED 信号によって 外部デバイスが使用可能になり その反転バージ ョ ンはアクティブ Lowのチップ イネーブル信号に接続できます

コンフ ィギュレーシ ョ ン後の DCM リセッ ト

外部フ ィードバッ クを使用する場合 コンフ ィ ギュレーシ ョ ン直後に DCM の リ セッ ト をパルスしDCM のロ ッ ク状態を維持する必要があ り ます 図 20に示すよ うに0x000F で初期化された SRL16 から必要な リセッ ト パルス信号を出力できます 「RST 入力」 を参照して ください

なぜリセッ トする必要があるのか

なぜ このよ うに追加的な リセッ ト パルスが必要なのでし ょ うか 最適にロ ッ クするためには DCMをロ ッ ク状態にし その状態で安定させるために 外部フ ィードバッ クでコンフ ィギュレーシ ョ ンされ

た DCM で CLKIN および CLK0 または CLK2X のいずれかの信号を使用する必要があ り ます コンフ ィギュレーシ ョ ン実行中は FPGA の IO バッファがまだアクティブではないために 外部フ ィードバッ ク CLKFB を使用できません

コンフ ィギュレーシ ョ ンの終了時に デバイスがスター ト アップ シーケンスを開始する と DCM はキャプチャ プロセスを開始します この時点では FPGA のグローバル 3-ステート信号 (GTS) はアサー

図 19 内部クロック信号でのスキュー削減

I OBUFG

FPGA

(or BUFGMUX or BUFGCE)

( )

ldquoClock Goodrdquo

I OIBUFG

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)(

)

x462_19_061803

図 20 外部クロック信号でのスキュー削減

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)

I OOBUF

I OOBUF

FPGA

CLK

ENABLE

( )

RESETD

WCLK

A[30]

Q

INIT=000F

SRL16

I OIBUFG

I OIBUFG

x462_20_062203

32 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ト されているため すべての出力ピンは 3-ステート (ハイ -インピーダンス フローティング) 状態を維持しています このため CLKFB 信号のロジッ ク ステートはわかり ません

GTS のアサート状態の解除後CLKFB に信号が現れDCM が CLKFB 信号を取り込みますが リセット パルスがない場合 DCM が適切な時点でロ ッ ク しない可能性があ り DCM でジッタがわずかに増加し ク ロ ッ ク サイクル レイテンシも増加する可能性があ り ます

また リセッ ト パルスがない場合 PCB のシグナル インテグ リティの問題によって 3-ステート状態にある CLKFB 信号がボード上でほかの信号と ク ロス カップルする とい う問題が発生する可能性があり ます DCM では この無効なクロス カップルされた信号を CLKFB 信号と認識し ロ ッ クするためGTS 信号のアサートが解除され 適切な CLKFB 信号が現れたと きにロ ッ クできない場合があ り ます

遅延ロック ループとはク ロ ッ ク遅延を削除するための 2 つのタイプの回路

bull 遅延ロッ ク ループ (DLL)

bull 位相ロッ ク ループ (PLL)

DLL および PLL には クロ ッ ク分散遅延を削除する という機能以外に周波数合成 クロ ッ ク調整および位相シフ ト などの機能があ り ます

遅延ロック ループ (DLL)

図 21 に示すよ うに単純な形の DLL はタップ遅延ラインおよび制御ロジッ クで構成されます 遅延ラインは入力クロ ッ クCLKINに遅延を挿入したク ロ ッ クを生成し ク ロ ッ ク分散ネッ ト ワークでは そのクロ ッ クがすべての内部レジスタおよびクロ ッ ク フ ィードバッ ク CLKFB ピンに配線されます 一方制御ロジッ クは遅延ラインを調整するために常に入力クロ ッ クおよびフ ィードバック ク ロ ッ クをサンプルします 遅延ラインでは電圧制御遅延または不連続の遅延エレ メン トが使用されています 最適で安定したパフォーマンスを実現するために Spartan-3 DLL ではすべてのデジタル遅延ラインを使用します

DLL は入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クの立ち上がりエッジが調整されるまで それらのクロ ッ ク間に遅延を挿入し ク ロ ック周期から クロ ッ ク分散遅延分を差し引いた時間だけフ ィードバッ ク ク ロ ッ クを遅らせるこ とによって機能します DLL および PLLの専門的解説では フ ィードバッ ク ク ロ ッ クは 360deg 位相がずれたもの つま り同一の位相に再び現れるものと定義されています

入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クのエッジが調整される とDLL がロ ッ ク し これらの 2 つのクロ ッ ク間に認識できる差異はなくな り ます つま り DLL 出力クロ ッ クのクロ ッ ク分散ネッ ト ワークにおける遅延がなくな り ソース ク ロ ッ ク とそのロード間の遅延を効果的に削除されています

図 21 遅延ロック ループ (DLL) ブロック図

ClockDistributionNetwork

Control

VariableDelay Line

CLKOUT

CLKFB

CLKIN

x462_21_061903

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 33

R

スキュー調整

こ こでは主にスキューの削減方法およびクロ ッ ク ソースに対する内部クロ ッ ク と外部クロ ッ クの位相調整の方法について説明します 実際には DCM は DESKEW_ADJUST という属性を使用し 意図的にわずかなスキューを追加します DCM Wizard では アドバンス ド オプシ ョ ン ウ ィ ンド ウでこのDESKEW_ADJUST 属性を設定します

この属性には STEM_SYNCHRONOUS および SOURCE_SYNCHRONOUS という 2 つの基本的なアプリ ケーシ ョ ンがあ り ます 大多数のアプリ ケーシ ョ ンではSYSTEM_SYNCHRONOUS 設定を使用します 次に 各モードの目的を説明します

システム同期

図 23 に示すよ うに システム同期アプリ ケーシ ョ ンでは 1 つのデータ パスにあるすべてのデバイスが共通のクロ ッ ク ソースを使用します これが 従来の最も一般的なシステム構成です デフォルト設定である SYSTEM_SYNCHRONOUS オプシ ョ ンを選択する と データ キャプチャ時のホールド時間がゼロになるよ うに わずかなクロ ッ ク遅延が追加されます ホールド時間とは 基本的にベス ト ケースのデータ パスと ワース ト ケースのクロ ッ ク パス間の差です DCM のクロ ッ ク スキュー削減機能はクロ ッ クを進めるこ とによって動的にワース ト ケースのクロ ッ ク パスを短縮します しかし ク ロ ッ

位相ロック ループ (PLL)

PLL は DLL と同様の基本的な機能を持つよ うに設計されていますが異なるアーキテクチャを使用します 図 22 に示すよ うにPLLと DLL の根本的な違いは DLL が遅延ラインを使用するのに対して PLL では電圧制御オシレータを使用し CLKIN と同様のクロ ッ ク信号を生成します位相検出器およびフ ィルタで構成される制御ロジッ クは ク ロ ッ ク分散システムでの遅延を補う よ うにオシ

レータの周波数と位相を調整します PLL の制御ロジッ クは 入力ク ロ ッ ク と フ ィードバッ ク ク ロ ッ ク CLKFB を比較し 入力クロ ッ クの立ち上がりエッジがフ ィードバッ ク ク ロ ッ クの立ち上がりエッジと一致するよ うにオシレータのクロ ッ クを調整します その後 PLL はロッ ク状態になり ます

インプリ メンテーシ ョ ン

DLL および PLL 内部では アナログ回路またはデジタル回路のいずれかが使用され 各回路はぞれぞれに利点があ り ます 慎重な回路設計を行ったアナログ回路の場合 DLL または PLL ではよ り厳密にタイ ミ ングを調整でき 使用するシ リ コン エリ アが少なくなり ます

一方デジタル回路を使用した設計の場合 ノ イズ耐性が優れ消費電力が低く ジッ タのパフォーマンスよ り良いという利点があ り

ます また ク ロ ッ クを停止させるこ とができるため 電力管理が容易になり ます アナログ設計では 追加の電力供給が必要な場合があ りよ り正確に電源供給の制御を行う必要があるために新しい処理テク ノ ロジに移行する際に問題が発生する可能性があ り ます

DLL と PLL

アプリ ケーシ ョ ンで PLL または DLL を選択する場合は アーキテクチャの違いを理解するこ とが重要です PLL で使用されるオシレータは 本質的に不安定な状態であるため ク ロ ッ ク分散ネッ ト ワークの遅延を補う際に PLL のパフォーマンスが低下します 逆に常に安定している DLL アーキテクチャは遅延およびクロ ッ ク調整の機能の点では PLL よ り優れている一方で PLL はDLL より柔軟に新しいクロ ッ ク周波数の合成を行います

図 22 位相ロック ループ (PLL) ブロック図

ClockDistributionNetwork

Control

Voltage ControlledOscillator

CLKOUT

CLKFB

CLKIN

x462_22_061903

34 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ク パスを短縮するこ とによって ク ロ ッ クがデータの前に現れる場合には結果と してホールド時間が発生します SYSTEM_SYNCHRONOUS オプシ ョ ンを使用するこ とによってホールド時間がゼロになるために十分なスキューをクロ ッ ク パスに追加できる一方でclock-to-output 時間がわずかに増加します

ソース同期

SOURCE_SYNCHRONOUS モードは本来高速データ通信インターフェイスで使用される高度な設定です 図 24 に示すよ うに ソース同期アプリ ケーシ ョ ンではデータおよびクロ ッ クの両方が同一のクロ ッ ク ソースから派生します 送信デバイスは データおよびクロ ッ クを受信デバイスに送信し 受信デバイスはデータに対して最適なクロ ッ クが入力されるよ うにクロ ッ ク タイ ミ ングを調整します 高速デュアル データ レート (DDR) および LVDS 接続などがこのシステムの例です

SOURCE_SYNCHRONOUS 設定によって入力クロ ッ ク と DCM からのデスキュー出力クロ ッ ク間の位相をゼロにし 次に FPGA アプリ ケーシ ョ ンでは固定位相シフ ト モードまたは動的ファ イン位相シフ ト モードを使用してクロ ッ クのタイ ミ ングを調整します 次のアプリ ケーシ ョ ン ノートではソース同期デザインおよび動的位相調整について説明しています

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcomxappxapp622pdf

また 次のアプ リ ケーシ ョ ン ノート では システム レベルのタイ ミ ングについて詳細に解説しています このアプリ ケーシ ョ ン ノートはVirtex-II および Virtex-II Pro FPGA アーキテクチャについて説明するものですが ほとんどの概念を Spartan-3 FPGA に適用できます

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

タイ ミングの比較

図 25 にデュアル データ レート (DDR) アプリ ケーシ ョ ンで SYSTEM_SYNCHRONOUS 設定およびSOURCE_SYNCHRONOUS 設定を使用した場合のタイ ミ ング比較を示します DDR アプリ ケーシ ョンでは 各データ ラインに 2 つのデータ ビッ トが ク ロ ッ ク周期の前半および後半に各 1 つずつ現れます

図 23 共通のクロック ソースによってクロック入力されるシステム同期アプリケーシ ョ ン

図 24 データ ソースがデータ クロックを入力するソース同期アプリケーシ ョ ン

ClockSource

DATA_INDATA_OUT

x462_23_061903

ClockSource

DATA_INDATA_OUT

DATA_CLK

x462_24_061903

クロック調整

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 35

R

SYSTEM_SYNCHRONOUS モードではDCM のクロ ッ ク パスに適切なスキューが追加されホールド時間がゼロになり ます

これに対して SOURCE_SYNCHRONOUS モードでは DCM のクロ ッ ク パスにスキューは追加されませんが FPGA アプ リ ケーシ ョ ンでスキュー追加 または位相シフ ト が行われ ク ロ ッ クはデータウ ィンド ウにおいて理想的な位置で入力されます

クロック調整 ク ロ ッ ク調整とは 入力ク ロ ッ クのデューティ サイ クルが 50 以外の場合に 50 に調整する機能です 図 26 にHigh 時間が約 40 であ りLow 時間が約 60 (4060 デューティ サイクル) である入力ク ロ ッ クを ほぼ完全な 50 デューティ サイ クルを持つ入力クロ ッ クに調整する例を示します完全な 50 デューテ ィ サイ クル と な ら ない理由は CLKOUT_DUTY_CYCLE_DLL およびCLKOUT_DUTY_CYCLE_FX で指定されるデューティ サイ クルのずれが存在するためです これらの値は 『Spartan-3 データ シート 』 に記載されています デューティ サイクルのずれの概算値は 150ps未満です

クロ ッ クのデューティ サイクルが 50 であるこ とはVLDS またはデュアル データ レート (DDR) アプリ ケーシ ョ ンなどの高速通信インターフェイス ク ロ ッ ク転送アプリ ケーシ ョ ン またはクロ ッ ク ミラー アプリ ケーシ ョ ンにおいて不可欠な条件です 「デュアル データ レート (DDR) ク ロ ッ クの例」 を参照して ください

DCM では 自動的にほとんどのク ロ ッ ク出力のデューティ サイ クルが 50 に調整され それ以外の場合には動作条件または属性設定によって オプシ ョ ンと して調整されます 表 12 を参照して ください

図 25 デュアル データ レート (DDR) アプリケーシ ョ ンにおける SYSTEM_SYNCHRONOUS モードおよび SOURCE_SYNCHRONOUS モードのタイ ミング比較

SYSTEM_SYNCHRONOUS

DATA_IN

SOURCE_SYNCHRONOUS

SOURCE_SYNCHRONOUS+ Fixed or Dynamic Phase Shift

Data capture windowor data ldquoeyerdquo

x462_25_061903

図 26 DCM におけるデューテ ィ サイクル修正機能

CLKIN

ConditionedClock Output

50 50

40 60

x462_26_061903

36 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

14 位相シフ ト出力である CLK0 CLK90 CLK180 および CLK270 はDUTY_CYCLE_CORRECTION 属性を使用し ク ロ ッ ク調整を行う こ とができます デフォルトではDUTY_CYCLE_CORRECTION 属性は TRUE に設定され これらの出力は 50 デューティ サイクルに調整されます この属性を FALSE に設定する場合 クロ ッ ク調整は機能せず クロ ッ ク出力のデューティ サイクルは入力クロ ッ ク とほぼ同一になり ますが 完全に CLKIN のデューティ サイクルと一致するこ とは保証されていません

位相シフ ト - クロック周期の分数でクロックを遅延

また DCM ではクロ ッ ク周期の分数分だけ入力クロ ッ クを遅らせるこ とによって 位相をシフ ト させるこ とができます

DCM は 4 つの位相シフ ト タイプをサポート し各タイプを別々に使用するこ と またはほかの位相シフ ト タイプと組み合わせて使用するこ とができます 表 13 に 各クロ ッ ク出力での位相シフ ト機能を示します

1 ほとんどの 12 ク ロ ッ ク周期位相シフ ト出力では50 デューティ サイクル調整を行います 出力のペアの立ち上がりエッジは0degおよび 180deg位相シフ ト した位置またはクロ ッ ク周期の最初および 12 周期の位置にあ り ます

2 0deg(CLK0) 90deg(CLK90) 180deg(CLK180) および 270deg(CLK270) の 14 位相シフ ト出力ではオプシ ョ ンと して 50 デューティ サイ クル調整を行います

3 固定ファイン位相シフ トではすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

4 動的ファイン位相シフ トでは FPGA アプリ ケーシ ョ ン内部のすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

表 12 デューティ サイクルを 50 にするためのクロック出力調整

DCM クロック出力

50 デューティ サイクル出力

CLK0CLK90

DUTY_CYCLE_CORRECTION = TRUE

CLK180CLK270

CLK2XCLK2X180

CLKDV

CLKFXCLKFX180

常に

DLL_FREQUENCY_MODE 属性

LOW HIGH

DUTY_CYCLE_CORRECTION = TRUE 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に CLKDV_DIVIDE が整数値の場合

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 37

R

12 クロック周期位相シフ ト出力12 周期位相シフ ト出力では 位相シフ トのないク ロ ッ ク およびそのクロ ッ クを 12 周期シフ ト させた (180deg位相シフ ト ) ク ロ ッ クが出力されます 12 周期位相シフ ト出力は表 14 に示すよ うにペアで出力されます

表 13 クロック出力の位相シフ ト機能

クロック出力12 クロック周期

14 クロック周期

固定または動的

位相シフ ト

CLK0CLK90CLK180CLK270CLK2XCLK2X180CLKDVCLKFXCLKFX180

表 14 12 クロック周期位相シフ ト出力

出力ペア解説

位相シフ トなし 180deg位相シフ ト

CLK0 CLK180 周波数は CLKIN と同一です デフォルトで 50 デューティ サイクルに調整されDUTY_CYCLE_CORRECTION 属性に制御されます

CLK2X CLK2X180 2 逓倍クロ ッ ク (CLK2XCLK2X180) からの出力です周波数は CLKIN 周波数の 2 倍であ り デューティ サイ クルは常に 50 です

CLKFX CLKFX180 周波数合成回路 (CLKFX CLKFX180) からの出力です 出力周波数は周波数合成の属性によって決定されます デューティ サイ クルは常に 50 です

38 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

12 周期位相シフ ト出力は高速デュアル データ レート (DDR) デザインおよびクロ ッ ク ミ ラーなどのデューティ サイクルが重要となるデザインにとって理想的です 図 27 に示すよ うに12 周期位相シフト出力のペアの 1 つはクロ ッ ク周期の始めに立ち上がり も う 1 つはそのクロ ッ ク周期の半分の地点で正確に立ち上がり ます

12 周期位相シフ ト出力によるデューテ ィ サイクルのずれの削減

DCM のクロ ッ ク出力が 50 デューティ サイクルに調整された場合 180deg位相シフ ト ク ロ ッ クは位相シフ トのないクロ ッ クを反転させたよ うに見えます 低周波数アプリ ケーシ ョ ンでは 基本的にこれが成立します

しかし アプリ ケーシ ョ ンが非常に高い周波数で動作する場合は 各ト ランジスタの立ち上がり時間お

よび立ち下がり時間の差が原因となって発生するデューティ サイ クルのずれが FPGA 内部で問題となり ます つま り 始めはデューティ サイクルが 50 の場合でも ク ロ ッ ク サイクル間で常にクロ ッ クHigh と ク ロ ッ ク Low の間に差が生じます

デュアル データ レート (DDR) クロックの例

図 28 に DCM ク ロ ッ ク出力 CLKx が デュアル データ レート (DDR) 出力フ リ ップフロ ップの 2 つのクロ ッ クを駆動する例を示します DDR ク ロ ッ ク入力の 1 つはクロ ッ ク出力をそのまま使用しますが も う一方の入力は DDR フ リ ップフロ ップ内部でクロ ッ クを反転させます DCM からの CLKx 出力のデューティ サイクルは 50 ですが FPGA のクロ ッ ク ネッ ト ワークを伝搬する間にデューティサイ クルにずれが発生します こ こで示す例では このデューティ サイクルのずれによって ク ロ ッ クHigh 時間が短縮され ク ロ ッ ク Low 時間が長くな り ます その結果と してC1 ク ロ ッ ク入力はクロ ック周期の半分の時点よ り もわずかに前にト リガします 低周波数の場合 このずれは無視して問題あ りませんが 高性能の DDR ベースのシステムでは 正確なクロ ッ ク設計が必要です

図 27 12 周期位相シフ ト出力

180˚0˚

frac12T 1T

CLKx

CLKx180

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)

x462_27_061903

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 39

R

図 29 に 図 28 に若干の修正を加えた回路例を示します この例では DCM からの位相シフ ト していない出力および 180deg位相シフ ト した出力の両方が DDR 出力フ リ ップフ ロ ップに入力されますCLKx ク ロ ッ ク信号は ク ロ ッ ク周波数の開始時点で正確に DDR フ リ ップフロ ップの C0 入力を ト リガし CLKx180 ク ロ ッ ク信号はクロ ッ ク周波数の半分の時点で正確に C1 入力を ト リガします この方法を使用する場合には 追加のグローバル バッファおよびグローバル ク ロ ッ ク ラ インが必要になりますが 約 300 ps (この値は概算です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください) までのデューティ サイクルを削減できます

図 28 デュアル データ レート (DDR) 出力におけるデューティ サイクルのずれ

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx at Flip-Flop(with duty-cycle distortion)

Duty-cycle distortion

Factor in distortionwhen using a singleinverted clock

CLKx(50 duty cycle)

BUFGCLKx

DCM

CLKIN

x462_28_061903

40 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

表 15 に DDR 出力フ リ ップフロ ップおよび LVDS 出力を使用して測定したデューティ サイクルのずれの値を示します この出力タイプ以外では 立ち上がり時間および立ち下がり時間に差が生じるこ とによって さ らにずれが大き くなる可能性があ り ます このずれは IBIS を使用してシ ミ ュレーシ ョ ンを実行し 検証できます

14 位相シフ ト出力図 30 および表 17 に示すよ うに 14 位相シフ ト出力は CLKIN 入力を 14 周期分シフ ト させたものです 14 位相シフ ト出力には CLKFB 入力へ戻るフ ィードバッ ク パスが必要であるため CLK0 出力の位相は CLKIN 入力の立ち上がりエッジと一致するよ うに調整されます CLK90 出力は CLKIN 入力を90deg位相シフ ト させて生成したものであ り ほかの位相シフ ト出力も同様に生成されます

図 29 12 周期位相シフ ト出力を使用したデューテ ィ サイクルのずれの削減

CLKx at Flip-Flop(with duty-cycle distortion)

180 ˚Phase Shift

CLKx180 at Flip-Flop(with duty-cycle distortion)

CLKx(50 duty cycle)

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKIN

CLKx180

BUFG

BUFG

x462_29_061903

表 15 デューティ サイクルのずれのパラメータ

パラ メータ 説明 概算値

TDCD_CLK0 IO ブロ ッ クにある DDR エレ メン トに対して ク ロ ッ ク立ち下がりエッジでローカル反転したクロ ッ クを入力する場合のデューティ サイクルのずれです 図 28を参照してください

~400 ps

TDCD_CLK180 IO ブロ ッ クにある DDR エレ メン トに対して DCM CLKx180 をクロ ッ ク入力する場合のデューティ サイクルのずれです 図 29を参照してください

~60 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 41

R

DLL 周波数モードによる出力の有効性

14 位相シフ ト出力が有効であるかは DLL_FREQUENCY_MODE 属性で制御される DLL の周波数モードによって決定されます 表 16 に示すよ うに 低周波数モード (DLL_FREQUENCY_MODE=LOW) ではすべての 14 位相シフ ト出力が有効ですが高周波数モードでも有効な出力は CLK0 および CLK180 のみです

5050 デューティ サイクル調整オプシ ョ ン

オプシ ョ ン と して DUTY_CYCLE_CORRECT 属性を使用し 14 位相シフ ト出力を一括して 50デューテ ィ サイ クルに調整できます この属性が TRUE の場合 (デフォル ト ) 4 つの出力すべてのデューティ サイ クルが 50 にな り FALSE の場合は 各出力のデューティ サイ クルと CLKIN 入力のデューティ サイクルは一致しません 詳細は 「ク ロ ッ ク調整」 を参照してください

4 つの位相 遅延クロックエッジ 位相パルス

表 17 に示すよ うに 14 位相シフ ト出力は ぞれぞれ 1 つ前のパルスから 14 周期遅れた立ち上がりエッジで出力されます これらの出力は メモ リ インターフェイスおよびペリ フェラル制御などのアプリ ケーシ ョ ンにおけるタイ ミ ングを柔軟にします

また デューテ ィ サイ クル修正オプシ ョ ンがイネーブルの場合 (DUTY_CYCLE_CORRECTION =TRUE の場合) これらの出力を次のよ うに考えるこ とができますこれらの出力には 14 周期の間隔で

図 30 CLKIN 入力 の 14 周期位相シフ ト出力 (デューティ サイクル修正イネーブルの場合)

表 16 DLL 周波数モードによる 14 位相シフ ト出力の有効性

出力DLL_FREQUENCY_MODE

LOW HIGH

CLK0

CLK90

CLK180

CLK270

270˚180˚90˚0˚

frac14T frac12 T frac34T 1T

CLK0

CLK90

CLK180

CLK270

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)x462_30_061903

42 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

立ち下がりエッジがあ り ます (表 17 を参照) 同様に各出力には周期幅が同一である High パルス時間と Low パルス時間があるこ とになり たとえば 図 30 に示す CLK90 の High パルス部分は CLK0 クロ ッ ク周期の中央に位置しています

ファイン位相シフ ト

DCM では ファ イン位相シフ ト を使用するこ とによって ク ロ ッ ク スキューを制御するこ と もできます ファ イン位相調整はすべての DCM 出力に対して同時に機能します この位相調整にはDCM のDLL 機能ユニッ ト を使用するため CLKFB 入力を通るクロ ッ ク フ ィードバッ クが必要です

物理的には CLKIN と CLKFB の立ち上がりエッジ間の位相関係を調整するこ とによってシフ トが行われますが すべての DCM 出力が CLKIN 入力に関連して位相シフ ト されます

デフォルトでは ファ イン位相シフ トはディ スエーブル (CLKOUT_PHASE_SHIFT=NONE) です つま り ク ロ ッ ク入力は CLKIN で位相調整されています この場合 入力クロ ッ ク CLKIN と フ ィードバッ ク ク ロ ッ ク間におおよそのフ ィードバッ ク地点で計測されるスキューはあ り ません (「確実なソースからのフ ィードバッ ク」 を参照して ください) 図 31 に示すよ うに ファ イン位相シフ トがイネーブルの場合 出力クロ ッ クのエッジは位相シフ ト され CLKIN 入力の前または後になり ます

次にファイン位相シフ トの 2 つのモードについて説明します一般に高速データ通信アプリ ケーシ ョ ンでは 両方のモードが使用されます 「ソース同期」 を参照してください

1 固定ファイン位相シフ ト モードは位相シフ ト値を設計段階で設定します 位相シフ ト値はFPGAコンフ ィギュレーシ ョ ン実行中に取り込まれ アプリ ケーシ ョ ンで変更するこ とはできません

2 動的ファイン位相シフ トモードには 初期位相シフ ト値があ り 固定ファイン位相シフ トの場合と同様に この値は FPGA コンフ ィギュレーシ ョ ン中に取り込まれますが DCM の LOCKED 出力が High になった後であれば アプリ ケーシ ョ ンで変更可能です

固定ファイン位相シフ ト

固定ファ イン位相シフ ト モードでは 設計段階で指定されたシフ ト値が FPGA コンフ ィギュレーシ ョン実行中に設定され この値はアプリ ケーシ ョ ンで変更できません

このモードは 次の 2 つの属性によって制御されます CLKOUT_PHASE_SHIFT 属性が FIXED に設定し PHASE_SHIFT 属性が位相シフ ト量を制御します 図 31 に示すよ うに PHASE_SHIFT = 0 の場合は 出力ク ロ ッ クおよび CLKIN 入力の位相が一致する よ う 調整され ク ロ ッ ク出力はPHASE_SHIFT が負の整数の場合に CLKIN の前に位相シフ ト し正の整数の場合には CLKIN の後に位相シフ ト します

固定ファイン位相シフ ト範囲

PHASE_SHIFT 属性は常に整数値であ り その範囲は -255 ~ +255 ですが 実際の範囲は使用されるCLKIN の周波数によって異なり ます

表 17 14 位相シフ ト出力とそれらの特性 (DUTY_CYCLE_CORRECTION=TRUE)

DCM 出力 位相シフ トクロック周期

に対する遅延

立ち上がり

エッジ

立ち下がり

エッジ解説

CLK0 0deg 0 0 frac12T スキュー調整された入力クロ ッ ク 位相シフ ト なし

CLK90 90deg frac14T frac14T frac34T High パルス (frac34T 周期幅 周期の中央)

CLK180 180deg frac12T frac12T 0T CLK0 の反転 (立ち上がりエッジは周期の中央)

CLK270 270deg frac34T frac34T frac14T Low パルス (frac34T 周期幅 周期の中央)

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 43

R

PHASE_SHIFT 属性の範囲は 次の 2 つの値によって決定されます

1 1 つはナノセカンドで測定される CLKIN 入力の周期 である TCLKIN 値です

2 も う 1 つは Spartan-3 デバイスおよびスピード グレードによって指定される FINE_SHIFT_RANGE の値です この値は 『Spartan-3 データ シート 』 モジュール 3 に記載されています FINE_SHIFT_RANGE は 位相シフ ト遅延ラインにおける総遅延であ り 回路内の遅延タップ数の関数です 実際の遅延ラインは FINE_SHIFT_RANGE よ り長い場合があ り ますがFINE_SHIFT_RANGE までの値が保証されています

これらの値を 等式 1 に適用しSHIFT_DELAY_RATIO を算出します PHASE_SHIFT 属性の範囲はこの算出結果と 1 との不等式関係によって異なり ます

等式 1

SHIFT_DELAY_RATIO lt 1 の場合

ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り長い場合はSHIFT_DELAY_RATIO lt 1 であ り最大ファイン位相シフ ト範囲は FINE_SHIFT_RANGE によって決定されます SHIFT_DELAY_RATIO lt 1 の場合 PHASE_SHIFT 範囲は 等式 2 から求めるこ とができます

等式 2

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 PHASE_SHIFT 値は plusmn191 とな り ます

したがって SHIFT_DELAY_RATIO lt 1 の場合の位相シフ ト値は 等式 3 とな り ますPHASE_SHIFT = 1 と して ください

等式 3

図 31 固定ファイン位相シフ ト

0

Fixed Phase Shift- Limit

Fixed Phase Shift+ Limit

Clock Outputs

PHASE_SHIFT CLKIN DCM

CLKIN

x462_31_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

SHIFT_DELAY_RATIO FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------=

PHASE_SHIFTLIMITS plusmn INTEGER 256 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞=

TPhaseShiftPHASE_SHIFT

PHASE_SHIFTLIMITS----------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

44 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

SHIFT_DELAY_RATIO ge 1 の場合

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 1 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 4

したがって SHIFT_DELAY_RATIO ge 1 の場合の位相シフ ト値は 等式 5 とな り ます PHASE_SHIFT = 1 と して ください

等式 5

最小位相シフ ト

最小位相シフ トの大きさは 次の値の大きな方によって決定されます

1 『Spartan-3 データ シート 』 に DCM_TAP_MIN 仕様と して記載されている最小遅延ライン タ ップ値 (概算値は ~30ps)

2 ク ロ ッ ク周期の 1256

その他の考察点

固定位相シフ トモードでは 動的位相シフ ト制御入力をグランドに接続する必要があ り ます この接続

は DCM Wizard では自動的に行われます

DCM Wizard

固定位相シフ トモードを使用する場合は図 32 に示すよ うにDCM Wizard の [General Setup] ダイアログ ウ ィンド ウに表示される Phase Shift で [Fixed] をク リ ッ ク して ください これによって CLKOUT_PHASE_SHIFT 属性が FIXED に設定されます

[Phase Shift Value] を入力しますが この値は 上述した範囲内にある整数でなければなり ません これによってPHASE_SHIFT 属性値が設定されます DCM Wizard は位相シフ ト値が指定範囲内であるかを確認します

動的ファイン位相シフ ト

動的ファ イン位相シフ ト モードでは 固定ファ イン位相シフ ト モード と同様に 初期スキューまたは初期位相シフ トがコンフ ィギュレーシ ョ ン中に PHASE_SHIFT 属性によって制御されます ただし動的シフ ト モードの場合 DCM の LOCKED 入力が High になった後に 動的ファ イン位相シフ ト制御入力 PSEN PSCLK および PSINCDEC を使用して FPGA アプリ ケーシ ョ ンで現在の位相シフ ト値を修正できます

動作

図 33 に示すよ うに位相シフ ト制御入力を使用し現在の位相シフ ト値を修正します すべての動的位相シフ トは PSCLK の立ち上がりエッジに同期して行われ 有効な位相シフ トは PSEN イネーブル入

図 32 固定ファイン位相モードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

Fixed

x462_32_061803

PHASE_SHIFTLIMITS 255plusmn=

TPhaseShiftPHASE_SHIFT

256--------------------------------------------⎝ ⎠

⎛ ⎞ TCLKINbull=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 45

R

力を正確に 1 PSCLK ク ロ ッ ク周期間アサートするこ とによって開始します PSEN を 1 ク ロ ッ ク周期よ り長くアサートする場合には 適切に位相シフ ト を行う こ とができない可能性があ り ます

PSINCDEC の値は制御入力の増減を指定し 位相シフ トの方向を決定します PSINCDEC を High に設定する と 動的位相シフ ト値が増加し Low に設定する とその値は減少します

実際の位相シフ ト が行われる タ イ ミ ングはさ まざまであ り DCM で PSCLK ク ロ ッ クの 1 周期間PSDONE 出力が High にアサート された時に完了します PSEN がイネーブルであ り PSDONE がアサート されるまでの間 DCM 出力クロ ッ クは 初期位相シフ ト値から新しい位相シフ ト値まで 1 ビットずつスライ ド します シフ トが行われている間 DCM は入力クロ ッ クに対してロ ッ ク状態 つま りLOCKED 出力がアサート された状態を維持します

PSDONE がアサート されたと き またはアサート後に 次の位相シフ ト処理が開始されます

動的ファ イン位相シフ ト モードを使用する場合は CLKOUT_PHASE_SHIFT 属性を VARIABLE に設定し FPGA コンフ ィギュレーシ ョ ン後に PHASE_SHIFT 属性値によって 位相シフ トの初期位置を設定できます DCM の LOCKED 出力が High になる と FPGA アプリ ケーシ ョ ンでは DCM 出力クロ ッ クにおけるスキュー または位相シフ ト を動的に修正できます また DCM がリセッ ト された場合は PHASE_SHIFT 値は初期設定値に戻り ます

図 33 動的ファイン位相シフ ト制御インターフェイス

PSINCDEC

PSEN

PSCLK

PSDONE

0 = 1 =

STATUS[0](

)

PSDONE

If phase shift incremented ordecremented to limit valueSTATUS[0] stays High until newoperation shifts away from limit

x462_33_062403

46 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

動的ファイン位相シフ ト範囲

PHASE_SHIFT と同様に 動的位相シフ トに対しても位相シフ ト範囲の制限があ り ます 図 34 を参照して ください また その範囲は SHIFT_DELAY_RATIO 等式で示したよ うにFINE_SHIFT_RANGE 対入力クロ ッ ク周期の比率によって決定されます

SHIFT_DELAY_RATIO lt 2

指定された FINE_SHIFT_RANGE 値がクロ ッ ク周期の 2 倍よ り小さい場合 (SHIFT_DELAY_RATIOlt 2)最大動的位相シフ ト値は最大遅延タップ値である FINE_SHIFT_RANGE によって決定されますSHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト範囲は 等式 6 によって決定されます

等式 6

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 動的位相シフ ト値の範囲は plusmn96 とな り ます

図 34 動的位相シフ ト制御

Clock Outputs

PHASE_SHIFT DCM LOCKED

RESET

CLKIN

0Fixed Phase Shift

- LimitFixed Phase Shift+ Limit

PSEN

PSINCDEC

PSCLK

PSDONE

STATUS[0]

0

Dynamic Phase Shift- Limit

Dynamic Phase Shift+ Limit

Increment PhaseShift Value

Decrement PhaseShift Value

Enable

IncrementDecrement

Phase Shift Clock

Phase Shift Done

Variable PhaseShift Overflow

DCM LOCKEDFPGA

DCM Variable PhaseShift Control

x462_34_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

DynamicPhaseShiftLIMITS INTEGER 128 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞plusmn=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 47

R

したがって SHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト値は 等式 7 とな り ます PHASE_SHIFT = 1 と して ください

等式 7

SHIFT_DELAY_RATIO ge 2

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 2 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 8

したがって SHIFT_DELAY_RATIO ge 2 の場合の位相シフ ト値は 等式 9 とな り ますPHASE_SHIFT = 1 と して ください

等式 9

制御

45ページの図 33 46ページの図 34 に示すよ うにDCM の動的位相シフ ト制御信号によって FPGAアプリ ケーシ ョ ンは現在の CLKIN 入力と DCM ク ロ ッ ク出力間の関係を修正できます 表 18 に 制御入力 現在の位相と次の位相の関係 遅延タ ップへの影響と制御出力の関係を示します

TPhaseShiftDynamicPhaseShift

DynamicPhaseShiftLIMITS-----------------------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

DynamicPhaseShiftLIMITS 255plusmn=

TPhaseShiftDynamicPhaseShift

256--------------------------------------------------------- TCLKINbull=

表 18 動的位相シフ ト制御 (内部反転がない場合)

PSENPSINC-

DECPSCLK 現在の

位相シフ ト

次の

位相シフ ト遅延ライン PSDONE

STATUS[0](オーバーフロー )

動作

0 X X X 変更なし 変更なし 動的位相シフ トはディ スエーブル

1 0 uarr gt -制限 現在の位相

シフ ト -1現在の位相

シフ ト -11 0 位相シフ トおよびシフ ト ポインタ

のデク リ メン ト

1 0 uarr le -制限およびgt -255

現在の位相

シフ ト -1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがデク

リ メン ト

1 0 uarr -255 -255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

1 1 uarr lt +制限 現在の位相

シフ ト +1現在の位相

シフ ト +11 0 位相シフ トおよびシフ ト ポインタ

のインク リ メ ン ト

1 1 uarr ge+制限およびlt +255

現在の位相

シフ ト +1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがイン

ク リ メ ン ト

1 1 uarr +255 +255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

メモ X = 考慮する必要があ り ません = 不確定であ り 現在のアプリ ケーシ ョ ンの状態によって決定されます1 = PSDONE が 1 PSCLK 周期間 High にアサート されます-制限 = 遅延ラインの最小位置+制限 = 遅延ラインの最大位置PSEN を 1 PSCLK サイ クル間アサート します

48 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

PSEN が Low の場合 動的位相シフ トはディ スエーブルであ り その他のすべての入力は無視されます したがって すべての現在のシフ ト値および遅延ライン位置に変更はあ り ません

遅延ラインがその制限 (デク リ メン トで - 制限 または -255 インク リ メン トで + 制限 または +255)に到っていない場合 FPGA アプリ ケーシ ョ ンでは PSEN を High にアサートする とによって現在の位相シフ ト値を変更でき PSCLK の次の立ち上がりエッジの前に PSINCDEC に対して適切なインク リメン ト デク リ メン ト値を設定できます 位相シフ ト値は指定されたよ うにインク リ メン ト またはデクリ メン ト します 位相シフ トの最後に PSDONE が PSCLK の 1 周期間 High にアサート され 位相シフ ト が完了したこ と を示し ます また 位相シフ ト のオーバーフロー状態が発生していないため

STATUS[0] は Low を維持します

DCM が +255 を超える値にインク リ メン ト された場合 または -255 よ り小さな値にデク リ メン ト された場合には遅延ラインの位置はその限界である +255 または -255 から変更されず位相は変更されません STATUS[0] は High にな り 動的位相シフ トがオーバーフローである こ とを示します こ こで 新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0]が Low に戻り ます

位相シフ トが +255 または -255 には達していませんが 遅延ライン範囲 (表 18 では + 制限および - 制限)を超えている場合には位相は変更されませんがSTATUS[0] が再び High になり ます STATUS[0]出力は 遅延タ ップが遅延ラインの限界に到達したと きを示します ただし FPGA アプリ ケーシ ョ ンでは等式 8 または等式 6 を使用して制限値が算出され求められた遅延ラインの制限値は保証された値とな り ます 特定のデバイスでは 処理電圧または処理温度によって 遅延ラインが長くなる場合があ り ますが これの値はデバイスによって異なるため 保証されていません 遅延ラインの位置ではなく 位相シフ ト値は +255 または -255 に到達するまでインク リ メン ト またはデク リ メン ト を続けます新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0] がLow に戻り ます こ こで位相シフ ト値は遅延ラインにおいて有効な遅延値に対応する値に戻るよ うにインク リ メン ト またはデク リ メン ト されます

DCM Wizard

動的位相シフ トは図 35 に示す DCM Wizard の [General Setup] ダイアログ ウ ィンド ウで設定します動的ファ イン位相シフ ト を有効にするためには 図 35 に示すよ うに [Variable] を選択します 次に初期の [Phase Shift Value] を入力します 初期値は前述した固定ファイン位相シフ トモードの場合と同様に動作します

図 36 に示すよ うに[Variable] モードを選択するこ とによって動的位相シフ ト制御信号である PSENPSINCDEC PSCLK および PSDONE がイネーブルにな り ます これらの制御信号を FPGA アプ リケーシ ョ ンで使用するために入力および出力チェッ ク ボッ クスをオンにして ください またSTATUS

図 35 DCM Wizard での動的ファイン位相シフ トモードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

[Variable]

x462_35_061903

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 49

R

出力のボッ クスをオンにし STATUS[0] 信号をイネーブルにします STATUS[0] は 位相シフ ト値がその最大または最小制限値に達したと きを示します

アプリケーシ ョ ン例

動的位相調整を行う場合の動的位相シフ ト機能については 次の リ ンクからアプ リ ケーシ ョ ン ノー トXAPP268 を参照してください

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

クロック逓倍クロック分周周波数合成

DCM アプリ ケーシ ョ ンのもっと も使用される機能の 1 つと して 新しいク ロ ッ ク周波数を柔軟に生成できる機能があ り ます 次に説明するよ うにSpartan-3 DCM は 3 つの独立した周波数合成機能を持ちます図 37 および表 19 を参照してください アプリ ケーシ ョ ンでは これらの機能の 1 つを使用する場合 またはすべてを同時に使用する場合があ り ます 次に 各機能の詳細について説明します

1 2 逓倍クロ ッ ク (CLK2X CLK2X180) は 入力クロ ッ クの周波数を 2 倍にします

2 ク ロ ッ ク分周 (CLKDV) は 入力クロ ッ ク周波数を一定の分周値を使用して分周します

3 周波数合成回路 (CLKFX CLKFX180) は 入力クロ ッ ク周波数から新しい周波数を生成します

図 36 DCM Wizard での動的位相シフ ト制御出力の選択

LOCKEDSTATUS

PSDONE

PSENPSINCDECPSCLK

STATUS[0] STATUS

x462_36_061903

図 37 クロック合成オプシ ョ ン

CLKIN CLK0

CLKFB

DCM

CLKFX

CLKFX180

Frequency Synthesizer

F = FCLKIN CLKFX_MULTIPLY

CLKFX_DIVIDE

CLKDV

Clock Divider

F =FCLKIN

CLKDV_DIVIDE

CLK2X

CLK2X180

F = 2 FCLKIN Clock Doubler

ClockDistribution

Delay

CLK0or

CLK2X

Clock Feedback LoopCLK0 CLK2X CLK2X180 CLKDV CLKFB

CLK0

CLKFXCLKFX180

50

DLL_FREQUENCY_MODE=LOW50

50

Deskewed ClockF = FCLKIN

DUTY_CYCLE_CORRECTION=TRUE50

x462_37_062203

50 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

CLKDV 以外のすべての周波数合成出力は 5050 デューティ サイ クルを持ちます 表 23 に示すよ うに高周波数で分周値が整数の場合通常 CLKDV は 50 のデューティ サイクルを持ちます また 2逓倍クロ ッ ク (CLK2X CLK2X180) 回路は高周波数では使用できません

CLKFX および CLKFX180 以外のすべての DCM ク ロ ッ ク出力はDCM の 遅延ロッ ク ループ (DLL)ユニッ トで生成され CLKFB ピンへのクロ ッ ク フ ィードバッ クが必要になり ます DCM の デジタル周波数合成 (DFS) ユニッ トはCLKFX および CLKFX180 ク ロ ッ ク出力を生成します アプリ ケーシ ョンで CLKFX 出力または CLKFX180 出力のみが使用される場合にはフ ィードバッ ク パスを削除できDCM の動作範囲が広くな り ます 周波数合成回路は DCM 内部に CLKIN に基づいたフ ィードバック パスを持ちます

ク ロ ッ ク フ ィードバッ クを使用した場合 すべての出力クロ ッ クの位相が調整されます また 出力のいくつかは分周クロ ッ クであるためすべての DCM 出力がクロ ッ ク エッジで一致するよ うに調整されるこ とはまれであるこ とがわかり ます たとえば CLKDV 出力は CLKDV_DIVID の各サイクルごとに CLKIN および CLK0 に対して調整されCLK2X 出力は CLK0 のサイクル 1 つおきに この信号に対して調整されます またCLKFX 出力はCLKIN の CLKFX_DIVIDE サイクルごとおよび CLKFBの CLKFX_MULTIPLY サイクルごとに CLKIN に位相調整されます

周波数合成アプリケーシ ョ ン

周波数合成を使用するアプリ ケーシ ョ ンは ほぼ無制限に考えられますが 次にいくつかのアプリ ケー

シ ョ ン例を示します

bull ボード上で利用可能なクロ ッ クを使用している FPGA および外部ロジッ クに対して完全に新しいクロ ッ ク周波数を生成する

bull 低速の外部クロ ッ ク ソースから高周波数の内部クロ ッ クを生成し システムの EMI を低減する

bull 図 38 に示すよ うに高速シ リ アルデータ ク ロ ッ クを分周しFPGA 内部でデータの並行処理を行う

bull 同様に 図 38 に示すよ うに 高速シ リアル データ フォーマッ トに変換する前に 並行で動作するデータ ク ロ ッ クの周波数を逓倍する

bull 適切な速度の機能をインプリ メン トする場合に 入力クロ ッ クを逓倍し 内部ロジッ クをクロ ッ ク

アップするこ とによって 使用する リ ソースを削減する

表 19 DCM 周波数合成オプシ ョ ン

機能 DCM 出力 周波数DCM の機能ユニッ ト

フ ィードバック50 の

デューティ サイクル

スキュー調整

クロ ッ ク

CLK0 DLL 必要 DUTY_CYCLE_CORRECTION = TRUE の場合に 50 です

2 逓倍クロ ッ ク CLK2XCLK2X180

DLL 必要 常に 50 です

分周クロ ッ ク CLKDV DLL 必要 高周波数モードで分周値が

整数以外の場合を除いて常

に 50 です

周波数合成 CLKFXCLKFX180

DFS オプシ ョ ン フ ィードバッ クに

よって ク ロ ッ ク

入力周波数範囲は

広くなるこ とは

あ り ません

常に 50 です

FCLKIN

2 FCLKINbull

FCLKINCLKDV_DIVIDE---------------------------------------------------

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE------------------------------------------------------------⎝ ⎠

⎛ ⎞bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 51

R

入力クロックおよび出力クロックの周波数条件

周波数合成を行う場合の入力クロ ッ クおよび出力クロ ッ クの周波数条件は DCM で使用されるク ロ ック出力によって決定されます たとえば CLKFX 出力および CLKFX180 出力は DCM のデジタル周波数合成 (DFS) ユニッ トのみを使用し その他のすべての出力は遅延ロッ ク ループ (DLL) ユニッ ト を使用します DLL における周波数の制限は DFS よ り も厳しいため DFS のみを使用する場合の方が周波数の動作範囲は広くな り ますDFS および DLL の両方を使用する場合アプリ ケーシ ョ ンは DLLの周波数範囲によって制限されます

また DLL および DFS は 低周波数モード と高周波数モードの両方で動作可能であるため モード設定によっても有効な周波数範囲が変動します

DCM デザインが有効であるためには CLKIN 周波数が 『Spartan-3 データ シート 』 モジュール 3 に記載されている動作範囲内である必要があ り 使用されているすべての出力クロ ッ クの周波数もそれぞれ

指定された範囲内でなければなり ません

図 39 に クロ ッ ク入力およびクロ ッ ク出力と対応する周波数範囲を示します ただし こ こで示すのは低周波数モードの場合のみです データ シートに記載されている仕様名は影付きのボッ クス内に示しています また 表 20 に DCM アプリ ケーシ ョ ンの例および周波数条件を示します

図 38 周波数合成アプリケーシ ョ ンの一般的な例

DCM DCM

F

n-bitswide

Fn

F F m

m-bitswide

F F

Overclockedtime-shared logic

DCM

F

F F x

High-speed serial datadown-converted toslower parallel data

Slower parallel dataup-converted to high-speed serial data

FPGA

x462_38_070903

52 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

2 逓倍クロック (CLK2X CLK2X180)表 21 に示すよ うに 2 逓倍クロ ッ ク回路によって CLKIN 入力の周波数は 2 倍になり ます この 2 逓倍クロ ッ ク回路は DLL 機能ユニッ トの一部であ り CLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します 2 逓倍クロ ッ ク回路からの出力は CLK2X および CLK2X180 であ り これらの出力のデューテ ィ サイ クルは常に 50 です また これらの周波数は同一ですがCLK2X180 は CLK2X を 180deg位相シフ ト したものであ り 基本的に CLK2X 出力を反転したものになり ます 高性能のデュアル データ レート (DDR) アプリ ケーシ ョ ンまたはクロ ッ ク転送アプリ ケーシ ョ ンでは 両方の位相を使用するこ とが不可欠です

CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE 属性が LOW に設定されている場合のみに使用できます アプリ ケーシ ョ ンにおける必要性に応じてオプシ ョ ンの 2 分周機能を使用しCLKIN 入力周波数を低下させてください ( 「アドバンス ド オプシ ョ ン」 を参照)

図 39 入力クロックおよび出力クロックの周波数条件 (低周波数モード )

DFS(CLKIN_FREQ_FX_MINMAX)

DLL (Low-Frequency Mode)(CLKIN_FREQ_DLL_LF_MINMAX)

~1 MHz ~326 MHz

~24 MHz ~180 MHzFCLKIN

DFS (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~24 MHz ~200 MHz

DLL CLKDV (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~15 MHz ~120 MHz

DLL CLK2X (Low-Frequency Mode)(CLKOUT_FREQ_2X_LF_MINMAX)

~48 MHz ~326 MHz

FCLKFXFCLKFX180

FCLKDV

FCLK2XFCLK2X180

x462_39_070903

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 20 DCM 周波数条件の例

入力周波数 出力周波数 解説

12 MHz 128 MHz 1 つの DCM のみを使用する場合には条件を満たしません FCLKIN は DFS の条件を満たす範囲内ですが FCLKFX は最低 24MHz 出力周波数が必要です

12 MHz 324 MHz DFS を使用する DCM で条件を満たします CLKFX_MULTIPLY=27 と設定してくださいFCLKFX は DFS 出力周波数範囲内です

25 MHz 25 MHz30 MHz

DFS および DLL を使用する DCM で条件を満たします CLKDV 出力を 25MHz 信号に使用しCLKDV_DIVIDE=10 と設定してください また CLKFX 出力を 30MHz 信号に使用しCLKFX_MULTIPLY=6 および CLKFX_DIVIDE=5 と設定してください すべての入力周波数および出力周波数は適切な範囲内です

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 53

R

表 21 2 逓倍クロック回路のまとめ

DCM 出力 CLK2XCLK2X180

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク 必要です

50 デューティ サイ クル出力 はい

制御属性

DLL_FREQUENCY_MODE CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE = LOW の場合にのみ有効です

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます 2 逓倍クロ ッ クの出力は 高周波数モードでは使用できませんが ほかの DCM ク ロ ッ ク出力に必要となる場合があ り ます

CLK2XCLK2X180

CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

2 FCLKINbull

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (~24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (~48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~326 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_2X_LF_MIN (48 MHz)

CLKOUT_FREQ_2X_LF_MAX (~325 MHz)

HIGH 設定不可 設定不可

54 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

クロック分周 (CLKDV)表 22 に概要を示すクロ ッ ク分周ユニッ トは デザインに設定した CLKDV_DIVIDE 属性の値を使用し CLKIN 入力の周波数を分周します ク ロ ッ ク分周ユニッ ト は DLL 機能ユニッ ト の一部であ りCLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します

表 22 クロック分周回路のまとめ

DCM 出力 CLKDV

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク DCM からの CLK0 出力または CLK2X 出力を使用する場合に必要です

50 デューティ サイ クル出力 はい ただし DLL_FREQUENCY_MODE=HIGH および CLKDV_DIVIDE が整数値ではない場合を除きます

制御属性

DLL_FREQUENCY_MODE CLKDV は両モードで使用できます 分周値によっては 出力のデューティ サイ クルに影響を与える場合があ り ます ( 「CLKDV ク ロ ッ ク調整」 を参照してください)

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 有効な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 であ り 整数値の場合 よ り短時間で DLL はロッ ク状態になり ます また 整数値を設定する場合には出力ジッ タが低くな り ます

周波数制約

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

CLKDV CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

FCLKINCLKDV_DIVIDE--------------------------------------------------

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~325 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_DV_LF_MIN (15 MHz)

CLKOUT_FREQ_DV_LF_MAX (~120 MHz)

HIGH CLKOUT_FREQ_DV_HF_MIN (30 MHz)

CLKOUT_FREQ_DV_HF_MAX (~240 MHz)

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 55

R

CLKDV クロック調整

DLL_FREQUENCY_MODE 属性が High であ りCLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 になり ます 表 23 に CLKDV のデューティ サイクルを示します Spartan-3 DCM では CLKIN のデューティ サイクルが 6040 (または 4060) 以上である必要があ り高周波数モードの場合に 15 で分周された CLKDV 出力は次にカスケード接続された DCM へクロ ッ ク入力するこ とはできません

CLKDV のジッ タは 周波数モードおよび属性値が整数か 整数ではないかによって決定されます

CLKDV_DIVIDE 属性に整数値を設定するこ とによって 出力ジッ タが半分になり DLL がロ ッ ク状態になるために要する時間も短縮されます

DCM Wizard

ク ロ ッ ク分周は DCM Wizard の[General Setup]ウ ィ ン ド ウで設定し ます 図 40a に示すよ う にCLKDV 出力のチェッ ク ボッ クスをオンにし 次に図 40b に示すよ うに ド ロ ップ ダウン リ ス トから[Divide by Value] を選択します

表 23 CLKDV デューティ サイクル (DLL_FREQUENCY_MODE=HIGH の場合)

CLKDV_DIVIDE 属性 デューティ サイクル High 時間総サイクル

整数 50000 12

15 33333 13

25 40000 25

35 42857 37

45 44444 49

55 45454 511

65 46154 613

75 46667 715

表 24 CLKDV 出力ジッ タ

CLKDV_DIVIDE CLKDV 出力周期ジッ タ

整数値 CLKOUT_PER_JITT_DV1 (plusmn~150 ps)

整数以外の値 CLKOUT_PER_JITT_DV2 (plusmn~300 ps)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

a CLKDV 出力のチェ ック ボックスをオン b ドロップ ダウン リス トから [Divide by Value を選択]

図 40 DCM Wizard での分周クロック設定

CLKDV

x462_40a_0619032

Divide By Value

x462_40b_061903

56 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

周波数合成回路 (CLKFX CLKFX180)周波数合成回路を使用するこ とによって 入力周波数の逓倍 分周 またはその両方をもっと も柔軟に

行う こ とができます 表 25 に示すよ うに 2 つの周波数合成出力は CLKFX および CLKFX180 ですCLKFX180 出力は CLKFX と同一の周波数を持ちますがCLKFX を 180degまたは 12 ク ロ ッ ク周期位相シフ ト させた ものです これらの周波数合成出力のデューテ ィ サイ クルは 50 であ るためCLKFX180 は CLKFX の反転クロ ッ クのよ うに見えます

表 25 にある等式が示すよ うに設計段階で 2 つの属性を使用し合成出力周波数を制御します CLKINク ロ ッ ク入力は CLKFX_MULTIPLY が分子 CLKDV_DIVIDE が分母である比率を使用して逓倍されます たとえば 75MHz CLKIN 入力を使用して 155MHz の出力を生成するためには 周波数合成回路では 3115 の比率で CLKIN を逓倍します これは CLKIN を始めに 31 倍し 次に 15 で割ることではあ り ませんCLKIN を 31 倍するこ とによって出力周波数は2325GHz とな りSpartan-3 DCMの周波数範囲を越えるこ とにな り ます

68 を 34 と約分するよ うに 逓倍値および分周値はもっと も簡潔な値にする必要があ り ます このことによって ロ ッ クするために必要な時間が短縮します

周波数合成には 常にク ロ ッ ク フ ィードバッ クが必要ですが DFS には CLKIN を基準と した内部フ ィードバッ ク ループがあるため DLL を使用せずに DFS を使用する場合には CLKFB に別のループは必要あ り ません

また CLKFB 出力は CLKIN の CLKFX_DIVIDE サイ クルごと および CLKFB の CLKFX_MULTIPLY サイクルごとに CLKIN に対して位相調整されます たとえばCLKFX_MULTIPLY = 3 であ りCLKFX_DIVIDE = 5 の場合CLKFX 出力の位相は CLKIN の各 5 サイクルごと および CLKFB の 3 サイクルごとに CLKIN 入力に対して位相調整されます DCM で LOCKED 出力がアサート される と DFS は CLKIN 入力の立ち上がりエッジごとに再同期し ほぼ完璧に位相調整されます

表 25 周波数合成回路のまとめ

DCM 出力 CLKFX

CLKFX180 (CLKFX を 180deg位相シフ ト した場合と同一)

出力周波数

DCM の機能ユニッ ト デジタル周波数合成 (DFS)

フ ィードバッ ク CLKIN を基準にして内部フ ィードバッ クを使用するため 必要あ り ません 遅延ロッ ク ループ (DLL) を使用する場合は オプシ ョ ンと して CLKFB 入力を使用できます

50 デューティ サイ クル出力 常に 50 です

制御属性

DFS_FREQUENCY_MODE CLKIN CLKFX 出力 CLKFX180 出力の周波数条件に影響します

DLL_FREQUENCY_MODE アプリ ケーシ ョ ンで DLL 出力が使用される場合に 周波数合成回路のみに影響を与えます また よ り厳しい DLL の条件に適用するよ うに CLKIN 周波数を低下させる可能性があ り ます CLKFX 出力または CLKFX180 出力が使用されている場合 周波数条件は DFS_FREQUENCY_MODE によってのみ指定されます

CLKFX_MULTIPLY 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 2 から 32 であ りデフォルトは 4 です

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 1 から 32 であ りデフォルトは 1 です

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 57

R

DCM Wizard

周波数合成を使用する場合図 41 に示すよ うに DCM Wizard の[General Setup]ダイアログ ボッ クスで CLKFX または CLKFX180 あるいはその両方のチェッ ク ボッ クスをオンにしてください

CLKFX 出力または CLKFX180 出力のみを使用する場合はオプシ ョ ンと して DLL ク ロ ッ ク出力およびフ ィードバッ クをディ スエーブルにするこ とによって 周波数範囲を広げるこ とができます

bull デフォルトでは CLK0 出力は常にオンになっていますが CLKFX または CLKFX180 のみを使用する場合は CLK0 のチェッ ク ボッ クスをオフにしてください

bull 図 42 に示すよ うに DCM フ ィードバッ クをディ スエーブルにする場合は [None] を選択してください フ ィードバッ クを使用しない場合はCLKFX および CLKFX180 の周波数範囲は高域と低域の両方で広くな り ます

周波数制約

CLKIN アプリ ケーシ ョ ンで 遅延ロッ ク ループ (DLL) からの出力が使用されていない場合CLKIN の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます DLL が使用されている場合は DLL のクロ ッ ク周波数条件はよ り厳し くな り ます

CLKFXCLKFX180

CLKIN 出力および CLKFX180 出力の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 25 周波数合成回路のまとめ (Continued)

最小周波数 最大周波数

CLKIN_FREQ_FX_MIN (~10 MHz) CLKIN_FREQ_FX_MAX (~326 MHz)

DFS_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_FX_LF_MIN(~24 MHz)

CLKIN_FREQ_FX_LF_MAX(~210 MHz)

HIGH CLKIN_FREQ_FX_HF_MIN(~210 MHz)

CLKIN_FREQ_FX_HF_MAX(~325 MHz)

図 41 DCM Wizard での Frequency Synthesizer 設定

CLK0

CLKFXCLKFX180

CLKFXCLKFX180

CLKFX CLKFX180

DCM

x462_41_070903

58 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロックのフォワード ミ ラー リバッファR

DCM Wizard のクロ ッ ク周波数合成で示したよ うに必要は出力周波数または逓倍値と分周値を入力します

クロックのフォワード ミ ラーリバッファ

DCM は高度なクロ ッ ク制御機能を持ちさ らに Spartan-3 IO ピンは多様な IO 電圧標準をサポートするため 通常 Spartan-3 FPGA ではクロ ッ ク信号のリバッファ またはミ ラーを行い 入力クロ ッ クの電圧を変更ために使用されます 同様に DCM の入力クロ ッ ク条件を変更し デューティ サイクルを50 に調整します

図 20 に DCM の入力クロ ッ クを 50 デューティ サイ クルに調整し その周波数で CLK0 出力を使用してクロ ッ クをフォワードする または DCM CLK2X を使用して周波数を 2 倍にする DCM の例を示しました DCM が LOCKED 出力をアサートする と 入力クロ ッ クおよび出力クロ ッ クは位相調整されます CLKFB へのフ ィードバッ ク パスは外部のクロ ッ ク フ ィードバッ ク地点でクロ ッ ク分散遅延を確認し 削除します

出力クロ ッ クのデューティ サイクルが 50 であるこ とは重要であるため出力 IO 標準が 50 デューティ サイ クルを維持できるために十分な速度でスイ ッチできる こ と を確認して ください デューティサイ クルの動作は 出力信号でのシ ミ ュレーシ ョ ンを行う こ とによって検証します IBIS シ ミ ュレーシ ョ ンで確認できるよ うに IO 標準には立ち上がり と立ち下がりが対称的ではなく デューティ サイクルにずれが発生しているものもあ り ます HSTL SSTL および LVCMOS の DCI バージ ョ ンの IO標準の立ち上がりおよび立ち下がりがよ り対称的です

100 MHz を越える場合のデューテ ィ サイ クルを確実に 50 にするためには CLKIN のソースのデューティ サイ クルが 50 の場合にも DCM のデューティ サイクル調整機能を使用する必要があ ります したがって ク ロ ッ ク フォワードに CLK0 CLK90 CLK180 または CLK270 を使用する場合はDUTY_CYCLE_CORRECTION 属性を TRUE に設定してください 通常その他の DCM ク ロ ック出力は常に 50 のデューティ サイ クルに調整されます ( 「ク ロ ッ ク調整」 を参照して ください)

200 MHz 以上で動作する場合のデューティ サイ クルを最適にするためには図 43 に示すよ うな回路を使用して ください こ こでは DCM からの CLKx 出力および CLKx180 出力がデュアル データ レート (DDR) 出力フ リ ップフロ ップの C0 入力および C1 入力を駆動するよ うに使用します DDR フ リ ップフロ ップの D0 入力を VCC に接続し D1 入力を GND に接続します また DCM の各出力は個々のグローバル バッファを駆動しデューティ サイクルのずれを最小にします 高周波数の場合に 1つのク ロ ッ クのみを分散し DDR フ リ ップフロ ップ内部でローカル位相シフ ト を行う と 約 150ps のデューティ サイクルのずれが発生するため このよ うな回路設計は推奨していません

周波数が 250 MHz 以上の場合には分散クロ ッ クに LVDS のよ うな差動信号標準を使用します 図 43にCLKIN ク ロ ッ ク入力およびクロ ッ ク出力がと もに VLDS を使用する例を示します さ らにク ロ ック フ ィードバッ ク パスも LVDS を使用します パフォーマンスを最適にするためには ク ロ ッ ク入力およびクロ ッ ク フ ィードバッ ク パスにグローバル バッファ入力 (IBUFGDS) を使用する必要があ り ます これによってデバイスの一辺にあるすべてのグローバル バッファ入力を使用するこ とになり ますが 高周波数でのクロ ッ ク フォワードを最適に行う こ とができます

図 42 フ ィードバックに [None] を選択し 周波数範囲を拡大

SourceFeedback

Internal External None

Value 1X 2X

If only using the CLKFX or CLKFX180clock ouputs optionally click None to extend the DCM frequency limits

x462_42_070903

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 59

R

クロック ジッ タおよび位相ノイズ

もっと も高価で高精度なものの場合においてもすべてのクロ ッ クにはクロ ッ ク ジッタまたは位相ノイズがあ り ます こ こでは Spartan-3 デジタル ク ロ ッ ク マネージャに固有のジッ タ特性について説明します 低周波数 たとえば 20 MHz で動作する場合は 一般に ジッ タの影響は無視できますが200 MHz のよ う な高周波数で動作する場合には 特にデュアル データ レート (DDR) アプリ ケーシ ョンにおいて ジッ タはデザインの問題に関連する要素となり ます ク ロ ッ ク ジッタによって アクティブ ク ロ ッ ク エッジ間で実際に有効な時間が削減されるため FPGA アプ リ ケーシ ョ ンで使用できる時間が制限されます

クロック ジッ タ とは図 44 に示すよ うにク ロ ッ ク ジッタ とは理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジの相違です 太線は 理想的なクロ ッ ク信号を表します 各クロ ッ ク エッジでは 理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジ間に若干のずれがあ り このずれの最大値と最小値の差異をピーク ジッ タ と呼びます ジッ タは アクテ ィブなク ロ ッ ク エッジのみに関係します たとえば シングル データ レート(SDR) アプリ ケーシ ョ ンの場合データは各立ち上がりエッジでクロ ッ ク入力され この場合のジッタは総クロ ッ ク周期から引く こ とによって求められます 一方 デュアル データ レート (DDR) の場合データは各クロ ッ ク周期の始ま り および 12 ク ロ ッ ク周期の点でクロ ッ ク入力されるため ジッ タは12 ク ロ ッ ク周期ごとに影響を与えます

図 43 高周波数 (250 MHz 以上) での LVDS クロック フォワード回路

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKx180

BUFG

BUFG

VCC

GND

OBUFDS

CLKIN

CLKFB

IBUFGDS

IBUFGDS

External Clock Feedback (LVDS)

FPGA

x462_43_061903

図 44 クロック信号におけるジッ タ

x462_44_061903

60 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

クロック ジッ タの原因ク ロ ッ ク ジッタはすべてのシステムに存在しそれを避けるこ とはできません ク ロ ッ ク ジッタの原因は システム内のノ イズのソース または不完全な信号であ り 実際 ジッ タは時間軸上における ノ イ

ズである と言えます たとえば 入力クロ ッ ク ソースには ク リ スタルからの任意の温度振動ノ イズまたは機械的な振動ノ イズによる固有のジッタ特性があ り ます 多くの同時スイ ッチ出力 (SSO) は回路基板にノ イズを追加するため 内部スイ ッチしきい値がわずかに変更し ジッ タが増加します 同様に適切に設計されていない電源供給または不十分なデカップリ ングによってもジッ タは増加します

その他のジッタの原因と しては近接した信号のクロス トーク不適切な終端 グランド バウンス電磁干渉 (EMI) などが考えられます

このアプ リ ケーシ ョ ン ノートでは Spartan-3 デジタル ク ロ ッ ク マネージャ (DCM) および FPGA 内部でのジッタ全般について説明します

クロック ジッ タ特性の理解ク ロ ッ ク ジッタの特性はさまざまな方法で定められ次のよ うにいろいろな方法でその特徴を捉えることができます

サイクル間ジッ タ

隣接サイクル ジッタ と も呼ばれるサイクル間ジッタは 図 45 に示すよ うに 1 つのクロ ッ ク サイクルと次のクロ ッ ク サイクル間でのクロ ッ ク周期の最大差異です この例ではあるクロ ッ ク サイクルと次のクロ ッ ク サイクル間の最大差異は +100 ps および -100 ps または plusmn100 ps です数百万クロ ッ ク サイクル間の計測を行う場合にはクロ ッ ク周期の変動の絶対値が大き くなる可能性があ り ますがク ロ ッ

ク サイクル間の変動が plusmn100 ps よ り大き くなるこ とはあ り ません

サイクル間ジッタは ク ロ ッ ク出力またはオシレータの特性を測定するために重要ですが アプ リ ケー

シ ョ ンのタイ ミ ング解析には有効ではあ り ません

周期ジッ タ

周期ジッタは 数百万クロ ッ ク サイクル間で計測したサイ クル間ジッタの合計です ピーク ジッ タは理想的なクロ ッ ク移行時間と比較した場合の最短および最小移行時間を示します

デジタル ク ロ ッ ク マネージャの周期ジッ タは一定ではく ピーク間ジッタ と して表されます 図 46 に示すよ うに 理論的には クロ ッ ク移行位置は理想的なクロ ッ ク位置を中心とする確率的な分散 また

はヒ ス ト グラムですが実際の分散はガウス分布ではなく二峰性分布の場合があ り ます 実際のクロ ック移行のほとんどは理想的なクロ ッ ク位置付近で起こ り ますが数百万クロ ッ ク サイクルにおける測定の結果 望ましい位置から離れた地点で起こるクロ ッ ク移行もあ り ます

理想的な位置からの統計的な距離はσ (シグマ) と呼ばれる標準偏差で測定されます DCM はすべてデジタルで機能するデザインであるため 非常に安定しており ザイ リ ンクスでは ジッ タの偏差を plusmn7σまたはピーク間ジッ タを 14σ と定めています 判断基準と して 偏差が plusmn7σ である とい う こ とは ジッタの 9999999999974 が指定されたワース ト ケース ジッ タよ り小さい値であるこ とを保証していま

図 45 サイクル間ジッ タ例

T0 T1 = T0 + 100 ps T2 = T1 - 100 ps

x462_45_062203

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 61

R

す また 14σ ピーク間ジッ タ plusmn7σ ジッタ偏差は 最大ビッ ト エラー レート (BER) が 128 x 10-12 という こ とを意味します

ユニッ ト インターバル(UI)

ジッタの仕様を単位間隔 (UI) の割合と して指定する別の方法もあ り ます 1 UI は 周波数に関わらず1 ビッ ト時間を表します ク ロ ッ クの立ち上がりエッジ または立ち下がりエッジのいずれかでデータが取り込まれるシングル データ レート (SDR) アプリ ケーシ ョ ンでは1 UI は 1 ク ロ ッ ク周期になり ます 一方 2 倍のクロ ッ ク レートでデータがクロ ッ ク入力されるデュアル データ レート (DDR) アプリケーシ ョ ンでは 1 UI が 12 ク ロ ッ ク周期になり ます

UI で指定されるピーク間ジッタ幅は 総ビッ ト周期時間に対するピーク間ジッタ値の比率です

総ジッ タの計算

『Spartan-3 データ シート 』 には CLKFXCLKFX180 以外の DCMのク ロ ッ ク出力におけるジッ タが記載されてます デジタル周波数合成 (DFS) ジッ タは 逓倍値および分周値に基づいて算出されます

データ シートには DLL からのクロ ッ ク出力 (CLKFX および CLKFX180 を除くすべてのクロ ッ ク出力) に対するワース ト ケース ジッ タが記載されています DLL ではジッ タが削減されないため DLLク ロ ッ ク出力の総ジッタには入力クロ ッ クである CLKIN のジッタおよびデータ シートに記載された値が含まれます

また DFS ク ロ ッ ク出力である CLKFX および CLKFX180 では 入力ク ロ ッ ク ジッ タがある程度削減されるため 算出された出力ジッタが総ジッタにな り ます

図 46 ピーク間周期ジッ タ例

図 47 ユニッ ト インターバルの比率で示された周期ジッ タ

Desired clock period

Measured clock period

Num

ber

of s

ampl

esPeak-to-peak Period Jitter

(14σ)

+7σ-7σ

x462_46_061903

Bit Period

Unit Interval (UI)

x462_47_061903

62 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

DLL 出力ジッ タへの入力ジッ タの加算

入力ジッタに DLL 出力ジッタを加える場合ノ イズ計算と同様に 2 乗平均平方根 (RMS) 計算を使用します

ピーク間

等式 10

ピーク間偏差

等式 11

定義

入力クロ ッ クのピーク間周期ジッ タが 150 ps (plusmn75 ps) であ り このク ロ ッ クのデューティ サイ クルがDCM の CLK0 出力と同一の周波数を使用して修正される場合について考えます

この場合 JITTERINPUT = 150 ps であ り JITTERSPEC の値は 『Spartan-3 データ シート 』 で指定されている CLKOUT_JITT_PER_0 と呼ばれる値です これは ピーク間で plusmn100 ps または 200 ps である と概算されます

したがって DCM 出力の総ジッタはピーク間で 250 ps または plusmn125 ps です

カスケード接続された DCM のジッ タ計算図 48 に 複数の DCM をカスケード接続し さまざまな出力周波数を生成しているアプ リ ケーシ ョ ンの例を示します この場合のジッタは 次によって決定されます

bull 前のソースからのジッタ

bull 使用されている DCM 出力

データ シートに記載されているよ うにジッ タ特性は各 DCM 出力によってわずかに異なり ます またDFS からの CLKFX 出力および CLKFX180 出力は 入力ジッタをある程度削減し ジッ タ値は DCMWizard で算出されます ( 「ク ロ ッ ク周波数合成」 参照して ください)

JITTERINPUT = FPGA のクロ ッ ク入力ピンで測定された入力周期ジッタ

JITTERSPEC = 『Spartan-3 データ シート 』 に記載されている適切な出力ポートに対する DLL ク ロ ッ ク出力周期ジッタ

JITTERTOTAL = 予想される総出力周期ジッタ

JITTERTOTAL JITTERINPUT( )2 JITTERSPEC( )

2+=

JITTERTOTALJITTERINPUT( )

2 JITTERSPEC( )2+

2--------------------------------------------------------------------------------------------------------plusmn=

JITTERTOTAL 150 ps( )2200 ps( )

2+ 250 ps= =

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 63

R

したがって カスケード接続された DCM チェーンの任意の点におけるジッタは前述した 2 つの要因によって決定されます 次の例では 回路上のいくつかの点で総ジッタを計算する方法を示します

例 1 すべての DCM が DLL 出力を使用する場合

この例では 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

こ こでは DCM (A) が CLK2X 出力を使用する場合について考えます また DCM 出力ジッ タに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_2X 値を使用してください この値は 400 ps (plusmn200 ps) と概算されています 等式 10 を使用しク ロ ッ ク (A) の総周期ジッタを計算します

次にDCM (B) で分周値が整数である CLKDV 出力を使用する場合について考えます またDCM 出力ジッタに対して 『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_DV1 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (B) の総周期ジッタを計算します この場合 入力ジッタ DCM (A) からのジッタ DCM (B) からのジッタを考慮する必要があるため RMS 等式は次のよ うになり ます

最後に DCM (C) が DCM (B) からの出力を 90deg位相シフ トする場合について考えます また DCM出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します この場合 入力ジッ タ DCM (A) からのジッ タ DCM (B) からのジッ タDCM (C) からのジッ タを考慮する必要があるため RMS 等式は次のよ うにな り ます

例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合

この例は DFS からの CLKFX 出力または CLKFX180 出力を使用する DCM がある点以外は 例 1 すべての DCM が DLL 出力を使用する場合と同様です

この例では 75MHz 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

例 1 と同様に まず DCM (A) が CLK2X 出力を使用する場合について考えます 出力ジッタは 次に示す等式になり ます

この例ではDCM (A) で生成された 150MHz を使用してDCM (B) で 90MHz 合成クロ ッ クを生成します DCM Wizard ( 「ク ロ ッ ク周波数合成」 を参照して ください) を使用し CLKFX_MULTIPLY=3および CLKFX_DIVIDE=5 と設定します ワース ト ケースの出力周期ジッタは 700 ps とな り ます

図 48 カスケード接続された DCM のジッ タ計算

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

A B C

x462_48_061903

JITTERTOTAL A( ) 150ps( )2400ps( )

2+ 427ps 214psplusmn= = =

JITTERTOTAL B( ) 150ps( )2400ps( )

2300ps( )

2+ + 522ps 261psplusmn= = =

JITTERTOTAL C( ) 150ps( )2 400ps( )2 300ps( )2 300ps( )2+ + + 602ps 301psplusmn= = =

JITTERTOTAL B( ) 700ps 350psplusmn= =

64 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

最後にDCM (C) が DCM (B) からの出力を 90deg位相シフ ト させる場合について考えます DCM 出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用してください この値は 300 ps (plusmn150 ps) と概算されています 次の等式を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します 次の DCM では CLKFX を使用するため 総入力ジッ タは ワース ト ケースで700 ps とな り ます 次の RMS 等式を使用し 出力ジッタを計算します

カスケード接続した DCM を使用する場合の推奨デザイン

DCM をカスケード接続して使用する場合 図 48 に示すよ うに DCM からの LOCKED 出力が次のDCM の RST 入力を制御しているこ とを確認してください カスケード接続した DCM では 1 つ前のDCM で LOCKED 出力がアサート され ク ロ ッ クが安定しているこ とが示されてた後に 入力クロ ックにロ ッ クする必要があ り ます

また DCM をカスケード接続する場合には 最もジッ タの影響を回避する必要のあるク ロ ッ ク出力が最初の DCM に接続されるよ うに DCM チェーンを構成してください

システム パフォーマンスにおけるジッ タの影響ク ロ ッ ク ジッタによっても有効なビッ ト周期が狭くな りシステム パフォーマンスが低下します 次の等式に示すよ うに FPGA アプリ ケーシ ョ ンで使用可能なビッ ト周期は 総ビッ ト周期 TBIT からいくつかの影響を差し引いたものです シングル データ レート (SDR) アプリ ケーシ ョ ンでは ク ロ ッ ク周期とビッ ト周期は一致しますがデュアル データ レート (DDR) アプリ ケーシ ョ ンのビッ ト周期はクロ ッ ク周期の 12 になり ます

定義

総ジッ タがク ロ ッ ク周期からの偏差ではな く正の値に指定されている場合 (たとえば plusmn100 ps ではなく200 ps の場合) 正の値を 2 で割り ます (100 ps) ビッ ト周期は負の偏差によってのみ短くなり 正の偏差によってはビッ ト周期が長くな り さ らにタイ ミ ング スラ ッ クが追加されます

入力クロ ッ ク信号の周波数は 75 MHz であ り ク ロ ッ ク ソースのジッ タは plusmn100 ps です アプリ ケーシ ョ ンは内部で生成された 150 MHz のクロ ッ クの立ち上がりエッジでデータを入力します また 総ビッ ト周期 TBIT は 667 ns です ジッ タの影響を考慮する と 有効なビッ ト周期 TAVAILABLE は

どのよ うになるでし ょ うか

2 逓倍クロ ッ ク回路からの CLK2X 出力によって75MHz ク ロ ッ ク入力から 150MHz ク ロ ッ クが生成されます 『Spartan-3 データ シート 』 の CLKOUT_PER_JITT_2X 仕様による と 2 逓倍クロ ッ ク出力である CLK2X には plusmn~200 ps (概算) のワース ト ケース ジッタがあ り ます 2 乗平均平方根を使用し

TBIT = ビッ ト周期時間

tTOTAL_JITTER = 総クロ ッ ク ジッ タ ク ロ ッ ク入力ジッタに DCM 出力ジッタ またはカスケード接続された DCM のジッタを加算したものです

tDUTY_CYCLE_DISTORTION = デューティ サイ クルのずれ デュアル データ レート (DDR) アプリケーシ ョ ンのみで必要であ り それ以外の場合はゼロです 使用する DCM ク ロ ッ ク出力によって データ シートに記載されている CLKOUT_DUTY_CYCLE_DLL または CLKOUT_DUTY_CYCLE_FX を使用します

JITTERTOTAL C( ) 700ps( )2300ps( )

2+ 762ps 381psplusmn= = =

TAVAILABLE TBIT tTOTAL_JITTERndash tDUTY_CYCLE_DISTORTIONndash=

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 65

R

DCM のジ ッ タplusmn200 ps にク ロ ッ ク ソースのジ ッ タ plusmn100 ps を加算する こ と によ って 総ジ ッ タtTOTAL_JITTER が plusmn0223 ns であるこ とがわかり ます

データはクロ ッ クの立ち上がりエッジでのみ入力されるためデューティ サイクルのずれが影響を与えるこ とはな く tDUTY_CYCLE_DISTORTION = 0 です

結果と して 有効な総クロ ッ ク周期 TAVAILABLE は総ビッ ト周期である 6667 ns から 6444 ns に減少します 結果と して ロジッ クは 150 MHz ではなく 1551831 MHz で動作します

クロック ジッ タを最小限にするための推奨デザイン高性能アプリ ケーシ ョ ンでは ク ロ ッ ク ジッタによって有効なビッ ト周期が短くな り ますシステム全体のクロ ッ ク ジッタを最小限にするためには次の推奨デザインを参考にしてください

適切な電力分散システム設計

電力プレーン デカップ リ ングを含む 電力分散システム (PDS) を適切に設計するこ とによって 安定した電力環境を作成し システム ジッ タを削減できます アプ リ ケーシ ョ ン ノー ト XAPP623 ではPDS の適切な設計にについて説明しています

bull XAPP623 電力分散システム (PDS) デザイン バイパスデカップリ ング キャパシタhttpwwwxilinxcomxappxapp623pdf

適切なプリン ト サーキッ ト ボードの設計

予想される動作周波数範囲およびアプ リ ケーシ ョ ン環境に適したプ リ ン ト サーキッ ト ボード設計を行ってください

bull WP174 PCB への効果的な FPGA 統合httpwwwxilinxcojppublicationswhitepaperswp_pdfwp174pdf

bull PCB チェッ ク リ ス トhttpsupportxilinxcomxlnxxil_prodcat_productjsptitle=si_pcbcheck

同時スイッチ出力 (SSO) の推奨デザイン

DCM へのク ロ ッ ク入力 または DCM からのク ロ ッ ク出力の信号に関連した問題を回避するために『Spartan-3 データ シート 』 に記載されている同時スイ ッチ出力 (SSO) 仕様に沿っているこ とを確認して ください

また 可能な限り DCM の入力または出力をスイ ッチング回数の多い IO の近くに配置するこ とを避けてください 特に 出力電圧幅が大きい IO または駆動電流が高い IO の場合にはこのこ とが重要です

仮想グランド ピンを DCM 入力および出力接続の近くに配置

さまざまな影響を受けやすく高周波数である DCM の入力または出力では仮想グランド ピンのよ うなユーザー IO ピンを追加して PCB へ別の接続を作成します このよ うな仮想グランド ピンは ジッタの影響を受けやすい DCM 信号に近接する IO パッ ドに配置して ください IO パッ ドは パッケージのピンまたはボール上だけでなく FPGA のダイ レベルでも近接しているこ とを確認して くださいBGA パッケージ上で隣接しているボールは 必ずしも FPGA 上にある隣接したパッ ドに接続する必要はあ り ません このよ うに設計するこ とによって 内部電圧降下が軽減され ジッ タが削減されます

仮想グランドを作成する場合は図 49 に示すよ うに IOB を GND (Low ロジッ ク レベル) を駆動する出力と して設定し その IOB を外部で直接グランド プレーンに接続します

tTOTAL_JITTER 100psplusmn( )2 200psplusmn( )2+ 22360psplusmn 0223nsplusmn= = =

TAVAILABLE 6667ns 0223nsndash 6444ns= =

66 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

VCCAUX 考察

デジタル ク ロ ッ ク マネージャは VCCAUX 入力によって電源が供給されます FPGA への電源供給入力である VCCAUX の過剰ノ イズは DCM の特性 特にジッタ特性を低下させます DCM のパフォーマンスを最適にするために 次に従ってください

1 図 50 に示すよ うに VCCAUX 電源供給 またはグランド上の変動を 1 ms 間で 10 mV よ り小さ くして ください この制限によって DCM は変動に適切に対応して動作します

2 図 50 に示すよ うに 電源供給のノ イズをピーク間で 200 mV 以内にして ください

3 VCCAUX および VCCO が同一の電源プレーンにある場合 すべての VCCAUXVCCO ピンを適切にデカップリ ングまたはバイパスする必要があ り ます ( 「適切な電力分散システム設計」 を参照してください) また 上記の 1 および 2 を維持できない場合 VCCAUX と VCCO を分離して使用してください

4 特に CLK2X 出力は電源シフ ト またはグランド シフ トの影響を受けます したがって すべての IOB および CLB でスイ ッチングがある場合には CLKFX_MULTIPLY =2 および CLKFX_DIVIDE=1 と設定されている CLKFX 出力はよ り よい特性を持つ出力を供給します DFS モードの場合 CLK2X 出力の更新が遅いのに対して CLKFB 迂回回路では 3 入力クロ ッ クごとにタ ップが更新されます

FACTORY_JF 設定の修正

適切に設計され 安定し 適切にデカップリ ングされた電源供給が FPGA 内のクロ ッ ク スキューおよびジッタを低減するためにもっと も有効な方法ですが FACTORY_JF 属性を 0xFFFF に設定することによって 問題の発生しているボード上のジッタを低減できる場合があ り ます FACTORY_JF=FFFF の場合 DCM はおよそ 20 入力クロ ッ クごとにタ ップ設定を更新し 周波数を基にしたデフォルト設定よ り もタ ップ更新の間隔は短くな り ます

図 49 DCM 入力または出力クロック信号への仮想グランド ピンの使用

IBUFG

OBUF

OBUF

To DCMCLKIN Input

Sensitive DCMClock Input

FPGAldquoVirtualrdquoground pin

Direct connectionto PCB groundplane

GND

GND

x462_49_061903

図 50 電圧降下を回避するための VCCAUX 考察

VCCAUXSupply(at FPGA)

dV lt 10 mV

dt lt 1 mS

Keep VCCAUX noiseenvelope to lt 200 mVpeak-to-peak

Avoid sudden changes fromone DC level to anotherKeep dVdt lt 10mVmS x462_50_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 67

R

ただし FACTORY_JF の設定値を大き くするこ とによって DCM では遅延ラインが頻繁に更新されジッ タがわずかに増加する (~30 ps) 可能性もあるため FACTORY_JF のデフォルト設定は最大値ではあ り ません 電源供給が不安定の場合には 発生した位相エラーが増加したジッタよ り大きい場合があり この場合には FACTORY_JF の設定値を大き くするこ とによって デザインのパフォーマンスを向上できます

その他 ビッ トス ト リーム生成の設定

DCM では 次の 2 つのビッ ト ス ト リーム生成 (BitGen) オプシ ョ ンがあ り ます

bull -g lck_cycle このオプシ ョ ンを使用する場合インスタンシエート された DCM で LOCKED 出力がアサート されるまで FPGA のコンフ ィギュレーシ ョ ン スタート アップ シーケンスを遅らせるこ とができます

bull -g DCMShutdown このオプシ ョ ンを使用する場合JTAG ポート を使用した部分再コンフ ィギュレーシ ョ ン または全体の再コンフ ィギュレーシ ョ ンを実行中に コンフ ィギュレーシ ョ ン ロジックに SHUTDOWN コマンドがロード される と DCM ロジッ クがリセッ ト されます

Project Navigator でのビッ トス ト リーム生成オプシ ョ ン

ISE 52i Project Navigator を使用する場合は 図 51 に示すよ うに [Processes for Source] ウ ィンド ウで [Generate Programming File] を右ク リ ッ ク し [Properties] を選択するこ とによってビッ ト ス トリーム生成オプシ ョ ンを設定します

詳細は 「BitGen スイ ッチおよびオプシ ョ ン」 を参照してください

コマンド ライン またはスクリプ ト を使用したビッ トス ト リーム生成オプシ ョ ン

設定可能なオプシ ョ ンを表示するためには 次のコマンドを入力します

bitgen -help spartan3

DCM LOCKED 出力とコンフ ィギュレーシ ョ ン ロジックの設定

DCM の STARTUP_WAIT 属性を使用するこ とによってDCM で LOCKED 出力がアサート されるまで FPGA で DONE 信号がアサート されるを遅らせFPGA のコンフ ィギュレーシ ョ ン スタート アップロジッ クを待たせるこ とができます ただし このためには設計段階で次の二つの設定を行う必要があり ます まず ロ ッ ク状態になってからコンフ ィギュレーシ ョ ンを完了する必要がある各 DCM に対するSTARTUP_WAIT 属性を TRUE に設定します 次に各信号がスタート アップの 6 ク ロ ッ ク サイクルで 図 52 に示すよ うに動作するよ うにビッ ト ス ト リーム生成オプシ ョ ンを変更します デバイスがコンフ ィギュレーシ ョ ン スタート アップ シーケンスを完了するためにはDCM が LOCKED をアサート後に十分なコンフ ィギュレーシ ョ ン ク ロ ッ ク サイ クルが必要です

図 51 Project Navigator でのビッ トス ト リーム生成 (BitGen) オプシ ョ ン

Processes for Current Source

Generate Programming File

Programming File Generation Report

RunRerunRerun AllStopOpen without Updating

Properties

x462_51_061903

68 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他R

A FPGA 内部のグローバル ト ラ イ ステート信号 (GTS_cycle) を開放し すべての IO 信号をイネーブルにします

B GTS_cycle 後に DCM で LOCKED がアサート されるまでスタート アップ ロジッ クが待機するよにサイクルを設定します DCM では クロ ッ ク信号でロ ッ ク状態になる前に ク ロ ッ クおよび可能ならばフ ィードバッ ク信号のよ うな外部入力が必要です

C DCM がロ ッ ク状態になった後 FPGA の内部グローバル書き込みイネーブル (GWE_cycle) 信号をアサート します

D 最後に 内部の DONE 信号をアサート します

図 53 に Project Navigator を使用したオプシ ョ ン設定を示します

スタート アップ位相タイ ミ ングおよび GWE_cycle と DONE_cycle のタイ ミ ングには柔軟性があ り ますがDCM で STARTUP_WAIT 属性を使用する場合は必ず LCK_cycle の前に GTS_cycle がなければなり ません シーケンスがこのよ うになっていない場合にはDCM がロッ クせずコンフ ィギュレーシ ョ ンが完了しません

図 52 DCM LOCKED 出力とスタートアップ ロジックの相互関係

0 1 2 3 4 5 6

DONE_cycle

Start-up CLK

GTS_cycle

GWE_cycle

LCK_cycle

Start-up Cycles

A

B

C

D

x462_52_062403

図 53 BitGen オプシ ョ ン

Process Properties

Startup options

Value

CCLK

6

3

5

4

Default (NoWait)

General Options Configuration Options Readback Options

Property Name

FPGA Startup Clock

Enable Internal Done Pipe

Done (Output Events)

Enable Outputs (Output Events)Release Write Enable (Output Events)Release DLL (Output Events)

Match Cycle (Output Events)

Drive Done Pin High

OK Cancel Default Help

Optionally set GWE_cycle to follow GTS_cycleensuring DCM(s) reset afterIOs activate

LCK_cycle indicates cyclewhere start-up logic waitsfor DCM(s) to assertLOCKED

Done_cycle after LCK_cycle GTS_cycle must occur

before LCK_cycle to enableIO pins

[Startup options]

[OK] x462_53_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 69

R

JTAG を使用した部分再コンフ ィギュレーシ ョ ンまたは全体の再コンフ ィギュレーシ ョ ン中の DCM リセッ ト

も う 1 つのビッ ト ス ト リーム オプシ ョ ンと して SelectMAP を使用した部分再コンフ ィギュレーシ ョン中 または JTAG ポート を使用した全体および部分再コンフ ィギュレーシ ョ ン中に FPGA にあるすべての DCM を リセッ トできます このオプシ ョ ンを使用する場合 SHUTDOWN コマンド シーケンス中に AGHIGH コンフ ィギュレーシ ョ ン コマンドが発行される とDCM がリセッ ト されます JTAGを使用して再コンフ ィ ギュレーシ ョ ンを行う場合には 必ず DCM を リ セッ トする必要があ り ますProject Navigator でビッ ト ス ト リーム生成オプシ ョ ンを変更するためには (「Project Navigator でのビット ス ト リーム生成オプシ ョ ン」 を参照) 図 54 に示すよ うに Configuration options タブをク リ ッ クし [Reset DCM if SHUTDOWN amp AGHIGH performed] オプシ ョ ンのチェッ ク ボッ クスをオンにして ください

一時的な CLKIN の停止厳密なアナログ測定を行っている間のシステム全体のノ イズを削減するため FPGA アプリ ケーシ ョ ンのその他の部分に影響を与えるこ とな く 一時的に DCM へのクロ ッ ク入力を停止できます これが可能である理由の一部はDCM がすべてデジタルで安定して機能するシステムであるためです DCM では最初に入力クロ ッ クに対してロ ッ ク し次に LOCKED 出力をアサートする必要があ り ます DCM がリセッ ト しない場合には デスキュー回路にほとんど影響を与えずに CLKIN 入力クロ ッ クを一時的に停止できますが 次の条件を満たす必要があ り ます

bull デバイスが冷却するこ とによるタ ップ遅延の変化の影響を最小限にするために ク ロ ッ クの停止時

間は 100 ms 未満である必要があ り ます

bull ク ロ ッ クが Low である間に停止する必要があ り12 周期分の High から再開する必要があ り ます

上述の条件は理論的にはクロ ッ ク入力ジッタの仕様に違反しますがDCM の LOCKED 出力は Highを維持し ク ロ ッ クが再び動作する際にも High を維持しています したがって LOCKED が High であるこ とは必ずしも有効なクロ ッ クが使用可能であるこ とにはなり ません このため実際にはクロ ック入力ジッタの仕様に違反していますが これらの条件を満たす限り問題はあ り ません

CLKIN を停止する際にはDCM のデジタル遅延ラインにあるクロ ッ クが出力されるため 1 から 8 出力クロ ッ ク サイクルが生成されます 同様に CLKIN が再開する場合には 遅延ラインが満たされる

図 54 再コンフ ィギュレーシ ョ ン中に DCM をリセッ トするためのコンフ ィギュレーシ ョ ン オプシ ョ ン

Process Properties

Configuration options

ValuePull Up

Pull UpFloatPull UpPull Down0xFFFFFFFF

General Options Startup options Readback Options

Property NameConfiguration Pin DoneJTAG Pin TCKJTAG Pin TDIJTAG Pin TDOJTAG Pin TMSUnused IOBsUserID Code (8 Digit Hexadecimal)Reset DCM if SHUTDOWN amp AGHIGH performed

OK Cancel Default Help

Click Configuration options tab

Click OK when finished

Pull Up

Check to reset all the DCMsin the FPGA if the AGHIGHcommand issued duringSHUTDOWN sequence

x462_54_062103

70 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

参考資料R

までの 1 から 4 ク ロ ッ クサイ クル間は出力クロ ッ クが生成されません 通常 遅延ラインが満たされるためは 2 または 3 ク ロ ッ ク サイ クルが必要です

また 入力ク ロ ッ クを停止するこ とによって 位相シフ ト を行う こ とができます この位相シフ トは

DCM による制御を中断させるこ とな く 1 から 4 ク ロ ッ ク サイクル後のクロ ッ ク出力から影響を与えます

図 55 に CLKIN 入力クロ ッ クを一時的に停止する例を示します また この図には CLK2X ク ロ ッ ク出力への影響も示しています

参考資料 bull 『Spartan-3 データ シート 』 (モジュール 2) デジタル  ク ロ ッ ク  マネージャの特長および機能httpwwwxilinxcojpbvdocspublicationsds099-2pdf

bull 『Spartan-3 データ シート 』 (モジュール 3) タイ ミ ングおよびジッタ特性

httpwwwxilinxcojpbvdocspublicationsds099-3pdf

bull ザイ リ ンクス ISE 52i ライブラ リ ガイ ドDCM プリ ミ ティブhttptoolboxxilinxcomdocsanxilinx5pdfdocsliblibpdf

bull Architecture Wizard 録音版 Web セミナーhttpsupportxilinxcojpsupporttrainingjapan-home-pagehtm

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcojpxappxapp622pdf

bull 『開発システム リ ファレンス ガイ ド』 15 章 「BitGen」 ビッ ト ス ト リーム生成プログラムおよびオプシ ョ ン 335-367 ページhttptoolboxxilinxcomdocsanxilinx5pdfdocsdevdevpdf

図 55 CLKIN の一時的な停止

CLKIN

CLK2X

Clock input must bestopped in Low phase andfor no more than 100 ms

When restarted the clockinput must generate a fullHigh half-period

x462_55_062403

改訂履歴

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 71

R

改訂履歴 次の表に このアプリ ケーシ ョ ン ノートの改訂履歴を示します

日付 バージョ ン 履歴

20030709 10 初版リ リース

  • Spartan-3 FPGA におけるデジタル クロック
  • マネージャ (DCM) の使用
    • 概要
    • はじめに
    • 概要
    • DCM 位置および クロック分散 ネットワーク インターフェイス
    • DCM 機能の概要
      • 遅延ロック ループ (DLL)
      • デジタル周波数合成 (DFS)
      • 位相シフト (PS)
      • ステータス ロジック
        • DCM プリミティブ
          • シンボル
          • 接続ポート
          • 属性プロパティおよび制約
            • その他のザイリン クス FPGA ファ ミリとの互換性
            • DCM 使用のため のクロック条件
              • 入力クロック周波数範囲
              • 出力クロック周波数範囲
              • クロック入力およびクロック フィードバック入力の変動
                • LOCKED 出力
                • RST 入力
                • DCM Wizard
                  • DCM Wizard の起動
                    • Windows のスタート ボタンから起動
                    • Project Navigator から起動
                      • Wizard 選択
                      • [General Setup]
                      • アドバンスド オプション
                      • クロック バッファ
                      • クロック周波数合成
                      • HDL 出力の生成
                        • VHDL および Verilog のインス タンシエーション
                          • Project Navigator の言語テンプレート
                          • VHDL および Verilog リファレンス ファイル
                            • クロック スキュー の低減
                              • クロック スキューとは
                              • クロック スキュー パフォーマンス低下の原因
                              • スキューの削除
                              • 過去のクロック動作から将来のクロック動作を予測
                              • ターゲットのロック
                              • 安定した単調なクロック入力
                              • 確実なソースからのフィードバック
                              • 内部クロック信号からのスキュー削除
                              • 外部クロック信号からのスキュー削除
                                • コンフィギュレーション後の DCM リセット
                                • なぜリセットする必要があるのか
                                  • 遅延ロック ループとは
                                    • 遅延ロック ループ (DLL)
                                    • 位相ロック ループ (PLL)
                                    • インプリメンテーション
                                    • DLL と PLL
                                      • スキュー調整
                                        • システム同期
                                        • ソース同期
                                        • タイミングの比較
                                            • クロック調整
                                            • 位相シフト- ク ロック周期の分数 でクロックを遅延
                                              • 12 クロック周期位相シフト出力
                                                • 12 周期位相シフト出力によるデューティ サイクルのずれの削減
                                                • デュアル データ レート (DDR) クロックの例
                                                  • 14 位相シフト出力
                                                    • DLL 周波数モードによる出力の有効性
                                                    • 5050 デューティ サイクル調整オプション
                                                    • 4 つの位相遅延クロックエッジ位相パルス
                                                      • ファイン位相シフト
                                                      • 固定ファイン位相シフト
                                                        • 固定ファイン位相シフト範囲
                                                        • 最小位相シフト
                                                        • その他の考察点
                                                        • DCM Wizard
                                                          • 動的ファイン位相シフト
                                                            • 動作
                                                            • 動的ファイン位相シフト範囲
                                                            • 制御
                                                            • DCM Wizard
                                                            • アプリケーション例
                                                                • クロック逓倍 クロック分周 周波数合成
                                                                  • 周波数合成アプリケーション
                                                                  • 入力クロックおよび出力クロックの周波数条件
                                                                  • 2 逓倍クロック (CLK2XCLK2X180)
                                                                  • クロック分周 (CLKDV)
                                                                    • CLKDV クロック調整
                                                                    • CLKDV のジッタは周波数モードおよび属性値が整数か整数ではないかによって決定されます
                                                                    • DCM Wizard
                                                                      • 周波数合成回路 (CLKFXCLKFX180)
                                                                        • DCM Wizard
                                                                            • クロックのフォ ワードミラー リバッファ
                                                                            • クロック ジッタお よび位相ノイズ
                                                                              • クロック ジッタとは
                                                                              • クロック ジッタの原因
                                                                              • クロック ジッタ特性の理解
                                                                                • サイクル間ジッタ
                                                                                • 周期ジッタ
                                                                                • ユニット インターバル(UI)
                                                                                  • 総ジッタの計算
                                                                                    • DLL 出力ジッタへの入力ジッタの加算
                                                                                      • カスケード接続された DCM のジッタ計算
                                                                                        • 例 1 すべての DCM が DLL 出力を使用する場合
                                                                                        • 例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合
                                                                                        • カスケード接続した DCM を使用する場合の推奨デザイン
                                                                                          • システム パフォーマンスにおけるジッタの影響
                                                                                              • クロック ジッタを最小限にするための推奨デザイン
                                                                                                • 適切な電力分散システム設計
                                                                                                • 適切なプリント サーキット ボードの設計
                                                                                                • 同時スイッチ出力 (SSO) の推奨デザイン
                                                                                                • 仮想グランド ピンを DCM 入力および出力接続の近くに配置
                                                                                                • VCCAUX 考察
                                                                                                • FACTORY_JF 設定の修正
                                                                                                    • その他
                                                                                                      • ビットストリーム生成の設定
                                                                                                        • Project Navigator でのビットストリーム生成オプション
                                                                                                        • コマンド ラインまたはスクリプトを使用したビットストリーム生成オプション
                                                                                                        • DCM LOCKED 出力とコンフィギュレーション ロジックの設定
                                                                                                        • JTAG を使用した部分再コンフィギュレーションまたは全体の再コンフィギュレーション中の DCM リセット
                                                                                                          • 一時的な CLKIN の停止
                                                                                                            • 参考資料
                                                                                                            • 改訂履歴
Page 8: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々

8 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLK0 ク ロ ッ ク出力 位相シフ トは 0degであ り CLKIN と同一周波数の出力ですDUTY_CYCLE_CORRECTION 属性が TRUE の場合は デューティ サイクルが 50 に調整されます DLL 機能にはフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK90 ク ロ ッ ク出力 90deg(14 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません またDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK180 ク ロ ッ ク出力 180deg(12 周期) 位相シフ ト した CLKIN と同一周波数であ りDUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイクルが 50 に調整されます 「12 ク ロ ッ ク周期位相シフ ト出力」 および 「14 位相シフ ト出力」 を参照してください

CLK270 ク ロ ッ ク出力 270deg(34 周期) 位相シフ ト した CLKIN と同一周波数であ りDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません また DUTY_CYCLE_CORRECTION 属性が TRUE の場合はデューティ サイ クルが 50 に調整されます 「14 位相シフ ト出力」 を参照してください

CLK2X ク ロ ッ ク出力 位相シフ トは 0degであ り 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合には 常にデューティ サイクルが 50 とな りDLL へのフ ィードバッ ク ソース と して CLK0 または CLK2X を使用する必要があ り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLK2X180 ク ロ ッ ク出力 180deg位相シフ ト し 周波数が 2 倍のクロ ッ ク出力ですDLL_FREQUENCY_MODE 属性が High に設定されている場合は使用できません 使用可能な場合はデューティ サイクルが常に 50 とな り ます これは 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力です 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKDV ク ロ ッ ク出力 分周クロ ッ ク出力であ り CLKDV_DIVIDE 属性で制御されます DLL_FREQUENCY_MODE 属性が High であ り CLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 です また CLKDV_DIVIDE 値が整数ではないではない場合はロ ッ ク状態になるまでに必要な時間が長くなり ます これはクロ ッ ク分周 (CLKDV) 出力です

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 9

R

CLKFX ク ロ ッ ク出力 合成クロ ッ ク出力であ り CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性で制御されます デューティ サイクルは常に 50 です CLKFX または CLKFX180 ク ロ ッ ク出力のみが使用されている場合には クロ ッ ク フ ィードバッ クは必要あ り ません 「周波数合成回路 (CLKFX CLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKFX180 ク ロ ッ ク出力 CLKFX を 180deg位相シフ ト した (CLKFX を反転したよ うに見える) 合成クロ ッ ク出力であ り デューティ サイ クルは常に 50 です CLKFX ク ロ ック出力または CLKFX180 ク ロ ッ ク出力が DCM で使用されている場合には フ ィードバッ ク ループは必要あ り ません 「周波数合成回路 (CLKFXCLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

STATUS[0] 出力 動的位相シフ トがオーバーフローであるこ とを示します 動的ファイン位

相シフ トの制御出力で 動的位相シフ トが最小値または最大値に達してい

るこ とを示します 制限値は plusmn255 または位相シフ ト遅延ラインの最後に達した場合は その値以下になり ます 「動的ファイン位相シフ ト 」 を参照し

てください

STATUS[1] 出力 CLKIN 入力が停止したこ とを示し CLKFB フ ィードバッ ク入力が接続されている場合のみに使用できます LOCKED 出力がアサート されるまではリセッ ト状態であ り アクティブになるためには CLKIN が 1 サイクル以上必要です CLKIN が最初から ト グルしない場合にはアサート されません

STATUS[2] 出力 CLKFX 出力または CLKFX180 出力が停止したこ とを示します 周波数合成回路 (CLKFX CLKFX180) を参照してください

STATUS[73]

出力 予約済み

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

0 位相シフ トは制限値に達していません

1 位相シフ トが制限値に達しています

0 CLKIN がト グルしています

1 CLKIN がト グルしていません

0 CLKFX 出力および CLKFX180 出力がト グルしています

1 CLKFX 出力および CLKFX180 出力がト グルしていませんただしLOCKED 出力が High に維持されている場合があ ります

10 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

LOCKED 出力 すべての DCM 機能は CLKIN の周波数にロッ ク しています CLKIN が指定された範囲内 ( 「DCM 使用のためのクロ ッ ク条件」 に記載) である場合に クロ ッ ク出力が有効です 「周波数合成回路 (CLKFX CLKFX180)」を参照してください

PSDONE 出力 動的位相シフ トが完了したこ とを示します 「動的ファイン位相シフ ト 」 を

参照してください

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

0 DCM は CLKIN の周波数に対してロ ッ クする過程であ りDCM のクロ ッ ク出力は無効です

1 DCM は CLKIN の周波数に対してロ ッ ク しDCM のクロ ック出力は有効です

1 rarr 0 DCM のロ ッ ク状態が解除され DCM を リセッ トする必要があ り ます

0 位相シフ トが行われていない または実行中です

1 要求された位相シフ トは完了しています この出力が PSCLK の 1 サイクル間 High になった後次の位相シフ ト を実行できます

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 11

R

属性 プロパティ および制約

表 4 にデジタル ク ロ ッ ク マネージャの属性を示しますすべての属性は設計段階で設定されコンフ ィギュレーシ ョ ン中にプログラムされます 動的ファイン位相シフ ト以外では FPGA アプリ ケーシ ョ ンの実行中にこれらの設定を変更するこ とはできません 使用するデザイン入力ツールに合わせて lt属性gt=lt設定gtを使用し 属性を設定します

表 4 DCM 属性

属性 可能な設定および説明

DLL_FREQUENCY_MODE CLKIN 入力 PSCLK 入力 および遅延ロッ ク ループ (DLL) からの出力クロ ッ クの有効周波数範囲を指定します DLL ク ロ ッ ク出力には CLK0 CLK90 CLK180 CLK270CLK2X CLK2X180 CLKDV が含まれます

CLK_FEEDBACK フ ィードバッ ク ク ロ ッ クの周波数を指定します

DUTY_CYCLE_CORRECTION DLL からの出力である CLK0 CLK90 CLK180 および CLK270 に対する 50 デューティ サイ クル調整をイネーブルまたはディ スエーブルに設定します

CLKDV_DIVIDE CLKDV 出力の周波数を指定します 設定可能な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 です

CLKDV_DIVIDE が整数ではない場合 ロ ッ クするために必要な時間が長くなり 出力ジッ タが増加します

CLKFX_MULTIPLY CLKFX 出力および CLKFX180 出力の周波数を逓倍する場合の係数を指定します この値は CLKDV_DIVIDE 属性の値と と もに使用されます CLKFX_MULTIPLY に設定可能な範囲は整数値の 2 から 32 であ り デフォルトは 4 です

LOW デフォルトです DLL は低周波数モードで動作し DLL に関連したすべての出力が有効です ク ロ ッ ク入力およびクロ ッ ク出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DLL の指定範囲内にあ り ます

HIGH DLL は高周波数モードで動作します 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力 および 14 位相シフ ト出力 CLK90 と CLK270 は無効です CLKDV_DIVIDE 属性が整数以外の場合 CLKDV 出力のデューティ サイクルは 50 になり ません ク ロ ッ ク入力およびクロ ッ ク出力の周波数は『Spartan-3 データ シート 』 に記載されている高周波数 DLL の指定範囲内にあり ます

1X デフォルトであ り CLK0 フ ィードバッ クです周波数は CLKIN と同一です

2X CLK2X フ ィードバッ クであ り 周波数は CLKIN の 2 倍です

なし フ ィードバッ ク ク ロ ッ クはあ り ません CLKFX 出力または CLKFX180 出力のみを使用している場合に可能です

TRUE デフォルトであ り デューティ サイクルは 50 に調整されます

FALSE デューティ サイクル調整は行われません

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

12 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLKDV_DIVIDE CLKFX 出力および CLKFX180 出力の周波数を分周する場合の係数を指定します この値は CLKFX_MULTIPLY 属性の値と と もに使用されます設定可能な範囲は整数値の 1 から 32 であ り デフォルトは 1 です

PHASE_SHIFT この属性は CLKOUT_PHASE_SHIFT 属性が FIXED または VARIABLE に設定されている場合にのみ使用できます CLKIN とすべての DCM ク ロ ッ ク出力間の立ち上がりエッジにおけるスキューをコンフ ィギュレーシ ョ ンで定義し DCM ク ロ ッ ク出力を位相シフ ト させます

スキューまたは位相シフ ト値は整数で指定されます この整数値は 次の等式に示すよ うに

ク ロ ッ ク周期の分数で表され範囲は -255 から 255 になり ますデフォルト値は 0 であ り実際に設定可能な値は入力クロ ッ ク周波数によって異なり ます また TCLKIN gt FINE_SHIFT_RANGE の場合には 実際の範囲はよ り小さ くな り ますFINE_SHIFT_RANGE は遅延ラインにおけるすべてのタ ップの総遅延を示します 詳細は「ファ イン位相シフ ト 」 を参照してください

CLKOUT_PHASE_SHIFT 位相シフ ト モードを指定します PHASE_SHIFT 制約と共に使用し DCM のデジタル位相シフ ト (DPS) 機能をインプリ メン ト します また この設定は DLL および DFS からのすべてのクロ ッ ク出力に反映されます 詳細は 「ファ イン位相シフ ト 」 を参照してください

DESKEW_ADJUST FPGA ク ロ ッ ク入力ピンと DCM 出力クロ ッ ク間のクロ ッ ク遅延調整を制御します 「スキュー調整」 を参照してください

この設定を DCM ク ロ ッ ク出力の位相シフ トに使用しないでください 正確な位相シフ ト を行う場合にはCLKOUT_PHASE_SHIFT 制約または PHASE_SHIFT 制約を使用してください

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

なし デフォルトです CLKIN および CLKFB は同位相 (スキューなし ) であ り位相関係は変更できません PHASE_SHIFT = 0 の場合の FIXED 設定と同一です

FIXED 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定され アプ リ ケーシ ョ ンでは変更できません

VARIABLE 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定されますが 動的位相シフ ト制御信号 PSEN PSCLK PSINCDEC および PSDONE を使用してアプリ ケーシ ョ ンで変更可能です

SYSTEM_SYNCHRONOUS デフォルトであ り すべてのデバイスがシステム全体

に共通のクロ ッ ク ソースで動作します

SOURCE_SYNCHRONOUS データ ソースから クロ ッ クが入力されます ソース同期アプリ ケーシ ョ ンがその一例です

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 13

R

DFS_FREQUENCY_MODE DCM のデジタル周波数合成 (DFS) からのクロ ッ ク出力である CLKFX および CLKFX180 に有効な周波数範囲を指定します DLL ク ロ ッ ク出力が使用されている場合はDLL_FREQUENCY_MODE によって CLKIN 入力の周波数範囲がよ り制限されます

STARTUP_WAIT DCM の LOCKED 信号のアサート よ り先に FPGA コンフ ィギュレーシ ョ ンの DONE 信号を High にするかど うかを制御します

2 つ以上の DCM をコンフ ィギュレーシ ョ ンしている場合は すべての DCM がロ ッ クする必要があ り ます

CLKIN_DIVIDE_BY_2 CLKIN が DCM ブロ ッ クに入力される前に 周波数を 2 分周します アプリ ケーシ ョ ンによっては 入力クロ ッ クの周波数を適切な範囲内に低減できます

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

LOW デフォルトであ り DFS は低周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合 CLKIN 入力の周波数範囲はその出力によって変化します

HIGH DFS は高周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている高周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合CLKIN 入力の周波数範囲はその出力によって変化します

FALSE デフォルトであ り DCM がロ ッ ク状態になるのを待たずに DONE 信号がアサート されます

TRUE DCM がロ ッ ク状態になるまで DONE 信号は High になり ません ただし この STARTUP_WAIT は LOCKED 信号が High になるのを妨げるものではあり ません またFPGA のスタート アップ シーケンスのサイクルの始めに LCK (ロ ッ ク ) サイクルを挿入するよ うに修正する必要があ り ます ( 「ビッ ト ス ト リーム生成の設定」 を参照してください) 通常は DONE サイクルまたは GWE サイクルがその後に続きます

FALSE デフォルトであ り CLKIN は直接 DCM ブロ ッ クに入力されます

TRUE CLKIN が DCM に入力する前に その周波数を 2 分周され デューティ サイクルは約 50 に調整されます これは 高周波数のクロ ッ クを使用し DCM の入力クロ ッ クの周波数条件またはデューティ サイ クル条件を満たす場合に有効です また 周波数モードを決定する場合 または位相シフ ト範囲を算出する場合に クロ ッ ク周波数を 2 分周します

14 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他のザイリンクス FPGA ファ ミ リ との互換性R

その他のザイリンクス FPGA ファミ リ との互換性

Spartan-3 のデジタル ク ロ ッ ク マネージャ (DCM) は Virtextrade-II および Virtex-II Pro FPGA ファ ミ リで使用されている DCM とほぼ同様の機能を持ちますが Spartan-3 DCM は第三世代の DCM デザインであ り さ らに機能が向上しています 特に Virtex-II デバイス と比較する と Spartan-3 デバイスはVCCAUX 供給電源における ノ イズ耐性が改善されVirtex-IIPro ファ ミ リ よ り も位相シフ ト機能に柔軟性があ り ます 出力の周波数制限値はVirtex-II および Virtex-II Pro ファ ミ リの DCM の方が高くなっています

またSpartan-IIIIE と比較する と Spartan-3 DCM の遅延ロッ ク ループ (DLL) 機能は大幅に改善され Spartan-IIIIE DLL の機能をすべて備えているだけでなく 周波数合成および位相シフ ト機能が追加されました Spartan-3 の周波数合成では 最大 32 までの係数を使用して入力クロ ッ クを逓倍しますが Spartan-IIIIE DLL での周波数合成機能は 2 逓倍までです 同様に Spartan-3 DCM の分周機能はSpartan-II DLL よ り広範囲に対応しています

DCM 使用のためのクロック条件

DCM は その機能に最大限の柔軟性があるよ うに設計されていますが ク ロ ッ クの周波数と安定性周波数の変動 およびクロ ッ ク ジッタにいくつかの条件があ り ます

入力クロック周波数範囲

DCM のクロ ッ ク入力周波数は アプ リ ケーシ ョ ンにおける DLL ユニッ ト DFS ユニッ ト またはその両方によって決定されます

表 5 に デジタル周波数合成 (DFS) ユニッ トでの入力クロ ッ クCLKIN の周波数範囲を示します DFS ユニッ ト を単独で使用する場合の周波数範囲は DLL 入力ニッ ト よ り も広くな り ますが 両ユニッ ト を使用する場合には よ り厳しい周波数条件を DLL に適用する必要があ り ます 表には データ シートに記載されている仕様名および概算値の 1 つを示していますが実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

FACTORY_JF DCM の DLL ユニッ トでタ ップ設定を修正する頻度を制御します この設定は DLL エレメン トのジッ タ特性に影響を与え DLL_FREQUENCY_MODE 属性に基づいて自動的に指定されます

設計方法と して推奨された場合以外は デフォルト設定を変更しないでください (「FACTORY_JF 設定の修正」 を参照してください)

LOC 図 1 に示すよ うに DCM の物理的な配置位置を指定します

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

DLL_FREQUENCY_MODE FACTORY_JF

LOW 0xC080

HIGH 0xF0F0

DCM_X0Y0 DCM の左下

DCM_X1Y0 DCM の右下 (XC3S50 では設定不可)

DCM_X0Y1 DCM の左上

DCM_X1Y1 DCM の右上 (XC3S50 では設定不可)

DCM 使用のためのクロック条件

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 15

R

表 6 に遅延ロッ ク ループ (DLL) ユニッ トでの入力クロ ッ ク CLKIN の周波数範囲を示します DLLが単独で使用されている場合と DFS と と もに使用されている場合では 同一の周波数条件が適用されます 表には低周波数モードおよび高周波数モードの場合の DLL の周波数範囲を示しています この周波数モードはDLL_FREQUENCY_MODE 属性によって指定されます 表にはデータ シートに記載されている仕様名および概算値の 1 つを示していますが 実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

出力クロック周波数範囲

DCM の出力クロ ッ クに対しても周波数範囲が指定されています 詳細は 「入力クロ ッ クおよび出力クロ ッ クの周波数条件」 を参照して ください

クロック入力およびクロック フ ィードバック入力の変動「安定した単調なクロ ッ ク入力」 で説明するよ うに DCM では安定性があ り単調なクロ ッ ク入力を使用する必要があ り ます しかし DCM 機能の柔軟性を最大限に使用しよ う とする場合 CLKIN で発生するクロ ッ ク ジッタおよび CLKIN 入力と CLKFB 入力の変動をある程度まで許容しなければなり ません

CLKIN 入力におけるジッタには 2 つのタイプがあ り ます 1 つはサイ クル間ジッタであ り このジッタは CLKIN 入力周期があるサイ クルから次のサイ クル間でどの程度の変化を許容できるかを示します 表 7 にデータ シートに記載されている仕様名および概算値を含むサイクル間ジッタの最大許容範囲を示します

表 5 デジタル周波数合成 (DFS) ユニッ トのクロック入力周波数範囲

機能 最小周波数 最大周波数

デジタル周波数合成 (DFS) CLKIN_FREQ_FX_MIN ~ 100 MHz

CLKIN_FREQ_FX_MAX ~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 6 遅延ロック ループ ユニッ トのクロック入力周波数範囲

機能

DLL 周波数モード属性 (DLL_FREQUENCY_MODE)

= LOW = HIGH

最小周波数 最大周波数 最小周波数 最大周波数

遅延ロ ッ ク ループ (DLL)

CLKIN_FREQ_DLL_LF_MIN

~ 24 MHz

CLKIN_FREQ_DLL_LF_MAX

~ 180 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 48 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 7 サイクル間ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_CYC_JITT_FX_LF~ plusmn300 ps

CLKIN_CYC_JITT_FX_HF~ plusmn150 ps

遅延ロッ ク ループ (DLL) CLKIN_CYC_JITT_DLL_LF~ plusmn300 ps

CLKIN_CYC_JITT_DLL_HF~ plusmn150 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

16 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

LOCKED 出力R

も う 1 つのジッタは 周期ジッタ と呼ばれ クロ ッ ク周期間の最大変動を示します サイクル間ジッタがあるサイクルと次のサイクルの差を示すのに対し 周期ジッタはクロ ッ ク周期全体での変化範囲を示

します 表 8 にデータ シートに記載されている仕様名および概算値を含む周期ジッタの最大許容範囲を示します

DCM の安定性に影響を与える別の要素は DLL で使用される ク ロ ッ ク フ ィードバッ ク パスですフ ィードバッ ク パス遅延の変動は 表 9 に示す範囲内でなければな り ません ただし グローバル クロ ッ ク ラ インに接続される場合はチップ上の変動が最小になるため こ こに示した範囲制限は外部フ ィードバッ ク パスにのみ適用されます

LOCKED 出力 DCM の LOCKED 出力は すべての DCM 機能が CLKIN 入力にロ ッ ク している こ と を示し ますLOCKED 信号がアサート される場合にはFPGA アプリ ケーシ ョ ン内で出力クロ ッ クを使用できます

図 5 に LOCKED 出力信号の動作を示しますLOCKED 出力は FPGA のコンフ ィギュレーシ ョ ン終了直後に Low になり RST 入力がアサート されている場合は常に Low です

コンフ ィギュレーシ ョ ン後 DCM は CLKIN 信号の有効無効に関わらず 常にロ ッ ク状態になろ う とします入力クロ ッ クが安定していない場合にはCLKIN 入力が安定するまでFPGA 回路 で RST 入力をアサートする必要があ り ますDLL では CLKIN 入力および CLKFB 入力の両方を使用し これらの立ち上がりエッジが同位相である時に完全にロ ッ ク状態であるこ とを確認しますDFS ではCLKINを使用してク ロ ッ クの周波数が有効であるかを確認します また DCM がロ ッ ク状態になるために数千クロ ッ ク サイクルのサンプルが必要となる場合があ り ます

DCM の CLKIN に対するロッ クが完了する とLOCKED 出力が High にアサート されDCM のクロ ック出力が有効となるため FPGA アプリ ケーシ ョ ン内でこれらの出力を使用できます 『Spartan-3 データ シート 』 の タイ ミ ングに関する章には ロ ッ クに必要な時間のワース ト ケースが記載されています通常 クロ ッ ク周波数が高いほどDLL 出力は短時間でロッ ク状態になり ます またDFS 出力がロックするためには非常に長い時間が必要とな り ます この時間は 逓倍または分周の係数によって変化し

ますが これらの係数が小さいほど時間は短縮します

システム ク ロ ッ クが安定してから FPGA のコンフ ィギュレーシ ョ ンを完了させるために オプシ ョ ンと して DCM がロ ッ ク状態になるまでコンフ ィギュレーシ ョ ンの完了を遅らせるこ とができます この機能は STARTUP_WAIT 属性で制御します

LOCKED が High になる前の DCM ク ロ ッ ク出力信号の動作は保証していません LOCKED が Highになる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な波形が含まれている場合があ ります

表 8 周期ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_PER_JITT_FX_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_FX_HF~ plusmn1000 ps (plusmn1 ns)

遅延ロッ ク ループ (DLL) CLKIN_PER_JITT_DLL_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_DLL_HF~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 9 外部フ ィードバック パス遅延範囲

解説 指定範囲

チップ外にある CLKFB フ ィードバッ ク パス遅延の最大許容範囲 CLKFB_DELAY_VAR_EXT ~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

RST 入力

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 17

R

CLKIN 入力の周波数が指定範囲内である場合DCM は内部遅延のタップを調整し ロ ッ ク状態を維持しますが その制限を大幅に満たしていない場合には ロ ッ ク状態が解除され LOCKED 出力が Lowになり ます

一度 DCM のロ ッ ク状態が解除される と 自動的に再びロッ ク状態に戻るこ とはあ り ません ロ ッ ク状態が解除された場合つま り LOCKED が High から Low となった場合にはFPGA アプリ ケーシ ョ ンでは RST 入力を使用して DCM を リセッ トするなどの適切な方法を使用して 再びロ ッ ク状態にする必要があ り ます

RST 入力 非同期の RST 入力は DCM ロジッ クを リ セッ ト してコンフ ィギュレーシ ョ ン後の設定に戻しますRST ピンはFPGA を再コンフ ィギュレーシ ョ ンする場合または許容範囲を超えている入力周波数を変更する場合に使用して ください このピンはアクティブ High であ り ダイナミ ッ ク信号またはグランドに接続する必要があ り ます また RST 入力は最低 2ns 間アサート しなければなり ません

コンフ ィギュレーシ ョ ン後に 入力ク ロ ッ ク周波数が安定していない場合 ク ロ ッ クが安定するまで

RST をアサー ト して ください また 外部フ ィードバッ クを使用している場合は コンフ ィギュレーシ ョ ン直後に DCM を リセッ ト します31ページの図 20 に SRL16 シフ ト レジスタ プリ ミ ティブを使用した リセッ ト方法の例を示します

LOCKED 周波数が High から Low になる場合のよ うに DCM のロ ッ ク状態が解除される と FPGAアプリ ケーシ ョ ンでは RST をアサート しDCM に入力クロ ッ ク周波数に対して再ロ ッ ク させる必要があ り ます

図 5 LOCKED 出力の機能的な動作

LOCKED HIGH

FPGA RST

Y

N

Y

N

FPGA

LOCKED LOW

CLKIN

LOCKED LOW

RST

x462_05_062103

CLKIN

RST

RST

18 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

DCM の LOCKED 出力が High の場合 RST がアサート される と この LOCKED 出力は 4 ク ロ ッ クサイ クル以内に Low になり ます このため リセッ ト後は DCM を再びロ ッ ク状態にさせます

また RST をアサートするこ とによって DCM の遅延タップ位置がゼロに戻り このタ ップ位置を変更するこ とによってDCM のクロ ッ ク出力ピンでグ リ ッチが発生する可能性があ り ます 同様にRSTはクロ ッ ク出力のデューティ サイクルにも影響を与えます

さ らに RST がアサート される と現在の可変位相シフ ト値は PHASE_SHIFT 属性で指定された値に戻り ます

DCM Wizard DCM を使用するアプリ ケーシ ョ ンを容易にするために ザイ リ ンクス ISE には 順を追って DCM を設定できるソフ ト ウェア Wizard が含まれています 図 6 に示すよ うに DCM Wizard を使用するこ とによってVHDL 構文または Verilog 構文で DCM をインスタンシエートするベンダ固有のロジッ ク合成ファイルを生成できます また DCM Wizard では特定のインプリ メンテーシ ョ ン用にユーザー制約ファイル (UCF) を生成できますさ らにすべてのユーザー仕様はXilinx Architecture Wizard (XAW)設定ファイルに保存されます

DCM Wizard の起動DCM Wizard を起動するためにはWindows のスタート ボタンから起動するまたはザイ リ ンクス ISEProject Navigator ソフ ト ウェアから起動する という 2 つの方法があ り ます

Windows のスタート ボタンから起動

DCM Wizard を Windows スタート ボタンから起動する場合は[スタート ] rarr [すべてのプログラム] rarr[Xilinx ISE 5] rarr [アクセサリ ] rarr [Architecture Wizard] をク リ ッ ク します 図 7 に設定ウ ィンド ウを示します

bull DCM のオプシ ョ ン設定を保存する Xilinx Architecture Wizard (xaw) ファ イル名を入力します

bull こ こで [Browse] ボタンをク リ ッ ク して xaw ファ イルを選択するこ と も可能です

bull 出力ファイルのロジッ ク合成言語を VHDL または Verilog から選択します

bull ロジッ ク合成ツールを選択します DCM Wizard では 指定した合成ツールに応じて ベンダ固有の出力ファイルが生成されます

bull ターゲッ ト デバイスに Spartan-3 を選択します

図 6 DCM Wizard の DCM 設定用グラフ ィ カル インターフェイス

DCM Wizard

User contraintsfile (UCF)

Vendor-specificVHDL or Verilog

Xilinx ArchitectureWizard (XAW)

settings file

Graphically configure aSpartan-3 Digital ClockManager (DCM)

x462_06_061803

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 19

R

Project Navigator から起動

Project Navigator のメニュー バーから または [Sources in Project] ウ ィンド ウから DCM Wizard を起動できます メニュー バーで [Project] rarr [New Source] を選択するか [Sources in Project] ウ ィンドウで右ク リ ッ ク し [New Source] を選択してください

図 8 に示すよ う に リ ス ト か ら [Architecture Wizard] を選択し ます Xilinx Architecture Wizard(xaw) ファ イル名を入力し そのファイルを保存するディ レク ト リ を選択した後 [Next] をク リ ッ クします

図 7 Architecture Wizard の設定

図 8 Project Navigator での Architecture Wizard 設定

Xilinx Architecture Wizard Setup

My_Spartan-3 Browse

XAW File

Output File Type

VHDL Verilog

XST

Synthesis Tool

XC3S1000-FT256-4 Select

OK Cancel

Part

DCM

Spartan-3

[OK]

x462_07_061803

New

User DocumentVHDL ModuleCoreGen IPSchematicVHDL LibraryVHDL PackageVHDL Test BenchTest Bench WaveformBMM FileMEM FileImplementation Constraints FileArchitecture WizardState Diagram

My_Spartan-3

F ile Name

MyDirectory

Lo cation

Add to Project

lt Back Next gt Cancel Help

DCM

[Next]

Architecture Wizard

x462_08_061803

20 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

Wizard 選択前述した手順はすべての ISE Architecture Wizard に共通ですが Spartan-3 FPGA は図 9 に示す DCMWizard をサポート します こ こで [OK] をク リ ッ ク し 次に進みます

[General Setup] 図 10 に示すよ うに ほとんどのオプシ ョ ンは DCM Wizard の [General Setup] ダイアログ ボッ クスで設定します 楕円の枠内には その設定に対応する DCM プリ ミ ティブ属性名を示します

bull DCM のインスタンス名を入力します このインスタンス名は Verilog または VHDL 出力ファイル内で使用されます

bull 最終的なアプリ ケーシ ョ ンにおける出力および機能を選択するためには 必要な DCM ク ロ ッ ク出力のチェッ ク ボッ クスをオンにします チェッ ク ボッ クスをオンにした出力に対しては それに関連したオプシ ョ ンの設定が可能になり ます

bull CLKIN ク ロ ッ ク入力の周波数を入力します 周波数を MHz で指定するかまたはクロ ッ ク周期をns で指定して ください この値によって DCM の DLL_FREQUENCY_MODE 属性が設定されます

bull CLKIN ソースが FPGA の内部であるか外部であるかを指定します[External] を選択した場合DCM Wizard は自動的にグ ローバル バッ フ ァ入力 (IBUFG) プ リ ミ テ ィ ブを挿入し ます[Internal] を選択した場合は ソース信号は HDL ソース ファ イル内の ト ップ レベル入力となり ます

bull CLKDV 出力をオンにした場合は クロ ッ ク分周回路の [Divide by Value] 値を指定します この値によって DCM の CLKDV_DIVIDE 属性が設定されます

bull DCM へのフ ィードバッ ク パスを指定します CLKFX 出力または CLKFX180 出力のみを使用する場合は [None] を選択します これらの出力を使用しない場合は フ ィードバッ クが必要ですFPGA 内部からのフ ィードバッ クを使用する場合は [Internal] を選択し外部からのフ ィードバック ループを使用する場合は [External] を選択します さ らに DCM フ ィードバッ クのソースをCLK0 (1X) または CLK2X (2X) から選択します この選択によってDCM の CLK_FEEDBACK属性が設定されます

図 9 Spartan-3 FPGA でのみ選択可能な DCM Wizard

Xilinx Architecture Wizard Selection

DCM Wizard

OK Cancel

Select Wizard

Spartan-3 DCM Wizard [OK]

x462_09_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 21

R

bull すべての DCM 出力における位相シフ トの有無を指定します デフォルト設定は位相シフ ト なし (None) です 位相シフ トが必要な場合は 位相シフ ト値と して [Fixed] または [Variable] を選択します [Variable] を選択するこ とによって 動的位相シフ ト制御 PSEN PSINCDECPSCLK および PSDONE が使用可能となり DCM の CLKOUT_PHASE_SHIFT 属性が指定されます Fixed モードおよび Variable モードのいずれを選択する場合でも 固定位相シフ ト値あるいは動的位相シフ トの初期値を決定する [Phase Shift Value] を指定します この値によってDCM の PHASE_SHIFT 属性が設定されます

bull アドバンス ド オプシ ョ ン ウ ィンド ウを開く場合は [Advanced] ボタンをク リ ッ ク します

bull 設定の完了後 [Next] をク リ ッ ク し ク ロ ッ ク バッファ ダイアログ ボッ クスに進みます

アドバンスド オプシ ョ ン図 11 に示すアドバンス ド オプシ ョ ン ウ ィンド ウで さ らに詳細な DCM オプシ ョ ンを設定できます

bull デフォルトではDCM は FPGA のコンフ ィギュレーシ ョ ンに対して影響を与えませんが [Yes] をク リ ッ ク した場合は DCM が LOCKED 出力をアサートするまで FPGA コンフ ィギュレーシ ョンで DONE 信号のアサート を遅らせるこ とができます この設定は DCM の STARTUP_WAIT属性で定義します このよ うに [Yes] を選択した場合は ビッ ト ス ト リーム生成オプシ ョ ンの追加

図 10 [General Setup] ダイアログ ボックスでの DCM オプシ ョ ン設定

Xilinx DCM Wizard - General Setup

MY_DCMDCM Instance Name

Input Clock Frequency

MHz ns 2

Phase Shift Value

30

Advanced

Source

CLK0

CLK90

CLK180

CLK270

CLKDV

CLK2X

CLK2X180

CLKFX

CLKFX180

LOCKED

STATUS

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDECPSCLK

CLKIN SourceInternal

External

Divide By Value

FeedbackInternal External None

Value 1X 2X

Duty Cycle Correction

Yes No

Phase ShiftNone Fixed Variable

23 More Info

lt B ack Next gt Cancel

DCM

CLKFX CLKFX180

CLKDV

MHz ns

Advanced

(BUFG)

[Yes] CLK0CLK90 CLK180 CLK270

50CLK0 (1X)CLK2X (2X)

[Next]

CLKDV

[Fixed] PSEN PSINCDECPSCLK

[Variable]

DLL_FREQUENCY_MODE

CLK_FEEDBACK

CLKDV_DIVIDE

CLKIN IBUFG

[External][Internal]

DUTY_CYCLE_CORRECTIONCLKOUT_PHASE_SHIFT

DCM

PHASE_SHIFT

x462_10_061803

22 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

変更が必要です この変更については 「DCM LOCKED 出力と コンフ ィギュレーシ ョ ン ロジッ クの設定」 で説明します

bull ある特定の DCM において CLKIN 入力の周波数が高すぎる場合には [Divide Input Click by 2]の [Yes] をク リ ッ ク し 入力周波数を半減させて ください これによって DCM ブロ ッ クに入力前のデューティ サイ クルは約 50 にな り ます この設定は DCM の CLK_FEEDBACK 属性で定義します

bull ソース同期のデータ転送が必要なアプリ ケーシ ョ ンでは [DCM Deskew Adjust] 値を [SOURCE_SYNCHRONOUS] に変更します SOURCE_SYNCHRONOUS または SYSTEM_SYNCHRONOUS 以外の値を使用する場合はザイ リ ンクスにお問い合わせください この設定は DCM の CLK_FEEDBACK 属性を定義します 「スキュー調整」 を参照して ください

bull [OK] をク リ ッ ク し 変更を適用して [General Setup] ウ ィンド ウに戻り ます

クロック バッファ次に DCM の各クロ ッ ク出力に対するクロ ッ ク バッファを定義します(図 12 参照) DCM Wizard のデフォルト設定では 自動的にすべての DCM ク ロ ッ ク出力にグローバル バッファ (BUFG) を使用しますが Spartan-3 デバイスでは 上辺および下辺のそれぞれにある 4 つのグローバル バッファを同一辺にある 2 つの DCM で共有しますXC3S50 では上辺または下辺に 1 つの DCM があ り オプシ ョ ンと して同じ辺にある 4 つのクロ ッ ク バッファすべてに接続できます

bull [Clock Buffer Settings] にある [Customize] をク リ ッ ク し DCM の各クロ ッ ク出力にクロ ッ クバッファの種類を指定します

bull DCM の各クロ ッ ク出力に対して リ ス トから [Clock Buffer] 出力タイプを選択します 表 10 に選択可能なクロ ッ ク バッファ オプシ ョ ンを示します

bull [Enabled Buffer] 出力タイプを使用する際にはバッファ イネーブル (CE) 入力の信号名を指定できますが 自動的に作成された信号名も使用できます

bull [Clock Mux] 出力タイプを使用する場合もセレク ト (S) 入力の信号名を指定できますが自動的に作成された信号名も使用できます

bull [Next] まはた [Finish] をク リ ッ ク し 設定を完了します [Next] ボタンが表示されるのは[General Setup]ダイアログ ウ ィ ン ド ウで CLKFX 出力または CLKFX180 出力を選択した場合のみです それ以外の場合は [Finish] をク リ ッ ク し HDL 出力を生成します ( 「HDL 出力の生成」を参照して ください)

図 11 DCM アドバンスド オプシ ョ ン設定

Xilinx DCM Wizard Advanced

Wait for DCM lock before DONE signal goes high

Yes No

Divide Input Clock by 2

Yes No

SYSTEM_SYNCHRONOUS

OK Cancel

DCM Deskew Adjust

CLKIN 12

FPGA

DONEDCM

DCM

[OK]

DCM

STARTUP_WAIT

CLKIN_DIVIDE_BY_2

DESKEW_ADJUST

x462_11_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 23

R

図 12 DCM Wizard を使用した DCM 出力のバッファ オプシ ョ ン設定

Xilinx DCM Wizard - Clock Buffers

This dialog sets up the clock buffers for all the DCM clock outputs selected in the GeneralSetup dialog

Clock Buffer Settings

U se Global Buffer (BUFG) for all selected DCM clock outputs

C ustomize (using grid below)

Reference the lsquoMore Inforsquo button for more information on customizing the global buffers

M ore Info

lt Back N ext gt Cancel

Clock Buffer Input I0 Input I1 Input CES

Global Buffer CLK0

Enabled Buffer CLK90 CLK90_ENABLE_IN

Clock Mux CLK2X180 CLKFX CLKFX_SELECT_IN

Lowskewline CLK180

Local Routing CLK270

CLK2XGlobal BufferGlobal Buffer

Enabled BufferClock MuxLowskewlineLocal RoutingNone

Output O

CLK0_OUT

CLK90_OUT

CLKFX_OUT

CLK180_OUT

CLK270_OUT

CLK2X_OUT

DCM Wizard

BUFG

DCM

DCMFPGA

FPGA

[Next]

x462_12_061703

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

グローバル バッファ

4 つあるグローバル バッファ (BUFG) の 1 つを同じ辺にある DCM に接続します

イネーブル バッファ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク バッファ (BUFGCE) と して設定しているバッファに接続します CE 入力は High の場合にバッファをイネーブルにしLow の場合は バッファ出力がゼロになり ます

BUFGI0 O

BUFGCEI0 O

CE

CE O

0 0

1 I0

24 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

クロック周波数合成

図 13 に示すク ロ ッ ク周波数合成ダイアログ ボッ ク スは [General Setup] ダイアログ ウ ィ ン ド ウでCLKFX 出力または CLKFX180 出力を選択した場合のみに表示されます

こ こでは必要な出力周波数 または逓倍および分周の係数を指定します [Valid Ranges for SelectedSpeed Grade] で周波数範囲 (CLKIN を ns で指定した場合は遅延) を指定します 周波数範囲にはDFS_FREQUENCY_MODE 属性で設定可能な両方の値が表示されます DCM で DLL に関係したクロ ッ ク出力を使用する場合 この範囲条件はよ り厳し くな り ます

bull [Use output frequency] のチェッ クをオンにし MHz または ns で周波数を入力します [Calculate] をク リ ッ クする と CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性の値が算出されます 入力した範囲から可能な逓倍値および分周値を算出できない場合は DCM Wizard で別の出力周波数値を入力するよ うに求めるエラー メ ッセージが表示されます ソ リ ューシ ョ ンがある場合は [Generated Output] に逓倍値 分周値 およびジッ タの値が表示されます ( 「ク ロ ック ジッタおよび位相ノ イズ」 を参照してください)

bull オプシ ョ ンと して[Use Multiply (M) and Divide (D) values] のチェッ クをオンにしこれらの値を入力でき ます [Calculate] を ク リ ッ ク し 出力周波数およびジ ッ タ を計算し ます 結果は[Generated Output] に表示されます

bull 最後に[Finish] をク リ ッ ク しHDL 出力を生成します (「HDL 出力の生成」を参照してください)

ク ロ ッ ク マルチプレクサ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク マルチプレクサ (BUFGMUX) として設定しているバッファに接続します S 入力はクロ ッ ク ソースを選択します

低スキュー ライン 低スキューのプログラマブル相互接続に接続します

ローカル配線 スキューが重要ではない場合において ローカル相互接続に接続します

なし DCM 出力をディ スエーブルにします

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

O

S

BUFGMUXI0

I1 S O

0 I0

1 I1

I0

I0

VHDL および Verilog のインスタンシエーシ ョ ン

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 25

R

HDL 出力の生成すべてのパラ メータを入力後 [Finish] をク リ ッ クする と 図 14 に示すよ うに DCM Wizard が自動的に VHDL または Verilog HDL 出力ファイルを生成します また ユーザー制約ファイル (UCF) も生成されます

VHDL および Verilog のインスタンシエーシ ョ ン

DCM Wizard を使用し VHDL または Verilog HDL 記述を作成する方法が最も容易ですが VHDLソースおよび Verilog ソースも利用できます

Project Navigator の言語テンプレート

ISE 52i およびそれ以降の Project Navigator では DCM の言語テンプレートが使用できます DCMテンプレート を選択する場合はProject Navigator のメニューで [Edit] rarr [Language Templates] をクリ ッ ク します 図 15 に示すテンプレー ト で Verilog フォルダまたは VHDL フォルダを展開表示し

図 13 デジタル周波数合成の逓倍値と分周値の設定 およびジッ タの算出

Xilinx DCM Wizard - Clock Frequency Synthesizer

Valid Ranges for Selected Speed Grade

Inputs for Jitter Calculations

U se output frequency

M Hz ns875

U se Multiply (M) and Divide (D) values

4M 1D

Input Clock Frequency 30 ns C alculate

lt Back Finish Cancel

More Info

Generated Output

MOutput

Frequency(MHz)

29 111

Period Jitter(pk-to-pk ns)

D

11 875

Period Jitter(unit interval)

010

DFSMode

Fin (MHz)

Low

High

24000 - 18]0000

50000 - 270000

24000 - 210000

210000 - 270000

Fout (MHz)

MHz ns[Calculate]

DCM Wizard (M)

(D)

(M)(D)

[Calculate]

[Calculate]

[Finish]

DCM

CLKFX_MULTIPLY CLKFX_DIVIDE

CLKFX_MULTIPLY CLKFX_DIVIDE

DFS_FREQUENCY_MODE

x462_13_061803

図 14 DCM Wizard での VHDL または Verilog HDL 出力ファイルの生成

Xilinx Architecture Wizard

Cancel

Generating HDL file

x462_14_061803

26 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

Component Instantiation フォルダの DCM フォルダを選択します 次にDCM フォルダにある DCMソース ファ イルを選択する と 隣接したウ ィンド ウにソース ファ イルが表示されます

このファイルは参照用と して または内容を新規ソース ファ イルに貼り付けて使用できます

VHDL および Verilog リファレンス ファイル

また この VHDL および Verilog のソース ファ イルは 次のザイ リ ンクス FTP サイ トからダウンロードできます

bull VHDL DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_vhdlzip

bull Verilog DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_verilogzip

クロック スキューの低減

スキューの低減はDCM の基本的な機能の 1 つです 50 MHz 以上の速度で動作するデザインではクロ ッ ク スキューの低減が重要であ り このク ロ ッ ク スキューの低減に関連する概念は DCM を使用したその他のアプリ ケーシ ョ ンにも応用できます

クロック スキューとはク ロ ッ ク スキューは本質的にすべての同期システムに存在します ク ロ ッ ク ソースによって生成されたクロ ッ ク エッジは システム内の異なる点に 異なる時間に到達します これは 1 つのデバイス内の場合も クロ ッ クで接続された異なるデバイスへのクロ ッ ク入力の場合もあ り ます こ こで発生する到達時間の差がクロ ッ ク スキューです

図 16 に 同期システムにおけるクロ ッ ク スキューの例を示します ク ロ ッ ク ソースによって ク ロ ック入力が FPGA へ駆動され FPGA 上の入力ピンに入る と 内部の低スキュー グローバル ク ロ ッ クネッ ト ワークを使用して分配され FPGA 内部のフ リ ップフロ ップに到達します ク ロ ッ ク パスにある各エレ メン トによって フ リ ップフロ ップにクロ ッ ク エッジが到達する時間に遅延が生じます その結果と して フ リ ップフロ ップにおけるク ロ ッ ク入力 (B) で遅延が発生する つま り ク ロ ッ ク ソース (A)と比較してスキューが発生します この例では ク ロ ッ ク スキュー つま り到達時間の差を ∆b と します

図 15 Project Navigator 言語テンプレートでの DCM デザインの選択

Language Templates

Verilog

Component Instantiation

Block RAM

CLK0

CLK0_FB

CLK2X

Templates Module BUFG_CLK0_SUBM Description Verilog Submodule DCM with CLK0 deskew-

module BUFG_CKL0_SUBM ( CLK_IN RST CLK1X LOCK

DCM

x462_15_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 27

R

同様に ク ロ ッ ク ソースは FPGA 内部で再びバッファを介し ボード上にある別のデバイスを駆動します この例では クロ ッ ク ソースは再び入力ピンを通って FPGA に入り グローバル ク ロ ッ ク ネット ワークで分配され FPGA の出力ピンを通って PCB 上のト レースで別のデバイスに接続されますそのため ク ロ ッ ク パスにおける総遅延が大き くな り その結果と して発生するスキュー ∆c も大き くな り ます

クロック スキュー パフォーマンス低下の原因ク ロ ッ ク スキューによって セッ ト アップ時間 および clock-to-output 遅延が増加し ク ロ ッ ク サイクル時間が長くなるため デザインのパフォーマンス全体が低下する可能性があ り ます また ク ロ ッ クスキューによって 長いホールド時間が必要となる場合があ り このホールド時間を確保できない場合

には 不安定な動作を引き起こす可能性があ り ます

スキューの削除

ク ロ ッ ク スキューを削除する方法はあるのでし ょ う か 幸いにも デジタル ク ロ ッ ク マネージャ(DCM) はこのよ うな機能を備えています 図 17 に図 16 と同様の例を示しますがこ こでは Spartan-3 デバイスを使用しています 2 つの DCM によって次のよ うにクロ ッ ク スキューが削除されます 1つの DCM がFPGA 内部でクロ ッ ク入力されたものからのスキューを削除しも う一方の DCM が ボード上で別のデバイスにクロ ッ ク入力する場合のスキューを削除します この結果 (A) (B) および (C)のすべての点で理想的なクロ ッ ク間のアライ メン ト を実現できます

実際には ク ロ ッ ク スキューはどのよ うに削除されるのでし ょ うか ク ロ ッ ク スキューの原因は クロ ッ ク パスにおける遅延である こ と を思い出して ください 図 17 では (B) のク ロ ッ クで ∆ 分のスキューがあ り (C) のクロ ッ クに ∆c 分のスキューがあ り ましたが ク ロ ッ クを (B) に ∆b 分早く到達させ (C) に ∆c 分早く到達させる方法がある場合には どのよ うになるでし ょ うか このよ う な場合にはすべてのクロ ッ クのエッジが一致するよ うに調整されセッ ト アップ時間および clock-to-output 遅延が減少するため システム全体のパフォーマンスが向上します

図 16 すべての同期システムに存在するクロック スキュー

OtherDevice on

Board

FPGA

c b

A

A

C

B

B

C

x462_16_062403

28 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

過去のクロック動作から将来のクロック動作を予測

Spartan-3 FPGA は非常に高度なデジタル ロジッ クを使用していますが 将来の動作を予測するこ とはできません だたし DCM は過去のクロ ッ ク動作を使用し 将来のク ロ ッ ク動作を予測するために役立てます システムに入力されるほとんどのクロ ッ クの周波数は 不変で単調であるため 入力クロ ックの周期 (T) もほぼ一定になり ます

マイナスの遅延を挿入し ク ロ ッ ク スキューの影響を無効にするこ とはできないため DCM は目的としている時間に到達しているよ うに見えるよ うにクロ ッ クを遅らせます これは どのよ うに行われるのでし ょ うか ク ロ ッ ク サイクルは一定の周期 (T) で繰り返されます 図 18 に示すよ うに (B) におけるクロ ッ クは ∆b 分進んでいるよ うにみえますが 実際には (T ndash ∆b) 分遅くなっています 同様に(C) におけるクロ ッ クは (T ndash ∆c) 分遅れています

図 17 Spartan-3 デザインにおけるクロック スキューの削減

図 18 一定周波数のクロックを遅延させる

OtherDevice on

Board

Spartan-3 FPGA

DC

M

Ideal Clock Alignment

b

cEarly Clocks Eliminate Skew

A

B

C

A

B

C

DC

M

A

B

C

x462_17_062403

c

b

Clock Period (T)

Delay=T- b

Delay=T- c

A

B

C

x462_18_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 29

R

入力クロ ッ ク信号は単調であるため ク ロ ッ ク周期 (T) は容易にわかり ますが ク ロ ッ ク スキュー遅延である ∆b および ∆c はど うでし ょ うか 異なる条件の元で複数のシステムにおける動作を詳細に検証するこ とによって これらの値を決定するこ と もできますが 実際には現実的である とは言えません

さ らに ∆b および∆c の値はデバイスによって異なり 同一のデバイス上でも温度または電圧によって変化します

Spartan-3 DCM では ∆b および ∆c をあらかじめ決定するのではなく フ ィードバッ ク ループによって遅延を確認する遅延ロッ ク ループ (DLL) を使用します (図 17 を参照してください) こ こで示している例では 2 つの DCM を使用して 1 つの DCM が内部信号のスキューを削減し も う一方の DCMが外部デバイスへの信号のスキューを削減します また 両方の DCM に各ク ロ ッ ク フ ィードバッ クループがあ り ます DLL は温度または電圧によって引き起こ されるわずかな変更にも適応します

ターゲッ トのロック

適切な遅延を決定し挿入するためにはDCM で数千クロ ッ ク サイ クルのサンプルが必要です DCMで適切な遅延が挿入される と LOCKED 出力信号がアサート されます

DCM で LOCKED 信号がアサート されるまでDCM ク ロ ッ ク出力は使用しないでください DCM が入力クロ ッ ク信号に対してロ ッ ク状態になるまでのク ロ ッ ク出力は無効です DCM がロ ッ ク状態になる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な要素が含まれている可能性があ り ます

アプリ ケーシ ョ ンではLOCKED 信号を出力クロ ッ クが有効であるこ とを確認するために使用しますLOCKED 信号をクロ ッ ク信号が使用可能な状態であるこ とを示すものと して理解してください

安定した単調なクロック入力

DCM が適切に動作するためには 安定した単調なクロ ッ ク入力が必要です そのよ う なク ロ ッ ク入力によって ク ロ ッ ク周期を予測でき出力クロ ッ クのタイ ミ ングを適切に調整できます DCM はいったんロ ッ ク状態になる と『Spartan-3 データ シート 』 で指定された値までのクロ ッ ク周期変動に対応できます 「DCM 使用のためのクロ ッ ク条件」 を参照して ください

入力ク ロ ッ ク周波数が変動して指定された範囲外と なった場合 DCM のロ ッ ク状態が解除されLOCKED 出力は Low になり ます ロ ッ ク状態が解除された場合 DCM を リセッ ト して再びロ ッ クする必要があ り ます 入力クロ ッ クが指定された制限を満たしている場合はLOCKED 出力が High である限り出力クロ ッ クは常に有効です しかし LOCKED 出力は High を維持していますが クロ ッ ク入力が指定された範囲外で CLKDV 出力または CLKFX 出力が無効となる場合があるため問題のないデザインを作成するためには 安定した単調なクロ ッ ク入力が重要です

DCM CLKIN 入力へのパスと して 4 つのグローバル バッファ入力 (IBUFG) のうち デバイス上で同一辺にあるバッファ入力の 1 つを使用する こ と を推奨します IBUFG パスを使用する こ とによってパッ ドからグローバル バッファを通って DCM に到達までの遅延がスキュー調整された出力から削除されます ただし 表 11 に示すその他のパスも使用できます また CLKIN 入力を駆動する信号は汎用相互接続を通る汎用入力ピン (IBUF プリ ミ ティブ) グローバル バッファ入力 (IBUFG) グローバル バッファ マルチプレクサ (BUFGMUX BUFGCE) からの入力と して使用できます 同様に LVDSク ロ ッ ク入力をクロ ッ ク入力と して使用できる場合もあ り ます スキュー調整ロジッ クはLVCMOS または LVTTL のよ うなシングル エンドのクロ ッ ク入力のために特性評価されています ただし 差動信号では IO タイ ミ ングによって わずかな位相エラーが発生する可能性があ り ます 特定の IO タイミ ングについては 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

30 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

確実なソースからのフ ィードバック

適切な遅延に対してロ ッ ク信号をアサートするために DCM は 入力クロ ッ クおよびクロ ッ ク分散遅延後にタ ップされるフ ィードバッ ク ク ロ ッ クの両方をモニタします ク ロ ッ ク フ ィードバッ ク パスにおける総遅延に制限はあ り ません DLL では 必要に応じて逓倍したク ロ ッ ク周期を使用する こ とによって出力クロ ッ クを遅らせます このよ うにDCM は内部遅延または外部遅延を相殺できますがクロ ッ ク フ ィードバッ クは適切なフ ィードバッ ク地点に接続する必要があ り ます

内部クロック信号からのスキュー削除

図 19 に示すよ うにFPGA 内部のスキューを削減する場合フ ィードバッ ク タ ップは FPGA 内部のエレ メン トに入力されるクロ ッ ク と同一のクロ ッ ク とな り ます 通常 フ ィードバッ ク ク ロ ッ クは デバイス上で DCM と同一辺にある ク ロ ッ ク バッファ (BUFG) またはグローバル ク ロ ッ ク マルチプレクサ (BUFGMUX または BUFGCE) に接続されている DCM からの CLK0 出力 (位相シフ ト なし ) ですまたは CLK0 出力ではなく DCM の CLK2K 出力 (位相シフ ト なし 2 逓倍) をフ ィードバッ ク と して使用できます

表 11 クロック入力ソース

CLKIN ソース 説明

グローバル バッファ入力を使用

グローバル バッファ入力 IBUFG は DCM への外部クロ ッ クのソースと して適切です パッ ドからグローバル バッファを通り CLKIN 入力までの遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

グローバル ク ロ ッ ク バッファ BUFG BUFGCE または BUFGMUX プリ ミ ティブを使用するグローバル ク ロ ッ ク バッファは内部生成された DCM へのクロ ッ ク ソース と して適切です グローバル バッファを通る際の遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

汎用 IO を使用 任意のユーザー IO IBUF は 外部クロ ッ クのソースと して使用できます パッ ドから DCM への遅延をあらかじめ決定するこ とはできません これは入力パスとなる可能性を持つパスが多数

存在するためであ り その結果 DCM は遅延を削除できません

内部ロジッ クから派生 FPGA 内部のロジッ ク も ク ロ ッ ク ソース と して使用できます しかしロジッ クから DCM への遅延をあらかじめ決定するこ とはできないため DCM は遅延を削除できません

I OIBUFG

BUFGI O

BUFGCEI O

CE

O

S

BUFGMUXI0

I1

I OIBUF

InternalLogic

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 31

R

外部クロック信号からのスキュー削除

外部クロ ッ クを使用した DCM フ ィードバッ クの設計は内部クロ ッ クの場合よ り も複雑です 図 20 に示すよ うに理想的にはフ ィードバッ ク ク ロ ッ クは PCB ト レースまたは外部クロ ッ クの再バッファの後のすべての外部クロ ッ クに入力される点から始ま り ます

LOCKED 信号は DCM がロ ッ ク状態になったこ と およびク ロ ッ ク信号が有効であるこ とを示します LOCKED 信号によって 外部デバイスが使用可能になり その反転バージ ョ ンはアクティブ Lowのチップ イネーブル信号に接続できます

コンフ ィギュレーシ ョ ン後の DCM リセッ ト

外部フ ィードバッ クを使用する場合 コンフ ィ ギュレーシ ョ ン直後に DCM の リ セッ ト をパルスしDCM のロ ッ ク状態を維持する必要があ り ます 図 20に示すよ うに0x000F で初期化された SRL16 から必要な リセッ ト パルス信号を出力できます 「RST 入力」 を参照して ください

なぜリセッ トする必要があるのか

なぜ このよ うに追加的な リセッ ト パルスが必要なのでし ょ うか 最適にロ ッ クするためには DCMをロ ッ ク状態にし その状態で安定させるために 外部フ ィードバッ クでコンフ ィギュレーシ ョ ンされ

た DCM で CLKIN および CLK0 または CLK2X のいずれかの信号を使用する必要があ り ます コンフ ィギュレーシ ョ ン実行中は FPGA の IO バッファがまだアクティブではないために 外部フ ィードバッ ク CLKFB を使用できません

コンフ ィギュレーシ ョ ンの終了時に デバイスがスター ト アップ シーケンスを開始する と DCM はキャプチャ プロセスを開始します この時点では FPGA のグローバル 3-ステート信号 (GTS) はアサー

図 19 内部クロック信号でのスキュー削減

I OBUFG

FPGA

(or BUFGMUX or BUFGCE)

( )

ldquoClock Goodrdquo

I OIBUFG

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)(

)

x462_19_061803

図 20 外部クロック信号でのスキュー削減

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)

I OOBUF

I OOBUF

FPGA

CLK

ENABLE

( )

RESETD

WCLK

A[30]

Q

INIT=000F

SRL16

I OIBUFG

I OIBUFG

x462_20_062203

32 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ト されているため すべての出力ピンは 3-ステート (ハイ -インピーダンス フローティング) 状態を維持しています このため CLKFB 信号のロジッ ク ステートはわかり ません

GTS のアサート状態の解除後CLKFB に信号が現れDCM が CLKFB 信号を取り込みますが リセット パルスがない場合 DCM が適切な時点でロ ッ ク しない可能性があ り DCM でジッタがわずかに増加し ク ロ ッ ク サイクル レイテンシも増加する可能性があ り ます

また リセッ ト パルスがない場合 PCB のシグナル インテグ リティの問題によって 3-ステート状態にある CLKFB 信号がボード上でほかの信号と ク ロス カップルする とい う問題が発生する可能性があり ます DCM では この無効なクロス カップルされた信号を CLKFB 信号と認識し ロ ッ クするためGTS 信号のアサートが解除され 適切な CLKFB 信号が現れたと きにロ ッ クできない場合があ り ます

遅延ロック ループとはク ロ ッ ク遅延を削除するための 2 つのタイプの回路

bull 遅延ロッ ク ループ (DLL)

bull 位相ロッ ク ループ (PLL)

DLL および PLL には クロ ッ ク分散遅延を削除する という機能以外に周波数合成 クロ ッ ク調整および位相シフ ト などの機能があ り ます

遅延ロック ループ (DLL)

図 21 に示すよ うに単純な形の DLL はタップ遅延ラインおよび制御ロジッ クで構成されます 遅延ラインは入力クロ ッ クCLKINに遅延を挿入したク ロ ッ クを生成し ク ロ ッ ク分散ネッ ト ワークでは そのクロ ッ クがすべての内部レジスタおよびクロ ッ ク フ ィードバッ ク CLKFB ピンに配線されます 一方制御ロジッ クは遅延ラインを調整するために常に入力クロ ッ クおよびフ ィードバック ク ロ ッ クをサンプルします 遅延ラインでは電圧制御遅延または不連続の遅延エレ メン トが使用されています 最適で安定したパフォーマンスを実現するために Spartan-3 DLL ではすべてのデジタル遅延ラインを使用します

DLL は入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クの立ち上がりエッジが調整されるまで それらのクロ ッ ク間に遅延を挿入し ク ロ ック周期から クロ ッ ク分散遅延分を差し引いた時間だけフ ィードバッ ク ク ロ ッ クを遅らせるこ とによって機能します DLL および PLLの専門的解説では フ ィードバッ ク ク ロ ッ クは 360deg 位相がずれたもの つま り同一の位相に再び現れるものと定義されています

入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クのエッジが調整される とDLL がロ ッ ク し これらの 2 つのクロ ッ ク間に認識できる差異はなくな り ます つま り DLL 出力クロ ッ クのクロ ッ ク分散ネッ ト ワークにおける遅延がなくな り ソース ク ロ ッ ク とそのロード間の遅延を効果的に削除されています

図 21 遅延ロック ループ (DLL) ブロック図

ClockDistributionNetwork

Control

VariableDelay Line

CLKOUT

CLKFB

CLKIN

x462_21_061903

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 33

R

スキュー調整

こ こでは主にスキューの削減方法およびクロ ッ ク ソースに対する内部クロ ッ ク と外部クロ ッ クの位相調整の方法について説明します 実際には DCM は DESKEW_ADJUST という属性を使用し 意図的にわずかなスキューを追加します DCM Wizard では アドバンス ド オプシ ョ ン ウ ィ ンド ウでこのDESKEW_ADJUST 属性を設定します

この属性には STEM_SYNCHRONOUS および SOURCE_SYNCHRONOUS という 2 つの基本的なアプリ ケーシ ョ ンがあ り ます 大多数のアプリ ケーシ ョ ンではSYSTEM_SYNCHRONOUS 設定を使用します 次に 各モードの目的を説明します

システム同期

図 23 に示すよ うに システム同期アプリ ケーシ ョ ンでは 1 つのデータ パスにあるすべてのデバイスが共通のクロ ッ ク ソースを使用します これが 従来の最も一般的なシステム構成です デフォルト設定である SYSTEM_SYNCHRONOUS オプシ ョ ンを選択する と データ キャプチャ時のホールド時間がゼロになるよ うに わずかなクロ ッ ク遅延が追加されます ホールド時間とは 基本的にベス ト ケースのデータ パスと ワース ト ケースのクロ ッ ク パス間の差です DCM のクロ ッ ク スキュー削減機能はクロ ッ クを進めるこ とによって動的にワース ト ケースのクロ ッ ク パスを短縮します しかし ク ロ ッ

位相ロック ループ (PLL)

PLL は DLL と同様の基本的な機能を持つよ うに設計されていますが異なるアーキテクチャを使用します 図 22 に示すよ うにPLLと DLL の根本的な違いは DLL が遅延ラインを使用するのに対して PLL では電圧制御オシレータを使用し CLKIN と同様のクロ ッ ク信号を生成します位相検出器およびフ ィルタで構成される制御ロジッ クは ク ロ ッ ク分散システムでの遅延を補う よ うにオシ

レータの周波数と位相を調整します PLL の制御ロジッ クは 入力ク ロ ッ ク と フ ィードバッ ク ク ロ ッ ク CLKFB を比較し 入力クロ ッ クの立ち上がりエッジがフ ィードバッ ク ク ロ ッ クの立ち上がりエッジと一致するよ うにオシレータのクロ ッ クを調整します その後 PLL はロッ ク状態になり ます

インプリ メンテーシ ョ ン

DLL および PLL 内部では アナログ回路またはデジタル回路のいずれかが使用され 各回路はぞれぞれに利点があ り ます 慎重な回路設計を行ったアナログ回路の場合 DLL または PLL ではよ り厳密にタイ ミ ングを調整でき 使用するシ リ コン エリ アが少なくなり ます

一方デジタル回路を使用した設計の場合 ノ イズ耐性が優れ消費電力が低く ジッ タのパフォーマンスよ り良いという利点があ り

ます また ク ロ ッ クを停止させるこ とができるため 電力管理が容易になり ます アナログ設計では 追加の電力供給が必要な場合があ りよ り正確に電源供給の制御を行う必要があるために新しい処理テク ノ ロジに移行する際に問題が発生する可能性があ り ます

DLL と PLL

アプリ ケーシ ョ ンで PLL または DLL を選択する場合は アーキテクチャの違いを理解するこ とが重要です PLL で使用されるオシレータは 本質的に不安定な状態であるため ク ロ ッ ク分散ネッ ト ワークの遅延を補う際に PLL のパフォーマンスが低下します 逆に常に安定している DLL アーキテクチャは遅延およびクロ ッ ク調整の機能の点では PLL よ り優れている一方で PLL はDLL より柔軟に新しいクロ ッ ク周波数の合成を行います

図 22 位相ロック ループ (PLL) ブロック図

ClockDistributionNetwork

Control

Voltage ControlledOscillator

CLKOUT

CLKFB

CLKIN

x462_22_061903

34 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ク パスを短縮するこ とによって ク ロ ッ クがデータの前に現れる場合には結果と してホールド時間が発生します SYSTEM_SYNCHRONOUS オプシ ョ ンを使用するこ とによってホールド時間がゼロになるために十分なスキューをクロ ッ ク パスに追加できる一方でclock-to-output 時間がわずかに増加します

ソース同期

SOURCE_SYNCHRONOUS モードは本来高速データ通信インターフェイスで使用される高度な設定です 図 24 に示すよ うに ソース同期アプリ ケーシ ョ ンではデータおよびクロ ッ クの両方が同一のクロ ッ ク ソースから派生します 送信デバイスは データおよびクロ ッ クを受信デバイスに送信し 受信デバイスはデータに対して最適なクロ ッ クが入力されるよ うにクロ ッ ク タイ ミ ングを調整します 高速デュアル データ レート (DDR) および LVDS 接続などがこのシステムの例です

SOURCE_SYNCHRONOUS 設定によって入力クロ ッ ク と DCM からのデスキュー出力クロ ッ ク間の位相をゼロにし 次に FPGA アプリ ケーシ ョ ンでは固定位相シフ ト モードまたは動的ファ イン位相シフ ト モードを使用してクロ ッ クのタイ ミ ングを調整します 次のアプリ ケーシ ョ ン ノートではソース同期デザインおよび動的位相調整について説明しています

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcomxappxapp622pdf

また 次のアプ リ ケーシ ョ ン ノート では システム レベルのタイ ミ ングについて詳細に解説しています このアプリ ケーシ ョ ン ノートはVirtex-II および Virtex-II Pro FPGA アーキテクチャについて説明するものですが ほとんどの概念を Spartan-3 FPGA に適用できます

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

タイ ミングの比較

図 25 にデュアル データ レート (DDR) アプリ ケーシ ョ ンで SYSTEM_SYNCHRONOUS 設定およびSOURCE_SYNCHRONOUS 設定を使用した場合のタイ ミ ング比較を示します DDR アプリ ケーシ ョンでは 各データ ラインに 2 つのデータ ビッ トが ク ロ ッ ク周期の前半および後半に各 1 つずつ現れます

図 23 共通のクロック ソースによってクロック入力されるシステム同期アプリケーシ ョ ン

図 24 データ ソースがデータ クロックを入力するソース同期アプリケーシ ョ ン

ClockSource

DATA_INDATA_OUT

x462_23_061903

ClockSource

DATA_INDATA_OUT

DATA_CLK

x462_24_061903

クロック調整

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 35

R

SYSTEM_SYNCHRONOUS モードではDCM のクロ ッ ク パスに適切なスキューが追加されホールド時間がゼロになり ます

これに対して SOURCE_SYNCHRONOUS モードでは DCM のクロ ッ ク パスにスキューは追加されませんが FPGA アプ リ ケーシ ョ ンでスキュー追加 または位相シフ ト が行われ ク ロ ッ クはデータウ ィンド ウにおいて理想的な位置で入力されます

クロック調整 ク ロ ッ ク調整とは 入力ク ロ ッ クのデューティ サイ クルが 50 以外の場合に 50 に調整する機能です 図 26 にHigh 時間が約 40 であ りLow 時間が約 60 (4060 デューティ サイクル) である入力ク ロ ッ クを ほぼ完全な 50 デューティ サイ クルを持つ入力クロ ッ クに調整する例を示します完全な 50 デューテ ィ サイ クル と な ら ない理由は CLKOUT_DUTY_CYCLE_DLL およびCLKOUT_DUTY_CYCLE_FX で指定されるデューティ サイ クルのずれが存在するためです これらの値は 『Spartan-3 データ シート 』 に記載されています デューティ サイクルのずれの概算値は 150ps未満です

クロ ッ クのデューティ サイクルが 50 であるこ とはVLDS またはデュアル データ レート (DDR) アプリ ケーシ ョ ンなどの高速通信インターフェイス ク ロ ッ ク転送アプリ ケーシ ョ ン またはクロ ッ ク ミラー アプリ ケーシ ョ ンにおいて不可欠な条件です 「デュアル データ レート (DDR) ク ロ ッ クの例」 を参照して ください

DCM では 自動的にほとんどのク ロ ッ ク出力のデューティ サイ クルが 50 に調整され それ以外の場合には動作条件または属性設定によって オプシ ョ ンと して調整されます 表 12 を参照して ください

図 25 デュアル データ レート (DDR) アプリケーシ ョ ンにおける SYSTEM_SYNCHRONOUS モードおよび SOURCE_SYNCHRONOUS モードのタイ ミング比較

SYSTEM_SYNCHRONOUS

DATA_IN

SOURCE_SYNCHRONOUS

SOURCE_SYNCHRONOUS+ Fixed or Dynamic Phase Shift

Data capture windowor data ldquoeyerdquo

x462_25_061903

図 26 DCM におけるデューテ ィ サイクル修正機能

CLKIN

ConditionedClock Output

50 50

40 60

x462_26_061903

36 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

14 位相シフ ト出力である CLK0 CLK90 CLK180 および CLK270 はDUTY_CYCLE_CORRECTION 属性を使用し ク ロ ッ ク調整を行う こ とができます デフォルトではDUTY_CYCLE_CORRECTION 属性は TRUE に設定され これらの出力は 50 デューティ サイクルに調整されます この属性を FALSE に設定する場合 クロ ッ ク調整は機能せず クロ ッ ク出力のデューティ サイクルは入力クロ ッ ク とほぼ同一になり ますが 完全に CLKIN のデューティ サイクルと一致するこ とは保証されていません

位相シフ ト - クロック周期の分数でクロックを遅延

また DCM ではクロ ッ ク周期の分数分だけ入力クロ ッ クを遅らせるこ とによって 位相をシフ ト させるこ とができます

DCM は 4 つの位相シフ ト タイプをサポート し各タイプを別々に使用するこ と またはほかの位相シフ ト タイプと組み合わせて使用するこ とができます 表 13 に 各クロ ッ ク出力での位相シフ ト機能を示します

1 ほとんどの 12 ク ロ ッ ク周期位相シフ ト出力では50 デューティ サイクル調整を行います 出力のペアの立ち上がりエッジは0degおよび 180deg位相シフ ト した位置またはクロ ッ ク周期の最初および 12 周期の位置にあ り ます

2 0deg(CLK0) 90deg(CLK90) 180deg(CLK180) および 270deg(CLK270) の 14 位相シフ ト出力ではオプシ ョ ンと して 50 デューティ サイ クル調整を行います

3 固定ファイン位相シフ トではすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

4 動的ファイン位相シフ トでは FPGA アプリ ケーシ ョ ン内部のすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

表 12 デューティ サイクルを 50 にするためのクロック出力調整

DCM クロック出力

50 デューティ サイクル出力

CLK0CLK90

DUTY_CYCLE_CORRECTION = TRUE

CLK180CLK270

CLK2XCLK2X180

CLKDV

CLKFXCLKFX180

常に

DLL_FREQUENCY_MODE 属性

LOW HIGH

DUTY_CYCLE_CORRECTION = TRUE 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に CLKDV_DIVIDE が整数値の場合

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 37

R

12 クロック周期位相シフ ト出力12 周期位相シフ ト出力では 位相シフ トのないク ロ ッ ク およびそのクロ ッ クを 12 周期シフ ト させた (180deg位相シフ ト ) ク ロ ッ クが出力されます 12 周期位相シフ ト出力は表 14 に示すよ うにペアで出力されます

表 13 クロック出力の位相シフ ト機能

クロック出力12 クロック周期

14 クロック周期

固定または動的

位相シフ ト

CLK0CLK90CLK180CLK270CLK2XCLK2X180CLKDVCLKFXCLKFX180

表 14 12 クロック周期位相シフ ト出力

出力ペア解説

位相シフ トなし 180deg位相シフ ト

CLK0 CLK180 周波数は CLKIN と同一です デフォルトで 50 デューティ サイクルに調整されDUTY_CYCLE_CORRECTION 属性に制御されます

CLK2X CLK2X180 2 逓倍クロ ッ ク (CLK2XCLK2X180) からの出力です周波数は CLKIN 周波数の 2 倍であ り デューティ サイ クルは常に 50 です

CLKFX CLKFX180 周波数合成回路 (CLKFX CLKFX180) からの出力です 出力周波数は周波数合成の属性によって決定されます デューティ サイ クルは常に 50 です

38 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

12 周期位相シフ ト出力は高速デュアル データ レート (DDR) デザインおよびクロ ッ ク ミ ラーなどのデューティ サイクルが重要となるデザインにとって理想的です 図 27 に示すよ うに12 周期位相シフト出力のペアの 1 つはクロ ッ ク周期の始めに立ち上がり も う 1 つはそのクロ ッ ク周期の半分の地点で正確に立ち上がり ます

12 周期位相シフ ト出力によるデューテ ィ サイクルのずれの削減

DCM のクロ ッ ク出力が 50 デューティ サイクルに調整された場合 180deg位相シフ ト ク ロ ッ クは位相シフ トのないクロ ッ クを反転させたよ うに見えます 低周波数アプリ ケーシ ョ ンでは 基本的にこれが成立します

しかし アプリ ケーシ ョ ンが非常に高い周波数で動作する場合は 各ト ランジスタの立ち上がり時間お

よび立ち下がり時間の差が原因となって発生するデューティ サイ クルのずれが FPGA 内部で問題となり ます つま り 始めはデューティ サイクルが 50 の場合でも ク ロ ッ ク サイクル間で常にクロ ッ クHigh と ク ロ ッ ク Low の間に差が生じます

デュアル データ レート (DDR) クロックの例

図 28 に DCM ク ロ ッ ク出力 CLKx が デュアル データ レート (DDR) 出力フ リ ップフロ ップの 2 つのクロ ッ クを駆動する例を示します DDR ク ロ ッ ク入力の 1 つはクロ ッ ク出力をそのまま使用しますが も う一方の入力は DDR フ リ ップフロ ップ内部でクロ ッ クを反転させます DCM からの CLKx 出力のデューティ サイクルは 50 ですが FPGA のクロ ッ ク ネッ ト ワークを伝搬する間にデューティサイ クルにずれが発生します こ こで示す例では このデューティ サイクルのずれによって ク ロ ッ クHigh 時間が短縮され ク ロ ッ ク Low 時間が長くな り ます その結果と してC1 ク ロ ッ ク入力はクロ ック周期の半分の時点よ り もわずかに前にト リガします 低周波数の場合 このずれは無視して問題あ りませんが 高性能の DDR ベースのシステムでは 正確なクロ ッ ク設計が必要です

図 27 12 周期位相シフ ト出力

180˚0˚

frac12T 1T

CLKx

CLKx180

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)

x462_27_061903

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 39

R

図 29 に 図 28 に若干の修正を加えた回路例を示します この例では DCM からの位相シフ ト していない出力および 180deg位相シフ ト した出力の両方が DDR 出力フ リ ップフ ロ ップに入力されますCLKx ク ロ ッ ク信号は ク ロ ッ ク周波数の開始時点で正確に DDR フ リ ップフロ ップの C0 入力を ト リガし CLKx180 ク ロ ッ ク信号はクロ ッ ク周波数の半分の時点で正確に C1 入力を ト リガします この方法を使用する場合には 追加のグローバル バッファおよびグローバル ク ロ ッ ク ラ インが必要になりますが 約 300 ps (この値は概算です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください) までのデューティ サイクルを削減できます

図 28 デュアル データ レート (DDR) 出力におけるデューティ サイクルのずれ

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx at Flip-Flop(with duty-cycle distortion)

Duty-cycle distortion

Factor in distortionwhen using a singleinverted clock

CLKx(50 duty cycle)

BUFGCLKx

DCM

CLKIN

x462_28_061903

40 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

表 15 に DDR 出力フ リ ップフロ ップおよび LVDS 出力を使用して測定したデューティ サイクルのずれの値を示します この出力タイプ以外では 立ち上がり時間および立ち下がり時間に差が生じるこ とによって さ らにずれが大き くなる可能性があ り ます このずれは IBIS を使用してシ ミ ュレーシ ョ ンを実行し 検証できます

14 位相シフ ト出力図 30 および表 17 に示すよ うに 14 位相シフ ト出力は CLKIN 入力を 14 周期分シフ ト させたものです 14 位相シフ ト出力には CLKFB 入力へ戻るフ ィードバッ ク パスが必要であるため CLK0 出力の位相は CLKIN 入力の立ち上がりエッジと一致するよ うに調整されます CLK90 出力は CLKIN 入力を90deg位相シフ ト させて生成したものであ り ほかの位相シフ ト出力も同様に生成されます

図 29 12 周期位相シフ ト出力を使用したデューテ ィ サイクルのずれの削減

CLKx at Flip-Flop(with duty-cycle distortion)

180 ˚Phase Shift

CLKx180 at Flip-Flop(with duty-cycle distortion)

CLKx(50 duty cycle)

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKIN

CLKx180

BUFG

BUFG

x462_29_061903

表 15 デューティ サイクルのずれのパラメータ

パラ メータ 説明 概算値

TDCD_CLK0 IO ブロ ッ クにある DDR エレ メン トに対して ク ロ ッ ク立ち下がりエッジでローカル反転したクロ ッ クを入力する場合のデューティ サイクルのずれです 図 28を参照してください

~400 ps

TDCD_CLK180 IO ブロ ッ クにある DDR エレ メン トに対して DCM CLKx180 をクロ ッ ク入力する場合のデューティ サイクルのずれです 図 29を参照してください

~60 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 41

R

DLL 周波数モードによる出力の有効性

14 位相シフ ト出力が有効であるかは DLL_FREQUENCY_MODE 属性で制御される DLL の周波数モードによって決定されます 表 16 に示すよ うに 低周波数モード (DLL_FREQUENCY_MODE=LOW) ではすべての 14 位相シフ ト出力が有効ですが高周波数モードでも有効な出力は CLK0 および CLK180 のみです

5050 デューティ サイクル調整オプシ ョ ン

オプシ ョ ン と して DUTY_CYCLE_CORRECT 属性を使用し 14 位相シフ ト出力を一括して 50デューテ ィ サイ クルに調整できます この属性が TRUE の場合 (デフォル ト ) 4 つの出力すべてのデューティ サイ クルが 50 にな り FALSE の場合は 各出力のデューティ サイ クルと CLKIN 入力のデューティ サイクルは一致しません 詳細は 「ク ロ ッ ク調整」 を参照してください

4 つの位相 遅延クロックエッジ 位相パルス

表 17 に示すよ うに 14 位相シフ ト出力は ぞれぞれ 1 つ前のパルスから 14 周期遅れた立ち上がりエッジで出力されます これらの出力は メモ リ インターフェイスおよびペリ フェラル制御などのアプリ ケーシ ョ ンにおけるタイ ミ ングを柔軟にします

また デューテ ィ サイ クル修正オプシ ョ ンがイネーブルの場合 (DUTY_CYCLE_CORRECTION =TRUE の場合) これらの出力を次のよ うに考えるこ とができますこれらの出力には 14 周期の間隔で

図 30 CLKIN 入力 の 14 周期位相シフ ト出力 (デューティ サイクル修正イネーブルの場合)

表 16 DLL 周波数モードによる 14 位相シフ ト出力の有効性

出力DLL_FREQUENCY_MODE

LOW HIGH

CLK0

CLK90

CLK180

CLK270

270˚180˚90˚0˚

frac14T frac12 T frac34T 1T

CLK0

CLK90

CLK180

CLK270

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)x462_30_061903

42 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

立ち下がりエッジがあ り ます (表 17 を参照) 同様に各出力には周期幅が同一である High パルス時間と Low パルス時間があるこ とになり たとえば 図 30 に示す CLK90 の High パルス部分は CLK0 クロ ッ ク周期の中央に位置しています

ファイン位相シフ ト

DCM では ファ イン位相シフ ト を使用するこ とによって ク ロ ッ ク スキューを制御するこ と もできます ファ イン位相調整はすべての DCM 出力に対して同時に機能します この位相調整にはDCM のDLL 機能ユニッ ト を使用するため CLKFB 入力を通るクロ ッ ク フ ィードバッ クが必要です

物理的には CLKIN と CLKFB の立ち上がりエッジ間の位相関係を調整するこ とによってシフ トが行われますが すべての DCM 出力が CLKIN 入力に関連して位相シフ ト されます

デフォルトでは ファ イン位相シフ トはディ スエーブル (CLKOUT_PHASE_SHIFT=NONE) です つま り ク ロ ッ ク入力は CLKIN で位相調整されています この場合 入力クロ ッ ク CLKIN と フ ィードバッ ク ク ロ ッ ク間におおよそのフ ィードバッ ク地点で計測されるスキューはあ り ません (「確実なソースからのフ ィードバッ ク」 を参照して ください) 図 31 に示すよ うに ファ イン位相シフ トがイネーブルの場合 出力クロ ッ クのエッジは位相シフ ト され CLKIN 入力の前または後になり ます

次にファイン位相シフ トの 2 つのモードについて説明します一般に高速データ通信アプリ ケーシ ョ ンでは 両方のモードが使用されます 「ソース同期」 を参照してください

1 固定ファイン位相シフ ト モードは位相シフ ト値を設計段階で設定します 位相シフ ト値はFPGAコンフ ィギュレーシ ョ ン実行中に取り込まれ アプリ ケーシ ョ ンで変更するこ とはできません

2 動的ファイン位相シフ トモードには 初期位相シフ ト値があ り 固定ファイン位相シフ トの場合と同様に この値は FPGA コンフ ィギュレーシ ョ ン中に取り込まれますが DCM の LOCKED 出力が High になった後であれば アプリ ケーシ ョ ンで変更可能です

固定ファイン位相シフ ト

固定ファ イン位相シフ ト モードでは 設計段階で指定されたシフ ト値が FPGA コンフ ィギュレーシ ョン実行中に設定され この値はアプリ ケーシ ョ ンで変更できません

このモードは 次の 2 つの属性によって制御されます CLKOUT_PHASE_SHIFT 属性が FIXED に設定し PHASE_SHIFT 属性が位相シフ ト量を制御します 図 31 に示すよ うに PHASE_SHIFT = 0 の場合は 出力ク ロ ッ クおよび CLKIN 入力の位相が一致する よ う 調整され ク ロ ッ ク出力はPHASE_SHIFT が負の整数の場合に CLKIN の前に位相シフ ト し正の整数の場合には CLKIN の後に位相シフ ト します

固定ファイン位相シフ ト範囲

PHASE_SHIFT 属性は常に整数値であ り その範囲は -255 ~ +255 ですが 実際の範囲は使用されるCLKIN の周波数によって異なり ます

表 17 14 位相シフ ト出力とそれらの特性 (DUTY_CYCLE_CORRECTION=TRUE)

DCM 出力 位相シフ トクロック周期

に対する遅延

立ち上がり

エッジ

立ち下がり

エッジ解説

CLK0 0deg 0 0 frac12T スキュー調整された入力クロ ッ ク 位相シフ ト なし

CLK90 90deg frac14T frac14T frac34T High パルス (frac34T 周期幅 周期の中央)

CLK180 180deg frac12T frac12T 0T CLK0 の反転 (立ち上がりエッジは周期の中央)

CLK270 270deg frac34T frac34T frac14T Low パルス (frac34T 周期幅 周期の中央)

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 43

R

PHASE_SHIFT 属性の範囲は 次の 2 つの値によって決定されます

1 1 つはナノセカンドで測定される CLKIN 入力の周期 である TCLKIN 値です

2 も う 1 つは Spartan-3 デバイスおよびスピード グレードによって指定される FINE_SHIFT_RANGE の値です この値は 『Spartan-3 データ シート 』 モジュール 3 に記載されています FINE_SHIFT_RANGE は 位相シフ ト遅延ラインにおける総遅延であ り 回路内の遅延タップ数の関数です 実際の遅延ラインは FINE_SHIFT_RANGE よ り長い場合があ り ますがFINE_SHIFT_RANGE までの値が保証されています

これらの値を 等式 1 に適用しSHIFT_DELAY_RATIO を算出します PHASE_SHIFT 属性の範囲はこの算出結果と 1 との不等式関係によって異なり ます

等式 1

SHIFT_DELAY_RATIO lt 1 の場合

ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り長い場合はSHIFT_DELAY_RATIO lt 1 であ り最大ファイン位相シフ ト範囲は FINE_SHIFT_RANGE によって決定されます SHIFT_DELAY_RATIO lt 1 の場合 PHASE_SHIFT 範囲は 等式 2 から求めるこ とができます

等式 2

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 PHASE_SHIFT 値は plusmn191 とな り ます

したがって SHIFT_DELAY_RATIO lt 1 の場合の位相シフ ト値は 等式 3 とな り ますPHASE_SHIFT = 1 と して ください

等式 3

図 31 固定ファイン位相シフ ト

0

Fixed Phase Shift- Limit

Fixed Phase Shift+ Limit

Clock Outputs

PHASE_SHIFT CLKIN DCM

CLKIN

x462_31_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

SHIFT_DELAY_RATIO FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------=

PHASE_SHIFTLIMITS plusmn INTEGER 256 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞=

TPhaseShiftPHASE_SHIFT

PHASE_SHIFTLIMITS----------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

44 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

SHIFT_DELAY_RATIO ge 1 の場合

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 1 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 4

したがって SHIFT_DELAY_RATIO ge 1 の場合の位相シフ ト値は 等式 5 とな り ます PHASE_SHIFT = 1 と して ください

等式 5

最小位相シフ ト

最小位相シフ トの大きさは 次の値の大きな方によって決定されます

1 『Spartan-3 データ シート 』 に DCM_TAP_MIN 仕様と して記載されている最小遅延ライン タ ップ値 (概算値は ~30ps)

2 ク ロ ッ ク周期の 1256

その他の考察点

固定位相シフ トモードでは 動的位相シフ ト制御入力をグランドに接続する必要があ り ます この接続

は DCM Wizard では自動的に行われます

DCM Wizard

固定位相シフ トモードを使用する場合は図 32 に示すよ うにDCM Wizard の [General Setup] ダイアログ ウ ィンド ウに表示される Phase Shift で [Fixed] をク リ ッ ク して ください これによって CLKOUT_PHASE_SHIFT 属性が FIXED に設定されます

[Phase Shift Value] を入力しますが この値は 上述した範囲内にある整数でなければなり ません これによってPHASE_SHIFT 属性値が設定されます DCM Wizard は位相シフ ト値が指定範囲内であるかを確認します

動的ファイン位相シフ ト

動的ファ イン位相シフ ト モードでは 固定ファ イン位相シフ ト モード と同様に 初期スキューまたは初期位相シフ トがコンフ ィギュレーシ ョ ン中に PHASE_SHIFT 属性によって制御されます ただし動的シフ ト モードの場合 DCM の LOCKED 入力が High になった後に 動的ファ イン位相シフ ト制御入力 PSEN PSCLK および PSINCDEC を使用して FPGA アプリ ケーシ ョ ンで現在の位相シフ ト値を修正できます

動作

図 33 に示すよ うに位相シフ ト制御入力を使用し現在の位相シフ ト値を修正します すべての動的位相シフ トは PSCLK の立ち上がりエッジに同期して行われ 有効な位相シフ トは PSEN イネーブル入

図 32 固定ファイン位相モードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

Fixed

x462_32_061803

PHASE_SHIFTLIMITS 255plusmn=

TPhaseShiftPHASE_SHIFT

256--------------------------------------------⎝ ⎠

⎛ ⎞ TCLKINbull=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 45

R

力を正確に 1 PSCLK ク ロ ッ ク周期間アサートするこ とによって開始します PSEN を 1 ク ロ ッ ク周期よ り長くアサートする場合には 適切に位相シフ ト を行う こ とができない可能性があ り ます

PSINCDEC の値は制御入力の増減を指定し 位相シフ トの方向を決定します PSINCDEC を High に設定する と 動的位相シフ ト値が増加し Low に設定する とその値は減少します

実際の位相シフ ト が行われる タ イ ミ ングはさ まざまであ り DCM で PSCLK ク ロ ッ クの 1 周期間PSDONE 出力が High にアサート された時に完了します PSEN がイネーブルであ り PSDONE がアサート されるまでの間 DCM 出力クロ ッ クは 初期位相シフ ト値から新しい位相シフ ト値まで 1 ビットずつスライ ド します シフ トが行われている間 DCM は入力クロ ッ クに対してロ ッ ク状態 つま りLOCKED 出力がアサート された状態を維持します

PSDONE がアサート されたと き またはアサート後に 次の位相シフ ト処理が開始されます

動的ファ イン位相シフ ト モードを使用する場合は CLKOUT_PHASE_SHIFT 属性を VARIABLE に設定し FPGA コンフ ィギュレーシ ョ ン後に PHASE_SHIFT 属性値によって 位相シフ トの初期位置を設定できます DCM の LOCKED 出力が High になる と FPGA アプリ ケーシ ョ ンでは DCM 出力クロ ッ クにおけるスキュー または位相シフ ト を動的に修正できます また DCM がリセッ ト された場合は PHASE_SHIFT 値は初期設定値に戻り ます

図 33 動的ファイン位相シフ ト制御インターフェイス

PSINCDEC

PSEN

PSCLK

PSDONE

0 = 1 =

STATUS[0](

)

PSDONE

If phase shift incremented ordecremented to limit valueSTATUS[0] stays High until newoperation shifts away from limit

x462_33_062403

46 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

動的ファイン位相シフ ト範囲

PHASE_SHIFT と同様に 動的位相シフ トに対しても位相シフ ト範囲の制限があ り ます 図 34 を参照して ください また その範囲は SHIFT_DELAY_RATIO 等式で示したよ うにFINE_SHIFT_RANGE 対入力クロ ッ ク周期の比率によって決定されます

SHIFT_DELAY_RATIO lt 2

指定された FINE_SHIFT_RANGE 値がクロ ッ ク周期の 2 倍よ り小さい場合 (SHIFT_DELAY_RATIOlt 2)最大動的位相シフ ト値は最大遅延タップ値である FINE_SHIFT_RANGE によって決定されますSHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト範囲は 等式 6 によって決定されます

等式 6

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 動的位相シフ ト値の範囲は plusmn96 とな り ます

図 34 動的位相シフ ト制御

Clock Outputs

PHASE_SHIFT DCM LOCKED

RESET

CLKIN

0Fixed Phase Shift

- LimitFixed Phase Shift+ Limit

PSEN

PSINCDEC

PSCLK

PSDONE

STATUS[0]

0

Dynamic Phase Shift- Limit

Dynamic Phase Shift+ Limit

Increment PhaseShift Value

Decrement PhaseShift Value

Enable

IncrementDecrement

Phase Shift Clock

Phase Shift Done

Variable PhaseShift Overflow

DCM LOCKEDFPGA

DCM Variable PhaseShift Control

x462_34_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

DynamicPhaseShiftLIMITS INTEGER 128 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞plusmn=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 47

R

したがって SHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト値は 等式 7 とな り ます PHASE_SHIFT = 1 と して ください

等式 7

SHIFT_DELAY_RATIO ge 2

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 2 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 8

したがって SHIFT_DELAY_RATIO ge 2 の場合の位相シフ ト値は 等式 9 とな り ますPHASE_SHIFT = 1 と して ください

等式 9

制御

45ページの図 33 46ページの図 34 に示すよ うにDCM の動的位相シフ ト制御信号によって FPGAアプリ ケーシ ョ ンは現在の CLKIN 入力と DCM ク ロ ッ ク出力間の関係を修正できます 表 18 に 制御入力 現在の位相と次の位相の関係 遅延タ ップへの影響と制御出力の関係を示します

TPhaseShiftDynamicPhaseShift

DynamicPhaseShiftLIMITS-----------------------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

DynamicPhaseShiftLIMITS 255plusmn=

TPhaseShiftDynamicPhaseShift

256--------------------------------------------------------- TCLKINbull=

表 18 動的位相シフ ト制御 (内部反転がない場合)

PSENPSINC-

DECPSCLK 現在の

位相シフ ト

次の

位相シフ ト遅延ライン PSDONE

STATUS[0](オーバーフロー )

動作

0 X X X 変更なし 変更なし 動的位相シフ トはディ スエーブル

1 0 uarr gt -制限 現在の位相

シフ ト -1現在の位相

シフ ト -11 0 位相シフ トおよびシフ ト ポインタ

のデク リ メン ト

1 0 uarr le -制限およびgt -255

現在の位相

シフ ト -1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがデク

リ メン ト

1 0 uarr -255 -255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

1 1 uarr lt +制限 現在の位相

シフ ト +1現在の位相

シフ ト +11 0 位相シフ トおよびシフ ト ポインタ

のインク リ メ ン ト

1 1 uarr ge+制限およびlt +255

現在の位相

シフ ト +1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがイン

ク リ メ ン ト

1 1 uarr +255 +255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

メモ X = 考慮する必要があ り ません = 不確定であ り 現在のアプリ ケーシ ョ ンの状態によって決定されます1 = PSDONE が 1 PSCLK 周期間 High にアサート されます-制限 = 遅延ラインの最小位置+制限 = 遅延ラインの最大位置PSEN を 1 PSCLK サイ クル間アサート します

48 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

PSEN が Low の場合 動的位相シフ トはディ スエーブルであ り その他のすべての入力は無視されます したがって すべての現在のシフ ト値および遅延ライン位置に変更はあ り ません

遅延ラインがその制限 (デク リ メン トで - 制限 または -255 インク リ メン トで + 制限 または +255)に到っていない場合 FPGA アプリ ケーシ ョ ンでは PSEN を High にアサートする とによって現在の位相シフ ト値を変更でき PSCLK の次の立ち上がりエッジの前に PSINCDEC に対して適切なインク リメン ト デク リ メン ト値を設定できます 位相シフ ト値は指定されたよ うにインク リ メン ト またはデクリ メン ト します 位相シフ トの最後に PSDONE が PSCLK の 1 周期間 High にアサート され 位相シフ ト が完了したこ と を示し ます また 位相シフ ト のオーバーフロー状態が発生していないため

STATUS[0] は Low を維持します

DCM が +255 を超える値にインク リ メン ト された場合 または -255 よ り小さな値にデク リ メン ト された場合には遅延ラインの位置はその限界である +255 または -255 から変更されず位相は変更されません STATUS[0] は High にな り 動的位相シフ トがオーバーフローである こ とを示します こ こで 新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0]が Low に戻り ます

位相シフ トが +255 または -255 には達していませんが 遅延ライン範囲 (表 18 では + 制限および - 制限)を超えている場合には位相は変更されませんがSTATUS[0] が再び High になり ます STATUS[0]出力は 遅延タ ップが遅延ラインの限界に到達したと きを示します ただし FPGA アプリ ケーシ ョ ンでは等式 8 または等式 6 を使用して制限値が算出され求められた遅延ラインの制限値は保証された値とな り ます 特定のデバイスでは 処理電圧または処理温度によって 遅延ラインが長くなる場合があ り ますが これの値はデバイスによって異なるため 保証されていません 遅延ラインの位置ではなく 位相シフ ト値は +255 または -255 に到達するまでインク リ メン ト またはデク リ メン ト を続けます新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0] がLow に戻り ます こ こで位相シフ ト値は遅延ラインにおいて有効な遅延値に対応する値に戻るよ うにインク リ メン ト またはデク リ メン ト されます

DCM Wizard

動的位相シフ トは図 35 に示す DCM Wizard の [General Setup] ダイアログ ウ ィンド ウで設定します動的ファ イン位相シフ ト を有効にするためには 図 35 に示すよ うに [Variable] を選択します 次に初期の [Phase Shift Value] を入力します 初期値は前述した固定ファイン位相シフ トモードの場合と同様に動作します

図 36 に示すよ うに[Variable] モードを選択するこ とによって動的位相シフ ト制御信号である PSENPSINCDEC PSCLK および PSDONE がイネーブルにな り ます これらの制御信号を FPGA アプ リケーシ ョ ンで使用するために入力および出力チェッ ク ボッ クスをオンにして ください またSTATUS

図 35 DCM Wizard での動的ファイン位相シフ トモードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

[Variable]

x462_35_061903

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 49

R

出力のボッ クスをオンにし STATUS[0] 信号をイネーブルにします STATUS[0] は 位相シフ ト値がその最大または最小制限値に達したと きを示します

アプリケーシ ョ ン例

動的位相調整を行う場合の動的位相シフ ト機能については 次の リ ンクからアプ リ ケーシ ョ ン ノー トXAPP268 を参照してください

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

クロック逓倍クロック分周周波数合成

DCM アプリ ケーシ ョ ンのもっと も使用される機能の 1 つと して 新しいク ロ ッ ク周波数を柔軟に生成できる機能があ り ます 次に説明するよ うにSpartan-3 DCM は 3 つの独立した周波数合成機能を持ちます図 37 および表 19 を参照してください アプリ ケーシ ョ ンでは これらの機能の 1 つを使用する場合 またはすべてを同時に使用する場合があ り ます 次に 各機能の詳細について説明します

1 2 逓倍クロ ッ ク (CLK2X CLK2X180) は 入力クロ ッ クの周波数を 2 倍にします

2 ク ロ ッ ク分周 (CLKDV) は 入力クロ ッ ク周波数を一定の分周値を使用して分周します

3 周波数合成回路 (CLKFX CLKFX180) は 入力クロ ッ ク周波数から新しい周波数を生成します

図 36 DCM Wizard での動的位相シフ ト制御出力の選択

LOCKEDSTATUS

PSDONE

PSENPSINCDECPSCLK

STATUS[0] STATUS

x462_36_061903

図 37 クロック合成オプシ ョ ン

CLKIN CLK0

CLKFB

DCM

CLKFX

CLKFX180

Frequency Synthesizer

F = FCLKIN CLKFX_MULTIPLY

CLKFX_DIVIDE

CLKDV

Clock Divider

F =FCLKIN

CLKDV_DIVIDE

CLK2X

CLK2X180

F = 2 FCLKIN Clock Doubler

ClockDistribution

Delay

CLK0or

CLK2X

Clock Feedback LoopCLK0 CLK2X CLK2X180 CLKDV CLKFB

CLK0

CLKFXCLKFX180

50

DLL_FREQUENCY_MODE=LOW50

50

Deskewed ClockF = FCLKIN

DUTY_CYCLE_CORRECTION=TRUE50

x462_37_062203

50 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

CLKDV 以外のすべての周波数合成出力は 5050 デューティ サイ クルを持ちます 表 23 に示すよ うに高周波数で分周値が整数の場合通常 CLKDV は 50 のデューティ サイクルを持ちます また 2逓倍クロ ッ ク (CLK2X CLK2X180) 回路は高周波数では使用できません

CLKFX および CLKFX180 以外のすべての DCM ク ロ ッ ク出力はDCM の 遅延ロッ ク ループ (DLL)ユニッ トで生成され CLKFB ピンへのクロ ッ ク フ ィードバッ クが必要になり ます DCM の デジタル周波数合成 (DFS) ユニッ トはCLKFX および CLKFX180 ク ロ ッ ク出力を生成します アプリ ケーシ ョンで CLKFX 出力または CLKFX180 出力のみが使用される場合にはフ ィードバッ ク パスを削除できDCM の動作範囲が広くな り ます 周波数合成回路は DCM 内部に CLKIN に基づいたフ ィードバック パスを持ちます

ク ロ ッ ク フ ィードバッ クを使用した場合 すべての出力クロ ッ クの位相が調整されます また 出力のいくつかは分周クロ ッ クであるためすべての DCM 出力がクロ ッ ク エッジで一致するよ うに調整されるこ とはまれであるこ とがわかり ます たとえば CLKDV 出力は CLKDV_DIVID の各サイクルごとに CLKIN および CLK0 に対して調整されCLK2X 出力は CLK0 のサイクル 1 つおきに この信号に対して調整されます またCLKFX 出力はCLKIN の CLKFX_DIVIDE サイクルごとおよび CLKFBの CLKFX_MULTIPLY サイクルごとに CLKIN に位相調整されます

周波数合成アプリケーシ ョ ン

周波数合成を使用するアプリ ケーシ ョ ンは ほぼ無制限に考えられますが 次にいくつかのアプリ ケー

シ ョ ン例を示します

bull ボード上で利用可能なクロ ッ クを使用している FPGA および外部ロジッ クに対して完全に新しいクロ ッ ク周波数を生成する

bull 低速の外部クロ ッ ク ソースから高周波数の内部クロ ッ クを生成し システムの EMI を低減する

bull 図 38 に示すよ うに高速シ リ アルデータ ク ロ ッ クを分周しFPGA 内部でデータの並行処理を行う

bull 同様に 図 38 に示すよ うに 高速シ リアル データ フォーマッ トに変換する前に 並行で動作するデータ ク ロ ッ クの周波数を逓倍する

bull 適切な速度の機能をインプリ メン トする場合に 入力クロ ッ クを逓倍し 内部ロジッ クをクロ ッ ク

アップするこ とによって 使用する リ ソースを削減する

表 19 DCM 周波数合成オプシ ョ ン

機能 DCM 出力 周波数DCM の機能ユニッ ト

フ ィードバック50 の

デューティ サイクル

スキュー調整

クロ ッ ク

CLK0 DLL 必要 DUTY_CYCLE_CORRECTION = TRUE の場合に 50 です

2 逓倍クロ ッ ク CLK2XCLK2X180

DLL 必要 常に 50 です

分周クロ ッ ク CLKDV DLL 必要 高周波数モードで分周値が

整数以外の場合を除いて常

に 50 です

周波数合成 CLKFXCLKFX180

DFS オプシ ョ ン フ ィードバッ クに

よって ク ロ ッ ク

入力周波数範囲は

広くなるこ とは

あ り ません

常に 50 です

FCLKIN

2 FCLKINbull

FCLKINCLKDV_DIVIDE---------------------------------------------------

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE------------------------------------------------------------⎝ ⎠

⎛ ⎞bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 51

R

入力クロックおよび出力クロックの周波数条件

周波数合成を行う場合の入力クロ ッ クおよび出力クロ ッ クの周波数条件は DCM で使用されるク ロ ック出力によって決定されます たとえば CLKFX 出力および CLKFX180 出力は DCM のデジタル周波数合成 (DFS) ユニッ トのみを使用し その他のすべての出力は遅延ロッ ク ループ (DLL) ユニッ ト を使用します DLL における周波数の制限は DFS よ り も厳しいため DFS のみを使用する場合の方が周波数の動作範囲は広くな り ますDFS および DLL の両方を使用する場合アプリ ケーシ ョ ンは DLLの周波数範囲によって制限されます

また DLL および DFS は 低周波数モード と高周波数モードの両方で動作可能であるため モード設定によっても有効な周波数範囲が変動します

DCM デザインが有効であるためには CLKIN 周波数が 『Spartan-3 データ シート 』 モジュール 3 に記載されている動作範囲内である必要があ り 使用されているすべての出力クロ ッ クの周波数もそれぞれ

指定された範囲内でなければなり ません

図 39 に クロ ッ ク入力およびクロ ッ ク出力と対応する周波数範囲を示します ただし こ こで示すのは低周波数モードの場合のみです データ シートに記載されている仕様名は影付きのボッ クス内に示しています また 表 20 に DCM アプリ ケーシ ョ ンの例および周波数条件を示します

図 38 周波数合成アプリケーシ ョ ンの一般的な例

DCM DCM

F

n-bitswide

Fn

F F m

m-bitswide

F F

Overclockedtime-shared logic

DCM

F

F F x

High-speed serial datadown-converted toslower parallel data

Slower parallel dataup-converted to high-speed serial data

FPGA

x462_38_070903

52 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

2 逓倍クロック (CLK2X CLK2X180)表 21 に示すよ うに 2 逓倍クロ ッ ク回路によって CLKIN 入力の周波数は 2 倍になり ます この 2 逓倍クロ ッ ク回路は DLL 機能ユニッ トの一部であ り CLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します 2 逓倍クロ ッ ク回路からの出力は CLK2X および CLK2X180 であ り これらの出力のデューテ ィ サイ クルは常に 50 です また これらの周波数は同一ですがCLK2X180 は CLK2X を 180deg位相シフ ト したものであ り 基本的に CLK2X 出力を反転したものになり ます 高性能のデュアル データ レート (DDR) アプリ ケーシ ョ ンまたはクロ ッ ク転送アプリ ケーシ ョ ンでは 両方の位相を使用するこ とが不可欠です

CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE 属性が LOW に設定されている場合のみに使用できます アプリ ケーシ ョ ンにおける必要性に応じてオプシ ョ ンの 2 分周機能を使用しCLKIN 入力周波数を低下させてください ( 「アドバンス ド オプシ ョ ン」 を参照)

図 39 入力クロックおよび出力クロックの周波数条件 (低周波数モード )

DFS(CLKIN_FREQ_FX_MINMAX)

DLL (Low-Frequency Mode)(CLKIN_FREQ_DLL_LF_MINMAX)

~1 MHz ~326 MHz

~24 MHz ~180 MHzFCLKIN

DFS (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~24 MHz ~200 MHz

DLL CLKDV (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~15 MHz ~120 MHz

DLL CLK2X (Low-Frequency Mode)(CLKOUT_FREQ_2X_LF_MINMAX)

~48 MHz ~326 MHz

FCLKFXFCLKFX180

FCLKDV

FCLK2XFCLK2X180

x462_39_070903

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 20 DCM 周波数条件の例

入力周波数 出力周波数 解説

12 MHz 128 MHz 1 つの DCM のみを使用する場合には条件を満たしません FCLKIN は DFS の条件を満たす範囲内ですが FCLKFX は最低 24MHz 出力周波数が必要です

12 MHz 324 MHz DFS を使用する DCM で条件を満たします CLKFX_MULTIPLY=27 と設定してくださいFCLKFX は DFS 出力周波数範囲内です

25 MHz 25 MHz30 MHz

DFS および DLL を使用する DCM で条件を満たします CLKDV 出力を 25MHz 信号に使用しCLKDV_DIVIDE=10 と設定してください また CLKFX 出力を 30MHz 信号に使用しCLKFX_MULTIPLY=6 および CLKFX_DIVIDE=5 と設定してください すべての入力周波数および出力周波数は適切な範囲内です

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 53

R

表 21 2 逓倍クロック回路のまとめ

DCM 出力 CLK2XCLK2X180

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク 必要です

50 デューティ サイ クル出力 はい

制御属性

DLL_FREQUENCY_MODE CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE = LOW の場合にのみ有効です

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます 2 逓倍クロ ッ クの出力は 高周波数モードでは使用できませんが ほかの DCM ク ロ ッ ク出力に必要となる場合があ り ます

CLK2XCLK2X180

CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

2 FCLKINbull

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (~24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (~48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~326 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_2X_LF_MIN (48 MHz)

CLKOUT_FREQ_2X_LF_MAX (~325 MHz)

HIGH 設定不可 設定不可

54 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

クロック分周 (CLKDV)表 22 に概要を示すクロ ッ ク分周ユニッ トは デザインに設定した CLKDV_DIVIDE 属性の値を使用し CLKIN 入力の周波数を分周します ク ロ ッ ク分周ユニッ ト は DLL 機能ユニッ ト の一部であ りCLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します

表 22 クロック分周回路のまとめ

DCM 出力 CLKDV

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク DCM からの CLK0 出力または CLK2X 出力を使用する場合に必要です

50 デューティ サイ クル出力 はい ただし DLL_FREQUENCY_MODE=HIGH および CLKDV_DIVIDE が整数値ではない場合を除きます

制御属性

DLL_FREQUENCY_MODE CLKDV は両モードで使用できます 分周値によっては 出力のデューティ サイ クルに影響を与える場合があ り ます ( 「CLKDV ク ロ ッ ク調整」 を参照してください)

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 有効な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 であ り 整数値の場合 よ り短時間で DLL はロッ ク状態になり ます また 整数値を設定する場合には出力ジッ タが低くな り ます

周波数制約

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

CLKDV CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

FCLKINCLKDV_DIVIDE--------------------------------------------------

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~325 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_DV_LF_MIN (15 MHz)

CLKOUT_FREQ_DV_LF_MAX (~120 MHz)

HIGH CLKOUT_FREQ_DV_HF_MIN (30 MHz)

CLKOUT_FREQ_DV_HF_MAX (~240 MHz)

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 55

R

CLKDV クロック調整

DLL_FREQUENCY_MODE 属性が High であ りCLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 になり ます 表 23 に CLKDV のデューティ サイクルを示します Spartan-3 DCM では CLKIN のデューティ サイクルが 6040 (または 4060) 以上である必要があ り高周波数モードの場合に 15 で分周された CLKDV 出力は次にカスケード接続された DCM へクロ ッ ク入力するこ とはできません

CLKDV のジッ タは 周波数モードおよび属性値が整数か 整数ではないかによって決定されます

CLKDV_DIVIDE 属性に整数値を設定するこ とによって 出力ジッ タが半分になり DLL がロ ッ ク状態になるために要する時間も短縮されます

DCM Wizard

ク ロ ッ ク分周は DCM Wizard の[General Setup]ウ ィ ン ド ウで設定し ます 図 40a に示すよ う にCLKDV 出力のチェッ ク ボッ クスをオンにし 次に図 40b に示すよ うに ド ロ ップ ダウン リ ス トから[Divide by Value] を選択します

表 23 CLKDV デューティ サイクル (DLL_FREQUENCY_MODE=HIGH の場合)

CLKDV_DIVIDE 属性 デューティ サイクル High 時間総サイクル

整数 50000 12

15 33333 13

25 40000 25

35 42857 37

45 44444 49

55 45454 511

65 46154 613

75 46667 715

表 24 CLKDV 出力ジッ タ

CLKDV_DIVIDE CLKDV 出力周期ジッ タ

整数値 CLKOUT_PER_JITT_DV1 (plusmn~150 ps)

整数以外の値 CLKOUT_PER_JITT_DV2 (plusmn~300 ps)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

a CLKDV 出力のチェ ック ボックスをオン b ドロップ ダウン リス トから [Divide by Value を選択]

図 40 DCM Wizard での分周クロック設定

CLKDV

x462_40a_0619032

Divide By Value

x462_40b_061903

56 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

周波数合成回路 (CLKFX CLKFX180)周波数合成回路を使用するこ とによって 入力周波数の逓倍 分周 またはその両方をもっと も柔軟に

行う こ とができます 表 25 に示すよ うに 2 つの周波数合成出力は CLKFX および CLKFX180 ですCLKFX180 出力は CLKFX と同一の周波数を持ちますがCLKFX を 180degまたは 12 ク ロ ッ ク周期位相シフ ト させた ものです これらの周波数合成出力のデューテ ィ サイ クルは 50 であ るためCLKFX180 は CLKFX の反転クロ ッ クのよ うに見えます

表 25 にある等式が示すよ うに設計段階で 2 つの属性を使用し合成出力周波数を制御します CLKINク ロ ッ ク入力は CLKFX_MULTIPLY が分子 CLKDV_DIVIDE が分母である比率を使用して逓倍されます たとえば 75MHz CLKIN 入力を使用して 155MHz の出力を生成するためには 周波数合成回路では 3115 の比率で CLKIN を逓倍します これは CLKIN を始めに 31 倍し 次に 15 で割ることではあ り ませんCLKIN を 31 倍するこ とによって出力周波数は2325GHz とな りSpartan-3 DCMの周波数範囲を越えるこ とにな り ます

68 を 34 と約分するよ うに 逓倍値および分周値はもっと も簡潔な値にする必要があ り ます このことによって ロ ッ クするために必要な時間が短縮します

周波数合成には 常にク ロ ッ ク フ ィードバッ クが必要ですが DFS には CLKIN を基準と した内部フ ィードバッ ク ループがあるため DLL を使用せずに DFS を使用する場合には CLKFB に別のループは必要あ り ません

また CLKFB 出力は CLKIN の CLKFX_DIVIDE サイ クルごと および CLKFB の CLKFX_MULTIPLY サイクルごとに CLKIN に対して位相調整されます たとえばCLKFX_MULTIPLY = 3 であ りCLKFX_DIVIDE = 5 の場合CLKFX 出力の位相は CLKIN の各 5 サイクルごと および CLKFB の 3 サイクルごとに CLKIN 入力に対して位相調整されます DCM で LOCKED 出力がアサート される と DFS は CLKIN 入力の立ち上がりエッジごとに再同期し ほぼ完璧に位相調整されます

表 25 周波数合成回路のまとめ

DCM 出力 CLKFX

CLKFX180 (CLKFX を 180deg位相シフ ト した場合と同一)

出力周波数

DCM の機能ユニッ ト デジタル周波数合成 (DFS)

フ ィードバッ ク CLKIN を基準にして内部フ ィードバッ クを使用するため 必要あ り ません 遅延ロッ ク ループ (DLL) を使用する場合は オプシ ョ ンと して CLKFB 入力を使用できます

50 デューティ サイ クル出力 常に 50 です

制御属性

DFS_FREQUENCY_MODE CLKIN CLKFX 出力 CLKFX180 出力の周波数条件に影響します

DLL_FREQUENCY_MODE アプリ ケーシ ョ ンで DLL 出力が使用される場合に 周波数合成回路のみに影響を与えます また よ り厳しい DLL の条件に適用するよ うに CLKIN 周波数を低下させる可能性があ り ます CLKFX 出力または CLKFX180 出力が使用されている場合 周波数条件は DFS_FREQUENCY_MODE によってのみ指定されます

CLKFX_MULTIPLY 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 2 から 32 であ りデフォルトは 4 です

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 1 から 32 であ りデフォルトは 1 です

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 57

R

DCM Wizard

周波数合成を使用する場合図 41 に示すよ うに DCM Wizard の[General Setup]ダイアログ ボッ クスで CLKFX または CLKFX180 あるいはその両方のチェッ ク ボッ クスをオンにしてください

CLKFX 出力または CLKFX180 出力のみを使用する場合はオプシ ョ ンと して DLL ク ロ ッ ク出力およびフ ィードバッ クをディ スエーブルにするこ とによって 周波数範囲を広げるこ とができます

bull デフォルトでは CLK0 出力は常にオンになっていますが CLKFX または CLKFX180 のみを使用する場合は CLK0 のチェッ ク ボッ クスをオフにしてください

bull 図 42 に示すよ うに DCM フ ィードバッ クをディ スエーブルにする場合は [None] を選択してください フ ィードバッ クを使用しない場合はCLKFX および CLKFX180 の周波数範囲は高域と低域の両方で広くな り ます

周波数制約

CLKIN アプリ ケーシ ョ ンで 遅延ロッ ク ループ (DLL) からの出力が使用されていない場合CLKIN の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます DLL が使用されている場合は DLL のクロ ッ ク周波数条件はよ り厳し くな り ます

CLKFXCLKFX180

CLKIN 出力および CLKFX180 出力の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 25 周波数合成回路のまとめ (Continued)

最小周波数 最大周波数

CLKIN_FREQ_FX_MIN (~10 MHz) CLKIN_FREQ_FX_MAX (~326 MHz)

DFS_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_FX_LF_MIN(~24 MHz)

CLKIN_FREQ_FX_LF_MAX(~210 MHz)

HIGH CLKIN_FREQ_FX_HF_MIN(~210 MHz)

CLKIN_FREQ_FX_HF_MAX(~325 MHz)

図 41 DCM Wizard での Frequency Synthesizer 設定

CLK0

CLKFXCLKFX180

CLKFXCLKFX180

CLKFX CLKFX180

DCM

x462_41_070903

58 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロックのフォワード ミ ラー リバッファR

DCM Wizard のクロ ッ ク周波数合成で示したよ うに必要は出力周波数または逓倍値と分周値を入力します

クロックのフォワード ミ ラーリバッファ

DCM は高度なクロ ッ ク制御機能を持ちさ らに Spartan-3 IO ピンは多様な IO 電圧標準をサポートするため 通常 Spartan-3 FPGA ではクロ ッ ク信号のリバッファ またはミ ラーを行い 入力クロ ッ クの電圧を変更ために使用されます 同様に DCM の入力クロ ッ ク条件を変更し デューティ サイクルを50 に調整します

図 20 に DCM の入力クロ ッ クを 50 デューティ サイ クルに調整し その周波数で CLK0 出力を使用してクロ ッ クをフォワードする または DCM CLK2X を使用して周波数を 2 倍にする DCM の例を示しました DCM が LOCKED 出力をアサートする と 入力クロ ッ クおよび出力クロ ッ クは位相調整されます CLKFB へのフ ィードバッ ク パスは外部のクロ ッ ク フ ィードバッ ク地点でクロ ッ ク分散遅延を確認し 削除します

出力クロ ッ クのデューティ サイクルが 50 であるこ とは重要であるため出力 IO 標準が 50 デューティ サイ クルを維持できるために十分な速度でスイ ッチできる こ と を確認して ください デューティサイ クルの動作は 出力信号でのシ ミ ュレーシ ョ ンを行う こ とによって検証します IBIS シ ミ ュレーシ ョ ンで確認できるよ うに IO 標準には立ち上がり と立ち下がりが対称的ではなく デューティ サイクルにずれが発生しているものもあ り ます HSTL SSTL および LVCMOS の DCI バージ ョ ンの IO標準の立ち上がりおよび立ち下がりがよ り対称的です

100 MHz を越える場合のデューテ ィ サイ クルを確実に 50 にするためには CLKIN のソースのデューティ サイ クルが 50 の場合にも DCM のデューティ サイクル調整機能を使用する必要があ ります したがって ク ロ ッ ク フォワードに CLK0 CLK90 CLK180 または CLK270 を使用する場合はDUTY_CYCLE_CORRECTION 属性を TRUE に設定してください 通常その他の DCM ク ロ ック出力は常に 50 のデューティ サイ クルに調整されます ( 「ク ロ ッ ク調整」 を参照して ください)

200 MHz 以上で動作する場合のデューティ サイ クルを最適にするためには図 43 に示すよ うな回路を使用して ください こ こでは DCM からの CLKx 出力および CLKx180 出力がデュアル データ レート (DDR) 出力フ リ ップフロ ップの C0 入力および C1 入力を駆動するよ うに使用します DDR フ リ ップフロ ップの D0 入力を VCC に接続し D1 入力を GND に接続します また DCM の各出力は個々のグローバル バッファを駆動しデューティ サイクルのずれを最小にします 高周波数の場合に 1つのク ロ ッ クのみを分散し DDR フ リ ップフロ ップ内部でローカル位相シフ ト を行う と 約 150ps のデューティ サイクルのずれが発生するため このよ うな回路設計は推奨していません

周波数が 250 MHz 以上の場合には分散クロ ッ クに LVDS のよ うな差動信号標準を使用します 図 43にCLKIN ク ロ ッ ク入力およびクロ ッ ク出力がと もに VLDS を使用する例を示します さ らにク ロ ック フ ィードバッ ク パスも LVDS を使用します パフォーマンスを最適にするためには ク ロ ッ ク入力およびクロ ッ ク フ ィードバッ ク パスにグローバル バッファ入力 (IBUFGDS) を使用する必要があ り ます これによってデバイスの一辺にあるすべてのグローバル バッファ入力を使用するこ とになり ますが 高周波数でのクロ ッ ク フォワードを最適に行う こ とができます

図 42 フ ィードバックに [None] を選択し 周波数範囲を拡大

SourceFeedback

Internal External None

Value 1X 2X

If only using the CLKFX or CLKFX180clock ouputs optionally click None to extend the DCM frequency limits

x462_42_070903

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 59

R

クロック ジッ タおよび位相ノイズ

もっと も高価で高精度なものの場合においてもすべてのクロ ッ クにはクロ ッ ク ジッタまたは位相ノイズがあ り ます こ こでは Spartan-3 デジタル ク ロ ッ ク マネージャに固有のジッ タ特性について説明します 低周波数 たとえば 20 MHz で動作する場合は 一般に ジッ タの影響は無視できますが200 MHz のよ う な高周波数で動作する場合には 特にデュアル データ レート (DDR) アプリ ケーシ ョンにおいて ジッ タはデザインの問題に関連する要素となり ます ク ロ ッ ク ジッタによって アクティブ ク ロ ッ ク エッジ間で実際に有効な時間が削減されるため FPGA アプ リ ケーシ ョ ンで使用できる時間が制限されます

クロック ジッ タ とは図 44 に示すよ うにク ロ ッ ク ジッタ とは理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジの相違です 太線は 理想的なクロ ッ ク信号を表します 各クロ ッ ク エッジでは 理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジ間に若干のずれがあ り このずれの最大値と最小値の差異をピーク ジッ タ と呼びます ジッ タは アクテ ィブなク ロ ッ ク エッジのみに関係します たとえば シングル データ レート(SDR) アプリ ケーシ ョ ンの場合データは各立ち上がりエッジでクロ ッ ク入力され この場合のジッタは総クロ ッ ク周期から引く こ とによって求められます 一方 デュアル データ レート (DDR) の場合データは各クロ ッ ク周期の始ま り および 12 ク ロ ッ ク周期の点でクロ ッ ク入力されるため ジッ タは12 ク ロ ッ ク周期ごとに影響を与えます

図 43 高周波数 (250 MHz 以上) での LVDS クロック フォワード回路

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKx180

BUFG

BUFG

VCC

GND

OBUFDS

CLKIN

CLKFB

IBUFGDS

IBUFGDS

External Clock Feedback (LVDS)

FPGA

x462_43_061903

図 44 クロック信号におけるジッ タ

x462_44_061903

60 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

クロック ジッ タの原因ク ロ ッ ク ジッタはすべてのシステムに存在しそれを避けるこ とはできません ク ロ ッ ク ジッタの原因は システム内のノ イズのソース または不完全な信号であ り 実際 ジッ タは時間軸上における ノ イ

ズである と言えます たとえば 入力クロ ッ ク ソースには ク リ スタルからの任意の温度振動ノ イズまたは機械的な振動ノ イズによる固有のジッタ特性があ り ます 多くの同時スイ ッチ出力 (SSO) は回路基板にノ イズを追加するため 内部スイ ッチしきい値がわずかに変更し ジッ タが増加します 同様に適切に設計されていない電源供給または不十分なデカップリ ングによってもジッ タは増加します

その他のジッタの原因と しては近接した信号のクロス トーク不適切な終端 グランド バウンス電磁干渉 (EMI) などが考えられます

このアプ リ ケーシ ョ ン ノートでは Spartan-3 デジタル ク ロ ッ ク マネージャ (DCM) および FPGA 内部でのジッタ全般について説明します

クロック ジッ タ特性の理解ク ロ ッ ク ジッタの特性はさまざまな方法で定められ次のよ うにいろいろな方法でその特徴を捉えることができます

サイクル間ジッ タ

隣接サイクル ジッタ と も呼ばれるサイクル間ジッタは 図 45 に示すよ うに 1 つのクロ ッ ク サイクルと次のクロ ッ ク サイクル間でのクロ ッ ク周期の最大差異です この例ではあるクロ ッ ク サイクルと次のクロ ッ ク サイクル間の最大差異は +100 ps および -100 ps または plusmn100 ps です数百万クロ ッ ク サイクル間の計測を行う場合にはクロ ッ ク周期の変動の絶対値が大き くなる可能性があ り ますがク ロ ッ

ク サイクル間の変動が plusmn100 ps よ り大き くなるこ とはあ り ません

サイクル間ジッタは ク ロ ッ ク出力またはオシレータの特性を測定するために重要ですが アプ リ ケー

シ ョ ンのタイ ミ ング解析には有効ではあ り ません

周期ジッ タ

周期ジッタは 数百万クロ ッ ク サイクル間で計測したサイ クル間ジッタの合計です ピーク ジッ タは理想的なクロ ッ ク移行時間と比較した場合の最短および最小移行時間を示します

デジタル ク ロ ッ ク マネージャの周期ジッ タは一定ではく ピーク間ジッタ と して表されます 図 46 に示すよ うに 理論的には クロ ッ ク移行位置は理想的なクロ ッ ク位置を中心とする確率的な分散 また

はヒ ス ト グラムですが実際の分散はガウス分布ではなく二峰性分布の場合があ り ます 実際のクロ ック移行のほとんどは理想的なクロ ッ ク位置付近で起こ り ますが数百万クロ ッ ク サイクルにおける測定の結果 望ましい位置から離れた地点で起こるクロ ッ ク移行もあ り ます

理想的な位置からの統計的な距離はσ (シグマ) と呼ばれる標準偏差で測定されます DCM はすべてデジタルで機能するデザインであるため 非常に安定しており ザイ リ ンクスでは ジッ タの偏差を plusmn7σまたはピーク間ジッ タを 14σ と定めています 判断基準と して 偏差が plusmn7σ である とい う こ とは ジッタの 9999999999974 が指定されたワース ト ケース ジッ タよ り小さい値であるこ とを保証していま

図 45 サイクル間ジッ タ例

T0 T1 = T0 + 100 ps T2 = T1 - 100 ps

x462_45_062203

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 61

R

す また 14σ ピーク間ジッ タ plusmn7σ ジッタ偏差は 最大ビッ ト エラー レート (BER) が 128 x 10-12 という こ とを意味します

ユニッ ト インターバル(UI)

ジッタの仕様を単位間隔 (UI) の割合と して指定する別の方法もあ り ます 1 UI は 周波数に関わらず1 ビッ ト時間を表します ク ロ ッ クの立ち上がりエッジ または立ち下がりエッジのいずれかでデータが取り込まれるシングル データ レート (SDR) アプリ ケーシ ョ ンでは1 UI は 1 ク ロ ッ ク周期になり ます 一方 2 倍のクロ ッ ク レートでデータがクロ ッ ク入力されるデュアル データ レート (DDR) アプリケーシ ョ ンでは 1 UI が 12 ク ロ ッ ク周期になり ます

UI で指定されるピーク間ジッタ幅は 総ビッ ト周期時間に対するピーク間ジッタ値の比率です

総ジッ タの計算

『Spartan-3 データ シート 』 には CLKFXCLKFX180 以外の DCMのク ロ ッ ク出力におけるジッ タが記載されてます デジタル周波数合成 (DFS) ジッ タは 逓倍値および分周値に基づいて算出されます

データ シートには DLL からのクロ ッ ク出力 (CLKFX および CLKFX180 を除くすべてのクロ ッ ク出力) に対するワース ト ケース ジッ タが記載されています DLL ではジッ タが削減されないため DLLク ロ ッ ク出力の総ジッタには入力クロ ッ クである CLKIN のジッタおよびデータ シートに記載された値が含まれます

また DFS ク ロ ッ ク出力である CLKFX および CLKFX180 では 入力ク ロ ッ ク ジッ タがある程度削減されるため 算出された出力ジッタが総ジッタにな り ます

図 46 ピーク間周期ジッ タ例

図 47 ユニッ ト インターバルの比率で示された周期ジッ タ

Desired clock period

Measured clock period

Num

ber

of s

ampl

esPeak-to-peak Period Jitter

(14σ)

+7σ-7σ

x462_46_061903

Bit Period

Unit Interval (UI)

x462_47_061903

62 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

DLL 出力ジッ タへの入力ジッ タの加算

入力ジッタに DLL 出力ジッタを加える場合ノ イズ計算と同様に 2 乗平均平方根 (RMS) 計算を使用します

ピーク間

等式 10

ピーク間偏差

等式 11

定義

入力クロ ッ クのピーク間周期ジッ タが 150 ps (plusmn75 ps) であ り このク ロ ッ クのデューティ サイ クルがDCM の CLK0 出力と同一の周波数を使用して修正される場合について考えます

この場合 JITTERINPUT = 150 ps であ り JITTERSPEC の値は 『Spartan-3 データ シート 』 で指定されている CLKOUT_JITT_PER_0 と呼ばれる値です これは ピーク間で plusmn100 ps または 200 ps である と概算されます

したがって DCM 出力の総ジッタはピーク間で 250 ps または plusmn125 ps です

カスケード接続された DCM のジッ タ計算図 48 に 複数の DCM をカスケード接続し さまざまな出力周波数を生成しているアプ リ ケーシ ョ ンの例を示します この場合のジッタは 次によって決定されます

bull 前のソースからのジッタ

bull 使用されている DCM 出力

データ シートに記載されているよ うにジッ タ特性は各 DCM 出力によってわずかに異なり ます またDFS からの CLKFX 出力および CLKFX180 出力は 入力ジッタをある程度削減し ジッ タ値は DCMWizard で算出されます ( 「ク ロ ッ ク周波数合成」 参照して ください)

JITTERINPUT = FPGA のクロ ッ ク入力ピンで測定された入力周期ジッタ

JITTERSPEC = 『Spartan-3 データ シート 』 に記載されている適切な出力ポートに対する DLL ク ロ ッ ク出力周期ジッタ

JITTERTOTAL = 予想される総出力周期ジッタ

JITTERTOTAL JITTERINPUT( )2 JITTERSPEC( )

2+=

JITTERTOTALJITTERINPUT( )

2 JITTERSPEC( )2+

2--------------------------------------------------------------------------------------------------------plusmn=

JITTERTOTAL 150 ps( )2200 ps( )

2+ 250 ps= =

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 63

R

したがって カスケード接続された DCM チェーンの任意の点におけるジッタは前述した 2 つの要因によって決定されます 次の例では 回路上のいくつかの点で総ジッタを計算する方法を示します

例 1 すべての DCM が DLL 出力を使用する場合

この例では 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

こ こでは DCM (A) が CLK2X 出力を使用する場合について考えます また DCM 出力ジッ タに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_2X 値を使用してください この値は 400 ps (plusmn200 ps) と概算されています 等式 10 を使用しク ロ ッ ク (A) の総周期ジッタを計算します

次にDCM (B) で分周値が整数である CLKDV 出力を使用する場合について考えます またDCM 出力ジッタに対して 『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_DV1 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (B) の総周期ジッタを計算します この場合 入力ジッタ DCM (A) からのジッタ DCM (B) からのジッタを考慮する必要があるため RMS 等式は次のよ うになり ます

最後に DCM (C) が DCM (B) からの出力を 90deg位相シフ トする場合について考えます また DCM出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します この場合 入力ジッ タ DCM (A) からのジッ タ DCM (B) からのジッ タDCM (C) からのジッ タを考慮する必要があるため RMS 等式は次のよ うにな り ます

例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合

この例は DFS からの CLKFX 出力または CLKFX180 出力を使用する DCM がある点以外は 例 1 すべての DCM が DLL 出力を使用する場合と同様です

この例では 75MHz 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

例 1 と同様に まず DCM (A) が CLK2X 出力を使用する場合について考えます 出力ジッタは 次に示す等式になり ます

この例ではDCM (A) で生成された 150MHz を使用してDCM (B) で 90MHz 合成クロ ッ クを生成します DCM Wizard ( 「ク ロ ッ ク周波数合成」 を参照して ください) を使用し CLKFX_MULTIPLY=3および CLKFX_DIVIDE=5 と設定します ワース ト ケースの出力周期ジッタは 700 ps とな り ます

図 48 カスケード接続された DCM のジッ タ計算

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

A B C

x462_48_061903

JITTERTOTAL A( ) 150ps( )2400ps( )

2+ 427ps 214psplusmn= = =

JITTERTOTAL B( ) 150ps( )2400ps( )

2300ps( )

2+ + 522ps 261psplusmn= = =

JITTERTOTAL C( ) 150ps( )2 400ps( )2 300ps( )2 300ps( )2+ + + 602ps 301psplusmn= = =

JITTERTOTAL B( ) 700ps 350psplusmn= =

64 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

最後にDCM (C) が DCM (B) からの出力を 90deg位相シフ ト させる場合について考えます DCM 出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用してください この値は 300 ps (plusmn150 ps) と概算されています 次の等式を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します 次の DCM では CLKFX を使用するため 総入力ジッ タは ワース ト ケースで700 ps とな り ます 次の RMS 等式を使用し 出力ジッタを計算します

カスケード接続した DCM を使用する場合の推奨デザイン

DCM をカスケード接続して使用する場合 図 48 に示すよ うに DCM からの LOCKED 出力が次のDCM の RST 入力を制御しているこ とを確認してください カスケード接続した DCM では 1 つ前のDCM で LOCKED 出力がアサート され ク ロ ッ クが安定しているこ とが示されてた後に 入力クロ ックにロ ッ クする必要があ り ます

また DCM をカスケード接続する場合には 最もジッ タの影響を回避する必要のあるク ロ ッ ク出力が最初の DCM に接続されるよ うに DCM チェーンを構成してください

システム パフォーマンスにおけるジッ タの影響ク ロ ッ ク ジッタによっても有効なビッ ト周期が狭くな りシステム パフォーマンスが低下します 次の等式に示すよ うに FPGA アプリ ケーシ ョ ンで使用可能なビッ ト周期は 総ビッ ト周期 TBIT からいくつかの影響を差し引いたものです シングル データ レート (SDR) アプリ ケーシ ョ ンでは ク ロ ッ ク周期とビッ ト周期は一致しますがデュアル データ レート (DDR) アプリ ケーシ ョ ンのビッ ト周期はクロ ッ ク周期の 12 になり ます

定義

総ジッ タがク ロ ッ ク周期からの偏差ではな く正の値に指定されている場合 (たとえば plusmn100 ps ではなく200 ps の場合) 正の値を 2 で割り ます (100 ps) ビッ ト周期は負の偏差によってのみ短くなり 正の偏差によってはビッ ト周期が長くな り さ らにタイ ミ ング スラ ッ クが追加されます

入力クロ ッ ク信号の周波数は 75 MHz であ り ク ロ ッ ク ソースのジッ タは plusmn100 ps です アプリ ケーシ ョ ンは内部で生成された 150 MHz のクロ ッ クの立ち上がりエッジでデータを入力します また 総ビッ ト周期 TBIT は 667 ns です ジッ タの影響を考慮する と 有効なビッ ト周期 TAVAILABLE は

どのよ うになるでし ょ うか

2 逓倍クロ ッ ク回路からの CLK2X 出力によって75MHz ク ロ ッ ク入力から 150MHz ク ロ ッ クが生成されます 『Spartan-3 データ シート 』 の CLKOUT_PER_JITT_2X 仕様による と 2 逓倍クロ ッ ク出力である CLK2X には plusmn~200 ps (概算) のワース ト ケース ジッタがあ り ます 2 乗平均平方根を使用し

TBIT = ビッ ト周期時間

tTOTAL_JITTER = 総クロ ッ ク ジッ タ ク ロ ッ ク入力ジッタに DCM 出力ジッタ またはカスケード接続された DCM のジッタを加算したものです

tDUTY_CYCLE_DISTORTION = デューティ サイ クルのずれ デュアル データ レート (DDR) アプリケーシ ョ ンのみで必要であ り それ以外の場合はゼロです 使用する DCM ク ロ ッ ク出力によって データ シートに記載されている CLKOUT_DUTY_CYCLE_DLL または CLKOUT_DUTY_CYCLE_FX を使用します

JITTERTOTAL C( ) 700ps( )2300ps( )

2+ 762ps 381psplusmn= = =

TAVAILABLE TBIT tTOTAL_JITTERndash tDUTY_CYCLE_DISTORTIONndash=

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 65

R

DCM のジ ッ タplusmn200 ps にク ロ ッ ク ソースのジ ッ タ plusmn100 ps を加算する こ と によ って 総ジ ッ タtTOTAL_JITTER が plusmn0223 ns であるこ とがわかり ます

データはクロ ッ クの立ち上がりエッジでのみ入力されるためデューティ サイクルのずれが影響を与えるこ とはな く tDUTY_CYCLE_DISTORTION = 0 です

結果と して 有効な総クロ ッ ク周期 TAVAILABLE は総ビッ ト周期である 6667 ns から 6444 ns に減少します 結果と して ロジッ クは 150 MHz ではなく 1551831 MHz で動作します

クロック ジッ タを最小限にするための推奨デザイン高性能アプリ ケーシ ョ ンでは ク ロ ッ ク ジッタによって有効なビッ ト周期が短くな り ますシステム全体のクロ ッ ク ジッタを最小限にするためには次の推奨デザインを参考にしてください

適切な電力分散システム設計

電力プレーン デカップ リ ングを含む 電力分散システム (PDS) を適切に設計するこ とによって 安定した電力環境を作成し システム ジッ タを削減できます アプ リ ケーシ ョ ン ノー ト XAPP623 ではPDS の適切な設計にについて説明しています

bull XAPP623 電力分散システム (PDS) デザイン バイパスデカップリ ング キャパシタhttpwwwxilinxcomxappxapp623pdf

適切なプリン ト サーキッ ト ボードの設計

予想される動作周波数範囲およびアプ リ ケーシ ョ ン環境に適したプ リ ン ト サーキッ ト ボード設計を行ってください

bull WP174 PCB への効果的な FPGA 統合httpwwwxilinxcojppublicationswhitepaperswp_pdfwp174pdf

bull PCB チェッ ク リ ス トhttpsupportxilinxcomxlnxxil_prodcat_productjsptitle=si_pcbcheck

同時スイッチ出力 (SSO) の推奨デザイン

DCM へのク ロ ッ ク入力 または DCM からのク ロ ッ ク出力の信号に関連した問題を回避するために『Spartan-3 データ シート 』 に記載されている同時スイ ッチ出力 (SSO) 仕様に沿っているこ とを確認して ください

また 可能な限り DCM の入力または出力をスイ ッチング回数の多い IO の近くに配置するこ とを避けてください 特に 出力電圧幅が大きい IO または駆動電流が高い IO の場合にはこのこ とが重要です

仮想グランド ピンを DCM 入力および出力接続の近くに配置

さまざまな影響を受けやすく高周波数である DCM の入力または出力では仮想グランド ピンのよ うなユーザー IO ピンを追加して PCB へ別の接続を作成します このよ うな仮想グランド ピンは ジッタの影響を受けやすい DCM 信号に近接する IO パッ ドに配置して ください IO パッ ドは パッケージのピンまたはボール上だけでなく FPGA のダイ レベルでも近接しているこ とを確認して くださいBGA パッケージ上で隣接しているボールは 必ずしも FPGA 上にある隣接したパッ ドに接続する必要はあ り ません このよ うに設計するこ とによって 内部電圧降下が軽減され ジッ タが削減されます

仮想グランドを作成する場合は図 49 に示すよ うに IOB を GND (Low ロジッ ク レベル) を駆動する出力と して設定し その IOB を外部で直接グランド プレーンに接続します

tTOTAL_JITTER 100psplusmn( )2 200psplusmn( )2+ 22360psplusmn 0223nsplusmn= = =

TAVAILABLE 6667ns 0223nsndash 6444ns= =

66 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

VCCAUX 考察

デジタル ク ロ ッ ク マネージャは VCCAUX 入力によって電源が供給されます FPGA への電源供給入力である VCCAUX の過剰ノ イズは DCM の特性 特にジッタ特性を低下させます DCM のパフォーマンスを最適にするために 次に従ってください

1 図 50 に示すよ うに VCCAUX 電源供給 またはグランド上の変動を 1 ms 間で 10 mV よ り小さ くして ください この制限によって DCM は変動に適切に対応して動作します

2 図 50 に示すよ うに 電源供給のノ イズをピーク間で 200 mV 以内にして ください

3 VCCAUX および VCCO が同一の電源プレーンにある場合 すべての VCCAUXVCCO ピンを適切にデカップリ ングまたはバイパスする必要があ り ます ( 「適切な電力分散システム設計」 を参照してください) また 上記の 1 および 2 を維持できない場合 VCCAUX と VCCO を分離して使用してください

4 特に CLK2X 出力は電源シフ ト またはグランド シフ トの影響を受けます したがって すべての IOB および CLB でスイ ッチングがある場合には CLKFX_MULTIPLY =2 および CLKFX_DIVIDE=1 と設定されている CLKFX 出力はよ り よい特性を持つ出力を供給します DFS モードの場合 CLK2X 出力の更新が遅いのに対して CLKFB 迂回回路では 3 入力クロ ッ クごとにタ ップが更新されます

FACTORY_JF 設定の修正

適切に設計され 安定し 適切にデカップリ ングされた電源供給が FPGA 内のクロ ッ ク スキューおよびジッタを低減するためにもっと も有効な方法ですが FACTORY_JF 属性を 0xFFFF に設定することによって 問題の発生しているボード上のジッタを低減できる場合があ り ます FACTORY_JF=FFFF の場合 DCM はおよそ 20 入力クロ ッ クごとにタ ップ設定を更新し 周波数を基にしたデフォルト設定よ り もタ ップ更新の間隔は短くな り ます

図 49 DCM 入力または出力クロック信号への仮想グランド ピンの使用

IBUFG

OBUF

OBUF

To DCMCLKIN Input

Sensitive DCMClock Input

FPGAldquoVirtualrdquoground pin

Direct connectionto PCB groundplane

GND

GND

x462_49_061903

図 50 電圧降下を回避するための VCCAUX 考察

VCCAUXSupply(at FPGA)

dV lt 10 mV

dt lt 1 mS

Keep VCCAUX noiseenvelope to lt 200 mVpeak-to-peak

Avoid sudden changes fromone DC level to anotherKeep dVdt lt 10mVmS x462_50_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 67

R

ただし FACTORY_JF の設定値を大き くするこ とによって DCM では遅延ラインが頻繁に更新されジッ タがわずかに増加する (~30 ps) 可能性もあるため FACTORY_JF のデフォルト設定は最大値ではあ り ません 電源供給が不安定の場合には 発生した位相エラーが増加したジッタよ り大きい場合があり この場合には FACTORY_JF の設定値を大き くするこ とによって デザインのパフォーマンスを向上できます

その他 ビッ トス ト リーム生成の設定

DCM では 次の 2 つのビッ ト ス ト リーム生成 (BitGen) オプシ ョ ンがあ り ます

bull -g lck_cycle このオプシ ョ ンを使用する場合インスタンシエート された DCM で LOCKED 出力がアサート されるまで FPGA のコンフ ィギュレーシ ョ ン スタート アップ シーケンスを遅らせるこ とができます

bull -g DCMShutdown このオプシ ョ ンを使用する場合JTAG ポート を使用した部分再コンフ ィギュレーシ ョ ン または全体の再コンフ ィギュレーシ ョ ンを実行中に コンフ ィギュレーシ ョ ン ロジックに SHUTDOWN コマンドがロード される と DCM ロジッ クがリセッ ト されます

Project Navigator でのビッ トス ト リーム生成オプシ ョ ン

ISE 52i Project Navigator を使用する場合は 図 51 に示すよ うに [Processes for Source] ウ ィンド ウで [Generate Programming File] を右ク リ ッ ク し [Properties] を選択するこ とによってビッ ト ス トリーム生成オプシ ョ ンを設定します

詳細は 「BitGen スイ ッチおよびオプシ ョ ン」 を参照してください

コマンド ライン またはスクリプ ト を使用したビッ トス ト リーム生成オプシ ョ ン

設定可能なオプシ ョ ンを表示するためには 次のコマンドを入力します

bitgen -help spartan3

DCM LOCKED 出力とコンフ ィギュレーシ ョ ン ロジックの設定

DCM の STARTUP_WAIT 属性を使用するこ とによってDCM で LOCKED 出力がアサート されるまで FPGA で DONE 信号がアサート されるを遅らせFPGA のコンフ ィギュレーシ ョ ン スタート アップロジッ クを待たせるこ とができます ただし このためには設計段階で次の二つの設定を行う必要があり ます まず ロ ッ ク状態になってからコンフ ィギュレーシ ョ ンを完了する必要がある各 DCM に対するSTARTUP_WAIT 属性を TRUE に設定します 次に各信号がスタート アップの 6 ク ロ ッ ク サイクルで 図 52 に示すよ うに動作するよ うにビッ ト ス ト リーム生成オプシ ョ ンを変更します デバイスがコンフ ィギュレーシ ョ ン スタート アップ シーケンスを完了するためにはDCM が LOCKED をアサート後に十分なコンフ ィギュレーシ ョ ン ク ロ ッ ク サイ クルが必要です

図 51 Project Navigator でのビッ トス ト リーム生成 (BitGen) オプシ ョ ン

Processes for Current Source

Generate Programming File

Programming File Generation Report

RunRerunRerun AllStopOpen without Updating

Properties

x462_51_061903

68 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他R

A FPGA 内部のグローバル ト ラ イ ステート信号 (GTS_cycle) を開放し すべての IO 信号をイネーブルにします

B GTS_cycle 後に DCM で LOCKED がアサート されるまでスタート アップ ロジッ クが待機するよにサイクルを設定します DCM では クロ ッ ク信号でロ ッ ク状態になる前に ク ロ ッ クおよび可能ならばフ ィードバッ ク信号のよ うな外部入力が必要です

C DCM がロ ッ ク状態になった後 FPGA の内部グローバル書き込みイネーブル (GWE_cycle) 信号をアサート します

D 最後に 内部の DONE 信号をアサート します

図 53 に Project Navigator を使用したオプシ ョ ン設定を示します

スタート アップ位相タイ ミ ングおよび GWE_cycle と DONE_cycle のタイ ミ ングには柔軟性があ り ますがDCM で STARTUP_WAIT 属性を使用する場合は必ず LCK_cycle の前に GTS_cycle がなければなり ません シーケンスがこのよ うになっていない場合にはDCM がロッ クせずコンフ ィギュレーシ ョ ンが完了しません

図 52 DCM LOCKED 出力とスタートアップ ロジックの相互関係

0 1 2 3 4 5 6

DONE_cycle

Start-up CLK

GTS_cycle

GWE_cycle

LCK_cycle

Start-up Cycles

A

B

C

D

x462_52_062403

図 53 BitGen オプシ ョ ン

Process Properties

Startup options

Value

CCLK

6

3

5

4

Default (NoWait)

General Options Configuration Options Readback Options

Property Name

FPGA Startup Clock

Enable Internal Done Pipe

Done (Output Events)

Enable Outputs (Output Events)Release Write Enable (Output Events)Release DLL (Output Events)

Match Cycle (Output Events)

Drive Done Pin High

OK Cancel Default Help

Optionally set GWE_cycle to follow GTS_cycleensuring DCM(s) reset afterIOs activate

LCK_cycle indicates cyclewhere start-up logic waitsfor DCM(s) to assertLOCKED

Done_cycle after LCK_cycle GTS_cycle must occur

before LCK_cycle to enableIO pins

[Startup options]

[OK] x462_53_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 69

R

JTAG を使用した部分再コンフ ィギュレーシ ョ ンまたは全体の再コンフ ィギュレーシ ョ ン中の DCM リセッ ト

も う 1 つのビッ ト ス ト リーム オプシ ョ ンと して SelectMAP を使用した部分再コンフ ィギュレーシ ョン中 または JTAG ポート を使用した全体および部分再コンフ ィギュレーシ ョ ン中に FPGA にあるすべての DCM を リセッ トできます このオプシ ョ ンを使用する場合 SHUTDOWN コマンド シーケンス中に AGHIGH コンフ ィギュレーシ ョ ン コマンドが発行される とDCM がリセッ ト されます JTAGを使用して再コンフ ィ ギュレーシ ョ ンを行う場合には 必ず DCM を リ セッ トする必要があ り ますProject Navigator でビッ ト ス ト リーム生成オプシ ョ ンを変更するためには (「Project Navigator でのビット ス ト リーム生成オプシ ョ ン」 を参照) 図 54 に示すよ うに Configuration options タブをク リ ッ クし [Reset DCM if SHUTDOWN amp AGHIGH performed] オプシ ョ ンのチェッ ク ボッ クスをオンにして ください

一時的な CLKIN の停止厳密なアナログ測定を行っている間のシステム全体のノ イズを削減するため FPGA アプリ ケーシ ョ ンのその他の部分に影響を与えるこ とな く 一時的に DCM へのクロ ッ ク入力を停止できます これが可能である理由の一部はDCM がすべてデジタルで安定して機能するシステムであるためです DCM では最初に入力クロ ッ クに対してロ ッ ク し次に LOCKED 出力をアサートする必要があ り ます DCM がリセッ ト しない場合には デスキュー回路にほとんど影響を与えずに CLKIN 入力クロ ッ クを一時的に停止できますが 次の条件を満たす必要があ り ます

bull デバイスが冷却するこ とによるタ ップ遅延の変化の影響を最小限にするために ク ロ ッ クの停止時

間は 100 ms 未満である必要があ り ます

bull ク ロ ッ クが Low である間に停止する必要があ り12 周期分の High から再開する必要があ り ます

上述の条件は理論的にはクロ ッ ク入力ジッタの仕様に違反しますがDCM の LOCKED 出力は Highを維持し ク ロ ッ クが再び動作する際にも High を維持しています したがって LOCKED が High であるこ とは必ずしも有効なクロ ッ クが使用可能であるこ とにはなり ません このため実際にはクロ ック入力ジッタの仕様に違反していますが これらの条件を満たす限り問題はあ り ません

CLKIN を停止する際にはDCM のデジタル遅延ラインにあるクロ ッ クが出力されるため 1 から 8 出力クロ ッ ク サイクルが生成されます 同様に CLKIN が再開する場合には 遅延ラインが満たされる

図 54 再コンフ ィギュレーシ ョ ン中に DCM をリセッ トするためのコンフ ィギュレーシ ョ ン オプシ ョ ン

Process Properties

Configuration options

ValuePull Up

Pull UpFloatPull UpPull Down0xFFFFFFFF

General Options Startup options Readback Options

Property NameConfiguration Pin DoneJTAG Pin TCKJTAG Pin TDIJTAG Pin TDOJTAG Pin TMSUnused IOBsUserID Code (8 Digit Hexadecimal)Reset DCM if SHUTDOWN amp AGHIGH performed

OK Cancel Default Help

Click Configuration options tab

Click OK when finished

Pull Up

Check to reset all the DCMsin the FPGA if the AGHIGHcommand issued duringSHUTDOWN sequence

x462_54_062103

70 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

参考資料R

までの 1 から 4 ク ロ ッ クサイ クル間は出力クロ ッ クが生成されません 通常 遅延ラインが満たされるためは 2 または 3 ク ロ ッ ク サイ クルが必要です

また 入力ク ロ ッ クを停止するこ とによって 位相シフ ト を行う こ とができます この位相シフ トは

DCM による制御を中断させるこ とな く 1 から 4 ク ロ ッ ク サイクル後のクロ ッ ク出力から影響を与えます

図 55 に CLKIN 入力クロ ッ クを一時的に停止する例を示します また この図には CLK2X ク ロ ッ ク出力への影響も示しています

参考資料 bull 『Spartan-3 データ シート 』 (モジュール 2) デジタル  ク ロ ッ ク  マネージャの特長および機能httpwwwxilinxcojpbvdocspublicationsds099-2pdf

bull 『Spartan-3 データ シート 』 (モジュール 3) タイ ミ ングおよびジッタ特性

httpwwwxilinxcojpbvdocspublicationsds099-3pdf

bull ザイ リ ンクス ISE 52i ライブラ リ ガイ ドDCM プリ ミ ティブhttptoolboxxilinxcomdocsanxilinx5pdfdocsliblibpdf

bull Architecture Wizard 録音版 Web セミナーhttpsupportxilinxcojpsupporttrainingjapan-home-pagehtm

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcojpxappxapp622pdf

bull 『開発システム リ ファレンス ガイ ド』 15 章 「BitGen」 ビッ ト ス ト リーム生成プログラムおよびオプシ ョ ン 335-367 ページhttptoolboxxilinxcomdocsanxilinx5pdfdocsdevdevpdf

図 55 CLKIN の一時的な停止

CLKIN

CLK2X

Clock input must bestopped in Low phase andfor no more than 100 ms

When restarted the clockinput must generate a fullHigh half-period

x462_55_062403

改訂履歴

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 71

R

改訂履歴 次の表に このアプリ ケーシ ョ ン ノートの改訂履歴を示します

日付 バージョ ン 履歴

20030709 10 初版リ リース

  • Spartan-3 FPGA におけるデジタル クロック
  • マネージャ (DCM) の使用
    • 概要
    • はじめに
    • 概要
    • DCM 位置および クロック分散 ネットワーク インターフェイス
    • DCM 機能の概要
      • 遅延ロック ループ (DLL)
      • デジタル周波数合成 (DFS)
      • 位相シフト (PS)
      • ステータス ロジック
        • DCM プリミティブ
          • シンボル
          • 接続ポート
          • 属性プロパティおよび制約
            • その他のザイリン クス FPGA ファ ミリとの互換性
            • DCM 使用のため のクロック条件
              • 入力クロック周波数範囲
              • 出力クロック周波数範囲
              • クロック入力およびクロック フィードバック入力の変動
                • LOCKED 出力
                • RST 入力
                • DCM Wizard
                  • DCM Wizard の起動
                    • Windows のスタート ボタンから起動
                    • Project Navigator から起動
                      • Wizard 選択
                      • [General Setup]
                      • アドバンスド オプション
                      • クロック バッファ
                      • クロック周波数合成
                      • HDL 出力の生成
                        • VHDL および Verilog のインス タンシエーション
                          • Project Navigator の言語テンプレート
                          • VHDL および Verilog リファレンス ファイル
                            • クロック スキュー の低減
                              • クロック スキューとは
                              • クロック スキュー パフォーマンス低下の原因
                              • スキューの削除
                              • 過去のクロック動作から将来のクロック動作を予測
                              • ターゲットのロック
                              • 安定した単調なクロック入力
                              • 確実なソースからのフィードバック
                              • 内部クロック信号からのスキュー削除
                              • 外部クロック信号からのスキュー削除
                                • コンフィギュレーション後の DCM リセット
                                • なぜリセットする必要があるのか
                                  • 遅延ロック ループとは
                                    • 遅延ロック ループ (DLL)
                                    • 位相ロック ループ (PLL)
                                    • インプリメンテーション
                                    • DLL と PLL
                                      • スキュー調整
                                        • システム同期
                                        • ソース同期
                                        • タイミングの比較
                                            • クロック調整
                                            • 位相シフト- ク ロック周期の分数 でクロックを遅延
                                              • 12 クロック周期位相シフト出力
                                                • 12 周期位相シフト出力によるデューティ サイクルのずれの削減
                                                • デュアル データ レート (DDR) クロックの例
                                                  • 14 位相シフト出力
                                                    • DLL 周波数モードによる出力の有効性
                                                    • 5050 デューティ サイクル調整オプション
                                                    • 4 つの位相遅延クロックエッジ位相パルス
                                                      • ファイン位相シフト
                                                      • 固定ファイン位相シフト
                                                        • 固定ファイン位相シフト範囲
                                                        • 最小位相シフト
                                                        • その他の考察点
                                                        • DCM Wizard
                                                          • 動的ファイン位相シフト
                                                            • 動作
                                                            • 動的ファイン位相シフト範囲
                                                            • 制御
                                                            • DCM Wizard
                                                            • アプリケーション例
                                                                • クロック逓倍 クロック分周 周波数合成
                                                                  • 周波数合成アプリケーション
                                                                  • 入力クロックおよび出力クロックの周波数条件
                                                                  • 2 逓倍クロック (CLK2XCLK2X180)
                                                                  • クロック分周 (CLKDV)
                                                                    • CLKDV クロック調整
                                                                    • CLKDV のジッタは周波数モードおよび属性値が整数か整数ではないかによって決定されます
                                                                    • DCM Wizard
                                                                      • 周波数合成回路 (CLKFXCLKFX180)
                                                                        • DCM Wizard
                                                                            • クロックのフォ ワードミラー リバッファ
                                                                            • クロック ジッタお よび位相ノイズ
                                                                              • クロック ジッタとは
                                                                              • クロック ジッタの原因
                                                                              • クロック ジッタ特性の理解
                                                                                • サイクル間ジッタ
                                                                                • 周期ジッタ
                                                                                • ユニット インターバル(UI)
                                                                                  • 総ジッタの計算
                                                                                    • DLL 出力ジッタへの入力ジッタの加算
                                                                                      • カスケード接続された DCM のジッタ計算
                                                                                        • 例 1 すべての DCM が DLL 出力を使用する場合
                                                                                        • 例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合
                                                                                        • カスケード接続した DCM を使用する場合の推奨デザイン
                                                                                          • システム パフォーマンスにおけるジッタの影響
                                                                                              • クロック ジッタを最小限にするための推奨デザイン
                                                                                                • 適切な電力分散システム設計
                                                                                                • 適切なプリント サーキット ボードの設計
                                                                                                • 同時スイッチ出力 (SSO) の推奨デザイン
                                                                                                • 仮想グランド ピンを DCM 入力および出力接続の近くに配置
                                                                                                • VCCAUX 考察
                                                                                                • FACTORY_JF 設定の修正
                                                                                                    • その他
                                                                                                      • ビットストリーム生成の設定
                                                                                                        • Project Navigator でのビットストリーム生成オプション
                                                                                                        • コマンド ラインまたはスクリプトを使用したビットストリーム生成オプション
                                                                                                        • DCM LOCKED 出力とコンフィギュレーション ロジックの設定
                                                                                                        • JTAG を使用した部分再コンフィギュレーションまたは全体の再コンフィギュレーション中の DCM リセット
                                                                                                          • 一時的な CLKIN の停止
                                                                                                            • 参考資料
                                                                                                            • 改訂履歴
Page 9: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 9

R

CLKFX ク ロ ッ ク出力 合成クロ ッ ク出力であ り CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性で制御されます デューティ サイクルは常に 50 です CLKFX または CLKFX180 ク ロ ッ ク出力のみが使用されている場合には クロ ッ ク フ ィードバッ クは必要あ り ません 「周波数合成回路 (CLKFX CLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

CLKFX180 ク ロ ッ ク出力 CLKFX を 180deg位相シフ ト した (CLKFX を反転したよ うに見える) 合成クロ ッ ク出力であ り デューティ サイ クルは常に 50 です CLKFX ク ロ ック出力または CLKFX180 ク ロ ッ ク出力が DCM で使用されている場合には フ ィードバッ ク ループは必要あ り ません 「周波数合成回路 (CLKFXCLKFX180)」 および 「12 ク ロ ッ ク周期位相シフ ト出力」 を参照してください

STATUS[0] 出力 動的位相シフ トがオーバーフローであるこ とを示します 動的ファイン位

相シフ トの制御出力で 動的位相シフ トが最小値または最大値に達してい

るこ とを示します 制限値は plusmn255 または位相シフ ト遅延ラインの最後に達した場合は その値以下になり ます 「動的ファイン位相シフ ト 」 を参照し

てください

STATUS[1] 出力 CLKIN 入力が停止したこ とを示し CLKFB フ ィードバッ ク入力が接続されている場合のみに使用できます LOCKED 出力がアサート されるまではリセッ ト状態であ り アクティブになるためには CLKIN が 1 サイクル以上必要です CLKIN が最初から ト グルしない場合にはアサート されません

STATUS[2] 出力 CLKFX 出力または CLKFX180 出力が停止したこ とを示します 周波数合成回路 (CLKFX CLKFX180) を参照してください

STATUS[73]

出力 予約済み

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

0 位相シフ トは制限値に達していません

1 位相シフ トが制限値に達しています

0 CLKIN がト グルしています

1 CLKIN がト グルしていません

0 CLKFX 出力および CLKFX180 出力がト グルしています

1 CLKFX 出力および CLKFX180 出力がト グルしていませんただしLOCKED 出力が High に維持されている場合があ ります

10 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

LOCKED 出力 すべての DCM 機能は CLKIN の周波数にロッ ク しています CLKIN が指定された範囲内 ( 「DCM 使用のためのクロ ッ ク条件」 に記載) である場合に クロ ッ ク出力が有効です 「周波数合成回路 (CLKFX CLKFX180)」を参照してください

PSDONE 出力 動的位相シフ トが完了したこ とを示します 「動的ファイン位相シフ ト 」 を

参照してください

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

0 DCM は CLKIN の周波数に対してロ ッ クする過程であ りDCM のクロ ッ ク出力は無効です

1 DCM は CLKIN の周波数に対してロ ッ ク しDCM のクロ ック出力は有効です

1 rarr 0 DCM のロ ッ ク状態が解除され DCM を リセッ トする必要があ り ます

0 位相シフ トが行われていない または実行中です

1 要求された位相シフ トは完了しています この出力が PSCLK の 1 サイクル間 High になった後次の位相シフ ト を実行できます

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 11

R

属性 プロパティ および制約

表 4 にデジタル ク ロ ッ ク マネージャの属性を示しますすべての属性は設計段階で設定されコンフ ィギュレーシ ョ ン中にプログラムされます 動的ファイン位相シフ ト以外では FPGA アプリ ケーシ ョ ンの実行中にこれらの設定を変更するこ とはできません 使用するデザイン入力ツールに合わせて lt属性gt=lt設定gtを使用し 属性を設定します

表 4 DCM 属性

属性 可能な設定および説明

DLL_FREQUENCY_MODE CLKIN 入力 PSCLK 入力 および遅延ロッ ク ループ (DLL) からの出力クロ ッ クの有効周波数範囲を指定します DLL ク ロ ッ ク出力には CLK0 CLK90 CLK180 CLK270CLK2X CLK2X180 CLKDV が含まれます

CLK_FEEDBACK フ ィードバッ ク ク ロ ッ クの周波数を指定します

DUTY_CYCLE_CORRECTION DLL からの出力である CLK0 CLK90 CLK180 および CLK270 に対する 50 デューティ サイ クル調整をイネーブルまたはディ スエーブルに設定します

CLKDV_DIVIDE CLKDV 出力の周波数を指定します 設定可能な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 です

CLKDV_DIVIDE が整数ではない場合 ロ ッ クするために必要な時間が長くなり 出力ジッ タが増加します

CLKFX_MULTIPLY CLKFX 出力および CLKFX180 出力の周波数を逓倍する場合の係数を指定します この値は CLKDV_DIVIDE 属性の値と と もに使用されます CLKFX_MULTIPLY に設定可能な範囲は整数値の 2 から 32 であ り デフォルトは 4 です

LOW デフォルトです DLL は低周波数モードで動作し DLL に関連したすべての出力が有効です ク ロ ッ ク入力およびクロ ッ ク出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DLL の指定範囲内にあ り ます

HIGH DLL は高周波数モードで動作します 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力 および 14 位相シフ ト出力 CLK90 と CLK270 は無効です CLKDV_DIVIDE 属性が整数以外の場合 CLKDV 出力のデューティ サイクルは 50 になり ません ク ロ ッ ク入力およびクロ ッ ク出力の周波数は『Spartan-3 データ シート 』 に記載されている高周波数 DLL の指定範囲内にあり ます

1X デフォルトであ り CLK0 フ ィードバッ クです周波数は CLKIN と同一です

2X CLK2X フ ィードバッ クであ り 周波数は CLKIN の 2 倍です

なし フ ィードバッ ク ク ロ ッ クはあ り ません CLKFX 出力または CLKFX180 出力のみを使用している場合に可能です

TRUE デフォルトであ り デューティ サイクルは 50 に調整されます

FALSE デューティ サイクル調整は行われません

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

12 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLKDV_DIVIDE CLKFX 出力および CLKFX180 出力の周波数を分周する場合の係数を指定します この値は CLKFX_MULTIPLY 属性の値と と もに使用されます設定可能な範囲は整数値の 1 から 32 であ り デフォルトは 1 です

PHASE_SHIFT この属性は CLKOUT_PHASE_SHIFT 属性が FIXED または VARIABLE に設定されている場合にのみ使用できます CLKIN とすべての DCM ク ロ ッ ク出力間の立ち上がりエッジにおけるスキューをコンフ ィギュレーシ ョ ンで定義し DCM ク ロ ッ ク出力を位相シフ ト させます

スキューまたは位相シフ ト値は整数で指定されます この整数値は 次の等式に示すよ うに

ク ロ ッ ク周期の分数で表され範囲は -255 から 255 になり ますデフォルト値は 0 であ り実際に設定可能な値は入力クロ ッ ク周波数によって異なり ます また TCLKIN gt FINE_SHIFT_RANGE の場合には 実際の範囲はよ り小さ くな り ますFINE_SHIFT_RANGE は遅延ラインにおけるすべてのタ ップの総遅延を示します 詳細は「ファ イン位相シフ ト 」 を参照してください

CLKOUT_PHASE_SHIFT 位相シフ ト モードを指定します PHASE_SHIFT 制約と共に使用し DCM のデジタル位相シフ ト (DPS) 機能をインプリ メン ト します また この設定は DLL および DFS からのすべてのクロ ッ ク出力に反映されます 詳細は 「ファ イン位相シフ ト 」 を参照してください

DESKEW_ADJUST FPGA ク ロ ッ ク入力ピンと DCM 出力クロ ッ ク間のクロ ッ ク遅延調整を制御します 「スキュー調整」 を参照してください

この設定を DCM ク ロ ッ ク出力の位相シフ トに使用しないでください 正確な位相シフ ト を行う場合にはCLKOUT_PHASE_SHIFT 制約または PHASE_SHIFT 制約を使用してください

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

なし デフォルトです CLKIN および CLKFB は同位相 (スキューなし ) であ り位相関係は変更できません PHASE_SHIFT = 0 の場合の FIXED 設定と同一です

FIXED 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定され アプ リ ケーシ ョ ンでは変更できません

VARIABLE 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定されますが 動的位相シフ ト制御信号 PSEN PSCLK PSINCDEC および PSDONE を使用してアプリ ケーシ ョ ンで変更可能です

SYSTEM_SYNCHRONOUS デフォルトであ り すべてのデバイスがシステム全体

に共通のクロ ッ ク ソースで動作します

SOURCE_SYNCHRONOUS データ ソースから クロ ッ クが入力されます ソース同期アプリ ケーシ ョ ンがその一例です

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 13

R

DFS_FREQUENCY_MODE DCM のデジタル周波数合成 (DFS) からのクロ ッ ク出力である CLKFX および CLKFX180 に有効な周波数範囲を指定します DLL ク ロ ッ ク出力が使用されている場合はDLL_FREQUENCY_MODE によって CLKIN 入力の周波数範囲がよ り制限されます

STARTUP_WAIT DCM の LOCKED 信号のアサート よ り先に FPGA コンフ ィギュレーシ ョ ンの DONE 信号を High にするかど うかを制御します

2 つ以上の DCM をコンフ ィギュレーシ ョ ンしている場合は すべての DCM がロ ッ クする必要があ り ます

CLKIN_DIVIDE_BY_2 CLKIN が DCM ブロ ッ クに入力される前に 周波数を 2 分周します アプリ ケーシ ョ ンによっては 入力クロ ッ クの周波数を適切な範囲内に低減できます

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

LOW デフォルトであ り DFS は低周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合 CLKIN 入力の周波数範囲はその出力によって変化します

HIGH DFS は高周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている高周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合CLKIN 入力の周波数範囲はその出力によって変化します

FALSE デフォルトであ り DCM がロ ッ ク状態になるのを待たずに DONE 信号がアサート されます

TRUE DCM がロ ッ ク状態になるまで DONE 信号は High になり ません ただし この STARTUP_WAIT は LOCKED 信号が High になるのを妨げるものではあり ません またFPGA のスタート アップ シーケンスのサイクルの始めに LCK (ロ ッ ク ) サイクルを挿入するよ うに修正する必要があ り ます ( 「ビッ ト ス ト リーム生成の設定」 を参照してください) 通常は DONE サイクルまたは GWE サイクルがその後に続きます

FALSE デフォルトであ り CLKIN は直接 DCM ブロ ッ クに入力されます

TRUE CLKIN が DCM に入力する前に その周波数を 2 分周され デューティ サイクルは約 50 に調整されます これは 高周波数のクロ ッ クを使用し DCM の入力クロ ッ クの周波数条件またはデューティ サイ クル条件を満たす場合に有効です また 周波数モードを決定する場合 または位相シフ ト範囲を算出する場合に クロ ッ ク周波数を 2 分周します

14 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他のザイリンクス FPGA ファ ミ リ との互換性R

その他のザイリンクス FPGA ファミ リ との互換性

Spartan-3 のデジタル ク ロ ッ ク マネージャ (DCM) は Virtextrade-II および Virtex-II Pro FPGA ファ ミ リで使用されている DCM とほぼ同様の機能を持ちますが Spartan-3 DCM は第三世代の DCM デザインであ り さ らに機能が向上しています 特に Virtex-II デバイス と比較する と Spartan-3 デバイスはVCCAUX 供給電源における ノ イズ耐性が改善されVirtex-IIPro ファ ミ リ よ り も位相シフ ト機能に柔軟性があ り ます 出力の周波数制限値はVirtex-II および Virtex-II Pro ファ ミ リの DCM の方が高くなっています

またSpartan-IIIIE と比較する と Spartan-3 DCM の遅延ロッ ク ループ (DLL) 機能は大幅に改善され Spartan-IIIIE DLL の機能をすべて備えているだけでなく 周波数合成および位相シフ ト機能が追加されました Spartan-3 の周波数合成では 最大 32 までの係数を使用して入力クロ ッ クを逓倍しますが Spartan-IIIIE DLL での周波数合成機能は 2 逓倍までです 同様に Spartan-3 DCM の分周機能はSpartan-II DLL よ り広範囲に対応しています

DCM 使用のためのクロック条件

DCM は その機能に最大限の柔軟性があるよ うに設計されていますが ク ロ ッ クの周波数と安定性周波数の変動 およびクロ ッ ク ジッタにいくつかの条件があ り ます

入力クロック周波数範囲

DCM のクロ ッ ク入力周波数は アプ リ ケーシ ョ ンにおける DLL ユニッ ト DFS ユニッ ト またはその両方によって決定されます

表 5 に デジタル周波数合成 (DFS) ユニッ トでの入力クロ ッ クCLKIN の周波数範囲を示します DFS ユニッ ト を単独で使用する場合の周波数範囲は DLL 入力ニッ ト よ り も広くな り ますが 両ユニッ ト を使用する場合には よ り厳しい周波数条件を DLL に適用する必要があ り ます 表には データ シートに記載されている仕様名および概算値の 1 つを示していますが実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

FACTORY_JF DCM の DLL ユニッ トでタ ップ設定を修正する頻度を制御します この設定は DLL エレメン トのジッ タ特性に影響を与え DLL_FREQUENCY_MODE 属性に基づいて自動的に指定されます

設計方法と して推奨された場合以外は デフォルト設定を変更しないでください (「FACTORY_JF 設定の修正」 を参照してください)

LOC 図 1 に示すよ うに DCM の物理的な配置位置を指定します

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

DLL_FREQUENCY_MODE FACTORY_JF

LOW 0xC080

HIGH 0xF0F0

DCM_X0Y0 DCM の左下

DCM_X1Y0 DCM の右下 (XC3S50 では設定不可)

DCM_X0Y1 DCM の左上

DCM_X1Y1 DCM の右上 (XC3S50 では設定不可)

DCM 使用のためのクロック条件

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 15

R

表 6 に遅延ロッ ク ループ (DLL) ユニッ トでの入力クロ ッ ク CLKIN の周波数範囲を示します DLLが単独で使用されている場合と DFS と と もに使用されている場合では 同一の周波数条件が適用されます 表には低周波数モードおよび高周波数モードの場合の DLL の周波数範囲を示しています この周波数モードはDLL_FREQUENCY_MODE 属性によって指定されます 表にはデータ シートに記載されている仕様名および概算値の 1 つを示していますが 実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

出力クロック周波数範囲

DCM の出力クロ ッ クに対しても周波数範囲が指定されています 詳細は 「入力クロ ッ クおよび出力クロ ッ クの周波数条件」 を参照して ください

クロック入力およびクロック フ ィードバック入力の変動「安定した単調なクロ ッ ク入力」 で説明するよ うに DCM では安定性があ り単調なクロ ッ ク入力を使用する必要があ り ます しかし DCM 機能の柔軟性を最大限に使用しよ う とする場合 CLKIN で発生するクロ ッ ク ジッタおよび CLKIN 入力と CLKFB 入力の変動をある程度まで許容しなければなり ません

CLKIN 入力におけるジッタには 2 つのタイプがあ り ます 1 つはサイ クル間ジッタであ り このジッタは CLKIN 入力周期があるサイ クルから次のサイ クル間でどの程度の変化を許容できるかを示します 表 7 にデータ シートに記載されている仕様名および概算値を含むサイクル間ジッタの最大許容範囲を示します

表 5 デジタル周波数合成 (DFS) ユニッ トのクロック入力周波数範囲

機能 最小周波数 最大周波数

デジタル周波数合成 (DFS) CLKIN_FREQ_FX_MIN ~ 100 MHz

CLKIN_FREQ_FX_MAX ~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 6 遅延ロック ループ ユニッ トのクロック入力周波数範囲

機能

DLL 周波数モード属性 (DLL_FREQUENCY_MODE)

= LOW = HIGH

最小周波数 最大周波数 最小周波数 最大周波数

遅延ロ ッ ク ループ (DLL)

CLKIN_FREQ_DLL_LF_MIN

~ 24 MHz

CLKIN_FREQ_DLL_LF_MAX

~ 180 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 48 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 7 サイクル間ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_CYC_JITT_FX_LF~ plusmn300 ps

CLKIN_CYC_JITT_FX_HF~ plusmn150 ps

遅延ロッ ク ループ (DLL) CLKIN_CYC_JITT_DLL_LF~ plusmn300 ps

CLKIN_CYC_JITT_DLL_HF~ plusmn150 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

16 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

LOCKED 出力R

も う 1 つのジッタは 周期ジッタ と呼ばれ クロ ッ ク周期間の最大変動を示します サイクル間ジッタがあるサイクルと次のサイクルの差を示すのに対し 周期ジッタはクロ ッ ク周期全体での変化範囲を示

します 表 8 にデータ シートに記載されている仕様名および概算値を含む周期ジッタの最大許容範囲を示します

DCM の安定性に影響を与える別の要素は DLL で使用される ク ロ ッ ク フ ィードバッ ク パスですフ ィードバッ ク パス遅延の変動は 表 9 に示す範囲内でなければな り ません ただし グローバル クロ ッ ク ラ インに接続される場合はチップ上の変動が最小になるため こ こに示した範囲制限は外部フ ィードバッ ク パスにのみ適用されます

LOCKED 出力 DCM の LOCKED 出力は すべての DCM 機能が CLKIN 入力にロ ッ ク している こ と を示し ますLOCKED 信号がアサート される場合にはFPGA アプリ ケーシ ョ ン内で出力クロ ッ クを使用できます

図 5 に LOCKED 出力信号の動作を示しますLOCKED 出力は FPGA のコンフ ィギュレーシ ョ ン終了直後に Low になり RST 入力がアサート されている場合は常に Low です

コンフ ィギュレーシ ョ ン後 DCM は CLKIN 信号の有効無効に関わらず 常にロ ッ ク状態になろ う とします入力クロ ッ クが安定していない場合にはCLKIN 入力が安定するまでFPGA 回路 で RST 入力をアサートする必要があ り ますDLL では CLKIN 入力および CLKFB 入力の両方を使用し これらの立ち上がりエッジが同位相である時に完全にロ ッ ク状態であるこ とを確認しますDFS ではCLKINを使用してク ロ ッ クの周波数が有効であるかを確認します また DCM がロ ッ ク状態になるために数千クロ ッ ク サイクルのサンプルが必要となる場合があ り ます

DCM の CLKIN に対するロッ クが完了する とLOCKED 出力が High にアサート されDCM のクロ ック出力が有効となるため FPGA アプリ ケーシ ョ ン内でこれらの出力を使用できます 『Spartan-3 データ シート 』 の タイ ミ ングに関する章には ロ ッ クに必要な時間のワース ト ケースが記載されています通常 クロ ッ ク周波数が高いほどDLL 出力は短時間でロッ ク状態になり ます またDFS 出力がロックするためには非常に長い時間が必要とな り ます この時間は 逓倍または分周の係数によって変化し

ますが これらの係数が小さいほど時間は短縮します

システム ク ロ ッ クが安定してから FPGA のコンフ ィギュレーシ ョ ンを完了させるために オプシ ョ ンと して DCM がロ ッ ク状態になるまでコンフ ィギュレーシ ョ ンの完了を遅らせるこ とができます この機能は STARTUP_WAIT 属性で制御します

LOCKED が High になる前の DCM ク ロ ッ ク出力信号の動作は保証していません LOCKED が Highになる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な波形が含まれている場合があ ります

表 8 周期ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_PER_JITT_FX_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_FX_HF~ plusmn1000 ps (plusmn1 ns)

遅延ロッ ク ループ (DLL) CLKIN_PER_JITT_DLL_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_DLL_HF~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 9 外部フ ィードバック パス遅延範囲

解説 指定範囲

チップ外にある CLKFB フ ィードバッ ク パス遅延の最大許容範囲 CLKFB_DELAY_VAR_EXT ~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

RST 入力

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 17

R

CLKIN 入力の周波数が指定範囲内である場合DCM は内部遅延のタップを調整し ロ ッ ク状態を維持しますが その制限を大幅に満たしていない場合には ロ ッ ク状態が解除され LOCKED 出力が Lowになり ます

一度 DCM のロ ッ ク状態が解除される と 自動的に再びロッ ク状態に戻るこ とはあ り ません ロ ッ ク状態が解除された場合つま り LOCKED が High から Low となった場合にはFPGA アプリ ケーシ ョ ンでは RST 入力を使用して DCM を リセッ トするなどの適切な方法を使用して 再びロ ッ ク状態にする必要があ り ます

RST 入力 非同期の RST 入力は DCM ロジッ クを リ セッ ト してコンフ ィギュレーシ ョ ン後の設定に戻しますRST ピンはFPGA を再コンフ ィギュレーシ ョ ンする場合または許容範囲を超えている入力周波数を変更する場合に使用して ください このピンはアクティブ High であ り ダイナミ ッ ク信号またはグランドに接続する必要があ り ます また RST 入力は最低 2ns 間アサート しなければなり ません

コンフ ィギュレーシ ョ ン後に 入力ク ロ ッ ク周波数が安定していない場合 ク ロ ッ クが安定するまで

RST をアサー ト して ください また 外部フ ィードバッ クを使用している場合は コンフ ィギュレーシ ョ ン直後に DCM を リセッ ト します31ページの図 20 に SRL16 シフ ト レジスタ プリ ミ ティブを使用した リセッ ト方法の例を示します

LOCKED 周波数が High から Low になる場合のよ うに DCM のロ ッ ク状態が解除される と FPGAアプリ ケーシ ョ ンでは RST をアサート しDCM に入力クロ ッ ク周波数に対して再ロ ッ ク させる必要があ り ます

図 5 LOCKED 出力の機能的な動作

LOCKED HIGH

FPGA RST

Y

N

Y

N

FPGA

LOCKED LOW

CLKIN

LOCKED LOW

RST

x462_05_062103

CLKIN

RST

RST

18 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

DCM の LOCKED 出力が High の場合 RST がアサート される と この LOCKED 出力は 4 ク ロ ッ クサイ クル以内に Low になり ます このため リセッ ト後は DCM を再びロ ッ ク状態にさせます

また RST をアサートするこ とによって DCM の遅延タップ位置がゼロに戻り このタ ップ位置を変更するこ とによってDCM のクロ ッ ク出力ピンでグ リ ッチが発生する可能性があ り ます 同様にRSTはクロ ッ ク出力のデューティ サイクルにも影響を与えます

さ らに RST がアサート される と現在の可変位相シフ ト値は PHASE_SHIFT 属性で指定された値に戻り ます

DCM Wizard DCM を使用するアプリ ケーシ ョ ンを容易にするために ザイ リ ンクス ISE には 順を追って DCM を設定できるソフ ト ウェア Wizard が含まれています 図 6 に示すよ うに DCM Wizard を使用するこ とによってVHDL 構文または Verilog 構文で DCM をインスタンシエートするベンダ固有のロジッ ク合成ファイルを生成できます また DCM Wizard では特定のインプリ メンテーシ ョ ン用にユーザー制約ファイル (UCF) を生成できますさ らにすべてのユーザー仕様はXilinx Architecture Wizard (XAW)設定ファイルに保存されます

DCM Wizard の起動DCM Wizard を起動するためにはWindows のスタート ボタンから起動するまたはザイ リ ンクス ISEProject Navigator ソフ ト ウェアから起動する という 2 つの方法があ り ます

Windows のスタート ボタンから起動

DCM Wizard を Windows スタート ボタンから起動する場合は[スタート ] rarr [すべてのプログラム] rarr[Xilinx ISE 5] rarr [アクセサリ ] rarr [Architecture Wizard] をク リ ッ ク します 図 7 に設定ウ ィンド ウを示します

bull DCM のオプシ ョ ン設定を保存する Xilinx Architecture Wizard (xaw) ファ イル名を入力します

bull こ こで [Browse] ボタンをク リ ッ ク して xaw ファ イルを選択するこ と も可能です

bull 出力ファイルのロジッ ク合成言語を VHDL または Verilog から選択します

bull ロジッ ク合成ツールを選択します DCM Wizard では 指定した合成ツールに応じて ベンダ固有の出力ファイルが生成されます

bull ターゲッ ト デバイスに Spartan-3 を選択します

図 6 DCM Wizard の DCM 設定用グラフ ィ カル インターフェイス

DCM Wizard

User contraintsfile (UCF)

Vendor-specificVHDL or Verilog

Xilinx ArchitectureWizard (XAW)

settings file

Graphically configure aSpartan-3 Digital ClockManager (DCM)

x462_06_061803

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 19

R

Project Navigator から起動

Project Navigator のメニュー バーから または [Sources in Project] ウ ィンド ウから DCM Wizard を起動できます メニュー バーで [Project] rarr [New Source] を選択するか [Sources in Project] ウ ィンドウで右ク リ ッ ク し [New Source] を選択してください

図 8 に示すよ う に リ ス ト か ら [Architecture Wizard] を選択し ます Xilinx Architecture Wizard(xaw) ファ イル名を入力し そのファイルを保存するディ レク ト リ を選択した後 [Next] をク リ ッ クします

図 7 Architecture Wizard の設定

図 8 Project Navigator での Architecture Wizard 設定

Xilinx Architecture Wizard Setup

My_Spartan-3 Browse

XAW File

Output File Type

VHDL Verilog

XST

Synthesis Tool

XC3S1000-FT256-4 Select

OK Cancel

Part

DCM

Spartan-3

[OK]

x462_07_061803

New

User DocumentVHDL ModuleCoreGen IPSchematicVHDL LibraryVHDL PackageVHDL Test BenchTest Bench WaveformBMM FileMEM FileImplementation Constraints FileArchitecture WizardState Diagram

My_Spartan-3

F ile Name

MyDirectory

Lo cation

Add to Project

lt Back Next gt Cancel Help

DCM

[Next]

Architecture Wizard

x462_08_061803

20 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

Wizard 選択前述した手順はすべての ISE Architecture Wizard に共通ですが Spartan-3 FPGA は図 9 に示す DCMWizard をサポート します こ こで [OK] をク リ ッ ク し 次に進みます

[General Setup] 図 10 に示すよ うに ほとんどのオプシ ョ ンは DCM Wizard の [General Setup] ダイアログ ボッ クスで設定します 楕円の枠内には その設定に対応する DCM プリ ミ ティブ属性名を示します

bull DCM のインスタンス名を入力します このインスタンス名は Verilog または VHDL 出力ファイル内で使用されます

bull 最終的なアプリ ケーシ ョ ンにおける出力および機能を選択するためには 必要な DCM ク ロ ッ ク出力のチェッ ク ボッ クスをオンにします チェッ ク ボッ クスをオンにした出力に対しては それに関連したオプシ ョ ンの設定が可能になり ます

bull CLKIN ク ロ ッ ク入力の周波数を入力します 周波数を MHz で指定するかまたはクロ ッ ク周期をns で指定して ください この値によって DCM の DLL_FREQUENCY_MODE 属性が設定されます

bull CLKIN ソースが FPGA の内部であるか外部であるかを指定します[External] を選択した場合DCM Wizard は自動的にグ ローバル バッ フ ァ入力 (IBUFG) プ リ ミ テ ィ ブを挿入し ます[Internal] を選択した場合は ソース信号は HDL ソース ファ イル内の ト ップ レベル入力となり ます

bull CLKDV 出力をオンにした場合は クロ ッ ク分周回路の [Divide by Value] 値を指定します この値によって DCM の CLKDV_DIVIDE 属性が設定されます

bull DCM へのフ ィードバッ ク パスを指定します CLKFX 出力または CLKFX180 出力のみを使用する場合は [None] を選択します これらの出力を使用しない場合は フ ィードバッ クが必要ですFPGA 内部からのフ ィードバッ クを使用する場合は [Internal] を選択し外部からのフ ィードバック ループを使用する場合は [External] を選択します さ らに DCM フ ィードバッ クのソースをCLK0 (1X) または CLK2X (2X) から選択します この選択によってDCM の CLK_FEEDBACK属性が設定されます

図 9 Spartan-3 FPGA でのみ選択可能な DCM Wizard

Xilinx Architecture Wizard Selection

DCM Wizard

OK Cancel

Select Wizard

Spartan-3 DCM Wizard [OK]

x462_09_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 21

R

bull すべての DCM 出力における位相シフ トの有無を指定します デフォルト設定は位相シフ ト なし (None) です 位相シフ トが必要な場合は 位相シフ ト値と して [Fixed] または [Variable] を選択します [Variable] を選択するこ とによって 動的位相シフ ト制御 PSEN PSINCDECPSCLK および PSDONE が使用可能となり DCM の CLKOUT_PHASE_SHIFT 属性が指定されます Fixed モードおよび Variable モードのいずれを選択する場合でも 固定位相シフ ト値あるいは動的位相シフ トの初期値を決定する [Phase Shift Value] を指定します この値によってDCM の PHASE_SHIFT 属性が設定されます

bull アドバンス ド オプシ ョ ン ウ ィンド ウを開く場合は [Advanced] ボタンをク リ ッ ク します

bull 設定の完了後 [Next] をク リ ッ ク し ク ロ ッ ク バッファ ダイアログ ボッ クスに進みます

アドバンスド オプシ ョ ン図 11 に示すアドバンス ド オプシ ョ ン ウ ィンド ウで さ らに詳細な DCM オプシ ョ ンを設定できます

bull デフォルトではDCM は FPGA のコンフ ィギュレーシ ョ ンに対して影響を与えませんが [Yes] をク リ ッ ク した場合は DCM が LOCKED 出力をアサートするまで FPGA コンフ ィギュレーシ ョンで DONE 信号のアサート を遅らせるこ とができます この設定は DCM の STARTUP_WAIT属性で定義します このよ うに [Yes] を選択した場合は ビッ ト ス ト リーム生成オプシ ョ ンの追加

図 10 [General Setup] ダイアログ ボックスでの DCM オプシ ョ ン設定

Xilinx DCM Wizard - General Setup

MY_DCMDCM Instance Name

Input Clock Frequency

MHz ns 2

Phase Shift Value

30

Advanced

Source

CLK0

CLK90

CLK180

CLK270

CLKDV

CLK2X

CLK2X180

CLKFX

CLKFX180

LOCKED

STATUS

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDECPSCLK

CLKIN SourceInternal

External

Divide By Value

FeedbackInternal External None

Value 1X 2X

Duty Cycle Correction

Yes No

Phase ShiftNone Fixed Variable

23 More Info

lt B ack Next gt Cancel

DCM

CLKFX CLKFX180

CLKDV

MHz ns

Advanced

(BUFG)

[Yes] CLK0CLK90 CLK180 CLK270

50CLK0 (1X)CLK2X (2X)

[Next]

CLKDV

[Fixed] PSEN PSINCDECPSCLK

[Variable]

DLL_FREQUENCY_MODE

CLK_FEEDBACK

CLKDV_DIVIDE

CLKIN IBUFG

[External][Internal]

DUTY_CYCLE_CORRECTIONCLKOUT_PHASE_SHIFT

DCM

PHASE_SHIFT

x462_10_061803

22 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

変更が必要です この変更については 「DCM LOCKED 出力と コンフ ィギュレーシ ョ ン ロジッ クの設定」 で説明します

bull ある特定の DCM において CLKIN 入力の周波数が高すぎる場合には [Divide Input Click by 2]の [Yes] をク リ ッ ク し 入力周波数を半減させて ください これによって DCM ブロ ッ クに入力前のデューティ サイ クルは約 50 にな り ます この設定は DCM の CLK_FEEDBACK 属性で定義します

bull ソース同期のデータ転送が必要なアプリ ケーシ ョ ンでは [DCM Deskew Adjust] 値を [SOURCE_SYNCHRONOUS] に変更します SOURCE_SYNCHRONOUS または SYSTEM_SYNCHRONOUS 以外の値を使用する場合はザイ リ ンクスにお問い合わせください この設定は DCM の CLK_FEEDBACK 属性を定義します 「スキュー調整」 を参照して ください

bull [OK] をク リ ッ ク し 変更を適用して [General Setup] ウ ィンド ウに戻り ます

クロック バッファ次に DCM の各クロ ッ ク出力に対するクロ ッ ク バッファを定義します(図 12 参照) DCM Wizard のデフォルト設定では 自動的にすべての DCM ク ロ ッ ク出力にグローバル バッファ (BUFG) を使用しますが Spartan-3 デバイスでは 上辺および下辺のそれぞれにある 4 つのグローバル バッファを同一辺にある 2 つの DCM で共有しますXC3S50 では上辺または下辺に 1 つの DCM があ り オプシ ョ ンと して同じ辺にある 4 つのクロ ッ ク バッファすべてに接続できます

bull [Clock Buffer Settings] にある [Customize] をク リ ッ ク し DCM の各クロ ッ ク出力にクロ ッ クバッファの種類を指定します

bull DCM の各クロ ッ ク出力に対して リ ス トから [Clock Buffer] 出力タイプを選択します 表 10 に選択可能なクロ ッ ク バッファ オプシ ョ ンを示します

bull [Enabled Buffer] 出力タイプを使用する際にはバッファ イネーブル (CE) 入力の信号名を指定できますが 自動的に作成された信号名も使用できます

bull [Clock Mux] 出力タイプを使用する場合もセレク ト (S) 入力の信号名を指定できますが自動的に作成された信号名も使用できます

bull [Next] まはた [Finish] をク リ ッ ク し 設定を完了します [Next] ボタンが表示されるのは[General Setup]ダイアログ ウ ィ ン ド ウで CLKFX 出力または CLKFX180 出力を選択した場合のみです それ以外の場合は [Finish] をク リ ッ ク し HDL 出力を生成します ( 「HDL 出力の生成」を参照して ください)

図 11 DCM アドバンスド オプシ ョ ン設定

Xilinx DCM Wizard Advanced

Wait for DCM lock before DONE signal goes high

Yes No

Divide Input Clock by 2

Yes No

SYSTEM_SYNCHRONOUS

OK Cancel

DCM Deskew Adjust

CLKIN 12

FPGA

DONEDCM

DCM

[OK]

DCM

STARTUP_WAIT

CLKIN_DIVIDE_BY_2

DESKEW_ADJUST

x462_11_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 23

R

図 12 DCM Wizard を使用した DCM 出力のバッファ オプシ ョ ン設定

Xilinx DCM Wizard - Clock Buffers

This dialog sets up the clock buffers for all the DCM clock outputs selected in the GeneralSetup dialog

Clock Buffer Settings

U se Global Buffer (BUFG) for all selected DCM clock outputs

C ustomize (using grid below)

Reference the lsquoMore Inforsquo button for more information on customizing the global buffers

M ore Info

lt Back N ext gt Cancel

Clock Buffer Input I0 Input I1 Input CES

Global Buffer CLK0

Enabled Buffer CLK90 CLK90_ENABLE_IN

Clock Mux CLK2X180 CLKFX CLKFX_SELECT_IN

Lowskewline CLK180

Local Routing CLK270

CLK2XGlobal BufferGlobal Buffer

Enabled BufferClock MuxLowskewlineLocal RoutingNone

Output O

CLK0_OUT

CLK90_OUT

CLKFX_OUT

CLK180_OUT

CLK270_OUT

CLK2X_OUT

DCM Wizard

BUFG

DCM

DCMFPGA

FPGA

[Next]

x462_12_061703

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

グローバル バッファ

4 つあるグローバル バッファ (BUFG) の 1 つを同じ辺にある DCM に接続します

イネーブル バッファ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク バッファ (BUFGCE) と して設定しているバッファに接続します CE 入力は High の場合にバッファをイネーブルにしLow の場合は バッファ出力がゼロになり ます

BUFGI0 O

BUFGCEI0 O

CE

CE O

0 0

1 I0

24 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

クロック周波数合成

図 13 に示すク ロ ッ ク周波数合成ダイアログ ボッ ク スは [General Setup] ダイアログ ウ ィ ン ド ウでCLKFX 出力または CLKFX180 出力を選択した場合のみに表示されます

こ こでは必要な出力周波数 または逓倍および分周の係数を指定します [Valid Ranges for SelectedSpeed Grade] で周波数範囲 (CLKIN を ns で指定した場合は遅延) を指定します 周波数範囲にはDFS_FREQUENCY_MODE 属性で設定可能な両方の値が表示されます DCM で DLL に関係したクロ ッ ク出力を使用する場合 この範囲条件はよ り厳し くな り ます

bull [Use output frequency] のチェッ クをオンにし MHz または ns で周波数を入力します [Calculate] をク リ ッ クする と CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性の値が算出されます 入力した範囲から可能な逓倍値および分周値を算出できない場合は DCM Wizard で別の出力周波数値を入力するよ うに求めるエラー メ ッセージが表示されます ソ リ ューシ ョ ンがある場合は [Generated Output] に逓倍値 分周値 およびジッ タの値が表示されます ( 「ク ロ ック ジッタおよび位相ノ イズ」 を参照してください)

bull オプシ ョ ンと して[Use Multiply (M) and Divide (D) values] のチェッ クをオンにしこれらの値を入力でき ます [Calculate] を ク リ ッ ク し 出力周波数およびジ ッ タ を計算し ます 結果は[Generated Output] に表示されます

bull 最後に[Finish] をク リ ッ ク しHDL 出力を生成します (「HDL 出力の生成」を参照してください)

ク ロ ッ ク マルチプレクサ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク マルチプレクサ (BUFGMUX) として設定しているバッファに接続します S 入力はクロ ッ ク ソースを選択します

低スキュー ライン 低スキューのプログラマブル相互接続に接続します

ローカル配線 スキューが重要ではない場合において ローカル相互接続に接続します

なし DCM 出力をディ スエーブルにします

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

O

S

BUFGMUXI0

I1 S O

0 I0

1 I1

I0

I0

VHDL および Verilog のインスタンシエーシ ョ ン

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 25

R

HDL 出力の生成すべてのパラ メータを入力後 [Finish] をク リ ッ クする と 図 14 に示すよ うに DCM Wizard が自動的に VHDL または Verilog HDL 出力ファイルを生成します また ユーザー制約ファイル (UCF) も生成されます

VHDL および Verilog のインスタンシエーシ ョ ン

DCM Wizard を使用し VHDL または Verilog HDL 記述を作成する方法が最も容易ですが VHDLソースおよび Verilog ソースも利用できます

Project Navigator の言語テンプレート

ISE 52i およびそれ以降の Project Navigator では DCM の言語テンプレートが使用できます DCMテンプレート を選択する場合はProject Navigator のメニューで [Edit] rarr [Language Templates] をクリ ッ ク します 図 15 に示すテンプレー ト で Verilog フォルダまたは VHDL フォルダを展開表示し

図 13 デジタル周波数合成の逓倍値と分周値の設定 およびジッ タの算出

Xilinx DCM Wizard - Clock Frequency Synthesizer

Valid Ranges for Selected Speed Grade

Inputs for Jitter Calculations

U se output frequency

M Hz ns875

U se Multiply (M) and Divide (D) values

4M 1D

Input Clock Frequency 30 ns C alculate

lt Back Finish Cancel

More Info

Generated Output

MOutput

Frequency(MHz)

29 111

Period Jitter(pk-to-pk ns)

D

11 875

Period Jitter(unit interval)

010

DFSMode

Fin (MHz)

Low

High

24000 - 18]0000

50000 - 270000

24000 - 210000

210000 - 270000

Fout (MHz)

MHz ns[Calculate]

DCM Wizard (M)

(D)

(M)(D)

[Calculate]

[Calculate]

[Finish]

DCM

CLKFX_MULTIPLY CLKFX_DIVIDE

CLKFX_MULTIPLY CLKFX_DIVIDE

DFS_FREQUENCY_MODE

x462_13_061803

図 14 DCM Wizard での VHDL または Verilog HDL 出力ファイルの生成

Xilinx Architecture Wizard

Cancel

Generating HDL file

x462_14_061803

26 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

Component Instantiation フォルダの DCM フォルダを選択します 次にDCM フォルダにある DCMソース ファ イルを選択する と 隣接したウ ィンド ウにソース ファ イルが表示されます

このファイルは参照用と して または内容を新規ソース ファ イルに貼り付けて使用できます

VHDL および Verilog リファレンス ファイル

また この VHDL および Verilog のソース ファ イルは 次のザイ リ ンクス FTP サイ トからダウンロードできます

bull VHDL DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_vhdlzip

bull Verilog DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_verilogzip

クロック スキューの低減

スキューの低減はDCM の基本的な機能の 1 つです 50 MHz 以上の速度で動作するデザインではクロ ッ ク スキューの低減が重要であ り このク ロ ッ ク スキューの低減に関連する概念は DCM を使用したその他のアプリ ケーシ ョ ンにも応用できます

クロック スキューとはク ロ ッ ク スキューは本質的にすべての同期システムに存在します ク ロ ッ ク ソースによって生成されたクロ ッ ク エッジは システム内の異なる点に 異なる時間に到達します これは 1 つのデバイス内の場合も クロ ッ クで接続された異なるデバイスへのクロ ッ ク入力の場合もあ り ます こ こで発生する到達時間の差がクロ ッ ク スキューです

図 16 に 同期システムにおけるクロ ッ ク スキューの例を示します ク ロ ッ ク ソースによって ク ロ ック入力が FPGA へ駆動され FPGA 上の入力ピンに入る と 内部の低スキュー グローバル ク ロ ッ クネッ ト ワークを使用して分配され FPGA 内部のフ リ ップフロ ップに到達します ク ロ ッ ク パスにある各エレ メン トによって フ リ ップフロ ップにクロ ッ ク エッジが到達する時間に遅延が生じます その結果と して フ リ ップフロ ップにおけるク ロ ッ ク入力 (B) で遅延が発生する つま り ク ロ ッ ク ソース (A)と比較してスキューが発生します この例では ク ロ ッ ク スキュー つま り到達時間の差を ∆b と します

図 15 Project Navigator 言語テンプレートでの DCM デザインの選択

Language Templates

Verilog

Component Instantiation

Block RAM

CLK0

CLK0_FB

CLK2X

Templates Module BUFG_CLK0_SUBM Description Verilog Submodule DCM with CLK0 deskew-

module BUFG_CKL0_SUBM ( CLK_IN RST CLK1X LOCK

DCM

x462_15_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 27

R

同様に ク ロ ッ ク ソースは FPGA 内部で再びバッファを介し ボード上にある別のデバイスを駆動します この例では クロ ッ ク ソースは再び入力ピンを通って FPGA に入り グローバル ク ロ ッ ク ネット ワークで分配され FPGA の出力ピンを通って PCB 上のト レースで別のデバイスに接続されますそのため ク ロ ッ ク パスにおける総遅延が大き くな り その結果と して発生するスキュー ∆c も大き くな り ます

クロック スキュー パフォーマンス低下の原因ク ロ ッ ク スキューによって セッ ト アップ時間 および clock-to-output 遅延が増加し ク ロ ッ ク サイクル時間が長くなるため デザインのパフォーマンス全体が低下する可能性があ り ます また ク ロ ッ クスキューによって 長いホールド時間が必要となる場合があ り このホールド時間を確保できない場合

には 不安定な動作を引き起こす可能性があ り ます

スキューの削除

ク ロ ッ ク スキューを削除する方法はあるのでし ょ う か 幸いにも デジタル ク ロ ッ ク マネージャ(DCM) はこのよ うな機能を備えています 図 17 に図 16 と同様の例を示しますがこ こでは Spartan-3 デバイスを使用しています 2 つの DCM によって次のよ うにクロ ッ ク スキューが削除されます 1つの DCM がFPGA 内部でクロ ッ ク入力されたものからのスキューを削除しも う一方の DCM が ボード上で別のデバイスにクロ ッ ク入力する場合のスキューを削除します この結果 (A) (B) および (C)のすべての点で理想的なクロ ッ ク間のアライ メン ト を実現できます

実際には ク ロ ッ ク スキューはどのよ うに削除されるのでし ょ うか ク ロ ッ ク スキューの原因は クロ ッ ク パスにおける遅延である こ と を思い出して ください 図 17 では (B) のク ロ ッ クで ∆ 分のスキューがあ り (C) のクロ ッ クに ∆c 分のスキューがあ り ましたが ク ロ ッ クを (B) に ∆b 分早く到達させ (C) に ∆c 分早く到達させる方法がある場合には どのよ うになるでし ょ うか このよ う な場合にはすべてのクロ ッ クのエッジが一致するよ うに調整されセッ ト アップ時間および clock-to-output 遅延が減少するため システム全体のパフォーマンスが向上します

図 16 すべての同期システムに存在するクロック スキュー

OtherDevice on

Board

FPGA

c b

A

A

C

B

B

C

x462_16_062403

28 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

過去のクロック動作から将来のクロック動作を予測

Spartan-3 FPGA は非常に高度なデジタル ロジッ クを使用していますが 将来の動作を予測するこ とはできません だたし DCM は過去のクロ ッ ク動作を使用し 将来のク ロ ッ ク動作を予測するために役立てます システムに入力されるほとんどのクロ ッ クの周波数は 不変で単調であるため 入力クロ ックの周期 (T) もほぼ一定になり ます

マイナスの遅延を挿入し ク ロ ッ ク スキューの影響を無効にするこ とはできないため DCM は目的としている時間に到達しているよ うに見えるよ うにクロ ッ クを遅らせます これは どのよ うに行われるのでし ょ うか ク ロ ッ ク サイクルは一定の周期 (T) で繰り返されます 図 18 に示すよ うに (B) におけるクロ ッ クは ∆b 分進んでいるよ うにみえますが 実際には (T ndash ∆b) 分遅くなっています 同様に(C) におけるクロ ッ クは (T ndash ∆c) 分遅れています

図 17 Spartan-3 デザインにおけるクロック スキューの削減

図 18 一定周波数のクロックを遅延させる

OtherDevice on

Board

Spartan-3 FPGA

DC

M

Ideal Clock Alignment

b

cEarly Clocks Eliminate Skew

A

B

C

A

B

C

DC

M

A

B

C

x462_17_062403

c

b

Clock Period (T)

Delay=T- b

Delay=T- c

A

B

C

x462_18_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 29

R

入力クロ ッ ク信号は単調であるため ク ロ ッ ク周期 (T) は容易にわかり ますが ク ロ ッ ク スキュー遅延である ∆b および ∆c はど うでし ょ うか 異なる条件の元で複数のシステムにおける動作を詳細に検証するこ とによって これらの値を決定するこ と もできますが 実際には現実的である とは言えません

さ らに ∆b および∆c の値はデバイスによって異なり 同一のデバイス上でも温度または電圧によって変化します

Spartan-3 DCM では ∆b および ∆c をあらかじめ決定するのではなく フ ィードバッ ク ループによって遅延を確認する遅延ロッ ク ループ (DLL) を使用します (図 17 を参照してください) こ こで示している例では 2 つの DCM を使用して 1 つの DCM が内部信号のスキューを削減し も う一方の DCMが外部デバイスへの信号のスキューを削減します また 両方の DCM に各ク ロ ッ ク フ ィードバッ クループがあ り ます DLL は温度または電圧によって引き起こ されるわずかな変更にも適応します

ターゲッ トのロック

適切な遅延を決定し挿入するためにはDCM で数千クロ ッ ク サイ クルのサンプルが必要です DCMで適切な遅延が挿入される と LOCKED 出力信号がアサート されます

DCM で LOCKED 信号がアサート されるまでDCM ク ロ ッ ク出力は使用しないでください DCM が入力クロ ッ ク信号に対してロ ッ ク状態になるまでのク ロ ッ ク出力は無効です DCM がロ ッ ク状態になる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な要素が含まれている可能性があ り ます

アプリ ケーシ ョ ンではLOCKED 信号を出力クロ ッ クが有効であるこ とを確認するために使用しますLOCKED 信号をクロ ッ ク信号が使用可能な状態であるこ とを示すものと して理解してください

安定した単調なクロック入力

DCM が適切に動作するためには 安定した単調なクロ ッ ク入力が必要です そのよ う なク ロ ッ ク入力によって ク ロ ッ ク周期を予測でき出力クロ ッ クのタイ ミ ングを適切に調整できます DCM はいったんロ ッ ク状態になる と『Spartan-3 データ シート 』 で指定された値までのクロ ッ ク周期変動に対応できます 「DCM 使用のためのクロ ッ ク条件」 を参照して ください

入力ク ロ ッ ク周波数が変動して指定された範囲外と なった場合 DCM のロ ッ ク状態が解除されLOCKED 出力は Low になり ます ロ ッ ク状態が解除された場合 DCM を リセッ ト して再びロ ッ クする必要があ り ます 入力クロ ッ クが指定された制限を満たしている場合はLOCKED 出力が High である限り出力クロ ッ クは常に有効です しかし LOCKED 出力は High を維持していますが クロ ッ ク入力が指定された範囲外で CLKDV 出力または CLKFX 出力が無効となる場合があるため問題のないデザインを作成するためには 安定した単調なクロ ッ ク入力が重要です

DCM CLKIN 入力へのパスと して 4 つのグローバル バッファ入力 (IBUFG) のうち デバイス上で同一辺にあるバッファ入力の 1 つを使用する こ と を推奨します IBUFG パスを使用する こ とによってパッ ドからグローバル バッファを通って DCM に到達までの遅延がスキュー調整された出力から削除されます ただし 表 11 に示すその他のパスも使用できます また CLKIN 入力を駆動する信号は汎用相互接続を通る汎用入力ピン (IBUF プリ ミ ティブ) グローバル バッファ入力 (IBUFG) グローバル バッファ マルチプレクサ (BUFGMUX BUFGCE) からの入力と して使用できます 同様に LVDSク ロ ッ ク入力をクロ ッ ク入力と して使用できる場合もあ り ます スキュー調整ロジッ クはLVCMOS または LVTTL のよ うなシングル エンドのクロ ッ ク入力のために特性評価されています ただし 差動信号では IO タイ ミ ングによって わずかな位相エラーが発生する可能性があ り ます 特定の IO タイミ ングについては 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

30 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

確実なソースからのフ ィードバック

適切な遅延に対してロ ッ ク信号をアサートするために DCM は 入力クロ ッ クおよびクロ ッ ク分散遅延後にタ ップされるフ ィードバッ ク ク ロ ッ クの両方をモニタします ク ロ ッ ク フ ィードバッ ク パスにおける総遅延に制限はあ り ません DLL では 必要に応じて逓倍したク ロ ッ ク周期を使用する こ とによって出力クロ ッ クを遅らせます このよ うにDCM は内部遅延または外部遅延を相殺できますがクロ ッ ク フ ィードバッ クは適切なフ ィードバッ ク地点に接続する必要があ り ます

内部クロック信号からのスキュー削除

図 19 に示すよ うにFPGA 内部のスキューを削減する場合フ ィードバッ ク タ ップは FPGA 内部のエレ メン トに入力されるクロ ッ ク と同一のクロ ッ ク とな り ます 通常 フ ィードバッ ク ク ロ ッ クは デバイス上で DCM と同一辺にある ク ロ ッ ク バッファ (BUFG) またはグローバル ク ロ ッ ク マルチプレクサ (BUFGMUX または BUFGCE) に接続されている DCM からの CLK0 出力 (位相シフ ト なし ) ですまたは CLK0 出力ではなく DCM の CLK2K 出力 (位相シフ ト なし 2 逓倍) をフ ィードバッ ク と して使用できます

表 11 クロック入力ソース

CLKIN ソース 説明

グローバル バッファ入力を使用

グローバル バッファ入力 IBUFG は DCM への外部クロ ッ クのソースと して適切です パッ ドからグローバル バッファを通り CLKIN 入力までの遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

グローバル ク ロ ッ ク バッファ BUFG BUFGCE または BUFGMUX プリ ミ ティブを使用するグローバル ク ロ ッ ク バッファは内部生成された DCM へのクロ ッ ク ソース と して適切です グローバル バッファを通る際の遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

汎用 IO を使用 任意のユーザー IO IBUF は 外部クロ ッ クのソースと して使用できます パッ ドから DCM への遅延をあらかじめ決定するこ とはできません これは入力パスとなる可能性を持つパスが多数

存在するためであ り その結果 DCM は遅延を削除できません

内部ロジッ クから派生 FPGA 内部のロジッ ク も ク ロ ッ ク ソース と して使用できます しかしロジッ クから DCM への遅延をあらかじめ決定するこ とはできないため DCM は遅延を削除できません

I OIBUFG

BUFGI O

BUFGCEI O

CE

O

S

BUFGMUXI0

I1

I OIBUF

InternalLogic

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 31

R

外部クロック信号からのスキュー削除

外部クロ ッ クを使用した DCM フ ィードバッ クの設計は内部クロ ッ クの場合よ り も複雑です 図 20 に示すよ うに理想的にはフ ィードバッ ク ク ロ ッ クは PCB ト レースまたは外部クロ ッ クの再バッファの後のすべての外部クロ ッ クに入力される点から始ま り ます

LOCKED 信号は DCM がロ ッ ク状態になったこ と およびク ロ ッ ク信号が有効であるこ とを示します LOCKED 信号によって 外部デバイスが使用可能になり その反転バージ ョ ンはアクティブ Lowのチップ イネーブル信号に接続できます

コンフ ィギュレーシ ョ ン後の DCM リセッ ト

外部フ ィードバッ クを使用する場合 コンフ ィ ギュレーシ ョ ン直後に DCM の リ セッ ト をパルスしDCM のロ ッ ク状態を維持する必要があ り ます 図 20に示すよ うに0x000F で初期化された SRL16 から必要な リセッ ト パルス信号を出力できます 「RST 入力」 を参照して ください

なぜリセッ トする必要があるのか

なぜ このよ うに追加的な リセッ ト パルスが必要なのでし ょ うか 最適にロ ッ クするためには DCMをロ ッ ク状態にし その状態で安定させるために 外部フ ィードバッ クでコンフ ィギュレーシ ョ ンされ

た DCM で CLKIN および CLK0 または CLK2X のいずれかの信号を使用する必要があ り ます コンフ ィギュレーシ ョ ン実行中は FPGA の IO バッファがまだアクティブではないために 外部フ ィードバッ ク CLKFB を使用できません

コンフ ィギュレーシ ョ ンの終了時に デバイスがスター ト アップ シーケンスを開始する と DCM はキャプチャ プロセスを開始します この時点では FPGA のグローバル 3-ステート信号 (GTS) はアサー

図 19 内部クロック信号でのスキュー削減

I OBUFG

FPGA

(or BUFGMUX or BUFGCE)

( )

ldquoClock Goodrdquo

I OIBUFG

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)(

)

x462_19_061803

図 20 外部クロック信号でのスキュー削減

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)

I OOBUF

I OOBUF

FPGA

CLK

ENABLE

( )

RESETD

WCLK

A[30]

Q

INIT=000F

SRL16

I OIBUFG

I OIBUFG

x462_20_062203

32 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ト されているため すべての出力ピンは 3-ステート (ハイ -インピーダンス フローティング) 状態を維持しています このため CLKFB 信号のロジッ ク ステートはわかり ません

GTS のアサート状態の解除後CLKFB に信号が現れDCM が CLKFB 信号を取り込みますが リセット パルスがない場合 DCM が適切な時点でロ ッ ク しない可能性があ り DCM でジッタがわずかに増加し ク ロ ッ ク サイクル レイテンシも増加する可能性があ り ます

また リセッ ト パルスがない場合 PCB のシグナル インテグ リティの問題によって 3-ステート状態にある CLKFB 信号がボード上でほかの信号と ク ロス カップルする とい う問題が発生する可能性があり ます DCM では この無効なクロス カップルされた信号を CLKFB 信号と認識し ロ ッ クするためGTS 信号のアサートが解除され 適切な CLKFB 信号が現れたと きにロ ッ クできない場合があ り ます

遅延ロック ループとはク ロ ッ ク遅延を削除するための 2 つのタイプの回路

bull 遅延ロッ ク ループ (DLL)

bull 位相ロッ ク ループ (PLL)

DLL および PLL には クロ ッ ク分散遅延を削除する という機能以外に周波数合成 クロ ッ ク調整および位相シフ ト などの機能があ り ます

遅延ロック ループ (DLL)

図 21 に示すよ うに単純な形の DLL はタップ遅延ラインおよび制御ロジッ クで構成されます 遅延ラインは入力クロ ッ クCLKINに遅延を挿入したク ロ ッ クを生成し ク ロ ッ ク分散ネッ ト ワークでは そのクロ ッ クがすべての内部レジスタおよびクロ ッ ク フ ィードバッ ク CLKFB ピンに配線されます 一方制御ロジッ クは遅延ラインを調整するために常に入力クロ ッ クおよびフ ィードバック ク ロ ッ クをサンプルします 遅延ラインでは電圧制御遅延または不連続の遅延エレ メン トが使用されています 最適で安定したパフォーマンスを実現するために Spartan-3 DLL ではすべてのデジタル遅延ラインを使用します

DLL は入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クの立ち上がりエッジが調整されるまで それらのクロ ッ ク間に遅延を挿入し ク ロ ック周期から クロ ッ ク分散遅延分を差し引いた時間だけフ ィードバッ ク ク ロ ッ クを遅らせるこ とによって機能します DLL および PLLの専門的解説では フ ィードバッ ク ク ロ ッ クは 360deg 位相がずれたもの つま り同一の位相に再び現れるものと定義されています

入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クのエッジが調整される とDLL がロ ッ ク し これらの 2 つのクロ ッ ク間に認識できる差異はなくな り ます つま り DLL 出力クロ ッ クのクロ ッ ク分散ネッ ト ワークにおける遅延がなくな り ソース ク ロ ッ ク とそのロード間の遅延を効果的に削除されています

図 21 遅延ロック ループ (DLL) ブロック図

ClockDistributionNetwork

Control

VariableDelay Line

CLKOUT

CLKFB

CLKIN

x462_21_061903

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 33

R

スキュー調整

こ こでは主にスキューの削減方法およびクロ ッ ク ソースに対する内部クロ ッ ク と外部クロ ッ クの位相調整の方法について説明します 実際には DCM は DESKEW_ADJUST という属性を使用し 意図的にわずかなスキューを追加します DCM Wizard では アドバンス ド オプシ ョ ン ウ ィ ンド ウでこのDESKEW_ADJUST 属性を設定します

この属性には STEM_SYNCHRONOUS および SOURCE_SYNCHRONOUS という 2 つの基本的なアプリ ケーシ ョ ンがあ り ます 大多数のアプリ ケーシ ョ ンではSYSTEM_SYNCHRONOUS 設定を使用します 次に 各モードの目的を説明します

システム同期

図 23 に示すよ うに システム同期アプリ ケーシ ョ ンでは 1 つのデータ パスにあるすべてのデバイスが共通のクロ ッ ク ソースを使用します これが 従来の最も一般的なシステム構成です デフォルト設定である SYSTEM_SYNCHRONOUS オプシ ョ ンを選択する と データ キャプチャ時のホールド時間がゼロになるよ うに わずかなクロ ッ ク遅延が追加されます ホールド時間とは 基本的にベス ト ケースのデータ パスと ワース ト ケースのクロ ッ ク パス間の差です DCM のクロ ッ ク スキュー削減機能はクロ ッ クを進めるこ とによって動的にワース ト ケースのクロ ッ ク パスを短縮します しかし ク ロ ッ

位相ロック ループ (PLL)

PLL は DLL と同様の基本的な機能を持つよ うに設計されていますが異なるアーキテクチャを使用します 図 22 に示すよ うにPLLと DLL の根本的な違いは DLL が遅延ラインを使用するのに対して PLL では電圧制御オシレータを使用し CLKIN と同様のクロ ッ ク信号を生成します位相検出器およびフ ィルタで構成される制御ロジッ クは ク ロ ッ ク分散システムでの遅延を補う よ うにオシ

レータの周波数と位相を調整します PLL の制御ロジッ クは 入力ク ロ ッ ク と フ ィードバッ ク ク ロ ッ ク CLKFB を比較し 入力クロ ッ クの立ち上がりエッジがフ ィードバッ ク ク ロ ッ クの立ち上がりエッジと一致するよ うにオシレータのクロ ッ クを調整します その後 PLL はロッ ク状態になり ます

インプリ メンテーシ ョ ン

DLL および PLL 内部では アナログ回路またはデジタル回路のいずれかが使用され 各回路はぞれぞれに利点があ り ます 慎重な回路設計を行ったアナログ回路の場合 DLL または PLL ではよ り厳密にタイ ミ ングを調整でき 使用するシ リ コン エリ アが少なくなり ます

一方デジタル回路を使用した設計の場合 ノ イズ耐性が優れ消費電力が低く ジッ タのパフォーマンスよ り良いという利点があ り

ます また ク ロ ッ クを停止させるこ とができるため 電力管理が容易になり ます アナログ設計では 追加の電力供給が必要な場合があ りよ り正確に電源供給の制御を行う必要があるために新しい処理テク ノ ロジに移行する際に問題が発生する可能性があ り ます

DLL と PLL

アプリ ケーシ ョ ンで PLL または DLL を選択する場合は アーキテクチャの違いを理解するこ とが重要です PLL で使用されるオシレータは 本質的に不安定な状態であるため ク ロ ッ ク分散ネッ ト ワークの遅延を補う際に PLL のパフォーマンスが低下します 逆に常に安定している DLL アーキテクチャは遅延およびクロ ッ ク調整の機能の点では PLL よ り優れている一方で PLL はDLL より柔軟に新しいクロ ッ ク周波数の合成を行います

図 22 位相ロック ループ (PLL) ブロック図

ClockDistributionNetwork

Control

Voltage ControlledOscillator

CLKOUT

CLKFB

CLKIN

x462_22_061903

34 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ク パスを短縮するこ とによって ク ロ ッ クがデータの前に現れる場合には結果と してホールド時間が発生します SYSTEM_SYNCHRONOUS オプシ ョ ンを使用するこ とによってホールド時間がゼロになるために十分なスキューをクロ ッ ク パスに追加できる一方でclock-to-output 時間がわずかに増加します

ソース同期

SOURCE_SYNCHRONOUS モードは本来高速データ通信インターフェイスで使用される高度な設定です 図 24 に示すよ うに ソース同期アプリ ケーシ ョ ンではデータおよびクロ ッ クの両方が同一のクロ ッ ク ソースから派生します 送信デバイスは データおよびクロ ッ クを受信デバイスに送信し 受信デバイスはデータに対して最適なクロ ッ クが入力されるよ うにクロ ッ ク タイ ミ ングを調整します 高速デュアル データ レート (DDR) および LVDS 接続などがこのシステムの例です

SOURCE_SYNCHRONOUS 設定によって入力クロ ッ ク と DCM からのデスキュー出力クロ ッ ク間の位相をゼロにし 次に FPGA アプリ ケーシ ョ ンでは固定位相シフ ト モードまたは動的ファ イン位相シフ ト モードを使用してクロ ッ クのタイ ミ ングを調整します 次のアプリ ケーシ ョ ン ノートではソース同期デザインおよび動的位相調整について説明しています

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcomxappxapp622pdf

また 次のアプ リ ケーシ ョ ン ノート では システム レベルのタイ ミ ングについて詳細に解説しています このアプリ ケーシ ョ ン ノートはVirtex-II および Virtex-II Pro FPGA アーキテクチャについて説明するものですが ほとんどの概念を Spartan-3 FPGA に適用できます

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

タイ ミングの比較

図 25 にデュアル データ レート (DDR) アプリ ケーシ ョ ンで SYSTEM_SYNCHRONOUS 設定およびSOURCE_SYNCHRONOUS 設定を使用した場合のタイ ミ ング比較を示します DDR アプリ ケーシ ョンでは 各データ ラインに 2 つのデータ ビッ トが ク ロ ッ ク周期の前半および後半に各 1 つずつ現れます

図 23 共通のクロック ソースによってクロック入力されるシステム同期アプリケーシ ョ ン

図 24 データ ソースがデータ クロックを入力するソース同期アプリケーシ ョ ン

ClockSource

DATA_INDATA_OUT

x462_23_061903

ClockSource

DATA_INDATA_OUT

DATA_CLK

x462_24_061903

クロック調整

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 35

R

SYSTEM_SYNCHRONOUS モードではDCM のクロ ッ ク パスに適切なスキューが追加されホールド時間がゼロになり ます

これに対して SOURCE_SYNCHRONOUS モードでは DCM のクロ ッ ク パスにスキューは追加されませんが FPGA アプ リ ケーシ ョ ンでスキュー追加 または位相シフ ト が行われ ク ロ ッ クはデータウ ィンド ウにおいて理想的な位置で入力されます

クロック調整 ク ロ ッ ク調整とは 入力ク ロ ッ クのデューティ サイ クルが 50 以外の場合に 50 に調整する機能です 図 26 にHigh 時間が約 40 であ りLow 時間が約 60 (4060 デューティ サイクル) である入力ク ロ ッ クを ほぼ完全な 50 デューティ サイ クルを持つ入力クロ ッ クに調整する例を示します完全な 50 デューテ ィ サイ クル と な ら ない理由は CLKOUT_DUTY_CYCLE_DLL およびCLKOUT_DUTY_CYCLE_FX で指定されるデューティ サイ クルのずれが存在するためです これらの値は 『Spartan-3 データ シート 』 に記載されています デューティ サイクルのずれの概算値は 150ps未満です

クロ ッ クのデューティ サイクルが 50 であるこ とはVLDS またはデュアル データ レート (DDR) アプリ ケーシ ョ ンなどの高速通信インターフェイス ク ロ ッ ク転送アプリ ケーシ ョ ン またはクロ ッ ク ミラー アプリ ケーシ ョ ンにおいて不可欠な条件です 「デュアル データ レート (DDR) ク ロ ッ クの例」 を参照して ください

DCM では 自動的にほとんどのク ロ ッ ク出力のデューティ サイ クルが 50 に調整され それ以外の場合には動作条件または属性設定によって オプシ ョ ンと して調整されます 表 12 を参照して ください

図 25 デュアル データ レート (DDR) アプリケーシ ョ ンにおける SYSTEM_SYNCHRONOUS モードおよび SOURCE_SYNCHRONOUS モードのタイ ミング比較

SYSTEM_SYNCHRONOUS

DATA_IN

SOURCE_SYNCHRONOUS

SOURCE_SYNCHRONOUS+ Fixed or Dynamic Phase Shift

Data capture windowor data ldquoeyerdquo

x462_25_061903

図 26 DCM におけるデューテ ィ サイクル修正機能

CLKIN

ConditionedClock Output

50 50

40 60

x462_26_061903

36 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

14 位相シフ ト出力である CLK0 CLK90 CLK180 および CLK270 はDUTY_CYCLE_CORRECTION 属性を使用し ク ロ ッ ク調整を行う こ とができます デフォルトではDUTY_CYCLE_CORRECTION 属性は TRUE に設定され これらの出力は 50 デューティ サイクルに調整されます この属性を FALSE に設定する場合 クロ ッ ク調整は機能せず クロ ッ ク出力のデューティ サイクルは入力クロ ッ ク とほぼ同一になり ますが 完全に CLKIN のデューティ サイクルと一致するこ とは保証されていません

位相シフ ト - クロック周期の分数でクロックを遅延

また DCM ではクロ ッ ク周期の分数分だけ入力クロ ッ クを遅らせるこ とによって 位相をシフ ト させるこ とができます

DCM は 4 つの位相シフ ト タイプをサポート し各タイプを別々に使用するこ と またはほかの位相シフ ト タイプと組み合わせて使用するこ とができます 表 13 に 各クロ ッ ク出力での位相シフ ト機能を示します

1 ほとんどの 12 ク ロ ッ ク周期位相シフ ト出力では50 デューティ サイクル調整を行います 出力のペアの立ち上がりエッジは0degおよび 180deg位相シフ ト した位置またはクロ ッ ク周期の最初および 12 周期の位置にあ り ます

2 0deg(CLK0) 90deg(CLK90) 180deg(CLK180) および 270deg(CLK270) の 14 位相シフ ト出力ではオプシ ョ ンと して 50 デューティ サイ クル調整を行います

3 固定ファイン位相シフ トではすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

4 動的ファイン位相シフ トでは FPGA アプリ ケーシ ョ ン内部のすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

表 12 デューティ サイクルを 50 にするためのクロック出力調整

DCM クロック出力

50 デューティ サイクル出力

CLK0CLK90

DUTY_CYCLE_CORRECTION = TRUE

CLK180CLK270

CLK2XCLK2X180

CLKDV

CLKFXCLKFX180

常に

DLL_FREQUENCY_MODE 属性

LOW HIGH

DUTY_CYCLE_CORRECTION = TRUE 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に CLKDV_DIVIDE が整数値の場合

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 37

R

12 クロック周期位相シフ ト出力12 周期位相シフ ト出力では 位相シフ トのないク ロ ッ ク およびそのクロ ッ クを 12 周期シフ ト させた (180deg位相シフ ト ) ク ロ ッ クが出力されます 12 周期位相シフ ト出力は表 14 に示すよ うにペアで出力されます

表 13 クロック出力の位相シフ ト機能

クロック出力12 クロック周期

14 クロック周期

固定または動的

位相シフ ト

CLK0CLK90CLK180CLK270CLK2XCLK2X180CLKDVCLKFXCLKFX180

表 14 12 クロック周期位相シフ ト出力

出力ペア解説

位相シフ トなし 180deg位相シフ ト

CLK0 CLK180 周波数は CLKIN と同一です デフォルトで 50 デューティ サイクルに調整されDUTY_CYCLE_CORRECTION 属性に制御されます

CLK2X CLK2X180 2 逓倍クロ ッ ク (CLK2XCLK2X180) からの出力です周波数は CLKIN 周波数の 2 倍であ り デューティ サイ クルは常に 50 です

CLKFX CLKFX180 周波数合成回路 (CLKFX CLKFX180) からの出力です 出力周波数は周波数合成の属性によって決定されます デューティ サイ クルは常に 50 です

38 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

12 周期位相シフ ト出力は高速デュアル データ レート (DDR) デザインおよびクロ ッ ク ミ ラーなどのデューティ サイクルが重要となるデザインにとって理想的です 図 27 に示すよ うに12 周期位相シフト出力のペアの 1 つはクロ ッ ク周期の始めに立ち上がり も う 1 つはそのクロ ッ ク周期の半分の地点で正確に立ち上がり ます

12 周期位相シフ ト出力によるデューテ ィ サイクルのずれの削減

DCM のクロ ッ ク出力が 50 デューティ サイクルに調整された場合 180deg位相シフ ト ク ロ ッ クは位相シフ トのないクロ ッ クを反転させたよ うに見えます 低周波数アプリ ケーシ ョ ンでは 基本的にこれが成立します

しかし アプリ ケーシ ョ ンが非常に高い周波数で動作する場合は 各ト ランジスタの立ち上がり時間お

よび立ち下がり時間の差が原因となって発生するデューティ サイ クルのずれが FPGA 内部で問題となり ます つま り 始めはデューティ サイクルが 50 の場合でも ク ロ ッ ク サイクル間で常にクロ ッ クHigh と ク ロ ッ ク Low の間に差が生じます

デュアル データ レート (DDR) クロックの例

図 28 に DCM ク ロ ッ ク出力 CLKx が デュアル データ レート (DDR) 出力フ リ ップフロ ップの 2 つのクロ ッ クを駆動する例を示します DDR ク ロ ッ ク入力の 1 つはクロ ッ ク出力をそのまま使用しますが も う一方の入力は DDR フ リ ップフロ ップ内部でクロ ッ クを反転させます DCM からの CLKx 出力のデューティ サイクルは 50 ですが FPGA のクロ ッ ク ネッ ト ワークを伝搬する間にデューティサイ クルにずれが発生します こ こで示す例では このデューティ サイクルのずれによって ク ロ ッ クHigh 時間が短縮され ク ロ ッ ク Low 時間が長くな り ます その結果と してC1 ク ロ ッ ク入力はクロ ック周期の半分の時点よ り もわずかに前にト リガします 低周波数の場合 このずれは無視して問題あ りませんが 高性能の DDR ベースのシステムでは 正確なクロ ッ ク設計が必要です

図 27 12 周期位相シフ ト出力

180˚0˚

frac12T 1T

CLKx

CLKx180

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)

x462_27_061903

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 39

R

図 29 に 図 28 に若干の修正を加えた回路例を示します この例では DCM からの位相シフ ト していない出力および 180deg位相シフ ト した出力の両方が DDR 出力フ リ ップフ ロ ップに入力されますCLKx ク ロ ッ ク信号は ク ロ ッ ク周波数の開始時点で正確に DDR フ リ ップフロ ップの C0 入力を ト リガし CLKx180 ク ロ ッ ク信号はクロ ッ ク周波数の半分の時点で正確に C1 入力を ト リガします この方法を使用する場合には 追加のグローバル バッファおよびグローバル ク ロ ッ ク ラ インが必要になりますが 約 300 ps (この値は概算です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください) までのデューティ サイクルを削減できます

図 28 デュアル データ レート (DDR) 出力におけるデューティ サイクルのずれ

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx at Flip-Flop(with duty-cycle distortion)

Duty-cycle distortion

Factor in distortionwhen using a singleinverted clock

CLKx(50 duty cycle)

BUFGCLKx

DCM

CLKIN

x462_28_061903

40 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

表 15 に DDR 出力フ リ ップフロ ップおよび LVDS 出力を使用して測定したデューティ サイクルのずれの値を示します この出力タイプ以外では 立ち上がり時間および立ち下がり時間に差が生じるこ とによって さ らにずれが大き くなる可能性があ り ます このずれは IBIS を使用してシ ミ ュレーシ ョ ンを実行し 検証できます

14 位相シフ ト出力図 30 および表 17 に示すよ うに 14 位相シフ ト出力は CLKIN 入力を 14 周期分シフ ト させたものです 14 位相シフ ト出力には CLKFB 入力へ戻るフ ィードバッ ク パスが必要であるため CLK0 出力の位相は CLKIN 入力の立ち上がりエッジと一致するよ うに調整されます CLK90 出力は CLKIN 入力を90deg位相シフ ト させて生成したものであ り ほかの位相シフ ト出力も同様に生成されます

図 29 12 周期位相シフ ト出力を使用したデューテ ィ サイクルのずれの削減

CLKx at Flip-Flop(with duty-cycle distortion)

180 ˚Phase Shift

CLKx180 at Flip-Flop(with duty-cycle distortion)

CLKx(50 duty cycle)

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKIN

CLKx180

BUFG

BUFG

x462_29_061903

表 15 デューティ サイクルのずれのパラメータ

パラ メータ 説明 概算値

TDCD_CLK0 IO ブロ ッ クにある DDR エレ メン トに対して ク ロ ッ ク立ち下がりエッジでローカル反転したクロ ッ クを入力する場合のデューティ サイクルのずれです 図 28を参照してください

~400 ps

TDCD_CLK180 IO ブロ ッ クにある DDR エレ メン トに対して DCM CLKx180 をクロ ッ ク入力する場合のデューティ サイクルのずれです 図 29を参照してください

~60 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 41

R

DLL 周波数モードによる出力の有効性

14 位相シフ ト出力が有効であるかは DLL_FREQUENCY_MODE 属性で制御される DLL の周波数モードによって決定されます 表 16 に示すよ うに 低周波数モード (DLL_FREQUENCY_MODE=LOW) ではすべての 14 位相シフ ト出力が有効ですが高周波数モードでも有効な出力は CLK0 および CLK180 のみです

5050 デューティ サイクル調整オプシ ョ ン

オプシ ョ ン と して DUTY_CYCLE_CORRECT 属性を使用し 14 位相シフ ト出力を一括して 50デューテ ィ サイ クルに調整できます この属性が TRUE の場合 (デフォル ト ) 4 つの出力すべてのデューティ サイ クルが 50 にな り FALSE の場合は 各出力のデューティ サイ クルと CLKIN 入力のデューティ サイクルは一致しません 詳細は 「ク ロ ッ ク調整」 を参照してください

4 つの位相 遅延クロックエッジ 位相パルス

表 17 に示すよ うに 14 位相シフ ト出力は ぞれぞれ 1 つ前のパルスから 14 周期遅れた立ち上がりエッジで出力されます これらの出力は メモ リ インターフェイスおよびペリ フェラル制御などのアプリ ケーシ ョ ンにおけるタイ ミ ングを柔軟にします

また デューテ ィ サイ クル修正オプシ ョ ンがイネーブルの場合 (DUTY_CYCLE_CORRECTION =TRUE の場合) これらの出力を次のよ うに考えるこ とができますこれらの出力には 14 周期の間隔で

図 30 CLKIN 入力 の 14 周期位相シフ ト出力 (デューティ サイクル修正イネーブルの場合)

表 16 DLL 周波数モードによる 14 位相シフ ト出力の有効性

出力DLL_FREQUENCY_MODE

LOW HIGH

CLK0

CLK90

CLK180

CLK270

270˚180˚90˚0˚

frac14T frac12 T frac34T 1T

CLK0

CLK90

CLK180

CLK270

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)x462_30_061903

42 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

立ち下がりエッジがあ り ます (表 17 を参照) 同様に各出力には周期幅が同一である High パルス時間と Low パルス時間があるこ とになり たとえば 図 30 に示す CLK90 の High パルス部分は CLK0 クロ ッ ク周期の中央に位置しています

ファイン位相シフ ト

DCM では ファ イン位相シフ ト を使用するこ とによって ク ロ ッ ク スキューを制御するこ と もできます ファ イン位相調整はすべての DCM 出力に対して同時に機能します この位相調整にはDCM のDLL 機能ユニッ ト を使用するため CLKFB 入力を通るクロ ッ ク フ ィードバッ クが必要です

物理的には CLKIN と CLKFB の立ち上がりエッジ間の位相関係を調整するこ とによってシフ トが行われますが すべての DCM 出力が CLKIN 入力に関連して位相シフ ト されます

デフォルトでは ファ イン位相シフ トはディ スエーブル (CLKOUT_PHASE_SHIFT=NONE) です つま り ク ロ ッ ク入力は CLKIN で位相調整されています この場合 入力クロ ッ ク CLKIN と フ ィードバッ ク ク ロ ッ ク間におおよそのフ ィードバッ ク地点で計測されるスキューはあ り ません (「確実なソースからのフ ィードバッ ク」 を参照して ください) 図 31 に示すよ うに ファ イン位相シフ トがイネーブルの場合 出力クロ ッ クのエッジは位相シフ ト され CLKIN 入力の前または後になり ます

次にファイン位相シフ トの 2 つのモードについて説明します一般に高速データ通信アプリ ケーシ ョ ンでは 両方のモードが使用されます 「ソース同期」 を参照してください

1 固定ファイン位相シフ ト モードは位相シフ ト値を設計段階で設定します 位相シフ ト値はFPGAコンフ ィギュレーシ ョ ン実行中に取り込まれ アプリ ケーシ ョ ンで変更するこ とはできません

2 動的ファイン位相シフ トモードには 初期位相シフ ト値があ り 固定ファイン位相シフ トの場合と同様に この値は FPGA コンフ ィギュレーシ ョ ン中に取り込まれますが DCM の LOCKED 出力が High になった後であれば アプリ ケーシ ョ ンで変更可能です

固定ファイン位相シフ ト

固定ファ イン位相シフ ト モードでは 設計段階で指定されたシフ ト値が FPGA コンフ ィギュレーシ ョン実行中に設定され この値はアプリ ケーシ ョ ンで変更できません

このモードは 次の 2 つの属性によって制御されます CLKOUT_PHASE_SHIFT 属性が FIXED に設定し PHASE_SHIFT 属性が位相シフ ト量を制御します 図 31 に示すよ うに PHASE_SHIFT = 0 の場合は 出力ク ロ ッ クおよび CLKIN 入力の位相が一致する よ う 調整され ク ロ ッ ク出力はPHASE_SHIFT が負の整数の場合に CLKIN の前に位相シフ ト し正の整数の場合には CLKIN の後に位相シフ ト します

固定ファイン位相シフ ト範囲

PHASE_SHIFT 属性は常に整数値であ り その範囲は -255 ~ +255 ですが 実際の範囲は使用されるCLKIN の周波数によって異なり ます

表 17 14 位相シフ ト出力とそれらの特性 (DUTY_CYCLE_CORRECTION=TRUE)

DCM 出力 位相シフ トクロック周期

に対する遅延

立ち上がり

エッジ

立ち下がり

エッジ解説

CLK0 0deg 0 0 frac12T スキュー調整された入力クロ ッ ク 位相シフ ト なし

CLK90 90deg frac14T frac14T frac34T High パルス (frac34T 周期幅 周期の中央)

CLK180 180deg frac12T frac12T 0T CLK0 の反転 (立ち上がりエッジは周期の中央)

CLK270 270deg frac34T frac34T frac14T Low パルス (frac34T 周期幅 周期の中央)

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 43

R

PHASE_SHIFT 属性の範囲は 次の 2 つの値によって決定されます

1 1 つはナノセカンドで測定される CLKIN 入力の周期 である TCLKIN 値です

2 も う 1 つは Spartan-3 デバイスおよびスピード グレードによって指定される FINE_SHIFT_RANGE の値です この値は 『Spartan-3 データ シート 』 モジュール 3 に記載されています FINE_SHIFT_RANGE は 位相シフ ト遅延ラインにおける総遅延であ り 回路内の遅延タップ数の関数です 実際の遅延ラインは FINE_SHIFT_RANGE よ り長い場合があ り ますがFINE_SHIFT_RANGE までの値が保証されています

これらの値を 等式 1 に適用しSHIFT_DELAY_RATIO を算出します PHASE_SHIFT 属性の範囲はこの算出結果と 1 との不等式関係によって異なり ます

等式 1

SHIFT_DELAY_RATIO lt 1 の場合

ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り長い場合はSHIFT_DELAY_RATIO lt 1 であ り最大ファイン位相シフ ト範囲は FINE_SHIFT_RANGE によって決定されます SHIFT_DELAY_RATIO lt 1 の場合 PHASE_SHIFT 範囲は 等式 2 から求めるこ とができます

等式 2

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 PHASE_SHIFT 値は plusmn191 とな り ます

したがって SHIFT_DELAY_RATIO lt 1 の場合の位相シフ ト値は 等式 3 とな り ますPHASE_SHIFT = 1 と して ください

等式 3

図 31 固定ファイン位相シフ ト

0

Fixed Phase Shift- Limit

Fixed Phase Shift+ Limit

Clock Outputs

PHASE_SHIFT CLKIN DCM

CLKIN

x462_31_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

SHIFT_DELAY_RATIO FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------=

PHASE_SHIFTLIMITS plusmn INTEGER 256 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞=

TPhaseShiftPHASE_SHIFT

PHASE_SHIFTLIMITS----------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

44 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

SHIFT_DELAY_RATIO ge 1 の場合

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 1 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 4

したがって SHIFT_DELAY_RATIO ge 1 の場合の位相シフ ト値は 等式 5 とな り ます PHASE_SHIFT = 1 と して ください

等式 5

最小位相シフ ト

最小位相シフ トの大きさは 次の値の大きな方によって決定されます

1 『Spartan-3 データ シート 』 に DCM_TAP_MIN 仕様と して記載されている最小遅延ライン タ ップ値 (概算値は ~30ps)

2 ク ロ ッ ク周期の 1256

その他の考察点

固定位相シフ トモードでは 動的位相シフ ト制御入力をグランドに接続する必要があ り ます この接続

は DCM Wizard では自動的に行われます

DCM Wizard

固定位相シフ トモードを使用する場合は図 32 に示すよ うにDCM Wizard の [General Setup] ダイアログ ウ ィンド ウに表示される Phase Shift で [Fixed] をク リ ッ ク して ください これによって CLKOUT_PHASE_SHIFT 属性が FIXED に設定されます

[Phase Shift Value] を入力しますが この値は 上述した範囲内にある整数でなければなり ません これによってPHASE_SHIFT 属性値が設定されます DCM Wizard は位相シフ ト値が指定範囲内であるかを確認します

動的ファイン位相シフ ト

動的ファ イン位相シフ ト モードでは 固定ファ イン位相シフ ト モード と同様に 初期スキューまたは初期位相シフ トがコンフ ィギュレーシ ョ ン中に PHASE_SHIFT 属性によって制御されます ただし動的シフ ト モードの場合 DCM の LOCKED 入力が High になった後に 動的ファ イン位相シフ ト制御入力 PSEN PSCLK および PSINCDEC を使用して FPGA アプリ ケーシ ョ ンで現在の位相シフ ト値を修正できます

動作

図 33 に示すよ うに位相シフ ト制御入力を使用し現在の位相シフ ト値を修正します すべての動的位相シフ トは PSCLK の立ち上がりエッジに同期して行われ 有効な位相シフ トは PSEN イネーブル入

図 32 固定ファイン位相モードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

Fixed

x462_32_061803

PHASE_SHIFTLIMITS 255plusmn=

TPhaseShiftPHASE_SHIFT

256--------------------------------------------⎝ ⎠

⎛ ⎞ TCLKINbull=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 45

R

力を正確に 1 PSCLK ク ロ ッ ク周期間アサートするこ とによって開始します PSEN を 1 ク ロ ッ ク周期よ り長くアサートする場合には 適切に位相シフ ト を行う こ とができない可能性があ り ます

PSINCDEC の値は制御入力の増減を指定し 位相シフ トの方向を決定します PSINCDEC を High に設定する と 動的位相シフ ト値が増加し Low に設定する とその値は減少します

実際の位相シフ ト が行われる タ イ ミ ングはさ まざまであ り DCM で PSCLK ク ロ ッ クの 1 周期間PSDONE 出力が High にアサート された時に完了します PSEN がイネーブルであ り PSDONE がアサート されるまでの間 DCM 出力クロ ッ クは 初期位相シフ ト値から新しい位相シフ ト値まで 1 ビットずつスライ ド します シフ トが行われている間 DCM は入力クロ ッ クに対してロ ッ ク状態 つま りLOCKED 出力がアサート された状態を維持します

PSDONE がアサート されたと き またはアサート後に 次の位相シフ ト処理が開始されます

動的ファ イン位相シフ ト モードを使用する場合は CLKOUT_PHASE_SHIFT 属性を VARIABLE に設定し FPGA コンフ ィギュレーシ ョ ン後に PHASE_SHIFT 属性値によって 位相シフ トの初期位置を設定できます DCM の LOCKED 出力が High になる と FPGA アプリ ケーシ ョ ンでは DCM 出力クロ ッ クにおけるスキュー または位相シフ ト を動的に修正できます また DCM がリセッ ト された場合は PHASE_SHIFT 値は初期設定値に戻り ます

図 33 動的ファイン位相シフ ト制御インターフェイス

PSINCDEC

PSEN

PSCLK

PSDONE

0 = 1 =

STATUS[0](

)

PSDONE

If phase shift incremented ordecremented to limit valueSTATUS[0] stays High until newoperation shifts away from limit

x462_33_062403

46 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

動的ファイン位相シフ ト範囲

PHASE_SHIFT と同様に 動的位相シフ トに対しても位相シフ ト範囲の制限があ り ます 図 34 を参照して ください また その範囲は SHIFT_DELAY_RATIO 等式で示したよ うにFINE_SHIFT_RANGE 対入力クロ ッ ク周期の比率によって決定されます

SHIFT_DELAY_RATIO lt 2

指定された FINE_SHIFT_RANGE 値がクロ ッ ク周期の 2 倍よ り小さい場合 (SHIFT_DELAY_RATIOlt 2)最大動的位相シフ ト値は最大遅延タップ値である FINE_SHIFT_RANGE によって決定されますSHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト範囲は 等式 6 によって決定されます

等式 6

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 動的位相シフ ト値の範囲は plusmn96 とな り ます

図 34 動的位相シフ ト制御

Clock Outputs

PHASE_SHIFT DCM LOCKED

RESET

CLKIN

0Fixed Phase Shift

- LimitFixed Phase Shift+ Limit

PSEN

PSINCDEC

PSCLK

PSDONE

STATUS[0]

0

Dynamic Phase Shift- Limit

Dynamic Phase Shift+ Limit

Increment PhaseShift Value

Decrement PhaseShift Value

Enable

IncrementDecrement

Phase Shift Clock

Phase Shift Done

Variable PhaseShift Overflow

DCM LOCKEDFPGA

DCM Variable PhaseShift Control

x462_34_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

DynamicPhaseShiftLIMITS INTEGER 128 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞plusmn=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 47

R

したがって SHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト値は 等式 7 とな り ます PHASE_SHIFT = 1 と して ください

等式 7

SHIFT_DELAY_RATIO ge 2

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 2 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 8

したがって SHIFT_DELAY_RATIO ge 2 の場合の位相シフ ト値は 等式 9 とな り ますPHASE_SHIFT = 1 と して ください

等式 9

制御

45ページの図 33 46ページの図 34 に示すよ うにDCM の動的位相シフ ト制御信号によって FPGAアプリ ケーシ ョ ンは現在の CLKIN 入力と DCM ク ロ ッ ク出力間の関係を修正できます 表 18 に 制御入力 現在の位相と次の位相の関係 遅延タ ップへの影響と制御出力の関係を示します

TPhaseShiftDynamicPhaseShift

DynamicPhaseShiftLIMITS-----------------------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

DynamicPhaseShiftLIMITS 255plusmn=

TPhaseShiftDynamicPhaseShift

256--------------------------------------------------------- TCLKINbull=

表 18 動的位相シフ ト制御 (内部反転がない場合)

PSENPSINC-

DECPSCLK 現在の

位相シフ ト

次の

位相シフ ト遅延ライン PSDONE

STATUS[0](オーバーフロー )

動作

0 X X X 変更なし 変更なし 動的位相シフ トはディ スエーブル

1 0 uarr gt -制限 現在の位相

シフ ト -1現在の位相

シフ ト -11 0 位相シフ トおよびシフ ト ポインタ

のデク リ メン ト

1 0 uarr le -制限およびgt -255

現在の位相

シフ ト -1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがデク

リ メン ト

1 0 uarr -255 -255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

1 1 uarr lt +制限 現在の位相

シフ ト +1現在の位相

シフ ト +11 0 位相シフ トおよびシフ ト ポインタ

のインク リ メ ン ト

1 1 uarr ge+制限およびlt +255

現在の位相

シフ ト +1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがイン

ク リ メ ン ト

1 1 uarr +255 +255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

メモ X = 考慮する必要があ り ません = 不確定であ り 現在のアプリ ケーシ ョ ンの状態によって決定されます1 = PSDONE が 1 PSCLK 周期間 High にアサート されます-制限 = 遅延ラインの最小位置+制限 = 遅延ラインの最大位置PSEN を 1 PSCLK サイ クル間アサート します

48 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

PSEN が Low の場合 動的位相シフ トはディ スエーブルであ り その他のすべての入力は無視されます したがって すべての現在のシフ ト値および遅延ライン位置に変更はあ り ません

遅延ラインがその制限 (デク リ メン トで - 制限 または -255 インク リ メン トで + 制限 または +255)に到っていない場合 FPGA アプリ ケーシ ョ ンでは PSEN を High にアサートする とによって現在の位相シフ ト値を変更でき PSCLK の次の立ち上がりエッジの前に PSINCDEC に対して適切なインク リメン ト デク リ メン ト値を設定できます 位相シフ ト値は指定されたよ うにインク リ メン ト またはデクリ メン ト します 位相シフ トの最後に PSDONE が PSCLK の 1 周期間 High にアサート され 位相シフ ト が完了したこ と を示し ます また 位相シフ ト のオーバーフロー状態が発生していないため

STATUS[0] は Low を維持します

DCM が +255 を超える値にインク リ メン ト された場合 または -255 よ り小さな値にデク リ メン ト された場合には遅延ラインの位置はその限界である +255 または -255 から変更されず位相は変更されません STATUS[0] は High にな り 動的位相シフ トがオーバーフローである こ とを示します こ こで 新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0]が Low に戻り ます

位相シフ トが +255 または -255 には達していませんが 遅延ライン範囲 (表 18 では + 制限および - 制限)を超えている場合には位相は変更されませんがSTATUS[0] が再び High になり ます STATUS[0]出力は 遅延タ ップが遅延ラインの限界に到達したと きを示します ただし FPGA アプリ ケーシ ョ ンでは等式 8 または等式 6 を使用して制限値が算出され求められた遅延ラインの制限値は保証された値とな り ます 特定のデバイスでは 処理電圧または処理温度によって 遅延ラインが長くなる場合があ り ますが これの値はデバイスによって異なるため 保証されていません 遅延ラインの位置ではなく 位相シフ ト値は +255 または -255 に到達するまでインク リ メン ト またはデク リ メン ト を続けます新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0] がLow に戻り ます こ こで位相シフ ト値は遅延ラインにおいて有効な遅延値に対応する値に戻るよ うにインク リ メン ト またはデク リ メン ト されます

DCM Wizard

動的位相シフ トは図 35 に示す DCM Wizard の [General Setup] ダイアログ ウ ィンド ウで設定します動的ファ イン位相シフ ト を有効にするためには 図 35 に示すよ うに [Variable] を選択します 次に初期の [Phase Shift Value] を入力します 初期値は前述した固定ファイン位相シフ トモードの場合と同様に動作します

図 36 に示すよ うに[Variable] モードを選択するこ とによって動的位相シフ ト制御信号である PSENPSINCDEC PSCLK および PSDONE がイネーブルにな り ます これらの制御信号を FPGA アプ リケーシ ョ ンで使用するために入力および出力チェッ ク ボッ クスをオンにして ください またSTATUS

図 35 DCM Wizard での動的ファイン位相シフ トモードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

[Variable]

x462_35_061903

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 49

R

出力のボッ クスをオンにし STATUS[0] 信号をイネーブルにします STATUS[0] は 位相シフ ト値がその最大または最小制限値に達したと きを示します

アプリケーシ ョ ン例

動的位相調整を行う場合の動的位相シフ ト機能については 次の リ ンクからアプ リ ケーシ ョ ン ノー トXAPP268 を参照してください

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

クロック逓倍クロック分周周波数合成

DCM アプリ ケーシ ョ ンのもっと も使用される機能の 1 つと して 新しいク ロ ッ ク周波数を柔軟に生成できる機能があ り ます 次に説明するよ うにSpartan-3 DCM は 3 つの独立した周波数合成機能を持ちます図 37 および表 19 を参照してください アプリ ケーシ ョ ンでは これらの機能の 1 つを使用する場合 またはすべてを同時に使用する場合があ り ます 次に 各機能の詳細について説明します

1 2 逓倍クロ ッ ク (CLK2X CLK2X180) は 入力クロ ッ クの周波数を 2 倍にします

2 ク ロ ッ ク分周 (CLKDV) は 入力クロ ッ ク周波数を一定の分周値を使用して分周します

3 周波数合成回路 (CLKFX CLKFX180) は 入力クロ ッ ク周波数から新しい周波数を生成します

図 36 DCM Wizard での動的位相シフ ト制御出力の選択

LOCKEDSTATUS

PSDONE

PSENPSINCDECPSCLK

STATUS[0] STATUS

x462_36_061903

図 37 クロック合成オプシ ョ ン

CLKIN CLK0

CLKFB

DCM

CLKFX

CLKFX180

Frequency Synthesizer

F = FCLKIN CLKFX_MULTIPLY

CLKFX_DIVIDE

CLKDV

Clock Divider

F =FCLKIN

CLKDV_DIVIDE

CLK2X

CLK2X180

F = 2 FCLKIN Clock Doubler

ClockDistribution

Delay

CLK0or

CLK2X

Clock Feedback LoopCLK0 CLK2X CLK2X180 CLKDV CLKFB

CLK0

CLKFXCLKFX180

50

DLL_FREQUENCY_MODE=LOW50

50

Deskewed ClockF = FCLKIN

DUTY_CYCLE_CORRECTION=TRUE50

x462_37_062203

50 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

CLKDV 以外のすべての周波数合成出力は 5050 デューティ サイ クルを持ちます 表 23 に示すよ うに高周波数で分周値が整数の場合通常 CLKDV は 50 のデューティ サイクルを持ちます また 2逓倍クロ ッ ク (CLK2X CLK2X180) 回路は高周波数では使用できません

CLKFX および CLKFX180 以外のすべての DCM ク ロ ッ ク出力はDCM の 遅延ロッ ク ループ (DLL)ユニッ トで生成され CLKFB ピンへのクロ ッ ク フ ィードバッ クが必要になり ます DCM の デジタル周波数合成 (DFS) ユニッ トはCLKFX および CLKFX180 ク ロ ッ ク出力を生成します アプリ ケーシ ョンで CLKFX 出力または CLKFX180 出力のみが使用される場合にはフ ィードバッ ク パスを削除できDCM の動作範囲が広くな り ます 周波数合成回路は DCM 内部に CLKIN に基づいたフ ィードバック パスを持ちます

ク ロ ッ ク フ ィードバッ クを使用した場合 すべての出力クロ ッ クの位相が調整されます また 出力のいくつかは分周クロ ッ クであるためすべての DCM 出力がクロ ッ ク エッジで一致するよ うに調整されるこ とはまれであるこ とがわかり ます たとえば CLKDV 出力は CLKDV_DIVID の各サイクルごとに CLKIN および CLK0 に対して調整されCLK2X 出力は CLK0 のサイクル 1 つおきに この信号に対して調整されます またCLKFX 出力はCLKIN の CLKFX_DIVIDE サイクルごとおよび CLKFBの CLKFX_MULTIPLY サイクルごとに CLKIN に位相調整されます

周波数合成アプリケーシ ョ ン

周波数合成を使用するアプリ ケーシ ョ ンは ほぼ無制限に考えられますが 次にいくつかのアプリ ケー

シ ョ ン例を示します

bull ボード上で利用可能なクロ ッ クを使用している FPGA および外部ロジッ クに対して完全に新しいクロ ッ ク周波数を生成する

bull 低速の外部クロ ッ ク ソースから高周波数の内部クロ ッ クを生成し システムの EMI を低減する

bull 図 38 に示すよ うに高速シ リ アルデータ ク ロ ッ クを分周しFPGA 内部でデータの並行処理を行う

bull 同様に 図 38 に示すよ うに 高速シ リアル データ フォーマッ トに変換する前に 並行で動作するデータ ク ロ ッ クの周波数を逓倍する

bull 適切な速度の機能をインプリ メン トする場合に 入力クロ ッ クを逓倍し 内部ロジッ クをクロ ッ ク

アップするこ とによって 使用する リ ソースを削減する

表 19 DCM 周波数合成オプシ ョ ン

機能 DCM 出力 周波数DCM の機能ユニッ ト

フ ィードバック50 の

デューティ サイクル

スキュー調整

クロ ッ ク

CLK0 DLL 必要 DUTY_CYCLE_CORRECTION = TRUE の場合に 50 です

2 逓倍クロ ッ ク CLK2XCLK2X180

DLL 必要 常に 50 です

分周クロ ッ ク CLKDV DLL 必要 高周波数モードで分周値が

整数以外の場合を除いて常

に 50 です

周波数合成 CLKFXCLKFX180

DFS オプシ ョ ン フ ィードバッ クに

よって ク ロ ッ ク

入力周波数範囲は

広くなるこ とは

あ り ません

常に 50 です

FCLKIN

2 FCLKINbull

FCLKINCLKDV_DIVIDE---------------------------------------------------

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE------------------------------------------------------------⎝ ⎠

⎛ ⎞bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 51

R

入力クロックおよび出力クロックの周波数条件

周波数合成を行う場合の入力クロ ッ クおよび出力クロ ッ クの周波数条件は DCM で使用されるク ロ ック出力によって決定されます たとえば CLKFX 出力および CLKFX180 出力は DCM のデジタル周波数合成 (DFS) ユニッ トのみを使用し その他のすべての出力は遅延ロッ ク ループ (DLL) ユニッ ト を使用します DLL における周波数の制限は DFS よ り も厳しいため DFS のみを使用する場合の方が周波数の動作範囲は広くな り ますDFS および DLL の両方を使用する場合アプリ ケーシ ョ ンは DLLの周波数範囲によって制限されます

また DLL および DFS は 低周波数モード と高周波数モードの両方で動作可能であるため モード設定によっても有効な周波数範囲が変動します

DCM デザインが有効であるためには CLKIN 周波数が 『Spartan-3 データ シート 』 モジュール 3 に記載されている動作範囲内である必要があ り 使用されているすべての出力クロ ッ クの周波数もそれぞれ

指定された範囲内でなければなり ません

図 39 に クロ ッ ク入力およびクロ ッ ク出力と対応する周波数範囲を示します ただし こ こで示すのは低周波数モードの場合のみです データ シートに記載されている仕様名は影付きのボッ クス内に示しています また 表 20 に DCM アプリ ケーシ ョ ンの例および周波数条件を示します

図 38 周波数合成アプリケーシ ョ ンの一般的な例

DCM DCM

F

n-bitswide

Fn

F F m

m-bitswide

F F

Overclockedtime-shared logic

DCM

F

F F x

High-speed serial datadown-converted toslower parallel data

Slower parallel dataup-converted to high-speed serial data

FPGA

x462_38_070903

52 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

2 逓倍クロック (CLK2X CLK2X180)表 21 に示すよ うに 2 逓倍クロ ッ ク回路によって CLKIN 入力の周波数は 2 倍になり ます この 2 逓倍クロ ッ ク回路は DLL 機能ユニッ トの一部であ り CLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します 2 逓倍クロ ッ ク回路からの出力は CLK2X および CLK2X180 であ り これらの出力のデューテ ィ サイ クルは常に 50 です また これらの周波数は同一ですがCLK2X180 は CLK2X を 180deg位相シフ ト したものであ り 基本的に CLK2X 出力を反転したものになり ます 高性能のデュアル データ レート (DDR) アプリ ケーシ ョ ンまたはクロ ッ ク転送アプリ ケーシ ョ ンでは 両方の位相を使用するこ とが不可欠です

CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE 属性が LOW に設定されている場合のみに使用できます アプリ ケーシ ョ ンにおける必要性に応じてオプシ ョ ンの 2 分周機能を使用しCLKIN 入力周波数を低下させてください ( 「アドバンス ド オプシ ョ ン」 を参照)

図 39 入力クロックおよび出力クロックの周波数条件 (低周波数モード )

DFS(CLKIN_FREQ_FX_MINMAX)

DLL (Low-Frequency Mode)(CLKIN_FREQ_DLL_LF_MINMAX)

~1 MHz ~326 MHz

~24 MHz ~180 MHzFCLKIN

DFS (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~24 MHz ~200 MHz

DLL CLKDV (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~15 MHz ~120 MHz

DLL CLK2X (Low-Frequency Mode)(CLKOUT_FREQ_2X_LF_MINMAX)

~48 MHz ~326 MHz

FCLKFXFCLKFX180

FCLKDV

FCLK2XFCLK2X180

x462_39_070903

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 20 DCM 周波数条件の例

入力周波数 出力周波数 解説

12 MHz 128 MHz 1 つの DCM のみを使用する場合には条件を満たしません FCLKIN は DFS の条件を満たす範囲内ですが FCLKFX は最低 24MHz 出力周波数が必要です

12 MHz 324 MHz DFS を使用する DCM で条件を満たします CLKFX_MULTIPLY=27 と設定してくださいFCLKFX は DFS 出力周波数範囲内です

25 MHz 25 MHz30 MHz

DFS および DLL を使用する DCM で条件を満たします CLKDV 出力を 25MHz 信号に使用しCLKDV_DIVIDE=10 と設定してください また CLKFX 出力を 30MHz 信号に使用しCLKFX_MULTIPLY=6 および CLKFX_DIVIDE=5 と設定してください すべての入力周波数および出力周波数は適切な範囲内です

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 53

R

表 21 2 逓倍クロック回路のまとめ

DCM 出力 CLK2XCLK2X180

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク 必要です

50 デューティ サイ クル出力 はい

制御属性

DLL_FREQUENCY_MODE CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE = LOW の場合にのみ有効です

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます 2 逓倍クロ ッ クの出力は 高周波数モードでは使用できませんが ほかの DCM ク ロ ッ ク出力に必要となる場合があ り ます

CLK2XCLK2X180

CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

2 FCLKINbull

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (~24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (~48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~326 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_2X_LF_MIN (48 MHz)

CLKOUT_FREQ_2X_LF_MAX (~325 MHz)

HIGH 設定不可 設定不可

54 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

クロック分周 (CLKDV)表 22 に概要を示すクロ ッ ク分周ユニッ トは デザインに設定した CLKDV_DIVIDE 属性の値を使用し CLKIN 入力の周波数を分周します ク ロ ッ ク分周ユニッ ト は DLL 機能ユニッ ト の一部であ りCLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します

表 22 クロック分周回路のまとめ

DCM 出力 CLKDV

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク DCM からの CLK0 出力または CLK2X 出力を使用する場合に必要です

50 デューティ サイ クル出力 はい ただし DLL_FREQUENCY_MODE=HIGH および CLKDV_DIVIDE が整数値ではない場合を除きます

制御属性

DLL_FREQUENCY_MODE CLKDV は両モードで使用できます 分周値によっては 出力のデューティ サイ クルに影響を与える場合があ り ます ( 「CLKDV ク ロ ッ ク調整」 を参照してください)

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 有効な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 であ り 整数値の場合 よ り短時間で DLL はロッ ク状態になり ます また 整数値を設定する場合には出力ジッ タが低くな り ます

周波数制約

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

CLKDV CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

FCLKINCLKDV_DIVIDE--------------------------------------------------

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~325 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_DV_LF_MIN (15 MHz)

CLKOUT_FREQ_DV_LF_MAX (~120 MHz)

HIGH CLKOUT_FREQ_DV_HF_MIN (30 MHz)

CLKOUT_FREQ_DV_HF_MAX (~240 MHz)

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 55

R

CLKDV クロック調整

DLL_FREQUENCY_MODE 属性が High であ りCLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 になり ます 表 23 に CLKDV のデューティ サイクルを示します Spartan-3 DCM では CLKIN のデューティ サイクルが 6040 (または 4060) 以上である必要があ り高周波数モードの場合に 15 で分周された CLKDV 出力は次にカスケード接続された DCM へクロ ッ ク入力するこ とはできません

CLKDV のジッ タは 周波数モードおよび属性値が整数か 整数ではないかによって決定されます

CLKDV_DIVIDE 属性に整数値を設定するこ とによって 出力ジッ タが半分になり DLL がロ ッ ク状態になるために要する時間も短縮されます

DCM Wizard

ク ロ ッ ク分周は DCM Wizard の[General Setup]ウ ィ ン ド ウで設定し ます 図 40a に示すよ う にCLKDV 出力のチェッ ク ボッ クスをオンにし 次に図 40b に示すよ うに ド ロ ップ ダウン リ ス トから[Divide by Value] を選択します

表 23 CLKDV デューティ サイクル (DLL_FREQUENCY_MODE=HIGH の場合)

CLKDV_DIVIDE 属性 デューティ サイクル High 時間総サイクル

整数 50000 12

15 33333 13

25 40000 25

35 42857 37

45 44444 49

55 45454 511

65 46154 613

75 46667 715

表 24 CLKDV 出力ジッ タ

CLKDV_DIVIDE CLKDV 出力周期ジッ タ

整数値 CLKOUT_PER_JITT_DV1 (plusmn~150 ps)

整数以外の値 CLKOUT_PER_JITT_DV2 (plusmn~300 ps)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

a CLKDV 出力のチェ ック ボックスをオン b ドロップ ダウン リス トから [Divide by Value を選択]

図 40 DCM Wizard での分周クロック設定

CLKDV

x462_40a_0619032

Divide By Value

x462_40b_061903

56 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

周波数合成回路 (CLKFX CLKFX180)周波数合成回路を使用するこ とによって 入力周波数の逓倍 分周 またはその両方をもっと も柔軟に

行う こ とができます 表 25 に示すよ うに 2 つの周波数合成出力は CLKFX および CLKFX180 ですCLKFX180 出力は CLKFX と同一の周波数を持ちますがCLKFX を 180degまたは 12 ク ロ ッ ク周期位相シフ ト させた ものです これらの周波数合成出力のデューテ ィ サイ クルは 50 であ るためCLKFX180 は CLKFX の反転クロ ッ クのよ うに見えます

表 25 にある等式が示すよ うに設計段階で 2 つの属性を使用し合成出力周波数を制御します CLKINク ロ ッ ク入力は CLKFX_MULTIPLY が分子 CLKDV_DIVIDE が分母である比率を使用して逓倍されます たとえば 75MHz CLKIN 入力を使用して 155MHz の出力を生成するためには 周波数合成回路では 3115 の比率で CLKIN を逓倍します これは CLKIN を始めに 31 倍し 次に 15 で割ることではあ り ませんCLKIN を 31 倍するこ とによって出力周波数は2325GHz とな りSpartan-3 DCMの周波数範囲を越えるこ とにな り ます

68 を 34 と約分するよ うに 逓倍値および分周値はもっと も簡潔な値にする必要があ り ます このことによって ロ ッ クするために必要な時間が短縮します

周波数合成には 常にク ロ ッ ク フ ィードバッ クが必要ですが DFS には CLKIN を基準と した内部フ ィードバッ ク ループがあるため DLL を使用せずに DFS を使用する場合には CLKFB に別のループは必要あ り ません

また CLKFB 出力は CLKIN の CLKFX_DIVIDE サイ クルごと および CLKFB の CLKFX_MULTIPLY サイクルごとに CLKIN に対して位相調整されます たとえばCLKFX_MULTIPLY = 3 であ りCLKFX_DIVIDE = 5 の場合CLKFX 出力の位相は CLKIN の各 5 サイクルごと および CLKFB の 3 サイクルごとに CLKIN 入力に対して位相調整されます DCM で LOCKED 出力がアサート される と DFS は CLKIN 入力の立ち上がりエッジごとに再同期し ほぼ完璧に位相調整されます

表 25 周波数合成回路のまとめ

DCM 出力 CLKFX

CLKFX180 (CLKFX を 180deg位相シフ ト した場合と同一)

出力周波数

DCM の機能ユニッ ト デジタル周波数合成 (DFS)

フ ィードバッ ク CLKIN を基準にして内部フ ィードバッ クを使用するため 必要あ り ません 遅延ロッ ク ループ (DLL) を使用する場合は オプシ ョ ンと して CLKFB 入力を使用できます

50 デューティ サイ クル出力 常に 50 です

制御属性

DFS_FREQUENCY_MODE CLKIN CLKFX 出力 CLKFX180 出力の周波数条件に影響します

DLL_FREQUENCY_MODE アプリ ケーシ ョ ンで DLL 出力が使用される場合に 周波数合成回路のみに影響を与えます また よ り厳しい DLL の条件に適用するよ うに CLKIN 周波数を低下させる可能性があ り ます CLKFX 出力または CLKFX180 出力が使用されている場合 周波数条件は DFS_FREQUENCY_MODE によってのみ指定されます

CLKFX_MULTIPLY 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 2 から 32 であ りデフォルトは 4 です

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 1 から 32 であ りデフォルトは 1 です

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 57

R

DCM Wizard

周波数合成を使用する場合図 41 に示すよ うに DCM Wizard の[General Setup]ダイアログ ボッ クスで CLKFX または CLKFX180 あるいはその両方のチェッ ク ボッ クスをオンにしてください

CLKFX 出力または CLKFX180 出力のみを使用する場合はオプシ ョ ンと して DLL ク ロ ッ ク出力およびフ ィードバッ クをディ スエーブルにするこ とによって 周波数範囲を広げるこ とができます

bull デフォルトでは CLK0 出力は常にオンになっていますが CLKFX または CLKFX180 のみを使用する場合は CLK0 のチェッ ク ボッ クスをオフにしてください

bull 図 42 に示すよ うに DCM フ ィードバッ クをディ スエーブルにする場合は [None] を選択してください フ ィードバッ クを使用しない場合はCLKFX および CLKFX180 の周波数範囲は高域と低域の両方で広くな り ます

周波数制約

CLKIN アプリ ケーシ ョ ンで 遅延ロッ ク ループ (DLL) からの出力が使用されていない場合CLKIN の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます DLL が使用されている場合は DLL のクロ ッ ク周波数条件はよ り厳し くな り ます

CLKFXCLKFX180

CLKIN 出力および CLKFX180 出力の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 25 周波数合成回路のまとめ (Continued)

最小周波数 最大周波数

CLKIN_FREQ_FX_MIN (~10 MHz) CLKIN_FREQ_FX_MAX (~326 MHz)

DFS_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_FX_LF_MIN(~24 MHz)

CLKIN_FREQ_FX_LF_MAX(~210 MHz)

HIGH CLKIN_FREQ_FX_HF_MIN(~210 MHz)

CLKIN_FREQ_FX_HF_MAX(~325 MHz)

図 41 DCM Wizard での Frequency Synthesizer 設定

CLK0

CLKFXCLKFX180

CLKFXCLKFX180

CLKFX CLKFX180

DCM

x462_41_070903

58 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロックのフォワード ミ ラー リバッファR

DCM Wizard のクロ ッ ク周波数合成で示したよ うに必要は出力周波数または逓倍値と分周値を入力します

クロックのフォワード ミ ラーリバッファ

DCM は高度なクロ ッ ク制御機能を持ちさ らに Spartan-3 IO ピンは多様な IO 電圧標準をサポートするため 通常 Spartan-3 FPGA ではクロ ッ ク信号のリバッファ またはミ ラーを行い 入力クロ ッ クの電圧を変更ために使用されます 同様に DCM の入力クロ ッ ク条件を変更し デューティ サイクルを50 に調整します

図 20 に DCM の入力クロ ッ クを 50 デューティ サイ クルに調整し その周波数で CLK0 出力を使用してクロ ッ クをフォワードする または DCM CLK2X を使用して周波数を 2 倍にする DCM の例を示しました DCM が LOCKED 出力をアサートする と 入力クロ ッ クおよび出力クロ ッ クは位相調整されます CLKFB へのフ ィードバッ ク パスは外部のクロ ッ ク フ ィードバッ ク地点でクロ ッ ク分散遅延を確認し 削除します

出力クロ ッ クのデューティ サイクルが 50 であるこ とは重要であるため出力 IO 標準が 50 デューティ サイ クルを維持できるために十分な速度でスイ ッチできる こ と を確認して ください デューティサイ クルの動作は 出力信号でのシ ミ ュレーシ ョ ンを行う こ とによって検証します IBIS シ ミ ュレーシ ョ ンで確認できるよ うに IO 標準には立ち上がり と立ち下がりが対称的ではなく デューティ サイクルにずれが発生しているものもあ り ます HSTL SSTL および LVCMOS の DCI バージ ョ ンの IO標準の立ち上がりおよび立ち下がりがよ り対称的です

100 MHz を越える場合のデューテ ィ サイ クルを確実に 50 にするためには CLKIN のソースのデューティ サイ クルが 50 の場合にも DCM のデューティ サイクル調整機能を使用する必要があ ります したがって ク ロ ッ ク フォワードに CLK0 CLK90 CLK180 または CLK270 を使用する場合はDUTY_CYCLE_CORRECTION 属性を TRUE に設定してください 通常その他の DCM ク ロ ック出力は常に 50 のデューティ サイ クルに調整されます ( 「ク ロ ッ ク調整」 を参照して ください)

200 MHz 以上で動作する場合のデューティ サイ クルを最適にするためには図 43 に示すよ うな回路を使用して ください こ こでは DCM からの CLKx 出力および CLKx180 出力がデュアル データ レート (DDR) 出力フ リ ップフロ ップの C0 入力および C1 入力を駆動するよ うに使用します DDR フ リ ップフロ ップの D0 入力を VCC に接続し D1 入力を GND に接続します また DCM の各出力は個々のグローバル バッファを駆動しデューティ サイクルのずれを最小にします 高周波数の場合に 1つのク ロ ッ クのみを分散し DDR フ リ ップフロ ップ内部でローカル位相シフ ト を行う と 約 150ps のデューティ サイクルのずれが発生するため このよ うな回路設計は推奨していません

周波数が 250 MHz 以上の場合には分散クロ ッ クに LVDS のよ うな差動信号標準を使用します 図 43にCLKIN ク ロ ッ ク入力およびクロ ッ ク出力がと もに VLDS を使用する例を示します さ らにク ロ ック フ ィードバッ ク パスも LVDS を使用します パフォーマンスを最適にするためには ク ロ ッ ク入力およびクロ ッ ク フ ィードバッ ク パスにグローバル バッファ入力 (IBUFGDS) を使用する必要があ り ます これによってデバイスの一辺にあるすべてのグローバル バッファ入力を使用するこ とになり ますが 高周波数でのクロ ッ ク フォワードを最適に行う こ とができます

図 42 フ ィードバックに [None] を選択し 周波数範囲を拡大

SourceFeedback

Internal External None

Value 1X 2X

If only using the CLKFX or CLKFX180clock ouputs optionally click None to extend the DCM frequency limits

x462_42_070903

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 59

R

クロック ジッ タおよび位相ノイズ

もっと も高価で高精度なものの場合においてもすべてのクロ ッ クにはクロ ッ ク ジッタまたは位相ノイズがあ り ます こ こでは Spartan-3 デジタル ク ロ ッ ク マネージャに固有のジッ タ特性について説明します 低周波数 たとえば 20 MHz で動作する場合は 一般に ジッ タの影響は無視できますが200 MHz のよ う な高周波数で動作する場合には 特にデュアル データ レート (DDR) アプリ ケーシ ョンにおいて ジッ タはデザインの問題に関連する要素となり ます ク ロ ッ ク ジッタによって アクティブ ク ロ ッ ク エッジ間で実際に有効な時間が削減されるため FPGA アプ リ ケーシ ョ ンで使用できる時間が制限されます

クロック ジッ タ とは図 44 に示すよ うにク ロ ッ ク ジッタ とは理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジの相違です 太線は 理想的なクロ ッ ク信号を表します 各クロ ッ ク エッジでは 理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジ間に若干のずれがあ り このずれの最大値と最小値の差異をピーク ジッ タ と呼びます ジッ タは アクテ ィブなク ロ ッ ク エッジのみに関係します たとえば シングル データ レート(SDR) アプリ ケーシ ョ ンの場合データは各立ち上がりエッジでクロ ッ ク入力され この場合のジッタは総クロ ッ ク周期から引く こ とによって求められます 一方 デュアル データ レート (DDR) の場合データは各クロ ッ ク周期の始ま り および 12 ク ロ ッ ク周期の点でクロ ッ ク入力されるため ジッ タは12 ク ロ ッ ク周期ごとに影響を与えます

図 43 高周波数 (250 MHz 以上) での LVDS クロック フォワード回路

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKx180

BUFG

BUFG

VCC

GND

OBUFDS

CLKIN

CLKFB

IBUFGDS

IBUFGDS

External Clock Feedback (LVDS)

FPGA

x462_43_061903

図 44 クロック信号におけるジッ タ

x462_44_061903

60 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

クロック ジッ タの原因ク ロ ッ ク ジッタはすべてのシステムに存在しそれを避けるこ とはできません ク ロ ッ ク ジッタの原因は システム内のノ イズのソース または不完全な信号であ り 実際 ジッ タは時間軸上における ノ イ

ズである と言えます たとえば 入力クロ ッ ク ソースには ク リ スタルからの任意の温度振動ノ イズまたは機械的な振動ノ イズによる固有のジッタ特性があ り ます 多くの同時スイ ッチ出力 (SSO) は回路基板にノ イズを追加するため 内部スイ ッチしきい値がわずかに変更し ジッ タが増加します 同様に適切に設計されていない電源供給または不十分なデカップリ ングによってもジッ タは増加します

その他のジッタの原因と しては近接した信号のクロス トーク不適切な終端 グランド バウンス電磁干渉 (EMI) などが考えられます

このアプ リ ケーシ ョ ン ノートでは Spartan-3 デジタル ク ロ ッ ク マネージャ (DCM) および FPGA 内部でのジッタ全般について説明します

クロック ジッ タ特性の理解ク ロ ッ ク ジッタの特性はさまざまな方法で定められ次のよ うにいろいろな方法でその特徴を捉えることができます

サイクル間ジッ タ

隣接サイクル ジッタ と も呼ばれるサイクル間ジッタは 図 45 に示すよ うに 1 つのクロ ッ ク サイクルと次のクロ ッ ク サイクル間でのクロ ッ ク周期の最大差異です この例ではあるクロ ッ ク サイクルと次のクロ ッ ク サイクル間の最大差異は +100 ps および -100 ps または plusmn100 ps です数百万クロ ッ ク サイクル間の計測を行う場合にはクロ ッ ク周期の変動の絶対値が大き くなる可能性があ り ますがク ロ ッ

ク サイクル間の変動が plusmn100 ps よ り大き くなるこ とはあ り ません

サイクル間ジッタは ク ロ ッ ク出力またはオシレータの特性を測定するために重要ですが アプ リ ケー

シ ョ ンのタイ ミ ング解析には有効ではあ り ません

周期ジッ タ

周期ジッタは 数百万クロ ッ ク サイクル間で計測したサイ クル間ジッタの合計です ピーク ジッ タは理想的なクロ ッ ク移行時間と比較した場合の最短および最小移行時間を示します

デジタル ク ロ ッ ク マネージャの周期ジッ タは一定ではく ピーク間ジッタ と して表されます 図 46 に示すよ うに 理論的には クロ ッ ク移行位置は理想的なクロ ッ ク位置を中心とする確率的な分散 また

はヒ ス ト グラムですが実際の分散はガウス分布ではなく二峰性分布の場合があ り ます 実際のクロ ック移行のほとんどは理想的なクロ ッ ク位置付近で起こ り ますが数百万クロ ッ ク サイクルにおける測定の結果 望ましい位置から離れた地点で起こるクロ ッ ク移行もあ り ます

理想的な位置からの統計的な距離はσ (シグマ) と呼ばれる標準偏差で測定されます DCM はすべてデジタルで機能するデザインであるため 非常に安定しており ザイ リ ンクスでは ジッ タの偏差を plusmn7σまたはピーク間ジッ タを 14σ と定めています 判断基準と して 偏差が plusmn7σ である とい う こ とは ジッタの 9999999999974 が指定されたワース ト ケース ジッ タよ り小さい値であるこ とを保証していま

図 45 サイクル間ジッ タ例

T0 T1 = T0 + 100 ps T2 = T1 - 100 ps

x462_45_062203

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 61

R

す また 14σ ピーク間ジッ タ plusmn7σ ジッタ偏差は 最大ビッ ト エラー レート (BER) が 128 x 10-12 という こ とを意味します

ユニッ ト インターバル(UI)

ジッタの仕様を単位間隔 (UI) の割合と して指定する別の方法もあ り ます 1 UI は 周波数に関わらず1 ビッ ト時間を表します ク ロ ッ クの立ち上がりエッジ または立ち下がりエッジのいずれかでデータが取り込まれるシングル データ レート (SDR) アプリ ケーシ ョ ンでは1 UI は 1 ク ロ ッ ク周期になり ます 一方 2 倍のクロ ッ ク レートでデータがクロ ッ ク入力されるデュアル データ レート (DDR) アプリケーシ ョ ンでは 1 UI が 12 ク ロ ッ ク周期になり ます

UI で指定されるピーク間ジッタ幅は 総ビッ ト周期時間に対するピーク間ジッタ値の比率です

総ジッ タの計算

『Spartan-3 データ シート 』 には CLKFXCLKFX180 以外の DCMのク ロ ッ ク出力におけるジッ タが記載されてます デジタル周波数合成 (DFS) ジッ タは 逓倍値および分周値に基づいて算出されます

データ シートには DLL からのクロ ッ ク出力 (CLKFX および CLKFX180 を除くすべてのクロ ッ ク出力) に対するワース ト ケース ジッ タが記載されています DLL ではジッ タが削減されないため DLLク ロ ッ ク出力の総ジッタには入力クロ ッ クである CLKIN のジッタおよびデータ シートに記載された値が含まれます

また DFS ク ロ ッ ク出力である CLKFX および CLKFX180 では 入力ク ロ ッ ク ジッ タがある程度削減されるため 算出された出力ジッタが総ジッタにな り ます

図 46 ピーク間周期ジッ タ例

図 47 ユニッ ト インターバルの比率で示された周期ジッ タ

Desired clock period

Measured clock period

Num

ber

of s

ampl

esPeak-to-peak Period Jitter

(14σ)

+7σ-7σ

x462_46_061903

Bit Period

Unit Interval (UI)

x462_47_061903

62 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

DLL 出力ジッ タへの入力ジッ タの加算

入力ジッタに DLL 出力ジッタを加える場合ノ イズ計算と同様に 2 乗平均平方根 (RMS) 計算を使用します

ピーク間

等式 10

ピーク間偏差

等式 11

定義

入力クロ ッ クのピーク間周期ジッ タが 150 ps (plusmn75 ps) であ り このク ロ ッ クのデューティ サイ クルがDCM の CLK0 出力と同一の周波数を使用して修正される場合について考えます

この場合 JITTERINPUT = 150 ps であ り JITTERSPEC の値は 『Spartan-3 データ シート 』 で指定されている CLKOUT_JITT_PER_0 と呼ばれる値です これは ピーク間で plusmn100 ps または 200 ps である と概算されます

したがって DCM 出力の総ジッタはピーク間で 250 ps または plusmn125 ps です

カスケード接続された DCM のジッ タ計算図 48 に 複数の DCM をカスケード接続し さまざまな出力周波数を生成しているアプ リ ケーシ ョ ンの例を示します この場合のジッタは 次によって決定されます

bull 前のソースからのジッタ

bull 使用されている DCM 出力

データ シートに記載されているよ うにジッ タ特性は各 DCM 出力によってわずかに異なり ます またDFS からの CLKFX 出力および CLKFX180 出力は 入力ジッタをある程度削減し ジッ タ値は DCMWizard で算出されます ( 「ク ロ ッ ク周波数合成」 参照して ください)

JITTERINPUT = FPGA のクロ ッ ク入力ピンで測定された入力周期ジッタ

JITTERSPEC = 『Spartan-3 データ シート 』 に記載されている適切な出力ポートに対する DLL ク ロ ッ ク出力周期ジッタ

JITTERTOTAL = 予想される総出力周期ジッタ

JITTERTOTAL JITTERINPUT( )2 JITTERSPEC( )

2+=

JITTERTOTALJITTERINPUT( )

2 JITTERSPEC( )2+

2--------------------------------------------------------------------------------------------------------plusmn=

JITTERTOTAL 150 ps( )2200 ps( )

2+ 250 ps= =

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 63

R

したがって カスケード接続された DCM チェーンの任意の点におけるジッタは前述した 2 つの要因によって決定されます 次の例では 回路上のいくつかの点で総ジッタを計算する方法を示します

例 1 すべての DCM が DLL 出力を使用する場合

この例では 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

こ こでは DCM (A) が CLK2X 出力を使用する場合について考えます また DCM 出力ジッ タに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_2X 値を使用してください この値は 400 ps (plusmn200 ps) と概算されています 等式 10 を使用しク ロ ッ ク (A) の総周期ジッタを計算します

次にDCM (B) で分周値が整数である CLKDV 出力を使用する場合について考えます またDCM 出力ジッタに対して 『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_DV1 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (B) の総周期ジッタを計算します この場合 入力ジッタ DCM (A) からのジッタ DCM (B) からのジッタを考慮する必要があるため RMS 等式は次のよ うになり ます

最後に DCM (C) が DCM (B) からの出力を 90deg位相シフ トする場合について考えます また DCM出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します この場合 入力ジッ タ DCM (A) からのジッ タ DCM (B) からのジッ タDCM (C) からのジッ タを考慮する必要があるため RMS 等式は次のよ うにな り ます

例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合

この例は DFS からの CLKFX 出力または CLKFX180 出力を使用する DCM がある点以外は 例 1 すべての DCM が DLL 出力を使用する場合と同様です

この例では 75MHz 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

例 1 と同様に まず DCM (A) が CLK2X 出力を使用する場合について考えます 出力ジッタは 次に示す等式になり ます

この例ではDCM (A) で生成された 150MHz を使用してDCM (B) で 90MHz 合成クロ ッ クを生成します DCM Wizard ( 「ク ロ ッ ク周波数合成」 を参照して ください) を使用し CLKFX_MULTIPLY=3および CLKFX_DIVIDE=5 と設定します ワース ト ケースの出力周期ジッタは 700 ps とな り ます

図 48 カスケード接続された DCM のジッ タ計算

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

A B C

x462_48_061903

JITTERTOTAL A( ) 150ps( )2400ps( )

2+ 427ps 214psplusmn= = =

JITTERTOTAL B( ) 150ps( )2400ps( )

2300ps( )

2+ + 522ps 261psplusmn= = =

JITTERTOTAL C( ) 150ps( )2 400ps( )2 300ps( )2 300ps( )2+ + + 602ps 301psplusmn= = =

JITTERTOTAL B( ) 700ps 350psplusmn= =

64 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

最後にDCM (C) が DCM (B) からの出力を 90deg位相シフ ト させる場合について考えます DCM 出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用してください この値は 300 ps (plusmn150 ps) と概算されています 次の等式を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します 次の DCM では CLKFX を使用するため 総入力ジッ タは ワース ト ケースで700 ps とな り ます 次の RMS 等式を使用し 出力ジッタを計算します

カスケード接続した DCM を使用する場合の推奨デザイン

DCM をカスケード接続して使用する場合 図 48 に示すよ うに DCM からの LOCKED 出力が次のDCM の RST 入力を制御しているこ とを確認してください カスケード接続した DCM では 1 つ前のDCM で LOCKED 出力がアサート され ク ロ ッ クが安定しているこ とが示されてた後に 入力クロ ックにロ ッ クする必要があ り ます

また DCM をカスケード接続する場合には 最もジッ タの影響を回避する必要のあるク ロ ッ ク出力が最初の DCM に接続されるよ うに DCM チェーンを構成してください

システム パフォーマンスにおけるジッ タの影響ク ロ ッ ク ジッタによっても有効なビッ ト周期が狭くな りシステム パフォーマンスが低下します 次の等式に示すよ うに FPGA アプリ ケーシ ョ ンで使用可能なビッ ト周期は 総ビッ ト周期 TBIT からいくつかの影響を差し引いたものです シングル データ レート (SDR) アプリ ケーシ ョ ンでは ク ロ ッ ク周期とビッ ト周期は一致しますがデュアル データ レート (DDR) アプリ ケーシ ョ ンのビッ ト周期はクロ ッ ク周期の 12 になり ます

定義

総ジッ タがク ロ ッ ク周期からの偏差ではな く正の値に指定されている場合 (たとえば plusmn100 ps ではなく200 ps の場合) 正の値を 2 で割り ます (100 ps) ビッ ト周期は負の偏差によってのみ短くなり 正の偏差によってはビッ ト周期が長くな り さ らにタイ ミ ング スラ ッ クが追加されます

入力クロ ッ ク信号の周波数は 75 MHz であ り ク ロ ッ ク ソースのジッ タは plusmn100 ps です アプリ ケーシ ョ ンは内部で生成された 150 MHz のクロ ッ クの立ち上がりエッジでデータを入力します また 総ビッ ト周期 TBIT は 667 ns です ジッ タの影響を考慮する と 有効なビッ ト周期 TAVAILABLE は

どのよ うになるでし ょ うか

2 逓倍クロ ッ ク回路からの CLK2X 出力によって75MHz ク ロ ッ ク入力から 150MHz ク ロ ッ クが生成されます 『Spartan-3 データ シート 』 の CLKOUT_PER_JITT_2X 仕様による と 2 逓倍クロ ッ ク出力である CLK2X には plusmn~200 ps (概算) のワース ト ケース ジッタがあ り ます 2 乗平均平方根を使用し

TBIT = ビッ ト周期時間

tTOTAL_JITTER = 総クロ ッ ク ジッ タ ク ロ ッ ク入力ジッタに DCM 出力ジッタ またはカスケード接続された DCM のジッタを加算したものです

tDUTY_CYCLE_DISTORTION = デューティ サイ クルのずれ デュアル データ レート (DDR) アプリケーシ ョ ンのみで必要であ り それ以外の場合はゼロです 使用する DCM ク ロ ッ ク出力によって データ シートに記載されている CLKOUT_DUTY_CYCLE_DLL または CLKOUT_DUTY_CYCLE_FX を使用します

JITTERTOTAL C( ) 700ps( )2300ps( )

2+ 762ps 381psplusmn= = =

TAVAILABLE TBIT tTOTAL_JITTERndash tDUTY_CYCLE_DISTORTIONndash=

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 65

R

DCM のジ ッ タplusmn200 ps にク ロ ッ ク ソースのジ ッ タ plusmn100 ps を加算する こ と によ って 総ジ ッ タtTOTAL_JITTER が plusmn0223 ns であるこ とがわかり ます

データはクロ ッ クの立ち上がりエッジでのみ入力されるためデューティ サイクルのずれが影響を与えるこ とはな く tDUTY_CYCLE_DISTORTION = 0 です

結果と して 有効な総クロ ッ ク周期 TAVAILABLE は総ビッ ト周期である 6667 ns から 6444 ns に減少します 結果と して ロジッ クは 150 MHz ではなく 1551831 MHz で動作します

クロック ジッ タを最小限にするための推奨デザイン高性能アプリ ケーシ ョ ンでは ク ロ ッ ク ジッタによって有効なビッ ト周期が短くな り ますシステム全体のクロ ッ ク ジッタを最小限にするためには次の推奨デザインを参考にしてください

適切な電力分散システム設計

電力プレーン デカップ リ ングを含む 電力分散システム (PDS) を適切に設計するこ とによって 安定した電力環境を作成し システム ジッ タを削減できます アプ リ ケーシ ョ ン ノー ト XAPP623 ではPDS の適切な設計にについて説明しています

bull XAPP623 電力分散システム (PDS) デザイン バイパスデカップリ ング キャパシタhttpwwwxilinxcomxappxapp623pdf

適切なプリン ト サーキッ ト ボードの設計

予想される動作周波数範囲およびアプ リ ケーシ ョ ン環境に適したプ リ ン ト サーキッ ト ボード設計を行ってください

bull WP174 PCB への効果的な FPGA 統合httpwwwxilinxcojppublicationswhitepaperswp_pdfwp174pdf

bull PCB チェッ ク リ ス トhttpsupportxilinxcomxlnxxil_prodcat_productjsptitle=si_pcbcheck

同時スイッチ出力 (SSO) の推奨デザイン

DCM へのク ロ ッ ク入力 または DCM からのク ロ ッ ク出力の信号に関連した問題を回避するために『Spartan-3 データ シート 』 に記載されている同時スイ ッチ出力 (SSO) 仕様に沿っているこ とを確認して ください

また 可能な限り DCM の入力または出力をスイ ッチング回数の多い IO の近くに配置するこ とを避けてください 特に 出力電圧幅が大きい IO または駆動電流が高い IO の場合にはこのこ とが重要です

仮想グランド ピンを DCM 入力および出力接続の近くに配置

さまざまな影響を受けやすく高周波数である DCM の入力または出力では仮想グランド ピンのよ うなユーザー IO ピンを追加して PCB へ別の接続を作成します このよ うな仮想グランド ピンは ジッタの影響を受けやすい DCM 信号に近接する IO パッ ドに配置して ください IO パッ ドは パッケージのピンまたはボール上だけでなく FPGA のダイ レベルでも近接しているこ とを確認して くださいBGA パッケージ上で隣接しているボールは 必ずしも FPGA 上にある隣接したパッ ドに接続する必要はあ り ません このよ うに設計するこ とによって 内部電圧降下が軽減され ジッ タが削減されます

仮想グランドを作成する場合は図 49 に示すよ うに IOB を GND (Low ロジッ ク レベル) を駆動する出力と して設定し その IOB を外部で直接グランド プレーンに接続します

tTOTAL_JITTER 100psplusmn( )2 200psplusmn( )2+ 22360psplusmn 0223nsplusmn= = =

TAVAILABLE 6667ns 0223nsndash 6444ns= =

66 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

VCCAUX 考察

デジタル ク ロ ッ ク マネージャは VCCAUX 入力によって電源が供給されます FPGA への電源供給入力である VCCAUX の過剰ノ イズは DCM の特性 特にジッタ特性を低下させます DCM のパフォーマンスを最適にするために 次に従ってください

1 図 50 に示すよ うに VCCAUX 電源供給 またはグランド上の変動を 1 ms 間で 10 mV よ り小さ くして ください この制限によって DCM は変動に適切に対応して動作します

2 図 50 に示すよ うに 電源供給のノ イズをピーク間で 200 mV 以内にして ください

3 VCCAUX および VCCO が同一の電源プレーンにある場合 すべての VCCAUXVCCO ピンを適切にデカップリ ングまたはバイパスする必要があ り ます ( 「適切な電力分散システム設計」 を参照してください) また 上記の 1 および 2 を維持できない場合 VCCAUX と VCCO を分離して使用してください

4 特に CLK2X 出力は電源シフ ト またはグランド シフ トの影響を受けます したがって すべての IOB および CLB でスイ ッチングがある場合には CLKFX_MULTIPLY =2 および CLKFX_DIVIDE=1 と設定されている CLKFX 出力はよ り よい特性を持つ出力を供給します DFS モードの場合 CLK2X 出力の更新が遅いのに対して CLKFB 迂回回路では 3 入力クロ ッ クごとにタ ップが更新されます

FACTORY_JF 設定の修正

適切に設計され 安定し 適切にデカップリ ングされた電源供給が FPGA 内のクロ ッ ク スキューおよびジッタを低減するためにもっと も有効な方法ですが FACTORY_JF 属性を 0xFFFF に設定することによって 問題の発生しているボード上のジッタを低減できる場合があ り ます FACTORY_JF=FFFF の場合 DCM はおよそ 20 入力クロ ッ クごとにタ ップ設定を更新し 周波数を基にしたデフォルト設定よ り もタ ップ更新の間隔は短くな り ます

図 49 DCM 入力または出力クロック信号への仮想グランド ピンの使用

IBUFG

OBUF

OBUF

To DCMCLKIN Input

Sensitive DCMClock Input

FPGAldquoVirtualrdquoground pin

Direct connectionto PCB groundplane

GND

GND

x462_49_061903

図 50 電圧降下を回避するための VCCAUX 考察

VCCAUXSupply(at FPGA)

dV lt 10 mV

dt lt 1 mS

Keep VCCAUX noiseenvelope to lt 200 mVpeak-to-peak

Avoid sudden changes fromone DC level to anotherKeep dVdt lt 10mVmS x462_50_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 67

R

ただし FACTORY_JF の設定値を大き くするこ とによって DCM では遅延ラインが頻繁に更新されジッ タがわずかに増加する (~30 ps) 可能性もあるため FACTORY_JF のデフォルト設定は最大値ではあ り ません 電源供給が不安定の場合には 発生した位相エラーが増加したジッタよ り大きい場合があり この場合には FACTORY_JF の設定値を大き くするこ とによって デザインのパフォーマンスを向上できます

その他 ビッ トス ト リーム生成の設定

DCM では 次の 2 つのビッ ト ス ト リーム生成 (BitGen) オプシ ョ ンがあ り ます

bull -g lck_cycle このオプシ ョ ンを使用する場合インスタンシエート された DCM で LOCKED 出力がアサート されるまで FPGA のコンフ ィギュレーシ ョ ン スタート アップ シーケンスを遅らせるこ とができます

bull -g DCMShutdown このオプシ ョ ンを使用する場合JTAG ポート を使用した部分再コンフ ィギュレーシ ョ ン または全体の再コンフ ィギュレーシ ョ ンを実行中に コンフ ィギュレーシ ョ ン ロジックに SHUTDOWN コマンドがロード される と DCM ロジッ クがリセッ ト されます

Project Navigator でのビッ トス ト リーム生成オプシ ョ ン

ISE 52i Project Navigator を使用する場合は 図 51 に示すよ うに [Processes for Source] ウ ィンド ウで [Generate Programming File] を右ク リ ッ ク し [Properties] を選択するこ とによってビッ ト ス トリーム生成オプシ ョ ンを設定します

詳細は 「BitGen スイ ッチおよびオプシ ョ ン」 を参照してください

コマンド ライン またはスクリプ ト を使用したビッ トス ト リーム生成オプシ ョ ン

設定可能なオプシ ョ ンを表示するためには 次のコマンドを入力します

bitgen -help spartan3

DCM LOCKED 出力とコンフ ィギュレーシ ョ ン ロジックの設定

DCM の STARTUP_WAIT 属性を使用するこ とによってDCM で LOCKED 出力がアサート されるまで FPGA で DONE 信号がアサート されるを遅らせFPGA のコンフ ィギュレーシ ョ ン スタート アップロジッ クを待たせるこ とができます ただし このためには設計段階で次の二つの設定を行う必要があり ます まず ロ ッ ク状態になってからコンフ ィギュレーシ ョ ンを完了する必要がある各 DCM に対するSTARTUP_WAIT 属性を TRUE に設定します 次に各信号がスタート アップの 6 ク ロ ッ ク サイクルで 図 52 に示すよ うに動作するよ うにビッ ト ス ト リーム生成オプシ ョ ンを変更します デバイスがコンフ ィギュレーシ ョ ン スタート アップ シーケンスを完了するためにはDCM が LOCKED をアサート後に十分なコンフ ィギュレーシ ョ ン ク ロ ッ ク サイ クルが必要です

図 51 Project Navigator でのビッ トス ト リーム生成 (BitGen) オプシ ョ ン

Processes for Current Source

Generate Programming File

Programming File Generation Report

RunRerunRerun AllStopOpen without Updating

Properties

x462_51_061903

68 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他R

A FPGA 内部のグローバル ト ラ イ ステート信号 (GTS_cycle) を開放し すべての IO 信号をイネーブルにします

B GTS_cycle 後に DCM で LOCKED がアサート されるまでスタート アップ ロジッ クが待機するよにサイクルを設定します DCM では クロ ッ ク信号でロ ッ ク状態になる前に ク ロ ッ クおよび可能ならばフ ィードバッ ク信号のよ うな外部入力が必要です

C DCM がロ ッ ク状態になった後 FPGA の内部グローバル書き込みイネーブル (GWE_cycle) 信号をアサート します

D 最後に 内部の DONE 信号をアサート します

図 53 に Project Navigator を使用したオプシ ョ ン設定を示します

スタート アップ位相タイ ミ ングおよび GWE_cycle と DONE_cycle のタイ ミ ングには柔軟性があ り ますがDCM で STARTUP_WAIT 属性を使用する場合は必ず LCK_cycle の前に GTS_cycle がなければなり ません シーケンスがこのよ うになっていない場合にはDCM がロッ クせずコンフ ィギュレーシ ョ ンが完了しません

図 52 DCM LOCKED 出力とスタートアップ ロジックの相互関係

0 1 2 3 4 5 6

DONE_cycle

Start-up CLK

GTS_cycle

GWE_cycle

LCK_cycle

Start-up Cycles

A

B

C

D

x462_52_062403

図 53 BitGen オプシ ョ ン

Process Properties

Startup options

Value

CCLK

6

3

5

4

Default (NoWait)

General Options Configuration Options Readback Options

Property Name

FPGA Startup Clock

Enable Internal Done Pipe

Done (Output Events)

Enable Outputs (Output Events)Release Write Enable (Output Events)Release DLL (Output Events)

Match Cycle (Output Events)

Drive Done Pin High

OK Cancel Default Help

Optionally set GWE_cycle to follow GTS_cycleensuring DCM(s) reset afterIOs activate

LCK_cycle indicates cyclewhere start-up logic waitsfor DCM(s) to assertLOCKED

Done_cycle after LCK_cycle GTS_cycle must occur

before LCK_cycle to enableIO pins

[Startup options]

[OK] x462_53_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 69

R

JTAG を使用した部分再コンフ ィギュレーシ ョ ンまたは全体の再コンフ ィギュレーシ ョ ン中の DCM リセッ ト

も う 1 つのビッ ト ス ト リーム オプシ ョ ンと して SelectMAP を使用した部分再コンフ ィギュレーシ ョン中 または JTAG ポート を使用した全体および部分再コンフ ィギュレーシ ョ ン中に FPGA にあるすべての DCM を リセッ トできます このオプシ ョ ンを使用する場合 SHUTDOWN コマンド シーケンス中に AGHIGH コンフ ィギュレーシ ョ ン コマンドが発行される とDCM がリセッ ト されます JTAGを使用して再コンフ ィ ギュレーシ ョ ンを行う場合には 必ず DCM を リ セッ トする必要があ り ますProject Navigator でビッ ト ス ト リーム生成オプシ ョ ンを変更するためには (「Project Navigator でのビット ス ト リーム生成オプシ ョ ン」 を参照) 図 54 に示すよ うに Configuration options タブをク リ ッ クし [Reset DCM if SHUTDOWN amp AGHIGH performed] オプシ ョ ンのチェッ ク ボッ クスをオンにして ください

一時的な CLKIN の停止厳密なアナログ測定を行っている間のシステム全体のノ イズを削減するため FPGA アプリ ケーシ ョ ンのその他の部分に影響を与えるこ とな く 一時的に DCM へのクロ ッ ク入力を停止できます これが可能である理由の一部はDCM がすべてデジタルで安定して機能するシステムであるためです DCM では最初に入力クロ ッ クに対してロ ッ ク し次に LOCKED 出力をアサートする必要があ り ます DCM がリセッ ト しない場合には デスキュー回路にほとんど影響を与えずに CLKIN 入力クロ ッ クを一時的に停止できますが 次の条件を満たす必要があ り ます

bull デバイスが冷却するこ とによるタ ップ遅延の変化の影響を最小限にするために ク ロ ッ クの停止時

間は 100 ms 未満である必要があ り ます

bull ク ロ ッ クが Low である間に停止する必要があ り12 周期分の High から再開する必要があ り ます

上述の条件は理論的にはクロ ッ ク入力ジッタの仕様に違反しますがDCM の LOCKED 出力は Highを維持し ク ロ ッ クが再び動作する際にも High を維持しています したがって LOCKED が High であるこ とは必ずしも有効なクロ ッ クが使用可能であるこ とにはなり ません このため実際にはクロ ック入力ジッタの仕様に違反していますが これらの条件を満たす限り問題はあ り ません

CLKIN を停止する際にはDCM のデジタル遅延ラインにあるクロ ッ クが出力されるため 1 から 8 出力クロ ッ ク サイクルが生成されます 同様に CLKIN が再開する場合には 遅延ラインが満たされる

図 54 再コンフ ィギュレーシ ョ ン中に DCM をリセッ トするためのコンフ ィギュレーシ ョ ン オプシ ョ ン

Process Properties

Configuration options

ValuePull Up

Pull UpFloatPull UpPull Down0xFFFFFFFF

General Options Startup options Readback Options

Property NameConfiguration Pin DoneJTAG Pin TCKJTAG Pin TDIJTAG Pin TDOJTAG Pin TMSUnused IOBsUserID Code (8 Digit Hexadecimal)Reset DCM if SHUTDOWN amp AGHIGH performed

OK Cancel Default Help

Click Configuration options tab

Click OK when finished

Pull Up

Check to reset all the DCMsin the FPGA if the AGHIGHcommand issued duringSHUTDOWN sequence

x462_54_062103

70 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

参考資料R

までの 1 から 4 ク ロ ッ クサイ クル間は出力クロ ッ クが生成されません 通常 遅延ラインが満たされるためは 2 または 3 ク ロ ッ ク サイ クルが必要です

また 入力ク ロ ッ クを停止するこ とによって 位相シフ ト を行う こ とができます この位相シフ トは

DCM による制御を中断させるこ とな く 1 から 4 ク ロ ッ ク サイクル後のクロ ッ ク出力から影響を与えます

図 55 に CLKIN 入力クロ ッ クを一時的に停止する例を示します また この図には CLK2X ク ロ ッ ク出力への影響も示しています

参考資料 bull 『Spartan-3 データ シート 』 (モジュール 2) デジタル  ク ロ ッ ク  マネージャの特長および機能httpwwwxilinxcojpbvdocspublicationsds099-2pdf

bull 『Spartan-3 データ シート 』 (モジュール 3) タイ ミ ングおよびジッタ特性

httpwwwxilinxcojpbvdocspublicationsds099-3pdf

bull ザイ リ ンクス ISE 52i ライブラ リ ガイ ドDCM プリ ミ ティブhttptoolboxxilinxcomdocsanxilinx5pdfdocsliblibpdf

bull Architecture Wizard 録音版 Web セミナーhttpsupportxilinxcojpsupporttrainingjapan-home-pagehtm

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcojpxappxapp622pdf

bull 『開発システム リ ファレンス ガイ ド』 15 章 「BitGen」 ビッ ト ス ト リーム生成プログラムおよびオプシ ョ ン 335-367 ページhttptoolboxxilinxcomdocsanxilinx5pdfdocsdevdevpdf

図 55 CLKIN の一時的な停止

CLKIN

CLK2X

Clock input must bestopped in Low phase andfor no more than 100 ms

When restarted the clockinput must generate a fullHigh half-period

x462_55_062403

改訂履歴

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 71

R

改訂履歴 次の表に このアプリ ケーシ ョ ン ノートの改訂履歴を示します

日付 バージョ ン 履歴

20030709 10 初版リ リース

  • Spartan-3 FPGA におけるデジタル クロック
  • マネージャ (DCM) の使用
    • 概要
    • はじめに
    • 概要
    • DCM 位置および クロック分散 ネットワーク インターフェイス
    • DCM 機能の概要
      • 遅延ロック ループ (DLL)
      • デジタル周波数合成 (DFS)
      • 位相シフト (PS)
      • ステータス ロジック
        • DCM プリミティブ
          • シンボル
          • 接続ポート
          • 属性プロパティおよび制約
            • その他のザイリン クス FPGA ファ ミリとの互換性
            • DCM 使用のため のクロック条件
              • 入力クロック周波数範囲
              • 出力クロック周波数範囲
              • クロック入力およびクロック フィードバック入力の変動
                • LOCKED 出力
                • RST 入力
                • DCM Wizard
                  • DCM Wizard の起動
                    • Windows のスタート ボタンから起動
                    • Project Navigator から起動
                      • Wizard 選択
                      • [General Setup]
                      • アドバンスド オプション
                      • クロック バッファ
                      • クロック周波数合成
                      • HDL 出力の生成
                        • VHDL および Verilog のインス タンシエーション
                          • Project Navigator の言語テンプレート
                          • VHDL および Verilog リファレンス ファイル
                            • クロック スキュー の低減
                              • クロック スキューとは
                              • クロック スキュー パフォーマンス低下の原因
                              • スキューの削除
                              • 過去のクロック動作から将来のクロック動作を予測
                              • ターゲットのロック
                              • 安定した単調なクロック入力
                              • 確実なソースからのフィードバック
                              • 内部クロック信号からのスキュー削除
                              • 外部クロック信号からのスキュー削除
                                • コンフィギュレーション後の DCM リセット
                                • なぜリセットする必要があるのか
                                  • 遅延ロック ループとは
                                    • 遅延ロック ループ (DLL)
                                    • 位相ロック ループ (PLL)
                                    • インプリメンテーション
                                    • DLL と PLL
                                      • スキュー調整
                                        • システム同期
                                        • ソース同期
                                        • タイミングの比較
                                            • クロック調整
                                            • 位相シフト- ク ロック周期の分数 でクロックを遅延
                                              • 12 クロック周期位相シフト出力
                                                • 12 周期位相シフト出力によるデューティ サイクルのずれの削減
                                                • デュアル データ レート (DDR) クロックの例
                                                  • 14 位相シフト出力
                                                    • DLL 周波数モードによる出力の有効性
                                                    • 5050 デューティ サイクル調整オプション
                                                    • 4 つの位相遅延クロックエッジ位相パルス
                                                      • ファイン位相シフト
                                                      • 固定ファイン位相シフト
                                                        • 固定ファイン位相シフト範囲
                                                        • 最小位相シフト
                                                        • その他の考察点
                                                        • DCM Wizard
                                                          • 動的ファイン位相シフト
                                                            • 動作
                                                            • 動的ファイン位相シフト範囲
                                                            • 制御
                                                            • DCM Wizard
                                                            • アプリケーション例
                                                                • クロック逓倍 クロック分周 周波数合成
                                                                  • 周波数合成アプリケーション
                                                                  • 入力クロックおよび出力クロックの周波数条件
                                                                  • 2 逓倍クロック (CLK2XCLK2X180)
                                                                  • クロック分周 (CLKDV)
                                                                    • CLKDV クロック調整
                                                                    • CLKDV のジッタは周波数モードおよび属性値が整数か整数ではないかによって決定されます
                                                                    • DCM Wizard
                                                                      • 周波数合成回路 (CLKFXCLKFX180)
                                                                        • DCM Wizard
                                                                            • クロックのフォ ワードミラー リバッファ
                                                                            • クロック ジッタお よび位相ノイズ
                                                                              • クロック ジッタとは
                                                                              • クロック ジッタの原因
                                                                              • クロック ジッタ特性の理解
                                                                                • サイクル間ジッタ
                                                                                • 周期ジッタ
                                                                                • ユニット インターバル(UI)
                                                                                  • 総ジッタの計算
                                                                                    • DLL 出力ジッタへの入力ジッタの加算
                                                                                      • カスケード接続された DCM のジッタ計算
                                                                                        • 例 1 すべての DCM が DLL 出力を使用する場合
                                                                                        • 例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合
                                                                                        • カスケード接続した DCM を使用する場合の推奨デザイン
                                                                                          • システム パフォーマンスにおけるジッタの影響
                                                                                              • クロック ジッタを最小限にするための推奨デザイン
                                                                                                • 適切な電力分散システム設計
                                                                                                • 適切なプリント サーキット ボードの設計
                                                                                                • 同時スイッチ出力 (SSO) の推奨デザイン
                                                                                                • 仮想グランド ピンを DCM 入力および出力接続の近くに配置
                                                                                                • VCCAUX 考察
                                                                                                • FACTORY_JF 設定の修正
                                                                                                    • その他
                                                                                                      • ビットストリーム生成の設定
                                                                                                        • Project Navigator でのビットストリーム生成オプション
                                                                                                        • コマンド ラインまたはスクリプトを使用したビットストリーム生成オプション
                                                                                                        • DCM LOCKED 出力とコンフィギュレーション ロジックの設定
                                                                                                        • JTAG を使用した部分再コンフィギュレーションまたは全体の再コンフィギュレーション中の DCM リセット
                                                                                                          • 一時的な CLKIN の停止
                                                                                                            • 参考資料
                                                                                                            • 改訂履歴
Page 10: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々

10 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

LOCKED 出力 すべての DCM 機能は CLKIN の周波数にロッ ク しています CLKIN が指定された範囲内 ( 「DCM 使用のためのクロ ッ ク条件」 に記載) である場合に クロ ッ ク出力が有効です 「周波数合成回路 (CLKFX CLKFX180)」を参照してください

PSDONE 出力 動的位相シフ トが完了したこ とを示します 「動的ファイン位相シフ ト 」 を

参照してください

表 3 DCM 接続ポート (Continued)

ポート 方向 説明機能ユニッ ト

DLL PS DFS

0 DCM は CLKIN の周波数に対してロ ッ クする過程であ りDCM のクロ ッ ク出力は無効です

1 DCM は CLKIN の周波数に対してロ ッ ク しDCM のクロ ック出力は有効です

1 rarr 0 DCM のロ ッ ク状態が解除され DCM を リセッ トする必要があ り ます

0 位相シフ トが行われていない または実行中です

1 要求された位相シフ トは完了しています この出力が PSCLK の 1 サイクル間 High になった後次の位相シフ ト を実行できます

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 11

R

属性 プロパティ および制約

表 4 にデジタル ク ロ ッ ク マネージャの属性を示しますすべての属性は設計段階で設定されコンフ ィギュレーシ ョ ン中にプログラムされます 動的ファイン位相シフ ト以外では FPGA アプリ ケーシ ョ ンの実行中にこれらの設定を変更するこ とはできません 使用するデザイン入力ツールに合わせて lt属性gt=lt設定gtを使用し 属性を設定します

表 4 DCM 属性

属性 可能な設定および説明

DLL_FREQUENCY_MODE CLKIN 入力 PSCLK 入力 および遅延ロッ ク ループ (DLL) からの出力クロ ッ クの有効周波数範囲を指定します DLL ク ロ ッ ク出力には CLK0 CLK90 CLK180 CLK270CLK2X CLK2X180 CLKDV が含まれます

CLK_FEEDBACK フ ィードバッ ク ク ロ ッ クの周波数を指定します

DUTY_CYCLE_CORRECTION DLL からの出力である CLK0 CLK90 CLK180 および CLK270 に対する 50 デューティ サイ クル調整をイネーブルまたはディ スエーブルに設定します

CLKDV_DIVIDE CLKDV 出力の周波数を指定します 設定可能な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 です

CLKDV_DIVIDE が整数ではない場合 ロ ッ クするために必要な時間が長くなり 出力ジッ タが増加します

CLKFX_MULTIPLY CLKFX 出力および CLKFX180 出力の周波数を逓倍する場合の係数を指定します この値は CLKDV_DIVIDE 属性の値と と もに使用されます CLKFX_MULTIPLY に設定可能な範囲は整数値の 2 から 32 であ り デフォルトは 4 です

LOW デフォルトです DLL は低周波数モードで動作し DLL に関連したすべての出力が有効です ク ロ ッ ク入力およびクロ ッ ク出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DLL の指定範囲内にあ り ます

HIGH DLL は高周波数モードで動作します 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力 および 14 位相シフ ト出力 CLK90 と CLK270 は無効です CLKDV_DIVIDE 属性が整数以外の場合 CLKDV 出力のデューティ サイクルは 50 になり ません ク ロ ッ ク入力およびクロ ッ ク出力の周波数は『Spartan-3 データ シート 』 に記載されている高周波数 DLL の指定範囲内にあり ます

1X デフォルトであ り CLK0 フ ィードバッ クです周波数は CLKIN と同一です

2X CLK2X フ ィードバッ クであ り 周波数は CLKIN の 2 倍です

なし フ ィードバッ ク ク ロ ッ クはあ り ません CLKFX 出力または CLKFX180 出力のみを使用している場合に可能です

TRUE デフォルトであ り デューティ サイクルは 50 に調整されます

FALSE デューティ サイクル調整は行われません

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

12 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLKDV_DIVIDE CLKFX 出力および CLKFX180 出力の周波数を分周する場合の係数を指定します この値は CLKFX_MULTIPLY 属性の値と と もに使用されます設定可能な範囲は整数値の 1 から 32 であ り デフォルトは 1 です

PHASE_SHIFT この属性は CLKOUT_PHASE_SHIFT 属性が FIXED または VARIABLE に設定されている場合にのみ使用できます CLKIN とすべての DCM ク ロ ッ ク出力間の立ち上がりエッジにおけるスキューをコンフ ィギュレーシ ョ ンで定義し DCM ク ロ ッ ク出力を位相シフ ト させます

スキューまたは位相シフ ト値は整数で指定されます この整数値は 次の等式に示すよ うに

ク ロ ッ ク周期の分数で表され範囲は -255 から 255 になり ますデフォルト値は 0 であ り実際に設定可能な値は入力クロ ッ ク周波数によって異なり ます また TCLKIN gt FINE_SHIFT_RANGE の場合には 実際の範囲はよ り小さ くな り ますFINE_SHIFT_RANGE は遅延ラインにおけるすべてのタ ップの総遅延を示します 詳細は「ファ イン位相シフ ト 」 を参照してください

CLKOUT_PHASE_SHIFT 位相シフ ト モードを指定します PHASE_SHIFT 制約と共に使用し DCM のデジタル位相シフ ト (DPS) 機能をインプリ メン ト します また この設定は DLL および DFS からのすべてのクロ ッ ク出力に反映されます 詳細は 「ファ イン位相シフ ト 」 を参照してください

DESKEW_ADJUST FPGA ク ロ ッ ク入力ピンと DCM 出力クロ ッ ク間のクロ ッ ク遅延調整を制御します 「スキュー調整」 を参照してください

この設定を DCM ク ロ ッ ク出力の位相シフ トに使用しないでください 正確な位相シフ ト を行う場合にはCLKOUT_PHASE_SHIFT 制約または PHASE_SHIFT 制約を使用してください

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

なし デフォルトです CLKIN および CLKFB は同位相 (スキューなし ) であ り位相関係は変更できません PHASE_SHIFT = 0 の場合の FIXED 設定と同一です

FIXED 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定され アプ リ ケーシ ョ ンでは変更できません

VARIABLE 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定されますが 動的位相シフ ト制御信号 PSEN PSCLK PSINCDEC および PSDONE を使用してアプリ ケーシ ョ ンで変更可能です

SYSTEM_SYNCHRONOUS デフォルトであ り すべてのデバイスがシステム全体

に共通のクロ ッ ク ソースで動作します

SOURCE_SYNCHRONOUS データ ソースから クロ ッ クが入力されます ソース同期アプリ ケーシ ョ ンがその一例です

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 13

R

DFS_FREQUENCY_MODE DCM のデジタル周波数合成 (DFS) からのクロ ッ ク出力である CLKFX および CLKFX180 に有効な周波数範囲を指定します DLL ク ロ ッ ク出力が使用されている場合はDLL_FREQUENCY_MODE によって CLKIN 入力の周波数範囲がよ り制限されます

STARTUP_WAIT DCM の LOCKED 信号のアサート よ り先に FPGA コンフ ィギュレーシ ョ ンの DONE 信号を High にするかど うかを制御します

2 つ以上の DCM をコンフ ィギュレーシ ョ ンしている場合は すべての DCM がロ ッ クする必要があ り ます

CLKIN_DIVIDE_BY_2 CLKIN が DCM ブロ ッ クに入力される前に 周波数を 2 分周します アプリ ケーシ ョ ンによっては 入力クロ ッ クの周波数を適切な範囲内に低減できます

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

LOW デフォルトであ り DFS は低周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合 CLKIN 入力の周波数範囲はその出力によって変化します

HIGH DFS は高周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている高周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合CLKIN 入力の周波数範囲はその出力によって変化します

FALSE デフォルトであ り DCM がロ ッ ク状態になるのを待たずに DONE 信号がアサート されます

TRUE DCM がロ ッ ク状態になるまで DONE 信号は High になり ません ただし この STARTUP_WAIT は LOCKED 信号が High になるのを妨げるものではあり ません またFPGA のスタート アップ シーケンスのサイクルの始めに LCK (ロ ッ ク ) サイクルを挿入するよ うに修正する必要があ り ます ( 「ビッ ト ス ト リーム生成の設定」 を参照してください) 通常は DONE サイクルまたは GWE サイクルがその後に続きます

FALSE デフォルトであ り CLKIN は直接 DCM ブロ ッ クに入力されます

TRUE CLKIN が DCM に入力する前に その周波数を 2 分周され デューティ サイクルは約 50 に調整されます これは 高周波数のクロ ッ クを使用し DCM の入力クロ ッ クの周波数条件またはデューティ サイ クル条件を満たす場合に有効です また 周波数モードを決定する場合 または位相シフ ト範囲を算出する場合に クロ ッ ク周波数を 2 分周します

14 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他のザイリンクス FPGA ファ ミ リ との互換性R

その他のザイリンクス FPGA ファミ リ との互換性

Spartan-3 のデジタル ク ロ ッ ク マネージャ (DCM) は Virtextrade-II および Virtex-II Pro FPGA ファ ミ リで使用されている DCM とほぼ同様の機能を持ちますが Spartan-3 DCM は第三世代の DCM デザインであ り さ らに機能が向上しています 特に Virtex-II デバイス と比較する と Spartan-3 デバイスはVCCAUX 供給電源における ノ イズ耐性が改善されVirtex-IIPro ファ ミ リ よ り も位相シフ ト機能に柔軟性があ り ます 出力の周波数制限値はVirtex-II および Virtex-II Pro ファ ミ リの DCM の方が高くなっています

またSpartan-IIIIE と比較する と Spartan-3 DCM の遅延ロッ ク ループ (DLL) 機能は大幅に改善され Spartan-IIIIE DLL の機能をすべて備えているだけでなく 周波数合成および位相シフ ト機能が追加されました Spartan-3 の周波数合成では 最大 32 までの係数を使用して入力クロ ッ クを逓倍しますが Spartan-IIIIE DLL での周波数合成機能は 2 逓倍までです 同様に Spartan-3 DCM の分周機能はSpartan-II DLL よ り広範囲に対応しています

DCM 使用のためのクロック条件

DCM は その機能に最大限の柔軟性があるよ うに設計されていますが ク ロ ッ クの周波数と安定性周波数の変動 およびクロ ッ ク ジッタにいくつかの条件があ り ます

入力クロック周波数範囲

DCM のクロ ッ ク入力周波数は アプ リ ケーシ ョ ンにおける DLL ユニッ ト DFS ユニッ ト またはその両方によって決定されます

表 5 に デジタル周波数合成 (DFS) ユニッ トでの入力クロ ッ クCLKIN の周波数範囲を示します DFS ユニッ ト を単独で使用する場合の周波数範囲は DLL 入力ニッ ト よ り も広くな り ますが 両ユニッ ト を使用する場合には よ り厳しい周波数条件を DLL に適用する必要があ り ます 表には データ シートに記載されている仕様名および概算値の 1 つを示していますが実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

FACTORY_JF DCM の DLL ユニッ トでタ ップ設定を修正する頻度を制御します この設定は DLL エレメン トのジッ タ特性に影響を与え DLL_FREQUENCY_MODE 属性に基づいて自動的に指定されます

設計方法と して推奨された場合以外は デフォルト設定を変更しないでください (「FACTORY_JF 設定の修正」 を参照してください)

LOC 図 1 に示すよ うに DCM の物理的な配置位置を指定します

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

DLL_FREQUENCY_MODE FACTORY_JF

LOW 0xC080

HIGH 0xF0F0

DCM_X0Y0 DCM の左下

DCM_X1Y0 DCM の右下 (XC3S50 では設定不可)

DCM_X0Y1 DCM の左上

DCM_X1Y1 DCM の右上 (XC3S50 では設定不可)

DCM 使用のためのクロック条件

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 15

R

表 6 に遅延ロッ ク ループ (DLL) ユニッ トでの入力クロ ッ ク CLKIN の周波数範囲を示します DLLが単独で使用されている場合と DFS と と もに使用されている場合では 同一の周波数条件が適用されます 表には低周波数モードおよび高周波数モードの場合の DLL の周波数範囲を示しています この周波数モードはDLL_FREQUENCY_MODE 属性によって指定されます 表にはデータ シートに記載されている仕様名および概算値の 1 つを示していますが 実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

出力クロック周波数範囲

DCM の出力クロ ッ クに対しても周波数範囲が指定されています 詳細は 「入力クロ ッ クおよび出力クロ ッ クの周波数条件」 を参照して ください

クロック入力およびクロック フ ィードバック入力の変動「安定した単調なクロ ッ ク入力」 で説明するよ うに DCM では安定性があ り単調なクロ ッ ク入力を使用する必要があ り ます しかし DCM 機能の柔軟性を最大限に使用しよ う とする場合 CLKIN で発生するクロ ッ ク ジッタおよび CLKIN 入力と CLKFB 入力の変動をある程度まで許容しなければなり ません

CLKIN 入力におけるジッタには 2 つのタイプがあ り ます 1 つはサイ クル間ジッタであ り このジッタは CLKIN 入力周期があるサイ クルから次のサイ クル間でどの程度の変化を許容できるかを示します 表 7 にデータ シートに記載されている仕様名および概算値を含むサイクル間ジッタの最大許容範囲を示します

表 5 デジタル周波数合成 (DFS) ユニッ トのクロック入力周波数範囲

機能 最小周波数 最大周波数

デジタル周波数合成 (DFS) CLKIN_FREQ_FX_MIN ~ 100 MHz

CLKIN_FREQ_FX_MAX ~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 6 遅延ロック ループ ユニッ トのクロック入力周波数範囲

機能

DLL 周波数モード属性 (DLL_FREQUENCY_MODE)

= LOW = HIGH

最小周波数 最大周波数 最小周波数 最大周波数

遅延ロ ッ ク ループ (DLL)

CLKIN_FREQ_DLL_LF_MIN

~ 24 MHz

CLKIN_FREQ_DLL_LF_MAX

~ 180 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 48 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 7 サイクル間ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_CYC_JITT_FX_LF~ plusmn300 ps

CLKIN_CYC_JITT_FX_HF~ plusmn150 ps

遅延ロッ ク ループ (DLL) CLKIN_CYC_JITT_DLL_LF~ plusmn300 ps

CLKIN_CYC_JITT_DLL_HF~ plusmn150 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

16 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

LOCKED 出力R

も う 1 つのジッタは 周期ジッタ と呼ばれ クロ ッ ク周期間の最大変動を示します サイクル間ジッタがあるサイクルと次のサイクルの差を示すのに対し 周期ジッタはクロ ッ ク周期全体での変化範囲を示

します 表 8 にデータ シートに記載されている仕様名および概算値を含む周期ジッタの最大許容範囲を示します

DCM の安定性に影響を与える別の要素は DLL で使用される ク ロ ッ ク フ ィードバッ ク パスですフ ィードバッ ク パス遅延の変動は 表 9 に示す範囲内でなければな り ません ただし グローバル クロ ッ ク ラ インに接続される場合はチップ上の変動が最小になるため こ こに示した範囲制限は外部フ ィードバッ ク パスにのみ適用されます

LOCKED 出力 DCM の LOCKED 出力は すべての DCM 機能が CLKIN 入力にロ ッ ク している こ と を示し ますLOCKED 信号がアサート される場合にはFPGA アプリ ケーシ ョ ン内で出力クロ ッ クを使用できます

図 5 に LOCKED 出力信号の動作を示しますLOCKED 出力は FPGA のコンフ ィギュレーシ ョ ン終了直後に Low になり RST 入力がアサート されている場合は常に Low です

コンフ ィギュレーシ ョ ン後 DCM は CLKIN 信号の有効無効に関わらず 常にロ ッ ク状態になろ う とします入力クロ ッ クが安定していない場合にはCLKIN 入力が安定するまでFPGA 回路 で RST 入力をアサートする必要があ り ますDLL では CLKIN 入力および CLKFB 入力の両方を使用し これらの立ち上がりエッジが同位相である時に完全にロ ッ ク状態であるこ とを確認しますDFS ではCLKINを使用してク ロ ッ クの周波数が有効であるかを確認します また DCM がロ ッ ク状態になるために数千クロ ッ ク サイクルのサンプルが必要となる場合があ り ます

DCM の CLKIN に対するロッ クが完了する とLOCKED 出力が High にアサート されDCM のクロ ック出力が有効となるため FPGA アプリ ケーシ ョ ン内でこれらの出力を使用できます 『Spartan-3 データ シート 』 の タイ ミ ングに関する章には ロ ッ クに必要な時間のワース ト ケースが記載されています通常 クロ ッ ク周波数が高いほどDLL 出力は短時間でロッ ク状態になり ます またDFS 出力がロックするためには非常に長い時間が必要とな り ます この時間は 逓倍または分周の係数によって変化し

ますが これらの係数が小さいほど時間は短縮します

システム ク ロ ッ クが安定してから FPGA のコンフ ィギュレーシ ョ ンを完了させるために オプシ ョ ンと して DCM がロ ッ ク状態になるまでコンフ ィギュレーシ ョ ンの完了を遅らせるこ とができます この機能は STARTUP_WAIT 属性で制御します

LOCKED が High になる前の DCM ク ロ ッ ク出力信号の動作は保証していません LOCKED が Highになる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な波形が含まれている場合があ ります

表 8 周期ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_PER_JITT_FX_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_FX_HF~ plusmn1000 ps (plusmn1 ns)

遅延ロッ ク ループ (DLL) CLKIN_PER_JITT_DLL_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_DLL_HF~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 9 外部フ ィードバック パス遅延範囲

解説 指定範囲

チップ外にある CLKFB フ ィードバッ ク パス遅延の最大許容範囲 CLKFB_DELAY_VAR_EXT ~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

RST 入力

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 17

R

CLKIN 入力の周波数が指定範囲内である場合DCM は内部遅延のタップを調整し ロ ッ ク状態を維持しますが その制限を大幅に満たしていない場合には ロ ッ ク状態が解除され LOCKED 出力が Lowになり ます

一度 DCM のロ ッ ク状態が解除される と 自動的に再びロッ ク状態に戻るこ とはあ り ません ロ ッ ク状態が解除された場合つま り LOCKED が High から Low となった場合にはFPGA アプリ ケーシ ョ ンでは RST 入力を使用して DCM を リセッ トするなどの適切な方法を使用して 再びロ ッ ク状態にする必要があ り ます

RST 入力 非同期の RST 入力は DCM ロジッ クを リ セッ ト してコンフ ィギュレーシ ョ ン後の設定に戻しますRST ピンはFPGA を再コンフ ィギュレーシ ョ ンする場合または許容範囲を超えている入力周波数を変更する場合に使用して ください このピンはアクティブ High であ り ダイナミ ッ ク信号またはグランドに接続する必要があ り ます また RST 入力は最低 2ns 間アサート しなければなり ません

コンフ ィギュレーシ ョ ン後に 入力ク ロ ッ ク周波数が安定していない場合 ク ロ ッ クが安定するまで

RST をアサー ト して ください また 外部フ ィードバッ クを使用している場合は コンフ ィギュレーシ ョ ン直後に DCM を リセッ ト します31ページの図 20 に SRL16 シフ ト レジスタ プリ ミ ティブを使用した リセッ ト方法の例を示します

LOCKED 周波数が High から Low になる場合のよ うに DCM のロ ッ ク状態が解除される と FPGAアプリ ケーシ ョ ンでは RST をアサート しDCM に入力クロ ッ ク周波数に対して再ロ ッ ク させる必要があ り ます

図 5 LOCKED 出力の機能的な動作

LOCKED HIGH

FPGA RST

Y

N

Y

N

FPGA

LOCKED LOW

CLKIN

LOCKED LOW

RST

x462_05_062103

CLKIN

RST

RST

18 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

DCM の LOCKED 出力が High の場合 RST がアサート される と この LOCKED 出力は 4 ク ロ ッ クサイ クル以内に Low になり ます このため リセッ ト後は DCM を再びロ ッ ク状態にさせます

また RST をアサートするこ とによって DCM の遅延タップ位置がゼロに戻り このタ ップ位置を変更するこ とによってDCM のクロ ッ ク出力ピンでグ リ ッチが発生する可能性があ り ます 同様にRSTはクロ ッ ク出力のデューティ サイクルにも影響を与えます

さ らに RST がアサート される と現在の可変位相シフ ト値は PHASE_SHIFT 属性で指定された値に戻り ます

DCM Wizard DCM を使用するアプリ ケーシ ョ ンを容易にするために ザイ リ ンクス ISE には 順を追って DCM を設定できるソフ ト ウェア Wizard が含まれています 図 6 に示すよ うに DCM Wizard を使用するこ とによってVHDL 構文または Verilog 構文で DCM をインスタンシエートするベンダ固有のロジッ ク合成ファイルを生成できます また DCM Wizard では特定のインプリ メンテーシ ョ ン用にユーザー制約ファイル (UCF) を生成できますさ らにすべてのユーザー仕様はXilinx Architecture Wizard (XAW)設定ファイルに保存されます

DCM Wizard の起動DCM Wizard を起動するためにはWindows のスタート ボタンから起動するまたはザイ リ ンクス ISEProject Navigator ソフ ト ウェアから起動する という 2 つの方法があ り ます

Windows のスタート ボタンから起動

DCM Wizard を Windows スタート ボタンから起動する場合は[スタート ] rarr [すべてのプログラム] rarr[Xilinx ISE 5] rarr [アクセサリ ] rarr [Architecture Wizard] をク リ ッ ク します 図 7 に設定ウ ィンド ウを示します

bull DCM のオプシ ョ ン設定を保存する Xilinx Architecture Wizard (xaw) ファ イル名を入力します

bull こ こで [Browse] ボタンをク リ ッ ク して xaw ファ イルを選択するこ と も可能です

bull 出力ファイルのロジッ ク合成言語を VHDL または Verilog から選択します

bull ロジッ ク合成ツールを選択します DCM Wizard では 指定した合成ツールに応じて ベンダ固有の出力ファイルが生成されます

bull ターゲッ ト デバイスに Spartan-3 を選択します

図 6 DCM Wizard の DCM 設定用グラフ ィ カル インターフェイス

DCM Wizard

User contraintsfile (UCF)

Vendor-specificVHDL or Verilog

Xilinx ArchitectureWizard (XAW)

settings file

Graphically configure aSpartan-3 Digital ClockManager (DCM)

x462_06_061803

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 19

R

Project Navigator から起動

Project Navigator のメニュー バーから または [Sources in Project] ウ ィンド ウから DCM Wizard を起動できます メニュー バーで [Project] rarr [New Source] を選択するか [Sources in Project] ウ ィンドウで右ク リ ッ ク し [New Source] を選択してください

図 8 に示すよ う に リ ス ト か ら [Architecture Wizard] を選択し ます Xilinx Architecture Wizard(xaw) ファ イル名を入力し そのファイルを保存するディ レク ト リ を選択した後 [Next] をク リ ッ クします

図 7 Architecture Wizard の設定

図 8 Project Navigator での Architecture Wizard 設定

Xilinx Architecture Wizard Setup

My_Spartan-3 Browse

XAW File

Output File Type

VHDL Verilog

XST

Synthesis Tool

XC3S1000-FT256-4 Select

OK Cancel

Part

DCM

Spartan-3

[OK]

x462_07_061803

New

User DocumentVHDL ModuleCoreGen IPSchematicVHDL LibraryVHDL PackageVHDL Test BenchTest Bench WaveformBMM FileMEM FileImplementation Constraints FileArchitecture WizardState Diagram

My_Spartan-3

F ile Name

MyDirectory

Lo cation

Add to Project

lt Back Next gt Cancel Help

DCM

[Next]

Architecture Wizard

x462_08_061803

20 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

Wizard 選択前述した手順はすべての ISE Architecture Wizard に共通ですが Spartan-3 FPGA は図 9 に示す DCMWizard をサポート します こ こで [OK] をク リ ッ ク し 次に進みます

[General Setup] 図 10 に示すよ うに ほとんどのオプシ ョ ンは DCM Wizard の [General Setup] ダイアログ ボッ クスで設定します 楕円の枠内には その設定に対応する DCM プリ ミ ティブ属性名を示します

bull DCM のインスタンス名を入力します このインスタンス名は Verilog または VHDL 出力ファイル内で使用されます

bull 最終的なアプリ ケーシ ョ ンにおける出力および機能を選択するためには 必要な DCM ク ロ ッ ク出力のチェッ ク ボッ クスをオンにします チェッ ク ボッ クスをオンにした出力に対しては それに関連したオプシ ョ ンの設定が可能になり ます

bull CLKIN ク ロ ッ ク入力の周波数を入力します 周波数を MHz で指定するかまたはクロ ッ ク周期をns で指定して ください この値によって DCM の DLL_FREQUENCY_MODE 属性が設定されます

bull CLKIN ソースが FPGA の内部であるか外部であるかを指定します[External] を選択した場合DCM Wizard は自動的にグ ローバル バッ フ ァ入力 (IBUFG) プ リ ミ テ ィ ブを挿入し ます[Internal] を選択した場合は ソース信号は HDL ソース ファ イル内の ト ップ レベル入力となり ます

bull CLKDV 出力をオンにした場合は クロ ッ ク分周回路の [Divide by Value] 値を指定します この値によって DCM の CLKDV_DIVIDE 属性が設定されます

bull DCM へのフ ィードバッ ク パスを指定します CLKFX 出力または CLKFX180 出力のみを使用する場合は [None] を選択します これらの出力を使用しない場合は フ ィードバッ クが必要ですFPGA 内部からのフ ィードバッ クを使用する場合は [Internal] を選択し外部からのフ ィードバック ループを使用する場合は [External] を選択します さ らに DCM フ ィードバッ クのソースをCLK0 (1X) または CLK2X (2X) から選択します この選択によってDCM の CLK_FEEDBACK属性が設定されます

図 9 Spartan-3 FPGA でのみ選択可能な DCM Wizard

Xilinx Architecture Wizard Selection

DCM Wizard

OK Cancel

Select Wizard

Spartan-3 DCM Wizard [OK]

x462_09_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 21

R

bull すべての DCM 出力における位相シフ トの有無を指定します デフォルト設定は位相シフ ト なし (None) です 位相シフ トが必要な場合は 位相シフ ト値と して [Fixed] または [Variable] を選択します [Variable] を選択するこ とによって 動的位相シフ ト制御 PSEN PSINCDECPSCLK および PSDONE が使用可能となり DCM の CLKOUT_PHASE_SHIFT 属性が指定されます Fixed モードおよび Variable モードのいずれを選択する場合でも 固定位相シフ ト値あるいは動的位相シフ トの初期値を決定する [Phase Shift Value] を指定します この値によってDCM の PHASE_SHIFT 属性が設定されます

bull アドバンス ド オプシ ョ ン ウ ィンド ウを開く場合は [Advanced] ボタンをク リ ッ ク します

bull 設定の完了後 [Next] をク リ ッ ク し ク ロ ッ ク バッファ ダイアログ ボッ クスに進みます

アドバンスド オプシ ョ ン図 11 に示すアドバンス ド オプシ ョ ン ウ ィンド ウで さ らに詳細な DCM オプシ ョ ンを設定できます

bull デフォルトではDCM は FPGA のコンフ ィギュレーシ ョ ンに対して影響を与えませんが [Yes] をク リ ッ ク した場合は DCM が LOCKED 出力をアサートするまで FPGA コンフ ィギュレーシ ョンで DONE 信号のアサート を遅らせるこ とができます この設定は DCM の STARTUP_WAIT属性で定義します このよ うに [Yes] を選択した場合は ビッ ト ス ト リーム生成オプシ ョ ンの追加

図 10 [General Setup] ダイアログ ボックスでの DCM オプシ ョ ン設定

Xilinx DCM Wizard - General Setup

MY_DCMDCM Instance Name

Input Clock Frequency

MHz ns 2

Phase Shift Value

30

Advanced

Source

CLK0

CLK90

CLK180

CLK270

CLKDV

CLK2X

CLK2X180

CLKFX

CLKFX180

LOCKED

STATUS

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDECPSCLK

CLKIN SourceInternal

External

Divide By Value

FeedbackInternal External None

Value 1X 2X

Duty Cycle Correction

Yes No

Phase ShiftNone Fixed Variable

23 More Info

lt B ack Next gt Cancel

DCM

CLKFX CLKFX180

CLKDV

MHz ns

Advanced

(BUFG)

[Yes] CLK0CLK90 CLK180 CLK270

50CLK0 (1X)CLK2X (2X)

[Next]

CLKDV

[Fixed] PSEN PSINCDECPSCLK

[Variable]

DLL_FREQUENCY_MODE

CLK_FEEDBACK

CLKDV_DIVIDE

CLKIN IBUFG

[External][Internal]

DUTY_CYCLE_CORRECTIONCLKOUT_PHASE_SHIFT

DCM

PHASE_SHIFT

x462_10_061803

22 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

変更が必要です この変更については 「DCM LOCKED 出力と コンフ ィギュレーシ ョ ン ロジッ クの設定」 で説明します

bull ある特定の DCM において CLKIN 入力の周波数が高すぎる場合には [Divide Input Click by 2]の [Yes] をク リ ッ ク し 入力周波数を半減させて ください これによって DCM ブロ ッ クに入力前のデューティ サイ クルは約 50 にな り ます この設定は DCM の CLK_FEEDBACK 属性で定義します

bull ソース同期のデータ転送が必要なアプリ ケーシ ョ ンでは [DCM Deskew Adjust] 値を [SOURCE_SYNCHRONOUS] に変更します SOURCE_SYNCHRONOUS または SYSTEM_SYNCHRONOUS 以外の値を使用する場合はザイ リ ンクスにお問い合わせください この設定は DCM の CLK_FEEDBACK 属性を定義します 「スキュー調整」 を参照して ください

bull [OK] をク リ ッ ク し 変更を適用して [General Setup] ウ ィンド ウに戻り ます

クロック バッファ次に DCM の各クロ ッ ク出力に対するクロ ッ ク バッファを定義します(図 12 参照) DCM Wizard のデフォルト設定では 自動的にすべての DCM ク ロ ッ ク出力にグローバル バッファ (BUFG) を使用しますが Spartan-3 デバイスでは 上辺および下辺のそれぞれにある 4 つのグローバル バッファを同一辺にある 2 つの DCM で共有しますXC3S50 では上辺または下辺に 1 つの DCM があ り オプシ ョ ンと して同じ辺にある 4 つのクロ ッ ク バッファすべてに接続できます

bull [Clock Buffer Settings] にある [Customize] をク リ ッ ク し DCM の各クロ ッ ク出力にクロ ッ クバッファの種類を指定します

bull DCM の各クロ ッ ク出力に対して リ ス トから [Clock Buffer] 出力タイプを選択します 表 10 に選択可能なクロ ッ ク バッファ オプシ ョ ンを示します

bull [Enabled Buffer] 出力タイプを使用する際にはバッファ イネーブル (CE) 入力の信号名を指定できますが 自動的に作成された信号名も使用できます

bull [Clock Mux] 出力タイプを使用する場合もセレク ト (S) 入力の信号名を指定できますが自動的に作成された信号名も使用できます

bull [Next] まはた [Finish] をク リ ッ ク し 設定を完了します [Next] ボタンが表示されるのは[General Setup]ダイアログ ウ ィ ン ド ウで CLKFX 出力または CLKFX180 出力を選択した場合のみです それ以外の場合は [Finish] をク リ ッ ク し HDL 出力を生成します ( 「HDL 出力の生成」を参照して ください)

図 11 DCM アドバンスド オプシ ョ ン設定

Xilinx DCM Wizard Advanced

Wait for DCM lock before DONE signal goes high

Yes No

Divide Input Clock by 2

Yes No

SYSTEM_SYNCHRONOUS

OK Cancel

DCM Deskew Adjust

CLKIN 12

FPGA

DONEDCM

DCM

[OK]

DCM

STARTUP_WAIT

CLKIN_DIVIDE_BY_2

DESKEW_ADJUST

x462_11_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 23

R

図 12 DCM Wizard を使用した DCM 出力のバッファ オプシ ョ ン設定

Xilinx DCM Wizard - Clock Buffers

This dialog sets up the clock buffers for all the DCM clock outputs selected in the GeneralSetup dialog

Clock Buffer Settings

U se Global Buffer (BUFG) for all selected DCM clock outputs

C ustomize (using grid below)

Reference the lsquoMore Inforsquo button for more information on customizing the global buffers

M ore Info

lt Back N ext gt Cancel

Clock Buffer Input I0 Input I1 Input CES

Global Buffer CLK0

Enabled Buffer CLK90 CLK90_ENABLE_IN

Clock Mux CLK2X180 CLKFX CLKFX_SELECT_IN

Lowskewline CLK180

Local Routing CLK270

CLK2XGlobal BufferGlobal Buffer

Enabled BufferClock MuxLowskewlineLocal RoutingNone

Output O

CLK0_OUT

CLK90_OUT

CLKFX_OUT

CLK180_OUT

CLK270_OUT

CLK2X_OUT

DCM Wizard

BUFG

DCM

DCMFPGA

FPGA

[Next]

x462_12_061703

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

グローバル バッファ

4 つあるグローバル バッファ (BUFG) の 1 つを同じ辺にある DCM に接続します

イネーブル バッファ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク バッファ (BUFGCE) と して設定しているバッファに接続します CE 入力は High の場合にバッファをイネーブルにしLow の場合は バッファ出力がゼロになり ます

BUFGI0 O

BUFGCEI0 O

CE

CE O

0 0

1 I0

24 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

クロック周波数合成

図 13 に示すク ロ ッ ク周波数合成ダイアログ ボッ ク スは [General Setup] ダイアログ ウ ィ ン ド ウでCLKFX 出力または CLKFX180 出力を選択した場合のみに表示されます

こ こでは必要な出力周波数 または逓倍および分周の係数を指定します [Valid Ranges for SelectedSpeed Grade] で周波数範囲 (CLKIN を ns で指定した場合は遅延) を指定します 周波数範囲にはDFS_FREQUENCY_MODE 属性で設定可能な両方の値が表示されます DCM で DLL に関係したクロ ッ ク出力を使用する場合 この範囲条件はよ り厳し くな り ます

bull [Use output frequency] のチェッ クをオンにし MHz または ns で周波数を入力します [Calculate] をク リ ッ クする と CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性の値が算出されます 入力した範囲から可能な逓倍値および分周値を算出できない場合は DCM Wizard で別の出力周波数値を入力するよ うに求めるエラー メ ッセージが表示されます ソ リ ューシ ョ ンがある場合は [Generated Output] に逓倍値 分周値 およびジッ タの値が表示されます ( 「ク ロ ック ジッタおよび位相ノ イズ」 を参照してください)

bull オプシ ョ ンと して[Use Multiply (M) and Divide (D) values] のチェッ クをオンにしこれらの値を入力でき ます [Calculate] を ク リ ッ ク し 出力周波数およびジ ッ タ を計算し ます 結果は[Generated Output] に表示されます

bull 最後に[Finish] をク リ ッ ク しHDL 出力を生成します (「HDL 出力の生成」を参照してください)

ク ロ ッ ク マルチプレクサ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク マルチプレクサ (BUFGMUX) として設定しているバッファに接続します S 入力はクロ ッ ク ソースを選択します

低スキュー ライン 低スキューのプログラマブル相互接続に接続します

ローカル配線 スキューが重要ではない場合において ローカル相互接続に接続します

なし DCM 出力をディ スエーブルにします

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

O

S

BUFGMUXI0

I1 S O

0 I0

1 I1

I0

I0

VHDL および Verilog のインスタンシエーシ ョ ン

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 25

R

HDL 出力の生成すべてのパラ メータを入力後 [Finish] をク リ ッ クする と 図 14 に示すよ うに DCM Wizard が自動的に VHDL または Verilog HDL 出力ファイルを生成します また ユーザー制約ファイル (UCF) も生成されます

VHDL および Verilog のインスタンシエーシ ョ ン

DCM Wizard を使用し VHDL または Verilog HDL 記述を作成する方法が最も容易ですが VHDLソースおよび Verilog ソースも利用できます

Project Navigator の言語テンプレート

ISE 52i およびそれ以降の Project Navigator では DCM の言語テンプレートが使用できます DCMテンプレート を選択する場合はProject Navigator のメニューで [Edit] rarr [Language Templates] をクリ ッ ク します 図 15 に示すテンプレー ト で Verilog フォルダまたは VHDL フォルダを展開表示し

図 13 デジタル周波数合成の逓倍値と分周値の設定 およびジッ タの算出

Xilinx DCM Wizard - Clock Frequency Synthesizer

Valid Ranges for Selected Speed Grade

Inputs for Jitter Calculations

U se output frequency

M Hz ns875

U se Multiply (M) and Divide (D) values

4M 1D

Input Clock Frequency 30 ns C alculate

lt Back Finish Cancel

More Info

Generated Output

MOutput

Frequency(MHz)

29 111

Period Jitter(pk-to-pk ns)

D

11 875

Period Jitter(unit interval)

010

DFSMode

Fin (MHz)

Low

High

24000 - 18]0000

50000 - 270000

24000 - 210000

210000 - 270000

Fout (MHz)

MHz ns[Calculate]

DCM Wizard (M)

(D)

(M)(D)

[Calculate]

[Calculate]

[Finish]

DCM

CLKFX_MULTIPLY CLKFX_DIVIDE

CLKFX_MULTIPLY CLKFX_DIVIDE

DFS_FREQUENCY_MODE

x462_13_061803

図 14 DCM Wizard での VHDL または Verilog HDL 出力ファイルの生成

Xilinx Architecture Wizard

Cancel

Generating HDL file

x462_14_061803

26 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

Component Instantiation フォルダの DCM フォルダを選択します 次にDCM フォルダにある DCMソース ファ イルを選択する と 隣接したウ ィンド ウにソース ファ イルが表示されます

このファイルは参照用と して または内容を新規ソース ファ イルに貼り付けて使用できます

VHDL および Verilog リファレンス ファイル

また この VHDL および Verilog のソース ファ イルは 次のザイ リ ンクス FTP サイ トからダウンロードできます

bull VHDL DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_vhdlzip

bull Verilog DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_verilogzip

クロック スキューの低減

スキューの低減はDCM の基本的な機能の 1 つです 50 MHz 以上の速度で動作するデザインではクロ ッ ク スキューの低減が重要であ り このク ロ ッ ク スキューの低減に関連する概念は DCM を使用したその他のアプリ ケーシ ョ ンにも応用できます

クロック スキューとはク ロ ッ ク スキューは本質的にすべての同期システムに存在します ク ロ ッ ク ソースによって生成されたクロ ッ ク エッジは システム内の異なる点に 異なる時間に到達します これは 1 つのデバイス内の場合も クロ ッ クで接続された異なるデバイスへのクロ ッ ク入力の場合もあ り ます こ こで発生する到達時間の差がクロ ッ ク スキューです

図 16 に 同期システムにおけるクロ ッ ク スキューの例を示します ク ロ ッ ク ソースによって ク ロ ック入力が FPGA へ駆動され FPGA 上の入力ピンに入る と 内部の低スキュー グローバル ク ロ ッ クネッ ト ワークを使用して分配され FPGA 内部のフ リ ップフロ ップに到達します ク ロ ッ ク パスにある各エレ メン トによって フ リ ップフロ ップにクロ ッ ク エッジが到達する時間に遅延が生じます その結果と して フ リ ップフロ ップにおけるク ロ ッ ク入力 (B) で遅延が発生する つま り ク ロ ッ ク ソース (A)と比較してスキューが発生します この例では ク ロ ッ ク スキュー つま り到達時間の差を ∆b と します

図 15 Project Navigator 言語テンプレートでの DCM デザインの選択

Language Templates

Verilog

Component Instantiation

Block RAM

CLK0

CLK0_FB

CLK2X

Templates Module BUFG_CLK0_SUBM Description Verilog Submodule DCM with CLK0 deskew-

module BUFG_CKL0_SUBM ( CLK_IN RST CLK1X LOCK

DCM

x462_15_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 27

R

同様に ク ロ ッ ク ソースは FPGA 内部で再びバッファを介し ボード上にある別のデバイスを駆動します この例では クロ ッ ク ソースは再び入力ピンを通って FPGA に入り グローバル ク ロ ッ ク ネット ワークで分配され FPGA の出力ピンを通って PCB 上のト レースで別のデバイスに接続されますそのため ク ロ ッ ク パスにおける総遅延が大き くな り その結果と して発生するスキュー ∆c も大き くな り ます

クロック スキュー パフォーマンス低下の原因ク ロ ッ ク スキューによって セッ ト アップ時間 および clock-to-output 遅延が増加し ク ロ ッ ク サイクル時間が長くなるため デザインのパフォーマンス全体が低下する可能性があ り ます また ク ロ ッ クスキューによって 長いホールド時間が必要となる場合があ り このホールド時間を確保できない場合

には 不安定な動作を引き起こす可能性があ り ます

スキューの削除

ク ロ ッ ク スキューを削除する方法はあるのでし ょ う か 幸いにも デジタル ク ロ ッ ク マネージャ(DCM) はこのよ うな機能を備えています 図 17 に図 16 と同様の例を示しますがこ こでは Spartan-3 デバイスを使用しています 2 つの DCM によって次のよ うにクロ ッ ク スキューが削除されます 1つの DCM がFPGA 内部でクロ ッ ク入力されたものからのスキューを削除しも う一方の DCM が ボード上で別のデバイスにクロ ッ ク入力する場合のスキューを削除します この結果 (A) (B) および (C)のすべての点で理想的なクロ ッ ク間のアライ メン ト を実現できます

実際には ク ロ ッ ク スキューはどのよ うに削除されるのでし ょ うか ク ロ ッ ク スキューの原因は クロ ッ ク パスにおける遅延である こ と を思い出して ください 図 17 では (B) のク ロ ッ クで ∆ 分のスキューがあ り (C) のクロ ッ クに ∆c 分のスキューがあ り ましたが ク ロ ッ クを (B) に ∆b 分早く到達させ (C) に ∆c 分早く到達させる方法がある場合には どのよ うになるでし ょ うか このよ う な場合にはすべてのクロ ッ クのエッジが一致するよ うに調整されセッ ト アップ時間および clock-to-output 遅延が減少するため システム全体のパフォーマンスが向上します

図 16 すべての同期システムに存在するクロック スキュー

OtherDevice on

Board

FPGA

c b

A

A

C

B

B

C

x462_16_062403

28 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

過去のクロック動作から将来のクロック動作を予測

Spartan-3 FPGA は非常に高度なデジタル ロジッ クを使用していますが 将来の動作を予測するこ とはできません だたし DCM は過去のクロ ッ ク動作を使用し 将来のク ロ ッ ク動作を予測するために役立てます システムに入力されるほとんどのクロ ッ クの周波数は 不変で単調であるため 入力クロ ックの周期 (T) もほぼ一定になり ます

マイナスの遅延を挿入し ク ロ ッ ク スキューの影響を無効にするこ とはできないため DCM は目的としている時間に到達しているよ うに見えるよ うにクロ ッ クを遅らせます これは どのよ うに行われるのでし ょ うか ク ロ ッ ク サイクルは一定の周期 (T) で繰り返されます 図 18 に示すよ うに (B) におけるクロ ッ クは ∆b 分進んでいるよ うにみえますが 実際には (T ndash ∆b) 分遅くなっています 同様に(C) におけるクロ ッ クは (T ndash ∆c) 分遅れています

図 17 Spartan-3 デザインにおけるクロック スキューの削減

図 18 一定周波数のクロックを遅延させる

OtherDevice on

Board

Spartan-3 FPGA

DC

M

Ideal Clock Alignment

b

cEarly Clocks Eliminate Skew

A

B

C

A

B

C

DC

M

A

B

C

x462_17_062403

c

b

Clock Period (T)

Delay=T- b

Delay=T- c

A

B

C

x462_18_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 29

R

入力クロ ッ ク信号は単調であるため ク ロ ッ ク周期 (T) は容易にわかり ますが ク ロ ッ ク スキュー遅延である ∆b および ∆c はど うでし ょ うか 異なる条件の元で複数のシステムにおける動作を詳細に検証するこ とによって これらの値を決定するこ と もできますが 実際には現実的である とは言えません

さ らに ∆b および∆c の値はデバイスによって異なり 同一のデバイス上でも温度または電圧によって変化します

Spartan-3 DCM では ∆b および ∆c をあらかじめ決定するのではなく フ ィードバッ ク ループによって遅延を確認する遅延ロッ ク ループ (DLL) を使用します (図 17 を参照してください) こ こで示している例では 2 つの DCM を使用して 1 つの DCM が内部信号のスキューを削減し も う一方の DCMが外部デバイスへの信号のスキューを削減します また 両方の DCM に各ク ロ ッ ク フ ィードバッ クループがあ り ます DLL は温度または電圧によって引き起こ されるわずかな変更にも適応します

ターゲッ トのロック

適切な遅延を決定し挿入するためにはDCM で数千クロ ッ ク サイ クルのサンプルが必要です DCMで適切な遅延が挿入される と LOCKED 出力信号がアサート されます

DCM で LOCKED 信号がアサート されるまでDCM ク ロ ッ ク出力は使用しないでください DCM が入力クロ ッ ク信号に対してロ ッ ク状態になるまでのク ロ ッ ク出力は無効です DCM がロ ッ ク状態になる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な要素が含まれている可能性があ り ます

アプリ ケーシ ョ ンではLOCKED 信号を出力クロ ッ クが有効であるこ とを確認するために使用しますLOCKED 信号をクロ ッ ク信号が使用可能な状態であるこ とを示すものと して理解してください

安定した単調なクロック入力

DCM が適切に動作するためには 安定した単調なクロ ッ ク入力が必要です そのよ う なク ロ ッ ク入力によって ク ロ ッ ク周期を予測でき出力クロ ッ クのタイ ミ ングを適切に調整できます DCM はいったんロ ッ ク状態になる と『Spartan-3 データ シート 』 で指定された値までのクロ ッ ク周期変動に対応できます 「DCM 使用のためのクロ ッ ク条件」 を参照して ください

入力ク ロ ッ ク周波数が変動して指定された範囲外と なった場合 DCM のロ ッ ク状態が解除されLOCKED 出力は Low になり ます ロ ッ ク状態が解除された場合 DCM を リセッ ト して再びロ ッ クする必要があ り ます 入力クロ ッ クが指定された制限を満たしている場合はLOCKED 出力が High である限り出力クロ ッ クは常に有効です しかし LOCKED 出力は High を維持していますが クロ ッ ク入力が指定された範囲外で CLKDV 出力または CLKFX 出力が無効となる場合があるため問題のないデザインを作成するためには 安定した単調なクロ ッ ク入力が重要です

DCM CLKIN 入力へのパスと して 4 つのグローバル バッファ入力 (IBUFG) のうち デバイス上で同一辺にあるバッファ入力の 1 つを使用する こ と を推奨します IBUFG パスを使用する こ とによってパッ ドからグローバル バッファを通って DCM に到達までの遅延がスキュー調整された出力から削除されます ただし 表 11 に示すその他のパスも使用できます また CLKIN 入力を駆動する信号は汎用相互接続を通る汎用入力ピン (IBUF プリ ミ ティブ) グローバル バッファ入力 (IBUFG) グローバル バッファ マルチプレクサ (BUFGMUX BUFGCE) からの入力と して使用できます 同様に LVDSク ロ ッ ク入力をクロ ッ ク入力と して使用できる場合もあ り ます スキュー調整ロジッ クはLVCMOS または LVTTL のよ うなシングル エンドのクロ ッ ク入力のために特性評価されています ただし 差動信号では IO タイ ミ ングによって わずかな位相エラーが発生する可能性があ り ます 特定の IO タイミ ングについては 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

30 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

確実なソースからのフ ィードバック

適切な遅延に対してロ ッ ク信号をアサートするために DCM は 入力クロ ッ クおよびクロ ッ ク分散遅延後にタ ップされるフ ィードバッ ク ク ロ ッ クの両方をモニタします ク ロ ッ ク フ ィードバッ ク パスにおける総遅延に制限はあ り ません DLL では 必要に応じて逓倍したク ロ ッ ク周期を使用する こ とによって出力クロ ッ クを遅らせます このよ うにDCM は内部遅延または外部遅延を相殺できますがクロ ッ ク フ ィードバッ クは適切なフ ィードバッ ク地点に接続する必要があ り ます

内部クロック信号からのスキュー削除

図 19 に示すよ うにFPGA 内部のスキューを削減する場合フ ィードバッ ク タ ップは FPGA 内部のエレ メン トに入力されるクロ ッ ク と同一のクロ ッ ク とな り ます 通常 フ ィードバッ ク ク ロ ッ クは デバイス上で DCM と同一辺にある ク ロ ッ ク バッファ (BUFG) またはグローバル ク ロ ッ ク マルチプレクサ (BUFGMUX または BUFGCE) に接続されている DCM からの CLK0 出力 (位相シフ ト なし ) ですまたは CLK0 出力ではなく DCM の CLK2K 出力 (位相シフ ト なし 2 逓倍) をフ ィードバッ ク と して使用できます

表 11 クロック入力ソース

CLKIN ソース 説明

グローバル バッファ入力を使用

グローバル バッファ入力 IBUFG は DCM への外部クロ ッ クのソースと して適切です パッ ドからグローバル バッファを通り CLKIN 入力までの遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

グローバル ク ロ ッ ク バッファ BUFG BUFGCE または BUFGMUX プリ ミ ティブを使用するグローバル ク ロ ッ ク バッファは内部生成された DCM へのクロ ッ ク ソース と して適切です グローバル バッファを通る際の遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

汎用 IO を使用 任意のユーザー IO IBUF は 外部クロ ッ クのソースと して使用できます パッ ドから DCM への遅延をあらかじめ決定するこ とはできません これは入力パスとなる可能性を持つパスが多数

存在するためであ り その結果 DCM は遅延を削除できません

内部ロジッ クから派生 FPGA 内部のロジッ ク も ク ロ ッ ク ソース と して使用できます しかしロジッ クから DCM への遅延をあらかじめ決定するこ とはできないため DCM は遅延を削除できません

I OIBUFG

BUFGI O

BUFGCEI O

CE

O

S

BUFGMUXI0

I1

I OIBUF

InternalLogic

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 31

R

外部クロック信号からのスキュー削除

外部クロ ッ クを使用した DCM フ ィードバッ クの設計は内部クロ ッ クの場合よ り も複雑です 図 20 に示すよ うに理想的にはフ ィードバッ ク ク ロ ッ クは PCB ト レースまたは外部クロ ッ クの再バッファの後のすべての外部クロ ッ クに入力される点から始ま り ます

LOCKED 信号は DCM がロ ッ ク状態になったこ と およびク ロ ッ ク信号が有効であるこ とを示します LOCKED 信号によって 外部デバイスが使用可能になり その反転バージ ョ ンはアクティブ Lowのチップ イネーブル信号に接続できます

コンフ ィギュレーシ ョ ン後の DCM リセッ ト

外部フ ィードバッ クを使用する場合 コンフ ィ ギュレーシ ョ ン直後に DCM の リ セッ ト をパルスしDCM のロ ッ ク状態を維持する必要があ り ます 図 20に示すよ うに0x000F で初期化された SRL16 から必要な リセッ ト パルス信号を出力できます 「RST 入力」 を参照して ください

なぜリセッ トする必要があるのか

なぜ このよ うに追加的な リセッ ト パルスが必要なのでし ょ うか 最適にロ ッ クするためには DCMをロ ッ ク状態にし その状態で安定させるために 外部フ ィードバッ クでコンフ ィギュレーシ ョ ンされ

た DCM で CLKIN および CLK0 または CLK2X のいずれかの信号を使用する必要があ り ます コンフ ィギュレーシ ョ ン実行中は FPGA の IO バッファがまだアクティブではないために 外部フ ィードバッ ク CLKFB を使用できません

コンフ ィギュレーシ ョ ンの終了時に デバイスがスター ト アップ シーケンスを開始する と DCM はキャプチャ プロセスを開始します この時点では FPGA のグローバル 3-ステート信号 (GTS) はアサー

図 19 内部クロック信号でのスキュー削減

I OBUFG

FPGA

(or BUFGMUX or BUFGCE)

( )

ldquoClock Goodrdquo

I OIBUFG

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)(

)

x462_19_061803

図 20 外部クロック信号でのスキュー削減

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)

I OOBUF

I OOBUF

FPGA

CLK

ENABLE

( )

RESETD

WCLK

A[30]

Q

INIT=000F

SRL16

I OIBUFG

I OIBUFG

x462_20_062203

32 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ト されているため すべての出力ピンは 3-ステート (ハイ -インピーダンス フローティング) 状態を維持しています このため CLKFB 信号のロジッ ク ステートはわかり ません

GTS のアサート状態の解除後CLKFB に信号が現れDCM が CLKFB 信号を取り込みますが リセット パルスがない場合 DCM が適切な時点でロ ッ ク しない可能性があ り DCM でジッタがわずかに増加し ク ロ ッ ク サイクル レイテンシも増加する可能性があ り ます

また リセッ ト パルスがない場合 PCB のシグナル インテグ リティの問題によって 3-ステート状態にある CLKFB 信号がボード上でほかの信号と ク ロス カップルする とい う問題が発生する可能性があり ます DCM では この無効なクロス カップルされた信号を CLKFB 信号と認識し ロ ッ クするためGTS 信号のアサートが解除され 適切な CLKFB 信号が現れたと きにロ ッ クできない場合があ り ます

遅延ロック ループとはク ロ ッ ク遅延を削除するための 2 つのタイプの回路

bull 遅延ロッ ク ループ (DLL)

bull 位相ロッ ク ループ (PLL)

DLL および PLL には クロ ッ ク分散遅延を削除する という機能以外に周波数合成 クロ ッ ク調整および位相シフ ト などの機能があ り ます

遅延ロック ループ (DLL)

図 21 に示すよ うに単純な形の DLL はタップ遅延ラインおよび制御ロジッ クで構成されます 遅延ラインは入力クロ ッ クCLKINに遅延を挿入したク ロ ッ クを生成し ク ロ ッ ク分散ネッ ト ワークでは そのクロ ッ クがすべての内部レジスタおよびクロ ッ ク フ ィードバッ ク CLKFB ピンに配線されます 一方制御ロジッ クは遅延ラインを調整するために常に入力クロ ッ クおよびフ ィードバック ク ロ ッ クをサンプルします 遅延ラインでは電圧制御遅延または不連続の遅延エレ メン トが使用されています 最適で安定したパフォーマンスを実現するために Spartan-3 DLL ではすべてのデジタル遅延ラインを使用します

DLL は入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クの立ち上がりエッジが調整されるまで それらのクロ ッ ク間に遅延を挿入し ク ロ ック周期から クロ ッ ク分散遅延分を差し引いた時間だけフ ィードバッ ク ク ロ ッ クを遅らせるこ とによって機能します DLL および PLLの専門的解説では フ ィードバッ ク ク ロ ッ クは 360deg 位相がずれたもの つま り同一の位相に再び現れるものと定義されています

入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クのエッジが調整される とDLL がロ ッ ク し これらの 2 つのクロ ッ ク間に認識できる差異はなくな り ます つま り DLL 出力クロ ッ クのクロ ッ ク分散ネッ ト ワークにおける遅延がなくな り ソース ク ロ ッ ク とそのロード間の遅延を効果的に削除されています

図 21 遅延ロック ループ (DLL) ブロック図

ClockDistributionNetwork

Control

VariableDelay Line

CLKOUT

CLKFB

CLKIN

x462_21_061903

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 33

R

スキュー調整

こ こでは主にスキューの削減方法およびクロ ッ ク ソースに対する内部クロ ッ ク と外部クロ ッ クの位相調整の方法について説明します 実際には DCM は DESKEW_ADJUST という属性を使用し 意図的にわずかなスキューを追加します DCM Wizard では アドバンス ド オプシ ョ ン ウ ィ ンド ウでこのDESKEW_ADJUST 属性を設定します

この属性には STEM_SYNCHRONOUS および SOURCE_SYNCHRONOUS という 2 つの基本的なアプリ ケーシ ョ ンがあ り ます 大多数のアプリ ケーシ ョ ンではSYSTEM_SYNCHRONOUS 設定を使用します 次に 各モードの目的を説明します

システム同期

図 23 に示すよ うに システム同期アプリ ケーシ ョ ンでは 1 つのデータ パスにあるすべてのデバイスが共通のクロ ッ ク ソースを使用します これが 従来の最も一般的なシステム構成です デフォルト設定である SYSTEM_SYNCHRONOUS オプシ ョ ンを選択する と データ キャプチャ時のホールド時間がゼロになるよ うに わずかなクロ ッ ク遅延が追加されます ホールド時間とは 基本的にベス ト ケースのデータ パスと ワース ト ケースのクロ ッ ク パス間の差です DCM のクロ ッ ク スキュー削減機能はクロ ッ クを進めるこ とによって動的にワース ト ケースのクロ ッ ク パスを短縮します しかし ク ロ ッ

位相ロック ループ (PLL)

PLL は DLL と同様の基本的な機能を持つよ うに設計されていますが異なるアーキテクチャを使用します 図 22 に示すよ うにPLLと DLL の根本的な違いは DLL が遅延ラインを使用するのに対して PLL では電圧制御オシレータを使用し CLKIN と同様のクロ ッ ク信号を生成します位相検出器およびフ ィルタで構成される制御ロジッ クは ク ロ ッ ク分散システムでの遅延を補う よ うにオシ

レータの周波数と位相を調整します PLL の制御ロジッ クは 入力ク ロ ッ ク と フ ィードバッ ク ク ロ ッ ク CLKFB を比較し 入力クロ ッ クの立ち上がりエッジがフ ィードバッ ク ク ロ ッ クの立ち上がりエッジと一致するよ うにオシレータのクロ ッ クを調整します その後 PLL はロッ ク状態になり ます

インプリ メンテーシ ョ ン

DLL および PLL 内部では アナログ回路またはデジタル回路のいずれかが使用され 各回路はぞれぞれに利点があ り ます 慎重な回路設計を行ったアナログ回路の場合 DLL または PLL ではよ り厳密にタイ ミ ングを調整でき 使用するシ リ コン エリ アが少なくなり ます

一方デジタル回路を使用した設計の場合 ノ イズ耐性が優れ消費電力が低く ジッ タのパフォーマンスよ り良いという利点があ り

ます また ク ロ ッ クを停止させるこ とができるため 電力管理が容易になり ます アナログ設計では 追加の電力供給が必要な場合があ りよ り正確に電源供給の制御を行う必要があるために新しい処理テク ノ ロジに移行する際に問題が発生する可能性があ り ます

DLL と PLL

アプリ ケーシ ョ ンで PLL または DLL を選択する場合は アーキテクチャの違いを理解するこ とが重要です PLL で使用されるオシレータは 本質的に不安定な状態であるため ク ロ ッ ク分散ネッ ト ワークの遅延を補う際に PLL のパフォーマンスが低下します 逆に常に安定している DLL アーキテクチャは遅延およびクロ ッ ク調整の機能の点では PLL よ り優れている一方で PLL はDLL より柔軟に新しいクロ ッ ク周波数の合成を行います

図 22 位相ロック ループ (PLL) ブロック図

ClockDistributionNetwork

Control

Voltage ControlledOscillator

CLKOUT

CLKFB

CLKIN

x462_22_061903

34 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ク パスを短縮するこ とによって ク ロ ッ クがデータの前に現れる場合には結果と してホールド時間が発生します SYSTEM_SYNCHRONOUS オプシ ョ ンを使用するこ とによってホールド時間がゼロになるために十分なスキューをクロ ッ ク パスに追加できる一方でclock-to-output 時間がわずかに増加します

ソース同期

SOURCE_SYNCHRONOUS モードは本来高速データ通信インターフェイスで使用される高度な設定です 図 24 に示すよ うに ソース同期アプリ ケーシ ョ ンではデータおよびクロ ッ クの両方が同一のクロ ッ ク ソースから派生します 送信デバイスは データおよびクロ ッ クを受信デバイスに送信し 受信デバイスはデータに対して最適なクロ ッ クが入力されるよ うにクロ ッ ク タイ ミ ングを調整します 高速デュアル データ レート (DDR) および LVDS 接続などがこのシステムの例です

SOURCE_SYNCHRONOUS 設定によって入力クロ ッ ク と DCM からのデスキュー出力クロ ッ ク間の位相をゼロにし 次に FPGA アプリ ケーシ ョ ンでは固定位相シフ ト モードまたは動的ファ イン位相シフ ト モードを使用してクロ ッ クのタイ ミ ングを調整します 次のアプリ ケーシ ョ ン ノートではソース同期デザインおよび動的位相調整について説明しています

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcomxappxapp622pdf

また 次のアプ リ ケーシ ョ ン ノート では システム レベルのタイ ミ ングについて詳細に解説しています このアプリ ケーシ ョ ン ノートはVirtex-II および Virtex-II Pro FPGA アーキテクチャについて説明するものですが ほとんどの概念を Spartan-3 FPGA に適用できます

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

タイ ミングの比較

図 25 にデュアル データ レート (DDR) アプリ ケーシ ョ ンで SYSTEM_SYNCHRONOUS 設定およびSOURCE_SYNCHRONOUS 設定を使用した場合のタイ ミ ング比較を示します DDR アプリ ケーシ ョンでは 各データ ラインに 2 つのデータ ビッ トが ク ロ ッ ク周期の前半および後半に各 1 つずつ現れます

図 23 共通のクロック ソースによってクロック入力されるシステム同期アプリケーシ ョ ン

図 24 データ ソースがデータ クロックを入力するソース同期アプリケーシ ョ ン

ClockSource

DATA_INDATA_OUT

x462_23_061903

ClockSource

DATA_INDATA_OUT

DATA_CLK

x462_24_061903

クロック調整

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 35

R

SYSTEM_SYNCHRONOUS モードではDCM のクロ ッ ク パスに適切なスキューが追加されホールド時間がゼロになり ます

これに対して SOURCE_SYNCHRONOUS モードでは DCM のクロ ッ ク パスにスキューは追加されませんが FPGA アプ リ ケーシ ョ ンでスキュー追加 または位相シフ ト が行われ ク ロ ッ クはデータウ ィンド ウにおいて理想的な位置で入力されます

クロック調整 ク ロ ッ ク調整とは 入力ク ロ ッ クのデューティ サイ クルが 50 以外の場合に 50 に調整する機能です 図 26 にHigh 時間が約 40 であ りLow 時間が約 60 (4060 デューティ サイクル) である入力ク ロ ッ クを ほぼ完全な 50 デューティ サイ クルを持つ入力クロ ッ クに調整する例を示します完全な 50 デューテ ィ サイ クル と な ら ない理由は CLKOUT_DUTY_CYCLE_DLL およびCLKOUT_DUTY_CYCLE_FX で指定されるデューティ サイ クルのずれが存在するためです これらの値は 『Spartan-3 データ シート 』 に記載されています デューティ サイクルのずれの概算値は 150ps未満です

クロ ッ クのデューティ サイクルが 50 であるこ とはVLDS またはデュアル データ レート (DDR) アプリ ケーシ ョ ンなどの高速通信インターフェイス ク ロ ッ ク転送アプリ ケーシ ョ ン またはクロ ッ ク ミラー アプリ ケーシ ョ ンにおいて不可欠な条件です 「デュアル データ レート (DDR) ク ロ ッ クの例」 を参照して ください

DCM では 自動的にほとんどのク ロ ッ ク出力のデューティ サイ クルが 50 に調整され それ以外の場合には動作条件または属性設定によって オプシ ョ ンと して調整されます 表 12 を参照して ください

図 25 デュアル データ レート (DDR) アプリケーシ ョ ンにおける SYSTEM_SYNCHRONOUS モードおよび SOURCE_SYNCHRONOUS モードのタイ ミング比較

SYSTEM_SYNCHRONOUS

DATA_IN

SOURCE_SYNCHRONOUS

SOURCE_SYNCHRONOUS+ Fixed or Dynamic Phase Shift

Data capture windowor data ldquoeyerdquo

x462_25_061903

図 26 DCM におけるデューテ ィ サイクル修正機能

CLKIN

ConditionedClock Output

50 50

40 60

x462_26_061903

36 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

14 位相シフ ト出力である CLK0 CLK90 CLK180 および CLK270 はDUTY_CYCLE_CORRECTION 属性を使用し ク ロ ッ ク調整を行う こ とができます デフォルトではDUTY_CYCLE_CORRECTION 属性は TRUE に設定され これらの出力は 50 デューティ サイクルに調整されます この属性を FALSE に設定する場合 クロ ッ ク調整は機能せず クロ ッ ク出力のデューティ サイクルは入力クロ ッ ク とほぼ同一になり ますが 完全に CLKIN のデューティ サイクルと一致するこ とは保証されていません

位相シフ ト - クロック周期の分数でクロックを遅延

また DCM ではクロ ッ ク周期の分数分だけ入力クロ ッ クを遅らせるこ とによって 位相をシフ ト させるこ とができます

DCM は 4 つの位相シフ ト タイプをサポート し各タイプを別々に使用するこ と またはほかの位相シフ ト タイプと組み合わせて使用するこ とができます 表 13 に 各クロ ッ ク出力での位相シフ ト機能を示します

1 ほとんどの 12 ク ロ ッ ク周期位相シフ ト出力では50 デューティ サイクル調整を行います 出力のペアの立ち上がりエッジは0degおよび 180deg位相シフ ト した位置またはクロ ッ ク周期の最初および 12 周期の位置にあ り ます

2 0deg(CLK0) 90deg(CLK90) 180deg(CLK180) および 270deg(CLK270) の 14 位相シフ ト出力ではオプシ ョ ンと して 50 デューティ サイ クル調整を行います

3 固定ファイン位相シフ トではすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

4 動的ファイン位相シフ トでは FPGA アプリ ケーシ ョ ン内部のすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

表 12 デューティ サイクルを 50 にするためのクロック出力調整

DCM クロック出力

50 デューティ サイクル出力

CLK0CLK90

DUTY_CYCLE_CORRECTION = TRUE

CLK180CLK270

CLK2XCLK2X180

CLKDV

CLKFXCLKFX180

常に

DLL_FREQUENCY_MODE 属性

LOW HIGH

DUTY_CYCLE_CORRECTION = TRUE 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に CLKDV_DIVIDE が整数値の場合

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 37

R

12 クロック周期位相シフ ト出力12 周期位相シフ ト出力では 位相シフ トのないク ロ ッ ク およびそのクロ ッ クを 12 周期シフ ト させた (180deg位相シフ ト ) ク ロ ッ クが出力されます 12 周期位相シフ ト出力は表 14 に示すよ うにペアで出力されます

表 13 クロック出力の位相シフ ト機能

クロック出力12 クロック周期

14 クロック周期

固定または動的

位相シフ ト

CLK0CLK90CLK180CLK270CLK2XCLK2X180CLKDVCLKFXCLKFX180

表 14 12 クロック周期位相シフ ト出力

出力ペア解説

位相シフ トなし 180deg位相シフ ト

CLK0 CLK180 周波数は CLKIN と同一です デフォルトで 50 デューティ サイクルに調整されDUTY_CYCLE_CORRECTION 属性に制御されます

CLK2X CLK2X180 2 逓倍クロ ッ ク (CLK2XCLK2X180) からの出力です周波数は CLKIN 周波数の 2 倍であ り デューティ サイ クルは常に 50 です

CLKFX CLKFX180 周波数合成回路 (CLKFX CLKFX180) からの出力です 出力周波数は周波数合成の属性によって決定されます デューティ サイ クルは常に 50 です

38 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

12 周期位相シフ ト出力は高速デュアル データ レート (DDR) デザインおよびクロ ッ ク ミ ラーなどのデューティ サイクルが重要となるデザインにとって理想的です 図 27 に示すよ うに12 周期位相シフト出力のペアの 1 つはクロ ッ ク周期の始めに立ち上がり も う 1 つはそのクロ ッ ク周期の半分の地点で正確に立ち上がり ます

12 周期位相シフ ト出力によるデューテ ィ サイクルのずれの削減

DCM のクロ ッ ク出力が 50 デューティ サイクルに調整された場合 180deg位相シフ ト ク ロ ッ クは位相シフ トのないクロ ッ クを反転させたよ うに見えます 低周波数アプリ ケーシ ョ ンでは 基本的にこれが成立します

しかし アプリ ケーシ ョ ンが非常に高い周波数で動作する場合は 各ト ランジスタの立ち上がり時間お

よび立ち下がり時間の差が原因となって発生するデューティ サイ クルのずれが FPGA 内部で問題となり ます つま り 始めはデューティ サイクルが 50 の場合でも ク ロ ッ ク サイクル間で常にクロ ッ クHigh と ク ロ ッ ク Low の間に差が生じます

デュアル データ レート (DDR) クロックの例

図 28 に DCM ク ロ ッ ク出力 CLKx が デュアル データ レート (DDR) 出力フ リ ップフロ ップの 2 つのクロ ッ クを駆動する例を示します DDR ク ロ ッ ク入力の 1 つはクロ ッ ク出力をそのまま使用しますが も う一方の入力は DDR フ リ ップフロ ップ内部でクロ ッ クを反転させます DCM からの CLKx 出力のデューティ サイクルは 50 ですが FPGA のクロ ッ ク ネッ ト ワークを伝搬する間にデューティサイ クルにずれが発生します こ こで示す例では このデューティ サイクルのずれによって ク ロ ッ クHigh 時間が短縮され ク ロ ッ ク Low 時間が長くな り ます その結果と してC1 ク ロ ッ ク入力はクロ ック周期の半分の時点よ り もわずかに前にト リガします 低周波数の場合 このずれは無視して問題あ りませんが 高性能の DDR ベースのシステムでは 正確なクロ ッ ク設計が必要です

図 27 12 周期位相シフ ト出力

180˚0˚

frac12T 1T

CLKx

CLKx180

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)

x462_27_061903

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 39

R

図 29 に 図 28 に若干の修正を加えた回路例を示します この例では DCM からの位相シフ ト していない出力および 180deg位相シフ ト した出力の両方が DDR 出力フ リ ップフ ロ ップに入力されますCLKx ク ロ ッ ク信号は ク ロ ッ ク周波数の開始時点で正確に DDR フ リ ップフロ ップの C0 入力を ト リガし CLKx180 ク ロ ッ ク信号はクロ ッ ク周波数の半分の時点で正確に C1 入力を ト リガします この方法を使用する場合には 追加のグローバル バッファおよびグローバル ク ロ ッ ク ラ インが必要になりますが 約 300 ps (この値は概算です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください) までのデューティ サイクルを削減できます

図 28 デュアル データ レート (DDR) 出力におけるデューティ サイクルのずれ

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx at Flip-Flop(with duty-cycle distortion)

Duty-cycle distortion

Factor in distortionwhen using a singleinverted clock

CLKx(50 duty cycle)

BUFGCLKx

DCM

CLKIN

x462_28_061903

40 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

表 15 に DDR 出力フ リ ップフロ ップおよび LVDS 出力を使用して測定したデューティ サイクルのずれの値を示します この出力タイプ以外では 立ち上がり時間および立ち下がり時間に差が生じるこ とによって さ らにずれが大き くなる可能性があ り ます このずれは IBIS を使用してシ ミ ュレーシ ョ ンを実行し 検証できます

14 位相シフ ト出力図 30 および表 17 に示すよ うに 14 位相シフ ト出力は CLKIN 入力を 14 周期分シフ ト させたものです 14 位相シフ ト出力には CLKFB 入力へ戻るフ ィードバッ ク パスが必要であるため CLK0 出力の位相は CLKIN 入力の立ち上がりエッジと一致するよ うに調整されます CLK90 出力は CLKIN 入力を90deg位相シフ ト させて生成したものであ り ほかの位相シフ ト出力も同様に生成されます

図 29 12 周期位相シフ ト出力を使用したデューテ ィ サイクルのずれの削減

CLKx at Flip-Flop(with duty-cycle distortion)

180 ˚Phase Shift

CLKx180 at Flip-Flop(with duty-cycle distortion)

CLKx(50 duty cycle)

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKIN

CLKx180

BUFG

BUFG

x462_29_061903

表 15 デューティ サイクルのずれのパラメータ

パラ メータ 説明 概算値

TDCD_CLK0 IO ブロ ッ クにある DDR エレ メン トに対して ク ロ ッ ク立ち下がりエッジでローカル反転したクロ ッ クを入力する場合のデューティ サイクルのずれです 図 28を参照してください

~400 ps

TDCD_CLK180 IO ブロ ッ クにある DDR エレ メン トに対して DCM CLKx180 をクロ ッ ク入力する場合のデューティ サイクルのずれです 図 29を参照してください

~60 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 41

R

DLL 周波数モードによる出力の有効性

14 位相シフ ト出力が有効であるかは DLL_FREQUENCY_MODE 属性で制御される DLL の周波数モードによって決定されます 表 16 に示すよ うに 低周波数モード (DLL_FREQUENCY_MODE=LOW) ではすべての 14 位相シフ ト出力が有効ですが高周波数モードでも有効な出力は CLK0 および CLK180 のみです

5050 デューティ サイクル調整オプシ ョ ン

オプシ ョ ン と して DUTY_CYCLE_CORRECT 属性を使用し 14 位相シフ ト出力を一括して 50デューテ ィ サイ クルに調整できます この属性が TRUE の場合 (デフォル ト ) 4 つの出力すべてのデューティ サイ クルが 50 にな り FALSE の場合は 各出力のデューティ サイ クルと CLKIN 入力のデューティ サイクルは一致しません 詳細は 「ク ロ ッ ク調整」 を参照してください

4 つの位相 遅延クロックエッジ 位相パルス

表 17 に示すよ うに 14 位相シフ ト出力は ぞれぞれ 1 つ前のパルスから 14 周期遅れた立ち上がりエッジで出力されます これらの出力は メモ リ インターフェイスおよびペリ フェラル制御などのアプリ ケーシ ョ ンにおけるタイ ミ ングを柔軟にします

また デューテ ィ サイ クル修正オプシ ョ ンがイネーブルの場合 (DUTY_CYCLE_CORRECTION =TRUE の場合) これらの出力を次のよ うに考えるこ とができますこれらの出力には 14 周期の間隔で

図 30 CLKIN 入力 の 14 周期位相シフ ト出力 (デューティ サイクル修正イネーブルの場合)

表 16 DLL 周波数モードによる 14 位相シフ ト出力の有効性

出力DLL_FREQUENCY_MODE

LOW HIGH

CLK0

CLK90

CLK180

CLK270

270˚180˚90˚0˚

frac14T frac12 T frac34T 1T

CLK0

CLK90

CLK180

CLK270

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)x462_30_061903

42 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

立ち下がりエッジがあ り ます (表 17 を参照) 同様に各出力には周期幅が同一である High パルス時間と Low パルス時間があるこ とになり たとえば 図 30 に示す CLK90 の High パルス部分は CLK0 クロ ッ ク周期の中央に位置しています

ファイン位相シフ ト

DCM では ファ イン位相シフ ト を使用するこ とによって ク ロ ッ ク スキューを制御するこ と もできます ファ イン位相調整はすべての DCM 出力に対して同時に機能します この位相調整にはDCM のDLL 機能ユニッ ト を使用するため CLKFB 入力を通るクロ ッ ク フ ィードバッ クが必要です

物理的には CLKIN と CLKFB の立ち上がりエッジ間の位相関係を調整するこ とによってシフ トが行われますが すべての DCM 出力が CLKIN 入力に関連して位相シフ ト されます

デフォルトでは ファ イン位相シフ トはディ スエーブル (CLKOUT_PHASE_SHIFT=NONE) です つま り ク ロ ッ ク入力は CLKIN で位相調整されています この場合 入力クロ ッ ク CLKIN と フ ィードバッ ク ク ロ ッ ク間におおよそのフ ィードバッ ク地点で計測されるスキューはあ り ません (「確実なソースからのフ ィードバッ ク」 を参照して ください) 図 31 に示すよ うに ファ イン位相シフ トがイネーブルの場合 出力クロ ッ クのエッジは位相シフ ト され CLKIN 入力の前または後になり ます

次にファイン位相シフ トの 2 つのモードについて説明します一般に高速データ通信アプリ ケーシ ョ ンでは 両方のモードが使用されます 「ソース同期」 を参照してください

1 固定ファイン位相シフ ト モードは位相シフ ト値を設計段階で設定します 位相シフ ト値はFPGAコンフ ィギュレーシ ョ ン実行中に取り込まれ アプリ ケーシ ョ ンで変更するこ とはできません

2 動的ファイン位相シフ トモードには 初期位相シフ ト値があ り 固定ファイン位相シフ トの場合と同様に この値は FPGA コンフ ィギュレーシ ョ ン中に取り込まれますが DCM の LOCKED 出力が High になった後であれば アプリ ケーシ ョ ンで変更可能です

固定ファイン位相シフ ト

固定ファ イン位相シフ ト モードでは 設計段階で指定されたシフ ト値が FPGA コンフ ィギュレーシ ョン実行中に設定され この値はアプリ ケーシ ョ ンで変更できません

このモードは 次の 2 つの属性によって制御されます CLKOUT_PHASE_SHIFT 属性が FIXED に設定し PHASE_SHIFT 属性が位相シフ ト量を制御します 図 31 に示すよ うに PHASE_SHIFT = 0 の場合は 出力ク ロ ッ クおよび CLKIN 入力の位相が一致する よ う 調整され ク ロ ッ ク出力はPHASE_SHIFT が負の整数の場合に CLKIN の前に位相シフ ト し正の整数の場合には CLKIN の後に位相シフ ト します

固定ファイン位相シフ ト範囲

PHASE_SHIFT 属性は常に整数値であ り その範囲は -255 ~ +255 ですが 実際の範囲は使用されるCLKIN の周波数によって異なり ます

表 17 14 位相シフ ト出力とそれらの特性 (DUTY_CYCLE_CORRECTION=TRUE)

DCM 出力 位相シフ トクロック周期

に対する遅延

立ち上がり

エッジ

立ち下がり

エッジ解説

CLK0 0deg 0 0 frac12T スキュー調整された入力クロ ッ ク 位相シフ ト なし

CLK90 90deg frac14T frac14T frac34T High パルス (frac34T 周期幅 周期の中央)

CLK180 180deg frac12T frac12T 0T CLK0 の反転 (立ち上がりエッジは周期の中央)

CLK270 270deg frac34T frac34T frac14T Low パルス (frac34T 周期幅 周期の中央)

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 43

R

PHASE_SHIFT 属性の範囲は 次の 2 つの値によって決定されます

1 1 つはナノセカンドで測定される CLKIN 入力の周期 である TCLKIN 値です

2 も う 1 つは Spartan-3 デバイスおよびスピード グレードによって指定される FINE_SHIFT_RANGE の値です この値は 『Spartan-3 データ シート 』 モジュール 3 に記載されています FINE_SHIFT_RANGE は 位相シフ ト遅延ラインにおける総遅延であ り 回路内の遅延タップ数の関数です 実際の遅延ラインは FINE_SHIFT_RANGE よ り長い場合があ り ますがFINE_SHIFT_RANGE までの値が保証されています

これらの値を 等式 1 に適用しSHIFT_DELAY_RATIO を算出します PHASE_SHIFT 属性の範囲はこの算出結果と 1 との不等式関係によって異なり ます

等式 1

SHIFT_DELAY_RATIO lt 1 の場合

ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り長い場合はSHIFT_DELAY_RATIO lt 1 であ り最大ファイン位相シフ ト範囲は FINE_SHIFT_RANGE によって決定されます SHIFT_DELAY_RATIO lt 1 の場合 PHASE_SHIFT 範囲は 等式 2 から求めるこ とができます

等式 2

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 PHASE_SHIFT 値は plusmn191 とな り ます

したがって SHIFT_DELAY_RATIO lt 1 の場合の位相シフ ト値は 等式 3 とな り ますPHASE_SHIFT = 1 と して ください

等式 3

図 31 固定ファイン位相シフ ト

0

Fixed Phase Shift- Limit

Fixed Phase Shift+ Limit

Clock Outputs

PHASE_SHIFT CLKIN DCM

CLKIN

x462_31_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

SHIFT_DELAY_RATIO FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------=

PHASE_SHIFTLIMITS plusmn INTEGER 256 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞=

TPhaseShiftPHASE_SHIFT

PHASE_SHIFTLIMITS----------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

44 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

SHIFT_DELAY_RATIO ge 1 の場合

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 1 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 4

したがって SHIFT_DELAY_RATIO ge 1 の場合の位相シフ ト値は 等式 5 とな り ます PHASE_SHIFT = 1 と して ください

等式 5

最小位相シフ ト

最小位相シフ トの大きさは 次の値の大きな方によって決定されます

1 『Spartan-3 データ シート 』 に DCM_TAP_MIN 仕様と して記載されている最小遅延ライン タ ップ値 (概算値は ~30ps)

2 ク ロ ッ ク周期の 1256

その他の考察点

固定位相シフ トモードでは 動的位相シフ ト制御入力をグランドに接続する必要があ り ます この接続

は DCM Wizard では自動的に行われます

DCM Wizard

固定位相シフ トモードを使用する場合は図 32 に示すよ うにDCM Wizard の [General Setup] ダイアログ ウ ィンド ウに表示される Phase Shift で [Fixed] をク リ ッ ク して ください これによって CLKOUT_PHASE_SHIFT 属性が FIXED に設定されます

[Phase Shift Value] を入力しますが この値は 上述した範囲内にある整数でなければなり ません これによってPHASE_SHIFT 属性値が設定されます DCM Wizard は位相シフ ト値が指定範囲内であるかを確認します

動的ファイン位相シフ ト

動的ファ イン位相シフ ト モードでは 固定ファ イン位相シフ ト モード と同様に 初期スキューまたは初期位相シフ トがコンフ ィギュレーシ ョ ン中に PHASE_SHIFT 属性によって制御されます ただし動的シフ ト モードの場合 DCM の LOCKED 入力が High になった後に 動的ファ イン位相シフ ト制御入力 PSEN PSCLK および PSINCDEC を使用して FPGA アプリ ケーシ ョ ンで現在の位相シフ ト値を修正できます

動作

図 33 に示すよ うに位相シフ ト制御入力を使用し現在の位相シフ ト値を修正します すべての動的位相シフ トは PSCLK の立ち上がりエッジに同期して行われ 有効な位相シフ トは PSEN イネーブル入

図 32 固定ファイン位相モードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

Fixed

x462_32_061803

PHASE_SHIFTLIMITS 255plusmn=

TPhaseShiftPHASE_SHIFT

256--------------------------------------------⎝ ⎠

⎛ ⎞ TCLKINbull=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 45

R

力を正確に 1 PSCLK ク ロ ッ ク周期間アサートするこ とによって開始します PSEN を 1 ク ロ ッ ク周期よ り長くアサートする場合には 適切に位相シフ ト を行う こ とができない可能性があ り ます

PSINCDEC の値は制御入力の増減を指定し 位相シフ トの方向を決定します PSINCDEC を High に設定する と 動的位相シフ ト値が増加し Low に設定する とその値は減少します

実際の位相シフ ト が行われる タ イ ミ ングはさ まざまであ り DCM で PSCLK ク ロ ッ クの 1 周期間PSDONE 出力が High にアサート された時に完了します PSEN がイネーブルであ り PSDONE がアサート されるまでの間 DCM 出力クロ ッ クは 初期位相シフ ト値から新しい位相シフ ト値まで 1 ビットずつスライ ド します シフ トが行われている間 DCM は入力クロ ッ クに対してロ ッ ク状態 つま りLOCKED 出力がアサート された状態を維持します

PSDONE がアサート されたと き またはアサート後に 次の位相シフ ト処理が開始されます

動的ファ イン位相シフ ト モードを使用する場合は CLKOUT_PHASE_SHIFT 属性を VARIABLE に設定し FPGA コンフ ィギュレーシ ョ ン後に PHASE_SHIFT 属性値によって 位相シフ トの初期位置を設定できます DCM の LOCKED 出力が High になる と FPGA アプリ ケーシ ョ ンでは DCM 出力クロ ッ クにおけるスキュー または位相シフ ト を動的に修正できます また DCM がリセッ ト された場合は PHASE_SHIFT 値は初期設定値に戻り ます

図 33 動的ファイン位相シフ ト制御インターフェイス

PSINCDEC

PSEN

PSCLK

PSDONE

0 = 1 =

STATUS[0](

)

PSDONE

If phase shift incremented ordecremented to limit valueSTATUS[0] stays High until newoperation shifts away from limit

x462_33_062403

46 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

動的ファイン位相シフ ト範囲

PHASE_SHIFT と同様に 動的位相シフ トに対しても位相シフ ト範囲の制限があ り ます 図 34 を参照して ください また その範囲は SHIFT_DELAY_RATIO 等式で示したよ うにFINE_SHIFT_RANGE 対入力クロ ッ ク周期の比率によって決定されます

SHIFT_DELAY_RATIO lt 2

指定された FINE_SHIFT_RANGE 値がクロ ッ ク周期の 2 倍よ り小さい場合 (SHIFT_DELAY_RATIOlt 2)最大動的位相シフ ト値は最大遅延タップ値である FINE_SHIFT_RANGE によって決定されますSHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト範囲は 等式 6 によって決定されます

等式 6

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 動的位相シフ ト値の範囲は plusmn96 とな り ます

図 34 動的位相シフ ト制御

Clock Outputs

PHASE_SHIFT DCM LOCKED

RESET

CLKIN

0Fixed Phase Shift

- LimitFixed Phase Shift+ Limit

PSEN

PSINCDEC

PSCLK

PSDONE

STATUS[0]

0

Dynamic Phase Shift- Limit

Dynamic Phase Shift+ Limit

Increment PhaseShift Value

Decrement PhaseShift Value

Enable

IncrementDecrement

Phase Shift Clock

Phase Shift Done

Variable PhaseShift Overflow

DCM LOCKEDFPGA

DCM Variable PhaseShift Control

x462_34_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

DynamicPhaseShiftLIMITS INTEGER 128 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞plusmn=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 47

R

したがって SHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト値は 等式 7 とな り ます PHASE_SHIFT = 1 と して ください

等式 7

SHIFT_DELAY_RATIO ge 2

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 2 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 8

したがって SHIFT_DELAY_RATIO ge 2 の場合の位相シフ ト値は 等式 9 とな り ますPHASE_SHIFT = 1 と して ください

等式 9

制御

45ページの図 33 46ページの図 34 に示すよ うにDCM の動的位相シフ ト制御信号によって FPGAアプリ ケーシ ョ ンは現在の CLKIN 入力と DCM ク ロ ッ ク出力間の関係を修正できます 表 18 に 制御入力 現在の位相と次の位相の関係 遅延タ ップへの影響と制御出力の関係を示します

TPhaseShiftDynamicPhaseShift

DynamicPhaseShiftLIMITS-----------------------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

DynamicPhaseShiftLIMITS 255plusmn=

TPhaseShiftDynamicPhaseShift

256--------------------------------------------------------- TCLKINbull=

表 18 動的位相シフ ト制御 (内部反転がない場合)

PSENPSINC-

DECPSCLK 現在の

位相シフ ト

次の

位相シフ ト遅延ライン PSDONE

STATUS[0](オーバーフロー )

動作

0 X X X 変更なし 変更なし 動的位相シフ トはディ スエーブル

1 0 uarr gt -制限 現在の位相

シフ ト -1現在の位相

シフ ト -11 0 位相シフ トおよびシフ ト ポインタ

のデク リ メン ト

1 0 uarr le -制限およびgt -255

現在の位相

シフ ト -1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがデク

リ メン ト

1 0 uarr -255 -255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

1 1 uarr lt +制限 現在の位相

シフ ト +1現在の位相

シフ ト +11 0 位相シフ トおよびシフ ト ポインタ

のインク リ メ ン ト

1 1 uarr ge+制限およびlt +255

現在の位相

シフ ト +1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがイン

ク リ メ ン ト

1 1 uarr +255 +255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

メモ X = 考慮する必要があ り ません = 不確定であ り 現在のアプリ ケーシ ョ ンの状態によって決定されます1 = PSDONE が 1 PSCLK 周期間 High にアサート されます-制限 = 遅延ラインの最小位置+制限 = 遅延ラインの最大位置PSEN を 1 PSCLK サイ クル間アサート します

48 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

PSEN が Low の場合 動的位相シフ トはディ スエーブルであ り その他のすべての入力は無視されます したがって すべての現在のシフ ト値および遅延ライン位置に変更はあ り ません

遅延ラインがその制限 (デク リ メン トで - 制限 または -255 インク リ メン トで + 制限 または +255)に到っていない場合 FPGA アプリ ケーシ ョ ンでは PSEN を High にアサートする とによって現在の位相シフ ト値を変更でき PSCLK の次の立ち上がりエッジの前に PSINCDEC に対して適切なインク リメン ト デク リ メン ト値を設定できます 位相シフ ト値は指定されたよ うにインク リ メン ト またはデクリ メン ト します 位相シフ トの最後に PSDONE が PSCLK の 1 周期間 High にアサート され 位相シフ ト が完了したこ と を示し ます また 位相シフ ト のオーバーフロー状態が発生していないため

STATUS[0] は Low を維持します

DCM が +255 を超える値にインク リ メン ト された場合 または -255 よ り小さな値にデク リ メン ト された場合には遅延ラインの位置はその限界である +255 または -255 から変更されず位相は変更されません STATUS[0] は High にな り 動的位相シフ トがオーバーフローである こ とを示します こ こで 新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0]が Low に戻り ます

位相シフ トが +255 または -255 には達していませんが 遅延ライン範囲 (表 18 では + 制限および - 制限)を超えている場合には位相は変更されませんがSTATUS[0] が再び High になり ます STATUS[0]出力は 遅延タ ップが遅延ラインの限界に到達したと きを示します ただし FPGA アプリ ケーシ ョ ンでは等式 8 または等式 6 を使用して制限値が算出され求められた遅延ラインの制限値は保証された値とな り ます 特定のデバイスでは 処理電圧または処理温度によって 遅延ラインが長くなる場合があ り ますが これの値はデバイスによって異なるため 保証されていません 遅延ラインの位置ではなく 位相シフ ト値は +255 または -255 に到達するまでインク リ メン ト またはデク リ メン ト を続けます新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0] がLow に戻り ます こ こで位相シフ ト値は遅延ラインにおいて有効な遅延値に対応する値に戻るよ うにインク リ メン ト またはデク リ メン ト されます

DCM Wizard

動的位相シフ トは図 35 に示す DCM Wizard の [General Setup] ダイアログ ウ ィンド ウで設定します動的ファ イン位相シフ ト を有効にするためには 図 35 に示すよ うに [Variable] を選択します 次に初期の [Phase Shift Value] を入力します 初期値は前述した固定ファイン位相シフ トモードの場合と同様に動作します

図 36 に示すよ うに[Variable] モードを選択するこ とによって動的位相シフ ト制御信号である PSENPSINCDEC PSCLK および PSDONE がイネーブルにな り ます これらの制御信号を FPGA アプ リケーシ ョ ンで使用するために入力および出力チェッ ク ボッ クスをオンにして ください またSTATUS

図 35 DCM Wizard での動的ファイン位相シフ トモードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

[Variable]

x462_35_061903

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 49

R

出力のボッ クスをオンにし STATUS[0] 信号をイネーブルにします STATUS[0] は 位相シフ ト値がその最大または最小制限値に達したと きを示します

アプリケーシ ョ ン例

動的位相調整を行う場合の動的位相シフ ト機能については 次の リ ンクからアプ リ ケーシ ョ ン ノー トXAPP268 を参照してください

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

クロック逓倍クロック分周周波数合成

DCM アプリ ケーシ ョ ンのもっと も使用される機能の 1 つと して 新しいク ロ ッ ク周波数を柔軟に生成できる機能があ り ます 次に説明するよ うにSpartan-3 DCM は 3 つの独立した周波数合成機能を持ちます図 37 および表 19 を参照してください アプリ ケーシ ョ ンでは これらの機能の 1 つを使用する場合 またはすべてを同時に使用する場合があ り ます 次に 各機能の詳細について説明します

1 2 逓倍クロ ッ ク (CLK2X CLK2X180) は 入力クロ ッ クの周波数を 2 倍にします

2 ク ロ ッ ク分周 (CLKDV) は 入力クロ ッ ク周波数を一定の分周値を使用して分周します

3 周波数合成回路 (CLKFX CLKFX180) は 入力クロ ッ ク周波数から新しい周波数を生成します

図 36 DCM Wizard での動的位相シフ ト制御出力の選択

LOCKEDSTATUS

PSDONE

PSENPSINCDECPSCLK

STATUS[0] STATUS

x462_36_061903

図 37 クロック合成オプシ ョ ン

CLKIN CLK0

CLKFB

DCM

CLKFX

CLKFX180

Frequency Synthesizer

F = FCLKIN CLKFX_MULTIPLY

CLKFX_DIVIDE

CLKDV

Clock Divider

F =FCLKIN

CLKDV_DIVIDE

CLK2X

CLK2X180

F = 2 FCLKIN Clock Doubler

ClockDistribution

Delay

CLK0or

CLK2X

Clock Feedback LoopCLK0 CLK2X CLK2X180 CLKDV CLKFB

CLK0

CLKFXCLKFX180

50

DLL_FREQUENCY_MODE=LOW50

50

Deskewed ClockF = FCLKIN

DUTY_CYCLE_CORRECTION=TRUE50

x462_37_062203

50 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

CLKDV 以外のすべての周波数合成出力は 5050 デューティ サイ クルを持ちます 表 23 に示すよ うに高周波数で分周値が整数の場合通常 CLKDV は 50 のデューティ サイクルを持ちます また 2逓倍クロ ッ ク (CLK2X CLK2X180) 回路は高周波数では使用できません

CLKFX および CLKFX180 以外のすべての DCM ク ロ ッ ク出力はDCM の 遅延ロッ ク ループ (DLL)ユニッ トで生成され CLKFB ピンへのクロ ッ ク フ ィードバッ クが必要になり ます DCM の デジタル周波数合成 (DFS) ユニッ トはCLKFX および CLKFX180 ク ロ ッ ク出力を生成します アプリ ケーシ ョンで CLKFX 出力または CLKFX180 出力のみが使用される場合にはフ ィードバッ ク パスを削除できDCM の動作範囲が広くな り ます 周波数合成回路は DCM 内部に CLKIN に基づいたフ ィードバック パスを持ちます

ク ロ ッ ク フ ィードバッ クを使用した場合 すべての出力クロ ッ クの位相が調整されます また 出力のいくつかは分周クロ ッ クであるためすべての DCM 出力がクロ ッ ク エッジで一致するよ うに調整されるこ とはまれであるこ とがわかり ます たとえば CLKDV 出力は CLKDV_DIVID の各サイクルごとに CLKIN および CLK0 に対して調整されCLK2X 出力は CLK0 のサイクル 1 つおきに この信号に対して調整されます またCLKFX 出力はCLKIN の CLKFX_DIVIDE サイクルごとおよび CLKFBの CLKFX_MULTIPLY サイクルごとに CLKIN に位相調整されます

周波数合成アプリケーシ ョ ン

周波数合成を使用するアプリ ケーシ ョ ンは ほぼ無制限に考えられますが 次にいくつかのアプリ ケー

シ ョ ン例を示します

bull ボード上で利用可能なクロ ッ クを使用している FPGA および外部ロジッ クに対して完全に新しいクロ ッ ク周波数を生成する

bull 低速の外部クロ ッ ク ソースから高周波数の内部クロ ッ クを生成し システムの EMI を低減する

bull 図 38 に示すよ うに高速シ リ アルデータ ク ロ ッ クを分周しFPGA 内部でデータの並行処理を行う

bull 同様に 図 38 に示すよ うに 高速シ リアル データ フォーマッ トに変換する前に 並行で動作するデータ ク ロ ッ クの周波数を逓倍する

bull 適切な速度の機能をインプリ メン トする場合に 入力クロ ッ クを逓倍し 内部ロジッ クをクロ ッ ク

アップするこ とによって 使用する リ ソースを削減する

表 19 DCM 周波数合成オプシ ョ ン

機能 DCM 出力 周波数DCM の機能ユニッ ト

フ ィードバック50 の

デューティ サイクル

スキュー調整

クロ ッ ク

CLK0 DLL 必要 DUTY_CYCLE_CORRECTION = TRUE の場合に 50 です

2 逓倍クロ ッ ク CLK2XCLK2X180

DLL 必要 常に 50 です

分周クロ ッ ク CLKDV DLL 必要 高周波数モードで分周値が

整数以外の場合を除いて常

に 50 です

周波数合成 CLKFXCLKFX180

DFS オプシ ョ ン フ ィードバッ クに

よって ク ロ ッ ク

入力周波数範囲は

広くなるこ とは

あ り ません

常に 50 です

FCLKIN

2 FCLKINbull

FCLKINCLKDV_DIVIDE---------------------------------------------------

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE------------------------------------------------------------⎝ ⎠

⎛ ⎞bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 51

R

入力クロックおよび出力クロックの周波数条件

周波数合成を行う場合の入力クロ ッ クおよび出力クロ ッ クの周波数条件は DCM で使用されるク ロ ック出力によって決定されます たとえば CLKFX 出力および CLKFX180 出力は DCM のデジタル周波数合成 (DFS) ユニッ トのみを使用し その他のすべての出力は遅延ロッ ク ループ (DLL) ユニッ ト を使用します DLL における周波数の制限は DFS よ り も厳しいため DFS のみを使用する場合の方が周波数の動作範囲は広くな り ますDFS および DLL の両方を使用する場合アプリ ケーシ ョ ンは DLLの周波数範囲によって制限されます

また DLL および DFS は 低周波数モード と高周波数モードの両方で動作可能であるため モード設定によっても有効な周波数範囲が変動します

DCM デザインが有効であるためには CLKIN 周波数が 『Spartan-3 データ シート 』 モジュール 3 に記載されている動作範囲内である必要があ り 使用されているすべての出力クロ ッ クの周波数もそれぞれ

指定された範囲内でなければなり ません

図 39 に クロ ッ ク入力およびクロ ッ ク出力と対応する周波数範囲を示します ただし こ こで示すのは低周波数モードの場合のみです データ シートに記載されている仕様名は影付きのボッ クス内に示しています また 表 20 に DCM アプリ ケーシ ョ ンの例および周波数条件を示します

図 38 周波数合成アプリケーシ ョ ンの一般的な例

DCM DCM

F

n-bitswide

Fn

F F m

m-bitswide

F F

Overclockedtime-shared logic

DCM

F

F F x

High-speed serial datadown-converted toslower parallel data

Slower parallel dataup-converted to high-speed serial data

FPGA

x462_38_070903

52 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

2 逓倍クロック (CLK2X CLK2X180)表 21 に示すよ うに 2 逓倍クロ ッ ク回路によって CLKIN 入力の周波数は 2 倍になり ます この 2 逓倍クロ ッ ク回路は DLL 機能ユニッ トの一部であ り CLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します 2 逓倍クロ ッ ク回路からの出力は CLK2X および CLK2X180 であ り これらの出力のデューテ ィ サイ クルは常に 50 です また これらの周波数は同一ですがCLK2X180 は CLK2X を 180deg位相シフ ト したものであ り 基本的に CLK2X 出力を反転したものになり ます 高性能のデュアル データ レート (DDR) アプリ ケーシ ョ ンまたはクロ ッ ク転送アプリ ケーシ ョ ンでは 両方の位相を使用するこ とが不可欠です

CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE 属性が LOW に設定されている場合のみに使用できます アプリ ケーシ ョ ンにおける必要性に応じてオプシ ョ ンの 2 分周機能を使用しCLKIN 入力周波数を低下させてください ( 「アドバンス ド オプシ ョ ン」 を参照)

図 39 入力クロックおよび出力クロックの周波数条件 (低周波数モード )

DFS(CLKIN_FREQ_FX_MINMAX)

DLL (Low-Frequency Mode)(CLKIN_FREQ_DLL_LF_MINMAX)

~1 MHz ~326 MHz

~24 MHz ~180 MHzFCLKIN

DFS (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~24 MHz ~200 MHz

DLL CLKDV (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~15 MHz ~120 MHz

DLL CLK2X (Low-Frequency Mode)(CLKOUT_FREQ_2X_LF_MINMAX)

~48 MHz ~326 MHz

FCLKFXFCLKFX180

FCLKDV

FCLK2XFCLK2X180

x462_39_070903

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 20 DCM 周波数条件の例

入力周波数 出力周波数 解説

12 MHz 128 MHz 1 つの DCM のみを使用する場合には条件を満たしません FCLKIN は DFS の条件を満たす範囲内ですが FCLKFX は最低 24MHz 出力周波数が必要です

12 MHz 324 MHz DFS を使用する DCM で条件を満たします CLKFX_MULTIPLY=27 と設定してくださいFCLKFX は DFS 出力周波数範囲内です

25 MHz 25 MHz30 MHz

DFS および DLL を使用する DCM で条件を満たします CLKDV 出力を 25MHz 信号に使用しCLKDV_DIVIDE=10 と設定してください また CLKFX 出力を 30MHz 信号に使用しCLKFX_MULTIPLY=6 および CLKFX_DIVIDE=5 と設定してください すべての入力周波数および出力周波数は適切な範囲内です

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 53

R

表 21 2 逓倍クロック回路のまとめ

DCM 出力 CLK2XCLK2X180

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク 必要です

50 デューティ サイ クル出力 はい

制御属性

DLL_FREQUENCY_MODE CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE = LOW の場合にのみ有効です

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます 2 逓倍クロ ッ クの出力は 高周波数モードでは使用できませんが ほかの DCM ク ロ ッ ク出力に必要となる場合があ り ます

CLK2XCLK2X180

CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

2 FCLKINbull

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (~24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (~48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~326 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_2X_LF_MIN (48 MHz)

CLKOUT_FREQ_2X_LF_MAX (~325 MHz)

HIGH 設定不可 設定不可

54 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

クロック分周 (CLKDV)表 22 に概要を示すクロ ッ ク分周ユニッ トは デザインに設定した CLKDV_DIVIDE 属性の値を使用し CLKIN 入力の周波数を分周します ク ロ ッ ク分周ユニッ ト は DLL 機能ユニッ ト の一部であ りCLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します

表 22 クロック分周回路のまとめ

DCM 出力 CLKDV

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク DCM からの CLK0 出力または CLK2X 出力を使用する場合に必要です

50 デューティ サイ クル出力 はい ただし DLL_FREQUENCY_MODE=HIGH および CLKDV_DIVIDE が整数値ではない場合を除きます

制御属性

DLL_FREQUENCY_MODE CLKDV は両モードで使用できます 分周値によっては 出力のデューティ サイ クルに影響を与える場合があ り ます ( 「CLKDV ク ロ ッ ク調整」 を参照してください)

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 有効な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 であ り 整数値の場合 よ り短時間で DLL はロッ ク状態になり ます また 整数値を設定する場合には出力ジッ タが低くな り ます

周波数制約

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

CLKDV CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

FCLKINCLKDV_DIVIDE--------------------------------------------------

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~325 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_DV_LF_MIN (15 MHz)

CLKOUT_FREQ_DV_LF_MAX (~120 MHz)

HIGH CLKOUT_FREQ_DV_HF_MIN (30 MHz)

CLKOUT_FREQ_DV_HF_MAX (~240 MHz)

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 55

R

CLKDV クロック調整

DLL_FREQUENCY_MODE 属性が High であ りCLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 になり ます 表 23 に CLKDV のデューティ サイクルを示します Spartan-3 DCM では CLKIN のデューティ サイクルが 6040 (または 4060) 以上である必要があ り高周波数モードの場合に 15 で分周された CLKDV 出力は次にカスケード接続された DCM へクロ ッ ク入力するこ とはできません

CLKDV のジッ タは 周波数モードおよび属性値が整数か 整数ではないかによって決定されます

CLKDV_DIVIDE 属性に整数値を設定するこ とによって 出力ジッ タが半分になり DLL がロ ッ ク状態になるために要する時間も短縮されます

DCM Wizard

ク ロ ッ ク分周は DCM Wizard の[General Setup]ウ ィ ン ド ウで設定し ます 図 40a に示すよ う にCLKDV 出力のチェッ ク ボッ クスをオンにし 次に図 40b に示すよ うに ド ロ ップ ダウン リ ス トから[Divide by Value] を選択します

表 23 CLKDV デューティ サイクル (DLL_FREQUENCY_MODE=HIGH の場合)

CLKDV_DIVIDE 属性 デューティ サイクル High 時間総サイクル

整数 50000 12

15 33333 13

25 40000 25

35 42857 37

45 44444 49

55 45454 511

65 46154 613

75 46667 715

表 24 CLKDV 出力ジッ タ

CLKDV_DIVIDE CLKDV 出力周期ジッ タ

整数値 CLKOUT_PER_JITT_DV1 (plusmn~150 ps)

整数以外の値 CLKOUT_PER_JITT_DV2 (plusmn~300 ps)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

a CLKDV 出力のチェ ック ボックスをオン b ドロップ ダウン リス トから [Divide by Value を選択]

図 40 DCM Wizard での分周クロック設定

CLKDV

x462_40a_0619032

Divide By Value

x462_40b_061903

56 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

周波数合成回路 (CLKFX CLKFX180)周波数合成回路を使用するこ とによって 入力周波数の逓倍 分周 またはその両方をもっと も柔軟に

行う こ とができます 表 25 に示すよ うに 2 つの周波数合成出力は CLKFX および CLKFX180 ですCLKFX180 出力は CLKFX と同一の周波数を持ちますがCLKFX を 180degまたは 12 ク ロ ッ ク周期位相シフ ト させた ものです これらの周波数合成出力のデューテ ィ サイ クルは 50 であ るためCLKFX180 は CLKFX の反転クロ ッ クのよ うに見えます

表 25 にある等式が示すよ うに設計段階で 2 つの属性を使用し合成出力周波数を制御します CLKINク ロ ッ ク入力は CLKFX_MULTIPLY が分子 CLKDV_DIVIDE が分母である比率を使用して逓倍されます たとえば 75MHz CLKIN 入力を使用して 155MHz の出力を生成するためには 周波数合成回路では 3115 の比率で CLKIN を逓倍します これは CLKIN を始めに 31 倍し 次に 15 で割ることではあ り ませんCLKIN を 31 倍するこ とによって出力周波数は2325GHz とな りSpartan-3 DCMの周波数範囲を越えるこ とにな り ます

68 を 34 と約分するよ うに 逓倍値および分周値はもっと も簡潔な値にする必要があ り ます このことによって ロ ッ クするために必要な時間が短縮します

周波数合成には 常にク ロ ッ ク フ ィードバッ クが必要ですが DFS には CLKIN を基準と した内部フ ィードバッ ク ループがあるため DLL を使用せずに DFS を使用する場合には CLKFB に別のループは必要あ り ません

また CLKFB 出力は CLKIN の CLKFX_DIVIDE サイ クルごと および CLKFB の CLKFX_MULTIPLY サイクルごとに CLKIN に対して位相調整されます たとえばCLKFX_MULTIPLY = 3 であ りCLKFX_DIVIDE = 5 の場合CLKFX 出力の位相は CLKIN の各 5 サイクルごと および CLKFB の 3 サイクルごとに CLKIN 入力に対して位相調整されます DCM で LOCKED 出力がアサート される と DFS は CLKIN 入力の立ち上がりエッジごとに再同期し ほぼ完璧に位相調整されます

表 25 周波数合成回路のまとめ

DCM 出力 CLKFX

CLKFX180 (CLKFX を 180deg位相シフ ト した場合と同一)

出力周波数

DCM の機能ユニッ ト デジタル周波数合成 (DFS)

フ ィードバッ ク CLKIN を基準にして内部フ ィードバッ クを使用するため 必要あ り ません 遅延ロッ ク ループ (DLL) を使用する場合は オプシ ョ ンと して CLKFB 入力を使用できます

50 デューティ サイ クル出力 常に 50 です

制御属性

DFS_FREQUENCY_MODE CLKIN CLKFX 出力 CLKFX180 出力の周波数条件に影響します

DLL_FREQUENCY_MODE アプリ ケーシ ョ ンで DLL 出力が使用される場合に 周波数合成回路のみに影響を与えます また よ り厳しい DLL の条件に適用するよ うに CLKIN 周波数を低下させる可能性があ り ます CLKFX 出力または CLKFX180 出力が使用されている場合 周波数条件は DFS_FREQUENCY_MODE によってのみ指定されます

CLKFX_MULTIPLY 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 2 から 32 であ りデフォルトは 4 です

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 1 から 32 であ りデフォルトは 1 です

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 57

R

DCM Wizard

周波数合成を使用する場合図 41 に示すよ うに DCM Wizard の[General Setup]ダイアログ ボッ クスで CLKFX または CLKFX180 あるいはその両方のチェッ ク ボッ クスをオンにしてください

CLKFX 出力または CLKFX180 出力のみを使用する場合はオプシ ョ ンと して DLL ク ロ ッ ク出力およびフ ィードバッ クをディ スエーブルにするこ とによって 周波数範囲を広げるこ とができます

bull デフォルトでは CLK0 出力は常にオンになっていますが CLKFX または CLKFX180 のみを使用する場合は CLK0 のチェッ ク ボッ クスをオフにしてください

bull 図 42 に示すよ うに DCM フ ィードバッ クをディ スエーブルにする場合は [None] を選択してください フ ィードバッ クを使用しない場合はCLKFX および CLKFX180 の周波数範囲は高域と低域の両方で広くな り ます

周波数制約

CLKIN アプリ ケーシ ョ ンで 遅延ロッ ク ループ (DLL) からの出力が使用されていない場合CLKIN の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます DLL が使用されている場合は DLL のクロ ッ ク周波数条件はよ り厳し くな り ます

CLKFXCLKFX180

CLKIN 出力および CLKFX180 出力の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 25 周波数合成回路のまとめ (Continued)

最小周波数 最大周波数

CLKIN_FREQ_FX_MIN (~10 MHz) CLKIN_FREQ_FX_MAX (~326 MHz)

DFS_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_FX_LF_MIN(~24 MHz)

CLKIN_FREQ_FX_LF_MAX(~210 MHz)

HIGH CLKIN_FREQ_FX_HF_MIN(~210 MHz)

CLKIN_FREQ_FX_HF_MAX(~325 MHz)

図 41 DCM Wizard での Frequency Synthesizer 設定

CLK0

CLKFXCLKFX180

CLKFXCLKFX180

CLKFX CLKFX180

DCM

x462_41_070903

58 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロックのフォワード ミ ラー リバッファR

DCM Wizard のクロ ッ ク周波数合成で示したよ うに必要は出力周波数または逓倍値と分周値を入力します

クロックのフォワード ミ ラーリバッファ

DCM は高度なクロ ッ ク制御機能を持ちさ らに Spartan-3 IO ピンは多様な IO 電圧標準をサポートするため 通常 Spartan-3 FPGA ではクロ ッ ク信号のリバッファ またはミ ラーを行い 入力クロ ッ クの電圧を変更ために使用されます 同様に DCM の入力クロ ッ ク条件を変更し デューティ サイクルを50 に調整します

図 20 に DCM の入力クロ ッ クを 50 デューティ サイ クルに調整し その周波数で CLK0 出力を使用してクロ ッ クをフォワードする または DCM CLK2X を使用して周波数を 2 倍にする DCM の例を示しました DCM が LOCKED 出力をアサートする と 入力クロ ッ クおよび出力クロ ッ クは位相調整されます CLKFB へのフ ィードバッ ク パスは外部のクロ ッ ク フ ィードバッ ク地点でクロ ッ ク分散遅延を確認し 削除します

出力クロ ッ クのデューティ サイクルが 50 であるこ とは重要であるため出力 IO 標準が 50 デューティ サイ クルを維持できるために十分な速度でスイ ッチできる こ と を確認して ください デューティサイ クルの動作は 出力信号でのシ ミ ュレーシ ョ ンを行う こ とによって検証します IBIS シ ミ ュレーシ ョ ンで確認できるよ うに IO 標準には立ち上がり と立ち下がりが対称的ではなく デューティ サイクルにずれが発生しているものもあ り ます HSTL SSTL および LVCMOS の DCI バージ ョ ンの IO標準の立ち上がりおよび立ち下がりがよ り対称的です

100 MHz を越える場合のデューテ ィ サイ クルを確実に 50 にするためには CLKIN のソースのデューティ サイ クルが 50 の場合にも DCM のデューティ サイクル調整機能を使用する必要があ ります したがって ク ロ ッ ク フォワードに CLK0 CLK90 CLK180 または CLK270 を使用する場合はDUTY_CYCLE_CORRECTION 属性を TRUE に設定してください 通常その他の DCM ク ロ ック出力は常に 50 のデューティ サイ クルに調整されます ( 「ク ロ ッ ク調整」 を参照して ください)

200 MHz 以上で動作する場合のデューティ サイ クルを最適にするためには図 43 に示すよ うな回路を使用して ください こ こでは DCM からの CLKx 出力および CLKx180 出力がデュアル データ レート (DDR) 出力フ リ ップフロ ップの C0 入力および C1 入力を駆動するよ うに使用します DDR フ リ ップフロ ップの D0 入力を VCC に接続し D1 入力を GND に接続します また DCM の各出力は個々のグローバル バッファを駆動しデューティ サイクルのずれを最小にします 高周波数の場合に 1つのク ロ ッ クのみを分散し DDR フ リ ップフロ ップ内部でローカル位相シフ ト を行う と 約 150ps のデューティ サイクルのずれが発生するため このよ うな回路設計は推奨していません

周波数が 250 MHz 以上の場合には分散クロ ッ クに LVDS のよ うな差動信号標準を使用します 図 43にCLKIN ク ロ ッ ク入力およびクロ ッ ク出力がと もに VLDS を使用する例を示します さ らにク ロ ック フ ィードバッ ク パスも LVDS を使用します パフォーマンスを最適にするためには ク ロ ッ ク入力およびクロ ッ ク フ ィードバッ ク パスにグローバル バッファ入力 (IBUFGDS) を使用する必要があ り ます これによってデバイスの一辺にあるすべてのグローバル バッファ入力を使用するこ とになり ますが 高周波数でのクロ ッ ク フォワードを最適に行う こ とができます

図 42 フ ィードバックに [None] を選択し 周波数範囲を拡大

SourceFeedback

Internal External None

Value 1X 2X

If only using the CLKFX or CLKFX180clock ouputs optionally click None to extend the DCM frequency limits

x462_42_070903

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 59

R

クロック ジッ タおよび位相ノイズ

もっと も高価で高精度なものの場合においてもすべてのクロ ッ クにはクロ ッ ク ジッタまたは位相ノイズがあ り ます こ こでは Spartan-3 デジタル ク ロ ッ ク マネージャに固有のジッ タ特性について説明します 低周波数 たとえば 20 MHz で動作する場合は 一般に ジッ タの影響は無視できますが200 MHz のよ う な高周波数で動作する場合には 特にデュアル データ レート (DDR) アプリ ケーシ ョンにおいて ジッ タはデザインの問題に関連する要素となり ます ク ロ ッ ク ジッタによって アクティブ ク ロ ッ ク エッジ間で実際に有効な時間が削減されるため FPGA アプ リ ケーシ ョ ンで使用できる時間が制限されます

クロック ジッ タ とは図 44 に示すよ うにク ロ ッ ク ジッタ とは理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジの相違です 太線は 理想的なクロ ッ ク信号を表します 各クロ ッ ク エッジでは 理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジ間に若干のずれがあ り このずれの最大値と最小値の差異をピーク ジッ タ と呼びます ジッ タは アクテ ィブなク ロ ッ ク エッジのみに関係します たとえば シングル データ レート(SDR) アプリ ケーシ ョ ンの場合データは各立ち上がりエッジでクロ ッ ク入力され この場合のジッタは総クロ ッ ク周期から引く こ とによって求められます 一方 デュアル データ レート (DDR) の場合データは各クロ ッ ク周期の始ま り および 12 ク ロ ッ ク周期の点でクロ ッ ク入力されるため ジッ タは12 ク ロ ッ ク周期ごとに影響を与えます

図 43 高周波数 (250 MHz 以上) での LVDS クロック フォワード回路

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKx180

BUFG

BUFG

VCC

GND

OBUFDS

CLKIN

CLKFB

IBUFGDS

IBUFGDS

External Clock Feedback (LVDS)

FPGA

x462_43_061903

図 44 クロック信号におけるジッ タ

x462_44_061903

60 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

クロック ジッ タの原因ク ロ ッ ク ジッタはすべてのシステムに存在しそれを避けるこ とはできません ク ロ ッ ク ジッタの原因は システム内のノ イズのソース または不完全な信号であ り 実際 ジッ タは時間軸上における ノ イ

ズである と言えます たとえば 入力クロ ッ ク ソースには ク リ スタルからの任意の温度振動ノ イズまたは機械的な振動ノ イズによる固有のジッタ特性があ り ます 多くの同時スイ ッチ出力 (SSO) は回路基板にノ イズを追加するため 内部スイ ッチしきい値がわずかに変更し ジッ タが増加します 同様に適切に設計されていない電源供給または不十分なデカップリ ングによってもジッ タは増加します

その他のジッタの原因と しては近接した信号のクロス トーク不適切な終端 グランド バウンス電磁干渉 (EMI) などが考えられます

このアプ リ ケーシ ョ ン ノートでは Spartan-3 デジタル ク ロ ッ ク マネージャ (DCM) および FPGA 内部でのジッタ全般について説明します

クロック ジッ タ特性の理解ク ロ ッ ク ジッタの特性はさまざまな方法で定められ次のよ うにいろいろな方法でその特徴を捉えることができます

サイクル間ジッ タ

隣接サイクル ジッタ と も呼ばれるサイクル間ジッタは 図 45 に示すよ うに 1 つのクロ ッ ク サイクルと次のクロ ッ ク サイクル間でのクロ ッ ク周期の最大差異です この例ではあるクロ ッ ク サイクルと次のクロ ッ ク サイクル間の最大差異は +100 ps および -100 ps または plusmn100 ps です数百万クロ ッ ク サイクル間の計測を行う場合にはクロ ッ ク周期の変動の絶対値が大き くなる可能性があ り ますがク ロ ッ

ク サイクル間の変動が plusmn100 ps よ り大き くなるこ とはあ り ません

サイクル間ジッタは ク ロ ッ ク出力またはオシレータの特性を測定するために重要ですが アプ リ ケー

シ ョ ンのタイ ミ ング解析には有効ではあ り ません

周期ジッ タ

周期ジッタは 数百万クロ ッ ク サイクル間で計測したサイ クル間ジッタの合計です ピーク ジッ タは理想的なクロ ッ ク移行時間と比較した場合の最短および最小移行時間を示します

デジタル ク ロ ッ ク マネージャの周期ジッ タは一定ではく ピーク間ジッタ と して表されます 図 46 に示すよ うに 理論的には クロ ッ ク移行位置は理想的なクロ ッ ク位置を中心とする確率的な分散 また

はヒ ス ト グラムですが実際の分散はガウス分布ではなく二峰性分布の場合があ り ます 実際のクロ ック移行のほとんどは理想的なクロ ッ ク位置付近で起こ り ますが数百万クロ ッ ク サイクルにおける測定の結果 望ましい位置から離れた地点で起こるクロ ッ ク移行もあ り ます

理想的な位置からの統計的な距離はσ (シグマ) と呼ばれる標準偏差で測定されます DCM はすべてデジタルで機能するデザインであるため 非常に安定しており ザイ リ ンクスでは ジッ タの偏差を plusmn7σまたはピーク間ジッ タを 14σ と定めています 判断基準と して 偏差が plusmn7σ である とい う こ とは ジッタの 9999999999974 が指定されたワース ト ケース ジッ タよ り小さい値であるこ とを保証していま

図 45 サイクル間ジッ タ例

T0 T1 = T0 + 100 ps T2 = T1 - 100 ps

x462_45_062203

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 61

R

す また 14σ ピーク間ジッ タ plusmn7σ ジッタ偏差は 最大ビッ ト エラー レート (BER) が 128 x 10-12 という こ とを意味します

ユニッ ト インターバル(UI)

ジッタの仕様を単位間隔 (UI) の割合と して指定する別の方法もあ り ます 1 UI は 周波数に関わらず1 ビッ ト時間を表します ク ロ ッ クの立ち上がりエッジ または立ち下がりエッジのいずれかでデータが取り込まれるシングル データ レート (SDR) アプリ ケーシ ョ ンでは1 UI は 1 ク ロ ッ ク周期になり ます 一方 2 倍のクロ ッ ク レートでデータがクロ ッ ク入力されるデュアル データ レート (DDR) アプリケーシ ョ ンでは 1 UI が 12 ク ロ ッ ク周期になり ます

UI で指定されるピーク間ジッタ幅は 総ビッ ト周期時間に対するピーク間ジッタ値の比率です

総ジッ タの計算

『Spartan-3 データ シート 』 には CLKFXCLKFX180 以外の DCMのク ロ ッ ク出力におけるジッ タが記載されてます デジタル周波数合成 (DFS) ジッ タは 逓倍値および分周値に基づいて算出されます

データ シートには DLL からのクロ ッ ク出力 (CLKFX および CLKFX180 を除くすべてのクロ ッ ク出力) に対するワース ト ケース ジッ タが記載されています DLL ではジッ タが削減されないため DLLク ロ ッ ク出力の総ジッタには入力クロ ッ クである CLKIN のジッタおよびデータ シートに記載された値が含まれます

また DFS ク ロ ッ ク出力である CLKFX および CLKFX180 では 入力ク ロ ッ ク ジッ タがある程度削減されるため 算出された出力ジッタが総ジッタにな り ます

図 46 ピーク間周期ジッ タ例

図 47 ユニッ ト インターバルの比率で示された周期ジッ タ

Desired clock period

Measured clock period

Num

ber

of s

ampl

esPeak-to-peak Period Jitter

(14σ)

+7σ-7σ

x462_46_061903

Bit Period

Unit Interval (UI)

x462_47_061903

62 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

DLL 出力ジッ タへの入力ジッ タの加算

入力ジッタに DLL 出力ジッタを加える場合ノ イズ計算と同様に 2 乗平均平方根 (RMS) 計算を使用します

ピーク間

等式 10

ピーク間偏差

等式 11

定義

入力クロ ッ クのピーク間周期ジッ タが 150 ps (plusmn75 ps) であ り このク ロ ッ クのデューティ サイ クルがDCM の CLK0 出力と同一の周波数を使用して修正される場合について考えます

この場合 JITTERINPUT = 150 ps であ り JITTERSPEC の値は 『Spartan-3 データ シート 』 で指定されている CLKOUT_JITT_PER_0 と呼ばれる値です これは ピーク間で plusmn100 ps または 200 ps である と概算されます

したがって DCM 出力の総ジッタはピーク間で 250 ps または plusmn125 ps です

カスケード接続された DCM のジッ タ計算図 48 に 複数の DCM をカスケード接続し さまざまな出力周波数を生成しているアプ リ ケーシ ョ ンの例を示します この場合のジッタは 次によって決定されます

bull 前のソースからのジッタ

bull 使用されている DCM 出力

データ シートに記載されているよ うにジッ タ特性は各 DCM 出力によってわずかに異なり ます またDFS からの CLKFX 出力および CLKFX180 出力は 入力ジッタをある程度削減し ジッ タ値は DCMWizard で算出されます ( 「ク ロ ッ ク周波数合成」 参照して ください)

JITTERINPUT = FPGA のクロ ッ ク入力ピンで測定された入力周期ジッタ

JITTERSPEC = 『Spartan-3 データ シート 』 に記載されている適切な出力ポートに対する DLL ク ロ ッ ク出力周期ジッタ

JITTERTOTAL = 予想される総出力周期ジッタ

JITTERTOTAL JITTERINPUT( )2 JITTERSPEC( )

2+=

JITTERTOTALJITTERINPUT( )

2 JITTERSPEC( )2+

2--------------------------------------------------------------------------------------------------------plusmn=

JITTERTOTAL 150 ps( )2200 ps( )

2+ 250 ps= =

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 63

R

したがって カスケード接続された DCM チェーンの任意の点におけるジッタは前述した 2 つの要因によって決定されます 次の例では 回路上のいくつかの点で総ジッタを計算する方法を示します

例 1 すべての DCM が DLL 出力を使用する場合

この例では 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

こ こでは DCM (A) が CLK2X 出力を使用する場合について考えます また DCM 出力ジッ タに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_2X 値を使用してください この値は 400 ps (plusmn200 ps) と概算されています 等式 10 を使用しク ロ ッ ク (A) の総周期ジッタを計算します

次にDCM (B) で分周値が整数である CLKDV 出力を使用する場合について考えます またDCM 出力ジッタに対して 『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_DV1 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (B) の総周期ジッタを計算します この場合 入力ジッタ DCM (A) からのジッタ DCM (B) からのジッタを考慮する必要があるため RMS 等式は次のよ うになり ます

最後に DCM (C) が DCM (B) からの出力を 90deg位相シフ トする場合について考えます また DCM出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します この場合 入力ジッ タ DCM (A) からのジッ タ DCM (B) からのジッ タDCM (C) からのジッ タを考慮する必要があるため RMS 等式は次のよ うにな り ます

例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合

この例は DFS からの CLKFX 出力または CLKFX180 出力を使用する DCM がある点以外は 例 1 すべての DCM が DLL 出力を使用する場合と同様です

この例では 75MHz 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

例 1 と同様に まず DCM (A) が CLK2X 出力を使用する場合について考えます 出力ジッタは 次に示す等式になり ます

この例ではDCM (A) で生成された 150MHz を使用してDCM (B) で 90MHz 合成クロ ッ クを生成します DCM Wizard ( 「ク ロ ッ ク周波数合成」 を参照して ください) を使用し CLKFX_MULTIPLY=3および CLKFX_DIVIDE=5 と設定します ワース ト ケースの出力周期ジッタは 700 ps とな り ます

図 48 カスケード接続された DCM のジッ タ計算

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

A B C

x462_48_061903

JITTERTOTAL A( ) 150ps( )2400ps( )

2+ 427ps 214psplusmn= = =

JITTERTOTAL B( ) 150ps( )2400ps( )

2300ps( )

2+ + 522ps 261psplusmn= = =

JITTERTOTAL C( ) 150ps( )2 400ps( )2 300ps( )2 300ps( )2+ + + 602ps 301psplusmn= = =

JITTERTOTAL B( ) 700ps 350psplusmn= =

64 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

最後にDCM (C) が DCM (B) からの出力を 90deg位相シフ ト させる場合について考えます DCM 出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用してください この値は 300 ps (plusmn150 ps) と概算されています 次の等式を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します 次の DCM では CLKFX を使用するため 総入力ジッ タは ワース ト ケースで700 ps とな り ます 次の RMS 等式を使用し 出力ジッタを計算します

カスケード接続した DCM を使用する場合の推奨デザイン

DCM をカスケード接続して使用する場合 図 48 に示すよ うに DCM からの LOCKED 出力が次のDCM の RST 入力を制御しているこ とを確認してください カスケード接続した DCM では 1 つ前のDCM で LOCKED 出力がアサート され ク ロ ッ クが安定しているこ とが示されてた後に 入力クロ ックにロ ッ クする必要があ り ます

また DCM をカスケード接続する場合には 最もジッ タの影響を回避する必要のあるク ロ ッ ク出力が最初の DCM に接続されるよ うに DCM チェーンを構成してください

システム パフォーマンスにおけるジッ タの影響ク ロ ッ ク ジッタによっても有効なビッ ト周期が狭くな りシステム パフォーマンスが低下します 次の等式に示すよ うに FPGA アプリ ケーシ ョ ンで使用可能なビッ ト周期は 総ビッ ト周期 TBIT からいくつかの影響を差し引いたものです シングル データ レート (SDR) アプリ ケーシ ョ ンでは ク ロ ッ ク周期とビッ ト周期は一致しますがデュアル データ レート (DDR) アプリ ケーシ ョ ンのビッ ト周期はクロ ッ ク周期の 12 になり ます

定義

総ジッ タがク ロ ッ ク周期からの偏差ではな く正の値に指定されている場合 (たとえば plusmn100 ps ではなく200 ps の場合) 正の値を 2 で割り ます (100 ps) ビッ ト周期は負の偏差によってのみ短くなり 正の偏差によってはビッ ト周期が長くな り さ らにタイ ミ ング スラ ッ クが追加されます

入力クロ ッ ク信号の周波数は 75 MHz であ り ク ロ ッ ク ソースのジッ タは plusmn100 ps です アプリ ケーシ ョ ンは内部で生成された 150 MHz のクロ ッ クの立ち上がりエッジでデータを入力します また 総ビッ ト周期 TBIT は 667 ns です ジッ タの影響を考慮する と 有効なビッ ト周期 TAVAILABLE は

どのよ うになるでし ょ うか

2 逓倍クロ ッ ク回路からの CLK2X 出力によって75MHz ク ロ ッ ク入力から 150MHz ク ロ ッ クが生成されます 『Spartan-3 データ シート 』 の CLKOUT_PER_JITT_2X 仕様による と 2 逓倍クロ ッ ク出力である CLK2X には plusmn~200 ps (概算) のワース ト ケース ジッタがあ り ます 2 乗平均平方根を使用し

TBIT = ビッ ト周期時間

tTOTAL_JITTER = 総クロ ッ ク ジッ タ ク ロ ッ ク入力ジッタに DCM 出力ジッタ またはカスケード接続された DCM のジッタを加算したものです

tDUTY_CYCLE_DISTORTION = デューティ サイ クルのずれ デュアル データ レート (DDR) アプリケーシ ョ ンのみで必要であ り それ以外の場合はゼロです 使用する DCM ク ロ ッ ク出力によって データ シートに記載されている CLKOUT_DUTY_CYCLE_DLL または CLKOUT_DUTY_CYCLE_FX を使用します

JITTERTOTAL C( ) 700ps( )2300ps( )

2+ 762ps 381psplusmn= = =

TAVAILABLE TBIT tTOTAL_JITTERndash tDUTY_CYCLE_DISTORTIONndash=

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 65

R

DCM のジ ッ タplusmn200 ps にク ロ ッ ク ソースのジ ッ タ plusmn100 ps を加算する こ と によ って 総ジ ッ タtTOTAL_JITTER が plusmn0223 ns であるこ とがわかり ます

データはクロ ッ クの立ち上がりエッジでのみ入力されるためデューティ サイクルのずれが影響を与えるこ とはな く tDUTY_CYCLE_DISTORTION = 0 です

結果と して 有効な総クロ ッ ク周期 TAVAILABLE は総ビッ ト周期である 6667 ns から 6444 ns に減少します 結果と して ロジッ クは 150 MHz ではなく 1551831 MHz で動作します

クロック ジッ タを最小限にするための推奨デザイン高性能アプリ ケーシ ョ ンでは ク ロ ッ ク ジッタによって有効なビッ ト周期が短くな り ますシステム全体のクロ ッ ク ジッタを最小限にするためには次の推奨デザインを参考にしてください

適切な電力分散システム設計

電力プレーン デカップ リ ングを含む 電力分散システム (PDS) を適切に設計するこ とによって 安定した電力環境を作成し システム ジッ タを削減できます アプ リ ケーシ ョ ン ノー ト XAPP623 ではPDS の適切な設計にについて説明しています

bull XAPP623 電力分散システム (PDS) デザイン バイパスデカップリ ング キャパシタhttpwwwxilinxcomxappxapp623pdf

適切なプリン ト サーキッ ト ボードの設計

予想される動作周波数範囲およびアプ リ ケーシ ョ ン環境に適したプ リ ン ト サーキッ ト ボード設計を行ってください

bull WP174 PCB への効果的な FPGA 統合httpwwwxilinxcojppublicationswhitepaperswp_pdfwp174pdf

bull PCB チェッ ク リ ス トhttpsupportxilinxcomxlnxxil_prodcat_productjsptitle=si_pcbcheck

同時スイッチ出力 (SSO) の推奨デザイン

DCM へのク ロ ッ ク入力 または DCM からのク ロ ッ ク出力の信号に関連した問題を回避するために『Spartan-3 データ シート 』 に記載されている同時スイ ッチ出力 (SSO) 仕様に沿っているこ とを確認して ください

また 可能な限り DCM の入力または出力をスイ ッチング回数の多い IO の近くに配置するこ とを避けてください 特に 出力電圧幅が大きい IO または駆動電流が高い IO の場合にはこのこ とが重要です

仮想グランド ピンを DCM 入力および出力接続の近くに配置

さまざまな影響を受けやすく高周波数である DCM の入力または出力では仮想グランド ピンのよ うなユーザー IO ピンを追加して PCB へ別の接続を作成します このよ うな仮想グランド ピンは ジッタの影響を受けやすい DCM 信号に近接する IO パッ ドに配置して ください IO パッ ドは パッケージのピンまたはボール上だけでなく FPGA のダイ レベルでも近接しているこ とを確認して くださいBGA パッケージ上で隣接しているボールは 必ずしも FPGA 上にある隣接したパッ ドに接続する必要はあ り ません このよ うに設計するこ とによって 内部電圧降下が軽減され ジッ タが削減されます

仮想グランドを作成する場合は図 49 に示すよ うに IOB を GND (Low ロジッ ク レベル) を駆動する出力と して設定し その IOB を外部で直接グランド プレーンに接続します

tTOTAL_JITTER 100psplusmn( )2 200psplusmn( )2+ 22360psplusmn 0223nsplusmn= = =

TAVAILABLE 6667ns 0223nsndash 6444ns= =

66 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

VCCAUX 考察

デジタル ク ロ ッ ク マネージャは VCCAUX 入力によって電源が供給されます FPGA への電源供給入力である VCCAUX の過剰ノ イズは DCM の特性 特にジッタ特性を低下させます DCM のパフォーマンスを最適にするために 次に従ってください

1 図 50 に示すよ うに VCCAUX 電源供給 またはグランド上の変動を 1 ms 間で 10 mV よ り小さ くして ください この制限によって DCM は変動に適切に対応して動作します

2 図 50 に示すよ うに 電源供給のノ イズをピーク間で 200 mV 以内にして ください

3 VCCAUX および VCCO が同一の電源プレーンにある場合 すべての VCCAUXVCCO ピンを適切にデカップリ ングまたはバイパスする必要があ り ます ( 「適切な電力分散システム設計」 を参照してください) また 上記の 1 および 2 を維持できない場合 VCCAUX と VCCO を分離して使用してください

4 特に CLK2X 出力は電源シフ ト またはグランド シフ トの影響を受けます したがって すべての IOB および CLB でスイ ッチングがある場合には CLKFX_MULTIPLY =2 および CLKFX_DIVIDE=1 と設定されている CLKFX 出力はよ り よい特性を持つ出力を供給します DFS モードの場合 CLK2X 出力の更新が遅いのに対して CLKFB 迂回回路では 3 入力クロ ッ クごとにタ ップが更新されます

FACTORY_JF 設定の修正

適切に設計され 安定し 適切にデカップリ ングされた電源供給が FPGA 内のクロ ッ ク スキューおよびジッタを低減するためにもっと も有効な方法ですが FACTORY_JF 属性を 0xFFFF に設定することによって 問題の発生しているボード上のジッタを低減できる場合があ り ます FACTORY_JF=FFFF の場合 DCM はおよそ 20 入力クロ ッ クごとにタ ップ設定を更新し 周波数を基にしたデフォルト設定よ り もタ ップ更新の間隔は短くな り ます

図 49 DCM 入力または出力クロック信号への仮想グランド ピンの使用

IBUFG

OBUF

OBUF

To DCMCLKIN Input

Sensitive DCMClock Input

FPGAldquoVirtualrdquoground pin

Direct connectionto PCB groundplane

GND

GND

x462_49_061903

図 50 電圧降下を回避するための VCCAUX 考察

VCCAUXSupply(at FPGA)

dV lt 10 mV

dt lt 1 mS

Keep VCCAUX noiseenvelope to lt 200 mVpeak-to-peak

Avoid sudden changes fromone DC level to anotherKeep dVdt lt 10mVmS x462_50_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 67

R

ただし FACTORY_JF の設定値を大き くするこ とによって DCM では遅延ラインが頻繁に更新されジッ タがわずかに増加する (~30 ps) 可能性もあるため FACTORY_JF のデフォルト設定は最大値ではあ り ません 電源供給が不安定の場合には 発生した位相エラーが増加したジッタよ り大きい場合があり この場合には FACTORY_JF の設定値を大き くするこ とによって デザインのパフォーマンスを向上できます

その他 ビッ トス ト リーム生成の設定

DCM では 次の 2 つのビッ ト ス ト リーム生成 (BitGen) オプシ ョ ンがあ り ます

bull -g lck_cycle このオプシ ョ ンを使用する場合インスタンシエート された DCM で LOCKED 出力がアサート されるまで FPGA のコンフ ィギュレーシ ョ ン スタート アップ シーケンスを遅らせるこ とができます

bull -g DCMShutdown このオプシ ョ ンを使用する場合JTAG ポート を使用した部分再コンフ ィギュレーシ ョ ン または全体の再コンフ ィギュレーシ ョ ンを実行中に コンフ ィギュレーシ ョ ン ロジックに SHUTDOWN コマンドがロード される と DCM ロジッ クがリセッ ト されます

Project Navigator でのビッ トス ト リーム生成オプシ ョ ン

ISE 52i Project Navigator を使用する場合は 図 51 に示すよ うに [Processes for Source] ウ ィンド ウで [Generate Programming File] を右ク リ ッ ク し [Properties] を選択するこ とによってビッ ト ス トリーム生成オプシ ョ ンを設定します

詳細は 「BitGen スイ ッチおよびオプシ ョ ン」 を参照してください

コマンド ライン またはスクリプ ト を使用したビッ トス ト リーム生成オプシ ョ ン

設定可能なオプシ ョ ンを表示するためには 次のコマンドを入力します

bitgen -help spartan3

DCM LOCKED 出力とコンフ ィギュレーシ ョ ン ロジックの設定

DCM の STARTUP_WAIT 属性を使用するこ とによってDCM で LOCKED 出力がアサート されるまで FPGA で DONE 信号がアサート されるを遅らせFPGA のコンフ ィギュレーシ ョ ン スタート アップロジッ クを待たせるこ とができます ただし このためには設計段階で次の二つの設定を行う必要があり ます まず ロ ッ ク状態になってからコンフ ィギュレーシ ョ ンを完了する必要がある各 DCM に対するSTARTUP_WAIT 属性を TRUE に設定します 次に各信号がスタート アップの 6 ク ロ ッ ク サイクルで 図 52 に示すよ うに動作するよ うにビッ ト ス ト リーム生成オプシ ョ ンを変更します デバイスがコンフ ィギュレーシ ョ ン スタート アップ シーケンスを完了するためにはDCM が LOCKED をアサート後に十分なコンフ ィギュレーシ ョ ン ク ロ ッ ク サイ クルが必要です

図 51 Project Navigator でのビッ トス ト リーム生成 (BitGen) オプシ ョ ン

Processes for Current Source

Generate Programming File

Programming File Generation Report

RunRerunRerun AllStopOpen without Updating

Properties

x462_51_061903

68 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他R

A FPGA 内部のグローバル ト ラ イ ステート信号 (GTS_cycle) を開放し すべての IO 信号をイネーブルにします

B GTS_cycle 後に DCM で LOCKED がアサート されるまでスタート アップ ロジッ クが待機するよにサイクルを設定します DCM では クロ ッ ク信号でロ ッ ク状態になる前に ク ロ ッ クおよび可能ならばフ ィードバッ ク信号のよ うな外部入力が必要です

C DCM がロ ッ ク状態になった後 FPGA の内部グローバル書き込みイネーブル (GWE_cycle) 信号をアサート します

D 最後に 内部の DONE 信号をアサート します

図 53 に Project Navigator を使用したオプシ ョ ン設定を示します

スタート アップ位相タイ ミ ングおよび GWE_cycle と DONE_cycle のタイ ミ ングには柔軟性があ り ますがDCM で STARTUP_WAIT 属性を使用する場合は必ず LCK_cycle の前に GTS_cycle がなければなり ません シーケンスがこのよ うになっていない場合にはDCM がロッ クせずコンフ ィギュレーシ ョ ンが完了しません

図 52 DCM LOCKED 出力とスタートアップ ロジックの相互関係

0 1 2 3 4 5 6

DONE_cycle

Start-up CLK

GTS_cycle

GWE_cycle

LCK_cycle

Start-up Cycles

A

B

C

D

x462_52_062403

図 53 BitGen オプシ ョ ン

Process Properties

Startup options

Value

CCLK

6

3

5

4

Default (NoWait)

General Options Configuration Options Readback Options

Property Name

FPGA Startup Clock

Enable Internal Done Pipe

Done (Output Events)

Enable Outputs (Output Events)Release Write Enable (Output Events)Release DLL (Output Events)

Match Cycle (Output Events)

Drive Done Pin High

OK Cancel Default Help

Optionally set GWE_cycle to follow GTS_cycleensuring DCM(s) reset afterIOs activate

LCK_cycle indicates cyclewhere start-up logic waitsfor DCM(s) to assertLOCKED

Done_cycle after LCK_cycle GTS_cycle must occur

before LCK_cycle to enableIO pins

[Startup options]

[OK] x462_53_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 69

R

JTAG を使用した部分再コンフ ィギュレーシ ョ ンまたは全体の再コンフ ィギュレーシ ョ ン中の DCM リセッ ト

も う 1 つのビッ ト ス ト リーム オプシ ョ ンと して SelectMAP を使用した部分再コンフ ィギュレーシ ョン中 または JTAG ポート を使用した全体および部分再コンフ ィギュレーシ ョ ン中に FPGA にあるすべての DCM を リセッ トできます このオプシ ョ ンを使用する場合 SHUTDOWN コマンド シーケンス中に AGHIGH コンフ ィギュレーシ ョ ン コマンドが発行される とDCM がリセッ ト されます JTAGを使用して再コンフ ィ ギュレーシ ョ ンを行う場合には 必ず DCM を リ セッ トする必要があ り ますProject Navigator でビッ ト ス ト リーム生成オプシ ョ ンを変更するためには (「Project Navigator でのビット ス ト リーム生成オプシ ョ ン」 を参照) 図 54 に示すよ うに Configuration options タブをク リ ッ クし [Reset DCM if SHUTDOWN amp AGHIGH performed] オプシ ョ ンのチェッ ク ボッ クスをオンにして ください

一時的な CLKIN の停止厳密なアナログ測定を行っている間のシステム全体のノ イズを削減するため FPGA アプリ ケーシ ョ ンのその他の部分に影響を与えるこ とな く 一時的に DCM へのクロ ッ ク入力を停止できます これが可能である理由の一部はDCM がすべてデジタルで安定して機能するシステムであるためです DCM では最初に入力クロ ッ クに対してロ ッ ク し次に LOCKED 出力をアサートする必要があ り ます DCM がリセッ ト しない場合には デスキュー回路にほとんど影響を与えずに CLKIN 入力クロ ッ クを一時的に停止できますが 次の条件を満たす必要があ り ます

bull デバイスが冷却するこ とによるタ ップ遅延の変化の影響を最小限にするために ク ロ ッ クの停止時

間は 100 ms 未満である必要があ り ます

bull ク ロ ッ クが Low である間に停止する必要があ り12 周期分の High から再開する必要があ り ます

上述の条件は理論的にはクロ ッ ク入力ジッタの仕様に違反しますがDCM の LOCKED 出力は Highを維持し ク ロ ッ クが再び動作する際にも High を維持しています したがって LOCKED が High であるこ とは必ずしも有効なクロ ッ クが使用可能であるこ とにはなり ません このため実際にはクロ ック入力ジッタの仕様に違反していますが これらの条件を満たす限り問題はあ り ません

CLKIN を停止する際にはDCM のデジタル遅延ラインにあるクロ ッ クが出力されるため 1 から 8 出力クロ ッ ク サイクルが生成されます 同様に CLKIN が再開する場合には 遅延ラインが満たされる

図 54 再コンフ ィギュレーシ ョ ン中に DCM をリセッ トするためのコンフ ィギュレーシ ョ ン オプシ ョ ン

Process Properties

Configuration options

ValuePull Up

Pull UpFloatPull UpPull Down0xFFFFFFFF

General Options Startup options Readback Options

Property NameConfiguration Pin DoneJTAG Pin TCKJTAG Pin TDIJTAG Pin TDOJTAG Pin TMSUnused IOBsUserID Code (8 Digit Hexadecimal)Reset DCM if SHUTDOWN amp AGHIGH performed

OK Cancel Default Help

Click Configuration options tab

Click OK when finished

Pull Up

Check to reset all the DCMsin the FPGA if the AGHIGHcommand issued duringSHUTDOWN sequence

x462_54_062103

70 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

参考資料R

までの 1 から 4 ク ロ ッ クサイ クル間は出力クロ ッ クが生成されません 通常 遅延ラインが満たされるためは 2 または 3 ク ロ ッ ク サイ クルが必要です

また 入力ク ロ ッ クを停止するこ とによって 位相シフ ト を行う こ とができます この位相シフ トは

DCM による制御を中断させるこ とな く 1 から 4 ク ロ ッ ク サイクル後のクロ ッ ク出力から影響を与えます

図 55 に CLKIN 入力クロ ッ クを一時的に停止する例を示します また この図には CLK2X ク ロ ッ ク出力への影響も示しています

参考資料 bull 『Spartan-3 データ シート 』 (モジュール 2) デジタル  ク ロ ッ ク  マネージャの特長および機能httpwwwxilinxcojpbvdocspublicationsds099-2pdf

bull 『Spartan-3 データ シート 』 (モジュール 3) タイ ミ ングおよびジッタ特性

httpwwwxilinxcojpbvdocspublicationsds099-3pdf

bull ザイ リ ンクス ISE 52i ライブラ リ ガイ ドDCM プリ ミ ティブhttptoolboxxilinxcomdocsanxilinx5pdfdocsliblibpdf

bull Architecture Wizard 録音版 Web セミナーhttpsupportxilinxcojpsupporttrainingjapan-home-pagehtm

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcojpxappxapp622pdf

bull 『開発システム リ ファレンス ガイ ド』 15 章 「BitGen」 ビッ ト ス ト リーム生成プログラムおよびオプシ ョ ン 335-367 ページhttptoolboxxilinxcomdocsanxilinx5pdfdocsdevdevpdf

図 55 CLKIN の一時的な停止

CLKIN

CLK2X

Clock input must bestopped in Low phase andfor no more than 100 ms

When restarted the clockinput must generate a fullHigh half-period

x462_55_062403

改訂履歴

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 71

R

改訂履歴 次の表に このアプリ ケーシ ョ ン ノートの改訂履歴を示します

日付 バージョ ン 履歴

20030709 10 初版リ リース

  • Spartan-3 FPGA におけるデジタル クロック
  • マネージャ (DCM) の使用
    • 概要
    • はじめに
    • 概要
    • DCM 位置および クロック分散 ネットワーク インターフェイス
    • DCM 機能の概要
      • 遅延ロック ループ (DLL)
      • デジタル周波数合成 (DFS)
      • 位相シフト (PS)
      • ステータス ロジック
        • DCM プリミティブ
          • シンボル
          • 接続ポート
          • 属性プロパティおよび制約
            • その他のザイリン クス FPGA ファ ミリとの互換性
            • DCM 使用のため のクロック条件
              • 入力クロック周波数範囲
              • 出力クロック周波数範囲
              • クロック入力およびクロック フィードバック入力の変動
                • LOCKED 出力
                • RST 入力
                • DCM Wizard
                  • DCM Wizard の起動
                    • Windows のスタート ボタンから起動
                    • Project Navigator から起動
                      • Wizard 選択
                      • [General Setup]
                      • アドバンスド オプション
                      • クロック バッファ
                      • クロック周波数合成
                      • HDL 出力の生成
                        • VHDL および Verilog のインス タンシエーション
                          • Project Navigator の言語テンプレート
                          • VHDL および Verilog リファレンス ファイル
                            • クロック スキュー の低減
                              • クロック スキューとは
                              • クロック スキュー パフォーマンス低下の原因
                              • スキューの削除
                              • 過去のクロック動作から将来のクロック動作を予測
                              • ターゲットのロック
                              • 安定した単調なクロック入力
                              • 確実なソースからのフィードバック
                              • 内部クロック信号からのスキュー削除
                              • 外部クロック信号からのスキュー削除
                                • コンフィギュレーション後の DCM リセット
                                • なぜリセットする必要があるのか
                                  • 遅延ロック ループとは
                                    • 遅延ロック ループ (DLL)
                                    • 位相ロック ループ (PLL)
                                    • インプリメンテーション
                                    • DLL と PLL
                                      • スキュー調整
                                        • システム同期
                                        • ソース同期
                                        • タイミングの比較
                                            • クロック調整
                                            • 位相シフト- ク ロック周期の分数 でクロックを遅延
                                              • 12 クロック周期位相シフト出力
                                                • 12 周期位相シフト出力によるデューティ サイクルのずれの削減
                                                • デュアル データ レート (DDR) クロックの例
                                                  • 14 位相シフト出力
                                                    • DLL 周波数モードによる出力の有効性
                                                    • 5050 デューティ サイクル調整オプション
                                                    • 4 つの位相遅延クロックエッジ位相パルス
                                                      • ファイン位相シフト
                                                      • 固定ファイン位相シフト
                                                        • 固定ファイン位相シフト範囲
                                                        • 最小位相シフト
                                                        • その他の考察点
                                                        • DCM Wizard
                                                          • 動的ファイン位相シフト
                                                            • 動作
                                                            • 動的ファイン位相シフト範囲
                                                            • 制御
                                                            • DCM Wizard
                                                            • アプリケーション例
                                                                • クロック逓倍 クロック分周 周波数合成
                                                                  • 周波数合成アプリケーション
                                                                  • 入力クロックおよび出力クロックの周波数条件
                                                                  • 2 逓倍クロック (CLK2XCLK2X180)
                                                                  • クロック分周 (CLKDV)
                                                                    • CLKDV クロック調整
                                                                    • CLKDV のジッタは周波数モードおよび属性値が整数か整数ではないかによって決定されます
                                                                    • DCM Wizard
                                                                      • 周波数合成回路 (CLKFXCLKFX180)
                                                                        • DCM Wizard
                                                                            • クロックのフォ ワードミラー リバッファ
                                                                            • クロック ジッタお よび位相ノイズ
                                                                              • クロック ジッタとは
                                                                              • クロック ジッタの原因
                                                                              • クロック ジッタ特性の理解
                                                                                • サイクル間ジッタ
                                                                                • 周期ジッタ
                                                                                • ユニット インターバル(UI)
                                                                                  • 総ジッタの計算
                                                                                    • DLL 出力ジッタへの入力ジッタの加算
                                                                                      • カスケード接続された DCM のジッタ計算
                                                                                        • 例 1 すべての DCM が DLL 出力を使用する場合
                                                                                        • 例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合
                                                                                        • カスケード接続した DCM を使用する場合の推奨デザイン
                                                                                          • システム パフォーマンスにおけるジッタの影響
                                                                                              • クロック ジッタを最小限にするための推奨デザイン
                                                                                                • 適切な電力分散システム設計
                                                                                                • 適切なプリント サーキット ボードの設計
                                                                                                • 同時スイッチ出力 (SSO) の推奨デザイン
                                                                                                • 仮想グランド ピンを DCM 入力および出力接続の近くに配置
                                                                                                • VCCAUX 考察
                                                                                                • FACTORY_JF 設定の修正
                                                                                                    • その他
                                                                                                      • ビットストリーム生成の設定
                                                                                                        • Project Navigator でのビットストリーム生成オプション
                                                                                                        • コマンド ラインまたはスクリプトを使用したビットストリーム生成オプション
                                                                                                        • DCM LOCKED 出力とコンフィギュレーション ロジックの設定
                                                                                                        • JTAG を使用した部分再コンフィギュレーションまたは全体の再コンフィギュレーション中の DCM リセット
                                                                                                          • 一時的な CLKIN の停止
                                                                                                            • 参考資料
                                                                                                            • 改訂履歴
Page 11: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 11

R

属性 プロパティ および制約

表 4 にデジタル ク ロ ッ ク マネージャの属性を示しますすべての属性は設計段階で設定されコンフ ィギュレーシ ョ ン中にプログラムされます 動的ファイン位相シフ ト以外では FPGA アプリ ケーシ ョ ンの実行中にこれらの設定を変更するこ とはできません 使用するデザイン入力ツールに合わせて lt属性gt=lt設定gtを使用し 属性を設定します

表 4 DCM 属性

属性 可能な設定および説明

DLL_FREQUENCY_MODE CLKIN 入力 PSCLK 入力 および遅延ロッ ク ループ (DLL) からの出力クロ ッ クの有効周波数範囲を指定します DLL ク ロ ッ ク出力には CLK0 CLK90 CLK180 CLK270CLK2X CLK2X180 CLKDV が含まれます

CLK_FEEDBACK フ ィードバッ ク ク ロ ッ クの周波数を指定します

DUTY_CYCLE_CORRECTION DLL からの出力である CLK0 CLK90 CLK180 および CLK270 に対する 50 デューティ サイ クル調整をイネーブルまたはディ スエーブルに設定します

CLKDV_DIVIDE CLKDV 出力の周波数を指定します 設定可能な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 です

CLKDV_DIVIDE が整数ではない場合 ロ ッ クするために必要な時間が長くなり 出力ジッ タが増加します

CLKFX_MULTIPLY CLKFX 出力および CLKFX180 出力の周波数を逓倍する場合の係数を指定します この値は CLKDV_DIVIDE 属性の値と と もに使用されます CLKFX_MULTIPLY に設定可能な範囲は整数値の 2 から 32 であ り デフォルトは 4 です

LOW デフォルトです DLL は低周波数モードで動作し DLL に関連したすべての出力が有効です ク ロ ッ ク入力およびクロ ッ ク出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DLL の指定範囲内にあ り ます

HIGH DLL は高周波数モードで動作します 2 逓倍クロ ッ ク (CLK2X CLK2X180) 出力 および 14 位相シフ ト出力 CLK90 と CLK270 は無効です CLKDV_DIVIDE 属性が整数以外の場合 CLKDV 出力のデューティ サイクルは 50 になり ません ク ロ ッ ク入力およびクロ ッ ク出力の周波数は『Spartan-3 データ シート 』 に記載されている高周波数 DLL の指定範囲内にあり ます

1X デフォルトであ り CLK0 フ ィードバッ クです周波数は CLKIN と同一です

2X CLK2X フ ィードバッ クであ り 周波数は CLKIN の 2 倍です

なし フ ィードバッ ク ク ロ ッ クはあ り ません CLKFX 出力または CLKFX180 出力のみを使用している場合に可能です

TRUE デフォルトであ り デューティ サイクルは 50 に調整されます

FALSE デューティ サイクル調整は行われません

FCLKDVFCLKIN

CLKDV_DIVIDE--------------------------------------------------=

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

12 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM プリ ミテ ィブR

CLKDV_DIVIDE CLKFX 出力および CLKFX180 出力の周波数を分周する場合の係数を指定します この値は CLKFX_MULTIPLY 属性の値と と もに使用されます設定可能な範囲は整数値の 1 から 32 であ り デフォルトは 1 です

PHASE_SHIFT この属性は CLKOUT_PHASE_SHIFT 属性が FIXED または VARIABLE に設定されている場合にのみ使用できます CLKIN とすべての DCM ク ロ ッ ク出力間の立ち上がりエッジにおけるスキューをコンフ ィギュレーシ ョ ンで定義し DCM ク ロ ッ ク出力を位相シフ ト させます

スキューまたは位相シフ ト値は整数で指定されます この整数値は 次の等式に示すよ うに

ク ロ ッ ク周期の分数で表され範囲は -255 から 255 になり ますデフォルト値は 0 であ り実際に設定可能な値は入力クロ ッ ク周波数によって異なり ます また TCLKIN gt FINE_SHIFT_RANGE の場合には 実際の範囲はよ り小さ くな り ますFINE_SHIFT_RANGE は遅延ラインにおけるすべてのタ ップの総遅延を示します 詳細は「ファ イン位相シフ ト 」 を参照してください

CLKOUT_PHASE_SHIFT 位相シフ ト モードを指定します PHASE_SHIFT 制約と共に使用し DCM のデジタル位相シフ ト (DPS) 機能をインプリ メン ト します また この設定は DLL および DFS からのすべてのクロ ッ ク出力に反映されます 詳細は 「ファ イン位相シフ ト 」 を参照してください

DESKEW_ADJUST FPGA ク ロ ッ ク入力ピンと DCM 出力クロ ッ ク間のクロ ッ ク遅延調整を制御します 「スキュー調整」 を参照してください

この設定を DCM ク ロ ッ ク出力の位相シフ トに使用しないでください 正確な位相シフ ト を行う場合にはCLKOUT_PHASE_SHIFT 制約または PHASE_SHIFT 制約を使用してください

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

FCLKFX FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull=

なし デフォルトです CLKIN および CLKFB は同位相 (スキューなし ) であ り位相関係は変更できません PHASE_SHIFT = 0 の場合の FIXED 設定と同一です

FIXED 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定され アプ リ ケーシ ョ ンでは変更できません

VARIABLE 位相関係は コンフ ィギュレーシ ョ ンで PHASE_SHIFT 属性によって設定されますが 動的位相シフ ト制御信号 PSEN PSCLK PSINCDEC および PSDONE を使用してアプリ ケーシ ョ ンで変更可能です

SYSTEM_SYNCHRONOUS デフォルトであ り すべてのデバイスがシステム全体

に共通のクロ ッ ク ソースで動作します

SOURCE_SYNCHRONOUS データ ソースから クロ ッ クが入力されます ソース同期アプリ ケーシ ョ ンがその一例です

DCM プリ ミテ ィブ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 13

R

DFS_FREQUENCY_MODE DCM のデジタル周波数合成 (DFS) からのクロ ッ ク出力である CLKFX および CLKFX180 に有効な周波数範囲を指定します DLL ク ロ ッ ク出力が使用されている場合はDLL_FREQUENCY_MODE によって CLKIN 入力の周波数範囲がよ り制限されます

STARTUP_WAIT DCM の LOCKED 信号のアサート よ り先に FPGA コンフ ィギュレーシ ョ ンの DONE 信号を High にするかど うかを制御します

2 つ以上の DCM をコンフ ィギュレーシ ョ ンしている場合は すべての DCM がロ ッ クする必要があ り ます

CLKIN_DIVIDE_BY_2 CLKIN が DCM ブロ ッ クに入力される前に 周波数を 2 分周します アプリ ケーシ ョ ンによっては 入力クロ ッ クの周波数を適切な範囲内に低減できます

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

LOW デフォルトであ り DFS は低周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている低周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合 CLKIN 入力の周波数範囲はその出力によって変化します

HIGH DFS は高周波数モードで動作します CLKFX 出力および CLKFX180 出力の周波数は 『Spartan-3 データ シート 』 に記載されている高周波数 DFS の指定範囲内である必要があ り ます また DLL ク ロ ッ ク出力を使用している場合CLKIN 入力の周波数範囲はその出力によって変化します

FALSE デフォルトであ り DCM がロ ッ ク状態になるのを待たずに DONE 信号がアサート されます

TRUE DCM がロ ッ ク状態になるまで DONE 信号は High になり ません ただし この STARTUP_WAIT は LOCKED 信号が High になるのを妨げるものではあり ません またFPGA のスタート アップ シーケンスのサイクルの始めに LCK (ロ ッ ク ) サイクルを挿入するよ うに修正する必要があ り ます ( 「ビッ ト ス ト リーム生成の設定」 を参照してください) 通常は DONE サイクルまたは GWE サイクルがその後に続きます

FALSE デフォルトであ り CLKIN は直接 DCM ブロ ッ クに入力されます

TRUE CLKIN が DCM に入力する前に その周波数を 2 分周され デューティ サイクルは約 50 に調整されます これは 高周波数のクロ ッ クを使用し DCM の入力クロ ッ クの周波数条件またはデューティ サイ クル条件を満たす場合に有効です また 周波数モードを決定する場合 または位相シフ ト範囲を算出する場合に クロ ッ ク周波数を 2 分周します

14 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他のザイリンクス FPGA ファ ミ リ との互換性R

その他のザイリンクス FPGA ファミ リ との互換性

Spartan-3 のデジタル ク ロ ッ ク マネージャ (DCM) は Virtextrade-II および Virtex-II Pro FPGA ファ ミ リで使用されている DCM とほぼ同様の機能を持ちますが Spartan-3 DCM は第三世代の DCM デザインであ り さ らに機能が向上しています 特に Virtex-II デバイス と比較する と Spartan-3 デバイスはVCCAUX 供給電源における ノ イズ耐性が改善されVirtex-IIPro ファ ミ リ よ り も位相シフ ト機能に柔軟性があ り ます 出力の周波数制限値はVirtex-II および Virtex-II Pro ファ ミ リの DCM の方が高くなっています

またSpartan-IIIIE と比較する と Spartan-3 DCM の遅延ロッ ク ループ (DLL) 機能は大幅に改善され Spartan-IIIIE DLL の機能をすべて備えているだけでなく 周波数合成および位相シフ ト機能が追加されました Spartan-3 の周波数合成では 最大 32 までの係数を使用して入力クロ ッ クを逓倍しますが Spartan-IIIIE DLL での周波数合成機能は 2 逓倍までです 同様に Spartan-3 DCM の分周機能はSpartan-II DLL よ り広範囲に対応しています

DCM 使用のためのクロック条件

DCM は その機能に最大限の柔軟性があるよ うに設計されていますが ク ロ ッ クの周波数と安定性周波数の変動 およびクロ ッ ク ジッタにいくつかの条件があ り ます

入力クロック周波数範囲

DCM のクロ ッ ク入力周波数は アプ リ ケーシ ョ ンにおける DLL ユニッ ト DFS ユニッ ト またはその両方によって決定されます

表 5 に デジタル周波数合成 (DFS) ユニッ トでの入力クロ ッ クCLKIN の周波数範囲を示します DFS ユニッ ト を単独で使用する場合の周波数範囲は DLL 入力ニッ ト よ り も広くな り ますが 両ユニッ ト を使用する場合には よ り厳しい周波数条件を DLL に適用する必要があ り ます 表には データ シートに記載されている仕様名および概算値の 1 つを示していますが実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

FACTORY_JF DCM の DLL ユニッ トでタ ップ設定を修正する頻度を制御します この設定は DLL エレメン トのジッ タ特性に影響を与え DLL_FREQUENCY_MODE 属性に基づいて自動的に指定されます

設計方法と して推奨された場合以外は デフォルト設定を変更しないでください (「FACTORY_JF 設定の修正」 を参照してください)

LOC 図 1 に示すよ うに DCM の物理的な配置位置を指定します

表 4 DCM 属性 (Continued)

属性 可能な設定および説明

DLL_FREQUENCY_MODE FACTORY_JF

LOW 0xC080

HIGH 0xF0F0

DCM_X0Y0 DCM の左下

DCM_X1Y0 DCM の右下 (XC3S50 では設定不可)

DCM_X0Y1 DCM の左上

DCM_X1Y1 DCM の右上 (XC3S50 では設定不可)

DCM 使用のためのクロック条件

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 15

R

表 6 に遅延ロッ ク ループ (DLL) ユニッ トでの入力クロ ッ ク CLKIN の周波数範囲を示します DLLが単独で使用されている場合と DFS と と もに使用されている場合では 同一の周波数条件が適用されます 表には低周波数モードおよび高周波数モードの場合の DLL の周波数範囲を示しています この周波数モードはDLL_FREQUENCY_MODE 属性によって指定されます 表にはデータ シートに記載されている仕様名および概算値の 1 つを示していますが 実際の値はデザインに必要なスピード グレートによって変化し 概算値よ り もデータ シートで指定されている値を優先します

出力クロック周波数範囲

DCM の出力クロ ッ クに対しても周波数範囲が指定されています 詳細は 「入力クロ ッ クおよび出力クロ ッ クの周波数条件」 を参照して ください

クロック入力およびクロック フ ィードバック入力の変動「安定した単調なクロ ッ ク入力」 で説明するよ うに DCM では安定性があ り単調なクロ ッ ク入力を使用する必要があ り ます しかし DCM 機能の柔軟性を最大限に使用しよ う とする場合 CLKIN で発生するクロ ッ ク ジッタおよび CLKIN 入力と CLKFB 入力の変動をある程度まで許容しなければなり ません

CLKIN 入力におけるジッタには 2 つのタイプがあ り ます 1 つはサイ クル間ジッタであ り このジッタは CLKIN 入力周期があるサイ クルから次のサイ クル間でどの程度の変化を許容できるかを示します 表 7 にデータ シートに記載されている仕様名および概算値を含むサイクル間ジッタの最大許容範囲を示します

表 5 デジタル周波数合成 (DFS) ユニッ トのクロック入力周波数範囲

機能 最小周波数 最大周波数

デジタル周波数合成 (DFS) CLKIN_FREQ_FX_MIN ~ 100 MHz

CLKIN_FREQ_FX_MAX ~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 6 遅延ロック ループ ユニッ トのクロック入力周波数範囲

機能

DLL 周波数モード属性 (DLL_FREQUENCY_MODE)

= LOW = HIGH

最小周波数 最大周波数 最小周波数 最大周波数

遅延ロ ッ ク ループ (DLL)

CLKIN_FREQ_DLL_LF_MIN

~ 24 MHz

CLKIN_FREQ_DLL_LF_MAX

~ 180 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 48 MHz

CLKIN_FREQ_DLL_HF_MIN

~ 326 MHz

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 7 サイクル間ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_CYC_JITT_FX_LF~ plusmn300 ps

CLKIN_CYC_JITT_FX_HF~ plusmn150 ps

遅延ロッ ク ループ (DLL) CLKIN_CYC_JITT_DLL_LF~ plusmn300 ps

CLKIN_CYC_JITT_DLL_HF~ plusmn150 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

16 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

LOCKED 出力R

も う 1 つのジッタは 周期ジッタ と呼ばれ クロ ッ ク周期間の最大変動を示します サイクル間ジッタがあるサイクルと次のサイクルの差を示すのに対し 周期ジッタはクロ ッ ク周期全体での変化範囲を示

します 表 8 にデータ シートに記載されている仕様名および概算値を含む周期ジッタの最大許容範囲を示します

DCM の安定性に影響を与える別の要素は DLL で使用される ク ロ ッ ク フ ィードバッ ク パスですフ ィードバッ ク パス遅延の変動は 表 9 に示す範囲内でなければな り ません ただし グローバル クロ ッ ク ラ インに接続される場合はチップ上の変動が最小になるため こ こに示した範囲制限は外部フ ィードバッ ク パスにのみ適用されます

LOCKED 出力 DCM の LOCKED 出力は すべての DCM 機能が CLKIN 入力にロ ッ ク している こ と を示し ますLOCKED 信号がアサート される場合にはFPGA アプリ ケーシ ョ ン内で出力クロ ッ クを使用できます

図 5 に LOCKED 出力信号の動作を示しますLOCKED 出力は FPGA のコンフ ィギュレーシ ョ ン終了直後に Low になり RST 入力がアサート されている場合は常に Low です

コンフ ィギュレーシ ョ ン後 DCM は CLKIN 信号の有効無効に関わらず 常にロ ッ ク状態になろ う とします入力クロ ッ クが安定していない場合にはCLKIN 入力が安定するまでFPGA 回路 で RST 入力をアサートする必要があ り ますDLL では CLKIN 入力および CLKFB 入力の両方を使用し これらの立ち上がりエッジが同位相である時に完全にロ ッ ク状態であるこ とを確認しますDFS ではCLKINを使用してク ロ ッ クの周波数が有効であるかを確認します また DCM がロ ッ ク状態になるために数千クロ ッ ク サイクルのサンプルが必要となる場合があ り ます

DCM の CLKIN に対するロッ クが完了する とLOCKED 出力が High にアサート されDCM のクロ ック出力が有効となるため FPGA アプリ ケーシ ョ ン内でこれらの出力を使用できます 『Spartan-3 データ シート 』 の タイ ミ ングに関する章には ロ ッ クに必要な時間のワース ト ケースが記載されています通常 クロ ッ ク周波数が高いほどDLL 出力は短時間でロッ ク状態になり ます またDFS 出力がロックするためには非常に長い時間が必要とな り ます この時間は 逓倍または分周の係数によって変化し

ますが これらの係数が小さいほど時間は短縮します

システム ク ロ ッ クが安定してから FPGA のコンフ ィギュレーシ ョ ンを完了させるために オプシ ョ ンと して DCM がロ ッ ク状態になるまでコンフ ィギュレーシ ョ ンの完了を遅らせるこ とができます この機能は STARTUP_WAIT 属性で制御します

LOCKED が High になる前の DCM ク ロ ッ ク出力信号の動作は保証していません LOCKED が Highになる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な波形が含まれている場合があ ります

表 8 周期ジッ タの最大許容範囲

機能ユニッ ト周波数モード

Low High

デジタル周波数合成 (DFS) CLKIN_PER_JITT_FX_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_FX_HF~ plusmn1000 ps (plusmn1 ns)

遅延ロッ ク ループ (DLL) CLKIN_PER_JITT_DLL_LF~ plusmn1000 ps (plusmn1 ns)

CLKIN_PER_JITT_DLL_HF~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 9 外部フ ィードバック パス遅延範囲

解説 指定範囲

チップ外にある CLKFB フ ィードバッ ク パス遅延の最大許容範囲 CLKFB_DELAY_VAR_EXT ~ plusmn1000 ps (plusmn1 ns)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

RST 入力

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 17

R

CLKIN 入力の周波数が指定範囲内である場合DCM は内部遅延のタップを調整し ロ ッ ク状態を維持しますが その制限を大幅に満たしていない場合には ロ ッ ク状態が解除され LOCKED 出力が Lowになり ます

一度 DCM のロ ッ ク状態が解除される と 自動的に再びロッ ク状態に戻るこ とはあ り ません ロ ッ ク状態が解除された場合つま り LOCKED が High から Low となった場合にはFPGA アプリ ケーシ ョ ンでは RST 入力を使用して DCM を リセッ トするなどの適切な方法を使用して 再びロ ッ ク状態にする必要があ り ます

RST 入力 非同期の RST 入力は DCM ロジッ クを リ セッ ト してコンフ ィギュレーシ ョ ン後の設定に戻しますRST ピンはFPGA を再コンフ ィギュレーシ ョ ンする場合または許容範囲を超えている入力周波数を変更する場合に使用して ください このピンはアクティブ High であ り ダイナミ ッ ク信号またはグランドに接続する必要があ り ます また RST 入力は最低 2ns 間アサート しなければなり ません

コンフ ィギュレーシ ョ ン後に 入力ク ロ ッ ク周波数が安定していない場合 ク ロ ッ クが安定するまで

RST をアサー ト して ください また 外部フ ィードバッ クを使用している場合は コンフ ィギュレーシ ョ ン直後に DCM を リセッ ト します31ページの図 20 に SRL16 シフ ト レジスタ プリ ミ ティブを使用した リセッ ト方法の例を示します

LOCKED 周波数が High から Low になる場合のよ うに DCM のロ ッ ク状態が解除される と FPGAアプリ ケーシ ョ ンでは RST をアサート しDCM に入力クロ ッ ク周波数に対して再ロ ッ ク させる必要があ り ます

図 5 LOCKED 出力の機能的な動作

LOCKED HIGH

FPGA RST

Y

N

Y

N

FPGA

LOCKED LOW

CLKIN

LOCKED LOW

RST

x462_05_062103

CLKIN

RST

RST

18 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

DCM の LOCKED 出力が High の場合 RST がアサート される と この LOCKED 出力は 4 ク ロ ッ クサイ クル以内に Low になり ます このため リセッ ト後は DCM を再びロ ッ ク状態にさせます

また RST をアサートするこ とによって DCM の遅延タップ位置がゼロに戻り このタ ップ位置を変更するこ とによってDCM のクロ ッ ク出力ピンでグ リ ッチが発生する可能性があ り ます 同様にRSTはクロ ッ ク出力のデューティ サイクルにも影響を与えます

さ らに RST がアサート される と現在の可変位相シフ ト値は PHASE_SHIFT 属性で指定された値に戻り ます

DCM Wizard DCM を使用するアプリ ケーシ ョ ンを容易にするために ザイ リ ンクス ISE には 順を追って DCM を設定できるソフ ト ウェア Wizard が含まれています 図 6 に示すよ うに DCM Wizard を使用するこ とによってVHDL 構文または Verilog 構文で DCM をインスタンシエートするベンダ固有のロジッ ク合成ファイルを生成できます また DCM Wizard では特定のインプリ メンテーシ ョ ン用にユーザー制約ファイル (UCF) を生成できますさ らにすべてのユーザー仕様はXilinx Architecture Wizard (XAW)設定ファイルに保存されます

DCM Wizard の起動DCM Wizard を起動するためにはWindows のスタート ボタンから起動するまたはザイ リ ンクス ISEProject Navigator ソフ ト ウェアから起動する という 2 つの方法があ り ます

Windows のスタート ボタンから起動

DCM Wizard を Windows スタート ボタンから起動する場合は[スタート ] rarr [すべてのプログラム] rarr[Xilinx ISE 5] rarr [アクセサリ ] rarr [Architecture Wizard] をク リ ッ ク します 図 7 に設定ウ ィンド ウを示します

bull DCM のオプシ ョ ン設定を保存する Xilinx Architecture Wizard (xaw) ファ イル名を入力します

bull こ こで [Browse] ボタンをク リ ッ ク して xaw ファ イルを選択するこ と も可能です

bull 出力ファイルのロジッ ク合成言語を VHDL または Verilog から選択します

bull ロジッ ク合成ツールを選択します DCM Wizard では 指定した合成ツールに応じて ベンダ固有の出力ファイルが生成されます

bull ターゲッ ト デバイスに Spartan-3 を選択します

図 6 DCM Wizard の DCM 設定用グラフ ィ カル インターフェイス

DCM Wizard

User contraintsfile (UCF)

Vendor-specificVHDL or Verilog

Xilinx ArchitectureWizard (XAW)

settings file

Graphically configure aSpartan-3 Digital ClockManager (DCM)

x462_06_061803

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 19

R

Project Navigator から起動

Project Navigator のメニュー バーから または [Sources in Project] ウ ィンド ウから DCM Wizard を起動できます メニュー バーで [Project] rarr [New Source] を選択するか [Sources in Project] ウ ィンドウで右ク リ ッ ク し [New Source] を選択してください

図 8 に示すよ う に リ ス ト か ら [Architecture Wizard] を選択し ます Xilinx Architecture Wizard(xaw) ファ イル名を入力し そのファイルを保存するディ レク ト リ を選択した後 [Next] をク リ ッ クします

図 7 Architecture Wizard の設定

図 8 Project Navigator での Architecture Wizard 設定

Xilinx Architecture Wizard Setup

My_Spartan-3 Browse

XAW File

Output File Type

VHDL Verilog

XST

Synthesis Tool

XC3S1000-FT256-4 Select

OK Cancel

Part

DCM

Spartan-3

[OK]

x462_07_061803

New

User DocumentVHDL ModuleCoreGen IPSchematicVHDL LibraryVHDL PackageVHDL Test BenchTest Bench WaveformBMM FileMEM FileImplementation Constraints FileArchitecture WizardState Diagram

My_Spartan-3

F ile Name

MyDirectory

Lo cation

Add to Project

lt Back Next gt Cancel Help

DCM

[Next]

Architecture Wizard

x462_08_061803

20 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

Wizard 選択前述した手順はすべての ISE Architecture Wizard に共通ですが Spartan-3 FPGA は図 9 に示す DCMWizard をサポート します こ こで [OK] をク リ ッ ク し 次に進みます

[General Setup] 図 10 に示すよ うに ほとんどのオプシ ョ ンは DCM Wizard の [General Setup] ダイアログ ボッ クスで設定します 楕円の枠内には その設定に対応する DCM プリ ミ ティブ属性名を示します

bull DCM のインスタンス名を入力します このインスタンス名は Verilog または VHDL 出力ファイル内で使用されます

bull 最終的なアプリ ケーシ ョ ンにおける出力および機能を選択するためには 必要な DCM ク ロ ッ ク出力のチェッ ク ボッ クスをオンにします チェッ ク ボッ クスをオンにした出力に対しては それに関連したオプシ ョ ンの設定が可能になり ます

bull CLKIN ク ロ ッ ク入力の周波数を入力します 周波数を MHz で指定するかまたはクロ ッ ク周期をns で指定して ください この値によって DCM の DLL_FREQUENCY_MODE 属性が設定されます

bull CLKIN ソースが FPGA の内部であるか外部であるかを指定します[External] を選択した場合DCM Wizard は自動的にグ ローバル バッ フ ァ入力 (IBUFG) プ リ ミ テ ィ ブを挿入し ます[Internal] を選択した場合は ソース信号は HDL ソース ファ イル内の ト ップ レベル入力となり ます

bull CLKDV 出力をオンにした場合は クロ ッ ク分周回路の [Divide by Value] 値を指定します この値によって DCM の CLKDV_DIVIDE 属性が設定されます

bull DCM へのフ ィードバッ ク パスを指定します CLKFX 出力または CLKFX180 出力のみを使用する場合は [None] を選択します これらの出力を使用しない場合は フ ィードバッ クが必要ですFPGA 内部からのフ ィードバッ クを使用する場合は [Internal] を選択し外部からのフ ィードバック ループを使用する場合は [External] を選択します さ らに DCM フ ィードバッ クのソースをCLK0 (1X) または CLK2X (2X) から選択します この選択によってDCM の CLK_FEEDBACK属性が設定されます

図 9 Spartan-3 FPGA でのみ選択可能な DCM Wizard

Xilinx Architecture Wizard Selection

DCM Wizard

OK Cancel

Select Wizard

Spartan-3 DCM Wizard [OK]

x462_09_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 21

R

bull すべての DCM 出力における位相シフ トの有無を指定します デフォルト設定は位相シフ ト なし (None) です 位相シフ トが必要な場合は 位相シフ ト値と して [Fixed] または [Variable] を選択します [Variable] を選択するこ とによって 動的位相シフ ト制御 PSEN PSINCDECPSCLK および PSDONE が使用可能となり DCM の CLKOUT_PHASE_SHIFT 属性が指定されます Fixed モードおよび Variable モードのいずれを選択する場合でも 固定位相シフ ト値あるいは動的位相シフ トの初期値を決定する [Phase Shift Value] を指定します この値によってDCM の PHASE_SHIFT 属性が設定されます

bull アドバンス ド オプシ ョ ン ウ ィンド ウを開く場合は [Advanced] ボタンをク リ ッ ク します

bull 設定の完了後 [Next] をク リ ッ ク し ク ロ ッ ク バッファ ダイアログ ボッ クスに進みます

アドバンスド オプシ ョ ン図 11 に示すアドバンス ド オプシ ョ ン ウ ィンド ウで さ らに詳細な DCM オプシ ョ ンを設定できます

bull デフォルトではDCM は FPGA のコンフ ィギュレーシ ョ ンに対して影響を与えませんが [Yes] をク リ ッ ク した場合は DCM が LOCKED 出力をアサートするまで FPGA コンフ ィギュレーシ ョンで DONE 信号のアサート を遅らせるこ とができます この設定は DCM の STARTUP_WAIT属性で定義します このよ うに [Yes] を選択した場合は ビッ ト ス ト リーム生成オプシ ョ ンの追加

図 10 [General Setup] ダイアログ ボックスでの DCM オプシ ョ ン設定

Xilinx DCM Wizard - General Setup

MY_DCMDCM Instance Name

Input Clock Frequency

MHz ns 2

Phase Shift Value

30

Advanced

Source

CLK0

CLK90

CLK180

CLK270

CLKDV

CLK2X

CLK2X180

CLKFX

CLKFX180

LOCKED

STATUS

PSDONE

CLKIN

CLKFB

RST

PSEN

PSINCDECPSCLK

CLKIN SourceInternal

External

Divide By Value

FeedbackInternal External None

Value 1X 2X

Duty Cycle Correction

Yes No

Phase ShiftNone Fixed Variable

23 More Info

lt B ack Next gt Cancel

DCM

CLKFX CLKFX180

CLKDV

MHz ns

Advanced

(BUFG)

[Yes] CLK0CLK90 CLK180 CLK270

50CLK0 (1X)CLK2X (2X)

[Next]

CLKDV

[Fixed] PSEN PSINCDECPSCLK

[Variable]

DLL_FREQUENCY_MODE

CLK_FEEDBACK

CLKDV_DIVIDE

CLKIN IBUFG

[External][Internal]

DUTY_CYCLE_CORRECTIONCLKOUT_PHASE_SHIFT

DCM

PHASE_SHIFT

x462_10_061803

22 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

変更が必要です この変更については 「DCM LOCKED 出力と コンフ ィギュレーシ ョ ン ロジッ クの設定」 で説明します

bull ある特定の DCM において CLKIN 入力の周波数が高すぎる場合には [Divide Input Click by 2]の [Yes] をク リ ッ ク し 入力周波数を半減させて ください これによって DCM ブロ ッ クに入力前のデューティ サイ クルは約 50 にな り ます この設定は DCM の CLK_FEEDBACK 属性で定義します

bull ソース同期のデータ転送が必要なアプリ ケーシ ョ ンでは [DCM Deskew Adjust] 値を [SOURCE_SYNCHRONOUS] に変更します SOURCE_SYNCHRONOUS または SYSTEM_SYNCHRONOUS 以外の値を使用する場合はザイ リ ンクスにお問い合わせください この設定は DCM の CLK_FEEDBACK 属性を定義します 「スキュー調整」 を参照して ください

bull [OK] をク リ ッ ク し 変更を適用して [General Setup] ウ ィンド ウに戻り ます

クロック バッファ次に DCM の各クロ ッ ク出力に対するクロ ッ ク バッファを定義します(図 12 参照) DCM Wizard のデフォルト設定では 自動的にすべての DCM ク ロ ッ ク出力にグローバル バッファ (BUFG) を使用しますが Spartan-3 デバイスでは 上辺および下辺のそれぞれにある 4 つのグローバル バッファを同一辺にある 2 つの DCM で共有しますXC3S50 では上辺または下辺に 1 つの DCM があ り オプシ ョ ンと して同じ辺にある 4 つのクロ ッ ク バッファすべてに接続できます

bull [Clock Buffer Settings] にある [Customize] をク リ ッ ク し DCM の各クロ ッ ク出力にクロ ッ クバッファの種類を指定します

bull DCM の各クロ ッ ク出力に対して リ ス トから [Clock Buffer] 出力タイプを選択します 表 10 に選択可能なクロ ッ ク バッファ オプシ ョ ンを示します

bull [Enabled Buffer] 出力タイプを使用する際にはバッファ イネーブル (CE) 入力の信号名を指定できますが 自動的に作成された信号名も使用できます

bull [Clock Mux] 出力タイプを使用する場合もセレク ト (S) 入力の信号名を指定できますが自動的に作成された信号名も使用できます

bull [Next] まはた [Finish] をク リ ッ ク し 設定を完了します [Next] ボタンが表示されるのは[General Setup]ダイアログ ウ ィ ン ド ウで CLKFX 出力または CLKFX180 出力を選択した場合のみです それ以外の場合は [Finish] をク リ ッ ク し HDL 出力を生成します ( 「HDL 出力の生成」を参照して ください)

図 11 DCM アドバンスド オプシ ョ ン設定

Xilinx DCM Wizard Advanced

Wait for DCM lock before DONE signal goes high

Yes No

Divide Input Clock by 2

Yes No

SYSTEM_SYNCHRONOUS

OK Cancel

DCM Deskew Adjust

CLKIN 12

FPGA

DONEDCM

DCM

[OK]

DCM

STARTUP_WAIT

CLKIN_DIVIDE_BY_2

DESKEW_ADJUST

x462_11_061703

DCM Wizard

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 23

R

図 12 DCM Wizard を使用した DCM 出力のバッファ オプシ ョ ン設定

Xilinx DCM Wizard - Clock Buffers

This dialog sets up the clock buffers for all the DCM clock outputs selected in the GeneralSetup dialog

Clock Buffer Settings

U se Global Buffer (BUFG) for all selected DCM clock outputs

C ustomize (using grid below)

Reference the lsquoMore Inforsquo button for more information on customizing the global buffers

M ore Info

lt Back N ext gt Cancel

Clock Buffer Input I0 Input I1 Input CES

Global Buffer CLK0

Enabled Buffer CLK90 CLK90_ENABLE_IN

Clock Mux CLK2X180 CLKFX CLKFX_SELECT_IN

Lowskewline CLK180

Local Routing CLK270

CLK2XGlobal BufferGlobal Buffer

Enabled BufferClock MuxLowskewlineLocal RoutingNone

Output O

CLK0_OUT

CLK90_OUT

CLKFX_OUT

CLK180_OUT

CLK270_OUT

CLK2X_OUT

DCM Wizard

BUFG

DCM

DCMFPGA

FPGA

[Next]

x462_12_061703

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

グローバル バッファ

4 つあるグローバル バッファ (BUFG) の 1 つを同じ辺にある DCM に接続します

イネーブル バッファ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク バッファ (BUFGCE) と して設定しているバッファに接続します CE 入力は High の場合にバッファをイネーブルにしLow の場合は バッファ出力がゼロになり ます

BUFGI0 O

BUFGCEI0 O

CE

CE O

0 0

1 I0

24 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

DCM WizardR

クロック周波数合成

図 13 に示すク ロ ッ ク周波数合成ダイアログ ボッ ク スは [General Setup] ダイアログ ウ ィ ン ド ウでCLKFX 出力または CLKFX180 出力を選択した場合のみに表示されます

こ こでは必要な出力周波数 または逓倍および分周の係数を指定します [Valid Ranges for SelectedSpeed Grade] で周波数範囲 (CLKIN を ns で指定した場合は遅延) を指定します 周波数範囲にはDFS_FREQUENCY_MODE 属性で設定可能な両方の値が表示されます DCM で DLL に関係したクロ ッ ク出力を使用する場合 この範囲条件はよ り厳し くな り ます

bull [Use output frequency] のチェッ クをオンにし MHz または ns で周波数を入力します [Calculate] をク リ ッ クする と CLKFX_MULTIPLY 属性および CLKDV_DIVIDE 属性の値が算出されます 入力した範囲から可能な逓倍値および分周値を算出できない場合は DCM Wizard で別の出力周波数値を入力するよ うに求めるエラー メ ッセージが表示されます ソ リ ューシ ョ ンがある場合は [Generated Output] に逓倍値 分周値 およびジッ タの値が表示されます ( 「ク ロ ック ジッタおよび位相ノ イズ」 を参照してください)

bull オプシ ョ ンと して[Use Multiply (M) and Divide (D) values] のチェッ クをオンにしこれらの値を入力でき ます [Calculate] を ク リ ッ ク し 出力周波数およびジ ッ タ を計算し ます 結果は[Generated Output] に表示されます

bull 最後に[Finish] をク リ ッ ク しHDL 出力を生成します (「HDL 出力の生成」を参照してください)

ク ロ ッ ク マルチプレクサ

4 つあるグローバル バッファのうちイネーブル ク ロ ッ ク マルチプレクサ (BUFGMUX) として設定しているバッファに接続します S 入力はクロ ッ ク ソースを選択します

低スキュー ライン 低スキューのプログラマブル相互接続に接続します

ローカル配線 スキューが重要ではない場合において ローカル相互接続に接続します

なし DCM 出力をディ スエーブルにします

表 10 クロック バッファ出力タイプの設定

クロック バッファ 図 説明

O

S

BUFGMUXI0

I1 S O

0 I0

1 I1

I0

I0

VHDL および Verilog のインスタンシエーシ ョ ン

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 25

R

HDL 出力の生成すべてのパラ メータを入力後 [Finish] をク リ ッ クする と 図 14 に示すよ うに DCM Wizard が自動的に VHDL または Verilog HDL 出力ファイルを生成します また ユーザー制約ファイル (UCF) も生成されます

VHDL および Verilog のインスタンシエーシ ョ ン

DCM Wizard を使用し VHDL または Verilog HDL 記述を作成する方法が最も容易ですが VHDLソースおよび Verilog ソースも利用できます

Project Navigator の言語テンプレート

ISE 52i およびそれ以降の Project Navigator では DCM の言語テンプレートが使用できます DCMテンプレート を選択する場合はProject Navigator のメニューで [Edit] rarr [Language Templates] をクリ ッ ク します 図 15 に示すテンプレー ト で Verilog フォルダまたは VHDL フォルダを展開表示し

図 13 デジタル周波数合成の逓倍値と分周値の設定 およびジッ タの算出

Xilinx DCM Wizard - Clock Frequency Synthesizer

Valid Ranges for Selected Speed Grade

Inputs for Jitter Calculations

U se output frequency

M Hz ns875

U se Multiply (M) and Divide (D) values

4M 1D

Input Clock Frequency 30 ns C alculate

lt Back Finish Cancel

More Info

Generated Output

MOutput

Frequency(MHz)

29 111

Period Jitter(pk-to-pk ns)

D

11 875

Period Jitter(unit interval)

010

DFSMode

Fin (MHz)

Low

High

24000 - 18]0000

50000 - 270000

24000 - 210000

210000 - 270000

Fout (MHz)

MHz ns[Calculate]

DCM Wizard (M)

(D)

(M)(D)

[Calculate]

[Calculate]

[Finish]

DCM

CLKFX_MULTIPLY CLKFX_DIVIDE

CLKFX_MULTIPLY CLKFX_DIVIDE

DFS_FREQUENCY_MODE

x462_13_061803

図 14 DCM Wizard での VHDL または Verilog HDL 出力ファイルの生成

Xilinx Architecture Wizard

Cancel

Generating HDL file

x462_14_061803

26 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

Component Instantiation フォルダの DCM フォルダを選択します 次にDCM フォルダにある DCMソース ファ イルを選択する と 隣接したウ ィンド ウにソース ファ イルが表示されます

このファイルは参照用と して または内容を新規ソース ファ イルに貼り付けて使用できます

VHDL および Verilog リファレンス ファイル

また この VHDL および Verilog のソース ファ イルは 次のザイ リ ンクス FTP サイ トからダウンロードできます

bull VHDL DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_vhdlzip

bull Verilog DCM リ ファレンス ファ イルftpftpxilinxcompubapplicationsxappxapp462_verilogzip

クロック スキューの低減

スキューの低減はDCM の基本的な機能の 1 つです 50 MHz 以上の速度で動作するデザインではクロ ッ ク スキューの低減が重要であ り このク ロ ッ ク スキューの低減に関連する概念は DCM を使用したその他のアプリ ケーシ ョ ンにも応用できます

クロック スキューとはク ロ ッ ク スキューは本質的にすべての同期システムに存在します ク ロ ッ ク ソースによって生成されたクロ ッ ク エッジは システム内の異なる点に 異なる時間に到達します これは 1 つのデバイス内の場合も クロ ッ クで接続された異なるデバイスへのクロ ッ ク入力の場合もあ り ます こ こで発生する到達時間の差がクロ ッ ク スキューです

図 16 に 同期システムにおけるクロ ッ ク スキューの例を示します ク ロ ッ ク ソースによって ク ロ ック入力が FPGA へ駆動され FPGA 上の入力ピンに入る と 内部の低スキュー グローバル ク ロ ッ クネッ ト ワークを使用して分配され FPGA 内部のフ リ ップフロ ップに到達します ク ロ ッ ク パスにある各エレ メン トによって フ リ ップフロ ップにクロ ッ ク エッジが到達する時間に遅延が生じます その結果と して フ リ ップフロ ップにおけるク ロ ッ ク入力 (B) で遅延が発生する つま り ク ロ ッ ク ソース (A)と比較してスキューが発生します この例では ク ロ ッ ク スキュー つま り到達時間の差を ∆b と します

図 15 Project Navigator 言語テンプレートでの DCM デザインの選択

Language Templates

Verilog

Component Instantiation

Block RAM

CLK0

CLK0_FB

CLK2X

Templates Module BUFG_CLK0_SUBM Description Verilog Submodule DCM with CLK0 deskew-

module BUFG_CKL0_SUBM ( CLK_IN RST CLK1X LOCK

DCM

x462_15_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 27

R

同様に ク ロ ッ ク ソースは FPGA 内部で再びバッファを介し ボード上にある別のデバイスを駆動します この例では クロ ッ ク ソースは再び入力ピンを通って FPGA に入り グローバル ク ロ ッ ク ネット ワークで分配され FPGA の出力ピンを通って PCB 上のト レースで別のデバイスに接続されますそのため ク ロ ッ ク パスにおける総遅延が大き くな り その結果と して発生するスキュー ∆c も大き くな り ます

クロック スキュー パフォーマンス低下の原因ク ロ ッ ク スキューによって セッ ト アップ時間 および clock-to-output 遅延が増加し ク ロ ッ ク サイクル時間が長くなるため デザインのパフォーマンス全体が低下する可能性があ り ます また ク ロ ッ クスキューによって 長いホールド時間が必要となる場合があ り このホールド時間を確保できない場合

には 不安定な動作を引き起こす可能性があ り ます

スキューの削除

ク ロ ッ ク スキューを削除する方法はあるのでし ょ う か 幸いにも デジタル ク ロ ッ ク マネージャ(DCM) はこのよ うな機能を備えています 図 17 に図 16 と同様の例を示しますがこ こでは Spartan-3 デバイスを使用しています 2 つの DCM によって次のよ うにクロ ッ ク スキューが削除されます 1つの DCM がFPGA 内部でクロ ッ ク入力されたものからのスキューを削除しも う一方の DCM が ボード上で別のデバイスにクロ ッ ク入力する場合のスキューを削除します この結果 (A) (B) および (C)のすべての点で理想的なクロ ッ ク間のアライ メン ト を実現できます

実際には ク ロ ッ ク スキューはどのよ うに削除されるのでし ょ うか ク ロ ッ ク スキューの原因は クロ ッ ク パスにおける遅延である こ と を思い出して ください 図 17 では (B) のク ロ ッ クで ∆ 分のスキューがあ り (C) のクロ ッ クに ∆c 分のスキューがあ り ましたが ク ロ ッ クを (B) に ∆b 分早く到達させ (C) に ∆c 分早く到達させる方法がある場合には どのよ うになるでし ょ うか このよ う な場合にはすべてのクロ ッ クのエッジが一致するよ うに調整されセッ ト アップ時間および clock-to-output 遅延が減少するため システム全体のパフォーマンスが向上します

図 16 すべての同期システムに存在するクロック スキュー

OtherDevice on

Board

FPGA

c b

A

A

C

B

B

C

x462_16_062403

28 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

過去のクロック動作から将来のクロック動作を予測

Spartan-3 FPGA は非常に高度なデジタル ロジッ クを使用していますが 将来の動作を予測するこ とはできません だたし DCM は過去のクロ ッ ク動作を使用し 将来のク ロ ッ ク動作を予測するために役立てます システムに入力されるほとんどのクロ ッ クの周波数は 不変で単調であるため 入力クロ ックの周期 (T) もほぼ一定になり ます

マイナスの遅延を挿入し ク ロ ッ ク スキューの影響を無効にするこ とはできないため DCM は目的としている時間に到達しているよ うに見えるよ うにクロ ッ クを遅らせます これは どのよ うに行われるのでし ょ うか ク ロ ッ ク サイクルは一定の周期 (T) で繰り返されます 図 18 に示すよ うに (B) におけるクロ ッ クは ∆b 分進んでいるよ うにみえますが 実際には (T ndash ∆b) 分遅くなっています 同様に(C) におけるクロ ッ クは (T ndash ∆c) 分遅れています

図 17 Spartan-3 デザインにおけるクロック スキューの削減

図 18 一定周波数のクロックを遅延させる

OtherDevice on

Board

Spartan-3 FPGA

DC

M

Ideal Clock Alignment

b

cEarly Clocks Eliminate Skew

A

B

C

A

B

C

DC

M

A

B

C

x462_17_062403

c

b

Clock Period (T)

Delay=T- b

Delay=T- c

A

B

C

x462_18_061803

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 29

R

入力クロ ッ ク信号は単調であるため ク ロ ッ ク周期 (T) は容易にわかり ますが ク ロ ッ ク スキュー遅延である ∆b および ∆c はど うでし ょ うか 異なる条件の元で複数のシステムにおける動作を詳細に検証するこ とによって これらの値を決定するこ と もできますが 実際には現実的である とは言えません

さ らに ∆b および∆c の値はデバイスによって異なり 同一のデバイス上でも温度または電圧によって変化します

Spartan-3 DCM では ∆b および ∆c をあらかじめ決定するのではなく フ ィードバッ ク ループによって遅延を確認する遅延ロッ ク ループ (DLL) を使用します (図 17 を参照してください) こ こで示している例では 2 つの DCM を使用して 1 つの DCM が内部信号のスキューを削減し も う一方の DCMが外部デバイスへの信号のスキューを削減します また 両方の DCM に各ク ロ ッ ク フ ィードバッ クループがあ り ます DLL は温度または電圧によって引き起こ されるわずかな変更にも適応します

ターゲッ トのロック

適切な遅延を決定し挿入するためにはDCM で数千クロ ッ ク サイ クルのサンプルが必要です DCMで適切な遅延が挿入される と LOCKED 出力信号がアサート されます

DCM で LOCKED 信号がアサート されるまでDCM ク ロ ッ ク出力は使用しないでください DCM が入力クロ ッ ク信号に対してロ ッ ク状態になるまでのク ロ ッ ク出力は無効です DCM がロ ッ ク状態になる前の DCM 出力クロ ッ クには グ リ ッチ スパイクなどの不正な要素が含まれている可能性があ り ます

アプリ ケーシ ョ ンではLOCKED 信号を出力クロ ッ クが有効であるこ とを確認するために使用しますLOCKED 信号をクロ ッ ク信号が使用可能な状態であるこ とを示すものと して理解してください

安定した単調なクロック入力

DCM が適切に動作するためには 安定した単調なクロ ッ ク入力が必要です そのよ う なク ロ ッ ク入力によって ク ロ ッ ク周期を予測でき出力クロ ッ クのタイ ミ ングを適切に調整できます DCM はいったんロ ッ ク状態になる と『Spartan-3 データ シート 』 で指定された値までのクロ ッ ク周期変動に対応できます 「DCM 使用のためのクロ ッ ク条件」 を参照して ください

入力ク ロ ッ ク周波数が変動して指定された範囲外と なった場合 DCM のロ ッ ク状態が解除されLOCKED 出力は Low になり ます ロ ッ ク状態が解除された場合 DCM を リセッ ト して再びロ ッ クする必要があ り ます 入力クロ ッ クが指定された制限を満たしている場合はLOCKED 出力が High である限り出力クロ ッ クは常に有効です しかし LOCKED 出力は High を維持していますが クロ ッ ク入力が指定された範囲外で CLKDV 出力または CLKFX 出力が無効となる場合があるため問題のないデザインを作成するためには 安定した単調なクロ ッ ク入力が重要です

DCM CLKIN 入力へのパスと して 4 つのグローバル バッファ入力 (IBUFG) のうち デバイス上で同一辺にあるバッファ入力の 1 つを使用する こ と を推奨します IBUFG パスを使用する こ とによってパッ ドからグローバル バッファを通って DCM に到達までの遅延がスキュー調整された出力から削除されます ただし 表 11 に示すその他のパスも使用できます また CLKIN 入力を駆動する信号は汎用相互接続を通る汎用入力ピン (IBUF プリ ミ ティブ) グローバル バッファ入力 (IBUFG) グローバル バッファ マルチプレクサ (BUFGMUX BUFGCE) からの入力と して使用できます 同様に LVDSク ロ ッ ク入力をクロ ッ ク入力と して使用できる場合もあ り ます スキュー調整ロジッ クはLVCMOS または LVTTL のよ うなシングル エンドのクロ ッ ク入力のために特性評価されています ただし 差動信号では IO タイ ミ ングによって わずかな位相エラーが発生する可能性があ り ます 特定の IO タイミ ングについては 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

30 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

確実なソースからのフ ィードバック

適切な遅延に対してロ ッ ク信号をアサートするために DCM は 入力クロ ッ クおよびクロ ッ ク分散遅延後にタ ップされるフ ィードバッ ク ク ロ ッ クの両方をモニタします ク ロ ッ ク フ ィードバッ ク パスにおける総遅延に制限はあ り ません DLL では 必要に応じて逓倍したク ロ ッ ク周期を使用する こ とによって出力クロ ッ クを遅らせます このよ うにDCM は内部遅延または外部遅延を相殺できますがクロ ッ ク フ ィードバッ クは適切なフ ィードバッ ク地点に接続する必要があ り ます

内部クロック信号からのスキュー削除

図 19 に示すよ うにFPGA 内部のスキューを削減する場合フ ィードバッ ク タ ップは FPGA 内部のエレ メン トに入力されるクロ ッ ク と同一のクロ ッ ク とな り ます 通常 フ ィードバッ ク ク ロ ッ クは デバイス上で DCM と同一辺にある ク ロ ッ ク バッファ (BUFG) またはグローバル ク ロ ッ ク マルチプレクサ (BUFGMUX または BUFGCE) に接続されている DCM からの CLK0 出力 (位相シフ ト なし ) ですまたは CLK0 出力ではなく DCM の CLK2K 出力 (位相シフ ト なし 2 逓倍) をフ ィードバッ ク と して使用できます

表 11 クロック入力ソース

CLKIN ソース 説明

グローバル バッファ入力を使用

グローバル バッファ入力 IBUFG は DCM への外部クロ ッ クのソースと して適切です パッ ドからグローバル バッファを通り CLKIN 入力までの遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

グローバル ク ロ ッ ク バッファ BUFG BUFGCE または BUFGMUX プリ ミ ティブを使用するグローバル ク ロ ッ ク バッファは内部生成された DCM へのクロ ッ ク ソース と して適切です グローバル バッファを通る際の遅延が算出され デスキュー ク ロ ッ ク出力から削除されます

汎用 IO を使用 任意のユーザー IO IBUF は 外部クロ ッ クのソースと して使用できます パッ ドから DCM への遅延をあらかじめ決定するこ とはできません これは入力パスとなる可能性を持つパスが多数

存在するためであ り その結果 DCM は遅延を削除できません

内部ロジッ クから派生 FPGA 内部のロジッ ク も ク ロ ッ ク ソース と して使用できます しかしロジッ クから DCM への遅延をあらかじめ決定するこ とはできないため DCM は遅延を削除できません

I OIBUFG

BUFGI O

BUFGCEI O

CE

O

S

BUFGMUXI0

I1

I OIBUF

InternalLogic

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 31

R

外部クロック信号からのスキュー削除

外部クロ ッ クを使用した DCM フ ィードバッ クの設計は内部クロ ッ クの場合よ り も複雑です 図 20 に示すよ うに理想的にはフ ィードバッ ク ク ロ ッ クは PCB ト レースまたは外部クロ ッ クの再バッファの後のすべての外部クロ ッ クに入力される点から始ま り ます

LOCKED 信号は DCM がロ ッ ク状態になったこ と およびク ロ ッ ク信号が有効であるこ とを示します LOCKED 信号によって 外部デバイスが使用可能になり その反転バージ ョ ンはアクティブ Lowのチップ イネーブル信号に接続できます

コンフ ィギュレーシ ョ ン後の DCM リセッ ト

外部フ ィードバッ クを使用する場合 コンフ ィ ギュレーシ ョ ン直後に DCM の リ セッ ト をパルスしDCM のロ ッ ク状態を維持する必要があ り ます 図 20に示すよ うに0x000F で初期化された SRL16 から必要な リセッ ト パルス信号を出力できます 「RST 入力」 を参照して ください

なぜリセッ トする必要があるのか

なぜ このよ うに追加的な リセッ ト パルスが必要なのでし ょ うか 最適にロ ッ クするためには DCMをロ ッ ク状態にし その状態で安定させるために 外部フ ィードバッ クでコンフ ィギュレーシ ョ ンされ

た DCM で CLKIN および CLK0 または CLK2X のいずれかの信号を使用する必要があ り ます コンフ ィギュレーシ ョ ン実行中は FPGA の IO バッファがまだアクティブではないために 外部フ ィードバッ ク CLKFB を使用できません

コンフ ィギュレーシ ョ ンの終了時に デバイスがスター ト アップ シーケンスを開始する と DCM はキャプチャ プロセスを開始します この時点では FPGA のグローバル 3-ステート信号 (GTS) はアサー

図 19 内部クロック信号でのスキュー削減

I OBUFG

FPGA

(or BUFGMUX or BUFGCE)

( )

ldquoClock Goodrdquo

I OIBUFG

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)(

)

x462_19_061803

図 20 外部クロック信号でのスキュー削減

CLKIN CLK0

CLKFB LOCKEDDCM

(or CLK2X)

I OOBUF

I OOBUF

FPGA

CLK

ENABLE

( )

RESETD

WCLK

A[30]

Q

INIT=000F

SRL16

I OIBUFG

I OIBUFG

x462_20_062203

32 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ト されているため すべての出力ピンは 3-ステート (ハイ -インピーダンス フローティング) 状態を維持しています このため CLKFB 信号のロジッ ク ステートはわかり ません

GTS のアサート状態の解除後CLKFB に信号が現れDCM が CLKFB 信号を取り込みますが リセット パルスがない場合 DCM が適切な時点でロ ッ ク しない可能性があ り DCM でジッタがわずかに増加し ク ロ ッ ク サイクル レイテンシも増加する可能性があ り ます

また リセッ ト パルスがない場合 PCB のシグナル インテグ リティの問題によって 3-ステート状態にある CLKFB 信号がボード上でほかの信号と ク ロス カップルする とい う問題が発生する可能性があり ます DCM では この無効なクロス カップルされた信号を CLKFB 信号と認識し ロ ッ クするためGTS 信号のアサートが解除され 適切な CLKFB 信号が現れたと きにロ ッ クできない場合があ り ます

遅延ロック ループとはク ロ ッ ク遅延を削除するための 2 つのタイプの回路

bull 遅延ロッ ク ループ (DLL)

bull 位相ロッ ク ループ (PLL)

DLL および PLL には クロ ッ ク分散遅延を削除する という機能以外に周波数合成 クロ ッ ク調整および位相シフ ト などの機能があ り ます

遅延ロック ループ (DLL)

図 21 に示すよ うに単純な形の DLL はタップ遅延ラインおよび制御ロジッ クで構成されます 遅延ラインは入力クロ ッ クCLKINに遅延を挿入したク ロ ッ クを生成し ク ロ ッ ク分散ネッ ト ワークでは そのクロ ッ クがすべての内部レジスタおよびクロ ッ ク フ ィードバッ ク CLKFB ピンに配線されます 一方制御ロジッ クは遅延ラインを調整するために常に入力クロ ッ クおよびフ ィードバック ク ロ ッ クをサンプルします 遅延ラインでは電圧制御遅延または不連続の遅延エレ メン トが使用されています 最適で安定したパフォーマンスを実現するために Spartan-3 DLL ではすべてのデジタル遅延ラインを使用します

DLL は入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クの立ち上がりエッジが調整されるまで それらのクロ ッ ク間に遅延を挿入し ク ロ ック周期から クロ ッ ク分散遅延分を差し引いた時間だけフ ィードバッ ク ク ロ ッ クを遅らせるこ とによって機能します DLL および PLLの専門的解説では フ ィードバッ ク ク ロ ッ クは 360deg 位相がずれたもの つま り同一の位相に再び現れるものと定義されています

入力クロ ッ ク とフ ィードバッ ク ク ロ ッ クのエッジが調整される とDLL がロ ッ ク し これらの 2 つのクロ ッ ク間に認識できる差異はなくな り ます つま り DLL 出力クロ ッ クのクロ ッ ク分散ネッ ト ワークにおける遅延がなくな り ソース ク ロ ッ ク とそのロード間の遅延を効果的に削除されています

図 21 遅延ロック ループ (DLL) ブロック図

ClockDistributionNetwork

Control

VariableDelay Line

CLKOUT

CLKFB

CLKIN

x462_21_061903

クロック スキューの低減

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 33

R

スキュー調整

こ こでは主にスキューの削減方法およびクロ ッ ク ソースに対する内部クロ ッ ク と外部クロ ッ クの位相調整の方法について説明します 実際には DCM は DESKEW_ADJUST という属性を使用し 意図的にわずかなスキューを追加します DCM Wizard では アドバンス ド オプシ ョ ン ウ ィ ンド ウでこのDESKEW_ADJUST 属性を設定します

この属性には STEM_SYNCHRONOUS および SOURCE_SYNCHRONOUS という 2 つの基本的なアプリ ケーシ ョ ンがあ り ます 大多数のアプリ ケーシ ョ ンではSYSTEM_SYNCHRONOUS 設定を使用します 次に 各モードの目的を説明します

システム同期

図 23 に示すよ うに システム同期アプリ ケーシ ョ ンでは 1 つのデータ パスにあるすべてのデバイスが共通のクロ ッ ク ソースを使用します これが 従来の最も一般的なシステム構成です デフォルト設定である SYSTEM_SYNCHRONOUS オプシ ョ ンを選択する と データ キャプチャ時のホールド時間がゼロになるよ うに わずかなクロ ッ ク遅延が追加されます ホールド時間とは 基本的にベス ト ケースのデータ パスと ワース ト ケースのクロ ッ ク パス間の差です DCM のクロ ッ ク スキュー削減機能はクロ ッ クを進めるこ とによって動的にワース ト ケースのクロ ッ ク パスを短縮します しかし ク ロ ッ

位相ロック ループ (PLL)

PLL は DLL と同様の基本的な機能を持つよ うに設計されていますが異なるアーキテクチャを使用します 図 22 に示すよ うにPLLと DLL の根本的な違いは DLL が遅延ラインを使用するのに対して PLL では電圧制御オシレータを使用し CLKIN と同様のクロ ッ ク信号を生成します位相検出器およびフ ィルタで構成される制御ロジッ クは ク ロ ッ ク分散システムでの遅延を補う よ うにオシ

レータの周波数と位相を調整します PLL の制御ロジッ クは 入力ク ロ ッ ク と フ ィードバッ ク ク ロ ッ ク CLKFB を比較し 入力クロ ッ クの立ち上がりエッジがフ ィードバッ ク ク ロ ッ クの立ち上がりエッジと一致するよ うにオシレータのクロ ッ クを調整します その後 PLL はロッ ク状態になり ます

インプリ メンテーシ ョ ン

DLL および PLL 内部では アナログ回路またはデジタル回路のいずれかが使用され 各回路はぞれぞれに利点があ り ます 慎重な回路設計を行ったアナログ回路の場合 DLL または PLL ではよ り厳密にタイ ミ ングを調整でき 使用するシ リ コン エリ アが少なくなり ます

一方デジタル回路を使用した設計の場合 ノ イズ耐性が優れ消費電力が低く ジッ タのパフォーマンスよ り良いという利点があ り

ます また ク ロ ッ クを停止させるこ とができるため 電力管理が容易になり ます アナログ設計では 追加の電力供給が必要な場合があ りよ り正確に電源供給の制御を行う必要があるために新しい処理テク ノ ロジに移行する際に問題が発生する可能性があ り ます

DLL と PLL

アプリ ケーシ ョ ンで PLL または DLL を選択する場合は アーキテクチャの違いを理解するこ とが重要です PLL で使用されるオシレータは 本質的に不安定な状態であるため ク ロ ッ ク分散ネッ ト ワークの遅延を補う際に PLL のパフォーマンスが低下します 逆に常に安定している DLL アーキテクチャは遅延およびクロ ッ ク調整の機能の点では PLL よ り優れている一方で PLL はDLL より柔軟に新しいクロ ッ ク周波数の合成を行います

図 22 位相ロック ループ (PLL) ブロック図

ClockDistributionNetwork

Control

Voltage ControlledOscillator

CLKOUT

CLKFB

CLKIN

x462_22_061903

34 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック スキューの低減R

ク パスを短縮するこ とによって ク ロ ッ クがデータの前に現れる場合には結果と してホールド時間が発生します SYSTEM_SYNCHRONOUS オプシ ョ ンを使用するこ とによってホールド時間がゼロになるために十分なスキューをクロ ッ ク パスに追加できる一方でclock-to-output 時間がわずかに増加します

ソース同期

SOURCE_SYNCHRONOUS モードは本来高速データ通信インターフェイスで使用される高度な設定です 図 24 に示すよ うに ソース同期アプリ ケーシ ョ ンではデータおよびクロ ッ クの両方が同一のクロ ッ ク ソースから派生します 送信デバイスは データおよびクロ ッ クを受信デバイスに送信し 受信デバイスはデータに対して最適なクロ ッ クが入力されるよ うにクロ ッ ク タイ ミ ングを調整します 高速デュアル データ レート (DDR) および LVDS 接続などがこのシステムの例です

SOURCE_SYNCHRONOUS 設定によって入力クロ ッ ク と DCM からのデスキュー出力クロ ッ ク間の位相をゼロにし 次に FPGA アプリ ケーシ ョ ンでは固定位相シフ ト モードまたは動的ファ イン位相シフ ト モードを使用してクロ ッ クのタイ ミ ングを調整します 次のアプリ ケーシ ョ ン ノートではソース同期デザインおよび動的位相調整について説明しています

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcomxappxapp622pdf

また 次のアプ リ ケーシ ョ ン ノート では システム レベルのタイ ミ ングについて詳細に解説しています このアプリ ケーシ ョ ン ノートはVirtex-II および Virtex-II Pro FPGA アーキテクチャについて説明するものですが ほとんどの概念を Spartan-3 FPGA に適用できます

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

タイ ミングの比較

図 25 にデュアル データ レート (DDR) アプリ ケーシ ョ ンで SYSTEM_SYNCHRONOUS 設定およびSOURCE_SYNCHRONOUS 設定を使用した場合のタイ ミ ング比較を示します DDR アプリ ケーシ ョンでは 各データ ラインに 2 つのデータ ビッ トが ク ロ ッ ク周期の前半および後半に各 1 つずつ現れます

図 23 共通のクロック ソースによってクロック入力されるシステム同期アプリケーシ ョ ン

図 24 データ ソースがデータ クロックを入力するソース同期アプリケーシ ョ ン

ClockSource

DATA_INDATA_OUT

x462_23_061903

ClockSource

DATA_INDATA_OUT

DATA_CLK

x462_24_061903

クロック調整

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 35

R

SYSTEM_SYNCHRONOUS モードではDCM のクロ ッ ク パスに適切なスキューが追加されホールド時間がゼロになり ます

これに対して SOURCE_SYNCHRONOUS モードでは DCM のクロ ッ ク パスにスキューは追加されませんが FPGA アプ リ ケーシ ョ ンでスキュー追加 または位相シフ ト が行われ ク ロ ッ クはデータウ ィンド ウにおいて理想的な位置で入力されます

クロック調整 ク ロ ッ ク調整とは 入力ク ロ ッ クのデューティ サイ クルが 50 以外の場合に 50 に調整する機能です 図 26 にHigh 時間が約 40 であ りLow 時間が約 60 (4060 デューティ サイクル) である入力ク ロ ッ クを ほぼ完全な 50 デューティ サイ クルを持つ入力クロ ッ クに調整する例を示します完全な 50 デューテ ィ サイ クル と な ら ない理由は CLKOUT_DUTY_CYCLE_DLL およびCLKOUT_DUTY_CYCLE_FX で指定されるデューティ サイ クルのずれが存在するためです これらの値は 『Spartan-3 データ シート 』 に記載されています デューティ サイクルのずれの概算値は 150ps未満です

クロ ッ クのデューティ サイクルが 50 であるこ とはVLDS またはデュアル データ レート (DDR) アプリ ケーシ ョ ンなどの高速通信インターフェイス ク ロ ッ ク転送アプリ ケーシ ョ ン またはクロ ッ ク ミラー アプリ ケーシ ョ ンにおいて不可欠な条件です 「デュアル データ レート (DDR) ク ロ ッ クの例」 を参照して ください

DCM では 自動的にほとんどのク ロ ッ ク出力のデューティ サイ クルが 50 に調整され それ以外の場合には動作条件または属性設定によって オプシ ョ ンと して調整されます 表 12 を参照して ください

図 25 デュアル データ レート (DDR) アプリケーシ ョ ンにおける SYSTEM_SYNCHRONOUS モードおよび SOURCE_SYNCHRONOUS モードのタイ ミング比較

SYSTEM_SYNCHRONOUS

DATA_IN

SOURCE_SYNCHRONOUS

SOURCE_SYNCHRONOUS+ Fixed or Dynamic Phase Shift

Data capture windowor data ldquoeyerdquo

x462_25_061903

図 26 DCM におけるデューテ ィ サイクル修正機能

CLKIN

ConditionedClock Output

50 50

40 60

x462_26_061903

36 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

14 位相シフ ト出力である CLK0 CLK90 CLK180 および CLK270 はDUTY_CYCLE_CORRECTION 属性を使用し ク ロ ッ ク調整を行う こ とができます デフォルトではDUTY_CYCLE_CORRECTION 属性は TRUE に設定され これらの出力は 50 デューティ サイクルに調整されます この属性を FALSE に設定する場合 クロ ッ ク調整は機能せず クロ ッ ク出力のデューティ サイクルは入力クロ ッ ク とほぼ同一になり ますが 完全に CLKIN のデューティ サイクルと一致するこ とは保証されていません

位相シフ ト - クロック周期の分数でクロックを遅延

また DCM ではクロ ッ ク周期の分数分だけ入力クロ ッ クを遅らせるこ とによって 位相をシフ ト させるこ とができます

DCM は 4 つの位相シフ ト タイプをサポート し各タイプを別々に使用するこ と またはほかの位相シフ ト タイプと組み合わせて使用するこ とができます 表 13 に 各クロ ッ ク出力での位相シフ ト機能を示します

1 ほとんどの 12 ク ロ ッ ク周期位相シフ ト出力では50 デューティ サイクル調整を行います 出力のペアの立ち上がりエッジは0degおよび 180deg位相シフ ト した位置またはクロ ッ ク周期の最初および 12 周期の位置にあ り ます

2 0deg(CLK0) 90deg(CLK90) 180deg(CLK180) および 270deg(CLK270) の 14 位相シフ ト出力ではオプシ ョ ンと して 50 デューティ サイ クル調整を行います

3 固定ファイン位相シフ トではすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

4 動的ファイン位相シフ トでは FPGA アプリ ケーシ ョ ン内部のすべての DCM ク ロ ッ ク出力の位相が 1256 ク ロ ッ ク サイクル単位でシフ ト します

表 12 デューティ サイクルを 50 にするためのクロック出力調整

DCM クロック出力

50 デューティ サイクル出力

CLK0CLK90

DUTY_CYCLE_CORRECTION = TRUE

CLK180CLK270

CLK2XCLK2X180

CLKDV

CLKFXCLKFX180

常に

DLL_FREQUENCY_MODE 属性

LOW HIGH

DUTY_CYCLE_CORRECTION = TRUE 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に 出力は使用不可

DLL_FREQUENCY_MODE 属性

LOW HIGH

常に CLKDV_DIVIDE が整数値の場合

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 37

R

12 クロック周期位相シフ ト出力12 周期位相シフ ト出力では 位相シフ トのないク ロ ッ ク およびそのクロ ッ クを 12 周期シフ ト させた (180deg位相シフ ト ) ク ロ ッ クが出力されます 12 周期位相シフ ト出力は表 14 に示すよ うにペアで出力されます

表 13 クロック出力の位相シフ ト機能

クロック出力12 クロック周期

14 クロック周期

固定または動的

位相シフ ト

CLK0CLK90CLK180CLK270CLK2XCLK2X180CLKDVCLKFXCLKFX180

表 14 12 クロック周期位相シフ ト出力

出力ペア解説

位相シフ トなし 180deg位相シフ ト

CLK0 CLK180 周波数は CLKIN と同一です デフォルトで 50 デューティ サイクルに調整されDUTY_CYCLE_CORRECTION 属性に制御されます

CLK2X CLK2X180 2 逓倍クロ ッ ク (CLK2XCLK2X180) からの出力です周波数は CLKIN 周波数の 2 倍であ り デューティ サイ クルは常に 50 です

CLKFX CLKFX180 周波数合成回路 (CLKFX CLKFX180) からの出力です 出力周波数は周波数合成の属性によって決定されます デューティ サイ クルは常に 50 です

38 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

12 周期位相シフ ト出力は高速デュアル データ レート (DDR) デザインおよびクロ ッ ク ミ ラーなどのデューティ サイクルが重要となるデザインにとって理想的です 図 27 に示すよ うに12 周期位相シフト出力のペアの 1 つはクロ ッ ク周期の始めに立ち上がり も う 1 つはそのクロ ッ ク周期の半分の地点で正確に立ち上がり ます

12 周期位相シフ ト出力によるデューテ ィ サイクルのずれの削減

DCM のクロ ッ ク出力が 50 デューティ サイクルに調整された場合 180deg位相シフ ト ク ロ ッ クは位相シフ トのないクロ ッ クを反転させたよ うに見えます 低周波数アプリ ケーシ ョ ンでは 基本的にこれが成立します

しかし アプリ ケーシ ョ ンが非常に高い周波数で動作する場合は 各ト ランジスタの立ち上がり時間お

よび立ち下がり時間の差が原因となって発生するデューティ サイ クルのずれが FPGA 内部で問題となり ます つま り 始めはデューティ サイクルが 50 の場合でも ク ロ ッ ク サイクル間で常にクロ ッ クHigh と ク ロ ッ ク Low の間に差が生じます

デュアル データ レート (DDR) クロックの例

図 28 に DCM ク ロ ッ ク出力 CLKx が デュアル データ レート (DDR) 出力フ リ ップフロ ップの 2 つのクロ ッ クを駆動する例を示します DDR ク ロ ッ ク入力の 1 つはクロ ッ ク出力をそのまま使用しますが も う一方の入力は DDR フ リ ップフロ ップ内部でクロ ッ クを反転させます DCM からの CLKx 出力のデューティ サイクルは 50 ですが FPGA のクロ ッ ク ネッ ト ワークを伝搬する間にデューティサイ クルにずれが発生します こ こで示す例では このデューティ サイクルのずれによって ク ロ ッ クHigh 時間が短縮され ク ロ ッ ク Low 時間が長くな り ます その結果と してC1 ク ロ ッ ク入力はクロ ック周期の半分の時点よ り もわずかに前にト リガします 低周波数の場合 このずれは無視して問題あ りませんが 高性能の DDR ベースのシステムでは 正確なクロ ッ ク設計が必要です

図 27 12 周期位相シフ ト出力

180˚0˚

frac12T 1T

CLKx

CLKx180

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)

x462_27_061903

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 39

R

図 29 に 図 28 に若干の修正を加えた回路例を示します この例では DCM からの位相シフ ト していない出力および 180deg位相シフ ト した出力の両方が DDR 出力フ リ ップフ ロ ップに入力されますCLKx ク ロ ッ ク信号は ク ロ ッ ク周波数の開始時点で正確に DDR フ リ ップフロ ップの C0 入力を ト リガし CLKx180 ク ロ ッ ク信号はクロ ッ ク周波数の半分の時点で正確に C1 入力を ト リガします この方法を使用する場合には 追加のグローバル バッファおよびグローバル ク ロ ッ ク ラ インが必要になりますが 約 300 ps (この値は概算です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください) までのデューティ サイクルを削減できます

図 28 デュアル データ レート (DDR) 出力におけるデューティ サイクルのずれ

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx at Flip-Flop(with duty-cycle distortion)

Duty-cycle distortion

Factor in distortionwhen using a singleinverted clock

CLKx(50 duty cycle)

BUFGCLKx

DCM

CLKIN

x462_28_061903

40 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

表 15 に DDR 出力フ リ ップフロ ップおよび LVDS 出力を使用して測定したデューティ サイクルのずれの値を示します この出力タイプ以外では 立ち上がり時間および立ち下がり時間に差が生じるこ とによって さ らにずれが大き くなる可能性があ り ます このずれは IBIS を使用してシ ミ ュレーシ ョ ンを実行し 検証できます

14 位相シフ ト出力図 30 および表 17 に示すよ うに 14 位相シフ ト出力は CLKIN 入力を 14 周期分シフ ト させたものです 14 位相シフ ト出力には CLKFB 入力へ戻るフ ィードバッ ク パスが必要であるため CLK0 出力の位相は CLKIN 入力の立ち上がりエッジと一致するよ うに調整されます CLK90 出力は CLKIN 入力を90deg位相シフ ト させて生成したものであ り ほかの位相シフ ト出力も同様に生成されます

図 29 12 周期位相シフ ト出力を使用したデューテ ィ サイクルのずれの削減

CLKx at Flip-Flop(with duty-cycle distortion)

180 ˚Phase Shift

CLKx180 at Flip-Flop(with duty-cycle distortion)

CLKx(50 duty cycle)

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKIN

CLKx180

BUFG

BUFG

x462_29_061903

表 15 デューティ サイクルのずれのパラメータ

パラ メータ 説明 概算値

TDCD_CLK0 IO ブロ ッ クにある DDR エレ メン トに対して ク ロ ッ ク立ち下がりエッジでローカル反転したクロ ッ クを入力する場合のデューティ サイクルのずれです 図 28を参照してください

~400 ps

TDCD_CLK180 IO ブロ ッ クにある DDR エレ メン トに対して DCM CLKx180 をクロ ッ ク入力する場合のデューティ サイクルのずれです 図 29を参照してください

~60 ps

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 41

R

DLL 周波数モードによる出力の有効性

14 位相シフ ト出力が有効であるかは DLL_FREQUENCY_MODE 属性で制御される DLL の周波数モードによって決定されます 表 16 に示すよ うに 低周波数モード (DLL_FREQUENCY_MODE=LOW) ではすべての 14 位相シフ ト出力が有効ですが高周波数モードでも有効な出力は CLK0 および CLK180 のみです

5050 デューティ サイクル調整オプシ ョ ン

オプシ ョ ン と して DUTY_CYCLE_CORRECT 属性を使用し 14 位相シフ ト出力を一括して 50デューテ ィ サイ クルに調整できます この属性が TRUE の場合 (デフォル ト ) 4 つの出力すべてのデューティ サイ クルが 50 にな り FALSE の場合は 各出力のデューティ サイ クルと CLKIN 入力のデューティ サイクルは一致しません 詳細は 「ク ロ ッ ク調整」 を参照してください

4 つの位相 遅延クロックエッジ 位相パルス

表 17 に示すよ うに 14 位相シフ ト出力は ぞれぞれ 1 つ前のパルスから 14 周期遅れた立ち上がりエッジで出力されます これらの出力は メモ リ インターフェイスおよびペリ フェラル制御などのアプリ ケーシ ョ ンにおけるタイ ミ ングを柔軟にします

また デューテ ィ サイ クル修正オプシ ョ ンがイネーブルの場合 (DUTY_CYCLE_CORRECTION =TRUE の場合) これらの出力を次のよ うに考えるこ とができますこれらの出力には 14 周期の間隔で

図 30 CLKIN 入力 の 14 周期位相シフ ト出力 (デューティ サイクル修正イネーブルの場合)

表 16 DLL 周波数モードによる 14 位相シフ ト出力の有効性

出力DLL_FREQUENCY_MODE

LOW HIGH

CLK0

CLK90

CLK180

CLK270

270˚180˚90˚0˚

frac14T frac12 T frac34T 1T

CLK0

CLK90

CLK180

CLK270

360˚

0

Phase Shift (degrees)

Delay (fraction ofclock period)

Clock Period (T)x462_30_061903

42 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

立ち下がりエッジがあ り ます (表 17 を参照) 同様に各出力には周期幅が同一である High パルス時間と Low パルス時間があるこ とになり たとえば 図 30 に示す CLK90 の High パルス部分は CLK0 クロ ッ ク周期の中央に位置しています

ファイン位相シフ ト

DCM では ファ イン位相シフ ト を使用するこ とによって ク ロ ッ ク スキューを制御するこ と もできます ファ イン位相調整はすべての DCM 出力に対して同時に機能します この位相調整にはDCM のDLL 機能ユニッ ト を使用するため CLKFB 入力を通るクロ ッ ク フ ィードバッ クが必要です

物理的には CLKIN と CLKFB の立ち上がりエッジ間の位相関係を調整するこ とによってシフ トが行われますが すべての DCM 出力が CLKIN 入力に関連して位相シフ ト されます

デフォルトでは ファ イン位相シフ トはディ スエーブル (CLKOUT_PHASE_SHIFT=NONE) です つま り ク ロ ッ ク入力は CLKIN で位相調整されています この場合 入力クロ ッ ク CLKIN と フ ィードバッ ク ク ロ ッ ク間におおよそのフ ィードバッ ク地点で計測されるスキューはあ り ません (「確実なソースからのフ ィードバッ ク」 を参照して ください) 図 31 に示すよ うに ファ イン位相シフ トがイネーブルの場合 出力クロ ッ クのエッジは位相シフ ト され CLKIN 入力の前または後になり ます

次にファイン位相シフ トの 2 つのモードについて説明します一般に高速データ通信アプリ ケーシ ョ ンでは 両方のモードが使用されます 「ソース同期」 を参照してください

1 固定ファイン位相シフ ト モードは位相シフ ト値を設計段階で設定します 位相シフ ト値はFPGAコンフ ィギュレーシ ョ ン実行中に取り込まれ アプリ ケーシ ョ ンで変更するこ とはできません

2 動的ファイン位相シフ トモードには 初期位相シフ ト値があ り 固定ファイン位相シフ トの場合と同様に この値は FPGA コンフ ィギュレーシ ョ ン中に取り込まれますが DCM の LOCKED 出力が High になった後であれば アプリ ケーシ ョ ンで変更可能です

固定ファイン位相シフ ト

固定ファ イン位相シフ ト モードでは 設計段階で指定されたシフ ト値が FPGA コンフ ィギュレーシ ョン実行中に設定され この値はアプリ ケーシ ョ ンで変更できません

このモードは 次の 2 つの属性によって制御されます CLKOUT_PHASE_SHIFT 属性が FIXED に設定し PHASE_SHIFT 属性が位相シフ ト量を制御します 図 31 に示すよ うに PHASE_SHIFT = 0 の場合は 出力ク ロ ッ クおよび CLKIN 入力の位相が一致する よ う 調整され ク ロ ッ ク出力はPHASE_SHIFT が負の整数の場合に CLKIN の前に位相シフ ト し正の整数の場合には CLKIN の後に位相シフ ト します

固定ファイン位相シフ ト範囲

PHASE_SHIFT 属性は常に整数値であ り その範囲は -255 ~ +255 ですが 実際の範囲は使用されるCLKIN の周波数によって異なり ます

表 17 14 位相シフ ト出力とそれらの特性 (DUTY_CYCLE_CORRECTION=TRUE)

DCM 出力 位相シフ トクロック周期

に対する遅延

立ち上がり

エッジ

立ち下がり

エッジ解説

CLK0 0deg 0 0 frac12T スキュー調整された入力クロ ッ ク 位相シフ ト なし

CLK90 90deg frac14T frac14T frac34T High パルス (frac34T 周期幅 周期の中央)

CLK180 180deg frac12T frac12T 0T CLK0 の反転 (立ち上がりエッジは周期の中央)

CLK270 270deg frac34T frac34T frac14T Low パルス (frac34T 周期幅 周期の中央)

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 43

R

PHASE_SHIFT 属性の範囲は 次の 2 つの値によって決定されます

1 1 つはナノセカンドで測定される CLKIN 入力の周期 である TCLKIN 値です

2 も う 1 つは Spartan-3 デバイスおよびスピード グレードによって指定される FINE_SHIFT_RANGE の値です この値は 『Spartan-3 データ シート 』 モジュール 3 に記載されています FINE_SHIFT_RANGE は 位相シフ ト遅延ラインにおける総遅延であ り 回路内の遅延タップ数の関数です 実際の遅延ラインは FINE_SHIFT_RANGE よ り長い場合があ り ますがFINE_SHIFT_RANGE までの値が保証されています

これらの値を 等式 1 に適用しSHIFT_DELAY_RATIO を算出します PHASE_SHIFT 属性の範囲はこの算出結果と 1 との不等式関係によって異なり ます

等式 1

SHIFT_DELAY_RATIO lt 1 の場合

ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り長い場合はSHIFT_DELAY_RATIO lt 1 であ り最大ファイン位相シフ ト範囲は FINE_SHIFT_RANGE によって決定されます SHIFT_DELAY_RATIO lt 1 の場合 PHASE_SHIFT 範囲は 等式 2 から求めるこ とができます

等式 2

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 PHASE_SHIFT 値は plusmn191 とな り ます

したがって SHIFT_DELAY_RATIO lt 1 の場合の位相シフ ト値は 等式 3 とな り ますPHASE_SHIFT = 1 と して ください

等式 3

図 31 固定ファイン位相シフ ト

0

Fixed Phase Shift- Limit

Fixed Phase Shift+ Limit

Clock Outputs

PHASE_SHIFT CLKIN DCM

CLKIN

x462_31_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

SHIFT_DELAY_RATIO FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------=

PHASE_SHIFTLIMITS plusmn INTEGER 256 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞=

TPhaseShiftPHASE_SHIFT

PHASE_SHIFTLIMITS----------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

44 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

SHIFT_DELAY_RATIO ge 1 の場合

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 1 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 4

したがって SHIFT_DELAY_RATIO ge 1 の場合の位相シフ ト値は 等式 5 とな り ます PHASE_SHIFT = 1 と して ください

等式 5

最小位相シフ ト

最小位相シフ トの大きさは 次の値の大きな方によって決定されます

1 『Spartan-3 データ シート 』 に DCM_TAP_MIN 仕様と して記載されている最小遅延ライン タ ップ値 (概算値は ~30ps)

2 ク ロ ッ ク周期の 1256

その他の考察点

固定位相シフ トモードでは 動的位相シフ ト制御入力をグランドに接続する必要があ り ます この接続

は DCM Wizard では自動的に行われます

DCM Wizard

固定位相シフ トモードを使用する場合は図 32 に示すよ うにDCM Wizard の [General Setup] ダイアログ ウ ィンド ウに表示される Phase Shift で [Fixed] をク リ ッ ク して ください これによって CLKOUT_PHASE_SHIFT 属性が FIXED に設定されます

[Phase Shift Value] を入力しますが この値は 上述した範囲内にある整数でなければなり ません これによってPHASE_SHIFT 属性値が設定されます DCM Wizard は位相シフ ト値が指定範囲内であるかを確認します

動的ファイン位相シフ ト

動的ファ イン位相シフ ト モードでは 固定ファ イン位相シフ ト モード と同様に 初期スキューまたは初期位相シフ トがコンフ ィギュレーシ ョ ン中に PHASE_SHIFT 属性によって制御されます ただし動的シフ ト モードの場合 DCM の LOCKED 入力が High になった後に 動的ファ イン位相シフ ト制御入力 PSEN PSCLK および PSINCDEC を使用して FPGA アプリ ケーシ ョ ンで現在の位相シフ ト値を修正できます

動作

図 33 に示すよ うに位相シフ ト制御入力を使用し現在の位相シフ ト値を修正します すべての動的位相シフ トは PSCLK の立ち上がりエッジに同期して行われ 有効な位相シフ トは PSEN イネーブル入

図 32 固定ファイン位相モードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

Fixed

x462_32_061803

PHASE_SHIFTLIMITS 255plusmn=

TPhaseShiftPHASE_SHIFT

256--------------------------------------------⎝ ⎠

⎛ ⎞ TCLKINbull=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 45

R

力を正確に 1 PSCLK ク ロ ッ ク周期間アサートするこ とによって開始します PSEN を 1 ク ロ ッ ク周期よ り長くアサートする場合には 適切に位相シフ ト を行う こ とができない可能性があ り ます

PSINCDEC の値は制御入力の増減を指定し 位相シフ トの方向を決定します PSINCDEC を High に設定する と 動的位相シフ ト値が増加し Low に設定する とその値は減少します

実際の位相シフ ト が行われる タ イ ミ ングはさ まざまであ り DCM で PSCLK ク ロ ッ クの 1 周期間PSDONE 出力が High にアサート された時に完了します PSEN がイネーブルであ り PSDONE がアサート されるまでの間 DCM 出力クロ ッ クは 初期位相シフ ト値から新しい位相シフ ト値まで 1 ビットずつスライ ド します シフ トが行われている間 DCM は入力クロ ッ クに対してロ ッ ク状態 つま りLOCKED 出力がアサート された状態を維持します

PSDONE がアサート されたと き またはアサート後に 次の位相シフ ト処理が開始されます

動的ファ イン位相シフ ト モードを使用する場合は CLKOUT_PHASE_SHIFT 属性を VARIABLE に設定し FPGA コンフ ィギュレーシ ョ ン後に PHASE_SHIFT 属性値によって 位相シフ トの初期位置を設定できます DCM の LOCKED 出力が High になる と FPGA アプリ ケーシ ョ ンでは DCM 出力クロ ッ クにおけるスキュー または位相シフ ト を動的に修正できます また DCM がリセッ ト された場合は PHASE_SHIFT 値は初期設定値に戻り ます

図 33 動的ファイン位相シフ ト制御インターフェイス

PSINCDEC

PSEN

PSCLK

PSDONE

0 = 1 =

STATUS[0](

)

PSDONE

If phase shift incremented ordecremented to limit valueSTATUS[0] stays High until newoperation shifts away from limit

x462_33_062403

46 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

動的ファイン位相シフ ト範囲

PHASE_SHIFT と同様に 動的位相シフ トに対しても位相シフ ト範囲の制限があ り ます 図 34 を参照して ください また その範囲は SHIFT_DELAY_RATIO 等式で示したよ うにFINE_SHIFT_RANGE 対入力クロ ッ ク周期の比率によって決定されます

SHIFT_DELAY_RATIO lt 2

指定された FINE_SHIFT_RANGE 値がクロ ッ ク周期の 2 倍よ り小さい場合 (SHIFT_DELAY_RATIOlt 2)最大動的位相シフ ト値は最大遅延タップ値である FINE_SHIFT_RANGE によって決定されますSHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト範囲は 等式 6 によって決定されます

等式 6

たとえば FCLKIN が 75 MHz (TCLKIN = 1333 ns) であ り FINE_SHIFT_RANGE が 1000 ns(1) の場合 動的位相シフ ト値の範囲は plusmn96 とな り ます

図 34 動的位相シフ ト制御

Clock Outputs

PHASE_SHIFT DCM LOCKED

RESET

CLKIN

0Fixed Phase Shift

- LimitFixed Phase Shift+ Limit

PSEN

PSINCDEC

PSCLK

PSDONE

STATUS[0]

0

Dynamic Phase Shift- Limit

Dynamic Phase Shift+ Limit

Increment PhaseShift Value

Decrement PhaseShift Value

Enable

IncrementDecrement

Phase Shift Clock

Phase Shift Done

Variable PhaseShift Overflow

DCM LOCKEDFPGA

DCM Variable PhaseShift Control

x462_34_061903

1 概算値です 正確な数値については 『Spartan-3 データ シート』 のモジュール 3 を参照して く ださい

DynamicPhaseShiftLIMITS INTEGER 128 FINE_SHIFT_RANGETCLKIN

-----------------------------------------------------------------bull⎝ ⎠⎛ ⎞plusmn=

位相シフ ト - クロック周期の分数でクロックを遅延

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 47

R

したがって SHIFT_DELAY_RATIO lt 2 の場合 動的位相シフ ト値は 等式 7 とな り ます PHASE_SHIFT = 1 と して ください

等式 7

SHIFT_DELAY_RATIO ge 2

一方 ク ロ ッ ク周期が FINE_SHIFT_RANGE よ り短い場合は SHIFT_DELAY_RATIO ge 2 であ り最大ファイン位相シフ ト範囲は plusmn255 です

等式 8

したがって SHIFT_DELAY_RATIO ge 2 の場合の位相シフ ト値は 等式 9 とな り ますPHASE_SHIFT = 1 と して ください

等式 9

制御

45ページの図 33 46ページの図 34 に示すよ うにDCM の動的位相シフ ト制御信号によって FPGAアプリ ケーシ ョ ンは現在の CLKIN 入力と DCM ク ロ ッ ク出力間の関係を修正できます 表 18 に 制御入力 現在の位相と次の位相の関係 遅延タ ップへの影響と制御出力の関係を示します

TPhaseShiftDynamicPhaseShift

DynamicPhaseShiftLIMITS-----------------------------------------------------------------------------------⎝ ⎠

⎛ ⎞ FINE_SHIFT_RANGEbull=

DynamicPhaseShiftLIMITS 255plusmn=

TPhaseShiftDynamicPhaseShift

256--------------------------------------------------------- TCLKINbull=

表 18 動的位相シフ ト制御 (内部反転がない場合)

PSENPSINC-

DECPSCLK 現在の

位相シフ ト

次の

位相シフ ト遅延ライン PSDONE

STATUS[0](オーバーフロー )

動作

0 X X X 変更なし 変更なし 動的位相シフ トはディ スエーブル

1 0 uarr gt -制限 現在の位相

シフ ト -1現在の位相

シフ ト -11 0 位相シフ トおよびシフ ト ポインタ

のデク リ メン ト

1 0 uarr le -制限およびgt -255

現在の位相

シフ ト -1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがデク

リ メン ト

1 0 uarr -255 -255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

1 1 uarr lt +制限 現在の位相

シフ ト +1現在の位相

シフ ト +11 0 位相シフ トおよびシフ ト ポインタ

のインク リ メ ン ト

1 1 uarr ge+制限およびlt +255

現在の位相

シフ ト +1変更なし 1 1 遅延ラインの終点 位相シフ トに

変更はなく 位相ポインタがイン

ク リ メ ン ト

1 1 uarr +255 +255 変更なし 1 1 遅延ラインの終点 位相シフ トに変更はなく 位相ポインタが制限

値にある

メモ X = 考慮する必要があ り ません = 不確定であ り 現在のアプリ ケーシ ョ ンの状態によって決定されます1 = PSDONE が 1 PSCLK 周期間 High にアサート されます-制限 = 遅延ラインの最小位置+制限 = 遅延ラインの最大位置PSEN を 1 PSCLK サイ クル間アサート します

48 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

位相シフ ト - クロック周期の分数でクロックを遅延R

PSEN が Low の場合 動的位相シフ トはディ スエーブルであ り その他のすべての入力は無視されます したがって すべての現在のシフ ト値および遅延ライン位置に変更はあ り ません

遅延ラインがその制限 (デク リ メン トで - 制限 または -255 インク リ メン トで + 制限 または +255)に到っていない場合 FPGA アプリ ケーシ ョ ンでは PSEN を High にアサートする とによって現在の位相シフ ト値を変更でき PSCLK の次の立ち上がりエッジの前に PSINCDEC に対して適切なインク リメン ト デク リ メン ト値を設定できます 位相シフ ト値は指定されたよ うにインク リ メン ト またはデクリ メン ト します 位相シフ トの最後に PSDONE が PSCLK の 1 周期間 High にアサート され 位相シフ ト が完了したこ と を示し ます また 位相シフ ト のオーバーフロー状態が発生していないため

STATUS[0] は Low を維持します

DCM が +255 を超える値にインク リ メン ト された場合 または -255 よ り小さな値にデク リ メン ト された場合には遅延ラインの位置はその限界である +255 または -255 から変更されず位相は変更されません STATUS[0] は High にな り 動的位相シフ トがオーバーフローである こ とを示します こ こで 新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0]が Low に戻り ます

位相シフ トが +255 または -255 には達していませんが 遅延ライン範囲 (表 18 では + 制限および - 制限)を超えている場合には位相は変更されませんがSTATUS[0] が再び High になり ます STATUS[0]出力は 遅延タ ップが遅延ラインの限界に到達したと きを示します ただし FPGA アプリ ケーシ ョ ンでは等式 8 または等式 6 を使用して制限値が算出され求められた遅延ラインの制限値は保証された値とな り ます 特定のデバイスでは 処理電圧または処理温度によって 遅延ラインが長くなる場合があ り ますが これの値はデバイスによって異なるため 保証されていません 遅延ラインの位置ではなく 位相シフ ト値は +255 または -255 に到達するまでインク リ メン ト またはデク リ メン ト を続けます新しい位相シフ トによって値が たとえば制限値内に戻るよ うに 変更された場合は STATUS[0] がLow に戻り ます こ こで位相シフ ト値は遅延ラインにおいて有効な遅延値に対応する値に戻るよ うにインク リ メン ト またはデク リ メン ト されます

DCM Wizard

動的位相シフ トは図 35 に示す DCM Wizard の [General Setup] ダイアログ ウ ィンド ウで設定します動的ファ イン位相シフ ト を有効にするためには 図 35 に示すよ うに [Variable] を選択します 次に初期の [Phase Shift Value] を入力します 初期値は前述した固定ファイン位相シフ トモードの場合と同様に動作します

図 36 に示すよ うに[Variable] モードを選択するこ とによって動的位相シフ ト制御信号である PSENPSINCDEC PSCLK および PSDONE がイネーブルにな り ます これらの制御信号を FPGA アプ リケーシ ョ ンで使用するために入力および出力チェッ ク ボッ クスをオンにして ください またSTATUS

図 35 DCM Wizard での動的ファイン位相シフ トモードの選択

Phase Shift Value

Phase ShiftNone Fixed Variable

23

[Variable]

x462_35_061903

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 49

R

出力のボッ クスをオンにし STATUS[0] 信号をイネーブルにします STATUS[0] は 位相シフ ト値がその最大または最小制限値に達したと きを示します

アプリケーシ ョ ン例

動的位相調整を行う場合の動的位相シフ ト機能については 次の リ ンクからアプ リ ケーシ ョ ン ノー トXAPP268 を参照してください

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

クロック逓倍クロック分周周波数合成

DCM アプリ ケーシ ョ ンのもっと も使用される機能の 1 つと して 新しいク ロ ッ ク周波数を柔軟に生成できる機能があ り ます 次に説明するよ うにSpartan-3 DCM は 3 つの独立した周波数合成機能を持ちます図 37 および表 19 を参照してください アプリ ケーシ ョ ンでは これらの機能の 1 つを使用する場合 またはすべてを同時に使用する場合があ り ます 次に 各機能の詳細について説明します

1 2 逓倍クロ ッ ク (CLK2X CLK2X180) は 入力クロ ッ クの周波数を 2 倍にします

2 ク ロ ッ ク分周 (CLKDV) は 入力クロ ッ ク周波数を一定の分周値を使用して分周します

3 周波数合成回路 (CLKFX CLKFX180) は 入力クロ ッ ク周波数から新しい周波数を生成します

図 36 DCM Wizard での動的位相シフ ト制御出力の選択

LOCKEDSTATUS

PSDONE

PSENPSINCDECPSCLK

STATUS[0] STATUS

x462_36_061903

図 37 クロック合成オプシ ョ ン

CLKIN CLK0

CLKFB

DCM

CLKFX

CLKFX180

Frequency Synthesizer

F = FCLKIN CLKFX_MULTIPLY

CLKFX_DIVIDE

CLKDV

Clock Divider

F =FCLKIN

CLKDV_DIVIDE

CLK2X

CLK2X180

F = 2 FCLKIN Clock Doubler

ClockDistribution

Delay

CLK0or

CLK2X

Clock Feedback LoopCLK0 CLK2X CLK2X180 CLKDV CLKFB

CLK0

CLKFXCLKFX180

50

DLL_FREQUENCY_MODE=LOW50

50

Deskewed ClockF = FCLKIN

DUTY_CYCLE_CORRECTION=TRUE50

x462_37_062203

50 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

CLKDV 以外のすべての周波数合成出力は 5050 デューティ サイ クルを持ちます 表 23 に示すよ うに高周波数で分周値が整数の場合通常 CLKDV は 50 のデューティ サイクルを持ちます また 2逓倍クロ ッ ク (CLK2X CLK2X180) 回路は高周波数では使用できません

CLKFX および CLKFX180 以外のすべての DCM ク ロ ッ ク出力はDCM の 遅延ロッ ク ループ (DLL)ユニッ トで生成され CLKFB ピンへのクロ ッ ク フ ィードバッ クが必要になり ます DCM の デジタル周波数合成 (DFS) ユニッ トはCLKFX および CLKFX180 ク ロ ッ ク出力を生成します アプリ ケーシ ョンで CLKFX 出力または CLKFX180 出力のみが使用される場合にはフ ィードバッ ク パスを削除できDCM の動作範囲が広くな り ます 周波数合成回路は DCM 内部に CLKIN に基づいたフ ィードバック パスを持ちます

ク ロ ッ ク フ ィードバッ クを使用した場合 すべての出力クロ ッ クの位相が調整されます また 出力のいくつかは分周クロ ッ クであるためすべての DCM 出力がクロ ッ ク エッジで一致するよ うに調整されるこ とはまれであるこ とがわかり ます たとえば CLKDV 出力は CLKDV_DIVID の各サイクルごとに CLKIN および CLK0 に対して調整されCLK2X 出力は CLK0 のサイクル 1 つおきに この信号に対して調整されます またCLKFX 出力はCLKIN の CLKFX_DIVIDE サイクルごとおよび CLKFBの CLKFX_MULTIPLY サイクルごとに CLKIN に位相調整されます

周波数合成アプリケーシ ョ ン

周波数合成を使用するアプリ ケーシ ョ ンは ほぼ無制限に考えられますが 次にいくつかのアプリ ケー

シ ョ ン例を示します

bull ボード上で利用可能なクロ ッ クを使用している FPGA および外部ロジッ クに対して完全に新しいクロ ッ ク周波数を生成する

bull 低速の外部クロ ッ ク ソースから高周波数の内部クロ ッ クを生成し システムの EMI を低減する

bull 図 38 に示すよ うに高速シ リ アルデータ ク ロ ッ クを分周しFPGA 内部でデータの並行処理を行う

bull 同様に 図 38 に示すよ うに 高速シ リアル データ フォーマッ トに変換する前に 並行で動作するデータ ク ロ ッ クの周波数を逓倍する

bull 適切な速度の機能をインプリ メン トする場合に 入力クロ ッ クを逓倍し 内部ロジッ クをクロ ッ ク

アップするこ とによって 使用する リ ソースを削減する

表 19 DCM 周波数合成オプシ ョ ン

機能 DCM 出力 周波数DCM の機能ユニッ ト

フ ィードバック50 の

デューティ サイクル

スキュー調整

クロ ッ ク

CLK0 DLL 必要 DUTY_CYCLE_CORRECTION = TRUE の場合に 50 です

2 逓倍クロ ッ ク CLK2XCLK2X180

DLL 必要 常に 50 です

分周クロ ッ ク CLKDV DLL 必要 高周波数モードで分周値が

整数以外の場合を除いて常

に 50 です

周波数合成 CLKFXCLKFX180

DFS オプシ ョ ン フ ィードバッ クに

よって ク ロ ッ ク

入力周波数範囲は

広くなるこ とは

あ り ません

常に 50 です

FCLKIN

2 FCLKINbull

FCLKINCLKDV_DIVIDE---------------------------------------------------

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE------------------------------------------------------------⎝ ⎠

⎛ ⎞bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 51

R

入力クロックおよび出力クロックの周波数条件

周波数合成を行う場合の入力クロ ッ クおよび出力クロ ッ クの周波数条件は DCM で使用されるク ロ ック出力によって決定されます たとえば CLKFX 出力および CLKFX180 出力は DCM のデジタル周波数合成 (DFS) ユニッ トのみを使用し その他のすべての出力は遅延ロッ ク ループ (DLL) ユニッ ト を使用します DLL における周波数の制限は DFS よ り も厳しいため DFS のみを使用する場合の方が周波数の動作範囲は広くな り ますDFS および DLL の両方を使用する場合アプリ ケーシ ョ ンは DLLの周波数範囲によって制限されます

また DLL および DFS は 低周波数モード と高周波数モードの両方で動作可能であるため モード設定によっても有効な周波数範囲が変動します

DCM デザインが有効であるためには CLKIN 周波数が 『Spartan-3 データ シート 』 モジュール 3 に記載されている動作範囲内である必要があ り 使用されているすべての出力クロ ッ クの周波数もそれぞれ

指定された範囲内でなければなり ません

図 39 に クロ ッ ク入力およびクロ ッ ク出力と対応する周波数範囲を示します ただし こ こで示すのは低周波数モードの場合のみです データ シートに記載されている仕様名は影付きのボッ クス内に示しています また 表 20 に DCM アプリ ケーシ ョ ンの例および周波数条件を示します

図 38 周波数合成アプリケーシ ョ ンの一般的な例

DCM DCM

F

n-bitswide

Fn

F F m

m-bitswide

F F

Overclockedtime-shared logic

DCM

F

F F x

High-speed serial datadown-converted toslower parallel data

Slower parallel dataup-converted to high-speed serial data

FPGA

x462_38_070903

52 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

2 逓倍クロック (CLK2X CLK2X180)表 21 に示すよ うに 2 逓倍クロ ッ ク回路によって CLKIN 入力の周波数は 2 倍になり ます この 2 逓倍クロ ッ ク回路は DLL 機能ユニッ トの一部であ り CLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します 2 逓倍クロ ッ ク回路からの出力は CLK2X および CLK2X180 であ り これらの出力のデューテ ィ サイ クルは常に 50 です また これらの周波数は同一ですがCLK2X180 は CLK2X を 180deg位相シフ ト したものであ り 基本的に CLK2X 出力を反転したものになり ます 高性能のデュアル データ レート (DDR) アプリ ケーシ ョ ンまたはクロ ッ ク転送アプリ ケーシ ョ ンでは 両方の位相を使用するこ とが不可欠です

CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE 属性が LOW に設定されている場合のみに使用できます アプリ ケーシ ョ ンにおける必要性に応じてオプシ ョ ンの 2 分周機能を使用しCLKIN 入力周波数を低下させてください ( 「アドバンス ド オプシ ョ ン」 を参照)

図 39 入力クロックおよび出力クロックの周波数条件 (低周波数モード )

DFS(CLKIN_FREQ_FX_MINMAX)

DLL (Low-Frequency Mode)(CLKIN_FREQ_DLL_LF_MINMAX)

~1 MHz ~326 MHz

~24 MHz ~180 MHzFCLKIN

DFS (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~24 MHz ~200 MHz

DLL CLKDV (Low-Frequency Mode)(CLKOUT_FREQ_FX_LF_MINMAX)

~15 MHz ~120 MHz

DLL CLK2X (Low-Frequency Mode)(CLKOUT_FREQ_2X_LF_MINMAX)

~48 MHz ~326 MHz

FCLKFXFCLKFX180

FCLKDV

FCLK2XFCLK2X180

x462_39_070903

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 20 DCM 周波数条件の例

入力周波数 出力周波数 解説

12 MHz 128 MHz 1 つの DCM のみを使用する場合には条件を満たしません FCLKIN は DFS の条件を満たす範囲内ですが FCLKFX は最低 24MHz 出力周波数が必要です

12 MHz 324 MHz DFS を使用する DCM で条件を満たします CLKFX_MULTIPLY=27 と設定してくださいFCLKFX は DFS 出力周波数範囲内です

25 MHz 25 MHz30 MHz

DFS および DLL を使用する DCM で条件を満たします CLKDV 出力を 25MHz 信号に使用しCLKDV_DIVIDE=10 と設定してください また CLKFX 出力を 30MHz 信号に使用しCLKFX_MULTIPLY=6 および CLKFX_DIVIDE=5 と設定してください すべての入力周波数および出力周波数は適切な範囲内です

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 53

R

表 21 2 逓倍クロック回路のまとめ

DCM 出力 CLK2XCLK2X180

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク 必要です

50 デューティ サイ クル出力 はい

制御属性

DLL_FREQUENCY_MODE CLK2X 出力および CLK2X180 出力は DLL_FREQUENCY_MODE = LOW の場合にのみ有効です

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます 2 逓倍クロ ッ クの出力は 高周波数モードでは使用できませんが ほかの DCM ク ロ ッ ク出力に必要となる場合があ り ます

CLK2XCLK2X180

CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

2 FCLKINbull

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (~24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (~48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~326 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_2X_LF_MIN (48 MHz)

CLKOUT_FREQ_2X_LF_MAX (~325 MHz)

HIGH 設定不可 設定不可

54 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

クロック分周 (CLKDV)表 22 に概要を示すクロ ッ ク分周ユニッ トは デザインに設定した CLKDV_DIVIDE 属性の値を使用し CLKIN 入力の周波数を分周します ク ロ ッ ク分周ユニッ ト は DLL 機能ユニッ ト の一部であ りCLK0 出力または CLK2X 出力から CLKFB へのフ ィードバッ ク パスを必要と します

表 22 クロック分周回路のまとめ

DCM 出力 CLKDV

出力周波数

DCM の機能ユニッ ト 遅延ロ ッ ク ループ (DLL)

フ ィードバッ ク DCM からの CLK0 出力または CLK2X 出力を使用する場合に必要です

50 デューティ サイ クル出力 はい ただし DLL_FREQUENCY_MODE=HIGH および CLKDV_DIVIDE が整数値ではない場合を除きます

制御属性

DLL_FREQUENCY_MODE CLKDV は両モードで使用できます 分周値によっては 出力のデューティ サイ クルに影響を与える場合があ り ます ( 「CLKDV ク ロ ッ ク調整」 を参照してください)

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 有効な値は 15 2 25 3 35 4 45 555 6 65 7 75 8 9 10 11 12 13 14 15 16 であ り 整数値の場合 よ り短時間で DLL はロッ ク状態になり ます また 整数値を設定する場合には出力ジッ タが低くな り ます

周波数制約

CLKIN CLKIN の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

CLKDV CLKDV の周波数は DLL_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

FCLKINCLKDV_DIVIDE--------------------------------------------------

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_DLL_LF_MIN (24 MHz)

CLKIN_FREQ_DLL_LF_MAX (~180 MHz)

HIGH CLKIN_FREQ_DLL_HF_MIN (48 MHz)

CLKIN_FREQ_DLL_HF_MAX (~325 MHz)

DLL_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKOUT_FREQ_DV_LF_MIN (15 MHz)

CLKOUT_FREQ_DV_LF_MAX (~120 MHz)

HIGH CLKOUT_FREQ_DV_HF_MIN (30 MHz)

CLKOUT_FREQ_DV_HF_MAX (~240 MHz)

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 55

R

CLKDV クロック調整

DLL_FREQUENCY_MODE 属性が High であ りCLKDV_DIVIDE 属性の値が整数ではない場合を除き CLKDV 出力のデューティ サイクルは 50 になり ます 表 23 に CLKDV のデューティ サイクルを示します Spartan-3 DCM では CLKIN のデューティ サイクルが 6040 (または 4060) 以上である必要があ り高周波数モードの場合に 15 で分周された CLKDV 出力は次にカスケード接続された DCM へクロ ッ ク入力するこ とはできません

CLKDV のジッ タは 周波数モードおよび属性値が整数か 整数ではないかによって決定されます

CLKDV_DIVIDE 属性に整数値を設定するこ とによって 出力ジッ タが半分になり DLL がロ ッ ク状態になるために要する時間も短縮されます

DCM Wizard

ク ロ ッ ク分周は DCM Wizard の[General Setup]ウ ィ ン ド ウで設定し ます 図 40a に示すよ う にCLKDV 出力のチェッ ク ボッ クスをオンにし 次に図 40b に示すよ うに ド ロ ップ ダウン リ ス トから[Divide by Value] を選択します

表 23 CLKDV デューティ サイクル (DLL_FREQUENCY_MODE=HIGH の場合)

CLKDV_DIVIDE 属性 デューティ サイクル High 時間総サイクル

整数 50000 12

15 33333 13

25 40000 25

35 42857 37

45 44444 49

55 45454 511

65 46154 613

75 46667 715

表 24 CLKDV 出力ジッ タ

CLKDV_DIVIDE CLKDV 出力周期ジッ タ

整数値 CLKOUT_PER_JITT_DV1 (plusmn~150 ps)

整数以外の値 CLKOUT_PER_JITT_DV2 (plusmn~300 ps)

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

a CLKDV 出力のチェ ック ボックスをオン b ドロップ ダウン リス トから [Divide by Value を選択]

図 40 DCM Wizard での分周クロック設定

CLKDV

x462_40a_0619032

Divide By Value

x462_40b_061903

56 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック逓倍 クロック分周 周波数合成R

周波数合成回路 (CLKFX CLKFX180)周波数合成回路を使用するこ とによって 入力周波数の逓倍 分周 またはその両方をもっと も柔軟に

行う こ とができます 表 25 に示すよ うに 2 つの周波数合成出力は CLKFX および CLKFX180 ですCLKFX180 出力は CLKFX と同一の周波数を持ちますがCLKFX を 180degまたは 12 ク ロ ッ ク周期位相シフ ト させた ものです これらの周波数合成出力のデューテ ィ サイ クルは 50 であ るためCLKFX180 は CLKFX の反転クロ ッ クのよ うに見えます

表 25 にある等式が示すよ うに設計段階で 2 つの属性を使用し合成出力周波数を制御します CLKINク ロ ッ ク入力は CLKFX_MULTIPLY が分子 CLKDV_DIVIDE が分母である比率を使用して逓倍されます たとえば 75MHz CLKIN 入力を使用して 155MHz の出力を生成するためには 周波数合成回路では 3115 の比率で CLKIN を逓倍します これは CLKIN を始めに 31 倍し 次に 15 で割ることではあ り ませんCLKIN を 31 倍するこ とによって出力周波数は2325GHz とな りSpartan-3 DCMの周波数範囲を越えるこ とにな り ます

68 を 34 と約分するよ うに 逓倍値および分周値はもっと も簡潔な値にする必要があ り ます このことによって ロ ッ クするために必要な時間が短縮します

周波数合成には 常にク ロ ッ ク フ ィードバッ クが必要ですが DFS には CLKIN を基準と した内部フ ィードバッ ク ループがあるため DLL を使用せずに DFS を使用する場合には CLKFB に別のループは必要あ り ません

また CLKFB 出力は CLKIN の CLKFX_DIVIDE サイ クルごと および CLKFB の CLKFX_MULTIPLY サイクルごとに CLKIN に対して位相調整されます たとえばCLKFX_MULTIPLY = 3 であ りCLKFX_DIVIDE = 5 の場合CLKFX 出力の位相は CLKIN の各 5 サイクルごと および CLKFB の 3 サイクルごとに CLKIN 入力に対して位相調整されます DCM で LOCKED 出力がアサート される と DFS は CLKIN 入力の立ち上がりエッジごとに再同期し ほぼ完璧に位相調整されます

表 25 周波数合成回路のまとめ

DCM 出力 CLKFX

CLKFX180 (CLKFX を 180deg位相シフ ト した場合と同一)

出力周波数

DCM の機能ユニッ ト デジタル周波数合成 (DFS)

フ ィードバッ ク CLKIN を基準にして内部フ ィードバッ クを使用するため 必要あ り ません 遅延ロッ ク ループ (DLL) を使用する場合は オプシ ョ ンと して CLKFB 入力を使用できます

50 デューティ サイ クル出力 常に 50 です

制御属性

DFS_FREQUENCY_MODE CLKIN CLKFX 出力 CLKFX180 出力の周波数条件に影響します

DLL_FREQUENCY_MODE アプリ ケーシ ョ ンで DLL 出力が使用される場合に 周波数合成回路のみに影響を与えます また よ り厳しい DLL の条件に適用するよ うに CLKIN 周波数を低下させる可能性があ り ます CLKFX 出力または CLKFX180 出力が使用されている場合 周波数条件は DFS_FREQUENCY_MODE によってのみ指定されます

CLKFX_MULTIPLY 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 2 から 32 であ りデフォルトは 4 です

CLKDV_DIVIDE 上記の等式に基づき 出力周波数を制御します 設定可能な範囲は整数値の 1 から 32 であ りデフォルトは 1 です

FCLKINCLKFX_MULTIPLY

CLKFX_DIVIDE-----------------------------------------------------------bull

クロック逓倍 クロック分周 周波数合成

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 57

R

DCM Wizard

周波数合成を使用する場合図 41 に示すよ うに DCM Wizard の[General Setup]ダイアログ ボッ クスで CLKFX または CLKFX180 あるいはその両方のチェッ ク ボッ クスをオンにしてください

CLKFX 出力または CLKFX180 出力のみを使用する場合はオプシ ョ ンと して DLL ク ロ ッ ク出力およびフ ィードバッ クをディ スエーブルにするこ とによって 周波数範囲を広げるこ とができます

bull デフォルトでは CLK0 出力は常にオンになっていますが CLKFX または CLKFX180 のみを使用する場合は CLK0 のチェッ ク ボッ クスをオフにしてください

bull 図 42 に示すよ うに DCM フ ィードバッ クをディ スエーブルにする場合は [None] を選択してください フ ィードバッ クを使用しない場合はCLKFX および CLKFX180 の周波数範囲は高域と低域の両方で広くな り ます

周波数制約

CLKIN アプリ ケーシ ョ ンで 遅延ロッ ク ループ (DLL) からの出力が使用されていない場合CLKIN の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます DLL が使用されている場合は DLL のクロ ッ ク周波数条件はよ り厳し くな り ます

CLKFXCLKFX180

CLKIN 出力および CLKFX180 出力の周波数条件は DFS_FREQUENCY_MODE 属性によって指定されます

概算値です 正確な数値については 『Spartan-3 データ シート 』 のモジュール 3 を参照してください

表 25 周波数合成回路のまとめ (Continued)

最小周波数 最大周波数

CLKIN_FREQ_FX_MIN (~10 MHz) CLKIN_FREQ_FX_MAX (~326 MHz)

DFS_FREQUENCY_

MODE最小周波数 最大周波数

LOW CLKIN_FREQ_FX_LF_MIN(~24 MHz)

CLKIN_FREQ_FX_LF_MAX(~210 MHz)

HIGH CLKIN_FREQ_FX_HF_MIN(~210 MHz)

CLKIN_FREQ_FX_HF_MAX(~325 MHz)

図 41 DCM Wizard での Frequency Synthesizer 設定

CLK0

CLKFXCLKFX180

CLKFXCLKFX180

CLKFX CLKFX180

DCM

x462_41_070903

58 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロックのフォワード ミ ラー リバッファR

DCM Wizard のクロ ッ ク周波数合成で示したよ うに必要は出力周波数または逓倍値と分周値を入力します

クロックのフォワード ミ ラーリバッファ

DCM は高度なクロ ッ ク制御機能を持ちさ らに Spartan-3 IO ピンは多様な IO 電圧標準をサポートするため 通常 Spartan-3 FPGA ではクロ ッ ク信号のリバッファ またはミ ラーを行い 入力クロ ッ クの電圧を変更ために使用されます 同様に DCM の入力クロ ッ ク条件を変更し デューティ サイクルを50 に調整します

図 20 に DCM の入力クロ ッ クを 50 デューティ サイ クルに調整し その周波数で CLK0 出力を使用してクロ ッ クをフォワードする または DCM CLK2X を使用して周波数を 2 倍にする DCM の例を示しました DCM が LOCKED 出力をアサートする と 入力クロ ッ クおよび出力クロ ッ クは位相調整されます CLKFB へのフ ィードバッ ク パスは外部のクロ ッ ク フ ィードバッ ク地点でクロ ッ ク分散遅延を確認し 削除します

出力クロ ッ クのデューティ サイクルが 50 であるこ とは重要であるため出力 IO 標準が 50 デューティ サイ クルを維持できるために十分な速度でスイ ッチできる こ と を確認して ください デューティサイ クルの動作は 出力信号でのシ ミ ュレーシ ョ ンを行う こ とによって検証します IBIS シ ミ ュレーシ ョ ンで確認できるよ うに IO 標準には立ち上がり と立ち下がりが対称的ではなく デューティ サイクルにずれが発生しているものもあ り ます HSTL SSTL および LVCMOS の DCI バージ ョ ンの IO標準の立ち上がりおよび立ち下がりがよ り対称的です

100 MHz を越える場合のデューテ ィ サイ クルを確実に 50 にするためには CLKIN のソースのデューティ サイ クルが 50 の場合にも DCM のデューティ サイクル調整機能を使用する必要があ ります したがって ク ロ ッ ク フォワードに CLK0 CLK90 CLK180 または CLK270 を使用する場合はDUTY_CYCLE_CORRECTION 属性を TRUE に設定してください 通常その他の DCM ク ロ ック出力は常に 50 のデューティ サイ クルに調整されます ( 「ク ロ ッ ク調整」 を参照して ください)

200 MHz 以上で動作する場合のデューティ サイ クルを最適にするためには図 43 に示すよ うな回路を使用して ください こ こでは DCM からの CLKx 出力および CLKx180 出力がデュアル データ レート (DDR) 出力フ リ ップフロ ップの C0 入力および C1 入力を駆動するよ うに使用します DDR フ リ ップフロ ップの D0 入力を VCC に接続し D1 入力を GND に接続します また DCM の各出力は個々のグローバル バッファを駆動しデューティ サイクルのずれを最小にします 高周波数の場合に 1つのク ロ ッ クのみを分散し DDR フ リ ップフロ ップ内部でローカル位相シフ ト を行う と 約 150ps のデューティ サイクルのずれが発生するため このよ うな回路設計は推奨していません

周波数が 250 MHz 以上の場合には分散クロ ッ クに LVDS のよ うな差動信号標準を使用します 図 43にCLKIN ク ロ ッ ク入力およびクロ ッ ク出力がと もに VLDS を使用する例を示します さ らにク ロ ック フ ィードバッ ク パスも LVDS を使用します パフォーマンスを最適にするためには ク ロ ッ ク入力およびクロ ッ ク フ ィードバッ ク パスにグローバル バッファ入力 (IBUFGDS) を使用する必要があ り ます これによってデバイスの一辺にあるすべてのグローバル バッファ入力を使用するこ とになり ますが 高周波数でのクロ ッ ク フォワードを最適に行う こ とができます

図 42 フ ィードバックに [None] を選択し 周波数範囲を拡大

SourceFeedback

Internal External None

Value 1X 2X

If only using the CLKFX or CLKFX180clock ouputs optionally click None to extend the DCM frequency limits

x462_42_070903

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 59

R

クロック ジッ タおよび位相ノイズ

もっと も高価で高精度なものの場合においてもすべてのクロ ッ クにはクロ ッ ク ジッタまたは位相ノイズがあ り ます こ こでは Spartan-3 デジタル ク ロ ッ ク マネージャに固有のジッ タ特性について説明します 低周波数 たとえば 20 MHz で動作する場合は 一般に ジッ タの影響は無視できますが200 MHz のよ う な高周波数で動作する場合には 特にデュアル データ レート (DDR) アプリ ケーシ ョンにおいて ジッ タはデザインの問題に関連する要素となり ます ク ロ ッ ク ジッタによって アクティブ ク ロ ッ ク エッジ間で実際に有効な時間が削減されるため FPGA アプ リ ケーシ ョ ンで使用できる時間が制限されます

クロック ジッ タ とは図 44 に示すよ うにク ロ ッ ク ジッタ とは理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジの相違です 太線は 理想的なクロ ッ ク信号を表します 各クロ ッ ク エッジでは 理想的なクロ ッ ク エッジと実際のクロ ッ ク エッジ間に若干のずれがあ り このずれの最大値と最小値の差異をピーク ジッ タ と呼びます ジッ タは アクテ ィブなク ロ ッ ク エッジのみに関係します たとえば シングル データ レート(SDR) アプリ ケーシ ョ ンの場合データは各立ち上がりエッジでクロ ッ ク入力され この場合のジッタは総クロ ッ ク周期から引く こ とによって求められます 一方 デュアル データ レート (DDR) の場合データは各クロ ッ ク周期の始ま り および 12 ク ロ ッ ク周期の点でクロ ッ ク入力されるため ジッ タは12 ク ロ ッ ク周期ごとに影響を与えます

図 43 高周波数 (250 MHz 以上) での LVDS クロック フォワード回路

D0

D1

CE

C0

C1

Q

OFDDRCPE

CLKx

DCM

CLKx180

BUFG

BUFG

VCC

GND

OBUFDS

CLKIN

CLKFB

IBUFGDS

IBUFGDS

External Clock Feedback (LVDS)

FPGA

x462_43_061903

図 44 クロック信号におけるジッ タ

x462_44_061903

60 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

クロック ジッ タの原因ク ロ ッ ク ジッタはすべてのシステムに存在しそれを避けるこ とはできません ク ロ ッ ク ジッタの原因は システム内のノ イズのソース または不完全な信号であ り 実際 ジッ タは時間軸上における ノ イ

ズである と言えます たとえば 入力クロ ッ ク ソースには ク リ スタルからの任意の温度振動ノ イズまたは機械的な振動ノ イズによる固有のジッタ特性があ り ます 多くの同時スイ ッチ出力 (SSO) は回路基板にノ イズを追加するため 内部スイ ッチしきい値がわずかに変更し ジッ タが増加します 同様に適切に設計されていない電源供給または不十分なデカップリ ングによってもジッ タは増加します

その他のジッタの原因と しては近接した信号のクロス トーク不適切な終端 グランド バウンス電磁干渉 (EMI) などが考えられます

このアプ リ ケーシ ョ ン ノートでは Spartan-3 デジタル ク ロ ッ ク マネージャ (DCM) および FPGA 内部でのジッタ全般について説明します

クロック ジッ タ特性の理解ク ロ ッ ク ジッタの特性はさまざまな方法で定められ次のよ うにいろいろな方法でその特徴を捉えることができます

サイクル間ジッ タ

隣接サイクル ジッタ と も呼ばれるサイクル間ジッタは 図 45 に示すよ うに 1 つのクロ ッ ク サイクルと次のクロ ッ ク サイクル間でのクロ ッ ク周期の最大差異です この例ではあるクロ ッ ク サイクルと次のクロ ッ ク サイクル間の最大差異は +100 ps および -100 ps または plusmn100 ps です数百万クロ ッ ク サイクル間の計測を行う場合にはクロ ッ ク周期の変動の絶対値が大き くなる可能性があ り ますがク ロ ッ

ク サイクル間の変動が plusmn100 ps よ り大き くなるこ とはあ り ません

サイクル間ジッタは ク ロ ッ ク出力またはオシレータの特性を測定するために重要ですが アプ リ ケー

シ ョ ンのタイ ミ ング解析には有効ではあ り ません

周期ジッ タ

周期ジッタは 数百万クロ ッ ク サイクル間で計測したサイ クル間ジッタの合計です ピーク ジッ タは理想的なクロ ッ ク移行時間と比較した場合の最短および最小移行時間を示します

デジタル ク ロ ッ ク マネージャの周期ジッ タは一定ではく ピーク間ジッタ と して表されます 図 46 に示すよ うに 理論的には クロ ッ ク移行位置は理想的なクロ ッ ク位置を中心とする確率的な分散 また

はヒ ス ト グラムですが実際の分散はガウス分布ではなく二峰性分布の場合があ り ます 実際のクロ ック移行のほとんどは理想的なクロ ッ ク位置付近で起こ り ますが数百万クロ ッ ク サイクルにおける測定の結果 望ましい位置から離れた地点で起こるクロ ッ ク移行もあ り ます

理想的な位置からの統計的な距離はσ (シグマ) と呼ばれる標準偏差で測定されます DCM はすべてデジタルで機能するデザインであるため 非常に安定しており ザイ リ ンクスでは ジッ タの偏差を plusmn7σまたはピーク間ジッ タを 14σ と定めています 判断基準と して 偏差が plusmn7σ である とい う こ とは ジッタの 9999999999974 が指定されたワース ト ケース ジッ タよ り小さい値であるこ とを保証していま

図 45 サイクル間ジッ タ例

T0 T1 = T0 + 100 ps T2 = T1 - 100 ps

x462_45_062203

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 61

R

す また 14σ ピーク間ジッ タ plusmn7σ ジッタ偏差は 最大ビッ ト エラー レート (BER) が 128 x 10-12 という こ とを意味します

ユニッ ト インターバル(UI)

ジッタの仕様を単位間隔 (UI) の割合と して指定する別の方法もあ り ます 1 UI は 周波数に関わらず1 ビッ ト時間を表します ク ロ ッ クの立ち上がりエッジ または立ち下がりエッジのいずれかでデータが取り込まれるシングル データ レート (SDR) アプリ ケーシ ョ ンでは1 UI は 1 ク ロ ッ ク周期になり ます 一方 2 倍のクロ ッ ク レートでデータがクロ ッ ク入力されるデュアル データ レート (DDR) アプリケーシ ョ ンでは 1 UI が 12 ク ロ ッ ク周期になり ます

UI で指定されるピーク間ジッタ幅は 総ビッ ト周期時間に対するピーク間ジッタ値の比率です

総ジッ タの計算

『Spartan-3 データ シート 』 には CLKFXCLKFX180 以外の DCMのク ロ ッ ク出力におけるジッ タが記載されてます デジタル周波数合成 (DFS) ジッ タは 逓倍値および分周値に基づいて算出されます

データ シートには DLL からのクロ ッ ク出力 (CLKFX および CLKFX180 を除くすべてのクロ ッ ク出力) に対するワース ト ケース ジッ タが記載されています DLL ではジッ タが削減されないため DLLク ロ ッ ク出力の総ジッタには入力クロ ッ クである CLKIN のジッタおよびデータ シートに記載された値が含まれます

また DFS ク ロ ッ ク出力である CLKFX および CLKFX180 では 入力ク ロ ッ ク ジッ タがある程度削減されるため 算出された出力ジッタが総ジッタにな り ます

図 46 ピーク間周期ジッ タ例

図 47 ユニッ ト インターバルの比率で示された周期ジッ タ

Desired clock period

Measured clock period

Num

ber

of s

ampl

esPeak-to-peak Period Jitter

(14σ)

+7σ-7σ

x462_46_061903

Bit Period

Unit Interval (UI)

x462_47_061903

62 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

DLL 出力ジッ タへの入力ジッ タの加算

入力ジッタに DLL 出力ジッタを加える場合ノ イズ計算と同様に 2 乗平均平方根 (RMS) 計算を使用します

ピーク間

等式 10

ピーク間偏差

等式 11

定義

入力クロ ッ クのピーク間周期ジッ タが 150 ps (plusmn75 ps) であ り このク ロ ッ クのデューティ サイ クルがDCM の CLK0 出力と同一の周波数を使用して修正される場合について考えます

この場合 JITTERINPUT = 150 ps であ り JITTERSPEC の値は 『Spartan-3 データ シート 』 で指定されている CLKOUT_JITT_PER_0 と呼ばれる値です これは ピーク間で plusmn100 ps または 200 ps である と概算されます

したがって DCM 出力の総ジッタはピーク間で 250 ps または plusmn125 ps です

カスケード接続された DCM のジッ タ計算図 48 に 複数の DCM をカスケード接続し さまざまな出力周波数を生成しているアプ リ ケーシ ョ ンの例を示します この場合のジッタは 次によって決定されます

bull 前のソースからのジッタ

bull 使用されている DCM 出力

データ シートに記載されているよ うにジッ タ特性は各 DCM 出力によってわずかに異なり ます またDFS からの CLKFX 出力および CLKFX180 出力は 入力ジッタをある程度削減し ジッ タ値は DCMWizard で算出されます ( 「ク ロ ッ ク周波数合成」 参照して ください)

JITTERINPUT = FPGA のクロ ッ ク入力ピンで測定された入力周期ジッタ

JITTERSPEC = 『Spartan-3 データ シート 』 に記載されている適切な出力ポートに対する DLL ク ロ ッ ク出力周期ジッタ

JITTERTOTAL = 予想される総出力周期ジッタ

JITTERTOTAL JITTERINPUT( )2 JITTERSPEC( )

2+=

JITTERTOTALJITTERINPUT( )

2 JITTERSPEC( )2+

2--------------------------------------------------------------------------------------------------------plusmn=

JITTERTOTAL 150 ps( )2200 ps( )

2+ 250 ps= =

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 63

R

したがって カスケード接続された DCM チェーンの任意の点におけるジッタは前述した 2 つの要因によって決定されます 次の例では 回路上のいくつかの点で総ジッタを計算する方法を示します

例 1 すべての DCM が DLL 出力を使用する場合

この例では 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

こ こでは DCM (A) が CLK2X 出力を使用する場合について考えます また DCM 出力ジッ タに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_2X 値を使用してください この値は 400 ps (plusmn200 ps) と概算されています 等式 10 を使用しク ロ ッ ク (A) の総周期ジッタを計算します

次にDCM (B) で分周値が整数である CLKDV 出力を使用する場合について考えます またDCM 出力ジッタに対して 『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_DV1 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (B) の総周期ジッタを計算します この場合 入力ジッタ DCM (A) からのジッタ DCM (B) からのジッタを考慮する必要があるため RMS 等式は次のよ うになり ます

最後に DCM (C) が DCM (B) からの出力を 90deg位相シフ トする場合について考えます また DCM出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用して ください この値は 300 ps (plusmn150 ps) と概算されています 等式 10 を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します この場合 入力ジッ タ DCM (A) からのジッ タ DCM (B) からのジッ タDCM (C) からのジッ タを考慮する必要があるため RMS 等式は次のよ うにな り ます

例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合

この例は DFS からの CLKFX 出力または CLKFX180 出力を使用する DCM がある点以外は 例 1 すべての DCM が DLL 出力を使用する場合と同様です

この例では 75MHz 入力クロ ッ クの周期ジッタが 150 ps (plusmn75 ps) です

例 1 と同様に まず DCM (A) が CLK2X 出力を使用する場合について考えます 出力ジッタは 次に示す等式になり ます

この例ではDCM (A) で生成された 150MHz を使用してDCM (B) で 90MHz 合成クロ ッ クを生成します DCM Wizard ( 「ク ロ ッ ク周波数合成」 を参照して ください) を使用し CLKFX_MULTIPLY=3および CLKFX_DIVIDE=5 と設定します ワース ト ケースの出力周期ジッタは 700 ps とな り ます

図 48 カスケード接続された DCM のジッ タ計算

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

DCMCLKIN

RST

CLKx

LOCKED

A B C

x462_48_061903

JITTERTOTAL A( ) 150ps( )2400ps( )

2+ 427ps 214psplusmn= = =

JITTERTOTAL B( ) 150ps( )2400ps( )

2300ps( )

2+ + 522ps 261psplusmn= = =

JITTERTOTAL C( ) 150ps( )2 400ps( )2 300ps( )2 300ps( )2+ + + 602ps 301psplusmn= = =

JITTERTOTAL B( ) 700ps 350psplusmn= =

64 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

最後にDCM (C) が DCM (B) からの出力を 90deg位相シフ ト させる場合について考えます DCM 出力ジッタに対して『Spartan-3 データ シート 』 に記載されている CLKOUT_PER_JITT_90 値を使用してください この値は 300 ps (plusmn150 ps) と概算されています 次の等式を使用し ク ロ ッ ク (C) の総周期ジッ タを計算します 次の DCM では CLKFX を使用するため 総入力ジッ タは ワース ト ケースで700 ps とな り ます 次の RMS 等式を使用し 出力ジッタを計算します

カスケード接続した DCM を使用する場合の推奨デザイン

DCM をカスケード接続して使用する場合 図 48 に示すよ うに DCM からの LOCKED 出力が次のDCM の RST 入力を制御しているこ とを確認してください カスケード接続した DCM では 1 つ前のDCM で LOCKED 出力がアサート され ク ロ ッ クが安定しているこ とが示されてた後に 入力クロ ックにロ ッ クする必要があ り ます

また DCM をカスケード接続する場合には 最もジッ タの影響を回避する必要のあるク ロ ッ ク出力が最初の DCM に接続されるよ うに DCM チェーンを構成してください

システム パフォーマンスにおけるジッ タの影響ク ロ ッ ク ジッタによっても有効なビッ ト周期が狭くな りシステム パフォーマンスが低下します 次の等式に示すよ うに FPGA アプリ ケーシ ョ ンで使用可能なビッ ト周期は 総ビッ ト周期 TBIT からいくつかの影響を差し引いたものです シングル データ レート (SDR) アプリ ケーシ ョ ンでは ク ロ ッ ク周期とビッ ト周期は一致しますがデュアル データ レート (DDR) アプリ ケーシ ョ ンのビッ ト周期はクロ ッ ク周期の 12 になり ます

定義

総ジッ タがク ロ ッ ク周期からの偏差ではな く正の値に指定されている場合 (たとえば plusmn100 ps ではなく200 ps の場合) 正の値を 2 で割り ます (100 ps) ビッ ト周期は負の偏差によってのみ短くなり 正の偏差によってはビッ ト周期が長くな り さ らにタイ ミ ング スラ ッ クが追加されます

入力クロ ッ ク信号の周波数は 75 MHz であ り ク ロ ッ ク ソースのジッ タは plusmn100 ps です アプリ ケーシ ョ ンは内部で生成された 150 MHz のクロ ッ クの立ち上がりエッジでデータを入力します また 総ビッ ト周期 TBIT は 667 ns です ジッ タの影響を考慮する と 有効なビッ ト周期 TAVAILABLE は

どのよ うになるでし ょ うか

2 逓倍クロ ッ ク回路からの CLK2X 出力によって75MHz ク ロ ッ ク入力から 150MHz ク ロ ッ クが生成されます 『Spartan-3 データ シート 』 の CLKOUT_PER_JITT_2X 仕様による と 2 逓倍クロ ッ ク出力である CLK2X には plusmn~200 ps (概算) のワース ト ケース ジッタがあ り ます 2 乗平均平方根を使用し

TBIT = ビッ ト周期時間

tTOTAL_JITTER = 総クロ ッ ク ジッ タ ク ロ ッ ク入力ジッタに DCM 出力ジッタ またはカスケード接続された DCM のジッタを加算したものです

tDUTY_CYCLE_DISTORTION = デューティ サイ クルのずれ デュアル データ レート (DDR) アプリケーシ ョ ンのみで必要であ り それ以外の場合はゼロです 使用する DCM ク ロ ッ ク出力によって データ シートに記載されている CLKOUT_DUTY_CYCLE_DLL または CLKOUT_DUTY_CYCLE_FX を使用します

JITTERTOTAL C( ) 700ps( )2300ps( )

2+ 762ps 381psplusmn= = =

TAVAILABLE TBIT tTOTAL_JITTERndash tDUTY_CYCLE_DISTORTIONndash=

クロック ジッ タおよび位相ノイズ

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 65

R

DCM のジ ッ タplusmn200 ps にク ロ ッ ク ソースのジ ッ タ plusmn100 ps を加算する こ と によ って 総ジ ッ タtTOTAL_JITTER が plusmn0223 ns であるこ とがわかり ます

データはクロ ッ クの立ち上がりエッジでのみ入力されるためデューティ サイクルのずれが影響を与えるこ とはな く tDUTY_CYCLE_DISTORTION = 0 です

結果と して 有効な総クロ ッ ク周期 TAVAILABLE は総ビッ ト周期である 6667 ns から 6444 ns に減少します 結果と して ロジッ クは 150 MHz ではなく 1551831 MHz で動作します

クロック ジッ タを最小限にするための推奨デザイン高性能アプリ ケーシ ョ ンでは ク ロ ッ ク ジッタによって有効なビッ ト周期が短くな り ますシステム全体のクロ ッ ク ジッタを最小限にするためには次の推奨デザインを参考にしてください

適切な電力分散システム設計

電力プレーン デカップ リ ングを含む 電力分散システム (PDS) を適切に設計するこ とによって 安定した電力環境を作成し システム ジッ タを削減できます アプ リ ケーシ ョ ン ノー ト XAPP623 ではPDS の適切な設計にについて説明しています

bull XAPP623 電力分散システム (PDS) デザイン バイパスデカップリ ング キャパシタhttpwwwxilinxcomxappxapp623pdf

適切なプリン ト サーキッ ト ボードの設計

予想される動作周波数範囲およびアプ リ ケーシ ョ ン環境に適したプ リ ン ト サーキッ ト ボード設計を行ってください

bull WP174 PCB への効果的な FPGA 統合httpwwwxilinxcojppublicationswhitepaperswp_pdfwp174pdf

bull PCB チェッ ク リ ス トhttpsupportxilinxcomxlnxxil_prodcat_productjsptitle=si_pcbcheck

同時スイッチ出力 (SSO) の推奨デザイン

DCM へのク ロ ッ ク入力 または DCM からのク ロ ッ ク出力の信号に関連した問題を回避するために『Spartan-3 データ シート 』 に記載されている同時スイ ッチ出力 (SSO) 仕様に沿っているこ とを確認して ください

また 可能な限り DCM の入力または出力をスイ ッチング回数の多い IO の近くに配置するこ とを避けてください 特に 出力電圧幅が大きい IO または駆動電流が高い IO の場合にはこのこ とが重要です

仮想グランド ピンを DCM 入力および出力接続の近くに配置

さまざまな影響を受けやすく高周波数である DCM の入力または出力では仮想グランド ピンのよ うなユーザー IO ピンを追加して PCB へ別の接続を作成します このよ うな仮想グランド ピンは ジッタの影響を受けやすい DCM 信号に近接する IO パッ ドに配置して ください IO パッ ドは パッケージのピンまたはボール上だけでなく FPGA のダイ レベルでも近接しているこ とを確認して くださいBGA パッケージ上で隣接しているボールは 必ずしも FPGA 上にある隣接したパッ ドに接続する必要はあ り ません このよ うに設計するこ とによって 内部電圧降下が軽減され ジッ タが削減されます

仮想グランドを作成する場合は図 49 に示すよ うに IOB を GND (Low ロジッ ク レベル) を駆動する出力と して設定し その IOB を外部で直接グランド プレーンに接続します

tTOTAL_JITTER 100psplusmn( )2 200psplusmn( )2+ 22360psplusmn 0223nsplusmn= = =

TAVAILABLE 6667ns 0223nsndash 6444ns= =

66 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

クロック ジッ タおよび位相ノイズR

VCCAUX 考察

デジタル ク ロ ッ ク マネージャは VCCAUX 入力によって電源が供給されます FPGA への電源供給入力である VCCAUX の過剰ノ イズは DCM の特性 特にジッタ特性を低下させます DCM のパフォーマンスを最適にするために 次に従ってください

1 図 50 に示すよ うに VCCAUX 電源供給 またはグランド上の変動を 1 ms 間で 10 mV よ り小さ くして ください この制限によって DCM は変動に適切に対応して動作します

2 図 50 に示すよ うに 電源供給のノ イズをピーク間で 200 mV 以内にして ください

3 VCCAUX および VCCO が同一の電源プレーンにある場合 すべての VCCAUXVCCO ピンを適切にデカップリ ングまたはバイパスする必要があ り ます ( 「適切な電力分散システム設計」 を参照してください) また 上記の 1 および 2 を維持できない場合 VCCAUX と VCCO を分離して使用してください

4 特に CLK2X 出力は電源シフ ト またはグランド シフ トの影響を受けます したがって すべての IOB および CLB でスイ ッチングがある場合には CLKFX_MULTIPLY =2 および CLKFX_DIVIDE=1 と設定されている CLKFX 出力はよ り よい特性を持つ出力を供給します DFS モードの場合 CLK2X 出力の更新が遅いのに対して CLKFB 迂回回路では 3 入力クロ ッ クごとにタ ップが更新されます

FACTORY_JF 設定の修正

適切に設計され 安定し 適切にデカップリ ングされた電源供給が FPGA 内のクロ ッ ク スキューおよびジッタを低減するためにもっと も有効な方法ですが FACTORY_JF 属性を 0xFFFF に設定することによって 問題の発生しているボード上のジッタを低減できる場合があ り ます FACTORY_JF=FFFF の場合 DCM はおよそ 20 入力クロ ッ クごとにタ ップ設定を更新し 周波数を基にしたデフォルト設定よ り もタ ップ更新の間隔は短くな り ます

図 49 DCM 入力または出力クロック信号への仮想グランド ピンの使用

IBUFG

OBUF

OBUF

To DCMCLKIN Input

Sensitive DCMClock Input

FPGAldquoVirtualrdquoground pin

Direct connectionto PCB groundplane

GND

GND

x462_49_061903

図 50 電圧降下を回避するための VCCAUX 考察

VCCAUXSupply(at FPGA)

dV lt 10 mV

dt lt 1 mS

Keep VCCAUX noiseenvelope to lt 200 mVpeak-to-peak

Avoid sudden changes fromone DC level to anotherKeep dVdt lt 10mVmS x462_50_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 67

R

ただし FACTORY_JF の設定値を大き くするこ とによって DCM では遅延ラインが頻繁に更新されジッ タがわずかに増加する (~30 ps) 可能性もあるため FACTORY_JF のデフォルト設定は最大値ではあ り ません 電源供給が不安定の場合には 発生した位相エラーが増加したジッタよ り大きい場合があり この場合には FACTORY_JF の設定値を大き くするこ とによって デザインのパフォーマンスを向上できます

その他 ビッ トス ト リーム生成の設定

DCM では 次の 2 つのビッ ト ス ト リーム生成 (BitGen) オプシ ョ ンがあ り ます

bull -g lck_cycle このオプシ ョ ンを使用する場合インスタンシエート された DCM で LOCKED 出力がアサート されるまで FPGA のコンフ ィギュレーシ ョ ン スタート アップ シーケンスを遅らせるこ とができます

bull -g DCMShutdown このオプシ ョ ンを使用する場合JTAG ポート を使用した部分再コンフ ィギュレーシ ョ ン または全体の再コンフ ィギュレーシ ョ ンを実行中に コンフ ィギュレーシ ョ ン ロジックに SHUTDOWN コマンドがロード される と DCM ロジッ クがリセッ ト されます

Project Navigator でのビッ トス ト リーム生成オプシ ョ ン

ISE 52i Project Navigator を使用する場合は 図 51 に示すよ うに [Processes for Source] ウ ィンド ウで [Generate Programming File] を右ク リ ッ ク し [Properties] を選択するこ とによってビッ ト ス トリーム生成オプシ ョ ンを設定します

詳細は 「BitGen スイ ッチおよびオプシ ョ ン」 を参照してください

コマンド ライン またはスクリプ ト を使用したビッ トス ト リーム生成オプシ ョ ン

設定可能なオプシ ョ ンを表示するためには 次のコマンドを入力します

bitgen -help spartan3

DCM LOCKED 出力とコンフ ィギュレーシ ョ ン ロジックの設定

DCM の STARTUP_WAIT 属性を使用するこ とによってDCM で LOCKED 出力がアサート されるまで FPGA で DONE 信号がアサート されるを遅らせFPGA のコンフ ィギュレーシ ョ ン スタート アップロジッ クを待たせるこ とができます ただし このためには設計段階で次の二つの設定を行う必要があり ます まず ロ ッ ク状態になってからコンフ ィギュレーシ ョ ンを完了する必要がある各 DCM に対するSTARTUP_WAIT 属性を TRUE に設定します 次に各信号がスタート アップの 6 ク ロ ッ ク サイクルで 図 52 に示すよ うに動作するよ うにビッ ト ス ト リーム生成オプシ ョ ンを変更します デバイスがコンフ ィギュレーシ ョ ン スタート アップ シーケンスを完了するためにはDCM が LOCKED をアサート後に十分なコンフ ィギュレーシ ョ ン ク ロ ッ ク サイ クルが必要です

図 51 Project Navigator でのビッ トス ト リーム生成 (BitGen) オプシ ョ ン

Processes for Current Source

Generate Programming File

Programming File Generation Report

RunRerunRerun AllStopOpen without Updating

Properties

x462_51_061903

68 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

その他R

A FPGA 内部のグローバル ト ラ イ ステート信号 (GTS_cycle) を開放し すべての IO 信号をイネーブルにします

B GTS_cycle 後に DCM で LOCKED がアサート されるまでスタート アップ ロジッ クが待機するよにサイクルを設定します DCM では クロ ッ ク信号でロ ッ ク状態になる前に ク ロ ッ クおよび可能ならばフ ィードバッ ク信号のよ うな外部入力が必要です

C DCM がロ ッ ク状態になった後 FPGA の内部グローバル書き込みイネーブル (GWE_cycle) 信号をアサート します

D 最後に 内部の DONE 信号をアサート します

図 53 に Project Navigator を使用したオプシ ョ ン設定を示します

スタート アップ位相タイ ミ ングおよび GWE_cycle と DONE_cycle のタイ ミ ングには柔軟性があ り ますがDCM で STARTUP_WAIT 属性を使用する場合は必ず LCK_cycle の前に GTS_cycle がなければなり ません シーケンスがこのよ うになっていない場合にはDCM がロッ クせずコンフ ィギュレーシ ョ ンが完了しません

図 52 DCM LOCKED 出力とスタートアップ ロジックの相互関係

0 1 2 3 4 5 6

DONE_cycle

Start-up CLK

GTS_cycle

GWE_cycle

LCK_cycle

Start-up Cycles

A

B

C

D

x462_52_062403

図 53 BitGen オプシ ョ ン

Process Properties

Startup options

Value

CCLK

6

3

5

4

Default (NoWait)

General Options Configuration Options Readback Options

Property Name

FPGA Startup Clock

Enable Internal Done Pipe

Done (Output Events)

Enable Outputs (Output Events)Release Write Enable (Output Events)Release DLL (Output Events)

Match Cycle (Output Events)

Drive Done Pin High

OK Cancel Default Help

Optionally set GWE_cycle to follow GTS_cycleensuring DCM(s) reset afterIOs activate

LCK_cycle indicates cyclewhere start-up logic waitsfor DCM(s) to assertLOCKED

Done_cycle after LCK_cycle GTS_cycle must occur

before LCK_cycle to enableIO pins

[Startup options]

[OK] x462_53_061903

その他

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 69

R

JTAG を使用した部分再コンフ ィギュレーシ ョ ンまたは全体の再コンフ ィギュレーシ ョ ン中の DCM リセッ ト

も う 1 つのビッ ト ス ト リーム オプシ ョ ンと して SelectMAP を使用した部分再コンフ ィギュレーシ ョン中 または JTAG ポート を使用した全体および部分再コンフ ィギュレーシ ョ ン中に FPGA にあるすべての DCM を リセッ トできます このオプシ ョ ンを使用する場合 SHUTDOWN コマンド シーケンス中に AGHIGH コンフ ィギュレーシ ョ ン コマンドが発行される とDCM がリセッ ト されます JTAGを使用して再コンフ ィ ギュレーシ ョ ンを行う場合には 必ず DCM を リ セッ トする必要があ り ますProject Navigator でビッ ト ス ト リーム生成オプシ ョ ンを変更するためには (「Project Navigator でのビット ス ト リーム生成オプシ ョ ン」 を参照) 図 54 に示すよ うに Configuration options タブをク リ ッ クし [Reset DCM if SHUTDOWN amp AGHIGH performed] オプシ ョ ンのチェッ ク ボッ クスをオンにして ください

一時的な CLKIN の停止厳密なアナログ測定を行っている間のシステム全体のノ イズを削減するため FPGA アプリ ケーシ ョ ンのその他の部分に影響を与えるこ とな く 一時的に DCM へのクロ ッ ク入力を停止できます これが可能である理由の一部はDCM がすべてデジタルで安定して機能するシステムであるためです DCM では最初に入力クロ ッ クに対してロ ッ ク し次に LOCKED 出力をアサートする必要があ り ます DCM がリセッ ト しない場合には デスキュー回路にほとんど影響を与えずに CLKIN 入力クロ ッ クを一時的に停止できますが 次の条件を満たす必要があ り ます

bull デバイスが冷却するこ とによるタ ップ遅延の変化の影響を最小限にするために ク ロ ッ クの停止時

間は 100 ms 未満である必要があ り ます

bull ク ロ ッ クが Low である間に停止する必要があ り12 周期分の High から再開する必要があ り ます

上述の条件は理論的にはクロ ッ ク入力ジッタの仕様に違反しますがDCM の LOCKED 出力は Highを維持し ク ロ ッ クが再び動作する際にも High を維持しています したがって LOCKED が High であるこ とは必ずしも有効なクロ ッ クが使用可能であるこ とにはなり ません このため実際にはクロ ック入力ジッタの仕様に違反していますが これらの条件を満たす限り問題はあ り ません

CLKIN を停止する際にはDCM のデジタル遅延ラインにあるクロ ッ クが出力されるため 1 から 8 出力クロ ッ ク サイクルが生成されます 同様に CLKIN が再開する場合には 遅延ラインが満たされる

図 54 再コンフ ィギュレーシ ョ ン中に DCM をリセッ トするためのコンフ ィギュレーシ ョ ン オプシ ョ ン

Process Properties

Configuration options

ValuePull Up

Pull UpFloatPull UpPull Down0xFFFFFFFF

General Options Startup options Readback Options

Property NameConfiguration Pin DoneJTAG Pin TCKJTAG Pin TDIJTAG Pin TDOJTAG Pin TMSUnused IOBsUserID Code (8 Digit Hexadecimal)Reset DCM if SHUTDOWN amp AGHIGH performed

OK Cancel Default Help

Click Configuration options tab

Click OK when finished

Pull Up

Check to reset all the DCMsin the FPGA if the AGHIGHcommand issued duringSHUTDOWN sequence

x462_54_062103

70 wwwxilinxcojp XAPP462 (v10) 2003 年 7 月 11 日

参考資料R

までの 1 から 4 ク ロ ッ クサイ クル間は出力クロ ッ クが生成されません 通常 遅延ラインが満たされるためは 2 または 3 ク ロ ッ ク サイ クルが必要です

また 入力ク ロ ッ クを停止するこ とによって 位相シフ ト を行う こ とができます この位相シフ トは

DCM による制御を中断させるこ とな く 1 から 4 ク ロ ッ ク サイクル後のクロ ッ ク出力から影響を与えます

図 55 に CLKIN 入力クロ ッ クを一時的に停止する例を示します また この図には CLK2X ク ロ ッ ク出力への影響も示しています

参考資料 bull 『Spartan-3 データ シート 』 (モジュール 2) デジタル  ク ロ ッ ク  マネージャの特長および機能httpwwwxilinxcojpbvdocspublicationsds099-2pdf

bull 『Spartan-3 データ シート 』 (モジュール 3) タイ ミ ングおよびジッタ特性

httpwwwxilinxcojpbvdocspublicationsds099-3pdf

bull ザイ リ ンクス ISE 52i ライブラ リ ガイ ドDCM プリ ミ ティブhttptoolboxxilinxcomdocsanxilinx5pdfdocsliblibpdf

bull Architecture Wizard 録音版 Web セミナーhttpsupportxilinxcojpsupporttrainingjapan-home-pagehtm

bull XAPP259 システム インターフェイス タイ ミ ング パラ メータhttpwwwxilinxcojpxappxapp259pdf

bull XAPP268 動的位相調整httpwwwxilinxcomxappxapp268pdf

bull XAPP622 SDR LVDS 送信機受信機httpwwwxilinxcojpxappxapp622pdf

bull 『開発システム リ ファレンス ガイ ド』 15 章 「BitGen」 ビッ ト ス ト リーム生成プログラムおよびオプシ ョ ン 335-367 ページhttptoolboxxilinxcomdocsanxilinx5pdfdocsdevdevpdf

図 55 CLKIN の一時的な停止

CLKIN

CLK2X

Clock input must bestopped in Low phase andfor no more than 100 ms

When restarted the clockinput must generate a fullHigh half-period

x462_55_062403

改訂履歴

XAPP462 (v10) 2003 年 7 月 11 日 wwwxilinxcojp 71

R

改訂履歴 次の表に このアプリ ケーシ ョ ン ノートの改訂履歴を示します

日付 バージョ ン 履歴

20030709 10 初版リ リース

  • Spartan-3 FPGA におけるデジタル クロック
  • マネージャ (DCM) の使用
    • 概要
    • はじめに
    • 概要
    • DCM 位置および クロック分散 ネットワーク インターフェイス
    • DCM 機能の概要
      • 遅延ロック ループ (DLL)
      • デジタル周波数合成 (DFS)
      • 位相シフト (PS)
      • ステータス ロジック
        • DCM プリミティブ
          • シンボル
          • 接続ポート
          • 属性プロパティおよび制約
            • その他のザイリン クス FPGA ファ ミリとの互換性
            • DCM 使用のため のクロック条件
              • 入力クロック周波数範囲
              • 出力クロック周波数範囲
              • クロック入力およびクロック フィードバック入力の変動
                • LOCKED 出力
                • RST 入力
                • DCM Wizard
                  • DCM Wizard の起動
                    • Windows のスタート ボタンから起動
                    • Project Navigator から起動
                      • Wizard 選択
                      • [General Setup]
                      • アドバンスド オプション
                      • クロック バッファ
                      • クロック周波数合成
                      • HDL 出力の生成
                        • VHDL および Verilog のインス タンシエーション
                          • Project Navigator の言語テンプレート
                          • VHDL および Verilog リファレンス ファイル
                            • クロック スキュー の低減
                              • クロック スキューとは
                              • クロック スキュー パフォーマンス低下の原因
                              • スキューの削除
                              • 過去のクロック動作から将来のクロック動作を予測
                              • ターゲットのロック
                              • 安定した単調なクロック入力
                              • 確実なソースからのフィードバック
                              • 内部クロック信号からのスキュー削除
                              • 外部クロック信号からのスキュー削除
                                • コンフィギュレーション後の DCM リセット
                                • なぜリセットする必要があるのか
                                  • 遅延ロック ループとは
                                    • 遅延ロック ループ (DLL)
                                    • 位相ロック ループ (PLL)
                                    • インプリメンテーション
                                    • DLL と PLL
                                      • スキュー調整
                                        • システム同期
                                        • ソース同期
                                        • タイミングの比較
                                            • クロック調整
                                            • 位相シフト- ク ロック周期の分数 でクロックを遅延
                                              • 12 クロック周期位相シフト出力
                                                • 12 周期位相シフト出力によるデューティ サイクルのずれの削減
                                                • デュアル データ レート (DDR) クロックの例
                                                  • 14 位相シフト出力
                                                    • DLL 周波数モードによる出力の有効性
                                                    • 5050 デューティ サイクル調整オプション
                                                    • 4 つの位相遅延クロックエッジ位相パルス
                                                      • ファイン位相シフト
                                                      • 固定ファイン位相シフト
                                                        • 固定ファイン位相シフト範囲
                                                        • 最小位相シフト
                                                        • その他の考察点
                                                        • DCM Wizard
                                                          • 動的ファイン位相シフト
                                                            • 動作
                                                            • 動的ファイン位相シフト範囲
                                                            • 制御
                                                            • DCM Wizard
                                                            • アプリケーション例
                                                                • クロック逓倍 クロック分周 周波数合成
                                                                  • 周波数合成アプリケーション
                                                                  • 入力クロックおよび出力クロックの周波数条件
                                                                  • 2 逓倍クロック (CLK2XCLK2X180)
                                                                  • クロック分周 (CLKDV)
                                                                    • CLKDV クロック調整
                                                                    • CLKDV のジッタは周波数モードおよび属性値が整数か整数ではないかによって決定されます
                                                                    • DCM Wizard
                                                                      • 周波数合成回路 (CLKFXCLKFX180)
                                                                        • DCM Wizard
                                                                            • クロックのフォ ワードミラー リバッファ
                                                                            • クロック ジッタお よび位相ノイズ
                                                                              • クロック ジッタとは
                                                                              • クロック ジッタの原因
                                                                              • クロック ジッタ特性の理解
                                                                                • サイクル間ジッタ
                                                                                • 周期ジッタ
                                                                                • ユニット インターバル(UI)
                                                                                  • 総ジッタの計算
                                                                                    • DLL 出力ジッタへの入力ジッタの加算
                                                                                      • カスケード接続された DCM のジッタ計算
                                                                                        • 例 1 すべての DCM が DLL 出力を使用する場合
                                                                                        • 例 2 CLKFX 出力または CLKFX180 出力を使用する DCM がある場合
                                                                                        • カスケード接続した DCM を使用する場合の推奨デザイン
                                                                                          • システム パフォーマンスにおけるジッタの影響
                                                                                              • クロック ジッタを最小限にするための推奨デザイン
                                                                                                • 適切な電力分散システム設計
                                                                                                • 適切なプリント サーキット ボードの設計
                                                                                                • 同時スイッチ出力 (SSO) の推奨デザイン
                                                                                                • 仮想グランド ピンを DCM 入力および出力接続の近くに配置
                                                                                                • VCCAUX 考察
                                                                                                • FACTORY_JF 設定の修正
                                                                                                    • その他
                                                                                                      • ビットストリーム生成の設定
                                                                                                        • Project Navigator でのビットストリーム生成オプション
                                                                                                        • コマンド ラインまたはスクリプトを使用したビットストリーム生成オプション
                                                                                                        • DCM LOCKED 出力とコンフィギュレーション ロジックの設定
                                                                                                        • JTAG を使用した部分再コンフィギュレーションまたは全体の再コンフィギュレーション中の DCM リセット
                                                                                                          • 一時的な CLKIN の停止
                                                                                                            • 参考資料
                                                                                                            • 改訂履歴
Page 12: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 13: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 14: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 15: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 16: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 17: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 18: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 19: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 20: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 21: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 22: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 23: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 24: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 25: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 26: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 27: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 28: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 29: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 30: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 31: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 32: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 33: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 34: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 35: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 36: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 37: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 38: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 39: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 40: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 41: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 42: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 43: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 44: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 45: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 46: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 47: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 48: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 49: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 50: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 51: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 52: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 53: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 54: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 55: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 56: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 57: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 58: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 59: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 60: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 61: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 62: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 63: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 64: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 65: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 66: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 67: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 68: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 69: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 70: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々
Page 71: R Spartan-3 FPGA におけるデジタル (DCM) - Xilinx...DCM 機能の概要 図3 に示すように、デジタル クロック マネージャ (DCM) と呼ばれる 1 つのエントリは、実際には別々