1、第6章 可编程逻辑器件原理 6.1 可编程逻辑器件的分类及特点可编程逻辑器件的分类及特点6.2 复杂可编程逻辑器件复杂可编程逻辑器件CPLD6.3 现场可编程门阵列现场可编程门阵列FPGA6.4 FPGA的配置的配置6.5 可编程逻辑器件的选用可编程逻辑器件的选用小结小结习题习题 6.1 可编程逻辑器件的分类及特点可编程逻辑器件的分类及特点 1从可编程逻辑器件的集成度分类从可编程逻辑器件的集成度分类集成度是集成电路一项很重要的指标,如果从集成密度上分类,可分为低密度可编程逻辑器件和高密度可编程逻辑器件。通常,当PLD中的等效门数超过500门,则认为它是高密度PLD。如果按照这个标准,PROM、
2、PLA、PAL和GAL器件属于低密度可编程逻辑器件,而CPLD和FPGA属于高密度可编程逻辑器件。2从互连结构上分类从互连结构上分类从互连结构上可将PLD分为确定型和统计型两类。(1)确定型PLD是指互连结构每次用相同的互连线实现布线,所以线路的时延是可以预测的,这类PLD的定时特性常常可以从数据手册上查阅而事先确定。这种基本结构大多为与或阵列的器件,它能有效地实现“积之和”乘积项形式的布尔逻辑函数,包括简单PLD器件(PROM、PLA、PAL和GAL)和CPLD。目前除了FPGA器件外,基本上都属于这一类结构。(2)统计型PLD的典型代表是FPGA,它是指设计系统每次执行相同的功能都能给出不
3、同的布线模式,一般无法确切地预知线路的时延,所以设计系统必须允许设计者提出约束条件,如关键路径的时延。统计型结构的可编程逻辑器件主要通过改变内部连线的布线来编程。3从编程元件上分类从编程元件上分类 1)熔丝或反熔丝开关 熔丝开关是最早的可编程元件,由熔断丝组成。在需要编程的互连节点上设置相应的熔丝开关。在编程时,需要保持连接的节点保留熔丝,需要去除连接的节点熔丝用电流熔断,最后留在器件内的熔丝模式决定相应器件的逻辑功能。它是一次可编程器件,缺点是占用面积大,要求大电流,难于测试。使用熔丝开关技术的可编程逻辑器件如PROM、PAL和Xilinx的XC5000系列器件等。反熔丝元件克服了熔丝元件的
4、缺点,在编程元件的尺寸和性能方面比熔丝开关有显著的改善。反熔丝开关通过击穿介质达到连通线路的目的。反熔丝在硅片上只占一个通孔的面积,因此反熔丝占用硅片面积小,对提高芯片的集成密度很有利。2)浮栅编程技术 浮栅编程技术包括紫外线擦除、电编程的UVEPROM,以及电编程的E2PROM和闪速存储器(Flash Memory)。它们都用悬浮栅存储电荷的方法来保存编程数据,所以在断电时,存储数据不会丢失。GAL和大多数CPLD都用这种方式编程。3)SRAM配置存储器 使用静态存储器SRAM存储配置数据,称配置存储器。目前Xilinx公司生产的FPGA主要采用了这种编程结构,这种SRAM配置存储器具有很强
5、的抗干扰性,与其它编程元件相比,具有高密度和高可靠性的特点。第一类和第二类器件称为非易失性器件,它们在编程后,即使掉电配置的数据仍保持在器件上;第三类器件即SRAM器件称为易失性器件,每次掉电后配置的数据会丢失,在每次加电时需要进行重新配置。4从可编程特性上分类从可编程特性上分类从可编程特性上可分为一次可编程和重复可编程两类。由于熔丝或反熔丝器件只能写一次,所以称为一次性编程,其它方式编程的器件均可以多次编程。一次可编程的典型产品是PROM、PAL、熔丝和反熔丝型FPGA。在重复可编程的器件中,用紫外线擦除的产品的编程次数一般在几十次的数量级,采用电擦除方式的次数稍多些,采用E2CMOS工艺的
6、产品擦写次数可达上千次,采用SRAM配置结构的则被认为可实现无限次的编程。6.2 复杂可编程逻辑器件复杂可编程逻辑器件CPLD 6.2.1 简单低密度简单低密度PLD的原理的原理简单低密度PLD的结构框图如图6.1所示。典型的PLD由一个“与”阵列和一个“或”阵列组成,而任意一个组合逻辑都可以用“与-或”表达式来描述,所以简单PLD能以乘积和的形式完成大量的组合逻辑功能。图6.1 简单低密度PLD的结构框图 1PLD的表示方法的表示方法阵列规模庞大的PLD使用了一种新的表示方法,它在芯片的内部配置和逻辑图之间建立了一一对应的关系,并使逻辑图和真值表结合起来。1)连接方式PLD门阵列交叉点上的连
7、接方式,即固定连接单元、可编程连接单元和被编程擦除单元的符号如图6.2所示。图6.2 PLD的连接点表示符号 2)基本门电路的PLD表示方式PLD中门电路的惯用表示法如图6.3所示。图6.3 PLD电路中门电路的惯用画法(a)与门;(b)输出恒等于零的与门;(c)或门;(d)互补输出缓冲器;(e)三态输出缓冲器 3)PLD电路表示法PLD编程后的电路如图6.4所示,PLD电路由与阵列和或阵列组成。连线交叉点“x”表示与门的一个输入端与一个外输入相连接,或门阵列的几列连线交叉点“”表示一个或门可以和几个与门输出端相连接。通过编程使可编程连接单元的某些点连接,某些点断开,输入/输出形成以下逻辑关系
8、,就构成了同或门和异或门。BABAYABBAY21图6.4 PLD编程后的电路 2.可编程阵列逻辑器件可编程阵列逻辑器件(PAL)可编程阵列逻辑器件PAL是20世纪70年代后期推出的PLD。PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和E2PROM技术。PAL的基本电路如图6.5所示,它是由可编程的与门阵列和固定连接的或门阵列以及其它附加的输出电路组成。图6.5 PAL的基本电路 在尚未编程前,与逻辑阵列所有的交叉点均有快速熔丝连通。编程时将有用的熔丝保留,无用的熔丝
9、熔断,就得到所需的电路。图6.6是编程后的PAL电路,它实现的逻辑函数为 CDBDDCBFDBCDCBDCBFCBCBAFACDCBF4321图6.6 编程后的PAL电路 图6.7 PAL带异或门的寄存器输出电路 在PAL的基础上,又发展了一种通用阵列逻辑GAL,如GAL16V8、GAL22V10等,它继承了PAL器件的与-或阵列结构,但在结构和工艺上作了很大改进。PAL器件采用双极性熔丝工艺,一旦编程就不能改写,这给用户修改电路带来不便。可编程通用逻辑器件GAL采用了E2PROM工艺,实现了电可擦除、电可改写,具有低功耗、电擦除可反复编程、速度快的特点,其输出结构是可编程的逻辑宏单元,通过编
10、程可将输出逻辑宏单元(Output Logic Macro Cell,OLMC)设置成不同的工作状态,从而增加了器件的通用性,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。OLMC是与GAL16V8器件输出引脚对应的可编程模块。为避免与正文中输出引脚号混淆,也可以将其中的编号删除,不影响对原理的理解。GAL按门阵列的可编程结构分为两大类:一类是与PAL基本结构相类似的普通型GAL器件,其与门阵列是可编程的,或门阵列固定连接,这类器件如20引脚的GAL16V8;另一类是与门阵
11、列和或门阵列均可编程,如24引脚的GAL39V8。下面以常见的GAL16V8(如图6.8所示)为例,介绍GAL器件的结构形式和工作原理。GAL16V8由一个3264位的可编程与逻辑阵列、8个输出逻辑宏单元、8个输入缓冲器、8个三态输出缓冲器和个反馈/输入缓冲器等电路组成。GAL16V8的每个输入正负信号和对应的反馈正负信号四列构成一个组,共8组输入32列。对每个OLMC有8个与门输入,共计64项。通过这样一个矩阵就可以把任何一个输入信号连同它的极性连接到要输出的任何一个与门上,与逻辑阵列的每个交叉点设有E2CMOS编程单元。对GAL的编程就是对这个与阵列的ECMOS编程单元进行数据写入,实现相
12、关点的编程连接,得到所需的逻辑函数。在GAL16V8中,引脚29作为固定输入,引脚15、16作为固定输出。而引脚12、13、14、17、18、19由三态门控制,既可以作输入端又可以作输出端。第1脚是专门用于CP的时钟输入端,第11脚是三态选通信号端OE,在组合电路中这两个引脚都可作为信号输入端。因此这类芯片最多有16个输入脚,输出脚最多有8个,这也正是芯片型号中的两个数字的含义。图6.8 GAL16V8的逻辑结构图 图6.9 输出逻辑宏单元的结构框图 OLMC的前级来自与阵列输出。在或门的输出端能产生不超过项的与-或逻辑函数。图中的异或门用于控制输出信号的极性,XOR(n)对应于结构控制字中的
13、1位,n为各个OLMC的输出引脚号。当XOR(n)端为“1”时,异或门起反相器的作用,使输出信号高电平有效。否则XOR(n)端为“0”时,使输出信号低电平有效。D触发器对异或门输出状态起记忆作用,使GAL适用于时序逻辑电路。每个OLMC有4个多路选择器:PTMUX用于控制来自与门阵列的个乘积项中第1个乘积项的作用;TSMUX用于选择输出三态缓冲器的选通信号;FMUX决定反馈信号的来源;OMUX则用于选择输出信号是组合的还是寄存的。这些多路选择器的输出取决于结构控制字AC0、AC1(n)和AC1(m)。2)GAL的结构控制字GAL16V8的结构控制字如图6.10所示。结构控制字共82位,其中 A
14、C0、AC1(n)、SYN、XOR(n)是OLMC的控制信号,XOR(n)、AC1(n)和AC1(m)每路输出一位,n为对应的OLMC的输出引脚,代表与n相邻一位,即n+1和n-1。AC0只有一个,为各路所公有。AC0、AC1(n)和AC1(m)均为结构控制位,决定4个多路选择器输出的状态。SYN为同步位,它决定GAL是纯粹组合型输出(当SYN=1时),还是具有寄存器型输出能力(当SYN=0时)。结构控制字中还有乘积项禁止位,共64位,分别控制64个乘积项(PT0PT63),以屏蔽某些不用的乘积项。图6.10 GAL16V8的结构控制字 表 6.1 OLMC 的编程工作模式 SYN AC0 A
15、C1(n)XOR(n)工作 模式 输出 极性 备注 1 0 1/专用输入/1 和 11 脚为数据输入,三态门禁止 0 低电平有效 1 0 0 1 专用组 合输出 高电平有效 1 和 11 脚为数据输入,三态门选通 0 低电平有效 1 1 1 1 反馈组合 输出 高电平有效 1 和 11 脚为数据输入,三态门的选通信号是第一乘积项;反馈信号取自 I/O 端 0 低电平有效 0 1 1 1 时序电路中 的组合输出 高电平有效 1 脚接 CP,11 脚接 OE,至少有一个 OLMC 是寄存器输出模式 0 低电平有效 0 1 0 1 寄存器 输出 高电平有效 1 脚接 CP,11 脚接 OE GAL的
16、结构控制字是由编译器将用户输入的软件经编译而成,并由编程器写入。一般情况下,使用者首先应用某种编程语言编制描述其逻辑功能的程序,然后在相应语言的开发系统中,生成标准格式数据文件,最后使用专用编程器写入GAL芯片,就可以实现特定的逻辑功能。6.2.2 CPLD的结构和工作原理的结构和工作原理CPLD是由多个类似PAL的逻辑块组成,每个逻辑块就相当于一个PAL/GAL器件,逻辑块之间使用可编程内部连线实现相互连接。但CPLD比PAL/GAL在集成规模和工艺水平上有了很大的提高,出现了大批结构复杂、功能更多的逻辑阵列单元形式,如Altera公司的EPM系列器件、Atmel公司的ATV5000系列器件
17、采用多阵列矩阵MAX(Multiple Array Matrix)结构的大规模CPLD,Xilinx公司的XC7000和XC9500系列产品采用通用互连矩阵UIM(Universal Interconnect Matrix)及双重逻辑功能块结构的逻辑阵列单元。CPLD采用EPROM或E2CMOS工艺,断电后编程数据不会丢失,因此不需要外部存储器,而且这种CPLD中设置有加密单元,加密后可以防止编程数据被读出。生产这种CPLD的公司有多家,各个公司的器件结构千差万别,但一般情况下,都至少包含了三种结构:可编程逻辑块、可编程I/O单元和可编程内部连线。可编程逻辑块是基于简单PLD的乘积项结构,包含
18、有乘积项、宏单元等,能有效地实现各种逻辑功能。每个逻辑块就相当于一个PAL/GAL器件,逻辑块之间使用可编程内部连线实现相互连接。CPLD的基本结构如图6.11所示。从概念上,CPLD是由多个类似PAL的功能块组成,通过固定在芯片上的器件内部的可编程连线区的布线资源将其互连起来。图6.11 CPLD的基本结构图 表 6.2 XC9500 系列产品的性能参数表 器件 宏单元 可用 门数 寄存器 tPD/ns tSU/ns tCO/ns fCNT /MHz fSYSTEM /MHz XC9536 36 800 36 5 3.5 4.0 100 100 XC9572 72 1600 72 7.5 4
19、.5 4.5 125 83.3 XC95108 108 2400 108 7.5 4.5 4.5 125 83.3 XC95144 144 3200 144 7.5 4.5 4.5 125 83.3 XC95216 216 4800 216 10 6.0 6.0 111.1 67.7 XC95288 288 6400 288 15 8.0 8.0 92.2 56.6 XC9536XL 36 800 36 4 3 3 200 XC9572XL 72 1600 72 5 3.7 3.5 178 XC9544XL 144 3200 144 5 3.7 3.5 178 XC95288XL 288 64
20、00 288 6 4.1 4.3 151 1功能模块功能模块FB功能模块FB的结构框图如图6.12所示,每个功能模块由18个独立的宏单元构成,每个宏单元可实现一个组合电路或寄存器的功能,功能模块也接收全局时钟信号、输出使能信号和复位/置位信号。功能模块产生驱动FastCONNECT开关矩阵的18个输出,这18个信号和相应的输出使能信号也用于驱动I/O接口模块。图6.12 功能模块FB的结构框图 2宏单元宏单元XC9500器件的每个宏单元可以单独配置成组合逻辑或时序逻辑的功能,XC9500宏单元逻辑结构示意图如图6.13所示。图6.13 XC9500宏单元逻辑结构示意图 在宏单元中,来自与阵列的
21、五个直接乘积项是实现组合功能的主要输入数据来源,它们也可用作包括时钟、复位/置位和输出使能的控制输入。乘积项分配器控制五个直接的乘积项通过逻辑分配到每个宏单元。乘积项分配器的功能与每个宏单元如何利用五个直接乘积项的选择有关。例如,所有五个直接乘积项可以驱动“或”函数,如图6.14所示。图6.14 使用直接乘积项的宏单元逻辑 3乘积项分配器乘积项分配器乘积项分配器可以重新分配功能模块内其它的乘积项来增加宏单元的逻辑能力,它允许超过五个直接乘积项,这就要求附加乘积项的任何宏单元可以存取功能模块内其它宏单元中独立的乘积项,如图6.15所示。最多15个乘积项对单个宏单元是有效的,此时仅有一个小的增加延
22、时tPTA。乘积项分配器也可以重新分配FB内来自任何宏单元的乘积项,通过组合部分积之和连到其它几个宏单元,如图6.16所示,在这个例子中,附加的延时仅为8tPTA。图6.15 利用15个乘积项的乘积项分配 图6.16 通过数个宏单元的乘积项分配 4FastCONNECT开关矩阵开关矩阵FastCONNECT开关矩阵连接信号到FB的输入端,如图6.17所示。所有I/O模块的输出(对应于用户引脚的输入)和所有FB的输出驱动FastCONNECT开关矩阵,这些信号的任一个(FB扇入限制高达36)可以编程选择,以统一的延时驱动每个FB。FastCONNECT开关矩阵具有驱动目标FB前组合多个内部连接到
23、单个线与输出的能力。这样可以提供附加的逻辑能力和增加目标FB的有效逻辑扇入,而不产生任何附加的时序延时。对内部连接仅来源于FB的输出是有效的,它由开发软件自动调用。图6.17 FastCONNECT开关矩阵连接信号到FB的输入端 5输入输入/输出接口模块输出接口模块(I/O)I/O块提供内部逻辑电路和用户I/O引脚之间的接口。每个I/O块包括数个输入缓冲器、输出使能多路选择器、用户可编程接地控制和输出驱动器等部分,如图6.18所示。输入缓冲器是与标准的5 V CMOS、5V TTL和3.3 V信号电平兼容的。输入缓冲器利用内部5 V电源(VCCINT)确保输入门限为常数,从而保证输入门限电压不
24、随接口电压VCCIO而改变。输出使能可以来自宏单元的乘积项信号,或者全局输出使能(OE)信号的任一个,或者总是“1”或总是“0”。每个输出有独立的输出摆率控制。输出沿的摆率可以通过编程使得输出摆率变慢来减少系统噪声,这样附加一个时间延时,如图6.19所示。每个I/O块提供用户编程接地引脚,允许将器件I/O引脚配置为附加的接地引脚。把关键处设置的编程接地引脚与外部的地连接,可以减少由大量瞬时转换输出产生的系统噪声。控制上拉电阻(典型值为10 k)接到每个器件的I/O引脚,用来防止器件在非正常工作时引脚出现悬浮情况。在器件编程模式和系统加电期间,这个电阻是有效的,擦除器件时它也是有效的,在正常运行
25、器件时这个电阻是无效的。图6.18 I/O接口模块 图6.19 输出摆率控制 XC9500系列器件可在5 V正常电压和3.3 V/2.5 V的低电压条件下安全工作。I/O输出驱动器具有支持24 mA输出驱动的能力,在器件中的所有输出驱动器可以配置为5 V TTL电平或3.3 V电平,器件的输出电源VCCIO可连接5 V或3.3 V的电源。图6.20表示XC9500器件如何在仅有5 V或混合的3.3 V/5 V系统中的使用。低电压器件XC9500XL CPLD具有比XC9500 CPLD更高的性能,其输出电压为3.3 V或2.5 V,其I/O引脚可接受5 V、3.3 V和2.5 V的电压输入。图
26、6.20 XC9500系列器件的工作模式 6低功率模式低功率模式所有XC9500 器件提供对单个宏单元或横跨所有宏单元的低功率模式,这个特性可使器件功率显著减少。每个单个宏单元可以被用户编程为低功率模式,这种模式的应用使关键的部件可以保持为标准的功率模式,而其它部件可以编程为低功率运行,以便减少整个功耗。XC9500器件在加电期间,所有器件引脚和JTAG引脚被禁止,所有器件输出用I/O块上拉电阻使能禁止。当电源电压达到安全电平,用户寄存器开始初始化(一般在100 s内),器件立即运行有效。XC9500器件在编程期间,器件处于正常工作状态,器件的输入和输出被使能,JTAG引脚同时也被使能,允许在
27、任何时间擦除器件或进行边界扫描测试。XC9500器件在擦除状态(任何用户模式编程之前)下,器件输出用I/O块上拉电阻禁止,而使能JTAG引脚允许器件在任何时间被编程。6.3 现场可编程门阵列现场可编程门阵列FPGA 6.3.1 FPGA的基本结构的基本结构FPGA的生产厂家以及产品种类较多,但它们的基本组成大致相似。FPGA的基本结构示意图如图6.21所示。它的核心部分是逻辑单元阵列LCA,LCA是由内部逻辑块矩阵和周围I/O接口模块组成。LCA内部连线在逻辑块的行列之间,占据逻辑块I/O接口模块之间的通道,可以由可编程开关以任意方式连接形成逻辑单元之间的互连。图6.21 FPGA的基本结构示
28、意图 FPGA由三种编程单元和一个存放编程数据的静态存储器组成,这三种可编程单元是由布线资源分隔的可编程逻辑模块CLB、周边可编程I/O单元IOB和布线通道中的互连资源组成。CLB阵列实现用户指定的逻辑功能,它们以阵列的形式分布在FPGA中;可编程I/O单元 IOB为内部逻辑与器件封装引脚之间提供了可编程接口,它通常排列在芯片四周;可编程互连资源分布在CLB的空隙,它是在模块之间传递信号的网络,通过编程实现各个CLB之间、CLB与IOB之间以及全局信号与CLB和IOB之间的连接。目前,大部分FPGA利用用户编程的查找表LUT(Look-Up Table)实现模块逻辑,利用程序控制多路复用器实现
29、其功能选择。FPGA的功能配置是由编程数据存储贮器SRAM存放的编程数据决定。这些编程数据决定和控制各个CLB、IOB及内部连线的逻辑功能和它们之间的互连关系。FPGA的静态存储器SRAM的存储单元如图6.22所示,它是由两个CMOS反相器和一个用于读写数据的开关晶体管组成。两个CMOS反相器接成一个环路形成双稳态器件。由于采用了独特的工艺设计,这种结构具有很强的抗干扰能力和很高的可靠性,但停电后,存储器中的数据不能保存,每次通电必须重新给存储器装载编程数据。通常配置数据存放在FPGA外部的配置芯片EPROM、E2PROM或计算机中,系统开机或需要时,由FPGA内初始化逻辑提供在加电时自动加载
30、配置数据至SRAM中。用户也可以控制加载过程,在现场修改器件的逻辑功能,即所谓的现场编程。SRAM存储单元的数据一旦确定,FPGA门阵列的逻辑关系也就确定了。采用SRAM查找表结构的FPGA厂商有Xilinx、Altera、Lattice等。图6.22 FPGA的静态存储器SRAM的存储单元 随着技术的发展,在2004年以后,一些厂家推出了一些新型FPGA,如Altera公司的MAX系列FPGA,这些产品与CPLD一样,内部集成了非易失性的存储器,从而减少了系统配置的芯片数量和成本。这些器件的逻辑功能是基于FPGA查找表结构,在本质上它就是一种在内部集成了配置芯片的FPGA。这些器件配置时间极
31、短,加电就可以工作,并且FPGA掉电后,配置数据也不会丢失,不需要从外部加载配置数据。还有一些FPGA的逻辑功能是通过多路开关实现,编程是通过逆熔丝的通断实现的,这样的结构称为多路开关反熔丝结构,或者说是反熔丝多路开关结构,这些开关元件在未编程时处于开路状态。编程时,在需要连接处的逆熔丝开关元件两端加上编程电压,逆熔丝就由高阻抗变为低阻抗,实现两点间的连接,编程后器件内的反熔丝模式决定了相应器件的逻辑功能。基于反熔丝多路开关的FPGA具有体积小、集成度高、速度快、易加密、抗干扰能力强、耐高温等特性,适用于要求高可靠性的特殊应用场合,但因为反熔丝多路开关结构是一次性编程器件,在设计开发的初期阶段
32、不灵活。Actel和Quicklogic是采用反熔丝多路开关结构FPGA的代表厂商。6.3.2 基于查找表的基于查找表的FPGA的结构和工作原理的结构和工作原理Xilinx公司的FPGA产品基本上都是基于查找表型的器件,包括两大类:Spartan类和Virtex类。Spartan类主要面向低成本的中低端应用,Virtex类主要面向高端应用,这两个系列的差异在于芯片的规模和专用模块上。下面先简要介绍Spartan、Spartan-2、Spartan-3、Spartan-3E系列产品的结构和特点。(1)Spartan系列产品的主要性能如表6.3所示,该系列结合了片上RAM、强大的IP库支持和大容量
33、、低价格的特点,使其可在大批量生产中替代ASIC;系统门数范围为5千门到4万门,这些FPGA结合了结构上的多功能性,具有沿触发和双口模式的片内RAM存储器,配以更高的速度、更丰富的布线资源和更灵活的软件,达到完全自动地实现复杂的高密度和高性能的设计要求。表 6.3 Spartan 系列产品的主要性能 器件 逻辑单元 可用门 CLB 阵列 CLB 总数 最大用户 I/O XCS05 238 5K 10 10 100 77 XCS10 466 10K 14 14 196 112 XCS20 950 20K 20 20 400 160 XCS30 1368 30K 24 24 576 192 XCS
34、40 1862 40K 28 28 784 224 (2)Spartan-2系列产品的主要性能如表6.4所示,该系列是在Spartan系列结构的基础上进行了较大的改进,是高速、高密度现场可编程门阵列,系统门数范围为1.5万门到20万门;采用基于VirtexTM结构的流水线结构,支持流行的接口标准,具有适量的逻辑资源和嵌入式RAM。表 6.4 Spartan-2 系列产品的主要性能 器件 逻辑单元 可用门 CLB 阵列 CLB 总数 最大用户 I/O XC2S15 432 15K 8 12 96 86 XC2S30 972 30K 12 18 216 132 XC2S50 1728 50K 16
35、 24 384 176 XC2S100 2700 100K 20 30 600 196 XC2S150 3888 150K 24 36 864 260 XC2S200 5292 200K 28 42 1176 284 (3)Spartan-3系列产品的主要性能如表6.5所示,该系列是为那些需要大容量、低价格电子应用的用户而设计的。该系列基于Virtex-2 FPGA架构,采用90 nm技术,系统门数从5万门到500万门,内嵌了硬核乘法器和数字时钟管理模块;从结构上看,Spartan-3将逻辑、存储器、数学运算、数字处理器、I/O以及系统管理资源结合在一起,改进了处理技术,为编程逻辑工业提供了新
36、的标准。表 6.5 Spartan-3 系列产品的主要性能 器件 逻辑单元 可用门 CLB 阵列 CLB 总数 最大用户 I/O XC3S50 1728 50K 16 12 192 124 XC3S200 4320 200K 24 20 480 173 XC3S400 8064 400K 32 28 896 264 XC3S1000 17280 1M 48 40 1920 391 XC3S1500 29952 1.5M 64 52 3328 487 XC3S2000 46080 2M 80 64 5120 565 XC3S4000 62208 4M 96 72 6912 712 XC3S500
37、0 74880 5M 104 80 8320 784 (4)Spartan-3E系列产品的主要性能如表6.6所示,其主要面向消费电子应用,如宽带无线接入、家庭网络接入以及数字电视设备等。该系列的系统门数范围从10万到160万门,是在Spartan-3基础上进一步改进的产品,提供了比Spartan-3更多的I/O端口和更低的单位成本。由于更好地利用了90 nm制造工艺,在单位成本上实现了更多的功能和处理带宽。表 6.6 Spartan-3E 系列产品的主要性能 器件 逻辑单元 可用门 CLB 阵列 CLB 总数 最大用户 I/O XC3S100E 2160 100K 22 16 240 108
38、XC3S250E 5508 250K 34 26 612 172 XC3S500E 10476 500K 46 34 1164 232 XC3S1200E 19512 1200K 60 46 2168 304 XC3S1600E 33192 1600K 76 58 3688 376 1可编程逻辑模块可编程逻辑模块CLBCLB是FPGA的基本逻辑单元电路,它能实现绝大多数的逻辑功能。CLB的简化原理框图如图6.23所示,CLB由组合逻辑函数发生器、触发器、编程数据存储单元和一些内部控制的数据选择器等电路组成。组合逻辑函数发生器是由查找表LUT构成。图6.23 CLB的简化原理框图 查找表型的 F
39、PGA 用查找表 LUT 实现多种组合逻辑功能。查找表是由静态存储器 SRAM 构成的函数发生器,二变量函数发生器的原理图如图 6.24 所示,电路是由 NMOS 管构成的逻辑函数发生器。A、B 是两个输入变量,F 是输出逻辑函数。输出和输入的逻辑关系是由一组配置存储器单元的控制代码MM3决定,MM3为编程静态存储单元 SRAM 中的数据,通过向编程存储单元 MM3写入不同数据,查找表得到不同输入和输出的逻辑关系。当MM1M2M3=1100 时,若 AB=10,T1和 T2导通,F=1;若 AB=01,T3和 T4导通,F=1;若 AB=11 或 AB=00 时,则 4 条支路皆不导通,F=0
40、;因此 F 的逻辑表达式为BABABAF。表 6.7是 MM3为不同取值时输入与输出的逻辑关系。图6.24 二变量函数发生器的原理图 同理,M个输入多变量的查找表相当于M个输入的逻辑函数真值表存储在一个2M1的SRAM中,SRAM的地址线起输入作用,SRAM的输出为逻辑函数的值,由此输出状态控制传输门或多路开关信号的通断实现与其它功能块的可编程连接。作为查找表来实现的函数发生器,时延与实现的函数的复杂性无关。上述查找表类型的逻辑函数发生器只能产生组合逻辑功能,在此基础上再增加触发器,便可构成既可实现组合逻辑功能,又可实现时序逻辑功能的基本逻辑单元电路。FPGA就是由许多这样的基本逻辑单元来完成
41、各种复杂的逻辑功能的。FPGA中有许多可编程多路选择器实现其功能选择。与查找表的工作情况一样,可编程多路选择器对信号的选择也是通过编程存储单元中的数据来控制门阵列中门的开和关,从而实现对多输入信号的选择输出。Spartan系列产品的CLB的组合逻辑发生器部分采用三个161的存储器查找表来实现组合逻辑函数,其中两个是四输入逻辑功能发生器F查找表(F-LUT)和G查找表(G-LUT),每个能提供四个独立输入信号的任何逻辑函数。它们各有16个编程数据存储单元,实现的逻辑功能由16个编程数据存储单元写入的数据决定。第三个函数功能发生器H-LUT能实现三输入变量的任意函数逻辑功能,其中两个输入端由A组数
42、据选择器编程决定,这些输入可以来自于F和G的输出,也可以来自于CLB的外部输入H0和外部输入H2,第三个输入总是来自CLB的外部输入H1。因而,通过三个逻辑函数发生器的两级组合,CLB能实现高达9个输入变量的某些函数。这三个查找表能联合起来完成任何单个五输入变量的逻辑功能。来自函数发生器的信号也可以在查找表输出端直接输出。F和H可以由可编程数据选择器编程接到X输出,G和H可接到Y输出,实现组合逻辑功能。CLB可以传递组合逻辑的输出到互连网络,也可以在一个或两个触发器中存储组合逻辑的结果或其它输入数据,并把它们的输出同样连接到互连网络。每个CLB有两个边沿触发的D触发器,D触发器被利用来存贮组合
43、逻辑发生器的输出。D触发器和组合逻辑发生器也能被独立应用。存贮单元的数据输入由B组数据选择器编程决定。CLB的存储单元结构如图6.25所示。在两个触发器中,其中有一个可由用户规定极性为上升沿或下降沿的公共时钟CK。两个触发器共用CLB的内部控制信号SR,通过各自的S/R控制电路,分别对两个触发器异步置位和复位。时钟使能也可通过选择器选择直接受CLB内部控制信号EC控制或接高电平。这两个D触发器都能被在加电或重配置时的全局置位/复位线初始化信号GSR控制。两个触发器分别从XQ和YQ输出,XQ和YQ是CLB的时序逻辑输出端。图6.25 CLB的存储单元结构 CLB除了实现组合逻辑和时序逻辑功能外,
44、函数发生器G和F的编程数据存储单元还可构成读/写存储器使用。一个CLB可以构成两个容量为161位的RAM或一个321位RAM,函数发生器G的编程数据存储单元还可设置为161位的双口RAM(可以同时进行读操作和写操作)。Spartan系列的一个CLB所支持的存储器容量、触发方式和单口、双口模式的关系如表6.8所示。以CLB构成两个161位单口RAM为例,其原理框图如图6.26所示。CLB作为RAM使用时,控制信号功能将有所变化,时钟脉冲K作为RAM的写入信号,H、DIN/H2和SR/H0变为两个数据输入端D0、D1和写使能输入,G1G4和F1F4分别为两个RAM的地址信号,G、F为两个RAM的数
45、据输出。写入时,地址信号G1G4、F1F4经写地址译码器译码,选通相应的存储单元,在写时钟K和写使能WE的控制下将数据D0、D1分别写入G和F的存储单元。读出时,读地址信号通过数据选择器,直接选通对应地址单元的存储数据,数据便可从RAM中立即输出。图6.26 CLB构成两个161位单口RAM的原理框图 2.I/O模块模块IOB用户可编程IOB提供外部引脚和内部逻辑功能之间的接口。每个IOB控制一个封装引脚,并能被设置为输入、输出和双向工作模式。每个I/O单元具有两个触发器、输入门限检测缓冲器、三态输出缓冲器、两根时钟输入线及一组程序控制存储单元。Spartan系列的IOB简化原理框图如图6.2
46、7所示。图图6.27 Spartan系列的系列的IOB简化原理框图简化原理框图 当I/O引脚作为输入时,能被配置为直接输入或由输入寄存器输入。IOB的输入信号通过输入缓冲器,能直接由I1、I2输入到内部逻辑电路,或由触发器寄存后输入至内部逻辑电路。每个IOB的输入缓冲器带有阀值检测,可将施加到封装引脚上的外部信号转换成内部逻辑电平,IOB输入的阀值可编程为TTL电平或CMOS电平。缓冲后的输入信号驱动存储单元的数据输入。输入到寄存器前可以选择延时几个纳秒,由于延时使能,可使输入触发器的建立时间增加,足够的延时用于满足外部引脚上数据保持时间的要求。IOB数据输入通道每个都有一拍的延迟或者延迟是缺
47、省的。这个增加的延迟保证了时钟通过任何全局时钟缓冲器的一个零保持时间。当I/O引脚作为输出时,输出信号由O端进入IOB模块,经选择器选择是否反相后,可被编程为直接输出或由输出寄存器输出至一个可编程的三态输出缓冲器。三态输出缓冲器的使能控制信号T能被编程定义为高电平或低电平有效。三态输出缓冲器还具有输出转换率控制功能,即输出摆率控制。GTS是全局三态线,它强迫所有输出为高阻态,除了非边界扫描有效或工作在外界测试状态。输入寄存器和输出寄存器共用时钟使能EC,但它们有各自的时钟信号ICK和OCK,且都能被编程为上升沿或下降沿触发。可编程的上拉/下拉控制电路用于将没用到的引脚拉至VCC或GND电平,以
48、减少引脚悬空增加的附加功耗和系统噪声。3.FPGA的互连资源的互连资源FPGA内部的可编程互连资源是连接各模块的通道,它可形成多个CLB、IOB组成的功能电路。互连资源主要由各种长度的金属导线、可编程开关点和可编程开关矩阵组成。FPGA内部信号通过金属线在各个模块进行传输,并通过可编程开关点和可编程开关矩阵控制其传输方向。所有的内部布线通道都由金属线、可编程开关点及可编程开关矩阵来完成布线任务。图6.28所示是Spartan系列CLB可编程连线资源示意图。布线区里的金属线以纵横交错的栅格状结构分布在两个层面(一层为横向线段,另一层为纵向线段),金属线可分为单长线、双长线、长线和全局时钟线。图图
49、6.28 CLB可编程连线资源可编程连线资源 1)可编程开关矩阵在每一个水平和垂直布线通道的交汇处有一个控制布线方向的可编程开关矩阵,如图6.29所示。每个开关矩阵是由多个可编程的跨接的晶体管来建立线间的连接。允许毗邻行和列的金属线段之间的可编程互连。例如一个单倍长度信号从开关矩阵的右边进入,能够通过开关矩阵编程连接到上部、左部或底部的单长度线。同样,双长度线也是如此。图图6.29 可编程开关矩阵可编程开关矩阵 2)单长度线单倍长度线提供了一种最大的互连灵活性和相邻功能块之间的快速布线。在邻近的CLB中,有八条水平及八条垂直的单倍长度线与每个CLB相连,这些线把位于CLB每行每列的开关矩阵连接
50、起来。单长度线之间是通过可编程开关矩阵的方式来连接的。单倍长度线在通过每个开关矩阵时会产生延迟,因此不适合长距离信号布线,它通常用于局部区域的信号布线。3)双长度线由栅状金属段组成,比单长度线长两倍。有四条水平或垂直的双长度线与每个CLB相连。在进入下一个开关矩阵之前穿过两个CLB。双长度线是与开关矩阵交错成对分组,以使每根线在CLB的另一行或列通过开关矩阵。双长度线由开关矩阵编程连接,提供快速、灵活的中等距离布线。4)长线长线通常水平地或垂直地跨过整个阵列,或由中点的一个可编程分离开关将长线分成两条独立的布线通道。每行每列两个CLB之间有三条水平长线。长线能被一系列的三态门驱动,所以它们可以