紙面の都合で割愛した内容を掲載します.
●追加の図
●動かしてみる方法
Cで書いたユーザプログラムをFPGA内のRISC-Vコアに実行させる方法について詳細を示します.
P48の説明の通り,Tang Nano 9KのRISC-Vシステムは内部フラッシュに書き込まれたプログラムを自動で実行します.
内部フラッシュにユーザプログラムを設置し,動作確認する流れを示します.
1.ユーザアプリケーション(C言語)を用意
2.objcopyでVerilog HDLダンプ形式へ変換
3.フラッシュ・メモリへ書き込み
4.Tang Nano 9Kをリセット
5.PCからcuなどを使ってUART経由で結果を確認
1.(誌面のリスト6を参照)
2.
3. $ python sw/pico-programmer.py fw/hello/build/fw-flash.v /dev/ttyUSB1
4.
5. $ cu -115200 -l /dev/ttyUSB1
3.のコマンドは,次のようなフォーマットです.
python3 sw/pico-programmer.py $(PROG_FILE) $(COMx)
これでシリアルポートを通してプログラムが転送されます.
転送待ちになるので S1 を押下してリセットします.
実は Firmware (Sipeed 提供) が立ち上がり時に UART をチェックして,更新すべきだと判断したらフラッシュ・メモリに書き込むというプログラム(fw-brom)が走っています.
このプログラムでは,1行読むことにチェックサムをチェックしてます.
そして,おそらく pico-programmer が適当なタイミングでフラッシュ・メモリ へのErase と Write を指示します(書き込む番地は フラッシュ・メモリの先頭のようです).
最後にリセット(Reset)してプログラムが始まります.
参考文献
Interface誌2022年12月号 別冊付録2500円ボードで始めるFPGA,応用編第4章
ピンバック: 自作した浮動小数点数演算アクセラレータをRISC-Vソフトコアから使う | FPGAマガジン公式