项目6 用硬件描述语言设计可编程逻辑器件
到20世纪80年代,计算机辅助设计技术在硬件电路设计中才得到普及与应用。 在开始阶段, 仅仅是利用计算机软件来实现印制电路版的布线, 随着大规模专用集成电路需求的不断增加,为了提高开发和研制的效率, 增加已有开发成果的可继承性以及缩短开发时间, 各ASIC研制和生产厂家相继开发了用于各自目的的硬件描述语言。
在EDA建模和实现技术中,用硬件描述语言对电子线路的表达和设计是最基本和最重要的方法, 因此硬件描述语言的学习在掌握EDA技术中具有十分重要的地位。
任务6.1 介绍可编程逻辑器件
6.1.1可编程逻辑器件的发展历程
当今社会是数字化的社会,是数字集成电路广泛应用的社会。数字集成电路本身在不断地更新换代,由早期的电子管、晶体管、小中规模集成电路发展到超大规模集成电路以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担,系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,在此需求推动下出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。
早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(EEPROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。
其后,出现了一类结构上稍复杂的可编程芯片,即简单的可编程逻辑器件(PLD),它能够完成多种数字逻辑功能。,其结构如图6-1所示。这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。PAL由一个可编程的“与”平面和一个固定的“或”平面构成,“或”门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和EEPROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。

6.1.2PLD的表示方法
1.连接方式
门阵列的每个交叉点称为“单元”,单元的连接方式共有三种情况:
(1)硬线连接。硬线连接是固定的连接,不可以编程改变,如图6-2(a)所示。
(2)可编程接通单元。它依靠用户编程来实现接通连接,如图6-2(b)所示。
(3)可编程断开单元。编程实现断开状态,这种单元又称为可编程擦除单元,如图6-2(c)所示。

2.基本门电路的表示方式
PLD中的基本门电路符号如图6-3所示。图6-3(a)为与门;图6-3(b)为或门;图6-3(c)为输出恒等于0的与门及其简化表示形式;图6-3(d)中与门的所有输入均不接通,保持“悬浮”的状态;图6-3(e)为具有互补输出的输入缓冲器;图6-3(f)为三态输出缓冲器。

6.1.3可编程逻辑器件原理
目前,应用最广泛的PLD主要是复杂可编程器件CPLD(ComplexProgrammable Logic Device)和现场可编程门阵列FPGA(FieldProgrammable Gate Array),它们的使用方法基本一致,但规模和结构有较大的区别,内部结构的差异导致了它们在功能与性能上的差异。
1.基于乘积项(Product.Term)的PLD结构
采用这种结构的PLD芯片有:ALTERA公司的MAX7000、MAX3000系列(EEPROM工艺),Xilinx公司的XC9500系列(Flash工艺)和Lattice及Cypress公司的大部分产品(EEPROM工艺)。这种PLD的内部结构(以MAX7000为例,其他型号的结构与此相似)如图6-4所示。

基于乘积项的PLD可分为三部分:宏单元(Macrocell),可编程连线(PIA)和I/O控制块。宏单元是PLD的基本结构,由它来实现基本的逻辑功能。图6-4中LABA、LABB、LABC、LABD是多个宏单元的集合(因为宏单元较多,没有一一画出)。可编程连线负责信号传递,连接所有的宏单元。I/O控制块负责输入/输出的电气特性控制,比如可以设定集电极开路输出、三态输出等。图6-4左上的INPUT/GCLK1、INPUT/GCLRn、INPUT/OE1和INPUT/OE2是全局时钟、清零和输出使能信号,这几个信号有专用连线与PLD中的每个宏单元相连,信号到每个宏单元的延时相同且延时最短。宏单元的具体结构如图6-5所示。

2.乘积项结构PLD的逻辑实现原理
下面以一个简单的电路为例,具体说明PLD是如何利用以上结构实现逻辑功能的,电路如图6-6所示。

图6-6所示的电路是一个很简单的例子,只需要一个宏单元就可以完成,而对于一个复杂的电路,一个宏单元是不够的,这时就需要通过并联扩展项和共享扩展项将多个宏单元相连,宏单元的输出也可以连接到可编程连线阵列,再作为另一个宏单元的输入。这样,就可以用PLD实现更复杂的逻辑功能。
这种基于乘积项的PLD基本上都是由EEPROM和Flash工艺制造的,其内部含有存储单元,芯片一上电就可以工作,无需其他芯片配合。

3.基于查找表(LookUpTable)的原理与结构
基于查找表的PLD芯片也称为FPGA,如ALTERA的ACEX、APEX系列,Xilinx的Spartan、Virtex系列等。查找表(LookUpTable)简称为LUT,其本质就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16×1的RAM。在用户通过原理图或HDL语言描述了一个逻辑电路以后,CPLD/FPGA开发软件会自动计算逻辑电路所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
下面来看一个4输入“与”门的例子,其实际的逻辑电路图及LUT实现方式如图6-8所示。

4.基于查找表(LUT)的FPGA的结构
Xilinx的SpartanⅡ其内部结构如图6-9和图6-10所示。
SpartanⅡ主要包括CLBs、I/O块、RAM块和可编程连线(未表示出)。在SpartanⅡ中,一个CLB包括两个Slices,
每个Slices包括两个LUT、两个触发器和相关逻辑。Slices可以看成是SpartanⅡ实现逻辑功能的最基本结构(Xilinx
其他系列,如SpartanⅥ、Virtex的结构与此稍有不同,具体请参阅相关数据手册)。
ALTERA的FLEX/ACEX等芯片的结构如图6-11所示,逻辑单元(LE)内部结构如图6-12所示。
FLEX/ACEX的结构主要包括LAB、I/O块、RAM块(未表示出)和可编程行/列连线。在FLEX/ACEX中,一个LAB包括8个逻辑单元(LE),每个LE包括一个LUT、一个触发器和相关的逻辑。LE是FLEX/ACEX芯片实现逻辑的最基本结构(ALTERA其他系列,如APEX的结构与此基本相同,具体请参阅相关数据手册)。




5.查找表结构的FPGA逻辑实现原理
仍以图6-6所示的电路为例,A、B、C、D由FPGA芯片的管脚输入后进入可编程连线,然后作为地址线连接到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,这样组合逻辑就实现了。
6.其他类型的FPGA和PLD
ALTERA最新的MAX-Ⅱ系列PLD,这是一种基于FPGA(LUT)结构、集成配置芯片的PLD,在本质上它就是一种在内部集成了配置芯片的FPGA,但由于配置时间极短,上电就可以工作,所以对用户来说,感觉不到配置过程,可以像传统的PLD一样使用,加上容量和传统PLD类似,所以ALTERA把它归为PLD。
根据PLD的结构和原理可以知道,PLD分解组合逻辑的功能很强,一个宏单元就可以分解出十几个甚至20~30个组合逻辑输入。PLD适合于设计译码等复杂组合逻辑。
6.1.4几种典型的PLD器件介绍
ALTERA公司的芯片采用铜铝布线的先进CMOS技术,具有非常低的功耗和相当高的速度,而且采用连续式互连结构,提供快速、连续的信号延时。ALTERA器件的密度从300门/片到400万门/片,能很容易地集成现有的各种逻辑器件。高集成度的FPGA提供更高的系统性能、更高的可靠性以及更高的性能价格比。
1.ALTERA公司MAX7000系列
ALTERA公司生产的MAX7000系列芯片具有以下特点:
(1)该系列是以第二代多阵列结构为基础的高性能CMOS器件。
(2)高密度MAX7128E提供5000个门,其中可用门数为2500;有128个宏单元,最大I/O引脚数104。
(3)引脚到引脚的时延为6ns,计数器工作频率为151MHz。
(4)可配置扩展乘积项,允许向每个宏单元提供52个乘积项。
(5)有44~208个引脚的各种封装形式,采用引线塑料载体(PLCC)、针栅阵列(PGA)扁平封装(QFP)。
(6)电源电压为33~5V。
(7)可编程保密位。
(8)ALTERAMAX+plusⅡ软件提供开发支持。
该系列型号有:EPM7032,EPM7032V,EPM7064,EPM7096,EPM7128E,EPM7160,EPM7192,EPM7256等。
2.FLEX8000系列
FLEX(FlexibleLogic Element Matrix)系列可编程芯片采用0.8μmCMOS.SRAM或0.65μmCMOS.SRAM集成电路制造工艺制造。该系列芯片的特点有:
(1)最大门数32000,具有2500~16000个可用门和282~1500个触发器。
(2)在线可重配置。
(3)采用可预测在线时间延迟的布线结构。
(4)具有实现加法器和计数器的专用进位通道。
(5)采用3.3V和5V电源。
(6)MAX+plusⅡ软件支持自动布线和布局。
(7)有84~304个引脚的各种封装形式。
FLEX8000系列的常用型号有:EPF8282,EPF8452,EPF8636,EPF8820,EPF81188,EPF81500。
3.FLEX10K10系列
该系列可编程芯片采用0.5μmCMOS.SRAM或0.25μmCMOS.SRAM(10K10E系列)集成电路制造工艺制造。该系列芯片的特点有:
(1)具有7000~31000个可用门、6144位RAM、720个触发器,最大I/O数为150。
(2)在线可重配置。
(3)采用可预测在线时间延迟的布线结构。
(4)具有实现加法器和计数器的专用进位通道。
(5)采用3.3V和5V电源。
(6)MAX+plusⅡ软件支持自动布线和布局。
(7)具有84~562个引脚的各种封装形式。
FLEX10K10系列芯片的常用型号有:EPF10K10,EPF10K20,EPF10K30,EPF10K40,EPF10K50,EPF10K70,EPF10K100等。
4.ALTERACyclone系列
ALTERACyclone系列FPGA针对低成本进行设计,采用具有专业应用特性的低成本器件,Cyclone系列FPGA是成本敏感大批量应用的最佳方案。如果需要进一步进行系统集成,可以考虑密度更高的CycloneⅡ FPGA和CycloneⅢ FPGA。这些Cyclone新系列巩固了ALTERA在大批量、低成本应用方案中的领先优势。
Cyclone器件的性能足以和业界最快的FPGA媲美。CycloneFPGA综合考虑了逻辑、存储器、锁相环(PLL)和高级I/O接口,其主要特点有:
(1)新的可编程体系结构,实现低成本设计。
(2)嵌入式存储器资源支持多种存储器应用和数字信号处理(DSP)实现。
(3)专用外部存储器接口电路,支持与DDRFCRAM和SDRAM器件以及SDRSDRAM存储器的连接。
(4)支持串行总线和网络接口以及多种通信协议。
(5)片内和片外系统时序管理使用嵌入式PLL。
(6)支持单端I/O标准和差分I/O技术,LVDS信号数据速率高达640Mb/s。
(7)处理功耗支持NiosⅡ系列嵌入式处理器。
(8)采用新的串行配置器件的低成本配置方案。
(9)QuartusⅡ软件的OpenCore评估特性支持免费的IP功能评估。
6.1.5PLD的配置
CPLD芯片,比如MAX7000系列的配置程序固化在芯片内的EEPROM中,所以该器件不需要专用的配置存储器,所有MAX7000系列产品都由ALTERA公司提供的编程硬件和软件进行编程。配置所使用的编程硬件为编程卡、主编程部件(MasterProgramming Unit,MPU)和配套的编程适配器,编程软件为MAX+plusⅡ或QuartusⅡ软件。
对芯片的编程就是对EPROM的编程,芯片开始工作时,进入命令状态,在该状态将配置信息从EPROM中读到自己的SRAM中,然后进入用户状态,在用户状态器件就可以按照配置的功能进行工作了。因此,整个器件只要更换EPROM中的配置信息就可以更换功能,其灵活性是不言而喻的。该器件的配置方式主要有:主动串行配置(AS)、主动并行升址和降址配置(APU/APD)、被动串行配置(PS)、被动并行同步配置(PPS)、被动并行异步配置(PPA)、JTAG配置方式等。

