本日はマイコンとFPGAの違いについてざっくりと説明していきます。
どちらも黒くて四角い半導体デバイスで、機械などを制御するために使われています。ですので、結局何が違うの?というかんじですが、実は全然違います。
目次
まず、マイコンはマイクロコントローラー(Microcontroller)の略です。中核となるのはCPUです。CPUは図1のように、メモリに格納された命令を順番に実行します。順番に書かれた命令の系列は、プログラムとかソフトウェアといいます。
マイコンは、沢山の命令の系列(ソフトウェア)を順番に実行することで、何らかの処理を実現しています。
次に、FPGAです。FPGAはField Programable Gate Arrayの略です。これは図2のような構造をしています。図中の破線で囲ったブロックを論理ブロックといいます。論理ブロック内のLUTとFlip-Flop(フリップフロップ)については下記の記事で解説していますが、今は論理ゲートだと思ってください。
関連記事
FPGAでは、論理ブロックをどのような論理ゲートにするかをユーザーがプログラムできます。例えば、
$$y=a \oplus b$$
$$c=a \cdot b$$
※\(\cdot\)はANDゲート、\(\oplus\)はXORゲート
とプログラミングすれば、\(y\)が和、\(c\)がキャリーの1bitの加算器が出来上がります。
FPGAは論理ブロックが数千個から数百万個入っているため、上記のようなゲートを沢山組み合わせることで、何らかの処理を実現します。
各論理ブロックはすべて同時に動作します。FPGAは”ハードウェア”だからです。これは図3に示す2つの豆電球と同じです。同図の回路は明らかにハードウェアですし、2つ同時に動くのは容易に想像できると思います。豆電球の回路を数式で表すと、電池がそれぞれ入力\(a, b\)、光を出力\(x, y\)とすれば、
$$x=a$$
$$y=b$$
となりますね。入力=出力というロジックです。
FPGAも、各論理ブロックに入力が入れば電気信号が一瞬で伝わって、それぞれ出力が出てくるハードウェアです。
以上をまとめると、