李 倩
正德職業(yè)技術(shù)學(xué)院 江蘇南京 211106
基于PLD的打地鼠游戲的設(shè)計(jì)與實(shí)現(xiàn)
李 倩
正德職業(yè)技術(shù)學(xué)院 江蘇南京 211106
打地鼠游戲是一款實(shí)用性小游戲,娛樂性很強(qiáng),且能夠鍛煉孩子們的反應(yīng)速度,現(xiàn)在市面上也出現(xiàn)了很多關(guān)于打地鼠的兒童玩具。本文實(shí)現(xiàn)了的打地鼠游戲的基本功能,講述了此游戲的設(shè)計(jì)實(shí)現(xiàn)過程,通過整個(gè)詳細(xì)的設(shè)計(jì)過程讓學(xué)習(xí)者了解到基于PLD的系統(tǒng)設(shè)計(jì)流程。
PLD;打地鼠;游戲;數(shù)碼管
本設(shè)計(jì)靈感來源于文曲星上風(fēng)靡一時(shí)的打地鼠游戲,此游戲既能夠鍛煉玩游戲人的反應(yīng)速度,也具有一定的娛樂功能。游戲開始后4×4的點(diǎn)陣中每隔一定秒數(shù)(由設(shè)計(jì)難度決定)會(huì)隨機(jī)點(diǎn)亮一盞,以供選手進(jìn)行游戲。當(dāng)一盞燈點(diǎn)亮?xí)r,在下一盞燈亮之前按下對(duì)應(yīng)的鍵盤即可得分,否則失分。游戲開始時(shí)難度初始值可設(shè)定,隨后進(jìn)行一分鐘倒計(jì)時(shí),一旦為0游戲結(jié)束。游戲會(huì)在規(guī)定時(shí)間內(nèi)判斷得分最高者勝出。
此游戲用單片機(jī)實(shí)現(xiàn)的案例較多,但是用PLD實(shí)現(xiàn)的卻很少,本設(shè)計(jì)選擇了以PLD進(jìn)行打地鼠游戲的設(shè)計(jì),為學(xué)習(xí)者提供另種方法與思路。
系統(tǒng)硬件部分由輸入按鍵模塊、4×4的點(diǎn)陣模塊、4×4鍵盤模塊和數(shù)碼管輸出模塊等部分組成,系統(tǒng)總體面板示意圖如圖1所示。
1.1 系統(tǒng)面板
該系統(tǒng)的硬件設(shè)計(jì)采用了模塊化的設(shè)計(jì)方法。核心芯片采用Altera公司的EP1C3T144C8,它們實(shí)現(xiàn)系統(tǒng)的功能要求。如圖1所示,為系統(tǒng)面板示意圖,地鼠界面用4×4的點(diǎn)陣實(shí)現(xiàn),在點(diǎn)陣中用隨機(jī)亮起的等表示探出的老鼠,按鍵用鍵盤來實(shí)現(xiàn),由鍵盤4×4的鍵對(duì)應(yīng)相應(yīng)的點(diǎn)陣中的地鼠,控制器通過讀取用戶的按鍵及點(diǎn)陣輸出代碼并進(jìn)行判斷來相應(yīng)的加減分。當(dāng)玩家分?jǐn)?shù)為零或者游戲時(shí)間倒計(jì)時(shí)置0時(shí),游戲停止。在游戲過程中當(dāng)玩家按了結(jié)束鍵之后推出進(jìn)入游戲難度選擇,這是用四個(gè)開關(guān)輸入的。
圖1 系統(tǒng)面板示意圖
1.2 輸入輸出說明
表1 輸入信號(hào)
表2 輸出信號(hào)
2.1 系統(tǒng)總框圖
如圖2所示為系統(tǒng)總框圖,根據(jù)此框圖我們進(jìn)行打地鼠各模塊的軟件設(shè)計(jì)。
圖2 系統(tǒng)框圖
2.2 各個(gè)模塊功能
各個(gè)模塊的功能描述如下所述:
2.2.1 分?jǐn)?shù)判斷模塊
判斷選手得分或失分主要是由一個(gè)比較器完成的,將系統(tǒng)傳給LED燈的信號(hào)與選手輸入的信號(hào)作比較,相同則加分,否則扣分,這兩個(gè)信號(hào)分別傳給計(jì)分模塊,從而完成系統(tǒng)判定得分的工作。
2.2.2 系統(tǒng)時(shí)鐘模塊
將內(nèi)部2 MHz的時(shí)鐘分頻為1 kHz及游戲時(shí)鐘,供以后程序適使用。
2.2.3 鍵盤電路
主要通過產(chǎn)生行掃描,來識(shí)別用戶的按鍵,電路中已經(jīng)對(duì)按鍵進(jìn)行了消抖。其提供給控制器按鍵的編碼。
2.2.4 等級(jí)判斷模塊
判斷等級(jí),若游戲未開始時(shí),將等級(jí)設(shè)為初始值,游戲開始后則判斷是否按對(duì)五次或按錯(cuò)五次,并響應(yīng)的加、減等級(jí)。
2.2.5 隨機(jī)數(shù)產(chǎn)生模塊
為使得測(cè)試結(jié)果的公平性,需要4×4等燈亮滅具有隨機(jī)性,因而需要隨機(jī)數(shù)產(chǎn)生過程,在本方案中,采用偽隨機(jī)數(shù)產(chǎn)生方法,即在ROM中存入隨機(jī)表中的數(shù)據(jù),游戲開始后采用一個(gè)計(jì)數(shù)器不斷從其中讀取數(shù)據(jù)。
2.2.6 顯示模塊
用來將BCD碼轉(zhuǎn)化為可以在七段數(shù)碼管中顯示的。
2.2.7 計(jì)時(shí)模塊
系統(tǒng)的計(jì)時(shí)部分需要一個(gè)能置初值的計(jì)數(shù)器即可,其控制信號(hào)應(yīng)為start,stop。
2.3 系統(tǒng)狀態(tài)流程圖
如圖3所示為系統(tǒng)狀態(tài)流程圖,此流程顯示出了我們進(jìn)行打地鼠各模塊的核心設(shè)計(jì)思路。
圖3 系統(tǒng)流程圖
設(shè)計(jì)軟件采用QuartusII,軟件通過編譯,并進(jìn)行波形仿真。波形仿真在設(shè)計(jì)中起到至關(guān)重要的作用,通過仿真波形我們可以看出設(shè)計(jì)中存在的問題,并加以改正。而圖4、圖5、圖6則是摘取的其中幾個(gè)重要的仿真波形,它們同時(shí)也證明了此設(shè)計(jì)功能的實(shí)現(xiàn)。如圖4所示為隨機(jī)數(shù)產(chǎn)生模塊仿真波形,圖5所示為比較幾分模塊仿真波形,圖6所示為等級(jí)判斷模塊仿真波形。
圖4 隨機(jī)數(shù)產(chǎn)生模塊仿真波形
圖5 比較計(jì)分模塊仿真波形
圖6 等級(jí)判斷模塊仿真波形
此設(shè)計(jì)完成了預(yù)期中的所有目標(biāo),將預(yù)設(shè)時(shí)間改為預(yù)設(shè)等級(jí),這樣做的原因是自定等級(jí)比自定時(shí)間對(duì)玩家更有娛樂意義。另外,如果繼續(xù)擴(kuò)展其功能,除了可以體現(xiàn)在提高兩盞燈之間的亮滅速度,還可以縮短一個(gè)燈亮的時(shí)間。經(jīng)過本次設(shè)計(jì)鍛煉,既可以提升獨(dú)立的完成項(xiàng)目的能力,又能熟悉VHDL語言這一標(biāo)準(zhǔn)硬件描述語言,為以后的一些相關(guān)學(xué)習(xí)打下了一定的基礎(chǔ)。
[1] 李倩.基于FPGA的MP3音樂播放器設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2014(4):159-160.
[2] 李倩,梁亮.基于微波光子六倍頻的光載無線通信系統(tǒng)[J].光通信技術(shù),2014(2):27-29.
[3] 李倩,梁亮.基于FPGA的電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)[J].科技信息.2011(5):118,121.
[4] 李倩.F P G A小型實(shí)驗(yàn)板的開發(fā)與實(shí)現(xiàn)[J].科教文匯.2010(7):87,91.
Design and Implementation of Whac-a-mole Game Basd on PLD
Li Qian
Zhengde Polytechnic College, Nanjing, 211106, China
Whack-a-mole game is a practical small game, entertainment is very strong, and can exercise the children's reaction speed, now on the market also appeared a lot of children's toys about whack-a-mole. This paper realized the basic function of the game of whack-a-mole,tells the story of the game design process, through the detailed design process for a beginner to understand the system design process based on PLD.
PLD; Whac-a-mole; game; digital tube
2014-07-10
李倩,碩士,實(shí)驗(yàn)師。