FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的根本上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而涌现的,既办理了定制电路的不敷,又战胜了原有可编程器件门电路数有限的缺陷
2. FPGA芯片构造

FPGA芯片紧张由三部分组成,分别是IOE(input output element,输入输出单元)、LAB(logic array block,逻辑阵列块,对付Xilinx称之为可配置逻辑块CLB)和Interconnect(内部连接线)。

2.1 IOE
IOE是芯片与外部电路的物理接口,紧张完身分歧电气特性下输入/输出旗子暗记的驱动与匹配哀求,比如从基本的LVTTL/LVCMOS接口到PCI/LVDS/RSDS乃至各种各样的差分接口,从5V兼容到3.3V/2.5V/1.8V/1.5V的电平接口,下面是ALTERA公司的Cyclone IV EP4CE115F29设备的IOE构造
EP4CE115F29设备的IOE构造图
FPGA的IOE按组分类,每组都能够独立地支持不同的I/O标准,通过软件的灵巧配置,可匹配不同的电器标准与IO物理特性,而且可以调度驱动电流的大小,可以改变上/下拉电阻,Cyclone IV设备有8个IO blank(组),见下图:
Cyclone IV设备的IO组
2.2 LAB
LAB是FPGA的基本逻辑单元,其实际的数量和特性依据所采取的器件的不同而不同,EP4CE115F29设备的每个LAB的布局包括16个LE、LAB掌握旗子暗记、LE carry chains、Register chains和Local interconnect,其LAB构造图如下:
LAB构造图
LE是Cyclone IV设备最小的逻辑单元,每个LE紧张有LUT和寄存器组成的,
LE的构造图
查找表LUT(Look-Up-Table)实在质是一个静态存储器SRAM,目前FPGA多采取4输入的LUT,每个LUT可以看作一个有4位地址线的16x1的RAM。当我们通过事理图或HDL措辞描述了一个逻辑电路后,FPGA开拓软件会自动打算逻辑电路的所有可能的结果,并把结果事先写入RAM。这样,在FPGA事情时,每输入一个旗子暗记进行逻辑运算就即是输入一个地址进行查表,找出地址对应的内容,然后输出。
LUT的实现事理图
2.3 Interconnect
FPGA内部连接线很丰富,根据数据手册的描述,紧张有图3中的Row interconnect、column interconnect、Direct link interconnect、和Local interconnect和Register chain interconnect(寄存器之间连接的连接线)。
内部连接线联通FPGA内部的所有单元,而连线的长度和工艺决定着旗子暗记再连接线上的驱动能力和传输速率。在实际开拓中,设计者不须要直接选择连接线,布局布线器可自动地根据输入逻辑网表(这由综合天生)的拓扑构造和约束条件选择连接线来连通各个逻辑单元,以是,从实质上来说,布线资源的利用方法和设计的结果有密切和直接、直接的关系。
3. FPGA事情事理
FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端(见图4),触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线相互连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接办法,并终极决定了FPGA所能实现的功能,FPGA许可无限次的编程。
4. FPGA开拓流程
事理图和HDL(Hardware description language,硬件描述措辞)是两种最常用的数字硬件电路描述方法,个中HDL设计法具有更好的可移植性、通用性和模块划分与重用性的特点,在目前的工程设计中被广泛利用,下面对FPGA设计熟习电路时的开拓流程是基于HDL的。
FPGA的开拓流程
1) 系统功能设计
在系统设计之前,首先要进行的是方案论证、系统设计和FPGA芯片选择等准备事情。系统工程师根据任务哀求,如系统的指标和繁芜度,对事情速率和芯片本身的各种资源、本钱等方面进行权衡,选择合理的设计方案和得当的器件类型。一样平常都采取自顶向下的设计方法,把系统分成多少个基本单元,然后再把每个基本单元划分为下一层次的基本单元,一贯这样做下去,直到可以直策应用EDA元件库为止。
2) RTL级HDL设计
RTL级(Register Transfer Level,寄存器传输级)指不关注寄存器和组合逻辑的细节(如利用了多少个逻辑门、逻辑门的连接拓扑构造等),通过描述数据在寄存器之间的流动和如何处理、掌握这些数据流动的模型的HDL设计方法。RTL级比门级更抽象,同时也更大略和高效。RTL级的最大特点是可以直接用综合工具将其综合成为门级网表,个中RTL级设计直接决定着系统的功能和效率。
3) RTL级仿真
也称为功能(行为)仿真,或是综合前仿真,是在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。仿真前,要先利用波形编辑器和HDL等建立波形文件和测试向量(即将所关心的输入旗子暗记组合成序列),仿真结果将会天生报告文件和输出旗子暗记波形,从中便可以不雅观察各个节点旗子暗记的变革。如果创造缺点,则返回设计修正逻辑设计。常用的工具有Model Tech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog以及NC-VHDL等软件。虽然功能仿真不是FPGA开拓过程中的必需步骤,但却是系统设计中最关键的一步。
为了提高功能仿真的效率,须要建立测试平台testbench,其测试勉励一样平常利用行为级HDL措辞描述,个中RTL级模块是可综合的,它是行为级模块的一个子凑集。
4) 综合
所谓综合便是将较高等抽象层次的描述转化成较低层次的描述。综合优化根据目标与哀求优化所天生的逻辑连接,使层次设计平面化,供FPGA布局布线软件进行实现。就目前的层次来看,综合优化(Synthesis)是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路。真实详细的门级电路须要利用FPGA制造商的布局布线功能,根据综合后天生的标准门级构造网表来产生。为了能转换成标准的门级构造网表,HDL程序的编写必须符合特定综合器所哀求的风格。由于门级构造、RTL级的HDL程序的综合是很成熟的技能,所有的综合器都可以支持到这一级别的综合。常用的综合工具有Synplicity公司的Synplify/Synplify Pro软件以及各个FPGA厂家自己推出的综合开拓工具。
5) 门级仿真
也称为综合后仿真,综合后仿真检讨综合结果是否和原设计同等。在仿真时,把综合天生的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响。但这一步骤不能估计线延时,因此和布线后的实际情形还有一定的差距,并不十分准确。目前的综合工具较为成熟,对付一样平常的设计可以省略这一步,但如果在布局布线后创造电路构造和设计意图不符,则须要回溯到综合后仿真来确认问题之所在。在功能仿真中先容的软件工具一样平常都支持综合后仿真。
6) 布局布线
实现是将综合天生的逻辑网表配置到详细的FPGA芯片上,将工程的逻辑和时序与器件的可用资源匹配。布局布线是个中最主要的过程,布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件构造上,并且每每须要在速率最优和面积最优之间作出选择。布线根据布局的拓扑构造,利用芯片内部的各种连线资源,合理精确地连接各个元件。也可以大略地将布局布线理解为对FPGA内部查找表和寄存器资源的合理配置,布局可以被理解挑选可实现设计网表的最优的资源组合,而布线便是将这些查找表和寄存器资源以最优办法连接起来。
目前,FPGA的构造非常繁芜,特殊是在有时序约束条件时,须要利用时序驱动的引擎进行布局布线。布线结束后,软件工具会自动天生报告,供应有关设计中各部分资源的利用情形。由于只有FPGA芯片生产商对芯片构造最为理解,以是布局布线必须选择芯片开拓商供应的工具。
7) 时序仿真
是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不知足时序约束条件或器件固有的时序规则,如建立韶光、保持韶光等)征象。时序仿真包含的延迟信息最全,也最精确,能较好地反响芯片的实际事情情形。由于不同芯片的内部延时不一样,不同的布局布线方案也给延时带来不同的影响。因此在布局布线后,通过对系统和各个模块进行时序仿真,剖析其时序关系,估计系统性能,以及检讨和肃清竞争冒险是非常有必要的。
8) FPGA板级调试
通过编程器将布局布线后的配置文件下载至FPGA中,对其硬件进行编程。配置文件一样平常为.pof或.sof文件格式,下载的办法包括AS(主动)、PS(被动)、JTAG(边界扫描)等办法。
逻辑剖析仪(Logic Analyzer,LA)是FPGA设计的紧张调试工具,但须要引出大量的测试管脚,且LA价格昂贵。目前,主流的FPGA芯片生产商都供应了内嵌的在线逻辑剖析仪(如Xilinx ISE中的ChipScope、Altera QuartusII中的SignalTapII以及SignalProb)来办理上述抵牾,它们只须要占用芯片少量的逻辑资源,具有很高的实用代价。








