數(shù)字競賽搶答器課程設(shè)計Verilog語言實現(xiàn)_第1頁
數(shù)字競賽搶答器課程設(shè)計Verilog語言實現(xiàn)_第2頁
數(shù)字競賽搶答器課程設(shè)計Verilog語言實現(xiàn)_第3頁
數(shù)字競賽搶答器課程設(shè)計Verilog語言實現(xiàn)_第4頁
數(shù)字競賽搶答器課程設(shè)計Verilog語言實現(xiàn)_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 可編程器件與應(yīng)用課程設(shè)計報告姓 名: XXX 學 號: XXXXXXXXXX 專業(yè)班級: 信息XXX 題 目: 數(shù)字式競賽搶答器 指導老師: 5一、緒論背景:隨著電子技術(shù)的發(fā)展,可編程邏輯器件(PLD)的出現(xiàn),使得電子系統(tǒng)的設(shè)計者利用EDA(電子設(shè)計自動化)軟件,就可以獨立設(shè)計自己的專用集成電路(ASIC)器件??删幊踢壿嬈骷且环N半導體集成器件的半成品。在可編程邏輯器件的芯片中按一定方式(陣列形式或單元陣列形式)制作了大量的門、觸發(fā)器等基本邏輯器件,對這些基本器件適當?shù)剡B接,就可以完成某個電路或系統(tǒng)的功能。 數(shù)字式競賽搶答器控制系統(tǒng)是工廠、學校和電視臺等單位舉辦各種智力競賽等娛樂活動中經(jīng)常

2、使用的重要基礎(chǔ)設(shè)備之一。目前設(shè)計搶答器的方法很多,例如用傳統(tǒng)的PCB板設(shè)計、用PIC設(shè)計或者用單片機設(shè)計。而用Verilog可以更加快速、靈活地設(shè)計出符合各種要求的搶答器,優(yōu)于其他設(shè)計方法,使設(shè)計過程達到高度自動化。本文介紹的4路數(shù)字式競賽搶答器基于Verilog語言、以EDA技術(shù)作為開發(fā)手段、采用CPLD(復雜的可編程邏輯器件)作為控制核心設(shè)計而成。與傳統(tǒng)設(shè)計相比較,不僅簡化了接口和控制,也提高了系統(tǒng)的整體性能和工作可靠性,具有電路簡單、成本低廉、操作方便、靈敏可靠等優(yōu)點。意義: 數(shù)字式競賽搶答器作為一種電子產(chǎn)品,早已廣泛應(yīng)用于各種智力和知識競賽場合,但目前所使用的搶答器存在分立元件使用較多

3、,造成每路的成本偏高,而現(xiàn)代電子技術(shù)的發(fā)展要求電子電路朝數(shù)字化、集成化方向發(fā)展,因此設(shè)計出數(shù)字化全集成電路的多路搶答器是現(xiàn)代電子技術(shù)發(fā)展的要求。二、實現(xiàn)方案設(shè)計要求:1、設(shè)計一個可容納4組參賽的數(shù)字式搶答器,每組設(shè)一個按鈕,供搶答使用。2、搶答器具有第一信號鑒別和鎖存功能,使除第一搶答者外的按鈕不起作用。3、設(shè)置一個主持人“復位”按鈕。4、主持人復位后,開始搶答,第一信號鑒別鎖存電路得到信號后,有指示燈顯示搶答組別,揚聲器發(fā)出23秒的音響。5、設(shè)置一個計分電路,每組開始預(yù)置5分,由主持人記分,答對一次加1分,答錯一次減1分。6、設(shè)置犯規(guī)電路,對超時答題(例如1分鐘)的組別鳴笛示警,并由組別顯示

4、電路顯示出犯規(guī)組別,該輪該選手退出,由裁判員重新發(fā)令,其他人再搶答。設(shè)計方案:此設(shè)計問題可分為第一信號鑒別、鎖存模塊,答題計時電路模塊,計分電路模塊和掃描顯示模塊四部分。第一信號鑒別鎖存模塊的關(guān)鍵是準確判斷出第一搶答者并將其鎖存,在得到第一信號后,將輸入端封鎖,使其他組的搶答信號無效,可以用觸發(fā)器或鎖存器實現(xiàn)。設(shè)置搶答按鈕K1、K2、K3、K4,主持人復位信號judge,蜂鳴器驅(qū)動信號buzzout。judge=0時,第一信號鑒別、鎖存電路、答題計時電路復位,在此狀態(tài)下,若有搶答按鈕按下,鳴笛示警并顯示犯規(guī)組別;judge=1時,開始搶答,由第一信號鑒別鎖存電路形成第一搶答信號,進行組別顯示,

5、控制蜂鳴器發(fā)出聲響,并啟動答題計時電路,若計時時間到,主持人復位信號還沒有按下,則由蜂鳴器發(fā)出犯規(guī)示警聲。計分電路是一個相對獨立的模塊,采用十進制加/減計數(shù)器、數(shù)碼管數(shù)碼掃描顯示,設(shè)置復位信號Reset、加減分信號add_min,加減分狀態(tài)鍵key_state,Reset=0時所有得分回到起始分(5分),且加、減分信號無效;Reset=1時,由第一信號鑒別、鎖存電路的輸出信號選擇進行加減分的組別,當key_state=1時,按一次add_min,第一搶答組加1分;當key_state=0時,每按一次add_min,則減1分。以下為每個模塊的設(shè)計過程。三、程序及仿真/*頂層模塊信號定義:clk:

6、基準時鐘輸入信號;k1,k2,k3,k4:搶答按鈕輸入信號;seg:數(shù)碼管段輸出引腳;sl:數(shù)碼管位輸出引腳;add_min:加減分按鍵;key_state:加減分模式選擇按鍵;reset:初始5分設(shè)置鍵信號;judge:裁判員搶答開始鍵信號;o5:超時信號;o1、o2、o3、o4:搶答組別LED顯示輸出信號;buzz:示警輸出信號;*/moduleqiangdaqi(clk,k1,k2,k3,k4,seg,sl,add_min,key_state,reset,judge,o1,o2,o3,o4,o5,buzz,vg,sel);input clk,k1,k2,k3,k4,add_min,key

7、_state,reset,judge;output7:0 seg; output3:0 sl; output reg sel; output o1,o2,o3,o4,o5,vg; output buzz; reg 3:0 vg=0010; wire o1,o2,o3,o4; wire3:0 s1,s2,s3,s4; /* 模塊引用 */sel Q1(clk,k1,k2,k3,k4,judge,o1,o2,o3,o4,o5,buzz);/調(diào)用搶答信號鎖存顯示電路count Q2(clk,o1,o2,o3,o4,add_min,key_state,reset,s1,s2,s3,s4);/調(diào)用計分電

8、路dled Q3(seg,sl,s1,s2,s3,s4,clk);/調(diào)用數(shù)碼管顯示電路endmodule/*信號鎖存電路信號定義:CLK:時鐘信號;K1、K2、K3、K4、K5、K6:搶答按鈕信號;out1、out2、out3、out4、out5、out6:搶答LED顯示信號;judge:裁判員搶答開始信號;buzzout:示警輸出信號;flag:答題是否超時的標志;*/module sel(clk,k1,k2,k3,k4,judge,out1,out2,out3,out4,out5,buzzout);input clk,k1,k2,k3,k4,judge; output out1,out2,

9、out3,out4,out5,buzzout;reg out1,out2,out3,out4,out5,block,buzzout; reg32:0 count; reg27:0 counter; reg flag;always(posedge clk )begincounter=counter+1; /裁判員發(fā)開始搶答信號,初始指示燈滅,蜂鳴器禁聲if(!judge) begin out1,out2,out3,out4,out5,block<=6'b111110;count=0; flag=0; endelse begin if(!k1)/第一組別按鍵是否按下begin if(

10、!block)begin out1=0;/點亮第一組別指示燈block=1;/封鎖別組搶答信號count=1;/第一組已按下按鈕,可啟動答題計時器end endelse if(!k2)/第二組別按鍵是否按下begin if(!block)begin out2=0; block=1;count=1; endendelse if(!k3)/第三組別按鍵是否按下begin if(!block)begin out3=0; block=1; count=1; endendelse if(!k4) /第四組別按鍵是否按下begin if(!block)begin out4=0; block=1; coun

11、t=1; endendend /*答題計時開始,并判斷是否答題超時*/if(count!=0)begin if(count=32'hc11e7a00) /如果答題時間到了1分鐘,亮犯規(guī)燈begin count=0; out5<=0; flag=1'b1; endelse begin count=count+1; endendend /蜂鳴器發(fā)聲always(counter7)if(flag=1) buzzout=!(counter11&counter22&counter27);else buzzout=1'b0;endmodule/*去鍵盤抖動信號

12、定義: clkin:基準時鐘輸入信號;clkout:周期為20ms的信號輸出;*/modulef_1M(clkin,clkout);Input clkin; output clkout;regclkout; reg18:0count;always(negedgeclkin)if(count=19'd500000)begin count<=19'd000000; clkout<=clkout; endelse count<=count+1'b1;endmodule/*計分電路信號定義:clk:時鐘信號;c1,c2,c3,c4:搶答組別輸入信號;add_m

13、in:加減分按鈕;key_state:加減分標志按鈕;reset:初始5分設(shè)置信號;count1:第一組得分輸出;count2:第二組得分輸出;count3:第三組得分輸出;count4:第四組得分輸出;*/module count(clk,c1,c2,c3,c4,add_min,key_state,reset,count1,count2,count3,count4);input clk,c1,c2,c3,c4,add_min,key_state,reset; output3:0 count1,count2,count3,count4;reg3:0 count1,count2,count3,c

14、ount4; wire clk0; regkeyout;f_1Mf_1Ma(clk,clk0); /引用獲得20毫秒的子模塊always(negedge clk0)keyout=add_min;always(posedge keyout)/根據(jù)相應(yīng)組別加減分begin if(!reset) /初始化各組的起始分數(shù)count1,count2,count3,count4=16'h5555;if(!key_state) / key_state為低電平,選組別減分模式begin if(!c1)/第一組別減1分,最高分為10分,最低分為0分begin if(count1!=4'b0000

15、) count1=count1-1; endif(!c2)/第二組別減1分,最高分為10分,最低分為0分begin if(count2!=4'b0000) count2=count2-1; endif(!c3)/第三組別減1分,最高分為10分,最低分為0分begin if(count3!=4'b0000) count3=count3-1; endif(!c4)/第四組別減1分,最高分為10分,最低分為0分begin if(count4!=4'b0000) count4=count4-1; endend else/ key_state為高電平,選組別加分模式begin i

16、f(!c1)/第一組別加分,最高分為10分,最低分為0分begin if(count1>9) count1=0;else count1=count1+1; endif(!c2)/第二組別加分,最高分為10分,最低分為0分begin if(count2>9) count2=0;else count2=count2+1; endif(!c3)/第三組別加分,最高分為10分,最低分為0分begin if(count3>9) count3=0;else count3=count3+1; endif(!c4)/第四組別加分,最高分為10分,最低分為0分begin if(count4&g

17、t;9) count4=0;else count4=count4+1; end end endendmodule/*數(shù)碼管顯示電路信號定義:clk:時鐘信號;seg:數(shù)碼管段輸出引腳;sl:數(shù)碼管位輸出引腳;score1:第一組得分輸入;score2:第二組得分輸入;score3:第三組得分輸入;score4:第四組得分輸入;*/module dled (seg,sl,score1,score2,score3,score4,clk,vg);output7:0 seg; output3:0 sl;output reg 3:0 vg=0010;input clk; input3:0 score1,

18、score2,score3,score4;reg7:0 seg_reg;/定義數(shù)碼管段輸出寄存器reg3:0 sl_reg;/定義數(shù)碼管位輸出寄存器reg3:0 disp_dat;/定義顯示數(shù)據(jù)寄存器reg16:0 count;/定義計數(shù)器寄存器always(posedge clk)/定義clock信號上升沿觸發(fā)begin count=count+1;/計數(shù)器值加1endalways(count14:13)/定義顯示數(shù)據(jù)觸發(fā)事件begin case(count14:13)/選擇掃描顯示數(shù)據(jù)2'h0:disp_dat=score1;/在個位數(shù)碼管上顯示第一組別的分數(shù)值2'h1:d

19、isp_dat=score2;/在十位數(shù)碼管上顯示第二組別的分數(shù)值2'h2:disp_dat=score3;/在百位數(shù)碼管上顯示第三組別的分數(shù)值2'h3:disp_dat=score4;/在千位數(shù)碼管上顯示第四組別的分數(shù)值endcasecase(count14:13)/選擇數(shù)碼管顯示位2'h0:sl_reg=4'b1110;/選擇個位數(shù)碼管2'h1:sl_reg =4'b1101;/選擇十位數(shù)碼管2'h2:sl_reg =4'b1011;/選擇百位數(shù)碼管2'h3:sl_reg =4'b0111;/選擇千位數(shù)碼管en

20、dcase endalways(disp_dat)/顯示數(shù)據(jù)的解碼過程begincase(disp_dat)4'h0:seg_reg=8'h3f;/顯示數(shù)據(jù)04'h1:seg_reg=8'h06;/顯示數(shù)據(jù)14'h2:seg_reg=8'h5b;/顯示數(shù)據(jù)24'h3:seg_reg=8'h4f;/顯示數(shù)據(jù)34'h4:seg_reg=8'h66;/顯示數(shù)據(jù)44'h5:seg_reg=8'h6d;/顯示數(shù)據(jù)54'h6:seg_reg=8'h7d;/顯示數(shù)據(jù)64'h7:seg_reg=8'h07;/顯示數(shù)據(jù)74'h8:seg_reg=8'h7f;/顯示數(shù)據(jù)84'h9:seg_reg=8'h6f;/顯示數(shù)據(jù)94'ha:seg_reg=8'h77;/顯示數(shù)據(jù)a4'hb:seg_reg=8'h7c;/顯示數(shù)據(jù)b4'hc:seg_reg=8'h39;/顯示數(shù)據(jù)c4'hd:seg_reg=8'h51;/顯示數(shù)據(jù)d4'he:seg_reg=8'h79;/顯示數(shù)據(jù)e4'hf:seg_reg=8

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論