連載
» 2016年01月26日 09時00分 UPDATE

MAX 10 FPGAで学ぶFPGA開発入門(6):FPGA上でソフトコアCPUを動かす手引き (6/7)

[大原 雄介,MONOist]

いよいよビルドへ

 これが終わったら、左ペインのProject ExplolerのTempSensorを右クリックして、コンテクストメニューから「Build Project」を選択するとプログラムのビルドが始まる。問題なければ数十秒で終了する(Photo29)はずで、これにてプログラムの開発は完了である。

Photo29:経過時間は利用するマシンによって当然変わる Photo29:経過時間は利用するマシンによって当然変わる

 最後に、プログラムをNios IIにロードする作業である。まずEclipseの「Run」→「Run Configuration」を選び、Project名に「TempSensor」を選ぶ(Photo30)。次にTarget Connectionタブを開く(Photo31)と、USB-Blasterが見えているはずだ。

Photo30:Project名を選ぶと自動的にElf file nameも選択される Photo30:Project名を選ぶと自動的にElf file nameも選択される
Photo31:もしUSB-Blasterが一覧にない場合、右のRefresh Connectionsを押して再検索する Photo31:もしUSB-Blasterが一覧にない場合、右のRefresh Connectionsを押して再検索する

 ここで「System ID checks」にある「Ignore mismatched system ID」と「Ignore mismatched system timestamp」の両方にチェックを入れると、「Target Connection」タブの赤い×印が消える(Photo32)。これを確認して、まず右下の「Apply」ボタンを押した後で、さらに右下の「Run」ボタンを押すと、USB-Blaster経由でNios IIのSRAMにプログラムがロードされ、すぐにNios IIが実行を開始する。ちなみにSTDOUTに相当するものは、USB-Blaster経由のNios II Consoleになり、ここにメッセージが表示される仕組みだ(Photo33)。

Photo32:「Target Connection」タブの赤い×印 Photo32:「Target Connection」タブの赤い×印が消えている。Photo31に比較してもらうと分かりやすい
Photo33:作業終了 Photo33:これで動作した

 さて、本当ならこのサンプルは1秒おきに温度を表示する他、基板上のディップスイッチにあわせて基板のLEDのOn/Offが操作可能な「はず」なのだが、実は上手く動かない。調べてみたところ、デバイスから本来入るべき割り込みが上手く拾えておらず、割り込み待ちのままずーっと無限ループに陥っている模様だ。

 なんとなく、Photo10にあるようにIPの形で提供されるデバイスが14.1→15にVersion upされた際に何か仕様が変わっており、それを上手くフォローアップできていない感じがする。ただ逆にADCからの温度測定やDIPスイッチの設定取り込み/LEDの表示などを省くとちゃんと動作しているので、Nios IIそのものが正しく動作している事は間違いないようだ。次回はこのあたりを来月はもう少し追及してみたいと思う

Copyright © ITmedia, Inc. All Rights Reserved.