FPGA是在可编程阵列逻辑(Programmable Array Logic,PAL)、通用阵列逻辑(Generic ArrayLogic,GAL)、可擦除可编程逻辑器件(Erasable Programmable Logic Device,EPLD)等器件的基础上进一步发展的产物。目前FPGA的品种很多,主要包含Xilinx公司的Virtex、Kintex、Artix和Spartan系列等;Altera公司的Cyclone、Arria、Stratix系列等。
FPGA器件具有高密度、高速率、系列化、标准化、小型化、多功能、低功耗、低成本,设计灵活方便,可无限次反复编程,并可现场模拟调试验证等特点。目前,主流的FPGA仍是基于查找表(LookUpTable,LUT)技术的。
1.查找表逻辑结构
LUT是可编程的最小逻辑构成单元。大部分FPGA采用SRAM(静态随机存储器)的查找表逻辑形成结构,即用SRAM来构成逻辑函数发生器。一个N输入LUT可以实现N个输入变量的任何逻辑功能,如N输入“与”、N输入“异或”等。图1-3所示为4输入LUT,其内部结构如图1-4所示。
一个N输入的查找表,需要SRAM存储N个输入构成的真值表,需要用2n位的SRAM单元。显然N不可能很大,否则LUT的利用率很低。输入多于N个的逻辑函数,必须用多个查找表分开实现。
图1-3 4输入LUT
图1-4 FPGA查找表单元内部结构
Xilinx的Virtex-6系列、Spartan-3E系列、Spartan-6系列,Altera的Cyclone、Cyclone 2/3/4/5、Stratix-3、Stratix-4等系列都是采用SRAM查找表构成的,是典型的FPGA器件。
2. CycloneⅢ系列器件的结构
CycloneⅢ系列器件是由Altera公司推出的一款低功耗、高性价比的FPGA,其结构和工作原理在FPGA器件中具有典型性。下面以此类器件为例,介绍FPGA的结构。
1)器件平面结构图 CycloneⅢ器件主要由逻辑阵列块(LAB)、嵌入式存储器块、嵌入式乘法器、I/O单元和PLL等模块构成,如图1-5所示。在各个模块之间存在着丰富的互连线和时钟网络。
图1-5 CycloneⅢ器件平面结构图
2)逻辑单元和逻辑阵列块 CycloneⅢ器件的可编程资源主要来自逻辑阵列块LAB,而每个LAB都由多个逻辑宏单元LE(Logic Elememt)或LC(Logic Cell)构成。LE是Cyclone ⅢFPGA器件中最基本的可编程单元,它主要由一个4输入LUT、进位链逻辑、寄存器链逻辑和一个可编程的寄存器构成,如图1-6所示。其中4输入LUT可以完成所有的4输入1输出的组合逻辑功能。每一个LE的输出都可以连接到行、列、直连通路、进位链、寄存器链等布线资源。
图1-6 CycloneⅢLE结构图
每个LE中的可编程寄存器都可以被配置成D触发器、T触发器、J-K触发器和R-S寄存器模式。每个可编程寄存器都具有数据、时钟、时钟使能、清零输入信号。全局时钟网络、通用I/O口及内部逻辑可以灵活配置寄存器的时钟和清零信号。任何一个通用I/O口内部逻辑都可以驱动时钟使能信号。在一些只需要组合电路的应用中,对于组合逻辑的,可将该配置寄存器旁路,LUT的输出可作为LE的输出。
LE有3个输出驱动内部互连,其中的一个驱动局部互连,另外两个驱动行或列的互连资源。LUT和寄存器的输出可以单独控制,进而实现了在一个LE中,LUT驱动一个输出,而寄存器驱动另一个输出(这种技术称为寄存器打包)。因而在一个LE中的寄存器和LUT能够用于完成不相关的功能,因此能够提高LE的资源利用率。
寄存器反馈模式允许在一个LE中将寄存器的输出作为反馈信号,加到LUT的一个输入上,在一个LE中就可以完成反馈。
除上述的3个输出外,在一个逻辑阵列中的LE还可以通过寄存器链进行级联。在同一个LAB中的LE里的寄存器可以通过寄存器链级联在一起,构成一个移位寄存器,那些LE中的LUT资源可以单独实现组合逻辑功能,二者互不相关。
CycloneⅢ的LE可以工作在两种操作模式下,即普通模式和算术模式。在不同的LE操作模式下,LE的内部结构和LE之间的互连有些差异。图1-7和图1-8所示的分别是CycloneⅢLE在普通模式和算术模式下的结构和连接图。
图1-7 CycloneⅢLE普通模式
图1-8 CycloneⅢLE算术模式
普通模式下的LE适合通用逻辑应用和组合逻辑的实现。在该模式下,来自LAB局部互连的4个输入将作为一个4输入1输出的LUT的输入端口。可以选择进位输入(cin)信号或data3信号作为LUT中的一个输入信号。每个LE都可以通过LUT链直接连接到(在同一个LAB中的)下一个LE。在普通模式下,LE的输入信号可以作为LE中寄存器的异步装载信号。普通模式下的LE也支持寄存器打包与寄存器反馈。
算术模式下的LE可以更好地实现加法器、计数器、累加器和比较器。在算术模式下的单个LE内有两个3输入LUT,可被配置成一位全加器和基本进位链结构。其中一个3输入LUT用于计算,另一个3输入LUT用于输出信号cout。在算术模式下,LE支持寄存器打包与寄存器反馈。
逻辑阵列块LAB是由一系列相邻的LE构成的。每个CycloneⅢLAB包含16个LE,在LAB中和LAB之间存在着行互连、列互连、直连通路互连、LAB局部互连、LE进位链和寄存链。图1-9所示的是CycloneⅢLAB的结构图。
每个LAB都由专用的逻辑来生成LE的控制信号,这些LE的控制信号包括两个时钟信号、两个时钟使能信号、两个异步清零、同步清零、异步预置/装载信号、同步装载和加/减控制信号。图1-10所示的是LAB控制信号生成的逻辑图。
图1-9 CycloneⅢLAB结构
图1-10 CycloneⅢLAB控制信号生成的逻辑图
3)多轨道互连 在CycloneⅢ中,通过多轨道互连的直接驱动技术来提供LE、M9K存储器、嵌入式乘法器、I/O引脚之间的连接。多轨道互连包括固定短距离的行互连(Direct Link,R4 and R24)和列互连(Register Chain,C4 and C16)。图1-11所示为Cyclone R4互连连接;图1-12所示为LAB阵列间互连;图1-13所示为M9K RAM块与LAB行的接口。
图1-11 CycloneⅢR4互连连接
图1-12 CycloneⅢLAB阵列间互连
图1-13 CycloneⅢM9K RAM块与LAB行的接口
4)嵌入式存储器 CycloneⅢFPGA器件中所含的嵌入式存储器(Embedded Memory)由数十个M9K的存储器块构成,每个M9K存储器块都具有很强的伸缩性,可以实现8192 位RAM(单端口、双端口、带校验、字节使能)、ROM、移位寄存器、FIFO等功能。嵌入式寄存器可以通过多种连线与可编程资源实现连接,大大增强了FPGA的功能,扩大了FPGA的应用范围。
5)嵌入式乘法器 除了嵌入式存储器,在CycloneⅢ系列器件中还含有嵌入式乘法器(Embedded Multiplier),如图1-14所示。这种硬件乘法器的存在可以大大提高FPGA处理DSP(数字信号处理)任务的能力。CycloneⅢ系列器件的嵌入式乘法器具有的特点为:可以实现9×9或18×18乘法器;乘法器的I/O可以选择是寄存的还是非寄存的(即组合I/O);可以与FPGA中的其他资源灵活地构成适合DSP算法的MAC(乘加单元)。
6)时钟网络和锁相环 在CycloneⅢ器件中设置有全局控制信号,由于系统的时钟延时会严重影响系统的性能,因此在CycloneⅢ中设置了复杂的全局时钟网络,以减少时钟信号的传输延迟,如图1-15所示。另外,在CycloneⅢFPGA中还有2~4个独立的嵌入式锁相环PLL,可以用于调整时钟信号的波形、频率和相位,如图1-16所示。
图1-14 嵌入式乘法器
图1-15 时钟网络的时钟控制
图1-16 CycloneⅢPLL
7) I/O接口单元 CycloneⅢ的I/O支持多种的I/O接口,符合多种的I/O标准,可以支持差分的I/O标准,如LVDS(低压差分串行)和RSDS(去抖动差分信号)、SSTL-2、SSTL-18、HSTL-18、HSTL-15、HSTL-12、PPDS、差分LVPECL,当然也支持普通单端的I/O标准,如LVTTL、LVCOMS、PCI和PCI-X I/O等,通过这些常用的端口与板上的其他芯片沟通。CycloneⅢ系列器件除了片上的嵌入式存储器资源外,还可以外接多种外部存储器,如SRAM、NAND、SDRAM、DDRSDRAM、DDR2 SDRAM等。图1-17所示的是CycloneⅢIOE结构图。
图1-17 CycloneⅢIOE结构图
FPGA芯片是小批量系统提高系统集成度和可靠性的最佳选择之一,其主要特点如下所述。
采用FPGA设计ASIC,不需要投片生产,设计周期短、开发费用低、风险小;
FPGA可做其他全定制或半定制ASIC电路的中试样片;
FPGA内部有丰富的触发器和I/O引脚;
FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。