俗话说,好的开始是成功的一半。在这个信息爆炸的时代,好的资料就是成功学习的一半。
时常看到有人在论坛上跪求资料,也有人在论坛上灌水换积分排队下资料。如果这篇文章能帮助大家花更少的时间找到更有价值的资料,那么我花时间维护这篇文章也就值了。
好,废话不多说,我们言归正传。写这篇文章主要想介绍Xilinx各种资料的找法、分类方法和什么问题该看哪些资料。限于经验,难免有错漏,希望大家指出错误并继续补充。
1. Xilinx软件介绍
用Xilinx的软件做FPGA开发,主要涉及到得软件是Xilinx自家的ISE, EDK, ChipScope Pro, System Generator, PlanAhead 和第三方的ModelSim和Synplify。
ISE是主要的逻辑设计软件,其他软件的具体实现功能都依附于ISE。ISE有Foundation版和WebPack版。WebPack版免费,Foundation版收费。两者的区别是支持的器件不同。功能是相同的。
WebPack版支持的功能可以看这里:
http://www.xilinx.com/ise/products/webpack_config.htm。
Foundation当然支持所有功能,功能列表可以在这里找到:
http://www.xilinx.com/ise/logic_design_prod/foundation.htm
说这些的目的是,如果开发所使用的器件是WebPack版支持的,那么就从网上下载免费版就好了,不用费劲心机地找Fondation版却用不到他支持的功能。
ChipScope Pro 是片内的逻辑分析仪。可以让用户方便地抓取片内信号进行debug。ChipScope支持的Trig方式非常多样,用熟悉了以后几乎是想要观察什么内部信号都可以观察到,即使他有BRAM深度的限制。
www.xilinx.com/chipscope
PlanAhead工具自从ISE7时代被开发出来并发展了这么多年之后,已经成为了提高设计效率和提高产品性能的有力工具。
它可以帮我们在布局布线之前做好管脚定位和DRC检查、规划区域约束、查看综合网表,并且可以跑多次实现,找出最佳的布局并分析时序。
www.xilinx.com/planahead
EDK - Embedded Development Kit,顾名思义就是用来做嵌入式系统的。
EDK提供对PowerPC硬核和MicroBlaze软核的支持,免费提供一些常用的硬件IP Core,比如各种Memory Controller、各种外设如IIC, SPI, GPIO,并集成了GNU工具链,使之成为软硬件设计一体化的设计工具。设计出的嵌入式系统集标准性与灵活性于一身,可以支持Linux等操作系统,也可让用户自己设计用户IP用作模块接口或硬件加速。
www.xilinx.com/edk
System Generator 借助 Matlab Simulink 的框架使DSP算法用图形化的数据流来说明,在Sysgen的帮助下DSP算法可以轻易在FPGA上实现。特别是它的Hardware Co-simulation功能大大降低了Debug的难度。
www.xilinx.com/sysgen
ISE 产品现在被包装为 ISE Design Suite 发布。Suite 分为 Logic Edition, Embedded Edtion 和 DSP Edition。每个套装都包含了必要的设计和调试工具。任何套装都可以从网站上下载30天免费评估版。
http://www.xilinx.com/ise_eval/index.htm
除了Xilinx的软件,我们通常还会用到一些第三方的软件,比如Synopsys (曾经Synplicity) 的 Synplify 综合工具,Mentor Graphic 的 ModelSim 工具等。
Synplify 可以替代 ISE 自带的 XST。他的优势是编译速度快,编译产生的网表质量可能更高(面积小,频率高);缺点是1.贵 2.对新器件的支持比原厂慢一拍。
ModelSim 是一款常用的仿真工具。其他和ISE搭配使用的仿真工具有Cadence的NC-Sim和Synopsys的VCS。ModelSim根据价格高低和支持功能的多少分为SE, PE, XE 等版本。其中XE是Xilinx Edition的意思,也就是Xilinx定制版。
ModelSim MX有免费的starter version,也有付费取得License的版本。ModelSim XE 可以和ISE WebPack 一起下载,安装以后在开始里面点licens_e request就可以申请starter的使用权了。另外,可以VHDL和Verilog各申请一个,那么就可以仿真两种语言了,不过不支持mix language。
http://www.xilinx.com/ise/verification/mxe_details.html
不过那一页说的ModelSim XE的use case不准,XE,PE,SE的差别还是仔细看这里吧。
http://www.xilinx.com/support/answers/24506.htm
ModelSim XE自带有Xilinx的仿真库。如果ISE软件升级,可以从Download Center下载更新的仿真库。如果使用ModelSim PE/SE,那么就需要使用compxlib工具编译仿真库。
2. 软件版本和软件更新
Xilinx的软件工具更新很频繁。自从IDS10以后,基本是三个月出一次升级包 (Service Pack),一年出一个新版本 (Major Version)。如此高的升级速度,一方面是为了更上新器件的支持要求,一方面是为了修补前期版本的bug。
那么我们是否需要以最快的速度更上更新的速度呢? 我的建议通常是:
正在进行中的项目,如果不是需要新功能或绕过某些已经存在的Bug,那么就不要盲目升级大版本,但是一定要勤快地升级到最新的升级包。
新设计尽量用新版本的最稳定版本。比如现在最近版本是11的时候,还是不要急于追新,用最稳定的10.1.03来做开发。
对于操作系统,建议也是类似的:
习惯使用Windows的用户还是用Windows XP SP2,最好还是英文版
公司最好能有一台大内存64位服务器跑RHEL Linux,提供多用户使用,也更适合跑大器件
(操作系统支持参考http://www.xilinx.com/ise/ossupport/index.htm)
所有以上的建议,目的归根到底可以总结为:
以最大努力保证设计平台的稳定(Windows XP 用的人最多;Linux的内存管理比Windows好,64位系统上的软件业更成熟)
避免陷入已知的Bug中浪费时间
减小遇到未知的Bug的可能性
在产品开发过程中,设计软件总是稳定比功能多来得重要,操作系统总是稳定比好看来得重要。
Xilinx所有的软件下载都可以在Download Center找到(www.xilinx.com/download) 。其内容包括:
IDS的完整版下载
IDS更新包的下载
CAE Vendor Library 就是第三方工具需要使用到的库文件,比如Cadence/Synopsys的综合工具、形式验证工具等。
ModelSim XE 版本的仿真库更新 (记得我们上面说过ModelSim XE不需要自己编译仿真库吗?)
Device Models 可以下载用于第三方仿真工具(HSpice, HyperLinks等)所需要使用的 IBIS、HSpice、BSDL模型等。
过往版本的ISE WebPack,可以到ISE Classic页面下载,但是不再提供付费软件的Evaluation。
http://www.xilinx.com/tools/classics.htm
过往版本的最终Update,也可以在Download Center找到,但是中间版本需要在以下这些Answer Record中查找:
http://www.xilinx.com/support/answers/10959.htm
http://www.xilinx.com/support/answers/31741.htm
3. 软件教程
作为入门教程来说,Xilinx的Free Course视频教程应该是最合适的了。访问
http://www.xilinx.com/support/training/free-courses.htm 可以找到关于Architecture, Software tools, HDL Coding technique等各方面的视频教程,内容丰富,且原汁原味,属于自我学习最好的参考资料。
放在Demosondemond网站上的那些视频教程的链接现在在主页上找不到了,但是可以从下面的链接进入:
http://www.demosondemand.com/clients/xilinx/001/page/index.asp
里面的视频教程内容有关于最新的硬件的,也有各种软件的,也算齐全,只不过不再有新内容更新了。
最近要查看demosondemand网站的录像需要注册了,dod的注册比较严格,注册需要公司邮件地址或者学校带edu的邮件地址。
视频资料还有一类,就是WebCast(网上研讨会录像)。WebCast不是Tutorial,它最主要不是说明工具怎么用,解释FPGA的具体结构等,而是根据当前的热门问题告诉大家你可以尝试哪些Solution来解决设计问题。看了WebCast后可以知道我可以再继续读哪方面资料来了解更详细的情况。
Xilinx网站上登录的过往的WebCast:http://www.xilinx.com/events/webcasts_od.htm
以前在TechOnline上搞过的WebCast:http://www.techonline.com/electronics_directory/webinar/896
最新的WebCast都是可以与演讲者实时互动的。就像我在这篇文章中提到的,曾经WebCast只在美国开设,时区跟我们有差异,中国用户很难参与到互动环节,但是中国的WebCast也逐渐多起来了。最新的中文研讨会信息,可以查询
http://china.xilinx.com/china/company/ch_events.htm。
参加研讨会不仅有机会抽奖得到小礼品,活跃互动者更有可能得到比较丰厚的礼品(看着IPOD就口水~~)。
接下来应该看的是Tutorial。
http://www.xilinx.com/support/techsup/tutorials/
主要是ISE, EDK, PlanAhead的,还有Timing Constraint的。
ISE做了Tutorial基本操作应该没问题了。
ChipScope比较简单看了Demosondemond的视频教程应该就会了。还不清楚的话看看安装目录里的UG029。
PlanAhead虽然比ChipScope复杂,但是视频教程还是很不错的,再加上Tutorial,应该也够了。
时序约束的那篇文档算是讲得比较全的,还有可以深入阅读的一篇文档就是wp237,关于offset约束的。
更进阶地了解ISE,需要阅读ISE的Manual。
打开Manual可以从开始菜单中ISE→Documentation→Software Manuals;
也可以在开始菜单中的ISE –> Documentation中找到。
列出几个重要的Manual:
XST User Guide (xst.pdf):关于XST的开关选项等
Command Tool and Development System Reference Guide (dev.pdf) :除了XST外的实现工具比如map, par, trce等的实用指南
Constraint Guide (cgd.pdf) :约束的指南。包括时序约束/非时序约束;UCF约束/XCF约束。
Synthesis and Simulation Guide (sim.pdf):其实主要是说明仿真的具体内容。
Library Guide:针对每个器件不同的primitive例化模板和说明。
ModelSim官方网站有些Flash的演示也很不错
http://www.model.com/resources/resources_demos.asp
安装目录下的User Guide如果能跟着做一遍,基本使用已经没有问题。
关于HDL的写法,除了XST User Guide中说明的支持的HDL语句,wp231也很实用。
关于EDK,最好的起步教程是EDK Concepts, Tools, and Techniques,可以在EDK Documents页面找到。这是一份既有讲解又有实战的Hands-on Guide。跟着他做一遍,EDK的大概功能心中就能有个数了。
EDK最重要的几篇文档也在安装目录的doc目录下。像ISE一般罗列几份最重要的如下:
est_rm.pdf : EDK系统的构成工具使用指南
psf_rm.pdf : EDK系统使用的各种文件格式的语法说明
oslib_rm.pdf: EDK提供的库文件说明
mb_ref_guide.pdf : MicroBlaze体系结构说明
由与非网登载的《基于XILINX FPGA片上嵌入式系统的用户IP开发》是一本关于设计Custom IP方面非常好的参考资料,现在也已经出版。
China-pub链接在此:http://www.china-pub.com/43606
EDK系统由于既牵涉到FPGA硬件和很多IP Core,又牵涉到C语言软件的编写和GNU工具链甚至Linux操作系统的相关知识,只是涉及范围之广,不是三言两语可以概括,因此文档也是多得数不过来,日后将再撰文祥述。
关于Sysgen,其实它的User Guide写的还是很不错的。他不仅提供了功能描述,并且详述了操作步骤,而且还带有实例工程,安装目录中提供例子很有参考价值。User Guide位于help目录下的sysgen_user.pdf
关于系统设计,Xilinx有本中文版的DSP书,名字叫《DSP:最佳结果设计》。免费放出PDF版本,在http://china.xilinx.com/publications/books/dsp/index.htm可以找到。
关于DSP的特性,System Generator教程,XtremeDSP Kit的演示,在Demosondemond的视频教程里也都有。
另外,Xilinx有丰富的客户培训教程,大客户由Xilinx直接上课,小客户交给第三方来完成的,中国这边是E-Elements。有机会参加的话也不错。对于学校教授,赛灵思大学计划还会在各高校不定时举办各种讲座,部分讲座可以从openhard观看视频。除此之外还有一个特别优待:只要是XUP大学计划的成员,就可以通过访问大学计划网页得到丰富的教学资料。
4. 硬件资料
所有的硬件资料不外乎DataSheet和User Guide。这些文档都可以在主页右上角的Documentation链接中找到。
User Guide阐述器件使用方法,DataSheet标明器件的具体参数。
User Guide 包括很多种。以Virtex5为例,User Guide的种类从片内资源 - 基本的Slice功能, BRAM, DSP, IOB的使用、复杂硬核GTP, EMAC, PPC等,到片外使用包括Configuration和PCB设计指导,都有自己的User Guide。
Datasheet也根据内容分类到不同的文档中。同样以Virtex5为例,Datasheet Overview 介绍了V5的Feature,所有家族成员的资源列表和提供的封装列表。DC and Switching Characteristics 文档中介绍了各种电压参数和时序参数。
文档网页http://www.xilinx.com/support/documentation/index.htm 在注册网站之后可以选择收取文档更新通知。
5. 参考资源
整体应用设计的参考资源可以分为三类:
Demo板的参考设计(Reference Design)
应用设计文档(Application Notes)
XCELL杂志中报道的各种应用。
在Demo板的网页上可以找到参考设计的链接。它通常都提供了Demo板上各种接口的驱动例程。比如
www.xilinx.com/ml507
www.xilinx.com/ml403
Xilinx Application Notes是另一种针对特定应用的说明文档。每篇文章期望解决一个问题,比如:
怎样通过外部CPU配置FPGA?
有哪些使用方法来帮助我debug嵌入式设计?
Application Notes文档编号都以xapp开头。
对于CPLD,有一个Application Note的合集,叫做CPLD Applications Handbook。
http://www.xilinx.com/publications/products/cpld/cpld_applications_handbook.pdf
XCELL不会提供设计文件,因为他是一项成功应用的介绍文档,通常他们会讲解一个真正产品中FPGA设计的结构和设计难点。
http://www.xilinx.com/publications/
Xilinx现在推行的“目标平台”概念,照我的理解其目的是希望让用户站在巨人的肩膀上,尽量少操心底层的细节,而更多地关注真正提供价值的设计。对于“目标平台”覆盖到的应用,都提供了从芯片选型、Demo板设计到参考设计。于是我们应该尽量多地利用现有资源,以降低设计难度加快上市速度。相信随着“目标平台”的发展,我们可以看到越来越多的有价值的参考设计。
6. 问题解决
再次重申,遇到软件问题先考虑自己有没有打上最新的Service Pack和IP Update。
如果有疑问,其实最快的方法不是到论坛提问,而是到Xilinx Answer Database找答案。大多数已知问题的答案那里边都有了。能不能找到就看会不会搜索了。
Xilinx的高级搜索http://www.xilinx.com/company/advanced-search.htm。、、在Answer Database选项上打勾,就能查找Answer Record。
当软件报出一个Error或者Warning,我们一定要先将错误信息通读一遍。英文的错误信息可能理解得不是很透彻,无法从这些信息里看到解决方法,不知道是自己错了还是软件bug,就可以按这个Error Message去Answer Database查找。
可以说解决问题有两种途径,一是自己解决,一是寻求帮助。通常我都觉得先尝试自己解决问题比较好,一来培养能力,二来仔细研究问题后,寻求别人的帮助更容易理解别人的指点,另一方面也更尊重给你指点的人。
7. 总结
在信息爆炸的时代,我们的资源太多,我们的时间太少。谨希望此文能够为在学习FPGA路途上的朋友们节省一些寻找资源的时间,而用更多的时间来创造自己的价值