基于FPGA的四路搶答器的VerilogHDL代碼.doc_第1頁
基于FPGA的四路搶答器的VerilogHDL代碼.doc_第2頁
基于FPGA的四路搶答器的VerilogHDL代碼.doc_第3頁
基于FPGA的四路搶答器的VerilogHDL代碼.doc_第4頁
基于FPGA的四路搶答器的VerilogHDL代碼.doc_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

module qiangda4(clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4,Led1,Led2,Led3,Buzzer); / 開始聲明各個端口 /輸入口input clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4;/輸出口output 0:7Led1; /倒計時時使用的LED控制端output 0:7Led2; /數碼管控制端output 0:7Led3; /分數顯示數碼管控制端output Buzzer; /蜂鳴器/各個寄存器變量聲明reg0:7 Led1;reg0:7 Led2;reg0:7 Led3;regcnt=32b0;reg Buzzer;reg score=4hf;/分數顯示寄存器/配置寄存器,EnFlat是表明開始搶答的標志位reg EnFlat=1b0;/BuClk是蜂鳴器的標志位reg BuClk=1b0;/BuL是做蜂鳴器的延時用reg 0:7BuL=8d0;/搶答選手標志位reg answer=3d0;/各組分數標志位regscore1=4d5;regscore2=4d5;regscore3=4d5;regscore4=4d5;/-初始化模塊-always (posedge clk)/捕捉時鐘begin/初始化各按鍵并開始搶答begin if(inputEn=1b0) begin/初始化各個標志位和參數EnFlat=1b1;/倒計時開始時8個Led燈全亮Led1=8b11111111;/組號顯示靜態數碼管(數碼管為共陽極)的控制端,有8位Led2=8b11111111;/分數顯示數碼管控制端Led3=8b11111111;/蜂鳴器標志位BuClk=1b0;/蜂鳴器的控制管腳,低電平為發聲音Buzzer=1b1; endend/-搶答模塊-begin if(EnFlat=1b1) begin/如果按鍵1按下if(inputL1=1b0)begin/禁止其他選手搶答EnFlat=1b0;/選手標志位改變,用于加減分數模塊answer=3d1;/靜態數碼管顯示序號1,及顯示選手對應的組號Led2=8hf9;/指示蜂鳴器發聲BuClk=1b1;end /如果按鍵2按下else if(inputL2=1b0)begin/禁止其他選手搶答EnFlat=1b0;answer=3d2;Led2=8ha4;BuClk=1b1;end /如果按鍵3按下else if(inputL3=1b0)begin/禁止其他選手搶答EnFlat=1b0;answer=3d3;Led2=8hb0;BuClk=1b1;end /如果按鍵4按下else if(inputL4=1b0)begin/禁止其他選手搶答EnFlat=1b0;answer=3d4;Led2=8h99;BuClk=1b1;end endend/-加減分數模塊-/第一組加減分if(answer =3d1)beginif(add)score1=score1+1;/當主持人判定選手的回答正確時,按下add鍵進行加分操作elseif(stu)score1=score1-1;/當主持人判定選手的回答錯誤時,按下stu鍵進行減分操作score=score1;/把第一組的分數賦值給分數寄存器end/第二組加減分if(answer =3d2)beginif(add)score2=score2+1;/當主持人判定選手的回答正確時,按下add鍵進行加分操作elseif(stu)score2=score2-1;/當主持人判定選手的回答錯誤時,按下stu鍵進行減分操作score=score2;end/第三組加減分if(answer =3d3)beginif(add)score3=score3+1;/當主持人判定選手的回答正確時,按下add鍵進行加分操作elseif(stu)score3=score3-1;/當主持人判定選手的回答錯誤時,按下stu鍵進行減分操作score=score3;end/第四組加減分if(answer =3d4)beginif(add)score4=score4+1;/當主持人判定選手的回答正確時,按下add鍵進行加分操作elseif(stu)score4=score4-1;/當主持人判定選手的回答錯誤時,按下stu鍵進行減分操作score=score4;end/-倒計時模塊-beginif(EnFlat=1b1)beginif(cnt!=32d48000000)/計時實現1HZ分頻cnt=cnt+32d1;elsebegincnt=32d0;Led1=8b111111111b1;/Led1左移一個單位,實現一秒的倒計時endendif(Led1=8b0)/倒計時結束還沒有按鍵按下,則搶答停止且蜂鳴器響EnFlat=1b0;BuClk=1b1;end/-蜂鳴器模塊-/當蜂鳴器標志位置1時/進入此蜂鳴器處理程序begin if(BuClk=1b1) begin/蜂鳴器發聲Buzzer=1b0;/延時變量加1BuL = BuL + 8d1;/當到達延時的時間時關掉蜂鳴器if(BuL=8d255)begin/延時變量復位BuL=8d0;/蜂鳴器標志位復位BuClk=1b0;/蜂鳴器停掉Buzzer=1b1;end endend/-重置模塊-/按下clr鍵以后各組參數重置,整個比賽重新開始if(clr)begin/重置各個標志位和參數EnFlat=1b1;/重置時8個Led燈全亮Led1=8b11111111;/選手號靜態數碼管的控制端,有8位Led2=8b11111111;/選手分數顯示數碼管重置Led3=8b11111111;/蜂鳴器標志位重置BuClk=1b0;/蜂鳴器的控制管腳重置,低電平為發聲音Buzzer=1b1;/各組分數重置score1=4d5;score2=4d5;score3=4d5;score4=4d5;/分數顯示寄存器重置answer=8hff;end/-數碼顯示模塊-begincase(score)4h0: Led3 = 8hc0;/顯示04h1: Led3 = 8hf9;/顯示14h2: Led3 = 8ha4;/顯示24h3: Led3 = 8hb0;/顯示34h4: Led3 = 8h99;/顯示44h5: Led3 = 8h92;/顯示54h6: Led3

溫馨提示

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

評論

0/150

提交評論