XilinxFPGA设计与实践教程第1章_第1页
XilinxFPGA设计与实践教程第1章_第2页
XilinxFPGA设计与实践教程第1章_第3页
XilinxFPGA设计与实践教程第1章_第4页
XilinxFPGA设计与实践教程第1章_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章 FPGA设计基础第一章 FPGA设计基础1.1 FPGA的基本概念的基本概念 1.2 可编程逻辑技术发展简介可编程逻辑技术发展简介 1.3 FPGA器件编程技术器件编程技术 1.4 通用通用FPGA的构成结构的构成结构 1.5 Xilinx FPGA的开发流程的开发流程 1.6 FPGA技术的未来发展技术的未来发展本章小结本章小结第一章 FPGA设计基础1.1 FPGA的基本概念的基本概念顾名思义,现场可编程逻辑门阵列(FPGA)是由可编程配置的逻辑块组成的数字集成电路,这些逻辑块之间有着丰富的可配置的互连资源,设计者可以通过对这些资源进行不同的配置和编程来达到自己所要实现的目标。我们

2、要从如下几个方面来理解FPGA的特性。 第一章 FPGA设计基础首先,FPGA名称中的“现场可编程”是指编程“在现场”进行(与那些内部功能已被制造商固化的器件正相反)。这意味着FPGA的编程具有更强的灵活性和创新性,我们可以在实验室进行配置,或者可以对已经应用于实际的电子系统中的某些功能进行改进,或者可以根据用户需求,实现新的协议或者标准来对当前应用作进一步的完善和改进。总而言之,FPGA的现场可编程特性满足了用户实现任意数字逻辑的愿望,成为用户灵活“武装”自己产品的最有效的武器。 第一章 FPGA设计基础其次,FPGA名称中的“逻辑门阵列”不仅仅指的是传统意义上的逻辑门阵列。FPGA是可编程

3、逻辑器件(PLD)和专用集成电路(ASIC)技术发展到一定程度的产物。PLD能够实现灵活的逻辑可编程功能,但是其可编程规模小,无法实现复杂的逻辑功能,而ASIC虽然能够实现复杂的逻辑功能,但是昂贵的工艺过程和巨额的流片费用,在很多时候令大家望而却步。FPGA的诞生恰好弥合了PLD和ASIC之间的这道鸿沟,其逻辑规模可以达到ASIC的级别,而且不必承担如ASIC开发带来的数额巨大的不可重现工程(NRE)成本。随着FPGA技术的不断发展,FPGA器件逐渐变成一种数字化平台系统,其 “逻辑门”已经不再和PLD或者ASIC一样,而是包含了现代FPGA中的各种资源,如可编程逻辑块、RAM资源、数字信号处

4、理模块、微处理器等。 第一章 FPGA设计基础1.2 可编程逻辑技术发展简介可编程逻辑技术发展简介 1.2.1 可编程技术发展演变过程可编程技术发展演变过程世界上第一款可编程逻辑器件是1970年以PROM的形式进入人们视野的,但当时还非常简单,仅仅到20世纪70年代末,复杂实用的PLD器件便应用在工程当中了。为了在复杂程度上进行区分,后来出现了新的名词即简单可编程逻辑器件(SPLD)和复杂可编程逻辑器件(CPLD)。SPLD至今依然有人沿用,而CPLD成为当今PLD器件的代名词。PLD器件经历了在结构上的不断改进,从一开始的PROM器件,到PLA、PAL,再到后来的GAL,逐渐演变到今天通用的

5、CPLD结构。 第一章 FPGA设计基础1PROM器件器件PROM(Programmable Read-Only Memory,可编程只读存储器)基本结构其实就是由与(AND)阵列函数驱动可编程的或(OR)阵列函数。一个3输入3输出的基于PROM结构的可编程逻辑器件结构如图1-1所示。图中,“&”代表逻辑“与”;“!”代表逻辑“非”。 第一章 FPGA设计基础在OR门阵列中的可编程连线可以用熔丝、EPROM晶体管或者E2PROM器件中的E2PROM晶体管等来实现。PROM器件可以用来实现任何组合逻辑块,但是它无法实现太多的输入和输出。PROM器件最初主要作为存储器来存放计算机程序和常数

6、值,工程师也发现它可以用来实现简单的逻辑功能,比如状态机查找表等。随着PROM的大量应用,其他在其基础上改进的可编程器件也纷纷面世。 第一章 FPGA设计基础图1-1 3输入3输出的基于PROM结构的可编程逻辑器件结构图 第一章 FPGA设计基础2PLA器件器件由于PROM器件对地址有限制,可编程器件的下一步演化就是PLA(Programmable Logic Array,可编程逻辑阵列)器件。PLA器件是可编程逻辑器件中用户可配置性最好的,因为它的AND和OR阵列都是可配置的。正是由于AND阵列也可编程,因而AND阵列中的AND函数的数目便可以与器件的输入数目独立,只要引入更多的行,便可在阵

7、列中形成额外的AND函数。类似地,OR阵列也是与AND阵列独立的,引入更多的列就可以形成更多的列函数。如果我们要用PLA器件完成下面三个公式,则可以按图1-2所示的连线方式进行编程: 第一章 FPGA设计基础w(a &c)|(!b&!c) (1-1) x(!a &!b&!c)|(!b&!c) (1-2) y!a &!b&!c (1-3) PLA的优点是它对于大型设计非常有用,因为它可以实现大量公共乘积项,可用于多个输出。而PLA的缺点是信号通过可编程连线所花费的时间相对更长,所以整个器件的速度受到很大的影响。 第一章 FPGA设计基础图1

8、-2 PLA编程示意图 第一章 FPGA设计基础3PAL器件器件PAL(Programmable Array Logic,可编程阵列逻辑)器件便是为了解决PLA的速度问题而产生的,其结构示意图如图1-3所示。 图1-3 PAL结构示意图 第一章 FPGA设计基础从图1-3中可以看到,PAL的结构与PROM的正好相反,体现在PAL是由一个可编程AND阵列和一个预定义的OR阵列组成的,相对于PLA器件速度要快得多,但是它只允许有限数量的乘积项相或,对器件的应用灵活性又一次进行制约。要解决这些问题,需要跳出PROM器件的阴影,不再针对PROM器件做结构上简单的改进,而是采用新的方法,也就是下面我们讨

9、论的GAL器件。 第一章 FPGA设计基础4GAL以及以及CPLD器件器件GAL(Generic Array Logic,通用逻辑阵列)器件是Lattice公司于1985年推出的新型的可编程逻辑器件,GAL器件的输出端不再是简单采用或阵列实现,而是采用了逻辑宏单元(OLMC),通过编程可以将OLMC设置成不同的输出方式。这样,采用同一型号的GAL器件就可以实现PAL器件所有的输出电路工作模式,使GAL器件成为通用可编程逻辑器件。 第一章 FPGA设计基础GAL系列器件诞生之后很长时间受到工程师的青睐,其在数字系统中的粘合逻辑功能方面,对原来传统意义上的74系列器件提出了挑战。GAL器件不仅在性

10、能上有很大的提高,而且还附加了很多独有的功能。比如,电子标签,方便了用户的文档管理;加密单元,防止他人抄袭电路;采用高性能的E2COMS工艺,保证了GAL器件的高速度和低功耗等。但是GAL器件依然属于低密度器件,其规模还是比较小,仅相当于几十个门电路。 第一章 FPGA设计基础真正的可编程时代的到来应该是伴随着CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)的诞生。在20世纪90年代前后,目前世界著名的可编程逻辑器件公司如Xilinx、Altera、Lattice等都争相研究新型的复杂可编程逻辑器件。CPLD一般都是基于乘积项结构的,如Xili

11、nx公司的XC9500、CoolRunner系列器件,Altera的MAX7000、MAX3000以及MAX-系列器件,Lattice的ispMACH4000、ispMACH5000系列器件等,都是基于乘积项的CPLD。CPLD采用的理念是一个普通的器件中包括一定数量的基本逻辑块,分享一个公共的可编程互连矩阵。总体来说,CPLD的结构由四个部分组成:可编程I/O单元、可编程基本逻辑单元(CLB)、可编程布线资源(布线池、布线矩阵)和其他辅助模块(时钟资源),如图1-4所示。 第一章 FPGA设计基础图1-4 CPLD的结构示意图 第一章 FPGA设计基础1.2.2 FPGA技术技术约在20世纪

12、80年代早期,ASIC(Application Specific Integrated Circuit,专用集成电路)技术已经在飞速发展。但是在很多应用场合,昂贵的ASIC费用不是广大客户所想要的,而且ASIC流片的风险太大,周期太长,在不确定芯片需求量很大的情况下,人们是非常谨慎的。而CPLD技术虽然有飞跃,但是依然不能实现复杂的功能,尤其是无法实现复杂逻辑运算的功能。ASIC与CPLD之间的鸿沟越来越明显。幸运的是,1984年世界上首款FPGA在Xilinx诞生。首款FPGA基于CMOS工艺,并且采用SRAM单元,最小单元由一个3输入查找表(LUT)与寄存器组成。首款FPGA的诞生,已经给

13、人们发出了一个信息,除了ASIC和CPLD之外,另外一种新型结构的可编程逻辑器件会给逻辑设计带来新的活力。第一章 FPGA设计基础FPGA刚开始大部分用来作粘合逻辑、中等复杂程度的状态机和相对有限的数据处理任务。在20世纪90年代,FPGA的规模和复杂度开始增加,市场扩展到通讯和网络领域,而且都涉及到大量数据的处理。21世纪初,FPGA在消费类产品,如汽车和工业领域的应用也经历了爆炸式的增长,发展到现在,FPGA的黄金时代已经到来。ASIC验证、微处理器核的嵌入、系统级的解决方案,这些FPGA不断创新的理念逐渐适应了目前市场的需求。 第一章 FPGA设计基础对于ASIC公司来说,FPGA经常用

14、于提供一个硬件验证平台来验证新算法新协议的物理层实现。比如,许多行业的开创性公司使用FPGA制定新的协议标准,并进行产品化,迎来市场的新增值点。同时,FPGA为许多小型公司带来机遇。这些公司利用FPGA开发低成本高智力投入的产品并快速推向市场,迎来新的发展机遇。FPGA技术的发展将创造性的逻辑设计任务从昂贵的ASIC公司搬到了普通的工作室。 第一章 FPGA设计基础市场给了FPGA极大的机会,也给FPGA自身的发展带来了挑战。数千万门的FPGA器件中集成了内嵌微处理器核、数字信号处理器(DSP)、高速的输入/输出(I/O)接口等。FPGA正在蚕食着4个主要的市场:ASIC和可定制硅、DSP、嵌

15、入式微处理器以及物理层通信芯片。另外,FPGA还在创建自己的独立市场,如可重配置计算技术(RC)。RC技术即由FPGA提供的固有的并行性和可重配置性来实现软件算法的“硬件加速”,许多公司在建立以FPGA为基础的可重配置计算引擎,来完成从硬件仿真到密码分析等任务。 第一章 FPGA设计基础从另外一个角度来说,FPGA技术的不断推进,对于电子系统来说,产生了新的设计思想,即“软”设计。这里的“软”可以理解为“嵌入式软件设计和可编程逻辑设计”,我们使用可编程逻辑器件用软件的方法搭建硬件平台,然后配合嵌入式软件进行系统功能的设计,FPGA成功成为这种新型设计方法的不可替代的载体。这种新型的设计方法具有

16、非常多的优势,比如更容易保护知识产权不被复制,因为我们知道在这个世界上有另外一类的工程师是在做反向工程的,在知识产权的保护上原创者往往都要花费很大的精力在这方面,而软件的东西看不到摸不着,相对来说破解的概率要小的多;另外,增强了产品的智能化,基于纯“软”设计方法设计的产品,在硬件不变的情况下,更容易对产品进行改进和升级,并为客户新产品赢取及早面市的时间。 第一章 FPGA设计基础1.3 FPGA器件编程技术器件编程技术 1.3.1 熔丝互连编程技术熔丝互连编程技术在FPGA的可编程技术中,最容易理解的可编程技术就是熔丝互连技术,下面我们举例说明熔丝互连技术的原理。第一章 FPGA设计基础图1-

17、5 未编程的熔丝连接图 第一章 FPGA设计基础提起“熔丝”,我们不由地想起家里面的经常可以看到的保险丝之类的东西,比如电视机,在出现某些危险时(比如电视功率突然变大),保险丝就会熔断,结果使得电路开路,避免剩下的电路被继续烧坏;在集成电路里面,道理其实是一样的,只不过没有那么直观,熔丝的尺度小到显微镜下才可以看到,其熔断的方式也不是用大功率电压来实现的,而是靠一定的工艺来确定的。 第一章 FPGA设计基础虽然熔丝连接技术在当今FPGA中已弃用,但是对理解新型FPGA可编程技术还是非常有用的,在这里我们仅做简单的介绍。当拿到一个基于熔丝互连技术的可编程器件时,所有的熔丝都是完好的,保持着连接的

18、状态,参见图1-5。此时,与门的输出一直保持为0,其原理非常的简单:当a为0时,与门输入端为0,输出必然为0;当a为1时,a的非门输出为0,与门输入端仍为0,输出必然还是0。同样的情况对于b来说也是一样的。那么我们可以通过在输入端加上相当大的电流和电压脉冲,熔断不需要的熔丝,与门的输出逻辑值才可以变化,比如我们熔断Faf和Fbt,如图1-6所示。 第一章 FPGA设计基础图1-6 编程之后的熔丝连接图 第一章 FPGA设计基础这样,输入a的非门输出和输入b的原值都和与门输入端断开,那么对应的这两个信号相连的负载就起了作用,将与门的输入值拉高而变成逻辑1,器件表现为新的功能,即 y=a&

19、(!b) 以上过程详细描述了熔丝连接实现可编程逻辑器件的原理。需要注意的是,这种通过熔断熔丝的方法实现器件编程,是不能再恢复原状的,所以这种器件为一次性可编程器件,即OTP(One Time Programmable,一次性可编程)器件。熔丝互连技术已经不被当前任何器件作为一种可编程器件技术而使用。现代FPGA编程器件一般基于以下三种技术:反熔丝、SRAM和FLASH或EPROM。 第一章 FPGA设计基础1.3.2 基于反熔丝的编程技术基于反熔丝的编程技术与熔丝连接技术相反,反熔丝技术是在每个可配置的输入端上都有反熔丝的连接;当处于未编程状态时,反熔丝的电阻非常高,可以认为是开路,如图1-7

20、所示,即反熔丝器件未编程之前的状态。 第一章 FPGA设计基础图1-7 未编程的反熔丝连接原理图 第一章 FPGA设计基础我们可以通过对器件编程,而使输入端反熔丝“变长”,例如,可以加在输入a的非门和输入b的原值所对应的反熔丝上让其“变长”,器件将实现函数y=(!a)&b的功能。编程后的反熔丝结构如图1-8所示。 第一章 FPGA设计基础图1-8 编程之后的反熔丝连接图 第一章 FPGA设计基础反熔丝开始时是连接两个金属连线的微型非晶硅,在处于未编程状态时,非晶硅表现为电阻超过109 的绝缘体。在发生编程行为之后,绝缘体的非晶硅转化成导电的多晶硅而实现了电流的导通,如图1-9所示。第一

21、章 FPGA设计基础图1-9 反熔丝的编程过程 第一章 FPGA设计基础具有反熔丝结构的器件的特点是速度极快,功耗极低。基于反熔丝的FPGA器件使用专门的器件编程器来进行编程,目前来说,Actel公司的主要FPGA产品都是基于反熔丝结构的,因为这种器件有许多优势:(1) 基于反熔丝结构的FPGA器件是非易失性的,因为其配置的数据在系统断电之后仍能保持,如果数据已经配置过,那么在系统上电之后立刻就能执行代码,所以相对我们后面要介绍的SRAM结构器件来说(每次上电都需要配置数据),上电后执行代码速度快,几乎没有延时,而且省去外围的配置存储器,电路设计也相对简单了。 第一章 FPGA设计基础(2)

22、反熔丝结构器件更为卓越的优势在于其内部互连结构是天生“防辐射”的,它相对来说不受电磁辐射的影响,这对军事和宇航应用具有特别的吸引力。因为在外界环境比较恶劣的情况下,基于SRAM元件的配置单元被射线击中时可能会发生翻转,因为在地球外层中有大量的射线,相比之下,反熔丝结构的FPGA是不会受这个条件影响的。 第一章 FPGA设计基础(3) 基于反熔丝结构的器件配置数据与器件是融合在一起的。我们了解一下反熔丝器件的编程过程:在默认情况下编程器编程时,首先测试反熔丝是否被编程,然后持续进行验证,并把其状态与配置文件中定义的状态进行对比。所以编程器是可以读取器件的每个单元状态的,但是一旦编程之后,就会设置

23、一个专门的反熔丝,来防止随后从器件中读取任何配置数据。因此,即使器件被破坏,编程和未编程的器件的反熔丝显示也完全一样,实际上所有的反熔丝都嵌入内部的金属层,让“逆向工程”根本不可能实现。 第一章 FPGA设计基础(4) 反熔丝结构的器件还有其他的优势,比如在功耗上。实际上基于反熔丝结构的器件只消耗等价的基于SRAM结构器件功耗的20%,这样的数字确实非常让人兴奋。同时,反熔丝器件的面积也是非常的小,它的内部互连延迟非常的小,比同等的SRAM单元节省了大量的面积。反熔丝结构的器件也不是近乎完美的。其优势总会给自己带来麻烦,就像能量守恒定律一样,也许自然界的规律都是这样的。反熔丝器件相对SRAM器

24、件来说,制造工艺复杂的多,由于这个原因,反熔丝器件总是落后于基于SRAM工艺器件至少一代。另外,反熔丝工艺还有一个不足之处在于它是OTP器件,一旦编程完毕,其功能就固定了,不能再进行改变,这将导致在开发初期的难度非常高。 第一章 FPGA设计基础1.3.3 基于基于SRAM的可编程技术的可编程技术半导体RAM有两种类型,一种为动态RAM (DRAM),另外一种为静态RAM(SRAM)。对于动态RAM,每个单元是由一个“晶体管电容”组构成的,这也是其称为动态的原因:需要不断给电容充电,才能保持数据。每个单元必须周期性地补充电荷,这种操作习惯上称为“刷新”。DRAM虽然需要复杂的刷新电路才能工作,

25、但是其优点在于可以将存储容量做得非常大。然而,对于我们所讨论的可编程逻辑器件来说,DRAM没有任何吸引力,而SRAM反而成为可编程技术的重要实现方式,也是目前主流FPGA所采用的技术。第一章 FPGA设计基础SRAM即静态RAM,一旦将值写入SRAM单元,只要不放电,除非被刻意修改,其值是不会改变的。我们以单个基于SRAM技术的可编程单元来举例,如图1-10所示。整个单元包括一个多晶体管SRAM存储元件,此元件的输出驱动着一个额外的控制晶体管,根据存储的内容为逻辑0或者1,晶体管将被置为关(OFF)或者开(ON)状态。 大部分的FPGA都采用SRAM结构。我们熟知的两家FPGA公司Xilinx

26、和Altera公司所有的FPGA都基于SRAM结构。 第一章 FPGA设计基础图1-10 SRAM基本可编程单元 第一章 FPGA设计基础基于SRAM结构的FPGA的最大优势在于可以非常快速地利用可编程技术实施和验证新的想法。更有创意的是,系统首次加电时,FPGA可以被编程进行初始化系统,比如进行自测或者板级测试,然后重新编程实现新的任务。基于SRAM结构的FPGA的另外一个优势在于这些器件能够站在技术的最前沿。FPGA生产厂家可以利用许多其他的致力于存储设备公司在工艺领域投入的巨大研发资源,扩大FPGA的规模和提高FPGA的工艺水平,比如目前Xilinx公司最先进的FPGA工艺在40 nm,

27、而Altera公司的FPGA最先进的工艺水平在45 nm。这一点我们容易理解,因为基于SRAM结构的FPGA可以与其他存储器件共享相同的工艺技术。 第一章 FPGA设计基础然而,令我们遗憾的是,基于SRAM结构的FPGA其不足之处也是比较多的:(1) 每个存储单元消耗大量的硅片面积,因为这些单元是由4个或6个晶体管配置成一个锁存器而形成的。(2) 当系统掉电之后,所有配置的数据都会丢失,所以在系统重新上电之后需要重新进行配置。 第一章 FPGA设计基础(3) 基于SRAM的FPGA很难保护知识产权,因为配置文件一般都存储在外部存储器当中,所以很难保证别人不会读出存储器当中的数据。虽然目前没有商

28、业工具能够读取配置文件的内容并产生原理图和网表文件,但是直接从存储器当中拷贝出数据然后再复原你的产品却还不是超出这些“逆向工程师”的能力范围的,只是看是不是值得花费时间和精力。 第一章 FPGA设计基础幸好目前基于SRAM的FPGA支持比特流加密,这种情况下,最终配置的数据经过加密之后存入外部存储器件。密钥本身经过FPGA的JTAG端口载入一个FPGA内部专用基于SRAM的寄存器,与一些相关逻辑配合,密钥在加密配置比特流载入器件时对比特流解密运算。但是这也造成了一定的不便,我们要保持这个存储密钥的寄存器有效,需要在电路板上面有一组备用电池,而且这个电池模块需要长期有效(比如10年),这样也增加

29、了电路板的面积。 第一章 FPGA设计基础1.3.4 基于基于FLASH或或E2PROM的可编程技术的可编程技术基于FLASH或E2PROM的FPGA器件与基于SRAM的器件一样,所有的配置单元都连接在一条长的寄存器链上,这些器件可以离线用编程器进行编程,有些版本也可以使用在系统编程(ISP),但是其编程时间是基于SRAM工艺的3倍左右。尽管如此,它也有自己的优势:(1) 编程之后数据是非易失性的,所以意味着器件上电之后可以立即执行,没有延时。这个特性有助于系统组件的初始化、处理器唤醒紧急任务的执行,这也是基于FLASH的FPGA器件被广泛应用于航天和军事领域的原因。 第一章 FPGA设计基础

30、(2) 为了保护配置数据,这些器件中使用了多位的密钥,范围可以从50位到几百位。当你对器件编程后,可以载入你的用户定义密钥来确保配置数据的安全。载入密钥之后,从器件中读出数据或写入新数据的唯一途径是通过JTAG端口载入你的密钥的副本,那么是不是还有破解的可能呢?目前JTAG的速度大约是几十兆赫,这样就意味着将所有的可能的值穷举一遍来破解密钥需要10亿年。(3) 双晶体管E2PROM和FLASH单元的尺寸大约是单晶体管的2.5倍,但是它仍然比SRAM的个头要小,所以基于FLASH的器件的内部逻辑更加紧密,而且会减少互连延迟。 第一章 FPGA设计基础(4) 基于FLASH的FPGA器件可以实现真

31、正的单芯片解决方案,因为它无需额外的配置芯片,所以可以在很多场合替代CPLD。基于FLASH器件的缺点是其制作工艺除了标准的CMOS工艺之外,还需要大约5个额外的处理步骤,这样,将落后于基于SRAM工艺的器件至少一代;同时静态功耗也很大,因为它需要维持大量的内部负载电阻。 第一章 FPGA设计基础所以,可以这样总结FPGA的各种结构的特点:(1) 基于FLASH结构的FPGA与反熔丝结构的FPGA不同,但是与基于SRAM结构的FPGA一样具有可重复编程性;(2) 基于FLASH结构的FPGA拥有和基于SRAM结构的FPGA同样的制造过程,同时拥有基于反熔丝技术FPGA的同样低的功耗;(3) 基

32、于FLASH结构的FPGA相对来说速度更快。 第一章 FPGA设计基础1.4 通用通用FPGA的构成结构的构成结构谈起FPGA的结构,通常人们是这样认为的:FPGA的基本结构是由大量的相对较小的可编程逻辑块“岛”嵌入在可编程互连的“海”里面构成的。那么还有人会和ASIC 器件进行对比,提起FPGA都说是一种中度颗粒的器件或者说是粗颗粒器件。其实,FPGA是在ASIC的基础上发展起来的,一开始,FPGA的发明者还是按照ASIC的思维模式来设计新型的可编程逻辑器件的。从人们对FPGA颗粒的研究就可以了解FPGA新型结构演变的过程。 第一章 FPGA设计基础1.4.1 现代现代FPGA的基本逻辑单元

33、的基本逻辑单元Xilinx公司的FPGA的基本逻辑单元称为Slice(切片),而Altera公司的FPGA的基本逻辑单元称为LE(Logic Element)。一个Slice包含两个核心逻辑单元LC(Logic Cell)。Slice的结构图如图1-11所示。第一章 FPGA设计基础图1-11 Slice的基本结构图 第一章 FPGA设计基础图1-12 LC的结构图 第一章 FPGA设计基础一个LC是由一个4输入的查找表(LUT)、一个多路复用器和一个寄存器组成的。其结构如图1-12所示。对于MUX和D触发器的作用,大家都很熟悉,唯一陌生的就是查找表的原理。下面介绍查找表的原理。 查找表(Lo

34、ok-Up-Table)简称LUT,其本质上为RAM,如4输入LUT,即包括有4位地址线的161的RAM在数字电路中,n输入的逻辑运算最多只能输出2n个结果,同样的道理,4输入LUT共有16种输出结果。若将这16种结果全部存储下来,就可以根据不同的地址输入“查找”出相应输出结果。LUT实现4输入与门的示例如表1-1所示。 第一章 FPGA设计基础第一章 FPGA设计基础下面我们举例来理解查找表的概念。如图1-13所示,a、b、c、d由FPGA芯片的管脚输入后进入可编程连线,然后作为地址线连到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,这样组合逻辑就实现了

35、。该电路中D触发器是直接利用LUT后面的D触发器来实现的。时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。触发器的输出与I/O脚相连,把结果输出到芯片管脚。这样PLD就完成了图1-13所示电路的功能。(以上这些步骤都是由软件自动完成的,不需要人为干预。) 第一章 FPGA设计基础图1-13 查找表示例 第一章 FPGA设计基础这个电路是一个很简单的例子,只需要一个LUT加上一个触发器就可以完成。对于一个LUT无法完成的电路,就需要通过进位逻辑将多个单元相连,这样FPGA就可以实现复杂的逻辑运算。LUT仅仅是FPGA最基本的组成。目前来说,FPGA的复杂程度远

36、远不能用LUT来描述。在Xilinx FPGA中,LUT组成LC,进一步形成Slice(切片),Slice才是Xilinx FPGA的最基本组成。而Slice上一级是CLB(可配置逻辑块)。CLB的实际数量会根据器件的不同而不同,CLB之间的可编程互连是通过可配置的开关矩阵组成的,这样每个CLB模块不仅可以用于实现组合逻辑和时序逻辑,还可以配置为分布式RAM和分布式ROM。 第一章 FPGA设计基础Xilinx FPGA中逻辑块等级关系为LC-Slice-CLB,这样在同一Slice的LC之间有快速互连。在同一CLB中的Slice之间稍慢些。接下来是CLB之间的互连,这样可以比较容易地把它们彼

37、此连在一起,同时也不会增加太多的互连延迟,从而达到优化平衡。 第一章 FPGA设计基础1.4.2 Xilinx Spartan-3 FPGA的基本结构的基本结构查找表和多路复用器是FPGA的最基本的结构。但是FPGA的结构不是仅仅这么简单的,由于应用的不同,每款FPGA的内部结构都有所不同。总体来说,现代FPGA由如下7个部分组成:可编程输入/输出单元、可配置逻辑块(Configurable Logic Blocks,CLB)、可编程内部连接、嵌入式RAM块、数字时钟管理单元、底层嵌入式功能单元、内嵌专用硬核,如图1-14所示。下面我们以Spartan-3系列FPGA为例介绍主流基于中度颗粒F

38、PGA的基本结构。第一章 FPGA设计基础图1-14 FPGA结构图 第一章 FPGA设计基础1可编程输入可编程输入/输出单元输出单元可编程输入/输出单元(I/O单元,IOB)是FPGA与外界电路的接口,用于完成不同的电器特性下对输入/输出信号的驱动以及匹配的要求。如今FPGA的通用管脚数目达上千个,为了FPGA在电子设备中有更多的兼容性,可编程输入/输出单元还设计了许多巧妙且非常实用的功能: 第一章 FPGA设计基础(1) 通过软件的编程,可以适配不同的电器标准以及物理特性。不同器件厂商的不同系列FPGA所支持的I/O标准有所不同,常用的I/O标准大部分器件都支持单端I/O标准LVCMOS、

39、LVTTL、HSTL、SSTL、GTL、PCI等,差分I/O标准有:LVDS、HT、LVPECL、BLVDS、差分HSTL、SSTL等。另外,通过软件编程可以配置FPGA每个接口块的不同电压标准,可支持1.8 V、2.5 V、3.3 V等。 第一章 FPGA设计基础(2) FPGA的I/O口单元支持一些特殊的功能,包括可编程配置I/O口的驱动能力和上下拉电阻等。在差分信号传输中,为了使得输入或输出端能够将接收器或者驱动器的阻抗匹配,在I/O口单元增加了数控阻抗(DCI)技术,DCI还具备补偿温度变化和供电电压波动的功能。高性能的FPGA支持高级Select/IO资源,接收器的最高频率可达到11

40、.2 Gb/s。I/O口的新的功能给FPGA的应用增添了很多亮点,使得FPGA在与ASIC的对抗中显得更为灵活多变。第一章 FPGA设计基础(3) Spartan-3系列FPGA的I/O口管脚都有可编程控制的上下拉电阻,可以在ISE实现过程中,通过约束管脚使其有效。另外,还可以约束管脚的驱动电流大小,根据电平标准不同,可以支持的驱动电流值有所不同,为了数据的稳定,还可以编程控制管脚的回转快慢,每个I/O管脚都有保持电路,在所有驱动都撤销时,管脚还会保持原来的值。I/O管脚支持DCI,有效地降低了信号的反射,提高了信号的质量。 第一章 FPGA设计基础2可配置逻辑块可配置逻辑块(CLB)可配置逻

41、辑块是Xlinx FPGA内部的基本逻辑单元,也是实现时序电路和组合逻辑的主要资源。在Altera器件中,用逻辑阵列块(LAB)代替CLB,实际上两者之间没有什么区别。CLB的实际数量和特性会根据器件的不同而不同,我们也可以理解CLB是反映FPGA规模和能力的一个重要标志。CLB以阵列形式排列在FPGA中,如图1-15所示。 第一章 FPGA设计基础图1-15 FPGA CLB 结构图 第一章 FPGA设计基础在Spartan-3E中,每个CLB包括4个Slice,同时包含一个可配置开关矩阵和一些其他资源,包括多路复用器、触发器等。其中,开关矩阵不仅可以非常灵活地对其进行配置,而且提供了本CL

42、B和别的CLB之间的灵活互连。多路复用器和触发器协助本CLB模块实现内部大量的逻辑互连。4个Slice分成两组,每组Slice按列排布,如图1-16所示,并且带有独立的进位链。左边的一组Slice主要完成逻辑和存储功能,称为SLICEM;右边的一组Slice主要完成逻辑功能,称为SLICEL。这样一来,SLICEL降低了CLB的功耗和减少了CLB的空间,同时更有利于SLICEM更好地发挥。所以每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM,如图1-16所示。第一章 FPGA设计基础图1-16 Spartan-3E CLB结构图 第一章 FPGA设计基础

43、Slice是Xilinx公司定义的基本逻辑单位。一个Slice由两个4输入或者6输入查找表函数、进位逻辑和存储单元组成。不管是SLICEM还是SLICEL,都包括如下几个部分:两个4输入函数发生器(查找表函数)、两个存储单元、两个多功能选择器以及进位逻辑单元和算术逻辑单元。SLICEM还包括两个161的分布式RAM块(RAM16)和两个16位的移位寄存器SRL16。 第一章 FPGA设计基础算术逻辑单元包括一个异或门和一个专用与门。一个异或门可以是一个Slice,实现2位全加操作;专用与门可以用于提高乘法器的效率。进位逻辑单元由专用进位信号和函数复用器组成,用于实现快速算术加减法操作和提高CL

44、B的处理速度。4输入函数发生器用于实现4输入LUT、分布式RAM和16位移位寄存器。 第一章 FPGA设计基础3数字时钟管理单元数字时钟管理单元(DCM)FPGA内部所有的同步数字逻辑都需要由时钟信号来驱动。时钟源需要从外部引入,通过专用的FPGA时钟输入管脚进入FPGA,接着传送到整个器件并连接到适当的寄存器当中。业界知名的FPGA都提供数字时钟管理模块。第一章 FPGA设计基础随着FPGA能够处理的数字系统的能力越来越强,所需要的时钟也越来越复杂,于是就有了时钟树的概念。时钟树就是在FPGA中有主时钟,同时存在由主时钟产生的子时钟,这样就形成一种“树”一样的结构,时钟树结构能保证所有触发器

45、接收到的信号尽可能地一致。不过我们可以想象,一条长长的时钟线驱动着一连串的触发器,那么最接近时钟管脚的触发器接收的信号一定会比位于链条末尾的触发器接收到的快得多,这样就会引起时钟的不同步,也就是通常说的“抖动”。为了解决这个问题,时钟树都采用专门的走线,与通用的可编程模块分离,以避免抖动的产生。这也是在FPGA设计原则中强调的原则之一,时钟一定要走全局管脚。 第一章 FPGA设计基础关于时钟还有一个重要的概念就是时钟管理器。在通常情况下,都是将外部时钟接到时钟专用管脚,然后通过专用管脚连接的时钟管理器模块产生一定数量的子时钟。这些子时钟可以用来驱动内部时钟树,或者可以输出作为系统别的器件的时钟

46、。不同系列的FPGA的时钟管理器的能力有所不同,但是都有下面共有的特性: 第一章 FPGA设计基础1) 消除抖动来自外部世界的理想时钟信号在通过系统通道时,时钟沿将会有大小不一的抖动(即来的早一些或晚些),这样在某一个时钟点上将是多个时钟沿的重叠而产生一个“模糊”时钟,如图1-17所示。FPGA的时钟管理器可以检测并纠正抖动,提供一个“干净”的子时钟信号。所以在设计FPGA系统时,CLK要从专用时钟管脚引入。如果要产生子时钟,则最好采用DCM来产生。例如有一个100 MHz的时钟,在FPGA器件内部传输时是有延时的,虽然说电信号传输的速率很高,但是此延时在数字系统中是万万不可忽略的。例如,10

47、0 MHz信号的周期是10 ns,所以只要延时几个纳秒,信号就会严重失真,而经过DCM之后就可以避免这种抖动的产生。第一章 FPGA设计基础图1-17 抖动示意图 第一章 FPGA设计基础2) 频率综合在许多情况下,外部时钟往往在频率上满足不了系统要求。这表现在两个方面,一方面是时钟的数量,比如系统需要若干个不同频率的时钟,如果都从外部管脚引入,则增加了很多成本;另一方面是时钟频率,如高频率的时钟信号,在PCB板上传输极易受外界环境的影响,所以电路板上的时钟频率尽量低一些,才能保障系统稳定工作。我们通过DCM就可以解决这两个问题,FPGA管脚输入的低频率的时钟信号可以通过DCM转化成高频率时钟

48、信号,比如说系统输入时钟为50 MHz,需要产生三个输出时钟:40 MHz、25 MHz、200 MHz。那么用DCM对输入时钟进行五分之四分频、两分频、四倍频之后,可分别产生所需时钟,非常方便。 第一章 FPGA设计基础3) 相位调整相位调整在数字系统中应用得也很多,比如PCIE或者DDR控制器接口都需要内部时钟与外部时钟之间有相位偏移。时钟管理器允许在某些固定的相位进行调整,比如120或者240等,在时钟树中也允许对每个子时钟进行相位调整,如图1-18所示。 第一章 FPGA设计基础图1-18 相位调整示意图 第一章 FPGA设计基础4) 自动偏移校正设想在时钟树的子时钟,经过DCM之后其

49、相位和频率都与输入时钟有关系,但是,经过时钟管理器之后的时钟一定有延时,这时如果DCM没有对此延时进行处理,子时钟输出稍晚于输入时钟,就会带来很多问题,也就是“偏移”。因而时钟管理器就将子时钟同时作为输入,来比较两个信号,并给子时钟一个专门的延迟,使得子时钟和主时钟重新对齐,如图1-19所示。 第一章 FPGA设计基础图1-19 时钟自动校正示意图 第一章 FPGA设计基础Spartan-3采用DCM为数字设计提供了灵活、全面的时钟资源,除了XC3S50仅有两个DCM之外,其他Spartan-3系列FPGA都有四个DCM,每个DCM资源如图1-20所示。 第一章 FPGA设计基础图1-20 S

50、partan-3 DCM资源结构图 第一章 FPGA设计基础4嵌入式嵌入式RAM块块FPGA一般内部有RAM资源,目的是为了拓展FPGA的应用范围。在FPGA中的RAM资源,相比RAM器件来说,使用非常的方便和灵活,它可以被配置为ROM、单端口RAM、双端口RAM、内容地址存储器(CAM)以及FIFO等常用的存储器结构,同时不管使用哪种结构,都可以灵活地配置存储器的位宽、深度。比如说,如果存储器的位宽为1,这时候就相当于我们使用FPGA内部的存储器资源构造了一个长度一定的移位寄存器。Spartan-3系列FPGA都支持BlockRAM资源,可以被配置为18 Kbit双端口存储器,并且支持四种数

51、据读写操作,如图1-21所示。 第一章 FPGA设计基础图1-21 BlockRAM 数据传输 第一章 FPGA设计基础5可编程内部连接可编程内部连接FPGA中除了CLB之外,大部分就是互连资源,这样对FPGA数字逻辑的配置才能起作用。由于其作用不一样,可编程内部连接布线的长度、宽度和分布也都不相同。第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用于完成芯片Bank之间的高速信号和第二全局时钟信号的实现;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式布线资源,用于专有时钟、复位等控制信号线。 第一章 FPGA设计基础6内嵌专用硬

52、核内嵌专用硬核内嵌专用硬核指的是FPGA当中嵌入的等效于ASIC的硬核电路。FPGA厂家为了提高FPGA的处理能力,目前集成了许多专用硬核在里面。比如:为了提供FPGA在数字信号处理方面的能力,主流的FPGA都集成了专用的乘法器;为了适应高速的通信信号的传输,很多高端的FPGA集成了串并收发器(SERDES),可以达到数十吉比特的传输速率。Xilinx公司高端产品集成了PowerPC系列CPU,还内嵌了DSP 核模块,为实现SOC解决方案提供了良好的硬件平台。第一章 FPGA设计基础1.5 Xilinx FPGA的开发流程的开发流程一般的FPGA系统设计流程包括如下几个部分:需求分析、器件选型

53、、设计输入、功能仿真、综合优化、后仿真、布局布线、板级验证和调试等,如图1-22所示。 第一章 FPGA设计基础图1-22 FPGA 设计流程图 第一章 FPGA设计基础1需求分析需求分析电子产品的开发都是从系统入手的。首先根据客户的需求,进行系统方案的论证和分析,包括根据客户的需求,考虑系统的性能、工作频率、成本等;然后在这些确定之后,将模块进行划分,确定模块之间的端口定义以及信号传输在各个模块之间的传输流程。划分模块非常关键,往往是决定电路能够实现与否的前提。好的电路都是设计出来的。这里的“设计”,是从架构开始的,架构确定好之后,将各个小模块进一步细分,充分考虑设计的合理性,直到能够直接用

54、EDA元件库实现为止;否则,重新进行架构的设计。 第一章 FPGA设计基础2器件选型器件选型FPGA设计不仅仅是代码以及代码架构的设计,FPGA厂家根据用户不同的需求,设计了非常丰富的FPGA型号。良好的选型能够节约成本,更贴切地满足用户的需求。一般来说,选择器件应从如下几个方面来考虑:1) 根据时钟选择前面时钟树部分,我们介绍过FPGA具有丰富的时钟资源。可是每个型号的FPGA是不一样的。比如,同样是Spartan-3 系列产品,XC3S50有2个DCM资源,而其他的XC3S200等都是4个DCM,如果在设计过程中,从逻辑资源角度考虑,则XC3S50已经足够了,可是如果时钟需要3个DCM才能

55、完成时,就要考虑选用XC3S200了。 第一章 FPGA设计基础2) 根据速度选择不管哪个厂家的FPGA,都有各个速度等级的产品。速度等级越高的产品,系统所能执行的速率越高。比如,我们使用FPGA来做IC验证,尽量使用速度等级高的产品,避免由于速度的原因,无法完成验证任务。3) 根据功耗选择FPGA相对于ASIC芯片来说,功耗高很多。虽然现在FPGA的工艺水平在不断提高,功耗也在不断降低,但是在很多情况下,完成同样的功能新推出来的芯片功耗都要低的多。比如,Xilinx新推出来的Spartan-6系列芯片,功耗就非常的低,如果系统对功耗有要求,就可以在同等情况下选择新出系列的芯片。第一章 FPG

56、A设计基础4) 根据封装选择FPGA厂家在封装芯片时,采用不同的封装形式,就是为了满足广大用户的需求。因此,在产品对面积要求很高的情况下,完全可以选择BGA封装的芯片完成设计。5) 根据特殊需要选择这里所指的特殊需要包括如下几个方面:RAM资源、现有IP的利用、DSP的利用、内嵌处理器的利用等。比如我们需要开发一款音频处理设备,上面需要做一些算法,比如滤波器之类的算法,需要乘法器资源,那么选择FPGA时,在考虑了别的条件满足的同时,还需要优先考虑硬件乘法器资源丰富的FPGA。另外,数字信号处理需求很大,我们就需要选择支持内嵌DSP的FPGA。如果系统是“FPGA+CPU”的架构,则要考虑是选用

57、内嵌CPU,还是外部挂CPU;如果内嵌CPU能够完成,则可以节省成本,同时又节省了板子的面积,一举两得。 第一章 FPGA设计基础3设计输入设计输入设计输入是将所设计的电路按照开发软件的需求以某一种方式表达出来,并输入到EDA工具的过程。在FPGA设计初期,所用的输入方式是原理图输入方式,一方面是延续了当时情况下ASIC的设计方式,使得工程师能够很快适应FPGA的设计方式,另外,FPGA厂家提供大量的数字逻辑库,也是为了方便用户能够直观自然地使用自己的工具。目前而言,很多工程师还是习惯用原理图输入方式。原理图输入方式虽然直观,但是当项目比较大时,比如设计5000万门的电路时,效率就非常低,而且

58、移植性较差,当设计进行升级之后,往往要改动大量的原理图,非常容易出错。因此到20世纪80年代,逐渐流行的输入方式是HDL输入法。 第一章 FPGA设计基础基于HDL语言的输入,为硬件设计提出了新的概念,即用代码的方式设计“硬件”。“硬件”不仅仅可以用集成电路和PCB板的实际结构连接表示,也可以用HDL语言描述的方式描述。基于HDL语言描述的主流语言是VerilogHDL和VHDL,这两种语言都是美国电器与电子协会(IEEE)的标准,其共同的特点是:语言描述与芯片无关,都支持完整的各个层次的描述,可移植性好,具有很强的逻辑描述功能。可是,随着FPGA技术的不断更新,FPGA的应用规模的不断拓展,

59、再加上最近新型技术的推出,以上两种语言在很多方面逐渐不能满足人们的需要,暴露出如下诸多的弱点: 第一章 FPGA设计基础(1) RTL代码在FPGA设计和ASIC设计之间的通用性差。用FPGA设计的RTL编码不能够直接转移到ASIC设计中,也就是说ASIC的原型验证在FPGA上实现还不是无缝的。(2) RTL代码用于软硬件协同设计还不够理想。SOC系统一般含有微处理器内核在FPGA当中,SOC设计方式逐渐成熟,软件成分越来越多,目前很多情况下,SOC的验证都是基于软件方式验证的,那么目前唯一的办法就是VerilogHDL和VHDL描述语言与C/C+或者汇编语言一起联合验证,非常的不方便。所以就

60、出现了可以弥补以上缺陷的SystermC语言。Systerm C 2.0版本是2002年发布的,SystermC覆盖了传统HDL所能描述的所有抽象级层次,在仿真方面远远快于传统的HDL描述方式,而且在系统级和仿真描述方面更加方便。由于篇幅的原因,这里不做详细介绍。第一章 FPGA设计基础4功能仿真功能仿真功能仿真也称为前仿真,指的是在编译之前对用户所设计的电路进行逻辑功能验证;此时的验证仅仅对功能进行检测,不含任何时序信息。仿真前,要先利用波形编辑器或者HDL建立波形文件或测试平台(TestBench),仿真结果将按照测试平台所加的激励产生报告文件和输出波形,方便观察各个信号节点的变化,如果发现了错误,将返回修改逻辑设计。常用的仿真工具有Model Tech公司的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论