您的当前位置:首页正文

VHDL语言设计竞赛抢答器设计方案

2024-07-16 来源:赴品旅游

VHDL语言设计竞赛抢答器毕业论文

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

1.1 选题的现实意义

抢答器控制系统是学校、政府机关、金融单位、广播电视系统或党委、工会、团委、企事业单位等部门举办竞赛问答、各种知识测试、娱乐活动中经常使用的重要基

如数码管显示抢答成功者的信息,或者通过声音来判别成功抢答的选手。随着现代科
础设备之一,它是一个能准确、公正、直观地判断出抢答者的机器[1]。通过一些方式



.专业.专注.

2语言、软件介绍

2.1FPGA

2.1.1FPGA 简介
FPGAFieldProgrammableGateArray),即现场可编程门阵列,它是在PALGALCPLD等可编程器件的基础上进一步发展的产物。它是作为(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点[2]。目前以硬件描述语言(VerilogVHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如ANDORXORNOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。



1FPGA内部结构框图
现场可编程门阵列FPGA作为集成度和复杂程度最高的可编程ASIC,主要由与阵列、或阵列、输入缓冲电路、输出宏单元等组成,是ASIC的一种新型门类,它建立在创新的发明构思和先进的EDA技术之上。运算器、乘法器、数字滤波器、二维卷积器等具有复杂算法的逻辑单元和信号处理单元的逻辑设计都可选用FPGA实现。它采用SRAM开关元件的FPGA是易失性的,每次重新加电,FPGA都要重新装入配置数据。突出优点是可反复编程,系统上电时,给FPGA加载不同的配置数据,即可令其完成不同的硬件功能。这种配置的改变甚至可以在系统的运行中进行,实现系统功能的动态重构。传统
的数字逻辑设计使用TTL电平和小规模的数字集成电路来完成逻辑电路图。使用这些
标准的逻辑器件已经被证实是最便宜的手段,但是要求做一些布线和复杂的电路集成.专业.专注.

(焊接调试)等工作,如果出现错误,改动起来特别麻烦。因此,采用传统电子设计方案人员的很大一部分工作主要集中在设备器件之间物理连接、调试以及故障解决方面。正是因为FPGAEDA技术使用了更高级的计算机语言,电路的生成基本上是由计算机来完成,将使用户能较快地完成更复杂的数字电路设计,由于没有器件之间的物理连接,因此调试及故障排除更迅速、有效[3]

2.1.2传统FPGA的不足与改进
在现今的数字系统设计中,以“嵌入式微控制器+FPGA”为核心的体系结构因其强大的处理能力和灵活的工作方式而被广泛采用。嵌入式微控制器的优势在于将微处理器内核与丰富多样的外围接口设备紧密结合,在提供强大的运算、控制功能的同时,降低了系统成本和功耗,因而适合作为数字系统的控制核心;
FPGA的优势在于超高速、丰富的逻辑资源以及用户可灵活配置的逻辑功能,适用于逻辑接口功能多种多样、灵活可变的场合。将二者结合形成优势互补,如有需要,再配以适当的专用芯片(例如

音视频编解码器、数字调制解调器等)。这种体系结构适用于大多数复杂数字系统的
配置方案(例如调试阶段的专用下载电费方式、成品阶段的专用存储器方式)在成本、设计。如系统中包含可编程器件,就必须考虑其功能配置的问题。然而,传统的FPGA
效率、灵活性等方面都存在着明显的不足。针对这样的实际问题,基于嵌入式微控制

FPGA动态配置方案。该方案的提出,旨在基于系统现有的、通用的软硬件资源,尽

可能地提高FPGA配置的效率和灵活性。实践证明,该方案可行、实用,达到了设计目的。

2.1.3FPGA 工作原理
FPGA采用了逻辑单元阵列LCALogicCell Array)这样一个概念,内部包括可配置逻辑模块CLBConfigurableLogic Block)、输出输入模块IOBInputOutput Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有:
1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 2FPGA可做其它全定制或半定制ASIC电路的中试样片。

3FPGA 内部有丰富的触发器和IO引脚。

.专业.专注.

4FPGAASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

5)FPGA 采用高速CHMOS工艺,功耗低,可以与CMOSTTL电平兼容。

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROMPROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。

2.1.4FPGA 配置模式
FPGA 有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从

外设模式可以将FPGA 作为微处理器的外设,由微处理器对其编程。
模式可以支持一片PROM 编程多片FPGA;串行模式可以采用串行PROM 编程FPGA
如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA

的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于

FPGA前所未有的性能和能力水平而带来的新的设计挑战。

2.1.5FPGA 系统设计流程

一般说来,一个比较大的完整的项目应该采用层次化的描述方法:分为几个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具体实现,这就是TOPDOWN(自顶向下)的设计方法。目前这种高层次的设计方法已被广泛采用。高层次设计只是定义系统的行为特征,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。CPLD/FPGA系统设计的工作流程如图2-2所示。

流程说明:
1).工程师按照“自顶向下”的设计方法进行系统划分。
2).输入VHDL代码,这是设计中最为普遍的输入方式。此外,还可以采用图形输

.专业.专注.



入方式(框图、状态图等),这种输入方式具有直观、容易理解的优点。

3).将以上的设计输入编译成标准的VHDL文件。

4).进行代码级的功能仿真,主要是检验系统功能设计的正确性。这一步骤适用于大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。一般情况下,这一仿真步骤可略去。

5).利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库的支持下才能完成。

6).利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,是较为粗略的。一般的设计,也可略去这一步骤。

系统划分①

VHDL 代码或图形方式输入②

适配前时序仿真⑥

适配器⑦

适配后仿真模型

器件编程文件

适配报告

适配后时序仿真

CPLD/FPGA 实现

ASIC 实现

2CPLD/FPGA系统设计流程

7).利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。

8).在适配完成后,产生多项设计结果:(a)适配报告,包括芯片内部资源利用

.专业.专注.

情况,设计的布尔方程描述情况等;(b)适配后的仿真模型;(c)器件编程文件。根据适配后的仿真模型,可以进行适配后时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。如果仿真结果达不到设计要求,就修改VHDL源代码或选择不同速度和品质的器件,直至满足设计要求。

最后将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片CPLD/FPGA中。

2.2VHDL 语言

2.2.1VHDL 语言简介
VHDL的英文全名是Very-High-SpeedIntegrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87)

后,各EDA 公司相继推出了自己的VHDL 设计环境,或宣布自己的设计工具可以和VHDL
硬件描述语言。1993 年,IEEE VHDL 进行了修订,从更高的抽象层次和系统描述能
接口。此后VHDL 在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的

新的世纪中,VHDLVerilog语言将承担起大部分的数字系统设计任务。

VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言[5]

VHDL的英文全写是:VHSICVeryHigh Speed Integrated CircuitHardwareDescriptionLanguage.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC

VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件

特征的语句外,VHDL 的语言形式和描述风格与句法是十分类似于一般的计算机高级语

言。VHDL 的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个
电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分)

.专业.专注.

既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点[6]

2.2.2VHDL 系统设计的特点
与其他硬件描述语言相比,VHDL具有以下特点:
功能强大、设计灵活。VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言虽不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。

支持广泛、易于修改。由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和

强大的系统硬件描述能力。VHDL 具有多层次的设计描述功能,既可以描述系统级
结构化,所以易于修改设计。
电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描

来较大的自由度,使设计人员能够方便地创建高层次的系统模型。

独立于器件的设计、与工艺无关。设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。

很强的移植能力。VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。

易于共享和复用。VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。

2.2.3 VHDL 系统优势 (1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他

.专业.专注.


成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,

从逻辑行为上描述和设计大规模电子系统的重要保证。

(2VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。

3VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。

4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。

5VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计[8]

2.3EDA

EDA(Electronic Design Automation,电子设计自动化)90年代发展起来的

平台上,用相关软件完成设计工作,然后由计算机自动完成逻辑编译、化简、优化、
从事电子线路设计与分析的一门技术。EDA 技术主要以计算机为工具[9]。设计者在EDA

2)如果某一过程存在错误,查找和修改十分不便。

3)设计过程中产生大量文档,不易管理。

4)对于集成电路设计而言,设计实现过程与具体生产工艺直接相关,因此可移植性差。

5)只有在设计出样机或生产出芯片后才能进行实测。

EDA技术有很大不同:
1)采用硬件描述语言作为设计输入。

2)(Library)的引入。

3)设计文档的管理。

4)强大的系统建模、电路仿真功能。

5)适用于高效率大规模系统设计的自顶向下设计方案。

6)全方位地利用计算机自动设计、仿真和测试技术。


.专业.专注.

7)对设计者的硬件知识和硬件经验要求低。
8)高速性能好。

9)纯硬件系统的高可靠性。



2.4.1Quartus II 简介
QuartusII Altera公司的综合性PLD开发软件,支持原理图、VHDLVerilogHDL以及AHDLAlteraHardware DescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

QuartusII 可以在XPLinux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点[10]

Quartus II 支持Altera IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第
三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三
EDA工具。

.专业.专注.

此外,QuartusII 通过和DSPBuilder 工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

MaxplusII 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对MaxplusII 的更新支持,QuartusII 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。AlteraQuartusII 中包含了许多诸如SignalTapIIChipEditor RTLViewer 的设计辅助工具,集成了SOPCHardCopy设计流程,并且继承了MaxplusII 友好的图形界面及简便的使用方法[11]

AlteraQuartus II 作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

AlteraQuartusII 可编程逻辑软件属于第四代PLD开发平台。该平台支

Quartus 平台与CadenceExemplarLogicMentorGraphicsSynopsys
持一个工作组环境下的设计要求,其中包括支持基于Internet 的协作设计。
Synplicity EDA 供应商的开发工具相兼容。改进了软件的LogicLock 模块设

2.4.2 Quartus II 主要特点

1).QuartusII 支持其他公司所提供的EDA工具接口。

2).提供了与结构无关的可编程逻辑设计环境。

3).提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻辑功能器件。

4).软件支持硬件描述语言设计输入选项,包括VHDLVerilogHDL Altera自己的硬件描述语言AHDL



.专业.专注.

3设计思路与系统结构

作为现代集成电路设计的重点与热点,FPGA设计一般采用自顶向下、由粗到细、逐步求精的方法。设计最顶层是指系统的整体要求,最下层是指具体的逻辑电路实现[12]。自顶向下是将数字系统的整体逐步分解为各个子系统和模块,若子系统规模较大则进一步分解为更小的子系统和模块,层层分解,直至整个系统中各子模块关系合理、便于设计实现为止。本文运用EDA中的OuartusII作为软件开发平台,设计了一款基于FPGA的智力竞赛抢答器。

3.1课题研究的内容

1)、设计一个可容纳4组参赛的数字式抢答器,每组设一个按钮,供抢答使用。2)、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。3)、设置一个主持人“复位”按钮。

4)、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显

5)、设置一个计分电路,每组开始预置100分,由主持人记分,答对一次加10分,
示抢答组别,扬声器发出2-3秒的音响。
本系统设计一个智力竞赛抢答器要求具有四路抢答输入,能够识别最先抢答的信

号,显示该台号;对回答问题所用的时间进行计时、显示、超时报警同时具有复位功能和倒计时启动功能。在设计过程中先将系统模块化,然后逐步实现,系统设计原理图如图4



4 抢答器系统原理图


.专业.专注.

3.3电子抢答器的设计

3.3.1功能模块划分
根据对抢答器的功能要求,把要设计的系统划分为六个功能模块:抢答信号判别模块,锁存模块,转换模块,扫描模块,定时与报警模块,译码与显示模块。

3.3.2功能分析
判断模块:该模块用以判断各选手抢答的先后,记录最先抢答的选手号码并不再接受其它输入信号。

锁存模块:该模块用以锁存最先抢答的选手号码,以便输出显示。

转换模块:该模块用来将抢答选手的信息转换为二进制数,以便译码显示。 扫描模块:该模块主要用来扫描显示数据,扫描频率可以调整,便于动态显示。该模块主要完成两个任务:扫描信号的建立和数码管的选择[13]

定时与报警模块:该模块用来对选手进行答题限时,答题时间到后输出报警信号。译码与显示模块:对数据进行译码送出数码管显示。该模块主要任务是完成二进

3个数码管经过扫描信号依次点亮[14,15]
制数到段码的转换。二进制数主要记录最先抢答的选手号码和时间信号,显示结果由

FENG模块是抢答判断模块,在各个选手1234抢答操作后,将四路信号相与,并送出高电平Q给锁存器,锁存当时的按键状态,由于抢答信号是低电平有效,故相与后的结果可以识别最先抢答选手,由于没有时钟同步,所以锁存的延时时间只是硬件延时时间,从而实现锁存错误的概率接近零。

LOCKB模块是锁存器模块,在任一选手按下按键后锁存,锁存的同时送出AIM信号。clr信号为0时,d1d2d3d4的输出都为0;当c1r信号为1时,将dl赋给q1d2赋给q2d3赋给q3d4赋给q4,同时将alm输出为高电平。

COUNT模块是定时模块,实现答题倒计时,在计满100S后送出报警提示。设计中100S时间用0099表示,显示分为高位h,底位l,另外还有限时报警sound。设计时先将

低位从9开始逐一自减,当到0时高位自减1,也就是低位每减少1O,高位就减少1。当
高位从9减少到0时,报警就输出高电平。
CH31A模块为扫描模块,轮流送出需要显示的数据。当sel000时,将d1赋值给

.专业.专注.

q1,同时将01111111赋值给WX选通数码管;当sel001时,将d2赋值给q2,同时将1011lll1赋值给WX选通数码管;当sel011时,将d3赋值给q3,同时将11011111赋值给WX选通数码管。


5抢答器的顶层原理图
CH41A模块是抢答结果转换模块,将抢答结果转换为二进制数。抢答结果低电平有效,当抢答结果dld2d3d4Olll时,输出q0001;当抢答结果dld2d3d41011时,输出q0010;当抢答结果dld2d3d41l0l时,输出q0011;当抢答结果dld2d3d4111O时,输出q0100

SEL模块为片选模块。产生片选信号。此模块相当一个计数器,在时钟下自加。

DISP模块为译码模块,用于将数据转换成段码,以便数码管能正确显示。



.专业.专注.

5电子抢答器的仿真

采用EDA开发TMAX+PLUSⅡ对各个模块的VHDL源程序及顶层电路进行编译、逻辑综合,并对各个模块以及顶层电路都进行了波形仿真。南于文章篇幅原因,本文给出顶层电路的仿真波形。图3是顶层电路模块整体的仿真波形,CK1为系统时钟,CIK2 为动态扫描时钟,h为主持人控制开始键,高电平有效;
1234表示抢答选手号,低电平有效;sound100S超时报警;qh[3..0]q1[3..0]100S 计时显示,qh[3..0]为十位,ql[3..0]为个位;q[7..O]抢答选手的段码。首先由主持人将开始按钮h按下之后,选手1234开始抢答,网中是1号选手最先按下,q[7..O]显示段码结果为06(台号显示为1),此时定时器开始T作做减计数,qh[3..0]ql[3..O]依次减小(为截取整张仿真图。ql[3..0]个位看不清楚),当qh[3..O]ql[3..O]减到0时说明100S的时间已到,sound信号变成高电平.报警器报警,选手停止答题。结束后主持人可以复位后将开始按钮h按下重新进行下一轮的抢答。仿真

并编译通过,最后通过Byteblaster 编程电缆下载文件,将所设计的内容下载到FI
结束后,进行管脚锁定,在pin locationchip 中添加输人输m 端可用的引脚编号,
EX10K 系列EPF10K10LC84—4 器件进行测试。经实际电路测试验证,达到了设计的要

Ch31a 模块:

6Ch31a模块仿真波形
此模块为扫描模块,此时sel相当于一个计数器,当sel000时,输出d1sel001时,输出d2sel010110时,输出1111sel111时,输出d3

Ch41a模块:



.专业.专注.

7 h41a 模块仿真波形
此模块用二进制显示抢答的结果,抢答结果是低电平有效。由仿真图可见,当d1抢答成功时,显示0001d2抢答成功时,显示0010d3抢答成功时显示0011d4抢答成功时显示0100.,无人抢答时显示1111

Sel模块:

8 Sel 模块仿真波形
此模块相当于一个计数器,在每个时钟上升沿到来时,输出就自加1
Count 模块:

9Count 模块仿真波形

此模块实现倒计时功能,初始时为0000,当上升沿到来时低位从1001开始自减1,减到0000时高位开始从1001自减1,知道最后低位、高位都为0

Lockb模块:



.专业.专注.

10Lockb 模块仿真波形

此为锁存模块,主持人按下复位键时,清零。当clk上升沿到来时,将d1赋值

q1d2赋值给q2d3赋值给q3d4赋值给q4

Feng模块:


主持人按下复位键,清零,当有人抢答,即cp 为下降沿时,输出高电平。

Disp模块:

12Disp模块仿真波形

此为译码模块,将二进制转化成代码段,d0000时,输出0111111d0001

时,输出0000110d0010时,输出1011011d0011时,输出1001111d0100

时,输出1100110d0101 时,输出1101101d0110 时,d0111

时,输出0100111d1000时,输出1111111d1001时,输出1101111;其他


时候为0000000

.专业.专注.

整个电路的仿真图:

13顶层电路仿真波形

主持人按下复位键,当有人抢答时,锁存其组号,并开始倒计时。扫描模块将这

些信息转换成段码段后扫描输出。



.专业.专注.

结 论

本文介绍了基于FPGA的智能电子抢答器的设计,本设计使用VHDL语言,对智能抢答器的每一个模块进行分析,设计,编译,并在quartersII软件的支持下,对其进行仿真。通过反复的编译、仿真、检查、修改,证明本次设计的抢答器各项功能复合预定标准。但其中仍存在一些不足之处,请多见谅!





.专业.专注.

致 谢

本设计是在指导老师周广丽老师的精心指导下完成的。周老师有着深厚的理论水平,严谨的治学态度,最可贵的是她会不厌其烦的为我们解决她力所能及的问题。就比如我的一个quartersII的软件她就帮我装了差不多有五遍,可从来都没有一丝的不耐烦。在此我首先向周广利老师致以深深的敬意和由衷的感谢!

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

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



.专业.专注.

参考 文 献

[1]江国强.EDA技术与应用[M]2006,电子工业出版社.

[2]刘开绪.可编程逻辑器件在抢答器电路设计中的应用[J].沈阳工业大学学 ,2007,29(1):lO3—1O6.

[3]胡丹.基于VHDI的智力竞赛抢答器的设计与实现[J].现代机械,2007,(3):54 —55.

[4]章忠全.电子技术基础实验与课程设计[M].中国电力出版社,1999

[5]高曙光.可编程逻辑器件原理、开发与应用[M].西安:西安电子科技大学出 版社,2002

[6]刘开绪.数字式抢答器的设计与实现[J1.电子工程师.2005.969—71[7]阎石.数字电子技术基础[M].北京:高等教育出版社,1999

[9]刘延文,
—59
唐庆玉,段玉生.EDA技术是实现电工学研究型教学的良好手段[J].实 [8]冯祥.可编程逻辑器件在数字系统中的应用[J].国外电子元器件,2001(5):58

技大学出版社,1997.

[12]常青,陈辉煌.可变成专用集成电路及其应用与设计实践经验.北京:国防工 业出版社,1998.

[13]郭勇.EDA技术基础(2)[M].机械工业出版社,2005314—320

[14]Enoch O Hwang.Digital Longic and Microprocessor Design with VHDL[M].

Thomson-Engineering,2005.

[15]SudhakarYalamanchili.Introductory VHDL:from simulation to synthesis[M].Prentice Hall,2001.



.专业.专注.

4电子抢答器源程序

各模块VHDL源代码
1)、抢答鉴别模块FENGVHDL源程序--feng.vhd
LIBRARYIEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY FENG IS
PORT(CP,CLR:INSTD_LOGIC;
Q :OUT STD_LOGIC);
END FENG;
ARCHITECTURE FENG_ARC OF FENG IS
BEGIN

PROCESS(CP,CLR)
BEGIN IF CLR='0'THEN
Q<='1';

END IF;
END PROCESS;
END FENG_ARC;
2)、片选信号产生模块SELVHDL 源程序--sel.vhd
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SEL IS PORT(CLK:IN STD_LOGIC;
a:OUT INTEGER RANGE 0 TO7);
END SEL;
ARCHITECTURE SEL_ARC OF SEL IS --片选信号产生模块SELBEGIN
PROCESS(CLK)
.专业.专注.

VARIABLE AA:INTEGER RANGE 0 TO 7;
BEGIN
IF CLK'EVENT AND CLK='1'THEN
AA:=AA+1;
END IF;
A<=AA;
END PROCESS;
END SEL_ARC;
3)、锁存器模块LOCKBVHDL源程序--lockb.vhd
LIBRARYIEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY LOCKB IS
PORT(D1,D2,D3,D4:IN STD_LOGIC;

Q1,Q2,Q3,Q4,ALM:OUT STD_LOGIC); CLK,CLR:IN STD_LOGIC;
END LOCKB;

PROCESS(CLK)

BEGIN
IF CLR='0'THEN
Q1<='0';
Q2<='0';
Q3<='0';
Q4<='0';
ALM<='0'; --模块LOCKB ELSIF CLK'EVENT AND CLK='1'THEN
Q1<=D1;
Q2<=D2; Q3<=D3;

.专业.专注.

Q4<=D4;
ALM<='1';
END IF;
END PROCESS;
END LOCK_ARC;
4)、转换模块CH41AVHDL源程序--ch41a..vhd
LIBRARYIEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY CH41A IS
PORT(D1,D2,D3,D4:INSTD_LOGIC;
Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END CH41A;
ARCHITECTURE CH41_ARC OF CH41A IS --转换模块CH41A

PROCESS(D1,D2,D3,D4)BEGIN
VARIABLE TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);

CASE TMP IS

WHEN "0111"=>Q<="0001";
WHEN"1011"=>Q<="0010";
WHEN"1101"=>Q<="0011";
WHEN"1110"=>Q<="0100";
WHENOTHERS=>Q<="1111";
END CASE;
ENDPROCESS;
END CH41_ARC;
5)31 模块CH31AVHDL 源程序--ch31a.vhd
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;

.专业.专注.

ENTITYCH31A IS
PORT(SEL:INSTD_LOGIC_VECTOR(2 DOWNTO 0);
D1,D2,D3:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END CH31A;
ARCHITECTURE CH31_ARC OF CH31A IS
BEGIN
PROCESS(SEL,D1,D2,D3)
BEGIN
CASESEL IS
WHEN "000"=>Q<=D1;
WHEN "001"=>Q<=D2;
WHEN "111"=>Q<=D3;

END CASE; WHEN OTHERS=>Q<="1111";
END PROCESS;

倒计时模块COUNT,该模块实现答题时间的倒计时,在计满100s 后送出声音提示。

--count.vhd
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY COUNT IS
PORT(CLK,EN:IN STD_LOGIC; --倒计时模块COUNT
H,L:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
SOUND:OUT STD_LOGIC);
END COUNT;
ARCHITECTURE COUNT_ARC OF COUNT IS BEGIN

.专业.专注.

PROCESS(CLK,EN)
VARIABLE HH,LL:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IFCLK'EVENT AND CLK='1'THEN
IFEN='1'THEN
IFLL=0 AND HH=0 THEN
SOUND<='1';
ELSIF LL=0 THEN
LL:="1001";
HH:=HH-1;
ELSE
LL:=LL-1;
END IF;

SOUND<='0'; ELSE
HH:="1001";

END IF;

H<=HH;
L<=LL;
END PROCESS;
END COUNT_ARC;
7、显示译码模块DISPVHDL 源程序
--disp.vhd
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITYDISP IS
PORT(D:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUTSTD_LOGIC_VECTOR(6 DOWNTO 0));

.专业.专注.

ENDDISP;
ARCHITECTURE DISP_ARC OF DISP IS
BEGIN
PROCESS(D)
BEGIN
CASED IS
WHEN"0000"=>Q<="0111111";
WHEN"0001"=>Q<="0000110";
WHEN"0010"=>Q<="1011011";
WHEN"0011"=>Q<="1001111";
WHEN"0100"=>Q<="1100110";
WHEN"0101"=>Q<="1101101";
WHEN"0110"=>Q<="1111101";

WHEN"1000"=>Q<="1111111"; WHEN"0111"=>Q<="0100111";
WHEN"1001"=>Q<="1101111";

END PROCESS;

ENDDISP_ARC;



.专业.专注.

显示全文