第一章 FPGA发展.ppt
第一章第一章 FPGA/CPLD简介简介 主要内容主要内容 可编程逻辑设计技术简介;可编程逻辑设计技术简介;FPGA/CPLD的基本结构;的基本结构;FPGA/CPLD的设计流程;的设计流程;FPGA/CPLD的常用开发工具;的常用开发工具;下一代可编程逻辑设计技术展望下一代可编程逻辑设计技术展望1.1 可编程逻辑设计技术简介可编程逻辑设计技术简介 在讨论可编程逻辑器件发展简史的基础上简述目前常在讨论可编程逻辑器件发展简史的基础上简述目前常用的可编程逻辑器件的分类。用的可编程逻辑器件的分类。1.1.1可编程逻辑器件发展简史可编程逻辑器件发展简史 可编程逻辑器件的基本思想可编程逻辑器件的发展可以划分为4个阶段:第1阶段:从20世纪70年代初到70年代中。(PROMEPROM,EEPROM,PLA)第2阶段:从20世纪70年代中到80年代中。(PALGAL)第3阶段:从20世纪80年代到90年代末。(FPGACPLD)第4阶段:从20世纪90年代末到目前(SOPC和SOC)1.1.2可编程逻辑器件分类可编程逻辑器件分类 广义上讲广义上讲PLD是厂家作为一种通用型器件生产的是厂家作为一种通用型器件生产的半定制电路,可编程逻辑器件是指半定制电路,可编程逻辑器件是指一切一切通过软件手段通过软件手段更改、配置器件内部连接结构和逻辑单元更改、配置器件内部连接结构和逻辑单元,完成既定,完成既定设计功能的数字集成电路。设计功能的数字集成电路。目前常用的可编程逻辑鉴目前常用的可编程逻辑鉴件主要有简单的逻辑阵列(件主要有简单的逻辑阵列(PAL/GAL)、复杂可编程)、复杂可编程逻辑器件(逻辑器件(CPLD)和现场可编程逻辑阵列)和现场可编程逻辑阵列(FPGA)等)等3大类。大类。(l)PAL/GAL PAL:Programmable Array Logic,即可编程阵列,即可编程阵列逻辑;逻辑;GAL:Generic Array Logic,即通用可编程,即通用可编程阵列逻辑。阵列逻辑。PAL/GAL是早期可编程逻辑器件的发展形式,其特点是大多基于大多基于E2CM0S工艺工艺,结构较为简单,可编程逻辑单元多为与、或阵列多为与、或阵列,可偏程单元密度较低,仅能适用于某些简单的数字逻辑电路。优点:低功耗、低成本、高可靠性、软件可编程、可重复更改。多用于译码和驱动,如步进电机控制器。目前比较大的GAL器件供应商主要是Lattice半导体。(2)CPLDCPLD:Complex Programmable Logic Device,即复杂的可编程逻辑器件。,即复杂的可编程逻辑器件。CPLD一般也采用一般也采用E2CM0S工艺,也有少数厂家采用工艺,也有少数厂家采用Flash工艺,其基本结构由可编程工艺,其基本结构由可编程I/O单元,基本逻单元,基本逻辑单元、布线池和其他辅助功能模块构成。辑单元、布线池和其他辅助功能模块构成。CPLD一般可以完成设计中较复杂、较高速度的逻辑功能,一般可以完成设计中较复杂、较高速度的逻辑功能,如接口转换、总线控制等。如如接口转换、总线控制等。如dsp人机接口模块设计,人机接口模块设计,高速数据采集系统高速数据采集系统CPLD的主要器件供应商有Altera、lattice和Xilnx等。(3)FPGA FPGA:Field Programmable Gate Array,即现场可,即现场可编程逻辑阵列。编程逻辑阵列。它它一般一般采用采用SRAM工艺工艺,也有一些专用器件采用,也有一些专用器件采用Flash工艺或反熔丝(工艺或反熔丝(Anti-Fuse)工艺)工艺等。等。FPGA的集成度很高,其集成密度从数万系统门到数千万系其集成密度从数万系统门到数千万系统门不等统门不等,可以完成极其复杂的时序与组合逻辑电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。如数字电视调制器、视频采集系统 FPGA的基本组成部分有可编程输入的基本组成部分有可编程输入/输出单元、基输出单元、基本可本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元、内嵌专用硬核等。FPGA的主要器件供应商有Xilinx、Altera、Lattice、Actel和Atmel等。基于工艺的FPGA从工艺实现的角度,FPGA主要可以分为基于SRAM的FPGA,基于Flash的FPGA和基于反熔丝的FPGA:1.SRAMbasedFPGA:最流行的FPGA,逻辑单元和布线通道的编程单元为SRAMCell,通过这些SRAMCell配置成0或1来实现不同的逻辑功能;SRAMbasedFPGA采用标准的CMOS工艺,可以随着工艺的更新不断地提高集成度,提高性能和降低功耗。而且可以采用最新的工艺提供最先进的产品,如已量产的65nm产品有:Altera的CycloneIII和StratixIII,Xilinx的Virtex-5系列产品。各自的45nm/40nm工艺的产品也已经量产。SRAMbasedFPGA的主要特点是:-无穷次可编程-集成度高,容量大,性能高,功耗相对较大;-挥发,需要外部配置ROM;2Anti-fusebasedFPGA:逻辑单元和布线通道的编程单元为Anti-fuseCell,通过Anti-fuseCell的“烧通”来实现不同的逻辑功能;主要特点如下:-一次编程;-非挥发,保密性最好;-抗辐射性能好。3FlashbasedFPGA:技术难度最高的FPGA,逻辑单元和布线通道的编程单元为FlashCell,通过这些FlashCell配置成0或1来实现不同的逻辑功能。具备了反复擦写和掉电后内容非易失特性,因此具有sram的灵活性和反熔丝结构的可靠性。主要特点如下:-非挥发,保密性好;-可编程-功耗低,性能和集成度相对较差;-价格相对较高;1.2FPGA/CPLD的基本结构的基本结构 FPGA器件从1985年出现以来得到迅速发展,其密度、速度、功能、结构等都有了很大改进,但其基本结构大体相同。1.2.1 FPGA的基本结构的基本结构 简化的FPGA基本由6部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等每个单元的基本概念介绍如下(l)可编程输入/输出单元可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求。FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。一般说来,常见的电气标准有LVTTL、LVCMOS、SSTL、HSTL、LVDS、LVPECL和PCI等。(2)基本可编程逻辑单元)基本可编程逻辑单元基本可编程逻辑单元是可编程逻辑的主体,可以根据设计灵活地改变其内部连接与配置,完成不同的逻辑功能。FPGA一般是基于SRAM工艺的,其基木可编程逻辑单元几乎都是由查找表(LUT,LookUpTable)和寄存器(Register)组成的。FPGA内部查找表一般为4输入,查找表一般完成纯组合逻辑功能。FPGA内部寄存器结构相当灵活,可以配置为带同步/异步复位或置位、时钟使能的触发器(FF,FlipFlop),也可以配置成为锁存器(Latch)。FPGA一般依赖寄存器完成同步时序逻辑设计。一般来说,比较经典的基本可编程单元的配置是一个寄存器加一个查找表,但是不同厂商的寄存器和查找表的内部结构有一定的差异,而且寄存器和查找表的组合模式也不同。例如,Altera可编程逻辑单元通常被称为LE(LogicElement,逻辑单元),由一个Register加一个LUT构成。逻辑阵列模块(LAB,LogicArrayBlock):10LE+LE间的进位链+LAB控制信号+局部互联线资源+LUT级联链+寄存器级联链等连线与控制资源。Xilinx可编程逻辑单元叫Slice:2LC(LogicCell,逻辑单元)+共用逻辑每个LC都由一个Register加上一个LUT组成,共用逻辑,可以完成LC之间的配合与级联。Lattice的底层逻辑单元叫PFU(ProgrammableFunctionUnit,可编程功能单元),它由8个LUT和89个Register构成。3)嵌入式块RAM块RAM可被配置为单端口RAM、双端口RAM、伪双端口RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。RAM是根据地址读写的数据存储单元。CAM存储器在路由的地址交换器中有广泛的应用。FIFO是先进先出队列式存储结构。FIFO一般用于不同时钟域之间的数据传输。除了块RAM,还可以将FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。芯片内部块RAM的数量也是选择芯片的一个重要因素。(4)丰富的布线资源根据工艺、长度、宽度和分布位置的不同而划分为类:第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。(5)底层内嵌功能单元内嵌功能模块主要指DLL(DelayLockedLoop)、PLL(PhaseLockedLoop)、DSP等软处理核(SoftCore)。现在越来越丰富的内嵌功能单元,使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。赛灵思公司生产的芯片上集成了DCM和DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同时集成了PLL和DLL。PLL和DLL可以通过IP核生成的工具方便地进行管理和配置。(6)内嵌专用硬核内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(HardCore),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。例如:为了提高FPGA的乘法速度,主流的FPGA中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。注:FPGA内部分为两大阵营:一类是通用性较强目标市场范围广价格适中的FPGA另一类是针对性较强目标市场明显价格较高的FPGAFPGA 的原理根据数字电路的基本知识可以知道,对于一个n输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n种结果。所以如果事先将相应的结果存放于一个存贮单元,就相当于实现了与非门电路的功能。FPGA的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。4输入与门的真值表举例假设组合逻辑AND3的输出为f则f=(A+B)*C*!D=A*C*!D+B*C*!D1.2.2 CPLD的基本结构复杂可编程器件CPLD基本结构与PAL/GAL相仿,是基于与或阵列的乘积项结构,但集成度要高得多。CPLD大都是由E2PROM和Flash工艺制造的,可反复编程,一上电就可以工作,无须其他芯片配合。CPLD在结构和工艺上和FPGA有很大的差别。CPLD的结构相对比较简单,主要有可编程I/O单元、基本逻辑单元、布线池和其它辅助功能模块构成,CPLD结构示意图1.可编程逻辑单元作用与FPGA的I/O口基本相同,但是CPLD应用范围局限性较大,I/O的性能和复杂度与FPGA相比有一定的差距,支撑的I/O标准较少,频率也较低。2.基本逻辑单元CPLD中基本逻辑单元是宏单元。所谓宏单元就是由一些与、或阵列加上触发器构成的,其中“与或”阵列完成组合逻辑功能,触发器用以完成时序逻辑。与CPLD基本逻辑单元相关的另外一个重要概念是乘积项。所谓乘积项就是宏单元中与阵列的输出,其数量标志了CPLD容量。乘积项阵列实际上就是一个“与或”阵列,每一个交叉点都是一个可编程熔丝,如果导通就是实现“与”逻辑,在“与”阵列后一般还有一个“或”阵列,用以完成最小逻辑表达式中的“或”关系。3.布线池、布线矩阵CPLD中的布线资源比FPGA的要简单的多,布线资源也相对有限,一般采用集中式布线池结构。所谓布线池其本质就是一个开关矩阵,通过打结点可以完成不同宏单元的输入与输出项之间的连接。由于CPLD器件内部互连资源比较缺乏,所以在某些情况下器件布线时会遇到一定的困难。由于CPLD的布线池结构固定,所以CPLD的输入管脚到输出管脚的标准延时固定,被成为PintoPin延时,用Tpd表示,Tpd延时反映了CPLD器件可以实现的最高频率,也就清晰地表明了CPLD器件的速度等级。4.其他辅助功能模块如JTAG编程模块,一些全局时钟、全局使能、全局复位/置位单元等。CPLD工作原理举例假设组合逻辑AND3的输出为f则f=(A+B)*C*!D=A*C*!D+B*C*!D组合逻辑f的实现1.2.3 FPGA和和CPLD的比较的比较当代FPGA/CPLD的特点:规模越来越大开发过程投资小FPGA/CPLD一般可以反复地编程、擦除FPGA/CPLD开发工具智能化、功能强大新型FPGA内嵌CPU或DSP内核,支持软硬件协同设计,可以作为片上可编程系统(SOPC)的硬件平台新型FPGA内部内嵌高性能ASIC的硬核。FPGA/CPLD的区别及联系FPGA的适用领域应用领域:1定制性功能,批量不大(大型1K,小型100K)2需变化功能(标准变化,指标变化)3链接及接口功能4产品差异化,专利实现5ASIC验证1.2.4 FPGA和和CPLD开发应用的选择开发应用的选择一FPGA/CPLD的选择FPGA/GPLD的选择主要看开发项目本身的需要,对于普通规模且产量不是很大的产品项目,通常使用CPLD比较好。这是因为:(1)在中小规模范围,CPLD价格较便宜,能直接用于系统。(2)开发CPLD的EDA软件比较容易得到,其中不少PLD公司将有条件地提供免费软件。(3)CPLD的结构大多为EEPROM或FlashROM形式,编程后即可固定下载的逻辑功能,使用方便,电路简单。(4)目前最常用的CPLD多为在系统可编程的硬件器件,编程方式极为便捷。(5)CPLD中有专门的布线区和许多块,无论实现什么样的逻辑功能,或采用怎样的布线方式,引脚至引脚间的信号延时几乎是固定的,与逻辑设计无关。FPGA的使用途径主要有以下4个方面:(1)直接使用。即如CPLD那样直接用于产品的电路系统板上。(2)间接使用。其方法是首先利用FPGA完成系统整机的设计,包括最后的电路板的定型,然后将充分检证的成功的设计软件,如VHDL程序,交付原供产商进行相同封装形式的掩模设计。(3)硬件仿真。由于FPGA是SRAM结构,且能提供庞大的逻辑资源,因而适用于作各种逻辑设计的仿真器件。从这个意义上讲,FPGA本身即为开发系统的一部分。(4)专用集成电路ASIC设计仿真。二FPGA器件选型常识FPGA器件的选型非常重要,不合理的选型会导致一系列的后续设计问题,有时甚至会使设计失败;合理的选型不光可以避免设计问题,而且可以提高系统的性价比,延长产品的生命周期,获得预想不到的经济效果。FPGA器件选型有以下7个原则:器件的供货渠道和开发工具的支持、器件的硬件资源、器件的电气接口标准、器件的速度等级、器件的温度等级、器件的封装和器件的价格。1器件的供货渠道和开发工具的支持目前,主要的FPGA供应商有赛灵思公司、Altera公司、Lattic公司和Actel公司等,FPGA的发展速度非常快,很多型号的FPGA器件已不是主流产品,为了提高产品的生命周期,最好在货源比较足的主流器件中选型。2器件的硬件资源硬件资源是器件选型的重要标准。硬件资源包括逻辑资源、IO资源、布线资源、DSP资源、存储器资源、锁相环资源、串行收发器资源和硬核微处理器资源等。逻辑资源和IO资源的需求是每位设计人员最关心的问题,一般都会考虑到,可是,过度消耗IO资源和布线资源可能产生的问题却很容易被忽视。主流FPGA器件中,逻辑资源都比较丰富,一般可以满足应用需求。可是,在比较复杂的数字系统中,过度IO资源的消耗可能会导致2个问题:FPGA负荷过重,器件发热严重,严重影响器件的速度性能、工作稳定性和寿命,设计中要考虑器件的散热问题;局部布线资源不足,电路的运行速度明显降低,有时甚至使设计不能适配器件,设计失败。根据一般的应用经验:(1)在做复杂数字信号处理时,位数比较高的乘法器和除法器对全局布线资源的消耗量比较大;(2)在做逻辑设计时,双向IO口对局部布线资源的消耗量比较大;(3)在利用存储器资源设计滤波器的应用场合,局部布线资源的消耗量比较大;(4)在电气接口标准比较多,而逻辑比较复杂的应用场合,局部布线资源的消耗量比较大。(5)在做乘法运算比较多而且对速度性能要求比较高的应用场合,最好能选用带DSP资源比较多的器件,例如,Altera公司的Statix和Statix系列,赛灵思公司的Virtex-4SX和Virtex-5SX系列等器件中的存储器资源主要有2种用途:作高性能滤波器;实现小容量高速数据缓存。这是一种比较宝贵的硬件资源,一般器件中的存储器资源都不太多,存储器资源较多的器件逻辑容量也非常大,用得也比较少,供货渠道也不多,器件价格也非常高。因此,在器件选型时,最好不要片面追求设计的集成度而选用这种器件,可以考虑选用低端器件+外扩存储器的设计方案。目前,主流FPGA中都集成了锁相环,利用锁相环对时钟进行相位锁定,可以使电路获得更稳定的性能。赛灵思公司提供的是数字锁相环,其优点是能获得更精确的相位控制,其缺点是下限工作频率较高,一般在24MHz以上;Altera公司提供的是模拟锁相环,其优点是下限工作频率较低,一般在16MHz以上,其主流器件Statix和Statix系列中的增强型锁相环工作频率只要求在4MHz以上,其缺点是对时钟相位的控制精度相对较差。在通讯领域里,用光纤传输高速数据是一个比较常用的解决方案。A1tera公司的StatixGX和StatixGX系列,赛灵思公司的Virtex-4FX和Virtex-5FX系列都集成了高速串行收发器(注意:赛灵思V5带T的产品都有高速串行收发器,V4、V2P某些型号也有高速串行收发器),这种器件价格一般都比较高。目前,National和Maxim等公司提供的高性能专用串行收发芯片价格都不高,因此,如果只是进行光纤数据传输没计,大可不必选用这种器件;如果是光纤数据传输+逻辑或算法比较复杂的应用场合,最好是将两种方案进行比较,然后考虑是否选用该器件。利用集成硬核微处理器的FPGA器件进行嵌入式开发,代表嵌入式应用的一个方向。赛灵思公司提供集成PowerPC的Virtex-4FX和virtex-5FX系列器件。随着器件价格不断下降,在很多应用场合,在不增加成本的情况下,选用该器件和传统FPGA+MCU的应用方案相比,能大幅度提高系统性能和降低硬件设计复杂程度。此时,选用该器件是比较理想的。3电气接口标准目前,数字电路的电气接口标准非常多。在复杂数字系统中,经常会出现多种电气接口标准。目前,主流FPGA器件支持的电气接口标准有:15V,15-V等,可以满足绝大部分应用设计需要4器件的速度等级关于器件速度等级的选型,一个基本的原则是:在满足应用需求的情况下,尽量选用速度等级低的器件。该选型原则有如下好处:(1)由于传输线效应,速度等级高的器件更容易产生信号反射,设计要在信号的完整性上花更多的精力;(2)速度等级高的器件一般用得比较少,价格经常是成倍增加,而且高速器件的供货渠道一般比较少,器件的订货周期一般都比较长,经常会延误产品的研发周期,降低产品的上市率。5器件的温度等级某些应用场合,对器件的环境温度适应能力提出了很高的要求,此时,就应该在有工业级甚至是军品级或宇航级的器件中进行选型。据调研,Altera公司每种型号的FPGA都有工业级产品;Xllinx公司每种型号的FPGA都有工业级产品,部分型号的FPGA提供军品级和宇航级产品。6器件的封装目前,主流器件的封装形式有:QFP,BGA和FB-GA,BGA和FBGA封装器件的管脚密度非常高,设计中必须使用多层板,PCB布线相当复杂,设计成本比较高,器件焊接成本比较高,因此,设计中能不用尽量不用。不过,在密度非常高,集成度非常高和对PCB板体积要求比较高的应用场合,尽量选用BGA和FBGA封装器件。还有一种情况,在电路速度非常高的应用场合,最好选用BGA和FBGA封装器件,这2种封装器件由于器件管脚引线电感和分布电容比较小,有利于高速电路的设计。7器件的价格器件集成度不断提高,性能不断上升,而价位不断下降是FPGA器件发展的普遍趋势,因此,在不断推出的新型器件中选型是一个基本规律。以赛灵思公司刚推出的Virtex-5为例,性能比Virtex-4提高30,而相对价位却降低35。1.3、FPGA设计流程FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。典型FPGA的开发流程一般如图4.1.1所示,包括功能定义/器件选型、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程与调试等主要步骤。1、功能定义/器件选型在FPGA设计项目开始之前,必须有系统功能的定义和模块的划分,另外就是要根据任务要求,如系统的功能和复杂度,对工作速度和器件本身的资源、成本、以及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型。一般都采用自顶向下的设计方法,把系统分成若干个基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接使用EDA元件库为止。2设计输入设计输入是将所设计的系统或电路以开发软件要求的某种形式表示出来,并输入给EDA工具的过程。常用的方法有硬件描述语言(HDL)和原理图输入方法等。原理图输入方式是一种最直接的描述方式,在可编程芯片发展的早期应用比较广泛,它将所需的器件从元件库中调出来,画出原理图。这种方法虽然直观并易于仿真,但效率很低,且不易维护,不利于模块构造和重用。更主要的缺点是可移植性差,当芯片升级后,所有的原理图都需要作一定的改动。目前,在实际开发中应用最广的就是HDL语言输入法,利用文本描述设计,可以分为普通HDL和行为HDL。普通HDL有ABEL、CUR等,支持逻辑方程、真值表和状态机等表达方式,主要用于简单的小型设计。而在中大型工程中,主要使用行为HDL,其主流语言是VerilogHDL和VHDL。这两种语言都是美国电气与电子工程师协会(IEEE)的标准,其共同的突出特点有:语言与芯片工艺无关,利于自顶向下设计,便于模块的划分与移植,可移植性好,具有很强的逻辑描述和仿真功能,而且输入效率很高。除了这IEEE标准语言外,还有厂商自己的语言。也可以用HDL为主,原理图为辅的混合设计方式,以发挥两者的各自特色。3功能仿真功能仿真也称为前仿真是在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。仿真前,要先利用波形编辑器和HDL等建立波形文件和测试向量(即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中便可以观察各个节点信号的变化。如果发现错误,则返回设计修改逻辑设计。常用的工具有ModelTech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog以及NC-VHDL等软件。4综合优化所谓综合就是将较高级抽象层次的描述转化成较低层次的描述。综合优化根据目标与要求优化所生成的逻辑连接,使层次设计平面化,供FPGA布局布线软件进行实现。就目前的层次来看,综合优化(Synthesis)是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路。真实具体的门级电路需要利用FPGA制造商的布局布线功能,根据综合后生成的标准门级结构网表来产生。为了能转换成标准的门级结构网表,HDL程序的编写必须符合特定综合器所要求的风格。由于门级结构、RTL级的HDL程序的综合是很成熟的技术,所有的综合器都可以支持到这一级别的综合。常用的综合工具有Synplicity公司的Synplify/SynplifyPro软件以及各个FPGA厂家自己推出的综合开发工具。5综合后仿真综合后仿真检查综合结果是否和原设计一致。在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响。但这一步骤不能估计线延时,因此和布线后的实际情况还有一定的差距,并不十分准确。目前的综合工具较为成熟,对于一般的设计可以省略这一步,但如果在布局布线后发现电路结构和设计意图不符,则需要回溯到综合后仿真来确认问题之所在。在功能仿真中介绍的软件工具一般都支持综合后仿6实现与布局布线布局布线可理解为利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应文件(如配置文件与相关报告),实现是将综合生成的逻辑网表配置到具体的FPGA芯片上,布局布线是其中最重要的过程。布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上,并且往往需要在速度最优和面积最优之间作出选择。布线根据布局的拓扑结构,利用芯片内部的各种连线资源,合理正确地连接各个元件。目前,FPGA的结构非常复杂,特别是在有时序约束条件时,需要利用时序驱动的引擎进行布局布线。布线结束后,软件工具会自动生成报告,提供有关设计中各部分资源的使用情况。由于只有FPGA芯片生产商对芯片结构最为了解,所以布局布线必须选择芯片开发商提供的工具。7时序仿真时序仿真,也称为后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现象。时序仿真包含的延迟信息最全,也最精确,能较好地反映芯片的实际工作情况。由于不同芯片的内部延时不一样,不同的布局布线方案也给延时带来不同的影响。因此在布局布线后,通过对系统和各个模块进行时序仿真,分析其时序关系,估计系统性能,以及检查和消除竞争冒险是非常有必要的。在功能仿真中介绍的软件工具一般都支持综合后仿真。8板级仿真与验证板级仿真主要应用于高速电路设计中,对高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具进行仿真和验证。9芯片编程与调试设计的最后一步就是芯片编程与调试。芯片编程是指产生使用的数据文件(位数据流文件,BitstreamGeneration),然后将编程数据下载到FPGA芯片中。其中,芯片编程需要满足一定的条件,如编程电压、编程时序和编程算法等方面。逻辑分析仪(LogicAnalyzer,LA)是FPGA设计的主要调试工具,但需要引出大量的测试管脚,且LA价格昂贵。目前,主流的FPGA芯片生产商都提供了内嵌的在线逻辑分析仪(如XilinxISE中的ChipScope、AlteraQuartusII中的SignalTapII以及SignalProb)来解决上述矛盾,它们只需要占用芯片少量的逻辑资源,具有很高的实用价值。FPGA典型设计流程1.4 fpga/cpld的常用开发工具 Quartus2集成的EDA工具:一类是Altera提供的软件工具;另一类是其它的EDA厂商提供的软件工具(第三方工具)Altera自带的软件工具:Texteditor、Memoryeditor、Megawizard、Schemeticeditor、综合工具、RTLviewer、Assinmenteditor、Logiclock、PowerfitFitter、Timinganalyzer、FloorplanEditor、Chipeditor、Designspaceexplor、Designassistant、Assembler、Programmer、PowerGauge、Signtap、SignalProbe、SOPCbuilder、DSPbuilder、SOFTwarebuilder第三方EDA工具:synplify、Amplify、Menter、synopsis综合工具Modersim、Verilogxl、cadence等仿真工具。设计工具种类1设计输入工具2综合工具3仿真工具4综合和优化工具5后端辅助工具6验证与调试工具7系统级设计环境工具一、设计输入工具:常用的:HDL语言输入、原理图输入、IPcore输入、状态图输入、波形输入、真值表输入UltraEdit一个使用广泛的编辑器HDLTurboWriterVHDL/verilog专用编辑器,可大小写自动转换,缩进,折叠,格式编排很方便。可直接使用FPGAadvantage做后端处理,此套软件也可以编辑C/C+,Java等多重语言,HDLDesignerSeriesMentor公司的前端设计软件,包括5个部分,涉及设计管理,分析,输入等,原Renoir软件也已转到HDLDesignerSeriesVisialVHDL/VisalVerilog可视化的HDL/Verilog编辑工具,可以通过画流程图等可视化方法生成一部分VHDL/Verilog代码innoveda公司出品VisualEliteVisialHDL的下一代产品,能够辅助系统级到电路级的设计二、综合工具:SynplifySYNOPSYS的FPGAexpress工具LeonardospectrumQuartus2内嵌综合工具三、仿真工具Modersim、NCverilog、Cadenceverilogxl,SynopsysVCS、ActirveHDL四、实现与优化工具AssinmenteditorLogiclockPowerfitFitterTiminganalyzerFloorplanEditorChipeditorDesignspaceexplorDesignassistant五、后端辅助工具AssemblerProgrammerPowerGauge六、验证调试工具SignaltapSignalProbe七、系统级设计环境SOPCbuilderDSPbuilderSOFTwarebuilder1.5下一代可编程逻辑设计技术展望1规模越来越大,成本越来越低2低端CPLD逐步取代74系列等传统的数字器件3高端FPGA不断取代ASIC的位置4大规模FPGA内嵌CPU内核,支持系统级设计1.5.1下一代可编程逻辑器件硬件上的发展趋势1先进工艺2处理器内核、硬核3结构化ASIC4低成本器件1先进工艺一方面应用场合广泛,客户对FPGA提出了更为苛刻的要求另一方面可编程逻辑器件的可观利润促使厂商不断降低器件成本。90nm的工艺:器件密度提高、工作频率提高、器件价格降低2处理器内核电路设计分为偏硬和偏软两种应用。偏硬的应用即数字硬件电路,其特点是要求信号实时及高速处理,处理调度相对简单,核心是实时性要求高。主要是FPGA/CPLD偏软的应用即数字运算电路,其特点是电路处理速度要求相对较低,允许有一定的延迟,但电路处理调度相对复杂,核心是调度复杂。其主要设计手段是CPU或DSP偏软和偏硬电路的互通竞争:高速DSP,工作频率达到GhzFPGA用寄存器和LUT实现微处理器融合:高端FPGA集成了CPU或DSP的运算block3硬核与结构化ASIC高端FPGA集成了功能丰富的IP硬核,完成高速、复杂的硬件标准。设计方面,ASIC和FPGA的区别AISC:异步逻辑设计,门控时钟驱动,布线固定FPGA:同步逻辑设计,时序驱动,布线灵活ASIC相比FPGA的优势:功耗低、能完成高速设计、设计密度大FPGA相比ASIC的优势:周期短、开发成本低,设计灵活融合FPGA和ASIC,两种思路:一种:在FPGA中内嵌ASIC模块,以完成高速、复杂、低功耗的部分,其它低速、低功耗相对简单的电路由FPGA完成,FPGA向ASIC的融合另一种:在ASIC中集成部分可编程的灵活配置资源,或者继承成熟的FPGA设计,使之转化成ASIC,ASIC向FPGA的融合,称之为结构化ASIC结构化ASIC的形式:一种:对成熟的FPGA设计,将其中,没有使用的时钟资源、布线资源、专用的硬核、BLOCKRAM等资源简化或省略另一种:将成熟的IP软核转化为ASIC的硬核,从而在FPGA的某些层专门划分出空白的ASIC区域,叫MACO,调试完成后,将与IP软核对应的硬核适配到MACO块中4低成本器件1.5.2下一代EDA软件设计方法发展趋势软件设计技术总趋势:支持不断更新的器件族,越来越人性化的设计,越来越好的设计优化效果,软件工具的仿真速度越来越快,仿真精度越来越高,综合软件的综合优化效果越来越好,越来越完备的分析验证手段,布局布线软件的效率和优化效果不断提高。EDA设计方法显著特点:高级设计语言、系统级仿真和系统级综合优化方法、模块化设计和增量设计方法。可编程片上系统(SOPC)的基本特征 可编程片上系统(SOPC)是一种特殊的嵌入式系统:首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。SOPC结合了SOC和FPGA各自的优点,一般具备以下基本特征:至少包含一个以上的嵌入式处理器IPCore具有小容量片内高速RAM资源丰富的IPCore资源可供灵活选择足够的片上可编程逻辑资源处理器调试接口和FPGA编程接口共用或并存可能包含部分可编程模拟电路单芯片、低功耗、微封装