1第2章PLD(CPLD/FPGA)2.1可编程逻辑器件的概况2.2CPLD(复杂可编程逻辑器件)2.3FPGA(现场可编程门阵列)2.4PLD的编程与配置2.5PLD的选择22.1可编程逻辑器件的概况2.1.1可编程逻辑器件的发展20世纪70年代初,主要是可编程只读存储器(PROM)和可编程逻辑阵列(PLA)。20世纪70年代末出现了可编程阵列逻辑(PAL—ProgrammableArrayLogic)器件。20世纪80年代初期,美国Lattice公司推出了一种新型的PLD器件,称为通用阵列逻辑(GAL-GenericArrayLogic),一般认为它是第二代PLD器件。随着技术的进步,生产工艺的不断改进,器件规模不断扩大,逻辑功能不断增强,各种可编程逻辑器件如雨后春笋般地涌现,如PROM、EPROM、E2PROM等。在EPROM基础上出现的高密度可编程逻辑器件称为EPLD或CPLD。现在一般把超过某一集成度的PLD器件都称为CPLD。32.1.1可编程逻辑器件的发展在20世纪80年代中期,美国Xilinx公司首先推出了现场可编程门阵列(FPGA)器件。FPGA器件采用逻辑单元阵列结构和静态随机存取存储器工艺,设计灵活,集成度高,可无限次反复编程,并可现场模拟调试验证。在20世纪90年代初,Lattice公司又推出了在系统可编程大规模集成电路(ispLSI)。可编程逻辑器件经历了从PROM(可编程只读存储器)、PLA(可编程逻辑阵列)、PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)到EPLD(可擦除可编辑逻辑器)、CPLD(复杂可编程逻辑器件)、FPGA(现场可编程门阵列器件)的发展过程,不仅在结构、工艺、集成度、功能、速度等方面有了很大的改进,而且在稳定性、可靠性、灵活性上也有了显著的提高。42.1.2PLD的基本结构和表示方法1.PLD的乘积项原理(与或阵列)(CPLD)输出电路或阵列与阵列输入电路输入输出输入项与项或项反馈通路用来对输入信号进行预处理,为与阵列提供互补输入变量。用来产生逻辑函数所需的乘积项。用来选择所需的与项,实现乘积项之和。用来提供不同的输出方式,对输出的信号进行处理。5表示方法(1)互补输出的输入缓冲器(2)三态输出缓冲器ABC010110ABCAFCCAFY0x1011高阻0110ACY6(3)与逻辑门ABCP&ABP三种连接方式:硬线连接:交叉点处用节点“”表示;编程连接:交叉点处用“”表示;编程擦除:交叉点处无标记。P=AB表示方法7(3)与逻辑门三种连接方式:硬线连接:交叉点处用节点“”表示;编程连接:交叉点处用“”表示;编程擦除:交叉点处无标记。ABCPPABCP=ABC8(4)或逻辑门三种连接方式:硬线连接:交叉点处用节点“”表示;编程连接:交叉点处用“”表示;编程擦除:交叉点处无标记。FXYZ1XZFF=X+Z9ABBABAYP1=ABP2=ABP3=AABB=0Y=P1+P2+P3=AB+ABP1P2P3表示方法102.查找表(Look-Up-Table,LUT)的基本原理(FPGA)LUT实质上就是一个SRAM,目前FPGA中使用较多的是4个输入、一个输出的LUT,所以每个电路可以看成是一个4根地址线的16×1位的SRAM。下面是一个4输入的与门。实际逻辑电路LUT的实现方式输入a,b,c,d逻辑输出地址RAM中存储的内容00000000000001000010…………1111111111112.查找表(Look-Up-Table,LUT)的基本原理(FPGA)N个输入的逻辑函数需要2N的容量的SRAM来实现,一般多个输入的查找表采用多个逻辑块级连的方式。查找表与门查找表与门查找表与门d[3..0]d[7..4]d[11..0]12个输入,采用3个4位输入的逻辑块级联方式实现LUT。122.1.3可编程逻辑器件的分类目前,可编程逻辑器件有许多种类型,不同厂商生产的PLD,其结构和特点也有所不同。通常可以按照集成度、编程工艺、基本结构和逻辑单元对PLD进行分类。1.按集成度分类●低密度可编程逻辑器件(LDPLD)集成度在1000门/片以下的PLD称为低密度PLD。如PROM、PLA、PAL和GAL等。●高密度可编程逻辑器件(HDPLD)高密度PLD是指集成度在1000门/片以上的PLD。如EPLD、CPLD和FPGA等。根据集成度PLD可分为以下两大类:132.按编程工艺分类根据PLD器件在编程点处所使用的编程器件不同,可分为以下三类:熔丝或反熔丝编程器件浮栅编程器件SRAM编程器件(1)熔丝或反熔丝编程器件该类型器件均为非易失一次性编程器件。熔丝编程器件是在每个可编程点处都接有熔丝开关。如PROM、PAL等。若编程点需要接通时,则保留熔丝;若编程点需要断开时,则用较大的编程电流将熔丝烧断。缺点:熔丝烧断后不能恢复,熔丝开关体积大,不利于集成度的提高。14反熔丝编程器件反熔丝编程器件是以反熔丝开关作为编程元件,其核心为一介质。未编程时,编程开关呈现高阻抗,编程点断开。当编程电压加到编程开关上,使开关介质击穿,开关呈现导通状态。如Actel公司的FPGA器件采用反熔丝编程工艺。(2)浮栅编程器件该类型器件采用浮栅编程技术,通过浮栅存储电荷的方法来保存编程信息,属于非易失可重复擦除器件。这种器件的存储单元可分为光擦除电编程存储单元、电擦除电编程存储单元和快闪存储单元(Flash)等。光擦除电编程器件采用EPROM工艺,器件中的编程元件为一只浮栅MOS管。2.按编程工艺分类15当编程电压脉冲对浮栅MOS管的悬浮栅注入电子时,浮栅MOS管截止,编程点断开。当紫外线照射悬浮栅时,悬浮栅中的电子泄放,使浮栅MOS管恢复导通。这种类型PLD器件主要有EPLD、CPLD等产品。电擦除电编程器件采用浮栅隧道氧化物工艺,其存储单元为EEPROM或Flash。当加入编程电脉冲时,使悬浮栅注入电子,浮栅MOS管截止。在擦除信息时,由电脉冲使悬浮栅中的电子通过隧道泄放,浮栅MOS管恢复导通,实现电擦除。这种类型PLD器件主要有GAL、ispLSI器件和CPLD等产品。16(3)SRAM编程器件在该类器件的芯片内,配置静态存储器SRAM。用来存储决定系统逻辑功能和互连的配置数据。SRAM属于易失元件,系统每次启动时,应先将编程数据从外部EPROM或硬盘中加载到SRAM中。采用SRAM技术能很方便地配置新的编程数据,实现在线编程。例如,Xilinx公司的FPGA器件。3.按基本结构分类常用的可编程逻辑器件都是基于“与-或”阵列或门阵列基本结构发展起来的,因此从基本结构上可以分为两大类:阵列型器件单元型器件17(1)阵列型器件这类器件是由与阵列和或阵列组成,采用了较大规模的逻辑单元,能有效地实现“与-或”形式的逻辑函数。包括低密度的PLD、EPLD和CPLD。例如,Altera公司的MAX系列的器件。(2)单元型器件这种器件采用门阵列和分段式连线结构,能有效地实现各种大规模的逻辑函数。单元型器件的连线结构是采用长度不同的几种连线线段,经过相应开关元件的编程将内部逻辑单元连接起来,形成相应的信号通路。例如,Xilinx公司的FPGA。2.2CPLD(复杂可编程逻辑器件)2.2.1CPLD的基本结构复杂可编程逻辑器件(CPLD)采用E2PROM工艺,具有高密度、高速度和低功耗等优点。在CPLD中引入在系统编程(ISP)技术后,使CPLD的应用更加方便灵活,深受设计人员的青睐,现已成为电子系统设计的首选器件之一。目前,生产CPLD器件的著名公司主要有美国的Altera、AMD、Lattice、Cypress和Xilinx等公司。CPLD的产品多种多样,器件的结构也有很大的差异,但大多数公司的CPLD仍使用基于乘积项的阵列型单元结构。例如,Altera公司的MAX系列CPLD产品、Xilinx公司和Lattice公司的CPLD产品都采用可编程乘积项阵列结构。2.2.1CPLD的基本结构基于乘积项阵列型CPLD的组成:逻辑块、I/O单元和可编程内部连线包括实现乘积项的与阵列、乘积项分配和逻辑宏单元等,用于实现各种逻辑功能。用于实现信号从器件输出,以及为输入信号提供输入通道。通常具有输入、输出和双向I/O模式。●逻辑块●I/O单元2.2.1CPLD的基本结构●可编程内部连线为各逻辑块之间,以及逻辑块和I/O单元之间提供互连网络,实现信号连线。2.2.2Altera公司的CPLD一、MAX系列器件简介Altera公司的CPLD主要有:Classic系列和MAX系列。MAX系列产品采用乘积项阵列结构主要有:MAX9000、MAX7000、MAX5000、MAX3000A等系列。MAX系列器件性能表器件系列逻辑单元结构互连结构编程工艺用户I/O引脚可用门MAX9000乘积项连续式EEPROM168~2166000~12000MAX7000乘积项连续式EEPROM36~212600~10000MAX5000乘积项连续式EEPROM28~100600~3750MAX3000A乘积项连续式EEPROM34~158600~5000MAX7000S采用第二代的MAX结构,组成:●逻辑阵列块LAB●可编程连线阵列PIA●I/O控制块2.3.2MAX7000S器件的结构和原理宏单元MC扩展乘积项EPT2.2.2Altera公司的CPLD二、MAX7000的结构和原理(以MAX7000S为例)PIA2.2.2Altera公司的CPLD由逻辑阵列块(LAB)、宏单元(MC)、扩展乘积项(EPT),可编程连线阵列(PIA)和I/O控制块五个部分组成。4个专用输入2.3FPGA(现场可编程门阵列)2.3.1FPGA的基本结构世界上第一片FPGA由美国Xilinx公司于1985年率先推出。进入21世纪之后,以FPGA为核心的单片系统SOC和可编程系统SOPC有了显著的发展,单片FPGA的集成规模已达到几百万门,其工作速度已超过300MHz。FPGA在结构上已经实现了复杂系统所需要的主要功能,并将多种功能集成在一片FPGA器件中,如嵌入式存储器、嵌入式乘法器、嵌入式处理器、高速I/O缓冲器、外置存储器接口和实现数字信号处理的DSP等功能。随着FPGA性能的不断完善,FPGA器件的种类日益丰富,受到世界范围内电子设计人员的普遍欢迎,并占据了较大的市场,其生产厂家也由原来的Xilinx公司一家增加到Altera、Actel、Lattice等十几家公司。目前FPGA主要产品大致可以分为两大类:基于SRAM编程的FPGA和基于反熔丝编程的FPGA。由可配置的逻辑模块(CLB,ConfigurableLogicBlock)、可编程布线资源(PI,ProgrammableInterconnection)和可编程的输入输出模块(IOB,Input/OutputBlock)三部分组成。可配置逻辑模块可编程I/O单元可编程开关矩阵互连资源2.3.1FPGA的基本结构1.基于SRAM编程的FPGA(Xilinx的逻辑单元阵列(LCA)器件)基于SRAM编程的FPGA主要结构特征:①具有门阵列的逻辑模块(CLB)和互连通道结构,在结构上逻辑资源和布线资源是分开的,并代表不同的特性;②具有多输入的逻辑单元,在实现完整的逻辑功能的同时,可降低逻辑块的数量、减少设计布线的连线段、缩短信号的延时;③支持双向和多资源的连线;④具有快速再配置功能,使产品开发周期减少。优点:①可以反复编程;②开发设计不需要专门的编程器;③与CMOS工艺的存储器兼容,芯片的价格比较低。2.3.1FPGA的基本结构缺点:①器件掉电后,SRAM中的配置数据会丢失。因此,在FPGA器件的外部,需要附加一个只读存储器PROM或EPROM,用来保存这些配置数据,这样会给配置数据的保密带来一定的问题;②器件内部可编程连线和逻辑定义通过大量的传输门开关来实现。由于电阻较大,导致信号的传递速度受到影响,限制了系统的工作频率。2.3.1FPGA的基本结构2.基于反熔