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

北华航天工业学院《EDA技术综合设计》课程设计报告报告题目:竞赛抢答器作者所在系部:电子工程系作者所在专业:电子信息工程作者所在班级:B10212作者姓名:郭思华指导教师姓名:胡辉完成时间:2012-12-16内容摘要EDA技术是现代电子信息工程领域的一门新技术,他是先进的计算机工作平台上开发出来的一套电子系统设计的软硬件工具,并设计先进的电子系统设计方法。
本文介绍了以FPGA为基础的四路抢答器的设计,此次设计是一个有4组抢答输入,并具有抢答计时控制,到时报警以及时间显示等功能的通用型抢答器。
此次设计它以VHDL硬件描述为平台,结合动手实践完成。
该抢答器分为五个模块:抢答模块、计时模块、选择模块,位循环模块和译码模块。
利用QuartusⅡ工具软件完成率编译仿真验证。
关键词EDA、可编程逻辑器件、计数器、显示器目录一概述 (1)二方案设计与论证 (1)三单元电路程序设计及其功能验证 (2)(一)抢答锁存模块的设计 (2)(二)计时模块的设计 (4)(三)数据选择模块的设计 (5)(四)译码模块的设计 (6)(五)位循环模块的设计 (8)四完整电路设计与分析 (9)(一)主电路图 (9)(二)时序仿真图 (9)(三)芯片引脚分布图 (10)五性能测试与分析 (10)六实验设备 (10)七心得体会 (10)八参考文献 (11)课程设计任务书一、概述抢答器主要由抢答模块、计时模块、选择模块,位循环模块和译码模块组成。
在整个抢答器中主持人在抢答前设置好抢答时间,在复位开始按键按下后,抢答器开始倒计时,若在计时时间内无人抢答,则抢答器报警提示,若在计时过程中有人抢答,则数码管显示第一个抢答的人的编号,同时停止计时。
抢答器共有3个输出显示,选手代号、计数器的个位和十位,他们输出全都为BCD码输出,这样便于和显示译码器连接。
二、方案设计与论证将该任务分成五个模块进行设计,分别为:抢答器抢答模块、抢答器计时模块、位循环模块、译码模块和选择模块。
基于FPGA平台的四位抢答器设计

现代电子系统设计综合题目——抢答器班级:电子信息工程(4)班姓名:尹燕宁学号:07090403日期:2011-12-14合作者:王启俊按照抢答器的设计要求,本设计主要实现以下基本功能:(1) 抢答器可以容纳四组参赛队进行抢答。
(2)系统复位后进入抢答状态,抢答开始后20秒倒计时,20秒倒计时后无人抢答显示超时,并报警。
(3)能显示抢答台号,且一组抢答后,则不接纳其他组抢答。
根据其设计要求,经过仔细试验和比较开始时所设想的两种方案,采用了以下方案以满足要求:倒计时模块应用动态显示方法显示两位变化的数字,倒计时过程中无人抢答则在计时结束后触发bell 信号发出报警声表示超时,有人抢答时则首先按下按钮的人通过一个stop信号屏蔽掉其他人的抢答信号,且不再计时。
在具体实现方案时,根据给定的电子综合设计实验箱的模块和已有元件的限制,对方案进行了如下调整和补充:首先是进行时钟信号分频,由给定的50MHz的时钟分成1Hz,以实现按秒倒计时;其次是倒计时显示的两位数字,由于只有一个静态显示数码管且被用于显示抢答台号,所以必须运用动态显示来进行两位数字的显示和控制;最后是复位后的初值设定,以使上一次抢答的结果不会影响下一次的抢答过程,增加电路的稳定性。
经过仿真以及实验,本设计能够圆满完成设计要求,且具有电路简洁、方案易懂、操作方便、抗干扰性强等特点,经过适当的轻微改造即可作为实际比赛时的四组抢答器,效果良好。
第一章方案的论证与设计第二章理论计算第三章电路图及相关设计文件第四章仿真与测试分析第五章设计总结第六章参考文献第七章附件(含完整电路图、VHDL设计文件)第一章方案的论证与设计为便于进行电路的方案设计和模块化设计,首先根据要求画出实现抢答器功能的系统框图如下所示:根据其设计要求,按照现有的知识水平和实验设备,提出了以下两种实现抢答器的方案:(一)倒计时部分采用静态显示,方便简单。
四人抢答部分根据抢答信号的高低来判断是否继续倒计时并且屏蔽掉其他后来的抢答信号。
verilog--4路抢答器设计-带30s倒计时

四路抢答器一、程序module qiangda4(clr,clk,input1,input2,input3,input4,seg,clockin,scan,LED);input clr,clk,input1,input2,input3,input4;output [7:0] seg; //7段数码管数据output [7:0] scan; //数码管位选output [3:0] LED; //输出LED灯指示output clockin; //蜂鸣器reg [7:0] seg;reg [7:0] scan;reg [3:0] LED;reg clockin;reg [3:0] data;reg input_flag,count_flag;reg [14:0] count1;reg [8:0] count2;reg [3:0] LED_N;//reg clock_flag;reg div1khz,div1hz;reg [2:0] cnt;reg [3:0] dat;//reg [7:0] data_count;reg [3:0] count_one,count_ten;initial count_one='d0; //初始化initial count_ten='d3;initial data=4'b0000;initial LED_N=4'b1111;//-------------fenping分频1khz-----------------------------------always @(posedge clk )beginif(count1=='d25000)begin div1khz<=~div1khz;count1<=0;endelsebegin count1<=count1+1'b1;endend//-------------fenping--1hz-------------------------------always @(posedge div1khz)beginif(count2=='d500)begin div1hz<=~div1hz;count2<=0;endelsebegin count2<=count2+1'b1;endend//----------------------------------------------------------always @(posedge div1hz or negedge clr)beginif(!clr)begincount_one<='d0;count_ten<='d3;count_flag<=1'b0;endelse if((!input_flag)&(!count_flag))begin if(count_one=='d0&&count_ten=='d0)begin count_flag<=1'b1;endelse if(count_one=='d0)begin count_one<=4'b1001;count_ten<=count_ten-1'b1;endelsebegin count_one<=count_one-1'b1;endendelsebegin count_one<=count_one;count_ten<=count_ten;endend//-----------------------------------------------------------always @(posedge clk ) //or input1 or input2 or input3 or input4 beginif(!clr)beginLED_N<=4'b1111;//clock_flag<=1'b0;input_flag<=1'b0;data<=4'b0000;endelse if((!input_flag)&(!count_flag))beginif(input1==0)begindata<=4'b0001;LED_N<=4'b0111;input_flag<=1'b1;endelse if(input2==0)begindata<=4'b0010;LED_N<=4'b1011;input_flag<=1'b1;endelse if(input3==0)begindata<=4'b0011;LED_N<=4'b1101;input_flag<=1'b1;endelse if(input4==0)begindata<=4'b0100;LED_N<=4'b1110;input_flag<=1'b1;endelsebegindata<=data;LED_N<=LED_N;input_flag<=input_flag;endendend//-------------led灯及蜂鸣器--------------------------------------------------- always @(posedge clk)beginLED<=LED_N;clockin<=div1khz&(input_flag|count_flag);//dat<=data;end//--------------shu ma guan sao miao数码管扫描--------------------------------- always @(posedge div1khz)beginif(cnt=='d3)begin cnt<=0;endelsebegin cnt<=cnt+1'b1;endend//-----------------------------------------------------always @(cnt,data,count_one,count_ten)begincase(cnt)//3'b000 : begin scan<=8'b01111111;end3'b001 : begin scan<=8'b10111111;dat<=data;end //选手编号3'b010 : begin scan<=8'b11011111;dat<=count_one;end //倒计时3'b011 : begin scan<=8'b11101111;dat<=count_ten;enddefault : begin scan<=8'bx;dat<=4'bx;endendcaseend//--------------------------------------------------------always @(dat)begincase(dat)4'b0000 : seg[7:0]<=8'b11000000;4'b0001 : seg[7:0]<=8'b11111001;4'b0010 : seg[7:0]<=8'b10100100;4'b0011 : seg[7:0]<=8'b10110000;4'b0100 : seg[7:0]<=8'b10011001;4'b0101 : seg[7:0]<=8'b10010010;4'b0110 : seg[7:0]<=8'b10000010;4'b0111 : seg[7:0]<=8'b11111000;4'b1000 : seg[7:0]<=8'b10000000;4'b1001 : seg[7:0]<=8'b10010000;4'b1010 : seg[7:0]<=8'b10001000;4'b1011 : seg[7:0]<=8'b10000011;4'b1100 : seg[7:0]<=8'b11000110;4'b1101 : seg[7:0]<=8'b10100001;4'b1110 : seg[7:0]<=8'b10000110;4'b1111 : seg[7:0]<=8'b10001110;default : seg[7:0]<=8'bx;endcaseendendmodule二、框图三、设计思路四路抢答,有30s倒计时,当有人抢答时,数码管显示对应选手编号,同时对应LED灯亮,蜂鸣器响起,此时其他选手抢答无效。
verilog_hdl_fpga抢答器

FPGA期末结业论文基于FPGA&VerilogHDL的四路抢答器院系:物理与电子学院专业:电子信息科学与技术任课教师:学号:姓名:2013年12月目录(0)摘要 (2)(1)引言 (3)1.1关于课程设计 (3)1.1.1课程设计目的 (3)1.1.2课程设计内容 (3)1.2开发工具简介 (4)1.2.1 EDA技术 (4)1.2.2 硬件描述语言-Verilog HDL (4)1.2.3 Verilog HDL设计流程 (5)1.2.4 FPGA基本特点 (5)1.2.5 FPGA工作原理 (5)(2)概述 (5)2.1 设计过程 (5)2.1.1系统设计要求 (5)2.1.2系统设计方案 (6)(3)系统设计 (6)3.1系统组图 (6)3.2系统主源程序 (8)(4)仿真综合 (10)(5)结论 (13)(6)参考文献 (13)(7)附录 (13)0摘要抢答器是在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答者的机器。
电子抢答器的中心构造一般都是由抢答器由单片机以及外围电路组成。
本设计是以四路抢答为基本概念。
从实际应用出发,利用电子设计自动化( EDA)技术,用可编程逻辑器件设计具有扩充功能的抢答器。
它以Verilog HDL硬件描述语言作为平台,结合动手实验而完成的。
它的特点是电路简单、制作方便、操作简单、方便、性能可靠,实用于多种智力竞赛活动。
本抢答器的电路主要有四部分组成:鉴别锁存电路、FPGA主芯片EP1C3T144C8电路、计分电路以及扫描显示模块的电路,并利用Quartus II工具软件完成了Verilog HDL源程序编写和硬件下载。
这个抢答器设计基本上满足了实际比赛应用中的各种需要。
在实际中有很大的用途。
关键词:抢答器 Quartus II Verilog HDL EP1C3T144C81引言硬件描述语言 Hardware Description Language 是硬件设计人员和电子设计自动化 EDA 工具之间的界面。
基于fpga技术的智力抢答器设计

毕业论文任务书毕业设计开题报告摘要抢答环节经常出现在竞赛、文体娱乐等活动中,在活动中抢答是一种生动活泼的教育形式和方法,它通过抢答和必答方式引起参赛者和观众的兴趣,并能在短时间内,增加人们的科学知识和生活知识。
为了在比赛活动中,准确、公正、直观地判断出第一抢答者,通常需要一台抢答器,通过数显、灯光及音响等多种手段指示出第一抢答者并进行抢答、计分等功能。
所以,研究智力抢答器具有较强的实际意义。
本次设计在EDA开发平台上基于FPGA运用QuartusⅡ7.2软件和VHDL语言进行设计,进行了系统需求分析、系统的总体规划、各个模块设计及顶层文件的设计,实现了比赛中的智力抢答功能,其中包括:第一抢答鉴别功能;抢答信号输出模块;抢答计分功能;抢答以及答题倒计时功能;犯规报警功能以及分数、时间台号显示等功能。
因此本设计具有电路简单、可靠性强、运算速度高等特点。
随着相关设备的提高,我们可以考虑将抢答器的功能进行扩展,扩展成为功能更加全面的智力抢答器。
关键词:四人抢答器数码显示动态显示信号封锁犯规报警AbstractResponder links often appear in the race, sports and entertainment activities, in activities, answer in a lively and educational forms and methods, it way through the Responder and will answer participants and the audience's interest aroused, and can in a short time,to increase scientific knowledge and life knowledge.In order to match activities, accurate, fair and visually determine the first answer in person, usually a Responder, via digital display, lighting and sound and other means to direct the First Responder, and to answer in person, namely classification function.Therefore, research intelligence Responder has strong practical significance.The design of the EDA development platform FPGA using Quartus Ⅱ7.2 based software design and VHDL languages, for the system requirements analysis, system of overall planning, design and top-level documentation of each module, design and implement a game of intelligence Responder functionThese include: First Responder identification function; answer in scoring function; answer in and answer the countdown function; foul alarm function as well as scores, time, station number display.Therefore, this simple circuit design, reliability, high operation speed characteristics.With the college laboratory boxes and other equipment increased, we can consider the design to extend the functionality of answering device, extending a more comprehensive intelligence functions Responder.Key Words:Four people vie to answer first Digital demonstration Dynamic demonstration Signal blockade Violates a regulation the warning目录目录 (7)第1章绪论 (9)1.1 设计研究的相关背景 (9)1.2 设计研究的重要性 (9)1.3 国内外研究现状 (10)第2章实现工具简介 (11)2.1 FPGA简介 (11)2.2 QuartusⅡ的概况 (12)2.3 硬件描述语言的概述 (13)第3章系统软件 (15)3.1 设计任务 (15)3.1.1 方案拟定 (15)3.1.2 模块的划分 (17)3.2 抢答器鉴别模块 (17)3.2.1 抢答鉴别模块VHDL程序设计关键代码 (17)3.2.2 抢答鉴别模块元件图 (17)3.2.3 抢答鉴别模块仿真 (18)3.3 抢答信号输出模块 (18)3.3.1 抢答信号输出模块VHDL程序设计关键代码 (18)3.3.2 抢答信号输出模块元件图 (18)3.3.3 抢答信号输出模块仿真 (19)3.4 抢答计时模块 (19)3.4.1 抢答计时模块VHDL程序设计关键代码 (19)3.4.2 抢答计时模块元件图 (19)3.4.3 抢答计时模块仿真 (20)3.5 答题计时模块 (20)3.5.1 答题计时模块VHDL程序设计关键代码 (20)3.5.2 答题计时模块元件图 (21)3.5.3 答题计时模块仿真 (21)3.6 防抖动电路模块 (22)3.6.1 防抖动电路模块VHDL程序设计关键代码 (22)3.6.2 防抖动模块元件图 (23)3.6.3 防抖动模块仿真 (23)3.7 抢答计分模块 (24)3.7.1 抢答计分模块VHDL程序设计关键代码 (24)3.7.2 抢答计分模块元件图 (25)3.7.3 抢答计分模块仿真 (26)3.8 分频模块 (26)3.8.1 分频模块VHDL程序设计关键代码 (27)3.8.2 分频模块元件图 (27)3.8.3 分频模块仿真 (27)3.9 抢答显示模块 (28)3.9.1 抢答显示模块VHDL程序设计关键代码 (28)3.9.2 抢答显示模块元件图 (29)3.9.3 抢答显示模块仿真 (29)3.10 抢答报警模块 (30)3.10.1 抢答报警模块VHDL程序设计关键代码 (30)3.10.2 抢答报警模块元件图 (30)3.10.3 抢答报警模块仿真 (30)3.11 答题报警模块 (31)3.11.1 答题报警模块VHDL程序设计关键代码 (31)3.11.2 答题报警模块元件图 (31)3.11.3 答题报警模块仿真 (32)3.12 顶层模块 (32)3.12.1 顶层模块电路图 (33)3.12.2 顶层模块元件图 (33)3.12.2 顶层模块仿真 (34)第4章硬件环境及调试过程 (35)4.1 芯片介绍 (35)4.2 硬件实现 (35)4.2.1 选择芯片 (35)4.2.2 引脚锁定 (36)4.2.3 下载到硬件环境 (38)第5章总结及完善 (41)参考文献 (42)致谢 (43)附录A 英文资料翻译 (44)英文原文 (44)Building Programmable Automation Controllers with LabVIEW FPGA (44)中文译文 (49)使用LabVIEW FPGA(现场可编程门阵列)模块开发可编程自动化控制器 (49)附录B 源代码 (53)第1章绪论1.1 设计研究的相关背景抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观的分辨出最先获得发言权的选手。
用VerilogHDL编写四路抢答器

always@(*) begin case(qiang_da) 1:bian_ma=3'b001; 2:bian_ma=3'b010; 4:bian_ma=3'b011; 8:bian_ma=3'b100; default:bian_ma=3'b000; endcase end
assign suo=(~bian_ma_cun[0])&(~bian_ma_cun[1])&(~bian_ma_cun [2]);
assign suo_1=suo&fankui;
always@(*) begin if(qing_ling==1) bian_ma_cun<=3'b000; else if(suo_1==0) bian_ma_cun<=bian_ቤተ መጻሕፍቲ ባይዱa_cun; else bian_ma_cun<=bian_ma; end
output wire [6:0]a_to_g; output wire [3:0]A_TO_D; input wire clk;//50MHz时钟 wire [3:0]qian; wire [3:0]bai; wire [2:0]shi; wire [2:0]ge; wire cp;//1s时钟 input wire [3:0]qiang_da; input button; wire suo_1; wire [2:0]bian_ma_cun; wire fankui; output wire xuan; shumaguan shumaguan0(a_to_g,A_TO_D,clk,qian,bai,shi,ge); cp_1s cp_1s0(clk,cp); xuan_shou xuan_shou0(qiang_da,button,suo_1,bian_ma_cun,fankui); wei_xuan wei_xuan0(bian_ma_cun,xuan,shi,ge); fuwei_kongzhi fuwei_kongzhi0(button,xuan); jishu_kongzhi jishu_kongzhi0(bai,qian,cp,suo_1,xuan,fankui); endmodule
数字电子技术实验报告——基于FGPA的4位智能抢答器(verilog HDL)

基于FPGA的4位智能抢答器一、设计任务要求基于E DA/SOPC 系统开发平台,运用Q uartusⅡ可编程逻辑器件开发软件,设计一个4位智能抢答器,在开发箱上,本系统使用频率为1000 赫兹的时钟脉冲。
要求如下:1、可以同时供4名选手抢答,其编号分别为1、2、3、4,各用抢答按键S1、S2、S3、S4,按键编号与选手编号对应。
主持人设置有一个“开始”按键S5,一个“复位”按键S6,用于控制抢答的开始和系统的复位;各个按键按下为“0”,弹起为“1”;2、系统上电和按下“复位”按键后4位数码管显示“0000”,此时只有“开始”按键有效,其他按键不起作用;3、当主持人按下“开始”按键后,开始计时,数码管左边两位显示计时的时间,单位为“秒”;如果有选手按下抢答按键,定时器停止工作,数码管显示器上左边两个数码管显示抢答时刻的时间;选手编号立即锁存并显示在右边的两个数码管上,同时封锁输入电路,禁止其他选手抢答;此状态一直保持到主持人将系统复位为止;4、抢答的有效时间为10 秒,如果定时抢答的时间已到而没有选手抢答,本次抢答无效,封锁输入电路,禁止抢答,数码管左边显示“10”,右边显示“00”;此状态一直保持到主持人将系统复位为止;5、附加提高:在主持人未按下开始按键时,如果有人抢答则犯规,在数码管上右边两位闪烁犯规选手的编号,闪烁频率为0.5H Z,左边两位显示“00”;此状态一直保持到主持人将系统复位为止。
二、设计步骤本次设计主要采用V erilog HDL 语言,总体编程思路采用模块化设计方式,主要分为3 个模块,一个主控制及按键输入模块,一个计时显示模块,一个抢答组号显示模块,分别对这3个子模块进行独立编程设计,编译仿真通过并生成元件,在顶层使用原理图或者Verilog HDL 语言的方式将3个模块连接起来完成整个设计。
锁定管脚并编译仿真通过,下载到开发箱进行测试。
三、模块设计思路对于这个任务来说,计时显示模块和抢答组号显示模块的模块并不复杂,复杂的模块是主控制及按键输入模块,所以我决定再将主控制模块拆分成两个小的模块——按键输入模块、按键输入判断输出模块。
基于FPGA的四路抢答器设计

摘要本文介绍了以FPGA为基础的四路抢答器的设计,此次设计是一个有4组抢答输入,并具有抢答计时控制,按键消抖以及积分显示等功能的通用型抢答器。
主持人有4个按键控制,可以进行开始抢答,对各抢答小组成绩进行相应加减操作以及所有积分重置。
此次设计程序使用verilog语言编写,并且使用modelsim进行相关仿真,最后在FPGA开发板上烧录程序进行实际操作演示实现了相应功能,达到了此次设计的目的。
本设计采用FPGA 来做增强了时序控制的灵活性,同时由于FPGA的IO端口资源丰富,可以再本设计基础上稍加修改可以重复设计出具有多组输入的抢答器。
关键字:按键消抖;显示;仿真;四路抢答;AbstractIn this paper, the design of four channel responder based on FPGA is proposed. The design contains four channel input, and also it has timing function, button-stop-shaking function, score display function. And the result of the design is a universal responder. The host has four buttons to control, in order to start response, add or sub the scores for each group and clear all group scores. The design program uses verilog language to write software. And modelsim is used to simulate the function on computer. At last the actual design results are demonstrated on the FPGA development board, and the functions are well veified. The result achieves the purpose of the design. The design uses FPGA to enhance the flexibility of timing control. At the same time because of IO port resoures in FPGA are much rich, if you want to design more channels responder, you just only repeat design on the basic of the design which is slightly modified.Keywords: button-stop-shaking; display; simulate; four channel responder;目录1引言 (4)2FPGA原理及其相关工具软件的介绍 (4)2.1FPGA开发过程与应用 (4)2.1.1FPGA发展历程及现状 (5)2.1.2FPGA工作原理 (5)2.1.3FPGA开发流程 (5)2.2Quartus II软件 (6)2.3Simulink软件 (7)2.3.1代码仿真 (7)2.3.2门级仿真和时序仿真 (8)3实验步骤及仿真调试结果 (8)3.1功能描述及设计架构 (8)3.2抢答器程序流程图和各模块软件代码分析 (9)3.2.1抢答器程序结构及主程序流程图 (9)3.2.2主控制及按键输入模块 (11)3.2.3计时模块 (13)3.2.4BCD显示模块 (13)3.3顶层模块连线及开发板硬件配置 (14)3.4modelsim仿真 (18)4结论 (20)谢辞.............................................................................................................. 错误!未定义书签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
moduleqiangda4(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=32'b0;reg Buzzer;reg score=4’hf;//分数显示寄存器//配置寄存器,EnFlat是表明开始抢答的标志位reg EnFlat=1'b0;//BuClk是蜂鸣器的标志位reg BuClk=1'b0;//BuL是做蜂鸣器的延时用reg [0:7]BuL=8'd0;//抢答选手标志位reg answer=3’d0;//各组分数标志位reg score1=4’d5;reg score2=4’d5;reg score3=4’d5;reg score4=4’d5;//------------初始化模块---------------always @ (posedge clk)//捕捉时钟begin//初始化各按键并开始抢答beginif(inputEn==1'b0)begin//初始化各个标志位和参数EnFlat=1'b1;//倒计时开始时8个Led灯全亮Led1=8'b11111111;//组号显示静态数码管(数码管为共阳极)的控制端,有8位Led2=8'b11111111;//分数显示数码管控制端Led3=8'b11111111;//蜂鸣器标志位BuClk=1'b0;//蜂鸣器的控制管脚,低电平为发声音Buzzer=1'b1;endend//--------抢答模块-------beginif(EnFlat==1'b1)begin//如果按键1按下if(inputL1==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;//选手标志位改变,用于加减分数模块answer=3’d1;//静态数码管显示序号'1' ,及显示选手对应的组号Led2=8'hf9;//指示蜂鸣器发声BuClk=1'b1;end//如果按键2按下else if(inputL2==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3’d2;Led2=8'ha4;BuClk=1'b1;end//如果按键3按下else if(inputL3==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3’d3;Led2=8'hb0;BuClk=1'b1;end//如果按键4按下else if(inputL4==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3’d4;Led2=8'h99;BuClk=1'b1;endendend//-------------------加减分数模块----------------//第一组加减分if(answer ==3’d1)beginif(add)score1=score1+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score1=score1-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score1;//把第一组的分数赋值给分数寄存器end//第二组加减分if(answer ==3’d2)beginif(add)score2=score2+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score2=score2-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score2;end//第三组加减分if(answer ==3’d3)beginif(add)score3=score3+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score3=score3-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score3;end//第四组加减分if(answer ==3’d4)beginif(add)score4=score4+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score4=score4-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score4;end//-----------------倒计时模块--------------------beginif(EnFlat==1'b1)beginif(cnt!=32'd4*******)//计时实现1HZ分频cnt=cnt+32'd1;elsebegincnt=32'd0;Led1=8'b11111111<<1'b1;//Led1左移一个单位,实现一秒的倒计时endendif(Led1==8'b0)//倒计时结束还没有按键按下,则抢答停止且蜂鸣器响EnFlat=1'b0;BuClk=1'b1;end//----------蜂鸣器模块-----------------//当蜂鸣器标志位置1时//进入此蜂鸣器处理程序beginif(BuClk==1'b1)begin//蜂鸣器发声Buzzer=1'b0;//延时变量加1BuL = BuL + 8'd1;//当到达延时的时间时关掉蜂鸣器if(BuL==8'd255)begin//延时变量复位BuL=8'd0;//蜂鸣器标志位复位BuClk=1'b0;//蜂鸣器停掉Buzzer=1'b1;endendend//-------------重置模块----------------//按下clr键以后各组参数重置,整个比赛重新开始if(clr)begin//重置各个标志位和参数EnFlat=1'b1;//重置时8个Led灯全亮Led1=8'b11111111;//选手号静态数码管的控制端,有8位Led2=8'b11111111;//选手分数显示数码管重置Led3=8'b11111111;//蜂鸣器标志位重置BuClk=1'b0;//蜂鸣器的控制管脚重置,低电平为发声音Buzzer=1'b1;//各组分数重置score1=4’d5;score2=4’d5;score3=4’d5;score4=4’d5;//分数显示寄存器重置answer=8’hff;end//-----------数码显示模块------------begincase(score)4'h0: Led3 = 8'hc0; //显示04'h1: Led3 = 8'hf9; //显示14'h2: Led3 = 8'ha4; //显示24'h3: Led3 = 8'hb0; //显示34'h4: Led3 = 8'h99; //显示44'h5: Led3 = 8'h92; //显示54'h6: Led3 = 8'h82; //显示64'h7: Led3 = 8'hf8; //显示74'h8: Led3 = 8'h80; //显示84'h9: Led3 = 8'h90; //显示94'ha: Led3 = 8'hbf; //显示-default:Led3 = 8'hff; //不显示endcaseendendendmodule。