基于FPGA的四路抢答器的Verilog HDL代码.doc_第1页
基于FPGA的四路抢答器的Verilog HDL代码.doc_第2页
基于FPGA的四路抢答器的Verilog HDL代码.doc_第3页
基于FPGA的四路抢答器的Verilog HDL代码.doc_第4页
基于FPGA的四路抢答器的Verilog HDL代码.doc_第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 = 8h82;/

温馨提示

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

评论

0/150

提交评论