FPGA でゲーム機を作ろう(その1)
なかなか次のネタが決まらず,かなり更新が滞ってしまいました。
ただ,今回は新規に何かを作るわけではなく,ほぼ焼き直しのような感じです(苦笑)。
FPGA って何だ?
…と言われても,正確に答えられないかもしれません。詳細は例によって ウィキペディア に載っています(笑)。
簡単に言えば,回路が後から変更可能な半導体チップとでも言うんでしょうか…。MSX ユーザーならば,1チップMSX と言えばピンとくると思います。MSXの回路がほぼ ひとつの FPGA に入っているアレですね。
これと同様に,今回は,Z80 ゲーム機を作ろう(その11) で作った「Mr.DO!」の回路を FPGA に入れてしまおうと言うわけです。
一度,物理的な配線で作ったものなので,多分行けると思うのですが…?
もしかしたら,世の中に FPGA 化した Mr.DO! が既にあるかもしれませんが,あくまでも,過去に自分が手配線で作った MrDO! の回路を FPGA に落として行こうと思います。
ハードウェア記述言語
ソフトウェアは,何かしらのプログラミング言語を使って記述することはほとんどの人がご存知だと思います。
この FPGA は,内部の回路が書き換える事が可能なのですが,その回路は,ハードウェア記述言語(HDL)を使って構成します。
一般的ないわゆるノイマン型と呼ばれるコンピュータで実行されるソフトウェアは,プログラム中の命令がアドレスに沿って逐次的に実行されるので,プログラムのソースコードも大体上から下に向かって順に実行されますよね。
これに対してハードウェア記述言語は,並行して同時に動作する回路を記述するので,実はソフトウェア記述言語と概念がちょっとだけ違うんですね。
そのハードウェア記述言語の中でも,ポピュラーなものとして,VHDL と Verilog というものがあります。(これら以外にもいろいろありますが…)
最初は,C 言語っぽいと言うこともあり, Verilog を好んで使っていましたが,勉強のために参考にしたソースが VHDL が多かったこともあり,最近は,ほぼ VHDL を使うようになりました。
FPGA 開発ボード
FPGA は,単体チップに周辺回路を付ければ,動作させることができます。
ただ,現在は,搭載する FPGA チップの種類にもよりますが,開発用のボードが安価で市販されています。
今回は,Intel(Altera)の CycloneV を搭載した,DE0-CV というボードを使ってみようと思います。
中央にある,正方形のチップが FPGA です。
うまく行けば,10 階建てのユニバーサル基板で作ったものが,このチップの中に入ってしまうんですね。(あくまで予定ですが…)
このように,アーケードゲームを FPGA 化している人は,世の中に沢山いらっしゃるので,今さら感は否めないのですが,HDL の勉強がてら,やってみようと思います。(次回へ続く…)