《数字电路逻辑设计白静版第8章.ppt》由会员分享,可在线阅读,更多相关《数字电路逻辑设计白静版第8章.ppt(119页珍藏版)》请在三一办公上搜索。
1、第八章 可编程逻辑器件,8.1 可编程逻辑器件(PLD)概述8.2 可编程逻辑阵列器件(PLA)8.3 可编程阵列逻辑器件(PAL)8.4 通用阵列逻辑器件(GAL)8.5 复杂可编程逻辑器件(CPLD)8.6 现场可编程门阵列器件(FPGA)8.7 可编程逻辑器件的编程本章小结习题,8.1 可编程逻辑器件(PLD)概述 可编程逻辑器件(Programmable Logic Device,PLD)是在PROM基础上发展起来的新型大规模数字逻辑集成器件,是现代设计数字系统的基础之一。前面几章讲到的中、小规模数字集成电路,如74系列及其改进系列、74HC系列的各种门电路、触发器、计数器等,都属于通
2、用器件,它们所实现的逻辑功能是固定不变的,任何数字系统都可使用。用这些通用的MSI、SSI可以组成任何复杂的数字系统,但系统的体积、重量、功耗会随之增加,而且可靠性也大为降低。PLD的研制成功有效地解决了上述问题,它是一种半成品性的、集成度很高的通用型逻辑器件,它的功能不再是单一的存储信息,而是可以通过用户对器件的编程来实现包括组合逻辑、时序逻辑在内的数字电路系统的各种复杂逻辑功能。,8.1.1 PLD的基本结构 我们知道,无论是组合电路还是时序电路,都可以用“与-或”表达式或者真值表、状态转移表来表示,因此可以用与门和或门实现,PLD的内部结构就是建立在此基础上的。图8.1为基于与-或阵列结
3、构的PLD基本结构,这类PLD由输入电路、与阵列、或阵列、输出电路以及反馈电路组成。如同ROM的阵列结构,PLD结构主体是与阵列和或阵列。为了适应各种输入情况,与阵列的输入端(包括内部反馈信号的输入端)都设置有输入缓冲电路,主要作用是使输入信号有足够的驱动能力,并产生一组互补的原变量和反变量。这些外部输入变量或内部反馈变量根据地址变量从与门阵列输入,产生与项;这些与项输出又成为或门阵列的输入,最后,或门阵列的输出就是与-或表达式形成的逻辑函数。在输出电路中,有多个按一定规律排列的寄存器以便输出时序电路,还有多路选择器、三态逻辑输出门以便控制芯片的操作,它们的输入来自或阵列的输出。,图8.1 基
4、于与-或阵列结构的PLD基本结构,PLD内部设置有内部反馈通路,可把输出信号反馈到输入端。这样,在增加了输入、输出缓冲电路、内部反馈电路等之后,就可以构成不同类型、不同规模的PLD器件。由于PLD内部电路庞大而规则、紧凑,用传统的绘制逻辑图方法不方便,因而常采用一些简化的表示方法。图8.2为PLD输入缓冲电路的简化表示。图8.3为PLD中一个多输入与门和多输入或门的简化表示。竖线为一组输入信号,用它与横线相交叉的点的状态表示相应的输入信号是否接到了该门的输入端上。交叉点上一般用符号“”表示可编程的连接点,可以通过编程将其断开;用“”表示是固定连接,不能通过编程改变(不可编程);无任何标记,则表
5、示是不连接的。,图8.3 PLD的与阵列、或阵列简化表示,图8.2 PLD的输入电路简化表示,8.1.2 PLD的分类 早期的PLD属于低集成密度可编程逻辑器件,也是简单的可编程逻辑器件(Simple PLD,SPLD)。根据其可编程情况,可分为可编程只读存储器PROM、可编程逻辑阵列(Programmable Logic Array,PLA)、可编程阵列逻辑(Programmable Array Logic,PAL)和通用阵列逻辑(Generic Array Logic,GAL)4种类型,它们在结构上主要都是一个“与阵列”和一个“或阵列”,不同之处如表8.1所示。,表8.1 SPLD的分类与
6、结构比较,7.3节讨论的PROM、EPROM和EEPROM等可编程ROM属于用户编程的逻辑器件,它们可实现组合逻辑函数,其与阵列(地址译码器)是不可编程的,或阵列(存储矩阵)是可编程的,ROM存储了组合逻辑的真值表,或者说,ROM按标准的与-或表达式编程。PROM由于其阵列规模大,速度低,因而它的基本用途是用作存储器,如软件固化、显示查寻等。可编程逻辑阵列PLA是按照最简与-或表达式编程的器件,它的与阵列和或阵列都是可编程的。利用率比PROM高得多,使用灵活方便,但其集成度较低,又由于缺少好的支持软件和编程工具,价格较贵,器件的资源利用率也不够高,现在已经不常使用。,可编程阵列逻辑PAL是与阵
7、列可编程而或阵列不可编程的器件。PAL具有多种输出结构形式,但输出结构固定。应用不同的输出结构,需选用不同型号的PAL器件。若存储单元采用熔丝结构,就如同PROM一样,一旦编程后不能再改写。通用阵列逻辑GAL是在PAL基础上产生的新一代器件。大部分GAL同PAL一样,有一个可编程的与阵列和一个不可编程的或阵列,仅有GAL39V8的与、或阵列均可编程。但为了通用,GAL在或阵列之后接一个输出逻辑宏单元(Output Logic Macrocell,OLMC),为逻辑设计提供了很大的灵活性。GAL器件采用CMOS工艺,是可多次编程的器件。,上述几种可编程逻辑器件易于编程,对开发软件的要求低,在20
8、世纪80年代得到了广泛的应用,但随着技术的发展,其在集成密度和性能方面的局限性也暴露出来。由于其寄存器、I/O引脚、时钟资源的数目有限,没有内部互连,使其设计的灵活性受到明显限制。近代的PLD属于高集成密度可编程逻辑器件,有复杂的可编程逻辑器件(Complex PLD,CPLD)和现场可编程门阵列(Field Programmable Gate Array,FPGA)两类。,复杂的可编程逻辑器件CPLD的每一个逻辑单元类似一个GAL,它利用连续式的连线结构把各个逻辑单元连接在一起,构成一个器件。这类PLD主要产品有Lattice公司的ispLSI 系列,Altera公司的MAX5000/700
9、0系列,AMD公司的MACH系列等。CPLD的主要特点是延迟与连接情况无关,工作速度的可预测性好。但其集成密度低于FPGA。,现场可编程门阵列FPGA器件顾名思义是一种可以现场进行编程的门阵列。20世纪80年代由Xilinx公司首先提出并制作出世界上第一片FPGA器件。FPGA在结构上由逻辑功能块排列为阵列,并由可编程的内部连线连接这些功能块来实现一定的逻辑功能。这类PLD主要产品有Xilinx公司的LCA系列,Actel公司的ACT系列和Ti公司的TPC系列等。其特点是集成密度相当大,可集成各种逻辑功能的单元,结构灵活,可满足各种应用场合的需要。由于其内部结构与诸多因素如逻辑分割、布局布线、
10、逻辑单元结构、以及互连资源的种类、数量、分布等密切相关,因此其速度的可预测性差,在设计前难以预测最终结果能否满足时序上的要求。另外,这类PLD的多数典型应用能达到的速度低于CPLD。下面就每一种器件的结构及应用作一些介绍。更为详细的了解请参考专门的PLD书籍。,8.2 可编程逻辑阵列器件(PLA)8.2.1 PLA的基本结构 图8.4为3输入、3输出PLA的基本结构,它同ROM的结构类似,是由与阵列和或阵列组成,因两个阵列都可编程,所以用户编程控制的程度很高。与ROM实现逻辑函数相比,PLA的与阵列不需要产生全部最小项,与阵列可进行简化,从而或阵列也得到简化。,图8.4 PLA基本结构,8.2
11、.2 PLA的应用用PLA实现组合逻辑函数时,首先需要把逻辑函数化为最简与-或表达式,式中的每一个乘积项用与阵列中的一个与门来实现。从或阵列的输出得到所要求的逻辑函数。【例8-1】用PLA实现4位二进制码转换成循环码的代码转换电路。解:表8.2为4位二进制码B3B2B1B0转换成循环码G3G2 G1G0的真值表。B3、B2、B1、B0为输入变量,G3、G2、G1、G0为输出变量。用PLA实现时,需4个输入端,4个输出端。将G3、G2、G1、G0 4个输出函数用卡诺图化简后,得到如下最简的与-或表达式:,用PLA实现的编程连接图如图8.5所示。,图8.5 例8-1用PLA实现图,【例8-2】试用
12、PLA和JK触发器实现模4可逆计数器。当X=0时,进行加法计数;当X=1时,进行减法计数。解:由第五章式(5-16)可知,模4可逆计数器的激励方程和输出方程为,用PLA实现时,外部输入信号X和内部反馈信号Q2和Q1作为PLA的3个输入端,J2、K2、J1、K1和Z为5个输出端。其PLA器件实现的编程连接图如图8.6所示。,图8.6 例8-2用PLA实现图,8.3 可编程阵列逻辑器件(PAL)8.3.1 PAL的基本结构PAL器件是20世纪70年代末期由MMI公司推出的一种低密度、一次性可编程逻辑器件,它采用双极型工艺制作、熔丝编程方式。这是在可编程逻辑阵列PLA器件之后,第一个具有典型实际意义
13、的可编程逻辑器件。随着MOS工艺的广泛应用,后来又出现了以叠栅MOS管作为编程单元的PAL器件。,PAL器件的基本结构是可编程的与阵列和固定的或阵列,如图8.7所示。这是一个3输入、3输出的PAL阵列,在未编程之前,与阵列的所有交叉点上均有熔丝接通,编程时将有用的熔丝保留,将无用的熔丝熔断,即得到所需的电路。图8.8是经过编程后的一个PAL器件的结构图。,图8.7 PAL基本结构,图8.8 编程后的PAL电路,需要注意的是,对于每一条与线,如果该线上的熔丝全部保留,表示编程时没有利用,则这条与线始终为逻辑0电平,且与输入值无关,图中简化表示为在相应的与门上画“”(见图8.8),所有交叉点上的“
14、”就不用画了;如果该线上的熔丝全部烧断,则这条与线始终为逻辑1电平,也与输入值无关。它产生的逻辑函数为,为了扩展电路的功能,增加使用的灵活性,在许多型号的PAL器件中还增加了各种形式的输出电路。不同型号的PAL器件有不同的输出结构和反馈结构,可适用于不同的组合逻辑电路和时序逻辑电路的设计。,1.专用输出结构 专用输出结构的输出端是一个与或门,图8.7所示的PAL电路就属于这种输出结构。有些PAL器件输出端还采用与或非门或者互补输出结构。图8.9给出了互补输出的电路结构。这种专用输出结构的PAL器件无输出反馈信号,只能用来产生组合逻辑函数。PAL10H8、PAL14H4等器件的输出端是与或门结构
15、,输出信号高电平有效;PAL10L8、PAL14L4的输出端是与或非门结构,输出信号低电平有效;PAL16C1的输出端是互补输出的或门结构,同时输出一对互补的信号。,图8.9 具有互补输出的专用输出结构,2.可编程输入/输出(I/O)结构PAL器件的可编程输入/输出电路结构图如图8.10所示。这种输出结构的特点是具有一个可编程控制端的三态缓冲器和输出反馈缓冲器。三态缓冲器的控制端由与阵列最上面一个与门所对应的乘积项(即第一乘积项,也称为专用乘积项)给出,具有互补输出的反馈缓冲器可使三态输出反馈到与阵列的输入端,因而可构成简单的触发器,使输出具有记忆功能。,如果在编程时,使第一乘积项为0,则三态
16、缓冲器被禁止,呈高阻态,这时可以将I/O作为变量输入端使用,互补输出的反馈缓冲器作为输入缓冲门使用;相反,如果在编程时,该乘积项为1,则三态缓冲器被选通,I/O处于输出工作状态,同时输出数据又通过反馈缓冲器反馈到与阵列。PAL16L8、PAL20L10等器件属于这种输出结构。,图8.10 PAL的可编程输入/输出结构,3.寄存器输出结构 PAL器件的寄存器输出结构如图8.11所示。与可编程输入/输出电路结构相比,它在或阵列的输出和输出三态缓冲器之间增加了由D触发器组成的寄存器。同时触发器的端又经互补输出的缓冲器反馈到与阵列的输入端。在系统时钟CP上升沿作用下,将或门的输出存入D触发器,在输出使
17、能控制信号OE有效时,Q端的信号经三态缓冲器反相后输出,输出为低电平有效。这样PAL具有记忆功能,且整个器件只有一个共用时钟脉冲CP和一个输出使能信号OE,从而可实现计数器、移位寄存器等同步时序逻辑电路。PAL16R4、PAL16R6、PAL16R8等器件属于该结构。,图8.11 PAL的寄存器输出结构,除了以上3种输出结构外,PAL器件还有异或输出结构,其电路结构与寄存器输出结构类似,只是在或阵列的输出端又增加了一级异或门。另外还有能实现快速的加、减、大于、小于等算术逻辑操作的运算选通反馈结构等。,8.3.2 PAL的应用 PAL器件可根据其型号的命名方式来确定它的结构。例如,PAL16L8
18、,其中“PAL”说明它是一个PAL器件;“16”表示它的与阵列最多可以有16个输入;“L”表示输出信号低电平有效;“8”表示该器件最多可有8个输出。,图8.12为PAL16L8器件完整的内部逻辑图。从图中可知,PAL16L8器件为可编程输入/输出结构的PAL器件。它有20个引脚,10号和20号引脚在图中没有给出,它们分别是“地”和+5 V电源的引脚;包括反馈输入在内最多可有16个输入端;而输出端最多为8个,输出为低电平有效;每个输出中有8个乘积项,共有88=64个乘积项,其中每个输出中第一个乘积项为专用乘积项,用于控制三态输出缓冲器的输出;19以及11号引脚只能作为输入引脚;12和19号引脚只
19、能用作输出引脚;1318号引脚由它们的输出三态缓冲器的状态决定其工作情况,当三态缓冲器处于高阻态时,对应的引脚只能作为输入引脚;当三态缓冲器正常工作时,对应的引脚用作输出引脚,并将输出信号反馈到与阵列,作为与阵列的一个输入信号。,图8.12 PAL16L8逻辑图及例8-3连接图,【例8-3】试用PAL器件实现一个带使能控制输出的2线-4线译码器。解:2线-4线译码器真值表如表8.3所示。由表可知,当输出使能控制端为0时,2线-4线译码器的输出表达式为,(8-1),因为输出表达式为带非号的组合逻辑函数,并且要求有使能控制输出,故选用输出低电平有效的、带输出三态控制的PAL16L8器件实现,连接示
20、意图在图8.12标出。在目前常见的PAL器件中,输入变量最多可达到20个,与阵列输出的乘积项最多的有80个,或阵列的输出端最多有10个,每个或门的输入端最多的达到16个。,PAL和SSI、MSI通用标准器件相比有许多优点:提高了功能密度,节省了空间。通常一片PAL可以代替 412 片 SSI或 24 片MSI。PAL只有20多种型号,但可以代替90%的通用SSI、MSI器件,因而进行系统设计时,可以大大减少器件的种类。提高了设计的灵活性,且编程和使用都比较方便。PAL的主要缺点是由于它采用了双极型熔丝工艺(PROM结构),只能一次性编程,因而使用者仍要承担一定的风险。另外PAL器件输出电路结构
21、的类型繁多,因此也给设计和使用带来一些不便。,8.4 通用阵列逻辑器件(GAL)GAL是Lattice公司于1985年首先推出的另一种新型低密度可编程逻辑器件。它采用了电擦除、电可编程的EECMOS工艺制作,可以用电信号擦除并反复编程上百次。为了通用,GAL器件的输出端设置了可编程的输出逻辑宏单元OLMC,通过编程可以将OLMC设置成不同的输出方式。这样,同一型号的GAL器件就可以实现PAL器件所有的各种输出电路工作模式,即取代了大部分PAL器件,因此称为通用可编程逻辑器件。GAL器件分为两大类:一类为普通型GAL,其与或阵列结构与PAL相似,如GAL16V8、ispGAL16Z8、GAL20
22、V8都属于这一类;另一类为新型GAL,其与或阵列均可编程,与PLA结构相似,主要有GAL39V8。,8.4.1 GAL的基本结构图8.13是常见的GAL16V8的电路结构图。它在结构上继承了PAL器件与阵列可编程和或阵列固定的基本结构,在输出电路中采用了OLMC。OLMC结构可通过编程,确定可编程器件各单元的输出和反馈结构,既可满足组合逻辑设计,又可满足时序逻辑设计,大大增加了数字系统设计的灵活性。,图8.13 GAL16V8逻辑图,由图8.13可知,GAL16V8器件有8个输入缓冲器,8个三态输出缓冲器,8个输出反馈/输入缓冲器,1个系统时钟CP输入缓冲器和1个三态输出使能OE输入缓冲器;与
23、阵列由88个与门构成,共形成64个乘积项,每个乘积项有32个输入,对应图中32条列线;含8个输出逻辑宏单元OLMC(或阵列包含在OLMC中),其中前3个(引脚17、18、19)和后3个(引脚12、13、14)OLMC输出端都有反馈线连接到相邻单元的OLMC。,GAL16V8器件有8个引脚(引脚29)固定作为输入端,另外8个输入/输出引出端也可配置为输入模式。因此,GAL16V8器件最多可有16个输入端,输出端最多为8个。这也是器件型号中16和8两个数字的含义。时钟输入是1脚,使能控制输入是11脚。,8.4.2 GAL的输出逻辑宏单元(OLMC)1.OLMC的结构和结构控制字OLMC内部结构如图
24、8.14所示。每个OLMC包含或阵列中的一个或门、一个可编程异或门、一个D触发器和四个可编程数据选择器(多路开关)及一些门电路组成的控制电路。图中AC0、AC1(n)、XOR(n)都是结构控制字中的一位数据,其中n(n=1219)为输出宏单元的引脚号。AC0为各OLMC共用,AC1(n)为第n个OLMC专用。设计者通过对结构控制字编程,便可设定OLMC的工作模式。GAL16V8结构控制字的组成如图8.15所示。,图8.14 GAL器件输出逻辑宏单元(OLMC),图8.15 GAL16V8结构控制字的组成,(1)图8.14中的或门G1有 8 个输入端,和来自与阵列的8个乘积项相对应。其中7个直接
25、相连,第一个乘积项(图中最上边的一项)通过可编程极性多路选择器(PTMUX)后同或门相连,或门输出为有关乘积项之和。在或门的输出端能产生不超过8项的与-或逻辑函数。(2)异或门G2的作用是选择输出信号的极性。当XOR(n)为1时,异或门起反相器作用,否则起同相器作用。(3)D触发器(寄存器)对异或门的输出状态起记忆作用,使GAL器件适用于时序逻辑电路。,(4)4个多路选择器(MUX)在结构控制字段作用下设定输出逻辑宏单元的组态,即输出电路结构的形式受4个多路选择器控制。PTMUX是可编程乘积项多路选择器(是一个2选1数据选择器),用于控制第一乘积项。即在 控制下,选择第一乘积项或地(0)送至或
26、门输入端。TSMUX是可编程三态多路选择器(是一个4选1数据选择器),用于选择三态输出缓冲器的使能信号。即在AC1(n)和AC1控制下从VCC、地、OE或第一乘积项中选择一个作为输出缓冲器的使能信号。,OMUX是可编程输出类型多路选择器(是一个2选1数据选择器),用于选择输出信号是经异或门直接输出还是经D触发器输出。即在控制下选择组合型(异或门输出)或寄存型(经D触发器存储后输出)逻辑运算结果送到输出缓冲器。,FMUX是可编程反馈多路选择器,它是一个8选1数据选择器,但输入信号只有4个。它的作用是选择不同的信号反馈给与阵列的输入端。即在AC1(n)、AC0控制下选择D触发器的、本级OLMC输出
27、、邻级OLMC的输出或地电平作为反馈信号送回与阵列作为输入信号。这里的(m)是相邻OLMC的编号。由图8.13所示GAL16V8的逻辑图可知,OLMC(16)、OLMC(17)、OLMC(18)的相邻OLMC分别为OLMC(17)、OLMC(18)、OLMC(19);OLMC(13)、OLMC(14)、OLMC(15)的相邻OLMC分别为OLMC(12)、OLMC(13)、OLMC(14)。OLMC(12)和OLMC(19)的邻级输入分别由引脚11和引脚1的输入代替,同时这两个单元的AC0和AC1(m)又被和SYN所取代。SYN是结构控制字中的一位。,控制字中,SYN和AC0是一个GAL的所有
28、OLMC共有的。AC1(n)和XOR(n)是每一个OLMC独立的可编程位。同步位SYN 决定GAL器件是具有寄存器型(时序型)输出(SYN=0),还是纯粹组合型输出(SYN=1)。在OLMC(12)和OLMC(19)中,SYN还替代AC1(n),替代AC0作为FMUX的选择输入,以维护与PAL器件的兼容性。AC0、AC1(n)是结构控制位。8 个OLMC公用1位AC0。AC1(n)共8位,每个OLMC(n)有1位,(n为1219)。AC0、AC1(n)两者配合控制各MUX的工作。,XOR(n)是极性控制位,共8位,每个OLMC(n)有 1 位,它通过异或门来控制输出极性。当XOR(n)=0时,
29、输出低有效;当XOR(n)=1 时,输出高有效。PT(n)是乘积项禁止位,共64位,和与阵列中64个乘积项(PT0PT63)相对应,用以禁止(屏蔽)某些不用的乘积项。,2.OLMC的配置在SYN、AC0、AC1(n)组合控制下,OLMC(n)可组态配置成5种工作模式,即专用输入、专用组合输出、反馈组合输出、时序电路中的组合输出和寄存器型输出模式,表8.4列出了各种模式下对控制位的配置和选择。图8.16(a)(e)分别表示不同配置模式下OLMC 5种工作模式的简化电路图。,图8.16 OLMC 5种工作模式下的简化电路图,GAL器件由于采用了OLMC,所以使用更加灵活,只要写入不同的结构控制字,
30、就可以得到不同类型的输出电路结构。这些电路结构完全可以取代PAL器件的各种输出电路结构。上述可编程结构控制字SYN、AC0、AC1(n)和XOR(n)的具体设置以及各OLMC的具体配置是由PLD开发软件根据具体设计要求自动完成的,无需人工设置。,3.GAL的行地址结构GAL的逻辑功能、工作模式都是靠编程来实现的。编程时写入的数据按行安排,GAL16V8 共分64行,供用户使用的有36行。图8.17表示GAL16V8 编程单元的地址分配和功能划分情况,因为它并不是实际的空间布局图,所以称为行地址映射图。,图8.17 GAL16V8行地址分配,第031行对应与阵列的编程单元,编程后可产生063共
31、64 个乘积项。用户定义的逻辑功能在这里实现。第32行是电子标签(ES),供用户存放各种备查的信息,如器件的编号、电路的名称、编程日期、编程次数等。电子标签不受下述加密位的控制,随时都可访问读出。第3359行是生产厂家保留的地址空间,用户不能利用。第60行是一个82位的结构控制字,用于设定8个OLMC的工作模式和64个乘积项的禁止。,第61行是一位加密单元。这一位被编程以后,与阵列中的编程数据不能被更改或读出,从而使设计结果得以保护。只有在与阵列被整体擦除时,才能将加密单元同时擦除。但是电子标签的内容不受加密单元的影响,在加密单元被编程后电子标签的内容仍可读出。第62行是一位保留位,为厂商保留
32、,用户不能利用。第63行是一个整体擦除位,编程系统对这一位进行擦除将导致整个芯片中所有的编程单元都被擦掉,器件返回到编程前的初始状态。,对GAL编程时是逐行进行的,被编程的数据从SDIN以串行方式送入64位移位寄存器,寄存器装满一次,就对GAL阵列写一行。校验时,指定行的已编程数据并行装入该移位寄存器,然后从SDOUT以串行方式送出。,8.4.3 GAL的应用 GAL的逻辑设计和开发过程与PAL基本类似。不同之处在于需设置结构控制字的状态和配置OLMC的工作模式。【例8-4】试用GAL16V8器件实现1位全加器。解:一位全加器的逻辑函数表达式为 由此可知,该组合逻辑电路有3个信号输入,有2个输
33、出,且高电平有效,故需用2个OLMC,根据表8.4和图8.16,相应的GAL开发软件具体设置的结构控制字和各OLMC的具体配置如表8.5所示。,【例8-5】试用GAL16V8器件实现一个带使能控制输出的2线-4线译码器。解:由式(8-1)可知,该组合逻辑电路有4个输出端,且低电平有效,故需用4个OLMC,并有一个使能控制端,根据表8.4和图8.16,相应的一种配置如表8.6所示。,综上所述,GAL器件在性能上主要有以下特点:(1)采用电擦除工艺,可重复编程,逻辑功能可重新配置。编程改写方便、快速,整个芯片擦除改写只需数秒钟,一般GAL的改写次数都在100次以上,将设计风险降到最低。(2)采用高
34、性能的EECMOS工艺,保证了GAL的高速度和低功耗。存取速度为1240 ns,功耗仅为双极性PAL器件的1/2或1/4(90 mA或 45 mA),编程数据可保存20年以上。(3)采用可编程的输出逻辑宏单元OLMC,使GAL器件结构灵活,通用性强,可配置成多种工作模式。GAL16V8可以仿真或代替20脚的PAL器件约21种。,(4)具有加密功能,可防止他人非法抄袭设计电路。(5)具有电子标签,便于文档管理,提高了生产效率。(6)具有寄存器预置和加电复位功能,器件可测性100%。GAL器件利用OLMC改进了PAL的输出电路,使得GAL比PAL更加灵活,在简单PLD中是应用最广泛的一种。GAL的
35、缺点同PAL一样,属于低密度PLD,逻辑阵列规模较小,每片相当于几十个等效门电路,只能代替24片MSI器件,远达不到LSI和VLSI专用集成电路的要求。功能相对简单,不适用于较复杂的逻辑电路的设计。这些不足之处,都在高密度PLD中得到了较好的解决。,8.5 复杂可编程逻辑器件(CPLD)8.5.1 CPLD的基本结构随着集成工艺的发展,当前PLD的集成规模越来越大,已从简单的低密度可编程器件(PAL和GAL器件)发展到万门以上的复杂可编程(CPLD)系列。多数的CPLD采用EEPROM编程工艺制作,也有采用CMOS EPROM、Flash Memory和SRAM等编程技术的,这样构成的CPLD
36、具有高密度、高速度和低功耗的特点,因此,采用CPLD设计的数字系统体积小、功耗低、可靠性高,具有更大的灵活性。,目前生产CPLD的厂家有很多,各种型号的CPLD在结构上也都有各自的特点和长处,但概括起来,它们都是由三大部分组成的,即若干个可编程逻辑块(构成CPLD的主体部分)、输入/输出(I/O)块和可编程内部互连通道(用于逻辑块之间以及逻辑块与输入/输出块之间的连接)。Lattice公司在20世纪90年代初率先推出了一种新型的可编程逻辑器件在系统可编程(In System Programmability,ISP)逻辑器件ispLSI系列,所谓“在系统编程”ISP是指采用编程电缆或自动测试设备
37、ATE在用户电路板PCB上对器件直接进行编程,而器件无需从电路板上取下来。支持ISP技术的可编程逻辑器件称为在系统可编程逻辑器件(ispPLD)。ispPLD不需要使用编程器,只需要通过计算机接口和编程电缆,直接在目标系统或电路板上进行编程。ispPLD可以先装配,后编程。因此ISP技术有利于提高系统的可靠性,便于系统板的调试和维修。,Lattice公司的ispLSI系列器件具有CPLD典型的结构和特性,是目前功能较强、性能优良、方便易用的CPLD器件之一。而且由于ispLSI系列器件具有在系统可编程能力,使其得到了广泛的应用。下面我们以Lattice公司的在系统可编程器件ispLSI1032
38、为例,来了解一下CPLD的具体结构。图8.18为ispLSI1032的电路结构图,它主要由32个通用逻辑块(Generic Logic Block,GLB)、64个输入/输出单元(Input/Output Cell,IOC)、全局布线区(Global Routing Pool,GRP)、输出布线区(Output Routing Pool,ORP)和时钟分配网络(Clock Distribution Network,CDN)组成。,全局布线区GRP是ispLSI器件中的一种专用的内部互连结构,它提供高速的内部连线。GRP位于器件的中心,可连接任何一个I/O单元到任何一个通用逻辑块GLB,也可连接
39、任何一个GLB输出到其他GLB,即它可将所有器件内的逻辑连接起来。GRP的传输延迟时间可预知。,图8.18 ispLSI1032的电路结构图,通用逻辑块GLB位于全局布线区GRP的四周,形成了4个结构相同的大模块。GLB由可编程与阵列、乘积项共享的或阵列和输出逻辑宏单元(OLMC)三部分构成,每个GLB相当于一个GAL器件。输出布线区ORP的作用是把GLB的输出信号接到IOC上,它是介于GLB和IOC之间的可编程互连阵列。ORP与其他可编程互连阵列的区别是,IOC与GLB之间没有一一对应关系,因而可以将对GLB的编程和对外部引脚的排列分开进行,赋予外部引脚分配更大的灵活性。,输入/输出单元IO
40、C位于器件的最外层,它由三态输出缓冲器、输入缓冲器、输入寄存器和几个可编程的数据选择器组成,IOC可以编程为输入、输出、双向输入/输出3种模式。各部分之间的关系和实现的功能如图8.19所示。,图8.19 ispLSI1032的逻辑功能划分图,8.5.2 CPLD的通用逻辑块(GLB)ispLSI1032器件的GLB结构图如图8.20所示。GLB主要用于实现逻辑功能,在结构上类似于GAL,但又在GAL的基础上做了一些改进,在组态时有更大的灵活性和多样性。图8.20是GLB的标准组态,4个或门输入按4、4、5、7配置,或阵列采取了乘积项共享的结构形式。它的输入和输出关系是可编程的,F0F3中的任何
41、一个都可以送到4个D触发器中的任何一个的输入端,每个Fi又可以同时送给多个触发器,F0F3 还可以再组合成更大规模的与-或逻辑函数送到任何一个触发器的输入端。,图8.20 ispLSI1032器件的GLB结构,4输出逻辑宏单元中4个触发器的置0、时钟是连在一起的,因此同一GLB中的触发器必须同步工作。根据设计需要,可编程触发器也可配置为JK、T触发器形式。此外,通过编程还可以将GLB设置成其他连接模式,以适应不同的设计要求。【例8-6】画出ispLSI1032器件产生4乘积项、8乘积项、16乘积项GLB的配置。解:图8.21为产生4乘积项、8乘积项、16乘积项GLB的配置结构图。其中4乘积项由
42、一个或门产生,8乘积项由2个共享或门产生,16乘积项由三个共享或门产生。,综上所述,CPLD器件与低密度PAL和GAL器件相比,主要有以下性能特点:(1)可进行多次编程、改写和擦除。(2)具有高密度、高速度、高可靠性和低功耗的特点。(3)I/O端数和内含触发器可多达数百个,集成度远远高于PAL和GAL器件。(4)有灵活多样的逻辑结构,可满足各种数字电路系统设计的需要。,(5)内部时间延迟与器件结构和逻辑连接无关,各模块之间提供了具有固定延时的快速互连通道,可预测时间延迟,易于消除竞争冒险现象。(6)对于采用SRAM工艺的CPLD,需要进行数据配置才可以完成设计要求的功能,断电后,配置数据自动消
43、失。(7)有多位加密位,可杜绝编程数据的非法抄袭。,图8.21 ispLSI1032器件的GLB结构,8.6 现场可编程门阵列器件(FPGA)8.6.1 FPGA的基本结构与前面介绍过的几种PLD器件不同,现场可编程门阵列FPGA的主体不再是与-或阵列,而是由若干独立的可编程逻辑模块组成的。用户可以通过编程,实现这些模块之间的互连,从而实现所需要的数字系统的逻辑功能。由于这些模块的排列方式和门阵列(GA)中单元的排列形式类似,所以沿用了门阵列这个名称。FPGA属于高密度PLD,其每片的集成度可达百万门以上。多数的FPGA采用SRAM编程工艺,也有少数的FPGA采用反熔丝编程工艺。,图8.22是
44、FPGA的基本结构示意图,它由可编程逻辑模块(Configurable Logic Block,CLB)、可编程输入/输出模块(Input/Output Block,IOB)、可编程互连资源(Interconnect Resource,IR)这三种可编程单元和一个阵列分布的存放编程数据的静态存储器SRAM组成。整个芯片的逻辑功能是通过对芯片内部的SRAM编程确定的。,图8.22 FPGA的基本结构,可编程逻辑块CLB是实现用户功能的基本单元,它们通常规则地排列成一个二维阵列,分布在整个芯片中央;可编程输入/输出模块IOB提供芯片内部逻辑阵列与外部引出线之间的编程接口,它通常排列在芯片的四周;可
45、编程互连资源IR包括各种长度的金属连线、一些可编程开关矩阵和可编程的连接点,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路。,基于SRAM的FPGA器件,其内部CLB、IOB、互连开关的编程数据等都存放在片内的SRAM中,断电后存储器中的数据不能保存,因此,FPGA未加电时,器件本身没有任何功能。加电工作时,必须重新给存储器加载编程数据。加载的过程是在FPGA内部的一个时序电路的控制下自动进行的。编程数据可以存储在片外的EPROM、EEPROM或计算机软、硬盘中。人们可以控制加载过程,在现场修改器件的逻辑功能,即所谓现场编程。图8.23是FPGA中静态存储器
46、SRAM单元的结构图。它由两个CMOS反相器和一个用来控制读/写的MOS控制管T构成。这种SRAM存储单元具有很强的抗干扰能力和很高的可靠性。,图8.23 FPGA内SRAM单元,8.6.2 FPGA的CLB模块和IOB模块不同厂家生产的FPGA,其CLB、IOB等结构都存在较大的差异,下面以Xilinx公司的产品XC2064为例,简要介绍FPGA的CLB、IOB的基本电路结构和工作特点。1.可编程逻辑模块CLB CLB是FPGA实现各种逻辑功能的基本单元。在XC2064中有64个CLB,排列成88 的矩阵。每个CLB中包含组合逻辑电路、存储电路以及由一些数据选择器组成的内部控制电路,图8.2
47、4为XC2064中CLB的结构图。图中程序控制的数据选择器符号上只标出了数据输入端和数据输出端,省略了地址输入端。,图8.24 XC2064的CLB电路,CLB中的组合逻辑电路部分是有4个输入端、2个输出端的通用逻辑模块。根据设计的需要,可以将组合逻辑电路设置成3种不同的组态,如图8.25所示,即通过编程可以产生任何形式的四变量组合逻辑函数、2个三变量的组合逻辑函数和含有A、B、C、D、Q五变量的组合逻辑函数。,图8.25 XC2064的CLB的3种组态,CLB中的组合逻辑电路输出与输入之间的逻辑函数关系由一组编程控制信号决定。将编程控制信号与函数对应关系列成函数查询表,在编程过程中通过查询表
48、方式来实现逻辑函数关系。查询表的物理结构是静态的存储器SRAM,查询表的工作原理类似于用ROM实现多种组合逻辑函数,编程控制输入等效于ROM的地址码,通过查找ROM中的地址表,即可得到相应的组合逻辑函数输出。,在XC2064中,CLB的存储电路只有一个触发器(在XC3000和XC4000系列的FPGA器件中,每个CLB中有两个触发器)。这个触发器可以编程为边沿触发或电平触发的D触发器。触发器的输入端口接收组合逻辑电路部分的输出F,时钟即可以选择片内公共时钟CP,工作在同步方式;也可以选择输入端C或组合电路的输出G,工作在异步方式。可以通过对数据选择器的编程来决定用时钟的上升沿或下降沿(或高电平
49、和低电平)触发。,触发器的异步置位信号从输入变量A和组合电路输出F中选择。异步置零信号从输入变量D和组合电路输出G中选择。输出Q既可以驱动CLB输出端X、Y,也可以反馈到输入端作为组合逻辑电路的输入信号。,2.可编程输入/输出模块IOB XC2064共有56个可编程的IOB,分布于FPGA四周,可以灵活编程,满足不同逻辑接口的需要。每个IOB由输出三态缓冲器G1、触发器、输入缓冲器G2和两个数据选择器MUX1、MUX2组成。图8.26为XC2064中IOB的电路结构图。由图8.26可知,MUX1的输出决定输出三态缓冲器G1的工作状态。当MUX1输出(即G1的控制信号)为低电平时,IOB工作在输
50、出状态,FPGA内部产生的信号通过G1送至I/O端。当MUX1输出为高电平时,G1为高阻态,IOB工作在输入状态。,图8.26 XC2064的IOB电路,MUX2用于输入方式的选择。当MUX2选中G2的输出时,为异步输入方式,加到 I/O 端的输入信号立刻通过G2、MUX2送到FPGA内部。当MUX2选中触发器的输出时,为同步输入方式,加到I/O端的输入信号必须等到时钟信号CP到达后,才能经过MUX2送到FPGA内部。输入缓冲器G2的阈值电平是可编程的。用户既可设置为TTL电路的阈值电平1.4 V,也可以设置为高速CMOS电路的阈值电平2.2 V。在XC2064中,所有IOB共享一个I/O时钟