🤖
HW高位合成ツールを使ってnand2tetrisのCPUを動かしてみる 5
の続き
目標は Pong を動かすこと
nand2tetris の hack CPU を動かすにあたってはやはり Pong を動かすことを目標にしたい。
しかし実現にあたって課題が2つ。
- 画面表示をどうするか?
- コントローラ入力をどうするか?
これらは ACRiルームをリモートで使用する (直接FPGAボードに触ることができない) ために生じる。 なお、ACRiルームで備えられているFPGAボード自体にはボタン入力やHDMI出力がある。
入出力はUART通信を介してホスト側のアプリで実装
そもそもHDMI出力などの回路をFPGA初心者の自分がいきなり操れるようになるとは思えない。色々検討するとFPGAボードにUSB-UART変換チップが載っていることがわかった。USBを介してホストとUARTでのシリアル通信ができるので、ここに独自のプロトコルを作ってホスト側のアプリでキー入力と画面出力を担うことにした。ホスト側アプリのざっくりとした仕様は以下とした。
- CPUのリセット
- プログラムROMコードのロード
- プログラムの実行
- 簡易デバッグ機能
- キー入力
- 画面出力
このアプリの開発はPythonを使うことにした。Claude3.5にBasicな仕様を伝えてアプリのコード作成を頼むと、Qtベースのほぼ思った通りのアプリができた。FPGAの設計側の進捗に合わせてホスト側のアプリも適宜Claudeに相談しながら修正していった。
なお、ローカルでは当初Windows on Mac を使っており、最終的にはUbuntuに移行。ACRiルームはLinuxなので、Python+Qtのコード修正なしでマルチ環境で動く凄さを実感できた。
次回へ続く。
Discussion