FPGA(Field Programmable Gate Array)とは

FPGAとはハードウェア記述言語(HDL:Hardware Description Language)により書き換え可能なハードウェアデバイスである.

どのようなところで使われているのか?

比較的最近まではLSI設計の試作段階で用いられる程度であったが, 現在では携帯電話の基地局やそれらを支える各種ネットワーク機器, 地上波ディジタル局など数多くの製品/組み込み機器に搭載されるようになっている. (その他, 無人火星探索ロボットやギブソンのフルディジタルギターにも利用されている)

なぜ?

携帯電話の基地局やネットワーク機器などは規格の変更が頻繁に発生する. 従って, 規格変更の度にハードウェアの設計を行っていてはお金も時間もかかってしまう. そこでプログラムを変更するだけで新しい規格に対応することのできるFPGAが脚光を浴びたのである.

取り扱っている会社は?

Xilinx(ザイリンクス)とAltera(アルテラ)の2社が最も有名である. ただし論理セルの構成などが若干異なる.

欠点はないのか?

欠点としては次のことが挙げられる. 設計に使用するHDL(Verilog-HDL, VHDLなど)はある程度ハードウェアを意識して記述しなければならない. …C言語のようにアルゴリズムを記述するだけでは済まない. (最近ではC言語に似たSpec-CやSystemCによる開発も提案されているがまだまだ一般的でないのが現状である) 高い精度を必要とする演算には適していない. 大容量メモリの搭載やディジタル-アナログ混載も困難である. 近年では実行中に自分自身を書き換え可能なFPGAも登場し, 進化するハードウェアの実現に向けた研究も行われている.

FPGAの構造

FPGAは多数の論理セルとそれらの間に張り巡らされた配線網で構成される. ASIC(セルベース/ゲートアレイ)との構造の違いを下に示す.

FPGA ASIC(セルベース) ASIC(ゲートアレイ)
   FPGA           ASIC(セルベース)          ASIC(ゲートアレイ)