プログラマブルロジックデバイス
FPGA (Field Programmable Gate Array) とは、利用者が独自の論理回路を書き込むことの出来るゲートアレイの一種である。プログラマブルロジックデバイスの中で特に再書き換え可能であるものをこう呼ぶ。 内部構造の一例としては、任意の論理を構成可能な4入力程度の組合わせ回路と順序回路からなる論理ブロックが、格子状に数十×数十程度配置され、その間の配線を簡易なクロスバースイッチで接続した構造をもつものが挙げられる。
FPGAの厳密な定義は明確でなく、利用者やメーカーなどが独自の解釈でそう呼んでいるようだが、書き込み可能な回路規模はおおよそ1,000ロジックエレメント(約20,000ゲート)以上のものをFPGAと呼ぶことが多い。
デバイス上に多数のLUT(Look Up Table、表引き方式。入力ビット列をインデックスとして出力すべき真理値を格納したメモリをアクセスする機構により任意の真理値表に対応する組み合わせ回路を実現できる)、D-FF(Dフリップフロップ)、ルーティング資源(チャネル及びスイッチ)を搭載し、これを組み合わせて回路を構成する形式が主流である。LUTの内容、D-FFの動作モード、ルーティングの情報(スイッチの状態)を保持する要素として、SRAMを用いる。 電源を切ると回路情報が揮発してしまうため、動作させるには外部に専用のROMを接続し、電源投入時に回路情報をロードしてから使用するタイプが一般的である。この回路情報をロードすることをコンフィギュレーションと言う。 一時期この専用ROMが高価であったため、汎用のフラッシュメモリからコンフィギュレーションを可能にする専用LSIも開発された。 SRAM型デバイスは前述のEEPROM型デバイスと違って構成情報の更新が比較的容易で高速であり、システムの動作中に構成を変更するような使い方も可能である。この特徴のためリコンフィギュラブル・デバイスやダイナミック・リコンフィギュラブル・デバイスを実現するための基本的な構成となっている。