FPGA开发全攻略(上).txt——某天你一定会感谢那个遗弃你的人,感谢那个你曾深爱着却置之你不顾的人。做一个没心没肺的人,比什么都强。________舍不得又怎样到最后还不是说散就散。《电子工程师创新设计必备宝典系列之FPGA开发全攻略》FPGA开发全攻略—工程师创新设计宝典上册基础篇2009年2月1.0版FPGA开发全攻略—工程师创新设计宝典上册基础篇前言张国斌电子书主编2009年2月25日2008年,我参加了几次可编程器件供应商举办的技术研讨会,让我留下深刻印象的是参加这些研讨会的工程师人数之多,简直可以用爆满来形容,很多工程师聚精会神地全天听讲,很少出现吃完午饭就闪人的现象,而且工程师们对研讨会上展出的基于可编程器件的通信、消费电子、医疗电子、工业等解决方案也有浓厚的兴趣,这和其他器件研讨会形成了鲜明的对比。Garnter和iSuppli公布的数据显示:2008年,全球半导体整体销售出现25年以来首次萎缩现象,但是,可编程器件却还在保持了增长,预计2008年可编程逻辑器件(PLD)市场销售额增长7.6%,可编程器件的领头羊美国供应商赛灵思公司2008年营业收入预计升6.5%!在全球经济危机的背景下,这是非常骄人的业绩!也足见可编程器件在应用领域的热度没有受到经济危机的影响!这可能也解释了为什么那么多工程师对可编程器件感兴趣吧。在与工程师的交流中,我发现,很多工程师非常需要普及以FPGA为代表的可编程器件的应用开发知识,也有很多工程师苦于进阶无门,缺乏专业、权威性的指导,在Google上搜索后,我发现很少有帮助工程师设计的FPGA电子书,即使有也只是介绍一些概念性的基础知识,缺乏实用性和系统性,于是,我萌生了出版一本指导工程师FPGA应用开发电子书的想法,而且这个电子书要突出实用性,让大家都可以免费下载,并提供许多技巧和资源信息,很高兴美国赛灵思公司对这个想法给予了大力支持,赛灵思公司亚太区市场经理张俊伟小姐和高级产品经理梁晓明先生对电子书提出了宝贵的意见,并提供了大量FPGA设计资源,也介绍了一些FPGA设计高手参与了电子书的编撰,很短的时间内,一个电子书项目团队组建起来,北京邮电大学的研究生田耘先生和赛灵思公司上海办事处的苏同麒先生等人都参与了电子书的编写,他们是有丰富设计经验的高手,在大家的共同努力下,这本凝结着智慧的FPGA电子书终于和大家见面了!我希望这本电子书可以成为对FPGA有兴趣或正在使用FPGA进行开发的工程师的手头设计宝典之一,也希望这个电子书可以对工程师们学习FPGA开发和进阶有实用的帮助!如果可能,未来我们还将出版后续版本!2.FPGA开发全攻略—工程师创新设计宝典上册基础篇目录前言2第一章、为什么工程师要掌握FPGA开发知识?5第二章、FPGA基本知识与发展趋势72.1FPGA结构和工作原理72.1.1梦想成就伟业72.1.2FPGA结构82.1.3软核、硬核以及固核的概念152.1.4从可编程器件发展看FPGA未来趋势15第三章、FPGA主要供应商与产品173.1.1赛灵思主要产品介绍17第四章、FPGA开发基本流程294.1典型FPGA开发流程与注意事项294.2基于FPGA的SOC设计方法32基于FPGA的典型SOC开发流程为32第五章、FPGA实战开发技巧335.1FPGA器件选型常识335.1.1器件的供货渠道和开发工具的支持335.1.2器件的硬件资源335.1.3电气接口标准345.1.4器件的速度等级355.1.5器件的温度等级355.1.6器件的封装355.1.7器件的价格355.2如何进行FPGA设计早期系统规划365.3.综合和仿真技巧375.3.1综合工具XST的使用375.3.2基于ISE的仿真425.3.3和FPGA接口相关的设置以及时序分析455.3.4综合高手揭秘XST的11个技巧515.4大规模设计带来的综合和布线问题525.5FPGA相关电路设计知识54FPGA开发全攻略—工程师创新设计宝典上册基础篇5.5.1配置电路545.5.2主串模式——最常用的FPGA配置模式565.5.3SPI串行Flash配置模式585.5.4从串配置模式625.5.5JTAG配置模式635.5.6SystemACE配置方案645.6大规模设计的调试经验685.6.1ChipScopePro组件应用实例685.7FPGA设计的IP和算法应用745.7.1IP核综述745.7.2FFTIP核应用示例755.8赛灵思FPGA的专用HDL开发技巧795.8.1赛灵思FPGA的体系结构特点795.8.2赛灵思FPGA芯片专用代码风格79ISE与EDK开发技巧之时序篇835.10新一代开发工具ISEDesignSuit10.1介绍855.10.1ISEDesignSuit10.1综述855.10.2ISEDesignSuit10.1的创新特性855.11ISE与第三方软件的配合使用技巧925.11.1SynplifyPro软件的使用925.11.2ModelSim软件的使用995.11.3SynplifyPro、ModelSim和ISE的联合开发流程1045.11.4ISE与MATLAB的联合使用1055.12征服FPGA低功耗设计的三个挑战1085.13高手之路——FPGA设计开发中的进阶路线111附录一、FPGA开发资源总汇112附录二、编委信息与后记113附录三、版权声明114FPGA开发全攻略—工程师创新设计宝典上册基础篇第一章、为什么工程师要掌握FPGA开发知识?作者:张国斌、田耘2008年年初,某著名嵌入式系统IT公司为了帮助其产品售后工程师和在线技术支持工程师更好的理解其产品,举行了ASIC/FPGA基础专场培训.由于后者因为保密制度而只能接触到板级电路图和LAYOUT,同时因ASIC/FPGA都是典型的SoC应用,通常只是将ASIC/FPGA当作黑盒来理解,其猜测性读图造成公司与外部及公司内部大量的无效沟通.培训结束后,参与者纷纷表示ASIC/FPGA的白盒式剖析极大提高了对产品的理解,有效解决了合作伙伴和客户端理解偏异性问题,参加培训的工程师小L表示:“FPGA同时拥有强大的处理功能和完全的设计自由度,以致于它的行业对手ASIC的设计者在做waferfabrication之前,也大量使用FPGA来做整个系统的板级仿真,学习FPGA开发知识不但提升了我们的服务质量从个人角度讲也提升了自己的价值。”实际上,小L只是中国数十万FPGA开发工程师中一个缩影,目前,随着FPGA从可编程逻辑芯片升级为可编程系统级芯片,其在电路中的角色已经从最初的逻辑胶合延伸到数字信号处理、接口、高密度运算等更广阔的范围,应用领域也从通信延伸到消费电子、汽车电子、工业控制、医疗电子等更多领域,现在,大批其他领域的工程师也像小L一样加入到FPGA学习应用大军中。未来,随着FPGA把更多的硬核如PowerPC.处理器等集成进来,以及采用新的工艺将存储单元集成,FPGA越来越成为一种融合处理、存储、接口于一体的超级芯片,“FPGA会成为一种板级芯片,未来的电子产品可以通过配置FPGA来实现功能的升级,实际上,某些通信设备厂商已经在尝试这样做了。”赛灵思公司全球资深副总裁汤立人这样指出。可以想象,未来,FPGA开发能力对工程师而言将成为类似C语言的基础能力之一,面对这样的发展趋势,你还能简单地将FPGA当成一种逻辑器件吗?还能对FPGA的发展无动于衷吗?电子产品设计趋势的变化自电子产品诞生之日起,电子产品开发流程和方法就随着电子元器件的不断演进而变化,从最早的电子管器件到晶体管再到集成电路,工程师在设计产品时,所采用的工具和方法都有所不同,但是总的来说贯穿电子设计的统一思路是:使用印刷电路板上的分立、现成元件、连接器或IC创建物理平台实现所需要的功能。例如,在60年代,如果要设计一个收音机,工程师必须通过在PCB板上通过晶体管、电阻、电容、电感、电线、滤波器、二极管等电路搭建出一个物理平台,实现对RF信号的调谐、滤波、放大等,最后实现收音机的功能。集成电路出现以后,一些分立器件被集成到一颗芯片上,但是总的设计思路没有变化,还是要在一个PCB板上通过无源器件和IC搭建出一个物理平台,实现信号的接收、处理和输出。但是,随着FPGA等可编程器件的诞生,设计思路正发生着微妙的变化——随着更多功能从分立器件移到可编程领域,各种不同的设计流程交汇到了一起。现在,有效的电子设计是将板卡设计、可编程逻辑设计和软件开发融合在一起,未来,随着FPGA融合处理、存储于一体,板卡设计将融合进可编程逻辑设计中,电子产品设计将演变为可编程逻辑设计和嵌入式软件设计,那时,电子设计将更体现一种“软”设计,一种通过开发语言和工具实现的设计,而FPGA将成为这种5.FPGA开发全攻略—工程师创新设计宝典上册基础篇“软”设计的载体,以FPGA形式存在的低成本、大规模可编程器件可以随时随地获得,这使设计者有可能将所有系统核心功能都转移到软设计中,并利用这种设计的优势。这些“软”设计优势包括:更容易保护系统功能使其不被仿制或逆向工程,编程到设计中的“软”元素容易更新,使设计过程更具连续性。好的工具所设计的软设计不依赖于事先指定的硬件平台。而且,设计可以在最终硬件平台内继续进行,即使产品已经移交客户也仍然可行。即“软”设计将成为电子设计的发展方向。另一点,现今及未来的电子产品都在追求智能化和个性化,智能化只能通过软件来实现,个性化呢,需要工程师简单地修改就可体现不同的特色,另外也需要保护自己的设计不被仿制,要做到这点,也需要可编程器件。每个工程师都希望自的产品永远与众不同。与众不同就是要让产品与竞争产品不一样,让购买者选择你的产品而不选择竞争对手的产品。但是,怎么样才能在日益全球化的市场中保持与众不同呢?不要再指望在硬件上能达到目的,因为现在几乎每个人都能获得同样的芯片。当现有物理硬件中实现的任何功能受到市场的欢迎的同时,大量的仿制就出现了。所以要将产品的区别建立在编程器件智能上,保护有价值的IP,并且使竞争对手很难对其进行逆向工程。而且,即使硬件已经制造出来,产品仍可以通过“软”设计进行创新并为产品增值,产品的成功就有了保障。而这些,都离不开可编程器件。可编程器件是实现“软”设计的保障和载体。电子设计工程师设计方法和设计内容在不断变化电子设计工程师的设计方法和内容其实也在一直变化,电子管时代,设计工程师要掌握电子管的性能和设计要点,晶体管时代,设计工程师要熟悉跟中电路的作用和搭建,集成电路诞生以后,设计工程师要熟悉IC管脚的作用和功能,而设计工具从最早的草稿图、软件辅助设计也发展到电子设计自动化工具(EDA软件),以FPGA为代表的可编程器件诞生后,设计工程师不但要设计硬件电路更要熟悉HDL、Verilog等IC设计语言,此外,还要熟悉接口、数字信号处理、算法、EDA设计方法学等等,电子工程师要学习的知识日益增多。未来的硬件工程师是什么样的?那么,未来的的硬件设计工程师是什么样的?或者说未来的硬件设计工程是怎样的?而已这样说:以VHDL或者Verilog语言来表达设计意图、以FPGA做为硬件载体、以计算机为设计开发工具,以EDA软件为开发环境、以SoC、IP等为综合设计的方法,已经成为硬件设计工程的主要特征。可以预见,FPGA将成为未来的硬件工程师必用的设计元素之一。另外,FPGA在应用中的其他显著优势是可以减少BOM整合多个分立的数字器件(例如一个很小很便宜的CPLD可以替换好几个74系列芯片)、降低PCB布线难度(MGT/GTP等串行收发器将原本与需要三五十条线并行数据线替换为少量的串行线路)、可定制性(可以自己写代码来支持非标准的接口),可扩展性(可编程易修改方便升级)、加速面市时间(只需关心功能实现,不需要再花时间制成专用IC)等,这样FPGA带给设计的公司的好处已经不是从成本体现了,它可以大幅度提升开发的效率!综上所述,我们就明白为什么工程师要掌握FPGA开发知识了,希望本书有助于大家了解和掌握FPGA开发。6.FPGA开发