基于FPGA的四路抢答器设计.docx

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

基于FPGA的四路抢答器设计.docx

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

基于FPGA的四路抢答器设计.docx

基于FPGA的四路抢答器设计

摘要

本文介绍了以FPGA为基础的四路抢答器的设计,此次设计是一个有4组抢答输入,并具有抢答计时控制,按键消抖以及积分显示等功能的通用型抢答器。

主持人有4个按键控制,可以进行开始抢答,对各抢答小组成绩进行相应加减操作以及所有积分重置。

此次设计程序使用verilog语言编写,并且使用modelsim进行相关仿真,最后在FPGA开发板上烧录程序进行实际操作演示实现了相应功能,达到了此次设计的目的。

本设计采用FPGA来做增强了时序控制的灵活性,同时由于FPGA的IO端口资源丰富,可以再本设计基础上稍加修改可以重复设计出具有多组输入的抢答器。

关键字:

按键消抖;显示;仿真;四路抢答;

 

Abstract

Inthispaper, thedesign offourchannelresponder based onFPGAisproposed.Thedesigncontains fourchannelinput,andalsoithastimingfunction,button-stop-shakingfunction,scoredisplayfunction.Andtheresult of thedesignis a universalresponder.The hosthasfourbuttonstocontrol, inordertostart response,addorsub thescoresforeachgroupandclearallgroupscores.Thedesignprogramusesverilog languagetowritesoftware. And modelsimisusedtosimulatethefunctiononcomputer. Atlast theactualdesignresults aredemonstratedontheFPGAdevelopmentboard,and thefunctionsarewell veified.Theresultachievesthepurposeofthedesign. Thedesignuses FPGAtoenhancetheflexibilityoftimingcontrol.AtthesametimebecauseofIOportresouresinFPGA aremuchrich, if youwanttodesign morechannelsresponder,you just onlyrepeatdesignonthebasicofthe design whichisslightly modified.

Keywords:

 button-stop-shaking;display;simulate; four channelresponder;

 

目  录

1ﻩ引言ﻩ4

2.1ﻩFPGA开发过程与应用5

2.1.1ﻩFPGA发展历程及现状ﻩ5

2.1.2FPGA工作原理ﻩ6

2.1.3FPGA开发流程6

2.2ﻩQuartusII软件7

2.3ﻩSimulink软件8

2.3.1ﻩ代码仿真ﻩ8

2.3.2ﻩ门级仿真和时序仿真9

3实验步骤及仿真调试结果ﻩ9

3.1功能描述及设计架构9

3.2ﻩ抢答器程序流程图和各模块软件代码分析10

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

3.2.2主控制及按键输入模块ﻩ12

3.2.3ﻩ计时模块14

3.2.4ﻩBCD显示模块ﻩ14

3.3ﻩ顶层模块连线及开发板硬件配置15

3.4ﻩmodelsim仿真ﻩ19

4ﻩ结论21

谢辞22

 

1引言

随着电子技术的发展,现在的抢答器功能越来越强,可靠性和准确性也越来越高。

能够实现抢答器功能的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式,但这种方式制作过程复杂,而且准确性与可靠性不高,成品面积大。

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

一般都要趋向于智能化。

在各类竞赛中,特别是做抢答题时,在抢答过程中,为了知道哪一组或哪一名选手先答题,必须要有一个系统来完成这个任务。

如果在抢答过程中,只靠人的视觉是很难判断出哪组先答题。

利用FPGA来设计抢答器,使以上问题得以解决,即使有两组的抢答时间相差几微秒,也可分辨出哪组优先答题。

抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。

早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辨认出选手号码。

现在大多数抢答器均使用高速处理芯片和数字集成电路,从开始的单片机到现在的ARM或者FPGA控制,并越来越走向成熟,同时增加了许多新功能,如选手号码显示、抢按前或抢按后的计时、选手得分显示功能。

像这类抢答器,制作过程简单,准确性与可靠性高,而且安装维护简单。

对于抢答器的应用,如早期的数字电路,随着科技的逐步发展,进而到了单片机以及更高的FPGA或ARM的控制来实现其功能,而且功能齐全,电路简单,成本低,性能高,真正朝着有利的方向发展。

2 FPGA原理及其相关工具软件的介绍

2.1FPGA开发过程与应用

随着现场可编程逻辑器件越来越高的集成度,加上不断出现的I/O标准、嵌入功能、高级时钟管理的支持,使得现场可编程逻辑器越来越广泛。

2.1.1FPGA发展历程及现状

从Xilinx公司推出了世界上第一片FPGA(现场可编程逻辑芯片),FPGA已经历几十年的发展。

从最初的一千多可利用门,发展到90年代的几十万个可利用门,到十一世纪又陆续推出了几千万门的单片FPGA芯片。

FPGA使用灵活,适用性强,特别适用于复杂逻辑的设计,有利用电子系统小型化,而且其开发周期短、开发投入少、芯片价格不断降低,促使FPGA越来越多地取代了ASIC的市场。

2.1.2FPGA工作原理

FPGA采用了逻辑单元阵列LCA(LogicCell Array)这样一个概念,内部包括可配置逻辑模块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开发流程可以分为如下几步:

①设计输入,设计输入主要包括原理图输入、状态图输入、波形图输入以及某种硬件描述语言,比如说是VHDL、Verilog的源程序。

它是利用这些输入去描述一个电路的功能。

②功能仿真,功能仿真就是利用相关仿真工具对相关电路进行功能级别仿真,也就是说对你的输入设计的逻辑功能进行相关的模拟测试。

在功能上面来了解电路是否能够达到预期要求。

这里的功能仿真纯粹是模拟性质的,不会设计的任何具体器件的硬件特性。

③综合,综合就是行为或者功能层次表达的电子系统转换成低层次门级电路的网表。

④布局布线,就是将综合后的网表文件针对某一个具体的目标器件进行逻辑映射。

此时应该使用FPGA厂商提供的实现与布局布线工具,根据所选芯片的型号,进行芯片内部功能单元的实际连接与映射。

⑤时序验证,就是要使得时序仿真过程中,建立与保持时间要符合相关的制约,以便数据能被正确的传输。

使仿真既包含门延时,又包含线延时信息。

能较好地反映芯片的实际工作情况。

⑥生成SOF等文件,此文件可以通过调试器把它下载到系统中间去。

而FPGA设计流程的其他步骤基本上由相关工具去完成,因此只要自己设置好相关参数,不要人为干预太多。

而验证的话就需要用户花费大量的时间去完成。

2.2QuartusII软件

 此次所使用的软件是QuartusII9.0,编程语音是verilogHDL。

Quartus II是Altera提供的FPGA/CPLD开发集成环境,Altera是世界最大可编程逻辑器件供应商之一。

Quartus II在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+plus II的更新换代产品,其界面友好,使用便捷。

在Quartus II上可以完成设计输入、HDL综合、布线布局(适配)、仿真和下载和硬件测试等流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。

Altera的Quartus II提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具,并为Altera DSP开发包进行系统模型设计提供了集成综合环境。

QuartusII设计工具完全支持VHDL、Verylog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。

QuartusII也可以利用第三方的综合工具,如Leonardo Spectrum、SynplifyPro、FPGA ComplierII,并能直接调用这些工具。

同样,QuartusII具备仿真功能,同时也支持第三方的仿真工具,如ModelSim。

此外,QuartusII与MATLAB和DSPBuilder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具。

QuartusII包括模块化的编译器。

编译器包括的功能模块有分析/综合器(Analysis&Synthesis)、适配器(Filter)、装配器(Assembler)、时序分析器(TimingAnalyzer)、设计辅助模块(DesignAssistant)、EDA网表文件生成器(EDANetlistWriter)和编辑数据接口(Complier Database Interface)等。

可以通过选择StartComplication来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。

还可以通过选择Complier Tool(Tools菜单),在ComplierTool 窗口中运行该模块来启动编辑器模块。

在ComplierTool窗口中,可以打开该模块的设置文件或报告文件,或打开其他相关窗口。

图七中所示的上排是Quartus II编译设计主控界面,它显示了QuartusII自动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析与综合、适配、编程文件汇编(装配)、时序参数提取以及编程下载几个步骤。

在图七下排的流程框图,是与上面的QuartusII设计流程相对照的标准的EDA开发流程。

图一、Quartus II设计流程

2.3Simulink软件

2.3.1代码仿真

在完成一个设计的代码编写工作之后,可以直接对代码进行仿真,检测源代码是否符合功能要求。

这时,仿真的对象为HDL代码,比较直观,速度比较快,可以进行与软件相类似的多种手段的调试(如单步执行等)。

在设计的最初阶段发现问题,可以节省大量的精力。

1.设计HDL源代码:

可以使VHDL语言或Verilog语言。

2.测试激励代码:

根据设计要求输入/输出的激励程序,由于不需要进行综合,书写具有很大的灵活性。

3.仿真模型/库:

根据设计内调用的器件供应商提供的模块而定,如:

FIFO(Altera常用的FIFO有:

lpm_fifo /lpm_fifo_dc等)、DPRAM等。

2.3.2 门级仿真和时序仿真

使用综合软件综合后生成的门级网表或者是实现后生成的门级模型进行仿真,不加入时延文件的仿真就是门级仿真。

可以检验综合后或实现后的功能是否满足功能要求,其速度比代码功能仿真要慢,但是比时序仿真要快。

在门级仿真的基础上加入时延文件“.sdf”文件的仿真就是时延仿真。

优点是:

比较真实的反映逻辑的时延与功能,缺点是速度比较慢,如果逻辑比较大,那么需要很长的时间。

在这里仿真以Altera的器件为例。

利用经过综合布局布线的网表和具有时延信息的反标文件进行仿真,可以比较精确的仿真逻辑的时序是否满足要求。

3实验步骤及仿真调试结果

3.1功能描述及设计架构

本文设计了一个通用型电子抢答器:

有8个按键输入,其中4个按键为四组抢答选手的输入,另4个分别为主持人的开始抢答、加分、减分以及积分重置操作按键。

有3个BCD数码管进行显示,其中1个显示抢答者组号,另外2个显示积分。

并有8个LED灯用来提示相应抢答倒计时时间。

四组抢答选手,各自可手动按按钮申请抢答权;回答正确加1 分,回答错误减1分,违规抢答减1分,不抢答不加分不扣分,各组初始积分为10分。

抢答器具体功能如下:

1、设置一个抢答控制开关Start,该开关由主持人控制;只有当主持人按下开始键才能抢答;在按开始按钮前抢答属于违规。

2、抢答器具有定时抢答功能,且一次抢答的时间设定为8秒。

当主持人启动"开始"键后,8个红色LED灯全亮,每流失一秒,LED灯则熄灭一个,从右到左依次熄灭,直到全部熄灭,若仍没人抢答则该轮抢答轮空,自动转到下一轮抢答环节。

3、抢答器具有锁存与显示功能,即选手按动按钮抢答后,锁存相应的组号,当主持人分数加减完毕后,将在3个数码管分别显示所抢答的组号以及该组目前的积分,如果属于违规抢答,则直接跳出抢答环节,直接扣分并显示相应组号和目前积分,进入下一轮抢答。

4、主持人在选手抢答后进入加减分环节,此时主持人可使用2个按键中的其中一个,一个按键用来加分,一个按键用来减分,主持人可选择加、减或者不操作,此环节一样为计时环节,倒计时时间为5秒,当5秒过后主持人未进行操作,则判定这次抢答为既不加分也不减分。

加减分倒计时通过5个红色LED灯进行显示,当有人按下抢答后,该5个LED灯全亮,每过1秒,则熄灭一个,从左到右,直到全部熄灭。

本设计以FPGA为基础设计的电子抢答器,根据设计功能要求,该设计主要包括抢答输入键盘,数码管显示,LED灯显示及FPGA最小系统。

抢答器结构框图如下图所示:

图二、抢答器结构框图

其中FPGA最小系统电路为FPGA 正常工作时的基本电路,由时钟和复位电路组成。

按键输入电路由8个按键组成。

数码管显示电路由1个8段控制共阴BCD和2个经过译码后的4位BCD组成。

LED计时显示电路由8个红色LED灯组成。

3.2抢答器程序流程图和各模块软件代码分析

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

软件设计主要采用verilogHDL 语言进行设计,总体编程思路采用模块化编程方式,主要分为3个模块,一个主控制及按键输入模块,一个LED计时提示模块,一个抢答组号及积分显示模块,分别对这3个子模块进行独立编程设计,并生成元件,并在顶层使用电路连线的方式将3个模块连接起来完成整个设计。

主要程序运行方式采用状态机的方法来实现对抢答器的各个环节的控制。

此次所设计的状态一共有4个状态。

第一个状态为等待主持人按键开始抢答,在此状态时会一直检测按键信号,当收到主持人的开始抢答信号进入下一个环节,如果有人抢答判定为违规抢答,而直接进入状态4进行积分和抢答组号显示。

第二个状态为等待4组抢答状态,在此状态时,LED计时显示模块将开始显示抢答计时,如果在规定时间内有人最先抢答则直接进入下一个状态,而如果无人抢答,计时时间到后也进入下一个状态,此状态下主持人按除复位键以外键无效,而按复位键则直接返回第一个状态,并将积分复位。

第三个状态为主持人加减分状态,在此状态时,LED计时显示模块重置并显示加减分的计时,如果在规定时间内主持人按下加分或减分则直接进入第四状态,而无操作计时时间到后也进入下一个状态,此状态下主持人按复位键则返回第一状态并将积分复位。

其他按键输入无效。

第四个状态对前面状态中所获取的键值信号进行处理,更新并保存各组的积分信息,同时将抢答组号和积分发送给BCD显示模块进行显示,最后自动跳转回第一状态。

下图为主程序运行流程图:

图三、 主程序流程图

3.2.2主控制及按键输入模块

此模块输入有时钟信号clk,8个按键输入信号[7:

0]key_in,加减分计时计完信号score_end,抢答计时计完信号start_end;而输出有加减分开始计时信号score_begin,抢答开始计时信号start_begin,抢答组积分输出信号[4:

0]score_value,抢答组组号输出信号[3:

0] score_num,复位信号clr。

该模块生成图如下:

图四、主控制及按键输入模块框图

此模块主要实现按键输入和判定,以及状态机控制,并与计时模块进行双向通信,发送计时信号和接收计时完成信号,将抢答结果组号和积分信息发送给BCD显示模块进行显示,其中clr信号对其他模块进行同步复位。

此模块的按键输入采用了软件计数消抖的方法,就是在按键按下边沿信号发生后,计数单位开始计数如果计数完后按键状态仍处于按下状态,则判定有按键输入,否则不做操作。

此次设计开发板上使用的时钟频率为20MHz,因此设置计数最大值为4000000则消抖时间大约在200ms左右,符合消抖延时所需要的时间。

此次设计对每个按键均设置独立的消抖计数单位,如果哪个按键的计数最先完成,则判定该键最先按下,并进行相应操作,部分程序如下:

ﻩﻩif(cnt[0]<32'd4000000)

ﻩﻩﻩﻩcnt[0]=cnt[0]+1;

ﻩﻩﻩﻩﻩelse//if(cnt[3]==22'd4000000)

ﻩﻩﻩﻩbegin

ﻩﻩﻩﻩcnt[0]=32'd0;

ﻩﻩﻩﻩﻩﻩkey_value=8'b00100001;

ﻩﻩstate=3'b011;

ﻩﻩﻩﻩend

按键输入的判断采用casez语句实现,只对按键的某一位进行判断,部分程序如下:

ﻩﻩﻩcasez(key_in)

ﻩ  8'b?

?

0:

ﻩﻩBegin

ﻩﻩ……

3.2.3计时模块

此模块输入有时钟信号clk,抢答开始计时信号start_begin,加减分开始计时信号score_begin,复位信号clr,输出信号有抢答结束计时信号start_end,加减分结束计时信号score_end,以及8个LED灯显示控制led_8信号。

该模块生成图如下:

图五、计时模块框图

此模块主要实现当主控模块发来抢答开始计时信号后开始抢答计时,计时时间为8秒,并用8个LED灯进行显示,每次计时时间减少1秒,则一个LED灯熄灭,从右到左,直到8个LED全部熄灭,计时结束返回抢答结束计时信号;当主控模块发来加减分开始计时信号后开始加减分计时,计时时间为5秒,并用5个LED灯进行显示,每次计时减少1秒,则一个LED灯熄灭,从左到右来区别抢答计时的LED灯提示方式,直到5个LED全部熄灭,计时结束返回加减分结束计时信号。

不管在计时过程中还是不计时状态,如果有收到主控模块发来的clr信号,则所有计时停止,重置所有状态。

计时所使用的方式仍然是通过计数实现,部分程序如下:

ﻩif(cnt <32'd20000000)

ﻩcnt=cnt+32'd1;

else

ﻩﻩbegin

ﻩﻩﻩcnt=32'd0;

ﻩled_8=8'b11111111<<cnt_max1;

ﻩﻩﻩﻩcnt_max1=cnt_max1+1;

ﻩend

3.2.4BCD显示模块

此模块输入信号有时钟信号clk,复位信号clr,抢答组积分信号[4:

0] score_value,抢答组组号[3:

0]score_num;输出信号有组号显示控制信号[7:

0]score_disp,积分个位显示控制信号[3:

0] addr_l,积分十位显示控制信号[3:

0]addr_h。

此模块框图如下图:

图六、BCD显示模块框图

此模块实现从主控模块抢答组的信息并进行显示,使用一个BCD显示抢答组的组号,而抢答组积分有两位,所以进行相应处理,取得积分的个位和十位,并使用2个BCD显示其积分。

当收到主控模块发来的clr信号后,3个BCD显示重置为未显示状态。

由于设计开发板上积分显示所使用的2个BCD有编码芯片,所以可以直接输出值进行显示,而组号显示所使用的BCD是直接8段控制,需要进行编码操作,其部分程序如下:

case(score_num)

4'd1:

score_disp=8'b00000110;

4'd2:

score_disp=8'b01011011;

4'd3:

score_disp=8'b01001111;

4'd4:

score_disp=8'b01100110;

default:

;

endcase

3.3顶层模块连线及开发板硬件配置

此次设计顶层模块不是通过程序例化的方式添加子模块,而是使用电路图连线的方式,将每个模块编译成功后生成的器件图导入到顶层模块中,并使用连线直接将各模块直接连接,并设置整个顶层总模块的输入和输出,其具体连线图如下:

图七、顶层模块连线图

此次设计中进行实物验证的FPGA开发板所使用芯片型号为CycloneII系列中EP2C5T144,此次设计中主要用到了开发板上的8个按键,8个LED灯以及3个BCD数码管,相应硬件引脚对应名称如下表:

引脚名

FPGA引脚号

相应功能

Clk

P17

给FPGA提供20Mhz时钟信号

K1

P57

抢答开始按键

K2

P58

加分操作按键

K3

P59

减分操作按键

K4

P60

抢答复位按键

K5

P63

一号抢答按键

K6

P64

二号抢答按键

K7

P65

三号抢答按键

K8

P67

四号抢答按键

LED8

P9

LED计时显示1

LED7

P8

LED计时显示2

LED6

P7

LED计时显示3

LED5

P4

LED计时显示4

LED4

P3

LED计时显示5

LED3

P144

LED计时显示6

LED2

P143

LED计时显示7

LED1

P142

LED计时显示8

LEDA-d0

P27

积分个位BCD数码管d0

LEDA-d1

P43

积分个位BCD数码管d1

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

当前位置:首页 > 解决方案 > 学习计划

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

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