FPGA研发牛人心得总结3096.docx
FPGA研发之道FPGA是个什么玩意?FPGA是个什么玩意? 首先先来说: FFPGAA是一种种器件。其其英文名名 feeildd prrogrramaablee ggatee arrry 。很长长,但不不通俗。通通俗来说说,是一一种功能能强大似似乎无所所不能的的器件。通通常用于于通信、网网络、图图像处理理、工业业控制等等不同领领域的器器件。就就像ARRM、DDSP等等嵌入式式器件一一样,成成为无数数码农码码工们情情感倾泻泻而出的的代码真真正获得得生命的的地方。只只不过,一一样的编编程,却却是不一一样的思思想。嵌嵌入式软软件人员员看到的的是C。而而FPGGA工程程师看到到是硬件件描述语语言,vveriilogg或VHHDL。软软件看到到是函数数、对象象、重构构。FPPGA工工程师则则是模块块、流水水、复用用。从现现象上看看,都是是代码到到下载程程序再到到硬件上上运行。不不能只看看现象而而忽略本本质。FFPGAA 开发发本质上上是设计计一颗IIC,“*的身身子,丫丫鬟的命命”不是是所有vveriilogg/VHHDL代代码,都都能获得得青睐去去流片成成为真正正的芯片片,而更更多的则则成为运运行在FFPGAA器件上上,成为为完成相相同功能能的替代代品。其其实现的的功能却却一点也也不逊色色于百万万身价流流片的近近亲。从从而成为为独树一一帜的行行业。 FPGGA开发发的流程程,是通通过veerillog/VHDDL等硬硬件描述述语言通通过EDDA工具具编译、综综合、布布局布线线成为下下载文件件,最终终加载到到FPGGA器件件中去,完完成所实实现的功功能。那那硬件描描述语言言描述的的是什么么?这里里描述的的就是组组合逻辑辑电路和和时序逻逻辑电路路。组合合逻辑电电路就是是大家所所熟知的的 与门门、或门门、非门门。时序序逻辑电电路则是是触发器器。数字字芯片上上绝大部部分逻辑辑都是这这两种逻逻辑实现现的。也也就是基基本上每每个电子子行业的的人所学学过的数数字电路路。顺便便说一下下,感谢谢香农大大师,在在其硕士士毕业论论文<继继电器与与开关电电路的符符号分析析>就奠奠定了数数字电路路的的根根基。只只不过在在FPGGA中,与与或非的的操作变变成了查查找表的的操作。于于是所有有的数字字电路变变成了查查找表和和寄存器器,这就就构成了了FPGGA的基基础。查查找表负负责逻辑辑实现,寄寄存器存存储电路路状态。二二者配合合,双剑剑合璧,天天衣无缝缝。这是是最初的的FPGGA的雏雏形。 现代FFPGAA内部出出了查找找表和寄寄存器之之外,还还有RAAM块,用用于存储储大量的的数据块块,这是是因为RRAM块块较寄存存器来存存储大量量数据更更能节省省芯片实实现的面面积。FFPGAA内部的的时序电电路则需需要时钟钟的输入入,通常常FPGGA内部部需要时时钟种类类较多,因因此需要要在片内内产生所所需的的的相关的的时钟,如如不同频频率,不不同相位位的时钟钟,因此此时钟管管理单元元DCMM/PLLL也是是必不可可少的内内部部件件。除此此之外,FFPGAA内部还还包括接接口I/O,II/O分分为普通通I/OO和高速速I/OO,高速速I/OO支持例例如高速速的SEERDEES,用用于实现现XAUUI,PPCIEE等高速速接口,这这些接口口动辄几几Gbpps到110Gbbps以以上。此此外种类类多种多多样的硬硬核IPP也是各各FPGGA厂商商差异化化竞争利利器,例例如POOWERRPC、AARM等等硬核IIP。从从而构成成CPUU+FPPGA于于一体的的集可编编程性和和可重构构的处理理平台。因因此,相相对来所所,FPPGA虽虽然发展展有二三三十年的的历史,其其基本架架构一直直不变不不大。 回到问问题开始始的地方方,FPPGA的的英文翻翻译过来来是现场场可编程程门阵列列。这是是相对AASICC来说的的,ASSIC的的硬件也也可看做做是门阵阵列,但但是其是是非可编编程的器器件。流流片完成成其功能能就固化化了,而而FPGGA的可可编程性性就在其其能够重重新下载载配置文文件,来来改变其其内在的的功能,这这就是其其可编程程性的由由来。从从前端开开发流程程来说,FFPGAA和ASSIC开开发并无无二至。由由于ASSIC开开发一次次性投入入成本较较高,FFPGAA无疑是是一种经经济的替替代方案案,用于于实现的的高速的的数据并并行处理理。如业业务能够够支撑大大规模应应用并且且协议固固化,则则能够分分摊成本本的ASSIC实实现就有有成本的的优势。 FFPGAA作为一一种器件件,技术术上主要要垄断在在少数大大公司手手中,那那就是双双巨头AALTEERA和和XILLINXX。除此此之外还还有一些些份额相相对较小小的公司司,例如如ACTTEL和和LATTTICCE。不不止是FFPGAA的硬件件芯片,其其配套的的EDAA工具技技术壁垒垒更高。因因此相对对于CPPU来说说,FPPGA的的国产化化更不乐乐观,不不过已经经有国内内的厂商商来从事事这一行行业,例例如国微微和京微微雅格等等,也在在一些细细分市场场上推出出自己的的FPGGA产品品。FPGA和和他那些些小伙伴伴们 (一一) 系系统架构构组成通常来讲,“一一个好汉汉三个帮帮”,一一个完整整的嵌入入式系统统中由单单独一个个FPGGA使用用的情况况较少。通通常由多多个器件件组合完完成,例例如由一一个FPPGA+CPUU来构成成。通常常为一个个FPGGA+AARM,AARM负负责软件件配置管管理,界界面输入入外设操操作等操操作,FFPGAA负责大大数据量量运算,可可以看做做CPUU的专用用协处理理器来使使用,也也常会用用于扩展展外部接接口。常常用的有有ARMM+FPPGA,DDSP+FPGGA,或或者网络络处理器器+FPPGA等等种种架架构形式式,这些些架构形形式构成成整个高高速嵌入入式设备备的处理理形态。 不得不不说的是是,随着着技术的的进步,现现在CPPU中集集成的单单元也随随之增加加,例如如TI的的“达芬芬奇”架架构的处处理器内内部通常常由ARRM+DDSP构构成。同同时异构构的处理理器形态态业逐渐渐流行,如如ARMM9+AARM77的结构构。这类类一个主主要处理理系统(ARMM9)外外带辅助助处理系系统(AARM77)的设设计,同同样成为为现在处处理器设设计的流流行方向向。主处处理系统统运行嵌嵌入式操操作系统统,而辅辅助处理理单元则则专注某某一些的的专用领领域的处处理。这这些系统统的应用用减少了了FPGGA作为为CPUU协处理理单元的的领域。因因为毕竟竟FPGGA相比比ARMM等流行行嵌入式式处理器器价格要要相对较较高。 在这种种情形下下,FPPGA的的厂商似似乎也感感受到了了压力,不不约而同同推出了了带ARRM硬核核的FPPGA,例例如ALLTERRA的 和XXILIINX的的ZYNNQ和AALTEERA的的SOCC FPPGA。这这是即是是互相竞竞争的需需要,也也是同众众多CPPU厂商商一掰手手腕的杰杰总。即即使在这这两种在在趋势下下,经典典的处理理器+FFPGAA的设计计仍然可可看做为为高性能能嵌入式式系统的的典型配配置。 经典典的处理理器+FFPGAA的配置置中有多多种的架架构形式式,即多多个处理理器单元元,可能能是ARRM,MMIPSS,或者者DSPP,FPPGA也也可能是是多片的的配置,具具体架构构形式于于具体处处理的业业务相关关和目标标设备的的定位也也相关。因因为FPPGA作作为简单单业务流流大数据据量的处处理形态态仍然是是CPUU无可比比拟的优优势,FFPGAA内部可可以开发发大量业业务数据据并行,从从而实现现高速的的数据处处理。 在实现现高速处处理方面面,CPPU的另另一个发发展趋势势是多核核,多核核处理器器也能处处理大数数据量的的业务的的并行,例例如业界界TERRILAA已推出出64核核的多核核处理器器,采用用MIPPS处理理器,通通过二维维MASSH网络络连接在在一起,形形成NOOC的结结构。在在性能上上已经和和现有的的高速FFPGAA的处理理能力上上不相上上下。但但是多核核处理器器的不得得不说的的问题就就是,同同一业务务流分配配到多核核处理上上后,如如需交互互,例如如访问同同一资源源,就会会造成读读写的缓缓存一致致的问题题,解决决的这一一问题的的天然思思路是加加锁,即即在变量量访问上上加自旋旋锁,但但是带来来的问题题就是处处理性能能的急剧剧下降。而而FPGGA无论论并行处处理和同同一变量量的访问问,都可可以变成成工程师师的设计计水平的的问题,没没有原理理性的挑挑战。 没没有一种种器件可可以满足足全人类类的众多多需求,因因此不用用担心FFPGAA没有用用武之地地。必定定是一系系列产品品的组合合。下面面主要介介绍一下下FPGGA可以以作为现现今热门门场景的的几种应应用。(1)网络络存储产产品,特特别是现现在的NNAS,或或者SAAN设备备上,其其存储的的时间、接接口、安安全性等等都要求求较高,而而FPGGA无论论处理性性能还是是扩展接接口的能能力都使使其在这这一领域域大有作作为。现现在高端端FPGGA单片片就可以以扩展332个或或者更多多4G或或者8GG的FCC接口。并并且其协协议处理理相对的的固定,也也使FPPGA在在这一领领域有大大量的可可能应用用。(2)高速速网络设设备,现现在高速速网络设设备100G、440/1100GG以太网网设备领领域,同同样FPPGA也也是关键键的处理理部件。特特别是IIPv66的商用用化及大大数据对对于基础础设施的的高要求求,都使使这一领领域的处处理应用用会逐渐渐广泛,这这一领域域通常是是高速网网络处理理器(NNP)+FPGGA的典典型架构构。(3)4GG等通信信设备,对对于新一一代通信信基站的的信号处处理,FFPGAA+DSSP阵列列的架构构就是绝绝配。特特别是在在专用处处理芯片片面世之之前,这这样的架架构可以以保证新新一代通通信基础础设施的的迅速研研发和部部署。 没有有完美的的架构,只只有合适适的组合合,各种种芯片和和架构都都是为应应用服务务,互相相的渗透透是趋势势,也是是必然。FFPGAA相对处处理器的的可编程程领域,仍仍然属于于小众(虽虽然人数数也不少少)。但但是正像像一则笑笑话所说说:大腿腿虽然比比根命根根子粗,但但决没有有命子重重要。这这算开个个玩笑。FFPGAA的实现现为以后后的芯片片化留下下了许多多可能和和想象空空间,从从而在应应用大量量爆发时时通过芯芯片化来来大幅降降低成本本,这这这也正是是其他可可编程器器件所不不能比拟拟的。FPGA和和他那些些小伙伴伴们 (二二) 器器件互联联系统架构确确定,下下一步就就是FPPGA与与各组成成器件之之间互联联的问题题了。通通常来说说,CPPU和FFPGAA的互联联接口,主主要取决决两个要要素: (11)CPPU所支支持的接接口。 (22)交互互的业务务。 通常常来说,FFPGAA一般支支持与CCPU连连接的数数字接口口,其常常用的有有EMIIF,PPCI,PCII-E,UPPP,网口口(MIII/GGMIII/RGGMIII),DDDR等等接口。作作为总线线类接口口,FPPGA通通常作为为从设备备与CPPU连接接,CPPU作为为主设备备通过访访问直接接映射的的地址对对FPGGA进行行访问。根根据是否否有时钟钟同步,通通常总线线访问分分为同步步或异步步的总线线,根据据CPUU外部总总线协议议有所不不同,但但数据、地地址、控控制信号号基本是是总线访访问类型型中总线线信号所所不能省省略的。CCPU手手册中会会对信号号定义和和时序控控制有着着详细的的说明,FFPGAA需要根根据这些些详细说说明来实实现相应应的逻辑辑。同时时CPUU还可以以对访问问时序进进行设置置,比如如最快时时钟,甚甚至所需需的最小小建立时时间和保保持时间间,这些些一般CCPU都都可以进进行设置置,而这这些具体体参数,不不仅影响响FPGGA的实实现,也也决定总总线访问问的速度度和效率率。对于于同步总总线,只只需要根根据输入入时钟进进行采样样处理即即可,但但对于异异步总线线,则需需要的对对进入的的控制信信号进行行同步化化处理,通通常处理理方式是是寄存两两拍,去去掉毛刺刺。因此此用于采采样的时时钟就与与CPUU所设置置的总线线参数相相关,如如采样时时钟较低低,等控控制信号号稳定后后在译码码后输出出,一个个总线操操作周期期的时间间就会相相对较长长,其处处理的效效率也相相对较低低;假如如采样时时钟过快快,则对对关键路路径又是是一个挑挑战,因因此合理理设定采采样频率率,便于于接口的的移植并并接口的的效率是是设计的的关键点点和平衡衡点。 对于于总线型型的访问问来说,数数据信号号通常为为三态信信号,用用于输入入和输出出。这种种设计的的目的是是为了减减少外部部连线的的数量。因因为数据据信号相相对较多多一般为为8/116/332位数数据总线线。总线线的访问问的优势势是直接接映射到到系统的的地址区区间,访访问较为为直观。但但相对传传输速率率不高,通通常在几几十到1100MMbpss以下。这这种原因因的造成成主要为为以下因因素(11)受制制总线访访问的间间隔,总总线操作作周期等等因素,总总线访问问间隔即即两次访访问之间间总线空空闲的时时间,而而总线操操作周期期为从发发起到相相应的时时间。(22)不支支持双向向传输,并并且FPPGA需需主动发发起对CCPU操操作时,一一般只有有发起CCPU的的中断处处理一种种方式。这这种总线线型操作作特点,使使其可以以用作系系统的管管理操作作,例如如FPGGA内部部寄存器器配置,运运行过程程中所需需参数配配置,以以及数据据流量较较小的信信息交互互等操作作。这些些操作数数据量和和所需带带宽适中中,可以以应对普普通的嵌嵌入式系系统的处处理需求求。 对于大大数据流流量的数数据交互互,一般般采用专专用的总总线交互互,其特特点是,支支持双向向传输,总总线传输输速率较较快,例例如GMMII/RGMMII、UUpp、专专用LVVDS接接口,及及SERRDESS接口。专专用SEERDEES接口口一般支支持的有有PCII-E,XXAUII,SGGMIII,SAATA,IInteerlaakenn接口等等接口。GGMIII/RGGMIII,专用用LVDDS接口口一般处处理在11GbppS一下下的业务务形式,而而PCII-E,根根据其型型号不同同,支持持几Gbbps的的传输速速率。而而XAUUI可支支持到110Gbbps的的传输速速率,llnteerlaakenn接口可可支持到到40GGbpss的业务务传输。 对于于不同所所需的业业务形式式及处理理器的类类型,则则可选择择相应的的接口形形式,来来传输具具体的业业务。现现今主流流FPGGA中都都提供的的各种接接口的IIP。选选择FPPGA与与各型CCPU互互联接口口,一般般选择主主流的应应用交互互方案,特特殊的接接口缺少少支撑IIP,导导致开发发、调试试、维护护和兼容容性的成成本都较较大,同同时注意意系统的的持续演演进的需需要,如如只在本本项目使使用一次次,而下下一项目目或开发发阶段已已摒弃此此类接口口,则需需提前规规划技术术路线。毕毕竟一个个稳定、高高效的接接口互联联是一个个项目成成功的基基础。 不是所所有的嵌嵌入式系系统都需需要“高高大上”的的接口形形式,各各类低速速的稳定定接口也也同样在在FPGGA的接接口互联联中有着着重要的的角色,其其中UAART、SSPI、II2C等等连接形形式也非非常的常常见。毕毕竟,一一个优秀秀的设计计不是“高高大上”的的堆积,而而是对需需求最小小成本的的满足。适适合的才才是最美美的。灵活性的陷陷阱如果说用一一个词来来描述FFPGAA的特性性,灵活活性肯定定名列前前茅。 FPGGA的灵灵活性在在于: (一一)I/O的灵灵活性,其其可以通通过其II/O组组成各种种接口与与各种器器件连接接,并且且支持不不同的电电气特性性。 (二二)内部部存储器器灵活性性,可以以通过IIP生成成工具生生成各种种深度和和宽度的的RAMM或者FFIFOO等。 (三三)逻辑辑的灵活活性,内内部逻辑辑通可生生成的各各种类型型IP。 对于于I/OO接口来来说,FFPGAA的I/O可以以支持不不同类型型的电平平和驱动动能力,各各I/OO未定义义之前其其地位平平等,例例如一个个数据信信号可将将其约束束在任意意引脚,只只要其电电平符合合连接的的规范。因因此硬件件工程师师基于这这种认识识,在PPCB布布线时,基基于布线线需要,便便调整其其布线的的顺序,例例如互换换两个信信号的位位置。通通常情况况上,这这种调整整是没有有任何问问题的。但但是随着着FPGGA的接接口IPP核硬核核化的趋趋势,逐逐渐由很很多的接接口IPP不能支支持这种种调整。例例如对于于较早的的SDRRAM或或者DDDRSDDRAMM来说,在在xillinxx和ALLTERRA的FFPGAA上,其其数据、地地址信号号等都是是可调的的。但是是随着DDDR22,DDDR3接接口的出出现,其其IP接接口,只只能支持持在某个个BANNK并且且例化结结束后直直接生成成相应的的约束文文件,而而这些的的改动将将会导致致布局布布线的错错误。另另一些例例子则是是一些高高速SEERDEES的组组合。例例如对于于XAUUI接口口来说,其其硬核IIP(AALTEERA)上上就不支支持4组组SERRDESS的顺序序互换,这这将会影影响其硬硬核FCCS的编编码。如如果板级级连接上上与PHHY的顺顺序与FFPGAA例化IIP的约约束不一一致,则则其硬核核PCSS就不能能布局布布线通过过(软核核FCSS可以支支持调整整)。这这种灵活活性认识识导致硬硬件板级级互联的的问题可可谓屡见见不鲜,特特别是系系统复杂杂度的上上升,板板级连线线的增加加,将会会导致设设计人员员疏忽从从而掉入入“灵活活性的陷陷阱”。解解决此类类问题的的方法。包包括(11)预评评估,在在设计之之前就在在FPGGA上评评估所需需的接口口的逻辑辑占用、约约束位置置、时钟钟需求等等等,预预先评估估给系统统设计提提供相应应的数据据支撑和和设计参参考。(22)沟通通,对于于设计的的变更,要要进行有有效沟通通,不能能使铁路路警察,各各管一段段。(33)设计计评审,虽虽然老套套,但每每个环节节上的评评审能有有效减少少掉入类类似陷阱阱的几率率。 对于内内部存储储资源,大大多数FFPGAA工程师师就是拿拿来就用用的状态态。而缺缺少整体体内部mmemoory规规划,一一般来说说,对于于单端口口、双端端口、假假双端口口,各型型芯片手手册中都都有明确确的定义义,例如如xillinxx的SPPATAAN3系系列中最最小RAAM单元元为188K。一一个RAAM例化化最小单单位就是是18KK。而新新的器件件中最小小单位一一般为99K。也也就是说说虽然工工程师例例化的较较小的RRAM,例例如2556*116.只只有4KK,但是是其也占占用一个个最小单单元,根根据器件件的不同同而不同同。而乱乱用双端端口导致致RAMM资源的的过分占占用则是是更常见见的设计计问题。FFPGAA内部对对于单个个RAMM能够支支持的真真双端口口是有限限制的。举举例说明明,对于于ALTTERAA的9KK的存储储单元一一般支持持5122*188的双端端口RAAM。但但如果是是一个2256*32的的双端口口则需要要占用22个9KK的存储储RAMM。也就就是说,RRAM器器件的能能力是有有限的,这这取决于于RAMM的外部部互联线线是有限限的,以以刚才说说的2556*332的双双端口RRAM来来说,其其需要数数据线就就是644根(双双端口),对对于单个个RAMM的连线线资源来来说,这这是FPPGA内内部逻辑辑资源难难以承受受的。所所以根据据器件特特定,合合理规划划内部mmemoory资资源,才才能在最最大限度度的达到到高效的的利用。 FFPGAA内部可可以例化化各型IIP,基基于IPP的复用用的可以以大大增增加研发发的进度度。但是是各种IIP的互互联之间间则需对对IP的的特性了了解清楚楚,明确确IP是是否为业业务所需需的IPP。有的的IP和和工程所所需可能能只是名名称一致致,但其其功能却却不是你你想要的的。例如如网口IIP在MMII连连接方式式下,是是用于FFPGAA连接PPHY的的操作。如如果FPPGA与与CPUU通过MMII连连接,现现有的IIP则难难以满足足需求。这这是因为为MIII连接PPHY其其所有的的时钟都都是PHHY提供供的。CCPU的的设计也也是与PPHY连连接,其其时钟也也有PHHY提供供。而如如果二者者连接,就就变成都都等着对对方提供供时钟,则则就变成成没有时时钟。这这种调试试问题相相对来说说容易解解决,不不过在系系统规划划是,就就需要对对整个IIP是否否能够满满足系统统的设计计要求,有有着明确确的判断断。 灵活活性是FFPGAA最大的的特性,在在设计中中避开那那些灵活活性的陷陷阱,才才能从FFPGAA整体上上提升设设计能力力,而不不是做只只会写VVeriilogg的码农农。毕竟竟FPGGA设计计不是软软件设计计,其最最终要成成为变成成硬件承承载的,每每一行语语句都要要考虑其其综合后后的电路路,才能能真正领领会FPPGA设设计的精精髓。从零开始调调试FPPGA “合抱之之木,生生于毫末末;九层层之台,起起于垒土土;千里里之行,始始于足下下。” 老老子道道德经 对于新手来来说,如如何上手手调试FFPGAA是关键键的一步步。对于每一个个新设计计的FPPGA板板卡,也也需要从从零开始始调试。那么如何开开始调试试?下面介绍一一种简易易的调试试方法。(1) 至至少设定定一个输输入时钟钟 innputt ssys_clkk;(2) 设设定输出出 ouutpuut N-11:0 lled;(3)设定定32位位计数器器 reeg 31:0 leed_ccnt;(4) 时时钟驱动动计数器器开始工工作alwayys(possedgge ssys_clkk)led_ccnt <= ledd_cnnt + 1(5)输出出ledd信号。assiggn lled = lled_cnttM:N;程序完成。(6)设定定管教约约束如果为XIILINNX FPPGA ,在UUCF文文件中 NNET “syys_cclk” LOCC = 管脚脚名称如果为ALLTERRA FPGGA ,在在QSFF文件中中,添加加 sset_loccatiion_asssignnmennt 管脚名名称 -to syys_cclk其他管脚,可可依次类类推。(7)编译译,布局局、布线线,生成成配置文文件。XILINNX 生成BBIT文文件。ALTERRA 生生成SOOF文件件(8)连接接JTAAG,下下载相应应的配置置文件。(9)观察察是否闪闪灯(肉肉眼可见见)。关于闪灯的的解释如如下:assiggn ledd = ledd_cnntMM:N; lled_cntt 为332biit的信信号,需需要几个个闪灯,则则根据输输入时钟钟的频率率和肉眼眼能够分分辨的时时间(1100mms)。如如输出时时钟为225Mhhz。则则闪灯看看见的位位置能够够分批到到10hhz。需需分频22.5MM= 332hh26225A00,因此此,则需需要输出出至少为为ledd_cnnt221位位,才能能看到闪闪灯。虽然程序简简单,但但是,通通过调试试可以确确认:(1)首先先可确定定JTAAG下载载器的正正确连接接,能够够正常下下载下载载文件。如如不能,常常见问题题包括(一)检查查是否安安装驱动动。(二)下载载器是否否由红灯灯变成黄黄灯/绿绿灯。如如红灯亮亮一般情情况下,JJTAGG的与电电路板VVCC没没有供电电。(三)检查查JTAAG连接接的线序序。(四)检查查JTAAG电路路,检查查原理图图上TMMS,TTDI,TTDO的的上拉和和下拉电电阻是否否与daatassheeet中一一致。通过以上四四种方式式,可排排除绝大大部分JJTAGG下载的的错误。(2)可以以判断晶晶振是否否起振,下下载后无无灯闪。(一)首先先,示波波器查看看晶振频频率,观观察晶振振的输出出,如无无输出,查查看晶振振的电源源和地信信号,如如电源正正常,而而晶振无无反应,则则更换晶晶振。(二)如无无示波器器,也有有替代的的方法,通通过嵌入入式逻辑辑分析仪仪抓信号号(任意意信号)。如如逻辑分分析仪点点击采样样后无反反应,则则无时钟钟输入。这是因为逻逻辑分析析仪也需需要时钟钟进行逻逻辑值的的存储。(3)如正正常下载载后闪灯灯,证明明该FPPGA板板卡硬件件设计上上能够达达到最低低限度的的FPGGA调试试状态。最后,说明明一下,为为什么是是闪灯而而不是亮亮灯的程程序,这这是因为为,首先先闪灯可可以判断断外部晶晶振工作作正常,并并且由于于LEDD等通常常为上拉拉,也就就是说逻逻辑值00表示灯灯亮,而而也不排排除某硬硬件工程程师非要要下拉。逻逻辑1表表示亮。因因此采用用闪灯更更加方便便。问题:为什什么LEED灯值值为什么么要上拉拉?这是因为:LEDD上拉后后,需要要灯亮时时电流由由外部电电源提供供,而下下拉,灯灯亮时电电流由芯芯片的CCMOSS电路驱驱动。这这种在设设计中应应避免。架构设计漫漫谈(一一)流驱驱动和调调用式勿用讳言,现现在国内内FPGGA开发发还处于于小作坊坊的开发发阶段,一一般都是是三、四四个人,七七八台机机器.小小作坊如如何也能能做出大大成果。这这是每个个FPGGA工程程师都要要面临的的问题。架架构设计计是面临临的第一一关。经经常有这这样的项项目,需需求分析析,架构构设计匆匆匆忙忙忙,号称称一两个个月开发发完毕,实实际上维维护项目目就花了了一年半半时间。主主要包括括几个问问题,一一,性能能不满足足需求。二二,设计计频繁变变更。三三,系统统不稳定定,调试试问题不不收敛。 磨刀不不误砍柴柴工,FFPGAA设计的的需求分分析是整整个设计计第一步步。如何何将系统统的功能能需求,转转换成FFPGAA的设计计需求,是是FPGGA架构构设计的的首要问问题。首首先, 需要明明确划分分软件和和硬件的的边界。软软件主要要处理输输入输出出、界面面显示、系系统管理理、设备备维护。而而FPGGA则负负责大数数据流的的处理。 如果果使用几几百元FFPGAA实现了了一个十十几元单单片机就就能完成成的功能能,就算算实现的的非常完完美,那那么这是是一个什什么样的的神设计计?任何何一个项项目都要要考虑成成本,研研发成本本、物料料成本、维维护成本本等等。FFPGAA的使用用位置必必定是其其他器件件难以企企及的优优势。 因此对对于一个个FPGGA架构构设计,其其首先需需要考虑虑就是性性能,如如没有性性能的需需求,其其他的处处理器AARM就就可能替替代其功功能。其其次就是是接口,用用于处理理器扩展展其没有有的接口口,作为为高速接接口转换换。最后后,需要要考虑就就是可维维护性,FFPGAA的调试试是非常常耗时的的,一个个大型的的FPGGA的编编译时间间在几小小时甚至至更高(通通过嵌入入式分析析仪抓信信号,每每天工作作8小时时,只能能分析两两到三次次)。而而软件调调试只需需makke,编编译时间间以秒来来记(这这个问题题可以通通过提升升编译服服务器性性能改善善而不能能消失,本本质上要要考虑可可测性设设计)。如如果不考考虑维护护性和可可测性,调调试成本本和压力力就非常常之大。 通常常,FPPGA的的大部分分架构设设计可以以采用数数据流驱驱动的方方式来实实现,例例子1,假假设一个个实现视视频解压压缩FPPGA的的设计,输输入是无无线接口口,输出出为显示示屏。那那么输入入输出的的接口基基本就能能确定。以以数据流流为驱动动可以粗粗略划分分,输入入接口->解压压缩模块块->视视频转换换模块->显示示接口。如如需要视视频缓冲冲,则确确定是否否需要连连接外部部存储器器。那就就需要确确认在什什么位置置进行数数据的缓缓冲。通通过要支支持显示示的画面面的质量量,就能能确认最最大码流流,同样样可以计计算视频频解压模模块和转转换模块块的计算算能力,从从而导出出所需的的内部总总线宽度度,系统统频率,以以及子模模块个数数等等。例例子2,某某支持通通过有线线电视网网上网电电视IPP网关,同同样也是是输入的的普通IIP网络络,输出出为有线线调试网网的调试试解调器器。将IIP报文文等长填填充后,在在固定时时隙内送送入有线线电视网网中,同同样也是是基于数数据流驱驱动的方方式。 数据流流驱动式式架构,可可以作为为FPGGA设计计中一个个最重要要的架构构。通常常来说应应用于IIP领域域、存储储领域、数数字处理理领域等等较大型型FPGGA设计计都是数数据流驱驱动式架架构,主主要包括括输入接接口单元元,主处处理单元元,输出出接口单单元。还还可能包包括,辅辅助处理理单元、外外部存储储单元。这这些单元元之间一一般采用用流水式式处理,即即处理完完毕后,数数据打包包发完下下一级处处理。其其中输入入输出可可能有多多个,此此时还需需要架构构内部实实现数据据的交换换。 另一种种较为常常用的架架构方式式为调用用式架构构,即一一般FPPGA通通过标准准接口如如PCII、PCCI-EE,CPPCI,PPCI-X,EEMIFF等等。各各种接口口,FPPGA内内部实现现某一加加速单元元,如视视频加速速,数据据处理,格格式转换换等操作作。这种种结构基基本基本本围绕FFPGAA接口、加加速单元元展开,属属于数据据的反馈馈类型,即即处理完完数据又又反馈回回接口模模块。 其其他虽然然各型各各样,如如SOPPC,如如各型接接口,但但本质上上其都是是为上述述架构服服务的,或或做配置置管理替替代外部部CPUU,或在在数据流流中间传传递中间间参数。或或在内部部实现CCPU+协处理理器的架架构,因因此说,无无他变化化。 孙子兵兵法云:“兵无无常势,水水无常形形”。但但是对于于一种设设计技术术来说,没没有一种种固定演演进的架架构和设设计,那那么项目目的整个个设计层层次总是是推到重重来,从从本质上上说,就就是一种种低水平平重复。如如果总结结规律,提提炼共性性,才能能在提升升设计层层次,在在小作坊坊中取得得大成果果。架构设计漫漫谈(二二)稳定定压倒一一切敏捷开发宣宣言中,有有一条定定律是“可以工工作的软软件胜过过面面俱俱到的文文档”。如何何定义可可可以工工作的,这这就是需需求确定定后架构构设计的的首要问问题。而而大部分分看这句句话的同同志更喜喜欢后半半句,用用于作为为不写文文档的借借口。FPGA的的架构设设计最首首先可以以确定就就是外接接接口,就就像以前前说的,稳稳定可靠靠的接口口是成功功的一半半。接口口的选择择需要考考虑几个个问题。1, 有有无外部部成熟IIP。一一般来说说,ALLTERRA和XILLINXX都提供供大量的的接口IIP,采采用这些些IP能够够提升研研发进度度,但不不同IPP在不同同FPGGA上需需要不同同liccensse,这这个需要要通过代代理商来来获得(中中国国情情,软件件是不卖卖钱的)。2, 自自研接口口IP,能能否满足足时间、进进度、稳稳定性、及及兼容性性的要求求。案例1设计计一个网网络接口口在逻辑辑设计上上相对简简单,比比如MIII接口口等同于于4biit数据据线的225MHHZ样,而而RGMMII可以以使用双双沿1225Mhhz的采采样专用用的双沿沿采样寄寄存器完完成(使使用寄存存器原语语)。但但是如何何支持与与不同PPHY连连接一个个兼容性性问题(所所谓设计计挑PHHY的问问题,这这个问题题后面详详述)。 案例2:CPUU通过接接口连接接FPGGA时,如如果CPPU此时时软复位位,则有有管脚会会上拉,此此时如果果该管脚脚连接FFPGAA接口是是控制信信号且控控制信号号高电平平有效,则则此时FFPGAA逻辑必必然出错错。同样样FPGGA在配配置时,管管教输出出高阻,如如此时CCPU上上电且板板级电路路管脚上上拉,则则同样会会导致CCPU采采样出错错(误操操作的问问题)。不能只是考考虑编写写verriloog代码码仿真能能对就行行,接口口设计应应该站在在系统的的角度来来看问题题,问题题不是孤孤立的,还还是互相相联系。设计中,如如果需要要存储大大量数据据,就需需要在外外部设计计外部存存储器,这这是因为为FPGGA内部部RAMM的数量量是有限限的。是是采用SSRAMM、DDRR2、DDRR3。这这就需要要综合考考虑存储储数据大大大小,因因为SRRAM的的容量也也有限,但但是其接接口简单单,实现现简单方方便,且且读取延延时较小小。DDDR2、DDRR3的容容量较大大,接口口复杂,但但FPGGA内部部有成熟熟IP可用用,但是是读取的的延时较较大,从从发起读读信号到到读回数数据一般般在十几几个时钟钟周期以以上。如如果对数数据时延延有要求求,需要要上一次次存储数数据作为为下一次次使用,且且数据量量不太大大(几百百K到几兆兆),则则SRAAM是较较好的选选择。而而其他方方面DDDR2/DDRR3是较较好的选选择。为为什么不不用SDDRAMM或者DDDR。这这是因为为设计完完毕,采采购会告告诉你,市市场上这这样老的的芯片基基本都停停产了。FPGA接接口在设设计选择择的原则则就是:能力够够用,简简单易用用。特别别值得一一提的是是高速SSERDDES接接口,最最好使用用厂商给给的参考考设计,有有硬核则则不选择择软核,测测试稳定定后,一一定要专专门的位位置约束束,避免免后面添添加的逻逻辑拥挤挤后影响响到接口口时序,也也可避免免接口设设计人员员与最终终的逻辑辑设计人人员扯皮皮(不添添加过多多逻辑,接接口是好好用的)。一一个分析析高速SSERDDES的的示波器器,采样样频率至至少200G甚至至更高以以上,动动辄上百百万,出出现问题题,不一一定有硬硬件条件件可调试试。回到开头,如如何定义义“可用的的”设计,稳稳定我想想是前提提,而接接口的稳稳定性更更是前提提的前提提。这里里稳定包包括,满满负荷边边界测试试,量产产、环境境试验等等一系列列稳定可可靠。而而在架构构设计中中,就选选择成熟熟的接口口,能有有效的避避免后续续流程中中的问题题,从源源头保证证产品的的质量。架构设计漫漫谈(三三)时钟钟和复位位接口确定以以后,FFPGAA内部如如何规划划?首先先需要考考虑就是是时钟和和复位。时钟:根据据时钟的的分类,可可以分为为逻辑时时钟,接接口时钟钟,存储储器时钟钟等; (11)逻辑辑时钟取取决与逻逻辑的关关键路径径,最终终值是设设计和优优化的结结果,从从经验而而不是实实际出发发:低端端FPGGA(ccycllonee sppanttan)工作频频率在440-880Mhhz之间间,而高高端器件件(sttrattix virrtexx)可达达1000-2000Mhhz之间间,根