今までやってきたVerilog2001版DDR SDRAMコントローラーのModelSimシミュレーションのまとめだ。
今回はModelSim XE� 6.1e StarterのVerilog版でやることにする。今回はModelSimのプロジェクトを作ってみようと思う。
まずは
ここからVerilogファイルを興味のある方はダウンロードしてください。
2006/02/11: mixiの方から違うシミュレーターで動作しないというご指摘を受けたので一時公開を中止します。検証してから、もう一度公開したいと思います。何しろVerilog初心者なものですから申し訳ありません。2006/02/12: 修正して再度Verilogファイルをアップしました。for(;;)ループに使う i などの変数をローカル変数にしました。generateのgenvarをそれぞれにユニークな変数にしました。2006/02/13: wrdata_fifo.v のgenerate 文の genvar を修正するのを忘れていたので修正しました。例によって保証はありません。プロジェクトやファイルは個人的に実験するのみで、商用に使用することや再配布は禁止します。DDR SDRAMコントローラを部品として組み込んで使う場合には何の一部として使ったかコメントで教えてください。ダウンロードして試してみた方も動いたどうかコメントで教えてください。XilinxのアプリケーションノートXAPP253を参考に作ってありますが、自分で書き換えてあります。更にVerilog2001に変更してあります。今回はcontroller.vも公開しました。
何かファイルを公開する上での問題がありましたらabcd_marsee101@mail.goo.ne.jp から adcd_ を除いたメールアドレスに、ご連絡ください。早急に対処いたします。 ZIPファイルを解凍すると DDRtest_verilog フォルダがあると思う。その中に simulation フォルダがある。このフォルダでシミュレーションをしてみよう。
まずはPicoBlazeをダウンロードしよう。Spartan3用(Spartan3Eも大丈夫のようだ)のPicoBlazeは
このページからたどってダウンロードする。
もしリンクがない場合はXilinx社のページでPicoBlazeのキーワードでサーチすれば見つかるはずだ。
詳しい入手方法は
FPGA Laboratoryさんの
PicoBlazeTMの入手法などを参考にしてほしい。
ダウンロードしてきたKCPSM3.zipを展開してVerilogフォルダの中のkcpsm3.vファイルをDDRtest_verilogフォルダの下にコピーする。今回はinstrom.vはアセンブル済みのものがダウンロードしたDDRtest_verilog_??????.zipに入っている。
アセンブラのファイルinstrom.psmも入っているのでPicoBlazeのアセンブラでアセンブルすることも出来る。詳しいことは
FPGA Laboratoryさんの
PicoBlaze�の使用法(出力編)や
スパルタン3EスターターキットのLCD表示回路5などに書いてある。
次に
512Mb DDR SDRAM Component : MT46V32M16P-6TのVerilogモデルをダウンロードする。
ダウンロードした 512Mb_ddr.zip の中の ddr.v と ddr_parameters.vh を DDRtest_verilog\\simulation の下に入れる。
ここでスピードグレード6とデータビット幅16bitを指定するために ddr.v をちょっと変えてみた。

上のように
`define sg6
`define x16
を書き込む。
最後に
Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーション2に書いてあるようにISE (or Webpack) のインストールフォルダ/verilog/src/glbl.v を DDRtest_verilog フォルダの下にコピーする。

これで準備は終了したので、まずはModelSimのプロジェクトを作ろう。
まずは ModelSim XE� 6.1e Starter を起動する。起動したらFileメニュー -> New -> Project...を選ぶ。

現在のプロジェクト閉じるけど、続けますか?というダイアログが出るのでOKボタンをクリック。

Create Projectダイアログが出る。Project Nameの項にDDRtest_verilogと入力する。
Project LocationのBrowse...ボタンをクリックすると、Browse to directory home for new... ダイアログが開くのでDDRtest_verilog\simulationを指定し、OK ボタンをクリック。次に、Default Library Nameをディフォルトのworkのままで OK ボタンをクリックする。

ここでAdd items to the Projectダイアログが出るので、Verilogファイルを追加しよう。まずはDDR SDRAMモデルとテストベンチを追加する。 Add Existing File をクリックする。

Add file to Project ダイアログが出る。Browse... ボタンをクリックする。

Select files to add to porjectダイアログが開くので"DDRtest_tb.v" "ddr.v" を選択して、”開く"ボタンをクリック。

Add file to Project ダイアログが再び出て来るので OK ボタンをクリック。

"DDRtest_tb.v" "ddr.v" がプロジェクトに入ってWorkspaceペインに表示される。

同様に Add items to the Project ダイアログの Add Existing File をクリックして DDRtest_verilog フォルダの下の.vファイルを全てプロジェクトに入れる。(LCD表示回路、PicoBlaze、ロータリーエンコーダー制御回路など)

もう一度、 Add items to the Project ダイアログの Add Existing File をクリックして DDRtest_verilog\ddr_controller フォルダの下の.vファイルを全てプロジェクトに入れる。(DDR SDRAMコントローラのVerilogファイル)

更に、Add items to the Project ダイアログの Add Existing File をクリックして DDRtest_verilog\DDRtest_synth フォルダの下の dcm100.v ファイルをプロジェクトに入れる。

Add items to the Project ダイアログの close ボタンをクリックして閉じる。
Workspaceペインで右クリックして Compile -> Compile All を実行して、全てのVerilogファイルをコンパイルする。

全部のVerilogファイルをコンパイルして、全て成功するはず。

今日はこの辺で終了。