《可编程逻辑器》由会员分享,可在线阅读,更多相关《可编程逻辑器(25页珍藏版)》请在金锄头文库上搜索。
1、第2章 可编程逻辑器件 2.1 简单可编程逻辑器件简单可编程逻辑器件是指在芯片内部集成的硬件资源相对较小、应用的场合相对简单,而且实现的逻辑功能不是很复杂,通常都是实现一些简单的逻辑操作,比如与、或、非、与非、或非以及同或、异或等逻辑功能,主要包括PLD、PAL、GAL等几种可编程逻辑器件。1. PLD可编程逻辑器件(PLD)是集成电路技术发展的产物,是EDA得以实现的硬件基础,由设计人员自行编程而把数字系统“集成”在一片PLD上,可灵活方便地构建和修改数字电子系统,不必去请芯片制造厂商设计和制作专用的集成电路芯片了。一般把单片集成度在1K标准门以下的可编程逻辑器件称为简单PLD。简单PLD由
2、与阵列和或阵列组成,能有效地实现“乘积项”形式的布尔逻辑函数。最初的PLD是PROM和PAL。PROM中与阵列固定,当输入变量为N时,与阵列的乘积项输出线为2的N次方,而或阵列是可编程的。在许多逻辑应用场合中,并不需要每个变量均参与乘积项。为了组合逻辑的需要,发明了PAL(Programmable Array Logic)器件,在PAL中,与阵列是可编程的,而或阵列是固定的。后来为使PAL能够适应更多的应用需求,又在PAL结构中加入了寄存器,这样也可以作时序电路。有些PAL的输出部分还加入了一些宏单元,可以灵活地变换正负输出逻辑、寄存器和三态输出等,这就是通用阵列逻辑GAL(Generic A
3、rray Logic)。 PLD阵列的表示方法:PLD可以用阵列图来表示,阵列图是将缓冲器、与门阵列和或门阵列组合起来构成的。图中,A、B为输入信号,F1 F2 F3为输出信号。与阵列固定,或阵列可编程。PLD阵列的表示方法 PLD阵列的表示方法 2 . PLA PROM能够实现逻辑函数的最小项表达式,而最小项表达式是一种非常繁琐的与-或表达式,当变量较多时,PROM实现逻辑函数的效率极低。但按最简与-或表达式实现逻辑函数的成本最低,为此人们针对PROM的缺点设计了专门用来实现逻辑电路的可编程器件PLA(Programmable Logic Array,可编程逻辑阵列)。PLA的基本结构类似于
4、PROM,但它提供了对逻辑功能处理更有效的方法,它的与阵列和或阵列都可编程。其与阵列可按需要产生任意的与项,因此用PLA可以实现逻辑函数的最简与-或表达式。3 . PAL尽管用PLA实现逻辑电路的效率远远高于PROM,但PLA也有不足之处,主要是与阵列和或阵列均采用可编程开关,而可编程开关需占用较多的芯片面积,并会引入较大的信号延时,因此,PLA的结构不利于提高器件的集成度和工作速度。20世纪70年代出现了可编程阵列逻辑PAL。PAL是Programmable Array Logic的缩写,即可编程阵列逻辑。PAL也是PLD的一种,采用“与”、“或”阵列结构,但是与PROM不同,PAL的“或”
5、阵列是固定的,而“与”阵列则是可以编程的。随着VLSI技术的不断发展和提高,允许设计规模较大的“与”阵列。因此PAL为用户对“与”阵列编程带来了很大方便。在逻辑表达式中一般可以简化到几个积项,很少超过8个。所以在PAL中,每一个或门输入最多可以有8个乘积项,这样为用户编程提供了方便。 PAL电路的逻辑阵列结构图如图所示。图中,PAL由与阵列和或阵列构成,与阵列是可编程的,采用熔丝编程技术来实现,而或阵列是固定的。用PAL实现逻辑函数的形式是与-或表达式,由于其或阵列采用固定连接,为适应不同函数与-或式中与项数不同的情况,PAL器件中或门的输入端数一般不做成一样,而是有多有少,以适应不同函数的需
6、要。图中所示每个或门的输入端数为4个。PAL阵列结构 4 . GAL GAL是Generic Array Logic的缩写,即通用可编程阵列逻辑。对应很多简单的数字逻辑,GAL等简单的可编程逻辑器件仍然被大量使用。目前,国内外很多对成本十分敏感的设计都在使用GAL等低成本可编程逻辑器件,越来越多的74系列逻辑电路被GAL取代。GAL等器件发展至今已经近20年了,新一代的GAL器件以功能灵活、小封装、低成本、重复可编程、应用灵活等优点仍然在数字电路领域扮演着重要的角色。目前比较大的GAL器件供应商主要是Lattice半导体公司。PAL器件的发展,给逻辑设计带来了很大的灵活性,但是它所提供的灵活性
7、是有限的,不同的输出结构需要选用不同型号的PAL器件。此外,PAL的编程元件是熔丝,一旦编程以后不能再修改,因此,限制了PAL的广泛应用。20世纪80年代,Lattice公司推出了通用阵列逻辑(GAL),采用EECMOS工艺,可以反复修改和再次编程。GAL器件在可编程阵列逻辑的基础上,增加了输出逻辑宏单元OLMC(Output Logic Macro Cell),使得GAL的特性和使用灵活性大大优于PAL,成为目前为止使用最广泛的简单PLD器件。典型的GAL器件有两类,一类是与阵列可编程、或阵列固定的电路结构,另一类GAL器件的与阵列和或阵列都可以编程,是一种新型的GAL器件。典型的GAL器件
8、GAL18V10结构如图2-4所示,器件型号中的18表示最多有18个引脚作为输入端,10表示器件内含有10个OLMC,最多可有10个引脚作为输出端。GAL18V10的阵列图由五部分组成:10个输入缓冲器、10个输出缓冲器、10个输出逻辑宏单元、可编程与门阵列和10个输出反馈/输入缓冲器。除此以外,还有时钟信号、三态控制端、电源及地线端。由于GAL中各寄存器的时钟信号是统一的,因此单片GAL器件只能实现同步时序电路。GAL18V10GAL18V10的陈列结构图的陈列结构图 2.2 复杂可编程逻辑器件(CPLD)随着集成电路规模的不断提高,在20世纪80年代出现了比GAL规模更大的可编程器件,由于
9、它们基本上沿用了GAL的电路结构,故称其为复杂可编程逻辑器件CPLD,又称为阵列扩展型PLD。此后在90年代初,Lattice公司率先提出了在系统可编程技术,即无需编程器,可在用户的电路板上对器件直接进行在线编程的技术,并推出了一批具有在系统编程能力的CPLD器件,使PLD技术发展到了新的高度。由于CPLD由若干个大的与-或阵列构成,故又称为大粒度的PLD。在可编程器件发展的同时,人们将可编程思想引入另一种半定制器件“门阵列”中,从而出现了可在用户现场进行编程的门阵列产品,称为现场可编程门阵列FPGA。这种器件尽管也是可编程的,但它的电路结构及所采用的编程方法和CPLD不同。典型的FPGA由众
10、多的小单元电路构成,故又称为单元型PLD,也称为小粒度PLD。CPLD和FPGA各具特点,互有优劣,因此在发展过程中也在不断的取长补短,相互渗透,不断出现新型的产品。1 . CPLD概述 CPLD是Complex Programmable Logic Device的缩写,即复杂的可编程逻辑器件。Altera为了突出特性,曾将自己的CPLD器件称为EPLD(Enhanced Programmable Logic Device),即增强型可编程逻辑器件。其实EPLD和CPLD属于同等性质的逻辑器件,目前Altera为了遵循称呼习惯,已经将其EPLD统称为CPLD。CPLD是在PAL、GAL的基础上
11、发展起来,釆用E2CMOS工艺,也有少数厂商釆用Flash工艺,其基本结构由可编程I/O单元、基本逻辑单元、布线池和其他辅助功能模块构成。CPLD可实现的逻辑功能比PAL、GAL有了大幅度的提升,一般可以完成设计中较复杂、较髙速度的逻辑功能,如接口转换、总线控制等。CPLD的主要器件供应商有:Altera、Lattice和Xinlinx等。CPLD基本上沿用了GAL的阵列结构,在一个器件内集成了多个类似GAL的大模块,大模块之间通过一个可编程集中布线池连接起来。在GAL中只有一部分引脚是可编程的,其他引脚都是固定的输入脚;而在CPLD中,所有的信号引脚都可编程,故称为I/O口。 2 .CPLD
12、的基本结构 典型CPLD的内部结构都含有通用逻辑模块GLB。GLB的作用主要是实现逻辑功能。它由可编程与阵列、共享或阵列及可重构触发器等电路组成,其中最具特色的是共享或阵列。首先,各或门的输入端固定,属于固定型或阵列,这一点与GAL相同,但各或门的输入端个数不同,既便于实现繁简程度不一的逻辑函数,又可提高与、或阵列的利用率;其次,或门的输出又接到一个可编程或阵列中,在需要时实现或门的扩展,应对复杂的逻辑函数。可重构触发器组可以根据需要构成D、JK或T触发器,GLB内部的所有触发器都是同步工作的,时钟信号可以有多种选择。大部分的CPLD是基于乘积项(Product-Term)结构的。采用这种结构
13、的CPLD芯片有:Altera的MAX7000、MAX3000系列(E2PROM工艺),Xilinx的XC9500系列(0.35m CMOS Fast Flash工艺)和Lattice的ispMACH4000、ispMACH5000(0.18m E2CMOS工艺)系列器件,Cypress的大部分产品,它们的结构都基本相同,都是由可编程I/O单元、基本逻辑单元和其他辅助功能模块构成。Lattice的ispMACH 4000系列结构图 ispMACH 4000系列CPLD主要由GLB(Generic Logic Block)、全局布线池GRP(Global Routing Pool)、输出布线池O
14、RP(Output Routing Pool)、I/O Block等部分组成。这里的GLB有36个输入、包含16个宏单元MC(Macrocell)。宏单元是CPLD的基本逻辑单元。GLB的所有输入都来自于GRP,GLB的所有输出都输出到GRP,即使GLB要用到自己的输出信号也必须通过GRP,这样每个GLB的输出都可以通过GRP输入到芯片上的所有其他GLB。GLB的输出通过ORP布线到I/O引脚。GLB由可编程与门阵列、逻辑分配器(logic allocator)、16个MC和GLB时钟发生器组成。宏单元MC由逻辑分配器的输出驱动,每个MC包含一个可编程异或门、一个可编程寄存器和一些布线和控制逻
15、辑。ispMACH 4000ispMACH 4000系列功能框图系列功能框图 3 .CPLD的编程CPLD主要基于E2PROM或FLASH存储器进行编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。CPLD又可分为在编程器上编程和在系统编程两类。不同的芯片生产厂商,其编程的工具、方法以及电路都不尽相同,如Xilinx、Altera以及Lattice公司的下载电路,都不相同,这里不一一给出,如果需要,可以到相关参考书籍或网上搜索下载。2.3 现场可编程门阵列(FPGA) FPGA是Field Programmable Gate Array的缩写,即现场可编程逻辑阵列。FPGA是20世纪
16、80年代中期出现的高密度可编程器件,短短几十年来,取得了惊人的发展,其单片集成密度从最初的1200门发展到目前的几百万门,而且时钟频率由最初不到10MHz发展到目前的300MHz。FPGA是在CPLD的基础上发展起来的新型髙性能可编程逻辑器件,一般釆用SRAM工艺,也有一些专用器件釆用Flash工艺或反熔丝(Anti-Fuse)工艺等。可以完成极其复杂的时序与组合逻辑电路功能,适用于高速、髙密度的高端数字逻辑电路设计领域。FPGA的基本组成部分有可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元、内嵌专用硬核等。FPGA的主要器件供应商有Altera、L
17、attice、Actel和Xinlinx等。1 . FPGA概述 FPGA由普通的门阵列发展而来,其结构与CPLD大不相同,内含许多独立的可编程逻辑模块,用户可以通过编程将这些模块连接起来实现不同的设计。由于模块很多,所以在布局上呈二维分布,可见其布线的难度和复杂性较高。FPGA具有高密度、高速率、系列化、标准化、小型化、多功能、低功耗、低成本,设计灵活方便,可无限次反复编程,并可现场模拟调试验证等特点。使用FPGA器件,可在较短的时间内完成一个电子系统的设计和制作,缩短了研制周期,达到快速上市和进一步降低成本的要求。目前FPGA在我国得到了较广泛的应用。2 .FPGA的基本结构与CPLD基于
18、门阵列来实现逻辑功能的方式不同,FPGA是基于查找表(Look-Up-Table)结构的。查找表简称为LUT,本质上就是一个RAM。目前,FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的161的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。不同厂家、不同系列的FPGA结构都不尽相同,Altera的Cyclone II系列FPGA的结构。如图所示。FPGAFPGA的结构图的结构图四个角上的
19、PLL是锁相环,一般用它对输入的时钟进行分频、倍频以产生所需要的时钟频率。IOES(input/output elements)是I/O单元,它们用于将FPGA内部的信号布线到I/O引脚。中间黑色的部分是内置的1818乘法器(有多个)。两边灰色的是内部RAM模块。剩下白色的部分是逻辑阵列,它由多个LAB(Logic Array Block)组成。还有用于内部信号互连的布线逻辑(图中没有画出)。Cyclone II提供4个PLL(每个PLL最多可有4个输出)和由16根全局时钟线组成的全局时钟网络。全局时钟网络贯穿整个芯片,可以给片内所有时序器件提供时钟。比如IOE、LE、内部乘法器和内置RAM模
20、块等。Cyclone II中1818乘法器的数量因具体的芯片不同而各不相同,每个1818 乘法器可以配置成两个99乘法器使用。3 . FPGA的编程 大部分FPGA基于SRAM 编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。和CPLD的编程一样,不同生产厂商的具体电路等都不相同。基于查表(Look-Up Table)技术、SRAM工艺的FPGA(如ALtera公司的所有FLEX、ACEX和APEX系列,XiLinx公司的Spartan和Virtex系列),由于SRAM工艺的特点,
21、掉电后数据会消失,因此调试期间可以用下载电缆配置器件,调试完成后需要将数据固化在一个专用的E2PROM中(用通用编程器烧写),上电时由这片配置E2PROM 先对器件加载数据(亦可由CPU配置),十几毫秒后,器件即可正常工作。4 . CPLD/FPGA主流产品 目前生产CPLD/FPGA的公司主要有Altera、Xilinx、Lattice等,生产的品种和型号种类繁多各不相同。Altera主要有以下产品系列:MAX、Cyclone、Cyclone II、Stratix、Stratix II等。其中MAX是CPLD系列,有MAX 3000、MAX 7000和最新的MAX II,其它的都是FPGA。
22、MAX II系列CPLD具有低成本、低功耗、高密度等优点,MAX II的成本是MAX的一半,密度是MAX的4倍,功耗仅是MAX的十分之一。于2004年底推出,采用FPGA结构,配置芯片集成在内部,和普通PLD一样上电即可工作。容量比上一代大大增加,内部集成一片8Kbits串行E2PROM,增加很多功能,采用2.5v或者3.3v内核电压MAX II还采用了不同于传统乘积项结构的CPLD结构,使其密度大大提高。MAX II器件家族的部分芯片如下表所示。MAX II 器件FeatureEPM240/GEPM570/GEPM1270/GEPM2210/G逻辑单元 (LE)2405701,2702,21
23、0等效宏单元1924409801,700最大用户IO80160212272Flash大小(bit)8K8K8K8K管脚到管脚延时(ns)3.6-4.53.6-5.53.6-6.03.6-6.5Cyclone和Cyclone II系列是低成本FPGA,面向中低端应用。Cyclone II采用90nm工艺技术,1.2v内核供电,其中1818乘法器多达150个,片内嵌入式存储器高达1.1Mbits,提供多达68,416个逻辑单元(LE),密度超过第一代Cyclone FPGA的3倍,支持最多达四个可编程锁相环(PLL)和最多16个全局时钟线,具有较高的性能。Cyclone II器件内部的嵌入式乘法器
24、是低成本DSP应用的理想解决方案。部分Cyclone器件和Cyclone II器件参数如下表所示。Cyclone 器件型号(1.5V)逻辑单元锁相环M4K RAM 块备 注EP1C32,910113每块RAM为4Kbit EP1C44,000217EP1C65,980220EP1C1212,060252EP1C2020,060264 Cyclone II器件特 性EP2C5EP2C8EP2C20EP2C50EP2C70逻辑单元( LE ) 4,6088,25618,75250,52868,416M4K RAM 块 263652129250RAM 总量 119,808165,888239,616
25、594,4321,152,000嵌入式乘法器 13182686150锁相环(PLL) 22444最大可用I/O管脚 142182315450622逻辑单元( LE ) 4,6088,25618,75250,52868,416Stratix和Stratix II是高性能FPGA,面向高端应用。Stratix II FPGA等价逻辑单元(LE)高达180K,嵌入式存储器达到9 Mbits,Stratix II器件包括高性能的嵌入DSP块,它能够运行在370MHz,并为DSP应用进行优化,具有比DSP处理器更大的数据处理能力。Xilinx的CPLD产品系列主要有:CoolRunner、XC9500系列。FPGA产品系列主要有:Virtex、Spartan系列等。Xilinx CPLD的特点是功耗很低。Spartan 系列是与Altera的Cyclone系列相竞争的产品,而Virtex系列与Altera的Stratix系列相当。Lattice拥有众多产品系列,目前主流产品是ispMACH4000系列PLD和LatticeEC/ECP系列FPGA。