はじめに
前回は、Shrike-Liteの概要と、今後使う開発環境を整理しました。
今回は、いよいよ実機を触ります。
といっても、いきなりAtCoderの問題をFPGAで解くわけではありません。
その前にFactory Codeを出発点にして、まずはRP2040側のLチカ速度を変えてみます。
比較的簡単な作業を通して、Shrike-LiteのRP2040側の開発ループを一周してみることが目的です。
Shrike-Liteのボード上には青色LEDが二つ搭載されています。
LEDの位置は、Shrike公式GitHubリポジトリに掲載されているボード外観写真を見ると分かりやすいです。
USB-CコネクタのすぐそばにあるLEDはRP2040に、もう一つのボードの下側のLEDはFPGAに接続されています。
今回は、このうちRP2040側のLED点滅速度を変更します。
FPGA側のLED点滅速度変更は、次回の記事で扱います。
今回やること
今回の流れは以下です。
RP2040側は、MicroPythonのスクリプトを書き換えて実行します。
同じ「Lチカ速度を変える」でも、マイコン側とFPGA側では手順がかなり違います。
今回はまず、マイコン側の変更を試してみます。
Factory Codeを確認する
まず、Shrike-LiteのFactory Codeを確認します。
Shrike-LiteをPCに接続すると、USBドライブとして認識されます。
手元の環境では、USBドライブ内に次の2つのファイルが見えました。
USBドライブ
├── blink_all.bin
└── main.py
main.py はRP2040側で動くMicroPythonコードです。
blink_all.bin はFPGAに書き込まれているbitstreamです。
USBドライブ内にはFPGA側のVerilogソース一式が入っているわけではないようです。
FPGA側のLチカサンプルソースは、Shrike公式GitHubリポジトリの examples/led_blink に公開されているものを利用することにします。
今回と次回で触るのは、主に次の2種類のファイルです。
| 種類 | ファイル | 役割 |
|---|---|---|
| RP2040側 | main.py |
RP2040側で動くLチカコード |
| FPGA側 |
examples/led_blink 配下のVerilogコード |
FPGA側で動くLチカ回路 |
まず今回は、RP2040側の main.py について、既存コードの構成は変えず、点滅速度に関係する部分だけを変更します。
RP2040側のLチカ速度を変える
最初に、RP2040側のLチカ速度を変えてみます。
RP2040側はMicroPythonで動いているため、Thonnyからファイルを開き、スクリプトを実行できます。
Thonnyでファイルを開く
まず、ThonnyをShrike-Lite上のMicroPythonに接続します。
① Shrike-LiteをUSBケーブルでPCに接続します。
② PC上でThonnyを起動します。
③ Thonny画面右下に表示されている接続先をクリックします。
表示された一覧から "MicroPython (Raspberry Pi Pico) ... COMx" を選びます。
Thonnyのシェル画面に、Shrike-Lite上のMicroPythonに接続できたことを示すメッセージが出れば成功です。
今回は、工場出荷時の main.py を直接変更せず、コピーを作って変更します。
USBドライブ上の main.py をコピーして、main_copy.py という名前にしておきます。
点滅速度に関係する部分を探す
Thonnyから「ファイルを開く」→「このコンピュータ」→「USBドライブ」を選び、先ほど作成した main_copy.py を開きます。
MicroPython側のコードのうち、点滅速度に関係しそうな部分を探します。
たとえば、以下のような sleep や delay に相当する処理があるはずです。
for led in leds:
led.value(1)
time.sleep(1)
for led in leds:
led.value(0)
time.sleep(1)
ここでは、点滅間隔を少し変えてみます。
for led in leds:
led.value(1)
time.sleep(0.2)
for led in leds:
led.value(0)
time.sleep(0.2)
変更が済んだら「ファイル」→「保存」で保存してください。
実行して確認する
変更したら、Thonnyから実行します。
Thonny画面上部のツールバーにある、緑色の「現在のスクリプトを実行」ボタンを押します。
実行すると、RP2040側で制御しているLEDの点滅速度が変わるはずです。
time.sleep() の値を小さくすると点滅が速くなり、大きくすると遅くなります。
実際に値を変えて、LEDの点滅速度が変わることを確認できれば成功です。
これで、RP2040側の開発ループは確認できました。
RP2040側は、普通のMicroPythonスクリプトとして書き換えて実行できるため、比較的気軽に試せます。
次回
次回は、FPGA側のLチカ速度を変えてみます。
RP2040側では、MicroPythonスクリプトを保存して実行すれば動作が変わりました。
一方、FPGA側では、Verilogコードを変更したあと、ForgeFPGA Workshopで合成し、bitstreamを生成して、Shrike-Liteへ書き込む必要があります。
次回はこのFPGA側の開発ループを一周します。






