verilog HDL搶答器(兩個(gè)程序)_第1頁(yè)
verilog HDL搶答器(兩個(gè)程序)_第2頁(yè)
verilog HDL搶答器(兩個(gè)程序)_第3頁(yè)
verilog HDL搶答器(兩個(gè)程序)_第4頁(yè)
verilog HDL搶答器(兩個(gè)程序)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、-作者xxxx-日期xxxxverilog HDL搶答器(兩個(gè)程序)【精品文檔】一、設(shè)計(jì)任務(wù)智力競(jìng)賽搶答器Verilog HDL要求有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)行鎖存,其他選手的輸入無(wú)效。然后就是對(duì)搶答進(jìn)行時(shí)間限制了,根據(jù)設(shè)定的時(shí)間進(jìn)行倒計(jì)時(shí),當(dāng)?shù)褂?jì)時(shí)完成還沒(méi)有人搶答的時(shí)候系統(tǒng)發(fā)出警報(bào)聲音提示時(shí)間已經(jīng)到了。當(dāng)有選手在主持人未按下?lián)尨疰I搶答時(shí)視為超前搶答,系統(tǒng)

2、顯示該選手號(hào),同時(shí)蜂鳴器響,該搶答無(wú)效。還有清除復(fù)位鍵,搶答完成以后按復(fù)位鍵即可清除已有的狀態(tài)。通過(guò)Verilog HDL程序代碼實(shí)現(xiàn)系統(tǒng)的各個(gè)功能。二、設(shè)計(jì)目的與要求目的:理論聯(lián)系實(shí)際,鞏固和運(yùn)用所學(xué)課程,提高分析、解決計(jì)算機(jī)技術(shù)實(shí)際問(wèn)題的獨(dú)立工作能力,培養(yǎng)學(xué)生正確的設(shè)計(jì)思想,嚴(yán)肅認(rèn)真、實(shí)事求是的科學(xué)態(tài)度和勇于探索的創(chuàng)新精神。通過(guò)對(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)試的方法和步驟,通過(guò)Verilog 程序的編寫,進(jìn)一步熟悉Verilog HDL 的語(yǔ)法知識(shí);規(guī)范化訓(xùn)練學(xué)生撰寫技術(shù)研究報(bào)告,提高書面表達(dá)能力。要

3、求: 掌握FPGA設(shè)計(jì)系統(tǒng)的一般方法。 熟練掌握使用modelsim軟件設(shè)計(jì)較復(fù)雜的數(shù)字邏輯電路。 培養(yǎng)學(xué)生獨(dú)立分析問(wèn)題和解決實(shí)際問(wèn)題的能力。三、 課程設(shè)計(jì)的內(nèi)容設(shè)計(jì)一搶答器,要求如下:(1)搶答臺(tái)數(shù)為6;(2)具有搶答開(kāi)始后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í)鈴聲響起,直至該路按鍵松開(kāi),顯示牌顯示該路搶答臺(tái)號(hào)。四、系統(tǒng)設(shè)計(jì)方案根據(jù)系統(tǒng)設(shè)計(jì)要求可知,系統(tǒng)的輸入信號(hào)有:主持人按鈕inputEn,各選手的搶答按鈕分別是inputL1、inputL2、

4、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)主持人沒(méi)按搶答時(shí),有人搶答了則蜂鳴器報(bào)警,并顯示該選手號(hào),當(dāng)主持人按了搶答鍵時(shí)有人搶答了,同時(shí)封鎖搶答信號(hào),其他選手搶答無(wú)效,不顯示該選手號(hào)。五、仿真過(guò)程與仿真結(jié)果仿真過(guò)程:使用ModelSim進(jìn)行功能測(cè)試,首先在里面進(jìn)行相應(yīng)的設(shè)置,在工程文件夾下面會(huì)新建一個(gè)modelsim的文

5、件夾,然后編寫實(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é) 通過(guò)本次合成設(shè)計(jì),我又一遍熟悉了Verilog HDL語(yǔ)言進(jìn)行建模,并且通過(guò)實(shí)際操作學(xué)會(huì)了怎么使用Modelsim這個(gè)軟件來(lái)完成一個(gè)完整的課程設(shè)計(jì)。以及對(duì)基于FPGA的系統(tǒng)開(kāi)發(fā)流程有了一個(gè)整體認(rèn)識(shí),我

6、越來(lái)越認(rèn)識(shí)到一點(diǎn), 編程對(duì)項(xiàng)目實(shí)現(xiàn)有著至關(guān)重要的, 我們?cè)谟布_(kāi)發(fā)的過(guò)程中更應(yīng)該重視編程, 將編程看作是完善開(kāi)發(fā)的不可缺少的一部分。雖然題目簡(jiǎn)單,但這也磨練了我的意志。第一次做的太復(fù)雜了,然后一次次修改,做成最簡(jiǎn)單功能的。在一次次的反復(fù)設(shè)計(jì)、論證和測(cè)試中, 提高了邏輯分析能力、全面分析問(wèn)題的能力以及發(fā)現(xiàn)問(wèn)題、解決問(wèn)題的能力。通過(guò)對(duì)各方面資料的收集, 我的知識(shí)面也進(jìn)一步拓寬了。同時(shí),我也發(fā)現(xiàn)了自己的不足, 像語(yǔ)言表達(dá)還比較差, 不能更清楚地表達(dá)自己的意思, 邏輯分析能力和編程能力有待提高,有些預(yù)先的想法都未能實(shí)現(xiàn)。在系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)上也還有很長(zhǎng)的路需要走,這是需要時(shí)間去積累的。在今后的學(xué)習(xí)中我還得

7、加以改進(jìn)。七、程序系統(tǒng)主要Verilog HDL源程序:module QiangDaQi(clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led2,Buzzer); /一開(kāi)始聲明有哪些端口input clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6;output 0:7Led2;/Led2顯示選手號(hào)output Buzzer;/低電平時(shí)蜂鳴器發(fā)出聲音reg EnFlat=1b0;/EnFlat為高電平時(shí)開(kāi)始搶答reg 0:2Led2=3d

8、0;reg Buzzer=1b1;always (posedge clk)/時(shí)鐘上升沿begin if(inputEn=1)/如果主持人沒(méi)按按鈕就有人搶答 begin if(inputL1=0) begin Led2=3d1;Buzzer=1b0;end if(inputL2=0) begin Led2=3d2;Buzzer=1b0;end if(inputL3=0) begin Led2=3d3;Buzzer=1b0;end if(inputL4=0) begin Led2=3d4;Buzzer=1b0;end if(inputL5=0) begin Led2=3d5;Buzzer=1b0;

9、end if(inputL6=0) begin Led2=3d6;Buzzer=1b0;end end if(inputEn=1b0)/為低電平時(shí)表示主持人按下?lián)尨鸢粹o開(kāi)始搶答 begin EnFlat=1b1; if(EnFlat=1b1) begin if(inputL1=1b0)/一號(hào)選手搶答 begin Led2=3d1; EnFlat=1b0;/為低電平禁止其他選手搶答 Buzzer=1b1; end else/一開(kāi)始沒(méi)加else發(fā)現(xiàn)仿真結(jié)果隨著輸入數(shù)據(jù)變化而變化 if(inputL2=1b0)/二號(hào)選手搶答 begin Led2=3d2; EnFlat=1b0; Buzzer=1b

10、0; end else if(inputL3=1b0)/三號(hào)選手搶答 begin Led2=3d3; EnFlat=1b0;/為低電平禁止其他選手搶答 Buzzer=1b1; endelse if(inputL4=1b0)/四號(hào)選手搶答 begin Led2=3d4; EnFlat=1b0;/為低電平禁止其他選手搶答 Buzzer=1b1; end else if(inputL5=1b0)/五號(hào)選手搶答 begin Led2=3d5; EnFlat=1b0;/為低電平禁止其他選手搶答 Buzzer=1b1; end else if(inputL6=1b0)/六號(hào)選手搶答 begin Led2=

11、3d6; EnFlat=1b0;/為低電平禁止其他選手搶答 Buzzer=1b1; end end end if(clr)/按下clr鍵以后各組參數(shù)重置,整個(gè)比賽重新開(kāi)始 begin EnFlat=1b0; Led2=3d0;/為低電平時(shí),選手前的燈點(diǎn)亮 Buzzer=1b1;/為高電平不響 endendendmodule測(cè)試程序timescale 1s/1smodule qiangdaqi_test(); reg clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6;/輸入口 wire 0:7Led2;/Led2顯示選

12、手號(hào) wire Buzzer;/低電平時(shí)蜂鳴器發(fā)出聲音 QiangDaQi u1(clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led2,Buzzer); initial begin #0 clk=1;clr=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;inputL6=1; #2 inputL2=0;/二號(hào)選手超前搶答 #4 clr=1;inputL2=1;/復(fù)位 #2 clr=0; #4 inputEn=0;inputL4=0;/四

13、號(hào)選手先搶答顯示4 #2 inputL3=0;/三號(hào)選手后搶答不顯示3 #4 clr=1;inputEn=1;inputL3=1;inputL4=1; #2 clr=0; end always #1 clk=clk;endmodule程序二module QiangDaQi(clk,clr,add,stu,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led1,Led2,Led3,Buzzer); /一開(kāi)始聲明有哪些端口input clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,in

14、putL5,inputL6,add,stu;/輸入口output 0:5Led1;/對(duì)應(yīng)參賽選手前的燈output 0:7Led2,Led3;/Led2顯示選手號(hào)Led3顯示選手分?jǐn)?shù)output Buzzer;/低電平時(shí)蜂鳴器發(fā)出聲音reg EnFlat=1b1;/EnFlat為高電平時(shí)開(kāi)始搶答reg BuClk=1b0;/為高電平時(shí)進(jìn)入蜂鳴器處理程序/reg add,stu;/add答題正確加一分stu答題錯(cuò)誤減一分/reg clr=0;/重置鍵reg 0:5Led1=6b111111;reg 0:2 answer=3d0;reg0:3 score=4d0,score1=4d0,score2

15、=4d0;reg0:3 score3=4d0,score4=4d0,score5=4d0,score6=4d0;/各選手分?jǐn)?shù)計(jì)算reg Buzzer=1;reg 0:4 daojishi=5d20;/用于產(chǎn)生20s倒計(jì)時(shí)reg 0:7Led2=8b11111111,Led3=8b11111111;always (posedge clk)/時(shí)鐘上升沿begin if(inputEn=1)/如果主持人沒(méi)按按鈕就有人搶答 begin if(inputL1=0) begin Led1=6b111110;answer=3d1;BuClk=1b1;end if(inputL2=0) begin Led2=

16、6b111101;answer=3d2;BuClk=1b1;end if(inputL3=0) begin Led2=6b111011;answer=3d3;BuClk=1b1;end if(inputL4=0) begin Led2=6b110111;answer=3d4;BuClk=1b1;end if(inputL5=0) begin Led2=6b101111;answer=3d5;BuClk=1b1;end if(inputL6=0) begin Led2=6b011111;answer=3d6;BuClk=1b1;end end if(inputEn=1b0)/為低電平時(shí)表示主持人

17、按下?lián)尨鸢粹o開(kāi)始搶答beginLed1=6b111111;/為低電平時(shí),選手前的燈點(diǎn)亮BuClk=1b0;Buzzer=1b1;/為高電平不響end if(EnFlat=1b1) begin begin if(inputL1=1b0)/一號(hào)選手搶答 begin EnFlat=1b0;/為低電平禁止其他選手搶答 answer=3d1;/為高電平時(shí)轉(zhuǎn)到對(duì)應(yīng)選手加減分程序中去 BuClk=1b1;/轉(zhuǎn)到蜂鳴器程序 end if(inputL2=1b0)/二號(hào)選手搶答 beginEnFlat=1b0;answer=3d2;BuClk=1b1; end if(inputL3=1b0)/三號(hào)選手搶答 be

18、ginEnFlat=1b0;answer=3d3;BuClk=1b1; end if(inputL4=1b0)/四號(hào)選手搶答 beginEnFlat=1b0;answer=3d4;BuClk=1b1; end if(inputL5=1b0)/五號(hào)選手搶答 beginEnFlat=1b0;answer=3d5;BuClk=1b1; end if(inputL6=1b0)/六號(hào)選手搶答 beginEnFlat=1b0;answer=3d6;BuClk=1b1; end end begin if(daojishi!=5d0)/用于1Hz信號(hào) daojishi=daojishi-1; else/倒計(jì)時(shí)

19、結(jié)束搶答器還沒(méi)按下則搶答停止且蜂鳴器響 begin daojishi=5d20; EnFlat=1b0; BuClk=1b1; end end begin if(BuClk=1b1)/當(dāng)蜂鳴器標(biāo)志為1時(shí) Buzzer=1b0;/蜂鳴器發(fā)聲 end begin if(answer =3d1)/第一組加減分 begin Led1=6b111110;/點(diǎn)亮該選手前的LED燈 Led2=8hf9;/選手號(hào)數(shù)碼管顯示1 if(add) score1=score1+1;/當(dāng)主持人判定選手的回答正確時(shí),按下add鍵進(jìn)行加分操作 else if(stu|inputEn)&(score1!=0) score1=

20、score1-1;/當(dāng)主持人判定選手的回答錯(cuò)誤時(shí),按下stu鍵進(jìn)行加分操作 else score1=0; score=score1;/把第一組的分?jǐn)?shù)賦值給分?jǐn)?shù)寄存器 end if(answer =3d2)/第二組加減分 begin Led1=6b111101;Led2=8ha4; if(add) score2=score2+1;/當(dāng)主持人判定選手的回答正確時(shí),按下add鍵進(jìn)行加分操作 else if(stu|inputEn)&(score2!=0) score2=score2-1;/當(dāng)主持人判定選手的回答錯(cuò)誤時(shí),按下stu鍵進(jìn)行加分操作 else score2=0; score=score2;

21、/把第一組的分?jǐn)?shù)賦值給分?jǐn)?shù)寄存器 end if(answer =3d3)/第三組加減分 begin Led1=6b111011;Led2=8hb0; if(add) score3=score3+1;/當(dāng)主持人判定選手的回答正確時(shí),按下add鍵進(jìn)行加分操作 else if(stu|inputEn)&(score3!=0) score3=score3-1;/當(dāng)主持人判定選手的回答錯(cuò)誤時(shí),按下stu鍵進(jìn)行加分操作 else score3=0; score=score3;/把第一組的分?jǐn)?shù)賦值給分?jǐn)?shù)寄存器 end if(answer =3d4)/第四組加減分 begin Led1=6b110111;Le

22、d2=8h99; if(add) score4=score4+1;/當(dāng)主持人判定選手的回答正確時(shí),按下add鍵進(jìn)行加分操作 else if(stu|inputEn)&(score4!=0) score4=score4-1;/當(dāng)主持人判定選手的回答錯(cuò)誤時(shí),按下stu鍵進(jìn)行加分操作 else score4=0; score=score4;/把第一組的分?jǐn)?shù)賦值給分?jǐn)?shù)寄存器 end if(answer =3d5)/第五組加減分 begin Led1=6b101111;Led2=8h92; if(add) score5=score5+1;/當(dāng)主持人判定選手的回答正確時(shí),按下add鍵進(jìn)行加分操作 else

23、 if(stu|inputEn)&(score5!=0) score5=score5-1;/當(dāng)主持人判定選手的回答錯(cuò)誤時(shí),按下stu鍵進(jìn)行加分操作 else score5=0; score=score5;/把第一組的分?jǐn)?shù)賦值給分?jǐn)?shù)寄存器 end if(answer =3d6)/第六組加減分 begin Led1=6b011111;Led2=8h82; if(add) score6=score6+1;/當(dāng)主持人判定選手的回答正確時(shí),按下add鍵進(jìn)行加分操作 else if(stu|inputEn)&(score6!=0) score6=score6-1;/當(dāng)主持人判定選手的回答錯(cuò)誤時(shí),按下stu

24、鍵進(jìn)行加分操作 else score6=0; score=score6;/把第一組的分?jǐn)?shù)賦值給分?jǐn)?shù)寄存器 end begin case(score)/? 4d0:Led3=8hc0;4d1:Led3=8hf9;4d2:Led3=8ha4; 4d3:Led3=8hb0;4d4:Led3=8h99;4d5:Led3=8h92; 4d6:Led3=8h82;4d7:Led3=8hf8;4d8:Led3=8h80; 4d9:Led3=8h90;default:Led3=8hff; endcase end end end if(clr)/按下clr鍵以后各組參數(shù)重置,整個(gè)比賽重新開(kāi)始 begin EnF

25、lat=1b1; daojishi=5d20; Led1=6b111111;/重置時(shí)六個(gè)Led全滅 Led2=8b11111111;/熄滅選手號(hào)靜態(tài)數(shù)碼管 Led3=8b11111111;/熄滅分?jǐn)?shù)顯示數(shù)碼管 BuClk=1b0;/蜂鳴器標(biāo)志位重置 Buzzer=1b1;/蜂鳴器控制管腳重置 score=0; /score1=4d0;score2=4d0;score3=4d0; /score4=4d0;score5=4d0;score6=4d0; answer=3d0; endendendmodule測(cè)試程序timescale 1s/1smodule qiangdaqi_test(); reg

26、 clk,clr,add,stu,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6; /reg clr;/重置鍵 /reg add,stu;/add答題正確加一分stu答題錯(cuò)誤減一分 wire 0:5Led1;/對(duì)應(yīng)參賽選手前的燈 wire 0:7Led2,Led3;/Led2顯示選手號(hào)Led3顯示選手分?jǐn)?shù) wire Buzzer;/低電平時(shí)蜂鳴器發(fā)出聲音 QiangDaQi u1(clk,clr,add,stu,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led1

27、,Led2,Led3,Buzzer); initial begin #0 clk=1;add=0;stu=0;clr=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;inputL6=1; #2 inputEn=0;inputL1=1;inputL2=0;inputL3=1;inputL4=1;inputL5=1;inputL6=1;add=1; #2 clr=1;add=0;stu=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;inputL6=1; #2 clr=0; #2 inputEn=0;inputL1=1;inputL2=0;inputL3=1;inputL4=1;inputL5=1;inputL6=1;add=1; #1 inputL3=0;add=1; #2 clr=1;add=0;s

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論