九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

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

基于VHDL的乒乓球設(shè)計(jì).doc

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

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

基于VHDL的乒乓球設(shè)計(jì).doc

課程報(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頁1.1 項(xiàng)目名稱02頁1.2 設(shè)計(jì)內(nèi)容02頁 1.3 具體要求02頁2 系統(tǒng)整體架構(gòu) 02頁 2.1 設(shè)計(jì)原理02頁2.2 設(shè)計(jì)思路03頁3 系統(tǒng)設(shè)計(jì)03頁 3.1乒乓球游戲機(jī)實(shí)體的設(shè)計(jì)03頁 3.2狀態(tài)機(jī)編程實(shí)現(xiàn) 04頁 3.3構(gòu)造體的設(shè)計(jì)07頁 3.4發(fā)揮部分 08頁3.5最后的整體模塊和管腳鎖定10頁 3.6編譯和波形仿真10頁 3.7分工說明15頁4 結(jié)束語15頁 參考書目16頁一、 項(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)能果斷地按下位于自己一方的按鈕開關(guān),即表示啟動(dòng)球拍擊球,若擊中,則球向相反方向運(yùn)動(dòng),則對(duì)方得一分,同時(shí)蜂鳴器自動(dòng)響起。設(shè)置自動(dòng)記分電路,甲乙雙方各用一位數(shù)碼管進(jìn)行記分顯示,每計(jì)滿11分為1局。1.3具體要求(1)使用乒乓球游戲機(jī)的雙方在不同位置發(fā)球或擊球。(2)乒乓球的位置和移動(dòng)方向由燈亮和依次亮的方向決定。使用者根據(jù)球的位置發(fā)出相應(yīng)的動(dòng)作。(3)比賽用11分為一局來進(jìn)行,雙方設(shè)置各自的記分牌,任意一方先記滿11分就獲勝此局。當(dāng)記分牌清零后,開始新的一局比賽。 (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)來表示球的運(yùn)動(dòng)。在游戲機(jī)的兩側(cè)各設(shè)置發(fā)球和擊球開關(guān),甲乙雙方按乒乓球比賽規(guī)則來操作開關(guān)。當(dāng)甲方按動(dòng)發(fā)球開關(guān)時(shí),靠近甲方的第一個(gè)發(fā)光二極管亮,然后發(fā)光二極管由甲方向乙方依次點(diǎn)亮,代表乒乓球的移動(dòng)。當(dāng)球過網(wǎng)后按照設(shè)計(jì)者規(guī)定的球位乙方就可以擊球。若乙方提前擊球或者未擊到球,則甲方得分。然后重新發(fā)球進(jìn)行比賽,知道一方記分達(dá)到11分為止,記分清零,重新開始新一局比賽。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代表開始發(fā)球的指令;兩個(gè)擊球輸入端hit1和hit2,邏輯1分別表示甲擊球和乙擊球;一個(gè)開始游戲按鈕startbutton,處于邏輯1表示可以游戲;還得有一個(gè)時(shí)鐘輸入端口clk。 其次考慮輸出端口,芯片應(yīng)該有8個(gè)輸出端口來控制8個(gè)發(fā)光二極管,輸出邏輯1即輸出一個(gè)高電平,可以使發(fā)光二極管點(diǎn)亮;另外,要直觀地表示雙方的得分,就得用到數(shù)碼管,每方用到1個(gè),可以表示011的數(shù)字。另外,在發(fā)揮的部分,我們還設(shè)計(jì)了一個(gè)模塊來顯示雙方的局?jǐn)?shù)以及最后的贏家。實(shí)體的設(shè)計(jì)如下:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; -引用必要的庫函數(shù)和包集合 entity compete is port(reset:in std_logic; clk_1:in std_logic; startbutton:in std_logic; -開始游戲輸入端口 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,countb: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和allow1hit代表的具體數(shù)值依次是0到6.在波形模擬圖中是用數(shù)值來表示狀態(tài)的。乒乓球游戲機(jī)中有四個(gè)計(jì)數(shù)器count1,count2,count3,count4分別記憶甲的得分和乙的得分,甲方贏的局?jǐn)?shù)和乙方贏的局?jǐn)?shù);一個(gè)i信號(hào),用它的數(shù)值來控制狀態(tài)機(jī)外8個(gè)發(fā)光二極管的亮和暗,比如當(dāng)i=1時(shí)表示第一個(gè)發(fā)光二極管亮,用發(fā)光二級(jí)管的輪流發(fā)光表示球的移動(dòng)軌跡。輸入狀態(tài)機(jī)的信號(hào)有游戲開關(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表示不擊球。以下是狀態(tài)機(jī)進(jìn)程代碼。p1: process(clk_1) -狀態(tài)機(jī)進(jìn)程 -clk_1作為敏感信號(hào)觸發(fā)進(jìn)程begin -進(jìn)程開始 if reset=1 then -異步置位 i<=0;count1<="0000"count2<="0000"count3<="0000"count4<="0000" elsif clk_1event and clk_1=1 then -當(dāng)處于時(shí)鐘inclock上升沿時(shí) if (count1>"1010")and(count2<(count1-1) then i<=0;count1<="0000"count2<="0000"count3<=count3+1; elsif (count2>"1010")and(count1<(count2-1) then i<=0;count1<="0000"count2<="0000"count4<=count4+1; elsif startbutton=0 then i<=0;count1<="0000"count2<="0000"count3<="0000"count4<="0000" else -以下case語句是程序中最關(guān)鍵的狀態(tài)機(jī)部分 case state is when waitserve=> -進(jìn)程處于等待發(fā)球狀態(tài) case serve is when "01"=> i<=1;state<=light1on;c<=0; when "10"=> i<=8;state<=light8on;c<=0; when "11"=>i<=0;c<=0; when others=> i<=0;c<=0; end case; when light1on=> -進(jìn)程處于第一盞燈亮狀態(tài) i<=2; if hit2=1 then i<=0; count1<=count1+1;c<=1;state<=waitserve; else c<=0;state<=ballmoveto2; end if; when light8on=> -進(jìn)程處于第八盞燈亮狀態(tài) i<=7; if hit1=1 then i<=0; count2<=count2+1;c<=1;state<=waitserve; else c<=0;state<=ballmoveto1; end if; when ballmoveto1=> -進(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<=i-1; end if; when ballmoveto2=> -進(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<=i+1; end if; when allow1hit=> -進(jìn)程處于允許甲擊球狀態(tài) if hit1=1 then i<=2;c<=0; state<=ballmoveto2; else count2<=count2+1;i<=0;c<=1; state<=waitserve; end if; when allow2hit=> -進(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<=count2; -進(jìn)程處i信號(hào)控制發(fā)光二極管的亮暗3.3構(gòu)造體的設(shè)計(jì)這里的設(shè)定能使得燈正常的移動(dòng): 代碼如下: p2:process(i) begin case i is when 8=> light<="10000000" when(7)=> light<= "01000000" when(6)=> light<= "00100000" when(5)=> light<= "00010000" when(4)=> light<= "00001000" when(3)=> light<="00000100" ; when(2)=> light<="00000010" when(1)=> light<="00000001" ; when others=> light<="00000000" -其他情況所有發(fā)光二極管都暗 end case; end process p2;該構(gòu)造體緊跟在實(shí)體設(shè)計(jì)之后,這樣就完成了數(shù)字乒乓游戲機(jī)的VHDL源程序編寫。從構(gòu)造體設(shè)計(jì)中可以看到,控制整個(gè)乒乓球游戲機(jī)運(yùn)轉(zhuǎn)的就是狀態(tài)機(jī)進(jìn)程,它對(duì)各個(gè)外圍部分起控制作用。它是整個(gè)程序的核心,起到一個(gè)中心控制器的作用。而外圍的部分,比如分?jǐn)?shù)顯示,球的軌跡,都是通過狀態(tài)機(jī)傳出的信號(hào)來控制,這就是狀態(tài)機(jī)的功能和作用。程序中的球的軌跡,即發(fā)光二極管的亮暗是通過狀態(tài)機(jī)中傳出的i信號(hào)來控制的,而分?jǐn)?shù)顯示則是通過狀態(tài)機(jī)中傳出的count1和count2信號(hào)來控制的。而狀態(tài)機(jī)中i信號(hào)和count1,count2信號(hào)的變化同時(shí)就可以影響到外圍的顯示部分發(fā)光二極管和數(shù)碼管,從而表現(xiàn)出當(dāng)時(shí)的乒乓球位置和雙方分?jǐn)?shù)情況。這個(gè)核心模塊的封裝圖:3.4發(fā)揮部分 實(shí)驗(yàn)要求中,我們可以根據(jù)乒乓球比賽規(guī)則增進(jìn)設(shè)計(jì)的完善,發(fā)揮部分如下:1. 我們?cè)黾恿穗p方比賽中的局?jǐn)?shù)現(xiàn)實(shí);2. 在發(fā)球時(shí)我們可以主動(dòng)的決定發(fā)球方向;3. 我們?cè)O(shè)定了一個(gè)數(shù)碼管來直接輸出雙方在這次比賽中的勝負(fù)(即在該數(shù)碼管就可以直觀的看出誰勝誰負(fù));4. 我們根據(jù)正規(guī)比賽中的規(guī)則,在判定局?jǐn)?shù)時(shí)特別是在比數(shù)為11:10時(shí)對(duì)于判定準(zhǔn)則進(jìn)行了修改,使得雙方的比數(shù)必須為12:10,才能獲得該局的勝利。該段代碼如下:if (counta>"1001")and (countb>"1001") then if counta=(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"count4<="0000" elsif (counta>"1010")and(countb<(counta-1) then count3<=count3+1; elsif (countb>"1010")and(counta<(countb-1) then count4<=count4+1; end if;最后,這是這個(gè)模塊的全體代碼:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; -引用必要的庫函數(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 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"count4<="0000" elsif (counta>"1010")and(countb<(counta-1) then count3<=count3+1; elsif (countb>"1010")and(counta<(countb-1) then count4<=count4+1; end if; if (counta>"1001")and (countb>"1001") 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<="0000" end if;end if;winer<=win;end process;end two; 其中,winer是勝負(fù)輸出口,直接輸出a,b可以更加直觀的看出是誰的勝利;countc為甲方的局?jǐn)?shù),countd為乙方的局?jǐn)?shù)。以下為最后生成的模塊:3.5最后的整體模塊和管腳鎖定 原理圖:管腳鎖定:3.6編譯和波形仿真 (1)下圖所示代表乙發(fā)球,由light端口輸出的高電平會(huì)驅(qū)動(dòng)芯片以外的發(fā)光二極管使之點(diǎn)亮,這樣就可以通過發(fā)光二極管模擬乒乓球的運(yùn)動(dòng)軌跡??梢钥吹?,在乙方發(fā)球后,甲方在球網(wǎng)提前擊球,則乙方加一分,即countb=1。以下為波形圖形: 以light為球軌跡的信號(hào),以下為該情況下球的運(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))乙沒有擊球,所以乙得分了,countb由0變到1,數(shù)碼管也顯示出相應(yīng)的變化: 以下為球在該情況下的運(yùn)動(dòng)軌跡: (3)下圖所示代表乙發(fā)球,由light端口輸出的高電平會(huì)驅(qū)動(dòng)芯片以外的發(fā)光二極管使之點(diǎn)亮,這樣就可以通過發(fā)光二極管模擬乒乓球的運(yùn)動(dòng)軌跡。可以看到,在甲該擊球的時(shí)候沒有擊球,也就是hit1在state狀態(tài)6(allow1hit,允許甲擊球狀態(tài))的時(shí)候沒有高電平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時(shí),甲方獲得該局的勝利,即countc=1: 當(dāng)甲方與乙方的分?jǐn)?shù)比為10:10時(shí),不符合比賽規(guī)則,則沒人比賽局?jǐn)?shù)上加一: 當(dāng)甲方與乙方的分?jǐn)?shù)為11:10,11:11時(shí)的波形仿真:最后,我們做出了對(duì)于一個(gè)比賽的模擬,其中包括提前擊球甲方獲得一局比賽的勝利,一方獲得一局比賽的勝利,和我們?cè)O(shè)定的比賽分?jǐn)?shù)為10:10時(shí)的情況,以及最后由一方獲得三局比賽輸出最終的勝利者。該模擬圖形在下方:3.7分工說明 本次的實(shí)驗(yàn)是由我們?nèi)斯餐瓿桑诤献鞯倪^程中我們也分工明確。吳勝輝同學(xué)和黃琳同學(xué)主要負(fù)責(zé)對(duì)核心模塊進(jìn)行生成、編譯和仿真,許曉明同學(xué)主要負(fù)責(zé)對(duì)發(fā)揮部分的考慮。結(jié)束語在這個(gè)設(shè)計(jì)中,初步體現(xiàn)了狀態(tài)機(jī)的中心控制作用。通過狀態(tài)機(jī)進(jìn)程傳出的信號(hào),驅(qū)動(dòng)了發(fā)光二極管以及七段譯碼器等外圍設(shè)備。狀態(tài)機(jī)進(jìn)程傳出的i信號(hào),控制了發(fā)光二極管的狀態(tài),狀態(tài)機(jī)進(jìn)程傳出的count1和count2信號(hào),控制了七段譯碼器的顯示。如果要用實(shí)際電路來實(shí)現(xiàn)乒乓球游戲機(jī),就還要將設(shè)計(jì)下載到芯片中去,并且加上外圍電路,這些外圍電路包括按鍵等,即便如此,上面的設(shè)計(jì)還是不夠的,還存在兩個(gè)問題,一個(gè)是時(shí)鐘頻率問題,一個(gè)是按鍵問題,但由于時(shí)間及能力有限,就沒做太多的深入探討,但在以后的學(xué)習(xí)生活中我們?nèi)詴?huì)對(duì)此類問題繼續(xù)加以研究分析。參考文獻(xiàn):1 趙建領(lǐng). 51系列單片機(jī)開發(fā)寶典M. 北京: 電子工業(yè)出版社, 2007.2 中國電子網(wǎng). http:/www.21ic.com.3 電子電路圖網(wǎng). http:/www.cndzz.com.4 百度:http:/www.baidu.com

注意事項(xiàng)

本文(基于VHDL的乒乓球設(shè)計(jì).doc)為本站會(huì)員(xin****828)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(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)系電話:18123376007

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


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