可编程逻辑器件基础
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)。按照编程工艺可以分为四类:①熔丝(Fuse)和反熔丝(Antifuse)编程器件,②可擦除的可编程只读存储器(UEPROM)编程器件,③电信号可擦除的可编程只读存储器(EEPROM)编程器件(如: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阶段的可编程器件只有简单的可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦只读存储器(EEPROM)3种,由于结构的限制,它们只能完成简单的数字逻辑功能。
第2阶段出现了结构上稍微复杂的可编程阵列逻辑(PAL)和通用阵列逻辑(GAL)器件,正式被称为PLD,能够完成各种逻辑运算功能。典型的PLD由“与”、“非”阵列组成,用“与或”表达式来实现任意组合逻辑,所以PLD能以乘积和形式完成大量的逻辑组合。
第3阶段Xilinx和Altera分别推出了与标准门阵列类似的FPGA和类似于PAL结构的扩展性CPLD,提高了逻辑运算的速度,具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点,兼容了PLD和通用门阵列的优点,能够实现超大规模的电路,编程方式也很灵活,成为产品原型设计和中小规模(一般小于10000)产品生产的首选。这一阶段,CPLD、FPGA器件在制造工艺和产品性能都获得长足的发展,达到了0.18 工艺和系数门数百万门的规模。
第4阶段出现了SOPC和SOC技术,是PLD和ASIC技术融合的结果,涵盖了实时化数字信号处理技术、高速数据收发器、复杂计算以及嵌入式系统设计技术的全部内容。Xilinx和Altera也推出了相应SOCFPGA产品,制造工艺达到65 ,系统门数也超过百万门。并且,这一阶段的逻辑器件内嵌了硬核高速乘法器、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开发工具已成为影响其成败的核心成分。只有全面做到芯片技术领先、文档完整和PLD开发软件优秀,芯片提供商才能获得客户的认可。一个完美的PLD开发软件应当具备下面5点:
· 准确地将用户设计转换为电路模块
· 能够高效地利用器件资源
· 能够快速地完成编译和综合
· 提供丰富的IP资源
· 用户界面友好、操作简单
· Xilinx公司的ISE、Altera公司的Quartus II和Maxplus II是业界公认的优秀集成PLD开发软件。此外综合软件Synplify和仿真软件ModelSim等诸多第三方EDK开发软件也满足上述要求。
1.2.1 FPGA工作原理与简介
如前所述,FPGA是在PAL、GAL、EPLD、CPLD等可编程器件的基础上进一步发展的产物。它是作为ASIC领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路有限的缺点。
由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM工艺的查找表结构,也有一些军品和宇航级FPGA采用Flash或者熔丝与反熔丝工艺的查找表结构。通过烧写文件改变查找表内容的方法来实现对FPGA的重复配置。
根据数字电路的基本知识可以知道,对于一个n输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n种结果。所以如果事先将相应的结果存放于一个存贮单元,就相当于实现了与非门电路的功能。FPGA的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。
查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的 的RAM。 当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
下面给出一个4与门电路的例子来说明LUT实现逻辑功能的原理。
例1-1:给出一个使用LUT实现4输入与门电路的真值表。
表1-1 4输入与门的真值表
从中可以看到,LUT具有和逻辑电路相同的功能。实际上,LUT具有更快的执行速度和更大的规模。
由于基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合逻辑电路功能,所以适用于高速、高密度的高端数字逻辑电路设计领域。其组成部分主要有可编程输入/输出单元、基本可编程逻辑单元、内嵌SRAM、丰富的布线资源、底层嵌入功能单元、内嵌专用单元等,主要设计和生产厂家有Xilinx、Altera、Lattice、Actel、Atmel和QuickLogic等公司,其中最大的是Xilinx、Altera、Lattice三家。
如前所述,FPGA是由存放在片内的RAM来设置其工作状态的,因此工作时需要对片内RAM进行编程。用户可根据不同的配置模式,采用不同的编程方式。FPGA有如下几种配置模式:
· 并行模式:并行PROM、Flash配置FPGA;
· 主从模式:一片PROM配置多片FPGA;
· 串行模式:串行PROM配置FPGA;
· 外设模式:将FPGA作为微处理器的外设,由微处理器对其编程。
目前,FPGA市场占有率最高的两大公司Xilinx和Altera生产的FPGA都是基于SRAM工艺的,需要在使用时外接一个片外存储器以保存程序。上电时,FPGA将外部存储器中的数据读入片内RAM,完成配置后,进入工作状态;掉电后FPGA恢复为白片,内部逻辑消失。这样FPGA不仅能反复使用,还无需专门的FPGA编程器,只需通用的EPROM、PROM编程器即可。Actel、QuickLogic等公司还提供反熔丝技术的FPGA,只能下载一次,具有抗辐射、耐高低温、低功耗和速度快等优点,在军品和航空航天领域中应用较多,但这种FPGA不能重复擦写,开发初期比较麻烦,费用也比较昂贵。Lattice是ISP技术的发明者,在小规模PLD应用上有一定的特色。早期的Xilinx产品一般不涉及军品和宇航级市场,但目前已经有Q Pro-R等多款产品进入该类领域。
1.2.2 FPGA芯片结构
目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。如图1-1所示(注:图1-1只是一个示意图,实际上每一个系列的FPGA都有其相应的内部结构),FPGA芯片主要由6部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
图1-1 FPGA芯片的内部结构
每个模块的功能如下:
1. 可编程输入输出单元(IOB)
可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如图1-2所示。FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。目前,I/O口的频率也越来越高,一些高端的FPGA通过DDR寄存器技术可以支持高达2Gbps的数据速率。
图1-2 典型的IOB内部结构示意图
外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA 内部。当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为0。
为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。
2. 可配置逻辑块(CLB)
CLB是FPGA内的基本逻辑单元。CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路(多路复用器等)和触发器组成。 开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多个(一般为4个或2个)相同的Slice和附加逻辑构成,如图1-3所示。每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM。
图1-3 典型的CLB结构示意图
Slice是Xilinx公司定义的基本逻辑单位,其内部结构如图1-4所示,一个Slice由两个4输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND),一个异或门可以使一个Slice实现2bit全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法操作;4输入函数发生器用于实现4输入LUT、分布式RAM或16比特移位寄存器(Virtex-5系列芯片的Slice中的两个输入函数为6输入,可以实现6输入LUT或64比特移位寄存器);进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。
图1-4 典型的4输入Slice结构示意图
3. 数字时钟管理模块(DCM)
业内大多数FPGA均提供数字时钟管理(Xilinx的全部FPGA均具有这种特性)。Xilinx推出最先进的FPGA提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。
4. 嵌入式块RAM(BRAM)
大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。块RAM可被配置为单端口RAM、双端口RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。RAM、FIFO是比较普及的概念,在此就不冗述。CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素。
单片块RAM的容量为18k比特,即位宽为18比特、深度为1024,可以根据需要改变其位宽和深度,但要满足两个原则:首先,修改后的容量(位宽 深度)不能大于18k比特;其次,位宽最大不能超过36比特。当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而不再受上面两条原则约束。
5. 丰富的布线资源
布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。
在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有密切、直接的关系。
6. 底层内嵌功能单元
内嵌功能模块主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等软处理核(Soft Core)。现在越来越丰富的内嵌功能单元,使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。
DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。Xilinx公司生产的芯片上集成了DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同时集成了PLL和DLL。PLL 和DLL可以通过IP核生成的工具方便地进行管理和配置。DLL的结构如图1-5所示。
图1-5 典型的DLL模块示意图
7. 内嵌专用硬核
内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。例如:为了提高FPGA的乘法速度,主流的FPGA中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。
Xilinx公司的高端产品不仅集成了Power PC系列CPU,还内嵌了DSP Core模块,其相应的系统级设计工具是EDK和Platform Studio,并依此提出了片上系统(System on Chip)的概念。通过PowerPC、Miroblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,达到SOC的开发目的。
1.2.3 软核、硬核以及固核的概念
IP(Intelligent Property)核是具有知识产权核的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。到了SOC阶段,IP核设计已成为ASIC电路设计公司和FPGA提供商的重要任务,也是其实力体现。对于FPGA开发软件,其提供的IP核越丰富,用户的设计就越方便,其市场占用率就越高。目前,IP核已经变成系统设计的基本单元,并作为独立设计成果被交换、转让和销售。
从IP核的提供方式上,通常将其分为软核、硬核和固核这3类。从完成IP核所花费的成本来讲,硬核代价最大;从使用灵活性来讲,软核的可复用使用性最高。
1. 软核
软核在EDA设计领域指的是综合之前的寄存器传输级(RTL)模型;具体在FPGA设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。软核只经过功能仿真,需要经过综合以及布局布线才能使用。其优点是灵活性高、可移植性强,允许用户自配置;缺点是对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风险。软核是IP核应用最广泛的形式。
2. 固核
固核在EDA设计领域指的是带有平面规划信息的网表;具体在FPGA设计中可以看做带有布局规划的软核,通常以RTL代码和对应具体工艺网表的混合形式提供。将RTL描述结合具体标准单元库进行综合优化设计,形成门级网表,再通过布局布线工具即可使用。和软核相比,固核的设计灵活性稍差,但在可靠性上有较大提高。目前,固核也是IP核的主流形式之一。
3. 硬核
硬核在EDA设计领域指经过验证的设计版图;具体在FPGA设计中指布局和工艺固定、经过前端和后端验证的设计,设计人员不能对其修改。不能修改的原因有两个:首先是系统设计对各个模块的时序要求很严格,不允许打乱已有的物理版图;其次是保护知识产权的要求,不允许设计人员对其有任何改动。IP硬核的不许修改特点使其复用有一定的困难,因此只能用于某些特定应用,使用范围较窄。
1.3.1 FPGA设计方法概论
FPGA是可编程芯片,因此FPGA的设计方法包括硬件设计和软件设计两部分。硬件包括FPGA芯片电路、存储器、输入输出接口电路以及其他设备,软件即是相应的HDL程序以及最新才流行的嵌入式C程序。硬件设计是基础,但其方法比较固定,本书将在第4节对其进行详细介绍,本节主要介绍软件的设计方法。
目前微电子技术已经发展到SOC阶段,即集成系统(Integrated System)阶段,相对于集成电路(IC)的设计思想有着革命性的变化。SOC是一个复杂的系统,它将一个完整产品的功能集成在一个芯片上,包括核心处理器、存储单元、硬件加速单元以及众多的外部设备接口等,具有设计周期长、实现成本高等特点,因此其设计方法必然是自顶向下的从系统级到功能模块的软、硬件协同设计,达到软、硬件的无缝结合。
这么庞大的工作量显然超出了单个工程师的能力,因此需要按照层次化、结构化的设计方法来实施。首先由总设计师将整个软件开发任务划分为若干个可操作的模块,并对其接口和资源进行评估,编制出相应的行为或结构模型,再将其分配给下一层的设计师。这就允许多个设计者同时设计一个硬件系统中的不同模块,并为自己所设计的模块负责;然后由上层设计师对下层模块进行功能验证。
自顶向下的设计流程从系统级设计开始,划分为若干个二级单元,然后再把各个二级单元划分为下一层次的基本单元,一直下去,直到能够使用基本模块或者IP核直接实现为止,如图1-6所示。流行的FPGA开发工具都提供了层次化管理,可以有效地梳理错综复杂的层次,能够方便地查看某一层次模块的源代码以修改错误。
图1-6 自顶向下的FPGA设计开发流程
在工程实践中,还存在软件编译时长的问题。由于大型设计包含多个复杂的功能模块,其时序收敛与仿真验证复杂度很高,为了满足时序指标的要求,往往需要反复修改源文件,再对所修改的新版本进行重新编译,直到满足要求为止。这里面存在两个问题:首先,软件编译一次需要长达数小时甚至数周的时间,这是开发所不能容忍的;其次,重新编译和布局布线后结果差异很大,会将已满足时序的电路破坏。因此必须提出一种有效提高设计性能,继承已有结果,便于团队化设计的软件工具。FPGA厂商意识到这类需求,由此开发出了相应的逻辑锁定和增量设计的软件工具。例如,Xilinx公司的解决方案就是PlanAhead。
Planahead允许高层设计者为不同的模块划分相应FPGA芯片区域,并允许底层设计者在在所给定的区域内独立地进行设计、实现和优化,等各个模块都正确后,再进行设计整合。如果在设计整合中出现错误,单独修改即可,不会影响到其它模块。Planahead将结构化设计方法、团队化合作设计方法以及重用继承设计方法三者完美地结合在一起,有效地提高了设计效率,缩短了设计周期。
不过从其描述可以看出,新型的设计方法对系统顶层设计师有很高的要求。在设计初期,他们不仅要评估每个子模块所消耗的资源,还需要给出相应的时序关系;在设计后期,需要根据底层模块的实现情况完成相应的修订。
1.3.2 典型FPGA开发流程
FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。FPGA的开发流程一般如图1-7所示,包括电路设计、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程与调试等主要步骤。
图1-7 FPGA开发的一般流程
1. 电路设计
在系统设计之前,首先要进行的是方案论证、系统设计和FPGA芯片选择等准备工作。系统工程师根据任务要求,如系统的指标和复杂度,对工作速度和芯片本身的各种资源、成本等方面进行权衡,选择合理的设计方案和合适的器件类型。一般都采用自顶向下的设计方法,把系统分成若干个基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接使用EDA元件库为止。
2. 设计输入
设计输入是将所设计的系统或电路以开发软件要求的某种形式表示出来,并输入给EDA工具的过程。常用的方法有硬件描述语言(HDL)和原理图输入方法等。原理图输入方式是一种最直接的描述方式,在可编程芯片发展的早期应用比较广泛,它将所需的器件从元件库中调出来,画出原理图。这种方法虽然直观并易于仿真,但效率很低,且不易维护,不利于模块构造和重用。更主要的缺点是可移植性差,当芯片升级后,所有的原理图都需要作一定的改动。目前,在实际开发中应用最广的就是HDL语言输入法,利用文本描述设计,可以分为普通HDL和行为HDL。普通HDL有ABEL、CUR等,支持逻辑方程、真值表和状态机等表达方式,主要用于简单的小型设计。而在中大型工程中,主要使用行为HDL,其主流语言是Verilog HDL和VHDL。这两种语言都是美国电气与电子工程师协会(IEEE)的标准,其共同的突出特点有:语言与芯片工艺无关,利于自顶向下设计,便于模块的划分与移植,可移植性好,具有很强的逻辑描述和仿真功能,而且输入效率很高。
3. 功能仿真
功能仿真,也称为前仿真,是在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。仿真前,要先利用波形编辑器和HDL等建立波形文件和测试向量(即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中便可以观察各个节点信号的变化。如果发现错误,则返回设计修改逻辑设计。常用的工具有Model Tech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog以及NC-VHDL等软件。
4. 综合优化
所谓综合就是将较高级抽象层次的描述转化成较低层次的描述。综合优化根据目标与要求优化所生成的逻辑连接,使层次设计平面化,供FPGA布局布线软件进行实现。就目前的层次来看,综合优化(Synthesis)是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路。真实具体的门级电路需要利用FPGA制造商的布局布线功能,根据综合后生成的标准门级结构网表来产生。为了能转换成标准的门级结构网表,HDL程序的编写必须符合特定综合器所要求的风格。由于门级结构、RTL级的HDL程序的综合是很成熟的技术,所有的综合器都可以支持到这一级别的综合。常用的综合工具有Synplicity公司的Synplify/Synplify Pro软件以及各个FPGA厂家自己推出的综合开发工具。
5. 综合后仿真
综合后仿真检查综合结果是否和原设计一致。在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响。但这一步骤不能估计线延时,因此和布线后的实际情况还有一定的差距,并不十分准确。目前的综合工具较为成熟,对于一般的设计可以省略这一步,但如果在布局布线后发现电路结构和设计意图不符,则需要回溯到综合后仿真来确认问题之所在。在功能仿真中介绍的软件工具一般都支持综合后仿真。
6. 实现与布局布线
实现是将综合生成的逻辑网表配置到具体的FPGA芯片上,布局布线是其中最重要的过程。布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上,并且往往需要在速度最优和面积最优之间作出选择。布线根据布局的拓扑结构,利用芯片内部的各种连线资源,合理正确地连接各个元件。目前,FPGA的结构非常复杂,特别是在有时序约束条件时,需要利用时序驱动的引擎进行布局布线。布线结束后,软件工具会自动生成报告,提供有关设计中各部分资源的使用情况。由于只有FPGA芯片生产商对芯片结构最为了解,所以布局布线必须选择芯片开发商提供的工具。
7. 实现与布局布线
时序仿真,也称为后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现象。时序仿真包含的延迟信息最全,也最精确,能较好地反映芯片的实际工作情况。由于不同芯片的内部延时不一样,不同的布局布线方案也给延时带来不同的影响。因此在布局布线后,通过对系统和各个模块进行时序仿真,分析其时序关系,估计系统性能,以及检查和消除竞争冒险是非常有必要的。在功能仿真中介绍的软件工具一般都支持综合后仿真。
8. 板级仿真与验证
板级仿真主要应用于高速电路设计中,对高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具进行仿真和验证。
9. 芯片编程与调试
设计的最后一步就是芯片编程与调试。芯片编程是指产生使用的数据文件(位数据流文件,Bitstream Generation),然后将编程数据下载到FPGA芯片中。其中,芯片编程需要满足一定的条件,如编程电压、编程时序和编程算法等方面。逻辑分析仪(Logic Analyzer,LA)是FPGA设计的主要调试工具,但需要引出大量的测试管脚,且LA价格昂贵。目前,主流的FPGA芯片生产商都提供了内嵌的在线逻辑分析仪(如Xilinx ISE中的ChipScope、Altera QuartusII中的SignalTapII以及SignalProb)来解决上述矛盾,它们只需要占用芯片少量的逻辑资源,具有很高的实用价值。
1.3.3 基于FPGA的SOC设计方法
基于FPGA的SOC设计理念将FPGA可编程的优点带到了SOC领域,其系统由嵌入式处理器内核、DSP单元、大容量处理器、吉比特收发器、混合逻辑、IP以及原有的设计部分组成。相应的FPGA规模大都在百万门以上,适合于许多领域,如电信、计算机等行业。
系统设计方法是SOC常用的方法学,其优势在于,可进行反复修改并对系统架构实现进行验证,???包括SOC集成硬件和软件组件之间的接口。不过,目前仍存在很多问题,最大的问题就是没有通用的系统描述语言和系统级综合工具。随着FPGA平台的融入,将SOC逐步地推向了实用。SOC平台的核心部分是内嵌的处理内核,其硬件是固定的,软件则是可编程的;外围电路则由FPGA的逻辑资源组成,大都以IP 的形式提供,例如存储器接口、USB接口以及以太网MAC层接口等,用户根据自己需要在内核总线上添加,并能自己订制相应的接口IP和外围设备。
基于FPGA的典型SOC开发流程为:
1.芯片内的考虑
从设计生成开始,设计人员需要从硬件/软件协同验证的思路入手,以找出只能在系统集成阶段才会被发现的软、硬件缺陷。然后选择合适的芯片以及开发工具,在综合过程得到优化,随后进行精确的实现,以满足实际需求。由于设计规模越来越大,工作频率也到了数百兆赫兹,布局布线的延迟将变得非常重要。为了确保满足时序,需要在布局布线后进行静态时序分析,对设计进行验证。
2.板级验证
在芯片设计完毕后,需要再进行板级验证,以便在印刷电路板(PCB)上保证与最初设计功能一致。因此,PCB布局以及信号完整性测试应被纳入设计流程。由于芯片内设计所做的任何改变都将反映在下游的设计流程中,各个过程之间的数据接口和管理也必须是无误的。预计SOC系统以及所必须的额外过程将使数据的大小成指数增长,因此,管理各种数据集本身是急剧挑战性的任务
1.4.1 Xilinx FPGA芯片介绍
Xilinx公司目前有两大类FPGA产品:Spartan类和Virtex类,前者主要面向低成本的中低端应用,是目前业界成本最低的一类FPGA;后者主要面向高端应用,属于业界的顶级产品。这两个系列的差异仅限于芯片的规模和专用模块上,都采用了先进的0.13 、90 甚至65 制造工艺,具有相同的卓越品质。
1.Spartan类
Spartan系列适用于普通的工业、商业等领域,目前主流的芯片包括:Spartan-2、Spartan-2E、Spartan-3、Spartan-3A以及Spartan-3E等种类。其中Spartan-2最高可达20万系统门,Spartan-2E最高可达60万系统门,Spartan-3最高可达500万门,Spartan-3A和Spartan-3E不仅系统门数更大,还增强了大量的内嵌专用乘法器和专用块RAM资源,具备实现复杂数字信号处理和片上可编程系统的能力。
(1)Spartan-2系列
Spartan-2在Spartan系列的基础上继承了更多的逻辑资源,达到更高的性能,芯片密度高达20万系统门。由于采用了成熟的FPGA结构,支持流行的接口标准,具有适量的逻辑资源和片内RAM,并提供灵活的时钟处理,可以运行8位的PicoBlaze软核,主要应用于各类低端产品中。其主要特点如下所示:
· 采用0.18 工艺,密度达到5292逻辑单元;
· 系统时钟可以达到200MHz;
· 采用最大门数为20万门,具有延迟数字锁相环;
· 具有可编程用户I/O;
· 具有片上块RAM存储资源;
· Spartan-2系列产品的主要技术特征如表1-2所示。
表1-2 Spartan-2系列 FPGA主要技术特征
(2)Spartan-2E 系列
Spartan-2E基于Virex-E架构,具有比Spartan-2更多的逻辑门、用户I/O和更高的性能。Xilinx还为其提供了包括存储器控制器、系统接口、DSP、通信以及网络等IP核,并可以运行CPU软核,对DSP有一定的支持。其主要特点如下所示:
· 采用0.15 工艺,密度达到15552逻辑单元;
· 最高系统时钟可达200MHz;
· 最大门数为60万门,最多具有4个延时锁相环;
· 核电压为1.2V,I/Q电压可为1.2V、3.3V、2.5V,支持19个可选的I/O标准;
· 最大可达288k的块RAM和221K的分布式RAM;
· Spartan-2E系列产品的主要技术特征如表1-3所示。
表1-3 Spartan-2E系列 FPGA主要技术特征
(3)Spartan-3系列
Spartan-3基于Virtex-II FPGA架构,采用90 技术,8层金属工艺,系统门数超过5百万,内嵌了硬核乘法器和数字时钟管理模块。从结构上看,Spartan-3将逻辑、存储器、数学运算、数字处理器处理器、I/O以及系统管理资源完美地结合在一起,使之有更高层次、更广泛的应用,获得了商业上的成功,占据了较大份额的中低端市场。其主要特性如下:
· 采用90 工艺,密度高达74880逻辑单元;
· 最高系统时钟为340MHz;
· 具有 的专用乘法器;
· 核电压为1.2V,端口电压为3.3V、2.5V、1.2V,支持24种I/O标准;
· 高达520k分布式RAM和1872k的块RAM;
· 具有片上时钟管理模块(DCM);
· 具有嵌入式Xtrema DSP功能,每秒可执行3300亿次乘加。
· Spartan-3系列产品的主要技术特征如表1-4所示。
表1-4 Spartan-3系列 FPGA主要技术特征
(4)Spartan-3A/3ADSP/3AN系列
Spartan-3A 在Spartan-3和Spartan-3E平台的基础上,整合了各种创新特性帮助客户极大地削减了系统总成本。利用独特的器件DNA ID技术,实现业内首款 FPGA 电子序列号;提供了经济、功能强大的机制来防止发生窜改、克隆和过度设计的现象。并且具有集成式看门狗监控功能的增强型多重启动特性。支持商用 flash 存储器,有助于削减系统总成本。其主要特性为:
· 采用90 工艺,密度高达74880逻辑单元;
· 工作时钟范围为5MHz~320MHz;
· 领先的连接功能平台,具有最广泛的 IO 标准(26 种,包括新的 TMDS 和 PPDS)支持;
· 利用独特的 Device DNA 序列号实现的业内首个功能强大的防克隆安全特性;
· 五个器件,具有高达 1.4M 的系统门和 502 个 I/O;
· 灵活的功耗管理。
· Spartan-3A系列产品的主要技术特征如表1-5所示。
表1-5 Spartan-3A系列 FPGA主要技术特征
Spartan-3ADSP平台提供了最具成本效益的 DSP 器件,其架构的核心就是 XtremeDSP DSP48A slice,还提供了性能超过30GMAC/s、存储器带宽高达2196 Mbps的新型 XC3SD3400A和XC3SD1800A器件。新型Spartan-3A DSP 平台是成本敏感型 DSP 算法和需要极高DSP性能的协处理应用的理想之选。其主要特征如下所示。
· 采用90 工艺,密度高达74880逻辑单元;
· 内嵌的DSP48A可以工作到250MHz;
· 采用结构化的SelectRAM架构,提供了大量的片上存储单元;
· VCCAUX的电压支持2.5V和3.3V,对于3.3V的应用简化了设计;
· 低功耗效率,Spartan-3A DSP器件具有很高的信号处理能力4.06 GMACs/mW。
· Spartan-3ADSP系列产品的主要技术特征如表1-6所示。
表1-6 Spartan-3ADSP系列 FPGA主要技术特征
Spartan-3AN芯片为最高级别系统集成的非易失性安全FPGA,提供下列2个独特的性能:先进SRAM FPGA的大量特性和高性能以及非易失性FPGA的安全、节省板空间和易于配置的特性。Spartan-3AN平台是对空间要求严苛和/或安全应用及低成本嵌入式控制器的理想选择。Spartan-3AN平台的关键特性包括:
· 业界首款90nm非易失性FPGA,具有可以实现灵活的、低成本安全性能的Device DNA电子序列号;
· 业内最大的片上用户Flash,容量高达11Mb;
· 提供最广泛的I/O标准支持,包括26种单端与差分信号标准
· 灵活的电源管理模式,休眠模式下可节省超过40%的功耗
· 五个器件,具有高达1.4M的系统门和502个I/O
· Spartan-3AN系列产品的主要技术特征如表1-7所示
表1-7 Spartan-3ADSP系列 FPGA主要技术特征
(5)Spartan-3E系列
Spartan-3E是目前Spartan系列最新的产品,具有系统门数从10万到160万的多款芯片,是在Spartan-3成功的基础上进一步改进的产品,提供了比Spartan-3更多的I/O端口和更低的单位成本,是Xilinx公司性价比最高的FPGA芯片。由于更好地利用了90 技术,在单位成本上实现了更多的功能和处理带宽,是Xilinx公司新的低成本产品代表,是ASIC的有效替代品,主要面向消费电子应用,如宽带无线接入、家庭网络接入以及数字电视设备等。其主要特点如下:
· 采用90 工艺;
· 大量用户I/O端口,最多可支持376个I/O端口或者156对差分端口;
· 端口电压为3.3V、2.5V、1.8V、1.5V、1.2V ;
· 单端端口的传输速率可以达到622 ,支持DDR接口;
· 最多可达36个 的专用乘法器、648 块RAM、231 分布式RAM;
· 宽的时钟频率 以及多个专用片上数字时钟管理(DCM)模块
· Spartan-3E系列产品的主要技术特征如表1-8所示。
表1-8 Spartan-3E系列 FPGA主要技术特征
2.Virtex类
Virtex系列是Xilinx的高端产品,也是业界的顶级产品,Xilinx公司正是凭借Vitex系列产品赢得市场,从而获得FPGA供应商领头羊的地位。可以说Xilinx以其Virtex-5、Virtex-4、Virtex-II Pro和Virtex-II系列FPGA产品引领现场可编程门阵列行业。主要面向电信基础设施、汽车工业、高端消费电子等应用。目前的主流芯片包括:Vitrex-2、Virtex-2 Pro、Vitex-4和Virtex-5等种类。
(1)Vitrex-2系列
Vitrex-2系列具有优秀的平台解决方案,这进一步提升了其性能;且内置IP核硬核技术,可以将硬IP核分配到芯片的任何地方,具有比Vitex系列更多的资源和更高的性能。其主要特征如下所示:
· 采用0.15/0.12 工艺;
· 核电压为1.5V,工作时钟可以达到420MHz;
· 支持20多种I/O接口标准;
· 内嵌了多个 硬核乘法器,提高了DSP处理能力;
· 具有完全的系统时钟管理功能,多达12个DCM模块。
· Virtex-2系列产品的主要技术特征如表1-9所示。
表1-9 Virtex-2系列 FPGA主要技术特征
(2)Virtex-2Pro系列
Virtex-2 Pro系列在Virtex-2的基础上,增强了嵌入式处理功能,内嵌了PowerPC405内核,还包括了先进的主动互联(Active Interconnect)技术,以解决高性能系统所面临的挑战。此外还增加了高速串行收发器,提供了千兆以太网的解决方案。其主要特征如下所示:
· 采用0.13 工艺;
· 核电压为1.5V,工作时钟可以达到420MHz;
· 支持20多种I/O接口标准;
· 增加了2个高性能RISC技术、频率高达400MHz的PowerPC处理器;
· 增加多个3.125Gbps速率的Rocket串行收发器;
· 内嵌了多个 硬核乘法器,提高了DSP处理能力;
· 具有完全的系统时钟管理功能,多达12个DCM模块。
· Virtex-2 Pro系列产品的主要技术特征如表1-10所示。
表1-10 Virtex-2 Pro系列 FPGA主要技术特征
(3)Vitex-4系列
Virtex-4器件整合了高达200,000个的逻辑单元,高达500 MHz的性能和无可比拟的系统特性。Vitex-4产品基于新的高级硅片组合模块(ASMBL)架构,提供了一个多平台方式(LX、SX、FX),使设计者可以根据需求选用不同的开发平台;逻辑密度高,时钟频率能够达到500MHz;具备DCM模块、PMCD相位匹配时钟分频器、片上差分时钟网络;采用了集成FIFO控制逻辑的500MHz SmartRAM技术,每个I/O都集成了ChipSync源同步技术的1 Gbps I/O和Xtreme DSP逻辑片。其主要特点如下:
· 采用了90 工艺,集成了高达20万的逻辑单元;
· 系统时钟500MHz;
· 采用了集成FIFO控制逻辑的500MHz Smart RAM 技术;
· 具有DCM模块、PMCD相位匹配时钟分频器和片上差分时钟网络;
· 每个I/O都集成了ChipSync源同步技术的1Gbps I/O;
· 具有超强的信号处理能力,集成了数以百计的XtremeDSP Slice,单片最大的处理速率为 。
Vitex-4 LX平台FPGA的特点是密度高达20万逻辑单元,是全球逻辑密度最高的FPGA系列之一,适合对逻辑门需求高的设计应用。
Virtex-4 SX平台提高了DSP、RAM单元与逻辑单元的比例,最多可以提供512个XtremeDSP硬核,可以工作在500MHz,其最大的处理速率为 ,并可以以其创建40多种不同功能,并能多个组合实现更大规模的DSP模块。与Vitex-2 Pro系列相比,还大大降低了成本和功耗,具有极低的DSP成本。SX平台的FPGA非常适合应用于高速、实时的数字信号处理领域。
Virtex-4 FX平台内嵌了1~2个32位RISC PowerPC处理器,提供了4个1300 Dhrystone MIPS、10/100/1000自适应的以太网MAC内核,协处理器控制器单元(APU)允许处理器在FPGA中构造专用指令,使FX器件的性能达到固定指令方式的20倍;此外,还包含24个Rocket I/O串行高速收发器,支持常用的0.6Gbps、1.25 Gbps、2.5 Gbps、3.125 Gbps、4 Gbps、6.25 Gbps、10 Gbps等高速传输速率。FX平台适用于复杂计算和嵌入式处理应用。
Virtex-4系列产品的主要技术特征如表1-11所示。
表1-11 Virtex-4系列 FPGA主要技术特征
(5)Virtex-5系列
Virtex-5系列是Xilinx最新一代的FPGA产品,计划提供了4种新型平台,每种平台都在高性能逻辑、串行连接功能、信号处理和嵌入式处理性能方面实现了最佳平衡。现有的3款平台为LX、LXT以及SXT。LX针对高性能逻辑进行了优化,LXT针对具有低功耗串行连接功能的高性能逻辑进行了优化,SXT针对具有低功耗串行连接功能的 DSP 和存储器密集型应用进行了优化。其主要特点如下:
· 采用了最新的65 工艺,结合低功耗 IP 块将动态功耗降低了35%;此外,还利用65nm三栅极氧化层技术保持低静态功耗;
· 利用65nm ExpressFabric技术,实现了真正的6输入LUT,并将性能提高了2个速度级别。
· 内置有用于构建更大型阵列的 FIFO 逻辑和 ECC 的增强型36 Kbit Block RAM带有低功耗电路,可以关闭未使用的存储器。
· 逻辑单元多达330,000个,可以实现无与伦比的高性能;
· I/O引脚多达1,200个,可以实现高带宽存储器/网络接口,1.25 Gbps LVDS;
· 低功耗收发器多达24个,可以实现100 Mbps - 3.75 Gbps高速串行接口;
· 核电压为1V,550 MHz系统时钟;
· 550 MHz DSP48E slice内置有25 x 18 MAC,提供352 GMACS的性能,能够在将资源使用率降低50%的情况下,实现单精度浮点运算;
· 利用内置式PCIe端点和以太网MAC模块提高面积效率 ;
· 更加灵活的时钟管理管道(Clock Management Tile)结合了用于进行精确时钟相位控制与抖动滤除的新型PLL和用于各种时钟综合的数字时钟管理器(DCM);
· 采用了第二代sparse chevron封装,改善了信号完整性,并降低了系统成本;
· 增强了器件配置,支持商用flash存储器,从而降低了成本。
· 现有的Virtex-5系列产品的主要技术特征如表1-12所示。
表1-12 Virtex-5系列 FPGA主要技术特征
注:一个Virtex-5 Slice具有4个LUT和4个触发器,而一个前文所提及的常规Slice只包含2个LUT个2个触发器。每个DSP48E包含一个25*18位的硬核乘法器、一个加法器和一个累加器。
1.4.2 Xilinx PROM芯片介绍
Xilinx公司的Platform Flash PROM能为所有型号的Xilinx FPGA提供非易失性存储。全系列PROM的容量范围为1Mbit到32Mbit,兼容任何一款Xilinx的FPGA芯片,具备完整的工业温度特性( 到 ),支持IEEE1149.1所定义的JTAG边界扫描协议。
PROM芯片可以分成3.3V核电压的 系列和1.8V核电压的 系列两大类,前者主要面向底端引用,串行传输数据,且容量较小,不具备数据压缩的功能;后者主要面向高端的FPGA芯片,支持并行配置、设计修订(Designing Revisioning)和数据压缩(Compression)等高级功能,以容量大、速度快著称,其详细参数如表1-13所示。
表1-13 Xilinx公司PROM芯片总结
系列包含XCF01S、XCF02S和XCF04S(容量分别为:1Mb、2Mb和4Mb),其共同特征有3.3V核电压,串行配置接口以及SOIC封装的VO20封装。 内部控制信号、数据信号、时钟信号和JTAG信号的整体结构如图1-8所示。
图1-8 XCF01S/XCF02S/XCF04S PROM结构组成框图
系列有XCP08P、XCF16P和XCF32P(容量分别为:8Mb、16Mb和32Mb),其共同特征有1.8V核电压、串行或并行配置接口、设计修订、内嵌的数据压缩器、FS48封装或VQ48封装和内嵌振荡器。 内部控制信号、数据信号、时钟信号和JTAG信号的整体结构如图1-9所示,其先进的结构和更高的集成度在使用中带来了极大的灵活性。
图1-9 XCP08P/XCF16P/XCF32P PROM结构组成框图
值得一提的是 系列设计修正和数据压缩这两个功能。设计修订功能在FPGA加电启动时改变其配置数据,根据所需来改变FPGA的功能,允许用户在单个PROM中将多种配置存储为不同的修订版本,从而简化FPGA配置更改,在FPGA内部加入少量的逻辑,用户就能在PROM中存储多达4个不同修订版本之间的动态切换。数据压缩功能可以节省PROM的空间,最高可节约50%的存储空间,从而降低成本,是一项非常实用的技术。当然如果编程时在软件端采用了压缩模式,则需要一定的硬件配置来完成相应的解压缩。
1.5 本章小结
本章首先介绍了FPGA器件的基本概念和发展历史;然后详细介绍了FPGA器件的工作原理、芯片结构以及组成部件,并在此基础上讨论了FPGA的开发流程,给出传统的开发方法以及SOC阶段的设计方法;最后列举了Xilinx公司的主流FPGA芯片和PROM芯片,这些芯片被广泛地应用在数字系统设计中,熟悉了解其性能指标和参数是Xilinx芯片开发人员所必须的。