FC2カウンター FPGAの部屋 Spratan3E Starter KitのDDR SDRAMコントローラ(プロジェクト)
FC2ブログ

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

FPGAの部屋

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

Spratan3E Starter KitのDDR SDRAMコントローラ(プロジェクト)

Spratan3E Starter KitのDDR SDRAMコントローラのプロジェクトをここにおいておくので、興味のある方は試してみてください。例によって保証はありません。プロジェクトやファイルは個人的に実験するのみで、商用に使用することや再配布は禁止します。DDR SDRAMコントローラを部品として組み込んで使う場合には何の一部として使ったかコメントで教えてください。
XilinxのアプリケーションノートXAPP253を参考に作ってありますが、自分で書き換えてあります。
DDR SDRAMコントローラの中のcontrollerはNGCファイルになっています。(とりあえず秘密!)
残念ながら論理シミュレーションは出来ません。simurationフォルダの中にはテストベンチ(DDRtest_tb.vhd)も入っていますがmt46v16m16.vhdというマイクロンのDDR SDRAMのモデルをダウンロードしないと使えません。でももうVHDLのモデルはないようです。
もう1つ足りないものはPicoBlaze本体です。これはいままで同様Xilinxからダウンロードしてください。そうしたらkcpsm3.vhdをAdd Sourceしてからインプリメントしてください。

しかし、NGCファイルをプロジェクトのルートディレクトリに入れておかなかったので、Translateでエラーが出てしまった。これはTranslateのプロパティでマクロの検索パスを指定していないためだった。だいぶ時間を無駄にしてしまった。こうやって覚えていくのだからしょうがないだろうけど。今度、IPを使う時には覚えておこう。

8.1i ISE - CORE Generator のマクロを使用すると「ERROR:NGDBuild:604 - Logical block 'xxxxx' with type 'xxxxx' is unexpanded」というエラー メッセージが表示され、変換ができない


TranslateのプロパティのMacro Search Pathに./ddr_controllerを設定してOKになった。

(2006年9月4日追記)
DDRtest_IP/simulationの下にms60d_lib_ddr_cont_controllerをおいた。これはddr_controllerの中でVHDLファイルがないcontroller.vhdのModelSim6.0dでコンパイルしたライブラリだ。これをModelSim6.0dでコンパイルする時にライブラリ登録するとシミュレーションが出来る。まだDDR SDRAMのモデルが必要だが、後で暇になったら書いてみようかな?
  1. 2006年07月06日 20:39 |
  2. Spartan3E Starter Kit
  3. | トラックバック:0
  4. | コメント:10

コメント

こんにちは。合成して動作するところまでは試してみました。とりあえずは動作確認のご報告まで。
  1. 2006/07/12(水) 07:41:43 |
  2. URL |
  3. Sim #mQop/nM.
  4. [ 編集 ]

動作確認ありがとうございます。
私のところの基板以外でも動作するというのがわかって安心しました。
  1. 2006/07/12(水) 08:36:03 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

DDR SDRAMのアクセス

こんにちは。rodanといいます。
DDR SDRAM コントローラーを使わさせて頂いています。

そのまま合成してStartar Kitに落としての動作はしました。
それで、ddr_sdram_cont以下を自分が組んでいるソースに組み込んで動かそうとしたら、下記のようなエラーがインプリメンテーションで発生しました。すみませんが、どう対処すればいいかわかったら教えて下さい。

ERROR:NgdBuild:604 - logical block 'ddr_sdram_cont_inst/controller_inst' with type 'controller' could not be resolved. A pin name misspelling can cause this, a missing edif or ngc file, or the misspelling of a type name. Symbol
'controller' is not supported in target 'spartan3e'.
  1. 2006/07/18(火) 18:36:53 |
  2. URL |
  3. rodan #-
  4. [ 編集 ]

こんにちは。
何にDDR SDRAMコントローラを使うか教えてください。

エラーのほうはブログをよく読んでもらえばわかると思いますが、TranslateのプロパティのMacro Search Pathにcontroller.ngcのあるディレクトリのパスを追加してください。
  1. 2006/07/18(火) 21:25:21 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

そうですね。ちゃんと書いてありますね。エラーは出なくなりました。
ありがとうございました。

DDRは映像のフレームバッファとして使えないかと思って実験しようとしています。
進展したらまた報告します。それとまたわからないことを質問するかと
思いますがよろしくお願いします。
  1. 2006/07/19(水) 07:51:34 |
  2. URL |
  3. rodan #-
  4. [ 編集 ]

了解しました。
同じようなことを私も考えています。今のところ気力がわきませんが。。。
良かったら進展したら教えてください。
アドレスを連続して投入したときのバーストについてはデバックしていませんので、バグが出る可能性が大です。
Chipscopeを持っているのでしたらバグの場合のVCDファイルを送っていただければ可能な限りデバックします。
  1. 2006/07/19(水) 09:00:07 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

アドレスを1回1回設定して読み書き(16ビットx2アドレス)はできるようになったので、バーストを試してみようと思います。8アドレス連続アクセスはどのようにすればいいのdしょうか?
  1. 2006/08/06(日) 20:56:58 |
  2. URL |
  3. rodan #-
  4. [ 編集 ]

http://marsee101.blog19.fc2.com/blog-entry-261.html
を見て連続してコマンドを入れてみてください。
  1. 2006/08/06(日) 21:39:01 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

私だけかなあ。

Macro Search Pathにcontroller.ngcのあるディレクトリのパスを追加しても、同じERROR:NgdBuild:604 - logical blockが出てしまう。(涙)
  1. 2008/06/04(水) 15:15:32 |
  2. URL |
  3. shouichi #-
  4. [ 編集 ]

shiouichiさん、こんにちは。

ISE81iでないとだめかもです?
VHDL版はバグが治っていないので、Verilog版をお使いください。
http://marsee101.blog19.fc2.com/blog-entry-413.html
  1. 2008/06/04(水) 16:35:09 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

コメントの投稿


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

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