版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
一任務(wù)描述1設(shè)計規(guī)定左、右雙方各持一按鍵作為“球拍”,實驗板上一行8只發(fā)光二極管為乒乓球臺,其中那只發(fā)光的發(fā)光二極管代表乒乓球所在位置。設(shè)計如圖1所示的乒乓球游戲?qū)嵨飯D的模擬控制器。發(fā)球方最后一位LED點亮,按下鍵表達發(fā)球,亮的燈依次向?qū)Ψ揭苿?當(dāng)?shù)竭_對方最后一位時0.5s內(nèi)對方必須按下按鍵表達接球,接球后LED燈向?qū)Ψ揭苿?否則輸球。接球時,LED沒有亮到最后一位時就按下接球按鍵為犯規(guī)。輸球或者犯規(guī),對方加1分,率先加到11分者游戲勝出這一局。2設(shè)計思緒考慮到游戲的復(fù)雜度,采用狀態(tài)機來實現(xiàn)這些模式轉(zhuǎn)換。用到8個狀態(tài),如下所示:狀態(tài)功能S0復(fù)位狀態(tài),也是判斷發(fā)球權(quán)的狀態(tài)S1甲方發(fā)球S2球從甲方向乙方右移,若此時乙方接球就給甲方加一分,并將球權(quán)給甲方S3開始判斷乙方是否在0.5S內(nèi)接球S4乙方發(fā)球S5球從乙方向甲方左移,若此時甲方接球就給乙方加一分,并將球權(quán)給乙方S6開始判斷甲方是否在0.5S內(nèi)接球S7用于接球后判斷發(fā)球程序還加入了蜂鳴、用數(shù)碼管顯示分?jǐn)?shù)和發(fā)球權(quán)等功能。二結(jié)構(gòu)框圖1狀態(tài)轉(zhuǎn)移圖K_a=1led8s==8'b01000000led8s==8'b00000010K_b=1K_a=1K_b=1K_b=1K_a=1S7S6S3S1S5S2S4S0
2程序流程圖?K_a=1led8s==8'b01000000led8s==8'b00000010K_b=1K_a=1K_b=1K_b=1K_a=1S7S6S3S1S5S2S4S03系統(tǒng)模塊?三系統(tǒng)程序modulepingpangok(state,clk2hz,rst,k_a,k_b,led8s,led7s1,led7s2,led7s3,led7s4,led7s5,speaker);//clk2hz指一個2Hz的時鐘輸入,rst異步復(fù)位,k_a和k_b是比賽雙方按鍵,speaker是蜂鳴器//led8s是一排8個發(fā)光二極管代表球場,led7s1~4是4個顯示分?jǐn)?shù)的數(shù)碼管,led7s5是顯示發(fā)球權(quán)的數(shù)碼管inputclk2hz,rst,k_a,k_b;output[7:0]led8s;output[6:0]led7s1,led7s2,led7s3,led7s4,led7s5;outputspeaker;output[2:0]state;reg[7:0]led8s;reg[6:0]led7s1,led7s2,led7s3,led7s4,led7s5;reg[3:0]score_a,score_b;reg[2:0]state;regspeaker;parameters0=3'b000,//復(fù)位狀態(tài),也是判斷發(fā)球權(quán)的狀態(tài);??s1=3'b001,//甲方發(fā)球;??s2=3'b010,//球從甲方向乙方右移,若此時乙方接球就給甲方加一分,并將球權(quán)給甲方; s3=3'b011,//開始判斷乙方是否在0.5S內(nèi)接球; ?s4=3'b100,//乙方發(fā)球; ?s5=3'b101,//球從乙方向甲方左移,若此時甲方接球就給乙方加一分,并將球權(quán)給乙方;??s6=3'b110;//開始判斷甲方是否在0.5S內(nèi)接球; ?s7=3'b111;//用于判斷接球后發(fā)球;//----------------游戲邏輯控制核心----------------------------------------------------------------------------always@(posedgeclk2hz)?begin? case(state) s7:begin? ? if(k_a) ? ? state<=s1;//甲發(fā)球;? ? elseif(k_b)??? stat(yī)e<=s4;//乙發(fā)球; elseif(speaker)?? speaker=1'b0;?? ?else ?speaker=1'b0;? ?end???s0:begin? ?led7s5<=7'b0111111;//第五個數(shù)碼管顯示數(shù)字0,表達發(fā)球權(quán)可以開始判斷了; ? ??led8s<=7'b00000000;??? score_a<=0; ????score_b<=0;//給甲乙雙方的分?jǐn)?shù)復(fù)位; ????if(k_a) ????begin???? ??speaker<=1'b1;//由于按鍵k_a要連續(xù)按著保持高電位'1',蜂鳴器鳴叫是提醒可以松手了; ???? state<=s7;??? ? end? ???elseif(k_b) ? ??begin ? ? ?speaker<=1'b1; ??? ???state<=s7; ?end? ?else? ?? state<=s0; ? ? ? ?end? ?s1:begin??? ?led7s5<=7'b0000110;//第五個數(shù)碼管顯示數(shù)字1,表達發(fā)球權(quán)現(xiàn)在是甲方的; ? ? if(led8s==8'b00000000) ?? ??led8s<=8'b10000000;//點亮的燈出現(xiàn)在最右邊,即甲方發(fā)球; ? state<=s2; ????if(speaker)? ? speaker<=1'b0;//將剛才鳴叫的蜂鳴器關(guān)閉;?? ?end ?s2:begin? ??if(led8s==8'b00000010)? ??? begin?? ? led8s<=led8s>>1;?? ? ? stat(yī)e<=s3;//進入判斷乙方接球的狀態(tài); ?? ?end ?else?? ? begin ?? ? ?led8s<=led8s>>1; ? ??? stat(yī)e<=s7;? ? end ?? if(k_b)? ? begin ???? score_a<=score_a+1;?? ?? speaker<=1'b1;//若在此期間乙方搶先按鍵,就判斷乙方輸,給甲方加1分,并讓蜂鳴器鳴叫; ? state<=s7;???? ??led8s<=8'b00000000;?? ?? end ?? end ??s3:begin? ? if(k_b)??? ? begin ??????state<=s7;//乙方接球成功,并進入乙方發(fā)球的s7狀態(tài);? ?? ??led8s<=8'b00000000;????? end ?? else? ? ?begin ? ?score_a<=score_a+1; ? ?speaker<=1'b1; ??? ? stat(yī)e<=s7;//乙方接球不成功,則甲方加一分,并進入甲方發(fā)球的s7狀態(tài),蜂鳴器鳴叫; led8s<=8'b00000000; ? ? end ???end???s4:begin?? ??led7s5<=7'b1011011;//第五個數(shù)碼管顯示數(shù)字2,表達發(fā)球權(quán)現(xiàn)在是乙方的; ? ?if(led8s==8'b00000000) ????? led8s<=8'b00000001;//點亮的燈出現(xiàn)在最左邊,即乙方發(fā)球;? ??state<=s5; ? if(speaker) ? ? speaker<=1'b0;//將剛才鳴叫的蜂鳴器關(guān)閉; ???end ??s5:begin?????if(led8s==8'b01000000)? ??begin ? ??led8s<=led8s<<1;? ? ? ?state<=s6;//進入判斷甲方接球的狀態(tài); ?? ? end ? ?else? ? begin ? ? led8s<=led8s<<1; ? ??state<=s7;? ? ? end?? ? if(k_a)? ??begin ? score_b<=score_b+1; ? ?? speaker<=1'b1;//若在此期間甲方搶先按鍵,就判斷甲方輸,給乙方加1分,并讓蜂鳴器鳴叫; ????? state<=s7; ? ? led8s<=8'b00000000;? ? ? end ?end???s6:begin ??? if(k_a) ?? ??begin ?? ?? state<=s7;//甲方接球成功,并進入甲方發(fā)球的s7狀態(tài);?? ??? led8s<=8'b00000000;???? ?end?? ??else???? begin???? ??score_b<=score_b+1;?????? speaker<=1'b1; ?? ?state<=s7;//甲方接球不成功,則乙方加一分,并進入乙方發(fā)球的s7狀態(tài),蜂鳴器鳴叫;? ???led8s<=8'b00000000;??? end ??end?? ?default:state<=s0;??endcase//----------甲乙雙方的分?jǐn)?shù)各用2個數(shù)碼管顯示----------------------------------------------------------------- ?if(score_a==11&score_b==11)?? begin? ??score_a<=0;????score_b<=0;//假如任一方得11分,一局結(jié)束,計分清零; ? end??case(score_a) ??8'b0000:begin? ? led7s1<=7'b0111111;? ? led7s2<=7'b0111111;//數(shù)碼管顯示0分; ?? ? ?? ?end ?8'b0001:begin?????? led7s1<=7'b0111111;? ? ?? led7s2<=7'b0000110;//數(shù)碼管顯示1分; ? ?? ? ?end 8'b0010:begin??? ? ?led7s1<=7'b0111111;????? led7s2<=7'b1011011;//數(shù)碼管顯示2分;?? ? ? ?end ? 8'b0011:begin? ???led7s1<=7'b0111111; ???? ?led7s2<=7'b1001111;//數(shù)碼管顯示3分;? ?????? ?end? 8'b0100:begin ? ?led7s1<=7'b0111111; ? ? ?led7s2<=7'b1100110;//數(shù)碼管顯示4分; ? ? ??end?? 8'b0101:begin ? ? ?led7s1<=7'b0111111;? ?????led7s2<=7'b1101101;//數(shù)碼管顯示5分; ??? ??end? 8'b0110:begin ? led7s1<=7'b0111111; ? ???led7s2<=7'b1111101;//數(shù)碼管顯示6分;? ??? ? end ?8'b0111:begin?????? led7s1<=7'b0111111; ? ? led7s2<=7'b0000111;//數(shù)碼管顯示7分; ? ? ?end? ?8'b1000:begin? ? ???led7s1<=7'b0111111; ?????led7s2<=7'b1111111;//數(shù)碼管顯示8分;?? ???? ? end ?8'b1001:begin ? ???led7s1<=7'b0111111; ? ?led7s2<=7'b1101111;//數(shù)碼管顯示9分; ? ? ?? end ?8'b1010:begin? ? led7s1<=7'b0000110; ? ? led7s2<=7'b0111111;//數(shù)碼管顯示10分; ? ???? end ?8'b1011:begin ?? ?led7s1<=7'b0000110;? led7s2<=7'b0000110;//數(shù)碼管顯示11分;?? ??? ? end ? default:begin??? ??led7s1<=7'b0111111;??? ?led7s2<=7'b0111111;//數(shù)碼管顯示0分;? ? ? ? ??end??endcase? case(score_b)???8'b0000:begin? ? ??led7s3<=7'b0111111; ?? led7s4<=7'b0111111;//數(shù)碼管顯示0分; ? ? ?end ? 8'b0001:begin? ??led7s3<=7'b0111111; ?? ? led7s4<=7'b0000110;//數(shù)碼管顯示1分;????? ?? ?end ? 8'b0010:begin? ? led7s3<=7'b0111111;? ?? ? led7s4<=7'b1011011;//數(shù)碼管顯示2分; ???? ?? ?end?? 8'b0011:begin ? ??led7s3<=7'b0111111; ??? ? led7s4<=7'b1001111;//數(shù)碼管顯示3分;?? ?? ? end?? 8'b0100:begin ?? ?led7s3<=7'b0111111;? ???led7s4<=7'b1100110;//數(shù)碼管顯示4分; ? ? ?? end 8'b0101:begin? ? ?led7s3<=7'b0111111; ??? led7s4<=7'b1101101;//數(shù)碼管顯示5分;?? ???? end? 8'b0110:begin? ? ?led7s3<=7'b0111111; ??? ?led7s4<=7'b1111101;//數(shù)碼管顯示6分;?? ?? ? end? ?8'b0111:begin ? ? ? led7s3<=7'b0111111;? ?? ?led7s4<=7'b0000111;//數(shù)碼管顯示7分; ? ??? end 8'b1000:begin ?? led7s3<=7'b0111111;? ? ?? led7s4<=7'b1111111;//數(shù)碼管顯示8分; ? ? ???? end ? 8'b1001:begin ? ? ?led7s3<=7'b0111111;???? led7s4<=7'b1101111;//數(shù)碼管顯示9分; ?? ??? ??end?? 8'b1010:begin ? ????led7s3<=7'b0000110;?? ? led7s4<=7'b0111111;//數(shù)碼管顯示10分; ??? ??? ??en
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物理科技在智能交通系統(tǒng)中的應(yīng)用
- 現(xiàn)代藝術(shù)與設(shè)計趨勢創(chuàng)新與變革
- 現(xiàn)代營銷中的用戶體驗設(shè)計
- 環(huán)境科學(xué)與未來綠色發(fā)展的結(jié)合策略
- 國慶節(jié)紅色電影活動方案
- Unit7《Lesson 26 I Love My Family》(說課稿)-2024-2025學(xué)年北京版(2024)英語三年級上冊
- 2024-2025學(xué)年高中地理 第4章 旅游與區(qū)域的發(fā)展 章末分層突破說課稿 中圖版選修3
- Unit 7 Happy Birthday!(說課稿)-2024-2025學(xué)年譯林版(三起)(2024)英語三年級上冊
- 2024年屆九年級歷史上冊 第11課 開辟新時代的“宣言”說課稿2 北師大版001
- 《18 初始機器人》說課稿-2023-2024學(xué)年清華版(2012)信息技術(shù)一年級下冊
- 醫(yī)院消防安全培訓(xùn)課件
- 質(zhì)保管理制度
- 《00541語言學(xué)概論》自考復(fù)習(xí)題庫(含答案)
- 2025年機關(guān)工會個人工作計劃
- 人事測評理論與方法-課件
- 最新卷宗的整理、裝訂(全)課件
- 城市旅行珠海景色介紹珠海旅游攻略PPT圖文課件
- 小學(xué) 三年級 科學(xué)《觀測風(fēng)》教學(xué)設(shè)計
- JJF1664-2017溫度顯示儀校準(zhǔn)規(guī)范-(高清現(xiàn)行)
- 第二講共振理論、有機酸堿理論
- 高考英語聽力必備場景詞匯精選(必看)
評論
0/150
提交評論