FPGA講座-1 FPGAって何?
FPGAは論理回路の集合体
FPGAは”Field Programmable Gate Array”の略で、「自由にプログラミングできるゲートアレイ」と訳すことができます。多くの方々は、この訳だけではFPGAを理解することは難しいと思います。
「FPGAって何?」と聞かれたときに、私は「マイコンのようなデバイス」と答えることが多いです。確かに、マイコンのようにFPGAはHDL(Hardware Description Language)と呼ばれるハードウェア記述言語でプログラミングしたソースコードで動作します。しかしながら、マイコンと大きく違う点は、FPGAは論理回路(ハードウェア)をプログラムで構成するのに対して、マイコンは固定されたハードウェアをプログラムで制御します。
FPGAの構成
図1にFPGAの構成図を図示しています。FPGAは大きく3つの部分から構成されています。論理回路を実現する論理ブロック、外部信号の入出力を行うI/Oブロック、それらを接続する配線要素の三つになります。配線要素は、配線チャネル、配線ブロック、コネクションブロックなどがあります。それらのブロックが格子状に配置されています。
論理ブロック
図2に論理ブロックであるロジックエレメント(LE)の構成図を図示しています。このロジックエレメントは、FPGAの容量単位として使用されることがあります。このロジックエレメントは、ルックアップテーブル(LUT)、フリップフロップ、セレクタで構成されています。ルックアップテーブルで組み合わせ回路を実現し、フリップフロップで順序回路を実現します。この両者をコンフィグレーションメモリM0の信号で選択します。
スイッチブロック
スイッチブロックは水平方向と垂直方向の配線チャネルの交差に位置し、プログラマブルスイッチによって配線経路が決定されます。このスイッチブロックには、Disjoint型、Universal型、Wilton型の3種類が存在します。図3のスイッチブロックは、Disjoint型を図示しています。例えば、図3のトラックL4は、T4、R4、B4と接続されています。この各々の配線間にはトータル5個のスイッチが接続されています。スイッチブロックのスイッチはMOSFETで構成されており、MOSFETを制御することにより、個々の配線を接続することができます。
I/Oブロック
I/Oブロックは、デバイスのI/Oピン(パッド)と論理ブロック間をインターフェースします。このI/Oブロックがデバイスの外周に沿って配置されています。出力端子にプルアップ抵抗とプルダウン抵抗が接続されているため、デバイスの出力を”0”または”1”にクランプできます。出力バッファはイネーブル信号で制御し、I/Oブロックを入力または出力状態にすることができます。入力と出力にはそれぞれフリップフロップが用意されているため、遅延時間の設定が可能です。入力バッファの閾値はTTLレベルまたはCMOSレベルを選択することができます。FPGAは様々な用途に使用されるため、使用用途に応じて出力規格や電源電圧などをプログラミングできます。
【参考文献】(※1)FPGAの原理と構成 35ページ オーム社(2016年)