基于FPGA的四路抢答器的Verilog HDL代码.doc

基于FPGA的四路抢答器的Verilog HDL代码.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于FPGA的四路抢答器的Verilog HDL代码.doc

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:7] Led1; //倒计时时使用的LED控制端 output [0:7] Led2; //数码管控制端 output [0:7] Led3; //分数显示数码管控制端 output Buzzer; //蜂鸣器 //各个寄存器变量声明 reg [0:7] Led1; reg [0:7] Led2; reg [0:7] Led3; reg cnt=32b0; reg Buzzer; reg score=4’hf;//分数显示寄存器 //配置寄存器,EnFlat是表明开始抢答的标志位 reg EnFlat=1b0; //BuClk是蜂鸣器的标志位 reg BuClk=1b0; //BuL是做蜂鸣器的延时用 reg [0:7]BuL=8d0; //抢答选手标志位 reg answer=3’d0; //各组分数标志位 reg score1=4’d5; reg score2=4’d5; reg score3=4’d5; reg score4=4’d5; //------------初始化模块--------------- always @ (posedge clk)//捕捉时钟 begin //初始化各按键并开始抢答 begin if(inputEn==1b0) begin //初始化各个标志位和参数 EnFlat=1b1; //倒计时开始时8个Led灯全亮 Led1=8 //组号显示静态数码管(数码管为共阳极)的控制端,有8位 Led2=8 //分数显示数码管控制端 Led3=8 //蜂鸣器标志位 BuClk=1b0; //蜂鸣器的控制管脚,低电平为发声音 Buzzer=1b1; end end //--------抢答模块------- begin if(EnFlat==1b1) begin //如果按键1按下 if(inputL1==1b0) begin //禁止其他选手抢答 EnFlat=1b0; //选手标志位改变,用于加减分数模块 answer=3’d1; //静态数码管显示序号1 ,及显示选手对应的组号 Led2=8hf9; //指示蜂鸣器发声 BuClk=1b1; end //如果按键2按下 else if(inputL2==1b0) begin //禁止其他选手抢答 EnFlat=1b0; answer=3’d2; Led2=8ha4; BuClk=1b1; end //如果按键3按下 else if(inputL3==1b0) begin //禁止其他选手抢答 EnFlat=1b0; answer=3’d3; Led2=8hb0; BuClk=1b1; end //如果按键4按下 else if(inputL4==1b0) begin //禁止其他选手抢答 EnFlat=1b0; answer=3’d4; Led2=8h99; BuClk=1b1; end end end //-------------------加减分数模块---------------- //第一组加减分 if(answer ==3’d1) begin if(add) score1=score1+1; //当主持人判定选手的回答正确时,按下add键进行加分操作 else if(stu) score1=score1-1; //当主持人判定选手的回答错误时,按下stu键进行减分操作 score=score1;//把第一组的分数赋值给分数寄存器 end //第二组加减分 if(answer ==3’d2) begin if(add) score2=score2+1; //当主持人判定选手的回答正确时,按下add

文档评论(0)

tangtianbao1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档