PowerPoint プレゼンテーション

Handel-Cを用いた
パックマンの設計
XXXXXXXX XX XX
XXXXXXXX XX XX
2015/9/30
1
発表項目
1.目的
2.FPGAとHandel-Cの説明
3.仕様
4.アルゴリズム
5.問題と解決法
6.考察
7.デモ
2015/9/30
2
目的
高位システム記述言語Handel‐C
とFPGA開発ボードを用いたハード
ウェアの設計方法を学ぶ
2015/9/30
3
FPGAとHandel-Cの説明
 FPGA(Field Programmable Gate Array)
・・・ハードウェアを設計データによって、
動的に作り変えることができるゲート・
アレイ
 Handel-C
・・・ハードウェアをC言語ベースで設計
することのできるプログラミング言語。
並列処理、ビット幅などの概念がC言語
に加わっている
2015/9/30
4
パックマンの仕様
 エサを一つ取るごとに1ポイント加算
 パックマンがパワーエサを取ると、逆襲モード
に入り、敵とパックマンの関係が逆転する
 パックマンの行動はマウスによって制御し、操
作性を高めるために、予約入力を受け付ける
 1面クリアするごとに逆襲モードの時間が短縮
 敵とパックマンはアニメーションする
2015/9/30
5
敵の動きアルゴリズム
(追跡モード、巡回モード、逆襲モード)
追跡モード・・・
1.敵を3方向(Uターン禁止)に1歩ずつ進めて、
その時のパックマンとの距離を計算
2.1で計算した距離が最小になる方向に進む
巡回モード・・・ある4点との距離が最小に
なる方向に進む
逆襲モード・・・追跡モードと逆の方向へ進む
2015/9/30
6
問題点とその解決法1
(問題点)FPGAのハードウェアリソースが限られている
(解決法)
 パックマンの画像は1枚を回転させることによって、4方
向分表示


乗算・除算をビット操作によって行う
各変数のビット幅を使用する最小の幅にする
2015/9/30
7
問題点とその解決法2
(問題点)並列プロセスはRAMに同時アクセスできない
(解決法)
画像表示プロセスとゲーム管
理プロセスが並列実行されて
いるが、画像表示の走査線が
Blank期間に入っている間に
ゲーム管理プロセスがRAM
にアクセスを行うことによって、
同時にはアクセスしないように
した。
2015/9/30
8
考察
 FPGAの設計においては、よりコンパクトな
設計を求められるため、データの効率的利
用、乗算・除算の排除、ビット幅の最小化な
どの手段が有効
 並列プロセスを同期させることにより、同時
にメモリアクセスしないようすることが可能
である
2015/9/30
9
それではデモをご覧ください
2015/9/30
10
以下は質問用
2015/9/30
11
パックマン動作アルゴリズムは?
(予約入力)
1.入力された方向を予約方向として記憶
(入力されない場合は前回の予約方向 を維持)
2.予約方向が壁でなければ進む
3.2で進めなかった場合は1フレーム前と同じ方向
が壁でなければ進む
4.3で進めなかった場合は停止
2015/9/30
12
課題は?
 Handel-CとFPGA開発ボードを用いて、ハードウェア
を設計すること
 設計条件は、ディスプレイに出力すること、マウスを使
用すること、自分で設計したプロセッサをシステムに
導入すること
パックマンに類似したゲームを設計
2015/9/30
13
パックマンの仕様は?1
 10×10マスのマップを使用
 エサを一つ取るごとに1ポイント加算
 パックマンがパワーエサを取ると、逆襲モード
に入り、敵とパックマンの関係が逆転する
 逆襲モードで敵を食べると20点追加
 敵は1匹とし、追跡モード、巡回モード、逆襲
モードの3種類の動作をする。(動作選択に設
計したプロセッサを使用)
2015/9/30
14
パックマンの仕様は?2
 パックマンの行動はマウスによって制御し、操
作性を高めるために、予約入力を受け付ける
 1面クリアするごとに逆襲モードの時間が短縮
 敵とパックマンはアニメーションする
 パックマンと敵が衝突した場合に特殊アニメ
が動作
2015/9/30
15
ゲートアレイとは?
 論理ゲート(基本セル)が格子(アレイ)状に
配列されており, 実現すべき回路が決まっ
たあとに,相互に配線されておらず電気的
に独立している基本セルを組み合わせて,
希望のディジタル回路を実現します。
長所:設計が簡単
短所:設計自由度の制限
2015/9/30
16
今回使用したFPGAは?
RC100・・・
Celoxica社が開発したスタンドアロンのFPGAボー
ド。
ゲート数は20万ゲート。
LUTは約4500個。
80MHzクリスタルからクロックを生成。
2015/9/30
17
Demo画像
2015/9/30
18
画像の表示は?
32×32配列
PACMAN[Y座標@X座標]でアクセス
2015/9/30
19