#format md #acl +All:read # Core GeneratorでのROMの作成から利用までの手順 おそらくfaddのテストのときに必須になると思うので、メモ書き程度に。 ###ROMの作成 1. ISEを起動 2. "Project"から、新たなプロジェクトを作っておく(最終的に基盤に焼くことになるプロジェクトになります) 3. "Sourceの"中の、"New Source"を選択 4. ずらっと一覧が出てくるので、"IP (CORE Generator & Architecture Wizard)"を選択 5. 右のほうの"File name"に好きな名前を入力 6. またしてもずらっと一覧が出てくるので"Memories & Storage Elements/RAMs & ROMs/Block Memory Generator"を選択 7. Summaryは無視して"Finish" 8. 少し待つと新しいウィンドウが出てくるので、そのウィンドウの2ページ目に進む 9. "Memory Type"で、自分が使うタイプを選択。(入力オペランドごとにROMを作るなら"Single Port ROM"でOK) 10. 3ページ目に進む 11. "Read Width"に、格納したいデータのbit数を指定(今回は32bitでOK) 12. "Read Depth"に、格納したいデータの数を指定(数字が赤く表示されたら、Block RAMが不足してたりなんなりで、作成不能ってことを意味します) 13. 4ページ目に進む 14. "Memory Initialization"の中の、"Load Init File"で、ROMの初期化情報を書いた.coeファイル(後述)を指定(こちらも、12番目同様、赤文字の時には何かしらのエラーのせいで作成不能を意味します) 15. (5,6ページ目は変更しなくて大丈夫なので)"Generate" 16. 後はほうっておくだけで完成 少しverが違うようだけど、[ここ](http://www.hirokinakaharaoboe.net/pdf/spartan3E_3A_tutorial_9.pdf)を参考にしました ###.coeファイルについて 説明面倒なので[ここ](http://blog.goo.ne.jp/sim00/e/8d5748c7cc1d04228f2e67a6ad2e0ff7)を参照しましょう。このサイトで16ってところを2にすれば、当然ながら2進数表記のデータを格納できます。 fadd.cの出力をリダイレクトして作りましょう。 ###ROMの利用 以下では、Core GeneratorでROMを作る際に指定した名前を"foo"、プロジェクト名を"bar"とします。 1. ISEのプロジェクトファイルの置き場にある、"bar"のディレクトリに入ります 2. その中の、"ipcore_dir"に入ります 3. "foo.vho"ファイルを開きます 4. その中ほどにあるcomponent宣言をコピペで自分のファイルに書き足します 5. その中ほどにあるinstance宣言をコピペで自分のファイルに書き足します("your_instance_name"は適宜書き換えましょう) 6. あとは自分の好みのようにport mapして使うだけです ただし、このROMは、"addra"にアドレスを入れた次のクロックでデータを"douta"に吐き出すので、そこだけは注意が必要です。 ###Core Generatorの吐いたデータを使ったシミュレーションについて 一応、Modelsimでもシミュレーションはできるようです。ソースは[こちら](http://www.paltek.co.jp/mentorkh/04/PALTEK-4-ModelSim_compile.pdf)。 ただ、正直言って面倒くさいので、ISEに付属しているISimを使うほうが手軽です。Xilinxのライブラリをコンパイルしたりの手間が省けます。(あと、こっちのシミュレータのほうが個人的には好き) ※シミュレーションしたいプロジェクトを開いていることは前提条件 1. 左上の"Hierarchy"のすぐ上のラジオボタンが、きっと"Implementation"になっていると思うので、"Simlation"に変更 2. Hierarchyの最上位のファイル(たぶんtopにしてる人が多いと思う)を選択した上で、後は左下の中からISimを起動 3. あとはModelsimと似た感じのUIなので省略 ---- [[ReadingCategory]] [[HWExprClassCategory]]