SinglePortBlockRAMの作り方 †
から
を選択し、
をダブルクリック。 御所望のメモリを作成し、Generateを押す。 後は作成するモジュール内で、 b_ram blockram( .clk( clk), .addr( address), .dout( dataOut)); †というようにモジュール宣言をすればOK. シミュレーションの方法 †作成したIPには glbl というモジュールが含まれているため、作成したIPの.vファイルでglblを検索。 synopsys translate_off から synopsys translate_onの間をコメントアウトする。 実際のシミュレーション時のコマンドは ncverilog +ncaccess+rw -y [ライブラリのPATH] +libext+.v [テストベクトル] [作成したモジュール] †これを一々手書きで行うのは大変なので、Makefile などに記述しておくとよい。 なお、ライブラリには以下のようなものがある。 使用しているversionによって、パスは微妙に異なります!! †また最初の数クロックはBlockRAMの挙動が怪しいので適当なクロック数分は何も行わないことが好ましい。 ROMの初期値設定の仕方 †1.coregenを起動 2.tool -> memory editor を選択 3.Add Block を選び適当な名前をつける 4.memoryの深さとData Width を決定. 5.あとはごにょごにょやってください。多分わかるはずです(お 6.File -> Generate -> COEにチェックを入れて OK。 7.これで出来たファイルをメモリ生成時に選択タブがあるので選んでおく。 8.生成する。 9.なれてくると、.coeファイルを自分でいじくってcoregenのバッチモードから再生成を行うようになる。 10.(発展課題)bitファイルに直接メモリの値を書き込むdata2memというコマンドがある。この使い方を調べよ。 11.(発展課題)このwikiに書いて手法を確立せよ。嘘です。僕が知らないだけですごめんなさい、、 |