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