版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
一、設(shè)計(jì)任務(wù)智力競(jìng)賽搶答器VerilogHDL要求有6位參賽者進(jìn)行搶答,有六個(gè)搶答信號(hào)進(jìn)行搶答。當(dāng)有搶答選手按下?lián)尨疰I后系統(tǒng)能夠快速準(zhǔn)確的判斷是那一組選手按下了搶答信號(hào),由于系統(tǒng)比較小,速度比較快一般不會(huì)有同時(shí)按下的可能,所以只有六種狀態(tài),然后系統(tǒng)能夠根據(jù)這六種狀態(tài)進(jìn)行適時(shí)的顯示和提示。當(dāng)有選手按下以后就對(duì)搶答信號(hào)進(jìn)行鎖存,其他選手的輸入無效。然后就是對(duì)搶答進(jìn)行時(shí)間限制了,根據(jù)設(shè)定的時(shí)間進(jìn)行倒計(jì)時(shí),當(dāng)?shù)褂?jì)時(shí)完成還沒有人搶答的時(shí)候系統(tǒng)發(fā)出警報(bào)聲音提示時(shí)間已經(jīng)到了。當(dāng)有選手在主持人未按下?lián)尨疰I搶答時(shí)視為超前搶答,系統(tǒng)顯示該選手號(hào),同時(shí)蜂鳴器響,該搶答無效。還有清除復(fù)位鍵,搶答完成以后按復(fù)位鍵即可清除已有的狀態(tài)。通過VerilogHDL程序代碼實(shí)現(xiàn)系統(tǒng)的各個(gè)功能。二、設(shè)計(jì)目的與要求目的:理論聯(lián)系實(shí)際,鞏固和運(yùn)用所學(xué)課程,提高分析、解決計(jì)算機(jī)技術(shù)實(shí)際問題的獨(dú)立工作能力,培養(yǎng)學(xué)生正確的設(shè)計(jì)思想,嚴(yán)肅認(rèn)真、實(shí)事求是的科學(xué)態(tài)度和勇于探索的創(chuàng)新精神。通過對(duì)一個(gè)智力搶答器的設(shè)計(jì),進(jìn)一步加深對(duì)計(jì)算機(jī)原理以及數(shù)字電路應(yīng)用技術(shù)方面的了解與認(rèn)識(shí),進(jìn)一步熟悉數(shù)字電路系統(tǒng)設(shè)計(jì)、制作與調(diào)試的方法和步驟,通過Verilog程序的編寫,進(jìn)一步熟悉VerilogHDL的語法知識(shí);規(guī)范化訓(xùn)練學(xué)生撰寫技術(shù)研究報(bào)告,提高書面表達(dá)能力。要求:掌握FPGA設(shè)計(jì)系統(tǒng)的一般方法。熟練掌握使用modelsim軟件設(shè)計(jì)較復(fù)雜的數(shù)字邏輯電路。培養(yǎng)學(xué)生獨(dú)立分析問題和解決實(shí)際問題的能力。課程設(shè)計(jì)的內(nèi)容設(shè)計(jì)一搶答器,要求如下:(1)搶答臺(tái)數(shù)為6;(2)具有搶答開始后20s倒計(jì)時(shí),20秒倒計(jì)時(shí)后6人搶答顯示超時(shí),并報(bào)警;(3)能顯示超前搶答臺(tái)號(hào)并顯示犯規(guī)報(bào)警;(4)系統(tǒng)復(fù)位后進(jìn)入搶答狀態(tài),當(dāng)有一路搶答按鍵按下,該路搶答信號(hào)將其余各路搶答信號(hào)封鎖,同時(shí)鈴聲響起,直至該路按鍵松開,顯示牌顯示該路搶答臺(tái)號(hào)。四、系統(tǒng)設(shè)計(jì)方案根據(jù)系統(tǒng)設(shè)計(jì)要求可知,系統(tǒng)的輸入信號(hào)有:主持人按鈕inputEn,各選手的搶答按鈕分別是inputL1、inputL2、inputL3、inputL4,inputL5,inputL6,主持人和選手搶答按鈕都是低電平有效,系統(tǒng)復(fù)位信號(hào)clr(高電平有效),系統(tǒng)時(shí)鐘信號(hào)clk,系統(tǒng)的輸出信號(hào)有:六個(gè)人搶答成功與否的指示燈控制信號(hào)輸出口Led2,犯規(guī)搶答時(shí)報(bào)警器Buzzer(低電平有效)。本系統(tǒng)應(yīng)具有的功能有:能夠準(zhǔn)確的判斷出是哪位搶答者,當(dāng)主持人沒按搶答時(shí),有人搶答了則蜂鳴器報(bào)警,并顯示該選手號(hào),當(dāng)主持人按了搶答鍵時(shí)有人搶答了,同時(shí)封鎖搶答信號(hào),其他選手搶答無效,不顯示該選手號(hào)。五、仿真過程與仿真結(jié)果仿真過程:使用ModelSim進(jìn)行功能測(cè)試,首先在里面進(jìn)行相應(yīng)的設(shè)置,在工程文件夾下面會(huì)新建一個(gè)modelsim的文件夾,然后編寫實(shí)現(xiàn)功能的程序和測(cè)試文件,最后保存編譯執(zhí)行就可以進(jìn)行功能仿真了。仿真結(jié)果:結(jié)果分析與討論:可以看到0時(shí)刻系統(tǒng)復(fù)位狀態(tài),2s時(shí)2號(hào)超前搶答(inputEn為高電平,inputL2為低電平),系統(tǒng)顯示2蜂鳴器并犯規(guī)報(bào)警(Buzzer為低電平),8s時(shí)系統(tǒng)復(fù)位狀態(tài),12s時(shí)4號(hào)選手先搶答成功(inputL4為低電平)顯示4,14s時(shí)3號(hào)選手后搶答,不顯示3,20s時(shí)系統(tǒng)復(fù)位。六、總結(jié)通過本次合成設(shè)計(jì),我又一遍熟悉了VerilogHDL語言進(jìn)行建模,并且通過實(shí)際操作學(xué)會(huì)了怎么使用Modelsim這個(gè)軟件來完成一個(gè)完整的課程設(shè)計(jì)。以及對(duì)基于FPGA的系統(tǒng)開發(fā)流程有了一個(gè)整體認(rèn)識(shí),我越來越認(rèn)識(shí)到一點(diǎn),編程對(duì)項(xiàng)目實(shí)現(xiàn)有著至關(guān)重要的,我們?cè)谟布_發(fā)的過程中更應(yīng)該重視編程,將編程看作是完善開發(fā)的不可缺少的一部分。雖然題目簡單,但這也磨練了我的意志。第一次做的太復(fù)雜了,然后一次次修改,做成最簡單功能的。在一次次的反復(fù)設(shè)計(jì)、論證和測(cè)試中,提高了邏輯分析能力、全面分析問題的能力以及發(fā)現(xiàn)問題、解決問題的能力。通過對(duì)各方面資料的收集,我的知識(shí)面也進(jìn)一步拓寬了。同時(shí),我也發(fā)現(xiàn)了自己的不足,像語言表達(dá)還比較差,不能更清楚地表達(dá)自己的意思,邏輯分析能力和編程能力有待提高,有些預(yù)先的想法都未能實(shí)現(xiàn)。在系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)上也還有很長的路需要走,這是需要時(shí)間去積累的。在今后的學(xué)習(xí)中我還得加以改進(jìn)。七、程序系統(tǒng)主要VerilogHDL源程序:moduleQiangDaQi(clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led2,Buzzer);//一開始聲明有哪些端口inputclk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6;output[0:7]Led2;//Led2顯示選手號(hào)outputBuzzer;//低電平時(shí)蜂鳴器發(fā)出聲音regEnFlat=1'b0;//EnFlat為高電平時(shí)開始搶答reg[0:2]Led2=3'd0;regBuzzer=1'b1;always@(posedgeclk)//時(shí)鐘上升沿beginif(inputEn==1)//如果主持人沒按按鈕就有人搶答beginif(inputL1==0)beginLed2=3'd1;Buzzer=1'b0;endif(inputL2==0)beginLed2=3'd2;Buzzer=1'b0;endif(inputL3==0)beginLed2=3'd3;Buzzer=1'b0;endif(inputL4==0)beginLed2=3'd4;Buzzer=1'b0;endif(inputL5==0)beginLed2=3'd5;Buzzer=1'b0;endif(inputL6==0)beginLed2=3'd6;Buzzer=1'b0;endendif(inputEn==1'b0)//為低電平時(shí)表示主持人按下?lián)尨鸢粹o開始搶答beginEnFlat=1'b1;if(EnFlat==1'b1)beginif(inputL1==1'b0)//一號(hào)選手搶答 begin Led2=3'd1; EnFlat=1'b0;//為低電平禁止其他選手搶答B(yǎng)uzzer=1'b1; endelse //一開始沒加else發(fā)現(xiàn)仿真結(jié)果隨著輸入數(shù)據(jù)變化而變化 if(inputL2==1'b0)//二號(hào)選手搶答 begin Led2=3'd2; EnFlat=1'b0; Buzzer=1'b0; endelseif(inputL3==1'b0)//三號(hào)選手搶答 begin Led2=3'd3; EnFlat=1'b0;//為低電平禁止其他選手搶答B(yǎng)uzzer=1'b1; endelseif(inputL4==1'b0)//四號(hào)選手搶答 begin Led2=3'd4; EnFlat=1'b0;//為低電平禁止其他選手搶答B(yǎng)uzzer=1'b1; endelse if(inputL5==1'b0)//五號(hào)選手搶答 begin Led2=3'd5; EnFlat=1'b0;//為低電平禁止其他選手搶答B(yǎng)uzzer=1'b1; endelse if(inputL6==1'b0)//六號(hào)選手搶答 begin Led2=3'd6; EnFlat=1'b0;//為低電平禁止其他選手搶答B(yǎng)uzzer=1'b1; endendendif(clr)//按下clr鍵以后各組參數(shù)重置,整個(gè)比賽重新開始begin EnFlat=1'b0; Led2=3'd0;//為低電平時(shí),選手前的燈點(diǎn)亮 Buzzer=1'b1;//為高電平不響endendendmodule測(cè)試程序`timescale1s/1smoduleqiangdaqi_test();regclk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6;//輸入口wire[0:7]Led2;//Led2顯示選手號(hào)wireBuzzer;//低電平時(shí)蜂鳴器發(fā)出聲音QiangDaQiu1(clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led2,Buzzer);initialbegin#0clk=1;clr=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;inputL6=1;#2inputL2=0;//二號(hào)選手超前搶答#4clr=1;inputL2=1;//復(fù)位#2clr=0;#4inputEn=0;inputL4=0;//四號(hào)選手先搶答顯示4#2inputL3=0;//三號(hào)選手后搶答不顯示3#4clr=1;inputEn=1;inputL3=1;inputL4=1;#2clr=0;endalways#1clk=~clk;endmodule程序二moduleQiangDaQi(clk,clr,add,stu,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led1,Led2,Led3,Buzzer);//一開始聲明有哪些端口inputclk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,add,stu;//輸入口output[0:5]Led1;//對(duì)應(yīng)參賽選手前的燈output[0:7]Led2,Led3;//Led2顯示選手號(hào)Led3顯示選手分?jǐn)?shù)outputBuzzer;//低電平時(shí)蜂鳴器發(fā)出聲音regEnFlat=1'b1;//EnFlat為高電平時(shí)開始搶答regBuClk=1'b0;//為高電平時(shí)進(jìn)入蜂鳴器處理程序//regadd,stu;//add答題正確加一分stu答題錯(cuò)誤減一分//regclr=0;//重置鍵reg[0:5]Led1=6'b111111;reg[0:2]answer=3'd0;reg[0:3]score=4'd0,score1=4'd0,score2=4'd0;reg[0:3]score3=4'd0,score4=4'd0,score5=4'd0,score6=4'd0;//各選手分?jǐn)?shù)計(jì)算regBuzzer=1;reg[0:4]daojishi=5'd20;//用于產(chǎn)生20s倒計(jì)時(shí)reg[0:7]Led2=8'b11111111,Led3=8'b11111111;always@(posedgeclk)//時(shí)鐘上升沿beginif(inputEn==1)//如果主持人沒按按鈕就有人搶答beginif(inputL1==0)beginLed1=6'b111110;answer=3'd1;BuClk=1'b1;endif(inputL2==0)beginLed2=6'b111101;answer=3'd2;BuClk=1'b1;endif(inputL3==0)beginLed2=6'b111011;answer=3'd3;BuClk=1'b1;endif(inputL4==0)beginLed2=6'b110111;answer=3'd4;BuClk=1'b1;endif(inputL5==0)beginLed2=6'b101111;answer=3'd5;BuClk=1'b1;endif(inputL6==0)beginLed2=6'b011111;answer=3'd6;BuClk=1'b1;endendif(inputEn==1'b0)//為低電平時(shí)表示主持人按下?lián)尨鸢粹o開始搶答 begin Led1=6'b111111;//為低電平時(shí),選手前的燈點(diǎn)亮 BuClk=1'b0; Buzzer=1'b1;//為高電平不響 endif(EnFlat==1'b1)beginbeginif(inputL1==1'b0)//一號(hào)選手搶答 begin EnFlat=1'b0;//為低電平禁止其他選手搶答answer=3'd1;//為高電平時(shí)轉(zhuǎn)到對(duì)應(yīng)選手加減分程序中去 BuClk=1'b1;//轉(zhuǎn)到蜂鳴器程序 end if(inputL2==1'b0)//二號(hào)選手搶答 begin EnFlat=1'b0; answer=3'd2; BuClk=1'b1; endif(inputL3==1'b0)//三號(hào)選手搶答 begin EnFlat=1'b0; answer=3'd3; BuClk=1'b1; endif(inputL4==1'b0)//四號(hào)選手搶答 begin EnFlat=1'b0; answer=3'd4; BuClk=1'b1; end if(inputL5==1'b0)//五號(hào)選手搶答 begin EnFlat=1'b0; answer=3'd5; BuClk=1'b1; end if(inputL6==1'b0)//六號(hào)選手搶答 begin EnFlat=1'b0; answer=3'd6; BuClk=1'b1; endendbeginif(daojishi!=5'd0)//用于1Hz信號(hào)daojishi=daojishi-1;else//倒計(jì)時(shí)結(jié)束搶答器還沒按下則搶答停止且蜂鳴器響begindaojishi=5'd20;EnFlat=1'b0;BuClk=1'b1;endendbeginif(BuClk==1'b1)//當(dāng)蜂鳴器標(biāo)志為1時(shí) Buzzer=1'b0;//蜂鳴器發(fā)聲endbeginif(answer==3'd1)//第一組加減分beginLed1=6'b111110;//點(diǎn)亮該選手前的LED燈Led2=8'hf9;//選手號(hào)數(shù)碼管顯示1if(add)score1=score1+1;//當(dāng)主持人判定選手的回答正確時(shí),按下add鍵進(jìn)行加分操作elseif((stu||inputEn)&&(score1!=0)) score1=score1-1;//當(dāng)主持人判定選手的回答錯(cuò)誤時(shí),按下stu鍵進(jìn)行加分操作 elsescore1=0; score=score1;//把第一組的分?jǐn)?shù)賦值給分?jǐn)?shù)寄存器 end if(answer==3'd2)//第二組加減分beginLed1=6'b111101;Led2=8'ha4;if(add)score2=score2+1;//當(dāng)主持人判定選手的回答正確時(shí),按下add鍵進(jìn)行加分操作elseif((stu||inputEn)&&(score2!=0)) score2=score2-1;//當(dāng)主持人判定選手的回答錯(cuò)誤時(shí),按下stu鍵進(jìn)行加分操作 elsescore2=0;score=score2;//把第一組的分?jǐn)?shù)賦值給分?jǐn)?shù)寄存器 end if(answer==3'd3)//第三組加減分beginLed1=6'b111011;Led2=8'hb0;if(add)score3=score3+1;//當(dāng)主持人判定選手的回答正確時(shí),按下add鍵進(jìn)行加分操作elseif((stu||inputEn)&&(score3!=0)) score3=score3-1;//當(dāng)主持人判定選手的回答錯(cuò)誤時(shí),按下stu鍵進(jìn)行加分操作 elsescore3=0;score=score3;//把第一組的分?jǐn)?shù)賦值給分?jǐn)?shù)寄存器 end if(answer==3'd4)//第四組加減分beginLed1=6'b110111;Led2=8'h99;if(add)score4=score4+1;//當(dāng)主持人判定選手的回答正確時(shí),按下add鍵進(jìn)行加分操作elseif((stu||inputEn)&&(score4!=0)) score4=score4-1;//當(dāng)主持人判定選手的回答錯(cuò)誤時(shí),按下stu鍵進(jìn)行加分操作 elsescore4=0;score=score4;//把第一組的分?jǐn)?shù)賦值給分?jǐn)?shù)寄存器 end if(answer==3'd5)//第五組加減分beginLed1=6'b101111;Led2=8'h92;if(add)score5=score5+1;//當(dāng)主持人判定選手的回答正確時(shí),按下add鍵進(jìn)行加分操作elseif((stu||inputEn)&&(score5!=0)) score5=score5-1;//當(dāng)主持人判定選手的回答錯(cuò)誤時(shí),按下stu鍵進(jìn)行加分操作 elsescore5=0;score=score5;//把第一組的分?jǐn)?shù)賦值給分?jǐn)?shù)寄存器 end if(answer==3'd6)//第六組加減分beginLed1=6'b011111;Led2=8'h82;if(add)score6=score6+1;//當(dāng)主持人判定選手的回答正確時(shí),按下add鍵進(jìn)行加分操作elseif((stu||inputEn)&&(score6!=0)) score6=score6-1;//當(dāng)主持人判定選手的回答錯(cuò)誤時(shí),按下stu鍵進(jìn)行加分操作 elsescore6=0;score=score6;//把第一組的分?jǐn)?shù)賦值給分?jǐn)?shù)寄存器 end begin case(score)//??????? 4'd0:Led3=8'hc0;4'd1:Led3=8'hf9;4'd2:Led3=8'ha4; 4'd3:Led3=8'hb0;4'd4:Led3=8'h99;4'd5:Led3=8'h92; 4'd6:Led3=8'h82;4'd7:Led3=8'hf8;4'd8:Led3=8'h80; 4'd9:Led3=8'h90;default:Led3=8'hff; endcase endendendif(clr)//按下clr鍵以后各組參數(shù)重置,整個(gè)比賽重新開始beginEnFlat=1'b1;daojishi=5'd20;Led1=6'b111111;//重置時(shí)六個(gè)Led全滅Led2=8'b11111111;//熄滅選手號(hào)靜態(tài)數(shù)碼管Led3=8'b11111111;//熄滅分?jǐn)?shù)顯示數(shù)碼管BuClk=1'b0;//蜂鳴器標(biāo)志位重置Buzzer=1'b1;//蜂鳴器控制管腳重置score=0;//score1=4'd0;score2=4'd0;score3=4'd0;//score4=4'd0;score5=4'd0;score6=4'd0;answer=3'd0;endendendmodule測(cè)試程序`timescale1s/1smoduleqiangdaqi_test();regclk,clr,add,stu,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6;//regclr;//重置鍵//regadd,stu;//add答題正確加一分stu答題錯(cuò)誤減一分wire[0:5]Led1;//對(duì)應(yīng)參賽選手前的燈wire[0:7]Led2,Led3;//Led2顯示選手號(hào)Led3顯示選手分?jǐn)?shù)wireBuzzer;//低電平時(shí)蜂鳴器發(fā)出聲音QiangDaQiu1(clk,clr,add,stu,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led1,Led2,Led3,Buzzer);initialbegin#0clk=1;add=0;stu=0;clr=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;inputL6=1;#2inputEn=0;inputL1=1;inputL2=0;inputL3=1;inputL4=1;inputL5=1;inputL6=1;add=1;#2clr=1;add=0;stu=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;inputL6=1;#2clr=0;#2inputEn=0;inputL1=1;inputL2=0;inpu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度私人診所護(hù)士護(hù)理咨詢與聘用合同3篇
- 二零二五年廢石資源采購與資源再生利用合同6篇
- 2025年度硅藻泥原材料采購合同3篇
- 二零二五年度城市環(huán)境綜合整治招投標(biāo)合同3篇
- 2025年度福樂鍋爐產(chǎn)品銷售業(yè)績獎(jiǎng)勵(lì)合同2篇
- 海南衛(wèi)生健康職業(yè)學(xué)院《園林植物病理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度商業(yè)地產(chǎn)改造項(xiàng)目合作開發(fā)協(xié)議書3篇
- 課程設(shè)計(jì)目標(biāo)的基本方式
- 二零二五年度房地產(chǎn)沙盤模型制作與物聯(lián)網(wǎng)技術(shù)應(yīng)用合同3篇
- 消色差物鏡課程設(shè)計(jì)
- 《榜樣9》觀后感心得體會(huì)四
- 《水下拋石基床振動(dòng)夯實(shí)及整平施工規(guī)程》
- 2025年云南大理州工業(yè)投資(集團(tuán))限公司招聘31人管理單位筆試遴選500模擬題附帶答案詳解
- 《住院患者身體約束的護(hù)理》團(tuán)體標(biāo)準(zhǔn)解讀課件
- 酒店一線員工績效考核指標(biāo)體系優(yōu)化研究
- 零星維修工程施工方案(定)
- 10000中國普通人名大全
- 養(yǎng)老金核定表
- 【納棺夫日記】
- 《鐵路貨車運(yùn)用維修規(guī)程》2018年10月
- ISO9001-2015中文版(完整)
評(píng)論
0/150
提交評(píng)論