<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[FPGA Notes]]></title> 
<link>http://www.fpganotes.com/index.php</link> 
<description><![CDATA[Learning Notes about Xilinx FPGA, ISE, EDK and IC Industry]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[FPGA Notes]]></copyright>
<item>
<link>http://www.fpganotes.com/ncd_compare/</link>
<title><![CDATA[怎样比较两个NCD的内容是否一样？]]></title> 
<author>RickySu &lt;sutongqi+blog@gmail.com&gt;</author>
<category><![CDATA[技术经验]]></category>
<pubDate>Thu, 17 Sep 2009 09:36:01 +0000</pubDate> 
<guid>http://www.fpganotes.com/ncd_compare/</guid> 
<description>
<![CDATA[ 
	<a href="http://pic.fpganotes.com/images/ricky/orangeapple.jpg" target="_blank"><img src="http://pic.fpganotes.com/images/ricky/orangeapple.jpg" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>有时我们想检验同样条件下生成的NCD文件是否一致。这时，仅通过比较文件大小当然是信不过的。如果是用MD5工具做检验，会发现两个NCD文件总是不同，这时为什么呢？<br/><br/>首先，NCD是二进制文件，而且他内部还包含生成文件的时间戳，因此直接比较的话，肯定是有部分不完全相同的。<br/><br/>那么怎么比较两个NCD文件的真正内容是否相同呢？<br/><br/>我们可以用ISE自带的XDL工具。<br/><div class="code">xdl -ncd2xdl xx.ncd</div><br/>XDL以文本的方式将NCD文件的内容表示出来。我们再比较两个导出的XDL文件就可以比较两个NCD文件有什么区别了。<br/>Tags - <a href="http://www.fpganotes.com/tags/ise_utilities/" rel="tag">ise utilities</a>
]]>
</description>
</item><item>
<link>http://www.fpganotes.com/rpm_rloc_dirt_hardmacro/</link>
<title><![CDATA[手动布局之RPM RLOC DIRT 和 Hard Macro]]></title> 
<author>RickySu &lt;sutongqi+blog@gmail.com&gt;</author>
<category><![CDATA[技术经验]]></category>
<pubDate>Fri, 11 Sep 2009 10:01:49 +0000</pubDate> 
<guid>http://www.fpganotes.com/rpm_rloc_dirt_hardmacro/</guid> 
<description>
<![CDATA[ 
	<a href="http://pic.fpganotes.com/images/ricky/point.jpg" target="_blank"><img src="http://pic.fpganotes.com/images/ricky/point.jpg" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>本文试着讨论手工布局的原因、方法、工具和差异。欢迎拍砖和讨论。<br/><br/>Q1. 为啥要手工布局？<br/>A1. 首先人比机器更聪明，更了解自己设计的需求和结构。其次在关键路径上的手工布局能提高时序性能，使不满足要求变成满足要求。更多原因和性能的比较分析，可以参见一篇叫做<<a href="http://www.google.com/search?q=death+of+the+rloc" target="_blank">Death of the RLOC?</a>>的文章。IEEE上有，版权所限，我就不贴了。<br/><br/>Q2. 有没有可能整个设计都用手工布局？<br/>A2. 从原理上来说是没有不可能的，但这是没有必要的。我们只要保证最关键的路径能满足时序要求即可。<br/><br/>Q3. 手工布局牵涉哪些技术？<br/>A3. RPM - Relatively Placed Macros （其实就是使用RLOC约束限制布局的相对关系）<br/>&nbsp;&nbsp;&nbsp;&nbsp; DIRT - Directed Routing （不仅限制位置，还限制走线）<br/>&nbsp;&nbsp;&nbsp;&nbsp; HardMacro - 硬核，记录所有信息<br/><br/>Q4. Hard Macro 和 RPM + DIRT 的功能有什么区别吗？<br/>A4. RPM位置基于Slice，Slice-based RPM可以在Slice所有范围内任意布局，不以CLB的位置作为分界。Grid-based RPM只是加入了BRAM乘法器之类的支持，原则上也跟CLB边界无关。而Hard Macro只有在完全相同的结构内在可以移动，所以他的边界至少是CLB，某些时候还需要考虑BRAM和乘法器的位置。<br/><br/>Q5. 什么是Slice-based RPM 和 Grid-based RPM？<br/>A5. Slice-based 方法为整个器件内的slice设定坐标。看上去两个相邻的坐标位置实际上可能中间隔着一个BRAM。Grid-based则将整个器件统一编址，坐标系统看上去可能在某些地方会有缺少，但是不会造成上面提到的那种现象。<br/><br/>Q6. 什么时候用Slice-based RPM，什么时候又用Grid-based RPM呢？<br/>A6. 如果RPM中包含既有Slice又有乘法器、DSP48、BRAM等器件的时候，就用Grid。如果RPM中只含有Slice，那么两种都可以使用，但是用Slice-based更简单一点，因为他的X和Y坐标都是逐个增加的。<br/><br/>Q7. 有什么工具可以用来做RPM？<br/>A7. FloorPlanner和PlanAhead都可以生成包含RPM的UCF。我们也可以自己将一些约束添加到VHDL/Verilog中去。RPM规模较小时，后者更方便。用FPGA Editor生成DIRT约束时，也会同时产生相关路径RPM的约束。<br/><br/>Q8. 通常RPM都是多大规模？<br/>A8. 通常RPM只是规定关键路径的位置，因此不会很大。比如3-5个寄存器之间的位置关系、BRAM和输出数据的第一级寄存器的位置关系等等，这些都不涉及到很多的元件。当然FloorPlanner可以把整个已布局的设计都导出成RPM，但个人以为没多大用处。<br/><br/>Q9. 用FloorPlanner建RPM的流程是什么？<br/>A9. 参见Xapp422<br/><br/>Q10. 用PlanAhead建RPM的流程是什么？<br/>A10. 导出Pblock就行。详细文档可以查阅PlanAhead User Guide。<br/><br/>Q11. 手动写RPM的约束会很难吗？<br/>A11. 其实更简单更方便。一个例子：<br/><div class="code">(* RLOC = &quot;X1Y2&quot; *)<br/>reg e_reg;</div><br/><br/>另一个例子：<br/><div class="code">(* RLOC = &quot;X0Y1&quot; *)<br/>FDCPE #(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.INIT(1&#039;b0) // Initial value of register (1&#039;b0 or 1&#039;b1)<br/>&nbsp;&nbsp; ) FDCPE_a (<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Q(a_reg),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Data output<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.C(clk),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Clock input<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.CE(1&#039;b1),&nbsp;&nbsp;&nbsp;&nbsp;// Clock enable input<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.CLR(reset),&nbsp;&nbsp;// Asynchronous clear input<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.D(a),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Data input<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.PRE(1&#039;b0)&nbsp;&nbsp; // Asynchronous set input<br/>&nbsp;&nbsp; );</div><br/><br/>Q12. RPM的语法是什么？<br/>A12. 最基本的就是RLOC约束的用法。参考Constraint Guide.<br/><br/>Q13. RPM有没有什么辅助约束？<br/>A13. RLOC_ORIGIN和RLOC_RANGE可以规定把某个RPM放在设计中的某个位置。 RPM可以建组（H_SET, U_SET, HU_SET）。几个寄存器放在一个Slice里的时候，可以用BEL规定某个寄存器的位置，甚至还可以用LOCK_PINS约束规定某个寄存器IO的位置。这些约束的定义都在Constraint Guide中。<br/><br/>Q14. 怎么做DIRT呢？<br/>A14. 打开FPGA Editor，打开布局布线好的ncd文件，选择Tools --> Directed Routing Constraints...， 选中关心的网线，生成UCF或将约束显示在FPGA Editor Console中，然后复制到HDL代码或UCF中。更详细的流程参考Constraint Guide -->DIRT.<br/><br/>Q15. 怎么做Hard Macro呢？<br/>A15. 还是用FPGA Editor。将NCD存成NMC， 删除不关心的逻辑，包括所有IO。与外部逻辑交互的端口通过Edit --> Add Hardmacro External Pin 添加Hard Macro Pin. 更详细的流程参考<a href="http://www.xilinx.com/support/answers/10901.htm" target="_blank">AR10901</a>.<br/><br/>Q16. 怎么用Hard Macro呢？<br/>A16. 在设计源代码中要使用Hard Macro的地方，就用一个Black Box就可以了。NMC文件放在工程目录下。<br/><br/>OK. 我在学习中碰到的问题基本都讲到了。还有问题大家就留言讨论吧。<br/><br/>【参考文档】<br/><a href="http://www.xilinx.com/support/documentation/application_notes/xapp416.pdf" target="_blank">Xapp416</a> - Using an RPM Grid Macro to Control Block RAM to FF Timing<br/><a href="http://www.xilinx.com/support/documentation/application_notes/xapp422.pdf" target="_blank">Xapp422</a> - Creating RPM using 6.2i Floorplanner<br/><a href="http://www.xilinx.com/support/documentation/white_papers/wp329.pdf" target="_blank">WP329</a> - Relationally Placed Macros<br/>Death of the RLOC? - IEEE doc<br/>Constraint Guide - RLOC, DIRT, etc.<br/><br/>Tags - <a href="http://www.fpganotes.com/tags/rpm/" rel="tag">rpm</a> , <a href="http://www.fpganotes.com/tags/dirt/" rel="tag">dirt</a> , <a href="http://www.fpganotes.com/tags/implementation/" rel="tag">implementation</a>
]]>
</description>
</item><item>
<link>http://www.fpganotes.com/Xilinx_Web_Guide/</link>
<title><![CDATA[Xilinx网站资源导读 - 新手起步 高手进阶 老少咸宜 ISE11版]]></title> 
<author>RickySu &lt;sutongqi+blog@gmail.com&gt;</author>
<category><![CDATA[技术经验]]></category>
<pubDate>Wed, 26 Aug 2009 13:54:27 +0000</pubDate> 
<guid>http://www.fpganotes.com/Xilinx_Web_Guide/</guid> 
<description>
<![CDATA[ 
	<span style="color: #FF0000;">序</span><br/><br/>虽然自己也曾想过，但如果不是向农要求，把曾经写过的文章编排整理，我是静不下心来好好做这件事的。温故而知新，可以为师已。与大家共勉。<br/><br/>俗话说，好的开始是成功的一半。在这个信息爆炸的时代，好的资料就是成功学习的一半。<br/>时常看到有人在论坛上跪求资料，也有人在论坛上灌水换积分排队下资料。如果这篇文章能帮助大家<strong>花更少的时间找到更有价值的资料</strong>，那么我花时间维护这篇文章也就值了。<br/><br/>---------版权声明-----------<br/>本文作者 Ricky Su<br/><a href="http://www.fpganotes.com" target="_blank">www.fpganotes.com</a><br/>rickysu.fpga@gmail.com<br/><br/>欢迎转载，转载请保持原样及署名<br/>商业使用须得到本人授权<br/>---------版权声明-----------<br/><br/>好，废话不多说，我们言归正传。写这篇文章主要想<strong>介绍Xilinx各种资料的找法、分类方法和什么问题该看哪些资料</strong>。限于经验，难免有错漏，希望大家指出错误并继续补充。<br/><br/>Topics:<br/>1. Xilinx软件介绍<br/>2. 软件版本和软件更新<br/>3. 软件教程哪里找<br/>4. 硬件资料<br/>5. 参考设计<br/>6. 问题解决<br/><br/><br/>---------版权声明-----------<br/>本文作者 Ricky Su<br/><a href="http://www.fpganotes.com" target="_blank">www.fpganotes.com</a><br/>rickysu.fpga@gmail.com<br/><br/>欢迎转载，转载请保持原样及署名<br/>商业使用须得到本人授权<br/>---------版权声明-----------<br/><br/><span style="color: #FF0000;">1. Xilinx软件介绍</span><br/><br/>用Xilinx的软件做FPGA开发，主要涉及到得软件是Xilinx自家的ISE, EDK, ChipScope Pro, System Generator, PlanAhead 和第三方的ModelSim和Synplify。<br/><br/>ISE是主要的逻辑设计软件，其他软件的具体实现功能都依附于ISE。ISE有Foundation版和WebPack版。WebPack版免费，Foundation版收费。两者的区别是支持的器件不同。功能是相同的。<br/><br/>WebPack版支持的功能可以看这里：<a href="http://www.xilinx.com/ise/products/webpack_config.htm" target="_blank">http://www.xilinx.com/ise/products/webpack_config.htm</a>。<br/>Foundation当然支持所有功能，功能列表可以在这里找到：<a href="http://www.xilinx.com/ise/logic_design_prod/foundation.htm" target="_blank">http://www.xilinx.com/ise/logic_design_prod/foundation.htm</a>。<br/>说这些的目的是，如果开发所使用的器件是WebPack版支持的，那么就从网上下载免费版就好了，不用费劲心机地找Fondation版却用不到他支持的功能。<br/><br/>ChipScope Pro 是片内的逻辑分析仪。可以让用户方便地抓取片内信号进行debug。ChipScope支持的Trig方式非常多样，用熟悉了以后几乎是想要观察什么内部信号都可以观察到，即使他有BRAM深度的限制。<br/><a href="http://www.xilinx.com/chipscope" target="_blank">www.xilinx.com/chipscope</a><br/><br/>PlanAhead工具自从ISE7时代被开发出来并发展了这么多年之后，已经成为了提高设计效率和提高产品性能的有力工具。<br/>它可以帮我们在布局布线之前做好管脚定位和DRC检查、规划区域约束、查看综合网表，并且可以跑多次实现，找出最佳的布局并分析时序。<br/><a href="http://www.xilinx.com/planahead" target="_blank">www.xilinx.com/planahead</a><br/><br/>EDK - Embedded Development Kit，顾名思义就是用来做嵌入式系统的。它提供对PowerPC硬核和MicroBlaze软核的支持，免费提供一些常用的硬件IP Core，比如各种Memory Controller、各种外设如IIC, SPI, GPIO，并集成了GNU工具链，使之成为软硬件设计一体化的设计工具。设计出的嵌入式系统集标准性与灵活性于一身，可以支持Linux等操作系统，也可让用户自己设计用户IP用作模块接口或硬件加速。<br/><a href="http://www.xilinx.com/edk" target="_blank">www.xilinx.com/edk</a><br/><br/>System Generator借助Matlab Simulink的框架使DSP算法用图形化的数据流来说明，在Sysgen的帮助下DSP算法可以轻易在FPGA上实现。特别是它的Hardware Co-simulation功能大大降低了Debug的难度。<br/><a href="http://www.xilinx.com/sysgen" target="_blank">www.xilinx.com/sysgen</a><br/><br/>ISE 产品现在被包装为 ISE Design Suite 发布。Suite 分为 Logic Edition, Embedded Edtion 和 DSP Edition。每个套装都包含了必要的设计和调试工具。任何套装都可以从网站上下载30天免费评估版。<br/><a href="http://www.xilinx.com/ise_eval/index.htm" target="_blank">http://www.xilinx.com/ise_eval/index.htm</a><br/><br/>除了Xilinx的软件，我们通常还会用到一些第三方的软件，比如Synopsys (曾经Synplicity) 的 Synplify 综合工具，Mentor Graphic 的 ModelSim 工具等。<br/><br/>Synplify 可以替代 ISE 自带的 XST。他的优势是编译速度快，编译产生的网表质量可能更高（面积小，频率高）；缺点是1.贵 2.对新器件的支持比原厂慢一拍。<br/><br/>ModelSim 是一款常用的仿真工具。其他和ISE搭配使用的仿真工具有Cadence的NC-Sim和Synopsys的VCS。ModelSim根据价格高低和支持功能的多少分为SE, PE, XE 等版本。其中XE是Xilinx Edition的意思，也就是Xilinx定制版。<br/><br/>ModelSim MX有免费的starter version，也有付费取得License的版本。ModelSim XE 可以和ISE WebPack 一起下载，安装以后在开始里面点licens_e request就可以申请starter的使用权了。另外，可以VHDL和Verilog各申请一个，那么就可以仿真两种语言了，不过不支持mix language。<a href="http://www.xilinx.com/ise/verification/mxe_details.html" target="_blank">http://www.xilinx.com/ise/verification/mxe_details.html</a><br/>不过那一页说的ModelSim XE的use case不准，XE,PE,SE的差别还是仔细看这里吧。<a href="http://www.xilinx.com/support/answers/24506.htm" target="_blank">http://www.xilinx.com/support/answers/24506.htm</a><br/><br/>ModelSim XE自带有Xilinx的仿真库。如果ISE软件升级，可以从Download Center下载更新的仿真库。如果使用ModelSim PE/SE，那么就需要使用compxlib工具编译仿真库。<br/><br/><span style="color: #FF0000;">2. 软件版本和软件更新</span><br/><br/>Xilinx的软件工具更新很频繁。自从IDS10以后，基本是三个月出一次升级包 (Service Pack)，一年出一个新版本 (Major Version)。如此高的升级速度，一方面是为了更上新器件的支持要求，一方面是为了修补前期版本的bug。<br/><br/>那么我们是否需要以最快的速度更上更新的速度呢？ 我的建议通常是：<br/>- 正在进行中的项目，如果不是需要新功能或绕过某些已经存在的Bug，那么就不要盲目升级大版本，但是一定要勤快地升级到最新的升级包。<br/>- 新设计尽量用新版本的最稳定版本。比如现在最近版本是11的时候，还是不要急于追新，用最稳定的10.1.03来做开发。<br/><br/>对于操作系统，建议也是类似的：<br/>- 习惯使用Windows的用户还是用Windows XP SP2，最好还是英文版<br/>- 公司最好能有一台大内存64位服务器跑RHEL Linux，提供多用户使用，也更适合跑大器件<br/>(操作系统支持参考<a href="http://www.xilinx.com/ise/ossupport/index.htm)" target="_blank">http://www.xilinx.com/ise/ossupport/index.htm)</a><br/><br/>所有以上的建议，目的归根到底可以总结为：<br/>1. 以最大努力保证设计平台的稳定（Windows XP 用的人最多；Linux的内存管理比Windows好，64位系统上的软件业更成熟）<br/>2. 避免陷入已知的Bug中浪费时间<br/>3. 减小遇到未知的Bug的可能性 <br/><br/>在产品开发过程中，设计软件总是稳定比功能多来得重要，操作系统总是稳定比好看来得重要。<br/><br/>Xilinx所有的软件下载都可以在Download Center找到(<a href="http://www.xilinx.com/download)" target="_blank">www.xilinx.com/download)</a> 。其内容包括：<br/>- IDS的完整版下载<br/>- IDS更新包的下载<br/>- CAE Vendor Library 就是第三方工具需要使用到的库文件，比如Cadence/Synopsys的综合工具、形式验证工具等。<br/>- ModelSim XE 版本的仿真库更新 （记得我们上面说过ModelSim XE不需要自己编译仿真库吗？）<br/>- Device Models 可以下载用于第三方仿真工具(HSpice, HyperLinks等)所需要使用的 IBIS、HSpice、BSDL模型等。<br/><br/>过往版本的ISE WebPack，可以到ISE Classic页面下载，但是不再提供付费软件的Evaluation。<br/><a href="http://www.xilinx.com/tools/classics.htm" target="_blank">http://www.xilinx.com/tools/classics.htm</a><br/>过往版本的最终Update，也可以在Download Center找到，但是中间版本需要在以下这些Answer Record中查找：<br/><a href="http://www.xilinx.com/support/answers/10959.htm" target="_blank">http://www.xilinx.com/support/answers/10959.htm</a><br/><a href="http://www.xilinx.com/support/answers/31741.htm" target="_blank">http://www.xilinx.com/support/answers/31741.htm</a><br/><br/><br/><br/>---------版权声明-----------<br/>本文作者 Ricky Su<br/><a href="http://www.fpganotes.com" target="_blank">www.fpganotes.com</a><br/>rickysu.fpga@gmail.com<br/><br/>欢迎转载，转载请保持原样及署名<br/>商业使用须得到本人授权<br/>---------版权声明-----------<br/><br/><span style="color: #FF0000;">3. 软件教程</span><br/><br/>作为入门教程来说，Xilinx的Free Course视频教程应该是最合适的了。访问<span style="color: #FF0000;"><a href="http://www.xilinx.com/support/training/free-courses.htm" target="_blank">http://www.xilinx.com/support/training/free-courses.htm</a></span>可以找到关于Architecture, Software tools, HDL Coding technique等各方面的视频教程，内容丰富，且原汁原味，属于自我学习最好的参考资料。<br/><br/>放在Demosondemond网站上的那些视频教程的链接现在在主页上找不到了，但是可以从下面的链接进入：<br/><span style="color: #FF0000;"><a href="http://www.demosondemand.com/clients/xilinx/001/page/index.asp" target="_blank">http://www.demosondemand.com/clients/xilinx/001/page/index.asp</a></span><br/>里面的视频教程内容有关于最新的硬件的，也有各种软件的，也算齐全，只不过不再有新内容更新了。<br/>最近要查看demosondemand网站的录像需要注册了，dod的注册比较严格，注册需要公司邮件地址或者学校带edu的邮件地址。<br/><br/>视频资料还有一类，就是WebCast（网上研讨会录像）。WebCast不是Tutorial，它最主要不是说明工具怎么用，解释FPGA的具体结构等，而是根据当前的热门问题告诉大家你可以尝试哪些Solution来解决设计问题。看了WebCast后可以知道我可以再继续读哪方面资料来了解更详细的情况。<br/>Xilinx网站上登录的过往的WebCast：<span style="color: #FF0000;"><a href="http://www.xilinx.com/events/webcasts_od.htm" target="_blank">http://www.xilinx.com/events/webcasts_od.htm</a></span><br/>以前在TechOnline上搞过的WebCast：<a href="http://www.techonline.com/electronics_directory/webinar/896" target="_blank">http://www.techonline.com/electronics_directory/webinar/896</a><br/><br/>最新的WebCast都是可以与演讲者实时互动的。就像我在<a href="http://www.fpganotes.com/post/315/" target="_blank">这篇文章</a>中提到的，曾经WebCast只在美国开设，时区跟我们有差异，中国用户很难参与到互动环节，但是中国的WebCast也逐渐多起来了。最新的中文研讨会信息，可以查询<a href="http://china.xilinx.com/china/company/ch_events.htm" target="_blank">http://china.xilinx.com/china/company/ch_events.htm</a>。参加研讨会不仅有机会抽奖得到小礼品，活跃互动者更有可能得到比较丰厚的礼品（看着IPOD就口水~~）。<br/><br/>接下来应该看的是Tutorial。<br/><a href="http://www.xilinx.com/support/techsup/tutorials/" target="_blank">http://www.xilinx.com/support/techsup/tutorials/</a><br/>主要是ISE, EDK, PlanAhead的，还有Timing Constraint的。<br/><br/>ISE做了Tutorial基本操作应该没问题了。<br/>ChipScope比较简单看了Demosondemond的视频教程应该就会了。还不清楚的话看看安装目录里的UG029。<br/>PlanAhead虽然比ChipScope复杂，但是视频教程还是很不错的，再加上Tutorial，应该也够了。<br/>时序约束的那篇文档算是讲得比较全的，还有可以深入阅读的一篇文档就是<a href="http://www.xilinx.com/support/documentation/white_papers/wp237.pdf" target="_blank">wp237</a>，关于offset约束的。<br/><br/>更进阶地了解ISE，需要阅读ISE的Manual。打开Manual可以从开始菜单中ISE->Documentation->Software Manuals；也可以在开始菜单中的ISE --> Documentation中找到。<br/><br/>列出几个重要的Manual：<br/>XST User Guide (xst.pdf)：关于XST的开关选项等<br/>Command Tool and Development System Reference Guide (dev.pdf) ：除了XST外的实现工具比如map, par, trce等的实用指南<br/>Constraint Guide (cgd.pdf) ：约束的指南。包括时序约束/非时序约束；UCF约束/XCF约束。<br/>Synthesis and Simulation Guide (sim.pdf)：其实主要是说明仿真的具体内容。<br/>Library Guide：针对每个器件不同的primitive例化模板和说明。<br/><br/>ModelSim官方网站有些Flash的演示也很不错<br/><a href="http://www.model.com/resources/resources_demos.asp" target="_blank">http://www.model.com/resources/resources_demos.asp</a><br/>安装目录下的User Guide如果能跟着做一遍，基本使用已经没有问题。<br/><br/>关于HDL的写法，除了XST User Guide中说明的支持的HDL语句，<a href="http://www.xilinx.com/support/documentation/white_papers/wp231.pdf" target="_blank">wp231</a>也很实用。<br/><br/>关于EDK，最好的起步教程是EDK Concepts, Tools, and Techniques，可以在<a href="http://www.xilinx.com/ise/embedded/edk_docs.htm" target="_blank">EDK Documents</a>页面找到。这是一份既有讲解又有实战的Hands-on Guide。跟着他做一遍，EDK的大概功能心中就能有个数了。<br/><br/>EDK最重要的几篇文档也在安装目录的doc目录下。像ISE一般罗列几份最重要的如下：<br/>est_rm.pdf : EDK系统的构成工具使用指南<br/>psf_rm.pdf : EDK系统使用的各种文件格式的语法说明<br/>oslib_rm.pdf: EDK提供的库文件说明<br/>mb_ref_guide.pdf : MicroBlaze体系结构说明<br/><br/>由<a href="http://www.eefocus.com/" target="_blank">与非网</a>登载的《<a href="http://www.openhw.org/html/08-05/415520080549KvWJ.html" target="_blank">基于XILINX FPGA片上嵌入式系统的用户IP开发</a>》是一本关于设计Custom IP方面非常好的参考资料，现在也已经出版。China-pub链接在此：<a href="http://www.china-pub.com/43606" target="_blank">http://www.china-pub.com/43606</a><br/><br/>EDK系统由于既牵涉到FPGA硬件和很多IP Core，又牵涉到C语言软件的编写和GNU工具链甚至Linux操作系统的相关知识，只是涉及范围之广，不是三言两语可以概括，因此文档也是多得数不过来，日后将再撰文祥述。<br/><br/>关于Sysgen，其实它的User Guide写的还是很不错的。他不仅提供了功能描述，并且详述了操作步骤，而且还带有实例工程，安装目录中提供例子很有参考价值。User Guide位于help目录下的sysgen_user.pdf<br/><br/>关于系统设计，Xilinx有本中文版的DSP书，名字叫《DSP:最佳结果设计》。免费放出PDF版本，<br/>在<a href="http://china.xilinx.com/publications/books/dsp/index.htm" target="_blank">http://china.xilinx.com/publications/books/dsp/index.htm</a>可以找到。<br/><br/>关于DSP的特性，System Generator教程，XtremeDSP Kit的演示，在Demosondemond的视频教程里也都有。<br/><br/>另外，Xilinx有丰富的客户培训教程，大客户由Xilinx直接上课，小客户交给第三方来完成的，中国这边是E-Elements。有机会参加的话也不错。对于学校教授，赛灵思大学计划还会在各高校不定时举办各种讲座，部分讲座可以从openhard观看视频。除此之外还有一个特别优待：只要是XUP大学计划的成员，就可以通过访问<a href="http://china.xilinx.com/univ/teaching_material.htm" target="_blank">大学计划网页</a>得到丰富的教学资料。<br/><br/><br/><br/>---------版权声明-----------<br/>本文作者 Ricky Su<br/><a href="http://www.fpganotes.com" target="_blank">www.fpganotes.com</a><br/>rickysu.fpga@gmail.com<br/><br/>欢迎转载，转载请保持原样及署名<br/>商业使用须得到本人授权<br/>---------版权声明-----------<br/><br/><span style="color: #FF0000;">4. 硬件资料</span><br/><br/>所有的硬件资料不外乎DataSheet和User Guide。这些文档都可以在主页右上角的Documentation链接中找到。<br/><br/>User Guide阐述器件使用方法，DataSheet标明器件的具体参数。<br/><br/>User Guide 包括很多种。以Virtex5为例，User Guide的种类从片内资源 - 基本的Slice功能, BRAM, DSP,&nbsp;&nbsp;IOB的使用、复杂硬核GTP, EMAC, PPC等，到片外使用包括Configuration和PCB设计指导，都有自己的User Guide。<br/><br/>Datasheet也根据内容分类到不同的文档中。同样以Virtex5为例，Datasheet Overview 介绍了V5的Feature，所有家族成员的资源列表和提供的封装列表。DC and Switching Characteristics 文档中介绍了各种电压参数和时序参数。<br/><br/>文档网页<a href="http://www.xilinx.com/support/documentation/index.htm" target="_blank">http://www.xilinx.com/support/documentation/index.htm</a><br/>在注册网站之后可以选择收取文档更新通知。<br/><br/><br/><br/><span style="color: #FF0000;">5. 参考资源</span><br/><br/>整体应用设计的参考资源可以分为三类：Demo板的参考设计(Reference Design)、应用设计文档(Application Notes)和XCELL杂志中报道的各种应用。<br/><br/>在Demo板的网页上可以找到参考设计的链接。它通常都提供了Demo板上各种接口的驱动例程。比如<br/><a href="http://www.xilinx.com/ml507" target="_blank">www.xilinx.com/ml507</a><br/><a href="http://www.xilinx.com/ml403" target="_blank">www.xilinx.com/ml403</a><br/><br/>Xilinx Application Notes是另一种针对特定应用的说明文档。每篇文章期望解决一个问题，比如：怎样通过外部CPU配置FPGA？有哪些使用方法来帮助我debug嵌入式设计？Application Notes文档编号都以xapp开头。地址<a href="http://www.xilinx.com/xapp" target="_blank">www.xilinx.com/xapp</a><br/><br/>对于CPLD，有一个Application Note的合集，叫做CPLD Applications Handbook。<br/><a href="http://www.xilinx.com/publications/products/cpld/cpld_applications_handbook.pdf" target="_blank">http://www.xilinx.com/publications/products/cpld/cpld_applications_handbook.pdf</a><br/><br/>XCELL不会提供设计文件，因为他是一项成功应用的介绍文档，通常他们会讲解一个真正产品中FPGA设计的结构和设计难点。<br/><a href="http://www.xilinx.com/publications/" target="_blank">http://www.xilinx.com/publications/</a><br/><br/>Xilinx现在推行的“目标平台”概念，照我的理解其目的是希望让用户站在巨人的肩膀上，尽量少操心底层的细节，而更多地关注真正提供价值的设计。对于“目标平台”覆盖到的应用，都提供了从芯片选型、Demo板设计到参考设计。于是我们应该尽量多地利用现有资源，以降低设计难度加快上市速度。相信随着“目标平台”的发展，我们可以看到越来越多的有价值的参考设计。<br/><br/><br/><span style="color: #FF0000;">6. 问题解决</span><br/><br/>再次重申，遇到软件问题先考虑自己有没有打上最新的Service Pack和IP Update。<br/><br/>如果有疑问，其实最快的方法不是到论坛提问，而是到Xilinx Answer Database找答案。大多数已知问题的答案那里边都有了。能不能找到就看会不会搜索了。<br/><br/>Xilinx的高级搜索<a href="http://www.xilinx.com/company/advanced-search.htm" target="_blank">http://www.xilinx.com/company/advanced-search.htm</a>，在Answer Database选项上打勾，就能查找Answer Record。<br/><br/>当软件报出一个Error或者Warning，我们一定要<strong>先将错误信息通读一遍</strong>。英文的错误信息可能理解得不是很透彻，无法从这些信息里看到解决方法，不知道是自己错了还是软件bug，就可以按这个Error Message去Answer Database查找。<br/><br/>可以说解决问题有两种途径，一是自己解决，一是寻求帮助。通常我都觉得先尝试自己解决问题比较好，一来培养能力，二来仔细研究问题后，寻求别人的帮助更容易理解别人的指点，另一方面也更尊重给你指点的人。<br/><br/>---------版权声明-----------<br/>本文作者 Ricky Su<br/><a href="http://www.fpganotes.com" target="_blank">www.fpganotes.com</a><br/>rickysu.fpga@gmail.com<br/><br/>欢迎转载，转载请保持原样及署名<br/>商业使用须得到本人授权<br/>---------版权声明-----------<br/><br/><br/><span style="color: #FF0000;">7. 总结</span><br/><br/>在信息爆炸的时代，我们的资源太多，我们的时间太少。谨希望此文能够为在学习FPGA路途上的朋友们节省一些寻找资源的时间，而用更多的时间来<strong>创造自己的价值</strong>。<br/><br/>2009.08.31<br/><br/><br/>History<br/>2007-04-05 -- Initial Release<br/>2007-04-06 -- 添加ML403，UG071，UG072，修改错别字<br/>2007-04-13 -- 添加WebCast，DSP，Manual说明<br/>2007-05-14 -- 修改ModelSim MXE Starter Version的说明<br/>2007-05-26 -- 添加声明和dod注册信息<br/>2007-05-30 -- 添加PlanAhead简介<br/>2007-10-07 -- 软件-->download center不需要注册登陆<br/>2008-12-14 -- 添加EDK、Sysgen说明，并更新一些已经改变的功能<br/>2009-02-17 -- 更新视频教程的那部分，添加了Xilinx Free Course视频链接<br/><a href="http://www.fpganotes.com/Xilinx_Web_Guide_20090302/" target="_blank">2009-03-02</a> -- 添加Hiden in Plain View链接<br/>2009-08-31 -- 更新为ISE11相匹配的版本<br/>Tags - <a href="http://www.fpganotes.com/tags/xilinx/" rel="tag">xilinx</a> , <a href="http://www.fpganotes.com/tags/tips/" rel="tag">tips</a>
]]>
</description>
</item><item>
<link>http://www.fpganotes.com/post/318/</link>
<title><![CDATA[Tip: ISE 和 EDK 的属性存在哪个文件中]]></title> 
<author>RickySu &lt;sutongqi+blog@gmail.com&gt;</author>
<category><![CDATA[技术经验]]></category>
<pubDate>Tue, 04 Aug 2009 07:11:55 +0000</pubDate> 
<guid>http://www.fpganotes.com/post/318/</guid> 
<description>
<![CDATA[ 
	曾经碰到过这样的情况：<br/><br/>- 公司内有很多服务器，有本地的，有国外的。有时候要用本地服务器上的ISE，有时要用国外服务器上的ISE。由于ISE默认会记忆并打开上一次的工程，因此在切换使用服务器时，由于线路比较慢，打开一个ISE会要很长时间。打不开ISE也无法更改属性为不要打开上一次的工程。于是就要找到记录ISE属性的文件并且手动修改这个属性。<br/><br/><a href="http://www.xilinx.com/support/answers/20892.htm" target="_blank">AR20892</a> 讲了ISE 10.1之前版本的属性存放位置，他们是：<br/><br/><strong>Windows</strong> 注册表:<br/>HKEY_CURRENT_USER&#92;Software&#92;Xilinx&#92;Project Navigator&#92;7.1i&#92;Preferences -> OpenPreviousProject<br/>HKEY_CURRENT_USER&#92;Software&#92;Xilinx&#92;ISE&#92;9.1i&#92;Project Navigator&#92;Project Manager&#92;Preferences -> OpenPreviousProject<br/><strong><br/>Linux</strong> 属性文件$HOME/.qt/xilinxrc中的:<br/>10.1/Project Navigator/Project Manager/Preferences/OpenPreviousProject=true 选项<br/><br/>11.1中<strong>Linux</strong>系统的文件位置改成了：<br/>$HOME/.config/Xilinx/ISE.conf<br/>Tags - <a href="http://www.fpganotes.com/tags/ise_utilities/" rel="tag">ise utilities</a>
]]>
</description>
</item><item>
<link>http://www.fpganotes.com/post/316/</link>
<title><![CDATA[不要把ISE 11装到Fat32的分区上]]></title> 
<author>RickySu &lt;sutongqi+blog@gmail.com&gt;</author>
<category><![CDATA[技术经验]]></category>
<pubDate>Thu, 23 Jul 2009 03:33:24 +0000</pubDate> 
<guid>http://www.fpganotes.com/post/316/</guid> 
<description>
<![CDATA[ 
	<a href="http://pic.fpganotes.com/images/ricky/120pxiconnopermission.png" target="_blank"><img src="http://pic.fpganotes.com/images/ricky/120pxiconnopermission.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>ISE 11安装在Fat32分区上会有Permission问题的，在NTFS和ext2/ext3上都没有问题。<br/><br/>【相关资料】<br/>AR 32796: <a href="http://www.xilinx.com/support/answers/32796.htm" target="_blank">http://www.xilinx.com/support/answers/32796.htm</a><br/>Tags - <a href="http://www.fpganotes.com/tags/ise/" rel="tag">ise</a>
]]>
</description>
</item><item>
<link>http://www.fpganotes.com/post/315/</link>
<title><![CDATA[Xilinx中文网上研讨会]]></title> 
<author>RickySu &lt;sutongqi+blog@gmail.com&gt;</author>
<category><![CDATA[新闻评论]]></category>
<pubDate>Wed, 08 Jul 2009 02:17:22 +0000</pubDate> 
<guid>http://www.fpganotes.com/post/315/</guid> 
<description>
<![CDATA[ 
	<a href="http://pic.fpganotes.com/images/ricky/ipodnanohero20080909.jpg" target="_blank"><img src="http://pic.fpganotes.com/images/ricky/ipodnanohero20080909.jpg" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0" width="480"/></a><br/>4G IPOD 是填写<u><strong>反馈单</strong></u>的抽奖奖品，看上去挺诱人呵呵。<br/><br/>在学生时代，看到有网上研讨会的广告，心怀好奇也想凑热闹。心想反正都坐在电脑前面，也没人知道你是学生，不会像某些展览还不让学生进门。可当时大多数网上研讨会都是美国开的，有时差，开会的时候宿舍都熄灯了。现在国内中文的研讨会也多起来了，合适的时间，合适的语言，最后还有人答疑，进步不小。<br/><br/>最近有两个中文网上研讨会，可以关注一下。<br/><br/><strong>7月9日</strong>&nbsp;&nbsp;介绍新推出的ISE 11软件套装的新特性<br/>详细介绍和预先登记：<a href="http://webcast.ednchina.com/102/Content.aspx" target="_blank">http://webcast.ednchina.com/102/Content.aspx</a><br/><br/><strong>7月28日</strong> 介绍 Sparten6 和 Virtex6 的高速串行收发器特性及如何正确配置<br/>详细介绍和预先登记： <a href="http://webcast.ednchina.com/103/Content.aspx" target="_blank">http://webcast.ednchina.com/103/Content.aspx</a><br/>Tags - <a href="http://www.fpganotes.com/tags/xilinx/" rel="tag">xilinx</a>
]]>
</description>
</item><item>
<link>http://www.fpganotes.com/post/314/</link>
<title><![CDATA[EDK IP - XPS Timer/Counter - Capture Mode]]></title> 
<author>RickySu &lt;sutongqi+blog@gmail.com&gt;</author>
<category><![CDATA[技术经验]]></category>
<pubDate>Mon, 06 Jul 2009 09:05:42 +0000</pubDate> 
<guid>http://www.fpganotes.com/post/314/</guid> 
<description>
<![CDATA[ 
	在用XPS Timer/Counter模块检测一个外部信号检测时，发现Timer这个IP Core的Datasheet写的不是很清楚。以下对其中的比较模糊的地方梳理一下。<br/><br/>1. 运行在哪个模式下 - Compare(Generate) 还是 Capture。在 TCSR0 的 MDT0 中配置。<br/><br/>2. Capture 上升沿还是下降沿，由Generic C_TRIG0_ASSERT 控制。1为上升沿，0为下降沿。Datasheet中叫做 high-true 和 low-true 让人以为是高低电平。查看源代码发现原来是做了Edge比较的。<br/><br/>3. 如果 TCSR0 的 ENT0 = 1 (Enable Timer0) 且 CAPT0 = 1 ( Enable External Capture Trigger)，那么在发现上升沿或下降沿后，T0INT会置1<br/><br/>4. 对 T0INT 写入 1 可以清除中断，即将T0INT置0<br/><br/>5. 如果ARHT0 = 1 (Auto Reload/Hold Timer0)，那么每次发生Capture Event时都会将现在的计数器内容存入Load Register。如果 ARHT0 = 0，那么只有在将Load Register读出后才可以重写Load Register。<br/><br/>6. 如果 ENIT0 (Enable Interrupt for Timer0) 置1，那么T0INT会驱动Interrupt管脚，使中断信号输出。否则中断只是一个内部的状态信号，需要查询才可得知内容。<br/><br/><br/>Tags - <a href="http://www.fpganotes.com/tags/edk_ip/" rel="tag">edk ip</a>
]]>
</description>
</item><item>
<link>http://www.fpganotes.com/post/313/</link>
<title><![CDATA[IPIF - PLBv46_Slave_Single]]></title> 
<author>RickySu &lt;sutongqi+blog@gmail.com&gt;</author>
<category><![CDATA[技术经验]]></category>
<pubDate>Fri, 03 Jul 2009 07:33:08 +0000</pubDate> 
<guid>http://www.fpganotes.com/post/313/</guid> 
<description>
<![CDATA[ 
	要做CustomIP，就要好好理解IPIF。<br/>PLBv46的IPIF分为很多类型，Slave的和Master的，Single Beat的和Burst的。<br/>PLBv46 Slave Single 的 Datasheet 已经写得很清楚了，在此做一些简要笔记。<br/><br/>应用PLBv46 Slave Single，最主要是要理解其中的两个参数：<strong>C_ARD_ADDR_RANGE_ARRAY</strong> 和 <strong>C_ARD_NUM_CE_ARRAY</strong>.<br/><br/>ARD 的意思就是 Address Range Definition.<br/><br/>这两个参数和这些Port有关：<br/>Bus2IP_CS --> 总线宽度为C_ARD_ADDR_RANGE_ARRAY除2。<br/>Bus2IP_WrCE和Bus2IP_RdCE --> 总线宽度为C_ARD_NUM_CE_ARRAY。<br/><br/><strong>C_ARD_ADDR_RANGE_ARRAY --> CS</strong> <br/>这个参数(GENERIC)定义了整个IP的地址空间中可以有多少个独立而不要求连续的地址空间。<br/>参数内容成对出现，一个基地址，一个高地址。<br/>使用64bit地址以备将来扩展。<br/><br/><strong>C_ARD_NUM_CE_ARRAY --> CE</strong><br/>这个参数定义了一个地址空间中有多少个需要独立使能信号(CE)。主要是为了控制不同的寄存器组而设计。<br/>数值需要是2的次方，比如1, 2, 4, 8, 16, 32等等。<br/>每个地址空间必须有至少一个CE。<br/><br/>这两个参数都是在plb_address_decoder.vhd中被定义和使用。<br/>如果是做CustomIP，完全可以手动定义这两个GENERIC参数。<br/>如果需要做某种范围内的自动生成，可以参照GPIO的qual_ard_addr_range_array函数计算过程。<br/>Tags - <a href="http://www.fpganotes.com/tags/ipif/" rel="tag">ipif</a>
]]>
</description>
</item><item>
<link>http://www.fpganotes.com/ethernet_lite_mac/</link>
<title><![CDATA[以太网学习之Ethernet Lite MAC]]></title> 
<author>RickySu &lt;sutongqi+blog@gmail.com&gt;</author>
<category><![CDATA[技术经验]]></category>
<pubDate>Thu, 02 Jul 2009 04:24:54 +0000</pubDate> 
<guid>http://www.fpganotes.com/ethernet_lite_mac/</guid> 
<description>
<![CDATA[ 
	<strong>Ethernet Lite MAC 功能</strong><br/>- <strong>功能</strong><br/>接口： MII<br/>速度： 10M/100M bps （时钟速率必须大于以太网速度的一半）<br/>支持半双工和全双工 （ C_DUPLEX 参数控制）<br/>可选的乒乓Buffer （C_TX_PING_PONG 和 C_RX_PING_PONG 参数控制）<br/><br/>- <strong>限制</strong><br/>不支持多播 - 只支持单播和广播。（Datasheet第23页）<br/>不支持Jumbo Frame - 仅支持标准的1500Byte长度的Frame。<br/>不支持Burst - 使用了plbv46_slave_single_v1_00_a作为PLB接口，不支持Burst操作<br/><br/><strong>Ethernet Lite MAC 结构</strong><br/><a href="http://pic.fpganotes.com/images/ricky/ethernetlite20bblockdiagram.png" target="_blank"><img src="http://pic.fpganotes.com/images/ricky/ethernetlite20bblockdiagram.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0" width="450"/></a><br/><br/>- <strong>时钟</strong><br/>总共有三个时钟，分别为接收时钟，发送时钟和PLB时钟。<br/><u>接收时钟</u>和<u>发送时钟</u>都由外部的PHY提供。可以是2.5MHz或25MHz(对应10Mbps和100Mbps)。时钟精度要求100ppm，占空比范围为35%-65%.<br/><u>PLB时钟</u>必须大于以太网速度的一半，即5MHz 或 50MHz.<br/><br/>- <strong>控制</strong><br/>为减少占用的芯片资源，使用BRAM的最后一个区段作为控制寄存器<br/><a href="http://pic.fpganotes.com/images/ricky/emaclitetxcontrol.png" target="_blank"><img src="http://pic.fpganotes.com/images/ricky/emaclitetxcontrol.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0" width="450"/></a><br/>GIE - Global Interrupt Enable (1为允许)<br/>Control - P = Program, S = Status, I = Tx Interrupt Enable<br/><br/>用软件控制和发送数据流程是这样的<br/><div class="code">•&nbsp;&nbsp; The software stores the transmit data in the dual port memory starting at address offset 0x0<br/>•&nbsp;&nbsp; The software writes the length data in the dual port memory at address offset 0x07F4<br/>•&nbsp;&nbsp; The software writes a ’1’ to the Status bit at address offset 0x07FC (bit 31 on the data bus)<br/>•&nbsp;&nbsp; The software monitors the Status bit and waits until it is set to ’0’ by the Ethernet Lite MAC before initiating another transmit<br/>•&nbsp;&nbsp; If the transmit interrupt and the global interrupt are both enabled, an interrupt will occur when the Ethernet Lite MAC clears the Status bit<br/>•&nbsp;&nbsp; The transmit interrupt if enabled will also occur with the completion on writing the MAC address</div><br/><br/>当吧Status置1后，EMAC Lite开始发送数据，会经过这些步骤：<br/><div class="code">Generate the preamble and start of frame fields<br/>•&nbsp;&nbsp; Read the length and the specified amount of data out of the dual port memory according to the length value adding padding if required<br/>•&nbsp;&nbsp; Detect any collision and performing any jamming, backoff, and retry if necessary<br/>•&nbsp;&nbsp; Calculates the CRC and appends it to the end of the data<br/>•&nbsp;&nbsp; Clears the status bit at the completion of the transmission<br/>•&nbsp;&nbsp; Clearing the status bit will cause a transmit complete interrupt if enabled</div><br/><br/><strong>问题</strong><br/>- 发送控制位的Length和前面的type/length有什么区别？<br/>EMAC Lite不会对type/length做任何处理，而是把它们当作普通数据一样发送出去。<br/>控制位的Length是在发送时用于计数的。<br/>Tags - <a href="http://www.fpganotes.com/tags/ethernet/" rel="tag">ethernet</a>
]]>
</description>
</item><item>
<link>http://www.fpganotes.com/reportgen/</link>
<title><![CDATA[ISE小工具 -- ReportGen]]></title> 
<author>RickySu &lt;sutongqi+blog@gmail.com&gt;</author>
<category><![CDATA[技术经验]]></category>
<pubDate>Thu, 02 Jul 2009 02:24:40 +0000</pubDate> 
<guid>http://www.fpganotes.com/reportgen/</guid> 
<description>
<![CDATA[ 
	我也是第一次知道有这么个工具：只要有布线后的NCD网表，就可以通过ReportGen工具产生各种报告文档，比如clock region report, delay report, pad report, unrouted net report等等。<br/><br/>直接在命令行中输入reportgen就能查看使用说明。<br/>Tags - <a href="http://www.fpganotes.com/tags/ise_utilities/" rel="tag">ise utilities</a>
]]>
</description>
</item>
</channel>
</rss>