Handel-Cによるイライラ棒の設計

Handel-Cによるイライラ棒の設計
発表項目






FPGAとHandel-Cについて
設計の仕様
ポインタ、道の表示方法
工夫した点
考察
デモンストレーション
FPGAとHandel-Cについて


FPGA:Handel-Cによってハードウェア構
成を設計できるIC
Handel-C:ANSI-Cの仕様に加え、par文
による並列処理、ビット幅宣言などのハード
ウェア設計に必要な仕様を追加した言語。
今回は、これらを用いてハードウェア上に
ゲーム「イライラ棒」を作成する。
設計の仕様




黒で示された道を白のポインタで辿っていく。
緑の壁に当たるとゲームオーバーとなる。
ポインタはドラッグによって動かすことができ
る。ボタンを離すとポインタと制限時間など
が初期化される。
制限時間は60秒、この時間を越えるとゲー
ムオーバーとなる。
制限時間の表示はRC10(FPGAが載って
いるボード)の7セグメントLEDで行う。
ポインタ、道の表示方法


ピクセルによって表現、道(黒)は0、壁(緑)
は1とする。
道や壁の描画と並列してポインタ(マウス)の
位置を検出、壁に触れていないかの判断を行
う。
工夫した点


制限時間をカウントする関数を利用して、あ
る一定周期で画面を変化させ、ゲーム性を
向上させた。
ゲームオーバー、クリア時の画面はビット演
算を利用して元の配列を拡大させて表示さ
せた。
考察

大規模な配列を数多く用意してしまったため
マッピングに時間がかかり、作業効率が低
下してしまった。→ビット演算による拡大、回
転をうまく使うことで回避するべきだった。

同時に大量の配列を参照し、描画するため、
処理が追いつかず画面がちらつくことがあっ
た。→最適なクロックレートを与えてやること
が必要。
質問用のスライド
画像の描画の詳しい方法は?
-64×64の配列で表現したマッ
プを用意し、並列にアクセスす
ることで実現。
X座標とY座標をビット結合す
ることで値を取り出している。

例、x=011、y=100のとき、
y@x=100011(2)=35
map[x@y]=map[35]=0
→黒を表示
質問用のスライド

クロックレートとは?またそれを調整するとな
ぜ画面のちらつきがなくなるのか?
→クロックレートとは、1秒間に実行するこ
とのできる命令の数のこと。
これが大きすぎると、描画などの処理がお
いつかず、ちらつきの原因となる。
質問用のスライド
道を一定間隔で変化させる方法は?
-制限時間の一桁目を格納する変数を2で割り、そ
の余りでどちらの絵を描画するかを判断する。これ
により1秒ごとに道を変化させている。
if((Timer%2)==1)
else
