FC2ブログ

[Verilog]メモリ初期値.mifから.ver生成される

アルテラへLattice Mico32インプリ中。

mico32の命令メモリにaltsyncramを呼び出して使っている。
初期値ファイルとして、ソフトコンパイル後の.mifを読み込ませる。
下の「.init_file = ""」のとこで読んでる。
altsyncramの資料見ると、読めるのは、.mifと.hexのみとのこと。

DESIGN WAVE MAGAZINE 2007年10月号の付録に、山際伸一さんが作った
プログラムmemcvtを使うと、ビルド後の.srecから、.v、.mif、.hexを生成してくれる。
有難い。

そんな訳で生成した.mifをaltsyncramへ読み込ませているが、ModelSimでSimすると、
.verファイルについて指摘された。
.verなんて作ってないぞ!と思ったら、これはModelSimが自動的に生成するのね。
そんな認識なかったので、とりあえずメモ。
これはModelSimだからなのか、Verilogで規定されてるのか不明だったので、
とりあえずVerilogカテゴリで記事書いた。

altsyncram ram_0 (
.address_a (AddressA )
, .clock0 (ClockA )
, .data_a (DataInA[7:0] )
, .wren_a (WrA )
, .q_a (QA[7:0] )
, .rden_a (1'b1)
, .rden_b (1'b1)
, .address_b (AddressB )
, .clock1 (1'b1 )
, .data_b (DataInB[7:0] )
, .wren_b (WrB )
, .q_b (QB[7:0] )
, .addressstall_a (1'b0 )
, .addressstall_b (1'b0 )
, .byteena_a (1'b1)
, .byteena_b (1'b1)
, .clocken0 (1'b1 )
, .clocken1 (1'b1 )
, .clocken2 (1'b1)
, .clocken3 (1'b1)
, .eccstatus ()
, .aclr0 ()
, .aclr1 ()
);
defparam
ram_0.clock_enable_input_a = "BYPASS",
ram_0.clock_enable_output_a = "BYPASS",
ram_0.init_file = "../../../../vm_share/lm32/soft/inst_ram_data.hex",
ram_0.intended_device_family = "Cyclone III",
ram_0.lpm_hint = "ENABLE_RUNTIME_MOD=NO",
ram_0.lpm_type = "altsyncram",
ram_0.maximum_depth = 512,
ram_0.numwords_a = 512,
ram_0.operation_mode = "SINGLE_PORT",
ram_0.outdata_aclr_a = "NONE",
ram_0.outdata_reg_a = "CLOCK0",
ram_0.power_up_uninitialized = "FALSE",
ram_0.ram_block_type = "M9K",
ram_0.read_during_write_mode_port_a = "NEW_DATA_NO_NBE_READ",
ram_0.widthad_a = 9,
ram_0.widthad_b = 9,
ram_0.width_a = 8,
ram_0.width_b = 8,
ram_0.width_byteena_a = 1,
ram_0.width_byteena_b = 1;

スポンサーサイト



カレンダー
05 | 2014/06 | 07
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード