FC2カウンター FPGAの部屋 Spratan3E Starter KitのDDR SDRAMコントローラまとめ2
fc2ブログ

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

FPGAの部屋

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

Spratan3E Starter KitのDDR SDRAMコントローラまとめ2

今度はDDR SDRAMの論理シミュレーションから動作を説明しようと思う。
DDR SDRAMの初期化はエルピーダ社のユーザーズマニュアル、DDR SDRAMの使い方の初期化を参考に作った。下の図で言うとピンクの四角で囲まれた部分だ。ここでバースト長を2、バースト・シーケンスをシーケンシャル・タイプ、CASレイテンシを2にモードレジスタを設定している。
DDRtest_sim_ALL_060703.png

白い四角で囲んだ部分がリフレッシュ・コマンドで、7.8usごとに出力している。
黄色で囲んだ部分がデータのライト、赤で囲んだ部分がデータのリード、青で囲んだ部分がプリチャージ・コマンドとリフレッシュ・コマンドだ。ちなみにライト・コマンドもリード・コマンドもプリチャージなしである。
次にライト・コマンドの様子を詳しく見てみよう。下図はその様子だ。
DDRtest_sim_ACT_WR_060703.png

ddr_cke=1, ddr_csb=0, ddr_casb=1, ddr_web=1の時にddr_rasb=0にするとACTコマンドで指定されたバンクをライト・コマンドやリード・コマンドで読み書きすることが出来る。このときにddr_ba(バンクアドレス)とddr_address(行アドレス)にはメモリのアドレスをFPGAがドライブする。
(オール0)
次に1クロック、ウエイトしてddr_casbとddr_webを0にするとライト・コマンドになる。その時にFPGAはddr_addressに列アドレスをドライブする。それと同時にといってもコマンドは半クロックずれているが、データをドライブする。データをドライブしてから1/4クロック後にDQSを立ち上げる。(データとDQSはFPGA側とSDRAM側に分かれていて遅延をくわえてある)
今度はリード・コマンドを簡単に説明する。下の図を見てほしい。
DDRtest_sim_RD_060703.png

ddr_cke=1, ddr_csb=0, ddr_rasb=1, ddr_web=1の時にddr_casbだけを0にするとリード・コマンドになる。ライト・コマンドと一緒でFPGAはddr_addressに列アドレスをドライブする。そうするとSDRAMはCASレイテンシ後にデータを出力する。FPGAのIFD_DELAYと配線遅延でデータを遅延するが、現在はIFD_DELAY_VALUEをUCFに記述しているためシミュレーションのソースの方で遅延させている。それがddr_dq_fpgaである。そのデータをサンプルしてリードしている。
これでライトやリードは終了だが、バンクをアクティブにしてあるので、リフレッシュする場合はプリチャージしてからリフレッシュしている。それが一番上の図の青で囲まれた部分だ。
  1. 2006年07月03日 18:19 |
  2. Spartan3E Starter Kit
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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