はじめに
今日は FPGA のいいところを思いつくまま列挙してみようと思います。
思い付きで書くので、グダグダになるかもしれませんが、ご容赦を。
FPGA のよいところ
いろんなものが沢山繋がる
まずなによりFPGAの良いところ。
品種にもよりますが、LVTTL/LVCMOS/LVDS/SSTL/HSTL/MIPI-DPHY など各種電気信号に加え、ギガビットトランシーバーでは、PCIe/SATA/USB/DisplayPort/SLVS-EC など様々なものを見かけますし、DDR4-SDRAM なんかも繋がってしまいます。
そして I/O ピンも少ない物から多いものまでさまざまで、大きい物なら 1000ピン以上のものもあり、それらを全部同時に制御するようにもプログラミング可能です。
「秋月電子で売られているもの大体なんでも繋がる」ぐらいの誇張をしてみたくなります。
カメラやディスプレイはもちろん、様々なセンサーやアクチュエーター、リレーや光源、マイクなんかをアレイ状に沢山並べるなんていうのも面白いかもしれません。
複数のセンサーを使って集めたあなただけのデータで深層学習モデルを学習させるなんてこともできちゃいます。
まさに Physical AI にうってつけ です。
いろんなものが同時に同期制御できる
これもとても大事です。 マイコンでは基本的には1つのプログラムで1つの制御を行いますし、マルチコアCPUでもコア間をサイクル単位で同期させるのは困難です。
一方で、FPGA では複数の並列処理を、同じクロックで同期させて完全に同じサイクルでナノ秒単位でタイミングを揃えて同期実行させることが簡単にできます。
複数の照明とカメラの電子シャッターでぴったり時刻を合わせて撮影して、三角法で測量するなんてこともできますし、沢山並べたマイクを位相をずらしながらサンプリングしていくなんてことも簡単です。
さらには FPGA 内の PLL などで作ったクロックの位相をコントロールするなどすれば、本当にピコ秒オーダーで狙ったタイミングでデータの取得や出力が出来たりします。
光は 1nsec で 30cm しか飛びませんので、それこそ ToF や LIDAR のようなものを考える事すら視野に入ってくるのです。
全部異なる並列計算ができる
以前こちらで、こんな絵を描きました。

CPU の SIMD(Single Instruction, Multiple Data) や GPU の SIMT(Single Instruction, Multiple Threads) などの並列演算機能は、基本的に同じ命令を同時に複数実行することしかできません。以前も書きましたがこれは並列演算できるだけデータを溜めないと効率的な演算ができないので、リアルタイム性を落とします。 また、一気に入力を吸い込んで、一気に大量の出力をしてきますので、入出力の取り扱いが、センサーなどのデバイスと相性が悪いケースがあります。
これがFPGAのパイプライン演算の場合は外部からやってきたデータを次々取り込んで、受け取ったものから計算をはじめ、終わったものから出力していきますので、多くの入力デバイスや出力デバイスと直結しやすく低遅延です。つまり Physical AI にうってつけ です。
また、パイプラインに限らず、ライフゲームのようなセルオートマトン系の並列協調演算なども得意で、リザバーコンピューティングのようなものも得意です。
さらにリソース効率の面でもこれは重要で、CPU や GPU は何でもできる万能社員を大勢用意しておいてあらゆるタスクを全員にこなさせるという事をやります。つまり万能ALUがいっぱい並んでいます。
一方で、FPGA は1芸に秀でた多様性のある社員を集めて、各々に得意なタスクだけに専念してもらいます。したがってリソース効率や電力消費で有利になる事がしばしあります。
ビット演算など簡単な演算が超得意
FPGAは それこそ AND、OR などのシンプルな bit 演算や、 2~3bit 程度の数値の演算が超得意です。昨今だと量子化された AIモデルがいろいろ提唱されているのでイメージしやすいのではないでしょうか? 他にも決定木を解くなどの論理演算なども得意です。また本物のハードウェアだと NAND演算とXOR演算ではトランジスタ数が違うところ、FPGA は LUT で行う基本ビット演算はすべて同じコストであるため、プログラマにとっては非常に見積もりやすいというソフトウェア的性質も持っています。
これらビット演算を CPU や GPU でやらせた場合、1~2bit でよい演算に 32bit 演算命令を使う羽目になったり、ビット演算中にたくさん保有している巨大な浮動小数点演算器が丸々何もせずに遊んでしまったりと、もったいないことばかり起こります。
CPU/GPU が得意な演算を FPGA にやらせても、まあ多少効率が悪いなりに何とかなしますが、逆に FPGA が得意な演算を CPU/GPU にやらせるとボロボロになります。
FPGAに得意そうな計算をいろいろ考えてアルゴリズムを工夫しなおすのも面白いのでおススメです。
リアルタイム性が高い
これはとても強い武器です。RTLで記述するすべてのプログラムにおいて、プログラマは何サイクル後に結果が出てくるか知っていますし、それは毎回きっちり同じサイクルになるようにシステムを構成することも容易です。
つまり、「データを入れたら、きっちり 1000 サイクル後に結果が出ます」なんてことが簡単にできます。 これは製造現場などで、「センサーに反応があったら 500usec後に照明を焚いて撮影して、1msec 後に正常か異常か認識結果を出して振り分けする装置を作って」みたいなことを簡単にやってのけるという事です。
他にも現実世界と相互作用するすべてのものでリアルタイム性は重要で、例えば「マウスに代わるジェスチャーデバイスをAIで作ろう」みたいなことを考えるときに、演算応答時間がばらつていたら認識結果が正しくても、マウスカーソルがちぐはぐに動くことになります。
現実世界と計算機の相互作用にはリアルタイム性はとても大事です。FPGA はまさに Physical AI にうってつけ です。
それなりに演算能力もある
そしてこのような特殊なデバイスである割に、パソコンのCPUなどと同じぐらいの価格帯の最近のミドルレンジの FPGA は、積和演算をする DSP なんかも平気で 1000個 ぐらい入っていたりします。 これは GPU などと比べると見劣りはしますが、ちょっとした画像認識程度のAIは十分実行できます。
これは FPGA でないとこなせないような特殊デバイス制御やリアルタイム性の問われる特殊領域にも十分実用的なAI が入れられるという事で、まさに Physical AI にうってつけ です。 なにも LLM が動かなければ AI じゃないなんてことは無くて「やりたいことがやれる」事が大事なんです。
種類も規模もベンダーも豊富
ワンコインで買えるものから、数千万円するものまでラインナップが豊富なのも FPGA のいいところです。
ベンダーも AMD/ALTERA などの大御所から Lattice、Microchip、QuickLogic、Efinix、Achronix、GOWIN などいろんなベンダーがあります。
当然、価格や規模、欲しいI/O数や機能や、使いたいツールまで含めてとても広い選択肢を持っています。
また、以前私が 2,980円の Tang Nano 4K カメラセット で AI 認識をやってみる という暴挙に出て、Interface 2025年12号 の付録雑誌に記事を書かせて頂いたとおり、結構、小さなところから深層学習自体は応用できるんです。
まさに Physical AI にうってつけ です。
AI を活用した開発がいい塩梅
FPGA はプログラミング以前に、ツールの理解や環境構築がわかりにくく、初学者の最初の一歩目のハードルが高めでしたが、プログラマ人口の少なさからすぐ聞ける人が近くにいないという問題がありました。
一方で今は「AIに聞けばいい」という時代になりましたので、この問題はだいぶ緩和されている気がします。
加えて、RTL(VerilogとかVHDLとか) や HLS (C++) などの FPGA の為のコード開発自体もそれなりに定型パターンについては AI が行えるようになってきています。
もっとも AI の学習の元になっているインターネット上のデータ自体が、Web系プログラムのそれに比べて圧倒的に少ない為、Web系ほど AI に丸投げは出来ない面もあります。
ただそれは悪いことではなく、世の中に事例がいくらでもあるような部分はAIに任せ、自分が本当に作りたい新規性のある部分は自分で作る、という住みわけがやりやすいことを意味します。
逆に Web系プログラミングは、もはや AI に書けない部分がなくなりつつあり、趣味プログラマがプログラミングの楽しみを奪われかけている部分さえありますが、FPGA はまだまだ「AIが学習データに持ち合わせてないような突飛なアイデアの実装」が山ほど残っているフロンティアですので、プログラミングを楽しみたい人には逆にお勧めだったりもします。 そしてレビューとかデバッグとかには AI をガンガン使えば良いわけですから、現時点では AI と 人間が Win-Win の関係になりやすい塩梅ををもった分野であるとも思います。
おわりに
思いつくままに書いてしまいましたが、「なんかFPGAって面白そう」 って思ってくれた方が一人でもおられると嬉しいです。















![コンピュータアーキテクチャ[第6版]定量的アプローチ コンピュータアーキテクチャ[第6版]定量的アプローチ](https://m.media-amazon.com/images/I/51guTT4yixL._SL500_.jpg)


