
FPGA研发牛人心得总结.docx
8页本文格式为Word版,下载可任意编辑FPGA研发牛人心得总结 FPGA研发之道 FPGA是个什么玩意? FPGA是个什么玩意? 首先来说: FPGA是一种器件其英文名 feild programable gate arry 很长,但不通俗通俗来说,是一种功能强大貌似无所不能的器件通常用于通信、网络、图像处理、工业操纵等不同领域的器件就像ARM、DSP等嵌入式器件一样,成为多数码农码工们情感倾泻而出的代码真正获得生命的地方只不过,一样的编程,却是不一样的思想嵌入式软件人员看到的是C而FPGA工程师看到是硬件描述语言,verilog或VHDL软件看到是函数、对象、重构FPGA工程师那么是模块、流水、复用从现象上看,都是代码到下载程序再到硬件上运行不能只看现象而疏忽本质FPGA 开发本质上是设计一颗IC,“**的身子,丫鬟的命”不是全体verilog/VHDL代码,都能获得青睐去流片成为真正的芯片,而更多的那么成为运行在FPGA器件上,成为完成一致功能的替代品其实现的功能却一点也不逊色于百万身价流片的近亲从而成为独树一帜的行业 FPGA开发的流程,是通过verilog/VHDL等硬件描述语言通过EDA工具编译、综合、布局布线成为下载文件,最终加载到FPGA器件中去,完成所实现的功能。
那硬件描述语言描述的是什么?这里描述的就是组合规律电路和时序规律电路组合规律电路就是大家所熟知的 与门、或门、非门时序规律电路那么是触发器数字芯片上绝大片面规律都是这两种规律实现的也就是根本上每个电子行业的人所学过的数字电路顺便说一下,感谢香农大师,在其硕士毕业论文就奠定了数字电路的的根基只 不过在FPGA中,与或非的操作变成了查找表的操作于是全体的数字电路变成了查找表和寄放器,这就构成了FPGA的根基查找表负责规律实现,寄放器存储电路状态二者合作,双剑合璧,天衣无缝这是最初的FPGA的雏形 现代FPGA内部出了查找表和寄放器之外,还有RAM块,用于存储大量的数据块,这是由于RAM块较寄放器来存储大量数据更能节省芯片实现的面积FPGA内部的时序电路那么需要时钟的输入,通常FPGA内部需要时钟种类较多,因此需要在片内产生所需的的相关的时钟,如不同频率,不同相位的时钟,因此时钟管理单元DCM/PLL也是必不成少的内部部件除此之外,FPGA内部还包括接口I/O,I/O分为普遍I/O和高速I/O,高速I/O支持例如高速的SERDES,用于实现XAUI,PCIE等高速接口,这些接口动辄几Gbps到10Gbps以上。
此外种类多种多样的硬核IP也是各FPGA厂商差异化竞争利器,例如POWERPC、ARM等硬核IP从而构成CPU+FPGA于一体的集可编程性和可重构的处理平台因此,相对来所,FPGA虽然进展有二三十年的历史,其根本架构一向不变不大 回到问题开头的地方,FPGA的英文翻译过来是现场可编程门阵列这是相对ASIC来说的,ASIC的硬件也可看做是门阵列,但是其是非可编程的器件流片完成其功能就固化了,而FPGA的可编程性就在其能够重新下载配置文件,来变更其内在的功能,这就是其可编程性的由来从前端开发流程来说,FPGA和ASIC开发并无二至由于ASIC开发一次性投入本金较高,FPGA无疑是一种经济的替代方案,用于实现的高速的数据并行处理如业务能够支撑大规模应用并且协议固化,那么能够分摊本金的ASIC实现就有本金的优势 FPGA作为一种器件,技术上主要垄断在少数大公司手中,那就是双巨头ALTERA和XILINX除此之外还有一些份额相对较小的公司,例如ACTEL和LATTICE不止是FPGA的硬件芯片,其配套的EDA工具技术壁垒更高因此相对于CPU来说,FPGA的国产化 更不乐观,不过已经有国内的厂商来从事这一行业,例如国微和京微雅格等,也在一些细分市场上推出自己的FPGA产品。
FPGA和他那些小伙伴们 (一) 系统架构组成 通常来讲,“一个豪杰三个帮”,一个完整的嵌入式系统中由单独一个FPGA使用的处境较少通常由多个器件组合完成,例如由一个FPGA+CPU来构成通常为一个FPGA+ARM,ARM负责软件配置管理,界面输入外设操作等操作,FPGA负责大数据量运算,可以看做CPU的专用协处理器来使用,也常会用于扩展外部接口常用的有ARM+FPGA,DSP+FPGA,或者网络处理器+FPGA等种种架构形式,这些架构形式构成整个高速嵌入式设备的处理形态 不得不说的是,随着技术的进步,现在CPU中集成的单元也随之增加,例如TI的“达芬奇”架构的处理器内部通常由ARM+DSP构成同时异构的处理器形态业逐步流行,如ARM9+ARM7的布局这类一个主要处理系统(ARM9)外带辅佐处理系统(ARM7)的设计,同样成为现在处理器设计的流行方向主处理系统运行嵌入式操作系统,而辅佐处理单元那么专注某一些的专用领域的处理这些系统的应用裁减了FPGA作为CPU协处理单元的领域由于终究FPGA相比ARM等流行嵌入式处理器价格要相对较高 在这种情形下,FPGA的厂商貌似也感受到了压力,不约而同推出了带ARM硬核的FPGA,例如ALTERA的 和XILINX的ZYNQ和ALTERA的SOC FPGA。
这是即是彼此竞争的需要,也是同众多CPU厂商一掰手腕的杰总即使在这两种在趋势下,经典的处理器+FPGA的设计依旧可看做为高性能嵌入式系统的典型配置 经典的处理器+FPGA的配置中有多种的架构形式,即多个处理器单元,可能是ARM,MIPS,或者DSP,FPGA也可能是多片的配置,概括架构形式于概括处理的业务相关和目标 设备的定位也相关由于FPGA作为简朴业务流大数据量的处理形态依旧是CPU无可对比的优势,FPGA内部可以开发大量业务数据并行,从而实现高速的数据处理 在实现高速处理方面,CPU的另一个进展趋势是多核,多核处理器也能处理大数据量的业务的并行,例如业界TERILA已推出64核的多核处理器,采用MIPS处理器,通过二维MASH网络连接在一起,形成NOC的布局在性能上已经和现有的高速FPGA的处理才能上不相上下但是多核处理器的不得不说的问题就是,同一业务流调配到多核处理上后,如需交互,例如访问同一资源,就会造成读写的缓存一致的问题,解决的这一问题的自然思路是加锁,即在变量访问上加自旋锁,但是带来的问题就是处理性能的急剧下降而FPGA无论并行处理和同一变量的访问,都可以变成工程师的设计水平的问题,没有原理性的挑战。
没有一种器件可以得志全人类的众多需求,因此不用惦记FPGA没有用武之地必定是一系列产品的组合下面主要介绍一下FPGA可以作为现今热门场景的几种应用 (1)网络存储产品,更加是现在的NAS,或者SAN设备上,其存储的时间、接口、安好性等都要求较高,而FPGA无论处理性能还是扩展接口的才能都使其在这一领域大有作为现在高端FPGA单片就可以扩展32个或者更多4G或者8G的FC接口并且其协议处理相对的固定,也使FPGA在这一领域有大量的可能应用 (2)高速网络设备,现在高速网络设备10G、40/100G以太网设备领域,同样FPGA也是关键的处理部件更加是IPv6的商用化及大数据对于根基设施的高要求,都使这一领域的处理应用会逐步广泛,这一领域通常是高速网络处理器(NP)+FPGA的典型架构 (3)4G等通信设备,对于新一代通信基站的信号处理,FPGA+DSP阵列的架构就是绝配更加是在专用处理芯片面世之前,这样的架构可以保证新一代通信根基设施的急速研发和部署 没有完备的架构,只有适合的组合,各种芯片和架构都是为应用服务,彼此的渗透是趋势,也是必然FPGA相对处理器的可编程领域,依旧属于小众(虽然人数也不少)。
但是正像一那么笑话所说:大腿虽然比根命根子粗,但决没有命子重要这算开个玩笑FPGA的实现为以后的芯片化留下了大量可能和想象空间,从而在应用大量爆发时通过芯片化来大幅降低本金,这这也正是其他可编程器件所不能对比的 FPGA和他那些小伙伴们 (二) 器件互联 系统架构确定,下一步就是FPGA与各组成器件之间互联的问题了通常来说,CPU和FPGA的互联接口,主要取决两个要素: (1)CPU所支持的接口 (2)交互的业务 通常来说,FPGA一般支持与CPU连接的数字接口,其常用的有EMIF,PCI,PCI-E,UPP,网口(MII/GMII/RGMII),DDR等接口作为总线类接口,FPGA通常作为从设备与CPU连接,CPU作为主设备通过访问直接映射的地址对FPGA举行访问根据是否有时钟同步,通常总线访问分为同步或异步的总线,根据CPU外部总线协议有所不同,但数据、地址、操纵信号根本是总线访问类型中总线信号所不能省略的CPU手册中会对信号定义和时序操纵有着细致的说明,FPGA需要根据这些细致说明来实现相应的规律同时CPU还可以对访问时序举行设置,譬如最快时钟,甚至所需的最小建立时间和保持时间,这些一般CPU都可以举行设置,而这些概括参数,不仅影响FPGA的实现,也抉择总线访问的速度和效率。
对于同步总线,只需要根据输入时钟举行采样处理即可,但对于异步总线,那么需要的对进入的操纵信号举行同步化处理,通常处理方式是寄放两拍,去掉毛刺因此用于采样的时钟就与CPU所设置的总线参数相关,如采样时钟较低,等操纵信号稳定后在译码后输出, — 8 —。
