第一章PLD、VHDL与EDA1.1基本概念1.2PLD器件的分类和组成1.3PAL和GAL器件1.4CPLD和FPGA1.5EDA设计流程和工具1.1基本概念PLDVHDLEDAEDA--ElectronicDesignAutomationPLD--ProgrammableLogicDeviceVHDL--VeryhighspeedintegratedcircuitHardwareDescriptionLanguage.PLD是ASIC的一个重要分支。是芯片厂家作为一种通用型器件生产的半定制电路,是用户可配置的逻辑器件。用户可以通过对器件编程使之实现所需要的逻辑功能。它的成本比较低,使用灵活,设计周期短,而且可靠性高,承担风险小,因而很快得到普遍应用,发展非常迅速。(ASIC--ApplicationSpecificIntegratedCircuit--专用集成电路)数字IC分类:ASIC-如音乐芯片固定功能IC-如TTL、CMOSPLD-如CPLD、FPGA可编程逻辑器件的出现,改变了传统的数字系统设计方法。传统的数字系统设计:采用固定功能器件(通用型器件),通过设计电路来实现系统功能。采用可编程逻辑器件,通过芯片设计实现各种数字逻辑系统功能,由于引出端定义的灵活性,大大减轻了PCB设计的工作量和难度,从而有效的增强了设计的灵活性,提高了工作效率。PLD导致了EDA技术的发展,引起电子电路设计方法、手段、过程的变革,是电子电路设计、应用的方向。是电子工程师应掌握的专业技能。为什么要学这门课?PLD从20世纪70年代发展到现在,已形成了许多类型的产品,其结构、工艺、集成度、速度和性能等都在不断改进和提高。PLD的发展1970年制成的PROM是最早的可编程逻辑器件,它由全译码的与阵列和可编程的或阵列组成。由于阵列规模大,速度低,因此它的主要用途还是作存储器。20世纪70年代中期出现了可编程逻辑阵列(PLA—ProgrammableLogicArray)器件,它由可编程的与阵列和可编程的或阵列组成,虽然其阵列规模大为减小,提高了芯片的利用率,但由于编程复杂,支持PLA的开发软件有一定难度,因而也没有得到广泛应用。20世纪70年代末推出了可编程阵列逻辑(PAL—ProgrammableArrayLogic)器件,它由可编程的与阵列和固定的或阵列组成,采用熔丝编程方式,双极性工艺制造,器件的工作速度很高。由于它的输出结构种类很多,设计很灵活,是当时普遍应用的PLD。20世纪80年代中期Lattice公司发表了GAL(GenericArrayLogic)器件,它在PAL的基础上进一步改进,采用了输出逻辑宏单元(OLMC)的形式和E2PROM工艺结构,因而具有可擦除、可重复编程、数据可长期保存和可重新组合结构等优点。GAL比PAL使用更加灵活,它可以取代大部分SSI、MSI和PAL器件,所以在20世纪80年代得到广泛的应用。PAL和GAL都属于低密度PLD,其结构简单,设计灵活,但规模小,难以实现复杂的逻辑功能。20世纪80年代中期,随着集成电路工艺水平的不断提高,PLD突破了传统的单一结构,向着高密度、高速度、低功耗以及结构体系更灵活、适用范围更广泛的方向发展,因而出现了高密度的PLD。复杂可编程逻辑器件(CPLD—ComplexProgrammableLogicDevice)是在20世纪80年代中期,随着半导体工艺的不断完善,用户对器件集成度需求不断提高的形势下发展起来的产物。CPLD对简单PLD的结构和功能进行了扩展,具有更多的乘积项、更多的宏单元和更多的I∕O端口,增加了内部连线,改进了内部结构体系,因而设计更加灵活,其发展也非常迅速。现场可编程门阵列(FPGA—FieldProgrammableGateArray)是20世纪80年代中期推出的另一种类型的可编程逻辑器件,它由一组排列规则、组合灵活的可编程门阵列构成。FPGA的门阵列结构含有更多的I∕O端口和触发器资源,同时具有更复杂的布线结构,用户可通过编程将内部的逻辑单元连成任何复杂的数字系统。进入90年代后,可编程逻辑集成电路技术进入飞速发展时期。目前,CPLD和FPGA已成为设计数字电路或系统的首选器件。1.2PLD的组成和分类一、可编程逻辑器件的组成“与–或”形式的逻辑电路由产生乘积项的一组与门及求乘积项和的一组或门组成。这种结构有序的电路可以用矩阵表示。逻辑函数的常用表示法:与-或表达式所谓“编程”,就是按逻辑函数选择其中一些二极管“连接”或“不连接”,以便组成符合逻辑函数要求的乘积项。iPAABB012iYPPPPLD中常用的符号表示法012PABPABPAB01212201YPPABABAYPABYPPABABAB编程举例按需要,烧断某些熔丝。以形成所需要的逻辑表达式二、可编程逻辑器件的分类1.按集成度分类分类与阵列或阵列输出电路PROM固定可编程固定PLA可编程可编程固定PAL可编程固定固定GAL可编程固定可组态低密度PLD分类高密度可编程逻辑器件包括CPLD和FPGA等,其集成密度一般大于700门∕片低密度高密度2.按编程方式分类可编逻辑程器件按编程方式可分为两类:一类是一次性编程(OneTimeProgrammable,简称OTP)器件;另一类是可多次编程器件。OTP器件只允许对器件编程一次,编程后不能修改,其优点是集成度高、工作效率和可靠性高、抗干扰性强。可多次编程器件的优点是可多次修改设计,特别适用于系统样机的研制。3.按编程工艺分类可编逻辑程器件按编程工艺可分为三类:熔丝或反熔丝编程器件、浮栅编程器件和SRAM编程器件。熔丝或反熔丝编程器件为非易失一次编程器件,PROM、PAL采用了熔丝编程工艺,Actel公司的FPGA采用了反熔丝编程工艺。浮栅编程器件属于非易失可重复擦除器件,GAL、CPLD大都采用浮栅编程工艺。SRAM即静态存储器,属于易失性器件,Xilinx公司的FPGA便采用了这种技术。1.3PAL和GAL器件1.PAL器件的基本结构与阵列可编程,或阵列固定连接--基本结构形式。与门阵列熔丝编程。0YABCACBC2YABAB3YABAC1YABCABCABCPAL可用乘积之和的形式实现逻辑函数,每个输出是若干个乘积之和,其中乘积项数目不变。例用它来实现下列4个逻辑函数PAL16L8完整的内部结构图。内部有8个与或阵列和8个三态输出缓冲器。每个与或阵列由32输入端的与门和7输入端的或门组成。它有16个输入端(包括反馈)、8个输出端,每个输出中有8个乘积项,共有8×8=64个乘积项。其中每个输出中第一个乘积项为专用乘积项,用于控制三态输出缓冲器的输出。典型的PAL器件介绍2.GAL器件的基本结构在PAL基础上发展起来的GAL,在结构上采用了输出逻辑宏单元(OLMC—OutputLogicMacroCell)结构,在工艺上采用了先进的E2PROM的浮栅技术,从而具有功耗低、可电擦除和反复编程、速度快、数据可长期保存和可重新组合结构的特点。GAL器件比PAL器件功能更加全面,结构更加灵活,它可取代大部分中、小规模的数字集成电路和PAL器件,增加了数字系统设计的灵活性。GAL16V8由五部分组成:(1)8个输入缓冲器;(2)8个三态输出缓冲器;(3)8个输出反馈∕输入缓冲器;⑷8个输出逻辑宏单元;(5)可编程与门阵列形成64个乘积项,每个乘积项有32个输入,另外还有1个系统时钟CP输入缓冲器(引脚1)和1个三态输出使能OE输入缓冲器(引脚11)。典型GAL电路介绍GAL器件和一般PAL器件相比,在结构上的主要差异是输出结构可多次编程和改写,且根据需要可构成多种形式的输出结构。源自OLMCOLMC由四部分组成:(1)可编程异或门:,用结构控制字中的来选择输出信号的极性。(2)或阵列:同与阵列连接的8输入或门,构成了或阵列。(3)D触发器:使GAL可用于时序逻辑电路。(4)4个数据选择器:这些多路开关的状态,取决于设计者可编程的结构控制字和位的值,1.4CPAL和FPGA器件1.CPLD器件名称集成规模/门I/O端数宏单元数触发器数编程EPM95601200216560772E2PROMEPF10K101000134576720SRAMEPX81603200172160160SRAMPLSI332014000160320480E2PROMM5-51220000256512512E2PROM产品很多,结构不同,大多数CPLD器件中至少包含了三部分:可编程逻辑宏单元;可编程I∕O单元;可编程内部连线。部分CPLD、FPGA产品1.可编程逻辑宏单元逻辑宏单元主要包括与或阵列、可编程触发器和多路选择器等电路,能独立的配置为时序或组合工作方式。CPLD许多优点都反映在逻辑宏单元上:(1)共享相邻乘积项和结构在共享相邻乘积项和结构中,每个逻辑单元中含有两个或项输出,而每个或项均由固定的几个乘积项输入,如图8.5.1所示。每个或项输出均可连接到相邻的连接单元,甚至本单元中的两个或项都可用于相邻的两个逻辑单元中。这种结构提高了各单元或门的使用效率,可实现较为复杂的逻辑功能。(1)共享相邻乘积项和结构在此结构中,每个逻辑单元中含有两个或项输出,每个或项输出均可连接到相邻的连接单元,甚至本单元中的两个或项都可用于相邻的两个逻辑单元中。这种结构提高了各单元或门的使用效率,可实现较为复杂的逻辑功能。(2)多触发器结构和“隐埋”触发器结构在CPLD的宏单元内有两个或两个以上的触发器,其中只有一个触发器可与I∕O引出端相连,其余均为“隐埋”触发器。它们不与I∕O引出端相连,但有自己的内部输入信号,其输出可以通过相应的缓冲电路反馈到与阵列,从而可以构成较复杂的时序电路。(3)触发器类型可编程结构通过对输出触发器编程,可实现4种不同类型触发器结构,即JK、D、T和RS触发器。它们与逻辑宏单元相配置,可实现多种逻辑电路结构。I∕O单元是CPLD外部封装引脚和内部逻辑间的接口。每个I∕O单元对应一个封装引脚,通过对I∕O单元中可编程单元的编程,可将引脚定义为输入、输出和双向功能。2.可编程I∕O单元触发器有两种工作方式:当R∕L为高电平时,它被设置成边沿触发器;而当R∕L为低电平时,它被设置成锁存器。3.可编程连线阵列可编程连线阵列的作用是在各逻辑宏单元之间和I∕O单元之间提供互连网络。各逻辑宏单元通过可编程连线阵列接收来自专用输入或输出端的信号,并将宏单元的信号反馈到其需要到达的目的地。这种互连机制有很大的灵活性,它允许在不影响引脚分配的情况下改变内部的设计。2.FPGA现场可编程门阵列FPGA器件由三个可编程逻辑模块阵列和一个可配置的静态存储器(SARM)组成。这三个可编程逻辑模块阵列分别是:可配置逻辑模块(CLB—ConfigurableLogicBlocks)、输入∕输出模块(IOB—Input/OutputBlocks)和互连资源(ICR—InterconnectCapitalResource)。可配置逻辑模块CLB以实现设计者所需的逻辑功能。IOB为内部逻辑与器件封装引脚之间提供了可编程接口互连资源ICR位于器件内部的逻辑模块之间,经编程实现CLB与CLB以及CLB与IOB之间的互连。可配置逻辑模块(CLB)是FPGA中的基本逻辑单元电路,它能实现绝大多数的逻辑功能,每个CLB主要由组合逻辑函数发生器、触发器、编程数据存储单元和数据选择器等电路组成。CLB采用3个查找表结构的组合逻辑函数发生器F、G和H来实现组合逻辑函数,查找表结构工作原理类似于用ROM实现多种组合逻辑函数,F、G和H的输入等效于ROM的地址码,通过查找ROM中的地址表,可以得到相应的逻辑函数输出。可编程互连资源示意图1.5EDA设计流程和工具1.5.1电子系统的设计方法1.5.2EDA设计流程1.5.3MAX+PLUSII1.5.4VHDL1.5.1电子系统的设计方法系统硬件的设计是从选择具体逻辑元器件开始的,并