VHDL语言四人抢答器

合集下载

vhdl课程设计四路抢答计时器设计大学毕设论文

vhdl课程设计四路抢答计时器设计大学毕设论文

《VHDL语言》课程设计报告四路抢答计时器班级:学号:姓名:第1章课程设计概述1.1设计目的本次设计的目的就是在掌握MAX+plus II实验开发系统的初步使用基础上,了解并掌握VHDL硬件描述语言的设计方法和思想,使自己能将已学过的数字电子系统设计、VHDL 程序设计等知识综合运用于电子系统的设计中,掌握运用VHDL 设计电子系统的流程和方法,加强和培养自己对电子系统的设计能力。

任务是通过二周的时间,基本掌握EDA的基本方法,熟悉一种EDA软件(MAX+plus II),并能利用EDA软件设计一个电子技术综合问题。

通过学习的VHDL语言结合电子电路的知识理论联系实际,掌握所学的课程知识,学习基本单元电路的综合设计应用通过对四路抢答计时器的设计,巩固和综合运用所学的课程,摆脱一维的思维模式,以多维并发的思路来完成VHDL 的程序设计。

目前市场上已有各种各样的抢答器, 但绝大多数是早期设计的, 以模拟电路、数字电路或者模拟电路与数字电路相结合的产品。

这部分抢答器已相当成熟, 但功能越多的电路相对来说就越复杂, 且成本偏高, 故障高, 显示方式简单( 有的甚至没有显示电路) , 无法判断提前抢按按钮的行为, 不便于电路升级换代。

而与非门和非门后的反馈信号的高电平作为解锁存,用555定时器的模型来倒计时,同时以脉冲信号来控制加法器和减法器来控制抢答过程中的计分,应用二极管和数码显示管为主要部件来设计扫描显示器则降低了其复杂性、高故障性以及显示方式简单的问题。

通过课程设计深入理解VHDL语言的精髓和掌握运用所学的知识,达到课程设计的目标。

1.2 设计内容通过VHDL程序设计一个4人参加的智力竞赛抢答计时器,当有某一参赛者首先按下抢答开关时,相应显示灯亮并伴有声响,此时抢答器不再接受其他输入信号。

电路具有回答问题时间控制功能。

要求回答问题时间小于等于100s(显示为0~99),时间显示采用倒计时方式。

当达到限定时间时,发出声响以示警告。

基于VHDL的四路智能抢答器

基于VHDL的四路智能抢答器

目录引言 (1)1.系统的设计要求 02.系统分析 02.1 系统构成 (2)2.2 系统实现过程 (2)3.具体模块设计 (3)3.1 鉴别功能 (3)3.2 锁存功能 (3)3.3 转换功能 (3)3.4 三选一功能 (3)3.5 倒计时功能 (4)3.6 片选功能 (4)3.7 显示功能 (4)3.8 整体结构电路图 (5)4.程序设计 04.1鉴别模块代码 (5)4.2 锁存器模块源代码 (6)4.3 模块源代码 (6)4.4 三选一模块源代码 (7)4.5 倒计时模块源代码 (7)4.6 片选模块源代码 (8)4.7 显示模块源代码 (9)4.8 顶层文件源代码 (9)5.运行结果与分析 (11)6.结束语 (13)参考文献 (14)引言随着现代社会的发展,抢答器被广泛的运用于很多的娱乐节目,其作用也是越来越大。

近年来,随着社会的迅猛发展,抢答器得到了广泛的运用。

很多的电视台都会播放一些娱乐节目,在节目过程中都会添加一些娱乐节目,尤其是互动性的竞争游戏,这样都会使用到抢答器,这样使得对抢答器的要求也越来越高,当然也更进一步体现了抢答器的价值。

结合这种的背景,结合一些娱乐节目的实际情况,并发出真正适合我们特点的智能显示控制系统已经成为当前的主要任务,智能控制的效果能直接影响到大家对此娱乐节目的认可,同时好的智能控制也能为大家带来很多方便。

通过对抢答器基本原理的了解,我们可以设计多路抢答器,让节目可以有更多得人参与。

同时我们可以全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。

1.系统的设计要求四路抢答器由鉴别模块、锁存器模块、转换模块、三选一模块、倒计时模块、片选模块和显示模块等模块的电路组成,显示电路、锁存器、转换电路将抢中选手的编号显示输出;主持人开关启动和鉴别电路;答题限时即倒计时电路,实现答题时间结束和答题完成报警。

基于vhdl四路智力抢答器完整版设计说明书

基于vhdl四路智力抢答器完整版设计说明书

1 绪论1.1 EDA技术的发展人类社会已进入到高度发达的信息化社会,信息社会的发展离不开电子产品的进步。

现代电子产品在性能提高、复杂度增大的同时,价格却一直呈下降趋势,而且产品更新换代的步伐也越来越快,实现这种进步的主要原因就是生产制造技术和电子设计技术的发展。

前者以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管;后者的核心就是EDA技术。

EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作:IC设计,电子电路设计以及PCB设计。

没有EDA技术的支持,想要完成上述超大规模集成电路的设计制造是不可想象的,但是面对当今飞速发展的电子产品市场,设计师需要更加实用、快捷的EDA工具,使用统一的集体化设计黄精,改变传统的设计思路,将精力集中到设计构想、方案比较和寻找优化设计等方面,需要以最快的速度,开发出性能优良、质量一流的电子产品,对EDA技术提出了更高的要求。

未来的EDA技术将在仿真、时序分析、集成电路自动测试、高速印刷版设计及开发操作平台的扩展等方面取得新的突破,向着功能强大、简单易学、使用方便的方向发展。

1.2 EDA技术的设计优势传统的设计方法采用自底向上的设计方法,一般先按电子系统的具体功能要求进行功能划分,然后对每个子模块画出真值表,用卡诺图进行手工逻辑简化,写出布尔表达式,画出相应的逻辑线路图,再据此选择元器件,设计电路板,最后进行实测与调试,由于无法进行硬件系统功能仿真,如果某一过程存在错误,查找和修改十分不便,所以这是一种费时、费力的设计方法,而现代电子设计技术(EDA)是自顶向下且先进高效的。

在电子产品的设计理念、设计方式、系统硬件构成、设计的重用性、知识产权、设计周期等方面,EDA技术具有一定的优势。

所以本次设计的抢答器抛弃了传统的设计方法,选择了采用主流的EDA 技术进行设计。

VHDL四路抢答器

VHDL四路抢答器

1 前言 (1)2 抢答器的设计要求及分析 (2)2.1 抢答器的设计要求 (2)2.2 抢答器的设计分析 (2)3 抢答器的设计 (4)3.1 抢答鉴别模块 (4)3.1.1 抢答鉴别模块源程序 (4)3.1.2 抢答鉴别模块程序仿真 (4)3.2 抢答计时模块 (4)3.2.1 抢答计时模块源程序 (4)3.2.2 抢答计时模块程序仿真 (4)3.3 抢答计分模块 (5)3.3.1 抢答计分模块源程序 (5)3.3.2 抢答计分模块程序仿真 (5)3.4 综合模块 (6)3.4.1 例化源程序 (6)3.4.2 例化程序仿真 (6)4 抢答器的硬件测试 (7)4.1 抢答器的引脚绑定 (7)4.2 在CPLD\FPGA实验系统上下载,进行硬件验证情况 (8)5 Quartus Ⅱ软件及VHDL语言介绍 (9)5.1 Quartus Ⅱ软件介绍 (9)5.2 VHDL语言简介 (10)心得体会 (11)参考文献 (12)EDA技术作为现代电子设计最新技术的结晶,其广阔的应用前景和深远的影响已毋庸置疑,它在信息工程类专业中的基础地位和核心作用也逐渐被人们所认识。

许多高等学校开设了相应的课程,并为学生提供了课程设计、综合实践、电子设计竞赛、毕业设计、科学研究和产品开发等EDA技术的综合应用实践环节。

相关的工程技术人员也特别重视学习EDA技术,并渴望提高其工程应用能力。

对于迅猛发展的EDA技术的综合应用,从EDA技术的综合应用系统的深度来分,可分为3个层次:(1) 功能电路模块的设计;(2)算法实现电路模块的设计;(3) 片上系统/嵌入式系统/现代DSP系统的设计。

从EDA技术的综合应用系统的最终主要硬件构成来分,已出现6种形式:(1) CPLD/FPGA系统;(2) "CPLD/FPGA+MCU"系统;(3) "CPLD/FPGA+专用DSP处理器"系统;(4) 基于FPGA实现的现代DSP系统;(5) 基于FPGA实现的SOC片上系统;(6) 基于FPGA实现的嵌入式系统。

EDA课程设计--VHDL四路智力抢答器

EDA课程设计--VHDL四路智力抢答器

VHDL四路智力抢答器EDA课程设计一、任务与目的1.1熟练掌握EDA工具软件Quartus的使用1.2熟悉使用VHDL硬件描述语言描述数字电路1.3学会使用VHDL进行大规模集成电路设计1.4学习使用CPLD/FPGA实验系统硬件验证电路设计的正确性1.5初步掌握EDA技术并具备一定的可编程逻辑芯片的开发能力二、设计题目与要求2.1设计题目四路智力竞赛抢答器2.2设计要求1.按所布置的题目要求,每一位学生独立完成全过程2.分模块层次化的设计;3.各功能模块的底层文件必须用VHDL语言设计,顶层文件可以用VHDL语言设计,也可以用原理图设计。

2.3设计内容设计一个可容纳四组参赛者同时抢答的数字抢答器。

主持人可控制系统发的清零和抢答的开始,控制电路可实现最快抢答选手按键抢答的判别和锁定功能,并禁止后续其他选手抢答。

抢答选手确定后给出选手编号的显示,抢答选手的编号显示保持到系统被清零为止,若提前抢答则对相应的抢答组发出警告。

*扩展内容:增加答题限时的功能,在确定了抢答成功有效后,有主持人按下答题限时功能键,开始9s的倒计时。

在计时结束后,超时提示LED闪烁。

在主持人按下clear开关时限时复位。

三、功能分析四路智力竞赛抢答器按功能设计分为三个模块1.抢答锁存模块,在主持人发出抢答指令后(start=’1’),若有参赛者按下抢答按钮,则显示器显示抢答组别,同时电路处于自锁状态,使其它组的抢答器不起作用。

主持人可以用清零按钮进行清零(clr=’0’).若抢答指令未发出(start=’0’),而有参赛者按下抢答按钮,则发出警告信号(alm=1).2.显示功能模块,在参赛者抢答信号(组别)发出后,对参赛者信号进行译码,然后用7段数码管显示出来。

3.计时模块,在确定了抢答成功有效后,有主持人按下答题限时功能键,开始9s的倒计时。

在计时结束后,超时提示LED亮。

在主持人按下clear开关时限时复位。

(扩展模块)四、设计思路分析,设计方案合理性分析与选择。

VHDL四人抢答器实验报告

VHDL四人抢答器实验报告

题目:硬件描述语言实验十三:四人抢答器姓名:*** 学号: ***地点:主楼402 时间:5月9日一、实验目的:进一步练习VHDL语言设计工程的建立与仿真的步骤和方法、熟悉VHDL语言基本设计实体的编写方法。

二、实验环境:PC个人计算机、Windows XP操作系统、Quartus II集成开发环境软件。

三、设计要求:设计一个四人抢答的抢答器的逻辑模块,模块功能如下描述:(1)上一轮抢答结束后,主持人按下清零按钮,系统初始化,此时除了禁止抢答灯外,所有灯灭,而禁止抢答灯亮。

(2)主持人按下允许抢答按钮,允许抢答灯亮,模块开始计时;当达到设定的允许抢答的时间时,允许抢答灯灭,禁止抢答灯亮。

(3)参赛选手在允许抢答的时间内按下自己的抢答按钮,谁第一个按下,他的抢答成功灯亮,其他选手在抢答无效。

(4)选手在禁止抢答的时间段按下抢答的按钮,他的犯规灯亮,多个选手犯规,他们的犯规灯都亮。

由上述功能可确定模块的引脚:每个按钮对应一个输入信号,按钮按下输入为高电平;每个灯对应一个输出信号,输出高电平灯亮。

为了计时,还有一个时钟信号输入,允许抢答的时间为16个时钟周期。

四、设计思想:抢答器主要由两个模块来实现功能:(一)抢答鉴别及锁存模块根据设计要求,首先要有清零按钮clr,主持人控制按钮en,四人抢答按钮a、b、c、d,并由dsp显示抢答成功的选手号码,用wrg_lgt 表示犯规灯,用fbd_lgt表示禁止抢答灯,用alw_lgt表示允许抢答灯。

为了实现当有选手抢答后锁存电路使其他选手无法抢答的功能,设置两个锁存信号temp1、temp2。

按下清零开关(clr=1),tmp1、tmp2=0,若主持人未按下允许抢答按钮(en=0),即禁止抢答灯亮(alw_lgt=1)时,有人抢答,则tmp2=1,关闭抢答电路,犯规选手的犯规灯亮;若主持人按下允许抢答开关(en=1)后,即允许抢答灯亮(alw_lgt=1)时,有人抢答,则tmp1=1,关闭抢答电路,抢答成功选手的抢答成功灯亮。

VHDL语言设计四路抢答器

VHDL语言设计四路抢答器

一、设计要求:在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等各种手段批示出第一抢答者。

同时,还可以设置计分、犯规及奖惩记录等各种功能。

本设计的具体功能是:1.可容纳四组参赛者进行抢答,每组设置一个抢答按钮供抢答者使用。

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

在主持人交系统复位并发出抢答指令后,若有一组先按下抢答开关,则该组指示灯亮并用组别显示电路显示抢答者的组别,同时扬声器发出“嘀嘟”的双音音响,且持续2~3秒。

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

3.具有计分功能,使每组在开始时的分数预置成100分,抢答后由主持人计分,答对一次加10分。

二、系统方案论证与模块划分:根据系统设计要求可知:1.系统的输入信号有:各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮TA、TB;2.系统的输出信号有:四个组抢答成功与否的指示灯控制信号输出口LED_A、LES_B、LED_C、LED_D,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。

3.本系统应具有的功能有:第一抢答信号的鉴别和锁存功能;抢答计时功能;各组得分的累加和动态显示功能。

根据以上的分析,我们可将整个系统分为三个主要模块:抢鉴别模块QDJB;抢答计时模块JSQ;抢答计分模块JFQ;对于需显示的信息,需增加或外接译码器,进行显示译码。

考虑到FPGA、CPLD的可用接口及一般EDA实验开发系统的输出显示资源的限制,这里我们将组别显示和计时显示的译码器内设,而将各组的计分显示的译码器外接。

整个系统的组成框图如图2-1所示:系统的工作原理如下:当主持人按下使能端EN1时,抢答器开始工作,A、B、C、D四个抢答者谁最先抢答成功则此选手的台号灯(LED_A—LED_D)将点亮,并且组别显示数码管将显示出抢答成功者的台号,并由蜂鸣器发出抢答成功的警报;接下来主持人提问,若回答正确,主持人按加分按钮ADD,抢答计分模块JFQ将给对应的组加分,并将该组的总分显示在对应的选手计分数码管JF2_A-JF0_A、JF2_B-JF0_B、JF2_C-JF0_C、JF2_D-JF0_D、上。

VHDL四人抢答器

VHDL四人抢答器

四人抢答器设计一、设计任务及要求:(1)设计用于竞赛抢答的四人抢答器;①有多路抢答,抢答台数为8;②具有抢答开始后20秒倒计时,20秒倒计时后无人抢答显示超时,并报警;③能显示超前抢答台号并显示犯规警报;(2) 系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各路抢答信号封锁,同时铃声想起,直至该路按键松开,显示牌显示该路抢答台号;(3) 用VHDL语言设计符合上述功能要求的四人抢答器,并用层次化设计方法设计该电路;(4) 完成电路全部设计后,通过系统实验箱下载验证设计课题的正确性。

二、设计思路设计制作一个竞赛抢答器,每组受控于一个抢答开关,分别为S1, S2, S3, S4,低电平表示抢答有效;设置主持人控制键K,用于控制整个系统清0 和抢答有效控制,按下复位键时, K=0,系统清零;抬起复位键时,K=1,抢答开始;系统具有第一抢答信号鉴别和锁存功能。

在主持人将系统复位并使抢答有效开始后,第一抢答者按下抢答按钮,对应的输入引脚接低电位0,电路应记忆下第一抢答者的组别,并封锁其他各组的按钮,即其他任何一组按键都不会使电路响应;系统以两种方式指示第一抢答者:其一是通过译码程序显示其组别号;其二是在第一抢答者产生时,蜂鸣器警示;设置违规电路单元,当抢答者在主持人按下复位清零按钮之前就已经按下抢答按钮时,则给出违规信号为高电平。

对应组别的红色信号灯亮;当20秒倒计时后无人抢答显示超时,并报警。

系统设计框图如图1所示。

抢答按钮主持人按钮控制电路第一信号鉴别组别数码显示声音警示计时控制提前抢答控制S1S2S3S4K图1 整体设计框图三、VHDL程序实现1、正常抢答程序及仿真此模块包括正常抢答第一信号鉴别和显示抢答台号,并发生声音提示。

其中S1,S2,S3,S4为抢答按钮,当对应的按钮信号为0时表示有抢答信号;K为主持人按钮,按下复位键K时, K=0,系统清零;抬起复位键时,K=1,抢答开始;G为报警信号。

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

中南林业科技大学课程设计报告设计名称:基于VHDL语言的四人抢答器姓名:杜涵学号:******** 专业班级:电子信息工程一班院(系):计算机与信息工程学院设计时间:2015年12月8日设计地点:东园22栋201目录一、设计题目………………………………………………二、设计要求………………………………………………三、设计目的………………………………………………四、设计背景………………………………………………五、使用工具………………………………………………六、设计原理………………………………………………七、设计结构………………………………………………八、原理图…………………………………………………九、模块程序………………………………………………十、引脚分配………………………………………………十一、设计结果验证………………………………………十二、总结…………………………………………………一、设计题目:基于VHDL语言的四路抢答器二丶设计要求:1、设计制作一个竞赛抢答器,每组受控于一个抢答开关,分别为S1, S2, S3, S4。

2、控制键K,用于控制整个系统清零, K=0,系统清零;抬起复位键时,K=1,抢答开始。

3、每答对一题计十分,每次答题时间不能超过60秒。

4、第一抢答者按下抢答按钮,对应的led灯点亮,同时数码管显示是第几位抢答者,并封锁其他各组的按钮,即其他任何一组按键都不会再使电路响应。

与此同时,数码管开始显示60秒的倒计时。

通过K键复位,开始下一轮抢答。

三、设计目的1.通过设计竞赛抢答器的实例来体会设计实际产品的过程,在学好理论的基础上,提高动手实践能力。

2.学习怎样用vhdl语言来描述自己的设计思路,调试硬件后,能够使产品实现功能。

3.进一步掌握用vhdl语言编写数字电路。

4.在做课题过程中,掌握多位共阴极扫描显示数码管的驱动及编码,学会使用和调试硬件。

四、设计背景现代电子产品几乎渗透了社会的各个领域EDA技术是电子设计的发展趋势,EDA工具从数字系统设计的单一领域,应用范围己涉及模拟、微波等多个领域,可实现各个领域电子系统设计的测试、设计仿真和布局布线等。

设计者只要完成对电子系统的功能描述,就可利用计算机和EDA工具,进行设计处理,最终得到设计结果。

随着大规模集成电路技术和计算机技术的不断发展,即使是普通的电子产品的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性能价格比大幅提高。

不言而喻,EDA 技术将迅速成为电子设计领域中的极其重要的组成部分。

从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用文泛、工具多样、软件功能强大。

抢答器是一种应用非常广泛的设备,在各种竞猜、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。

早期的抢答器只由几个三极管可控硅、发光管等组成,能通过发光管的指示辨认出选手。

现在大多数抢答器均使用单片机和数字集成电路,并增加了许多新的功能,如选手号码显示、抢按器或抢按后的计时、选手得分显示等功能。

五、使用工具:装有Quartus II软件的PC、Cyclone 系列FPGA开发板(ep2c5t144c8)六、设计原理根据设计要求,我们经过分析应用分模块的方式比较容易设计该抢答器,我们底层应用VHDL语言,顶层应用原理图的方式进行设计,然后通过仿真验证并不断修改完善设计。

模块:(1)四人按键抢答模块:设计为五个输入按键,其实S键为主持人控制抢答过程的按键,当有选手抢答后使其他人的按键无效。

然后根据抢答成功者的编号使对应LED灯点亮,同时输出一个状态让数码管显示抢答者编号。

主持人S键复位,开始下一轮抢答。

(2)计时模块:在有人抢答后开始一个60秒的倒计时,并输出道数码管显示,CLK来自1HZ分频模块。

(3)计分模块:在选手答题正确后通过外接ADD键给该选手加分,每次加十分,并输出到数码管显示,CLEAR键为清空所有选手分数。

(4)译码模块:讲选手序号,倒计时以及选手分数显示出来,CLK由1KHz分频模块提供。

(5)1HZ与1KHz分频模块:程序由FPGA板的50MHz频率编写。

七、设计结构八、原理图:九、模块程序1、抢答模块程序:Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Use ieee.std_logic_arith.all;Entity QD isPort(s,clk:in std_logic;s0,s1,s2,s3:in std_logic;states:buffer std_logic_vector(3 downto 0);T:out std_logic;LIANG:buffer std_logic_vector(3 downto 0);XI:buffer std_logic_vector(3 downto 0)); End QD;Architecture aa of QD issignal s_0,s_1,s_2,s_3,l_1,l_2,l_3,l_4:std_logic; beginprocess(s0,s1,s2,s3,s,clk)beginXI<="1111";if (s='0') thens_0<='0';s_1<='0';s_2<='0';s_3<='0';LIANG<="1111";elsif (clk'event and clk='1') thenif (s_0='1' or s_1='1' or s_2='1' or s_3='1')then null;elsif s0='0' thens_0<='1';states<="0001";LIANG<="1110";elsif s1='0' thens_1<='1';states<="0010";LIANG<="1101";elsif s2='0' thens_2<='1';states<="0011";LIANG<="1011";elsif s3='0' thens_3<='1';states<="0100";LIANG<="0111";else states<="0000";end if;end if;T<= s_0 or s_1 or s_2 or s_3;end process;end aa ;说明:S为主持人复位键;S0,S1,S2,S3:四个抢答选手;STATES:抢答组号输出T:在S按下后使倒计时停止;LIANG:控制四个LED灯,点亮选手对应LED灯;XI:使另外四个LED灯熄灭;2、计时模块程序:library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_1164.all;entity JS isport(clk,s,T:in std_logic;sw,gw:buffer std_logic_vector(3 downto 0));end JS;architecture aa of JS isbeginprocess(clk,s,T)beginif (s='0') then sw<="0110";gw<="0000";elsif(clk'event and clk='1') thenif(T='0') then gw<=gw;sw<=sw;elsif (gw="0000") then gw<="1001";if(sw="0000") then sw<="0000";else sw<=sw-1;end if;elsegw<=gw-1;end if;if (sw=0 and gw=0) then sw<="0000";gw<="0000"; end if;end if;end process;end aa;说明:S:按下后倒计时开始;SW:输出倒计时十位数;GW:输出倒计时百位数3、计分模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JFQ ISPORT(RST: IN STD_LOGIC;ADD: IN STD_LOGIC;CHOS: IN STD_LOGIC_VECTOR(3 DOWNTO 0); OUT1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY JFQ ;ARCHITECTURE ART OF JFQ ISBEGINPROCESS(RST,ADD,CHOS) ISVARIABLE POINTS_A0: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_B0: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_C0: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_D0: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINIF RST='1' THENPOINTS_A0:="0000";POINTS_B0:="0000";POINTS_C0:="0000";POINTS_D0:="0000";ELSIF (ADD'EVENT AND ADD='0') THENIF CHOS="0001" THENIF POINTS_A0="1001" THENPOINTS_A0:="0000";ELSEPOINTS_A0:=POINTS_A0+1;END IF;END IF;IF CHOS="0010" THENIF POINTS_B0="1001" THEN POINTS_B0:="0000"; ELSEPOINTS_B0:=POINTS_B0+1; END IF;END IF;IF CHOS="0011" THENIF POINTS_C0="1001" THEN POINTS_C0:="0000"; ELSEPOINTS_C0:=POINTS_C0+1; END IF;END IF;IF CHOS="0100" THENIF POINTS_D0="1001" THEN POINTS_D0:="0000"; ELSEPOINTS_D0:=POINTS_D0+1;END IF;END IF;END IF;IF chos="0001" then out1<=POINTS_a0; ELSIF chos="0010" then out1<=POINTS_b0; ELSIF chos="0011" then out1<=POINTS_c0; ELSIF chos="0100" then out1<=POINTS_D0; ELSIF chos="0000" then out1<="0000"; END IF;END PROCESS;END ARCHITECTURE ART;说明:RST:分数清零按键;ADD:加分按键;CHOS=STATES:输入选手组号;OUT1:输出分数;4、译码显示模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity YM isport(a:in std_logic_vector(3 downto 0);b:in std_logic_vector(3 downto 0);c:in std_logic_vector(3 downto 0);clk1:in std_logic;Y:in std_logic_vector(3 downto 0);adres: out std_logic_vector(7 downto 0);led7s: out std_logic_vector(7 downto 0) );end YM;ARCHITECTURE segled of YM issignal S:integer range 0 to 12;signal D:std_logic_vector(3 downto 0); signal zero:std_logic_vector(3 downto 0); beginP1: process(clk1)beginzero<="0000";if clk1'event and clk1='1' thenif S<5 thenS<=S+1;elseS<=1;end if;end if;end process P1;P2:process(S)begincase S iswhen 1 =>D<=a; adres<="01111111";when 2 =>D<=b; adres<="11011111";when 3 =>D<=c; adres<="11101111";when 4 =>D<=Y; adres<="11111101";when 5 =>D<=zero;adres<="11111110";when others =>null;end case;end process P2;P3:process(D)begincase D iswhen "0000" =>led7s<="11000000";--0when "0001" =>led7s<="11111001";--1when "0010" =>led7s<="10100100";--2when "0011" =>led7s<="10110000";--3when "0100" =>led7s<="10011001";--4when "0101" =>led7s<="10010010";--5when "0110" =>led7s<="10000010";--6when "0111" =>led7s<="11111000";--7when "1000" =>led7s<="10000000";--8when "1001" =>led7s<="10011000";--9when others =>null;end case;end process P3;end segled;说明:A:输入选手组号;B:倒计时十位;C:倒计时个位;Y:选手分数;ADRES:控制数码管位选;LED7S:控制数码管段选;5、分频模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity FP isport( clk: in STD_LOGIC; clk1Hz: out std_logic);end FP;ARCHITECTURE segled of FP isbeginPROCESS (clk)VARIABLE count:INTEGER RANGE 0 TO 49999999;BEGINIF clk'EVENT AND clk='1' THENIF count<=24999999 THENclk1Hz<='0';count<=24999999时divls=0并且count加1count:=count+1;ELSIF count>=24999999 AND count<=49999999 THENclk1Hz<='1';count:=count+1;ELSE count:=0;END IF;END IF;END PROCESS ;END ARCHITECTURE segled;(分频1HZ时将其中的数去掉三个9)6、计分器ADD加分输入消抖模块程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY XIAOD ISPORT (CLK,ADD:IN STD_LOGIC;ADD_EN: OUT STD_LOGIC );END ENTITY;ARCHITECTURE BHV OF XIAOD ISBEGINPROCESS(CLK,ADD)VARIABLE COUNT1 :INTEGER RANGE 0 TO 100000; BEGINIF ADD='0' THENIF RISING_EDGE(CLK) THENIF COUNT1<100000 THEN COUNT1:=COUNT1+1;ELSE COUNT1:=COUNT1; END IF;IF COUNT1=99999 THEN ADD_EN<='1';ELSE ADD_EN<='0'; END IF;END IF;ELSE COUNT1:=0;END IF;END PROCESS ;END;十:引脚分配十一、设计结果验证编译成功后下载到FPGA板上进行结果验证:数码管显示0 60 00;按下S后,显示0 59 00;S0抢答后,显示1倒计时停止按下ADD显示10 第一个LED灯点亮;S1抢答后,显示2倒计时停止按下ADD显示10第二个LED灯点亮;S2抢答后,显示3倒计时停止按下ADD显示10第三个LED灯点亮;S3抢答后,显示4倒计时停止按下ADD显示10第四个LED灯点亮;若按下RST键,所有选手得分清零。

相关文档
最新文档