《数字电路与系统设计课件5.ppt》由会员分享,可在线阅读,更多相关《数字电路与系统设计课件5.ppt(146页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第5章 可编程逻辑器件第第5 5章章 可编程逻辑器件可编程逻辑器件5.1 可编程逻辑器件概述可编程逻辑器件概述5.2 简单可编程逻辑器件简单可编程逻辑器件5.3 高密度可编程逻辑器件高密度可编程逻辑器件HDPLD5.4 PLD 的编程与测试的编程与测试第5章 可编程逻辑器件 在数字系统的设计中,主要有三类基本器件可供选用,它们是:中、小规模标准逻辑模块,如在前面章节中介绍的74系列及其改进系列、CD4000系列、74HC系列等。微处理器(Microprocessor)。专用集成电路ASIC(Application Specific Integrated Circuit)。第5章 可编程逻辑器件
2、5.1 可编程逻辑器件概述可编程逻辑器件概述5.1.1 PLD的发展简史的发展简史 20世纪70年代,熔丝编程的PROM(Programmable Read Only Memory)和PLA(Programmable Logic Array)是最早出现的可编程逻辑器件。20世纪70年代末,AMD公司推出了PAL(Programmable Array Logic)器件。20世纪80年代初,Lattice公司首先生产出了可电擦写的、比PAL使用更灵活的GAL(Generic Array Logic)器件。第5章 可编程逻辑器件 20世纪80年代中期,Xilinx公司提出了现场可编程的概念,同时生产
3、出了世界上第一片FPGA(Field Programmable Gate Array)器件。同一时期,Altera公司推出了EPLD(Erasable PLD),它比GAL具有更高的集成度,可以用紫外线或电擦除。20世纪80年代末,Lattice公司又提出了在系统可编程ISP(InSystem Programmability)的概念,并推出了一系列具有在系统可编程能力的CPLD(Complex PLD)器件。此后,其它PLD生产厂家都相继采用了ISP技术。第5章 可编程逻辑器件 进入20世纪90年代后,可编程逻辑器件的发展十分迅速。主要表现为三个方面:一是规模越来越大;二是速度越来越高;三是电
4、路结构越来越灵活,电路资源更加丰富。目前已经有集成度在300万门以上、系统频率为100MHz以上的PLD供用户使用,在有些可编程逻辑器件中还集成了微处理器、数字信号处理单元和存储器等。这样,一个完整的数字系统甚至仅用一片可编程逻辑器件就可实现,即所谓的片上系统SOC(System On Chip)。第5章 可编程逻辑器件5.1.2 PLD的分类的分类 1 按集成度分类按集成度分类 集成度是集成电路一项很重要的指标,按照集成度可以将可编程逻辑器件分为两类:低密度可编程逻辑器件LDPLD(LowDensity PLD)。高密度可编程逻辑器件HDPLD(HighDensity PLD)。一般以芯片G
5、AL22V10的容量来区分LDPLD和HDPLD。不同制造厂家生产的GAL22V10的密度略有差别,大致在500750门之间。如果按照这个标准,PROM、PLA、PAL和GAL器件属于LDPLD,EPLD、CPLD和FPGA器件则属于HDPLD。第5章 可编程逻辑器件 2 按基本结构分类按基本结构分类 目前常用的可编程逻辑器件都是从与-或阵列和门阵列两种基本结构发展起来的,所以可以从结构上将其分成两大类器件:PLD器件和FPGA器件。这种分类方法将基本结构为与-或阵列的器件称为PLD器件,将基本结构为门阵列的器件称为FPGA器件。LDPLD(PROM、PLA、PAL、GAL)、EPLD、CPL
6、D的基本结构都是与-或阵列,FPGA则是一种门阵列结构。第5章 可编程逻辑器件 3 按编程工艺分类按编程工艺分类 所谓编程工艺,是指在可编程逻辑器件中可编程元件的类型。按照这个标准,可编程逻辑器件又可分成五类:熔丝(Fuse)或反熔丝(AntiFuse)编程器件。PROM、Xilinx的XC8100系列FPGA和Actel的FPGA等采用熔丝或反熔丝作为编程元件。UVEPROM编程器件,即紫外线擦除/电气编程器件。Altera的Classic系列和MAX5000系列EPLD采用的就是这种编程工艺。第5章 可编程逻辑器件 E2PROM编程器件,即电可擦写编程器件。Altera的MAX7000系列
7、和MAX9000系列以及Lattice的GAL器件、ispLSI系列CPLD都属于这一类器件。Flash Memory(闪速存储器)编程器件。Atmel的部分低密度PLD、Xilinx的XC9500系列CPLD采用这种编程工艺。SRAM编程器件。如:Xilinx的FPGA(除XC8100系列)和Altera的FPGA(FLEX系列、APEX系列)均采用这种编程工艺。第5章 可编程逻辑器件 对于第类可编程逻辑器件,它们在编程后,编程数据就保持在器件上,故将它们称为非易失性器件;而对于第类可编程逻辑器件,存储在SRAM中的配置数据在掉电后会丢失,在每次上电后都要重新进行配置,因此将这类器件称为易失
8、性器件。由于熔丝或反熔丝编程器件只能编程一次,所以又将这类器件称为一次性编程器件,即OTP(One Time Programmable)器件,其它各类器件均可以多次编程。第5章 可编程逻辑器件 除以上三种分类方法外,可编程逻辑器件还有其它的一些分类方法。如:按照制造工艺,可分为双极型和MOS型;还有人把可编程逻辑器件分为简单可编程逻辑器件SPLD(Simple PLD)和复杂可编程逻辑器件CPLD,将FPGA也归于CPLD中。原则上,各种分类方法之间是相互联系、并行不悖的。在各类可编程逻辑器件中,目前大量生产和广泛应用的是以CPLD和FPGA为代表的HDPLD,它们都采用CMOS制造工艺,编程
9、工艺大多采用SRAM或E2PROM。第5章 可编程逻辑器件5.1.3 PLD电路的表示方法电路的表示方法1 PLD连接的表示法连接的表示法图 5-1 PLD连接的表示方法(a)固定连接;(b)编程连接;(c)不连接第5章 可编程逻辑器件2 基本逻辑门的基本逻辑门的PLD表示法表示法1)缓冲器图 5-2 基本逻辑门的PLD表示法第5章 可编程逻辑器件 2)与门 图5-2(d)表示的是一个三输入的与门,根据连接关系可知,与门输出P=AC;当一个与门的所有输入变量都连接时,可以像图5-2(e)那样表示,这时,P=ABC。3)或门 图52(f)表示的是一个三输入的或门,或门输出P=ABC。第5章 可编
10、程逻辑器件 4)与-或阵列图 与-或阵列是用多个与门和或门构成的一种阵列结构,原则上任意组合逻辑电路都可以表示成与-或阵列的形式。图53(a)清楚地表明了一个不可编程的与阵列和一个可编程的或阵列。不难写出输出变量的逻辑表达式为:F1(A,B)=m(0,1,3)F2(A,B)=m(0,2,3)有时为了方便,可以将阵列中的逻辑门省略掉,简化成图5-3(b)的形式。第5章 可编程逻辑器件图 5-3 与-或阵列图第5章 可编程逻辑器件5.2 简单可编程逻辑器件简单可编程逻辑器件SPLD图 5-4 SPLD的基本结构第5章 可编程逻辑器件 电路由输入电路、与阵列、或阵列和输出电路四部分组成。其中,与阵列
11、和或阵列是PLD的主体部分,逻辑函数主要靠它们来实现。与阵列的每一个输入端(包括内部反馈输入)都有输入缓冲电路,从而使输入信号具有足够的驱动能力,并且产生原变量和反变量两个互补信号;有些PLD的输入电路还含有锁存器,甚至是一些可以组态的输入宏单元(Micro Cell),可以实现对输入信号的预处理。PLD有多种输出方式,可以由或阵列直接输出(组合方式),也可以通过寄存器输出(时序方式);输出可以是高电平有效,也可以是低电平有效;无论采用哪种输出方式,输出信号一般最后都是经过三态(TS)结构或集电极开路(OC)结构的输出缓冲器送到PLD的输出引脚;输出信号还可以通过内部通路反馈到与阵列的输入端。
12、较新的PLD都将输出电路做成了输出宏单元,使用者可根据需要方便地通过编程选择各种输出方式。第5章 可编程逻辑器件 众所周知,任何组合逻辑函数都可以写成“与-或”表达式,从而用“与门-或门”这种二级电路来实现;而任何时序电路又都是由组合电路加上存储器件(触发器)构成的。因此SPLD的这种结构对实现数字电路具有普遍意义。依据可编程的电路资源,SPLD又可分成PROM、PLA、PAL和GAL四种,它们的结构特点如表5-1所示。第5章 可编程逻辑器件表表5-1 四种四种SPLD的结构特点的结构特点器件名与阵列或阵列输出电路PROM固定可编程固定PLA可编程可编程固定PAL可编程固定固定GAL可编程固定
13、可编程第5章 可编程逻辑器件5.2.1 只读存储器只读存储器ROM 1 ROM的结构的结构 ROM的主体是一个不可编程的与阵列和一个可编程的或阵列,如图5-(a)所示。图中,An-1A0是n个输入变量,经与阵列后产生由n个输入变量构成的2n个不同的最小项m2n1m0,Fm1F0是对或阵列编程后产生的m个输出函数。ROM的输出电路是三态结构或OC结构的输出缓冲器。第5章 可编程逻辑器件图 5-5 ROM的电路结构(a)与-或阵列结构图;(b)存储器结构图第5章 可编程逻辑器件图 5-5 ROM的电路结构(a)与-或阵列结构图;(b)存储器结构图第5章 可编程逻辑器件图 5-6 ROM结构图(a)
14、与-或阵列结构图;(b)存储器示意图第5章 可编程逻辑器件图 5-6 ROM结构图(a)与-或阵列结构图;(b)存储器示意图第5章 可编程逻辑器件 任何组合逻辑函数都可以写成最小项之积的标准形式。因此,只要合理地对或阵列进行编程,ROM的这种结构可以实现任意n个输入变量的m个函数,所以ROM是一种可编程逻辑器件。例如,图5-(a)给出的是一个22(2个输入)2(2个输出)ROM在对其或阵列编程后的阵列图,不难看出:显然,该ROM实现了2个2变量的逻辑函数,第5章 可编程逻辑器件 如果从存储器的角度观察ROM的电路结构,将图5-(a)所示的ROM的输入变量A1、A0看作地址,不难发现ROM中的与
15、阵列实际上是一个高电平输出有效的地址全译码器。当地址A1A0=01时,m1有效,输出F1F0=10;同理,当地址A1A0分别等于00、10和11时,读出的内容为11、01和11。由此看来,ROM中的或阵列又可以被看作一个存储阵列,m0m3是存储阵列的字线,F1、F0是存储阵列的位线。所以,ROM的电路结构又可以被表示成5-(b)所示的形式。一般用存储阵列所能够存储的二进制信息的位数2nm(字线与位线的乘积)来表示ROM的存储容量,它也恰好等同于作为PLD的与门数和或门数的乘积。第5章 可编程逻辑器件 2 ROM的分类的分类 从制造工艺上可以将ROM分成双极型和MOS型,鉴于MOS型电路(尤其是
16、CMOS电路)具有功耗低、集成度高的优点,所以目前大容量的ROM都是采用MOS工艺制造的。另外,从编程工艺和擦除方法上又可以将ROM分为:固定只读存储器、可编程只读存储器PROM(Programmable Read Only Memory)、紫外线擦除可编程只读存储器UVEPROM(UltraViolet Erasable Programmable Read Only Memory)、电擦除可编程只读存储器E2PROM(Electric Erasable Programmable Read Only Memory)和闪速存储器(Flash Memory)。第5章 可编程逻辑器件 1)固定只读存
17、储器 固定ROM又称为掩膜ROM,一般简称为ROM。在这种ROM的制造过程中,生产者通过最后一道工序掩膜,将用户要求的数据“写入”存储器,因而有时也将这种方法称为掩膜编程。掩膜ROM中的数据在出厂后再也不能被修改,对用户而言掩膜ROM是不可编程的,一般用来作为字符发生器,或者用来存储数学用表(如三角函数表、指数函数表等)以及一些很成熟且用量很大的通用程序。ROM中的存储单元可以是二极管,也可以是双极型三极管或MOS管。第5章 可编程逻辑器件 图5-是一个44位二极管ROM电路的示意图。电路中,地址译码器输出高电平有效,它的存储单元使用二极管构成,字线与位线交叉点上接有二极管表示该位存储“1”,
18、无二极管表示该位存储“0”。显然该电路表示固定存储了4个字,每个字有4位,它们分别是1010、1001、0101和1111。第5章 可编程逻辑器件图 5-7 44位二极管ROM第5章 可编程逻辑器件 在图5存储阵列中,用N沟道增强型MOS管代替了图5中的二极管。字线与位线交叉点上接有MOS管表示该位存储“1”,无MOS管表示该位存储“0”。假设经过地址译码后,W0W3中的某一位字线为高电平,则使得与这根字线相连的MOS管导通,并使与这些MOS管漏极相连的位线为低电平,经输出缓冲器反相后,输出为1。图5-存储的内容与图5-的相同。第5章 可编程逻辑器件图 5-8 44位MOS管ROM第5章 可编
19、程逻辑器件2)可编程只读存储器(PROM)图 5-9 44位二极管PROM存储阵列第5章 可编程逻辑器件 为了克服熔丝的缺点,又出现了反熔丝,它通过击穿介质达到连通线路的目的。Actel公司的可编程低阻电路元件PLICE(Programmable Low Impedance Circuit Element)反熔丝的结构如图510所示,PLICE反熔丝是位于n+扩散和多晶硅之间的介质,是和CMOS以及其它工艺(如双极型、BiMOS等)相兼容的。在未编程状态下,反熔丝呈现十分高的阻抗(100 M);当18 V的编程电压加在其上时,介质被击穿,两层导电材料连在一起,接通电阻小于1 k。反熔丝占用的硅
20、片面积非常小,十分适宜于作集成度很高的可编程器件的编程元件。第5章 可编程逻辑器件图 5-10 PLICE反熔丝结构图第5章 可编程逻辑器件 3)可擦除可编程只读存储器(EPROM)EPROM包括UVEPROM、E2PROM和Flash Memory,它们与前面讲过的PROM在结构上并无太大区别,只是采用了不同的存储元件和编程工艺。UVEPROM通常简称为EPROM,它采用叠栅注入MOS管(Stackedgate Injection MetalOxideSemiconductor,即SIMOS管),其结构示意图和符号如图5-11(a)、(b)所示。第5章 可编程逻辑器件图 5-11 SIMOS
21、管的结构、符号及其构成的存储单元(a)SIMOS管的结构;(b)SIMOS管的符号;(c)存储单元第5章 可编程逻辑器件 SIMOS管本身是一个N沟道增强型MOS管,与普通MOS管的区别在于它有两个重叠的栅极控制栅Gc和浮栅Gf。上面的控制栅用于控制读/写操作;下面的浮栅被包围在绝缘材料SiO2中,用于长期保存注入的电荷。当浮栅上没有电荷时,给控制栅加上正常的高电平(由字线输入)能够使MOS管导通;而在浮栅上注入负电荷以后,则衬底表面感应的是正电荷,这使得MOS管的开启电压变高,正常的高电平不会使MOS管导通。由此可见,PROM是利用SIMOS管的浮栅上有无负电荷来存储二进制数据的,有负电荷表
22、示存储的是1,无负电荷表示存储的是0,如图5-11(c)所示。第5章 可编程逻辑器件 在写入数据之前,浮栅上都是不带电荷的,相当于存储的信息全部为0。在写入数据时,用户通过编程器在SIMOS管的漏极源极间加以较高的电压(2025 V),使之发生雪崩击穿现象。如果此时再在控制栅上加以高压脉冲,就会有一些电子在高压电场的作用下穿过SiO2层,被浮栅俘获,从而实现了电荷注入,也就是向存储单元写入了1。在断电后,浮栅上的电子没有放电回路,所以信息可以长久保存。第5章 可编程逻辑器件 在紫外线的照射下,SiO2层中会产生电子-空穴对,为浮栅上的电荷提供放电通路,使之放电,这个过程称为擦除。擦除时间大约为
23、2030分钟,在所有的数据都被擦除后又可以重新写入数据。UVEPROM器件外壳上的玻璃窗就是为紫外线擦除数据而设置的。在编程完毕后,通常用不透明的胶带将玻璃窗遮住,以防数据丢失。第5章 可编程逻辑器件 E2PROM和Flash Memory采用的也是浮栅编程工艺,用MOS管的浮栅上有无电荷来表示存储信息,只不过构成它们的存储单元的MOS管的结构略有区别。E2PROM和Flash Memory不但可以用编程器反复编程,而且还可以用电擦除,这大大提高了擦除速度。E2PROM中数据的擦除和写入是同时进行的,以字为单位,一个字的改写时间一般为ms级;Flash Memory的擦除和读写速度更快,数据的
24、擦除和写入是分开进行的,擦除方式类似UVEPROM那样整片擦除或分块擦除。第5章 可编程逻辑器件 3 ROM在组合逻辑设计中的应用在组合逻辑设计中的应用 【例5-1】用适当容量的PROM实现22快速乘法器。解解 22快速乘法器的输入是两个2位二进制数,输出的结果是4位二进制数。可以设被乘数为(A1A0)2,乘数为(B1B0)2,则(A1A0)2(B1B0)2 =(D3D2D1D0)2。只要将A1A0B1B0按顺序作为PROM的地址,把它们的乘积存放在相应的存储单元,即可实现两个2位二进制数的快速乘法。PROM的PLD阵列图如图5-12所示,它的容量为164位。如果要实现mn快速乘法器,PROM
25、的容量至少为2m+n(mn)位。第5章 可编程逻辑器件图 5-11 用PROM实现22快速乘法器第5章 可编程逻辑器件 用可编程ROM来实现组合逻辑函数的最大不足之处在于对芯片的利用率不高,这是因为ROM中的与阵列是一个固定的全译码阵列,每一个乘积项都是一个最小项,只能实现组合逻辑函数的最小项表达式,不能进行化简,而且实际上大多数的组合逻辑函数也并不需要所有的最小项。因此,ROM在绝大多数场合还是被作为存储器使用。第5章 可编程逻辑器件5.2.2 可编程逻辑阵列可编程逻辑阵列PLA 1 PLA的结构的结构 为了提高对芯片的利用率,在PROM的基础上又开发出了一种与阵列、或阵列都可以编程的PLD
26、可编程逻辑阵列PLA。这样,与阵列输出的乘积项不必一定是最小项,在采用PLA实现组合逻辑函数时可以运用逻辑函数经过化简后的最简与-或式;而且与阵列输出的乘积项的个数也可以小于2n(n为输入变量的个数),从而减小了与阵列的规模。第5章 可编程逻辑器件 PLA的规模通常用输入变量数、乘积项的个数和或阵列输出信号数这三者的乘积来表示。例如一个16488的PLA,就表示它有16个输入变量,与阵列可以产生48个乘积项,或阵列有8个输出端。按照输出方式,PLA可以分成两类:一类PLA以时序方式输出,在这类PLA的输出电路中除了输出缓冲器以外还有触发器,适用于实现时序逻辑,称为时序逻辑PLA;另一类PLA以
27、组合方式输出,在这类PLA中不含有触发器,适用于实现组合逻辑,称为组合逻辑PLA。PLA的输出电路一般是不可编程的,但有些型号的PLA器件在每一个或门的输出端增加了一个可编程的异或门,以便于对输出信号的极性进行控制,如图514所示。当编程单元为1时,或阵列输出S与经过异或门以后的输出Y同相;当编程单元为0时,S与Y反相。第5章 可编程逻辑器件图 5-14 PLA的异或输出结构第5章 可编程逻辑器件2 PLA的应用的应用 【例5-3】试用组合逻辑PLA实现从四位自然二进制代码到格雷码的转换。解解 四位自然二进制代码转换为格雷码的真值表如表5-2所示。第5章 可编程逻辑器件表表5-2 四位自然二进
28、制代码和格雷码的转换表四位自然二进制代码和格雷码的转换表第5章 可编程逻辑器件 采用PLA实现组合逻辑函数时,必须先对逻辑函数进行化简,以提高对芯片的利用率。对多输出逻辑函数进行化简时要注意合理使用逻辑函数之间的公共项,使乘积项的总数最小。经过逻辑函数化简,可以得到第5章 可编程逻辑器件图 5-15 例53的PLA阵列第5章 可编程逻辑器件5.2.3 可编程阵列逻辑可编程阵列逻辑PAL 可编程阵列逻辑PAL的主要部分仍然是与-或阵列,其中与阵列可根据需要进行编程,一般采用熔丝编程工艺,而或阵列是固定的。与阵列的可编程性保证了与门输入变量的灵活性,而或阵列固定使器件得以简化,进一步提高了对芯片的
29、利用率。与PLA相比,PAL是一种更加有效的PLD结构,它被后来发展起来的许多PLD所采用。第5章 可编程逻辑器件 PAL器件的输出电路一般是不可编程的,为了扩展器件的功能并增加使用的灵活性,在不同型号的PAL中采用了不同结构的输出电路,这些结构主要有以下几类。第5章 可编程逻辑器件 1)专用输出结构 专用输出结构的共同特点是输出端只能用作输出信号,因为下面将会看到在另外一种输出结构中,输出端在一定条件下可以作为输入使用。专用输出结构的PAL中不含有触发器,只能用来实现组合电路,其输出电路是一个或门,或者是一个或非门,还有的PAL采用互补输出的或门。图5-19所示为一个采用或非门的专用输出结构
30、。第5章 可编程逻辑器件图 5-19 PAL的专用输出结构第5章 可编程逻辑器件 2)可编程可编程I/O(输入(输入/输出)结构输出)结构 在可编程I/O结构中,器件端口的工作状态(输入或者输出)是可以控制的。图5-20所示的是一个可编程I/O结构的输出电路,它包括一个三态输出缓冲器和一个将端口上的信号送到与阵列上的互补输出缓冲器。不难发现,三态输出缓冲器的使能信号来自于与阵列的输出,是可编程的。在图520所示的编程情况下,当I1=I0=0时,使能信号OE=1,端口处于输出状态;否则,OE=0,三态缓冲器输出为高阻抗,端口处于输入状态。第5章 可编程逻辑器件图 5-20 PAL的可编程I/O结
31、构第5章 可编程逻辑器件 在有些可编程I/O结构的PAL中,在或阵列与输出缓冲器之间还设有图5-14中所示的可编程异或门,这样就可以通过编程来控制输出信号的极性。目前具有可编程I/O结构的PAL主要有PAL16L8、PAL20L10等。第5章 可编程逻辑器件3)寄存器输出结构 可以用来实现时序逻辑电路图 5-21 PAL的寄存器输出结构第5章 可编程逻辑器件 4)异或输出结构 图5-22所示的输出结构与寄存器输出结构类似,只不过在或阵列输出与触发器之间又设置了异或门,这种结构被称为异或输出结构。属于异或输出结构的PAL主要有PAL20X4、PAL20X8、PAL20X10等。图图 5-22 P
32、AL的异或输出结构的异或输出结构第5章 可编程逻辑器件 与SSI、MSI标准产品相比,PAL的出现提高了设计的灵活性,有效减少了设计所用器件的数量。通常一片PAL可代替412片SSI或24片MSI。但是PAL一般采用熔丝编程工艺,只能编程一次,所以使用者仍要承担一定的风险;另外由于不同型号的芯片的输出结构各不相同,这也给使用者在选择器件时带来一些不便。一般而言,PAL只能用来实现一些规模不大的组合电路和简单的时序电路(如计数器、移位寄存器等)。第5章 可编程逻辑器件5.2.4 通用阵列逻辑通用阵列逻辑GAL 通用阵列逻辑GAL是在PAL的基础上发展起来的,它继承了PAL的与-或阵列结构,与PA
33、L完全兼容。它与PAL最大的不同是用输出逻辑宏单元OLMC取代了或门和输出电路,可以通过编程将OLMC组态成多种输出结构,大大增强了芯片的通用性和灵活性。另外,GAL采用E2PROM编程工艺,可以用电擦除并重复编程。GAL器件的命名规则与PAL相同,GAL22V10中的22表示与阵列的输入变量数,10表示输出端的个数,V则是输出方式可以改变的意思。目前常见的GAL器件主要有GAL16V8、GAL20V8、GAL22V10、GAL39V8和ispGAL16Z8等,其中GAL39V8中的或阵列也可编程,对ispGAL16Z8编程时则不需要专门的编程器,可在系统编程。第5章 可编程逻辑器件 1 GA
34、L的基本结构的基本结构 图5-23是GAL16V8的电路结构图。它主要由5部分组成:8个输入缓冲器(引脚29作为固定输入端口);8个三态结构的输出缓冲器(引脚1219作为I/O端口);8个OLMC(OLMC12OLMC19);与阵列和OLMC之间的8个反馈缓冲器;一个规模为3264位的可编程与阵列,它共有32个输入和64个乘积项,这64个乘积项平均分配给8个OLMC。第5章 可编程逻辑器件图 5-23 GAL16V8的电路结构图第5章 可编程逻辑器件 除了以上5个部分以外,GAL16V8还有一个专用时钟输入端CK(引脚1)、全局输出使能信号OE输入端(引脚11)、一个工作电源端UCC(引脚20
35、,一般UCC=5 V)和一个接地端GND(引脚10)。在对GAL16V8进行编程时,需要用到以下几个引脚:引脚1为编程时钟输入端SCLK;引脚11为编程电压输入端PRLD;引脚9被作为编程数据串行输入端SDI;引脚12为编程数据串行输出端SDO;电源端UCC(引脚20)和接地端GND(引脚10)。第5章 可编程逻辑器件2 GAL编程单元的行地址映射图编程单元的行地址映射图 图5-24是GAL16V8的编程单元行地址映射图,它表明了在GAL16V8中编程单元的地址分配和功能划分。编程是逐行进行的。编程数据在编程系统的控制下串行输入到64位移位寄存器中,每装满一次就向编程单元写入一行数据。第031
36、行是与阵列的编程单元,每行有64位,编程后可以产生64个乘积项。第32行为芯片的电子标签,也有64位。用户可以在这里存放器件的编号、电路编号、编程日期、版本号等信息,以备查询。第5章 可编程逻辑器件 第3359行是生产厂家保留的空间,用户不能使用。第60行是一个82位的结构控制字,用于控制OLMC的工作模式和乘积项的禁止。第61行是一位加密单元,加密单元被编程后,与阵列中的编程数据不能被更改或读出,从而使设计成果得以保护。只有当整个芯片的编程数据被擦除时,加密单元才同时被擦除。但是电子标签不受加密单元的保护。第62行是一位保留位。第63行是一个整体擦除位,编程系统对这一位进行擦除将导致整个芯片
37、中所有的编程单元都被擦掉。第5章 可编程逻辑器件图 5-24 GAL16V8编程单元的地址分配第5章 可编程逻辑器件 3GAL的输出逻辑宏单元的输出逻辑宏单元OLMC图 5-25 GAL16V8的OLMC结构框图和结构控制字组成(a)OLMC结构框图;(b)结构控制字第5章 可编程逻辑器件图 5-25 GAL16V8的OLMC结构框图和结构控制字组成(a)OLMC结构框图;(b)结构控制字第5章 可编程逻辑器件 GAL器件的每一个输出端都有一个OLMC,OLMC被组态成哪一种输出结构取决于对结构控制字的编程。图525给出了GAL16V8的OLMC结构图和控制字示意图。由图525(a)可知,OL
38、MC主要包括以下四个部分。(1)一个8输入的或门:或门的7个输入是直接来自于与阵列输出的乘积项,第8个输入来自于乘积项数据选择器的输出。(2)一个可编程的异或门:通过对控制位XOR(n)(括号中的n是OLMC的编号)的编程,可改变输出信号的极性。当XOR(n)=0时,低电平输出有效;当XOR(n)=1时,高电平输出有效。第5章 可编程逻辑器件 (3)一个D触发器:D触发器用于实现时序逻辑的场合。(4)四个数据选择器:乘积项数据选择器(PTMUX)。它是一个二选一数据选择器,受控制位AC0和AC1(n)控制(AC0是所有OLMC公用的控制位)。当AC0=0或AC1(n)=0时,来自于与阵列的第8
39、个乘积项被接入到或门的第8个输入端;当AC0=AC1(n)=1时,接入到或门的第8个输入端的信号为0。第5章 可编程逻辑器件 输出数据选择器(OMUX)。它也是一个受控制位AC0和AC1(n)控制的二选一数据选择器。当AC0=0或AC1(n)=1时,该OLMC采用组合输出方式;当AC0=1且AC1(n)=0时,该OLMC为寄存器同步输出。三态数据选择器(STMUX)。它是一个受控制位AC0和AC1(n)控制的四选一数据选择器,用于选择输出三态缓冲器的使能信号。当AC0=AC1(n)=0时,选择UCC作为使能信号,输出三态缓冲器处于常通状态;当AC0=0且AC1(n)=1时,选择地电平作为使能信
40、号,输出三态缓冲器处于高阻状态,引脚作为输入引脚使用;当AC0=1且AC1(n)=0时,输出三态缓冲器受全局输出使能信号OE控制;当AC0=1且AC1(n)=1时,选择来自于与阵列的第8个乘积项作为使能信号。第5章 可编程逻辑器件 反馈数据选择器(FMUX)。它是一个受本单元控制位AC0、AC1(n)和相邻单元控制位AC1(m)控制的四选一数据选择器,用于选择由OLMC反馈回与阵列的信号。当AC0=AC1(m)=0时,反馈信号为0;当AC0=0且AC1(m)=1时,反馈信号为相邻OLMC的输出;当AC0=1且AC1(n)=0时,反馈信号取自本单元寄存器的 Q 端;当AC0=1且AC1(n)=1
41、时,反馈信号取自本单元的输出端。第5章 可编程逻辑器件 除了以上提到的控制位外,在GAL16V8中还有一个同步位SYN和64个乘积项禁止位。同步位SYN用于控制GAL是否有寄存器输出能力:当SYN=1时,GAL不具备寄存器输出能力;当SYN=0时,GAL具备寄存器输出能力。另外,在GAL16V8的OLMC19和OLMC12中,AC0和AC1(m)分别被SYN和SYN所代替。64个乘积项禁止位分别用于控制与阵列输出的64个乘积项。当某一个禁止位为0时,则相应的乘积项恒为0,表明在逻辑中不需要这个乘积项。第5章 可编程逻辑器件 根据以上所述,不难归纳出OLMC的4种工作模式(或组态):当AC0=0
42、且AC1(n)=0时,OLMC为专用组合输出模式,如图5-26(a)所示;当AC0=0且AC1(n)=1时,OLMC为专用输入模式,如图5-26(b)所示;当AC0=1且AC1(n)=0且SYN=0时,OLMC为寄存器输出模式,如图5-26(c)所示;当AC0=1且AC1(n)=1时,OLMC为组合输入/输出模式,如图5-26(d)所示。第5章 可编程逻辑器件图 5-26 OLMC的4种工作模式(a)专用组合输出;(b)专用输入;(c)寄存器输出;(d)组合输入/输出第5章 可编程逻辑器件 4 GAL器件的优、器件的优、缺点缺点 在SPLD中,GAL是应用最广泛的一种,它主要有以下一些优点:与
43、中、小规模标准器件相比,减少了设计中所用的芯片数量。由于引入了OLMC这种结构,提高了器件的通用性。由于采用E2PROM编程工艺,器件可以用电擦除并重复编程,编程次数一般都在100次以上,将设计风险降到最低。采用CMOS制造工艺,速度高、功耗小。第5章 可编程逻辑器件 具有上电复位和寄存器同步预置功能。上电后,GAL的内部电路会产生一个异步复位信号,将所有的寄存器都清0,使得器件在上电后处在一个确定的状态,有利于时序电路的设计。寄存器同步预置功能是指可以将寄存器预置成任何一个特定的状态,以实现对电路的100%测试。具有加密功能,可在一定程度上防止非法复制。第5章 可编程逻辑器件 但是GAL也有
44、明显的不足之处:电路的结构还不够灵活。例如,在GAL中,所有的寄存器的时钟端都连在一起,使用由外部引脚输入的统一时钟,这样单片GAL就不能实现异步时序电路。GAL仍属于低密度PLD器件,而且正是由于电路的规模较小,所以人们不需要读取编程信息,就可以通过测试等方法分析出某个GAL实现的逻辑功能,使得GAL可加密的优点不能完全发挥。事实上,目前市场上已有多种GAL解密软件。第5章 可编程逻辑器件5.3 高密度可编程逻辑器件高密度可编程逻辑器件HDPLD HDPLD包括EPLD、CPLD和FPGA三种,大致可以分为两类:一类是与标准门阵列结构类似的单元型HDPLDFPGA;另一类是基于与-或阵列结构
45、(或称为乘积项结构)的阵列扩展型HDPLDEPLD和CPLD,其中CPLD是EPLD的改进型器件。经过十几年的发展,目前市场上HDPLD产品型号繁多,电路结构也千差万别。其中最具有代表性的还是Xilinx公司的FPGA器件和Altera公司的CPLD器件,它们开发得较早,占据了大部分的PLD市场。当然还有其它许多著名厂商的器件,如:Lattice,Vantis,Actel,Quicklogic,Lucent等。第5章 可编程逻辑器件部分HDPLD产品及其主要性能如表5-3所示。表表5-3 部分部分HDPLD产品的性能表产品的性能表第5章 可编程逻辑器件5.3.1 复杂可编程逻辑器件复杂可编程逻
46、辑器件CPLD 目前生产CPLD的厂家有很多,各种型号的CPLD在结构上也都有各自的特点和长处,但概括起来,它们都是由三大部分组成的,即可编程逻辑块(构成CPLD的主体部分)、输入/输出块和可编程互连资源(用于逻辑块之间以及逻辑块与输入/输出块之间的连接),如图5-27所示。第5章 可编程逻辑器件图 5-27 CPLD的一般结构第5章 可编程逻辑器件 CPLD的这种结构是在GAL的基础上扩展、改进而成的,尽管它的规模比GAL大得多,功能也强得多,但它的主体部分可编程逻辑块仍然是基于乘积项(即:与-或阵列)的结构,因而将其称为阵列扩展型HDPLD。扩展的方法并不是简单地增大与阵列的规模,因为这样
47、做势必导致芯片的利用率下降和电路的传输时延增加,所以CPLD采用了分区结构,即将整个芯片划分成多个逻辑块和输入/输出块,每个逻辑块都有各自的与阵列、逻辑宏单元、输入和输出等,相当于一个独立的SPLD,再通过一定方式的全局性互连资源将这些SPLD和输入/输出块连接起来,构成更大规模的CPLD。简单地讲,CPLD就是将多个SPLD集成到一块芯片上,并通过可编程连线实现它们之间的连接。第5章 可编程逻辑器件 就编程工艺而言,多数的CPLD采用E2PROM编程工艺,也有采用Flash Memory编程工艺的。下面以Altera公司生产的MAX7000系列为例,介绍CPLD的电路结构及其工作原理。MAX
48、7000在Altera公司生产的CPLD中是速度最快的一个系列,包括MAX7000E、MAX7000S、MAX7000A三种器件,集成度为6005000个可用门、32256个宏单元和36155个可用I/O引脚。它采用CMOS制造工艺和E2PROM编程工艺,并可以进行在系统编程。第5章 可编程逻辑器件 图5-28所示为MAX7000A的电路结构,它主要由逻辑阵列块LAB(Logic Array Block)、I/O控制块和可编程互连阵列PIA(Programmable Interconnect Array)三个部分构成。另外,MAX7000A结构中还包括4个专用输入,它们既可以作为通用逻辑输入,
49、也可以作为高速的全局控制信号(1个时钟信号、1个清零信号和两个输出使能信号)。第5章 可编程逻辑器件图 5-28 MAX7000A的电路结构图第5章 可编程逻辑器件 1 逻辑阵列块逻辑阵列块LAB MAX7000A的主体是通过可编程互连阵列PIA连接在一起的、高性能的、灵活的逻辑阵列块。每个LAB由16个宏单元组成,输入到每个LAB的有如下信号:来自于PIA的36个通用逻辑输入;全局控制信号(时钟信号、清零信号);从I/O引脚到寄存器的直接输入通道,用于实现MAX7000A的最短建立时间。LAB的输出信号可以同时馈入PIA和I/O控制块。第5章 可编程逻辑器件 2 宏单元宏单元Macrocel
50、l MAX7000A的宏单元如图5-29所示,它包括与阵列、乘积项选择阵列以及由一个或门、一个异或门、一个触发器和4个多路选择器构成的OLMC。不难看出,每一个宏单元就相当于一片GAL。1)与阵列、乘积项选择矩阵 与阵列用于实现组合逻辑,每个宏单元的与阵列可以提供5个乘积项。乘积项选择矩阵分配这些乘积项作为“或门”或“异或门”的输入(以实现组合逻辑函数),或者作为触发器的控制信号(清零、置位、使能和时钟)。第5章 可编程逻辑器件图5-29 MAX7000A的宏单元第5章 可编程逻辑器件 2)扩展乘积项 尽管大多数逻辑函数可以用一个宏单元的5个乘积项来实现,但在某些复杂的函数中需要用到更多的乘积