Xilinx FPGA高级设计及应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章 概述

1.1 可编程逻辑器件与PLD开发工具

1.1.1 可编程逻辑器件

可编程逻辑器件(Programmable Logic Device,PLD)起源于20世纪70年代,是在专用集成电路(ASIC)的基础上发展起来的一种新型逻辑器件,是当今数字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能,并且可以反复擦写。在修改和升级PLD时,不需要额外地改变PCB,只在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本,因此获得了广大硬件工程师的青睐,形成了巨大的PLD产业规模。

目前常见的PLD产品有编程只读存储器(Programmable Read Only Memory,PROM),现场可编程逻辑阵列(Field Programmable Logic Array,FPLA),可编程阵列逻辑(Programmable Array Logic,PAL),通用阵列逻辑(Generic Array Logic,GAL),可擦除的可编程逻辑器件(Erasable Programmable Logic Array,EPLA),复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)和现场可编程门阵列(Field Programmable Gate Array,FPGA)等类型。PLD器件从规模上又可以细分为简单PLD(SPLD)、复杂PLD(CPLD)及FPGA。它们内部结构的实现方法各不相同。

可编程逻辑器件按照颗粒度可以分为3 类:小颗粒度(如“门海(Sea of Gates)”架构)、中等颗粒度(如FPGA)和大颗粒度(如CPLD)。按照编程工艺可以分为4类:熔丝(Fuse)和反熔丝(Antifuse)编程器件、可擦除的可编程只读存储器(UEPROM)编程器件、电信号可擦除的可编程只读存储器(E2 PROM)编程器件(如CPLD)、SRAM编程器件(如FPGA)。在工艺分类中,前3类为非易失性器件,编程后配置数据保留在器件上;第4类为易失性器件,掉电后配置数据会丢失,因此在每次上电后需要重新进行数据配置。

1.1.2 可编程逻辑器件的发展历史

可编程逻辑器件的发展可以划分为4个阶段,即从20世纪70年代初到70年代中为第1阶段,从20世纪70年代中到80年代中为第2阶段,从20世纪80年代中到90年代末为第3阶段,从20世纪90年代末到目前为第4阶段。

第1阶段的可编程逻辑器件只有简单的可编程只读存储器、紫外线可擦除只读存储器(EPROM)和电信号可擦除的可编程只读存储器3种。由于结构的限制,它们只能完成简单的数字逻辑功能。

第2阶段出现了结构上稍微复杂的可编程阵列逻辑和通用阵列逻辑器件,正式被称为PLD,能够完成各种逻辑运算功能。典型的PLD由“与”、“非”阵列组成,用“与或”表达式来实现任意组合逻辑,所以PLD能以乘积和的形式完成大量的逻辑组合。

第3阶段Xilinx和Altera分别推出了与标准门阵列类似的FPGA和类似于PAL结构的扩展性CPLD,提高了逻辑运算的速度,具有体系结构和逻辑单元灵活、集成度高及适用范围宽等特点,兼容了PLD和通用门阵列的优点,能够实现超大规模的电路,编程方式也很灵活,成为产品原型设计和中、小规模(一般小于 10000)产品生产的首选。这一阶段,CPLD、FPGA器件在制造工艺和产品性能方面都获得了长足的发展,达到了0.18 工艺和门数超过百万门的规模。

第4阶段出现了SOPC和SOC技术,是PLD和ASIC技术融合的结果,涵盖了实时化数字信号处理技术、高速数据收发器、复杂计算及嵌入式系统设计技术的全部内容。Xilinx和Altera也推出了相应的SOCFPGA产品,制造工艺达到65nm,系统门数也超过百万门。并且,这一阶段的逻辑器件内嵌了硬核高速乘法器、Gbits差分串行接口、时钟频率高达500MHz的PowerPC微处理器、软核MicroBlaze、Picoblaze、Nios及NiosII,不仅实现了软件需求和硬件设计的完美结合,还实现了高速与灵活性的完美结合。这使其超越了ASIC器件的性能和规模,也超越了传统意义上FPGA的概念,使PLD的应用范围从单片扩展到系统级。目前,基于PLD片上可编程的概念仍在进一步向前发展。

1.1.3 PLD开发工具

基于高复杂度PLD器件的开发,在很大程度上要依靠电子设计自动化(EDA)来完成。PLD的EDA工具以计算机软件为主,将典型的单元电路封装起来形成固定模块及标准的硬件开发语言(如HDL语言)供设计人员使用。设计人员考虑如何将可组装的软件库和软件包搭建出满足需求的功能模块甚至完整的系统。PLD开发软件需要自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真,以及对于特定目标芯片的适配编译和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述和给定的硬件系统组件进行编译、优化、转换和综合。

随着开发规模的级数性增长,必须减短PLD开发软件的编译时间并提高其编译性能,以及提供丰富的知识产权(IP)和资源供设计人员调用。此外,PLD开发界面的友好性及操作的复杂程度也是评价其性能的重要因素。目前在PLD产业领域中,各个芯片提供商的PLD开发工具已成为影响其成败的核心成分。Xilinx公司的ISE、Altera公司的Quartus II和Max-plus II是业界公认的优秀集成PLD开发软件。此外,综合软件Synplify和仿真软件ModelSim等诸多第三方EDK开发软件也满足上述要求。

目前,综合工具主要有 DC(Design Compiler)、FC2(FPGA Compiler II)、Synplify Leo-nardo Galileo等。其中DC主要是用于ASIC的综合工具。FC2是DC在FPGA综合方面的增强版,FC2的开发队伍已解散。Leonardo 是做FPGA 综合工具的先驱Synplify Synplicity公司出品的,是目前成长最快的综合工具。但无论哪家综合工具,对FPGA的综合都必须紧密结合各FPGA厂家的FPGA结构,否则无法更好利用FPGA提供的优点。从目前来看,对做FPGA优选Synplify 或Leonardo 综合工具,FPGA综合性能差,但适宜ASIC综合。到目前为止,第三方的综合工具都未能很好地利用FPGA器件,如Virtex 系列的进位链综合工具,不管代码风格如何变,都利用不上。因为综合工具一直在升级,因此无法得到更好的性能,但若用Xilinx自己的综合工具XST,则可综合出来。从目前掌握的情况来看,Synplicity公司的综合工具比较优秀。