第七章可编程逻辑器件计算机科学与工程系2第七章可编程逻辑器件7.1概述7.2可编程逻辑器件基础PLD逻辑表示法逻辑阵列的PLD表示法应用举例7.3通用阵列逻辑GAL计算机科学与工程系37.1概述可编程专用集成电路ASIC(ApplicationSpecificIntegratedCircuit)是面向用户特定用途或特定功能的大规模、超大规模集成电路。分类:按功能分为数字的、模拟的、数字和模拟混和三种。按制造方式分为全定制、半定制ASIC、可编程三种。计算机科学与工程系4根据芯片的集成度和结构复杂度分类简单可编程逻辑器件SPLD:集成度小于PALCE22V10或GAL22V10的PLD。特点是都具有可编程的与阵列、不可编程的或阵列、输出逻辑宏单元OLMC和输入输出逻辑单元IOC。复杂可编程逻辑器件CPLD:集成度大于PAL22V10或GAL22V10的PLD都可视为CPLD。CPLD在集成度和结构上呈现的特点是具有更大的与阵列和或阵列,增加了大量的宏单元和布线资源,触发器的数量明显增加。计算机科学与工程系5根据芯片的集成度和结构复杂度分类现场可编程逻辑门阵列FPGA:现场可编程门阵列FPGA是集成度和结构复杂度最高的可编程ASIC。运算器、乘法器、数字滤波器、二维卷积器等具有复杂算法的逻辑单元和信号处理单元的逻辑设计可选用FPGA实现。计算机科学与工程系6按制造技术和编程方式进行分类双极熔丝制造技术的可编程ASIC(Lattice的PAL系列)EECMOS制造技术的可编程ASIC(Lattice的GAL和ispLSI/pLSI)SRAM制造技术的可编程ASIC(Xilinx的FPGA,Altera的FPGA)反熔丝制造技术的可编程ASIC(Actel的FPGA)计算机科学与工程系7按制造技术和编程方式进行分类双极熔丝和反熔丝ASIC通常称为OTP(onetimeprogramming)器件而采用EECMOS和SRAM制造技术的可编程ASIC具有用户可重复编程的特性,可以实现电擦电写。计算机科学与工程系8按制造技术和编程方式进行分类用SRAM技术制造的FPGA则具有数据挥发性,又称易失性。具有挥发性的FPGA,当系统断电或掉电后,写入FPGA中的编程数据要丢失。因此,必须把要下载到FPGA的数据借用编程器固化到与其联用的EPROM或EEPROM中,待重新上电时,芯片将编程数据再下载到FPGA中。FPGA的数据挥发性,决定有些环境不宜选用。计算机科学与工程系9可编程ASIC的编程方式可编程ASIC的编程方式有两种:采用专用编程器进行编程在系统编程甩掉了专用编程器,而且也不用将芯片从电路系统取下,只利用计算机和一组下载电缆就可以在系统编程。Lattice和Xilinx等几家大公司现在都有在系统可编程ASIC产品。在系统编程方式方便了用户。计算机科学与工程系10可编程ASIC的一般开发步骤设计输入(entry)功能模拟(functionsimulation)逻辑分割(partitioning)布局和布线(placeandrouting)时间模拟(timingsimulation)写入下载数据(download)计算机科学与工程系11ASIC开发步骤流程图状态机输入逻辑图输入波形输入HDL输入设计输入功能模拟逻辑分割时间模拟编程下载设计输入布局布线器件验证YNNY图7-1ASIC开发步骤流程图计算机科学与工程系12TOP—DOWN设计思想自顶向下(TOP—DOWN)设计首先是从系统级开始入手。把系统分成若干基本单元模块,然后再把作为基本单元的这些模块分成下一层的子模块。顶层模块模块A模块B模块C模块A1模块A2模块B1模块B2模块C1模块C2模块C3图7-2top-down设计图计算机科学与工程系13TOP—DOWN设计思想采用TOP—DOWN层次结构化设计方法,设计者可在一个硬件系统的不同层次的模块下进行设计。总体设计师可以在上层模块级别上对其下层模块设计者所做的设计进行行为级模拟验证。在TOP—DOWN的设计过程中,划分每一个层次模块时要对目标模块做优化,在实现模块时要进行模拟仿真。虽然TOP—DOWN的设计过程是理想的,但它的缺点是得到的最小可实现的物理单元不标准,成本可能较高。计算机科学与工程系14BOTTOM—UP设计思想BOTTOM—UP层次结构化设计是TOP—DOWN设计的逆过程。它虽然也是从系统级开始的,即从图7-2中设计树的树根开始,但在层次模块划分时,首先考虑的是实现模块的基本物理单元是否存在,划分过程必须是从存在的基本单元出发。计算机科学与工程系15BOTTOM—UP设计思想设计树最末枝上的单元要么是已经制造出的单元,要么是已经开发成功的单元,或者是可以买得到的单元。自底向上(BOTTOM—UP)的设计过程采用的全是标准单元,通常比较经济。但完全采用自底向上的设计有时不能完全达到指定的设计目标要求。计算机科学与工程系16BOTTOM—UP设计思想用可编程ASIC实现一个好的电子系统设计通常采用TOP—DOWN和BOTTOM—UP两种方法的结合,充分考虑设计过程中多个指标的平衡。计算机科学与工程系17设计库及库元件在层次设计中所用的模块有两种:预先设计好的标准模块由用户设计的具有特定应用功能的模块前者一般要存放在EDA开发系统中各种类型的文件库之中,后者必须经过模型仿真和调试证明无误后,建立一个图形符号存放在用户的设计库中准备在更上层的设计中使用。计算机科学与工程系18设计库及库元件设计库中比较高级的模块一般由两个模型构成:模块的图形符号模块的功能模型图形符号在建立原理图时使用,功能模型在逻辑模拟仿真时使用。计算机科学与工程系19设计库及库元件模块的功能模型可以是逻辑图形式,也可以是VHDL描述的,还可以是真值表或逻辑方程式描述的。一个已知的图形符号可以用来代表一个或几个功能模型,这些模型的功能相同,参数可以不同。例如2输入与非门7400、74LS00,74S00,功能相同,但是传输延时,功耗不相同。计算机科学与工程系20画层次原理图画层次原理图类似于用逻辑门符号画一个逻辑图,先将选用的模块符号和连结器符号放在画页上,然后用连线将它们连结起来,最后将选用的符号名放在相应的模块及其结点上。选用符号名要注意遵循以下规则:一般把在一个层次原理图中所使用的模块的每一个拷贝叫做这个模块的例化。计算机科学与工程系21画层次原理图为了模拟仿真和建立设计文件,每个例化都要起一个名字。AdderModule:FA4KeypadinputStorageregisterDisplaydirver4位全加器模块FA4起名为Adder。计算机科学与工程系22画层次原理图Adder的模块由4个一位全加器子模块FA1实现,这四个子模块分别起名为add0、add1、add2、add3。AdderModule:FA4KeypadinputStorageregisterDisplaydirveradd0Moudle:FA1add1Moudle:FA1add2Moudle:FA1add3Moudle:FA1a0b0a1a2a3b1b2b3s0s1s2s3GNDNC计算机科学与工程系23画层次原理图构成一位全加器的各个逻辑门及其信号线也要起一个名,它们的名字分别是X1、X2、A1、A2、A3、R1。A1X1X2R1A2A3abcinscoutx1计算机科学与工程系24画层次原理图为了调试或模拟仿真,常常要研究模块中的一个指定信号。例如,假设要研究图7-3中1位全加器FA1的工作情况,需要观察完整系统模拟时的信号x1的值。因为有4个FA1的例化,例化名称要被合并成如下的信号名,顶层模块名/次层模块名:信号名。因此,要监视全加器add2这个例化中信号线x1的时候,这个信号名应该写成Adder/add2:x1通过上述的书写规则,就可指定顶层模块中adder中的模块add2的信号x1,这个起名规则可以扩展到任何一个层次。计算机科学与工程系25层次联接器符号和总线为了建立层次原理图,一个抽象级别的模块输入和输出引脚的名称要与次层模块原理图相应信号的名称保持唯一性或者一致性,如图7-4所示。A1X1X2R1A2A3abcinscoutx1Module:FA1abcinscout输入连接器输出连接器计算机科学与工程系26层次联接器符号和总线当模块有多重输入和输出信号时,层次的相互连接器画成如图7-5所示的总线形式。A(3:0)={A(3)A(2)A(1)A(0)}B(3:0)={B(3)B(2)B(1)B(0)}S(3:0)={S(3)S(2)S(1)S(0)}FA4A(3:0)B(3:0)S(3:0)A(0)A(1)A(2)A(3)B(0)B(1)B(2)B(3)S(0)S(1)S(2)S(3)A0A1A2A3B0B1B2B3S0S1S2S3(a)计算机科学与工程系27层次联接器符号和总线为了进一步简化模块原理图画法,有时常常在模块上定义多重引脚,如图7-5(b)所示。PinA(3:0)PinS(3:0)PinB(3:0)A(3:0)B(3:0)S(3:0)FA4(b)每个多重引脚代表一组相关信号的集合,允许把总线直接联接到模块的引脚上,但是必须清楚每条总线代表的是4个信号的联接。计算机科学与工程系28层次化设计的模拟采用层次设计实现的系统必须进行设计模拟和验证。一个层次设计中最底层的元件或模块必须首先进行模拟仿真,当其工作正确之后,再进行高一抽象级别模块的模拟仿真。最后还要对最上层系统进行模拟仿真,最终完成系统设计。计算机科学与工程系29层次化设计的模拟在模拟仿真时,首先要将模块用相应的电路来代替,称为展平,展平工作一直做到最底层模块都用基本的逻辑门实现为止。在展平过程中所有元件及所有的信号线都必须有指定过的名称。模拟仿真结果可以是给出正确的波形,也可以是给出一些时延参数。图6给出的是用总线表示的波形。计算机科学与工程系30层次化设计的模拟图6给出的是用总线表示的波形。01111011101100000000S(3:0)01100110011001100000A(3:0)00010001010101010000B(3:0)1210750TimeA(3:0)B(3:0)S(3:0)000000000000011001100101000110110111051015Time表格形式的模拟值波形表示的模拟值计算机科学与工程系317.2可编程逻辑器件基础⒈PLD的逻辑表示⑴PLD中阵列及其阵列交叉点的逻辑表示⑵PLD中基本逻辑单元的PLD表示⒉逻辑阵列的PLD表示法应用举例计算机科学与工程系32⒈PLD的逻辑表示⑴PLD中阵列及其阵列交叉点的逻辑表示①PLD中阵列交叉点的逻辑表示②PLD中与阵列和或阵列的逻辑表示计算机科学与工程系33①PLD中阵列交叉点的逻辑表示PLD逻辑阵列中交叉点的连接方式采用图7-7所示的几种逻辑表示。(a)(b)(c)(a)表示实体连结,就是行线和列线在这个交叉点处实在连接,这个交叉点是不可编程点,在交叉点处打上实心点。计算机科学与工程系34①PLD中阵列交叉点的逻辑表示PLD逻辑阵列中交叉点的连接方式采用图7-7所示的几种逻辑表示。(a)(b)(c)(b)表示可编程连接。无论×或表示该符号所在行线和列线交叉处是可编程点,具有一个可编程单元。计算机科学与工程系35①PLD中阵列交叉点的逻辑表示PLD逻辑阵列中交叉点的连接方式采用图7-7所示的几种逻辑表示。(a)(b)(c)在采用熔丝工艺的PLD器件中,器件出厂后用户编程之前,所有可编程点处的熔丝都处于接通状态,习惯上都用×表示熔丝接通,因此可编程点上处处都打×或。计算机科学与工程系36①PLD中阵列交叉点的逻辑表示PLD逻辑阵列中交叉点的连接方式采用图7-7所示的几种逻辑表示。(a)(b)(c)PLD器件被用户编程后