《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA“乒乓球比賽游戲機”的設計
基于FPGA“乒乓球比賽游戲機”的設計
曹莉凌 劉雨青 上海海洋大學
摘要: 介紹了一款以Altera公司FPGA芯片為控制核心,,附加少量外圍電路組成的乒乓球比賽游戲機,。整個系統(tǒng)設計模塊劃分清晰:包括裁判端、選手端,、控制端,、顯示端及模擬乒乓球臺,;功能齊全:包括發(fā)球權控制、犯規(guī)提示,、局數比分顯示等,,模擬實際乒乓球比賽相似程度高。采用了VHDL語言編程實現,,在QuartusⅡ8.1集成環(huán)境下進行了模擬仿真,,結果表明在設定的比賽規(guī)則下,游戲機運行正常,,通過進一步優(yōu)化可將其商品化,,推入市場。
關鍵詞: FPGA QuartusII VHDL Altera
Abstract:
Key words :

     可編程邏輯器件FPGA以其開發(fā)周期短,、成本低,、功耗低、可靠性高等優(yōu)勢,,廣泛應用于通信,、航空、醫(yī)療等領域,,近年來在消費電子領域中的應用也日漸增加,。為進一步挖掘FPGA在家庭娛樂如游戲機開發(fā)與應用中的巨大商機,介紹了一款以Altera公司FPGA芯片為控制核心,,附加少量外圍電路組成的乒乓球比賽游戲機,。整個系統(tǒng)設計模塊劃分清晰:包括裁判端、選手端,、控制端,、顯示端及模擬乒乓球臺;功能齊全:包括發(fā)球權控制,、犯規(guī)提示,、局數比分顯示等,,模擬實際乒乓球比賽相似程度高。采用了VHDL語言編程實現,,在QuartusⅡ8.1集成環(huán)境下進行了模擬仿真,,結果表明在設定的比賽規(guī)則下,游戲機運行正常,,通過進一步優(yōu)化可將其商品化,,推入市場。

  1 系統(tǒng)組成
  乒乓球比賽游戲機的組成如圖1所示,。比賽規(guī)則約定:五局三勝,;11分一局;裁判發(fā)出比賽開始信號,,觸發(fā)FPGA內部隨機數發(fā)生器模塊產生首次發(fā)球權方,;比賽進行中,選手連續(xù)兩次獲得發(fā)球權后,,發(fā)球權交予對方,,如未獲發(fā)球權方發(fā)球,裁判端犯規(guī)音響電路鳴響,;13個LED排列成行模擬乒乓球臺,;點亮的LED模擬乒乓球,受FPGA控制從左到右或從右到左移動,;比賽選手通過按鈕輸入模擬擊球信號,,實現LED移位方向的控制;若發(fā)亮的LED運動在球臺中點至對方終點之間時,,對方未能及時按下擊球按鈕使其向相反方向移動,,即失去一分。
 
 
  2 功能模塊設計

  圖1中,,基于FPGA設計的控制端為整個系統(tǒng)的核心,,其內部主要由簡易隨機數發(fā)生器、發(fā)球權控制器,、乒乓球位置控制器,、甲乙方計分控制器、犯規(guī)音響控制器等模塊組成,。整個控制端采用模塊化設計,,先用VHDL語言編寫功能模塊,然后用頂層原理圖將各功能模塊連接起來,。設計的難點在于協調各模塊工作,,嚴格遵守各信號間時序關系。本系統(tǒng)采用1 kHz系統(tǒng)時鐘,。
 
  2.1 簡易隨機數發(fā)生器
 
  比賽首次發(fā)球權由隨機數發(fā)生器產生的數據決定,,其隨機性要求不嚴,,因此,采用非常簡單的模式產生,,即一旦FPGA上電,,系統(tǒng)時鐘百分頻產生一方波信號square,當裁判閉合開始比賽開關產生start信號上升沿時,,讀取此時square信號值作為隨機數發(fā)生器輸出randq。模塊仿真如圖2所示,,結果滿足設計要求,。此模塊設計時保證了square信號周期應遠大于start信號上升沿建立時間,保證隨機數據的正確讀取,。
 
 
  2.2 發(fā)球權控制器

  發(fā)球權控制器的控制過程為:如果按下復位按鈕,,發(fā)球權數碼管顯示8,否則,,開始比賽開關閉合時,,顯示隨機數發(fā)生器的值(0或1,0代表甲方,、1代表乙方),。而在比賽中,為遵守發(fā)球權交換規(guī)則,,設計甲乙雙方計分器總和信號sum_sc是不為0的偶數時(即計分總和最低位sum_sc0下降沿到來時),,發(fā)球權數碼管顯示由0變?yōu)?或由1變?yōu)?。
 
  此模塊設計中,,發(fā)球權數碼管的信號控制受多個時鐘的控制,,即開始比賽開關start和計分值sum_sc0信號,這在VHDL編程語言中無法用一個進程實現,,必須將兩個信號組合成一個時鐘信號,,并統(tǒng)一兩個時鐘的觸發(fā)沿。因此最佳時鐘觸發(fā)方式如圖3所示的fqq_en信號,。為滿足這種時序要求,,借助計分總和次低位sum_sc1信號設計entity sum_sc_mod2,由于start和sum_sc1的頻率都遠低于系統(tǒng)時鐘信號clk頻率,,則可借助clk高頻信號捕捉其邊沿產生新的時鐘信號fqq_en,,并產生其計數值,仿真波形如圖4(a)所示,。為保證發(fā)球權數碼管顯示正確,,設計entitv led_fqq_ctl在fqq_en下降沿時,根據其計數值產生相應的數碼管輸出信號led_fqq,,仿真波形如圖4(b)所示,。
 
 
 
 
 
  發(fā)球權控制器的VHDL核心程序如下:
 2.3 乒乓球位置控制,、甲乙計分、犯規(guī)音響控制
 
  乒乓球位置控制電路為FPGA控制端的核心,,依據比賽規(guī)則,,采用了Mealy型狀態(tài)機來實現,大大降低了設計難度,。狀態(tài)機共定義了7個狀態(tài),,各狀態(tài)定義如表1所示,狀態(tài)轉換如圖5所示,,轉換條件如表2所示,,具體程序如下。
 
  3 頂層模塊仿真測試
 
  由于篇幅限制,,本系統(tǒng)中的分頻器,、譯碼器等常用模塊的設計就不再此贅述,最終頂層原理圖設計如圖6所示,,仿真波形如圖7所示,,分析波形可知,圖中開始比賽信號產生后,,首次發(fā)球權方為乙方,,甲方發(fā)球造成犯規(guī)音響電路鳴響,即speaker信號為高電平,,然后乙方發(fā)球,,乒乓球依次移位,甲方接球成功后乙方未接球成功,,甲方得分,,cnta信號為“0110000”,注意,,此處輸出為驅動數碼管輸出信號,,代表數字“1”。通過仿真可知,,該系統(tǒng)設計滿足游戲機比賽規(guī)則要求,。
 
 
 
 
 
  4 結語
 
  采用VHDL語言編程,基于FPGA成功設計了一款乒乓球比賽游戲機,,通過仿真驗證可知,,結果滿足設計需求,系統(tǒng)具有發(fā)球權控制,、自動計分,、犯規(guī)提示等多種功能,能有效模擬實際乒乓球比賽。該系統(tǒng)進一步改進思路為:改用人體感應傳感器來采集擊球信號,,采用FPGA產生視頻信號傳送到電視機或監(jiān)視器,,更直觀地展示乒乓球運動軌跡,從而真正實現人機互動,,優(yōu)化虛擬效果,。
 
 
來源:現代電子技術
此內容為AET網站原創(chuàng),未經授權禁止轉載,。