はじめに
はじめまして。大学では食品について学んでおりました なみぃです。
今まで電子回路については全く学んだことがないので、入社してから今まで分からないことだらけです。
日々頭を抱えながら回路と向き合っています。
そんな私のように電子回路初心者の方向けにも分かりやすい記事を書けたらと考えています。
ちなみに私はアルテラの FPGA 担当となりました。
皆様 FPGA がどのようなデバイスなのかご存知でしょうか?
私は入社したての頃に、この赤面ブログの FPGA 解説記事を読んだのですが当時の予備知識ではまだまだ難しい内容でした。
そこで今回は予備知識が全くない人でも分かるように、 FPGA とは何かを簡単に説明したいと思います。
そうです。超初級編です。
FPGA とは
FPGA とは Field Programmable Gate Array の略で直訳すると、「現場で書き換え可能な論理回路の多数配列」となります。
簡単に言うと論理回路設計を間違えても即座にその場でハードウェア言語にて修正ができるデバイスということです(図 1)。
ちなみに「即座にその場で」できるというのが FPGA の特徴です。

ここで数ヶ月前の私では分からない用語がすでに 2 つありますね。
それは
1. ハードウェア言語
2. 論理回路
この 2 つです。
ハードウェア言語とは
FPGA は電源を入れるだけでは動きません。
どのような回路を作るのかをユーザが書き込んであげないと動作することができません。
そこで使うのがハードウェア言語です。
ハードウェア言語は一般的に半導体の回路記述をする際に用いる言語です。
これを使用してユーザは論理回路を設計し FPGA を書き換えているのです。
次のコードは、Verilog HDL と言うハードウェアー言語の一例です。
module sample (a, b, c, sela, selb, q);
input a, b, c;
input sela, selb;
output reg q;
always @(sela or selb or a or b or c)
begin
if (sela)
q = a;
else if (selb)
q = b;
else
q = c;
end
endmodule
論理回路とは
論理回路とはデジタル信号を扱う回路のことです。
上記の言語を論理演算などで表現したものが以下の回路です(図 2 )。

この回路では q が出力になっており、その他が入力です 。
入力された信号がこの回路内を巡り巡って最終的にq から出力されるのです。
この出力は入力パターンによって変動します。
例えば、今回だと sela が 1 の時に q は a を出力します(詳しい話は省きますが…)。
FPGA 内ではこのような論理回路が多数張り巡らされているイメージです。
FPGA の動作イメージ
ハードウェア言語と論理回路についてイメージはできましたか?
FPGA はハードウェア言語により論理回路を書き換えることができるデバイスです。
では、論理回路を書き換えるとどうなるのか?
それは回路内で伝達されるデジタル信号が変わることにより、 FPGA はそのデジタル信号に準じた信号を出力するということです。
つまりその信号を受け取った機器の動作が変わるのです。
例として、LED を 1 秒ごとに点滅させる回路を設計する作業イメージを見てみましょう(図 3 )。

ここで設計を間違えても即座にユーザは修正ができるのです。例えば、 2 秒ごとに LED を点灯させる回路を記述すれば、その場で LED を 2 秒ごとの点灯に切り替えることができます。
素晴らしい柔軟性ですね。
ちなみに「論理合成」、「配置配線」とはハードウェア言語で記述された回路をFPGA に書き込むためのデータに変換することです。
FPGA はこのような柔軟性を活かして私達の生活を支えている様々な機器に導入されています。
FPGA ありがとう。
終わりに
今回は簡単に FPGA についての記事を書きました。
私は今後も初心者目線で記事を書いていく予定です。電子回路初心者の方は要チェックです!
これから 1 年間よろしくお願いいたします!