FPGA(Field Programmable Gate Array)は、製造後に内部の論理回路を設定できる半導体です。CPUのように命令を順番に読んで実行するのではなく、書き込んだ設定データのとおりにチップ内のLUT(ルックアップテーブル)と配線スイッチが組み合わさり、専用のハードウェアとして信号を処理します。主流の製品は何度でも再設定できますが、アンチヒューズ方式のように一度しか書き込めない製品もあります。
この記事では、LUTが真理値表で論理を作る仕組み、LUT同士をつなぐ配線、設定データの保持と書き込みの方式を説明し、オープンソースのYosysとnextpnrで8ビットカウンタを実際に合成・配置配線した結果のLUT数・フリップフロップ数・ビットストリームサイズを示します。後半では、CPU・ASIC・PLC・CPLDなどとの違いと、2026年10月時点の開発ツールの現行版と無償で使える範囲を整理します。
まとめ|FPGAは設定データでLUTと配線を組み替える論理回路の集合体
- FPGAの中身は、真理値表を持つLUT・フリップフロップ・プログラマブル配線・I/Oの集まりです。ANDを入れた2入力LUTの設定値は4ビットの「8」、XORは「6」で、Yosys 0.70でAMD 7シリーズ向けに合成するとこの値がそのまま出力されます。
- 配線は格子状に張られた配線と、設定メモリ(主流のSRAM方式ではSRAMセル)で開閉するスイッチでできています。8ビットカウンタをLattice iCE40 UltraPlusに配置配線した結果では、フリップフロップ間の最長経路6.98nsのうち2.42nsが配線の遅延でした。
- 主流のSRAM方式は電源を切ると設定が消え、起動のたびにフラッシュメモリやプロセッサから(開発中はJTAGで)読み込みます。圧縮しない場合、ビットストリームの大きさは回路の規模ではなくデバイスで決まり、iCE40UP5Kでは数ゲートの回路でも約104KBです。
- CPUやGPUとの違いは、処理を回路そのものとして並べる点です。量産数が大きく仕様が固まっているなら単価と消費電力でASICが有利で、仕様が動く段階や数量が少ない製品でFPGAが選ばれます。
- 2026年10月時点の主要メーカーはAMD(旧Xilinx)、Altera(2025年9月にIntelから独立)、Lattice、Microchipで、各社とも一部のデバイス向けに無償の開発ツールを用意しています。
まず、FPGAという名前の由来になったゲートアレイと、デジタルICの中でのFPGAの位置から説明します。
FPGAの定義と名前の意味|ゲートアレイを手元で書き換えられるようにした集積回路
Field Programmableは「現場(出荷後の機器の中)でプログラムできる」、Gate Arrayは「論理ゲートを敷き詰めた配列」を指します。読み方はエフピージーエーです。ここでいうプログラムは、ソフトウェアのコードを書き込むことではありません。どのLUTにどの真理値表を入れ、どの配線スイッチをつなぐかを決める設定データ(ビットストリーム)を書き込むことを指します。
デジタルICの分類とゲートアレイ|FPGAが汎用品として売られる理由
専用チップ(ASIC)の作り方は、どこまでを顧客ごとに作り分けるかで分かれます。エプソンのASIC解説は、トランジスタを並べた下地を共通で用意して配線工程だけで作り分けるゲートアレイ、設計済みのロジックセルや機能マクロを組み合わせるセルベース、論理回路をゼロから作り込むフルカスタムを区別しています。
| 種類 | 顧客ごとに作るもの | 製造後の変更 |
|---|---|---|
| フルカスタムIC | 回路とレイアウトのすべて | 不可 |
| セルベースASIC | セルとマクロの組み合わせ、全マスク | 不可 |
| ゲートアレイ | 配線層のマスクだけ | 不可 |
| FPGA | なし(設定データを書き込む) | 方式により可 |
ゲートアレイは配線をメタルマスクで作るため、一度作ると直せません。FPGAは配線とスイッチをあらかじめ全部作り込んでおき、どのスイッチをつなぐかをメモリで決めます。このためFPGAは、カタログの型番で誰でも同じチップを買える汎用品として販売され、回路は購入した側が決めます。名前に「ゲートアレイ」が残っているのはこの系譜のためで、現在主流のSRAM方式・フラッシュ方式のFPGAでは、論理ブロックはゲートではなくLUTでできています。
1985年のXC2064から2025年のAltera独立までの系譜
AMDの40周年記事によると、世界初の商用FPGAはXilinxが1985年に出したXC2064で、トランジスタ数85,000、構成可能な論理ブロック(CLB)64個、I/Oブロック58個という規模でした。
| 時期 | 出来事 |
|---|---|
| 2015年12月28日 | IntelがAlteraの買収を完了 |
| 2022年2月14日 | AMDがXilinxの買収を完了 |
| 2025年9月12日 | Silver LakeがAltera株式の51%を取得し、Alteraが独立 |
買収の完了日はIntelの発表とAMDの発表によります。Intelの2025年9月12日の開示では、取引完了時点でIntelは残る49%を保持しました。2025年9月より前の資料にある「Intel FPGA」は、現在のAlteraに読み替えてください。
FPGAの仕組み|LUT・フリップフロップ・配線・I/Oの4要素
FPGAのチップ内部には同じ形の論理ブロックが格子状に並び、そのすき間をプログラマブルな配線が走っています。外周には外部ピンとつながるI/Oブロックがあります。組み合わせ回路はLUTが、状態の記憶はフリップフロップが担い、両者を配線スイッチがつなぎます。
LUTの仕組み|真理値表を書き込んだ小さなメモリによる論理の実装
LUT(Look Up Table)は、入力の組み合わせをアドレスにして、あらかじめ書き込んだ1ビットを読み出す小さなメモリです。2入力のLUTなら4ビット、6入力なら2の6乗で64ビットを持ちます。書き込む中身を変えれば、同じLUTがANDにもXORにもなります。
| 入力a | 入力b | ANDの出力 | XORの出力 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
出力の列を下の行から順に並べると、ANDは2進数の1000(16進数で8)、XORは0110(16進数で6)になります。この4ビットがLUTの設定値です。assign y_and = a & b; と assign y_xor = a ^ b; の2行をYosys 0.70でAMD 7シリーズ向けに合成すると、2入力LUTが2個生成され、設定値は INIT(4'h8) と INIT(4'h6) でした。表の計算と一致します。
同じ記述をLattice iCE40向けに合成すると、4入力LUTの設定値は 16'hf000 と 16'h0ff0 になりました。iCE40のLUTは4入力固定で、使わない2本の入力(I0・I1)が下位ビット側に割り当てられるため、2入力の真理値表の1行が16進数の1桁(4ビット)に広がります。ANDの1000はf000、XORの0110は0ff0となり、各桁の1がf、0が0に置き換わった形です。
6入力LUTの分割と分散RAM|LUTが論理以外にも使われる例
現在のLUTは、真理値表を1つ持つだけの部品ではありません。AMDの7シリーズCLBユーザーガイド(UG474)によると、6入力LUTは入力を共有する2つの5入力論理として使え、その場合はA1〜A5を入力、O5とO6を出力にしてA6をHighに固定します。小さな論理が2つあれば、LUT1個に詰め込めるということです。
さらに7シリーズのSLICEMと呼ばれる種類のスライスでは、LUTを同期書き込みの分散RAMとして使えるほか、1個のLUTをフリップフロップを使わない32ビットのシフトレジスタにもできます。LUTの実体が書き込み可能なメモリだからこそできる使い方で、数十ビットの遅延線や小さなFIFOをブロックRAMを使わずに作れます。
Alteraは論理ブロックの単位をALM(Adaptive Logic Module)と呼びます。Agilex 7のALMは、8入力の分割可能なLUT、専用加算器2個、レジスタ4個で構成されます。一方、MAX 10などで使われるLE(Logic Element)は4入力LUTとレジスタ1個の組です。
CLBとスライス|メーカーと世代で異なる論理ブロックの単位
LUTとフリップフロップは、まとまった単位でチップ上に並びます。AMDはこの単位をCLB(Configurable Logic Block)とスライスと呼び、世代によって構成が違います。
| アーキテクチャ | CLBあたりのスライス | スライスあたりのLUT | スライスあたりの記憶素子 |
|---|---|---|---|
| AMD 7シリーズ(Zynq-7000を含む) | 2 | 6入力x4個 | 8個 |
| AMD UltraScale | 1 | 6入力x8個 | 16個 |
出典はZynq-7000のテクニカルリファレンス(UG585)とUltraScaleのCLBユーザーガイド(UG574)です。LatticeのiCE40は、4入力LUT・キャリー回路・Dフリップフロップを1組にした論理セル8個で1つの論理ブロック(PLB)を構成します。4入力LUTは1個で表せる論理が6入力LUTより狭いため、デバイスの規模はLUTの個数だけでなく入力数まで見て比べてください。
プログラマブル配線|スイッチとマルチプレクサによる経路の選択
論理ブロックの間には、長さの違う配線が縦横に用意されています。配線同士が交わる箇所と、配線から論理ブロックの入力へ入る箇所にはスイッチがあり、オン・オフを決めるのは設定メモリの1ビットずつです。トロント大学の授業(ECE1388)で学生が作成したSRAM型FPGAの設計報告は、SRAMセルで制御するnMOSのパストランジスタで配線と論理を実装しています。市販のSRAM型FPGAでは、配線から論理ブロック入力への接続を個別のトランジスタではなくマルチプレクサで作る構成が使われていると、同大学のFPGA配線アーキテクチャ解説は説明しています。
AMDはこの接続点をPIP(Programmable Interconnect Point)と呼び、Vivadoの get_pips コマンドで1つずつ参照できます。配線スイッチを何段も通るほど遅延が増えるため、FPGAの動作周波数は論理の段数だけでなく配置と配線経路で決まります。次の章の実測では、この配線遅延が数字で見えます。
DSPブロック・ブロックRAM・CPUコア|LUTで組むと効率が悪い機能の専用回路
乗算器や大きなメモリをLUTで組むと、面積も遅延も大きくなります。そこで現在のFPGAは、乗算と加算を高速に行うDSPブロック、まとまった容量を持つブロックRAM(BRAM)、高速シリアル通信用のトランシーバを、書き換えできない専用回路として内蔵しています。AMDのZynqやVersalのように、ArmコアをFPGAと同じチップに載せ、OSはCPUコアで、重い信号処理はFPGA部分で動かす製品もあります。こうしたSoC FPGAの構成とLinuxからFPGA部分を動かす手順は、SoC FPGAのPS・PLの役割分担を解説した記事で扱っています。
8ビットカウンタを合成して確かめる|YosysとnextpnrによるLUT・フリップフロップの実数
HDLで書いた回路が実際にどの部品に置き換わるかは、合成ツールの出力を見ると確かめられます。2026年10月20日に、オープンソースの論理合成ツールYosys 0.70と配置配線ツールnextpnr 0.11.1(どちらもPythonパッケージ版のYoWASP)を使い、次の8ビットカウンタを合成しました。rstが1なら0にリセットし、rstが0なら立ち上がりクロックごとに1加算します。
module counter8(input clk, input rst, output reg [7:0] q);
always @(posedge clk) begin
if (rst) q <= 8'd0;
else q <= q + 8'd1;
end
endmodule
実行したコマンドは次のとおりです。ベンダーのアカウントもライセンスファイルも不要で、uvが入っていれば数分で同じ結果を再現できます。版を固定しないと結果が変わることがあるため、パッケージの版を指定しています。
uv run --no-project --python 3.12 --with yowasp-yosys==0.70.0.0.post1259 yowasp-yosys -p "read_verilog counter8.v; synth_ice40 -top counter8; stat; write_json counter8.json"
uv run --no-project --python 3.12 --with yowasp-yosys==0.70.0.0.post1259 yowasp-yosys -p "read_verilog counter8.v; synth_xilinx -family xc7 -top counter8; stat"
uv run --no-project --python 3.12 --with yowasp-nextpnr-ice40==0.11.1.0.post826 yowasp-nextpnr-ice40 --up5k --package sg48 --json counter8.json --asc counter8.asc --pcf-allow-unconstrained --freq 48
uv run --no-project --python 3.12 --with yowasp-nextpnr-ice40==0.11.1.0.post826 yowasp-icepack counter8.asc counter8.bin
AND・XORの比較に使ったのは、assign 文2行だけの次のモジュールです。上のコマンドの counter8 を gates に置き換えて同じ手順で処理しました。
module gates(input a, input b, output y_and, output y_xor);
assign y_and = a & b;
assign y_xor = a ^ b;
endmodule
合成結果|iCE40と7シリーズで異なる部品の割り当て
| 部品 | Lattice iCE40(synth_ice40) | AMD 7シリーズ(synth_xilinx) |
|---|---|---|
| LUT | 4入力LUT(SB_LUT4)x8 | 0(ネットリスト上) |
| キャリー回路 | SB_CARRY x6 | CARRY4 x2 |
| フリップフロップ | 同期リセット付き(SB_DFFSR)x8 | 同期リセット付き(FDRE)x8 |
| その他 | なし(I/Oは配置配線時に挿入) | INV x1・IBUF x2・OBUF x8・BUFG x1 |
どちらもフリップフロップは8個で、if (rst) の同期リセットはLUTを使わず、フリップフロップのリセット端子Rに直接つながっていました。違いが出たのは加算です。iCE40ではSB_CARRYが桁上がりだけを計算し、各桁の和はLUTが作ります。8個のうち7個はLUT_INITが 16'h6996(排他的論理和の真理値表)で、最下位ビットだけは 16'h00ff(反転)でした。7シリーズでは4ビット分のキャリーチェーンCARRY4の出力がそのままフリップフロップに入り、Yosysのネットリスト上にLUTは1個も現れませんでした。最下位ビットの反転だけがINVです。ただしUG474のキャリーロジックの説明では、CARRY4の入力SはLUTのO6出力から供給される構造のため、Vivadoで配置配線するとLUTの位置を信号の通り道として使います。
同じVerilogでも、割り当てられる部品と個数はアーキテクチャで変わります。LUT数で容量を見積もるときは、使うデバイス向けに合成し、配置配線後の使用率まで確かめるのが確実です。
配置配線とビットストリーム|配線遅延とファイルサイズの実測
iCE40UP5K(sg48パッケージ)に配置配線した結果は次のとおりです。
| 項目 | 8ビットカウンタ | AND・XORの2論理 |
|---|---|---|
| 論理セル(ICESTORM_LC) | 11 / 5,280 | 4 / 5,280 |
| 最大動作周波数(配線後の見積り) | 143.27MHz | なし(順序回路なし) |
| 経路の遅延 | FF間6.98ns(論理4.56+配線2.42) | ピン間5.92ns(論理1.21+配線4.71) |
| ビットストリーム(icepack出力) | 104,090バイト | 104,090バイト |
フリップフロップ間の最長経路6.98nsのうち、カウンタの最下位ビットが一般配線を通ってキャリーチェーンの入口へ届く区間だけで1.76nsかかっていました。一方、キャリーチェーン内の桁から桁への接続は、専用配線のため配線遅延が0.00nsです。加算器を専用のキャリーチェーンに載せる理由が、この差に表れています。
ビットストリームは、論理セル11個の回路でも4個の回路でも同じ104,090バイトでした。圧縮しないビットストリームは使った部分だけでなく、デバイス全体の設定メモリの中身を表すためです。LatticeのiCE40 Programming and Configurationも、iCE40UP5Kのビットストリームサイズを104,161バイト(833,288ビット)としています。icepackの出力とは71バイト違うため、設定用フラッシュの容量はメーカーの表の値で見積もってください。要件定義から実機検証までの工程と期間の見積りは、FPGA設計の流れと7工程の期間・体制の見積り方で扱っています。
コンフィギュレーション|設定データの保持方式と書き込みの経路
LUTの中身と配線スイッチの状態を覚えておくメモリを、コンフィギュレーションメモリと呼びます。ここへ設定データを読み込む操作をコンフィギュレーションと呼び、読み込み元のフラッシュへ書き込む作業とは区別されることがあります。
コンフィグメモリの3方式|SRAM・フラッシュ・アンチヒューズの違い
| 方式 | 電源を切ったとき | 書き換え | 代表製品 |
|---|---|---|---|
| SRAM | 設定が消える | 何度でも可 | AMD・Alteraの主力FPGA |
| SRAM+内蔵フラッシュ | 内蔵フラッシュに保持 | 可 | Lattice MachXO |
| フラッシュ | 保持する | 可 | Microchip PolarFire |
| アンチヒューズ | 保持する | 1回のみ | Microchip RTAX |
Microchipの資料は、SRAM方式のFPGAは電源を入れるたびに設定を読み込まないと動作せず、通常は外部の不揮発メモリから読み込むと説明しています。電源投入と同時に信号を出す必要があるリセット制御や電源シーケンス管理には、不揮発の方式が向いています。LatticeのMachXOは、動作中の論理はSRAMに置き、保存先として内蔵フラッシュを持つ中間的な構成です。iCE40 UltraPlusは、一度だけ書き込める内蔵の不揮発メモリ(NVCM)を持ち、動作中の設定はSRAMに保持します。
アンチヒューズは書き換えられない代わりに不揮発で、宇宙機器向けの放射線耐性FPGAに使われています。Microchipは放射線耐性品として、アンチヒューズのRTAXに加え、フラッシュ方式で全電離線量100krad超をうたうRTG4も提供しています。
書き込みの経路|モード端子で選ぶSPI・SelectMAP・JTAG
SRAM方式のFPGAが起動時にどこから設定を読むかは、モード端子で決めます。AMDの7シリーズ コンフィギュレーションユーザーガイド(UG470)は、M[2:0]端子の値とモードを次のように対応付けています。
| M[2:0] | モード | 主な接続先 |
|---|---|---|
| 000 | Master Serial | シリアルの設定用メモリ |
| 001 | Master SPI | SPIフラッシュ(x1・x2・x4) |
| 010 | Master BPI | パラレルNORフラッシュ(x8・x16) |
| 100 | Master SelectMAP | パラレルの設定用メモリ |
| 101 | JTAG | 開発用のケーブル |
| 110 | Slave SelectMAP | プロセッサなどの外部コントローラ |
| 111 | Slave Serial | プロセッサや別のFPGA |
ただしSpartan-7はBPIモードに対応しません。Masterの各モードはFPGA自身がクロックを出してフラッシュから読み、SlaveのモードはプロセッサなどがFPGAへ設定データを送り込みます。開発中はJTAGケーブルでパソコンから直接書き込んで試します。プロセッサから設定を送る構成にすれば、機器のファームウェア更新と一緒にFPGAの回路も差し替えられます。
CPU・GPU・ASIC・マイコン・PLCとの違い|処理の進め方と変更のしやすさ
| 観点 | CPU | GPU | FPGA | ASIC |
|---|---|---|---|---|
| 処理の進め方 | 命令列を実行(並列化機能あり) | 同種の演算を大量並列 | 回路として並列実行 | 回路として並列実行 |
| 製造後の変更 | ソフトで可 | ソフトで可 | 回路ごと書き換え可 | 不可 |
| 主な開発言語 | C・Pythonなど | CUDAなど | Verilog・VHDL | Verilog・VHDL |
| 初期費用 | 小 | 小 | 中(ツール・設計工数) | 大(マスク・試作) |
| 量産時の単価 | 汎用品の価格 | 汎用品の価格 | 割高 | 数量が出れば安い |
CPU・GPUとの違い|命令列による処理と専用回路による処理
FPGAの強みは、処理時間のばらつきが小さいことです。CPUではOSのスケジューリングやキャッシュの状態で処理時間が揺れますが、FPGAでは待ち合わせのない固定段数の同期パイプラインを組むと遅延を一定にできます。通信機器のパケット処理や計測機器のように、最悪時の遅延に上限が必要な用途でFPGAが選ばれるのはこのためです。ただし、外部メモリへのアクセスや通信先の待機要求を含む回路では、FPGAでも遅延が変動します。
データセンターでの実例に、MicrosoftのProject Catapultがあります。2014年の論文は、Bingの検索ランキング処理の一部をFPGAに載せ、同等のレイテンシ分布のままサーバーあたりのスループットが95%向上したと報告しています。一方、浮動小数点演算が中心の数値計算や、モデルを頻繁に入れ替えるAI開発では、GPUのほうが開発サイクルは短くなります。AI推論での使い分けはFPGAによるAI推論の実装とGPUとの使い分けで整理しています。
ASICとの違い|初期費用と量産単価のトレードオフ
ASICは特定用途のために回路を作り込んだ専用チップです。同じ回路ならFPGAより高速かつ低消費電力で、量産時の単価も下がります。ただし製造後は変更できず、マスク製作と試作に大きな初期費用がかかります。FPGAは汎用の論理ブロックと配線スイッチを抱えているぶん、同じ機能に対して面積・電力・単価で不利です。
そのため、仕様が固まる前や数量が少ない製品はFPGAで出荷し、数量が見込めて仕様を凍結できた段階でASICへ移す進め方がとられます。ASICを製造する前にFPGAで回路を動かして検証するASICプロトタイピングも、この関係から生まれた使い方です。どの数量からASICのほうが安くなるかはFPGAの価格とコスト構造、ASICとの分岐点で計算手順を解説しています。ASICの設計フローをRTLからレイアウト(GDSII)まで手元で試すなら、オープンソースのOpenLane2(LibreLane)のインストールと使い方が入口になります。
マイコンとの違い|ソフトウェア処理の限界と選定の優先順位
マイコンはCPUとメモリ・周辺回路を1チップにまとめた部品で、C言語などのプログラムで制御します。モーター制御やセンサーの読み取りでは、まずマイコンで要求を満たせるか確認します。FPGAが必要になるのは、割り込み処理では間に合わない速度で多数の信号を同時に扱う場合や、マイコンが持たない独自のインターフェースを作る場合です。同じ処理をCとVerilogで書き比べた比較はFPGAとマイコンの違いを5軸で整理した記事で扱っています。
PLCとの違い|チップの種類と制御装置の種類
PLC(プログラマブルロジックコントローラ)は名前が似ていますが、比べる階層が違います。IEC 61131-1はPLCを、産業環境で使うデジタル電子システムで、メモリに格納した命令によって論理・順序・タイマー・計数・演算の機能を実行し、入出力を通じて機械やプロセスを制御するものと定義しています。PLCは工場の盤に入る制御装置で、プログラムはラダー図などで書き、内部ではプロセッサが命令を順に実行します。
FPGAは、その装置の中に部品として入りうる側です。工場の設備制御を組むならPLCを選び、PLCや産業機器そのものを開発する側で高速な入出力の処理が必要になったときにFPGAを検討する、という分け方になります。
CPLD・PLDとの違い|規模と不揮発性で分かれる境界
PLD(Programmable Logic Device)は、製造後に論理機能を設定できるデバイスの総称で、一度だけ書き込める製品も含みます。PALやGALといった小規模なSPLD、それを複数まとめたCPLD、そしてFPGAがこの中に含まれます。MicrochipはPolarFireのセキュリティユーザーガイドでCPLDを「通常は単純で低密度なプログラマブルロジック」と定義しています。CPLDは不揮発で電源投入直後から動作し、規模が小さい代わりに信号の遅延を見積もりやすいため、基板上のアドレスデコードや電源シーケンス制御といった小さなつなぎの論理に使われてきました。
ただし境界は、デバイスの種類よりも製品ごとの分類で見るほうが確実です。AlteraのMAXシリーズはMAX IIとMAX VをCPLD、同じブランドのMAX 10をFPGAに分類しています。LatticeはMachXOを、CPLDと低容量FPGAのどちらを選ぶかという迷いをなくすためのデバイスと位置付けています。不揮発で小規模なFPGAが増えた現在、新規設計ではCPLDかFPGAかという区分より、必要なLUT数とI/O数、電源投入直後に動く必要があるかどうかで選ぶのが現実的です。
FPGAが採用される場面と、FPGAを選ぶべきでない条件
FPGAの採用分野|通信・計測・宇宙機器の要件
| 分野 | FPGAを使う理由 |
|---|---|
| 通信・ネットワーク機器 | 規格の改定に書き換えで追従できる |
| 映像処理・計測機器 | 多チャンネルの信号を同時に処理できる |
| データセンター | 検索や通信処理を低遅延で肩代わりできる |
| 宇宙・防衛 | 放射線耐性品を選べる |
| ASICの開発 | 製造前に回路を実機で検証できる |
宇宙向けには、AMDのVersal AI Core XQRシリーズのような放射線耐性の評価済み品があります。FPGAを組み込んだ機器のデータをクラウドへ集めて分析する仕組みまで含めて検討する場合は、弊社のAI/IoTソリューションでデバイス側とクラウド側をまとめてご相談いただけます。
FPGAを第一候補にしないほうがよい4つの条件
- 量産数が大きく仕様も凍結できる:単価と消費電力でASICや専用ICに負けます。
- 処理がCPUやマイコンのソフトウェアで間に合っている:FPGAの設計・検証工数が上乗せになるだけです。
- チームにHDLとタイミング検証の経験者がいない:タイミング違反やクロックをまたぐ信号の不具合は、ソフトウェアのデバッグの感覚では見つけにくい種類の不具合です。
- 浮動小数点主体の演算や、アルゴリズムを頻繁に入れ替える開発:GPUのほうが試行錯誤のサイクルが短く済みます。
高位合成(HLS)を使えばC/C++から回路を生成でき、AMDのVitis HLSはC/C++のコードをRTLに合成してプログラマブルロジックに実装します。ただし、HDLの手書きを減らせても、生成された回路の速度・使用率・タイミングを詰めるにはハードウェアの知識が必要です。高位合成の仕組みと手書きHDLとの使い分けは高位合成(HLS)とは何かを実装例つきで解説した記事で整理しています。
主要メーカーと開発ツール|2026年10月時点の現行版と無償で使える範囲
| メーカー | 主なFPGA | 開発ツール(現行版) | 無償で使える範囲 |
|---|---|---|---|
| AMD(旧Xilinx) | Artix・Kintex・Versal | Vivado 2026.1.1 | BASICティア(2026.1まで) |
| Altera | Cyclone・Agilex・MAX 10 | Quartus Prime Pro 26.1.1 | Lite 25.1・ProのAgilex 5 E/3 |
| Lattice | iCE40・MachXO・Certus-NX | Radiant 2026.1.1・Diamond 3.14 | 対象ファミリの無償ライセンス |
| Microchip | PolarFire・RTG4 | Libero SoC 2026.1 | Silver・Evaluation |
| オープンソース | iCE40・ECP5 | Yosys 0.70+nextpnr 0.11.1 | 全機能 |
AMDは2026年9月10日にVivado 2026.1.1を公開しています。2026.1以降の無償枠は12か月ごとにライセンスを作り直すBASICティアで、対象はZU5以下のデバイスです。同じ配布ページには、BASICティアは2026.1.1のようなマイナーリリースに対応しないと明記されているため、無償で使うなら2026.1本体を入れてください。Alteraの無償版はQuartus Prime Lite Edition 25.1で、Pro EditionでもAgilex 5 EシリーズとAgilex 3向けの無償ライセンスを取得できます。LatticeはRadiant 2026.1.1(2026年10月8日公開)とDiamond 3.14で、それぞれ対象ファミリに無償ライセンスを出しています。MicrochipのLibero SoCは、全デバイスを扱えるが書き込みのできない期間限定のEvaluationと、書き込みはできるが対象デバイスが限られるSilverを無償で提供しています。
どのツールも無償範囲はデバイスファミリで区切られているため、使いたいデバイスが対象かを先に確認してください。オープンソースのYosysとnextpnrはiCE40をProject IceStorm経由で、ECP5をProject Trellis経由でサポートし、本記事の実測のとおりビットストリーム生成まで通せるため、学習やCIでの合成チェックに向きます。製品ラインと供給条件まで含めた4社の選び分けは、FPGAメーカー比較|主要4社の製品レンジ・開発ツール・供給条件で選ぶ基準にまとめました。これらのツールで使う設計言語の選び方は、FPGA開発言語の選び方|Verilog・VHDL・SystemVerilogの違いと判断表で解説しています。
よくある質問
FPGAとは簡単に言うと何ですか?
買ったあとに中の回路を自分で決められるチップです。小さなメモリでできたLUTに真理値表を書き込み、配線スイッチのつなぎ方を設定データで決めることで、ANDやカウンタのような論理回路を作ります。設定データを書き換えれば、同じチップを別の回路として使えます。
FPGAのLUTとは何ですか?
入力の組み合わせをアドレスにして1ビットを読み出す小さなメモリで、真理値表を丸ごと保持して論理を作る部品です。2入力なら4ビット、6入力なら64ビットの設定値を持ち、2入力ANDの設定値は16進数で8になります。
FPGAとCPUの違いは何ですか?
CPUは命令列に従って処理する汎用プロセッサで、FPGAは設定データで専用回路を組み、処理を回路として並列に実行するデバイスです。FPGAは固定段数のパイプラインを組めば遅延のばらつきを小さくでき、並列度も自由に設計できますが、開発にはHDLと回路設計の知識が必要です。
FPGAとPLCの違いは何ですか?
PLCは工場の機械を制御する装置で、内部のプロセッサがラダー図などのプログラムを順に実行します。FPGAは半導体チップの種類で、PLCや産業機器の中に部品として組み込まれることがあります。
FPGAとASICはどちらを選ぶべきですか?
仕様が変わる可能性がある場合や生産数量が少ない場合はFPGA、仕様を凍結でき大量生産で単価と消費電力を下げたい場合はASICが向いています。FPGAで出荷を始め、数量が見込めた段階でASICへ移す進め方もあります。