FC2カウンター FPGAの部屋 DQSをクロックとしてDQをリードするDDR2 SDRAMコントローラの遅延の検討
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

DQSをクロックとしてDQをリードするDDR2 SDRAMコントローラの遅延の検討

Trac Lightning と TortoiseSVN をインストールしたので、これで安心してDDR2 SDRAMコントローラの検討に戻ろうと思う。

まずはDDR2 SDRAM(以下DDR2と略す)に出力するクロックの検討から。DDR2 へのクロック出力ddr2_clk<0> の遅延をTiming Analyzer で見てみる。
ddr2_controller_delay_1_080718.png
上の画面によると、ddr2_clk<0>パッドの出力信号はSYS_CLKから 3.328ns 遅延している。
次にDDR2 がデータを受けられるかを確認するためにDQの遅延を見てみる。
ddr2_controller_delay_2_080718.png
上の画面によると、ddr2_dq<0>パッドの出力信号はSYS_CLKから 3.111ns 遅延している。
その後、7つの ddr2_dq の遅延を見てみたが、最大遅延と最小遅延の差が31ps だったので、ほかも大丈夫だろう。(もう計算するのが飽きた)

次にDQSをクロックとしたDQの入力の遅延を見てみよう。これはddr2_dqs<0>がddr2_dq<0>~ddr2_dq<7> にクロックを供給していて、ddr2_dqs<1>がddr2_dq<8>~ddr2_dq<15>にクロックを供給している。
それぞれの代表の遅延を見ていこう。最初にddr2_dq<0>の遅延を下に示す。
ddr2_controller_delay_3_080719.png
パッドから最初にサンプルするFFまでの遅延が 2.908nsである。クロックの遅延は2.422ns。クロックの遅延のほうが0.486ns 少ない。後で遅延の量を考慮することにする。
次にdd2_dq<9> の遅延を下に示す。(dd2_dq<8>を示そうと思ったのだが、間違えてしまった)
ddr2_controller_delay_4_080719.png
パッドから最初にサンプルするFFまでの遅延が 2.899ns で、クロックの遅延は2.407ns。クロックの遅延のほうが 0.492ns 少ない。ddr2_dq<0> との差はどれも数ps で少ない。

ここで内部の200MHzからDDR2 SDRAMのクロックに出力するまでの遅延をTcd_fpga とすると、これにクロック配線の遅延 (Tpd_clk) を足したものがDDR2 SDRAMがFPGAの200MHzの内部クロックからの遅延になる。FPGA動作クロックからDDR2 SDRAMの動作クロック間での遅延をTddr2_clk とすると、

Tddr2_clk = Tcd_fpga + Tpd_clk


となる。Tcd_fpga は3.328ns。tpd_clk はFR-4の配線遅延を75ps/cmとして、長さを5cm とすると 0.375ns となる。よってTddr2_clk = 3.328 + 0.375 = 3.703ns となる。
DDR2 SDRAMの動作クロックがFPGAの内部動作クロックより3.703ns 遅延していることになる。
次にDDR2 SDRAMからFPGAのddr2_dq までの遅延はどうか計算してみよう。
ここでDDR2 SDRAMからddr2_dq パッドまでの配線遅延をTpd_dataとし、FPGAのパッドから最初のFFまでの遅延をTpad2ff_fpgaとする。さらに、DDR2 SDRAMからFPGAのddr2_dq の最初のFFまでのトータルの遅延をTrecv_dataとすると、

Trecv_data = Tpd_data + Tpad2ff_fpga


となる。
Tpd_data はTpd_clk と同様に0.375ns とし、Tpad2ff_fpga はddr2_dq<0>のデータを採用して2.908ns とすると、Trecv_data = 0.375 + 2.908 = 3.283ns。
ddr2_dq でリードしたデータがFPGA内部クロックからの遅延量はTddr2_clk + Trecv_data なので、3.703ns + 3.283ns = 6.986ns となる。
これをFPGA動作クロックの270度で受けようとすると2クロック目で8.75ns となり、DQSクロックから270度クロックの乗せ変えのためのセットアップ時間として、8.75ns - 6.986ns = 1.764ns 見込めることになる。これはタイミング・アナライザで最悪の遅延量を見込んでいるので、これよりも多少遅延が少なくなることからも、この辺で受けられるだろうと思う。
前回では、入力遅延を変化させて最良のポイントを探ってみたが、今回のDQSのクロックで受ける場合には、あらかじめDQSの遅延を総遅延量の半分以上入れる必要があるため、固定遅延でやることにした。
  1. 2008年07月19日 07:14 |
  2. DDR SDRAMコントローラ
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/838-826e64f8
この記事にトラックバックする(FC2ブログユーザー)