FPGAとは

FPGAとは「回路をプログラムできるチップ」というのが一番伝わるでしょうか。普通「こういう回路を作りたい」と思って回路をを作るときはまず部品を買って、ハンダ付けしなきゃいけません。簡単な回路ならブレッドボードでもいいでしょう。
FPGAなら部品を買う必要はありません、FPGAのチップをPCにつないで「NAND回路の出力にOR回路をつないで、、、」とプログラムするだけで、FPGAがその通りの動作をします。


これがFPGAです。秋月電子で最近販売され始めた3000円ぐらいのやつです。こいつはUSBでPCにつないで動かせるのでPCがあれば他に必要な物はありません。

<どうやってるのか>
FPGAで回路が作れるとはいえなんでも作れるわけじゃありません。作れるのはデジタル回路だけです。
なので、抵抗・コイル・コンデンサと言った部品をFPGAの中に配置することは不可能です。
しかし、デジタル回路ならほとんど作れます。NANDやORなどの論理素子もOKですし、Dフリップフロップなどももちろん使えます。そしてそれらを組み合わせてCPUをFPGAの中に作ってしまうこともできます(僕はこれがやりたくてFPGAをはじめました)

簡単な例でいうと、例えば入力を反転して出力する(NOT回路)プログラムはこうなります

module(in,out);
input in;
output out;

assign out = ~in;

endmodule

そんなに難しくないでしょう?この中で大事なのは assign out = ~in; ですこれがoutはinの反転と定義してます。
そしてこのプログラムを書いたあとに in と outをFPGAの何番ピンにするのかを設定してFPGAに書き込んだらすぐに動きます。

これを書き込んだFPGAはマイコンとは違ってクロックと関係なく常にoutはinを反転し続けます。inのONOFFの繰り返し周波数はFPGAが許す限りいくらでも周波数を上げられますし、他のピンがどんな動きをしてようがこのピンの反転が遅れることもありません。これがマイコンとの大きな違いですね。

ちなみに、プログラムを書き込んだ時に実際にFPGAの中の配線がうにゅ〜〜〜ん と動いて回路を作っているわけではありません。
この中にいくつかのNAND回路やOR回路が入ってるわけでもありません。
中に入っているのは沢山のRAMとDフリップフロップのセットです(もちろんクロックとか他にもいろいろあるけど基本はね)
なんでそんなので出来るのかはおいておいて、とりあえずこんなふうに回路をFPGAで作れちゃうわけです^^
楽しそうでしょ〜〜

次回は入手です