FC2カウンター FPGAの部屋 DDR2 SDRAMコントローラのその後(DDR2-400では動作せず)
FC2ブログ

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

FPGAの部屋

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

DDR2 SDRAMコントローラのその後(DDR2-400では動作せず)

DDR2 SDRAMコントローラは動作周波数200MHz (DDR2-400) でインプリメントしてSuzaku-V(SZ410)にダウンロードしてテストしているが、なかなか良い遅延値(IDELAYの値)を見つけられない。
書き込んだ値はチップスコープで見ると一部読めているのだが、データが化けてしまうところがある。それに、私のDDR2 SDRAMコントローラは動作周波数の1/4データをずらして、内部クロックに同期してデータを読むように作ってあるのだが、どうもIDELAYで遅延させる前に1/4以上内部クロックから遅れてしまっているようだ。もっとも動作周波数200MHzというと周期で 5ns 、1/4周期というと1.25nsなので、FPGAのIOBの出力遅延、配線遅延などを考えると、やはり厳しいと思う。動作周波数200MHzで動作させるのであれば、以前にやっていたように3/4遅延させてデータをとるようにしないとだめだと思う。
というわけで、データが表示されるはずの7セグLEDには、データの取得タイミングが前ずれしているため表示されないが、チップスコープで見ると一部のデータは読めているのがわかる。結局、動作周波数200MHzは厳しいのかもしれない。私のDDR2 SDRAMコントローラ回路にとっては。。。
そういえば、前の展示会でアットマークテクノの方に聞いたときにEDKのDDR2 SDRAMコントローラでも200MHzでは動いていないといっていたと思った。もちょっと低い周波数だったと思う。もしかしたら本当に厳しいのかもしれない。
というわけで、動作周波数を200MHzから思い切って、DDR2 SDRAM仕様上の最低クロックの125MHz(周期8ns) に落とそうと思っている。これでうまくいったら徐々にクロックを上げいていけば良いしね。。。
  1. 2008年03月01日 05:42 |
  2. DDR SDRAMコントローラ
  3. | トラックバック:0
  4. | コメント:11

コメント

こんばんは
アイが狭いのではないでしょうか
400ですと、AC特性の良い基板でも、1.65nsぐらいだと思います(Virtex直前で)それだけあれば充分可能ですね。あまり考慮されていないと、意外と小さいかもしれません。だとどうしようもないです。
基板のAC特性以外ですと、DDR終端はどうなんですかね。
やりかたはそれぞれですが、私なら、ODT使用を前提にしても、全信号で直列終端、ODT無効信号はREF電圧終端はします。
DDR終端って公開されているのですか、SUZAKU-HPでは見つけられませんでした。
  1. 2008/03/01(土) 22:02:05 |
  2. URL |
  3. NSX #-
  4. [ 編集 ]

marseeさん、お邪魔します。
うーん、DDR400ですかー。クロックとの同期が厳しいですからねー。
ちなみに、AlteraではDDR300以上はDQS信号を使って同期を取れ
ってことになっているようです。
http://www.altera.co.jp/literature/an/an327_j.pdf
(10~14ページ)
ネコメですり合わせるのは、難しいと思いますよ。何せ、基板上を
行って帰って、といった遅延が常に安定している必要がありますし。
  1. 2008/03/01(土) 22:32:18 |
  2. URL |
  3. くり #BVEqsAzE
  4. [ 編集 ]

皆さん、コメントありがとうございます。

NSXさん
Suzaku-Vの回路図は公開されていません。手探り状態です。DDR2 SDRAMは2つありますが、1つずつ別に配線されていますので、ODTは必要ないと認識しています。
アットマークテクノの方と展示会でお話させていただいたのですが、回路図は出せない。ODTは使っていない。DDR2コントローラはXilinxの物(MIGだと思います)を使っている。400ではなく、もう少し低い周波数で動作させている。というお話でした。
そういうわけで、動作周波数を下げたらどうかな?と思っています。

くりさん
そうですか、やはりソース同期でないと難しいですかね?
クロックのジッタを除くとリードは帰りだけだと思っていますが、揺らぐかもしれませんね。
とりあえず、クロックを落として様子を見てみようと思います。
  1. 2008/03/02(日) 07:57:39 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

>ODTは必要ないと認識
ODTの使用は回路によって決定しますよね。1対1であっても。つまりODT使用前提終端だとODTは使用しなければならないみたいな。
ちなみに基板写真貼りませんか(基板の裏表)

>揺らぐかもしれませんね
揺らぎに限定すると200ps程度にはおさまりませんか。可能でしょう。ただしその基板専用のタップ数値になってしまいますが。でもIDELAY使っているのですね。ならDQSを入れた方がよりいいと思いますが。たぶん徐々にやっていく作戦でしょうか。
  1. 2008/03/02(日) 11:48:10 |
  2. URL |
  3. NSX #-
  4. [ 編集 ]

アットマークテクノの方はODT使っていないといっていましたので、終端抵抗は入っているんだと思っていました。一度入れてやってみます。

面倒だということです。リード用の入力データのイネーブルをどうするかが難しいと思っています。データをシフトして内部クロックで採れば楽チンということです。
もともとDDRは趣味ですので、これで取れるところまでかな?と思っています。
  1. 2008/03/02(日) 18:31:18 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

こんばんは

marseeさん、初めまして。

XilinxのMIGだとODTは使えないor使っていなかったような気がします。
#データのリードの際FPGAのODT機能がまともに使えないor消費電力が尋常じゃなくなる、のどちらかの理由で使えなかったかも。

また自作DDR2 SDRAM I/FだとVirtex4では333、Virtex5では400あたり、MIG2.0系列ならデータのラッチ周りを改善したとのことなのでVirtex4では400,Virtex5では533あたりが限界ではないかと思っています。

どちらにしてもリードの際はIDELAYをキャリブレーションしてDelay量を確定させて内部クロックで打ち抜く。
これじゃないと難しいと思います。
  1. 2008/03/05(水) 00:11:57 |
  2. URL |
  3. watari #J/OPKEkg
  4. [ 編集 ]

watariさん、はじめまして。

情報ありがとうございます。
自動でIDELAYをキャリブレーションする機能をつけていないので、テストするのが面倒です。IDELAYを変更するたびごとに再度インプリメントしながらやっています。で、どうしても1回やるのにまとまった時間がかかります。
DCMを変更するだけならばFPGA Editorでできるのですが、IDELAYだと数が多いので。。。スクリプトを書けばよいんでしょうが。。。
自動キャリブレーション付に変更しようかな?とも考えています。
  1. 2008/03/05(水) 05:06:11 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

IDELAYですが、ユーザー回路から変更が可能なのでIDELAYを可変出来るような回路を書いてみると良いと思います。

実装方法は確かVirtex4やVirtex5のデバイスのデーターブックに書いてあったと思います。

実は同じようなところでハマっています。MIG2.0のキャリブレーションを移植して動作出来るかどうかやろうと思っています。

marseeさんのデータを見ていないので何とも言えませんが、こちらで発生している現象と似ているような気がします。

色々と書きたいのですがblogなので....クローズドなところって無いですかねぇ。
  1. 2008/03/05(水) 20:47:11 |
  2. URL |
  3. watari #-
  4. [ 編集 ]

watariさん、こんばんは。

可変モードのIDELAYの使い方は大体わかっているつもりです。
http://marsee101.blog19.fc2.com/blog-entry-246.html
こんな感じですね?
MIGは確か、複数のパターンをWRITEしてから、IDELAYを可変しながら読むという感じですよね?以前DQSをDCMの位相を可変しながら読んだことがあります。
http://marsee101.blog19.fc2.com/blog-entry-37.html
とりあえず、これでやってみても良いかな?と思っています。
いまのところ、忙しいのでなかなかできないんですけど。。。
今のところ、クロックの1/4ずれたところで内部クロックでとろうと思っていましたが、クロック周期に対してだいぶ遅れているので、3/4で取り直そうと思っています。

watariさんもDDR2コントローラを作っていらっしゃるのでしょうか?
もう少しクローズドのところとしてはYahooグループにFPGAの部屋がありますが、誰でも入室OKなので、だめかもしれないですね?
  1. 2008/03/05(水) 22:50:51 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

IDELAYですがmarseeさんの認識であっていると思います。

DQSをDCMの位相可変で使えましたか?
DQSのPreamble期間(1T)からすぐにDCMってロック出来るのでしょうか?(純粋な疑問です)
Read/WriteではDQSの位相が違いますし、Hi-Z期間があるので、もし出来るとしたら(私の認識では)意外です。

ええ、DDR2 SDRAMコントローラをデザインしました。
RTLはコーディング・デバッグ完了済みで、後はFPGAへの実装のみなのですが、(後輩と供にやっているのですが)イマイチ上手くいっていません。

詳しい話したいんですけどねぇ....YahooのFPGAの部屋は登録しておきました。

  1. 2008/03/06(木) 22:24:23 |
  2. URL |
  3. watari #-
  4. [ 編集 ]

これはリードコマンドの連続発行で発生したDQSを受けながらDCMで位相シフトしていって、変化点を求めて、それを元に位相量を自動的に調整しました。でも133MHzでは動作しませんでしたね。

一旦インプリしたらFPGA Editorで中を見てみることをお勧めします。
DDR2は趣味およびVirtex4の勉強のためなので、仕事優先といいますか、そのようになっています。あまり詳しくお返事する時間は取れない可能性があります。
もし上記の様な状況でも良いのでしたら、グループに載っているYahooのメールアドレスにメールください。
  1. 2008/03/07(金) 05:05:01 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

コメントの投稿


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

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