(精校版)verilogHDL抢答器(两个程序)_第1页
(精校版)verilogHDL抢答器(两个程序)_第2页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(完整word版,verilogHDL抢 答器(两个程序) ) 的内容能够给您的工作和学习带来便利。 同时也真诚的希望收到您的建议和反馈, 这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以 下为完整word版,verilogHDL抢答器(两个程序)的全部内容。一、设计任务智力竞赛抢答器Verilog HDL要求有6位参赛者进行抢答, 有六个抢答信号进 行抢

2、答。当有抢答选手按下抢答键后系统能够快速准确的判断是那一组选手按下了 抢答信号,由于系统比较小,速度比较快一般不会有同时按下的可能,所以只有六种 状态,然后系统能够根据这六种状态进行适时的显示和提示。当有选手按下以后就对 抢答信号进行锁存,其他选手的输入无效。然后就是对抢答进行时间限制了,根据设 定的时间进行倒计时,当倒计时完成还没有人抢答的时候系统发出警报声音提示时 间已经到了。当有选手在主持人未按下抢答键抢答时视为超前抢答,系统显示该选手 号,同时蜂鸣器响,该抢答无效。还有清除复位键,抢答完成以后按复位键即可清除 已有的状态。通过Verilog HDL程序代码实现系统的各个功能。二设计目的

3、与要求目的:理论联系实际,巩固和运用所学课程,提高分析、解决计算机技术实际问 题的独立工作能力,培养学生正确的设计思想,严肃认真、实事求是的科学态度和勇 于探索的创新精神通过对一个智力抢答器的设计,进一步加深对计算机原理以及数 字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方 法和步骤,通过Verilog程序的编写,进一步熟悉Verilog HDL的语法知识;规范化 训练学生撰写技术研究报告,提高书面表达能力。要求:掌握FPGA设计系统的一般方法。熟练掌握使用modelsim软件设计较复杂的数字逻辑电路。培养学生独立分析问题和解决实际问题的能力。三、课程设计的内容设计

4、一抢答器,要求如下:(1)抢答台数为6;(2)具有抢答开始后20s倒计时,20秒倒计时后6人抢答显示超时,并报彳(3)能显示超前抢答台号并显示犯规报警;(4)系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各 路抢答信号封锁,同时铃声响起,直至该路按键松开,显示牌显示该路抢答台号。、系统设计方案根据系统设计要求可知,系统的输入信号有:主持人按钮inputEn,各选手的抢答按钮分别是inputU、i nputL2xi nputL3xi nputL4, i nputL5, i nputL6,主持人和选手抢答按钮都是低电平有效,系统复位信号Cl r(高电平有效),系统时钟信号elk,

5、系统的输出信号有:六个人抢答成功与否的指示灯控制信号输出口Led2,犯规抢答时报警器Buzzer(低电平有效)。本系统应具有的功能有:能够准确的判断出是哪 位抢答者, 当主持人没按抢答时有人抢答了则蜂鸣器报警并显示该选手号,当主持 人按了抢答键时有人抢答了,同时封锁抢答信号,其他选手抢答无效,不显示该选手五、仿真过程与仿真结果仿真过程:使用ModelSim进行功能测试,首先在里面进行相应的设置,在工程文件 夹下面会新建一个modelsim的文件夹,然后编写实现功能的程序和测试文件,最后 保存编译执行就可以进行功能仿真了.仿真结果:Mses结果分析与讨论:可以看到o时刻系统复位状态,2s时2号超

6、前抢答(inputEn为高电平,inputL2为低电平),系统显示2蜂鸣器并犯规报警(Buzzer为低电平),8s时 系统复位状态,12s时4号选手先抢答成功(inputL4为低电平)显示4, 14s时3号选手后抢答,不显示3, 20s时系统复位.六、总结通过本次合成设计,我又一遍熟悉了Ve门log HDL语言进行建模,并且通过实际操作学会了怎么使用Modelsim这个软件来完成一个完整的课程设计。以及对基于FPGA的系统开发流程有了一个整体认识,我越来越认识到一点,编程对项目实现有 着至关重要的,我们在硬件开发的过程中更应该重视编程,将编程看作是完善开发 的不可缺少的一部分。虽然题目简单,但

7、这也磨练了我的意志。第一次做的太复杂 了,然后一次次修改,做成最简单功能的。在一次次的反复设计、论证和测试中,提 高了逻辑分析能力、全面分析问题的能力以及发现问题、解决问题的能力。通过对 各方面资料的收集,我的知识面也进一步拓宽了.同时,我也发现了自己的不足,像 语言表达还比较差,不能更清楚地表达自己的意思,逻辑分析能力和编程能力有待 提高,有些预先的想法都未能实现在系统的结构设计上也还有很长的路需要走,这 是需要时间去积累的在今后的学习中我还得加以改进.2 /qanodaqst.fu LfdkStlt fQangdoqJest/u 1/&sto/ /qanodaq su L/nput

8、nSCIf /QncrioQ_test/u 1/nputt 1StlX /qangaq jes W l/rput.2Stl/ /qiangdacjjest/u l/inputi3Stl /qancdaq .testju 1/nput.Stl/ fcjangdacji/ripatL5Stl /qonoloqi.tcstu l/rput6Stl0 /qwngdaqje叫ul/Led20佝angdaq_tect,iu V&Ttet0丄NM25 secif (inputL5=0)七、程序系统主要Ver il og HDL源程序:moduleQiangDaQi(clkFclr, inputEn,

9、 inputL1, inputL2, inputL3, inputL4.inputL5, inputL6, Led2,Buzzer);/一开始声明有哪些端口input elk,clr, inputEn, inputLI, inputL2, inputL3, inputL4, inputL5, inputL6;output 0: 7 Led2;/Led2显示选手号output Buzzer;/低电平时蜂鸣器发出声音reg EnF I at=1 bO; /EnF I at为高电平时开始抢答reg 0:2 Led2二3dO;reg Buzzer二1b1;always (posedge elk)/时钟

10、上升沿beg i ni f (i nputEn二二1)/如果主持人没按按钮就有人抢答beg inif (input,二二0)begin Led2=:3,d1 ;Buzzer=1 bO;endi f (inputL20)begin Led2=31d2;Buzzer=1bO;endi f (inputL30)begin Led2=3 d3;Buzzer=1bO;endif(inputL3r bO)/三号选手抢答if (inputL4=0)begi n Led2二3d4;Buzzer二bO;endbegin Led2=31d5; Buzzer二1, bO; endif (inputL60)begi

11、n Led2二3d6;Buzzer=11bO;endendif(inputEn=r bO)/为低电平时表示主持人按下抢答按钮开始抢答begi nEnFlat=1*b1;if(EnFlat=r b1)beg inif (inputL1=rbO)/号选手抢答beginLed2=3,d1;EnFlat=r bO;/为低电平禁止其他选手抢答Buzzer=11b1;ende I se一开始没加e I se发现仿真结果随着输入数据变化而变化if (inputL2=rbO)/二号选手抢答beginLed2=3d2;if(inputL3r bO)/三号选手抢答EnFlat=r bO;Buzzed bO;end

12、elsei nputL6=1;beg inLed2二3 d3;EnF lath bO;/为低电平禁止其他选手抢答Buzzer=1?b1;endelseif (inputL4=11bO)/四号选手抢答beginLed2=3d4;EnF I at二1 bO; /为低电平禁止其他选手抢答Buzzer=r b1 ;endelseif (inputL5=1 * bO)/五号选手抢答beginLed2二3d5;EnF lath bO;/为低电平禁止其他选手抢答Buzzer=1rb1 ;ende I seif ( inputL6=11bO)/六号选手抢答beginLed2二3 d6;EnFlat=rbO;为

13、低电平禁止其他选手抢答i nputL6=1;Buzzer=1b1 ;endendendif(clr)/按下c I r键以后各组参数重置,整个比赛重新开始beginEnF Iat=1bO;Led2=3d0;/为低电平时,选手前的灯点亮Buzzer=1 b1;/为高电平不响endendendmodule测试程序、timescale 1 s/1 smodule qiangdaqi_test();reg elk, cI r, inputEn, inpuinputL2. inputL3, inputL4, inputL5, inputL6;/输入口wire 0:7 Led2;/Led2显示选手号wire

14、 Buzzer;/低电平时蜂鸣器发岀声音QiangDaQi u1 (elk, cI r, inputEn, inputL1. inputL2, inputL3. inputL4, inputL5, inputL6, Led2, Buzzer);initialbegin#0 cIk=1;cIr=0; i nputEn=1; inputL1=1; i nputL2=1; i nputL3=1;i nputL4=1; i nputL5=1;# 2 i nputL2=0; /二号选手超前抢答#4 cl r=1; inputL2=1 ;/复位#2 clr二0;#4 inputEn二0; inputL4二

15、0;/四号选手先抢答显示4#2 inputL3=0;/三号选手后抢答不显示3#4 clr=1; inputEn=1 ; inputL3=1; inputL4=1 ;#2 clr二0;enda I ways #1 elk二elk;endmoduIe程序二moduIe Q i angDaQ i(cIk, clr, add, stu, inputEn, inputL1, inputL2, inputL3, inputL4, inputL5, inputL6, Led1,Led2, Led3, Buzzer);/一开始声明有哪些端口input elk, cl r, inputEn, inputL1,

16、inputL2, inputL3, inputL4, inputL5, inputL6, add, stu;/输入口output 0:5Led1 ;/对应参赛选手前的灯output 0:7 Led2, Led3; /Led2显示选手号Led3显示选手分数output Buzzer;/低电平时蜂鸣器发出声音reg EnF I at=1 b1 ; /EnF I at为高电平时开始抢答reg BuClk=rb0;/为高电平时进入蜂鸣器处理程序/reg add, stu; /add答题正确加一分stu答题错误减一分/reg cl r=0;/重置键reg 0:5 Led1二6 b111111;reg 0

17、: 2 answer=3 dO;reg 0:3 score二4 d0fscore1=4,dO, score2=4d0;reg 0:3 score3=4d0, score4=4d0, score5=4*d0, score6=4,dO;/各选手分数计算reg Buzzer=1 ;reg 0:4 daojishi二5 d20;/用于产生20s倒计时reg 0: 7Led2二8 b11111111, Led3=8sb11111111;always (posedge elk)/时钟上升沿begini f (i nputEn-1)/如果主持人没按按钮就有人抢答beg i nif (inputL1=0)be

18、gin Led1=6b111110; answer二3d1;BuClk二1b1; endif (inputL20)begin Led2=6,b111101; answer=3,d2; BuCIk=1* b1;endif (inputL3=0)begin Led2=6,b111011; answer二3d3; BuCIk=1*b1;endi f (inputL4=0)begin Led2=6b110111;answer=3,d4; BuClk=1b1;endif (inputL5=0)begin Led2二6 b101111; answer=3d5:BuCIk=15b1; endif (inpu

19、tL60)begin Led2二6 b011111; answer=3d6;BuCIk=11b1; endendif(i nputEn-1 bO) /为低电平时表示主持人按下抢答按钮开始抢答beginLed1二6 b111111;/为低电平时,选手前的灯点亮BuCIkhbO;Buzzer二1 b1 ;/为高电平不响endif(EnFlat=r b1)beg i nbeg i nif (i nputH =1 bO) /号选手抢答beg i nEnFlat=1bO;/为低电平禁止其他选手抢答answer二3出;/为高电平时转到对应选手加减分程序中去BuC I k=r b1 ;/转到蜂鸣器程序end

20、if (inputL2=r bO)/二号选手抢答beginEnFlat=r bO;answer二3 d2;BuCIk二1 b1;endif (inputL3=1 *bO)/三号选手抢答beg i nEnF I atW bO;answerE d3;BuClk=rb1;endif(inputL4二二1 bO)/四号选手抢答beginEnFlat=rbO;answer二3 d4;BuClk=r b1;endi f (inputL5=1 bO)/五号选手抢答beginEnF lath bO;answer=3d5;BuClk=rb1;endif (inputL6=rbO)/六号选手抢答beginEnFl

21、at=1bO;answer=3 d6;BuClk=rb1;endendbeg inif (daojishi !二5 dO)/用于1Hz信号daoj ishi=daoj i sh i1;e I se/倒计时结束抢答器还没按下则抢答停止且蜂鸣器响begindaoj i sh i二5d20;EnFlat=1bO;BuClk=r b1 ;endendbeg i nif (BuClk=r b1)/当蜂鸣器标志为1时Buzzer=1b0;/蜂鸣器发声endbeg i nif (answer =3*d1)/第一组加减分beg i nLed仁6 b111110;/点亮该选手前的LED灯Led2二8 hf9;/

22、选手号数码管显示1i f (add)score1=score1+1 ;/当主持人判定选手的回答正确时,按下add键进行加分操作e I seif (stu| I inputEn) &(scorel !=0)score1=score1-1;/当主持人判定选手的回答错误时,按下stu键进行加分操作eIse score1=0; score=score1 ;/把第一组的分数赋值给分数寄存器endif (answer二二3d2) /第二组加减分beg i nLed仁6 b111101;Led2=8ha4;i f (add)score2二score2+1 ;/当主持人判定选手的回答正确时,按下add

23、键进行加分操作e I seif (stu| I inputEn)&(score2!二0)score2=score2-1 ;/当主持人判定选手的回答错误时, 按下stu键进行加分操作else score2二0;score二score2;/把第一组的分数赋值给分数寄存器endif (answer二二3 d3)/第三组加减分beg i nLecH二6 b111011;Led2=8,hbO:if (add)score3二score3+1;/当主持人判定选手的回答正确时,按下add键进行加分操作e I seif (stu I |i nputEn) & & (score3! =0)

24、score3=score3-1;/当主持人判定选手的回答错误时,按下stu键进行加分操作else score3二0;score二score3;/把第一组的分数赋值给分数寄存器endbeg inif (answer 3d4)/第四组加减分beg i nLed1二6 6110111; Led2二8 h99;i f (add)score4二score4+1 ;/当主持人判定选手的回答正确时,按下add键进行加分操作e I seif (stu| I i nputEn) &(score4! =0)score4=score41;/当主持人判定选手的回答错误时,按下stu键进行加分操作else sc

25、ore4=0;score=score4;/把第一组的分数赋值给分数寄存器endi f (answer二二3 d5)/第五组加减分beg i nLed1=6b101111;Led2=8,h92;i f (add)score5=score5+1; /当主持人判定选手的回答正确时,按下add键进行加分操作e I seif (stu I | inputEn) &(score5!二0)score5=score5-1 ;/当主持人判定选手的回答错误时,按下stu键进行加分操作else score5=0;score二score5;/把第一组的分数赋值给分数寄存器endif (answer 31d6)

26、/第六组加减分beg inLed1=6?bO11111;Led2=8,h82; i f (add)score6二score6+1 ;/当主持人判定选手的回答正确时,按下add键进行加分操作e I seif (stu| | inputEn) & (score6!=0)score6=score6-1;/当主持人判定选手的回答错误时,按下stu键进行加分操作elsescore6=0;score二score6;/把第一组的分数赋值给分数寄存器endbegincase (score) /? ?4dO: Led3二8 hc0;4d1:Led3二8hf9; 4 d2:Led3二8ha4;4 d3:

27、Led3二8hb0;4 d4:Led3=8h99; 4d5: Led3二8h92;4 d6: Led3二8h82; 4d7:Led3=8*hf8;4d8:Led3=8,h80;4 d9:Led3二8 h90;default:Led3=8,hff;endcaseendendendif (clr)/按下cl r键以后各组参数重置,整个比赛重新开始beginEnFlat=r b1 ;daojishi二5 d20;Led1=6b1/重置时六个Led全灭Led2二8 611111111;/熄灭选手号静态数码管Led3=8,611111111;/熄灭分数显示数码管BuC I k=1 bO ;/蜂鸣器标志位

28、重置Buzzer二1 b1 ;/蜂鸣器控制管脚重置score二0;/scoredd0; score2=4,d0; score3=4 dO;/score4=4,dO; score5=4dO;score6=45dO;answer二3 dO;endendendmoduIe测试程序timescale 1s/1smodule qiangdaqi_test ();reg elk, clr, add, stu, inputEn, inputL1, inputL2, inputL3. inputL4, inputL5, inputL6;/reg cl r ;/重置键/reg add, stu;/add答题正确

29、加一分stu答题错误减一分wire 0: 5 Led1 ;/对应参赛选手前的灯wire 0: 7Led2, Led3; /Led2显示选手号Led3显示选手分数wire Buzzer;/低电平时蜂鸣器发出声音QiangDaQi u1 (elk,clr,add, stu, inputEn, inputL1, inputL2, inputL3, inputL4, inputL5, i nputL6, Led1, Led2,Led3,Buzzer);initialadd二0 ; stu=O;cIr=0;i nputEn=1 ; inputL1=1;i nputL2=1 ; i nputL3=1;i

30、nputL4=1;i nputL5=1; i nputL6=1;it 2inputEn=O;inputL1=1 ; inputL2二0;inputL3=1 ; i nputL4=1 ; i nputL5=1 ;i nputL6=1;add=1;#2 cIr=1;add=0 ; stu=0;i nputEn二1:i nputL1=1; i nputL2=1 ; i nputL3=1;i nputL4=1 ; i nputL5=1;inputLdl;#2 clr二0;#2 inputEn=0;inputL1=1;inputL2=0 ; inputL3=1 ; i nputL4=1 ; i nputL5=1 ;i nputL6=1;add=1 ;#1 inputL3=0; add=1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论