FC2カウンター FPGAの部屋 DQの最適な遅延値を測定するDDR2 SDRAMコントローラのインプリメント2
FC2ブログ

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

FPGAの部屋

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

DQの最適な遅延値を測定するDDR2 SDRAMコントローラのインプリメント2

”DQの最適な遅延値を測定するDDR2 SDRAMコントローラのインプリメント”でリセットSWを追加して、初期化時の遅延値を調整するフェーズをChipscopeで観測することにした。
遅延値を最適な位置に設定する方法については、”DQの最適な遅延値を測定するDDR2 SDRAMコントローラのシミュレーション”を見てほしい。
そこで、”2.DQのIDELAY値を0から63まで変化させてイニシャル・データをリードする。”の位置をChipscopeで観測してみた。
その結果が下図である。
DDR2_SDRAM_auto_adj_init_1_080525.png

上から二番目のcas_node_1dが0のときに、DDR2 SDRAMにリードコマンドが発行される(Oカーソルの位置)ので、CASレイテンシ3クロックの後にデータが出てくる(Xカーソルの位置)はずだ。下から3番目のidelay_ceが遅延値をインクリメントする信号である。(idelay_incが遅延値を増加させるか減少させるかを決める信号)
これを見るとリードコマンドと遅延値をインクリメントする信号が重なり合っているので、もっと間をあけてみた。これが下図である。
DDR2_SDRAM_auto_adj_init_2_080525.png

今度はだいぶ idelay_ce (Oカーソルの位置)とリードコマンドが離れた。これでタイミング的にはだいぶ余裕があるはずだが、リードデータ (dq_rise_1d と dq_fall_1d、Xカーソルの位置)は正しい値ではない。
やはり、おかしい。DDR2 SDRAMの出力波形が悪いのか? それともそもそもDDR2 SDRAMにライトできていないのか? 
動作周波数を下げてやってみようと思ったが、何気なく前のDDR2 SDRAMの初期化手順を見てみると、DDR2 のDLLリセットから、最初のアクティベート・コマンドを入れるまでの間隔が短いのに気がついた。規格では、200クロック以上だが、最初のアクティベート・コマンドが入力されるまで52クロックしかない。(下図参照)
DDR2_SDRAM_auto_adj_init_3_080525.png

シミュレーションでは、どうなっているかというと1,280ns 間がある。1クロックは、200MHzなので、周期は5ns だ。それで1,280ns を割ると256クロックということになる。
DDR2_SDRAM_auto_adj_init_4_080525.png

実際にはDCMのclkdv出力を16分周に設定して16カウントしている。従って、clkdv出力がおかしくなっているのかもしれない。
調査が必要のようだ。clkdvをChipscopeでサンプルして確認してみるか、実際にポートに出してオシロで見てみようと思う。

#しかし、本当にパソコンが遅い。効率が全く上がらない。早く買わねば。。。
  1. 2008年05月26日 17:32 |
  2. DDR SDRAMコントローラ
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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