第2章FPGA/CPLD结构原理CPLD/FPGA入门PLD是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于70年代单片机的发明和使用。PLD是可编程逻辑器件(ProgramableLogicDevice)的简称,FPGA是现场可编程门阵列(FieldProgramableGateArray)的简称,两者的功能基本相同,只是实现原理略有不同,所以我们有时可以忽略这两者的区别,统称为可编程逻辑器件或PLD/FPGA。CPLD/FPGA入门PLD能做什么呢?可以毫不夸张的讲,PLD能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用PLD来实现。PLD如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。开发PLD需要了解三个部分:1.PLD器件2.PLD开发软件3.硬件描述语言目前有多家公司生产CPLD/FPGA,最大的三家是:ALTERA,XILINX,Lattice-Vantis可编程逻辑器件的发展历程(1)早期的可编程逻辑器件只有可编程只读存贮器(PROM)、紫外线可擦除只读存贮器(EPROM)和电可擦除只读存贮器(EEPROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能可编程逻辑器件的发展历程(2)其后,出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与---或”表达式来描述,所以,PLD能以乘积和的形式完成大量的组合逻辑功能这一阶段的产品主要有PLA(可编程逻辑阵列)、PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。可编程逻辑器件的发展历程(3)PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和EEPROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。可编程逻辑器件的发展历程(4)在PAL的基础上,又发展了一种通用阵列逻辑GAL(GenericArrayLogic),如GAL16V8,GAL22V10等。它采用了EEPROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。可编程逻辑器件的发展历程(5)为了弥补这一缺陷,20世纪80年代中期,Altera和Xilinx分别推出了类似于PAL结构的扩展型CPLD(ComplexProgrammab1eLogicDvice)和与标准门阵列类似的FPGA(FieldProgrammableGateArray),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。可编程逻辑器件的发展历程(6)CPLD/FPGA与门阵列等其它ASIC(ApplicationSpecificIC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10,000件以下)之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件可编程逻辑器件的发展历程总结1可编程逻辑器件(PLD)是从20世纪70年代开始发展的70年代,PROM,EPROM,EEPROM70年代中期,PLA70年代末,PAL80年代,GAL以上属于简单低密度PLD可编程逻辑器件的发展历程总结2到80年代中期,可编程逻辑器件已发展到了FPGA(现场可编程门阵列)和CPLD(复杂可编程逻辑器件),这些属于高密度PLD。20世纪90年代,FPGA/CPLD发展非常迅速,最大等效门达到100万门,最高速度可达到100M以上与可编程逻辑器件一起迅速发展的是EDA技术PLD的分类可编程逻辑器件(PLD)简单PLD复杂PLDPROMPALPLAGALCPLDFPGA图2-2PLD按集成度分类2.1PLD概述2.2简单PLD结构原理常用符号连接表示未连接编程连接固定连接2.2简单PLD结构原理约定简化符号PLD的互补缓冲器PLD中与阵列PLD中或阵列2.2.2PROM结构原理PROMW0地址译码器存储矩阵A0A1W1Wp-1An-1F0F1Fm-1与阵列不可编程或阵列可编程P=2n存储容量=P30图2-11图2-12容量?与阵列不可编程,或阵列可编程2.2.2PROMEPROM(UVEPROM)SIMOS擦写速度慢,且擦写操作复杂EEPROMFlotox擦写时需要加高电压脉冲,擦写时间仍很长快闪存储器(FlashMemory)叠栅MOS操作方便,擦写速度快上述EPROM,EEPROM,FLASHMEMORY与PROM相比,它们的结构相同。不同的地方是它们的编程方式不同PROM一次性编程EPROMEEPROMFLASHMEMORY2.2.3PLAPLA由于与阵列、或阵列都可编程,造成软件算法过于复杂,运行速度下降与阵列可编程或阵列可编程A0A1W1Wp-1An-1F0F1Fm-1W0P31图2-13图2-14容量?2.2.4PALPAL为适应不同应用需要,PAL的输出结构太多与阵列可编程或阵列不可编程A0A1W1Wp-1An-1F0F1Fm-1W0P32图2-15图2-162.2.5GAL结构原理GAL与阵列可编程或阵列不可编程A0A1W1Wp-1An-1F0F1Fm-1W0OLMCI/O2.2.5GALOLMC(outputlogicmacrocell)OLMC是一种灵活的、可编程的输出结构OLMC可配置成三种模式。一旦确定了某种模式,所有的OLMC都将工作在同一种模式下。P33~34以上是简单低密度PLD将要开始的是高密度PLD可编程逻辑器件(PLD)简单PLD复杂PLDPROMPALPLAGALCPLDFPGA图2-2PLD按集成度分类PLD的分类CPLD和FPGA的区别基于乘积项(Product-Term)技术,EEPROM(或Flash)工艺的CPLD基于查找表(Look-Uptable)技术,SRAM工艺的大规模FPGA2.3CPLD结构与工作原理Altera公司产品MAX7000S的结构逻辑阵列块可编程连线阵列I/O控制模块2.3CPLD结构与工作原理由三大部分组成:一个二维的逻辑块阵列LAB,构成了PLD器件的逻辑组成核心。输入/输出控制块。连接逻辑块的互连资源PIA。连线资源:由各种长度的连线线段组成,其中也有一些可编程的连接开关,它们用于逻辑块之间、逻辑块与输入/输出块之间的连接。2.3CPLD结构与工作原理PIA可编程连线阵列不同的LAB通过在可编程连线阵列上布线,以相互连接构成所需的逻辑。这个全局总线是一种可编程的通道,可以把器件中任何信号连接到其目的地2.3CPLD结构与工作原理I/O控制块I/O控制块允许每个I/O引脚单独被配置为输入、输出和双向工作方式2.3CPLD结构与工作原理LAB(logicarrayblock)由16个宏单元构成每个LAB有下列输入信号来自作为通用逻辑输入的PIA的36个信号全局控制信号,用于寄存器辅助功能。CLOCK,CLEAR及两个输出使能信号(OE)从I/O引脚到寄存器的直接输入通道宏单元宏单元主要由四个功能块组成:逻辑阵列、乘积项选择矩阵、扩展乘积项和可编程寄存器。图2-26MAX7000S系列的单个宏单元结构PRNCLRNENA逻辑阵列全局清零共享逻辑扩展项清零时钟清零选择寄存器旁路并行扩展项通往I/O模块通往PIA乘积项选择矩阵来自I/O引脚全局时钟QDEN来自PIA的36个信号快速输入选择22.3CPLD结构与工作原理MAX7000S宏单元由四个部分组成:逻辑阵列、乘积项选择矩阵、扩展乘积项和可编程寄存器逻辑阵列实现组合逻辑,可以给每个宏单元提供五个乘积项。乘积项选择矩阵分配这些乘积项作为到或门和异或门的主要逻辑输入,以实现组合逻辑,或者把这些乘积项作为宏单元中寄存器的辅助输入2.3CPLD结构与工作原理MAX7000S宏单元由四个部分组成:逻辑阵列、乘积项选择矩阵、扩展乘积项和可编程寄存器扩展乘积项:共享扩展项,并联扩展项每个宏单元中有一个共享扩展乘积项经非门后回馈到逻辑阵列中。还存在并行扩展乘积项从邻近宏单元借位而来。利用扩展项可保证在实现逻辑综合时,用尽可能少的逻辑资源,得到尽可能快的工作速度2.3CPLD结构与工作原理MAX7000S宏单元由四个部分组成:逻辑阵列、乘积项选择矩阵、扩展乘积项和可编程寄存器可编程寄存器可以单独地配置为带有可编程时钟控制的D、T、JK或SR触发器工作方式,也可以将寄存器旁路掉,实现组合逻辑工作方式。三种时钟输入模式,全局时钟信号,全局时钟信号并由高电平有效的时钟信号使能,用乘积项实现一个阵列时钟基于乘积项(Product-Term)技术,EEPROM(或Flash)工艺的CPLD2.4FPGA结构与工作原理基于查找表(LookUptable)技术,SRAM工艺的大规模FPGASRAMSRAM的静态存储单元R/W=1时,V管导通,数据D输入到基本RS触发器中。当R/W=0时,V管不通,从Q端或Q非端将存储的数据读走基于查找表的结构模块FPGA采用基于SRAM的查找表逻辑形成结构。用SRAM来构成逻辑函数发生器。一个N输入查找表(LUT,LookUpTable)可以实现N个输入变量的任何逻辑功能,如N输入“与”、N输入“异或”等。输出查黑找盒表子输入1输入2输入3输入4000001010000010116×1RAM输入A输入B输入C输入D查找表输出多路选择器图2-33FPGA查找表单元内部结构•一个N输入的查找表,SRAM存储N个输入构成的真值表,需要用2的N次幂个位的SRAM单元。显然N不可能很大,否则LUT的利用率很低。输入多于N个的逻辑函数必须分开用几个查找表(LUT)实现基于查找表的结构模块2.4FPGA结构与工作原理Altera的FLEX10K系列、ACEX系列、APEX系列、Cyclone系列采用SRAM查找表构成。FLEX10K系列器件图FLEX10K内部结构...IOCIOCIOCIOC......IOCIOC...IOCIOC...IOCIOC...IOCIOC输入输出控制模块...IOCIOC...IOCIOCIOCIOC...快速通道互连逻辑阵列块(LAB)IOCIOC...EABEAB嵌入式阵列块2.4FPGA结构与工作原理FPGA由4个部分组成:EAB,LAB,IOC,快速互连通道(FastTrack)FastTrack一系列水平和垂直走向的连续式布线通道FLEX10K器件的I/O引脚是由一些I/O单元(IOE或IOC)驱动的。IOC位于快速通道的行和列的末端,包含一个双向I/O缓冲器和一个寄存器。IOC可配置称输入输出或双向口I/O单元与专用输入端口LABLAB:由8个LE(逻辑单元)、相联的进位链、级联链、LAB控制信号与LAB局部互连构成。LAB构成了FLEX10K的“粗粒度”。图FLEX10K内部结构...IOCIOCIOCIOC......IOCIOC...IOCIOC...IOCIOC...IOCIOC逻辑单元...IOCIOC...IOCIOCIOCIOC...逻辑阵列块(LAB)IOCIOC...EABEAB逻辑阵列LAB是由一系列的相邻LE构成的