版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程報(bào)告設(shè)計(jì)課題: 乒乓球游戲的FPGA實(shí)現(xiàn) 姓 名: 黃琳 吳勝輝 許曉明 專 業(yè): 電子信息工程 學(xué) 號(hào):1115108018 1115106047 1115106052 日 期 2013 年11月25 日2013 年 12 月1 日 指導(dǎo)教師: 傅 文 淵 華僑大學(xué)信息科學(xué)與工程學(xué)院電子工程系目錄1 項(xiàng)目名稱、內(nèi)容與要求 02頁(yè)1.1 項(xiàng)目名稱02頁(yè)1.2 設(shè)計(jì)內(nèi)容02頁(yè) 1.3 具體要求02頁(yè)2 系統(tǒng)整體架構(gòu) 02頁(yè) 2.1 設(shè)計(jì)原理02頁(yè)2.2 設(shè)計(jì)思路03頁(yè)3 系統(tǒng)設(shè)計(jì)03頁(yè) 3.1乒乓球游戲機(jī)實(shí)體的設(shè)計(jì)03頁(yè) 3.2狀態(tài)機(jī)編程實(shí)現(xiàn) 04頁(yè) 3.3構(gòu)造體的設(shè)計(jì)07頁(yè) 3.4發(fā)揮部分
2、 08頁(yè)3.5最后的整體模塊和管腳鎖定10頁(yè) 3.6編譯和波形仿真10頁(yè) 3.7分工說(shuō)明15頁(yè)4 結(jié)束語(yǔ)15頁(yè) 參考書(shū)目16頁(yè)一、 項(xiàng)目名稱、內(nèi)容與要求1.1項(xiàng)目名稱 乒乓球游戲的FPGA實(shí)現(xiàn)1.2設(shè)計(jì)內(nèi)容 設(shè)計(jì)一個(gè)由甲乙雙方參賽,二人乒乓球游戲機(jī)。 用8個(gè)LED排成一條直線,以中點(diǎn)為界,兩邊各代表參賽雙方的位置,其中一只點(diǎn)亮的LED指示球的當(dāng)前位置,點(diǎn)亮的LED依次從左到右,或從右到左。當(dāng)“球”(點(diǎn)亮的那只LED)運(yùn)動(dòng)到某方的最后一位時(shí),參賽者應(yīng)能果斷地按下位于自己一方的按鈕開(kāi)關(guān),即表示啟動(dòng)球拍擊球,若擊中,則球向相反方向運(yùn)動(dòng),則對(duì)方得一分,同時(shí)蜂鳴器自動(dòng)響起。設(shè)置自動(dòng)記分電路,甲乙雙方各用
3、一位數(shù)碼管進(jìn)行記分顯示,每計(jì)滿11分為1局。1.3具體要求(1)使用乒乓球游戲機(jī)的雙方在不同位置發(fā)球或擊球。(2)乒乓球的位置和移動(dòng)方向由燈亮和依次亮的方向決定。使用者根據(jù)球的位置發(fā)出相應(yīng)的動(dòng)作。(3)比賽用11分為一局來(lái)進(jìn)行,雙方設(shè)置各自的記分牌,任意一方先記滿11分就獲勝此局。當(dāng)記分牌清零后,開(kāi)始新的一局比賽。 (4)(發(fā)揮部分)完善以上設(shè)計(jì),使之更加符合乒乓球運(yùn)動(dòng)的各項(xiàng)規(guī)則。二、系統(tǒng)整體架構(gòu)2.1設(shè)計(jì)原理兩人乒乓球游戲機(jī)是用8個(gè)發(fā)光二極管代表乒乓球臺(tái),中間兩個(gè)發(fā)光二極管兼做乒乓球網(wǎng),用點(diǎn)亮的發(fā)光二極管按一定方向移動(dòng)來(lái)表示球的運(yùn)動(dòng)。在游戲機(jī)的兩側(cè)各設(shè)置發(fā)球和擊球開(kāi)關(guān),甲乙雙方按乒乓球比賽規(guī)
4、則來(lái)操作開(kāi)關(guān)。當(dāng)甲方按動(dòng)發(fā)球開(kāi)關(guān)時(shí),靠近甲方的第一個(gè)發(fā)光二極管亮,然后發(fā)光二極管由甲方向乙方依次點(diǎn)亮,代表乒乓球的移動(dòng)。當(dāng)球過(guò)網(wǎng)后按照設(shè)計(jì)者規(guī)定的球位乙方就可以擊球。若乙方提前擊球或者未擊到球,則甲方得分。然后重新發(fā)球進(jìn)行比賽,知道一方記分達(dá)到11分為止,記分清零,重新開(kāi)始新一局比賽。2.2設(shè)計(jì)思路 根據(jù)系統(tǒng)設(shè)計(jì)的要求,乒乓球比賽游戲機(jī)的電路原理框圖如下:三、系統(tǒng)設(shè)計(jì)3.1乒乓球游戲機(jī)實(shí)體的設(shè)計(jì) 設(shè)計(jì)該乒乓球游戲機(jī)的輸入/輸出端口。首先考慮輸入端口,一般都應(yīng)該設(shè)置一個(gè)異步置位端口reset,用于在系統(tǒng)不正常時(shí)回到初始狀態(tài);一個(gè)發(fā)球輸入端serve,邏輯1代表開(kāi)始發(fā)球的指令;兩個(gè)擊球輸入端hit
5、1和hit2,邏輯1分別表示甲擊球和乙擊球;一個(gè)開(kāi)始游戲按鈕startbutton,處于邏輯1表示可以游戲;還得有一個(gè)時(shí)鐘輸入端口clk。 其次考慮輸出端口,芯片應(yīng)該有8個(gè)輸出端口來(lái)控制8個(gè)發(fā)光二極管,輸出邏輯1即輸出一個(gè)高電平,可以使發(fā)光二極管點(diǎn)亮;另外,要直觀地表示雙方的得分,就得用到數(shù)碼管,每方用到1個(gè),可以表示011的數(shù)字。另外,在發(fā)揮的部分,我們還設(shè)計(jì)了一個(gè)模塊來(lái)顯示雙方的局?jǐn)?shù)以及最后的贏家。實(shí)體的設(shè)計(jì)如下:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_log
6、ic_unsigned.all; -引用必要的庫(kù)函數(shù)和包集合 entity compete is port(reset:in std_logic; clk_1:in std_logic; startbutton:in std_logic; -開(kāi)始游戲輸入端口 serve:in std_logic_vector(1 downto 0); -發(fā)球輸入端口 hit1,hit2:in std_logic; -甲和乙的擊球輸入端口 light:out std_logic_vector(1 to 8); -控制8個(gè)發(fā)光二極管的輸出端口 speaker : out std_logic ; counta,co
7、untb:out std_logic_vector(3 downto 0); -2個(gè)用于控制4個(gè)7段譯碼器的輸出端口 end compete;3.2狀態(tài)機(jī)編程實(shí)現(xiàn)狀態(tài)機(jī)設(shè)置了7個(gè)狀態(tài),分別是等待發(fā)球狀態(tài)(waitserve)、第一盞燈亮狀態(tài)(light1on)、第八盞燈亮狀態(tài)(light8on)、球向乙移動(dòng)狀態(tài)(ballmoveto2)、球向甲移動(dòng)狀態(tài)(ballmoveto1)、允許甲擊球狀態(tài)(allow1hit)和允許乙擊球狀態(tài)(allow2hit)。狀態(tài)waitserve,light1on,ballmoveto2,allow2hit,light8on,ballmoveto1和allow1h
8、it代表的具體數(shù)值依次是0到6.在波形模擬圖中是用數(shù)值來(lái)表示狀態(tài)的。乒乓球游戲機(jī)中有四個(gè)計(jì)數(shù)器count1,count2,count3,count4分別記憶甲的得分和乙的得分,甲方贏的局?jǐn)?shù)和乙方贏的局?jǐn)?shù);一個(gè)i信號(hào),用它的數(shù)值來(lái)控制狀態(tài)機(jī)外8個(gè)發(fā)光二極管的亮和暗,比如當(dāng)i=1時(shí)表示第一個(gè)發(fā)光二極管亮,用發(fā)光二級(jí)管的輪流發(fā)光表示球的移動(dòng)軌跡。輸入狀態(tài)機(jī)的信號(hào)有游戲開(kāi)關(guān)startbutton信號(hào),它是1位二進(jìn)制信號(hào),數(shù)值為1表示可以進(jìn)入游戲;serve信號(hào),是一個(gè)2位二進(jìn)制向量,“01”表示甲發(fā)球;兩個(gè)二進(jìn)制信號(hào)hit1和hit2分別表示甲乙是否擊球,若數(shù)值為1,表示擊球,不為1表示不擊球。以下是
9、狀態(tài)機(jī)進(jìn)程代碼。p1: process(clk_1) -狀態(tài)機(jī)進(jìn)程 -clk_1作為敏感信號(hào)觸發(fā)進(jìn)程begin -進(jìn)程開(kāi)始 if reset=1 then -異步置位 i=0;count1=0000;count2=0000;count3=0000;count41010)and(count2(count1-1) then i=0;count1=0000;count2=0000;count31010)and(count1(count2-1) then i=0;count1=0000;count2=0000;count4=count4+1; elsif startbutton=0 then i=0;
10、count1=0000;count2=0000;count3=0000;count4 -進(jìn)程處于等待發(fā)球狀態(tài) case serve is when 01= i=1;state=light1on;c i=8;state=light8on;ci=0;c i=0;c -進(jìn)程處于第一盞燈亮狀態(tài) i=2; if hit2=1 then i=0; count1=count1+1;c=1;state=waitserve; else c=0;state -進(jìn)程處于第八盞燈亮狀態(tài) i=7; if hit1=1 then i=0; count2=count2+1;c=1;state=waitserve; else
11、 c=0;state -進(jìn)程處于球向乙移動(dòng)狀態(tài) if hit1=1 then i=0; count2=count2+1;c=1;state=waitserve; elsif i=2 then i=1;c=0; state=allow1hit; else i -進(jìn)程處于球向乙移動(dòng)狀態(tài) if hit2=1then i=0; count1=count1+1;c=1;state=waitserve; elsif i=7 then i=8;c=0; state=allow2hit; else i -進(jìn)程處于允許甲擊球狀態(tài) if hit1=1 then i=2;c=0; state=ballmoveto2
12、; else count2=count2+1;i=0;c=1; state -進(jìn)程處于允許乙擊球狀態(tài) if hit2=1then i=7;c=0;state=ballmoveto1; else count1=count1+1;i=0;c=1; state=waitserve; end if; end case; end if; end if; end process p1; counta=count1;countb light light light light light light light light light1001)and (countb1001) then if counta=
13、(countb+2) then count3=count3+1; elsif countb=(counta+2) then count4=count4+1; end if; end if;當(dāng)然為了不影響11:9時(shí)的比賽判定之前的代碼也是修改為:if reset=1 then count3=0000;count41010)and(countb(counta-1) then count31010)and(counta(countb-1) then count4=count4+1; end if;最后,這是這個(gè)模塊的全體代碼:library ieee; use ieee.std_logic_1164
14、.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; -引用必要的庫(kù)函數(shù)和包集合entity sum is port( reset:in std_logic; clk_1:in std_logic; counta:in std_logic_vector(3 downto 0); countb:in std_logic_vector(3 downto 0); countc,countd,winer:out std_logic_vector(3 downto 0); -2個(gè)用于控制4個(gè)7段譯碼器的輸出端口 end
15、sum;architecture two of sum is signal count3,count4:std_logic_vector(3 downto 0):=0000; signal win:std_logic_vector(3 downto 0):=0000;begin process(clk_1) begin if clk_1event and clk_1=1 then if reset=1 then count3=0000;count41010)and(countb(counta-1) then count31010)and(counta(countb-1) then count4
16、1001)and (countb1001) then if counta=(countb+2) then count3=count3+1; elsif countb=(counta+2) then count4=count4+1; end if; end if;end if;countc=count3;countd=count4;end process; process(clk_1)beginif clk_1event and clk_1=1 then if count3=0011 then win=1010; elsif count4=0011 then win=1011; else win
17、=0000; end if;end if;winer=win;end process;end two; 其中,winer是勝負(fù)輸出口,直接輸出a,b可以更加直觀的看出是誰(shuí)的勝利;countc為甲方的局?jǐn)?shù),countd為乙方的局?jǐn)?shù)。以下為最后生成的模塊:3.5最后的整體模塊和管腳鎖定 原理圖:管腳鎖定:3.6編譯和波形仿真 (1)下圖所示代表乙發(fā)球,由light端口輸出的高電平會(huì)驅(qū)動(dòng)芯片以外的發(fā)光二極管使之點(diǎn)亮,這樣就可以通過(guò)發(fā)光二極管模擬乒乓球的運(yùn)動(dòng)軌跡??梢钥吹?,在乙方發(fā)球后,甲方在球網(wǎng)提前擊球,則乙方加一分,即countb=1。以下為波形圖形: 以light為球軌跡的信號(hào),以下為該情況下球
18、的運(yùn)行軌跡: (2)下圖是在甲方發(fā)球以后,甲子正確時(shí)刻擊球的波形仿真圖。乙在允許甲擊球狀態(tài)的時(shí)候擊球了,在圖上hit2在此時(shí)刻出現(xiàn)高電平,看到state轉(zhuǎn)移了狀態(tài)2(ballmoveto2,球向乙移動(dòng)狀態(tài))當(dāng)?shù)搅藸顟B(tài)3(allow2hit,允許乙擊球狀態(tài))乙沒(méi)有擊球,所以乙得分了,countb由0變到1,數(shù)碼管也顯示出相應(yīng)的變化: 以下為球在該情況下的運(yùn)動(dòng)軌跡: (3)下圖所示代表乙發(fā)球,由light端口輸出的高電平會(huì)驅(qū)動(dòng)芯片以外的發(fā)光二極管使之點(diǎn)亮,這樣就可以通過(guò)發(fā)光二極管模擬乒乓球的運(yùn)動(dòng)軌跡??梢钥吹?,在甲該擊球的時(shí)候沒(méi)有擊球,也就是hit1在state狀態(tài)6(allow1hit,允許甲擊球狀態(tài))的時(shí)候沒(méi)有高電平1輸入,則算乙得分,countb由0變到1,之后state回到狀態(tài)0(waitserve,等待發(fā)球狀態(tài))。從最后一行state值的變化,可以清楚地分析狀態(tài)轉(zhuǎn)移: 以下為該情況下的球運(yùn)行軌跡: (4)以下為我們?cè)O(shè)計(jì)的創(chuàng)新部分波形仿真: 當(dāng)甲方與乙方的分?jǐn)?shù)比為12:10
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 水上俱樂(lè)部防水工程合同
- 城市工業(yè)區(qū)加油站建設(shè)合同
- 石材制品供應(yīng)合同
- 【初中道法】做有夢(mèng)想的少年+課件-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
- 酒店管理反思總結(jié)
- 遼寧省沈陽(yáng)市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)人教版競(jìng)賽題((上下)學(xué)期)試卷及答案
- 福建省漳州市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)統(tǒng)編版小升初真題((上下)學(xué)期)試卷及答案
- 路邊小吃食品安全
- 消防安全活動(dòng)課小班
- 2024年度環(huán)保設(shè)施運(yùn)營(yíng)管理服務(wù)合同
- 北京市第一O一中學(xué)2024-2025學(xué)年八年級(jí)上學(xué)期期中語(yǔ)文試題(含答案)
- 天一大聯(lián)考2025屆物理高一上期中質(zhì)量檢測(cè)模擬試題含解析
- 心理健康教育教師自我分析及申請(qǐng)理由
- 中低產(chǎn)田類型劃分及改良技術(shù)規(guī)范
- 2024-2030年再生醫(yī)學(xué)市場(chǎng)發(fā)展行情監(jiān)測(cè)及前景運(yùn)營(yíng)態(tài)勢(shì)趨向研判研究報(bào)告
- 用戶運(yùn)營(yíng)指南
- 2020年山東煙臺(tái)中考滿分作文《就這樣被打動(dòng)》9
- 國(guó)網(wǎng)員工合同模板
- 建設(shè)2臺(tái)66000KVA全封閉低碳硅錳礦熱爐項(xiàng)目竣工環(huán)保驗(yàn)收監(jiān)測(cè)調(diào)查報(bào)告
- 期中核心素質(zhì)卷(試題)-2024-2025學(xué)年數(shù)學(xué)六年級(jí)上冊(cè)北師大版
- 《Photoshop圖像處理》5.《濾鏡特效技巧的學(xué)習(xí)》試卷
評(píng)論
0/150
提交評(píng)論