數字競賽搶答器課程設計Verilog語言實現_第1頁
數字競賽搶答器課程設計Verilog語言實現_第2頁
數字競賽搶答器課程設計Verilog語言實現_第3頁
數字競賽搶答器課程設計Verilog語言實現_第4頁
數字競賽搶答器課程設計Verilog語言實現_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 可編程器件與應用課程設計報告姓 名: xxx 學 號: xxxxxxxxxx 專業班級: 信息xxx 題 目: 數字式競賽搶答器 指導老師: 一、緒論背景:隨著電子技術的發展,可編程邏輯器件(pld)的出現,使得電子系統的設計者利用eda(電子設計自動化)軟件,就可以獨立設計自己的專用集成電路(asic)器件。可編程邏輯器件是一種半導體集成器件的半成品。在可編程邏輯器件的芯片中按一定方式(陣列形式或單元陣列形式)制作了大量的門、觸發器等基本邏輯器件,對這些基本器件適當地連接,就可以完成某個電路或系統的功能。 數字式競賽搶答器控制系統是工廠、學校和電視臺等單位舉辦各種智力競賽等娛樂活動中經常使

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

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

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

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

6、準時鐘輸入信號;k1,k2,k3,k4:搶答按鈕輸入信號;seg:數碼管段輸出引腳;sl:數碼管位輸出引腳;add_min:加減分按鍵;key_state:加減分模式選擇按鍵;reset:初始5分設置鍵信號;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);/調用搶答信號鎖存顯示電路count q2(clk,o1,o2,o3,o4,add_min,key_state,reset,s1,s2,s3,s4);/調用計分電路

8、dled q3(seg,sl,s1,s2,s3,s4,clk);/調用數碼管顯示電路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,o

9、ut3,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; /裁判員發開始搶答信號,初始指示燈滅,蜂鳴器禁聲if(!judge) begin out1,out2,out3,out4,out5,block=6b111110;count=0; flag=0; endelse begin if(!k1)/第一組別按鍵是否按下begin if(!block)beg

10、in 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; count=1; enden

11、dend /*答題計時開始,并判斷是否答題超時*/if(count!=0)begin if(count=32hc11e7a00) /如果答題時間到了1分鐘,亮犯規燈begin count=0; out5=0; flag=1b1; endelse begin count=count+1; endendend /蜂鳴器發聲always(counter7)if(flag=1) buzzout=!(counter11&counter22&counter27);else buzzout=1b0;endmodule/*去鍵盤抖動信號定義: clkin:基準時鐘輸入信號;clkout:周期為20ms的信號輸

12、出;*/modulef_1m(clkin,clkout);input clkin; output clkout;regclkout; reg18:0count;always(negedgeclkin)if(count=19d500000)begin count=19d000000; clkout=clkout; endelse count9) count1=0;else count1=count1+1; endif(!c2)/第二組別加分,最高分為10分,最低分為0分begin if(count29) count2=0;else count2=count2+1; endif(!c3)/第三組別

13、加分,最高分為10分,最低分為0分begin if(count39) count3=0;else count3=count3+1; endif(!c4)/第四組別加分,最高分為10分,最低分為0分begin if(count49) count4=0;else count4=count4+1; end end endendmodule/*數碼管顯示電路信號定義:clk:時鐘信號;seg:數碼管段輸出引腳;sl:數碼管位輸出引腳;score1:第一組得分輸入;score2:第二組得分輸入;score3:第三組得分輸入;score4:第四組得分輸入;*/module dled (seg,sl,sco

14、re1,score2,score3,score4,clk,vg);output7:0 seg; output3:0 sl;output reg 3:0 vg=0010;input clk; input3:0 score1,score2,score3,score4;reg7:0 seg_reg;/定義數碼管段輸出寄存器reg3:0 sl_reg;/定義數碼管位輸出寄存器reg3:0 disp_dat;/定義顯示數據寄存器reg16:0 count;/定義計數器寄存器always(posedge clk)/定義clock信號上升沿觸發begin count=count+1;/計數器值加1endal

15、ways(count14:13)/定義顯示數據觸發事件begin case(count14:13)/選擇掃描顯示數據2h0:disp_dat=score1;/在個位數碼管上顯示第一組別的分數值2h1:disp_dat=score2;/在十位數碼管上顯示第二組別的分數值2h2:disp_dat=score3;/在百位數碼管上顯示第三組別的分數值2h3:disp_dat=score4;/在千位數碼管上顯示第四組別的分數值endcasecase(count14:13)/選擇數碼管顯示位2h0:sl_reg=4b1110;/選擇個位數碼管2h1:sl_reg =4b1101;/選擇十位數碼管2h2:s

16、l_reg =4b1011;/選擇百位數碼管2h3:sl_reg =4b0111;/選擇千位數碼管endcase endalways(disp_dat)/顯示數據的解碼過程begincase(disp_dat)4h0:seg_reg=8h3f;/顯示數據04h1:seg_reg=8h06;/顯示數據14h2:seg_reg=8h5b;/顯示數據24h3:seg_reg=8h4f;/顯示數據34h4:seg_reg=8h66;/顯示數據44h5:seg_reg=8h6d;/顯示數據54h6:seg_reg=8h7d;/顯示數據64h7:seg_reg=8h07;/顯示數據74h8:seg_reg

17、=8h7f;/顯示數據84h9:seg_reg=8h6f;/顯示數據94ha:seg_reg=8h77;/顯示數據a4hb:seg_reg=8h7c;/顯示數據b4hc:seg_reg=8h39;/顯示數據c4hd:seg_reg=8h51;/顯示數據d4he:seg_reg=8h79;/顯示數據e4hf:seg_reg=8h71;/顯示數據fendcase endassign seg=seg_reg;/輸出數碼管解碼結果assign sl=sl_reg;/輸出數碼管選擇endmodule管腳分配圖如下:四、總結1、打開quartus ii軟件,對該工程文件進行編譯處理,若在編譯過程中發現錯誤,找出并更正錯誤直至成功為止。2、將ccit cpld/fgpa jtag下載電纜的兩端分別接到pc機和ccit cpld/fgpa實驗儀上,再打開工作電源,執行下載命令把程序下載到ccit cpld/fgpa實驗儀的epm1270t144c5n器件中,通過k1k4搶答按鍵按下后,由裁判員根答題情況,通過控制add_min和key_state這兩個鍵實現加減分操作,這樣大家就可以看到數碼管上的分數和led四盞小燈的變化。五、心得體會通過本次課程設計,我學會了綜合應用鍵盤、led小燈、蜂鳴器、led數碼管等外圍接口進行產品設計,掌握了鍵盤、led

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論