版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、-作者xxxx-日期xxxxverilog HDL搶答器(兩個程序)【精品文檔】一、設計任務智力競賽搶答器Verilog HDL要求有6位參賽者進行搶答,有六個搶答信號進行搶答。當有搶答選手按下搶答鍵后系統(tǒng)能夠快速準確的判斷是那一組選手按下了搶答信號,由于系統(tǒng)比較小,速度比較快一般不會有同時按下的可能,所以只有六種狀態(tài),然后系統(tǒng)能夠根據這六種狀態(tài)進行適時的顯示和提示。當有選手按下以后就對搶答信號進行鎖存,其他選手的輸入無效。然后就是對搶答進行時間限制了,根據設定的時間進行倒計時,當倒計時完成還沒有人搶答的時候系統(tǒng)發(fā)出警報聲音提示時間已經到了。當有選手在主持人未按下搶答鍵搶答時視為超前搶答,系統(tǒng)
2、顯示該選手號,同時蜂鳴器響,該搶答無效。還有清除復位鍵,搶答完成以后按復位鍵即可清除已有的狀態(tài)。通過Verilog HDL程序代碼實現系統(tǒng)的各個功能。二、設計目的與要求目的:理論聯系實際,鞏固和運用所學課程,提高分析、解決計算機技術實際問題的獨立工作能力,培養(yǎng)學生正確的設計思想,嚴肅認真、實事求是的科學態(tài)度和勇于探索的創(chuàng)新精神。通過對一個智力搶答器的設計,進一步加深對計算機原理以及數字電路應用技術方面的了解與認識,進一步熟悉數字電路系統(tǒng)設計、制作與調試的方法和步驟,通過Verilog 程序的編寫,進一步熟悉Verilog HDL 的語法知識;規(guī)范化訓練學生撰寫技術研究報告,提高書面表達能力。要
3、求: 掌握FPGA設計系統(tǒng)的一般方法。 熟練掌握使用modelsim軟件設計較復雜的數字邏輯電路。 培養(yǎng)學生獨立分析問題和解決實際問題的能力。三、 課程設計的內容設計一搶答器,要求如下:(1)搶答臺數為6;(2)具有搶答開始后20s倒計時,20秒倒計時后6人搶答顯示超時,并報警;(3)能顯示超前搶答臺號并顯示犯規(guī)報警;(4)系統(tǒng)復位后進入搶答狀態(tài),當有一路搶答按鍵按下,該路搶答信號將其余各路搶答信號封鎖,同時鈴聲響起,直至該路按鍵松開,顯示牌顯示該路搶答臺號。四、系統(tǒng)設計方案根據系統(tǒng)設計要求可知,系統(tǒng)的輸入信號有:主持人按鈕inputEn,各選手的搶答按鈕分別是inputL1、inputL2、
4、inputL3、inputL4,inputL5,inputL6,主持人和選手搶答按鈕都是低電平有效,系統(tǒng)復位信號clr(高電平有效),系統(tǒng)時鐘信號clk,系統(tǒng)的輸出信號有:六個人搶答成功與否的指示燈控制信號輸出口Led2,犯規(guī)搶答時報警器Buzzer(低電平有效)。本系統(tǒng)應具有的功能有:能夠準確的判斷出是哪位搶答者,當主持人沒按搶答時,有人搶答了則蜂鳴器報警,并顯示該選手號,當主持人按了搶答鍵時有人搶答了,同時封鎖搶答信號,其他選手搶答無效,不顯示該選手號。五、仿真過程與仿真結果仿真過程:使用ModelSim進行功能測試,首先在里面進行相應的設置,在工程文件夾下面會新建一個modelsim的文
5、件夾,然后編寫實現功能的程序和測試文件,最后保存編譯執(zhí)行就可以進行功能仿真了。仿真結果 : 結果分析與討論:可以看到0時刻系統(tǒng)復位狀態(tài),2s時2號超前搶答(inputEn為高電平,inputL2為低電平),系統(tǒng)顯示2蜂鳴器并犯規(guī)報警(Buzzer為低電平),8s時系統(tǒng)復位狀態(tài),12s時4號選手先搶答成功(inputL4為低電平)顯示4,14s時3號選手后搶答,不顯示3,20s時系統(tǒng)復位。六、總結 通過本次合成設計,我又一遍熟悉了Verilog HDL語言進行建模,并且通過實際操作學會了怎么使用Modelsim這個軟件來完成一個完整的課程設計。以及對基于FPGA的系統(tǒng)開發(fā)流程有了一個整體認識,我
6、越來越認識到一點, 編程對項目實現有著至關重要的, 我們在硬件開發(fā)的過程中更應該重視編程, 將編程看作是完善開發(fā)的不可缺少的一部分。雖然題目簡單,但這也磨練了我的意志。第一次做的太復雜了,然后一次次修改,做成最簡單功能的。在一次次的反復設計、論證和測試中, 提高了邏輯分析能力、全面分析問題的能力以及發(fā)現問題、解決問題的能力。通過對各方面資料的收集, 我的知識面也進一步拓寬了。同時,我也發(fā)現了自己的不足, 像語言表達還比較差, 不能更清楚地表達自己的意思, 邏輯分析能力和編程能力有待提高,有些預先的想法都未能實現。在系統(tǒng)的結構設計上也還有很長的路需要走,這是需要時間去積累的。在今后的學習中我還得
7、加以改進。七、程序系統(tǒng)主要Verilog HDL源程序:module QiangDaQi(clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led2,Buzzer); /一開始聲明有哪些端口input clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6;output 0:7Led2;/Led2顯示選手號output Buzzer;/低電平時蜂鳴器發(fā)出聲音reg EnFlat=1b0;/EnFlat為高電平時開始搶答reg 0:2Led2=3d
8、0;reg Buzzer=1b1;always (posedge clk)/時鐘上升沿begin if(inputEn=1)/如果主持人沒按按鈕就有人搶答 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)/為低電平時表示主持人按下搶答按鈕開始搶答 begin EnFlat=1b1; if(EnFlat=1b1) begin if(inputL1=1b0)/一號選手搶答 begin Led2=3d1; EnFlat=1b0;/為低電平禁止其他選手搶答 Buzzer=1b1; end else/一開始沒加else發(fā)現仿真結果隨著輸入數據變化而變化 if(inputL2=1b0)/二號選手搶答 begin Led2=3d2; EnFlat=1b0; Buzzer=1b
10、0; end else if(inputL3=1b0)/三號選手搶答 begin Led2=3d3; EnFlat=1b0;/為低電平禁止其他選手搶答 Buzzer=1b1; endelse if(inputL4=1b0)/四號選手搶答 begin Led2=3d4; EnFlat=1b0;/為低電平禁止其他選手搶答 Buzzer=1b1; end else if(inputL5=1b0)/五號選手搶答 begin Led2=3d5; EnFlat=1b0;/為低電平禁止其他選手搶答 Buzzer=1b1; end else if(inputL6=1b0)/六號選手搶答 begin Led2=
11、3d6; EnFlat=1b0;/為低電平禁止其他選手搶答 Buzzer=1b1; end end end if(clr)/按下clr鍵以后各組參數重置,整個比賽重新開始 begin EnFlat=1b0; Led2=3d0;/為低電平時,選手前的燈點亮 Buzzer=1b1;/為高電平不響 endendendmodule測試程序timescale 1s/1smodule qiangdaqi_test(); reg clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6;/輸入口 wire 0:7Led2;/Led2顯示選
12、手號 wire Buzzer;/低電平時蜂鳴器發(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;/二號選手超前搶答 #4 clr=1;inputL2=1;/復位 #2 clr=0; #4 inputEn=0;inputL4=0;/四
13、號選手先搶答顯示4 #2 inputL3=0;/三號選手后搶答不顯示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); /一開始聲明有哪些端口input clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,in
14、putL5,inputL6,add,stu;/輸入口output 0:5Led1;/對應參賽選手前的燈output 0:7Led2,Led3;/Led2顯示選手號Led3顯示選手分數output Buzzer;/低電平時蜂鳴器發(fā)出聲音reg EnFlat=1b1;/EnFlat為高電平時開始搶答reg BuClk=1b0;/為高電平時進入蜂鳴器處理程序/reg add,stu;/add答題正確加一分stu答題錯誤減一分/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;/各選手分數計算reg Buzzer=1;reg 0:4 daojishi=5d20;/用于產生20s倒計時reg 0:7Led2=8b11111111,Led3=8b11111111;always (posedge clk)/時鐘上升沿begin if(inputEn=1)/如果主持人沒按按鈕就有人搶答 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)/為低電平時表示主持人
17、按下搶答按鈕開始搶答beginLed1=6b111111;/為低電平時,選手前的燈點亮BuClk=1b0;Buzzer=1b1;/為高電平不響end if(EnFlat=1b1) begin begin if(inputL1=1b0)/一號選手搶答 begin EnFlat=1b0;/為低電平禁止其他選手搶答 answer=3d1;/為高電平時轉到對應選手加減分程序中去 BuClk=1b1;/轉到蜂鳴器程序 end if(inputL2=1b0)/二號選手搶答 beginEnFlat=1b0;answer=3d2;BuClk=1b1; end if(inputL3=1b0)/三號選手搶答 be
18、ginEnFlat=1b0;answer=3d3;BuClk=1b1; end if(inputL4=1b0)/四號選手搶答 beginEnFlat=1b0;answer=3d4;BuClk=1b1; end if(inputL5=1b0)/五號選手搶答 beginEnFlat=1b0;answer=3d5;BuClk=1b1; end if(inputL6=1b0)/六號選手搶答 beginEnFlat=1b0;answer=3d6;BuClk=1b1; end end begin if(daojishi!=5d0)/用于1Hz信號 daojishi=daojishi-1; else/倒計時
19、結束搶答器還沒按下則搶答停止且蜂鳴器響 begin daojishi=5d20; EnFlat=1b0; BuClk=1b1; end end begin if(BuClk=1b1)/當蜂鳴器標志為1時 Buzzer=1b0;/蜂鳴器發(fā)聲 end begin if(answer =3d1)/第一組加減分 begin Led1=6b111110;/點亮該選手前的LED燈 Led2=8hf9;/選手號數碼管顯示1 if(add) score1=score1+1;/當主持人判定選手的回答正確時,按下add鍵進行加分操作 else if(stu|inputEn)&(score1!=0) score1=
20、score1-1;/當主持人判定選手的回答錯誤時,按下stu鍵進行加分操作 else score1=0; score=score1;/把第一組的分數賦值給分數寄存器 end if(answer =3d2)/第二組加減分 begin Led1=6b111101;Led2=8ha4; if(add) score2=score2+1;/當主持人判定選手的回答正確時,按下add鍵進行加分操作 else if(stu|inputEn)&(score2!=0) score2=score2-1;/當主持人判定選手的回答錯誤時,按下stu鍵進行加分操作 else score2=0; score=score2;
21、/把第一組的分數賦值給分數寄存器 end if(answer =3d3)/第三組加減分 begin Led1=6b111011;Led2=8hb0; if(add) score3=score3+1;/當主持人判定選手的回答正確時,按下add鍵進行加分操作 else if(stu|inputEn)&(score3!=0) score3=score3-1;/當主持人判定選手的回答錯誤時,按下stu鍵進行加分操作 else score3=0; score=score3;/把第一組的分數賦值給分數寄存器 end if(answer =3d4)/第四組加減分 begin Led1=6b110111;Le
22、d2=8h99; if(add) score4=score4+1;/當主持人判定選手的回答正確時,按下add鍵進行加分操作 else if(stu|inputEn)&(score4!=0) score4=score4-1;/當主持人判定選手的回答錯誤時,按下stu鍵進行加分操作 else score4=0; score=score4;/把第一組的分數賦值給分數寄存器 end if(answer =3d5)/第五組加減分 begin Led1=6b101111;Led2=8h92; if(add) score5=score5+1;/當主持人判定選手的回答正確時,按下add鍵進行加分操作 else
23、 if(stu|inputEn)&(score5!=0) score5=score5-1;/當主持人判定選手的回答錯誤時,按下stu鍵進行加分操作 else score5=0; score=score5;/把第一組的分數賦值給分數寄存器 end if(answer =3d6)/第六組加減分 begin Led1=6b011111;Led2=8h82; if(add) score6=score6+1;/當主持人判定選手的回答正確時,按下add鍵進行加分操作 else if(stu|inputEn)&(score6!=0) score6=score6-1;/當主持人判定選手的回答錯誤時,按下stu
24、鍵進行加分操作 else score6=0; score=score6;/把第一組的分數賦值給分數寄存器 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鍵以后各組參數重置,整個比賽重新開始 begin EnF
25、lat=1b1; daojishi=5d20; Led1=6b111111;/重置時六個Led全滅 Led2=8b11111111;/熄滅選手號靜態(tài)數碼管 Led3=8b11111111;/熄滅分數顯示數碼管 BuClk=1b0;/蜂鳴器標志位重置 Buzzer=1b1;/蜂鳴器控制管腳重置 score=0; /score1=4d0;score2=4d0;score3=4d0; /score4=4d0;score5=4d0;score6=4d0; answer=3d0; endendendmodule測試程序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答題錯誤減一分 wire 0:5Led1;/對應參賽選手前的燈 wire 0:7Led2,Led3;/Led2顯示選手號Led3顯示選手分數 wire Buzzer;/低電平時蜂鳴器發(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年廣西公務員申論考試真題及答案-A卷
- 2025年滬教版高二數學上冊月考試卷
- 2025年人教新起點選修1歷史上冊月考試卷含答案
- 2025年粵教新版九年級地理上冊月考試卷
- 2025年人教五四新版七年級生物上冊階段測試試卷
- 2025年蘇人新版七年級生物上冊月考試卷含答案
- 2025年粵人版選擇性必修1語文上冊階段測試試卷
- 2025年北師大版八年級生物下冊月考試卷含答案
- 二零二五年度木門及木飾面定制化生產與安裝服務合同4篇
- 二零二五版親子閱讀活動組織服務合同4篇
- 江蘇省蘇州市2024-2025學年高三上學期1月期末生物試題(有答案)
- 銷售與銷售目標管理制度
- 人教版(2025新版)七年級下冊英語:寒假課內預習重點知識默寫練習
- 2024年食品行業(yè)員工勞動合同標準文本
- 2025年第一次工地開工會議主要議程開工大吉模板
- 全屋整裝售后保修合同模板
- 高中生物學科學推理能力測試
- GB/T 44423-2024近紅外腦功能康復評估設備通用要求
- 2024-2030年中國減肥行業(yè)市場發(fā)展分析及發(fā)展趨勢與投資研究報告
- 運動技能學習
- 2024年中考英語專項復習:傳統(tǒng)文化的魅力(閱讀理解+完型填空+書面表達)(含答案)
評論
0/150
提交評論