製造後に内部論理を書き換えてプログラムできる集積回路。
FPGA(エフピージーエー、Field Programmable Gate Array)とは、製造された後でも、利用者が内部の回路(論理)を自由に書き換えてプログラムできる集積回路のことです。チップの中には論理ブロック(小さな回路部品)がたくさん並んでいて、それらをどう配線でつなぐかを書き換えることで、いろいろな回路を作り出せます。
身近な例で考えると、レゴブロックに似ています。同じブロックの集まりから、組み方を変えれば家にも車にも作り替えられます。FPGAも、内部のブロックのつなぎ方(=設計データ)を変えるだけで、まったく別の機能の回路に変身できるのです。
上の図解では、青い論理ブロックの格子に、赤い配線を引いて回路を作る様子を示しています。この配線は何度でも引き直せます。
ここで言う「プログラム可能」とは、ソフトウェアを書くことではなく、ハードウェアの回路そのものの構成を書き換えられるという意味です。具体的には、内部の論理ブロックの動作と、それらをつなぐ配線のつなぎ方を、設計データを書き込むことで決めます。
この仕組みには次のうれしさがあります。
・その場で修正できる:回路に間違いが見つかっても、設計データを書き直すだけで直せる
・同じチップを使い回せる:書き換えれば、まったく別の機能の回路にできる
・すぐ試せる:工場に発注して何週間も待つ必要がなく、開発が速い
名前のField(フィールド = 現場)は、まさにこの「工場ではなく利用者の手元(現場)で書き換えられる」性質を表しています。
FPGAは何度でも書き換えられて手軽な一方、ASIC(特定用途専用に作られ、製造後は機能が固定される集積回路)に比べると、同じ機能なら処理速度や消費電力の面で少し劣り、大量生産したときの単価も高めになります。そのため、両者は生産量や仕様の固まり具合で使い分けます。
| 場面 | 向くのは |
|---|---|
| 試作・開発初期で仕様が変わりそう | FPGA |
| 少量しか作らない | FPGA |
| すぐ動かして検証したい | FPGA |
| 仕様が確定し大量生産する | ASIC |
| 最高の性能・最小の消費電力が必要 | ASIC |
実際の開発では、まずFPGAで試作して動作を確認し、仕様が固まって大量生産する段階でASICに切り替えるという流れもよく取られます。FPGAは「書き換えられる柔軟さ」、ASICは「固めた最適化」と覚えると、両者の役割の違いがつかみやすくなります。
Q1FPGA の特徴として最も適切なものはどれか。
Q2FPGA における「プログラム可能」の意味として正しいものはどれか。
Q3FPGA と ASIC の使い分けに関する記述のうち、適切なものはどれか。