100 likes | 334 Views
Handel-C によるイライラ棒の設計. 発表項目. FPGA と Handel-C について 設計の仕様 ポインタ、道の表示方法 工夫した点 考察 デモンストレーション. FPGA と Handel-C について. FPGA : Handel-C によってハードウェア構成を設計できる IC Handel-C : ANSI-C の仕様に加え、 par 文による並列処理、ビット幅宣言などのハードウェア設計に必要な仕様を追加した言語。 今回は、これらを用いてハードウェア上にゲーム「イライラ棒」を作成する。. 設計の仕様.
E N D
発表項目 • 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