首页 基于FPGA的多路数字抢答器的设计

基于FPGA的多路数字抢答器的设计

举报
开通vip

基于FPGA的多路数字抢答器的设计基于FPGA的多路数字抢答器的设计 毕 业 论 文(设 计) 2013 届 通信工程 专业 班级 题 目 基于FPGA的多路数字抢答器的设计 姓 名 学号 指导教师 职称 二О一 三 年 五 月 二十五 日 内 容 摘 要 本文主要介绍了以FPGA为基础的四路数字抢答器的设计,首先 个模块,依次为抢答模对各模块的功能进行分配,此次设计主要有七 块、加减分模块、倒计时模块、蜂鸣器模块和数字显示模块。通过主持人的控制可以实现抢答开始,组号的显示,加减分模块,积分的显示,积分的重置,并启动倒计时模块,通过...

基于FPGA的多路数字抢答器的设计
基于FPGA的多路数字抢答器的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 毕 业 论 文(设 计) 2013 届 通信工程 专业 班级 题 目 基于FPGA的多路数字抢答器的设计 姓 名 学号 指导教师 职称 二О一 三 年 五 月 二十五 日 内 容 摘 要 本文主要介绍了以FPGA为基础的四路数字抢答器的设计,首先 个模块,依次为抢答模对各模块的功能进行分配,此次设计主要有七 块、加减分模块、倒计时模块、蜂鸣器模块和数字显示模块。通过主持人的控制可以实现抢答开始,组号的显示,加减分模块,积分的显示,积分的重置,并启动倒计时模块,通过选手按键来进行标志位改变,停止倒计时,开启蜂鸣器,并为进入加减分模块做准备。此次设计程序用Verilog语言来编写,使用模块化编程思想,自上向下,通过寄存器变量来控制各个模块的运行,并用Quartus II软件5.0版来进行仿真。本次设计采用FPGA来增强时序的灵活性,由于FPGA的I/O端口资源丰富,可以在此基础上稍加修改可以增加很多其他功能的抢答器,因此后期可塑性很强,因为核心是FPGA芯片,外围电路比较简单,因此便于维护,并且维护费用低。 关 键 词 Verilog HDL、四路抢答器、倒计时、仿真、显示 1 Based on FPGA multi-channel digital answering device design Author: Tutor: Abstract This paper describes an FPGA-based design of four digital answering device, first allocated function of each module, the design of the main seven modules were Responder module, plus or minus sub-module, the countdown module, beep module and a digital display module. The control can be achieved through the host Responder starting group number display, integral reset and start the countdown module; through key players to carry flag changes, turn the buzzer and subtract points for entry into the module to prepare. The design process using Verilog language to write, the register variables to control operation of each module, and use the Quartus II software version 5.0 to be simulated. The design uses FPGA to enhance the flexibility of timing, because the FPGA I / O port is rich in resources, can be slightly modified on the basis of a lot of other features can be added Responder, so late plasticity is very strong, because the core is the FPGA chip , the external circuit is relatively simple, so easy to maintain, and low maintenance costs. Key words Verilog HDL,four Responder, countdown, simulation, showing 2 目 录 第一章 引 言................. .............................................................. 1 第二章 FPGA原理及相关开发工具软件的介绍 .............................. 3 2.1 FPGA的简介..... ............................................................... 3 2.1.1 FPGA的发展与趋势......... ........................................... 3 2.1.2 FPGA的工作原理及基本特点 ..................................... 4 2.1.3 FPGA的开发 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 .. ...................................................... 5 2.1.4 FPGA的配置... .......................................................... 6 2.2 软件介绍............... ............................................................... 7 2.2.1 Verilog HDL的介绍.................................. ....................8 2.2.2 Quartus II软件.................... ......................................... 8 第三章 数字抢答器系统 设计方案 关于薪酬设计方案通用技术作品设计方案停车场设计方案多媒体教室设计方案农贸市场设计方案 和主要模块 ................................ 11 3.1 功能描述及设计架构...... .................................................... 11 3.2 抢答器程序流程图以及各模块代码分析 ............................. 13 3.2.1 抢答器程序结构及主程序流程图 ............................... 13 3.2.2 初始化及抢答模块 ..................................................... 14 3.2.3 加减分数模块 ............................................................ 18 3.2.4 倒计时模块.................... ............................................ 19 3.2.5 蜂鸣器模块.................... ............................................ 20 3.2.6 重置模块及数码管显示模块 ...................................... 21 3.3 顶层模块连线及开发硬件配置 ........................................... 23 3 3.3,1 电路图........................... ......................................... 23 3.3,2 EP1C6Q240C8芯片及使用到的管脚分配 ............. 24 第四章 抢答器系统仿真与分析.... .................................................. 28 第五章 总 结................... ............................................................ 31 致谢 ................................................................................................ 32 参考文献......................................................................................... 33 附录,源代码 ................................................................................. 34 4 基于FPGA的多路数字抢答器的设计 第一章 引 言 随着社会的发展,各种竞赛比赛日益增多,抢答器以它的方便快捷、直观反映首先取得发言权的选手等优点,深受比赛各方的辛睐,市场前景一片大好。另一方面随着电子科技的发展,抢答器的功能以及实现方式也越来越多,产品的可靠性以及准确性也越来越强。能够实现多路抢答器功能的方式有很多种,主要包括前期的数字电路、模拟电路以及数字电路与模拟电路组合的方式,但是这种方式制作过程比较复杂,并且可靠性准确性不高,研发周期也比较长。 目前对于抢答器的功能描述,如涵盖抢答器、选手答题计时、限时抢答以及犯规组号抢答器具有抢答自锁,暂停复位、电子音乐报声、灯光指示、自动定时等功能,还有工作模式的切换和时间设定,对于这些随着科学技术的发展,肯定还要得到进一步的改进。发展趋势一般都要趋向于智能化,并且设计更加合理化。 通过抢答器的使用,可以在各类比赛中特别是抢答环节,直观明了的看出是哪一组抢到了题目,比起通过肉眼来判断,更加的精确,同时也少了不必要的纷争,使得比赛更加的公平、公开、公正。 抢答器的这些优点使得它在比赛中得以广泛的应用。抢答器经过发展从最初的只有几个三极管、可控硅、发光管等组成, 能通过发光管的指示辨认出选手号码,到现在使用高速处理芯片和集成数字电 1 路,从起初单片机到现在的ARM和FPGA,技术手段进一步成熟,同时技术的发展也为抢答器增加了很多更加贴近比赛的新功能,如选手号码显示、倒计时、选手得分显示等等。这类抢答器制作并不复杂,但是准确度和可靠性都比较可观,并且易于安装和维护。 2 第二章 FPGA原理及相关开发工具软件的介绍 2.1 FPGA的简介 2.1.1 FPGA的发展与趋势 现场可编程门阵列FPGA,Field,Programmable Gate Array,,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路,ASIC,领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 目前以硬件描述语言,Verilog 或 VHDL,所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路,比如AND、OR、XOR、NOT,或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器,Flip,flop,或者其他更加完整的记忆块。系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。 FPGA一般来说比ASIC,专用集成芯片,的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂 3 商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD,复杂可编程逻辑器件备,。 2.1.2 FPGA的工作原理及基本特点 FPGA采用了逻辑单元阵列LCA,Logic Cell Array,这样一个概念,内部包括可配置逻辑模块CLB,Configurable Logic Block,、输出输入模块IOB,Input Output Block,和内部连线,Interconnect,三个部分。FPGA的基本特点主要有, 1,采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 2,FPGA可做其它全定制或半定制ASIC电路的中试样片。 3,FPGA内部有丰富的触发器和I,O引脚。 4,FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置 4 模式,采用不同的编程方式。 加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。 2.1.3 FPGA的开发流程 FPGA开发流程可以分为如下几步, ?设计输入,设计输入主要包括原理图输入、状态图输入、波形图输入以及某种硬件描述语言,比如说是Verilog、VHDL的源程序,此次设计主要是使用Verilog,。它是利用这些输入去描述一个电路的功能。 ?功能仿真,功能仿真就是利用相关仿真工具对相关电路进行功能仿真,也就是对你的输入设计的逻辑功能进行相关的模拟测试。从功能上来了解电路是否能够达到预期要求。这里的功能仿真纯粹是模拟性质的,不会设计的任何具体器件的硬件特性。 ?综合,综合就是行为或者功能层次表达的电子系统转换成低层次门级电路的网表。 ?布局布线,就是将综合后的网表文件针对某一个具体的目标器 5 件进行逻辑映射。此时应该使用FPGA厂商提供的实现与布局布线工具,根据所选芯片的型号,进行芯片内部功能单元的实际连接与映射。 ?时序验证,就是要使得时序仿真过程中,建立与保持时间要符合相关的制约,以便数据能被正确的传输。使仿真既包含门延时,又包含线延时信息。能较好地反映芯片的实际工作情况。 ?生成SOF等文件,此文件可以通过调试器把它下载到系统中间去。而FPGA设计流程的其他步骤基本上由相关工具去完成,因此只要自己设置好相关参数,不要人为干预太多。而验证的话就需要用户花费大量的时间去完成。 2.1.4 FPGA的配置 FPGA有多种配置模式,并行主模式为一片FPGA加一片EPROM的方式,主从模式可以支持一片PROM编程多片FPGA,串行模式可以采用串行PROM编程FPGA,外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题。 如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设 6 计挑战。例如,领先FPGA厂商Xilinx最近推出的Virtex-5系列采用65nm工艺,可提供高达33万个逻辑单元、1,200个I/O和大量硬IP块。超大容量和密度使复杂的布线变得更加不可预测,由此带来更严重的时序收敛问题。此外,针对不同应用而集成的更多数量的逻辑功能、DSP、嵌入式处理和接口模块,也让时钟管理和电压分配问题变得更加困难。幸运地是,FPGA厂商、EDA工具供应商正在通力合作解决65nm FPGA独特的设计挑战。 不久以前,Synplicity与Xilinx宣布成立超大容量时序收敛联合工作小组,旨在最大程度地帮助系统设计工程师以更快、更高效的方式应用65nm FPGA器件。设计软件供应商Magma推出的综合工具Blast FPGA能帮助建立优化的布局,加快时序的收敛。最近FPGA的配置方式已经多元化, FPGA主要生产厂商, 1、Altera 2、Xilinx 3、Actel 4、Lattice 其中Altera和Xilinx主要生产一般用途FPGA,其主要产品采用RAM工艺。Actel主要提供非易失性FPGA,产品主要基于反熔丝工艺和FLASH工艺。 2.2 软件介绍 7 2.2.1 Verilog HDL的介绍 Verilog HDL是在1983年有GDA,GateWay Design Automation,公司首创的一种硬件描述语言,用于数字电子系统设计。该语言可以让设计者进行各种级别的逻辑设计,进行数字逻辑系统的仿真验证、时序分析、逻辑综合。它是目前应用最广泛的一种硬件语言。 Verilog HDL作为一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。 Verilog HDL 语言具有下述描述能力,设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。 2.2.2 Quartus II软件 此次毕设所使用的软件是Quartus II5.0,使用语言为verilog HDL。 Quartus II是Altera提供的FPGA/CPLD开发集成环境,Altera是世界最大可编程逻辑器件供应商之一。Quartus II在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+plus II的更 8 新换代产品,其界面友好,使用便捷。在Quartus II上可以完成设计输入、HDL综合、布线布局,适配,、仿真和下载和硬件测试等流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。 Altera的Quartus II 提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统,SOPC,设计的综合性环境和SOPC开发的基本设计工具,并为Altera DSP开发包进行系统模型设计提供了集成综合环境。Quartus II设计工具完全支持VHDL、Verylog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。Quartus II也可以利用第三方的综合工具,如Leonardo Spectrum、Synplify Pro、FPGA Complier II,并能直接调用这些工具。同样,Quartus II具备仿真功能,同时也支持第三方的仿真工具,如ModelSim。此外,Quartus II与MATLAB和DSP Builder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具。 Quartus II包括模块化的编译器。编译器包括的功能模块有分析/综合器,Analysis & Synthesis,、适配器,Filter,、装配器,Assembler,、时序分析器,Timing Analyzer,、设计辅助模块,Design Assistant,、EDA网表文件生成器,EDA Netlist Writer,和编辑数据接口,Complier Database Interface,等。可以通过选择Start Complication来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。还可以通过选择Complier Tool,Tools 菜单,, 9 在Complier Tool 窗口中运行该模块来启动编辑器模块。在Complier Tool 窗口中,可以打开该模块的设置文件或报告文件,或打开其他相关窗口。 图七中所示的上排是Quartus II编译设计主控界面,它显示了Quartus II自动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析与综合、适配、编程文件汇编,装配,、时序参数提取以及编程下载几个步骤。在图七下排的流程框图,是与上面的Quartus II设计流程相对照的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的EDA开发流程。 图2.1,Quartus II设计流程 10 第三章 数字抢答器系统设计方案和主要模块 3.1 功能描述及设计架构 本次毕业设计设计了一个基于FPGA芯片的数字抢答器,本抢答器有九个输入端,其中四个输入端为四组选手的抢答按键,四个个分别为主持人加分按键、减分按键、积分重置按键和开始抢答按键和一个时钟信号输入端。有两个BCD数码管进行显示,其中一个显示抢答者组号,另外一个用来显示积分,用八个LED灯来进行抢答时间倒计时。并有蜂鸣器来提示是否已经有人抢答到题目,抢到题目时组号数码管显示该组的组号。开始抢答时,有主持人宣布抢答开始,并按下开始抢答按键,各组开始抢答,其中任意一组抢到题目,则电路进行自锁,其它各组再按按键即为无效,抢到题目后蜂鸣器响,作答结束后依据回答答案是否正确有主持人选择进入加减分模块,每组初始分数为五分,答对一道加一分,错一道减一分,不抢答则分数不加不扣。 蜂鸣器模块 LED倒计时模块 时钟信号、重置信号 分数显示模块 抢 答 器 抢答开始信号、各组抢答信号 组号显示模块 抢答模块 11 图3.1 抢答器功能示意图 抢答器的具体功能如下, 1、 设置抢答开始开关按键inputEN,此按键有主此人操控,在主持人宣布抢答开始后,按下此按键,各组方可开始进行抢答。 2、 抢答器具备限时抢答功能,限时时间为十秒。当主持人按下抢答开始按键后,八个LED灯全亮,并每秒熄灭一个,全部熄灭则算作是无人抢答,此题作废,主持人可以宣布进入下一道题的抢答环节。 3、 抢答器具备锁存功能和现实功能,也就是说当选手抢答时只要按动抢答按键后,锁存相对应的组号,当主持人对分数进行加减完毕之后,在对应的数码管上显示抢答者的分数,然后进入下一轮抢答。 4、 主持人在选手抢答之后,作答完成之后,进入加减分数环节,此时主持人可以按两个按键中的一个,其中一个按键用来在回答正确之后加分,两外一个用来在回答错误之后减分,主持人之后可选择两个按键之中的一个来完成此环节。完成加减分环节之后,主持人可以进入下一环节。 5、 关于蜂鸣器,蜂鸣器在选手中任意一人首先按下按键之后,鸣响三秒钟,来宣布此题已经被抢到,并在BCD数码管上显示该组的组号。如果倒计时结束之后无人抢答,则蜂鸣器不做反应。 12 此次设计以FPGA为基础设计数字抢答器,根据主要的功能 设计要求,该设计主要包括抢答输入按键、BCD数码管显示、LED 倒计时和FPGA系统。抢答器的结构示意图如下, LED倒计 时显示电路 时钟信号 FPGA 数码管 按键输入电 显示电路 路 图3.2,抢答器结构示意图 设计中FPGA最小系统电路为FPGA可以正常工作时的基本电路,由时钟和复位电路组成。按键输入电路有八个按键组成,数码显示管有两个个八段共阳极数码管组成。LED倒计时显示电路有八个个红色的LED灯组成。 3.2 抢答器程序流程图以及各模块代码分析 3.2.1 抢答器程序结构及主程序流程图 本次毕业设计中程序设计采用verilog HDL 语言进行编程,总体编程思路采用模块化编程方式,主要分为三个模块,一个主控制及按键输入模块,一个LED倒计时模块和蜂鸣器模块,一个抢答组号及积分显示模块,分别对这三个子模块进行独立编程设计,由于verilog HDL 语言是一种并行运行的语言,所以可以在同一个频率时钟脉冲 13 下进行各模块的编写,最终在把各个模块整合在一起。 主要程序运行方式采用状态机的方法来实现对抢答器的各个环节的控制。此次所设计的状态一共有四个状态。 一、等待主持人按键开始抢答,在此状态时会一直检测按键信号,当收到主持人的开始抢答信号进入下一个环节。 二、等待四组抢答按键状态,在此状态时,LED倒计时显示模块将开始显示抢答计时,如果在规定时间内有人最先抢答则直接进入下一个状态,而如果无人抢答,计时时间到后也进入下一个状态,此状态下主持人按除复位键以外键无效,而按复位键则直接返回第一个状态,并将积分复位。 三、主持人加减分状态,在此状态时,在主持人完成加减分数之前,其他任何操作都可视为无效。 四、对前面状态中所获取的键值信号进行处理,在程序中为各组设置一个积分寄存器来放积分,更新并保存各组的积分信息,同时将抢答组号和积分发送给BCD显示模块进行显示,最后自动跳转回第一状态。 主程序运行流程图如图3.3。 3.2.2 初始化及抢答模块 本次毕业设计中初始化模块主要是为了以后程序的正常运行,在这里进行初始化,给各个后面要用到的寄存器变量赋初值。主要赋值的对象有抢答标志位、蜂鸣器标志位、蜂鸣器延时标志位、抢答选手 14 标志位、分组分数标志位、组号显示初始值等等。详细内容见附录。 开始 InputEn 蜂鸣器 抢答判断 倒计时 加减分判断 组号显示BCD 分数显示 BCD 图3.3, 主程序流程图 抢答模块是本次设计的重点,原理是,当主持人按下inputEn按键,启动初始化模块,抢答标志位EnFlat发生改变,开始进入抢答时间。此时各组开始进行抢答,无论哪一组先按下按键,抢答标志位EnFlat改变变为1’b0,禁止其他各组再次进行抢答,同时选手标志位进行改变,与改组组号相对应,主要适用于后续的加减分模块,显示组号的数码管显示抢到题目的这一组的组号,改变蜂鸣器的标志 15 位,蜂鸣器发声,来告诉大家,此题已经有人抢答,大家不要再次抢 答了,也告诉主持人可以进行问题的提问,并且可以进行其他的后续 操作。 初始化模块及抢答模块的部分源代码, //------------初始化模块--------------- always @ (posedge clk)//捕捉时钟 begin //初始化各按键并开始抢答 begin if(inputEn==1'b0) begin //初始化各个标志位和参数 EnFlat=1'b1; //倒计时开始时8个Led灯全亮 Led1=8'b11111111; //组号显示静态数码管(数码管为共阳极)的控制端,有8位 Led2=8'b11111111; //分数显示数码管控制端 Led3=8'b11111111; //蜂鸣器标志位 16 BuClk=1'b0; //蜂鸣器的控制管脚,低电平为发声音 Buzzer=1'b1; end end //--------抢答模块------- begin if(EnFlat==1'b1) begin //如果按键1按下 if(inputL1==1'b0) begin //禁止其他选手抢答 EnFlat=1'b0; //选手标志位改变,用于加减分数模块 answer=3’d1; //静态数码管显示序号'1',及显示选手对应的组号 Led2=8'hf9; //指示蜂鸣器发声 17 BuClk=1'b1; end 3.2.3 加减分数模块 加减分数模块主要是用来对选手的积分进行更改,有主持人控制。在选手回答完问题,由主持人判定答案是否正确,然后决定是加分还是减分。加减分模块主要有一个选手标志位,此标志位在抢答模块进行改变,四个分数寄存器来存放分数,最后把各个组的分数放到一个总的寄存器中,主要是为了节省代码。主要代码如下, //第一组加减分 if(answer ==3’d1) begin begin if(add) score1=score1+1; //当主持人判定选手的回答正确时,按下add键进行加分操作 else if(stu) score1=score1-1; //当主持人判定选手的回答错误时,按下stu键进行减分操作 end score=score1;//把第一组的分数赋值给分数寄存器 18 end 其他各组与第一组类似,依次类推即可,详细代码,参见附录。 3.2.4 倒计时模块 倒计时模块的主要功能是用来提醒大家赶快进行抢答,当抢答标志位EnFlat为1’b1即开始抢答时,倒计时开始。因为所用的实验箱的频率为48MHz,因此需要现有一个1Hz的分频,即一个计数模块,计数结束之后进入LED灯的左移模块,此处主要使用一个左移运算符<<来进行倒计时,当然也可以通过其他的算法来实现这个功能,但是应该都没有这一个运算符来的简洁。还有一种情况,就是没有人进行抢答,遇上这种情况,如果在倒计时结束之后,没有人进行抢答,则抢答标志位,蜂鸣器标志为改变,蜂鸣声结束之后可以进行下一轮操作。部分源代码如下, //-----------------倒计时模块-------------------- begin if(EnFlat==1'b1) begin if(cnt!=32'd48000000)//计时实现1HZ分频 cnt=cnt+32'd1; else begin cnt=32'd0; 19 Led1=8'b11111111<<1'b1;//Led1左移一个单位,实现一秒的倒计时 end end if(Led1==8'b0)//倒计时结束还没有按键按下,则抢答停止且蜂鸣器响 EnFlat=1'b0; BuClk=1'b1; end 3.2.5 蜂鸣器模块 蜂鸣器模块的主要功能是提醒作用,可以增添抢答器的使用性,蜂鸣器模块主要有一下几部分组成,一个蜂鸣器标志位,蜂鸣器发声标志位,以及一个用于延时的计数模块。蜂鸣器标志位为高电平时,发声标志位改变,蜂鸣器开始发声。因为时钟信号的时间太短,根本听不到,需要加入一个延时模块来,让声音变得可以听清。由此得到的蜂鸣器模块代码如下, //----------蜂鸣器模块----------------- //当蜂鸣器标志位置1时 //进入此蜂鸣器处理程序 begin if(BuClk==1'b1) 20 begin //蜂鸣器发声 Buzzer=1'b0; //延时变量加1 BuL = BuL + 8'd1; //当到达延时的时间时关掉蜂鸣器 if(BuL==8'd255) begin //延时变量复位 BuL=8'd0; //蜂鸣器标志位复位 BuClk=1'b0; //蜂鸣器停掉 Buzzer=1'b1; end end end 3.2.6 重置模块及数码管显示模块 重置模块用来对所有的数据进行重新设置,一般是一场比赛结束 之后进行下一次比赛时方才使用。重置模块并没有什么特别的东西, 主要就是把所有的数据再一次进行设置即可。 21 数码管显示模块是抢答器最重要的部分之一,此次设计中数码管显示模块主要用来显示组号,和各组的积分。显示组号的语句在抢答模块中已经出现,Led2=8'hf9;用直接的赋值语句来实现此功能。而积分显示模块要稍微复杂一些,主要的积分寄存器在加减分模块已经设定, score=score1;//把第一组的分数赋值给分数寄存器 因此数码管显示模块所要做的工作也就不多了,源代码如下, //-----------数码显示模块------------ begin case(score) 4'h0: Led3 = 8'hc0; //显示0 4'h1: Led3 = 8'hf9; //显示1 4'h2: Led3 = 8'ha4; //显示2 4'h3: Led3 = 8'hb0; //显示3 4'h4: Led3 = 8'h99; //显示4 4'h5: Led3 = 8'h92; //显示5 4'h6: Led3 = 8'h82; //显示6 4'h7: Led3 = 8'hf8; //显示7 4'h8: Led3 = 8'h80; //显示8 显示9 4'h9: Led3 = 8'h90; // 4'ha: Led3 = 8'hbf; //显示- 22 default:Led3 = 8'hff; //不显示 endcase end 以上是抢答器各部分的功能简介,编写完程序代码之后在Quartus II软件中可以得到相对应的抢答器模块,此次生成的抢答器模块如下, 图3.4,抢答器模块 3.3 顶层模块连线及开发硬件配置 3.3,1 电路图 源程序写好之后在Quartus II上运行,不出错就可以进行电路模块的显示,之后就可以进行电路图的连接,主要是标明各个输入和输出端口,对于输入端口要标明其是高电平还是低电平,以便用于仿真 23 和后续的一些调试,对于输出端要标明输出端口的宽度,具体的电路图如图3.5所示。 3.3,2 EP1C6Q240C8芯片及使用到的管脚分配 此次设计所用的试验箱上面的FPGA芯片为EP1C6Q240C8,EP1C6Q240C8芯片是Altera公司Cyclone系列芯片中使用较广的一种芯片,它有240个引脚,采用的是PQFP封装(即Plastic Quad Flat Package,塑料方块平面封装),PQFP封装的芯片的四周均有引脚,而且引脚之间距离很小,管脚也很细,一般大规模或超大规模集成电路采用这种封装形式。 此次设计主要使用了试验箱上的8个按键,8个LED灯以及两个个BCD数码管。使用了EP1C6Q240C8其中很少的一部分管脚,具体情况如表3.1。 24 25 图3.5,抢答器模块总电路图 表3.1,FPGA开发板对应管脚号及功能表 引脚名 FPGA引脚号 相应功能 BEEP 175 蜂鸣器 K1 121 抢答开始按键 K2 122 加分操作按键 K3 123 减分操作按键 K4 124 抢答复位按键 K5 143 一号抢答按键 K6 141 二号抢答按键 K7 158 三号抢答按键 K8 156 四号抢答按键 LED8 49 LED7 48 LED6 47 LED1倒计时 LED5 176 LED4 55 LED3 54 LED2 53 LED1 50 DIG0 160 积分BCD数码管a段 DIG1 159 积分BCD数码管b段 26 DIG2 162 积分BCD数码管c段 DIG3 161 积分BCD数码管d段 DIG4 215 积分BCD数码管e段 DIG5 216 积分BCD数码管f段 DIG6 213 积分BCD数码管g段 DIG7 214 积分BCD数码管p段 SEG0 169 组号BCD数码管a段 SEG1 170 组号BCD数码管b段 SEG2 167 组号BCD数码管c段 SEG3 168 组号BCD数码管d段 SEG4 165 组号BCD数码管e段 SEG5 166 组号BCD数码管f段 SEG6 163 组号BCD数码管g段 SEG7 164 组号BCD数码管p段 27 第四章 抢答器系统仿真与分析 此次设计中clk为48MHz,周期不是一个整数计算起来颇为不便。因为在这里只是仿真所以决定,在仿真之时把时钟信号改为20MHz,这样的话周期则为50ns,仿真起来就方便了很多。 第一个仿真波形先假设inputEn一直是高电平,及一直处于按下状态,然后让inputL1先变为高电平,不过这个时间只有几个周期,然后在让其他任意一个选手的输入端为高电平,来检验自锁功能,输入端如此设置后得到的仿真波形图如下, 图4.1,抢答仿真波形图 28 从此图可以看出,当第一组先按下按键之后,虽然有200ns左右延迟,但是对于一个几秒钟的时间来说,可以忽略不计,在现实的操作中不会有太大的影响。有图可以看出Led1只是倒计时了一下就停止了,其他的各个个灯都还处于高电平,再看Led2稳定之后显示出来的数据时11111001即hf9正好是数据1,对应该组的组号。再看Led3因为没有加减信号,标志位answer为0,分数寄存器score初始值为8’hff,而当score为8’hff是Led3不显示。 图5.2:加减分模块仿真图 29 图5.3,重置模块 30 第五章 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 经过这一段时间的努力,终于完成了以FPGA为基础的四路数字抢答器的设计。 在此首先要感谢,指导老师张老师的大力帮助。通过此次毕业设计自己又一次的巩固了Verilog语言,提升了自己编写代码的能力,在程序的仿真过程中也进一步的学会了很多编程方面的知识,当然以现在自己的水准编写出来的东西功能还比较简单,有时候还不得不花费很长的时间来寻找错误,不过经过这一段时间的努力真的已经有了很大的进步。在程序的编写过程中有好多次遇到自己暂时不能解决的问题,不得不停下时,我都会去看其他人的程序,以便寻求灵感。 在仿真的过程中,由于对于Quartus II软件的陌生,在很多仿真和调试方面都不会,但是通过自己在网上查资料,问同学,问老师,慢慢的一步一步,也就会了。真是应了那么一句话,世上无难事只怕有心人。在人生的再次起航前夕,为自己加油。 31 ※ ※ ※ ※ ※ 致谢 在本次设计过程中,张松炜老师给了我很多帮助。有些时候思路卡壳不知道如何进行下一步的时候,只要给张老师打电话,他就能很详细的给出解决方案。有些时候因为自己没有明白过来,张老师还要将好几遍。他总是说大家一起交流交流,从来就没有老师的架子,很和蔼,有长者风范。 得益于张老师的帮助让我在毕业设计过程中少走了很多弯路,也幸遇张老师的帮助,我的毕业设计可以最终完成。 再次感谢张老师在这一段时间的帮助。 特此致敬。 32 参考文献 [1] 夏宇闻.Verilog数字系统设计教程(第二版)[M].北京航空航天大学出版社,2008. [2] 康华光.电子技术基础数字部分(第四版)[M].高等教育出版社,2006. [3] 康华光.电子技术基础模拟部分(第四版)[M].高等教育出版社,2006. [4] 郭来功.基于FPGA的串行接口时钟电路的设计[J].现代电子技术,2007,(18):42-43. [5] 李端 张景颖 李跃卿 卜旭辉 王成硕. VHDL与数字电路设计[J]. 电气开关 2005(02)( [6] 刘开绪.数字式抢答器的设计与实现[J].电子工程师.2005(9)69-71( [7]王传新.FPGA设计基础[M].高等教育出版社,2007. [8]程云长 王莉莉 陈立力.可编程逻辑器件与VHDL语言[M].科学出版社,2005. [9]李洪伟 袁斯华.基于Quartus?的FPGA/CPLD设计[M].电子工业出版社,2006. [10]张洪润 张亚凡.FPGA/CPLD应用设计200例[M].北京航空航天大学出版社,2009. 33 附录:源代码 module qiangda4(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; 34 //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 //初始化各按键并开始抢答 begin if(inputEn==1'b0) begin //初始化各个标志位和参数 35 EnFlat=1'b1; //倒计时开始时8个Led灯全亮 Led1=8'b11111111; //组号显示静态数码管(数码管为共阳极)的控制端,有8位 Led2=8'b11111111; //分数显示数码管控制端 Led3=8'b11111111; //蜂鸣器标志位 BuClk=1'b0; //蜂鸣器的控制管脚,低电平为发声音 Buzzer=1'b1; end end //--------抢答模块------- begin if(EnFlat==1'b1) begin //如果按键1按下 36 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 37 //如果按键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; end end end 38 //-------------------加减分数模块---------------- //第一组加减分 if(answer ==3’d1) begin begin if(add) score1=score1+1; //当主持人判定选手的回答正确时,按下add键进行加分操作 else if(stu) score1=score1-1; //当主持人判定选手的回答错误时,按下stu键进行减分操作 end score=score1;//把第一组的分数赋值给分数寄存器 end //第二组加减分 if(answer ==3’d2) begin begin if(add) score2=score2+1; 39 //当主持人判定选手的回答正确时,按下add键进行加分操作 else if(stu) score2=score2-1; //当主持人判定选手的回答错误时,按下stu键进行减分操作 end score=score2; end //第三组加减分 if(answer ==3’d3) begin begin if(add) score3=score3+1; //当主持人判定选手的回答正确时,按下add键进行加分操作 else if(stu) score3=score3-1; //当主持人判定选手的回答错误时,按下stu键进行减分操作 end score=score3; end 40 //第四组加减分 if(answer ==3’d4) begin begin if(add) score4=score4+1; //当主持人判定选手的回答正确时,按下add键进行加分操作 else if(stu) score4=score4-1; //当主持人判定选手的回答错误时,按下stu键进行减分操作 end score=score4; end //-----------------倒计时模块-------------------- begin if(EnFlat==1'b1) begin if(cnt!=32'd48000000)//计时实现1HZ分频 cnt=cnt+32'd1; 41 else begin cnt=32'd0; Led1=8'b11111111<<1'b1;//Led1左移一个单位,实现一秒的倒计时 end end if(Led1==8'b0)//倒计时结束还没有按键按下,则抢答停止且蜂鸣器响 EnFlat=1'b0; BuClk=1'b1; end //----------蜂鸣器模块----------------- //当蜂鸣器标志位置1时 //进入此蜂鸣器处理程序 begin if(BuClk==1'b1) begin //蜂鸣器发声 Buzzer=1'b0; //延时变量加1 BuL = BuL + 8'd1; 42 //当到达延时的时间时关掉蜂鸣器 if(BuL==8'd255) begin //延时变量复位 BuL=8'd0; //蜂鸣器标志位复位 BuClk=1'b0; //蜂鸣器停掉 Buzzer=1'b1; end end end //-------------重置模块---------------- //按下clr键以后各组参数重置,整个比赛重新开始 if(clr) begin //重置各个标志位和参数 EnFlat=1'b1; //重置时8个Led灯全亮 Led1=8'b11111111; //选手号静态数码管(数码管为共阳极)的控制端,有8位 Led2=8'b11111111; 43 //选手分数显示数码管重置 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 //-----------数码显示模块------------ begin case(score) 4'h0: Led3 = 8'hc0; //显示0 4'h1: Led3 = 8'hf9; //显示1 4'h2: Led3 = 8'ha4; //显示2 44 4'h3: Led3 = 8'hb0; //显示3 4'h4: Led3 = 8'h99; //显示4 4'h5: Led3 = 8'h92; //显示5 4'h6: Led3 = 8'h82; //显示6 4'h7: Led3 = 8'hf8; //显示7 4'h8: Led3 = 8'h80; //显示8 4'h9: Led3 = 8'h90; //显示9 4'ha: Led3 = 8'hbf; //显示- default:Led3 = 8'hff; //不显示 endcase end end endmodule 45
本文档为【基于FPGA的多路数字抢答器的设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_219945
暂无简介~
格式:doc
大小:311KB
软件:Word
页数:40
分类:生活休闲
上传时间:2017-09-30
浏览量:22