基于FPGA的抢答器设计本科设计Word格式.docx
《基于FPGA的抢答器设计本科设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于FPGA的抢答器设计本科设计Word格式.docx(74页珍藏版)》请在冰豆网上搜索。
目 录
前 言1
第1章绪论3
§
1.1选题背景3
1.1.1EDA技术发展3
1.1.2课题研究的必要性4
1.2研究课题的内容4
第2章系统方案设计6
2.1FPGA简介6
2.1.1FPGA芯片结构8
2.1.2FPGA设计流程12
2.1.3FPGA软件设计13
2.1.4FPGA的应用14
2.2VerilogHDL概述15
2.2.1VerilogHDL简介15
2.2.2VerilogHDL主要功能16
2.2.3VerilogHDL与VHDL的区别16
2.3抢答器总体设计方案17
2.3.1抢答器构成18
2.3.2抢答器工作原理18
第3章抢答器模块设计与实现19
3.1抢答判别模块19
3.2数码管驱动模块20
3.3计时模块22
3.4分频器模块23
3.5计分模块23
3.6锁存模块24
3.7总体模块25
第4章抢答器程序设计、实现与仿真26
4.1抢答判别程序设计26
4.2数码管驱动模块程序设计28
4.3计时模块程序设计29
4.4分频模块程序设计31
4.5计分模块程序设计32
4.6锁存模块程序设计36
结论38
参考文献39
致 谢41
附 录42
前 言
随着人类社会的高速发展,电子行业也随之迅猛的发展,这也使得人们越来越想方设法的是自己更加方便、轻松的生活,例如:
自从有了电视遥控器开启电视,更改电视频道,我们再也不用跑来跑去用手改换频道;
自从有了全自动洗衣机,我们再也不用半自动洗衣机或者人工搓衣板去清洗衣服;
自从有了交通灯,不仅省去了很多人力去指挥交通,而且使交通更加井然有序。
当然,当具有定时、显示、加减分等多功能性的抢答器摆在我们面前时,我想人们不会用举手的方式或者举牌的方式进行抢答了。
如今无论是什么场合,只要举办抢答比赛,我们都能见到抢答器的使用,因为它以客观的电子电路进行状态判断,避免了竞赛中出现的人为的失误,或者由于某些原因造成的不公平。
抢答器能够准确、公正的判断谁是第一抢答者,并且直观的指出谁是第一抢答者。
由于其附加的定时、加减分等功能则能够省去部分人力,且更准确的规范时间。
现在市面上也存在着各种各样的抢答器,但主要流行的是单片机抢答器和数字抢答器,虽然这两款抢答器都能实现抢答器的基本功能,但是都或多或少的存在着一些缺点。
单片机抢答器的设计。
控制系统主要由单片机应用电路、存储器接口电路、显示接口电路组成。
其中单片机89C51是系统工作的核心,它主要负责控制各个部分协调工作.。
虽然单片机实现起来相当灵活,但随着抢答器数组的增加则存在着I/O口不足的问题。
这就不能为以后进行抢答器组数的增加进行改进了。
数字抢答器的设计。
数字抢答器电路主要是由电子元器件组成,数字抢答器由主体电路与扩展电路组成。
虽然数字电路主要有元器件组成,成本较为便宜,且小规模数字逻辑设计思路简单,但是电路实现起来比较麻烦:
进行电路规划,用protel99画出电路的PCB板,硬件的焊接与调试等等程序步骤。
总之硬件设计不仅工作量大,而且要求也高。
介于上面两款抢答器的不足点,本次设计则采用FPGA现场可编程技术,这样就避免了硬件的焊接与调试,同时由于FPGA的I/O端口丰富,可以在设计的基础上略加修改实现多组输入的抢答器,增强了系统的灵活性。
本文介绍了一种采用EDA技术,基于FPGA并在QuartusⅡ工具软件环境下使用Verilog硬件描述语言编写的数码管显示4路抢答器的电路设计、设计思路以及实现功能。
本次设计以EP2C8Q208为核心,完成主持人的控制与参赛队伍的抢答功能;
使用QuartusII软件用VerilogHDL完成代码编写,然后用QuartusII软件实现正确的波形仿真作为主要的技术指标。
根据本次设计的技术要求,特设计了以下各种模块来实现抢答器的基本功能:
抢答判别模块,计时模块,分频器模块,计分模块,锁存器模块,数码管驱动模块等等。
第1章绪论
1.1选题背景
1.1.1EDA技术发展
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
EDA工具软件可大致可分为芯片设计辅助软件、可编程芯片辅助设计软件、系统设计辅助软件等三类。
目前进入我国并具有广泛影响的EDA软件是系统设计软件辅助类和可编程芯片辅助设计软件:
Protel、AltiumDesigner、PSPICE、multisim12(原EWB的最新版本)、OrCAD、PCAD、LSIIogic、MicroSim、ISE、modelsim、Matlab等等。
这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同时还可以进行PCB自动布局布线,可输出多种网表文件与第三方软件接口。
利用EDA技术进行电子系统的设计,具有以下特点:
(1)用软件的方式设计硬件;
用软件方式设计的系统到硬件系统的转换是由有关的考法软件自动完成的;
(2)设计过程中可用有关软件进行各种仿真;
(3)系统可现场编辑,在线升级;
(4)整个系统可集中在一个芯片上,体积小、功耗低、可靠性高;
(5)从以前的“组合设计”转向真正的“自由设计”;
(6)设计的移植性好,效率高;
(7)非常适合分工设计,团体协作。
因此,EDA技术是现代电子设计的发展趋势。
1.1.2课题研究的必要性
现行的抢答的实现方案主要有两种:
一种则是使用单片机,另一种是小规模数字逻辑芯片和触发器。
其中单片机AT89C51是系统工作的核心,它主要负责控制各个部分协调工作.。
然而现如今单片机组成的抢答器也存在着一些缺点,或者应该说是不足点,虽然单片机实现起来相当灵活,但随着抢答器数组的增加则存在着I/O口不足的问题。
优先编码器、锁存器、译码电路将参赛队的输入信号在显示器上输出;
用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。
通过定时电路和译码电路将脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。
现存的抢答器设计方案虽然都能实现抢答器的功能,但是又由于它们自身缺点的限制,有些方面很难或者说很麻烦实现。
然而由于FPGA本身一些的特点、优点能够使基于FPGA制作的抢答器克服这些问题。
FPGA作为新技术具有以下优点:
(1)FPGA的管脚多,容易实现大规模系统。
(2)FPGA的运行速度快。
(3)FPGA内部程序并行运行,有处理更复杂的功能。
(4)FPGA有大量的软核,能够进行二次开发。
所以学习FPGA并利用FPGA进行抢答器的设计是十分必要的。
1.2研究课题的内容
在判别选手是否回答正确后,由主持人控制加减按钮进行给分。
第2章系统方案设计
2.1FPGA简介
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
其主要特点如下:
(1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。
(2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
(3)FPGA内部有丰富的触发器和I/O引脚。
(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
(5)FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
目前以硬件描述语言(VerilogHDL或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,但是功耗较低。
但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的但是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
另外一种方法是用CPLD(复杂可编程逻辑器件备)。
根据市场上对FPGA的需要,则FPGA的主要分类有以下几种:
1)按逻辑功能块的大小分类
可编程逻辑块是FPGA的基本逻辑构造单元。
按照逻辑功能块的大小不同,可将FPGA分为细粒度结构和粗粒度结构两类。
细粒度FPGA的逻辑功能块一般较小,仅由很小的几个晶体管组成,非常类似于半定制门阵列的基本单元,其优点是功能块的资源可以被完全利用,缺点是完成复杂的逻辑功能需要大量的连线和开关,因而速度慢;
粗粒度FPGA的逻辑块规模大,功能强,完成复杂逻辑只需较少的功能块和内部连线,因而能获得较好的性能,缺点是功能块的资源有时不能被充分利用。
近年来随着工艺的不断改进,FPGA的集成度不断提高,硬件描述语言(HDL)的设计方法得到了广泛应用。
由于大多数逻辑综合工具是针对门阵列的结构开发的,细粒度的FPGA较粗粒度的FPGA可以得到更好的逻辑综合结果,因此许多厂家开发出了一些具有更高集成度的细粒度FPGA,如Xilinx公司采用MicroVia技术的一次编程反熔丝结构的XC8100系列,GateField公司采用闪速EPROM控制开关元件的可再编程GF100K系列等,它们的逻辑功能块规模相对都较小。
2)按互连结构分类
根据FPGA内部的连线结构不同,可将其分为分段互连型和连续互连型两类。
分段互连型FPGA中有不同长度的多种金属线,各金属线段之间通过开关矩阵或反熔丝编程连接。
这种连线结构走线灵活,有多种可行方案,但走线延时与布局布线的具体处理过程有关,在设计完成前无法预测,设计修改将引起延时性能发生变化。
连续互连型FPGA是利用相同长度的金属线,通常是贯穿于整个芯片的长线来实现逻辑功能块之间的互连,连接与距离远近无关。
在这种连线结构中,不同位置逻辑单元的连接线是确定的,因而布线延时是固定和可预测的。
3)按编程特性分类
根据采用的开关元件的不同,FPGA可分为一次编程型和可重复编程型两类。
一次编程型FPGA采用反熔丝开关元件,其工艺技术决定了这种器件具有体积小、集成度高、互连线特性阻抗低、寄生电容小及可获得较高的速度等优点;
此外,它还有加密位、反拷贝、抗辐射抗干扰、不需外接PROM或EPROM等特点。
但它只能一次编程,一旦将设计数据写入芯片后,就不能再修改设计,因此比较适合于定型产品及大批量应用。
可重复编程型FPGA采用SRAM开关元件或快闪EPROM控制的开关元件。
FPGA芯片中,每个逻辑块的功能以及它们之间的互连模式由存储在芯片中的SRAM或快闪EPROM中的数据决定。
SRAM型开关的FPGA是易失性的,每次重新加电,FPGA都要重新装入配置数据。
SRAM型FPGA的突出优点是可反复编程,系统上电时,给FPGA加载不同的配置数据,即可令其完成不同的硬件功能。
这种配置的改变甚至可以在系统的运行中进行,实现系统功能的动态重构。
采用快闪EPROM控制开关的FPGA具有非易失性和可重复编程的双重优点,但在再编程的灵活性上较SRAM型FPGA差一些,不能实现动态重构。
此外,其静态功耗较反熔丝型及SRAM型的FPGA高。
2.1.1FPGA芯片结构
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。
FPGA利用小型查找表(16×
1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
FPGA是在PAL、GAL、EPLD、CPLD等可编程器件的基础上进一步发展的产物。
它是作为ASIC领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路有限的缺点。
由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。
查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM工艺的查找表结构,也有一些军品和宇航级FPGA采用Flash或者熔丝与反熔丝工艺的查找表结构。
通过烧写文件改变查找表内容的方法来实现对FPGA的重复配置。
根据数字电路的基本知识可以知道,对于一个n输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n种结果。
所以如果事先将相应的结果存放于一个存贮单元,就相当于实现了与非门电路的功能。
FPGA的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。
查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。
目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的的RAM。
当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。
FPGA芯片主要由7部分完成,分别为:
可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
每个模块功能如下:
1)可编程输入输出单元(IOB)
可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。
通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。
外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA内部。
当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(HoldTime)的要求可以降低,通常默认为0。
为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO可以不同。
只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。
2)可配置逻辑块(CLB)
CLB是FPGA内的基本逻辑单元。
CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路(多路复用器等)和触发器组成。
开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。
数字时钟管理模块(DCM)。
业内大多数FPGA均提供数字时钟管理(Xilinx的全部FPGA均具有这种特性)。
Xilinx推出最先进的FPGA提供数字时钟管理和相位环路锁定。
相位