CPLD是复杂可编程逻辑器件(Complex Programmable Logic Device)的缩写,它属于大规模集成电路LSI(Large Scale Integrated Circuit)里的专用集成电路ASIC(Application Specific Integrated Circuit),适合控制密集型数字系统设计; FPGA是现场可编程门阵列(Field Programmable Gate Array)的缩写,是作为专用集成电路ASIC领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。这两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者之间的区别,统称为可编程逻辑器件或CPLD/FPGA。
1. CPLD/FPGA的特点
CPLD最早由Altera公司推出,即MAX系列,多为Flash、EEPROM架构或乘积项(Product Term)架构的PLD; FPGA最早由Xilinx公司推出,多为SRAM架构或查表(Look Up Table)架构,需外接配置用的EPROM下载。因此,通常将以乘积项结构方式构成逻辑行为的器件称为CPLD,如Lattice的ispLSI系列、Xilinx的XC9500系列、Altera的MAX7000S系列和Lattice(原Vantis)的Mach系列等,如图1-1所示;将以查表法结构方式构成逻辑行为的器件称为FPGA,如Xilinx的SPARTAN系列、Altera的FLEX10K或ACEX1K系列等,如图1-2所示。
图1-1 基于乘积项结构的CPLD
图1-2 基于查找表结构的FPGA
尽管CPLD和FPGA都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,它们各自具有如下特点。
与FPGA相比,CPLD的逻辑单元较大、容量较小、时序确定、延时可预测。
CPLD在时间安排上胜于FPGA。CPLD基于一些可程序化行列逻辑PAL/PLA或乘积项。典型的FPGA则是一个以SRAM(静态随机存储器)为基础、由逻辑单元组成的装置,它包含的寄存器为逻辑表达式提供的查找表。所以FPGA在时间上取决于查找表路由,但这样FPGA比CPLD有更多寄存器和更多逻辑。
CPLD的容量一般较小,比较适合做一些容量不大、组合逻辑比较复杂但寄存器用得比较少的设计,如地址译码、总线接口逻辑、上电复位逻辑等,因此被广泛应用于产品的原型设计和产品生产(一般在10 000件以下)之中。几乎所有应用中小规模通用数字集成电路的场合均可应用CPLD器件。而FPGA的容量较大,包含有大量的逻辑单元、内嵌存储器及一些其他的高级特性,如锁相环、LVDS等,适合一些时序逻辑比较复杂的应用,如嵌入式CPU、数据处理等,它现场可编程,还可以配合单片机或DSP(数字信号处理)工作。
CPLD内部连接方式是采用连续内部连接(Continuous Interconnect),该方式决定了它的时序延迟是均匀的和可预测的,但受连接路径影响。FPGA则采用片段连接(Segment Interconnect),该方式决定了其延迟的不可预测性,但使其布线资源得到充分运用。
FPGA提供比CPLD器件足够大的有效逻辑容量密度,不仅大大减少了PCB的空间,还大大降低了系统功耗,同时还大大提高了系统设计的工艺可实现性和产品的可取性。
对用户而言,CPLD与FPGA的内部结构稍有不同,但用法一样,所以多数情况下,不必加以区分。CPLD/FPGA芯片都是特殊的ASIC芯片,它们除了具有ASIC的特点外,还具有以下优点。
随着超大规模集成电路(Very Large Scale IC,VLSI)工艺的不断提高,单一芯片内部可以容纳上百万个晶体管,CPLD/FPGA芯片的规模也越来越大,其单片逻辑门数已达到上百万门,它所能实现的功能也越来越强,同时也可以实现系统集成。
CPLD/FPGA芯片在出厂前都做过百分之百的测试,不需要设计人员承担投片风险和费用,设计人员只需在自己的实验室里就可以通过相关的软硬件环境来完成芯片的最终功能设计。所以,CPLD/FPGA的资金投入少,节省了许多潜在的花费。
用户可以反复地编程、擦除、使用,或者在外围电路不动的情况下,用不同软件就可实现不同的功能。所以,用FPGA/PLD试制样片,能以最快的速度占领市场。CPLD/FPGA软件包中有各种输入工具和仿真工具,以及版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可完成电路的输入、编译、优化、仿真,直至最后芯片的制作。当电路有少量改动时,更能显示出CPLD/FPGA的优势。电路设计人员使用CPLD/FPGA进行电路设计时,不需要具备专门的IC(集成电路)深层次的知识,CPLD/FPGA软件易学、易用,可以使设计人员更能集中精力进行电路设计,从而快速将产品推向市场。
CPLD/FPGA工作方式与单片机的工作方式相比,单片机的指令有固定的执行方式,且时钟频率较低,而CPLD/FPGA的运算执行方式会根据实现该运算的硬件电路方式不同而不同,并且其时钟频率比单片机使用的要高,所以其运算的速度会远高于单片机。
2. CPLD/FPGA的发展方向
CPLD/FPGA在近20年的时间里已经得到了巨大的发展,在未来的发展方向主要包括两大方面,即器件工艺的发展、开发软件和工具的发展。
1)器件工艺的发展方向 PLD(包括CPLD与FPGA)器件自问世以来,它在性能和规模上的发展主要依赖于制造工艺的不断改进,高密度PLD是VLSI集成工艺高度的产物。20世纪80年代末,美国Altera和Xilinx公司采用EECMOS工艺,分别推出了大规模/超大规模的CPLD和FPGA,这种芯片在达到高度集成度的同时,具有以往LSI/VLSI电路无法比拟的应用灵活性和多组态功能。
20世纪90年代,CPLD/FPGA发展更为迅速,不仅具有电擦除特性,而且出现了边缘扫描及在线编程等高级特性。另外,外围I/O模块扩大了它在系统中的应用范围和扩展性。1998年,HDPLD的主流主品集成度约为1~3万门,同时25万门产品面世; 1999年,产品集成度为40万门; 2000年出现容量为200万门的产品。Altera公司2010年推出的Stratix V FPGA可提供1430万的ASIC逻辑门或达到119万逻辑单元(LE)。Xilinx公司2011年推出的Virtex-7 FPGA可提供200万的ASIC逻辑单元(LE)。
在制作工艺上,Altera和Xilinx公司都采用最新制造技术,如Altera公司现已采用Intel 的14nm三栅极技术开发出高性能FPGA。所以,CPLD/FPGA器件工艺的发展主要体现在以下5个方面。
向大规模、高集成度方向发展:当前,CPLD/FPGA的规模已经达到了百万级,在工艺上,芯片的最小线宽达到了0.13μm,甚至达到了14nm,并且还会向着大规模、高集成度方向进一步发展。
向低电压、低功耗的方向发展: PLD的内核电压在不断地降低,经历了5V→3.3V→2.5V→1.8V的演变,未来将会更低。工作电压的降低,使得芯片的功耗也大大减少,这样就适应了一些低功耗场合的应用需求,如移动通信设备、个人数字助理等。
向高速可预测延时方向发展:在一些高速处理的系统中,由于数据处理量的激增,要求数字系统有大的数据吞吐速率(如对图像信号的处理),这样就对PLD的速度指标提出了更高的要求;另外,为了保证高速系统的稳定性,延时也是十分重要的指标。用户在进行系统重构时,担心的是延时特性会不会因重新布线的改变而改变,如果会改变,将会导致系统性能的不稳定性,这对庞大而高速的系统而言将是不可想象的,带来的损失也是巨大的。因此,为了适应未来复杂、高速电子系统的要求,PLD的高速可预测延时也是一个发展趋势。
向数模混合可编程方向发展:可编程逻辑器件的广泛应用使得电子系统的构成和设计方法均发生了很大的变化。但是,有关可编程器件的研究和开发工作多数都集中在数字逻辑电路上,直到1999年11月,Lattice公司推出了在系统可编程模拟电路,为EDA技术的应用开拓了更广阔的前景。目前,ISPPAC可实现3种功能,即信号调整、信号处理和信号转换。信号调整主要是对信号进行放大、衰减和滤波;信号处理是对信号进行求和积分运算;信号转换则是指把数字信号转换成模拟信号。EPAC芯片集中了各种模拟功能电路,如可编程增益放大器、可编程比较器、多路复用器、可编程A/D转换器、滤波器和跟踪保持放大器等。
向多功能、嵌入式模块方向发展:现在,PLD内已经广泛嵌入RAM/ROM、FIFO等存储器模块,甚至有些FPGA还嵌入了ARM内核,这些嵌入式模块可以实现更快的无延时的运算与操作。2000年,美国Altera公司研发出来可编程片上系统(System On Programmable Chip,SOPC),这更使得以FPGA为物理载体、在单一的FPGA中实现包括嵌入式处理器、接口系统、硬件协处理器或加速器系统、DSP系统、数字通信系统、存储电路及普通数字系统等成为现代电子技术中的研究热点。
2)开发软件和工具的发展方向 随着CPLD/FPGA设计越来越复杂,使用语言设计复杂的CPLD/FPGA成为一种趋势。目前,最主要的硬件描述语言是VHDL和Verilog HDL。VHDL发展得较早,语法严谨,而Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由。VHDL和Verilog HDL相比较,学习VHDL比学习Verilog HDL难一些,但Verilog HDL较自由的语法既使得初学者容易上手,也容易出错。
从EDA技术的发展趋势来看,直接采用C语言设计CPLD/FPGA将是一个发展方向,现在已出现用于CPLD/FPGA设计的C语言编译软件。在未来几年,C语言很可能逐渐成为继VHDL和Verilog HDL之后,设计大规模CPLD/FPGA的又一种重要手段。
3. CPLD/FPGA的应用领域
通信是CPLD/FPGA的传统领域,随着微细化的进步,芯片面积缩小,价格迅速下降,市场发展加快,同时由于CPLD/FPGA灵活方便,不仅性能、速度、连接上具有优势,而且可以缩短上市时间,因此其应用领域不断拓展。现在,许多用户都开始在一些批量生产的消费类电子产品上采用CPLD/FPGA,如DVD、TV、游戏设备、空调、PDA、数字视频、移动网络、无线局域网等。
在具体的应用上,CPLD/FPGA的逻辑功能有控制接口、总线接口、格式变换/控制、通道接口、协议控制接口、信号处理接口、成像控制/数字处理、加密/解密、错误探测等。CPLD/FPGA的典型应用见表1-1。
表1-1 CPLD/FPGA的典型应用