Lattice ECP3 DDR3 メモリ I/F 1
目次 1 このドキュメントの概要... 4 2 DDR_MEM モジュールを使用する場合の注意点... 5 2.1 PLL の配置およびクロック入力ピンに関する注意事項... 5 2.2 クロック位相調整回路のタイミング制約と配置指定... 6 2.2.1 CSM の配置指定... 6 3 DDR3 SDRAM CONTROLLER IP を使用する場合の注意事項... 8 3.1 IP コアの制約... 8 3.2 実デザインでの IP コアの実装... 8 3.2.1 IP コアの構造とブロック間の接続... 8 3.2.2 実デザインでの IP コアの実装... 9 3.2.3 デバイスの一辺に2つ以上の IP コアを実装する場合の注意点... 9 3.2.4 デバイスの両辺に IP を実装する場合の注意点... 10 4 ピンアサインに関する注意... 11 4.1 ピンアサインのルール... 11 4.2 DQS 指定ピンと DQS グループ... 13 5 ボードデザインに関する注意... 15 5.1 配線ルール... 15 5.1.1 Fly-by トポロジの推奨... 15 5.1.2 信号間の配線間幅のルール... 15 5.1.3 CLK/CLK# 間の配線ルール... 15 5.1.4 CLK/ADD/CMD 間の配線ルール... 15 5.1.5 CLK と DQS 間の配線ルール... 15 5.1.6 DQS/DQS# 間の配線ルール... 16 5.1.7 DQS/DQ/DM 間の配線ルール... 16 5.2 終端ルール... 16 5.2.1 CLK/CLK# の終端... 16 5.2.2 CMD/ADD の終端... 16 5.2.3 DQS の差動終端... 16 5.2.4 DQ の終端... 16 5.2.5 終端の概略図... 17 5.3 その他... 17 5.3.1 VREF ピン... 17 5.3.2 使用禁止ピン... 18 2
6 改訂履歴... 19 3
1 このドキュメントの概要このドキュメントでは LatticeECP3 に DDR3 メモリ I/F を実装する際の注意点について説明します 文中で {} 内に書かれている文字列は JEDEC の DDR3 SDRAM Specification 内で定義されているパラメータ名です このドキュメントではこれらのパラメータについて説明していませんので 詳細は JEDEC の DDR3 SRRAM Specification か各社の DDR3 SDRAM のデータシートを参照してください なお 最新のデザインルールは web 上で公開されている Lattice ECP3 Hardware Checklist に記載されています 最新情報は必ずこちらのチェックリストで確認してください 4
2 DDR_MEM モジュールを使用する場合の注意点この章では IPexpress で生成した DDR_MEM モジュール ( メモリ I/F の PHY 部分 ) を使用する際の注意事項について説明します DDR3 SDRAM Controller の IP コアを使用する場合は 合わせて 3 章もご覧ください 2.1 PLL の配置およびクロック入力ピンに関する注意事項 DDR_MEM モジュールで使用できる PLL には配置の指定があります ( 表 2-1) デバイス サイド 1 表 2-1 PLL の配置と入力指定ピン各パッケージの入力指定ピン PLL 配置 FPBGA484 FPBGA672 FPBGA1156 ECP3-35 左 PLL_R35C5 L5 U6 -- 右 PLL_R35C70 M18 V34 -- ECP3-70 左 PLL_R43C5 L5 U6 M3 右 PLL_R43C142 M18 V34 T21 ECP3-95 左 PLL_R43C5 L5 U6 M3 右 PLL_R43C142 M18 V34 T21 ECP3-150 左 PLL_R61C5 -- M3 U6 右 PLL_R61C178 -- T21 V34 1 パッケージ上面 (Top View) から見た場合の方向です DDR_MEM モジュール内で使用している PLL と PLL へのクロック入力ピンは インプリ時に必ずピンアサインおよび配置指定を行ってください 配置指定は constraint ファイル (*.lpf) に以下の様に記述します 入力ピン 記述ルール LOCATE COMP クロック入力ピン名 SITE ピン番号 ; 記述例 LOCATE COMP pll_clk SITE Y28 ; PLL 記述ルール LOCATE COMP PLL 名 SITE PLL 配置 ; 記述例 LOCATE COMP "uut/inst1_ehxpllf" SITE "PLL_R53C70"; 5
----------------------------------------------------------------------------------------------------------------------------------- ピンアサインは GUI ツール [Spreadsheet View] でも行うことができます PLL のインスタンス名は [Translate design] 後に GUI ツール [Netlist View] を開くか [Map Design] プロセスのレポートで確認することができます 図 2-1 Lattice Diamond の Netlist View ----------------------------------------------------------------------------------------------------------------------------------- 2.2 クロック位相調整回路のタイミング制約と配置指定 DDR_MEM モジュールは 内部でクロック間の位相を調整する CSM(Clock Synchronization Module) を含んでいます 正しくクロック間の位相を調整するために いくつかのネットに対する遅延制約とリソースの配置指定が必要になります 2.2.1 CSM の配置指定 CSM は 4 つのサブモジュールで構成されています 論理合成を行うと 自動的にサブモジュールごとの PGROUP( リソースのグループ ) が生成されるので PGROUP ごとに配置指定を行いまいます デバイス サイド 1 表 2-2 CSM サブモジュールの配置指定 PGROUP の配置 2 PLL 配置 */clk_phase0 */clk_phase1a */clk_phase1b */clk_stop ECP3-35 左 PLL_R35C5 R24C5D R34C2D R34C2D R34C2D 右 PLL_R35C70 R24C70D R34C73D R34C73D R34C72D ECP3-70 左 PLL_R43C5 R32C5D R42C2D R42C2D R42C2D 右 PLL_R43C142 R32C142D R42C145D R42C145D R42C144D ECP3-95 左 PLL_R43C5 R32C5D R42C2D R42C2D R42C2D 右 PLL_R43C142 R32C142D R42C145D R42C145D R42C144D ECP3-150 左 PLL_R61C5 R50C5D R60C2D R60C2D R60C2D 右 PLL_R61C178 R50C178D R60C181D R60C181D R60C180D 1 パッケージ上面 (Top View) から見た場合の方向です 2 * の部分にはデザインのインスタンス名に依存した文字列となります 6
配置指定は constraint ファイル (*.lpf) に以下の様に記述します 入力ピン 記述ルール LOCATE PGROUP グループ名 SITE 配置指定場所 ; 記述例 LOCATE PGROUP "clocking/clk_phase/phase_ff_0_inst/clk_phase0" SITE "R50C5D" ; 7
3 DDR3 SDRAM Controller IP を使用する場合の注意事項 3.1 IP コアの制約 IP コアのインプリに必要な配置指定やタイミング制約は IP コア生成時にサンプルプロジェクトと一緒に 以下のファイルに出力されます [ プロジェクトフォルダ ]/ddr_p_eval/***/impl/synplify/***_eval.lpf *** は IPexpress で IP コア生成時に設定した module(entity) 名 このファイル内の制約は全て 実際のデザインプロジェクトでも適用して下さい なお 生成および実デザインへの適用に関しては 以下の点に注意してください IP コアのバージョンや IPexpress 上の各種設定を変更すると 配置指定やタイミング制約の内容が変わることがあります IP コアを生成しなおした際は その都度生成される制約ファイルを使用してください 生成される制約ファイルは インスタンス名や信号名がサンプルプロジェクトに合わせて生成されています 実デザインに適用するためには 多少の修正 ( インスタンス名や信号名の変更 ) が必要になります メモリ I/F のピンアサインは DQS ピンのみ生成時の設定に従って指定されています その他のピンは 4 章のルールに従ってピンアサインを行ってください サンプルプロジェクトでは自動でピンアサインされるので その結果をそのまま使用しても構いません 最適な制約はデバイス ( およびパッケージ ) ごとに異なります IP コア生成時には 必ず使用するデバイスを選択しておいてください 3.2 実デザインでの IP コアの実装 3.2.1 IP コアの構造とブロック間の接続 IPexpress で生成される IP コアは メモリコントローラブロックとクロック生成ブロックの 2 つに分かれています これらのブロックの接続方法は IP コアと同時に作成されるリファレンスデザインを参照してください 図 3-1 リファレンスデザインのブロックダイアグラム リファレンスデザインのプロジェクト [ プロジェクトフォルダ ]/ddr_p_eval/***/impl/synplify/***_eval.ldf *** は IPexpress で IP コア生成時に設定した module(entity) 名 8
3.2.2 実デザインでの IP コアの実装実デザインで IP コアを使用する際は リファレンスデザインを参照して IP コアをブラックボックスとして HDL ソースにインスタンスしてください IP コアを作成したプロジェクトが実デザインのプロジェクトなら IP コアのネットリストは [Translate Design] プロセスで合成結果と結合されます IP を作成したプロジェクト以外のプロジェクトで IP コアを使用する場合は IPexpress が出力する ngo ファイル (IP コアのネットリスト ) を実デザインのプロジェクトフォルダにコピーするか [Translate Design] プロセスのオプション [Macro Search Paths] で ngo ファイルのあるフォルダを指定してください 図 3-2 IP コアのネットリストパス指定 3.2.3 デバイスの一辺に 2 つ以上の IP コアを実装する場合の注意点デバイスの一辺 ( 右か左 ) に 2 つ以上の IP コアを実装する場合 HDL ソース内でコントローラモジュールは複数インスタンスする必要がありますが クロック位相調整ブロック [ddr3_clks] は 1 つを共有します 図 3-3 一辺に 2 系統実装する際の回路構成 [ddr3_clks] の配置指定はコントローラを複数実装した場合でも変わりませんが コントローラモジュールの配置指定はピンアサインによって最適な設定が異なります 複数の IP コアを実装する場合は それぞれのピンアサインで IP コアを生成し 作成されるリファレンスデザイン内の制約内容をマージして 実デザインに適用してください 9
3.2.4 デバイスの両辺に IP を実装する場合の注意点両辺にそれぞれ IP コアを実装する場合 配置指定等の制約はそれぞれの辺に実装する IP ごとに必要になります 各辺に実装する設定で IP コアを個別に作成し 実デザインでは両 IP コアの制約をマージして適用してください 10
4 ピンアサインに関する注意 4.1 ピンアサインのルール DDR3 メモリインターフェイスのピンアサインは以下のルールを守ってください BOTTOM サイド ( パッド番号が PBxxA/B) のピンには RST# 以外の DDR3 メモリインターフェイスの信号をアサインしない DQ/DQS/DM は必ずデバイスの左右の辺にあるピンを使用する (IO バンク 2/3/6/7) DQS は必ず DQS( 差動の + 側 ) 指定ピンにアサインする (DQS# は自動的に差動の - 側のピンにアサインされる ) DQS# がアサインされるピンに 他の信号をアサインしない DQS に対応する DQ[7:0] および DM( オプション ) は 必ず DQS と同じ [DQS グループ ] のピンにアサインする 使用する DQS ピンの隣のピン ( パッド ) はガードバンドとして High レベル固定出力ピンにし ボード上で VCCIO に接続する ただし VREF ピンを含む DQS グループではガードバンドは不要 ( 図 4-1 参照 ) DM は DQS ピンの隣 ( ガードバンドとは反対側 ) に配置する VREF ピンを含む DQS グループでは VREF ピンから遠い方の DQS/DQS# の隣に配置する ( 図 4-1 参照 ) 図 4-1 DQS 用ガードバンドと DM の配置例 DQS グループは 左右の辺の中央辺りのグループから優先的に使用し 辺の上下一番端にある DQS グループは使用しない 11
DQ/DQS/DM をアサインした DQS グループと隣り合っている DQS グル プの内 最低でも 1 つを Spacer( ノイズに対するガードバンド ) として使用し DQ/DQS/DM をアサインしない Spacer には CK/CMD/ADD はアサインしてもよい 図 4-2 Spacer の配置例 Spacer として使用する DQS グループの両端のピンと DQS/DQS# のピン ( 図 4-3 参照 ) は High または Low レベル出力に固定しボード上で該当する IO バンクの VCCIO か GND に接続する この際の VCCIO と GND の接続本数比が 3:1~2:1(VCCIO:GND) となるようにする 図 4-3 ガードバンド内で High または Low 出力に固定するピン 12
CK/CK# ピンは 対応する DQ/DQS/DM が配置されているサイド (Left or Right) の任意のピンにアサインする 周波数が 400Mhz の場合は左右の IO バンクにアサインすること 周波数が 400Mhz 未満の場合は TOP の IO バンクにアサインしてもよい CLK/ADD/CMD 信号は DDR 出力に対応した IO ピン (= 差動 IO をサポートするピン ) にアサインする VREF 入力は各 IO バンクに 2 本あるが 必ず [VREF1] を使用する ([VREF2] はユーザー I/O として任意の信号をアサインしても問題ない ) DDR3 メモリ I/F で使用する PLL へのリファレンスクロックは 使用する PLL の指定入力ピンから入力する ( 表 2-1 参照 ) 未使用の PLL 入力ピン () は ボード上で VCCIO に接続する ( 難しければ GND でも可 ) 図 4-4 PLL 入力ピンの例 4.2 DQS 指定ピンと DQS グループ DQS 指定ピンとそれに対応する DQS グループは web で公開されている Pinout リストから知ることができます 図 4-5 Pinout List の例 13
このリストの [ パッケージタイプ DQS] 行に [Edge]DQS[num]_[P/N] と書かれているピンが DQS 指定ピンです [edge] は PAD のある辺を表しており R(Right) か L(Left) になります [num] は DQS の PAD 番号です P が差動で + 側 N が差動で - 側のピンです HDL ソース上の DQS ピンは 必ず + 側のピン (*_P) にアサインします DQS のバッファタイプとして [SSTL15D] を選択すると - 側のピンも自動的にアサインされます 同じく [ パッケージタイプ DQS] 行に [Edge]DQ[num] と書かれているピンは [Edge] および [num] が一致する DQS に対応する DQ( および DM) をアサインできるピンです 14
5 ボードデザインに関する注意 5.1 配線ルール 5.1.1 Fly-by トポロジの推奨 1 つのメモリコントローラに 2 つ以上のメモリデバイスを制御する場合 CLK/ADD/CMD 信号は分岐配線ではなく Fly-by トポロジの採用を必須とします ----------------------------------------------------------------------------------------------------------------------------------- Fly-by トポロジの場合 メモリコントローラ側に Write Leveling 機能の実装が必要です ----------------------------------------------------------------------------------------------------------------------------------- メモリデバイスが 1 つの場合は必須ではありませんが 可能な限り Fly-by トポロジの採用を推奨します 5.1.2 信号間の配線間幅のルール各信号の配線間は クロストークノイズを防ぐため配線の幅の 3 倍の間隔をあけることを推奨します ただし DQS/DQS# および CLK/CLK# の差動ペア間はこのルールの対象外とします 5.1.3 CLK/CLK# 間の配線ルール CLK および CLK# 間は配線長の差分が ±10mil(0.01 インチ ) 未満になるように配線してください 5.1.4 CLK/ADD/CMD 間の配線ルール CLK/ADD/CMD 間は配線長の差分が ±100mil(0.1 インチ ) 未満になるように配線してください また 配線には DQ/DQS とは異なるレイヤを使用してください 5.1.5 CLK と DQS 間の配線ルールコントローラに Write Leveling 機能を実装しない場合 ( もしくは Write Leveling 実行前 ) ECP3 からのクロック出力と DQS 出力の位相は 図 5-1 のように DQS 出力の方が CLK 出力よりも 0~250p 進んでいます (DQS の方が早くトグルします ) 図 5-1 CLK と DQS の skew ボード上の CLK と DQS の配線は以下のルールに従ってください DIMM を使用する場合 (Write Leveling 必須 ) DIMM ソケットまでの CLK と DQS( およびその他の信号 ) は 等長配線 ( スキューが ±100ps 以下 ) になるよう配線してください DMM を使用しない場合 (Write Leveling なし ) Write Leveling 機能を ECP3 に実装しない場合は CLK と DQS の配線遅延スキューは ±100ps 以下にしてください DIMM を使用しない場合 (Write Leveling あり ) Write Leveling 機能を ECP3 に実装する場合は CLK の配線遅延が DQS の配線遅延より 500ps ~1500ps 大きくなるように配線してください 15
5.1.6 DQS/DQS# 間の配線ルール DQS および DQS# 間は配線長の差分が ±10mil(0.01 インチ ) 未満になるように配線してください 5.1.7 DQS/DQ/DM 間の配線ルール DQS と DQ/DM は 配線長の差分が ±50mil(0.05inch) 以内に収まるように配線してください また 各信号は可能な限り同じレイヤ 同じ経路で配線すること 経由するビアの数は 2 つ以下にすることを推奨します 5.2 終端ルールこの項では LatticeECP3 と DDR3 メモリを接続するための終端方法について説明します なお 基本的にはこの項で説明する終端を行っていただくことを推奨しますが ボードのデザインによっては十分な信号品質を確保できない場合もあります このため 事前に IBIS シミュレーション等を行い 必要であれば各信号線にシリアル抵抗等を挿入することも検討してください 5.2.1 CLK/CLK# の終端 CLK/CLK# は 接続されているもっとも遠いメモリ近傍 ( メモリから 5mm 以下 ) において線間 100Ω で終端することを推奨します 5.2.2 CMD/ADD の終端 CMD/ADD は ECP3 および DDR3 メモリ端での外部終端は不要です しかし必要な場合はダンピング抵抗 (22~35Ω 程度 ) を ECP3 近傍に入れてください 5.2.3 DQS の差動終端 DQS/DQS# は 信号線ごとに LatticeECP3 近傍で VTT に対して 100Ω で終端することを推奨します LatticeECP3 から近傍の終端抵抗までの配線長は 15mm 以下にすることを推奨します ただし 以下の条件を満たす場合は この終端抵抗はなくても構いません ECP3 と DDR3 メモリが 1:1 で接続されている ECP3 と DDR3 メモリ間の配線距離が 3 インチ以下 IBIS または SPICE シミュレーションで波形の乱れが確認されない 5.2.4 DQ の終端 DQ は 信号線ごとに LatticeECP3 近傍で VTT に対して 100Ω で終端することを推奨します LatticeECP3 から近傍の終端抵抗までの配線長は 15mm 以下にすることを推奨します ただし DQS と同様の条件を満たす場合は この終端抵抗はなくても構いません 16
5.2.5 終端の概略図 図 5-2 ECP3 と DDR3 メモリの終端 (ECP3-DDR3 が 1 対 1 で接続されている場合の例 ) 5.3 その他 5.3.1 VREF ピン各 IO バンクの VREF には専用の POL で生成したリファレンス電圧を印加することを推奨します 抵抗で分圧した電圧を印加する場合は 可能な限りノイズが乗らないようにフィルタ等を使用してください なお どちらの場合でも VREF 電圧をより安定させるため VREF ピン端に 0.1uF 程度のデカップリング容量を使用することを推奨します 図 5-3 VREF 電源のデカップリング 17
5.3.2 使用禁止ピンデバイスの規模を問わず FPBGA1156 パッケージを使用する場合 以下のピンは使用しないでください AN29, AM31 このピンに入力 / 出力される信号がトグルすると XRES ピンに影響を与え 結果として DDR3 メモリ I/F の入出力信号にジッタやノイズがのって誤動作してしまいます 18
6 改訂履歴 バージョン リリース日 改訂内容 Ver1.0 2011/8 初版リリース Ver1.1 2012/1 ガードバンドの呼称をテクニカルノートに合わせて Spacer に変更 4.1 項のピンアサインルールを変更 19