FC2カウンター FPGAの部屋 2007年02月10日

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

FPGAの部屋

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

Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーションまとめ1

今までやってきた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 をちょっと変えてみた。
Verilog_simu_4_070209.png

上のように

`define sg6
`define x16


を書き込む。

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


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

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

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

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

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

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

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

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

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

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

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

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

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


今日はこの辺で終了。
  1. 2007年02月10日 21:58 |
  2. シミュレーション
  3. | トラックバック:0
  4. | コメント:0