早期的电子管、晶体管、小中规模集成电路、发展到超大规模集成电路以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件,其中应用最广泛的当属现场可编程门阵列(Field Programmable Gate Array,FPGA)和复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)。可编程逻辑器件简称PLD,是Programmable Logic Devices的缩写。PLD是EDA得以实现的硬件基础,通过编程可以灵活地构建和修改数字电路系统。
早期的可编程逻辑器件(20世纪70年代)只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(EEPROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。
其后,出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与-或”表达式来描述,所以,PLD能以乘积和的形式完成大量的组合逻辑功能。这一阶段的产品主要有PAL和GAL。PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和EEPROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上,又发展了一种通用阵列逻辑GAL(Generic Array Logic),如GAL16V8、GAL22V10等。它采用了EEPROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。
为了弥补这一缺陷,20世纪80年代中期。Altera公司和Xilinx公司分别推出了类似于PAL结构的扩展型CPLD和与标准门阵列类似的FPGA,它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其他ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无须测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10000件以下)之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。
近年来,可编程逻辑器件(PLD)一直呈现很好的发展态势,PLD灵活方便,不仅性能、速度、连接具有优势,而且可以缩短上市时间,因此,应用领域不断拓展。随着通信设备、数据传输,以及计算技术的高速化和复杂化,对PLD的集成度和性能提出了越来越高的要求,因而可编程片上系统或平台,也即可编程SOC就应运而生。
为了在增长潜力巨大的通信市场占有更大的份额,业界重要的可编程逻辑器件制造商都先后推出了自己的系统级产品。概括起来大致是采用两种方法来实现可编程SOC,一种是在可编程器件FPGA中嵌入CPU内核,获得可编程系统平台;另一种是将可编程模块置入ASIC之中,得到具有可配置功能的ASIC。可编程SOC已经渐成可编程器件的发展趋势。ASIC与FPGA融合的概念得到越来越多的可编程器件厂商的认同,尽管FPGA和ASIC各具特点,但这些融合产品逐渐模糊了两者之间的界限。目前,虽然有许多这种融合的高性能ASIC替代产品进入市场,而且今后的发展方向也可能是二者进一步融合,但是,据预测,在今后一段时间内ASIC仍然会占据高端芯片市场。
1)按集成度分类 集成度是可编程逻辑器件的一项很重要的指标,如果按集成密度分类,可分为简单可编程逻辑器件(SPLD)和高密度可编程逻辑器件(HDPLD)。通常将PROM、PLA、PAL和GAL这4种PLD产品划归为简单可编程逻辑器件,而将CPLD和FPGA统称为高密度可编程逻辑器件。
2) 按编程结构分类
乘积项结构PLD器件:包括PROM、PLA、PAL、GAL、EPLD、CPLD等器件。查找表结构PLD器件:FPGA就属于这类器件。
3) 按互连结构分类
确定型PLD:该类器件提供互连结构,每次用相同的互连线布线,其时间特性可以确定预知,如CPLD。
统计型PLD:该类器件在设计系统时,其时间特性是不可预知的,每次执行相同的功能时,有不同的布线模式,因而无法预知线路的延时,如Xilinx公司的FPGA器件。
4) 按编程工艺分类
熔丝(Fuse)或反熔丝(Antifuse)编程器件:PROM器件、Xilinx公司的XC5000系列器件和Actel的FPGA器件等采用这种编程工艺。
EPROM编程器件:即紫外线擦除/电可编程器件,大多数FPGA和CPLD用这种方式编程。
EEPROM编程器件:即电擦写编程器件,GAL器件、ispLSI器件就是用这种方法编程的。
SRAM编程器件:Xilinx公司的FPGA是这类器件的代表。
FPGA由6部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。各单元简介如下。
1)可编程输入 / 输出单元 ( I/O 单元 ) 目前大多数FPGA的I/O单元被设计为可编程模式,即通过软件的灵活配置,可适应不同的电器标准与I/O物理特性;可以调整匹配阻抗特性,上/下拉电阻;可以调整输出驱动电流的大小等。
2)基本可编程逻辑单元 FPGA的基本可编程逻辑单元是由查找表(LUT)和寄存器(Register)组成的,查找表完成纯组合逻辑功能。FPGA内部寄存器可配置为带同步/异步复位和置位、时钟使能的触发器,也可以配置成为锁存器。FPGA一般依赖寄存器完成同步时序逻辑设计。一般来说,比较经典的基本可编程单元的配置是一个寄存器加一个查找表,但不同厂商的寄存器和查找表的内部结构有一定的差异,而且寄存器和查找表的组合模式也不同。
学习底层配置单元的LUT和Register比率的一个重要意义在于器件选型和规模估算。由于FPGA内部除了基本可编程逻辑单元外,还有嵌入式的RAM、PLL或DLL,专用的Hard IP Core等,这些模块也能等效出一定规模的系统门,所以简单科学的方法是用器件的Register或LUT的数量衡量。
3)嵌入式块 RAM 目前大多数FPGA都有内嵌的块RAM。嵌入式块RAM可以配置为单端口RAM、双端口RAM、伪双端口RAM、CAM、FIFO等存储结构。
CAM是内容地址存储器。写入CAM的数据会和其内部存储的每个数据进行比较,并返回与端口数据相同的所有内部数据的地址。简单地说,RAM是一种写地址、读数据的存储单元,CAM与RAM恰恰相反。
除了块RAM,Xilinx公司和Lattice公司的FPGA还可以灵活地将LUT配置成RAM、ROM、FIFO等存储结构。
4)丰富的布线资源 布线资源连通FPGA内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。布线资源的划分如下。
☺ 全局性的专用布线资源:用来完成器件内部的全局时钟和全局复位/置位的布线。
☺ 长线资源:用来完成器件不同区(Bank)间的一些高速信号和一些全局时钟信号的布线。
☺ 短线资源:用来完成基本逻辑单元间的逻辑互联与布线。
☺ 其他:在逻辑单元内部还有着各种布线资源和专用时钟、复位等控制信号线。
由于在设计过程中,往往由布局布线器自动根据输入的逻辑网表的拓扑结构和约束条件选择可用的布线资源连通所用的底层单元模块,所以常常忽略布线资源。其实布线资源的优化与使用和实现结果有直接关系。
5)底层嵌入功能单元 嵌入式功能单元指的是那些通用程度较高的嵌入式功能模块,比如PLL、DLL、DSP、CPU等。
6)内嵌专用硬核 与“底层嵌入单元”是有区别的,这里指的硬核主要是那些通用性相对较弱,不是所有FPGA器件都包含的硬核。
CPLD主要由可编程I/O单元、基本逻辑单元、布线池和其他辅助功能模块构成。
1)可编程 I/O 单元 作用与FPGA的基本I/O口相同,但是CPLD应用范围局限性较大,I/O的性能和复杂度与FPGA相比有一定的差距,支撑的I/O标准较少,频率也较低。
2)基本逻辑单元 CPLD中基本逻辑单元是宏单元。所谓宏单元就是由一些“与”、“或”阵列加上触发器构成的,其中“与或”阵列完成组合逻辑功能,触发器用以完成时序逻辑。
与CPLD基本逻辑单元相关的另外一个重要概念是乘积项。所谓乘积项就是宏单元中与阵列的输出,其数量标志了CPLD容量。乘积项阵列实际上就是一个“与或”阵列,每个交叉点都是一个可编程熔丝,如果导通就实现“与”逻辑,在“与”阵列后一般还有一个“或”阵列,用以完成最小逻辑表达式中的“或”关系。
3)布线池 、 布线矩阵 CPLD中的布线资源比FPGA的要简单得多,布线资源也相对有限,一般采用集中式布线池结构。布线池的本质就是一个开关矩阵,通过打节点可以完成不同宏单元的输入与输出项之间的连接。由于CPLD器件内部互连资源比较缺乏,所以在某些情况下器件布线时会遇到一定的困难。由于CPLD的布线池结构固定,所以CPLD的输入引脚到输出引脚的标准延时固定,被称为Pin to Pin延时,用Tpd表示。Tpd延时反映了CPLD器件可以实现的最高频率,也就清晰地表明了CPLD器件的速度等级。
4)其他辅助功能模块 如JTAG编程模块,一些全局时钟、全局使能、全局复位/置位单元等。
尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点。
☺ CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑。换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。
☺ CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。
☺ 在编程上,FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FPGA可在逻辑门下编程,而CPLD是在逻辑块下编程。
☺ FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。
☺ CPLD比FPGA使用起来更方便。CPLD的编程采用EEPROM或FASTFLASH技术,无须外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,使用方法复杂。
☺CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。
☺ 在编程方式上,CPLD主要是基于EEPROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。CPLD又可分为在编程器上编程和在系统编程两类。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。
☺ CPLD保密性好,FPGA保密性差。
一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。
下面以MAX 7000为例说明CPLD的结构特点。如图1-2所示,CPLD在结构上包括逻辑阵列块LAB(Logic Array Blocks)、宏单元(Macrocells)[包括扩展乘积项(共享和并联)(Expender Product Terms)]、可编程连线阵列PIA(Programmable Interconnect Array)和I/O控制块(I/O Control Blocks)。
图1-2 MAX 7000的结构图
1)逻辑阵列块 ( LAB ) MAX 7000主要是由逻辑阵列块(LAB)以及它们之间的连线构成的,如图1-2所示。每个LAB由16个宏单元组成,多个LAB通过可编程连线阵列PIA和全局总线连接在一起,全局总线由所有的专用输入、I/O引脚和宏单元馈入信号。
每个LAB的输入信号包括来自PIA的36个信号、全局控制信号(用于宏单元内的寄存器实现辅助功能)和从I/O引脚到寄存器的直接输入信号。
2)宏单元 ( Macrocell ) 每个宏单元由3个功能块组成:逻辑阵列、乘积项选择矩阵和可编程触发器。逻辑阵列实现组合逻辑功能,它可给每个宏单元提供5个乘积项。乘积项选择矩阵分配这些乘积项作为到“或”门和“异或”门的主要逻辑输入,以实现组合逻辑函数;每个宏单元的1个乘积项可以反相后回送到逻辑阵列。
这个“可共享”的乘积项能够连到同一个LAB中任何其他乘积项上。根据设计的逻辑需要,开发工具MAX+plusⅡ将自动优化乘积项的分配。
每个宏单元的寄存器可以单独地编程为具有可编程时钟控制的D、JK或SR触发器工作方式。如果需要的话,也可将寄存器旁路,以实现纯组合逻辑的输出。在设计输入时,用户可以规定所希望的寄存器类型,然后MAX+plusⅡ对每个寄存器功能选择最有效的触发器工作方式,以使设计所需要的器件资源最少。
宏单元的寄存器支持异步清除、异步置位功能。乘积项选择矩阵分配乘积项来控制这些操作。当然,每个寄存器的复位功能可以由低电平有效的、专用的全局复位信号来驱动。
3)扩展乘积项 ( Expender Product Terms ) 尽管大多逻辑函数能够用每个宏单元中的5个乘积项实现,但某些逻辑函数比较复杂,要实现它们的话,需要附加乘积项。为提供所需要的逻辑资源,利用了MAX 7000结构中具有的共享和并联扩展乘积项,而不是利用另一个宏单元。这两种扩展项作为附加的乘积项直接送到本LAB的任意宏单元中。利用扩展项可保证在实现逻辑综合时,用尽可能少的逻辑资源,得到尽可能快的工作速度。
4)可编程连线阵列 可编程连线阵列(PIA)是将各LAB相互连接,构成所需的逻辑布线通道。它能够把器件中任何信号源连到其目的地。所有MAX 7000的专用输入、I/O引脚和宏单元输出均馈送到PIA,PIA可把这些信号送到整个器件内的各个地方。图1-3表示的是PIA如何布线到LAB。
图1-3 PIA布线
在掩膜或现场可编程门阵列中,基于通道布线方案的布线延时是累加的、可变的和与路径有关的;而MAX 7000的PIA有固定的延时。因此,PIA消除了信号之间的时间偏移,使得时间性能容易预测。
5)I/O 控制块 I/O控制块允许每个I/O引脚单独地配置为输入、输出和双向工作方式。所有I/O引脚都有一个三态缓冲器,它能由全局输出使能信号进行三态控制,或者可以把使能端直接连到地(GND)或电源(VCC)上。I/O控制块有两个全局输出使能信号,它们由两个专用的、低电平有效的输出使能引脚OE1和OE2来驱动。图1-4所示为I/O控制块的结构图。当三态缓冲器的控制端连到地(GND)时,其输出为高阻态,并且I/O引脚可作为专用输入引脚使用。当三态缓冲器的控制端连到电源(VCC)时,输出被使能。
图1-4 MAX 7000的I/O控制块结构图
6)可编程速度 / 功率控制 MAX 7000器件提供节省功率的工作模式,可使用户定义的信号路径或整个器件工作在低功耗状态。由于许多逻辑应用的所有门中只有小部分工作在高频率,所以在这种模式下工作时,可使整个器件总功耗下降到原来的50%或更低。
设计者可以对器件中的每个独立的宏单元编程为高速(接通)或者低速(关闭),这样可使设计中影响速度的关键路径工作在高速、高功耗状态,而器件的其他部分仍工作于低速、低功耗状态,从而降低整个器件的功耗。
7)设计加密 所有MAX 7000 CPLD都包含一个可编程的保密位,该保密位控制能否读出器件内的配置数据。当保密位被编程时,器件内的设计不能被复制和读出。由于在EEPROM内的编程数据是看不见的,所以利用保密位可实现高级的设计保密。当CPLD被擦除时,保密位和所有其他的编程数据一起被擦除。
8)在系统编程 ( ISP ) MAX 7000A、MAX 7000S系列芯片支持在系统编程的功能,支持JTAG边界扫描测试的功能。我们只要通过一根下载电缆连接到目标板上,就可以非常方便地实现多次重复编程,大大方便了调试电路的工作。
以Altera的Stratix®系列FPGA器件为例,该系列包括强大的系统级功能,具有设计的灵活性和高性能的系统集成性。Stratix器件是通用的器件系列之一,提供了功能丰富的系统方案,将可编程芯片系统(SOPC)设计推向新的水平。StratixⅡFPGA满足需要更高性能、更大容量和更低成本的设计要求。Stratix的特性如下。
1)高性能架构 高性能Stratix器件架构经由速度优化的互连结构和高效的时钟网络构成,它们连接逻辑单元(LE)、TriMatrix TM 存储块、数字信号处理(DSP)块、锁相环(PLL)和I/O单元(IOE),获取最大的系统性能。需要更高性能的设计者可以使用Stratix V系列的FPGA。Stratix提供多达79040个LE和多达7Mbit的嵌入存储器。Stratix器件的大容量和嵌入存储器是Stratix器件架构带宽和性能的补充。
2)大存储带宽和高速外部存储器接口 TriMatrix存储器具有多达7Mbit的RAM和8Tbit/s的器件存储带宽。这种复杂的存储结构包括三种大小的嵌入RAM块———M512、M4K和M-RAM块,可配置支持广泛的应用。
Stratix器件提供了先进的外部存储接口,允许设计者将外部大容量SRAM和DRAM器件集成到复杂系统设计中,而不会降低数据存取的性能。
Stratix器件支持和三类SRAM器件的接口———双数据率(DDR)、四数据率(QDR)、QDRⅡ和零总线转换(ZBT),频率高达200MHz。
Stratix器件支持和三类高速同步DRAM(SDRAM)器件的接口———单数据率(SDR SDRAM)、DDR SDRAM和快速循环(FCRAM),频率高达200MHz。
3)高性能数字信号处理 Stratix器件包括高性能嵌入式DSP单元,它为DSP的应用进行了优化。DSP块消除了DSP应用中的性能瓶颈,具有可预测和可靠的性能,能够节省资源而不影响性能。
Stratix器件具有比DSP处理器更强的数据处理能力,具有最强的系统性能。
Stratix器件提供灵活的软乘法器实现,它可配置为不同的数据宽度和延迟。软乘法器除了DSP块之外提供非常大的DSP吞吐量。
4)大 I/O 带宽和高速接口 Stratix器件支持各种单端和差分I/O标准,易于同背板、主处理器、总线、存储器件和3D图像控制器相连接。
Stratix True-LVDS TM 电路提供多达152个高速差分I/O通道,其中80个通道具有高达840Mbit/s的数据率,同时满足新兴I/O接口的高性能需求,包括支持LVDS、LVPECL、PCML和HyperTransport TM 标准。
Stratix器件支持高带宽单端I/O接口标准,如SSTL、HSTL、GTL、GTL+、CTT和PCI-X,可满足现今苛刻的系统需求。
Stratix器件支持多种高速接口标准,如SPI-4 Phase 2、SFI-4、10G Ethernet XSBI、HyperTransport、RapidIO TM 和UTOPIA IV标准。
5)系统时钟管理 Stratix器件具有多达12个可编程PLL和40个系统时钟,具有健全的时钟管理和频率合成能力,以获得最强的系统性能。
Stratix PLL具有以前只有高端分立PLL器件才具有的功能,包括时钟切换、PLL重配置、扩频时钟、频率合成、可编程相位偏移、可编程延迟偏移、外部反馈和可编程带宽。这些特性允许设计者管理Stratix器件内外的系统时序。
6)片内热插拔和上电顺序支持 Stratix器件具有健全的片内热插拔和上电顺序支持,确保器件的正常操作和上电顺序无关。该特性也在上电之前和上电期间保护器件和三态I/O缓冲,使得Stratix器件成为多电压系统及需要高可用性和冗余性应用的理想方案。
7)远程系统升级能力 Stratix器件具有远程系统升级能力,允许安全、可靠、无差错地从远程进行系统升级。
8)嵌入式处理器核 Stratix器件现今的架构特性结合NiosⅡ嵌入式处理器具有无与伦比的处理能力,可满足网络、电信、DSP应用、海量存储和其他大带宽系统的需求。Stratix器件将NiosⅡ处理器性能提升到150 DMIPS以上。
9)低成本的批量成品器件 HardCopy器件为Stratix器件提供了批量成品的低成本无缝移植方式。另外,掩码编程HardCopy Stratix器件具有比最快Stratix FPGA速度等级更快的性能(平均增加50%)。
高性能的Stratix TM 器件架构由直列逻辑阵列、TriMatrix TM 存储块(RAM)、数字信号处理(DSP)块、锁相环(PLL)和环绕的I/O单元构成,如图1-5所示。速度优化的互连线和低偏移时钟网络为这些结构之间的时钟和数据信号进行连接。
Stratix器件采用了具有DirectDrive TM 技术的MultiTrack TM 互连线。MultiTrack互连线由不同长度的连续的性能优化走线组成,进行不同设计模块之间的通信。DirectDrive技术是专有的确定走线的技术,它确保任何功能无论在器件的什么位置都具有一致的布线资源走法,如图1-6所示。这项技术免除了通常设计改变或添加所需的耗时的系统重优化过程,从而大大地简化了模块设计的系统集成过程。
图1-5 Stratix TM 器件架构图
MultiTrack互连结构在先进的低偏移时钟网配合下在器件内进行时钟分配,能够在每个区域内访问多达22个时钟域。每个Stratix器件具有多达16个跨越整个器件的全局时钟网,供所有架构的结构使用。全局时钟可以由内部逻辑、锁相环(PLL)输出或器件输入引脚驱动,能作为其他大扇出的全局信号,如异步清除和时钟使能,如图1-7所示。
图1-6 DirectDrive技术维持性能
图1-7 Stratix器件中的时钟分配
另外,每个器件的象限有四个区域时钟网络,能由内部逻辑、PLL输出或器件输入引脚驱动。这些时钟网络最适用于本地功能,因为它们具有最短的路径和象限内最小的偏移。
快速区域时钟网络提供更大器件中象限或半区内的高扇出信号。这些时钟网络有独立的输入引脚或外设I/O总线的信号驱动。此架构使得每个器件中有多达40个时钟网络,任何节点可以由多达22个独立时钟驱动。