verilog-HDL抢答器(两个程序)

合集下载

抢答器(-Verilog-HDL实现)

抢答器(-Verilog-HDL实现)

抢答器(-Verilog-HDL实现)桂林电子科技大学信息科技学院《EDA技术与应用》实训报告学号0952100110姓名赵万里指导教师:江国强杨艺敏2011年04月20日实训题目:智能电子抢答器1.系统设计1.1 设计要求1.1.1 设计任务设计并制作一台智能电子抢答器。

1.1.2 技术要求①用EDA实训仪的I/O设备和PLD芯片实现智能电子抢答器的设计。

②智能电子抢答器可容纳4组参赛者抢答,每组设一个抢答钮。

③电路具有第一抢答信号的鉴别和锁存功能。

在主持人将复位按钮按下后开始抢答,并用EDA实训仪上的八段数码管显示抢答者的序号,同时扬声器发出“嘟嘟”的响声,并维持3秒钟,此时电路自锁,不再接受其他选手的抢答信号。

④设计一个计分电路,每组在开始时设置为100分,抢答后由主持人计分,答对一次加10分,答错一次减10分。

⑤设计一个犯规电路,对提前抢答和超时抢答者鸣喇叭示警,并显示犯规的组别序号。

1.2 方案比较(1) 设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮。

(2) 电路具有第一抢答信号的鉴别和锁存功能。

在主持人按下复位按钮后,若参加者按抢答开关,则该组指示灯亮。

此时,电路应具备自锁功能,使别组的抢答开关不起作用。

(3)自锁后,用八段数码管显示抢答者的序号,同时指示灯亮。

(4) 设置计分电路。

每组在开始时预置成100,抢答后由主持人计分,答对一次加10,否则减10分。

(5)电路具有淘汰功能,当每组的100分减少到0时,该组被淘汰,以后每次抢答,该组抢答按钮都无效。

1.3 方案论证1.3.1 总体思路总体分为四部分:倒计时模块、计分模块、抢答模块和分屏显示模块。

倒计时模块用一个20000000分频。

产生一个进位,连接一个30的减法计数器构成。

计分模块中分为两部分,一部分用于计分,另一部分用于处理计数器的进制问题,当加到A时自动向前进位,并且把A变为0。

当减少到F时,向前借位,并且把F变为9。

Verilog数字抢答器

Verilog数字抢答器

数字抢答器设计与制作一、设计任务设计并制作一个数字抢答器。

二、设计要求1.抢答器同时供9名选手或9个代表队比赛,分别用9个按钮SW1 ~ SW9表示。

2.设置一个系统清除和抢答控制开关S,该开关由主持人控制。

3.抢答器具有锁存与显示功能。

即选手按动按钮,锁存相应的编号,并在LCD数码管上显示。

选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

三、方案论证与总体设计1、提出方案。

本设计是一个数字电路设计题,可提出两种方案。

方案Ι由COMS系列数字集成电路:CD4543、CD4071、CD4069及少数外围电路组成。

方案Π由TTL系列数字集成电路:74LS248、74LS04、74LS32、74LS116及少数外围电路组成。

两种电路原理方框图一样(见图一),其工作原理为:接通电源后,主持人将开关拨到”清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置于“开始”状态,抢答器开始工作。

选手在抢答时,抢答器完成:优先判断、编号锁存、编号显示。

当一轮抢答之后,如果再次抢答必须由主持人再次操作”清除”和”开始”状态开关。

图一、电路原理方框图2、方案比较。

两种方案的设计原理相同,只是用的集成电路不同。

TTL 双极器件、电源电压5V、速度快数ns、功耗大mA级、负载力大,负载以mA计,不用端多半可不做处理。

CMOS 单级器件、电源电压可到15V、速度慢几百nS,功耗低省电uA级、负载力小以容性负载计,不用端必须处理。

设计便携式和电池供电的设备多用CMOS芯片,对速度要求较高的最好选用TTL中的74SXXX系列。

本电路对速度要求不大,选用CMOS型数字集成块来组成抢答器。

四、单元电路设计1.图中左上方所示为9路开关阵列电路,从图上可以看出其结构非常简单。

电路中,R1为下拉和限流电阻。

R2、R3、R4、R5用于分压,其中R1的阻值必须比R2~R5都小,当任一开关按下时,相应的输出为高电平,否则为低电平。

数电实验考试verilogHDL语言及参考程序

数电实验考试verilogHDL语言及参考程序

题目一:表决器电路设计一、设计任务及原理:所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。

七人表决器顾名思义就是由七个人来投票,当同意的票数大于或者等于4时,则认为同意;反之,当否决的票数大于或者等于4时,则认为不同意。

实验中用7个拨动开关来表示七个人,当对应的拨动开关输入为’T时,表示此人同意;否则若拨动开关输入为’0’,则表示此人反对。

表决的结果用一个LEDBI ZK,若表决的结\j Z I I % j 1果为同意,则LEfM点亮;否则,如果表决的结果为反对,则LEE会被点亮。

同时, 。

j I I | ,| I | J I | ;数码管上显示通过的票数。

二、具体要求:本实验就是利用实验系统中的拨动开关模块和LEtM块以及数码管模块来实现一个简单的七人表决器的功能。

拨动升关模块中的K1〜K京示七个人,当拨动开关输入为’T时,表示对应的人投同意票,否则当拨动开关输入为’0’时,表示对r- ■ I 、\应的人投反对票;LECM块中LED俵示七人表决的结果,当LED1点亮时,表示此行为通过表决;否则当LEDim灭时,表示此行为未通过表决。

同时通过的票数在数码管上显示出来。

在此实验中数码管、LED拨动开使用模块对应FPGA 说明关与FPGA]连接电路和管脚连接信号管脚在以前的实验中都做了详细说明,这里不在赘述。

端口名S1 按键开关R16 表示1号抢S2 按键开关S2 P14 表示2号抢答者S3 按键开关P16表示3号抢S3 答者S4 按键开关P15表示4号抢S4 答者S5 按键开关M15表示5号抢S5 答者S6 按键开关N16 表示6亏抢11 1 J1 1 ;S61 厂J f 二:;「1 \上答者S7 按键开关N15表示7号抢S7 答者DOUT0 LE酿块D1 L14 表决结果1 %、"'i亮为通过LEDAG0 数码管模N4 抢答成功寸11块点者LEDAG1 数码管模G4 号码显示块晦LEDAG2 数码管模H4块眼参考答案:moduleliu(s,dout0,ledag);input[6:0]s;outputdout0;output[6:0]ledag;reg[6:0]led;reg[2:0]k;regclk_en;regdout;always@(s)begink<=s[1]+s[2]+s[3]+s[4]+s[5]+s[6]+s[0];if(k>=4)begindout<=1;end'l ■J- I Ielsebegindout<=0;endendalways@(k)begincase(k)3'd0:led<=7'b0111111;3'd1:led<=7'b0000110;3'd2:led<=7'b1011011;3'd3:led<=7'b1001111;3'd4:led<=7'b1100110;3'd5:led<=7'b1101101;3'd6:led<=7'b1111101;3'd7:led<=7'b0000111;default:led<=7'b0000000;endcaseend11 i > i./*■♦ W 1I • I 'h 'y -I / assign\L/z '!I r * ibf 7匕, \i / |ledag=led;assign\ 丁\dout0=dout;endmodulef"- 1 ■ L"j题目二:数字电子实验设计题目:彩灯循环电路设计E \\ ' x\ji一、设计任务及原理:所谓彩灯循环就是对于一组彩灯(16盏),通过不同的工作模式可按照一定的规律来点亮或者熄灭。

VHDL程序设计实验指导书3-两人抢答器1

VHDL程序设计实验指导书3-两人抢答器1

实验指导书
实验项目名称:抢答器的VHDL设计
实验项目性质:普通实验
所属课程名称:VHDL程序设计实验
实验计划学时:4
一、实验目的
掌握VHDL程序设计方法
二、实验内容和要求
设计一个2人抢答器。

要求如下:
1、两人抢答,先抢为有效,用发光二极管显示是否抢到优先答题权;
2、每人2位计分显示,答错了不加分,答对了可加10分、20分、30
分;
3、每题结束后,裁判按复位键,可重新抢答下一题;
4、累计加分可由裁判随时清除。

附加功能:(可选)
设置一个30秒倒计时计数器并显示,在30秒内抢答才有效。

程序说明:
1、此程序主要由3部分组成,即抢答、加分、显示;。

2、当一人抢到优先答题权,发光二极管亮,另一人再按按键无效。


题结束后,裁判按复位键,方可再次抢答;
3、每人有2个数码管显示累加计分情况,分数分为3档,用按键来区
别。

在软件工具平台上,进行VHDL语言的各模块编程输入、编译实现和仿真验证。

三、实验主要仪器设备和材料
计算机
四、实验方法、步骤及结构测试
1系统设计与方案论证
2系统功能描述
3设计
4用VHDL文本输入方式,进行各个模块的设计输入、编译和仿真分块单独调试仿真
5总结
五、实验报告要求
写清楚设计思想,附上相应源程序和仿真图
六、思考题
无。

基于Verilog HDL的数字竞赛抢答器

基于Verilog HDL的数字竞赛抢答器

欽件打夜场宗用2021年第2期售廉与电atChina Computer & Communication 基于Verilog HDL 的数字竞赛抢答器孙阔王颖*(大连理工大学城市学院电子与自动化学院,辽宁大连116024)摘 要:数字抢答器拥有广阔的市场前景,在电视节目、各类高校的比赛中都可以使用数字抢答器。

本文基于 Verilong HDL 设计了一种数字抢答器,该数字抢答器以6个参赛组为基础实现其他功能,具有一定的审场价值.关键词:Verilog HDL;数字抢答器;FPGA中图分类号:TP311.52 文献标识码:A 文章编号:1003-9767 (2021) 02-112-02Digital Competition Answerer Based on Verilog HDLSUN Kuo, WANG Ying*(School of Electronics and Automation, City College, Dalian University of Technology, Dalian Liaoning 116024, China)Abstract : Digital answering devices have broad market prospects, and digital answering devices can be used in TV programs and competitions in various colleges and universities. This paper designs a digital answering device based, on Verilong HDL ・ The digital answering device implements other functions based on 6 participating groups and has a certain market value.Keywords : Verilog HDL; digital answerer; FPGA0引言近年来,随着科学技术的不断发展,抢答器的功能以及实现方法也越来越多,在竞赛中使用抢答器是一种很流行的 比赛方式,深受比赛各方的青睐冋。

verilog_hdl_fpga抢答器

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 工具之间的界面。

智能抢答器的Verilog设计及Quartus_仿真

智能抢答器的Verilog设计及Quartus_仿真

本文用 Verilog HDL 设计实现一个具有四组输入的, 能够显示抢 答倒计时时间和抢答组数等信息,并且对抢答后各组的成绩进行处理 并显示的抢答器。利用 Verilog HDL 硬件描述语言设计抢答器,使抢答 器 硬 件 电 路 更 加 简 单 ,抢 答 器 时 序 控 制 灵 活 ;利 用 FPGA I / O 端 口 可 自定义特点,在本文设计智能抢答器基础上,增加抢答器的按键阵列,
1 系统设计
1.1 抢答器系统的功能 抢答器具体功能如下:(1)可同时进行四组人的抢答。 (2)设置一个
抢答控制开关,只有按下开 始 按 钮 才 能 抢 答 ;(3)抢 答 器 具 有 抢 答 倒 计 时功能,一次抢答的倒计时时间为 60s。 (4)抢 答 器 具 有 锁 存 与 显 示 功 能。 即选手按动按钮 ,锁存相应的组号 ,显示组号 。 抢答实行优先锁存 , 优先抢答选手的相应组号和成绩一直保持到下一轮抢答开始 。(5)参赛 选手在设定的抢答有效时间内进行抢答,抢答有效,如果抢答延迟时 间已到,无人抢答,本次抢答无效,系统回到开始前的等待状态。 (6)当 抢答有效后,可以根据抢答选手回答问题正确与否对选手相应组数的 成绩进行加分操作。
中央空调系统是按天气最热、负荷最大设计的,并留有 10%-20% 的余量,根据负载变化随之增减,但冷冻水泵和冷却水泵不能随负载 变化作出相应的调节,冷冻水、冷却水几乎长期在大流量、小温差的状 态下运行,造成能量的极大浪费。
3 节能改造的可行性分析
变频调速性能好,调速范围大,静态稳定性好,运行效率高。 根据 冷却水温选择冷却塔开启的台数,容易造成能源浪费,冷却水的温度 由温度传感器传送信号至 PLC,由 PLC 计算后,对冷却塔风机开启,以 28℃为基数,温度每上 升 2℃开 启 两 台 散 热 风 机 ,每 下 降 2℃延 时 5 分 钟后停止 2 台风机,以达到节能效果。

基于Verilog HDL语言的新型抢答器设计

基于Verilog HDL语言的新型抢答器设计

基于Verilog HDL语言的新型抢答器设计
周奇;王晓春;王立伟;王延群
【期刊名称】《现代仪器与医疗》
【年(卷),期】2008(014)005
【摘要】本文提出一种基于Verilog HDL语言的抢答器设计方法.该设计实现有三组输入,具有抢答倒计时功能,对各抢答小组成绩进行加减操作并显示的抢答器.文中介绍抢答器设计架构、硬件电路和控制程序的设计方法.该抢答器采用Verilog HDL语言模块化和层次化的思想,使设计十分简单,能够广泛应用于各种竞赛中.【总页数】4页(P43-46)
【作者】周奇;王晓春;王立伟;王延群
【作者单位】中国医学科学院生物医学工程研究所,天津,300192;中国医学科学院生物医学工程研究所,天津,300192;中国医学科学院生物医学工程研究所,天
津,300192;中国医学科学院生物医学工程研究所,天津,300192
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于Verilog HDL语言的全自动洗衣机控制器的设计与仿真 [J], 陈飞云
2.基于Verilog HDL语言的全自动洗衣机控制器的设计与仿真 [J], 陈飞云;
3.基于Verilog HDL语言的CAN总线控制器设计及验证 [J], 许莉娅;段帅君;李传南
4.基于Verilog HDL语言的复杂交通指标灯设计与实现 [J], 杨杨
5.基于Verilog HDL语言的一种奇偶校验码与极化码级联的编码器设计与仿真 [J], 彭逸飞
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、设计任务智力竞赛抢答器Verilog HDL要求有6位参赛者进行抢答,有六个抢答信号进行抢答。

当有抢答选手按下抢答键后系统能够快速准确的判断是那一组选手按下了抢答信号,由于系统比较小,速度比较快一般不会有同时按下的可能,所以只有六种状态,然后系统能够根据这六种状态进行适时的显示和提示。

当有选手按下以后就对抢答信号进行锁存,其他选手的输入无效。

然后就是对抢答进行时间限制了,根据设定的时间进行倒计时,当倒计时完成还没有人抢答的时候系统发出警报声音提示时间已经到了。

当有选手在主持人未按下抢答键抢答时视为超前抢答,系统显示该选手号,同时蜂鸣器响,该抢答无效。

还有清除复位键,抢答完成以后按复位键即可清除已有的状态。

通过Verilog HDL程序代码实现系统的各个功能。

二、设计目的与要求目的:理论联系实际,巩固和运用所学课程,提高分析、解决计算机技术实际问题的独立工作能力,培养学生正确的设计思想,严肃认真、实事求是的科学态度和勇于探索的创新精神。

通过对一个智力抢答器的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤,通过Verilog 程序的编写,进一步熟悉Verilog HDL 的语法知识;规范化训练学生撰写技术研究报告,提高书面表达能力。

要求:掌握FPGA设计系统的一般方法。

熟练掌握使用modelsim软件设计较复杂的数字逻辑电路。

培养学生独立分析问题和解决实际问题的能力。

三、课程设计的内容设计一抢答器,要求如下:(1)抢答台数为6;(2)具有抢答开始后20s倒计时,20秒倒计时后6人抢答显示超时,并报警;(3)能显示超前抢答台号并显示犯规报警;(4)系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各路抢答信号封锁,同时铃声响起,直至该路按键松开,显示牌显示该路抢答台号。

四、系统设计方案根据系统设计要求可知,系统的输入信号有:主持人按钮inputEn,各选手的抢答按钮分别是inputL1、inputL2、inputL3、inputL4,inputL5,inputL6,主持人和选手抢答按钮都是低电平有效,系统复位信号clr(高电平有效),系统时钟信号clk,系统的输出信号有:六个人抢答成功与否的指示灯控制信号输出口Led2,犯规抢答时报警器Buzzer(低电平有效)。

本系统应具有的功能有:能够准确的判断出是哪位抢答者,当主持人没按抢答时,有人抢答了则蜂鸣器报警,并显示该选手号,当主持人按了抢答键时有人抢答了,同时封锁抢答信号,其他选手抢答无效,不显示该选手号。

五、仿真过程与仿真结果仿真过程:使用ModelSim进行功能测试,首先在里面进行相应的设置,在工程文件夹下面会新建一个modelsim的文件夹,然后编写实现功能的程序和测试文件,最后保存编译执行就可以进行功能仿真了。

仿真结果:结果分析与讨论:可以看到0时刻系统复位状态,2s时2号超前抢答(inputEn 为高电平,inputL2为低电平),系统显示2蜂鸣器并犯规报警(Buzzer为低电平),8s时系统复位状态,12s时4号选手先抢答成功(inputL4为低电平)显示4,14s时3号选手后抢答,不显示3,20s时系统复位。

六、总结通过本次合成设计,我又一遍熟悉了Verilog HDL语言进行建模,并且通过实际操作学会了怎么使用Modelsim这个软件来完成一个完整的课程设计。

以及对基于FPGA的系统开发流程有了一个整体认识,我越来越认识到一点,编程对项目实现有着至关重要的,我们在硬件开发的过程中更应该重视编程,将编程看作是完善开发的不可缺少的一部分。

虽然题目简单,但这也磨练了我的意志。

第一次做的太复杂了,然后一次次修改,做成最简单功能的。

在一次次的反复设计、论证和测试中,提高了逻辑分析能力、全面分析问题的能力以及发现问题、解决问题的能力。

通过对各方面资料的收集,我的知识面也进一步拓宽了。

同时,我也发现了自己的不足,像语言表达还比较差,不能更清楚地表达自己的意思,逻辑分析能力和编程能力有待提高,有些预先的想法都未能实现。

在系统的结构设计上也还有很长的路需要走,这是需要时间去积累的。

在今后的学习中我还得加以改进。

七、程序系统主要Verilog HDL源程序:module QiangDaQi(clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led2,Buzze r); //一开始声明有哪些端口input clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6;output [0:7]Led2;//Led2显示选手号output Buzzer;//低电平时蜂鸣器发出声音reg EnFlat=1'b0;//EnFlat为高电平时开始抢答reg [0:2]Led2=3'd0;reg Buzzer=1'b1;always @ (posedge clk)//时钟上升沿beginif(inputEn==1)//如果主持人没按按钮就有人抢答beginif(inputL1==0)begin Led2=3'd1;Buzzer=1'b0;endif(inputL2==0)begin Led2=3'd2;Buzzer=1'b0;endif(inputL3==0)begin Led2=3'd3;Buzzer=1'b0;endif(inputL4==0)begin Led2=3'd4;Buzzer=1'b0;endif(inputL5==0)begin Led2=3'd5;Buzzer=1'b0;endif(inputL6==0)begin Led2=3'd6;Buzzer=1'b0;endendif(inputEn==1'b0)//为低电平时表示主持人按下抢答按钮开始抢答beginEnFlat=1'b1;if(EnFlat==1'b1)beginif(inputL1==1'b0)//一号选手抢答beginLed2=3'd1;EnFlat=1'b0;//为低电平禁止其他选手抢答Buzzer=1'b1;endelse //一开始没加else发现仿真结果随着输入数据变化而变化 if(inputL2==1'b0)//二号选手抢答beginLed2=3'd2;EnFlat=1'b0;Buzzer=1'b0;endelseif(inputL3==1'b0)//三号选手抢答beginLed2=3'd3;EnFlat=1'b0;//为低电平禁止其他选手抢答Buzzer=1'b1;endelseif(inputL4==1'b0)//四号选手抢答beginLed2=3'd4;EnFlat=1'b0;//为低电平禁止其他选手抢答Buzzer=1'b1;endelseif(inputL5==1'b0)//五号选手抢答beginLed2=3'd5;EnFlat=1'b0;//为低电平禁止其他选手抢答Buzzer=1'b1;endelseif(inputL6==1'b0)//六号选手抢答beginLed2=3'd6;EnFlat=1'b0;//为低电平禁止其他选手抢答Buzzer=1'b1;endendendif(clr)//按下clr键以后各组参数重置,整个比赛重新开始beginEnFlat=1'b0;Led2=3'd0;//为低电平时,选手前的灯点亮Buzzer=1'b1;//为高电平不响endendendmodule测试程序`timescale 1s/1smodule qiangdaqi_test();reg clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6;//输入口wire [0:7]Led2;//Led2显示选手号wire Buzzer;//低电平时蜂鸣器发出声音QiangDaQiu1(clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led2,Buzzer); initialbegin#0clk=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;//四号选手先抢答显示4#2 inputL3=0;//三号选手后抢答不显示3#4 clr=1;inputEn=1;inputL3=1;inputL4=1;#2 clr=0;endalways #1 clk=~clk;endmodule程序二module QiangDaQi(clk,clr,add,stu,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led1,L ed2,Led3,Buzzer);//一开始声明有哪些端口inputclk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,add,stu;//输入口output [0:5]Led1;//对应参赛选手前的灯output [0:7]Led2,Led3;//Led2显示选手号Led3显示选手分数output Buzzer;//低电平时蜂鸣器发出声音reg EnFlat=1'b1;//EnFlat为高电平时开始抢答reg BuClk=1'b0;//为高电平时进入蜂鸣器处理程序//reg add,stu;//add答题正确加一分stu答题错误减一分//reg clr=0;//重置键reg [0:5]Led1=6'b111111;reg [0:2] answer=3'd0;reg[0:3] score=4'd0,score1=4'd0,score2=4'd0;reg[0:3] score3=4'd0,score4=4'd0,score5=4'd0,score6=4'd0;//各选手分数计算reg Buzzer=1;reg [0:4] daojishi=5'd20;//用于产生20s倒计时reg [0:7]Led2=8'b,Led3=8'b;always @ (posedge clk)//时钟上升沿beginif(inputEn==1)//如果主持人没按按钮就有人抢答beginif(inputL1==0)begin Led1=6'b111110;answer=3'd1;BuClk=1'b1;endif(inputL2==0)begin Led2=6'b111101;answer=3'd2;BuClk=1'b1;endif(inputL3==0)begin Led2=6'b111011;answer=3'd3;BuClk=1'b1;endif(inputL4==0)begin Led2=6'b110111;answer=3'd4;BuClk=1'b1;endif(inputL5==0)begin Led2=6'b101111;answer=3'd5;BuClk=1'b1;endif(inputL6==0)begin Led2=6'b011111;answer=3'd6;BuClk=1'b1;endendif(inputEn==1'b0)//为低电平时表示主持人按下抢答按钮开始抢答beginLed1=6'b111111;//为低电平时,选手前的灯点亮BuClk=1'b0;Buzzer=1'b1;//为高电平不响endif(EnFlat==1'b1)beginbeginif(inputL1==1'b0)//一号选手抢答beginEnFlat=1'b0;//为低电平禁止其他选手抢答answer=3'd1;//为高电平时转到对应选手加减分程序中去BuClk=1'b1;//转到蜂鸣器程序endif(inputL2==1'b0)//二号选手抢答beginEnFlat=1'b0;answer=3'd2;BuClk=1'b1;endif(inputL3==1'b0)//三号选手抢答beginEnFlat=1'b0;answer=3'd3;BuClk=1'b1;endif(inputL4==1'b0)//四号选手抢答beginEnFlat=1'b0;answer=3'd4;BuClk=1'b1;endif(inputL5==1'b0)//五号选手抢答beginEnFlat=1'b0;answer=3'd5;BuClk=1'b1;endif(inputL6==1'b0)//六号选手抢答beginEnFlat=1'b0;answer=3'd6;BuClk=1'b1;endendbeginif(daojishi!=5'd0)//用于1Hz信号daojishi=daojishi-1;else//倒计时结束抢答器还没按下则抢答停止且蜂鸣器响 begindaojishi=5'd20;EnFlat=1'b0;BuClk=1'b1;endendbeginif(BuClk==1'b1)//当蜂鸣器标志为1时Buzzer=1'b0;//蜂鸣器发声endbeginif(answer ==3'd1)//第一组加减分beginLed1=6'b111110;//点亮该选手前的LED灯Led2=8'hf9;//选手号数码管显示1if(add)score1=score1+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif((stu||inputEn)&&(score1!=0))score1=score1-1;//当主持人判定选手的回答错误时,按下stu键进行加分操作else score1=0;score=score1;//把第一组的分数赋值给分数寄存器endif(answer ==3'd2)//第二组加减分beginLed1=6'b111101;Led2=8'ha4;if(add)score2=score2+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif((stu||inputEn)&&(score2!=0))score2=score2-1;//当主持人判定选手的回答错误时,按下stu键进行加分操作else score2=0;score=score2;//把第一组的分数赋值给分数寄存器endif(answer ==3'd3)//第三组加减分beginLed1=6'b111011;Led2=8'hb0;if(add)score3=score3+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif((stu||inputEn)&&(score3!=0))score3=score3-1;//当主持人判定选手的回答错误时,按下stu键进行加分操作else score3=0;score=score3;//把第一组的分数赋值给分数寄存器endif(answer ==3'd4)//第四组加减分beginLed1=6'b110111;Led2=8'h99;if(add)score4=score4+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif((stu||inputEn)&&(score4!=0))score4=score4-1;//当主持人判定选手的回答错误时,按下stu键进行加分操作else score4=0;score=score4;//把第一组的分数赋值给分数寄存器endif(answer ==3'd5)//第五组加减分beginLed1=6'b101111;Led2=8'h92;if(add)score5=score5+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif((stu||inputEn)&&(score5!=0))score5=score5-1;//当主持人判定选手的回答错误时,按下stu键进行加分操作else score5=0;score=score5;//把第一组的分数赋值给分数寄存器endif(answer ==3'd6)//第六组加减分beginLed1=6'b011111;Led2=8'h82;if(add)score6=score6+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif((stu||inputEn)&&(score6!=0))score6=score6-1;//当主持人判定选手的回答错误时,按下stu键进行加分操作else score6=0;score=score6;//把第一组的分数赋值给分数寄存器endbegincase(score)//4'd0:Led3=8'hc0;4'd1:Led3=8'hf9;4'd2:Led3=8'ha4;4'd3:Led3=8'hb0;4'd4:Led3=8'h99;4'd5:Led3=8'h92;4'd6:Led3=8'h82;4'd7:Led3=8'hf8;4'd8:Led3=8'h80;4'd9:Led3=8'h90;default:Led3=8'hff;endcaseendendendif(clr)//按下clr键以后各组参数重置,整个比赛重新开始beginEnFlat=1'b1;daojishi=5'd20;Led1=6'b111111;//重置时六个Led全灭Led2=8'b;//熄灭选手号静态数码管Led3=8'b;//熄灭分数显示数码管BuClk=1'b0;//蜂鸣器标志位重置Buzzer=1'b1;//蜂鸣器控制管脚重置score=0;//score1=4'd0;score2=4'd0;score3=4'd0;//score4=4'd0;score5=4'd0;score6=4'd0;answer=3'd0;endendendmodule测试程序`timescale 1s/1smodule qiangdaqi_test();reg clk,clr,add,stu,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6; //reg clr;//重置键//reg add,stu;//add答题正确加一分stu答题错误减一分wire [0:5]Led1;//对应参赛选手前的灯wire [0:7]Led2,Led3;//Led2显示选手号Led3显示选手分数wire Buzzer;//低电平时蜂鸣器发出声音QiangDaQiu1(clk,clr,add,stu,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led1 ,Led2,Led3,Buzzer);initialbegin#0clk=1;add=0;stu=0;clr=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;input L5=1;inputL6=1;#2inputEn=0;inputL1=1;inputL2=0;inputL3=1;inputL4=1;inputL5=1;inputL6=1;add=1; #2clr=1;add=0;stu=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;i nputL6=1;#2 clr=0;#2inputEn=0;inputL1=1;inputL2=0;inputL3=1;inputL4=1;inputL5=1;inputL6=1;add=1; #1 inputL3=0;add=1;#2clr=1;add=0;stu=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;i nputL6=1;#2 clr=0;#2 inputEn=1;inputL1=1;inputL2=0;inputL3=1;inputL4=1;inputL5=1;inputL6=1; #2clr=1;add=0;stu=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;i nputL6=1;#2 clr=0;#2 inputEn=0;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;inputL6=1; #40 inputEn=0;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;inputL6=1; #2clr=1;add=0;stu=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;i nputL6=1;#2 clr=0;#2inputEn=0;inputL1=0;inputL2=1;inputL3=1;inputL4=1;inputL5=1;inputL6=1;add=1; #2clr=1;add=0;stu=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;i nputL6=1;#2 clr=0;#2inputEn=0;inputL1=0;inputL2=1;inputL3=1;inputL4=1;inputL5=1;inputL6=1;stu=1; #2clr=1;add=0;stu=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;i nputL6=1;#2 clr=0;endalways #1 clk=~clk;endmodule11。

相关文档
最新文档