FPGA综述报告.docx
《FPGA综述报告.docx》由会员分享,可在线阅读,更多相关《FPGA综述报告.docx(34页珍藏版)》请在冰豆网上搜索。
FPGA综述报告
摘要
本文首先介绍了FPGA的概念及其发展历史,然后对其结构和工作原理作了较详尽的阐述,其中介绍了FPGA的芯片整体结构和模块功能以及基于查找表的FPGA的工作原理,并对软核、硬核和固核的概念作了解释。
关于FPGA的设计流程,本文分别介绍了典型的开发流程和Xilinx公司的FPGA开发流程。
FPGA的开发初期需要用HDL硬件描述语言去设计原理电路,常用的HDL语言有VerilogHDL和VHDL两种语言,VerilogHDL具有普遍适用性,学习也较容易,所以这里对Verilog概括地作了介绍并将它与软件描述语言C作了简单的比较。
本文最后介绍了FPGA的应用和前景,并对XILINXVirtex类器件作了简单描述。
综上所述,本文是基于VerilogHDL语言的FPGA开发的概要介绍,若有不对或者叙述不恰当以及不清楚的地方,欢迎批评指正。
FPGA综述报告
1前言
1.1什么是FPGA
FPGA是英文Field-ProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
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的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
FPGA有多种配置模式:
并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。
1.2可编程逻辑器件的历史和概述
随着数字电路应用越来越广泛,传统通用的数字集成芯片已经难以满足系统的功能要求,而且随着系统复杂程度的提高,所需通用集成电路的数量呈爆炸性增值,使得电路的体积膨大,可靠性难以保证。
此外,现代产品的生命周期都很短,一个电路可能需要在很短的周期内作改动以满足新的功能需求,对于采用通用的数字集成电路设计的电路系统来说即意味着重新设计和重新布线。
因此,系统设计师们希望自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。
早期的可编程逻辑器件只有可编程只读存贮器(PROM)、紫外线可按除只读存贮器(EPROM)和电可擦除只读存贮器(EEPROM)三种。
由于结构的限制,它们只能完成简单的数字逻辑功能。
其后,出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。
典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与一或”表达式来描述,所以,PLD能以乘积和的形式完成大量的组合逻辑功能。
这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。
PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。
PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和EEPROM技术。
还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。
PLA器件既有现场可编程的,也有掩膜可编程的。
在PAL的基础上,又发展了一种通用阵列逻辑GAL(GenericArrayLogic),如GAL16V8,GAL22V10等。
它采用了EEPROM工艺,实现了电可按除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。
这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。
为了弥补这一缺陷,20世纪80年代中期。
Altera和Xilinx分别推出了类似于PAL结构的扩展型CPLD(ComplexProgrammab1eLogicDvice)和与标准门阵列类似的FPGA(FieldProgrammableGateArray),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。
这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。
与门阵列等其它ASIC(ApplicationSpecificIC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和小批量产品生产(一般在10,000件以下)之中。
几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。
1.3FPGA的发展概要及趋势
1.3.1FPGA的发展概要
FPGA经历了从PLD,EPLD到FPGA的发展历程,期间的发展过程虽然复杂,但我们看来却只是一个新技术替代老技术的过程。
下面概要介绍这个技术的发展演变过程。
PLD(ProgrammableLogicDevice)——让快捷、灵活设计成为可能
>PROM—70年代初,速度低,作存储器。
>PLA—70年代中,可编程的与或阵列组成,编程有一定困难,没有得到广泛应用。
>PAL—70年代末,“与”阵列编程使输入项增多。
采用熔丝编程方式,双极型工艺制造,速度快,第一个被广泛应用。
>GAL—80年代,电擦除技术、编程比PAL灵活、芯片类型少。
“与阵列”可编程,“或阵列”固定。
>引入了OLMC(OutputLogicMicroCell),输出逻辑宏单元,使得少数几种GAL器件就能取代几乎所有的PAL。
PLD器件的不足:
PLD的利用率随规模的扩大而降低;设计灵活性差,寄存器、I/O数目有限,互连固定,逻辑块级编程。
EPLD
>1984年Altera推出首块EP300。
>逻辑块级编程,从编程属PLD。
>宏单元组合,设计灵活性比PAL、GAL有较大改善。
>内部连线相对固定。
FPGA:
CPLD和FPGA统称
>1985年Xillinx公司推出首块XC2000。
>逻辑门级编程,设计更灵活:
可编程逻辑单元PLC(ProgrammableLogicCell);可编程连线资源PRR(ProgrammableRoutingResource);可编程I/O模块PIO(ProgrammableI/OBlock)。
>规模容量更大性能更高的SOPC(SystemonaProgrammableChip):
0.09微米,9层金属连线,系统速度达到500MHz以上;FPGA中内嵌如DSP,MCU,RAM,PCI总线接口等模块,如XILINXVirtex-IIPro,AlteraStratix;ASIC中嵌入FPGAIP核。
>PLD——快捷、灵活设计成为可能;互连固定;利用率随规模的扩大而降低;设计灵活性差。
>EPLD——宏单元组合结构,逻辑块级编程(属PLD),内部连线相对固定,设计灵活性比PAL,GAL有较大改善。
>FPGA——可编程逻辑单元PLC,可编程IO,可编程互连;规模容量更大性能更高;设计更灵活。
1.3.2FPGA的发展趋势
>向高密度、高速度、宽频带方向发展。
>向低成本、低价格的方向发展。
>向低电压、低功耗和绿色化方向发展。
>结构化ASIC。
>可编程片上系统SOPC。
>动态可重配置DRFPGA。
>单片群集器COD。
2FPGA的结构及工作原理
2.1FPGA芯片整体结构
目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。
如图1-1所示(注:
图1只是一个示意图,实际上每一个系列的FPGA都有其相应的内部结构),FPGA芯片主要由6部分完成,分别为:
可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
图1FPGA芯片的内部结构
2.2FPGA芯片的模块及其功能
2.2.1可编程输入输出单元(IOB)
可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如图2所示。
FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。
通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。
目前,I/O口的频率也越来越高,一些高端的FPGA通过DDR寄存器技术可以支持高达2Gbps的数据速率。
外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以
图2典型的IOB内部结构示意图
直接输入FPGA内部。
当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(HoldTime)的要求可以降低,通常默认为0。
为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO可以不同。
只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。
2.2.2可配置逻辑块(CLB)
CLB是FPGA内的基本逻辑单元。
CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路(多路复用器等)和触发器组成。
开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。
在Xilinx公司的FPGA器件中,CLB由多个(一般为4个或2个)相同的Slice和附加逻辑构成,如图3所示。
每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM。
Slice是Xilinx公司定义的基本逻辑单位,其内部结构如图4所示,一个Slice由两个4输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。
算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND),一个异或门可以使一个Slice实现2bit全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法
图3典型的CLB结构示意图
操作;4输入函数发生器用于实现4输入LUT、分布式RAM或16比特移位寄存器(Virtex-5系列芯片的Slice中的两个输入函数为6输入,可以实现6输入LUT或64比特移位寄存器);进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。
图4典型的4输入Slice结构示意图
2.2.3数字时钟管理模块(DCM)
业内大多数FPGA均提供数字时钟管理(Xilinx的全部FPGA均具有这种特性)。
Xilinx推出最先进的FPGA提供数字时钟管理和相位环路锁定。
相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。
2.2.4嵌入式块RAM(BRAM)
大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。
块RAM可被配置为单端口RAM、双端口RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。
RAM、FIFO是比较普及的概念,在此就不冗述。
CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。
除了块RAM,还可以将FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。
在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素。
单片块RAM的容量为18k比特,即位宽为18比特、深度为1024,可以根据需要改变其位宽和深度,但要满足两个原则:
首先,修改后的容量(位宽深度)不能大于18k比特;其次,位宽最大不能超过36比特。
当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而不再受上面两条原则约束。
2.2.5丰富的布线资源
布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。
FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。
第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。
在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。
从本质上讲,布线资源的使用方法和设计的结果有密切、直接的关系。
2.2.6底层内嵌功能单元
内嵌功能模块主要指DLL(DelayLockedLoop)、PLL(PhaseLockedLoop)、DSP和CPU等软处理核(SoftCore)。
现在越来越丰富的内嵌功能单元,使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。
DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。
Xilinx公司生产的芯片上集成了DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同时集成了PLL和DLL。
PLL和DLL可以通过IP核生成的工具方便地进行管理和配置。
DLL的结构如图5所示。
图5典型的DLL模块示意图
2.2.7内嵌专用硬核
内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(HardCore),等效于ASIC电路。
为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。
例如:
为了提高FPGA的乘法速度,主流的FPGA中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。
Xilinx公司的高端产品不仅集成了PowerPC系列CPU,还内嵌了DSPCore模块,其相应的系统级设计工具是EDK和PlatformStudio,并依此提出了片上系统(SystemonChip)的概念。
通过PowerPC、Miroblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,达到SOC的开发目的。
2.3FPGA工作原理
2.3.1总述
如前所述,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,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
由于基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合逻辑电路功能,所以适用于高速、高密度的高端数字逻辑电路设计领域。
其组成部分主要有可编程输入/输出单元、基本可编程逻辑单元、内嵌SRAM、丰富的布线资源、底层嵌入功能单元、内嵌专用单元等,主要设计和生产厂家有Xilinx、Altera、Lattice、Actel、Atmel和QuickLogic等公司,其中最大的是Xilinx、Altera、Lattice三家。
如前所述,FPGA是由存放在片内的RAM来设置其工作状态的,因此工作时需要对片内RAM进行编程。
用户可根据不同的配置模式,采用不同的编程方式。
FPGA有如下几种配置模式:
∙并行模式:
并行PROM、Flash配置FPGA;
∙主从模式:
一片PROM配置多片FPGA;
∙串行模式:
串行PROM配置FPGA;
∙外设模式:
将FPGA作为微处理器的外设,由微处理器对其编程。
目前,FPGA市场占有率最高的两大公司Xilinx和Altera生产的FPGA都是基于SRAM工艺的,需要在使用时外接一个片外存储器以保存程序。
上电时,FPGA将外部存储器中的数据读入片内RAM,完成配置后,进入工作状态;掉电后FPGA恢复为白片,内部逻辑消失。
这样FPGA不仅能反复使用,还无需专门的FPGA编程器,只需通用的EPROM、PROM编程器即可。
Actel、QuickLogic等公司还提供反熔丝技术的FPGA,只能下载一次,具有抗辐射、耐高低温、低功耗和速度快等优点,在军品和航空航天领域中应用较多,但这种FPGA不能重复擦写,开发初期比较麻烦,费用也比较昂贵。
Lattice是ISP技术的发明者,在小规模PLD应用上有一定的特色。
早期的Xilinx产品一般不涉及军品和宇航级市场,但目前已经有QPro-R等多款产品进入该类领域。
2.3.2查找表(Look-Up-Table)的原理与结构
采用这种结构的PLD芯片我们称之为FPGA:
如Altera的ACEX、APEX系列,Xilinx的Spartan,Virtex系列等。
查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。
目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM。
当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
下面是一个4输入与门的例子。
表14输入与门查找表实例
2.3.3查找表结构的FPGA逻辑实现原理
以图6所示电路的为例。
图6电路实例
A,B,C,D由FPGA芯片的管脚输入后进入可编程连线,然后作为地址线连到到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,这样组合逻辑就实现了。
该电路中D触发器是直接利用LUT后面D触发器来实现。
时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。
触发器的输出与I/O脚相连,把结果输出到芯片管脚。
这样PLD就完成了图6所示电路的功能。
(以上这些步骤都是由软件自动完成的,不需要人为干预)
这个电路是一个很简单的例子,只需要一个LUT加上一个触发器就可以完成。
对于一个LUT无法完成的的电路,就需要通过进位逻辑将多个单元相连,这样FPGA就可以实现复杂的逻辑。
由于LUT主要适合SRAM工艺生产,所以目前大部分FPGA都是基于SRAM工艺的,而SRAM工艺的芯片在掉电后信息就会丢失,一定需要外加一片专用配置芯片,在上电的时候,由这个专用配置芯片把数据加载到FPGA中,然后FPGA就可以正常工作,由于配置时间很短,不会影响系统正常工作。
也有少数FPGA采用反熔丝或Flash工艺,对这种FPGA,就不需要外加专用的配置芯片。
2.4软核、硬核以及固核的概念
IP(IntelligentProperty)核是具有知识产权核的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。
到了SOC阶段,IP核设计已成为ASIC电路设计公司和FPGA提供商的重要任务,也是其实力体现。
对于FPGA开发软件,其提供的IP核越丰富,用户的设计就越方便,其市场占用率就越高。
目前,IP核已经变成系统设计的基本单元,并作为独立设计成果被交换、转让和销售。
从IP核的提供方式上,通常将其分为软核、硬核和固核这3类。
从完成IP核所花费的成本来讲,硬核代价最大;从使用灵活性来讲,软核的可复用使用性最高。
1)软核
软核在EDA设计领域指的是综合之前的寄存器传输级(RTL)模型;具体在FPGA设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。
软核只经过功能仿真,需要经过综合以及布局布线才能使用。
其优点是灵活性高、可移植性强,允许用户自配置;缺点是对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风险。
软核是IP核应用最广泛的形式。
2)固核
固核在EDA设计领域指的是带有平面规划信息的网表;具体在FPGA设计中可以看做带有布局规划的软核,通常以RTL代码和对应具体工艺网表的混合形式提供。
将RTL描述结合具体标准单元库进行综合优化设计,形成门级网表,再通过布局布线工具即可使用。
和软核相比,固核的设计灵活性稍差