はじめに
初めまして。ロボコンをやったりしている木槌と申します。
本当は学ロボの準備やテストで忙しかったりするのですが、現実逃避がしたくなり初ブログを書いています。
初回のお題は「pico-sdkでshrike-liteを動かす」です。
Shrike-liteとは
Shrike-liteはRP2040とルネサスのForge FPGA SLG47910が載っている開発ボードです。マイコンとFPGAの開発を簡単にしかも安価(現状秋月で1240円)にできるかなりアツい商品です。
FPGAというと高価であったり、環境構築が難しかったりと敷居の高いイメージがありますが、このボードはその敷居を下げてくれるかなと思います。
RP2040とForge FPGA SLG47910はSPIによってボード内で接続されており、これでFPGAのデザインを流し込むためFPGAを使うにしてもマイコンを使用することが公式の想定だと思います。
pico-sdk
RP2040には開発環境が多く提供されており、そのうちの一つがpico-sdkです。pico-sdkは、設計元である RaspberryPi Ltdが作っているpico/pico2専用のc言語ライブラリです。他の開発環境としてArduino IDEやMicroPythonなどがありますが、pico-sdkは低レベル制御がしやすく、専用のライブラリとして作られているためマイコンの性能をしっかり引き出しているような気がして私は気に入っています。
また、VS Codeに拡張機能がありGUIでプロジェクトの生成ができるなど便利です。
導入の方法はこちらの記事を参考にしました。
https://zenn.dev/usagi1975/articles/2024-08-29-000_pico_development
本題
Shrike-liteの開発方法ですが、以下の流れになると思います。
- FPGAのデザインを設計
- RP2040経由で設計したデザインを流し込む
FPGAのデザインについてはルネサス公式のGo Configure Software Hubという開発環境があります。
FPGAのデザインをRP2040経由で流し込む方法については、公式からArduino IDEやThonny IDEでの方法が紹介されていますが、pico-sdkを利用した方法は私が確認した範囲では公式からは紹介されていません。しかし、どうしてもpico-sdkで使いたかったのでいろいろ調べpico-sdkの関数を用いてFPGAを動かすプロジェクトのテンプレートを作ってみました。突貫で作ったし、テンプレートリポジトリの使い方に慣れていないのでうまく動かないかもしれないので、改善点あったら教えていただけると嬉しいです。
使い方
まず、FPGAのデザインを公式のページを参考に設計してください。公式ではルネサスの公式開発環境であるGo Configure Software Hubを使う方法が紹介されていると思います。
手順に従うと最終的にGo Configure Software Hubのプロジェクト配下のffpga/build/bitstream/にFPGA_bitstream_MCU.binというバイナリファイルが出力されるので、これをこのテンプレートのassets/にコピーしてください。
次に、バイナリファイルをプログラムの中へ埋め込むためにヘッダーファイルへ変換します。linuxの場合はxxdコマンドを使えばすぐ終わりますが、windowsだとやり方が分からなかったため、scripts/に変換用のPythonコードを用意しました。uvが入っていたら
uv run .\scripts\bin_to_header.py .\assets\FPGA_bitstream_MCU.bin
と実行すればgenerated/にヘッダーファイルが生成します。uvが入っていなくても標準ライブラリのみを使用しているため、ローカルのPythonでも動くと思います。
そして、src/main.cppにヘッダーファイルをインクルードしてSPIの初期設定とデザインの書き込みをfpga_spi_initとfpga_program_mcu_modeでやります。最後にmain.cppにマイコンのやりたいことを書けば完成です!
Srike Lite動かせた
— 木槌 (@archaea_r271) January 11, 2026
かなり簡単にできたから、fpga 使って何か作りたい pic.twitter.com/3NQLPXUNub
最後に
至らぬ点も多々あったと思いますが、参考になりましたら嬉しいです。間違い疑問点等ありましたら、コメントいただけるとありがたいです。