1/63EDA技术实用教程第2章FPGA/CPLD结构原理2/612/632.1概述KX康芯科技基本门组合电路时序电路输入缓冲电路与阵列或阵列输出缓冲电路输入输出……图2-1基本PLD器件的原理结构图与门、或门、非门、传输门组合电路,在逻辑上输出总是当前输入状态的函数。时序电路,其输出是当前系统状态与当前输入状态的函数,它含有存储元件。乘积项逻辑可编程3/613/63KX康芯科技2.1概述2.1.1可编程逻辑器件的发展历程PROM(ProgrammableReadOnlyMemory)PLA(ProgrammableLogicArray)PAL(ProgrammableArrayLogic)GAL(GenericArrayLogic)EPLDCPLDFPGA紫外线或电擦除PLD或阵列编程(1次)与或阵列均编程(1次)或阵列编程(1次)或阵列编程(多次)复杂PLD现场编程门阵列4/614/63KX康芯科技2.1概述2.1.2可编程逻辑器件的分类(按集成度)可编程逻辑器件(PLD)简单PLD复杂PLDPROMPALPLAGALCPLDFPGA图2-2PLD按集成度分类一类是芯片集成度较低的,早期出现的PROM、PLA、PAL、GAL都属于这类,可用的逻辑门数大约在500门以下,称为简单PLD。另一类是芯片集成度较高的,如现在大量使用的CPLD、FPGA器件,称为复杂PLD。一般以GAL22V10作为比对,集成度大于GAL22V10的称为复杂PLD,反之归类为简单PLD。5/615/632.1概述按编程工艺分类(1)熔丝(Fuse)型器件(编程使连接断开)。(2)反熔丝(Antifuse)型器件(编程使连接接通)。(3)EPROM型(紫外线擦除编程信息)。(4)EEPROM型(电擦除编程信息)。(5)SRAM型(只能每次开机现场编程信息)。(6)Flash型(在线编程,读写速度基本相同)。编程过程就是根据设计的熔丝图文件来烧断对应的熔丝,达到编程的目的。(一次性可编程)在编程处通过击穿漏层使得两点之间获得导通。与熔丝烧断获得开路正好相反。(一次性可编程)电可擦写编程(或阵列)器件,现有的大部分CPLD及GAL器件采用此类结构。它是对EPROM的工艺改进,不需要紫外线擦除,而是直接用电擦除。SRAM查找表结构的器件,大部分FPGA器件都采用此种编程工艺。这种编程方式在编程速度、编程要求上要优于前四种器件,不过SRAM型器件的编程信息存放在RAM中,在断电后编程信息就丢失了,再次上电需要再次编程(配置)。因而需要专用器件来完成这类配置操作。前四种器件在编程后是不丢失编程信息的。由于反熔丝结构的可编程逻辑器件只能一次性可编程,对于产品的研制和升级带来了麻烦。采用了反熔丝工艺的Actel公司,为了解决上述反熔丝器件的不足之处,推出了采用Flash工艺的FPGA,可以实现多次可编程,也可以做到掉电后不需要重新配置。称为紫外线擦除电可编程(或阵列)逻辑器件,是用较高的编程电压进行编程。当需要再次编程时,用紫外线进行擦除。与熔丝、反熔丝型不同,EPROM可多次编程。有时为降低生产成本,在制造EPROM型器件时不加用于紫外线擦除的石英窗口,于是就不能用紫外线擦除,而只能编程一次,也被称为OTP器件。6/616/63KX康芯科技2.2简单PLD结构原理2.2.1逻辑元件符号表示图2-3常用逻辑门符号与现有国标符号的对照7/617/63KX康芯科技2.2简单PLD结构原理2.2.1电路符号表示(描述PLD内部结构的专用电路符号)图2-4PLD的互补缓冲器图2-5PLD的互补输入图2-6PLD中与阵列表示固定连接编程连接未连接4输入与门原变量正反相输出(便于编程时连接)8/618/63KX康芯科技2.2简单PLD结构原理2.2.1电路符号表示图2-7PLD中或阵列的表示图2-8阵列线连接表示4输入或门(A、C编程连接,化简表达式F=A+C)9/619/63KX康芯科技2.2简单PLD结构原理2.2.2PROM地址译码器存储单元阵列………0A1A1nA0W1W1pW0F1F1mFnp20111201110110...AAAWAAAWAAAWnnnn图2-9PROM基本结构F0=Mp-1,0Wp-1+…+M1,0W1+M0,0W0F1=Mp-1,1Wp-1+…+M1,1W1+M0,1W0…..Fm-1=Mp-1,m-1Wp-1+…+M1,m-1W1+M0,m-1W0F=f(M,W)(M:存储单元位、W:译码线)与阵列逻辑结构或阵列逻辑结构10/6110/63KX康芯科技2.2简单PLD结构原理2.2.2PROM图2-10PROM的逻辑阵列结构与阵列(不可编程)或阵列(可编程)………0A1A1nA0W1W1pW0F1F1mFnp2译码器存储矩阵(编程改变单元值)11/6111/63KX康芯科技2.2简单PLD结构原理2.2.2PROM图2-11PROM表达的PLD阵列图与阵列(固定)或阵列(可编程)0A1A1A1A0A0A1F0F全译码(完全乘积项)可编程存储阵列(连通传送1,断开传送0)12/6112/63KX康芯科技3.2简单PLD结构原理3.2.2PROM(构成半加器)图3-12用PROM完成半加器逻辑阵列与阵列(固定)或阵列(可编程)0A1A1A1A0A0A1F0F进位输出C(C=A0∧A1)相加结果输出S(S=A0⊕A1)半加器真值表A1A0F1F0000001011001111013/6113/63KX康芯科技2.2简单PLD结构原理2.2.3PLA(与或阵列均编程)图2-13PLA逻辑阵列示意图与阵列(可编程)或阵列(可编程)0A1A1A1A0A0A1F0F14/6114/63KX康芯科技2.2简单PLD结构原理2.2.3PLA图2-14PLA与PROM的比较0A1A1F0F2A2F0A1A1F0F2A2F部分乘积项(可编程)完全乘积项15/6115/63KX康芯科技2.2简单可编程逻辑器件原理2.2.4PAL(只对与阵列编程、或阵列固定)图2-15PAL结构0A1A1F0F0A1A1F0F图2-16PAL的常用表示16/6116/63KX康芯科技图2-17一种PAL16(输入)V8(输出)的部分结构图11100100R11100100RQQD11100100R11100100RVccSG1SL07SL17SG0SL0619I/O711100100R11100100RQQD11100100R11100100RVccSG1SL06SL16SG1SL0618I/O61CLK/I02I13I207815034781211151619202324272831多路选择器(SG1SL0选择控制)加上D触发器,旨在实现时序电路的可编程。SG1SL0=10:时序电路编程模式(SG1、SL0:模式选择引脚)或逻辑正反向输出控制信号反馈输入引脚输出反馈信号输出引脚17/6117/63KX康芯科技207190347812111516192023242728311381518OLMCOLMC41623175243116OLMCOLMC63239157404714OLMCOLMC84855139566312OLMCOLMC11I/CLKIIIIIIIII/OEI/O/QI/O/QI/O/QI/O/QI/O/QI/O/QI/O/QI/O/QCLKOE图2-15PAL结构2.2.5GAL逻辑宏单元(三种输出模式)输出总控时钟总控18/6118/63KX康芯科技2.2简单PLD结构原理2.2.5GAL图2-19寄存器输出结构逻辑宏单元(寄存器输出结构)(1)寄存器模式——OLMC有两种输出结构:①寄存器输出结构(图2-19):异或门输出经D触发器至三态门;触发器的时钟端CLK连公共CLK引脚;三态门的使能端OE连公共OE引脚;信号反馈来自触发器。19/6119/63KX康芯科技2.2简单PLD结构原理2.2.5GAL图2-20寄存器模式组合双向输出结构控制输出引脚反馈输入(1)寄存器模式——OLMC有两种输出结构:②寄存器模式组合输出双向口结构(图2-20):输出三态门受控,输出反馈至本单元,组合输出无触发器。20/6120/63KX康芯科技2.2简单PLD结构原理2.2.5GAL图2-21组合输出双向结构(与图3-20类同)(2)复合模式——OLMC有两种输出结构:①组合输出双向口结构(图2-21):大致与寄存器模式下组合输出双向口结构相同;区别是引脚CLK、OE在寄存器模式下为专用公共引脚,不可它用。控制输出引脚反馈输入21/6121/63KX康芯科技2.2简单PLD结构原理2.2.5GAL图2-22复合型组合输出结构只有输出控制(2)复合模式——OLMC有两种输出结构:②组合输出结构(图2-22):无反馈,其他同组合输出双向口结构。22/6122/63KX康芯科技2.2简单PLD结构原理2.2.5GAL图2-23反馈输入结构只有引脚反馈输入(3)简单模式——OLMC可定义三种输出结构:①反馈输入结构(图2-23):输出三态门被禁止,该单元的“与-或”阵列没输出功能,但可作为相邻单元的信号反馈输入端,该单元反馈输入端的信号可连另一个相邻单元。23/6123/63KX康芯科技2.2简单PLD结构原理2.2.5GAL图2-24输出反馈结构将输出信号反馈输入(3)简单模式——OLMC可定义三种输出结构:②输出反馈结构(图2-24):输出三态门被恒定打开,该单元的“与-或”阵列不具有输出功能,但可作为相邻单元的信号反馈输入端。该单元的反馈输入端的信号可连另一个相邻单元。24/6124/63KX康芯科技2.2简单PLD结构原理2.2.5GAL图2-25简单模式输出结构输出信号不加控制(两态)(3)简单模式——OLMC可定义三种输出结构:③输出结构(图2-25):异或门输出不经触发器,直接通过使能的三态门输出。该单元的输出通过相邻单元反馈,此单元的信号反馈无效。25/6125/63KX康芯科技2.3CPLD的结构及其工作原理图2-26MAX7000系列的单个宏单元结构简单PLD器件被CPLD取代的原因如下:(1)阵列规模较小,资源不够用于设计数字系统。当设计较大的数字逻辑时,需要多片器件,性能、成本及设计周期都受影响。(2)片内寄存器资源不足,且寄存器的结构限制较多(如有的器件要求时钟共用),难以构成丰富的时序电路。(3)I/O不够灵活,如三态控制等,限制了片内资源的利用率。(4)编程不便,需用专用的编程工具,对于使用熔丝型的简单PLD更是不便。相对GAL在结构和集成规模有较大的改进为相邻宏单元共享的与逻辑来自相邻宏单元与逻辑扩展置位控制旁路寄存器输出复位控制寄存器输入寄存器时钟寄存器使能MAX7000包含32~256个宏单元,其单个宏单元结构如图3-26所示。每16个宏单元组成一个逻辑阵列块(LogicArrayBlock,LAB)。编程模式控制位26/6126/63KX康芯科技2.3CPLD的结构及其工作原理图2-27MAX7128S的结构1.逻辑阵列块(LAB)每个LAB由16个宏单元的阵列组成。每个LAB有下列输入信号:来自作为通用逻辑输入的PIA的36个信号。全局控制信号,用于寄存器辅助功能。从I/O引脚到寄存器的直接输入通道。MAX7000结构主要是由多个LAB组成的阵列以及它们之间的连线构成。多个LAB通过可编程连线阵列(PIA)和全局总线连接在一起,全局总线从所有的专用输入、I/O引脚和宏单元馈入信号。27/6127/63KX康芯科技2.3CPLD的结构及其工作原理2.宏单元MAX7000系列中的宏单元逻辑阵列乘积项选择矩阵可编程寄存器三种时钟输入模式全局时钟信号全局时钟信号由高电平有效的时钟信号使能用乘积项实现一个阵列时钟MAX7000系列中的宏单元由逻辑阵列(与)、乘积项选择矩阵(或)和可编程寄存器三个功能块组成,它们可以被单独地配置为时序逻辑和组合逻辑工作方式。逻辑阵列实现组合逻辑,可以给每个宏单元提