乒乓球游戲電路課程設(shè)計最終完成版_第1頁
乒乓球游戲電路課程設(shè)計最終完成版_第2頁
乒乓球游戲電路課程設(shè)計最終完成版_第3頁
乒乓球游戲電路課程設(shè)計最終完成版_第4頁
乒乓球游戲電路課程設(shè)計最終完成版_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、電子課程設(shè)計基于Verilog的乒乓游戲設(shè)計電路學院:專業(yè)、班級:姓名:學號: 指導教師: 2014年12月引言可編程器件的廣泛應(yīng)用,為數(shù)字系統(tǒng)的設(shè)計帶來了極大的靈活性??删幊唐骷梢酝ㄟ^軟件編程對硬件的結(jié)構(gòu)和工作方式進行重構(gòu),使得硬件的設(shè)計可以如同軟件設(shè)計那樣快捷方便。高速發(fā)展的FPGA、CPLD兼有串、并行工作方式和高速、高可靠性的特點,在電子系統(tǒng)設(shè)計中得到了廣泛應(yīng)用。 通常使用硬件描述語言(Hardware Description Language,HDL)進行數(shù)字電子系統(tǒng)設(shè)計。目前應(yīng)用廣泛的硬件描述語言有:VHDL語言,Verilog HDL語言

2、,AHDL語言。Verilog語言由于具有強大的行為描述能力和豐富的仿真語句從而成為系統(tǒng)設(shè)計領(lǐng)域最佳的硬件描述語言。 鑒于如上所述,本系統(tǒng)使用Verilog語言進行設(shè)計,采用自上向下的設(shè)計方法。利用Quartus II 9.1 進行Verilog程序的編譯與綜合,然后用Modelism SE 6.0進行功能仿真和時序仿真,并使用EDA實驗箱進行下載驗證?;赩erilog的乒乓游戲設(shè)計電路一、 設(shè)計任務(wù)與要求任務(wù): 設(shè)計一個乒乓球游戲機,模擬乒乓球比賽的基本過程和規(guī)則,并能裁判和自動計分。 要求如下: 1

3、.使用乒乓球游戲機的甲乙雙方在不同的位置罰球或擊球。 2.乒乓球的位置和移動方向可由發(fā)光二極管和依次點亮的方向決定,為球的移動速度為一定值(我們設(shè)計中設(shè)為0.5秒移動一位)。使用者可按乒乓球的位置發(fā)出相應(yīng)的動作,在其他時候擊球視為犯規(guī),給對方加一分;都犯規(guī)雙方各加一分。二、總體框圖設(shè)計思路根據(jù)乒乓球比賽的過程和規(guī)則,首先游戲開始,如果一方非正確擊球則另一方加分,當分數(shù)大于11時獲勝,游戲結(jié)束,系統(tǒng)設(shè)計流程圖如圖1所示。圖2給出了乒乓球游戲機的原理圖。用5個發(fā)光二極管代表乒乓球,在游戲機兩側(cè)各設(shè)置二個開關(guān),一個是發(fā)球開關(guān),一個是擊球開關(guān)。即若A方按動發(fā)球開關(guān)時,靠近A方的第一燈亮,然后

4、二極管由A向B逐次點亮,代表乒乓球在移動。當過網(wǎng)后,B就可以擊球,否則判B方失分,A方自動加分,重新發(fā)球比賽繼續(xù)進行到一方計分到11分,該局結(jié)束,計分牌清零,可以開始新的一局比賽。反之B發(fā)球時也一樣。將核心模塊分倆個進程:第一個實現(xiàn)邏輯功能,第二個將整數(shù)記分轉(zhuǎn)換為十進制數(shù),便于譯碼顯示;得分顯示模塊用七段譯碼器。 各個狀態(tài)間的轉(zhuǎn)移控制要根據(jù)要求來改變轉(zhuǎn)移的狀態(tài)由于設(shè)計要求實現(xiàn)LED燈依此從左到右,或從右到左的移動,同時球拍擊球。若擊中,則球向相反方向移動,若未擊中,則對方得1分。就其功能,若要實現(xiàn)記分,就得用到7段數(shù)碼管,考慮到硬件要求,考慮用動態(tài)掃描技術(shù)來解決。動態(tài)掃描前要進行譯碼

5、,即把記數(shù)得分的結(jié)果譯碼成七段碼。設(shè)計方案完全用Verilog HDL語言編寫程序。三、器件選擇1、裝有QuartusII軟件的計算機一臺。 2、EDA實驗箱一個 (1)7段數(shù)碼顯示管。 (2)5個LED燈。 (3)芯片:使用Altera公司生產(chǎn)的CycloneIV芯片,選用EP4CE6E22C8片。四、功能模塊1、實現(xiàn)整個設(shè)計的邏輯功能,當游戲開始時,先通過clr對整個系統(tǒng)進行清零,在輸入clk上升沿有效的條件下,甲方開始發(fā)球,LED燈從距離甲方最近的一個開始閃亮,并依次向乙方移動,過了網(wǎng)后乙方就可以擊球,若乙方擊球成功,則球按原路返回,再次過網(wǎng)后甲方

6、就可擊球,若甲擊球成功,則按以上游戲一直進行下去,若有一方擊球失敗或提前擊球,對方在記分牌上自動記一分;當其中的一方記滿11分時比賽結(jié)束,清零后可開始下一局。2、將整數(shù)計分轉(zhuǎn)換為十進制數(shù),便于譯碼顯示。當甲乙雙方的記分低位到達9時使低位清零,同時使高位加1,以便正確地在數(shù)碼管上顯示得分。clr為乒乓球游戲清零鍵,af為A方發(fā)球控制鍵,aj接球鍵; bf為乙方發(fā)球控制鍵,bj接球鍵;clk為控制乒乓球行進速度的時鐘信號,接50MHZ時鐘信號源;shift為LED燈顯示輸出端,接5個LED顯示燈;計分要經(jīng)過譯碼器譯碼后接8位共陰極數(shù)碼顯示管。Verilog HDL程序module lqq

7、 (shift,scan,seg7,clk50Mhz,clr,af,aj,bf,bj);output4:0 shift;output3:0 scan;output6:0 seg7;input clk50Mhz; /50Mhz時鐘信號input af; /A方發(fā)球input aj; /A方擊球input bf; /B方發(fā)球input bj; /B方擊球input clr; /系統(tǒng)復位段reg4:0 shift; /5個LED代表乒乓球甲左乙右)reg3:0 scan; /數(shù)碼管地址選擇信號reg6:0 seg7; /7段顯示控制信號(abcdefg)reg clk1,clk2;reg3:0 a_

8、score,b_score;reg1:0 cnt;reg3:0 data;reg3:0 a_one,a_ten,b_one,b_ten;reg23:0 count,count1;reg a,b; /A和B的控制位reg4:0 shift_1;/-2hz分頻-always(posedge clk50Mhz)beginif(count=24'd25000)begin clk1<=clk1;count=0;endelse begin count<=count+1;endend always(posedge clk1)begin if(count1=24'd250) beg

9、in clk2<=clk2;count1=0;end else begin count1<=count1+1;end if(cnt=2'b11)begin cnt<=2'b00;endelsebegin cnt<=cnt+1;endend/乒乓球游戲規(guī)則always(posedge clk2)beginif(clr)begin a_score<=0;b_score<=0;a<=0;b<=0;shift_1<=0;endelsebeginif(!a&&!b&&af) /如果A發(fā)球begin a&

10、lt;=1;shift_1<=5'b10000;end /A的控制位置1else if(!a&&!b&&bf)begin b<=1;shift_1<=5'b00001;end /B的控制位置1else if(a&&!b) /球從A向B移動beginif(shift_1>5'b00100) /如果沒到球網(wǎng)B擊球,則A加分beginif(bj)begina_score<=a_score+1;a<=0;b<=0;shift_1<=5'b00000;endelse /如果B一

11、直沒有接球,則A加分begin shift_14:0<=shift_14:0>>1;endendelse if(shift_1=5'b0)begin a_score<=a_score+1;a<=0;b<=0;endelsebeginif(bj) /如果B擊球成功,則B的控制位置1,A的控制位清零begin a<=0;b<=1;endelsebegin shift_14:0<=shift_14:0>>1;endendendelse if(b&&!a) / 球從B向A移動beginif(shift_1<

12、5'b00100&&shift_1!=5'b0)beginif(aj) /如果沒到球網(wǎng)A擊球,則B加分beginb_score<=b_score+1;a<=0;b<=0;shift_1<=5'b00000;endelsebegin shift_14:0<=shift_14:0<<1;endendelse if(shift_1=5'b0) /如果A一直沒接球,則B加分begin b_score<=b_score+1;a<=0;b<=0;endelsebeginif(aj) /如果A擊球成功

13、,則A的控制位置1,B的控制位置清零begin a<=1;b<=0;endelsebegin shift_14:0<=shift_14:0<<1;endendendendshift<=shift_1;if(a_score=4'b1011&&!clr)begin a_score<=a_score;b_score<=b_score;endif(b_score=4'b1011&&!clr)begin a_score<=a_score;b_score<=b_score;endend/-將A和B的

14、計分換成BCD碼-always(posedge clk2)begincase(a_score3:0)4'b0000:begin a_one<=4'b0000;a_ten<=4'b0000;end4'b0001:begin a_one<=4'b0001;a_ten<=4'b0000;end4'b0010:begin a_one<=4'b0010;a_ten<=4'b0000;end4'b0011:begin a_one<=4'b0011;a_ten<=4'

15、;b0000;end4'b0100:begin a_one<=4'b0100;a_ten<=4'b0000;end4'b0101:begin a_one<=4'b0101;a_ten<=4'b0000;end4'b0110:begin a_one<=4'b0110;a_ten<=4'b0000;end4'b0111:begin a_one<=4'b0111;a_ten<=4'b0000;end4'b1000:begin a_one<=4&

16、#39;b1000;a_ten<=4'b0000;end4'b1001:begin a_one<=4'b1001;a_ten<=4'b0000;end4'b1010:begin a_one<=4'b0000;a_ten<=4'b0001;end4'b0011:begin a_one<=4'b0001;a_ten<=4'b0001;enddefault:begin a_one<=4'bx;a_ten<=4'bx;endendcaseendalway

17、s(b_score3:0)case(b_score3:0)4'b0000:begin b_one<=4'b0000;b_ten<=4'b0000;end4'b0001:begin b_one<=4'b0001;b_ten<=4'b0000;end4'b0010:begin b_one<=4'b0010;b_ten<=4'b0000;end4'b0011:begin b_one<=4'b0011;b_ten<=4'b0000;end4'b0100

18、:begin b_one<=4'b0100;b_ten<=4'b0000;end4'b0101:begin b_one<=4'b0101;b_ten<=4'b0000;end4'b0110:begin b_one<=4'b0110;b_ten<=4'b0000;end4'b0111:begin b_one<=4'b0111;b_ten<=4'b0000;end4'b1000:begin b_one<=4'b1000;b_ten<=4

19、'b0000;end4'b1001:begin b_one<=4'b1001;b_ten<=4'b0000;end4'b1010:begin b_one<=4'b0000;b_ten<=4'b0001;end4'b0011:begin b_one<=4'b0001;b_ten<=4'b0001;enddefault:begin b_one<=8'bx;b_ten<=8'bx;endendcase/-數(shù)碼管動態(tài)掃描-always(posedge clk1

20、)begincase(cnt1:0)2'b00:begin data<=b_one;scan<=4'b1110;end2'b01:begin data<=b_ten;scan<=4'b1101;end2'b10:begin data<=a_one;scan<=4'b1011;end2'b11:begin data<=a_ten;scan<=4'b0111;enddefault:begin data<=4'bx;scan<=4'bx;endendcase/-

21、七段譯碼-case(data3:0)4'b0000: seg76:0=7'h3f;4'b0001: seg76:0=7'h06;4'b0010: seg76:0=7'h5b;4'b0011: seg76:0=7'h4f;4'b0100: seg76:0=7'h66;4'b0101: seg76:0=7'h6d;4'b0110: seg76:0=7'h7d;4'b0111: seg76:0=7'h07;4'b1000: seg76:0=7'h7f;4'b1001: seg76:0=7&#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論