« BGAの基板設計 | トップページ | JavaScriptでシリアルポートへアクセス! »

2008.10.30

DDR2の基板設計

DDR2メモリを使用するための基板設計を行っています。

DDR2メモリSSTL18というI/Oを規格を使っています。
SSTL18とは終端することを前提とした、1.8V振幅のディジタル信号です。この信号を受信するときにはVref(=0.9V)と比較して高いか低いかでH/Lを判断します。

SSTLの終端抵抗は、本来ならば原則として、一つの信号あたり2個必要です。
ドライバの送信直後に行う直列終端と、デバイスの後ろでVTT(=0.9V)に対して行う終端の2つが必要になります。
双方向信号はこの2倍の4個必要です。

なお、VTTとVrefは異なります。VTTは電流の掃き溜めみたいな感じですが、Vrefは清らかです。

さて、DDR2メモリを真面目に扱うならば、アドレスや制御信号やその他すべての信号に対して下の図のような終端を施さなければなりません。
DDR2の終端方法

これを全部やるのはあまりにも大変です。チップ抵抗を並べるのは面積を食います。
Virtex4とかVirtex5ならばI/OにDCIという仕組みがあるので、直列終端抵抗は省けますが、Spartan3系ではそういうのはないので、FPGAの出力に真面目に22Ωとか75Ωとかをいれてやらねばなりません。
データ信号とデータストローブ信号についてはDDR2メモリではオンチップで内蔵されているのでそれを使うこともできまうが、2種類の終端抵抗をすべてのアドレス線に入れるのはあまりにも大変なので、省略してしまっている評価ボードもみかけます。

とりあえず真面目に前信号に直列終端を入れ、アドレスと制御信号はVTTへ終端するような回路を作ってみました。
DDR2のパターン設計

P板ルールでもパターンが引けて嬉しかったです。
すでに4層基板としては限界までやった気がします。
4層基板というのは配線領域が意外と少ないです。

|

« BGAの基板設計 | トップページ | JavaScriptでシリアルポートへアクセス! »

コメント

大変参考にさせていただいております。
現在Virtex5でDDR2コンポを使おうと考えておりまして、大変参考に熟読させております。
さて、質問なのですが、この記事で紹介されている内容は、終端並列抵抗(50Ω)となっておりますが、いろいろな資料を見ると、メモリ直前に22Ω程度の直列終端抵抗をいれる内容をみかけております。アドレスなどFPGA->メモリの一方向の場合は良いとして、DQ, DQSの双方向に関して、FPGAからのメモリ読み込み(つまりDDRがドライバ側)の時に直列抵抗がないと、オーバーシュート・アンダーシュートが発生する様な記事がありました。ご紹介の内容では、その直列抵抗を省略されているようですが、それほど問題にはならないのでしょうか?

また、CK/CK#, DQSはそれぞれ差動信号になっていますが、この差動間に100Ωの抵抗などが必要なのか、いろいろ調べているのですが良くわかりません。CKに関しては入れようかとおもっていますが、上記の並列・直列の問題も含めDQSは差動でもあるので、終端抵抗に差動の抵抗まで全部要るのか、不要なのか困っております。こういう物はやってみて実装すべきだとは十分承知なのですが、事前にできるだけ情報をいただければ幸いです。よろしくお願い致します。

投稿: Yamamoto | 2010.07.27 11:04

ええと、難しい問題ですね。

DQ, DQSにも本来ならば抵抗を入れたほうがいいのでしょう。しかし、実際に世に出ているボードを見てみると、入れていないものも多いですね。詳しい事情はわかりません。

問題になるかどうかは配線の距離が大きな決定要因です。配線が短いか、周波数が高くないならば問題ないでしょう。
FPGAとDRAMが1対1で接続されるような回路で、距離も短かければあまり神経質になることはないと思います。

オーバーシュートが波打ってスレッショルドを2回横切ったり、オーバーシュートが強すぎてデバイスの絶対最大定格を超えるようでなければ、問題はないでしょう。どんなに注意深く抵抗を入れても、現実の回路では多少のオーバーシュートは発生します。

基板屋さんや、高速信号のシミュレーションツール屋さんは、少し脅かしすぎる傾向があると思います。

ただ、本当に必要な場合もあると思います。ケースバイケースということで、オシロで見てみるのが一番です。

投稿: なひたふ | 2010.07.30 10:32

お忙しい中ご回答ありがとうございます。
確かにいろいろな文献でも、完全なSSTL-1.8 ClassI, ClassIIに準拠するのはコスト面・BOM数の関係で省略しているケースもあるということが書いてありました。
私も基本ClassIベースで、特性インピーダンスも簡単にシミュレーション程度に抑えて、おっしゃるとおり”過度”には、気にしすぎないように致します。まずは引いてみてオシロですね。大変参考になりました。

投稿: Yamamoto | 2010.07.30 11:08

昔、画像関係の回路で、普段は綺麗な絵が出るのに、温かくなってくると画面にノイズが載るということがありました。

徹底的なデバッグを行ったところ、原因は、DQSPとDQSNがあるうちのDQSNを動かしていなかった、ということでした。(CKPとCKNだったかもしれない)

差動の片側だけでもそれなりに動いてしまうくらいです。CPUの命令とかだったらまず動かないかもしれませんが。

気にしすぎないほうがいいです。

インピーダンスの整合と、等長配線と、クロストークと、コストの2つ以上は決して満たせないと思います。
あらゆる基板は何らかの妥協をしているはずです。

投稿: なひたふ | 2010.07.31 03:26

本当に参考になります。

実際にPCBのパターンを引き始めたところ、BGAですとピッチが0.8でパッド直径が0.4mmでした。つまりクリアランスを考えると0.13mmくらいしか配線はパッド間を通せず、8層の特性インピーダンス50Ωを満たす0.15程度のパターンはひけないことがわかりました。同じ配線も基板が狭くて、CLK(P_N), DQS(P_N)くらいの差動くらいしかなかなか実現できません・・・。ここにSSTL_1.8 Class II準拠なんてかなり難しい気がしました。
なふたうさんの、”インピーダンスの整合と、等長配線と、クロストークと、コストの2つ以上は決して満たせないと思います。”というご指摘はその通りだなぁと思いました。
今後とも体を大切にして、有益な情報を発信いただければと思います。楽しみにしております。

投稿: Yamamoto | 2010.08.03 08:25

すみません。誤植です。

同じ配線 > 等長配線

投稿: Yamamoto | 2010.08.03 08:29

コメントを書く



(ウェブ上には掲載しません)




« BGAの基板設計 | トップページ | JavaScriptでシリアルポートへアクセス! »