FC2カウンター FPGAの部屋 2010年12月18日
FC2ブログ

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

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

The Simple MicroBlaze Microcontroller 13 (16KB RAMのSMMでもう一度)

The Simple MicroBlaze Microcontroller 12 (XPSでSMMをカスタマイズ)”でRAMを16KBに拡張したはずなので、生成したsmm.ngcとsmm.bmmをISE12.3のプロジェクトに入れてインプリメントし、SDKでコンパイルしてみた。

前回のプロジェクトにsmm.ngcとsmm_sutb.bmmからリネームしたsmm.bmmを入れて、もう一度インプリメントした。すると、Translateでエラー発生。よく見たら、bmmファイルのインスタンスパスが違っていた。一階層深くなっているので、bmmファイルを編集して、lcd_rot_cont_inst/ を追加した(前回同じことをやっていたのに懲りない。smm.ngcを置く階層に応じてsmm.bmmファイル階層表示を書き換える必要がある)。
こうしたらインプリメントが通った。FPGA Editorで見ても、SMMのRAMのインスタンスは8個あった。

次に、sdk3フォルダを新規に作成して、smm.xmlを置く。”The Simple MicroBlaze Microcontroller 4(リファレンスデザイン2)”の手順でSDKの設定をした。lcd_rot_cont.c をSDKのsrc フォルダにドラック&ドロップする。ビルドが始まり正常終了した。やったー。。。0x23c8番地まで使っているようなので、やはり8KBでは足りなかったようだ。下にビルド・メッセージを示す。

**** Build of configuration Debug for project empty_application_0 ****

make all 
Building file: ../src/lcd_rot_cont.c
Invoking: MicroBlaze gcc compiler
mb-gcc -Wall -O0 -g3 -c -fmessage-length=0 -I../../empty_application_bsp_0/microblaze_0/include -mcpu=v7.30.a -mno-xl-soft-mul -MMD -MP -MF"src/lcd_rot_cont.d" -MT"src/lcd_rot_cont.d" -o"src/lcd_rot_cont.o" "../src/lcd_rot_cont.c"
Finished building: ../src/lcd_rot_cont.c
 
Building target: empty_application_0.elf
Invoking: MicroBlaze gcc linker
mb-gcc -Wl,-T -Wl,../src/lscript.ld -L../../empty_application_bsp_0/microblaze_0/lib -mcpu=v7.30.a -mno-xl-soft-mul -o"empty_application_0.elf"  ./src/lcd_rot_cont.o   
Finished building target: empty_application_0.elf
 
Invoking: MicroBlaze Print Size
mb-size empty_application_0.elf  |tee "empty_application_0.elf.size"
   text       data        bss        dec        hex    filename
   6730        312       2118       9160       23c8    empty_application_0.elf
Finished building: empty_application_0.elf.size
 
Invoking: Xilinx ELF Check
elfcheck empty_application_0.elf -hw ../../SMM_DBG_noUART_hw_platform/system.xml -pe microblaze_0  |tee "empty_application_0.elf.elfcheck"
elfcheck
Xilinx EDK 12.3 Build EDK_MS3.70d
Copyright (c) 1995-2010 Xilinx, Inc.  All rights reserved.

Command Line: elfcheck -hw ../../SMM_DBG_noUART_hw_platform/system.xml -pe
microblaze_0 empty_application_0.elf 

ELF file    : empty_application_0.elf
elfcheck passed.
Finished building: empty_application_0.elf.elfcheck


SDKのXilinx ToolsメニューからProgram FPGAを選択して、ダウンロードしてみたが、動作がおかしい。デバックする必要がある。やっと、ソフトウェアのデバックの段階まで来た。
  1. 2010年12月18日 18:51 |
  2. SMM
  3. | トラックバック:0
  4. | コメント:0

The Simple MicroBlaze Microcontroller 12 (XPSでSMMをカスタマイズ)

前回、SMMのRAM容量が足りないなそう?ということがわかったので、XPSでSMMをカスタマイズし、RAMを8KBから16KBへ倍増させてみることにした。(最初は12.3でやったのだがワーニングが出ていて良いかどうかわからなくなったので、12.1でやり直した)

1. 最初にSMMのフォルダのうちで、SMM_Srcにソースが入っているので、そのうちのS3 (Spartan-3A) フォルダの下のSMM_DBG_noUARTフォルダを適当なフォルダの下にコピーする。ここでは、SMM_S3_BRAM_16Kフォルダの下にコピーする。

2. StartメニューからISE12.3のXilinx Platform Studio(XPS)を立ち上げ、Xilinx Platform StudioのダイアログでOpen recset project を選択し、OKボタンをクリックする。
SMM_43_101217.png

3. Open Existing Projectダイアログで1.のSMM_DBG_noUARTフォルダの下のsmm.xmpを選択して、Openボタンをクリックする。
SMM_44_101217.png

4. プロジェクトを作ったバーションと違うので、プロジェクトを変換するというダイアログが出たので、OKボタンをクリックした。プロジェクトが変換するために、Version Management Wizard が立ち上げる。Next ->ボタンをクリックする。(結構先が長いのかな?やりながらブログを書いています)
SMM_45_101217.png

5. bram_blockがアップデートしたけどfully backward compatible だそうだ。(それなら自動的にアップデートしても良さそう。。。)
SMM_47_101217.png

6. 次はplb_v46。1.04.aから1.05aに変更になったようだ。これは、ピンとパラメターはbackward compatible だが、他の機能が変更されているそうなので、Updata?のチェックを外した。(選べるのも便利そうだ。。。)
SMM_48_101217.png

7. 次はnot backward compatibleで、manually upgrade とのことだ。どうしよう?
SMM_49_101217.png

8. Apply Changes to your Project で終了。不安が残るが、Finishをクリックする。(だめならばやり直す)
SMM_50_101217.png

9. XPSが立ち上げる。やはり、ところどころ黄色い!が付いている。
SMM_51_101217.png

10. dlmb_cntlrのlmb_bram_if_cntlrをダブルクリックして、ダイアログを表示させる。LMB BRAM High Addressを0x00001fffから0x00003fffに変更する。
SMM_52_101217.png

11. ilmb_cntlrのlmb_bram_if_cntlrもダブルクリックして、ダイアログを表示させる。LMB BRAM High Addressを0x00001fffから0x00003fffに変更する。

12. ProjectメニューからExport Hardware Design to SDK...を選択する。
SMM_53_101217.png

13. Export to SDK/Launch SDKダイアログが開く。Include bitstream and BMM fileにチェックを入れるかどうか迷ったが、チェックを入れないと、smm.xmlは生成されるが、smm.ngcとsmm.bmmは生成されないようだ。Export Onlyボタンをクリックする。
SMM_54_101217.png

14. そうするとエラーが出てしまう。ワーニングが出ているせいかな?といろいろやってみたのだが、おかしくなってしまった。ここで諦めて、バージョン12.1のXPSでやり直した。こっちは、すんなりXPSが開いてワーニングがない。
SMM_56_101217.png

15. 12.3同様にdlmb_cntlrとilmb_cntlrのLMB BRAM High Addressを0x00001fffから0x00003fffに変更して、12.と13.を行う。

16. するとやはり同じようなエラーが出てしまう。

--------------
Number of errors : 87
Number of warnings : 91
ERROR:Xflow - Program map returned error code 2. Aborting flow execution...
Done!


17. しかし、smm.ngc, smm.bmm, smm.xml は出来ているようなので、このまま使うことにする。多分、12.3でも出来ていたので、12.3でも大丈夫だと思う?

smm.ngc : SMM_S3_BRAM_16K\SMM_DBG_noUART\implementation\smm.ngc
smm.bmm : SMM_S3_BRAM_16K\SMM_DBG_noUART\implementation\smm_stub.ngc
smm.xml : SMM_S3_BRAM_16K\SMM_DBG_noUART\SDK\SDK_Export\hw\smm.xml


smm.bmmを開いてみてみたが、以前はBRAMのインスタンスが4個で8KBだったが、8個になっていたので、メモリは16KBになったと思う。
  1. 2010年12月18日 13:30 |
  2. SMM
  3. | トラックバック:0
  4. | コメント:0