デバッグボード ソフトウェア編
FPGA Software Development: Controlling a Pulse Generator via UART with AI-Generated Code
English Summary
In this phase of the project, I implemented the software layer for controlling an FPGA-based pulse generator using a UART interface and a soft CPU. By integrating a MicroBlaze processor, communication between a PC and the FPGA became straightforward, allowing commands to be sent via a standard terminal.
One of the most notable results was that the C software was generated almost automatically based on the previously defined hardware (VHDL) design. Because the hardware structure and register map were already established, the generated code maintained strong consistency with the FPGA logic.
Only minor adjustments, such as correcting address definitions, were required before the system worked successfully. The generated software even included user-friendly command handling, making it easy to operate the system from a PC terminal.
This experience highlights the strength of generative AI not only in code generation, but also in maintaining coherence between hardware and software, significantly reducing development time.
The next step will focus on troubleshooting issues related to ROM initialization.
UARTと生成AIでパルスジェネレーターをすぐ動かす
前回は、MicroBlazeとCPUデコーダIPを使って、
パルスジェネレーターの制御環境を構築しました。
今回はその続きとして、ソフトウェア側の実装について書いていきます。
CPUを入れるとUARTが一気に楽になる
今回の構成では、CPU(MicroBlaze)を搭載しているため、
UARTとの連携が非常にシンプルになりました。
基本的な構成は以下の通りです。
👉 PC → UART → FPGA(CPU) → パルスジェネレーターIP
PC側からターミナルソフトを使ってコマンドを送るだけで、
FPGA内部のレジスタを書き換えることができます。
この構成のメリットは明確で、
- 専用ツールが不要
- 即座に動作確認できる
- ログが取りやすい
といった、デバッグに非常に向いた環境になります。
ソフトはほぼノー指示で生成された
今回の開発で印象的だったのは、
👉 ソフトウェアをほぼ何も指示せずに生成できたこと
です。
事前に、
- ハードウェア(VHDL)
- レジスタ構成
- アクセス方法
を生成AIと一緒に作っていたため、
その情報を元に、ソフトウェア側のCコードも自然に生成されました。
感覚的には、
「ほとんど何も言ってないのに、ちゃんと動くコードが出てきた」
というレベルです。
ハードとソフトの“整合性”が強い
生成AIの強みとして、コード生成自体ももちろんありますが、
今回強く感じたのは、
👉 ハードウェアとソフトウェアの整合性が取れていること
です。
通常であれば、
- レジスタ定義のズレ
- アドレスの食い違い
- ビットフィールドの解釈ミス
といった問題が発生しやすい部分ですが、
今回はかなりスムーズに一致していました。
FPGA開発ではこの部分の調整に時間がかかることが多いので、
ここが短縮されたのは非常に大きいポイントです。
修正が必要だったのはアドレスだけ
もちろん完全にノー修正というわけではなく、
👉 一部のアドレス情報は手動で修正しました
これは、生成AIに渡していなかった情報だったためです。
ただし、それ以外はほぼそのまま使用できたため、
👉 実質的な修正はごく一部だけ
で済みました。
実際にすぐ動いた
修正後、実際に動作させてみると、
👉 問題なくすぐに動作
しました。
UART経由でコマンドを送り、
パルスジェネレーターの動作が変わることを確認できています。
ターミナル操作まで含めて生成された
今回さらに良かった点として、
👉 PC側の操作方法まで含めて生成されたこと
があります。
例えば、
- コマンド入力方法
- パラメータの指定方法
- 簡単な操作ガイド
といった部分まで用意されていたため、
そのままターミナルから操作できる状態になっていました。
このあたりは、従来だと自分で整備することが多かった部分なので、
かなり助かりました。

生成AIによる時間短縮を実感
今回のソフトウェア開発を通して感じたのは、
👉 生成AIは“連携”で真価を発揮する
という点です。
単体のコード生成だけでなく、
- ハードウェア設計
- レジスタ仕様
- ソフトウェア実装
これらがつながった状態で扱えることで、
開発全体のスピードが一気に上がります。
今回も、従来であればそれなりに時間がかかる部分が、
かなり短時間で完了しました。
次回予告:ROMトラブル編
ここまでで、
- ハードウェア
- デバッグIP
- CPU制御
- ソフトウェア
が一通り揃いました。
ただし実際の開発では、順調にいかない部分も出てきます。
次回は、
👉 ROMまわりで発生したトラブルとその対策
について書いていく予定です。
まとめ
今回のソフトウェア編では、
- UART経由のシンプルな制御環境
- 生成AIによるCコード生成
- ハードとソフトの整合性
を中心に紹介しました。
特に印象的だったのは、
👉 ハードウェア設計と連動したソフト生成の強さ
です。
この流れが使えると、FPGA開発のスピードは大きく変わります。
FPGAインフォメーションのホームページはこちらです。
