CopyrightbyBeileiXu可编程逻辑基础玩转可编程逻辑器件,你需要掌握一门硬件描述语言,VerilogHDL或VHDL了解可编程逻辑器件结构、内部资源熟悉可编程逻辑器件设计流程,熟悉集成开发工具如QuartusII、ISE熟悉数字电路设计基本知识参考资源EDA先锋工作室,王诚等编著,《AlteraFPGA/CPLD设计》(基础篇)(高级篇),人民邮电出版社,2005.为什么采用可编程逻辑器件减小面积,降低成本、功耗可编程逻辑器件无处不在主要内容数字逻辑设计的历史可编程逻辑器件的发展、分类、编程工艺简单PLD(PLA、PAL、GAL)原理CPLD基础FPGA基础CPLD和FPGA对比设计方法和软件数字逻辑设计的历史开始时…TTL逻辑设计用分立的芯片实现基本逻辑功能-NAND、OR、复用器、触发器等著名的德州仪器74系列通常由成本和可用的器件来决定设计选择数字逻辑设计的历史采用TTL逻辑进行数字设计FinalLogicImplementationLogicExpression卡诺图真值表数字逻辑设计的历史从TTL到可编程逻辑逻辑实现的一般特性-乘积和(AND-OR门)组合逻辑-存储结果(寄存器)时序逻辑-连在一起如果…会怎样-逻辑功能固定不变(像TTL),但是组合到一个器件中?-走线(布线)连接在一定程度上可以进行控制(编程)?数字逻辑设计的历史可编程阵列逻辑(PAL)可编程逻辑最简单的实现逻辑门和寄存器固定可编程的乘积和阵列及输出控制可编程逻辑器件的优点需要的器件数量减少占用更少的电路板低成本节省功耗测试和调试简单设计安全性(防止逆向剖析)设计灵活性自动工具简化、合并了设计流程在系统重新编程!(在某些情况下)主要内容数字逻辑设计的历史可编程逻辑器件的发展、分类、编程工艺简单PLD(PLA、PAL、GAL)原理CPLD基础FPGA基础CPLD和FPGA对比设计方法和软件可编程逻辑器件的发展历程熔丝编程的PROM和PLA器件20世纪70年代AMD公司推出PAL器件20世纪70年代末Lattice公司发明电可擦写GAL器件20世纪80年代初Xilinx公司提出现场可编程概念,推出FPGA器件;Altera公司推出EPLD器件20世纪80年代中期Lattice公司提出在系统可编程技术,推出CPLD器件20世纪80年代末内嵌复杂功能模块的SOPC20世纪90年代以来各类PLD及相关术语的英文缩写及全称PLD:ProgrammableLogicDevice可编程逻辑器件PROM:ProgrammableReadOnlyMemory可编程只读存储器PLA:ProgrammableLogicArray可编程逻辑阵列PAL:ProgrammableArrayLogic可编程阵列逻辑GAL:GenericArrayLogic通用阵列逻辑CPLD:ComplexProgrammableLogicDevice复杂可编程逻辑器件FPGA:FieldProgrammableGateArray现场可编程门阵列SOPC:SystemOnaProgrammableChip可编程片上系统ISP:InSystemProgrammability在系统可编程PLD的分类一、按集成度分类PLD简单PLD复杂PLDPROMPLAPALCPLDFPGAGALPLD的分类二、从结构上分类乘积项结构:基本结构为“与或阵列”,简单PLD和大部分CPLD都属于此范畴。查找表结构:由简单的查找表组成可编程门,再构成阵列形式,大多数FPGA属于此类器件。PLD的分类三、从编程工艺上划分一次性可编程器件:熔丝(Fuse)型反熔丝(Anti-fuse)型多次可编程器件:EPROM型:EEPROM型:SRAM型:Flash型:易失性编程器件编程工艺:EPROM、EEPROM、FLASH阵列交叉上的浮栅晶体管在加上编程电压后不会导通掉电后非易失已编程:未编程:编程工艺:SRAM掉电后易失主要内容数字逻辑设计的历史可编程逻辑器件的发展、分类、编程工艺简单PLD(PLA、PAL、GAL)原理CPLD基础FPGA基础CPLD和FPGA对比设计方法和软件简单PLD(PROM、PLA、PAL、GAL)原理简单PLD的基本结构四种简单PLD电路的结构特点比较电路符号表示PROM、PLA、PAL、GAL阵列结构简单PLD的基本结构乘积项结构任何组合逻辑函数都可以化为“与或”表达式,因此任何组合电路都可以用“与门-或门”二级电路实现。任何时序电路都可由组合电路加上存储元件(如寄存器)构成。输入电路与阵列或阵列输出电路多路反馈输入项乘积项或项输入输出……用于实现组合逻辑函数由缓冲器组成,使输入信号具有足够的驱动能力并产生互补输入信号提供不同的输出和反馈方式,由寄存器、三态门等组成四种简单PLD电路的结构特点比较电路符号表示常用逻辑门符号与现有国际符号对照电路符号表示PLD的互补缓冲器PLD的互补输入PLD中与阵列表示PLD中或阵列表示阵列线连接表示PROM阵列结构图I2I1I0Q0Q1Q2或门阵列(可编程)与门阵列(固定)与阵列全译码,产生输入的全部最小项。输入变量的增加会引起存储容量按2的幂次增加。适合于存储函数和数据表格,主要用作存储器。012III012IIIPROM编程实例2010IIIQI2I1I0Q0Q1Q2或门阵列(可编程)与门阵列(固定)012III012III编程连接点PLA阵列结构图I2I1I0Q0Q1Q2或门阵列(可编程)与门阵列(可编程)PAL(GAL)阵列结构图I2I1I0Q0Q1Q2或门阵列(固定)与门阵列(可编程)输入行II/O可编程输入/输出结构PAL的输出结构固定,不能编程‘0’‘1’输入行ICLKDOEQPAL的输出结构带反馈的寄存器输出结构‘1’GAL结构GAL22V10结构GAL的输出结构输出逻辑宏单元,可编程GAL22V10的OLMC4选1MUX用来选择输出方式和输出极性2选1MUX用来选择反馈信号GAL输出组态示例例:可编程码S1S0=00GAL22V10输出组态示例GAL输出组态示例CLKSRARD…(a)S1S0=00,低电平有效CLKSRARD…(b)S1S0=01,高电平有效……(c)S1S0=10,低电平有效(d)S1S0=11,高电平有效GAL22V10的四种输出组态主要内容数字逻辑设计的历史可编程逻辑器件的发展、分类、编程工艺简单PLD(PLA、PAL、GAL)原理CPLD基础FPGA基础CPLD和FPGA对比设计方法和软件复杂PLD(CPLD、FPGA)的基本结构基本结构:可编程逻辑功能单元可编程布线可编程IOCPLD简介从PLD到CPLDCPLD结构特点AlteraMAX7000A结构示例采用JTAG进行在系统编程(ISP)通用CPLD的优点从PLD到CPLD在一个器件中,采用可编程互连和I/O,连接多个PLD(逻辑模块)普通CPLD逻辑模块的特性一般是指逻辑阵列模块(LAB)含有多个宏单元(通常是4到20个)本地可编程互连,类似PLD宏单元中的扩展乘积项提供可控乘积项分配和扩展,代价是额外的时延其他体系结构特性可编程互连阵列(PI或PIA)-和PAL可编程阵列相似-全局布线连接器件中的任何信号和任何目的位臵-采用EPROM、EEPROM或者闪存技术进行编程I/O控制模块-由PI将其和逻辑分离-I/O专用逻辑提供控制以及更多的功能-三态缓冲控制实现任意I/O引脚的输入、输出或者双向功能MAX7000A器件基本结构MAX7000A系列的基本结构包括逻辑阵列块LAB、宏单元、扩展乘积项(共享和并联)、可编程连线阵列PIA和I/O控制块等五部分。INPUT/GCLK1INPUT/OE2/GCLK2INPUT/OE1INPUT/GCLRn36I/O控制块宏单元33~482~6个I/O引脚36LABC2~1616···2~166PIAI/O控制块宏单元1~162~6个I/O引脚LABA2~1616···2~1662~16I/O控制块宏单元17~322~6个I/O引脚LABB2~1616···2~166362~16I/O控制块宏单元49~642~6个I/O引脚LABD2~162~1616···2~16636······2~16PIA可把器件中任一信号源连接到其目的地每个LAB由16个宏单元组成,宏单元是基本的逻辑功能单元控制I/O引脚的输入输出方式、电压摆率等MAX7000A器件基本结构LAB通过PIA和全局总线连接在一起,全局总线由所有的专用输入、I/O引脚和宏单元馈给信号。INPUT/GCLK1INPUT/OE2/GCLK2INPUT/OE1INPUT/GCLRn36I/O控制块宏单元33~482~6个I/O引脚36LABC2~1616···2~166PIAI/O控制块宏单元1~162~6个I/O引脚LABA2~1616···2~1662~16I/O控制块宏单元17~322~6个I/O引脚LABB2~1616···2~166362~16I/O控制块宏单元49~642~6个I/O引脚LABD2~162~1616···2~16636······2~16MAX7000A器件基本结构LAB的输入信号:1)来自PIA的36个通用逻辑输入信号;2)来自专用输入引脚的全局控制信号,用于寄存器辅助功能;3)从I/O引脚到寄存器的直接输入通道。INPUT/GCLK1INPUT/OE2/GCLK2INPUT/OE1INPUT/GCLRn36I/O控制块宏单元33~482~6个I/O引脚36LABC2~1616···2~166PIAI/O控制块宏单元1~162~6个I/O引脚LABA2~1616···2~1662~16I/O控制块宏单元17~322~6个I/O引脚LABB2~1616···2~166362~16I/O控制块宏单元49~642~6个I/O引脚LABD2~162~1616···2~16636······2~16MAX7000A器件基本结构LAB的输出:INPUT/GCLK1INPUT/OE2/GCLK2INPUT/OE1INPUT/GCLRn36I/O控制块宏单元33~482~6个I/O引脚36LABC2~1616···2~166PIAI/O控制块宏单元1~162~6个I/O引脚LABA2~1616···2~1662~16I/O控制块宏单元17~322~6个I/O引脚LABB2~1616···2~166362~16I/O控制块宏单元49~642~6个I/O引脚LABD2~162~1616···2~16636······2~16MAX7000A的宏单元每个宏单元由逻辑阵列、乘积项选择矩阵和可编程寄存器等三个功能块组成。36个来自PIA的信号16个扩展乘积项······乘积项选择矩阵······共享扩展项清除选择全局清除全局时钟VCC时钟/使能选择CLRNENAPRND/TQ去I/O控制块去PIA2来自I/O引脚快速输入选择可编程寄存器寄存器旁路逻辑阵列并联扩展项(来自其它宏单元)实现组合逻辑配置宏单元为组合或时序逻辑输出可配置为由可编程时钟控制的D、T、JK或RS触发器可将时钟配置为:全局时钟、由高电平有效使能的全局时钟或乘积项时钟将乘积项分配到或门和异或门以实现组合逻辑功能,或着到寄存器的辅助输入以实现清除、预置、时钟和时钟使能等控制功能。MAX7000A共享扩展项宏单元乘积项逻辑乘积项选择矩阵宏单元乘积项逻辑……来自PIA的36个信号16个共享扩展项以尽可能少的逻辑资源和延时扩充乘积项中“与”信号数MAX7000A并联扩展项乘积项选择矩阵宏单元乘积项逻辑···来自前一个宏单元置位清除时钟乘积项选择矩阵宏单元乘积项