《基于FPGA的抢答器设计_本科毕业设计(65页).doc》由会员分享,可在线阅读,更多相关《基于FPGA的抢答器设计_本科毕业设计(65页).doc(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于FPGA的抢答器设计_本科毕业设计-第 61 页基于FPGA的抢答器设计摘 要本文介绍了一种采用EDA技术,基于FPGA并在Quartus工具软件环境下使用Verilog硬件描述语言编写的数码管显示4路抢答器的电路设计。本次设计的抢答器能够同时供应4位选手或者4个代表队进行抢答比赛,分别使用4个按钮a,b,c,d表示。同时需要设置系统复位和抢答控制开关,这需由主持人控制。主持人在允许抢答的情况下,计时器开始从30s开始倒计时,直到有人抢答成功后,由锁存器将时间锁存住,此时数码管上将显示剩余时间及抢答成功选手号码,同时对应选手的LED灯也被点亮。在判断选手是否回答正确后,由主持人控制加减按
2、钮进行给分。在一轮比赛结束后,主持人按下复位按钮,则除了计分模块外,其他模块都复位为初始时刻,为下一轮的比赛做好准备。系统芯片主要采用EP2C8Q208,由抢答判别模块,计时模块,分频器模块,计分模块,锁存器模块,数码管驱动模块组成。经过编译及其仿真所设计的程序,该设计的抢答器基本能够实现此次设计的要求,从而完成了抢答器应具备的功能。关键词:抢答器,数码显示,硬件描述语言,可编程逻辑门阵列FPGA-BASED RESPONDER DESIGNABSTRACTThis article introduces the design of 4 answering device circuit usin
3、g an EDA technology Verilog HDL language in FPGA and Quartus environment.At the same time,the 4 answering device circuit is displayed by the digital.The Responder can also supply four players or four teams to answer in the game, respectively, using four buttons a, b, c, d. Setting reset and answer i
4、n a system control switch, which controls required by the moderator. When the moderator allows to answer, the timer starts counts down from the 30s until someone answers successfully, by the time the latch latches will to live, then the remaining time and the number of the player who responds succes
5、sfully will be displayed on the digital tube, at the same time the LED of the corresponding player lights will be lighted. Determined whether the contestant answers correctly, the moderator will give points by controlling the addition and subtraction button. At the end of the game, the moderator pre
6、sses the reset button, others modules are reseted to the initial time for the next round of the game except the scoring module.The system uses mainly the EP2C8Q208. At the same time the system is made from the answer in decision block, timing module, divider block, scoring module latch module, LED d
7、river modules. After compilation and simulation of the design process, the design Responder can basically achieve the design requirements, thus completing the Responder function.KEY WORDS:Responder, Digital display, HDL ,FPGA目录前言1第1章 绪论31.1选题背景31.1.1EDA技术发展31.1.2课题研究的必要性41.2研究课题的内容4第2章 系统方案设计62.1FPG
8、A简介62.1.1FPGA芯片结构82.1.2FPGA设计流程122.1.3FPGA软件设计132.1.4FPGA的应用142. 2Verilog HDL概述152.2.1Verilog HDL简介152.2.2Verilog HDL主要功能162.2.3Verilog HDL与VHDL的区别162.3抢答器总体设计方案172.3.1抢答器构成182.3.2抢答器工作原理18第3章 抢答器模块设计与实现193.1抢答判别模块193.2数码管驱动模块203.3计时模块223.4分频器模块233.5计分模块233.6锁存模块243.7总体模块25第4章 抢答器程序设计、实现与仿真264.1抢答判别
9、程序设计264.2数码管驱动模块程序设计284.3计时模块程序设计294.4分频模块程序设计314.5计分模块程序设计324.6锁存模块程序设计36结 论38参考文献39致谢41附录42前言随着人类社会的高速发展,电子行业也随之迅猛的发展,这也使得人们越来越想方设法的是自己更加方便、轻松的生活,例如:自从有了电视遥控器开启电视,更改电视频道,我们再也不用跑来跑去用手改换频道;自从有了全自动洗衣机,我们再也不用半自动洗衣机或者人工搓衣板去清洗衣服;自从有了交通灯,不仅省去了很多人力去指挥交通,而且使交通更加井然有序。当然,当具有定时、显示、加减分等多功能性的抢答器摆在我们面前时,我想人们不会用举
10、手的方式或者举牌的方式进行抢答了。如今无论是什么场合,只要举办抢答比赛,我们都能见到抢答器的使用,因为它以客观的电子电路进行状态判断,避免了竞赛中出现的人为的失误,或者由于某些原因造成的不公平。抢答器能够准确、公正的判断谁是第一抢答者,并且直观的指出谁是第一抢答者。由于其附加的定时、加减分等功能则能够省去部分人力,且更准确的规范时间。现在市面上也存在着各种各样的抢答器,但主要流行的是单片机抢答器和数字抢答器,虽然这两款抢答器都能实现抢答器的基本功能,但是都或多或少的存在着一些缺点。单片机抢答器的设计。控制系统主要由单片机应用电路、存储器接口电路、显示接口电路组成。其中单片机89C51是系统工作
11、的核心,它主要负责控制各个部分协调工作.。虽然单片机实现起来相当灵活,但随着抢答器数组的增加则存在着I/O口不足的问题。这就不能为以后进行抢答器组数的增加进行改进了。数字抢答器的设计。数字抢答器电路主要是由电子元器件组成,数字抢答器由主体电路与扩展电路组成。虽然数字电路主要有元器件组成,成本较为便宜,且小规模数字逻辑设计思路简单,但是电路实现起来比较麻烦:进行电路规划,用protel99画出电路的PCB板,硬件的焊接与调试等等程序步骤。总之硬件设计不仅工作量大,而且要求也高。介于上面两款抢答器的不足点,本次设计则采用FPGA现场可编程技术,这样就避免了硬件的焊接与调试,同时由于FPGA的I/O
12、端口丰富,可以在设计的基础上略加修改实现多组输入的抢答器,增强了系统的灵活性。本文介绍了一种采用EDA技术,基于FPGA并在Quartus工具软件环境下使用Verilog硬件描述语言编写的数码管显示4路抢答器的电路设计、设计思路以及实现功能。本次设计以EP2C8Q208为核心,完成主持人的控制与参赛队伍的抢答功能;使用Quartus II软件用Verilog HDL完成代码编写,然后用Quartus II软件实现正确的波形仿真作为主要的技术指标。根据本次设计的技术要求,特设计了以下各种模块来实现抢答器的基本功能:抢答判别模块,计时模块,分频器模块,计分模块,锁存器模块,数码管驱动模块等等。经过
13、编译及其仿真所设计的程序,该设计的抢答器基本能够实现此次设计的要求,从而完成了抢答器应具备的功能。第1章 绪论1.1 选题背景1.1.1 EDA技术发展EDA是电子设计自动化(Electronic DesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,
14、并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。EDA工具软件可大致可分为芯片设计辅助软件、可编程芯片辅助设计软件、系统设计辅助软件等三类。目前进入我国并具有广泛影响的EDA软件是系统设计软件辅助类和可编程芯片辅助设计软件:Protel、Altium Designer、PSPICE、multisim12(原EWB的最新版本)、OrCAD、PCAD、LSIIogic、MicroSim、ISE、modelsim、Matlab等等。这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同时还可以进行PCB自动布局布线,可输
15、出多种网表文件与第三方软件接口。利用EDA技术进行电子系统的设计,具有以下特点:(1) 用软件的方式设计硬件;用软件方式设计的系统到硬件系统的转换是由有关的考法软件自动完成的;(2) 设计过程中可用有关软件进行各种仿真;(3) 系统可现场编辑,在线升级;(4) 整个系统可集中在一个芯片上,体积小、功耗低、可靠性高;(5) 从以前的“组合设计”转向真正的“自由设计”;(6) 设计的移植性好,效率高;(7) 非常适合分工设计,团体协作。因此,EDA技术是现代电子设计的发展趋势。1.1.2 课题研究的必要性现行的抢答的实现方案主要有两种:一种则是使用单片机,另一种是小规模数字逻辑芯片和触发器。单片机
16、抢答器的设计。控制系统主要由单片机应用电路、存储器接口电路、显示接口电路组成。其中单片机AT89C51是系统工作的核心,它主要负责控制各个部分协调工作.。然而现如今单片机组成的抢答器也存在着一些缺点,或者应该说是不足点,虽然单片机实现起来相当灵活,但随着抢答器数组的增加则存在着I/O口不足的问题。这就不能为以后进行抢答器组数的增加进行改进了。数字抢答器的设计。数字抢答器电路主要是由电子元器件组成,数字抢答器由主体电路与扩展电路组成。优先编码器、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将脉冲产生的信号在显
17、示器上输出实现计时功能,构成扩展电路。虽然数字电路主要有元器件组成,成本较为便宜,且小规模数字逻辑设计思路简单,但是电路实现起来比较麻烦:进行电路规划,用protel99画出电路的PCB板,硬件的焊接与调试等等程序步骤。总之硬件设计不仅工作量大,而且要求也高。现存的抢答器设计方案虽然都能实现抢答器的功能,但是又由于它们自身缺点的限制,有些方面很难或者说很麻烦实现。然而由于FPGA本身一些的特点、优点能够使基于FPGA制作的抢答器克服这些问题。FPGA作为新技术具有以下优点:(1) FPGA的管脚多,容易实现大规模系统。(2) FPGA的运行速度快。(3) FPGA内部程序并行运行,有处理更复杂
18、的功能。(4) FPGA有大量的软核,能够进行二次开发。所以学习FPGA并利用FPGA进行抢答器的设计是十分必要的。1.2 研究课题的内容本次设计的抢答器能够同时供应4位选手或者4个代表队进行抢答比赛,分别使用4个按钮a,b,c,d表示。同时需要设置系统复位和抢答控制开关,这需由主持人控制。主持人在允许抢答的情况下,计时器开始从30s开始倒计时,直到有人抢答成功后,由锁存器将时间锁存住,此时数码管上将显示剩余时间及抢答成功选手号码,同时对应选手的LED灯也被点亮。在判别选手是否回答正确后,由主持人控制加减按钮进行给分。在一轮比赛结束后,主持人按下复位按钮,则除了计分模块外,其他模块都复位为初始
19、时刻,为下一轮的比赛做好准备。第2章 系统方案设计2.1 FPGA简介FPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。其主要特点如下:(1) 采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。(2) FPGA可做其它全定制或半定制ASIC电路的中试样片。(3) FPGA内部有丰富的触发器和I/O引脚。(4) FPGA是AS
20、IC电路中设计周期最短、开发费用最低、风险最小的器件之一。(5) FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可
21、。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。目前以硬件描述语言(Verilog HDL或 VHDL)所完成的电路设计,可以经过简 单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。FPGA一般来说比ASIC(专用集成芯片)的速
22、度要慢,无法完成复杂的设计,但是功耗较低。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。根据市场上对FPGA的需要,则FPGA的主要分类有以下几种:1) 按逻辑功能块的大小分类可编程逻辑块是FPGA的基本逻辑构造单元。按照逻辑功能块的大小不同,可将FPGA分为细粒度结构和粗粒度结构两类。细粒度FPGA的逻辑功能块一般较小,仅由很小的几个晶
23、体管组成,非常类似于半定制门阵列的基本单元,其优点是功能块的资源可以被完全利用,缺点是完成复杂的逻辑功能需要大量的连线和开关,因而速度慢;粗粒度FPGA的逻辑块规模大,功能强,完成复杂逻辑只需较少的功能块和内部连线,因而能获得较好的性能,缺点是功能块的资源有时不能被充分利用。近年来随着工艺的不断改进,FPGA的集成度不断提高,硬件描述语言(HDL)的设计方法得到了广泛应用。由于大多数逻辑综合工具是针对门阵列的结构开发的,细粒度的FPGA较粗粒度的FPGA可以得到更好的逻辑综合结果,因此许多厂家开发出了一些具有更高集成度的细粒度FPGA,如Xilinx公司采用MicroVia技术的一次编程反熔丝
24、结构的XC8100系列,GateField公司采用闪速EPROM 控制开关元件的可再编程GF100K系列等,它们的逻辑功能块规模相对都较小。2) 按互连结构分类根据FPGA内部的连线结构不同,可将其分为分段互连型和连续互连型两类。分段互连型FPGA中有不同长度的多种金属线,各金属线段之间通过开关矩阵或反熔丝编程连接。这种连线结构走线灵活,有多种可行方案,但走线延时与布局布线的具体处理过程有关,在设计完成前无法预测,设计修改将引起延时性能发生变化。连续互连型FPGA是利用相同长度的金属线,通常是贯穿于整个芯片的长线来实现逻辑功能块之间的互连,连接与距离远近无关。在这种连线结构中,不同位置逻辑单元
25、的连接线是确定的,因而布线延时是固定和可预测的。3) 按编程特性分类根据采用的开关元件的不同,FPGA可分为一次编程型和可重复编程型两类。一次编程型FPGA采用反熔丝开关元件,其工艺技术决定了这种器件具有体积小、集成度高、互连线特性阻抗低、寄生电容小及可获得较高的速度等优点;此外,它还有加密位、反拷贝、抗辐射抗干扰、不需外接PROM或EPROM等特点。但它只能一次编程,一旦将设计数据写入芯片后,就不能再修改设计,因此比较适合于定型产品及大批量应用。可重复编程型FPGA采用SRAM开关元件或快闪EPROM控制的开关元件。FPGA芯片中,每个逻辑块的功能以及它们之间的互连模式由存储在芯片中的SRA
26、M或快闪EPROM中的数据决定。SRAM型开关的FPGA是易失性的,每次重新加电,FPGA都要重新装入配置数据。SRAM型FPGA的突出优点是可反复编程,系统上电时,给FPGA加载不同的配置数据,即可令其完成不同的硬件功能。这种配置的改变甚至可以在系统的运行中进行,实现系统功能的动态重构。采用快闪EPROM控制开关的FPGA具有非易失性和可重复编程的双重优点,但在再编程的灵活性上较SRAM型FPGA差一些,不能实现动态重构。此外,其静态功耗较反熔丝型及SRAM型的FPGA高。2.1.1 FPGA芯片结构FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可
27、配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(161RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加
28、载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。FPGA是在PAL、GAL、EPLD、CPLD等可编程器件的基础上进一步发展的产物。它是作为ASIC领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路有限的缺点。 由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM工艺的查找表结构,也有一些军品和宇航
29、级FPGA采用Flash或者熔丝与反熔丝工艺的查找表结构。通过烧写文件改变查找表内容的方法来实现对FPGA的重复配置。 根据数字电路的基本知识可以知道,对于一个n输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n种结果。所以如果事先将相应的结果存放于一个存贮单元,就相当于实现了与非门电路的功能。FPGA的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。 查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的 的RAM。 当用户通过原
30、理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。FPGA芯片主要由7部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。每个模块功能如下:1) 可编程输入输出单元(IOB)可编程输
31、入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA 内部。当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为0。为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口
32、电压VCCO决定,一个bank只能有 一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。2) 可配置逻辑块(CLB)CLB是FPGA内的基本逻辑单元。CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路(多路复用器等)和触发器组成。开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。数字时钟管理模块(DCM)。业内大多数FPGA均提供数字时钟管理(Xilinx的全部FPGA均具有这种特性)。Xilinx推出最先进的FPGA提供数字时
33、钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。3) 丰富的布线资源布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片 Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。4) 底层内嵌功能单元内嵌功能模块主要
34、指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等软处理核(SoftCore)。现在越来越丰富的内嵌功能单元,使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。5) 内嵌专用硬核内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。6) 嵌入式块RAM(BRAM)大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。块RAM可被配置为单端口RAM、双
35、端口RAM、内容地址存储器 (CAM)以及FIFO等常用存储结构。RAM、FIFO是比较普及的概念,在此就不冗述。CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入 CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将 FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素。单片块RAM的容量为18k比特,即位宽为18比特、深度为1024,可以根据需要改变其位宽和深度,但要满足两个原则:首先,修改后的容量(位宽 深度)不能大于1
36、8k比特;其次,位宽最大不能超过36比特。当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而 不再受上面两条原则约束。7) 数字时钟管理模块(DCM)业内大多数FPGA均提供数字时钟管理(Xilinx的全部FPGA均具有这种特性)。Xilinx推出最先进的FPGA提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。2.1.2 FPGA设计流程一般来说,完整的FPGA/CPLD设计流程包括:(1) 电路功能设计,系统设计之前,首要的是方案论证、系统设计和FPGA芯片选择等准备工作。一般采用自顶向下的设计方法将系统
37、分成若干基本单元,然后将基本单元划分成下一层的基本单元,一直这样就行下去,直到可以直接使用EDA元件库为止。(2) 设计输入,常用的方法是硬件描述语言和原理图输入方式。 (3) 功能仿真,验证设计电路的逻辑功能。 (4) 综合优化(synthesis),综合优化是指将HDL语言、原理图等设计输入翻译成由与、或、非门、RAM、触发器等基本逻辑单元组成的逻辑网表,并根据目标与要求(约束条件)优化生成的逻辑网表,输出edf和edn等文件,供FPGA/CPLD厂家的布局布线器进行实现。 (5) 综合后仿真,检查综合结果是否与原设计一致,仿真时把综合生成的标准延时文件反标注到综合仿真模型中,可估计门延时
38、带来的影响。但这一步骤不能估计线延时,因此和布线后的仿真情况还有一定的差距,并不十分准确。(6) 实现(Implementation),实现是将综合生成的逻辑网表配置到具体的FPGA芯片上,Xilinx的实现过程分为翻译(Translate)、映射(Map)、和布局布线(Place&Route)。布局布线是其中最重要的过程,布局是将逻辑网表中的硬件原语和底层单元合理得配置到芯片内部的硬件结构上,并且需要在速度最优和面积最优之间做出选择。布线时根据布局的拓扑结构,利用芯片内部的各种连线资源合理准确的连接各个元件。 (7) 时序仿真与验证,将布局布线后的延时信息反标注到网表中用来检测时序工作情况,
39、时序仿真包括的延时信息最全,也最精确,能较好的反映芯片的实际工作情况。有是为了保证设计的可靠性,在时序仿真后还要做一些验证,可以用ISE内嵌的时序分析工具完成静态时序分析(STA,Static Timing Analyzer),也可以用第三方验证工具(如Synopsys的Formality验证工具,PrimeTime静态时序分析工具等)进行验证。可以用ISE内嵌的FPGA Editor和Chip Viewer观察芯片内部的连接于配置情况,或者使用ISE内嵌的ChipScope Pro进行在线逻辑分析。(8) 调试与加载配置,就是在线调试或者将生成的配置文件写入芯片中进行测试。在ISE中对应的工
40、具就是iMPACT。FPGA设计流程图如图2-1所示。图2-1 FPGA设计流程图2.1.3 FPGA软件设计FPGA软件设计可分为两大块:编程语言和编程工具。编程语言主要有VHDL和Verilog两种硬件描述语言;编程工具主要是两大厂家Altera和Xilinx的集成综合EDA软件QuartusII以及第三方工具。具体的设计输入方式有以下几种:(1) HDL语言方式。HDL既可以描述底层设计,也可以描述顶层的设计,但它不容易做到较高的工作速度和芯片利用率。用这种方式描述的项目最后所能达到的性能与设计人员的水平、经验以及综合软件有很大的关系。(2) 图形方式。可以分为电路原理图描述,状态机描述
41、和波形描述3种形式。电路原理图方式描述比较直观和高效,对综合软件的要求不高;状态机描述主要用来设计基于状态机思想的时序电路;波形描述方式是基于真值表的一种图形输入方式,直接描述输入与输出的波形关系。2.1.4 FPGA的应用FPGA的应用可分为三个层面:电路设计,产品设计,系统设计。1) 电路设计中FPGA的应用连接逻辑,控制逻辑是FPGA早期发挥作用比较大的领域也是FPGA应用的基石事实上在电路设计中应用FPGA的难度还是比较大的这要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)这方面的人才总是紧缺的,往往都从事新技术,新产品的开发成功的产品将变成市场主流基础产品供产品设
42、计者应用在不远的将来,通用和专用IP的设计将成为一个热门行业!搞电路设计的前提是必须要具备一定的硬件知识在这个层面,干重于学,当然,快速入门是很重要的,越好的位子越不等人电路开发是黄金饭碗。2) 产品设计把相对成熟的技术应用到某些特定领域如通讯,视频,信息处理等等开发出满足行业需要并能被行业客户接受的产品这方面主要是FPGA技术和专业技术的结合问题,另外还有就是与专业客户的界面问题产品设计还包括专业工具类产品及民用产品,前者重点在性能,后者对价格敏感产品设计以实现产品功能为主要目的,FPGA技术是一个实现手段在这个领域,FPGA因为具备接口,控制,功能IP,内嵌CPU等特点有条件实现一个构造简
43、单,固化程度高,功能全面的系统产品设计将是FPGA技术应用最广大的市场,具有极大的爆发性的需求空间产品设计对技术人员的要求比较高,路途也比较漫长不过现在整个行业正处在组建首发团队的状态,只要加入,前途光明产品设计是一种职业发展方向定位,不是简单的爱好就能做到的!产品设计领域会造就大量的企业和企业家,是一个近期的发展热点和机遇。3) 系统级应用系统级的应用是FPGA与传统的计算机技术结合,实现一种FPGA版的计算机系统如用XilinxV-4, V-5系列的FPGA,实现内嵌POWERPCCPU, 然后再配合各种外围功能,实现一个基本环境,在这个平台上跑LINIX等系统这个系统也就支持各种标准外设
44、和功能接口(如图象接口)了这对于快速构成 FPGA大型系统来讲是很有帮助的。这种山寨味很浓的系统早期优势不一定很明显,类似ARM系统的境况但若能慢慢发挥出FPGA的优势,逐渐实现一些特色系统也是一种发展方向。若在系统级应用中,开发人员不具备系统的扩充开发能力,只是搞搞编程是没什么意义的,当然设备驱动程序的开发是另一种情况,搞系统级应用看似起点高,但不具备深层开发能力,很可能会变成爱好者,就如很多人会做网页但不能称做会编程类似以上是几点个人开发,希望能帮助想学FPGA 但很茫然无措的人理一理思路。这是一个不错的行业,有很好的个人成功机会。但也肯定是一个竞争很激烈的行业,关键看的就是速度和深度当然
45、还有市场适应能力。2. 2 Verilog HDL概述2.2.1 Verilog HDL简介Verilog HDL是目前应用最为广泛的硬件描述语言,适合算法级,寄存器级,逻辑级,门级和版图级等各个层次的设计和描述,优点是其工艺无关性这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件。Verilog HDL 是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可以在相同描述中显示的进行时序建模。这种语言具有
46、下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言、此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。这种硬件语言不仅定义了语法。而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模
47、应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。Verilog HDL语言最初是于1983年由Gateway Design Automation公司为其模拟器产品开发的硬件建模语言。那时它只是一种专用语言。由于他们的模拟、仿真器产品的广泛使用,Verilog HDL 作为一种便于使用且实用的语言逐渐为众多设计者所接受。在一次努力增加语言普及性的活动中,Verilog HDL语言于1990年被推向公众领域。 Open Verilog International (OVI)是促进Verilog发展的国际性组织。1992年,OVI决定致力于推广Verilog
48、OVI标准成为IEEE标准。这一努力最后获得成功,Verilog HDL于1995年成为IEEE标准,称为IEEE Std 13641995。完整的标准在Verilog硬件描述语言参考手册中有详细描述。2.2.2 Verilog HDL主要功能(1) 基本逻辑门,例如and、or和nand等都内置在语言中。(2) 用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。(3) 开关级基本结构模型,例如pmos 和nmos等也被内置在语言中。(4) 提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。(5) 可采用三种不同方式或混合方式对设计建模。这