FC2ブログ

data2memでMico32のプログラムを書き換えたい(3)

今日ついさっきやったMico32データ用プログラムのdata2mem成功に続き、命令用も成功。
参考にやった事を書いておく。(データ用でも同じ事やるんだけど、なんとなく情報追加)

○RAMB36の初期値Verilogファイル(命令用)
defparam RAMB36_0.INIT_00 = 256'h00000000000000000000000000000000000000000000000000000000e0000040;
defparam RAMB36_0.INIT_01 = 256'h00000000000000000000000000000000000000000000000000000000e000006d;
defparam RAMB36_0.INIT_02 = 256'h00000000000000000000000000000000000000000000000000000000e0000061;
defparam RAMB36_0.INIT_03 = 256'h00000000000000000000000000000000000000000000000000000000e0000059;
defparam RAMB36_0.INIT_04 = 256'h00000000000000000000000000000000000000000000000000000000e0000051;
defparam RAMB36_0.INIT_05 = 256'h00000000000000000000000000000000000000000000000000000000e0000049;
defparam RAMB36_0.INIT_06 = 256'h00000000000000000000000000000000000000000000000000000000e0000041;
defparam RAMB36_0.INIT_07 = 256'h00000000000000000000000000000000000000000000000000000000e0000039;
defparam RAMB36_0.INIT_08 = 256'h5b8400105b83000c5b8200085b810004379cffc8e00001413b9c1ffc781c2000;
      :

○上記RAMB36初期値Verilogファイルからmemファイルへ変換(Rubyで記述)
#----------------------------------------------------------------------
# file : conv_ver2mem_ramb36_v100.rb
# func : change verilog initial memory map to mem description for data2mem.
# cmd : ruby conv_ver2mem_ramb36_v100.rb
#----------------------------------------------------------------------

ram_ini = ARGV
ofile_name = ram_ini.to_s + ".mem"

ifile = File::open(ram_ini.to_s, "r")
ofile = File::open(ofile_name, "w")

ofile.print "@0\n"

ifile.each do |line|
temp_a = line.split(/.* 256.h|;\n/)
$dat = temp_a[1]

while $dat.size > 0
# 文字列一番左=0、一番右=-1。 → -8~-1まで=右端の8文字分の意味。
ofile.print $dat.slice!(-8..-1), "\n"
end
end

ifile.close
ofile.close

○上記Rubyで生成したmemファイル
@0
e0000040
00000000
00000000
00000000
00000000
00000000
00000000
00000000
e000006d
00000000
  :

○命令用bmm
ADDRESS_SPACE mico32inst RAMB32 INDEX_ADDRESSING [0x00000000:0x000003ff]
BUS_BLOCK
mico32_vga_1/mico32/inst_rom32_core/RAMB36_0 [31:0] PLACED=X0Y5;
END_BUS_BLOCK;
END_ADDRESS_SPACE;

コマンドなんかはさっきと同じで、命令用の方も成功。なんか良くわからんうちに成功したって感じ。
こんな感じの実験、過去もやったような記憶あるけど、その時はなんか混乱してたのかな。
でも実は、data2mem自体は成功したようだが、このRAMB36では実機で動いてません。
RAMB16_S9からRAMB36へ手修正で回路直した時、なんかバグがあるみたい。
これからVerilogシミュレーションせねば。
スポンサーサイト



コメントの投稿

非公開コメント

カレンダー
01 | 2020/02 | 03
- - - - - - 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
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

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

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

この人とブロともになる

QRコード
QRコード