はじめまして。入社以来わからないことだらけでいっぱいいっぱいになっている 梅おにぎり です。
今回は初めて FPGA について知った時のことを書きました。

入社当初の私: 「あのー、 FPGA ってなんですか?」

先輩: 「論理回路やその接続をプログラミングで書き換えできるデバイスだよ」

プログラムで回路や接続を書き換えできると初めて聞いた時、私は次のようなイメージを持ちました。
配置されている論理素子を配線が動いて接続する。

でも、そんなことってありえませんよね。

では どうやったら書き換えが可能になるのでしょうか?
そんな疑問を解決すべく、FPGA が書き換え可能な原理について調べてみました。

 
FPGA の書き換え可能部位は、大きく分けて 下図のようにロジック・エレメント (LE) と配線から構成されています。

これら LE と配線の役割について説明していきます。

LE は、ルック・アップ・テーブル (LUT) とフリップフロップ (FF) から構成されています。
LUT は、4 入力 1 出力となっていて、下図のような真理値表として表すことができます。
LUT のテーブル情報は SRAM に保存されています。そのため SRAM のテーブル情報を書き換えることで、様々な論理として使用することが可能になるのです。

下図は、4 入力 1 出力 AND 回路の論理が LUT に書き込まれている場合の例です。

配線は、LE 間を縦横に複数で繋いでいます。この配線の交差する部分がポイントとなっています。
この部分はパス・トランジスターと言うスイッチから構成されており、信号を上下左右、任意の方向に伝えることができます。
そのため LE 間は自由に接続させることが可能になっています。

LE と配線のそれぞれがうまくかみ合って、書き換え可能なデバイスができあがることがわかりました。
書き換え可能な原理がわかると、配線が動くと考えていたのが少し恥ずかしいですね。