02.08.2013 Views

UG586 : 7 シリーズ FPGA メモリ インターフェイス ソリューション ... - Xilinx

UG586 : 7 シリーズ FPGA メモリ インターフェイス ソリューション ... - Xilinx

UG586 : 7 シリーズ FPGA メモリ インターフェイス ソリューション ... - Xilinx

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong><br />

<strong>インターフェイス</strong><br />

<strong>ソリューション</strong> v1.7<br />

ユーザー ガイド<br />

<strong>UG586</strong> 2012 年 10 月 16 日


Notice of Disclaimer<br />

The information disclosed to you hereunder (the “Materials”) is provided solely for the selection and use of <strong>Xilinx</strong> products.To<br />

the maximum extent permitted by applicable law:(1) Materials are made available "AS IS" and with all faults, <strong>Xilinx</strong> hereby<br />

DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT<br />

LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR<br />

PURPOSE; and (2) <strong>Xilinx</strong> shall not be liable (whether in contract or tort, including negligence, or under any other theory of<br />

liability) for any loss or damage of any kind or nature related to, arising under, or in connection with, the Materials (including<br />

your use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage (including loss<br />

of data, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if such<br />

damage or loss was reasonably foreseeable or <strong>Xilinx</strong> had been advised of the possibility of the same.<strong>Xilinx</strong> assumes no<br />

obligation to correct any errors contained in the Materials or to notify you of updates to the Materials or to product<br />

specifications.You may not reproduce, modify, distribute, or publicly display the Materials without prior written consent.Certain<br />

products are subject to the terms and conditions of the Limited Warranties which can be viewed at<br />

http://www.xilinx.com/warranty.htm; IP cores may be subject to warranty and support terms contained in a license issued to you<br />

by <strong>Xilinx</strong>.<strong>Xilinx</strong> products are not designed or intended to be fail-safe or for use in any application requiring fail-safe<br />

performance; you assume sole risk and liability for use of <strong>Xilinx</strong> products in Critical<br />

Applications:http://www.xilinx.com/warranty.htm#critapps.<br />

© Copyright 2011–2012 <strong>Xilinx</strong>, Inc. <strong>Xilinx</strong>, the <strong>Xilinx</strong> logo, Artix, ISE, Kintex, Spartan, Virtex, Vivado, Zynq, and other<br />

designated brands included herein are trademarks of <strong>Xilinx</strong> in the United States and other countries.AMBA, AMBA Designer,<br />

ARM, ARM1176JZ-S, CoreSight, Cortex, and PrimeCell are trademarks of ARM in the EU and other countries. All other<br />

trademarks are the property of their respective owners.<br />

本資料は英語版 (v1.7) を翻訳し た も ので、 内容に相違が生じ る場合には原文を優先し ます。<br />

資料に よ っては英語版の更新に対応し ていない も のがあ り ます。<br />

日本語版は参考用 と し てご使用の上、 最新情報につき ま し ては、 必ず最新英語版を ご参照 く だ さ い。<br />

こ の資料に関する フ ィ ー ド バ ッ ク および リ ン ク などの問題につき ま し ては、 jpn_trans_feedback@xilinx.com までお知らせく<br />

だ さ い。 いただ き ま し たご意見を参考に早急に対応 させていただ き ます。 なお、 こ の メ ール ア ド レ スへのお問い合わせは受け<br />

付けてお り ません。 あ らかじめご了承 く ださい。<br />

改訂履歴<br />

次の表に、 こ の文書の改訂履歴を示し ます。<br />

日付 バージ ョ ン 内容<br />

2011 年 3 月 1 日 1.0 初版 リ リ ース<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com <strong>UG586</strong> 2012 年 10 月 16 日


日付 バージ ョ ン 内容<br />

2011 年 6 月 22 日 1.1 MIG 1.2 リリース。ISE Design Suite をバージ ョ ン 13.2 にアップデー ト。 GUI スク<br />

リーン キ ャ プチ ャ を更新。<br />

第 1 章 : 「ピ ン変更の検証およびデザ イ ンの更新」、 「サンプル デザイ ンのシ ミ ュ レー<br />

ション (AXI4 イ ン ターフ ェ イ ス を使用するデザ イ ン)」、 「シ ミ ュ レーシ ョ ンに関する注<br />

意事項」 、 「エ ラー訂正コー ド」 、および 「DDR3 ピン配置の例」 セクションを追加。<br />

17 ページの 「ピ ン互換 <strong>FPGA</strong>」 に SLR に関する段落を追加。 19 ページの 「[Controller<br />

Options] ページ」 の コ ン ト ローラーに関する セ ク シ ョ ンに入力 ク ロ ッ ク 周期 と PHY を<br />

追加。 24 ページの 「DDR3 <strong>メモリ</strong>のパラメーター オプシ ョ ンの設定」 に、 DDR3<br />

SDRAM がバース ト 長 8 をサポー ト する こ と を追加。 図 1-17 の HR バンク オプシ ョ<br />

ンに内部終端を追加。 27 ページ にピン/バン ク の選択モー ド に関する説明を追加。<br />

52 ページ にチップ セレ ク ト およびデータ マス ク のオプシ ョ ンに関する注記を追加。<br />

表 1-17 に app_correct_en_i を追加。 108 ページの 「コ マン ド パス」 に 3 つのコマン ド<br />

タイプを追加。表 1-86 に phy_mc_ctl_full、 phy_mc_cmd_full、 および<br />

phy_mc_data_full 信号を追加。 137 ページの 「物理層イ ン ターフ ェ イ ス (<strong>メモリ</strong> コン<br />

トローラーを使用しないデザイン)」 の最後に FIFO に関する段落を追加。 表 1-92 の<br />

DATA_BUF_ADDR_WIDTH に関する説明およびオプシ ョ ン を更新。 151 ページの<br />

「DDR3 デザイ ンにおけるバン クおよびピ ンの選択」 に SLR に関する説明を追加。<br />

153 ページの 「コ ン フ ィ ギ ュ レーシ ョ ン」 に LVCMOS15 および DIFF_SSTL15 I/O 規<br />

格を追加。 図 1-70、 図 1-71、 および図 1-72 のレ ジ ス タ値を変更。 .表 1-95 の 「<strong>FPGA</strong><br />

DCI または IN_TERM」 のレ ジ ス タ値を変更。<br />

第 2 章 : 「ピ ン変更の検証およびデザ イ ンの更新」 および 「出力パス」 セクションを追<br />

加。 192 ページのレイテンシ モー ド に関する説明を変更。 197 ページ にピン/バンクの<br />

選択モー ド に関する説明を追加。 図 2-16 の HR バンク オプシ ョ ンに内部終端を追加。<br />

224 ページの 「イ ンプ リ メ ンテーシ ョ ンの詳細」 を更新。<br />

第 3 章 : RLDRAM II に関する新し い章を追加。<br />

<strong>UG586</strong> 2012 年 10 月 16 日 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>


日付 バージ ョ ン 内容<br />

2011 年 10 月 19 日 1.2 MIG 1.3 リリース。ISE Design Suite をバージ ョ ン 13.3 にアップデー ト 。<br />

• 第 1 章 : 16 ページの 「MIG の出力オプシ ョ ン」 に手順 2 を追加。 19 ページの<br />

「[Controller Options] ページ」 に<strong>メモリ</strong> コ ン ト ローラーのオプシ ョ ン を使用する際<br />

の注記を追加。 22 ページの 「AXI パラ メーター オプシ ョ ン」 にアービ ト レーシ ョ<br />

ン方法を追加。 図 1-17 に DCI カ ス ケー ド に関する説明を追加。 28 ページおよび<br />

152 ページ の SSI テクノロジと SLR を使用するデバイ スに関する説明を更新。<br />

30 ページの tg_compare_error を更新。 表 1-8 差し替え。 表 1-13 に<br />

qdr_wr_cmd_o、 vio_fixed_instr_value、 vio_fixed_bl_value、 vio_pause_traffic、<br />

および vio_data_mask_gen 信号を追加。 図 1-31 および図 1-33 のユーザー イン<br />

ターフ ェ イ スに信号を追加。 表 1-17 に app_sr_req、 app_sr_active、 app_ref_req、<br />

app_ref_ack、 app_zq_req、 および app_zq_ack 信号を追加。 「app_wdf_rdy」、<br />

「app_ref_req」、 「app_ref_ack」、 「app_zq_req」、 「app_zq_ack」、 「スターブ リミッ<br />

ト を使用する読み出し優先 (RD_PRI_REG_STARVE_LIMIT)」、 「ネイテ ィ ブ イン<br />

ターフェイスのメンテナンス コ マン ド 信号」、 「ユーザー リフレッシュ」、および<br />

「ユーザー ZQ」 セ ク シ ョ ン を追加。 表 1-19 に C_RD_WR_ARB_ALGORITHM を<br />

追加。 表 1-84 のランク数の Hi インデックス (Rank) を変更して、 CAS スロッ ト欄<br />

を追加。 「AXI アドレッシング」 および 「物理層イ ン ターフ ェ イ ス ( <strong>メモリ</strong> コント<br />

ローラーを使用しないデザイン)」 を更新。 「書き込みパス」 に図 1-57 ~図 1-59 を<br />

追加。 表 1-91 で、 DDR3_SDRAM の RTT_NOM から DISABLED オプシ ョ ンを<br />

削除、 RTT_WR の RTT_NOM を RTT_WR へ変更、 SIM_BYPASS_INIT_CAL お<br />

よび表の注記 2 を更新。 表 1-92 の tZQI を更新し、 USER_REFRESH を追加。<br />

表 1-93 を追加。 「コンフ ィギュレーシ ョ ン」 では、 制約例を変更し、 SCL と SDA<br />

に関する段落を削除。<br />

• 第 2 章 : 189 ページの 「MIG の出力オプシ ョ ン」 に手順 2 を追加。 192 ページの<br />

「[Controller Options] ページ」 に入力 ク ロ ッ ク 周期に関する説明を追加。 195 ペー<br />

ジの 「<strong>FPGA</strong> オプシ ョ ン」 にデバ ッ グ信号制御および内部 Vref セクションのオプ<br />

シ ョ ンに関する説明を追加。 197 ページの 「I/O プランニング オプシ ョ ン」 を追<br />

加。 200 ページの 「シ ス テム ピ ンの選択」 で cal_done 信号を init_calib_complete<br />

信号に、 エ ラー信号を tg_compare_error に変更。 表 2-2 差し替え。 表 2-8 のファ イ<br />

ル名を変更。 図 2-23、 図 2-24、 および図 2-25 の信号名を変更。 表 2-10 の信号名<br />

を変更。 表 2-13 に CPT_CLK_CQ_ONLY を追加し、 SIM_BYPASS_INIT_CAL<br />

の値を変更。 表 2-14 を追加。 231 ページの 「ピ ン配置の要件」 のピ ン配置規則に<br />

関する説明を変更。 表 2-15 の後に DCI および IN_TERM に関する段落を追加。<br />

234 ページの 「QDRII+ SRAM デザイ ンのデバッ グ」 を追加。<br />

• 第 3 章 : 258 ページの 「MIG の出力オプシ ョ ン」 に手順 2 を追加。 「[Controller<br />

Options] ページ」 に入力 ク ロ ッ ク 周期に関する説明を追加。 263 ページの 「<strong>FPGA</strong><br />

オプシ ョ ン」 にデバ ッ グ信号制御および内部 Vref セクションのオプションに関す<br />

る説明を追加。 「システム ピンの選択」 で cal_done 信号を init_calib_complete 信号<br />

に、 エ ラー信号を tg_compare_error に変更。 表 3-8 のフ ァ イル名を変更。 表 3-12<br />

を削除 (使用し ない予約信号が含まれていた)。 表 3-12 に rst_phaser_ref を追加。<br />

PHY-Only <strong>インターフェイス</strong> セ ク シ ョ ン を削除。 表 3-15 に<br />

RLD_ADDR_WIDTH、 MEM_TYPE、 CLKIN_PERIOD、 SIMULATION を追加<br />

し、 CLKFBOUT_MULT、 CLKOUT0_DIVIDE、 CLKOUT1_DIVIDE、<br />

CLKOUT2_DIVIDE、 CLKOUT3_DIVIDE の名前を変更。 表 3-16 を更新。<br />

表 3-27 の後に DCI および IN_TERM に関する段落を追加。<br />

• 第 4 章 「マルチコントローラー デザイ ン」 を追加。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com <strong>UG586</strong> 2012 年 10 月 16 日


日付 バージ ョ ン 内容<br />

2012 年 1 月 18 日 1.3 MIG 1.4 リリース。ISE Design Suite をバージョ ン 13.4 にアップデー ト。 GUI スク<br />

リーン キ ャ プチ ャ を更新。<br />

• 第 1 章 : DDR2 SDRAM のサポー ト を追加。 「MIG の出力オプシ ョ ン」 にオプシ ョ<br />

ン 3 を追加。 「EDK でのク ロ ッ キング」 を追加。 「シ ミ ュ レーシ ョ ンに関する注意<br />

事項」 を更新。 図 1-26 および図 1-50 を差し替え。<br />

• 第 2 章 : 「[Controller Options] ページ」 か ら入力 ク ロ ッ ク 周期オプシ ョ ン を削除。<br />

「<strong>メモリ</strong> オプシ ョ ン」 を追加。 「<strong>FPGA</strong> オプシ ョ ン」 に基準ク ロ ッ ク オプシ ョ ンを<br />

追加。 「デバ ッ グ信号」 を更新。<br />

• 第 3 章 : 「[Controller Options] ページ」 か ら入力 ク ロ ッ ク 周期オプシ ョ ン を削除。<br />

「<strong>メモリ</strong> オプシ ョ ン」 に入力 ク ロ ッ ク 周期オプシ ョ ン を追加。 「<strong>FPGA</strong> オプシ ョ ン」<br />

に基準ク ロ ッ ク オプシ ョ ン を追加。 「RLDRAM II および RLDRAM III デザイ ンの<br />

デバ ッ グ」 を追加。<br />

2012 年 4 月 24 日 1.4 MIG 1.5 リリース。ISE Design Suite をバージョ ン 14.1 にアップデー ト。 GUI スク<br />

リーン キ ャ プチ ャ を更新。 IODELAYCTRL を IDELAYCTRL に変更。<br />

• 第 1 章 : 「<strong>FPGA</strong> オプシ ョ ン」 に I/O 電力削減オプシ ョ ン を追加。 「バン ク の選択」<br />

の sys_rst オプシ ョ ンの I/O 規格を変更。 「MIG サンプル デザ イ ン作成の ISE<br />

Project Navigator フロー」、 「省電力機能」、 「汎用レ ジ ス タ の リ ー ド レべリ ング」、<br />

「OCLKDELAYED のキャ リ ブレーシ ョ ン」、 「ア ップサイジング と ダウンサイジン<br />

グ」、 および 「外部 Vref」 セ ク シ ョ ン を追加。 PHY 制御ワー ド の [16:15] ビッ トを<br />

Rank Count から Reserved へ変更。 表 1-11 の NUM_DQ_PINS の最大設定を変更。<br />

図 1-37 のフ ロー図を変更。 図 1-38 および図 1-40 から RankSel[1:0] を削除。<br />

表 1-86 に mc_odt および mc_cke を追加。 「AXI アドレッシング」 差し替え。<br />

表 1-91 の REFCLK_FREQ、 RANK_WIDTH、 および WRLVL を変更。 表 1-92<br />

に DATA_IO_PRIM_TYPE を追加。 「DDR3 デザイ ンにおけるバン クおよびピンの<br />

選択」 に DQSCC ピ ンに関する説明を追加。 DIFF_SSTL_15 を DIFF_SSTL18_II<br />

に、 SSTL15 を SSTL18_II に変更。<br />

• 第 2 章 : DIFF_SSTL_15 を DIFF_HSTL_I に、 SSTL15 を HSTL_I に変更。 「シス<br />

テム ピ ンの選択」 の sys_rst オプシ ョ ンの I/O 規格を変更。 表 2-14 の<br />

PHY_BITLANE パ ラ メ ーターを変更。 「システム クロック、PLL の位置および制<br />

約」 および 「コンフ ィギュレーシ ョ ン」 を追加。<br />

• 第 3 章 : DIFF_SSTL_15 を DIFF_HSTL_I に、 SSTL15 を HSTL_I に変更。 「シス<br />

テム ピ ンの選択」 の sys_rst オプシ ョ ンの I/O 規格を変更。 「書き込みキ ャ リ ブレー<br />

ション」、 「システム クロック、PLL の位置および制約」、 および 「コンフ ィギュ<br />

レーシ ョ ン」 セ ク シ ョ ン を追加。 表 3-16 の PHY_BITLANE パラ メ ーターを変更。<br />

表 3-31 に dbg_wrcal_sel_stg[1:0]、 dbg_wrcal[63:0]、 dbg_wrcal_done[2:0]、<br />

dbg_wrcal_po_first_edge[5:0]、 dbg_wrcal_po_second_edge[5:0]、 および<br />

dbg_wrcal_po_final[5:0] を追加。<br />

2012 年 6 月 13 日 1.5 157 ページで、 DQS/DQS# に対する CK/CK# の電気遅延の推奨合計値を変更。<br />

2012 年 7 月 25 日 1.6 MIG 1.6 リリース。ISE Design Suite をバージョ ン 14.2 にアップデー ト。 GUI スク<br />

リーン キ ャ プチ ャ を更新。<br />

• 第 1 章 : 25 ページの 「<strong>FPGA</strong> オプシ ョ ン」 で [No Buffer]、 [Use System Clock]、お<br />

よび [Sample Data Depth] を追加。 nCK_PER_CLK、 tZQI、 SYSCLK_TYPE、<br />

REFCLK_TYPE、 および APP_DATA_WIDTH パ ラ メ ーターを変更。 151 ページ<br />

の 「DDR3 デザイ ンにおけるバン クおよびピンの選択」 に複数の CK 出力に関する<br />

説明を追加。 157 ページの 「 ト レース長」 および162 ページの 「終端」 を更新。<br />

• 第 2 章 : 195 ページの 「<strong>FPGA</strong> オプシ ョ ン」 で [No Buffer]、 [Use System Clock]、<br />

および [Sample Data Depth] を追加。SYSCLK_TYPE および REFCLK_TYPE パラ<br />

メーターを変更。<br />

• 第 3 章 : 195 ページの 「<strong>FPGA</strong> オプシ ョ ン」 で [No Buffer]、 [Use System Clock]、<br />

および [Sample Data Depth] を追加。SYSCLK_TYPE および REFCLK_TYPE パラ<br />

メーターを変更。<br />

• 第 5 章 : Vivado Design Suite への移行に関する新し い章を追加。<br />

<strong>UG586</strong> 2012 年 10 月 16 日 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>


日付 バージ ョ ン 内容<br />

2012 年 10 月 16 日 1.7 MIG 1.7 リリース。ISE Design Suite をバージョ ン 14.3 にアップデー ト 。<br />

• 第 1 章 : AXI4-Lite スレーブ制御/ステータス レジスタ <strong>インターフェイス</strong> ブロック<br />

のセ ク シ ョ ン を追加。 図 1-32 および図 1-37 を変更し、 PRBS および温度モニ ター<br />

セクションを追加。 表 1-37 の USE_DM_PORT に CLKIN_PERIOD パラ メーター<br />

を追加。 表 1-38 の PHY0_BITLANES の説明を変更。<br />

• 第 2 章 : 表 2-13 で CLKIN_PERIOD を DIVCLK_DIVIDE パ ラ メ ーターに追加。<br />

• 第 3 章 : 全体で RLDRAM III に関する内容を追加。 図 (3-10、 3-13、 3-23 ~ 3-32、<br />

3-36 ~ 3-37、 3-40 ~ 3-41、 3-45 ~ 3-47、 および 3-50) を変更/追加。 表 3-11 に<br />

mem_ck_lock_complete パ ラ メ ーターを追加。 表 3-15 に CLKOUT0_PHASE パラ<br />

メーターを追加。表 3-16 の説明を変更し、 表 3-28 を追加。 表 3-29 の user_cmd 信<br />

号を変更。 表 3-31 および表 3-34 の説明を変更。 「書き込みキ ャ リ ブレーシ ョ ンの<br />

デバ ッ グ」 セ ク シ ョ ン を追加。<br />

• 第 4 章 : 「システム ク ロ ッ ク の共有」 セ ク シ ョ ン を追加。<br />

• 第 5 章 : 図 (5-15、 5-17 ~ 5-20) を変更し、 「Vivado の使用方法 – MIG IP の生成」<br />

の手順を変更。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com <strong>UG586</strong> 2012 年 10 月 16 日


目次<br />

改訂履歴. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />

第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

はじめに. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

CORE Generator の使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

EDK の使用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

シ ミ ュ レーシ ョ ンに関する注意事項. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60<br />

コアのアーキテクチャ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60<br />

コ ア を使用するデザ イ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125<br />

コアへの<strong>インターフェイス</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125<br />

コアのカスタマイズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140<br />

設計ガ イ ド ラ イ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151<br />

DDR3 デザイ ンのデバッ グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179<br />

第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

はじめに. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181<br />

CORE Generator の使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182<br />

コアのアーキテクチャ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210<br />

コアのカスタマイズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225<br />

設計ガ イ ド ラ イ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231<br />

QDRII+ SRAM デザイ ンのデバッ グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234<br />

第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

はじめに. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

CORE Generator の使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

コアのアーキテクチャ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281<br />

コアのカスタマイズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303<br />

設計ガ イ ド ラ イ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310<br />

RLDRAM II および RLDRAM III デザイ ンのデバ ッ グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319<br />

第 4 章 : マルチコン ト ローラー デザイ ン<br />

はじめに. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343<br />

CORE Generator の使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343<br />

MIG のデ ィ レ ク ト リ 構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348<br />

第 5 章 : Vivado Design Suite への移行<br />

Vivado の使用方法 – MIG IP の生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351<br />

スクリプト ファイル – コマンド ライン モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367<br />

付録 A : その他のリ ソース<br />

ザイ リ ンクスのリ ソース. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369<br />

<strong>ソリューション</strong> センター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369<br />

参考資料. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 7<br />

<strong>UG586</strong> (v1.7) 2012 年 10 月 16 日


8 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> (v1.7) 2012 年 10 月 16 日


DDR3 および DDR2 SDRAM <strong>メモリ</strong><br />

<strong>インターフェイス</strong> <strong>ソリューション</strong><br />

はじめに<br />

機能<br />

CORE Generator の使用方法<br />

システム要件<br />

第 1 章<br />

ザイ リ ンクス 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> コアは、7 <strong>シリーズ</strong><br />

<strong>FPGA</strong> のユーザー デザイ ンおよび AMBA® AXI4 (Advanced extensible Interface) スレーブ イン<br />

ターフェイス と DDR3 および DDR2 SDRAM デバイ スのイ ン ターフ ェ イ ス と な る、 あ ら か じ め構<br />

築されたコン ト ローラーと物理層 (PHY) を組み合わせた も のです。 こ のユーザー ガイドでは、7 シ<br />

リーズ 用の LogiCORE IP DDR3 または DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> コ アの使用、<br />

カ ス タ マ イ ズ、 シ ミ ュ レーシ ョ ンの方法について解説し ます。 エンベデ ッ ド 開発キ ッ ト (EDK) の<br />

場合、こ のコ アは XPS (<strong>Xilinx</strong> Platform Studio) で AXI4 と DDR3/DDR2 SDRAM をインターフェ<br />

イスする固定されたアーキテクチャの axi_7series_ddrx IP と し て提供 さ れてい ます。 こ こ で<br />

は、コ ア アーキテ ク チャについて説明し、そのカ ス タ マ イ ズ方法および接続方法の詳細を示し ます。<br />

ザイ リ ンクス 7 <strong>シリーズ</strong><strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>は、以前のデバイスと比<br />

較し て次の点が改善されています。<br />

• より高い性能<br />

• 物理層に新し いハー ド ウ ェ ア ブロック : PHASER_IN と PHASER_OUT、PHY 制御ブ ロ ッ ク 、<br />

および I/O FIFO (60 ページの 「コ アのアーキテ ク チャ」 参照)<br />

• ハー ド ウ ェ ア ブ ロ ッ ク に よ る ピ ン配置規則の変更 (151 ページの 「設計ガ イ ド ラ イ ン」 参照)<br />

• コント ローラーおよびユーザー <strong>インターフェイス</strong>が<strong>メモリ</strong> ク ロ ッ ク 周波数の 1/4 で動作<br />

ここでは、CORE Generator ツールを使用して 7 <strong>シリーズ</strong> <strong>FPGA</strong> で DDR3 または DDR2<br />

SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong>を生成し、ザイリンクスのツールでデザインをインプリ メント し<br />

て、合成可能なテ ス ト ベンチを用いてサンプル デザインのシ ミ ュレーシ ョ ンを実行する方法を順を<br />

追って説明します。<br />

• ISE® Design Suite v14.3<br />

または<br />

• Vivado Design Suite v2012.3<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 9<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-1<br />

コアのカスタマイズと生成<br />

GUI を使用し た生成方法<br />

MIG (Memory Interface Generator) はウ ィ ザード の指示に従 う だけで簡単にコ アを生成でき る ツー<br />

ルで、 XPS から CORE Generator ツールで起動できます。 こ こでは、 MIG ツールの使用方法を順<br />

に説明し ます。 Vivado ツールを使用し て コ ア を生成する方法は、 第 5 章 「Vivado Design Suite へ<br />

の移行」 を参照して く ださい。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> で DDR3 SDRAM デザ イ ン を作成する には、 次の手順に従います (MIG オプ<br />

シ ョ ンの大部分は DDR3 <strong>インターフェイス</strong>と DDR2 SDRAM <strong>インターフェイス</strong>で共通)。<br />

注記 : MIG ツールの正確な動作や表示さ れるページ/オプシ ョ ンは、MIG ツールの起動方法 (CORE<br />

Generator ツールまたは XPS) や AXI イ ン ターフ ェ イ スが選択 さ れてい る かに よ って異な る場合が<br />

あ り ます。 こ れ ら の違いについては、 次に示す手順の中で説明し ます。<br />

1. XPS から MIG ツールを起動する場合は、 XPS の IP カタログで [Memory and Memory<br />

Controller] → [AXI 7 Series Memory Controller] を選択 (システムに新規 IP を追加する場合)、ま<br />

たは XPS の [System Assembly] ビューで [axi_7series_ddrx] コンポーネントを右クリックして [Configure IP...] を選択し ます。 その後、次の手順 (16 ページの 「MIG の出力オプシ ョ ン」 ) へ進<br />

みます。<br />

または、CORE Generator ツールの [Search IP Catalog] に 「mig」 と入力し、MIG ツールを起<br />

動します (図 1-1)。<br />

図 1-1 : ザイ リンクス CORE Generator<br />

10 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

2. [File] → [New Project] をクリ ックして [New Project] ダイアログ ボックスを開きます。<br />

「7Series_MIG_Example_Design」 と い う 名前で新規プ ロ ジ ェ ク ト を作成し ます (図 1-2)。<br />

X-Ref Target - Figure 1-2<br />

3. プ ロ ジ ェ ク ト 名 と 場所を入力し ます。 [Save] をク リ ックします (図 1-3)。<br />

X-Ref Target - Figure 1-3<br />

<strong>UG586</strong>_c1_02_091410<br />

図 1-2 : CORE Generator の新規プ ロジ ェ ク ト 作成画面<br />

図 1-3 : [New Project] ダイアログ ボックス<br />

4. [Project Options] ダイアログ ボックスで [Part] オプシ ョ ン を選択し ます (図 1-4)。<br />

• Kintex-7 または Virtex®-7 のいずれかを ターゲッ ト デバイ スに指定し ます。<br />

<strong>UG586</strong>_c1_03_111010<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 11<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-4<br />

図 1-4 : CORE Generator のデバイス選択ページ<br />

<strong>UG586</strong>_c1_04_110610<br />

12 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

5. [Design Entry] に [Verilog] を選択し、 [Flow Settings] の [Vendor] には [ISE] を選択します。<br />

[OK] をクリ ックして [Project Options] の設定を完了し ます (図 1-5)。<br />

X-Ref Target - Figure 1-5<br />

図 1-5 : CORE Generator のデザイ ン フロー設定ページ<br />

<strong>UG586</strong>_c1_05_110610<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 13<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-6<br />

6. [MIG 7 Series 1.6] を選択します (図 1-6)。<br />

図 1-6 : MIG 7 Series デザイ ン プロジェク ト ページ<br />

14 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

7. [Core Generator Options] に、 MIG ツールを起動する前に CORE Generator ツールで選択した<br />

オプシ ョ ンの詳細が表示さ れます (図 1-7)。<br />

X-Ref Target - Figure 1-7<br />

8. [Next] をク リ ックして [MIG Output Options] ページへ進みます。<br />

<strong>UG586</strong>_c1_08_120311<br />

図 1-7 : 7 <strong>シリーズ</strong> <strong>FPGA</strong> の MIG (Memory Interface Generator) の最初のページ<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 15<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

MIG の出力オプシ ョ ン<br />

1. [Create Design] を選択して新規メモ リ コント ローラー デザイ ンを作成し ます。 [Component<br />

Name] に コ ンポーネン ト 名を入力し ます (図 1-8)。<br />

2. [Number of Controllers] で作成する コ ン ト ローラーの数を指定し ます。こ れ以降のページは、指<br />

定し た コ ン ト ローラーの数だけ設定を繰 り 返す必要があ り ます。<br />

3. DDR2 および DDR3 SDRAM デザ イ ンは、 メ モ リ マ ッ プ方式の AXI4 <strong>インターフェイス</strong>をサ<br />

ポー ト しています。 AXI4 <strong>インターフェイス</strong>は Verilog でのみイ ンプ リ メ ン ト されます。 AXI4<br />

<strong>インターフェイス</strong>が必要な場合は、 MIG ツールの起動前に CORE Generator ツールで言語に<br />

Verilog を選択して く ださい。 AXI4 イ ン ターフ ェ イ ス を選択し ない場合、 ユーザー インター<br />

フェイス (UI) が主要イ ン ターフ ェ イ スです。 EDK フローの axi_7series_ddrx IP は DDR3<br />

SDRAM のみをサポー ト し ているため、 AXI のサポー ト が常に有効にな り ます。<br />

X-Ref Target - Figure 1-8<br />

図 1-8 : MIG の出力オプシ ョ ン<br />

フォルダー名 が付いた MIG 出力が生成 さ れます。<br />

注記 : に使用で き る のは英数字のみです。 特殊文字は使用で き ません。<br />

先頭の 1 文字は英字であ る必要があ り ます (末尾の 1 文字は英字で も数字で もかまいません)。<br />

XPS か ら起動し た場合は、 XPS の IP インスタンス名が [Component Name] に入 り ます。<br />

4. [Next] をク リ ックして [Pin Compatible <strong>FPGA</strong>s] ページへ進みます。<br />

<strong>UG586</strong>_c1_09_120311<br />

16 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-9<br />

ピン互換 <strong>FPGA</strong><br />

CORE Generator の使用方法<br />

[Pin Compatible <strong>FPGA</strong>s] ページには、 選択し た <strong>FPGA</strong> ファ ミ リでパッケージが同じデバイスが表<br />

示されます。 MIG ツールで生成し た ピ ン配置を、 こ こ に表示 さ れた <strong>FPGA</strong> と互換性を持たせるよ<br />

う にする には、 こ のオプシ ョ ン を使用し てデバイ ス を選択し ます (図 1-9)。<br />

スタックド シリコン インターコネク ト (SSI) テ ク ノ ロ ジで実装さ れたザ イ リ ン ク ス 7 <strong>シリーズ</strong> デ<br />

バイスには、 SLR (Super Logic Region) があ り ます。 メ モ リ <strong>インターフェイス</strong>は複数の SLR をま<br />

た ぐ こ と はで き ません。 選択し たデバイ ス ま たは選択し た互換性のあ るデバイ スに SLR がある場<br />

合は、 MIG ツールがメモ リ <strong>インターフェイス</strong>がその境界を越えないよ うにします。<br />

図 1-9 : ピ ン互換のある 7 <strong>シリーズ</strong> <strong>FPGA</strong><br />

<strong>UG586</strong>_c1_10_110610<br />

1. 表示さ れた ピ ン互換のあ る <strong>FPGA</strong> の中からデバイ ス を選択し ます。MIG ツールは、こ こで選択<br />

した <strong>FPGA</strong> とターゲット <strong>FPGA</strong> に共通する ピ ンのみを使用し ます。[Target <strong>FPGA</strong>] には、選択<br />

したターゲット <strong>FPGA</strong> デバイ ス名が表示さ れます。<br />

2. [Next] をク リ ックして [Memory Selection] ページへ進みます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 17<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-10<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> DDR3 <strong>メモリ</strong> コントローラー ブロック デザイ ンの作成<br />

メ モ リ の選択<br />

こ のページには、選択し た <strong>FPGA</strong> ファミ リでサポートされるすべての<strong>メモリ</strong> タイプが表示されます。<br />

1. コント ローラー タイプは [DDR3 SDRAM] を選択します。<br />

2. [Next] をク リ ックして [Controller Options] ページへ進みます (図 1-10)。<br />

図 1-10 : <strong>メモリ</strong> タ イ プおよび コ ン ト ローラーの選択<br />

<strong>UG586</strong>_c1_11_120311<br />

18 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-11<br />

[Controller Options] ページ<br />

CORE Generator の使用方法<br />

こ のページには、 選択可能な コ ン ト ローラー オプシ ョ ンが表示されます (図 1-11)。<br />

注記 : <strong>メモリ</strong> コ ン ト ローラーの使用はオプシ ョ ンです。 物理層 (PHY) は、 メ モ リ コント ローラー<br />

がな く て も使用で き ます。 メ モ リ コント ローラーの RTL は MIG ツールで常に生成さ れますが、 こ<br />

の出力を使用する必要はあ り ません。詳細は、137 ページの 「物理層イ ン ターフ ェ イ ス ( <strong>メモリ</strong> コン<br />

ト ローラーを使用し ないデザ イ ン)」 を参照して く ださい。こ こでは、ORDERING などのコン ト ロー<br />

ラー専用の設定は不要で、 デフ ォル ト を使用で き ます。 Clock Period などの PHY に関する設定は、<br />

PHY のパ ラ メ ーター設定に使用さ れます。<br />

図 1-11 : コントローラー オプシ ョ ンの設定<br />

<strong>UG586</strong>_c1_12_120311<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 19<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

デザイ ンに複数のコ ン ト ローラーがあ る場合は、 各コ ン ト ローラーに対し てコ ン ト ローラー オプ<br />

シ ョ ンのページが繰 り 返し表示さ れます。 こ のページは、 最大 9 個のセ ク シ ョ ンに分類 さ れ、 選択<br />

した<strong>メモリ</strong> タ イ プに よ っ て セ ク シ ョ ン数が異な り ま す。 オプ シ ョ ン ページにはプルダ ウ ン メ<br />

ニ ューがあ り 、 デザ イ ンの さ ま ざ ま な機能を変更で き ます。<br />

• [Frequency] – すべての コ ン ト ローラーの動作周波数が表示 さ れます。 設定可能な周波数の範<br />

囲は、 選択し た <strong>FPGA</strong> デバイ スやそのス ピー ド グレードなどの要因に依存します。 EDK フ<br />

ローの場合、 ユーザーは追加のチェ ッ ク ボ ッ ク ス (デフォル ト で有効) を使用し て、 周波数情報<br />

が EDK か ら自動的に計算 さ れる よ う に定義で き ます。<br />

• [Input Clock Period] – リ ス ト か ら目的の入力 ク ロ ッ ク 周期を選択し ます。 こ れ ら の値は、 選<br />

択した<strong>メモリ</strong> ク ロ ッ ク周期の値 と パ ラ メ ーターの制限値に よ って決ま り ます。 PLL パラ メー<br />

ターの制限値の詳細は、 151 ページの 「設計ガ イ ド ラ イ ン」 を参照して ください。<br />

• [PHY to Controller Clock Ratio] – 物理層 (<strong>メモリ</strong>) の ク ロ ッ ク 周波数 と コ ン ト ローラーおよ<br />

びユーザー イ ン ターフ ェ イ スの ク ロ ッ ク 周波数の比率を指定し ます。 こ れが 2:1 の場合、 フ ァ<br />

ブリックにおけるタイミング制限によって、<strong>メモリ</strong> イ ン ターフ ェ イ スの最大周波数が低 く な り<br />

ます。2:1 のときのユーザー <strong>インターフェイス</strong>のデータ バス幅は、物理層 メ モ リ インターフェ<br />

イス幅の 4 倍となり、4:1 のときのユーザー <strong>インターフェイス</strong>のデータ バス幅は、 物理層 メ モ<br />

リイ ンターフェイス幅の 8 倍となります。 2:1 はレイテンシが低く、 4:1 はデータ レー ト が最<br />

も高い場合に必要です。<br />

• [Vccaux_io] – Vccaux_io は周期/周波数の設定に基づいて設定さ れます。High Performance カ<br />

ラ ムの最高周波数設定には 2.0V が必要です。 2.0V が必要な場合は、 MIG ツールが自動的に<br />

選択し ます。 それよ り も周波数が低い場合は 1.8V と 2.0V のど ち ら も 使用で き ます。 バン ク<br />

グループは同じ Vccaux_io 電源を共有します。詳細は、『7 <strong>シリーズ</strong> <strong>FPGA</strong> SelectIO リソース<br />

ユーザー ガイド』[参照 1] および『7 <strong>シリーズ</strong> <strong>FPGA</strong> パ ッ ケージおよびピ ン配置仕様』 [参照 2]<br />

を参照して く ださい。<br />

• [Memory Type] – デザ イ ンで使用する メ モ リ タ イ プを選択し ます。<br />

• [Memory Part] – デザ イ ンで使用する メ モ リ デバイ ス を選択し ます。リ ス ト の中か ら選択する<br />

か、 新規デバイ ス を作成し ます。<br />

• [Data Width] – 選択し た メ モ リ タ イ プに基づいてデータ幅の値を選択し ます。 ド ロ ッ プダ ウ<br />

ン リ ス ト に、 選択し たデバイ スでサポー ト されるデータ幅の値が表示される ため、 その中から<br />

1 つを選択し ます。 通常、 こ れら の値はデバイ ス データ幅の倍数にな り ますが、 例外も あ り ま<br />

す。 た と えば、 x16 コンポーネントのデフォルトのデータ幅は 16 ビッ トですが、8 ビッ トも有<br />

効値 と な り ます。<br />

• [Data Mask] – このオプションを ON にする と、データ マスク ピ ンが割 り 当て ら れます。デー<br />

タ マスク ピ ンの割 り 当てを解除し て ピ ン効率を上げる場合は、 こ のオプシ ョ ンの選択を解除<br />

してください。 データ マスク機能をサポート しない<strong>メモリ</strong> デバ イ ス の場合、 こ のオプシ ョ ン<br />

は無効です。<br />

• [Ordering] – <strong>メモリ</strong> バスの効率を向上させるために、 <strong>メモリ</strong> コント ローラーがコマンドの順<br />

序を並べ替え る機能です。<br />

• [Memory Details] – [Controller Options] ページの下部 (19 ページの図 1-11) に、 選択し た メ<br />

モ リ のコ ン フ ィ ギ ュ レーシ ョ ンに関する詳細が表示されます (図 1-12)。<br />

X-Ref Target - Figure 1-12<br />

図 1-12 : 選択し た メ モ リ のコ ン フ ィ ギュ レーシ ョ ンの詳細<br />

<strong>UG586</strong>_c1_20_091410<br />

20 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

1. 適切な周波数を選択し ます。 ド ロ ッ プダ ウ ン リ ス ト を使用する か、 キーボー ド か ら有効な値を<br />

入力し ます。 入力値は、 サポー ト さ れる最大/最小周波数範囲内に制限さ れます。<br />

2. [Memory Part] リストから目的の<strong>メモリ</strong> デバイ ス を選択し ます。 希望するデバイ スが リ ス ト に<br />

ない場合は、 新規 メ モ リ デバイ ス を作成で き ます。 カ ス タ ム デバイ ス を作成する には、<br />

[Memory Part] のプルダウン リストの下にある [Create Custom Part] をクリ ックします。<br />

図 1-13 の よ う な画面が表示さ れます。<br />

X-Ref Target - Figure 1-13<br />

図 1-13 : カスタム デバイ スの作成<br />

[Create Custom Part] ページには、 [Select Base Part] プルダウ ン リ ス ト で選択し た メ モ リ コ<br />

ンポーネン ト のすべての仕様が表示されます。<br />

3. [Enter New Memory Part Name] に新しい メ モ リ デバイスの名前を入力します。<br />

4. 基準 と な る メ モ リ デバイ ス を [Select Base Part] プルダウ ン リストから選択します。<br />

5. 必要に応じ て、 [Value] 欄の値を変更し ます。<br />

<strong>UG586</strong>_c1_21_110610<br />

6. 要件に応じ て、 [Row Address]、 [Colum Address] および [Bank Address] の値を選択し ます。<br />

7. すべてのフ ィ ール ド の編集が終わった ら、 [Save] をク リ ッ ク します。 指定した名前で新しいデ<br />

バイ スが保存さ れます。 こ こ で作成し たデバイ スは、 [Controller Options] ページの [Memory<br />

Part] リ ス ト に追加さ れます。 データベースに も保存さ れる ため、 再利用し てデザ イ ン を作成す<br />

ることができます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 21<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

8. [Next] をクリ ックして [Memory Options] ページを表示し ます。ま たは、[Memory Type] ペー<br />

ジで [AXI Enable] が ON になっている場合は、[AXI Parameter Options] ページが表示 さ れま<br />

す。<br />

AXI パラ メーター オプシ ョ ン<br />

こ のページでは、 コ ン ト ローラー用の AXI パラ メーターを選択します (図 1-14)。 一般的な AXI パ<br />

ラメーターと AXI4 イ ン ターフ ェ イ ス専用のパ ラ メ ーターがあ り ます。 詳細は、 ARM® AMBA®<br />

の仕様書 [参照 3] を参照して く ださい。<br />

AXI4 <strong>インターフェイス</strong> ロ ジ ッ ク 専用の次のパ ラ メ ーターを設定し ます。<br />

• [Address Width]、 [AXI ID Width] – XPS か ら起動し た場合、 ア ド レ ス幅 と ID 幅は XPS で<br />

自動設定さ れる ため、 オプシ ョ ンは表示 さ れません。<br />

• [Base]、 [High Address] – <strong>メモリ</strong> コ ン ト ローラーへ割 り 当て ら れる シ ス テム ア ド レ ス空間を<br />

設定し ます。 こ れ ら の値は、 4KB 以上かつ 2 の累乗で、 ベース アドレスは<strong>メモリ</strong>空間のサイ<br />

ズに揃 う 必要があ り ます。<br />

• [Narrow Burst Support] – こ のオプシ ョ ン を無効にする と 、AXI4 <strong>インターフェイス</strong>はリ ソー<br />

ス を節約し て タ イ ミ ン グ を向上させる ために、AXI の狭いバース ト を処理する ロ ジ ッ ク を削除<br />

し ます。 通常 XPS は、 接続 さ れてい る AXI マス ターの既知の動作に基づいて、 狭いバース ト<br />

のサポー ト を無効にで き る かど う かを自動的に計算し ます。<br />

EDK フ ローでは、 推論さ れた AXI インターコネクト パ ラ メ ーター設定も利用可能です。 イ ン<br />

ターコネク ト パ ラ メ ーターの詳細、 および XPS でパラ メ ーターがどのよ う に処理されるかに<br />

ついては、 EDK の資料を参照し て く だ さ い。<br />

• [Arbitration Scheme] – 読み出し ア ド レ ス チャネルと書き込みアドレス チャネル間のアービ<br />

ト レーシ ョ ン方法を選択し ます。<br />

22 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-14<br />

図 1-14 : AXI パラ メーター オプシ ョ ンの設定<br />

CORE Generator の使用方法<br />

<strong>UG586</strong>_c1_22_090511<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 23<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-15<br />

DDR3 <strong>メモリ</strong>のパラメーター オプシ ョ ンの設定<br />

コ ン ト ローラーの仕様でサポー ト さ れる メ モ リ モード レジスタの値を選択できます (図 1-15)。<br />

図 1-15 : <strong>メモリ</strong> オプシ ョ ンの設定<br />

モード レ ジ ス タ の値は、初期化中に ロー ド モード レ ジ ス タへ書き込まれます。DDR2 および DDR3<br />

SDRAM では、 バース ト 長 8 (BL8) のみサポー ト されています。<br />

DDR2 SDRAM <strong>インターフェイス</strong>には、 [Memory Clock Selection] という <strong>メモリ</strong> クロック数を選<br />

択する オプシ ョ ンがあ り ます。 各コ ンポーネン ト に メ モ リ クロック数を設定するオプションがあ<br />

り 、 設定可能な大値は 4 です。<br />

[Next] をク リ ックして [<strong>FPGA</strong> Options] ページへ進みます。<br />

24 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-16<br />

<strong>FPGA</strong> オプシ ョ ン<br />

図 1-16 に、 [<strong>FPGA</strong> Options] ページを示し ます。<br />

図 1-16 : <strong>FPGA</strong> オプシ ョ ンの設定<br />

CORE Generator の使用方法<br />

• [System Clock] – sys_clk 信号ペアの ク ロ ッ ク タイプ ([Single-Ended] (シングルエンド)、<br />

[Differential] (差動)、 または [No Buffer] (バッファーなし)) を選択します (EDK フローでは選<br />

択不可)。 [No Buffer] を選択する と 、 IBUF プリ ミティブが RTL コードでインスタンシエート<br />

されず、 システム クロックにピンが割り当てられません。<br />

• [Reference Clock] – clk_ref 信号ペアの ク ロ ッ ク タイプ ([Single-Ended] (シングルエンド)、<br />

[Differential] (差動)、 [No Buffer] (バッファーなし)、 または [Use System Clock] (システム ク<br />

ロックを使用)) を選択します (EDK フ ローでは選択不可)。[Use System Clock] オプシ ョ ンは、<br />

入力周波数が 200MHz の場合 ([Input Clock Period] が 5000ps (200MHz)) に表示されます。<br />

[No Buffer] を選択する と、 IBUF プリ ミティブが RTL コードでインスタンシエート されず、<br />

基準 ク ロ ッ ク にピ ンが割 り 当て られません。<br />

• [Debug Signals Control] - このオプションを有効にすると、 キャ リブレーション ステータス<br />

とユーザー ポー ト 信号を design_top モジュールの ChipScope Analyzer モジュールに<br />

ポー ト マップできます (EDK フ ローでは使用不可)。 これにより、ユーザー <strong>インターフェイス</strong><br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 25<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-17<br />

ポー ト の ト ラ フ ィ ッ ク を ChipScope Analyzer で簡単に確認でき ます。 生成し たデザイ ンをデ<br />

ザインの par フォルダーにある ise_flow.bat を使用してバッチ モー ド で実行する と、<br />

CORE Generator ツールが呼び出されて ChipScope Analyzer モジュール (NGC ファイル) を<br />

生成し ます。 こ のオプシ ョ ン を [OFF] にする と デバッ グ信号は design_top モジュールには<br />

接続さ れません。 こ の場合、 ChipScope Analyzer モジュールは design_top モジュールにイ<br />

ンスタンシエート されず、 CORE Generator ツールは ChipScope Analyzer モジュールを生成<br />

しません。 論理シミュレーションでは、 デバッグ ポー ト は常に無効です。<br />

• [Sample Data Depth] – デバ ッ グ ロ ジ ッ ク で使用する ChipScope ILA コアのサンプル デー<br />

タの深さを選択します。 このオプションは [Debug Signals for Memory Controller] オプシ ョ ン<br />

を ON にする と 選択可能 と な り ます。<br />

• [Internal Vref Selection] – データ グループ バイ トで内部 Vref を使用する と 、 VREF ピンを<br />

通常の I/O ピンとして使用できます。 [Internal Vref] オプシ ョ ンは、 データ レー ト が 800Mb/s<br />

以下の場合のみ使用し て く だ さ い。<br />

• [IO Power Reduction] – コ ン ト ローラーがア イ ド ル状態にな る と 自動的に DQ および DQS<br />

の IBUF を無効に し て、 全体的な I/O 消費電力を削減し ます。<br />

[Next] をク リ ックして DCI の設定ページへ進みます (図 1-17)。<br />

図 1-17 : DCI の設定<br />

<strong>UG586</strong>_c1_29_090511<br />

26 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-18<br />

CORE Generator の使用方法<br />

• [Digitally Controlled Impedance (DCI)] – <strong>FPGA</strong> のオンチ ッ プ内部抵抗を終端処理に使用で<br />

きるようにします。DQ 信号および DQS/DQS# 信号には DCI を必ず使用し て く だ さ い。 ピ ン<br />

配置およびバン ク 選択に よ っては、 DCI のカスケードが必要な場合があ り ます。 DCI は HP<br />

(High Performance) バン ク で利用で き ます。<br />

• [Internal Termination for High Range Banks] – 内部終端のオプシ ョ ンは、 40、 50、 60Ω ま<br />

たは無効に設定で き ます。 こ のオプシ ョ ンは HR (High Range) バン ク でのみ選択で き ます。<br />

• [DCI Cascade] – アドレス/制御および reset_n ポー ト を割 り 当てるため、 HP (High<br />

•<br />

Performance) バンクの VRN/VRP ピンを有効にします。<br />

[Pin/Bank Selection Mode] – こ こ では、 既存のピン配置を指定し てそのピン配置に合わせた<br />

RTL を生成する か、 新規デザ イ ン用のバン ク を選択で き ます。 図 1-18 に、 既存のピン配置を<br />

使用し た場合のオプシ ョ ン を示し ます。 各信号に対し て適切な ピ ン を割 り 当て る必要があ り ま<br />

す。 バン ク を選択する と 、 リ ス ト に表示 さ れる ピ ンが絞 り 込まれます。 ピ ン を選択する前に必<br />

ずし も バン ク を選択する必要はあ り ません。 [Validate] をクリ ックすると、MIG のピ ン配置規<br />

則に基づいてチェ ッ ク が行われます。 [Validate] をク リ ックして MIG DRC 検証が完了する ま<br />

で次のページへ進むこ と はで き ません。<br />

図 1-18 : ピン/バンクの選択<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 27<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-19<br />

バン クの選択<br />

こ のページでは、 メ モ リ イ ン ターフ ェ イ ス用のバイ ト を選択し ます。 次の よ う な異な る メ モ リ 信号<br />

に対し てバイ ト を選択で き ます。<br />

• ア ド レ ス信号 と 制御信号<br />

• データ信号<br />

図 1-19 : バン クの選択<br />

設定を カ ス タ マ イ ズする には [Deselect Banks] を ク リ ッ ク し、 適切なバン ク 信号および メ モ リ 信号<br />

を選択し ますデフ ォル ト の設定を使用する場合は [Next] を ク リ ッ ク し て次のページへ進みます。<br />

バン ク の選択を解除する には、 [Deselect Banks] をクリ ックします。デフォルト設定に戻すには、<br />

[Restore Defaults] をクリ ックします。<br />

デバイ スの HP バンクの Vccaux_io グループは ... で表示 さ れ て い ま す。 こ れ ら の グ ループ で<br />

Vccaux_io はすべてのバン ク に共通です。 メ モ リ イ ン ターフ ェ イ スでは、 使用するすべてのバン ク<br />

で Vccaux_io が共通の必要があ り ます。 VCCAUX_IO の制約は、 要求さ れたデータ レー ト に合わ<br />

せて MIG が自動的に設定し ます。<br />

SSI テクノロジで実装されたデバイスでは、 SLR (Super Logic Region) は各バン ク のヘッ ダーの番<br />

号を付けて表されます (SLR 1 など)。イ ン ターフ ェ イ スは複数の SLR をまたぐことはできません。<br />

28 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-20<br />

CORE Generator の使用方法<br />

こ のページでは、 シ ス テム信号のピ ン を選択し ます (図 1-20)。 MIG ツールでは、 必要に応じて外<br />

部ピ ン と 内部接続のどち ら も選択で き ます。<br />

図 1-20 : システム ピンの選択<br />

• [sys_clk] – <strong>メモリ</strong> <strong>インターフェイス</strong>のシステム ク ロ ッ ク 入力で、 通常は低ジ ッ ターの外部 ク<br />

ロック ソ ースに接続し ます。 [<strong>FPGA</strong> Options] ページ (図 1-16) の [System Clock] の選択に基<br />

づいてシングルエン ド 入力ま たは差動ペアを選択し ます。 sys_clk 入力は メ モ リ インターフェ<br />

イスと同じカラムにある必要があります。このピンを<strong>メモリ</strong> <strong>インターフェイス</strong>と同じバンクに<br />

接続し た場合、 MIG ツールは DIFF_SSTL15 や SSTL15 など<strong>メモリ</strong> <strong>インターフェイス</strong>と互換<br />

性のあ る I/O 規格を選択し ます。 sys_clk が<strong>メモリ</strong> <strong>インターフェイス</strong> バン ク で未接続の場合、<br />

MIG ツールは LVCMOS18 や LVDS な どの適切な規格を選択し ます。UCF は生成後に必要に<br />

応じて修正できます。<br />

• [clk_ref] – IDELAY 制御の基準周波数入力です。 200MHz の入力です。 clk_ref 入力は内部で<br />

生成する こ と も、 外部 ソースに接続する こ と も で き ます。 [<strong>FPGA</strong> Options] ページ (図 1-16) で<br />

選択し た [System Clock] に基づいてシン グル入力ま たは差動ペアのいずれかを選択で き ます。<br />

I/O 規格は sys_clk と 同様の方法で選択さ れます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 29<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

• [sys_rst] – 内部で生成ま たは外部ピ ンに よ って駆動さ れる シ ス テム リ セ ッ ト 入力です。 HP バ<br />

ンクには LVCMOS18、 HR バンクには LVCMOS25 など、 入力に対する適切な I/O 規格を<br />

MIG ツールが選択し ます。<br />

• [init_calib_complete] – メ モ リ 初期化 と キ ャ リ ブレーシ ョ ンが完了し、 イ ン ターフ ェ イ スの使<br />

用準備がで き た こ と を示す出力です。 こ の信号は通常は内部でのみ使用し ますが、 必要に応じ<br />

て ピ ンに出力で き ます。<br />

• [tg_compare_error] – サンプル デザイ ンの ト ラ フ ィ ッ ク ジ ェ ネレーターがデータ比較でエ<br />

ラーを検出し た こ と を示す出力です。 こ の信号はサンプル デザイ ンでのみ生成され、 ユーザー<br />

デザイ ンには含まれません。 この信号は通常ピンには出力されませんが、 必要に応じ て出力さ<br />

せる こ とが可能です。<br />

[Next] をク リ ックして [Summary] ページへ進みます。<br />

サマ リ<br />

[Summary] ページには、 7 <strong>シリーズ</strong> <strong>FPGA</strong> の<strong>メモリ</strong> コアの選択、 <strong>インターフェイス</strong> パラ メーター、<br />

CORE Generator ツールのオプショ ン、 アクテ ィブ プロジェク トの <strong>FPGA</strong> オプシ ョ ンなど、 すべて<br />

の詳細が表示されます (図 1-21)。EDK フ ローではこ のページが最後と な る ため、[Next] ボタンの代<br />

わりに [Finish] が表示され、 これを ク リ ッ ク し て変更箇所を保存する と XPS ツールへ戻り ます。<br />

30 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-21<br />

<strong>メモリ</strong> モデルのライセンス<br />

図 1-21 : サマ リ<br />

CORE Generator の使用方法<br />

<strong>UG586</strong>_c1_38_110610<br />

MIG ツールでは、 DDR2 または DDR3SDRAM などの<strong>メモリ</strong> をシミ ュレーショ ン用に、 指定した<br />

ベンダーのメ モ リ モデルを出力でき ます (EDK フ ローでは使用不可)。 sim フォルダー内の<strong>メモリ</strong><br />

モデルへア ク セスする には、 ラ イ セン ス契約に合意する必要があ り ます (図 1-22)。 ライセンス契約<br />

をお読みにな り 、 [Accept] を ク リ ッ ク し て く だ さ い。 ラ イ セン ス契約に合意さ れない場合は、 メ モ<br />

リ モデルは使用で き ません。 デザ イ ンのシ ミ ュ レーシ ョ ンには、 メ モ リ モデルが必要です。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 31<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-22<br />

PCB 情報<br />

図 1-22 : ライセンス契約<br />

[Next] をク リ ックして [PCB Information] ページへ進みます。<br />

このページには、 MIG ツールで生成し たデザ イ ン を使用する ボー ド の設計に必要な PCB 関連の情<br />

報が表示さ れます。 [Next] をク リ ックして [Design Notes] ページへ進みます。<br />

デザイ ン ノート<br />

[Generate] をクリ ックしてデザイン ファイルを生成します (EDK フ ローでは使用不可)。 MIG ツー<br />

ルでは、2 つの出力デ ィ レ ク ト リ (example_design と user_design) が生成されます。 デザイ ン<br />

の生成が完了する と MIG の GUI 画面が閉じ ます。<br />

MIG サンプル デザイ ン作成の ISE Project Navigator フロー<br />

CORE Generator ツールの MIG フ ローに従ってデザ イ ン を作成し ます。<br />

1. DESIGN_NAME/example_design/par へデ ィ レ ク ト リ を変更 (cd) します。<br />

<strong>UG586</strong>_c1_39_110610<br />

32 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

2. create_ise.sh ス ク リ プ ト を実行し ます。こ れは、set_ise_prop.tcl という Tcl スクリプ<br />

ト を実行し ます。 こ れで test.xise ファイルが作成されます。<br />

3. ISE Project Navigator を起動して、 test.xise プロジェク ト を開きます。<br />

4. トップ モジュールの example_top をインプリ メント します。<br />

MIG のデ ィ レ ク ト リ 構造と フ ァ イルの説明<br />

概要<br />

出力デ ィ レ ク ト リ の構造<br />

フォルダー名 が付いた MIG 出力 (EDK フ ロー以外) が生成されます。<br />

注記 : EDK フ ローの場合、 MIG プロジェク トは に保存され、 XPS プ ロ ジ ェ ク ト と 共に維持 さ れます。 ピ ンの位置情報を<br />

含む MIG UCF は、 EDK Project Directory/__xps/Instance Name/mig.ucf に書き込ま<br />

れ、 ビル ド プロセス中に EDK Project Directory/implementation/Instance Name_<br />

wrapper/Instance Name.ucf で EDK コア レベルの UCF へ変換 さ れます。<br />

図 1-23 に、 選択し た メ モ リ コント ローラー (MC) デザイ ンの MIG ツールからの出力ディ レ ク ト<br />

リ構造を示します。 ディレク ト リには、 次の 3 つのフ ォルダーが作成されま<br />

す。<br />

• docs<br />

example_design<br />

• user_design<br />

X-Ref Target - Figure 1-23<br />

図 1-23 : ディレクトリ構造<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 33<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

デ ィ レ ク ト リ と フ ァ イルの内容<br />

ここでは、7 <strong>シリーズ</strong> <strong>FPGA</strong> コ アのデ ィ レ ク ト リ と 関連フ ァ イルについて説明し ます。<br />

/docs<br />

このフォルダーには PDF 形式の資料が格納さ れています。<br />

/example_design/<br />

このディレク ト リには、 par、 rtl、 sim、 synth の 4 つのフ ォルダーがあ り ます。<br />

example_design/rtl<br />

このディレク ト リには、 サンプル デザイ ンが含まれます (表 1-1)。<br />

表 1-1 : example_design/rtl ディレクトリに含まれるモジュール<br />

名前 説明<br />

example_top.v/vhd ユーザー デザイ ンを 7 <strong>シリーズ</strong><strong>シリーズ</strong> <strong>FPGA</strong> の<strong>メモリ</strong> イン<br />

ターフェイス<br />

ジュールです。<br />

コ アに接続する サンプル デザ イ ンの最上位モ<br />

example_design/rtl/traffic_gen<br />

このディレク ト リには、 7 <strong>シリーズ</strong><strong>FPGA</strong> <strong>メモリ</strong> コント ローラーにスティ ミュラスを与える ト ラ<br />

フィック ジェネレーターが含まれます (表 1-2)。<br />

表 1-2 : example_design/rtl/traffic_gen ディレクトリに含まれるモジュール<br />

名前 説明<br />

memc_traffic_gen.v/vhd トラフィック ジ ェ ネレーターの最上位モジ ュールです。<br />

cmd_gen.v/vhd コマンド ジェネレーターです。コマンド、アドレスおよび<br />

バース ト 長を個別に生成する よ う に制御し ます。<br />

cmd_prbs_gen.v/vhd PRBS (Pseudo-Random Binary Sequence) コマンド、アド<br />

レ ス、 バース ト 長を生成する PRBS ジェネレーターです。<br />

memc_flow_vcontrol.v/vhd <strong>メモリ</strong> コント ローラー コアと cmd_gen、 read_data_<br />

path および write_data_path モジュール間のフロー<br />

制御ロ ジ ッ ク を生成し ます。<br />

read_data_path.v/vhd 読み出しデータパスの最上位モジ ュールです。<br />

read_posted_fifo.v/vhd <strong>メモリ</strong> コ ン ト ローラーへ送信さ れた読み出し コ マン ド を<br />

格納し、 その FIFO 出力を使用し て読み出しデータ の比較<br />

用の予想データ を生成し ます。<br />

rd_data_gen.v/vhd mcb_flow_control.v/vhd モジ ュールに対する読み出<br />

し信号および Ready 信号の タ イ ミ ングを制御し ます。<br />

write_data_path.v/vhd 書き込みデータパスの最上位モジ ュールです。<br />

wr_data_g.v/vhd mcb_flow_control.v/vhd モジュールに対する書き込<br />

み信号および Ready 信号の タ イ ミ ングを制御し ます。<br />

34 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


example_design/par<br />

CORE Generator の使用方法<br />

表 1-2 : example_design/rtl/traffic_gen ディレクトリに含まれるモジュール (続き)<br />

s7ven_data_gen.v/vhd 複数の異な るデータ パターンを生成します。<br />

a_fifo.v/vhd LUT RAM を使用した同期 FIFOです。<br />

data_prbs_gen.v/vhd PRBS データ パターン を生成する 32 ビッ ト LFSR ( リニ<br />

ア フィードバック シフ ト レジスタ) です。<br />

init_mem_pattern_ctr.v/vhd トラフィック ジ ェ ネレーター用のフ ロー制御ロ ジ ッ ク を<br />

生成し ます。<br />

traffic_gen_top.v/vhd トラフィック ジ ェ ネレーターの最上位モジ ュールで、<br />

memc_traffic_gen モジュールと init_mem_pattern_ctr モ<br />

ジュールで構成されます。<br />

表 1-3 に、 デ ィ レ ク ト リ に含まれる フ ァ イルの一覧を示し ます。<br />

表 1-3 : example_design/par ディレクトリに含まれるファイル<br />

名前 説明<br />

example_top.ucf コアおよびサンプル デザイ ンの UCF です。<br />

create_ise.bat このファイルをダブルク リ ックすると、 デザインに推奨される<br />

ビルド オプシ ョ ンを含む ISE プロジェク トが作成されます。<br />

ISE のプロジェ ク ト フ ァ イルをダブル ク リ ッ ク する と 、 すべて<br />

のプロジェ ク ト 設定が完了した GUI モード で ISE が起動し ま<br />

す。<br />

ise_flow.bat このスク リプト フ ァ イルは、デザ イ ンの合成、ビル ド 、マ ッ プお<br />

よび配置配線を実行し、 必要なオプシ ョ ン をすべて設定し ます。<br />

推奨さ れる ビル ド オプシ ョ ン を確認する場合は、 こ のフ ァ イル<br />

を参照して ください。<br />

注意 : component name ディレク ト リの par フォルダーにある ise_flow.bat ファイルに<br />

は、 デザイ ンで推奨される ビル ド オプシ ョ ンが含まれています。 こ の推奨オプシ ョ ンに従わな<br />

い場合は、 予期し ない結果が生成さ れる可能性があ り ます。<br />

/example_design/sim<br />

表 1-4 に、 example_design/sim デ ィ レ ク ト リ に含まれる フ ァ イルの一覧を示し ます。<br />

表 1-4 : example_design/sim ディレクトリに含まれるファイル<br />

ddr2_model.v<br />

ddr3_model.v<br />

名前 説明<br />

名前 説明<br />

ddr2_model_parameters.vh<br />

ddr3_model_parameters.vh<br />

DDR2 および DDR3 SDRAM の<strong>メモリ</strong> モデルです。<br />

DDR2 および DDR3 SDRAM の<strong>メモリ</strong> モデルのパラ メ ー<br />

ター設定が含まれます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 35<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-4 : example_design/sim ディレクトリに含まれるファイル (続き)<br />

名前 説明<br />

sim.do ModelSim シミュレータのスクリプト ファイルです。<br />

sim_tb_top.v/vhd シ ミ ュ レーシ ョ ンの最上位フ ァ イルです。<br />

/user_design<br />

user_design フォルダー内には 2 つのフ ォルダー (rtl、 ucf) およびユーザーの最上位モジ ュー<br />

ル component_name.v/vhd が含まれます。 ユーザー デザイ ンを 7 シ リーズ <strong>FPGA</strong> の<strong>メモリ</strong> イ<br />

ンターフェイス コ アに接続する サンプル デザ イ ンの最上位モジ ュールです。<br />

user_design/rtl/clocking<br />

このディレク ト リには、 ユーザー デザイ ンが含まれます (表 1-5)。<br />

表 1-5 : user_design/rtl/clocking ディレクトリに含まれるモジュール<br />

名前 説明<br />

clk_ibuf.v/vhd 入力 ク ロ ッ ク バッファーをインスタンシエート します。<br />

iodelay_ctrl.v/vhd IDELAY の使用に必要な IDELAYCTRL プリ ミティブをインス<br />

タンシエート します。<br />

infrastructure.v/vhd クロックの生成/分配、および リ セ ッ ト の同期化をサポー ト し ます。<br />

user_design/rtl/controller<br />

このディレク ト リには、 サンプル デザイ ンにイ ン ス タ ンシエー ト される メ モ リ コント ローラーが<br />

含まれます (表 1-6)。<br />

表 1-6 : user_design/rtl/controller ディレクトリに含まれるモジュール<br />

名前 説明<br />

arb_mux.v/vhd アービ ト レーシ ョ ン ロ ジ ッ ク の最上位モジ ュールです。<br />

arb_row_col.v/vhd バンク マシンから Row コマンド と Column コ マン ド の送信要求<br />

を受信します。 要求がある場合は、 各ステートに対して 1 つの要<br />

求を選択し ます。<br />

arb_select.v/vhd バンク マシンが提供する要求情報か ら Row コマンド と Column<br />

コマンドを選択します。<br />

bank_cntrl.v/vhd こ の構造ブ ロ ッ ク は、バン ク マシン を構成する 3 つのサブブロ ッ<br />

クをインスタンシエートします。<br />

bank_common.v/vhd すべてのバン ク マシンに関する さ ま ざ ま なデータ情報を計算し<br />

ます。<br />

bank_compare.v/vhd バンク マシンの要求を格納し ます。<br />

bank_mach.v/vhd 最上位のバン ク マシン ブロックです。<br />

bank_queue.v/vhd バンク マシンのキュー コント ローラーです。<br />

36 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-6 : user_design/rtl/controller ディレクトリに含まれるモジュール (続き)<br />

bank_state.v/vhd 主要バン ク ステート マシンです。<br />

col_mach.v/vhd DQ バスを管理します。<br />

mc.v/vhd <strong>メモリ</strong> コ ン ト ローラーの最上位モジ ュールです。<br />

user_design/rtl/ip_top<br />

このディレク ト リには、 ユーザー デザイ ンが含まれます (表 1-7)。<br />

user_design/rtl/phy<br />

CORE Generator の使用方法<br />

mem_intfc.v/vhd コント ローラーおよび PHY を イ ン ス タ ンシエー ト する最上位の<br />

<strong>メモリ</strong> <strong>インターフェイス</strong> ブロックです。<br />

rank_cntrl.v/vhd さまざまなランク レベルのタ イ ミ ング パラ メーターを管理します。<br />

rank_common.v/vhd すべての ラ ン ク マシンに共通する ロ ジ ッ ク を含みます。 ク ロ ッ ク<br />

プリ スケーラおよびリ フレッシュや周期的な読み出し動作用の<br />

アービ タ を含みます。<br />

rank_mach.v/vhd 最上位の ラ ン ク マシン構造ブロ ッ クです。<br />

round_robin_arb.v/vhd 単純な ラ ウ ン ド ロビン アービ タです。<br />

表 1-7 : user_design/rtl/ip_top ディレクトリに含まれるモジュール<br />

名前 説明<br />

mem_intfc.v/vhd コント ローラーおよび PHY を イ ン ス タ ンシエー ト する最上位<br />

の<strong>メモリ</strong> <strong>インターフェイス</strong> ブロックです。<br />

memc_ui_top.v/vhd 最上位の メ モ リ コント ローラー モジュールです。<br />

このディレク ト リには、7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong>の PHY インプリ メンテーショ<br />

ンが含まれます (表 1-8)。<br />

表 1-8 : user_design/rtl/phy ディレクトリに含まれるモジュール<br />

名前 説明<br />

ddr_byte_group_io<br />

シングル バイ ト レーン用のパラ メ ーター指定可能な I/O ロジック イ<br />

ンスタンシエーションと I/O 終端を含みます。<br />

ddr_byte_lane<br />

出力ま たは入力バイ ト レーン内で必要なプリ ミ テ ィブ インスタンシ<br />

エーシ ョ ン を含みます。<br />

ddr_calib_top メ モ リ 物理層イ ン ターフ ェ イ スの最上位モジ ュールです。<br />

ddr_if_post_fifo PHASER IN_FIFO の深さ を最大 4 エン ト リ 拡張し ます。<br />

ddr_mc_phy<br />

ddr_mc_phy_wrapper<br />

名前 説明<br />

最大 3 つの I/O バンク (それぞれ 4 レーンの PHY プリ ミティブを使用<br />

) を イ ン ス タ ンシエー ト するパラ メ ーター指定可能な ラ ッ パーです。<br />

このラッパー ファイルには、MC_PHY モジュールのインスタンシ<br />

エーシ ョ ンが含まれ、MC_PHY モジュールとユーザー DDR2/DDR3<br />

ポー ト 間でのベク ターの再マ ッ ピングを処理し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 37<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-8 : user_design/rtl/phy ディレクトリに含まれるモジュール (続き)<br />

ddr_of_pre_fifo PHASER OUT_FIFO の深さ を最大 4 エン ト リ 拡張し ます。<br />

ddr_phy_4lanes I/O バン ク のパ ラ メ ーター指定可能な 4 レーン PHY です。<br />

ddr_phy_ck_addr_cmd_<br />

delay<br />

user_design/rtl/ui<br />

このディレク ト リには、 <strong>メモリ</strong> コント ローラーのネイティブ <strong>インターフェイス</strong>とユーザー アプ リ<br />

ケーシ ョ ン間を調停する ユーザー <strong>インターフェイス</strong> コードが含まれています (表 1-9)。<br />

/user_design/ucf<br />

ア ド レ スおよび制御信号に必要な遅延を与え る ロ ジ ッ ク を含みます。<br />

ddr_phy_dqs_delay DQS と DQ の位相オフセ ッ ト ロジックを含みます。<br />

ddr_phy_dqs_found_cal<br />

ddr_phy_init<br />

読み出し レべ リ ングのキ ャ リ ブレーシ ョ ン ロジック (PHASER_IN<br />

DQSFOUND キャ リブレーション ロジック) を含みます。<br />

メ モ リ の初期化、 および初期化 と キ ャ リ ブレーシ ョ ン中の全体的なマ<br />

スター ス テー ト 制御を含みます。<br />

ddr_phy_rdlvl<br />

読み出し レべ リ ング ステージ 1 キャ リブレーション ロジックを含み<br />

ます (PRBS パターンでウィンドウ検出)。 ddr_phy_top 物理層の最上位モジ ュールです。<br />

ddr_phy_wrcal 書き込みキ ャ リ ブレーシ ョ ン ロジックを含みます。<br />

ddr_phy_wrlvl 書き込みレべ リ ング ロジックを含みます。<br />

ddr_prbs_gen<br />

名前 説明<br />

この PRBS モジュールは多対 1 のフ ィードバッ ク メカニズムを使用<br />

して 2n シーケ ン ス を生成し ます。<br />

表 1-9 : user_design/rtl/ui ディレクトリに含まれるモジュール<br />

名前 説明<br />

ui_cmd.v/vhd ユーザー <strong>インターフェイス</strong>のコマンド ポー ト です。<br />

ui_rd_data.v/vhd ユーザー イ ン ターフ ェ イ スの読み出しバ ッ フ ァ ーです。 メ モ リ コント<br />

ローラーか ら返 さ れた読み出しデータ を、 要求順に再び並べ替え ます。<br />

ui_wr_data.v/vhd ユーザー <strong>インターフェイス</strong>の書き込みバッファーです。<br />

ui_top.v/vhd <strong>メモリ</strong> コント ローラー ユーザー イ ン ターフ ェ イ スの最上位モジ ュー<br />

ルです。<br />

表 1-10 に、 user_design/ucf デ ィ レ ク ト リ に含まれる フ ァ イルの一覧を示し ます。<br />

表 1-10 : user_design/ucf ディレクトリに含まれるファイル<br />

名前 説明<br />

.ucf コアおよびユーザー デザイ ンの UCF ファイルです。<br />

38 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


ピ ン変更の検証およびデザイ ンの更新<br />

CORE Generator の使用方法<br />

こ の機能は、バン ク の選択、バイ ト の選択、ピ ンの割 り 当てに関し て入力 UCF を検証し ます。[Verify<br />

Pin Changes and Update Design] ページの [Validate] を ク リ ッ クする と、エラー と警告が別のダ イ ア<br />

ログ ボ ッ ク スに表示さ れます。 こ の機能は、 MIG ツールでデザイ ン を生成後にピ ン配置を変更し た<br />

場合に UCF を検証する際に有用です。生成し た .prj ファイル (未修正の元の .prj ファイル) およ<br />

び検証が必要な UCF を MIG ツールで読み込みます。 CORE Generator ツールで再カスタマイズの<br />

オプシ ョ ンを選択してプロジェ ク ト を再ロード し ます。 MIG の DRC にパス し なければデザイ ンは<br />

生成で き ません。 ピ ン配置の検証に関する警告は、 こ こ では関係ないので無視し ます。 UCF の検証<br />

のみでは不十分なため、 実際にデザイ ンを生成し、 ク ロ ッ クおよび PHASER に関する制約を更新し<br />

た UFC、 および各種 MAP パ ラ メ ーターを更新し た最上位の RTL モジュールを得る必要があ り ま<br />

す。<br />

入力 UCF か ら検証さ れた規則を次に示し ます。<br />

• 1 つのピ ンが複数の信号に割 り 当て ら れてい る場合、 エ ラーが報告 さ れます。 UCF が一意性の<br />

属性を満た し ていない場合、 それ以上の検証は行われません。<br />

• 検証済みの共通規則<br />

• 1 つの イ ン ターフ ェ イ スは、 最大で 3 つの連続し たバン ク を またぐ こ と ができ ます。<br />

• <strong>インターフェイス</strong> バンクは <strong>FPGA</strong> の同じ カ ラ ムにあ る必要があ り ます。<br />

• <strong>インターフェイス</strong> バンクは HP (High Performance) バンクでも HR (High Range) バンク<br />

でもかまいません。 HP バン ク は高周波数用に使用し ます。<br />

• 選択し たデバイ スがス タ ッ ク ド シリコン インターコネクト テ ク ノ ロ ジを使用し てい る場<br />

合、 選択し た イ ン ターフ ェ イ ス バンクは同じ SLR 領域を持ってい る必要があ り ます。<br />

• 内部 VREF を使用する場合、 ま たはバン ク に入出力/入力ポー ト がない場合は、 VREF I/O<br />

を GPIO と し て使用する必要があ り ます。<br />

• 各信号の I/O 規格は、 選択し た コ ン フ ィ ギ ュ レーシ ョ ンに従って検証 さ れます。<br />

• 各信号の VCCAUX I/O を検証し、 供給される VCCAUX I/O が有効でない場合はエラー<br />

メ ッ セージが表示さ れます。<br />

• 検証済みのデータ ピンの規則<br />

• 1 つのス ト ローブ セ ッ ト に関連付け ら れてい る複数のピ ンは、同じバイ ト グループ内に割<br />

り 当て られる必要があ り ます。<br />

• ストローブ ペア (DQS) は、 DQSCC I/O ペアへ割 り 当て る必要があ り ます。<br />

• 1 つの <strong>FPGA</strong> バイ ト レーンに 2 つの異なる ス ト ローブ セ ッ ト に関連する ピ ン を含め る こ<br />

とはできません。<br />

• VREF I/O は内部 VREF を選択し た場合のみ使用で き ます。<br />

• 検証済みのア ド レ ス ピンの規則<br />

• ア ド レ ス信号を DDR3 SDRAM <strong>インターフェイス</strong>の ddr3_reset_n 信号以外のデータ バイ<br />

トと混在させることはできません。<br />

• ア ド レ ス信号を DDR2 SDRAM <strong>インターフェイス</strong>の ddr2_reset_n signal 信号以外のデー<br />

タ バイ ト と混在させるこ とはできません。 ddr2_reset_n ポー ト があ るのは RDIMM のみ<br />

です。<br />

• 孤立し たバイ ト レーンはい く つでも使用でき ます。<br />

• 検証済みのシ ス テム ピンの規則<br />

• システム クロック<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 39<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

- SR/MR CC I/O ペアのいずれかに割 り 当てる必要があ り ます。<br />

- <strong>メモリ</strong> バンク カラムに割り当てる必要があります。<br />

- システム ク ロ ッ ク の タ イ プにシングルエン ド を選択し た場合、同じバン ク に基準電圧<br />

ピンが割り当てられていないか、内部 VREF を使用しているかを確認する必要があ り<br />

ます。<br />

• 基準 ク ロ ッ ク<br />

- SR/MR CC I/O ペアのいずれかに割 り 当てる必要があ り ます。<br />

- システム ク ロ ッ ク の タ イ プにシングルエン ド を選択し た場合、同じバン ク に基準電圧<br />

ピンが割り当てられていないか、内部 VREF を使用しているかを確認する必要があ り<br />

ます。<br />

• ステータス信号<br />

- sys_rst 信号は VREF I/O が割 り 当て られていないバン ク に割 り 当て るか、内部 VREF<br />

を使用する必要があ り ます。<br />

- I/O 規格に互換性がないため、 こ れ ら の信号は メ モ リ 以外のバン ク に割 り 当て る必要<br />

があ り ます。 I/O 規格は最低 1.8V の LVCMOS とする必要があり ます。<br />

- これらの信号は 1 つの メ モ リ カ ラ ムに属する ため、 ハー ド 制約はな く 任意のカ ラ ムに<br />

割り当てることができますが、選択した<strong>メモリ</strong> バン ク の近 く にする こ と を推奨し ます。<br />

サンプル デザイ ンのク イ ッ ク スタート<br />

概要<br />

コ アの生成が正常に完了し た ら、ザイ リ ン ク スのイ ンプ リ メ ンテーシ ョ ン ツールを使用し てサンプ<br />

ル デザイ ンの HDL を処理できます。<br />

サンプル デザインのインプリ メンテーショ ン<br />

ise_flow.bat スクリプト フ ァ イルは、 デザ イ ンの合成、 変換、 マ ッ プ、 配置配線を実行し、 必<br />

要なオプシ ョ ン をすべて設定し ます。 推奨 さ れる ビル ド オプシ ョ ン を確認する場合は、 こ のフ ァ イ<br />

ルを参照し て く だ さ い。<br />

サンプル デザイ ンのシ ミ ュ レーシ ョ ン (標準的なユーザー <strong>インターフェイス</strong>を備える<br />

デザイ ン)<br />

MIG ツールは、 メモ リ コント ローラー (MC) にさまざまなト ラフィ ック データ パターン を生成す<br />

る ための合成可能なテ ス ト ベンチを提供し ます。 こ のテ ス ト ベンチは、 memc_ui_top ラッパー、<br />

ユーザー <strong>インターフェイス</strong>を介して ui_top コアへト ラフィ ック パターン を生成する<br />

traffic_generator、 および memc_ui_top コアへクロック リ ソース を提供する イ ン フ ラ ス ト<br />

ラクチャ コアで構成されています。図 1-24 に、 サンプル デザイ ン テス トベンチのブロック図を示<br />

します。<br />

40 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-24<br />

ddr2_sim_tb_Top or Ddr3_sim_tb_Top<br />

Example Design<br />

Traffic_gen_top<br />

Parameter:<br />

BEGIN_ADDR<br />

END_ADDR<br />

nCK_PER_CLK<br />

error<br />

User_design_top<br />

Memc_ui_top<br />

app_addr<br />

app_cmd<br />

app_en<br />

app_rdy<br />

app_hi_pri<br />

Ui_top<br />

app_wdf_data<br />

app_wdf_end<br />

app_wdf_mask<br />

app_wdf_wren<br />

app_wdf_rdy<br />

app_rd_data_end<br />

app_rd_data_valid<br />

app_rd_data<br />

Iodelayctrl Infrastructure<br />

Mem_Intfc<br />

図 1-24 : 合成可能なサンプル デザイ ンのブロ ッ ク図<br />

CORE Generator の使用方法<br />

DDR2/DDR3<br />

SDRAM<br />

<strong>UG586</strong>_c1_41_120311<br />

図 1-25 に、tb_top モジュールと memc_intfc モジ ュール間のシンプルな読み出し/書き込みト ラ<br />

ンザクシ ョ ンのシ ミ ュレーシ ョ ン結果を示します。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 41<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

MC<br />

cmd<br />

accept<br />

use_addr<br />

bank_mach_next<br />

data_buf_addr<br />

wr_data_en<br />

wr_data_addr<br />

wr_data_en<br />

wr_data_be<br />

rd_data_en<br />

rd_data<br />

Phy_top


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-25<br />

<br />

<br />

<br />

<br />

トラフィック ジェネレーターの動作<br />

<br />

<br />

図 1-25 : ユーザー イ ン タ ーフ ェ イ スでの読み出し および書き込みサイ クル<br />

<br />

<br />

<br />

<br />

合成可能なテ ス ト ベンチに含まれる ト ラ フ ィ ッ ク ジェネレーター モジュールは、 パラ メーターを<br />

指定し て、 メ モ リ デザイ ンのさ ま ざまなステ ィ ミ ュ ラ ス パターン を作成で き ます。 こ のジ ェ ネレー<br />

ターは、 デザ イ ンの完全性や実際の ト ラ フ ィ ッ ク をモデル化する擬似ラ ンダム データ ストリーム<br />

を検証する ための繰 り 返し のテ ス ト パターンを生成できます。<br />

アドレス範囲は、BEGIN_ADDRESS および END_ADDRESS パラ メーター使用してユーザーが<br />

定義で き ます。 Init Memory Pattern Control ブロ ッ ク が、 ア ド レ ス空間のすべてのア ド レ ス を連続<br />

して実行するよ うにト ラフィ ック ジ ェ ネ レーターへ指示し、 選択 さ れたデータ パターンに基づい<br />

て適切な値が メ モ リ デバイ スの各位置へ書き込まれます。 テ ス ト ベンチは、 デフ ォル ト でア ド レ ス<br />

をデータ パターンと して使用しますが、 このサンプル デザイ ンのデータ パターンは、 ChipScope<br />

Analyzer で変更可能な vio_data_mode 信号を使用し て設定で き ます。<br />

メ モ リ の初期化完了後、 ト ラ フ ィ ッ ク ジェネレーターはユーザー <strong>インターフェイス</strong> ポー ト のス<br />

ティ ミュレートを開始し、 <strong>メモリ</strong> デバイ スか ら または メ モ リ デバイ スへの ト ラ フ ィ ッ ク を生成し<br />

ます。 ト ラフ ィ ッ ク ジェネレーターはデフォルトで、 擬似ランダム コマンドをポートへ送信しま<br />

す。 つま り 、 命令シーケ ン ス (R/W、 R、 W など) とアドレスはトラフィック ジェネレーター モ<br />

ジュールの PRBS ジェネレーター ロジックで決定されます。<br />

<strong>メモリ</strong> デバイ スか ら返される読み出しデータは、 ユーザー <strong>インターフェイス</strong>の読み出しデータ<br />

ポー ト を介して ト ラ フ ィ ッ ク ジ ェ ネレーターに よ ってア ク セス さ れ、内部生成 さ れた予想データ と<br />

比較さ れます。 エ ラーが検出さ れた場合 (つま り 、 読み出しデータ と 予想データ が不一致の場合)、<br />

エ ラー信号がアサー ト さ れて、 リ ー ド バ ッ ク アドレス、 リードバック データ、 および予想データ<br />

が error_status 出力に ラ ッ チ さ れます。<br />

42 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


サンプル デザイ ンの変更<br />

CORE Generator の使用方法<br />

提供 さ れてい る サンプル デザイ ンには ト ラ フ ィ ッ ク ジェネレーター モジュールが含まれており、<br />

こ れら は異な る コ マン ド やデータ パターンに合わせて変更でき ます。 一部の上位パラ メ ーターは、<br />

example_top.v/vhd モジュールで変更できます。 表 1-11 で、 これらのパラ メ ーターについて説<br />

明します。<br />

表 1-11 : example_top モジュールにおける ト ラフ ィ ッ ク ジェネレーターのパラメーター設定<br />

パラ メ ー タ ー 内容 値<br />

FAMILY ファミ リのタイプを示します。 VIRTEX7<br />

MEMORY_TYPE <strong>メモリ</strong> コント ローラーのタイプを示し<br />

ます。<br />

DDR2、 DDR3<br />

nCK_PER_CLK <strong>メモリ</strong> コント ローラー クロック対 4、 2 (GUI で選択し た [PHY to Controller Clock<br />

DRAM クロックの比率です。<br />

Ratio] に依存する)<br />

NUM_DQ_PINS <strong>メモリ</strong>の総 DQ バス幅です。 8 ~ 72 の DQ 幅を 8 の倍数でサポー ト し ます。<br />

有効な最大 DQ 幅は、 選択し た メ モ リ デバイ ス<br />

の周波数に依存し ます。<br />

MEM_BURST_LEN メ モ リ のデータ バース ト 長です。 必ず 8 に設定し ます。<br />

MEM_COL_WIDTH メ モ リ 列ア ド レ スのビ ッ ト 数です。 選択し た メ モ リ デバイ スに基づき ます。<br />

DATA_WIDTH ユーザー <strong>インターフェイス</strong>のデータ nCK_PER_CLK = 4 の場合、<br />

バス幅です。<br />

DATA_WIDTH = NUM_DQ_PINS * 8 です。<br />

ADDR_WIDTH <strong>メモリ</strong>のアドレス バス幅です。<br />

RANK_WIDTH + BANK_WIDTH +<br />

ROW_WIDTH + COL_WIDTH と等し<br />

くなります。<br />

MASK_SIZE ユーザー <strong>インターフェイス</strong>のデータ<br />

バスにおけるマスク幅を指定します。<br />

PORT_MODE ポー ト モー ド を設定し ます。 有効な設定は BI_MODE で、 WRITE データ パ<br />

ターン を生成し て比較用に READ データ をモニ<br />

タリングします。<br />

BEGIN_ADDRESS メ モ リ の開始ア ド レ ス境界を設定し ます。 ポー ト ア ド レ ス空間の開始境界を定義し ます。<br />

この値の LSB [3:0] は無視されます。<br />

END_ADDRESS メ モ リ の終了ア ド レ ス境界を設定し ます。 ポー ト ア ド レ ス空間の開始境界を定義し ます。<br />

この値の LSB [3:0] は無視されます。<br />

PRBS_EADDR_MASK_POS 32 ビッ トの AND MASK 位置を設定し PRBS アドレス ジ ェ ネレーターで使用さ れ、<br />

ます。<br />

ポー ト ア ド レ ス空間へラ ンダム アドレスをシフ<br />

ト ダウンします。 このマスクが 1 のビッ ト位置<br />

に対し ては、 END_ADDRESS 値と PRBS アド<br />

レ スの論理積が取られます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 43<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-11 : example_top モジュールにおける ト ラフ ィ ッ ク ジェネレーターのパラメーター設定 (続き)<br />

パラ メ ー タ ー 内容 値<br />

CMD_PATTERN 生成さ れる コ マン ド パターン回路を設<br />

定し ます。大規模なデバイ ス では<br />

CGEN_ALL に設定でき ます。サポー ト<br />

されるコマンド パターン回路すべてを<br />

生成する よ う にで き ます。 ただ し、 一部<br />

の小規模デバイ スでは リ ソ ースが限ら<br />

れているため、 特定のコマン ド パター<br />

ンに制限する必要が生じ る場合があ り<br />

ます。<br />

有効な設定は次の と お り です。<br />

• CGEN_FIXED : アドレス、 バースト長、 命<br />

令は、 fixed_addr_i、 fixed_bl_i、<br />

fixed_instr_i 入力か ら直接取 り 込まれます。<br />

• CGEN_SEQUENTIAL : ア ド レ スは連続的<br />

に イ ン ク リ メ ン ト さ れ、 増分はデータ ポー<br />

トのサイズによって決まります。<br />

• CGEN_PRBS : 32 ステージのリニア フィー<br />

ドバック シフ ト レジスタ (LFSR) が疑似ラ<br />

ンダム ア ド レ ス、 バース ト 長、 および命令<br />

シーケ ン ス を生成し ます。 シー ド は、 32<br />

ビッ トの cmd_seed 入力で設定で き ます。<br />

• CGEN_ALL (デフォル ト) : 上記すべてのオ<br />

プシ ョ ン を有効に し、 動作中に<br />

addr_mode_i、 instr_mode_i、 および<br />

bl_mode_i で生成パターンの タ イ プを選択で<br />

きるようにします。<br />

44 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-11 : example_top モジュールにおける ト ラフ ィ ッ ク ジェネレーターのパラメーター設定 (続き)<br />

パラ メ ー タ ー 内容 値<br />

DATA_PATTERN rtl ロジックを介して生成されるデータ<br />

パターン回路を設定し ます。大規模デバ<br />

イスの場合は、DATA_PATTERN を<br />

DGEN_ALL に設定でき、生成されるす<br />

べてのサポー ト データ パターン回路を<br />

有効に し ます。 ハー ド ウ ェ アでは、<br />

vio_data_value_mode を使用してデー<br />

タ パターンの選択や変更が実行さ れま<br />

す。 DATA_PATTERN が DGEN_ALL<br />

に設定 さ れてい る場合にのみ変更で き<br />

ます。<br />

CMDS_GAP_DELAY 各ユーザー バース ト コマンド間の一時<br />

停止を遅延させる こ と がで き ます。<br />

SEL_VICTIM_LINE 常にロ ジ ッ ク High となるビクティム<br />

DQ ラ イ ン を選択し ます。<br />

有効な設定は次の と お り です。<br />

CORE Generator の使用方法<br />

• ADDR (デフォル ト) : アドレスはデータ パ<br />

ターン と し て使用 さ れます。<br />

• HAMMER : DQS の立ち上が り エ ッ ジでは<br />

DQ ピンにすべて 1 が現れ、 DQS の立ち下<br />

がりエッジでは DQ ピンにすべて 0 が現れま<br />

す。<br />

• WALKING1 : DQ ピンに Walking 1 が現れ、<br />

開始位置 1 はアド レス値に依存し ます。<br />

• WALKING0 : DQ ピンに Walking 0 が現れ、<br />

開始位置 0 はアド レス値に依存し ます。<br />

• NEIGHBOR : 1 つを除くすべての DQ ピン<br />

に Hammer パターンが現れます。 例外ピ ン<br />

の位置はア ド レ スによ って決ま り ます。<br />

• PRBS : 32 ステージの LFSR がランダム デー<br />

タ を生成し、 開始ア ド レ スでシー ド さ れま<br />

す。<br />

• DGEN_ALL : すべての可能なオプシ ョ ン を<br />

有効に し ます。<br />

0x1 : 固定 - 32 ビッ トの fixed_data<br />

0x2 : ADDRESS - データ と し て使用さ れる<br />

32 ビッ ト アドレス<br />

0x3 : HAMMER<br />

0x4 : SIMPLE8 - 8 ワー ド ご と に繰 り 返す単<br />

純な 8 データ パターン<br />

0x5 : WALKING1s - DQ ピンに Walking 1 が<br />

現れる<br />

0x6 : WALKING0s - DQ ピンに Walking 0 が<br />

現れる<br />

0x7 : PRBS - 32 ステージの LFSR がランダ<br />

ム データ を生成<br />

0x9 : SLOW HAMMER - 低周波数の<br />

HAMMER データ パターン<br />

0xF : PHY_CALIB パターン - 0xFF、 00、<br />

AA、 55、 55、 AA、 99、 66。 このモードで<br />

はア ド レス 0 で読み出し コ マン ド のみが生成<br />

される<br />

有効な値 : 0 ~ 32 です。<br />

Hammer パターンにのみ適用し ます。 有効な設<br />

定値は、 0 ~ NUM_DQ_PINS です。<br />

値が NUM_DQ_PINS の場合は、 すべての DQ<br />

ピンに同じ Hammer パターンがあり ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 45<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-11 : example_top モジュールにおける ト ラフ ィ ッ ク ジェネレーターのパラメーター設定 (続き)<br />

パラ メ ー タ ー 内容 値<br />

EYE_TEST トラフィック ジェネレーターに対して 有効な設定値は TRUE および FALSE です。<br />

1 つの位置への書き込みのみを生成さ<br />

TRUE に設定する と 、 vio_instr_mode_value の<br />

せます。読み出し ト ラ ンザ ク シ ョ ンは生<br />

成されません。<br />

設定が上書き さ れます。<br />

注記 : トラフィック ジェネレーターは、 7 <strong>シリーズ</strong><strong>メモリ</strong> コ ン ト ローラーで使用可能な設定よ り 多 く のオプシ ョ ン をサポー ト し てい る場<br />

合があ り ます。 メ モ リ コ ン ト ローラーでサポー ト さ れてい る設定を使用し て く だ さ い。<br />

traffic_gen モジュールのコマン ド パターン (instr_mode_i、addr_mode_i、bl_mode_i、data_mode_i)<br />

は個別に設定でき ます。 提供されている init_mem_pattern_ctr モジュールには、 ユーザーが<br />

ChipScope Analyzer の仮想 I/O (VIO) を使用して リ アル タイムでコマンド パターンを変更でき<br />

る、 イ ン ターフ ェ イ ス信号があ り ます。<br />

次のコマン ド パターンは変更可能です。<br />

1. vio_modify_enable を 1 に設定し ます。<br />

2. vio_addr_mode_value を次の よ う に設定し ます。<br />

1 : 固定ア ド レ ス<br />

2 : PRBS アドレス<br />

3 : 順次ア ド レ ス<br />

3. vio_bl_mode_value を次の よ う に設定し ます。<br />

1 : 固定 bl<br />

2 : PRBS bl (bl_mode の値が 2 に設定されている場合は、 addr_mode 値が強制的に 2 となり、<br />

PRBS アドレスを生成)<br />

4. vio_data_mode_value を次の よ う に設定し ます。<br />

0 : 予約<br />

1 : 固定データ モード - データは fixed_data_i 入力バスか ら提供 さ れます。<br />

2 : DGEN_ADDR (デフォル ト) - アドレスはデータ パターンと して使用されます。<br />

3 : DGEN_HAMMER - DQS の立ち上が り エ ッ ジでは DQ ピンにすべて 1 が現れ、 DQS の立<br />

ち下が り エッ ジでは DQ ピンにすべて 0 が現れます。<br />

4 : DGEN_NEIGHBOR - DQS の立ち上が り エ ッ ジで、 1 つを除くすべての DQ ピンに 1 が現<br />

れます。 例外ピ ンの位置はア ド レ スに よ って決ま り ます。<br />

5 : DGEN_WALKING1 - DQ ピンに Walking 1 が現れます。1 の開始位置はア ド レ ス値に依存<br />

します。<br />

6 : DGEN_WALKING0 - DQ ピンに Walking 0 が現れます。0 の開始位置はア ド レ ス値に依存<br />

します。<br />

7 : DGEN_PRBS - 32 ステージの LFSR がランダム データ を生成し、開始ア ド レ スでシー ド さ<br />

れます。 こ のデータ モード は、 ア ド レ ス モード が PRBS モー ド ま たは順次の場合のみ有効で<br />

す。<br />

46 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


ポー ト ア ド レ ス空間の変更<br />

CORE Generator の使用方法<br />

ポー ト のア ド レ ス空間は、 最上位のテス ト ベンチ ファイルにある BEGIN_ADDRESS および<br />

END_ADDRESS パ ラ メ ーターで変更で き ます。 こ れ ら 2 つの値は、 ポー ト のデータ幅に揃 う よ う<br />

に設定する必要があ り ます。デフ ォル ト の PRBS アドレス モー ド では、追加で 2 つのパラ メ ーター<br />

(PRBS_SADDR_MASK_POS および PRBS_EADDR_MASK_POS) が使用さ れ、 範囲外のア ド レ<br />

スはポー ト へ送信さ れません。 PRBS_SADDR_MASK_POS は、 BEGIN_ADDRESS より下の値<br />

の PRBS 生成アドレスをポートの有効なアドレス空間へシフトアップする OR マスクを作成しま<br />

す。 こ のパ ラ メ ーターは、 BEGIN_ADDRESS パラ メーターと同じ 32 ビッ ト値に設定してくださ<br />

い。 PRBS_EADDR_MASK_POS は、 END_ADDRESS を越えた値の PRBS 生成ア ド レ ス をポー<br />

トの有効アドレス空間へシフトダウンする AND マスクを作成します。 この値は 32 ビッ ト値とな<br />

り、END_ADDRESS の MSB アドレス ビッ トより上にあるすべてのビッ トは 1 に設定され、 その<br />

他のビ ッ ト はすべて0 に設定されます。表 1-12 に、2 つのマス ク パ ラ メ ーターの設定例を示し ます。<br />

表 1-12 : ア ド レス空間および PRBS マス クの設定例<br />

SADDR EADDR PRBS_SADDR_MASK_POS PRBS_EADDR_MASK_POS<br />

0x1000 0xFFFF 0x00001000 0xFFFF0000<br />

0x2000 0xFFFF 0x00002000 0xFFFF0000<br />

0x3000 0xFFFF 0x00003000 0xFFFF0000<br />

0x4000 0xFFFF 0x00004000 0xFFFF0000<br />

0x5000 0xFFFF 0x00005000 0xFFFF0000<br />

0x2000 0x1FFF 0x00002000 0xFFFFE000<br />

0x2000 0x2FFF 0x00002000 0xFFFFD000<br />

0x2000 0x3FFF 0x00002000 0xFFFFC000<br />

0x2000 0x4FFF 0x00002000 0xFFFF8000<br />

0x2000 0x5FFF 0x00002000 0xFFFF8000<br />

0x2000 0x6FFF 0x00002000 0xFFFF8000<br />

0x2000 0x7FFF 0x00002000 0xFFFF8000<br />

0x2000 0x8FFF 0x00002000 0xFFFF0000<br />

0x2000 0x9FFF 0x00002000 0xFFFF0000<br />

0x2000 0xAFFF 0x00002000 0xFFFF0000<br />

0x2000 0xBFFF 0x00002000 0xFFFF0000<br />

0x2000 0xCFFF 0x00002000 0xFFFF0000<br />

0x2000 0xDFFF 0x00002000 0xFFFF0000<br />

0x2000 0xEFFF 0x00002000 0xFFFF0000<br />

0x2000 0xFFFF 0x00002000 0xFFFF0000<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 47<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

トラフィック ジ ェ ネレー タ ーの信号説明<br />

表 1-13 : トラフィック ジ ェ ネレー タ ーの信号説明<br />

表 1-13 で、 ト ラ フ ィ ッ ク ジ ェ ネレーターの信号について説明し ます。<br />

信号名 方向 説明<br />

clk_i 入力 ク ロ ッ ク 入力信号です。<br />

memc_init_done 入力 ト ラ フ ィ ッ ク の受け入れ準備が整ってい る こ と を示す、 メ モ リ<br />

コント ローラーからの入力ステータス信号です。<br />

manual_clear_error 入力 エ ラー フ ラ グ を ク リ アする入力信号です。<br />

memc_cmd_addr_o[31:0] 出力 現在の ト ラ ンザ ク シ ョ ンの開始ア ド レ スです。<br />

memc_cmd_en_o 出力 コ マン ド FIFO の書き込みイ ネーブル信号で、 ア ク テ ィ ブ High です。<br />

memc_cmd_full_i 入力 メ モ リ コント ローラーの app_rdy の反転信号に接続し ます。 こ の入力信<br />

号がアサー ト されている と きは、 memc_cmd_full_i がデ ィ アサー ト され<br />

るまで TG が memc_cmd_en_o、 memc_cmd_addr_o、 および memc_<br />

cmd_instr をアサート し続けます。<br />

memc_cmd_instr[2:0] 出力 現在の命令の コ マン ド コードです。<br />

コマンド書き込み : 3'b000<br />

コ マン ド 読み出し : 3'b001<br />

memc_rd_data_i[DWIDTH-1:0] 入力 メ モ リ か ら返 さ れる読み出しデータ値です。<br />

memc_rd_empty_i 入力 読み出しデータ FIFO の EMPTY フラグで、アクティブ High です。High<br />

の場合、 FIFO に有効なデータ がない こ と を示し ます。<br />

memc_rd_en_o 出力 MCB の よ う な イ ン ターフ ェ イ スでのみ使用 さ れます。<br />

memc_wr_data_o[DWIDTH-1:0] 出力 メ モ リ コ ン ト ローラーの書き込みデータ FIFO へロード される書き込み<br />

データ値を示し ます。<br />

memc_wr_en_o 出力 書き込みデータ FIFO の書き込みイ ネーブル信号で、ア ク テ ィ ブ High で<br />

す。 High の場合、 memc_wr_data の値が有効であ る こ と を示し ます。<br />

memc_wr_full_i 入力 メ モ リ コ ン ト ローラーの書き込みデータ FIFO の FULL フラグで、アク<br />

ティブ High です。 High の場合、 TG が書き込みデータ を保持し、<br />

memc_wr_full_i が Low に遷移する まで memc_wr_en をアサート し続け<br />

ます。<br />

qdr_wr_cmd_o 出力 QDRII+ ユーザー イ ン ターフ ェ イ スへ書き込みコ マン ド を送信する目的<br />

にのみ使用 さ れます。<br />

vio_modify_enable 入力 vio_xxxx_mode_value でトラフィック パターンを変更できるよ うにし<br />

ます。<br />

48 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-13 : トラフィック ジ ェ ネレー タ ーの信号説明 (続き)<br />

信号名 方向 説明<br />

vio_data_mode_value[3:0] 入力 有効な設定は次の と お り です。<br />

CORE Generator の使用方法<br />

• 0x0 : 予約<br />

• 0x1 : 固定 - fixed_data_i 入力で定義さ れた 32 ビッ トの fixed_data 値<br />

です。<br />

• 0x2 : ADDRESS - データ と し て使用さ れる 32 ビッ ト アドレス デー<br />

タは、 論理ア ド レ ス空間に基づいて生成さ れます。 デザ イ ンに 256<br />

ビッ トのユーザー データ バスがあ る場合、 ユーザー バスの各書き込<br />

みビー ト には、 バイ ト 境界で 256/8 のアド レス インク リ メントがあ<br />

り ます。 開始ア ド レ スが 1300 のデータは 1300 で、 次のサイ クルで<br />

1320 となります。 ロジックをシンプルにするために、 ユーザー デー<br />

タ パターンは、 アドレス値 [31:0] ビットのインクリメントの繰り返 しとなります。<br />

• 0x3 : HAMMER - DQS の立ち上が り エ ッ ジでは DQ ピンにすべて 1<br />

が現れ、 DQS の立ち下が り エ ッ ジでは DQ ピンにすべて 0 が現れま<br />

す。 ただ し、 SEL_VICTIM_LINE で定義されたビ ク テ ィ ム ラインは<br />

例外です。 こ のオプシ ョ ンは、 パ ラ メ ーター DATA_PATTERN が<br />

DGEN_HAMMER または DGEN_ALL の場合のみ有効です。<br />

• 0x4 : SIMPLE8 - 8 ワー ド ご と に繰 り 返す単純な 8 データ パターン<br />

は、 simple_datax 入力で定義で き ます。<br />

• 0x5 : WALKING1s - DQ ピンに Walking 1 が現れる1 の開始位置はア<br />

ドレス値に依存します。 このオプションは、パラメーター<br />

DATA_PATTERN が DGEN_WALKING または DGEN_ALL の場合<br />

のみ有効です。<br />

• 0x6 : WALKING0s - DQ ピンに Walking 0 が現れる0 の開始位置はア<br />

ドレス値に依存します。 このオプションは、パラメーター<br />

DATA_PATTERN が DGEN_WALKING0 または DGEN_ALL の場<br />

合のみ有効です。<br />

• 0x7 : PRBS - 32 ステージの LFSR がランダム データ を生成し、 開始<br />

アドレスでシードされます。 このオプションは、 パラメーター<br />

DATA_PATTERN が DGEN_PRBS または DGEN_ALL の場合のみ<br />

有効です。<br />

• 0x9 : SLOW HAMMER - 低周波数の HAMMER データ パターン<br />

• 0xF : PHY_CALIB パターン - 0xFF、 00、 AA、 55、 55、 AA、 99、<br />

66。 このモードではアドレス 0 で読み出し コ マン ド のみが生成 さ れ<br />

るVirtex ® -7 フ ァ ミ リ でのみ有効です。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 49<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-13 : トラフィック ジ ェ ネレー タ ーの信号説明 (続き)<br />

信号名 方向 説明<br />

vio_addr_mode_value[2:0] 入力 有効な設定は次の と お り です。<br />

• 0x1 : 固定ア ド レ ス モード - アドレスは、 fixed_addr_i 入力バスか ら<br />

入力 さ れます。 こ のモー ド では、 data_mode は fixed_data_input に制<br />

限されます。 PRBS データ パターンは生成されません。<br />

• 0x2 : PRBS アドレス モード (デフォル ト) - アドレスは 32 ビッ トの内<br />

部 LFSR 回路か ら生成さ れます。 cmd_seed 入力バス を使用し て、<br />

シー ド を変更で き ます。<br />

• 0x3 : 順次ア ド レ ス モード - アドレスは、 内部アドレス カウンターか<br />

ら生成されます。 増分は、 ユーザー <strong>インターフェイス</strong>のポート幅に<br />

よって決まります。<br />

vio_instr_mode_value[3:0] 入力 有効な設定は次の と お り です。<br />

• 0x1 : fixed_instr_i で定義される コマン ド タイプ (読み出し/書き込み)<br />

• 0x2 : ラ ンダム読み出し/書き込みコマンド<br />

• 0xE : アドレス 0 での書き込みのみ<br />

• 0xF : アドレス 0 での読み出し のみ<br />

vio_bl_mode_value[3:0] 入力 有効な設定は次の と お り です。<br />

vio_fixed_instr_value 入力 有効な設定は次の と お り です。<br />

• 0x1 :fixed_bl_i 入力で定義 さ れた固定のバース ト 長<br />

• 0x2 : ユーザー バース ト 長は、 内部の PRBS ジェネレーターから生成<br />

されます。 各バースト値が生成される連続コマンドの数を定義しま す。<br />

• 0x0 : 書き込み命令<br />

• 0x1 : 読み出し命令<br />

vio_fixed_bl_value 入力 有効な値は 1 ~ 256 です。<br />

vio_pause_traffic 入力 オンザフ ラ イ で ト ラ フ ィ ッ ク 生成を一時停止し ます。<br />

vio_data_mask_gen 入力 こ のモー ド は、 データ モード パターンがデータ と し てのア ド レ スの場合<br />

のみ使用 さ れます。こ のモー ド が有効の場合、メ モ リ パターンが<strong>メモリ</strong>に<br />

満た された後にラ ンダムな memc_wr_mask が生成さ れます。 対応する<br />

memc_write_mask がアサー ト さ れる と 、 書き込みデータ バイ ト レーン<br />

に 8'hFF が入 り ます。<br />

cmp_data[DWIDTH – 1:0] 出力 メ モ リ か ら リ ー ド バ ッ ク さ れたデータ と 比較さ れる予想データ です。<br />

cmp_data_valid 出力 比較データ の Valid 信号です。<br />

cmp_error 出力 cmp_data 値が メ モ リ から リ ード バ ッ ク さ れたデータ と 一致し ない場合<br />

には、 この比較エラー フラグがアサート されます。<br />

error 出力 リ ー ド バ ッ ク データ が予想値 と 異な る場合に、 アサー ト さ れます。<br />

50 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-13 : トラフィック ジ ェ ネレー タ ーの信号説明 (続き)<br />

信号名 方向 説明<br />

error_status[n:0] 出力 エ ラー信号がアサー ト さ れる と 、 次の値を ラ ッ チ し ます。<br />

メ モ リ の初期化および ト ラ フ ィ ッ ク テスト フロー<br />

CORE Generator の使用方法<br />

• [31:0] : 読み出し開始ア ド レ ス<br />

• [37:32] : 読み出しバース ト 長<br />

• [39:38] : 予約<br />

• [40] : mcb_cmd_full<br />

• [41] : mcb_wr_full<br />

• [42] : mcb_rd_empty<br />

• [64 + (DWIDTH – 1):64] : expected_cmp_data<br />

• [64 + (2*DWIDTH – 1):64 + DWIDTH] : read_data<br />

simple_data0[31:0] 入力 繰 り 返す単純な 8 データ パターンのユーザー定義データ 0<br />

simple_data1[31:0] 入力 繰 り 返す単純な 8 データ パターンのユーザー定義データ 1<br />

simple_data2[31:0] 入力 繰 り 返す単純な 8 データ パターンのユーザー定義データ 2<br />

simple_data3[31:0] 入力 繰 り 返す単純な 8 データ パターンのユーザー定義データ 3<br />

simple_data4[31:0] 入力 繰 り 返す単純な 8 データ パターンのユーザー定義データ 4<br />

simple_data5[31:0] 入力 繰 り 返す単純な 8 データ パターンのユーザー定義データ 5<br />

simple_data6[31:0] 入力 繰 り 返す単純な 8 データ パターンのユーザー定義データ 6<br />

simple_data7[31:0] 入力 繰 り 返す単純な 8 データ パターンのユーザー定義データ 7<br />

fixed_data_i[31:0] 入力 ユーザー定義の固定データ パターン<br />

fixed_instr_i[2:0] 入力 ユーザー定義の固定コ マン ド パターン<br />

000 : 書き込みコマンド<br />

fixed_bl_i[5:0] 入力<br />

001 : 読み出し コ マン ド<br />

ユーザーが定義する固定のバース ト 長です。 生成さ れる連続コ マン ド の<br />

数は各バース ト 値で定義されます。<br />

電源投入後、 Init Memory Control ブロックはト ラフィ ック ジ ェ ネ レーターに対し て、 選択 さ れた<br />

データ パターンで メ モ リ を初期化する よ う 命令し、 メ モ リ の初期化プ ロ セスが開始し ます。<br />

メ モ リ の初期化<br />

1. data_mode_i 入力でデータ パターンを選択します (例 :アドレスをデータ パターンと して使用<br />

する場合は、 data_mode_i[3:0] = 0010)。<br />

2. start_addr_i 入力が設定 さ れ、 下位ア ド レ ス境界が定義さ れます。<br />

3. end_addr_i 入力が設定さ れ、 上位ア ド レ ス境界が定義さ れます。<br />

4. fixed_bl_i 入力か ら バース ト 長を取得する ため、 bl_mode_i が 01 に設定されます。<br />

5. fixed_bl_i 入力が 16 または 32 のいずれかに設定 さ れます。<br />

6. fixed_instr_i 入力か ら命令を取得する ため、 instr_mode_i が 0001 に設定されます。<br />

7. fixed_instr_i 入力が メ モ リ デバイ スの WR コ マン ド 値に設定さ れます。<br />

8. 順次ア ド レ ス モード で メ モ リ 空間を埋めるため、 addr_mode_i が 11 に設定されます。<br />

9. mode_load_i が 1 クロック サイクル間アサート されます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 51<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>メモリ</strong>空間が選択されたデータ パターンで初期化さ れる と 、 Init Memory Control ブロックはト ラ<br />

フィック ジェネレーターへト ラフィ ック テス ト フローを実行するように命令します (デフォル ト<br />

で addr_mode_i、 instr_mode_i、 および bl_mode_i 入力は PRBS モー ド を選択する よ う に設定)。<br />

トラフィック テスト フロー<br />

1. addr_mode_i 入力が任意のモー ド に設定さ れます (デフォル ト は PRBS)。<br />

2. cmd_seed_i および data_seed_i の入力値が、内部 PRBS ジ ェ ネレーター用に設定さ れます。( こ<br />

の手順は、 ほかのパターンでは不要)<br />

3. instr_mode_i 入力が任意のモー ド に設定さ れます (デフォル ト は PRBS)。<br />

4. bl_mode_i 入力が任意のモー ド に設定 さ れます (デフォル ト は PRBS)。<br />

5. data_mode_i 入力には、「 メ モ リ の初期化」 で示した メ モ リ パターンの初期化ス テージ と 同じ値<br />

が入 り ます。<br />

6. run_traffic_i 入力がアサー ト さ れて ト ラ フ ィ ッ ク の実行を開始し ます。<br />

7. テス ト中にエラーが発生した場合 (例 :読み出しデータ が予想データ と 一致し ない)、リ セ ッ ト が<br />

適用さ れる までエ ラー ビッ トがアサートされます。<br />

8. error 信号を受信する と 同時に、 error_status バスが 48 ページの表 1-13 で説明されている値を<br />

ラッチします。<br />

サンプル デザ イ ンの一部を変更する こ と で、 run_traffic_i がデ ィ アサー ト された と きに<br />

addr_mode_i、 instr_mode_i および bl_mode_i を動的に変更できるようになります。 ただし、設定<br />

変更後は、 正し いパターンが メ モ リ 空間へロー ド さ れる よ う にする には、 メ モ リ 初期化プ ロ セ ス を<br />

再度実行する必要があ り ます。<br />

注記 :<br />

• チップ セレク ト オプシ ョ ンが無効の場合、 シ ミ ュ レーシ ョ ン テ ス ト ベンチは正常動作を<br />

続けるために常に メ モ リ モデル チップ セレク ト ビッ トを 0 に接続し ます。<br />

• データ マスク オプシ ョ ンが無効の場合、 シ ミ ュ レーシ ョ ン テ ス ト ベンチは正常動作を続<br />

けるために常に<strong>メモリ</strong> モデル データ マスク ビッ トを 0 に接続し ます。<br />

サンプル デザイ ンのシ ミ ュ レーシ ョ ン (AXI4 <strong>インターフェイス</strong>を使用するデザイン)<br />

MIG ツールは、 メモ リ コント ローラーにさまざまなトラフィック パターン を生成する ための合成<br />

可能な AXI4 テス トベンチを提供します。 このテス ト ベンチは、 AXI4 <strong>インターフェイス</strong>を備えた<br />

ユーザー デザイ ン ( <strong>メモリ</strong> コント ローラー) のインスタンスおよびコン ト ローラーの AXI4 イン<br />

ターフェイスを介して ト ラフ ィ ッ ク パターン を生成する traffic_generator (axi4_tg) で構成されて<br />

います (図 1-26)。 ユーザー デザイ ン内のイ ンフ ラ ス ト ラ クチャ ブロッ クがコン ト ローラーと ト ラ<br />

フィック ジ ェ ネレーターの両方へ ク ロ ッ ク リソースを提供します。図 1-26 に、 サンプル デザイ ン<br />

テス ト ベンチのブロ ッ ク図を示し ます。 ク ロ ッ クの詳細は、 89 ページの 「 ク ロ ッ キ ング アーキテ<br />

クチャ」 の図 1-26 を参照して く ださい。<br />

52 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-26<br />

X-Ref Target - Figure 1-27<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 1-26 : AXI4 イ ン タ ーフ ェ イ ス用の合成可能なサン プル デザイ ンのブロ ッ ク図<br />

CORE Generator の使用方法<br />

<br />

<br />

図 1-27 に、AXI4 イ ン ターフ ェ イ ス上で実行 さ れてい る シンプルな書き込み ト ラ ンザ ク シ ョ ン を示<br />

し ます。 こ の ト ラ ンザ ク シ ョ ンには、 コ マン ド サイクル、データ サイクル、応答サイクルという 3<br />

つのサイ クルが含まれます。 これは、 標準の AXI4 プ ロ ト コルに準拠し ています。<br />

図 1-28 に、AXI4 イ ン ターフ ェ イ ス上で実行 さ れてい る シンプルな読み出し ト ラ ンザ ク シ ョ ン を示<br />

し ます。 こ の ト ラ ンザ ク シ ョ ンには、 コ マン ド サイクルとデータ サイクルという 2 つのサイ クル<br />

が含まれます。 これは、 標準の AXI4 プ ロ ト コルに準拠し ています。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 53<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 1-27 : AXI4 イ ン タ ーフ ェ イ スの書き込みサイ クル


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-28<br />

図 1-28 : AXI4 イ ン タ ーフ ェ イ スの読み出しサイ クル<br />

ユーザー <strong>インターフェイス</strong>として AXI4 <strong>インターフェイス</strong>を選択した場合に生成されるサンプル<br />

デザイ ンは、 通常の ト ラ フ ィ ッ ク ジェネレーター ユーザー <strong>インターフェイス</strong>用のデザインとは異<br />

な り ます。 こ の合成可能なテ ス ト ベンチは、 基本的な AXI4 トランザクションだけではなく、メモ<br />

リ コ ン ト ローラーの ト ラ ンザ ク シ ョ ン も検証する こ と を目的 と し ています。 ただ し、 すべての メ モ<br />

リ コ ン ト ローラー機能を検証する のではな く 、 AXI4 SHIM 機能の検証に重点を置いています。<br />

表 1-14 で、 AXI4 テス ト ベンチを検証に関係する各信号について説明し ます。 こ れ ら の信号は、<br />

example_top モジュールに含まれています。<br />

表 1-14 : AXI4 テスト ベンチを使用し た場合のシ ミ ュ レーシ ョ ン信号<br />

test_cmptd<br />

write_cmptd<br />

cmd_err<br />

信号 説明<br />

ラ ンダム読み出し/書き込みコ マン ド に よ る現在のテ ス ト ラ ウ ン ド が完了す<br />

ると、アサートされます。新たなテストが開始されると、ディアサートされ<br />

ます。<br />

現在の書き込み ト ラ ンザ ク シ ョ ンが完了する と 、 1 クロック サイクル間ア<br />

サー ト されます。<br />

AXI4 トランザクション (読み出し ま たは書き込み) のコマンド サイクルで<br />

エラーが生じると、 アサート されます。<br />

write_err <strong>メモリ</strong>への書き込みト ランザクションでエラーが生じると、 アサート されます。<br />

dbg_wr_sts_vld<br />

dbg_wr_sts<br />

read_cmptd<br />

この信号がアサート されると、 dbg_wr_sts バスの書き込みト ランザクシ ョ<br />

ンが有効なステータスである こ と を示します。書き込みト ランザクシ ョ ンが<br />

完了し ていな く て も アサー ト さ れます。<br />

書き込み ト ラ ンザ ク シ ョ ンのス テータ ス を示し ます。 ス テータ スの詳細は、<br />

表 1-15 を参照して く ださい。<br />

現在の読み出し ト ラ ンザ ク シ ョ ンが完了する と 、 1 クロック サイクル間ア<br />

サー ト されます。<br />

read_err <strong>メモリ</strong>の読み出し ト ランザクションでエラーが生じると、 アサート されます。<br />

54 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-29<br />

表 1-14 : AXI4 テスト ベンチを使用し た場合のシ ミ ュ レーシ ョ ン信号<br />

dbg_rd_sts_vld<br />

dbg_rd_sts<br />

信号 説明<br />

CORE Generator の使用方法<br />

この信号がアサート されると、dbg_rd_sts バスの読み出し ト ラ ンザ ク シ ョ ン<br />

が有効な ス テータ スであ る こ と を示し ます。読み出し ト ラ ンザ ク シ ョ ンが完<br />

了していなくてもアサート されます。<br />

読み出し ト ラ ンザ ク シ ョ ンのス テータ ス を示し ます。 ス テータ スの詳細は、<br />

表 1-16 を参照して く ださい。<br />

初期化およびキ ャ リ ブレーシ ョ ン シーケンスに関しては、40 ページの「サンプル デザイ ンのシ ミ ュ<br />

レーシ ョ ン (標準的なユーザー <strong>インターフェイス</strong>を備えるデザイン)」 で説明し た とお り です。<br />

図 1-29 に、 書き込み ト ラ ンザ ク シ ョ ンで生成さ れる ス テータ ス を示し ます。<br />

図 1-29 : 書き込みト ランザクシ ョ ンのステータス<br />

表 1-15 : 書き込み ト ラ ンザク シ ョ ンのデバ ッ グ ステータス<br />

ビ ッ ト ステー タ スの説明<br />

1:0 AXI で受信 さ れる書き込み応答<br />

5:2 書き込み応答用の応答 ID<br />

8:6<br />

15:9 予約<br />

タ イ ムア ウ ト が生じ た場合の AXI ラッパー書き込み FSM ステート (ウォッチドッ<br />

グ タ イ マーを有効にする必要があ る)<br />

• 3'b001 : データ書き込み ト ラ ンザ ク シ ョ ン<br />

• 3'b010 : 書き込まれたデータ に対する Ack 信号を待機<br />

• 3'b011 : ダミー データ書き込み ト ラ ンザ ク シ ョ ン<br />

• 3'b100 : 応答チャ ネルか ら の応答を待機<br />

16 書き込みト ランザクシ ョ ン中にコマンド エラーが発生<br />

17 書き込みエ ラーが発生し、 書き込み ト ラ ンザ ク シ ョ ンは未完了<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 55<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-30<br />

表 1-15 : 書き込み ト ラ ンザク シ ョ ンのデバ ッ グ ステータス (続き)<br />

ビ ッ ト ステー タ スの説明<br />

20:18<br />

31:21 予約<br />

現在の ト ラ ンザ ク シ ョ ンで使用 さ れてい るデータ パターン<br />

• 000 : 5A および A5<br />

• 001 : PRBS パターン<br />

• 010 : Walking 0<br />

• 011 : Walking 1<br />

• 100 : すべて 1<br />

• 101 : すべて 0<br />

図 1-30 に、 読み出し ト ラ ンザ ク シ ョ ンで生成さ れる ス テータ ス を示し ます。<br />

図 1-30 : 読み出し ト ラ ンザク シ ョ ンのステー タ ス<br />

表 1-16 : 読み出し ト ラ ンザク シ ョ ンのデバ ッ グ ステータス<br />

ビ ッ ト ステー タ スの説明<br />

0 AXI での読み出し エ ラー応答<br />

1 AXI スレーブによる不正な応答 ID<br />

3:2<br />

15:4 予約<br />

タ イ ムア ウ ト が生じ た場合の AXI ラ ッ パー読み出し FSM ステート<br />

(ウォッチドッグ タ イ マーを有効にする必要があ る)<br />

• 2'b01 : 読み出し コ マン ド トランザクション<br />

• 2'b10 : データ読み出し ト ラ ンザ ク シ ョ ン<br />

16 読み出し ト ラ ンザ ク シ ョ ン中に読み出し エ ラーが発生<br />

17 読み出し エ ラーが発生し、 読み出し ト ラ ンザ ク シ ョ ンは未完了<br />

18 書き込まれてい るデータ と 読み出しデータ が一致し ない<br />

26:19 データ の不一致が生じ たポ イ ン ター値<br />

56 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


EDK の使用<br />

表 1-16 : 読み出し ト ラ ンザク シ ョ ンのデバ ッ グ ステータス (続き)<br />

ビ ッ ト ステー タ スの説明<br />

29:27<br />

31:30 予約<br />

EDK の使用<br />

キャ リブレーションおよびその他の DDR データ読み出し/書き込みト ランザクシ ョ ンに関しては、<br />

40 ページの 「サンプル デザイ ンのシ ミ ュ レーシ ョ ン (標準的なユーザー <strong>インターフェイス</strong>を備え<br />

るデザイン)」 で説明し た とお り です。 AXI4 の書き込み/読み出し ト ラ ンザ ク シ ョ ンは、 init_calib_<br />

complete 信号がアサー ト さ れた後にのみ開始し ます。<br />

シミュレーションの設定<br />

現在のチェ ッ ク に使用 さ れてい るデータ パターン<br />

• 000 : 5A および A5<br />

• 001 : PRBS パターン<br />

• 010 : Walking 0<br />

• 011 : Walking 1<br />

• 100 : すべて 1<br />

• 101 : すべて 0<br />

ザイ リ ンクスの UNISIM ライブラリをシミュレーターにマップする必要があります。 サンプル デ<br />

ザインに付属のテストベンチは、次のようなプリインプリ メンテーション シ ミュレーションをサ<br />

ポー ト し ます。<br />

• サンプル デザイ ンで使用されているベンダーの メ モ リ モデルを含むテス ト ベンチ<br />

• MIG ツールで作成さ れた MC および PHY コアの RTL ファイル<br />

シ ミ ュ レーシ ョ ンは、 次のデ ィ レ ク ト リ か ら開始し ます。<br />

//sim<br />

サポー ト されているシ ミ ュレーシ ョ ン ツールは、 ModelSim のみです。 sim.do スクリプトを実行<br />

する と、 ModelSim を使用してシンプルなテス ト ベンチが実行できます。<br />

EDK では、 CORE Generator ツールの MIG ツールで作成された RTL に代わるパッ ケージを提供<br />

します。XPS の IP カタログには、MIG ツールで生成される ものと同じ RTL を備えた IP コア<br />

axi_7series_ddrx があ り ます。 異な る点は、 エンベデ ッ ド プロセッサ ベースのシ ス テムで使用<br />

するために EDK pcore として RTL がパッ ケージ化されている こ と です。 axi_7series_ddrx<br />

pcore は、 DDR2 または DDR3 SDRAM との AXI4 スレーブ <strong>インターフェイス</strong>を Verilog で提供<br />

しています。<br />

axi_7series_ddrx <strong>メモリ</strong> コ ン ト ローラーをデザ イ ンに組み込む最も簡単な方法は、 XPS の<br />

BSB (Base System Builder) ウ ィ ザー ド を使用する こ と です。 BSB が、 エンベデッ ド プロジェク ト<br />

全体にオプシ ョ ンの axi_7series_ddrx <strong>メモリ</strong> コン ト ローラーを適用するための一連の操作を<br />

ガイドします。 <strong>メモリ</strong> コ ン ト ローラーが選択さ れる と 、 あ ら か じ め設定、 接続、 および検証済みの<br />

axi_7series_ddrx コント ローラーが ML605 などの特定リ ファレンス ボード に提供されます。<br />

BSB の詳細は、 『EDK コンセプト、 ツール、 テクニック』 [参照 5] の第 2 章を参照し て く だ さ い。<br />

新規プ ロ ジ ェ ク ト を開始する場合は、 IP カタログから<strong>メモリ</strong> コント ローラーをプロジェク トにド<br />

ラッグすることで、デザインに axi_7series_ddrx IP を追加できます。 axi_7series_ddrx IP<br />

は、 CORE Generator ツールの MIG ツールを使用してコンフ ィ ギュレーシ ョ ンされるため、 GUI<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 57<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

フローは 9 ページの 「CORE Generator の使用方法」 で説明し た とお り です。 ただし、 すでに定義<br />

済みのパ ラ メ ーターで RTL 最上位ラ ッ パーを生成する代わ り に、 MIG ツールが XPS MHS ファイ<br />

ルおよび MIG .prj ファイルで RTL のパラ メ ーターを設定し ます。 XPS Platform Generator<br />

(PlatGen) ツールを使用する と 、MHS ファイルや MIG .prj ファイルのパラメーターから、pcore<br />

が正し い制約 と パ ラ メ ーター値を生成で き ます。 pcore は、 シ ス テム内の単な る コ ンポーネン ト で<br />

あるため、クロック/ リセットの構造も XPS で設定する必要があ り 、CORE Generator ツールの RTL<br />

のよ う に自動的には生成されません。 IP のコンフィギュレーショ ンおよびポート接続が完了した<br />

後、 XPS を使用し てビ ッ ト ス ト リ ーム生成やシ ミ ュ レーシ ョ ンの実行な ど、 その他すべての IP 管<br />

理プロセス を実行し ます。 一般的に、 こ のユーザー ガイドで説明する<strong>メモリ</strong> コント ローラー用の<br />

パラ メーターは、 EDK 構文に変換で き ます。 こ の場合、 すべてのパ ラ メ ーターが大文字で最初に<br />

「C」 が付きます。EDK および XPS の詳細は、 『EDK コンセプト、 ツール、 テクニック』 [参照 5]<br />

および 『エンベデッ ド システム ツール リファレンス ガイド』 [参照 6] を参照して く ださい。<br />

EDK でのクロ ッキング<br />

pcore は、 システム内の単なる コ ンポーネン ト であるため、 ク ロ ッ ク/ リセットの構造も XPS で設<br />

定する必要があ り 、 CORE Generator ツールの RTL の よ う に自動的には生成 さ れません。 詳細は、<br />

89 ページの 「ク ロ ッ キ ン グ アーキテクチャ」 を参照して ください。 使用される ク ロ ッ ク信号は次<br />

のとおりです。<br />

• freq_refclk – メ モ リ 周波数が 400MHz 以上の場合には 1 倍 (1 x) の<strong>メモリ</strong> クロックで、200<br />

~ 400MHz 場合には 2 倍 (2 x) の<strong>メモリ</strong> クロック周波数になります。 これによって、 このク<br />

ロックは 400 ~ 933MHz の要件を満た し ます。 freq_refclk の位相は、 動作周波数および メ モ<br />

リ <strong>インターフェイス</strong> ピンに選択したバンクによって異なります。<br />

• GUI で<strong>メモリ</strong> <strong>インターフェイス</strong> ピンに HP バン ク を選択し、 メ モ リ 周波数が 400MHz 以<br />

上の場合、 位相は 337.5 です。<br />

• GUI で<strong>メモリ</strong> <strong>インターフェイス</strong> ピンに HP バン ク を選択し、 メ モ リ 周波数が 200 ~<br />

400MHz (400MHz は含まれない) の場合、 位相は 315 です。<br />

• 低電圧デバイ スで GUI で<strong>メモリ</strong> <strong>インターフェイス</strong> ピンに HP バンクを選択し、 メモ リ周<br />

波数が 400MHz 以上の場合、 位相は 337.5 です。<br />

• 低電圧デバイ スで GUI で<strong>メモリ</strong> <strong>インターフェイス</strong> ピンに HP バンクを選択し、 メモ リ周<br />

波数が 200 ~ 400MHz (400MHz は含まれない) の場合、 位相は 0 です。<br />

• GUI で<strong>メモリ</strong> <strong>インターフェイス</strong> ピンに HR バン ク を選択し、 メ モ リ 周波数が 400MHz 以<br />

上の場合、 位相は 337.5 です。<br />

• GUI で<strong>メモリ</strong> <strong>インターフェイス</strong> ピンに HR バン ク を選択し、 メ モ リ 周波数が 200 ~<br />

400MHz (400MHz は含まれない) の場合、 位相は 0 です<br />

• mem_refclk – <strong>メモリ</strong> ク ロ ッ ク 周波数の 1 倍のク ロ ッ ク です。<br />

• sync_pulse – <strong>メモリ</strong> ク ロ ッ ク 周波数の 0.0625 倍で、 デューテ ィ サイクルは 1/16 (6.25%) の<br />

必要があ り ます。 ク ロ ッ ク の位相は 9.84375 です。<br />

• clk_ref – IDELAYCTRL 基準 ク ロ ッ ク で、 通常は 200MHz です。<br />

• clk – 4:1 モード の場合は メ モ リ ク ロ ッ ク 周波数の 0.25 倍、 2:1 モード の場合は メ モ リ クロッ<br />

クの 0.5 倍となります。<br />

関連する axi_7series_ddrx ポー ト 接続を使用する、 EDK クロック ジェネレーターのインスタンシ<br />

エーシ ョ ン例を次に示し ます。<br />

BEGIN clock_generator<br />

PARAMETER INSTANCE = clock_generator_0<br />

PARAMETER HW_VER = 4.03.a<br />

58 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


PARAMETER C_CLKIN_FREQ = 200000000<br />

PARAMETER C_CLKOUT0_FREQ = 400000000<br />

PARAMETER C_CLKOUT0_GROUP = PLLE0<br />

PARAMETER C_CLKOUT0_BUF = FALSE<br />

PARAMETER C_CLKOUT0_PHASE = 337.5<br />

PARAMETER C_CLKOUT1_FREQ = 400000000<br />

PARAMETER C_CLKOUT1_GROUP = PLLE0<br />

PARAMETER C_CLKOUT1_BUF = FALSE<br />

PARAMETER C_CLKOUT2_FREQ = 25000000<br />

PARAMETER C_CLKOUT2_GROUP = PLLE0<br />

PARAMETER C_CLKOUT2_BUF = FALSE<br />

PARAMETER C_CLKOUT2_PHASE = 9.84375<br />

PARAMETER C_CLKOUT2_DUTY_CYCLE = 0.0625<br />

PARAMETER C_CLKOUT3_FREQ = 100000000<br />

PARAMETER C_CLKOUT3_GROUP = PLLE0<br />

PARAMETER C_CLKOUT3_BUF = TRUE<br />

PARAMETER C_CLKOUT4_FREQ = 200000000<br />

PARAMETER C_CLKOUT4_GROUP = NONE<br />

PARAMETER C_CLKOUT4_BUF = TRUE<br />

PARAMETER C_CLKFBOUT_BUF = FALSE<br />

PARAMETER C_CLKOUT5_FREQ = 50000000<br />

PARAMETER C_CLKOUT5_GROUP = PLLE0<br />

PARAMETER C_CLKOUT5_BUF = TRUE<br />

PORT CLKOUT0 = freq_refclk<br />

PORT CLKOUT1 = mem_refclk<br />

PORT CLKOUT2 = sync_pulse<br />

PORT CLKOUT3 = sys_clk_s<br />

PORT CLKOUT4 = clk_ref<br />

PORT CLKOUT5 = sys_clk_axilite_s<br />

PORT CLKIN = dcm_clk_s<br />

PORT LOCKED = proc_sys_reset_0_Dcm_locked<br />

PORT RST = sys_rst_s<br />

END<br />

EDK の使用<br />

XPS を使用し て、 ビ ッ ト ス ト リ ーム生成やシ ミ ュ レーシ ョ ンの実行など、 その他すべての IP 管理<br />

プロセスを実行します。 一般的に、 このユーザー ガイドで説明する<strong>メモリ</strong> コント ローラー用のパ<br />

ラメーターは、EDK 構文に変換で き ます。 こ の場合、 すべてのパラ メ ーターが大文字で最初に 「C」<br />

が付き ます。 た と えば、 axi_7series_ddrx インスタンシエーションに次の MHS パラ メーターを追<br />

加する こ と 、 ビヘイ ビ ア シミュレーションのランタイムを向上できます。<br />

PARAMETER C_SIM_BYPASS_INIT_CAL = FAST<br />

AXI4 <strong>インターフェイス</strong>接続<br />

ク ロ ッ ク 接続後、通常は [XPS System Assembly] ビューの [Bus Interfaces] タブで、スレーブ AXI4<br />

<strong>インターフェイス</strong>を AXI インターコネク ト コ アへ接続し ます。 プ ラ イ マ リ AXI4 インターフェイ<br />

スは S_AXI として表示されています。<br />

AXI4 インターフ ェ イ スのタ イ ミ ン グ を達成する には、 MIG ツールまたは AXI インターコネク ト<br />

GUI のいずれかから レジス タ ス ラ イ ス を有効し なければな ら ない場合があ り ます。<br />

注記 : ネイティブ AXI4 <strong>インターフェイス</strong>の幅は、4:1 モード の と きは メ モ リ 幅の 8 倍、2:1 モード<br />

のときは<strong>メモリ</strong>幅の 4 倍にな り ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 59<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

外部ポー ト<br />

外部 メ モ リ 信号は、 [XPS System Assembly] ビューの [Ports] タブで (BUS_IF) M_AXI インター<br />

フェイス コレクションに [Make Ports External] を選択する こ と で、 EDK システムの外で<strong>メモリ</strong><br />

信号を使用できるようになります。<br />

AXI アドレス<br />

<strong>メモリ</strong> コント ローラーが応答するベース/高位ア ド レ ス範囲は、 [System Assembly ] ビューの<br />

[Addresses] タブで設定できます。 EDK および XPS の詳細は、 『EDK コンセプト、 ツール、 テク<br />

ニック』 [参照 5] および『エンベデッ ド システム ツール リファレンス ガイド』 [参照 6] を参照して<br />

ください。<br />

シ ミ ュ レーシ ョ ンに関する注意事項<br />

コアのアーキテクチャ<br />

概要<br />

axi_7series_ddrx を使用するデザ イ ンの最も簡単なシ ミ ュ レーシ ョ ン方法は、EDK XPS の SimGen<br />

と呼ばれるテス トベンチ ジ ェ ネレーターを使用する こ と です。 SimGen が最上位の ク ロ ッ ク へ自動<br />

的にス テ ィ ミ ュ ラ ス を接続し て リ セ ッ ト し ます。 ま た axi_7series_ddrx の外部ポー ト へも正しい メ<br />

モリ モデルを接続し ます。ELF フ ァ イルが提供さ れてい る場合には、ELF ファイルも<strong>メモリ</strong>へロー<br />

ドします。<br />

注記 : axi_7series_ddrx デザ イ ンに内在する MIG PHY は、 構造シ ミ ュ レーシ ョ ン をサポー ト し て<br />

いないため、axi_7series_ddrx のこのシミ ュレーションはサポート されていません。したがって、構<br />

造シ ミ ュ レーシ ョ ンは推奨されません。<br />

axi_7series_ddrx のシ ミ ュレーシ ョ ンは、 ビヘイビアまたはフ ァン クシ ョ ン レベルで実行して くだ<br />

さい。 Verilog と VHDL の両言語の混在モー ド に対応する シ ミ ュ レーターが必要です。<br />

キャ リブレーション ロジックがシミュレーション中のロジック値を判断できるようにするため、テ<br />

スト ベンチではすべての DQ および DQS 信号に弱いプルダ ウ ン抵抗を配置する必要があ る場合が<br />

あ り ます。 こ れら がない場合は、 入力データ の伝搬 「X」 によって、 キャ リブレーシ ョ ン ロジック<br />

のシ ミ ュ レーシ ョ ンがエ ラーにな る可能性があ り ます。<br />

ビヘイビア シ ミュレーションの場合は、 axi_7series_ddrx の clk、 mem_refclk、 freq_refclk、 およ<br />

び sync_pulse ポー ト の位相がすべて揃 う 必要があ り ます。<br />

ビヘイビア シ ミ ュ レーシ ョ ンでは初期化およびキャ リ ブレーシ ョ ン シーケンスが自動的に短縮さ<br />

れる ため、 シ ミ ュ レーシ ョ ン時間が大幅に短 く な り ます。 初期化およびキ ャ リ ブレーシ ョ ン を短縮<br />

し ないで実行する場合は、 MHS の axi_7series_ddrx pcore セクションに次の行を追加してくださ<br />

い。<br />

parameter C_SIM_BYPASS_INIT_CAL = SIM_INIT_CAL_FULL<br />

こ れは、 ミ リ 秒範囲のシ ミ ュ レーシ ョ ン を実行する よ う に要求し ます。<br />

ここでは、7 <strong>シリーズ</strong> <strong>FPGA</strong> の<strong>メモリ</strong> <strong>インターフェイス</strong> ソ リューション コアのアーキテクチャを<br />

示し、 コアのモジュールおよび<strong>インターフェイス</strong>の概要について説明します。<br />

図 1-31 に、 7 <strong>シリーズ</strong> <strong>FPGA</strong> の<strong>メモリ</strong> <strong>インターフェイス</strong> ソ リューション コアを示します。<br />

60 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-31<br />

7 Series <strong>FPGA</strong><br />

User Interface<br />

rst<br />

clk<br />

app_addr<br />

app_cmd<br />

app_en<br />

app_hi_pri<br />

app_wdf_data<br />

app_wdf_end<br />

app_wdf_mask<br />

User<br />

Design app_wdf_wren<br />

app_rdy<br />

app_rd_data<br />

app_rd_data_end<br />

app_rd_data_valid<br />

app_wdf_rdy<br />

app_sr_req<br />

app_sr_active<br />

app_ref_req<br />

app_ref_ack<br />

app_zq_req<br />

app_zq_ack<br />

図 1-31 : 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

ユーザー デザイ ン<br />

7 Series <strong>FPGA</strong>s Memory Interface Solution<br />

User<br />

Interface<br />

Block<br />

Memory<br />

Controller<br />

Physical<br />

Layer<br />

Native Interface MC/PHY Interface<br />

コアのアーキテクチャ<br />

図 1-31 のユーザー デザイ ン ブ ロ ッ ク は、 外部の DDR2 または DDR3 SDRAM への接続が必要な<br />

<strong>FPGA</strong> デザイ ンを表し ています。 ユーザー デザイ ンは、 ユーザー <strong>インターフェイス</strong>を介してメモ<br />

リ コ ン ト ローラー と 接続し ます。 コ ア と 共にサンプル ユーザー デザイ ンが提供されています。<br />

AXI4 スレーブ <strong>インターフェイス</strong> ブロック<br />

AXI4 スレーブ <strong>インターフェイス</strong>は AXI4 トランザクションを UI へマ ッ プし、 メ モ リ コント ロー<br />

ラーに業界標準のバス プロ ト コル <strong>インターフェイス</strong>を提供します。<br />

ユーザー <strong>インターフェイス</strong> ブロックおよびユーザー <strong>インターフェイス</strong><br />

UI ブロックは、 ユーザー デザイ ン ブロックへのユーザー <strong>インターフェイス</strong>を提供します。 これ<br />

は、 フ ラ ッ ト ア ド レ ス空間を提供し、 読み出し/書き込みデータ をバ ッ フ ァーする こ と で、 ネ イ テ ィ<br />

ブ <strong>インターフェイス</strong>に代わるシンプルな<strong>インターフェイス</strong>を提供します。<br />

<strong>メモリ</strong> コントローラーおよびネイティブ <strong>インターフェイス</strong><br />

ddr_ad dr<br />

ddr_ba<br />

ddr_cas_n<br />

ddr_ck<br />

ddr_cke<br />

ddr_cs_n<br />

ddr_dm<br />

ddr_o dt<br />

ddr_ra s_n<br />

ddr_reset_n<br />

ddr we n<br />

ddr_dq<br />

ddr_dqs_n<br />

ddr_dqs<br />

DDR2/DDR3<br />

SDRAM<br />

<strong>UG586</strong>_c1_43_120311<br />

<strong>メモリ</strong> コント ローラー (MC) のフロン ト エンドは、 UI ブロックへのネイティブ <strong>インターフェイス</strong><br />

と な り ます。 こ れがユーザー デザ イ ンに よ る メ モ リ の読み出し/書き込み要求の実行を許可し、ユー<br />

ザー デザイ ンか ら外部 メ モ リ デバイ スへ (および外部<strong>メモリ</strong> デバイ スか ら ユーザー デザイ ンへ)<br />

のデータ移動手段を提供し ます。 MC のバ ッ ク エン ド は物理イ ン ターフ ェ イ スへ接続し、 こ のモ<br />

ジ ュールへの イ ン ターフ ェ イ ス要件すべてに対応し ます。 ま た、 メ モ リ コント ローラーには受信し<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 61<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

IOB<br />

Physical Interface<br />

ddr_ck_n<br />

ddr_parity


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

た要求順序を並べ替え る オプシ ョ ンがあ り 、 データ のスループ ッ ト およびレ イ テンシを最適化で き<br />

ます。<br />

物理層 (PHY) および物理インターフ ェイス<br />

PHY のフロン ト エンドはメモ リ コ ン ト ローラー と 接続し、 バ ッ ク エン ド は外部の メ モ リ デバイ ス<br />

と接続しています。PHY は、 すべての メ モ リ デバイ ス信号の順序およびタ イ ミ ン グ を管理し ます。<br />

IDELAYCTRL<br />

IDELAYCTRL は、 IDELAY を使用するすべてのバン クで必要です。 IDELAY は、 データ グルー<br />

プ (DQ) と 関連があ り ます。 つま り 、 こ れら の信号を使用するすべてのバン ク/ クロック領域で<br />

IDELAYCTRL が必要です。<br />

MIG ツールは IDELAYCTRL を 1 つインスタンシエート し、 その後は IODELAY_GROUP 属性<br />

(iodelay_ctrl.v/.vhd モジュールを参照) を使用し ます。 こ の属性に基づいて、 ISE ツールが必<br />

要に応じ てデザイ ンで IDELAYCTRL を複製し ます。<br />

IDELAYCTRL の基準周波数は 200MHz に設定し て く だ さい。 ISE ツールが、 設定された<br />

IODELAY_GROUP 属性に基づいて、 IDELAY ブ ロ ッ ク があ る各領域に IDELAYCTRL を複製し<br />

ます。 ユーザーが独自にマルチコ ン ト ローラー デザ イ ン を作成する と 、 各 MIG 出力にプ リ ミ テ ィ<br />

ブを含むコンポーネン ト がインスタンシエート されます。 これは、IDELAYCTRL や<br />

IODELAY_GRP 属性の使用規則に違反し ます。 IODELAYCTRL には、 正し く 属性が設定された<br />

コンポーネントが 1 つのみイ ン ス タ ンシエー ト さ れるべき で、 必要な複製はツールに実行 させて く<br />

ださい。<br />

ユーザー <strong>インターフェイス</strong><br />

表 1-17 : ユーザー <strong>インターフェイス</strong><br />

UI は <strong>FPGA</strong> ユーザー デザ イ ン と 接続し てい る ため、外部 メ モ リ デバイ スへのア ク セスが可能にな<br />

ります (表 1-17)。<br />

信号 方向 説明<br />

app_addr[ADDR_WIDTH – 1:0] 入力 現在の要求のア ド レ ス を示し ます。<br />

app_cmd[2:0] 入力 現在の要求の コ マン ド を選択し ます。<br />

app_en 入力 app_addr[]、app_cmd[2:0]、app_sz、お よ びapp_hi_pri 入力用のア ク テ ィ<br />

ブ High のス ト ローブ信号です。<br />

app_rdy 出力 UI で コ マン ド の受信準備が整ってい る こ と を示す出力です。 app_en が<br />

イ ネーブルの と き にデ ィ アサー ト さ れた場合、 app_rdy 信号がアサー ト<br />

されるまで現在の app_cmd と app_addr を再送信する必要があ り ます。<br />

app_hi_pri 入力 現在の要求の優先順位を上げる ア ク テ ィ ブ High の入力です。<br />

app_rd_data<br />

[APP_DATA_WIDTH – 1:0]<br />

出力 読み出し コ マン ド か ら の出力データ を提供し ます。<br />

app_rd_data_end 出力 app_rd_data[] 出力データ の最後の ク ロ ッ ク サイクルであるこ とを示<br />

す、 ア ク テ ィ ブ High の出力です。<br />

app_rd_data_valid 出力 app_rd_data[] が有効であ る こ と を示す、 ア ク テ ィ ブ High の出力です。<br />

app_sz 入力 予約さ れてい る ため、 ロ ジ ッ ク 0 に接続し ます。<br />

62 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-17 : ユーザー <strong>インターフェイス</strong> (続き)<br />

app_wdf_data<br />

[APP_DATA_WIDTH – 1:0]<br />

入力 書き込みコ マン ド のデータ を提供し ます。<br />

コアのアーキテクチャ<br />

app_wdf_end 入力 app_wdf_data[] 入力データ の最後 ク ロ ッ ク サイクルであるこ とを示<br />

す、 ア ク テ ィ ブ High の入力です。<br />

app_wdf_mask<br />

[APP_MASK_WIDTH – 1:0]<br />

入力 app_wdf_data[] にマス ク を提供し ます。<br />

app_wdf_rdy 出力 書き込みデータ FIFO でデータ の受信準備が整ってい る こ と を示す出<br />

力です。 app_wdf_rdy = 1’b1 および<br />

app_wdf_wren = 1’b1 の場合、 書き込みデータ が受信 さ れます。<br />

app_wdf_wren 入力 app_wdf_data[] のアクテ ィブ High のス ト ローブ信号です。<br />

app_correct_en_i 入力 こ のア ク テ ィ ブ High 信号がアサー ト さ れる と 、シン グル ビッ トのデー<br />

タ エ ラーを訂正し ます。 こ の入力は、GUI で ECC 機能を有効に設定し<br />

た場合のみ有効です。 サンプル デザイ ンでは、 常に 1 に接続されてい<br />

ます。<br />

app_sr_req 入力 予約さ れてい る ため、 ロ ジ ッ ク 0 に接続し ます。<br />

app_sr_active 出力 予約さ れています。<br />

app_ref_req 入力 リ フ レ ッ シ ュ コマンドが DRAM へ発行 さ れる よ う に要求する、 ア ク<br />

ティブ High の入力です。<br />

app_ref_ack 出力 メ モ リ コ ン ト ローラーが要求 さ れた リ フ レ ッ シ ュ コマンドを PHY イ<br />

ン ターフ ェ イ スへ送信し た こ と を示す、 ア ク テ ィ ブ High の出力です。<br />

app_zq_req 入力 ZQ キャ リブレーション コマンドが DRAM へ発行 さ れる よ う に要求す<br />

る、 アクティブ High の入力です。<br />

app_zq_ack 出力 メ モ リ コ ン ト ローラーが要求 さ れた ZQ キャ リブレーション コマンド<br />

を PHY イ ン ターフ ェ イ スへ送信し た こ と を示す、 ア ク テ ィ ブ High の<br />

出力です。<br />

clk 入力 こ の UI クロックは、DRAM クロックの 1/4 となる必要があります。<br />

clk_mem 入力 フル周波数の メ モ リ クロックです。<br />

init_calib_complete 出力 キ ャ リ ブレーシ ョ ンが完了する と 、 PHY によってアサート されます。<br />

app_ecc_multiple_err[7:0] (1)<br />

信号 方向 説明<br />

出力 FCC 機能を使用する場合に適用 さ れ、 app_rd_data_valid と共に有効に<br />

な り ます。 外部 メ モ リ の読み出し で、 読み出しバース ト の各ビー ト に 2<br />

ビ ッ ト のエ ラーがあ る場合、app_ecc_multiple_err[3:0] 信号が 0 以外を<br />

示します。SECDED アルゴ リ ズムでは、対応する読み出しデータ は訂正<br />

さ れず、 こ の信号で 0 以外の値を出力し て、 読み出しデータ のエ ラーを<br />

UI に伝えます。<br />

rst 入力 ア ク テ ィ ブ High の UI リ セ ッ ト 信号です。<br />

注記 :<br />

1. この信号は、 memc_ui_top モジュール レベルにのみ使用 さ れます。 こ れは、 ECC が有効の場合のみ使用し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 63<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

app_addr[ADDR_WIDTH – 1:0]<br />

現在 UI に提示 さ れてい る要求のア ド レ ス を示す入力です。 UI は外部 SDRAM の全ア ド レ ス<br />

フ ィ ール ド を統合し、 ユーザーへフ ラ ッ ト ア ド レ ス空間を提供し ます。<br />

app_cmd[2:0]<br />

app_en<br />

現在 UI に提示 さ れてい る要求の コ マン ド を示す入力です。表 1-18 に、有効な コ マン ド を示し ます。<br />

要求の入力ス ト ローブ信号です。 ユーザーが app_addr[]、 app_cmd[2:0]、 および app_hi_pri に目<br />

的の値を適用し た後、 この app_en 信号をアサー ト し て UI へ要求を提示し ます。 こ れに よ り、<br />

Uapp_rdy のアサー ト で UI に知ら さ れるハン ド シ ェー ク が開始し ます。<br />

app_hi_pri<br />

現在の要求の優先順位が高い こ と を示す入力です。<br />

app_wdf_data[APP_DATA_WIDTH – 1:0]<br />

外部 メ モ リ へ書き込みさ れてい るデータ を提供するバスです。<br />

app_wdf_end<br />

app_wdf_data[] バス上にあ るデータ が、 現要求の最後のデータ であ る こ と を示す入力です。<br />

app_wdf_mask[APP_MASK_WIDTH – 1:0]<br />

外部 メ モ リ へ書き込まれる app_wdf_data[] バス上のビ ッ ト にマス ク を与える信号です。<br />

app_wdf_wren<br />

app_rdy<br />

表 1-18 : app_cmd[2:0] のコマンド<br />

動作 app_cmd[2:0] コード<br />

読み出し<br />

書き込み<br />

app_wdf_data[] バスのデータ が有効であ る こ と を示す入力です。<br />

現在 UI へ提示 さ れてい る要求が受け入れられた こ と をユーザーへ示す出力です。 app_en のアサー<br />

ト後に UI が こ の信号をアサー ト し ない場合は、 現要求を再送信する必要があ り ます。 次の よ う な<br />

場合は、 app_rdy 出力がアサー ト さ れません。<br />

• PHY/<strong>メモリ</strong> の初期化が完了していない<br />

• バンク マシンがすべて使用されている (コマンド バッファーがフルに表示されることか<br />

ら確認可能)<br />

- 読み出し要求時に、 読み出しバ ッ フ ァーがフルであ る<br />

- 書き込み要求時に、 書き込みバ ッ フ ァー ポインタがない<br />

• 周期的に読み出し が挿入さ れてい る<br />

64 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

001<br />

000


app_rd_data[APP_DATA_WIDTH – 1:0]<br />

外部 メ モ リ か ら読み出し たデータ を含む出力です。<br />

app_rd_data_end<br />

コアのアーキテクチャ<br />

app_rd_data[] バス上にあ るデータ が、 現要求の最後のデータ であ る こ と を示す出力です。<br />

app_rd_data_valid<br />

app_rd_data[] バスのデータ が有効であ る こ と を示す出力です。<br />

app_wdf_rdy<br />

書き込みデータ FIFO でデータ の受信準備が整ってい る こ と を示す出力です。 app_wdf_rdy と<br />

app_wdf_wren が両方 と も アサー ト さ れる と 、 書き込みデータ が受信さ れます。<br />

app_ref_req<br />

アクティブ High の入力で、 アサー ト される と 、 メ モ リ コント ローラーが DRAM へリフレッシュ<br />

コ マン ド を発行する よ う に要求し ます。 要求する には、 こ の信号を 1 サ イ ク ル間パルスする必要が<br />

あ り 、 少な く と も要求が認識さ れて送信さ れた こ と を示す app_ref_ack 信号がアサー ト さ れる まで<br />

ディアサート されます。<br />

app_ref_ack<br />

アクティブ High の入力で、アサート されると、 リ フレッシュ要求を認識してコマンドが<strong>メモリ</strong> コ<br />

ントローラーから PHY へ送信さ れた こ と を示し ます。<br />

app_zq_req<br />

アクティブ High の入力で、 アサー ト される と 、 メ モ リ コント ローラーが DRAM へ ZQ キャ リブ<br />

レーシ ョ ン コ マン ド を発行する よ う に要求し ます。 要求する には、 こ の信号を 1 サイクル間パルス<br />

する必要があ り 、 少な く と も要求が認識さ れて送信さ れた こ と を示す app_zq_ack 信号がアサー ト<br />

されるまでディアサート されます。<br />

app_zq_ack<br />

rst<br />

clk<br />

clk_mem<br />

アクティブ High の入力で、 アサー ト される と、 ZQ キャ リブレーション要求を認識してコマンド<br />

が<strong>メモリ</strong> コント ローラーから PHY へ送信 さ れた こ と を示し ます。<br />

UI のリセット入力です。<br />

UI の入力 ク ロ ッ ク です。 外部 SDRAM へ入力さ れる ク ロ ッ ク の 1/4 の周波数にな り ます。<br />

MMCM か ら提供さ れる フル周波数の ク ロ ッ ク で、 OSERDES の入力 と し てのみ使用さ れます。<br />

init_calib_complete<br />

キ ャ リ ブレーシ ョ ンが完了する と 、 PHY によってアサート されます。アプリ ケーショ ンは、 この信<br />

号を待たずにメモ リ コ ン ト ローラーへコ マン ド を送信で き ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 65<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

AXI4 スレーブ <strong>インターフェイス</strong> ブロック<br />

AXI4 スレーブ <strong>インターフェイス</strong> ブロックは AXI4 トランザクションを UI へマ ッ プし、メ モ リ コ<br />

ン ト ローラーに業界標準のバス プロ ト コル <strong>インターフェイス</strong>を提供します。 AXI4 スレーブ イン<br />

ターフェイスは、MIG ツールで提供されるオプシ ョ ンです。 EDK で提供される<br />

axi_7series_ddrx <strong>メモリ</strong> コ ン ト ローラーを使用する場合には、 こ の イ ン ターフ ェ イ スが必要で<br />

す。 これらのツールで生成される RTL には互換性があ り ます。 AXI4 のシグナ リ ング プロ ト コル<br />

については、 ARM AMBA の仕様書 [参照 3] を参照して く ださい。<br />

デザイ ン全体は、 AXI チャ ネルをそれぞれ扱 う 個別ブ ロ ッ ク で構成 さ れてい る ため、 読み出し ト ラ<br />

ンザ ク シ ョ ンおよび書き込み ト ラ ンザ ク シ ョ ン を別々に実行で き ます。UI への読み出しおよび書き<br />

込みコ マン ド は、 単純な ラ ウ ン ド ロ ビ ン方式のアービ タ を採用し て、 同時生成 さ れる要求が調停 さ<br />

れます。 アド レス読み出し/アドレス書き込みモジュールは、 ユーザー <strong>インターフェイス</strong>とデータ<br />

通信で き る よ う にする ため、 AXI4 バース ト /ラ ッ プ要求を小規模 メ モ リ サイズのバース ト長 (4 ま<br />

たは 8) に変換し て、 それら を読み出し/書き込みデータ モジ ュールへ転送し ます。<br />

AXI4 スレーブ <strong>インターフェイス</strong>のパラメーター<br />

表 1-19 に、 AXI4 スレーブ <strong>インターフェイス</strong>のパラ メーターを示します。<br />

表 1-19 : AXI4 スレーブ イ ン タ ーフ ェ イ スのパラ メ ー タ ー<br />

パラ メ ー タ ー名 デフ ォル ト 値 設定可能な値 説明<br />

C_S_AXI_ADDR_WIDTH 32 32、 64 ア ド レ ス読み出し /ア ド レ ス書き込み信号の幅<br />

です。 EDK デザイ ンでは 32 のみ有効です。<br />

C_S_AXI_DATA_WIDTH 32 32、 64、 128、 256 データ信号の幅です。 推奨 さ れる値は、 メ モ<br />

リ データ幅の 8 倍です。メ モ リ データ幅の 8<br />

倍よ り小さい値も有効ですが、 大きい値には<br />

できません。<br />

C_S_AXI_ID_WIDTH 4 1 ~ 16 すべてのチャ ネルの ID 信号の幅です。 こ の<br />

値は、 EDK デザ イ ンで自動計算 さ れます。<br />

C_S_AXI_SUPPORTS_<br />

NARROW_BURST<br />

C_RD_WR_ARB_ALGORITHM RD_PRI_REG TDM、 ROUND_ROBIN、<br />

RD_PRI_REG、<br />

RD_PRI_REG_STARVE_<br />

LIMIT<br />

1 0、 1 AXI の狭いバース ト 転送をサポー ト するた<br />

めにロジ ッ ク ブロックを追加します。<strong>メモリ</strong><br />

コ ン ト ローラーへ接続 さ れたマス ター デバ<br />

イ スが狭いバース ト を発行する場合に必要<br />

です。AXI データ幅が推奨値よ り 小 さ い場合<br />

は自動設定 さ れます。<br />

アービ ト レーシ ョ ン アルゴ リ ズム方法を指定<br />

し ます。 詳細は、 69 ページの 「AXI Shim の<br />

アービ ト レーシ ョ ン」 を参照して ください。<br />

66 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-19 : AXI4 スレーブ イ ン タ ーフ ェ イ スのパラ メ ー タ ー (続き)<br />

AXI4 スレーブ イ ン タ ーフ ェ イ スの信号名前<br />

コアのアーキテクチャ<br />

パラ メ ー タ ー名 デフ ォル ト 値 設定可能な値 説明<br />

C_S_AXI_BASEADDR N/A 有効なア ド レ ス メ モ リ マップ形式のスレーブ インターフェ<br />

イスのベース アドレスを指定します。このア<br />

ド レ スのア ド レ ス要求は、 ラ ン ク 1、バンク<br />

0、 行 0、 列 0 へマ ッ プ し ます。 ベース/高位<br />

アドレスによって、アクセス可能な<strong>メモリ</strong> サ<br />

イ ズが定義 さ れます。 ア ク セス可能なサ イ ズ<br />

は 2 のべき乗 と な り ます。 また、ベース/高位<br />

アドレスは、アクセス可能な<strong>メモリ</strong> サイズの<br />

整数倍の必要があ り ます。最小サ イ ズは 4096<br />

バイ トです。<br />

C_S_AXI_HIGHADDR N/A 有効なア ド レ ス メ モ リ マ ッ プ形式のス レーブ インターフェ<br />

イスの高位アドレスを指定します。 この値よ<br />

り上のアドレス要求は、 ベース アドレスへ<br />

C_S_AXI_PROTOCOL AXI4 AXI4<br />

ラップバックします。ベース/高位ア ド レ スに<br />

よって、 アクセス可能な<strong>メモリ</strong> サイズが定義<br />

されます。 アクセス可能なサイズは 2 のべき<br />

乗となります。また、ベース/高位ア ド レ スは、<br />

アクセス可能な<strong>メモリ</strong> サイズの整数倍の必要<br />

があ り ます。 最小サイ ズは 4096 バイ トです。<br />

AXI プロ ト コルを指定します。<br />

表 1-20 : AXI4 スレーブ イ ン タ ーフ ェ イ スの信号<br />

表 1-20 に、 AXI4 スレーブ <strong>インターフェイス</strong>の信号を示します。 この<strong>インターフェイス</strong>のクロッ<br />

ク/ リセットは、 <strong>メモリ</strong> コント ローラーから提供されます。<br />

名前 幅 方向 アクティブ<br />

ステート<br />

clk 1 入力 コ アへの入力 ク ロ ッ ク です。<br />

reset 1 入力 High コ アへの入力 リ セ ッ ト です。<br />

s_axi_awid C_AXI_ID_WIDTH 入力 書き込みア ド レ ス ID です。<br />

s_axi_awaddr C_AXI_ADDR_WIDTH 入力 書き込みア ド レ スです。<br />

s_axi_awlen 8 入力 バース ト 長です。 1 回のバース ト の正確な転送数を示<br />

します。<br />

s_axi_awsize 3 入力 バース ト サ イ ズです。バース ト の各転送サ イ ズを示し<br />

ます。<br />

s_axi_awburst 2 入力 バース ト タイプです。<br />

s_axi_awlock 1 入力 ロ ッ ク タイプです。(現時点の イ ンプ リ メ ンテーシ ョ<br />

ンでは未使用)<br />

s_axi_awcache 4 入力 キ ャ ッ シ ュ タイプです。(現時点の イ ンプ リ メ ンテー<br />

シ ョ ンでは未使用)<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 67<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

説明


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-20 : AXI4 スレーブ イ ン タ ーフ ェ イ スの信号 (続き)<br />

名前 幅 方向 アクティブ<br />

ステート<br />

s_axi_awprot 3 入力 プ ロ テ ク シ ョ ン タイプです。(現時点の イ ンプ リ メ ン<br />

テーシ ョ ンでは未使用)<br />

s_axi_awvalid 1 入力 High 書き込みア ド レ スの Valid 信号です。 書き込みア ド レ<br />

スおよびその関連する制御情報が有効であ る こ と を示<br />

します。<br />

s_axi_awready 1 出力 High 書き込みア ド レ スの Ready 信号です。ス レーブでア ド<br />

レ スおよびその関連する制御信号の受信準備が整って<br />

いるこ とを示します。<br />

s_axi_wdata C_AXI_DATA_WIDTH 入力 書き込みデータ です。<br />

s_axi_wstrb C_AXI_DATA_WIDTH/<br />

8<br />

入力 書き込みス ト ローブです。<br />

s_axi_wlast 1 入力 High 書き込みの最後です。 書き込みバース ト の最後の転送<br />

である こ と を示します。<br />

s_axi_wvalid 1 入力 High 書き込みの Valid 信号です。 書き込みデータおよびス<br />

ト ローブ信号が有効であ る こ と を示し ます。<br />

s_axi_wready 1 出力 High 書き込みの Ready 信号です。<br />

s_axi_bid C_AXI_ID_WIDTH 出力 応答 ID です。 書き込み応答の認証タ グです。<br />

s_axi_bresp 2 出力 書き込み応答です。 書き込み応答のス テータ ス を示し<br />

ます。<br />

s_axi_bvalid 1 出力 High 書き込み応答の Valid 信号です。<br />

s_axi_bready 1 入力 High 応答の Ready 信号です。<br />

s_axi_arid C_AXI_ID_WIDTH 入力 読み出し ア ド レ ス ID です。<br />

s_axi_araddr C_AXI_ADDR_WIDTH 入力 読み出し ア ド レ スです。<br />

s_axi_arlen 8 入力 読み出しバース ト 長です。<br />

s_axi_arsize 3 入力 読み出しバース ト サイズです。<br />

s_axi_arburst 2 入力 読み出しバース ト タイプです。<br />

s_axi_arlock 1 入力 ロ ッ ク タイプです。(現時点の イ ンプ リ メ ンテーシ ョ<br />

ンでは未使用)<br />

s_axi_arcache 4 入力 キ ャ ッ シ ュ タイプです。(現時点の イ ンプ リ メ ンテー<br />

シ ョ ンでは未使用)<br />

s_axi_arprot 3 入力 プ ロ テ ク シ ョ ン タイプです。(現時点の イ ンプ リ メ ン<br />

テーシ ョ ンでは未使用)<br />

s_axi_arvalid 1 入力 High 読み出し ア ド レ スの Valid 信号です。<br />

s_axi_arready 1 出力 High 読み出し ア ド レ スの Ready 信号です。<br />

s_axi_rid C_AXI_ID_WIDTH 出力 読み出し の ID タグです。<br />

s_axi_rdata C_AXI_DATA_WIDTH 出力 読み出しデータ です。<br />

s_axi_rresp 2 出力 読み出し応答です。<br />

s_axi_rlast 1 出力 読み出し の最後であ る こ と を示す信号です。<br />

68 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

説明


表 1-20 : AXI4 スレーブ イ ン タ ーフ ェ イ スの信号 (続き)<br />

名前 幅 方向<br />

s_axi_rvalid 1 出力 読み出し の Valid 信号です。<br />

s_axi_rready 1 入力 読み出し の Ready 信号です。<br />

アクティブ<br />

ステート<br />

説明<br />

AXI Shim のアービ ト レーシ ョ ン<br />

コアのアーキテクチャ<br />

AXI4 プ ロ ト コルは、 それぞれ独立し た読み出しおよび書き込みア ド レ ス チャネルを要求します。<br />

<strong>メモリ</strong> コント ローラーのアドレス チャネルは 1 つです。 読み出し ア ド レ ス チャネルと書き込みア<br />

ドレス チャネル間のアービ ト レーショ ン (調停) には、 次のオプシ ョ ンがあ り ます。<br />

時分割多重化 (TDM)<br />

読み出し ア ド レ ス チャネルと書き込みアドレス チ ャ ネルに、 同等の優先度が与え ら れます。 読み<br />

出しおよび書き込みアドレス チャネルへの優先権は、 クロッ ク サイクルごとに切り替わり ます。<br />

AXI マ ス ターか ら の読み出し ま たは書き込み要求は、 優先権に影響し ません。<br />

ラウンド ロビン<br />

読み出し ア ド レ ス チャネルと書き込みアドレス チ ャ ネルに、 同等の優先度が与え ら れます。 読み<br />

出しおよび書き込みアドレス チャネルへの優先権は、 AXI マ ス ターか ら の要求に依存し ます。 ア<br />

ドレス チャネルに対して AXI マスターから要求がある場合に、 読み出しおよび書き込みアドレス<br />

チャネルへの優先権はクロ ッ ク サイクルごとに切り替わり ます。 指定されたタイム スロッ ト内に<br />

対応する ア ド レ ス チ ャ ネルに対し て要求がない場合は、 保留要求に よ って、 も う 一方のア ド レ ス<br />

チャ ネルに優先権が与え られます。<br />

Read Priority (RD_PRI_REG)<br />

常に読み出し ア ド レ ス チャネルが優先されます。 読み出しアドレス チャ ネルか ら保留要求がない<br />

場合は、 書き込みア ド レ ス チャ ネルか ら の要求が処理 さ れます。<br />

スターブ リミットを使用する読み出し優先 (RD_PRI_REG_STARVE_LIMIT)<br />

常に読み出し ア ド レ ス チャネルが優先されます。 読み出しアドレス チャ ネルか ら保留要求がない<br />

場合、 あ るいは読み出し のス ターブ リミットに達した場合は、書き込みアドレス チャネルからの<br />

要求が処理さ れます。<br />

AXI4-Lite スレーブ制御/ステータス レジスタの<strong>インターフェイス</strong> ブロック<br />

AXI4-Lite スレーブ制御レジスタ ブロックは、プロセッサが ECC <strong>メモリ</strong> オプシ ョ ンへア クセス可<br />

能となる<strong>インターフェイス</strong>を提供します。 この<strong>インターフェイス</strong>は、ECC が有効で、 主要ス レーブ<br />

<strong>インターフェイス</strong>が AXI4 の場合に利用で き ます。 こ のブ ロ ッ ク は割 り 込み、 割 り 込み有効、 ECC<br />

ステータス、 ECC 有効/無効、 訂正可能な ECC エラー カ ウ ン ター、 最初の訂正可能/訂正不可能な<br />

エラー データ、 ECC およびア ド レ ス を提供し ます。 ソ フ ト ウ ェ ア検証用のエ ラー挿入レ ジ ス タ は、<br />

ECC_TEST_FI_XOR (C_ECC_TEST) パラ メーターが ON のときに使用できます。 AXI4-Lite イ<br />

ンターフェイスは 32 データ ビ ッ ト に固定さ れてお り 、 信号は AMBA AXI4-Lite 仕様 [参照 3] に<br />

基づいて供給さ れます。<br />

AXI4-Lite 制御/ステータス レジスタ <strong>インターフェイス</strong> ブロックは、AXI4 フル <strong>メモリ</strong>マップ方式<br />

の イ ン ターフ ェ イ スに並列し て実装さ れます。 こ のブ ロ ッ ク は、 ネ イ テ ィ ブ <strong>インターフェイス</strong>の出<br />

力を監視し て訂正可能なエ ラー (シングル ビッ ト) および訂正不可能な (複数ビ ッ ト ) エラーをキャ<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 69<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

プチャ し ます。 訂正可能/訂正不可能なエ ラーが発生する と 、 イ ン ターフ ェ イ スはエ ラーのあ るデー<br />

タ ビッ トおよび ECC ビッ トに加えてそのバイト ア ド レ ス を キ ャ プチャ し ます。書き込みデータパ<br />

スにある XOR ブロッ クによる ECC のエン コー ド 後、 エ ラ ーが挿入 さ れます。 ト ラ ンザ ク シ ョ ン<br />

の最初の メ モ リ ビー ト にのみ挿入 さ れます。 た と えば、 データ幅が 72 で、 モード レジスタのバー<br />

スト長が 8 の<strong>メモリ</strong> コンフィギュレーションでは、 最初の 72 ビットのみがエラー挿入インター<br />

フ ェ イ スによ ってエ ラー と な る可能性があ り ます。 訂正可能なエ ラーま たは訂正不可能なエ ラーの<br />

いずれかに基づ く 割 り 込み生成は、 レ ジ ス タ イ ン ターフ ェ イ スで個別に設定可能です。<br />

ECC 有効/無効<br />

ECC_ON_OFF レジスタは ECC デコー ド 機能を有効ま たは無効に し ます。 ただ し、 エン コー ド は<br />

常に有効です。 ス ター ト ア ッ プ時のデフ ォル ト 値は C_ECC_ONOFF_RESET_VALUE で指定でき<br />

ます。 このレジスタの ECC_ON_OFF ビッ トに 1 を指定する と、 mem_intfc へ入力 さ れる<br />

correct_en 信号がアサー ト さ れます。 こ のビ ッ ト に 0 を書き込むと、 correct_en 信号はデ ィ<br />

アサート されます。 correct_en がアサー ト さ れる と デコー ド が有効にな り 、 こ の信号がデ ィ ア<br />

サー ト される と無効にな り ます。 ECC_ON_OFF が 0 のとき、ECC_STATUS/ECC_CE_CNT は<br />

ア ッ プデー ト されません。 ECC_ON_OFF が 0 のとき、FI_D0、 FI_D1、 FI_D2、 および FI_D3 レ<br />

ジスタへの書き込みはできません。<br />

シングル エラーおよびダブル エラーのレポート<br />

<strong>メモリ</strong> コント ローラーからの 2 つのベク ト ル信号 (ecc_single および ecc_multiple) は ECC<br />

エラーを示すものです。ecc_single 信号は訂正可能なエ ラーが存在する かど う かを示し、<br />

ecc_multiple 信号は訂正不可能なエ ラーが存在する かど う かを示し ます。 ecc_multiple およ<br />

び ecc_single の幅は C_NCK_PER_CLK パラ メーターに基づきます。2 つのベク ター ビッ トの<br />

いずれかによ る各データ ビート にサイ クルあた り 0 から C_NCK_PER_CLK × 2 のエラーが存在<br />

し得る こ と にな り ます。 ベ ク ターの複数ビ ッ ト へはサ イ ク ルご と に信号が供給 さ れ、 複数の訂正可<br />

能なエ ラーま たは訂正不可能なエ ラーが検出 さ れた こ と を示し ます。 ecc_err_addr 信号 ( 「エ<br />

ラーの情報の収集」 で説明) は ecc_single または ecc_multiple がアサー ト さ れている間有効です。<br />

ECC_STATUS レ ジ ス タは、 それぞれ訂正可能なエ ラーおよび訂正不可能なエ ラーの検出をそれぞ<br />

れ示す CE_STATUS ビッ トや UE_STATUS ビ ッ ト を設定し ます。<br />

割 り 込みの生成<br />

ECC_EN_IRQ レジスタの CE_EN_IRQ ビットまたは UE_EN_IRQ ビ ッ ト で割 り 込みを有効にす<br />

る と 、 訂正可能なエ ラーま たは訂正不可能なエ ラーが発生し た場合に割 り 込み信号がアサー ト され<br />

ます。<br />

エ ラーの情報の収集<br />

ECC エ ラーの解析をサポー ト する ために、 エ ラーが発生し た ECC デコー ド に関する情報を収集す<br />

る格納レジスタが 2 つ用意さ れています。 1 つは訂正可能なエ ラー用、 も う 1 つは訂正不可能なエ<br />

ラー用です。エラーが発生したアドレス、デコードされなかったデータ、および ECC ビットが<br />

CE_FFA、 CE_FFD、 CE_FFE バンク (訂正可能なエ ラー ) および UE_FFA、 UE_FFD、 UE_FFE<br />

バンク (訂正不可能なエ ラー ) に格納されます。 これらのデータおよび ECC ビッ トは共に、 どの<br />

ビ ッ ト にエ ラーが発生し てい る かを特定する ために使用 さ れます。CE_FFA は ecc_err_addr 信号か<br />

らのアドレスを格納し、 それをバイ ト ア ド レ スに変換し ます。 エ ラーが検出さ れる と 、 そのデータ<br />

は適宜レ ジ ス タ に ラ ッ チ さ れます。 エ ラーが発生し た最初のデータ ビー ト のみが格納 さ れます。<br />

訂正可能なエ ラーが発生し た場合にその発生し た数を数え る カ ウ ン ターも用意 さ れています。 常に<br />

8 ビッ ト カウンターのこのカウンターは CE_CNT レ ジ ス タ か ら読み出すこ と がで き、 最大値が イ<br />

ンクリ メントする際にロールオーバーしません。<br />

70 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


エ ラーの挿入<br />

コアのアーキテクチャ<br />

ECC エラー 挿入レ ジ ス タ (FI_D および FI_ECC) はソフ ト ウェア ドライバーのテストを容易にし<br />

ます。 セッ トする と、 ECC エ ラー挿入レ ジ ス タは MIG DFI データパスで XOR を実行し、 メ モ リ<br />

でエラーをシ ミ ュ レーシ ョ ンし ます。 DFI <strong>インターフェイス</strong>は<strong>メモリ</strong> コント ローラーと PHY 間に<br />

あ り ます。 こ れはエン コー ド の完了後であ る ため挿入に最適です。 最初のデータ ビー ト でのみエ<br />

ラーを挿入するため、 FI_D レジスタは 2 ~ 4 つしか用意されていません。 動作中、 エラーがデー<br />

タパスに挿入さ れる と レ ジ ス タ自身で ク リ ア し ます。<br />

AXI4-Lite スレーブ制御/ステータス レジスタ イ ン タ ーフ ェ イ スのパラ メ ー タ ー<br />

表 1-21 に、 AXI4-Lite スレーブ <strong>インターフェイス</strong>のパラメーターを示します。<br />

表 1-21 : AXI4-Lite スレーブ制御/ステータス レ ジス タのパラ メ ー タ ー<br />

パラ メ ー タ ー名 デフ ォル ト 値 設定可能な値 説明<br />

C_S_AXI_CTRL_ADDR_WIDTH 32 32、 64 AXI4-Lite アドレスのバス幅です。EDK デザイ ンで<br />

は 32 のみ有効です。<br />

C_S_AXI_CTRL_DATA_WIDTH 32 32 AXI4-Lite データ のバス幅です。<br />

C_ECC_ONOFF_RESET_VALUE 1 0、 1 スタートアップ/ リセット時の ECC の ON/OFF 値<br />

を制御します。<br />

C_S_AXI_CTRL_BASEADDR N/A 有効なア ド レ ス AXI4-Lite スレーブ <strong>インターフェイス</strong>のベース ア<br />

ド レ ス を指定し ます。<br />

C_S_AXI_CTRL_HIGHADDR N/A 有効なア ド レ ス AXI4-Lite のスレーブ <strong>インターフェイス</strong>の高位ア<br />

ド レ ス を指定し ます。<br />

C_S_AXI_CTRL_PROTOCOL AXI4LITE AXI4LITE AXI4-Lite プロ ト コル (EDK メ タデータ パラ メー<br />

ター ) です。<br />

表 1-22 : 新しい I/O 信号の一覧<br />

AXI4-Lite スレーブ制御/ステータス レジスタ イ ン タ ーフ ェ イ スの信号<br />

表 1-22 に、 AXI4 スレーブ <strong>インターフェイス</strong>の信号を示します。 この<strong>インターフェイス</strong>のクロッ<br />

ク/ リセットは、 <strong>メモリ</strong> コント ローラーから提供されます。<br />

名前 幅 方向 アクティブ<br />

ステート<br />

s_axi_ctrl_awaddr C_S_AXI_CTRL_ADDR_WIDTH 入力 書き込みア ド レ スです。<br />

s_axi_ctrl_awvalid 1 入力 High<br />

s_axi_ctrl_awready 1 出力 High<br />

s_axi_ctrl_wdata C_S_AXI_CTRL_DATA_WIDTH 入力 書き込みデータ です。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 71<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

説明<br />

書き込みア ド レ スの Valid 信号です。 書き込<br />

みア ド レ スおよびその関連する制御情報が有<br />

効であ る こ と を示し ます。<br />

書き込みア ド レ スの Ready 信号です。 ス レー<br />

ブでア ド レ スおよびその関連する制御信号の<br />

受信準備が整ってい る こ と を示し ます。


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-22 : 新しい I/O 信号の一覧 (続き)<br />

名前 幅 方向 アクティブ<br />

ステート<br />

s_axi_ctrl_wvalid 1 入力 High<br />

AXI4-Lite スレーブ制御/ステータス レジスタ マップ<br />

書き込みの Valid 信号です。 書き込みデータ<br />

およびス ト ローブ信号が有効であ る こ と を示<br />

します。<br />

s_axi_ctrl_wready 1 出力 High 書き込みの Ready 信号です。<br />

s_axi_ctrl_bvalid 1 出力 High 書き込み応答の Valid 信号です。<br />

s_axi_ctrl_bready 1 入力 High 応答の Ready 信号です。<br />

s_axi_ctrl_araddr C_S_AXI_CTRL_ADDR_WIDTH 入力 読み出し ア ド レ スです。<br />

s_axi_ctrl_arvalid 1 入力 High 読み出し ア ド レ スの Valid 信号です。<br />

s_axi_ctrl_arready 1 出力 High 読み出し ア ド レ スです。<br />

s_axi_ctrl_rdata C_S_AXI_CTRL_DATA_WIDTH 出力 読み出しデータ です。<br />

s_axi_ctrl_rvalid 1 出力 読み出し の Valid 信号です。<br />

s_axi_ctrl_rready 1 入力 読み出し の Ready 信号です。<br />

interrupt 1 出力 High IP グ ローバル割 り 込み信号です。<br />

表 1-23 : ECC 制御レジス タ マップ<br />

アドレス<br />

オフセッ ト<br />

レジスタ名<br />

表 1-23 に、 ECC レジスタ マップを示します。 レジスタ マップはリ トル エンディ アンです。 読み<br />

出し専用ま たは予約の値への書き込みア ク セ スは無視 さ れます。 書き込み専用ま たは予約の値への<br />

読み出し ア ク セスは 0xDEADDEAD 値を返します。<br />

アクセス<br />

タイプ<br />

デフォルト値 説明<br />

0x00 ECC_STATUS R/W 0x0 ECC ステータス レジスタです。<br />

0x04 ECC_EN_IRQ R/W 0x0 ECC 有効割 り 込みレ ジ ス タ です。<br />

0x08 ECC_ON_OFF R/W<br />

0x0 または<br />

0x1<br />

72 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

説明<br />

ECC ON/OFF レジスタです。 C_ECC_ONOFF_RESET_<br />

VALUE が 1 の場合、 デフ ォル ト 値は 0x1 です。<br />

0x0C CE_CNT R/W 0x0 訂正可能なエ ラー カウント レジスタです。<br />

(0x10-0x9C) 予約<br />

0x100 CE_FFD[31:00] R 0x0 訂正可能な最初のエ ラー データ レジスタです。<br />

0x104 CE_FFD[63:32] R 0x0 訂正可能な最初のエ ラー データ レジスタです。<br />

0x108 CE_FFD[95:64] (1) R 0x0 訂正可能な最初のエ ラー データ レジスタです。<br />

0x10C<br />

CE_FFD<br />

[127:96] (1) R 0x0<br />

(0x110 - 0x17C) 予約<br />

訂正可能な最初のエ ラー データ レジスタです。


表 1-23 : ECC 制御レジス タ マップ (続き)<br />

アドレス<br />

オフセッ ト<br />

0x180 CE_FFE R 0x0 訂正可能な最初の ECC エラー レジスタです。<br />

AXI4-Lite スレーブ制御/ステータス レジスタ マップの説明<br />

ECC_STATUS<br />

(0x184 - 0x1BC) 予約<br />

0x1C0 CE_FFA[31:0] R 0x0 訂正可能な最初のエ ラー アドレス レジスタです。<br />

0x1C4 CE_FFA[63:32] (2) R 0x0 訂正可能な最初のエ ラー アドレス レジスタです。<br />

(0x1C8 - 0x1FC) 予約<br />

0x200 UE_FFD [31:00] R 0x0 訂正不可能な最初のエ ラー データ レジスタです。<br />

0x204 UE_FFD [63:32] R 0x0 訂正不可能な最初のエ ラー データ レジスタです。<br />

0x208 UE_FFD [95:64] (1) R 0x0 訂正不可能な最初のエ ラー データ レジスタです。<br />

0x20C<br />

レジスタ名<br />

アクセス<br />

タイプ<br />

UE_FFD<br />

[127:96] (1) R 0x0<br />

デフォルト値 説明<br />

(0x210 - 0x27C) 予約<br />

訂正不可能な最初のエ ラー データ レジスタです。<br />

0x280 UE_FFE R 0x0 訂正不可能な最初の ECC エラー レジスタです。<br />

(0x284 - 0x2BC) 予約<br />

コアのアーキテクチャ<br />

0x2C0 UE_FFA[31:0] R 0x0 訂正不可能な最初のエ ラー アドレス レジスタです。<br />

0x2C4 UE_FFA[63:32] (2) R 0x0 訂正不可能な最初のエ ラー アドレス レジスタです。<br />

(0x2C8 - 0x2FC) 予約<br />

0x300 FI_D[31:0] (3) W 0x0 エ ラー挿入データ レジスタです。<br />

0x304 FI_D[63:32] (3) W 0x0 エ ラー挿入データ レジスタです。<br />

0x308 FI_D[95:64] (1)(3) W 0x0 エ ラー挿入データ レジスタです。<br />

0x30C FI_D[127:96] (1)(3) W 0x0 エ ラー挿入データ レジスタです。<br />

(0x340 - 0x37C) 予約<br />

0x380 FI_ECC (3) W 0x0 エ ラー挿入 ECC レジスタです。<br />

注記 :<br />

1. データ ビッ ト 64 ~ 127 は、 DQ 幅が 144 ビ ッ ト の場合のみ有効です。<br />

2. アドレス ビッ ト 63 ~ 32 のレポートは、 アドレス マップが 32 ビ ッ ト を超え る場合のみ利用で き ます。<br />

3. FI_D* および FI_ECC* は、 ECC_TEST パラ メーターが 1 に設定されている場合のみ有効です。<br />

こ のレ ジ ス タ は、 訂正可能なエ ラーおよび訂正不可能なエ ラーの発生に関する情報を保持し ます。<br />

ステータス ビッ トは各エラー タ イ プの最初の発生に対し て独立し て 1 にセッ ト されます。 ステー<br />

タス ビ ッ ト は対応する ビ ッ ト 位置に 1 を書き込むこ とでク リ アされます。 つま り、 レジス タ ビッ<br />

トは 0 にク リアできますが、 レジスタの書き込みによっては 1 にセッ ト でき ません。 ECC ステー<br />

タス レジスタは、 ECC 有効割 り 込みレ ジ ス タ と 独立し て動作し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 73<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-25 : ECC ステータス レジスタ ビ ッ ト の定義<br />

表 1-24 : ECC ステータス レジスタ (ECC_STATUS)<br />

31 2 1 0<br />

ECC_EN_IRQ<br />

このレジスタは、 ECC ステータス レジスタの CE_STATUS ビッ トおよび UE_STATUS ビッ トの<br />

値に よ って割 り 込み出力信号 (ECC_Interrupt) をアサートするかを決定します。 CE_EN_IRQ およ<br />

び UE_EN_IRQ の両方を 1 (有効) にセ ッ ト する と、 割 り 込み信号の値が CE_STATUS ビット と<br />

UE_STATUS ビッ ト間のロジック OR 値を取り ます。<br />

ECC_ON_OFF<br />

Reserved ECC_STATUS<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

1 CE_STATUS R/W 0<br />

0 UE_STATUS R/W 0<br />

表 1-27 : ECC 割 り 込み有効レジス タ ビ ッ ト の定義<br />

1 の場合、訂正可能なエ ラーが発生し た こ と を示し ます。こ のビ ッ ト 位<br />

置に 1 が書き込まれる と 、 ク リ ア されます。<br />

1 の場合、訂正不可能なエ ラーが発生し た こ と を示し ます。こ のビ ッ ト<br />

位置に 1 が書き込まれる と 、 ク リ ア されます。<br />

表 1-26 : ECC 割 り 込み有効レジス タ (ECC_EN_IRQ)<br />

31 2 1 0<br />

ECC ON/OFF 制御レ ジ ス タは、アプ リ ケーシ ョ ンにおけ る ECC チェ ッ ク を有効ま たは無効に し ま<br />

す。 C_ECC_ONOFF_RESET_VALUE パラ メーター (デフォル ト は ON) は ECC の有効/無効を示<br />

すリセッ ト値を決定します。これにより、ECC が外部 メ モ リ で初期化 さ れた ま たは初期化 さ れてい<br />

ない と き のス ター ト ア ッ プ動作が容易にな り ます。 無効の場合、 読み出し の ECC チェッ クが無効<br />

にな り ますが、 書き込みでの ECC 生成は有効です。<br />

74 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

予約<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

1 CE_EN_IRQ R/W 0<br />

0 UE_EN_IRQ R/W 0<br />

ECC_EN_IRQ<br />

1 の場合、 ECC ステータス レジスタの CE_STATUS ビッ トの値が割<br />

り 込み信号に伝搬 さ れます。 0 の場合、 ECC ステータス レジスタの<br />

CE_STATUS ビ ッ ト の値は割 り 込み信号に伝搬さ れません。<br />

1 の場合、ECC ステータス レジスタの UE_STATUS ビッ トの値が割<br />

り 込み信号に伝搬 さ れます。 0 の場合、 ECC ステータス レジスタの<br />

UE_STATUS ビ ッ ト の値は割 り 込み信号に伝搬さ れません。


表 1-29 : ECC ON/OFF 制御レ ジス タ ビ ッ ト の定義<br />

表 1-28 : ECC ON/OFF 制御レ ジス タ (ECC_ON_OFF)<br />

CE_CNT<br />

コアのアーキテクチャ<br />

31 1 0<br />

ビット 名前<br />

コア<br />

アクセス<br />

0 ECC_ON_OFF R/W C_ECC_ONOFF_<br />

RESET_VALUE パ<br />

ラメーターで指定<br />

こ のレ ジ ス タは、 訂正可能なエ ラーの発生数を数え ます。 書き込みに よ って、 レ ジ ス タ は ク リ ア ま<br />

たは任意の値にプ リ セ ッ ト さ れます。 カ ウ ン ターの最大値に達する と 、 ラ ッ プア ラ ウ ン ド せず、 代<br />

わ り に イ ン ク リ メ ン ト を停止し て最大値をそのま ま保持し ます。 カ ウ ン ターの幅は<br />

C_CE_COUNTER_WIDTH パラ メーターの値で定義します。 CE カウンターの幅は 8 ビッ トに固<br />

定されています。<br />

CE_FFA[31:0]<br />

こ のレ ジ ス タは、 訂正可能なエ ラーが最初に発生し たア ド レ ス (ビッ ト [31:0]) を格納します。ECC<br />

ステータス レジスタの CE_STATUS ビ ッ ト が ク リ ア さ れる と 、 こ のレ ジ ス タは次の訂正可能なエ<br />

ラーのア ド レ ス を格納する ために再度有効にな り ます。 エ ラーが発生し たア ド レ スの格納は リ セ ッ<br />

ト後に有効になります。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 75<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

予約<br />

リセッ ト値 説明<br />

表 1-30 : 訂正可能なエ ラー カウン ト レジスタ (CE_CNT)<br />

ECC_ON<br />

_OFF<br />

0 の場合、読み出し の ECC チェッ クが無効です。(C_ECC が 1 の<br />

場合、 書き込みでの ECC 生成が有効)<br />

1 の場合、 読み出し の ECC チェ ッ ク が有効です。 訂正可能なエ<br />

ラーおよび訂正不可能なエ ラーのすべての条件がキ ャ プチ ャ さ<br />

れ、 ス テータ スがア ッ プデー ト さ れます。<br />

31 8 7 0<br />

予約<br />

表 1-31 : 訂正可能なエ ラー カウン ト レジス タのビ ッ ト の定義<br />

CE_FFA[31:0]<br />

ビット 名称 コア アクセス リセッ ト値 説明<br />

[7:0] CE_CNT R/W 0 訂正可能なエ ラーが発生し た数を保持し ます。<br />

表 1-32 : 訂正可能な最初のエ ラー アドレス レジスタ (CE_FFA[31:0])<br />

31 0<br />

CE_FFA[31:0]


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-33 : 訂正可能な最初のエ ラー アドレス [31:0] レジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] CE_FFA[31:0] R 0<br />

CE_FFA[63:32]<br />

注記 : C_S_AXI_ADDR_WIDTH が 33 よ り も小さ い場合、 こ のレ ジ ス タは使用さ れません。<br />

こ のレ ジ ス タは、訂正可能なエ ラーが最初に発生し たア ド レ ス (ビット [63:32]) を格納します。ECC<br />

ステータス レジスタの CE_STATUS ビ ッ ト が ク リ ア さ れる と 、 こ のレ ジ ス タは次の訂正可能なエ<br />

ラーのア ド レ ス を格納する ために再度有効にな り ます。 エ ラーが発生し たア ド レ スの格納は リ セ ッ<br />

ト後に有効になります。<br />

CE_FFD[31:0]<br />

こ のレ ジ ス タは、 訂正可能なエ ラーが最初に発生し た (未訂正の) エラー データ (ビッ ト [31:0]) を<br />

格納し ます。 ECC ステータス レジスタの CE_STATUS ビッ トがクリアされると、 このレジスタは<br />

次の訂正可能なエ ラーのデータ を格納する ために再度有効にな り ます。 エ ラーが発生し たデータ の<br />

格納は リ セ ッ ト 後に有効にな り ます。<br />

CE_FFD[63:32]<br />

訂正可能なエ ラーが最初に発生し たア ド レ ス (ビット [31:0])<br />

です。<br />

表 1-34 : 訂正可能な最初のエ ラー アドレス レジスタ (CE_FFA[63:32])<br />

31 0<br />

CE_FFA[63:32]<br />

表 1-35 : 訂正可能な最初のエ ラー アドレス [63:32] レジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] CE_FFA[63:32] R 0<br />

訂正可能なエ ラーが最初に発生し たア ド レ ス (ビッ ト [63:32])<br />

です。<br />

表 1-36 : 訂正可能な最初のエ ラー データ レジスタ (CE_FFD[31:0])<br />

31 0<br />

表 1-37 : 訂正可能な最初のエ ラー データ [31:0] レジス タのビ ッ ト の定義<br />

CE_FFD[31:0]<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] CE_FFD[31:0] R 0<br />

訂正可能なエ ラーが最初に発生し たデータ (ビッ ト [31:0])<br />

です。<br />

こ のレ ジ ス タは、訂正可能なエ ラーが最初に発生し た (未訂正の) エラー データ (ビット [63:32]) を<br />

格納し ます。 ECC ステータス レジスタの CE_STATUS ビッ トがクリアされると、 このレジスタは<br />

76 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


コアのアーキテクチャ<br />

次の訂正可能なエ ラーのデータ を格納する ために再度有効にな り ます。 エ ラーが発生し たデータ の<br />

格納は リ セ ッ ト 後に有効にな り ます。<br />

表 1-38 : 訂正可能な最初のエ ラー データ レジスタ (CE_FFD[63:32])<br />

31 0<br />

CE_FFD[95:64]<br />

注記 : このレジスタは、 DQ_WIDTH が 144 の場合のみ有効です。<br />

こ のレ ジ ス タ は、 訂正可能なエ ラーが最初に発生し た (訂正不可能な) エラー データ (ビ ッ ト<br />

[95:64]) を格納します。 ECC ステータス レジスタの CE_STATUS ビッ トがクリアされると、 この<br />

レ ジ ス タは次の訂正可能なエ ラーのデータ を格納する ために再度有効にな り ます。 エ ラーが発生し<br />

たデータ の格納は リ セ ッ ト 後に有効にな り ます。<br />

CE_FFD[127:96]<br />

CE_FFD[63:32]<br />

表 1-39 : 訂正可能な最初のエ ラー データ [63:32] レジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] CE_FFD[63:32] R 0<br />

訂正可能なエ ラーが最初に発生し たデータ (ビッ ト [63:32])<br />

です。<br />

表 1-40 : 訂正可能な最初のエ ラー データ レジスタ (CE_FFD[95:64])<br />

31 0<br />

CE_FFD[95:64]<br />

表 1-41 : 訂正可能な最初のエ ラー データ [95:64] レジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] CE_FFD[95:64] R 0<br />

訂正可能なエ ラーが最初に発生し たデータ (ビッ ト [95:64])<br />

です。<br />

注記 : このレジスタは、 DQ_WIDTH が 144 の場合のみ有効です。<br />

こ のレ ジ ス タ は、 訂正可能なエ ラーが最初に発生し た (訂正不可能な) エラー データ (ビ ッ ト<br />

[127:96]) を格納し ます。 ECC ステータス レジスタの CE_STATUS ビットがクリアされると、 こ<br />

のレ ジ ス タは次の訂正可能なエ ラーのデータ を格納する ために再度有効にな り ます。 エ ラーが発生<br />

し たデータ の格納は リ セ ッ ト 後に有効にな り ます。<br />

表 1-42 : 訂正可能な最初のエ ラー データ レジスタ (CE_FFD[127:96])<br />

31 0<br />

CE_FFD[127:96]<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 77<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-43 : 訂正可能な最初のエ ラー データ [127:96] レ ジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] CE_FFD [127:96] R 0<br />

CE_FFE<br />

こ のレ ジ ス タは、 訂正可能なエ ラーが最初に発生し た ECC ビ ッ ト を格納し ます。 ECC ステータス<br />

レジスタの CE_STATUS ビッ トがクリアされると、 このレジスタは次の訂正可能なエラーの ECC<br />

を格納する ために再度有効にな り ます。 エ ラーが発生し た ECC の格納は リ セ ッ ト 後に有効にな り<br />

ます。<br />

表 1-44 および表 1-45 に、 DQ_WIDTH が 72 のときのレジスタ ビ ッ ト の使用を示し ます。<br />

表 1-46 および表 1-47 に、 DQ_WIDTH が 144 のときのレジスタ ビッ トの使用を示します。<br />

UE_FFA[31:0]<br />

訂正可能なエ ラーが最初に発生し たデータ (ビッ ト [127:96])<br />

です。<br />

表 1-44 : 72 ビ ッ ト 外部 メ モ リ 幅の訂正可能な最初の ECC エラー レジスタ (CE_FFE)<br />

31 8 7 0<br />

Reserved CE_FFE<br />

表 1-45 : 外部 メ モ リ 幅が 72 ビ ッ ト の訂正可能な最初の ECC エラー レ ジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[7:0] CE_FFE R 0 訂正可能なエ ラーが最初に発生し た ECC (ビッ ト [7:0]) です。<br />

表 1-46 : 外部 メ モ リ 幅が 144 ビ ッ ト の訂正可能な最初の ECC エラー レジスタ (CE_FFE)<br />

31 9 8 0<br />

Reserved CE_FFE<br />

表 1-47 : 外部 メ モ リ 幅が 144 ビ ッ ト の訂正可能な最初の ECC エラー レ ジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[8:0] CE_FFE R 0<br />

訂正可能なエ ラーが最初に発生し た ECC (ビッ ト [8:0])<br />

です。<br />

こ のレ ジ ス タ は、 訂正不可能なエ ラーが最初に発生し たア ド レ ス (ビッ ト [31:0]) を格納します。<br />

ECC ステータス レジスタの UE_STATUS ビ ッ ト が ク リ ア さ れる と 、 こ のレ ジ ス タ は次の訂正不可<br />

能なエ ラーのア ド レ ス を格納する ために再度有効にな り ます。 エ ラーが発生し たア ド レ スの格納は<br />

リ セ ッ ト 後に有効にな り ます。<br />

78 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-48 : 訂正不可能な最初のエ ラー データ レジスタ (UE_FFA[31:0])<br />

UE_FFA[63:32]<br />

コアのアーキテクチャ<br />

31 0<br />

注記 : C_S_AXI_ADDR_WIDTH が 33 よ り も小さ い場合、 こ のレ ジ ス タは使用さ れません。<br />

こ のレ ジ ス タは、 訂正不可能なエ ラーが最初に発生し たア ド レ ス (ビット [63:32]) を格納し ます。<br />

ECC ステータス レジスタの UE_STATUS ビ ッ ト が ク リ ア さ れる と 、 こ のレ ジ ス タ は次の訂正不可<br />

能なエ ラーのア ド レ ス を格納する ために再度有効にな り ます。 エ ラーが発生し たア ド レ スの格納は<br />

リ セ ッ ト 後に有効にな り ます。<br />

UE_FFD[31:0]<br />

UE_FFA[31:0]<br />

表 1-49 : 訂正可能な最初のエ ラー アドレス [31:0] レジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] UE_FFA [31:0] R 0<br />

訂正不可能なエ ラーが最初に発生し たア ド レ ス (ビッ ト [31:0])<br />

です。<br />

表 1-50 : 訂正不可能な最初のエ ラー データ レジスタ (UE_FFA[63:32])<br />

31 0<br />

UE_FFA[63:32]<br />

表 1-51 : 訂正不可能な最初のエ ラー アドレス [31:0] レジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] UE_FFA[63:32] R 0<br />

訂正不可能なエ ラーが最初に発生し たア ド レ ス (ビッ ト<br />

[63:32]) です。<br />

こ のレ ジ ス タ は、 訂正不可能なエ ラーが最初に発生し た (未訂正の) エラー データ (ビット [31:0])<br />

を格納します。 ECC ステータス レジスタの UE_STATUS ビッ トがクリアされると、 このレジスタ<br />

は次の訂正不可能なエ ラーのデータ を格納する ために再度有効にな り ます。 エ ラーが発生し たデー<br />

タ の格納は リ セ ッ ト 後に有効にな り ます。<br />

表 1-52 : 訂正不可能な最初のエ ラー データ レジスタ (UE_FFD[31:0])<br />

31 0<br />

UE_FFD[31:0]<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 79<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-53 : 訂正不可能な最初のエ ラー データ [31:0] レジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] UE_FFD[31:0] R 0<br />

UE_FFD[63:32]<br />

こ のレ ジ ス タは、 訂正不可能なエ ラーが最初に発生し た (未訂正の) エラー データ (ビッ ト [63:32])<br />

を格納します。 ECC ステータス レジスタの UE_STATUS ビッ トがクリアされると、 このレジスタ<br />

は次の訂正不可能なエ ラーのデータ を格納する ために再度有効にな り ます。 エ ラーが発生し たデー<br />

タ の格納は リ セ ッ ト 後に有効にな り ます。<br />

UE_FFD[95:64]<br />

訂正不可能なエ ラーが最初に発生し たデータ (ビット [31:0])<br />

です。<br />

表 1-54 : 訂正不可能な最初のエ ラー データ レジスタ (UE_FFD[63:32])<br />

31 0<br />

UE_FFD[63:32]<br />

表 1-55 : 訂正不可能な最初のエ ラー データ [63:32] レジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] UE_FFD [63:32] R 0<br />

訂正不可能なエ ラーが最初に発生し たデータ (ビッ ト [63:32])<br />

です。<br />

注記 : このレジスタは、 DQ_WIDTH が 144 の場合のみ有効です。<br />

こ のレ ジ ス タは、 訂正不可能なエ ラーが最初に発生し た (未訂正の) エラー データ (ビッ ト [95:64])<br />

を格納します。 ECC ステータス レジスタの UE_STATUS ビッ トがクリアされると、 このレジスタ<br />

は次の訂正不可能なエ ラーのデータ を格納する ために再度有効にな り ます。 エ ラーが発生し たデー<br />

タ の格納は リ セ ッ ト 後に有効にな り ます。<br />

表 1-56 : 訂正不可能な最初のエ ラー データ レジスタ (UE_FFD[95:64])<br />

31 0<br />

UE_FFD[95:64]<br />

表 1-57 : 訂正不可能な最初のエ ラー データ [95:64] レジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] UE_FFD[95:64] R 0<br />

訂正不可能なエ ラーが最初に発生し たデータ (ビッ ト [95:64])<br />

です。<br />

80 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


UE_FFD[127:96]<br />

注記 : このレジスタは、 DQ_WIDTH が 144 の場合のみ有効です。<br />

コアのアーキテクチャ<br />

こ のレ ジ ス タは、訂正不可能なエ ラーが最初に発生し た (未訂正の) エラー データ (ビッ ト [127:96])<br />

を格納します。 ECC ステータス レジスタの UE_STATUS ビッ トがクリアされると、 このレジスタ<br />

は次の訂正不可能なエ ラーのデータ を格納する ために再度有効にな り ます。 エ ラーが発生し たデー<br />

タ の格納は リ セ ッ ト 後に有効にな り ます。<br />

表 1-58 : 訂正不可能な最初のエ ラー データ レジスタ (UE_FFD[127:96])<br />

31 0<br />

UE_FFE<br />

UE_FFD[127:96]<br />

表 1-59 : 訂正不可能な最初のエ ラー データ [127:96] レ ジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] UE_FFD[127:96] R 0<br />

訂正不可能なエ ラーが最初に発生し たデータ (ビッ ト [127:96])<br />

です。<br />

こ のレ ジ ス タは、 訂正不可能なエ ラーが最初に発生し た ECC ビ ッ ト を格納し ます。 ECC ステータ<br />

ス レジスタの UE_STATUS ビ ッ ト が ク リ ア さ れる と 、 こ のレ ジ ス タは次の訂正不可能なエ ラーの<br />

ECC を格納する ために再度有効にな り ます。 エ ラーが発生し た ECC の格納は リ セ ッ ト 後に有効に<br />

なります。<br />

表 1-60 および表 1-61 に、 DQ_WIDTH が 72 のときのレジスタ ビ ッ ト の使用を示し ます。<br />

表 1-60 : 外部 メ モ リ 幅が 72 ビ ッ ト の訂正不可能な最初の ECC エラー レジスタ (UE_FFE)<br />

31 8 7 0<br />

Reserved UE_FFE<br />

表 1-61 : 72 ビ ッ ト 外部 メ モ リ 幅の訂正不可能な最初の ECC エラー レジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[7:0] UE_FFE R 0<br />

訂正不可能なエ ラーが最初に発生し た ECC (ビッ ト [7:0])<br />

です。<br />

表 1-62 および表 1-63 に、 DQ_WIDTH が 144 のときのレジスタ ビッ トの使用を示します。<br />

表 1-62 : 外部 メ モ リ 幅が 144 ビ ッ ト の訂正不可能な最初の ECC エラー レジスタ (UE_FFE)<br />

31 9 8 0<br />

Reserved UE_FFE<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 81<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-63 : 144 ビ ッ ト 外部 メ モ リ 幅の訂正可能な最初の ECC エラー レ ジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[8:0] UE_FFE R 0<br />

FI_D0<br />

このレジスタは、 <strong>メモリ</strong>へ書き込まれるデータ (ビット [31:0]) にエラーを挿入するために使用し、<br />

エ ラー訂正およびエ ラー信号のテ ス ト に も利用で き ます。 こ のレ ジ ス タ にセ ッ ト さ れる ビ ッ ト は、<br />

書き込まれる ECC ビ ッ ト に影響を与え る こ と な く メ モ リ へ書き込まれる後続データ の関連する<br />

データ ビッ ト (ワード 0 またはビッ ト [31:0]) を ト グルし ます。 エ ラーの挿入後、 エ ラー挿入デー<br />

タ レ ジ ス タ が自動的に ク リ ア さ れます。<br />

このレジスタは、EDK で C_ECC_TEST および C_ECC が共に ON、または CORE Generator ツー<br />

ルの MIG デザイ ンで ECC_TEST_FI_XOR および ECC が共に ON に設定 さ れた場合にのみ実装<br />

されます。<br />

エ ラーの挿入は、 ソ フ ト ウ ェ アの ク リ テ ィ カルな領域で実行する必要があ り ます。 つま り 、 こ のレ<br />

ジ ス タへの書き込みおよびそれに続 く メ モ リ への書き込みは中断 さ れない よ う に し ます。<br />

表 1-64 : エラー挿入データ レジスタ (FI_D0)<br />

FI_D0、 FI_D1、 FI_D2、 および FI_D3 では 1 つのエ ラー条件のみが適用 さ れる よ う に配慮する必<br />

要があ り ます。<br />

FI_D1<br />

訂正不可能なエ ラーが最初に発生し た ECC (ビッ ト [8:0])<br />

です。<br />

31 0<br />

表 1-65 : エラー挿入データ (ワード 0) レジス タのビ ッ ト の定義<br />

FI_D0<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] FI_D0 W 0<br />

1 にセットされたビット位置は、 <strong>メモリ</strong>へ書き込まれる次のデー<br />

タ ワー ド の関連する ビ ッ ト [31:0] を トグルします。このレジスタ<br />

は、 エ ラーの挿入後に自動的に ク リ ア さ れます。<br />

こ のレ ジ ス タは、 メ モ リ へ書き込まれるデータ (ビット [63:32]) にエ ラーを挿入する ために使用し、<br />

エ ラー訂正およびエ ラー信号のテ ス ト に も利用で き ます。 こ のレ ジ ス タ にセ ッ ト さ れる ビ ッ ト は、<br />

書き込まれる ECC ビ ッ ト に影響を与え る こ と な く メ モ リ へ書き込まれる後続データ の関連する<br />

データ ビッ ト (ワード 1 またはビッ ト [63:32]) を ト グルし ます。 エ ラーの挿入後、 エ ラー挿入デー<br />

タ レ ジ ス タ が自動的に ク リ ア さ れます。<br />

このレジスタは、EDK で C_ECC_TEST および C_ECC が共に ON、または CORE Generator ツー<br />

ルの MIG デザイ ンで ECC_TEST_FI_XOR および ECC が共に ON に設定 さ れた場合にのみ実装<br />

されます。<br />

エ ラーの挿入は、 ソ フ ト ウ ェ アの ク リ テ ィ カルな領域で実行する必要があ り ます。 つま り 、 こ のレ<br />

ジ ス タへの書き込みおよびそれに続 く メ モ リ への書き込みは中断 さ れない よ う に し ます。<br />

82 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-66 : エラー挿入データ レジスタ (FI_D1)<br />

FI_D2<br />

注記 : このレジスタは、 DQ_WIDTH が 144 の場合のみ有効です。<br />

コアのアーキテクチャ<br />

31 0<br />

表 1-67 : エラー挿入データ (ワード 1) レジス タのビ ッ ト の定義<br />

こ のレ ジ ス タは、 メ モ リ へ書き込まれるデータ (ビット [95:64]) にエ ラーを挿入する ために使用し、<br />

エ ラー訂正およびエ ラー信号のテ ス ト に も利用で き ます。 こ のレ ジ ス タ にセ ッ ト さ れる ビ ッ ト は、<br />

書き込まれる ECC ビ ッ ト に影響を与え る こ と な く メ モ リ へ書き込まれる後続データ の関連する<br />

データ ビッ ト (ワード 2 またはビッ ト [95:64]) を ト グルし ます。 エ ラーの挿入後、 エ ラー挿入デー<br />

タ レ ジ ス タ が自動的に ク リ ア さ れます。<br />

このレジスタは、EDK で C_ECC_TEST および C_ECC が共に ON、または CORE Generator ツー<br />

ルの MIG デザイ ンで ECC_TEST_FI_XOR および ECC が共に ON に設定 さ れた場合にのみ実装<br />

されます。<br />

エ ラーの挿入は、 ソ フ ト ウ ェ アの ク リ テ ィ カルな領域で実行する必要があ り ます。 つま り 、 こ のレ<br />

ジ ス タへの書き込みおよびそれに続 く メ モ リ への書き込みは中断 さ れない よ う に し ます。<br />

FI_D0、 FI_D1、 FI_D2、 および FI_D3 では 1 つのエ ラー条件のみが適用 さ れる よ う に配慮する必<br />

要があ り ます。<br />

FI_D3<br />

FI_D1<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] FI_D1 W 0<br />

表 1-68 : エラー挿入データ レジスタ (FI_D2)<br />

注記 : このレジスタは、 DQ_WIDTH が 144 の場合のみ有効です。<br />

1 にセットされたビット位置は、 <strong>メモリ</strong>へ書き込まれる<br />

次のデータ ワー ド の関連する ビ ッ ト [63:32] を トグルし<br />

ます。 こ のレ ジ ス タは、 エ ラーの挿入後に自動的に ク リ<br />

アされます。<br />

31 0<br />

表 1-69 : エラー挿入データ (ワード 2) レジス タのビ ッ ト の定義<br />

FI_D2<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] FI_D2 W 0<br />

1 にセ ッ ト さ れたビ ッ ト 位置は、 メ モ リ へ書き込まれる次のデータ<br />

ワー ド の関連する ビ ッ ト [95:64] を トグルします。このレジスタは、<br />

エ ラーの挿入後に自動的に ク リ ア さ れます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 83<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

このレジスタは、 <strong>メモリ</strong>へ書き込まれるデータ (ビット [127:96]) にエ ラーを挿入する ために使用<br />

し、 エ ラー訂正およびエ ラー信号のテ ス ト に も利用で き ます。 こ のレ ジ ス タ にセ ッ ト さ れる ビ ッ ト<br />

は、 書き込まれる ECC ビ ッ ト に影響を与え る こ と な く メ モ リ へ書き込まれる後続データ の関連す<br />

るデータ ビッ ト (ワード 3 またはビッ ト [127:96]) を ト グル し ます。 エ ラーの挿入後、 エ ラー挿入<br />

データ レ ジ ス タ が自動的に ク リ ア さ れます。<br />

このレジスタは、EDK で C_ECC_TEST および C_ECC が共に ON、または CORE Generator ツー<br />

ルの MIG デザイ ンで ECC_TEST_FI_XOR および ECC が共に ON に設定 さ れた場合にのみ実装<br />

されます。<br />

エ ラーの挿入は、 ソ フ ト ウ ェ アの ク リ テ ィ カルな領域で実行する必要があ り ます。 つま り 、 こ のレ<br />

ジ ス タへの書き込みおよびそれに続 く メ モ リ への書き込みは中断 さ れない よ う に し ます。<br />

表 1-70 : エラー挿入データ レジスタ (FI_D3)<br />

31 0<br />

表 1-71 : エラー挿入データ (ワード 3) レジス タのビ ッ ト の定義<br />

FI_ECC<br />

FI_D3<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[31:0] FI_D3 W 0<br />

1 にセットされたビット位置は、 <strong>メモリ</strong>へ書き込まれる<br />

次のデータ ワー ド の関連する ビ ッ ト [127:96] を トグル<br />

し ます。 こ のレ ジ ス タは、 エ ラーの挿入後に自動的に ク<br />

リアされます。<br />

こ のレ ジ ス タは、 メ モ リ へ書き込まれる生成さ れた ECC にエ ラーを挿入する ために使用し、エ ラー<br />

訂正およびエ ラー信号のテ ス ト に も利用で き ます。 こ のレ ジ ス タ にセ ッ ト さ れる ビ ッ ト は、 メ モ リ<br />

へ書き込まれる次のデータ の関連する ECC ビ ッ ト を ト グルし ます。 エ ラーの挿入後、 エ ラー挿入<br />

ECC レ ジ ス タ が自動的に ク リ ア さ れます。<br />

このレジスタは、EDK でC_ECC_TEST および C_ECC が共に ON、または CORE Generator ツー<br />

ルの MIG デザイ ンで ECC_TEST_FI_XOR および ECC が共に ON に設定 さ れた場合にのみ実装<br />

されます。<br />

エ ラーの挿入は、 ソ フ ト ウ ェ アの ク リ テ ィ カルな領域で実行する必要があ り ます。 つま り 、 こ のレ<br />

ジ ス タへの書き込みおよびそれに続 く メ モ リ への書き込みは中断 さ れない よ う に し ます。<br />

表 1-72 および表 1-73 に、 DQ_WIDTH が 72 のときのレジスタ ビ ッ ト の使用を示し ます。<br />

表 1-72 : 72 ビ ッ ト 外部 メ モ リ 幅のエ ラー挿入 ECC レジスタ (FI_ECC)<br />

31 8 7 0<br />

Reserved FI_ECC<br />

84 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-73 : 72 ビ ッ ト 外部 メ モ リ 幅のエ ラー挿入 ECC レジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

[7:0] FI_ECC R 0<br />

コアのアーキテクチャ<br />

表 1-74 および表 1-75 に、 DQ_WIDTH が 144 のときのレジスタ ビッ トの使用を示します。<br />

ユーザー <strong>インターフェイス</strong> ブロック<br />

UI ブロックは、ユーザー デザイ ンへのユーザー <strong>インターフェイス</strong>を提供します。ネイティブ イン<br />

ターフェイスに代わるシンプルな<strong>インターフェイス</strong>を提供します。UI ブロックの機能は次のとおり<br />

です。<br />

• 読み出しデータおよび書き込みデータ をバ ッ フ ァーする<br />

• 要求順 と 一致する よ う に、 読み出し リ ターン データ の順序を並べ替え<br />

• フラッ ト ア ド レ ス空間であ り 、 それを SDRAM ア ド レ ス空間に変換<br />

ネイティブ <strong>インターフェイス</strong><br />

ネイティブ <strong>インターフェイス</strong>は <strong>FPGA</strong> ユーザー デザイ ン と 接続し、 外部の メ モ リ デバイ スへのア<br />

ク セス を可能に し ます。<br />

コ マン ド 要求信号<br />

1 にセットされたビット位置は、 <strong>メモリ</strong>へ書き込まれる次の<br />

ECC の関連する ビ ッ ト を ト グルし ます。 こ のレ ジ ス タは、 エ<br />

ラーの挿入後に自動的に ク リ ア さ れます。<br />

表 1-74 : 144 ビ ッ ト 外部 メ モ リ 幅のエ ラー挿入 ECC レジスタ (FI_ECC)<br />

31 9 8 0<br />

予約<br />

表 1-75 : 144 ビ ッ ト 外部 メ モ リ 幅のエ ラー挿入 ECC レ ジス タのビ ッ ト の定義<br />

ビット 名前 コア アクセス リセッ ト値 説明<br />

8:0 FI_ECC R 0<br />

FI_ECC<br />

1 にセットされたビット位置は、 <strong>メモリ</strong>へ書き込まれる次の<br />

ECC の関連する ビ ッ ト を ト グルし ます。 こ のレ ジ ス タは、 エ<br />

ラーの挿入後に自動的に ク リ ア さ れます。<br />

ネイティブ <strong>インターフェイス</strong>には、 <strong>メモリ</strong> コント ローラーから<strong>メモリ</strong> デバイ スへの読み出し/書き<br />

込みコ マン ド を要求する ための信号があ り ます。 表 1-76 に、 こ れ ら の信号を示し ます。<br />

表 1-76 : ネイティブ <strong>インターフェイス</strong>のコマンド信号<br />

信号 方向 説明<br />

accept 出力 最後のサ イ ク ルで駆動 さ れた要求を メ モ リ<br />

フェイスが受け取ったことを示します。<br />

インター<br />

bank[2:0] 入力 現在の要求のバン ク を選択し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 85<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-76 : ネイティブ <strong>インターフェイス</strong>のコマンド信号 (続き)<br />

信号 方向 説明<br />

bank_mach_next[] 出力 予約 さ れてい る ため、 未接続に し ます。<br />

cmd[2:0] 入力 現在の要求の コ マン ド を選択し ます。<br />

col[COL_WIDTH – 1:0] 入力 現在の要求の列ア ド レ ス を選択し ます。<br />

data_buf_addr[7:0] 入力 メ モ リ コ ン ト ローラーが次を実行する際のデータ<br />

バッファー アドレスを示します。<br />

• 書き込みコ マン ド 処理で、 データ を書き込む位置<br />

• 読み出し コ マン ド 処理で、 データ を配置する位置<br />

hi_priority 入力 予約 さ れてい る ため、 ロ ジ ッ ク 0 に接続し ます。<br />

rank[] 入力 予約 さ れてい る ため、 ロ ジ ッ ク 0 に接続し ます。<br />

row[ROW_WIDTH – 1:0] 入力 現在の要求の行ア ド レ ス を選択し ます。<br />

use_addr 入力 前ス テー ト で駆動さ れた要求情報が有効であ る こ と を<br />

示す、 ユーザー デザ イ ンのス ト ローブ信号です。<br />

バン ク、 行および列情報に よ って、 読み出し/書き込み先となる メモ リ デバイ スのターゲ ッ ト アド<br />

レスが決定されます。 コマンドは、 コアへの cmd[2:0] 入力を使用して指定します。 表 1-77 に、 有<br />

効な読み出し/書き込みコ マン ド を示し ます。<br />

表 1-77 : <strong>メモリ</strong> <strong>インターフェイス</strong> コマンド<br />

accept<br />

要求を コ アが受け取った こ と をユーザー デザ イ ンに示し ます。 こ の信号は、 accept 信号がアサー ト<br />

された場合は、 最後のサイ クルで要求されたコマン ドが受信されたこ と を示し ます。 ユーザー デザ<br />

イ ンは次の要求を発行する か、 ア イ ド ル ス テー ト へ遷移で き ます。 こ の信号がデ ィ アサー ト さ れた<br />

場合は、 最後のサ イ ク ルで要求さ れた コ マン ド が受信 さ れなかった こ と を示し、 同じ要求を再送す<br />

る必要があ り ます。<br />

use_addr<br />

動作<br />

メ モ リ の読み出し<br />

<strong>メモリ</strong>の書き込み<br />

この信号は、 前サイクルでネイティブ <strong>インターフェイス</strong>に与えられた要求をスト ローブする場合<br />

に、 ユーザー デザイ ンによ ってアサー ト されます。<br />

data_buf_addr<br />

cmd[2:0] Code<br />

ユーザー デザイ ンには、 読み出し/書き込みコ マン ド に使用 さ れるデータ を格納するバ ッ フ ァ ーが<br />

あります。 ネイティブ イ ン ターフ ェ イ スに要求が提示される と、 ユーザー デザイ ンが要求を処理<br />

するバ ッ フ ァ ー内の位置を指示する必要があ り ます。 書き込みコ マン ド の場合、 data_buf_addr は<br />

外部 メ モ リ へ書き込まれる ソ ース データ を含むバ ッ フ ァーのア ド レ ス と な り ます。 一方、 読み出し<br />

コ マン ド の場合は、 外部 メ モ リ か ら読み出 さ れたデータ を受信するバ ッ フ ァーのア ド レ ス と な り ま<br />

す。 要求の処理時に、 コ アが こ のア ド レ ス をエ コー バックします。<br />

86 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

000<br />

001<br />

予約 その他すべてのコー ド


書き込みコ マン ド 信号<br />

コアのアーキテクチャ<br />

ネイティブ <strong>インターフェイス</strong>には、 <strong>メモリ</strong> コ ン ト ローラーが書き込みコ マン ド を処理する際に使<br />

用する信号があ り ます (表 1-78)。 これら の信号は、 ユーザー デザイ ンのバ ッ フ ァー-の制御、 ア<br />

ド レ ス、 およびデータ信号へ接続し ています。<br />

表 1-78 : ネイティブ イ ン タ ーフ ェ イ スの書き込みコ マン ド 信号<br />

信号 方向 説明<br />

wr_data[2 × nCK_PER_CLK × PAYLOAD_WIDTH - 1:0] 入力 書き込みコ マン ド の入力データ です。<br />

wr_data_addr [DATA_BUF_ADDR_WIDTH – 1:0] 出力 書き込みコ マン ド に対する ソ ース データ バッ<br />

フ ァ ーのベース アドレスです。<br />

wr_data_mask[2 × nCK_PER_CLK × DATA_WIDTH/8 - 1:0] 入力 書き込みデータ のバイ ト イネーブル入力です。<br />

wr_data_en 出力 書き込みコ マン ド に対し て、 メ モ リ インター<br />

フェイスがデータ バッファーからデータを読<br />

み出し てい る こ と を示す出力です。<br />

wr_data_offset[0:0] 出力 書き込みコ マン ド に対する ソ ース データ バッ<br />

ファーのオフセット値を示します。 wr_data<br />

こ のバスは、 外部 メ モ リ へ書き込まれるデータ です。 ユーザー デザイ ンのバッ フ ァーのデータ出力<br />

へ接続で き ます。<br />

wr_data_addr<br />

こ のバスは、現在の書き込み要求が提示 さ れた と き の data_buf_addr のエコーです。wr_data_offset<br />

信号 と 組み合わせて、 ユーザー デザ イ ンのバ ッ フ ァーのア ド レ ス入力へ適用で き ます。<br />

wr_data_mask<br />

このバスは、 現時点で外部<strong>メモリ</strong>へ書き込まれているデータのバイ ト イネーブル (データ マスク)<br />

です。 対応する wr_data_mask 信号がデ ィ アサー ト さ れる と 、 メ モ リ のバイ ト が書き込まれます。<br />

wr_data_en<br />

こ の信号がアサー ト さ れてい る場合は、 書き込みコ マン ド に対し て、 コ アがユーザー デザイ ンか ら<br />

データ を読み出し ている こ と を示し ます。 こ れは、 ユーザー デザイ ンのバッ フ ァーのチップ セレ<br />

ク ト 信号へ接続で き ます。<br />

wr_data_offset<br />

こ のバスは、 バース ト 長の処理に 1 サイ クル以上が必要な と きに使用し ます。 rd_data_addr と組み<br />

合わせて、 ユーザー デザ イ ンのバ ッ フ ァーのア ド レ ス入力へ適用で き ます。<br />

読み出し コ マン ド 信号<br />

ネイティブ <strong>インターフェイス</strong>には、 <strong>メモリ</strong> コ ン ト ローラーが読み出し コ マン ド を処理する際に使<br />

用する信号があ り ます (表 1-79)。 これらの信号は、<strong>メモリ</strong> デバイ スか ら ユーザー デザイ ンのバッ<br />

フ ァーへデータ を転送し ます。 それ以外は書き込みコ マン ド 処理の信号 と 同じ です。 フ ォルダー名<br />

が付いた MIG 出力が生成 さ れます<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 87<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-79 : ネイティブ イ ン タ ーフ ェ イ スの読み出し コ マン ド 信号<br />

信号 方向 説明<br />

rd_data[2 × nCK_PER_CLK × PAYLOAD_WIDTH - 1:0] 出力 読み出し コ マン ド か ら の出力データ です。<br />

rd_data_addr[DATA_BUF_ADDR_WIDTH – 1:0] 出力 読み出しコマンドに対する、 デスティネーシ ョ<br />

ン バ ッ フ ァ ーのベース ア ド レ ス を示す出力で<br />

す。<br />

rd_data_en 出力 rd_data バスに有効な読み出しデータ があ る こ<br />

とを示します。<br />

rd_data_offset[1:0] 出力 読み出しコマンドに対する、 デスティネーシ ョ<br />

ン バッファーのオフセッ ト値を示します。<br />

rd_data<br />

こ のバスは、 外部 メ モ リ か ら読み出さ れたデータ です。 ユーザー デザイ ン内にあ るバッ フ ァーの<br />

データ入力へ接続で き ます。<br />

rd_data_addr<br />

こ のバスは、 現在の読み出し要求が提示 さ れた と き の data_buf_addr のエコーです。 rd_data_offset<br />

信号 と 組み合わせて、 ユーザー デザ イ ンのバ ッ フ ァーのア ド レ ス入力へ適用で き ます。<br />

rd_data_en<br />

読み出し要求に対し て、 rd_data に有効な読み出しデータ があ る こ と を示し ます。 こ れは、 ユーザー<br />

デザイ ンのバッ フ ァーのチ ッ プ セレ ク ト 信号へ接続で き ます。<br />

rd_data_offset<br />

こ のバスは、 バース ト 長の処理に 1 サイ クル以上が必要な と きに使用し ます。 rd_data_addr 信号 と<br />

組み合わせて、 ユーザー デザ イ ンのバ ッ フ ァーのア ド レ ス入力へ適用で き ます。<br />

ネイティブ <strong>インターフェイス</strong>のメンテナンス コマンド信号<br />

表 1-80 に、 ネ イ テ ィ ブ <strong>インターフェイス</strong>のメンテナンス コマンド信号を示します。<br />

表 1-80 : ネイティブ <strong>インターフェイス</strong>のメンテナンス コマンド信号<br />

信号 方向 説明<br />

app_sr_req 入力 予約 さ れてい る ため、 ロ ジ ッ ク 0 に接続し ます。<br />

app_sr_active 出力 予約 さ れています。<br />

app_ref_req 入力<br />

app_ref_ack 出力<br />

リフレッシュ コマンドが DRAM へ発行 さ れる よ う に要求する、ア ク テ ィ ブ High の<br />

入力です。<br />

<strong>メモリ</strong> コ ン ト ローラーが要求さ れた リ フ レ ッ シ ュ コマンドを PHY インターフェイ<br />

スへ送信し た こ と を示す、 ア ク テ ィ ブ High の出力です。<br />

88 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-80 : ネイティブ <strong>インターフェイス</strong>のメンテナンス コマンド信号 (続き)<br />

信号 方向 説明<br />

app_zq_req 入力<br />

app_zq_ack 出力<br />

app_ref_req<br />

コアのアーキテクチャ<br />

アクティブ High の入力で、 アサー ト される と 、 メ モ リ コント ローラーが DRAM へリフレッシュ<br />

コ マン ド を発行する よ う に要求し ます。 要求する には、 こ の信号を 1 サ イ ク ル間パルスする必要が<br />

あ り 、 少な く と も要求が認識さ れて送信さ れた こ と を示す app_ref_ack 信号がアサー ト さ れる まで<br />

ディアサート されます。<br />

app_ref_ack<br />

アクティブ High の入力で、アサート されると、 リ フレッシュ要求を認識してコマンドが<strong>メモリ</strong> コ<br />

ントローラーから PHY へ送信さ れた こ と を示し ます。<br />

app_zq_req<br />

アクティブ High の入力で、 アサー ト される と 、 メ モ リ コント ローラーが DRAM へ ZQ キャ リブ<br />

レーシ ョ ン コ マン ド を発行する よ う に要求し ます。 要求する には、 こ の信号を 1 サイクル間パルス<br />

する必要があ り 、 少な く と も要求が認識さ れて送信さ れた こ と を示す app_zq_ack 信号がアサー ト<br />

されるまでディアサート されます。<br />

app_zq_ack<br />

アクティブ High の入力で、 アサー ト される と、 ZQ キャ リブレーション要求を認識してコマンド<br />

が<strong>メモリ</strong> コント ローラーから PHY へ送信 さ れた こ と を示し ます。<br />

クロッキング アーキテクチャ<br />

ZQ キャ リブレーション コマンドが DRAM へ発行 さ れる よ う に要求する、ア ク テ ィ<br />

ブ High の入力です。<br />

<strong>メモリ</strong> コ ン ト ローラーが要求 さ れた ZQ キャ リブレーション コマンドを PHY イン<br />

ターフ ェ イ スへ送信し た こ と を示す、 ア ク テ ィ ブ High の出力です。<br />

PHY デザイ ンでは、PLL モジ ュールを使用し て さ ま ざ ま な ク ロ ッ ク を生成する必要があ り 、ク ロ ッ<br />

ク をデザ イ ン全体に分配する ために、 グ ローバル クロック ネッ ト ワークとローカル クロック ネッ<br />

ト ワー ク の両方を使用し ます。PHY はさらに、PLL と同じバンクに MMCM を 1 つ必要 と し ます。<br />

MMCM によって、 BUFG から PHY の挿入遅延を補正し ます。<br />

ク ロ ッ ク の生成および分配回路 と ネ ッ ト ワー ク は PHY 内部のブ ロ ッ ク を駆動し ます。 こ れ ら のブ<br />

ロックは、次の 4 つの機能に大別さ れます。<br />

• 内部 (<strong>FPGA</strong>) ロジック<br />

• 書き込みパス (出力) I/O ロジック<br />

• 読み出しパス (入力) および遅延 I/O ロジック<br />

• IDELAY 基準 ク ロ ッ ク (200 MHz)<br />

PHY には PLL が 1 つ必要です。 ほ と んどの内部ロ ジ ッ ク 用の ク ロ ッ ク、 PHASER への周波数基<br />

準クロッ ク、 そしてマルチ I/O バンク インプリ メンテーションで PHY 制御ブ ロ ッ ク の同期のため<br />

に必要な同期パルスは、 こ の PLL を使用して生成します。<br />

DDR3 SDRAM の ク ロ ッ ク 周波数が 400MHz ~ 933MHz の場合、 PHASER の 2 つの周波数基準<br />

ク ロ ッ ク の周波数は メ モ リ クロックと同じになります。DDR2 または DDR3 SDRAM の周波数が<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 89<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

400MHz よ り 低い場合は、一方の PHASER 周波数基準 ク ロ ッ ク が メ モ リ ク ロ ッ ク と 同じ周波数で<br />

動作し、 も う 一方は 400MHz ~ 933MHz の範囲要件を満たすよ う に、 メ モ リ ク ロ ッ ク 周波数の 2<br />

倍または 4 倍のいずれかで動作する必要があ り ます。 2 つの PHASER 周波数基準 ク ロ ッ ク は、 同<br />

じ PLL を使用して位相を揃える必要があ り ます。 図 1-32 に、 ク ロ ッ キング アーキテクチャのブ<br />

ロック図を示します。freq_refclk の位相は、 動作周波数および メ モ リ <strong>インターフェイス</strong> ピンに選<br />

択したバンクによって異なり ます。<br />

• GUI で<strong>メモリ</strong> <strong>インターフェイス</strong> ピンに HP バン ク を選択し、 メ モ リ 周波数が 400MHz 以上の<br />

場合、 位相は 337.5 です。<br />

• GUI で<strong>メモリ</strong> <strong>インターフェイス</strong> ピンに HP バン ク を選択し、 メ モ リ 周波数が 200 ~ 400MHz<br />

(400MHz は含まれない) の場合、 位相は 315 です。<br />

• 低電圧デバイ スで GUI で<strong>メモリ</strong> <strong>インターフェイス</strong> ピンに HP バン ク を選択し、 メ モ リ 周波数<br />

が 400MHz 以上の場合、 位相は 337.5 です。<br />

• 低電圧デバイ スで GUI で<strong>メモリ</strong> <strong>インターフェイス</strong> ピンに HP バン ク を選択し、 メ モ リ 周波数<br />

が 200 ~ 400 MHz (400MHz は含まれない) の場合、 位相は 0 です。<br />

• GUI で<strong>メモリ</strong> <strong>インターフェイス</strong> ピンに HR バン ク を選択し、 メ モ リ 周波数が 400MHz 以上の<br />

場合、 位相は 337.5 です。<br />

• GUI で<strong>メモリ</strong> <strong>インターフェイス</strong> ピンに HR バン ク を選択し、 メ モ リ 周波数が 200 ~ 400MHz<br />

(400MHz は含まれない) の場合、 位相は 0 です<br />

PLL 逓倍値 (M) および分周値 (D) のデフ ォル ト 設定では、 シ ス テム ク ロ ッ ク 入力周波数が メ モ リ<br />

ク ロ ッ ク 周波数 と 同じ になっています。 こ の 1:1 の比率は必須ではあ り ません。 PLL 入力分周値<br />

(D) は、 PLL2 の動作条件が満た さ れて適切な制約が適用さ れてい る限 り 、 『7 シ リーズ <strong>FPGA</strong> ク<br />

ロック リソース ユーザー ガイド』 [参照 18] に記載されている値を使用でき ます。 PLL の乗算値<br />

(M) は、必ず 1 ~ 16 (1 と 16 を含む) の中か ら選択し ます。メ モ リ クロックの PLL 出力分周値 (O)<br />

は、 800Mb/s の場合は 2、 400 ~ 800Mb/s の場合は 4 に設定し ます。 PLL VCO の周波数範囲は、<br />

各デバイ スのデータ シー ト に記載さ れてい る範囲内に し て く だ さ い。 sync_pulse は、 mem_refclk<br />

周波数の 1/16 で、 デューテ ィ サイクルは 1/16 (6.25%) の必要があ り ます。 PLL およびシステム<br />

クロック CCIO 入力の物理的配置情報は、 151 ページの 「設計ガ イ ド ラ イ ン」 を参照して く ださい。<br />

90 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-32<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

コアのアーキテクチャ<br />

ISERDES/OSERDES のコネクティビティ情報は、109 ページの図 1-38 および 111 ページの<br />

図 1-40 を参照して く ださい。<br />

内部 (<strong>FPGA</strong>) ロジック クロック<br />

<br />

図 1-32 : クロッキング アーキテクチャ<br />

内部 <strong>FPGA</strong> ロジックは、グローバル クロッキング リソースで DDR2 または DDR3 SDRAM クロッ<br />

クの 1/4 の周波数で ク ロ ッ キ ング さ れます。 こ の PLL は、 高速の DDR2 または DDR3 <strong>メモリ</strong> ク<br />

ロ ッ ク も出力し ます。<br />

書き込みパス (出力) I/O ロジック クロック<br />

データ信号 と 制御信号の両方を含む出力パスは、 PHASER_OUT でクロックが供給されます。<br />

PHASER_OUT は、 OUT_FIFO や OSERDES/ODDR の各バイ ト グループへ同期 ク ロ ッ ク を提供<br />

します。 PHASER_OUT は、 それぞれのバイ ト グループのバイ ト クロック (OCLK)、 分周バイト<br />

クロック (OCLKDIV)、 遅延バイト クロック (OCLK_DELAYED) を生成します。 これらのク ロ ッ<br />

ク は周波数基準 ク ロ ッ ク か ら直接生成さ れ、 相互に位相が揃っています。 バイ ト ク ロ ッ ク は周波数<br />

基準 ク ロ ッ ク と 同じ周波数で、 分周バイ ト ク ロ ッ ク は周波数基準 ク ロ ッ ク の半分の周波数です。 書<br />

き込み DQS とその関連 DQ ビッ トにおいて、必要な 90° の位相オフセ ッ ト を達成するには、<br />

OCLK_DELAYED を使用して DQS ODDR へ ク ロ ッ ク を供給し ます。 ま た、 PHASER_OUT は、<br />

書き込み中の DQS 生成に必要な信号、 データ バイ ト グループに関連する DQS/DQ の トライス<br />

テー ト 信号、およびバイ ト グループの OUT_FIFO のリード イ ネーブル信号を駆動し ます。図 1-38<br />

および図 1-40 に、PHASER_OUT を使用したア ド レス/制御パスおよび書き込みパスの ク ロ ッ キン<br />

グの詳細を示し ます。<br />

読み出しパス (入力) I/O ロジック クロック<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

入力読み出しデータ パスは、 PHASER_IN ブロッ クでクロッ クが供給されます。 PHASER_IN ブ<br />

ロックは、各バイト グループの IN_FIFO と IDDR/ISERDES に同期 ク ロ ッ ク を供給し ます。 こ の<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 91<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

ブ ロ ッ ク は、関連するバイ ト グループの DQS 信号を受信し て、DDR2 または DDR3 SDRAM デー<br />

タ キャプチャ用に 2 つの遅延ク ロ ッ ク (読み出し サ イ ク ル クロック (ICLK)、 読み出し分周バイ ト<br />

クロック (ICLKDIV)) を生成し ます。 ICLK は、 周波数基準 ク ロ ッ ク を遅延し た ク ロ ッ ク で、 関連<br />

する DQS と位相が一致しています。 ICLKDIV は、 ISERDES 内の最初の階層にあ る フ リ ッ プフ<br />

ロップでデータをキャプチャする際に使用します。 この ICLKDIV は ICLK と位相が一致し、<br />

ISERDES の最後の階層にあ る フ リ ッ プフ リ ッ プのパ ラ レル転送用 ク ロ ッ ク です。 ま た、 そのバイ<br />

ト グループの IN_FIFO の書き込みクロッ ク と しても使用されます。 PHASER_IN ブロックも、 バ<br />

イト グループの IN_FIFO の書き込みイ ネーブル (WrEnable) を駆動します。 図 1-40 に、<br />

PHASER_IN を使用し た読み出しパスの ク ロ ッ キ ング詳細を示し ます。<br />

IDELAY 基準ク ロ ッ ク<br />

IDELAYCTRL モジュールには 200MHz の IDELAY ク ロ ッ ク を供給する必要があ り ます。 こ のモ<br />

ジ ュールは、 環境の変化に合わせて I/O 領域内の IDELAY エレ メ ン トのキャ リブレーシ ョ ンを常<br />

時実行し ます。 IP コ アは、 外部 ク ロ ッ ク 信号 が IDELAYCTRL モジ ュールを駆動する こ と を前提<br />

としています。IDELAYCTRL 入力ク ロ ッ ク を PLL クロックで駆動する場合は、PLL ロック信号<br />

を IODELAY_CTRL.v/vhd モジュール内の rst_tmp_idelay 信号に組み込む必要があ り ます。こ れ<br />

に よ り 、 ク ロ ッ ク を使用前に安定させる こ と がで き ます。<br />

92 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-33<br />

<strong>メモリ</strong> コントローラー<br />

User<br />

Interface<br />

Block<br />

コアのアーキテクチャ<br />

コアのデフォルト コンフィギュレーションでは、<strong>メモリ</strong> コント ローラー (MC) が UI ブロック と物<br />

理層の間に配置されます。 図 1-33 に詳細図を示し ます。<br />

rank<br />

bank<br />

row<br />

col<br />

cmd<br />

data_buf_ad dr<br />

hi_priority<br />

use_addr<br />

wr_data<br />

wr_data_mask<br />

accept<br />

bank_mach_next<br />

wr_data_addr<br />

wr_data_en<br />

wr_data_offset<br />

rd_data<br />

rd_data_addr<br />

rd_data_en<br />

rd_data_offset<br />

app_sr_req<br />

app_sr_active<br />

app_ref_req<br />

app_ref_ack<br />

app_zq_req<br />

app_zq_ack<br />

Rank Machines<br />

Bank Machines Arbiter<br />

Column Machine<br />

図 1-33 : <strong>メモリ</strong> コントローラー<br />

<strong>メモリ</strong> コント ローラーは、 <strong>メモリ</strong> <strong>インターフェイス</strong>の主要ロジック ブロックです。UI からの要求<br />

を受信し、 それ ら を論理キ ューに格納し ます。 ま た、 オプシ ョ ンで要求順序を並べ替えて、 シ ス テ<br />

ムの処理スループッ トやレイテンシを向上させます。<br />

<strong>メモリ</strong> コント ローラー ブロ ッ クは、 主に次の 4 つの部分で構成 さ れています。<br />

• 複数のバン ク マシン (コンフィギュレーション可能)<br />

• 複数の ラ ン ク マシン (コンフィギュレーション可能)<br />

• 1 つのカ ラ ム マシン<br />

• アービ ト レーシ ョ ン ブロック<br />

MC/PHY<br />

Interface<br />

Physical<br />

Layer<br />

<strong>UG586</strong>_c1_44_081911<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 93<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

バンク マシン<br />

<strong>メモリ</strong> コント ローラー ロ ジ ッ ク の大部分は、バン ク マシンに含まれます。バン ク マシンは、DRAM<br />

バンクに対応します。 1 つのバン ク マシンが、 常に 1 つの DRAM バンクを管理します。 ただし、<br />

バンク マシンの割 り 当ては動作中に行 う こ と がで き る ため、各物理バン ク に対し て必ずし も 1 つの<br />

バンク マシンは必要あ り ません。バンク数は、 エ リ アとパフォーマンスの ト レードオフを考慮して<br />

設定できます。詳細は、後続の 「プ リ チャージ ポリシー」 を参照して く ださい。<br />

特定 DRAM バンクへのバンク マシンの割り当て期間は、 ターゲッ ト となる DRAM バンクのス<br />

テー ト ではな く 、 ユーザー要求に対応し ます。 要求が受信さ れる と バン ク マシンが割り当てられ、<br />

要求が完了する と 、そのバン ク マシンの割 り 当てが リ リ ース さ れて次の要求を割 り 当てで き る状態<br />

にな り ます。 バン ク マシンは、 要求を完了する ために必要なすべての コ マン ド を発行し ます。<br />

バンク マシンは、 行コ マン ド および列コ マン ド を生成し て現在の要求を完了させます。 こ れ ら の コ<br />

マン ド はそれぞれ独立し ていますが、 DRAM の タ イ ミ ング要件に従 う 必要があ り ます。<br />

次に示すシンプルな例を用いて、 こ の概念を説明し ます。 要求が到達する と き、 メ モ リ コント ロー<br />

ラーおよび DRAM はアイ ドル状態の場合を想定します。 プールの先頭にあるバン ク マシンは次の<br />

動作を行います。<br />

1. ユーザー要求を受信<br />

2. ターゲッ トの行をアクティブ化<br />

3. 列 (読み出し/書き込み) コマンドを生成<br />

4. ターゲッ トの行をプリチャージ<br />

5. バンク マシンのアイ ドル プールへ戻る<br />

異な る行やバン ク を ターゲ ッ ト と する複数の要求が到達する場合も同様の動作 と な り ます。<br />

次に、 すでにア ク テ ィ ブなバン ク マシンで制御されたオープン状態の DRAM バンクをターゲッ ト<br />

と する要求が到達し た場合を考え ます。こ のマシンは、新し い要求が同じ DRAM バンクをターゲッ<br />

トとしていることを認識し、プリチャージ (手順 4) を省略します。アイ ドル プールの先頭にあ るバ<br />

ンク マシンは、 新し いユーザー要求を受け入れて、 ア ク テ ィ ブ化 (手順 2) を省略します。<br />

最後は前の要求 と 次の要求の間に別の要求が到達し、 すべてが同じ DRAM バンクをターゲッ ト と<br />

する場合で、コン ト ローラーはアクティブ化 (手順 2) とプリチャージ (手順 4) の両方を省略し ます。<br />

別の保留要求が同じバン ク を ターゲ ッ ト と し なければ、 バン ク マシンは可能な限りすぐに DRAM<br />

バン ク をプ リ チャージ し ます。 詳細は、 後続の 「プ リ チャージ ポリシー」 を参照して く ださい。<br />

<strong>メモリ</strong> イ ン ターフ ェ イ スのスループ ッ ト を最適化する ために、列コ マン ド の順序を並べ替え る こ と<br />

がで き ます。 順序指定アルゴ リ ズムは、 名目上データ の一貫性を保証し ています。 順序の並べ替え<br />

機能の詳細は、 「順序変更 ( リオーダリング)」 を参照して く ださい。<br />

ランク マシン<br />

ランク マシンは、DRAM ラ ン ク に対応し ます。 ラ ン ク マシンは、 バンク マシンの動作をモニ タ リ<br />

ン グ し、 ラ ン ク や特定デバイ スの タ イ ミ ング パラ メーターを ト ラ ッキングします。 たとえば、 ラン<br />

ク マシンはある時間ウ ィ ン ド ウ内にランクに送信されるアクテ ィブ コマンド数をモニタ リ ングし<br />

ます。 指定したコマンド数が送信される と、 ランク マシンは抑止信号を生成し、 次の コ マン ド を受<br />

信できるよ う時間ウ ィ ンド ウがシフ トするまでバンク マシンがコマン ド を送信しないよ う に制御<br />

し ます。 物理的な DRAM ランクへのランク マシンの割 り 当ては、 静止時に行われます。<br />

94 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


カラム マシン<br />

コアのアーキテクチャ<br />

単一のカ ラ ム マシンは、 DQ データ バスの管理に必要な タ イ ミ ン グ情報を生成し ます。 DRAM ラ<br />

ンクは複数ありますが、 DQ バスは 1 つであ るため、 すべての DRAM ランクのカラムを 1 つのユ<br />

ニ ッ ト と し て管理し ます。 カ ラ ム マシンがバンク マシンで発行されるコマン ド をモニタ リ ングし、<br />

バンク マシンに対し て抑止信号を生成する ため、 DQ バスは順に使用されます。<br />

アービ ト レーシ ョ ン ブロック<br />

アービ ト レーシ ョ ン ブロックは、 DRAM ア レ イへ送信する要求をバン ク マシンから受信します。<br />

行コマンド と列コマンドは別々に調停されます。 コマンドごとに、 アービタ ブロックが行コマンド<br />

および列コ マン ド を選択し て物理層へ転送し ます。アービ ト レーシ ョ ン ブロックでは、ラウンド ロ<br />

ビン方式で転送が行われます。<br />

順序変更 (リオーダリング)<br />

DRAM へのアクセスには、 行コマンド と列コマンドの 2 つを使用し ます。 各要求は論理キ ュー エ<br />

ント リを使用し、キュー エン ト リ それぞれに関連するバンク マシンがあ り ます。 これらのバンク<br />

マシンは、 その時点での DRAM ランクやバンクのステートをトラッキングします。 バンク マシンは、 必要に応じ て現在の要求に適し た ラ ン ク、 バン ク 、 ま たは行をア ク テ ィ ブに し よ<br />

う と し ます。 バン ク マシンは こ の過程で DRAM のス テー ト を確認し、 タ イ ミ ン グ パラ メーターが<br />

満たされているかを判断し ます。 最終的にすべてのタ イ ミ ング パラ メーターが満たされていると、<br />

バンク マシンはアービ ト レーシ ョ ンを経て activate 信号を送信し ます。 アービ ト レーシ ョ ンは、 単<br />

純なラ ウ ン ド ロ ビン方式で実行されます。 複数のバン ク マシンが同時に行コマン ド (アクティブ化<br />

およびプリチャージ) の送信を要求する場合があ る ため、 アービ ト レーシ ョ ンが必要です。<br />

すべての要求に対し てア ク テ ィ ブ化信号が必要と は限 り ません。 前の要求ですでに同じ ラ ン ク、 バ<br />

ンク、行が有効になっている場合は、後続の要求はそのバンク マシンのステート を引き継ぐため、<br />

プリチャージ/アクティブ化は必要ありません。<br />

必要なランク、 バンク、 または行がアクティブ化され、 RAS-CAS 間の遅延タ イ ミ ングが満た され<br />

ている と、 バンク マシンは CAS-READ または CAS-WRITE コマンドを発行しよ う とします。 こ<br />

の場合、 行コ マン ド と は異な り 、 すべての要求に CAS コマンドが必要です。 CAS コマンドを送信<br />

するアービ ト レーシ ョ ン前に、 バンク マシンは DRAM のステート、 DQ バスのス テー ト 、 優先順<br />

位、 および順序を確認する必要があ り ます。 最終的に、 こ れ ら のすべての要素が最適な ス テー ト に<br />

なると、 バンク マシンはアービ ト レーシ ョ ンを実行して CAS コマンドを送信します。 行コマンド<br />

と 同様に、 ラ ウ ン ド ロ ビ ン方式のアービ タ で優先順位を決定し、 次の列コ マン ド を選択し ます。<br />

ラ ウ ン ド ロ ビ ンのアービ タ自体が順序変更を担います。 た と えば、 ア イ ド ル状態の メ モ リ コント<br />

ローラーが リ フ レ ッ シ ュ動作中に新し い要求のバース ト を受信し た場合、 こ れ ら の要求はキ ューに<br />

入 り 、 リ フ レ ッ シ ュ が完了する まで待機する こ と にな り ます。 DRAM が新しいア ク テ ィ ブ化コマ<br />

ン ド を受信で き る よ う にな る と 、 待機中のすべての要求がアービ ト レーシ ョ ン要求を同時にアサー<br />

ト し ます。 そ し て、 アービ タ が、 要求順序か ら は独立し た ラ ウ ン ド ロ ビ ン アルゴ リ ズムに基づい<br />

て、 次に送信する ア ク テ ィ ブ化コ マン ド を選択し ます。 列コ マン ド に対し て も同様のプ ロ セ スが適<br />

用されます。<br />

プリチャージ ポリシー<br />

コ ン ト ローラーは積極的にプ リ チャージを行います。 ト ラ ンザ ク シ ョ ンの完了ご と に、 要求の入力<br />

キ ューを確認し、 現在オープン状態のバン ク/行のキ ューに対し て要求がない場合は、 それを ク ロー<br />

ズ し てそのバン ク 内にあ る別の行への要求レ イ テンシを最小限に抑え ます。 キ ューの深 さ はバン ク<br />

マシンの数と同じであるため、 バンク マシン数 (nBANK_MACHS) を増加させる と、 効率を上げ<br />

る こ と ができ ます。 ただし、 数の増加に伴い、 フ ァ ブ リ ッ ク のタ イ ミ ング要件が厳し く な り ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 95<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

エラー訂正コード<br />

バンク マシン数を増加させながら、 低速のメモ リ ク ロ ッ ク周波数を使用する こ と に よ ってシ ス テ<br />

ム全体の効率を向上させる こ と がで き る場合があ り ます。 最適な設定を判断する には、 ターゲ ッ ト<br />

デザ イ ンのコ マン ド 動作を用いてシ ミ ュ レーシ ョ ン を実行し て く だ さ い。<br />

<strong>メモリ</strong> コント ローラーは、 オプションで ECC (エ ラー訂正コー ド ) をインプリ メント します。 この<br />

コードが DRAM ア レ イ の内容がを破損し ない よ う に保護し ます。 使用する コー ド は、 SECDED<br />

(Single Error Correct Double Error Detect) です。すべてのシングル エ ラーは検出後に訂正 さ れ、す<br />

べての 2 ビッ ト エ ラーは検出さ れます。 3 ビ ッ ト 以上のエ ラーは検出さ れない場合があ り ます。<br />

図 1-34 に、 ECC のブ ロ ッ ク 図を示し ます。 こ れ ら のブ ロ ッ ク は、 メ モ リ コント ローラー (mc.v)<br />

モジュールにインスタンシエー ト されています。<br />

96 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-34<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 1-34 : ECC ブロック図<br />

<br />

<br />

<br />

<br />

<br />

コアのアーキテクチャ<br />

ECC モード はオプシ ョ ンであ り 、データ幅が 72 ビ ッ ト の場合のみ利用で き ます。ECC モード が有<br />

効の場合、 データ マス ク 機能は無効にな り ます。 ま た、 こ のモー ド が有効の と きは、 常にすべての<br />

DQ データ幅に書き込みが実行さ れます。 ECC は DQ データ幅全体に対し て実行 さ れる ため、<br />

DRAM DM ビットは使用できません。ECC と い う 名前の最上位パラ メ ーターが ECC ロジックの<br />

追加を制御し ます。 こ のパ ラ メ ーターが ON に設定される と ECC が有効にな り 、 OFF に設定され<br />

る と 無効にな り ます。<br />

ECC の機能は 3 つの機能ブ ロ ッ ク と し て イ ンプ リ メ ン ト さ れます。書き込みデータ用 ECC マージ/<br />

生成ブ ロ ッ ク、 読み出しデータ用 ECC デコード/訂正ブ ロ ッ ク、 そ し て読み出し/変更/書き込みサ<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 97<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

イ ク ル用の読み出しデータ を一時的に保持するデータ バッファー ブロッ クがあり ます。4 つ目のブ<br />

ロックで ECC H マト リックスを生成し、 それらを ECC 生成および訂正ブ ロ ッ ク へ渡し ます。<br />

フル バース ト の書き込みコマンドの場合、 書き込みデータ バッファーからフェッチしたデータは<br />

ECC マージ/生成ブ ロ ッ ク へ送ら れます。 そ し て、 こ のブ ロ ッ ク で ECC ビ ッ ト を計算し てデータ に<br />

追加し ます。 ECC コードの生成には 1 CLK ステートが与えられます。 したがって、ECC 機能が無<br />

効の場合よ り も、データは書き込みコ マン ド に対し て 1 ス テー ト 分早 く 書き込みデータ バッファー<br />

からフェッチされる必要があります。ユーザー <strong>インターフェイス</strong> レベルでは、コマン ド バッファー<br />

にコマンドが書き込まれてから 1 ス テー ト 以内に書き込みデータ バ ッ フ ァーへデータ が書き込ま<br />

れな く てはな り ません。 データ の早期取得を要する以外には、 ECC による書き込みに対するパ<br />

フ ォーマン ス損失はあ り ません。<br />

読み出し サ イ ク ルの場合、 すべてのデータは ECC デコード/訂正 (ecc_dec_fix) ブロックを通過し<br />

ます。 このプロセスは、 PHY が phy_rddata_valid 信号で読み出しデータ が有効であ る こ と を示し<br />

た と き に開始し ます。デコー ド /訂正プ ロ セ スは、2 つの CLK ステートに分かれます。最初のステー<br />

ト ではシン ド ロームが計算されます。 次のステー ト ではシン ド ロームがデコード され、 指定された<br />

ビッ トの反転 (訂正) が実行されます。 このステー ト ではさ らに、 シン ド ローム ビッ ト と<strong>メモリ</strong> コ<br />

ントローラー コア ロジックで生成されたタイ ミング信号 (ecc_status_valid) に基づいて、<br />

ecc_single および ecc_multiple の値が計算さ れます。 こ のバスには、 現在の読み出し コ マン ド のア<br />

ド レ ス が含まれます。 エ ラ ー箇所は、 ecc_single、 ecc_multiple、 および ecc_err_addr バスを参照<br />

して記録されます。 ECC では、 読み出し要求に対して、 2 ステート分のレイテンシ ペナルテ ィ が<br />

課されます。<br />

読み出し/変更/書き込み<br />

フル DRAM バース ト よ り も小さ い書き込みは、読み出し/変更/書き込みサ イ ク ル と し て実行する必<br />

要があ り ます。 まず指定し た位置が読み出さ れ、必要に応じ て修正 さ れます。 その後、書き込みデー<br />

タとマージされ、ECC が計算されて DRAM アレイへ書き戻されます。 wr_bytes コマンドが ECC<br />

用に定義されます。 このコマン ド が与え られる と、 メ モ リ コント ローラーはシンプルな書き込みサ<br />

イクルではなく、常に読み出し/変更/修正サ イ ク ルを実行し ます。 バイ ト イネーブルは、 シンプル<br />

な コ マン ド に対する場合を含め、 常に有効 と な り ます。 つま り 、 ECC モー ド が有効な場合は、 すべ<br />

ての wr コ マン ド に対し てすべてのバイ ト イ ネーブル信号がアサー ト される必要があ り ます。 ECC<br />

機能が有効なデザ イ ンで メ モ リ へ部分的な書き込みを行 う 場合には、 wr_bytes コマンドのほかに<br />

app_wdf_mask の駆動が必要です。 に、 ECC モード が有効な場合で使用でき る コマン ド を示し ま<br />

す。 表 1-81 に、 ECC モー ド が有効な場合で使用で き る コ マン ド を示し ます。<br />

表 1-81 : app_cmd[2:0] のコマンド<br />

動作 app_cmd[2:0] コード<br />

書き込み<br />

読み出し<br />

書き込みバイ ト<br />

000<br />

001<br />

011<br />

wr_bytes コマンドが与えられると、 <strong>メモリ</strong> コ ン ト ローラーは読み出し/変更/修正 (RMW) サイクル<br />

を実行し ます。 こ の コ マン ド がキ ューの先頭にあ る場合は、最初に読み出し コ マン ド を発行し ます。<br />

ただ し、通常の読み出し コ マン ド と は異な り 、要求はキ ューに残 り ます。読み出し応答キ ューのビ ッ<br />

トがセットされ、これが RMW サ イ ク ルであ る こ と を示し ます。 こ の読み出し コ マン ド に対する読<br />

み出しデータ が返さ れた と き、 app_rd_data_valid はアサー ト されません。 代わ り に ECC がデコー<br />

ド と 必要に応じ て修正 さ れ、 データ が ECC データ バ ッ フ ァ ーへ書 き 込ま れます。 その間、 元の<br />

wr_bytes コマン ド が返されたすべての読み出しデータ を検証し ます。 読み出し リ ターン キューに<br />

98 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-82 : ECC 動作のユーザー <strong>インターフェイス</strong><br />

コアのアーキテクチャ<br />

格納さ れてい る data_buf_addr に基づいて、 wr_bytes 要求は、 読み出しデータ が ECC データ バッ<br />

フ ァーで有効にな る タ イ ミ ン グ を判断で き ます。 こ の時点で、 wr_bytes 要求は、 書き込みコ マン ド<br />

を送信する ためにアービ ト レーシ ョ ン を開始し ます。 コ マン ド が与え ら れる と、 書き込みデータ<br />

バッファーおよび ECC データ バッファーからデータがフェッチされ、バイ ト イネーブルに従って<br />

マージ された後、 ECC が計算されて DRAM にデータが書き込まれます。 wr_bytes コマンドを使<br />

用し た場合のパフ ォーマン スは、 通常の書き込みコ マン ド よ り 大幅に低下し ます。 最善の場合で、<br />

wr_bytes コマンドそれぞれに、 シンプルな DRAM 書き込みサイ クルを割り当てるのではなく、<br />

SRAM 読み出し サ イ ク ル と DRAM 書き込みサイ クルをが 1 つずつ必要です。読み出し か ら書き込<br />

みへ、 書き込みか ら読み出しへの転換ペナルテ ィ に よ って スループ ッ ト は さ ら に低下し ます。<br />

<strong>メモリ</strong> コント ローラーは、 最大で nBANK_MACHS 個までの wr_bytes コマンドをバッファーで<br />

きます。 これらのコマンドがランク バンクで競合しない限り、 メモ リ コ ン ト ローラーは読み出し<br />

コ マン ド を連続し て実行し、 続いて書き込みコ マン ド を実行する こ と で、 読み出し か ら書き込み、<br />

書き込みか ら読み出しへの転換ペナルテ ィ を最小限に抑え ます。 ただ し、 一連の wr_bytes コマン<br />

ドが 1 つのラ ン ク バンクをターゲッ ト とする場合は、 各 RMW サイクルが完全にシリアライズさ<br />

れ、 スループ ッ ト が大幅に低下し ます。 パフ ォーマン ス を重視する場合は、 wr_bytes コマンドは使<br />

用しないこ とを推奨します。<br />

表 1-82 で、 ユーザー <strong>インターフェイス</strong>の ECC ポー ト について詳し く 説明し ます。<br />

信号 方向 説明<br />

app_correct_en_i 入力<br />

app_ecc_multiple_err[7:0] 出力<br />

app_raw_not_ecc_i[7:0] 入力<br />

ECC のセルフテス ト 機能<br />

このアクティブ High 信号がアサー ト さ れる と 、 シン グル ビッ トの<br />

データ エ ラーを訂正し ます。 こ の入力は、 ECC 機能を有効に設定し<br />

た場合のみ有効です。<br />

ECC が有効な場合に適用可能です。 こ れは app_rd_data_valid と共<br />

に有効にな り ます。外部 メ モ リ か ら の読み出し で、読み出しバース ト<br />

に 2 ビ ッ ト のエ ラーがあ る場合、 こ の信号は 0 以外を示し ます。<br />

SECDED アルゴ リ ズムでは、 対応する読み出しデータは訂正 さ れ<br />

ず、こ の信号で 0 以外の値を出力し て、読み出しデータ のエ ラーを UI<br />

に伝えます。<br />

この信号は、 2:1 モード では 4 ビッ トです。<br />

ECC_TEST が有効な (ON) 場合に適用可能です。 こ れは<br />

app_rd_data_valid と共に有効にな り ます。 この信号がアサー ト され<br />

ると、個々のブロックに ECC ビ ッ ト の生データ が書き込まれます。<br />

この信号は、 2:1 モード では 4 ビッ トです。<br />

app_wdf_mask[APP_MASK_WIDTH - 1:0] 入力 app_wdf_data[] にマス ク を提供し ます。<br />

通常動作条件では、 DRAM アレイに書き込まれたデータの ECC 部分は、 ユーザー インターフェ<br />

イ スで視覚的に確認する こ と はで き ません。 こ れでは、 ECC ビ ッ ト に対応する DRAM アレイの<br />

ビッ ト をテス トできないため、システムのセルフテス トにとって問題となる場合があり ます。また、<br />

ECC 生成および訂正ロ ジ ッ ク をテ ス ト する ために、 エ ラー ビッ トを送ることもできません。<br />

ECC の最上位パ ラ メ ーター ECC_TEST で制御する と 、 DRAM アレイのテス ト モード を作成でき<br />

ます。 ECC_TEST パラ メーターが ON の場合、 DQ データ バスの全幅がユーザー インターフェイ<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 99<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

PHY<br />

スの読み出し/書き込みバ ッ フ ァーへ接続さ れます。ECC_TEST を ON にする と、ECC 訂正イ ネー<br />

ブル信号がデ ィ アサー ト さ れます。<br />

DRAM アレイのデータ部分と ECC 部分へ任意のデータ を書き込む場合は、幅拡張 さ れた書き込み<br />

データ FIFO へデータを書き込み、 データ と共に app_raw_not_ecc_i ビッ トをアサートします。<br />

app_raw_not_ecc_i は 7 ビッ ト幅 (2:1 モー ド の場合は 4 ビッ ト) であ り、各 ECC ブロッ クに ECC<br />

ビ ッ ト の生データ (通常の計算 さ れた ECC ビット) の書き込みを可能にします。つまり、任意のパ<br />

ターンを DRAM ア レ イへ書き込むこ と がで き ます。<br />

読み出し イ ン ターフ ェ イ スでは、 拡張さ れたデータ が通常データ と 一緒に現れます。 ただ し、 訂正<br />

機能が、 こ の読み出しデータ を訂正し よ う と し て し まいます。 こ れは通常、 ア レ イ パターンのテス<br />

トには不要なため、app_correct_en_i を 0 に設定し て訂正を無効に し ます。<br />

上記の 2 つの機能に よ り 、 ア レ イ パターン テ ス ト が可能にな り ます。 ECC 生成ロ ジ ッ ク は、 デー<br />

タ パターンを書き込むこ とでテス トできますが、app_raw_not_ecc_i のアサー ト や<br />

app_correct_en_i のデ ィ アサー ト は行いません。ECC のデコード訂正ロジ ッ クは、app_correct_en_i<br />

をアサー ト し、 上記の説明の と お り に生パターン を書き込む こ と でテ ス ト で き ます。 データ の リ ー<br />

ド バ ッ ク 時に、 デコー ド 訂正の動作を監視で き ます。<br />

PHY は、外部の DDR2 または DDR3 SDRAM <strong>メモリ</strong>への物理<strong>インターフェイス</strong>を提供し、(DDR2<br />

SDRAM は現在サポー ト されていない) <strong>メモリ</strong> デバイスとの<strong>インターフェイス</strong>に必要な信号のタイ<br />

ミングおよびシーケンシング (順序) を生成します。 PHY には、 ク ロ ッ ク、 ア ド レ ス、 制御の生成<br />

ロ ジ ッ ク 、書き込み と 読み出し のデータパス、および電源投入後に SDRAM を初期化する ス テー ト<br />

ロ ジ ッ ク が含まれています。 さ ら にシ ス テムの静的遅延および動的遅延を解析する ために、 読み出<br />

しおよび書き込みデータ パスのタイ ミ ング ト レーニングを実行するキャ リ ブレーシ ョ ン ロジック<br />

もあります。<br />

PHY は、 DDR2 および DDR3 SDRAM に対応する 1 つの HDL コード ベースで提供 さ れていま<br />

す。 MIG ツールは、 最上位の HDL パラ メーターおよび UCF (ユーザー制約フ ァ イル) の制約を介<br />

し、 SDRAM タ イ プやその他のデザ イ ン特有のパ ラ メ ーターを カ ス タ マ イ ズ し ます。<br />

PHY アーキテクチャ全体<br />

7 <strong>シリーズ</strong><strong>FPGA</strong> の PHY は専用のブロ ッ ク と ソ フ ト キャ リブレーション ブロックで構成されてい<br />

ます。 専用ブ ロ ッ ク は互いに隣接し て配置 さ れ、 高性能な物理層を構築する ために必要な ク ロ ッ ク<br />

およびデータパス配線を最短に抑え る よ う 、 イ ン ターコ ネ ク ト で直接接続さ れています。 I/O バン<br />

ク内の専用クロッ ク構造はバイ ト グループ クロックと呼ばれ、 このドライバーによって駆動され<br />

る ロー ド 数が最小限にな る よ う に し ます。 バイ ト グループ クロックは、PHASER ブロックで駆動<br />

されます。 PHASER ブロッ ク (PHASER_IN および PHASER_OUT) は、 DQS 信号の変化を動的<br />

に追跡し て正確な位相調整を行 う こ と がで き る マルチス テージのプ ロ グ ラ マブル遅延ラ イ ン ルー<br />

プです。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> の各 I/O バンクには、 1 つの PHY 制御ブ ロ ッ ク、 4 つの<br />

PHASER_IN/PHASER_OUT ブロック、4 つの IN/OUT_FIFO、IOLOGIC (ISERDES、OSERDES、<br />

ODDR、 IDELAY)、 および IOB で構成される専用ブロ ッ クがあ り ます。 1 つの I/O バンクには 4<br />

つのバイ ト グループがあ り、 各バイ ト グループには、 PHASER_IN/PHASER_OUT、 IN_FIFO/<br />

OUT_FIFO、 そして 12 個の IOLOGIC と IOB ブロッ クがあり ます。 バイ ト グループ内にあ る 12<br />

個の IOI のうち 10 個は DQ ビットおよび DM ビッ トに使用され、残りの 2 個は差動 DQS 信号を<br />

インプリ メントに使用されます。 図 1-35 に、 シングル I/O バンクに含まれる専用ブロ ッ クを示し<br />

ます。 PHY 制御ブ ロ ッ ク は、 その I/O バンク内にある 4 つすべての PHASER_IN および<br />

PHASER_OUT ブロック と接続しています。<br />

100 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-35<br />

Phy_Addr/<br />

Phy_Cmd/<br />

Phy_Data<br />

Phy_Clk<br />

Phy_Rd/Wr_En<br />

Phy_Clk<br />

Control<br />

Word/Enables/Status<br />

I/O<br />

FIFOs<br />

PHY<br />

Control<br />

I/O Phasers<br />

InDBClk<br />

InBClk<br />

OutDBClk<br />

OutBClk<br />

DQS<br />

図 1-35 : シングル バンクの DDR2/DDR3 PHY ブロック図<br />

コアのアーキテクチャ<br />

<strong>メモリ</strong> コ ン ト ローラーおよびキ ャ リ ブレーシ ョ ン ロジックは、DDR2 または DDR3 <strong>メモリ</strong> クロッ<br />

クを 4 分周ま たは 2 分周し た低周波数 ク ロ ッ ク ドメインにある、この専用 PHY と通信します。<br />

図 1-36 に、 PHY デザイ ンのブロ ッ ク図を示し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 101<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

IOLOGIC<br />

IOB<br />

CK, CK#, CKE,<br />

Reset#, CS#, O<br />

RAS#, CAS#, W<br />

DDR_Addr [12:0<br />

DDR_BA [2:0],<br />

Data [15:0],<br />

DQS [1:0],<br />

DQS [1:0]#<br />

<strong>UG586</strong>_c1_45_11


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-36<br />

<strong>FPGA</strong><br />

DDR2/<br />

DDR3<br />

Memory<br />

Controller<br />

System Clock<br />

System Reset<br />

IDELAY REFCLK<br />

Initialization<br />

Status<br />

Read<br />

Data Valid<br />

Read<br />

Data Offset<br />

Divided by 2 or 4<br />

of MEM_REFCLK<br />

Reset<br />

System<br />

Clock/Reset<br />

Generation<br />

DDR2/DDR3 SDRAM PHY Interface<br />

Initialization<br />

And<br />

Calibration<br />

Command<br />

Sequencer<br />

PRBS<br />

Data Pattern<br />

Generator<br />

Sync_In<br />

REF_DLL_LOCK<br />

FREQ_REFCLK<br />

MEM_REFCLK<br />

<strong>FPGA</strong> Logic<br />

Memory Addr/Cmd/Control<br />

and I/O FIFO Enables<br />

Write Data/Mask<br />

Read Data<br />

I/O FIFO Status Flags<br />

PHY Control Word/<br />

Control Enable<br />

Calibration Enable<br />

PHY Control Status<br />

Read<br />

Leveling<br />

Stage 1<br />

and 2<br />

Logic<br />

Write<br />

Leveling/<br />

Write<br />

Calibration<br />

Logic<br />

PHASER_IN<br />

Delay<br />

Controls<br />

PHASER_OUT<br />

Delay<br />

Controls<br />

図 1-36 : PHY のブロ ッ ク図<br />

I/O<br />

FIFOs<br />

PHY<br />

Control<br />

Block<br />

PHASER<br />

_INs<br />

PHASER<br />

_OUTs<br />

メ モ リ の初期化およびキャ リ ブ レーシ ョ ンのシーケンス<br />

Addr/Cmc/<br />

Control/<br />

Write Data<br />

IOLOGIC<br />

(ISERDES,<br />

OSERDES,<br />

ODDR,<br />

IDELAY)<br />

DDR2/<br />

DDR3<br />

SDRAM<br />

<strong>UG586</strong>_c1_46_110410<br />

システム リセット信号がディアサートされると、PHY は メ モ リ に必要なパワーオン初期化シーケ<br />

ン ス を実行し ます。 その後、 書き込みおよび読み出し両方のデータパスのタ イ ミ ン グ キャ リブレー<br />

シ ョ ンが複数ス テージ実行さ れます。 キ ャ リ ブレーシ ョ ン完了後、 PHY が初期化の完了を示し、 コ<br />

ントローラーは<strong>メモリ</strong>へコマンドを発行できるようになります。<br />

102 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

ICLK<br />

ICLKDIV<br />

DQS<br />

OCLK<br />

OCLKDIV<br />

OCLK_DELAYED<br />

IOB<br />

Data (DQ)<br />

Mask (DM)<br />

Strobe (DQS)<br />

Addr/Cmd/Control<br />

Clocks


X-Ref Target - Figure 1-37<br />

コアのアーキテクチャ<br />

図 1-37 に、 メ モ リ の初期化および複数ス テージのキ ャ リ ブレーシ ョ ンの全体的な フ ローを示し ま<br />

す。<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 1-37 : PHY 全体の初期化およびキャ リ ブ レーシ ョ ンのシーケンス<br />

図 1-37 に示すキ ャ リ ブレーシ ョ ン工程については、 それぞれ次のセ ク シ ョ ンで説明し ています。<br />

• 112 ページの 「 メ モ リ の初期化」<br />

• 112 ページの 「PHASER_IN 位相ロ ッ ク 」<br />

• 113 ページの 「PHASER_IN DQSFOUND のキャ リ ブレーシ ョ ン」<br />

• 113 ページの 「ラ イ ト レベリ ング」<br />

• 116 ページの 「汎用レ ジ ス タ の リ ー ド レべリ ング」<br />

• 116 ページの 「OCLKDELAYED のキャ リ ブレーシ ョ ン」<br />

• 117 ページの 「書き込みキ ャ リ ブレーシ ョ ン」<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 103<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

• 119 ページの 「 リ ー ド レベリ ング」<br />

• 121 ページの 「PRBS リード レベリ ング」<br />

I/O アーキテクチャ<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> の各 I/O バンクには、1 つの PHY 制御ブ ロ ッ ク 、4 つの PHASER_IN/PHASER_<br />

OUT ブロック、 4 つの IN/OUT_FIFO、 ISERDES、 OSERDES、 ODDR、 IDELAY、 および IOB<br />

で構成される専用ブロ ッ クがあ り ます。 PHY 制御ブ ロ ッ ク は、 その I/O バンク内にある 4 つすべ<br />

ての PHASER_IN および PHASER_OUT ブロック と接続しています。<br />

PHY 制御ブ ロ ッ ク<br />

表 1-83 : PHY 制御イ ン タ ーフ ェ イ ス<br />

PHY 制御ブ ロ ッ ク は、 <strong>FPGA</strong> ロジックと専用 PHY 間のデータ フローを管理して、 情報を制御す<br />

る中央制御ブ ロ ッ ク です。 こ れは、 IN/OUT_FIFO と ISERDES/OSERDES 間のア ド レ ス、 コマン<br />

ド 、データ のフ ローだけでな く 、PHASER_IN および PHASER_OUT ブロックを制御します。PHY<br />

制御ブ ロ ッ ク は、低周波数 (DDR2 または DDR3 SDRAM ク ロ ッ ク 周波数の 1/4) の PHY_Clk レー<br />

トでキャリブレーション ロジックまたは<strong>メモリ</strong> コント ローラーから制御ワードを受信し、DDR ま<br />

たは DDR3 SDRAM クロック レー ト (CK 周波数) でそれらを処理し ます。<br />

キャ リブレーション ロジックまたは<strong>メモリ</strong> コント ローラーは、 アドレス、 コマンド、 およびデー<br />

タ (書き込みコ マン ド の場合) を IN/OUT_FIFO へ書き込むこ と で DDR2/DDR3 SDRAM コマンド<br />

シーケン ス を開始し、同時ま たはその後に、PHY 制御ワー ド を PHY 制御ブ ロ ッ ク に書き込みます。<br />

PHY 制御ワー ド は、 DDR2/DDR3 SDRAM コ マン ド の実行時に PHY 制御ブ ロ ッ ク が行 う 動作を<br />

定義し ます。<br />

PHY 制御ブ ロ ッ ク は、 I/O バンク内のバイ ト グループ ブ ロ ッ ク への制御イ ン ターフ ェ イ ス を提供<br />

します。I/O バン ク を複数イ ンプ リ メ ン ト する必要があ る場合、 各 I/O バンクにあるそれぞれの<br />

PHY 制御ブ ロ ッ ク がそのバン ク 内のバイ ト グループのエレ メ ン ト を制御し ます。 この際、 PHY 制<br />

御ブ ロ ッ ク は、 隣接する PHY 制御ブ ロ ッ ク と 位相が一致し てい る必要があ り ます。 I/O バンクが 3<br />

つインプリ メン ト されている場合は、 中央にある PHY 制御ブ ロ ッ ク がマス ター と し て構成さ れま<br />

す。I/O バンクが 2 つの場合は、いずれか一方の PHY 制御ブ ロ ッ ク をマ ス ター と し て指定で き ます。<br />

PHY 制御イ ン ターフ ェ イ スは、 キ ャ リ ブレーシ ョ ン ロジックや<strong>メモリ</strong> コント ローラーが PHY 制<br />

御ワードを PHY へ書き込む際に使用さ れます。 こ の イ ン ターフ ェ イ スの信号は、 PHY_Clk 信号 と<br />

同期し ます (表 1-83)。 これは、基本の FIFO 型 イ ン タ ー フ ェ イ ス で す。 制御 ワ ー ド は、<br />

PHY_Ctl_WrEn が High で PHY_Ctl_Full が Low のときに、PHY_Clk の立ち上が り エ ッ ジで制御<br />

ワード FIFO へ書き込まれます。I/O バンクが複数ある PHY では、 正し く 動作する ために同じ制御<br />

ワードがそれぞれの PHY 制御ブ ロ ッ ク へ書き込まれる必要があ り ます。<br />

信号 方向 説明<br />

PHY_Clk 入力 制御ワー ド FIFO の PHY <strong>インターフェイス</strong> クロックです。このクロックの立ち上<br />

がりエッジで、PHY 制御ワー ド 信号がキ ャ プチャ さ れます。<br />

PHY_Ctl_Wr_N 入力 制御ワー ド FIFO の書き込みイ ネーブル信号で、 ア ク テ ィ ブ LOW です。 この信号<br />

がアクテ ィブなと きに、 PHY_Clk の立ち上が り エ ッ ジで制御ワー ド が制御ワー ド<br />

FIFO に書き込まれます。<br />

PHY_Ctl_Wd[31:0] 入力 PHY の制御ワード です (表 1-84)。<br />

PHY_Ctl_Full 出力 制御ワー ド FIFO の Full フラグで、アクティブ High です。 制御ワード FIFO がこ<br />

れ以上制御ワー ド を受信で き ない こ と を示し、 書き込みをブ ロ ッ ク し ます。<br />

104 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-83 : PHY 制御イ ン タ ーフ ェ イ ス (続き)<br />

信号 方向 説明<br />

PHY 制御ワー ド は、 次の よ う な構成 と なっています (表 1-84)。<br />

コアのアーキテクチャ<br />

PHY_Ctl_AlmostFull 出力 制御ワー ド FIFO の Almost Full フラグで、アクティブ High です。 PHY_Ctl_Full<br />

信号がア ク テ ィ ブでなければ、 FIFO は制御ワー ド を 1 回のみ受信で き、 それ以上<br />

は受信でき ない こ と を示し ます。<br />

PHY_Ctl_Ready 出力 PHY 制御ブ ロ ッ ク で コ マン ド の受信準備が整 う と アサー ト さ れる、 ア ク テ ィ ブ<br />

High 信号です。<br />

表 1-84 : PHY 制御ワー ド<br />

3 3<br />

1 0<br />

Act<br />

Pre<br />

2 2 2<br />

9 8 7<br />

Event<br />

Delay<br />

2 2<br />

6 5<br />

CAS<br />

Slot<br />

2<br />

4<br />

2<br />

3<br />

2<br />

2<br />

2<br />

1<br />

2<br />

0<br />

1<br />

9<br />

Seq Data Offset<br />

1<br />

8<br />

1<br />

7<br />

16 15<br />

1<br />

4<br />

1<br />

3<br />

1<br />

2<br />

Reser Low<br />

ved Index<br />

• PHY Command – このフィールドは、 専用 PHY を通る コ マン ド およびデータ フローを管理<br />

する際に PHY 制御ブ ロ ッ ク が実行する動作を定義し ます。 PHY コマンドは次のとおりです。<br />

• Write (Wr - 0x01) – ア ド レ ス、 コ マン ド 、 およびデータ OUT_FIFO を読み出し て、 こ れ<br />

らの FIFO か ら読み出し たデータ を関連する IOI へ転送する よ う に PHY 制御ブ ロ ッ ク へ<br />

命令し ます。<br />

• Read (Rd - 0x03) – アドレス、 コマンド OUT_FIFO を読み出し て、 こ れ ら の FIFO から<br />

読み出し たデータ を関連する IOI へ転送する よ う に PHY 制御ブ ロ ッ ク へ命令し ます。 メ<br />

モ リ か ら読み出さ れたデータは、その後にデータ IOI から Data IN_FIFO へ転送 さ れます。<br />

• Non-Data (ND - 0x04) – アドレスおよびコマンド OUT_FIFO を読み出し て、 こ れ ら の<br />

FIFO か ら読み出し たデータ を関連する IOI へ転送する よ う に PHY 制御ブ ロ ッ ク へ命令<br />

します。<br />

• Control Offset – このフィールドは、 アドレスおよびコマンド IN/OUT_FIFO が読み出 さ れて<br />

IOI へ転送さ れる タ イ ミ ン グの制御用です。 制御オフセ ッ ト は、 DDR2 または DDR3 SDRAM<br />

クロック サイクルを単位と しています。<br />

• Auxiliary Output – こ のフ ィ ール ド は、 補助出力信号 (Aux_Output[3:0]) が使用される際の制<br />

御用です。 補助出力は、 読み出しおよび書き込みコ マン ド 中にア ク テ ィ ブにな る よ う 設定で き<br />

ます。 タ イ ミ ング オフセッ トおよび期間は、 106 ページの表 1-85 で説明する属性で制御され<br />

ます。 これらの出力は、MIG ツールで生成さ れた DDR2 および DDR3 <strong>インターフェイス</strong>では<br />

使用さ れません (0 に設定)。<br />

• Low Index (Bank) – 専用 PHY には内部カウ ン ターがあ り 、このフ ィ ールド を使用し てデータ<br />

コマンドに 8 つの DDR2/DDR3 SDRAM バンクの う ちいずれを使用するかを指定します。<br />

MIG IP コ アは こ れ ら の内部カ ウ ン ターを使用し ないため、 こ のフ ィ ール ド 値はすべて 0 にな<br />

ります。<br />

• Reserved – 必ず 2'b00 に設定し ます。<br />

• Data Offset – このフィールドは、PHY コマンドに基づいてデータ IN/OUT_FIFO が読み出し<br />

ま たは書き込み さ れる タ イ ミ ン グの制御用です。 データ オフセッ トは、 DDR2 または DDR3<br />

SDRAM クロック サイクルを単位としています。<br />

• Seq – このフィールドにはシーケンス番号が含まれており、PLL からの Sync_In 制御信号 と 併<br />

用 さ れて、 それぞれの制御キ ューか ら読み出 さ れた コ マン ド を実行する複数の PHY 制御ブ<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 105<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

11 1<br />

0<br />

9 8 7 6 5 4 3 2 1 0<br />

Aux_Out Control Offset PHY Cmd


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-85 : 補助出力の属性<br />

ロックを同期させます。Seq 値が与え られた コマン ド は、 Seq フィールドに定義された特定<br />

フェーズ中に、PHY 制御ブ ロ ッ ク 内のコ マン ド パーサーに よ って実行 さ れる必要があ り ます。<br />

• CAS Slot – 書き込み/読み出し (CAS) コマンド用に<strong>メモリ</strong> コント ローラーで使用されるス<br />

ロット番号です。<br />

• Event Delay – 専用 PHY には内部カウ ン ターがあ り 、 このフ ィ ールド を使用し て、 これらの<br />

カ ウ ン ターに ロー ド さ れる遅延値を指定する必要があ り ます。 イベン ト 遅延は、 DDR2 または<br />

DDR3 SDRAM のクロック サイクルを単位としています。MIG IP コアはこれらの内部カウン<br />

ターを使用し ないため、 こ のフ ィ ール ド 値はすべて 0 にな り ます。<br />

• Activate Precharge – 用 PHY には内部カウ ン ターがあ り 、 このフ ィ ールド を使用し て、 イベ<br />

ント遅延カウンターに関連している DDR2 または DDR3 SDRAM コマンド タイプを指定し<br />

ます。 有効な値は次のとおりです。<br />

• 00 : 動作な し<br />

• 01 : アクティブ化<br />

• 10 : プリチャージ<br />

• 11 : プリチャージ/アクティブ化<br />

MIG IP コ アは こ れ ら の内部カ ウ ン ターを使用し ないため、 こ のフ ィ ール ド 値はすべて 0 にな<br />

ります。<br />

属性 タ イ プ 説明<br />

MC_AO_WRLVL_EN Vector[3:0] PC_Enable_Calib[1] 信号で指定さ れた ラ イ ト レベ リ ン グ中に、 関連する<br />

Aux_Output を有効にする かを指定し ます。 た と えば、 ラ イ ト レベリ ング中に<br />

ODT を有効にするかは、 この属性で指定し ます。<br />

WR_CMD_OFFSET_0 Vector[5:0] 関連する書き込みコ マン ド が実行さ れて補助出力が有効になった後の期間を<br />

DDR2 または DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。た<br />

と えば、こ の属性を使用する と ODT 信号が正し い ク ロ ッ ク サイクルでアサート<br />

されるため、JEDEC ODTLon および ODTLoff の仕様を満たすこ と ができ ます。<br />

WR_DURATION_0 Vector[5:0] 書き込みコ マン ド 用に補助出力をア ク テ ィ ブに維持する期間を DDR2 または<br />

DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。 た と えば、 こ の<br />

属性を使用する と ODT 信号が正し い ク ロ ッ ク サイクルでアサート されるため、<br />

JEDEC ODTLon および ODTLoff の仕様を満たすこ と ができ ます。<br />

RD_CMD_OFFSET_0 Vector[5:0] 関連する読み出し コ マン ド が実行さ れて補助出力が有効になった後の期間を<br />

DDR2 または DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

RD_DURATION_0 Vector[5:0] 読み出し コ マン ド 用に補助出力をア ク テ ィ ブに維持する期間を DDR2 または<br />

DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

WR_CMD_OFFSET_1 Vector[5:0] 関連する書き込みコ マン ド が実行さ れて補助出力が有効になった後の期間を<br />

DDR2 または DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

WR_DURATION_1 Vector[5:0] 書き込みコ マン ド 用に補助出力をア ク テ ィ ブに維持する期間を DDR2 または<br />

DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

RD_CMD_OFFSET_1 Vector[5:0] 関連する読み出し コ マン ド が実行さ れて補助出力が有効になった後の期間を<br />

DDR2 または DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

106 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-85 : 補助出力の属性 (続き)<br />

属性 タ イ プ 説明<br />

コアのアーキテクチャ<br />

RD_DURATION_1 Vector[5:0] 読み出し コ マン ド 用に補助出力をア ク テ ィ ブに維持する期間を DDR2 または<br />

DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

WR_CMD_OFFSET_2 Vector[5:0] 関連する書き込みコ マン ド が実行さ れて補助出力が有効になった後の期間を<br />

DDR2 または DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

WR_DURATION_2 Vector[5:0] 書き込みコ マン ド 用に補助出力をア ク テ ィ ブに維持する期間を DDR2 または<br />

DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

RD_CMD_OFFSET_2 Vector[5:0] 関連する読み出し コ マン ド が実行さ れて補助出力が有効になった後の期間を<br />

DDR2 または DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

RD_DURATION_2 Vector[5:0] 読み出し コ マン ド 用に補助出力をア ク テ ィ ブに維持する期間を DDR2 または<br />

DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

WR_CMD_OFFSET_3 Vector[5:0] 関連する書き込みコ マン ド が実行さ れて補助出力が有効になった後の期間を<br />

DDR2 または DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

WR_DURATION_3 Vector[5:0] 書き込みコ マン ド 用に補助出力をア ク テ ィ ブに維持する期間を DDR2 または<br />

DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

RD_CMD_OFFSET_3 Vector[5:0] 関連する読み出し コ マン ド が実行さ れて補助出力が有効になった後の期間を<br />

DDR2 または DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

RD_DURATION_3 Vector[5:0] 読み出し コ マン ド 用に補助出力をア ク テ ィ ブに維持する期間を DDR2 または<br />

DDR3 SDRAM のクロック サ イ ク ルを単位 と し て指定し ます。<br />

CMD_OFFSET Vector[5:0] 関連する コ マン ド が実行さ れて AO_TOGGLE で指定 さ れた補助出力が ト グル<br />

する期間を DDR2 または DDR3 SDRAM のクロック サイクルを単位と して指<br />

定します。<br />

AO_TOGGLE Vector[3:0] トグル モー ド にな る補助出力を指定し ます。 ト グル モー ド の補助出力は、<br />

CMD_OFFSET が失効し た後に PHY 制御ワー ド で関連する AO ビッ トがセッ<br />

トされると反転します。<br />

同期モー ド が使用さ れ、PHY_Clk は DDR2 あるいは DDR3 SDRAM クロックの 1/4 または 1/2 の<br />

周波数であ る ため、 PHY 制御ブ ロ ッ ク には有効になっていないカ ウ ン ターがい く つかあ り ます。<br />

PHY_Clk のすべての立ち上が り エ ッ ジで、 4 <strong>メモリ</strong> クロック サ イ ク ル相当の コ マン ド 情報および<br />

2 ビットの Seq カウント値を含む PHY 制御ワー ド が PHY へ送信さ れます。 制御 FIFO のライ ト<br />

イ ネーブル信号は常にアサー ト さ れる ため、 同期モー ド の動作では有効な コ マン ド 間に NOP コマ<br />

ンドが発行されます。Seq カウント値は、 4 コマンド シーケンスご と にイ ン ク リ メ ン ト されます。<br />

Seq フィールドを使用して、複数の I/O バンクの PHY 制御ブ ロ ッ ク を同期させます。<br />

DDR3 SDRAM RESET_N 信号は、PHY 制御ワー ド ではな く <strong>FPGA</strong> ロ ジ ッ ク で直接制御 さ れます。<br />

また、RDIMM <strong>インターフェイス</strong>の DDR2 SDRAM RESET_N 信号は、 PHY 制御ワー ド ではな く<br />

<strong>FPGA</strong> ロ ジ ッ ク で直接制御 さ れます。 PHY 制御ブ ロ ッ ク は、 PHASER_OUT と連動して読み出し<br />

コマンドや書き込みコマンド中に書き込み DQS 信号および DQ/DQS 3 ス テー ト 制御信号を生成し<br />

ます。<br />

PHY cmd フィールドは、4 つのコマン ド のシーケン スの状態 (書き込み/読み出し/どちらでもない)<br />

に基づいて設定されます。 コマン ド シーケ ン スに書き込み要求があ る場合、 こ のフ ィ ール ド は書き<br />

込みが設定さ れます。 コ マン ド シーケ ン スに読み出し要求があ る場合は読み出し に、 ど ち ら の要求<br />

も存在しない場合は、 ND (non-data) に設定されます。 4 つのコマン ド のシーケン ス内では書き込<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 107<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

みおよび読み出し要求は発行で き ません。 コ マン ド OUT_FIFO が読み出されて IOLOGIC へ転送<br />

されるタイ ミ ングは、 PHY 制御ワー ド の Control Offset フ ィールドで定義されます。 コマンド<br />

OUT_FIFO に対し て読み出されるデータ OUT_FIFO のタイ ミ ングは、 Data Offset フ ィールドで<br />

定義さ れます。 読み出し コ マン ド の場合、 データ オフセッ ト値はキャ リブレーシ ョ ン中に決定され<br />

ます。 PHY 制御ブ ロ ッ ク は、 読み出し が要求 さ れた時点で、 書き込みコ マン ド に関連する有効な<br />

データ が DQ OUT_FIFO 内にすでに存在し ている こ と を前提と し ています。<br />

コマンド パス<br />

キャ リブレーション ロジックまたは<strong>メモリ</strong> コント ローラーで要求されるコマンドは、PHY 制御<br />

ワード と して PHY 制御ブ ロ ッ ク へ送信さ れる と 同時に、 ア ド レ ス/制御/コマンド OUT_FIFO 入力<br />

されます。PHY_Clk はそれぞれ、 メ モ リ クロックの 4 サイクル分を必要とするため、 アドレス/制<br />

御/コ マン ド 信号は値を 4 クロック サ イ ク ル間保持する必要があ り ます。<br />

3 つのコマン ド があ り ます。<br />

• 書き込みコマンドには、 シンプルな書き込みコマンド とオートプリチャージ付きの書き込みコ<br />

マンドがあ り ます。PHY 制御ワー ド の PHY コマンド値は、 どちらの書き込みコマンド も同じ<br />

(0x01) です。 異な る点は、 OUT_FIFO へ入力さ れる ア ド レ ス値です。 オー ト プ リ チャージ付<br />

き書き込みコマンドの場合、 アド レス OUT_FIFO のビッ ト A10 は 1 となります。<br />

• 読み出し コ マン ド には、 シンプルな読み出し コ マン ド と オー ト プ リ チャージ付き の読み出し コ<br />

マンドがあ り ます。PHY 制御ワー ド の PHY コ マン ド 値は、 どち ら の読み出し コ マン ド も同じ<br />

(0x11) です。 異な る点は、 OUT_FIFO へ入力さ れる ア ド レ ス値です。 オー ト プ リ チャージ付<br />

き読み出し コ マン ド の場合、 ア ド レ ス OUT_FIFO のビッ ト A10 は 1 となります。<br />

• ND (non-data) コマンドには、 Mode Register Set (モード レジスタの設定)、 Refresh ( リフレッ<br />

シュ )、 Precharge (プリチャージ)、 Precharge All Banks (全バン ク をプ リ チャージ)、 Activate (<br />

アクティブ化)、 No Operation (動作な し)、 Deselect (選択解除)、 ZQ Calibration Long (ZQ キャ<br />

リブレーション ロング)、 および ZQ Calibration Short (ZQ キャ リブレーション ショート) があ<br />

ります。PHY 制御ワー ド の PHY コマンド値は、 すべて同じ (0x100) です。 OUT_FIFO へ入<br />

力される ras_n、 cas_n、 we_n、 バンク アドレス、およびアドレス値は、 コマンドによって異な<br />

ります。<br />

図 1-38 に、ア ド レ ス/制御/コマンド パスのブロック図を示します。アドレス/制御/コマンドは SDR<br />

信号であ る ため、 OSERDES はシングル データ レー ト (SDR) モード で使用されます。 PHY 制御<br />

ワードは Phy_Ctl_Wr_N 信号で書き込みが有効にな り 、 OUT_FIFO への入力は PHY_Cmd_WrEn<br />

信号で有効にな り ます。 ア ド レ ス/コマンドの専用 PHY は、必要であればデフ ォル ト で 0 または 1<br />

に設定でき る ため、 PHY 制御ブ ロ ッ ク への有効な コ マン ド の間に長い待機時間があ る場合で も、<br />

<strong>FPGA</strong> ロジックは NOP コ マン ド を発行する必要はあ り ません。<br />

108 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-38<br />

From PHY<br />

Control Block<br />

Mem_Ref_Clk<br />

PHY_Cmd_<br />

AlmostFull<br />

PHY_Cmd_Full<br />

PHY_RAS_N,<br />

PHY_CAS_N,<br />

PHY_WE_N,<br />

PHY_CS_N,<br />

PHY_BA[2:0],<br />

PHY_A[12:0]<br />

PHY_Clk<br />

PHY_Cmd_WrEn<br />

From PHY<br />

Control Block<br />

From PHY<br />

Control Block<br />

From PHY<br />

Control Block<br />

Enable_Calib[1:0]<br />

Burst_Pending<br />

PhaseRef<br />

FreqRef<br />

D<br />

Enable_Calib[1:0]<br />

Burst_Pending<br />

PhaseRef<br />

FreqRef<br />

DQS[1:0]<br />

CTS[1:0]<br />

DTS[1:0]<br />

RdEnable<br />

PHASER_OUT 1<br />

Full AF AE Empty<br />

WClk WEn REn<br />

Enable_Calib[1:0]<br />

Burst_Pending<br />

PhaseRef<br />

FreqRef<br />

D<br />

Enable_Calib[1:0]<br />

Burst_Pending<br />

PhaseRef<br />

FreqRef<br />

OUT_FIFO_1<br />

OCLK_DELAYED<br />

0<br />

OClkDIV OCLK<br />

1<br />

RCLK<br />

OF_RE_1<br />

PHASER_IN 1<br />

DQS[1:0]<br />

CTS[1:0]<br />

DTS[1:0]<br />

RdEnable<br />

Q<br />

IClk1X<br />

IClkDiv<br />

RClk<br />

WriteEnable<br />

PHASER_OUT 0<br />

OCLK_DELAYED<br />

OClkDIV<br />

Full AF AE Empty<br />

OUT_FIFO_0<br />

WClk WEn REn<br />

RClk<br />

OF_RE_0<br />

PHASER_IN 0<br />

Q<br />

IClk1X<br />

IClkDIV<br />

RClk<br />

WriteEnable<br />

DDR_DivClk_1<br />

図 1-38 : アドレス/コマンド パスのブロ ッ ク図<br />

コアのアーキテクチャ<br />

DDR_DivR_Clk<br />

<strong>UG586</strong>_c1_48_030412<br />

図 1-39 に、 OUT_FIFO 出力か ら <strong>FPGA</strong> ピンまでのアドレス/コマンド パスのタイ ミ ング図を示し<br />

ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 109<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

OCLK<br />

BUFIO<br />

DDR_Clk_1<br />

RAS_N,<br />

CAS_N,<br />

WE_N,<br />

BA[2:0],<br />

A[15:12]<br />

A[11:0]<br />

DDR_Clk_0<br />

DDR_DivClk_0<br />

Cmd Byte Group 1<br />

Note: CK is implemented as an<br />

ODDR clocked by DDR_Clk<br />

ODDR<br />

Byte<br />

Group 1<br />

OSERDES<br />

Byte Group 1<br />

Cmd Byte Group 0<br />

OSERDES<br />

Byte Group 0<br />

OBUF<br />

OBUF<br />

OBUF


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-39<br />

CLK<br />

CLKDIV4<br />

RAS_N, CAS_N, WE_N,<br />

CS_N, ADDR, BA<br />

データパス<br />

Cmd 1 Cmd 5<br />

Cmd 2 Cmd 6<br />

Cmd 3 Cmd 7<br />

Cmd 4<br />

Cmd 8<br />

1 2 3 4 5 6 7 8<br />

図 1-39 : アドレス/コマンドのタイミング図<br />

Inputs to OSERDES in SDR<br />

OSERDES Output<br />

<strong>UG586</strong>_c1_49_091311<br />

データパスには、 書き込みデータパス と 読み出しデータパスがあ り ます。 7 <strong>シリーズ</strong> <strong>FPGA</strong> のデー<br />

タパスは、<strong>FPGA</strong> ロジックと<strong>インターフェイス</strong>する IN/OUT_FIFO を使用した専用ロジッ クに完全<br />

に実装されています。 IN/OUT_FIFO は、 ク ロ ッ ク ド メ インをまたぐほかに、 データパスのシ リ ア<br />

ライズ/デシ リ ア ラ イ ズを提供し てい る ため、 <strong>FPGA</strong> ロジックは DDR3 SDRAM クロックの 1/4 の<br />

周波数までの低速動作が可能です。 図 1-40 に、 データパスのブ ロ ッ ク 図を示し ます。<br />

110 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-40<br />

From PHY<br />

Control Block<br />

Mem_Ref_Clk<br />

PHY_OF_<br />

AlmostFull<br />

PHY_OF_Full<br />

PHY_DM[1:0],<br />

PHY_D_Out[15:0]<br />

PHY_Clk<br />

PHY_WrEn<br />

PHY_D_In[15:0]<br />

PHY_RdEn<br />

From PHY<br />

Control Block<br />

From PHY<br />

Control Block<br />

From PHY<br />

Control Block<br />

Enable_Calib[1:0]<br />

Burst_Pending<br />

PhaseRef<br />

FreqRef<br />

Full<br />

D<br />

Empty<br />

Q<br />

DQS[1:0]<br />

CTS[1:0]<br />

DTS[1:0]<br />

OCLK_DELAYED<br />

OCLKDIV<br />

OCLK<br />

PHASER_OUT 3<br />

AF AE Empty<br />

OUT_FIFO_3<br />

WCLK WEn REn<br />

RCLK<br />

Enable_Calib[1:0]<br />

Burst_Pending<br />

PhaseRef<br />

FreqRef<br />

Enable_Calib[1:0]<br />

Burst_Pending<br />

PhaseRef<br />

FreqRef<br />

Full<br />

D<br />

Empty<br />

Q<br />

RdEnable<br />

OF_RE_3<br />

AE AF Full<br />

IN_FIFO_3<br />

REn WEn<br />

IF_WE_3<br />

RCLK<br />

WCLK<br />

Q<br />

D<br />

WriteEnable<br />

PHASER_IN 3<br />

DQS[1:0]<br />

CTS[1:0]<br />

DTS[1:0]<br />

OCLK_DELAYED<br />

OCLKDIV<br />

OCLK<br />

PHASER_OUT 2<br />

AF AE Empty<br />

WClk WEn REn<br />

RClk<br />

Enable_Calib[1:0]<br />

Burst_Pending<br />

PhaseRef<br />

FreqRef<br />

RdEnable<br />

OUT_FIFO_2<br />

OF_RE_2<br />

AE AF Full<br />

IN_FIFO_2<br />

REn WEn<br />

IF_WE_2<br />

RCLK<br />

WClk<br />

Q<br />

D<br />

WriteEnable<br />

PHASER_IN 2<br />

IClkDIV<br />

ICLK<br />

RClk<br />

IClkDIV<br />

ICLK<br />

RClk<br />

図 1-40 : データパスのブロ ッ ク図<br />

DDR_CKE<br />

DDR_DivR_Clk<br />

コアのアーキテクチャ<br />

Data Byte Group 3<br />

Note: CKE is implemented as a SDR OFF clocked by DDR_Clk<br />

DQSTriState_3<br />

DQTriState_3<br />

WrBClk_90_3<br />

<strong>UG586</strong>_c1_33_030412<br />

各 IN/OUT_FIFO には、 メ モ リ エレ メン トのス ト レージ アレイが 10 個のグループ (8 ビッ ト x 8<br />

エン ト リ) と し て配列 さ れています。 書き込み動作では、 OUT_FIFO がキャ リ ブレーシ ョ ン ロジッ<br />

クまたは<strong>メモリ</strong> コント ローラーから各 DQ ビットの 8 ビッ ト データ を受信し、PHY_Clk クロック<br />

ドメイン (DDR2 または DDR3 SDRAM クロックの 1/4 の周波数) でス ト レージ アレイにデータを<br />

書き込みます。 OUT_FIFO は、 8 ビッ トを 4 ビッ トへシリアライズして、OCLKDIV ドメイン<br />

(DDR2 または DDR3 SDRAM クロックの 1/2 の周波数) で OSERDES へ 4 ビッ ト データ を出力<br />

し ます。 さ ら に OSERDES では、 OCLK ドメインで 4 ビッ ト データ をシ リ アル DDR データ ス ト<br />

リームにシリアライズします。PHASER_OUT クロック出力 OCLK を使用して DQ ビッ トへク<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 111<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

DQS_3<br />

D_Out[15:8], DM1<br />

WrDivBClk_3<br />

WrClk_3<br />

DQS_In_1<br />

D_In[15:8]<br />

RdDivBClk_3<br />

RdBClk_3<br />

DDR_RESET_N<br />

DDR_DivR_Clk<br />

WrBClk_2<br />

IOB<br />

Flip-Flop<br />

OSERDES<br />

Byte<br />

Group 3<br />

ISERDES<br />

Byte<br />

Group 3<br />

OBUF<br />

OBUF<br />

IBUF<br />

Data Byte Group 2<br />

Note: RESET_N is implemented as a SDR OFF clocked by DDR_Clk<br />

DQS_2<br />

DQSTriState_2<br />

DQTriState_2<br />

D_Out[7:0], DM0<br />

WrDivBClk_2<br />

WrBClk_90_2<br />

DQS_In_0<br />

D_In[7:0]<br />

RdDivBClk_2<br />

RdBClk_2<br />

IOB<br />

Flip-Flop<br />

OSERDES<br />

Byte<br />

Group 2<br />

ISERDES<br />

Byte<br />

Group 2<br />

OBUF<br />

OBUF<br />

IBUF


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

ロックを供給し、 また OCLK_DELAYED 出力を使用し て DQS へ ク ロ ッ ク を供給する こ と で、 書<br />

き込み時の DQS と それに付随する DQ ビッ ト間に 90° の位相オフセ ッ ト を実現し ます。 ラ イ ト レ<br />

ベリングでは、各 DDR2 または DDR3 コンポーネントの CK に DQS が揃 う よ う に OCLK と<br />

OCLK_DELAYED の両方がシフ ト されます。<br />

IN_FIFO (図 1-39) は、 バイ ト グループの ISERDES でキャプチャ した各 DQ ビッ トから 4 ビッ ト<br />

データ を受信し、 ス ト レージ ア レ イ に書き込みます。 IN_FIFO では、4 ビッ トのデータグラムのう<br />

ち 2 ビットを各 8 ビットの<strong>メモリ</strong> エレ メ ン ト へ書き込むこ と に よ って、さ ら にデータ をデシ リ ア ラ<br />

イズします。この 8 ビッ トのパラレル データ が PHY_Clk クロック ドメイン (DDR2 または DDR3<br />

SDRAM クロックの 1/4 の周波数) で出力されます。IN_FIFO か ら の各読み出し サ イ ク ルには、バー<br />

スト長 8 の<strong>メモリ</strong>読み出し ト ランザクションで読み出されるすべてのバイ ト データ が含まれます。<br />

DDR2 または DDR3 SDRAM クロックの 1/4 の周波数で <strong>FPGA</strong> ロ ジ ッ ク を動作 させた場合、 専用<br />

PHY への入力データ バス幅は、DDR2 または DDR3 SDRAM のデータ バス幅の 8 倍にな り ます。<br />

省電力機能<br />

MIG ツールで生成されたデザインは SSTL T_DCI 規格を使用する ため、 <strong>FPGA</strong> 出力 ド ラ イバーが<br />

アクティブのときは DCI を OFF にして電力を節約します。 さらに、 IOBUF_DCIEN (HP バンク)<br />

および IOBUF_INTERMDISABLE (HR バンク) プ リ ミ テ ィ ブを使用する こ と に よ って、 出力がア<br />

クティブのときに IBUF を自動的に無効に し ます。 コ ン ト ローラーは、 こ れ ら のプ リ ミ テ ィ ブを用<br />

いて、 コン ト ローラーがアイ ドル状態のと きに DCI/IN_TERM および IBUF の両方を無効にし ま<br />

す。<br />

IOBUF_DCIEN および IOBUF_INTERMDISABLE の詳細は、『7 <strong>シリーズ</strong> <strong>FPGA</strong> SelectIO リソー<br />

ス ユーザー ガイド』 を参照して ください。<br />

キャ リ ブ レーシ ョ ンおよび初期化<br />

メ モ リ の初期化<br />

PHY は、 シ ステム リ セ ッ ト がデ ィ アサー ト さ れた後、 メ モ リ に対し て JEDEC 準拠の DDR2 また<br />

は DDR3 初期化シーケン ス を実行し ます。 各 DDR2 または DDR3 SDRAM には一連のモード レ<br />

ジスタがあり、MRS (モード レジスタ セッ ト) コマンドでアクセスします。これらのモード レジス<br />

タでは、 バース ト長、 読み出しおよび書き込み CAS レイテンシ、 追加レイテンシなど、 さまざま<br />

な SDRAM ビヘイ ビ アを定義し ます。 こ れ ら のレ ジ ス タ にプ ロ グ ラ ム さ れる ビ ッ ト 値は PHY で設<br />

定可能であ り 、 最上位の HDL パラ メータ (例 : BURST_MODE (BL)、 BURST_TYPE、 CAS レイ<br />

テンシ (CL)、CAS 書き込みレ イ テンシ (CWL)、オー ト プリチャージ用の書き込みリカバリ (tWR)、<br />

ODT 値 (RTT_NOM および RTT_WR)、 出力駆動能力 (OUTPUT_DRV) など) で判断されます。<br />

PHASER_IN 位相ロ ッ ク<br />

読み出し キ ャ リ ブレーシ ョ ン モー ド では、 フ リ ーラ ンニン グの周波数基準 ク ロ ッ ク を関連する読み<br />

出し DQS 信号の位相 と 揃え る ために PHASER_IN を使用し ます。 キャ リ ブレーシ ョ ン ロジック<br />

は、 連続する読み出し コ マン ド を発行し て PHASER_IN ブ ロ ッ ク に連続する DQS パルスのス ト<br />

リームを与えることで、PHASER_IN の位相を ロ ッ ク し ます。PHASER_IN ブロックがフ リーラン<br />

ニングの周波数基準 ク ロ ッ ク と その関連する読み出し DQS 信号の位相を揃え る には、 連続する<br />

DQS パルスのス ト リ ームが必要です。 各 DQS には、 それに関連する PHASER_IN ブロックがあ<br />

ります。DQS PHASER すべての PHASER_IN ロック信号 (pi_phase_locked) がアサー ト される と、<br />

キャ リブレーション ロ ジ ッ ク が読み出し キ ャ リ ブレーシ ョ ン信号をデ ィ アサー ト し、 PHASER_IN<br />

を通常動作モー ド に し ます。<br />

112 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-41<br />

DQS Centered in<br />

Valid Data Window<br />

RdBCLK<br />

Q2 Input<br />

Q1 Input<br />

Q4 Input<br />

Q3 Input<br />

RdDivBCLK<br />

ISERDES Q4 Output<br />

ISERDES Q3 Output<br />

ISERDES Q2 Output<br />

ISERDES Q1 Output<br />

IN_FIFO wr_Enable<br />

PHASER_IN DQSFOUND のキャ リ ブレーシ ョ ン<br />

コアのアーキテクチャ<br />

異なる DQS グループを同じ PHY_Clk のクロックエッジに揃えるには、 このキャ リブレーション<br />

工程が必要です。 各 DDR2 または DDR3 コンポーネントへのクロック (CK) のフラ イバイ配線が<br />

異な り 、 各コ ンポーネン ト での遅延に差があるため、 スキューは DQS グループによって異な り ま<br />

す。イ ン ターフ ェ イ ス全体の読み出し コ マン ド に対する読み出し data_offset の最適な位置を決定す<br />

る には、 こ のキ ャ リ ブレーシ ョ ン工程が必要です。<br />

この工程では、 PHASER_IN ブロックが通常動作モードで、 キャ リブレーショ ン ロジックによっ<br />

て、 間隔があ る連続し た 4 つの読み出し コ マン ド が発行さ れます。 最初の読み出し コ マン ド に関し<br />

ては、 往復遅延が不明なため、 data_offset 値は正確ではあ り ません。 最初の連続する読み出し コ マ<br />

ンド セッ トの data_offset は CL+7 に設定さ れます。その後の読み出し コ マン ド セッ トに対しては、<br />

PHASER_IN ブロックからの DQSFOUND 出力がアサー ト さ れる まで 1 <strong>メモリ</strong> クロック サイクル<br />

ずつデ ク リ メ ン ト さ れます。 すべてのバイ ト に対し て DQSFOUND 信号がアサー ト さ れる と 、 こ<br />

のキ ャ リ ブレーシ ョ ン工程が完了し ます。<br />

各バイ ト グループはフ ラ イバイ配線が異な り、 遅延差もあるため、 異なる PHY_Clk サイクルで<br />

IN_FIFO か ら読み出さ れます。 し たがって、 全バイ ト グループの IN_FIFO の Not Empty フラグ<br />

を AND 接続し、 こ れを全データ IN_FIFO の読み出し イ ネーブル と し て使用し ます。 図 1-41 に、<br />

読み出しデータ キャプチャのタイ ミング図を示します。<br />

1 2 3 4 5 6 7 8<br />

図 1-41 : 読み出し デー タ キャプチャのタイ ミング図<br />

ライト レベリング<br />

1 3 5 7<br />

2 4 6 8<br />

1 3 5 7<br />

2 4 6 8<br />

1 3 5 7<br />

2 4 6 8<br />

1 5<br />

2 6<br />

3 7<br />

4 8<br />

<strong>UG586</strong>_c1_56_091311<br />

DDR3 SDRAM で利用可能な ラ イ ト レベ リ ン グ機能は、 キ ャ リ ブレーシ ョ ン工程で実行 さ れます。<br />

DDR3 SDRAM モジュールは、 ク ロ ッ ク、 アド レス、 コマン ド、 制御などの信号にフラ イバイ<br />

(Fly-by) トポロジを用いてシグナル イ ンテグ リ テ ィ を改善し ます。 特に、 ク ロ ッ ク 信号、 ア ド レ ス<br />

信号、 および制御信号はすべてデイ ジー チェーン方式で配線さ れ、 各 ト レースの末端は終端処理 さ<br />

れています。 ただし、 これによ ってモジュールの各メ モ リ デバイ スでス ト ローブ信号 (DQS) とク<br />

ロック信号 (CK) 間にスキ ューが生じ ます。DDR3 SDRAM の新機能であ る ラ イ ト レべリ ングを使<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 113<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-42<br />

X-Ref Target - Figure 1-43<br />

COARSEENABLE<br />

COARSEINC<br />

FINEENABLE<br />

FINEINC<br />

Write<br />

Leveling<br />

Logic<br />

CLK at <strong>FPGA</strong> Output<br />

DQS at <strong>FPGA</strong> Output<br />

CK at DDR3 SDRAM<br />

DQS at DDR3 SDRAM<br />

DQS Delayed with<br />

PHASER_Out<br />

DQ Feedback<br />

用する と 、 コ ン ト ローラーが各書き込み DQS の位相を DDR3 SDRAM デバイ スへ転送 さ れた CK<br />

に対し て個別に調整でき ます。 これによ り 、 DQS と CK 間のスキ ューが除去されて、 tDQSS 仕様<br />

を満たすこ と がで き ます。 ラ イ ト レべリ ングでは、 <strong>FPGA</strong> <strong>メモリ</strong><strong>インターフェイス</strong>が DQS を駆動<br />

し、 DDR3 SDRAM デバイ スが DQ を駆動してフ ィードバッ ク を提供し ます。 <strong>FPGA</strong> <strong>メモリ</strong> イン<br />

ターフェイスは、 DQ が 0 から 1 へ遷移する まで DQS を遅延させる こ と がで き ます。 ラ イ ト レべ<br />

リ ン グは、 電源投入後に一度実行さ れます。 フ ィ ー ド バ ッ ク と し て使用するバイ ト 内のビ ッ ト は さ<br />

まざまな<strong>メモリ</strong> ベンダーによって異なるため、キャ リ ブレーシ ョ ン ロジックでは、バイ ト内の DQ<br />

ビッ トに対して OR を実行して遷移を判断し ます。 7 <strong>シリーズ</strong> <strong>FPGA</strong> では、 PHASER_OUT に対<br />

し て細精度ま たは粗精度の遅延調整を実行し て DQS 信号を遅延 さ せる こ と が可能です。 図 1-42<br />

に、 ラ イ ト レベリ ングのブロ ッ ク図を示します。<br />

PHASER_OUT<br />

PHASER_OUT<br />

PHY_CLK<br />

(BUFG)<br />

IN_FIFO<br />

PHASER_IN<br />

0<br />

1<br />

OCLK<br />

DQSBUS[0]<br />

DQSBUS[1]<br />

OCLK_DELAYED<br />

ICLKDIV<br />

ICLK<br />

ODDR<br />

ODDR<br />

ISERDES<br />

<strong>FPGA</strong><br />

図 1-42 : ライト レべリ ングのブロ ッ ク図<br />

DDR3 SDRAM<br />

図 1-43 に、 ラ イ ト レべリングのタイミング図を示します。<strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong>から<br />

DQA パルスが周期的に出力 さ れ、DDR3 SDRAM デバイ スで CK のレベルを検出します。DQS パ<br />

ルス間の間隔は、 最小の 16 クロック サイクルと して指定されます。 フィードバッ クの DQ 入力で<br />

0 から 1 への遷移が検出される まで、 細精度ま たは粗精度の PHASER_OUT 遅延調整を用いて<br />

タップをインクリメントして DQS を遅延 さ せます。 ラ イ ト レべリ ング機能で DQS に遅延させる<br />

と、 tDQSS 仕様を確実に満たす こ と がで き ます。<br />

X<br />

114 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

CK<br />

CK#<br />

DQS<br />

DQS#<br />

DQ<br />

図 1-43 : ライト レべリ ングのタ イ ミ ング図<br />

D Q<br />

Write Level<br />

0 1<br />

Feedback<br />

Regular<br />

<strong>UG586</strong>_c1_51_110710<br />

<strong>UG586</strong>_c1_52_091311


X-Ref Target - Figure 1-44<br />

CLK at DDR3 SDRAM<br />

DQS at DDR3 SDRAM<br />

DQS Delayed with<br />

PHASER_OUT Write<br />

Leveling Complete<br />

コアのアーキテクチャ<br />

図 1-44 では、 ラ イ ト レベ リ ング中に求められる ワース ト ケースの遅延が 1 tCK (DDR3 SDRAM<br />

クロック周期) である こ と を示しています。<br />

図 1-44 : ライト レべリ ングのタ ッ プ要件<br />

イ ン プ リ メ ンテーシ ョ ンの詳細<br />

Approximately 1.0 tCK<br />

Worth of Taps Required<br />

DQ Feedback X<br />

1 0 1<br />

tCK = DDR3 SDRAM Clock Period<br />

<strong>UG586</strong>_c1_53_110410<br />

ライト レべリ ング モー ド の開始を示す Write_Calib_N 信号が tWLDQSEN 後に PHY 制御ブ ロ ッ<br />

ク へ入力 さ れる と 、 ODT アサー ト 後に DQS 信号が確実に Low 駆動し ます。 こ のモー ド では ラ イ<br />

ト レべ リ ン グ用に周期的に DQS 信号を生成する ために、書き込み要求が周期的に PHY 制御ブ ロ ッ<br />

ク に発行 さ れなければな り ません。 ラ イ ト レべリ ングでは、 PHASER_IN がフ リーランニング ク<br />

ロックを出力し、DQ IN_FIFO への DQ フ ィードバックをキャプチャします。 ライト レべリ ング<br />

時、 そのデータ バイ ト グループの IN_FIFO は Flow-Through モード にな り ます。 図 1-45 に、 ラ<br />

イト レべリ ングにおけるコマン ド シーケ ン スのフ ロー図を示し ます。 細精度の PHASER_OUT 位<br />

相シフ ト タップが 1 タップずつインクリメントされ、DQ フィードバックの 0 から 1 への遷移を観<br />

察し ます。 ジ ッ ターがあ る域で間違ったエ ッ ジを検出する リ ス ク を軽減する ため、 ラ イ ト レべリ ン<br />

グ ロ ジ ッ ク には安定し たカ ウ ン ターが実装 さ れます。 カ ウ ン ター値が 3 の場合は、 タ ッ プを 3 回イ<br />

ンク リ メン ト してもサンプルしたデータ値が変らなかったこ とを意味しており、 DQS が CK に対<br />

して安定した領域にあると考えられます。 直前の値と異なる値が検出されると、 カウンター値は 0<br />

にリセットされます。 また、 カウンター値が 3 未満にな る と 、 エ ッ ジ検出が停止し ます。 すべての<br />

ランクの全 DQS でライ ト レべリ ングが実行される と、 write_calib_n 信号がデ ィ アサー ト さ れま<br />

す。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 115<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-45<br />

Issue MR1 Command to Enable<br />

WRLVL for Current Rank<br />

Assert ODT after MOD<br />

Assert write_calib_n Input to PHY<br />

Control Block after WLDQSEN<br />

Issue Write Command to PHY<br />

Control Block for DQS Pulse Generation<br />

Wait for 16 Memory Clock Cycles<br />

0-to-1<br />

Transition When<br />

Stable Counter<br />

==3 ?<br />

No<br />

Yes<br />

Increment Fine/Coarse PHASER_OUT<br />

Delay for DQS being Write Leveled<br />

Wait a Few Cycles for PHASER_OUT<br />

Delay to Settle<br />

図 1-45 : ライト レべリ ングのフロー図<br />

汎用レ ジス タの リ ー ド レべリング<br />

このキャ リブレーション工程では、 書き込み DQS は書き込み DQ ウ ィンドウの中央に位置してい<br />

ません。 ま た読み出し DQS も読み出し DQ ウ ィ ン ド ウ の中央に位置し ていません。 汎用レ ジ ス タ<br />

(MRP) は、 DQS を読み出し DQ ウ イ ン ド ウ の中央に位置する よ う に調整する ために使用し ます。<br />

MRP には、あ ら か じ め定義さ れた 01010101 パターンがあり、このキャ リブレーショ ン工程でリー<br />

ド バッ ク されます。 キ ャ リ ブレーシ ョ ンの次の工程では、 読み出し DQS が中央に位置し ている必<br />

要があ り ます。<br />

OCLKDELAYED のキャ リ ブレーシ ョ ン<br />

<strong>UG586</strong>_c1_54_110410<br />

このキャ リブレーション工程では、 Phaser_Out ステージ 3 遅延を使用し て書き込み DQ ウ ィンド<br />

ウ の中央に書き込み DQS が位置する よ う に し ます。 ス テージ 3 の開始タ ッ プ値は 30 です。<br />

ステージ 3 の タ ッ プはまず、 エ ッ ジが検出 さ れるかタ ッ プ値が 0 に到達する までデ ク リ メ ン ト し ま<br />

す。 その後 30 までインク リ メン ト します。 31 か ら エ ッ ジ検出を開始し、 エ ッ ジが検出 さ れる か<br />

116 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

No<br />

Increment<br />

Rank Count<br />

Is current<br />

rank done?<br />

No<br />

Increment DQS<br />

count to next DQS<br />

in active rank<br />

Deassert Write_calib_n<br />

Input to Phaser Control Block<br />

Yes<br />

Yes<br />

All Ranks<br />

Done?<br />

Issue MR 1 to<br />

Disable Write<br />

Level for<br />

Current Rank


X-Ref Target - Figure 1-46<br />

CK@Comp.1<br />

DQS @ Comp 1<br />

before write leveling<br />

Write leveled<br />

DQS @ Comp 1<br />

aligned with<br />

write command CK<br />

CK@Comp.9<br />

DQS@Comp.9<br />

before write leveling<br />

Write leveled DQS @<br />

comp. 9 one cycle<br />

earlier than<br />

Wr_CmdCK<br />

edge so DQS/DQ<br />

requires an additional<br />

cycle of delay<br />

コアのアーキテクチャ<br />

タップ値が 63 に到達する まで継続し ます。 そ し て検出 さ れたエ ッ ジに基づいて中央 と な る位置が<br />

計算さ れ、 計算さ れた値までス テージ 3 のタップがデク リ メン ト します。 そして検出されたエッジ<br />

に基づいて中央と な る位置が計算され、 計算された値までステージ 3 のタップがデク リ メン ト しま<br />

す。<br />

ステージ 3 のタップがデク リ メン トするごとに、ステージ 2 のタップが 2 ずつイ ン ク リ メ ン ト さ れ<br />

て、 ラ イ ト レべ リ ングで確立 さ れた DQS と CK の関係を維持し ます。 同様に、 ス テージ 3 のタッ<br />

プのイ ン ク リ メ ン ト ご とに、 ステージ 2 のタップが 2 ずつデク リ メ ン ト さ れます。 ス テージ 2 の<br />

タップが 0 または 63 に到達し た場合、 t DQSS 違反を避け る ためにス テージ 3 のタップのインク リ<br />

メント/デク リ メン トが追加で 15 回実行で き る よ う にな り ます。 こ のキ ャ リ ブレーシ ョ ン工程の最<br />

後には、 ラ イ ト レべ リ ングが再度実行さ れ、 ス テージ 2 のタップを使用して DQS と CK 位相を揃<br />

えられます。<br />

書き込みキャ リ ブ レーシ ョ ン<br />

このキャ リブレーシ ョ ン工程では、 正しいデータ パターン シーケンスの検出が必要なため、 ラ イ<br />

ト レべ リ ングの両工程が完了し た後に書き込みキ ャ リ ブレーシ ョ ンが実行さ れます。 DQS 信号を<br />

正しい CK エ ッ ジへ揃え る ために書き込みキ ャ リ ブレーシ ョ ンが必要です。 ラ イ ト レべリ ング中<br />

に、 DQS は CK 信号の直近の立ち上が り エ ッ ジに揃え られます。 ただし、 このエ ッ ジは書き込み<br />

コマンドをキャプチャするエッジではない場合があり ます。 <strong>インターフェイス</strong>のタイプ (UDIMM、<br />

RDIMM、 またはコンポーネント) によって、 DQS は書き込みコマン ド をキ ャプチャする CK エッ<br />

ジよ り 1 サイクル前、 1 サイクル後 、 または同じサイクルに揃います。図 1-46 に、 UDIMM また<br />

は RDIMM <strong>インターフェイス</strong>の DQS と CK 間の初期の位相関係に基づ く い く かの場合を示し ま<br />

す。 図 1-47 では、 コンポーネン ト <strong>インターフェイス</strong>の最初の DQS と CK の位相一致を示し てい<br />

ます。 前提条件 と し て、 コ ンポーネン ト <strong>インターフェイス</strong>はフライバイ ト ポ ロ ジ も使用する ため、<br />

ライト レべ リ ン グが必要です。<br />

938 ps<br />

1600 ps<br />

図 1-46 : UDIMM/RDIMM の DQS と CK 間の初期ア ラ イ メ ン ト<br />

CK edge that clocks Wr_Cmd<br />

<strong>UG586</strong>_c1_57_091311<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 117<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-47<br />

CK@Comp.1<br />

DQS@Comp.1<br />

Write leveled DQS @<br />

Comp. 1 one cycle<br />

after the Wr_CmdCK<br />

edge so DQS/DQ must<br />

be sent out CWL-1<br />

after the Wr_Cmd<br />

X-Ref Target - Figure 1-48<br />

CK@comp.1<br />

Write leveled<br />

DQS@Comp.1<br />

aligned to the<br />

Wr_Cmd CK edge<br />

DQ@comp.1<br />

図 1-47 : コンポーネントの DQS-CK 間の初期ア ラ イ メ ン ト<br />

PHASER_OUT を使用する細精度および粗精度の遅延は、ラ イ ト レべリ ングに 1t CK 相当の遅延を<br />

与えます。 正しい CK エ ッ ジへ位相を揃え る ために追加で必要 と な る ク ロ ッ ク サイクル遅延には、<br />

粗精度の遅延ラ イ ン を使用し ます。 必要な合計遅延が 1 クロック サイクルを超える場合、<br />

PHASER_OUT ブ ロ ッ ク には循環バ ッ フ ァーが追加さ れてい る ため、 PHASER_OUT ブロックへ<br />

の div_cycle_delay 入力を アサー ト する必要はあ り ません。<br />

イ ン プ リ メ ンテーシ ョ ンの詳細<br />

938 ps<br />

CK edge that clocks Wr_Cmd<br />

<strong>UG586</strong>_c1_58_091311<br />

既知の書き込みデータ パターン (FF 00 AA 55 55 AA 99 66) の書き込みコ マン ド が特定位置に対し<br />

て発行さ れます。 その後、同じ位置に読み出し コ マン ド が発行 さ れます。IN_FIFO から リード バッ<br />

ク さ れたデータ が予測データ パターン と バイ ト ご と に比較さ れます。 読み出さ れたデータ と 予測<br />

データ が一致する場合は、 そのバイ ト の書き込みパスでは変更が必要です (図 1-48)。 リードバック<br />

された最初の 2 つのデータ ワードが、予測パターンの 2 つ目のワー ド セ ッ ト と 一致する場合、DQS<br />

と DQ トライステート信号を 1 <strong>メモリ</strong> ク ロ ッ ク 分遅延 させる必要があ り ます。 図 1-49 に詳細図を<br />

示します。すべてのバイトがキャリブレートされた後、キャリブレーション ロジックが<br />

init_calib_complete 信号を アサー ト し、初期化 と キ ャ リ ブレーシ ョ ン シーケン スが完了し た こ と を<br />

示します。これで<strong>メモリ</strong> コ ン ト ローラーは、ア ド レ ス、コ マン ド 、およびデータ バスを駆動できます。<br />

CK edge that clocks Wr_Cmd<br />

CLW = 9<br />

FF 00 AA 55 55 AA 99 66<br />

図 1-48 : 正しい CE エッジに揃った DQS 信号 - 書き込みパスの変更な し<br />

<strong>UG586</strong>_c1_59_091311<br />

118 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-49<br />

CK@comp.9<br />

Write leveled<br />

DQS@comp.9<br />

one cycle earlier than<br />

Wr_Cmd CK edge<br />

DQS@comp.9<br />

must be delayed by<br />

1 memory clock cycle<br />

CK edge that clocks Wr_Cmd<br />

リード レベリング<br />

コアのアーキテクチャ<br />

データ キ ャ プチ ャ の最初の段階では、 読み出し有効データ ウ ィ ン ド ウ の中央に読み出し ス ト ロー<br />

ブ信号を位置させるため、 ラ イ ト レべリ ングのステージ 1 が必要です。 DDR2 または DDR3<br />

SDRAM などのス ト ローブ ベースの メ モ リ <strong>インターフェイス</strong>では、 2 番目の転送段階で別のパル<br />

スが必要です。 この信号は、 7 <strong>シリーズ</strong> <strong>FPGA</strong> では PHASER_IN ブロックから提供されます。 こ<br />

のキ ャ リ ブレーシ ョ ン工程では、 PHASER_IN のステージ 2 細精度の遅延ラ イ ン を使用し て、 キ ャ<br />

プチャ クロックを有効な DQ ウ ィ ン ド ウの中央に揃え ます。キ ャ プチャ クロックは、PHASER_IN<br />

の位相ロ ッ ク ス テージで読み出し DQS 信号 と 位相が一致し てい る フ リ ーラ ンニン グの<br />

FREQ_REF ク ロ ッ ク 信号です。 PHASER_IN は、 ICLK および ICLKDIV の 2 つのク ロ ッ ク を提<br />

供します。 ICLK はステージ 2 の遅延出力で、 ICLKDIV は ICLK を 2 分周し、 こ れ と 立ち上が り<br />

エッジが揃ったクロックです。<br />

1 つの PHASER_IN ブロックの ICLK および ICLKDIV 出力を使用し て、 1 つのバイ ト グループ<br />

内のすべての DQ ISERDES へ ク ロ ッ ク を供給し ます。 ICLKDIV も読み出し DQ IN_FIFO の書き<br />

込み ク ロ ッ ク と し て使用し ます。1 つの PHASER_IN ブロックは、12 の I/O からなる 1 つのグルー<br />

プに関連付け ら れています。 7 <strong>シリーズ</strong> <strong>FPGA</strong> の各 I/O バンクには 4 つの PHASER_IN ブロック<br />

があるため、 1 つのバン ク に DDR2 または DDR3 SDRAM の 4 バイ ト を置く こ とができます。<br />

イ ン プ リ メ ンテーシ ョ ンの詳細<br />

CWL = 9<br />

FF 00 AA 55 55 AA 99 66<br />

図 1-49 : 正しいエッジに揃った DQS 信号 - DQS/DQ 信号を 1 <strong>メモリ</strong> クロック サイ クル分遅延<br />

<strong>UG586</strong>_c1_60_091311<br />

リード レベ リ ン グの こ の工程では、 1 バイ ト ずつ各 DQS をその有効バイ ト ウ ィンドウの中央に揃<br />

え ます。 こ の工程では最初に特定の DDR2 または DDR3 SDRAM ア ド レ ス位置に対し て定義済み<br />

のデータ パターン を使用し た書き込みコ マン ド を発行し ます。 こ の書き込みコ マン ド の後、 連続し<br />

た読み出し コ マン ド を発行し、書き込み先 と 同じ ア ド レ ス位置か ら連続し てデータ を読み出し ます。<br />

DQ ウ ィ ン ド ウ のエ ッ ジが検出 さ れる まで、 アルゴ リ ズムがバイ ト 内のすべての DQ ビッ トに対し<br />

て同時に IDELAY タップをインクリメントします。IDELAY イ ン ク ー リ メ ン ト の終了時は、 DQS<br />

がウ ィ ン ド ウ の左端ま たは左端手前に位置し ます。<br />

キャ リブレーション ロジックは IN_FIFO か らデータ を読み出し、 比較する ために記録し ておき ま<br />

す。 こ のキ ャ リ ブレーシ ョ ン工程では、 データ パターンのシーケン スが重要です。 細精度の遅延ラ<br />

インでタップが 0 の場合における DQS とデータ ウ ィ ン ド ウ の最初の位置関係はわかっていませ<br />

ん。 アルゴ リ ズムは、 PHASER_IN のファ イン遅延ラ インを使用して、 DQ ウ ィンドウのエッジが<br />

検出さ れる まで DQS 信号を遅延させます。<br />

データ ウ ィ ン ド ウ を検出する には、同じ タ ッ プ値で複数サ イ ク ルにわたってデータ を読み出し て平<br />

均を求める アルゴ リ ズム を使用し ます。サンプ リ ング サイクル数は 214 に設定さ れています。平均<br />

化以外に も、DQS が不安定なジ ッ ター領域に位置し てい る かど う かカ ウ ン ターを使用し て追跡し ま<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 119<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

す。 カ ウ ン ター値が 3 の場合は、 タ ッ プを 3 回イ ン ク リ メ ン ト し て もサンプルし たデータ値が変わ<br />

ら なかった こ と を意味し てお り 、DQS が安定領域にあ る と 考え ら れます。直前の値 と 異な る値が検<br />

出される と、 カウンター値は 0 に リ セ ッ ト さ れます。 次に、 データ不一致が検出さ れる まで DQS<br />

PHASER_IN ブ ロ ッ ク の細精度の位相シフ ト 遅延ラ イ ン を 1 タ ッ プずつイ ン ク リ メ ン ト し ます。所<br />

定の安定時間の後、IN_FIFO か ら読み出し たデータ を直前の タ ッ プ値で記録し たデータ と 比較し ま<br />

す。 こ の比較を、 データ不一致が検出さ れる まで、 すなわち有効なデータ ウ ィンドウのエッジが検<br />

出されるまで繰り返します。安定したカウンター値が定数 3 になった と き の細精度の PHASER_IN<br />

位相シ フ ト タ ッ プの数が有効ウ ィ ン ド ウ です。 こ のアルゴ リ ズムに よ り 、 不安定なジ ッ ター領域で<br />

有効エ ッ ジを誤検出する可能性が抑え られます。<br />

データ ウィンドウに関する DQS の初期位置については 3 つの場合があ り ます。 DQS の最初の有<br />

効な立ち上が り エッ ジは、 前のデータ ウィンドウ内、現在のデータ ウィンドウの左側にあるノイ<br />

ズ領域、 ま たは現在のデータ ウ ィ ン ド ウ内ではあ る が ノ イ ズ領域の直後、 のいずれかです。 細精度<br />

の PHASER_IN 遅延ラ イ ンには 64 タップあります ( このタップはビット時間に相当するため、タッ<br />

プ リ ゾ リ ューシ ョ ンは周波数によ って異なる)。最初の 2 つの場合は、ビ ッ ト 時間の半分以下の タ ッ<br />

プ数で左側のデータ ウ ィ ン ド ウ が検出 さ れ、2 つ目のウ ィ ン ド ウ エ ッ ジは周波数や ノ イ ズ領域の幅<br />

によっては検出されないこ とがあり ます。 3 つ目の場合は、 1 ビ ッ ト 時間に近いタ ッ プ数で検出さ<br />

れた右側のウ ィ ン ド ウ エ ッ ジ と な り ます。 両エ ッ ジが検出さ れる と 、 最終的な DQS タップ値は次<br />

の よ う に算出さ れます。<br />

first_edge_taps + (second_edge_taps - first_edge_taps)/2<br />

エッジが 1 つのみ検出さ れ、 その タ ッ プ数がビ ッ ト 時間の半分以下の場合、 最終的な DQS タップ<br />

値は次のよ う に算出されます。<br />

(first_edge_taps + (63 - first_edge_taps)/2)<br />

エッジが 1 つのみ検出さ れて、 その タ ッ プ数がほぼ 1 ビ ッ ト 時間に相当する場合、 最終的な DQS<br />

タ ッ プ値は次の よ う に算出さ れます。<br />

(63 - ((63 - first_edge_taps)/2))<br />

120 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-50<br />

<br />

<br />

<br />

<br />

<br />

コアのアーキテクチャ<br />

図 1-50 に、 データ有効ウ ィ ン ド ウに対し て DQS が中央に位置し てい る タ イ ミ ン グ図を示し ます。<br />

<br />

<br />

図 1-50 : リード レベリング ステージ 1 のタイ ミング図<br />

PRBS リード レベリング<br />

読み出し キ ャ リ ブレーシ ョ ンの こ の工程は リ ー ド レベリ ングのキャ リ ブレーシ ョ ン工程に続きま<br />

す。 リ ー ド レベ リ ン グのキ ャ リ ブレーシ ョ ン工程で決定する細精度の DQS PHASER_IN タップ設<br />

定は、 こ のキ ャ リ ブレーシ ョ ン工程の開始点 と し て使用 さ れます。 PRBS リード レベリ ングによっ<br />

て、 リ ード レベリ ングのキャ リ ブレーシ ョ ン工程で決定される DQ IDELAY タップ設定が変更さ<br />

れるこ とはあ り ません。<br />

64 ビッ ト LFSR は、 こ のキ ャ リ ブレーシ ョ ン工程の開始に伴って DDR3 SDRAM へ書き込まれる<br />

長さ 128 の PRBS シーケン ス を生成し ます。 こ のシーケ ン スはその後、読み出しデータ の有効ウ ィ<br />

ン ド ウ を決定する ために継続し て リ ー ド バ ッ ク さ れます。 データ ウ ィ ン ド ウ を検出する には、 同じ<br />

タ ッ プ値で複数サイ クルにわたってデータ を読み出し て平均を求める アルゴ リ ズムを使用し ます。<br />

サンプ リ ング サイクル数は 36'hFFFFFFFFF に設定 さ れています。 こ のアルゴ リ ズムは、 リ ー ド レ<br />

ベリングのキャリブレーション工程 (初期タ ッ プ値) で決定する細精度の DQS PHASER_IN タップ<br />

設定値で開始し、 読み出しデータ と 予測データ を比較し てデータ の不一致が検出 さ れる まで一度に<br />

1 タ ッ プずつデク リ メ ン ト し ます。 予測データは、 長さ 128 の PRBS シーケンスを SDRAM へ書<br />

き込むのに使用した同じ 64 ビッ ト LFSR ロジックで生成されます。 データ不一致の タ ッ プ値は (<br />

ウィンドウの) 左端と し て記録されます。 次にこ のアルゴ リ ズムは初期タ ッ プ値にイ ン ク リ メ ン ト<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 121<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

し、 初期タ ッ プ値以降データ不一致が検出 さ れる か タ ッ プ値が 63 になるまで、 イン ク リ メ ン ト ご<br />

と にエ ッ ジ検出を実行し ます。 最後に、 検出 さ れたエ ッ ジに基づいて読み出しデータ の有効ウ ィ ン<br />

ド ウ の中央を計算し ます。<br />

温度モニ タ ー<br />

温度モニ ターは、 温度 ド リ フ ト を補正し て DQS がデータ有効ウ ィ ン ド ウ の中央に揃え られる よ う<br />

にします。<br />

温度モニ ターは 2 つのモジュールから構成されています。1 つ目のモジ ュールであ る ddr_tempmon<br />

は XADC モジュールをインスタンシエー ト し、 XADC を周期的にサンプルし てその時点のデバイ<br />

ス温度を確認し ます。ddr_tempmon モジュールはク ロ ッ ク インフラスト ラクチャにあり、ユーザー<br />

デザイ ンで XADC モジュールがすでにインスタンシエート されている場合は無効にできます。 こ<br />

の場合、 device_temp[11:0] バスを駆動し、 メモ リ <strong>インターフェイス</strong> コンフィギュレーション用に<br />

こ のバス を適切な最上位モジ ュールにア ッ プデー ト する必要があ り ます。最低で も 10µs ごとに、最<br />

大で も 1µs ごとにアップデートしてください。device_temp[11:0] 値は、 XADC 仕様 (ザイ リ ンク<br />

スの 『LogiCORE IP XADC Wizard v2.2 ユーザー ガイド』 (UG772)) で定義される と お り に DRP<br />

ポー ト か ら変換さ れる こ と な く 読み出さ れる生の値です。<br />

2 つ目のモジ ュールであ る ddr_phy_tempmon は最上位キ ャ リ ブレーシ ョ ン モジュールの<br />

calib_top にあ り ます。 こ のモジ ュールは、 device_temp[11:0] を ddr_tempmon モジュールまたは<br />

ユーザー ロジックから、 そしてイネーブル信号を<strong>メモリ</strong> コン ト ローラーから受信します。 イネー<br />

ブル信号は、 REF または ZQ コマンドが DRAM へ送信 さ れ、 保留中の ト ラ ンザ ク シ ョ ンすべてが<br />

DQ バスをク リ アする と必ず、 <strong>メモリ</strong> コント ローラーによってセッ ト されます。 PHY 専用デザ イ<br />

ン を使用する ユーザー デザイ ンは、 ZQ または REF の送信ご と に tempmon_sample_en 入力を駆<br />

動する必要があ り ます。 保留中の読み出し がすべて返 さ れた後に こ の信号を High にし、 REF また<br />

は ZQ が完了し て ACT の送信準備が整 う まで保持する必要があ り ます。 キ ャ リ ブレーシ ョ ンが完<br />

了し て イ ネーブル信号がセ ッ ト さ れた後、ddr_phy_tempmon は device_temp[11:0] バスをサンプル<br />

し て基準温度を定めます。 後続の各イ ネーブル信号ご と にその時点の温度が基準温度 と 比較 さ れま<br />

す。温度変化が十分な場合、 モジ ュールは温度 ド リ フ ト を軽減する ために PHASER_IN の遅延を細<br />

か く 調整し、 基準温度を新たに設定し ます。 こ の工程は通常動作中、 継続し て行われます。<br />

<strong>メモリ</strong> コントローラーと PHY 間のイ ン タ ーフ ェ イ ス<br />

キャ リブレーション ロジック モジュールは、 キャ リ ブレーシ ョ ン中に PHY 制御ワー ド を構築し<br />

て、PHY 制御ブ ロ ッ ク へ送信し ます。 キ ャ リ ブレーシ ョ ンが完了する と 、 init_calib_complete 信号<br />

がアサー ト さ れ、 通常動作が可能であ る こ と を メ モ リ コ ン ト ローラーへ伝え ます。 レ イ テンシが増<br />

加する のを回避する ため、 メ モ リ コント ローラーは専用 PHY ブロッ クで要求される形式でコマン<br />

ド を送信する必要があ り ます。 その結果、 ア ド レ ス、 コ マン ド 、 制御、 およびデータ バスは PHY<br />

制御ブ ロ ッ ク へ送信さ れる前に多重化さ れます。 こ れ ら のバスは、 メ モ リ の初期化およびキ ャ リ ブ<br />

レーシ ョ ン中はキャ リ ブレーシ ョ ン モジ ュールで駆動さ れ、 通常動作中は メ モ リ コント ローラー<br />

で駆動されます。 表 1-86 に、 メ モ リ コント ローラーと PHY 間のイ ン ターフ ェ イ ス信号を示し ま<br />

す。 こ れ ら の信号は、 フ ァ ブ リ ッ ク クロックと同期しています。<br />

122 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-86 : <strong>メモリ</strong> コン ト ローラーとキャリブレーシ ョ ン ロジ ッ ク間のイ ン タ ーフ ェ イ ス信号<br />

信号名 幅<br />

I/O から<br />

PHY (PHY<br />

から I/O)<br />

タイプ 説明<br />

コアのアーキテクチャ<br />

rst 1 入力 PHY_Clk ドメインに同期しているインフラ<br />

ストラクチャ モジュールからの rstdiv0 出力<br />

信号です。<br />

PHY_Clk 1 入力 こ の ク ロ ッ ク 信号は、DDR2/DDR3 クロック<br />

周波数の 1/4 です。<br />

mem_refclk 1 入力 DDR2/DDR3 と 同じ周波数の ク ロ ッ ク です。<br />

freq_refclk 1 入力 400MHz ~ 933MHz の場合は mem_refclk と<br />

同じ ク ロ ッ ク周波数で、 400MH 未満の場合は<br />

mem_refclk の 1/2 または 1/4 となります。<br />

sync_pulse 1 入力 PLL か ら出力 さ れる同期パルスです。<br />

pll_lock 1 入力 イ ン フ ラ モジュールにインスタンシエート<br />

されている、 PLL か ら出力さ れる LOCKED<br />

信号です。<br />

mc_ras_n [nCK_PER_CLK0 - 1:0] 入力 ア ク テ ィ ブ<br />

Low<br />

mc_cas_n [nCK_PER_CLK - 1:0] 入力 アクティブ<br />

Low<br />

mc_we_n [nCK_PER_CLK - 1:0] 入力 アクティブ<br />

Low<br />

mc_address [ROW_WIDTH ×<br />

nCK_PER_CLK - 1:0]<br />

mc_bank [BANK_WIDTH ×<br />

nCK_PER_CLK - 1:0]<br />

mc_cs_n [CS_WIDTH ×<br />

nCS_PER_RANK ×<br />

nCK_PER_CLK - 1:0]<br />

シーケンス内の 4 つのコマン ド の最初は<br />

mc_xxx_n[0] です。<br />

シーケンス内の 4 つのコマン ド の最初は<br />

mc_xxx_n[0] です。<br />

シーケンス内の 4 つのコマン ド の最初は<br />

mc_xxx_n[0] です。<br />

入力 シーケン ス内の 4 つのコマン ド アドレスの最<br />

初は mc_address[ROW_WIDTH - 1:0] です。<br />

入力 シーケン ス内の 4 つのコマン ド アドレスの最<br />

初は mc_bank[BANK_WIDTH - 1:0] です。<br />

入力 mc_cs_n [CS_WIDTH - 1:0] が、 シーケン ス内<br />

の最初のコマン ド に関連する cs_n 信号です。<br />

mc_odt [1:0] 入力 mc_odt [1:0] は、 RTT_NOM および<br />

RTT_WR 値に基づいて コ ン ト ローラーが駆<br />

動する ODT です。 この信号は、 CKE_ODT_<br />

AUX パラ メーターが FALSE に設定されて<br />

い る場合に有効 と な り ます。<br />

mc_cke [nCK_PER_CLK - 1:0] 入力 mc_cke [nCK_PER_CLK - 1:0] は、 DARM<br />

イ ン ターフ ェ イ スに関連する CKE です。 こ<br />

の信号は、CKE_ODT_AUX パラ メーターが<br />

FALSE に設定されている場合に有効と な り<br />

ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 123<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-86 : <strong>メモリ</strong> コン ト ローラーとキャリブレーシ ョ ン ロジ ッ ク間のイ ン タ ーフ ェ イ ス信号 (続き)<br />

信号名 幅<br />

mc_reset_n 1 入力 ア ク テ ィ ブ<br />

Low<br />

mc_wrdata [2 × nCK_PER_CLK ×<br />

DQ_WIDTH - 1:0]<br />

mc_wrdata_mask [2 × nCK_PER_CLK ×<br />

(DQ_WIDTH/8) - 1:0]<br />

I/O から<br />

PHY (PHY<br />

から I/O)<br />

mc_wrdata_en 1 入力 ア ク テ ィ ブ<br />

High<br />

mc_cmd_wren 1 入力 ア ク テ ィ ブ<br />

High<br />

mc_ctl_wren 1 入力 ア ク テ ィ ブ<br />

High<br />

mc_reset_n は、 OUT_FIFO を使用せずに直<br />

接 IOLOGIC へ接続さ れる入力です。<br />

入力 専用 PHY への書き込みデータ信号です。 4:1<br />

ク ロ ッ ク 比の場合、 メ モ リ DQ 幅の 8 倍にな<br />

ります。<br />

入力 専用 PHY に対する書き込みデータ マスクで<br />

す。 4:1 ク ロ ッ ク 比の場合、 メ モ リ DM 幅の<br />

8 倍にな り ます。<br />

DQ OUT_FIFO への WREN 入力です。<br />

アドレス/コマンド OUT_FIFO の書き込みイ<br />

ネーブル入力です。<br />

専用 PHY ブロッ クの PHY 制御ワー ド FIFO<br />

への書き込みイネーブル入力です。<br />

mc_cmd [2:0] 入力 PHY_Ctl_Wd コンフィギュレーションに使<br />

用されます。<br />

0x04 : ND (Non-Data) コマンド (コマンド<br />

シーケンスにカ ラ ム コマンドがない)<br />

0x01 : 書き込みコマンド<br />

0x03 : 読み出し コ マン ド<br />

mc_data_offset [5:0] 入力 PHY_Ctl_Wd コンフィギュレーションに使<br />

用されます。<br />

mc_aux_out0 [3:0] 入力 ア ク テ ィ ブ<br />

High<br />

mc_aux_out1 [3:0] 入力 ア ク テ ィ ブ<br />

High<br />

0x00 : ND (Non-Data) コマンド (コマンド<br />

シーケンスにカ ラ ム コマンドがない)<br />

CWL + COL cmd position:書き込みコマンド<br />

calib_rd_data_offset+COL cmd position – 1:<br />

読み出し コ マン ド<br />

PHY 制御ワー ド の補助出力フ ィ ール ド で、<br />

ODT および CKE のアサー ト を制御し ます。<br />

PHY 制御ワー ド の補助出力フ ィ ール ド で、 4<br />

ランク <strong>インターフェイス</strong>の ODT および<br />

CKE のアサー ト を制御し ます。<br />

mc_rank_cnt [1:0] 入力 PHY 制御ワー ド の コ マン ド シーケンスでア<br />

クセスされるランクです。<br />

phy_mc_ctl_full 1 出力 ア ク テ ィ ブ<br />

High<br />

タイプ 説明<br />

すべての PHY 制御 FIFO の全 Almost FULL<br />

フラグをビッ ト単位で AND 接続し た信号で<br />

す。あ と 1 つのエン ト リ で FIFO が FULL に<br />

なる場合には Almost FULL フラグがアサー<br />

トされます。<br />

124 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-86 : <strong>メモリ</strong> コン ト ローラーとキャリブレーシ ョ ン ロジ ッ ク間のイ ン タ ーフ ェ イ ス信号 (続き)<br />

信号名 幅<br />

phy_mc_cmd_full 1 出力 ア ク テ ィ ブ<br />

High<br />

phy_mc_data_full 1 出力 ア ク テ ィ ブ<br />

High<br />

phy_rd_data [2 × nCK_PER_CLK ×<br />

DQ_WIDTH - 1:0]<br />

コアを使用するデザイン<br />

コアへの<strong>インターフェイス</strong><br />

I/O から<br />

PHY (PHY<br />

から I/O)<br />

phy_rddata_valid 1 出力 ア ク テ ィ ブ<br />

High<br />

コアを使用するデザイン<br />

すべての コ マン ド OUT_FIFO の全 Almost<br />

FULL フラグをビッ ト単位で OR 接続し た信<br />

号です。 あ と 1 つのエン ト リ で FIFO が<br />

FULL になる場合には Almost FULL フラグ<br />

がアサー ト されます。<br />

すべての書き込みデータ OUT_FIFO の全<br />

Almost FULL フラグをビッ ト単位で OR 接<br />

続した信号です。 あと 1 つのエン ト リ で<br />

FIFO が FULL になる場合には Almost<br />

FULL フラグがアサート されます。<br />

出力 専用 PHY か ら の読み出しデータ です。4:1 ク<br />

ロ ッ ク 比の場合、 メ モ リ DQ 幅の 8 倍にな り<br />

ます。<br />

有効な読み出しデータ があ る場合にアサー ト<br />

されます。<br />

calib_rd_data_offset [6 × RANKS - 1:0] 出力 4 つのコマン ド シーケンスの command 0 に<br />

関する、 キ ャ リ ブレー ト さ れた読み出しデー<br />

タのオフセッ ト値です。<br />

init_calib_complete 1 出力 ア ク テ ィ ブ<br />

High<br />

タイプ 説明<br />

メ モ リ の初期化およびキ ャ リ ブレーシ ョ ンが<br />

完了する と 、 アサー ト さ れます。<br />

注記 :<br />

1. nCK_PER_CLK は、 PHY_Clk の 1 サイクルに対する DDR2 または DDR3 SDRAM クロック サイクル数を定義します。<br />

2. ROW_WIDTH は、 DDR2 または DDR3 SDRAM のランク数です。<br />

3. BANK_WIDTH は、 DDR2 または DDR3 SDRAM のバン ク数です。<br />

4. CS_WIDTH は、 DDR2 または DDR3 SDRAM の cs_n 信号数です。<br />

5. CKE_WIDTH は、 DDR2 または DDR3 SDRAM の CKE 信号数です。<br />

6. DQ_WIDTH は、 DDR2 または DDR3 SDRAM の DQ バス幅です。<br />

コアは、 シミ ュレーション可能なサンプル デザイ ンに含まれています。 サンプル デザイ ンは、 設<br />

計を始める際の ヒ ン ト と し て、 あ る いはデバ ッ グの リ フ ァ レ ン ス と し て使用で き ます。<br />

コ アのコ ン フ ィ ギ ュ レーシ ョ ン を変更する場合は、 サポー ト さ れてい る範囲内に し て く だ さ い。 サ<br />

ポー ト されている コ ンフ ィ ギュ レーシ ョ ン パラ メーターの詳細は、140 ページの 「コ アのカ ス タ マ<br />

イズ」 を参照して く ださい。<br />

<strong>メモリ</strong> コント ローラーへの接続には、 AXI4 スレーブ <strong>インターフェイス</strong>、 ユーザー インターフェ<br />

イス (UI)、またはネイティブ <strong>インターフェイス</strong>を使用できます。AXI4 スレーブ <strong>インターフェイス</strong><br />

は、 プロセ ッ サ サブシ ス テム と の接続に理想的な、 AXI4 <strong>メモリ</strong> マ ッ プ方式に準拠し たス レーブで<br />

す。 こ の イ ン ターフ ェ イ スは ト ラ ンザ ク シ ョ ン を変換し て UI に渡し ます。UI は、シンプルな FIFO<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 125<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>インターフェイス</strong>と類似しており、 常にデータを順に返します。 ネイティブ <strong>インターフェイス</strong>は、<br />

パフ ォーマン ス を向上させる こ と がで き る場合があ り ますが、 使用は難し く な り ます。<br />

ネイティブ <strong>インターフェイス</strong>にはバッファーがないため、 すぐにデータを返しますが、 返される<br />

データは順序が異な る場合があ り ます。 し たがって、 こ の イ ン ターフ ェ イ ス を使用する場合は、 並<br />

べ替えを有効に し て、 アプ リ ケーシ ョ ン内部で受信データ を再編成する必要があ り ます。 次のセ ク<br />

ションでは、各<strong>インターフェイス</strong>のタイミング プ ロ ト コルを示し、 それ ら の制御方法について説明<br />

します。<br />

AXI4 スレーブ <strong>インターフェイス</strong><br />

AXI4 スレーブ <strong>インターフェイス</strong>は、 ARM 社の AMBA の公開仕様で定義 さ れてい る AXI4 メモ<br />

リ マ ッ プ方式のス レーブ プロ ト コル仕様に準拠しています。 AXI4 スレーブ <strong>インターフェイス</strong>の<br />

信号については、 こ の仕様書 [参照 3] を参照して く ださい。<br />

AXI アドレッシング<br />

表 1-87 : AXI バイ ト アドレスのマスク<br />

AXI マスター デバイ スか ら の AXI アドレスは完全なバイト アドレスです。AXI shim が AXI SIZE<br />

および<strong>メモリ</strong> データ幅に基づいて AXI マス ターか ら メ モ リ へのア ド レ ス を変換し ます。 AXI バイ<br />

ト アドレスの LSB は、 メ モ リ アレイのデータ幅によって 0 にマス ク されます。 メ モ リ アレイが<br />

64 ビッ ト (8 バイ ト) 幅の場合は、 AXI address[2:0] が無視されて 0 として扱われます。 <strong>メモリ</strong> ア<br />

レイが 16 ビッ ト (2 バイ ト) 幅の場合には、 AXI address[0] が無視されて 0 として扱われます。<br />

データは 8 つの DRAM ワードのブロ ッ クでアクセスされます。DDR2 および DDR3 <strong>メモリ</strong>のデー<br />

タシートでは、これを バース ト 長 8 と呼んでいます。DDR3 DRAM は、 バース ト 長 8 の 8 DRAM<br />

ワードのブロ ッ クでアクセスされます。 UI データ ポー ト は、 PHY と<strong>メモリ</strong> コント ローラー (MC)<br />

間のク ロ ッ ク比が 4:1 の場合に 8 DRAM ワード幅とな り、ク ロ ッ ク比が 2:1 のモードでは 4 DRAM<br />

ワード幅とな り ます。<br />

PHY と MC のクロッ ク比 UI データ幅 メ モ リ <strong>インターフェイス</strong>幅 AXI バイ ト アドレス [7:0] (LSB) のマスク<br />

4:1 64 8 A[7:0]<br />

128 16 A[7:1]、 1’b0<br />

256 32 A[7:2]、 2’b00<br />

512 64 A[7:3],3’b000<br />

2:1 32 8 A[7:0]<br />

64 16 A[7:1]、 1’b0<br />

128 32 A[7:2]、 2’b00<br />

256 64 A[7:3],3’b000<br />

表 1-88 に、 幅が 64で深さが 512K の<strong>メモリ</strong> <strong>インターフェイス</strong>の AXI バイ ト アドレッシングの例<br />

を示します。 表 1-89 には、 サポー ト される DRAM コンフィギュレーションを示します。<br />

126 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-88 : AXI バイ ト アドレッシングの例 (データ幅 = 64、 深さ = 512K)<br />

<strong>メモリ</strong> アドレス<br />

[11:0]<br />

アップサイジングとダウンサイジング<br />

コアへの<strong>インターフェイス</strong><br />

11 10 9 8 7 6 5 4 3 2 1 0<br />

行ア ド レス X X A21 A20 A19 A18 A17 A16 A15 A14 A13 A10<br />

列ア ド レス X X X A9 A8 A7 A8 A6 A6 A4 A3 A2<br />

表 1-89 : サポー ト される DRAM 幅のコ ン フ ィ ギュ レーシ ョ ン<br />

深さ 行幅 列幅<br />

512K 10 9<br />

1M 10 10<br />

2M 11 10<br />

4M 11 11<br />

4M 12 10<br />

ここでは、AXI Shim <strong>インターフェイス</strong>で利用できるアップサイジングおよびダウンサイジングの<br />

オプシ ョ ンについて説明し ます。<br />

アップサイジング<br />

ユーザー <strong>インターフェイス</strong>側のデータ幅が AXI <strong>インターフェイス</strong>のデータ幅よ り も広い場合は、<br />

AXI Shim でア ッ プサ イ ジン グが実行 さ れます。 INCR および WRAP バース ト にはデータ パッキ<br />

ングが実行されます。<br />

その結果、 ユーザー <strong>インターフェイス</strong>側に発行される ト ランザクションのデータ ビート 数は圧縮<br />

に応じ て減少し ます。<br />

• 書き込みの場合、 データ が結合さ れます。<br />

• 読み出し の場合、 データ がシ リ ア ラ イ ズ さ れます。<br />

ダウンサイジング<br />

AXI <strong>インターフェイス</strong>側のデータ幅がユーザー <strong>インターフェイス</strong>のデータ幅よ り も広く、 ト ラン<br />

ザクション サイズがユーザー <strong>インターフェイス</strong>側のデータ幅よ り も広い場合には、 ダウンサイジ<br />

ングが実行されます。 ユーザー <strong>インターフェイス</strong>側に発行されるトランザクションのデータ ビー<br />

ト 数は、 それぞれ倍増し ます。<br />

• 書き込みの場合、 データ がシ リ ア ラ イ ズ さ れます。<br />

• 読み出し の場合、 データ が結合さ れます。<br />

ユーザー <strong>インターフェイス</strong><br />

ユーザー <strong>インターフェイス</strong>のアドレス バス と物理的な<strong>メモリ</strong>の行、 バンク、 列、 のマッピングは<br />

変更可能です。 アプ リ ケーシ ョ ン データ の構成に応じ て、 ア ド レ ッ シン グ方法 (バンク-行-列、 ま<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 127<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-51<br />

X-Ref Target - Figure 1-52<br />

User Address<br />

A<br />

n<br />

Memory<br />

たは行-バンク-列) を選択し、 コ ン ト ローラーの効率を最適化し ます。 こ れ ら のア ド レ ッ シン グ方法<br />

を、 図 1-51 および図 1-52 にそれぞれ示し ます。<br />

Rank Bank Row Column<br />

User Address<br />

A<br />

n<br />

Memory<br />

図 1-51 : UI モジ ュールの メ モ リ アドレス マッピング (バンク-行-列モー ド)<br />

Rank Row Bank Column<br />

図 1-52 : UI モジ ュールの メ モ リ アドレス マッピング (行-バンク-列モー ド)<br />

コマンド パス<br />

ユーザー ロジックの app_en 信号がアサー ト さ れて UI が app_rdy 信号を アサー ト する と 、 コ マン<br />

ドが受信されて UI によって FIFO へ書き込まれます。 app_rdy がデ ィ アサー ト される と、 コマン<br />

ドは常に UI で無視されます。 図 1-53 に示すよ う に、 ユーザー ロジックは app_rdy 信号がアサー<br />

トされるまで、有効なコマンドとアドレス値を示して app_en 信号を High に保持する必要があ り ま<br />

す。<br />

128 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

A<br />

-<br />

A<br />

-<br />

A<br />

4<br />

A<br />

3<br />

A<br />

2<br />

A<br />

1<br />

A<br />

0<br />

<strong>UG586</strong>_c1_61_091410<br />

A<br />

4<br />

A<br />

3<br />

A<br />

2<br />

A<br />

1<br />

A<br />

0<br />

<strong>UG586</strong>_c1_61a_012411


X-Ref Target - Figure 1-53<br />

clk<br />

app_cmd WRITE<br />

app_addr Addr 0<br />

app_en<br />

app_rdy<br />

Command is accepted when app_rdy is High and app_en is High.<br />

図 1-53 : UI のコマンド タイミング図 (app_rdy 信号のアサー ト )<br />

コアへの<strong>インターフェイス</strong><br />

連続し た書き込みコ マン ド は発行さ れません (図 1-54)。 この図では、app_wdf_data、<br />

app_wdf_wren、 および app_wdf_end の 3 つを示しています。<br />

1. 書き込みデータは、 対応する書き込みコ マン ド に伴って現れます (BL8 の 2 つ目の半分)。<br />

2. 書き込みデータは、 対応する書き込みコ マン ド の前に現れます。<br />

<strong>UG586</strong>_c1_62_091510<br />

3. 書き込みデータは、 対応する書き込みコ マン ド の後に現れますが、 2 クロック サイクルという<br />

制限を超え る こ と はあ り ません。<br />

3 番目の よ う に、 書き込みコ マン ド がレ ジ ス タ格納 さ れた後に出力 さ れる書き込みデータ の場合、<br />

最大遅延は 2 クロック サイクルです。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 129<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-54<br />

書き込みパス<br />

clk<br />

app_cmd WRITE<br />

app_addr Addr 0<br />

app_en<br />

app_rdy<br />

app_wdf_mask<br />

app_wdf_rdy<br />

app_wdf_data<br />

app_wdf_wren<br />

app_wdf_end<br />

app_wdf_data<br />

app_wdf_wren<br />

app_wdf_end<br />

app_wdf_data<br />

app_wdf_wren<br />

app_wdf_end<br />

<strong>UG586</strong>_c1_63_091410<br />

図 1-54 : 4:1 モードの UI <strong>インターフェイス</strong>における書き込みタイミング図<br />

( <strong>メモリ</strong> バース ト タイプ = BL8)<br />

app_wdf_wren がアサー ト されて app_wdf_rdy が High にな る と 、書き込みデータ が書き込み FIFO<br />

に格納されます (図 1-55)。 app_wdf_rdy がデ ィ アサー ト された場合、 ユーザー ロジックは<br />

app_wdf_rdy がアサート されるまで、 有効な app_wdf_data 値を示すと共に app_wdf_wren と<br />

app_wdf_end を High に保持する必要があ り ます。 app_wdf_mask 信号を使用し、 外部 メ モ リ へ書<br />

き込むバイ ト をマスクできます。<br />

130 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

W0<br />

W0<br />

Maximum allowed data<br />

delay from addr/cmd<br />

is two clocks as shown<br />

in Event 3.<br />

W0<br />

1<br />

2<br />

3


X-Ref Target - Figure 1-55<br />

コアへの<strong>インターフェイス</strong><br />

図 1-55 : 4:1 モードの UI イ ン タ ーフ ェ イ スにおける連続する書き込みコ マン ド のタ イ ミ ング図<br />

129 ページの図 1-53 ( <strong>メモリ</strong> バース ト タイプ = BL8) に示すよ う に、 書き込みデータ と 関連する書<br />

き込みコ マン ド 間におけ る シン グル書き込みの最大遅延は、 2 クロック サイクルです。 連続して書<br />

き込みコ マン ド を発行し てい る場合は、 書き込みデータ と 関連する連続書き込みコ マン ド 間の最大<br />

遅延は生じ ません (図 1-56)。<br />

X-Ref Target - Figure 1-56<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

clk<br />

app_cmd<br />

app_wdf_data<br />

<br />

<br />

図 1-56 : 4:1 モードの UI イ ン タ ーフ ェ イ スにおける連続する書き込みコ マン ド のタ イ ミ ング図<br />

( <strong>メモリ</strong> バース ト タイプ = BL8)<br />

<strong>メモリ</strong>への書き込みバーストの最後を示すためには、app_wdf_end 信号を使用し ます。 メ モ リ バー<br />

スト タイプが 8 の場合、 2 番目の書き込みデータ ワードで app_wdf_end 信号がアサー ト さ れる必<br />

要があ り ます。<br />

アプ リ ケーシ ョ ン <strong>インターフェイス</strong> データ の DRAM 出力データへのマ ッ プについては、サンプル<br />

デザ イ ン を用いて説明し ます。<br />

8 ビッ ト <strong>メモリ</strong>のアプリケーション <strong>インターフェイス</strong>で<strong>メモリ</strong> コント ローラーと DRAM のク<br />

ロック比が 4:1 の場合、 駆動 さ れ る 64 ビッ ト データ が 0000_0806_0000_0805 (Hex) の とき、<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 131<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

<br />

<br />

<br />

<br />

WRITE WRITE WRITE WRITE WRITE WRITE WRITE<br />

app_addr Addr a Addr b Addr c Addr d Addr e Addr f Addr g<br />

app_en<br />

app_rdy<br />

app_wdf_mask<br />

app_wdf_rdy<br />

app_wdf_wren<br />

app_wdf_end<br />

W a0<br />

W b0 W c0 W d0 W e0 W f0 W g0<br />

<strong>UG586</strong>_c1_65_091410


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-57<br />

表 1-90 : クロック エッジ別のデータ値<br />

X-Ref Target - Figure 1-58<br />

X-Ref Target - Figure 1-59<br />

DRAM <strong>インターフェイス</strong>のデータは図 1-57 のよ うになり ます。 これは、 BL8 (バース ト 長 = 8) ト<br />

ランザクションです。<br />

図 1-57 : 4:1 モードの DRAM <strong>インターフェイス</strong>のデータ<br />

表 1-90 に、 ク ロ ッ ク エッジ別のデータ値を示します。<br />

Rise0 Fall0 Rise1 Fall1 Rise2 Fall2 Rise3 Fall3<br />

05 08 00 00 06 08 00 00<br />

<strong>メモリ</strong> コント ローラーと DRAM のクロック比が 2:1 の場合、 アプ リ ケーシ ョ ン データ幅は 32<br />

ビッ トです。したがって、BL8 トランザクションでは、アプリケーション <strong>インターフェイス</strong>のデー<br />

タは 2 クロック サイクルで現れなければなり ません。図 1-58 に示すよ う に、 app_wdf_end 信号が<br />

2 つ目のデータ に対し てアサー ト さ れています。こ の場合、最初のサ イ ク ルに現れたアプ リ ケーシ ョ<br />

ン データ は 0000_0405 (Hex) で、 最後のサ イ ク ルに現れたデータは 0000_080A (Hex) です。 これ<br />

は BL8 トランザクションです。<br />

図 1-58 : 2:1 モードのアプリケーシ ョ ン <strong>インターフェイス</strong>のデータ<br />

図 1-59 に、 DRAM イ ン ターフ ェ イ スにおけ る対応するデータ を示し ます。<br />

図 1-59 : 2:1 モードの DRAM <strong>インターフェイス</strong>のデータ<br />

132 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


読み出しパス<br />

コアへの<strong>インターフェイス</strong><br />

読み出しデータは、 UI を介して要求された順序で返され、 app_rd_data_valid がアサー ト される と<br />

き に有効にな り ます (図 1-60 および図 1-61)。pp_rd_data_end 信号は、各読み出し コ マン ド バース<br />

トの最後を示し、 ユーザー ロジックでは必要ありません。<br />

X-Ref Target - Figure 1-60<br />

X-Ref Target - Figure 1-61<br />

図 1-61 では、 返された読み出しデータは、 ア ド レ ス/制御バスで要求さ れた順序 と 常に同じ にな り<br />

ます。<br />

ユーザー リフレッシュ<br />

clk<br />

app_cmd<br />

app_rd_data<br />

<strong>UG586</strong>_c1_66_110510<br />

図 1-60 : 4:1 モードの UI イ ン タ ーフ ェ イ スにおける読み出し タ イ ミ ング図<br />

( <strong>メモリ</strong> バース ト タイプ = BL8)<br />

図 1-61 : 4:1 モードの UI イ ン タ ーフ ェ イ スにおける読み出し タ イ ミ ング図<br />

( <strong>メモリ</strong> バース ト タイプ = BL4 または BL8)<br />

ユーザー制御の リ フ レ ッ シュ を行 う には、 USER_REFRESH パラ メーターを ON に設定し て、 メ<br />

モリ メ モ リ コ ン ト ローラーが制御する メ ンテナン ス機能を無効に し て く だ さ い。<br />

REF コマンドの要求には、app_ref_req を 1 サ イ ク ル間ス ト ローブ し ます。 メ モ リ コント ローラー<br />

は PHY へコ マン ド を送信する際に app_ref_ack を 1 サイ クル間ス ト ローブし、 その後、 別の要求<br />

が送信可能にな り ます。 図 1-62 に、 こ のイ ン ターフ ェ イ ス を示し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 133<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

READ<br />

app_addr Addr 0<br />

app_en<br />

app_rdy<br />

app_rd_data_valid<br />

clk<br />

app_cmd<br />

app_addr Addr 0 Addr 1<br />

app_en<br />

app_rdy<br />

app_rd_data<br />

app_rd_data_valid<br />

READ<br />

R0<br />

R0<br />

R1<br />

<strong>UG586</strong>_c1_50_111810


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-62<br />

<br />

<br />

<br />

X-Ref Target - Figure 1-63<br />

<br />

<br />

<br />

ユーザー リ フ レ ッ シ ュ動作は、 前述のハン ド シ ェー ク 完了後に随時実行で き ます。 その他の コ マン<br />

ド に関する追加の イ ン ターフ ェ イ ス要件はあ り ません。 ただ し、 保留要求は動作を停止する タ イ ミ<br />

ン グに影響を及ぼ し ます。 メ モ リ コント ローラーは、 リフレッシュ コマンドを発行する前にすべ<br />

ての保留データ要求を実行し ます。 tREFI 違反を回避する には、 app_ref_req をス ト ローブするタ<br />

イ ミ ン グ を決定する際に、 各保留要求の タ イ ミ ング パ ラ メ ーターを考慮する必要があ り ます。 ワー<br />

ストケースを考え、tRCD、CL、データ伝送時間、および各バン ク マシンの tRP を差し引いた tREFI<br />

範囲内にすべての ト ラ ンザ ク シ ョ ンが完了する よ う に し ます。 式 1-1 に、 REF 要求の最大間隔の計<br />

算方法を示し ます。<br />

( tREFI – ( tRCD + ( ( CL + 4)<br />

× tCK)<br />

+ tRP)<br />

× nBANK_MACHS)<br />

式 1-1<br />

キャ リブレーション後にすぐユーザー REF を発行し て、 後続の要求を送信する タ イ ミ ン グ を決定<br />

する ための時間基準を確立し ます。<br />

ユーザー ZQ<br />

図 1-62 : ユーザー リフレッシュ <strong>インターフェイス</strong><br />

ユーザー制御の ZQ キャ リブレーションを行うには、 tZQI パラ メーターを 0 に設定し て、 メ モ リ<br />

メ モ リ コ ン ト ローラーが制御する メ ンテナン ス機能を無効に し て く だ さ い<br />

ZQ コマンドの要求には、 app_zq_req を 1 サ イ ク ル間ス ト ローブ し ます。 メ モ リ コント ローラー<br />

は PHY へコ マン ド を送信する際に app_zq_ack を 1 サイ クル間ス ト ローブし、 その後、 別の要求<br />

が送信可能にな り ます。 図 1-63 に、 こ のイ ン ターフ ェ イ ス を示し ます。<br />

図 1-63 : ユーザー ZQ <strong>インターフェイス</strong><br />

ユーザー ZQ 動作は、 前述のハン ド シ ェー ク 動作完了後に随時実行で き ます。 その他の コ マン ド に<br />

関する追加の イ ン ターフ ェ イ ス要件はあ り ません。 ただ し、 保留要求は動作を停止する タ イ ミ ン グ<br />

に影響を及ぼ し ます。 メ モ リ コント ローラーは、 ZQ コ マン ド を発行する前にすべての保留データ<br />

要求を実行し ます。 正確な タ イ ミ ングが求め ら れる場合に必要な間隔を達成する には、 app_zq_req<br />

を ス ト ローブする タ イ ミ ン グ を決定する際に、各保留要求の タ イ ミ ン グ パ ラ メ ーターを考慮する必<br />

要があ り ます。 ワース ト ケースを考え、 tRCD、 CL、 データ伝送時間、 および各バンク マシンの<br />

tRP を差し引いた tREFI 範囲内にすべての ト ラ ンザ ク シ ョ ンが完了する よ う に し ます。 式 1-2 に、<br />

ZQ 要求の最大間隔の計算方法を示し ます。<br />

( tZQI – ( tRCD + ( ( CL + 4)<br />

× tCK)<br />

+ tRP)<br />

× nBANK_MACHS)<br />

式 1-2<br />

キャ リブレーション後にすぐ ZQ を発行し て、 後続の要求を送信する タ イ ミ ン グ を決定する ための<br />

時間基準を確立し ます。<br />

134 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


ネイティブ <strong>インターフェイス</strong><br />

図 1-64 に、 ネ イ テ ィ ブ <strong>インターフェイス</strong> プロ ト コルを示します。<br />

X-Ref Target - Figure 1-64<br />

図 1-64 : ネイティブ <strong>インターフェイス</strong> プロト コル<br />

コアへの<strong>インターフェイス</strong><br />

アドレスおよびコマンドによって要求がネイティブ <strong>インターフェイス</strong>に現れます。 アドレスには、<br />

バン ク 、 行、 列の情報が含まれています。 コ マン ド は、 cmd 入力でエン コー ド さ れています。<br />

アドレスおよびとコマンドは、use_addr 信号で有効にな る 1 ステート前にネイティブ インターフェ<br />

イ スに現れます。 メ モ リ <strong>インターフェイス</strong>は accept 信号をアサー ト し、 要求を受け入れ可能であ<br />

ることを示します。use_addr と accept の両方が同じ ク ロ ッ ク サイクルでアサート された場合は、<br />

要求が受け入れら れた こ と を示し ます。 use_addr はアサー ト されているが accept がアサート され<br />

ていない場合、 要求は受け入れられていないため、 再度実行する必要があ り ます。 図 1-65 に、 こ<br />

れらの信号のタイ ミ ングを示します。<br />

X-Ref Target - Figure 1-65<br />

clk<br />

rank, bank, row, column<br />

cmd, hi_priority<br />

accept<br />

use_addr<br />

data_buf_addr<br />

wr_data_en<br />

wr_data_addr<br />

wr_data<br />

wr_data_mask<br />

rd_data_en<br />

rd_data_addr<br />

rd_data<br />

clk<br />

rank, bank, row, column<br />

cmd, hi_priority<br />

accept<br />

use_addr<br />

data_buf_addr<br />

D0–D3 D4–D7<br />

1 2 3 3 4<br />

1 2 3 3 4<br />

1 2 3 3 4<br />

1 2 3 3 4<br />

1 2 3 3 4<br />

図 1-65 : ネイティブ <strong>インターフェイス</strong>のフロー制御<br />

D0–D3 D4–D7<br />

<strong>UG586</strong>_c1_67_110510<br />

<strong>UG586</strong>_c1_68_091410<br />

図 1-65 に示すよ う に、 要求 1 および要求 2 は問題な く 受け入れられています。 1 回目の要求 3 に<br />

対しては accept が Low 駆動し てい る ため、 受け入れ られていない こ と を示し ています。 ユーザー<br />

が 2 回目に要求 3 を送信し た と きには、 受け入れられています。 その後の要求 4 は、 1 回目の送信<br />

で受け入れられています。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 135<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-66<br />

clk<br />

wr_data_en<br />

wr_data_addr<br />

wr_data_offset<br />

wr_data<br />

wr_data_mask<br />

rd_data_en<br />

rd_data_addr<br />

rd_data_addr<br />

rd_data<br />

要求の送信 と 同時に、 data_buf_addr バ ス が必要です。 こ のバ ス はユーザー デザイ ンにあ るバッ<br />

ファーのアドレス ポインターとなり ます。 これは、書き込みコマンドを処理する際にデータの位置<br />

を コ アに伝え、 読み出し コ マン ド を処理する際はデータ を配置する位置を伝え ます。 コ アが コ マン<br />

ド を処理する場合、 書き込みコ マン ド では wr_data_addr を介してユーザー デザイ ンへエコー バッ<br />

ク し、 読み出し コ マン ド では rd_data_addr を介してエコー バックします。 図 1-66 に、 これらの信<br />

号の タ イ ミ ン グ を示し ます。 書き込みデータ は、 wr_data_en がアサー ト される ク ロ ッ ク サイクル<br />

で供給さ れる必要があ り ます。<br />

0<br />

D0-D3<br />

転送は非ア ク テ ィ ブなギ ャ ッ プで分離し た り 、 ギ ャ ッ プのない長いバース ト にで き ます。 ユーザー<br />

デザイ ンは、 rd_data_en 信号および wr_data_en 信号をモニ タ リ ン グする こ と で、 要求コ マン ド が<br />

完了 し た こ と を認識で き ます。 メ モ リ コ ン ト ローラーが読み出し コ マン ド 要求の処理を完了する<br />

と、 rd_data_en 信号がアサー ト さ れます。 同様に、 書き込みコ マン ド 要求の処理を完了する と、<br />

wr_data_en 信号がアサー ト さ れます。<br />

NORM オーダ リ ング モード が有効の場合は、 メ モ リ コ ン ト ローラーが受信し た要求を並べ替え、<br />

<strong>FPGA</strong> と<strong>メモリ</strong> デバイ ス間のスループ ッ ト を最適化し ます。 データは、 受信順ではな く 処理 さ れた<br />

順にユーザー デザ イ ンへ返 さ れます。 ユーザー デザイ ンは、 rd_data_addr および wr_data_addr を<br />

モニ タ リ ン グする こ と で、 処理中の要求を特定で き ます。 こ れら のフ ィ ール ド は、 ユーザー デザイ<br />

ンがネイティブ イ ン ターフ ェ イ スへ要求を送信する際に供給さ れる data_buf_addr と同じです。<br />

図 1-66 に、 こ れら の信号の タ イ ミ ン グ関係を示し ます。<br />

ネイティブ <strong>インターフェイス</strong>では、 ユーザー デザイ ンは一度に 1 つの要求し か送信で き ない よ う<br />

に イ ンプ リ メ ン ト さ れてい る ため、 複数の要求は順次送信 さ れる こ と にな り ます。 一方、 コ アは メ<br />

モリ デバイ スへの複数のコマン ド を一度に実行し ます。 ただし、 コ ア インプリ メンテーションの<br />

パイプライン化によって、ネイティブ イ ン ターフ ェ イ スでは読み出し要求 と 書き込み要求を同時に<br />

処理で き ます。<br />

ユーザー リフレッシュ<br />

0<br />

D0-D3<br />

1<br />

D4-D7<br />

1<br />

D4-D7<br />

0<br />

D0-D3<br />

1<br />

D4-D7<br />

図 1-66 : コマンド処理<br />

ユーザー <strong>インターフェイス</strong>の 「ユーザー リフレッシュ」 を参照して ください。 機能は、 ネイテ ィ<br />

ブ <strong>インターフェイス</strong>と同じです。<br />

136 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

0<br />

D0-D3<br />

Two Back-to-Back<br />

Data Bursts<br />

1<br />

D4-D7<br />

0<br />

D0-D3<br />

1<br />

D4-D7<br />

0<br />

D0-D3<br />

Two Back-to-Back<br />

Data Bursts<br />

1<br />

D4-D7<br />

<strong>UG586</strong>_c1_69_090911


ユーザー ZQ<br />

コアへの<strong>インターフェイス</strong><br />

ユーザー <strong>インターフェイス</strong>の 「ユーザー ZQ」 を参照し て く だ さ い。 機能は、 ネ イ テ ィ ブ インター<br />

フェイスと同じです。<br />

物理層イ ン タ ーフ ェ イ ス ( <strong>メモリ</strong> コ ン ト ローラーを使用し ないデザイ ン)<br />

MIG 物理層 (PHY) は、 メ モ リ コント ローラーがなくても使用できます。 PHY ファイルは、MIG<br />

ツールで生成さ れた user_design/rtl/phy デ ィ レ ク ト リ に含まれます。 その他に、 user_<br />

design/rtl/clocking ディレク ト リにあるインフラス ト ラクチャ ファイルも必要です。PHY へ<br />

の<strong>インターフェイス</strong>の例と して MIG の<strong>メモリ</strong> コント ローラーを使用できます。<strong>メモリ</strong> コント ロー<br />

ラーと PHY のサンプル インスタンシエーションは、user_design/rtl/ip_top/mem_intfc.v<br />

ファイルを参照してください。<br />

PHY は、外部の DDR2 または DDR3 SDRAM メ モ リ への物理イ ン ターフ ェ イ ス を提供し、 メ モ リ<br />

デバイスとの<strong>インターフェイス</strong>で必要なタイミングおよびシーケンス信号を生成します。PHY に<br />

は、 ク ロ ッ ク 生成ロ ジ ッ ク、 ア ド レ ス生成ロ ジ ッ ク 、 制御生成ロ ジ ッ ク 、 書き込み/読み出しデータ<br />

パス、 およびパワーアップ後に SDRAM を初期化する ス テー ト ロジックが含まれます。 さらにシ<br />

ス テムの静的遅延および動的遅延を解析する ために、読み出しおよび書き込みデータ パスのタイ ミ<br />

ング ト レーニングを実行するキャ リ ブレーシ ョ ン ロジックもあります。 PHY は、 キ ャ リ ブレー<br />

ションの最後に<strong>メモリ</strong> コン ト ローラーに対して init_calib_complete 出力をアサー ト し ます。 こ の<br />

信号のアサー ト は、 メ モ リ コント ローラーが通常の<strong>メモリ</strong> トランザクションを開始できることを<br />

示します。<br />

PHY のアーキテクチャおよびさ まざまなキャ リ ブレーシ ョ ン工程の詳細は、 100 ページの 「PHY」<br />

を参照して く ださい。 メモ リ コント ローラーが PHY と イ ン ターフ ェ イ スする際に必要な信号につ<br />

いては、 表 1-86 で説明しています。<br />

クロッキング要件は、89 ページの 「 ク ロ ッ キ ング アーキテクチャ」 を参照して く ださい。 ユーザー<br />

は、 MIG ツールが出力したク ロ ッキング ディレク ト リ内にあるインフラス ト ラクチャ、<br />

iodelay_ctrl、 および clk_ibuf モジ ュールを選択し て使用で き ます。 ま たは、 シ ス テム デザイ ンに<br />

これらのモジュールのプリ ミティブをインスタンシエートするこ と も可能です。<br />

PHY の制御l FIFO、 コマンド OUT_FIFO、 および書き込みデータ OUT_FIFO は、 すべて非同期<br />

動作モー ド です。 こ れら の FIFO への読み出し ク ロ ッ ク および書き込み ク ロ ッ ク は周波数 と 位相が<br />

異な り ます。 したがって、 123 ページの表 1-86 で説明し た 3 つの OUT_FIFO FULL フラグ<br />

(phy_mc_ctl_full、 phy_mc_cmd_full、 phy_mc_data_full) をコント ローラーによってすべてモニタ<br />

リ ン グ し、コ マン ド やデータ の損失を招 く PHY 制御 FIFO および OUT_FIFO のオーバーフ ローを<br />

回避する必要があ り ます。<br />

<strong>メモリ</strong> コマンドおよびデータは、 PHY イ ン ターフ ェ イ ス を介し て直接送信で き ます。 タ イ プの異<br />

な る コ マン ド は、 別々のス ロ ッ ト か ら送信さ れます。 CAS 書き込みレ イ テンシ (CWL) コマンドが<br />

読み出し/書き込みコ マン ド に使用する ス ロ ッ ト 番号を指示し ます。 CWL 値が奇数の場合は、 書き<br />

込み/読み出し コ マン ド に CAS スロッ ト番号 1 または 3 を使用で き ます。 偶数の場合は、 CAS ス<br />

ロット番号 0 または 2 を使用できます。 図 1-67 では、 PHY 制御ワー ド の Control Offset、 Low<br />

Index、 Event Delay、 Seq、および Act Pre は、 phy_top モジュール内で 0 に接続さ れ、 使用 さ れま<br />

せん。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 137<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-67<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 1-67 : PHY <strong>インターフェイス</strong>の例<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

読み出し コ マン ド 用の PHY 制御ワー ド のデータ オフセッ ト フィールド (MC_DATA_OFFSET) の<br />

値は、PHASER_IN DQSFOUND のキ ャ リ ブレーシ ョ ン中に決定し ます。 こ の値は、PHY インター<br />

フェイスを介して PHY から与えられます。<strong>メモリ</strong> コント ローラーは、PHY で与え られた この読み<br />

出しデータ オフセ ッ ト 値に使用 さ れる ス ロ ッ ト 番号を追加する必要があ り ます。PHY 内の PHY 制<br />

御では、 読み出し コ マン ド が メ モ リ へ発行さ れた後に IN_FIFO か らデータ を読み出すタ イ ミ ン グ<br />

を把握する必要があ り ます。<br />

読み出しデータ オフセッ ト = キャ リブレート された PHY 読み出しデータ オフセッ ト + ス<br />

ロット番号<br />

138 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 1-68<br />

コアへの<strong>インターフェイス</strong><br />

書き込みコマンド用の PHY 制御ワー ド のデータ オフセッ トは、 次に示すよ うに使用されるスロ ッ<br />

ト 番号、 CWL、 および nCK_PER_CLK のパ ラ メ ーター値に基づいて設定さ れる必要があ り ます。<br />

• nCK_PER_CLK = 4 の場合<br />

書き込みデータ オフセッ ト = CWL + 2 + スロッ ト番号<br />

• nCK_PER_CLK = 2 の場合<br />

書き込みデータ オフセッ ト = CWL - 2 + スロッ ト番号<br />

図 1-68 に示す書き込み動作の波形は、 DDR3 SDRAM CWL = 7 かつ nCK_PER_CLK = 4 の例を<br />

示しています。 選択したスロ ッ ト番号は 1 または 3 です。<br />

書き込みデータ オフセッ ト = CWL + スロッ ト番号 + 2<br />

= 7 + 1 + 2 = 10<br />

図 1-68 : PHY <strong>インターフェイス</strong>で書き込みコマンドを送信 (CWL = 9)<br />

注記 : この例では、 105 ページの表 1-84 に示すビ ッ ト 3 ~ 7、 ビット 12 ~ 14、 ビット 23 ~ 24、<br />

ビッ ト 27 ~ 31 は使用されていません。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 139<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 1-69<br />

コアのカスタマイズ<br />

図 1-69 に示す書き込み動作の波形では、 キ ャ リ ブレー ト さ れた PHY 読み出しデータ オフセッ ト<br />

= 10 の場合の例を示し ています。 選択されたス ロ ッ ト 番号が 1 の場合、 nCK_PER_CLK は 4 で、<br />

読み出しデータ オフセッ トは次のとおりです。<br />

読み出しデータ オフセッ ト = キャ リブレート された PHY 読み出しデータ オフセッ ト + ス<br />

ロット番号<br />

= 10 + 1 = 11<br />

図 1-69 : PHY イ ン タ ーフ ェ イ スで読み出し コ マン ド を送信<br />

注記 : この例では、105 ページの表 1-84 に示すビ ッ ト 3 ~ 7、ビ ッ ト 12 ~ 14、ビ ッ ト 23 ~ 24、ビ ッ<br />

ト 27 ~ 31 は使用されていません。<br />

PHY キャ リブレーションは、追加レイテンシ (AL) が 0 で動作し ます。 キ ャ リ ブレーシ ョ ン完了後<br />

の追加レ イ テンシ (CL-1 または CL-2) が 0 以外の場合には、コ ン ト ローラーが適切な MRS コマン<br />

ド を発行する必要があ り ます。 さ ら に、 AL 値を追加し て前述し たデータ オフセ ッ ト を再計算し ま<br />

す。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> の<strong>メモリ</strong> <strong>インターフェイス</strong> ソ リューションは、DDR2/DDR3 SDRAM デバイ ス<br />

のコンフィギュレーシ ョ ンを複数サポート しています。 各コンフィギュレーショ ンは、 コアの最上<br />

140 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


コアのカスタマイズ<br />

位の Verilog パラ メーターで定義します。 パラ メーターを変更する場合は、MIG ツールを使用して<br />

デザ イ ン を再生成する必要があ り ます。 表 1-91、 表 1-92、 および 表 1-93 に、 MIG ツールで設定<br />

されるパラ メーターを示します。<br />

表 1-91 : 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>ソリューション</strong>でコンフィギュレーション可能なパラメーター<br />

パラ メーター 内容 オプシ ョ ン<br />

REFCLK_FREQ (1)<br />

IDELAYCTRL の基準 ク ロ ッ ク 周波数です。 すべて<br />

のスピード グレードで 200.0 に設定で き ます。詳細<br />

は、 『7 <strong>シリーズ</strong> <strong>FPGA</strong> SelectIO リソース ユーザー<br />

ガイド』 [参照 1] にある IDELAYE2 (IDELAY)およ<br />

び ODELAYE2 (ODELAY) 属性のサマ リ の表を参<br />

照してください。<br />

200.0<br />

SIM_BYPASS_INIT_CAL (2) シミュレーション用のキャリブレーションの一環<br />

です。 「OFF」 は、シミュレーションで使用できませ<br />

ん。 これは、 ハー ド ウ ェ ア インプリ メンテーション<br />

に使用し ます。 「FAST」は、リードおよびライト レ<br />

ベ リ ン グ の 高 速 モ ー ド を 有 効 に し ま す。<br />

「SIM_FULL」 は、フル キャ リブレーションを有効<br />

に し ますが、 パワーア ッ プ時の初期化遅延を ス キ ッ<br />

プします。「SIM_INIT_CAL_FULL」は、パワーアッ<br />

プ遅延を含むフル キャ リブレーションを有効にし<br />

ます。<br />

OFF<br />

SIM_INIT_CAL_FULL<br />

FAST<br />

SIM_FULL<br />

nCK_PER_CLK クロックあたりの<strong>メモリ</strong> クロックの数です。 4、 2 (GUI で選択し た [PHY to<br />

Controller Clock Ratio] に依存する)<br />

nCS_PER_RANK PHY ランクあたりの CS 出力の数です。 1、 2<br />

DQS_CNT_WIDTH DQS バスを示すのに必要なビ ッ ト 数を表し、 CEIL<br />

関数 (log 2(DQS_WIDTH)) で与え られます。<br />

ADDR_WIDTH <strong>メモリ</strong>のアドレス バス幅です。 RANK_WIDTH +<br />

BANK_WIDTH + ROW_WIDTH + COL_WIDTH<br />

と等し くなり ます。<br />

BANK_WIDTH <strong>メモリ</strong> バンク アドレスのビッ トの数です。 選択した<strong>メモリ</strong> デバイ スに基づき ます。<br />

CS_WIDTH メ モ リ に対する CS 出力の数です。 選択し た MIG ツール コンフィギュ<br />

レーシ ョ ンに基づき ます。<br />

CK_WIDTH メ モ リ に対する CK/CK# 出力の数です。 選択し た MIG ツール コンフィギュ<br />

レーシ ョ ンに基づき ます。<br />

CKE_WIDTH メ モ リ に対する CKE 出力の数です。 選択し た MIG ツール コンフィギュ<br />

レーシ ョ ンに基づき ます。<br />

ODT_WIDTH メ モ リ に対する ODT 出力の数です。 選択し た MIG ツール コンフィギュ<br />

レーシ ョ ンに基づき ます。<br />

COL_WIDTH <strong>メモリ</strong>列アドレスのビッ トの数です。 選択した<strong>メモリ</strong> デバイ スに基づき ます。<br />

RANK_WIDTH RANK<br />

す。<br />

バスを表すために使用されるビッ ト の数で<br />

シングル ランクおよびデュアル ランク<br />

の両方デバイ スで 1 に設定されます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 141<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-91 : 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>ソリューション</strong>でコンフィギュレーション可能なパラメーター (続き)<br />

ROW_WIDTH DRAM コンポーネントのアドレス バス幅です。 選択し た メ モ リ デバイ スに基づき ます。<br />

DM_WIDTH データ マスクのビッ トの数です。 DQ_WIDTH/8<br />

DQ_WIDTH <strong>メモリ</strong>の DQ バス幅です。 8 ~ 72 の DQ 幅を 8 の倍数でサポー ト<br />

します。有効な最大 DQ 幅は、 選択し た<br />

<strong>メモリ</strong> デバイ スの周波数に依存し ます。<br />

DQS_WIDTH <strong>メモリ</strong>の DQS バス幅です。 DQ_WIDTH/8<br />

BURST_MODE メ モ リ のデータ バース ト 長です。 DDR3 : 8<br />

DDR2 : 8<br />

BM_CNT_WIDTH バンク マシンを示すのに必要なビ ッ ト 数を表し、<br />

CEIL 関数 (log2(nBANK_MACHS)) で与え られます。<br />

ADDR_CMD_MODE <strong>メモリ</strong>の addr/cmd バスにおけるタイ ミ ングを計算<br />

するためにコン ト ローラーで使用されます。<br />

ORDERING (3)<br />

パラ メーター 内容 オプシ ョ ン<br />

データ スループ ッ ト と レ イ テンシを最適化する た<br />

め、 受信し た要求を並べ替え る オプシ ョ ンです。<br />

STARVE_LIMIT 読み出し要求が高優先度を宣言する前に、 アービ ト<br />

レーシ ョ ンを失う こ とが可能な回数を設定します。<br />

アービ ト レーシ ョ ンを失った実際の回数は、<br />

STARVE_LIMIT × nBANK_MACHS で求められ<br />

ます。<br />

142 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

1T<br />

NORM : <strong>メモリ</strong> コント ローラーは、 コ<br />

マン ド を並べ替えて最大限に効率を上<br />

げる<br />

STRICT : 受信し た順序どお り にコ マ<br />

ン ド を実行する<br />

1、 2、 3、 ...10<br />

WRLVL DDR3 デザイ ンにおけ る ラ イ ト レべリ ングのキャ DDR3 : ON<br />

リ ブレーシ ョ ン を有効に し ます。 DDR3 で ON、<br />

OOR2 では OFF にしてください。<br />

DDR2 : OFF<br />

RTT_NOM 標準の ODT 値です。 DDR3_SDRAM<br />

120RZQ/2<br />

60RZQ/4<br />

40RZ/6<br />

DDR2_SDRAM<br />

150150 Ω<br />

7575 Ω<br />

5050 Ω<br />

RTT_WR RANK が複数あ るデザイ ンで使用されるダ イナ<br />

ミック ODT 書き込み終端です。 単一コ ンポーネン<br />

ト デザイ ンでは、 無効にし て く ださ い。<br />

OUTPUT_DRV DRAM の出力 ド ラ イ ブを設定し ます。 HIGH<br />

LOW<br />

DDR3_SDRAM<br />

OFFRTT_WR は無効<br />

120RZQ/2<br />

60RZQ/4


表 1-91 : 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>ソリューション</strong>でコンフィギュレーション可能なパラメーター (続き)<br />

パラ メーター 内容 オプシ ョ ン<br />

コアのカスタマイズ<br />

REG_CTRL DIMM またはバッファーなし DIMM を選択します。 ON : レジスタ付き DIMM<br />

OFF : コンポーネント、SODIMM、<br />

UDIMM<br />

IODELAY_GRP <strong>メモリ</strong> デザイ ンで使用される IDELAY グループを<br />

定義する ASCII 文字列です。 これは ISE ツールで使<br />

用され、インスタンシエート されたすべての<br />

IDELAY を同じバン ク内にグループ化し ます。1 つの<br />

<strong>FPGA</strong> に複数の IP コアがインプリ メント される場<br />

合、 それぞれに固有の名前を付け る必要があ り ます。<br />

ECC_TEST ON の場合、 UI を介して DRAM のすべてのバス幅<br />

へア ク セス可能です。た と えば、DATA_WIDTH ==<br />

64 の場合、 app_rd_data の幅は 288 です。<br />

デフォル ト : IODELAY_MIG<br />

PAYLOAD_WIDTH ユーザー データ に使用さ れる実際の DQ バスです。 ECC_TEST = OFF :<br />

PAYLOAD_WIDTH = DATA_WIDTH<br />

ECC_TEST = ON :<br />

PAYLOAD_WIDTH = DQ_WIDTH<br />

表 1-92 のパラ メ ータ-は、選択し た メ モ リ ク ロ ッ ク 周波数、 メ モ リ デバイ ス、 メ モ リ コンフィギュ<br />

レーシ ョ ン、 および <strong>FPGA</strong> のスピード グレードに依存します。 これらのパラ メーター値は<br />

memc_ui_top IP コ ア内に組み込まれてい る ため、 最上位で変更し ないで く だ さ い。 ザ イ リ ン ク ス<br />

では、 異なる コンフ ィ ギュ レーシ ョ ンに対しては MIG ツールを再実行する こ と を強 く 推奨し てい<br />

ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 143<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

ON<br />

OFF<br />

DEBUG_PORT デバ ッ グ信号/制御を有効に し ます。 ON<br />

OFF<br />

TCQ シミュレーション用の Clock-to-Q 遅延です。 単位はピ コ秒です。<br />

tCK <strong>メモリ</strong>の tCK クロック周期 (ps) です。 この値 (ps) は、MIG ツールで選択した<br />

周波数に基づき ます。<br />

DIFF_TERM_SYSCLK TRUE、 FALSE システム ク ロ ッ ク 入力ピ ンの差動終端<br />

です。<br />

DIFF_TERM_REFCLK TRUE、 FALSE IDELAY 基準 ク ロ ッ ク 入力ピ ンの差動<br />

終端です。<br />

注記 :<br />

1. 下位制限 (最大周波数) は現在、 特性評価中です。<br />

2. SIM_BYPASS_INIT_CAL パ ラ メ ーターを使用する と 、 シ ミ ュ レーシ ョ ン中の コ アの初期化時間を大幅に短縮で き ます。 シ ミ ュ レーシ ョ<br />

ン モード は 3 つあ り ます。FAST の場合、 各 メ モ リ デバイ スに対し て 1 ビッ トのみライト レベリ ングおよび読み出しキャ リ ブレーシ ョ ン<br />

が実行され、 これが残 り のデータ ビッ トに対して使用されます。SKIP の場合は、 読み出し キ ャ リ ブレーシ ョ ンが実行されず、 入力ク<br />

ロ ッ ク およびデータは位相が揃ってい る も の と みな さ れます。 シ ミ ュ レーシ ョ ン時のみ、 SIM_BYPASS_INIT_CAL を<br />

SIM_INIT_CAL_FULL に設定し て く だ さい。 イ ンプ リ メ ンテーシ ョ ンでは SIM_BYPASS_INIT_CAL を OFF に設定し て く ださい。 そ<br />

の他の設定では、 コ アが正常に機能し ません。<br />

3. このパラメーターを NORM に設定する と 、 メ モ リ コ ン ト ローラーで並べ替えのアルゴ リ ズムが有効にな り ます。 STRICT に設定する と<br />

要求コ マン ド の並べ替えが無効にな り 、 外部 メ モ リ デバ イ スに対する スループ ッ ト が大幅に低下し ます。 ただ し、 コ ア統合し た初期段階<br />

では、 コ マン ド 要求を受信順に処理する STRICT モード が有用です。 つま り 、 このモード では、 ユーザー デザイ ンが要求のステータ ス (<br />

保留中、 処理中) を確認する必要があ り ません。


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-92 : エンベデッ ド 7 <strong>シリーズ</strong> <strong>FPGA</strong> の<strong>メモリ</strong> <strong>ソリューション</strong>のコンフィギュレーション パラ メーター<br />

パラ メ ー タ ー 内容 オプシ ョ ン<br />

tFAW 最小間隔で、 4 つのア ク テ ィ ブ コマンドです。 この値 (ps) は、 MIG ツールで選択した<br />

デバイ スに基づき ます。<br />

tRRD ACTIVE-to-ACTIVE の最小コ マン ド 周期です。 こ の値 (ps) は、 MIG ツールで選択した<br />

デバイ スに基づき ます。<br />

tRAS <strong>メモリ</strong>の ACTIVE-to-PRECHARGE の<br />

最小周期です。<br />

tRCD ACTIVE-to-READ コマンドまたは<br />

ACTIVE-to-WRITE コマンドの遅延です。<br />

この値 (ps) は、 MIG ツールで選択した<br />

デバイ スに基づき ます。<br />

この値 (ps) は、 MIG ツールで選択した<br />

デバイ スに基づき ます。<br />

tREFI メ モ リ の周期的な リ フ レ ッ シ ュ間隔の平均値です。 こ の値 (ps) は、 MIG ツールで選択した<br />

デバイ スに基づき ます。<br />

tRFC REFRESH-to-ACTIVE または<br />

REFRESH-to-REFRESH コマンドの間隔です。<br />

この値 (ps) は、 MIG ツールで選択した<br />

デバイ スに基づき ます。<br />

tRP PRECHARGE コ マン ド の周期です。 こ の値 (ps) は、 MIG ツールで選択した<br />

デバイ スに基づき ます。<br />

tRTP READ-to-PRECHARGE コ マン ド の遅延です。 こ の値 (ps) は、 MIG ツールで選択した<br />

デバイ スに基づき ます。<br />

tWTR WRITE-to-READ コ マン ド の遅延です。 こ の値 (ps) は、 MIG ツールで選択した<br />

デバイ スに基づき ます。<br />

tZQI 短間隔の ZQ キ ャ リ ブレーシ ョ ンです。こ の値はシ<br />

ステムによって異な り、 システムの電圧および温<br />

度の予測変化率に基づき ます。 ZQ キャ リブレー<br />

シ ョ ンの詳細は、 メ モ リ ベンダーにお問い合わせ<br />

ください。<br />

tZQCS DDR3 SDRAM で ZQCS コ マン ド を実行する際の<br />

タイミング ウィンドウです。 nAL <strong>メモリ</strong> クロック サ イ ク ルにおけ る追加レ イ テンシ<br />

です。<br />

CL 読み出し CAS レ イ テンシです。可能なオプシ ョ ン<br />

は、 MIG ツールの周波数に依存し ます。<br />

CWL 書き込み CAS レ イ テンシです。可能なオプシ ョ ン<br />

は、 MIG ツールの周波数に依存し ます。<br />

単位はピ コ秒です。ユーザーが こ の機能<br />

を制御する場合は、 0 に設定し て く ださ<br />

い。<br />

この値 (CK) は、MIG ツールで選択した<br />

デバイ スに基づき ます。<br />

144 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

0<br />

DDR3 : 5、 6、 7、 8、 9<br />

DDR2 : 3、 4、 5、 6<br />

DDR3 : 5、 6、 7、 8<br />

BURST_TYPE バース ト のア ク セス順序を指定し ます。 Sequential<br />

Interleaved<br />

IBUF_LPWR_MODE 入力バ ッ フ ァーの低電力モー ド を有効/無効に し ま<br />

す。<br />

ON<br />

OFF<br />

IODELAY_HP_MODE IDELAY の高性能モー ド を有効/無効に し ます。 ON<br />

OFF


コアのカスタマイズ<br />

表 1-92 : エンベデッ ド 7 <strong>シリーズ</strong> <strong>FPGA</strong> の<strong>メモリ</strong> <strong>ソリューション</strong>のコンフィギュレーション パラ メーター (続き)<br />

パラ メ ー タ ー 内容 オプシ ョ ン<br />

DATA_IO_PRIM_TYPE イ ン ターフ ェ イ スのバン ク 選択に基づいて、 デー<br />

タ (DQ) およびス ト ローブ (DQS) の IBUF プリ ミ<br />

ティブをインスタンシエートします。 また、MIG<br />

ツールで設定した [I/O Power Reduction] オプシ ョ<br />

ンにも依存します。<br />

SYSCLK_TYPE DIFFERENTIAL<br />

SINGLE_ENDED<br />

NO_BUFFER<br />

REFCLK_TYPE DIFFERENTIAL<br />

SINGLE_ENDED<br />

NO_BUFFER<br />

USE_SYSTEM_CLOCK<br />

HP_LP<br />

HR_LP<br />

DEFAULT<br />

システムがシングルエンド システム ク<br />

ロ ッ ク を使用する、 差動シ ス テム ク<br />

ロックを使用する、または内部クロック<br />

で駆動される (バッファーなし) かを示<br />

し ます。選択し た CLK_TYPE の設定に<br />

基づいて、 ク ロ ッ ク を適切な入力ポー ト<br />

に配置する必要があ り ます。差動 ク ロ ッ<br />

ク の場合は sys_clk_p/sys_clk_n を、 シ<br />

ングルエンド クロックの場合は sys_<br />

clk_i を使用し ます。NO_BUFFER を選<br />

択し た場合、 ポー ト リストに表示され<br />

る sys_clk_i は内部 ク ロ ッ ク で駆動する<br />

必要があ り ます。<br />

システムがシングルエンド基準クロッ<br />

ク を使用する、差動基準 ク ロ ッ ク を使用<br />

する、 内部 ク ロ ッ ク で駆動さ れる (バッ<br />

ファーなし)、 またはシステム クロック<br />

入力のみ接続で き る (システム クロッ<br />

クを使用) かを示します。 選択した<br />

CLK_TYPE の設定に基づいて、 ク ロ ッ<br />

ク を適切な入力ポー ト に配置する必要<br />

があ り ます。差動ク ロ ッ クの場合は<br />

clk_ref_p/clk_ref_n を、シングルエン ド<br />

クロックの場合は clk_ref_i を使用しま<br />

す。NO_BUFFER を選択し た場合、ポー<br />

ト リ ス ト に表示さ れる clk_ref_i は内部<br />

ク ロ ッ ク で駆動する必要があ り ます。<br />

USE_SYSTEM_CLOCK を選択した場<br />

合、 clk_ref_i はユーザー デザイ ンの最<br />

上位モジ ュールでシ ス テム クロックに<br />

接続さ れます。<br />

CLKIN_PERIOD – 入力 ク ロ ッ ク 周期です。<br />

CLKFBOUT_MULT – PLL の VCO (電圧制御オシ レーター )<br />

乗算器です。 動作周波数に基づいて<br />

MIG ツールで設定し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 145<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-92 : エンベデッ ド 7 <strong>シリーズ</strong> <strong>FPGA</strong> の<strong>メモリ</strong> <strong>ソリューション</strong>のコンフィギュレーション パラ メーター (続き)<br />

パラ メ ー タ ー 内容 オプシ ョ ン<br />

CLKOUT0_DIVIDE、<br />

CLKOUT1_DIVIDE、<br />

CLKOUT2_DIVIDE、<br />

CLKOUT3_DIVIDE<br />

– PLL 出力用の VCO 出力分周器です。動<br />

作周波数に基づいて MIG ツールで設定<br />

します。<br />

CLKOUT0_PHASE – PLL 出力 の CLKOUT0 の位相です。 メ<br />

モリ <strong>インターフェイス</strong> ピンに選択した<br />

バン ク および動作周波数に基づいて<br />

MIG で設定し ます。<br />

DIVCLK_DIVIDE – PLLE2 VCO の分周器です。動作周波数<br />

に基づいて MIG ツールで設定し ます。<br />

USE_DM_PORT メ モ リ への書き込み動作中に使用 さ れるデータ マ<br />

スクを有効/無効に し ます。<br />

CK_WIDTH メ モ リ に対する CK/CK# 出力の数です。<br />

DQ_CNT_WIDTH CEIL 関数 (log2(DQ_WIDTH)) です。<br />

DRAM_TYPE <strong>メモリ</strong> コント ローラーでサポート される<strong>メモリ</strong>規<br />

格を示し ます。<br />

DRAM_WIDTH 各 DRAM コンポーネントの DQ バス幅です。<br />

AL 追加レ イ テンシです。 0<br />

nBANK_MACHS バンク マシンの数です。1 つのバン ク マシンが、常<br />

に 1 つの DRAM バン ク を管理し ます。<br />

DATA_BUF_ADDR_WIDTH <strong>メモリ</strong> コ ン ト ローラーへ渡さ れる要求タ グのバス<br />

幅です。4:1 モード のの場合は 5、2:1 モード の場合<br />

は 4 に設定し ます。<br />

0:無効<br />

1:有効<br />

DDR3、 DDR2<br />

2、 3、 4、 5、 6、 7、 8<br />

SLOT_0_CONFIG ランクの割り当てです。 シングル ランク : 8'b0000_0001<br />

デュアル ランク : 8'b0000_0011<br />

ECC エ ラー訂正コー ド であ り 、 72 ビ ッ ト のデータ幅コ<br />

ン フ ィ ギ ュ レーシ ョ ンに利用で き ます。現在、ECC<br />

機能はサポー ト さ れていません。<br />

RANKS ランクの数です。<br />

DATA_WIDTH 書き込みデータ マスク幅を決定し、ECC 機能が有<br />

効であ る か否かに依存し ます。<br />

APP_DATA_WIDTH この UI_INTFC パラ メーターが UI でのペイ ロー<br />

ド データ幅を指定し ます。<br />

146 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

5、 4<br />

72<br />

ECC = ON :<br />

DATA_WIDTH = DQ_WIDTH +<br />

ECC_WIDTH<br />

ECC = OFF :<br />

DATA_WIDTH = DQ_WIDTH<br />

APP_DATA_WIDTH = 2 x nCK_PER_<br />

CLK x PAYLOAD_WIDTH


APP_MASK_WIDTH この UI_INTFC パラ メーターが UI でのペイ ロー<br />

ド マスク幅を指定します。<br />

コアのカスタマイズ<br />

表 1-92 : エンベデッ ド 7 <strong>シリーズ</strong> <strong>FPGA</strong> の<strong>メモリ</strong> <strong>ソリューション</strong>のコンフィギュレーション パラ メーター (続き)<br />

パラ メ ー タ ー 内容 オプシ ョ ン<br />

USER_REFRESH ユーザーが リ フ レ ッ シ ュ コ マン ド を管理する かを<br />

示します。この値は、ユーザー <strong>インターフェイス</strong>ま<br />

たはネイテ ィブ <strong>インターフェイス</strong>のいずれかに対<br />

し て設定で き ます。<br />

ON、 OFF<br />

表 1-93 に示し たパラ メ ーターは、 選択し たピン配置に基づいて MIG ツールがセッ ト アップしま<br />

す。 ピ ン配置を変更する場合は、MIG ツールを再実行し てパ ラ メ ーターを適切に設定する こ と を推<br />

奨します。151 ページの 「DDR3 デザ イ ンにおけ るバン ク およびピ ンの選択」 および 159 ページの<br />

「DDR2 デザイ ンにおけるバン クおよびピ ンの選択ガ イ ド」 を参照して く ださい。<br />

ピ ン配置のパ ラ メ ーター設定が正し く ない と 、 シ ミ ュ レーシ ョ ンが正し く 動作し ない、 デザ イ ンの<br />

配線がで き ない、タ イ ミ ン グが満た さ れない、な どの結果を招 く こ と があ り ます。 こ れ ら のパ ラ メ ー<br />

ターで物理層をセ ッ ト ア ッ プ し、 物理層 と の間に必要な信号すべての配線が行われます。 次のパ ラ<br />

メ ーターは、 選択し たデータおよびア ド レ ス/制御バイ ト グループに基づいて計算されます。 選択<br />

したシステム信号 (システム クロック、基準クロック、 ステータス信号) は考慮し ません。<br />

表 1-93 : DDR2/DDR3 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンのピ ン配置パラ メ ー タ ー<br />

パラ メ ー タ ー 内容 例<br />

BYTE_LANES_B0、<br />

BYTE_LANES_B1、<br />

BYTE_LANES_B2<br />

DATA_CTL_B0、<br />

DATA_CTL_B1、<br />

DATA_CTL_B2<br />

PHY_0_BITLANES、<br />

PHY_1_BITLANES、<br />

PHY_2_BITLANES<br />

I/O バン ク で使用するバイ ト レーン を定義し<br />

ます。 ビ ッ ト 位置が 1 の場合はバイ ト レーン<br />

を使用し、 0 の場合は使用し ません。<br />

I/O バンクにおけるバイ ト レーンの使用モー<br />

ド を定義し ます。 ビ ッ ト 位置が 「1」 の場合は<br />

バイ ト レーンをデータに、 「0」 の場合はア ド<br />

レス/制御に使用し ます。<br />

各バイ ト レーンにつき 12 ビットのパラメー<br />

ターを使用し、必要な PHY の生成に使用する<br />

I/O 位置を決定し ます。こ のパ ラ メ ーターはバ<br />

ンクごとに存在します。 CK/CK# および<br />

RESET_N ピンを除き、 データおよびアドレ<br />

ス / 制御ピ ンのすべてがパ ラ メ ーター生成の<br />

際に考慮 さ れます。DQSCCIO ピ ンは、データ<br />

バイ ト グループで DQS ピンに使用される場<br />

合は除外 さ れます。<br />

ビ ッ ト の並びは MSB から LSB に向かって T0、<br />

T1、 T2、 T3 バイ ト グループの順です。<br />

4'b1101 : バンクでは 3 つのバイ ト レーンを使<br />

用し、 1 つは使用し ません。<br />

4'b1100 : BYTE_LANE の例を基準にする と 、<br />

2 つのバイ ト レーン をデータ用に使用し、1 つを<br />

アドレス/制御用に使用し ます。<br />

選択し たバン ク のすべてのバイ ト グループを表<br />

します。1 つのバイ ト レーンの 12ビッ トすべて<br />

を表し ます。 た と えば、 1 つのバン ク に対し て<br />

48'hFFE_FFF_000_ DF6 の よ う に指定し ます。<br />

12'hDF6 (12'b1101_1111_0110) : ビット ライン<br />

0、3、9 は使用せず、残 り のビ ッ ト を使用し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 147<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-93 : DDR2/DDR3 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンのピ ン配置パラ メ ー タ ー (続き)<br />

パラ メ ー タ ー 内容 例<br />

CK_BYTE_MAP CK/CK# のバン クおよびバイ ト レーン位置<br />

情報です。 各信号ペアに 8 ビットのパラメー<br />

ターが用意されています。<br />

• [7:4] - バンク位置で、サポー ト される値は<br />

0、 1、 2 です。<br />

• [3:0] - バンク内のバイ ト レーン位置で、<br />

サポー ト される値は 0、 1、 2、 3 です。<br />

最上位のデータ ま たはア ド レ ス/制御バイ ト グ<br />

ループで選択し たバン ク を、こ のパラ メ ーターで<br />

はバン ク 0 とします。バンクの番号は上から順に<br />

0、 1、 2 です。<br />

パラ メーター内では、 バイ ト グループ T0、 T1、<br />

T2、 T3 にそれぞれ 3、 2、 1、 0 の番号が付け ら<br />

れます。<br />

144'h00_00_00_00_00_00_00_00_00_00_00_0<br />

0_00_00_00_00_00_03 : 18 のクロック ペア (各<br />

クロック ピンに 8 ビッ ト) のパラ メ ーターの例<br />

です。 こ の場合、1 つのク ロ ッ ク ペアのみを使用<br />

します。 パラメーターの並びは MSB から LSB<br />

の順です (すなわち CK[0]/ CK#[0] はパラ メ ー<br />

ターの最下位 8 ビッ トに該当)。<br />

8'h13 : CK/CK# をバンク 1、 バイト レーン 3 に<br />

配置し ます。<br />

8'20 : CK/CK# をバンク 2、バ イ ト レーン 0 に配<br />

置します。<br />

148 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-93 : DDR2/DDR3 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンのピ ン配置パラ メ ー タ ー (続き)<br />

パラ メ ー タ ー 内容 例<br />

ADDR_MAP アドレスのバンクおよびバイト レーン位置情<br />

報です。各ピンに 12 ビットのパラメーターが<br />

用意 さ れています。<br />

• [11:8] - バンク位置で、 サポート される値<br />

は 0、 1、 2 です。<br />

• [7:4] - バンク内のバイ ト レーン位置で、<br />

サポー ト される値は 0、 1、 2、 3 です。<br />

• [3:0] - バイ ト レーン内のビッ ト位置で、<br />

サポー ト される値は [0、 1、 2、 ....A、 B]<br />

です。<br />

BANK_MAP バンク アドレスのバンクおよびバイト レー<br />

ン位置情報です。 「ADDR_MAP」 の説明を参<br />

照してください。<br />

CAS_MAP CAS コマンドのバンクおよびバイ ト レーン<br />

位置情報です。 「ADDR_MAP」 の説明を参照<br />

してください。<br />

CKE_ODT_BYTE_MAP CKE/ODT PHASER 制約のバン クおよびバイ ト<br />

レーン位置情報です。 ア ド レ ス/制御バイ ト グ<br />

ループのいずれか と し て見な さ れます。<br />

「CK_BYTE_MAP」 の説明を参照して く ださい。<br />

CS_MAP チップ セレク トのバンクおよびバイ ト レー<br />

ン位置情報です。 「ADDR_MAP」 の説明を参<br />

照してください。<br />

コアのカスタマイズ<br />

最上位のデータ ま たはア ド レ ス/制御バイ ト グ<br />

ループで選択し たバン ク を、こ のパラ メ ーターで<br />

はバン ク 0 とします。バンクの番号は上から順に<br />

0、 1、 2 です。<br />

パラ メーター内では、 バイ ト グループ T0、 T1、<br />

T2、 T3 にそれぞれ 3、 2、 1、 0 の番号が付け ら<br />

れます。<br />

バイ ト グループ内の最下位ピンを MAP パラ<br />

メーターでは 0 とします。バイト グループ内の<br />

ピン番号は最下位ピンから最上位ピンに向かっ<br />

て0 ~ 9 の番号が付け られます (DQSCC I/O ピ<br />

ンは含まれない)。バイ ト グループの DQSCC_N<br />

ピンと DQSCC_P ピンの番号はそれぞれ A、 B<br />

です。<br />

192'h000_000_039_038_037_036_035_034_03<br />

3_032_031_029_028_027_026_02B : アドレス<br />

幅が 16 ビットで各ピンが 12 ビッ トであること<br />

を表します。 この例では、 アドレス幅は 14 ビッ<br />

トです。パラメーターの並びは MSB から LSB<br />

の順です (すなわち ADDR[0] はパラ メ ーターの<br />

最下位 12 ビッ トに該当)。<br />

パラ メーターの並びは MSB から LSB の順です<br />

(すなわち ADDR[0] はパ ラ メ ーターの最下位 12<br />

ビッ トに該当)。 アドレス ピンをロケーション B<br />

のバン ク 0、 バイト レーン 2 に配置し ます。<br />

12'h235 : アドレス ピンをロケーション 5 のバン<br />

ク 2、 バイト レーン 3 に配置し ます。<br />

「ADDR_MAP」 の例を参照し て く ださ い。<br />

「ADDR_MAP」 の例を参照し て く ださ い。<br />

「CK_BYTE_MAP」 の例を参照し て く ださい。<br />

「ADDR_MAP」 の例を参照し て く ださ い。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 149<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-93 : DDR2/DDR3 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンのピ ン配置パラ メ ー タ ー (続き)<br />

パラ メ ー タ ー 内容 例<br />

PARITY_MAP パリティ ビッ トのバンクおよびバイト レー<br />

ン位置情報です。パ リ テ ィ ビッ トは、RDIMM<br />

に対し てのみ有効です。 「ADDR_MAP」 の説<br />

明を参照し て く だ さ い。<br />

RAS_MAP RAS コマンドのバンクおよびバイ ト レーン<br />

位置情報です。 「ADDR_MAP」 の説明を参照<br />

してください。<br />

WE_MAP WE コマンドのバンクおよびバイ ト レーン位<br />

置情報です。 「ADDR_MAP」 の説明を参照し<br />

てください。<br />

DQS_BYTE_MAP ス ト ローブのバンクおよびバイ ト レーン位置<br />

情報です。 「CK_BYTE_MAP」 の説明を参照<br />

してください。<br />

DATA0_MAP、<br />

DATA1_MAP、<br />

DATA2_MAP、<br />

DATA3_MAP、<br />

DATA4_MAP、<br />

DATA5_MAP、<br />

DATA6_MAP、<br />

DATA7_MAP、<br />

DATA8_MAP<br />

MASK0_MAP、<br />

MASK1_MAP<br />

データ バス用のバンク よびバイ ト レーンの<br />

位置情報です。 「ADDR_MAP」 の説明を参照<br />

してください。<br />

データ マスクのバンクおよびバイ ト レーン<br />

位置情報です。 「ADDR_MAP」 の説明を参照<br />

してください。<br />

「ADDR_MAP」 の例を参照し て く ださ い。<br />

「ADDR_MAP」 の例を参照し て く ださ い。<br />

「ADDR_MAP」 の例を参照し て く ださ い。<br />

「CK_BYTE_MAP」 の例を参照し て く ださい。<br />

「ADDR_MAP」 の例を参照し て く ださ い。<br />

「ADDR_MAP」 の例を参照し て く ださ い。<br />

150 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


設計ガ イ ド ラ イ ン<br />

DDR3 SDRAM<br />

設計ガイ ド ラ イ ン<br />

ここでは、DDR2 および DDR3 SDRAM デザイ ンの設計ガ イ ド ラ イ ンについて説明し ます。<br />

こ こ では、 バン ク の選択、 ピ ンの割 り 当て、 ピ ンの配置、 終端、 I/O 規格、 および ト レース長など、<br />

DDR3 SDRAM デザインに関するガイドラインを示します。<br />

デザイ ン規則<br />

<strong>メモリ</strong>のタイプ、 <strong>メモリ</strong> デバイ ス、 データ幅は、 選択し た <strong>FPGA</strong>、 <strong>FPGA</strong> のスピード グレード、デ<br />

ザ イ ンの動作周波数に よ って制約を受け ます。 最終的な周波数範囲は、 特性評価の結果に基づいて<br />

決定し ます。<br />

DDR3 コンポーネントの PCB 配線<br />

ク ロ ッ ク、 ア ド レ ス、 制御ラ イ ンの配線にはフ ラ イバイ配線 ト ポ ロ ジを使用する必要があ り ます。<br />

フライバイとは、 このライン グループがデイ ジーチェーン接続さ れ、 末端で適切に終端処理 さ れる<br />

こ と です。 あ る コ ンポーネン ト への、 こ のグループ内の各信号 ト レースの長 さ は一致し てい る必要<br />

があ り ます。 コン ト ローラーは、 ラ イ ト べリングを使用してコンポーネント間のスキュー差を解消<br />

し ます。 こ の手法は信号を複製する必要がないため、 使用する <strong>FPGA</strong> ピンが少なくなります。<br />

ピンの割り当て<br />

MIG ツールが、物理層の規則に従って、 メ モ リ <strong>インターフェイス</strong>のピンの割り当てを生成します。<br />

DDR3 デザイ ンにおけるバン クおよびピンの選択<br />

ザイ リ ンクス 7 <strong>シリーズ</strong> <strong>FPGA</strong> は非常に高性能な メ モ リ <strong>インターフェイス</strong>に対応するよう設計さ<br />

れていますが、DDR3 SDRAM 物理層を使用する際にはい く つかの規則に従 う 必要があ り ます。 ザ<br />

イリンクス 7 <strong>シリーズ</strong> <strong>FPGA</strong> は、 各 DQS バイ ト グループに専用のロ ジ ッ ク を備えています。 50<br />

ピンの各バンクそれぞれに 4 つの DQS バイ ト グループがあ り ます。各バイ ト グループには 1 つの<br />

DQS クロック兼用 (CC) I/O ペア と 10 の関連 I/O があ り ます。 一般的な DDR3 コンフィギュレー<br />

ションでは、 これら 10 個の I/O のうち 8 つを DQ に、 1 つをデータ マスク (DM) に使用し、 残 り<br />

の 1 つを メモ リ <strong>インターフェイス</strong>のその他の信号に使用します。 ザイ リンクス 7 <strong>シリーズ</strong> <strong>FPGA</strong><br />

は、 高速同期専用の ク ロ ッ ク 配線が I/O バンク内で垂直に配線されています。 このため、 DDR3 メ<br />

モリ イ ン ターフ ェ イ スはバン ク に水平でな く 垂直に配置する必要があ り ます。 ま た、 高 さ は最大で<br />

3 バンク までです。<br />

7 <strong>シリーズ</strong> DDR3 <strong>インターフェイス</strong>のピン配置は、可能な限り MIG ツールを使用し て生成し ます。<br />

MIG ツールは次の規則に従います。<br />

• バイ ト グループの DQS 信号は、 バン ク 内の指定 さ れた DQSCC ペアへ接続し ます。<br />

• DQ 信号は、 対応する DQS 信号 と 関連付け られてい るバイ ト グループのピ ンへ接続し ます。<br />

• DQSCC ピンには、DDR2 および DDR3 SDRAM DQS 信号専用のス ト ローブ接続があ り ます。<br />

詳細は、 『7 <strong>シリーズ</strong> <strong>FPGA</strong> クロック リソース ユーザー ガイド』 (UG472) を参照して く ださ<br />

い。<br />

• 制御 (RAS_N、 CAS_N、 WE_N、 CS_N、 CKE、 ODT) およびアド レス ラインは、データ バ<br />

イト グループで使用されていないバイ ト グループへ接続し ます。<br />

• 次の条件が満た さ れてい る場合には、 ア ド レ ス/制御ピ ンに VRN/VRP ピンを使用できます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 151<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

• DCI カ ス ケー ド が使用さ れてい る、ま たは出力のみの よ う にバン ク で VRN/VRP が不要な<br />

場合<br />

• 隣接するバイ ト グループ (T0/T3) がアド レス/制御バイ ト グループと して使用されている<br />

場合<br />

• 隣接するバイ ト グループ (T0/T3) に未使用ピ ンがあ る、 ま たは隣接するバイ ト グループ<br />

に CK 出力が含まれてい る場合<br />

• すべてのア ド レ ス/制御バイ ト グループは、 同じ I/O バンクに割り当てます。 アド レス/制御バ<br />

イト グループは複数のバン ク に分割でき ません。<br />

• アドレス/制御バイ ト グループは、3 つの I/O バンクにまたがる インターフェ イ スの中央の I/O<br />

バンクに割り当てます。<br />

• CK は、 いずれか 1 つの制御バイ ト グループの p/n ペアに接続し ます。 SRCC、 MRCC、 およ<br />

び DQSCC を含む、 グループ内の任意の p/n ペアへ接続可能です。<br />

• 複数の CK 出力がデュ アル ラ ン ク などに使用さ れる場合、 こ れらはすべて同じバイ ト レーン<br />

か ら の も のであ る必要があ り ます。<br />

• タ イ ミ ングが満たされて適切な I/O 電圧規格が使用 さ れてい る限 り 、 RESET_N はデバイ ス内<br />

で使用可能な任意のピ ンに接続で き ます (DCI カ ス ケー ド が使用 さ れていれば、 VRN/VRP を<br />

含む)。 GUI では、 タ イ ミ ングをサポー ト するために、 このピンを イ ン ターフェ イ スに使用さ<br />

れるバン ク に限定し ますが、 こ れは必須条件ではあ り ません。<br />

• DCI をサポート しているバンクでは、DCI (デジ タル制御イ ン ピーダン ス) 基準用に VRN およ<br />

び VRP が使用されます。 これによ り 、 DCI カ ス ケー ド が可能にな り ます。<br />

• イ ン ターフ ェ イ スは必ず垂直方向に配列 さ れます。<br />

• シングル <strong>インターフェイス</strong>には 4 つ以上のバン ク は使用で き ません。<br />

• すべてのア ド レ ス/制御バイ ト グループは同一バンクに割り当てます。 • システム クロック入力は<strong>メモリ</strong> <strong>インターフェイス</strong>と同じカラムにある必要があります。 また、<br />

可能な限 り ア ド レ ス/制御バン ク 内に配置する こ と を推奨し ます。<br />

• SSI テクノロジを用いているデバイスには SLR があ り ます。 メ モ リ <strong>インターフェイス</strong>は複数<br />

の SLR を ま た ぐ こ と はで き ません。 指定し たデバイ スおよびその他の使用可能なピ ン互換デ<br />

バイ スは、 こ の規則に必ず従 う 必要があ り ます。<br />

複数コ ン ト ローラーによ るバン クの共有<br />

<strong>メモリ</strong> イ ン ターフ ェ イ スで使用 さ れてい るバン ク の未使用部分を別の メ モ リ <strong>インターフェイス</strong>が<br />

共有する こ と はで き ません。 1 つのバン ク にあ るすべての FIFO および PHASER を制御する専用<br />

ロジックは、 シングル <strong>メモリ</strong> <strong>インターフェイス</strong>の動作用に設計されており、 別の<strong>メモリ</strong> インター<br />

フェイスとは共有できません。<br />

ピ ンの入れ替え<br />

• ピンは、 それぞれのバイト グループ (データおよびアド レス/制御) 内で自由に入れ替える こ と<br />

ができ ますが、 例外と して DQS ペアはク ロ ッ ク兼用 DQS ペアに、 CK は p/n ペアに割 り 当て<br />

られる必要があり ます。<br />

• バイ ト グループ (データおよびアド レス/制御) は、互いに制限な く 入れ替え る こ と ができ ます。<br />

• アドレス/制御バイ ト グループのピンは、 それぞれのバイ ト グループ内で制限な く 入れ替え る<br />

ことができます。<br />

• その他のピンの入れ替えは許可されていません。<br />

152 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


内部 Vref<br />

外部 Vref<br />

[Internal Vref] オプシ ョ ンは、 データ レー ト が 800Mb/s 以下の場合のみ使用で き ます。<br />

設計ガイ ド ラ イ ン<br />

ある <strong>FPGA</strong> のスピード グ レー ド の最大データ レー ト を実現する には、 外部 Vref を使用して、<br />

DRAM およびグ ラ ン ド へ供給さ れる V DD の中間地点を監視する必要があ り ます。 こ れには、 抵抗<br />

分周器あ る いは、 こ の中間地点をモニ タ リ ングする レ ギ ュ レータ を使用し て対応で き ます。 V DD 電<br />

圧に関係な く 固定の基準電圧を供給する レ ギ ュ レータは、 こ の場合のデータ レー ト には使用しない<br />

でください。<br />

システム クロック、 PLL、 MMCM の位置および制約<br />

イ ン ターフ ェ イ スのパフ ォーマン ス仕様を満たすには、 メ モ リ にク ロ ッ ク を供給し ているバン クに<br />

PLL および MMCM が必要です。 ま た、 シ ス テム ク ロ ッ ク入力も こ のバン ク に配置する こ と を強<br />

く推奨します。 MIG ツールは可能な限り これら 2 つの規則に従います。 ただ し例外 と し て、 シン<br />

グル バンクの 16 ビッ ト イ ン ターフ ェ イ スでは、 ク ロ ッ ク 入力用のピ ンがない可能性があ り ます。<br />

隣のバン ク か ら周波数バ ッ ク ボーン を経由し て PLL に ク ロ ッ ク を入力する必要があ り ます。 PLL<br />

へのシステム クロック入力は、 クロック兼用 I/O か ら供給する必要があ り ます。<br />

システム ク ロ ッ ク入力は、 同じ カ ラ ムにあ る イ ン ターフ ェ イ スにしか使用でき ません。 このク ロ ッ<br />

ク 入力を別のカ ラ ムか ら駆動する こ と はで き ません。 こ れは、 PLL/MMCM およびク ロ ッ ク配線を<br />

追加する こ と にな り 、 ジ ッ ターが大き く な り すぎ る ためです。<br />

PLL か ら の未使用の出力は ク ロ ッ ク 出力 と し て使用で き ます。 こ れ ら の出力のみ、 設定を変更で き<br />

ます。 PLL の全体的な動作や使用中の出力に関する設定は変更し ないで く だ さ い。<br />

複数の イ ン ターフ ェ イ スで 1 つの PLL を共有する こ と はで き ません。<br />

PLL パラ メ ーターの条件については、 89 ページの 「 ク ロ ッ キ ン グ アーキテクチャ」 を参照して く<br />

ださい。<br />

コンフィギュレーション<br />

UCF にはタ イ ミ ング、 ピン、 I/O 規格に関する情報が含まれています。 イ ン ターフ ェ イ スの動作周<br />

波数は、 MIG の GUI で sys_clk 制約を使用し て設定し ます。 こ の制約を変更する場合は、 ほかの<br />

内部パ ラ メ ーターに も影響が及ぶため、 MIG の GUI を再実行する必要があ り ます。 次に例を示し<br />

ます。<br />

NET "sys_clk_p" TNM_NET = TNM_sys_clk;<br />

TIMESPEC "TS_sys_clk" = PERIOD "TNM_sys_clk" 1.875 ns;<br />

clk_ref 制約で IDELAY 基準 ク ロ ッ ク の周波数を設定し ます (通常は 200MHz)。次に例 を 示 し ま す。<br />

NET "clk_ref_p" TNM_NET = TNM_clk_ref;<br />

TIMESPEC "TS_clk_ref" = PERIOD "TNM_clk_ref" 5 ns;<br />

I/O 規格は、 DDR3 <strong>インターフェイス</strong>に合わせて LVCMOS15、 SSTL15、 SSTL15_T_DCI、<br />

DIFF_SSTL15、 DIFF_SSTL15_T_DCI か ら適宜設定 さ れます。 シ ス テム クロック (sys_clk) およ<br />

び I/O 遅延基準 ク ロ ッ ク (clk_ref) には LVDS_25 を使用します。 これらの規格は、 システム コン<br />

フ ィ ギ ュ レーシ ョ ンに合わせて変更可能です。 こ れ ら の信号は、 シ ス テム接続のために最上位へ配<br />

線されます。<br />

• sys_rst: イン システム リ セ ッ ト 信号です。<br />

• init_calib_complete : 内部キ ャ リ ブレーシ ョ ンが完了し、 イ ン ターフ ェ イ スの使用準備がで き<br />

た こ と を示す信号です。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 153<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

終端<br />

• tg_compare_error : 読み出しデータ と 書き込みデータ が一致し ない場合にサンプル デザイ ンの<br />

トラフィック ジ ェ ネレーターに よ って生成 さ れる信号です。<br />

これらの信号はすべて LVCMOS25 に設定されていますが、システム デザイ ンに応じ て変更が可能<br />

です。 こ れ ら の信号を生成し て外部ピ ンに出力する のではな く 、 内部で使用する こ と も で き ます。<br />

16 ビッ ト幅の<strong>インターフェイス</strong>では、 アドレス/制御およびデータ があ るバン ク の上下いずれかの<br />

バンクにシステム ク ロ ッ ク が必要 と な る こ と があ り ます。 こ の場合、 MIG ツールは UCF に制約を<br />

追加し ます。 次に例を示し ます。<br />

NET "sys_clk_p" CLOCK_DEDICATED_ROUTE = BACKBONE;<br />

PIN "*/u_ddr3_infrastructure/plle2_i.CLKIN1" CLOCK_DEDICATED_ROUTE =<br />

BACKBONE;<br />

これは、 MIG ツールで生成し た メ モ リ <strong>インターフェイス</strong> デザ イ ンでのみ使用し て く だ さ い。 PAR<br />

の実行時に次の よ う な警告が表示さ れますが、 こ の警告は無視し てかまいません。<br />

WARNING:Place:1402 - A clock IOB / PLL clock component pair have been<br />

found that are not placed at an optimal clock IOB / PLL site pair.The<br />

clock IOB component is placed at site .The<br />

corresponding PLL component <br />

is placed at site .The clock IO can use the fast path<br />

between the IOB and the PLL if the IOB is placed on a Clock Capable IOB<br />

site that has dedicated fast path to PLL sites within the same clock<br />

region.You might want to analyze why this issue exists and correct<br />

it.This is normally an ERROR but the CLOCK_DEDICATED_ROUTE constraint<br />

was applied on COMP.PIN allowing your design to<br />

continue.This constraint disables all clock placer rules related to the<br />

specified COMP.PIN.The use of this override is highly discouraged as it<br />

might lead to very poor timing results.It is recommended that this error<br />

condition be corrected in the design.<br />

リソースが限られるため、MIG ツールで生成した メモ リ イ ン ターフ ェ イ ス を含む領域か ら I/O ク<br />

ロッキング バ ッ ク ボーン経由で隣接する領域の CMT ブロックへユーザー クロックを駆動しない<br />

で く だ さ い。詳細は、『7 <strong>シリーズ</strong> <strong>FPGA</strong> クロック リソース ユーザー ガイド』を参照してください。<br />

MIG ツールは選択し たデータ レー ト および電圧入力に基づいて VCCAUX_IO 制約を設定し ます。<br />

生成さ れた UCF には、 必要に応じ て制約が追加されます。 次に例を示し ます。<br />

NET "ddr3_dq[0]" LOC = "E16" | IOSTANDARD = SSTL15_T_DCI | VCCAUX_IO =<br />

HIGH ; # Bank:15 - Byte:T2<br />

NET "ddr3_dq[1]" LOC = "D17" | IOSTANDARD = SSTL15_T_DCI<br />

| VCCAUX_IO = HIGH ; # Bank:15 - Byte:T2<br />

詳細は、 『タ イ ミ ン グ クロージャ ユーザー ガイド』 を参照してください。<br />

LVDS および LVDS_25 IO 規格の使用法および必要な回路は、『7 <strong>シリーズ</strong> <strong>FPGA</strong> SelectIO リソー<br />

ス ユーザー ガイド』 [参照 1] を参照して く ださい。<br />

DDR3 SDRAM の終端処理を行 う 場合は次の規則に従って く だ さ い。<br />

• シミュレーション (IBIS またはほかのツールを使用) を実行する こ と を強 く 推奨し ます。 ア ド<br />

レス信号 (A、BA)、コマンド信号 (RAS_N、CAS_N、WE_N)、および制御信号 (CS_N、ODT)<br />

の ローデ ィ ン グは、 ス ピー ド 要件、 終端 ト ポ ロ ジ、 バ ッ フ ァ ーな し DIMM の使用、 複数ラ ン<br />

ク DIMM など、 さまざまな要因に依存し、 パフォーマンス目標の達成の妨げとなる場合もあ<br />

ります。<br />

154 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


設計ガイ ド ラ イ ン<br />

• 1333Mb/s 以上のデータ レー ト に対しては 40Ω のトレース イ ン ピーダン スが必要です。<br />

1333Mb/s 未満の場合は 50Ω のインピーダンスを使用できます。 図 1-70 および図 1-71 は、<br />

1333Mb/s 以上の場合を示し ています。<br />

• 単一方向の信号は、 メ モ リ デバイ スの内部終端ま たはロー ド 側の V TT に 0Ω のプルア ップ抵<br />

抗を使用し て終端し ます (図 1-70)。 V CCO と GND それぞれに 80Ω の分割抵抗を付けて終端<br />

処理で き ますが、 こ の方法は消費電力が高 く な り ます (図 1-71)。 双方向信号は、 その両端に終<br />

端抵抗を付け る必要があ り ます。 メ モ リ 側には必ず ODT が必要です。HP バン ク で最高性能を<br />

実現する には DCI を使用し、 HR バンクには IN_TERM (内部終端) を使用して く ださい。 上<br />

記の とお り 、 1333Mb/s 未満の場合は 50Ω の終端を使用で き ます。<br />

X-Ref Target - Figure 1-70<br />

X-Ref Target - Figure 1-71<br />

• 差動信号には、 メ モ リ デバイ スの内部終端ま たはロー ド 側の 80Ω 差動終端を使用し ます<br />

(図 1-72)。 双方向信号は、 その両端に終端抵抗を付け る必要があ り ます。 メ モ リ 側には必ず<br />

ODT が必要です。 HP バン ク で最高性能を実現する には DCI を使用し、 HR バンクには<br />

IN_TERM (内部終端) を使用して く ださい。 1333Mb/s 未満の場合は 100Ω を使用できます。<br />

X-Ref Target - Figure 1-72<br />

Source<br />

Source<br />

図 1-70 : V TT への 40Ω 終端<br />

図 1-71 : V CCO および GND への 80Ω の分割終端<br />

Source_P<br />

Source_N<br />

図 1-72 : 80Ω の差動終端<br />

• すべての終端は、 で き る限 り ロー ド に接近 させて配置し ます。 終端は、 ロー ド ピンから離れな<br />

ければその前後どち ら に配置し て も問題あ り ません。 こ の距離はシ ミ ュ レーシ ョ ンで決定で き<br />

ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 155<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

ZQ =<br />

40Ω<br />

ZQ =<br />

40Ω<br />

ZQ =<br />

40Ω<br />

ZQ =<br />

40Ω<br />

V TT<br />

VCCO<br />

RT = 40Ω<br />

Load<br />

2 x ZQ =<br />

80Ω<br />

Load<br />

2 x ZQ =<br />

80Ω<br />

<strong>UG586</strong>_c1_71_051011<br />

2 x ZQ =<br />

80Ω<br />

Load_P<br />

Load_N<br />

<strong>UG586</strong>_c1_72_051011


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

I/O 規格<br />

• パフォーマンス仕様を満たすには、 <strong>FPGA</strong> に DCI (HP バンクの場合) または IN_TERM (HR<br />

バンクの場合) が必要です。<br />

• RESET_N 信号は、 終端処理 さ れません。 こ の信号は、 メ モ リ 初期化時に GND への 4.7kΩ の<br />

抵抗を付けてプルダ ウ ンする必要があ り ます。<br />

• メ モ リ で信号を終端する ODT が必要です。 モー ド レ ジ ス タ を適切に設定する ため、 モー ド レ<br />

ジ ス タ を適切に設定する ため、 MIG ツールを使用して メモ リ システムのコンフィギュレー<br />

ションを指定します。ODT の詳細は、 Micron 社のテ ク ニカル ノ ー ト TN-47-01 [参照 7] を参<br />

照してください<br />

• ODT は、 DQ、 DQS、および DM 信号にのみ適用し ます。 ODT を使用する場合は、 モー ド レ<br />

ジスタで<strong>メモリ</strong>の ODT を有効に設定し ます。 ODT の使用時には、 DM を GND にプルダウン<br />

する必要があ り ますが、DM は <strong>FPGA</strong> で駆動されません (データ マ ス ク が未使用ま たは無効に<br />

設定さ れてい る場合)。 この際、DM に使用する プルダ ウ ン抵抗の値は、 ODT 値の 4 倍よ り低<br />

くしてください。詳細は、 <strong>メモリ</strong> ベンダーへ確認し て く だ さ い。 詳細は、 メ モ リ ベンダーへ<br />

確認し て く だ さ い。 ODT のデフ ォル ト 設定は、 表 1-94 および表 1-95 を参照して く ださい。<br />

表 1-94 : サポー ト されている ODT のデフ ォル ト 設定 - 書き込み<br />

<strong>FPGA</strong> DCI スロッ ト 1 スロッ ト 2<br />

スロッ ト 1 スロッ ト 2<br />

書き込み先 または<br />

IN_TERM ランク 1 ランク 2 ランク 1 ランク 2<br />

SR SR<br />

DR<br />

SR<br />

スロッ ト 1 OFF 120Ω (1) na 40Ω na<br />

スロッ ト 2 OFF 40Ω na 120Ω (1) na<br />

na (シングル<br />

スロット) スロッ ト 1 OFF 120Ω ODT OFF na na<br />

na (シングル<br />

スロット) スロッ ト 1 OFF 120Ω na na na<br />

注記 :<br />

1. 動的 ODT を使用しています。<br />

表 1-95 : サポー ト されている ODT のデフ ォル ト 設定 - 読み出し<br />

<strong>FPGA</strong> DCI スロッ ト 1 スロッ ト 2<br />

スロッ ト 1 スロッ ト 2<br />

書き込み先 または<br />

IN_TERM ランク 1 ランク 2 ランク 1 ランク 2<br />

SR SR<br />

DR<br />

SR<br />

スロッ ト 1 40Ω ODT OFF na 40Ω na<br />

スロッ ト 2 40Ω 40Ω na ODT OFF na<br />

na (シングル<br />

スロット) スロッ ト 1 40Ω ODT OFF ODT OFF na na<br />

na (シングル<br />

スロット) スロッ ト 1 40Ω ODT OFF na na na<br />

DDR3 SDRAM の I/O 規格を選択する際は、 次の規則に従って く だ さ い。<br />

156 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


設計ガイ ド ラ イ ン<br />

• MIG ツールで生成し たデザ イ ンでは、 High-Performance バン ク にあ るすべての双方向 I/O<br />

(DQ、DQS) に SSTL15_T_DCI および DIFF_SSTL15_T_DCI 規格を使用し ます。High-Range<br />

バンクでは、GUI で設定し た内部終端 (IN_TERM) 属性付き の SSTL15 および DIFF_SSTL15<br />

規格を使用し ます。<br />

• 制御/ア ド レ ス信号や転送 メ モ リ<br />

DIFF_SSTL15 規格を使用し ます。<br />

ク ロ ッ ク 信号などの単一方向出力には、 SSTL15 および<br />

• DDR3 <strong>メモリ</strong>へ駆動される RESET_N 信号には LVCMOS15 規格を使用し ます。<br />

MIG ツールは、GUI か ら の入力情報に基づいて、 適切な I/O 規格を使用し て UCF ファイルを作成<br />

します。<br />

トレース長<br />

こ こ で説明する ト レース長は、高速動作が必要なアプ リ ケーシ ョ ン を前提 と し ています。実効 ト レー<br />

ス長を決定する際は、 パ ッ ケージ遅延を考慮に入れる必要があ り ます。 同じパ ッ ケージの異な るデ<br />

バイ スでは、 内部パ ッ ケージ スキ ューの値が異な る こ と に留意し て く ださい。 同一パッ ケージの別<br />

デバイ ス を使用する場合は、 MIG の [Controller Options] ページで最小周期を適切な値まで下げて<br />

ください。<br />

遅延値を決定する方法 と し て、 IBIS モデルで提供 さ れる各ピ ンの L および C 値を使用する方法が<br />

あ り ます。 遅延値は、 (L × C) の平方根で求め る こ と がで き ます。<br />

その他に PARTGen を使用する方法も あ り ます。 PARTGen ユーテ ィ リ テ ィ を使用し て、 ターゲ ッ<br />

ト デバイ スの全ピンに対するパッ ケージ遅延値を含む PKG ファイルを生成します。たとえば、7 シ<br />

リーズ <strong>FPGA</strong> XC7K160T-FF676 のパ ッ ケージ遅延情報を取得する には、 次の コ マン ド を使用し ま<br />

す。<br />

partgen -v xc7k160t-ff676<br />

これで、 各ピンのパッケージ ト レース遅延情報を含む xc7k160tff676.pkg という名前のファイ<br />

ルが現在のデ ィ レ ク ト リ に生成さ れます。DDR3 SDRAM <strong>インターフェイス</strong>における トレース一致<br />

のガ イ ド ラ イ ンに従 う と 同時に、 全体的な電気的伝搬遅延には こ のパ ッ ケージ遅延を考慮し ます。<br />

同一パッケージの異なるダイでは、 パッケージ ピンが同じでも遅延値が異な る可能性があ り ます。<br />

その よ う な結果が予想さ れる場合は、値を適切に平均化する必要があ り ます。 こ れに よ り 、ターゲ ッ<br />

ト デバイ スの最大パフ ォーマン スが低下する場合があ り ます。<br />

DDR3 SDRAM 信号間の最大電気的遅延に関する規則は次の と お り です<br />

• すべての DQ と 関連する DQS/DQS# と の電気的遅延の最大値は ±5ps とします。<br />

• すべてのア ド レ ス/制御信号 と 関連する CK/CK# と の電気的遅延の最大値は ±25ps とします。<br />

• CK/CK# 信号は DQS/DQS# 信号の後に各 メ モ リ デバイ スに到達する必要があ り ます。<br />

DQS/DQS# に対する CK/CK# の追加の伝搬遅延は 150ps 以上を推奨し ますが、 0 よ りも大き<br />

く 1600ps よ り も小 さ い値であればすべてのデータ レート で受け入れられます。 DIMM モ<br />

ジ ュールでは、 こ の要件に合わせて設計する際に <strong>FPGA</strong> から DIMM の<strong>メモリ</strong> コンポーネント<br />

までの CK/CK# および DQS/DQS# の総伝搬遅延を考慮する必要があ り ます。<br />

<strong>メモリ</strong> イ ン ターフ ェ イ スが最大周波数で動作し ていない場合、 特定の DQ-DQS のス キ ュー制限値<br />

が高 く な り ます。 表 1-96 に、 こ の よ う な場合の緩和さ れた ス キ ュー制限 (+/-) に示し ます。 縦の列<br />

にはビ ッ ト レート を Mb/s 単位で示し、 横の列には DDR3 SDRAM コンポーネントのレートを示<br />

し ています。 表の上半分は 1867Mb/s か ら変化する ス キ ュー値を、 下半分は 1600Mb/s か ら変化す<br />

る ス キ ュー値を示し ています。 <strong>FPGA</strong> のデータ シー ト を確認し、 選択し たデバイ スの最大レー ト を<br />

決定し て く だ さ い。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 157<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-96 : DQ - DQS のスキュー制限<br />

<strong>メモリ</strong> コンポーネントのレート<br />

1867 1600 1333 1066 800<br />

1867 ~<br />

1600 49.6 31.4<br />

1333 112.1 93.9 66.4<br />

1066 150.0 150.0 150.0 125.2<br />

800 150.0 150.0 150.0 150.0 150.0<br />

1600 ~<br />

1333 67.5 40.0<br />

1066 150.0 133.8 98.8<br />

800 150.0 150.0 150.0 150.0<br />

たとえば、1867 レー ト の -3 <strong>FPGA</strong> が 1600 レート の DDR3 コンポーネント と 1600Mb/s で動作す<br />

る場合の DQ-DQS ス キ ュー制限は ±31.4ps と な り ます。 こ の イ ン ターフ ェ イ ス が 1333 レート の<br />

DDR3 コンポーネントに対して 1066Mb/s で動作する と 、 ス キ ュー制限は ±150ps となります。<br />

同様に、 メ モ リ イ ン ターフ ェ イ スが最大周波数で動作し ていない場合、 特定の CK とアドレス/制<br />

御のス キ ュー制限値が高 く な り ます。 に、 こ の よ う な場合のス キ ュー リミットをおおまか (+/-) に<br />

示します。 表 1-97 に、 こ の よ う な場合の緩和された ス キ ュー制限 (+/-) に示し ます。 縦の列には<br />

ビット レー ト を Mb/s 単位で示し、 横の列には DDR3 SDRAM コンポーネントのレートを示して<br />

います。 表の上半分は 1867Mb/s か ら変化する ス キ ュー値を、 下半分は 1600Mb/s か ら変化する ス<br />

キ ュー値を示し ています。<br />

表 1-97 : CK とアドレス/制御のスキュー リ ミット<br />

<strong>メモリ</strong> コンポーネントのレート<br />

1867 1600 1333 1066 800<br />

1867 ~<br />

1600 114.3 94.3<br />

1333 150.0 150.0 150.0<br />

1066 150.0 150.0 150.0 150.0<br />

800 150.0 150.0 150.0 150.0 150.0<br />

1600 ~<br />

1333 150.0 130.0<br />

1066 150.0 150.0 150.0<br />

800 150.0 150.0 150.0 150.0<br />

たとえば、1867Mb/s レー ト の <strong>FPGA</strong> が 1600 レート の DDR3 コンポーネント と 1600Mb/s で動作<br />

する場合の CK とアドレス/制御のス キ ュー制限は ±94.3ps となります。1600Mb/s レート の <strong>FPGA</strong><br />

158 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


DDR2 SDRAM<br />

設計ガイ ド ラ イ ン<br />

が 1333 レート の DDR3 コンポーネントに対して 1066Mb/s で動作する と 、ス キ ュー制限は ±150ps<br />

となります。<br />

DIMM とコンポーネントの両方でライト レべ リ ン グ を実行する必要があ り ます。 複数の コ ンポー<br />

ネン ト を使用するデザインは、 DIMM と同様にフライバイ配線トポロジでコンポーネン ト を構成<br />

する必要があ り ます。 つま り 、 ア ド レ ス、 制御、 および ク ロ ッ ク が コ ンポーネン ト 間で共有 さ れ、<br />

信号は異な る タ イ ミ ン グでそれぞれの コ ンポーネン ト へ到達し ます。各コ ンポ―ネン ト のデータ バ<br />

ス配線は、 可能な限 り 短 く し て く だ さ い。 ビ アの追加に よ る配線の不連続を最小限に抑え る ため、<br />

1 つの PCB レ イ ヤーに各信号を配線し て く だ さ い。 I/O バンク内のバイ ト 間スキューは、 1ns 以下<br />

に抑えます。<br />

こ こ では、 バン ク の選択、 ピ ンの割 り 当て、 ピ ンの配置、 終端、 I/O 規格、 および ト レース長など、<br />

DDR2 SDRAM デザインに関するガイドラインを示します。<br />

デザイ ンの規則<br />

<strong>メモリ</strong>のタイプ、 <strong>メモリ</strong> デバイ ス、 データ幅は、 選択し た <strong>FPGA</strong>、 <strong>FPGA</strong> のスピード グレード、デ<br />

ザ イ ンの動作周波数に よ って制約を受け ます。 最終的な周波数範囲は、 特性評価の結果に基づいて<br />

決定し ます。<br />

ピンの割り当て<br />

MIG ツールが、 物理層の規則に従って、 メ モ リ <strong>インターフェイス</strong>のピンの割り当てを生成します。<br />

DDR2 デザイ ンにおけるバン クおよびピンの選択ガイ ド<br />

ザイ リ ンクス 7 シ リーズ <strong>FPGA</strong> は非常に高性能な メ モ リ <strong>インターフェイス</strong>に対応するよう設計さ<br />

れていますが、DDR2 SDRAM 物理層を使用する際にはい く つかの規則に従 う 必要があ り ます。 ザ<br />

イリンクス 7 シ リーズ <strong>FPGA</strong> は、 各 DQS バイ ト グループに専用のロジッ ク を備えています。 50<br />

ピンの各バンクそれぞれに 4 つの DQS バイ ト グループがあ り ます。各バイ ト グループには 1 つの<br />

DQS クロック兼用 (CC) I/O ペア と 10 の関連 I/O があ り ます。 一般的な DDR2 コンフィギュレー<br />

ションでは、 これら 10 個の I/O のうち 8 つを DQ に、 1 つをデータ マスク (DM) に使用し、 残 り<br />

の 1 つを メモ リ <strong>インターフェイス</strong>のその他の信号に使用します。 ザイリンクス 7 シ リーズ <strong>FPGA</strong><br />

は、 高速同期専用の ク ロ ッ ク 配線が I/O バンク内で垂直に配線されています。 このため、 DDR2 メ<br />

モリ イ ン ターフ ェ イ スはバン ク に水平でな く 垂直に配置する必要があ り ます。 ま た、 高 さ は最大で<br />

3 バンク までです。<br />

7 <strong>シリーズ</strong> DDR2 <strong>インターフェイス</strong>のピン配置は、可能な限り MIG ツールを使用し て生成し ます。<br />

MIG ツールは次の規則に従います。<br />

• バイ ト グループの DQS 信号は、 バン ク 内の指定 さ れた DQS CC ペアへ接続し ます。<br />

• DQ および DM 信号は、 対応する DQS 信号 と 関連付け ら れてい るバイ ト グループのピンへ接<br />

続します。<br />

• 制御 (RAS_N、 CAS_N、 WE_N、 CS_N、 CKE、 ODT) およびアド レス ラインは、データ バ<br />

イト グループで使用されていないバイ ト グループへ接続し ます。<br />

• 次の条件が満た さ れてい る場合には、 ア ド レ ス/制御ピ ンに VRN/VRP ピンを使用できます。<br />

• DCI カ ス ケー ド が使用さ れてい る、ま たは出力のみの よ う にバン ク で VRN/VRP が不要な<br />

場合<br />

• 隣接するバイ ト グループ (T0/T3) がアド レス/制御バイ ト グループと して使用されている<br />

場合<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 159<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

• 隣接するバイ ト グループ (T0/T3) に使用ピ ンがあ る、 ま たは隣接するバイ ト グループに<br />

CK 出力が含まれてい る場合<br />

• すべてのア ド レ ス/制御バイ ト グループは、 同じ I/O バンクに割り当てます。 アド レス/制御バ<br />

イト グループは複数のバン ク に分割でき ません。<br />

• アドレス/制御バイ ト グループは、3 つの I/O バンクにまたがる インターフェ イ スの中央の I/O<br />

バンクに割り当てます。<br />

• CK は、 いずれか 1 つの制御バイ ト グループの p/n ペアに接続し ます。 SRCC、 MRCC、 およ<br />

び DQSCC を含む、 グループ内の任意の p/n ペアへ接続可能です。 こ れら のピ ンは、 各コ ン<br />

ポーネン ト に対して生成され、 I/O ピンの制限によって最大 4 つのポー ト /ペアのみ生成 さ れま<br />

す。 1 つのバイ ト グループでは、 1 つの CK ペアのみ接続される必要があ り ます。 CK ペアは<br />

各コ ンポーネン ト に対し て生成 さ れ、 I/O ピンの制限によ って最大で 4 つのペアのみ生成され<br />

ます。 この値は、MIG GUI の [Memory Options] ページの [Memory Clock Selection] の設定<br />

に基づいて決定されます。<br />

• CS_N ピンは、 各コ ンポーネン ト に対し て生成されますが、 I/O ピンの制限によ って最大で 4<br />

ポー ト /ペアのみ生成可能です。<br />

• シングル ランク コンポーネントおよび DIMM の場合、CKE ポー ト は 1 つのみ生成 さ れます。<br />

• シングル ランク コンポーネントおよび DIMM の場合、 ODT ポー ト はコ ンポーネン ト 数に基<br />

づいて繰 り 返し生成さ れます。 最大ポー ト 数は 3 です。<br />

• x8 デバイ スでデータ幅が 16 の場合は、 CK/CK#、 CS、 ODT ポー ト を 1 セ ッ ト のみ生成し、 1<br />

つのバン ク にデザイ ンを収めます。<br />

• DCI をサポート しているバンクでは、DCI (デジ タル制御イ ン ピーダン ス) 基準用に VRN およ<br />

び VRP が使用されます。 これによ り 、 DCI カ ス ケー ド が可能にな り ます。<br />

• イ ン ターフ ェ イ スは必ず垂直方向に配列 さ れます。<br />

• シングル <strong>インターフェイス</strong>には 4 つ以上のバン ク は使用で き ません。選択するすべてのバン ク<br />

は論理的に正し い組み合わせ と な る必要があ り ます。<br />

• システム クロック入力は<strong>メモリ</strong> <strong>インターフェイス</strong>と同じカラムにある必要があります。 また、<br />

可能な限 り ア ド レ ス/制御バン ク 内に配置する こ と を推奨し ます。<br />

• SSI テクノロジで実装されたデバイスには、SLR があ り ます。 メ モ リ <strong>インターフェイス</strong>は複数<br />

の SLR を ま た ぐ こ と はで き ません。 指定し たデバイ スおよびその他の使用可能なピ ン互換デ<br />

バイ スは、 こ の規則に必ず従 う 必要があ り ます。<br />

複数コ ン ト ローラーによ るバン クの共有<br />

<strong>メモリ</strong> イ ン ターフ ェ イ スで使用 さ れてい るバン ク の未使用部分を別の メ モ リ <strong>インターフェイス</strong>が<br />

共有する こ と はで き ません。 1 つのバン ク にあ るすべての FIFO および PHASER を制御する専用<br />

ロジックは、 シングル <strong>メモリ</strong> <strong>インターフェイス</strong>の動作用に設計されており、 別の<strong>メモリ</strong> インター<br />

フェイスとは共有できません。<br />

ピ ンの入れ替え<br />

• ピンは、 それぞれのバイト グループ (データおよびアド レス/制御) 内で自由に入れ替える こ と<br />

ができ ますが、 例外と して DQS ペアはク ロ ッ ク兼用 DQS ペアに、 CK は p/n ペアに割 り 当て<br />

られる必要があり ます。<br />

• バイ ト グループ (データおよびアド レス/制御) は、互いに制限な く 入れ替え る こ と ができ ます。<br />

• アドレス/制御バイ ト グループのピンは、 それぞれのバイ ト グループ内で制限な く 入れ替え る<br />

ことができます。<br />

• その他のピンの入れ替えは許可されていません。<br />

160 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


内部 Vref<br />

[Internal Vref] オプシ ョ ンは、 データ レー ト が 800Mb/s 以下の場合のみ使用で き ます。<br />

システム クロック、 PLL の位置および制約<br />

設計ガイ ド ラ イ ン<br />

イ ン ターフ ェ イ スのパフ ォーマン ス仕様を満たすには、 メ モ リ にク ロ ッ ク を供給し ているバン クに<br />

PLL が必要です。 ま た、 シ ス テ ム ク ロ ッ ク 入力も こ のバン ク に配置する こ と を強 く 推奨し ます。<br />

MIG ツールは可能な限り これら 2 つの規則に従います。 ただ し例外 と し て、 シン グル バンクの 16<br />

ビッ ト イ ン ターフ ェ イ スでは、 ク ロ ッ ク 入力用のピ ンがない可能性があ り ます。 隣のバン ク か ら周<br />

波数バ ッ ク ボーン を経由し て PLL に ク ロ ッ ク を入力する必要があ り ます。 PLL へのシステム ク<br />

ロック入力は、 クロック兼用 I/O か ら供給する必要があ り ます。<br />

システム ク ロ ッ ク入力は、 同じ カ ラ ムにあ る イ ン ターフ ェ イ スにしか使用でき ません。 このク ロ ッ<br />

ク 入力を別のカ ラ ムか ら駆動する こ と はで き ません。 こ れは、 PLL/MMCM およびク ロ ッ ク配線を<br />

追加する こ と にな り 、 ジ ッ ターが大き く な り すぎ る ためです。<br />

PLL か ら の未使用の出力は ク ロ ッ ク 出力 と し て使用で き ます。 こ れ ら の出力のみ、 設定を変更で き<br />

ます。 PLL の全体的な動作や使用中の出力に関する設定は変更し ないで く だ さ い。<br />

複数の イ ン ターフ ェ イ スで 1 つの PLL を共有する こ と はで き ません。<br />

PLL パラ メ ーターの条件については、 89 ページの 「 ク ロ ッ キ ン グ アーキテクチャ」 を参照して く<br />

ださい。<br />

コンフィギュレーション<br />

UCF にはタ イ ミ ング、 ピン、 I/O 規格に関する情報が含まれています。 イ ン ターフ ェ イ スの動作周<br />

波数は、 MIG の GUI で sys_clk 制約を使用し て設定し ます。 こ の制約を変更する場合は、 ほかの<br />

内部パ ラ メ ーターに も影響が及ぶため、 MIG の GUI を再実行する必要があ り ます。 次に例を示し<br />

ます。<br />

NET "sys_clk_p" TNM_NET = TNM_sys_clk;<br />

TIMESPEC "TS_sys_clk" = PERIOD "TNM_sys_clk" 1.875 ns;<br />

clk_ref 制約で IDELAY 基準 ク ロ ッ ク の周波数を設定し ます (通常は 200MHz)。次に例 を 示 し ま す。<br />

NET "clk_ref_p" TNM_NET = TNM_clk_ref;<br />

TIMESPEC "TS_clk_ref" = PERIOD "TNM_clk_ref" 5 ns;<br />

I/O 規格は、 DDR2 <strong>インターフェイス</strong>に合わせて LVCMOS18、 SSTL18_II、 SSTL18_II_T_DCI、<br />

DIFF_SSTL18_II、 DIFF_SSTL18_II_T_DCI か ら適宜設定 さ れます。 シ ス テム クロック (sys_clk)<br />

および I/O 遅延基準ク ロ ッ ク (clk_ref) には LVDS_25 を使用し ます。 これらの規格は、 システム<br />

コ ン フ ィ ギ ュ レーシ ョ ンに合わせて変更可能です。 こ れ ら の信号は、 シ ス テム接続のために最上位<br />

へ配線さ れます。<br />

• sys_rst :メイン システム リ セ ッ ト 信号です。<br />

• init_calib_complete : 内部キ ャ リ ブレーシ ョ ンが完了し、 イ ン ターフ ェ イ スの使用準備がで き<br />

た こ と を示す信号です。<br />

• tg_compare_error : 読み出しデータ と 書き込みデータ が一致し ない場合にサンプル デザイ ンの<br />

トラフィック ジ ェ ネレーターに よ って生成 さ れる信号です。<br />

これらの信号はすべて LVCMOS25 に設定されていますが、システム デザイ ンに応じ て変更が可能<br />

です。 こ れ ら の信号を生成し て外部ピ ンに出力する のではな く 、 内部で使用する こ と も で き ます。<br />

16 ビッ ト幅の<strong>インターフェイス</strong>では、 アドレス/制御およびデータ があ るバン ク の上下いずれかの<br />

バンクにシステム ク ロ ッ ク が必要 と な る こ と があ り ます。 こ の場合、 MIG ツールは UCF に制約を<br />

追加し ます。 次に例を示し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 161<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

終端<br />

NET "sys_clk_p" CLOCK_DEDICATED_ROUTE = BACKBONE;<br />

PIN "*/u_ddr2_infrastructure/plle2_i.CLKIN1" CLOCK_DEDICATED_ROUTE =<br />

BACKBONE;<br />

これは、 MIG ツールで生成し た メ モ リ <strong>インターフェイス</strong> デザ イ ンでのみ使用し て く だ さ い。 PAR<br />

の実行時に次の よ う な警告が表示さ れますが、 こ の警告は無視し てかまいません。<br />

WARNING:Place:1402 - A clock IOB/PLL clock component pair have been found that are not<br />

placed at an optimal clock IOB/PLL site pair.The clock IOB component is placed<br />

at site .The corresponding PLL component<br />

is placed at site .The clock<br />

IO can use the fast path between the IOB and the PLL if the IOB is placed on a Clock Capable<br />

IOB site that has dedicated fast path to PLL sites within the same clock region.You might want<br />

to analyze why this issue exists and correct it.This is normally an ERROR but the<br />

CLOCK_DEDICATED_ROUTE constraint was applied on COMP.PIN <br />

allowing your design to continue.This constraint disables all clock placer rules related to the<br />

specified COMP.PIN.The use of this override is highly discouraged as it might lead to very poor<br />

timing results.It is recommended that this error condition be corrected in the design.<br />

リソースが限られるため、MIG ツールで生成した メモ リ イ ン ターフ ェ イ ス を含む領域か ら I/O ク<br />

ロッキング バ ッ ク ボーン経由で隣接する領域の CMT ブロックへユーザー クロックを駆動しない<br />

で く だ さ い。 詳細は、 『7 <strong>シリーズ</strong> <strong>FPGA</strong> クロック リソース ユーザー ガイド』 [参照 18] を参照し<br />

てください。<br />

MIG ツールは選択し たデータ レー ト および電圧入力に基づいて Vccaux_io 制約を設定し ます。 生<br />

成された UCF には、 必要に応じ て制約が追加されます。 次に例を示し ます。<br />

NET "ddr2_dq[0]" LOC = "E16" | IOSTANDARD = SSTL18_II_T_DCI | VCCAUX_IO =<br />

HIGH ; # Bank:15 - Byte:T2<br />

NET "ddr2_dq[1]" LOC = "D17" | IOSTANDARD = SSTL18_II_T_DCI<br />

| VCCAUX_IO = HIGH ; # Bank:15 - Byte:T2<br />

詳細は、 『タ イ ミ ン グ クロージャ ユーザー ガイド』 [参照 13] を参照して く ださい。<br />

LVDS および LVDS_25 IO 規格の使用法および必要な回路は、『7 <strong>シリーズ</strong> <strong>FPGA</strong> SelectIO リソー<br />

ス ユーザー ガイド』 [参照 1] を参照して く ださい。<br />

DDR2 SDRAM の終端処理を行 う 場合は次の規則に従って く だ さ い。。<br />

• シミュレーション (IBIS またはほかのツールを使用) を実行する こ と を強 く 推奨し ます。 ア ド<br />

レス信号 (A、BA)、コマンド信号 (RAS_N、CAS_N、WE_N)、および制御信号 (CS_N、ODT)<br />

の ローデ ィ ン グは、 ス ピー ド 要件、 終端 ト ポ ロ ジ、 バ ッ フ ァ ーな し DIMM の使用、 複数ラ ン<br />

ク DIMM な ど、 さ ま ざ ま な要因に依存し ます。 ローデ ィ ン グがパフ ォーマン ス目標の達成の<br />

妨げ と な る場合も あ り ます。<br />

• 単一方向の信号は、 メ モ リ デバイ スの内部終端ま たはロー ド 側の VTT に 50Ω のプルア ップ<br />

抵抗を使用して終端します (図 1-70 では 40Ω ではな く 50Ω)。VCCO と GND それぞれに 100Ω<br />

の分割抵抗を付けて終端処理で き ますが、 こ の方法は消費電力が高 く な り ます (図 1-71 では<br />

80Ω ではな く 100Ω)。 双方向信号は、 その両端に終端抵抗を付け る必要があ り ます。 メ モ リ 側<br />

には必ず ODT が必要です。 HP バン ク で最高性能を実現する には DCI を使用し、 HR バンク<br />

には IN_TERM (内部終端) を使用して く ださい。<br />

• 差動信号には、 メ モ リ デバイ スの内部終端ま たはロー ド 側の 100Ω 差動終端を使用し ます<br />

(図 1-72)。 双方向信号は、 その両端に終端抵抗を付け る必要があ り ます。 メ モ リ 側には必ず<br />

162 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


I/O 規格<br />

設計ガイ ド ラ イ ン<br />

ODT が必要です。 HP バン ク で最高性能を実現する には DCI を使用し、 HR バンクには<br />

IN_TERM (内部終端) を使用して く ださい。<br />

• すべての終端は、 で き る限 り ロー ド に接近 させて配置し ます。 終端は、 ロー ド ピンから離れな<br />

ければその前後どち ら に配置し て も問題あ り ません。 こ の距離はシ ミ ュ レーシ ョ ンで決定で き<br />

ます。<br />

• パフォーマンス仕様を満たすには、 <strong>FPGA</strong> に DCI (HP バンクの場合) または IN_TERM (HR<br />

バンクの場合) が必要です。<br />

• ODT および CKE 信号は終端 さ れません。 こ れ ら の信号は、 メ モ リ 初期化時に GND への<br />

4.7kΩ の抵抗を付けてプルダ ウ ンする必要があ り ます。<br />

• メ モ リ で信号を終端する ODT が必要です。モー ド レ ジ ス タ を適切に設定する ため、MIG ツー<br />

ルを使用し て メ モ リ システムのコンフィギュレーションを指定します。ODT の詳細は、Micron<br />

社のテ ク ニカル ノー ト TN-47-01 [参照 7] を参照して ください<br />

• ODT は、 DQ、 DQS、および DM 信号にのみ適用し ます。 ODT を使用する場合は、 モー ド レ<br />

ジスタで<strong>メモリ</strong>の ODT を有効に設定し ます。 ODT の使用時には、 DM を GND にプルダウン<br />

する必要があ り ますが、DM は <strong>FPGA</strong> で駆動されません (データ マ ス ク が未使用ま たは無効に<br />

設定さ れてい る場合)。<br />

• ODT が使用されているが <strong>FPGA</strong> で駆動されていない場合 (データ マ ス ク が未使用ま たは無効<br />

に設定されている場合) は、 DM を GND にプルダ ウ ンする必要があ り ます。<br />

DDR2 SDRAM の I/O 規格を選択する際は、 次の規則に従って く だ さ い。<br />

• MIG ツールで生成したデザインは、 High-Performance バン ク のすべての双方向 I/O (DQ、<br />

DQS) に SSTL18_II_T_DCI および DIFF_SSTL18_II_T_DCI 規格を使用し ます。High-Range<br />

バンクでは、 SSTL18_II_T_DCI および DIFF_SSTL18_II_T_DC 規格を使用し、 内部終端<br />

(IN_TERM) 属性は GUI で選択し ます。<br />

• 制御/ア ド レ ス信号や転送 メ モ リ ク ロ ッ ク 信号などの単一方向出力には、 SSTL18_II および<br />

DIFF_SSTL18_II 規格を使用し ます。<br />

• DDR2 <strong>メモリ</strong> RDIMM へ駆動さ れる RESET_N 信号には LVCMOS18 規格を使用し ます。<br />

MIG ツールは、GUI か ら の入力情報に基づいて、 適切な I/O 規格を使用し て UCF ファイルを<br />

作成し ます。<br />

トレース長<br />

こ こ で説明する ト レース長は、 高速動作が必要なアプ リ ケーシ ョ ン を前提 と し ています。 効率的な<br />

ト レース長を決定する際には、 パ ッ ケージ遅延を考慮する必要があ り ます。 同じパ ッ ケージの異な<br />

るデバイ スでは、 内部パ ッ ケージ ス キ ューの値が変 り ます。 同一パ ッ ケージの別デバイ ス を使用す<br />

る場合は、 MIG の [Controller Options] ページで最小周期を適切な値まで下げて く だ さ い。<br />

遅延値を決定する方法 と し て、 IBIS モデルで提供 さ れる各ピ ンの L および C 値を使用する方法が<br />

あ り ます。 遅延値は、 (L×C) の平方根で求め る こ と がで き ます。<br />

その他に PARTGen を使用する方法も あ り ます。 PARTGen ユーテ ィ リ テ ィ を使用し て、 ターゲ ッ<br />

ト デバイ スの全ピンに対するパッ ケージ遅延値を含む PKG ファイルを生成します。 たとえば、7<br />

<strong>シリーズ</strong> <strong>FPGA</strong> XC7K160T-FF676 のパ ッ ケージ遅延情報を取得する には、 次の コ マン ド を使用し<br />

ます。<br />

partgen -v xc7k160tffg676<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 163<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

これで、 各ピンのパッケージ ト レース遅延情報を含む xc7k160tff676.pkg という名前のファイ<br />

ルが現在のデ ィ レ ク ト リ に生成さ れます。DDR2 SDRAM <strong>インターフェイス</strong>における トレース一致<br />

のガ イ ド ラ イ ンに従 う と 同時に、 全体的な電気的伝搬遅延には こ のパ ッ ケージ遅延を考慮し ます。<br />

同一パッケージの異なるダイでは、 パッケージ ピンが同じでも遅延値が異な る可能性があ り ます。<br />

その よ う な結果が予想さ れる場合は、 遅延値を適切に平均化する必要があ り ます。<br />

DDR2 SDRAM 信号間の最大電気的遅延に関する規則は次の と お り です。<br />

DDR3 ピ ン配置の例<br />

• すべての DQ と 関連する DQS/DQS# と の電気的遅延の最大値は ±5ps 以下 と し ます。<br />

• すべてのア ド レ ス/制御信号 と 関連する CK/CK# と の電気的遅延の最大値は ±25ps 以下 と し ま<br />

す。<br />

• すべての DQS/DQS# と CK/CK# と の電気的遅延の最大値は ±25ps 以下 と し ます。<br />

表 1-98 に、1 つのバン ク に含まれる 16 ビットの DDR3 <strong>インターフェイス</strong>の例を示します。この例<br />

は、 1Gb の x16 デバイ ス を使用する コ ンポーネン ト <strong>インターフェイス</strong>を表しています。 x8 コン<br />

ポーネン ト を使用する場合、 ま たは さ ら に多数のア ド レ ス ピ ンが必要な高集積デバイ スが必要な場<br />

合には、 次のオプシ ョ ンがあ り ます。<br />

• バンクを 1 つ追加で使用で き ます。<br />

• タイミングが満たされている場合に限り、RESET_N を別のバン ク へ移動 させる こ と がで き ま<br />

す。 こ の信号の外部タ イ ミ ン グは ク リ テ ィ カルではな く 、 レベル シフターが使用できます。<br />

• DCI マス ター用に別のバン ク が使用でき る場合は、 DCI をカスケード して VRN/VRP ピンを<br />

空ける こ と ができ ます。<br />

この例では内部 Vref を使用しています。<br />

表 1-98 : 1 つのバンクに含まれる 16 ビットの DDR3 <strong>インターフェイス</strong><br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

1 VRP N/A SE 49<br />

1 DQ15 D_11 P 48<br />

1 DQ14 D_10 N 47<br />

1 DQ13 D_09 P 46<br />

1 DQ12 D_08 N 45<br />

1 DQS1_P D_07 P 44 DQSCC-P<br />

1 DQS1_N D_06 N 43 DQSCC-N<br />

1 DQ11 D_05 P 42<br />

1 DQ10 D_04 N 41<br />

1 DQ9 D_03 P 40<br />

1 DQ8 D_02 N 39<br />

1 DM1 D_01 P 38<br />

1 D_00 N 37<br />

164 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-98 : 1 つのバンクに含まれる 16 ビットの DDR3 <strong>インターフェイス</strong> (続き)<br />

1 DQ7 C_11 P 36<br />

1 DQ6 C_10 N 35<br />

1 DQ5 C_09 P 34<br />

1 DQ4 C_08 N 33<br />

設計ガイ ド ラ イ ン<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

1 DQS0_P C_07 P 32 DQSCC-P<br />

1 DQS0_N C_06 N 31 DQSCC-N<br />

1 DQ3 C_05 P 30<br />

1 DQ2 C_04 N 29<br />

1 DQ1 C_03 P 28 CCIO-P<br />

1 DQ0 C_02 N 27 CCIO-N<br />

1 DM0 C_01 P 26 CCIO-P<br />

1 RESET_N C_00 N 25 CCIO-N<br />

1 RAS_N B_11 P 24 CCIO-P<br />

1 CAS_N B_10 N 23 CCIO-N<br />

1 WE_N B_09 P 22 CCIO-P<br />

1 BA2 B_08 N 21 CCIO-N<br />

1 CK_P B_07 P 20 DQSCC-P<br />

1 CK_N B_06 N 19 DQSCC-N<br />

1 BA1 B_05 P 18<br />

1 BA0 B_04 N 17<br />

1 CS_N B_03 P 16<br />

1 ODT B_02 N 15<br />

1 CKE B_01 P 14<br />

1 A12 B_00 N 13<br />

1 A11 A_11 P 12<br />

1 A10 A_10 N 11<br />

1 A9 A_09 P 10<br />

1 A8 A_08 N 9<br />

1 A7 A_07 P 8 DQSCC-P<br />

1 A6 A_06 N 7 DQSCC-N<br />

1 A5 A_05 P 6<br />

1 A4 A_04 N 5<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 165<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-98 : 1 つのバンクに含まれる 16 ビットの DDR3 <strong>インターフェイス</strong> (続き)<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

1 A3 A_03 P 4<br />

1 A2 A_02 N 3<br />

1 A1 A_01 P 2<br />

1 A0 A_00 N 1<br />

1 VRN N/A SE 0<br />

表 1-99 は、 2 つのバン ク に含まれる 32 ビッ トの DDR3 イ ン ターフ ェ イ スの例です。 この例は、<br />

2Gb の x8 コ ンポーネン ト を使用し ています。<br />

表 1-99 : 2 つのバンクに含まれる 32 ビットの DDR3 <strong>インターフェイス</strong><br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

1 VRP N/A SE 49<br />

1 D_11 P 48<br />

1 D_10 N 47<br />

1 D_09 P 46<br />

1 D_08 N 45<br />

1 D_07 P 44 DQSCC-P<br />

1 D_06 N 43 DQSCC-N<br />

1 D_05 P 42<br />

1 D_04 N 41<br />

1 D_03 P 40<br />

1 D_02 N 39<br />

1 D_01 P 38<br />

1 D_00 N 37<br />

1 C_11 P 36<br />

1 C_10 N 35<br />

1 C_09 P 34<br />

1 C_08 N 33<br />

1 C_07 P 32 DQSCC-P<br />

1 C_06 N 31 DQSCC-N<br />

1 C_05 P 30<br />

1 C_04 N 29<br />

1 C_03 P 28 CCIO-P<br />

166 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-99 : 2 つのバンクに含まれる 32 ビットの DDR3 <strong>インターフェイス</strong> (続き)<br />

設計ガイ ド ラ イ ン<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

1 C_02 N 27 CCIO-N<br />

1 CKE C_01 P 26 CCIO-P<br />

1 ODT C_00 N 25 CCIO-N<br />

1 RAS_N B_11 P 24 CCIO-P<br />

1 CAS_N B_10 N 23 CCIO-N<br />

1 WE_N B_09 P 22 CCIO-P<br />

1 BA2 B_08 N 21 CCIO-N<br />

1 CK_P B_07 P 20 DQSCC-P<br />

1 CK_N B_06 N 19 DQSCC-N<br />

1 BA1 B_05 P 18<br />

1 BA0 B_04 N 17<br />

1 CS_N B_03 P 16<br />

1 A14 B_02 N 15<br />

1 A13 B_01 P 14<br />

1 A12 B_00 N 13<br />

1 A11 A_11 P 12<br />

1 A10 A_10 N 11<br />

1 A9 A_09 P 10<br />

1 A8 A_08 N 9<br />

1 A7 A_07 P 8 DQSCC-P<br />

1 A6 A_06 N 7 DQSCC-N<br />

1 A5 A_05 P 6<br />

1 A4 A_04 N 5<br />

1 A3 A_03 P 4<br />

1 A2 A_02 N 3<br />

1 A1 A_01 P 2<br />

1 A0 A_00 N 1<br />

1 VRN N/A SE 0<br />

2 VRP N/A SE 49<br />

2 DQ31 D_11 P 48<br />

2 DQ30 D_10 N 47<br />

2 DQ29 D_09 P 46<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 167<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-99 : 2 つのバンクに含まれる 32 ビットの DDR3 <strong>インターフェイス</strong> (続き)<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

2 DQ28 D_08 N 45<br />

2 DQS3_P D_07 P 44 DQSCC-P<br />

2 DQS3_N D_06 N 43 DQSCC-N<br />

2 DQ27 D_05 P 42<br />

2 DQ26 D_04 N 41<br />

2 DQ25 D_03 P 40<br />

2 DQ24 D_02 N 39<br />

2 DM3 D_01 P 38<br />

2 D_00 N 37<br />

2 DQ23 C_11 P 36<br />

2 DQ22 C_10 N 35<br />

2 DQ21 C_09 P 34<br />

2 DQ20 C_08 N 33<br />

2 DQS2_P C_07 P 32 DQSCC-P<br />

2 DQS2_N C_06 N 31 DQSCC-N<br />

2 DQ19 C_05 P 30<br />

2 DQ18 C_04 N 29<br />

2 DQ17 C_03 P 28 CCIO-P<br />

2 DQ16 C_02 N 27 CCIO-N<br />

2 DM2 C_01 P 26 CCIO-P<br />

2 C_00 N 25 CCIO-N<br />

2 DQ15 B_11 P 24 CCIO-P<br />

2 DQ14 B_10 N 23 CCIO-N<br />

2 DQ13 B_09 P 22 CCIO-P<br />

2 DQ12 B_08 N 21 CCIO-N<br />

2 DQS1_P B_07 P 20 DQSCC-P<br />

2 DQS1_N B_06 N 19 DQSCC-N<br />

2 DQ11 B_05 P 18<br />

2 DQ10 B_04 N 17<br />

2 DQ9 B_03 P 16<br />

2 DQ8 B_02 N 15<br />

2 DM1 B_01 P 14<br />

168 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-99 : 2 つのバンクに含まれる 32 ビットの DDR3 <strong>インターフェイス</strong> (続き)<br />

2 B_00 N 13<br />

2 DQ7 A_11 P 12<br />

2 DQ6 A_10 N 11<br />

2 DQ5 A_09 P 10<br />

2 DQ4 A_08 N 9<br />

設計ガイ ド ラ イ ン<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

2 DQS0_P A_07 P 8 DQSCC-P<br />

2 DQS0_N A_06 N 7 DQSCC-N<br />

2 DQ3 A_05 P 6<br />

2 DQ2 A_04 N 5<br />

2 DQ1 A_03 P 4<br />

2 DQ0 A_02 N 3<br />

2 DM0 A_01 P 2<br />

2 RESET_N A_00 N 1<br />

2 VRN N/A SE 0<br />

表 1-100 は、 3 つのバン ク に含まれる 64 ビッ トの DDR3 イ ン ターフ ェ イ スの例です。 この例は、<br />

2Gb の x16 コンポーネントを 4 個使用し ています。<br />

表 1-100 : 3 つのバンクに含まれる 64 ビットの DDR3 <strong>インターフェイス</strong><br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

1 VRP N/A SE 49<br />

1 DQ63 D_11 P 48<br />

1 DQ62 D_10 N 47<br />

1 DQ61 D_09 P 46<br />

1 DQ60 D_08 N 45<br />

1 DQS7_P D_07 P 44 DQSCC-P<br />

1 DQS7_N D_06 N 43 DQSCC-N<br />

1 DQ59 D_05 P 42<br />

1 DQ58 D_04 N 41<br />

1 DQ57 D_03 P 40<br />

1 DQ56 D_02 N 39<br />

1 DM7 D_01 P 38<br />

1 D_00 N 37<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 169<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-100 : 3 つのバンクに含まれる 64 ビットの DDR3 <strong>インターフェイス</strong> (続き)<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

1 DQ55 C_11 P 36<br />

1 DQ54 C_10 N 35<br />

1 DQ53 C_09 P 34<br />

1 DQ52 C_08 N 33<br />

1 DQS6_P C_07 P 32 DQSCC-P<br />

1 DQS6_N C_06 N 31 DQSCC-N<br />

1 DQ51 C_05 P 30<br />

1 DQ50 C_04 N 29<br />

1 DQ49 C_03 P 28 CCIO-P<br />

1 DQ48 C_02 N 27 CCIO-N<br />

1 DM6 C_01 P 26 CCIO-P<br />

1 C_00 N 25 CCIO-N<br />

1 DQ47 B_11 P 24 CCIO-P<br />

1 DQ46 B_10 N 23 CCIO-N<br />

1 DQ45 B_09 P 22 CCIO-P<br />

1 DQ44 B_08 N 21 CCIO-N<br />

1 DQS5_P B_07 P 20 DQSCC-P<br />

1 DQS5_N B_06 N 19 DQSCC-N<br />

1 DQ43 B_05 P 18<br />

1 DQ42 B_04 N 17<br />

1 DQ41 B_03 P 16<br />

1 DQ40 B_02 N 15<br />

1 DM5 B_01 P 14<br />

1 B_00 N 13<br />

1 DQ39 A_11 P 12<br />

1 DQ38 A_10 N 11<br />

1 DQ37 A_09 P 10<br />

1 DQ36 A_08 N 9<br />

1 DQS4_P A_07 P 8 DQSCC-P<br />

1 DQS4_N A_06 N 7 DQSCC-N<br />

1 DQ35 A_05 P 6<br />

1 DQ34 A_04 N 5<br />

170 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-100 : 3 つのバンクに含まれる 64 ビットの DDR3 <strong>インターフェイス</strong> (続き)<br />

1 DQ33 A_03 P 4<br />

1 DQ32 A_02 N 3<br />

1 DM4 A_01 P 2<br />

1 A_00 N 1<br />

1 VRN N/A SE 0<br />

2 VRP N/A SE 49<br />

2 D_11 P 48<br />

2 D_10 N 47<br />

2 D_09 P 46<br />

2 D_08 N 45<br />

設計ガイ ド ラ イ ン<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

2 D_07 P 44 DQSCC-P<br />

2 D_06 N 43 DQSCC-N<br />

2 D_05 P 42<br />

2 D_04 N 41<br />

2 D_03 P 40<br />

2 D_02 N 39<br />

2 D_01 P 38<br />

2 D_00 N 37<br />

2 C_11 P 36<br />

2 C_10 N 35<br />

2 C_09 P 34<br />

2 C_08 N 33<br />

2 C_07 P 32 DQSCC-P<br />

2 C_06 N 31 DQSCC-N<br />

2 C_05 P 30<br />

2 C_04 N 29<br />

2 C_03 P 28 CCIO-P<br />

2 C_02 N 27 CCIO-N<br />

2 C_01 P 26 CCIO-P<br />

2 ODT C_00 N 25 CCIO-N<br />

2 RAS_N B_11 P 24 CCIO-P<br />

2 CAS_N B_10 N 23 CCIO-N<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 171<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-100 : 3 つのバンクに含まれる 64 ビットの DDR3 <strong>インターフェイス</strong> (続き)<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

2 WE_N B_09 P 22 CCIO-P<br />

2 BA2 B_08 N 21 CCIO-N<br />

2 CK_P B_07 P 20 DQSCC-P<br />

2 CK_N B_06 N 19 DQSCC-N<br />

2 BA1 B_05 P 18<br />

2 BA0 B_04 N 17<br />

2 CS_N B_03 P 16<br />

2 CKE B_02 N 15<br />

2 A13 B_01 P 14<br />

2 A12 B_00 N 13<br />

2 A11 A_11 P 12<br />

2 A10 A_10 N 11<br />

2 A9 A_09 P 10<br />

2 A8 A_08 N 9<br />

2 A7 A_07 P 8 DQSCC-P<br />

2 A6 A_06 N 7 DQSCC-N<br />

2 A5 A_05 P 6<br />

2 A4 A_04 N 5<br />

2 A3 A_03 P 4<br />

2 A2 A_02 N 3<br />

2 A1 A_01 P 2<br />

2 A0 A_00 N 1<br />

2 VRN N/A SE 0<br />

3 VRP N/A SE 49<br />

3 DQ31 D_11 P 48<br />

3 DQ30 D_10 N 47<br />

3 DQ29 D_09 P 46<br />

3 DQ28 D_08 N 45<br />

3 DQS3_P D_07 P 44 DQSCC-P<br />

3 DQS3_N D_06 N 43 DQSCC-N<br />

3 DQ27 D_05 P 42<br />

3 DQ26 D_04 N 41<br />

172 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 1-100 : 3 つのバンクに含まれる 64 ビットの DDR3 <strong>インターフェイス</strong> (続き)<br />

3 DQ25 D_03 P 40<br />

3 DQ24 D_02 N 39<br />

3 DM3 D_01 P 38<br />

3 D_00 N 37<br />

3 DQ23 C_11 P 36<br />

3 DQ22 C_10 N 35<br />

3 DQ21 C_09 P 34<br />

3 DQ20 C_08 N 33<br />

設計ガイ ド ラ イ ン<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

3 DQS2_P C_07 P 32 DQSCC-P<br />

3 DQS2_N C_06 N 31 DQSCC-N<br />

3 DQ19 C_05 P 30<br />

3 DQ18 C_04 N 29<br />

3 DQ17 C_03 P 28 CCIO-P<br />

3 DQ16 C_02 N 27 CCIO-N<br />

3 DM2 C_01 P 26 CCIO-P<br />

3 C_00 N 25 CCIO-N<br />

3 DQ15 B_11 P 24 CCIO-P<br />

3 DQ14 B_10 N 23 CCIO-N<br />

3 DQ13 B_09 P 22 CCIO-P<br />

3 DQ12 B_08 N 21 CCIO-N<br />

3 DQS1_P B_07 P 20 DQSCC-P<br />

3 DQS1_N B_06 N 19 DQSCC-N<br />

3 DQ11 B_05 P 18<br />

3 DQ10 B_04 N 17<br />

3 DQ9 B_03 P 16<br />

3 DQ8 B_02 N 15<br />

3 DM1 B_01 P 14<br />

3 B_00 N 13<br />

3 DQ7 A_11 P 12<br />

3 DQ6 A_10 N 11<br />

3 DQ5 A_09 P 10<br />

3 DQ4 A_08 N 9<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 173<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-100 : 3 つのバンクに含まれる 64 ビットの DDR3 <strong>インターフェイス</strong> (続き)<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

3 DQS0_P A_07 P 8 DQSCC-P<br />

3 DQS0_N A_06 N 7 DQSCC-N<br />

3 DQ3 A_05 P 6<br />

3 DQ2 A_04 N 5<br />

3 DQ1 A_03 P 4<br />

3 DQ0 A_02 N 3<br />

3 DM0 A_01 P 2<br />

3 RESET_N A_00 N 1<br />

3 VRN N/A SE 0<br />

表 1-101 は、 3 つのバン ク に含まれる 72 ビッ トの DDR3 イ ン ターフ ェ イ スの例です。 この例は、<br />

4Gb の x8 コンポーネントを 9 個使用する 4GB UDIMM を表しています。 SPD (Serial Presence<br />

Detect) ピンは使用していません。164 ページの表 1-98、 166 ページの表 1-99、 および 169 ページ<br />

の表 1-100 のコンポーネン ト デザ イ ン例 と 一貫性を持たせる ために、 CB[7:0] を DQ[71:64] とし<br />

て、 S0# を CS_N として表しています。<br />

表 1-101 : 3 つのバンクに含まれる 72 ビットの DDR3 UDIMM <strong>インターフェイス</strong><br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

1 VRP N/A SE 49<br />

1 DQ63 D_11 P 48<br />

1 DQ62 D_10 N 47<br />

1 DQ61 D_09 P 46<br />

1 DQ60 D_08 N 45<br />

1 DQS7_P D_07 P 44 DQSCC-P<br />

1 DQS7_N D_06 N 43 DQSCC-N<br />

1 DQ59 D_05 P 42<br />

1 DQ58 D_04 N 41<br />

1 DQ57 D_03 P 40<br />

1 DQ56 D_02 N 39<br />

1 DM7 D_01 P 38<br />

1 D_00 N 37<br />

1 DQ55 C_11 P 36<br />

1 DQ54 C_10 N 35<br />

1 DQ53 C_09 P 34<br />

174 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


設計ガイ ド ラ イ ン<br />

表 1-101 : 3 つのバンクに含まれる 72 ビットの DDR3 UDIMM <strong>インターフェイス</strong> (続き)<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

1 DQ52 C_08 N 33<br />

1 DQS6_P C_07 P 32 DQSCC-P<br />

1 DQS6_N C_06 N 31 DQSCC-N<br />

1 DQ51 C_05 P 30<br />

1 DQ50 C_04 N 29<br />

1 DQ49 C_03 P 28 CCIO-P<br />

1 DQ48 C_02 N 27 CCIO-N<br />

1 DM6 C_01 P 26 CCIO-P<br />

1 C_00 N 25 CCIO-N<br />

1 DQ47 B_11 P 24 CCIO-P<br />

1 DQ46 B_10 N 23 CCIO-N<br />

1 DQ45 B_09 P 22 CCIO-P<br />

1 DQ44 B_08 N 21 CCIO-N<br />

1 DQS5_P B_07 P 20 DQSCC-P<br />

1 DQS5_N B_06 N 19 DQSCC-N<br />

1 DQ43 B_05 P 18<br />

1 DQ42 B_04 N 17<br />

1 DQ41 B_03 P 16<br />

1 DQ40 B_02 N 15<br />

1 DM5 B_01 P 14<br />

1 B_00 N 13<br />

1 DQ39 A_11 P 12<br />

1 DQ38 A_10 N 11<br />

1 DQ37 A_09 P 10<br />

1 DQ36 A_08 N 9<br />

1 DQS4_P A_07 P 8 DQSCC-P<br />

1 DQS4_N A_06 N 7 DQSCC-N<br />

1 DQ35 A_05 P 6<br />

1 DQ34 A_04 N 5<br />

1 DQ33 A_03 P 4<br />

1 DQ32 A_02 N 3<br />

1 DM4 A_01 P 2<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 175<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-101 : 3 つのバンクに含まれる 72 ビットの DDR3 UDIMM <strong>インターフェイス</strong> (続き)<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

1 A_00 N 1<br />

1 VRN N/A SE 0<br />

2 VRP N/A SE 49<br />

2 DQ71 D_11 P 48<br />

2 DQ70 D_10 N 47<br />

2 DQ69 D_09 P 46<br />

2 DQ68 D_08 N 45<br />

2 DQS8_P D_07 P 44 DQSCC-P<br />

2 DQS8_N D_06 N 43 DQSCC-N<br />

2 DQ67 D_05 P 42<br />

2 DQ66 D_04 N 41<br />

2 DQ65 D_03 P 40<br />

2 DQ64 D_02 N 39<br />

2 DM8 D_01 P 38<br />

2 D_00 N 37<br />

2 C_11 P 36<br />

2 C_10 N 35<br />

2 C_09 P 34<br />

2 C_08 N 33<br />

2 C_07 P 32 DQSCC-P<br />

2 C_06 N 31 DQSCC-N<br />

2 C_05 P 30<br />

2 C_04 N 29<br />

2 C_03 P 28 CCIO-P<br />

2 ODT0 C_02 N 27 CCIO-N<br />

2 CKE0 C_01 P 26 CCIO-P<br />

2 CS_N0 C_00 N 25 CCIO-N<br />

2 RAS_N B_11 P 24 CCIO-P<br />

2 CAS_N B_10 N 23 CCIO-N<br />

2 WE_N B_09 P 22 CCIO-P<br />

2 BA2 B_08 N 21 CCIO-N<br />

2 CK_P B_07 P 20 DQSCC-P<br />

176 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


設計ガイ ド ラ イ ン<br />

表 1-101 : 3 つのバンクに含まれる 72 ビットの DDR3 UDIMM <strong>インターフェイス</strong> (続き)<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

2 CK_N B_06 N 19 DQSCC-N<br />

2 BA1 B_05 P 18<br />

2 BA0 B_04 N 17<br />

2 A15 B_03 P 16<br />

2 A14 B_02 N 15<br />

2 A13 B_01 P 14<br />

2 A12 B_00 N 13<br />

2 A11 A_11 P 12<br />

2 A10 A_10 N 11<br />

2 A9 A_09 P 10<br />

2 A8 A_08 N 9<br />

2 A7 A_07 P 8 DQSCC-P<br />

2 A6 A_06 N 7 DQSCC-N<br />

2 A5 A_05 P 6<br />

2 A4 A_04 N 5<br />

2 A3 A_03 P 4<br />

2 A2 A_02 N 3<br />

2 A1 A_01 P 2<br />

2 A0 A_00 N 1<br />

2 VRN N/A SE 0<br />

3 VRP N/A SE 49<br />

3 DQ31 D_11 P 48<br />

3 DQ30 D_10 N 47<br />

3 DQ29 D_09 P 46<br />

3 DQ28 D_08 N 45<br />

3 DQS3_P D_07 P 44 DQSCC-P<br />

3 DQS3_N D_06 N 43 DQSCC-N<br />

3 DQ27 D_05 P 42<br />

3 DQ26 D_04 N 41<br />

3 DQ25 D_03 P 40<br />

3 DQ24 D_02 N 39<br />

3 DM3 D_01 P 38<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 177<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 1-101 : 3 つのバンクに含まれる 72 ビットの DDR3 UDIMM <strong>インターフェイス</strong> (続き)<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

3 D_00 N 37<br />

3 DQ23 C_11 P 36<br />

3 DQ22 C_10 N 35<br />

3 DQ21 C_09 P 34<br />

3 DQ20 C_08 N 33<br />

3 DQS2_P C_07 P 32 DQSCC-P<br />

3 DQS2_N C_06 N 31 DQSCC-N<br />

3 DQ19 C_05 P 30<br />

3 DQ18 C_04 N 29<br />

3 DQ17 C_03 P 28 CCIO-P<br />

3 DQ16 C_02 N 27 CCIO-N<br />

3 DM2 C_01 P 26 CCIO-P<br />

3 C_00 N 25 CCIO-N<br />

3 DQ15 B_11 P 24 CCIO-P<br />

3 DQ14 B_10 N 23 CCIO-N<br />

3 DQ13 B_09 P 22 CCIO-P<br />

3 DQ12 B_08 N 21 CCIO-N<br />

3 DQS1_P B_07 P 20 DQSCC-P<br />

3 DQS1_N B_06 N 19 DQSCC-N<br />

3 DQ11 B_05 P 18<br />

3 DQ10 B_04 N 17<br />

3 DQ9 B_03 P 16<br />

3 DQ8 B_02 N 15<br />

3 DM1 B_01 P 14<br />

3 B_00 N 13<br />

3 DQ7 A_11 P 12<br />

3 DQ6 A_10 N 11<br />

3 DQ5 A_09 P 10<br />

3 DQ4 A_08 N 9<br />

3 DQS0_P A_07 P 8 DQSCC-P<br />

3 DQS0_N A_06 N 7 DQSCC-N<br />

3 DQ3 A_05 P 6<br />

178 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


DDR3 デザイ ンのデバッ グ<br />

DDR3 デザイ ンのデバッ グ<br />

表 1-101 : 3 つのバンクに含まれる 72 ビットの DDR3 UDIMM <strong>インターフェイス</strong> (続き)<br />

バン ク 信号名 バイ ト グループ I/O タイプ I/O 番号 特記<br />

3 DQ2 A_04 N 5<br />

3 DQ1 A_03 P 4<br />

3 DQ0 A_02 N 3<br />

3 DM0 A_01 P 2<br />

3 RESET_N A_00 N 1<br />

3 VRN N/A SE 0<br />

デバ ッ グ情報については、 ザ イ リ ン ク スのウ ェ ブサ イ ト (www.xilinx.com/support/answerss) で 「7<br />

<strong>シリーズ</strong> MIG DDR3/DDR2 - ハー ド ウ ェ ア デバ ッ グ ガイド」という タイ トル名のザイ リンクス ア<br />

ンサーを検索し て参照し て く だ さ い。 ま た、MIG ツールを使用するすべての設計プ ロ セ スに関する<br />

サポー ト は、 ザイ リ ンクス MIG ソ リューション センターを参照して く ださい。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 179<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 1 章 : DDR3 および DDR2 SDRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

180 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong><br />

<strong>ソリューション</strong><br />

はじめに<br />

第 2 章<br />

QDR II+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>は、ザイリンクス 7 シ リーズ <strong>FPGA</strong> を<br />

使用し たユーザー デザイ ン と QDR II+ SRAM デバイ スの イ ン ターフ ェ イ ス と な る物理層です。<br />

QDR II+ SRAM は最新世代の QDR SRAM デバイスで、 クロックの立ち上がりおよび立ち下がり<br />

の両エ ッ ジで独立し た読み出しバス と 書き込みバス を使用する高速のデータ転送が可能です。 こ の<br />

<strong>メモリ</strong> デバイ スは、 次の よ う な高性能シ ス テムで一時的なデータ ス ト レージ と し て使用 さ れます。<br />

• ネッ ト ワーク システムのルックアップ テーブル<br />

• ネッ ト ワーク スイッチのパケット バッファー<br />

• 高速演算のキ ャ ッ シ ュ <strong>メモリ</strong><br />

• 高性能テ ス ターのデータ バッファー<br />

QDR II+ SRAM <strong>メモリ</strong> ソ リューション コアは、シンプルなユーザー コマンドを受信して QDR II+<br />

プ ロ ト コルに変換し、 変換後の コ マン ド を メ モ リ に送信する PHY です。 PHY が 1/2 の周波数で動<br />

作するデザ イ ンの場合、 1 サ イ ク ルで読み出しおよび書き込み要求を 1 回ずつ発行で き る ため、 メ<br />

モリ コント ローラーとそれに伴うオーバーヘッドが不要で、 コア内部のレイテンシが削減されま<br />

す。 7 シ リーズ ファミ リ特有の機能を利用することにより、PHY は最大限の性能を実現する と 共<br />

に、 <strong>FPGA</strong> 内での読み出しデータ キ ャ プチ ャ を簡略化し ます。 こ の ソ リ ューシ ョ ンは、 合成可能な<br />

リファレンス デザ イ ン を含め完全な形で提供 さ れます。<br />

この章では、7 <strong>シリーズ</strong> <strong>FPGA</strong> 用の LogiCORE IP QDR II+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> コ<br />

アのアーキテ ク チャ、 およびその使用、 カ ス タ マ イ ズ、 シ ミ ュ レーシ ョ ンの方法について説明し ま<br />

す。 こ の ソ フ ト <strong>メモリ</strong> コント ローラー コ アは完全な検証が行われてお り 、 性能が保証 さ れていま<br />

すが、 最良のデザイ ンを実現するには PCB デザイ ンの終端および ト レース配線に関する規則に<br />

従った設計を行う必要があ り ます。 PCB デザイ ン ガイドラインの詳細は、 231 ページの 「設計ガ<br />

イドライン」 を参照して く ださい。<br />

注記 : 現時点では、 QDRII+ SRAM デザイ ンは メ モ リ マ ッ プ方式の AXI4 <strong>インターフェイス</strong>をサ<br />

ポー ト していません。<br />

7 シ リーズ <strong>FPGA</strong> の QDR II+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> コ アの詳細および最新情報は、 ザ<br />

イリンクス 7 <strong>シリーズ</strong> <strong>FPGA</strong> データ シー ト [参照 15] を参照して く ださい。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 181<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

CORE Generator の使用方法<br />

システム要件<br />

ここでは、CORE Generator ツールを使用して 7 シ リーズ <strong>FPGA</strong> で QDR II+ SRAM <strong>メモリ</strong> イ<br />

ン ターフ ェ イ ス を生成し、 ザ イ リ ン ク スのツールでデザ イ ン を イ ンプ リ メ ン ト し て、 合成可能なテ<br />

ストベンチを用いてサンプル デザ イ ンのシ ミ ュ レーシ ョ ン を実行する方法を順を追って説明し ま<br />

す。<br />

• ISE® Design Suite v14.3<br />

または<br />

• Vivado Design Suite v2012.3<br />

コアのカスタマイズと生成<br />

GUI を使用し た生成方法<br />

MIG (Memory Interface Generator) はウ ィ ザード の指示に従 う だけで簡単にコ アを生成でき る ツー<br />

ルで、 CORE Generator ツールか ら起動で き ます。 こ こ では、 MIG ツールの使用方法を順に説明し<br />

ます。 Vivado ツールを使用してコアを生成する方法は、 第 5 章 「Vivado Design Suite への移行」<br />

を参照して く ださい。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> で QDR II+ SRAM デザ イ ン を生成する には、 次の手順に従います。<br />

1. CORE Generator ツールの [Search IP Catalog] に 「mig」 と入力し、MIG ツールを起動し ます<br />

(図 2-1)。<br />

182 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 2-1<br />

CORE Generator の使用方法<br />

2. [File] → [New Project] をクリ ックして [New Project] ダイアログ ボックスを開きます。<br />

「7Series_MIG_Example_Design」 と い う 名前で新規プ ロ ジ ェ ク ト を作成し ます (図 2-2)。<br />

X-Ref Target - Figure 2-2<br />

図 2-1 : ザイ リンクス CORE Generator<br />

<strong>UG586</strong>_c1_02_091410<br />

図 2-2 : CORE Generator の新規プ ロジ ェ ク ト 作成画面<br />

3. プ ロ ジ ェ ク ト 名 と 場所を入力し ます。 [Save] をク リ ックします (図 2-3)。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 183<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 2-3<br />

図 2-3 : [New Project] ダイアログ ボックス<br />

<strong>UG586</strong>_c1_03_111010<br />

184 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

4. [Project Options] ダイアログ ボックスで [Part] オプシ ョ ン を選択し ます (図 2-4)。<br />

X-Ref Target - Figure 2-4<br />

• Kintex-7 または Virtex®-7 のいずれかを ターゲッ ト デバイ スに指定し ます。<br />

図 2-4 : CORE Generator のデバイス選択ページ<br />

<strong>UG586</strong>_c1_04_110610<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 185<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

5. [Design Entry] に [Verilog] を選択し、 [Flow Settings] の [Vendor] には [ISE] を選択します。<br />

[OK] をクリ ックして [Project Options] の設定を完了し ます (図 2-5)。<br />

X-Ref Target - Figure 2-5<br />

図 2-5 : CORE Generator のデザイ ン フロー設定ページ<br />

<strong>UG586</strong>_c1_05_110610<br />

186 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 2-6<br />

6. [MIG 7 Series 1.6] を選択します (図 2-6)。<br />

図 2-6 : MIG 7 Series デザイ ン プロジェク ト ページ<br />

CORE Generator の使用方法<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 187<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

7. [Core Generator Options] に、 MIG ツールを起動する前に CORE Generator ツールで選択した<br />

オプシ ョ ンの詳細が表示さ れます (図 2-7)。<br />

X-Ref Target - Figure 2-7<br />

8. [Next] をク リ ックして [MIG Output Options] ページへ進みます。<br />

<strong>UG586</strong>_c1_08_120311<br />

図 2-7 : 7 <strong>シリーズ</strong> <strong>FPGA</strong> の MIG (Memory Interface Generator) の最初のページ<br />

188 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

MIG の出力オプシ ョ ン<br />

1. [Create Design] を選択して新規メモ リ コント ローラー デザイ ンを作成し ます。 [Component<br />

Name] に コ ンポーネン ト 名を入力し ます (図 2-8)。<br />

2. [Number of Controllers] で作成する コ ン ト ローラーの数を指定し ます。こ れ以降のページは、指<br />

定し た コ ン ト ローラーの数だけ設定を繰 り 返す必要があ り ます。<br />

X-Ref Target - Figure 2-8<br />

図 2-8 : MIG の出力オプシ ョ ン<br />

フォルダー名 が付いた MIG 出力が生成 さ れます。<br />

注記 : で使用 さ れる文字は英数字のみです。 特殊文字は使用で き ません。<br />

先頭の 1 文字は英字であ る必要があ り ます (末尾の 1 文字は英字で も数字で もかまいません)。<br />

XPS か ら起動し た場合は、 XPS の IP インスタンス名が [Component Name] に入 り ます。<br />

3. [Next] をク リ ックして [Pin Compatible <strong>FPGA</strong>s] ページへ進みます。<br />

<strong>UG586</strong>_c1_09_120311<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 189<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 2-9<br />

ピン互換 <strong>FPGA</strong><br />

[Pin Compatible <strong>FPGA</strong>s] ページには、 選択し た <strong>FPGA</strong> ファ ミ リでパッケージが同じデバイスが表<br />

示されます。 MIG ツールで生成し た ピ ン配置を、 こ こ に表示 さ れた <strong>FPGA</strong> と互換性を持たせるよ<br />

う にする には、 こ のオプシ ョ ン を使用し てデバイ ス を選択し ます (図 2-9)。<br />

図 2-9 : ピ ン互換のある 7 <strong>シリーズ</strong> <strong>FPGA</strong><br />

<strong>UG586</strong>_c1_10_110610<br />

1. 表示さ れた ピ ン互換のあ る <strong>FPGA</strong> の中からデバイ ス を選択し ます。MIG ツールは、こ こで選択<br />

した <strong>FPGA</strong> とターゲット <strong>FPGA</strong> に共通する ピ ンのみを使用し ます。[Target <strong>FPGA</strong>] には、選択<br />

したターゲット <strong>FPGA</strong> デバイ ス名が表示さ れます。<br />

2. [Next] をク リ ックして [Memory Selection] ページへ進みます。<br />

190 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


7 リーズ <strong>FPGA</strong> QDRII+ SRAM <strong>メモリ</strong> デザイ ンの作成<br />

メ モ リ の選択<br />

CORE Generator の使用方法<br />

こ のページには、 選択し た <strong>FPGA</strong> ファミ リでサポート されるすべての<strong>メモリ</strong> タイプが表示されま<br />

す。<br />

1. [Select the Controller Type] に [QDRII+ SRAM] を選択し ます。<br />

2. [Next] をク リ ックして [Controller Options] ページへ進みます。<br />

X-Ref Target - Figure 2-10<br />

図 2-10 : <strong>メモリ</strong> タ イ プおよび コ ン ト ローラーの選択<br />

QDRII+ SRAM デザイ ンは メ モ リ マ ッ プ方式の AXI4 <strong>インターフェイス</strong>をサポート していません。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 191<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 2-11<br />

[Controller Options] ページ<br />

こ のページには、 選択可能な コ ン ト ローラー オプシ ョ ンが表示 さ れます。<br />

図 2-11 : [Controller Options] ページ<br />

• [Frequency] – すべての コ ン ト ローラーの動作周波数が表示 さ れます。 設定可能な周波数の範<br />

囲は、 選択し た <strong>FPGA</strong> デバイ スやそのス ピー ド グ レー ド な どの要因に依存し ます。<br />

• [Vccaux_io] – Vccaux_io は周期/周波数の設定に基づいて設定さ れます。High Performance カ<br />

ラ ムの最高周波数設定には 2.0V が必要です。 2.0V が必要な場合は、 MIG ツールが自動的に<br />

選択し ます。 それよ り も周波数が低い場合は 1.8V と 2.0V のど ち ら も 使用で き ます。 バン ク<br />

グループは同じ Vccaux_io 電源を共有します。詳細は、『7 <strong>シリーズ</strong> <strong>FPGA</strong> SelectIO リソース<br />

ユーザー ガイド』 [参照 1] を参照して く ださい。<br />

• [Memory Part] – デザ イ ンで使用する メ モ リ デバイ ス を選択し ます。リ ス ト の中か ら選択する<br />

か、 リ ス ト にない場合は [Create Custom Part] を ク リ ッ ク し て新規デバイ ス を作成し ます。 こ<br />

のデザ イ ンでは、 読み出し レ イ テンシが 2.0 で 2.5 クロック サイクルの QDRII+ SRAM デバ<br />

イ スがサポー ト さ れています。 使用するデバイ スが リ ス ト にない場合は、 同等のデバイ ス を生<br />

成ま たは作成し て目的の メ モ リ デバイスをサポートできるように出力を変更します。<br />

• [Data Width] – 選択し た メ モ リ デバイ スに基づいてデータ幅の値を選択し ます。 デバイ スの<br />

データ幅の倍数を指定で き ます。<br />

• [Latency Mode] – コ アのレ イ テンシを固定する場合は、[Fixed Latency Mode] を選択して任<br />

意のレ イ テンシを選択し ます。 こ のオプシ ョ ンは、 ユーザー デザ イ ンで読み出し応答が返 さ れ<br />

るまでのクロック サ イ ク ル数を予測可能にする場合に使用し ます。 こ のモー ド を使用する に<br />

は、 [Fixed Latency Mode] を ON にします。 次に、 読み出し応答がユーザーに返されるまで<br />

のサイ クル数を ド ロ ップダウン リストから選択します。指定できる値は 21 ~ 30 サイクルの<br />

範囲です。 実際のハー ド ウ ェ ア条件に よ ってシ ス テム全体でのレ イ テンシが こ れよ り も大き く<br />

192 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

な る場合は、最上位の RTL フ ァ イルで こ の値を適宜修正し て く だ さ い。[Fixed Latency Mode]<br />

を OFF にする と、 コ アはシステムの最小サイ クル数を使用し ます。<br />

• [Memory Details] – [Controller Options] ページの下部に、 選択し た メ モ リ の コ ン フ ィ ギ ュ<br />

レーシ ョ ンに関する詳細が表示さ れます (図 2-12)。<br />

X-Ref Target - Figure 2-12<br />

カスタム デバイスの作成<br />

1. [Controller Options] ページで周波数を正し く 選択し ます。 ド ロ ッ プダ ウ ン リ ス ト を使用する<br />

か、 キーボー ド か ら有効な値を入力し ます。 入力値は、 サポー ト さ れる最大/最小周波数範囲内<br />

に制限されます。<br />

2. [Memory Part] リストから目的の<strong>メモリ</strong> デバイ ス を選択し ます。希望するデバイ スが リ ス ト に<br />

ない場合は、 新規 メ モ リ デバイ ス を作成で き ます。 カ ス タ ム デバイ ス を作成する には、<br />

[Memory Part] のプルダウン リストの下にある [Create Custom Part] をクリ ックします。<br />

図 2-13 の よ う な画面が表示さ れます。<br />

X-Ref Target - Figure 2-13<br />

図 2-12 : 選択し た メ モ リ のコ ン フ ィ ギュ レーシ ョ ンの詳細<br />

図 2-13 : [Create Custom Part] ページ<br />

[Create Custom Part] ページには、 [Select Base Part] プルダウ ン リストで選択した<strong>メモリ</strong> コン<br />

ポーネン ト のすべての仕様が表示さ れます。<br />

1. [Enter New Memory Part Name] に新しい メ モ リ デバイスの名前を入力します。<br />

2. 基準 と な る メ モ リ デバイ ス を [Select Base Part] プルダウ ン リストから選択します。<br />

3. [Address Width] で行ア ド レ スの値を選択し ます。<br />

4. すべてのフ ィ ール ド の編集が終わった ら、 [Save] をク リ ッ ク します。指定した名前で新しいデ<br />

バイ スが保存さ れます。 こ こ で作成し たデバイ スは、[Controller Options] ページの [Memory<br />

Part] リ ス ト に追加 さ れます。データベースに も保存さ れる ため、再利用し てデザ イ ン を作成す<br />

ることができます。<br />

5. [Next] をク リ ックして [<strong>FPGA</strong> Options] ページへ進みます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 193<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>メモリ</strong> オプシ ョ ン<br />

図 2-14 に、 [Memory Options] ページを示し ます。<br />

X-Ref Target - Figure 2-14<br />

図 2-14 : <strong>メモリ</strong> オプシ ョ ンの設定<br />

• [Input Clock Period] – リ ス ト か ら目的の入力 ク ロ ッ ク 周期を選択し ます。 こ れ ら の値は、 選<br />

択した<strong>メモリ</strong> ク ロ ッ ク 周期の値 と PLL パ ラ メ ーターの制限値に よ って決ま り ます。 PLL パラ<br />

メ ーターの制限値の詳細は、 214 ページの 「 ク ロ ッ キ ン グ アーキテクチャ」 を参照して く ださ<br />

い。<br />

194 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


<strong>FPGA</strong> オプシ ョ ン<br />

図 2-15 に、 [<strong>FPGA</strong> Options] ページを示し ます。<br />

X-Ref Target - Figure 2-15<br />

図 2-15 : <strong>FPGA</strong> オプシ ョ ンの設定<br />

CORE Generator の使用方法<br />

• [System Clock] – sys_clk 信号ペアの ク ロ ッ ク タイプ ([Single-Ended] (シングルエンド)、<br />

[Differential] (差動)、または [No Buffer] (バッファーなし)) を選択します。[No Buffer] を選択<br />

する と、 IBUF プリ ミティブが RTL コードでインスタンシエート されず、 システム クロック<br />

にピンが割り当てられません。<br />

• [Reference Clock] – clk_ref 信号ペアの ク ロ ッ ク タイプ ([Single-Ended] (シングルエンド)、<br />

[Differential] (差動)、 [No Buffer] (バッファーなし)、 または [Use System Clock] (システム ク<br />

ロックを使用)) を選択します。 [Use System Clock] オプシ ョ ンは、 入力周波数が 200MHz の<br />

場合 ([Input Clock Period] が 5000ps (200MHz)) に表示されます。 [No Buffer] を選択する と 、<br />

IBUF プリ ミティブが RTL コードでインスタンシエート されず、基準クロッ クにピンが割り当<br />

てられません。<br />

• [Debug Signals Control] - このオプションを有効にすると、 キャ リブレーション ステータス<br />

とユーザー ポー ト 信号を design_top モジュールの ChipScope Analyzer モジュールにポー<br />

ト マップできます。 これにより、ユーザー <strong>インターフェイス</strong> ポー ト の ト ラ フ ィ ッ ク を<br />

ChipScope Analyzer で簡単に確認でき ます。 生成し たデザイ ンをデザイ ンの par フォルダー<br />

にある ise_flow.bat を使用してバッチ モー ド で実行する と 、 CORE Generator ツールが<br />

呼び出 さ れて ChipScope Analyzer モジュール (NGC ファイル) を生成します。 このオプシ ョ<br />

ンを [OFF] にする とデバッ グ信号は design_top モジュールには接続されません。 この場合、<br />

ChipScope Analyzer モジュールは design_top モジュールにインスタンシエー ト されず、<br />

CORE Generator ツールは ChipScope Analyzer モジュールを生成しません。 論理シミ ュレー<br />

ションでは、デバッグ ポー ト は常に無効です。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 195<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

• [Sample Data Depth] – デバ ッ グ ロ ジ ッ ク で使用する ChipScope ILA コアのサンプル データ<br />

の深さ を選択し ます。 こ のオプシ ョ ンは [Debug Signals for Memory Controller] オプシ ョ ンを<br />

ON にする と 選択可能 と な り ます。<br />

• [Internal Vref Selection] – データ グループ バイ トで内部 Vref を使用する と 、 VREF ピンを通<br />

常の I/O ピンとして使用できます。[Internal Vref] オプシ ョ ンは、データ レート が 800Mb/s 以<br />

下の場合のみ使用し て く だ さ い。<br />

[Next] をク リ ックして [Extended <strong>FPGA</strong> Options] ページへ進みます。<br />

拡張 <strong>FPGA</strong> オプシ ョ ン<br />

図 2-16 に、 [Extended <strong>FPGA</strong> Options] ページを示し ます。<br />

X-Ref Target - Figure 2-16<br />

図 2-16 : DCI の設定<br />

• [Digitally Controlled Impedance (DCI)] – こ のオプシ ョ ン を選択する と 、 QDRII+ SRAM の<br />

読み出しパスか ら の信号が内部終端処理 さ れます。DCI は HP (High Performance) バンクで利<br />

用でき ます。<br />

• [Internal Termination for High Range Banks] – 内部終端のオプシ ョ ンは、 40、 50、 60Ω ま<br />

たは無効に設定で き ます。 こ の終端は、 QDRII+ SRAM か ら の読み出しデータパス用です。 こ<br />

のオプシ ョ ンは HR (High Range) バン ク でのみ選択で き ます。<br />

196 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


I/O プランニング オプシ ョ ン<br />

図 2-17 に、 [I/O Planning Options] ページを示し ます。<br />

X-Ref Target - Figure 2-17<br />

図 2-17 : I/O プラン オプシ ョ ンの選択<br />

CORE Generator の使用方法<br />

• [Pin/Bank Selection Mode] – こ こ では、 既存のピン配置を指定し てそのピン配置に合わせた<br />

RTL を生成する か、 新規デザ イ ン用のバン ク を選択で き ます。 図 2-18 に、 既存のピン配置を<br />

使用し た場合のオプシ ョ ン を示し ます。 各信号に対し て適切な ピ ン を割 り 当て る必要があ り ま<br />

す。 バン ク を選択する と 、 リ ス ト に表示 さ れる ピ ンが絞 り 込まれます。 ピ ン を選択する前に必<br />

ずし も バン ク を選択する必要はあ り ません。 [Validate] をクリ ックすると、MIG のピ ン配置規<br />

則に基づいてチェ ッ ク が行われます。 [Validate] をク リ ックして MIG DRC 検証が完了する ま<br />

で次のページへ進むこ と はで き ません。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 197<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 2-18<br />

バン クの選択<br />

こ のページでは、 メ モ リ イ ン ターフ ェ イ ス用のバイ ト を選択し ます。 次の よ う な異な る メ モ リ 信号<br />

に対し てバイ ト を選択で き ます。<br />

• ア ド レ ス信号 と 制御信号<br />

• データ読み出し信号<br />

• データ書き込み信号<br />

図 2-18 : ピン/バン クの選択<br />

設定を カ ス タ マ イ ズする には [Deselect Banks] を ク リ ッ ク し、 適切なバン ク 信号および メ モ リ 信号<br />

を選択し ますデフ ォル ト の設定を使用する場合は [Next] を ク リ ッ ク し て次のページへ進みます。バ<br />

ン ク の選択を解除する には、 [Deselect Banks] をク リ ックします。デフォルト設定に戻すには、<br />

[Restore Defaults] をクリ ックします。 デバイスの HP バンクの Vccaux_io グループは ... で表示さ<br />

れています。 こ れ ら のグループで Vccaux_io はすべてのバン ク に共通です。 メ モ リ インターフェ<br />

イ スでは、 使用するすべてのバン ク で Vccaux_io が共通の必要があ り ます。 VCCAUX_IO の制約<br />

は、 要求されたデータ レー ト に合わせて MIG が自動的に設定し ます。<br />

SSI テクノロジで実装されたデバイスでは、 SLR (Super Logic Region) は各バン ク のヘッ ダーの番<br />

号を付けて表されます (SLR 1 など)。 イ ン ターフ ェ イ スは複数の SLR をまたぐことはできません。<br />

SLR を持たないデバイ ス もあ り ます。<br />

198 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 2-19<br />

図 2-19 : バン クの選択<br />

CORE Generator の使用方法<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 199<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 2-20<br />

システム ピ ンの選択<br />

こ のページでは、 シ ス テム信号のピ ン を選択し ます。 MIG ツールでは、 必要に応じ て外部ピ ン と 内<br />

部接続のどち ら も選択で き ます。<br />

図 2-20 : システム ピンの選択<br />

• [sys_clk] – <strong>メモリ</strong> <strong>インターフェイス</strong>のシステム ク ロ ッ ク 入力で、 通常は低ジ ッ ターの外部 ク<br />

ロック ソ ースに接続し ます。 [<strong>FPGA</strong> Options] ページ (図 2-15) の [System Clock] の選択に基<br />

づいてシングルエン ド 入力ま たは差動ペアを選択し ます。 sys_clk 入力は メ モ リ インターフェ<br />

イスと同じカラムにある必要があります。このピンを<strong>メモリ</strong> <strong>インターフェイス</strong>と同じバンクに<br />

接続し た場合、 MIG ツールは DIFF_HSTL_I や HSTL_I など<strong>メモリ</strong> <strong>インターフェイス</strong>と互換<br />

性のあ る I/O 規格を選択し ます。 sys_clk が<strong>メモリ</strong> <strong>インターフェイス</strong> バン ク で未接続の場合、<br />

MIG ツールは LVCMOS18 や LVDS な どの適切な規格を選択し ます。UCF は生成後に必要に<br />

応じて修正できます。<br />

• [clk_ref] – IDELAY 制御の基準周波数入力です。 200MHz の入力です。 clk_ref 入力は内部で<br />

生成する こ と も、外部 ソースに接続する こ と も で き ます。[<strong>FPGA</strong> Options] ページ (図 2-15) で<br />

選択し た [System Clock] に基づいてシングル入力ま たは差動ペアのいずれかを選択で き ます<br />

I/O 規格は上記の sys_clk と 同様の方法で選択さ れます。<br />

200 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 2-21<br />

サマ リ<br />

CORE Generator の使用方法<br />

• [sys_rst] – 内部で生成ま たは外部ピ ンに よ って駆動さ れる シ ス テム リ セ ッ ト 入力です。 HP バ<br />

ンクには LVCMOS18、 HR バンクには LVCMOS25 など、 入力に対する適切な I/O 規格を<br />

MIG ツールが選択し ます。<br />

• [init_calib_complete] – メ モ リ 初期化 と キ ャ リ ブレーシ ョ ンが完了し、 イ ン ターフ ェ イ スの使<br />

用準備がで き た こ と を示す出力です。 こ の信号は通常は内部でのみ使用し ますが、 必要に応じ<br />

て ピ ンに出力で き ます。<br />

• [tg_compare_error] – サンプル デザイ ンの ト ラ フ ィ ッ ク ジ ェ ネレーターがデータ比較でエ<br />

ラーを検出し た こ と を示す出力です。 こ の信号はサンプル デザイ ンでのみ生成され、 ユーザー<br />

デザイ ンには含まれません。 この信号は通常ピンには出力されませんが、 必要に応じ て出力さ<br />

せる こ とが可能です。<br />

[Next] をク リ ックして [Summary] ページへ進みます。<br />

[Summary] ページには、7 <strong>シリーズ</strong> <strong>FPGA</strong> の<strong>メモリ</strong> コ アの選択、 イ ン ターフ ェ イ ス パラ メーター、<br />

CORE Generator ツールのオプシ ョ ン、 アクテ ィブ プロジェク トの <strong>FPGA</strong> オプシ ョ ンなど、 すべ<br />

ての詳細が表示さ れます。<br />

図 2-21 : サマ リ<br />

[Next] をク リ ックして [PCB Information] ページへ進みます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 201<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

PCB 情報<br />

このページには、 MIG ツールで生成し たデザ イ ン を使用する ボー ド の設計に必要な PCB 関連の情<br />

報が表示さ れます。 [Next] をク リ ックして [Design Notes] ページへ進みます。<br />

デザイ ン ノート<br />

完了<br />

[Generate] をクリ ックしてデザイン ファイルを生成します。MIG ツールでは、2 つの出力デ ィ レ ク<br />

トリ(example_design と user_design) が生成 さ れます。デザ イ ンの生成が完了する と MIG の<br />

GUI 画面が閉じ ます。<br />

デザイ ンが生成される と 、 さ らに詳しい情報を記載し た [README] ページが表示 さ れます。<br />

[Close] をク リ ックして MIG ツール フ ローを終了し ます。<br />

MIG のデ ィ レ ク ト リ 構造と フ ァ イルの説明<br />

ここでは、MIG ツールのデ ィ レ ク ト リ 構造および出力フ ァ イルについて詳し く 説明し ます。<br />

出力デ ィ レ ク ト リ の構造<br />

MIG ツールで出力されるフ ァ イルとディ レ ク ト リ はすべて フォルダーの下<br />

に格納されます ( は MIG デザイ ン作成フ ローの 189 ページの 「MIG の出力<br />

オプシ ョ ン」 で指定した名前)。<br />

図 2-22 に、 メ モ リ コント ローラー デザ イ ンの出力デ ィ レ ク ト リ 構造を示し ます。 ディレク ト リには、 次の 3 つのフ ォルダーが作成されます。<br />

• docs<br />

• example_design<br />

• user_design<br />

202 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 2-22<br />

デ ィ レ ク ト リ と フ ァ イルの内容<br />

CORE Generator の使用方法<br />

ここでは、7 <strong>シリーズ</strong> <strong>FPGA</strong> コ アのデ ィ レ ク ト リ と 関連フ ァ イルについて説明し ます。<br />

/docs<br />

このフォルダーには PDF 形式の資料が格納さ れています。<br />

/example_design/<br />

図 2-22 : MIG のデ ィ レ ク ト リ構造<br />

こ のデ ィ レ ク ト リ には、 テ ス ト ベンチを含む完全な MIG サンプル デザイ ンのシ ミ ュ レーシ ョ ンお<br />

よびインプリ メンテーシ ョ ンに必要なすべての RTL、 制約ファイル、スクリプト ファイルが格納<br />

されています。オプショ ンの ChipScope ツール モジュールも、 このディ レ ク ト リ に含まれます。<br />

表 2-1 に、 example_design/rtl デ ィ レ ク ト リ に含まれモジ ュールの一覧を示し ます。<br />

表 2-1 : example_design/rfl ディレクトリに含まれるモジュール<br />

名前 説明<br />

example_top.v ユーザー デザイ ンを 7 <strong>シリーズ</strong> <strong>FPGA</strong> の<strong>メモリ</strong> <strong>インターフェイス</strong><br />

コ アに接続する サンプル デザ イ ンの最上位モジ ュールです。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 203<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 2-2 に、example_design/rtl/traffic_gen デ ィ レ ク ト リ に含まれるモジ ュールの一覧を示<br />

します。<br />

表 2-2 : example_design/rtl/traffic_gen ディレクトリに含まれるモジュール<br />

名前 説明<br />

memc_traffic_gen.v/vhd トラフィック ジ ェ ネレーターの最上位モジ ュールです。<br />

cmd_gen.v/vhd<br />

cmd_prbs_gen.v/vhd<br />

memc_flow_vcontrol.v/vhd<br />

コマンド ジェネレーターです。コマンド、アドレスおよびバー<br />

ス ト 長を個別に生成する よ う に制御し ます。<br />

PRBS (Pseudo-Random Binary Sequence) コマンド、アドレス、<br />

バース ト 長を生成する PRBS ジェネレーターです。<br />

<strong>メモリ</strong> コント ローラー コアと cmd_gen、 read_data_path およ<br />

び write_data_path モジ ュール間のフ ロー制御ロ ジ ッ ク を生成<br />

します。<br />

read_data_path.v/vhd 読み出しデータパスの最上位モジ ュールです。<br />

read_posted_fifo.v/vhd<br />

rd_data_gen.v/vhd<br />

<strong>メモリ</strong> コ ン ト ローラーへ送信さ れた読み出し コ マン ド を格納<br />

するモジュールです。この FIFO 出力を使用し て、読み出しデー<br />

タ の比較用の予想データ を生成し ます。<br />

mcb_flow_control.v/vhd モジ ュールに対する読み出し信<br />

号および Ready 信号の タ イ ミ ン グ を制御し ます。<br />

write_data_path.v/vhd 書き込みデータパスの最上位モジ ュールです。<br />

wr_data_gen.v/vhd<br />

mcb_flow_control.v/vhd モジュールに対する書き込み信<br />

号および Ready 信号の タ イ ミ ン グ を制御し ます。<br />

s7ven_data_gen.v/vhd 複数の異な るデータ パターンを生成します。<br />

a_fifo.v/vhd LUT RAM を使用した同期 FIFO です。<br />

data_prbs_gen.v/vhd<br />

init_mem_pattern_ctr.v/vhd<br />

traffic_gen_top.v/vhd<br />

tg_prbs_gen.v/vhd<br />

PRBS データ パターン を生成する 32 ビッ ト LFSR ( リニア<br />

フィードバック シフ ト レジスタ) です。<br />

トラフィック ジ ェ ネレーター用のフ ロー制御ロ ジ ッ ク を生成<br />

します。<br />

トラフィック ジ ェ ネレーターの最上位モジ ュールで、<br />

memc_traffic_gen モジュールと init_mem_pattern_ctr モ<br />

ジュールで構成されます。<br />

この PRBS はフ ィ ード バッ ク用に常にシングルレベルの XOR<br />

(XNOR) を持つため、1 対多のフ ィ ー ド バ ッ ク メカニズムを使<br />

用します。TAP は、 アプ リ ケーシ ョ ン ノート XAPP052 『効率<br />

的なシフ ト レジスタ、LFSR カ ウ ン ター、および仮想ロ ング ラ<br />

ンダム シーケンス ジェネレーター』 に記載の表から選択し ま<br />

す。 TAP の位置はパラ メ ーターで定義でき ます。<br />

204 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

表 2-2 : example_design/rtl/traffic_gen ディレクトリに含まれるモジュール (続き)<br />

tg_status.v/vhd<br />

vio_init_pattern_bram.v/vhd<br />

メ モ リ 読み出しデータ と data_gen モジ ュールで生成し た比較<br />

用データ を比較し ます。 一致し ない場合はエ ラー信号がアサー<br />

トされます。<br />

外部の定義済みデータ入力をブ ロ ッ ク RAM 初期化パターン<br />

として取り込みます。これにより、シンプルなテスト データ パ<br />

ターン を再コ ンパイルせずに変更で き ます。<br />

表 2-3 に、 example_design/sim デ ィ レ ク ト リ に含まれる フ ァ イルの一覧を示し ます。<br />

表 2-3 : example_design/sim ディレクトリに含まれるファイル<br />

名前 説明<br />

sim.do ModelSim シミュレータのスクリプト ファイルです。<br />

sim_tb_top.v シ ミ ュ レーシ ョ ンの最上位フ ァ イルです。<br />

表 2-4 に、 example_design/par デ ィ レ ク ト リ に含まれる フ ァ イルの一覧を示し ます。<br />

表 2-4 : example_design/par ディレクトリに含まれるファイル<br />

名前 説明<br />

example_top.ucf サンプル デザイ ンのコ アの UCF ファイルです。<br />

create_ise.bat ダブルク リ ッ クする と、ISE プロ ジ ェ ク ト が作成されます。デザイ ンに推奨<br />

されるビルド オプシ ョ ンを含む ISE プロジェク トが作成されます。 プロ<br />

ジェク ト を GUI モー ド で実行する には、ISE プロジェク ト をダブルク リ ッ<br />

ク し ます。 こ れに よ り 、 すべてのプ ロ ジ ェ ク ト 設定が完了し た状態で GUI<br />

モード の ISE プロジェク トが開きます。<br />

ise_flow.bat このスク リプト フ ァ イルは、 デザ イ ンの合成、 ビル ド 、 マ ッ プ、 配置配線<br />

を実行し、 必要なオプシ ョ ン をすべて設定し ます。 推奨さ れる ビル ド オプ<br />

シ ョ ン を確認する には、 こ のフ ァ イルを参照し て く だ さ い。<br />

rem_files.bat インプリメンテーション時に生成されたすべてのインプリ メンテーション<br />

ファイルを削除します。<br />

set_ise_prop.tcl ISE のプロパテ ィ の一覧です。<br />

xst_options.txt 合成ツールのプ ロパテ ィ の一覧です。<br />

ila_cg.xco、<br />

icon_cg.xco、<br />

vio_cg.xco<br />

名前 説明<br />

デバ ッ グを有効に し た と きに生成さ れる ChipScope モジュールの XCO<br />

ファイルです。<br />

注意 : ディレク ト リの par フォルダーにある ise_flow.bat ファイルに<br />

は、 デザイ ンで推奨される ビル ド オプシ ョ ンが含まれています。 こ の推奨オプシ ョ ンに従わな<br />

い場合は、 予期し ない結果が生成さ れる可能性があ り ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 205<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 2-5 に、 example_design/synth デ ィ レ ク ト リ に含まれる フ ァ イルの一覧を示し ます。<br />

表 2-5 : example_design/synth ディレクトリに含まれるファイル<br />

名前 説明<br />

example_top.prj XST ツールでコンパイルするすべての RTL ファイルの一覧です。<br />

/user_design/<br />

このディレク ト リには、サンプル デザイ ン と UCF にインスタンシエート される <strong>メモリ</strong> コント ロー<br />

ラーの RTL ファイルが含まれます。<br />

表 2-6 に、 user_design/rtl デ ィ レ ク ト リ に含まれるモジ ュールの一覧を示し ます。<br />

表 2-6 : user_design/rtl ディレクトリに含まれるモジュール<br />

名前 説明<br />

.v ユーザー デザイ ンを 7 <strong>シリーズ</strong> <strong>FPGA</strong> の<strong>メモリ</strong> <strong>インターフェイス</strong> コ<br />

アに接続する サンプル デザ イ ンの最上位モジ ュールです。<br />

表 2-7 に、user_design/rtl/clocking デ ィ レ ク ト リ に含まれるモジ ュールの一覧を示し ます。<br />

表 2-7 : user_design/rtl/clocking ディレクトリに含まれるモジュール<br />

名前 説明<br />

infrastructure.v ク ロ ッ ク の生成および分配に使用し ます。<br />

clk_ibuf.v システム ク ロ ッ ク 入力バ ッ フ ァーを イ ン ス タ ンシエー ト し ます。<br />

iodelay_ctrl.v IODELAY の使用に必要な IDELAYCTRL プリ ミティブをインスタ<br />

ンシエート します。<br />

表 2-8 に、 user_design/rtl/phy ディレク ト リに含まれるモジュールの一覧を示します。<br />

表 2-8 : user_design/rtl/phy ディレクトリに含まれるモジュール<br />

名前 説明<br />

qdr_phy_top.v 物理層の最上位モジ ュールです。<br />

qdr_phy_write_top.v 書き込みパスの最上位ラ ッ パーです。<br />

qdr_rld_phy_read_top.v 読み出しパスの最上位モジ ュールです。<br />

qdr_rld_mc_phy.v 最大 3 つの I/O バンク (それぞれ 4 レーンの PHY プリ ミ<br />

ティブを使用) をインスタンシエートするパラメーター<br />

指定可能な ラ ッ パーです。<br />

qdr_phy_write_init_sm.v 初期化ス テー ト マシンのロジッ クを含みます。<br />

qdr_phy_write_control_io.v メ モ リ へ送信 さ れる制御信号の ロ ジ ッ ク を含みます。<br />

qdr_phy_write_data_io.v メモ リへ送信されるデータおよびバイ ト書き込み信号の<br />

ロジックを含みます。<br />

206 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 2-8 : user_design/rtl/phy ディレクトリに含まれるモジュール (続き)<br />

CORE Generator の使用方法<br />

qdr_rld_prbs_gen.v この PRBS モジュールは多対 1 のフ ィードバッ ク メカニ<br />

ズムを使用して 2n シーケ ン ス を生成し ます。<br />

qdr_rld_phy_ck_addr_cmd_delay.v ア ド レ スおよび制御信号に必要な遅延を与え る ロ ジ ッ ク<br />

を含みます。<br />

表 2-9 に、 user_design/ucf デ ィ レ ク ト リ に含まれる フ ァ イルの一覧を示し ます。<br />

ピ ン変更の検証およびデザイ ンの更新<br />

名前 説明<br />

qdr_rld_phy_rdlvl.v 工程 1 キャ リブレーションのロジックを含みます。<br />

qdr_rld_phy_read_stage2_cal.v 工程 2 キャ リブレーションのロジックを含みます。<br />

qdr_rld_phy_read_data_align.v 受信データ の位相を揃え ます。<br />

qdr_rld_phy_read_vld_gen.v ユーザー イ ン ターフ ェ イ スに返さ れた読み出しデータ の<br />

Valid 信号を生成する ロ ジ ッ ク を含みます。<br />

qdr_phy_byte_lane_map.v このラッパー ファイルは mc_phy モジュールのポー ト と<br />

ユーザーの メ モ リ ポー ト 間でのベク ターの再マ ッ ピング<br />

を処理し ます。<br />

qdr_rld_phy_4lanes.v I/O バン ク のパラ メ ーター指定可能な 4 レーン PHY です。<br />

qdr_rld_byte_lane.v 出力ま たは入力バイ ト レーン内で必要なプリ ミ テ ィブ<br />

イ ン ス タ ンシエーシ ョ ン を含みます。<br />

qdr_rld_byte_group_io.v シングル バイ ト レーン用のパラ メ ーター指定可能な I/O<br />

ロジック インスタンシエーションと I/O 終端を含みます。<br />

表 2-9 : user_design/ucf ディレクトリに含まれるファイル<br />

名前 説明<br />

.ucf ユーザー デザイ ンのコ アの UCF ファイルです。<br />

こ の機能は、バン ク の選択、バイ ト の選択、ピ ンの割 り 当てに関し て入力 UCF を検証し ます。[Verify<br />

Pin Changes and Update Design] ページの [Validate] を ク リ ッ クする と、エラー と警告が別のダ イ ア<br />

ログ ボ ッ ク スに表示さ れます。 こ の機能は、 MIG ツールでデザイ ン を生成後にピ ン配置を変更し た<br />

場合に UCF を検証する際に有用です。 生成し た .prj ファイル (未修正の元の .prj ファイル) を<br />

MIG ツールで読み込みます。 CORE Generator ツールで再カ ス タ マ イ ズのオプシ ョ ン を選択し てプ<br />

ロジェク トを再ロードします。 MIG の DRC にパス し なければデザイ ンは生成でき ません。 ピン配<br />

置の検証に関する警告は、 こ こ では関係ないので無視し ます。 UCF の検証のみでは不十分なため、<br />

実際にデザ イ ン を生成し、 ク ロ ッ ク および PHASER に関する制約を更新し た UFC、 および各種<br />

MAP パラ メーターを更新した最上位の RTL モジ ュールを得る必要があ り ます。<br />

入力 UCF か ら検証さ れた規則を次に示し ます。<br />

• 1 つのピ ンが複数の信号に割 り 当て ら れてい る場合、 エ ラーが報告 さ れます。 UCF が一意性の<br />

属性を満た し ていない場合、 それ以上の検証は行われません。<br />

• 検証済みの共通規則<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 207<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

• 1 つの イ ン ターフ ェ イ スは、 最大で 3 つの連続し たバン ク を またぐ こ と ができ ます。<br />

• <strong>インターフェイス</strong> バンクは <strong>FPGA</strong> の同じ カ ラ ムにあ る必要があ り ます。<br />

• <strong>インターフェイス</strong> バンクは HP (High Performance) バンクでも HR (High Range) バンク<br />

でもかまいません。 HP バン ク は高周波数用に使用し ます。<br />

• 選択し たデバイ スがス タ ッ ク ド シリコン インターコネクト テ ク ノ ロ ジを使用し てい る場<br />

合、 選択し た イ ン ターフ ェ イ ス バンクは同じ SLR 領域を持ってい る必要があ り ます。<br />

• 内部 VREF を使用する場合、 ま たはバン ク に入出力/入力ポー ト がない場合は、 VREF I/O<br />

を GPIO と し て使用する必要があ り ます。<br />

• 各信号の I/O 規格は、 選択し た コ ン フ ィ ギ ュ レーシ ョ ンに従って検証 さ れます。<br />

• 各信号の VCCAUX I/O を検証し、 供給される VCCAUX I/O が有効でない場合はエラー<br />

メ ッ セージが表示さ れます。<br />

• 検証済みのデータ読み出し ピ ンの規則<br />

• 1 つのコンポーネン ト に関連するピンは同じバンクに割り当てる必要があ り ます。<br />

• ストローブ ペア (CQ) は MRCC P または MRCC N ピ ンに割 り 当て る必要があ り ます。<br />

• 読み出しデータ ピンは、 必要なバイト レーンよ り多く またぐ こ とはできません。 たとえ<br />

ば、 18 ビットのコンポーネントが占有できるのは 2 バイ ト レーンまでです。<br />

• 1 つのバイ ト レーンには 1 つの読み出しバイ ト (Q[0-8] や Q[9-17] など) のピンしか含め<br />

ることはできません。<br />

• 1 つのバイ ト レーンに複数のコンポーネント のピンを含める こ とはできません。<br />

• 1 つの <strong>FPGA</strong> バイ ト レーンに 2 つの異なる ス ト ローブ セ ッ ト に関連する ピ ン を含め る こ<br />

とはできません。<br />

• VREF I/O は内部 VREF を選択し た場合のみ使用で き ます。<br />

• 検証済みのデータ書き込みピ ンの規則<br />

• 1 つの コ ンポーネン ト に関連し たピ ンは 1 つのバン ク にしか割 り 当てる こ と ができ ませ<br />

ん。<br />

• 書き込みクロ ッ ク (K/K#) ペアは DQS CC I/O に割 り 当て る必要があ り ます。<br />

• 書き込みデータ ピンは、 必要なバイト レーンよ り多く またぐ こ とはできません。 たとえ<br />

ば 18 ビッ トのコンポーネントは 2 バイ ト レーンまでしか占有できません。<br />

• 1 つのバイ ト レーンに複数のコンポーネント のピンを含める こ とはできません。<br />

• 1 つのバイ ト レーンには 1 つの書き込みバイ ト (D[0-8] や D[9-17] など) のピンしか含め<br />

ることはできません。<br />

• 内部 Vref を使用する かど う かにかかわ らず、 バン ク にほかの入力信号がなければ VREF<br />

ピンを GPIO として使用できます。<br />

• 検証済みのア ド レ ス ピンの規則<br />

• ア ド レ ス信号を qdriip_dll_off_n 信号以外のデータ バイ ト と混在させるこ とはできませ<br />

ん。<br />

• 孤立し たバイ ト レーンはい く つでも使用でき ます。<br />

• 検証済みのシ ス テム ピンの規則<br />

• システム クロック<br />

- SR/MR CC I/O ペアのいずれかに割 り 当てる必要があ り ます。<br />

- <strong>メモリ</strong> バンク カラムに割り当てる必要があります。<br />

208 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

- システム ク ロ ッ ク の タ イ プにシングルエン ド を選択し た場合、同じバン ク に基準電圧<br />

ピンが割り当てられていないか、内部 VREF を使用しているかを確認する必要があ り<br />

ます。<br />

• 基準 ク ロ ッ ク<br />

- SR/MR CC I/O ペアのいずれかに割 り 当てる必要があ り ます。<br />

- システム ク ロ ッ ク の タ イ プにシングルエン ド を選択し た場合、同じバン ク に基準電圧<br />

ピンが割り当てられていないか、内部 VREF を使用しているかを確認する必要があ り<br />

ます。<br />

• ステータス信号<br />

- sys_rst 信号は VREF I/O が割 り 当て られていないバン ク に割 り 当て るか、内部 VREF<br />

を使用する必要があ り ます。<br />

- I/O 規格に互換性がないため、 こ れ ら の信号は メ モ リ 以外のバン ク に割 り 当て る必要<br />

があ り ます。 I/O 規格は I/O 電圧 1.8V の LVCMOS とする必要があり ます。<br />

- こ れ ら の信号は 1 つの メ モ リ カ ラ ムに属する ため、ハー ド 制約はな く 任意のカ ラ ムに<br />

割 り 当て る こ と がで き ますが、 選択し た メ モ リ バンクの近く にする こ と を推奨しま<br />

す。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 209<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

コアのアーキテクチャ<br />

概要<br />

図 2-23 に、 7 <strong>シリーズ</strong> <strong>FPGA</strong> の QDRII+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>の概略<br />

ブ ロ ッ ク 図を示し ます。 こ の図には、読み出し/書き込みコ マン ド を開始する ための ク ラ イ アン ト イ<br />

ンターフェイスへの内部 <strong>FPGA</strong> 接続、 および メ モ リ デバイスへの外部<strong>インターフェイス</strong>を示して<br />

あります。<br />

X-Ref Target - Figure 2-23<br />

Client<br />

Interface<br />

clk<br />

sys_rst<br />

rst_dk<br />

clk_wr<br />

clk_mem<br />

mmcm_locked<br />

iodelay_ctrl_rdy<br />

app_wr_cmd<br />

app_wr_addr<br />

app_wr_data<br />

app_wr_bw_n<br />

app_rd_cmd<br />

app_rd_addr<br />

app_rd_valid<br />

app_rd_data<br />

init_calib_complete<br />

7 Series <strong>FPGA</strong><br />

qdr_k_p<br />

qdr_k_n<br />

qdr_w_n<br />

qdr_r_n<br />

qdr_bw_n<br />

qdr_cq_p<br />

qdr_cq_n<br />

Physical<br />

Interface<br />

図 2-23 : QDRII+ <strong>インターフェイス</strong> ソ リ ューシ ョ ンの概略ブ ロ ッ ク図<br />

<strong>UG586</strong>_c2_34_090911<br />

210 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

qdr_sa<br />

qdr_d<br />

qdr_q<br />

K<br />

K<br />

W<br />

R<br />

SA<br />

D<br />

BW<br />

CQ<br />

CQ<br />

Q<br />

QDR II+ SRAM


X-Ref Target - Figure 2-24<br />

User<br />

Device<br />

Client Interface<br />

PHY は次の要素で構成されています (図 2-24)。<br />

• ユーザー <strong>インターフェイス</strong><br />

• 物理イ ン ターフ ェ イ ス<br />

clk_wr<br />

ck_mem<br />

clk<br />

sys_rst<br />

rst_dk<br />

a. 書き込みパス<br />

b. 読み出しデータパス<br />

mmcm_locked<br />

iodelay_ctrl_rdy<br />

app_wr_cmd<br />

app_rd_cmd<br />

app_wr_addr<br />

app_rd_addr<br />

app_wr_data<br />

app_wr_bw_n<br />

app_rd_valid<br />

app_rd_data<br />

init_calib_complete<br />

Reset<br />

Module<br />

Clock<br />

Generation<br />

Write Path<br />

Read Path<br />

phy_top<br />

Physical Interface<br />

qdr_k_p<br />

qdr_k_n<br />

qdr_dll_off_n<br />

qdr_w_n<br />

qdr_r_n<br />

qdr_sa<br />

qdr_d<br />

qdr_bw_n<br />

qdr_cq_p<br />

qdr_cq_n<br />

qdr_q<br />

user_top<br />

図 2-24 : QDRII+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンの構成<br />

コアのアーキテクチャ<br />

QDR II+ SRAM<br />

Device<br />

<strong>UG586</strong>_c2_35_090911<br />

クライアント <strong>インターフェイス</strong> (ユーザー <strong>インターフェイス</strong>とも呼ぶ) は、 完全に SDR (シングル<br />

データ レート) 信号ベースのシンプルなプ ロ ト コルを用いて読み出しおよび書き込み要求を生成し<br />

ます。 このプロ ト コルの詳細は、 「ユーザー <strong>インターフェイス</strong>」 で説明します。 物理インターフェ<br />

イスは、QDRII+ プ ロ ト コル と タ イ ミ ン グ要件を満た し なが ら外部 メ モ リ デバイスと通信できるよ<br />

うに、適切なタイミング関係と DDR 信号を生成し ます。 詳細は、 「物理イ ン ターフ ェ イ ス」 を参照<br />

してください。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 211<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

PHY の ロ ジ ッ ク は、 読み出しパス と 書き込みパスに分割 さ れています。 書き込みパスは、 読み出し<br />

/書き込み要求の生成に必要な QDRII+ 信号を生成し ます。 こ れには、 制御信号、 ア ド レ ス、 デー<br />

タ、 バイ ト 書き込みが含まれます。 読み出しパスにはキ ャ リ ブレーシ ョ ンの役割も あ り 、 読み出し<br />

応答を Valid 信号 と 一緒にユーザーに返し ます。 こ のプ ロ セスの詳細は、 「キャ リ ブレーシ ョ ン」 を<br />

参照し て く だ さ い。<br />

ユーザー <strong>インターフェイス</strong><br />

クライアント <strong>インターフェイス</strong>は 7 シ リーズ <strong>FPGA</strong> のユーザー デザイ ンを QDRII+ SRAM メモ<br />

リ ソ リューション コ アに接続し、 ユーザー と 外部 メ モ リ デバイ ス間のや り と り を簡略化し ます。<br />

コ マン ド 要求信号<br />

クライアント <strong>インターフェイス</strong>には、 <strong>メモリ</strong> デバイ スに対する読み出し/書き込みコマンドを発行<br />

するための信号があ り ます。 表 2-10 に、 これらの信号を ま と めます。 バース ト 長 4 のデバイ ス を<br />

サポー ト するため、ク ラ イアン ト <strong>インターフェイス</strong>には読み出しポート と書き込みポートがそれぞ<br />

れ 2 つずつあ り ます。バース ト 長 4 を使用する場合は、末尾が 0 のポー ト のみを使用して く ださい。<br />

表 2-10 : クライアント イ ン タ ーフ ェ イ スの要求信号<br />

信号 方向 説明<br />

init_calib_complete 出力 Calibration Done。キャ リブレーショ ンが完了したこ とを<br />

ユーザー デザ イ ンに通知する信号です。こ れに よ ってユー<br />

ザーはク ラ イ アン ト イ ン ターフ ェ イ スか ら読み出し/書き<br />

込み要求を開始で き ます。<br />

app_rd_addr0[ADDR_WIDTH - 1:0] 入力 Read Address。 読み出し要求に使用する ア ド レ ス を供給し<br />

ます。 app_rd_cmd0 がアサー ト される と有効にな り ます。<br />

app_rd_cmd0 入力 Read Command。読み出し要求を発行する ための信号で、<br />

ポー ト 0 のア ド レ スが有効であ る こ と を示し ます。<br />

app_rd_data0[DATA_WIDTH × BURST_LEN - 1:0] 出力 Read Data。app_rd_cmd0 で発行さ れた読み出し コ マン ド<br />

か ら読み出し たデータ を送信し ます。<br />

app_rd_valid0 出力 Read Valid。メ モ リ か ら読み出し たデータ が app_rd_data0<br />

で有効で、 サンプル可能になった こ と を示し ます。<br />

app_rd_addr1[ADDR_WIDTH - 1:0] 入力 Read Address。 読み出し要求に使用する ア ド レ ス を供給し<br />

ます。 app_rd_cmd1 がアサー ト される と有効にな り ます。<br />

app_rd_cmd1 入力 Read Command。読み出し要求を発行する ための信号で、<br />

ポー ト 1 のア ド レ スが有効であ る こ と を示し ます。<br />

app_rd_data1[DATA_WIDTH × 2 - 1:0] 出力 Read Data。app_rd_cmd1 で発行さ れた読み出し コ マン ド<br />

か ら読み出し たデータ を送信し ます。<br />

app_rd_valid1 出力 Read Valid。メ モ リ か ら読み出し たデータ が app_rd_data1<br />

で有効で、 サンプル可能になった こ と を示し ます。<br />

app_wr_addr0[ADDR_WIDTH - 1:0] 入力 Write Address。 書き込み要求に対する ア ド レ ス を供給し<br />

ます。app_wr_cmd0 がアサー ト される と有効にな り ます。<br />

212 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 2-10 : クライアント イ ン タ ーフ ェ イ スの要求信号 (続き)<br />

信号 方向 説明<br />

クライアント <strong>インターフェイス</strong>を介したコアとの<strong>インターフェイス</strong><br />

コアのアーキテクチャ<br />

app_wr_bw_n0[BW_WIDTH × BURST_LEN - 1:0] 入力 Write Byte Writes。 書き込み要求に使用するバイ ト 書き<br />

込み信号を供給し ます。 app_wr_cmd0 がアサー ト される<br />

と有効になります。 これらのイネーブル信号はアクティブ<br />

Low です。<br />

app_wr_cmd0 入力 Write Command。 書き込み要求を発行する ための信号<br />

で、書き込みポー ト 0 の対応する サ イ ド バン ド 信号が有効<br />

である こ と を示します。<br />

app_wr_data0[DATA_WIDTH ⋅ BURST_LEN - 1:0] 入力 Write Data。 書き込み要求に使用するデータ を供給し ま<br />

す。 app_wr_cmd0 がアサー ト される と有効にな り ます。<br />

app_wr_addr1[ADDR_WIDTH - 1:0] 入力 Write Address。 書き込み要求に対する ア ド レ ス を供給し<br />

ます。app_wr_cmd1 がアサー ト される と有効にな り ます。<br />

app_wr_bw_n1[BW_WIDTH ⋅ 2 - 1:0] 入力 Write Byte Writes。 書き込み要求に使用するバイ ト 書き<br />

込み信号を供給し ます。 app_wr_cmd1 がアサー ト される<br />

と有効になります。 これらのイネーブル信号はアクティブ<br />

Low です。<br />

app_wr_cmd1 入力 Write Command。 書き込み要求を発行する ための信号<br />

で、書き込みポー ト 1 の対応する サ イ ド バン ド 信号が有効<br />

である こ と を示します。<br />

app_wr_data1[DATA_WIDTH ⋅ 2 - 1:0] 入力 Write Data。 書き込み要求に使用するデータ を供給し ま<br />

す。 app_wr_cmd1 がアサー ト される と有効にな り ます。<br />

X-Ref Target - Figure 2-25<br />

clk<br />

app_wr_cmd<br />

app_wr_addr<br />

app_wr_data<br />

app_wr_bw_n<br />

app_rd_cmd<br />

app_rd_addr<br />

app_rd_vld<br />

app_rd_data<br />

init_calib_complete<br />

クライアント <strong>インターフェイス</strong>のプロ ト コルは、ポート 0 とポート 1 のどちらの<strong>インターフェイス</strong><br />

信号を使用する場合も共通です (図 2-25)。<br />

WR_ADDR WR_ADDR<br />

WR_DATA WR_DATA<br />

WR_BW_N WR_BW_N<br />

RD_ADDR RD_ADDR<br />

図 2-25 : QDRII+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンの構成<br />

RD_DATA<br />

<strong>UG586</strong>_c2_36_090<br />

要求を発行する前に、init_calib_complete 信号が High にアサー ト されている必要があ り ます (図 2-25)。<br />

アサー ト されていない場合は読み出し/書き込み要求を発行で きず、 ク ラ イ アン ト インターフェイ<br />

ス側では app_wr_cmd または app_rd_cmd のアサー ト が無視 さ れます。app_wr_cmd を 1 サイクル<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 213<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

パルス と し てアサー ト する と 書き込み要求が発行 さ れます。 こ の と き、app_wr_addr、app_wr_data、<br />

app_wr_bw_n 信号がいずれも有効であ る必要があ り ます。 直後のサ イ ク ルで app_rd_cmd を 1 サ<br />

イクル パルス と し てアサー ト する と 読み出し要求が発行 さ れます。 こ の と き、 app_rd_addr が有効<br />

である必要があ り ます。 1 サイクルのアイドル時間の後、 同じクロッ ク サ イ ク ルで読み出し要求 と<br />

書き込み要求が同時にアサー ト さ れます。 こ の場合、 メ モ リ の読み出し が先に実行 さ れ、 次に書き<br />

込みが実行さ れます。<br />

図 2-25 には、 メ モ リ デバイ スか ら ユーザー デザイ ンにデータが返される タ イ ミ ング も示し ていま<br />

す。 app_rd_vld 信号がアサー ト さ れる と 、 app_rd_data は有効です。 コ アは返されたデータ をバ ッ<br />

ファーしないため、app_rd_vld がアサー ト されているサイ クルで app_rd_data をサンプルする必要<br />

があ り ます。 データのバッ フ ァー機能は、 必要に応じ てユーザーが追加でき ます。 図 2-25 はプロ<br />

ト コルの説明のための も のであ り 、 必ずし も こ の読み出し コ マン ド か らデータ が返 さ れるわけでは<br />

ありません。<br />

クロッキング アーキテクチャ<br />

PHY デザイ ンでは、PLL モジ ュールを使用し て さ ま ざ ま な ク ロ ッ ク を生成する必要があ り ます。ク<br />

ロックをデザイン全体に分配するために、 グローバル クロック ネッ ト ワークとローカル クロック<br />

ネ ッ ト ワー ク の両方を使用し ます。<br />

ク ロ ッ ク の生成および分配回路 と ネ ッ ト ワー ク は PHY 内部のブ ロ ッ ク を駆動し ます。 こ れ ら のブ<br />

ロックは、次の 4 つの機能に大別さ れます。<br />

• 内部 <strong>FPGA</strong> ロジック<br />

• 書き込みパス (出力) ロジック<br />

• 読み出しパス (入力) および遅延ロ ジ ッ ク<br />

• IDELAY 基準 ク ロ ッ ク (200MHz)<br />

PHY には PLL が 1 つ必要です。ほ と んどの内部ロ ジ ッ ク 用の ク ロ ッ ク 、PHASER への入力 ク ロ ッ<br />

ク、 そしてマルチ I/O バンク イ ンプ リ メ ンテーシ ョ ンで複数の PHASER ブロックの同期のために<br />

必要な同期パルスは、 こ の PLL を使用して生成します。<br />

PHASER ブ ロ ッ ク には、 メ モ リ 基準 ク ロ ッ ク、 周波数基準 ク ロ ッ ク、 位相基準 ク ロ ッ ク の 3 つを<br />

PLL か ら 供給する必要があ り ます。 メ モ リ 基準 ク ロ ッ ク は、 QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> ク<br />

ロ ッ ク と 同じ周波数であ る必要があ り ます。 周波数基準 ク ロ ッ ク は、 400 ~ 1066MHz の周波数 と<br />

な る よ う に メ モ リ の ク ロ ッ ク 周波数の 2 倍または 4 倍のいずれか と し ます。 位相基準 ク ロ ッ ク は読<br />

み出しバン ク で使用し ます。 こ の ク ロ ッ ク は内部配線さ れた メ モ リ 読み出し ク ロ ッ ク (CQ/CQ#) を<br />

使用し て生成さ れ、 PHASER ロジックでデータ キ ャ プチャに使用 さ れます。<br />

PLL によって生成される内部ファブリ ッ ク クロックは、グローバル クロッキング リソースで<br />

QDII+ メ モ リ の半分の周波数で ク ロ ッ キ ン グ さ れます。<br />

IDELAYCTRL モジュールには 200MHz の IDELAY 基準 ク ロ ッ ク を供給する必要があ り ます。 こ<br />

のモジ ュールは、 環境の変化に合わせて I/O 領域内の IDELAY エレ メ ン トのキャ リブレーシ ョ ン<br />

を常時実行し ます。 IP コアは、 外部クロック信号 が IDELAYCTRL モジ ュールを駆動する こ と を<br />

前提 と し ています。 IDELAYCTRL 入力ク ロ ッ ク を PLL クロックで駆動する場合は、PLL ロック<br />

信号を IODELAY_CTRL モジュール内の rst_tmp_idelay 信号に組み込む必要があ り ます。 こ れに<br />

よ り 、 ク ロ ッ ク を使用前に安定させる こ と がで き ます。<br />

表 2-11 に、 イ ン フ ラ ス ト ラ クチャ モジ ュールで使用する信号を ま と めます。 こ れら は、 デザイ ン<br />

で必要な ク ロ ッ ク および リ セ ッ ト 信号を供給し ます。<br />

214 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 2-11 : インフラストラクチャのクロッキング/ リセッ ト信号<br />

信号 方向 説明<br />

mmcm_clk 入力 シ ス テム ク ロ ッ ク 入力です。<br />

物理イ ン タ ーフ ェ イ ス<br />

コアのアーキテクチャ<br />

sys_rst 入力 ユーザー アプ リ ケーシ ョ ンからのコア リセットです。<br />

iodelay_ctrl_rdy 入力 IDELAYCTRL ロック ステータスです。<br />

clk 出力 半分の周波数のフ ァ ブ リ ッ ク クロックです。<br />

mem_refclk 出力 メ モ リ ク ロ ッ ク と 同じ周波数の PLL 出力 ク ロ ッ ク です。<br />

freq_refclk 出力 PHASER の FREQREFCLK 入力を供給する PLL 出力 ク ロ ッ ク<br />

です。 周波数が 400 ~ 1066MHz の範囲と な る よ う に生成され<br />

ます。<br />

sync_pulse 出力 mem_Refclk の 1/16 で生成される PLL 出力です。 マルチバン<br />

ク イ ンプ リ メ ンテーシ ョ ンで同期信号 と し て PHY ハー ド ブ<br />

ロ ッ ク に送信 さ れます。<br />

pll_locked 出力 PLLE2_ADV か ら の ロ ッ ク 出力です。<br />

rstdiv0 出力 内部フ ァ ブ リ ッ ク の 1/2 周波数 ク ロ ッ ク に同期し た リ セ ッ ト 出<br />

力です。<br />

物理イ ン ターフ ェ イ スは、 <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>を外部 QDRII+ SRAM<br />

デバイ スに接続する部分です。 表 2-12 に、 こ のイ ン ターフ ェ イ スで使用される I/O 信号を示し ま<br />

す。 こ れ ら の信号は、 QDRII+ SRAM デバイ スの対応する信号へ直接接続で き ます。<br />

表 2-12 : 物理イ ン タ ーフ ェ イ スの信号<br />

信号 方向 説明<br />

qdr_cq_n 入力 QDR CQ#。 <strong>メモリ</strong>から返されるエコー クロックです。<br />

qdr_cq_p 入力<br />

qdr_k_n か ら派生し ます。<br />

QDR CQ。メ モ リ から返されるエコー クロックです。qdr_k_p<br />

か ら派生し ます。<br />

qdr_d 出力 QDR Data。PHY から QDRII+ <strong>メモリ</strong> デバイ スへの書き込み<br />

データ です。<br />

qdr_dll_off_n 出力 QDR DLL Off。 <strong>メモリ</strong> デバイ スの DLL を OFF にする信号で<br />

す。<br />

qdr_bw_n 出力 QDR Byte Write。 PHY から QDR II+ SRAM デバイ スへの<br />

バイ ト 書き込み信号です。<br />

qdr_k_n 出力 QDR Clock K#。 <strong>メモリ</strong> デバイ スへ供給 さ れる反転入力 ク<br />

ロックです。<br />

qdr_k_p 出力 QDR Clock K。 <strong>メモリ</strong> デバイ スへ供給される入力ク ロ ッ ク です。<br />

qdr_q 入力 QDR Data Q。 メ モ リ の読み出し か ら返さ れるデータ です。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 215<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 2-12 : 物理イ ン タ ーフ ェ イ スの信号 (続き)<br />

qdr_qvld 入力 QDR Q Valid。 qdr_q のデータ が有効であ る こ と を示す信号<br />

です。 QDR II+ SRAM デバイ スにのみ存在し ます。<br />

qdr_sa 出力 QDR Address。 メ モ リ の操作で使用する ア ド レ スです。<br />

qdr_w_n 出力 QDR Write。 メ モ リ への書き込みコ マン ド です。<br />

qdr_r_n 出力 QDR Read。 メ モ リ への読み出し コ マン ド です。<br />

<strong>メモリ</strong> デバイス とのイ ン ターフ ェ イス<br />

図 2-26 に、 4 ワード <strong>メモリ</strong> デバイ スの物理イ ン ターフ ェ イ ス プロ ト コルを示します。<br />

X-Ref Target - Figure 2-26<br />

信号 方向 説明<br />

qdr_k_p<br />

qdr_k_n<br />

qdr_w_n<br />

qdr_r_n<br />

qdr_sa<br />

qdr_d<br />

qdr_bw_n<br />

qdr_cq_p<br />

qdr_cq_n<br />

qdr_qvld<br />

qdr_q<br />

4 ワード バース ト モード<br />

RD_ADDR WR_ADDR<br />

図 2-26 : バース ト 長 4 ワードのメ モ リ デバイスのプロ ト コル<br />

• アドレスは SDR フォーマッ トです。<br />

DW1 DW2 DW3 DW4<br />

BW1 BW2 BW3 BW4<br />

DW1 DW2 DW3 DW4<br />

• メ モ リ へのすべての入力信号は qdr_k_p に対し て中央に位置し ています。<br />

<strong>UG586</strong>_c2_37_012511<br />

• qdr_w_n がアサート された後の qdr_k_p の立ち上が り エ ッ ジで書き込み要求に対するデータ<br />

が現れます。<br />

• バイ ト 書き込み信号がデータ と 一緒にサンプル さ れます。<br />

• qdr_qvld 信号は、 qdr_cq_n ク ロ ッ ク に揃ったデータ エッジが返される 1/2 サイクル前にア<br />

サー ト されます。<br />

• qdr_q 信号のエ ッ ジは qdr_cq_p および qdr_cq_n と揃っています。<br />

216 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


PHY のアーキテクチャ<br />

コアのアーキテクチャ<br />

7 シ リーズ <strong>FPGA</strong> の PHY は専用のブロ ッ ク と ソ フ ト キャ リブレーション ロジックで構成されて<br />

います。 専用ブ ロ ッ ク は隣接し て配置さ れ、 ク ロ ッ ク およびデータパスの配線を最短に抑え、 高性<br />

能な物理層を構築する ために イ ン ターコ ネ ク ト で直接接続 さ れています。<br />

QDRII+ SRAM PHY で使用さ れてい る主な専用ブ ロ ッ ク と その機能は次の と お り です。<br />

• 7 シ リ ーズの各バン ク で利用可能な I/O は 4 つのバイ ト グループに分けられ、 1 つのグループ<br />

は最大 12 の I/O で構成されています。<br />

• 各バイ ト グループに PHASER_IN/PHASER_OUT ブ ロ ッ ク があ り 、 ク ロ ッ ク 位相を高精度で<br />

調整で き る マルチス テージのプ ロ グ ラ マブル遅延ラ イ ン ループを形成し ます。 PHASER に<br />

よって生成される I/O バンク内の専用ク ロ ッ クはバイ ト グループ クロックと呼ばれ、 このド<br />

ラ イバーに よ って駆動さ れる ロー ド 数を最小に抑え ます。<br />

• OUT_FIFO と IN_FIFO は各バイ ト グループが備える、 深さが 8 の浅い FIFO で、 データ を<br />

ファブリック ドメインから I/O クロック ド メ イ ンへ転送する役割を果た し ます。 OUT_FIFO<br />

は メ モ リ に送信する出力データ と ア ド レ ス/制御信号を格納する ために使用し、 IN_FIFO は<br />

キ ャ プチャ し た読み出しデータ を <strong>FPGA</strong> フ ァ ブ リ ッ ク に転送する前に格納する ために使用し<br />

ます。<br />

<strong>メモリ</strong> <strong>インターフェイス</strong>信号をバイ ト グループ内に配置する際の規則については、 「ピン配置の要<br />

件」 で説明し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 217<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 2-27<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

書き込みパス<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 2-27 : 36 ビット QDRII+ <strong>インターフェイス</strong>の PHY の概略ブロ ッ ク図<br />

<br />

QDRII+ SRAM への書き込みパスには、 書き込み処理の実行に必要なア ド レ ス信号、 データ信号、<br />

制御信号が含まれます。 4 ワード バース ト 長モー ド のア ド レ ス信号、 および メ モ リ への制御信号は<br />

SDR フ ォーマ ッ ト を使用し ます。 書き込みデータ の値 (qdr_d および qdr_bw_n) は、 必要な 4 ワー<br />

ド バース ト を ク ロ ッ ク周期内で実現する ために DDR フォーマッ トを使用します。 図 2-28 に、 書<br />

き込みパス と そのサブモジ ュールの概略ブ ロ ッ ク 図を示し ます。<br />

出力アーキテ ク チ ャ<br />

QDRII+ <strong>インターフェイス</strong> <strong>ソリューション</strong>の出力パスは、7 <strong>シリーズ</strong> <strong>FPGA</strong> が備え る OUT_FIFO、<br />

PHASER_OUT_PHY、 および OSERDES プリ ミティブを使用します。 これらのブロックは、 メモ<br />

リ デバイ スへのすべての PHY 出力を ク ロ ッ キ ングする目的で使用し ます。<br />

PHASER_OUT は、 メ モ リ への出力に必要な ク ロ ッ ク を供給し ます。 各バイ ト グループの<br />

OUT_FIFO と OSERDES/ODDR に同期ク ロ ッ ク を供給し ます。 PHASER_OUT は、 それぞれの<br />

218 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 2-28<br />

<br />

<br />

<br />

<br />

<br />

<br />

コアのアーキテクチャ<br />

バイ ト グループのバイ ト クロック (OCLK)、 分周バイト クロック (OCLKDIV)、 遅延バイト ク<br />

ロック (OCLK_DELAYED) を生成します。 バイ ト クロック (OCLK) は<strong>メモリ</strong> <strong>インターフェイス</strong><br />

ク ロ ッ ク と 同じ周波数で、 分周バイ ト クロック (OCLKDIV) は<strong>メモリ</strong> <strong>インターフェイス</strong> クロック<br />

の半分の周波数です。 バイ ト クロック (OCLK) を使用し て、 書き込みデータ (D) とバイ ト書き込<br />

み (BW) 信号を OSERDES から <strong>メモリ</strong>へクロッキングします。 PHASER_OUT から出力される<br />

OCLK_DELAYED はバイ ト クロック (OCLK) に対し て 90° 位相シフ ト し た出力で、 メ モ リ への<br />

書き込みク ロ ッ ク (K/K#) の生成に使用 さ れます。<br />

書き込みキャ リブレーシ ョ ン ロジックは、 K ク ロ ッ ク 出力を含む書き込みデータ バイ ト の左右両<br />

端を検出し、PHASER_OUT の OCLK_DELAYED の タ ッ プ位置を調整し ます。最終的にその タ ッ<br />

プ位置を可能な限 り 中央近 く に調整し ます。 残 り の書き込みデータ バイ トは、 キャ リブレーショ ン<br />

されたバイ ト レーン を基準に し て ス キ ュー調整 さ れます。<br />

OUT_FIFO は書き込みデータ を フ ァ ブ リ ッ ク ドメインから PHASER クロック ド メ イ ンへ変換す<br />

る一時バッファーと して機能し、 I/O ロ ジ ッ ク か ら の出力データ を ク ロ ッ ク で出力し ます。 フ ァ ブ<br />

リック ロジックは、 OUT_FIFO からの FULL フ ラ グ出力に基づき、 周波数が 1/2 のファブリ ッ ク<br />

クロックで OUT_FIFO への書き込みを実行し ます。 OUT_FIFO および OSERDES の操作に必要<br />

なクロックは PHASER_OUT か ら供給 さ れます。<br />

図 2-28 に、 PHASER_OUT を使用した書き込みパスのクロ ッキングの詳細を示します。<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 2-28 : 書き込みパス<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 219<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 2-29<br />

<br />

<br />

<br />

<br />

<br />

<br />

出力パス<br />

図 2-29 に、 PHASER_OUT を使用したア ド レス/制御の ク ロ ッ キ ン グの詳細を示し ます。<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 2-29 : アドレス パス<br />

アドレス/コ マン ド および書き込みデータはユーザー バックエンドから供給されるため、QDR PHY<br />

はこれらの信号をファブリ ック ドメインから内部 PHASER クロック ドメインへ転送した後、<br />

OSERDES から <strong>メモリ</strong>へ与えます。 OUT_FIFO は主にデザイ ンにおけ る ド メ イ ン転送エレ メ ン ト<br />

として使用されるため、 このライト イネーブルおよびリード イネーブル信号は常に有効にし てお<br />

く 必要があ り ます。 この要件を満たすために使用されているのが PHY 制御ブ ロ ッ ク です。<br />

PHY 制御ブ ロ ッ ク<br />

QDR PHY は、OUT_FIFO および PHASER_OUT_PHY との<strong>インターフェイス</strong>に PHY 制御ブ ロ ッ<br />

クを使用します。OUT_FIFO の状態が EMPTY に近づ く と (電圧 と 温度の変動に よ って WRCLK<br />

と RDCLK が OUT_FIFO でどの程度揃え られるかに よ って) OUT_FIFO がス ト ールする可能性が<br />

あります。 このため、PHY 制御ブ ロ ッ ク を使用し て 1 つ以上の OUT_FIFO が EMPTY に近い状<br />

態にな る こ と のない よ う に制御し ます。 PHY 制御ブ ロ ッ ク は、 OUT_FIFO がなるべく FULL に近<br />

い状態で動作する よ う に し ます。<br />

初期化する には、 次の手順に従います。<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

220 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


コアのアーキテクチャ<br />

1. Phy_control_Ready がアサート された後、PHY_CONTROL の pc_phy_counters に十分大き な<br />

遅延の値をプ ロ グ ラ ミ ン グ し ます。 制御ワー ド のフ ォーマ ッ ト を図 2-29 と 図 2-30 に示し ま<br />

す。<br />

ビット 35:32 31 30 29:25 24:23 22:17 16:15 14:12 11:8 7:3 2 1 0<br />

フィールド AO1 Major<br />

OP<br />

Minor<br />

OP<br />

Event<br />

Delay<br />

Seq<br />

Data<br />

Offset<br />

IndexHi<br />

(Rank)<br />

遅延カ ウ ン ターを使用し て PHY 制御ブ ロ ッ ク が PHY 制御ワー ド FIFO から次のコマンドを<br />

フェッチするのを遅らせ、その間に PHY 制御ワー ド FIFO が FULL になる よ う にし ます。PHY 制<br />

御ワード FIFO が空にな る と PHY_CONTROL がス トールし、 その結果 OUT_FIFO のリード イ<br />

ネーブル信号を常時アサートできなくなるため、 この FIFO は EMPTY にならないよ う にし ます。<br />

OUT_FIFO は ASYNC_MODE と 4x4 モード で使用し ます。<br />

PHY 制御ワー ド には次の値を割 り 当て ます。<br />

IndexLo<br />

(Bank)<br />

図 2-29 : 制御ワー ド のフ ォーマ ッ ト<br />

• 制御ワー ド [31:30] は 01 に設定し ます。<br />

• 制御ワー ド [29:25] は 5'b11111 に設定し、 pc_phy_Counters に十分に大き な遅延値をプ ロ グ<br />

ラムします。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 221<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

AO0<br />

Command<br />

Offset<br />

MajorOP MinorOP EventDelay IndexHi IndexLo レジスタ<br />

0-REGPRE 0 - REG Register Data[4:0] IndexHi[16] =<br />

Register Data[5]<br />

IndexHi[15] =<br />

Register Addr[3]<br />

Register Address<br />

Bits [2:0]<br />

Non-<br />

Data<br />

4'b0000 - 4'b0011 : 予約<br />

4'b0100 : CTLCORR<br />

4'b0101 : RRDCNTR<br />

4'b0110 : REF2ACT<br />

4'b0111 : TFAW<br />

4'b1000 : A2ARD<br />

4'b1001 : A2AWR<br />

4'b1010 : PRE2ACT<br />

4'b1011 : ACT2PRE<br />

4'b1100 : RDA2ACT<br />

4'b1101 : RD2PRE<br />

4'b1110 : WRA2ACT<br />

4'b1111 : WR2PRE<br />

Read Data<br />

1 - PRE 5'b000xx - STALL DC DC STALL オペレーシ ョ ンは、 pc_<br />

5'b010xx - REF<br />

5'b100xx - PREBANK<br />

ランク<br />

ランク<br />

DC<br />

バンク<br />

phy_counters からシーケンス制<br />

御用ス テー ト マシンへの Ready<br />

信号の発行を遅らせます。<br />

5'b110xx - PREALL ランク DC<br />

その他 - NOP DC DC<br />

1-ACTRDWR ACT 29:28 : ACT Slot<br />

27 : AP<br />

26:25 : RDWR Slot<br />

ランク バンク<br />

図 2-29 : 制御ワー ド のデコー ド


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

プリ FIFO<br />

読み出しパス<br />

• 制御ワー ド [2] をアサートすると Non-Data コマンドが発行されます。<br />

• Command Offset と Data Offset は 0 に設定し ます。<br />

• PHY 制御ワー ド FIFO (phy_ctl_fifo) が FULL の場合を除き、 Phy_ctl_wr は 1 に設定し ます。<br />

2. OUT_FIFO にエン ト リ (コマンド/ア ド レ スおよび書き込みデータ) を書き込みます。 これらの<br />

エン ト リは FULL 状態に達する まで NOP です。<br />

3. 9 回の書き込みによ って FULL フラグが High になる と、 FULL フラグがディアサート される<br />

まで FIFO への書き込みはすべて停止し ます (手順 4)。<br />

4. その後、 PHY_CONTROL が (十分に大き い遅延が経過後) OUT_FIFO の RDENABLE をア<br />

サー ト し ます。<br />

5. 読み出し が開始する と 、 FULL フラグがディアサート されます。<br />

6. FULL フラグのディアサートから 2 クロック サイクル後に OUT_FIFO への書き込みが再開し<br />

ます。PHY 制御ブ ロ ッ ク へのデータ コマンドの送信を続けます。制御ワード [2:0] を 001 に設<br />

定します。<br />

7. 以上の手順に よ り 、 WRENABLE と RDENABLE はどちら も常時アサート されます。<br />

OUT_FIFO が ALMOST_FULL 状態に近づ く と 、 電圧 と 温度の変動に よ って wr/rd クロック位相<br />

が変化し、 OUT_FIFO が一時的に FULL の状態にな る可能性があ り ます。 低レ イ テンシのプ リ<br />

FIFO を使用してユーザーからのコマン ド要求/書き込みデータ を格納し、 OUT_FIFO が実際に<br />

FULL にな る と 信号を格納し ます。<br />

OSERDES ブロックはすべての I/O にあ り、 メモ リ デバイ ス と の通信に必要な ク ロ ッ ク、 ア ド レ<br />

ス、 データ、 および制御信号の生成を簡潔にする役割を果た し ます。 OSERDES のフローでは 2 つ<br />

の異な る入力 ク ロ ッ ク を使用し て こ の機能を実現し ます。 データ入力ポー ト D1/D2 または D3/D4<br />

のデータは CLKDIV 入力ポー ト に供給 さ れる ク ロ ッ ク (こ の場合は clk) で入力され、 パラ レル-シ<br />

リ アル変換ブ ロ ッ ク を通過し ます。 PHY から <strong>メモリ</strong> デバイ スへの出力はすべて OSERDES を使用<br />

し て駆動し ます。 OSERDES か ら出力さ れた信号はすべて、 生成し た K/K# クロックに対して中央<br />

に揃え る必要があ り ます。 こ のため、 OSERDES と PHASER_OUT ブ ロ ッ ク を組み合わせて使用<br />

する こ と で こ のア ラ イ メ ン ト を実現し ています。 ア ド レ スおよび制御信号を駆動する出力 ク ロ ッ ク<br />

は、 出力信号が メ モ リ 側で K/K# ク ロ ッ ク に対し て中央に位置する よ う にシフ ト さ れます。<br />

読み出し パスは メ モ リ か ら供給 さ れた読み出し ク ロ ッ ク を使用し てデータ キャプチャを実行する<br />

と共に、 読み出しクロックをデータ ウィンドウの中央に位置させてデータ キャプチャ時に十分な<br />

マージン を確保する役割を果た し ます。 読み出し を実行する前には、 キ ャ リ ブレーシ ョ ンが必要で<br />

す。 キ ャ リ ブレーシ ョ ンは読み出しパスの主要な機能であ り 、 ユーザー <strong>インターフェイス</strong>が<strong>メモリ</strong><br />

に対する ト ラ ンザ ク シ ョ ン を開始する前に実行する必要があ り ます。<br />

データ キャプチャ<br />

図 2-30 に、 読み出し ク ロ ッ ク と 読み出しデータ が <strong>FPGA</strong> に入力されてからユーザーに到達する ま<br />

でのパスの概略ブ ロ ッ ク 図を示し ます。 読み出し ク ロ ッ ク は ILOGIC をそのまま通過し、 マルチ領<br />

域 BUFMR を経由して各バイ ト グループの PHASER に入力されます。 BUFMR の出力は直後に<br />

ある PHASER の PHASEREFCLK 入力だけでな く、 その上下に位置するバン ク で利用可能な<br />

PHASER の PHASEREFCLK 入力も駆動で き ます。 次に、 ISERDES ブロックで PHASER によっ<br />

て生成したバイ ト グループ クロック (ICLK、 OCLK、 ICLKDIV) を用いて、 バイ ト グループ内の<br />

読み出しデータ (Q) を キ ャ プチャ し ます。 キ ャ リ ブレーシ ョ ン ロジックは、 PHASER によって提<br />

222 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 2-30<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

コアのアーキテクチャ<br />

供される細精度の遅延タップをインク リ メン ト してバイ ト グループ ク ロ ッ ク を読み出しデータ<br />

ウ ィ ン ド ウ の中央に揃え、 最大限のデータ キャプチャ マージンを確保し ます。<br />

各バイ ト グループ の IN_FIFO (図 2-30) は、それぞれのバイ ト グループの ISERDES でキャプチャ<br />

した各 Q ビッ トから 4 ビッ ト データ を受信し、 ス ト レージ ア レ イ に書き込みます。 PHASER_IN<br />

で生成した周波数が 1/2 のバイ ト グループ クロック (ICLKDIV) は、 ISERDES のデータ キャプ<br />

チャ のほか、 キ ャ プチャ し た読み出しデータ を IN_FIFO に書き込む際に も使用し ます。 IN_FIFO<br />

に対する ラ イ ト イネーブル信号は常にアサート され、 データを連続して書き込むことができます。<br />

IN_FIFO でフラグがアサート される と IN_FIFO からのデータ フローがストールしてしまう可能<br />

性があ り ますが、その場合で も IN_FIFO の受信側では浅い同期 post_fifo を使用しているため、キャ<br />

プチャ したデータは <strong>FPGA</strong> ロ ジ ッ ク か ら連続し て読み出す こ と がで き ます。 ま た、 キ ャ リ ブレー<br />

シ ョ ンに よ り 、読み出しデータ を周波数が 1/2 のファブリ ッ ク クロックの立ち上がりエッジに揃え<br />

ると共に、すべてのバイト グループか ら の読み出しデータ の遅延が同じ にな る よ う に し ます。 実際<br />

のキャ リ ブレーシ ョ ンおよびアラ イ メ ン ト ロジックの詳細は、 「キャ リ ブレーシ ョ ン」 で説明し ま<br />

す。<br />

<br />

<br />

<br />

<br />

キャリブレーショ ン<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 2-30 : 読み出し デー タパス<br />

キャ リブレーション ロ ジ ッ ク は、 ク ロ ッ ク がデータ有効ウ ィ ン ド ウ の中心に揃 う よ う に、 読み出し<br />

ク ロ ッ ク および読み出しデータ に遅延を与え ます。 ク ロ ッ ク のセン タ リ ン グには、 ク ロ ッ ク に対し<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 223<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

て非常に細精度の遅延タ ッ プを与え る こ と ので き る PHASER を使用し ます。 PHASER_IN の各遅<br />

延タ ップは、 データ周期の 1/64 ずつ ク ロ ッ ク に対し て イ ン ク リ メ ン ト し ます。<br />

<strong>メモリ</strong> デバイ スか ら のエ コー ク ロ ッ クが安定する と、 キ ャ リ ブレーシ ョ ンが開始し ます。 エコー<br />

ク ロ ッ ク が安定する までの時間は メ モ リ ベンダーによって異なるため、 コアの CLK_STABLE パ<br />

ラ メ ーターで指定する必要があ り ます。 安定する までは、 すべての読み出しパス ロジックがリセッ<br />

ト状態となります。 キャリブレーションは次の 2 段階で実行さ れます。<br />

1. Q を基準に し た読み出し ク ロ ッ ク のキ ャ リ ブレーシ ョ ン<br />

2. データ アライメントの実行と Valid 信号の生成<br />

読み出し ク ロ ッ ク と デー タのキャ リ ブ レーシ ョ ン<br />

各バイ ト グループ内の PHASER_IN/PHASER_OUT ク ロ ッ ク は、対応するバイ ト グループの読み<br />

出しデータ (Q) のキ ャ プチャに使用するすべての ISERDES をクロッキングします。 ICLKDIV も<br />

読み出しデータ IN_FIFO の書き込み ク ロ ッ ク と し て使用し ます。1 つの PHASER_IN ブロックは、<br />

12 の I/O からなる 1 つのグループに関連付け られています。 7 シ リーズ <strong>FPGA</strong> の各 I/O バンクに<br />

は 4 つの PHASER_IN ブロックがあるため、 1 つのバン ク に 4 つの読み出しデータ バイ ト を置く<br />

ことができます。<br />

イ ン プ リ メ ンテーシ ョ ンの詳細<br />

リード レベ リ ン グの こ の工程では、1 バイ ト ずつ読み出し ク ロ ッ ク をそのバイ ト グループの対応す<br />

る読み出しデータの中央に揃えます。 この工程では最初に特定の QDRII+ SRAM アドレス位置に<br />

対して決まったデータ パターン を使用し た書き込みコ マン ド を発行し ます。 こ の書き込みコ マン ド<br />

の後、 連続し た読み出し コ マン ド を発行し、 書き込み先 と 同じ ア ド レ ス位置か ら連続し てデータ を<br />

読み出し ます。<br />

キャ リブレーション ロジックは IN_FIFO か らデータ を読み出し、 比較する ために記録し ておき ま<br />

す。 こ の ロ ジ ッ ク は読み出し たデータ パターンのシーケ ン ス を確認し、 ク ロ ッ ク と データ が揃って<br />

い る かど う かを判断し ます。細精度の遅延ラ イ ンで タ ッ プが 0 の場合における キ ャプチャ クロック<br />

とデータ ウ ィ ン ド ウ の最初の位置関係はわかっていません。 アルゴ リ ズムは、 IDELAY エレ メン<br />

ト を介して読み出しデータに遅延を与える こ と で、 ク ロ ッ クの立ち上が り および立ち下 り エッ ジが<br />

対応するデータ ウ ィ ン ド ウ の左端に揃 う よ う に し ます。<br />

次に、 PHASER タ ッ プを使用し て ク ロ ッ ク を遅延させ、 対応するデータ ウィンドウの中央に位置<br />

するよ うにします。 PHASER_TAP の精度は FREQ_REF_CLK 周期によ って決ま り 、 1 タップは<br />

(FREQ_REFCLK_PERIOD/2)/64ps と な り ます。 周波数が 400MHz 以上の メ モ リ インターフェイ<br />

スの場合、 最大値の 64 PHASER タ ッ プを使用する と 遅延は 1 データ周期、 すなわち 1/2 クロック<br />

周期 と な り ます。 こ れに よ り 、 キ ャ リ ブ レーシ ョ ン ロジックはクロックを正確にデータ ウィンド<br />

ウ の中央に揃え る こ と がで き ます。<br />

周波数が 400MHz 未満の場合は、FREQ_REF_CLK の周波数が MEM_REF_CLK の周波数の 2 倍<br />

であるため、 PHASER か ら得られる最大遅延はデータ周期の 1/2、 すなわちクロック周期の 1/4 と<br />

な り ます。 こ のため周波数が 400MHz 未満では PHASER の遅延タ ッ プを使用し ただけではク ロ ッ<br />

ク をデータ ウ ィ ン ド ウ の中央に正確に揃え る こ と がで き ない場合があ り ます。 し たがって、 こ の よ<br />

う な周波数範囲の と きは IDELAY タップと PHASER タ ッ プに よ るデータ遅延を組み合わせて使<br />

用します。 キャ リブレーシ ョ ン ロジックは、クロックとデータの最初のアライメントに基づいて最<br />

適な遅延を決定し ます。<br />

データ ウ ィ ン ド ウ を検出する には、同じ タ ッ プ値で複数サ イ ク ルにわたってデータ を読み出し て平<br />

均を求める アルゴ リ ズム を使用し ます。サンプ リ ング サイクル数は 214 に設定さ れています。平均<br />

化以外に も、読み出し キ ャ プチ ャ ク ロ ッ ク が不安定なジ ッ ター領域に位置し てい る かど う かカ ウ ン<br />

ターを使用して追跡します。 カウンター値が 3 の場合は、 タ ッ プを 3 回インク リ メン ト してもサン<br />

224 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


コアのカスタマイズ<br />

コアのカスタマイズ<br />

プル し たデータ値が変わ ら なかった こ と を意味し てお り 、読み出し キ ャ プチャ ク ロ ッ ク が安定領域<br />

にあ る と 考え られます。 直前の値 と 異な る値が検出さ れる と 、 カ ウ ン ター値は 0 にリセットされま<br />

す。 次に、 データ不一致が検出 さ れる まで PHASER_IN および PHASER_OUT ブ ロ ッ ク の細精度<br />

の位相シフ ト 遅延ラ イ ンを 1 タ ッ プずつイ ン ク リ メ ン ト し ます。所定の安定時間の後、IN_FIFO か<br />

ら読み出し たデータ を直前の タ ッ プ値で記録し たデータ と 比較し ます。 こ の比較を、 データ不一致<br />

が検出さ れる まで、 すなわち有効なデータ ウ ィ ン ド ウ のエ ッ ジが検出さ れる まで繰 り 返し ます。 安<br />

定したカウンター値が定数 3 になったと きの PHASER の細精度の位相シフ ト タップの数が有効<br />

ウ ィ ン ド ウ です。 こ のアルゴ リ ズムに よ り 、 不安定なジ ッ ター領域で有効エ ッ ジを誤検出する可能<br />

性が抑え られます。<br />

データ アライメント と Valid 信号の生成<br />

キャ リブレーションの第 2 工程 と し て こ こ では次を実行し ます。<br />

• すべての読み出しバイ ト グループか ら の読み出しデータ を ISERDES の CLKDIV キャプチャ<br />

クロックの立ち上がりエッジに揃える。<br />

• 固定レ イ テンシ モードのレイテンシを設定する。<br />

• 幅の狭い メ モ リ を接続し て幅の広い メ モ リ を構築する場合は、 各 メ モ リ のレ イ テンシを一致さ<br />

せる。<br />

• 決定し た レ イ テンシを読み出し Valid 生成ロ ジ ッ ク に送信する。<br />

読み出しデータ キャプチャ クロックが中央に揃うと、 キャリブレーション ロジックは既知のデー<br />

タ パターンを QDRII+ メ モ リ に書き込み、 こ の メ モ リ か ら連続し た読み出し を実行し ます。 こ れに<br />

より、PHASER_IN の ICLKDIV 出力の立ち上が り エ ッ ジ ま たは立ち下が り エ ッ ジに揃った状態で<br />

データ が読み出 さ れる かど う かを確認し ます。 バイ ト グループからのキャプチャ データ が立ち下<br />

が り エッジに揃っている場合、 PHASER_IN への EDGE_ADV 入力 (ICLKDIV 出力を高速 ク ロ ッ<br />

クの 1 サイクル分シフ ト) を使用して立ち上が り エッ ジに揃えます。<br />

次に、 ク ラ イ アン ト イ ン ターフ ェ イ スのデータに関連付けた Valid 信号を生成し ます。 こ のキ ャ リ<br />

ブレーシ ョ ン工程では、 既知のデータ パターンを 1 回 メ モ リ に書き込み、 こ れを読み出し ます。 そ<br />

し て、 期待さ れたデータ が返さ れる までのサ イ ク ル数を読み出し ロ ジ ッ ク でカ ウ ン ト し ます。 こ の<br />

工程の基本的な フ ローは次の と お り です。<br />

1. 各<strong>メモリ</strong> デバイ スで読み出しデータ が到達する までのサ イ ク ル数を カ ウ ン ト する。<br />

2. 固定レ イ テンシ と し て使用する値を決定する。 こ の値は PHY_LATENCY パラ メーターでユー<br />

ザーが指定する か、 ま たはすべての メ モ リ デバイ スにおけ る最大レ イ テンシに設定し ます。<br />

3. 読み出し Valid 信号の生成を キ ャ リ ブレーシ ョ ンする。上の手順で決定し た値を使用し、読み出<br />

し Valid 信号に遅延を与えてユーザーの読み出しデータ に揃え る。<br />

4. cal_done をアサートする。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> の QDRII+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リューションは、カスタマイズす<br />

ることで複数のコンフィギュレーションをサポートします。各コンフィギュレーションは、 コアの<br />

最上位の Verilog パラ メーターで定義します。 表 2-13 に、 これらのパラ メ ーターを ま と めます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 225<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 2-13 : 7 <strong>シリーズ</strong> <strong>FPGA</strong> の QDRII+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>で<br />

コンフィギュレーション可能なパラメーター<br />

パラ メーター 値 説明<br />

MEM_TYPE QDR2PLUS <strong>メモリ</strong>のアドレス バス幅です。<br />

CLK_PERIOD <strong>メモリ</strong>のクロック周期 (ps) です。<br />

BURST_LEN 4 メ モ リ のデータ バース ト 長です。<br />

DATA_WIDTH メ モ リ のデータ バス幅で、MIG ツールで設定し ます。サポー ト さ<br />

れる最大値は 36 です。<br />

BW_WIDTH 必ず DATA_WIDTH/9 に設定し ます。<br />

NUM_DEVICES 使用する メ モ リ デバイ スの数です。<br />

MEM_RD_LATENCY 2.0<br />

2.5<br />

使用する メ モ リ デバイ スの読み出し レ イ テンシを メ モ リ クロッ<br />

ク サ イ ク ル数で指定し ます。メ モ リ ベンダー提供のデータ シー ト<br />

に記載の値を使用し て く だ さ い。<br />

FIXED_LATENCY_MODE 0、 1 <strong>メモリ</strong>からクライアント イ ン ターフ ェ イ スへの読み出し応答に、<br />

定義済みのレ イ テンシの値を使用する かど う かを示し ます。 0 の<br />

みをサポー ト し、 こ の値に指定する と 、 設定可能な レ イ テンシの<br />

最小値が使用さ れます。<br />

CPT_CLK_CQ_ONLY TRUE <strong>メモリ</strong>から供給される読み出しクロックの 1 つ (立ち上が り ク<br />

ロック) のみを使用してデータをキャプチャする こ と を示します。<br />

PHY_LATENCY 読み出しコマンドを発行してから読み出しデータがク ライアン<br />

ト <strong>インターフェイス</strong>に返されるまで PHY が待機する レ イ テンシ<br />

を示します。<br />

CLK_STABLE ( <strong>メモリ</strong> ベンダーの<br />

データ シー ト 参照)<br />

エコー ク ロ ッ ク が安定する までのサ イ ク ル数です。<br />

IODELAY_GRP デザイ ンで複数の IP コ アを使用する場合のみの IODELAY_<br />

CTRL の特別な名前です。<br />

REFCLK_FREQ 200.0<br />

300.0<br />

IDELAYCTRL の基準 ク ロ ッ ク 周波数です。<br />

RST_ACT_LOW 0、 1 アクティブ Low またはアクティブ High リセットです。<br />

IBUF_LPWR_MODE ON<br />

OFF<br />

IODELAY_HP_MODE ON<br />

OFF<br />

入力バ ッ フ ァ ーの低消費電力モー ド の有効ま たは無効を指定し<br />

ます。<br />

IODELAY プ リ ミ テ ィ ブの高性能モー ド の有効ま たは無効を指<br />

定します。OFF にする と 、IODELAY は低消費電力モー ド で動作<br />

する ため性能が低下し ます。<br />

226 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 2-13 : 7 <strong>シリーズ</strong> <strong>FPGA</strong> の QDRII+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>で<br />

コンフィギュレーション可能なパラメーター (続き)<br />

パラ メーター 値 説明<br />

SYSCLK_TYPE DIFFERENTIAL<br />

SINGLE_ENDED<br />

NO_BUFFER<br />

REFCLK_TYPE DIFFERENTIAL<br />

SINGLE_ENDED<br />

NO_BUFFER<br />

USE_SYSTEM_CLOCK<br />

DIFF_TERM TRUE<br />

FALSE<br />

CLKIN_PERIOD – 入力 ク ロ ッ ク 周期です。<br />

コアのカスタマイズ<br />

システムがシングルエンド システム ク ロ ッ ク を使用する、差動シ<br />

ステム ク ロ ッ ク を使用する、 ま たは内部 ク ロ ッ ク で駆動 さ れる (<br />

バッファーなし) かを示します。 選択した CLK_TYPE の設定に<br />

基づいて、 ク ロ ッ ク を適切な入力ポー ト に配置する必要があ り ま<br />

す。差動 ク ロ ッ ク の場合は sys_clk_p/sys_clk_n を、シングルエン<br />

ド クロックの場合は sys_clk_i を使用し ます。NO_BUFFER を選<br />

択し た場合、 ポー ト リ ス ト に表示さ れる sys_clk_i は内部ク ロ ッ<br />

ク で駆動する必要があ り ます。<br />

シ ス テムがシン グルエン ド 基準 ク ロ ッ ク 、 差動基準 ク ロ ッ ク を使<br />

用するか、内部クロッ クによって駆動されるか (バッファーなし)、<br />

またはシステム ク ロ ッ ク 入力にのみ接続で き る か (システム ク<br />

ロックを使用) を示します。 選択した CLK_TYPE の設定に基づ<br />

いて、 ク ロ ッ ク を適切な入力ポー ト に配置する必要があ り ます。<br />

差動 ク ロ ッ ク の場合は clk_ref_p/clk_ref_n を、シングルエン ド ク<br />

ロ ッ ク の場合は clk_ref_i を使用し ます。 NO_BUFFER を選択し<br />

た場合、 ポー ト リ ス ト に表示 さ れる clk_ref_i は内部ク ロ ッ ク で<br />

駆動する必要があ り ます。 USE_SYSTEM_CLOCK を選択した場<br />

合、clk_ref_i はユーザー デザ イ ンの最上位モジ ュールでシ ス テム<br />

クロックに接続されます。<br />

システム ク ロ ッ ク 入力に差動終端が必要かど う かを示し ます。<br />

CLKFBOUT_MULT – PLL の VCO (電圧制御オシ レーター) 乗算器です。動作周波数に<br />

基づいて MIG ツールで設定し ます。<br />

CLKOUT0_DIVIDE、<br />

CLKOUT1_DIVIDE、<br />

CLKOUT2_DIVIDE、<br />

CLKOUT3_DIVIDE<br />

– PLL 出力用の VCO 出力分周器です。動作周波数に基づいて MIG<br />

ツールで設定し ます。<br />

CLKOUT0_PHASE – PLL 出力 の CLKOUT0 の位相です。メ モ リ <strong>インターフェイス</strong> ピ<br />

ンに選択し たバン ク および動作周波数に基づいて MIG で設定し<br />

ます。<br />

DIVCLK_DIVIDE – PLLE2 の VCO 分周器です。 動作周波数に基づいて MIG ツール<br />

で設定し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 227<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 2-13 : 7 <strong>シリーズ</strong> <strong>FPGA</strong> の QDRII+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>で<br />

コンフィギュレーション可能なパラメーター (続き)<br />

パラ メーター 値 説明<br />

SIM_BYPASS_INIT_CAL SKIP<br />

FAST<br />

OFF<br />

シミュレーションを高速に行うためのシミュレーション専用パ<br />

ラメーターです。<br />

DEBUG_PORT ON、 OFF デバ ッ グ ポー ト を有効にする と 、ChipScope Analyzer の VIO (仮<br />

想 I/O) が使用可能にな り ます。 こ れに よ り 、物理層の タ ッ プ設定<br />

を VIO での選択に基づいて変更で き ます。論理シ ミ ュ レーシ ョ ン<br />

ではデバッ グ モード は不要なため、sim フォルダーの sim_tb_top<br />

モジュールでは必ず OFF に設定し ます。<br />

表 2-14 に示し たパラ メ ーターは、 選択し たピン配置に基づいて MIG ツールがセッ ト アップしま<br />

す。 ピ ン配置を変更する場合は、MIG ツールを再実行し てパ ラ メ ーターを適切に設定する こ と を推<br />

奨します。詳細は、231 ページの 「ピ ン配置の要件」 を参照し て く だ さ い。 ピ ン配置のパ ラ メ ーター<br />

設定が正し く ない と 、 シ ミ ュ レーシ ョ ンが正し く 動作し ない、 デザイ ンの配線ができ ない、 タ イ ミ<br />

ン グが満た さ れない、 な どの結果を招 く こ と があ り ます。 こ れ ら のパ ラ メ ーターで物理層をセ ッ ト<br />

ア ッ プ し、 物理層 と の間に必要な信号すべての配線が行われます。 パ ラ メ ーターは、 選択し たデー<br />

タ書き込み、 データ読み出し、 ア ド レ ス/制御バイ ト グループに基づいて計算されます。 選択し た<br />

システム信号 (システム クロック、基準クロック、 ステータス信号) は考慮し ません。<br />

表 2-14 : QDRII+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンのピ ン配置パラ メ ー タ ー<br />

パラ メ ー タ ー 内容 例<br />

BYTE_LANES_B0、<br />

BYTE_LANES_B1、<br />

BYTE_LANES_B2<br />

DATA_CTL_B0、<br />

DATA_CTL_B1、<br />

DATA_CTL_B2<br />

PHY_0_BITLANES、<br />

PHY_1_BITLANES、<br />

PHY_2_BITLANES<br />

I/O バン ク で使用するバイ ト レーンを<br />

定義し ます。 ビ ッ ト 位置が 1 の場合は<br />

バイ ト レーンを使用し、 0 の場合は使<br />

用しません。<br />

I/O バンクにおけるバイ ト レーンの使<br />

用モード を定義し ます。 ビ ッ ト 位置が<br />

「1」の場合はバイ ト レーン をデータ に、<br />

「0」 の場合はア ド レ ス/制御に使用し ま<br />

す。<br />

各バイ ト レーンにつき 12 ビッ トのパ<br />

ラ メ ーターを使用し、必要な PHY の生<br />

成に使用する I/O 位置を決定し ます。<br />

このパラ メーターはバンクごとに存在<br />

し ま す。 CQ_P/CQ_N、 K_P/K_N、<br />

QVLD、DLL_OFF_N ピンを除き、デー<br />

タ書き込み、データ読み出し、ア ド レ ス<br />

/制御のすべてのピ ンがパ ラ メ ーター生<br />

成の際に考慮されます。<br />

ビ ッ ト の並びは MSB から LSB に向かって T0、 T1、<br />

T2、 T3 バイ ト グループの順です。<br />

4'b1101 : バンクでは 3 つのバイ ト レーンを使用し、<br />

1 つは使用し ません。<br />

4'b1100 : BYTE_LANE の例を基準にする と 、 2 つ<br />

のバイ ト レーン をデータ用に使用し、 1 つをア ド レス<br />

/制御用に使用し ます。<br />

選択し たバン ク のすべてのバイ ト グループを表し ま<br />

す。 1 つのバイ ト レーンの 12 ビットすべてを MSB :<br />

LSB の順に BA98_7654_3210 として表します。たと<br />

えば 1 つのバン ク に対し て、 48'hFFE_FFF_<br />

000_2FF の よ う に指定し ます。<br />

12'hDF6 (12'b1101_1111_0110):ビッ ト ライン<br />

0、 3、 9 は使用せず、 残 り のビ ッ ト を使用し ます。<br />

228 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 2-14 : QDRII+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンのピ ン配置パラ メ ー タ ー (続き)<br />

パラ メ ー タ ー 内容 例<br />

BYTE_GROUP_TYPE_B0、<br />

BYTE_GROUP_TYPE_B1、<br />

BYTE_GROUP_TYPE_B2<br />

各 I/O バンクのバイ ト レーンを<br />

INPUT または OUTPUT として定義し<br />

ます。 ビ ッ ト 位置が 1 の場合はバイ ト<br />

レーンに INPUT ピンが、 0 の場合は<br />

OUTPUT ピンが含まれるこ とを示し<br />

ます。<br />

K_MAP 書き込みクロ ッ ク (K/K#) のバン クお<br />

よびバイ ト レーン位置情報です。 各信<br />

号ペアに 8 ビッ トのパラメーターが用<br />

意されています。<br />

• [7:4] - バンク位置で、 サポート され<br />

る値は 0、 1、 2 です。<br />

• [3:0] - バンク内のバイ ト レーン位<br />

置で、 サポー ト される値は 0、 1、<br />

2、 3 です。<br />

CQ_MAP 読み出し ク ロ ッ ク の (CQ/CQ#) バンクお<br />

よびバイ ト レーン位置情報です。<br />

「K_MAP」 の説明を参照し て く ださい。<br />

コアのカスタマイズ<br />

4'b0110 : 中央 2 つのバイ ト レーンに INPUT ピンが<br />

含まれ、それ以外のバイ ト レーンに OUTPUT ピンが<br />

含まれます。<br />

最上位のデータ書き込み / データ読み出し ま たはア ド<br />

レス/制御バイ ト グループで選択したバン クを、 この<br />

パラ メーターではバンク 0 とします。バンクの番号は<br />

上から順に 0、 1、 2 です。<br />

パラ メーター内では、バイ ト グループ T0、T1、T2、T3<br />

にそれぞれ 3、 2、 1、 0 の番号が付け られます。<br />

48'h00_00_00_00_03_13 : 6 つの書き込み ク<br />

ロック ペア (各クロッ ク ピンに 8 ビッ ト) のパラ メ ー<br />

ターの例です。 こ の場合、 2 つの書き込みク ロ ッ ク ペ<br />

アのみを使用し ます。 パ ラ メ ーターの並びは MSB か<br />

ら LSB の順です (すなわち K[0]/K#[0] はパラ メ ー<br />

ターの最下位 8 ビッ トに該当)。<br />

8'h13 :K/K# をバンク 1、バイ ト レーン 3 に配置し<br />

ます。<br />

8'h20 :K/K# をバンク 2、バイ ト レーン 0 に配置し<br />

ます。<br />

「K_MAP」 の例を参照し て く だ さい。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 229<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 2-14 : QDRII+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンのピ ン配置パラ メ ー タ ー (続き)<br />

パラ メ ー タ ー 内容 例<br />

ADD_MAP アドレスのバンクおよびバイト レーン<br />

位置情報です。各ピ ンに 12 ビッ トのパ<br />

ラ メ ーターが用意さ れています。<br />

• [11:8] - バンク位置で、 サポート さ<br />

れる値は 0、 1、 2 です。<br />

• [7:4] - バンク内のバイ ト レーン位<br />

置で、 サポー ト される値は 0、 1、<br />

2、 3 です。<br />

• [3:0] - バイ ト レーン内のビッ ト位<br />

置で、 サポー ト される値は [0、 1、<br />

2、 ... A、 B] です。<br />

RD_MAP リード イネーブルのバンクおよびバイ<br />

ト レーン位置情報です。「ADD_MAP」<br />

の説明を参照し て く だ さ い。<br />

WR_MAP ライト イネーブルのバンクおよびバイ<br />

ト レーン位置情報です。「ADD_MAP」<br />

の説明を参照し て く だ さ い。<br />

ADDR_CTL_MAP アドレス バイ ト グループのバン クお<br />

よびバイ ト レーン位置情報です。 ア ド<br />

レスには 3 つのバイ ト グループが必要<br />

で、 このパラ メ ーターは 3 つすべての<br />

アドレス バイ ト グループを選択した<br />

バイ ト グループを表し ます。<br />

「K_MAP」 の説明を参照し て く だ さ い。<br />

D0_MAP、 D1_MAP、<br />

D2_MAP、 D3_MAP、<br />

D4_MAP、 D5_MAP、<br />

D6_MAP、 D7_MAP<br />

データ書き込みバス用のバンクよびバ<br />

イト レーンの位置情報です。<br />

「ADD_MAP」 の説明を参照し て く ださ<br />

い。<br />

最上位のデータ書き込み/データ読み出し、ま たはア ド<br />

レス/制御バイ ト グループで選択したバン クを、 この<br />

パラ メーターではバンク 0 とします。バンクの番号は<br />

上から順に 0、 1、 2 です。<br />

パラ メーター内では、バイ ト グループ T0、T1、T2、T3<br />

にそれぞれ 3、2、1、0 の番号が付け られます。バイ ト<br />

グループ内の最下位ピ ン を MAP パラ メーターでは 0<br />

とします。<br />

バイ ト グループ内の最下位ピンを MAP パラ メー<br />

ターでは 0 とします。バイト グループ内のピ ン番号は<br />

最下位ピ ンか ら最上位ピ ンに向かって 0 ~ 9 の番号が<br />

付けられます (DQSCC I/O ピンは含まれない)。 バイ<br />

ト グループの DQSCC_N ピンと DQSCC_P ピンの番<br />

号はそれぞれ A、 B です。<br />

264'h000_000_239_238_237_236_23B_23A_235_23<br />

4_233_232_231_230_229_228_227_226_22B_22A_<br />

225_224 : アドレス幅が 22 ビッ トで各ピンが 12 ビッ<br />

トであることを表します。 この例では、 アドレス幅は<br />

20 ビットです。パラメーターの並びは MSB から LSB<br />

の順です (すなわち SA[0] はパ ラ メ ーターの最下位<br />

12 ビッ トに該当)。<br />

12'h224 : アドレス ピンをロケーション 4 のバン ク 2、<br />

バイ ト レーン 2 に配置し ます。<br />

12'h11A : アドレス ピンをロケーション A のバン ク<br />

1、 バイト レーン 1 に配置し ます。<br />

「ADD_MAP」 の例を参照し て く ださい。<br />

「ADD_MAP」 の例を参照し て く ださい。<br />

「K_MAP」 の例を参照し て く ださ い。<br />

「ADD_MAP」 の例を参照し て く ださい。<br />

230 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 2-14 : QDRII+ SRAM <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンのピ ン配置パラ メ ー タ ー (続き)<br />

パラ メ ー タ ー 内容 例<br />

BW_MAP バ イ ト 書き込み信号のバン ク およびバ<br />

イト レーン位置情報です。<br />

「ADD_MAP」の説明を参照し て く だ さ<br />

い。<br />

Q0_MAP、 Q1_MAP、<br />

Q2_MAP、 Q3_MAP、<br />

Q4_MAP、 Q5_MAP、<br />

Q6_MAP、 Q7_MAP<br />

設計ガ イ ド ラ イ ン<br />

デザイ ンの規則<br />

ト レース長の要件<br />

ピ ン配置の要件<br />

データ読み出し バス用のバン ク よびバ<br />

イト レーンの位置情報です。<br />

「ADD_MAP」の説明を参照し て く だ さ<br />

い。<br />

「ADD_MAP」 の例を参照し て く ださい。<br />

「ADD_MAP」 の例を参照し て く だ さい。<br />

設計ガイ ド ラ イ ン<br />

<strong>メモリ</strong>のタイプ、 <strong>メモリ</strong> デバイ ス、 データ幅は、 選択し た <strong>FPGA</strong>、 <strong>FPGA</strong> のスピード グレード、デ<br />

ザ イ ンの動作周波数に よ って制約を受け ます。 最終的な周波数範囲は、 特性評価の結果に基づいて<br />

決定し ます。<br />

こ こ で説明する ト レース長の要件は、高速動作が必要なアプ リ ケーシ ョ ン を前提 と し ています。ター<br />

ゲッ ト アプ リ ケーシ ョ ンの帯域幅に よ っては要件を緩和で き る場合があ り ます。実効 ト レース長を<br />

決定する際は、パ ッ ケージ遅延を考慮に入れる必要があ り ます。 こ れら の内部遅延は PACE (Pinout<br />

and Area Constraints Editor) を使用して求める こ とができます。 QDR II+ SRAM 信号間の最大電<br />

気的遅延に関する規則は次の と お り です。<br />

• データ バス D のすべてのビ ッ ト と 関連する K/K# ク ロ ッ ク と の電気遅延の最大値は ±15ps と<br />

します。<br />

• すべての Q と 関連する CQ/CQ# と の電気遅延の最大値は ±15ps とします。<br />

• すべてのア ド レ ス/制御信号 と 関連する K/K# と の電気遅延の最大値は ±50ps とします。<br />

• CQ と K ク ロ ッ ク 間に位相関係はあ り ません。 K と D が一致し、 CQ と Q (読み出しデータ)<br />

が一致する必要があ り ます。<br />

ザイ リ ンクス 7 シ リーズ <strong>FPGA</strong> は非常に高性能な メ モ リ <strong>インターフェイス</strong>に対応するよう設計さ<br />

れていますが、 QDRII+ 物理層を使用する際にはい く つかの規則に従 う 必要があ り ます。 ザ イ リ ン<br />

クス 7 <strong>シリーズ</strong> <strong>FPGA</strong> は、 各バイ ト グループに専用のロ ジ ッ ク を備えています。 50 ピンの各バン<br />

クそれぞれに 4 つのバイ ト グループがあ り ます。各バイ ト グループには 1 つの DQS クロック兼用<br />

(CC) I/O ペア と 10 の関連 I/O があ り、このバイ ト グループが 4 つで 1 つの 50 ピン バンクを構成<br />

し ています。 各バン ク にはマルチ領域 ク ロ ッ ク 兼用 (MRCC) I/O ピンのペアが 2 組あ り、 これらは<br />

読み出し ク ロ ッ ク (CQ と CQ#) の配置に使用し ます。<br />

一般的な QDRII+ 書き込みバン ク 構成では、 こ れら 10 個の I/O のうち 9 つを書き込みデータ (D)<br />

に使用し、 残 り の 1 つをバイ ト 書き込み (BW) に使用し ます。 書き込みク ロ ッ ク (K/K#) は、 書き<br />

込みバン ク 内の DQSCCIO ペアの う ち 1 つを使用し ます。読み出しバン ク 内では、読み出しデータ<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 231<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

は 10 個の I/O のうち 9 つに配置され、 QVLD は任意の読み出しデータ バイ ト グループに配置さ<br />

れ、 CQ/CQ# ク ロ ッ ク は読み出しバン ク 内で利用可能な MRCC_P ピンに配置されます。<br />

ザイ リ ンクス 7 <strong>シリーズ</strong> <strong>FPGA</strong> は、高速同期専用の ク ロ ッ ク 配線が I/O バンク内で垂直に配線され<br />

ています。 このため、 QDRII+ <strong>メモリ</strong> イ ン ターフ ェ イ スはバン ク に水平でな く 垂直に配置する必要<br />

があ り ます。 ま た、 高さ は最大で 3 バンク までです。<br />

MIG ツールで生成し た コ アは、 デザ イ ンで最適な ピ ン配置が選択 さ れています。 UCF による手動<br />

での変更は推奨し ませんが、 UCF を変更する必要があ る場合は、 次の規則に従って く だ さ い。<br />

• <strong>メモリ</strong> イ ン ターフ ェ イ スの書き込みデータ バス (D) は 1 つのバン ク に配置し ます。 書き込み<br />

データ バスは、 <strong>FPGA</strong> バイ ト グループ内でバイ ト 単位 (9 ビッ ト幅) で配置する必要があ り ま<br />

す。 ま た、 イ ン ターフ ェ イ スのバイ ト 書き込み (BW) 信号はすべて同じバン ク に配置する必要<br />

があ り ます。<br />

• K/K# ク ロ ッ ク は書き込みデータ バン ク と 同じバン ク に配置し ます。 こ れ ら の ク ロ ッ ク は<br />

•<br />

DQSCCIO ピン ペアに配置し ます。<br />

読み出しデータ バス (Q) は、 <strong>FPGA</strong> バイ ト グループ内でバイ ト 単位 (9 ビッ ト幅) で配置し ま<br />

す。 1 つの メ モ リ コ ンポーネン ト の読み出しデータ バスはすべて、 同じバン ク に配置する こ と<br />

を推奨します。<br />

• 読み出しデータ クロック (CQ および CQ#) は、 読み出しデータ と 同じバン ク ま たはそれに隣<br />

接するバン ク で利用可能な 2 本の MRCC_P または MRCC_N ピンに配置します。 読み出し<br />

データ と 読み出し ク ロ ッ ク は同じバン ク に配置する こ と を推奨し ます。<br />

• アドレス/制御信号はすべて 1 つのバン ク に配置し ます。ア ド レ ス バン ク はデータ書き込み (D)<br />

バン ク の隣に配置し ます。<br />

• dll_off_n 信号は、 メ モ リ <strong>インターフェイス</strong>に使用しているバンク内の空き I/O に自由に配置<br />

できます。<br />

• システム クロック ピ ンは、 データ書き込みバン ク に配置する こ と を推奨し ます。<br />

システム クロック、 PLL の位置および制約<br />

イ ン ターフ ェ イ スのパフ ォーマン ス仕様を満たすには、 メ モ リ にク ロ ッ ク を供給し ているバン クに<br />

PLL が必要です。 ま た、 シ ス テ ム ク ロ ッ ク 入力も こ のバン ク に配置する こ と を強 く 推奨し ます。<br />

MIG ツールは可能な限り これら 2 つの規則に従います。 ただ し例外 と し て、 PLL へのク ロ ッ ク入<br />

力用のピ ンがバン ク にない場合は、 隣のバン ク か ら周波数バ ッ ク ボーン を経由し て PLL にクロッ<br />

クを入力する必要があります。PLL へのシステム クロック入力は、 クロック兼用 I/O から供給す<br />

る必要があ り ます。<br />

システム ク ロ ッ ク入力は、 同じ カ ラ ムにあ る イ ン ターフ ェ イ スにしか使用でき ません。 このク ロ ッ<br />

ク 入力を別のカ ラ ムか ら駆動する こ と はで き ません。 こ れは、 PLL/MMCM およびク ロ ッ ク配線を<br />

追加する こ と にな り 、 ジ ッ ターが大き く な り すぎ る ためです。<br />

PLL か ら の未使用の出力は ク ロ ッ ク 出力 と し て使用で き ます。 こ れ ら の出力のみ、 設定を変更で き<br />

ます。PLL の全体的な動作や使用中の出力に関する設定は変更し ないで く だ さ い。 複数の イ ン ター<br />

フェイスで 1 つの PLL を共有する こ と はで き ません。<br />

PLL パラ メ ーターの条件については、 214 ページの 「 ク ロ ッ キング アーキテクチャ」 を参照して く<br />

ださい。<br />

232 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


コンフィギュレーション<br />

設計ガイ ド ラ イ ン<br />

UCF にはタ イ ミ ング、 ピン、 I/O 規格に関する情報が含まれています。 イ ン ターフ ェ イ スの動作周<br />

波数は sys_clk 制約で設定し ます。 こ の設定は、 MIG の GUI で行います。 こ の制約を変更する場<br />

合は、 ほかの内部パラ メ ーターにも影響が及ぶため、 MIG の GUI を再実行する必要があ り ます。<br />

次に例を示し ます。<br />

NET "sys_clk_p" TNM_NET = TNM_sys_clk;<br />

TIMESPEC "TS_sys_clk" = PERIOD "TNM_sys_clk" 1.875 ns;<br />

clk_ref 制約で IDELAY 基準 ク ロ ッ ク の周波数を設定し ます (通常は 200MHz)。次に例 を 示 し ま す。<br />

NET "clk_ref_p" TNM_NET = TNM_clk_ref;<br />

TIMESPEC "TS_clk_ref" = PERIOD "TNM_clk_ref" 5 ns;<br />

I/O 規格は、 QDRII+ SRAM <strong>インターフェイス</strong>に合わせて LVCMOS15、 HSTL15_I、<br />

HSTL15_I_DCI、 DIFF_HSTL15_I、 DIFF_HSTL15_I_DCI の中か ら適宜設定 さ れます。 シ ス テム<br />

クロック (sys_clk) および I/O 遅延基準 ク ロ ッ ク (clk_ref) には LVDS_25 を使用します。 これらの<br />

規格は、 シ ス テム コ ン フ ィ ギ ュ レーシ ョ ンに合わせて変更可能です。 こ れら の信号は、 シ ス テム接<br />

続のために最上位へ配線さ れます。<br />

• sys_rst :メイン システム リ セ ッ ト 信号です。<br />

• init_calib_complete : 内部キ ャ リ ブレーシ ョ ンが完了し、 イ ン ターフ ェ イ スの使用準備がで き<br />

た こ と を示す信号です。<br />

• tg_compare_error : 読み出しデータ と 書き込みデータ が一致し ない場合にサンプル デザイ ンの<br />

トラフィック ジ ェ ネレーターに よ って生成 さ れる信号です。<br />

これらの信号はすべて LVCMOS25 に設定されていますが、システム デザイ ンに応じ て変更が可能<br />

です。 こ れ ら の信号を生成し て外部ピ ンに出力する のではな く 、 内部で使用する こ と も で き ます。<br />

<strong>インターフェイス</strong>によっては、アドレス/制御およびデータ があ るバン ク の上下いずれかのバン ク に<br />

システム ク ロ ッ ク が必要 と な る こ と があ り ます。 こ の場合、 MIG ツールは UCF に制約を追加し ま<br />

す。 次に例を示し ます。<br />

NET "sys_clk_p" CLOCK_DEDICATED_ROUTE = BACKBONE;<br />

PIN "*/u_infrastructure/plle2_i.CLKIN1" CLOCK_DEDICATED_ROUTE =<br />

BACKBONE;<br />

これは、 MIG ツールで生成し た メ モ リ <strong>インターフェイス</strong> デザ イ ンでのみ使用し て く だ さ い。 配置<br />

配線の実行時に次の よ う な警告が表示さ れますが、 こ の警告は無視し てかまいません。<br />

WARNING:Place:1402 - A clock IOB / PLL clock component pair have been<br />

found that are not placed at an optimal clock IOB / PLL site pair.The<br />

clock IOB component is placed at site .The<br />

corresponding PLL component is<br />

placed at site .The clock IO can use the fast path<br />

between the IOB and the PLL if the IOB is placed on a Clock Capable IOB<br />

site that has dedicated fast path to PLL sites within the same clock<br />

region.You may want to analyze why this problem exists and correct<br />

it.This is normally an ERROR but the CLOCK_DEDICATED_ROUTE constraint<br />

was applied on COMP.PIN allowing your design to<br />

continue.This constraint disables all clock placer rules related to the<br />

specified COMP.PIN.The use of this override is highly discouraged as it<br />

may lead to very poor timing results.It is recommended that this error<br />

condition be corrected in the design.<br />

リソースが限られるため、MIG ツールで生成した メモ リ イ ン ターフ ェ イ ス を含む領域か ら I/O ク<br />

ロッキング バ ッ ク ボーン経由で隣接する領域の CMT ブロックへユーザー クロックを駆動しない<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 233<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

I/O 規格<br />

で く だ さ い。 詳細は、 『7 <strong>シリーズ</strong> <strong>FPGA</strong> クロック リソース ユーザー ガイド』 [参照 18] を参照し<br />

てください。<br />

MIG ツールは選択し たデータ レー ト および電圧入力に基づいて VCCAUX_IO 制約を設定し ます。<br />

生成さ れた UCF には、 必要に応じ て制約が追加されます。 次に例を示し ます。<br />

NET "sys_clk_p" LOC = "Y5" | IOSTANDARD = DIFF_HSTL_I |<br />

VCCAUX_IO = DONTCARE;<br />

NET "sys_clk_n" LOC = "W5" | IOSTANDARD = DIFF_HSTL_I |<br />

VCCAUX_IO = DONTCARE;<br />

詳細は、 『タ イ ミ ン グ クロージャ ユーザー ガイド』 [参照 13] を参照して く ださい。<br />

LVDS および LVDS_25 IO 規格の使用法および必要な回路は、『7 <strong>シリーズ</strong> <strong>FPGA</strong> SelectIO リソー<br />

ス ユーザー ガイド』 [参照 1] を参照して く ださい。<br />

MIG ツールは、 7 <strong>シリーズ</strong> <strong>FPGA</strong> に対する入力ま たは出力に応じ て SelectIO <strong>インターフェイス</strong><br />

規格を選択し、 コ アの UCF を適切に生成し ます。 こ れら の規格は変更し ないで く だ さ い。 表 2-15<br />

に、 ポー ト と 使用さ れる I/O 規格の一覧を示し ます。<br />

表 2-15 : I/O 規格<br />

信号 (1) 方向 I/O 規格<br />

qdr_bw_n 出力 HSTL_I<br />

qdr_cq_p、 qdr_cq_n 入力 HSTL_I_DCI<br />

qdr_d 出力 HSTL_I<br />

qdr_k_p、 qdr_k_n 出力 HSTL_I<br />

qdr_q 入力 HSTL_I_DCI<br />

qdr_r_n 出力 HSTL_I<br />

qdr_sa 出力 HSTL_I<br />

qdr_w_n 出力 HSTL_I<br />

注記 :<br />

1. こ れ ら の信号の動作電圧はすべて 1.5V です。<br />

パフォーマンス仕様を満たすには、 <strong>FPGA</strong> に DCI (HP バンクの場合) または IN_TERM (HR バン<br />

クの場合) が必要です。 MIG ツールで生成したデザインは、 High-Performance バンクでのデータ<br />

読み出し (Q) および読み出し ク ロ ッ ク (CQ_P と CQ_N) に DCI 規格を使用し ます。High-Range バ<br />

ンクでは HSTL_I 規格を使用し、 内部終端 (IN_TERM) 属性は MIG の GUI で選択し ます。<br />

QDRII+ SRAM デザイ ンのデバッ グ<br />

ここでは、<strong>メモリ</strong> イ ン ターフ ェ イ スの設計プ ロ セスで生じ る問題を特定し、 修正する ためのデバ ッ<br />

グ方法を手順を追って説明し ます。<br />

234 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


概要<br />

デバッ グ ツール<br />

QDRII+ SRAM デザイ ンのデバッ グ<br />

Virtex-7 <strong>FPGA</strong> の QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong>では、 <strong>メモリ</strong> <strong>インターフェイス</strong> デザイ ンの複<br />

雑な点が単純になっていますが、 アプ リ ケーシ ョ ン環境はそれぞれに異な るため、 堅牢なデザイ ン<br />

を構築する には適切な配慮が必要です。 シ ミ ュ レーシ ョ ン、適切な合成 と イ ンプ リ メ ンテーシ ョ ン、<br />

PCB レイアウト ガ イ ド ラ イ ンの順守な どの機能検証や、IBIS シ ミ ュ レーシ ョ ンやシグナル インテ<br />

グ リ テ ィ 解析な どのボー ド 検証を注意深 く 実行し て く だ さ い。<br />

こ こ では、 設計プ ロ セ スで生じ る問題を特定し、 修正する ためのデバ ッ グ方法を手順を追って説明<br />

し ます。 特に、 次の内容について詳し く 説明し ます。<br />

• UNISIM シミュレーション モデルを使用し た機能検証<br />

• デザイ ン インプリ メンテーションの検証<br />

• ボード レイアウトの検証<br />

• QDRII+ SRAM 物理層を使用し たボー ド レベル問題のデバッグ<br />

• 一般的なボー ド レベル デバ ッ グ手法<br />

<strong>メモリ</strong> イ ン ターフ ェ イ スの検証時に直面する主な問題 と し ては、 次の 2 つがあ り ます。<br />

• キャ リブレーションが正常に完了しない<br />

• 通常動作時にデータ が破損する<br />

問題はその原因に よ り 、 シ ミ ュ レーシ ョ ン あ る いはハー ド ウ ェ アでのみ発生する場合 と 、 こ れ ら両<br />

方で発生する場合があ り ます。<br />

図 2-31 に、 これら 2 つの一般的な問題をデバ ッ グする際の概略フ ローを示し ます。<br />

X-Ref Target - Figure 2-31<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 2-31 : MIG を利用した Virtex-7 <strong>FPGA</strong> QDRII+ SRAM のデバッ グ フロー図<br />

<strong>メモリ</strong> <strong>インターフェイス</strong> デザイ ンのデバッ グ ツールは数多 く あ り ます。 こ こ では、 状況に応じ て<br />

最適なデバ ッ グ リソースを紹介します。<br />

サンプル デザイ ン<br />

MIG ツールで QDRII+ SRAM デザイ ンを生成する と、 サンプル デザイ ン と ユーザー デザイ ンが<br />

生成さ れます。 サンプル デザ イ ンには、 シ ミ ュ レーシ ョ ンおよびハー ド ウ ェ アで完全に検証済みの<br />

合成可能なテ ス ト ベンチが含まれます。 こ のデザ イ ンは、MIG ツールで生成したデザインの動作を<br />

確認する ために使用で き、 ボー ド 関連の問題を特定する際に も有用です。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 235<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

デバッ グ信号<br />

MIG の [<strong>FPGA</strong> Options] ページには [Debug Signals Control] オプシ ョ ンがあ り ます。 この機能を<br />

有効にする と 、 キ ャ リ ブレーシ ョ ン、 タ ッ プ遅延、 読み出しデータ信号を ChipScope Analyzer で<br />

確認で き ます。 ま た、 デバ ッ グ信号がデザ イ ンの最上位モジ ュールで ChipScope Analyzer の VIO<br />

モジュールにポー ト マップされます。<br />

MIG で [Debug Signals for Memory Controller] オプショ ンを有効にすると、 デバッグ ポー ト を<br />

ChipScope ツールのコア (ILA、 ICON、 VIO) に接続するサンプル デバ ッ グ ロジックがサンプル<br />

デザイ ンの ト ッ プ (example_top) モジ ュールに作成さ れます。 ユーザー デザイ ンの ト ッ プでは、 す<br />

べてのデバッ グ ポー ト 信号がい く つかのバスにグループ化され、 ポー ト リストに表示されます。<br />

ChipScope ツールのすべてのデバッグ ポー ト が ChipScope ツールの各種コアに接続されている こ<br />

と を確認する には、 リ フ ァ レ ン ス サンプル デザイ ンの ト ッ プ モジュールを確認して ください。 デ<br />

バッグ ポー ト 対応のデザイ ン用にユーザー デザイ ンの ト ッ プ モジュールで生成されるデバッグ<br />

ポー ト は、「qdriip_ila0_data」 、「qdriip_ila0_trig」 、「qdriip_ila1_data」 、「qdriip_ila1_trig」 、<br />

「qdriip_vio2_async_in」、 「qdriip_vio2_sync_out」 です。<br />

ChipScope Pro<br />

ChipScope Pro ツールを使用し、 ロジッ ク アナラ イザー、 バス アナラ イザー、 VIO ソフトウェア<br />

の コ ア をデザ イ ンへ直接組み込みます。 ChipScope Pro ツールではアプ リ ケーシ ョ ンや MIG の信<br />

号をハー ド ウ ェ アでキ ャ プチャする ト リ ガー条件をユーザーが設定で き ます。 キ ャ プチャ し た信号<br />

は、 ChipScope Pro Logic Analyzer で解析でき ます ([参照 8])。<br />

シミュレーションのデバッグ<br />

図 2-32 に、 シ ミ ュ レーシ ョ ンのデバッ グ フローを示します。<br />

X-Ref Target - Figure 2-32<br />

<br />

<br />

<br />

<br />

<br />

図 2-32 : シミュレーションのデバッグ フロー図<br />

サンプル デザイ ンを使用し たシ ミ ュ レーシ ョ ン検証<br />

MIG ツールで生成したサンプル デザイ ンには、 シ ミ ュ レーシ ョ ン テス トベンチ、MIG ツールで選<br />

択した<strong>メモリ</strong>に基づくパラ メーター ファイル、および ModelSim の .do スクリプト ファイルが含<br />

まれます。<br />

QDRII+ <strong>メモリ</strong> モデルは MIG では生成されません。 QDRII+ <strong>メモリ</strong> モデルはユーザーが用意し、<br />

シ ミ ュ レーシ ョ ンに追加する必要があ り ます。 こ のサンプル デザ イ ンのシ ミ ュ レーシ ョ ンが正常に<br />

完了する と 、 適切なシ ミ ュ レーシ ョ ン環境であ る こ と が保証 さ れます。<br />

これで、 シミ ュレーショ ン ツールおよびザイ リ ンク ス ライブラリが正しくセットアップされてい<br />

ることになります。 ザイリンクス ラ イ ブ ラ リ の設定方法は、 『コ マン ド ライン ツール ユーザー ガ<br />

イド』 [参照 9] の 「COMPXLIB」 および 『合成/シ ミュレーション デザイ ン ガイド』 [参照 10] を<br />

参照し て く だ さ い。 シ ミ ュ レーシ ョ ン ツールのサポー ト については、 『7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> イ<br />

ンターフェイス ソ リューション データ シー ト 』 [参照 11] を参照して く ださい。<br />

236 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


QDRII+ SRAM デザイ ンのデバッ グ<br />

サンプル デザ イ ンのシ ミ ュ レーシ ョ ンでは、 メ モ リ 初期化を完了し た後、 テ ス ト ベンチのス テ ィ<br />

ミ ュ ラ スに対応し て ト ラ フ ィ ッ ク を実行し ます。 メ モ リ の初期化およびキ ャ リ ブレーシ ョ ンが完了<br />

する と、cal_done 信号がアサー ト さ れます。 こ の信号がアサー ト さ れる と ト ラ フ ィ ッ ク ジェネレー<br />

ターに制御が移 り 、 パ ラ メ ーター値に基づいて読み出しおよび書き込みを開始し ます。<br />

表 2-16 に、 シ ミ ュ レーシ ョ ンで使用する信号およびパ ラ メ ーターを示し ます。<br />

表 2-16 : シミュレーションで使用する信号<br />

信号名 使用法<br />

tg_compare_error UI から書き込まれたデータと UI の読み出し時に受信し たデータが一致<br />

していないことを示します。この信号はサンプル デザイ ンの一部です。1<br />

回のエラーで信号がアサートされ、デザインがリセットされるまでその<br />

状態が続き ます。<br />

tg_cmp_error UI から書き込まれたデータと UI の読み出し時に受信し たデータが一致<br />

していないことを示します。 この信号はサンプル デザイ ンの一部です。<br />

データ の不一致が生じ る ご と にアサー ト さ れます。<br />

app_wr_cmd 書き込みコ マン ド の書き込みア ド レ スおよび書き込みデータ が有効であ<br />

ることを示します。<br />

app_wr_addr 書き込みコ マン ド のア ド レ スです。<br />

app_wr_data 書き込みコ マン ド の書き込みデータ です。<br />

app_wr_bw_n バイ ト 書き込み制御です。<br />

app_rd_cmd 読み出し コ マン ド の読み出し ア ド レ スが有効であ る こ と を示し ます。<br />

app_rd_addr 読み出し コ マン ド のア ド レ スです。<br />

app_rd_data <strong>メモリ</strong> デバイ スか ら返 さ れる読み出しデータ です。<br />

app_rd_valid app_rd_data が有効な間アサー ト さ れる信号です。<br />

メ モ リ の初期化<br />

QDRII+ メ モ リ の初期化に複雑な手順はあ り ません。 ただ し、 Doff_n 信号が メ モ リ ベンダーの規<br />

定どおりにメモ リ に供給されている こ と を確認する必要があ り ます。 MIG ツールで生成した<br />

QDRII+ SRAM <strong>インターフェイス</strong> デザイ ンは、 <strong>FPGA</strong> から Doff_n 信号を駆動し ます。 200μs の待<br />

機時間の後に内部 MMCM がロッ クすると、 Doff_n 信号が High にアサー ト されます。 Doff_n が<br />

アサー ト されてから CLK_STABLE (2048 CQ クロック サイクル) が経過する と 、 メ モ リ への コ マ<br />

ンドが発行されます。<br />

Doff_n 信号を メ モ リ 側で終端し、 <strong>FPGA</strong> から駆動しない<strong>メモリ</strong> デバ イ スの場合、 必要な終端手順<br />

はユーザーが実行する必要があ り ます。<br />

キャリブレーショ ン<br />

キャ リブレーションは、リード レベリ ング、書き込みキャ リ ブレーシ ョ ン、 リード イネーブル キャ<br />

リブレーションで構成されます。これは 2 段階で実行し ます。 キ ャ リ ブレーシ ョ ン プロセスが正し<br />

く 完了する と 、 cal_done 信号がアサー ト さ れます。 詳細は、 215 ページの 「物理イ ン ターフ ェ イ ス」<br />

を参照して く ださい。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 237<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 2-33<br />

X-Ref Target - Figure 2-34<br />

最初の工程では、 ビ ッ ト 単位の リ ー ド レベリ ング キ ャ リ ブレーシ ョ ン を実行し ます。 こ の工程で<br />

使用するデータ パターンは 00ff00ff00ffff00 です。 このデータ パターンをまず<strong>メモリ</strong>に書き込みま<br />

す (図 2-33)。<br />

図 2-33 : 第 1 工程の読み出し キャ リ ブ レーシ ョ ンにおける書き込み<br />

こ のパターン を、 ビ ッ ト 単位のキ ャ リ ブレーシ ョ ン実行中に連続し て読み出し ます (図 2-34)。<br />

図 2-34 : 第 1 工程の読み出し キャ リ ブ レーシ ョ ンにおける読み出し<br />

第 2 工程では リ ー ド イ ネーブル信号のキ ャ リ ブレーシ ョ ン を実行し ます。こ の工程で使用するデー<br />

タ パターンは、「..55..AA」 です。 こ のデータ パターン を メ モ リ に書き込んでか ら読み出し、 リ ー<br />

ド イネーブル信号のキ ャ リ ブレーシ ョ ンを実行し ます (図 2-35)。<br />

238 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 2-35<br />

X-Ref Target - Figure 2-36<br />

図 2-35 : 第 2 工程の読み出し キャ リ ブ レーシ ョ ンにおける書き込みと読み出し<br />

QDRII+ SRAM デザイ ンのデバッ グ<br />

再度読み出し を実行する と 読み出しバスは別の値に駆動 さ れます。 こ れは、 読み出し キ ャ リ ブレー<br />

ションで正しいデータ パターンを識別できるようにするため、 主にハードウェアで必要です。<br />

第 2 工程のキ ャ リ ブレーシ ョ ンが完了する と cal_done 信号がアサー ト さ れ、 キ ャ リ ブレーシ ョ ン<br />

プ ロ セスが正し く 完了し た こ と を示し ます。<br />

テストベンチ<br />

cal_done がアサー ト さ れる と テ ス ト ベンチに制御が移 り 、 メ モ リ への書き込みおよび読み出し を実<br />

行し ます。 書き込んだデータ と 読み出し たデータ が比較 さ れ、 その結果が一致し ない場合はエ ラー<br />

信号がアサー ト さ れます。図 2-36 に、エ ラーがアサー ト されずにテス ト ベンチのイ ンプ リ メ ンテー<br />

シ ョ ンが成功し た様子を示し ます。<br />

図 2-36 : キャ リ ブ レーシ ョ ン完了後のテス ト ベンチの動作<br />

正し い書き込みおよび読み出し コ マン ド<br />

書き込みおよび読み出し コ マン ド を送信する際は、 対応する UI 入力を適切にアサー ト ま たはデ ィ<br />

アサー ト する必要があ り ます。詳細は、212 ページの 「ユーザー <strong>インターフェイス</strong>」および 213 ペー<br />

ジの 「ク ラ イアン ト <strong>インターフェイス</strong>を介したコアとの<strong>インターフェイス</strong>」 を参照して く ださい。<br />

サンプル デザ イ ンに付属する テ ス ト ベンチ デザイ ンを使用し て、 UI の動作を検証で き ます。<br />

QDRII+ SRAM <strong>インターフェイス</strong>のデータ エラーをデバッグするには、 UI 信号をシ ミ ュ レーシ ョ<br />

ン波形を取得する必要があ り ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 239<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 2-38<br />

X-Ref Target - Figure 2-39<br />

ModelSim の [Instance] ウ ィンドウで u_ip_top を選択する と 、[Objects] ウ ィ ン ド ウ に必要な UI 信<br />

号が表示されます (図 2-37)。 237 ページの表 2-16 に示し た UI 信号で右 ク リ ッ ク し、 [Add] → [To<br />

Wave] → [Selected Signals] をク リ ックします。<br />

X-Ref Target - Figure 2-37<br />

図 2-37 : ModelSim の [Instance] ウィンドウ<br />

図 2-38 と 図 2-39 に、 UI と QDRII+ <strong>インターフェイス</strong>の書き込み/読み出し波形の例を示し ます。<br />

図 2-38 : UI の書き込み/読み出し<br />

図 2-39 : QDRII+ イ ン タ ーフ ェ イ スの書き込み/読み出し<br />

240 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


合成およびインプリ メンテーショ ンのデバッグ<br />

図 2-40 に、 合成およびイ ンプ リ メ ンテーシ ョ ンのデバ ッ グ フローを示します。<br />

X-Ref Target - Figure 2-40<br />

合成およびイ ン プ リ メ ン テーシ ョ ンの検証<br />

QDRII+ SRAM デザイ ンのデバッ グ<br />

MIG ツールによって生成されるサンプル デザイ ンおよびユーザー デザイ ンには、合成/インプリ メ<br />

ンテーシ ョ ン スクリプト ファイルとユーザー制約ファイル (.ucf) が含まれます。 これらのフ ァ イ<br />

ルを使用し て ターゲ ッ ト デザ イ ン を合成およびイ ンプ リ メ ン ト する と 、 ビ ッ ト ス ト リ ームが生成 さ<br />

れます。<br />

合成/ インプリ メンテーション スクリプト ファイル (ise_flow.bat/ise_flow.sh) は、<br />

example_design/par ディレク ト リ と user_design/par ディレク ト リの両方にあります。 こ<br />

のス ク リ プ ト を実行する と 、サンプル デザイ ン またはユーザー デザインに対してインプリ メンテー<br />

ション プロセス (合成、 変換、 MAP、 PAR、 TRACE、 および BITGEN) が実行さ れます。 こ れ ら<br />

の各プロセスに設定し たオプシ ョ ンのみが、QDRII+ SRAM MIG デザ イ ンで検証さ れています。イ<br />

ンプ リ メ ンテーシ ョ ンが正常に完了し たデザイ ンは、 すべてのプロセスにエラーがない (タイミン<br />

グ エラーがゼロ) という ことになります。<br />

MIG 出力の変更を検証<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 2-40 : 合成およびインプリ メンテーショ ンのデバッグ フロー図<br />

MIG ツールではメモ リ イ ン ターフ ェ イ ス信号の <strong>FPGA</strong> バン ク をユーザーが選択で き ます。 選択し<br />

たバン クに基づいて、 MIG ツールは必要なすべての ロ ケーシ ョ ン制約を記述し た UCF ファイルを<br />

出力し ます。 こ のフ ァ イルは、 example_design/par ディレク ト リ と user_design/par ディ<br />

レク ト リに生成され、 変更できません。<br />

MIG ツールは最上位の HDL パラ メ ーターでパラ メ ーターが指定されたオープン ソース RTL コー<br />

ド を出力し ます。 こ れ ら のパ ラ メ ーターは MIG ツールによって設定されるため、 手動で変更しな<br />

いで く だ さ い。 周波数の増減などの変更が必要な場合は MIG ツールを再実行し てア ッ プデー ト し<br />

たデザ イ ン を作成し ます。手動での変更はサポー ト さ れていないため、変更する場合はビヘイ ビ アー<br />

シ ミ ュ レーシ ョ ン、 合成、 およびイ ンプ リ メ ンテーシ ョ ン をそれぞれ実行し て検証する必要があ り<br />

ます。<br />

タイミング エ ラーの検出と解析<br />

MIG の QDRII+ SRAM デザイ ンは、サンプル デザイ ンを使用し て幅広いコ ン フ ィ ギ ュ レーシ ョ ン<br />

でタイ ミ ングを満たすこ とが検証されています。 ただし、 MIG ツールで生成したデザインにユー<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 241<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

ザー固有のアプ リ ケーシ ョ ン ロジッ クを統合した場合などはタイ ミ ング違反が生じるこ とがあ り<br />

ます。<br />

タ イ ミ ング違反が発生し た場合は、 それを解決する必要があ り ます。 TRACE で出力される タ イ ミ<br />

ング レポート (.twx/.twr) を解析し、 タ イ ミ ング違反のパスが MIG ツールの QDRII+ SRAM デ<br />

ザインと MIG デザイ ンへの UI (バックエンド アプ リ ケーシ ョ ン) のどちらにあるのかを確認しま<br />

す。 エ ラ ーが確認 さ れた場合は、 ise_flow.bat ファイルで指定したビルド オプシ ョ ン (XST、<br />

MAP、 PAR) が適切に使用さ れてい る かを確認し ます。<br />

それで も エ ラーが解消さ れない場合は、 さ ま ざ ま なザ イ リ ン ク ス リソースを使用し、タイミング ク<br />

ロージャを達成します。 PlanAhead [参照 12] は、 デザ イ ン全体のパフ ォーマン ス と 品質を改善<br />

し ます。 ザ イ リ ン ク スの制約に関する詳細は、 『タ イ ミ ン グ クロージャ ユーザー ガイド』 [参照 13]<br />

を参照して く ださい。<br />

ハー ド ウ ェ アのデバッ グ<br />

図 2-41 に、 ハード ウ ェアのデバッ グ フローを示します。<br />

X-Ref Target - Figure 2-41<br />

クロッキング<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 2-41 : ハー ド ウ ェ アのデバッ グ フロー図<br />

周波数、安定性 (ジッター)、および <strong>FPGA</strong> ピ ンの使用率をすべて実現する には、外部 ク ロ ッ ク ソー<br />

ス を評価する必要があ り ます。 設計者は、 デザ イ ンがすべての ク ロ ッ キ ン グ ガイドラインに準拠し<br />

てい る こ と を確認する必要があ り ます。 ク ロ ッ キ ン グ ガ イ ド ラ イ ンに従っていて も問題が発生する<br />

場合は、 イ ン ターフ ェ イ スの動作速度を引き下げます。 デザ イ ンやボー ド に よ っては、 周波数を下<br />

げる と 適切に動作し ない場合があ り ます。 周波数が低下する と 、 PCB ト レースの不一致、 シグナル<br />

イ ンテグ リ テ ィ の低下、 ま たは過剰負荷に よ って、 セ ッ ト ア ッ プ タイムやホールド タイムのマー<br />

ジンがわずかに増加し ます。 周波数を下げる場合は、MIG を再実行し て低周波数に対応し たデザ イ<br />

ンを生成し直してください。 キャ リブレーション ロジックには CLK_PERIOD パラ メーターの影<br />

響を受け る部分があ る ため、 こ のパ ラ メ ーターを手動で変更する こ と は推奨で き ません。<br />

242 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


ボー ド 上のピ ン配置の検証<br />

QDRII+ SRAM デザイ ンのデバッ グ<br />

MIG ツールで出力 さ れた ピ ン配置を変更せずそのま ま使用し てい る かど う かを確認し ます。 次に、<br />

ボー ド 回路図 と PAR で生成された .pad レポート を比較します。 これによ り、<br />

ボー ド のピ ン配置 と イ ンプ リ メ ンテーシ ョ ン済みデザ イ ンで割 り 当て られた ピ ンが一致し てい る こ<br />

と を確認し ます。<br />

IBIS モデルを使用したシグナル インテグリティ シ ミ ュ レーシ ョ ンの実行<br />

ボード レイアウ トのガイ ド ラインに準拠しているかを検証するには、IBIS (I/O Buffer Information<br />

Specification) を使用してシグナル インテグリティ シ ミ ュ レーシ ョ ン を実行する必要があ り ます。<br />

これらのシミ ュレーショ ンは、 ボード レ イ ア ウ ト の前後の両方で実行し ます。 目的は、 ボー ド 上の<br />

シグナル イ ンテグ リ テ ィ の検証です。<br />

『Virtex-5 <strong>FPGA</strong> ML561 <strong>メモリ</strong> <strong>インターフェイス</strong>開発ボード ユーザー ガイド』 [参照 14] の<br />

「ML561 Hardware-Simulation Correlation」 の章に記載の説明をガ イ ド ラ イ ン と し て使用で き ます。<br />

この章では、 ML561 ボード のシグナル イ ンテグ リ テ ィ の相関結果を詳し く 解説し ています。 こ れ<br />

は、 シグナル イ ンテグ リ テ ィ 解析の例 と し て使用で き ます。 ま た、 デザ イ ン固有の IBIS モデルを<br />

生成する手順も説明さ れてお り 、 シ ミ ュ レーシ ョ ンのセ ッ ト ア ッ プに役立ち ます。 こ のユーザー ガ<br />

イドは Virtex-5 デバイ ス と ML561 開発ボー ド を ターゲ ッ ト と し て説明し ていますが、 基本的な考<br />

え方は 7 <strong>シリーズ</strong> <strong>FPGA</strong> を使用した MIG デザ イ ンに も適用で き ます。<br />

サンプル デザイ ンの実行<br />

MIG ツールで生成さ れる サンプル デザ イ ンは完全に検証済みであ り 、 ボー ド 上の メ モ リ インター<br />

フ ェ イ スの検証に使用で き ます。 こ のサンプル デザ イ ン を使用する こ と に よ り 、 MIG ツール コア<br />

と 接続するバ ッ ク エン ド ロジックの問題を解決できます。 さらに、 MIG ツールで提供されるテス<br />

ト ベンチを変更し て異な るデータ パターンを送信し、ボード レベルのさ まざまな問題をテス ト でき<br />

ます。<br />

一般的なハー ド ウ ェ ア問題のデバ ッ グ<br />

ハー ド ウ ェ アでキ ャ リ ブレーシ ョ ン エ ラーやデータ エラーが生じた場合は、 ChipScope Analyzer<br />

を使用して MIG ツール コ ア信号の動作を解析する必要があ り ます。ChipScope Analyzer の使用方<br />

法の詳細は、 『ChipScope Pro 11.1 ソフトウェアおよびコア ユーザー ガイド』 [参照 8] を参照して<br />

ください。<br />

ハー ド ウ ェ ア デバ ッ グの始め る にあたっては、 まず付属の example_design をボードにロードする<br />

ことを推奨します。 これは、テストベンチ デザインを使用してデータ エラーをチェックできる確<br />

実なソ リ ューシ ョ ンです。 このデザイ ンは、 compare_error がアサー ト されずに cal_done 信号がア<br />

サー ト さ れて正し く 完了するはずです。cal_done 信号がアサー ト さ れていればキ ャ リ ブレーシ ョ ン<br />

が正常に完了し てお り 、 compare_error 信号がアサー ト さ れていなければ メ モ リ に書き込んだデー<br />

タ と メ モ リ か ら読み出し たデータ が一致し てい る こ と を示し ます。<br />

データ比較の不一致が 1 回発生し たのか複数回発生し たのかは、 cmp_err 信号か ら わか り ます。<br />

cmp_err はエ ラーが発生する ご と にアサー ト さ れる ため、 データ を手動で検査する こ と で問題を追<br />

跡でき ます。<br />

ビット エ ラーの特定<br />

ハー ド ウ ェ ア デバ ッ グでは、 ビ ッ ト エ ラーが生じ る タ イ ミ ングおよび位置を特定する こ と が重要<br />

です。 ビ ッ ト エ ラーをモニ タ リ ングする際は、 次を確認する必要があ り ます。<br />

• エラーは、 特定の CQ クロック グループのデータ ビ ッ ト で発生し てい る か<br />

• エラーは、 特定の<strong>メモリ</strong> ア ド レ スへのア ク セス時に発生し ているか<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 243<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

コアのデバッグ<br />

表 2-17 : 物理層のシン プル ステータス バスの説明<br />

• エ ラーは、 特定のデータ パターン ま たはシーケ ン スでのみ発生し てい る か<br />

これで、 PCB 上の短絡またはオープン接続を特定でき ます。 また、 SSO やクロス トークの問題も<br />

特定で き ます。 データ破損が書き込みに よ る も のか、 ま たは読み出し に よ る も のかを特定する こ と<br />

が必要な場合があ り ます。 書き込みが原因の場合は、 読み出し たデータ も破損し てい る ため、 その<br />

特定は容易ではあ り ません。 また、 制御/ア ド レ スの タ イ ミ ングの問題は、 書き込み と 読み出し の両<br />

方に影響を及ぼ し ます。<br />

次に示すいずれかの方法を使用し、 問題を特定し て く だ さ い。<br />

• エ ラーが断続的な場合は、 デザ イ ンに書き込みコ マン ド をい く つか発行 させた後、 それ ら の位<br />

置か ら連続し て読み出し を実行し ます。 読み出し に断続的な破損データ が含まれる場合は、 読<br />

み出し に問題があ る と 考え られます。<br />

• 書き込みタ イ ミ ン グのみを確認/変化させます。<br />

• PCB に外部終端抵抗が配置さ れてい る こ と を確認する。<br />

• ODELAY を使用して K クロックに対する D の位相を変化させる。<br />

• 読み出し タ イ ミ ン グのみを変化させます。<br />

• キャ リブレーション後に IDELAY の値を確認する。 IDELAY 値の変化を確認する。<br />

•<br />

IDELAY の値は同じ CQS グループの Q と 非常に近いはずです。<br />

データ エ ラー と なってい る ビ ッ ト のキ ャ リ ブレーシ ョ ン完了後に、 IDELAY タップの値<br />

を変化させる。<br />

こ れは、 読み出し キ ャ プチャのタ イ ミ ン グにのみ影響し ます。<br />

デバ ッ グ ポー ト は、 ス テータ ス を知らせる出力信号 と デザ イ ンの動作中にユーザーが調整を行 う た<br />

めの入力信号で構成さ れています。 MIG には、 QDRII+ SRAM デザイ ンを生成する際にデバッ グ<br />

ポー ト の ON または OFF を指定する オプシ ョ ンがあ り ます。デバ ッ グ ポー ト を OFF にする と、デ<br />

バッグ ポー ト の出力は生成 さ れますが入力は無視 さ れます。 こ れを ON にする と入力も有効にな<br />

り 、 論理値に駆動する必要があ り ます。 デバ ッ グ ポー ト で信号を正し く 駆動し ない と デザ イ ンにエ<br />

ラーが生じ た り 、 読み出しデータ キャプチャのマージンが小さ くなることがあります。<br />

コ ア をハー ド ウ ェ アで実行する場合、 い く つかの重要な信号を検査する こ と でデザ イ ンのス テータ<br />

スがわかり ます。 表 2-17 に示す dbg_phy_status バスには、 キ ャ リ ブレーシ ョ ンの各工程の状態を<br />

表すス テータ ス ビッ トがあります。dbg_phy_status バス を確認する と 、 潜在的な問題のデバ ッ グ、<br />

問題のあ る部分の特定、 さ ら には一般的な問題点の洗い出し に役立つ情報の糸口が得られます。<br />

デバッ グ ポー ト 信号 名前 説明 問題が発生し た場合<br />

dbg_phy_status[0] rst_wr_clk PLL ロックおよびシステム入力<br />

リセットに基づくファブリック<br />

リセット<br />

dbg_phy_status[1] io_fifo_rden_cal_done &<br />

po_ck_addr_cmd_delay_<br />

done<br />

I/O FIFO をほぼフルの状態にす<br />

るための I/O FIFO 初期化、 およ<br />

び phaser_out 遅延に よ る ア ド レ<br />

ス/制御信号の 90° 位相シ フ ト が<br />

完了し た こ と を示し ます。<br />

この信号がアサート されたままの<br />

場合、 ク ロ ッ ク ソースとシステム<br />

リ セ ッ ト 入力を確認し ます。<br />

PHY 制御 Ready 信号がアサー ト さ<br />

れているかど う かを確認し ます。<br />

244 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 2-17 : 物理層のシン プル ステータス バスの説明 (続き)<br />

dbg_phy_status[2] init_done QDRII+ SRAM 初期化シーケン<br />

スが完了<br />

QDRII+ SRAM デザイ ンのデバッ グ<br />

デバッ グ ポー ト 信号 名前 説明 問題が発生し た場合<br />

dbg_phy_status[3] cal_stage1_start 工程 1 読み出し キ ャ リ ブレー<br />

シ ョ ン開始信号<br />

dbg_phy_status[4] edge_adv_cal_done 工程 1 キャ リブレーションが完<br />

了し、 edge_adv キャ リブレー<br />

ションが完了<br />

dbg_phy_status[5] cal_stage2_start pi_edge_adv キャ リブレーショ<br />

ン完了後のレ イ テンシ キャ リブ<br />

レーシ ョ ン開始信号<br />

dbg_phy_status[6] cal_stage2_start &<br />

cal_done<br />

読み出し キ ャ リ ブレーシ ョ ンの結果は、デバ ッ グ ポー ト に含まれる さ ま ざ ま な出力信号 と し て出力<br />

さ れます。 こ れ ら の信号を使用し て読み出し キ ャ リ ブレーシ ョ ンの結果を キ ャ プチャおよび評価で<br />

きます。<br />

読み出し キ ャ リ ブレーシ ョ ンは、 IODELAY を使用してキャプチャ クロックをキャプチャ データ<br />

の有効ウ ィ ン ド ウ中央に揃え ます。 キ ャ リ ブレーシ ョ ン手順の一環 と し て、 アルゴ リ ズムが<br />

IODELAY の値をシフ ト し てバイ ト 単位でデータ有効ウ ィ ン ド ウ のエ ッ ジを検出し ます。<br />

DEBUG_PORT 信号<br />

レイテンシ キャ リブレーション<br />

開始信号<br />

dbg_phy_status[7] Cal_done キャ リブレーション完了 N/A<br />

注記 :<br />

1. 「N/A」 は、 直前の工程が完了していればこの工程も完了している こ と を示し ます。<br />

表 2-18 : DEBUG_PORT 信号の説明<br />

N/A (1)<br />

MIG ツールでデザ イ ン を生成する際にデバ ッ グ オプシ ョ ンを ON に し た場合、 最上位ラ ッ パーの<br />

user_top にはコ アのデバ ッ グに使用で き る い く つかの出力信号が提供 さ れます。 こ れ ら のデバ ッ<br />

グ信号出力はすべて 「dbg_」 で開始し ます。 sim フォルダーにある sim_tb_top モジュールでは<br />

DEBUG_PORT パラ メーターが常に OFF に設定 さ れ、 論理シ ミ ュ レーシ ョ ン時にはデバ ッ グ オプ<br />

シ ョ ンは無効にな り ます。 表 2-18 に、 こ れ ら の信号 と 関連するデータ を示し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 245<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

N/A<br />

工程 1 キャ リブレーションが正し<br />

く実行されていません。工程 1 キャ<br />

リブレーション時に有効な読み出<br />

しデータが検出されているこ とを<br />

確認し て く だ さ い。<br />

こ の信号が High にならない場合<br />

は、 工程 1 が完了し ていません。 メ<br />

モ リ か ら予想データ が返 さ れてい<br />

る こ と を確認し て く だ さ い。<br />

N/A<br />

信号 方向 説明<br />

dbg_phy_wr_cmd_n[1:0] 出力 ChipScope Analyzer でのデバ ッ グに使用する ア ク テ ィ ブ Low の内<br />

部 wr_cmd 信号です。<br />

dbg_phy_rd_cmd_n[1:0] 出力 ChipScope Analyzer でのデバ ッ グに使用する ア ク テ ィ ブ Low の内<br />

部 rd_cmd 信号です。<br />

dbg_phy_addr[ADDR_WIDTH × 4 - 1:0] 出力 ChipScope Analyzer でのデバッ グに使用する制御ア ド レス バスです。


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 2-18 : DEBUG_PORT 信号の説明 (続き)<br />

信号 方向 説明<br />

dbg_phy_wr_data[DATA_WIDTH× 4 - 1:0] 出力 ChipScope Analyzer でのデバ ッ グに使用する書き込みデータ です。<br />

dbg_phy_init_wr_only 入力 こ の入力が High の間、qdr_phy_write_init_sm のステート マシンは<br />

QDRII+ <strong>メモリ</strong>へのキャリブレーション パターン書き込みの状態<br />

のままです。 これによ りキャ リブレーシ ョ ン書き込みタイ ミ ングを<br />

検証し ます。 通常動作時は Low である必要があ り ます。<br />

dbg_phy_init_rd_only 入力 こ の入力が High の間、qdr_phy_write_init_sm のステート マシンは<br />

QDRII+ メ モ リ か ら のキ ャ リ ブレーシ ョ ン読み出し の状態のま まで<br />

す。 これによ り、 キャ リブレーショ ン読み出しタイ ミ ングと返され<br />

たキャ リブレーシ ョ ン データ を検証し ます。 通常動作時は Low で<br />

ある必要があります。<br />

dbg_byte_sel 入力 ユーザーが PHASER/IDELAY タ ッ プ値を制御するバイ ト レーン<br />

を選択します。<br />

dbg_pi_f_inc 入力 phaser_in で生成された立ち上が り データ キャプチャ用の<br />

ISERDES clk をインク リ メント します。<br />

dbg_pi_f_dec 入力 phaser_in で生成された立ち上が り データ キャプチャ用の<br />

ISERDES clk をデク リ メ ン ト し ます。<br />

dbg_po_f_inc 入力 phaser_out で生成された立ち下が り データ キャプチャ用の<br />

OSERDES clk をインク リ メント します。<br />

dbg_po_f_dec 入力 phaser_out で生成された立ち下が り データ キャプチャ用の<br />

OSERDES clk をインク リ メント します。<br />

dbg_phy_pi_fine_cnt 出力 現在の phaser_in のタップ カ ウ ン ト 位置を示し ます。<br />

dbg_phy_po_fine_cnt 出力 現在の phaser_out のタップ カ ウ ン ト 位置を示し ます。<br />

dbg_cq_num 出力 キ ャ リ ブレーシ ョ ン さ れてい る現在の CQ/CQ# を示します。<br />

dbg_q_bit 出力 キ ャ リ ブレーシ ョ ン さ れてい る現在の Q を示します。<br />

dbg_valid_lat[4:0] 出力 レ イ テンシを読み出し コ マン ド の遅延サ イ ク ル数で示し ます。<br />

dbg_q_tapcnt 出力 各デバイ スの現在の Q タップ設定です。<br />

dbg_inc_latency 出力 読み出しデータ をユーザー <strong>インターフェイス</strong>に正しく揃えるする<br />

ために対応するバイ ト レーンのレイテンシがインク リ メ ン ト され<br />

たことを示します。<br />

dbg_error_max_latency 出力 カ ウ ン ターがオーバーフ ローする前にレ イ テンシを計測で き なかっ<br />

たことを示します。 各デバイスに 1 つのエ ラー ビッ トがあります。<br />

dbg_error_adj_latency 出力 PHY_LATENCY の目標値を達成で き なかった こ と を示し ます。<br />

dbg_align_rd0 [DATA_WIDTH-1:0] 出力 最初の立ち上が り データ を キ ャ プチャ し た出力を示し ます。<br />

dbg_align_rd1 [DATA_WIDTH-1:0] 出力 2 番目の立ち上が り データ を キ ャ プチャ し た出力を示し ます。<br />

dbg_align_fd0 [DATA_WIDTH-1:0] 出力 最初の立ち下が り データ を キ ャ プチャ し た出力を示し ます。<br />

dbg_align_fd1 [DATA_WIDTH-1:0] 出力 2 番目の立ち下が り データ を キ ャ プチャ し た出力を示し ます。<br />

246 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


書き込み初期化デバ ッ グ信号<br />

表 2-19 : 書き込み初期化デバ ッ グ信号マ ッ プ<br />

QDRII+ SRAM デザイ ンのデバッ グ<br />

表 2-19 に、dbg_wr_init バスの書き込み初期化デバ ッ グ信号 と 物理層のデバ ッ グ信号のマ ッ ピ ン グ<br />

を示します。 これらの信号はすべて qdr_phy_write_init_sm モジュール内にあ り、 clk ドメイ<br />

ンで有効です。<br />

ビット PHY 信号名 説明<br />

dbg_wr_init[0] init_cnt_done 初期化カ ウ ン ト の完了を示し ます。<br />

dbg_wr_init[1] cq_stable <strong>メモリ</strong>からの cq クロックが安定しており、コマンドを発行できます。<br />

dbg_wr_init[2] ck_addr_cmd_delay_done アドレス/コマンドに対する 90° 位相シ フ ト が完了し た こ と を示し ま<br />

す。<br />

dbg_wr_init[3] rdlvl_stg1_start 工程 1 キ ャ リ ブレーシ ョ ンの開始を示し ます。<br />

dbg_wr_init[4] rdlvl_stg1_done 工程 1 キ ャ リ ブレーシ ョ ンの完了を示し ます。<br />

dbg_wr_init[5] edge_adv_cal_done 位相ア ラ イ メ ン ト が完了し、 レ イ テンシ キ ャ リ ブレーシ ョ ンへ進む<br />

ことを示します。<br />

dbg_wr_init[6] cal_stage2_start レ イ テンシ計算工程の開始を示し ます。<br />

dbg_wr_init[14:7] phy_init_cs 初期化ス テー ト マシンです。<br />

dbg_wr_init[15] rdlvl_stg1_done 第 1 工程のセン タ リ ン グが完了し た こ と を示し ます。<br />

dbg_wr_init[18:16] addr_cntr コ マン ド 生成用の内部カ ウ ン ターです。<br />

dbg_wr_init[19] dbg_phy_init_wr_only こ の信号が 1 の間、 ステー ト マシンはキャ リ ブレーシ ョ ン書き込み<br />

状態のま まです。<br />

dbg_wr_init[20] dbg_phy_init_rd_only こ の信号が 1 の間、 ステー ト マシンはキ ャ リ ブレーシ ョ ン読み出し<br />

状態 CAL1_READ のままです。<br />

dbg_wr_init[21] CAL2_WRITE ステート マシンは CAL2_WRITE のままです。<br />

dbg_wr_init[255:22] 予約 N/A<br />

表 2-20 : 読み出し工程 1 デバ ッ グ信号マ ッ プ<br />

読み出し工程 1 キャリブレーショ ン デバッ グ信号<br />

表 2-20 に、dbg_rd_stage1_cal バス内の各ビッ ト と PHY のデバッ グ信号のマ ッ ピングを示し ます。<br />

これらの信号はすべて qdr_rld_phy_rdlvl モジュール内にあ り、 clk ドメインで有効です。<br />

ビット PHY 信号名 説明<br />

dbg_phy_rdlvl[0] rdlvl_stg1_start 工程 1 キ ャ リ ブレーシ ョ ンの開始を示す初期化ス テー ト マシン<br />

からの入力です。<br />

dbg_phy_rdlvl[1] rdlvl_start キャ リブレーション ロジックの開始を示します。<br />

dbg_phy_rdlvl[2] found_edge_r データ ウ ィ ンド ウの遷移を検出したこ とを示します。<br />

dbg_phy_rdlvl[3] pat0_data_match_r ISERDES 出力に予想データ パターンが検出されたこ とを示し<br />

ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 247<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 2-20 : 読み出し工程 1 デバ ッ グ信号マ ッ プ (続き)<br />

ビット PHY 信号名 説明<br />

dbg_phy_rdlvl[4] pat1_data_match_r ISERDES 出力に予想データ パターンが検出されたが、最初の読<br />

み出しデータ を ICLKDIV の立ち下が り エ ッ ジに揃えたためシ<br />

フトしたことを示します。<br />

dbg_phy_rdlvl[5] data_valid 有効なキ ャ リ ブレーシ ョ ン データが検出された こ と を示し ます。<br />

dbg_phy_rdlvl[6] cal1_wait_r IDELAY/PHASER タ ッ プが変化し てか らデータ を確認する ま<br />

での待機ス テー ト です。<br />

dbg_phy_rdlvl[7] 予約<br />

dbg_phy_rdlvl[8] detect_edge_done_r エ ッ ジ検出が完了し た こ と を示し ます。<br />

dbg_phy_rdlvl[13:9] cal1_state_r キャ リブレーション ステート マシンの状態を示し ます。<br />

dbg_phy_rdlvl[20:14] cnt_idel_dec_cpt_r クロックをデータ ウ ィ ン ド ウの中央に揃え るためにデク リ メ ン<br />

ト が必要な PHASER タップ数です。<br />

dbg_phy_rdlvl[21] found_first_edge_r 最初のエ ッ ジ遷移を検出し た こ と を示し ます。<br />

dbg_phy_rdlvl[22] found_second_edge_r 2 番目のエ ッ ジ遷移を検出し た こ と を示し ます。<br />

dbg_phy_rdlvl[23] 予約<br />

dbg_phy_rdlvl[24] store_sr_r タ ッ プ遅延を イ ン ク リ メ ン ト する前に現在の読み出しデータ を<br />

格納する ための信号です。<br />

dbg_phy_rdlvl[32:25] sr_fall1_r、 sr_rise1_r<br />

sr_fall0_r、 sr_rise0_r<br />

dbg_phy_rdlvl[40:33] old_sr_fall1_r、<br />

old_sr_rise1_r<br />

old_sr_fall0_r、<br />

old_sr_rise0_r<br />

比較のためにシフ ト レ ジ ス タ に格納された読み出しデータ です。<br />

タップをインクリメントする前にレジスタに格納された読み出<br />

しデータです。<br />

dbg_phy_rdlvl[41] sr_valid_r 比較用の ISERDES データ を ロー ド し て も安全な タ イ ミ ングを<br />

決定し ます。<br />

dbg_phy_rdlvl[42] found_stable_eye_r 安定し たア イ が検出 さ れた こ と を示し ます。<br />

dbg_phy_rdlvl[48:43] tap_cnt_cpt_r PHASER タップ カウンターです。<br />

dbg_phy_rdlvl[54:49] first_edge_taps_r 最初のエ ッ ジを検出する ための タ ッ プ数です。<br />

dbg_phy_rdlvl[60:55] second_edge_taps_r 2 番目のエ ッ ジを検出する ための タ ッ プ数です。<br />

dbg_phy_rdlvl[64:61] cal1_cnt_cpt_r バイ ト レーンがキャ リ ブレーシ ョ ン中である こ と を示します。<br />

dbg_phy_rdlvl[65] cal1_dlyce_cpt_r PHASER 遅延を有効にする PHASER 制御です。<br />

dbg_phy_rdlvl[66] cal1_dlyinc_cpt_r PHASER タップ遅延をインクリメントする PHASER 制御です。<br />

dbg_phy_rdlvl[67] found_edge_r データ ウ ィ ンド ウの遷移を検出したこ とを示します。<br />

dbg_phy_rdlvl[68] found_stable_eye_last_r 安定し たア イ が検出 さ れた こ と を示し ます。<br />

dbg_phy_rdlvl[74:69] idelay_taps 受信し た読み出しデータ を遅延中に有効なデータ ウ ィ ン ド ウ を<br />

検出し た と き の IDELAY タップ数です。<br />

248 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 2-20 : 読み出し工程 1 デバ ッ グ信号マ ッ プ (続き)<br />

ビット PHY 信号名 説明<br />

読み出し工程 2 キャリブレーショ ン デバッ グ信号<br />

QDRII+ SRAM デザイ ンのデバッ グ<br />

dbg_phy_rdlvl[80:75] start_win_taps 有効ウ ィ ン ド ウ の開始を検出する ために必要な IDELAY タップ<br />

数です。<br />

dbg_phy_rdlvl[81] idel_tap_limit_cpt_r IDELAY タップ チェーンの最後に達したこ とを示します。<br />

dbg_phy_rdlvl[82] qdly_inc_done_r IDELAY タ ッ プの遅延に よ る有効ウ ィ ン ド ウ の検出が完了し た<br />

ことを示します。<br />

dbg_phy_rdlvl[83] start_win_detect IDELAY タ ッ プを使用し た ウ ィ ン ド ウ検出が開始し た こ と を示<br />

します。<br />

dbg_phy_rdlvl[84] detect_edge_done_r エ ッ ジ検出が完了し た こ と を示し ます。<br />

dbg_phy_rdlvl[90:85] idel_tap_cnt_cpt_r 使用し た IDELAY タップの数を追跡するためのカウンターです。<br />

dbg_phy_rdlvl[96:91] idelay_inc_taps_r インク リ メントする IDELAY タップ数です (キャ リブレーショ<br />

ン ロジックで必要な場合)。<br />

dbg_phy_rdlvl[102:97] idel_dec_cntr デク リ メン トする IDELAY タップ数です (キャ リブレーション<br />

ロジックで必要な場合)。<br />

dbg_phy_rdlvl[103] tap_limit_cpt_r PHASER タップ チェーンの最後に達したこ とを示します。<br />

dbg_phy_rdlvl[115:104] idelay_tap_delay IDELAY タ ッ プを使用し て検出し た有効ウ ィ ン ド ウの合計数です。<br />

dbg_phy_rdlvl[127:128] phaser_tap_delay PHASER タ ッ プを使用して検出した有効ウ ィ ン ド ウの合計数です。<br />

dbg_phy_rdlvl[255:128] 予約<br />

表 2-21 : 読み出し工程 2 デバ ッ グ信号マ ッ プ<br />

表 2-21 に、dbg_rd_stage2_cal バス内の各ビッ ト と PHY のデバッ グ信号のマ ッ ピングを示し ます。<br />

これらの信号はすべて qdr_rld_phy_read_stage2_cal モジュール内にあ り、clk ドメインで有<br />

効です。<br />

ビット PHY 信号名 説明<br />

dbg_stage2_cal[0] en_mem_latency レ イ テンシ計測を有効にする ための信号です。<br />

dbg_stage2_cal[5:1] latency_cntr[0] イ ン ターフ ェ イ スの最初のバイ ト レーンのレイテンシを示します。<br />

dbg_stage2_cal[6] rd_cmd レイテンシ キャ リブレーション用の内部 rd_cmd です。<br />

dbg_stage2_cal[7] latency_measured[0] バイ ト レーン 0 のレイテンシ計測が完了したこ とを示します。<br />

dbg_stage2_cal[8] bl4_rd_cmd_int バース ト 長 4 データ ワー ド のキ ャ リ ブレーシ ョ ン実行中であ る こ<br />

とを示します。<br />

dbg_stage2_cal[9] bl4_rd_cmd_int_r バース ト 長4 の読み出し コ マン ド 用の内部レ ジ ス タ工程です。<br />

dbg_stage2_cal[10] edge_adv_cal_start pi_edge_adv 信号をアサー ト する必要があ る かど う かを確認する<br />

ために edge_adv キ ャ リ ブレーシ ョ ン を開始し た こ と を示し ます。<br />

dbg_stage2_cal[11] rd0_vld 有効な ISERDES 読み出しデータ を示し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 249<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 2 章 : QDRII+ <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 2-21 : 読み出し工程 2 デバ ッ グ信号マ ッ プ (続き)<br />

ビット PHY 信号名 説明<br />

dbg_stage2_cal[12] fd0_vld 有効な ISERDES 読み出しデータ を示し ます。<br />

dbg_stage2_cal[13] rd1_vld 有効な ISERDES 読み出しデータ を示し ます。<br />

dbg_stage2_cal[14] fd1_vld 有効な ISERDES 読み出しデータ を示し ます。<br />

dbg_stage2_cal[15] phase_vld 特定のバイ ト に対し て有効データ が検出さ れた こ と を示し ます。<br />

dbg_stage2_cal[16] rd0_bslip_vld ビットスリップを必要とする有効な ISERDES 読み出しデータ を<br />

示します。<br />

dbg_stage2_cal[17] fd0_bslip_vld ビットスリップを必要とする有効な ISERDES 読み出しデータ を<br />

示します。<br />

dbg_stage2_cal[18] rd1_bslip_vld ビットスリップを必要とする有効な ISERDES 読み出しデータ を<br />

示します。<br />

dbg_stage2_cal[19] fd1_bslip_vld ビットスリップを必要とする有効な ISERDES 読み出しデータ を<br />

示します。<br />

dbg_stage2_cal[20] phase_bslip_vld 読み出しデータ にビ ッ ト ス リ ッ プを適用中に有効データ が検出さ<br />

れたこ と を示し ます。<br />

dbg_stage2_cal[21] clkdiv_phase_cal_done_4r データ有効性のチェ ッ ク が完了し、 必要に応じ て pi_edge_adv 信<br />

号のアサー ト へ進むこ と を示し ます。<br />

dbg_stage2_cal[22] pi_edge_adv PHASER クロック ICLKDIV を 1 高速 ク ロ ッ ク 分進め る<br />

PHASER 制御信号です。<br />

dbg_stage2_cal[25:23] byte_cnt[2:0] データ の有効性チェ ッ ク が行われてい るバイ ト を示し ます。<br />

dbg_stage2_cal[26] inc_byte_cnt 次のバイ ト へイ ン ク リ メ ン ト する ための内部信号です。<br />

dbg_stage2_cal[29:27] pi_edge_adv_wait_cnt 複数のバイ ト レーンで PHAER 制御信号の pi_edge_adv 信号を<br />

アサー ト する間の待機カ ウ ン ターです。<br />

dbg_stage2_cal[127:30] 予約 予約<br />

250 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章<br />

RLDRAM II および RLDRAM III <strong>メモリ</strong><br />

<strong>インターフェイス</strong> <strong>ソリューション</strong><br />

はじめに<br />

CORE Generator の使用方法<br />

RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リューションは、ザイリンクス 7 シ<br />

リーズ <strong>FPGA</strong> を使用したユーザー デザイ ン と RLDRAM II/RLDRAM III デバイ スのイ ン ターフ ェ<br />

イスとなる<strong>メモリ</strong> コ ン ト ローラーおよび物理層です。 RLDRAM II/RLDRAM III デバイ スは、 要<br />

求ご とに最大 2、 4、 または 8 ワー ド のデータ を転送可能で、 一般にル ッ ク ア ッ プ テーブル (LUT)、<br />

L3 キャッシュ、 グラフィ ックスなどのアプリケーションで使用されます。<br />

RLDRAM II/RLDRAM III <strong>メモリ</strong> ソ リューション コアは、ユーザー <strong>インターフェイス</strong> (UI)、 メモ<br />

リ コント ローラー (MC)、 および物理層 (PHY) で構成さ れています。 こ の コ アは、 シンプルなユー<br />

ザー コマンドを受信して RLDRAM II/RLDRAM III プ ロ ト コルに変換し、 変換後の コ マン ド を メ<br />

モリに送信します。7 シ リーズ <strong>FPGA</strong> 特有の機能を利用する こ と に よ り 、 PHY は最大限の性能を<br />

実現する と 共に、 <strong>FPGA</strong> 内での読み出しデータ キャプチャを簡略化します。 このソ リ ューション<br />

は、 合成可能な リ フ ァ レ ン ス デザ イ ン を含め完全な形で提供 さ れます。<br />

この章では、 ザイ リンクス 7 <strong>シリーズ</strong> <strong>FPGA</strong> 用の LogiCORE IP RLDRAM II/RLDRAM III メ<br />

モリ <strong>インターフェイス</strong> コアのアーキテクチャ、 およびその使用、 カスタマイズ、 シミ ュレーショ<br />

ンの方法について説明し ます。<br />

このソフ ト <strong>メモリ</strong> コント ローラー コ アは完全な検証が行われてお り 、性能が保証 さ れていますが、<br />

最良のデザ イ ン を実現する には PCB デザ イ ンの終端および ト レース配線に関する規則に従った設<br />

計を行う必要があ り ます。 PCB デザイ ン ガイドラインの詳細は、 310 ページの 「設計ガ イ ド ラ イ<br />

ン」 を参照して く ださい。<br />

注記 : 現時点では、RLDRAM II/RLDRAM III デザイ ンは メ モ リ マ ッ プ方式の AXI4 インターフェ<br />

イスをサポートしていません。<br />

7 シ リーズ <strong>FPGA</strong> の RLDRAM II/RLDRAM III <strong>インターフェイス</strong> コ アの詳細および最新情報は、<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> データ シー ト [参照 15] を適宜参照し て く だ さ い。<br />

ここでは、CORE Generator ツールを使用して 7 <strong>シリーズ</strong> <strong>FPGA</strong> で RLDRAM II <strong>メモリ</strong> インター<br />

フ ェ イ ス を生成し、 ザ イ リ ン ク スのツールでデザ イ ン を イ ンプ リ メ ン ト し て、 合成可能なテ ス ト ベ<br />

ンチを用いてサンプル デザ イ ンのシ ミ ュ レーシ ョ ン を実行する方法を順を追って説明し ます (MIG<br />

オプシ ョ ンの大部分は RLDRAM II <strong>インターフェイス</strong>と RLDRAM III <strong>インターフェイス</strong>で共通、<br />

ただ し異な る場合はそれを説明する)。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 251<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

システム要件<br />

• ISE® Design Suite v14.3<br />

または<br />

• Vivado Design Suite v2012.3<br />

コアのカスタマイズと生成<br />

GUI を使用し た生成方法<br />

MIG (Memory Interface Generator) はウ ィ ザード の指示に従 う だけで簡単にコ アを生成でき る ツー<br />

ルで、 CORE Generator ツールか ら起動で き ます。 こ こ では、 MIG ツールの使用方法を順に説明し<br />

ます。 Vivado ツールを使用してコアを生成する方法は、 第 5 章 「Vivado Design Suite への移行」<br />

を参照して く ださい。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> で RLDRAM II デザ イ ン を生成する には、 次の手順に従います。<br />

1. CORE Generator ツールの [Search IP Catalog] に 「mig」 と入力し、MIG ツールを起動し ます<br />

(図 3-1)。<br />

X-Ref Target - Figure 3-1<br />

図 3-1 : ザイ リンクス CORE Generator<br />

2. [File] → [New Project] をクリ ックして [New Project] ダイアログ ボックスを開きます。<br />

「7Series_MIG_Example_Design」 と い う 名前で新規プ ロ ジ ェ ク ト を作成し ます (図 3-2)。<br />

252 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 3-2<br />

3. プ ロ ジ ェ ク ト 名 と 場所を入力し ます。 [Save] をク リ ックします (図 3-3)。<br />

X-Ref Target - Figure 3-3<br />

図 3-2 : CORE Generator の新規プ ロジ ェ ク ト 作成画面<br />

図 3-3 : [New Project] ダイアログ ボックス<br />

CORE Generator の使用方法<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 253<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

4. [Project Options] ダイアログ ボックスで [Part] オプシ ョ ン を選択し ます (図 3-4)。<br />

X-Ref Target - Figure 3-4<br />

• Kintex-7 または Virtex®-7 のいずれかを ターゲッ ト デバイ スに指定し ます。<br />

図 3-4 : CORE Generator のデバイス選択ページ<br />

254 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

5. [Design Entry] に [Verilog] を選択し、 [Flow Settings] の [Vendor] には [ISE] を選択します。<br />

[OK] をクリ ックして [Project Options] の設定を完了し ます (図 3-5)。<br />

X-Ref Target - Figure 3-5<br />

図 3-5 : CORE Generator のデザイ ン フロー設定ページ<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 255<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 3-6<br />

6. [MIG 7 Series 1.7] を選択します (図 3-6)。<br />

図 3-6 : 7Series_MIG_Example_Design プロジェク ト ページ<br />

7. [Core Generator Options] に、 MIG ツールを起動する前に CORE Generator ツールで選択した<br />

オプシ ョ ンの詳細が表示さ れます (図 3-7)。<br />

256 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 3-7<br />

8. [Next] をク リ ックして [MIG Output Options] ページへ進みます。<br />

CORE Generator の使用方法<br />

図 3-7 : 7 <strong>シリーズ</strong> <strong>FPGA</strong> の MIG (Memory Interface Generator) の最初のページ<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 257<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

MIG の出力オプシ ョ ン<br />

1. [Create Design] を選択して新規メモ リ コント ローラー デザイ ンを作成し ます。 [Component<br />

Name] に コ ンポーネン ト 名を入力し ます (図 3-8)。<br />

2. [Number of Controllers] で作成する コ ン ト ローラーの数を指定し ます。こ れ以降のページは、指<br />

定し た コ ン ト ローラーの数だけオプシ ョ ン を繰 り 返す必要があ り ます。<br />

X-Ref Target - Figure 3-8<br />

図 3-8 : MIG の出力オプシ ョ ン<br />

フォルダー名 が付いた MIG 出力が生成 さ れます。<br />

注記 : で使用 さ れる文字は英数字のみです。 特殊文字は使用で き ません。<br />

先頭の 1 文字は英字であ る必要があ り ます (末尾の 1 文字は英字で も数字で もかまいません)。<br />

XPS か ら起動し た場合は、 XPS の IP インスタンス名が [Component Name] に入 り ます。<br />

3. [Next] をク リ ックして [Pin Compatible <strong>FPGA</strong>s] ページへ進みます。<br />

<strong>UG586</strong>_c1_09_120311<br />

258 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


ピン互換 <strong>FPGA</strong><br />

CORE Generator の使用方法<br />

[Pin Compatible <strong>FPGA</strong>s] ページには、 選択し た <strong>FPGA</strong> ファ ミ リでパッケージが同じデバイスが表<br />

示されます。 MIG ツールで生成し た ピ ン配置を、 こ こ に表示 さ れた <strong>FPGA</strong> と互換性を持たせるよ<br />

う にする には、 こ のオプシ ョ ン を使用し てデバイ ス を選択し ます (図 3-9)。<br />

X-Ref Target - Figure 3-9<br />

図 3-9 : ピ ン互換のある 7 <strong>シリーズ</strong> <strong>FPGA</strong><br />

1. 表示さ れた ピ ン互換のあ る <strong>FPGA</strong> の中からデバイ ス を選択し ます。MIG ツールは、こ こで選択<br />

した <strong>FPGA</strong> とターゲット <strong>FPGA</strong> に共通する ピ ンのみを使用し ます。[Target <strong>FPGA</strong>] には、選択<br />

したターゲット <strong>FPGA</strong> デバイ ス名が表示さ れます。<br />

2. [Next] をク リ ックして [Memory Selection] ページへ進みます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 259<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> RLDRAM II <strong>メモリ</strong> デザイ ンの作成<br />

メ モ リ の選択<br />

こ のページには、 選択し た <strong>FPGA</strong> ファミ リでサポート されるすべての<strong>メモリ</strong> タイプが表示されま<br />

す。<br />

1. [Select the Controller Type] に [RLDRAM II] を選択し ます。<br />

2. [Next] をク リ ックして [Controller Options] ページへ進みます。<br />

X-Ref Target - Figure 3-10<br />

図 3-10 : <strong>メモリ</strong> タ イ プおよび コ ン ト ローラーの選択<br />

現時点では、RLDRAM II/RLDRAM III デザイ ンは メ モ リ マ ッ プ方式の AXI4 <strong>インターフェイス</strong>を<br />

サポー ト していません。<br />

260 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


[Controller Options] ページ<br />

こ のページには、 選択可能な コ ン ト ローラー オプシ ョ ンが表示 さ れます。<br />

X-Ref Target - Figure 3-11<br />

図 3-11 : [Controller Options] ページ<br />

CORE Generator の使用方法<br />

• [Frequency] – すべての コ ン ト ローラーの動作周波数が表示 さ れます。 設定可能な周波数の範<br />

囲は、 選択し た <strong>FPGA</strong> デバイ スやそのス ピー ド グ レー ド な どの要因に依存し ます。<br />

• [PHY to Controller Clock Ratio] – 物理層 (<strong>メモリ</strong>) の ク ロ ッ ク 周波数 と コ ン ト ローラーおよ<br />

びユーザー イ ン ターフ ェ イ スの ク ロ ッ ク 周波数の比率を指定し ます。2:1 のときのユーザー イ<br />

ン ターフ ェ イ スのデータ バス幅は、 物理層 メ モ リ <strong>インターフェイス</strong>幅の 4 倍となり、4:1 のと<br />

きのユーザー <strong>インターフェイス</strong>のデータ バス幅は、 物理層 メ モ リ イ ンターフェイス幅の 8 倍<br />

となります。 RLDRAM II は 2:1 を使用し、 RLDRAM III は 4:1 を使用する必要があ り ます。<br />

• [Vccaux_io] – Vccaux_io は周期/周波数の設定に基づいて設定さ れます。High Performance カ<br />

ラ ムの最高周波数設定には 2.0V が必要です。 2.0V が必要な場合は、 MIG ツールが自動的に<br />

選択し ます。 それよ り も周波数が低い場合は 1.8V と 2.0V のど ち ら も 使用で き ます。 バン ク<br />

グループは同じ Vccaux_io 電源を共有します。詳細は、『7 <strong>シリーズ</strong> <strong>FPGA</strong> SelectIO リソース<br />

ユーザー ガイド』 [参照 1] を参照して く ださい。<br />

• [Memory Part] – デザ イ ンで使用する メ モ リ デバイ ス を選択し ます。リ ス ト の中か ら選択する<br />

か、 リ ス ト にない場合は [Create Custom Part] を ク リ ッ ク し て新規デバイ ス を作成し ます。 使<br />

用するデバイ スが リ ス ト にない場合は、同等のデバイ ス を生成ま たは作成し て目的の メ モ リ デ<br />

バイスをサポートできるように出力を変更します。<br />

• [Data Width] – 選択し た メ モ リ デバイ スに基づいてデータ幅の値を選択し ます。 デバイ スの<br />

データ幅の倍数を指定で き ます。<br />

• [Data Mask] – このオプションを ON にする と、データ マスク ピ ンが割 り 当て ら れます。デー<br />

タ マスク ピ ンの割 り 当てを解除し て ピ ン効率を上げる場合は、 こ のオプシ ョ ンの選択を解除<br />

してください。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 261<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

• [Memory Details] – [Controller Options] ページの下部に、 選択し た メ モ リ の コ ン フ ィ ギ ュ<br />

レーシ ョ ンに関する詳細が表示さ れます (図 3-12)。<br />

X-Ref Target - Figure 3-12<br />

<strong>メモリ</strong> オプシ ョ ン<br />

こ のページでは、 コ ン ト ローラーの仕様に従って メ モ リ モード レジスタの値を選択します (<br />

図 3-13)。<br />

X-Ref Target - Figure 3-13<br />

図 3-12 : 選択し た メ モ リ のコ ン フ ィ ギュ レーシ ョ ンの詳細<br />

図 3-13 : [Memory Options] ページ<br />

モード レ ジ ス タ の値は、 初期化中に ロー ド モード レ ジ ス タ に読み込まれます。<br />

• [Input Clock Period] – リ ス ト か ら目的の入力 ク ロ ッ ク 周期を選択し ます。 こ れ ら の値は、 選<br />

択した<strong>メモリ</strong> ク ロ ッ ク 周期の値 と PLL パ ラ メ ーターの制限値に よ って決ま り ます。 PLL パラ<br />

メ ーターの制限値の詳細は、 289 ページの 「 ク ロ ッ キ ン グ アーキテクチャ」 を参照して く ださ<br />

い。<br />

• [Configuration] – (RLDRAM II のみ)。 書き込みおよび読み出し レ イ テンシの値に関連する コ<br />

ンフィギュレーションの値を設定します。 設定可能な値 (1、 2、 3) は、 選択し たデザイ ンの動<br />

作周波数に基づいて管理さ れます。<br />

• [Burst Length] – 1 つの メ モ リ ト ラ ンザ ク シ ョ ンのバース ト 長を設定し ます。 粒度 と 帯域幅の<br />

トレードオフで、アプリケーションによって決まります。RLDRAM II で設定可能な値は 4 お<br />

よび 8 で、 RLDRAM III では 2、 4、 8 です。<br />

262 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

• [Address Multiplexing] – ア ド レ スは連続する 2 クロック サイクル間のみ少ピンで提供され、<br />

それを超え る と ピン数が多 く な るため、 デザイ ンに必要なア ド レ ス ピンの数を最小に抑えま<br />

す。 こ のオプシ ョ ンは、 バース ト 長 2 ではサポー ト されません。<br />

3. [Impedance Matching] – <strong>メモリ</strong> デバイ スの出力の調整方法を設定し ます。 内部設定を用い る<br />

か、 または メ モ リ デバイ スの ZQ 入力へ接続 さ れる外部参照抵抗を使用する かを選択し ます。<br />

4. [On-Die Termination] – 書き込み中に メ モ リ デバイ ス側で終端を DQ および DM 信号に適用<br />

さ せます。 有効の場合、 読み出し コ マン ド 実行中にバス を駆動し てい る と 、 メ モ リ デバイ スが<br />

動的に ODT を OFF に切 り 替えます。 RLDRAM II ではこのオプシ ョ ンを OFF または ON に<br />

し か設定で き ませんが、RLDRAM III では値を選択する必要があれば RZQ/6、RZQ/4、RZQ/2<br />

のいずれかに設定で き ます。<br />

5. [Output Driver Impedance Control] – (RLDRAM III のみ)。DRAM の MRS 設定で、読み出<br />

し中の出力バッファーのインピーダンスを選択します。<br />

[Next] をク リ ックして [<strong>FPGA</strong> Options] ページへ進みます。<br />

<strong>FPGA</strong> オプシ ョ ン<br />

図 3-14 に、 [<strong>FPGA</strong> Options] ページを示し ます。<br />

X-Ref Target - Figure 3-14<br />

図 3-14 : <strong>FPGA</strong> オプシ ョ ンの設定<br />

• [System Clock] – sys_clk 信号ペアの ク ロ ッ ク タイプ ([Single-Ended] (シングルエンド)、<br />

[Differential] (差動)、または [No Buffer] (バッファーなし)) を選択します。[No Buffer] を選択<br />

する と、 IBUF プリ ミティブが RTL コードでインスタンシエート されず、 システム クロック<br />

にピンが割り当てられません。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 263<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

• [Reference Clock] – clk_ref 信号ペアの ク ロ ッ ク タイプ ([Single-Ended] (シングルエンド)、<br />

[Differential] (差動)、 [No Buffer] (バッファーなし)、 または [Use System Clock] (システム ク<br />

ロックを使用)) を選択します。 [Use System Clock] オプシ ョ ンは、 入力周波数が 200MHz の<br />

場合 ([Input Clock Period] が 5000ps (200MHz)) に表示されます。 [No Buffer] を選択する と 、<br />

IBUF プリ ミティブが RTL コードでインスタンシエート されず、基準クロッ クにピンが割り当<br />

てられません。<br />

• [Debug Signals Control] – このオプション (EDK フ ローでは使用不可) を有効にする と、キャ<br />

リブレーション ステータスとユーザー ポー ト 信号を design_top モジュールの ChipScope<br />

Analyzer モジュールにポー ト マップできます。 これにより、 ユーザー <strong>インターフェイス</strong> ポー<br />

トのトラフィックを ChipScope Analyzer で簡単に確認でき ます。 生成し たデザイ ンをデザイ<br />

ンの par フォルダーにある ise_flow.bat を使用してバッチ モード で実行する と、 CORE<br />

Generator ツールが呼び出されて ChipScope Analyzer モジュール (NGC ファイル) を生成し<br />

ます。 このオプシ ョ ンを [OFF] にする と デバッ グ信号は design_top モジュールには接続され<br />

ません。 この場合、 ChipScope Analyzer モジュールは design_top モジュールにインスタンシ<br />

エー ト されず、CORE Generator ツールは ChipScope Analyzer モジュールを生成しません。論<br />

理シ ミ ュ レーシ ョ ンでは、 デバッ グ ポー ト は常に無効です。<br />

• [Sample Data Depth] – デバ ッ グ ロ ジ ッ ク で使用する ChipScope ILA コアのサンプル デー<br />

タの深さを選択します。 このオプションは [Debug Signals for Memory Controller] オプシ ョ ン<br />

を ON にする と 選択可能 と な り ます。<br />

• [Internal Vref Selection] – データ グループ バイ トで内部 Vref を使用する と 、 VREF ピンを通<br />

常の I/O ピンとして使用できます。[Internal Vref] オプシ ョ ンは、データ レート が 800Mb/s 以<br />

下の場合のみ使用し て く だ さ い。<br />

[Next] をク リ ックして [Extended <strong>FPGA</strong> Options] ページへ進みます。<br />

264 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


拡張 <strong>FPGA</strong> オプシ ョ ン<br />

図 3-15 に、 [Extended <strong>FPGA</strong> Options] ページを示し ます。<br />

X-Ref Target - Figure 3-15<br />

CORE Generator の使用方法<br />

• [Digitally Controlled Impedance (DCI)] – こ のオプシ ョ ン を選択する と 、 RLDRAM II の読<br />

み出しパスか ら の信号が内部終端処理 さ れます。DCI は HP (High Performance) バンクで利用<br />

できます。<br />

• [Internal Termination for High Range Banks] – 内部終端のオプシ ョ ンは、 40、 50、 60Ω ま<br />

たは無効に設定で き ます。 こ の終端は、 RLDRAM II/RLDRAM III 読み出しパス用です。 こ の<br />

オプシ ョ ンは HR (High Range) バン ク でのみ選択で き ます。<br />

バン クの選択<br />

こ のページでは、 メ モ リ イ ン ターフ ェ イ ス用のバイ ト を選択し ます。 次の よ う な異な る メ モ リ 信号<br />

に対し てバイ ト を選択で き ます。<br />

• ア ド レ ス信号 と 制御信号<br />

• データ読み出し信号<br />

• データ書き込み信号<br />

図 3-15 : DCI の設定<br />

設定を カ ス タ マ イ ズする には [Deselect Banks] を ク リ ッ ク し、 適切なバン ク 信号および メ モ リ 信号<br />

を選択し ますデフ ォル ト の設定を使用する場合は [Next] を ク リ ッ ク し て次のページへ進みます。バ<br />

ン ク の選択を解除する には、 [Deselect Banks] をク リ ックします。デフォルト設定に戻すには、<br />

[Restore Defaults] をクリ ックします。 デバイスの HP バンクの Vccaux_io グループは ... で表示さ<br />

れています。 こ れ ら のグループで Vccaux_io はすべてのバン ク に共通です。 メ モ リ インターフェ<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 265<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

イ スでは、 使用するすべてのバン ク で Vccaux_io が共通の必要があ り ます。 VCCAUX_IO の制約<br />

は、 要求されたデータ レー ト に合わせて MIG が自動的に設定し ます。<br />

SSI テクノロジで実装されたデバイスでは、 SLR (Super Logic Region) は各バン ク のヘッ ダーの番<br />

号を付けて表されます (SLR 1 など)。 イ ン ターフ ェ イ スは複数の SLR をまたぐことはできません。<br />

SLR を持たないデバイ ス もあ り ます。<br />

X-Ref Target - Figure 3-16<br />

図 3-16 : バン クの選択<br />

266 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


システム ピ ンの選択<br />

図 3-17 に、 [System Pins Selection] ページを示し ます。<br />

X-Ref Target - Figure 3-17<br />

図 3-17 : システム ピ ンの選択<br />

CORE Generator の使用方法<br />

こ のページでは、 シ ス テム信号のピ ン を選択し ます。 MIG ツールでは、 必要に応じ て外部ピ ン と 内<br />

部接続のどち ら も選択で き ます。<br />

• [sys_clk] – <strong>メモリ</strong> <strong>インターフェイス</strong>のシステム ク ロ ッ ク 入力で、 通常は低ジ ッ ターの外部 ク<br />

ロック ソースに接続し ます。[<strong>FPGA</strong> Options] ページ (図 3-14) の [System Clock] の選択に基<br />

づいてシングルエン ド 入力ま たは差動ペアを選択し ます。 sys_clk 入力は メ モ リ インターフェ<br />

イスと同じカラムにある必要があります。このピンを<strong>メモリ</strong> <strong>インターフェイス</strong>と同じバンクに<br />

接続し た場合、 MIG ツールは DIFF_HSTL_I や HSTL_I など<strong>メモリ</strong> <strong>インターフェイス</strong>と互換<br />

性のあ る I/O 規格を選択し ます。 sys_clk が<strong>メモリ</strong> <strong>インターフェイス</strong> バン ク で未接続の場合、<br />

MIG ツールは LVCMOS18 や LVDS な どの適切な規格を選択し ます。UCF は生成後に必要に<br />

応じて修正できます。<br />

• [clk_ref] – IDELAY 制御の基準周波数入力です。 200MHz の入力です。 clk_ref 入力は内部で<br />

生成する こ と も、外部 ソースに接続する こ と も で き ます。[<strong>FPGA</strong> Options] ページ (図 3-14) で<br />

選択し た [System Clock] に基づいてシングル入力ま たは差動ペアのいずれかを選択で き ます<br />

I/O 規格は上記の sys_clk と 同様の方法で選択さ れます。<br />

• [sys_rst] – 内部で生成ま たは外部ピ ンに よ って駆動さ れる シ ス テム リ セ ッ ト 入力です。 HP バ<br />

ンクには LVCMOS18、 HR バンクには LVCMOS25 など、 入力に対する適切な I/O 規格を<br />

MIG ツールが選択し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 267<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

サマ リ<br />

• [init_calib_complete] – メ モ リ 初期化 と キ ャ リ ブレーシ ョ ンが完了し、 イ ン ターフ ェ イ スの使<br />

用準備がで き た こ と を示す出力です。 こ の信号は通常は内部でのみ使用し ますが、 必要に応じ<br />

て ピ ンに出力で き ます。<br />

• [tg_compare_error] – サンプル デザイ ンの ト ラ フ ィ ッ ク ジ ェ ネレーターがデータ比較でエ<br />

ラーを検出し た こ と を示す出力です。 こ の信号はサンプル デザイ ンでのみ生成され、 ユーザー<br />

デザイ ンには含まれません。 この信号は通常ピンには出力されませんが、 必要に応じ て出力さ<br />

せる こ とが可能です。<br />

[Next] をク リ ックして [Summary] ページへ進みます。<br />

[Summary] ページ (図 3-18) には、 メ モ リ コアの選択、 <strong>インターフェイス</strong> パラ メーター、 CORE<br />

Generator ツールのオプシ ョ ン、 アクテ ィブ プロジェク トの <strong>FPGA</strong> オプシ ョ ンなど、 すべての詳細<br />

が表示されます。<br />

X-Ref Target - Figure 3-18<br />

図 3-18 : サマ リ<br />

[Next] をク リ ックして [PCB Information] ページへ進みます。<br />

268 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


PCB 情報<br />

CORE Generator の使用方法<br />

このページには、 MIG ツールで生成し たデザ イ ン を使用する ボー ド の設計に必要な PCB 関連の情<br />

報が表示さ れます。 [Next] をク リ ックして [Design Notes] ページへ進みます。<br />

デザイ ン ノート<br />

完了<br />

[Generate] をクリ ックしてデザイン ファイルを生成します。MIG ツールでは、 example_design お<br />

よび user_design の 2 つの出力デ ィ レ ク ト リ が生成 さ れます。デザ イ ンの生成が完了する と MIG の<br />

GUI 画面が閉じ ます。<br />

デザイ ンが生成される と 、 さ らに詳しい情報を記載し た [README] ページが表示 さ れます。<br />

[Close] をク リ ックして MIG ツール フ ローを終了し ます。<br />

MIG のデ ィ レ ク ト リ 構造と フ ァ イルの説明<br />

ここでは、MIG ツールのデ ィ レ ク ト リ 構造および出力フ ァ イルについて詳し く 説明し ます。<br />

出力デ ィ レ ク ト リ の構造<br />

MIG ツールで出力されるフ ァ イルとディ レ ク ト リ はすべて フォルダーの下<br />

に格納されます ( は MIG デザイ ン作成フ ローの 258 ページの 「MIG の出力<br />

オプシ ョ ン」 で指定した名前)。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 269<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

図 3-19 に、 メ モ リ コント ローラー デザ イ ンの出力デ ィ レ ク ト リ 構造を示し ます。 ディレク ト リには、 次の 3 つのフ ォルダーが作成されます。<br />

• docs<br />

• example_design<br />

• user_design<br />

X-Ref Target - Figure 3-19<br />

デ ィ レ ク ト リ と フ ァ イルの内容<br />

ここでは、 コアのディレクト リと関連ファイルについて説明します。<br />

/docs<br />

このフォルダーには PDF 形式の資料が格納さ れています。<br />

/example_design/<br />

図 3-19 : MIG のデ ィ レ ク ト リ構造<br />

こ のデ ィ レ ク ト リ には、 テ ス ト ベンチを含む完全な MIG サンプル デザイ ンのシ ミ ュ レーシ ョ ンお<br />

よびインプリ メンテーシ ョ ンに必要なすべての RTL、 制約ファイル、スクリプト ファイルが格納<br />

されています。オプショ ンの ChipScope ツール モジュールも、 このディ レ ク ト リ に含まれます。<br />

表 3-1 に、example_design/rtl ディ レク ト リ に含まれる含まれるモジュールの一覧を示します。<br />

表 3-1 : example_design/rfl ディレクトリに含まれるモジュール<br />

名前 説明<br />

example_top.v ユーザー デザイ ンを 7 <strong>シリーズ</strong> <strong>FPGA</strong> の<strong>メモリ</strong> <strong>インターフェイス</strong> コ アに接続する サンプル デ<br />

ザ イ ンの最上位モジ ュールです。<br />

270 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

表 3-2 に、example_design/rtl/traffic_gen デ ィ レ ク ト リ に含まれるモジ ュールの一覧を示<br />

します。<br />

表 3-2 : example_design/rtl/traffic_gen ディレクトリに含まれるモジュール<br />

名前 説明<br />

mig_7series_v1_7_memc_traffic_gen.v/vhd トラフィック ジ ェ ネレーターの最上位モジ ュールです。<br />

mig_7series_v1_7_cmd_gen.v/vhd コマンド ジェネレーターです。 コマンド、 アドレスおよび<br />

バース ト 長を個別に生成する よ う に制御し ます。<br />

mig_7series_v1_7_cmd_prbs_gen.v/vhd PRBS (Pseudo-Random Binary Sequence) コマンド、アドレ<br />

ス、 バース ト 長を生成する PRBS ジェネレーターです。<br />

mig_7series_v1_7_memc_flow_vcontrol.v/vhd <strong>メモリ</strong> コント ローラー コアと cmd_gen、 read_data_<br />

path および write_data_path モジュール間のフロー制<br />

御ロ ジ ッ ク を生成し ます。<br />

mig_7series_v1_7_read_data_path.v/vhd 読み出しデータパスの最上位モジ ュールです。<br />

mig_7series_v1_7_read_posted_fifo.v/vhd <strong>メモリ</strong> コ ン ト ローラーへ送信 さ れた読み出し コ マン ド を格<br />

納する モジ ュールです。 こ の FIFO 出力を使用し て、読み出<br />

しデータ の比較用の予想データ を生成し ます。<br />

mig_7series_v1_7_rd_data_gen.v/vhd mcb_flow_control.v/vhd モジ ュールに対する読み出<br />

し信号および Ready 信号の タ イ ミ ン グ を制御し ます。<br />

mig_7series_v1_7_write_data_path.v/vhd 書き込みデータパスの最上位モジ ュールです。<br />

mig_7series_v1_7_wr_data_g.v/vhd mcb_flow_control.v/vhd モジュールに対する書き込<br />

み信号および Ready 信号の タ イ ミ ン グ を制御し ます。<br />

mig_7series_v1_7_s7ven_data_gen.v/vhd 複数の異な るデータ パターンを生成します。<br />

mig_7series_v1_7_a_fifo.v/vhd LUT RAM を使用した同期 FIFO です。<br />

mig_7series_v1_7_data_prbs_gen.v/vhd PRBS データ パターン を生成する 32 ビッ ト LFSR ( リニア<br />

フィードバック シフ ト レジスタ) です。<br />

mig_7series_v1_7_init_mem_pattern_ctr.v/vhd トラフィック ジ ェ ネレーター用のフ ロー制御ロ ジ ッ ク を生<br />

成します。<br />

mig_7series_v1_7_traffic_gen_top.v/vhd トラフィック ジ ェ ネレーターの最上位モジ ュールで、<br />

memc_traffic_gen モジュールと init_mem_pattern_ctr モ<br />

ジュールで構成されます。<br />

表 3-3 に、 example_design/sim デ ィ レ ク ト リ に含まれる フ ァ イルの一覧を示し ます。<br />

表 3-3 : example_design/sim ディレクトリに含まれるファイル<br />

名前 説明<br />

sim.do ModelSim シミュレータのスクリプト ファイルです。<br />

sim_tb_top.v シ ミ ュ レーシ ョ ンの最上位フ ァ イルです。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 271<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-4 に、 example_design/par デ ィ レ ク ト リ に含まれる フ ァ イルの一覧を示し ます。<br />

表 3-4 : example_design/par ディレクトリに含まれるファイル<br />

名前 説明<br />

example_top.ucf サンプル デザイ ンのコ アの UCF ファイルです。<br />

create_ise.bat ダブルク リ ッ クする と、 デザインに推奨されるビルド オプシ ョ ンを含む ISE プロジェク トが作成<br />

されます。 プロジェク ト を GUI モー ド で実行する には、 ISE プロジェク ト をダブルク リ ックしま<br />

す。 こ れに よ り 、 すべてのプ ロ ジ ェ ク ト 設定が完了し た状態で GUI モード の ISE プロジェク トが<br />

開きます。<br />

ise_flow.bat このスク リプト フ ァ イルは、デザ イ ンの合成、ビル ド 、マ ッ プ、配置配線を実行し、必要なオプシ ョ<br />

ン をすべて設定し ます。デザ イ ンで推奨 さ れる ビル ド オプシ ョ ン を確認する場合は、こ のフ ァ イル<br />

を参照して く ださい。<br />

rem_files.bat このバッチ フ ァ イルはインプ リ メ ンテーシ ョ ン時に生成されたすべてのイ ンプ リ メ ンテーシ ョ ン<br />

ファイルを削除します。<br />

set_ise_prop.tcl ISE のプロパテ ィ の一覧です。<br />

xst_options.txt 合成ツールのプ ロパテ ィ の一覧です。<br />

ila_cg.xco、<br />

icon_cg.xco、<br />

vio_cg.xco<br />

デバ ッ グを有効にし た と きに生成される ChipScope モジュールの XCO ファイルです。<br />

注意 : ディレク ト リの par フォルダーにある ise_flow.bat ファイルに<br />

は、 デザイ ンで推奨される ビル ド オプシ ョ ンが含まれています。 こ の推奨オプシ ョ ンに従わな<br />

い場合は、 予期し ない結果が生成さ れる可能性があ り ます。<br />

表 3-5 に、 example_design/synth デ ィ レ ク ト リ に含まれる フ ァ イルの一覧を示し ます。<br />

表 3-5 : example_design/synth ディレクトリに含まれるファイル<br />

名前 説明<br />

example_top.prj XST ツールでコンパイルするすべての RTL ファイルの一覧です。<br />

example_top.lso XST 合成ツール向けに用意さ れたカ ス タ ムの ラ イ ブ ラ リ 検索順を指定<br />

するファ イルです。<br />

/user_design/<br />

表 3-6 に、 user_design/rtl/controller デ ィ レ ク ト リ に含まれるモジ ュールの一覧を示し ま<br />

す。<br />

表 3-6 : user_design/rtl/controller ディレクトリに含まれるモジュール<br />

名前 説明<br />

mig_7series_v1_7_rld_mc.v <strong>メモリ</strong> コント ローラーをインプリ メント します。<br />

272 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


CORE Generator の使用方法<br />

表 3-7 に、 user_design/rtl/ui デ ィ レ ク ト リ に含まれるモジュールの一覧を示し ます。<br />

表 3-7 : user_design/rtl/ui ディレクトリに含まれるモジュール<br />

名前 説明<br />

mig_7series_v1_7_rld_ui_top.v ユーザー イ ン ターフ ェ イ スの最上位ラ ッ パーです。<br />

mig_7series_v1_7_rld_ui_wr.v ユーザー イ ン ターフ ェ イ スの書き込みデータ のバ ッ フ ァ ーする FIFO を生成<br />

します。<br />

mig_7series_v1_7_rld_ui_addr.v ユーザー <strong>インターフェイス</strong>のアド レスおよびコマンドのバッファーする<br />

FIFO を生成します。<br />

表 3-8 に、 user_design/rtl/phy ディレク ト リに含まれるモジュールの一覧を示します。<br />

表 3-8 : user_design/rtl/phy ディレクトリに含まれるモジュール<br />

名前 説明<br />

mig_7series_v1_7_rld_phy_top.v 物理層フ ァ イルの最上位モジ ュールです。<br />

mig_7series_v1_7_rld_phy_write_top.v 書き込みパスの最上位ラ ッ パーです。<br />

mig_7series_v1_7_qdr_rld_phy_read_top.v 読み出しパスの最上位モジ ュールです。<br />

mig_7series_v1_7_qdr_rld_mc_phy.v 最大 3 つの I/O バンク (それぞれ 4 レーンの PHY プ<br />

リミティブを使用) をインスタンシエートするパラ<br />

メ ーター指定可能な ラ ッ パーです。<br />

mig_7series_v1_7_rld_phy_write_init_sm.v 初期化ス テー ト マシンのロジッ クを含みます。<br />

mig_7series_v1_7_rld_phy_write_control_io.v メ モ リ へ送信さ れる制御信号の ロ ジ ッ ク を含みます。<br />

mig_7series_v1_7_rld_phy_write_data_io.v メ モ リ へ送信さ れるデータおよびバイ ト 書き込み信号<br />

の ロ ジ ッ ク を含みます。<br />

mig_7series_v1_7_qdr_rld_prbs_gen.v この PRBS モジュールは多対 1 のフ ィードバッ ク メ<br />

カニズムを使用して 2n シーケ ン ス を生成し ます。<br />

mig_7series_v1_7_qdr_rld_phy_ck_addr_cmd_delay.v ア ド レ スおよび制御信号に必要な遅延を与え る ロ ジ ッ<br />

ク を含みます。<br />

mig_7series_v1_7_qdr_rld_phy_rdlvl.v 工程 1 キャ リブレーションのロジックを含みます。<br />

mig_7series_v1_7_qdr_rld_phy_read_stage2_cal.v 工程 2 キャ リブレーションのロジックを含みます。<br />

mig_7series_v1_7_qdr_rld_phy_read_data_align.v 受信データ の位相を揃え ます。<br />

mig_7series_v1_7_qdr_rld_phy_read_vld_gen.v ユーザー イ ン ターフ ェ イ スに返 さ れた読み出しデー<br />

タの Valid 信号を生成する ロ ジ ッ ク を含みます。<br />

mig_7series_v1_7_rld_phy_byte_lane_map.v このモジュールは mc_phy モジュールのポー ト とユー<br />

ザーの メ モ リ ポー ト 間でのベク ターの再マ ッ ピング<br />

を処理します。<br />

mig_7series_v1_7_qdr_rld_phy_4lanes.v I/O バン ク のパ ラ メ ーター指定可能な 4 レーン PHY<br />

です。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 273<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-8 : user_design/rtl/phy ディレクトリに含まれるモジュール (続き)<br />

表 3-9 に、 user_design/ucf ディレク ト リに含まれるファイルを示します。<br />

サンプル デザイ ンのク イ ッ ク スタート<br />

概要<br />

名前 説明<br />

mig_7series_v1_7_qdr_rld_byte_lane.v 出力ま たは入力バイ ト レーン内で必要なプリ ミ テ ィ<br />

ブ イ ン ス タ ンシエーシ ョ ン を含みます。<br />

mig_7series_v1_7_qdr_rld_byte_group_io.v シングル バイ ト レーン用のパ ラ メ ーター指定可能な<br />

I/O ロジック インスタンシエーションと I/O 終端を含<br />

みます。<br />

mig_7series_v1_7_rld_phy_write_cal.v 書き込みキ ャ リ ブレーシ ョ ンの ロ ジ ッ ク を含みます。<br />

表 3-9 : user_design/ucf ディレクトリ<br />

名前 説明<br />

.ucf ユーザー デザイ ンのコ アの UCF ファイルです。<br />

コ アの生成が正常に完了し た ら、ザイ リ ン ク スのイ ンプ リ メ ンテーシ ョ ン ツールを使用し てサンプ<br />

ル デザイ ンの HDL を処理できます。<br />

サンプル デザインのインプリ メンテーショ ン<br />

ise_flow.bat スクリプト フ ァ イルは、 合成、 変換、 マ ッ プ、 配置配線を実行し、 必要なオプシ ョ<br />

ン をすべて設定し ます。 推奨 さ れる ビル ド オプシ ョ ン を確認する場合は、 こ のフ ァ イルを参照し て<br />

ください。<br />

サンプル デザイ ンのシ ミ ュ レーシ ョ ン (標準的なユーザー <strong>インターフェイス</strong>を使用す<br />

るデザイン)<br />

MIG ツールは、 メモ リ コント ローラー (MC) にさまざまなト ラフィ ック データ パターン を生成す<br />

る ための合成可能なテ ス ト ベンチを提供し ます。 こ のテ ス ト ベンチは、 rld_memc_ui_top ラッ<br />

パー、 ユーザー <strong>インターフェイス</strong>を介して rld_ui_top コアにト ラフィ ック パターン を生成する<br />

traffic_generator、 および rld_memc_ui_top コアへクロック リ ソース を提供する イ ン フ ラ<br />

ストラクチャ コアで構成されています。図 3-20 に、 サンプル デザイ ンのテス ト ベンチのブロ ッ ク<br />

図を示します。<br />

274 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 3-20<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-20 : 合成可能なサンプル デザイ ンのブロ ッ ク図<br />

<br />

<br />

CORE Generator の使用方法<br />

<br />

<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 275<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 3-21<br />

図 3-21 に、tb_top モジュールと memc_intfc モジ ュール間のシンプルな読み出し/書き込みト ラ<br />

ンザクシ ョ ンのシ ミ ュレーシ ョ ン結果を示します。<br />

図 3-21 : ユーザー イ ン タ ーフ ェ イ スでの読み出し および書き込みサイ クル<br />

トラフィック ジェネレーターの動作<br />

合成可能なテ ス ト ベンチに含まれる ト ラ フ ィ ッ ク ジェネレーター モジュールは、 パラ メーターを<br />

指定し て、 メ モ リ デザイ ンのさ ま ざまなステ ィ ミ ュ ラ ス パターン を作成で き ます。 こ のジ ェ ネレー<br />

ターは、 デザ イ ンの完全性や実際の ト ラ フ ィ ッ ク をモデル化する擬似ラ ンダム データ ストリーム<br />

を検証する ための繰 り 返し のテ ス ト パターンを生成できます。<br />

アドレス範囲は、BEGIN_ADDRESS および END_ADDRESS パラ メーター使用してユーザーが<br />

定義で き ます。 Init Memory Pattern Control ブロ ッ ク が、 ア ド レ ス空間のすべてのア ド レ ス を連続<br />

して実行するよ うにト ラフィ ック ジ ェ ネ レーターへ指示し、 選択 さ れたデータ パターンに基づい<br />

て適切な値が メ モ リ デバイ スの各位置へ書き込まれます。 テ ス ト ベンチは、 デフ ォル ト でア ド レ ス<br />

をデータ パターンと して使用しますが、 このサンプル デザイ ンのデータ パターンは、 ChipScope<br />

Analyzer で変更可能な vio_data_mode 信号を使用し て設定で き ます。<br />

メ モ リ の初期化完了後、 ト ラ フ ィ ッ ク ジェネレーターはユーザー <strong>インターフェイス</strong> ポー ト のス<br />

ティ ミュレートを開始し、 <strong>メモリ</strong> デバイ スか ら または メ モ リ デバイ スへの ト ラ フ ィ ッ ク を生成し<br />

ます。 ト ラフ ィ ッ ク ジェネレーターはデフォルトで、 擬似ランダム コマンドをポートへ送信しま<br />

す。 つま り 、 命令シーケ ン ス (R/W、 R、 W など) とアドレスはトラフィック ジェネレーター モ<br />

ジュールの PRBS ジェネレーター ロジックで決定されます。<br />

<strong>メモリ</strong> デバイ スか ら返される読み出しデータは、 ユーザー <strong>インターフェイス</strong>の読み出しデータ<br />

ポー ト を介して ト ラ フ ィ ッ ク ジ ェ ネレーターに よ ってア ク セス さ れ、内部生成 さ れた予想データ と<br />

比較さ れます。 エ ラーが検出さ れた場合 (つま り 、 読み出しデータ と 予想データ が不一致の場合)、<br />

エ ラー信号がアサー ト さ れて、 リ ー ド バ ッ ク アドレス、 リードバック データ、 および予想データ<br />

が error_status 出力に ラ ッ チ さ れます。<br />

276 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


サンプル デザイ ンの変更<br />

CORE Generator の使用方法<br />

提供 さ れてい る サンプル デザイ ンには ト ラ フ ィ ッ ク ジェネレーター モジュールが含まれており、<br />

こ れら は異な る コ マン ド やデータ パターンに合わせて変更でき ます。 一部の上位パラ メ ーターは、<br />

example_top.v/vhd モジュールで変更できます。 表 3-10 で、 これらのパラ メ ーターについて説<br />

明します。<br />

表 3-10 : example_top モジュールにおける ト ラフ ィ ッ ク ジェネレーターのパラメーター設定<br />

パラ メ ー タ ー 内容 値<br />

FAMILY ファミ リのタイプを示します。 VIRTEX7<br />

MEMORY_TYPE <strong>メモリ</strong> コント ローラーのタイプを示し 現在サポー ト さ れてい る のは、 DDR2 SDRAM、<br />

ます。<br />

DDR3 SDRAM、 QDRII+ SRAM、 RLDRAM II<br />

です。<br />

nCK_PER_CLK <strong>メモリ</strong> コント ローラー クロック対<br />

DRAM クロックの比率です。<br />

RLDRAM II : 2<br />

RLDRAM III : 4<br />

NUM_DQ_PINS <strong>メモリ</strong>の総 DQ バス幅です。 8 ~ 72 の DQ 幅を 9 の倍数でサポー ト し ます。有<br />

効な最大 DQ 幅は、選択し た メ モ リ デバイ スの周<br />

波数に依存し ます。<br />

MEM_BURST_LEN メ モ リ のデータ バース ト 長です。 必ず 8 に設定し ます。<br />

MEM_COL_WIDTH <strong>メモリ</strong>列アドレスのビットの数です。 必ず 10 に設定し ます。<br />

DATA_WIDTH ユーザー <strong>インターフェイス</strong>のデータ 2 × nCK_PER_CLK × NUM_DQ_PINS<br />

バス幅です。<br />

ADDR_WIDTH <strong>メモリ</strong>のアドレス バス幅です。<br />

MASK_SIZE ユーザー <strong>インターフェイス</strong>のデータ<br />

バスにおけるマスク幅を指定します。<br />

必ず DATA_WIDTH/8 に設定し ます。<br />

PORT_MODE ポー ト モー ド を設定し ます。 有効な設定は<br />

BI_MODE で、WRITE データ パターンを生成し<br />

て比較用に READ データ をモニ タ リ ング し ます。<br />

BEGIN_ADDRESS メ モ リ の開始ア ド レ ス境界を設定し ま<br />

す。<br />

END_ADDRESS メ モ リ の終了ア ド レ ス境界を設定し ま<br />

す。<br />

PRBS_EADDR_MASK_POS 32 ビッ トの AND MASK 位置を設定<br />

します。<br />

ポー ト ア ド レ ス空間の開始境界を定義し ます。こ<br />

の値の LSB [3:0] は無視されます。<br />

ポー ト ア ド レ ス空間の開始境界を定義し ます。こ<br />

の値の LSB [3:0] は無視されます。<br />

PRBS アドレス ジ ェ ネレーターで使用 さ れ、ポー<br />

ト ア ド レ ス空間へラ ンダム アドレスをシフト ダ<br />

ウンします。このマスクが 1 のビ ッ ト 位置に対し<br />

ては、END_ADDRESS 値と PRBS アドレスの論<br />

理積が取ら れます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 277<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-10 : example_top モジュールにおける ト ラフ ィ ッ ク ジェネレーターのパラメーター設定 (続き)<br />

パラ メ ー タ ー 内容 値<br />

CMD_PATTERN 生成さ れる コ マン ド パターン回路を設<br />

定し ます。 大規模なデバイ スでは<br />

CGEN_ALL に設定できす。 サポー ト<br />

されるコマンド パターン回路すべてを<br />

生成する よ う にで き ます。ただ し、一部<br />

の小規模デバイ スでは リ ソースが限ら<br />

れているため、 特定のコマン ド パター<br />

ンに制限する必要が生じ る場合があ り<br />

ます。<br />

有効な設定は次の と お り です。<br />

• CGEN_FIXED – アドレス、 バースト長、 命<br />

令は、 fixed_addr_i、 fixed_bl_i、<br />

fixed_instr_i 入力か ら直接取 り 込まれます。<br />

• CGEN_SEQUENTIAL – ア ド レ スは連続的に<br />

インク リ メント され、 増分はデータ ポー ト の<br />

サイズによって決ま り ます。<br />

• CGEN_PRBS – 32 ステージのリニア フィー<br />

ドバック シフ ト レジスタ (LFSR) が疑似ラ ン<br />

ダム ア ド レ ス、 バース ト 長、 および命令シー<br />

ケ ン ス を生成し ます。 シー ド は、 32 ビッ トの<br />

cmd_seed 入力で設定で き ます。<br />

• CGEN_ALL (default) – 上記すべてのオプ<br />

シ ョ ン を有効に し、 動作中に addr_mode_i、<br />

instr_mode_i、 および bl_mode_i で生成パ<br />

ターンの タ イ プを選択で き る よ う に し ます。<br />

278 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 3-10 : example_top モジュールにおける ト ラフ ィ ッ ク ジェネレーターのパラメーター設定 (続き)<br />

パラ メ ー タ ー 内容 値<br />

DATA_PATTERN rtl ロジックを介して生成されるデータ<br />

パターン回路を設定します。 大規模デ<br />

バイスの場合は、DATA_PATTERN を<br />

DGEN_ALL に設定で き、 生成さ れる<br />

すべてのサポー ト データ パターン回<br />

路を有効にし ます。ハード ウ ェアでは、<br />

vio_data_value_mode を使用してデー<br />

タ パターンの選択や変更が実行さ れま<br />

す。 DATA_PATTERN が DGEN_ALL<br />

に設定 さ れてい る場合にのみ変更で き<br />

ます。<br />

CMDS_GAP_DELAY 各ユーザー バース ト コマンド間の遅<br />

延を一時停止させます。<br />

SEL_VICTIM_LINE 常にロ ジ ッ ク High となるビクティム<br />

DQ ラ イ ン を選択し ます。<br />

有効な設定は次の と お り です。<br />

CORE Generator の使用方法<br />

• ADDR (デフォル ト) - アドレスはデータ パ<br />

ターン と し て使用さ れます。<br />

• HAMMER – DQS の立ち上が り エ ッ ジでは<br />

DQ ピンにすべて1 が現れ、 DQS の立ち下が<br />

りエッジでは DQ ピンにすべて 0 が現れます。<br />

• WALKING1 – DQ ピンに Walking 1 が現れ、<br />

開始位置 1 はア ド レス値に依存し ます。<br />

• WALKING0 – DQ ピンに Walking 0 が現れ、<br />

開始位置 0 はア ド レス値に依存し ます。<br />

• NEIGHBOR – 1 つを除くすべての DQ ピンに<br />

Hammer パターンが現れます。 例外ピ ンの位<br />

置はア ド レ スによ って決 り ます。<br />

• PRBS - 32 ステージの LFSR がランダム デー<br />

タ を生成し、 開始ア ド レ スでシー ド さ れます。<br />

• DGEN_ALL – すべての可能なオプシ ョ ン を<br />

有効に し ます。<br />

0x1 : FIXED - 32 ビットの fixed_data<br />

0x2 : ADDRESS - データ と し て使用 さ れる 32<br />

ビット アドレス<br />

0x3 : HAMMER<br />

0x4 : SIMPLE8 - 8 ワー ド ご と に繰 り 返す単純<br />

な 8 データ パターン<br />

0x5 : WALKING1s - DQ ピンに Walking 1 が<br />

現れます。<br />

0x6 : WALKING0s - DQ ピンに Walking 0 が<br />

現れます。<br />

0x7 : PRBS - 32 ステージの LFSR によってラ<br />

ンダム データ を生成。 PRBS アドレス パター<br />

ンまたは順次アドレス パターンでのみ有効<br />

0x9 : SLOW HAMMER - 低周波数の<br />

HAMMER データ パターンです。<br />

0xF : PHY_CALIB パターン - 0xFF、 00、<br />

AA、 55、 55、 AA、 99、 66。 このモードは、<br />

アドレス 0 で READ コマン ド のみが生成され<br />

る<br />

有効な値は0 ~ 32 です。<br />

Hammer パターンにのみ適用し ます。 有効な設定<br />

は 0 ~ NUM_DQ_PINS です。<br />

値が NUM_DQ_PINS の場合は、すべての DQ ピ<br />

ンに同じ Hammer パターンがあり ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 279<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-10 : example_top モジュールにおける ト ラフ ィ ッ ク ジェネレーターのパラメーター設定 (続き)<br />

パラ メ ー タ ー 内容 値<br />

EYE_TEST トラフィック ジェネレーターに対して<br />

1 つの位置への書き込みのみを生成さ<br />

せます。 読み出 し ト ラ ンザ ク シ ョ ンは<br />

生成さ れません。<br />

traffic_gen モジュールのコマン ド パターン (instr_mode_i、addr_mode_i、bl_mode_i、data_mode_i)<br />

は個別に設定でき ます。 提供されている init_mem_pattern_ctr モジュールには、 ユーザーが<br />

ChipScope Analyzer の仮想 I/O (VIO) を使用して リ アル タイムでコマンド パターンを変更でき<br />

る、 イ ン ターフ ェ イ ス信号があ り ます。<br />

次のコマン ド パターンは変更可能です。<br />

1. vio_modify_enable を 1 に設定し ます。<br />

2. vio_addr_mode_value を次の よ う に設定し ます。<br />

1 : 固定ア ド レ ス<br />

2 : PRBS アドレス<br />

3 : 順次ア ド レ ス<br />

3. vio_bl_mode_value を次の よ う に設定し ます。<br />

1 : 固定 bl<br />

2 : PRBS bl (bl_mode の値が 2 に設定されている場合は、 addr_mode 値が強制的に 2 となり、<br />

PRBS アドレスを生成)<br />

4. vio_data_mode_value を次の よ う に設定し ます。<br />

0 : 予約<br />

有効な設定値は TRUE と FALSE です。<br />

TRUE に設定する と 、vio_instr_mode_value の設<br />

定が上書き さ れます。<br />

注記 : トラフィック ジェネレーターは、 7 <strong>シリーズ</strong> <strong>メモリ</strong> コ ン ト ローラーで使用可能な設定よ り 多 く のオプシ ョ ン をサポー ト し てい る<br />

場合があ り ます。 メ モ リ コント ローラーでサポート されている設定を使用してください。<br />

1 : FIXED データ モード - データは fixed_data_i 入力バスか ら提供さ れます。<br />

2 : DGEN_ADDR (デフォル ト) -アドレスはデータ パターンと して使用されます。<br />

3 : DGEN_HAMMER -DQS の立ち上が り エ ッ ジでは DQ ピンにすべて 1 が現れ、 DQS の立<br />

ち下が り エッ ジでは DQ ピンにすべて 0 が現れます。<br />

4 : DGEN_NEIGHBOR -DQS の立ち上が り エ ッ ジで、 1 つを除くすべての DQ ピンに 1 が現<br />

れます。 例外ピ ンの位置はア ド レ スに よ って決 り ます。<br />

5 : DGEN_WALKING1 -DQ ピンに Walking 1 が現れます。 1 の開始位置はア ド レ ス値に依存<br />

します。<br />

6 : DGEN_WALKING0 -DQ ピンに Walking 0 が現れます。 0 の開始位置はア ド レ ス値に依存<br />

します。<br />

7 : DGEN_PRBS -32 ステージの LFSR がランダム データ を生成し、 開始ア ド レ スでシー ド さ<br />

れます。 こ のデータ モード は、 ア ド レ ス モード が PRBS モー ド ま たは順次の場合のみ有効で<br />

す。<br />

280 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


コアのアーキテクチャ<br />

概要<br />

コアのアーキテクチャ<br />

図 3-22 に、7 <strong>シリーズ</strong> <strong>FPGA</strong> の RLDRAM II/RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リューショ<br />

ンの概略ブ ロ ッ ク 図を示し ます。 こ の図には、 読み出し/書き込みコ マン ド を開始する ための ク ラ イ<br />

アン ト <strong>インターフェイス</strong>への内部 <strong>FPGA</strong> 接続、 および メ モ リ デバイスへの外部<strong>インターフェイス</strong><br />

を示してあ り ます。<br />

X-Ref Target - Figure 3-22<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-22 : RLDRAM II/RLDRAM III <strong>インターフェイス</strong> ソ リ ューシ ョ ンの概略ブ ロ ッ ク図<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 281<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 3-23<br />

<br />

コアは次の要素で構成されています (図 3-23)。<br />

• クライアント <strong>インターフェイス</strong><br />

• <strong>メモリ</strong> コント ローラー<br />

• 物理イ ン ターフ ェ イ ス<br />

• 読み出しパス<br />

• 書き込みパス<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-23 : RLDRAM II/RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンの構成<br />

<br />

<br />

<br />

クライアント <strong>インターフェイス</strong> (ユーザー <strong>インターフェイス</strong>とも呼びます) は、 完全に SDR 信号<br />

ベースのシンプルなプ ロ ト コルを用いて読み出しおよび書き込み要求を生成し ます。 こ のプ ロ ト コ<br />

ルの詳細は、 「クライアン ト インターフェース」 で説明し ます。<br />

<strong>メモリ</strong> コント ローラーはユーザー <strong>インターフェイス</strong>からコマンドを受け取り、RLDRAM<br />

II/RLDRAM III デバイ スのプ ロ ト コル要件を満た し ます。 詳細は、 293 ページの 「 メ モ リ コント<br />

ローラー」 を参照して く ださい。<br />

物理イ ン ターフ ェ イ スは、RLDRAM II/RLDRAM III プロ ト コルとタイ ミ ング要件を満たしながら<br />

外部 メ モ リ デバイスと通信できるように、適切なタイミング関係と DDR 信号を生成し ます。 詳細<br />

は、 290 ページの 「物理イ ン ターフ ェ イ ス」 を参照して く ださい。<br />

PHY の ロ ジ ッ ク は、 読み出しパス と 書き込みパスに分割 さ れています。 書き込みパスは、 読み出し<br />

/書き込み要求の生成に必要な RLDRAM II/RLDRAM III 信号を生成し ます。 こ れには、 ク ロ ッ キ<br />

ン グ、 制御信号、 ア ド レ ス、 データ、 データ マス ク 信号が含まれます。 読み出しパスにはキ ャ リ ブ<br />

レーシ ョ ンの役割 も あ り 、 読み出し応答を Valid 信号 と 一緒にユーザーに返し ます。 こ のプ ロ セ ス<br />

の詳細は、 299 ページの 「キ ャ リ ブレーシ ョ ン」 を参照して く ださい。<br />

282 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


クライアント インターフェース<br />

コアのアーキテクチャ<br />

クライアント <strong>インターフェイス</strong>は 7 <strong>シリーズ</strong> <strong>FPGA</strong> のユーザー デザイ ンを<br />

RLDRAM II/RLDRAM III <strong>メモリ</strong> ソ リューション コ アに接続し、 ユーザー と 外部 メ モ リ デバイ ス<br />

間のや り と り を簡略化し ます。<br />

コ マン ド 要求信号<br />

クライアント <strong>インターフェイス</strong>には、 <strong>メモリ</strong> デバイ スに対する読み出し/書き込みコマンドを発行<br />

するための信号があ り ます。 表 3-11 に、 こ れら の信号を ま と めます。<br />

表 3-11 : クライアント イ ン タ ーフ ェ イ スの要求信号<br />

信号 方向 説明<br />

user_cmd_en 入力 Command Enable。 読み出し ま たは書き込み要求<br />

を発行し、 対応する コ マン ド 信号が有効であ る こ<br />

とを示します。<br />

user_cmd[2 × CMD_PER_CLK - 1:0] 入力 コ マン ド 読み出し、書き込み、ま たは NOP 要求を<br />

発行し ます。 user_cmd_en がアサート される と次<br />

のよ うになり ます。<br />

2’b00 : 書き込みコマンド<br />

2’b01 : 読み出し コ マン ド<br />

2’b10 : NOP<br />

2’b11 : NOP<br />

クロック サイクルごとに複数のコマンドをメモ<br />

リ コ ン ト ローラーへ提供する必要があ る が、 すべ<br />

てのコマン ド ス ロ ッ ト が必要ではない場合、NOP<br />

コ マン ド が有用です。 メ モ リ コント ローラーは、<br />

その他のコマン ドに対応して NOP は無視し ます。<br />

CMD_PER_CLK が 1 の場合 NOP はサポー ト さ<br />

れません。CMD_PER_CLK は、 フ ァ ブ リ ッ ク ク<br />

ロック サ イ ク ルご と に コ ン ト ローラーへ与え ら<br />

れる <strong>メモリ</strong> コ マン ド 数を決定する最上位のパ ラ<br />

メーターで、nCK_PER_CLK およびバース ト長に<br />

依存し ます (図 3-24 参照)。<br />

user_addr[CMD_PER_CLK × ADDR_WIDTH - 1:0] 入力 Command Address。コ マン ド 要求に使用する ア ド<br />

レスです。user_cmd_en がアサート される と有効<br />

にな り ます。<br />

user_ba[CMD_PER_CLK × BANK_WIDTH - 1:0] 入力 Command Bank Address。 書き込み要求に使用す<br />

るアドレスです。 user_cmd_en がアサート される<br />

と有効になります。<br />

user_wr_en 入力 Write Data Enable。 書き込みデータおよびデータ<br />

マス ク を発行し ます。 対応する user_wr_* 信号が<br />

有効であ る こ と を示し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 283<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-11 : クライアント イ ン タ ーフ ェ イ スの要求信号 (続き)<br />

信号 方向 説明<br />

user_wr_data[2 × nCK_PER_CLK × DATA_WIDTH - 1:0] 入力 Write Data。書き込み要求に使用するデータ で、結<br />

合される立ち上が り および立ち下が り データで構<br />

成されます。user_wr_en がアサート される と有効<br />

にな り ます。<br />

user_wr_dm[2 × nCK_PER_CLK × DM_WIDTH - 1:0] 入力 Write Data Mask。 アクティブ High の場合、 選択<br />

し たデバ イ スの書き込みデータ がマ ス ク さ れ、 メ<br />

モリに書き込まれません。user_wr_en がアサート<br />

さ れる と 有効にな り ます。<br />

user_afifo_empty 出力 Address FIFO Empty。アサートされると、コマン<br />

ド バッファーは空です。<br />

user_wdfifo_empty 出力 Write Data FIFO Empty。アサート される と、書き<br />

込みデータ バッファーは空です。<br />

user_afifo_full 出力 Address FIFO Full。 アサートされると、コマンド<br />

バッファーはフルで、 ディアサート されるまで<br />

FIFO への書き込みが無視 さ れます。<br />

user_wdfifo_full 出力 Write Data FIFO Full。アサート されると、書き込<br />

みデータ バッファーはフルで、ディアサート され<br />

るまで FIFO への書き込みが無視 さ れます。<br />

user_afifo_aempty 出力 Address FIFO Almost Empty。アサー ト される と、<br />

コマンド バッファーはほぼ空です。<br />

user_afifo_afull 出力 Address FIFO Almost Full。アサー ト される と、コ<br />

マンド バッファーはほぼフルです。<br />

user_wdfifo_aempty 出力 Write Data FIFO Almost Empty。 アサートされる<br />

と 、 書き込みデータ バッファーはほぼ空です。<br />

user_wdfifo_afull 出力 Write Data FIFO Almost Full。アサー ト さ れる と 、<br />

書き込みデータ バッファーはほぼフルです。<br />

user_rd_valid[nCK_PER_CLK - 1:0] 出力 Read Valid。 メ モ リ か ら読み出し たデータ が<br />

user_rd_data[2 × nCK_PER_CLK × DATA_WIDTH - 1:0] 出力<br />

user_rd_data で有効で、 サンプル可能になった こ<br />

とを示します。<br />

Read Data。読み出し コ マン ド か ら読み出し たデー<br />

タです。<br />

init_calib_complete 出力 Calibration Done。読み出し キ ャ リ ブレーシ ョ ンが<br />

完了し、 要求を発行で き る状態のユーザー デザイ<br />

ンに戻ったこ と を示します。<br />

mem_ck_lock_complete 出力 Memory CK Lock Done。メ モ リ へ駆動 さ れる CK<br />

の ノ イ ズが最小と な る よ う に、 mem_ck_lock_<br />

complete がアサー ト されるまでシステムを ノ イ<br />

ズがない状態に保つ必要があ り ます。<br />

284 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


クライアント <strong>インターフェイス</strong>を介したコアとの<strong>インターフェイス</strong><br />

コアのアーキテクチャ<br />

特定の ク ラ イ ア ン ト <strong>インターフェイス</strong>信号の幅は、 システム ク ロ ッ ク 周波数およびバース ト 長に<br />

依存し ます。 し たがって、 ク ラ イ アン ト <strong>インターフェイス</strong>はコンフィギュレーションの要件に応じ<br />

てファブリ ッ ク クロック サイ クルご と に複数のコマン ド を送信でき ます。<br />

図 3-24 は user_cmd 信号を示し、 コ ンフ ィ ギ ュ レーシ ョ ンに応じ て この信号がどのよ う に複数の<br />

コマンドで構成されるかを表しています。<br />

X-Ref Target - Figure 3-24<br />

<br />

<br />

<br />

<br />

<br />

図 3-24 : user_cmd 信号の複数のコ マン ド<br />

図 3-25 に、 RLDRAM II の 4 ワード バース ト アーキテクチャに対応するク ラ イアン ト インター<br />

フェイス プロ ト コルを示します。<br />

X-Ref Target - Figure 3-25<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-25 : RLDRAM II クライアント <strong>インターフェイス</strong> プロト コル<br />

(4 ワード バース ト アーキテクチャ )<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 285<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

図 3-26 に、 RLDRAM III の 4 ワード バース ト アーキテクチャのク ラ イアン ト <strong>インターフェイス</strong><br />

プロ ト コルを示します。<br />

X-Ref Target - Figure 3-26<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-26 : RLDRAM III クライアント <strong>インターフェイス</strong> プロト コル<br />

(4 ワード バース ト アーキテクチャ )<br />

要求が受け入れ可能 と な る前に、 ui_clk_sync_rst 信号を Low にデ ィ アサー ト する必要があ り<br />

ます。 この信号のディ アサート後、 ユーザー <strong>インターフェイス</strong> FIFO はコマン ド および格納用デー<br />

タ を受信可能 と な り ます。 メ モ リ の初期化プ ロ セスおよび PHY のキ ャ リ ブレーシ ョ ンが完了する<br />

と、 init_calib_complete 信号がアサートされ、 コアはクライアント要求を発行できるように<br />

なります。<br />

user_cmd_en を 1 サイクル パルス と し てアサー ト する と コマン ド 要求が発行されます。 この と<br />

き、 user_cmd、 user_addr、 user_ba 信号がいずれ も有効であ る必要があ り ます。 読み出し要<br />

求を発行するには user_cmd を 2’b01 に、 書き込み要求を発行する には こ れを 2'b00 に設定し ま<br />

す。 書き込み要求では、 user_wr_en 信号が High にアサート される こ とで、 コマン ド と同じサイ<br />

286 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 3-27<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

コアのアーキテクチャ<br />

クルでデータが発行され、 有効なデータが user_wr_data および user_wr_dm に現れます。<br />

RLDRAM II および 8 ワード バース ト アーキテクチャの場合、 書き込みコマンドに対してデータ<br />

サイクルを追加する必要があり ます (図 3-27)。 コマンド フローのギャップは必要に応じて読み出<br />

しコマンドで埋めることができます。<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-27 : RLDRAM II クライアント <strong>インターフェイス</strong> プロト コル (8 ワード バース ト アーキテクチャ )<br />

<br />

図 3-28 に、 RLDRAM III の 8 ワード バース ト アーキテクチャのク ラ イアン ト <strong>インターフェイス</strong><br />

プロ ト コルを示します。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 287<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 3-28<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-28 : RLDRAM III クライアント <strong>インターフェイス</strong> プロト コル<br />

(8 ワード バース ト アーキテクチャ )<br />

読み出し コ マン ド が しばら く し て発行 さ れる と (システムのコンフィギュレーショ ンおよびレイテ<br />

ンシに基づく)、 user_rd_valid[0] 信号がアサー ト さ れて user_rd_data が有効であ る こ と を<br />

示しますが、 user_rd_valid[1] がアサー ト された場合は user_rd_data が有効であ る こ と を<br />

示します (図 3-29)。 コ アは返さ れたデータ をバ ッ フ ァーし ないため、 user_rd_valid[0] および<br />

user_rd_valid[1] がアサー ト されているサイ クルで読み出しデータをサンプルする必要があ り<br />

ます。 データ のバ ッ フ ァー機能は、 必要に応じ てユーザーが追加で き ます。<br />

user_rd_valid 信号がすべて一緒にアサー ト さ れて最大幅のデータ が返さ れる よ う に、 メ モ リ コ<br />

ントローラーはコマンドを PHY への特定のス ロ ッ ト にしか与えませんが、 コ ン ト ローラーの変更<br />

に備えて追加の user_rd_valid 信号が提供さ れます。<br />

288 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 3-29<br />

<br />

<br />

<br />

<br />

<br />

図 3-29 : クライアント <strong>インターフェイス</strong> プ ロ ト コルの読み出し デー タ<br />

クロッキング アーキテクチャ<br />

コアのアーキテクチャ<br />

PHY デザイ ンでは、 MMCM および PLL モジ ュールを使用し て さ ま ざ ま な ク ロ ッ ク を生成する必<br />

要があ り ます。 ク ロ ッ ク をデザイ ン全体に分配するために、 グ ローバル クロック ネッ ト ワークと<br />

ローカル クロック ネ ッ ト ワー ク の両方を使用し ます。<br />

ク ロ ッ ク の生成および分配回路 と ネ ッ ト ワー ク は PHY 内部のブ ロ ッ ク を駆動し ます。 こ れ ら のブ<br />

ロックは、次の 4 つの機能に大別さ れます。<br />

• 内部 <strong>FPGA</strong> ロジック<br />

• 書き込みパス (出力) ロジック<br />

• 読み出しパス (入力) および遅延ロ ジ ッ ク<br />

• IDELAY 基準 ク ロ ッ ク (200MHz)<br />

<br />

PHY には MMCM および PLL がそれぞれ 1 つずつ必要です。 MMCM および PLL は、 ほ と んど<br />

の内部ロ ジ ッ ク用の ク ロ ッ ク、 PHASER への入力ク ロ ッ ク、 そし てマルチ I/O バンク インプリ メ<br />

ンテーシ ョ ンで複数の PHASER ブ ロ ッ ク の同期のために必要な同期パルス を生成し ます。<br />

PHASER ブ ロ ッ ク には、 メ モ リ 基準 ク ロ ッ ク、 周波数基準 ク ロ ッ ク、 位相基準 ク ロ ッ ク の 3 つを<br />

PLL か ら供給する必要があ り ます。 メ モ リ 基準 ク ロ ッ ク は、 RLDRAM II/RLDRAM III <strong>メモリ</strong> イ<br />

ンターフェイス ク ロ ッ ク と 同じ周波数であ る必要があ り ます。 周波数基準 ク ロ ッ ク は、 400 ~<br />

1066MHz の周波数 と な る よ う に メ モ リ の ク ロ ッ ク 周波数の 2 倍または 4 倍のいずれか と し ます。<br />

位相基準 ク ロ ッ ク は読み出しバン ク で使用し ます。 こ の ク ロ ッ ク は内部配線 さ れた メ モ リ 読み出し<br />

クロック (QK/QK#) を使用して生成され、PHASER ロジックでデータ キ ャ プチャに使用 さ れます。<br />

PLL によって生成される内部ファブリ ッ ク クロックは、グローバル クロッキング リソースで<br />

RDRAM II メ モ リ の半分の周波数、 および RLDRAM III <strong>メモリ</strong>の 1/4 の周波数で ク ロ ッ キング さ<br />

れます。<br />

IDELAYCTRL モジュールには 200MHz の IDELAY 基準 ク ロ ッ ク を供給する必要があ り ます。 こ<br />

のモジ ュールは、 環境の変化に合わせて I/O 領域内の IDELAY エレ メ ン トのキャ リブレーシ ョ ン<br />

を常時実行し ます。 IP コアは、 外部クロック信号 が IDELAYCTRL モジ ュールを駆動する こ と を<br />

前提 と し ています。 IDELAYCTRL 入力ク ロ ッ ク を PLL クロックで駆動する場合は、PLL ロック<br />

信号を IODELAY_CTRL モジュール内の rst_tmp_idelay 信号に組み込む必要があ り ます。 こ れに<br />

よ り 、 ク ロ ッ ク を使用前に安定させる こ と がで き ます。<br />

表 3-12 に、 イ ン フ ラ ス ト ラ クチャ モジュールで使用する信号をま とめます。 これらは、 デザイン<br />

で必要な ク ロ ッ ク および リ セ ッ ト 信号を供給し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 289<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-12 : インフラストラクチャのクロッキング/ リセッ ト信号<br />

信号 方向 説明<br />

mmcm_clk 入力 シ ス テム ク ロ ッ ク 入力です。<br />

sys_rst 入力 ユーザー アプ リ ケーシ ョ ンからのコア リセットです。<br />

iodelay_ctrl_rdy 入力 IDELAYCTRL ロック ステータスです。<br />

clk 出力 半分の周波数のフ ァ ブ リ ッ ク クロックです。<br />

mem_refclk 出力 メ モ リ ク ロ ッ ク と 同じ周波数の PLL 出力 ク ロ ッ ク です。<br />

freq_refclk 出力 PHASER の FREQREFCLK 入力を供給する PLL 出力 ク ロ ッ ク です。 周波数が 400 ~<br />

1066MHz の範囲と な る よ う に生成されます。<br />

sync_pulse 出力 mem_Refclk の 1/16 で生成される PLL 出力です。 マルチバン ク インプリ メンテーション<br />

で同期信号 と し て PHY ハー ド ブロックに送信されます。<br />

pll_locked 出力 PLLE2_ADV か ら の ロ ッ ク 出力です。<br />

rstdiv0 出力 内部フ ァ ブ リ ッ ク の 1/2 周波数 ク ロ ッ ク に同期し た リ セ ッ ト 出力です。<br />

rst_phaser_ref 出力 物理層の PHASER のリセットです。<br />

物理イ ン タ ーフ ェ イ ス<br />

表 3-13 : 物理イ ン タ ーフ ェ イ スの信号<br />

物理イ ン ターフ ェ イ スは、 <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>を外部 RLDRAM<br />

II/RLDRAM III デバイ スに接続する部分です。表 3-13 に、このイ ン ターフ ェ イ スで使用される I/O<br />

信号を説明し ます。 こ れ ら の信号は、 RLDRAM II/RLDRAM III デバイ スの対応する信号へ直接接<br />

続でき ます。<br />

信号 方向 説明<br />

rld_ck_p 出力 System Clock CK。 <strong>メモリ</strong> デバイ スへ供給さ れる ア ド レ ス/コマンド クロックです。<br />

rld_ck_n 出力 System Clock CK#。 <strong>メモリ</strong> デバイ スへ供給 さ れる反転シ ス テム クロックです。<br />

rld_dk_p 出力 Write Clock DK。 <strong>メモリ</strong> デバイ スへ供給 さ れる書き込み ク ロ ッ ク です。<br />

rld_dk_n 出力 Write Clock DK#。 <strong>メモリ</strong> デバイ スへ供給さ れる反転書き込み ク ロ ッ ク です。<br />

rld_a 出力 Address。 メ モ リ の操作で使用する ア ド レ スです。<br />

rld_ba 出力 Bank Address。 メ モ リ の操作で使用するバン ク アドレスです。<br />

rld_cs_n 出力 Chip Select CS#。 <strong>メモリ</strong>のアクティブ Low のチップ セレ ク ト 制御信号です。<br />

rld_we_n 出力 Write Enable WE#。 <strong>メモリ</strong>のアクティブ Low のライ ト イ ネーブル制御信号です。<br />

rld_ref_n 出力 Refresh REF#。 <strong>メモリ</strong>のアクティブ Low の リ フ レ ッ シ ュ制御信号です。<br />

rld_dm 出力<br />

rld_dq 入力/出力<br />

Data Mask DM。 アクティブ High のマ ス ク 信号です。 <strong>FPGA</strong> によって駆動され、書<br />

き込みコマンド中に<strong>メモリ</strong>へ書き込みた く ないデータをマスク します。<br />

Data DQ。 双方向データ ポー ト です。 書き込みの場合は <strong>FPGA</strong> に よ って、 読み出し<br />

の場合は メ モ リ によ って駆動されます。<br />

290 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 3-13 : 物理イ ン タ ーフ ェ イ スの信号 (続き)<br />

信号 方向 説明<br />

コアのアーキテクチャ<br />

rld_qvld 入力 Read Data Valid QVLD。 rld_dq バスのデータ が有効であ る こ と を示す信号です。<br />

rld_qk_p 入力<br />

rld_qk_n 入力<br />

rld_reset_n 出力<br />

Read Clock QK。rld_dq の読み出しデータ に揃え ら れた メ モ リ エッジから返される<br />

読み出し ク ロ ッ ク です。PHY は QK# とこのクロックを併用して rld_dq の読み出し<br />

データ をサンプルし ます。<br />

Read Clock QK#。 メ モ リ か ら返さ れる反転し た読み出し ク ロ ッ ク です。PHY は QK<br />

とこのクロックを併用して rld_dq で読み出しデータ をサンプル し ます。<br />

RLDRAM III リセット ピン。RLDRAM III デバイ スに対する ア ク テ ィ ブ Low のリ<br />

セッ トです (RLDRAM II では使用されない)。<br />

図 3-30 に、 標準の RLDRAM II コンフィギュレーション 3、バースト長 4、 コマンドがコントロー<br />

ラーから PHY へ送信 さ れる場合の タ イ ミ ング図を示し ます。 cal_done がアサー ト された後、 コン<br />

ト ローラーはコマン ド の発行を開始し ます。 cs0 および we0 信号 (ref0 は Low に維持) がアサー ト<br />

されて addr0 および ba0 が有効であ る こ と が確実になる と、 書き込みコマン ド が 1 つ発行 さ れま<br />

す。 こ れはバース ト 長 4 の コ ン フ ィ ギ ュ レーシ ョ ンであ る ため、 発行する必要があ る 2 番目の コ マ<br />

ンドは No Operation (NOP) です。 すなわち、 すべての制御信号 (cs1、 we1、 ref1) が Low に維持<br />

されます。2 クロック サイクル後、wr_en0/1 信号がアサー ト さ れ、書き込みコ マン ド の wr_data0/1<br />

および wr_dm0/1 信号が有効 と な り ます。 同一 ク ロ ッ ク サイクルで、cs0 (we0 および ref0 は Low<br />

に維持) がアサー ト さ れて関連する ア ド レ スが addr0 および ba0 に配置さ れる と 、 読み出し コ マン<br />

ドが 1 つ発行さ れます。 cs0/1、 ref0/1、 および ba0/1 がアサート される と、 リ フレ ッシュ コマンド<br />

が 2 つ発行さ れます。 こ れら のコ マン ド は、 メ モ リ のバン ク 規則が満た さ れる限 り 、 同一 ク ロ ッ ク<br />

サイクルで発行できます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 291<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 3-30<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-30 : RLDRAM II バース ト 長 4、 コンフィギュレーション 3、 アドレス マルチプレ クスが OFF の場合の<br />

PHY 専用イ ン タ ーフ ェ イ ス<br />

コント ローラーは wr_en 信号およびデータ を コ ン フ ィ ギ ュ レーシ ョ ンの設定に基づいて必要な時<br />

に送信し ます。 そのタ イ ミ ングはコ ンフ ィ ギ ュ レーシ ョ ンに依存し ます。表 3-14 に、 コ ン フ ィ ギ ュ<br />

レーシ ョ ンに対し てデータ が有効な場合に wr_en 信号がアサー ト さ れる タ イ ミ ン グ を示し ます。ア<br />

ドレス マルチプレ ク スの使用時は、 PHY に よ ってア ド レ ス信号が再調整さ れ、 1 クロック サイク<br />

ルではな く 2 クロック サ イ ク ル以上出力さ れます。<br />

292 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

表 3-14 : RLDRAM II コマンドからライト イネーブルまでのクロック数<br />

アドレス マルチプレ クス コンフ ィ ギュレーシ ョ ン<br />

<br />

<br />

<br />

<br />

コマンドからライト イネーブルまでの<br />

クロック数 (クロック サイクル)<br />

ON 1 3<br />

2 4


表 3-14 : RLDRAM II コマンドからライト イネーブルまでのクロック数 (続き)<br />

アドレス マルチプレ クス コンフ ィ ギュレーシ ョ ン<br />

コアのアーキテクチャ<br />

wr_en 信号は、最初の wr_en 信号がアサー ト さ れる前に 1 クロック サ イ ク ル間余分にアサー ト し、<br />

ディアサート後は 1 クロック サ イ ク ル間余分に維持する必要があ り ます。 こ れに よ り 、 共有バスは<br />

読み出し か ら書き込みへ/書き込みか ら読み出しへ と 変更する時間が与え られます。 物理層には、 書<br />

き込みか ら読み出しへ/読み出し か ら書き込みへ と 遷移する際に、 2 クロック サイクル間の No<br />

Operation (NOP) が必要です。 この 2 クロック サイクルの要件は PCB に依存する も ので、 ボー ド<br />

レイアウ トによっては増分しなければならない場合があります。<br />

<strong>メモリ</strong> コントローラー<br />

3 5<br />

OFF 1 2<br />

注記 :<br />

1. 図 3-29 に示すと お り です。<br />

コマンドからライト イネーブルまでの<br />

クロック数 (クロック サイクル)<br />

2 3<br />

3 4 (1)<br />

<strong>メモリ</strong> コント ローラーは RLDRAM II/RLDRAM III のアクセス要件を適用し、 PHY と接続しま<br />

す。 ま た、 メ モ リ デバイスへ転送されるコマンドの順と同じ順でコマンドを処理します。<br />

<strong>メモリ</strong> コント ローラーはユーザー <strong>インターフェイス</strong>からコマンドを受け取り、 そのコマンドをす<br />

ぐに処理で き る か、 ま たは待機する必要があ る かを判断し ます。 すべての要件が満た さ れる と 、 コ<br />

マンドは PHY イ ン ターフ ェ イ スへ配置さ れます。書き込みコ マン ド の場合、コ ン ト ローラーはユー<br />

ザー <strong>インターフェイス</strong>向けに信号を生成して PHY へ書き込みデータを提供します。 この信号は、<br />

コ マン ド と データ の適切な関係性を確保する ために、 メ モ リ コ ン フ ィ ギ ュ レーシ ョ ンに基づいて生<br />

成されるものです。 オート リフレッシュ コマンドは、 <strong>メモリ</strong> デバイ スの リ フ レ ッ シ ュ要件を満た<br />

すためにコ ン ト ローラーによ ってコマン ド フ ロー内に挿入 さ れます。<br />

CIO デバイ スでは、データ バスは読み出しおよび書き込みデータ で共有 さ れます。読み出し コ マン<br />

ドから書き込みコマンド (またはその逆) へと切り替えると、バスの変更が原因でコマンド ス トリー<br />

ムにギャ ップが発生します。 スループッ ト を向上させるには、 コマンド バスの変更を可能な限り最<br />

小限に抑え る必要があ り ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 293<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

図 3-31 に、 コ ン ト ローラーのステー ト マシン ロジックを示します。<br />

X-Ref Target - Figure 3-31<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-31 : コントローラー ステート マシン ロジック (CMD_PER_CLK == 1 または 2)<br />

PHY のアーキテクチャ<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

PHY は専用のブロ ッ ク と ソ フ ト キャ リブレーション ロ ジ ッ ク で構成 さ れています。 専用ブ ロ ッ ク<br />

は隣接し て配置さ れ、 ク ロ ッ ク およびデータパスの配線を最短に抑え、 高性能な物理層を構築する<br />

ために イ ン ターコ ネ ク ト で直接接続さ れています。<br />

RLDRAM II/RLDRAM III PHY で使用されている主な専用ブロ ッ ク と その機能は次の とお り で<br />

す。<br />

• <strong>FPGA</strong> の各バン ク で利用可能な I/O は 4 つのバイ ト グループに分けられ、1 つのグループは最<br />

大 12 の I/O で構成されています。<br />

• 各バイ ト グループに PHASER_IN/PHASER_OUT ブ ロ ッ ク があ り 、 ク ロ ッ ク 位相を高精度で<br />

調整で き る マルチス テージのプ ロ グ ラ マブル遅延ラ イ ン ループを形成し ます。 PHASER に<br />

よって生成される I/O バンク内の専用クロック構造はバイ ト グループ ク ロ ッ ク と 呼ばれ、 こ<br />

の ド ラ イバーに よ って駆動さ れる ロー ド 数を最小に抑え ます。<br />

• OUT_FIFO と IN_FIFO は各バイ ト グループが備える、 深さが 8 または 4 の浅い FIFO で、<br />

データ を フ ァ ブ リ ッ ク ドメインから I/O クロック ド メ イ ンへ転送する役割を果た し ます。<br />

294 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 3-32<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

書き込みパス<br />

コアのアーキテクチャ<br />

OUT_FIFO は メ モ リ に送信する出力データ と ア ド レ ス/制御信号を格納する ために使用し、<br />

IN_FIFO はキ ャ プチャ し た読み出しデータ を フ ァ ブ リ ッ ク に転送する前に格納する ために使<br />

用します。<br />

<strong>メモリ</strong> <strong>インターフェイス</strong>信号をバイ ト グループ内に配置する際の規則については、 310 ページの<br />

「ピ ン配置の要件」 で説明し ます。<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-32 : RLDRAM II/RLDRAM III <strong>インターフェイス</strong> <strong>ソリューション</strong>の PHY の概略ブ ロ ッ ク図<br />

<br />

RLDRAM II/RLDRAM III への書き込みパスには、 メ モ リ の操作に必要なア ド レ ス信号、 データ信<br />

号、 制御信号が含まれます。 rld_a および rld_ba アドレスを含む<strong>メモリ</strong>への制御ストローブ<br />

(rld_cs_n、rld_we_n、rld_ref_n、rld_reset_n (RLDRAM III のみ)) はいずれも SDR フォー<br />

マ ッ ト を使用し ます。 書き込みデータ の値 (rld_dq および rld_dm) は、 必要な 2/4/8 ワード バー<br />

ス ト を ク ロ ッ ク 周期内で実現する ために DDR フォーマッ トを使用します。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 295<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

出力アーキテ ク チ ャ<br />

RLDRAM II/RLDRAM III <strong>インターフェイス</strong> <strong>ソリューション</strong>の出力パスは、7 <strong>シリーズ</strong> <strong>FPGA</strong> が<br />

備える OUT_FIFO、 PHASER_OUT_PHY、 PHY_CNTRL、 および OSERDES プリ ミティブを使<br />

用します。 これらのブロッ クは、 <strong>メモリ</strong> デバイ スへのすべての PHY 出力を ク ロ ッ キングする目的<br />

で使用し ます。<br />

PHASER_OUT_PHY は、 メ モ リ への出力に必要な ク ロ ッ ク を供給し ます。 各バイ ト グループの<br />

OUT_FIFO と OSERDES/ODDR に同期 ク ロ ッ ク を供給し ます。 PHASER_OUT_PHY は、 それぞ<br />

れのバイ ト グループのバイ ト クロック (OCLK)、 分周バイト クロック (OCLKDIV)、 遅延バイト<br />

クロック (OCLK_DELAYED) を生成し ます。 バイ ト クロック (OCLK) は<strong>メモリ</strong> インターフェイ<br />

ス ク ロ ッ ク と 同じ周波数で、分周バイ ト クロック (OCLKDIV) は<strong>メモリ</strong> <strong>インターフェイス</strong> クロッ<br />

ク の半分の周波数です。 バイ ト クロック (OCLK) を使用し て、 書き込みデータ (DQ)、データ マス<br />

ク (DM)、 アドレス、制御、およびシステム クロック (CK/CK#) の信号を OSERDES/ODDR から<br />

<strong>メモリ</strong>へクロッキングします。PHASER_OUT_PHY か ら出力さ れる OCLK_DELAYED はバイ ト<br />

クロック (OCLK) に対し て位相シフ ト し た調整可能な出力で、 メ モ リ への書き込み ク ロ ッ ク<br />

(DK/DK#) の生成に使用されます。 図 3-33 に、 複数の ク ロ ッ ク のア ラ イ メ ン ト を示し、 これら を<br />

使用し て どの よ う に信号が揃え られるかを示し ます。<br />

X-Ref Target - Figure 3-33<br />

<br />

<br />

<br />

<br />

<br />

図 3-33 : 書き込みパス出力のア ラ イ メ ン ト<br />

OCLK_DELAYED は、 DDR 書き込みデータ の中央に位置する ク ロ ッ ク を生成し ますが、 SDR ア<br />

ドレス/制御信号に対し ては理想的なア ラ イ メ ン ト を生成し ません。 こ のため、 OCLK を使用して<br />

CK/CK# を生成し、 メ モ リ クロック CK および書き込み ク ロ ッ ク DK が正し く 揃え られる よ う に、<br />

アドレス/制御のバイ ト レーンまたはデータ バイ ト レーンのいずれかがシフ ト されます (キャ リブ<br />

レーシ ョ ン を書き込みデータ パスに対して d あるかど うかによる)。 特定の周波数について、 正し<br />

く 書き込み動作が行われる よ う にワ ン タ イ ム キャ リブレーションが OCLK_DELAYED に対し て<br />

実行さ れます。 詳細は、 「キャ リ ブレーシ ョ ン」 を参照して く ださい。<br />

296 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 3-34<br />

<br />

<br />

<br />

<br />

<br />

<br />

コアのアーキテクチャ<br />

OUT_FIFO は書き込みデータ を フ ァ ブ リ ッ ク ドメインから PHASER クロック ド メ イ ンへ変換す<br />

る一時バッファーと して機能し、I/O ロ ジ ッ ク か ら の出力データ を ク ロ ッ ク で出力し ます。<br />

OUT_FIFO は非同期モー ド で動作し、読み出しおよび書き込み ク ロ ッ ク は未定義の位相に も かかわ<br />

らず同一周波数で動作し ます。 OUT_FIFO からのデータ フローがストールしてしまう可能性があ<br />

りますが、浅い同期 PRE_FIFO は、 OUT_FIFO からフラグがアサート される際にファブリ ックか<br />

ら出力 さ れる連続データ を用いて OUT_FIFO を駆動します。 OUT_FIFO および OSERDES の操<br />

作に必要な ク ロ ッ クはPHASER_OUT_PHY か ら供給 さ れます。<br />

図 3-34 に、 PPHASER_OUT_PHY を使用した書き込みパスのク ロ ッキングの詳細を示し ます。<br />

PHY 制御ブ ロ ッ ク を用いて、 イ ン ターフ ェ イ スで使用 さ れるすべての PHASER_OUT_PHY ブ<br />

ロ ッ ク が正確に開始する よ う に し、RLDRAM III 動作の ト ラ イ ス テー ト タ イ ミ ン グ を制御し ます。<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-34 : RLDRAM II <strong>インターフェイス</strong> ソ リ ューシ ョ ンの書き込みパスのブロ ッ ク図<br />

<br />

<br />

<br />

<br />

<br />

<br />

OSERDES ブロックはすべての I/O にあ り、 メモ リ デバイ ス と の通信に必要な ク ロ ッ ク、 ア ド レ<br />

ス、 データ、 および制御信号の生成を簡潔にする役割を果た し ます。 OSERDES のフローでは 2 つ<br />

の異な る入力 ク ロ ッ ク を使用し て こ の機能を実現し ます。 データ入力ポー ト D1/D2 または D3/D4<br />

のデータは CLKDIV 入力ポー ト に供給さ れる ク ロ ッ ク で入力さ れ、 パ ラ レル-シ リ アル変換ブ ロ ッ<br />

クを通過します。PHY から <strong>メモリ</strong> デバイ スへの出力はすべて OSERDES を使用して駆動します。<br />

OSERDES か ら出力さ れた信号はすべて、 生成し た ク ロ ッ ク (アドレス/制御信号の場合は<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 297<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

読み出しパス<br />

CK/CK#、 データおよびデータ マスクの場合は DK/DK#) に対し て中央に揃え る必要があ り ます。<br />

このため、OSERDES と PHASER_OUT_PHY ブ ロ ッ ク を組み合わせて使用する こ と で こ のア ラ イ<br />

メ ン ト を実現し ています。<br />

読み出し パスは メ モ リ か ら供給 さ れた読み出し ク ロ ッ ク を使用し てデータ キャプチャを実行する<br />

と共に、 読み出しクロックをデータ ウィンドウの中央に位置させてデータ キャプチャ時に十分な<br />

マージン を確保する役割を果た し ます。 読み出し を実行する前には、 キ ャ リ ブレーシ ョ ンが必要で<br />

す。 キ ャ リ ブレーシ ョ ンは読み出しパスの主要な機能であ り 、 ユーザー <strong>インターフェイス</strong>が<strong>メモリ</strong><br />

に対する ト ラ ンザ ク シ ョ ン を開始する前に実行する必要があ り ます。<br />

データ キャプチャ<br />

図 3-35 に、 読み出し ク ロ ッ ク と 読み出しデータ が <strong>FPGA</strong> に入力されてからユーザーに到達する ま<br />

でのパスの概略ブ ロ ッ ク 図を示し ます。 読み出し ク ロ ッ ク は ILOGIC をそのまま通過し、各バイ ト<br />

グループの PHASER に入力されます。 RLDRAM II の場合、 マルチ領域 BUFMR を経由して読み<br />

出しキャプチャ ク ロ ッ ク が読み出しデータ キャプチャで使用される必要な PHASER に入力され<br />

ます。 BUFMR の出力は直後にあ る PHASER の PHASEREFCLK 入力だけでな く 、 その上下に位<br />

置するバン ク で利用可能な PHASER の PHASEREFCLK 入力 も駆動で き ます。 2 バイ ト データ に<br />

対応する シン グル キャプチャ ク ロ ッ ク が存在する可能性があ り 、 BUFMR しかこのクロックを必<br />

要に応じ て複数の PHASER へ割 り 当て る こ と がで き ないため、 BUFMR は RLDRAM II に不可欠<br />

です。<br />

RLDRAM III にはバイ ト データ あた り キ ャ プチャ クロックが 1 つ含まれる ため、 マルチ領域<br />

BUFMR は必要あ り ません。次に、 ISERDES ブロックで PHASER に よ って生成し たバイ ト グルー<br />

プ クロック (ICLK、ICLKDIV) を用いて、バイ ト グループ内の読み出しデータ (DQ) をキャプチャ<br />

します。 キャリブレーション ロジックは、 PHASER に よ って提供さ れる細精度の遅延タ ッ プを イ<br />

ンクリ メントしてバイト グループ クロックの ICLK を読み出しデータ ウィンドウの中央に揃え、<br />

最大限のデータ キャプチャ マージンを確保し ます。<br />

各バイ ト グループ の IN_FIFO (図 3-35) は、それぞれのバイ ト グループの ISERDES でキャプチャ<br />

した各 DQ ビッ トから 4 ビッ ト データ を受信し、ス ト レージ アレイに書き込みます。PHASER_IN<br />

で生成した周波数が 1/2 のバイ ト グループ クロック (ICLKDIV) は、 ISERDES のデータ キャプ<br />

チャ のほか、 キ ャ プチャ し た読み出しデータ を IN_FIFO に書き込む際に も使用し ます。 IN_FIFO<br />

に対する ラ イ ト イ ネーブル信号は常にアサー ト さ れ、入力データ を連続し て書き込む こ と がで き ま<br />

す。<br />

さらに RLDRAM III では、 IN_FIFO は ICLKDIV ドメイン (半分の メ モ リ ク ロ ッ ク 周波数で動作<br />

) からファブリ ック クロック ドメイン (1/4 の<strong>メモリ</strong> ク ロ ッ ク周波数で動作) へデータを転送しま<br />

す。IN_FIFO でフラグがアサート される と IN_FIFO からのデータ フローがストールしてしまう可<br />

能性があ り ますが、 その場合で も IN_FIFO の受信側では浅い同期 post_fifo を使用しているため、<br />

キ ャ プチャ し たデータはフ ァ ブ リ ッ ク か ら連続し て読み出す こ と がで き ます。 ま た、 キ ャ リ ブレー<br />

シ ョ ンに よ り 、読み出しデータ を周波数が 1/2 のファブリ ッ ク クロックの立ち上がりエッジに揃え<br />

ると共に、すべてのバイト グループか ら の読み出しデータ の遅延が同じ にな る よ う に し ます。 実際<br />

のキャ リ ブレーシ ョ ンおよびアラ イ メ ン ト ロジックの詳細は、 「キャ リ ブレーシ ョ ン」 で説明し ま<br />

す。<br />

298 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 3-35<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-35 : RLDRAM II/RLDRAM III <strong>インターフェイス</strong> ソ リ ューシ ョ ンの読み出しパス ブロック図<br />

キャリブレーショ ン<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

コアのアーキテクチャ<br />

キャ リブレーション ロ ジ ッ ク は、 ク ロ ッ ク がデータ有効ウ ィ ン ド ウ の中心に揃 う よ う に、 読み出し<br />

ク ロ ッ ク および読み出しデータ に遅延を与え ます。 ク ロ ッ ク を中央に位置 させる には、 ク ロ ッ ク に<br />

対し て高細精度の遅延タ ッ プを与え る こ と ので き る PHASER を使用し ます。 PHASER_IN の細精<br />

度の遅延タップはそれぞれ、基準クロック周期の 1/64 ずつ、 最大で 32 タップまでクロックをイン<br />

クリメントします。400MHz 以上で動作するデザ イ ンの場合、 書き込みデータ について書き込み ク<br />

ロックが正しく中央で揃えられるように、キャリブレーション ロジックもワンタイム書き込みキャ<br />

リ ブレーシ ョ ン を実行し ます。<br />

キ ャ リ ブレーシ ョ ンは メ モ リ の初期化後に開始 さ れます。 安定する までは、 すべての読み出しパス<br />

ロ ジ ッ ク が リ セ ッ ト 状態 と な り ます。 書き込みキ ャ リ ブレーシ ョ ンが有効ではない場合、 読み出し<br />

キャ リブレーションのみが 2 つの工程で実行さ れます。<br />

1. DQ を基準に し た読み出し ク ロ ッ ク のキ ャ リ ブレーシ ョ ン<br />

2. データ アライメントの実行と Valid 信号の生成<br />

読み出し ク ロ ッ ク と デー タのキャ リ ブ レーシ ョ ン<br />

PHASER_IN は、対応するバイ ト グループに関連し た読み出しデータ (DQ) のキャプチャに使用さ<br />

れるすべての ISERDES へ ク ロ ッ ク を供給し ます。ICLKDIV も読み出しデータ IN_FIFO の書き込<br />

み ク ロ ッ ク と し て使用し ます。 1 つの PHASER_IN ブロックは、 12 の I/O からなる 1 つのグルー<br />

プに関連付け られています。 <strong>FPGA</strong> の各 I/O バンクには 4 つの PHASER_IN ブロックがあるため、<br />

1 つのバン ク に 4 つの読み出しデータ バイ ト を置く こ とができます。<br />

イ ン プ リ メ ンテーシ ョ ンの詳細<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

リード レベ リ ン グの こ の工程では、1 バイ ト ずつ読み出し ク ロ ッ ク をそのバイ ト グループの対応す<br />

る読み出しデータの中央に揃えます。 こ の工程では最初に特定の RLDRAM II ア ド レ ス位置に対し<br />

て決まったデータ パターンを使用した書き込みコマンドを発行します。 この書き込みコマンドの<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 299<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

後、 連続し た読み出し コ マン ド を発行し、 書き込み先 と 同じ ア ド レ ス位置か ら連続し てデータ を読<br />

み出し ます。<br />

キャ リブレーション ロジックは IN_FIFO か らデータ を読み出し、 比較する ために記録し ておき ま<br />

す。 こ の ロ ジ ッ ク は読み出し たデータ パターンのシーケ ン ス を確認し、 ク ロ ッ ク と データ が揃って<br />

い る かど う かを判断し ます。細精度の遅延ラ イ ンで タ ッ プが 0 の場合における キ ャプチャ クロック<br />

とデータ ウ ィ ン ド ウ の最初の位置関係はわかっていません。 アルゴ リ ズムは、 IDELAY エレ メン<br />

ト を介し て読み出しデータ に遅延を与え る こ と で、 ク ロ ッ ク がデータ ウ ィ ン ド ウ の左端に揃 う よ う<br />

にします。<br />

次に、 PHASER タ ッ プを使用し て ク ロ ッ ク を遅延させ、 対応するデータ ウィンドウの中央に位置<br />

するよ うにします。 PHASER_TAP の精度は FREQ_REF_CLK 周期によ って決ま り 、 1 タップは<br />

(FREQ_REFCLK_PERIOD/2)/64ps と な り ます。 周波数が 400MHz 以上の メ モ リ インターフェイ<br />

スの場合、 最大値の 64 PHASER タ ッ プを使用する と 遅延は 1 データ周期、 すなわち 1/2 クロック<br />

周期 と な り ます。 こ れに よ り 、 キ ャ リ ブ レーシ ョ ン ロジックはクロックを正確にデータ ウィンド<br />

ウ の中央に揃え る こ と がで き ます。<br />

周波数が 400MHz 未満の場合は、FREQ_REF_CLK の周波数が MEM_REF_CLK の周波数の 2 倍<br />

であるため、 PHASER か ら得られる最大遅延はデータ周期の 1/2、 すなわちクロック周期の 1/4 と<br />

な り ます。 こ のため周波数が 400MHz 未満では PHASER の遅延タ ッ プを使用し ただけではク ロ ッ<br />

ク をデータ ウ ィ ン ド ウ の中央に正確に揃え る こ と がで き ない場合があ り ます。 し たがって、 こ の よ<br />

う な周波数範囲の と きは IDELAY タップと PHASER タ ッ プに よ るデータ遅延を組み合わせて使<br />

用します。 キャ リブレーシ ョ ン ロジックは、クロックとデータの最初のアライメントに基づいて最<br />

適な遅延を決定します。アルゴ リ ズムはまず、PHASER_IN の細精度の遅延ラ イ ン を使用し て、デー<br />

タ ウ ィ ン ド ウ のエ ッ ジが検出 さ れる まで読み出し キ ャ プチャ クロックを遅延させます。<br />

データ ウ ィ ン ド ウ を検出する には、同じ タ ッ プ値で複数サ イ ク ルにわたってデータ を読み出し て平<br />

均を求める アルゴ リ ズム を使用し ます。サンプ リ ング サイクル数は 214 に設定さ れています。平均<br />

化以外に も、読み出し キ ャ プチ ャ ク ロ ッ ク が不安定なジ ッ ター領域に位置し てい る かど う かカ ウ ン<br />

ターを使用して追跡します。 カウンター値が 3 の場合は、 タ ッ プを 3 回インク リ メン ト してもサン<br />

プル し たデータ値は変わ ら ない こ と を意味し てお り 、読み出し キ ャ プチャ ク ロ ッ ク が安定領域にあ<br />

る と 考え られます。 直前の値 と 異な る値が検出 さ れる と 、 カ ウ ン ター値は 0 にリセットされます。<br />

次に、データ不一致が検出さ れる まで PHASER_IN ブ ロ ッ ク の細精度の位相シフ ト 遅延ラ イ ン を 1<br />

タ ッ プずつイ ン ク リ メ ン ト し ます。 所定の安定時間の後、 IN_FIFO か ら読み出し たデータ を直前の<br />

タ ップ値で記録したデータ と比較します。 この比較を、 データ不一致が検出されるまで、 すなわち<br />

有効なデータ ウ ィ ン ド ウ のエ ッ ジが検出 さ れる まで繰 り 返し ます。 安定し たカ ウ ン ター値が定数 3<br />

になったと きの PHASER_IN の細精度の位相シフ ト タ ッ プの数が有効ウ ィ ン ド ウ です。 こ のアル<br />

ゴ リ ズムに よ り 、 不安定なジ ッ ター領域で有効エ ッ ジを誤検出する可能性が抑え られます。<br />

データ アライメント と Valid 信号の生成<br />

キャ リブレーションの第 2 工程 と し て こ こ では次を実行し ます。<br />

• すべての読み出しバイ ト グループか ら の読み出しデータ を ISERDES の CLKDIV キャプチャ<br />

クロックの立ち上がりエッジに揃える。<br />

• 幅の狭い メ モ リ を接続し て幅の広い メ モ リ を構築する場合は、 各 メ モ リ のレ イ テンシを一致さ<br />

せる。<br />

• 決定し た レ イ テンシを読み出し Valid 生成ロ ジ ッ ク に送信する。<br />

読み出しデータ キャプチャ クロックが中央に揃うと、 キャリブレーション ロジックは既知のデー<br />

タ パターンを<strong>メモリ</strong> デバイ スに書き込み、 こ の メ モ リ か ら連続し た読み出し を実行し ます。 こ れ<br />

によ り、PHASER_IN の ICLKDIV 出力の立ち上が り エ ッ ジまたは立ち下が り エ ッ ジに揃った状態<br />

でデータ が読み出さ れるかど う かを確認し ます。<br />

300 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


コアのアーキテクチャ<br />

RLDRAM II の場合、 バイ ト グループからのキャプチャ データが立ち下が り エ ッ ジに揃ってい る と<br />

き、PHASER_IN への EDGE_ADV 入力 (ICLKDIV 出力を高速 ク ロ ッ ク の 1 サイクル分シフ ト) を<br />

使用し て立ち上が り エ ッ ジに揃え ます。<br />

RLDRAM III の場合、 フ ァ ブ リ ッ ク は 1/4 の<strong>メモリ</strong> ク ロ ッ ク 周波数で動作する ため、すべてのキ ャ<br />

プチャ データ が予測 さ れる順で正し く 揃え ら れる よ う フ ァ ブ リ ッ ク でビ ッ ト ス ト リ ッ プがデータ<br />

に適用されます。<br />

次に、 ク ラ イ アン ト イ ン ターフ ェ イ スのデータに関連付けた Valid 信号を生成し ます。 こ のキ ャ リ<br />

ブレーシ ョ ン工程では、 シングル ファブリック クロック パターン と 等し いデータ バース ト を メ モ<br />

リ に書き込み、 こ れを読み出し ます。 そ し て、 期待 さ れたデータ が返 さ れる までのサ イ ク ル数を読<br />

み出し ロ ジ ッ ク でカ ウ ン ト し ます。 こ の工程の基本的な フ ローは次の と お り です。<br />

1. 各<strong>メモリ</strong> デバイ スで読み出しデータ が到達する までのサ イ ク ル数を カ ウ ン ト する。<br />

2. 固定レ イ テンシ と し て使用する値を決定する。 こ の値は PHY_LATENCY パラ メーターでユー<br />

ザーが指定する か、 ま たはすべての メ モ リ デバイ スにおけ る最大レ イ テンシに設定し ます。<br />

3. 読み出し Valid 信号の生成を キ ャ リ ブレーシ ョ ンする。 手順 2 で決定した値を使用し、 読み出<br />

し Valid 信号に遅延を与えてユーザーの読み出しデータ に揃え る。<br />

4. init_calib_complete をアサートする。<br />

書き込みキャ リブレーシ ョ ン<br />

書き込みキ ャ リ ブレーシ ョ ンが有効にな る と 、読み出し キ ャ リ ブレーシ ョ ンのデータ アライメント<br />

結果を使用し て、 設定内容が正し い書き込み動作に対し て有効であ る かど う かを判断し ます。<br />

RLDRAM III には MRS 読み出し ト レーニン グ レジスタが含まれます。 このレジスタを使用する<br />

と 、 最初に指定パターン を メ モ リ へ書き込まずに メ モ リ か ら読み出す こ と がで き ます。 メ モ リ の初<br />

期化後、 書き込みキ ャ リ ブレーシ ョ ンへ移行する前に読み出し キ ャ プチャが こ の指定パターンで最<br />

初にキ ャ リ ブレーシ ョ ン されます。<br />

RLDRAM II には こ の読み出し ト レーニン グ レ ジ ス タ がないため、読み出しおよび書き込みを個別<br />

に検証で き ません。 書き込みキ ャ リ ブレーシ ョ ンの各手順で、 データ が正確にキ ャ プチャ さ れる よ<br />

う に読み出し ク ロ ッ ク と DQ を揃え ます。読み出し キ ャ リ ブレーシ ョ ンのデータ アライメント部分<br />

をバイ ト レーンに対して実行し、予想した結果が得られない場合、書き込みにエラーの原因がある<br />

と考えられます。 RLDRAM II の場合、 書き込みキ ャ リ ブレーシ ョ ンの各手順で、 読み出し キ ャ リ<br />

ブレーシ ョ ンおよび関連する ロ ジ ッ ク が リ セ ッ ト さ れ、 再実行 さ れます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 301<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

図 3-36 に、 RLDRAM III を使用した書き込みキャ リ ブレーシ ョ ンのフローを示します。<br />

X-Ref Target - Figure 3-36<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-36 : RLDRAM III の書き込みキャ リ ブ レーシ ョ ン フロー<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

PHASER_OUT は、 出力パスの ク ロ ッ キ ン グ リ ソース をすべて提供し、 キ ャ リ ブレーシ ョ ン アル<br />

ゴリズムによってバイト レーン単位で調整されます。 各バイ ト レーンでは、 正確な書き込みタ イ<br />

ミングが得られるように、DRAM へ送信さ れる書き込みク ロ ッ ク について個別にチェ ッ ク が行わ<br />

れます。 ピ ン配置に応じ て、 OCLK_DELAYED を用いて DK クロックがデータ DQ に対し て調整<br />

されるか、またはあるバイ ト レーンの OCLK がほかのバイ ト レーンの DK クロックに対して調整<br />

されます。 各バイ ト レーンを個別にキャ リ ブレーシ ョ ンするには長い時間が必要となるため、 シ<br />

ミ ュ レーシ ョ ンでは書き込みキ ャ リ ブレーシ ョ ンは通常省略 さ れます。<br />

書き込みキ ャ リ ブレーシ ョ ンが完了する と 、 読み出し キ ャ リ ブレーシ ョ ンは正し い書き込み設定で<br />

動作する よ う に最後に も う 一度だけ再実行さ れ、 読み出し Valid 生成ロ ジ ッ ク を介し て完了する こ<br />

とができます。<br />

図 3-37 に、36 ビット RLDRAM II デザイ ンの書き込みキ ャ リ ブレーシ ョ ンのシ ミ ュ レーシ ョ ン波<br />

形を示します。 ステー ト マシンはキャ リ ブレーシ ョ ンを 1 バイ ト ずつ実行し ます。 まず、 特定バイ<br />

ト レーン用の PHASER を選択し、 調整後に書き込みタ イ ミ ン グの最適化を図る ためにその結果を<br />

記録し ます。 調整は、 細精度の PHASER_OUT タ ッ プ遅延の範囲内でのみ実行 さ れます。 問題を<br />

デバ ッ グする際は、 読み出しおよび書き込みキ ャ リ ブレーシ ョ ンの実行中に検出 さ れたマージン を<br />

確認する だけでな く 、 DRAM での cmd - データ間の書き込みレ イ テンシが MRS レジスタにプロ<br />

グ ラ ム さ れてい る レ イ テンシ と 一致する かを確認する こ と が重要です。 詳細は、 コ アのデバ ッ グ を<br />

参照し て く だ さ い。<br />

302 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 3-37<br />

コアのカスタマイズ<br />

図 3-37 : RLDRAM II 書き込みキャ リ ブ レーシ ョ ンの波形<br />

コアのカスタマイズ<br />

RLDRAM II/RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>は、カスタマイズすることで<br />

複数のコ ン フ ィ ギ ュ レーシ ョ ン をサポー ト し ます。 各コ ン フ ィ ギ ュ レーシ ョ ンは、 コ アの最上位の<br />

Verilog パラ メーターで定義します。 表 3-15 に、 これらのパラ メ ーターを ま と めます。<br />

表 3-15 : RLDRAM II <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>でコンフィギュレーション可能なパラメーター<br />

パラ メーター 値 説明<br />

CLK_PERIOD – <strong>メモリ</strong>のクロック周期 (ps) です。<br />

ADDR_WIDTH 18-22 <strong>メモリ</strong>のアドレス バス幅です。<br />

RLD_ADDR_WIDTH 11、 18-22 アドレス マルチプレ ク ス モー ド 使用時の物理的 メ モ リ のア ド レ<br />

ス バス幅です。<br />

BANK_WIDTH RLDRAM II : 3<br />

RLDRAM III : 4<br />

<strong>メモリ</strong>のバンク アドレス バス幅です。<br />

DATA_WIDTH – メ モ リ のデータ バス幅で、MIG ツールで設定で き ます。 サポー ト<br />

さ れる最大値は 72 です。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 303<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-15 : RLDRAM II <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>でコンフィギュレーション可能なパラメーター (続き)<br />

パラ メーター 値 説明<br />

QK_WIDTH RLDRAM II :<br />

x18/x36 デバイ ス ご と に 2<br />

RLDRAM III :<br />

DATA_WIDTH/9<br />

DK_WIDTH RLDRAM II :<br />

x36 デバイ ス ご と に 2、<br />

x18 デバイ ス ご と に 1<br />

RLDRAM III :<br />

デバイ ス ご と に 2<br />

BURST_LEN RLDRAM II : 4、 8<br />

RLDRAM III : 2、 4、 8<br />

メ モ リ の読み出し ク ロ ッ ク バス幅です。<br />

<strong>メモリ</strong>の書き込みクロック バス幅です。<br />

メ モ リ のデータ バース ト 長です。<br />

DM_PORT ON、 OFF データ マスク ポー ト の生成を有効/無効に し ます。<br />

NUM_DEVICES 1-4 使用する メ モ リ デバイ スの数です。<br />

MRS_CONFIG RLDRAM II : 1、 2、 3<br />

RLDRAM III : 3、 4、 5、<br />

6、 7、 8、 9、 10、 11<br />

RLDRAM II/RLDRAM III <strong>メモリ</strong> レジスタでコンフィギュレー<br />

シ ョ ン を設定し ます。<br />

MRS_ADDR_MUX ON、 OFF RLDRAM II/RLDRAM III <strong>メモリ</strong> レジスタでアドレス マルチプ<br />

レ ク ス を設定し ます。<br />

MRS_DLL_RESET DLL_ON RLDRAM II/RLDRAM III <strong>メモリ</strong> レジスタで DLL を設定し ま<br />

す。<br />

MRS_IMP_MATCH INTERNAL、<br />

EXTERNAL<br />

<strong>メモリ</strong> レジスタでインピーダンスを設定します。<br />

MRS_ODT ON、 OFF <strong>メモリ</strong> レジスタで ODT を設定します。<br />

MRS_RD_LATENCY 6-16 RLDRAM III <strong>メモリ</strong> レ ジ ス タ で読み出し レ イ テ イ ンシおよび書<br />

き込みレ イ テ イ ンシを設定し ます (<strong>メモリ</strong> デバイ ス と 動作周波数<br />

に依存する)。<br />

MRS_RTT_WR 40、 60、 120 RLDRAM III の MRS レ ジ ス タ で出力駆動イ ン ピーダン ス を設定<br />

します。<br />

MRS_RTT_RD 40、 60 RLDRAM III の MRS レジスタで ODT を設定し ます。ODT が未<br />

使用の場合は 「Do not care」 となり ます。<br />

MEM_TRC 4-11 RLDRAM III TRC を設定します (選択し た メ モ リ デバイ スおよび<br />

読み出し レ イ テ イ ンシに依存する)。<br />

MEM_TYPE RLD2_CIO、 RLD3 メ モ リ の タ イ プを指定し ます。<br />

IODELAY_GRP – デザイ ンで複数の IP コ アを使用する場合のみの IODELAY_<br />

CTRL 固有の名前です。<br />

REFCLK_FREQ 200.0 IDELAYCTRL の基準 ク ロ ッ ク の周波数です。<br />

BUFMR_DELAY – バ ッ フ ァー遅延をモデル化する ために使用する シ ミ ュ レーシ ョ ン<br />

専用パラ メ ーターです (RLDRAM II のみ)。<br />

304 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


コアのカスタマイズ<br />

表 3-15 : RLDRAM II <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>でコンフィギュレーション可能なパラメーター (続き)<br />

パラ メーター 値 説明<br />

RST_ACT_LOW 0、 1 アクティブ Low またはアクティブ High のリセットです。<br />

IBUF_LPWR_MODE ON、 OFF 入力バッ フ ァーの低消費電力モード の有効または無効を指定し ます。<br />

IODELAY_HP_MODE ON、 OFF IODELAY プ リ ミ テ ィ ブの高性能モー ド の有効ま たは無効を指定<br />

します。 OFF にする と 、 IODELAY は低消費電力モー ド で動作す<br />

る ため性能が低下し ます。<br />

SYSCLK_TYPE DIFFERENTIAL、<br />

SINGLE_ENDED、<br />

NO_BUFFER<br />

REFCLK_TYPE DIFFERENTIAL、<br />

SINGLE_ENDED、<br />

NO_BUFFER、<br />

USE_SYSTEM_CLOCK<br />

CLKIN_PERIOD – 入力 ク ロ ッ ク 周期です。<br />

システムがシングルエンド システム ク ロ ッ ク を使用する、 差動シ<br />

ステム ク ロ ッ ク を使用する、 ま たは内部 ク ロ ッ ク で駆動 さ れる (<br />

バッファーなし) かを示します。選択した CLK_TYPE の設定に基<br />

づいて、 ク ロ ッ ク を適切な入力ポー ト に配置する必要があ り ます。<br />

差動 ク ロ ッ ク の場合は sys_clk_p/sys_clk_n を、シングルエン ド ク<br />

ロ ッ ク の場合は sys_clk_i を使用します。 NO_BUFFER を選択し<br />

た場合、ポー ト リ ス ト に表示 さ れる sys_clk_i は内部ク ロ ッ ク で駆<br />

動する必要があ り ます。<br />

シ ス テムがシン グルエン ド 基準 ク ロ ッ ク、 差動基準 ク ロ ッ ク を使<br />

用するか、内部クロッ クによって駆動されるか (バッファーなし)、<br />

またはシステム ク ロ ッ ク 入力にのみ接続で き る (システム クロッ<br />

クを使用) かを示します。 選択した CLK_TYPE の設定に基づい<br />

て、 ク ロ ッ ク を適切な入力ポー ト に配置する必要があ り ます。差動<br />

クロックの場合は clk_ref_p/clk_ref_n を、シングルエン ド クロッ<br />

ク の場合は clk_ref_i を使用します。 NO_BUFFER を選択した場<br />

合、ポー ト リ ス ト に表示さ れる clk_ref_i は内部 ク ロ ッ ク で駆動す<br />

る必要があ り ます。 USE_SYSTEM_CLOCK を選択し た場合、<br />

clk_ref_i はユーザー デザ イ ンの最上位モジ ュールでシ ス テム ク<br />

ロ ッ ク に接続さ れます。<br />

CLKFBOUT_MULT – PLL の VCO (電圧制御オシ レーター ) 乗算器です。 動作周波数に<br />

基づいて MIG ツールで設定し ます。<br />

CLKOUT0_DIVIDE、<br />

CLKOUT1_DIVIDE、<br />

CLKOUT2_DIVIDE、<br />

CLKOUT3_DIVIDE<br />

– PLL 出力用の VCO 出力分周器です。 動作周波数に基づいて MIG<br />

ツールで設定し ます。<br />

CLKOUT0_PHASE – PLL 出力 の CLKOUT0 の位相です。 メ モ リ <strong>インターフェイス</strong> ピ<br />

ンに選択し たバン ク および動作周波数に基づいて MIG で設定し<br />

ます。<br />

DIVCLK_DIVIDE – PLL の VCO 分周器です。動作周波数に基づいて MIG ツールで設<br />

定します。<br />

SIM_BYPASS_INIT_<br />

CAL<br />

SKIP、 FAST、 NONE、<br />

SKIP_AND_WRCAL、<br />

FAST_AND_WRCAL<br />

シ ミ ュ レーシ ョ ン専用のパ ラ メ ーターで、 初期化の待機時間を省<br />

略し てキ ャ リ ブレーシ ョ ン を高速化する こ と で、 シ ミ ュ レーシ ョ<br />

ンの時間を短縮し ます。 SKIP_AND_WRCAL および FAST_<br />

AND_WRCAL は、 ス キ ッ プする か高速で読み出し キ ャ リ ブレー<br />

シ ョ ン を実行し、 書き込みキ ャ リ ブレーシ ョ ンのシ ミ ュ レーシ ョ<br />

ン を実行する オプシ ョ ンです。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 305<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-15 : RLDRAM II <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong>でコンフィギュレーション可能なパラメーター (続き)<br />

パラ メーター 値 説明<br />

SIMULATION TRUE、 FALSE シミュレーションには TRUE を、 インプ リ メ ンテーシ ョ ンには<br />

FALSE を設定し ます。<br />

DEBUG_PORT ON、 OFF デバ ッ グ ポー ト を有効にする と 、 ChipScope Analyzer の VIO (仮<br />

想 I/O) が使用可能にな り ます。 こ れに よ り 、 物理層の タ ッ プ設定<br />

を VIO での選択に基づいて変更で き ます。 論理シ ミ ュ レーシ ョ ン<br />

ではデバッ グ モード は不要なため、 sim フォルダーの sim_tb_top<br />

モジュールでは必ず OFF に設定し ます。<br />

N_DATA_LANES DATA_WIDTH/9 データ バイ ト レーンの数を算出し、デバッグ ポー ト の使用時に信<br />

号幅を設定する ために使用し ます。<br />

DIFF_TERM_SYSCLK TRUE、 FALSE システム ク ロ ッ ク 入力ピ ンの差動終端です。<br />

DIFF_TERM_REFCLK TRUE、 FALSE IDELAY 基準 ク ロ ッ ク 入力ピ ンの差動終端です。<br />

nCK_PER_CLK RLDRAM II : 2<br />

RLDRAM III :4<br />

ファブリック クロックごとの<strong>メモリ</strong> クロックの数です。<br />

TCQ 100 シ ミ ュ レーシ ョ ンでのレ ジ ス タ遅延です。<br />

表 3-16 に示し たパラ メ ーターは、 選択し たピン配置に基づいて MIG ツールがセッ ト アップしま<br />

す。 ピ ン配置を変更する場合は、 パ ラ メ ーターが適切にセ ッ ト ア ッ プ さ れる よ う に MIG ツールを<br />

再実行する こ と を推奨し ます。 再実行し ない場合は 310 ページの 「ピ ン配置の要件」 を参照して く<br />

だ さ い。 ピ ン配置のパ ラ メ ーター設定が正し く ない と 、 シ ミ ュ レーシ ョ ンが正し く 動作し ない、 デ<br />

ザ イ ンの配線がで き ない、 タ イ ミ ン グが満た さ れない、 な どの結果を招 く こ と があ り ます。 こ れ ら<br />

のパ ラ メ ーターで物理層をセ ッ ト ア ッ プ し、物理層 と の間に必要な信号すべての配線が行われます。<br />

パラ メーターは、選択したデータおよびアドレス/制御バイ ト グループに基づいて計算さ れます。選<br />

択したシステム信号 (システム クロック、基準クロック、 ステータス信号) は考慮し ません。<br />

表 3-16 : RLDRAM II <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンのピ ン配置パラ メ ー タ ー<br />

パラ メ ー タ ー 内容 例<br />

MASTER_PHY_CTL 0、 1、 2 マスター PHY_CONTROL が含まれるバン ク です (通<br />

常は MMCM/PLL のバン ク 位置に対応)。<br />

BYTE_LANES_B0、<br />

BYTE_LANES_B1、<br />

BYTE_LANES_B2<br />

DATA_CTL_B0、<br />

DATA_CTL_B1、<br />

DATA_CTL_B2<br />

3 つのフ ィ ール ド で、有効な I/O バンクご<br />

とに 1 つ使用。I/O バン ク で使用するバイ<br />

ト レーン を定義し ます。 ビ ッ ト 位置が 1<br />

の場合はバイ ト レーンを使用し、 0 の場<br />

合は使用し ません。<br />

3 つのフ ィ ール ド で、有効な I/O バンクご<br />

とに 1 つ使用。 I/O バンクのバイ ト レー<br />

ン を定義し ます。 ビ ッ ト 位置が 1 の場合<br />

はバイ ト レーン をデータ に、 0 の場合は<br />

アドレス/制御に使用し ます。<br />

ビ ッ ト の並びは MSB から LSB に向かって T0、T1、T2、<br />

T3 バイ ト グループの順です。<br />

4'b1101 : バン ク に使用 さ れる 3 つのバイ ト レーンで、<br />

その う ち 1 つは未使用<br />

4'b1100 : 2 つのデータ バイ ト レーンで、 上記の例に示<br />

すとおりに BYTE_LANES_B0 パ ラ メ ーター と 併用す<br />

る場合は、 1 つの アドレス/制御<br />

306 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 3-16 : RLDRAM II <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンのピ ン配置パラ メ ー タ ー (続き)<br />

パラ メ ー タ ー 内容 例<br />

CPT_CLK_SEL_B0、<br />

CPT_CLK_SEL_B1、<br />

CPT_CLK_SEL_B2<br />

PHY_0_BITLANES、<br />

PHY_1_BITLANES、<br />

PHY_2_BITLANES<br />

RLDRAM II 専用。 3 つのフ ィ ールド で、<br />

有効な I/O バンクご とに 1 つ使用。 バン<br />

クの各バイト レーンについて、 いずれの<br />

読み出し キ ャ プチャ ク ロ ッ ク を使用する<br />

かを定義し ます。MRCC 読み出し キ ャ プ<br />

チャ クロックはバイト レーン 1/2 に配<br />

置されます。ここでは、キャプチャ クロッ<br />

ク に使用さ れる読み出し ク ロ ッ ク を示す<br />

ために各データ バイ ト レーンについて<br />

パラ メーターが定義されています。 バイ<br />

ト レーンご とに 8 ビッ トが次のように定<br />

義されています。<br />

• [3:0] - 1、2 : 2 つのキ ャプチャ クロッ<br />

ク ソースのうちいずれを示す<br />

• [7:4] - 0 (下のバン ク)、 1 (現在のバン<br />

ク)、 2 (上のバン ク) : クロックが配置<br />

されるバンクを示す<br />

3 つのフ ィ ール ド で、有効な I/O バンクご<br />

とに 1 つ使用。各バイ ト レーンにつき 12<br />

ビッ トのパラメーターを使用し、必要な<br />

物理層の生成に使用する I/O 位置を決定<br />

します。 このパラメーターはバンクごと<br />

に 存 在 し ま す。 CK_P/CK_N、<br />

DK_P/DK_N、 QK_P/QK_N、 QVLD ピ<br />

ンを除き、 データおよびアド レス/制御の<br />

すべてのピ ンがパ ラ メ ーター生成の際に<br />

考慮 さ れます。<br />

コアのカスタマイズ<br />

32'h12_12_11_11 : 4 つのデータ バイ ト レーンで、すべ<br />

て同じバン ク で ク ロ ッ ク を使用する<br />

32'h21_22_11_11 : 4 つのデータ バイ ト レーンで、その<br />

うちの 2 つのレーンは上領域のバン ク (16'h21_22) か<br />

らのキャプチャ クロックを使用し、残りの 2 つは現在<br />

のバン ク (16'h11_11) からのキャプチャ クロックを使<br />

用する<br />

選択し たバン ク のすべてのバイ ト グループを表し ま<br />

す。 1 つのバイ ト レーンの 12 ビッ トすべてを MSB :<br />

LSB の順に BA98_7654_3210 として表します。たとえ<br />

ば、 1 つのバン ク に対し て 48'hFFE_FFF_000_ DF6 の<br />

ように指定します。<br />

12'hBFC (12'b1011_1111_1100) : ビット レーン 0、1、お<br />

よび 10 は使用 さ れず、 その他すべてが使用 さ れます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 307<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-16 : RLDRAM II <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンのピ ン配置パラ メ ー タ ー (続き)<br />

パラ メ ー タ ー 内容 例<br />

CK_MAP チップ セレク トのバンクおよびバイ ト<br />

レーン位置情報です。各ピ ンに 12 ビッ ト<br />

のパ ラ メ ーターが用意 さ れています。<br />

• [3:0] - バイ ト レーン内のビッ ト位置<br />

で、 サポー ト される値は [0、 1、 2、<br />

....A、 B] です。<br />

• [7:4] - バンク内のバイ ト レーン位置<br />

で、 サポー ト される値は 0、 1、 2、 3<br />

です。<br />

• [11:8] - バンク位置で、 サポー ト され<br />

る値は 0、 1、 2 です。<br />

DK_MAP DK/DK# のバン クおよびバイ ト レーン<br />

位置情報です。 各信号ペアに 8 ビッ トの<br />

パラ メーターが用意されています。<br />

• [3:0] - バンク内のバイ ト レーン位置<br />

で、 サポー ト される値は 0、 1、 2、 3<br />

です。<br />

• [7:4] - バンク位置で、 サポー ト され<br />

る値は 0、 1、 2 です。<br />

最上位のデータ ま たはア ド レ ス/制御バイ ト グループで<br />

選択し たバン ク を、こ のパ ラ メ ーターではバン ク 0 とし<br />

ます。 バンクの番号は上から順に 0、 1、 2 です。<br />

パラ メーター内では、バイ ト グループ T0、T1、T2、T3<br />

にそれぞれ 3、 2、 1、 0 の番号が付け られます。<br />

バイ ト グループ内の最下位ピ ン を MAP パラ メーター<br />

では 「0」 と し ます。 バイ ト グループ内のピン番号は最<br />

下位ピ ンか ら最上位ピ ンに向かって 0 ~ 9 の番号が付<br />

けられます (DQSCC I/O ピンは含まれない)。バイ ト グ<br />

ループの DQSCC_N ピンと DQSCC_P ピンの番号は<br />

それぞれ A、 B です。<br />

44'h000_000_000_000_000_000_000_000_000_000_2<br />

35_11B : クロック幅が 12 ビットで各ピンが 12 ビッ ト<br />

である こ と を表します。 この例では、 ク ロ ッ ク幅は 2<br />

ビッ トです。 パラメーターの並びは MSB から LSB の<br />

順です (すなわち CK[0] はパ ラ メ ーターの最下位 12<br />

ビッ トに該当)。<br />

12'h11B : CK[0] をロケーション A のバン ク 1、バイト<br />

レーン 1 に配置し ます。<br />

12'h235 : CK[1] をロケーション 5 のバン ク 2、 バイト<br />

レーン 3 に配置し ます。<br />

CK_P 位置のみを示し、 CK_N は対応する I/O ピン ペ<br />

アの N 側にあ り ます。<br />

最上位のデータ ま たはア ド レ ス/制御バイ ト グループで<br />

選択し たバン ク を、こ のパ ラ メ ーターではバン ク 0 とし<br />

ます。 バンクの番号は上から順に 0、 1、 2 です。<br />

パラ メーター内では、バイ ト グループ T0、T1、T2、T3<br />

にそれぞれ 3、 2、 1、 0 の番号が付け られます。<br />

96'h00_00_00_00_00_00_00_00_00_00_10_13 : 12 の<br />

クロック ペア (各クロッ ク ピンに 8 ビッ ト) のパラ メ ー<br />

ターの例です。 こ の場合、2 つのク ロ ッ ク ペアを使用し<br />

ます。 パラ メ ーターの並びは MSB から LSB の順です<br />

(すなわち DK[0]/ DK#[0] はパラ メ ーターの最下位 8<br />

ビッ トに該当)。<br />

8'h13 : DK/DK# をバンク 1、バイト レーン 3 に配置し<br />

ます。<br />

8'h20 : DK/DK# をバンク 2、バイト レーン 0 に配置し<br />

ます。<br />

308 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 3-16 : RLDRAM II <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンのピ ン配置パラ メ ー タ ー (続き)<br />

パラ メ ー タ ー 内容 例<br />

QK_MAP QK/QK# のバン クおよびバイ ト レーン<br />

位置情報です。 各信号ペアに 8 ビッ トの<br />

パラ メーターが用意されています。<br />

• [3:0] - バンク内のバイ ト レーン位置<br />

で、 サポー ト される値は 0、 1、 2、 3<br />

です。<br />

• [7:4] - バンク位置で、 サポー ト され<br />

る値は 0、 1、 2 です。<br />

CS_MAP チップ セレク トのバンクおよびバイ ト<br />

レーン位置情報です。各ピ ンに 12 ビッ ト<br />

のパ ラ メ ーターが用意 さ れています。<br />

• [3:0] - バイ ト レーン内のビッ ト位置<br />

で、 サポー ト される値は [0、 1、 2、<br />

....A、 B] です。<br />

• [7:4] - バンク内のバイ ト レーン位置<br />

で、 サポー ト される値は 0、 1、 2、 3<br />

です。<br />

• [11:8] - バンク位置で、 サポー ト され<br />

る値は 0、 1、 2 です。<br />

WE_MAP ライト イネーブルのバンクおよびバイ ト<br />

レーン位置情報です。「CS_MAP」 の説明<br />

を参照して く ださい。<br />

REF_MAP リフレッシュ信号のバンクおよびバイト<br />

レーン位置情報です。「CS_MAP」 の説明<br />

を参照して く ださい。<br />

ADDR_MAP アドレスのバンクおよびバイト レーン位<br />

置情報です。「CS_MAP」 の説明を参照し<br />

てください。<br />

BANK_MAP バンク アドレスのバンクおよびバイト<br />

レーン位置情報です。「CS_MAP」 の説明<br />

を参照して く ださい。<br />

DQTS_MAP トライステート制御のバンクおよびバイ<br />

ト レーン位置情報です。「CS_MAP」 の説<br />

明を参照し て く だ さ い。<br />

DM_MAP データ マスクのバンクおよびバイ ト<br />

レーン位置情報です。「CS_MAP」 の説明<br />

を参照して く ださい。<br />

コアのカスタマイズ<br />

パラ メ ーター値の表記法については、 「DK_MAP」 の例<br />

を参照して く ださい。<br />

8'h11 : QK/QK# をバンク 1、 バイト レーン 1 に配置し<br />

ます。<br />

8'h22 : QK/QK# をバンク 2、バイト レーン 2 に配置し<br />

ます。<br />

「CK_MAP」 の例を参照し て く ださい。<br />

「CK_MAP」 の例を参照し て く ださい。<br />

「CK_MAP」 の例を参照し て く ださい。<br />

「CK_MAP」 の例を参照し て く ださい。<br />

「CK_MAP」 の例を参照し て く ださい。<br />

「CK_MAP」 の例を参照し て く ださい。<br />

「CK_MAP」 の例を参照し て く ださい。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 309<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-16 : RLDRAM II <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リ ューシ ョ ンのピ ン配置パラ メ ー タ ー (続き)<br />

パラ メ ー タ ー 内容 例<br />

QVLD_MAP QVLD のバン クおよびバイ ト レーン位<br />

置情報です。「CS_MAP」 の説明を参照し<br />

てください。<br />

DATA0_MAP、<br />

DATA1_MAP、<br />

DATA2_MAP、<br />

DATA3_MAP、<br />

DATA4_MAP、<br />

DATA5_MAP、<br />

DATA6_MAP、<br />

DATA7_MAP<br />

設計ガ イ ド ラ イ ン<br />

デザイ ンの規則<br />

ト レース長の要件<br />

ピ ン配置の要件<br />

データ バスのバンクおよびバイ ト レー<br />

ン位置情報です。「CS_MAP」 の説明を参<br />

照してください。<br />

「CK_MAP」 の例を参照し て く ださい。<br />

「CK_MAP」 の例を参照し て く ださい。<br />

<strong>メモリ</strong>のタイプ、 <strong>メモリ</strong> デバイ ス、 データ幅は、 選択し た <strong>FPGA</strong>、 <strong>FPGA</strong> のスピード グレード、デ<br />

ザ イ ンの動作周波数に よ って制約を受け ます。 最終的な周波数範囲は、 特性評価の結果に基づいて<br />

決定し ます。<br />

こ こ で説明する ト レース長の要件は、高速動作が必要なアプ リ ケーシ ョ ン を前提 と し ています。ター<br />

ゲッ ト アプ リ ケーシ ョ ンの帯域幅に よ っては要件を緩和で き る場合があ り ます。実効 ト レース長を<br />

決定する際は、パ ッ ケージ遅延を考慮に入れる必要があ り ます。 こ れら の内部遅延は PACE (Pinout<br />

and Area Constraints Editor) を使用して求める こ とができます。RLDRAM II/RLDRAM III 信号間<br />

の最大電気的遅延に関する規則は次の と お り です。<br />

• すべての DQ/DM と DK/DK# と のス キ ューの最大値は ±15ps とします。<br />

• すべての DQ と 関連する QK/QK# と のス キ ューの最大値は次の と お り です。<br />

• RLDRAM II : ±15ps<br />

• RLDRAM III : ±10ps<br />

• すべてのア ド レ ス/制御信号 と 関連する CK/CK# と のス キ ューの最大値は ±50ps とします。<br />

• すべての DK/DK# と CK/CK# と のス キ ューの最大値は ±25ps とします。<br />

ザイ リ ンクス 7 シ リーズ <strong>FPGA</strong> は非常に高性能な メ モ リ <strong>インターフェイス</strong>に対応するよう設計さ<br />

れていますが、RLDRAM II/RLDRAM III 物理層を使用する際にはい く つかの規則に従 う 必要があ<br />

ります。ザイリンクス 7 <strong>シリーズ</strong> <strong>FPGA</strong> は、 各バイ ト グループに専用のロ ジ ッ ク を備えています。<br />

50 ピンの各バンクそれぞれに 4 つのバイ ト グループがあ り ます。 各バイ ト グループには 2 つのマ<br />

ルチ領域 ク ロ ッ ク 兼用 (MRCC) I/O ピン ペア と 10 の関連 I/O があ り、このバイ ト グループが 4 つ<br />

で 1 つの 50 ピン バン ク を構成し ています。<br />

310 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


RLDRAM II<br />

設計ガイ ド ラ イ ン<br />

一般的な RLDRAM II データ バンク構成では、 これら 10 個の I/O のうち 9 つをデータ (DQ) に使<br />

用し、 残りの 1 つをデータ マスク (DM) に使用し ます。 書き込みク ロ ッ ク (DK/DK#) は、 データ<br />

バンク内の DQSCCIO ペアの う ち 1 つを使用し ます。 QK/QK# ク ロ ッ ク は、 データ バンク、 また<br />

はデータの上下にあ るバン ク の MRCC ピンに配置します。 QVLD はデザイ ンで使用し ませんが、<br />

今後の使用に備えてデータ ま たはア ド レ ス/制御バン ク の利用可能な ピ ンに配置する必要があ り ま<br />

す。ザイ リ ン ク ス 7 <strong>シリーズ</strong> <strong>FPGA</strong> は、高速同期専用の ク ロ ッ ク 配線が I/O バンク内で垂直に配線<br />

されています。 このため、RLDRAM II <strong>メモリ</strong> イ ン ターフ ェ イ スはバン ク に水平でな く 垂直に配置<br />

する必要があ り ます。 ま た、 高さ は最大で 3 バンク までです。<br />

MIG ツールで生成し た コ アは、 デザ イ ンで最適な ピ ン配置が選択 さ れています。 UCF による手動<br />

での変更は推奨し ませんが、 UCF を変更する必要があ る場合は、 次の規則に従って く だ さ い。<br />

• CK/CK# クロックはアドレス/制御バイ ト レーンに配置し ます。 ま た、 DQSCCIO ピン ペアに<br />

も配置します。 CK は P 位置に、 CK# は N 位置に配置し ます。<br />

• DK/DK# クロックはデータ バイ ト レーンに配置し ます。 ま た、 DQSCCIO ピン ペアにも配置<br />

します。 DK は P 位置に、 DK# は N 位置に配置し ます。<br />

• データ (DQ) は、 1 バイ ト (9 ビッ ト) に対応するすべての信号がバイ ト グループ内に配置され<br />

る よ う に配置する必要があ り ます。 DQ はバイ ト レーンの DQSCCIO N 位置に配置で き ませ<br />

ん。 こ の位置は ト ラ イ ス テー ト 制御に使用 さ れる ためです。<br />

• 1 つの メ モ リ コ ンポーネン ト か ら生成 さ れたすべてのデータ を同じバン ク 内に配置する こ と<br />

を推奨します。<br />

• 読み出し ク ロ ッ ク (QK および QK#) は、それぞれ各バン ク で使用可能な MRCC ピ ンに配置す<br />

る必要があ り ます。 データは、 関連する QK/QK# と 同じバン ク またはそのデータの上下にあ<br />

るバンクに配置します。<br />

• アドレス/制御信号は、 データ向けに使用さ れないバイ ト グループ内に配置可能で、 すべて同<br />

じバン ク内に配置する必要があ り ます。<br />

• バイ ト レーンについては、 DQSCC_N 位置を使用し て ト ラ イ ス テー ト 制御信号が生成 さ れま<br />

す。 ト ラ イ ス テー ト の場合、 QVLD、 DK#、 または DM 専用データ で位置を共有で き ます。<br />

• システム クロック入力は<strong>メモリ</strong> <strong>インターフェイス</strong>と同じカラムにある必要があります。 また、<br />

システム クロック入力もアドレス/制御バン ク に配置する こ と を強 く 推奨し ます。 こ の よ う な<br />

配置がで き ない場合、シ ス テム入力をア ド レ ス/バン ク の上下にあ るバン ク に配置する必要があ<br />

ります。<br />

RLDRAM III<br />

一般的な RLDRAM III データ バンク構成では、 これら 10 個の I/O のうち 9 つをデータ (DQ) に<br />

使用し、 残 り の 1 つをデータ マスク (DM) に使用し ます。 書き込みク ロ ッ ク (DK/DK#) は、 ア ド<br />

レス/制御バン ク 内の DQSCCIO ペアの う ち 1 つを使用する か、 ま たはデータ バン ク の未使用バイ<br />

ト レーンの DQSCCIO ペアを使用し ます。 QK/QK# クロックは、同じクロックに関連付けられて<br />

い るデータ バンク レーンの DQSCCIO ピ ンに割 り 当て る必要があ り ます。QVLD はデザイ ンで使<br />

用し ませんが、今後の使用に備えてデータ ま たはア ド レ ス/制御バン ク の利用可能なピ ンに配置する<br />

必要があ り ます。ザイ リ ン ク ス 7 <strong>シリーズ</strong> <strong>FPGA</strong> は、高速同期専用の ク ロ ッ ク 配線が I/O バンク内<br />

で垂直に配線されています。 このため、 RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong>はバンクに水平で<br />

な く 垂直に配置する必要があ り ます。 ま た、 高 さ は最大で 3 バンク までです。<br />

MIG ツールで生成し た コ アは、 デザ イ ンで最適な ピ ン配置が選択 さ れています。 UCF による手動<br />

での変更は推奨し ませんが、 UCF を変更する必要があ る場合は、 次の規則に従って く だ さ い。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 311<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

• CK/CK# クロックはアドレス/制御バイ ト レーンに配置し ます。CK はそのバイ ト レーンの I/O<br />

ピン ペアの P 位置に、 CK# はその N 位置に配置し ます。<br />

• DK/DK# クロックは DQSCCIO ピン ペアに配置し ます。 DK は P 位置に、 DK# は N 位置に<br />

配置し ます。<br />

• データ (DQ) は、 1 バイ ト (9 ビッ ト) に対応するすべての信号がバイ ト グループ内に配置され<br />

る よ う に配置する必要があ り ます。 DQ はバイ ト レーンの DQSCCIO N 位置に配置で き ませ<br />

ん。 こ の位置は ト ラ イ ス テー ト 制御に使用 さ れる ためです。<br />

• 1 つの メ モ リ コ ンポーネン ト か ら生成 さ れたすべてのデータ を同じバン ク 内に配置する こ と<br />

を推奨します。<br />

• 読み出し ク ロ ッ ク (QK および QK#) は、 それぞれデータ バイ ト レーンで使用可能な<br />

DQSCCIO ピ ンに配置する必要があ り ます。 データ は関連付け ら れてい る QK/QK# と同じバ<br />

イト レーンに配置する必要があ り ます。<br />

• アドレス/制御信号は、 データ向けに使用さ れないバイ ト グループ内に配置可能で、 すべて同<br />

じバン ク内に配置する必要があ り ます。<br />

• バイ ト レーンについては、 DQSCC_N 位置を使用し て ト ラ イ ス テー ト 制御信号が生成 さ れま<br />

す。 ト ラ イ ス テー ト の場合、 DK# のみ と 位置を共有で き ます。<br />

• システム クロック入力は<strong>メモリ</strong> <strong>インターフェイス</strong>と同じカラムにある必要があります。 また、<br />

システム クロック入力もアドレス/制御バン ク に配置する こ と を強 く 推奨し ます。 こ の よ う な<br />

配置がで き ない場合、シ ス テム入力をア ド レ ス/バン ク の上下にあ るバン ク に配置する必要があ<br />

ります。<br />

システム クロック、 PLL の位置および制約<br />

イ ン ターフ ェ イ スのパフ ォーマン ス仕様を満たすには、 メ モ リ にク ロ ッ ク を供給し ているバン クに<br />

PLL が必要です。 ま た、 シ ス テ ム ク ロ ッ ク 入力も こ のバン ク に配置する こ と を強 く 推奨し ます。<br />

MIG ツールは可能な限り これら 2 つの規則に従います。 ただ し例外 と し て、 PLL へのク ロ ッ ク入<br />

力用のピ ンがバン ク にない場合は、 隣のバン ク か ら周波数バ ッ ク ボーン を経由し て PLL にクロッ<br />

クを入力する必要があります。PLL へのシステム クロック入力は、 クロック兼用 I/O から供給す<br />

る必要があ り ます。<br />

システム ク ロ ッ ク入力は、 同じ カ ラ ムにあ る イ ン ターフ ェ イ スにしか使用でき ません。 このク ロ ッ<br />

ク 入力を別のカ ラ ムか ら駆動する こ と はで き ません。 こ れは、 PLL/MMCM およびク ロ ッ ク配線を<br />

追加する こ と にな り 、 ジ ッ ターが大き く な り すぎ る ためです。<br />

PLL か ら の未使用の出力は ク ロ ッ ク 出力 と し て使用で き ます。 こ れ ら の出力のみ、 設定を変更で き<br />

ます。PLL の全体的な動作や使用中の出力に関する設定は変更し ないで く だ さ い。 複数の イ ン ター<br />

フェイスで 1 つの PLL を共有する こ と はで き ません。<br />

PLL パラ メ ーターの条件については、 289 ページの 「 ク ロ ッ キング アーキテクチャ」 を参照して く<br />

ださい。<br />

コンフィギュレーション<br />

UCF にはタ イ ミ ング、 ピン、 I/O 規格に関する情報が含まれています。 イ ン ターフ ェ イ スの動作周<br />

波数は sys_clk 制約で設定し ます。 こ の設定は、 MIG の GUI で行います。 こ の制約を変更する場<br />

合は、 ほかの内部パラ メ ーターにも影響が及ぶため、 MIG の GUI を再実行する必要があ り ます。<br />

次に例を示し ます。<br />

NET "sys_clk_p" TNM_NET = TNM_sys_clk;<br />

TIMESPEC "TS_sys_clk" = PERIOD "TNM_sys_clk" 1.875 ns;<br />

312 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


設計ガイ ド ラ イ ン<br />

clk_ref 制約で IDELAY 基準 ク ロ ッ ク の周波数を設定し ます (通常は 200MHz)。次に例 を 示 し ま す。<br />

NET "clk_ref_p" TNM_NET = TNM_clk_ref;<br />

TIMESPEC "TS_clk_ref" = PERIOD "TNM_clk_ref" 5 ns;<br />

I/O 規格は、RLDRAM II <strong>インターフェイス</strong>に合わせて LVCMOS15、HSTL15_I、HSTL15_I_DCI、<br />

DIFF_HSTL15_I、 DIFF_HSTL15_I_DCI の中か ら適宜設定 さ れます。 シ ス テム クロック<br />

(sys_clk) および I/O 遅延基準 ク ロ ッ ク (clk_ref) には LVDS_25 を使用します。 これらの規格<br />

は、 システム コ ン フ ィ ギ ュ レーシ ョ ンに合わせて変更可能です。 こ れら の信号は、 シ ス テム接続の<br />

ために最上位へ配線さ れます。<br />

• sys_rst – メイン システム リ セ ッ ト 信号です。<br />

• init_calib_complete – 内部キ ャ リ ブレーシ ョ ンが完了し、イ ン ターフ ェ イ スの使用準備が<br />

整ってい る こ と を示す信号です。<br />

• tg_compare_error – 読み出しデータ と 書き込みデータ が一致し ない場合にサンプル デザイ<br />

ンの ト ラフ ィ ッ ク ジ ェ ネレーターに よ って生成 さ れる信号です。<br />

これらの信号はすべて LVCMOS25 に設定されていますが、システム デザイ ンに応じ て変更が可能<br />

です。 こ れ ら の信号を生成し て外部ピ ンに出力する のではな く 、 内部で使用する こ と も で き ます。<br />

<strong>インターフェイス</strong>によっては、アドレス/制御およびデータ があ るバン ク の上下いずれかのバン ク に<br />

システム ク ロ ッ ク が必要 と な る こ と があ り ます。 こ の場合、 MIG ツールは UCF に制約を追加し ま<br />

す。 次に例を示し ます。<br />

NET "sys_clk_p" CLOCK_DEDICATED_ROUTE = BACKBONE;<br />

PIN "*/u_infrastructure/plle2_i.CLKIN1" CLOCK_DEDICATED_ROUTE =<br />

BACKBONE;<br />

これは、 MIG ツールで生成し た メ モ リ <strong>インターフェイス</strong> デザ イ ンでのみ使用し て く だ さ い。 配置<br />

配線の実行時に次の よ う な警告が表示さ れますが、 こ の警告は無視し てかまいません。<br />

WARNING:Place:1402 - A clock IOB / PLL clock component pair have been<br />

found that are not placed at an optimal clock IOB / PLL site pair.The<br />

clock IOB component is placed at site .The<br />

corresponding PLL component is<br />

placed at site .The clock IO can use the fast path<br />

between the IOB and the PLL if the IOB is placed on a Clock Capable IOB<br />

site that has dedicated fast path to PLL sites within the same clock<br />

region.You may want to analyze why this problem exists and correct<br />

it.This is normally an ERROR but the CLOCK_DEDICATED_ROUTE constraint<br />

was applied on COMP.PIN allowing your design to<br />

continue.This constraint disables all clock placer rules related to the<br />

specified COMP.PIN.The use of this override is highly discouraged as it<br />

may lead to very poor timing results.It is recommended that this error<br />

condition be corrected in the design.<br />

リソースが限られるため、MIG ツールで生成した メモ リ イ ン ターフ ェ イ ス を含む領域か ら I/O ク<br />

ロッキング バ ッ ク ボーン経由で隣接する領域の CMT ブロックへユーザー クロックを駆動しない<br />

で く だ さ い。 詳細は、 『7 <strong>シリーズ</strong> <strong>FPGA</strong> クロック リソース ユーザー ガイド』 [参照 18] を参照し<br />

てください。<br />

MIG ツールは選択し たデータ レー ト および電圧入力に基づいて VCCAUX_IO 制約を設定し ます。<br />

生成さ れた UCF には、 必要に応じ て制約が追加されます。 次に例を示し ます。<br />

NET "sys_clk_p" LOC = "Y5" | IOSTANDARD = DIFF_HSTL_I |<br />

VCCAUX_IO = DONTCARE;<br />

NET "sys_clk_n" LOC = "W5" | IOSTANDARD = DIFF_HSTL_I |<br />

VCCAUX_IO = DONTCARE;<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 313<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

詳細は、 『タ イ ミ ン グ クロージャ ユーザー ガイド』 [参照 13] を参照して く ださい。<br />

LVDS および LVDS_25 IO 規格の使用法および必要な回路は、『7 <strong>シリーズ</strong> <strong>FPGA</strong> SelectIO リソー<br />

ス ユーザー ガイド』 [参照 1] を参照して く ださい。<br />

手動によ る ピ ン配置の変更<br />

表 3-17 : RLDRAM II バイ ト レーン #1<br />

バンク<br />

0 0<br />

バイ ト<br />

レーン ビット DDR<br />

表 3-16 で説明し たパラ メ ーターを手動で変更するために、 次の例でそれぞれのバイ ト レーンに対<br />

してパラ メーターを割り当てる方法を示します。 表 3-17 に、 標準の RLDRAM II データ バイ ト<br />

レーン を示し、 各信号についてバン ク 、 バイ ト レーン、 そ し てビ ッ ト 位置を示し ます。<br />

バイ ト<br />

グループ<br />

I/O<br />

タイプ I/O 番号 特記 BITLANES<br />

9 VREF A_11 P 12 VREF 0<br />

8 DQ8 A_10 N 11 1<br />

7 DQ7 A_09 P 10 1<br />

6 DQ6 A_08 N 9 1<br />

B DK0_P A_07 P 8 DQSCC-P 0 0001<br />

A DK0_N A_06 N 7 DQSCC-N 0 1<br />

5 DQ5 A_05 P 6 1 1111<br />

4 DQ4 A_04 N 5 1 F<br />

3 DQ3 A_03 P 4 1<br />

2 DQ2 A_02 N 3 1<br />

1 DQ1 A_01 P 2 1 1111<br />

0 DQ0 A_00 N 1 1 F 1FF<br />

VRN N/A SE 0<br />

表 3-18 に、 表 3-17 のバイ ト レーン パラ メーターを示します。<br />

表 3-18 : RLDRAM II データ バイ ト レーン #1 のパラ メ ー タ ー<br />

パラ メーター 値<br />

DK_MAP 8'h00<br />

DQTS_MAP 12'h00A<br />

PHY_0_BITLANES 12'h1FF<br />

DATA0_MAP 108'h008_007_006_005_004_003_002_001_000<br />

314 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 3-19 : RLDRAM II バイ ト レーン #2 (例)<br />

バンク<br />

0 1<br />

バイ ト<br />

レーン ビット DDR<br />

設計ガイ ド ラ イ ン<br />

表 3-19 に、 QVLD がトライステート位置に配置されている別の RLDRAM II データ バイ ト レー<br />

ンを示します。 これはト ライステート位置が I/O の OSERDES 位置のみを使用する ため有効です。<br />

バイ ト<br />

グループ<br />

I/O<br />

タイプ I/O 番号 特記 BITLANES<br />

9 QK0_P B_11 P 24 CCIO-P 0<br />

8 QK0_N B_10 N 23 CCIO-N 0<br />

7 DQ17 B_09 P 22 CCIO-P 1<br />

6 DQ16 B_08 N 21 CCIO-N 1<br />

B DQ15 B_07 P 20 DQSCC-P 1 1000<br />

A QVLD B_06 N 19 DQSCC-N 0 8<br />

5 DQ14 B_05 P 18 1 1111<br />

4 DQ13 B_04 N 17 1 F<br />

3 DQ12 B_03 P 16 1<br />

2 DQ11 B_02 N 15 1<br />

1 DQ10 B_01 P 14 1 1111<br />

0 DQ9 B_00 N 13 1 F 8FF<br />

表 3-20 に、 表 3-19 のバイ ト レーン パラ メーターを示します。<br />

表 3-20 : RLDRAM II データ バイ ト レーン #2 のパラ メ ー タ ー<br />

パラ メーター 値<br />

QVLD_MAP 12'h01A<br />

DQTS_MAP 12'h01A<br />

PHY_0_BITLANES 12'h8FF<br />

DATA1_MAP<br />

QK_MAP<br />

108'h017_016_01B_015_014_013_012_011_010<br />

8'h01<br />

表 3-21 は表 3-19 と同じバイ ト レーンを示しますが、 こ こでは QVLD ではな く データ マスク<br />

(DM) が配置されています。 DM と ト ラ イ ス テー ト 制御は OSERDES 位置を共有で き ますが、 物理<br />

層の OUT_FIFO では同じ位置を共有でき ません。 このため、 OUT_FIFO からの一部の信号を<br />

表 3-21 に示すとおりにシフトさせる必要があります。シフト方向は、バイト レーンの位置に よ っ<br />

て決定し ます。 バイ ト レーン 0、 1 の場合は上方向、 2、 3 の場合は下方向にシ フ ト し ます。 こ の場<br />

合、 PHY は ト ラ イ ス テー ト 制御 と DM を結合して同じ OSERDES 位置を共有し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 315<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-21 : RLDRAM II バイ ト レーン #3 (例)、 DM と共有されるト ライステート (バイ ト レーン #1)<br />

バンク<br />

0 1<br />

バイ ト<br />

レーン ビット MAP DDR<br />

UCF<br />

バイ ト<br />

グループ<br />

I/O タイ<br />

プ<br />

I/O 番号 特記 BITLANES<br />

9 QK0_P B_11 P 24 CCIO-P 0<br />

8 DQ17 QK0_N B_10 N 23 CCIO-N 1<br />

7 DQ16 DQ17 B_09 P 22 CCIO-P 1<br />

6 DQ15 DQ16 B_08 N 21 CCIO-N 1<br />

B<br />

トライス<br />

テー ト<br />

DQ15 B_07 P 20 DQSCC-P 0 0101<br />

A DM DM B_06 N 19 DQSCC-N 1 5<br />

5 DQ14 DQ14 B_05 P 18 1 1111<br />

4 DQ13 DQ13 B_04 N 17 1 F<br />

3 DQ12 DQ12 B_03 P 16 1<br />

2 DQ11 DQ11 B_02 N 15 1<br />

1 DQ10 DQ10 B_01 P 14 1<br />

0 DQ9 DQ9 B_00 N 13 1 F 5FF<br />

表 3-22 に、 表 3-21 のバイ ト レーン パラ メーターを示します。<br />

表 3-22 : RLDRAM II データ バイ ト レーン #3 のパラ メ ー タ ー<br />

パラ メーター 値<br />

DM_MAP 12'h01A<br />

DQTS_MAP 12'h01B<br />

PHY_0_BITLANES 12'h5FF<br />

DATA1_MAP 108'h018_017_016_015_014_013_012_011_010<br />

QK_MAP 8'h01<br />

316 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

111<br />

1


設計ガイ ド ラ イ ン<br />

表 3-23 に、 ト ラ イ ス テー ト 制御の位置を共有する QVLD を持つ、 別の RLDRAM II バイ ト レー<br />

ンを示します (ま たはその位置は未使用のま ま)。<br />

表 3-23 : RLDRAM II バイ ト レーン #4 (例)、 QVLD と共有される ト ライステート<br />

バンク<br />

0 2<br />

バイ ト<br />

レーン ビット MAP DDR<br />

バイ ト<br />

グループ<br />

UCF<br />

I/O<br />

タイプ I/O 番号 特記 BITLANES<br />

9 DQ26 DQ26 C_11 P 12 1<br />

8 DQ25 DQ25 C_10 N 11 1<br />

7 DQ24 DQ24 C_09 P 10 1<br />

6 DQ23 DQ23 C_08 N 9 1<br />

B DQ22 DQ22 C_07 P 8 DQSCC-P 1 1011<br />

A QVLD QVLD C_06 N 7 DQSCC-N 0 B<br />

5 DQ21 DQ21 C_05 P 6 1<br />

4 DQ20 DQ20 C_04 N 5 1 F<br />

3 DQ19 DQ19 C_03 P 4 CCIO-P 1<br />

2 DQ18 DQ18 C_02 N 3 CCIO-N 1<br />

1 QK1_P C_01 P 2 CCIO-P 0 1100<br />

0 QK1_N C_00 N 1 CCIO-N 0 C BFC<br />

表 3-24 に、 表 3-23 のバイ ト レーン パラ メーターを示します。<br />

表 3-24 : RLDRAM II データ バイ ト レーン #4 のパラ メ ー タ ー<br />

パラ メーター 値<br />

DQTS_MAP 12'h02A<br />

PHY_0_BITLANES 12'hBFC<br />

DATA1_MAP 108'h029_028_027_026_02B_025_024_023_022<br />

QK_MAP 8'h02<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 317<br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

111<br />

1


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

I/O 規格<br />

表 3-25 に、 表 3-23 と同じ RLDRAM II バイ ト レーンを示しますが、QVLD ではな く DM がこの<br />

バイ ト レーンに配置 さ れています。 こ の場合、 信号は OUT_FIFO で下方向にシフ ト さ れます。<br />

表 3-25 : RLDRAM II バイ ト レーン #5 (例)、 DM と共有されるト ライステート (バイ ト レーン #2)<br />

バンク<br />

0 2<br />

バイ ト<br />

レーン ビット MAP DDR<br />

UCF<br />

バイ ト<br />

グループ<br />

I/O<br />

タイプ I/O 番号 特記 BITLANES<br />

9 DQ26 DQ26 C_11 P 12 1<br />

8 DQ25 DQ25 C_10 N 11 1<br />

7 DQ24 DQ24 C_09 P 10 1<br />

6 DQ23 DQ23 C_08 N 9 1<br />

B DQ22 DQ22 C_07 P 8 DQSCC-P 1 1111<br />

A DM DM C_06 N 7 DQSCC-N 1 F<br />

5<br />

トライ<br />

ステート<br />

DQ21 C_05 P 6 0 1101<br />

4 DQ21 DQ20 C_04 N 5 1 D<br />

3 DQ20 DQ19 C_03 P 4 CCIO-P 1<br />

2 DQ19 DQ18 C_02 N 3 CCIO-N 1<br />

1 DQ18 QK1_P C_01 P 2 CCIO-P 1<br />

0 QK1_N C_00 N 1 CCIO-N 0 E FDE<br />

表 3-26 に、 表 3-25 のバイ ト レーン パラ メーターを示します。<br />

表 3-26 : RLDRAM II データ バイ ト レーン #5 のパラ メ ー タ ー<br />

パラ メーター 値<br />

DM_MAP 12'h02A<br />

DQTS_MAP 12'h025<br />

PHY_0_BITLANES 12'hFDE<br />

DATA1_MAP 108'h029_028_027_026_02B_024_023_022_021<br />

QK_MAP 8'h02<br />

MIG ツールは、 7 <strong>シリーズ</strong> <strong>FPGA</strong> に対する入力ま たは出力に応じ て SelectIO 規格を選択し、 コ<br />

アの UCF を適切に生成し ます。 こ れ ら の規格は変更し ないで く だ さ い。 表 3-27 および表 3-28 に、<br />

ポー ト と 使用さ れる I/O 規格の一覧を示し ます。<br />

318 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

111<br />

0


表 3-27 : RLDRAM II I/O 規格<br />

RLDRAM II および RLDRAM III デザイ ンのデバッ グ<br />

信号 方向 I/O 規格<br />

rld_ck_p、 rld_ck_n 出力 DIFF_HSTL_I<br />

rld_dk_p、 rld_dk_n 出力 DIFF_HSTL_I<br />

rld_cs_n 出力 HSTL_I<br />

rld_we_n 出力 HSTL_I<br />

rld_ref_n 出力 HSTL_I<br />

rld_a 出力 HSTL_I<br />

rld_ba 出力 HSTL_I<br />

rld_dm 出力 HSTL_I<br />

rld_dq 入力/出力 HSTL_II_T_DCI、 HSTL_II<br />

rld_qk_p、 rld_qk_n 入力 DIFF_HSTL_II_DCI、 DIFF_HSTL_II<br />

表 3-28 : RLDRAM III I/O 規格<br />

信号 方向 I/O 規格<br />

rld_ck_p、 rld_ck_n 出力 DIFF_SSTL12<br />

rld_dk_p、 rld_dk_n 出力 DIFF_SSTL12<br />

rld_cs_n 出力 SSTL12<br />

rld_we_n 出力 SSTL12<br />

rld_ref_n 出力 SSTL12<br />

rld_a 出力 SSTL12<br />

rld_ba 出力 SSTL12<br />

rld_dm 出力 SSTL12<br />

rld_dq 入力/出力 SSTL12_T_DCI、 SSTL12<br />

rld_qk_p、 rld_qk_n 入力 DIFF_SSTL12_DCI、 DIFF_SSTL12<br />

パフォーマンス仕様を満たすには、 <strong>FPGA</strong> に DCI (HP バンクの場合) または IN_TERM (HR バン<br />

クの場合) が必要です。 MIG ツールで生成したデザインは、 High-Performance バンクでのデータ<br />

(DQ) および読み出し ク ロ ッ ク (QK_P と QK_N) に DCI 規格を使用し ます。 RLDRAM II の<br />

High-Range バンクでは HSTL_II および DIFF_HSTL_II 規格を使用し、 内部終端 (IN_TERM) 属<br />

性は MIG の GUI で選択し ます。<br />

RLDRAM II および RLDRAM III デザイ ンのデバッ グ<br />

ここでは、<strong>メモリ</strong> イ ン ターフ ェ イ スの設計プ ロ セスで生じ る問題を特定し、 修正する ためのデバ ッ<br />

グ方法を手順を追って説明し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 319<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

概要<br />

デバッ グ ツール<br />

RLDRAM II/RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong>では、 <strong>メモリ</strong> <strong>インターフェイス</strong> デザイ ンの複<br />

雑な点が単純になっていますが、 アプ リ ケーシ ョ ン環境はそれぞれに異な るため、 堅牢なデザイ ン<br />

を構築する には適切な配慮が必要です。 シ ミ ュ レーシ ョ ン、適切な合成 と イ ンプ リ メ ンテーシ ョ ン、<br />

PCB レイアウト ガ イ ド ラ イ ンの順守な どの機能検証や、IBIS シ ミ ュ レーシ ョ ンやシグナル インテ<br />

グ リ テ ィ 解析な どのボー ド 検証を注意深 く 実行し て く だ さ い。<br />

こ こ では、 設計プ ロ セ スで生じ る問題を特定し、 修正する ためのデバ ッ グ方法を手順を追って説明<br />

し ます。 特に、 次の内容について詳し く 説明し ます。<br />

• UNISIM シミュレーション モデルを使用し た機能検証<br />

• デザイ ン インプリ メンテーションの検証<br />

• ボード レイアウトの検証<br />

• RLDRAM II/RLDRAM III 物理層を使用し たボー ド レベル問題のデバッグ<br />

• 一般的なボー ド レベル デバ ッ グ手法<br />

<strong>メモリ</strong> イ ン ターフ ェ イ スの検証時に直面する主な問題 と し ては、 次の 2 つがあ り ます。<br />

• キャ リブレーションが正常に完了しない<br />

• 通常動作時にデータ が破損する<br />

問題はその原因に よ り 、 シ ミ ュ レーシ ョ ン あ る いはハー ド ウ ェ アでのみ発生する場合 と 、 こ れ ら両<br />

方で発生する場合があ り ます。<br />

図 3-38 に、 これら 2 つの一般的な問題をデバ ッ グする際の概略フ ローを示し ます。<br />

X-Ref Target - Figure 3-38<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-38 : MIG による RLDRAM II/RLDRAM III のデバッ グ フロー図<br />

<strong>メモリ</strong> <strong>インターフェイス</strong> デザイ ンのデバッ グ ツールは数多 く あ り ます。 こ こ では、 状況に応じ て<br />

最適なデバ ッ グ リソースを紹介します。<br />

サンプル デザイ ン<br />

MIG ツールで RLDRAM II/RLDRAM III デザ イ ン を生成する と 、サンプル デザイ ン と ユーザー デ<br />

ザインが生成されます。 サンプル デザイ ンには、 シ ミ ュ レーシ ョ ンおよびハー ド ウ ェ アで完全に検<br />

証済みの合成可能なテ ス ト ベンチが含まれます。 こ のデザ イ ンは、 MIG ツールで生成したデザイン<br />

の動作を確認する ために使用で き、 ボー ド 関連の問題を特定する際に も有用です。<br />

320 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


デバッ グ信号<br />

RLDRAM II および RLDRAM III デザイ ンのデバッ グ<br />

MIG の [<strong>FPGA</strong> Options] ページには [Debug Signals Control] オプシ ョ ンがあ り ます。 この機能を<br />

有効にする と 、 キ ャ リ ブレーシ ョ ン、 タ ッ プ遅延、 読み出しデータ信号を ChipScope Analyzer で<br />

確認で き ます。 ま た、 デバ ッ グ信号がデザ イ ンの最上位モジ ュールで ChipScope Analyzer の VIO<br />

モジュールにポー ト マップされます。<br />

ChipScope Pro<br />

ChipScope Pro ツールを使用し、 ロジッ ク アナラ イザー、 バス アナラ イザー、 VIO ソフトウェア<br />

の コ ア をデザ イ ンへ直接組み込みます。 ChipScope Pro ツールではアプ リ ケーシ ョ ンや MIG の信<br />

号をハー ド ウ ェ アでキ ャ プチャする ト リ ガー条件をユーザーが設定で き ます。 キ ャ プチャ し た信号<br />

は、 ChipScope Pro Logic Analyzer で解析でき ます ([参照 8])。<br />

シミュレーションのデバッグ<br />

図 3-39 に、 シ ミ ュ レーシ ョ ンのデバッ グ フローを示します。<br />

X-Ref Target - Figure 3-39<br />

<br />

<br />

<br />

<br />

<br />

図 3-39 : シミュレーションのデバッグ フロー図<br />

サンプル デザイ ンを使用し たシ ミ ュ レーシ ョ ン検証<br />

MIG ツールで生成したサンプル デザイ ンには、 シ ミ ュ レーシ ョ ン テス トベンチ、MIG ツールで選<br />

択した<strong>メモリ</strong>に基づくパラ メーター ファイル、および ModelSim の .do スクリプト ファイルが含<br />

まれます。 このサンプル デザ イ ンのシ ミ ュ レーシ ョ ンが正常に完了する と 、 適切なシ ミ ュ レーシ ョ<br />

ン環境である こ とが保証されます。<br />

これで、 シミ ュレーショ ン ツールおよびザイ リ ンク ス ライブラリが正しくセットアップされてい<br />

ることになります。 ザイリンクス ラ イ ブ ラ リ の設定方法は、 『コ マン ド ライン ツール ユーザー ガ<br />

イド』 [参照 9] の 「COMPXLIB」 および 『合成/シ ミュレーション デザイ ン ガイド』 [参照 10] を<br />

参照し て く だ さ い。 シ ミ ュ レーシ ョ ン ツールのサポー ト については、 『7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> イ<br />

ンターフェイス ソ リューション データ シー ト 』 [参照 11] を参照して く ださい。<br />

サンプル デザ イ ンのシ ミ ュ レーシ ョ ンでは、 メ モ リ 初期化を完了し た後、 テ ス ト ベンチのス テ ィ<br />

ミ ュ ラ スに対応し て ト ラ フ ィ ッ ク を実行し ます。 メ モ リ の初期化およびキ ャ リ ブレーシ ョ ンが完了<br />

する と、 init_calib_complete 信号がアサー ト さ れます。 こ の信号がアサー ト さ れる と ト ラ<br />

フィック ジ ェ ネレーターに制御が移 り 、パ ラ メ ーター値に基づいて読み出しおよび書き込みを開始<br />

します。<br />

表 3-29 に、 シ ミ ュ レーシ ョ ンで使用する信号およびパ ラ メ ーターを示し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 321<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-29 : シミュレーションで使用する信号<br />

信号名 使用法<br />

tg_compare_error UI から書き込まれたデータと UI の読み出し時に受信し た<br />

データ が一致し ていない こ と を示し ます。こ の信号はサンプ<br />

ル デザイ ンの一部です。 1 回のエラーで信号がアサー ト さ<br />

れ、 デザ イ ンが リ セ ッ ト さ れる までその状態が続き ます。<br />

dbg_cmp_err UI から書き込まれたデータと UI の読み出し時に受信し た<br />

データ が一致し ていない こ と を示し ます。こ の信号はサンプ<br />

ル デザ イ ンの一部です。 データ の不一致が生じ る ご と にア<br />

サー ト されます。<br />

user_cmd_en コマンドが有効かど うかを示します。<br />

user_cmd ユーザーが書き込みまたは読み出し コマン ド を要求し たか<br />

どうかを示します。<br />

2’b00 : 書き込みコマンド<br />

2’b01 : 読み出し コ マン ド<br />

2’b10 : NOP<br />

2’b11 : NOP<br />

user_addr 現在の コ マン ド のア ド レ ス位置です。<br />

user_ba 現在の コ マン ド のバン ク アドレスの位置です。<br />

user_wr_en user_wr_data が有効な場合にアサー ト さ れます。 書き込み<br />

コマンドに必要です。<br />

user_wr_data 書き込みコ マン ド の書き込みデータ です。<br />

user_wr_dm マ ス ク をはずし、書き込み ト ラ ンザ ク シ ョ ンですべてのデー<br />

タが書き込まれないよ うにするデータ マスクです。<br />

user_afifo_empty コマンドおよびアドレス FIFO が空であ る こ と を示し ます。<br />

user_afifo_full コマンドおよびアドレス FIFO がフルであるこ とを示しま<br />

す。 アサー ト さ れる と 、 追加の コ マン ド およびデータ が受信<br />

されません。<br />

user_wdfifo_empty 書き込みデータ FIFO が空であ る こ と を示し ます。<br />

user_wdfifo_full 書き込みデータ FIFO がフルであ る こ と を示し ます。アサー<br />

ト さ れる と 、 追加の書き込みデータ が受信 さ れません。<br />

user_rd_valid user_rd_data が有効の場合、 アサー ト さ れます。<br />

user_rd_data 読み出し コ マン ド の結果 と し て、読み出しデータ が メ モ リ か<br />

ら返されます。<br />

メ モ リ の初期化<br />

シミュレーションでは、MIG ツールは、 メ モ リ の初期化で一般に要する長い待機時間が省略 さ れる<br />

ようにデザイン パラ メーターを設定します。 このよ うなパラ メーターは、 結果的に<strong>メモリ</strong> モデル<br />

の警告を招 く こ と があ り ます。ハー ド ウ ェ アで完全な メ モ リ ア レ イ を正し く 初期化およびキ ャ リ ブ<br />

レーシ ョ ンするデザ イ ンの場合、 上位 MIG ツール ファイル (example_top.v) ではこれらのパラ<br />

322 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 3-40<br />

RLDRAM II および RLDRAM III デザイ ンのデバッ グ<br />

メ ーターに対応する省略さ れた値を使用で き ません。MIG ツールの出力によって、テス トベンチで<br />

は省略さ れた値が、 最上位のデザ イ ン モジ ュールでは全範囲の値が正し く 設定 さ れます。<br />

キャリブレーショ ン<br />

キャ リブレーションは、 リード レベリ ングと リード イネーブル キ ャ リ ブレーシ ョ ンで構成 さ れま<br />

す。 こ れは 3 段階で実行し ます。 キ ャ リ ブレーシ ョ ン プ ロ セ スが正し く 完了する と、<br />

init_calib_complete 信号がアサー ト さ れます。 詳細は、 290 ページの 「物理イ ン ターフ ェ イ<br />

ス」 を参照して く ださい。<br />

最初の工程では、 ビ ッ ト 単位の リ ー ド レベリ ング キ ャ リ ブレーシ ョ ン を実行し ます。 こ の工程で<br />

使用するデータ パターンは、 0_F_0_F_0_F_F_0 です。 このデータ パターンをまず<strong>メモリ</strong>に書き<br />

込みます (図 3-40)。<br />

図 3-40 : 第 1 工程の読み出し キャ リ ブ レーシ ョ ンにおける書き込み<br />

こ のパターン を、 キ ャ リ ブレーシ ョ ン実行中に連続し て読み出し ます (図 3-41)。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 323<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 3-41<br />

図 3-41 : 第 1 工程の読み出し キャ リ ブ レーシ ョ ンにおける読み出し<br />

第 2 工程では、 データ が正し い順で返 さ れる よ う に調整が行われます。 データ パターンの長さは、<br />

<strong>メモリ</strong> クロックおよびファブリック クロックの比率に依存します。RLDRAM II の場合、A_5_0_F<br />

のデータ パターンが最初に<strong>メモリ</strong>に書き込まれ、引き続き リードバッ ク されて必要に応じて内部で<br />

調整さ れます。<br />

RLDRAM III の場合、 A_5_0_F_9_6_D_2 のデータ パターンが最初に<strong>メモリ</strong>に書き込まれ、 引き<br />

続き リ ードバッ ク されて必要に応じて内部で調整されます。<br />

第 3 工程では リ ー ド イネーブル信号のキャ リブレーションを実行します。 この工程で使用される<br />

データ パターンは、 第 2 工程のキ ャ リ ブレーシ ョ ンで使用 さ れるパターン と 同じ も のです。 こ の<br />

データ パターンを<strong>メモリ</strong>に書き込んでから読み出し、 リード イネーブル信号のキ ャ リ ブレーシ ョ<br />

ン を実行し ます (図 3-42)。<br />

324 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 3-42<br />

X-Ref Target - Figure 3-43<br />

RLDRAM II および RLDRAM III デザイ ンのデバッ グ<br />

図 3-42 : 第 2 工程の読み出し キャ リ ブ レーシ ョ ンにおける書き込みと読み出し (RLDRAM II のパタ ーン)<br />

図 3-43 : 第 3 工程の読み出し キャ リ ブ レーシ ョ ンにおける書き込みと読み出し (RLDRAM II のパタ ーン)<br />

再度書き込み/読み出し を実行する と 読み出しバスは別の値に駆動さ れます。 こ れは、 読み出し キ ャ<br />

リブレーションで正しいデータ パターンを識別できるようにするため、主にハードウェアで必要で<br />

す。<br />

第 3 工程のキ ャ リ ブレーシ ョ ンが完了する と init_calib_complete 信号がアサー ト さ れ、 キ ャ リ ブ<br />

レーシ ョ ン プ ロ セ スが正し く 完了し た こ と を示し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 325<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 3-44<br />

テストベンチ<br />

init_calib_complete がアサー ト さ れる と テ ス ト ベンチに制御が移 り 、 メ モ リ への書き込みおよび読<br />

み出し を実行し ます。 書き込んだデータ と 読み出し たデータ が比較 さ れ、 その結果が一致し ない場<br />

合はエ ラー信号がアサー ト されます。 図 3-44 に、 エ ラーがアサー ト されずにテ ス ト ベンチのイ ン<br />

プ リ メ ンテーシ ョ ンが成功し た様子を示し ます。<br />

図 3-44 : キャ リ ブ レーシ ョ ン完了後のテス ト ベンチの動作<br />

正し い書き込みおよび読み出し コ マン ド<br />

書き込みおよび読み出し コ マン ド を送信する際は、 対応する UI 入力を適切にアサー ト ま たはデ ィ<br />

アサー ト する必要があ り ます。 詳細は、 283 ページの 「ク ラ イ アン ト インターフェース」 および<br />

285 ページの 「 ク ラ イ アン ト <strong>インターフェイス</strong>を介したコアとの<strong>インターフェイス</strong>」 を参照して く<br />

ださい。 サンプル デザ イ ンに付属する テ ス ト ベンチ デザイ ンを使用し て、 UI の動作を検証で き ま<br />

す。<br />

RLDRAM II/RLDRAM III <strong>インターフェイス</strong>のデータ エラーをデバッグするには、 UI 信号をシ<br />

ミ ュ レーシ ョ ン波形を取得する必要があ り ます。<br />

ModelSim の [Instance] ウ ィンドウで u_ip_top を選択する と 、[Objects] ウ ィ ン ド ウ に必要な UI 信<br />

号が表示されます (図 3-45)。 322 ページの表 3-29 に示し た UI 信号で右 ク リ ッ ク し、 [Add] → [To<br />

Wave] → [Selected Signals] をク リ ックします。<br />

326 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 3-46<br />

X-Ref Target - Figure 3-47<br />

X-Ref Target - Figure 3-45<br />

RLDRAM II および RLDRAM III デザイ ンのデバッ グ<br />

図 3-45 : ModelSim の [Instance] ウィンドウ<br />

図 3-46 と 図 3-47 に、 ユーザー <strong>インターフェイス</strong>の書き込み/読み出し波形の例を示し ます。<br />

図 3-46 : ユーザー イ ン タ ーフ ェ イ スの書き込み<br />

図 3-47 : ユーザー イ ン タ ーフ ェ イ スの読み出し<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 327<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

合成およびインプリ メンテーショ ンのデバッグ<br />

図 3-48 に、 合成およびイ ンプ リ メ ンテーシ ョ ンのデバ ッ グ フローを示します。<br />

X-Ref Target - Figure 3-48<br />

合成およびイ ン プ リ メ ン テーシ ョ ンの検証<br />

MIG ツールによって生成されるサンプル デザイ ンおよびユーザー デザイ ンには、合成/インプリ メ<br />

ンテーシ ョ ン スクリプト ファイルとユーザー制約ファイル (.ucf) が含まれます。 これらのフ ァ イ<br />

ルを使用し て ターゲ ッ ト デザ イ ン を合成およびイ ンプ リ メ ン ト する と 、 ビ ッ ト ス ト リ ームが生成 さ<br />

れます。<br />

合成/ インプリ メンテーション スクリプト ファイル (ise_flow.bat/ise_flow.sh) は、<br />

example_design/par ディレク ト リ と user_design/par ディレク ト リの両方にあります。 こ<br />

のス ク リ プ ト を実行する と 、サンプル デザイ ン またはユーザー デザインに対してインプリ メンテー<br />

ション プロセス (合成、 変換、 MAP、 PAR、 TRACE、 および BITGEN) が実行さ れます。 こ れ ら<br />

の各プロセスに設定し たオプシ ョ ンのみが、RLDRAM II MIG デザイ ンで検証されています。 イ ン<br />

プリ メンテーションが正常に完了したデザインは、すべてのプロセスにエラーがない (タイミング<br />

エラーがゼロ) という ことになります。<br />

MIG 出力の変更を検証<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-48 : 合成およびインプリ メンテーショ ンのデバッグ フロー図<br />

MIG ツールではメモ リ イ ン ターフ ェ イ ス信号の <strong>FPGA</strong> バン ク をユーザーが選択で き ます。 選択し<br />

たバン クに基づいて、 MIG ツールは必要なすべての ロ ケーシ ョ ン制約を記述し た UCF ファイルを<br />

出力し ます。 こ のフ ァ イルは、 example_design/par ディレク ト リ と user_design/par ディ<br />

レク ト リに生成され、 変更できません。<br />

MIG ツールは最上位の HDL パラ メ ーターでパラ メ ーターが指定されたオープン ソース RTL コー<br />

ド を出力し ます。 こ れ ら のパ ラ メ ーターは MIG ツールによって設定されるため、 手動で変更しな<br />

いで く だ さ い。 周波数の増減などの変更が必要な場合は MIG ツールを再実行し てア ッ プデー ト し<br />

たデザ イ ン を作成し ます。手動での変更はサポー ト さ れていないため、変更する場合はビヘイ ビ アー<br />

シ ミ ュ レーシ ョ ン、 合成、 およびイ ンプ リ メ ンテーシ ョ ン をそれぞれ実行し て検証する必要があ り<br />

ます。<br />

タイミング エ ラーの検出と解析<br />

MIG の RLDRAM II/RLDRAM III デザイ ンは、サンプル デザイ ンを使用し て幅広いコ ン フ ィ ギ ュ<br />

レーシ ョ ンで タ イ ミ ン グ を満たすこ と が検証 さ れています。 ただ し、 MIG ツールで生成し たデザ イ<br />

328 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


RLDRAM II および RLDRAM III デザイ ンのデバッ グ<br />

ンにユーザー固有のアプ リ ケーシ ョ ン ロジッ クを統合した場合などはタイ ミ ング違反が生じるこ<br />

とがあります。<br />

タ イ ミ ング違反が発生し た場合は、 それを解決する必要があ り ます。 TRACE で出力される タ イ ミ<br />

ング レポート (.twx/.twr) を解析し、 タ イ ミ ング違反のパスが MIG ツールの RLDRAM II デザ<br />

インと MIG デザイ ンへの UI (バックエンド アプ リ ケーシ ョ ン) のどち ら にあ る のかを確認し ます。<br />

エ ラーが確認さ れた場合は、 ise_flow.bat ファイルで指定したビルド オプシ ョ ン (XST、 MAP、<br />

PAR) が適切に使用 さ れてい る かを確認し ます。<br />

それで も エ ラーが解消さ れない場合は、 さ ま ざ ま なザ イ リ ン ク ス リソースを使用し、タイミング ク<br />

ロージャを達成します。 PlanAhead [参照 12] は、 デザ イ ン全体のパフ ォーマン ス と 品質を改善<br />

し ます。 ザ イ リ ン ク スの制約に関する詳細は、 『タ イ ミ ン グ クロージャ ユーザー ガイド』 [参照 13]<br />

を参照して く ださい。<br />

ハー ド ウ ェ アのデバッ グ<br />

図 3-49 に、 ハード ウ ェアのデバッ グ フローを示します。<br />

X-Ref Target - Figure 3-49<br />

クロッキング<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

図 3-49 : ハー ド ウ ェ アのデバッ グ フロー図<br />

周波数、安定性 (ジッター)、および <strong>FPGA</strong> ピ ンの使用率をすべて実現する には、外部 ク ロ ッ ク ソー<br />

ス を評価する必要があ り ます。 設計者は、 デザ イ ンがすべての ク ロ ッ キ ン グ ガイドラインに準拠し<br />

てい る こ と を確認する必要があ り ます。 ク ロ ッ キ ン グ ガ イ ド ラ イ ンに従っていて も問題が発生する<br />

場合は、 イ ン ターフ ェ イ スの動作速度を引き下げます。 デザ イ ンやボー ド に よ っては、 周波数を下<br />

げる と 適切に動作し ない場合があ り ます。 周波数が低下する と 、 PCB ト レースの不一致、 シグナル<br />

イ ンテグ リ テ ィ の低下、 ま たは過剰負荷に よ って、 セ ッ ト ア ッ プ タイムやホールド タイムのマー<br />

ジンがわずかに増加し ます。 周波数を下げる場合は、MIG を再実行し て低周波数に対応し たデザ イ<br />

ンを生成し直してください。 キャ リブレーション ロジックには CLK_PERIOD パラ メーターの影<br />

響を受け る部分があ る ため、 こ のパ ラ メ ーターを手動で変更する こ と は推奨で き ません。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 329<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

ボー ド 上のピ ン配置の検証<br />

MIG ツールで出力 さ れた ピ ン配置を変更せずそのま ま使用し てい る かど う かを確認し ます。 次に、<br />

ボー ド 回路図 と PAR で生成された .pad レポート を比較します。 これによ り、<br />

ボー ド のピ ン配置 と イ ンプ リ メ ンテーシ ョ ン済みデザ イ ンで割 り 当て られた ピ ンが一致し てい る こ<br />

と を確認し ます。<br />

IBIS モデルを使用したシグナル インテグリティ シ ミ ュ レーシ ョ ンの実行<br />

ボード レイアウ トのガイ ド ラインに準拠しているかを検証するには、IBIS (I/O Buffer Information<br />

Specification) を使用してシグナル インテグリティ シ ミ ュ レーシ ョ ン を実行する必要があ り ます。<br />

これらのシミ ュレーショ ンは、 ボード レ イ ア ウ ト の前後の両方で実行し ます。 目的は、 ボー ド 上の<br />

シグナル イ ンテグ リ テ ィ の検証です。<br />

『Virtex-5 <strong>FPGA</strong> ML561 <strong>メモリ</strong> <strong>インターフェイス</strong>開発ボード ユーザー ガイド』 [参照 14] の<br />

「ML561 Hardware-Simulation Correlation」 の章に記載の説明をガ イ ド ラ イ ン と し て使用で き ます。<br />

この章では、 ML561 ボード のシグナル イ ンテグ リ テ ィ の相関結果を詳し く 解説し ています。 こ れ<br />

は、 シグナル イ ンテグ リ テ ィ 解析の例 と し て使用で き ます。 ま た、 デザ イ ン固有の IBIS モデルを<br />

生成する手順も説明さ れてお り 、 シ ミ ュ レーシ ョ ンのセ ッ ト ア ッ プに役立ち ます。 こ のユーザー ガ<br />

イドは Virtex-5 デバイ ス と ML561 開発ボー ド を ターゲ ッ ト と し て説明し ていますが、 基本的な考<br />

え方は 7 <strong>シリーズ</strong> <strong>FPGA</strong> を使用した MIG デザ イ ンに も適用で き ます。<br />

サンプル デザイ ンの実行<br />

MIG ツールで生成さ れる サンプル デザ イ ンは完全に検証済みであ り 、 ボー ド 上の メ モ リ インター<br />

フ ェ イ スの検証に使用で き ます。 こ のサンプル デザ イ ン を使用する こ と に よ り 、 MIG ツール コア<br />

と 接続するバ ッ ク エン ド ロジックの問題を解決できます。 さらに、 MIG ツールで提供されるテス<br />

ト ベンチを変更し て異な るデータ パターンを送信し、ボード レベルのさ まざまな問題をテス ト でき<br />

ます。<br />

一般的なハー ド ウ ェ ア問題のデバ ッ グ<br />

ハー ド ウ ェ アでキ ャ リ ブレーシ ョ ン エ ラーやデータ エラーが生じた場合は、 ChipScope Analyzer<br />

を使用して MIG ツール コ ア信号の動作を解析する必要があ り ます。ChipScope Analyzer の使用方<br />

法の詳細は、 『ChipScope Pro 11.1 ソフトウェアおよびコア ユーザー ガイド』 [参照 8] を参照して<br />

ください。<br />

ハー ド ウ ェ ア デバ ッ グの始め る にあたっては、 まず付属の example_design をボードにロードする<br />

ことを推奨します。 これは、テストベンチ デザインを使用してデータ エラーをチェックできる確<br />

実なソ リ ューシ ョ ンです。 このデザイ ンは、 tg_compare_error がアサー ト されずに<br />

init_calib_complete 信号がアサー ト さ れて正し く 完了するはずです。 init_calib_complete 信号がア<br />

サー ト されていればキ ャ リ ブレーシ ョ ンが正常に完了し てお り 、 tg_compare_error 信号がアサー ト<br />

さ れていなければ メ モ リ に書き込んだデータ と メ モ リ か ら読み出し たデータ が一致し てい る こ と を<br />

示します。<br />

データ比較の不一致が 1 回発生し たのか複数回発生し たのかは、 dbg_cmp_err 信号か ら わか り ま<br />

す。 dbg_cmp_err はエ ラーが発生する ご と にアサー ト さ れる ため、 データ を手動で検査する こ と で<br />

問題を追跡で き ます。<br />

ビット エ ラーの特定<br />

ハー ド ウ ェ ア デバ ッ グでは、 ビ ッ ト エ ラーが生じ る タ イ ミ ングおよび位置を特定する こ と が重要<br />

です。 ビ ッ ト エ ラーをモニ タ リ ングする際は、 次を確認する必要があ り ます。<br />

• エラーは、 特定の QK クロック グループのデータ ビ ッ ト で発生し てい る か<br />

330 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


コアのデバッグ<br />

RLDRAM II および RLDRAM III デザイ ンのデバッ グ<br />

• エラーは、 特定の<strong>メモリ</strong> ア ド レ スへのア ク セス時に発生し ているか<br />

• エ ラーは、 特定のデータ パターン ま たはシーケ ン スでのみ発生し てい る か<br />

これで、 PCB 上の短絡またはオープン接続を特定でき ます。 また、 SSO やクロス トークの問題も<br />

特定で き ます。 データ破損が書き込みに よ る も のか、 ま たは読み出し に よ る も のかを特定する こ と<br />

が必要な場合があ り ます。 書き込みが原因の場合は、 読み出し たデータ も破損し てい る ため、 その<br />

特定は容易ではあ り ません。 また、 制御/ア ド レ スの タ イ ミ ングの問題は、 書き込み と 読み出し の両<br />

方に影響を及ぼ し ます。<br />

次に示すいずれかの方法を使用し、 問題を特定し て く だ さ い。<br />

• エ ラーが断続的な場合は、 デザ イ ンに書き込みコ マン ド をい く つか発行 させた後、 それ ら の位<br />

置か ら連続し て読み出し を実行し ます。 読み出し に断続的な破損データ が含まれる場合は、 読<br />

み出し に問題があ る と 考え られます。<br />

• 書き込みタ イ ミ ン グのみを確認/変化させます。<br />

• PCB に外部終端抵抗が配置さ れてい る こ と を確認する。<br />

• 可能な場合は ODELAY を使用して DK クロックに対する DQ の位相を変化させる。別の<br />

オプシ ョ ン と し て、 出力タ イ ミ ン グ を調整する ために PHASER の fine_adjust 機能を使用<br />

して PHASER_OUT の タ イ ミ ングを調整する。<br />

• CK および DK ク ロ ッ ク の タ イ ミ ング関係を検証する。<br />

• 読み出し タ イ ミ ン グのみを変化させます。<br />

• キャ リブレーション後に IDELAY/PHASER_IN の値を確認する。 IDELAY/PHASER_IN<br />

値の変化を確認する。 IDELAY の値は同じバイ ト グループの DQ と非常に近いはずです。<br />

• データ エ ラー と なってい る ビ ッ ト のキ ャ リ ブレーシ ョ ン完了後に、IDELAY/PHASER_IN<br />

タップの値を変化させる。<br />

こ れは、 読み出し キ ャ プチャのタ イ ミ ン グにのみ影響し ます。<br />

デバ ッ グ ポー ト は、 ス テータ ス を知らせる出力信号 と デザ イ ンの動作中にユーザーが調整を行 う た<br />

めの入力信号で構成さ れています。 MIG には、 RLDRAM II/RLDRAM III デザイ ンを生成する際<br />

にデバ ッ グ ポー ト の ON または OFF を指定する オプシ ョ ンがあ り ます。 デバ ッ グ ポー ト を OFF<br />

にする と 、デバッ グ ポー ト の出力は生成 さ れますが入力は無視さ れます。 こ れを ON にする と 入力<br />

も有効にな り 、 論理値に駆動する必要があ り ます。 デバ ッ グ ポー ト で信号を正し く 駆動し ない と デ<br />

ザ イ ンにエ ラーが生じ た り 、 読み出しデータ キャプチャのマージンが小さ くなることがあります。<br />

コ ア をハー ド ウ ェ アで実行する場合、 い く つかの重要な信号を検査する こ と でデザ イ ンのス テータ<br />

スがわかり ます。 表 3-30 に示す dbg_phy_status バスには、 キ ャ リ ブレーシ ョ ンの各工程の状態を<br />

表すス テータ ス ビットがあります。 dbg_phy_status バス を確認する と 、 潜在的な問題のデバ ッ<br />

グ、問題のあ る部分の特定、 さ ら には一般的な問題点の洗い出し に役立つ情報の糸口が得られます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 331<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-30 : rld_phy_top モジ ュールで定義されている物理層のシン プル ステータス バスの説明<br />

デバッ グ ポー ト 信号 名前 説明 問題が発生し た場合<br />

dbg_phy_status[0] rst_wr_clk PLL ロ ッ ク およびシ ス テム入力 リ セ ッ<br />

ト に基づ く フ ァ ブ リ ッ ク リセット<br />

dbg_phy_status[1] po_delay_done I/O FIFO をほぼフルの状態にする ため<br />

の I/O FIFO 初期化、 および phaser_out<br />

遅延に よ る ア ド レ ス/制御信号の 90° 位<br />

相シフ トが完了したこ とを示します。<br />

dbg_phy_status[2] init_done RLDRAM II/RLDRAM III 初期化シー<br />

ケンスが完了<br />

dbg_phy_status[3] rdlvl_stg1_start 工程 1 読み出し キ ャ リ ブレーシ ョ ン開<br />

始信号<br />

dbg_phy_status[4] rdlvl_stg1_done 工程 1 キャ リブレーションが完了 N/A<br />

読み出し キ ャ リ ブレーシ ョ ンの結果は、デバ ッ グ ポー ト に含まれる さ ま ざ ま な出力信号 と し て出力<br />

さ れます。 こ れ ら の信号を使用し て読み出し キ ャ リ ブレーシ ョ ンの結果を キ ャ プチャおよび評価で<br />

きます。<br />

読み出し キ ャ リ ブレーシ ョ ンは、 IODELAY を使用してキャプチャ クロックをキャプチャ データ<br />

の有効ウ ィ ン ド ウ中央に揃え ます。 キ ャ リ ブレーシ ョ ン手順の一環 と し て、 アルゴ リ ズムが<br />

IDELAY/PHASER_IN の値をシフ ト し てバイ ト 単位でデータ有効ウ ィ ン ド ウのエ ッ ジを検出し ま<br />

す。<br />

DEBUG_PORT 信号<br />

この信号がアサート されたままの<br />

場合、 ク ロ ッ ク ソースとシステム<br />

リ セ ッ ト 入力を確認し ます。<br />

PHY 制御 Ready 信号がアサー ト さ<br />

れているかど う かを確認し ます。<br />

N/A (1)<br />

dbg_phy_status[5] edge_adv_cal_done Edge Advance キャ リブレーションが完了 メ モ リ から予想データが返されて<br />

いるこ とを確認します。工程 1 読み<br />

出しキャ リブレーシ ョ ンの結果を<br />

チェ ッ ク し ます。書き込みキ ャ リ ブ<br />

レーシ ョ ンの結果をチェ ッ ク しま<br />

す (有効の場合)。<br />

dbg_phy_status[6] init_cal_done レイテンシのキャリブレーションが完了 N/A<br />

dbg_phy_status[7] init_calib_complete キャ リブレーション完了 N/A<br />

注記 :<br />

1. 「N/A」 は、 直前の工程が完了していればこの工程も完了している こ と を示し ます。<br />

MIG ツールでデザ イ ン を生成する際にデバ ッ グ オプシ ョ ンを ON に し た場合、 最上位ラ ッ パーの<br />

user_top にはコ アのデバ ッ グに使用で き る い く つかの出力信号が提供 さ れます。 こ れ ら のデバ ッ<br />

グ信号出力はすべて 「dbg_」 で開始し ます。 sim フォルダーにある sim_tb_top モジュールでは<br />

DEBUG_PORT パラ メーターが常に OFF に設定され、 論理シ ミ ュ レーシ ョ ン時にはデバ ッ グ オプ<br />

シ ョ ンは無効にな り ます。 表 3-31 に、 こ れ ら の信号 と 関連するデータ を示し ます。<br />

332 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日<br />

N/A


表 3-31 : DEBUG_PORT 信号の説明<br />

RLDRAM II および RLDRAM III デザイ ンのデバッ グ<br />

信号 方向 説明<br />

dbg_phy_cmd_n[nCK_PER_CLK × 3 - 1:0] 出力 ア ク テ ィ ブ Low の信号で、 ChipScope Analyzer でのデバッ<br />

グに使用される メ モ リ へ送信される内部コマン ド です。<br />

dbg_phy_addr[nCK_PER_CLK ×<br />

RLD_ADDR_WIDTH × 2 - 1:0]<br />

dbg_phy_ba[nCK_PER_CLK × BANK_WIDTH<br />

× 2 - 1:0]<br />

dbg_phy_wr_data[nCK_PER_CLK × 2 ×<br />

DATA_WIDTH - 1:0]<br />

出力 dbg_phy_cmd_n と共に提供されるコマンドでアクセスさ<br />

れるアドレスです。<br />

出力 ChipScope Analyzer でのデバ ッ グに使用する制御バン ク<br />

アドレス バスです。<br />

出力 ChipScope Analyzer でのデバッグに使用する書き込み<br />

データ です。<br />

dbg_phy_init_wr_only 入力 High の場合、 rld_phy_write_init_sm モジュールのステー<br />

ト マシンによって、工程 1 のデータ を RLDRAM II へ書<br />

き込むコ マン ド が継続し て発行 さ れます。書き込みタ イ ミ<br />

ングの検証に使用でき、オシ ロ ス コープを用いて メ モ リ に<br />

おける DK と DQ の タ イ ミ ン グ関係を計測し ます。通常動<br />

作時は Low である必要があ り ます。<br />

dbg_phy_init_rd_only 入力 High の場合、 rld_phy_write_init_sm モジュールのステー<br />

ト マシンによって、第 1 工程の読み出し キ ャ リ ブレーシ ョ<br />

ンの読み出し コ マン ド が継続し て発行 さ れます。PCB の信<br />

号のプローブや SI の問題の確認、 ま たは以前の書き込み<br />

コ マン ド が正し く 発生し たかを検証する のに有用です。通<br />

常動作時は Low である必要があ り ます。<br />

dbg_byte_sel[CQ_BITS - 1:0] 入力 ユーザーが PHASER/IDELAY タ ッ プ値を制御するバイ<br />

ト レーン を選択し ます。<br />

dbg_bit_sel[Q_BITS - 1:0] 入力 ユーザーが IDELAY タ ッ プ値を制御する ビ ッ ト レーンを<br />

選択し ます。 さ ら に、 いずれの読み出しデータ信号をユー<br />

ザー デバ ッ グ (dbg_rd_data_rd、dbg_rd_data_fd) へ送信す<br />

るかを制御します。<br />

dbg_idel_up_all 入力 バス全体のすべての IDELAY タップ値をインクリメント<br />

します。<br />

dbg_idel_down_all 入力 バス全体のすべての IDELAY タップ値をデクリメントし<br />

ます。<br />

dbg_idel_up 入力 dbg_bit_sel によって選択された、1 つのビ ッ ト に対し てす<br />

べての IDELAY タップ値をインクリメントします。<br />

dbg_idel_down 入力 dbg_bit_sel によって選択された、1 つのビ ッ ト に対し てす<br />

べての IDELAY タップ値をデクリメントします。<br />

dbg_pi_f_inc 入力 phaser_in で生成された立ち上が り データ キャプチャ用の<br />

ISERDES clk をインク リ メント します。<br />

dbg_pi_f_dec 入力 phaser_in で生成された立ち上が り データ キャプチャ用の<br />

ISERDES clk をデク リ メ ン ト し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 333<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-31 : DEBUG_PORT 信号の説明 (続き)<br />

信号 方向 説明<br />

dbg_po_f_inc 入力 phaser_out で生成された立ち下が り データ キャプチャ用<br />

の OSERDES clk をインク リ メント します。<br />

dbg_po_f_dec 入力 phaser_out で生成された立ち下が り データ キャプチャ用<br />

の OSERDES clk をインク リ メント します。<br />

dbg_pi_tap_cnt[5:0] 出力 現在の phaser_in のタップ カウント位置を示します。<br />

dbg_po_tap_cnt[5:0] 出力 現在の phaser_out のタップ カ ウ ン ト 位置を示し ます。<br />

dbg_cq_num[CQ_BITS - 1:0] 出力 (キャ リブレーション中に、 またはデバッグ ポー ト を介し<br />

て) 選択 さ れた現在のバイ ト レーンを示します。<br />

dbg_valid_lat[4:0] 出力 レイテンシを読み出しコマンドの遅延サイクル数で示し<br />

ます。<br />

dbg_idel_tap_cnt_sel[TAP_BITS - 1:0] 出力 dbg_bit_sel を使用し て選択さ れたビ ッ ト の現在の<br />

IDELAY タ ッ プの設定を示し ます。<br />

dbg_inc_latency 出力 読み出しデータ をユーザー <strong>インターフェイス</strong>に正しく揃<br />

え る ために対応するバイ ト レーンのレイテンシがインク<br />

リメントされたことを示します。<br />

dbg_error_max_latency 出力 カ ウ ン タ ーがオーバーフ ロ ーす る 前に レ イ テ ン シ を計測<br />

で き なかった こ と を示し ます。各デバイ スに 1 つのエラー<br />

ビッ トがあります。<br />

dbg_error_adj_latency 出力 PHY_LATENCY の目標値を達成で き なかった こ と を示<br />

します。<br />

dbg_rd_data_rd[nCK_PER_CLK × 9 - 1:0] 出力 dbg_byte_sel を使用して選択した 1 つのバイ ト レーンに<br />

対して、最初の立ち上が り データ をキャプチャ した出力を<br />

示します。<br />

dbg_rd_data_fd[nCK_PER_CLK × 9 - 1:0] 出力 dbg_byte_sel を使用して選択した 1 つのバイ ト レーンに<br />

対し て、最初の立下 り データ をキ ャ プチャ し た出力を示し<br />

ます。<br />

dbg_rd_valid 出力 dbg_rd_data_rd、dbg_rd_data_fd 信号に揃え ら れる読み出<br />

しデータの Valid 信号です。<br />

dbg_wrcal_sel_stg[1:0] 入力 いずれの工程の書き込みキ ャ リ ブレーシ ョ ンで出力する<br />

かを選択し ます (dbg_wrcal_po_first_edge、 dbg_<br />

wrcal_po_second_edge、 または dbg_wrcal_po_final)。<br />

dbg_wrcal[63:0] 出力 書き込みキ ャ リ ブレーシ ョ ン用の General Debug ポー ト<br />

です。<br />

dbg_wrcal_done[2:0] 出力 書き込みキ ャ リ ブレーシ ョ ンが完了し た工程を示し ます。<br />

334 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 3-31 : DEBUG_PORT 信号の説明 (続き)<br />

書き込み初期化デバ ッ グ信号<br />

RLDRAM II および RLDRAM III デザイ ンのデバッ グ<br />

dbg_wrcal_po_first_edge[5:0] 出力 (dbg_byte_sel を使用して) 選択し たバイ ト レーンについ<br />

て検出 さ れた書き込みキ ャ リ ブレーシ ョ ン ウィンドウの<br />

最初のエ ッ ジです。 キ ャ リ ブレーシ ョ ンの工程を選択する<br />

には、 dbg_wrcal_sel_stg を使用します。 2'b01 は DK ク<br />

ロックがあるバイト レーン、2'b10 は DK クロックなしの<br />

バイ ト レーンに使用し ます。<br />

dbg_wrcal_po_second_edge[5:0] 出力 (dbg_byte_sel を使用して) 選択し たバイ ト レーンについ<br />

て検出 さ れた書き込みキ ャ リ ブレーシ ョ ン ウィンドウの<br />

2 番目のエ ッ ジです。 キ ャ リ ブレーシ ョ ンの工程を選択す<br />

るには、dbg_wrcal_sel_stg を使用します。2'b01 は DK ク<br />

ロックがあるバイト レーン、2'b10 は DK クロックなしの<br />

バイ ト レーンに使用し ます。<br />

dbg_wrcal_po_final[5:0] 出力 (dbg_byte_sel を使用して) 選択し たバイ ト レーンについ<br />

て書き込みキ ャ リ ブレーシ ョ ンの最終的な タ ッ プ設定で<br />

す。 キ ャ リ ブレーシ ョ ンの工程を選択する には、<br />

dbg_wrcal_sel_stg を使用します。2'b01 は DK クロックが<br />

あるバイ ト レーン、 2'b10 は DK クロックなしのバイト<br />

レーンに使用し ます。<br />

表 3-32 : 書き込み初期化デバ ッ グ信号マ ッ プ<br />

信号 方向 説明<br />

表 3-32 に、dbg_wr_init バスの書き込み初期化デバ ッ グ信号 と 物理層のデバ ッ グ信号のマ ッ ピ ン<br />

グを示します。 これらの信号はすべて rld_phy_write_init_sm モジュール内にあ り、 clk ドメ<br />

インで有効です。<br />

ビット PHY 信号名 説明<br />

dbg_phy_init_sm[3:0] phy_init_cs 初期化ス テー ト マシンの現在のス テー ト<br />

dbg_phy_init_sm[6:4] start_cal キ ャ リ ブレーシ ョ ンの工程を決定する フ ラ グ<br />

dbg_phy_init_sm[7] init_complete メ モ リ の初期化が完了<br />

dbg_phy_init_sm[8] refr_req リフレッシュの要求<br />

dbg_phy_init_sm[9] refr_done リフレッシュが完了<br />

dbg_phy_init_sm[10] stage2_done 工程 2 キャ リブレーションが完了<br />

dbg_phy_init_sm[22:11] refr_cnt リフレッシュ カウンター<br />

dbg_phy_init_sm[26:23] phy_init_ps 初期化ス テー ト マシンの以前のス テー ト<br />

dbg_phy_init_sm[31:27] 予約 N/A<br />

読み出し工程 1 キャリブレーショ ン デバッ グ信号<br />

表 3-33 に、 dbg_rd_stage1_cal バス内の各ビッ ト と PHY のデバッ グ信号のマ ッ ピングを示し<br />

ます。こ れ ら の信号はすべて qdr_rld_phy_rdlvl モジュール内にあ り、clk ドメインで有効です。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 335<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-33 : 読み出し工程 1 デバ ッ グ信号マ ッ プ<br />

ビット PHY 信号名 説明<br />

dbg_phy_rdlvl[0] rdlvl_stg1_start 工程 1 キ ャ リ ブレーシ ョ ンの開始を示す初期化ス テー ト マシン<br />

からの入力です。<br />

dbg_phy_rdlvl[1] rdlvl_start キャ リブレーション ロジックの開始を示します。<br />

dbg_phy_rdlvl[2] found_edge_r データ ウ ィンド ウの遷移を検出したこ とを示します。<br />

dbg_phy_rdlvl[3] pat0_data_match_r ISERDES 出力に予想データ パターンが検出されたこ とを示し<br />

ます。<br />

dbg_phy_rdlvl[4] pat1_data_match_r ISERDES 出力に予想データ パターンが検出されたが、 最初の読<br />

み出しデータ を ICLKDIV の立ち下が り エ ッ ジに揃えたためシ<br />

フトしたことを示します。<br />

dbg_phy_rdlvl[5] data_valid 有効なキ ャ リ ブレーシ ョ ン データ が検出 さ れた こ と を示し ます。<br />

dbg_phy_rdlvl[6] cal1_wait_r IDELAY/PHASER タ ッ プが変化し てか らデータ を確認する まで<br />

の待機ステー ト です。<br />

dbg_phy_rdlvl[7] 予約<br />

dbg_phy_rdlvl[8] detect_edge_done_r エ ッ ジ検出が完了し た こ と を示し ます。<br />

dbg_phy_rdlvl[13:9] cal1_state_r キャ リブレーション ステート マシンの状態を示し ます。<br />

dbg_phy_rdlvl[20:14] cnt_idel_dec_cpt_r クロックをデータ ウ ィ ン ド ウの中央に揃える ためにデク リ メ ン<br />

ト が必要な PHASER タップ数です。<br />

dbg_phy_rdlvl[21] found_first_edge_r 最初のエ ッ ジ遷移を検出し た こ と を示し ます。<br />

dbg_phy_rdlvl[22] found_second_edge_r 2 番目のエ ッ ジ遷移を検出し た こ と を示し ます。<br />

dbg_phy_rdlvl[23] 予約<br />

dbg_phy_rdlvl[24] store_sr_r タ ッ プ遅延を イ ン ク リ メ ン ト する前に現在の読み出しデータ を<br />

格納する ための信号です。<br />

dbg_phy_rdlvl[32:25] sr_fall1_r、 sr_rise1_r<br />

sr_fall0_r、 sr_rise0_r<br />

dbg_phy_rdlvl[40:33] old_sr_fall1_r、<br />

old_sr_rise1_r<br />

old_sr_fall0_r、<br />

old_sr_rise0_r<br />

比較のためにシ フ ト レ ジ ス タ に格納 さ れた読み出しデータ です。<br />

タ ッ プを イ ン ク リ メ ン ト する前にレ ジ ス タ に格納さ れた読み出<br />

しデータです。<br />

dbg_phy_rdlvl[41] sr_valid_r 比較用の ISERDES データ を ロー ド し て も安全な タ イ ミ ン グ を<br />

決定し ます。<br />

dbg_phy_rdlvl[42] found_stable_eye_r 安定し たア イ が検出さ れた こ と を示し ます。<br />

dbg_phy_rdlvl[48:43] tap_cnt_cpt_r PHASER タップ カウンターです。<br />

dbg_phy_rdlvl[54:49] first_edge_taps_r 最初のエ ッ ジを検出する ための タ ッ プ数です。<br />

dbg_phy_rdlvl[60:55] second_edge_taps_r 2 番目のエ ッ ジを検出する ための タ ッ プ数です。<br />

336 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 3-33 : 読み出し工程 1 デバ ッ グ信号マ ッ プ (続き)<br />

ビット PHY 信号名 説明<br />

読み出し工程 2 キャリブレーショ ン デバッ グ信号<br />

RLDRAM II および RLDRAM III デザイ ンのデバッ グ<br />

dbg_phy_rdlvl[64:61] cal1_cnt_cpt_r バイ ト レーンがキャ リ ブレーシ ョ ン中である こ と を示します。<br />

dbg_phy_rdlvl[65] cal1_dlyce_cpt_r PHASER 遅延を有効にする PHASER 制御です。<br />

dbg_phy_rdlvl[66] cal1_dlyinc_cpt_r PHASER タップ遅延をインクリメントする PHASER 制御です。<br />

dbg_phy_rdlvl[67] found_edge_r データ ウ ィンド ウの遷移を検出したこ とを示します。<br />

dbg_phy_rdlvl[68] found_stable_eye_last_r 安定し たア イ が検出さ れた こ と を示し ます。<br />

dbg_phy_rdlvl[74:69] idelay_taps 受信し た読み出しデータ を遅延中に有効なデータ ウ ィ ン ド ウ を<br />

検出し た と き の IDELAY タップ数です。<br />

dbg_phy_rdlvl[80:75] start_win_taps 有効ウ ィ ン ド ウ の開始を検出する ために必要な IDELAY タップ<br />

数です。<br />

dbg_phy_rdlvl[81] idel_tap_limit_cpt_r IDELAY タップ チェーンの最後に達したこ とを示します。<br />

dbg_phy_rdlvl[82] qdly_inc_done_r IDELAY タ ッ プの遅延に よ る有効ウ ィ ン ド ウ の検出が完了し た<br />

ことを示します。<br />

dbg_phy_rdlvl[83] start_win_detect IDELAY タ ッ プを使用し た ウ ィ ン ド ウ検出が開始し た こ と を示<br />

します。<br />

dbg_phy_rdlvl[84] detect_edge_done_r エ ッ ジ検出が完了し た こ と を示し ます。<br />

dbg_phy_rdlvl[90:85] idel_tap_cnt_cpt_r 使用した IDELAY タップの数を追跡するためのカウンターです。<br />

dbg_phy_rdlvl[96:91] idelay_inc_taps_r インク リ メントする IDELAY タップ数です (キャ リブレーショ<br />

ン ロジックで必要な場合)。<br />

dbg_phy_rdlvl[102:97] idel_dec_cntr デク リ メン トする IDELAY タップ数です (キャ リブレーション<br />

ロジックで必要な場合)。<br />

dbg_phy_rdlvl[103] tap_limit_cpt_r PHASER タップ チェーンの最後に達したこ とを示します。<br />

dbg_phy_rdlvl[115:104] idelay_tap_delay IDELAY タ ッ プを使用し て検出し た有効ウ ィ ン ド ウの合計数です。<br />

dbg_phy_rdlvl[127:128] phaser_tap_delay PHASER タ ッ プを使用し て検出した有効ウ ィ ン ド ウの合計数です。<br />

dbg_phy_rdlvl[255:128] 予約<br />

表 3-34 : 読み出し工程 2 デバ ッ グ信号マ ッ プ<br />

表 3-34 に、 dbg_rd_stage2_cal バス内の各ビッ ト と PHY のデバッ グ信号のマ ッ ピングを示し<br />

ます。 こ れ ら の信号はすべて qdr_rld_phy_read_stage2_cal モジュール内にあ り、clk ドメイ<br />

ンで有効です。<br />

ビット PHY 信号名 説明<br />

dbg_stage2_cal[0] en_mem_latency レ イ テンシ計測を有効にする ための信号です。<br />

dbg_stage2_cal[5:1] latency_cntr[0] <strong>インターフェイス</strong>の最初のバイ ト レーンのレイテンシを示します。<br />

dbg_stage2_cal[6] rd_cmd レイテンシ キャ リブレーション用の内部 rd_cmd です。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 337<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

表 3-34 : 読み出し工程 2 デバ ッ グ信号マ ッ プ (続き)<br />

ビット PHY 信号名 説明<br />

dbg_stage2_cal[7] latency_measured[0] バイ ト レーン 0 のレイテンシ計測が完了したこ とを示します。<br />

dbg_stage2_cal[8] bl4_rd_cmd_int バース ト 長 4 データ ワー ド のキ ャ リ ブレーシ ョ ン実行中であ る こ と<br />

を示し ます。<br />

dbg_stage2_cal[9] bl4_rd_cmd_int_r バース ト 長4 の読み出し コ マン ド 用の内部レ ジ ス タ工程です。<br />

dbg_stage2_cal[10] edge_adv_cal_start pi_edge_adv 信号をアサー ト する必要があ る かど う かを確認する た<br />

めに edge_adv キ ャ リ ブレーシ ョ ン を開始し た こ と を示し ます。<br />

dbg_stage2_cal[11] rd0_vld キ ャ リ ブレーシ ョ ン さ れてい るバイ ト の有効な ISERDES 読み出し<br />

データ を示し ます (byte_cnt で設定)。<br />

dbg_stage2_cal[12] fd0_vld キ ャ リ ブレーシ ョ ン さ れてい るバイ ト の有効な ISERDES 読み出し<br />

データ を示し ます (byte_cnt で設定)。<br />

dbg_stage2_cal[13] rd1_vld キ ャ リ ブレーシ ョ ン さ れてい るバイ ト の有効な ISERDES 読み出し<br />

データ を示し ます (byte_cnt で設定)。<br />

dbg_stage2_cal[14] fd1_vld キ ャ リ ブレーシ ョ ン さ れてい るバイ ト の有効な ISERDES 読み出し<br />

データ を示し ます (byte_cnt で設定)。<br />

dbg_stage2_cal[15] phase_vld キ ャ リ ブレーシ ョ ン さ れてい る特定のバイ ト に対し て有効データ が<br />

検出 さ れた こ と を示し ます (byte_cnt にょって設定)。<br />

dbg_stage2_cal[16] rd0_bslip_vld キャ リブレーションされているバイ トの、 ビッ ト ス リ ップを必要とす<br />

る有効な ISERDES 読み出しデータ を示し ます (byte_cnt で設定)。<br />

dbg_stage2_cal[17] fd0_bslip_vld キャ リブレーションされているバイ トの、 ビッ ト ス リ ップを必要とす<br />

る有効な ISERDES 読み出しデータ を示し ます (byte_cnt で設定)。<br />

dbg_stage2_cal[18] rd1_bslip_vld キャ リブレーションされているバイ トの、 ビッ ト ス リ ップを必要とす<br />

る有効な ISERDES 読み出しデータ を示し ます (byte_cnt で設定)。<br />

dbg_stage2_cal[19] fd1_bslip_vld キャ リブレーションされているバイ トのビッ ト ス リ ップを必要とす<br />

る有効な ISERDES 読み出しデータ を示し ます (byte_cnt で設定)。<br />

dbg_stage2_cal[20] phase_bslip_vld キャ リブレーシ ョ ンされているバイ トに対して読み出しデータに<br />

ビ ッ ト ス リ ッ プが適用 さ れる場合に有効データ が検出さ れた こ と を<br />

示します (byte_cnt で設定)。<br />

dbg_stage2_cal[21] clkdiv_phase_cal_done_4r データ有効性のチェ ッ ク が完了し、 必要に応じ て pi_edge_adv 信号<br />

のアサー ト へ進む こ と を示し ます。<br />

dbg_stage2_cal[22] pi_edge_adv PHASER クロック ICLKDIV を 1 高速 ク ロ ッ ク 分進め る PHASER<br />

制御信号です。<br />

dbg_stage2_cal[25:23] byte_cnt[2:0] データ有効性がチェ ッ ク さ れてい るバイ ト を示し ます。<br />

dbg_stage2_cal[26] inc_byte_cnt 次のバイ ト へイ ン ク リ メ ン ト する ための内部信号です。<br />

dbg_stage2_cal[29:27] pi_edge_adv_wait_cnt 複数のバイ ト レーンで PHAER 制御信号であ る pi_edge_adv 信号<br />

をアサートする間の待機カウンターです。<br />

dbg_stage2_cal[30] bitslip ファブリック ビ ッ ト ス リ ッ プ制御信号で、ロ ジ ッ ク がデータ アライ<br />

メントをシフトしたことを示します。<br />

338 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 3-34 : 読み出し工程 2 デバ ッ グ信号マ ッ プ (続き)<br />

ビット PHY 信号名 説明<br />

マージンのチェ ッ ク<br />

RLDRAM II および RLDRAM III デザイ ンのデバッ グ<br />

dbg_stage2_cal[31] rd2_vld キ ャ リ ブレーシ ョ ン さ れてい るバイ ト の有効な ISERDES 読み出し<br />

データ を示し ます (byte_cnt で設定)。nCK_PER_CLK が 4 の場合に<br />

のみ有効です。<br />

dbg_stage2_cal[32] fd2_vld キ ャ リ ブレーシ ョ ン さ れてい るバイ ト の有効な ISERDES 読み出し<br />

データ を示し ます (byte_cnt で設定)。nCK_PER_CLK が 4 の場合に<br />

のみ有効です。<br />

dbg_stage2_cal[33] rd3_vld キ ャ リ ブレーシ ョ ン さ れてい るバイ ト の有効な ISERDES 読み出し<br />

データ を示し ます (byte_cnt で設定)。nCK_PER_CLK が 4 の場合に<br />

のみ有効です。<br />

dbg_stage2_cal[34] fd3_vld キ ャ リ ブレーシ ョ ン さ れてい るバイ ト の有効な ISERDES 読み出し<br />

データ を示し ます (byte_cnt で設定)。nCK_PER_CLK が 4 の場合に<br />

のみ有効です。<br />

dbg_stage2_cal[127:35] 予約 予約<br />

機能検証、 および信頼性の高い動作を実現する ために十分なマージンが使用で き る かを確認する た<br />

めに、 ク ロ ッ ク ま たはデータ を移動させるデバ ッ グ信号が提供 さ れています。 こ れ ら の信号は、 信<br />

号のサブセ ッ ト に影響を及ぼすシグナル インテグリティの問題を確認したり、ボードのトレース長<br />

の不一致に対応する ために使用する こ と も可能です。 読み出し ウ ィ ン ド ウ のマージン を検証する に<br />

は、 MIG ツールでデザ イ ン を生成する際にデバ ッ グ ポー ト を有効にし、 生成されるサンプル デザ<br />

インを使用します。 次の手順に従ってください。<br />

1. ChipScope Analyzer を開いて、 テス ト する <strong>FPGA</strong> をプログラムします。<br />

2. ChipScope Analyzer プロジェク ト を信号を用いてセットアップします (セッ トアップが完了し<br />

ていない場合)。<br />

3. キャ リブレーションの完了を検証し (init_calib_complete をアサートする)、 サンプル デ<br />

ザインにエラーがないこ とを確認します (tg_compare_error および dbg_cmp_err は<br />

Low)。<br />

4. dbg_byte_sel を使用してバイ ト レーン を選択し ます。<br />

5. dbg_bit_sel を使用してビ ッ ト レーン を選択し ます。<br />

6. dbg_pi_tap_cnt を使用して選択したバイ ト レーンについて PHASER_IN のタップ値を確認<br />

します。dbg_idel_tap_cnt_sel を使用して選択した DQ ビットについて IDELAY タップ値<br />

を確認します。<br />

7. dbg_pi_f_inc を使用し てエ ラーが発生する まで (tg_compare_error をアサートする)<br />

PHASER_IN の タ ッ プ値を イ ン ク リ メ ン ト し ます。 開始位置か ら エ ラーが発生する までの<br />

PHASER タップ数を記録します。この値は、バイト レーン全体のウ ィ ン ド ウ の片側に達する ま<br />

でのタ ップ数です。<br />

8. dbg_pi_f_dec を使用して PHASER_IN の タ ッ プ数を開始値に戻る までデ ク リ メ ン ト し ます。<br />

9. asserting dbg_clear_error をアサー ト し て前の手順で記録し たエ ラーを ク リ ア し ます。<br />

10. PHASER_IN のタップ数に基づき、 dbg_pi_f_dec を使用して PHASER_IN のタップをデク リ<br />

メ ン ト し て ウ ィ ン ド ウ の も う 片側を検出する か、 ま たは検出に十分な タ ッ プがない場合は別の<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 339<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

エ ラーが発生する まで dbg_idel_down ビッ トについて IDELAY タップをインクリメントし<br />

ます。<br />

11. これらの結果を記録し、 タップ (PHASER_IN または IDELAY) を開始位置に戻し、 エ ラー<br />

(dbg_clear_error) を再度ク リ アします。<br />

こ の方法では、 イ ン ターフ ェ イ ス全体で共通のエ ラー信号を使用する ため、 ほかのビ ッ ト ま たはバ<br />

イ ト のマージンがテ ス ト さ れず、 チェ ッ ク 結果に影響が及ぶ可能性があ り ます。 よ り 優れたチェ ッ<br />

ク 結果を得る には、 ビ ッ ト 単位のエ ラー信号を使用し て く だ さ い。 結果を正し く 解析する ために、<br />

PHASER_IN および IDELAY タ ッ プを一般的な単位時間に変換する必要があ り ます。<br />

マージンの自動チ ェ ッ ク<br />

機能検証を目的 と し た手動に よ る タ ッ プの移動は、 問題のあ る ビ ッ ト やバイ ト をチェ ッ ク する のに<br />

有用ですが、 イ ン ターフ ェ イ ス全体で ス テ ッ プ実行し て問題を検出する には対応困難な場合があ り<br />

ます。 このため、 RLDRAM II/RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> デバ ッ グ ポー ト にはイ ン<br />

ターフ ェ イ ス全体で ス テ ッ プ実行可能な自動ウ ィ ン ド ウ チェ ッ ク 機能が含まれています。単純な ス<br />

テー ト マシンを使用してデバッグ ポー ト の信号を制御し、 ビ ッ ト 単位で検出し たマージンの結果<br />

を レポー ト し ます。 現時点では、 自動ウ ィ ン ド ウ チェ ッ ク 機能は PHASER_IN のみを使用し てウ ィ<br />

ンド ウのサイズをチェッ クするため、 キャ リブレーシ ョ ン後のタ ップ値によっては読み出しデータ<br />

ウ ィ ン ド ウ の左側を正し く 検出で き ない場合があ り ます。<br />

表 3-35 に、 自動ウ ィ ン ド ウ チェ ッ ク 機能に関連する信号を リ ス ト し ます。<br />

表 3-35 : デバッ グ ポー ト 信号<br />

信号 説明<br />

dbg_win_start chk_win ステート マシン を開始する シン グル パル<br />

スです。ChipScope Analyzer VIO を使用して制御し<br />

ます。<br />

dbg_win_dump 自動レ ポー ト メ カニズム を開始する シン グル パル<br />

スです。ChipScope Analyzer VIO を使用して制御し<br />

ます。<br />

dbg_win_bit_select[6:0] 結果のレポー ト に使用する、 手動に よ る ビ ッ ト 選択<br />

で す。 表 示 さ れ る ビ ッ ト の 結 果 が<br />

dbg_win_left_ram_out および dbg_win_right_ram_<br />

out にレポート されます。<br />

dbg_win_active chk_win がア ク テ ィ ブで、 読み出し ウ ィ ン ド ウ の<br />

マージン を計測し てい る こ と を示すフ ラ グです。 ア<br />

クティブの間は、ステート マシンがデバッグ ポー ト<br />

の信号を制御し ます。<br />

dbg_win_dump_active chk_win がすべてのビ ッ ト について、 連続し て結果<br />

を自動的にレ ポー ト し てい る こ と を示すフ ラ グで<br />

す。<br />

dbg_win_clr_error chk_win に よ って制御さ れる エ ラー制御信号を ク リ<br />

アします。<br />

dbg_win_current_bit[6:0] 自動ウ ィ ン ド ウ チェ ッ ク 実行中にモニ タ リ ン グ さ<br />

れてい る ビ ッ ト を示すフ ィ ー ド バ ッ ク です。<br />

340 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


表 3-35 : デバッ グ ポー ト 信号 (続き)<br />

RLDRAM II および RLDRAM III デザイ ンのデバッ グ<br />

信号 説明<br />

dbg_win_current_byte[3:0] モニタ リ ングされている (dbg_byte_sel でバイ ト<br />

レーン制御を選択する ために使用さ れてい る) バイ<br />

ト を示すフ ィ ー ド バ ッ ク です。<br />

dbg_current_bit_ram_out[6:0] win_dump 中にレポー ト が返されている ビ ッ ト を示<br />

すフ ィードバッ クです。<br />

dbg_win_left_ram_out [WIN_SIZE-1:0] 特定ビ ッ ト について読み出し ウ ィ ン ド ウの左側に達<br />

する のに必要な PHASER_IN タップ数です。<br />

dbg_win_right_ram_out [WIN_SIZE-1:0] 特定ビ ッ ト について読み出し ウ ィ ン ド ウの右側に達<br />

する のに必要な PHASER_IN タップ数です。<br />

dbg_win_inc PHASER_IN をインク リ メントする chk_win 制御<br />

信号です。<br />

dbg_win_dec PHASER_IN をデク リ メ ン ト する chk_win 制御信<br />

号です。<br />

chk_win および win_dump の機能を開始し てデバッ グ ポー ト の接続および機能を検証し、 こ のデ<br />

バッグ ポー ト がどの よ う に動作する かを よ り よ く 理解する ために、シ ミ ュ レーシ ョ ン専用のス テー<br />

ト マシンが追加で提供 さ れます。 こ の検証を行 う には、 シ ミ ュ レーシ ョ ン環境 と し て<br />

DEBUG_PORT パラ メーターを ON にし、example_top.v にある SIMULATE_CHK_WIN とい<br />

うローカル パラ メーターを TRUE に設定する必要があ り ます。<br />

書き込みキャリブレーシ ョ ンのデバッグ<br />

RLDRAM II/RLDRAM III では書き込みキ ャ リ ブレーシ ョ ンの完了に長い時間が必要 と な る ため、<br />

Chipscope Analyzer の N サンプル機能を使用し、 あ る ト リ ガー ポイントの後に小さなウインドウ<br />

を選択し て ト リ ガーおよび表示させる のが有用です。 こ れに よ り 、 ト リ ガー条件が最初に発生し た<br />

ときに 単に 1 つのウ ィ ン ド ウ をキ ャプチャ し た場合よ り も長い時間にわたって信号をキ ャプチャ<br />

できるようになります。適切なトリガー条件は wrcal_byte_sel 信号 と、 ス テー ト マシンのス<br />

テータ ス信号であ る write_cal_cs です。つまり、特定のバイト レーンに集中して PHASER_OUT<br />

が調整されるたびにそれをキャプチャできるようになります。 図 3-50 に、 例を示し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 341<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 3 章 : RLDRAM II および RLDRAM III <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

X-Ref Target - Figure 3-50<br />

図 3-50 : Chipscope による書き込みキャ リブレーシ ョ ンのキャプチャ<br />

問題があ る かを確認する場合、 あ るバイ ト レーンに返 さ れた読み出しデータ が data_valid_r 信<br />

号で示さ れる よ う に正し いかを確かめます。 こ の信号は、 バース ト が正し く 受信 さ れてい る間すべ<br />

てのデータが書き込まれる よ う に複数ク ロ ッ ク サイクル間データをチェッ クします。 この信号に<br />

ギ ャ ッ プがあ る場合、 大部分のデータは正し く 書き込まれていますが、 すべてではないため コ マン<br />

ドと DRAM データ間のレイテンシが指定した設定に対して正しいものであるかを確認します。<br />

次に、アルゴ リ ズムが検出したウ ィンド ウのエッジの位置を確認して受信したデータ と比較します。<br />

受信し たデータ が常に誤ってい る場合、キ ャ リ ブレーシ ョ ンの早期段階で実行し た リ ー ド レベリ ン<br />

グで問題が発生したか、 または PCB の問題で さ らにデバッ グを行 う 必要があ る こ と を示し ていま<br />

す。<br />

342 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


マルチコントローラー デザイ ン<br />

はじめに<br />

CORE Generator の使用方法<br />

第 4 章<br />

この章では、マルチコント ローラー デザイ ンの仕様 (サポー ト さ れる機能、 さ れない機能を含む) お<br />

よびピ ン配置に関する規則について説明し ます。<br />

サポー ト さ れる機能、 さ れない機能は次の と お り です。<br />

• 最大 8 つのコ ン ト ローラーをサポー ト し ます。<br />

• DDR3 SDRAM (ネイティブのみ)、 QDRII+ SRAM、 RLDRAM II などあらゆる <strong>メモリ</strong> イ<br />

ンターフェイスを最大 8 コント ローラーまでの組み合わせでマルチ <strong>インターフェイス</strong>を<br />

サポー ト し ます。 DDR3 SDRAM AXI イ ンターフェ イ スをほかの メ モ リ インターフェイ<br />

ス と 組み合わせたマルチ <strong>インターフェイス</strong>はサポート されません。<br />

• DDR3 SDRAM (AXI のみ) <strong>インターフェイス</strong>のマルチコントローラーは、 最大 8 つの独<br />

立したコン ト ローラーをサポート します。 DDR3 SDRAM ネイティブと AXI インター<br />

フ ェ イ ス を組み合わせたマルチコ ン ト ローラー デザイ ンはサポー ト されません。<br />

• いずれか 1 つのコ ン ト ローラーに選択し たバン クは別のコ ン ト ローラーには使用でき ません。<br />

つま り、 同じ メモ リ <strong>インターフェイス</strong>でも別の<strong>メモリ</strong> <strong>インターフェイス</strong>でも、 複数のコント<br />

ローラーに同じバンクを割り当てるこ とはできません。<br />

• <strong>メモリ</strong> オプシ ョ ン (周波数、 データ幅な ど) やその他のオプシ ョ ンはすべてシングル コント<br />

ローラーのオプショ ンと共通です。<br />

• 種類の異な る 2 つのコ ン ト ローラーで同じバン クは共有でき ません。<br />

• <strong>メモリ</strong> <strong>インターフェイス</strong> (DDR3 SDRAM、 QDRII+ SRAM、 RLDRAM II) の規則はすべてシ<br />

ングル コント ローラー デザイ ンの場合 と同じです。<br />

CORE Generator ツールから MIG ツールを起動する手順はシン グル コント ローラー デザイ ンの<br />

場合 と 同じ です。 詳細は、 こ のガ イ ド の各 メ モ リ <strong>インターフェイス</strong>の章を参照してください。 ここ<br />

では、 マルチコン ト ローラー デザイ ン と シングル コント ローラー デザイ ンで異な る MIG の GUI<br />

ページについてのみ説明し ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 343<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 4 章 : マルチコン ト ローラー デザイ ン<br />

X-Ref Target - Figure 4-1<br />

マルチコン ト ローラー<br />

[MIG Output Options] ページで コ ン ト ローラーの数を選択し ます (図 4-1)。 設定できるコントロー<br />

ラーの数は、 デバイ スに用意 さ れてい るバン ク の数、 および選択し た メ モ リ <strong>インターフェイス</strong>のコ<br />

ンフィギュレーション (選択し たデータ幅 と バン ク 数) によって異なり ます。<br />

図 4-1 : MIG の出力オプシ ョ ン<br />

344 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 4-2<br />

<strong>メモリ</strong>の選択<br />

CORE Generator の使用方法<br />

<strong>メモリ</strong> イ ン ターフ ェ イ スの選択画面は、 シングル コント ローラー デザイ ンの場合と マルチコ ン ト<br />

ローラー デザイ ンの場合で異な り ます。 [Memory Selection] ページで メ モ リ <strong>インターフェイス</strong>ご<br />

と にコ ン ト ローラーの数を選択し ます (図 4-2)。<br />

図 4-2 : <strong>メモリ</strong> タ イ プおよびコ ン ト ローラーの選択<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 345<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 4 章 : マルチコン ト ローラー デザイ ン<br />

X-Ref Target - Figure 4-3<br />

<strong>FPGA</strong> オプシ ョ ン<br />

デバ ッ グ オプシ ョ ンを選択でき るのはいずれか 1 つのコ ン ト ローラーのみです。 選択し たコ ン ト<br />

ローラーに対してデバッグ ロジックが生成されます (図 4-3)。<br />

図 4-3 : <strong>FPGA</strong> オプシ ョ ンの設定<br />

346 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 4-4<br />

拡張 <strong>FPGA</strong> オプシ ョ ン<br />

CORE Generator の使用方法<br />

図 4-4 に、 マルチコ ン ト ローラー デザイ ンに 3 つの メ モ リ <strong>インターフェイス</strong>をすべて選択した場<br />

合の [Extended <strong>FPGA</strong> Options] ページを示し ます。<br />

図 4-4 : 拡張 <strong>FPGA</strong> オプシ ョ ンの設定<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 347<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 4 章 : マルチコン ト ローラー デザイ ン<br />

システム クロック ピ ンの選択<br />

[System Pins Selection] ページでシ ス テム クロック ピンを選択します。 システム クロック ピンは<br />

各コ ン ト ローラーご と に選択でき ます。 この画面は、 コ ン ト ローラーの数によ って異な り ます (<br />

図 4-5)。<br />

X-Ref Target - Figure 4-5<br />

システム クロックの共有<br />

MIG のデ ィ レ ク ト リ構造<br />

図 4-5 : システム クロック ピ ンの選択<br />

システム クロック ピ ン を共有する際の基準は次の と お り です。<br />

• システム クロック ピ ンは、 入力周波数が同じ場合に複数の コ ン ト ローラー間で共有で き ます。<br />

• <strong>メモリ</strong> <strong>インターフェイス</strong>で選択されたバンクが同じカラムに存在する限り、ピンはコン ト ロー<br />

ラー間で共有で き ます。<br />

• 1 つの CCIO ポー ト で PLL を駆動でき、 システム クロック ピ ンが駆動可能な PLL の数に上<br />

限はあ り ません。 つま り 、 同じ ピンを使用でき る コ ン ト ローラーの数に制限はあ り ません。<br />

• [Next] をク リ ックしてシステム クロック ピ ンの選択が完了する と 、 MIG は上記すべての基準<br />

に対し て検証を行います。<br />

• 同じ ピ ン を選択する と 、 複数の コ ン ト ローラー間でそのピ ンが共有 さ れます。<br />

• システム クロック ピンが共有されているかどうかに関係なく、 各コント ローラーには PLL お<br />

よび MMCM がそれぞれ 1 つずつ必要です。 シ ス テム ク ロ ッ ク のみが共有可能で、 PLL や<br />

MMCM などのその他の リ ソ ースはコ ン ト ローラー間で共有さ れません。<br />

MIG の出力デ ィ レ ク ト リ 構造は、 シングル コント ローラー デザイ ンの場合 と はユーザー デザイ ン<br />

の RTL フ ォルダーが若干異な り ます。 ユーザー デザイ ンの RTL フ ォルダー直下に各 メ モ リ イン<br />

ターフェイスのサブフォルダーが作成され、 各<strong>メモリ</strong> <strong>インターフェイス</strong>の RTL ファイルはそれぞ<br />

れ対応する フ ォルダーに生成さ れます。 図 4-6 には、 マルチコ ン ト ローラー デザイ ンで選択し たす<br />

べての メ モ リ <strong>インターフェイス</strong>のフォルダーが表示されています。<br />

348 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 4-6<br />

図 4-6 : MIG のデ ィ レ ク ト リ構造<br />

MIG のデ ィ レ ク ト リ構造<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 349<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 4 章 : マルチコン ト ローラー デザイ ン<br />

350 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


Vivado Design Suite への移行<br />

第 5 章<br />

この章では、Vivado Design Suite から MIG IP を生成する手順および Vivado ツールでのフロー<br />

について説明し ます。 こ れ ら の手順はすべての メ モ リ <strong>インターフェイス</strong> (DDR3 SDRAM、 DDR2<br />

SDRAM、 QDRII+ SRAM、 RLDRAM II) について有効です。<br />

Vivado の使用方法 – MIG IP の生成<br />

ここでは、Vivado Design Suite を使用して MIG IP を生成し、 イ ンプ リ メ ンテ ト する手順を説明し<br />

ます。<br />

1. Vivado IP の GUI を起動し ます (図 5-1)。<br />

X-Ref Target - Figure 5-1<br />

図 5-1 : Vivado ツール<br />

2. 新し いプ ロ ジ ェ ク ト を作成する には、 図 5-1 に示す [Create New Project] をクリ ックして<br />

図 5-2 のページへ進みます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 351<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 5 章 : Vivado Design Suite への移行<br />

X-Ref Target - Figure 5-2<br />

3. [Next] をク リ ックして [Project Name] ページへ進みます (図 5-3)。プロジェク ト名とプロジェ<br />

ク ト の場所を入力し ます。 プ ロ ジ ェ ク ト は入力し た内容に基づいてデ ィ レ ク ト リ に保存 さ れま<br />

す。<br />

X-Ref Target - Figure 5-3<br />

図 5-2 : 新規 Vivado ツール プロジ ェ ク ト の作成<br />

図 5-3 : プロジェク ト名<br />

352 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


Vivado の使用方法 – MIG IP の生成<br />

4. [Next] をク リ ックして [Project Type] ページへ進みます (図 5-4)。 MIG に よ って生成 さ れる<br />

ファイルは RTL 形式であ る ため、 [Project Type] で [RTL Project] を ON にします。<br />

X-Ref Target - Figure 5-4<br />

図 5-4 : プロジェク ト タイプ<br />

5. [Next] をク リ ックして [Add Sources] ページへ進みます (図 5-5)。 ここではプロジェクトに<br />

RTL フ ァ イルを追加で き ます。プ ロ ジ ェ ク ト を あ ら か じ め作成し ていない場合は次のページへ<br />

進みます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 353<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 5 章 : Vivado Design Suite への移行<br />

X-Ref Target - Figure 5-5<br />

6. [Next] をク リ ックして [Add Existing IP (optional)] ページへ進みます (図 5-6)。IP 作成済の場<br />

合は、IP に よ って生成 さ れた XCO フ ァ イルをプ ロ ジ ェ ク ト に追加で き、以前作成し た IP ファ<br />

イルが自動的に追加さ れます。 IP を あ ら か じ め作成し ていない場合は次のページへ進みます。<br />

X-Ref Target - Figure 5-6<br />

図 5-5 : ソースの追加<br />

図 5-6 : 既存の IP コ アの追加 (オプシ ョ ン)<br />

354 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


Vivado の使用方法 – MIG IP の生成<br />

7. [Next] をク リ ックして [Add Constraints (optional)] ページへ進みます (図 5-7)。 制約ファイル<br />

が リ ポジ ト リ にあ る場合、 それをプ ロ ジ ェ ク ト に追加で き ます。 制約フ ァ イルがない場合は次<br />

のページへ進みます。<br />

X-Ref Target - Figure 5-7<br />

図 5-7 : 制約の追加 (オプシ ョ ン)<br />

8. [Next] をクリックして [Default Part] ページ (図 5-8) へ進みます。 こ のページではターゲ ッ ト<br />

デバイ ス を選択で き ます。 図 5-8 のよ うな [Default Part] ページが表示さ れます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 355<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 5 章 : Vivado Design Suite への移行<br />

X-Ref Target - Figure 5-8<br />

X-Ref Target - Figure 5-9<br />

図 5-8 : デフォルトのデバイス (デフォルト ウィンドウ)<br />

ターゲッ ト とする [Family]、[Package] および [Speed grade] を選択し ます。使用可能なデバイ<br />

スが同じページに表示さ れ、 そ こ か ら ターゲ ッ ト デバイ ス を選択でき ます (図 5-9)。<br />

図 5-9 : デフォルトのデバイス (カスタム ウィンドウ)<br />

356 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 5-10<br />

Vivado の使用方法 – MIG IP の生成<br />

[Parts] オプシ ョ ン を使用してデバイ ス を選択する以外に、 [Boards] オプシ ョ ンでデバイ スを選択<br />

するこ と もできます。こ こではザイ リ ンクスがサポートする評価ボードが表示されます (図 5-10)。<br />

こ のオプシ ョ ンを使用する と 、 評価ボー ド でデザイ ンを使用可能にでき ます。<br />

9. [Next] をク リ ックして [New Project Summary] ページへ進みます (図 5-11)。こ こ では、選択し<br />

たプ ロ ジ ェ ク ト のサマ リ が表示さ れます。<br />

X-Ref Target - Figure 5-11<br />

図 5-10 : デフォルトのデバイスおよびボード<br />

図 5-11 : 新規プ ロジ ェ ク ト のサマ リ<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 357<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 5 章 : Vivado Design Suite への移行<br />

X-Ref Target - Figure 5-12<br />

10. [Finish] を ク リ ッ ク し てプ ロ ジ ェ ク ト の作成を終了し ます。図 5-12 に、プ ロ ジ ェ ク ト 作成後の<br />

Vivado IP の GUI のページを示し ます。<br />

図 5-12 : Vivado ツール プロジェク ト<br />

11. [Project Manager] で [IP Catalog] をクリ ックして IP カタログ ウ ィ ン ド ウ を表示し ます。 [IP<br />

Catalog] ウ ィ ン ド ウ がパネルの右側に表示さ れます (図 5-13 の赤い丸で囲った部分)。<br />

358 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 5-13<br />

図 5-13 : IP カタログ<br />

Vivado の使用方法 – MIG IP の生成<br />

12. MIG ツールは [IP Catalog] ウ ィンドウの [Memories & Storage Elements] → [Memory<br />

Interface Generators] (図 5-14) にあ り ますが、 検索ボッ ク スに 「MIG」 と 入力する こ と で も<br />

検索で き ます。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 359<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 5 章 : Vivado Design Suite への移行<br />

X-Ref Target - Figure 5-14<br />

図 5-14 : [IP Catalog] ウィンドウ - Memory Interface Generator<br />

13. [MIG 7 Series] をクリ ックして MIG ツールを開きます (図 5-15)。<br />

X-Ref Target - Figure 5-15<br />

図 5-15 : 7 <strong>シリーズ</strong> <strong>FPGA</strong> の MIG (Memory Interface Generator) の最初のページ<br />

360 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 5-16<br />

Vivado の使用方法 – MIG IP の生成<br />

14. MIG ツールか らデザ イ ン を生成し ます。 デザ イ ンが生成さ れる と 、 図 5-16 のよ うなプロジェ<br />

クト ウ ィ ン ド ウ が表示 さ れます。<br />

図 5-16 : Vivado ツールのプロジェ ク ト ウィンドウ (IP コ アの生成後)<br />

15. プロジェク トが作成されると、 XCI フ ァ イルが自動的にプロ ジ ェ ク ト へ追加されます (図 5-17)。<br />

追加し た XCI ファイルが [Sources] → [Hierarchy] タブに表示されます (図 5-17 の赤い丸で囲っ<br />

た部分)。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 361<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 5 章 : Vivado Design Suite への移行<br />

X-Ref Target - Figure 5-17<br />

図 5-17 : Vivado ツールのプロジェ ク ト ソース ウィンドウ<br />

[Create Design] フローまたは [Verify Pin Changes and Update Design] フローを使用してデザ<br />

インを MIG か ら生成で き ます。 MIG ツールからのデザインの生成に、 これらのフローで差異<br />

はあ り ません。MIG ツールか らデザ イ ン を生成する フ ローに関係な く 、XCI ファイルは Vivado<br />

ツール プロジェク トに追加されます。インプリ メンテーショ ン フローはプロジェク トに追加さ<br />

れた XCI フ ァ イルに依存する ため、 こ のフ ローはあ ら ゆ る状況において同じ です。<br />

16. MIG で生成されたすべての RTL フ ァ イルは自動的にプ ロ ジ ェ ク ト へ追加 さ れます。 フ ァ イル<br />

が変更さ れて再生成し たい場合は、 XCI ファイルで右クリックして [Generate Output<br />

Products] をクリ ックします (図 5-18)。<br />

362 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 5-18<br />

図 5-18 : RTL および制約の生成<br />

Vivado の使用方法 – MIG IP の生成<br />

17. [Generate Output Products] をク リ ックすると [Manage Outputs] ウ ィンドウが表示されます<br />

(図 5-19)。シ ミ ュ レーシ ョ ン またはサンプル デザ イ ン を希望する場合は、[Actions] プルダウン<br />

メニューから [Generate] を選択します。デフォル ト では、これら 2 つの出力は生成されません。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 363<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 5 章 : Vivado Design Suite への移行<br />

X-Ref Target - Figure 5-19<br />

図 5-19 : 生成用のウ ィ ン ド ウ<br />

18. ユーザー デザイ ンの RTL ファイルおよび制約ファイル (XDC ファイル) はすべて [Sources]<br />

→ [Libraries] タブで表示できます (図 5-20)。<br />

364 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 5-20<br />

図 5-20 : Vivado プロジェク ト – RTL ファイルと制約ファイル<br />

Vivado の使用方法 – MIG IP の生成<br />

ラッパー レベルのファ イルおよびテス ト ベンチ モジュールはすべて、[File] → [Add Sources]<br />

オプシ ョ ン (このオプションは XCO ファイルを右クリックして [Add Sources] をクリ ックし<br />

て利用する こ と も可能) を使用し て手動でプ ロ ジ ェ ク ト へ追加で き ます。<br />

19. 手順 17 でサンプル デザイ ンを生成し た場合は、 現在のデザイ ン と は別に新しい Vivado プロ<br />

ジェク トが作成されます。 このプロジェク トには、 ト ラフィ ック ジェネレーター RTL ファイ<br />

ル、 最上位モジ ュール example_design、 コ ン フ ィ ギ ュ レーシ ョ ン済みの XDC ファイル、お<br />

よび下位 メ モ リ <strong>インターフェイス</strong>のデザイン ファイルがあります。<br />

20. このサンプル プロジェク トは図 5-21 と類似した表示になります。<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 365<br />

<strong>UG586</strong> 2012 年 10 月 16 日


第 5 章 : Vivado Design Suite への移行<br />

X-Ref Target - Figure 5-21<br />

図 5-21 : vivado_gui.tcl 実行後の Vivado プロジェク ト<br />

21. [Project Manager] → [Program and Debug] の下にあ る [Generate Bitstream] (図 5-21 の赤<br />

い丸で囲った部分) をクリ ックし、 生成されたデザインの BIT ファイルを生成します。<br />

/.runs/ impl_1 ディレク ト リには、イン<br />

プ リ メ ンテーシ ョ ン実行後にプ ロ ジ ェ ク ト 用に生成 さ れた レポー ト ファイルがすべて含まれ<br />

ます。<br />

22. MIG IP コアは [Re-customize IP] を使用して再度カス タマイズできます。XCI ファイルを右ク<br />

リックして [Re-customize IP] (図 5-22) をク リ ックすると MIG の GUI が表示されるのでオプ<br />

シ ョ ン ョ ン を設定し てデザ イ ン を生成し ます。<br />

366 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


X-Ref Target - Figure 5-22<br />

スクリプト ファイル – コマンド ライン モード<br />

スクリプト ファイル – コマンド ライン モード<br />

「Vivado の使用方法 – MIG IP の生成」 で説明し た イ ンプ リ メ ンテーシ ョ ン フ ローを実行する以外<br />

に、 MIG ツールで生成されたス ク リ プ ト ファイルを使用してインプリ メンテーション フ ローおよ<br />

びシ ミ ュ レーシ ョ ン フ ローを実行で き ます。<br />

インプリメンテーション フロー<br />

MIG ツールは Tcl ファイルを生成してインプリメンテーション フローをコマンド ライン モード で<br />

実行し ます。 Vivado.tcl ファイルは /.srcs/sources_1/ip//example_design/par ディレク ト リに生成されます。<br />

Name>/


第 5 章 : Vivado Design Suite への移行<br />

directory>.srcs/sources_1/ip///example_<br />

design/sim ディレク ト リに生成されます。<br />

現在の作業デ ィ レ ク ト リ を コ ン ソ ール/DOS プロンプトで /.srcs/sources_1/ip///example_<br />

design/sim に変更し、 xsim_run.sh/xsim_run.bat ファイルを実行してください。 このファ<br />

イルを実行する と 、Vivado シミュレータが完全なフローを用いてデザインのシミュレーションを実<br />

行します(user_design および example_design ファイルの両方を追加)。<br />

368 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日


その他のリ ソース<br />

ザイ リンクスのリ ソース<br />

<strong>ソリューション</strong> センター<br />

参考資料<br />

付録 A<br />

アンサー データベース、資料、ダ ウ ン ロー ド 、フ ォーラ ムな どのサポー ト リ ソース を利用する には、<br />

次のウ ェブサイ ト にア ク セス し て く ださ い。<br />

http://japan.xilinx.com/support<br />

ザ イ リ ン ク スの資料で使用さ れてい る技術用語については、 次の用語集を参照し て く だ さ い。<br />

http://japan.xilinx.com/company/terms.htm.<br />

各設計段階におけ るデバイ ス、 ソ フ ト ウ ェ ア ツール、および IP コアのサポートについては、ザイ リ<br />

ンクス ソ リューション センターを参照して く ださい。デザインのサポー ト 、 ア ドバイザ リ 、および<br />

ト ラ ブルシ ューテ ィ ン グに関連する情報を提供し ています。<br />

MIG に特化し た ソ リ ューシ ョ ン センターは、ザイ リ ンクス MIG <strong>ソリューション</strong> センターを参照し<br />

てください。<br />

次の資料は、 こ のユーザー ガ イ ド の補足資料 と し て役立ち ます。<br />

1. UG471 : 『7 <strong>シリーズ</strong> <strong>FPGA</strong> SelectIO リソース ユーザー ガイド』<br />

2. UG475 : 『7 <strong>シリーズ</strong> <strong>FPGA</strong> パ ッ ケージおよびピ ン配置仕様』<br />

3. ARM® AMBA® の公開仕様<br />

http://www.arm.com/products/system-ip/amba/amba-open-specifications.php<br />

4. JESD79-3E、 DDR3 SDRAM Standard、 JEDEC Solid State Technology Association<br />

http://www.jedec.org/sites/default/files/docs/JESD79-3E.pdf<br />

5. UG683 : 『EDK コンセプト、 ツール、 テクニック』<br />

6. UG111 : 『エンベデッ ド システム ツール リファレンス マニュアル』<br />

7. TN-47-01、 DDR2-533 Memory Design Guide For Two-DIMM Unbuffered<br />

SystemsMicron Technology, Inc.<br />

8. ChipScope Pro およびシリ アル I/O ツールキッ ト<br />

http://japan.xilinx.com/tools/cspro.htm<br />

9. UG628 : 『コマンド ラ イン ツール ユーザー ガイド、 COMPXLIB』<br />

10. UG626 : 『合成/シミュレーション デザイ ン ガイド』<br />

11. DS176 : 『Virtex-7 <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> ソ リューション データ シー ト 』<br />

7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong> japan.xilinx.com 369<br />

<strong>UG586</strong> 2012 年 10 月 16 日


付録 A : その他の リ ソース<br />

12. PlanAhead デザ イ ンおよび解析ツール<br />

japan.xilinx.com/tools/planahead.htm<br />

13. UG612 : 『タイ ミ ング クロージャ ユーザー ガイド』<br />

14. UG199 : 『Virtex-5 <strong>FPGA</strong> ML561 <strong>メモリ</strong> イ ン ターフ ェ イ ス開発ボー ド ユーザー ガイド』<br />

15. 7 <strong>シリーズ</strong> <strong>FPGA</strong> データ シー ト<br />

japan.xilinx.com/support/documentation/7_series.htm<br />

16. UG029 : 『ChipScope Pro ソフトウェアおよびコア ユーザー ガイド』<br />

17. 「 リ オーダー方式の コ ン ト ローラーに よ る DDR SDRAM の効率化」、 Xcell Journal 69 &<br />

70 合併号、 http://japan.xilinx.com/publications/archives/xcell/xcell_69and70.pdf<br />

18. UG472 : 『7 <strong>シリーズ</strong> <strong>FPGA</strong> クロック リソース ユーザー ガイド』<br />

19. XAPP739 : 『AXI マルチポー ト <strong>メモリ</strong> コント ローラー』<br />

20. UG772 : 『<strong>Xilinx</strong> LogiCORE IP XADC Wizard v2.2 ユーザー ガイド』<br />

21. UG911 : 『Vivado Design Suite 移行手法ガ イ ド 』<br />

22. Vivado Design Suite ユーザー ガイド<br />

370 japan.xilinx.com 7 <strong>シリーズ</strong> <strong>FPGA</strong> <strong>メモリ</strong> <strong>インターフェイス</strong> <strong>ソリューション</strong><br />

<strong>UG586</strong> 2012 年 10 月 16 日

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!