可编程逻辑器件及其编程技术.ppt
第8章 可编程逻辑器件及其编程技术,8.1 可编程逻辑器件及EDA技术发展概况 8.2 可编程逻辑器件的分类 8.3 阵列型可编程逻辑器件(PLD)8.4 单元型可编程逻辑器件(FPGA)8.5 可编程逻辑器件的编程设计 8.6 硬件描述语言(VHDL)习题,8.1 可编程逻辑器件及EDA技术发展概况,可编程逻辑器件(PLD,Programmable Logic Devices)可以由用户在开发装置的辅助下,对器件进行编程,使之实现所需的组合或时序逻辑功能。PLD的发展概况如下:1970年制成的PROM是最早出现的PLD器件,主要用作存储器。20世纪70年代中期出现了可编程逻辑阵列(PLA,ProgrammableJP Logic Array),但由于编程复杂而没有得到广泛应用。20世纪70年代末期,美国MMI公司率先推出了可编程阵列逻辑(PAL,ProgrammableArray Logic)。它输出结构种类多,设计灵活,因此得到了广泛应用。,20世纪80年代初,Lattice公司发明了通用阵列逻辑(GAL,Generic Array Logic)。它比PAL使用更加灵活,得到了广泛应用。20世纪80年代中期,Altera公司推出了一种新型的可擦除、可编程逻辑器件(EPLD,Erasable Programmable Logic Device)。它的密度比PAL和GAL高,设计更灵活。1985年,Xilinx公司首家推出了现场可编程门阵列(FPGA,Filed Programmable Gate Array)。它是一种新型的高密度PLD器件,采用CMOSCD*2SRAM工艺制作,可以实现在系统编程。20世纪80年代末,Lattice公司提出了在系统可编程(In System Programmable)技术,以后相继出现了一系列复杂可编程逻辑器件(CPLD,Complex PLD)。,20世纪90年代以来,高密度PLD在生产工艺、器件密度、编程和测试技术等方面都有了飞速发展。现在构成大的数字系统仅需要三类“积木块”:微处理器、存储器和可编程逻辑器件。自20世纪70年代可编程逻辑器件问世以来,数字电路的设计方法和手段得到了不断的改进和创新。传统的数字系统设计是通过设计电路板来实现系统功能的,而采用可编程逻辑器件是基于芯片的设计方法。这显然提高了设计的灵活性,大大减少了电路图和电路板设计的工作量,同时,也可以使系统体积小、功耗低,提高系统的性能指标和可靠性。,20世纪80年代中期以来,Xilinx、Altera、Lattice等公司相继推出各自的在系统可编JP2程逻辑器件和相应的开发软件,这使电子设计自动化(EDA,Electronic Design Automanion)技术有了迅速的发展。EDA技术以计算机为工具,代替设计者完成数字系统的逻辑综合、布局布线和设计仿真等工作,设计者只需要完成对系统功能的描述,就可以由计算机软件进行处理,得到设计结果。EDA技术使电子设计发生了革命性变化。,8.2 可编程逻辑器件的分类,可编程逻辑器件主要有以下3种分类方法。1.按器件密度分类,表8.2.1 可编程逻辑器件按密度分类,2.按结构特点分类目前常用的可编程逻辑器件都是从与或阵列和门阵列发展起来的,所以也可以把可编程逻辑器件分为阵列型PLD和现场可编程门阵列FPGA,又称为阵列型PLD和单元型PLD,所示。,表8.2.2 可编程逻辑器件按结构特点分类,3.按编程方法分类按编程方法分类,可编程逻辑器件可分为4种,如表所示。,表8.2.3 可编程逻辑器件按编程方法分类,上表中,熔丝型编程原理在第7章中已介绍过。由于熔丝元件要留出较大的保护空间,占用芯片的面积较大,而反熔丝元件克服了熔丝元件的缺点,它通过击穿介质来连通线路,实现一次性编程。紫外线擦除、电编程(EPROM、UVCMOS工艺结构)和电擦除、电编程(E2CMOS或快闪存储单元结构)都是基于第7章中介绍过的各种浮栅编程原理。基于SRAM的可编程逻辑器件在每次上电工作时,需要从器件外部的EPROM、E2PROM或其他存储体上将编程信息写入器件内部的SRAM中。这类器件在工作中可以快速进行任意次数的编程,实现板级和系统级的动态配置,因而也称为在线重配置(ICR,In Circuit Reconfigruable)的可编程逻辑器件或可重配置硬件。,8.3 阵列型可编程逻辑器件(PLD),8.3.1 PLD电路的表示方法因为PLD器件内部电路的连接规模大,用传统的逻辑电路表示方法很难描述,所以采用了特殊的逻辑符号和简化画法来表示其内部电路。其电路内部基本逻辑符号如图8.3.1所示。而且,还常采用图8.3.2(a)、(b)所示的逻辑符号来表示多输入变量的与逻辑和或逻辑。图中,竖线与乘积线的交叉点表示在生产时用熔丝(或浮栅管)连接,是可编程点。交叉点上如果有“”,表示固定连接点,用户不可改变;交叉点上如果有“”,表示编程连接;若交叉点上没有标记,表示交叉点是断开的。所以图8.3.2(a)的输出为F=AC;图(b)的输出为F=AB。图(c)为缓冲器的逻辑符号。,图8.3.1 PLD内部逻辑符号(a)国标符号;(b)国际符号,图8.3.2 PLD与逻辑、或逻辑、缓冲器和数据选择器的画法(a)F=AC;(b)F=A+B;(c)缓冲器的逻辑符号;(d)2选1和4选1可编程数据选择器,8.3.2 简单PLD的类型和主要特点简单PLD的基本结构如图所示。,图8.3.3 简单PLD的基本结构,简单PLD的产品主要有4种类型:可编程只读存储器PROM、可编程逻辑阵列PLA、可编程阵列逻辑PAL和通用阵列逻辑GAL。它们都包含有一个与阵列和一个或阵列。PLA、PAL和GAL在其或阵列的输出还具有驱动门、寄存器或输出逻辑宏单元,可以实现各种组合逻辑或时序逻辑功能。各种简单PLD器件的结构特点如表所示。,表8.3.1 各种简单PLD器件的结构,1.可编程只读存储器PROM及其应用PROM的原理已在第7章中作了介绍。PROM是一种可编程逻辑器件,它由固定的与阵列和可编程的或阵列组成。在图8.3.4所示的PROM中,其固定的与阵列的输出为输入变量ABCD的16个最小项。其或阵列有 164=64个可编程点,输出字长为 4位。我们知道,任何组合逻辑电路都可用最小项之和式来表示。因此,可以用PROM来实现各种组合逻辑功能。PROM常用于存储各种固定多输入/多输出的函数表。,图8.3.4 PROM的与或逻辑阵列,表8.3.2 4位二进制码转换为格雷码的转换表,由代码转换表写出输出格雷码的逻辑函数表达式:,根据逻辑表达式对PROM或阵列进行编程,在或阵列的输出就可得到格雷码G3G2G1G0,如图所示。,图8.3.5 用PROM实现4位二进制码转换为格雷码的与或阵列,2.PAL的主要特点PAL器件的与阵列是可编程的,或阵列是固定的。与PROM相比,PAL的芯片品种较多。不同类型PAL的容量大小和输出电路类型不同,用户可根据使用要求,选择其阵列结构大小、输入/输出的数目与方式、要实现的是组合逻辑功能或时序逻辑功能等来选择芯片类型。图是PAL16X4的原理图及芯片引脚图。,图8.3.6 PAL16X4的原理图及芯片引脚图(a)原理图;(b)芯片引脚图,PAL的输出方式有以下5种基本类型。1)基本组合输出型如图8.3.7(a)所示,这类PAL可以实现多种组合逻辑功能。其输出有3种形式:型号中带有字符H的芯片(如PAL10H8)输出为高电平有效;型号中带有字符L的芯片(如PAL12L6)输出为低电平有效;型号中带有字符C的芯片(如PAL20C1)为互补输出。,2)可编程的IO结构 如图8.3.7(b)所示,这类芯片除与阵列和或阵列外,还具有:可用与阵列直接控制输出三态缓冲器,当输出三态缓冲器未被选通时,可将此引脚(IO端)作为 PAL的输入,当输出三态缓冲器已被选通时,它就具有IO功能;反馈结构,能使输出返送回与阵列。,4)具有异或功能及反馈的寄存器输出 如图8.3.7(d)所示,这类器件的与或项分为两部分再异或,输出信号在系统时钟的上升沿存入D触发器。这类器件的型号带有字符X,如PAL20X4等。5)算术选通反馈结构如图8.3.7(e)所示,是在第4种结构的基础上增加了反馈选通电路,可以对反馈信号和专用输入信号实现或操作,由4个或门构成4种形式的或逻辑送至与阵列,通过编程可得到16种不同的组合逻辑输出。这种结构的PAL器件对实现快速算术操作(加、减、大于、小于、等于等)很方便。,图8.3.7 PAL的内部结构及输出方式(a)基本组合输出型;(b)可编程I/O结构;(c)带反馈的寄存器结构;(d)具有异或功能及反馈的寄存器输出结构;(e)算术选通反馈结构,图8.3.7 PAL的内部结构及输出方式(a)基本组合输出型;(b)可编程I/O结构;(c)带反馈的寄存器结构;(d)具有异或功能及反馈的寄存器输出结构;(e)算术选通反馈结构,图8.3.7 PAL的内部结构及输出方式(a)基本组合输出型;(b)可编程I/O结构;(c)带反馈的寄存器结构;(d)具有异或功能及反馈的寄存器输出结构;(e)算术选通反馈结构,3 GALGAL采用先进的电改写CMOS(E2CMOS,Electrically Erasable CMOS)工艺,数秒内即可完成芯片的擦除和编程过程,还可设置加密。GAL与PAL器件的不同是其输出采用了输出逻辑宏单元(OLMC),可编程功能更强,GAL器件可应用于数字信号处理、图形图像处理、存储器控制、以微处理器为基础的系统、总线接口、通信工业控制等领域。一个GAL芯片可以实现既有组合逻辑功能又有时序逻辑功能的数字小系统。在研制和开发数字系统时更为方便。目前较常用的产品有两种:GAL16V8(20引脚)和GAL20V8(24引脚)。下面以GAL16V8为例来说明GAL的结构。图所示为其原理图及引脚图。,图8.3.8 GAL16V8的原理图及引脚图(a)原理图;(b)引脚图,1)基本组成可编程与阵列由88个与门构成,每个与门有32个输入端,所以形成32列64行=2048个编程单元,即在与阵列中隐含了一个2 K的E2PROM。有8个输出逻辑宏单元OLMC(Output Logic Macrocell)。有16个具有互补输出的缓冲器,其中8个为输入缓冲器,接29引脚(引脚29只能做输入端),另外8个为输出逻辑宏单元,反馈到输入列线的缓冲器。,2)输出逻辑宏单元OLMC的结构8个输出逻辑宏单元OLMC(12)OLMC(19)的内部结构完全相同,如图8.3.9所示,均由8输入或门、异或门、1个D触发器和4个数据选择器所组成,但外部连线稍有不同,图中n表示本级引脚号,m表示邻级引脚号。,图8.3.9 输出逻辑宏单元OLMC,GAL中有4个结构控制字:SYN、AC0、AC1(n)、XOR(n),用以控制将OLMC配置成实现各种组合逻辑和时序逻辑功能。这4个控制字不受GAL外部引脚的控制,而是在对GAL编程过程中由软件翻译用户源程序后自动设置。其中SYN和AC0所设置的值对8个OLMC均相同,而AC1(n)和XOR(n)对不同OLMC则可能有不同的值。,4个数据选择器:乘积项数据选择器用于控制来自于与阵列的第一乘积项,控制信号为AC0和AC1(n)。由图8.3.9可知,AC0和AC1(n)中任何一个为0时,A0=1,第一乘积项被选中,成为或门的一项输入;而当AC0AC1(n)=11时,A0=0,低电平被送到或门,作为或门的开门信号。输出数据选择器:用于控制输出是组合的还是寄存的。其控制信号也是AC0和AC1(n)。由图8.3.9可知,控制字AC0和AC1(n)通过或非门后接至数据选择器的使能端A0,控制字如表8.3.3所示。当AC0 AC1(n)=10时,Y0=Q,输出是寄存的。当AC0、AC1(n)处于其他状态时,输出数据选择器将异或输出值送到输出三态缓冲器,输出是组合的。,三态数据选择器:由图8.3.9可知,它在AC0和AC1(n)的控制下,从4路信号中选一路信号作为输出三态缓冲器使能端的控制信号。AC0和AC1(n)对输出三态缓冲器的全部控制功能如表所示。,表8.3.3 输出数据选择器的控制功能,表8.3.4 三态数据选择器的控制功能,表8.3.5 反馈数据选择器控制功能,3)输出逻辑宏单元OLMC的功能配置 由于GAL器件具有用户可编程的输出逻辑宏单元,因此通过编程软件能自动设置4个结构控制字SYN、AC0、AC1(n)、XOR(n)的组态,使OLMC能配置成如图8.3.10所示的5种电路结构和表8.3.6所示的5种输出工作方式。有寄存器的组合输出方式,是指在8个输出逻辑宏单元中,有的配置成组合输出,有的配置成寄存器输出。纯寄存器输出方式配置对8个OLMC都适用。,图8.3.10 OLMC的5种组态结构方式(a)纯输入方式;(b)纯组合输出方式;(c)三态控制的组合输出方式;(d)有寄存器的组合输出方式;(e)纯寄存器输出方式,图8.3.10 OLMC的5种组态结构方式(a)纯输入方式;(b)纯组合输出方式;(c)三态控制的组合输出方式;(d)有寄存器的组合输出方式;(e)纯寄存器输出方式,表8.3.6 OLMC的工作方式,8.3.3 高密度阵列型PLD的基本结构EPLD和CPLD是从PAL、GAL发展起来的高密度阵列型PLD器件。它们大多采用了CMOS EPROM、EPROM和快闪存储器等编程技术,具有高密度、高速度、低功耗等特点。目前各主要半导体公司(Xilinx、Altera、Lattice、AMD等)生产的高密度PLD产品有各自的特点,但总体结构基本相同。大多数EPLD和CPLD器件中至少包含了3种结构:可编程逻辑宏单元(也称为通用逻辑模块GLB,Generic Logic Block)、可编程I/O单元、可编程内部连线。,在系统可编程逻辑器件(ispPLD)是Lattice公司于20世纪90年代推出的阵列型在系统可编程高密度PLD器件,图8.3.11为ispLSI1032的电路结构框图,它将整个芯片分成几个区,每个区有自己的通用逻辑模块、可编程的输出布线区 ORP(Output Routing Pool)、编程控制电路和输入输出单元 IOC(IO Cell)。各区之间的联系通过一个可编程的全局布线区 GRP(Global Routing Pool)来实现。这种结构的优点是每个区的阵列传输路径短,可减少传输延迟时间。,图8.3.11 ispLSI1032的电路结构框图,1.可编程逻辑宏单元可编程逻辑宏单元主要包括与或阵列、可编程触发器和多路选择器等电路,能独立地配置为组合或时序工作方式。EPLD器件和GAL器件相似,其逻辑宏单元和I/O做在一起,称为输出逻辑宏单元(OLMC),但其与阵列及宏单元数比GAL大得多。CPLD器件的宏单元在内部,如图8.3.11电路中所示的GLB单元。EPLD和CPLD除了高密度外,其很多优点也反映在可编程逻辑宏单元上。可编程逻辑宏单元在电路上做了以下改进:,1)与或逻辑阵列中的改进有的EPLD的与或逻辑阵列中每一组乘积项的数目不完全相等,这既便于产生不同项数的与或逻辑函数,又有利于提高乘积项的利用率。乘积项共享的可编程结构,可使与逻辑阵列的乘积项得到充分利用。在EPLD和CPLD的宏单元中,可以借助可编程开关将同一单元(或其他单元)中的或门与之联合起来使用,或者在每个宏单元中提供未使用的乘积项供其他宏单元使用和共享。图8.3.12所示为EPM7128E乘积项共享电路。由图可知,乘积项可以单独送出,或相加,或并联扩展到相邻宏单元,每个共享乘积项可以被任意宏单元共享使用。所以,乘积项共享的可编程结构提高了资源的利用率,可快速实现复杂的逻辑函数。,图8.3.12 EPM7128E的乘积项共享结构,2)多触发器结构和“隐埋”触发器结构GAL的OLMC中只有一个触发器,而EPLD和CPLD的宏单元内通常含有2个或2个以上的触发器,其中只有一个触发器与输出端相连,其余触发器的输出不与输出端相连,可以通过相应的缓冲电路反馈到与阵列,从而与其他触发器一起构成较复杂的时序电路,这些不与输出端相连的触发器就叫做“隐埋”触发器。这种结构可以做到不增加芯片引脚数,只增加触发器数目,就可增加其内部资源。图为EPLD器件ATV750的此类宏单元结构。,图8.3.13 ATV750的OLMC结构,3)可编程时钟选择GAL器件一般只能实现同步时序电路,而EPLD和CPLD的触发器工作方式可以同步,也可以异步,还有预置和置零功能,使EPLD和CPLD既可用于同步时序电路的设计,也可用于异步时序电路的设计。图8.3.13中,有两个触发器,每个触发器的CLK、SP(预置)和AR(清零)都是独立的,分别由与逻辑阵列的一个乘积项给出,是可编程的异步工作方式。每个触发器的输出都直接反馈到与逻辑阵列,可为时序逻辑电路的设计提供更多方便。,2.可编程输入/输出单元可编程输入/输出单元简称I/O单元或IOC,一般阵列型高密度PLD只有少数几个专用输入端,大部分端口为可编程的IOC电路结构。图8.3.14(a)所示为器件ispLSI 1016的IOC结构图,由输入缓冲器、触发器、三态输出缓冲器和几个可编程的数据选择器组成。触发器的工作方式有两种:RL=0时,被设置成锁存器;当RL=1时,被设置成边沿触发器。可编程数据选择器编程状态的不同组合,可以使IOC有不同组态,如图8.3.14(b)所示。,图8.3.14 ispLSI 1016 的IOC结构和组态(a)IOC结构;(b)IOC的各种编程组态,图8.3.14 ispLSI 1016 的IOC结构和组态(a)IOC结构;(b)IOC的各种编程组态,可编程的数据选择器MUX1用于控制三态输出缓冲器的工作状态。MUX2用于选择输出信号的传送通道。MUX3用于选择输出极性。MUX4用于选择输入方式:在同步输入方式下,输入信号加到触发器的输入端后在时钟信号IOCLK到达时被存入触发器,再经MUX4送到全局布线区;在异步输入方式下,输入信号直接经MUX4送到全局布线区。MUX5和MUX6用于时钟信号的来源和极性的选择。,3 可编程连线阵列可编程连线阵列的作用是在各逻辑宏单元和IOC之间提供互连网络。在ispPLD器件中,可编程连线阵列又分为全局布线区(GRP)和输出布线区(ORP)两部分,如图8.3.11所示。GRP和ORP都是可编程的矩阵网络,网络的每个交叉点是否接通受一位编程单元状态的控制。通过对GRP的编程,可以实现片内所有GLB之间的互相连接以及IOC与GRP的连接。通过对ORP的编程,可以使各个分区中的任何一个GLB与一个IOC相连。,4.在系统可编程通用数字开关(ispGDS)ispGDS(Generic Doptal Switch)用于多片ISPPLD构成的数字系统中,通过ispGDS可以重新设置每个ISPPLD的组态,改变它们之间的连接以及它们与外围电路(如负载电路、显示器件等)的连接。图8.3.15(a)所示为在系统可编程通用数字开关ispGDS22的结构图,它由可编程的开关矩阵和输入输出单元 IOC组成。图(b)所示为其 IOC的结构。,图8.3.15 在系统可编程通用数字开关ispGDS22(a)结构;(b)输入输出单元(IOC),IOC的工作方式受编程信号C0、C1、C2的控制。当C0为低电平时,输出三态缓冲器处于工作状态,电路工作在输出方式。此时,数据选择器根据C1C2的编程状态从4个输入中选中一个经输出三态缓冲器送到输出端。当C1C2=11时,输出来自开关矩阵的信号;当C1C2=10时,输出的是反相的来自开关矩阵的信号;当C1C2为01和00时,输出端被分别设置为高电平和低电平。开关矩阵中的每个交叉点是否接通受一位编程单元的状态控制,通过编程,可将A列中的任一IOC与B列中的任一IOC接通。,8.4 单元型可编程逻辑器件(FPGA),8.4.1 FPGA的分类1.按可编程逻辑块的大小分类按构成FPGA的基本逻辑单元可编程逻辑块的大小分类,FPGA可分为细粒度结构和粗粒度结构。细粒度FPGA的资源利用率较高,但实现复杂逻辑功能时速度较慢。粗粒度FPGA完成复杂逻辑功能使用的逻辑块和内部连线少,因此性能较好,但资源利用率较低。,2.按互连结构分类按互连结构FPGA可分为分段互连型和连续互连型FPGA。分段互连型FPGA中有不同长度的多种金属线,各线之间通过开关矩阵或反熔丝编程连接。这种结构走线灵活,但走线延时不可预测,设计修改会引起延时性能变化。连续互连型FPGA通常是利用贯穿于整个芯片的相同长度的金属线来实现逻辑功能块之间的互连,因而布线延时是固定的、可预测的。,3.按编程特性分类根据采用的开关元件不同,FPGA可分为一次性编程型和可重复编程型。一次性编程型FPGA采用反熔丝型开关元件。这种器件的优点是体积小、集成度高、互连特性阻抗低、寄生电容小、速度高,但是只能一次性编程,比较适合于定型产品和大批量应用。可重复编程型FPGA采用SRAM或快闪EPROM控制的开关元件,其芯片中每个逻辑块的功能以及它们之间的互连模式由存储在芯片中的SRAM或快闪存储器EPROM中的数据决定。,SRAM型开关的FPGA是易失型器件。每次重新加电,FPGA都要重新装入配置数据。其优点是可重复编程,系统上电时,给FPGA加载不同的配置数据,就可实现不同的硬件功能,即实现系统功能的动态重构。采用快闪EPROM控制开关的FPGA具有非易失性和可重复编程的双重优点。但在编程的灵活性上不如SRAM型FPGA,不能实现动态重构,其静态功耗也较大。,8.4.2 FPGA的基本结构1.Xilinx公司FPGA的结构特点表8.4.1为Xilinx公司的XC系列产品的基本逻辑门、输入/输出模块IOB(InputOutput Block)、触发器以及可编程逻辑块CLB(Configurable Logic Block)的容量。实际工作条件如表 8.4.2所示。由表可知,FPGA的逻辑容量密度大,集成度高,可大大减少印制电路板的空间,降低系统功耗,同时还可提高系统设计的工艺性和产品的可靠性。,表8.4.1 Xilinx公司的XC系列,表8.4.2 XC系列的实际工作条件,XC系列FPGA的基本结构为逻辑单元阵列 LCA(Logic Cell Array)分布结构。LCA主要是由可配置存储器SRAM阵列、可编程逻辑块CLB矩阵及周围的输入输出模块IOB、可编程内部连线PI(Programmable Interconnect)构成的。图8.4.1为 FPGA结构示意图,下面对各部分进行简单介绍。,图8.4.1 FPGA平面结构示意图,1)可配置存储器SRAM(Static RAM)静态存储器(SRAM)以点阵形式分布于FPGA器件芯片中。对于FPGA器件的编程,就是通过对SRAM加载不同的配置数据,来决定和控制各个CLB、IOB及PI的逻辑功能及它们之间的相互连接关系,完成对芯片的设计。图示出了 FPGA中 SRAM的基本单元结构。,图8.4.2 SRAM的基本单元结构,2)可编程逻辑块(CLB)CLB由可编程的组合逻辑块和寄存器组成。寄存器可由组合逻辑块或CLB的输出装入信息。寄存器的输出也可以驱动组合逻辑部分。FPGA的不同系列产品,其CLB的功能原理相同,但结构和性能有差异。图8.4.3(a)所示为XC4000系列的CLB结构框图,通过对它的3个函数发生器G、F、H编程可以实现图(b)所示的三种配置模式。,图8.4.3 XC4000系列的CLB(a)结构框图;(b)不同配置模式,图8.4.3 XC4000系列的CLB(a)结构框图;(b)不同配置模式,通过对CLB内部的数据选择器编程,逻辑函数发生器G、F、H的输出可以连接到CLB内部触发器,或者直接连接到CLB的输出端X或Y。G和F均为查找表结构,其工作原理类似于ROM,其输入等效于ROM的地址。通过查找ROM中的地址可以得到相应的组合逻辑函数输出。此外,当信号变换电路设置存储器功能有效时,G和F还可以被定义为器件内的高速RAM使用。,3)可编程输入输出模块(IOB)IOB模块分布于芯片四周,可以通过编程实现不同的逻辑功能和逻辑接口的需要。例如,XC30003100和 XC4000系列器件的每个 IOB控制一个外部引脚,可以通过编程使该引脚定义为输入、输出或双向传输3种功能。XC4000系列的IOB还增加了时钟极性、输出缓冲器配置等可选择项,使逻辑设计更灵活。图所示为XC4000系列的IOB结构。,图8.4.4 XC4000系列的IOB结构,4)可编程的内部连线(PI)在SRAM控制下,通过对PI的配置、定义,将CLB和IOB进行组合以实现系统的逻辑功能。FPGA器件的PI主要由金属线段组成。XC200030003100系列的 PI分布于CLB阵列周围,有通用连线、长线、全局连线、直接连线等几种。通用连线主要用于CLB之间的连接;长线用于长距离和多分支信号的传送;全局连线用于输送公共信号;直接连线用于相邻的CLB的信号端之间的直接相连。PI通过SRAM配置控制的可编程连接点与CLB、IOB和开关矩阵SM(Switching Matrices)相连,实现系统的布线。图8.4.5为PI布局情况。XC4000系列的PI采用分段互连资源结构,有3种内部连线:单长线、双长线和长线,采用块与块之间对称的周边的可编程开关点和开关矩阵结构的金属线连接,因此布线方式更多、更灵活。,图8.4.5 FPGA的内部连线,5)晶体振荡器电路FPGA芯片内提供了一个高速反相器,用于和外接晶体振荡器相连接,形成振荡电路。其原理如图8.4.6所示。XC4000系列中还设有分频器,把晶振信号分频,输出各种时钟信号来满足系统需要。,图8.4.6 FPGA的晶体振荡器电路,2.Altera公司的FLEX系列FPGA器件Altera公司的FLEX系列FPGA器件包括FLEX10K、FLEX20K、FLEX6000和FLEX8000等系列,其中FLEX10K系列是一种嵌入式可编程逻辑器件,具有密度高、成本低、功耗小等特点。该系列包括FLEX10K、FLEX10KA、FLEX10KB、FLEX10KV、FLEX10KE等5个子系列。表8.4.3列出了FLEX10K系列典型器件的性能。图为FLEX10K的结构框图。下面进行简单介绍。,图8.4.7 FLEX10K的结构框图,表8.4.3 FLEX10K系列典型器件的性能,1)嵌入式阵列嵌入式阵列由一系列嵌入式阵列块(EAB,Embedded Array Block)构成。EAB是在输入/输出口上带有寄存器的柔性(可变更)RAM块,可单独使用,也可组合起来使用。在要实现存储器功能时,每个EAB可提供2048个存储位来构造RAM、ROM及双口RAM等。在要实现乘法器、微控制器、状态机及复杂逻辑时,每个EAB可提供100600个门。,2)逻辑阵列逻辑阵列由一系列逻辑阵列块(LAB)组成。每个LAB相当于96个可用逻辑门,可以构成一个中规模的逻辑块,如8位计数器、地址译码器或状态机等。也可以将多个LAB组合起来构成一个更大规模的逻辑块。,3)Fast Track(快速通道)互连Fast Track是纵横贯穿整个器件长宽的一系列水平和垂直的连续式布线通道,可以灵活快速地实现器件内部信号的互连和器件引脚之间的信号互连。4)I/O单元(IOE)IOE位于Fast Track行线和列线的两端,每个I/O引脚由一个IOE馈接。每个IOE含有一个双向缓冲器和一个可作为输入/输出/双向寄存器的触发器。IOE可提供输入信号,建立保持、输出信号延时、编程支持、摆率控制、三态缓冲和漏极开路输出等功能。,8.5 可编程逻辑器件的编程设计,8.5.1 低密度可编程逻辑器件的编程设计1.低密度可编程逻辑器件(LDPLD)的编程工具一般LDPLD器件的编程工具有编程软件、编程器和计算机。1)编程软件 目前流行的编程软件是高级编译型软件,如 ABEL、CUPL和 DASHGATES。这类软件通用性强,具有逻辑化简、模拟以及自动生成设计文件等功能。,2)编程器 编程器有专用型的,也有通用型的。例如SUPERPRO通用编程器,它适用于IBM PC、XT、AT及808688、80X86兼容机等。3)计算机 一台配有RS232异步串行通信口的PCXTAT计算机或其兼容机,机内至少需有512 KB的RAM,并具有两个软盘驱动器(最好有硬盘),用MSDOS 2.1以上的版本。也可以在计算中心的工作站上进行。,2.使用ABEL编程软件对PLD的编程过程使用ABEL编程软件对PLD进行编程的过程如下:(1)根据设计任务,进行逻辑功能描述。主要是正确地表示出输出与输入的逻辑关系,用真值表、逻辑方程或状态图等都可以。(2)根据输出与输入的逻辑关系及所设计电路的技术要求选择合适的PLD芯片。,(3)选择编程软件及相应编程语言,编写源文件,输入计算机,形成编程文件。按照所应用的设计语言(ABELHDL)的要求,编写源文件(即设计文件),源文件是按编程软件的语言格式写出的输入与输出之间的逻辑关系程序,它们由描述逻辑设计的专用高级语言和把逻辑语言转换为编程器下载文件的语言处理程序组成。源文件应包含对逻辑设计完善的描述,可选择逻辑方程式、真值表、状态图、原理图等来描述逻辑功能。设计仿真以及基本管理信息,须列出所用芯片的型号,并给各引脚赋以相应变量,然后在编程软件的支持下,将源文件用文本编辑软件输入 PC机。,(4)利用编译软件(ABEL)对源程序进行语法分析、逻辑化简并生成一些中间文件和一个JEDEC文件(也称为熔丝图文件,含有器件编程信息的计算机文件,电子器件工程联合会制定的标准格式,简称JED文件)。JEDEC文件是一种标准文件,用来作为PC机与编程器之间信息传递的媒介。此外,还生成一个文本文件(包含有关器件设计的信息)。例如PAL处于编程方式时,就是将芯片上各行线和各列线交叉点上的熔丝,根据逻辑函数表达式按需要进行熔断或保留,所以屏幕上将显示出编程后的熔丝图。,(5)操作运行逻辑功能模拟程序,以便在对PLD器件编程之前检验逻辑设计的正确性。(6)将编程器经RS232接口与PC机相连,要编程的PLD器件插入编程器的插座上,把上面形成的JEDEC文件下载到编程器,对芯片完成编程设计。,8.5.2 高密度可编程逻辑器件的编程设计1.ISP的基本原理和意义ISP技术不需要编程器,只需要通过计算机接口和编程电缆,直接对装配在目标系统或线路板上的PLD器件进行编程,成为产品后还可反复编程。通常把一次性编程的(如PROM)称为第一代PLD,把紫外线擦除的(如EPROM)称为第二代PLD,把电擦除的(采用E2CMOS工艺,如GAL)称为第三代PLD。第一、二、三代PLD器件的编程都是在编程器上进行的,第四代PLD器件采用ISP技术编程。,在系统编程时由于器件插在线路板上,器件各端口与电路其他部分相连,编程时用系统电源使系统处于工作状态,因此在系统编程的关键问题是ISP器件编程时如何与不必要的外部联系脱离。ISP器件都有一个编程使能信号端(ispEN),该端加无效电平时,器件与外电路相连;该端加有效电平时,器件所有IO端的三态缓冲器皆处于高阻状态,切断了芯片与外电路的不必要的联系,这时即可对芯片进行编程。,编程使能信号、方式控制信号、编程数据和其他命令都是由开发系统软件通过计算机并口提供,用编程电缆连接到器件上的。器件在编程时将有关输出反馈给计算机,以便对编程数据进行校验。ISP技术使数字系统设计的程序发生了根本变革,使硬件设计软件化了。现代数字系统设计已进入EDA时代。,利用ISP技术,可以先制作样机底板,并将部件和元器件全部安装在底板上,再用ISP开关器件按预定功能将它们连接起来,并按系统要求现场编程。如想改变设计,无须改变器件和线路,通过开发系统很快即可完成,因此可以大大缩短设计周期,降低成本。而且,硬件设备可以制成具有一定程度的通用性的多功能硬件,利用ISP技术根据具体应用场合重构其功能。高密度PLD器件引脚多、间距密,若多次插接,很容易造成引脚损伤。ISP技术使PLD器件一次安装,避免了引脚损伤,简化了工序,提高了系统可靠性。利用ISP技术,使得对系统的测试、维护和升级只要在现场用PC机和软件即能实现。,2.ISP器件的编程设计流程ISP器件的编程设计流程如图所示。下面做进一步说明。(1)设计阶段,主要是进行设计方案论证、系统设计和器件选择等工作。数字系统设计可以采用模块设计法、自顶向下(TopDown)设计法和自底向上设计法。其中,自顶向下设计法是目前常用的设计法,即首先从系统总功能入手,在顶层进行功能划分和结构设计,采用硬件描述语言对高层次的系统进行描述,并在系统级用仿真手段验证设计的正确性,然后再逐级设计底层。这种层次化设计方法支持模块化设计,底层模块可以反复被调用。,图8.5.1 ISP器件的编程设计流程,(2)在设计输入阶段,设计者须将所设计的系统或电路,按所选用的芯片及其相应可编程逻辑器件开发软件系统所要求的某种形式表示出来,并输入计算机。现在各PLD生产公司的可编程逻辑器件开发软件系统都支持以下方式:原理图(Schematic)输入方式,即使用开发系统提供的元器件库及各种符号和连线画出原理图的输入方式;硬件描述语言输入方式,即采用硬件描述语言,特别是VHDL、VerilogHDL、AHDL等行为描述语言描述系统行为的文本方式输入;,波形输入方式,即建立和编辑波形设计文件以及输入仿真向量和功能测试向量。以上3种设计输入方式中,第种方式最直观、容易实现仿真,便于观察信号和调整电路,但在系统复杂时效率低。第种方式优点最突出,便于实现复杂系统设计,效率高,是当前的使用趋势。,(3)设计处理是通过运行所使用的开发系统中的编译软件,对设计输入文件基本自动地进行下列处理:语法检查和设计规则检查:如检查原理图有无漏连信号线,信号有无双重来源,文本输入文件中关键字有无输错等语法错误;设计规则检验总的设计有无超出器件资源或规定的限制。如有错误,编译过程中会及时列出供设计者修改。逻辑优化和综合:编译软件会自动化简所有的逻辑方程或用户自建的宏,使设计占有资源最少,而且软件会将多个模块化设计文件合并综合为一个网表文件,使层次设计平面化。,适配和分割:确定优化后的逻辑设计能否与器件的宏单元和I/O单元适配,然后将设计分割为多个便于适配的小逻辑块形式映射到器件的相应宏单元中。如果整个设计不能装入一个芯片,则可以将其或自动、或由用户控制(部分或全部)分割成多块装入同系列的多片器件中。布局和布线:该项工作是在设计检验通过以后,由软件以最优的方式对所设计的系统进行布局和布线,并最后生成布线报告,提供有关设计中各部分资源的使用情况等信息。,生成编程数据文件:这是编程处理的最后一步,产生可供器件编程用的数据文件。对CPLD器件,是产生JEDEC文件;对FPGA器件,是生成位流数据文件(Bitstream Generation)。,(4)功能仿真和时序仿真设计校验:这两项工作是在设计处理过程中同时进行的。功能仿真在设计输入完成之后,选择具体器件进行编译之前进行,又称前仿真。仿真前,要先利用波形编辑器建立波形文件,或用硬件描述语言建立测试向量。仿真结果将会生成输出信号波形和报告文件,从中可观察到各个节点的信号变化。若发现错误,则返回设计输入中修改设计。时序仿真是在选择了具体器件并完成布局布线后进行的,又称后仿真或延时仿真。这时的仿真与器件的内部延时、具体的布局布线都密切相关,是与实际器件工作情况基本相同的仿真,对预测所设计的系统的性能和检查消除竞争冒险等很有必要。,(5)器件编程:对器件按编程数据和编程命令选择下述方式进行编程。,3.ISP器件的编程方式ISP器件的编程方式如下:(1)在PC机上利用PC机的接口和下载电缆对ISP器件编程。这种方法适用于多种ISP器件。在ISP器件的相应开发软件支持下,利用一根编程电缆(又称下载电缆)将PC机的接口与系统板上的ISP器件相连