FPGAは、端的に言えばSRAMと配線の塊と言っても間違いではない。SRAMとはランダムアクセス可能なメモリーの一種で、記憶保持のための動作を必要としない点が特徴だ。なぜ、SRAMを使って回路が作れるのか、といったFPGAの本質的な話を今回は解説する。

論理回路を組み合わせて作る

 そもそもデジタル回路は論理回路をベースに実装されている。論理回路はNOT、AND、ORという基本的な回路があり、これを組み合わせるとNAND(NOT+AND)、NOR(NOT+OR)、XORといった回路も作れる。さらにこれらを組み合わせることで、エンコーダ、デコーダ、加算器、乗算器、シフター、ラッチなどと様々な回路が作れる。こうして、プロセッサやアクセラレーターといったより複雑な回路を構築していくことになる。

 論理回路と対になるのが、真理値表である。下に、簡単な例としてNOTとANDの回路記号とその真理値表をまとめた。要するに入力(A・B)の組み合わせで出力(Y)が表の形で規定できることになる。

図1●NOTとANDの回路記号と真理値表
[画像のクリックで拡大表示]

 これはもっと複雑な回路でも同じことだ。下は2ビットの加算器を構成した例だ。2ビットの入力(A0・A1とB0・B1)を加算した結果が3ビットのY(Y0・Y1・Y2)として出力される。真理値表は入力と出力をまとめたものだ。

図2●2ビットの加算器とその真理値表
[画像のクリックで拡大表示]

 ここで「入力を真理値表と照らし合わせて出力すれば、論理回路組む必要はないのでは?」というアイデアが出てくるだろう。最初にこれを実装したのは「PLD(Programmable Logic Device)」で、当初は「PAL(Programmable Array Logic)」や「GAL(Generic Array Logic)」といった商品名で提供されていた。これは真理値表を電気的なヒューズを使って配列の形で格納しておき、入力があったらその配列を参照し、結果を出力するという仕組みである。

図3●真理値表をテーブルとして保持しておき、論理回路を組まずに値を出力する仕組みの概要。
[画像のクリックで拡大表示]

 例えば図2の回路であれば、入力が4ビットなのでテーブルの行数は16行、出力は3ビットなので合計48ビット分のテーブルを用意すれば回路を実現できることになる。PALやGALといった製品は1990年代には広く利用されていた。例えば「22V10」というGALは入力・出力共に10ビットで、22ピンのDIPパッケージで提供されており、うまく使うとこれ一つでCMOSのロジックIC換算で5~6個分の回路を詰め込めた。

この先は会員の登録が必要です。今なら有料会員(月額プラン)は12月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら