EDA技术与实践教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 概述

PLD是20世纪70年代发展起来的一种新型逻辑器件。其具有集成度高、容量大、速度快、功耗小、可靠性高、设计方法先进、现场可编程等特点,并且几乎能随心所欲地完成用户定义的逻辑功能(do as you wish),还可以加密和重新编程。使用可编程逻辑器件,可以大大简化硬件系统,降低成本,提高系统的可靠性、灵活性和保密性,因此,在通信、数据处理、网络、仪器、工业控制、军事和航空航天等众多领域得到了广泛应用。

早期的可编程逻辑器件,只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。其后,出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与-或”表达式来描述,所以,PLD能以乘积和的形式完成大量的组合逻辑功能。

2.1.1 可编程逻辑器件的发展历程

(1)可编程只读存储器

可编程只读存储器(Programmable Read-Only Memory,PROM)于1970年制成,包括一个固定的与阵列,其输出加到一个可编程的或阵列上。PROM采用熔丝工艺编程,只能写一次,不能擦除和重写。随着技术的发展和应用要求,此后又出现了UVEPROM(紫外线可擦除只读存储器)、E2PROM(电可擦除只读存储器),其价格低,易于编程,速度低,适合于存储计算机程序、数据和数据表格。用作存储器时,输入用作存储器地址,输出是存储器单元的内容。典型的EPROM有2716、2732等,结构如图2-1所示。

图2-1 PROM的阵列结构

(2)可编程逻辑阵列

可编程逻辑阵列(Programable Logic Array,PLA)是20世纪70年代初期发展起来的一种可编程只读存储器,由一个可编程的“与”阵列和一个可编程的“或”阵列构成。由于是双重编程,先由与阵列编程组成编程与项,再由或阵列编程选取与项,形成最简的与或函数,所以采用PLA实现逻辑函数可提高存储单元的利用率。一片PLD所容纳的逻辑门可达数百、数千甚至更多,其逻辑功能可由用户编程指定,特别适宜于构造小批量生产的系统,或在系统开发研制过程中使用。但由于器件的资源利用率低,价格较贵,结构编程困难,支持PLA的开发软件有一定难度,因而没有得到广泛应用。PLA的阵列结构如图2-2所示。

图2-2 PLA的阵列结构

(3)可编程阵列逻辑器件

可编程阵列逻辑器件(Programmable Array Logic,PAL)是1977年美国MMI公司率先推出的,其实现工艺有反熔丝技术、EPROM技术和E2PROM技术,双极性工艺制造,工作速度高。它结合了PLA的灵活性及PROM的廉价、易于编程的特点,由一个可编程的“与”阵列和一个固定的“或”阵列构成,或门的输出可以通过触发器有选择地被置为寄存状态,有多种输出和反馈结构,因而给逻辑设计带来了很大的灵活性。它的实现工艺有反熔丝技术、EPROM技术和E2PROM技术,双极性工艺制造,工作速度快。由于它的输出结构种类很多,设计很灵活,因而成为第一个得到普遍应用的可编程逻辑器件,如PAL16L8。其阵列结构如图2-3所示。

图2-3 PAL(GAL)的阵列结构

(4)通用阵列逻辑器件

通用阵列逻辑器件(Generic Array Logic,GAL)是1983年Lattice公司最先发明的可高速反复电擦写、可重复编程、可设置加密位的PLD。它是在PAL器件基础上发展起来的,继承了PAL器件的与-或结构,采用了输出逻辑宏单元形式E2CMOS工艺结构,增加了OLMC电路(输出逻辑宏单元),由于其内部具有特殊的结构控制字,因而虽然芯片类型少,但编程灵活,功能齐全,使一种型号的GAL器件可以对几十种PAL器件做到全兼容,给设计者带来了更大的灵活性,因而获得广泛应用,如GAL16V8、GAL20V8、GAL22V10等。

以上各种PLD的主要区别见表2-1。

表2-1 PLD的主要区别

这些早期PLD器件的一个共同特点,是可以实现速度特性较好的逻辑功能,但过于简单的结构,也使它们只能实现规模较小的电路。

(5)现场可编程门阵列/复杂可编程逻辑器件

现场可编程门阵列/复杂可编程逻辑器件(Field Programmable Gate Array/Complex Programmab1e Logic Device,FPGA/CPLD)是20世纪80年代中期在PAL、GAL等逻辑器件的基础之上发展起来的。Altera和Xilinx分别推出了类似于PAL结构的扩展型CPLD和与标准门阵列类似的FPGA,它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点,可实现较大规模的电路,编程灵活。与ASIC相比,又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无须测试、质量稳定以及可实时在线检验等优点,被广泛应用于产品的原型设计和产品生产中。几乎所有中小规模通用数字集成电路的场合均可用FPGA/CPLD器件替代,因此受到世界范围内电子工程设计人员的广泛关注和普遍欢迎。

FPGA/CPLD的规模大,可以替代几十甚至几千块通用IC芯片,这样的FPGA/CPLD实际上就是一个系统或子系统部件。经过几十年的发展,许多公司都开发出了多种可编程逻辑器件。比较典型的是Xilinx和Altera公司,它们开发较早,占据了较大的PLD市场份额。

(6)在系统可编程

在系统可编程(In System Programmability,ISP)的概念首先由美国的Lattice公司于20世纪90年代提出,是指用户具有在自己设计的目标系统中或线路板上,为重构逻辑而对逻辑器件进行编程或反复改写的能力。ISP技术为用户提供了传统的PLD技术无法达到的灵活性,带来了极大的时间效益和经济效益,使可编程逻辑技术发生了实质性飞跃。其具有三个优点:

①减轻了工程师的原型设计负担,缩短了试制周期,降低了试制成本;

②方便系统的维护和升级;

③提高了系统的可测试性,增强了系统的可靠性。

PLD的发展,不仅简化了数字系统的设计过程,减小了系统的体积,降低了系统的成本,提高了系统的可靠性和保密性,而且使用户从被动地选用通用芯片,发展到主动地对芯片的设计和使用。设计者更愿意自己设计ASIC芯片,而且希望设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中。FPGA/CPLD的出现从根本上改变了系统设计方法,使各种逻辑功能的实现变得灵活、方便。

(7)ASIC设计

ASIC(Application Specific Integrated Circuit)是指应特定用户要求和特定电子系统的需要而设计、制造的专用集成电路。通用集成电路一般不能满足全部用户的需要,定制集成电路是解决这个问题的重要途径之一。

ASIC分为全定制和半定制。

①全定制集成电路是按照预期功能和技术指标而专门设计制成的集成电路,制造周期长,成本高,制成后不易修改,但性能比较理想,芯片面积小,集成度高。特点是精工细作,设计要求高,周期长,设计成本昂贵。

②半定制集成电路中,利用可编程技术是ASIC发展的一个有特色的分支。其主要特点是直接提供软件设计编程,完成ASIC电路功能,不需要再通过集成电路工艺线加工,适合于开发周期短、低开发成本、投资风险小的小批量数字电路设计。由于单元库和功能模块电路越加成熟,全定制设计的方法渐渐被半定制方法所取代。在现在的IC设计中,整个电路均采用全定制设计的现象越来越少。

2.1.2 简单可编程逻辑器件的基本结构

简单PLD的基本结构如图2-4所示。电路的主体是由门电路构成的与阵列和或阵列。为了适应各种输入情况,与阵列的每个输入端都有输入缓冲电路,从而使输入信号具有足够的驱动能力,并产生原变量A和反变量两个互补的信息。

图2-4 PLD的基本结构框图

2.1.3 可编程逻辑器件的主要分类

(1)按规模分类

PLD可分为简单的可编程逻辑器件和大规模可编程逻辑器件,如图2-5所示。简单的可编程逻辑器件通常是指早期发展起来的、集成密度小于700门/片的PLD,如ROM、PLA、PAL和GAL等器件。历史上,GAL22V10是简单的PLD和大规模PLD的分水岭,一般也按照GAL22V10芯片的容量区分。而FPGA和CPLD则属于大规模可编程逻辑器件。

图2-5 可编程逻辑器件按规模分类

(2)按结构分类

大规模可编程逻辑器件按结构分为FPGA和CPLD两大类(详见2.2节)。

FPGA具有门阵列的结构形式,它由许多可编程单元(或称逻辑功能块)排成阵列组成,称为单元型PLD。它基于查找表LUT(Look-Up Table)技术。由于SRAM工艺的特点,掉电后数据会消失,因此调试期间可以用下载电缆配置PLD器件,调试完成后,需要将数据固化在一个专用芯片中(称为配置芯片,详见2.2.6节),上电时,先由配置芯片对FPGA加载数据,十几毫秒到几百毫秒后,FPGA即可正常工作。SRAM工艺的PLD一般不可以直接加密。

CPLD的基本结构由与阵列和或阵列组成。简单PLD(如PROM、PLA、PAL和GAL等)和CPLD都属于阵列型PLD,是基于乘积项(Product-Term)技术,E2PROM(或Flash)工艺的PLD。目前的PLD都可以用ISP在线编程,也可用编程器编程。这种PLD可以加密,并且很难解密,所以常常用于单板加密。

尽管FPGA与CPLD和其他类型PLD的结构各有其特点和长处,但概括起来,它们是由三大部分组成:

①一个二维的逻辑块阵列,构成了PLD器件的逻辑组成核心;

②输入/输出块;

③连接逻辑块的互连资源,连线资源由各种长度的连线线段组成,其中也有一些可编程的连接开关,它们用于逻辑块之间、逻辑块与输入/输出块之间的连接。

FPGA与CPLD的内部结构稍有不同,但对用户而言,用法一样,所以在多数情况下,可以不加区分。

(3)按编程方式分类

可编程逻辑器件按编程方式分为两类:一次性编程(One Time Programmable,OTP)器件和可多次编程(Many Time Programmable,MTP)器件。

①OTP器件属于一次性使用的器件,只允许用户对器件编程一次,编程后不能修改。其优点是可靠性与集成度高,抗干扰性强,采用一次性编程的熔丝(Fuse)或反熔丝(Antifuse)元件的可编程器件,如PROM、PAL和EPLD等。

②MTP器件属于可多次重复使用的器件,允许用户对其进行多次编程、修改或设计,特别适合于系统样机的研制和初级设计者的使用。

a.采用紫外线擦除、电可编程元件,即采用EPROM、UVCMOS工艺结构的可多次编程器件。

b.采用电擦除、电可编程元件。其中一种是E2PROM,另一种是采用快闪存储器单元(Flash Memory)结构的可多次编程器件。

c.基于静态存储器SRAM结构的可多次编程器件。目前多数FPGA是基于SRAM结构的可编程器件。

综上所述,ROM的编程方法是按掩膜ROM→PROM→EPROM→E2PROM次序发展的。通常把一次性编程的(如PROM)称为第一代PLD,把紫外光擦除的(如EPROM)称为第二代PLD,把电擦除的(如E2PROM)称为第三代PLD。

第二代、第三代PLD器件的编程都是在编程器上进行的。ISP器件的编程工作,可以不用编程器,而直接在目标系统或线路板上进行,因而称第四代PLD器件。