基于FPGA的多路数字抢答器的设计综述.docx
- 文档编号:5891485
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:36
- 大小:115.33KB
基于FPGA的多路数字抢答器的设计综述.docx
《基于FPGA的多路数字抢答器的设计综述.docx》由会员分享,可在线阅读,更多相关《基于FPGA的多路数字抢答器的设计综述.docx(36页珍藏版)》请在冰点文库上搜索。
基于FPGA的多路数字抢答器的设计综述
毕业论文(设计)
2013届通信工程专业班级
题目基于FPGA的多路数字抢答器的设计
姓名学号
指导教师职称
二О一三年五月二十五日
内容摘要
本文主要介绍了以FPGA为基础的四路数字抢答器的设计,首先对各模块的功能进行分配,此次设计主要有七个模块,依次为抢答模块、加减分模块、倒计时模块、蜂鸣器模块和数字显示模块。
通过主持人的控制可以实现抢答开始,组号的显示,加减分模块,积分的显示,积分的重置,并启动倒计时模块;通过选手按键来进行标志位改变,停止倒计时,开启蜂鸣器,并为进入加减分模块做准备。
此次设计程序用Verilog语言来编写,使用模块化编程思想,自上向下,通过寄存器变量来控制各个模块的运行,并用QuartusII软件5.0版来进行仿真。
本次设计采用FPGA来增强时序的灵活性,由于FPGA的I/O端口资源丰富,可以在此基础上稍加修改可以增加很多其他功能的抢答器,因此后期可塑性很强,因为核心是FPGA芯片,外围电路比较简单,因此便于维护,并且维护费用低。
关键词
VerilogHDL、四路抢答器、倒计时、仿真、显示
BasedonFPGAmulti-channeldigitalansweringdevicedesign
Author:
Tutor:
Abstract
ThispaperdescribesanFPGA-baseddesignoffourdigitalansweringdevice,firstallocatedfunctionofeachmodule,thedesignofthemainsevenmoduleswereRespondermodule,plusorminussub-module,thecountdownmodule,beepmoduleandadigitaldisplaymodule.ThecontrolcanbeachievedthroughthehostResponderstartinggroupnumberdisplay,integralresetandstartthecountdownmodule;throughkeyplayerstocarryflagchanges,turnthebuzzerandsubtractpointsforentryintothemoduletoprepare.ThedesignprocessusingVeriloglanguagetowrite,theregistervariablestocontroloperationofeachmodule,andusetheQuartusIIsoftwareversion5.0tobesimulated.ThedesignusesFPGAtoenhancetheflexibilityoftiming,becausetheFPGAI/Oportisrichinresources,canbeslightlymodifiedonthebasisofalotofotherfeaturescanbeaddedResponder,solateplasticityisverystrong,becausethecoreistheFPGAchip,theexternalcircuitisrelativelysimple,soeasytomaintain,andlowmaintenancecosts.
Keywords
VerilogHDL,fourResponder,countdown,simulation,showing
目录
基于FPGA的多路数字抢答器的设计
第一章引言
随着社会的发展,各种竞赛比赛日益增多,抢答器以它的方便快捷、直观反映首先取得发言权的选手等优点,深受比赛各方的辛睐,市场前景一片大好。
另一方面随着电子科技的发展,抢答器的功能以及实现方式也越来越多,产品的可靠性以及准确性也越来越强。
能够实现多路抢答器功能的方式有很多种,主要包括前期的数字电路、模拟电路以及数字电路与模拟电路组合的方式,但是这种方式制作过程比较复杂,并且可靠性准确性不高,研发周期也比较长。
目前对于抢答器的功能描述,如涵盖抢答器、选手答题计时、限时抢答以及犯规组号抢答器具有抢答自锁,暂停复位、电子音乐报声、灯光指示、自动定时等功能,还有工作模式的切换和时间设定,对于这些随着科学技术的发展,肯定还要得到进一步的改进。
发展趋势一般都要趋向于智能化,并且设计更加合理化。
通过抢答器的使用,可以在各类比赛中特别是抢答环节,直观明了的看出是哪一组抢到了题目,比起通过肉眼来判断,更加的精确,同时也少了不必要的纷争,使得比赛更加的公平、公开、公正。
抢答器的这些优点使得它在比赛中得以广泛的应用。
抢答器经过发展从最初的只有几个三极管、可控硅、发光管等组成,能通过发光管的指示辨认出选手号码;到现在使用高速处理芯片和集成数字电路;从起初单片机到现在的ARM和FPGA,技术手段进一步成熟,同时技术的发展也为抢答器增加了很多更加贴近比赛的新功能,如选手号码显示、倒计时、选手得分显示等等。
这类抢答器制作并不复杂,但是准确度和可靠性都比较可观,并且易于安装和维护。
第二章FPGA原理及相关开发工具软件的介绍
2.1FPGA的简介
2.1.1FPGA的发展与趋势
现场可编程门阵列FPGA(Field-ProgrammableGateArray),它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。
但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的但是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
另外一种方法是用CPLD(复杂可编程逻辑器件备)。
2.1.2FPGA的工作原理及基本特点
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
FPGA的基本特点主要有:
1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA内部有丰富的触发器和I/O引脚。
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
2.1.3FPGA的开发流程
FPGA开发流程可以分为如下几步:
①设计输入,设计输入主要包括原理图输入、状态图输入、波形图输入以及某种硬件描述语言,比如说是Verilog、VHDL的源程序(此次设计主要是使用Verilog)。
它是利用这些输入去描述一个电路的功能。
②功能仿真,功能仿真就是利用相关仿真工具对相关电路进行功能仿真,也就是对你的输入设计的逻辑功能进行相关的模拟测试。
从功能上来了解电路是否能够达到预期要求。
这里的功能仿真纯粹是模拟性质的,不会设计的任何具体器件的硬件特性。
③综合,综合就是行为或者功能层次表达的电子系统转换成低层次门级电路的网表。
④布局布线,就是将综合后的网表文件针对某一个具体的目标器件进行逻辑映射。
此时应该使用FPGA厂商提供的实现与布局布线工具,根据所选芯片的型号,进行芯片内部功能单元的实际连接与映射。
⑤时序验证,就是要使得时序仿真过程中,建立与保持时间要符合相关的制约,以便数据能被正确的传输。
使仿真既包含门延时,又包含线延时信息。
能较好地反映芯片的实际工作情况。
⑥生成SOF等文件,此文件可以通过调试器把它下载到系统中间去。
而FPGA设计流程的其他步骤基本上由相关工具去完成,因此只要自己设置好相关参数,不要人为干预太多。
而验证的话就需要用户花费大量的时间去完成。
2.1.4FPGA的配置
FPGA有多种配置模式:
并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。
如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题。
如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设计挑战。
例如,领先FPGA厂商Xilinx最近推出的Virtex-5系列采用65nm工艺,可提供高达33万个逻辑单元、1,200个I/O和大量硬IP块。
超大容量和密度使复杂的布线变得更加不可预测,由此带来更严重的时序收敛问题。
此外,针对不同应用而集成的更多数量的逻辑功能、DSP、嵌入式处理和接口模块,也让时钟管理和电压分配问题变得更加困难。
幸运地是,FPGA厂商、EDA工具供应商正在通力合作解决65nmFPGA独特的设计挑战。
不久以前,Synplicity与Xilinx宣布成立超大容量时序收敛联合工作小组,旨在最大程度地帮助系统设计工程师以更快、更高效的方式应用65nmFPGA器件。
设计软件供应商Magma推出的综合工具BlastFPGA能帮助建立优化的布局,加快时序的收敛。
最近FPGA的配置方式已经多元化!
FPGA主要生产厂商:
1、Altera
2、Xilinx
3、Actel
4、Lattice
其中Altera和Xilinx主要生产一般用途FPGA,其主要产品采用RAM工艺。
Actel主要提供非易失性FPGA,产品主要基于反熔丝工艺和FLASH工艺。
2.2软件介绍
2.2.1VerilogHDL的介绍
VerilogHDL是在1983年有GDA(GateWayDesignAutomation)公司首创的一种硬件描述语言,用于数字电子系统设计。
该语言可以让设计者进行各种级别的逻辑设计,进行数字逻辑系统的仿真验证、时序分析、逻辑综合。
它是目前应用最广泛的一种硬件语言。
VerilogHDL作为一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。
被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。
数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。
VerilogHDL语言具有下述描述能力:
设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。
所有这些都使用同一种建模语言。
此外,VerilogHDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。
2.2.2QuartusII软件
此次毕设所使用的软件是QuartusII5.0,使用语言为verilogHDL。
QuartusII是Altera提供的FPGA/CPLD开发集成环境,Altera是世界最大可编程逻辑器件供应商之一。
QuartusII在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+plusII的更新换代产品,其界面友好,使用便捷。
在QuartusII上可以完成设计输入、HDL综合、布线布局(适配)、仿真和下载和硬件测试等流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。
Altera的QuartusII提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具,并为Altera DSP开发包进行系统模型设计提供了集成综合环境。
QuartusII设计工具完全支持VHDL、Verylog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。
QuartusII也可以利用第三方的综合工具,如LeonardoSpectrum、SynplifyPro、FPGAComplierII,并能直接调用这些工具。
同样,QuartusII具备仿真功能,同时也支持第三方的仿真工具,如ModelSim。
此外,QuartusII与MATLAB和DSPBuilder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具。
QuartusII包括模块化的编译器。
编译器包括的功能模块有分析/综合器(Analysis&Synthesis)、适配器(Filter)、装配器(Assembler)、时序分析器(TimingAnalyzer)、设计辅助模块(DesignAssistant)、EDA网表文件生成器(EDANetlistWriter)和编辑数据接口(ComplierDatabaseInterface)等。
可以通过选择StartComplication来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。
还可以通过选择ComplierTool(Tools菜单),在ComplierTool窗口中运行该模块来启动编辑器模块。
在ComplierTool窗口中,可以打开该模块的设置文件或报告文件,或打开其他相关窗口。
图七中所示的上排是QuartusII编译设计主控界面,它显示了QuartusII自动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析与综合、适配、编程文件汇编(装配)、时序参数提取以及编程下载几个步骤。
在图七下排的流程框图,是与上面的QuartusII设计流程相对照的标准的EDA开发流程。
图2.1:
QuartusII设计流程
第三章数字抢答器系统设计方案和主要模块
3.1功能描述及设计架构
本次毕业设计设计了一个基于FPGA芯片的数字抢答器:
本抢答器有九个输入端,其中四个输入端为四组选手的抢答按键,四个个分别为主持人加分按键、减分按键、积分重置按键和开始抢答按键和一个时钟信号输入端。
有两个BCD数码管进行显示,其中一个显示抢答者组号,另外一个用来显示积分,用八个LED灯来进行抢答时间倒计时。
并有蜂鸣器来提示是否已经有人抢答到题目,抢到题目时组号数码管显示该组的组号。
开始抢答时,有主持人宣布抢答开始,并按下开始抢答按键,各组开始抢答,其中任意一组抢到题目,则电路进行自锁,其它各组再按按键即为无效,抢到题目后蜂鸣器响,作答结束后依据回答答案是否正确有主持人选择进入加减分模块,每组初始分数为五分,答对一道加一分,错一道减一分,不抢答则分数不加不扣。
LED倒计时模块
蜂鸣器模块
时钟信号、重置信号
抢答开始信号、各组抢答信号
抢答器
分数显示模块
组号显示模块
抢答模块
图3.1抢答器功能示意图
抢答器的具体功能如下:
1、设置抢答开始开关按键inputEN,此按键有主此人操控,在主持人宣布抢答开始后,按下此按键,各组方可开始进行抢答。
2、抢答器具备限时抢答功能,限时时间为十秒。
当主持人按下抢答开始按键后,八个LED灯全亮,并每秒熄灭一个,全部熄灭则算作是无人抢答,此题作废,主持人可以宣布进入下一道题的抢答环节。
3、抢答器具备锁存功能和现实功能,也就是说当选手抢答时只要按动抢答按键后,锁存相对应的组号,当主持人对分数进行加减完毕之后,在对应的数码管上显示抢答者的分数,然后进入下一轮抢答。
4、主持人在选手抢答之后,作答完成之后,进入加减分数环节,此时主持人可以按两个按键中的一个,其中一个按键用来在回答正确之后加分,两外一个用来在回答错误之后减分,主持人之后可选择两个按键之中的一个来完成此环节。
完成加减分环节之后,主持人可以进入下一环节。
5、关于蜂鸣器,蜂鸣器在选手中任意一人首先按下按键之后,鸣响三秒钟,来宣布此题已经被抢到,并在BCD数码管上显示该组的组号。
如果倒计时结束之后无人抢答,则蜂鸣器不做反应。
此次设计以FPGA为基础设计数字抢答器,根据主要的功能设计要求,该设计主要包括抢答输入按键、BCD数码管显示、LED倒计时和FPGA系统。
抢答器的结构示意图如下:
图3.2:
抢答器结构示意图
设计中FPGA最小系统电路为FPGA可以正常工作时的基本电路,由时钟和复位电路组成。
按键输入电路有八个按键组成,数码显示管有两个个八段共阳极数码管组成。
LED倒计时显示电路有八个个红色的LED灯组成。
3.2抢答器程序流程图以及各模块代码分析
3.2.1抢答器程序结构及主程序流程图
本次毕业设计中程序设计采用verilogHDL语言进行编程,总体编程思路采用模块化编程方式,主要分为三个模块,一个主控制及按键输入模块,一个LED倒计时模块和蜂鸣器模块,一个抢答组号及积分显示模块,分别对这三个子模块进行独立编程设计,由于verilogHDL语言是一种并行运行的语言,所以可以在同一个频率时钟脉冲下进行各模块的编写,最终在把各个模块整合在一起。
主要程序运行方式采用状态机的方法来实现对抢答器的各个环节的控制。
此次所设计的状态一共有四个状态。
一、等待主持人按键开始抢答,在此状态时会一直检测按键信号,当收到主持人的开始抢答信号进入下一个环节。
二、等待四组抢答按键状态,在此状态时,LED倒计时显示模块将开始显示抢答计时,如果在规定时间内有人最先抢答则直接进入下一个状态,而如果无人抢答,计时时间到后也进入下一个状态,此状态下主持人按除复位键以外键无效,而按复位键则直接返回第一个状态,并将积分复位。
三、主持人加减分状态,在此状态时,在主持人完成加减分数之前,其他任何操作都可视为无效。
四、对前面状态中所获取的键值信号进行处理,在程序中为各组设置一个积分寄存器来放积分,更新并保存各组的积分信息,同时将抢答组号和积分发送给BCD显示模块进行显示,最后自动跳转回第一状态。
主程序运行流程图如图3.3。
3.2.2初始化及抢答模块
本次毕业设计中初始化模块主要是为了以后程序的正常运行,在这里进行初始化,给各个后面要用到的寄存器变量赋初值。
主要赋值的对象有抢答标志位、蜂鸣器标志位、蜂鸣器延时标志位、抢答选手标志位、分组分数标志位、组号显示初始值等等。
详细内容见附录。
图3.3:
主程序流程图
抢答模块是本次设计的重点,原理是:
当主持人按下inputEn按键,启动初始化模块,抢答标志位EnFlat发生改变,开始进入抢答时间。
此时各组开始进行抢答,无论哪一组先按下按键,抢答标志位EnFlat改变变为1’b0,禁止其他各组再次进行抢答;同时选手标志位进行改变,与改组组号相对应,主要适用于后续的加减分模块;显示组号的数码管显示抢到题目的这一组的组号;改变蜂鸣器的标志位,蜂鸣器发声,来告诉大家,此题已经有人抢答,大家不要再次抢答了,也告诉主持人可以进行问题的提问,并且可以进行其他的后续操作。
初始化模块及抢答模块的部分源代码:
//------------初始化模块---------------
always@(posedgeclk)//捕捉时钟
begin
//初始化各按键并开始抢答
begin
if(inputEn==1'b0)
begin
//初始化各个标志位和参数
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按下
if(inputL1==1'b0)
begin
//禁止其他选手抢答
EnFlat=1'b0;
//选手标志位改变,用于加减分数模块
answer=3’d1;
//静态数码管显示序号'1',及显示选手对应的组号
Led2=8'hf9;
//指示蜂鸣器发声
BuClk=1'b1;
end
3.2.3加减分数模块
加减分数模块主要是用来对选手的积分进行更改,有主持人控制。
在选手回答完问题,由主持人判定答案是否正确,然后决定是加分还是减分。
加减分模块主要有一个选手标志位,此标志位在抢答模块进行改变,四个分数寄存器来存放分数,最后把各个组的分数放到一个总的寄存器中,主要是为了节省代码。
主要代码如下:
//第一组加减分
if(answer==3’d1)
begin
begin
if(add)
score1=score1+1;
//当主持人判定选手的回答
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 路数 抢答 设计 综述