FC2カウンター FPGAの部屋 2011年06月16日
fc2ブログ

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

FPGAの部屋

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

SMMのSDKデバックとChipscope Pro Inserter を同時に使用する

SMM(the Simple Microblaze Microcontroller)を使用すると、FPGA内のBSCANユニットが使用されて、Chipscope Proで信号を観測することができなかった。

Virtex-5やSpartan-6では、複数個のBSCANユニットが入っているので、SDKデバックしながら、Chipscope Inserterが使用できるのでは?と考えられるので、試してみることにした。(多分、Virtex-6も同様だろう)
(SMMについては、”The Simple MicroBlaze Microcontroller 2 (概要)”を参照のこと。SMM(The Simple MicroBlaze Microcontroller)も参照ください)

SMMのVirtex-6のリファレンス・デザイン(SMM_Ref\ML605_LCD_Ref)をXUPV5-LX110T用に変更した。具体的には、66MHzクロックを使用するようになっていたので、100MHzのクロックからDCMで66MHzに変換した。後は当然ながら制約ファイルを書き換えた。
サンプルプロジェクトでやることは、”The Simple MicroBlaze Microcontroller 4(リファレンスデザイン2)”と同様に、ボタンを押すとLCDに”Thank You!”と表示することだ。
Chipscope Inserterコアを入れて、インプリメントしたらインプリメントができた。
SMM_SDK_1_110616.png

FPGA Editorで見ると、Chipscope用とSMMのMDM用のBSCANユニットが2つ入っていた。
SMM_SDK_2_110616.png

1.SDKを立ち上げて、SDKのProgram FPGAダイアログから、FPGAボードにビットファイル(download.bit)をダウンロードした。(”The Simple MicroBlaze Microcontroller 4(リファレンスデザイン2)”参照)
2.Chipscope AnalyzerをProject Navigatorから立ち上げて、sdk\SMM_noDBG_noUART_hw_platform\download.bitを指定して、もう一度、FPGAボードにダウンロードした。
3.SDKをデバッグモードにした。スイッチを押したときのタイマーイベントでChipscopeのトリガをかけた。

うまくSDKデバックとChipscopeの波形観測の両方を行うことができた。
SMM_SDK_3_110616.png

SMM_SDK_4_110616.png

これで、Virtex-5以上では心置きなくSMMを使うことができる。(ただし、BSCANが2つ以上あることが前提)
ISEからEDKをIPとして使用して、Chipscope Inserterを使うこともできると思う。
なお、Virtex-4は試していない。
  1. 2011年06月16日 17:21 |
  2. SMM
  3. | トラックバック:0
  4. | コメント:0

openMSP430のシミュレーション1

今回はSpartan3 Stater KitでインプリメントしたopenMSP430のシミュレーションを試みた。

シミュレーションの方法が書いていないので、よくわからないが、どうやらopenmsp430\trunk\fpga\xilinx_diligent_s3board\sim\rtl_sim\bin\msp430sim を動かせば良いみたいに見える。
シェル・スクリプトなので、例によって、openmsp430\trunk\fpga\xilinx_diligent_s3boardから下をCygwinの自分のhomeディレクトリにコピーした。そして、Cygwinから”./mps430sim leds”コマンドを入力して起動した。
openMSP430_19_110616.png

すると、エラーが出て停止してしまった。
pmem.elfがおかしいと言われている。xilinx_diligent_s3board\sim\rtl_sim\runのpmem.elfは76バイトしかない。これは、leds.elfをシンボリック・リンクしたものなので、こうなってしまったのか?でもmps430simのスクリプト中のlnをcpに変えても変わらなかった。そこで、leds.elfをWindowsのエクスプローラーでコピーして、pmem.elfに書き換えた。
xilinx_diligent_s3board\sim\rtl_sim\bin\msp430sim の107行目から109行目の以下のスクリプトを

# Create links
ln -s $elffile pmem.elf
ln -s $verfile stimulus.v


下のcp に書き換えた。

# Create links
cp -f $elffile pmem.elf
cp -f $verfile stimulus.v


これでもう一度、”./mps430sim leds”コマンドを入力して起動した。
iverilogコマンドが見つかりませんと出た。Icarus Verilogが必要のようだ。
openMSP430_20_110617.png

Windows用のIcarus Verilogを、ここからダウンロードしてインストールした。(iverilog-0.9.4_setup.exe)
再々度、Cygwinから”./mps430sim leds”コマンドを入力して起動した。
今度は、BUFGやDCM等がUnknown module と言われてしまった。
openMSP430_21_110617.png

msp430sim の最後に、

../bin/rtlsim.sh stimulus.v pmem.mem $submitfile


というコマンドが書かれていた。rtlsim.shを起動しているようだ。
rtlsim.shを見てみると、submit.f というコマンドファイルをIcarus Verilogで実行するようだ。
submit.fを見てみると、-yオプションのライブラリパスにunisims, XilinxCoreLibなどのライブラリが存在しないことに気がついた。K:\cygwin\opt\Xilinx\13.1\ISE_DS\ISE\Verilog\src 以下にすべてのライブラリをコピーした。
openMSP430_22_110620.png

そして、submit.f の51,52,53行目の以下の部分を

-y /opt/Xilinx/12.2/ISE_DS/ISE/verilog/src/unisims/
-y /opt/Xilinx/12.2/ISE_DS/ISE/verilog/src/simprims/
-y /opt/Xilinx/12.2/ISE_DS/ISE/verilog/src/XilinxCoreLib/


下の記述に書き換えた。

-y /opt/Xilinx/13.1/ISE_DS/ISE/verilog/src/unisims/
-y /opt/Xilinx/13.1/ISE_DS/ISE/verilog/src/simprims/
-y /opt/Xilinx/13.1/ISE_DS/ISE/verilog/src/XilinxCoreLib/


これでもう一度、Cygwinから”./mps430sim leds”コマンドを入力して起動した。
しかしやはり、BUFGやDCM等がUnknown module と言われてしまった。

Icarus Verilogは良くわからないので、今度はISimでシミュレーションをやってみたい。
  1. 2011年06月16日 05:43 |
  2. FPGA内蔵マイクロコントローラ
  3. | トラックバック:0
  4. | コメント:0