学习目标
1.能力目标
1)能了解可编程逻辑器件(PLD)的发展现状。
2)能掌握CPLD/FPGA的结构与特点。
3)能利用数字和纸质资源查找并使用所需资料。
2.知识目标
1)了解PLD的发展历程以及CPLD/FPGA的发展概况。
2)掌握CPLD/FPGA的结构与原理。
3.素质目标
1)培养查阅纸质资料的能力。
2)培养主动学习的能力。
情境设计
本节主要围绕CPLD/FPGA开发系统的发展概况、基本结构与特点、应用领域等介绍一些PLD系统的基本概念和基本原理。具体教学情境设计如表1-1所示。
表1-1 教学情境设计
微课1-1
CPLD FPGA的发展历程及概述
随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师更愿意自己设计专用集成电路(Application Specific Integrated Circuit,ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,能立即投入实际应用之中。因而出现了现场可编程逻辑器件(Field Programmable Logical Device,FPLD),其中应用最广泛的当属现场可编程门阵列(Field Programmable Gates Array,FPGA)和复杂可编程逻辑器件(Complex Programmable Logical Device,CPLD)。
早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E 2 PROM)3种。由于结构的限制,它们只能完成简单的数字逻辑功能。其后,出现了一类结构稍复杂的可编程芯片,即可编程逻辑器件(Programmable Logical Device,PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与-或”表达式来描述,所以,PLD能以乘积和的形式完成大量的组合逻辑功能。典型PLD的部分内部结构如图1-1所示。
图1-1 典型PLD的部分内部结构
这一阶段的产品主要有可编程阵列逻辑(Programmable Array Logic,PAL)和通用阵列逻辑(Generic Array Logic,GAL)。PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和E 2 PROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(Programmable Logic Array,PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上,又发展了一种通用阵列逻辑(Generic Array Logic,GAL),如GAL16V8、GAL22V10等。GAL采用了E 2 PROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共同特点是,可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。
为了弥补这一缺陷,20世纪80年代中期,Altera公司和Xilinx公司分别推出了类似于PAL结构的扩展型CPLD和标准门阵列类似的FPGA,它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围广等特点。这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。和门阵列等其他ASIC相比,又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无须测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10 000件以下)。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合,均可应用FPGA和CPLD器件。
不同厂家对器件的叫法不尽相同,Xilinx公司把基于查找表技术的SRAM工艺、要外挂配置用的E 2 PROM的PLD称为FPGA;把基于乘积项技术的Flash(类似E 2 PROM工艺)工艺的PLD称为CPLD。Altera把自己的PLD产品,包括MAX系列(乘积项技术,E 2 PROM工艺)和FLEX系列(查找表技术,SRAM工艺)都称为CPLD,即复杂PLD(Complex PLD)。由于FLEX系列也是SRAM工艺,基于查找表技术,要外挂配置用的EPROM,其用法和Xilinx公司的FPGA一样,所以很多人把Altera公司的FLEX系列产品也称作FPGA。
现场可编程门阵列(FPGA)与复杂可编程逻辑器件(CPLD)都是可编程逻辑器件,它们是在PAL、GAL等逻辑器件的基础之上发展起来的。同以往的PAL、GAL等相比,CPLD/FPGA的规模比较大,可以替代几十甚至几千块通用IC芯片。这样的CPLD/FPGA实际上就是一个子系统部件。这种芯片受到世界各地电子工程设计人员的广泛关注和普遍欢迎。经过了十几年的发展,许多公司都开发出了多种可编程逻辑器件。比较典型的就是Xilinx公司的FPGA器件系列和Altera公司的CPLD器件系列,它们开发较早,占据了较大的PLD市场。通常来说,在欧洲用Xilinx公司产品的人多,在亚太地区用Altera公司产品的人多,在美国则是平分秋色。全球CPLD/FPGA产品60%以上是由Altera公司和Xilinx公司提供的。可以说,Altera公司和Xilinx公司共同决定了PLD技术的发展方向。当然,还有许多其他类型的器件,如:Lattice、Vantis、Actel、Quicklogic和Lucent公司的产品等。
尽管CPLD、FPGA和其他类型PLD的结构各有其特点和长处,但概括起来,它们是由3大部分组成的,即一个二维的逻辑块阵列(构成PLD器件的逻辑组成核心);输入/输出块;连接逻辑块的连线资源。连线资源由各种长度的连线线段组成,其中也有一些可编程的连接开关,它们用于逻辑块之间、逻辑块与输入/输出块之间的连接。典型的PLD的框图如图1-2所示。对用户而言,CPLD与FPGA的内部结构稍有不同,但用法一样,因此在多数情况下,可不加以区分。
图1-2 典型的PLD的框图
CPLD/FPGA芯片都是特殊的ASIC芯片,它们除了具有ASIC的特点之外,还具有以下几个优点。
1)随着超大规模集成电路(Very Large Scale IC,VLSI)工艺的不断提高,单一芯片内部可以容纳上百万个晶体管,CPLD/FPGA芯片的规模也越来越大,其单片逻辑门数已达到上百万门,它所能实现的功能也越来越强,同时也可以实现系统集成。
2)CPLD/FPGA芯片在出厂之前都做过百分之百的测试,设计人员只需在自己的实验室里就可以通过相关的软硬件环境来完成芯片的最终功能设计。因此,CPLD/FPGA的资金投入小,节省了许多潜在的成本。
3)用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同软件实现不同的功能。因此,用CPLD/FPGA试制样片,能以最快的速度占领市场。CPLD/FPGA软件包中有各种输入工具、仿真工具、版图设计工具和编程器等产品,电路设计人员在很短的时间内就可完成电路的输入、编译、优化及仿真,直至最后芯片的制作。当电路有少量改动时,更能显示出CPLD/FPGA的优势。当电路设计人员使用CPLD/FPGA进行电路设计时,不需要具备专门的IC深层次的知识。CPLD/FPGA软件易学易用,可以使设计人员更能集中精力进行电路设计,快速将产品推向市场。
微课1-2
CPLD FPGA的结构与原理
1.基于乘积项(Product-Term)的PLD结构
采用基于乘积项结构的PLD芯片有:Altera公司的MAX7000、MAX3000系列(E 2 PROM工艺),Xilinx公司的XC9500系列(Flash工艺)和Lattice、Cypress公司的大部分产品(E 2 PROM工艺)。
基于乘积项的PLD总体内部结构如图1-3所示(以MAX7000为例,其他型号的结构与此非常相似)。
图1-3 基于乘积项的PLD总体内部结构
这种PLD可分为3块结构,即宏单元(Macrocell)、可编程连线(Programmable Interface Adapter,PIA)和I/O脚控制块。宏单元是PLD的基本结构,由它来实现基本的逻辑功能。图中只给出了4个宏单元的集合(因为宏单元较多,故没有一一画出)。可编程连线负责信号传递,连接所有的宏单元。I/O脚控制块负责输入/输出的电气特性控制,比如可以设定集电极开路输出、摆率控制及三态输出等。图中左上的INPUT/GCLK1(全局时钟信号),INPUT/GCLRn(清零信号),INPUT/OE1和INPUT/OE2(输出使能信号)有专用连线与PLD中每个宏单元相连,信号到每个宏单元的延时相同并且延时最短。宏单元的具体结构如图1-4所示。
图1-4 宏单元的具体结构
左侧是乘积项阵列,实际就是一个与或阵列,每一个交叉点都是一个可编程熔丝,如果导通,就实现“与”逻辑。后面的乘积项选择矩阵是一个“或”阵列。两者一起完成组合逻辑。右侧是一个可编程D触发器,它的时钟信号、清零信号输入都可以编程选择,可以使用专用的全局清零和全局时钟,也可以使用内部逻辑(乘积项阵列)产生的时钟和清零。如果不需要触发器,也可以将此触发器旁路,信号就直接输出给PIA或I/O脚。
下面以一个简单的电路为例,具体说明PLD是如何利用以上结构实现逻辑的,组合逻辑如图1-5所示。
图1-5 组合逻辑
【例1-1】 假设组合逻辑的输出(AND3的输出)为f,则f=(A+B)*C*(!D)=A*C*!D+B*C*!D。请用PLD实现此功能。
解:PLD实现组合逻辑f的方式如图1-6所示。
图1-6 实现组合逻辑f
A、B、C、D由PLD芯片的引脚输入后进入可编程连线阵列(PIA),在内部会产生A、
、B、
、C、
、D、
共8个输出。图中每一个叉表示相连(可编程熔丝导通),所以得到:f=f1+f2=A*C*!D+B*C*!D。这样组合逻辑就实现了。在AND3的输出电路中,D触发器的实现比较简单,直接利用宏单元中的可编程D触发器即可。时钟信号CLK由I/O脚输入后进入芯片内部的全局时钟专用通道,直接连接到可编程触发器的时钟端。可编程触发器的输出与I/O脚相连,把结果输出到芯片引脚。这样,PLD就完成了以上电路的功能(这些步骤都是由软件自动完成的,不需要人为干预)。
图1-6中的电路是一个很简单的例子,只需要一个宏单元就可以完成。但对于一个复杂的电路,一个宏单元是不能实现的,这时就需要通过并联扩展项和共享扩展项将多个宏单元相连,宏单元的输出也可以连接到可编程连线阵列,再作为另一个宏单元的输入。这样,PLD就可以实现更复杂的逻辑功能。这种基于乘积项的PLD基本都是由E 2 PROM和Flash工艺制造的,一上电就可以工作,无须其他芯片配合。
2.查找表(Look-Up-Table,LUT)的原理与结构
也可以将采用基于乘积项结构的PLD芯片称为FPGA,如Altera公司的ACEX、APEX系列,Xilinx公司的Spartan、Virtex系列等。
查找表本质上就是一个RAM。目前FPGA中多使用4输入的LUT,因此可以把每一个LUT看成一个有4位地址线的16×1的RAM。在用户通过原理图或HDL语言描述了一个逻辑电路后,PLD/FPGA会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。表1-2为一个4输入与门的例子。
表1-2 一个4输入与门的例子
(1)基于查找表的FPGA结构
Xilinx Spartan-Ⅱ的内部结构如图1-7所示。
图1-7 Xilinx Spartan-Ⅱ的内部结构
Spartan-Ⅱ主要包括CLBs、I/O块、RAM块和可编程连线(未表示出)。在Spartan-Ⅱ中,一个CLB包括两个Slice(Slice是XilinX元器件的基本逻辑单元),每个Slice包括两个LUT、两个触发器和相关逻辑。Slice可以看成是Spartan-Ⅱ实现逻辑的最基本结构。
Altera公司的FLEX/ACEX等芯片的结构如图1-8所示。Altera FLEX/ACEX芯片的内部结构如图1-9所示。
图1-8 FLEX/ACEX等芯片的结构
图1-9 Altera FLEX/ACEX芯片的内部结构
FLEX/ACEX主要包括LAB、I/O块、RAM块(未表示出)和可编程行/列连线。在FLEX/ACEX中,一个LAB包括8个逻辑单元(LE),每个LE包括一个LUT、一个触发器和相关的逻辑关系。LE是FLEX/ACEX芯片实现逻辑的最基本结构。
(2)查找表结构的FPGA逻辑实现原理
此处还是以图1-5这个电路为例来解释查找表结构的FPGA逻辑实现原理。
图1-5中,A、B、C、D由FPGA芯片的引脚输入后进入可编程连线,然后作为地址线连到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,这样组合逻辑就实现了。该电路中D触发器功能是直接利用LUT后面的D触发器来实现的。时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。触发器的输出与I/O脚相连,把结果输出到芯片引脚。这样,PLD就完成了图中的电路功能。
这个电路是一个很简单的例子,只需要一个LUT加上一个触发器就可以完成。对于一个LUT无法完成的电路,在通过进位逻辑将多个单元相连后,FPGA就可以实现复杂的逻辑功能。
LUT主要适合SRAM工艺生产,目前大部分FPGA都是基于SRAM工艺的,而SRAM工艺的芯片在掉电后信息就会丢失,因此,一定需要外加一片专用配置芯片。在上电的时候,由这个专用配置芯片把数据加载到FPGA中,然后FPGA就可以正常工作了。由于配置时间很短,不会影响系统正常工作。也有少数FPGA采用反熔丝或Flash工艺,对这种FPGA来讲,就不需要外加专用的配置芯片。
微课1-3
CPLD与FPGA区别
随着技术的发展,在2004年以后,一些厂家推出了一些新的PLD和FPGA,这些产品模糊了PLD和FPGA的区别。例如,Altera公司的MAXⅡ系列PLD,这是一种基于查找表结构、集成配置芯片的PLD,在本质上它就是一种在内部集成了配置芯片的FPGA,但由于配置时间极短,上电就可以工作,所以对用户来说,感觉不到配置过程,可以像传统的PLD一样使用,加上容量与传统PLD类似,所以Altera公司把它归作PLD。还有Lattice公司的XP系列FPGA,也是采用了同样的原理,将外部配置芯片集成到内部,在使用方法上和PLD类似,但是因为容量大,性能和传统FPGA相同,也是LUT结构,所以Lattice公司仍把它归为FPGA。
尽管FPGA和CPLD都是可编程ASIC器件,有很多共同点,但由于CPLD和FPGA结构上的差异,具有各自的特点。
1)CPLD适合完成各种算法和组合逻辑,FPGA适合完成时序逻辑。换句话说,FPGA适合触发器丰富的结构,而CPLD适合触发器有限而乘积项丰富的结构。
2)CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。
3)在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FPGA可在逻辑门上编程,而CPLD是在逻辑块上编程。
4)FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。
5)CPLD比FPGA使用起来更方便。CPLD的编程采用E 2 PROM或FASTFLASH技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,使用方法复杂。
6)CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。
7)在编程方式上,CPLD主要是基于E 2 PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。CPLD又可分为在编程器上编程和在系统编程两类。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。
8)CPLD保密性好,FPGA保密性差。
过去由于受到CPLD密度的限制,数字器件设计人员只好转向FPGA和ASIC。但随着CPLD密度的提高,具时序可预测和速度高等优点,使得数字器件设计人员在进行大型设计时,既灵活又容易,而且产品可以很快进入市场,现在,设计人员可以体会到密度高达数十万门的CPLD所带来的好处,所以,本书选用CPLD为主控器件进行介绍。
一、单选题
1.在下列器件中,不属于可编程逻辑器件的是( )。
A.CPLD
B.FPGA
C.EPLD
D.SRAM
2.现场可编程门阵列的英文简称是( )。
A.FPGA
B.EPLD
C.PLD
D.PAL
3.大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是( )。
A.CPLD是基于查找表结构的可编程逻辑器件
B.CPLD是现场可编程逻辑器件的英文简称
C.早期的CPLD是从FPGA结构扩展而来的
D.早期的CPLD是从GAL结构扩展而来的
4.大规模可编程器件主要有FPGA、CPLD两类,其中CPLD通过( )实现其逻辑功能。
A.可编程乘积项逻辑
B.查找表(LUT)
C.输入缓冲
D.输出缓冲
二、填空题
1.可编程逻辑器件的业界三巨头是ALTERA、__________和Lattice。
2.__________是PLD的基本结构,由它来实现基本的逻辑功能。
3.可编程逻辑器件从结构上分类,简单PLD和CPLD属于__________结构,FPGA属于结构。
三、判断题
1.现场可编程门阵列(FPGA)是可编程逻辑器件,复杂可编程逻辑器件(CPLD)不是可编程逻辑器件。( )
2.Altera公司的MAX7000系列属于FPGA结构。( )
3.FPGA分解组合逻辑的功能很强,一个宏单元就可以分解十几个甚至20~30多个组合逻辑输入。( )
4.CPLD适合完成各种算法和组合逻辑,FPGA适合完成时序逻辑。( )