基于FPGA的四人电子抢答器

更新时间:2024-04-27 14:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

温州大学瓯江学院

WENZHOU UNIVERSITY OUJIANG COLLEGE

本科毕业设计(论文)

( 2011届)

题 目:

电子抢答器的设计

专 业: 电子信息工程 班 级: 07电子信息工程本二 姓 名: 王立峰 学 号: 07202053323 指导教师: 林志源 职 称: 讲师 完成日期: 2011年3月15日

温州大学瓯江学院本科毕业论文

摘 要

随着电子技术的发展,现在的抢答器功能越来越强,可靠性和准确性也越来越高。以前的抢答器大部分都是基于传统数字电路组成的。制作过程复杂,而且准确性与可靠性不高,成品面积大,安装、维护困难。由于近年来电子技术发展迅速,逐渐出现用现场可编辑逻辑门阵列(简称FPGA)制作抢答器,使得电子系统的设计者利用EDA软件,就可以独立设计自己的专用集成电路(ASIC)器件。制作过程简单,而且安装、维护简单。

本设计是应用Spartan-3E 芯片作为核心,七段LED共阴数码管显示。抢答器可以容纳四组参赛者同时抢答,系统具有清零功能,电子抢答器还具有计分功能和倒计时功能。如果抢答成功,主持人给出倒计时计时允许信号,计时显示器开始30秒倒计时,参赛者满足得分条件,则增加相应的分数,答错不扣分。

关键词:FPGA;抢答器;EDA

II

温州大学瓯江学院本科毕业论文

Abstract

With the development of electronic technology, the Responder is now more powerful, more and more high reliability and accuracy. Most of the previous Responder composed of digital circuits based on the traditional. Complex production process, and the accuracy and reliability is not high, finished area, installation, maintenance difficulties. The rapid development of electronic technology in recent years, emerged with a field-programmable logic gate array (referred to as the FPGA) Responder production, making use of electronic system designers EDA software to design their own independently-specific integrated circuit (ASIC) devices. Production process is simple, and the installation and simple maintenance.

This design is the application of Spartan-3E chip as the core, common cathode seven segment LED digital display. Responder can accommodate four groups of participants answer in the same time, the system has cleared, e-Responder also has a scoring function and countdown functions. If the answer in successfully, the host gives the countdown timer enable signal, time display 30-second countdown began, participants meet the scoring conditions, the corresponding increase in the score, wrong answers are not penalized.

Key words: FPGA; Responder; EDA

III

温州大学瓯江学院本科毕业论文

目 录

1 绪论 ..................................................................................................................... - 1 -

1.1 前言 ............................................................................................................. - 1 - 1.2 电子抢答器研究的背景与意义 ................................................................. - 1 - 1.3 系统设计要求 ............................................................................................. - 2 - 2 电子抢答器总体设计方案 ................................................................................. - 3 -

2.1 系统总体方案设计 ..................................................................................... - 3 - 2.2 主控芯片简介 ............................................................................................. - 3 - 2.2.1 FPGA的发展与趋势 ............................................................................... - 3 - 2.2.2 FPGA工作原理和基本特点 ................................................................ - 4 - 2.2.3 FPGA配置模式 .................................................................................... - 4 - 2.3 关于EDA ................................................................................................. - 5 - 2.4.1 关于VHDL ........................................................................................... - 5 - 2.4.2 VHDL主要特点 ................................................................................... - 6 - 3 电子抢答器的系统设计方案和主要模块设计 ................................................. - 8 -

3.1 系统具体方案设计 ..................................................................................... - 8 - 3.2 主要模块设计 ............................................................................................. - 9 - 3.2.1 第一判断电路 ...................................................................................... - 10 - 3.2.2 计分电路 .............................................................................................. - 10 - 3.2.3 倒计时电路 .......................................................................................... - 11 - 3.2.4 显示电路 .............................................................................................. - 11 - 3.2.5 位选选择电路 ...................................................................................... - 12 - 4电子抢答器系统仿真与分析 .............................................................................. - 13 -

4.1 系统总原理图分析与仿真 ....................................................................... - 13 - 4.2第一抢答判断模块仿真 ............................................................................ - 14 - 4.3 计分电路模块仿真 ................................................................................... - 14 - 4.4 倒计时模块仿真 ....................................................................................... - 15 - 4.5 显示电路的仿真 ....................................................................................... - 15 - 4.6 位选选择电路仿真 ................................................................................... - 16 - 5 结论 ................................................................................................................... - 18 - 致谢 ......................................................................................................................... - 19 -

附录Ⅰ 原理图 ................................................................................................ - 21 - 附录Ⅱ 元器件清单 ........................................................................................ - 22 - 附录Ⅲ 源程序清单 ........................................................................................ - 23 -

IV

温州大学瓯江学院本科毕业论文

1 绪论

1.1 前言

抢答环节经常出现在竞赛、文体娱乐等活动中,它能够准确、公正、直观地根据抢答者的指示灯显示、数码显示和警示显示等手段指示出第一抢答者。一般,竞赛抢答器除了第一抢答信号的鉴别和锁存功能,还能对提前抢答进行报警,计算和显示各组竞赛者的比赛得分。为了保证各种智力竞赛、比赛的准确和公正性,所以对电子抢答器的研究就有着其重要的意义。

1.2 电子抢答器研究的背景与意义

随着计算机技术、电子技术的迅速发展以及集成电路生产工艺的不断提高,电子产品的更新换代日新月异。其中数字电路系统设计的电路规模更大,集成度更高,而且要求设计周期短,灵活性强,面对不同的用户,能方便修改和迅速升级。传统的手机设计和分立元件设计显然是不能适应这些要求的,数字电路的设计方法从手工、分立、小型化、纯硬件的设计方法逐渐变成运用计算机、大规模地、软硬件协同设计的大规模专用集成电路设计。也就是说,以计算机为主要开发工具,在EDA(电子设计自动化)开发软件平台上,对硬件描述语言(Haedware Description Language,HDL)描述的数字电路系统,自动地完成编译、逻辑化简、逻辑综合和布局布线,以及进行优化和仿真测试。因此,EDA技术成为现代电子设计工程师必须掌握的技术。采用EDA技术进行数字集成电路的设计开发,可以极大的提高电子产品设计的正确性、缩短产品的开发周期以及增加产品修改的灵活性。

随着电子技术的发展,现在的抢答器功能越来越强,可靠性和准确性也越来越高。以前的抢答器大部分都是基于传统数字电路组成的。制作过程复杂,而且准确性与可靠性不高,成品面积大,安装、维护困难。由于近年来电子技术发展迅速,逐渐出现用可编程门阵列(简称FPGA)制作抢答器,使得电子系统的设计者利用EDA(电子设计自动化)软件,就可以独立设计自己专用的集成电路(ASIC)器件。制作过程简单,而且安装、维护简单。

抢答器在工厂、学校单位团体常举办的各种智力竞赛中使用,各类电视直播录播的演播室栏目、电视大奖赛,也有着广泛的应用,是调动现场观众参与热情,提高栏目档次与可看性、增强栏目互动性、方便栏目环节创意的有力工具。比如现在很热门的相亲节目《非诚勿扰》使用的都是类似于抢答器的电子产品。通过理论设计,查阅资料,选择元器件,实际动手安装、调试等过程,了解和掌握电子线路设计的一般方法。巩固和运用在电路与电子技术等课程中所学理论知识和

- 1 -

温州大学瓯江学院本科毕业论文

设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。

VHDL语言最直接的应用领域是可编程逻辑器件和专用集成电路(ASIC:Application Specific Integrated Circuits),其中可编程逻辑器件包括复杂可编程逻辑器件(CPLD:Complex Programmable Logic Devices )和现场可编程门阵列(FPGA:Field Programmable Gate Arrays )。可编程逻辑器件自七十年代以来,经历了PAL、GAL、CPLD、FPGA几个发展阶段,其中CPLD/FPGA属高密度可编程逻辑器件,目前集成度已高达200万门/片,它将掩膜ASIC集成度高的优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于样品研制或小批量产品开发。

- 7 -

温州大学瓯江学院本科毕业论文

3 电子抢答器的系统设计方案和主要模块设计

3.1 系统具体方案设计

根据系统设计要求可知,系统由五个主要的电路模块组成,分别为第一判断电路、倒计时电路、计分电路和显示电路。其中,第一判断电路主要完成最快抢答者的判断功能;倒计时电路对第一抢答者进行30秒倒计时;计分电路存储每组竞赛者的分数;显示电路则显示抢答器的状态和各组的分数。

因此,电子抢答器的输入信号包括复位信号CLR、抢答器使能信号EN、四组参赛者的抢答按钮A/B/C/D、倒计时中止按钮RST以及加分信号ADD;输出信号包括四组参赛者抢答状态的显示LEDA、LEDB、LEDC、LEDD及其对应得分、抢答器抢答成功的组别显示等。

抢答器的工作流程如下:

如果参赛者在抢答器使能信号EN有效前按下抢答按钮,报警信号FALSE[3...0]的对应位输出高电平以示警告;当EN使能信号有效时,抢答器开始正常工作,将报警信号FALSE清零,A、B、C、D四个抢答者谁先按下抢答按钮,则抢答成功,对应的显示灯LEDx亮起,并通过显示电路模块显示其参赛编号DOTU[6...0];抢答成功的选手进入答题阶段,计时显示器从初始值30开始以秒为单位倒计时,计数至0时,停止计数,扬声器发出超时报警信号,以中止继续回答问题;当主持人给出倒计时计数禁止信号时,扬声器停止鸣叫;参赛者在规定时间内回答完问题,主持人给出倒计时计数禁止信号RST,以免扬声器鸣叫。答题结束,如正确回答问题,则加分信号ADD有效,计分模块给相应的参赛组加分,每个参赛组得分的个位、十位、百位分别通过信号DOTU[6...0]显示。

如果复位信号CLR有效,使得抢答器在下一轮抢答前,其抢答成功的组别判断回复为初始状态,以便重新开始新一轮抢答。复位信号不改变参赛者的现有得分。

抢答器程序工作流程图如下:

- 8 -

温州大学瓯江学院本科毕业论文

开始 复位清零 抢答判断程序 倒计时并计分 显示程序

3-1 主程序流程图

3.2 主要模块设计

分析系统设计要求我们得知电子抢答器的是要主要又第一抢答判断电路、倒计时电路、计分电路和显示电路构成。

本设计使用VHDL语言编程。

- 9 -

温州大学瓯江学院本科毕业论文

3.2.1 第一判断电路

第一判断电路模块具有第一抢答信号的鉴别和锁存功能,其电路框图如图3-1所示。其中CLR为复位信号,当该信号高电平有效时,电路无论处于何种状态都恢复为初始状态,即所有的输出信号都为0;EN为抢答使能信号,该信号高电平有效;A、B、C、D为抢答按钮,高电平有效。

当使能信号EN为低电平时,如果有参赛者按下抢答按钮,则提前抢答报警信号FALSE[3...0]的对应位输出高电平,以示警告;当使能信号EN为高电平时,首先将提前抢答报警信号FALSE[3...0]清零,然后根据选手按下抢答按钮A、B、C、D的先后顺序选择最先抢答信号,其对应的抢答状态显示信号LEDA-LEDD输出高电平,抢答成功组别编号由信号Q[3...0]输出,并锁存抢答器此时的状态,直到清零信号有效为止。每一轮新的抢答之前,都要使用复位清零信号CLR,清除上一轮抢答对判断电路留下的使用痕迹,使电路恢复初始状态。

图3-2 第一判断电路框图 3.2.2 计分电路

计分电路在参赛者抢答成功后,根据其比赛情况进行比较分数的调整,其

电路框图如图3-2所示。该模块输入信号为加分选择信号ADD和组别选择信号CHOS[3...0],其中,加分选择信号ADD高电平有效,有效时对组别选择信号CHOS[3...0]即第一判断电路模块的输出信号Q[3...0]。输出信号分别对应四组参赛者的得分,以百分制表示。每组分数在比赛开始时预设100分,每答对一题(即加分选择信号对相应参赛组有效)加10分,答错不扣分。得分的个位、十位、百位表示为位宽为4的逻辑矢量,使之方便与显示电路级联,从而输出比赛得分。

- 10 -

温州大学瓯江学院本科毕业论文

图3-3 计分器电路框图

3.2.3 倒计时电路

倒计时电路在抢答成功后,由主持人给出倒计时开始信号RST,RST输入信号为高电平有效,其电路框图如图3-3所示。抢答成功的选手进入答题阶段,计时显示器从初始值30开始以秒为单位倒计时,计数至0时,停止计数,扬声器发出超时报警信号,以中止继续回答问题;当主持人给出倒计时计数禁止信号时,扬声器停止鸣叫;参赛者在规定时间内回答完问题,主持人给出倒计时计数禁止信号,以免扬声器鸣叫。

图3-4 倒计时电路框图 3.2.4 显示电路

显示电路的实质其实就是一个简单的LED共阴极显示模块的译码器。7段数码管LED常用的一般8字型为a b c d e f g p,其中P为小数点,共阴LED低电平有效,如图3-4所示。

在这里我们不需要用到小数点位,因此用位宽为7的矢量表示7段数码管。 7段LED共阴极显示模块的框图如图所示。其中,DIN[3...0]为输入信号,以4位2进制数表示;DOUT[6...0]为输出信号,将输入的二进制数译码显示为

- 11 -

温州大学瓯江学院本科毕业论文

十进制数字的0~9。

图3-5 7段LED显示模块框图 3.2.5 位选选择电路

位选选择电路实质其实就是把输入的15个DIN[3...0]四位二进制数信号经过位选选择器输出shift[14...0]七段数码管位选信号和对应的bus[3...0]四位二进制数信号。输出的四位二进制数信号再经7段LED显示模块译码显示为十进制数字的0~9。如图3-5所示。

图3-6 位选选择模块框图

- 12 -

温州大学瓯江学院本科毕业论文

4电子抢答器系统仿真与分析

4.1 系统总原理图分析与仿真

上述VHDL源程序构成了一个具有抢答、计分功能和倒计时功能的数字系统,通过连接生成的Schematic电路如图4-1所示。

图中,计分电路输出信号a2,a1,a0~d2,d1,d0还需通过dynamic选择模块进行选择后输出位选信号shift[14...0]和4位二进制信号bus4[3...0],4位二进制信号bus4[3...0]再经由LED共阴极显示模块的译码器,将输入的二进制数译码显示为十进制数字0~9。第一抢答判断电路模块的输出信号Q[3...0],它即是整个电子抢答器输出的一部分,又是显示抢答成功的选手编号,还作为计分模块的输入信号,以它作为依据对相应的选手进行加分操作。小模块f01ms和fpq1s都是分频器,其中f01ms分频到1ms作为七段数码管的时钟脉冲信号,利用高频率和人的视觉延迟的特点,采用扫描的方式驱动多位七段LED数码管;模块fpq1s讲时钟信号clk分频到1S作为倒计时模块的时钟脉冲信号。系统总体仿真波形图如图4-2所示。

图4-1

- 13 -

温州大学瓯江学院本科毕业论文

图4-2 电子抢答器系统总体仿真波形图

4.2第一抢答判断模块仿真

第一抢答判断模块的仿真波形如图4-3所示。

从图中可以看出,当复位清零信号CLR高电平有效时,电路状态立刻被恢复为全0的初始状态。在抢答使能信号无效时A抢答,输出警告信号与提前抢答者对应的位置会输出高电平,以示警告。当抢答使能信号高电平有效时,最先抢答的选手B对应的显示灯LEDB亮起,Q[3...0]输出抢答成功的选手编号。仿真结果与系统设计要求的功能相吻合。

图4-3 第一抢答判断电路仿真波形图

4.3 计分电路模块仿真

计分电路的仿真波形如图4-4所示。

图中CHOS[3...0]以十进制的形式表示,1、2、4、8分别代表选择A、B、C、D四组选手,在加分信号ADD上升沿对选中的参赛者进行扣分,从高到低依次为百位、十位、个位。以CHOS显示的第一个数据为例,ADD信号第一次有效时的上升沿,CHOS[2]为高电平,既选择为C组参赛者加分。按照模块设计中的设定,每次答对加10分,此时C组分数的十位数字由原来的0变为1,在原来

- 14 -

温州大学瓯江学院本科毕业论文

基础上增加了10分。假设C选手第二次又抢答到并回答问题正确,ADD信号第二次有效时的上升沿,CHOS[2]为高电平,既选择为C组参赛者加分,此时C组分数的十位数字由原来的1变为2,又在原来基础上增加了10分。符合预先设想的功能要求。

图4-4 计分电路的仿真波形图

4.4 倒计时模块仿真

倒计时电路的仿真波形如图4-5所示。

图中CLR为复位清零信号,对电路清零。主持人对抢答结果进行确认,给出倒计时计数允许信号RST(高电平有效),开始回答问题,计时显示器从初始值30开始以秒为单位倒计时,计数至19时,主持人断开RST停止计数,扬声器不发出报警信号;按下CLR电路清零,开始新一轮抢答,主持人再次对抢答结果进行确认,给出倒计时计数允许信号,开始回答问题,计时显示器从初始值30开始以秒为单位倒计时,计数至0时,停止计数,扬声器发出超时报警信号,以中止继续回答问题。M为报警输出信号,高电平有效。

图4-5 倒计时电路的仿真波形图

4.5 显示电路的仿真

显示电路的波形如图4-6所示。

显示电路有LED共阴极译码器构成。其十进制数0~9对应的二进制表示和LED共阴极译码器输出如表4-1所示。

- 15 -

温州大学瓯江学院本科毕业论文

图4-6 显示电路仿真波形图

表4-1 十进制数字对应的LED译码器表示

十进制 0 1 2 3 4 5 6 7 8 9 二进制 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 LED共阴译码器输出 0111111 0000110 1011011 1001111 1100110 1101101 1111101 0000111 1111111 1101111 4.6 位选选择电路仿真

位选选择电路的仿真波形如图4-7所示和4-8所示。

图中dinx[3...0](x为1~13)为输入信号,以四位二进制数表示;shift[14...0]为经位选选择器输出的位选信号,bus[3...0]为输出的与位选信号对应的四位二进制数信号。Reset是电路复位清零信号。

图4-7 位选选择电路仿真波形图

- 16 -

温州大学瓯江学院本科毕业论文

图4-8 位选选择电路仿真波形图

- 17 -

温州大学瓯江学院本科毕业论文

5 结论

经过了一段时间的努力我终于完成了电子抢答器的设计,从方案的选择,再

到设计与实现。在这个过程中我学习到了很多在课本上不能学习到的知识,对一个产品也有了一个新的认识,以前我都很简单的认为一个产品很容易就做出来了,现在我知道了每一个产品都需要经过严谨的设计、规划、反复测试仿真才能做出来。通过这次毕业设计,我学到了要耐心分析,解决问题,设计与实现的过程中我们会遇到一些困难是很正常的事,但是不能一遇到问题就慌了,要耐心的分析问题并解决,本次毕业设计的时候我就遇到了这样的情况。团队合作,不懂就要向别人请教。这次毕业设计培养了我们的团队合作,有些时候我们也需要别人的帮助,比如说当我们把元器件连接错的时候,自己一个人很难找到错误,就需要别人帮忙,无形中培养了团队合作的精神。有的时候可能遇到一些问题自己不能解决,这时我们应该虚心像同学请教,只能这样才能更好的解决问题。 毕业设计虽然结束了,但是我们还有很多的事情要做,对仍然不熟悉或不了解的知识点我们要尽快的去学习了解,对毕业设计中出现的问题我们还要去认真的分析研究。还有我们还需要去增强自己的动手能力,去不断的锻炼,只有这样该课程设计才能发挥最大的作用。

本次毕业设计最主要的收获是:使我们对VHDL语言编程和Xilinx ISE 9.2i的使用有了更深层次的感性和理性认识;培养和锻炼我们的实际动手设计的能力。使我们的理论知识与实践充分地结合,作到不仅具有专业知识,而且还具有较强的实践动手能力,能分析问题和解决问题的高素质人才,为以后的顺利就业作好准备。

- 18 -

温州大学瓯江学院本科毕业论文

致谢

本设计是在指导老师林志源老师的精心指导下完成的。林老师有着深厚的理论水平,严谨的治学态度,最可贵的是他会不厌其烦的为我们解决他力所能及的问题。比如我一次又一次去他办公室缠着要老师解决一些问题,可从来没有一丝的不耐烦。在此我首先向林志源老师致以深深的敬意和由衷的感谢!

在整个设计过程中,我身边的同学,特别是同组的同学也给予了我很大的帮助,他们帮我解决了很多细节上的问题,使我能够更好更顺利的完成我的毕业设计,谢谢你们!

通过这次的毕业设计,我学到了很多,无论是理论知识的巩固和进步还是实际操作的掌握,都让我受益匪浅。这些很大程度都得益与曾经帮过我的同学和老师,请允许我在此向他们表示诚挚的感谢。

最后,我要向百忙之中抽时间对本毕业设计进行审阅,评议和参与本人论文答辩的各位老师表示感谢,谢谢!

- 19 -

温州大学瓯江学院本科毕业论文

参考文献

[1] 郭勇.EDA技术基础(第2 版)[M]. 机械工业出版社.2005,314~320. [2] 刘开绪.数字式抢答器的设计与实现[J].电子工程师.2005(9),69~71. [3] 江苏 吴庆洲. 对八路抢答器的几点修正[N]. 电子报 2003 (2003/11/16) [4] 刘云仙. VHDL在数字电路设计中的应用[J]. 浙江科技学院学报 2004(03).

[5] 李端 张景颖 李跃卿 卜旭辉 王成硕. VHDL与数字电路设计[J]. 电气开关 2005(02). [6] 褚红燕、沈世斌. 基于EDA技术的层次化设计方法在电子抢答器中的应用[J].电子工程

师 2005(09).

[7] 符兴昌. EDA 技能在数字体系设计分析中的应用[J ] .微计算机信息,2006 (5 - 2) ,267 ~269.

[8] 郭来功.基于FPGA的串行接口时钟电路的设计[J].现代电子技术,2007,(18):42-43 [9] 田耘,徐文波,胡彬.Xinlinx ISE Design Suite 10.x FPGA开发指南[M].人民邮电出版社,2008年5月.

[10] V. Betz, “Architecture and CAD for speed and area optimizatoin of FPGA’s,” Ph.D., Univ. Toronto, 1998.

[11] A. Marquardt, V. Betz, and J. Rose, “Timing-driven placement for FPGA’s,” in ACM/SIGDA Int. Conf. FPGA’s (FPGA00), 2000, pp. 203–213.

- 20 -

温州大学瓯江学院本科毕业论文

附录Ⅰ 原理图

- 21 -

温州大学瓯江学院本科毕业论文

附录Ⅱ 元器件清单

器件名称 Spartan-3E 芯片 规格 1K 10K 数量 1 5 15 15 15 8 若干 1 4 四位7段LED数码管 三极管 电阻 电阻 按键 杜邦线 蜂鸣器 LED灯

- 22 -

温州大学瓯江学院本科毕业论文

附录Ⅲ 源程序清单

判断电路

--------------------------------------------------------------------------------- library IEEE; --库说明 use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM;

--use UNISIM.VComponents.all;

entity panduandianlu is

Port ( CLR : in STD_LOGIC; ----复位信号 EN : in STD_LOGIC; ----抢答使能信号 A,B,C,D : in STD_LOGIC; ----抢答按钮

LEDA : out STD_LOGIC; ----抢答成功指示灯 LEDB : out STD_LOGIC; LEDC : out STD_LOGIC; LEDD : out STD_LOGIC;

FALSE : out STD_LOGIC_VECTOR (3 downto 0); ----抢答提前警报

Q : out STD_LOGIC_VECTOR (3 downto 0)); ----抢答成功组显示

end panduandianlu;

architecture rtl of panduandianlu is

signal tmp:std_logic_vector(3 downto 0);

signal tag:std_logic; ----设置锁存标志位 begin

tmp<=a&b&c&d;

process(CLR,en,a,b,c,d,tmp) ----启动进程

begin

if clr='1'then ----电路清零 q<=\ LEDA<='0'; LEDB<='0'; LEDC<='0'; LEDD<='0';

- 23 -

温州大学瓯江学院本科毕业论文

FALSE<=\ TAG<='0';

ELSIF EN='0'THEN ----抢答提前报警

IF A='1'THEN FALSE(3)<='1'; END IF; IF B='1'THEN FALSE(2)<='1'; END IF; IF C='1'THEN FALSE(1)<='1'; END IF; IF D='1'THEN FALSE(0)<='1'; END IF;

ELSE FALSE<=\ IF TAG='0'THEN 功者出现 IF TMP=\ LEDA<='1'; 示灯亮 LEDB<='0'; LEDC<='0'; LEDD<='0'; Q<=\ 成功 TAG<='1'; ELSIF TMP=\ LEDA<='0'; LEDB<='1'; LEDC<='0'; LEDD<='0'; Q<=\ TAG<='1'; ELSIF TMP=\ LEDA<='0';

- 24 -

----抢答开始 ----报警信号清零 ----尚未有抢答成----A抢答成功 ----A抢答成功指----显示A抢答 ----锁存此状态 温州大学瓯江学院本科毕业论文

LEDB<='0'; LEDC<='1'; LEDD<='0'; Q<=\ TAG<='1'; ELSIF TMP=\ LEDA<='0'; LEDB<='0'; LEDC<='0'; LEDD<='1'; Q<=\ TAG<='1'; END IF; END IF; END IF;

END PROCESS; end rtl;

计分电路

library IEEE; ----库说明 use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM;

--use UNISIM.VComponents.all;

entity jifen is

Port ( add : in STD_LOGIC; ----加分信号 clear: in std_logic; ----复位清零信号

chos : in STD_LOGIC_VECTOR (3 downto 0); ----对应抢答组信号

a2,a1,a0 : out STD_LOGIC_VECTOR (3 downto 0); ----各组计分信号

b2,b1,b0 : out STD_LOGIC_VECTOR (3 downto 0); c2,c1,c0 : out STD_LOGIC_VECTOR (3 downto 0); d2,d1,d0 : out STD_LOGIC_VECTOR (3 downto 0) ); end jifen;

- 25 -

温州大学瓯江学院本科毕业论文

architecture rtl of jifen is SIGNAL

A11,A22,A33,B11,B22,B33,C11,C22,C33,D11,D22,D33:STD_LOGIC_VECTOR(3 downto 0); ----定义变量 begin

A0<=A11; A1<=A22; A2<=A33; B0<=B11; B1<=B22; B2<=B33; C0<=C11; C1<=C22; C2<=C33; D0<=D11; D1<=D22; D2<=D33;

PROCESS(ADD,CHOS,clear)

BEGIN

if clear='1' then A11<=\ A22<=\ A33<=\ B11<=\ B22<=\ B33<=\ C11<=\ C22<=\ C33<=\ D11<=\ D22<=\ D33<=\ elsIF ADD' EVENT AND ADD='1'THEN 升沿有效

IF CHOS=\ 10分 IF (A22=\ A22<=\ IF (A33=\ THEN - 26 -

----启动进程 ----电路清零 ----加分信号上 ----A组答对,加 ----十位为9 ----十位清零 ----百位为9

温州大学瓯江学院本科毕业论文

A33<=\ ----百位清零 ELSE A33<=A33+'1'; ----否则百位加1 END IF; ELSE A22<=A22+'1'; ----否则十位加1 END IF; end if;

IF CHOS=\ IF (B22=\ B22<=\ IF (B33=\ THEN B33<=\ ELSE B33<=B33+'1'; END IF; ELSE B22<=B22+'1'; END IF; end if; IF CHOS=\ IF (C22=\ C22<=\ IF (C33=\ THEN C33<=\ ELSE C33<=C33+'1'; END IF; ELSE C22<=C22+'1'; END IF; end if; IF CHOS=\ IF (D22=\ D22<=\ IF (D33=\ THEN D33<=\ ELSE D33<=D33+'1'; END IF; ELSE

- 27 -

温州大学瓯江学院本科毕业论文

D22<=D22+'1'; END IF; END IF; end if;

END PROCESS; end rtl;

七段码显示电路

----------------------------------------------------------------------------------

library IEEE; ----库说明 use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM;

--use UNISIM.VComponents.all;

entity xianshidianlu is

Port ( DIN : in STD_LOGIC_VECTOR (3 downto 0); ----输入信号 DOTU : out STD_LOGIC_VECTOR (6 downto 0)); ----译码显示输出信号

end xianshidianlu;

architecture rtl of xianshidianlu is begin

PROCESS(DIN) ----启动进程 BEGIN

CASE DIN IS ----译码 WHEN\ WHEN\ WHEN\ WHEN\ WHEN\ WHEN\ WHEN\ WHEN\ WHEN\ WHEN\ WHEN OTHERS=>DOTU<=\ END CASE; END PROCESS;

- 28 -

温州大学瓯江学院本科毕业论文

end rtl;

倒计时电路

----------------------------------------------------------------------------------

library IEEE; ----库说明 use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM;

--use UNISIM.VComponents.all;

entity daojishi is

Port ( clk,clr,rst : in STD_LOGIC; ----clk时钟信号,clr复位信号,rst计时开始中止信号

m : out STD_LOGIC; ----声音输出信号

high,low : out STD_LOGIC_VECTOR (3 downto 0)); ----计时输出信号

end daojishi;

architecture rtl of daojishi is

signal hh:std_logic_vector(3 downto 0); ----定义变量 signal ll:std_logic_vector(3 downto 0); begin

process(clk,clr,rst,hh,ll) ----启动进程 begin

if clr='1' then ll<=\ ----电路清零 elsif clk'event and clk='1' then ----时钟上升沿有效 if rst='1' then ll<=ll-1; ----rst高电平,个位减1 if ll=\ ----当个位为0时,个位回到9,十位减1

if hh=\ ----直到个位十位为0 m<='1'; ----计时到则触发声音信号 hh<=\ ll<=\ end if; end if; end if; end if;

high<=ll;low<=hh; end process;

- 29 -

温州大学瓯江学院本科毕业论文

end rtl;

位选选择

---------------------------------------------------------------------------------- library IEEE;

use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity dynamic is

Port ( clk : in std_logic; reset: in std_logic; din1 : in std_logic_vector(3 downto 0); 进制数据

din2 : in std_logic_vector(3 downto 0); din3 : in std_logic_vector(3 downto 0); din4 : in std_logic_vector(3 downto 0); din5 : in std_logic_vector(3 downto 0); din6 : in std_logic_vector(3 downto 0); din7 : in std_logic_vector(3 downto 0); din8 : in std_logic_vector(3 downto 0); din9 : in std_logic_vector(3 downto 0); din10 : in std_logic_vector(3 downto 0); din11 : in std_logic_vector(3 downto 0); din12 : in std_logic_vector(3 downto 0); din13 : in std_logic_vector(3 downto 0); din14 : in std_logic_vector(3 downto 0); din15 : in std_logic_vector(3 downto 0);

shift: out std_logic_vector(14 downto 0); bus4 : out std_logic_vector(3 downto 0)); end dynamic;

architecture Behavioral of dynamic is

signal scan_clk:std_logic_vector(3 downto 0); begin

process(clk,scan_clk,reset) begin

if reset='1' then scan_clk<=\

elsif clk'event and clk='1'then scan_clk<=scan_clk+1; if(scan_clk=12) then scan_clk<=\

- 30 -

--译码后的数据信号1(4位2 --译码后的数据信号2 --译码后的数据信号3 --位选信号 --数据信号 --分频进程 温州大学瓯江学院本科毕业论文

end if; end if; end process;

process(scan_clk,din1,din2,din3,din4,din5,din6,din7,din8,din9,din10,din11,din12,din13,din14,din15) ----启动进程 begin

case scan_clk is when \ bus4<=din1;

shift<=\ when \ bus4<=din2;

shift<=\ when \ bus4<=din3;

shift<=\ when \ bus4<=din4;

shift<=\ when \ bus4<=din5;

shift<=\ when \ bus4<=din6;

shift<=\ when \ bus4<=din7;

shift<=\ when \ bus4<=din8;

shift<=\ when \ bus4<=din9;

shift<=\ when \ bus4<=din10;

shift<=\ when \ bus4<=din11;

shift<=\ when \ bus4<=din12;

shift<=\

- 31 -

温州大学瓯江学院本科毕业论文

when \ bus4<=din13;

shift<=\ when \ bus4<=din14;

shift<=\ when \ bus4<=din15;

shift<=\

when others=> bus4<=\ end case; end process; end Behavioral;

分频1ms

---------------------------------------------------------------------------------- library IEEE;

use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

-- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive components. --library UNISIM;

--use UNISIM.VComponents.all;

entity f01ms is

Port (CLK:in std_logic;

architecture Behavioral of f01ms is signal a:integer range 0 to 5000; begin

process(CLK) begin

if(CLK'event and CLK='1') then if a=4999 then

a<=0;

- 32 -

CP:out std_logic);

end f01ms;

温州大学瓯江学院本科毕业论文

else a<=a+1; end if;

case a is

when 0 to 2499=>CP<='1'; when 2500 to 4999=>CP<='0'; when others =>CP<='Z'; end case; end if;

end process;

end Behavioral; 分频1S

---------------------------------------------------------------------------------- library IEEE;

use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

-- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive components. --library UNISIM;

--use UNISIM.VComponents.all;

entity fpq1S is

Port (CLK:in std_logic;

architecture Behavioral of fpq1S is signal count:integer range 0 to 50000000; begin

process(CLK)

begin

if(CLK'event and CLK='1') then if count=49999999 then

- 33 -

CP:out std_logic);

end fpq1S;

温州大学瓯江学院本科毕业论文

count<=0;

else

count<=count+1; end if;

case count is

when 0 to 24999999=>CP<='1'; when 25000000 to 49999999=>CP<='0'; when others =>CP<='Z'; end case;

end if;

end process;

end Behavioral;

- 34 -

本文来源:https://www.bwwdw.com/article/9scg.html

Top