1第二章可编程逻辑器件《EDA技术》第二讲电气与电子工程学院李文娟2主要内容§2.1可编程逻辑器件概述§2.3CPLD的结构与可编程原理§2.4FPGA的结构与可编程原理§2.2低密度PLD可编程原理§2.5FPGA/CPLD测试技术§2.7可编程逻辑器件应用选择原则§2.6可编程逻辑器件的编程与配置3§2.1可编程逻辑器件概述•PLD——ProgrammableLogicDevices•PLD——是大规模集成电路技术发展产物•PLD——是一种半定制的集成电路•PLD——结合计算机软件技术(EDA技术)可以快速、方便地构建数字系统4•两类数字电路•组合电路——在逻辑上输出总是当前输入状态的函数•时序电路——其输出是当前系统状态与当前输入状态的函数,它含有存储元件§2.1可编程逻辑器件概述(续1)组合电路时序电路5•任何组合电路(需要提供输入信号的非信号)可以由与门-非门二级电路实现•任何时序电路都可由组合电路加上存储元件(即锁存器、触发器、RAM)构成§2.1可编程逻辑器件概述(续2)6§2.1可编程逻辑器件概述(续3)•乘积项逻辑可编程结构•查找表可编程门阵列输入缓冲求反与阵列或阵列输出结构互补输入与项或项输出变量输入变量图2-1原理结构图7§2.1可编程逻辑器件概述(续4)一、可编程逻辑器件的发展历程(1)•现代电子产品——复杂、体积大、功耗大、可靠性差,用ASIC芯片进行设计•ASIC芯片设计——开发费用高,周期长,性价比低,产品市场竞争力差,降低产品生命周期•可编程逻辑器件——有一定连线的结构和已封装好的全功能的标准电路,可由用户根据需要自行完成编程设计,可进行硬件仿真,通过编程、“烧制”改变PLD内部电路的结构、逻辑关系或连线,从而实现了用户既是使用者又是设计者、制造者8§2.1可编程逻辑器件概述(续5)一、可编程逻辑器件的发展历程(2)•20世纪70年代—熔丝编程的PROM和PLA器件PROM(ProgrammableReadOnlyMemory)PLA(ProgrammableLogicArray)•20世纪70年代末—AMD公司推出PAL器件(ProgrammableArrayLogic)(改进的PLA)•20世纪80年代初—Lattice公司发明GAL(GenericArrayLogic)(电可擦写、灵活)9§2.1可编程逻辑器件概述(续6)一、可编程逻辑器件的发展历程(3)•20世纪80年代中—Xilinx公司提出现场可编程概念,生产了第一片FPGA;Altera公司推出EPLD(ErasablePLD)(更高的集成度、紫外线或电可擦除)•20世纪80年代末—Lattice公司提出在系统可编程技术,并推出一系列CPLD器件•20世纪90年代后—可编程逻辑集成电路技术飞速发展;可用逻辑门数超过百万门;出现了内嵌复杂功能模块(如加法器、乘法器等)的SoPC10§2.1可编程逻辑器件概述(续7)一、可编程逻辑器件的发展历程(4)•复杂可编程逻辑器件CPLD--ComplexProgrammableLogicDevice•现场可编程门阵列FPGA--FieldProgrammableGateArray1170年代80年代90年代PROM和PLA器件改进的PLA器件GAL器件FPGA器件EPLD器件CPLD器件内嵌复杂功能模块的SoPC一、可编程逻辑器件的发展历程(5)§2.1可编程逻辑器件概述(续8)图2-2器件发展历程图表12§2.1可编程逻辑器件概述(续9)二、可编程逻辑器件的分类(1)•按集成度来区分——简单PLD和复杂PLD(500门)(以GAL22V10为对比)(见图2-3)•从结构上来区分——乘积项结构器件和查找表结构器件(查找表—可编程门—阵列)•从编程工艺上划分———熔丝型、反熔丝型、EPROM型、EEPROM型、SRAM型和Flash型13图2-3按集成度(PLD)分类可编程逻辑器件(PLD)简单PLD复杂PLDPROMPALPLAGALCPLDFPGA§2.1可编程逻辑器件概述(续10)二、可编程逻辑器件的分类(2)14§2.1可编程逻辑器件概述(续11)二、可编程逻辑器件的分类(3)•熔丝(Fuse)型—根据设计的熔丝图文件来烧断对应的熔丝(PROM)(OTP-OneTimeProgramming)•反熔丝(Antifuse)型—在编程处通过击穿漏层使得两点之间获得导通。与熔丝烧断获得开路正好相反。某些FPGA(Actel的FPGA)(一次性可编程OTP)•EPROM型——紫外线擦除电PLD(较高的编程电压)(石英窗口)•EEPROM型——电可擦写编程器件(大部分CPLD和GAL)•SRAM型——SRAM查找表结构的器件(上电后需再次配置)•Flash型——Actel公司为解决反熔丝器件的只能一次性编程的不足,推出了采用Flash工艺的FPGA15§2.1可编程逻辑器件概述(续12)三、PLD相对于MCU的优势•MCU面临的难题–运行速度(通过CPU指令完成)(实时仿真、高速采样)–复位(工作初始)(复位须满足一定的电平条件和时间条件)(复位的可靠性)–程序跑飞(在强干扰或偶然因素下)16§2.1可编程逻辑器件概述(续13)三、PLD相对于MCU的优势•CPLD/FPGA的优势–高速性(时钟延迟为纳秒级)(超高速和实时测控)–高可靠性(同一芯片,易于管理和屏蔽)–编程方式(JTAG)–标准化设计语言17§2.2低密度PLD可编程原理2.2.1电路符号表示图2-4常用逻辑门符号与现有国标符号的对照182.2.1电路符号表示图2-5PLD的互补缓冲器图2-6PLD的互补输入图2-7PLD中与阵列表示图2-8PLD中或阵列的表示图2-9阵列线连接表示192.2.2PROM地址译码器存储单元阵列………0A1A1nA0W1W1pW0F1F1mFnp2图2-10PROM基本结构011n12011n1011n0AAAW...AAAWAAAWn其逻辑函数是:地址译码器202.2.2PROM图2-11PROM的逻辑阵列结构与阵列(不可编程)或阵列(可编程)………0A1A1nA0W1W1pW0F1F1mFnp201,011,111,1101,011,111,1100,010,110,10WMWMWMFWMWMWMFWMWMWMFmmpmpmpppp逻辑函数表示:212.2.2PROM图2-12PROM表达的PLD图阵列与阵列(固定)或阵列(可编程)0A1A1A1A0A0A1F0F图2-13用PROM完成半加器逻辑阵列与阵列(固定)或阵列(可编程)0A1A1A1A0A0A1F0FA1A0F1A1A0A1A0F0222.2.3PLA图2-14PLA逻辑阵列示意图与阵列(可编程)或阵列(可编程)0A1A1A1A0A0A1F0FPROM实现组合逻辑函数在输入变量增多时,存储单元利用率大大降低232.2.3PLA图2-15PLA与PROM的比较0A1A1F0F2A2F0A1A1F0F2A2FPLA不需要包含输入变量每个可能的最小项,仅仅需含的是在逻辑功能中实际要求的那些最小项--与或最简表达式(在全定制ASIC设计中使用)242.2.4PAL0A1A1F0F0A1A1F0F图2-16PAL结构图2-17PAL的常用表示各个逻辑函数输出化简,不必考虑公共乘积项;送到或门的乘积项数目固定,简化设计算法,也使单个输出乘积项为有限;多个乘积项,PAL通过输出反馈和互连的方式解决252.2.4PAL11100100R11100100RQQD11100100R11100100RVccSG1SL07SL17SG0SL0619I/O711100100R11100100RQQD11100100R11100100RVccSG1SL06SL16SG1SL0618I/O61CLK/I02I13I207815034781211151619202324272831图2-18一种PAL16V8的部分结构图262.2.5GAL207190347812111516192023242728311381518OLMCOLMC41623175243116OLMCOLMC63239157404714OLMCOLMC84855139566312OLMCOLMC11I/CLKIIIIIIIII/OEI/O/QI/O/QI/O/QI/O/QI/O/QI/O/QI/O/QI/O/QCLKOE图2-19GAL16V8的结构图1985.Lattice27GenericArrayLogic首次采用EEPROM工艺在输出部分增加了输出逻辑宏单元OLMC(OutputLogicMacroCell)可配置成都专用组合输出、专用输入、组合输出双向口、寄存器输出、寄存器输出双向口2.2.5GAL28逻辑宏单元输入/输出口输入口时钟信号输入三态控制可编程与阵列固定或阵列GAL16V8292.2.5GAL图2-20反馈输入结构图2-21输出反馈结构302.2.5GAL图2-22简单模式输出结构312.2.5GAL图2-23寄存器输出结构图2-24寄存器模式组合双向输出结构322.2.5GAL图2-25组合输出双向结构图2-26复合型组合输出结构33小结可编程逻辑器件发展及分类低密度PLD可编程原理34思考题•可编程逻辑器件有哪些种类?它们的共同点是什么?•OLMC是什么?有何功能?•什么是基于乘积项的可编程逻辑结构?