FPGAを用いる実験の準備中
| 固定リンク 投稿者: tut_staff
こんにちは電気電子工学科の天野です。
現在、来年度前期の実験の準備をしています。この実験ではFPGAを用います。コンピューターやマイコン(以降、まとめてCPU)に詳しくても、FPGA(PLD)を知っている、使ったことがあると言う人は少ないと思います。
上の写真は実験準備のため、納品された数十個のFPGAボードを動作確認のために取り出したところです。このようにFPGAは見た目は通常のCPUと相違ありません。使い勝手も下のようなソースコードで動くのでCPUと相違を感じにくいところもあります。
module Tflipflop(clk, t, q);
input clk, t;
output
p;
reg buf;
always @(posedge clk) begin
if (t == 1’b1) begin
buf = ~buf;
end
end
assign q = buf;
endmodule
ところが、FPGAとCPUとはまったく違うというか、ある意味で真逆の存在です。
CPUは集積回路で、中には多数の(固定された)電子回路があります。その電子回路の構成によって、メモリーから命令やデータを読み出して解釈して実行するといった機能を実現しています。このため、CPUを使えばプログラムを与えることで、様々な動作をさせることができます。
FPGAも集積回路で、中には多数の電子回路がありますが、それらの電子回路は小さなブロックに分かれていて、そのブロック間の配線を変更可能です(固定ではない)。上記のようなソースコードはその配線を定義しています。この定義に従って配線された(ブロック間の結線)ことによって生成される電子回路を利用できる仕組みです。ややこしくなるかもしれませんが、これを利用してFPGA内にCPUを作り出すことも可能です。
例えばコード例にある「assign q = buf」はCPU用の通常のプログラミング言語風に解釈すれば「変数qへ変数bufの値を代入する」という処理のようですね。しかし、FPGAではbufというレジスター(これもプログラムの指定で作り上げた電子回路で実現される)とモジュールの出力先q(おそらくはFPGAの入出力pin)を結線する、というイメージとなります。代入ではないので、bufの値は常にqへと出力され続けています。
こう考えてみるとFPGAは、
・部品を集めることなく電子回路を構成できる
・半田ごてを使ったりせずに電子回路を作り上げることができる
・上記ができるとしても、そんな方法ではとても間に合わないような大規模な電子回路を作り上げることができる
といった、とても便利な道具です。いわば専用ICを自前で作るための道具と言えます。
変更 | 速度 | コスト(小規模) | コスト(大規模) | |
CPU | ◎ | △ | ◎ | ◎ |
FPGA | ○ | ◎ | ○ | △ |
専用IC | × | ◎ | × | ◎ |
上の表はざっくりと適性をまとめてみたものです。適材適所ですから、どちらがよいかというよりも、この用途ではどれが最適なのかという議論になります。
FPGAはCPUと同じように誰でも簡単に利用できます。CPUだけでなくFPGAもマスターすれば、全方位的な技術を有することになります。近年ではCPU内部にFPGAを埋め込もうという動きもあるようですから、FPGAに関する技術習得はこれから有益である可能性が高いでしょう。
実験ではこのFPGAについて、基礎的なところを実際に試しながら学びます。
「学生、教員の活動」カテゴリの記事
- チェコで開催された国際学会に参加-世界遺産プラハ(2019.03.13)
- チェコで開催された国際学会に参加-準備と発表(2019.03.11)
- 産学共同研究の新規開始(2019.03.07)
- 沖縄での研究実施報告(2019.02.28)
- 学部3年生の技術研究発表会での発表(2019.01.10)