FPGAの部屋

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ご利用ください。 http://marsee101.web.fc2.com/index.html

The Simple MicroBlaze Microcontroller 6(シミュレーション)”で”SMMの問題点はシミュレーションができないことだと思う。実機デバックはできるが、シミュレーションは出来ない。”と書いたが、ひでみさんのブログや”AQUAXIS TECHNOLOGY”を見ていたら、ヒントがあったので、自分でやってみた。

The Simple MicroBlaze Microcontroller 6(シミュレーション)”のシミュレーション環境を使って、もう一度やり直してみた。

1.Simple_MicroBlaze_xapp1141\SMM_Ref\S3A_LCD_Ref\Work フォルダにsimulationフォルダを作成した。
1958ce68.png


2.コマンドプロンプトを起動して、ISEのインストールフォルダ(Xilinx\13.1\ISE_DS)のsettings32.bat(64ビット版の方はsettings64.bat?)を実行して、環境関数をセットする。

3.Simple_MicroBlaze_xapp1141\SMM_Ref\S3A_LCD_Ref\simulationに移動する。

4.まずは、NetGenコマンドでsmm.ngc をVerilogファイルに変換する。コマンドプロンプトで

%XILINX%\bin\nt\netgen -sim -ofmt verilog -mhf -w ..\ise\smm.ngc


を実行する。
f24b2105.png


5.smm.v、lmb_bram_wrapper_sim.v、lmb_bram_elaborate_sim.vが生成された。Verilogで書かれたネットリストだ。
918fef29.png


6.次にData2MEMで命令ROM用の初期化データ、つまりソフトウェアが入った初期化データを生成する。コマンドプロンプトで

%XILINX%\bin\nt\data2mem -bm ..\ise\smm_bd.bmm -bd ..\sdk\empty_application_0\Debug\empty_application_0.elf -bx ./


を実行する。”-bx”オプションを付けるとmemファイルが生成される。
0fd615ee.png


7.4つのmemファイルが生成された。そのうちのlmb_bram_combined_0.mem の一部を下に示す。このファイルは、lmb_bram_elaborate_sim.v のRAMB16BWEに書かれている

.INIT_FILE ( "lmb_bram_combined_0.mem" ),


に従って、RAMB16BWEプリミティブの初期化データとして読み込まれる。

@00000014
    31 30 30 B9 80 B9 30 B8 E0 30 BE F9 B8 E9 F8 99 80 E8 E8 BE 30 B0 30 BC 30 99 80 30 F0 E9 B6 30


8.次にISimのプロジェクトファイル (lcd_ref_tb.prj) を作る。プロジェクトに入るHDLソースファイルとしては、lcd_ref.vhd、SMM、lcd_ctlr.vhd、timer.vhdとテストベンチのlcd_red_tb.vhd、そして先ほど生成したVerilogソースファイルだ。
SMM_sim_2_110626.png

verilog work smm.v
verilog work lmb_bram_wrapper_sim.v
verilog work lmb_bram_elaborate_sim.v
verilog work lcd_test_rom_init.v
vhdl work ../src/timer.vhd
vhdl work ../src/lcd_ctlr.vhd
vhdl work ../src/lcd_ref.vhd
vhdl work ../Work/src/Simulation/lcd_ref_tb.vhd
verilog work glbl.v


9.fuseコマンドでコンパイルを行う。下にコマンドを示す。

%XILINX%\bin\nt\fuse work.lcd_ref_tb work.glbl -L unisims_ver=K:\HDL\Xilinx\13.1\ISE_DS\ISE\verilog\hdp\nt\unisims_ver -L unisim=K:\HDL\Xilinx\13.1\ISE_DS\ISE\vhdl\hdp\nt\unisim -o lcd_ref_tb.exe -prj lcd_ref_tb.prj


10.コンパイルが正常終了したら、出来上がったlcd_ref_tb.exeを-guiモードで起動する。

lcd_ref_tb.exe -gui


4b293f34.png


11.ISimが立ち上がる。適当に信号を入れてみてみると、動いているようだ。下にMicroBlazeのデコード部の波形を示す。openMSP430の様にアセンブラを表示したいと思った。
9be143c3.png


動いていると思う。タイマーとかがあるとシミュレーション時間も長くなるし、バスモデルだけのシミュレーションの方が良い場合も多いと思う。それをクリアしたら、SDKでソフトウェアの実機デバックをする。Spartan-6、Virtex-5、Virtex-6だと、一緒にChipscope Proも使用できるので、更にデバック効率が上がることだろうと思う。

#やっとSMMのシミュレーションが物になりました。結構、いろいろなマニュアルを読んだりして、大変だったが勉強になりました。

今日はFPGA-CAFEで、いえながさんのマルチインターバルタイマーリモコンのVer.2βを購入して、作ってきました。
このために、Pentax のコンパクトデジカメOptio S1を購入して持って行きましたが、動きませんでした。
急遽、リモコンを購入して、AVRマイコンを調整していただけることになりました。いえながさん、ありがとうございます。いつでも良いのでよろしくお願いします。
下がMITR Ver.2βです。とても良く出来ています。乾電池ホルダのの穴にボルトで基板を固定することができます。AVRマイコンは預かっていただきました。
db354ce9.jpg


1時間くらいで完成しました。基板が小さいので、基板を指で押さえながら作る必要がありましたが、部品点数もそんなに多くなく作り易かったです。
対応していないカメラがあったので、そのデバックが始まって、カメラリモコンパルスもオシロで観察できたし、ノウハウも聞けました。面白かったです。私もリモコンが来たら太陽電池に照射して波形を見てみようと思います。

皆さん、ありがとうございました。

ここのところ、木工では座卓を作っています。家では欲しい家具を作り尽くしてしまったので、妹から頼まれた座卓を作っています。
パイン合板をはいで天板を作り、今日足を付けました。
cb72566c.jpg


今、ウレタンニスで塗装をしています。2回目の裏です。1回目が乾いたら、250番の紙やすりでなく、250番のスポンジヤスリで表面を整えます。紙やすりでやると、すぐ目詰まりしますが、スポンジヤスリだと目詰まりしても叩けば飛ぶので便利です。
055da3e0.jpg


もう1回程度、3度塗りくらいすると完成です。

↑このページのトップヘ