




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一 設(shè)計(jì)課題的任務(wù)要求一、實(shí)驗(yàn)?zāi)康?. 熟練掌握VHDL 語(yǔ)言和QuartusII 軟件的使用;2. 理解狀態(tài)機(jī)的工作原理和設(shè)計(jì)方法;3. 掌握利用EDA 工具進(jìn)行自頂向下的電子系統(tǒng)設(shè)計(jì)方法;二、實(shí)驗(yàn)任務(wù)兩人乒乓游戲機(jī)是以8 個(gè)發(fā)光二極管代表乒乓球臺(tái),用發(fā)光管按一定的方向依次閃亮來(lái)表示球的運(yùn)動(dòng)。在游戲機(jī)兩側(cè)各設(shè)一個(gè)發(fā)球/擊球開(kāi)關(guān),當(dāng)甲方發(fā)球時(shí),靠近甲方的第一個(gè)發(fā)光管亮,然后依次點(diǎn)亮第二個(gè)球向乙方移動(dòng),球過(guò)網(wǎng)后到達(dá)設(shè)計(jì)者的規(guī)定的球位乙方即可擊球,若乙方提前擊球或未擊到球,則甲方得分。然后重新發(fā)球進(jìn)行比賽,直到某一方記分達(dá)到規(guī)定分,比賽結(jié)束。要求:1以8個(gè)發(fā)光二極管代表乒乓球臺(tái),乒乓球的位置和移動(dòng)
2、方向由燈亮及依次點(diǎn)亮的方向決定,擊球規(guī)則可自行設(shè)定;2球移動(dòng)的速度:0.10.5s均可;3用數(shù)碼管分別顯示雙方的得分;4當(dāng)某一方比分達(dá)到11 分時(shí),比賽結(jié)束比分清零,雙方重新開(kāi)始比賽;5設(shè)置復(fù)位鍵,按下后比分清零,雙方重新開(kāi)始比賽;67 局4 勝制,能記錄和顯示雙方贏得的局?jǐn)?shù)。二、系統(tǒng)設(shè)計(jì) 一、總體框圖 流程圖YNYNYYNNNNYYNNYY準(zhǔn)備發(fā)球開(kāi)始發(fā)球方甲?乙擊球?發(fā)球方乙?球由甲向乙移動(dòng)球由甲向乙移動(dòng)甲擊球?允許擊球乙擊球?甲擊球?球移至可擊球區(qū)允許擊球甲獲勝乙獲勝111結(jié)束 勝方得分球移至可擊球區(qū)二、設(shè)計(jì)思路 狀態(tài)轉(zhuǎn)移L6=0IB=0IA=1IB=1IA=0L1=1IB=1IA=1L
3、6=1IB=0IB=1IA=1IA=IB=0L1=0IA=0waitings1moveBendsmoveAs2permitBpermitA三、分塊設(shè)計(jì)clearscnt1,cnt2cleartczqcqt時(shí)鐘 CLK球 臺(tái)控制器 譯碼顯示器計(jì)分器三、仿真波形圖1甲發(fā)球,乙未接球,甲得分。control置1110時(shí)顯示甲個(gè)位得分0110000“1”。同理,乙發(fā)球時(shí):2甲發(fā)球,乙提前擊球,甲得分。顯示甲個(gè)位得分0110000“1”。同理,乙發(fā)球時(shí):3甲發(fā)球,乙擊回球,甲未擊球,乙得分。顯示乙個(gè)位得分0110000“1”。同理,乙發(fā)球時(shí):4.按下reset鍵,分?jǐn)?shù)清零四、源程序LIBRARY IEE
4、E;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;- 兩人乒乓球游戲機(jī) -ENTITY pingpong ISPORT(IA:IN STD_LOGIC;-甲輸入IB:IN STD_LOGIC;-乙輸入clk:IN STD_LOGIC;-時(shí)鐘輸入reset: IN STD_LOGIC;score:OUT STD_LOGIC_VECTOR(0 TO 6); -控制數(shù)碼管顯示比分light:BUFFER STD_LOGIC_VECTOR(0 TO 7);-燈輸出control:BUFFER STD_LOGIC_VECTOR(0
5、 TO 5)-選擇當(dāng)前顯示數(shù)碼管);END pingpong;ARCHITECTURE pp OF pingpong ISTYPE state_type IS(waiting,s1,moveB,permitB,s2,moveA,permitA,ends);SIGNAL state: state_type; -狀態(tài)變量SIGNAL czq, cqt,c:STD_LOGIC; -時(shí)鐘分頻SIGNAL count1:INTEGER RANGE 0 to 149999;SIGNAL count2:INTEGER RANGE 0 to 9;SIGNAL countc:INTEGER RANGE 0 to
6、 19999;SIGNAL cnt1,cnt2:STD_LOGIC;-得分方控制信號(hào)SIGNAL score11,score12:STD_LOGIC_VECTOR(0 TO 3);-甲計(jì)分信號(hào)SIGNAL score21,score22:STD_LOGIC_VECTOR(0 TO 3);-乙計(jì)分信號(hào)SIGNAL round1,round2:STD_LOGIC_VECTOR(0 TO 3);SIGNAL clears,cleart:STD_LOGIC; -分?jǐn)?shù)清零,球臺(tái)清零控制SIGNAL direct:STD_LOGIC; -方向控制 0右移1左移SIGNAL wac:INTEGER RANG
7、E 0 to 24;-等待發(fā)球計(jì)數(shù)BEGIN- P1: 控制器時(shí)鐘分頻 -P1:PROCESS(clk)beginif(clk'event and clk='1')then if(count1=149999)then count1<=0; czq<=not czq; else count1<=count1+1; end if;end if;END PROCESS;- P2: 球臺(tái)時(shí)鐘分頻 -P2:PROCESS(czq)beginif(czq'event and czq='1')then if(count2=9)then cou
8、nt2<=0; cqt<=not cqt; else count2<=count2+1; end if;end if;END PROCESS;- P3: 球臺(tái)控制 -P3:PROCESS(cqt)VARIABLE lightvar:INTEGER RANGE 0 to 8;-球位控制變量beginif(cqt'event and cqt='1')then if(score11="0001" and score12="0001")or(score21="0001" and score22=&qu
9、ot;0001") then-一方到11分,發(fā)清零信號(hào) if(score11="0001" and score12="0001")then round1<=round1+1; elseround2<=round2+1; end if;clears<='1' if(round1="0011")or(round2="0011")then round1<="0000" round2<="0000" end if ; else
10、clears<='0' if(cleart='0')then-球臺(tái)無(wú)球 lightvar:=0; light<="00000000" else if(direct='0')then-球右移 if(lightvar<8)then lightvar:=lightvar+1; else lightvar:=0; end if; else-球左移 if(lightvar=0)then lightvar:=8; else lightvar:=lightvar-1; end if; end if; case lightv
11、ar is-球位 when 1=>light<="10000000" when 2=>light<="01000000" when 3=>light<="00100000" when 4=>light<="00010000" when 5=>light<="00001000" when 6=>light<="00000100" when 7=>light<="00000010&quo
12、t; when 8=>light<="00000001"when others=>light<="00000000" end case; end if; end if;end if;END PROCESS;- P4: 狀態(tài)轉(zhuǎn)移 -P4:PROCESS(czq)beginif(czq'event and czq='1')thencase state is-等待發(fā)球狀態(tài)when waiting=>cleart<='0'if(clears='1')then-局后清零 s
13、core11<="0000" score12<="0000" score21<="0000" score22<="0000" else if(wac=24)then-得分后等待時(shí)間已到if(reset='1') then score11<="0000" score12<="0000" score21<="0000" score22<="0000" state<=wai
14、ting;end if; wac<=24; if(IA='1' and IB='0')then -甲發(fā)球 state<=s1; elsif(IA='0' and IB='1')then -乙發(fā)球 state<=s2; else -繼續(xù)等待 state<=waiting; end if; else-得分后尚未可以發(fā)球 wac<=wac+1; end if; end if;- 甲發(fā)球狀態(tài)when s1=>cleart<='1'-球上球臺(tái)direct<='0'
15、;-球向右移if(light(1)='1')thenstate<=moveB;elsestate<=s1;end if;-球向乙移動(dòng)狀態(tài)when moveB=>cleart<='1'-球上球臺(tái)direct<='0'-球向右移if(light(6)='0' and IB='0')then -不允許乙擊球且乙未擊球 state<=moveB; elsif(light(6)='1' and IB='0')then -允許乙擊球且乙未擊球 state<
16、;=permitB; else-不允許乙擊球而乙擊球 cnt1<='1' cleart<='0'state<=ends;end if;-允許乙擊球狀態(tài)when permitB=>if(light(6)='0' and light(7)='0' and IB='0')then -乙未及時(shí)擊球cnt1<='1'cleart<='0'state<=ends;elsif(IB='1')then -乙擊球state<=moveA;
17、else -乙尚未擊球state<=permitB; end if;- 乙發(fā)球狀態(tài)when s2=>cleart<='1'-球上球臺(tái)direct<='1'-球向左移if(light(6)='1')thenstate<=moveA;elsestate<=s2;end if;-球向甲移動(dòng)狀態(tài)when moveA=>cleart<='1'direct<='1'-球向左移if(light(1)='0' and IA='0')then-不允
18、許甲擊球且甲未擊球state<=moveA;elsif(light(1)='1' and IA='0')then-允許甲擊球且甲未擊球state<=permitA;elsecnt2<='1'cleart<='0'state<=ends;end if;-允許甲擊球狀態(tài)when permitA=>if(light(1)='0' and light(0)='0' and IA='0')then-甲未及時(shí)擊球cnt2<='1'clea
19、rt<='0'state<=ends;elsif(IA='1')thenstate<=moveB;elsestate<=permitA;end if;- 得分狀態(tài)when ends=>if(cnt1='1')then-甲得分if(score11="1001")then-個(gè)位已到9score12<=score12+1;score11<="0000"elsescore11<=score11+1;end if; elsif(cnt2='1')then
20、-乙得分if(score21="1001")thenscore22<=score22+1;score21<="0000"elsescore21<=score21+1;end if;end if;-得分信號(hào)復(fù)零cnt1<='0'cnt2<='0'state<=waiting;wac<=0;end case;end if;END PROCESS;- P5: 數(shù)碼管掃描分頻-P5:PROCESS(clk)beginif(clk'event and clk='1')
21、then if(countc=19999)then countc<=0; c<=not c; else countc<=countc+1; end if;end if;END PROCESS;- P6: 數(shù)碼管顯示控制-P6:PROCESS(c)VARIABLE count: integer range 0 to 5;beginif(c'event and c='1')thencount:=count+1;case count iswhen 0=>control<="011111"when 1=>control&l
22、t;="101111"when 2=>control<="110111"when 3=>control<="111011"when 4=>control<="111101"when 5=>control<="111110"end case;end if;END PROCESS;- P7: 譯碼顯示控制-P7:PROCESS(control)variable sc:std_logic_vector(0 to 3);beginif(control=&q
23、uot;011111")then-顯示甲得分個(gè)位sc:=score11;elsif(control="101111")then-顯示甲得分十位sc:=score12;elsif(control="110111")then-顯示乙得分個(gè)位sc:=score21;elsif(control="111011")then-顯示乙得分十位sc:=score22;elsif(control="111101")thensc:=round1;elsif(control="111110")thensc:
24、=round2;end if;case sc iswhen "0000"=>score<="1111110"-0when "0001"=>score<="0110000"-1when "0010"=>score<="1101101"-2when "0011"=>score<="1111001"-3when "0100"=>score<="0110011"-4when "0101"=>score<="1011011"-5when "0110"=>score<="1011111"-6when "0111"=>score<="
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- D打印技術(shù)在個(gè)性化教育資源的開(kāi)發(fā)考核試卷
- 期刊出版論文的開(kāi)源出版趨勢(shì)考核試卷
- 教育音像制品策劃與制作考核試卷
- 文具行業(yè)個(gè)性化服務(wù)考核試卷
- 工業(yè)園區(qū)電動(dòng)汽車充電需求分析考核試卷
- 健康生活方式與營(yíng)養(yǎng)健康考核試卷
- 個(gè)人培訓(xùn)課件大全
- 買杭州新房合同范本
- 私人店鋪?zhàn)赓U合同范本
- 2025屆吉林省吉林地區(qū)高三上學(xué)期二模英語(yǔ)試題及答案
- 2024轉(zhuǎn)向節(jié)設(shè)計(jì)標(biāo)準(zhǔn)
- 一年級(jí)《讀讀兒歌和童謠》線上閱讀測(cè)試專項(xiàng)測(cè)試題附答案
- 強(qiáng)化學(xué)習(xí)在支付風(fēng)控
- 工商企業(yè)管理畢業(yè)論文范文(4篇)
- 重癥醫(yī)學(xué)科相關(guān)技術(shù)規(guī)范與操作規(guī)程
- DB11∕T 1326-2016 中小學(xué)校晨午檢規(guī)范
- 北師大版(三起)(2024)三年級(jí)上冊(cè)英語(yǔ)Unit 2 School life單元測(cè)試卷(含答案)
- 兩癌篩查宣傳課件
- 《跨境直播運(yùn)營(yíng)》課件-跨境直播的概念和發(fā)展歷程
- 施工現(xiàn)場(chǎng)安全隱患檢查表
- DLT5461-2013 火力發(fā)電廠施工圖設(shè)計(jì)文件深度規(guī)定(第1-16部分)
評(píng)論
0/150
提交評(píng)論