歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類(lèi) > DOC文檔下載  

基于FPGA乒乓球游戲機(jī)Verilog設(shè)計(jì).doc

  • 資源ID:6659516       資源大?。?span id="xusj3fs" class="font-tahoma">417.50KB        全文頁(yè)數(shù):9頁(yè)
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶(hù)名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢(xún)和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類(lèi)文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

基于FPGA乒乓球游戲機(jī)Verilog設(shè)計(jì).doc

基于FPGA乒乓球游戲機(jī)Verilog設(shè)計(jì) 整理者:G佑咡 江西師范大學(xué) 電子信息工程前言:此類(lèi)程序鑒于網(wǎng)上大多是VHDL設(shè)計(jì),所以我整理一份Verilog設(shè)計(jì)供初學(xué)者參考,因?yàn)闀r(shí)間關(guān)系,程序沒(méi)有優(yōu)化,也沒(méi)有注釋?zhuān)缬胁煌椎牡胤?,?qǐng)大家多提意見(jiàn)。摘 要:本文使用 FPGA 芯片來(lái)模擬實(shí)際的乒乓球游戲。本設(shè)計(jì)是基于 Altera 公司的FPGA Cyclone II 芯片 EP2C5T144C8 的基礎(chǔ)上實(shí)現(xiàn),運(yùn)用 Verilog HDL 語(yǔ)言編程,在 Quartus II 軟件上進(jìn)行編譯、仿真,最終在開(kāi)發(fā)板上成功實(shí)現(xiàn)下載和調(diào)試。1 乒乓球游戲機(jī)系統(tǒng)組成乒乓球比賽游戲機(jī)的組成如圖1 所示。比賽規(guī)則約定:五局三勝; 1 分一局; 裁判發(fā)出比賽開(kāi)始信號(hào),觸發(fā)FPGA 內(nèi)部隨機(jī)數(shù)發(fā)生器模塊產(chǎn)生首次發(fā)球權(quán)方;比賽進(jìn)行中,選手連續(xù)兩次獲得發(fā)球權(quán)后, 發(fā)球權(quán)交予對(duì)方,如未獲發(fā)球權(quán)方發(fā)球, 裁判端犯規(guī)音響電路鳴響;6 個(gè)LED 排列成行模擬乒乓球臺(tái)(因?yàn)槲业拈_(kāi)發(fā)板上只有6個(gè)LED燈,比賽開(kāi)始時(shí)候中間兩個(gè)燈亮,如果有條件的話(huà)有10來(lái)個(gè)燈最好了); 點(diǎn)亮的LED 模擬乒乓球,受 FPGA 控制從左到右或從右到左移動(dòng); 比賽選手通過(guò)按鈕輸入模擬擊球信號(hào), 實(shí)現(xiàn) LED 移位方向的控制; 若發(fā)亮的LED 運(yùn)動(dòng)在球臺(tái)中點(diǎn)至對(duì)方終點(diǎn)之間時(shí),對(duì)方未能及時(shí)按下?lián)羟虬粹o使其向相反方向移動(dòng), 即失去一分。2 功能模塊設(shè)計(jì)圖1 中,基于FPGA 設(shè)計(jì)的控制端為整個(gè)系統(tǒng)的核心,其內(nèi)部主要由簡(jiǎn)易隨機(jī)數(shù)發(fā)生器、 發(fā)球權(quán)控制器、 乒乓球位置控制器、 甲乙方計(jì)分控制器、 犯規(guī)音響控制器等模塊組成。整個(gè)控制端采用模塊化設(shè)計(jì),先用 Verilog 語(yǔ)言編寫(xiě)功能模塊,然后用頂層原理圖將各功能模塊連接起來(lái)。設(shè)計(jì)的難點(diǎn)在于協(xié)調(diào)各模塊工作,嚴(yán)格遵守各信號(hào)間時(shí)序關(guān)系。本系統(tǒng)采用50MHz系統(tǒng)時(shí)鐘。2. 1 簡(jiǎn)易隨機(jī)數(shù)發(fā)生器比賽首次發(fā)球權(quán)由隨機(jī)數(shù)發(fā)生器產(chǎn)生的數(shù)據(jù)決定,其隨機(jī)性要求不嚴(yán), 因此,采用非常簡(jiǎn)單的模式產(chǎn)生,即一旦FPGA 上電, 系統(tǒng)時(shí)鐘百分頻產(chǎn)生一方波信號(hào)square,當(dāng)裁判閉合開(kāi)始比賽開(kāi)關(guān)產(chǎn)生 start 信號(hào)上升沿時(shí),讀取此時(shí)squar e信號(hào)值作為隨機(jī)數(shù)發(fā)生器輸出data_rand。模塊仿真如圖 2 所示, 結(jié)果滿(mǎn)足設(shè)計(jì)要求。此模塊設(shè)計(jì)時(shí)保證了 square 信號(hào)周期應(yīng)遠(yuǎn)大于 start 信號(hào)上升沿建立時(shí)間, 保證隨機(jī)數(shù)據(jù)的正確讀取。2. 2 發(fā)球權(quán)控制器發(fā)球權(quán)控制器的控制過(guò)程為: 如果按下復(fù)位按鈕,發(fā)球權(quán)數(shù)碼管顯示8, 否則, 開(kāi)始比賽開(kāi)關(guān)閉合時(shí), 顯示隨機(jī)數(shù)發(fā)生器的值( 0 或 1, 0 代表甲方、 1 代表乙方) 。而在比賽中,為遵守發(fā)球權(quán)交換規(guī)則, 設(shè)計(jì)甲乙雙方計(jì)分器總和信號(hào)sum是不為0 的偶數(shù)時(shí)(即計(jì)分總次低位變化時(shí)) , 發(fā)球權(quán)數(shù)碼管顯示由0變?yōu)? 或由1 變?yōu)?。此模塊設(shè)計(jì)中, 發(fā)球權(quán)數(shù)碼管的信號(hào)控制受多個(gè)時(shí)鐘的控制,即開(kāi)始比賽開(kāi)關(guān)start 和計(jì)分值sum1信號(hào),將兩個(gè)信號(hào)組合成一個(gè)時(shí)鐘信號(hào), 并統(tǒng)一兩個(gè)時(shí)鐘的觸發(fā)沿。因此最佳時(shí)鐘觸發(fā)方式如圖3 所示的qq_en信號(hào)。為滿(mǎn)足這種時(shí)序要求, 借助計(jì)分總和次低位 sum_1 信號(hào)和啟動(dòng)信號(hào)start設(shè)計(jì)qq_en信號(hào)。 圖3 pp_en信號(hào)產(chǎn)生模塊仿真pp_en信號(hào)產(chǎn)生模塊如下:module pp_en(clk,start,sum_1,pp_en,cnt);input clk;input start; /裁判啟動(dòng)信號(hào)input sum_1; /總局?jǐn)?shù)sum次低位sum1output pp_en;output4:0 cnt; /pp_en信號(hào)個(gè)數(shù)/-reg sum_1_a,sum_1_b;reg start_a,start_b; reg4:0 cnt_r;always (posedge clk)begin start_a <= start; start_b <= start_a; sum_1_a <= sum_1; sum_1_b <= sum_1_a;end/-always (posedge clk)begin if(pp_en) cnt_r <= cnt_r+4b1; else cnt_r <= cnt_r;end/-assign cnt = cnt_r;assign pp_en = (start_astart_b) | (sum_1_asum_1_b);endmodule根據(jù)pp_en信號(hào)和隨機(jī)數(shù)data_rand控制甲乙球權(quán)模塊:module pp_possession(clk,reset,data_rand,pp_en,cnt,led_pose);input clk;input reset;input data_rand;input pp_en;input4:0 cnt;output3:0 led_pose; /甲乙球權(quán)輸出,0代表甲,1代表乙。/-reg3:0 led_pose_r;always (posedge clk or negedge reset)begin if(!reset) led_pose_r <= 4d8; else if(pp_en) begin if(cnt = 5b1) led_pose_r <= 3b0,data_rand; else led_pose_r <= !led_pose_r; end else led_pose_r <= led_pose_r;endassign led_pose = led_pose_r;endmodule2. 3 乒乓球位置控制、 甲乙計(jì)分、 犯規(guī)音響控制乒乓球位置控制電路為 FPGA 控制端的核心, 依據(jù)比賽規(guī)則,采用了Mealy 型狀態(tài)機(jī) 10來(lái)實(shí)現(xiàn),大大降低了設(shè)計(jì)難度。狀態(tài)機(jī)共定義了7 個(gè)狀態(tài), 各狀態(tài)定義如表1 所示,狀態(tài)轉(zhuǎn)換如圖5 所示, 轉(zhuǎn)換條件如表2 所示,具體程序如下。乒乓球游戲機(jī)核心控制模塊:module led_con(clk_1s,reset,start,key_a,key_b,led_pose,sum,score_a,score_b,speaker,led);input clk_1s;input reset;input start;input key_a;input key_b;input led_pose;output4:0 sum;output3:0 score_a;output3:0 score_b;output5:0 led;output speaker;reg speaker;/-reg5:0 led_move;reg3:0 score_a_r;reg3:0 score_b_r;reg6:0 state;parameter6:0 s0 = 7b0000001, s1 = 7b0000010, s2 = 7b0000100, s3 = 7b0001000, s4 = 7b0010000, s5 = 7b0100000, s6 = 7b1000000;always (posedge clk_1s or negedge reset)begin if(!reset) state <= s0; else if(!start) begincase(state)s0:begin speaker <= 1; if(score_a_r = 4d11 | score_b_r = 4d11) beginscore_a_r <= 4b0;score_b_r <= 4b0; end else if(!led_pose) beginled_move <= 6b011111;state <= s1; end else if(led_pose) beginled_move <= 6b111110;state <= s4; endends1:begin if(!key_a)begin led_move <= led_move0,led_move5:1; state <= s2;end else if(!key_b) begin speaker <= 0; state <= s0; end else state <= s1;ends2:begin if(led_move2 = 0 | led_move1 = 0 | led_move0 = 0) && !key_b)state <= s6; else if(led_move2 = 0 | led_move1 = 0) && key_b) |(led_move5 = 0 | led_move4 = 0 | led_move3 = 0) state <= s3; else begin score_a_r <= score_a_r+1; state <= s0; endends3:begin led_move <= led_move0,led_move5:1; state <= s2;ends4:begin if(!key_b)begin led_move <= led_move4:0,led_move5; state <= s5;end else if(!key_a) begin speaker <= 0; state <= s0; end else state <= s4;ends5:begin if(led_move3 = 0 | led_move4 = 0 | led_move5 = 0) && !key_a)state <= s3; else if(led_move3 = 0 | led_move4 = 0) && key_a) |(led_move0 = 0 | led_move1 = 0 | led_move2 = 0) state <= s6; else begin score_b_r <= score_b_r+1; state <= s0;endends6:begin led_move <= led_move4:0,led_move5; state <= s5;enddefault:state <= s0;endcase end else begin led_move <= 6b110011; speaker <= 1; endendassign score_a = score_a_r;assign score_b = score_b_r;assign led = led_move;assign sum = score_a_r+score_b_r;endmodule 基于 FPGA乒乓球比賽游戲機(jī)頂層原理圖 后記:因?yàn)闀r(shí)間關(guān)系,資料沒(méi)有整理的很理順,請(qǐng)大家諒解,整個(gè)工程會(huì)給出,在板子上已調(diào)試成功,因?yàn)槠古仪蛭恢每刂颇K所用的時(shí)鐘為clk_1000ms,所以按鍵停留最好超過(guò)1s就能更穩(wěn)的接住球。程序有點(diǎn)亂,沒(méi)有優(yōu)化,僅供參考!

注意事項(xiàng)

本文(基于FPGA乒乓球游戲機(jī)Verilog設(shè)計(jì).doc)為本站會(huì)員(xin****828)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!