2.3 现场可编程门阵列
FPGA是英文field-programmable gate array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA器件及其开发系统是开发大规模数字集成电路的新技术。
FPGA的编程单元是基于静态存储器(SRAM)结构形成的,从理论上讲,它具有无限次重复编程的能力。FPGA采用SRAM进行功能配置,可重复编程,但系统掉电后,SRAM中的数据会丢失。因此,需在FPGA上外加EPROM,将配置数据写入其中,系统每次上电后自动将数据引入SRAM中。
FPGA采用了逻辑单元阵列(logic cell array,LCA)这样一个新概念,内部包括可配置逻辑模块(configurable logic block,CLB)、输入/输出模块(input/output block,IOB)和内部连线(interconnect)三个部分。FPGA的基本特点主要有以下几个。
(1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
(2)FPGA可做其他全定制或半定制ASIC电路的中试样片。
(3)FPGA内部有丰富的触发器和I/O引脚。
(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
(5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度和可靠性的最佳选择之一。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中的数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只需用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。
2.3.1 FPGA器件的结构
目前,Xilinx公司的FPGA芯片分为XC2000、XC3000/XC3100、XC4000、XC5000、XC6200、XC8100、Spartan和Virture等系列。前3个系列是三代渐进而兼容的FPGA产品,它们包含多种规格,如密度大小、速度快慢、温度范围、封装形式等,形成了系列产品。
1.XC3000/XC3100系列的LCA结构
XC3000/XC3100系列的LCA结构包含5个完全兼容的FPGA产品系列:XC3000、XC3000A、XC3000L、XC3100和XC3100A。它们提供一组高性能、高密度的数字集成电路,排列规则,组合灵活,可扩展和用户可编程的阵列结构包含一组配置程序存储器和3类可配置单元:周边的I/O模块、CLB核心阵列和互连资源,如图2.3.1所示。
图2.3.1 XC3000系列的LCA结构
1)CLB
XC3000和XC3100的CLB结构是相同的,如图2.3.2所示。
CLB的组合逻辑部分使用32×1(或16×2)查找表(look up table)存储器来实现布尔函数。从5个逻辑输入和2个内部触发器输入中选择变量作为查找表的输入。该组合逻辑单元的延时是固定的,与实现的逻辑函数的复杂程度无关,也就是说,该组合函数发生器对逻辑的复杂程度没有限制,只与输入变量的数目有关。每个组合逻辑单元可实现一个具有5个变量的任意逻辑函数(F模式),或两个独立的4变量任意逻辑函数(FG模式),或两个独立函数的分时工作模式(FGM模式),如图2.3.3所示。
图2.3.2 XC3000/XC3100系列的CLB结构
图2.3.3 XC3000系列CLB的组合逻辑功能
(a)FG模式 (b)F模式 (c)FGM模式 (d)三个模式的综合
2)IOB
每个IOB为器件的外部封装引脚与内部用户逻辑之间提供一个可编程接口。如图2.3.4所示,每个IOB具有两个触发器、两根时钟输入线、输入门限检测缓冲器、三态控制的输出缓冲器、上拉电阻及一组程序控制存储单元。
图2.3.4 XC3000系列的IOB
可编程控制复用器
可编程互连节点
3)配置存储单元
如图2.3.5所示,基本的配置存储单元由两个CMOS反相器和一个用于读/写数据的开关晶体管组成。在配置期间,只写入数据;在读回期间,只读出数据。在正常工作模式下,开关晶体管处于OFF状态,不影响单元的稳定性。这与不断读/写的常规存储器件的工作方式有很大不同。
图2.3.5 配置存储单元
4)可编程互连
LCA内部的可编程互连(programmable interconnect)是连接各模块的通道,并形成了由多个CLB、IOB组成的功能电路。布线资源主要由两层金属线段网和可编程单元(即转接矩阵(switch matrix)和可编程互连点(programmable interconnection polins,PIPs))组成。
(1)通用互连。通用互连(general purpose interconnect)由夹在两列CLB之间的5根垂直金属线段和夹在两行CLB之间的5根(XC2000为4根)水平金属线段网组成,如图2.3.6所示。
图2.3.6 通用互连
在垂直线段和水平线段交叉处有转接矩阵。转接矩阵连接这些段片的端点,实现相邻行、列的金属线网段之间的可编程互连。未编程器件的矩阵引脚都是无连接的。用自动布线程序或XACT系统中的Edit Net命令选择希望的矩阵引脚对,可建立经过转接矩阵的连接或不连接。转接矩阵每组允许的互连引脚如图2.3.7所示,可用XACT开发系统中的Show Matrix命令高亮度地加以显示。
(2)直接互连。如图2.3.8所示,直接互连(direct interconnect)提供相邻CLB及CLB与IOB之间最有效的网络连接。
(3)长线。长线(longlines)不通过转接矩阵而直接贯通整个芯片,适宜于距离长、延时要求小的多信宿(高扇出)网络(如时钟网络等)。如图2.3.9所示,夹在两列CLB之间有3根(XC2000为2根)垂直长线,夹在两行CLB之间有2根(XC2000为1根)水平长线,与每边IOB相邻处还有附加的2根(XC2000为1根)长线。与水平长线相邻的有一系列三态门,它们可实现三态总线和“线与”、“线或”功能,水平长线两端带有上拉电阻。
图2.3.7 转接矩阵的互连选项
图2.3.8 直接互连
5)晶体振荡器
LCA内部有一个高速反相放大器,它位于芯片的右下角,与芯片外部的晶体振荡电路相组合,可构成一个晶体振荡器(crysta oscillator)。利用配置选项,其振荡可进行二分频,实现产生对称方波的功能。
XC4000的结构改进主要有下列几个方面:①每个CLB有更多的输入和输出;②快速进位逻辑;③更快、更有效的计数器;④通道传输速度达到系统速度;⑤宽输入译码器;⑥更高的输出驱动能力。
图2.3.9 XC3000系列的长线
下面仅对XC4000系列的CLB结构做一些介绍,其他方面的改进请参见后面的列表及参考文献。
结构的大量改进提高了XC4000系列的逻辑密度和器件性能。其中最大的改进在于CLB结构的改进,这一结构的改进使其功能更为灵活,每个CLB有更多的“等效门”。如图2.3.10所示,每个XC4000系列的CLB包括3个函数发生器、2个触发器和若干编程控制的多路开关。
(1)快速进位(fast carry)逻辑。XC4000系列包含专用硬件来加速加法器和计数器的进位通道。图2.3.11所示的为算术模式中CLB的配置。
(2)片内RAM。XC4000系列是带有RAM的第一种可编程逻辑器件。每个CLB的一个可选模式,可使F′和G′函数发生器内的查找表存储器作为16×2b或32×1b阵列的读/写存储单元(见图2.3.12),F1~F4输入和G1~G4输入作为地址线,在每个查找表中选择一个特定的存储单元。图中的为配置存储比特。
当CLB的组合逻辑发生器配置成读/写存储器(RAM)来使用时,任一CLB的组合逻辑发生器均可通过下列三种方式之一来配置。
(1)两个16×1bRAM,有两个数据输入,两个数据输出,并且是完全相同的,如有需要,可对每个RAM进行不同的定址。
(2)一个32×1bRAM,有一个数据输入和一个数据输出。
(3)一个16×1bRAM,加上一个5输入组合逻辑发生器。
图2.3.10 XC4000系列的CLB
图2.3.11 快速进位逻辑
2.XC5000系列的LCA结构
XC5000系列以全新的结构,将FPGA标准的可编程能力和低成本、大容量特性相结合,对三层金属网和0.6μm CMOS SRAM工艺进行优化,硅片的效能达到惊人的改进,使它们能承受大于5 000门的任何设计。类似于前3个系列,XC5000系列由可编程I/O模块、可编程逻辑块和可编程互连组成,它的逻辑和局部布线资源可组合成灵活的多功能块(versa block),通用布线经过通用布线矩阵(GRM)接到多功能块上。XC5000系列结构的一个概念性简化模型如图2.3.13(a)所示。
图2.3.12 CLB用做读/写存储器
XC5000系列产品的主要特点是:高密度可再编程系列;新型结构和先进工艺的技术提供最低成本;多功能块有丰富的局部布线加多用逻辑;多用环(versa ring)有高利用率和引脚输入/输出的灵活性;具有进位逻辑、级联链、内部三态总线、4条全局时钟网线和边界扫描逻辑(JTAG);由XACT开发系统支持。
1)多功能块
在每个多功能块结构中的基本逻辑单元(logic cell,LC)如图2.3.13(c)所示,每个逻辑单元由一个4输入的函数发生器(F)、一个存储器件(FD)和控制逻辑组成。每个逻辑单元有5个独立的输入和3个输出。
图2.3.13(c)实际上表示由4个逻辑单元组成的XC5000系列的CLB,所以,每个CLB有20个独立的输入和12个独立的输出,上、下逻辑单元可配置成实现5输入的函数。一般总是要求FPGA的实现软件能使资源的利用率最大,XC5000系列做到这一点,是靠围绕每个CLB的局部互连,即局部互连矩阵(LIM)和直接连接。这两种互连资源和CLB组合在一起形成多功能块,如图2.3.13(b)所示。
2)多用环I/O接口
XC5000系列具有多用环I/O接口(versa ring I/O interface),I/O块和核心逻辑之间的接口被重新设计,I/O块与核心逻辑完全去耦。XC5000的I/O包括专用边界扫描逻辑以增加板级的可测性,但不包括输入或输出寄存器。这个方法允许最大数目的I/O块围绕器件放置,改善I/O与门的比率,并减少每个I/O的成本。
图2.3.13 XC5000系列结构
(a)XC5000系列结构框图 (b)多功能块 (c)可配置逻辑块(CLB)
3)通用布线矩阵
通用布线矩阵(GRM)在功能上类似于其他结构中见到的转接矩阵,但是,它与包含在多功能块中的逻辑资源的紧耦合是新型的。先进的仿真工具在XC5000结构开发期间被用来决定要求的布线资源的最优程度。XC5000系列包括6级互连层次,一系列单长线、双长线和长线都通过GRM布线,直接连接、LIM和逻辑单元反馈包含在每个多功能块中。XC5000的互连、一个有效的多路开关方案和三层金属组合被用来改善整个硅片的利用效率。
3.XC6200系列、XC8100系列的FPGA简介
1)XC6200系列
XC6200系列是为计算机专用协处理器而设计的,有4个品种,门数最高达到10万门,存储器容量最高达256KB。
2)XC8100系列
XC8100系列瞄准3个主要应用:①高级设计语言(HDL)和逻辑综合的设计;②通用的逻辑应用,特别是远程通信和工业控制;③要求单片FPGA的应用。
2.3.2 FPGA器件的配置模式
FPGA器件的配置模式是指FPGA用来完成设计时的逻辑配置和外部连接方式。逻辑配置是指,经过用户设计输入并经过开发系统编译后产生的配置数据文件,将其装入FPGA芯片内部的可配置存储器的过程,简称FPGA的下载。只有经过逻辑配置,FPGA才能实现用户需要的逻辑功能。
FPGA的配置模式由芯片引脚M0、M1和M2的状态决定。XC2000/XC3000/XC3100 及XC4000系列的配置模式如表2.3.1所示。其他系列的配置模式与它们稍有差别,在制作PCB时,要查阅相关手册。下面以XC2000和XC3000为例,介绍5种配置模式。
表2.3.1 XC2000/XC3000/XC3100及XC4000系列的配置模式
1.主动串行配置模式
选择主动串行配置模式时,需要附加一个外部串行存储器EPROM或PROM,事先将配置数据写入外部存储器。每当电源接通后,FPGA将自动地从外部串行PROM或EPROM中读取串行配置数据。主动串行配置模式的电路如图2.3.14所示。
2.主动并行配置模式
在主动并行配置模式的情况下,一般用EPROM做外部存储器,事先将配置数据写入EPROM芯片内,每当电源接通后,FPGA将自动地从外部串行EPROM中读取配置数据。主动并行配置模式的电路如图2.3.15所示。主动配置模式使用FPGA内部的一个振荡器产生CCLK来驱动从属器件,并为包含配置数据的外部EPROM生成地址及定时信号。
图2.3.14 主动串行配置模式
图2.3.15 主动并行配置模式
3.外设配置模式
在外设配置模式下,FGPA器件将作为一个微处理器的外设,配置数据由微处理器提供,在微处理器的写脉冲和片选信号的控制下对FPGA进行数据配置。在CS0、CS1、CS2 和WRT信号的控制下得到写周期,在每个写周期经数据总线通过FPGA芯片引脚D0~D7并行读入一个字节的配置数据(也可采用串行方式)。配置数据存入芯片内部的输入缓冲寄存器,在FPGA内部将并行配置数据变为串行数据。若FPGA信号RDY/BUSY输出高电平,则表示一个字节的配置数据读完,输入缓冲器准备好,准备读入下一字节的配置数据。外设配置模式的电路如图2.3.16所示。
图2.3.16 外设配置模式
4.从动串行配置模式
从动串行配置模式如图2.3.17所示。该模式为PC机或单片机系统加载FPGA配置数据提供了最简单的接口。串行数据DIN和同步配置时钟CCLK可以同时由一个PC机的I/O口提供,在时钟CCLK的控制下进行配置操作。
图2.3.17 从动串行配置模式
5.菊花链配置模式
在数字系统的应用设计中,单片FPGA往往不足以实现完整的系统功能,这时可采用多个FPGA芯片构成数字系统。多个FPGA芯片可以用菊花链模式配置。菊花链配置模式是一种多芯片的配置信号连接方式。任何模式下配置的LCA都支持菊花链模式。以主动模式配置的LCA可作为数据源,并可控制从属器件。图2.3.18所示的为一个主模式配置器件与两个从属配置器件构成的菊花链配置模式。
图2.3.18 主并菊花链配置模式
6.FPGA器件的配置流程
在FPGA器件的配置之前,首先要借助FPGA开发系统,按某种文件格式要求描述设计系统,编译仿真通过后,将描述文件转换成FPGA芯片的配置数据文件。选择一种FPGA的配置模式,将配置数据装载到FPGA芯片内部的可配置存储器,FPGA芯片才会成为满足要求的芯片系统。
FPGA的配置流程如图2.3.19所示,包括芯片初始化、芯片配置和启动等几个过程。
图2.3.19 FPGA的配置流程
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。