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が違うようだけど、ここを参考にしました

.coeファイルについて

説明面倒なのでここを参照しましょう。このサイトで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でもシミュレーションはできるようです。ソースはこちら。 ただ、正直言って面倒くさいので、ISEに付属しているISimを使うほうが手軽です。Xilinxのライブラリをコンパイルしたりの手間が省けます。(あと、こっちのシミュレータのほうが個人的には好き)

※シミュレーションしたいプロジェクトを開いていることは前提条件

  1. 左上の"Hierarchy"のすぐ上のラジオボタンが、きっと"Implementation"になっていると思うので、"Simlation"に変更
  2. Hierarchyの最上位のファイル(たぶんtopにしてる人が多いと思う)を選択した上で、後は左下の中からISimを起動
  3. あとはModelsimと似た感じのUIなので省略

ReadingCategory HWExprClassCategory

taka/Core GeneratorでのROM作成手順 (last edited 2013-06-09 19:05:41 by taka)