記念すべき初投稿
何を投稿しようか悩みましたが、タイミングよくFPGA開発ボードが届いたので、ネタとして丁度いい。
ということでこちらの話をしましょう。
そもそもFPGAってなんぞや🤔?
答えられる自信はありますか?
はっきり言いましょう。私は自信ありません。
「バチクソに速くて、並列処理が得意なIC」くらいの認識です。
まずは、自分なりにFPGAの概要を整理してみます。
FPGAとは
FPGAとは、Field Programmable Gate Arrayの略です。
言ってしまえば「後から中身を書き換えられる論理ゲートの集まり」みたいなものです。
Gateは、高専時代に嫌というほど聞いた、いわゆる論理素子のことでしょう。
ビット信号を処理する電子回路の基本部品です。
ANDとかOR,NOTというやつですね。

一部の人はアレルギーを誘発するかもしれません。
ちなみにこの回路は、私が仕事でよく使う回路です。
入力A~Dのどれか一つでもONしているときに、入力Eが入ったら、出力をONにするという回路ですね。
ド・モルガン先生がチラチラこっちを見ている気がします。
様々な運転モードのうち、どれか一つでも実行されている状況で、エラーを検出したら停止指令を出す。
こんな時に使っています。
「どうしてA〜DをそのままORで組まないのか?」っていうツッコミが来そうなので、先に説明します。
それはラダーで組む場合、ORを並列で何個も繋ぐとソフトが見づらくてしょうがないからです。

話が脱線しました。失敬
FPGAの強みは何なのか?
私は先程、FPGAを「後から中身を書き換えられる論理ゲートの集まり」と表現しました。
先程の論理回路を見てください。
例えば、入力Aと入力Bの反転信号が入るAND素子をAND1、入力Cと入力Dの反転信号が入るAND素子をAND2とします。
ではAND1とAND2は、どのタイミングで動くのでしょうか?
ずばり、入力信号が変化したタイミングです。
つまりFPGAは、CPUやPLCのようにプログラムを上から順番に処理するというより、書き込んだ論理回路がハードウェアとして同時に存在しているという方が近いかもしれません。
実際には、クロックに同期して動かす回路も多いですが、複数の処理を並列に構成しやすい点がFPGAの大きな強みです。
ゆえに速く、並列処理に優れていると言われるのでしょう。
FPGA「おそろしく速い信号…オレでなきゃ見逃しちゃうね」
……言ってみたかっただけです。
最後に
今回はここまでにしましょう。
私自身、FPGAは学校でいじった以来で初心者同然です。
次回は実際にBASYS3を動かしてみます。

コメントを残す