© 2004-2005 Xilinx, Inc. All Rights Reserved. XILINX、Xilinx ロ ゴ、 およびその他本文に含まれる商標名は Xilinx の商標です。本文書に記載 さ れている 「Xilinx」、 ザイ リ ン ク スのロ ゴ、 およびザイ リ ン ク スが所有する製品名等は、 米国 Xilinx Inc. の米国における登録商標です。 その他に記載 さ れている会社名および製品名等は、 各社の商標または登録商標です。 保証否認の通知 : Xilinx ではデザイ ン、 コ ー ド 、 その他の情報を 「現状有姿の状態」 で提供 し ています。 こ の特徴、 ア プ リ ケーシ ョ ン または規格の一実施例 と し てデザイ ン、 コ ー ド 、 そ の他の情報を提供 し てお り ますが、Xilinx は こ の実施例が権利侵害のク レ ームを全 く 受けない と い う こ と を表明する も のではあ り ません。 お客様がご自分で実装 さ れる場合には、 必要な 権利の許諾を受け る責任があ り ます。Xilinx は、 実装の妥当性に関するいかな る保証を行な う も のではあ り ません。 この保証否認の対象 と な る保証には、 権利侵害の ク レームを受けない こ と の保証または表明、 お よび市場性に対する適合性についての黙示的な保証も 含まれます。
概要
こ のアプ リ ケーシ ョ ン ノ ー ト では、Virtex™-4 XC4VLX25 FF668 -10CES デバ イ ス を使用 し て イ ンプ リ メ ン ト し た 200MHz DDR SDRAM (JEDEC DDR400、PC3200 規格) コ ン ト ロ ー ラ について説明 し ます。こ の イ ンプ リ メ ン テーシ ョ ンでは、 デー タ の取 り 込みにダ イ レ ク ト ク ロ ッ キ ン グ、 デー タ ラ イ ン 遅延の調整に自動調整回路を使用 し ます。 DDR SDRAM デバ イ ス は、 コ ス ト が低 く 、 集積度が高い ス ト レ ージ リ ソ ー ス で、 多数の メ モ リ ベン ダーか ら 入手可能です。こ の リ フ ァ レ ン スデザ イ ンは、DDR400 SDRAM コ ン ポーネ ン ト と DIMM を 使用 し て開発 さ れてい ます。DDR SDRAM
について
DDR SDRAM の仕様は、 米国電子工業会 (Electronic Industries Alliance : EIA) の一部で あ る JEDEC のサ イ ト (http://www.jedec.org/) か ら 入手で き ます。 DDR SDRAM の仕様は、JESD79C と い う 名前で 参照 さ れてい ます。 DDR SDRAM デバ イ ス は、 消費者向け製品、 映像シ ス テ ム な ど さ ま ざ ま な アプ リ ケーシ ョ ンで最 も 頻 繁に利用 さ れてい る シ リ コ ン メ モ リ リ ソ ース です。 DDR SDRAM デバ イ ス の周波数範囲は、200MHz ま たは DDR400 ま でです。 DRAM デバ イ ス は、 コ ン ポーネ ン ト ま たはモジ ュ ールコ ン フ ィ ギ ュ レ ー シ ョ ンで使用で き ます。
DDR
コ ン ト ロー ラ の コ マ ン ド
表1に、 コ ン ト ロ ー ラ に よ り 発行 さ れ る コ マン ド を示 し ます。こ れ ら の コ マン ド は、 次の制御信号を使 用 し て メ モ リ に転送 さ れます。 • 行ア ド レ ス セ レ ク ト (RAS) • 列ア ド レ ス セ レ ク ト (CAS) • ラ イ ト イ ネーブル (WE) • ク ロ ッ ク イ ネーブル (CKE) (デバ イ ス の コ ン フ ィ ギ ュ レーシ ョ ン後は High に保持) • チ ッ プセ レ ク ト (CS) (デバ イ ス の動作中は Low に保持) XAPP709 (v1.4) 2005 年 11 月 18 日Virtex-4 FPGA
デバイ ス を使用 し た
DDR SDRAM
コ ン ト ロー ラ
著者 : Olivier Despaux R 表 1 : DDR SDRAM の コ マ ン ド 信号番号 機能 RAS CAS WE 1 モー ド レ ジ ス タ の読み込み L L L 2 オー ト リ フ レ ッ シ ュ L L H 3 プ リ チ ャ ージ(1) L H L 4 バン ク を選択 し 、 行を ア ク テ ィ ブにする L H H 5 書き 込みコ マ ン ド H L L 6 読み出 し コ マ ン ド H L Hコ マ ン ド の機能
モー ド レ ジス タ
モー ド レ ジ ス タ は、 バース ト 長の選択、 バース ト の タ イ プ、CAS レ イ テ ン シ、 操作モー ド な ど、DDR SDRAM の操作モー ド を定義 し ます。図1に、 こ の コ ン ト ロ ー ラ で使用す る モー ド レ ジ ス タ の定義を 示 し ます。
7 NOP (No Operation) H H H
メ モ :
1. ア ド レ ス信号 A10 は、PRECHARGE ALL BANKS の と き は High に保持 し 、 信号バン クプ リ チ ャ ージの と き は Low に保持 し ま す。
図 1 : DDR400 のモー ド レ ジ ス タ の定義 表 1 : DDR SDRAM の コ マ ン ド (続き)
信号番号 機能 RAS CAS WE
BA1 BA0 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 0 DLL 0 CAS レイテンシ BT バースト長 A2 A1 A0 バースト長 0 0 1 0 1 0 0 1 1 その他 2 4 8 予約済み A6 A5 A4 0 1 0 0 1 1 1 1 0 その他 2 3 (DDR400) 2.5 予約済み CAS レイテンシ A8 DLL 0 通常操作 1 リセット BA1 BA0 0 0 0 1 モード レジスタ モード レジスタ (MR) 拡張 MR EMR1 x709_01_090304
初期化シーケ ン ス コ ン ト ロ ー ラ ス テー ト マシ ン で使用 さ れ る 初期化シーケ ン ス は、DDR SDRAM の仕様に従っ てい ま す。コ ン フ ィ ギ ュ レーシ ョ ン シーケ ン ス には、2 つの段階があ り ます。1 つ目の段階は電源投入時にハー ド ウ ェ アで処理 さ れ、2 つ目の段階は FPGA メ モ リ コ ン ト ロ ー ラデザ イ ンで処理 さ れます。図3に、初 期化時に発行 さ れ る コ マン ド を示 し ます。 初期化シーケ ン ス が完了す る と 、 コ ン ト ロ ー ラ に よ り DDR SDRAM メ モ リ デバ イ ス に対 し てダ ミ ーの 読み出 し コ マ ン ド が発行 さ れます。こ のプ ロ セ ス に よ り 、デー タ パ スモジ ュ ールで Virtex-4 入力遅延ブ ロ ッ ク に対 し て適切な タ ッ プ数が選択 さ れます。こ のダ ミ ー読み出 し コ マ ン ド 中に メ モ リ に よ り 発行 さ れ る デー タ ス ト ロ ーブ (DQS) を使用 し て、 入力 DQS と 内部シ ス テ ム ク ロ ッ ク (CLK0) 間の タ イ ミ ン グ関係が決定 さ れます。デー タ パ ス モジ ュ ールで必要な遅延 タ ッ プ数が決定 さ れ る と 、 コ ン ト ロ ー ラ に Tap_select_done 信号が送信 さ れ、コ ン ト ロ ー ラ が IDLE 状態にな り ます。 図 2 : DDR400 の拡張モー ド レ ジ ス タ
BA1 BA0 E12 E11 E10 E9 E8 E7 E6 E5 E4 E3 E2 E1 E0 0 1 0 E1 駆動強度 0 通常 1 低減 DS E0 DLL 0 1 イネーブル ディスエーブル DLL x709_02_032405 図 3 : Virtex-4 を使用 し た DDR SDRAM の初期化シーケ ン ス
V
DDおよびV
DDQCKE Low
200
µs 待機
200
クロック サイクル待機PRECHARGE ALL
(DESELECT
またはNOP)
PRECHARGE ALL
CKE High
LOAD MODE REGISTER BA 01
LOAD MODE REGISTER BA 00
ボード レベル
AUTO REFRESH
AUTO REFRESH
LOAD MODE REGISTER BA 00 DLL
リセットなしFPGA デザイン、 コントローラで 処理
x709_01_090204
PRECHARGE コ マ ン ド PRECHARGE コ マン ド は、 特定のバン ク の現在アク ティ ブな行を 非アク ティ ブにし ま す。 PRECHARGE コ マ ン ド が発行 さ れた後、 特定の時間 (tRP) が経過す る と 、 次の行を ア ク テ ィ ブにで き る よ う にな り ま す。入力 A10 は、1 つのバン ク をプ リ チ ャ ージす る か、 すべてのバン ク を プ リ チ ャ ージす る かを指定 し ます。 AUTO REFRESH コ マ ン ド DDR デバ イ ス は、7.8µs おき に リ フ レ ッ シ ュ する 必要があ り ます。コ ン ト ロ ー ラ には、 カ ウ ン タ のオー ト リ フ レ ッ シ ュ を要求す る 回路が組み込まれてい ます。リ フ レ ッ シ ュ カ ウ ン タ には、DCM の CLKDV 出力が使用 さ れます。こ の出力は、オー ト リ フ レ ッ シ ュ カ ウ ン タ に必要な低周波数の ク ロ ッ ク を供給 し ます。 DCM の CLKDV で使用 さ れ る BUFG を節約す る 場合は、DCM の高周波数の CLK0 出力ま たは CLK/4 出力 (IDELAY 回路で使用) を使用す る こ と も 可能です。オー ト リ フ レ ッ シ ュ 回路の ク ロ ッ ク を 変更す る 場合は、 それに応 じ て mem_interface_top_parameters_0.v フ ァ イ ルの max_ref_count を変更 す る 必要があ り ます。
auto_ref 信号は、AUTO REFRESH コ マ ン ド が必要であ る こ と を示 し 、AUTO REFRESH コ マ ン ド が 発行 さ れ る ま で High に保持 さ れ ます。コ ン ト ロ ー ラ は、 現在ア ク テ ィ ブなバン ク に対す る 処理を終了 し てか ら 、AUTO REFRESH コ マン ド を発行 し ます。
ACTIVE コ マ ン ド
ACTIVE コ マ ン ド は、 メ モ リ ア レ イ 内のバン ク に対 し て READ ま たは WRITE コ マン ド を発行で き る よ う に、 バン ク 内の行を ア ク テ ィ ブに し ます。行がア ク テ ィ ブにな る と 、tRCD仕様に従っ て、 その行に 対 し て READ ま たは WRITE コ マ ン ド を発行で き る よ う にな り ま す。入力 さ れた ア ド レ ス が現在ア ク テ ィ ブな行 と 異な る 行を指定 し てい る 場合、 コ ン ト ロ ー ラ はア ド レ ス競合信号を送信 し 、 PRECHARGE コ マ ン ド を発行 し て現在ア ク テ ィ ブな行を非ア ク テ ィ ブに し 、ACTIVE コ マン ド を発行 し て新 し い行を ア ク テ ィ ブに し ます。 READ コ マ ン ド READ コ マ ン ド は、 ア ク テ ィ ブ な行に対 し て バー ス ト 読み出 し ア ク セ ス を 開始 し ま す。 BA0 お よ び BA1 はバ ン ク ア ド レ ス を指定 し 、ア ド レ ス 入力 A0 ~ Ai はア ク テ ィ ブ行の開始列の位置 を指定 し ま す。読み出 し バース ト が終了 し た後、 その行はプ リ チ ャ ージ さ れ る ま でア ク テ ィ ブの ま ま にな り ます。 図4に、 追加レ イ テ ン シが 0 の場合の READ コ マ ン ド を示 し ます。こ の場合、 読み出 し レ イ テ ン シは CAS レ イ テ ン シ (DDR400 使用では 3) と 同 じ にな り ます。
WRITE コ マ ン ド WRITE コ マ ン ド は、 ア ク テ ィ ブ な行に対 し てバー ス ト 書 き 込みア ク セ ス を開始 し ま す。 BA0 お よ び BA1 はバン クア ド レ ス を指定 し 、ア ド レ ス入力 A0 ~ Ai はア ク テ ィ ブ行の開始列の位置を指定 し ます。 DDR SDRAM デバ イ ス の書 き 込みレ イ テ ン シは、 読み出 し レ イ テ ン シか ら 1 ク ロ ッ クサ イ ク ル引いた 値にな り ます。 書 き 込みレ イ テ ン シ = 読み出 し レ イ テ ン シ - 1 = CAS レ イ テ ン シ - 1 図5に、 書 き 込み レ イ テ ン シ 2 の場合の書 き 込みバー ス ト の波形 を 示 し ま す。 WRITE コ マ ン ド か ら DQS 信号の最初の立ち上が り エ ッ ジ ま での時間は、 書 き 込みレ イ テ ン シに よ り 決ま り ます。 図 4 : DDR SDRAM の読み出 し ア ク セスの波形
User Test Design
Rd_data_valid User Interface Read-Data FIFO Write-Data FIFO Read Address FIFO Command Logic Block Front-End FIFOs TOP Module Write Address FIFO DDR SDRAM Controller Datapath Module Address/Control Tap Select Done DDR SDRAM Rd/WR En CLKs DQ DQS
Delay Normalization Signal
x709_04_110805 図 5 : DDR SDRAM の WRITE コ マ ン ド の波形 T0 T1 T2 T2n T3 CK# CK COMMAND ADDRESS DQS DQ Data Mask (DM) DO n X709_03_110805
WRITE NOP NOP NOP
tDQSS (NOM)
tDQSS Bank a,
タ イ ミ ン グ解析
Virtex-4 DDR400 リ フ ァ レ ン ス デザ イ ンでは、 最高のパ フ ォーマン ス を達成 し 、 タ イ ミ ン グマージ ン を最大にす る ため、 デバ イ ス特有の I/O お よ び ク ロ ッ ク 機能を使用 し てい ます。
リ フ ァ レ ン スデザ イ ンのあ る 物理レ イ ヤでは、ダ イ レ ク ト ク ロ ッ キ ン グ手法を使用 し ます。こ れについ て は、 ア プ リ ケ ー シ ョ ン ノ ー ト XAPP701 『Memory Interfaces Data Capture Using Direct Clocking Technique』 (http://www.xilinx.co.jp/bvdocs/appnotes/xapp701.pdf) で説明 し てい ます。 こ のセ ク シ ョ ンでは、 ア ド レ ス/制御パ ス、 書 き 込みデー タ パス、 読み出 し (キ ャ プチ ャ) デー タ パ ス の タ イ ミ ン グ解析例を示 し ます。 ア ド レ ス/制御パス ア ド レ ス信号 と 制御信号は CLK180 に同期 し てお り 、CLK0 に対す る メ モ リ デバ イ ス のセ ッ ト ア ッ プ タ イ ムお よ びホール ド タ イ ムが十分にな る よ う に し てい ます。 表2に、Virtex-4 に イ ンプ リ メ ン ト さ れた、ダ イ レ ク ト ク ロ ッ キ ン グ を使用す る DDR400 イ ン タ ーフ ェ イ ス で、 こ れ ら の信号を タ イ ミ ン グ解析 し た例を示 し ます。 表 2 : ア ド レ ス信号 と 制御信号の タ イ ミ ング解析 パラ メ ー タ 値 (ps) 立ち上が り エ ッ ジの 不確定値 立ち下が り エ ッ ジの 不確定値 説明 TCLOCK 5000 ク ロ ッ ク 周期 TSETUP 600 600 0 -THOLD 600 - 600 -TPACKAGE_SKEW ±15 15 15 パ ッ ケージの ス キ ュ ー TJITTER ±50 50 50 DCM の CLK0 お よ び CLK180 出力を使 用 し て DQ お よ び DQS を生成 TCLOCK_TREE_SKEW ±50 50 50 DQS と 対応す る DQ は近 く に配置 さ れ てい る ため、 グ ロ ーバルク ロ ッ ク ラ イ ンの ス キ ューは小 さ く な り ます。 TCLKOUT_PHASE ±140 140 140 DCM 出力パ ラ メ ー タ 値間の位相オフ セ ッ ト は、Virtex-4 デー タ シー ト DS302 を参照 TPCB_LAYOUT_SKEW ±400 400 400 ボー ド 上のデー タ ラ イ ン と 対応す る ス ト ロ ーブ間の ス キ ュ ー 不確定値の合計 2510 1255 1255 -有効 ウ ィ ン ド ウ 2490 1255 3745
-図6に、 ア ド レ ス信号 と 制御信号の タ イ ミ ン グマージ ン を示 し ます。こ れ ら の信号は CLK180 を基準 と し てい る ので、QDR_K ク ロ ッ ク のエ ッ ジに対 し ては、 立ち上が り エ ッ ジ マージ ン よ り も 立ち下が り エ ッ ジマージ ンの方が長 く な り ます。こ れに よ り 、 使用す る グ ロ ーバル ク ロ ッ ク バ ッ フ ァ の数が少な く な り 、 立ち上が り エ ッ ジのマージ ン も 適切な も のにな り ます。 書き込みデー タ パス 書 き 込みデー タ パ スは、CLK270 に同期 し てい ますが、書 き 込みデー タ は DDR 値 と し て転送 さ れ る の で、CLK0 の立ち上が り エ ッ ジお よ び立ち下が り エ ッ ジの両方に対 し てセ ッ ト ア ッ プタ イ ムお よ びホー ル ド タ イ ム を適切な も のにす る 必要があ り ます。 表3に示す書 き 込みデー タ パ ス の タ イ ミ ン グ解析には、 メ モ リ ク ロ ッ ク のデ ュ ーテ ィ サ イ ク ルの最大 歪みが含まれてい ます。こ の解析は、Virtex-4 デバ イ ス (-10 ス ピー ド グ レー ド) で行われた も のです。 図 6 : ア ド レ ス信号 と 制御信号の タ イ ミ ングマージ ン 位相
CLK0
アドレス/
制御 180 0 180 180 0 2500 1255 5000 3745 0 立ち上がりエッジ の不確定値 立ち上がりエッジ マージン = 170ps 立ち下がりエッジ の不確定値 立ち下がりエッジ マージン = 2170ps 時間 (ps) x709_06_033005 表 3 : 書き込みデー タ パスの タ イ ミ ング解析 パラ メ ー タ 値 (ps) 立ち上が り エ ッ ジの 不確定値 立ち下が り エ ッ ジの 不確定値 説明 TCLOCK 5000 - - ク ロ ッ ク 周期 TDCD ±250 250 250 メ モ リ ク ロ ッ ク のデ ュ ーテ ィ サ イ ク ルの歪み (ク ロ ッ ク 周期 の 5%) TCLOCK_PHASE 2250 - - デー タ 周期は、 ク ロ ッ ク 周期 の半分か ら 10% のデ ュ ーテ ィ サ イ ク ルの歪みを減算 し た値 TSETUP 400 400 0 メ モ リ デー タ シー ト か ら の セ ッ ト ア ッ プタ イ ム THOLD 400 0 400 メ モ リ デー タ シー ト か ら の ホール ド タ イ ム TPACKAGE_SKEW ±15 15 15 パ ッ ケージの ス キ ュ ー TJITTER ±50 50 50 DCM の CLK0 お よ び CLK180 出力を使用 し て DQ お よ び DQS を生成図7に、 書き 込みデー タ パ ス の タ イ ミ ン グマージ ン を示 し ます。 CLK0 の立ち上が り エ ッ ジに対す る 解 析のみを示 し ます。 CLK0 の立ち下が り エ ッ ジに対する 解析は こ れ と 同 じ です。 TCLOCK_SKEW_FPGA ±50 50 50 DQS と 対応す る DQ は近 く に 配置 さ れてい る ため、 グ ロ ーバ ル ク ロ ッ ク ラ イ ンの ス キ ュ ー は小 さ く な り ます。 TCLKOUT_PHASE ±140 140 140 DCM 出力パ ラ メ ー タ 値間の位 相オ フ セ ッ ト は、Virtex-4 デー タ シー ト を参照 TPCB_LAYOUT_SKEW ±20 20 20 ボー ド 上のデー タ ラ イ ン と 対応 す る ス ト ロ ーブ間の ス キ ュ ー 不確定値の合計 1850 925 925 -有効 ウ ィ ン ド ウ 650 925 1575 デー タ 有効ウ ィ ン ド ウ 表 3 : 書き込みデー タ パスの タ イ ミ ング解析 (続き) パラ メ ー タ 値 (ps) 立ち上が り エ ッ ジの 不確定値 立ち下が り エ ッ ジの 不確定値 説明 図 7 : 書き込みデー タ パスの タ イ ミ ング マージ ン 位相
CLK0
データ 270 0 90 180 0 925 2500 1575 立ち上がりエッジ の不確定値 立ち下がりエッジ の不確定値 時間 (ps) 立ち下がりエッジ マージン = 220ps 立ち上がりエッジ マージン = 220ps x709_07_033005読み出 し デー タ パス 読み出 し デー タ パ ス の値は、 前述のダ イ レ ク ト ク ロ ッ キ ン グ手法を使用 し て、FPGA ク ロ ッ ク ド メ イ ンに直接取 り 込まれます。そのため、 デー タ 取 り 込みの タ イ ミ ン グ解析は CLK0 を基準に し 、IDELAY タ ッ プ遅延の精度を考慮す る 必要があ り ます。ま た、DQS ス ト ロ ーブ と バ ス上のデー タ ビ ッ ト の間の ス キ ュー も 考慮す る必要があ り ます。表4に、Virtex-4 デバ イ ス (-10 ス ピー ド グ レー ド) を使用 し た読 み出 し デー タ 取 り 込みの タ イ ミ ン グ解析を示 し ます。 表 4 : 読み出 し デー タ パスの タ イ ミ ング解析 パラ メ ー タ 値 (ps) 立ち上が り エ ッ ジの 不確定値 立ち下が り エ ッ ジの 不確定値 説明 TCLOCK 5000 - - ク ロ ッ ク 周期 TDCD_MEMORY_DLL ±150 150 150 Virtex-4 デー タ シー ト に記述 さ れた、 メ モ リ に送信 さ れ る 信号上の DCM か ら の デ ュ ーテ ィ サ イ ク ルの歪み TDATA_PERIOD 2350 - - デー タ 周期は、 ク ロ ッ ク 周期の半分か ら DCM のデ ュ ーテ ィ サ イ ク ルの歪みを減算 し た値 TDQS_TO_DQ_SKEW 400 400 0 メ モ リ デバ イ ス のデー タ シー ト か ら の DQS か ら DQ への ス キ ュ ーパ ラ メ ー タ THOLD_FACTOR 500 0 500 メ モ リ ベン ダーのデー タ シー ト か ら の ホール ド 係数パ ラ メ ー タ TPACKAGE_SKEW ±15 15 15 パ ッ ケージの ス キ ュ ー TIDOCK 340 340 0 Virtex-4 デバ イ ス上のフ リ ッ プフ ロ ッ プの セ ッ ト ア ッ プ タ イ ム TIOCKD -150 0 -150 Virtex-4 デバ イ ス上のフ リ ッ プフ ロ ッ プの ホール ド タ イ ム TIDELAY_MEASURES ±1 tap 75 75 評価エ ラ ー、DQS エ ッ ジ ご と に 1 タ ッ プ の不確定 さ (200MHz リ フ ァ レ ン ス ク ロ ッ ク で 75ps) TJITTER ±100 100 100 DCM の CLK0 出力を使用す る 際に、 間接 的に ス ト ロ ーブジ ッ タ の原因 と な る ク ロ ッ ク ジ ッ タ TCLOCK_SKEW_FPGA ±50 50 50 DQS と 対応す る DQ は近 く に配置 さ れて い る ため、 グ ロ ーバルク ロ ッ ク ラ イ ンの ス キ ュ ーは小 さ い値 TPCB_LAYOUT_SKEW ±50 50 50 ボー ド 上のデー タ ラ イ ン と 対応す る ス ト ロ ーブ間の ス キ ュ ー 不確定値の合計 - 1180 790 不確定値の合計 デー タ有効 ウ ィ ン ド ウ 530 1180 1710
図8に、 読み出 し デー タ パ ス の タ イ ミ ン グマージ ン を示 し ます。
DDR SDRAM
イ ン タ ー フ ェ イ ス
のイ ン プ リ メ ン
テーシ ョ ン
こ のセ ク シ ョ ン では、DDR SDRAM コ ン ト ロ ー ラ お よ び イ ン タ ーフ ェ イ ス の特性、 イ ン タ ーフ ェ イ ス のブ ロ ッ ク 図 (図9)、 コ ン ト ロ ー ラ ス テー ト マシ ン (図10) を示 し ます。 図 8 : 読み込みデー タ パスの タ イ ミ ング マージ ン 位相CLK0
データ 270 0 90 180 0 1280 2500 1610 立ち上がりエッジ の不確定値 立ち下がりエッジ の不確定値 時間 (ps) 立ち下がりエッジ マージン 立ち上がりエッジ マージン x709_08_111505User Test Design
Read-Data FIFO Write-Data FIFO Read Address FIFO Command Logic Block Front-End FIFOs TOP Module Write Address FIFO DDR SDRAM Controller Datapath Module Address/Control Tap Select Done DDR SDRAM Rd/WR En CLKs DQ DQS
ハー ド ウ ェ ア
テ ス ト
ベ ン チ
ハー ド ウ ェ アテ ス ト ベンチは、DDR SDRAM コ ン ト ロ ー ラ のデザ イ ン をすべての面か ら テ ス ト す る た めのア ド レ ス と デー タ パ タ ーン を提供 し ます。ユーザーバ ッ ク エン ド には、 バ ッ ク エン ド ス テー ト マ シ ン、 読み出 し デー タ コ ンパレー タ 、 お よ びデー タ 生成モジ ュ ールが含まれます。デー タ 生成モジ ュ ー ルでは、 メ モ リ デバ イ ス に書 き 込まれ る さ ま ざ ま なア ド レ スお よ びデー タ パ タ ーンが生成 さ れます。ア ド レ ス位置はブ ロ ッ ク RAM にあ ら か じ め保存 さ れてお り 、 こ こ では ROM と し て使用 さ れます。保存 さ れてい る ア ド レ ス値は、DDR SDRAM デバ イ ス の異な る 行お よ びバン ク へのア ク セ ス を テ ス ト す る ために選択 さ れてい ます。デー タ パ タ ーン ジ ェ ネ レー タ には、 デー タパ ターン を生成す る ス テー ト マ シ ンが含 まれてい ます。バ ッ ク エ ン ド ス テー ト マシ ンはユーザーデザ イ ン と し て機能 し 、 書 き 込み イ ネーブル信号 ま たは読み込み イ ネーブル信号を送信 し て、 デー タ ジ ェ ネ レー タモジ ュ ールでア ク セ ス す る 必要のあ る FIFO を指定 し ます。ユーザー
イ ン タ ー フ ェ イ ス
バ ッ ク エン ド ユーザーイ ン タ ーフ ェ イ ス は、 書 き 込みア ド レ ス FIFO、 書 き 込みデー タ FIFO、 読み出 し ア ド レ ス FIFO、 お よ び読み出 し デー タ FIFO の 4 つの FIFO で構成 さ れて い ま す。最初の 3 つの FIFO はユーザーバ ッ ク エン ド モジ ュ ールに よ り ア ク セ ス さ れ、 読み出 し デー タ FIFO は取 り 込まれた 読み出 し デー タ を保存す る ためにデー タ パ スモジ ュ ールに よ り ア ク セ ス さ れます。コ マ ン ド 論理ブ ロ ッ ク
コ マ ン ド 論理ブ ロ ッ ク は、 コ ン ト ロ ー ラ に コ マ ン ド を送信 し ます。こ のブ ロ ッ ク は、 ユーザーの コ マ ン ド 生成モジ ュ ールで変更 し た り 、 コ マ ン ド FIFO と 置 き 換え る こ と がで き ます。こ のデザ イ ン で使用 さ れ る コ マ ン ド 生成モジ ュ ールは、READ コ マ ン ド と WRITE コ マ ン ド を交互に生成 し ます。コ マン ド 論 理ブ ロ ッ ク は、 コ ン ト ロ ー ラ に コ マン ド を送信す る 単純な ス テー ト マシ ンです。DDR SDRAM
コ ン ト ロー ラ
イ ン タ ー フ ェ イ ス
図10に、DDR SDRAM コ マン ド 生成ス テー ト マシ ン を示 し ます。 図 10 : DDR SDRAM コ ン ト ロー ラ ステー ト マシ ンRST
CONFLICT || REFRESH
AUTOREFRESH || CO
N
FLICT
Initialization
REFRESH
REFRESH DONE
WR || RD
AUTOREFRESH || CO
N
FLICT
INIT_DONE
Auto
Refresh
Active
Active
Wait
First Read
First
Write
Write
Wait
Read
Wait
Read-Write
Write-Read
! RP_CNT
WR
RD
Precharge
IDLE
X709_05_090304コ ン ト ロ ー ラ か ら メ モ リ に コ マン ド が送信 さ れ る 前に、 次の操作が実行 さ れます。 1. コ マ ン ド 論理ブ ロ ッ ク に よ り WRITE ま たは READ コ マ ン ド が生成 さ れます。 2. コ ン ト ロ ー ラ に よ り 書 き 込みま たは読み出 し ア ド レ ス FIFO に イ ネーブル信号が送信 さ れます。 3. すべてのバン ク がプ リ チ ャ ージ さ れてい る 場合は対応す る バン ク の行がア ク テ ィ ブにな り 、 既にア ク テ ィ ブな行があ る 場合は、 その行 と バン ク のア ド レ ス が新 し い行 と バン ク のア ド レ ス と 比較 さ れ ます。異な る 場合は、 現在ア ク テ ィ ブな行がプ リ チ ャ ージ さ れ、READ/WRITE ス テー ト にな る ま えに ACTIVE コ マン ド が発行 さ れます。
4. WRITE ス テー ト の と き に READ コ マ ン ド が検出 さ れ る と 、write_to_read タ イ ム後に READ コ マ ン ド が発行 さ れます。同様に、READ ス テー ト の と き に コ マ ン ド 論理ブ ロ ッ ク か ら WRITE コ マン ド が検出 さ れ る と 、read_to_write タ イ ム後に WRITE コ マン ド が発行 さ れます。 5. コ マ ン ド は、DDR メ モ リ に対 し て発行 さ れ る 前に、 パ イ プ ラ イ ン化 さ れてア ド レ ス信号に同期化 さ れます。
リ フ ァ レ ン ス
デザイ ンの仕様
ダ イ レ ク ト ク ロ ッ キ ン グデー タ キ ャ プチ ャ 手法を使用 し た DDR SDRAM メ モ リ コ ン ト ロ ー ラ の リ フ ァ レ ン スデザ イ ンは、Memory Interface Generator (MIG) ツールか ら 使用で き ます。こ の ツールは、 ザ イ リ ン ク ス の CORE Generator™ に含まれてい ます。最新の リ フ ァ レ ン スデザ イ ン を入手す る には、 次のザ イ リ ン ク ス の Web サ イ ト の IP ア ッ プデー ト を ダ ウ ン ロ ー ド し て く だ さ い。 http://www.xilinx.co.jp/xlnx/xil_sw_updates_home.jsp こ のデザ イ ンは、 ハー ド ウ ェ ア上で 200MHz 以上の周波数で特性評価 さ れてい ます。表5に、 リ フ ァ レ ン スデザ イ ンの仕様を示 し ます。 表 5 : リ フ ァ レ ン スデザイ ンの仕様 パラ メ ー タ 仕様/詳細 動作周波数 200 MHz (DDR400 - PC3200) Virtex-4 デバ イ ス の ス ピー ド グ レー ド 10 テ ス ト ベンチお よび ChipScope™ を使用 し た場 合の コ ンポーネ ン ト デザ イ ンのデバ イ ス使用率 1285 ス ラ イ ス DIMM イ ン タ ーフ ェ イ ス のみの ス ラ イ ス数 1900 ス ラ イ ス コ ンポーネ ン ト イ ン タ ーフ ェ イ ス のみの ス ラ イ ス数 525 ス ラ イ ス サポー ト さ れ る バース ト モー ド 4 (2 お よ び 8 に手動変更可能) サポー ト さ れ る CAS レ イ テ ン シ 3 (2 お よ び 2.5 に手動変更可能) HDL 言語 Verilog、VHDL バ ス幅 コ ン ポーネ ン ト 16 ビ ッ ト 、DIMM 144 ビ ッ ト コ ンポーネ ン ト の検証に使用 さ れたデバ イ ス Micron MT46V32M16デザイ ン
フ ァ イル
表6に、 リ フ ァ レ ン スデザ イ ン フ ァ イ ルを示 し ます。 表 6 : デザイ ン フ ァ イルの リ ス ト (Verilog バージ ョ ンの説明を含む) モ ジ ュ ール名 各モ ジ ュ ールの説明 top.v DDR コ ン ト ロ ー ラ と 物理レ イ ヤの最上位モジ ュ ール clk_module.v メ モ リ イ ン タ ーフ ェ イ ス の DCM_BASE プ リ ミ テ ィ ブお よ び IDELAYCTRL モジ ュ ール用に 200MHz ク ロ ッ ク を イ ン ス タ ン シ エー ト し ます。リ フ ァ レ ン スデザ イ ンでは、 次の 2 つのグ ローバル ク ロ ッ ク リ ソ ース を使用 し てお り 、 こ れ ら はフ ァ イ ルを手動で編集 し て保存で き ます。 • DCM の CLKDV 出力か ら 生成 さ れた カ ウ ン タ ク ロ ッ ク 。デザ イ ンの タ イ ミ ン グが満た さ れてい る 場合は、 大型のカ ウ ン タ を使用 す る と ク ロ ッ ク リ ソ ース を節約で き ます。 • IDELAY_CTRL モジ ュ ール用の ク ロ ッ ク 。 エン ジニ ア リ ン グサ ンプルデバ イ ス用に低周波数の ク ロ ッ ク を供給 し ます。製品デバ イ ス を使用す る 場合は、 こ のモジ ュ ールは メ イ ンの イ ン タ ーフ ェ イ ス ク ロ ッ ク を使用 し ます。data_path.v 物理レ イ ヤの最上位。サブモジ ュ ール tap_ctrl、data_tap_inc、 idelay_ctrl、idelay_rd_en、v4_dqs_iob、v4_dq_iob、 お よ び rd_data_fifo を イ ン ス タ ン シエー ト し ます。 data_tap_inc.v ス ト ロ ーブに対応す る デー タ ビ ッ ト の タ ッ プ選択 コ ン ト ロ ー ラ を イ ンプ リ メ ン ト し ます。 idelay_ctrl.v デザ イ ンに IDELAY プ リ ミ テ ィ ブが使用 さ れてい る 場合に必要な IDELAYCTRL プ リ ミ テ ィ ブを イ ン ス タ ン シエー ト し ます。 idelay_rd_en.v 正規化 さ れた読み出 し イ ネーブル信号用に IDELAY プ リ ミ テ ィ ブお よ び IOB フ リ ッ プ フ ロ ッ プ を イ ン ス タ ン シエー ト し ます。 tap_ctrl.v DQS 信号の 2 つの遷移を検出 し 、 対応す る デー タ ビ ッ ト を FPGA の内部 ク ロ ッ ク (CLK) の中心に揃え る ために必要な タ ッ プ遅延を判 断す る モジ ュ ール。
v4_dm_iob.v 双方向デー タ 用に IDELAY プ リ ミ テ ィ ブお よ び IOB フ リ ッ プ フ ロ ッ プ を イ ン ス タ ン シエー ト し ます。
v4_dq_iob.v 双方向デー タ 用に IDELAY プ リ ミ テ ィ ブお よ び IOB フ リ ッ プ フ ロ ッ プ を イ ン ス タ ン シエー ト し ます。
v4_dqs_iob.v 双方向ス ト ロ ーブ用に IDELAY プ リ ミ テ ィ ブお よ び IOB フ リ ッ プ フ ロ ッ プ を イ ン ス タ ン シエー ト し ます。
cmp_rd_data.v ビ ッ ト エ ラ ーが発生 し た場合に、 エ ラ ー信号を生成 し ます。読み込 みデー タ を予測 さ れ る デー タ 値 と 比較 し ます。
user_interface.v 読み込みデー タ 用の FIFO16 プ リ ミ テ ィ ブを イ ン ス タ ン シエー ト し ます。 FIFO は、 立ち上が り エ ッ ジのデー タ 用お よ び立ち下が り エ ッ ジのデー タ 用にそれぞれ 1 つずつあ り ます。
backend_fifo.v DDR SDRAM イ ン タ ーフ ェ イ ス用のバ ッ ク エン ド FIFO を イ ン ス タ ン シエー ト し ます。書 き 込みア ド レ ス、 書 き 込みデー タ、 読み出 し ア ド レ ス、 読み出 し デー タ FIFO が含まれます。 FIFO は、Virtex-4 FIFO16 プ リ ミ テ ィ ブ ま たは LUT RAM イ ン ス タ ン ス を使用 し て作 成 さ れた FIFO を使用 し て イ ンプ リ メ ン ト さ れます。 Command_logic.v イ ン タ ーフ ェ イ ス のアービ タ が含まれます。こ のモジ ュ ールを編集 し て、 読み出 し お よ び書 き 込みア ク セ ス の条件な ど を変更で き ます。 Rd_data_fifo.v 読み込みデー タ 用の FIFO16 プ リ ミ テ ィ ブを イ ン ス タ ン シエー ト し ます。 FIFO は、 立ち上が り エ ッ ジのデー タ 用お よ び立ち下が り エ ッ ジのデー タ 用にそれぞれ 1 つずつあ り ます。
RAM_8D.v 非同期 FIFO を構築す る ために LUT RAM を イ ン ス タ ン シエー ト し ます。ク ロ ッ ク の立ち上が り エ ッ ジに同期 し てデー タ を送信 し ます。 parameter.v DDR SDRAM リ フ ァ レ ン スデザ イ ン を 200MHz で動作 さ せ る 場合
に使用 さ れ る 値が含まれます。
表 6 : デザイ ン フ ァ イルの リ ス ト (Verilog バージ ョ ンの説明を含む) (続き)