Document

ソフトではなく
ハードウェアによる
インベーダーゲームの作成
XXXXXXXX XXXX
XXXXXXXX XXXX
FPGAとHandel-C
FPGA
Field Programmable Gate Array
 ハードウェア回路をプログラミング言語によって
実現できるIC
 ソフトウェアに比べ高速・低電力
Handel-C
• C言語にハードウェア設計に必要な仕様を追加し
拡張した言語
課題
•
Handel-Cによるプログラミングで、ハード
ウェア上にインベーダーゲーム作成する
•
簡単なCPUを設計し、その動作を用いて
ゲームを作成する
仕様
• 左右のマウスクリックで自機を移動
• ホイールのクリックで弾を発射
• ライフは2
• 敵の弾にあたるか敵が自機のところまで迫ってくるとライフが減る
• 敵を全てやっつけるとライフとスコアを維持して最初の状態に戻る
• 敵を10匹やっつける毎に少しずつ敵の動きが速くなる
(敵の総数は30匹なので速さは3段階)
プログラムの解説
以下の3点にしぼって解説
インベーダーの表示
 CPU
 工夫した点

画像の表示

ソフトで画像を表示するなら・・・・
画像を表示する(座標,画像);
画像を表示する機能は元々用意されている
ところが、ハードではこうはいかない
画像の表示
画像は右図のような盤目状に
仕切られた色のついたピクセ
ルの集合で表されている
ROMによる画像の表示
・表示したい画像を0と1のROMに変換
・1は青、0は黒などと設定しピクセル単位で描画
していく
画像の移動
画像の移動は(X,Y)の
変化で実現
CPUの実現
FPGA上にROMに書いたプログラムを読み込
み計算を行うCPUを構築する
 プログラムに使えるのはCASLのようなレジ
スタの値を足したり引いたりするものや簡単
な分岐文などの約10命令のみ
 インベーダーゲームではインベーダーの速
度計算を担当

速度制御
インベーダーの残数をインプットす
ると移動速度が出力される
工夫点(1)

FPGA内の配線を変えることでハードウェア
を実現しているので、やれることには限界が
ある
⇒ビットの節約をこころがけた(Handel-Cでは
C言語と違い変数などのビット幅を明確に宣
言しなければならない)
工夫点(2)
敵のアルゴリズム
 移動速度はCPUが計算
 弾の発射タイミングや発射するインベーダー
の選択は、自機とインベーダーの位置を用
いることでランダム性をもたせた
まとめ
インベーダーゲームとしての最低条件は満たす
ことができた
 プログラムの画像表示の部分で同様の記述を
繰り返しているために効率が悪くなってしまった


ハードウェアを設計することの難しさを実感した