FPGA/CPLD基本结构及原理从电路设计者来说,可将设计好的电路“写入”芯片(PLD母片),使之成为专用集成电路;有些PLD可以多次“编程(逻辑重构)”,这就特别适合新产品试制或小批量生产。PLD的编程技术有下列几种工艺。一、PLD的编程技术熔丝编程技术是用熔丝作为开关元件,这些开关元件平时(在未编程时)处于连通状态,加电编程时,在不需要连接处将熔丝熔断,保留在器件内的熔丝模式决定相应器件的逻辑功能。反熔丝编程技术也称熔通编程技术,这类器件是用逆熔丝作为开关元件。这些开关元件在未编程时处于开路状态,编程时,在需要连接处的逆熔丝开关元件两端加上编程电压,逆熔丝将由高阻抗变为低阻抗,实现两点间的连接,编程后器件内的反熔丝模式决定了相应器件的逻辑功能。(1)熔丝(Fuse)和反熔丝(Anti-fuse)编程技术熔丝结构反熔丝结构示意导电层绝缘层导电层导电通道(a)未编程(b)已编程Actel的FPGA器件体积小,集成度高,速度高,易加密,抗干扰,耐高温只能一次编程,在设计初期阶段不灵活(2)浮栅型电可写紫外线擦除编程技术浮栅管相当于一个电子开关,如N沟浮栅管,当浮栅中没有注入电子时,浮栅管导通;当浮栅中注入电子后,浮栅管截止。浮栅管的浮栅在原始状态没有电子,如果把源极和衬底接地,且在源-漏极间加电压脉冲产生足够强的电场,使电子加速跃入浮栅中,则使浮栅带上负电荷,电压脉冲消除后,浮栅上的电子可以长期保留;当浮栅管受到紫外光照射时,浮栅上的电子将流向衬底,擦除所记忆的信息,而为重新编程做好准备。浮栅型紫外线擦除熔丝结构nn++SDG1G2SiO2早期PROM器件采用此工艺可反复编程不用每次上电重新下载,但相对速度慢,功耗较大(3)浮栅型电可写电擦除编程技术(E2PROM)此类器件在CMOS管的浮栅与漏极间有一薄氧化层区,其厚度为10μm~15μm,可产生隧道效应。编程(写入)时,漏极接地,栅极加20V的脉冲电压,衬底中的电子将通过隧道效应进入浮栅,浮栅管正常工作时处于截止状态,脉冲消除后,浮栅上的电子可以长期保留;若将其控制栅极接地,漏极加20V的脉冲电压,浮栅上的电子又将通过隧道效应返回衬底,则使该管正常工作时处于导通状态,达到对该管擦除的目的。编程和擦除都是通过在漏极和控制栅极上加入一定幅度和极性的电脉冲来实现,可由用户在“现场”用编程器来完成。浮栅型电可擦除熔丝结构nn++G1SDG2SiO2大多数CPLD器件采用此工艺可反复编程不用每次上电重新下载,但相对速度慢,功耗较大(4)SRAM编程技术与浮栅型熔丝结构基本相同。SRAM编程技术是在FPGA器件中采用的主要编程工艺之一。SRAM型的FPGA是易失性的,断电后其内部编程数据(构造代码)将丢失,需在外部配接ROM存放FPGA的编程数据。可反复编程,实现系统功能的动态重构每次上电需重新下载,实际应用时需外挂EEPROM用于保存程序二、复杂可编程逻辑器件(CPLD)的基本原理现在一般把所有超过某一集成度(如1000门以上)的PLD器件都称为CPLD。CPLD由可编程逻辑的功能块围绕一个可编程互连矩阵构成。由固定长度的金属线实现逻辑单元之间的互连,并增加了I/O控制模块的数量和功能。可以把CPLD的基本结构看成由可编程逻辑阵列(LAB)、可编程I/O控制模块和可编程内部连线(PIA)等三部分组成。LABLABLABLABLABLABLABLABLABLABLABLABLABLABLABLABI/O控制模块PIAMAX7123的结构1.可编程逻辑阵列(LAB)可编程逻辑阵列又若干个可编程逻辑宏单元(LogicMacroCell,LMC)组成,LMC内部主要包括与阵列、或阵列、可编程触发器和多路选择器等电路,能独立地配置为时序或组合工作方式。宏单元结构图102345678910CPLD中与、或门的表示方法ABCDP(乘积项)ACDP=A·C·DABCDF(或项)F=A+B+DABD(1)乘积项共享结构在CPLD的宏单元中,如果输出表达式的与项较多,对应的或门输入端不够用时,可以借助可编程开关将同一单元(或其他单元)中的其他或门与之联合起来使用,或者在每个宏单元中提供未使用的乘积项给其他宏单元使用。EPM7128E乘积项扩展和并联扩展项的结构图乘积项选择矩阵乘积项选择矩阵来自上一个宏单元PresetClockClearPresetClockClear宏单元乘积项逻辑宏单元乘积项逻辑到下一个宏单元共享乘积项并联扩展(2)多触发器结构早期可编程器件的每个输出宏单元(OLMC)只有一个触发器,而CPLD的宏单元内通常含两个或两个以上的触发器,其中只有一个触发器与输出端相连,其余触发器的输出不与输出端相连,但可以通过相应的缓冲电路反馈到与阵列,从而与其他触发器一起构成较复杂的时序电路。这些不与输出端相连的内部触发器就称为“隐埋”触发器。这种结构可以不增加引脚数目,而增加其内部资源。(3)异步时钟早期可编程器件只能实现同步时序电路,在CPLD器件中各触发器的时钟可以异步工作,有些器件中触发器的时钟还可以通过数据选择器或时钟网络进行选择。此外,OLMC内触发器的异步清零和异步置位也可以用乘积项进行控制,因而使用更加灵活。2.可编程I/O单元(IOC)CPLD的I/O单元(Input/OutputCell,IOC),是内部信号到I/O引脚的接口部分。根据器件和功能的不同,各种器件的结构也不相同。由于阵列型器件通常只有少数几个专用输入端,大部分端口均为I/O端,而且系统的输入信号通常需要锁存。因此I/O常作为一个独立单元来处理。3.可编程内部连线(PIA)可编程内部连线的作用是在各逻辑宏单元之间以及逻辑宏单元和I/O单元之间提供互连网络。各逻辑宏单元通过可编程连线阵列接收来自输入端的信号,并将宏单元的信号送目的地。这种互连机制有很大的灵活性,它允许在不影响引脚分配的情况下改变内部的设计。三、现场可编程门阵列(FPGA)的基本原理FPGA出现在20世纪80年代中期,与阵列型PLD有所不同,FPGA由许多独立的可编程逻辑模块组成,用户可以通过编程将这些模块连接起来实现不同的设计。FPGA具有更高的集成度、更强的逻辑实现能力和更好的设计灵活性。FPGA器件具有高密度、高速率、系列化、标准化、小型化、多功能、低功耗、低成本,设计灵活方便,可无限次反复编程,并可现场模拟调试验证等特点。FPGA由可编程逻辑块(CLB)、输入/输出模块(IOB)及可编程互连资源(PIR)等三种可编程电路和一个SRAM结构的配置存储单元组成。CLB是实现逻辑功能的基本单元,它们通常规则地排列成一个阵列,散布于整个芯片中;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部引脚的接口,它通常排列在芯片的四周;可编程互连资源(IR)包括各种长度的连线线段和一些可编程连接开关,它们将各个CLB之间或CLB与IOB之间以及IOB之间连接起来,构成特定功能的电路。FPGA的基本结构图CLBIRIOBCLBCLBCLBCLBCLBCLBCLBCLBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIRIRIRIRIRIRIRIRIRIRIRIRIRIRIR1.可编程逻辑块(CLB)CLB主要由逻辑函数发生器、触发器、数据选择器等电路组成。逻辑函数发生器主要由查找表LUT(lookuptable)构成000001010000010116×1RAM输入A输入B输入C输入D查找表输出多路选择器查找表LUT输入1输入2输入3输入4输出函数发生器基于查找表单元:Io………………I4OUT.....…..............RAMMUX{I}F{I}LUT{I}F{I}LUT{I}F{I}QxQyG{I}CLB这个模块具有较强的逻辑功能,规模并不大,是有限组合逻辑。是标准化的结构。1、采用LUT(lookuptable)3.可编程互连资源(PIR)PIR由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接。实现FPGA内部的CLB和CLB之间、CLB和IOB之间的连接。XC4000系列采用分段互连资源结构,按相对长度可分为单长线、双长线和长线等三种。2.输入/输出模块(IOB)IOB主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成,每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能。四、CPLD与FPGA的区别CPLDFPGA内部结构Product-termLook-upTable程序存储内部EEPROMSRAM,外挂EEPROM资源类型组合电路资源丰富触发器资源丰富集成度低高使用场合完成控制逻辑能完成比较复杂的算法速度慢快其他资源-EAB,锁相环保密性可加密一般不能保密•FPGA采用SRAM进行功能配置,可重复编程,但系统掉电后,SRAM中的数据丢失。因此,需在FPGA外加EPROM,将配置数据写入其中,系统每次上电自动将数据引入SRAM中。CPLD器件一般采用EEPROM存储技术,可重复编程,并且系统掉电后,EEPROM中的数据不会丢失,适于数据的保密。•FPGA器件含有丰富的触发器资源,易于实现时序逻辑,如果要求实现较复杂的组合电路则需要几个CLB结合起来实现。CPLD的与或阵列结构,使其适于实现大规模的组合功能,但触发器资源相对较少。•FPGA为细粒度结构,CPLD为粗粒度结构。FPGA内部有丰富连线资源,CLB分块较小,芯片的利用率较高。CPLD的宏单元的与或阵列较大,通常不能完全被应用,且宏单元之间主要通过高速数据通道连接,其容量有限,限制了器件的灵活布线,因此CPLD利用率较FPGA器件低。•FPGA为非连续式布线,CPLD为连续式布线。FPGA器件在每次编程时实现的逻辑功能一样,但走的路线不同,因此延时不易控制,要求开发软件允许工程师对关键的路线给予限制。CPLD每次布线路径一样,CPLD的连续式互连结构利用具有同样长度的一些金属线实现逻辑单元之间的互连。连续式互连结构消除了分段式互连结构在定时上的差异,并在逻辑单元之间提供快速且具有固定延时的通路。CPLD的延时较小。五、大的PLD生产厂家•www.altera.com–最大的PLD供应商之一•www.xilinx.com–FPGA的发明者,最大的PLD供应商之一•www.latticesemi.com–ISP技术的发明者•www.actel.com–提供军品及宇航级产品Altera主流芯片1.主流CPLD产品:MAXII:新一代PLD器件,0.18umfalsh工艺,2004年底推出,采用FPGA结构,配置芯片集成在内部,和普通PLD一样上电即可工作。容量比上一代大大增加,内部集成一片8Kbits串行EEPROM,增加很多功能。MAXII采用2.5v或者3.3v内核电压,MAXIIG系列采用1.8v内核电压。早期的CPLD芯片主要有MAX3000、MAX7000系列。MAXII器件家族FeatureEPM240/GEPM570/GEPM1270/GEPM2210/G逻辑单元(LE)2405701,2702,210等效宏单元(Macrocell)1924409801,700最大用户IO80160212272内置Flash大小(bit)8K8K8K8K管脚到管脚延时(ns)3.6-4.53.6-5.53.6-6.03.6-6.52.主流FPGA产品Altera的主流FPGA分为两大类,一种侧重低成本应用,容量中等,性能可以满足一般的逻辑设计要求,如Cyclone,CycloneII;还有一种侧重于高性能应用,容量大,性能能满足各类高端应用,如Startix,StratixII等,用户可以根据自己实际应用要求进行选择。在性能可以满足的情况下,优先选择低成本器件。Cyclone(飓风):Altera中等规模FPGA,2003年推出,0.13um工艺,1.5v内核供电,与Stratix结构类似,是一种低成本FPGA系列,是目前主流产品,其配置芯片也改用全新的产品。型号(1.5V)逻辑单