FPGAという名のLSIを知る ―― FPGAの構造と使い方

ここでは,「FPGAという言葉は聞いたことがあるけど,どのようなLSIかよく分からない」という方に向けて,FPGAの概要をQ&Aスタイルで説明します.詳細には踏み込んでいませんので,必要に応じて学習を進めてください. (編集部)

1.FPGAって何ですか?

 FPGAは,Field Programmable Gate Arrayの略称です.ゲート・アレイ(Gate Array)というのは,ユーザの設計によって半導体メーカが製造するカスタムLSIの一種です.それと同様の機能をフィールド(Field;LSIを使用する現場)でプログラム可能(Programmable)にしたということから,FPGAと呼ばれるようになりました.
 FPGAは,1個のLSIの中の配線をいろいろとつなぎ替えて,所望の論理回路を自由に作れるようにしたLSIです.買ってきたばかりのFPGAは,まだ回路が構成されていない状態なので,そのまま使うことはできません.設計した回路情報を所定の方法で書き込むことによって,FPGA内部の回路が確定し,LSIとして所望の機能で動作するようになります.
 LSIの中はたくさんのトランジスタと,トランジスタを接続して回路を構成するための配線からできています.通常のLSIは,この配線は半導体メーカが工場で作ってパッケージで密封するので,ユーザがつなぎ替えることはできません.
 それでは,FPGAはどうやって配線をつなぎ替えるのかというと,つなぎ替えるためのたくさんの断片的な配線やスイッチ,スイッチの状態を切り替える仕組みをあらかじめLSIの中に用意してあるのです.その仕組みは,FPGAの端子を通して電気的に制御できます.
 LSIの中のトランジスタごとにつなぎ替えられるようにすると,スイッチやそれを切り替える仕組みが膨大になり,肝心の回路を作るスペースがなくなってしまいます.そこで,FPGAではある程度まとまった「基本セル」を固定回路として作っておき,基本セルと基本セルの間を配線して回路を構成します.また,基本セルの内部でいくつかの機能を選択可能にすることもあります.
 代表的なFPGA製品は,組み合わせ論理を実現するルックアップ・テーブル(LUT:Look-up Table)と,順序論理を実現するフリップフロップを組み合わせて,基本セルとしています.

2.ルックアップ・テーブルって何ですか?

 ルックアップ・テーブルは,一言でいえば真理値表です.真理値表で定義された動作をその通りに実行する回路がルックアップ・テーブルです(図1).
 組み合わせ論理はすべて真理値表で書き表せます.ルックアップ・テーブルを必要な個数だけ用意すれば,あらゆる組み合わせ論理を作れます.
 FPGAで一般的に使われているのは,4入力1出力のルックアップ・テーブルです.これは,四つの入力値(それぞれ'0'または'1')の組み合わせで,一つの出力値('0'または'1')が決まるものです.入力の組み合わせは24=16通りありますから,ルックアップ・テーブルの出力として,この16通りに対応した値を用意しておく必要があります.
 そのため,4入力ルックアップ・テーブルには16ビットのメモリが入っています.また16ビットの中から出力すべき1ビットを選ぶために,アドレス選択回路が入っています.メモリに16ビットの値をあらかじめ書き込んでおけば,ルックアップ・テーブルは4ビットの入力(アドレスとして働く)に対応する1ビットの出力(メモリの値)をいつでも出力してくれます.
 FPGAの内部回路を設計すると,組み合わせ論理の部分は4入力の真理値表の集まりとなり,それぞれの真理値表の動作は16ビットのデータだけで定義されます.これを,回路情報としてFPGAの中に書き込みます.
 ルックアップ・テーブルを使わずに,例えばAND,OR,NOTといった基本ゲートの配線をつなぎ換えたり,トランジスタ・レベルで配線をつなぎ換えて組み合わせ論理を実現する方法もありますが,接続スイッチが大量に必要だったり,大量の配線情報の記憶が必要だったりして,あまり効率の良いFPGAを作れません.そのため,現在のFPGAはほとんどがルックアップ・テーブルを基本素子として用いています.

 

14fpga1_f01.gif  
図1 ルックアップ・テーブルの仕組み

3.なぜFPGAを使うのですか?

 FPGAを使えば,自分で設計した回路をその場でLSI化できます(図2).現在の電子回路は,主要な機能はすべてLSIの内部で実現されています.
 システム設計者は,与えられた仕様を実現するために,標準品として発売されているLSIを使ったり,ASICやFPGAなど「独自に設計して作る」LSIを使ったりします.既製品だけで構成できる場合も多いのですが,それだけでは既存のシステムと似たような性能,機能になりがちです.新規にに設計した機器を競合の機器と差異化したければ,「独自に設計して作る」部分が必要です.
 ASICとFPGAの基本的な違いは,ユーザ設計による回路を,いつ,誰がLSIに組み込むかです.ASICは,設計した回路情報を元に,半導体メーカが製造するLSIです.完成した後の変更はできません.開発期間が長く,開発費も高くなります.そのかわり,大量生産時には単価を安くできます.
 FPGAは,設計者自身が回路情報を書き込みます.大部分のFPGAは配線情報の消去や書き換えができます.高額な開発費も不要で,1個から量産まで対応できます.ただし,大量使用時の単価はASICの方が有利になりがちです.

 

14fpga1_f02.gif
図2 自分で設計した回路をその場でLSIとして作ることができる

1  2  »
組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日