第1章PLD概述第1章PLD概述1.1PLD发展历程1.2PLD器件的分类1.3简单的PLD器件结构1.4FPGA/CPLD的基本概念习题1第1章PLD概述1.1PLD发展历程在数字化时代的今天,我们到处都可以见到数字产品的“身影”。随着数字技术的发展,数字产品在性能提高和复杂度增大的同时,其更新换代的步伐也越来越快,导致这一现象的根本原因在于半导体生产制造和电子设计技术的进步。著名的摩尔先生曾经对半导体的发展做出预言:大约每18个月,芯片的集成度提高1倍,功耗下降为原来的1/2。他的预言被人们称为摩尔定律(Moore’sLaw)。几十年来,集成电路的发展与这个预言惊人地吻合,数字器件经历了从SSI(SmallScaleIntegratedcircuites,小规模集成电路)、MSI(MediumScaleIntegratedcircuites,中规模集成电路)、LSI第1章PLD概述(LargeScaleIntegratedcircuites,大规模集成电路)、VLSI(VeryLargeScaleIntegratedcircuites,超大规模集成电路)到ULSI(UltraLargeScaleIntegratedcircuites,甚大规模集成电路),直到现在的SoC(SystemonChip,系统级芯片)。目前我们已经能够把一个完整的电子系统集成在一个芯片上。此外,还有一种器件的发明与使用使我们设计制作电子系统的方法大为改观,这就是可编程逻辑器件(ProgrammableLogicDevice,PLD)。PLD器件是20世纪70年代后在ASIC设计的基础上发展起来的新型逻辑器件,它可以利用软件将设计者用硬件语言描述的电路特性转化成硬件电路。在实际应用中它简化了电路设计,降低了开发成本等,因此PLD器件的出现给数字系统的设计方式带来了革命性的变化。第1章PLD概述PLD器件自出现以来,其工艺和结构经历了不断的发展与变革。在20世纪70年代初,可编程器件只有简单的可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(EEPROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。20世纪70年代中期,可编程逻辑阵列(ProgrammableLogicArray,PLA)与可编程阵列逻辑(ProgrammableArrayLogic,PAL)相继出现了。PLA器件在结构上由一个可编程的与阵列和一个可编程的或阵列构成,阵列规模较小,编程也较繁琐;PAL器件由一个可编程的与阵列和一个固定的或阵列构成,采用熔丝编程方式,其设计较灵巧,器件速度快,因而成为第一个得到普遍应用的PLD器件。第1章PLD概述20世纪80年代初,美国的Lattice公司发明了通用阵列逻辑(GenericArrayLogic,GAL)。GAL器件采用了输出逻辑宏单元(OutputLogicMicroCell,OLMC)结构和EEPROM工艺,具有可编程、可擦除、可长期保存数据的优点,且使用灵活,所以得到了广泛的应用。这些早期的PLD器件虽然有较快的逻辑运算速度,但其过于简单的结构也使它们只能用于规模较小的电路。为了弥补这一缺陷,在20世纪80年代中期以后,相继出现了现场可编程门阵列(FieldProgrammableGateArray,FPGA)器件和复杂可编程逻辑器件(ComplexProgrammableLogicDevice,CPLD)。第1章PLD概述FPGA是1985年美国Xilinx公司推出的一种采用单元型结构的新型PLD器件。它采用CMOS、SRAM工艺制作,在结构上与简单的阵列型PLD不同,它的内部由许多独立的可编程逻辑单元构成,各逻辑单元之间可以灵活地相互连接,具有密度高、速度快、编程灵活、可重新配置等优点。因此,FPGA成为当前主流的PLD器件之一。CPLD是从PAL和GAL器件发展起来的,相对而言规模大,结构复杂,属于大规模集成电路范围。CPLD也是当前另一主流的PLD器件。第1章PLD概述现在PLD器件仍向着高密度、高速度、低功耗的方向发展。特别是FPGA器件,现在它的集成度已经不能和以前的FPGA相提并论。另外,由于专用集成电路(ASIC)芯片设计具有周期长、难点多、耗资大等缺点,因此用PLD器件来代替一般的ASIC芯片进行设计已经成为一种发展趋势。第1章PLD概述1.2PLD器件的分类可编程逻辑器件有很多种,因为公司不同,可编程逻辑器件的结构和特点也随之不同。按照不同的标准,PLD器件可以按照集成度、编程特点、结构特点等来分类。集成度、功耗等是可编程逻辑器件的重要指标,所以这里着重介绍PLD器件按集成度的分类。按照可编程逻辑器件的集成度,PLD器件可以分为简单的PLD和复杂的PLD。现在简单的PLD器件已经很少生产和使用,而复杂的PLD器件已成为当前PLD的主流器件。1.简单的PLD简单的PLD包括PROM、PLA、PAL和GAL四种器件。第1章PLD概述1)可编程只读存储器(ProgrammableRead-OnlyMemory,PROM)PROM是最早的PLD器件,编写和修改受到极大限制,只能完成一次编写,并且不能擦除。之后又出现了紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(EEPROM)。它们都具有成本低、编程容易的特点,但由于结构的限制,它们只能完成简单的数字逻辑功能。2)可编程逻辑阵列(ProgrammableLogicArray,PLA)可编程逻辑阵列简称PLA,它是一种可程式化的装置,可用来实现组合逻辑电路。PLA具有一组可程式化的AND阶,AND阶之后连接一组可程式化的OR阶,这样可以达到只在符合设定条件时才允许产生逻辑信号输出。第1章PLD概述3)可编程阵列逻辑(ProgrammableArrayLogic,PAL)PAL是20世纪70年代末由MMI公司率先推出的一种可编程逻辑器件。它采用双极型工艺制作,并采用熔丝编程方式。PAL器件由可编程的与逻辑阵列、固定的或逻辑阵列和输出电路三部分组成。通过对与逻辑阵列编程可以获得不同形式的组合逻辑函数。第1章PLD概述4)通用阵列逻辑(GenericArrayLogic,GAL)通用阵列逻辑器件是在PAL器件的基础上发展起来的新一代增强型器件,它直接继承了PAL器件的“与或”阵列结构,利用灵活的输出逻辑宏单元OLMC结构来增强输出功能,同时采用电子标签和宏单元结构字符等新技术和EECMOS新工艺,具有可擦除、可重新编程和可重新配置其结构等功能。用GAL器件设计逻辑系统,不仅灵活性大,而且能对PAL器件进行仿真,并能完全兼容。以上四种简单的PLD器件都基于“与或”阵列结构。第1章PLD概述2.复杂的PLD复杂的PLD主要包括CPLD和FPGA两类器件,这两类器件是当前PLD器件的主流。1)复杂可编程逻辑器件(ComplexProgrammableLogicDevice,CPLD)CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于产品的原型设计和产品生产中。第1章PLD概述2)现场可编程门阵列(FieldProgrammableGateArray,FPGA)FPGA是在PAL、GAL、PLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBolck)、输入/输出模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。第1章PLD概述1.3简单的PLD器件结构任何组合逻辑表达式都可以化为“与或”表达式,因此用与门和或门组成的二级阵列硬件电路可以代替任何组合逻辑表达式。这类似于数字表达式中只有乘、加运算一样,只要先乘后加进行两级运算后就可以得出各种结果。简单的PLD器件采用“与或”逻辑电路的结构,再加上可以灵活配置的互连线及存储元件,从而实现任意的逻辑功能。PROM、PLA、PAL和GAL这四种简单的PLD器件都基于“与或”阵列结构,不过在其内部逻辑控制阵列上有一些不同,具体如表1.1所示。第1章PLD概述器件与阵列或阵列电路构造性质PROM固定可编程固定PLA可编程可编程固定PAL可编程固定固定GAL可编程固定可组态表1.1四种简单的PLD器件的区别第1章PLD概述PROM的阵列结构如图1.1所示,PROM中包含一个固定的“与阵列”和一个可编程的“或阵列”,图中所示的PROM有4个输入端、16个乘积项、4个输出端。其中,“”表示固定连接点,“”表示可编程连接点。PLA器件的阵列结构如图1.2所示,它的“与阵列”和“或阵列”都是可编程的。PAL和GAL器件的门阵列结构是相同的,即“与阵列”是可编程的,“或阵列”是固定的。图1.3所示为PAL和GAL的阵列结构。第1章PLD概述图1.1PROM的阵列结构第1章PLD概述图1.2PLA的阵列结构第1章PLD概述图1.3PAL与GAL的阵列结构第1章PLD概述图1.4给出了GAL22V10A的结构。GAL有一种灵活的、可编程的输出结构,这也是GAL区别于PAL和其他简单PLD器件的最主要的一点。GAL的这种输出结构称为输出逻辑宏单元(OutputLogicMicroCell,OLMC)。GAL作为第一个得到广泛应用的PLD器件,其许多优点都源于OLMC结构。第1章PLD概述图1.4GAL22V10A的结构第1章PLD概述图1.5是GAL22V10A的OLMC结构。从图中可以看出,OLMC主要由“或”门和D触发器构成,此外,还包括两个数据选择器MUX、一个输出缓冲器。其中,4选1 MUX用来选择输出方式和输出的极性,2选1 MUX用来选择反馈信号。这两个MUX的状态由两位可编程的特征码S2S1来控制,S2S1有四种组态,所以OLMC有4种输出方式。当S2S1=00时,OLMC为低电平有效寄存器输出方式;当S2S1=01时,OLMC为低电平有效组合逻辑输出方式;当S2S1=10时,OLMC为高电平有效寄存器输出方式;当S2S1=11时,OLMC为高电平有效组合逻辑输出方式。第1章PLD概述图1.5GAL22V10A的OLMC结构第1章PLD概述1.4FPGA/CPLD的基本概念Xilinx把基于查找表(LookUpTable,LUT)技术、SRAM工艺、要外挂配置用的EEPROM的PLD称为FPGA;把基于乘积项(ProductItems)技术、Flash(类似于EEPROM)工艺的PLD称为CPLD。1.4.1基于乘积项的CPLD结构和原理简单的PLD和CPLD都是基于乘积项结构的器件。下面以一个简单的逻辑电路(如图1.6所示)为例,具体说明简单的PLD和CPLD器件是如何利用其结构实现逻辑功能的。第1章PLD概述图1.6逻辑电路第1章PLD概述由图1.6可知,f=(A+B)C(D)=ACD+BCD。简单的PLD和CPLD器件将以图1.7的方式来实现组合逻辑f的输出。图1.7可编程连线阵列第1章PLD概述在图1.7中,A、B、C、D由PLD芯片的引脚输入后进入可编程连线阵列,在内部会产生A、A、B、B、C、C、D、D8个输出。图中,“”表示可编程连接点,所以得到:f=f1+f2=(ACD)+(BCD)。电路中D触发器的实现比较简单,直接利用宏单元