第一篇 FPGA基础
第1章 FPGA硬件结构知识
随着信息技术革命和计算机技术的飞速发展,可编程逻辑技术已发展成一门关键的科学技术,而FPGA在工业界也已被广泛的应用。本书第1章,将首先介绍FPGA硬件结构知识。
1.1 CPLD/FPGA概述
CPLD是复杂可编程逻辑器件(Complex Programable Logic Device)的简称,FPGA是现场可编程门阵列(Field Programable Gate Array)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/FPGA。
CPLD 最早由 Altera 公司推出即 MAX 系列,多为 Flash、EEPROM 架构或乘积项(Product Term)架构的PLD。FPGA最早由Xilinx公司推出,多为SRAM 架构或查表(Look Up Table)架构,需外接配置用的EPROM下载。由于Altera的FLEX/ ACEX /APEX系列也是SRAM架构,所以通常把Altera的FELX/ACEX/APEX系列芯片也叫做FPGA。
1.1.1 CPLD/FPGA的特点
CPLD/FPGA可以说都是PAL(可编程阵列逻辑)/ GAL(通用阵列逻辑)的延伸, CPLD与FPGA在应用时各自特点如下:
(1)与FPGA相比,CPLD的逻辑单元较大、容量较小、时序确定、延时可预测。
(2)CPLD 时间上安排胜于 FPGA。CPLD基于一些可程序化行列逻辑PAL/PLA 或乘积项。典型的 FPGA 则是一个以 SRAM(静态随机存储器)为基础,由逻辑单元组成的装置,它包含的寄存器为逻辑表达式提供了查找表。所以FPGA时间上取决于查找表路由,但这样FPGA比CPLD有更多寄存器,有更多逻辑,如图1-1和图1-2所示。
(3)CPLD的容量一般比较小,比较适合做一些容量不大、组合逻辑比较复杂但是寄存器用得比较少的设计,如地址译码、总线接口逻辑、上电复位逻辑等;而FPGA的容量比较大,包含大量的逻辑单元、内嵌存储器以及一些其他的高级特性,如锁相环、LVDS等,适合一些比较复杂的时序逻辑的应用之中,比如嵌入式CPU、数据处理等,它现场可编程,还可以配合单片机或DSP(数字信号处理器)工作。
(4)CPLD内部连接方式采用连续性内部连接(Continuous Interconnect),连续性内部连接方式的连接延时较固定,但受连接路径影响。FPGA 采用片段连接(Segment Interconnect),而片段连接方式则较能充分运用其绕线资源。
图1-1 基于乘积项结构的CPLD
图1-2 基于查找表结构的FPGA
(5)FPGA提供比CPLD器件足够大的有效逻辑容量密度,不仅大大减少印刷电路板的空间,大大降低系统功耗,同时大大提高了系统设计的工艺可实现性和产品的可取性。
尽管CPLD/FPGA的结构各有其特点和长处,但概括起来,它们是由三大部分组成的:
● 二维的逻辑块阵列(逻辑单元),构成了器件的逻辑组成核心;
● 输入/输出块;
● 连接逻辑块的互连资源,用于逻辑块之间、逻辑块与输入/输出块之间的连接。
其中,逻辑单元是CPLD/FPGA内部架构的最基本单元,但其定义不同,如LE(Logic Element)、MC(Macro Cell)、CLB(Carry Logic Block)、Slices等。每个基本逻辑一般均包括两个部分,一部分为实现组合逻辑部分,另一部分为实现时序逻辑部分。Altera 的产品,每个基本单元LE含一个暂存器;Xilinx的产品,每个基本逻辑单元Slices含两个暂存器。故一般不用“门(gate)”的数量来衡量CPLD/ FPGA的大小,而用暂存器的多少来衡量芯片的容量大小。如10万门的Xilinx的XC2S100有1200个Slices,即含2400个暂存器;5万门的Altera的1K50则含有2880个LE,即有2880个暂存器。
对用户而言,CPLD与FPGA的内部结构稍有不同,但用法一样,所以多数情况下,不加以区分。另外,CPLD/FPGA芯片都是特殊的ASIC芯片,它们除了具有ASIC的特点之外,还具有以下几个优点:
(1)随着VLSI(Very Large Scale IC,超大规模集成电路)工艺的不断提高,单一芯片内部可以容纳上百万个晶体管,CPLD/FPGA 芯片的规模也越来越大,其单片逻辑门数已达到上百万门,它所能实现的功能也越来越强,同时也可以实现系统集成。
(2)CPLD/FPGA 芯片在出厂之前都做过百分之百的测试,不需要设计人员承担投片风险和费用,设计人员只需在自己的实验室里即可通过相关的软硬件环境来完成芯片的最终功能设计。所以,CPLD/FPGA的资金投入小。
(3)用户可以反复地编程、擦除、使用,或者在外围电路不动的情况下用不同软件就可实现不同的功能。CPLD/FPGA 软件包中有各种输入工具和仿真工具,以及版图设计工具和编程器等全线产品,在很短的时间内就可完成电路的输入、编译、优化、仿真,直至最后芯片的制作。当电路有少量改动时,更能显示出CPLD/FPGA的优势。
(4)CPLD/FPGA 工作方式与单片机的相比,单片机的指令有固定的执行方式,至少需要4个时钟周期且时钟频率较低;而CPLD/FPGA的运算执行方式会根据实现该运算的硬件电路方式不同而不同,所以其运算的速度会远高于单片机。
1.1.2 CPLD/FPGA的发展方向
1.器件工艺的发展方向
PLD器件自问世以来,它在性能和规模上的发展,主要依赖于制造工艺的不断改进,高密度PLD是VLSI集成工艺高度发展的产物。20世纪80年代末美国Altera和Xilinx公司采用EECMOS工艺,分别推出大规模和超大规模CPLD和FPGA,这种芯片在达到高度集成度的同时,具有以往的LSI/VLSI电路无法比拟的应用灵活性和多组态功能。
20 世纪 90 年代,CPLD/FPGA 发展更为迅速,不仅具有电擦除特性,而且出现了边缘扫描及在线编程等高级特性。另外,外围I/O模块扩大了在系统中的应用范围和扩展性。1998年HDPLD的主流产品集成度约为1万~3万门,同时25万门产品开始面世,1999年产品集成度为40万门,2000年出现容量为200万门的产品。
在制作工艺上,Altera和Xilinx都率先采用90nm和300mm制造技术,其中,90nm指的是芯片上构成电路的刻蚀线的间距,比人头发的千分之一还细;300mm晶圆指的是用来生产芯片的硅圆盘直径为300mm,晶圆表面越大,每晶圆可以生产的芯片越多。
所以,CPLD/FPGA器件发展体现如下:
● 一是工艺,现在新型的FPGA采用6层金属层、0.22μm、0.18μm、0.13μm的CMOS工艺,很快会达到0.09μm;
● 二是高密度,超过400万门的FPGA器件面世;
● 三是在系统上,CPU正向低电压方向发展,目前器件普遍采用2.5V,跟3.3V和5V的电压兼容,下一步目标是1.8V;
● 四是高速度,系统的在线速度可以超过200MHz。
总之,CPLD/FPGA 器件朝着更高速、更高集成度、更强功能和更灵活的方向发展,它不仅已成为标准逻辑器件的一个强有力的竞争对手,而且已成为掩膜式专用集成电路的竞争者,同时也不断取代ASIC(专用集成电路)。
2.开发软件和工具的发展方向
随着CPLD/FPGA设计越来越复杂,使用语言设计复杂的CPLD/FPGA成为一种趋势,目前最主要的硬件描述语言是VHDL和Verilog HDL。VHDL发展得较早,语法严格,而Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由。VHDL和Verilog HDL两者相比,学习VHDL比学习Verilog HDL难一些,但Verilog HDL自由的语法使得初学者容易上手也容易出错。
从EDA技术的发展趋势上看,直接采用C语言设计CPLD/FPGA将是一个发展方向,现在已出现用于CPLD/FPGA设计的C语言编译软件,在5~10年之内C语言很可能将逐渐成为继VHDL和Verilog HDL之后设计大规模CPLD/FPGA的又一种手段。
1.1.3 CPLD/FPGA的应用领域
通信是CPLD/FPGA的传统领越。随着微细化的进步,芯片面积缩小,价格迅速下降,市场发展加快,同时由于CPLD/FPGA灵活方便,不仅性能、速度、连接具有优势,而且可以缩短上市时间,因此应用领域不断拓展。现在,许多用户都开始在一些批量生产的消费类电子产品上采用CPLD和FPGA,如DVD、TV、游戏设备、空调、PDA、数字视频移动网络、无线局域网等。
在具体的应用上,CPLD/FPGA的逻辑功能有:控制接口、总线接口、格式变换/控制、通道接口、协议控制接口、信号处理接口、成像控制/数字处理、加密/解密、错误探测/相关等。CPLD/FPGA的典型应用如表1-1所示。
表1-1 CPLD/FPGA的典型应用
1.2 FPGA体系结构
FPGA即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列(Logic Cell Array,LCA)这样一个新概念,内部包括可配置逻辑模块(Configurable Logic Block,CLB)、输入/输出模块(Input Output Block,IOB)和互连资源(Interconnect Resource)三个部分。目前FPGA的品种很多,有Xilinx的XC系列、TI公司的TPC系列、Altera公司的FIEX系列等。
1.2.1 FPGA基本结构
FPGA具有掩膜可编程门阵列的通用结构,它由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块来实现不同的设计。
FPGA一般由三种可编程电路和一个用于存放编程数据的静态存储器SRAM组成。这三种可编程电路是:可编程逻辑模块(Configurable Logic Block,CLB)、输入/输出模块(I/O Block,IOB)和互连资源(Interconnect Resource,IR)。CLB是实现逻辑功能的基本单元,它们通常规则地排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路。
1.可编程逻辑模块(CLB)
CLB是FPGA的主要组成部分。如图1-3所示为CLB基本结构框图,它主要由逻辑函数发生器、触发器、数据选择器等电路组成。CLB中3个逻辑函数发生器分别是G、F和H,相应的输出是G'、F'和H'。G有4个输入变量G1、G2、G3和G4;F也有4个输入变量F1、F2、F3和F4。这两个逻辑函数发生器是完全独立的,均可以实现4个输入变量的任意组合逻辑函数。逻辑函数发生器H 有3 个输入信号:前两个函数发生器的输出G'和F',而另一个输入信号是来自信号变换电路的输出H1。这个函数发生器能实现3个输入变量的各种组合函数。这3个函数发生器结合起来,可实现多达9个变量的逻辑函数。
图1-3 CLB基本结构框图
CLB中有许多不同规格的数据选择器(4选1、2选1等),通过对CLB内部的数据选择器编程,逻辑函数发生器G、F和H的输出可以连接到CLB内部触发器,或者直接连接到CLB输出端X或Y,并用来选择触发器激励输入信号、时钟有效边沿、时钟使能信号以及输出信号。这些数据选择器的地址控制信号均由编程信息提供,从而实现所需的电路结构。
CLB中的逻辑函数发生器F和G均为查找表结构,其工作原理类似于ROM。F和G的输入等效于ROM的地址码,通过查找ROM中的地址表可以得到相应的组合逻辑函数输出。另外,逻辑函数发生器F和G还可以作为器件内高速RAM或小的可读/写存储器使用,它由信号变换电路控制。
2.输入/输出模块(IOB)
IOB提供了器件引脚和内部逻辑阵列之间的连接。它主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成,其结构如图1-4所示。
每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能。当IOB控制的引脚被定义为输入时,通过该引脚的输入信号先送入输入缓冲器。缓冲器的输出分成两路:一路可以直接送到MUX,另一路经延时几纳秒(或者不延时)送到输入通路D触发器,再送到数据选择器。通过编程给数据选择器不同的控制信息,确定送至CLB阵列的I1和I2是来自输入缓冲器,还是来自触发器。
图1-4 IOB基本结构
当IOB控制的引脚被定义为输出时,CLB阵列的输出信号OUT也可以有两条传输途径:一条是直接经MUX送至输出缓冲器,另一条是先存入输出通路D触发器,再送至输出缓冲器。
IOB输出端配有两只MOS管,它们的栅极均可编程,使MOS管导通或截止,分别经上拉电阻或下拉电阻接通VCC、地线或者不接通,用以改善输出波形和负载能力。
3.可编程互连资源(IR)
可编程互连资源(IR)可以将FPGA内部的CLB和CLB之间、CLB和IOB之间连接起来,构成各种具有复杂功能的系统。IR主要由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接。
片内连线按相对长度分单长度线、双长度线和长线3种。
(1)单长度线连接结构如图1-5(a)所示。CLB输入和输出分别接至相邻的单长度线,进而可与开关矩阵相连。通过编程,可控制开关矩阵将某个CLB与其他CLB或IOB连在一起。
(2)双长度线连接结构如图1-5(b)所示。双长度线金属线段的长度是单长度线金属线段的两倍,要穿过两个 CLB 之后,这些金属线段才与可编程的开关矩阵相连。因此,通用双长度线可使两个相隔(非相邻)的CLB连接起来。
(3)长线连接结构如图1-5(c)所示。由长线网构成的金属网络,布满了阵列的全部长和宽,这些每条长线中间有可编程分离开关,使长线分成两条独立的连线通路,每条连线只有阵列的宽度或高度的一半。CLB的输入可以由邻近的任一长线驱动,输出可以通过三态缓冲器驱动长线。
单长度线和双长度线提供了相邻 CLB 之间的快速互连和复杂互连的灵活性,但传输信号每通过一个可编程开关矩阵,就增加一次延时。因此,FPGA内部延时与器件结构和逻辑布线等有关,它的信号传输延时不可确定。长线不经过可编程开关矩阵,信号延迟时间小。长线用于高扇出、关键信号的传播。
提示:CLB、IOB、IR是Xilinx FPGA的内部基本结构,分别对应Altera FPGA的LAB、IOE、快速互连通道。如Altera EPF10K20RC240-4中逻辑资源有1152个LE,8个LE组成1个LAB,即144个LAB,安排在6行24列中。每行中心2KB的存储器模块EAB,共6个。布线资源有,每个LAB都有22个来自各行的输入信号和8个来自逻辑元件的信号,还有4个控制信号和两个局部进位、串级内连。采取快速宽带行总线和列总线(捷径内连),每行总线144线宽,每列24信道。
图1-5 IR基本结构
1.2.2 FPGA的结构特点
FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一,其特点主要有:
● 采用FPGA设计ASIC,不需要投片生产,设计周期短、开发费用低、风险小。
● FPGA可做其他全定制或半定制ASIC电路的中试样片。
● FPGA内部有丰富的触发器和I/O引脚。
● FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
下面对Altera公司的FLEX/ACEX系列FPGA与Xilinx公司的FPGA结构做一比较,有以下区别,如图1-6和图1-7所示。
(1)结构不同
Altera FPGA:嵌入式阵列块(EAB)、逻辑阵列块(LAB)、FastTrack、I/O单元。
Xilinx FPGA:CLB、IOB、布线资源(ICR)。
(2)RAM的使用不同
Altera FPGA:EAB可用作大型的RAM,LE中的查找表也可构成RAM。
Xilinx FPGA:没有专门的RAM,需要时可由CLB中的LUT构成。
(3)基本单元不同
Altera FPGA:LE(8个LE组成一个LAB,一个LE带一个触发器)。
Xilinx FPGA:CLB(一个CLB带两个触发器)。
(4)布线不同
Altera FPGA:FastTrack,局部互连、进位链和级联链。
Xilinx FPGA:单长度线、双长度线、长线。
(5)时钟的同步方式不同
Altera FPGA:使用时钟锁定和时钟自举方法。
Xilinx FPGA:有一个时钟网用于时钟的同步,在Virtex器件中使用 DLL(Delay Locked Loop)技术,缩短了信号输出时间,提高了I/O的速度。
(6)Xilinx FPGA中有专门的乘法器
图1-6 Altera FPGA内部结构
图1-7 Xilinx FPGA内部结构
1.2.3 FPGA的编程工艺
FPGA的功能由逻辑结构的配置数据决定。工作时,这些配置数据存放在片内的SRAM或熔丝图上。基于 SRAM 的 FPGA 器件,在工作前需要从芯片外部加载配置数据,配置数据可以存储在片外的EPROM或其他存储体上。用户可以控制加载过程,在现场修改器件的逻辑功能,即所谓现场编程。
用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程 RAM 中,配置完成后,FPGA 进入工作状态。掉电后,FPGA 恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。
FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。
1.3 FPGA常用芯片与选用
FPGA常用芯片主要包括Altera芯片和Xilinx芯片,下面对它们分别做一简单的介绍。
1.3.1 FPGA常用芯片
1.Altera芯片
Altera元件命名,以Altera EPF10K20RC240-4为例,解释如下:
EPF10K20RC240-4 | | | |-->4ns元器件 | | |-->封装和引脚号 | |-->等效门数,复杂程度相当于20000个2输入与非门 |--->系列
(1)MAX7000S/AE系列:E2POM工艺,Altera销量最大的产品,已生产5000万片,有32~1024个宏单元。MAX3000A是1999年推出的3.3V低价格E2POM工艺PLD,有32~512个宏单元,结构与MAX7000基本一样,如表1-2所示。
表1-2 MAX系列
(2)FLEX10KE系列:1998年推出的2.5V SRAM工艺,从3万门到25万门,触发器位数为720~12624位,I/O数为134~470,主要有10K30E、10K50E、10K100E,带嵌入式存储块EAB。ACEX1K是2000年推出的2.5V低价格SRAM工艺,结构与10KE类似,带EAB,部分型号带PLL,主要有1K10、1K30、1K50、1K100,如表1-3所示。
表1-3 FLXE10KE和ACEX1K系列
(3)FLEX6000 系列:5V/3.3V SRAM 工艺,较低价格的 CPLD/FPGA,结构与 10K类似,但不带嵌入式存储块,目前使用较少,逐渐被ACEX1K和Cyclone取代。
(4)APEX20K/20KE系列:1999年推出的大规模2.5V/1.8V SRAM工艺CPLD(FPGA),带PLL、CAM、EAB、LVDS,从3万门到150万门。
(5)APEX II系列:高密度SRAM工艺的FPGA,规模超过APEX,支持LVDS、PLL、CAM,用于高密度设计。
(6)Stratix系列:最新一代SRAM工艺大规模FPGA,集成硬件乘加器。
(7)Cyclone(飓风)系列:Altera 最新一代 SRAM 工艺中等规模 FPGA,与 Stratix结构类似,是一种低成本的FPGA系列,配置芯片也改用新的产品,如表1-4所示。
表1-4 Cyclone系列
(8)Excalibur系列:片内集成CPU(ARM922T)的PLD/FPGA产品,如表1-5所示。
表1-5 Excalibur系列
(9)Mercury系列:SRAM工艺FPGA,8层全铜布线,I/O性能及系统速度有很大提高,I/O支持CDR(时钟-数据自动恢复),支持DDR SDRAM接口,内部支持4端口存储器,LVDS接口最高支持到1.25Gbps,用于高性能高速系统设计,适合做高速系统的接口。
(10)Stratix GX系列:Mercury的下一代产品,基于Stratix器件的架构,集成3.125Gbps高速传输接口,用于高性能高速系统设计。
2.Xilinx芯片
Xilinx公司FPGA产品的型号由若干含义不同的字段组成。主要包括:公司代号、产品类别、表征逻辑门的数字、表征器件工作频率的数字、表征器件封装形式的符号、表征引脚数的数字、表征器件生产工艺级别标准和使用温度范围的符号等。
下面以XC2018-50PG84B为例进行说明。
● 公司代号:XC-Xilinx公司产品。
● 产品类别:20-XC2000、30-XC3000系列、31-XC3loo系列、40-XC4000系列。
● 逻辑门数:对XC2000系列、XC3000/XC3100系列,18—1800门、20—2000门、30—3000 门,依此类推,唯有 XC2064 例外;对 XC4000 系列,02—2000 门, 03—3000门,04—4000门,依此类推。
● 速度等级(反相器的切换速率):50-50MHz,75-75MHz,其余类推。不同型号的FPGA其反向器的切换速率不同,主要有33MHz、50MHz、75MHz、100MHz、125MHz、150MHz、175MHz和200MHz几种。系统的时钟频率与反向器的切换速率的关系取决于器件的具体结构,一般说来,系统时钟频率是切换速率的1/3~1/2左右。
● 封装形式:PG-PGAA封装、PLCC-PLCC封装、QFP-QFP封装。
● 引脚数:84-84脚,132-132脚等。通常PLCC封装以68脚、84脚为多见;PGA形式的封装以84脚、120脚、132脚、156脚、175脚和191脚为多见;QFP形式的封装以106脚、160脚、196脚和208脚为多见。XC2000系列也有DIP封装48引脚结构。
● 工艺级别和温度范围:B-Mil-STD-833工艺标准,B-美国军用品;C-商业用品,使用温度为 0~70℃;I—工业用品,使用温度为-40~85℃;M-军用品,使用温度为-55~125℃。
以下是Xilinx公司一些芯片的资料叙述。
(1)XC9500系列:Flash工艺PLD,常见型号有XC9536、XC9572、XC95144。型号后两位表示宏单元数量;CoolRunner-II:最新一代 1.8V 低功耗 PLD 产品;C4000:主要有XC4000E(5V)、XC400XL/XLA(3.3V)、XC4000XV(2.5V)容量从64到8464个CLB,属较早期的产品,基本不推广。
(2)Spartan系列:中等规模SRAM工艺FPGA。
(3)Spartan II系列:2.5V SRAM工艺FPGA,Spartan的升级产品;SpartanⅡE系列:1.8V中等规模FPGA,与Virtex E的结构基本一样,是Virtex E的低价格版本。
(4)Virtex /Virtex E系列:大规模SRAM工艺FPGA。
(5)Virtex II系列:新一代大规模SRAM工艺FPGA产品;VirtexⅡpro系列:基于Virtex II的结构,内部集成CPU的FPGA产品。
(6)Spartan III系列:新一代FPGA产品,结构与Virtex II类似,90nm工艺。
1.3.2 FPGA器件的选用
在开发选择器件时,一般遵循“多”、“快”、“好”、“省”4 个原则。“多”就是芯片功能多,“快”就是芯片速度快,“好”就是芯片的性价比高,“省”就是芯片的功耗低、省电。
所以在选择产品时,一般需要考虑以下技术因素:门密度、内存容量、最大的时钟频率、工作电压、最大I/O引脚数、封装形式等。
1.器件的逻辑资源量的选择
适当估测一下功能资源以确定使用什么样的器件,对于提高产品的性能价格比是有好处的。不同的 PLD 公司在其产品的数据手册中描述芯片逻辑资源的依据和基准不一致,所以有很大出入。
对于FPGA的估测应考虑到其结构特点。由于FPGA的逻辑颗粒比较小,即其可布线区域是散布在所有的宏单元之间的,因此,FPGA对于相同的宏单元数将比CPLD对应更多的逻辑门数。以Altera的EPF10PC84为例,它有576个宏单元,若以7128S为2500个逻辑门计算,则它应约有1万个逻辑门;但若以1032E为基准,则应有2.7万门;再考虑其逻辑结构的特点,则应约有3.5万门。
在实际开发中,逻辑资源的占用情况涉及因素是很多的,大致有:
(1)硬件描述语言的选择、描述风格的选择,以及HDL综合器的选择。
(2)综合和适配开关的选择。如选择速度优化,则将耗用更多的资源;若选择资源优化,则反之。
(3)逻辑功能单元的性质和实现方法。一般情况下,许多组合电路比时序电路占用的逻辑资源要大,如并行进位的加法器、比较器以及多路选择器。
2.芯片速度的选择
随着可编程逻辑器件集成技术的不断提高,FPGA的工作速度也不断提高,Pin-to-Pin延时已经达到ns级,在一般使用中,器件的工作频率已经足够了。目前,Altera和Xilinx公司的器件标称工作频率最高都超过300MHz。
具体设计中应对芯片速度的选择有一个综合考虑,并不是速度越高越好。芯片速度的选择应与所设计系统的最高工作速度相一致,使用了速度过高的器件将加大电路板 PCB设计的难度。这是因为器件的高速性能越好,则对外界微小毛刺信号的反应敏感性越好,若电路处理不当,或编程前的配置选择不当,极易使系统处于不稳定的工作状态。
3.价格的选择
FPGA 价格较昂贵,但随着微细化的进步,FPGA 芯片面积缩小,价格迅速下降,市场发展加快。例如,Altera的ACEX 1K 2.5V产品系列的密度达到10万门,价格从3.50美元到11.95美元不等。Xilinx的Spartan Ⅲ平台器件,密度范围从5万到5百万门,Spartan XC3S50(5万门)最低价格仅3.50美元,100万门的FPGA器件价格不到20美元,而400万门的FPGA器件不到100美元。
4.器件功耗的选择
由于在线编程需要,FPGA工作电压越来越低,3.3V和2.5V甚至更低的工作电压的使用已十分普遍。推荐使用 3.3V、2.5V 或更低的元器件。因此,在低功耗、高集成度方面,FPGA 具有绝对的优势。相对而言,Xilinx 公司的器件的性能比较稳定,功耗较低,用户I/O利用率高。例如,XC3000系列器件一般只有2个电源、2个地;而密度大体相当的Altera器件则可能有8个电源、8个地。
5.应用场合的选择
FPGA一般应用在大规模的逻辑设计、ASIC设计或单片机系统设计上。FPGA保存逻辑功能的物理结构多为SRAM型,即掉电后将丢失原有的逻辑信息。所以在实用中需要为FPGA芯片配置一个专用ROM,需要将设计好的逻辑信息烧录在此ROM中。电路一旦上电,FPGA就能自动从ROM中读取逻辑信息。FPGA的使用途径主要有以下4个方面:
(1)直接使用。FPGA 通常必须附带ROM 以保存软信息,对于ROM 的编程,要求有一台能对FPGA的配置ROM进行烧写的编程器。在必要时,也可以使用能进行多次编程配置的ROM。也能使用诸如ACTEL的不需要配置ROM的一次性FPGA。
(2)间接使用。这个过程类似于8051MCU的掩膜生产,这样获得的FPGA无须配置ROM,单片成本要低很多。
(3)硬件仿真。在仿真过程中,可以通过下载线直接将逻辑设计的输出文件通过计算机和下载适配电路配置进FPGA器件中,而不必使用配置ROM和专用编程器。
(4)专用集成电路ASIC设计仿真。对产品产量特别大,需要专用的集成电路,或是单片系统的设计。
6.FPGA封装的选择
FPGA器件的封装形式很多,主要有PLCC、PQFP、TQFP、RQFP、VQFP、MQFP、PGA和BGA等,每一芯片的引脚数从28至484不等。
常用的PLCC封装的引脚数有28、44、52、68、84等规格。现成的PLCC插座插拔方便,一般开发中,比较容易使用,适用于小规模的开发。缺点是需要添加插座的额外成本,I/O口线有限,以及容易被人非法解密。
PQFP 属贴片封装形式,无须插座,引脚间距有零点几个 mm,直接或在放大镜下就能焊接,适合于一般规模的产品开发或生产。RQFP或VQFP引脚间距比PQFQ要小,徒手难于焊接,多数大规模、多I/O的器件都采用这种封装。PGA封装的成本比较高,价格昂贵,形似586CPU,一般不直接用作系统器件。
BGA封装的引脚属于球状引脚,是大规模PLD器件常用的封装形式。BGA封装的引脚结构具有更强的抗干扰和机械抗振性能。
对于不同的设计项目,应使用不同的封装。对于逻辑含量不大,而外接引脚的数量较大的系统,需要大量的I/O口线才能以单片形式将这些外围器件的工作系统协调起来,因此选贴片形式的器件比较好。
7.其他因素的选择
相对而言,在3家PLD主流公司的产品中,Altera和Xilinx的设计比较灵活,器件利用率比较高,器件价格比较便宜,品种和封装形式比较丰富。但Xilinx的FPGA产品需要外加编程器件和初始化时间,保密性较差,延时较难事先确定,信号等延时较难实现。
1.4 本章小结
本章简单介绍了FPGA的硬件结构知识。通过本章的学习,读者将对FPGA的特点、应用领域、体系结构、常用芯片与选用原则有一个入门性的了解,为后面的编程学习打下基础。