首页 第2章_大规模可编程逻辑器件

第2章_大规模可编程逻辑器件

举报
开通vip

第2章_大规模可编程逻辑器件nullnull第2章 大规模可编程逻辑器件2.1 可编程逻辑器件概述 2.2 复杂可编程逻辑器件(CPLD) 2.3 现场可编程门阵列(FPGA) 2.4 在系统可编程(ISP)逻辑器件 2.5 FPGA和CPLD的开发应用选择 null2.1 可编程逻辑器件概述2.1.1 PLD的发展进程 最早的可编程逻辑器件出现在20世纪70年代初,主要是可编程只读存储器(PROM)和可编程逻辑阵列(PLA)。 20世纪70年代末出现了可编程阵列逻辑(PAL—Programmable ...

第2章_大规模可编程逻辑器件
nullnull第2章 大规模可编程逻辑器件2.1 可编程逻辑器件概述 2.2 复杂可编程逻辑器件(CPLD) 2.3 现场可编程门阵列(FPGA) 2.4 在系统可编程(ISP)逻辑器件 2.5 FPGA和CPLD的开发应用选择 null2.1 可编程逻辑器件概述2.1.1 PLD的发展进程 最早的可编程逻辑器件出现在20世纪70年代初,主要是可编程只读存储器(PROM)和可编程逻辑阵列(PLA)。 20世纪70年代末出现了可编程阵列逻辑(PAL—Programmable Array Logic)器件。20世纪80年代初期,美国Lattice公司推出了一种新型的PLD器件,称为通用阵列逻辑(GAL-Generic Array Logic),一般认为它是第二代PLD器件。随着技术的进步,生产工艺的不断改进,器件规模不断扩大,逻辑功能不断增强,各种可编程逻辑器件如雨后春笋般地涌现,如PROM、EPROM、E2PROM等。null 在EPROM基础上出现的高密度可编程逻辑器件称为EPLD或CPLD。现在一般把超过某一集成度的PLD器件都称为CPLD。在20世纪80年代中期,美国Xilinx公司首先推出了现场可编程门阵列(FPGA)器件。FPGA器件采用逻辑单元阵列结构和静态随机存取存储器工艺,设计灵活,集成度高,可无限次反复编程,并可现场模拟调试验证。在20世纪90年代初,Lattice公司又推出了在系统可编程大规模集成电路(ispLSI)。null表2.1 Altera系列产品主要性能null 美国Xilinx公司在1985年推出了世界上第一块现场可编程门阵列(FPGA)器件,最初3个完整的系列产品分别命名为XC2000、XC3000和XC4000,共有19个品种,后又增加了低电压(3.3 V)的“L”系列、多I/O引脚的“H”系列及更高速的“A”系列,并推出了与XC3000兼容的XC3100/A系列,在XC4000的基础上又增加了“E”和“EX”系列。在1995年,Xilinx又增加了XC5000、XC6200和XC8100 FPGA系列,并取得了突破性进展。而后又推出了Spartan和Virture系列。Xilinx还有3个EPLD系列产品:XC7200、XC7300和XC9500,如表2.2所示。null表2.2 Xilinx系列产品主要性能null Lattice公司成立于1983年,是E2CMOS技术的开拓者,发明了GAL器件,是低密度PLD的最大供应商。该公司于20世纪90年代开始进入HDPLD领域,并推出了pLSI/ispLSI器件,实现了在系统可编程技术(ISP)。ISP使用户能够在无须从系统板上拔下芯片或从系统中取出电路板的情况下,改变芯片的逻辑 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 乃至改变整个电子系统的功能。这种技术能大大缩短设计周期,简化生产流程,降低设计成本。 Lattice公司目前的pLSI/ispLSI器件主要有6个系列:pLSI/ispLSI1000、2000、3000、5000、6000和8000系列,如表2.3所示。 null表2.3 Lattice系列产品主要性能null2.1.2 PLD的种类及分类方法 目前生产PLD的厂家有Xilinx、Altera、Actel、Atemel、AMD、AT&T、Cypress、Intel、Motorola、Quicklogic、TI(Texas Instrument)等。常见的PLD产品有:PROM、EPROM、EEPROM、PLA、FPLA、PAL、GAL、CPLD、EPLD、EEPLD、HDPLD、FPGA、pLSI、ispLSI、ispGAL和ispGDS等。PLD的分类方法较多,也不统一,下面简单介绍4种。null 1.从结构的复杂程度分类 从结构的复杂程度上一般可将PLD分为简单PLD和复杂PLD(CPLD),或分为低密度PLD和高密度PLD(HDPLD)。通常,当PLD中的等效门数超过500门时,则认为它是高密度PLD。传统的PAL和GAL是典型的低密度PLD,其余如EPLD、FPGA和pLSI/ispLSI则称为HDPLD或CPLD。 null 2.从互连结构上分类 从互连结构上可将PLD分为确定型和统计型两类。 确定型PLD提供的互连结构每次用相同的互连线实现布线,所以,这类PLD的定时特性常常可以从数据手册上查阅而事先确定。这类PLD是由PROM 结构演变而来的,目前除了FPGA器件外,基本上都属于这一类结构。 统计型结构是指设计系统每次执行相同的功能,却能给出不同的布线模式,一般无法确切地预知线路的延时。所以,设计系统必须允许设计者提出约束条件,如关键路径的延时和关联信号的延时差等。这类器件的典型代表是FPGA系列。null 3.从可编程特性上分类 从可编程特性上可将PLD分为一次可编程和重复可编程两类。一次可编程的典型产品是PROM、PAL和熔丝型FPGA,其他大多是重复可编程的。其中,用紫外线擦除的产品的编程次数一般在几十次的量级,采用电擦除方式的产品的编程的次数稍多些,采用E2CMOS工艺的产品,擦写次数可达上千次,而采用SRAM(静态随机存取存储器)结构,则被认为可实现无限次的编程。null 4.从可编程器件的编程元件上分类 最早的PLD器件(如PAL)大多是TTL工艺,但后来的PLD器件(如GAL、EPLD、FPGA及pLSI/ISP器件)都采用MOS工艺(如NMOS、CMOS、E2CMOS等)。目前,一般有下列5种编程元件:① 熔丝型开关(一次可编程,要求大电流);② 可编程低阻电路元件(多次可编程,要求中电压);③ EPROM的编程元件(需要有石英窗口,紫外线擦除);④ EEPROM的编程元件;⑤ 基于SRAM的编程元件。null2.2 复杂可编程逻辑器件(CPLD)2.2.1 CPLD的基本结构 早期的CPLD主要用来替代PAL器件,所以其结构与PAL、GAL基本相同,采用了可编程的与阵列和固定的或阵列结构。再加上一个全局共享的可编程与阵列,把多个宏单元连接起来,并增加了I/O控制模块的数量和功能。可以把CPLD的基本结构看成由逻辑阵列宏单元和I/O控制模块两部分组成。null 1.逻辑阵列宏单元 在较早的CPLD中,由结构相同的逻辑阵列组成宏单元模块。一个逻辑阵列单元的基本结构如图2.1所示。输入项由专用输入端和I/O端组成,而来自I/O端口的输入项,可通过I/O结构控制模块的反馈选择,可以是I/O端信号的直接输入,也可以是本单元输出的内部反馈。所有输入项都经过缓冲器驱动,并输出其输入的原码及补码。图2.1中所有竖线为逻辑单元阵列的输入线,每个单元各有9条横向线,称为积项线(或称为乘积项)。在每条输入线和积项线的交叉处设有一个EPROM单元进行编程,以实现输入项与乘积项的连接关系,这样使得逻辑阵列中的与阵列是可编程的。其中,8条积项线用作或门的输入,构成一个具有8个积项和的组合逻辑输出;另一条积项线 (OE线) 连到本单元的三态输出缓冲器的控制端,以I/O端作输出、输入或双向输出等工作方式。null图2.1 逻辑阵列单元结构图null 可以看出,早期CPLD中的逻辑阵列结构与PAL、GAL中的结构极为类似,只是用EPROM单元取代了PAL中的熔丝和GAL中的E2PROM单元。和GAL器件一样,可实现擦除和再编程功能。 在基本结构中,每个或门有固定乘积项(8个),也就是说,逻辑阵列单元中的或阵列是固定的、不可编程的,因而这种结构的灵活性差。据统计,实际工作中常用到的组合逻辑,约有70% 是只含3个乘积项及3个以下的积项和。另一方面,对遇到复杂的组合逻辑所需的乘积项可能超过8个,这又要用两个或多个逻辑单元来实现。器件的资源利用率不高。为此,目前的CPLD在逻辑阵列单元结构方面作了很大改进,下面讨论几种改进的结构形式。null 1) 乘积项数目不同的逻辑阵列单元 图2.2所示是一个具有12个专用输入端和10个I/O端的CPLD,共有10个逻辑阵列单元,分成5个逻辑单元对,各对分别由不同数量的乘积项组成。由图2.2可见,中间的逻辑单元对可实现16个积项和的组合逻辑输出,最外侧的逻辑单元对由8个乘积项组成,其余3对分别由10、12、14个乘积项组成,从而可实现更为复杂的逻辑功能。各逻辑单元中另有一条积项线作输出三态缓冲器的控制。具有这种结构的代表产品为Atmel公司的AT220V10A器件。null图2.2 积项线数不同的逻辑阵列单元null 2) 具有两个或项输出的逻辑阵列单元 图2.3是具有两个固定积项和输出的CPLD的结构图。由图可见,每个单元中含有两个或项输出,而每个或项均有固定的4个乘积项输入。为提高内部各或项的利用率,每个或项的输出均先送到一个由EPROM单元可编程控制的1分2选择电路,即阵列单元中上面的或项输出由选择电路控制,既可输送到本单元中第2级或门的输入端,也可馈送到相邻的下一个阵列单元第2级或门的输入端;null 同样,阵列单元中下面的或项输出由选择电路控制,可直接送到本单元第2级或门的输入端,也可馈送到相邻的前一个阵列单元中的第2级或门输入端,使本单元不用的或项放到另一单元中发挥其作用。因而每个逻辑阵列单元又可共享相邻单元中的乘积项,使每个阵列可具有4、8、12和16四种组合的积项和输出,甚至本单元中的两个或项都可用于相邻的两个单元中。这样,既提高了器件内部各单元的利用率,又可实现更为复杂的逻辑功能。以这种逻辑单元结构实现的EPLD有Actel公司的EP512器件等。null图2.3 具有两个固定积项和输出的结构图null 在Atmel公司的ATV750等器件结构调整中,每个逻辑单元中也含有两个或项,但不同单元中构成或项的积项数却不同,它是分别由4、5、6、7和8个乘积项输入到两个或门所组成的5对阵列单元构成的组合阵列。每个单元中的两个或项输出通过输出逻辑模块中的选择电路控制,可实现各自独立的输出,也可将两个或项再“线或”起来实现功能更为复杂的组合逻辑输出,但各个阵列单元中的或项不能为相邻的阵列单元所共享。null 3) 功能更多、结构更复杂的逻辑阵列单元 随着集成规模和工艺水平的提高,出现了大批结构复杂、功能更多的逻辑阵列单元形式。如Altera公司的EP1810器件采用了全局总线和局部总线相结合的可编程逻辑宏单元结构:采用多阵列矩阵(MAX—Multiple Array Matrix)结构的大规模CPLD器件,如Altera公司的EPM系列和Atmel公司的ATV5000系列器件;采用通用互连矩阵(UIM—Universal Interconnect Matrix)及双重逻辑功能块结构的逻辑阵列单元,如Xilinx公司的XC7000和XC9500系列产品。null 2. I/O控制模块 CPLD中的I/O控制模块,根据器件的类型和功能不同,可有各种不同的结构形式,但基本上每个模块都由输出极性转换电路、触发器和输出三态缓冲器三部分及与它们相关的选择电路所组成。下面介绍在CPLD中广泛采用的几种I/O控制模块。 1) 与PAL器件相兼容的I/O模块 如图2.4所示,可编程逻辑阵列中每个逻辑阵列逻辑单元的输出都通过一个独立的I/O控制模块接到I/O端,通过I/O控制模块的选择实现不同的输出方式。根据编程选择,各模块可实现组合逻辑输出和寄存器输出方式。null图2.4 与PAL兼容的CPLD的I/O控制模块结构null 2) 与GAL器件相兼容的I/O模块——输出宏单元 如图2.5所示,从逻辑阵列单元输出的积项和首先送到输出宏单元(OMC—Output Macro Cell)的输出极性选择电路,由EPROM单元构成的可编程控制位来选择该输出极性(原码或它的补码)。每个OMC中还有由EPROM单元构成的两个结构控制位,根据构形单元表,OMC可实现如图2.6所示的4种不同的工作方式。null图2.5 OMC结构图null图2.6 OMC的4种不同的工作方式null 3) 触发器可编程的I/O模块 为了进一步改善I/O控制模块的功能,对I/O模块中的触发器电路进行改进并由EPROM单元进行编程,可实现不同类型的触发器结构,即D、T、JK、RS等类型的触发器,如图2.7所示。这种改进的I/O控制模块,可组合成高达50种的电路结构。null图2.7 触发器可编程的I/O控制模块结构null 4) 具有两路积项和输入与两个触发器结构的I/O控制模块 如图2.8所示,模块中两个触发器可独立地反馈回逻辑阵列。由于这种结构的灵活性,可使触发器成为“内藏(Burried)”工作方式,而且,它具有更多的触发器,很容易实现更为复杂的状态机功能。 null图2.8 具有两路积项和输入与两个触发器的I/O控制模块结构null 5) 具有三路积项和输入与两个触发器的I/O控制模块 如图2.9所示,每个I/O模块可接受三路积项和输入,每路各有4个乘积项。利用EPROM控制单元的编程,可实现下列功能: (1) 一路积项和的输出直接馈送到I/O端,而另两路积项和的输出则分别馈送到两个触发器的输入端D1和D2,它们的输出均可为“内藏”工作方式,通过编程控制可反馈到逻辑阵列总线中去。null图2.9 具有三路积项和输入与两个触发器的I/O控制模块结构null (2) 在实现组合逻辑输出或寄存器方式输出之前,三路和项还可以通过编程组合在一起,以实现高达12个积项和的组合逻辑输出或寄存器输出。 (3) 在组合逻辑输出方式中,通过编程控制可实现4、8或12个积项和的组合逻辑输出,而模块中的中、下两路和项仍可分别馈送到两个触发器的D1和D2端,它们的输出Q1和Q2为“内藏”工作方式,可通过编程反馈到逻辑阵列总线中去。 (4) 在寄存器输出方式中,上、中两路组合成8个积项和自动馈送到触发器D1输入端,而下路的和项除馈送到触发器D2输入端为“内藏”工作方式外,还可与D1共享。null (5) 两个触发器均可有各自的异步复位和时钟信号:AR1、CLK1和AR2、CLK2,它们由编程逻辑阵列中的4条积项线提供。 (6) 输出三态缓冲器的控制信号由来自编程逻辑阵列的一条积项线提供。 (7) 当I/O端作输入端使用,或I/O模块的输出反馈到逻辑阵列总线中去时,均通过同一个反馈缓冲器输出它们的同相和反相两路信号,馈送到逻辑阵列总线中去,而两个触发器的输出Q1和Q2则通过各自的反馈缓冲器,将它们的信号(同相及反相信号)馈送到逻辑阵列总线中去。null2.2.2 Altera 公司的器件产品 Altera公司的产品在我国有较多的用户,如EP220、EP224、EP6010、EP1810等经典产品应用颇广。后来推出的EPM系列和EPF系列的集成度更是大大提高,品种多样,性能优越。 Altera公司提供了7种通用PLD系列产品:FLEX10K、FLEX8000、MAX9000、MAX7000、FLASHlogic、MAX5000和Classic。FLEX(Flexible Logic Element MatriX)结构使用查找表(LUT—Look Up Table)来实现逻辑功能,而多阵列矩阵(MAX—Mutiple Array MatriX)、FLASHlogic和经典系列,采用可编程“与”/固定“或”乘积项结构。所有Altera器件系列都使用CMOS处理工艺,它比双极性工艺具有更低的功耗和更高的可靠性。null 1.FLEX10K系列器件 FLEX10K系列器件是高密度阵列嵌入式可编程逻辑器件系列。这类器件最大可达10万个典型门,5392个寄存器;采用0.5 μm CMOS SRAM工艺制造;具有在系统可配置特性;在所有I/O端口中有输入/输出寄存器;3.3 V或5.0 V工作模式;由Altera公司的MAX+plusⅡ开发系统提供软件支持,可在PC机或工作站上运行。 为了增加逻辑系统要求的集成度,可编程逻辑不仅要增加密度,而且要有效地实现大量的逻辑电路。FLEX10K系列以工业上最大的PLD为特征(达到10万门),包括嵌入式阵列、多组低时延时钟和内部三态总线等结构特性,提供了复杂逻辑设计所需的性能和利用主系统级集成的要求。FLEX10K器件可理想地用于复杂门阵列的各种场合,其特性如表2.4所示。 null表2.4 FLEX10K (EPF10K10~10K100)器件特性null FLEX10K器件的结构类似于嵌入式门阵列。由于有标准的门阵列,嵌入式门阵列在通用的门海结构中实现一般逻辑。除此之外,嵌入式门阵列有专门的芯片面积以实现大的专用功能。嵌入式门阵列在减少芯片面积的同时具有比标准门阵列更快的速度,这是通过嵌入在硅里的函数完成的。然而嵌入的宏函数不能被用户化,限制了设计者的选项。相比之下,FLEX10K器件是可编程的,在调试时,给设计者提供了实现重复设计改变过程中对嵌入宏函数和一般逻辑的完全控制。null 每个FLEX10K器件包含一个实现存储和专用逻辑功能的嵌入阵列和一个实现一般逻辑的逻辑阵列。嵌入阵列和逻辑阵列的结合提供了嵌入式门阵列的高性能和高密度,可以使设计者在某个器件上实现一个完整的系统。 嵌入阵列由一系列嵌入阵列块(EAB)构成。实现存储功能时,每个EAB提供2048比特,可以用来完成RAM、ROM、双口RAM或者FIFO功能。实现逻辑功能时,每个EAB可以提供100~600门以实现复杂的逻辑功能,如实现乘法器、微控制器、状态机和DSP(数字信号处理)功能。EAB可以单独使用或多个EAB联合使用以实现更强的功能。null 逻辑阵列由逻辑块LAB构成。每个LAB包含8个逻辑单元和一个局部连接。一个逻辑单元有一个4输入查找表、一个可编程触发器和一个实现进位和级联功能的专用信号路径。LAB中的8个逻辑单元可用来产生中规模逻辑块,比如8比特计数器、地址译码器或状态机,或者通过逻辑阵列块结合产生更大的逻辑块。每个逻辑阵列块代表大约96个可用逻辑门。null FLEX10K内部的信号连接以及与器件管脚的信号连接由快速互连通道完成。快速互连通道是快速的且连续的运行于整个器件行和列的通道。 每个I/O管脚由位于快速通道互连的每个行、列两端的I/O单元(IOE)输入。每个IOE包含一个双向I/O缓冲器和一个触发器。这个触发器可用作数据输入、输出或双向信号的输出或输入寄存器。和专用时钟引脚连用时,这些寄存器提供附加的性能。输入时,提供4.2 ns的建立时间和0 ns的保持时间;输出时,这些寄存器提供6.7 ns的保持时间。IOE提供各种功能,比如JTAG BST支持、电压摆率控制、三态缓冲器及开漏输出等。null FLEX10K器件在上电时通过保存在Altera串行配置EPROM中的数据或系统控制器提供的数据进行配置。Altera提供EPC1和ECP1441配置EPROM,它们通过串行数据流对FLEX10K器件进行配置。配置数据也可以从系统RAM或Altera的BitBlaster串行下载电缆以及ByteBlaster并行端口下载电缆获得。FLEX10K器件经过配置后,可以装入新的配置数据实现在线重新配置。由于重新配置的时间小于320 ms,在系统运行时可以完成重新配置的实时操作。null FLEX10K器件包含一个优化接口,允许微处理器对FLEX10K器件进行串行或并行、同步或异步配置。该优化接口使微处理器把FLEX10K器件当作存储器来处理,并且通过写入虚拟存储地址进行配置,这样设计者就很容易重新配置器件。 图2.10给出了FLEX10K的结构框图。每组LE连接到LAB,LAB被分成行和列,每行包含一个EAB。LAB和EAB由快速通道互相连接。IOE位于行通道和列通道的两端。null图2.10 FLEX10K的结构框图null FLEX10K器件提供6个专用输入引脚,驱动触发器的控制输入,以保证高速、低摆率控制信号的有效分配。这些信号使用专用布线通道。这些专用布线通道比快速通道延时小、摆率低。4个全局信号可由4个专用输入引脚驱动,也可由内部逻辑驱动,后者可以提供分频信号或内部异步清零信号。null 1) 嵌入阵列块(EAB) 嵌入阵列块是一种在输入、输出端口上带有寄存器的灵活RAM电路,用来实现一般门阵列的宏功能,适合实现乘法器、矢量标量、纠错电路等功能。因为它很大也很灵活,还可应用于数字滤波和微控制器等领域。 逻辑功能通过配置过程中对EAB的编程来实现,并产生一个LUT(查找表)。有了LUT,组合功能就可以根据查找表结果来实现,而不是通过计算,比用一般逻辑实现的算法快。这一特点使EAB的快速存取时间得到进一步增强。EAB的大容量允许设计者在一个逻辑级上实现复杂的功能,减少了增加逻辑单元或FPGA的RAM块连接带来的路径延时。例如,一个EAB可以通过8个输入引脚和8个输出引脚来实现4×4乘法器。参数化的函数,比如LPM函数,可自然而然地利用EAB实现。null EAB比后面将要讲到的FPGA更有优势。FPGA是通过小的、分布式的小RAM块阵列实现片上RAM。当RAM的尺寸增大时,这些FPGA RAM块包含不可预测的延时。除此之外,FPGA RAM存在布线问题,因为小的RAM块要被连接在一起组成大的部件。相比之下,EAB可用来实现大的专用RAM部件,免去了不可预测的延时和布线问题。 EAB可用来实现同步RAM,它比异步RAM更容易使用。使用异步RAM的电路必须产生RAM的写使能(WE)信号,并确保数据和地址信号符合与写使能信号相关的建立和保持时间要求。与此相反,EAB的同步RAM产生自己的独立写使能信号,并且根据全局时钟的关系进行自定时。使用EAB自定时的RAM只需要符合全局时钟建立和保持时间要求。null 每个EAB被用作RAM时可以按下列规格进行配置:256×8,512×4,1024×2或2048×1。较大的RAM块可以由多个EAB连接产生。例如,两个256×8连接可组成256×16的RAM;两个512×4的RAM块连接可组成512×8的RAM。如果必要,一个器件里的所有EAB可级联形成一个RAM块。EAB可级联成2048×8的RAM块而不影响定时。Altera的MAX+plusⅡ软件自动连接EAB以满足设计者的RAM规格要求。null EAB为驱动和控制时钟信号提供灵活的选择,如图2.11所示。EAB的输入和输出可以用不同的时钟。寄存器可以独立地运用在数据输入、EAB输出或地址写使能信号上。全局信号和EAB的局部互连都可以驱动写使能信号。全局信号、专用时钟引脚和EAB的局部互连能够驱动EAB时钟信号。由于逻辑单元可驱动EAB局部互连,所以可以用来控制写信号或EAB时钟信号。 每个EAB由行互连馈入信号,其输出可以驱动行和列互连。每个EAB输出最多驱动两个行通道和两个列通道。没有用到的行通道可以由其他逻辑单元驱动。这一特性为EAB输出增加了可用的布线资源。null图2.11 FLEX10K的EABnull 2) 逻辑阵列块(LAB) FLEX10K的逻辑阵列块包括8个逻辑单元、相关的进位链和级联链、LAB控制信号以及LAB局部互连线,如图2.12所示。LAB构成了FLEX10K结构的“粗粒度”构造,可以有效的布线,并使器件的利用率和性能提高。null 每个LAB提供4个可供所有8个LE使用的可编程反相控制信号,其中2个可用作时钟信号,另外2个用作清除/置位控制。LAB的时钟可由专用时钟输入引脚、全局信号、I/O引脚或借助LAB局部互连的任何内部信号直接驱动。LAB的置位/清除控制信号由全局信号、I/O信号或借助LAB局部互连的内部信号驱动。全局控制信号一般用作公共时钟、清除或置位信号,因为它们通过该器件时引起的偏移很小,所以可以提供同步控制。如果控制信号需要某种逻辑,则可用任何LAB中的一个或多个LE形成,并经驱动后送到目的LAB的局部互连线上。另外,全局控制信号可由LE输出产生。 null 3) 逻辑单元(LE) LE是FLEX10K结构里的最小逻辑单位,它很紧凑,能有效地实现逻辑功能。每个LE含有一个4输入的LUT、一个可编程的具有同步使能的触发器、进位链和级联链,如图2.13所示。LUT是一种函数发生器,它能快速计算4个变量的任意函数。每个LE可驱动局部的以及快速通道的互连。 LE中的可编程触发器可设置成D、T、JK或RS触发器。触发器的时钟、清除和置位控制信号可由专用的输入引脚、通用I/O引脚或任何内部逻辑驱动。对于纯组合逻辑,可将触发器旁路,LUT的输出直接驱动LE的输出。null图2.12 FLEX10K的LABnull图2.13 FLEX10K的LEnull LE有两个驱动互连通道的输出引脚:一个驱动局部互连通道,另外一个驱动行或列快速互连通道。这两个输出可被独立控制。例如,LUT可以驱动一个输出,寄存器驱动另一输出。这一特征被称为寄存器填充,因为寄存器和LUT可被用于不同的逻辑功能,所以能提高LE的利用率。null FLEX10K的结构提供两条专用高速通路,即进位链和级联链,它们连接相邻的LE但不占用通用互连通路。进位链支持高速计数器和加法器,级联链可在最小延时的情况下实现多输入逻辑函数。级联链和进位链可以连接同一LAB中的所有LE和同一行中的所有LAB 。因为大量使用进位链和级联链会限制其他逻辑的布局与布线,所以建议只在对速度有较高要求的情况时使用。null 进位链提供LE之间非常快(0.2 ns)的进位功能。来自低位的进位信号经进位链送到高位,同时送到LUT和进位链的下一级。这一特点使FLEX10K能够实现高速计数器和任意位数的加法器和比较器。 利用级联链,FLEX10K可以实现扇入很多的逻辑函数。相邻的LUT用来并行地计算函数的各个部分,级联链把中间结果串联起来。级联链可以使用逻辑“与”或者逻辑“或”(借助狄摩根的反演定律)来连接相邻LE的输出。每增加一个LE,函数的有效输入个数增加4个,其延时大约增加0.7 ns。MAX+plusⅡ编译器在设计处理期间会自动建立级联链,设计者在设计输入过程中也可以手工插入级联链。null 4) 快速通道互连 在FLEX10K的结构中,快速通道互连提供LE和I/O引脚的连接,它是一系列贯穿整个器件的水平或垂直布线通道。这个全局布线结构即使在复杂的设计中也可预知性能。而在FPGA中的分段布线却需要开关矩阵连接一系列变化的布线路径,这就增加了逻辑资源之间的延时并降低了性能。 快速互连通道由跨越整个器件的行、列互连通道构成。LAB的每一行由一个专用行连线带传递。行互连能够驱动I/O引脚,馈给器件中的其他LAB。列连线带连接行与行之间的信号,并驱动I/O引脚。null 一个行通道可由一个LE或三个列通道之一来驱动。这4个信号馈入到连接两个专用行通道的双口4选1多路选择器。这些多路选择器连接到每个LE,即使LAB里的8个LE全都驱动行连接带,仍然允许列通道驱动行通道。 LAB的每列由专用列连接带服务。行连接带可驱动I/O引脚或其他行的互连,向器件中其他的LAB传递信号。一个来自列互连的信号可以是LE的输出信号或者I/O引脚的输入,它必须在进入EAB或LAB之前传递给行连接带。每个由IOE或EAB驱动的行通道可以驱动一个专用列通道。null 行、列通道的进入可以由相邻的LAB对其中的LE来转换。例如,一个LAB中,一个LE可以驱动由行中的相邻的LAB的某个特别的LE正常驱动的行、列通道。这种灵活的布线使得布线资源得到更有效的利用,如图2.14所示。 为了提高布通率,行互连有全长通道和半长通道。全长通道连接一行中的所有LAB,半长通道连接半行中的LAB。EAB可由左半行中的半长通道驱动,也可由全长通道驱动。EAB驱动全长通道的输出。除了提供可预知的行范围互连,这种结构还增加了布线资源。两个相邻的LAB可通过行通道来连接,因此为另一个半行保留了另一半的通道。null图2.14 LAB到行或列互连null 除了通用功能的I/O引脚外,FLEX10K器件有6个专用输入引脚,提供器件中的低摆率信号。这6个输入可用于全局时钟信号、清除信号、置位信号和周边输出使能信号以及时钟使能控制信号。这些信号与器件中所有LAB和IOE的控制信号一样可被利用。 专用输入信号可被用于通用数据输入,因为它们可以输入到器件的每个LAB的局部互连。然而,把专用输入信号作为输入则为控制信号网络引入了额外的延时。 图2.15表示了FLEX10K的互连资源。其中每个LAB根据其位置标号表示其所在位置,位置标号由表示行的字母和表示列的数字组成。例如,LAB B3位于B行3列。 null图2.15 FLEX10K的互连资源null 5) I/O单元(IOE) 一个I/O单元(IOE)包含一个双向的I/O缓冲器和一个寄存器。寄存器可作输入寄存器使用,这是一种需要快速建立时间的外部数据的输入寄存器。IOE的寄存器也可当作需要快速“时钟到输出”性能的数据输出寄存器使用。在有些场合,用LE寄存器作为输入寄存器会比用IOE寄存器产生更快的建立时间。IOE可用作输入、输出或双向引脚。MAX+plusⅡ编译器利用可编程的反相选项,在需要时可以自动将来自行、列连线带的信号反相。图2.16表示了FLEX10K的I/O单元(IOE)。null图2.16 FLEX10K的I/O单元(IOE)null I/O控制信号网络,也称外围控制总线,从每个IOE中选择时钟、清除、输出使能控制信号。外围控制总线利用高速驱动器使器件中电压摆率达到最小。它可以提供多达12个外围控制信号,划分如下:8个输出使能信号;6个时钟使能信号;2个时钟信号;2个清除信号。 如果需要大于6个的时钟信号或大于8个的输出使能信号,每个IOE可由专用LE驱动的时钟使能和输出使能信号控制。除了外围控制总线上的两个时钟信号外,每个IOE可使用两个专用时钟引脚之一。每个外围信号可由任意专用输入引脚或特定行中每个LAB的第一个LE驱动。另外,不同的行里的LE可驱动一个列连线带,可产生一个行连线带以驱动周边控制信号。芯片级的置位信号可以置位所有IOE寄存器,且优先于其他控制信号。null 控制总线的信号也可以驱动4个全局信号,内部生成的信号可以驱动全局信号,提供与输入信号驱动相同的低摆率、低延时特性。这个特性对内部生成清除信号或多扇入的时钟信号是理想的。芯片级输出使能引脚低电平有效,可用于器件的所有三态引脚。这个选项可由设计文件设定。另外,IOE的寄存器也可被置位为引脚置位。 ● 行到IOE的连接。当IOE用作输入信号时,它可以驱动两个独立的行通道。该行中的所有LE都可访问这个信号。IOE作为输出信号时,其输出信号由一个从行通道实现信号选择的多路选择器驱动。连接每一行通道的每个边IOE可达8个,如图2.17所示。null图2.17 FLEX10K行到IOE的连接null ● 列到IOE的连接。当IOE作为输入时,可驱动两个独立的列通道。IOE作为输出时,其输出信号由一个对列通道进行选择的多路选择器驱动。两个IOE连接列通道的每个边。每个IOE可由通过多路选择器的列通道驱动,每个IOE可访问的列通道的设置是不同的,如图2.18所示。 FLEX10K器件为每个I/O引脚提供一个可选的开漏输出(等效于集电极开路)。开漏输出使得器件能够提供系统级的控制信号(例如,中断和写信号)。null图2.18 FLEX10K列到IOE的连接null 2.FLEX8000系列器件 FLEX8000系列器件是高密度阵列嵌入式可编程逻辑器件系列,采用0.5 μm CMOS SRAM工艺制造;具有在系统可配置特性;在所有I/O端口中有输入/输出寄存器;3.3 V或5.0 V工作模式;由Altera公司的MAX+plusⅡ开发系统提供软件支持,可在PC机或工作站上运行。null FLEX8000系列的结构包含一个大规模的紧凑型逻辑单元积木块矩阵。每个逻辑单元(LE—Logic Element)含有一个4输入查找表(LUT—Look Up Table)和一个可编程寄存器。前者提供实现组合逻辑功能,后者具有时序逻辑能力。LE的这种细区组结构可高效地实现逻辑功能。8个LE组合成一个逻辑阵列块(LAB—Logic Array Block)。每个LAB是一种独立结构,带有公用输入、互连和控制信号。LAB的这种大区组结构为器件提供高性能和易布线等特征。FLEX8000器件特性如表2.5所示。null表2.5 FLEX8000器件特性null FLEX8000系列器件的结构如图2.19所示。LAB按行、列排序,构成逻辑阵列。每个LAB由8个LE组成,为行、列两端的输入/输出单元(IOE—I/O Elements)提供I/O端口。每个IOE包含一个双向I/O缓冲器和一个可用作输入/输出寄存的触发器。在FLEX8000器件内以及送到和来自器件引脚的信号互连,由快速通道互连(Fast Track Interconnect)来实现。快速通道互连是一系列连续的通路,它们贯穿整个器件的长和宽。IOE位于每行(水平)和每列(垂直)快速通道互连路径的两端。下面对FLEX8000器件的逻辑单元、逻辑阵列块、快速通道互连和输入/输出单元作进一步的说明。null图2.19 FLEX8000系列器件的结构null 1) 逻辑单元(LE) 逻辑单元是FLEX8000器件结构中最小的逻辑单位,它们有紧凑的排列并提供高效的逻辑利用。每个LE含有一个4输入查找表(LUT)、一个可编程触发器、一个进位链路和一个级联链路,如图2.20所示。null图2.20 FLEX8000的LEnull LUT是一个函数发生器,它能快速计算4变量的任意函数。LE内的可编程触发器可配置为D、T、JK或SR工作模式。触发器上的时钟、清零和预置控制信号,可由专用输入引脚、通用I/O端口或任何内部逻辑来驱动。对于纯组合逻辑功能,触发器被旁路,LUT的输出直接送到LE输出。 FLEX8000器件结构提供两个专用高速数据通路:进位链路和级联链路。它们连接相邻的LE,而不占用局部互连资源。进位链路支持高速计数器和加法器,级联链路实现最小时延的宽输入函数。进位和级联链路连接一个LAB中的所有LE以及在同一行中的LAB。进位和级联链路的大量使用会减少实现其他逻辑的有效布线资源,因此,应把它们限制在设计的速度关键部分。null 2) 逻辑阵列块(LAB) 每个逻辑阵列块(LAB)含有8个LE及相应的进位和级联链路、LAB控制信号和LAB局部互连。LAB为大区组结构,这种结构的FLEX8000器件能提供器件有效布线、高资源利用率和高性能,如图2.21所示。null 每个LAB提供4个控制信号,作用于8个LE,其中2个信号用作时钟,另外2个作为清零/预置控制。LAB控制信号由下列信号直接驱动:专用输入引脚、I/O端口或通过该LAB局部互连的任何内部信号。专用输入典型地作为全局时钟、清零和预置信号,因为它们可提供低时延同步控制,且作用于整个器件。FLEX8000器件支持多达4个独立的全局时钟、清零或预置控制信号。如果某个控制信号需要逻辑组合,那么它可由任一LAB内的一个或多个LE产生,并能送到目标LAB的局部互连上。4个控制信号都可编程为反相信号。 null图2.21 FLEX8000器件的LABnull 3) 快速通道互连 在FLEX8000器件结构中,LE和器件I/O引脚的连接,由快速通道互连实现。快速通道互连是一系列连续的水平和垂直布线通路,贯穿整个器件。这种结构提供了可预测的性能。相反,在FPGA器件中的分段布线,需要转接矩阵来连接多段布线通路,这样将增加逻辑资源间的延时,因而降低了器件性能。 每行LAB有一组专用行互连,对LAB的出、入信号进行布线。另外,每个互连可驱动I/O端口或馈送到器件的其他LAB。图2.22表示一个LE驱动行和列互连的情况。null图2.22 一个LE驱动行和列互连null 4) 输入/输出单元(IOE) 图2.23表示输入/输出单元(IOE)的框图。I/O端口可作为输入、输出或双向端口。每个I/O端口有一个寄存器,它可用作外部数据的输入寄存器,也可用作输出寄存器。MAX+plus Ⅱ编译软件能根据需要自动地反相行、列互连的信号。每个IOE有一个输出缓冲器,它具有可调整的输出转移速率,可配置为低噪声或高速度性能。专用行互连之间的最大相差为4 ns延时,这可由用户根据实际需要选择。null图2.23 IOE结构图null FLEX8000系列特别适合于需要大量寄存器和I/O引脚的应用。该系列器件的密度为2500~50 000个可用门,带有282~4752个寄存器和78~360个用户I/O引脚。这些特性以及高性能可预测互连结构,使FLEX8000器件能像基于乘积项的器件一样方便地利用。另外,基于SRAM的FLEX8000器件提供低的静态功耗,具有在电路可编程性,这使它们特别适用于PC机插卡、电池供电的设备和多用途电信卡。 null 3.MAX9000系列 MAX9000系列器件的特性可参见FLEX10K系列及表2.6的说明,器件结构可参见FLEX8000系列及图2.24~图2.27。 基于EEPROM的MAX9000系列将MAX7000结构的有效宏单元与FLEX8000结构的高性能、可预测快速通道互连相结合,使该系列器件特别适合于集成多个系统及功能。MAX9000系列具有6000~12 000个可用门,320~560个宏单元,最多达到216个用户I/O引脚。这一密度等级,以及JTAG边界扫描测试支持和在系统可编程性,使MAX9000器件成为利用PLD好处的门阵列设计以及利用ISP灵活性设计的最佳选择。null表2.6 MAX9000器件特性null图2.24 MAX9000器件结构图null图2.25 MAX9000器件的逻辑阵列单元null图2.26 MAX9000器件的宏单元和局部阵列null图2.27 MAX9000器件的输入/输出单元null2.3 现场可编程门阵列 (FPGA) FPGA是现场可编程门阵列(Field Programmable Gate Array)的简称。FPGA器件及其开发系统是开发大规模数字集成电路的新技术。它利用计算机辅助设计,绘制出实现用户逻辑的原理图、编辑布尔方程或用硬件描述语言等方式作为设计输入;然后经一系列转换程序、自动布局布线、模拟仿真的过程;最后生成配置FPGA器件的数据文件,对FPGA器件初始化。这样就实现了满足用户要求的专用集成电路,真正达到了用户自行设计、自行研制和自行生产集成电路的目的。null 概括地说,FPGA器件具有下列优点:高密度、高速率、系列化、标准化、小型化、多功能、低功耗、低成本,设计灵活方便,可无限次反复编程,并可现场模拟调试验证。使用FPGA器件,一般可在几天到几周内完成一个电子系统的设计和制作,缩短研制周期,达到快速上市和进一步降低成本的要求。据统计,1993年FPGA的产量已占整个可编程逻辑器件产量的30%,并在逐年提高。FPGA在我国也得到了较广泛的应用。 目前提供FPGA器件的主要厂家有Xilinx、AT&T、Actel和Signetics等,它们采用的结构体系、处理工艺和编程方法都有所不同。本节以Xilinx公司的产品为例,介绍PFGA器件的结构特点、配置模式以及性能特点。null2.3.1 FPGA器件的结构 目前,Xilinx公司的FPGA芯片分为XC2000、XC3000/XC3100、XC4000、XC5000、XC6200、XC8100、Spartan、Virture等系列。前3个系列是三代渐进而兼容的FPGA产品,它们包含多种规格,如密度大小、速度高低、温度范围、封装形式等,形成了系列产品。而接下来的3个系列是1995年推出的产品。其中,XC5000系列的结构是对0.6 μm三层金属丝(TLM)处理工艺优化的第一个FPGA系列,其结果是在硅片的利用效率上有惊人的突破,使XC5000系列能承受大于5 000门的各种设计,提供了高密度、低成本的最佳方案。null XC6200系列主要是针对计算机中可反复配置的协处理器而设计的。XC8100系列是一次可编程的(OTP),它利用MicroVia处理工艺(一种CMOS、金属到金属的反熔丝和3层金属的组合,编程是由Xilinx或第三方的编程器来完成,类似于一次编程的PLD器件),提供了低成本和高保密性能的最佳结合,可用于空间通信、工业控制等高保密和高速初始化应用的场合及批量或定型产品中。最后两个系列是1998年新推出的大容量、高密度产品,最大门数已达100万门量级。每种FPGA器件都有专用LSIC的功能特征,都是用户可编程和反复可编程的(XC8100系列除外)。null FPGA器件的内部结构为逻辑单元阵列(LCA)。LCA由3类可编程单元组成:周边的输入/输出模块(IOB)、核心阵列是可配置逻辑块(CLB)以及各模块间的互连资源。XC3000系列的LCA结构如图2.28所示。 周边可配置的IOB为内部逻辑与器件封装引脚之间提供可编程接口;CLB阵列实现用户指定的逻辑功能;互连资源类似于印制电路板上的引线,可编程为在模块间传递信号的网络。 FPGA器件从1985年出现以来得到迅速发展,其密度、速度、功能、结构等都有了很大改进,但其基本结构大体相同。下面重点介绍XC3000系列器件的LCA结构,然后简要描述其他系列器件的一些特点。null图2.28 XC3000系列的LCA结构null 1.XC3000/XC3100系列的LCA结构 这类LCA结构包含5个完全兼容的FPGA产品系列:XC3000、XC3000A、XC3000L、XC3100、XC3100A。它们提供一组高性能、高密度数字集成电路,排列规则,组合灵活,可扩展和用户可编程的阵列结构包含一组配置程序存储器和3类可配置单元:周边的I/O模块、CLB核心阵列和互连资源,如图2.28所示。我们可利用已编程的查找表来实现模块逻辑;程序控制的多路复用器实现其功能选择;程序控制的开关晶体管(Pass Transistors)连接金属段片,实现模块间的互连网络。null 1) 可配置逻辑块(CLB—Configurable Logic Block) XC3000和XC3100的CLB结构是相同的,如图2.29所示。每个CLB由一个组合逻辑功能发生器、两个D触发器和内部控制部分组成。它包含5个逻辑输入端(A、B、C、D、E)、一个公共时钟输入(K)、一个异步直接复位输入(RD)、一个时钟使能(EC)及一个直接数据输入端(DI)。每个CLB有两个输出端(X和Y),它们可驱动互连网络。null CLB的组合逻辑部分使用32×1(或16×2)查找表(Look up Table)存储器来实现布尔函数。从5个逻辑输入和两个内部触发器输入中选择的变量作为查找表的输入。该组合逻辑单元的延时是固定的,与实现的逻辑函数的复杂程度无关,也就是说,该组合函数发生器对逻辑的复杂程度没有限制,只与输入变量的数目有关。每个组合逻辑单元可实现一个5个变量的任意逻辑函数(F模式),或两个独立的4变量任意逻辑函数(FG模式),或两个独立函数的分时工作模式(FGM模式),分别如图2.30(a)、(b)、(c)所示。在F模式下,函数发生器实现由7变量中选出的单个5变量函数,5个变量为A、D、E以及B、C、QX和QY中任选两个,QX和QY输出是相同的。null FG模式生成两个4变量的独立函数,A输入共同,在B、C、QX和QY中任选两个变量,另一个在D和E中选择。在FGM模式下,使用输入变量(E)动态选择两个独立的4变量函数,A、D为共用输入,其余变量在B、C、QX、QY中选择。此模式可利用所有7个输入变量,E=1为F输出,E=0为G输出,QX和QY输出可以在两个查找表中分别选择。F和G以及其两端触发器的对称性允许CLB输出的互换,可提高网络的布线效率。null图2.29 XC3000/XC3100系列的CLB结构null图2.30 XC3000系列CLB的组合逻辑功能null 每个CLB中有两个D触发器,共享一个触发时钟,时钟的极性可由用户规定(上升沿或下降沿触发),D触发器的复位信号可由芯片内的全局限性复位(Global Reset)或RD输入信号驱动。每个触发器的数据输入端(D)可从直接数据输入端(DIN)及组合逻辑输出(F和G)3个信号中选择;输出端(Q)既可以直接驱动CLB输出(X和Y),也可以反馈给组合逻辑输入变量。null 2) 输入/输出模块(IOB—Input/Output Block) 每个IOB为器件的外部封装引脚与内部用户逻辑之间提供一个可编程接口。如图2.31所示,每个IOB单元具有两个触发器、两根时钟输入线、输入门限检测缓冲器、三态控制的输出缓冲器、上拉电阻及一组程序控制存储单元。每个IOB包含寄存器输入和直接输入通路,提供一个可编程三态输出缓冲器(可由寄存器或直接输出信号驱动),配置选项允许每个IOB输出具有反相、可控转换速率和高阻上拉选择。在输入电路中带有输入箝位二极管(避免静电损伤)及一些防止由输入电流引起自锁的保护电路。null图2.31 XC3000系列的IOBnull 每个IOB的输入缓冲器(IBUF)部分带有阈值检测功能,可将施加到封装引脚上的外部信号转换成内部逻辑电平。IOB的输入BUF阈值可编程为TTL电平或CMOS电平。缓冲后的输入信号驱动存储单元的数据输入,该存储单元可配置成一个触发器或一个锁存器。在芯片四周每边上的两面三根时钟线,其时钟信号的极性(上升/下降沿触发触发器,高/低电平透明锁存器)是可编
本文档为【第2章_大规模可编程逻辑器件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_594886
暂无简介~
格式:ppt
大小:5MB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2010-04-30
浏览量:23