1.1 FPGA概述
FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。FPGA是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它是当今数字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写。在修改和升级时,不需额外地改变PCB电路板,只是在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,既缩短了系统设计的周期,又提高了实现的灵活性,并降低了成本。
1.1.1 FPGA的发展历程
FPGA不是凭空产生的,它是技术不断革新的成果,是在晶体管、SRAM、PAL、CPLD、ASIC等技术的基础上发展起来的。图1-1给出了FPGA的发展历程。
图1-1 FPGA发展历程图
1.晶体管
1947年12月23日,在美国新泽西州的贝尔实验室诞生了第一个晶体管。它的出现,使得我们能够使用体积非常小、消耗非常低的电子元件来代替当时体积庞大、功耗大的电子管。直到1950年,一种更加复杂的,被称为双极型晶体管的器件诞生了。相比第一个晶体管,双极型晶体管具有更高的可靠性,制造更为容易,造价也更为低廉,这一点非常重要,因为现在任何一个集成电路都是由成百上千,甚至百万的晶体管构成,所以一个晶体管性能的提高对集成电路整体性能的提升具有巨大的影响。
1962年,在美国新泽西州的普林斯顿微电子研究所,金属氧化物半导体场效应晶体管诞生了,这就是我们俗称的MOSFET,简称FET,它具有更小的尺寸、更廉价的制造成本、更低的功耗。
晶体管是构成可编程逻辑器件的原材料,好比沙子、泥土和房子的关系,但是却没有砖头和房子的关系那么直接,在由晶体管构成可编程逻辑器件中充当砖头角色的就是门电路。而门电路的构成可以分为两种:对于双极型晶体管,如果以特定方式将它们相连,就可以形成晶体管—晶体管逻辑门,简称TTL;对于金属氧化物半导体场效应晶体管,由NMOS与PMOS以互补方式就可以构成我们所熟知的互补金属氧化物半导体,简称CMOS。虽然不同的晶体管构成的逻辑门不一样,但是功能是一致的,区别在于:用CMOS实现的逻辑门比用TTL实现的速度要慢一些,但是CMOS逻辑门具有静态功率低、占用面积小的优势,这也是采用TTL实现还是CMOS实现的集成电路的区别。
技术或事物总是朝着由简至繁的方向发展的,仅仅依靠这些逻辑门做的事情还是非常有限的。在从晶体管发展到可编程逻辑器件PROM的过程中,还有这么一个环节,就是集成电路的形成。最初的晶体管是独立封装在一个小金属外壳中作为分立元件提供的,后来人们开始觉得把整个电路的制造放在一个半导体里是个好主意。
2.SRAM/DRAM与微处理器
1970年Intel宣布第一个1024位DRAM诞生,与此同时,Fairchild公司也开发了第一个256位的SRAM。
一年后的1971年,Intel公司开发了世界上第一个微处理器4004,是由Marcian“Ted”Hoff、Stan Mazor和Federico Faggin设想并开发的。它也被称为“片上计算机”,4004包含有大约2300个晶体管,每秒可以执行60 000次操作。实际上,尽管4004被大多数文献记录为第一个微处理器,但存在争议。1968年2月, International Research Corporation开发了一种他们称为“片上计算机”的体系结构。并且在1970年12月,4004面世的一年前,一个名叫Gilbert Hyatt的人申请了名为“单片集成电路计算机体系结构”的专利(关于这个专利的争论一直持续到现在)。不管争执的结果如何,但事实上,4004是第一个在物理上实现的、投入市场并且实际应用的微处理器。
3.PAL/GAL
PAL(Programmable Array Logic,可编程阵列逻辑)是20世纪70年代末由MMI公司率先推出的一种低密度一次性可编程逻辑器件,是第一个具有典型实际意义的可编程逻辑器件(Programmable Logic Device,PLD)。它采用双极型工艺制作,熔丝编程方式。PAL在EDA中是指一种现场可编程的门阵列逻辑器件,内部电路是在PLA的基础上进行改进的。
PAL/GAL是早期可编程逻辑器件的发展形式,其特点是大多基于E2CMOS工艺,结构较为简单,可编程逻辑单元多为与/或阵列,可编程单元密度较低,仅能适用于某些简单的数字逻辑电路。虽然PAL/GAL密度较低,但是它们一出现即以其低功耗、低成本、高可靠性、软件可编程、可重复更改等特点引发了数字电路领域的巨大震动。虽然目前较为复杂的逻辑电路一般使用CPLD甚至FPGA去完成,但是对于很多简单的数字逻辑,GAL等简单的可编程逻辑器件仍然被大量使用。
PAL器件由可编程的与逻辑阵列、固定的或逻辑阵列和输出电路三部分组成。通过对与逻辑阵列编程可以获得不同形式的组合逻辑函数。另外,在有些型号的PAL器件中,输出电路中设置有触发器和从触发器输出到与逻辑阵列的反馈线,利用这种PAL器件还可以很方便地构成各种时序逻辑电路。
4.CPLD
CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)主要是由可编程逻辑宏单元(Macro Cell,MC)围绕中心的可编程互联矩阵单元组成。20世纪80年代中期,CPLD问世,此应用已深入网络、仪器仪表、汽车电子、数控机床、航天测控设备等方面。它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于产品的原型设计和产品生产(一般在10 000件以下)之中。几乎所有应用中小规模通用数字集成电路的场合均可应用CPLD器件。CPLD器件已成为电子产品不可缺少的组成部分。
CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,从而实现设计的数字系统。
5.ASIC
专用集成电路(Application Speci☆c Integrated Circuit,ASIC)是针对整机或系统的需要,专门为之设计制造的集成电路。专用集成电路可以把分别承担一些功能的数个、数十个、甚至上百个通用中、小规模集成电路的功能集成在一块芯片上,进而可将整个系统集成在一块芯片上实现系统的需要。它使整机电路优化,元件数减少,布线缩短,体积和重量减小,因而提高了系统可靠性。产品的特点是功能强,品种多;但批量较小,设计周期长,工艺生产与测试难度增加,故成本较高。
专用集成电路的开发可分为设计、加工与测试3个主要环节,但因其功能的多样而更具特色。功能设计的目的是为电路设计做准备,将系统功能用于系统实现,便于按系统、电路、元件的级别做层次式设计。逻辑设计的结果是给出满足功能块所要求的逻辑关系的逻辑构成。它是用门级电路或功能模块电路来实现,用表、布尔公式或特定的语言来表示的。电路设计的目的是确定电路结构(元件连接关系)和元件特性(元件值、晶体管参数),以满足所要求的功能电路的特性,同时考虑电源电压变动、温度变动以及制造误差所引起的性能变化。
布图设计直接服务于工艺制造。它根据逻辑电路图或电子电路图决定元件、功能模块在芯片上的配置,以及它们之间的连线路径。为节约芯片面积,要进行多种方案比较,直到满意为止。
验证是借助计算机辅助设计系统对电路功能、逻辑和版图的设计,以及考虑实际产品可能出现的时延和故障而进行分析的过程。在模拟分析的基础上对设计参数进行修正。为了争取产品一次投片成功,设计工作的每一阶段都要对其结果反复进行比较取优,以取得最好的设计结果。
6.FPGA
FPGA(Field Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。在这3类可编程逻辑器件中,FPGA提供了最高的逻辑密度、最丰富的特性和最高的性能。现在最新的FPGA器件,如Xilinx Virtex系列中的部分器件,可提供800万“系统门”(相对逻辑密度)。这些先进的器件还能提供诸如内建的硬连线处理器(如IBM Power PC)、大容量存储器、时钟管理系统等特性,并支持多种最新的超快速器件至器件(device-to-device)信号技术。它作为一种可编程逻辑器件,在20世纪90年代获得了突飞猛进的发展。在微电子技术的不断推动下,FPGA在速度上进一步提高,在功耗方面进一步降低,其应用更加广泛,在通信、广播视讯、工业、医疗与自动化等领域成为发展最快的技术之一,也成为目前应用最为广泛的数字系统的主流平台之一。
随着微电子设计技术与工艺的发展,数字集成电路从电子管、晶体管、中小规模集成电路、超大规模集成电路(VLSIC)逐步发展到今天的专用集成电路(ASIC)。ASIC的出现降低了产品的生产成本,提高了系统的可靠性,缩小了设计的物理尺寸,推动了社会的数字化进程。但设计周期长、改版花费投资巨大、灵活性差等缺陷制约了ASIC的应用范围。硬件工程师希望有一种更灵活的设计方法,根据需要在实验室就能设计、更改大规模数字逻辑,这是提出可编程逻辑器件的基本思想。
可编程逻辑器件随着微电子制造工艺的发展取得了长足的进步。从早期的只能存储少量数据、完成简单的逻辑功能的可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM),发展到能完成中大规模的数字逻辑功能的可编程阵列逻辑(PAL)和通用阵列逻辑(GAL),今天已经发展成为可以完成超大规模的复杂组合逻辑与时序逻辑的复杂可编程逻辑器件(CPLD)和现场可编程逻辑器件(FPGA)。随着工艺技术的发展与市场需要,超大规模、高速、低功耗的新型FPGA/CPLD不断推陈出新。新一代的FPGA甚至集成了中央处理器(CPU)或数字处理器(DSP)内核,在一片FPGA上进行软硬件协同设计,为实现片上可编程系统(SOPC)提供了强大的硬件支持。
FPGA最初只是用于胶合逻辑(Glue Logic),从胶合逻辑到算法逻辑再到数字信号处理、高速串行收发器和嵌入式处理器,FPGA真正地从配角变成了主角。在以闪电般速度发展的半导体产业,22年足够改变一切。“在未来十年内每一个电子设备都将有一个可编程逻辑芯片”的理想正成为现实。
1985年,Xilinx公司推出的全球第一款FPGA产品XC2064怎么看都像是一只“丑小鸭”——采用2mm工艺,包含64个逻辑模块和85 000个晶体管,门数量不超过1000个。22年后的2007年,FPGA业界双雄Xilinx和Altera公司纷纷推出了采用最新65nm工艺的FPGA产品,其门数量已经达到千万级,晶体管个数更是超过10亿个。一路走来,FPGA在不断地紧跟并推动着半导体工艺的进步——2001年采用150nm工艺,2002年采用130nm工艺,2003年采用90nm工艺,2006年采用65nm工艺。
1991年Xilinx公司推出其第三代FPGA产品——XC4000系列时,人们开始认真考虑可编程技术了。XC4003包含44万个晶体管,采用0.7mm工艺, FPGA开始被制造商认为是可以用于制造工艺开发测试过程的良好工具。事实证明,FPGA可为制造工业提供优异的测试能力,FPGA开始用来替代原先存储器所扮演的用来验证每一代新工艺的角色。也许从那时起,向最新制程半导体工艺的转变就已经不可阻挡了。最新工艺的采用为FPGA产业的发展提供了机遇。
Altera公司相信,Flash将继续成为FPGA产业中一个重要的增长领域。Flash技术有其独特之处,能将非易失性和可重编程性集于单芯片解决方案中,因此能提供高成本效益,而且处于有利的位置以抢占庞大的市场份额。Actel以Flash技术为基础的低功耗IGLOO系列、低成本的ProASIC3系列和混合信号Fusion FPGA将因具备Flash的固有优势而继续引起全球广泛的兴趣和注意。
Altera公司估计可编程逻辑器件市场在2006年的规模约为37亿美元, Xilinx公司的估计更为乐观一些,为50亿美元。虽然两家公司合计占据该市场90%的市场份额,但是作为业界老大的Xilinx公司在2006年的营收不过18.4亿美元,Altera公司则为12.9亿美元。PLD市场在2000年达到41亿美元,其后两年出现了下滑,2002年大约为23亿美元。从2002年到2006年,PLD市场每年都在增长,复合平均增长率接近13%。
1.1.2 FPGA的工作原理
FPGA的工作原理一般包括基于SRAM技术原理、基于反熔丝技术原理以及基于Flash技术原理。某些结构(比如使用反熔丝还是SRAM配置单元)是无法共存的。有的FPGA厂商专注于其中的一种或几种,还有的厂商则提供基于这些不同技术的多个器件系列。
对于不同的内部模块,比如乘法器、加法器、存储器和微处理器核,不同的厂商会有不同的产品来满足不同的设计要求。问题是每个厂商和每个器件系列所支持的特性几乎每天都在变化,这意味着一旦你决定了所需要的特性,就需要做一些研究来看看哪个厂商当前提供的器件最接近于设计要求。
1.1.2.1 基于SRAM技术原理
1.SRAM和DRAM的区别
半导体RAM分为动态RAM和静态RAM,也就是DRAM与SRAM。目前市场上的内存大部分都是动态的,从开始的DDR到DDR2,再到现在的DDR3。
DRAM与SRAM的区别在于DRAM是要隔一段时间进行刷新的。构成DRAM的最小单元是一个晶体管,相比SRAM来说非常节省硅片。但缺点就是DRAM需要额外的定时刷新电路,对于小规模的DRAM来说,这种刷新电路的消耗是得不偿失的,对于大规模的DRAM来说,总体DRAM消耗的硅面积(包括刷新电路)会比SRAM消耗的硅面积要小,对于可编程来说,还是有些不足,实现起来比较复杂。但也说不定等将来技术提高了,关注更多的是硅面积的时候,会出现基于DRAM技术的FPGA。
相比之下,SRAM是不需要动态刷新的,但是它的最小单元是一个消耗更多硅面积的多晶体管的结构。之所以不需要动态刷新,是因为一旦SRAM单元被载入数据后,它将保持不放电,但是如果整个供电系统掉电,则器件配置的数据将会丢失,也就是说,这种器件在系统上电时需要重新配置。这种器件的特点是可迅速反复地编程,这也是选中SRAM技术实现FPGA的很大原因。
基于SRAM技术的FPGA思想是把事先可能的输入组合代入多项式进行计算,把结果存在SRAM中,用输入进行索引得出结果。这个存放结果的SRAM称作查找表(LUT)。基于SRAM技术的FPGA的本质就是基于LUT技术。
2.查找表的工作原理
为了更好地有效说明查找表的概念,这里举了一个实现二选一多路器的例子。首先,按照我们要实现的功能,从数学表达式上得出,然后把这个数学表达式和电路逻辑门映射起来得到如图1-2所示的电路图,由两个与门、一个反相器和一个或门组成。如果按照CPLD实现的话,最终结果就是由晶体管构成的门电路组成。如果是时序电路的话,再在后面加一级寄存器。要在FPGA中通过查找表的方式实现,由于查找表中存放的都是我们不同的组合电路输入得到的最终结果值,所以我们先来计算二选一多路选择器的真值,结果见表1-1。
图1-2 电路图
表1-1 真值表
这个真值表的计算其实就是我们开发流程中综合的过程,这里暂且提一下,有了这个真值表,我们就可以按照LUT的结构对号入座了。图1-3显示的是3输入LUT的结构。从真值表中可以看出,不同的输入组合就有8种映射,我们这里就有8个这样的存储单元来存储这些结果。在图中我们标定为0~7号,综合器将如何在这些存储单元中存放这8种结果呢?
图1-3 3输入LUT结构图
如图1-4所示,我们试图填一下第0号存储器。由LUT结构图可知,第0号应该填充的是当a=1、b=1、s=1时要实现功能的真值表中对应的结果,查表得到第0号应该填充1。换个角度,当a=0、b=1、s=0时,那么应该第5号填充数据,查表得出应该填充逻辑0。
图1-4 二选一多路器真值关系图
上面的例子中,我们看到所用的LUT是一个3输入、存储单元为8bit的规模,对于同一块面积来说,是用越多的小规模的LUT好还是用少一点的规模大的LUT好呢?这是我们接下来要讨论的问题。对于一个n输入查找表来说,它能够实现任何具有n输入组合函数的功能,假如增加一位输入,它可以实现的函数的复杂度是成倍增加的,当然使用的SRAM也是成倍增加的。历史上第一片FPGA是基于3输入LUT的,后来也出现过3输入、4输入、5输入、6输入以及片内混合型的(即兼有其中两种或两种以上类型的LUT)。无论怎样,需要知道的是,查找表越小,它的配置使用率就越高,但是逻辑综合器的工作量就越大。经过一些性能和成本的最后衡量,市面上主流厂商的片子是基于4输入LUT的,但是一些高端的器件,比如Xilinx的V4及以上系列,即存在4输入LUT,也存在5输入的LUT。主要的考虑是随着面积的增大,若全都采用4输入的,综合器的工作量很大,如果全部使用5输入的,那么有很大一部分的LUT利用率不是很高。比如一个函数是4输入的功能规模,也得用一个5输入的LUT来实现,剩下的1输入不能被重新利用,就浪费掉了。经过这么一综合,4输入和5输入的LUT都有了。随着技术的发展,用多少输入的LUT来构成FPGA相信也会在目前大部分基于4输入的基础上有所改变。
对于逻辑开发者来说,在确定好开发平台后,明确了构成该型号FPGA的LUT后,编写逻辑时,要尽量充分利用LUT,如果构成该FPGA的LUT是4输入的,那么逻辑信号宽度尽量用4的倍数。比如你用到一个计数器是23位宽的,这里建议用24位宽的,首先是不浪费资源,其次是可以防止计数溢出,除非有目的地设计它为23位用来加1清零。
1.1.2.2 基于反熔丝技术原理
这里的熔丝是指小型的保险丝,小到只有用显微镜才能看得到,它的基本原材料也是硅。保险丝在大功率时会过载熔断,熔丝也一样,遇到大电流、大电压的时候也会断开。
反熔丝的技术原理正好相反。反熔丝最开始的时候是连接两个金属连线的微型非晶体硅柱,在未编程状态下,非晶体硅就是一个绝缘体,也就是意味着断开,当遇到大电流和大电压的时候就会变成电阻很小的导体,几乎就是通路。
反熔丝器件的一个值得注意的优点是,它的内部互联结构是天生“防辐射的”,也就是说,它相对不受电磁辐射的影响。这对军事和宇航应用具有特别的吸引力,因为在这些环境下,基于SRAM元件中的配置单元被射线击中时可能会发生“翻转”(外层空间中有大量的射线)。相比之下,反熔丝器件编程以后,它不会以这种方式改变。还应当指出,这些器件中的任何触发器都对射线敏感,所以用于高辐射环境下的芯片必须使用3倍冗余设计来保护它们的触发器。这是指每个寄存器有3个副本来举行多数投票(理想情况下,这3个寄存器将保持完全相同的值,但是如果有一个“翻转”导致出现两个寄存器输出“0”而第三个输出“1”,那么输出“0”的占多数,具有决定权;或者反过来,两个输出“1”而第三个输出“0”,则输出“1”的具有决定权)。
图1-5 反熔丝实现或门可编程
如果我们要实现的关系是y=a|b,那么就可以用高电流和高电压将第2、4个电熔丝给熔断,相当于2和4是断开的,从而实现我们的功能逻辑。如图1-5所示,可通过反熔丝技术实现或门可编程。要实现同样的功能逻辑y=a|b,那么可以通过高电流和高电压将未编程的1号和3号反熔丝进行拉长处理,相当于1号和3号开关连通。
不管是熔丝还是反熔丝,都相当于开关,只不过熔丝编程操作的是需要的逻辑的反断开,而反熔丝的编程操作是将需要的逻辑给接上,这样就为反熔丝型FPGA提供了可编程基础。
在上面介绍了SRAM技术之后,我们知道了基于SRAM技术的最大缺点就是掉电失配,上电重配。外围必须要用配置存储芯片,占用板级空间,而且基于SRAM的FPGA本身最小单元的面积相对来说比较大,也就决定了由它得到的同等逻辑的FPGA面积大。然而,基于反熔丝技术的FPGA是非易失性的,配置数据在系统掉电后依然存在,上电后系统会立即使用,不需要额外的配置存储芯片来配置,这样就节约了额外的板级面积。尽管基于反熔丝的需要额外的编程电路,但是当规模达到百万、千万的时候,它的密集性就很明显了,而现在的一些基于SRAM技术的已达到了这个规模,所以这一点在今后可能会越来越明显。
反熔丝型的FPGA的另一个很大的优点,也是它能够和基于其他技术的FPGA竞争生存下去的特性就是,它生来就是免疫辐射,这个对于军事、航空航天等有特别要求的场合来说还是非常有用的。在这些环境下,基于SRAM技术的FPGA的LUT存储单元在受到外部辐射时,粒子流射线会导致存储在SRAM中的逻辑1和0翻转,最终导致整个逻辑功能错乱。虽然基于SRAM的FPGA早期针对这些环境也有解决策略,采用多倍冗余设计,采用多偏制,一个表保存多份,当其中的一份或者几份发生倒转,但是大部分没有发生倒转时,程序通过判断后还能正常运行,但这不是根本解决问题的方法,只是减小错误发生的概率,也是以消耗几倍的资源来满足的。
1.1.2.3 基于Flash技术原理
大家对Flash并不陌生,即是常听的闪存,经常会用到。Flash技术的发展可以追溯到EPROM和E2PROM,闪存一方面具有EPROM的浮置栅晶体管单元,另一方面具有E2PROM的薄氧化层特性,所以具有电可擦除性能,其他结构方面的特性和具有双晶体管的E2PROM相似,可以实现以字为单元的操作。
在对Flash有了一定了解后,我们来看看基于Flash的FPGA的原理,就目前来说,纯Flash结构的FPGA并不多见,更多的是Flash与SRAM混合形式的FPGA。其中SRAM用于构成器件正常工作时的电路,而Flash则是用来在上电时对SRAM进行配置,本身Flash具有掉电非易失性,所以并不需要额外的片外配置电路。
由于市面上基于Flash架构的FPGA的主要厂家是Actel,所以大部分的Flash型FPGA产品通过Actel的产品进行解释说明。
第一是单芯片可重配性。前面提到,基于反熔丝的FPGA不需要额外的配置存储但是是一次性编程的,用在较成熟的产品中,不能重复地配置验证;而基于SRAM技术的FPGA可以重复下载验证,但是需要外部额外的配置存储器件,上电后需要一定的配置延时时间。两者都不是很尽如人意。基于Flash技术的FPGA则在两者当中都取得了优势,既可以重复下载配置,也不需要额外的片外配置芯片。
第二是高安全性。基于SRAM的FPGA很大的问题就是安全性很难保障,逆向工程工作者通过努力可以分析出配置在片外的存储器的配置文件,进而推出其电路网表结构。而Actel的Flash架构的FPGA可以从3个层次很好地对电路进行保护。第一层是这个物理层的保护,在Actel的第三代Flash器件中,晶体管有多层金属保护,去除它非常困难,很难实现逆向,同时采用的是片内配置,不用担心在上电配置过程中数据流被截取。第二层就是基于Flash LOCK加密技术,通过将密钥下载到芯片中进行加密来防止对芯片非授权的操作,载入密钥后,从器件中读取数据或写入数据的唯一途径就是JTAG端口。第三层就是加密算法了,采用的是AES加密算法,该算法目前来说只能采用暴力破解的方式,然而目前的JTAG端口速度大约是20MHz,按照128位密钥、1秒钟算一个密钥的话,也得算上几亿年。
第三大优点是低功耗。特别是很多手持设备的低功耗要求。FPGA的功耗主要考虑有4个方面,分别是上电功耗、配置功耗、静态功耗和动态功耗。Actel的Flash型FPGA上电不需要大电流启动,且由于具有非易失性,几乎没有上电功耗和配置功耗,同时因为其相比SRAM型FPGA的可编程开关的6个晶体管,它只需要2个,在静态功耗和动态功耗方面,都具有很强的竞争力。
1.1.3 FPGA的生产厂家及其产品
目前世界上有十几家生产FPGA的公司,其中最大的3家分别为Altera、Xilinx和Lattice,而Altera和Xilinx占据了主要的市场份额。通常来说,在欧洲Xilinx的用户较多,在日本和亚太地区用Altera的较多,在美国则是平分秋色。全球PLD/FPGA产品60%以上是由Altera和Xilinx提供的。可以说,Altera和Xilinx共同决定了可编程芯片技术的发展方向。
1.1.3.1 Xilinx公司及产品介绍
Xilinx(赛灵思)是全球领先的可编程逻辑完整解决方案的供应商。Xilinx研发、制造并销售范围广泛的高级集成电路、软件设计工具以及作为预定义系统级功能的IP(Intellectual Property)核。客户使用Xilinx及其合作伙伴的自动化软件工具和IP核对器件进行编程,从而完成特定的逻辑操作。Xilinx公司成立于1984年,首创了现场可编程逻辑阵列(FPGA)这一创新性的技术,并于1985年首次推出商业化产品。Xilinx满足了全世界对FPGA产品一半以上的需求。Xilinx产品线还包括复杂可编程逻辑器件(CPLD)。在某些控制应用方面, CPLD通常比FPGA速度快,但其提供的逻辑资源较少。Xilinx可编程逻辑解决方案缩短了电子设备制造商开发产品的时间并加快了产品面市的速度,从而减小了制造商的风险。
与采用传统方法如固定逻辑门阵列相比,利用Xilinx可编程器件,客户可以更快地设计和验证他们的电路。而且,由于Xilinx器件是只需要进行编程的标准部件,客户不需要像采用固定逻辑芯片时那样等待样品或者付出巨额的成本。Xilinx产品已经被广泛应用于从无线电话基站到DVD播放机的数字电子应用技术中。传统的半导体公司只有几百个客户,而Xilinx在全世界有7500多家客户及50 000多个设计开端,其客户包括Alcatel、Cisco Systems、EMC、Ericsson、Fujitsu、Hewlett-Packard、IBM等。
Xilinx的主流FPGA分为两大类:一种侧重于低成本应用,容量中等,性能可以满足一般的逻辑设计要求,如Spartan系列,包括Spartan-2、Spartan-2E、Spartan-3、Spartan-3A、Spartan-3E、Spartan-6等;另一种侧重于高性能应用,容量大,性能能满足各类高端应用,如Virtex系列,用户可以根据自己的实际应用要求进行选择。在性能可以满足的情况下,优先选择低成本器件。Spartan系列是当前主流的芯片种类。
① Spartan-2最高可达20万系统门;
② Spartan-2E最高可达60万系统门;
③ Spartan-3最高可达500万门;
④ Spartan-3A和Spartan-3E不仅系统门数更大,而且增强了大量的内嵌专用乘法器和专用块RAM资源,具备实现复杂数字信号处理和片上可编程系统的能力;
⑤ Spartan-6系列的FPGA是Xilinx公司于2009年推出的新一代的FPGA芯片,该系列的芯片具有功耗更低、容量更大等特点。
Virtex系列是Xilinx的高端产品,也是业界的顶级产品,Xilinx公司正是凭借Vitex系列产品赢得了市场,从而获得FPGA供应商领头羊的地位。可以说, Xilinx以其Virtex-6、Virtex-5、Virtex-4、Virtex-II Pro和Virtex-II系列FPGA产品引领现场可编程门阵列行业。
本节将介绍Xilinx中低端产品Spartan-6系列、中端产品Virtex-6系列以及高端产品Kintex-7系列。
1.Spartan-6系列
Spartan-6是第六代Spartan系列产品,专门针对成本和功率敏感的市场(如汽车娱乐、平板显示以及视频监控)。Spartan-6基于45nm技术、9层金属布线、双栅极氧化层工艺技术生产,在前几代Spartan系列的结构基础上,利用了成熟可靠的Virtex高端系列架构。它提供的资源包括:高级功耗管理、高效双寄存器6输入LUT、髙达150 000个逻辑单元、片上PCI Express硬件模块、高级片外存储器控制器(Memory Controller Block,MCB)、250MHz DSP SLICE和3.125Gbit/s低功耗收发器等。
本节将详细介绍Spartan-6系列器件的内部模块,以便读者对Spartan-6系列FPGA内部模块有一个较深入的认识。只有深入了解FPGA的内部结构,才能有效地利用它,这可以在很大程度上提高设计者的设计优化能力——用较少的资源,实现较多的功能和较高的性能。Spartan-6内部模块包括可配置逻辑模块(CLB)、时钟资源、时钟管理器(CMT)、BRAM模块、DSP模块、SelectIO模块、MCB模块、GTP模块和PCIC端点模块。
(1)可配置逻辑模块(CLB)
Spartan-6的每个CLB模块包含两个SLICE。CLB通过交换矩阵和外部通用逻辑阵列相连,如图1-6和图1-7所示。底部的SLICE标号为SLICE(0),顶部的SLICE标号为SLICE(1)。两个SLICE没有直接连接。
图1-6 CLB中的SLICE连接
图1-7 CLB之间的排列位置
每个SLICE包含4个LUT和8个存储单元,这些基本单元能提供逻辑和ROM功能。在Spartan-6中,大约50%的SLICE为SLICEX,它不具有存储功能,也没有进位链;25%为SLICEL,它也不具有存储功能,但包含进位链;剩下的25%为SLICEM,它具有存储/移位寄存器功能,也包含进位链。但XC6SLX4中不含SLICEL。每个CLB SLICE包含逻辑函数发生器、存储元件、多功能复用器、位逻辑和算术逻辑单元(MULT AND)等资源,下面分别介绍。
① 查找表(LUT)
Spartan-6 FPGA的函数发生器由6输入查找表实现。SLICE中的LUT由6个独立输入(A1~A6)和两个独立输出(05和06)构成,可以实现任意6输入布尔函数。同时,每个LUT在相同的输入情况下,也可以实现两个任意5输入布尔函数。如果是6输入函数,则仅有06输出。05和06分别对应两个5输入函数发生器的输出,这种情况下,A6由软件设置为高电平。LUT的时延与所实现的函数无关,不管是一个6输入还是两个5输入函数发生器,LUT时延固定。除了基本的LUT,SLICE还包含3个复用器(F7AMUX、F7BMUX和F8MUX),可以将4个函数发生器组合在一起,实现7输入或者8输入的任何函数。大于8输入的函数,可通过多个SLICE实现。
√ 组合逻辑。所有LUT可以实现任意6输入布尔函数,它的传播时延与所实现的函数无关。
√ ROM。所有的LUT可以实现一个64×1位的ROM。有3种配置方式:ROM 64×1、ROM 128×1和ROM 256×1。SLICEM和SLICEL中的ROM可以级联成更宽或者更深的ROM。配置方式见表1-2。
表1-2 ROM配置
√ 分布式RAM存储器(只能在SLICEM中使用)。SLICEM中的LUT可以配置成一种被称为分布式RAM的同步存储器。SLICEM中的多个LUT可以灵活地组合起来,存储较多的数据。在SLICEM中,可以将RAM元件配置成多种形式,见表1-3。
表1-3 分布式RAM配置表
√ 移位寄存器(只能在SLICEM中使用)。SLICEM的LUT还可配置成32位移位寄存器,无需使用SLICE中提供的触发器。以这种方法使用的LUT可以将串行数据延迟1~32个时钟周期。移位寄存器的移位输入shiflin D和移位输出shiftout Q31用来将LUT级联成更大长度的移位寄存器,一个SLICEM中的4个LUT可以级联,产生128个时钟周期的时延。CLB之间也可以连接组成移位寄存器,用于平衡数据流水线的时序。需要时延或时延补偿的应用可使用这些移位寄存器开发高效、低成本的设计。在同步FIFO和内容可寻址存储器(CAM)设计中,移位寄存器也很有用。移位寄存器只有一个原语,如图1-8所示。
图1-8 移位寄存器原语
② 存储元件
Spartan-6的每个SLICE有8个存储元件,可以实现存储功能。其中4个与O6相连的存储单元可以配置成寄存器或锁存器,而与O5相连的存储单元仅可以配置成寄存器,如图1-9所示。
图1-9 SLICE中的寄存器/锁存器配置
③ 复用器(MUX)
复用器F7AMUX、F7BMUX和F8MUX通常和函数发生器或者片上逻辑一起实现多种复用器。在Spartan-6中,LUT可以实现如下复用器:1个LUT实现4:1复用器;2个LUT实现8:1复用器;4个LUT实现16:1复用器。
④ 快速先行进位逻辑(Carry Logic)
除了函数发生器,SLICEM和SLICEL(非SLICEX)包含专门的进位链,用于在SLICE中实现快速算术加减运算。CLB中有一条进位链,能解决多位宽加法、乘法从最低位向最高位的进位延时问题。先行进位逻辑有专用的进位通路和进位复用器(MUXCY),可用来级联函数发生器(LUT),以实现更宽、更复杂的逻辑函数,提高CLB的算术运算速度。Spartan-6中的进位链是上行进位链,每个SLICE具有4位的高度。考虑到进位链的上行结构特点,设计中要特别注意进位链的长度,因为如果当进位链长度超出一列时,进位会导致时延变长很多,从而影响时序。
⑤ 算术逻辑(MULT_AND)
算术逻辑包括一个异或门(XOR)和一个专用与门(MULT_AND)。一个异或门可以使一个SLICE实现2位全加操作,专用与门可提高乘法器的效率。
(2)时钟资源
时钟布线资源具有高速、低SKEW的特点,它对系统设计非常重要,即使系统速率不高,也应该关注时钟设计,以消除潜在的时钟危险。Spartan-6器件包含16个全局时钟资源和40个I/O区域时钟资源:全局时钟用于系统时钟,而I/O区域时钟专门用于I/O串行/解串(ISERDES和OSERDES)设计。Spartan-6时钟资源包含以下4种:全局时钟输入引脚(GCLK)、全局时钟复用器、I/O时钟缓冲器和时钟布线网络。
① 时钟输入
每个Spartan-6有32个全局时钟输入引脚,分布在FPGA的四周。时钟输入引脚在片上的分布如图1-10所示。时钟输入引脚接收外部时钟信号,直接连接片内的DCM/PLL/BUFGMUX/BUFI02。时钟输入引脚不连接时钟时,用作普通I/O。一个差分时钟输入需要两个全局时钟输入。成对的时钟输入在标号上是连续的,例如,GCLK0和GCLK1是差分对,GCLK20和GCLK21是差分对。每个全局时钟缓冲器有两个时钟输入,Spartan-6支持最多16对的差分全局时钟输入。设计中的时钟输入引脚连接roUFG原语,通常综合工具会分析设计,自动将顶层时钟引脚推演为与IBUFG相连。如果需要更多roUFG的控制功能,可以通过例化IBUFG的方式,将IBUFG的I端口连到顶层端口,将O端口连接到DCM、BUFG或通用逻辑。
图1-10 时钟输入引脚片上分布图
② 全局时钟缓冲器/复用器
Spartan-6的时钟缓冲器/复用器(BUFG或BUFPLL)可以直接驱动时钟输入信号到时钟线上,或者通过复用器在两个不相关的信号甚至异步时钟信号中切换。
BUFGMUX。BUFGMUX可以作为一个BUFG,或者作为两个全局时钟源的多路选择器在两个时钟源之间切换。BUFGMUX只驱动全局时钟布线资源。通用布线资源也能驱动FPGA逻辑触发器上的时钟输入,但是通常不推荐使用,因为通用布线资源有较高的SKEW。如图1-11所示,BUFGMUX是具有两个时钟输入I1和I0、一个时钟输出O和一条选择线S的时钟缓冲器,可以消除两个时钟源之间切换时产生的毛刺信号。选择线S必须满足建立时间要求,违反这一建立时间可能导致毛刺信号。
图1-11 BUFGMUX原语
选择线S翻转选择另一个时钟源输出时,输出保持在一个非活动态,直到下一个有效时钟沿到来。当两个时钟切换时,输出电平可以为高电平或低电平,默认为低电平。交叉解耦寄存器确保了BUFGMUX输出不会产生一个时钟脉冲边沿。
当S输入改变时,输出保持为Low,直到另一(待选)时钟从High转为Low。然后新的时钟开始驱动输出,见表1-4,由于输入第一个低到高的跳变输出不翻转,所以输出不会比最短输入时钟脉冲短。
S输入为低,选择时钟输入I0;S输入为高,选择时钟输入I1。BUFGMUX还具有内置可编程极性,等效于交换I0和I1。每个触发器可以对时钟信号进行极性设置,确定上升沿或下降沿触发,避免产生两个不同的时钟信号。
表1-4 BUFGMUX功能表
BUFGCE_1。BUFGMUX_1和BUFGMUX功能相同,区别在于BUFGMUX对上升沿敏感,并且在输入切换之前保持为High。
BUFG。如图1-12所示,BUFG其实就是具有一个时钟输入和一个时钟输出的缓冲器,它也是Virtex和Spartan器件中时钟缓冲器的通用原语。
图1-12 BUFG的原语
BUFGCE 和 BUFGCE_1。BUFGCE是具有一个时钟输入、一个时钟输出和一条时钟使能线的时钟缓冲器。当时钟使能CE为高时,输入I经缓冲器输出;当CE为低(非激活状态)时,输出O为低。其原语如图1-13所示。
图1-13 BUFGCE的原语
BUFGCE_1与BUFGCE功能相同;不同的是,当时钟使能CE为低时,输入I经缓冲器输出;当CE为高(非激活状态)时,输出O为高。
③ I/O时钟缓冲器
除了全局时钟缓冲器外,Spartan-6还包含驱动高速I/O时钟区域的时钟缓冲器。BUFIO2接收来自GCLK的时钟输入,产生两个时钟输出和一个驱动IOSERDES2的选通脉冲,如图1-14所示。
BUFIO2_2CLK和BUFIO2功能几乎相同,不同的是,BUFIO2_2CLK的输入为两个单端时钟或者一对差分时钟(IBUFDS_DIFF_OUT的输出),如图1-15所示。
图1-14 BUFIO2的原语
图1-15 BUFIO2_2CLK的原语
BUFIO_2FB是一个单输入单输出的缓冲器,有一个输出属性控制输出延时,如图1-16所示。当属性DIVIDE_BYPASS设置为TRUE时,BUFIO_2FB等同于BUFIO2旁路延时;当属性DIVIDE_BYPASS设置为FALSE时,BUFIO_2FB的延时与BUFIO2的DIVCLK输出类似,保持BUFIO2的输出和BUFIO_2FB相位对齐。
图1-16 BUFIO_2FB的原语
BUFIO_2FB缓冲器为CMT(PLL或DCM)参考输入CLKIN和反馈输入CLKFB的时钟布线延时提供了一个很好的解决方法。当使用CMT的反馈路径时,ISE会自动插入BUFIO_2FB和BUFIO2缓冲器,如图1-17所示。
图1-17 BUFIO_2FB缓冲期与时钟延时匹配
BUFPLL将PLL的LOCK输出与GCLK、SERDES选通和PLL时钟对齐。其中的IOCLK仅仅是将输入时钟通过了一级缓冲的版本。LOCK输出信号其实与PLL的LOCKED信号具有相同的功能,它们的区别在于,在PLL锁定、BUFPLL对齐SERDES选通信号之前,LOCK不会变高。Spartan-6器件的每个BANK有两个BUFPLL,专用于PLL,不建议将其用作逻辑时钟。
④ 时钟网络
Spartan-6的时钟布线网络包括全局时钟网络和区域时钟网络。
全局时钟网络。Spartan-6的全局时钟网络由16个位于芯片中央的BUFGMUX驱动。BUFGMUX的输入信号有以下3种:顶部和底部BANK的时钟输入;左边和右边BANK的时钟输入;FPGA内部互联和/或PLL/DCM。这3种资源通过芯片中央的切换模块切换。每个BUFGMUX输出驱动一个垂直方向的时钟脊线,沿着这个方向,水平跨接行时钟HCLK。HCLK的输入有两种,通过专用的多路选择器(BUFGMUX的输出,PLL或DCM的输出)进行切换。BUFGMUX的输出。PLL或者DCM的输出,每个HCLK对应一个PLL或两个DCM,由于Spartan-6中有32个全局时钟输入引脚和16个全局输入缓冲器,所以有可能两个时钟输入引脚驱动一个全局时钟。当通过全局时钟引脚(IBUFG或IFUFGDS)直接驱动全局时钟缓冲器(BUFG或BUFGMUX)时,BANK0、BANK1和BANK5分享8个全局时钟缓冲器,类似地,BANK2、BANK3和BANK4分享8个全局时钟缓冲器,如图1-18所示。
图1-18 Spartan-6 FPGA全局时钟结构图
当使用第二个BUFIO2时,BUFIO2可用作第二个全局时钟缓冲器。由于系统资源按照主BUFIO2路径优化,因此对于不使用主BUFI02资源的全局时钟,系统性能会受影响。
区域时钟网络。如图1-19所示,一个I/O时钟网络能通过BUFPLL被PLL驱动,每个PLL有两个相关缓冲器,扩展到整个I/O BANK。
图1-19 FPGA I/O BANK内的I/O时钟结构
每个BANK有两个分离的I/O时钟区域,每半个I/O BANK都有4个高速I/O时钟,由4个专用BUFIO2缓冲器驱动。
I/O时钟输入引脚可以通过BUFIO2扩展到整个BANK,如图1-20所示。使用两个BUFIO2资源,例如BUFIO2_0和BUFIO2_4,将时钟扩展到整个BANK。
图1-20 I/O BANK内的I/O时钟
(3)时钟管理器(CMT)
Spartan-6 CMT是一个灵活、高性能的时钟管理模块,它位于芯片中央、垂直的全局时钟网络旁。如图1-21所示,CMT包含一个PLL和两个DCM。
图1-21 Spartan-6 FPGA CMT片内布局图
① DCM
Spartan-6中的DCM与Spartan-3中的类似,如图1-22所示,同样由4部分组成。
图1-22 DCM功能结构图
√ 延时锁相环(DLL)。DLL可以根据输入时钟去除DCM的输出时钟歪斜,以完全消除时钟分布时延。其原理是将时钟输入(CLKIN)与一个反馈输入(CLKFB)进行比较,然后控制延时线选择器,通过在DLL路径中加入合适的延时直到CLKIN与CLKFB重合。DLL输入时钟是CLKIN和CLKFB,输出时钟信号是CLK0、CLK90、CLK180、CLK270、CLK2X、CLK2X180和CLKDV。
√ 数字频率综合器(DFS)。DFS有两个用户寄存器,用来设置相对于输入时钟(CLKIN)倍频(CLKFX_MULTIPLY)和分频(CLKFX_DIVID)系数。DFS可以单独使用,还可以和DLL一起配合使用;如果DFS不和DLL一起使用,CLKIN和DFS输出之间就没有对应的相位关系。DFS的输出为CLKFX和CLKFX180。
√ 相移单元(PS)。PS的输入信号有PSINCDEC、PSEN和PSCLK,输出信号为PSDONE和STATUS[0]。相移模式包括固定相移和可变相移。固定相移是指DCM的9个时钟的相位输出,通常是输入时钟周期的若干分之一,固定相移值在设计中设定并在FPGA配置时载入FPGA。除了固定相移,PS还支持可变相移,根据系统要求,通过数字接口(PSINCDEC、PSEN和PSCLK)动态改变相移。每次动态改变的相移值为DCM_DELAY_STEP。
√ 状态逻辑。状态逻辑反映DCM的状态,对应两个输出信号LOCKED和STATUS[0]。如图1-23所示,主要有两个DCM的原语调用:DCM_SP和DCM_CLKGEN。
图1-23 DCM原语
DCM_SP提供DCM的传统特性:时钟DESKEW、频率综合和固定及可变相移。DCM_SP所有的属性都是在设计时确定,上电配置的时候编程到FPGA,除了动态相移功能外,所有的属性在运行时是不可以更改的。
② PLL
Spartan-6器件最多包含6个CMT和12个PLL。PLL的主要用途是作为频率合成器,产生更宽范围的频率输出,在与CMT中的DCM连接时,具有良好的滤波功能。PLL包括可编程计数器D、相位/频率检测器(Phase-Frequency Detector,PFD)、电荷泵(Charge Pump,CP)、环路滤波器(Loop Filter,LF)、压控振荡器(Voltage Controlled Oscillator,VCO)、O0~O5共6个可编程计数器。图1-24所示为PLL的功能框图。
图1-24 Spartan-6 PLL 功能框图
它的工作原理是,PFD将输入时钟与反馈时钟的相位和频率进行比较,产生的信号驱动CP和LF,CP和LF为VCO产生一个参考电压,这个参考电压将影响VCO的输出频率。那么,VCO的频率是如何变化的呢?PFD完成两个时钟的比较后,产生CP和LF的驱动信号,这个信号确定了VCO应该工作在较高频率还是较低频率。当VCO工作频率过高时,PFD触发一个下降信号,致使控制电压下降,从而降低VCO的工作频率。当VCO工作频率过低时,PFD触发一个上升信号,致使电压上升。VCO共产生8个输出相位,每个输出相位都可选作输出计数器的参考时钟,如图1-25所示。另外,PLL还提供了一个专用计数器M,用来控制PLL的反馈时钟,以实现大范围频率合成。6个“O”计数器可以独立编程,例如,O0可以编程为进行二分频操作,而O1编程为进行三分频操作。唯一的限制是VCO的工作频率对所有输出计数器来说必须相同,因为VCO驱动所有计数器。使用专用PLL布线资源,必须将CLK_FEEDBACK设置为CLKOUT0。
图1-25 带CLKOUT0反馈的PLL
Spartan-6 PLL是为支持时钟网络去歪斜SKEW、频率合成和减少抖动而设计的混合信号模块。接下来将详细讨论PLL的这3种作用。
√ PLL对时钟网络去歪斜SKEW。许多情况下,设计人员在其I/O时序预算中不希望有时钟网络的延时。其实,用PLL/DLL就可以解决这个问题,因为PLL/DLL具有补偿时钟网络的延时的功能。当然,包括Spartan-6中的PLL。一个与参考时钟CLKIN的频率相匹配的时钟(通常是CLKFBOUT或CLKOUTO)连接到BUFG,并且反馈到PLL的CLKFB引脚。其余输出仍可用来合成更多用户所需的频率。这样一来,所有的输出时钟就会与参考时钟之间有一个指定的相位关系。为了精确地降低由于时钟输入布线引起的歪斜,建议采用图1-25所示的方法,使用BUFIO2FB缓冲器。
√ PLL用于频率合成。PLL还可以用于频率合成。在这种应用中,PLL不能用于时钟网络去歪斜,而是用来为其他模块提供时钟。在这种模式下,PLL反馈通路因为要将所有布线保留为局部布线而应设置成internal反馈模式,以尽量减少抖动。
√ PLL用作抖动滤波器。PLL始终可以降低参考时钟上固有的抖动。PLL可以被例化以滤掉外部时钟在驱动另一个逻辑模块前(包括DCM)的抖动。作为抖动滤波器,PLL通常被简单地视为一个缓冲器,在其输出上重新生成输入频率(例如,fIN=100MHz,fOUT=100MHz)。通常将PLL的BANDWIDTH属性设置为Low,可以实现较强的抖动滤波,但要注意将BANDWIDTH设置为Low会导致PLL的静态偏差增大。
ISE软件中的PLL向导可以帮助生成各种PLL参数,还可以手动将PLL例化成一个组件。将PLL与IP核合并,IP核将包含并管理PLL。PLL有5种应用模型,下面分别介绍。
√ 时钟网络去歪斜。PLL的主要用途之一是时钟网络去歪斜。图1-26所示为这种模式下的PLL。O计数器之一的时钟输出用来驱动片内逻辑或I/O。反馈计数器用来控制输入时钟与输出时钟之间的精确相位关系(例如,当需要90°相移时)。右侧所示相关时钟的波形是输入时钟与输出时钟需要相位对齐的情况。这种PLL的配置方式最灵活,但它需要两个全局时钟网络。
图1-26 PLL使用两个BUFG的时钟去歪斜
√ 零延时缓冲器。如果系统中只有一个时钟,而这个时钟又需要驱动到所有的器件,为了保证时钟到达各目的器件之间的歪斜尽可能小,该如何实现这个应用呢?这时,就需要用PLL的零延时缓冲器的应用模式。如图1-27所示,其中,反馈信号在片外传递,经过了一段PCB板的走线。使用这种配置,可以保证在FPGA的时钟输入引脚和外部器件的时钟输入引脚时钟边沿是对齐的。很显然,在反馈路径中,PCB走线的最大延时是有限制的。
图1-27 零延时缓冲器
√ DCM驱动PLL。DCM提供了一种生成精确相移时钟的好方法,但是DCM不能降低参考时钟固有的抖动。PLL可用来降低DCM输出时钟抖动。如图1-28所示,将PLL配置成不引入任何相移(通过PLL的零延时)的模式,框图右侧所示为相关波形。当使用DCM的输出直接驱动PLL时,DCM和PLL必须同处在一个CMT模块内。这种实现方案在局部专用布线上产生的噪声量最小,因此是首选方案。不过,也可以把DCM输出CLK90连接到BUFG,再去驱动PLL的CLKIN输入。
图1-28 DCM驱动PLL以降低抖动
减少时钟抖动的另一种可选方案是在输入时钟抖动传入DCM之前用PLL将其清除。这样可以改善所有DCM的输出抖动,但DCM附加的任何抖动都仍会传到时钟输出。PLL和DCM应处在同一个CMT模块中,因为PLL与DCM之间存在用来支持零延时模式的专用资源。如果PLL和DCM不在同一个CMT中,那么唯一的连接就是通过一个能抑制歪斜可能性的BUFG。只要参考频率可以由一个PLL生成,则一个PLL即可驱动多个DCM。例如,如果将一个33MHz的参考时钟送入PLL,而设计用一个DCM在200MHz频率下工作,同时用另一个在100MHz频率下工作,那么VCO就可以在600MHz(Ml=18)频率下工作。可以对VCO的频率进行三分频以生成200MHz的时钟,同时可以对另一个计数器进行六分频以生成100MHz的时钟。
√ BRAM(Block RAM)模块。Spartan-6中的BRAM存储18Kbit数据,能配置成两个独立的9Kbit BRAM或者一个18Kbit BRAM。每个RAM可以通过两个端口寻址,也可以配置成单口RAM。BRAM包含输出寄存器以增加流水线性能。BRAM在器件中按列排列,其数量取决于Spartan-6器件的容量。BRAM的功能介绍如下。
每个BRAM的存储容量可达18Kbit,一个BRAM可以拆成两个独立的9Kbit,也可以作为一个18Kbit。
每个9Kbit BRAM可以设置成简单双端口模式,从而将BRAM的数据宽度加倍到36bit。简单双端口模式的定义是具有带独立时钟的一个只读端口和一个只写端口。
分离的同步置位/复位引脚,独立控制输出寄存器和锁存器的置位/复位操作。可以更好地和其他FPGA系列保持兼容。
18bit或36bit宽的端口有不同的写允许信号,此功能常用于对片上微处理器的接口连接。
根据写使能(WE)引脚的状态,所有输出均具有读功能或边写边读功能。边写边读输出具有先写WRITE_FIRST、先读READ_FIRST和不变化NO_CHANGE 3种操作模式。
写操作需要一个时钟。
读操作需要一个时钟。
所有输出端口均有锁存。输出端口的状态在端口再次执行读或写操作之前保持不变。默认的BRAM输出是采用锁存器模式。
输出数据通路有一个可选内部流水线寄存器。强烈建议使用该寄存器模式,这样可使BRAM工作时钟速率较高,但会增加一个时钟周期的延时。
√ PLL到PLL的连接。可以级联PLL,以便生成更大范围的时钟频率。下面公式所示为最终输出频率与输入频率之间的关系。图1-29所示为两个PLL的级联,第一个PLL的输出连接到BUFG,再连接第二个PLL的CLKIN引脚。此路径具有最小的器件抖动。
图1-29 PLL驱动PLL
Spartan-6的BRAM同其他Xilinx FPGA BRAM类似,支持写/读同步操作,两个端口对称且完全独立,共享数据,每个端口根据需要可以改变其位宽和深度。存储器内容可在配置比特流时进行清除或设置。每个BRAM可以配置成完全的双口RAM,有18Kbit的存储空间和两个完全独立的访问口(A口和B口),结构对称,A口B口有独立的地址、数据输入、数据输出、时钟、时钟允许和写允许信号。数据可以写入其中的一个口或者两个口,也可以从一个口或者两个口读出,如图1-30所示。
需要注意的是,当两个端口同时对同一个地址操作时,由于双端口RAM内部没有专门的监控逻辑,因此需要用户监控,以免冲突。两个端口同时对同一个地址的操作不会损坏该物理空间。
图1-30 全双口RAM
(4) DSP模块XtremeDSP
为了适应越来越复杂的DSP运算,Spartan-6在Spartan 3A DSP模块DSP48A的基础上不断进行功能扩展,推出了功能更强大的DSP48A1 SLICE。
图1-31所示为DSP48A1功能框图,算术部分包含18位预加器、2个48位数据输入的复用器(输出X和Z)、18×18位二进制补码乘法器,跟随一个48位宽的符号可扩展的后加法器/减法器/累加器。
图1-31 DSP48A1功能框图
DSP48A1的数据和控制输入连接到算术和逻辑部分。A和B输入通道上有两级流水线寄存器。其他数据和控制输入通道也有一级流水线寄存器。在使用流水线寄存器的情况下最高运行速率为250MHz(在最低速度等级器件中)。该结构适应DSP应用中的众多功能,其可编程流水结构、48位内部总线、易于实现两级DSP48A1的级联的特性增强了它的功能。DSP48A1主要由以下几部分组成。
① 端口
√ A、B、C、D、M和P端口逻辑。DSP48A1有4个输入数据通道(A、B、C和D)和一个数据输出通道(P),A、B和D口为18位宽,C口为48位宽,P口为48位宽,如图1-32所示。DSP48A1还有一个级联数据输入通道(B cascade)和一个级联数据输出通道(P cascade),提供相邻DSP48A1之间的输入和输出级联功能。B cascade是一个专用资源,可以设置其属性B_INPUT,作为相邻DSP48A1的B口输入。DSP48A1还具有CIN输入和CARRYOUT输出,主要用于实现相邻DSP48A1的并行乘累加运算。级联数据输入PCIN也是一个同相邻DSP48A1相连的专用资源,通过Z MUX(OPMODE3:2)动态选择。
图1-32 DSP48A1详细图
M口是乘法器的36位原始输出,也可选择直接和FPGA逻辑相连,适应多种DSP运算。
18位的D和B口可作为18位预加器的输入,可以旁路预加器,也可以设置OPMODE[4],将预加器的输出连接到乘法器的输入。
18位的A和B口提供18×18乘法器输入,D、A和B可以旁路乘法器,作为X复用器的输入。48位的C口用于Z复用器的通用输入,完成加或减运算。
A口的25位和B口的18位数据是25×18乘法器的输入。每个DSP48A1都能完成乘加、乘减等操作。A口和B口可以合并跳过乘法器作为X复用器的输入。
复用器由配置位控制,设置信号的直通、寄存器输入或者级联输入。数据端口寄存器允许用于在增加时钟频率与数据延时之间平衡。乘法器和加法器之间的流水线寄存器为M寄存器。
INMODE[3:0]是DSP48A1中新增的控制位,这些位可以控制A和D输入寄存器与预加器的函数。
√ OPMODE端口。OPMODE端口支持两种输入方式:直通或者通过寄存器pipeline。使用寄存功能,可以提高DSP48A1的性能。
√ X和Z多路选择器。OPMODE提供了动态改变DSP48A1功能的方法, OPMODE的控制位对应X和Z多路选择器的选择位。多路选择器的输出作为后加法器/减法器的操作数。
√ 进位输入逻辑。进位输入逻辑是OPMODE[5]和CIN的函数。可能的进位输入在X和Z复用器的输出之前“会合”,在某种意义上,X和Z复用器函数复制了进位输入信号到进位逻辑。OPMODE和CARRYINSEL必须正确设置,确保正确选择进位输入(CIN)。
② 算术功能
√ 预加器。预加器/预减器的输出是OPMODE[6]和B、D数据的函数。OPMODE[6]为“1”时定义为减法操作。
√ 乘法器。如图1-33所示,二进制补码乘法器输入为18位的二进制补码,产生36位补码输出。输出可以通过逻辑右移17位,级联成更宽位数的乘法器。将输入操作数的最高位设置成0,则乘法器就能实现无符号算术运算。寄存器MREG是乘法器的输出寄存器,可以在增加一个时钟周期延时的情况下,增加乘法器性能。乘法器的36位输出可以作为X复用器的输入,或者通过M口(MFOUT[35:0])与FPGA内部逻辑相连。乘法器的36位输出可以作为X复用器的输入,或者通过M口(MFOUT[35:0])与FPGA内部逻辑相连。
图1-33 DSP48A1内的乘法器
√ 加法器/减法器/累加器,二进制补码乘法器输入为18位的二进制补码,产生36位补码输出。输出可以通过逻辑右移17位,级联成更宽位数的乘法器。加法器/减法器/累加器的输出是OPMODE和输入数据的函数,由OPMODE[3:0]选择哪个输入到X/Z复用器,再到加法器/减法器/累加器功能块。加法或者减法操作由OPMODE[7]控制,OPMODE[7]为“1”代表减法。X多路选择器的输出与CIN相加,产生的结果与Z的输出相加/减。分析DSP48A1结构后我们知道,用它可以完成非常复杂的DSP功能,如FIR滤波器等,极大地提高了数字处理的能力。
(5) SelectIO资源
Spartan-6有丰富的I/O资源,包括SelectIO和RocketIO。
Spartan-6每个I/O片(Tile)包含两个IOB、两个ILOGIC2、两个OLOGIC2和两个IODELAY2,如图1-34所示。这儿将分以下几个方面介绍Spartan-6的SelectIO资源:
√ SelectIO的电气特性;
√ SelectIO的逻辑资源(ILOGIC2、OLOGIC2);
√ SelectIO的高级逻辑资源(ISERDES、OSERDES、Bitslip)。
图1-34 I/O片结构图
① SelectIO IOB的电气特性
所有的Spartan-6 FPGA有高性能的可配置SelectIO驱动器与接收器,支持非常广泛的接口标准。可以通过编程控制I/O的输出强度、斜率以及片上终端OCT。每个IQB包含输入、输出和三态SelectIO驱动器。单端I/O标准(LVCMOS、LVTTL、HSTL、SSTL、PCI)和差分I/O标准(LVDS、RSDS、TMDS、差分HSTL和SSTL)进行配置。
Xilinx软件库提供了很多Spartan-6 I/O的原语,包括用于单端信号的IBUF (输入缓冲器)、IBUFG(时钟输入缓冲器)、OBUF(输出缓冲器)、OBUFT (三态输出缓冲器)和IOBUF(输入/输出缓冲器);以及用于差分信号的IBUFDS(输入缓冲器)、IBUFGDS(时钟输入缓冲器)、OBUFDS(输出缓冲器)、OBUFTDS(三态输出缓冲器)和IOBUFDS(输入/输出缓冲器)。
② SelectIO的逻辑资源
SelectIO的逻辑资源是指I/O驱动器与接收器之后的逻辑,包含了Spartan-6 FPGA的所有基本I/O逻辑资源,如图1-35所示。其中包括的资源为组合输入/输出、三态输出控制、寄存器输入/输出、寄存器三态输出控制、双倍数据速率(DDR)输入/输出、DDR输出三态控制、IODELAY2提供对高分辨率可调延时单元的控制、支持NONE、C0和C1三种对齐模式的DDR输出、支持NONE、C0和C1三种对齐模式的DDR输入、ISERDES和OSERDES。
图1-35 I/O片内的SelectIO逻辑资源
一个I/O片(IOI)管理两个IOB。IOI包含两个单端输入/输出,或者一个差分输入/输出的完整电路和一个内部互联模块。两个IOB组合在一起是为支持高速的差分接口。在单端模式下,主IOB驱动引脚P,从IOB驱动引脚N。在差分模式下,主从IOB组合在一起可以实现串/并转换,其数据速率是单端模式下的1~2倍。每个I/O支持3种配置模式:锁存型I/O、非锁型I/O和寄存器型I/O。I/O还可以配置为2:1/3:1/4:1的SERDES。锁存/寄存器时钟来自GCLK驱动的全局时钟网络或者高速I/O时钟网络。IODELAY2是一种可选资源,设计者可以根据需要在输入/输出路径上加入此延时模块, IODELAY2的延时是可编程的,可以通过DRP指定或者通过例化IODELAY2原语指定。此延时可以是固定延时,也可以是可变延时。
③ ILOGIC2资源支持功能
包括:IDDR(NONE、C0或C1)模式和异步/组合逻辑。
√ 异步/组合逻辑。当有下列情况之一时,① FPGA的输入数据与内部逻辑直接相连,而没有用寄存器;② “打包I/O寄存器/锁存器到IOB中”的属性设置为OFF,软件会自动生成组合通路,使输入驱动器与FPGA内部逻辑资源直接连接。
√ IDDR模式。Spartan-6器件的ILOGIC2中有专用寄存器来实现输入双倍数据速率(DDR)寄存器。IDDR2的属性DDR_ALIGNMENT有3种模式:NONE、C0和C1。在某些情况下,输入数据必须同步到一个时钟域中,通常C0同步。但在频率比较高的情况下,这种同步相对比较困难,因为有效时间仅为时钟周期的一半(50%占空比的情况下)。Spartan-6器件中的IDDR2包含了专用的逻辑,可以在ILOGIC2内部进行时钟域的同步。当DDR_ALIGNMENT为C0(或Cl),信号Q0(Q1)在Cl(C0)再次寄存,通过内部互联将输入数据同步到同一时钟域。
④ 可编程延时单元IODELAY2
每个IOB包含一个延时单元,可以配置成输入延时或者输出延时,当引脚用作双向口时,还可以通过T端来控制输入/输出延时的切换。Spartan-6中IODELAY2的延时不会自动补偿温度或电压带来的延时差异,但是用户可以通过精确计算来设置IODELAY2的具体延时值。8位延时值对应0~255个延时Tap,该延时值的最低3位控制RING晶振的起始点。该晶振由输入信号触发,经过0~7个Tap的延时之后,其输出作为时钟,用来控制5位计数器。5位计数器中装载了延时值的高5位,它会一直在0~31间循环,直到它的输出翻转到最初输入到该模块时的输入值Data Input。延时精度范围为1~255 Tap。此延时单元有两个局限:第一,延时最大值为1个位周期,超过此限制,接收数据会出错;第二,在下一个边沿到来之前,必须完成对第一个边沿的处理,这种情况会发生在接收高速数据流时。避免上述两个局限有以下两种办法。
√ 对于第一个限制,通过确保延时值小于一个输入数据的位周期(1UI)就可以避免,通常设置为0.5UI,使数据釆样点位于眼图的中心。
√ 对于第二个限制,可以通过两个延时链解决:一个延时链延时输入数据的正值部分,另一个延时链延时输入数据的负值部分,这个处理机制的价值在于通过设置两个延时链的不同延时值,校正了输入数据的占空比。读者可以在设计中调用IODRP2原语使用此功能。
(6) MCB模块
Spartan-6器件具有2个或4个专用嵌入式多端口存储器控制器模块(MCB),实现了到4个常见存储器标准的简单连接—DDR3、DDR2、DDR和LPDDR (移动DDR)。Spartan-6器件为专用MCB模块提供了高达800Mbit/s的数据速率,并且其存储器接口性能是竞争低成本FPGA解决方案的2倍。使用专用存储器控制器还有节省功耗的优势,特别是它支持低功耗DDR(LPDDR)标准。
(7) GTP模块
Spartan-6 LXT FPGA可提供多达8个3.125Gbit/s的GTP的收发器和一个集成的PCI Express兼容硬核。两者都源于成熟可靠的Virtex技术,为串行连接提供了业界最低风险和最低成本的解决方案。
(8) PCIE端点模块
Spartan-6 FPGA系列为消费、汽车、无线和其他价格敏感或大批量市场提供了低风险、低成本的串行连接解决方案。集成端点模块还具有许多方便使用的功能,可简化设计进程,以及为优化PCIE端点应用的配置,同时还有更多的资源支持以提供完整的PCIE解决方案。
2.Virtex-6系列
Virtex-6是Xilinx在2009年2月推出的新一代旗舰产品,采用了第三代Xilinx ASMBL架构、40nm工艺,可提供多达760 000个逻辑单元,为业界成本最低、功耗最低、密度最高、性能最高、带宽最大的FPGA。该产品在硬内核IP、收发器以及开发工具支持方面做了很大的优化,在追求更高带宽的同时,支持更广泛的通信标准和更高的性能。
本节将详细介绍Virtex-6系列器件的内部模块,以便读者对Virtex-6系列FPGA内部模块有一个较深入的认识。因为只有深入了解了FPGA的内部结构,才能有效地利用它,这可以在很大程度上提高设计者的设计优化能力——用较少的资源,实现较多的功能、较高的性能。
(1)可配置逻辑模块(CLB)
CLB是实现时序电路和组合电路的主要逻辑资源。
Virtex-6的每个CLB模块包含2个SLICE,每个CLB通过交换矩阵与外部通用逻辑阵列相连,如图1-36和图1-37所示。CLB中的两个SLICE之间没有直接连接。
图1-36 CLB中的Slice序列
图1-37 CLB位置排列
在 Virtex-6中,SLICE分为SLICEX、SLICEL 和SLICEM 3种:SLICEX不具有存储功能,也没有进位链;SLICEL不具有存储功能,但包含进位链;SLICEM具有存储/移位寄存器功能,也包含进位链。
每个SLICE包含4个LUT和8个存储单元,这些基本单元能提供逻辑、算术和ROM功能。除了这些基本功能,还有一些SLICE具有分布式RAM和移位寄存器功能,这些SLICE又被称为SLICEM。
CLB可以实现的功能见表1-5。
表1-5 CLB功能
SLICE结构如图1-38所示,每个SLICE包含逻辑函数发生器(即LUT)、存储元件、多功能复用器(MUXF)、进位逻辑和算法单元(MULT_AND)等资源。
图1-38 SLICE结构图
图1-38 SLICE结构图(续)
① 查找表(LUT)
Virtex-6 FPGA的函数发生器由6输入查找表实现。每个LUT有6个独立输入(A1~A6)和两个独立输出(O5和O6),可以实现任意6输入布尔函数。同时,每个LUT在相同的输入情况下,也可以实现两个任意5输入布尔函数。如果是6输入函数,仅有06输出。O5和O6分别对应两个5输入函数发生器的输出,在这种情况下,A6由软件设置为高电平。LUT的延时与所实现的函数无关。
LUT可以实现组合逻辑、ROM、分布式RAM、移位寄存器等功能。
√ 组合逻辑:所有的LUT可以实现任意6输入布尔函数。
√ ROM:所有的LUT可以实现一个64×1位ROM。有3种配置方式,分别是ROM 64×1、ROM 128×1和ROM 256×1。SLICEM和SLICEL中的ROM可以级联成更宽或者更深的ROM配置。
√ 分布式RAM(只能在SLICEM中使用):SLICEM中的LUT可以配置成一种被称为分布式RAM的同步RAM。SLICEM中的多个LUT可以灵活组合起来,以存储更多数据。
√ 移位寄存器(只能在SLICEM中使用):SLICEM的LUT还可配置成32位移位寄存器,无需使用SLICE中提供的触发器。以这种方法使用的LUT可以将串行数据延迟1~32个时钟周期之间的任意长度。移位寄存器的移位输入SHIFTIN和移位输出SHIFTOUT用来将LUT级联成更大的移位寄存器,一个CLB中的4个LUT可以级联,产生128个时钟周期的延时。CLB之间也可以连接组成移位寄存器,用于平衡数据流水线的时序。
② 存储元件
Virtex-6的每个SLICE都有存储元件,可以实现存储功能,可以配置成边沿触发式的D型触发器或电平敏感型的锁存器,如图1-39所示。
③ 复用器(MUX)
在一个SLICE中,除了包含LUT外,还包含3个复用器(F7AMUX、F7BMUX和F8MUX),用户可以将4个函数发生器组合在一起,构成7输入或者8输入的函数。多于8个输入的函数,可以用多个SLICE来实现。
图1-39 SLICE中的寄存器/锁存器配置
复用器F7AMUX、F7BMUX和F8MUX通常和函数发生器或者片上逻辑一起实现多种复用器。可以实现以下几种复用器:
√ 1个LUT实现4:1多路复用器;
√ 2个LUT实现8:1多路复用器;
√ 4个LUT实现16:1多路复用器。
④ 快速先行进位逻辑(CarryLogic)
Virtex-6的每个CLB有两条独立的进位链,用于实现快速算术加减运算,它解决了多位宽加法、乘法从最低位向最高位进位的延时问题。先行进位逻辑有专用的进位通路和进位复用器(MUXCY),可用来级联函数发生器(LUT),以实现更宽、更复杂的逻辑函数,提高CLB模块的处理速度。Virtex-6中的进位链是上行进位链,每个SLICE具有4位的高度。考虑到进位链的上行结构特点,在设计中,要特别注意进位链的长度,因为当进位链的长度超出一列时,进位链会导致延时变长很多,从而影响时序。
⑤ 算术逻辑(MULT_AND)
算术逻辑包括一个异或门(XOR)和一个专用与门(MULT_AND),一个异或门可以使一个SLICE实现2位全加操作,专用与门可提高乘法器的效率。
(2)时钟资源
为了更好地控制时钟,Virtex-6器件分成若干个时钟区域,最小器件有6个区域,最大器件有18个区域。每个时钟区域高40个CLB。在时钟设计中,推荐使用片上专用的时钟资源,不推荐使用本地时钟(如逻辑产生的时钟)。
每个Virtex-6的中间列包含了专门配置引脚(CFG),该列的其余区域为CLB。其右边排列着一个CMT列。每个区域(40个CLB高)对应一个CMT。一个CMT包含2个混合模式时钟管理单元(MMCM),还有32个垂直全局时钟树。每个时钟区域的中间方向有一个时钟行(HROW),包含12个水平时钟线、6个BUFR和最多12个BUFH。Virtex-6的时钟资源图如图1-40所示。
每个Virtex-6 FPGA中间列的左右两边各有一个I/O列,分别标号为IOCL和IOCR,I/O列和中间列之间是CLB。
每个区域BANK的中间有一个水平时钟行(HROW),HROW包含水平时钟线、BUFG和BUFH。内部I/O列包含8个全局时钟引脚对(GC),所有的IO列包含4个Clock-Capable引脚对(CC),可以连到BUFIO和BUFR。每个BANK的4个CC中的两个可以连到相邻区域的BUFIO上。另外,中间列的BUFR和CC脚可以直接驱动同一个区域的MMCM,或者通过垂直全局时钟线间接驱动BUFG。
图1-40 Virtex-6的时钟资源图
Virtex-6器件的片内时钟资源为片内的同步元件提供时钟,片内时钟资源有3种类型。
① 全局时钟资源
全局时钟是一种专用互联网络,它可以降低时钟歪斜、占空比失真和功耗,提高抖动容限。Virtex-6的全局时钟资源设计了专用时钟缓冲与驱动结构,从而使全局时钟到达CLB、IOB和BRAM的延时最小。
② 全局时钟输入
Virtex-6全局时钟输入包含专用的全局时钟输入管脚和全局输入缓冲器:全局时钟输入管脚可以直接连接外部单端或差分时钟;全局输入缓冲器(IBUFG)是FPGA内部与专用全局时钟输入管脚相连的首级全局缓冲器。
Virtex-6器件有8个全局时钟输入。8个全局时钟输入可以连接到电路板上的8个时钟输入。时钟输入管脚可以不用作时钟输入引脚,而用作普通I/O。
外部单端或差分时钟通过专用全局时钟输入引脚进入FPGA,在FPGA内部,信号必须接入全局输入缓冲器(IBUFG),否则在布局布线时会报错。可以在HDL代码中例化全局输入缓冲器,其原语见表1-6。
表1-6 全局输入缓冲器(IBUFG)的原语
√ 全局时钟缓冲器。每个Virtex-6器件有32个全局时钟缓冲器,时钟信号只有经过BUFG之后才可以驱动全局时钟网络。一个全局时钟输入能直接从差分全局时钟引脚对的P端连接到全局时钟缓冲器的输入。每个差分全局时钟引脚对可以连接到PCB上的一个差分或单端时钟。如果使用单端时钟,则必须使用引脚对的P端,因为只有这一引脚上存在直接连接。必须将一个单端时钟连接到差分全局时钟引脚的正(P)端。如果单端时钟连接到差分引脚对的P端,则不能用其N端作为另一个单端时钟输入。不过,可以将其用作普通I/O。全局时钟缓冲器的输入源包括以下几种:
• 全局时钟输入;
• 内部I/O列的同一区域Clock-Capable时钟输入;
• 时钟管理单元(CMT);
• 其他全局时钟缓冲器的输出(BUFG);
• 通用互联;
• 区域时钟缓冲器(BUFR);
• 吉比特收发器。
Virtex-6 FPGA的CC输入通过MMCM列中的垂直时钟网络间接驱动BUFG。32个BUFG分成两组,每组16个,分别位于器件的顶部和底部。顶部的MMCM只能驱动顶部的16个BUFG,底部的MMCM只能驱动底部的BUFG。全局时钟缓冲器还可配置成复用器,可以在两个输入时钟之间切换。这两个时钟可以是同步的,也可以是异步的,复用器的输出是无毛刺的时钟。
√ 全局时钟树和时钟网络(GCLK)。Virtex-6中的全局时钟树和时钟网络如果未被使用,它就是断开的,这可以降低功耗。另外,时钟树还具有对负载/扇出的管理功能。所有全局时钟线和缓冲器都以差分形式实现,这有助于改善占空比,提高对共模噪声的抑制能力。在Virtex-6架构中,全局时钟线不仅可以用作时钟,还可以当作其他信号线,例如扇出较大的信号。
√ 时钟区域。Virtex-6通过使用时钟区域,改善了时钟的分配性能。每个时钟区域最多可有12个全局时钟。这12个全局时钟可由32个BUFG的任意12个驱动。时钟区域的大小固定为40个CLB高,半个晶片宽。因此,大尺寸的器件有更多的时钟区域。CMT和全局时钟资源位于包含配置引脚中间列的右边,如图1-41所示。
图1-41 XC6VLX75T的时钟区域
③ 区域时钟资源
区域时钟网络是独立于全局时钟网络的。它与全局时钟不同,区域时钟信号BUFR的作用区域最多为3个时钟区域,这些网络对于源同步接口设计尤其有用。区域时钟控制资源和网络由以下通路和组件构成。
√ Clock-Capable I/O。每个时钟区域中有4个Clock-Capable I/O引脚对。每个BANK中有4个专用Clock-Capable I/O位置。当用作时钟输入时,ClockCapable引脚可以驱动BUFIO和BUFR。如果用作单端时钟引脚,如“全局时钟缓冲器”中所述,外部单端时钟必须接到引脚对的P端,因为只有这一引脚上存在直接连接。
√ I/O时钟缓冲器(BUFIO)。BUFIO是用来驱动I/O列内的专用时钟网络,这个专用的时钟网络独立于全局时钟资源,适合采集源同步数据。BUFIO只能由位于同一时钟区域的Clock-Capable I/O驱动。一个时钟区域有4个BURIO,其中的两个可以驱动相邻区域的I/O时钟网络。BUFIO不能驱动逻辑资源(CLB、BRAM等),因为I/O时钟网络只存在于I/O列中。
√ 区域时钟缓冲器(BUFR)。BUFR可以驱动其所在时钟区域中的6个区域时钟网络和相邻区域中的6个时钟网络。与BUFIO不同,BUFR不仅可以驱动其所在时钟区域和相邻时钟区域中的I/O逻辑,还可以驱动CLB、BRAM等。BUFR可由CC引脚、本地时钟、GT以及MMCM高性能时钟驱动。BUFR对于要求跨时钟域或串/并转换的源同步应用来说是理想的选择。除了全局时钟树和全局时钟网络,Virtex-6器件还包含区域时钟网络。和全局时钟树一样,这些区域时钟树也是为低歪斜SKEW和低功耗操作设计的。区域时钟网络的传播是仅限于一个时钟区域。一个时钟区域包含6个独立的区域时钟网络。要进入区域时钟网络,必须例化BUFR。一个BUFR最多可以驱动两个相邻时钟区域中的区域时钟,如图1-42所示。此时,BUFR的作用区域为3个时钟区域。顶部和底部区域中的BUFR只能连接相邻的一个时钟区域,也就是说,顶部的BUFR连接它所在的下面一个相邻区域。底部的BUFR只能连接它所在的上边一个相邻区域。因此,底部和顶部BUFR的作用区域为两个时钟区域。
图1-42 区域时钟和时钟网络
√ 水平时钟缓冲器(BUFH)。BUFH驱动区域中的水平全局时钟树,如图1-43所示,每个区域有12个BUFH,每个BUFH有一个CE脚,该引脚可控制时钟动态开关。BUFH可由以下几种资源驱动:
• 同一区域的MMCM输出;
• BUFG输出;
• 局部互联;
• 同一区域内部inner columns的CC引脚。
图1-43 时钟区域中的BUFH位置图
可以通过时钟CE脚关掉时钟来节省功耗。同BUFG驱动两个相邻区域相比,BUFH的功耗更低。
√ 高性能时钟(High Performance Clock,HPC)。Virtex-6的每个I/O列包含4个HPC。这些时钟由MMCM电源驱动,不由VCCINT供电,因此,这些时钟能改善抖动和占空比。HPC结构如图1-44所示,在I/O列中, HPC连接BUFIO,驱动I/O逻辑。4个HPC中的两个可以不通过多区域BUFIO直接驱动I/O BANK(上和下BANK)。HPC可以不通过另一个时钟缓冲器直接连接到OSERDES,提供了一个改善抖动和占空比性能的时钟。HPC没有专用缓冲器与它相连,ISE软件自动检查设计中IOLOGIC的连接,确定HPC的连接。HPC能驱动同一区域中的BUFR,支持源同步接口设计。
④ I/O时钟
第三种时钟控制资源是I/O时钟,其速度非常快,可用于局部化的I/O串行器/解串器电路。I/O时钟信号只驱动一个区域。这些I/O时钟网络对于同步设计尤其有用。
图1-44 HPC结构图
(3)混合模式时钟管理器(MMCM)
除了丰富的时钟网络以外,Xilinx还提供了强大的时钟管理功能,可提供更多、更灵活的时钟。Xilinx在时钟管理上不断改进,从Virtex-4的纯数字管理单元DCM,发展到Virtex-5 CMT(包含PLL),再到Virtex-6基于PLL的新型混合模式时钟管理器(Mixed-Mode Clock Manager,MMCM),实现了最低的抖动和抖动滤波,为高性能的FPGA设计提供更高性能的时钟管理功能。
Virtex-6的CMT包含两个MMCM,处于同一个CMT中的两个MMCM之间有专门布线资源。每个时钟片中的MMCM可以独立使用,也可以将MMCM之间的专门布线资源释放出来供其他设计单元使用。
MMCM之间的连接关系及输入源的框图如图1-45所示。同前一代Virtex-5的PLL相比,扩充了时钟输入,允许多个时钟源作为MMCM的输入参考时钟。
图1-45 Virtex-6 FPGA CMT框图
Virtex-6最多有9个CMT片,输入多路复用器从IBUFG、BUFG、BUFR、GTX(仅CLKIN)或通用布线(不推荐)中选择参考时钟和反馈时钟。
Virtex-6中的PLL内部结构如图1-46所示。每个时钟输入有一个可编程计数器D。相位/频率检测器(PFD)比较输入(参考)时钟和反馈时钟的相位和频率。仅考虑上升沿即可,因为只要保持最小High/Low脉冲,则占空比无关紧要。PFD用来生成与两个时钟之间的相位和频率差成比例的信号。此信号驱动电荷泵(CP)和环路滤波器(LF),以便为VCO生成参考电压。PFD为电荷泵和环路滤波器生成一个上升或下降信号,以确定VCO应该在较高频率还是较低频率工作。当VCO工作频率过高时,PFD触发一个下降信号,致使控制电压下降,从而降低VCO的工作频率。当VCO工作频率过低时,PFD触发一个上升信号,致使控制电压上升,从而提高VCO的工作频率。VCO产生8个输出相位和一个可变相位的精细相位输出。每个输出相位都可选作输出计数器的参考时钟。可以根据给定的客户设计对每个计数器独立编程。另外还提供了一个专用计数器M,此计数器控制PLL的反馈时钟,以实现大范围频率合成。
除了整数分频输出计数器,Virtex-6器件通过组合O0/O5和/或M/O6寄存器,可以实现小数计数器。使用小数模式时,O5和O6输出不可用。
图1-46 PLL内部结构图
Virtex-6 MMCM提供了广泛而强大的时钟管理功能,分别介绍如下。
① 时钟去歪斜
在许多情况下,设计人员在其I/O时序预算中不希望在时钟网络上有延迟,这时可以使用MMCM来补偿时钟网络的延迟。一个与参考时钟CLKIN的频率相匹配的时钟输出(通常是CLKFBOUT)连接到BUFG,并且反馈到MMCM的CLKFBIN反馈引脚。其余输出仍可通过分频产生更多输出频率。在这种情况下,所有输出时钟对于输入参考时钟都具有固定的相位关系。
② 基于整数分频器的数字频率合成
MMCM还可以用作独立频率合成器。在这种应用中,PLL不能用于时钟网络去歪斜,而是用它来生成输出时钟频率。在这种模式下,PLL反馈通路为internal模式,这样所有布线保留为局部布线,使抖动最小。
③ 基于小数分频器的数字频率合成
Virtex-6在CLKOUT0输出和/或M反馈路径上支持非整数分频。如果CLKOUT0的计数器用于小数模式,那么CLKOUT5计数器的输出不可用。类似,在M反馈计数器使用时,CLKOUT6计数器输出也不可用。小数分频的精度是1/8或0.125度。在小数分频的情况下,占空比和相移不可编程。
④ 抖动滤波器
MMCM可以降低参考时钟上固有的抖动。作为抖动滤波器,MMCM通常被看作是一个缓冲器,在输出上重新生成输入频率(例如,fIN=100MHz, fOUT=100MHz)。一般来说,通过使用MMCM的BANDWIDTH属性并将其设置为Low,可以实现较强的抖动过滤。但将BANDWIDTH设置为Low会导致MMCM的静态偏差增大。
⑤ 相移
在许多情况下,各时钟之间需要有相移。MMCM可以通过多个选项实现相移。最好通过软件工具选择合适的相移模式。
√ 静态相移模式。VCO能够以45°的间隔提供8个移相时钟,静态相移模式通过选择这8个VCO输出相移中的一个来实现。因此以时间为单位的相移分辨率定义为:或。因为VCO具有明确的工作范围,所以可以把相移分辨率的范围界定为从1/8fVCO_MIN到1/8fVCO_MAX。VCO的频率越高,相移分辨率就越高。各输出计数器可分别编程,允许每个计数器在VCO的输出频率的基础上具有不同的相移。
√ IFPS模式。Virtex-6还提供了一种IPFS模式相移,支持固定或动态模式。在该模式下,相移实现线性移位特性,和CLKOUT_DIVIDE值无关,只取决于VCO频率。MMCM以为步长进行相位调节。相移值可在配置过程中固定,也可动态改变。
CLKOUT计数器可分别设置成静态相移模式或者IPFS模式,固定相移模式下,动态相移接口不能被使用。
√ 动态相移接口。Virtex-6可以由PSEN、PSINCDEC、PSCLK和PSDONE控制动态相移。MMCM锁住后,CLKOUT_PHASE属性决定初始相位,通常情况下,可以不设置初始相移。MMCM根据PSEN、PSINCDEC、PSCLK和PSDONE信号的动作,改变输出相移。步长为VCO时钟周期的1/56。信号时序图可参考图1-47。
图1-47 动态相移接口时序图
如图1-48所示,MMCM_BASE是基本时钟管理模块的原语,实现MMCM的基本功能;MMCM_ADV是在MMCM_BASE的基础上,增加了输入时钟切换、同一CMT中MMCM之间连接、动态相移调节等功能。
图1-48 MMCM的两种原语
(4) BRAM(Block RAM)模块
Virtex-6中嵌入了BRAM,大大拓展了FPGA的应用范围和应用的灵活性。BRAM可被配置为单端口RAM、双端口RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。Virtex-6中的BRAM是双端口RAM,每个BRAM存储36Kbit数据,支持写和读同步操作,两个端口对称且完全独立,共享存储的数据,可以改变每个端口的位宽和深度。36Kbit可配置成64K×1(和相邻36Kbit BRAM级联)、32K×1、16K×2、8K×4、4K×9、2K×18、1K× 36或512×72的简单双口RAM;每个18Kbit的BRAM也可配置成16K×1、8K×2、4K×4、2K×9、1K×18或512×36的简单双口RAM。存储器内容可在配置比特流时设置。BRAM在写操作过程中,它的输出数据可以编程设置,或者是保持输出数据不变,或者反映正在写入的新数据,或者是正在被覆盖的旧数据。
① 双端口RAM和单端口RAM
全双口36Kbit BRAM有36Kbit的存储空间和两个独立的访问口——A口和B口。类似地,每个18Kbit RAM包含一个18Kbit的存储空间和两个全独立的访问口——A口和B口。结构是全对称的,数据可以写入其中的一个口或者两个口,也可以从一个口或者两个口读出。写操作是同步的,每个口有自己单独的地址、数据输入、数据输出、时钟、时钟允许和写允许信号。读操作也是同步的,并需要一个时钟边沿。
需要注意的是,当两个端口同时对同一个地址进行操作的时候,由于双端口RAM内部没有专门的监控逻辑,因此需要用户自己控制两个时钟,以避免冲突。两个端口同时对同一个地址的写操作虽然不会损坏该物理空间,但可能导致数据错误。
② FIFO
Virtex-6的BRAM中的专用逻辑让用户能够轻松地实现同步或异步FIFO,这样就不必为计数器、比较器或状态标记的生成使用其他CLB逻辑。Virtex-6中,FIFO可配置成18Kbit和36Kbit存储空间,对于18Kbit的FIFO,支持4K×4、2K×9、1K×18和512×36;对于36Kbit的FIFO,支持8K×4、4K×9、2K× 18、1K×36和512×72。
③ ECC内置纠错
当使用Virtex-6中的RAMB36E1(SPP模式)或者36Kbit FIFO(FIFO36E1)时,可以使能其中的ECC纠错功能。ECC占用72位宽,其中包括64位数据和8位汉明码,它可以产生汉明位并纠正输出的数据错误,但不会纠正存储器内容。另外,它还可以输出错误位置的地址。在写操作过程中生成8个保护位(ECCPARITY),与64位数据一起存到存储器中。这ECCPARITY位在每次读操作过程中用来纠正任意单位元错误或检测(但不纠正)任意双位元错误。
在读操作过程中,72位数据从存储器读出并馈入ECC解码器。ECC解码器生成两个输出状态(SBITERR和DBITERR),用来指示3种可能的读操作结果:无错误、已纠正单位元错误、检测到双位元错误。在标准ECC模式下,读操作不纠正存储器阵列中的错误,仅仅将已经纠正的数据送到DO。为了改善fMAX,可以将由DO_REG属性控制的可选寄存器用于数据输出(DO)、SBITERR和DBITERR。
Virtex-6中的ECC还增加了一个新的功能,能回读当前数据输出对应的存储地址,支持修复错位的数据位或者将该地址设置成无效。
(5) DSP模块XtremeDSP
为了适应越来越复杂的DSP运算,Virtex-6中嵌入了功能更强大的DSP48E1 SLICE,简化的DSP48E1模块如图1-49所示。
DSP48E1兼容Virtex-5的DSP48E,而且在以下两方面有所增强:
√ 带D寄存器的25位预加器,增加A通道的能力;
√ 在切换乘法(A*B)和加法(A:B)操作时,INMODE控制支持平衡流水线。
图1-49为简化的DSP48E1模块框图,可以看出,算术部分包含一个25位预加器、一个25×18二进制补码乘法器、3个48位的复用器,跟随一个48位符号可扩展的加法器/减法器/累加器或者2输入逻辑单元。如果使用了2输入逻辑单元,则此乘法器不能再被使用。
图1-49 简化的DSP48E1模块
DSP48E1兼容Virtex-5的DSP48E,而且在以下两方面有所增强。DSP48E1的数据和控制输入连接到算术和逻辑部分。A和B输入通道上有两级流水线寄存器;D和AD(AD为预加器内的中间寄存器)输入通道上有一级流水线寄存器。其他数据和控制输入通道也有一级流水线寄存器。最高操作频率可达600MHz。
大部分情况下,加法器/减法器/逻辑单元的输出是其输入的函数。输入由MUX、进位选择逻辑和乘法器阵列驱动。对应公式如下:
Adder/Sub输出=(Z±(X+Y+CIN))或Z−((X+Y+CIN)+1)
DSP48E1的内部结构如图1-50所示,主要由以下几部分组成。
图1-50 DSP48E1内部结构图
① 输入端口
√ 输入端口A、B、C和D。每个DSP48 SLICE有4个输入数据口——A、B、C和D:A口30位宽,B口18位宽,C口48位宽,D口25位宽。A口、D口和预加器的逻辑如图1-51所示;B口的逻辑如图1-52所示。A口的25位和B口的18位数据是25位×18位乘法器的输入。每个DSP48E1能完成乘加、乘减等操作。A口和B口可以合并跳过乘法器作为多路选择器X的输入。
A口和B口可以合并成48位宽的数据和48位宽的C口一起实现48位的加法/减法。DSP48E1 SLICE提供了两个级联数据输入通道(ACIN和BCIN),以及相邻DSP48E1 SLICE之间的级联输入数据流。级联路径ACIN为30位宽, BCIN为18位宽。
A、B、ACIN和BCIN数据通路上有0、1或2级流水线。数据端口寄存器可以通过延时提高时钟频率。属性AREG和BREG用于设置A口和B口的流水线级数。属性ACASCREG和BCASCREG用于设置ACOUT口和BCOUT口级联流水线的级数。DSP48E1通过控制多路选择器的控制位设置数据流的通路、寄存器和级联输入。
图1-51 A口、D口和预加器逻辑
图1-52 B口逻辑
INMODE[3:0]是DSP48E1中新增的控制位,这些位控制A和D输入寄存器与预加器的函数。48位的C口作为Y和Z多路选择器的输入,实现加法、减法、三输入加/减和逻辑函数。C输入也连到模式识别器上,实现函数取舍。
√ OPMODE、ALUMODE和CARRYINSEL端口逻辑。OPMODE、ALUMODE和CARRYINSEL端口逻辑支持输入控制信号的直通或寄存器输入。通过多路选择器的配置位可以选择直通或通过寄存器。OPMODE、ALUMODE和CARRYINSEL端口逻辑如图1-53所示。
√ X、Y和Z多路选择器。OPMODE提供了动态改变DSP48E1功能的方法, OPMODE的控制位对应X、Y和Z多路选择器的输出。这3个多路选择器的输出成为后面加/减法器的3个操作数。
图1-53 OPMODE、ALUMODE和CARRYINSEL端口逻辑
√ ALUMODE输入。4位ALUMODE控制第二级加/减/逻辑单元的行为,见表1-7。
表1-7 ALUMODE控制的DSP操作配置表
√ 进位输入逻辑。Virtex-6器件中的进位输入逻辑是3位CARRYINSEL信号的函数。输入逻辑如图1-54所示。所有可能的进位输入在X、Y和Z多路选择器之前“会合”。
② 输出端口
除ACOUT和BCOUT外的所有输出端口通过RSTP复位,CEP使能。ACOUT和BCOUT分别通过RSTA和RSTB复位。DSP48E1输出逻辑如图1-55所示。
图1-54 CARRYINSEL信号逻辑
图1-55 DSP48E1输出逻辑
√ 输出端口。DSP48E1有一个48位的输出端口P,这个输出端口能通过PCOUT通路连接(级联)相邻的DSP48E1。SLICE PCOUT连接到相邻DSP48E的Z多路选择器的输入口(PCIN)。该通路提供两个相邻DSP48E1的输出级联通路。
√ CARRYCASCOUT和CARRYOUT口。DSP48E1 SLICE的进位输出为4位宽,通过CARRYOUT输出到FPGA逻辑。CARRYOUT信号通过CARRYCASCOUT和相邻DSP48E1 SLICE级联,以实现更大的加法、减法、累加、乘累加函数。
√ MULTSIGNOUT端口逻辑。乘法器输出的最高位通过MULTSIGNOUT口级联到下一个DSP48E1 SLICE,仅用于扩展96位的MACC。
√ PATTERNDETECT和PATTERNBDETECT端口逻辑。DSP48E1 SLICE的输出增加了一个序列检测器,用于检测P总线是否与指定序列匹配,或者是否与指定序列的取反值相匹配。
√ 上溢和下溢端口逻辑。DSP48E1 SLICE利用模式检测器检测P[N(] N从1到46)是否有溢出,当有上溢或下溢发生时,DSP48E1输出OVERFLOW和UNDERFLOW信号。
③ 算术功能
√ 预加器。Virtex-6 FPGA DSP模块结构上的又一改变是在A寄存器路径上增加了一个预加器,实现预加或预减等操作。
√ 乘法器。Virtex-6 FPGA DSP模块内包含一个二进制补码乘法器,如图1-56所示。二进制补码乘法器的一个输入为25位的二进制补码,另一个为18位的二进制补码,产生43位结果输出。乘法器的86位输出包含两个43位部分乘积。乘法器和算法支持17位操作数右移,以对准宽乘法器的部分乘积(并行或顺序乘法)。级联通路作为Z多路选择器的输入,可以和相邻DSP48E1 SLICE的加法器/减法器相连。将输入操作数的最高位设置成0,则乘法器就能实现无符号算术。寄存器MREG是乘法器的输出可选流水线。
图1-56 DSP48E1内的乘法器
√ 加法器/减法器/逻辑单元。加法器/减法器/逻辑单元的输出是控制信号和输入数据的函数,加法器/减法器的输入由OPMODE和CARRYINSEL控制。ALUMODE设置加法器/减法器实现的功能。因此OPMODE、ALUMODE和CARRYINSEL信号一起设置加法器/减法器或逻辑单元实现的功能。
√ 2输入逻辑单元。通过OPMODE和ALUMODE的设置,可以在三输入加法/减法/逻辑单元的第二级实现逻辑函数。
(6) SelectIO模块
Virtex-6的每个I/O片(I/O Tile)包含两个IOB、两个ILOGIC、两个OLOGIC和两个IODELAY,如图1-57所示。
图1-57 I/O片结构图
① IOB
IOB包含输入、输出和三态SelectIO驱动器,支持单端I/O标准(LVCMOS、HSTL、SSTL)和差分I/O标准(LVDS、HT、LVPECL、BLVDS、差分HSTL和SSTL)。IOB、引脚及内部逻辑的连接如图1-58所示。
图1-58 IOB、引脚及内部逻辑连接图
IOB直接连接ILOGIC/OLOGIC对,该逻辑对包含输入和输出逻辑资源, LOGIC和OLOGIC可分别配置为ISERDES和OSERDES。
Xilinx软件库提供了大量与I/O相关的原语,在例化这些原语时,可以指定I/O标准。与单端I/O相关的原语包括IBUF(输入缓冲器)、IBUFG(时钟输入缓冲器)、OBUF(输出缓冲器)、OBUFT(三态输出缓冲器)和IOBUF (输入/输出缓冲器)。与差分I/O相关的原语包括IBUFDS(输入缓冲器)、IBUFGDS(时钟输入缓冲器)、OBUFDS(输出缓冲器)、OBUFTDS(三态输出缓冲器)、IOBUFDS(输入/输出缓冲器)、IBUFDS_DIFF_OUT(输入缓冲器)和IOBUFDS_DIFF_OUT(输入/输出缓冲器)。
② ILOGIC
ILOGIC的内部逻辑如图1-59所示,可以实现的操作包括:异步/组合逻辑、DDR模式(OPPOSITE_EDGE、SAME_EDGE或SAME_EDGE_PIPE LINED)、电平敏感型锁存器和边沿触发D型触发器。
图1-59 ILOGIC内部逻辑
√ 异步/组合逻辑。用来创建输入驱动器与FPGA内部资源之间的直接连接。当输入数据与FPGA内部逻辑之间存在直接(非寄存)连接,或者当“将I/O寄存器/锁存器合并到IOB中”的设置为OFF时,此通路被自动使用。
√ 输入DDR(IDDR)。Virtex-6器件的ILOGIC中有专用寄存器来实现输入双倍数据速率(DDR),可以通过例化IDDR的原语来使用此功能。IDDR只有一个时钟输入,下降沿数据由输入时钟的反相版本(在ILOGIC内完成反相)进行时钟控制。所有输入I/O模块的时钟均为完全复用,即ILOGIC或OLOGIC模块之间不共用时钟。IDDR支持以下3种操作模式:OPPOSITE_EDGE模式、SAME_EDGE模式和SAME_EDGE_PIPELINED模式。
SAME_EDGE和SAME_EDGE_PIPELINED与Virtex-5一样。这些模式允许设计人员在ILOGIC模块内部将下降沿数据转移到上升沿时钟域,以节省CLB和时钟资源并提高性能。这些模式是用DDR_CLKJEDGE属性来实现的。各模式下的时序图请参考图1-60、图1-61和图1-62。
图1-60 OPPOSITE_EDGE模式下的输入双倍数据速率
图1-61 SAME_EDGE模式下的输入双倍数据速率
图1-62 SAME_EDGE_PIPELINED模式下的输入双倍数据速率
③ OLOGIC资源
OLOGIC由两个主要模块组成,分别是输出数据通路和三态控制通路。这两个模块具有共同的时钟(CLK),但具有不同的使能信号——OCE和TCE。
输出通路和三态通路可独立配置为边沿触发的D型触发器、电平敏感型锁存器、异步/组合逻辑或者DDR模式。
√ 组合数据输出和三态控制路径。组合输出通路用来实现从FPGA内部逻辑到输出驱动器或输出驱动器控制端的直接连接。当FPGA的内部逻辑与输出数据或三态控制之间存在直接(不寄存)连接,或者当“将I/O寄存器/锁存器合并到IOB中”的设置为OFF时,此路径被使用。
√ 输出DDR(ODDR)。Virtex-6器件的OLOGIC中具有专用寄存器,用来实现DDR功能。要使用此功能,只需要例化ODDR。ODDR只有一个时钟输入,下降沿数据由输入时钟的反相时钟控制。ODDR支持两种操作模式:OPPOSITE_EDGE模式和SAME_EDGE模式。SAME_EDGE模式允许在ODDR时钟的上升沿将两个数据送至ODDR,以节省CLB和时钟资源并提高性能。OPPOSITE_EDGE模式使用时钟的两个沿以两倍吞吐量从FPGA内部釆集数据,两个输出都送至IOB的数据输入或三态控制输入。图1-63所示为使用OPPPOSITE_EDGE模式时输出DDR的时序图。图1-64所示为使用SAME_EDGE模式时输出DDR的时序图。
图1-63 OPPPOSITE_EDGE模式时的输出DDR时序图
图1-64 SAME EDGE模式时的输出DDR时序图
输出ODDR可以将时钟的一个副本传送到输出。将ODDR原语的D1固定为High,D2固定为Low,时钟与数据ODDR的时钟一样。这个方案可以确保输出数据与输出时钟延时的一致性。
④ IODELAY
每个I/O模块包含一个可编程绝对延时单元,称为IODELAY。IODELAY可以连接到ILOGIC/ISERDES或OLOGIC/OSERDES模块,也可同时连接到这两个模块。
IODELAY是具有32个Tap的环绕延时单元,具有标定的Tap分辨率。IODELAY可用于组合输入通路、寄存输入通路、组合输出通路或寄存输出通路,还可以在内部资源中直接使用。IODELAY允许各输入信号有独立的延时。延时单元可以被校验到一个绝对延时固定值(TIDELAYRESOLUTION),这个值不随工艺、电压和温度的变化而改变。
IODELAY有4种操作模式,分别是:零保持时间延迟模式(IDELAY_TYPE=DEFAULT)、固定延时模式(IDELAY_TYPE=FIXED)、可变延时模式(IDELAY_TYPE=VARIABLE)和可装载的可变延时模式(IDELAY_TYPE=VAR_LOADAB LE)。零保持时间延迟模式允许向后兼容,以使用Virtex-5器件中零保持时间延迟功能的设计,在这种模式下使用时,不需要例化IDELAYCTRL的原语。在固定延时模式中,延时值由属性IDELAY_VALUE确定的Tap数决定,此值配置后不可更改,此模式必须例化IDELAYCTRL的原语。在可变延时模式下,配置后通过控制信号CE和INC来改变延时值,此模式必须例化IDELAYCTRL的原语。在可装载的可变延时模式下,IDELAY TAP可以通过FPGA逻辑相连的5位CNTVALUEIN<4:0>装载。当配置为此模式时,也必须例化IDELAYCTRL的原语。当IDELAYE1或ISERDES的原语中的IODELAY_TYPE属性设置为FIXED、VARIABLE或者VARJLOADABLE时,都必须例化IDELAYCTRL。IDELAYCTRL模块连续校验IODELAYE1的延时环节,以减少工艺、电压和温度的影响。
(7) GTX模块
Virtex-6支持多种高速串行接口,其中高速串行模块GTX收发器可以实现150Mbit/s~6.5Gbit/s的线速率。GTX收发器是芯片与芯片之间、板与板之间进行串行通信的首选解决方案。GTX收发器具有以下特性:
√ 灵活的SERDES支持多速率应用;
√ 功能强大的发射预加重和接收均衡功能具有最佳的信号完整性;
√ 集成式“变速箱”可以实现灵活编码:64B/66B、64B/67B;
√ 高度灵活的时钟控制,接收与发送独立;
√ 可以与片上PCI Express和三态以太网MAC模块连接;
√ 相比以前的产品,收发器功耗降低了25%,在6.5Gbit/s的速率下,功率低于150mW(典型值);
√ 符合常用标准的要求,如10/40/100Gbit/s以太网、PCI Express、OC-48、XAUI、SRIO和HD-SDI。
Virtex-6器件中包含12~36个GTX收发器模块。GTX收发器包含物理编码子层(PCS)和物理媒质接入子层(PMA)。PMA包含串行/解串器(SERDES)、TX和RX输入/输出缓冲、时钟产生器和时钟恢复电路。PCS包含8B/10B编码/解码器、弹性缓冲器。
发送的并行数据经过8B/10B编码后,写入发送端FIFO,然后转换成串行差分数据发送出去。接收端接收到的串行差分信号首先经过接收端缓冲,然后经过串/并转化器转换成并行数据,再经过8B/10B解码,写入弹性缓冲器,最后并行输出。
PCS具有8B/10B编码器/解码器。MGT可以工作在32位或40位操作模式,可以在配置或者运行过程中更改PMA速率和PCS协议,可以根据时钟来配置内部数据宽度和外部数据宽度。
PMA提供与外部媒质的模拟接口,其中包括:20倍时钟倍频器、发送端时钟生成器、发送缓冲器、串行器、接收端的时钟恢复电路、接收缓冲器、解串器、可变速率的全双工收发器、可编程的五级差分输出幅度(摆率)控制和可编程的四级输出预加重模块等。
Virtex-6 HXT器件内的GTH模块比GTX有更高的线速率,用它可以实现最高性能的高速串行收发器。GTH具有如下特性:
√ 灵活的SERDES支持多速率应用;
√ 实现40G和100G协议等接口;
√ 功能强大的发射预加重和接收均衡器;
√ 集成式“变速箱”实现了灵活编码:8B/10B、64B/66B;
√ 低功耗:220mW(典型值);
√ 符合常见标准的要求,如10/40/100Gbit/s以太网、PCI Express、0048、XAUI、SRIO和HD-SDI。
(8)以太网(Ethernet MAC)模块
Virtex-6器件内置以太网MAC,不需要消耗可编程逻辑资源即可提供无缝的芯片到芯片连接。以太网媒质访问控制器(MAC)内核支持10/100/1000Mbit/s的数据速率,兼容UNH验证标准并且具有互操作能力,设计符合IEEE 802.3规范的要求,可以单独运行在1000Mbit/s、100Mbit/s和10Mbit/s模式,或者配置成三态模式。支持IEEE标准的MII、GMII和RGMII协议,减少了外部物理接口的总线宽度。图1-65所示为以太网MAC的结构框图。
主机可以通过主机总线或者设备控制寄存器(DCR)总线与以太网MAC互联。物理接口能配置成MII、GMII、RGMII、SGMII或100Base-X,但是根据所选择的物理接口配置,只有一套TX和RX接口被激活。
图1-65 以太网MAC的结构框图
EMAC有一个可选的管理数据输入/输出接口(MDIO),可以访问外部PHY的管理寄存器和EMAC内部的物理接口管理寄存器(仅在1000Base-X或SGMII模式配置下有效)。
EMAC输出统计向量包含了以太网发送和接收数据通路上的帧信息。复用统计向量以减少与外界连接时所需要的引脚数。在FPGA中实现统计IP (Statistics IP)以累计以太网MAC收发数据通路的统计信息。EMAC接口路径上有个接收地址滤波器,它可用于控制接受或拒绝输入帧。
输出统计向量包含了以太网发送和接收数据通路上的帧统计信息。发送统计向量TX_STATISTICS_VECTOR包含发送帧的统计信息,由32位向量和内部信号组成。接收统计向量RX_STATISTICS_VECTOR包含接收帧的统计信息,由28位向量和内部信号组成。Xilinx CORE Generator软件免费提供了一个外部统计模块,该统计模块对以太网MAC的发送和接收数据通路上的所有统计信息进行累加。设计中可以调用以太网MAC的原语或者使用CoreGen工具配置EMAC参数来使用EMAC模块。
(9) PCIE端点模块
PCI Express 2.0标准对满足高性能、低功耗应用的需求非常关键,特别是在电信、服务器、高端视频市场。针对越来越多的PCIE的应用,Virtex-6 FPGA中嵌入了第二代的PCIE内核,该集成的第二代PCIE模块兼容PCI Express 2.0标准,已经通过了1~8通道配置的PCI-SIG PCI Express 2.0版本兼容性与互操作性测试。
图1-66 Virtex-6中集成的PCIE核
Virtex-6 FPGA内的PCI Express模块实现了事务处理层、数据链路层和物理层功能,能够以最低的FPGA逻辑利用率提供完整的PCI Express端点和根端口功能。内部结构如图1-66所示。
3.Kintex-7系列
Kintex-7 FPGA是一款新型的FPGA,展现了高端性能,但成本降低过半。Kintex-7系列是在通用28nm架构基础上构建的三大产品系列之一,其设计实现了最低的功耗,与前几代FPGA相比,其功耗降低了一半多,而其性价比却提高了2倍。Kintex-7系列可提供高密度逻辑、高性能收发器、存储器、DSP以及灵活的混合信号处理功能,通过这些功能可以提高系统级性能,并可以更紧密地进行集成。
Xilinx通过基础目标设计平台和特定领域专用目标设计平台使开发人员能够充分利用统一“7”系列FPGA的功耗、性能及生产力优势。Xilinx目标设计平台为设计人员提供了一套完整的解决方案,其中包括芯片、软件、IP和参考设计。所有“7”系列FPGA共享扩展优化式架构,采用高性能、低功耗(HPL)28nm工艺制造而成。该创新使设计能够在Artix-7、Kintex-7与Virtex-7 FPGA系列之间移植。系统制造商能够对成功设计方案轻松进行扩展,以满足更低成本、更低功耗或更高性能和容量的相邻市场的需求。作为支持即插即用型FPGA设计的互联策略的一部分,AMBA4、AXI4规范的实施进一步提高了IP重用效率、移植性和可预测性。
表1-8 Kintex-7 FPGA的功能与容量
Kintex-7 FPGA能够以不同价位提供高信号处理能力和低功耗,从而满足长期演进(LTE)无线网络的部署要求。这些器件可以满足新一代高清(HD)3D平板显示器严格的功耗与成本要求。Kintex-7系列也可提供新一代广播视频点播系统所需的串行带宽。
1.1.3.2 Altera公司及产品介绍
自20年前发明了世界上第一个可编程逻辑器件开始,Altera公司(阿尔特拉)秉承了创新的传统,是世界上“可编程芯片系统”(SOPC)解决方案倡导者。Altera结合带有软件工具的可编程逻辑技术、知识产权(IP)和技术服务,在世界范围内为14 000多个客户提供高质量的可编程解决方案。
Altera的主流FPGA分为两大类:一种侧重于低成本应用,容量中等,性能可以满足一般的逻辑设计要求,如Cyclone、CycloneII等;还有一种侧重于高性能应用,容量大,性能可满足各类高端应用,如Startix、StratixII等。用户可以根据自己实际应用要求进行选择。一般在性能可以满足的情况下,优先选择低成本器件。这儿主要介绍CycloneV系列FPGA器件。
CycloneV系列采用了TSMC的28nm低功耗(28LP)工艺进行开发,满足了目前大批量低成本应用对最低功耗、最低成本,以及最优性能水平的需求。与前几代产品相比,该系列总功耗降低了40%,静态功耗降低了30%。CycloneV系列FPGA器件提供了功耗最低的串行收发器,每通道在5Gbit/s时功耗只有88mW,处理性能高达4000MIPS,而功耗不到1.8W。此外,该系列集成了丰富的硬核知识产权模块,例如,支持400MHz DDR3和PCIExpressGen2硬核IP模块的多功能硬核存储器控制器等,可帮助工程师降低系统成本和功耗,缩短设计时间,同时突出产品优势。为保护宝贵的IP投入,该系列还提供了最全面的设计保护功能,包括支持易失和非易失密钥的256位高级加密标准(AES)。
CycloneV SoC FPGA 器件是一个单晶片芯片系统(SoC),包含两个不同的部分:硬核处理器系统(HPS)和FPGA。图1-67显示了CycloneV SoC FPGA器件结构。
图1-67 CycloneV SoC FPGA 器件结构图
1.硬核处理器系统(HPS)
硬核处理器系统(HPS)组件是一个可以在CycloneV SoC FPGA的FPGA架构中例化的软组件,它使其他软组件能够与HPS硬逻辑相连接。HPS组件本身在FPGA架构中占用很小的空间,因为它的唯一目的是使软逻辑能够连接HPS中的扩展硬逻辑,其基本结构包括:
√ 带有双ARM Cortex-A9 MPCore处理器的MPU子系统;
√ SDRAM控制器子系统;
√ 一个通用的直接存储器访问(DMA)控制器;
√ 两个Ethernet媒体访问控制器(EMAC);
√ 两个USB2.0 On-The-Go(OTG)控制器;
√ 一个NAND闪存控制器;
√ 一个四路SPI闪存控制器;
√ 一个Secure Digital(SD)/MultiMediaCard(MMC)控制器;
√ 两个串行外设接口(SPI)主控制器;
√ 两个SPI从控制器;
√ 4个Inter-Integrated Circui(t 集成电路间,I2C)控制器;
√ 64KB片上RAM;
√ 64KB片上启动ROM;
√ 两个UART;
√ 4个计时器;
√ 两个看门狗定时器;
√ 3个通用I/O(GPIO)接口;
√ 两个控制器区域网络(CAN)控制器(只限某些器件类型);
√ ARM CoreSight调试组件;
√ Debug Access Port(调试访问端口,DAP);
√ Trace Port Interface Unit(跟踪端口接口单元,TPIU);
√ System Trace Macrocell(系统跟踪宏单元,STM);
√ Program Trace Macrocell(编程跟踪宏单元,PTM);
√ Embedded Trace Router(嵌入式跟踪路由器,ETR);
√ Embedded Cross Trigger(嵌入式交叉触发器,ECT);
√ 一个系统管理器;
√ 一个时钟管理器;
√ 一个复位管理器;
√ 一个扫描管理器;
√ 一个FPGA管理器;
√ 一个FPGA-to-HPS桥接;
√ 两个HPS-to-FPGA桥接。
2.FPGA
CycloneV器件的FPGA部分主要由I/O端口、精度可调DSP模块、逻辑阵列模块与自适应模块、嵌入式存储器模块、器件中的时钟网络和PLL组成,具体功能如下。
(1)精度可调DSP模块
精度可调DSP模块由输入寄存器块、预加器、内部系数、乘法器、加法器、累加器、脉动寄存器、双倍累加寄存器和输出寄存器块等单元组成,其具有从动态输入或者内部系数中选择被乘数的灵活性,并根据可乘法器的数据位宽并行执行多个乘法运算。
(2)逻辑阵列模块与自适应模块
逻辑阵列模块简称LAB,它是由被称作自适应逻辑模块(ALM)的基本构造模块组成的,通过配置这些模块能够实现逻辑功能、算术功能以及寄存器功能。每个LAB能够通过快速本地和直链互联驱动30个ALM。10个ALM位于任意给定的LAB中,10个ALM位于每个相邻的LAB中。LAB本地互联通过使用相同LAB中的行列互联以及ALM输出来驱动相同LAB中的ALM。相邻的LAB、MLAB、M10K模块,或者左侧的数字信号处理(DSP)模块也能够通过直链连接来驱动LAB的本地互联。直链互联功能最大限度地降低了行列互联的使用,从而提供了更高的性能和更大的灵活性。
(3)嵌入式存储器模块
CycloneV器件包含两种类型的存储器模块,分别为专用存储器资源模块和由多功能逻辑阵列模块(LAB)配置而成的存储器逻辑阵列。其中专用存储器资源模块最适用于较大的存储器阵列,并提供大量独立端口;由多功能LAB配置而成的存储器逻辑阵列最适用于宽而浅的存储器阵列。它被优化以实现数字信号处理(DSP)应用的移位寄存器、宽浅FIFO缓存和滤波延迟线。每个由多功能LAB配置而成的存储器逻辑阵列均由10个自适应逻辑模块组成。在CycloneV器件中,这些模块可配置成10个32×2模块,从而每个由多功能LAB配置而成的存储器逻辑阵列可实现一个32×20的简单双端口SRAM模块。
(4)时钟网络和PLL
CycloneV器件的时钟网络包括全局时钟网络、局部时钟网络和外设时钟网络。该时钟网络可提供高达128个单一时钟域。全局时钟网络可用作功能模块的低偏斜时钟源,如自适应逻辑模块(ALM)、数字信号处理(DSP)、嵌入式存储器以及PLL;局部时钟网络是为包含在单一器件象限中的逻辑提供最低的时钟插入时延和偏斜;外设时钟网络相比全局时钟网络和局部时钟网络,它具有更高的偏斜,可以将PCLK用作信号输入和输出CycloneV器件的通用布线资源。PLL为器件时钟管理、外部系统时钟管理以及高速I/O接口提供了可靠的时钟管理与综合。CycloneV器件系列包含小数分频PLL,它能用作小数分频PLL或者整数PLL。CycloneV器件中的输出计数器专用于支持整数或小数频率综合的每个小数分频PLL。CycloneV器件可提供高达8个较大密度的小数分频PLL。
1.1.4 FPGA软件在各领域的地位与重要意义
FPGA器件有着与同类和以往的电子器件截然不同的结构和性能,这是进行FPGA研究的最重要的原因。灵活性始终是可编程逻辑器件的特点,可编程逻辑解决方案可保证产品上市时间更快、产品生命周期更灵活以及总成本更低。因此,越来越多的领域引进了FPGA,如汽车电子领域、消费电子领域、军事航空领域、无线通信领域以及工业领域等。
FPGA最初也是最传统的应用领域是通信领域,但是随着信息产业和微电子技术的发展,FPGA技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、汽车、医疗、无线通信、消费电子、工业控制等热门领域,并随着工艺的进步和技术的发展,从各个角度开始渗透到生活当中。
1.汽车电子
在发现可编程逻辑器件(PLD)非常有利于系统供应商和汽车生产商(原始设备生产商)获得成功之后,汽车行业开始大量采用这些器件。PLD的质量是同类最佳的,成本结构适合大批量消费类应用,系统性能也在不断提高,因此,和其他半导体产品相比,PLD能够更迅速地进入汽车市场领域。与ASSP和微控制器解决方案不同,PLD的灵活性和产品迅速面市特性越来越成为汽车行业的关键需求。
PLD已经在信息娱乐和通信市场上得到了广泛应用,新兴的汽车辅助驾驶设计也采用了PLD。在这一领域中,某些应用发展非常迅速,包括道路偏离报警、夜视和胎压监控系统等。PLD具有较低的芯片成本结构、丰富的知识产权(IP)内核、参考设计以及较长的产品在市时间,是汽车电子市场发展的理想选择。Altera的汽车级半导体产品组合包括汽车市场上其他PLD供应商还无法提供的产品。
2.消费电子
发展迅速的消费类电子市场上各式新产品层出不穷,让人耳目一新,如平面显示器、便携式媒体播放器以及家庭联网产品等。这些产品的功能不断丰富,每年都有很大的改进。对于采用最新技术的消费类电子生产商而言,如此迅速的发展给他们在时间上带来了很大的竞争压力。在系统中采用Altera低成本可编程逻辑和HardCopyASIC,能够迅速、无风险地实现产品量产,帮助设计人员及时处理不断出现的变化,保证项目按计划完成。
计算机存储发展迅速。在传统的IT应用中,服务器和存储器直接互联,进展为联网存储体系结构,即存储区域网(SAN)。SAN很容易实现存储扩展,以前受内部存储能力限制的服务器可以在现有条件以外扩容。除了容易扩展存储之外,服务器也发展到能够迅速高效地实现数据处理。Altera FPGA是实现存储拓扑移植、帮助服务器更迅速处理数据的理想选择。
创新的存储和服务器技术需要灵活的平台来迅速实现各种解决方案,而大批量应用市场更需要低成本方案。在计算机和存储设备中使用Altera的低成本可编程逻辑和结构化ASIC可以保证无风险地快速提高产量。在这些存储网络的推动下,流量和数据处理的迅猛增长导致迫切需要高性能芯片和接口技术。Altera的65nm Stratix III FPGA在体系结构上突出了丰富的存储器和串行接口,非常适合高端存储应用。
3.军事航空
军事商用(COTS)计划的前提是军事项目能够采用商用元件、电路板和系统,充分发挥新技术和规模经济的优势。虽然COTS获得了一定的成功,但是还需要进行改进。商用供应商必须能够更好地满足军事和航空航天市场的需求。
Altera的FPGA增强COTS计划保证了军事项目承包人能够降低风险,提供非常可靠的系统,实现所做出的承诺,从而有助于满足这些需求。
4.医疗
大部分医疗产品都采用了某种类型的半导体器件。实际上,半导体器件在这些产品中的应用越来越广泛。可编程逻辑器件(PLD)的普及率要远远高于其他类型的半导体器件。在医疗设备开发中,PLD是功能强大而且切实可行的ASIC和ASSP替代方案。在设计过程中,根据需要对PLD重新编程,避免了前端流片(NRE)成本,减少了与ASIC相关的订量,降低了芯片多次试制的巨大风险。
和ASSP相比,PLD在设计上非常灵活,可实现电路板级集成,从而使产品在众多的竞争医疗设备生产商中脱颖而出。此外,随着标准的发展或者当需求出现变化时,还可以在现场更新PLD。而且,设计人员能够反复使用公共硬件平台,在一个基本设计基础上,建立不同的系统,支持各种功能,从而大大降低了生成成本。不论是设计CT还是病人监控设备,可编程逻辑器件都能够成功实现系统设计,非常灵活,没有风险——和其他医疗设备生产商相比,不但性价比高,而且更能突出产品增值优势。
5.无线通信
互联网的爆炸性增长导致对大众化高速互联网接入技术的需求越来越大。无线互联网接入技术可在家庭和办公室之外提供网络接入,满足了这种不断增长的需求。
宽带无线接入技术具有很大的市场潜力,使得微波接入全球互通(WiMAX)技术越来越流行。WiMAX 802.16e-2005支持城域网(MAN)范围内的移动高速互联网接入,使用正交频分复用接入(OFDMA)和多输入多输出(MIMO)技术等高级信号处理方案。WiMAX 802.16e-2005作为一种固定无线技术,将在新网络实施以及新兴市场上扮演重要角色。
随着半导体技术和信号处理技术的进步,无线标准和系统本身也在不断发展。这就需要一个可以提供较宽处理带宽、具有产品及时面市优势的灵活硬件平台来满足这些需求。Altera的可编程逻辑器件(PLD)提供高性能产品组合以及低成本FPGA,结合低成本HardCopyASIC无风险移植技术,为无线基础设施设计提供所需的处理带宽和灵活性。为缩短产品面市时间,Altera还提供了多种知识产权(IP)、参考设计,以及来自Altera无线支撑系统的合作伙伴现成解决方案。
移动蜂窝通信从传统的模拟系统发展到了今天的正交频分复用接入(OFDMA)和多输入多输出(MIMO)4G数字系统。对于高速数据服务,与WCDMA和cdma2000等3G技术相比,3G+标准能够实现更高的峰值数据速率。例如,高速下行链路分组接入(HSDPA)和高速上行链路分组接入(HSUPA)技术将WCDMA的下行链路和上行链路数据速率分别提高到14.4Mbit/s和5.6Mbit/s。
6.有线通信
有线通信,即借助线缆传送信号的通信方式。线缆指金属导线、光纤等有形媒质传送方式,信号指代声音、文字、图像等。有线通信的另一种叫法称为固网,我们不得不信,很多的进步都是基于很大的欲望的驱使,仅仅十几年的时间,全世界被一个叫做Internet的网络给连接在一起。这是有线通信的最大的一个实例,当然,有线通信的例子还有一些我们近得不能再近的有线网络,如最开始用的座机电话网、有线电视网等。
在维持和保证这些网络给我们带来幸福的同时,无形中促进了一些技术的产生,这些技术包括交换机、路由器、防火墙、网关、数据收发器、高速接口等网络设备方面的开发技术。有线网络的网络质量的好坏直接取决于这些网络设备性能的提高。
有线网络如火如荼地发展了十几年到今天,虽说已经比较成熟了,但是依然充满着很大的挑战和冲击,电信市场正在经历新一轮整合发展时期,因特网的需求仍在继续推动产业的创新。目前,家庭视频和高级商业服务业务的快速发展对全球电信网络的带宽提出了更大挑战。这一挑战始于网络接入边缘,并直接延伸到城域网络和核心网络。为了响应上述需求,运营商正在追求包括40Gbit/s SONET(OC-768和OTU3)以及40G以太网在内的更高的端口速率。越来越多的运营商更是瞄准了100G端口速率。
商业和经济的发展形势迫切地需要可扩展的、灵活的且高效益成本的技术解决方案,从而满足电信行业不断变化的需求和标准。为了跟上这些变化,加快超高带宽系统的部署,有线通信设备生产商正在从传统的专用集成电路(ASIC)和成品(ASSP)芯片转向可编程硬件平台和IP解决方案。
7.工业控制
灵活、可靠,并且能够在同一平台上支持多种标准,Altera FPGA可帮助您在工业自动化和过程控制产品中开发适应性强而且不会过时的设计方法。从可编程逻辑控制器(PLC)到运动/电机控制器、I/O模块、人机接口(HMI)/操作面板和智能驱动器,在开发过程中甚至在现场,您都可以对产品重新进行配置。而且,还降低了总成本,又进一步提高了效能。Altera器件在工业温度范围内完全能够正常工作,极冷或者极热都不会影响性能,还可以将知识产权(IP)/解决方案移植到未来的产品系列中。
Altera提供全面的系列产品组合,以加速工业应用开发——工业参考设计、QuartusII软件(包括SOPC Builder开发工具包)、32位NiosII嵌入式处理器、板上存储器、大量的I/O引脚,以及Altera及其合作伙伴提供的多种标准和工业IP。采用可配置NiosII嵌入式处理器,用户很容易开发基于微处理器的系统,定制满足您的应用需求。我们的SOPC Builder系统生成工具自动完成IP配置和集成。Altera与合作伙伴一起提供200多种IP内核,借助SOPC Builder,用户可以使用这些现成的资源迅速开发硬件系统。采用QuartusII设计软件,能够降低FPGA设计的功耗,提高速度,缩短系统编译时间。