FPGAとは? あとから回路を書き換えられるチップのしくみ

約13分 · 更新: 2026年10月23日

FPGAは、工場で作ったあとに、中の論理回路を何度でも組み替えられるチップです。中には、答えを書いた小さな表(LUT)と、つなぎ方を切り替えられる配線が大量に並んでいます。設定データを読み込むと、それらが目的の回路として働きます。専用のチップ(ASIC)より遅く電力も多く使いますが、チップを作り直す費用と時間がかからないのが強みです。

この記事でわかること

  • 「回路をあとから書き換えられる」とはどういうことか。プログラムを書き換えるCPUとの違い
  • FPGAの中の3つの部品(LUT・フリップフロップ・配線)のしくみ。ANDとXORの例で
  • FPGAの回路の作り方と、専用のチップ(ASIC)との使い分け
  • どこで使われているか、主なメーカーの歴史

前提知識: AND・XORなどの論理ゲートと真理値表を知っていると読みやすくなります。「コンピュータは0と1でどう計算するの?」で説明しています。

身近なところでは

FPGAは、スマホや家電の中ではあまり見かけません。よく使われるのは、携帯電話の基地局、測定器、データセンターのサーバ、人工衛星などです。どれも、作る台数が少なめか、出荷後に働きを変えたい機器です。

新しいチップを開発する会社でも、FPGAは欠かせません。工場でチップを作る前に、設計した回路をFPGAに入れて、本当に動くかを試すからです。

FPGAとは: 回路をあとから決められるチップ

ふつうのチップは、設計した回路を工場で作り込みます。トランジスタのつなぎ方は、できあがった時点で決まり、あとから変えられません(「集積回路(IC)とは?」)。CPUも、回路そのものは固定です。CPUで変えられるのは、回路に実行させる命令の並び、つまりプログラムのほうです(「CPUとは?」)。

これに対してFPGAは、回路そのものを、買ったあとで決められるチップです。中には、どんな働きにもなれる小さな部品と、それらを結ぶ配線が、碁盤の目のように並んでいます。どの部品に何をさせ、どうつなぐかを設定すると、その回路として動きます。

名前は英語のField-Programmable Gate Arrayの頭文字です。「現場(field)で設定できる(programmable)、ゲートの並び(gate array)」という意味です。

しくみ1: LUT ― 答えを書いた小さな表

論理回路の働きは、真理値表で書けます。入力のすべての組み合わせと、そのときの出力を並べた表です。たとえば2入力のANDは、入力の組み合わせが4通りなので、4行の表になります。

FPGAは、ゲートを組み立てるかわりに、この表をそのまま小さなメモリに書いておきます。入力の0と1で「表の何行目か」を選び、そこに書いてある値を出します。表を引いて答えを出すので、この部品をルックアップテーブル(LUT)と呼びます。

2入力のLUTは、4つの記憶の箱と、箱を1つ選ぶ回路でできています。ANDにしたいときは、4つの箱に上から0・0・0・1と書きます。入力がA=1、B=1なら4番目の箱が選ばれ、1が出ます。それ以外の入力では0が出るので、ANDと同じ働きです。

2入力のLUT: 入力AとBで4つの箱から1つを選び、その値を出力する AB ANDの場合 00 01 10 11 0 0 0 1 選ぶ 出力 1 1 1 A B 入力
左の00〜11はAとBの値の組み合わせです。A=1、B=1なので「11」の箱が選ばれ、中の1が出力されます。省略していること: 箱を選ぶ回路の中身、箱の中身を書き込むための回路。

同じLUTの箱を、上から0・1・1・0に書き換えてみます。すると、入力が違うときだけ1を出すようになります。これはXORの働きです。ゲートを付け替えなくても、箱の中身を書き換えるだけで、別の回路になるのです。

ABANDなら箱の中身XORなら箱の中身
0000
0101
1001
1110

4つの箱の0と1の書き方は16通りです。2入力の論理の働きも、全部で16通りです。2入力のLUTは、そのどれにでもなれます。

実際のFPGAのLUTは、もっと入力が多くなります。たとえばAMDの7シリーズというFPGAでは、6入力のLUTを使います。箱の数は2を6回掛けた64個で、6入力のどんな論理でも1つのLUTで作れます。

しくみ2: フリップフロップ ― 結果を覚えておく

LUTの出力は、そのときの入力だけで決まります。これだけでは、「さっきまで何だったか」を覚えられません。数を数える回路や、計算を何段かに分けて順に流す回路には、値を覚えておく部品が要ります。

そこでFPGAでは、LUTのすぐ隣にフリップフロップを置きます。フリップフロップは、0か1かの1ビットを覚えておく部品です。決まった合図が来た瞬間にだけ入力を取り込み、次の合図まで同じ値を出し続けます。

この合図は、一定の間隔で0と1をくり返す信号で、クロックと呼びます。CPUの「3GHz」と同じ種類の信号です。LUTとフリップフロップを何組かまとめたものを、ここでは「論理ブロック」と呼びます。

入力だけで出力が決まる回路と、覚えた値も使う回路の違いは、「組み合わせ回路と順序回路の違い」で表にまとめています。

しくみ3: つなぎ方を切り替えられる配線

論理ブロックの間には、縦と横に配線がたくさん通っています。配線が交わる所には、つなぐか切るかを選べるスイッチがあります。スイッチの正体はトランジスタで、オンかオフかは、そばの記憶の箱の0と1で決まります。

ある論理ブロックの出力を、別のブロックへ届けたいとします。途中のスイッチをいくつかオンにして、道筋を作ります。どのスイッチをオンにするかで、回路のつなぎ方が決まるのです。

FPGAの中: 論理ブロックと専用の部品の間を、スイッチ付きの配線がつなぐ 論理 RAM 論理 論理 DSP 論理 論理 RAM 論理 オンのスイッチ オフのスイッチ
「論理」は論理ブロック、「RAM」と「DSP」はあとで説明する専用の部品です。太い線が、スイッチをオンにして作った道筋です。省略していること: 実際のブロックと配線の数(数千〜数百万)、入出力の端子、クロックを配る専用の配線。

配線とスイッチは、どんな回路を入れても困らないように、使わないかもしれない道まで用意しておきます。その分、トランジスタと面積が余分に要ります。これが、あとで見る「専用のチップより遅く、電力も多い」理由の一つです。

専用の部品も入っている

掛け算のような大きな計算をLUTで作ると、LUTがたくさん要り、遅くなります。そこで今のFPGAには、決まった働きの回路も最初から作り込まれています。これをハードブロックと呼びます。

  • DSPブロック: 掛け算と足し算をまとめて速く行う回路。DSPは「デジタル信号処理」の英語の頭文字で、音や電波の処理、AIの計算に使います
  • ブロックRAM: まとまった量のデータを置いておく、チップの中のメモリ
  • 高速トランシーバ: ほかのチップと、少ない本数の線で速くデータをやり取りする回路(SerDes)
  • CPUコア: Armなどのプロセッサを入れた製品もあります。プログラムで動く部分と、回路を組む部分を、1つのチップに持てます

設定データは、電源を入れるたびに読み込む

LUTの箱の中身も、配線のスイッチのオン・オフも、すべて0と1のデータです。これを1つにまとめたものを、ビットストリームと呼びます。FPGAに「回路を書き込む」とは、このデータを中の記憶の箱に読み込ませることです。

多くのFPGAは、この記憶の箱に、電源を切ると中身が消える種類のメモリ(SRAM)を使います。そのため、電源を入れるたびに、同じ基板に載せたフラッシュメモリなどからビットストリームを読み込みます。読み込みが終わるまでは、FPGAは目的の回路として働きません。

一方、電源を切っても設定が消えない製品もあります。たとえばMicrochip社のPolarFireというシリーズは、設定をフラッシュメモリの一種に記憶します。外に設定用のメモリを置かずに済み、電源を入れてすぐに動けます。

FPGAの回路はどうやって作る?

FPGAの回路の作り方は、専用のチップ(ASIC)の設計とよく似ています。大きく違うのは最後です。設計データを工場に送るかわりに、ビットストリームを作ってFPGAに読み込ませます。

  1. 働きを書く: 回路の動きを、ハードウェア記述言語(HDL)で書きます。よく使われるのはVerilogとVHDLです。
  2. 回路に直す: 書いた動きを、ソフトがLUT・フリップフロップ・ハードブロックの組み合わせに変えます。この作業を論理合成と呼びます。
  3. 並べてつなぐ: どの論理ブロックを使い、どのスイッチで結ぶかを、ソフトが決めます。これを配置配線と呼びます。
  4. 書き込む: 結果をビットストリームにして、FPGAに読み込ませます。
  5. 確かめる: 動かして確かめ、直すなら1に戻ります。

HDLはプログラムの言葉に似ていますが、書くのは命令の順番ではなく、回路の形です。2つの言語の違いは「VerilogとVHDLの違い」で比べています。

最近は、C言語やC++で書いた計算の手順から、HDLにあたる回路の記述を自動で作る方法も使われます。これを高位合成(HLS)と呼びます。

CPU・FPGA・ASICの違い

CPUは、決まった回路で、命令を1つずつ取り出して実行します。どんな仕事もこなせるかわりに、命令を取り出して解読する手間が毎回かかります。FPGAは、仕事に合わせた回路を組んで動きます。たとえば「掛けて、足して、比べる」を、別々の回路で同時に進められます。

ASICは、1つの仕事のためだけに設計して、工場で作るチップです。同じ働きを同じ世代の技術で作れば、ふつうはASICが最も速く、電力も少なく済みます。ただし、作り始めるまでに、設計や回路の原版(マスク)に大きな費用がかかります。たくさん作って、この費用を1個あたりで薄めないと元が取れません。

CPUFPGAASIC
あとで変えられるものプログラム回路そのもの変えられない
決まった仕事の効率(目安)低め中くらい最も高い
チップを作る費用不要(既製品)不要(既製品)とても高い
向いている場面何でもこなす少量、仕様が変わる大量、仕様が固まった
作る数が少ないとFPGA、多いとASICのほうが1個あたり安い 1個あたりの費用 ASIC FPGA 分かれ目 少ない 多い 作る数 →
1個あたりの費用は、作り始めの費用を作る数で割った分と、1個を作る費用の合計です。ASICは作り始めの費用が大きいので、少ししか作らないと高くつきます。たくさん作ると、ある数を境にFPGAより安くなります。名前の左の短い線の色で、どちらの線かを示します。省略していること: 実際の金額と目盛り(縮尺はありません)。分かれ目の数は、製品や世代で大きく変わります。

3つの違いと、システム全体を1つにまとめたチップ(SoC)との関係は、「ASIC・FPGA・SoCの違い」でも表にしています。

なぜ専用のチップより遅く、電力も多いのか

FPGAでは、信号が論理ブロックの間を移るたびに、いくつものスイッチと長い配線を通ります。ASICなら2点を最短の配線で結べますが、FPGAでは用意された道を乗り継ぐしかありません。また、ANDのような小さな働きにも、64個の箱を持つLUTを1つ使うことがあります。

この差を測った研究があります。トロント大学のKuonとRoseは2007年の論文で、同じ回路をFPGAとASICで作り比べました。どちらも同じ世代(90nm)の技術です。LUTとフリップフロップだけで作った場合、FPGAは面積が平均で約35倍、信号が回路を通り抜ける時間が約3〜4倍でした。

電力は、0と1が切り替わるときに使う分(動的な電力)を比べ、FPGAが約14倍でした。一方、ハードブロックを使うと、面積の差は約18倍まで縮まりました。20年近く前の世代での測定なので、今の製品では数字が違います。ただ、書き換えられる分だけ効率が落ちる理由は今も同じです。

どこで使われている?

  • 新しいチップの試作: 工場でASICを作る前に、設計した回路をFPGAに入れ、実際のソフトを動かして確かめます。この用途のための、とても大きなFPGAもあります。
  • 通信機器: 通信の規格は改訂が続きます。基地局などにFPGAを使えば、出荷後に回路を直せる余地を残せます。
  • 測定器や産業用の機器: 作る台数が少なく、専用のチップでは割に合わない製品です。
  • データセンター: Microsoftは2014年の論文で、検索エンジンBingの順位づけの計算をFPGAで速めた試験を報告しました。1,632台のサーバに1枚ずつFPGAを載せ、1台あたりの処理量が95%増えています。
  • 宇宙: 人工衛星では、打ち上げたあとに地上から回路を書き換えられることが強みです。宇宙では放射線で記憶のビットが反転するソフトエラーが起きやすいので、それに備えた宇宙向けの製品が使われます。

FPGAの歴史とメーカー

FPGAを考え出したのは、米国の技術者ロス・フリーマン(Ross Freeman)です。彼は1984年、このアイデアを製品にするため、仲間とXilinxを設立しました。そして1985年、最初のFPGAとされるXC2064を発表します。中の論理の部品は64個でした。

FPGAの大手として長く知られてきたのが、XilinxとAlteraの2社です。

  • 2015年12月: IntelがAlteraの買収を完了
  • 2022年2月: AMDがXilinxの買収を完了。Xilinxの製品はAMDの製品として売られています
  • 2025年9月: 投資会社のSilver LakeがAlteraの株式の51%を取得。AlteraはIntelの子会社ではなくなりました(Intelは49%を保有)

このほか、LatticeやMicrochipなどもFPGAを作っています。ここで書いた会社の関係は、2026年10月時点のものです。

よくある誤解

誤解: FPGAは、CPUのようにプログラムを実行している

実際は、ビットストリームは命令の並びではありません。LUTの中身とスイッチのオン・オフを決める「回路の設定」です。書き込んだあとは、その回路が信号をそのまま処理し、命令を取り出す動きはありません。ただし、CPUコアを内蔵した製品などでは、そのCPUがプログラムを実行します。「プログラムする」という同じ言葉が、誤解のもとです。

誤解: FPGAを使えば、どんな処理でもCPUより速くなる

実際は、速くなるのは、同時に進められる計算が多く、手順が決まった処理です。前に見たとおりFPGAの回路は信号が通るのに時間がかかり、クロックはふつうCPUより低めです。条件で手順が大きく変わる処理などでは、CPUのほうが速いこともよくあります。大量の掛け算には、GPUを使うことも多くあります(「なぜAIにGPUが使われるの?」)。

誤解: 一度書き込んだら、もう変えられない

実際は、多くのFPGAは、別のビットストリームを読み込ませれば何度でも書き換えられます。SRAMを使う製品は、電源を入れるたびに設定を読み込み直しているくらいです。ただし、一度しか書き込めない方式(アンチヒューズ)の製品も、宇宙向けなど一部にあります。

数字で見る

項目数字
最初のFPGA XC2064(1985年)の論理の部品64個
試作用のAMD Versal Premium VP1902(2023年発表)の規模1,850万ロジックセル
FPGAとASICの差(Kuon・Rose、2007年、90nmの世代)面積 約35倍、遅れ 約3〜4倍、動的な電力 約14倍

ロジックセルは、メーカーが決めた規模の数え方です(AMDは6入力のLUT 1個を1.6ロジックセルと数えます)。XC2064の「64個」とは数え方が違い、単純には比べられません。それでも、約40年で規模が桁違いに大きくなったことはわかります。

もっと詳しく学ぶ

次に読む

シリーズ「コンピュータのしくみ」の記事

  1. コンピュータは0と1でどう計算するの? 2進数と足し算の回路
  2. CPUとは? パソコンやスマホの中で何をしているのか
  3. なぜAIにGPUが使われるの? 大量の掛け算を同時にこなすしくみ
  4. OSとは? パソコンやスマホで何をしているソフトなのか
  5. キャッシュメモリとは? CPUがメモリを待たずに済むしくみ
  6. NPUとは? スマホやPCのAI専用回路のしくみ
  7. FPGAとは? あとから回路を書き換えられるチップのしくみ
  8. 文字コードとは? 文字化けが起きる理由とUTF-8
  9. ASICとは? 特定用途向けのチップとCPU・FPGAとの違い
  10. コンパイラとは? プログラムが機械語になるまで
  11. 論理ゲートとは? AND・OR・NOTで計算できるしくみ
  12. RISC-Vとは? 誰でも使える命令セットのしくみ
  13. アルゴリズムとは? 手順の工夫で計算が速くなるしくみ
  14. データベースとは? 表・SQL・インデックスのしくみ
  15. Gitとは? バージョン管理のしくみとGitHubとの違い

この分野の問題: LSI設計フロー・EDA

参考にした資料

やさしい解説の一覧へ