第三章CPLD/FPGA基础一、复杂可编程逻辑器件简介二、CPLD的组成与特点三、FPGA的组成与特点四、CPLD与FPGA的异同五、主要的PLD厂商作业复杂可编程逻辑器件CPLD/FPGA简介概述CPLD/FPGA能做什么CPLD/FPGA的主要特点CPLD/FPGA的命名如何使用CPLD/FPGA如何获得CPLD软件开发系统主要的CPLD/FPGA生产厂商国外主要的CPLD/FPGA开发系统一、复杂可编程逻辑器件CPLD/FPGA简介CPLD(ComplexProgramableLogicDevice)--复杂可编程逻辑器件两者的功能基本相同,只是实现原理略有不同,故有时可以统称为复杂可编程逻辑器件或CPLD/FPGA。FPGA(FieldProgramableGateArray)--现场可编程门阵列概述复杂可编程逻辑器件CPLD/FPGA简介CPLD/FPGA是80年代初期开始发展起来的一种数字电子器件开发与设计技术,是目前电子设计领域中最具活力和发展前途的一项技术,它的用途和影响甚至不亚于70年代单片机的发明和使用。CPLD/FPGA内部具有大量组成数字电路的最小单元——门电路,而这些门电路并没有固定怎样连接,门电路的连接可通过编程的方法加以设计,同时输入/输出脚的连接可自己设置,故这种电路给我们带来了极大的方便。经过了十几年的发展,许多公司都开发出了多种可编程逻辑器件。比较典型的就是Xilinx公司的FPGA器件系列和Altera公司的CPLD器件系列,它们开发较早,占用了较大的市场(60%以上)。可以讲Altera和Xilinx共同决定了CPLD技术的发展方向。其它公司如:Lattice-Vantis,Actel,Atmel、Quicklogic,Lucent等也提供不同相关产品。通常来说,在欧洲用Xilinx的人多,在日本和亚太地区用ALTERA的人多,在美国则是平分秋色。复杂可编程逻辑器件CPLD/FPGA简介(续)复杂可编程逻辑器件CPLD/FPGA简介(续)CPLD集成度相对小一点,多用于2万门规模以下的设计,适合实现较复杂的组合逻辑,如编、译码设计。FPGA,集成度较高,内部触发器多,多用于1万门以上的大规模系统设计,适合做复杂的时序逻辑设计,如数字信号处理和各种算法。已有基于FPGA的SOPC器件问世,并得到广泛关注。复杂可编程逻辑器件CPLD/FPGA简介(续)一般认为,复杂可编程逻辑器件CPLD/FPGA的单片集成度大于1000门,而简单可编程逻辑器件SPLD的单片集成度小于1000门。SPLD除GAL外目前已较少使用。目前FPGA的单片集成度已超过1千万门,达到Intel公司最新奔腾ⅣCPU的集成度。可以在这种高集成度的FPGA芯片上设计CPU/DSP,实现SOPC。用CPLD/FPGA能做什么?可以不夸张的讲,CPLD能完成任何数字器件的功能,直至实现单芯片系统SOC。上至高性能的CPU,下至简单的74系列数字电路,都可以用CPLD来实现。CPLD如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法或硬件描述语言(HDL),来自由的设计一个数字系统。通过EDA软件仿真,可以事先验证设计的正确性。在PCB完成以后,还可以利用CPLD的在线修改能力,随时修改设计而不必改动硬件电路。使用CPLD来开发数字电路与系统,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。CPLD/FPGA的主要特点1、采用LSI/VLSI技术制造,高集成度。2、支持各种组合逻辑和时序逻辑电路设计,甚至实现“片上系统”(SOC)。3、可编程改变芯片的逻辑功能,芯片可重复使用,具有ISP或ICR特性。(ISP:InSystemProgramming,在系统编程)(ICR:InCircuitReconfigable,在电路重构)4、有很高的逻辑布线能力,可以预测信号延迟,便于使用计算机进行逻辑功能仿真与时序仿真。CPLD/FPGA的主要特点(续)5、有良好的设计加密功能,便于保护知识产权(IP)。6、有强大的EDA开发工具(软件)支持,与ASIC设计相比,易学易用。7、研制、开发时间较短,费用相对少。8、必须借助开发系统才能设计、开发CPLD/FPGA系统。CPLD/FPGA的命名不同的厂家,对自己生产的可编程逻辑器件叫法不尽相同。与或阵列技术FPGA(现场可编程门阵列)是Xilinx公司发明的。Xilinx公司--把基于查找表技术、SRAM存储工艺的可编程逻辑器件叫FPGA;--把基于乘积项技术、E2PROM(或FlashMEM)存储工艺的可编程逻辑器件叫CPLD;CPLD/FPGA的命名(续)通常也把Altera的FLEX/ACEX/APEX系列的CPLD产品叫做FPGA。Altera公司--Altera公司把自己生产的可编程逻辑器件都叫作CPLD其中:--MAX系列采用乘积项技术、E2PROM存储工艺。--FLEX/ACEX/APEX系列采用查找表技术、SRAM存储工艺。如何使用CPLD/FPGA?开发、使用CPLD需要掌握三部分的知识:1、熟悉、了解CPLD/FPGA芯片(硬件);2、掌握CPLD/FPGA开发系统(软件);3、能对CPLD/FPGA芯片进行编程配置(加载设计代码)。由于CPLD/FPGA开发系统已发展得相当完善,一般用户甚至可以不用详细了解CPLD/FPGA的内部结构,就可以用自己熟悉的方法来完成要求的CPLD/FPGA设计。如原理图输入法、HDL语言输入法、波形输入法等如何获得CPLD软件开发系统?许多CPLD公司都提供免费的试用版或演示版提供,如MaxplusII(Baseline版或E+MAX版),--从Lattice、Actel等公司也都有类似的免费软件提供。以上免费软件都需要在网上注册申请License文件。www.altera.com处下载--向代理商索取Foundation--从xilinx网站下载如何获得CPLD软件开发系统?(续)也有许多第三方EDA软件公司提供CPLD/FPGA开发系统,且性能优良。如CANDENCE公司的SPW系统、Altec公司的ActiveCAD系统。这些免费软件已经能够满足一般设计的需要,当然,要想软件功能更强大一些,只能购买商业版软件。主要的CPLD/FPGA生产厂商世界上有多家公司生产CPLD/FPGA,主要的生产厂商有:1、Altera公司,主要的CPLD生产厂商2、Xilinx公司,主要的FPGA生产厂商3、Lattice公司,著名的CPLD生产厂商4、ACTEL公司,著名的CPLD生产厂商5、Cypress公司,著名的CPLD生产厂商6、Atemal公司,著名的IC/MCU公司,也设计生产PLD产品.7、Luccent公司,著名的通讯企业,也设计生产PLD产品.国外主要的CPLD/FPGA开发系统¾Altera:MAX+PlusII、QuartusII¾Xilinx:Foundation、ISE、Alliance¾Lattice:Synario、ispDesignEXPERT、Vantis¾Altec:ActiveCAD¾CPRESSWRAP¾OrCAD:OrCAD/2000二、CPLD的组成与特点(1)CPLD结构(2)逻辑宏单元(3)可编程内连线(4)可编程的I/O控制块(5)CPLD的性能特点(1)CPLD结构¾CPLD结构的PLD芯片主要有:Altera的MAX7000,MAX9000,MAX3000系列(E2PROM工艺)Xilinx的XC9500系列(Flash工艺)Lattice,Cypress的大部分产品(E2PROM/Flash工艺)(1)CPLD结构CPLD逻辑块(LB)可编程内连线(PI)可编程I/O控制块(I/OB)LB—LogicBlocks(逻辑块)PI—ProgrammableInterconnect(可编程内连线)I/OB—I/OBlock(可编程I/O控制块)MC-MacroCells(逻辑宏单元)PTA—Product-TermArray(乘积项阵列)PTD-Product-TermDistribution(乘积项分配)以MAX7000结构为例,其余基本类似逻辑宏单元1或称逻辑阵列块(LAB)······逻辑宏单元8(16)(1)CPLD结构¾逻辑块(LB)也称逻辑阵列块(LAB)是PLD的基础,由它来实现基本的逻辑功能。一个逻辑块LB一般由多个(8~16个)逻辑宏单元构成(MAX7000系列)。不同厂家、不同系列的产品结构略有差异。¾可编程连线PI负责信号传递,连接所有的逻辑宏单元,或I/O与宏单元的连接。¾I/O控制块(IOB)负责输入输出引脚的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输出等。(1)CPLD结构©1998AlteraCorporationMAX7000SInterconnectStructurePIAI/OControlBlockLABLABLABLABLABLABLABLABLABLABLABLABLABLABLABLABLAB----LogicArrayBlock,has16macrocells(1)逻辑阵列块(2)I/O控制块(3)可编程互连阵列Altera公司的MAX7000S的结构框图CPLD内部结构(Altera的MAX7000S系列)逻辑块(LB)也称逻辑阵列块(LAB)可编程I/O控制块可编程内连线(PI)逻辑阵列块中包含多个宏单元(2)逻辑宏单元CPLD的逻辑宏单元主要包括与或阵列、触发器和多路选择器等电路,能独立地配置为组合或时序工作方式。¾GAL器件的逻辑宏单元与I/O单元做在一起,称为输出逻辑宏单元(OLMC);¾CPLD的逻辑宏单元都做在内部,称为内部逻辑宏单元。(2)逻辑宏单元©1998AlteraCorporationMAX7000SMacrocellStructurePRNCLRNENALogicArrayGlobalClearSharedLogicExpandersClearClockClearSelectRegisterBypassParallelExpanderstoI/OBlocktoPIAProduct-TermSelectMatrixfromI/OPinGlobalClockQDEN36SignalsFromPIAFastInputSelect2(1)逻辑阵列(3)可编程触发器(2)乘积项选择矩阵Altera公司MAX7000S宏单元结构(2)逻辑宏单元乘积项逻辑阵列乘积项选择矩阵可编程触发器异或门或门¾图的左侧是乘积项阵列,实际就是一个与阵列,每个交叉点都是一个可编程点。通过“与阵列”产生乘积项(最小项)。后面的或门把按要求产生的乘积项“加”起来,得到需要的输出组合逻辑函数。或门乘积项逻辑阵列与门共有36×2+16=88个输入端¾图中的异或门用来控制组合逻辑函数的极性,极性控制端也来自乘积项选择矩阵。异或门极性控制端¾图右侧是一个可编程D触发器,它的时钟,清零输入都可以编程选择,可以使用专用的全局清零和全局时钟。可编程触发器¾由图可见,CPLD的逻辑宏单元(也可称为逻辑单元LE)与GAL的OLMC结构非常类似。(2)逻辑宏单元¾GAL器件一般分配给每个宏单元的乘积项的数量是固定的,一般为8、10、12、14、16个。¾CPLD的宏单元有固定的乘积项(如MAX系列为4个),同时允许一组扩展乘积项可单独地分配给一个宏单元或多个宏单元使用,扩展乘积项比固定乘积项延时要长。¾将乘积项用于特定的宏单元的概念称作乘积项引导(Product-TermSteering)。¾相同的乘积项用于多个宏单元的概念称之为乘积项共享(Product-TermSharing)。¾产品不同,乘积项共享实现方法也不同。乘积项分配(PTD-Product-TermDistribution)--将与阵列产生的乘积项分配给不同的宏单元。(2)逻辑宏单元-MAX7000乘积项共享结构