當前位置:遊戲中心平台 - 遊戲盒子 - FPGA 乒乓球遊戲機設計

FPGA 乒乓球遊戲機設計

1 系統組成

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

2 功能模塊設計

圖1中,基於FPGA設計的控制端為整個系統的核心,其內部主要由簡易隨機數發生器、發球權控制器、乒乓球位置控制器、甲乙方計分控制器、犯規音響控制器等模塊組成。整個控制端采用模塊化設計,先用VHDL語言編寫功能模塊,然後用頂層原理圖將各功能模塊連接起來。設計的難點在於協調各模塊工作,嚴格遵守各信號間時序關系。本系統采用1 kHz系統時鐘。

2.1 簡易隨機數發生器

比賽首次發球權由隨機數發生器產生的數據決定,其隨機性要求不嚴,因此,采用非常簡單的模式產生,即壹旦FPGA上電,系統時鐘百分頻產生壹方波信號square,當裁判閉合開始比賽開關產生start信號上升沿時,讀取此時square信號值作為隨機數發生器輸出randq。模塊仿真如圖2所示,結果滿足設計要求。此模塊設計時保證了square信號周期應遠大於start信號上升沿建立時間,保證隨機數據的正確讀取。

2.2 發球權控制器

發球權控制器的控制過程為:如果按下復位按鈕,發球權數碼管顯示8,否則,開始比賽開關閉合時,顯示隨機數發生器的值(0或1,0代表甲方、1代表乙方)。而在比賽中,為遵守發球權交換規則,設計甲乙雙方計分器總和信號sum_sc是不為0的偶數時(即計分總和最低位sum_sc0下降沿到來時),發球權數碼管顯示由0變為1或由1變為0。

此模塊設計中,發球權數碼管的信號控制受多個時鐘的控制,即開始比賽開關start和計分值sum_sc0信號,這在VHDL編程語言中無法用壹個進程實現,必須將兩個信號組合成壹個時鐘信號,並統壹兩個時鐘的觸發沿。因此最佳時鐘觸發方式如圖3所示的fqq_en信號。為滿足這種時序要求,借助計分總和次低位sum_sc1信號設計entity sum_sc_mod2,由於start和sum_sc1的頻率都遠低於系統時鐘信號clk頻率,則可借助clk高頻信號捕捉其邊沿產生新的時鐘信號fqq_en,並產生其計數值,仿真波形如圖4(a)所示。為保證發球權數碼管顯示正確,設計entitv led_fqq_ctl在fqq_en下降沿時,根據其計數值產生相應的數碼管輸出信號led_fqq,仿真波形如圖4(b)所示。

發球權控制器的VHDL核心程序如下:

2.3 乒乓球位置控制、甲乙計分、犯規音響控制

乒乓球位置控制電路為FPGA控制端的核心,依據比賽規則,采用了Mealy型狀態機來實現,大大降低了設計難度。狀態機***定義了7個狀態,各狀態定義如表1所示,狀態轉換如圖5所示,轉換條件如表2所示,具體程序如下。

3 頂層模塊仿真測試

由於篇幅限制,本系統中的分頻器、譯碼器等常用模塊的設計就不再此贅述,最終頂層原理圖設計如圖6所示,仿真波形如圖7所示,分析波形可知,圖中開始比賽信號產生後,首次發球權方為乙方,甲方發球造成犯規音響電路鳴響,即speaker信號為高電平,然後乙方發球,乒乓球依次移位,甲方接球成功後乙方未接球成功,甲方得分,cnta信號為“0110000”,註意,此處輸出為驅動數碼管輸出信號,代表數字“1”。通過仿真可知,該系統設計滿足遊戲機比賽規則要求。

4 結語

采用VHDL語言編程,基於FPGA成功設計了壹款乒乓球比賽遊戲機,通過仿真驗證可知,結果滿足設計需求,系統具有發球權控制、自動計分、犯規提示等多種功能,能有效模擬實際乒乓球比賽。該系統進壹步改進思路為:改用人體感應傳感器來采集擊球信號,采用FPGA產生視頻信號傳送到電視機或監視器,更直觀地展示乒乓球運動軌跡,從而真正實現人機互動,優化虛擬效果。

  • 上一篇:關於《合金裝備2》的問題!!!!!!!!
  • 下一篇:幻想遊戲版本問題
  • copyright 2024遊戲中心平台