8路抢答器基于fpga.docx

上传人:b****6 文档编号:5883684 上传时间:2023-01-01 格式:DOCX 页数:15 大小:767.68KB
下载 相关 举报
8路抢答器基于fpga.docx_第1页
第1页 / 共15页
8路抢答器基于fpga.docx_第2页
第2页 / 共15页
8路抢答器基于fpga.docx_第3页
第3页 / 共15页
8路抢答器基于fpga.docx_第4页
第4页 / 共15页
8路抢答器基于fpga.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

8路抢答器基于fpga.docx

《8路抢答器基于fpga.docx》由会员分享,可在线阅读,更多相关《8路抢答器基于fpga.docx(15页珍藏版)》请在冰豆网上搜索。

8路抢答器基于fpga.docx

8路抢答器基于fpga

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

摘要:

本文主要介绍了以FPGA为基础的八路数字抢答器的设计,首先对各模块的功能进行分配,此次设计主要有七个模块,依次为分频模块、抢答模块、加减分模块、倒计时模块、设置倒计时模块、蜂鸣器模块和数字显示模块。

主持人按下开始键可以实现抢答开始,选手号的显示,加减分模块,积分的显示,积分的重置,并启动倒计时模块;若有选手犯规或者倒计时记到五秒,停止倒计时,开启蜂鸣器,并为进入加减分模块做准备。

此次设计程序用QuartusII12.0为软件开发平台,用Verilog语言来编写,使用模块化编程思想,自上向下,通过寄存器变量来控制各个模块的运行。

本次设计采用FPGA来增强时序的灵活性,由于FPGA的I/O端口资源丰富,可以在此基础上稍加修改可以增加很多其他功能的抢答器,因此后期可塑性很强,因为核心是FPGA芯片,外围电路比较简单,可靠性强 、运算速度高,因此便于维护,并且维护费用低。

关键词:

FPGA、抢答器、倒计时、犯规报警、加减分、显示

第四章管脚分配及功能...........................................40

 

第一章绪论

1.1课题研究背景

随着社会的发展,各种竞赛比赛日益增多,抢答器以它的方便快捷、直观反映首先取得发言权的选手等优点,深受比赛各方的辛睐,市场前景一片大好。

另一方面随着电子科技的发展,抢答器的功能以及实现方式也越来越多,产品的可靠性以及准确性也越来越强。

能够实现多路抢答器功能的方式有很多种,主要包括前期的数字电路、模拟电路以及数字电路与模拟电路组合的方式,但是这种方式制作过程比较复杂,并且可靠性准确性不高,研发周期也比较长。

目前对于抢答器的功能描述,如涵盖抢答器、选手答题计时、限时抢答以及犯规组号抢答器具有抢答自锁,暂停复位、电子音乐报声、灯光指示、自动定时等功能,还有工作模式的切换和时间设定,对于这些随着科学技术的发展,肯定还要得到进一步的改进。

发展趋势一般都要趋向于智能化,并且设计更加合理化。

1.2研究内容及意义

通过抢答器的使用,可以在各类比赛中特别是抢答环节,直观明了的看出是哪一组抢到了题目,比起通过肉眼来判断,更加的精确,同时也少了不必要的纷争,使得比赛更加的公平、公开、公正。

抢答器的这些优点使得它在比赛中得以广泛的应用。

抢答器经过发展从最初的只有几个三极管、可控硅、发光管等组成,能通过发光管的指示辨认出选手号码;到现在使用高速处理芯片和集成数字电路;从起初单片机到现在的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软件

此次设计所使用的软件是QuartusII12.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芯片的数字抢答器:

本抢答器有十三个按键以及主频时钟作为输入端,其中八个输入端为八个选手的抢答按键,剩下五个按键分别为主持人开始按键、主复位按键、倒计时复位按键、显示切换按键、倒计时设置按键。

有三个数码管进行显示,其中一个显示抢答者组号,另外两个个用来显示抢答剩余时间和显示抢答时间的设置,因为要复用这两个数码管,所以要用按键做一个显示切换。

用蜂鸣器来提示是否有人犯规抢答,抢到题目时选手号用数码管显示该选手号,蜂鸣器也用作时间剩余五秒时的提示。

开始抢答时,主持人宣布抢答开始,并按下开始抢答按键,各选手开始抢答,其中任意一组抢到题目,则电路进行自锁,其它各组再按按键即为无效,抢到题目后蜂鸣器响,作答结束后依据回答答案是否正确有主持人选择进入加减分模块,每个选手初始分数为五分,答对一道加一分,错一道减一分,不抢答则分数不加不扣。

 

图3.1抢答器功能示意图

抢答器的具体功能如下:

1.抢答开始按键sk,此按键有主此人操控,在主持人宣布抢答开始后,按下此按键,各选手方可开始进行抢答,并显示相应选手号和回答剩余时间,当抢答时间剩余5s,给予响铃提示;

2.如果主持人没有按下开始键而选手抢答,则视为犯规,并显示违规选手号和错误码,给予响声提示;

3.主持人按结束键,可进行新一轮的抢答;

4.抢答时间结束且无人抢答时,执行相应操作;

5.可通过按键设置抢答时间和回答时间,抢答器具备限时抢答功能,限时时间可以自行设置为0-99秒。

6.当主持人对分数进行加减完毕之后,在对应的数码管上显示抢答者的分数,然后进入下一轮抢答。

(该模块是创新模块)。

此次设计以FPGA为基础设计数字抢答器,根据主要的功能设计要求,该设计主要包括抢答输入按键、数码管显示、加减分、倒计时和FPGA系统。

抢答器的结构示意图如下:

 

图3.2:

抢答器结构示意图

设计中FPGA最小系统电路为FPGA可以正常工作时的基本电路,由时钟和复位电路组成(此次设计主控电路采用开发板的电路,只做了外围电路)。

按键输入电路有十三个按键组成,选手号数码显示管有一个八段共阳极数码管组成。

倒计时显示电路两个八段共阳共阳极数码管组成组成。

3.2抢答器程序流程图以及各模块分析

3.2.1抢答器程序结构及主程序流程图

本次设计中程序设计采用verilogHDL语言进行编程,总体编程思路采用模块化编程方式,主要分为四个模块,一个主控制及按键输入模块,一个倒计时模块和蜂鸣器模块,一个抢答组号及积分显示模块,分别对这四个子模块进行独立编程设计,由于verilogHDL语言是一种并行运行的语言,所以可以在同一个频率时钟脉冲下进行各模块的编写,最终在把各个模块整合在一起,所以FPGA的高速性能体现的尤为明显。

3.2.2整体电路框图如下

 

 

图3.3:

主程序流程图

分频产生1s时钟模块

设计思路:

由主频时钟clk1(主频时钟为50MHZ),通过分频产生1HZ的时钟,这个时钟主要是供秒计时显示用,即用于倒数计时显示模块

综合后的端口配置图

倒计时以及倒计时剩5S时报警模块

设计思路:

主要是做一个简单的倒计时算法,倒计时的时间由倒计时设置模块给出,倒计时设置模块把设置后的时间用寄存器hour1存起来,最后赋给倒计时的hour。

其次是做一个剩余五秒的报警,即当剩余五秒时,用一个if语句做判断,随后实现报警提示

综合后的端口配置图

倒计时显示及倒数计时设置显示模块

设计思路:

用于倒计时显示模块及倒数计时设置模块显示。

这个模块要使硬件复用,即两个数码管既要显示倒计时的时间也要显示倒计时的设置时间。

在此,用按键kqh做了一个显示的切换,用if---else实现。

未按下切换键则用于倒计时的正常显示,若按下切换键则用于倒计时的设置显示。

综合后的端口配置图

选手号显示及违规报警模块

设计思路:

显示选手号码以及选手违规时报警。

这里也是要做一个显示的切换,用if----else实现。

即按下开始键sk是正常的,此时正常显示,否则切换到违规时的显示并且报警

综合后的端口配置图

倒计时设置模块

功能介绍:

用if----else语句做一个简单的倒计时算法,可设置的时间范围是0-99s。

将算得的结果用hour1存起来,供倒数计时模块的调用,最后将hour1的值赋给hour。

另外需要注意的是,将倒计时设置的时钟调得小一些,便于更快速度的调好时间。

综合后的端口配置图

顶层模块

功能介绍:

顶层模块主要是端口的定义以及子模块的调用。

这里用了一个ALWAYS语句调用蜂鸣器,因为蜂鸣器有两个功能,分别是违规报警和剩余时间报警,所以在此用if语句做判断,实现蜂鸣器的两个不同功能。

3.3硬件电路图

主控芯片是采用的是ALTERA公司的cycloneIV型号为EP4CE30F23C7N。

FPGA的主控电路由于资源问题,直接用学生本人的开发板。

以下是一些简单的是外设驱动电路,过于简单所以就不多作介绍,仅将电路图给出

3.3.1按键

3.3.2数码管显示

3.3.3蜂鸣器

 

第四章

表:

FPGA开发板对应管脚号及功能表

引脚名

FPGA引脚号

相应功能

fmq

M20

蜂鸣器

K1

H19

一号抢答按键

K2

B21

二号抢答按键

K3

J22

三号抢答按键

K4

H18

四号抢答按键

K5

F19

五号抢答按键

K6

D20

六号抢答按键

K7

D19

七号抢答按键

K8

D17

八号抢答按键

CLK1

T22

50MHZ的时钟

40MHZ的时钟

倒计时设置复位按键

显示切换按键

倒数计时设置按键

倒计时显示复位按键

开始抢答按键

CLK2

G1

daorst

N7

kqh

N6

kt

T1

rst

G14

SK

F15

sm_seg1[7]

J17

选手号数码管a段

sm_seg1[6]

K17

选手号数码管b段

sm_seg1[5]

N20

选手号数码管c段

sm_seg1[4]

N17

选手号数码管d段

sm_seg1[3]

P20

选手号数码管e段

sm_seg1[2]

K18

选手号数码管f段

sm_seg1[1]

K19

选手号数码管g段

sm_seg1[0]

N20

选手号数码管p段

sm_bit1

P17

选手号数码管的位选

sm_bit2[1]

H20

倒计时数码管的个位

sm_bit2[0]

J21

倒计时数码管的十位

sm_seg2[7]

V3

倒计时数码管a段

sm_seg2[6]

G17

倒计时数码管b段

sm_seg2[5]

D7

倒计时数码管c段

sm_seg2[4]

G9

倒计时数码管d段

sm_seg2[3]

V4

倒计时数码管e段

sm_seg2[2]

E7

倒计时数码管f段

sm_seg2[1]

G8

倒计时数码管g段

sm_seg2[0]

G11

倒计时数码管p段

 

第五章总结

经过这一段时间的努力,终于完成了以FPGA为基础的多路数字抢答器的设计。

通过此次设计又一次的巩固了Verilog语言,提升了自己编写代码的能力,在程序的仿真过程中也进一步的学会了很多编程方面的知识,当然以现在自己的水准编写出来的东西功能还比较简单,有时候还不得不花费很长的时间来寻找错误,不过经过这一段时间的努力真的已经有了很大的进步。

总体来说,编写整个程序问题不大,但是调试的的时候出现了较多问题。

但是通过自己在网上查资料,用一些常用的赋值法,最终把一个完整的程序调试出来。

此次课程设计收获最大的莫过于学会了很多调试程序的方法。

在此次课程设计中,我学会了很多收获了很多。

参考文献:

[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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1