FPGAの部屋FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。SDRAMコントローラだが、だいぶデバックが進んできた。DQSもDQも正常な動作になって、書き込みも読みだしもできるようになった。下がVeritakでのシミュレーション波形。3.65Aを使用している。いつもBasic版も最新の版を用意していただいて感謝しています。いつも、シミュレーションをする場合には、最新のVeritakをダウンロードして使うようにしている。SDRAMへのWrite波形だ。緑の四角でバンクのACTIVATEコマンドを発行してバンクをアクティブにして、3つのピンクの四角でWRITEコマンドを発行して書き込みをしている。ddr2_dqsが書き込みのクロックで、ddr2_dqs_nがその反転信号。ddr2_dqがデータだ。SDRAMはプリフェッチ4、つまり、1つのWRITEコマンドで4つのデータを書き込む。3つのWRITEコマンドがあるので、12個のデータがバースト(連続的に)で書き込まれる。ddr2_webはコマンドを表す信号でアクティブローだ。"011"だとACTIVATEコマンド、"100"だとWRITEコマンド、"101"だとREADコマンドになる。その他、リフレッシュコマンドやプリチャージコマンドもあるが省略。一応正常に動作している。SDRAMコントローラがドライブしている。このデータをREADしたのが下の波形。同様に、緑の四角でバンクのACTIVATEコマンドを発行してバンクをアクティブにして、3つのピンクの四角でREADコマンドを発行して読み出しをしている。ddr2_dqs_nにクロックが出力されている。READの場合のクロックはデータと位相が一致している。上のシミュレーション波形では次のプリチャージコマンド(黄色の四角)と次のバンクをアクティブにするためのACTIVATEコマンド(赤の四角)が見えている。SDRAMがドライブしている。SDRAMコントローラは1つのバンクのみアクティベートする仕様にしている。4つのバンクをアクティベートする方法のほうがACTIVEコマンドを発行する頻度が下がって性能が上がるが、管理するバンクが増えるので、回路が複雑になる。これは今後の課題とする。SDRAMコントローラは完成したわけではなく、まだまだ途中だ。バイトレーンごとに書き込むためのddr2_dmがまだうまく動いていない。全体のチューニングもまだ。Kit用にカスタマイズする必要がある。SDRAMコントローラだが、今回テスト出来きるまで作り上げることにした。土日でddr2_sdram_cont.vのトップから階層を構築することができて、シミュレーションでコンパイルエラーを修正して、シミュレーションができるところまで持って行った。sd_loop_outなどの新たな信号があるので、その処理を追加した。現在はこの辺までできたが、内部の信号のタイミングは精査していないので、まだいい加減だ。形になるのを優先した。SDRAMコントローラのサンプルは、Spartan3E用のもあるし、DDR2のSuzaku-V用のもある。Suzaku-V用はOSERDESやISERDESを使用しているので、大幅な改造が必要だ。Spartan3E用はIOは似ているのだが、DDR用だ。いうことで、両方を合わせて、でっち上げているので、タイミングがまだおかしい。(ただし、IO部分は前回まで作ってきたIOモジュールを使った新設計)下が現在のシミュレーション波形。ddr2_dqやddr2_dqsのタイミングが2クロックほど前に来ている(ピンクの丸と矢印)。ddr2_dqのデータが出ていない(緑の四角)。分かっているだけで、これらの問題がある。これから修正していくつもりだ。SDRAMコントローラであやしい部分があったので、後でUCFを追加してもう一度確かめてみようと思う。コメント:0«プロフィールAuthor:marseeFPGAの部屋へようこそ!FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。WEBブログデザイナ。