内 容 简 介
本书结合作者多年工作实践,以开发流程为主线,通过大量实例详细介绍了FPGA开发、调试方面的一些基本方法和独特技巧;提出了一种“自动化”开发设计的理念,即通过批处理加脚本的方式自动完成FPGA设计工程的建立、编译和转移,以及在使用ModelSim设计仿真时,一键式完成整个仿真流程的方法。对于FPGA设计调试和测试方面,则详细介绍了SignalTap II的使用,并重点介绍了Virtual JTAG(虚拟JTAG)。
本书可作为高等院校通信工程、电子工程、计算机、微电子等专业有一定FPGA开发基础的学生的参考用书,也可作为硬件工程师、FPGA工程师的工具书。
这次能够请到夏宇闻大师作序,深感荣幸!
序
2013年11月我受Altera公司大学计划负责人陈卫中博士邀请,出席在南京召开的全国教师会议,巧遇北京航空航天大学出版社的董编辑,交谈后才知晓有这么一本书即将出版。她请求我浏览一下书稿,并对该书做一个客观的评价。两周前,北京至芯科技的雷总从北航出版社把书稿取来,我才有机会通读了书稿。
我没有时间反复品读书稿的全部内容,也不认识书的作者王敏志,对他的人品和技术水平一无所知。尽管如此,仅从书稿的质量我就能明显地感觉到作者的写作态度是很认真的,书中的许多内容的确是作者本人工作经验的累积,我能体会到作者想与读者交流分享经验的真诚愿望。本书文字简洁,内容通俗易懂,介绍了FPGA应用设计常用的综合和仿真工具中能显著提高工作效率的几个重要方法。因此这本书对于已进入FPGA设计行业,但还不太熟练的年轻工程师很有参考价值。
当然,任何人都不能期望只读几本书后就能掌握FPGA复杂应用设计的全部诀窍。完成FPGA复杂应用设计没有捷径可走,只能凭借设计者不屈不饶的顽强意志、科学严密的工作作风,并且在长期实践中坚持不断地学习,积累经验。
希望北航出版社的“博客藏经阁”系列图书,能为从事应用设计的工程师和学生提供互相交流设计经验的平台,使得我国的电子设计水平更上一层楼。
夏宇闻
北京航空航天大学电子信息工程学院退休教授
北京至芯科技公司FPGA培训顾问
2013-12-17
前言
FPGA的规模越来越大,FPGA的设计也越来越复杂,我们看到,FPGA不但部分代替了DSP的功能,同时加速了和CPU的融合速度,FPGA设计工程师面临既要充当硬件工程师又要充当软件工程师的要求。随着工艺的进步,FPGA除了向更加高端的方向发展,同时也扩展了其在低端的应用市场,掌握FPGA开发技术可以提高电子工程师的竞争能力,同时也能扩展工程师岗位适应空间。
本书特点
EDA本身就是指电子自动化设计,在本书中,笔者根据多年的实际工作经验总结了一个自动化设计开发理念:设计开发过程中存在许多需要重复操作的流程,而这些的操作都有相关的指令,所以我们可以将这些操作的指令组织在一个脚本文件里,然后通过批处理的方式达到“自动化”地跑这些需要重复操作的流程。这种“批处理加脚本”的开发、仿真和调试方法,是本书介绍的一大重点。而且实践证明,实际工作中也大大提高了笔者的效率。
合理地使用批处理可以提高设计的效率。开发后期占用读者更多时间的是设计的调试和测试,本书在介绍了常规的调试工具(SignalTap II)之后,使用了虚拟JTAG这个调试测试利器,这是因为在项目设计完成后进行系统测试的时候,虚拟JTAG可以让读者摆脱额外的测试接口,直接利用FPGA现成的JTAG口完成系统的测试工作。笔者借助虚拟JTAG完成了多通道TDC、多通道ADC以及PMT能谱等测试,大大提高了测试效率和效果。
正是这些可以提高我们设计效率的技巧和组件,构成了本书的一大特色,也是笔者特别希望介绍给广大读者的。FPGA的设计开发是一种应用工程,本书更多是在告诉大家“怎么做”和“怎么做会更好”;当然如果可能,也会尽量给出“为什么”要这样做,但这并不是我们工程应用的重点。
本书主要内容
本书以Altera的FPGA开发流程为基础,详细介绍Altera FPGA开发过程以及一些开发技巧,分为9章:
第1章 在介绍FPGA设计基本要求的基础上,主要介绍FPGA开发前的准备事项。
第2章 介绍如何快速建立自己的第一个Quartus II工程,重点介绍应用TCL脚本来操作Quartus II工程。
第3章 重点介绍Altera推荐的FPGA开发技巧。
第4章 介绍了使用ModelSim仿真Altera FPGA设计,重点推荐自动化仿真的概念和方法。
第5章 介绍了时序分析,并使用TimeQuest对Altera FPGA设计进行时序分析。
第6章 介绍了如何对FPGA进行优化,重点介绍了Altera的增量式编译方法。
第7章 介绍了如何对FPGA设计进行调试和测试,在SignalTap II工具的基础上,推荐使用Virtual JTAG对Altera FPGA设计进行测试。
第8章 介绍了几个笔者项目实践中用到的实例,其中包括FIFO和SDRAM的特殊应用、高速串行接口(GXB)的仿真(特别是Byte Ordering模块的仿真)以及FPGA TDC设计实例。
第9章 介绍了Altera FPGA设计开发的一些比较高级的技巧,在了解FPGA器件结构的基础上使用一些优化手段,还可以了解到如何使用物理综合以及DSE工具对Altera FPGA设计工程进行优化。
致谢
在此需要特别感谢北京航空航天大学出版社工作人员对本书的关心和支持,尤其是编辑的大力支持。
最后感谢您选择了这本书,如果对书里的内容有什么批评、建议或者对书中的内容有任何的困惑都欢迎大家和我联系。
电子邮件:keyou123@sina.com
博客:http://bbs.ednchina.com/BLOG_coyoo_41415.HTM
王敏志 2014年1月
目录
第1章 好好准备你的FPGA设计1
1.1 FPGA设计要求“软硬兼施”吗1
1.2 如何选择一个合适的FPGA3
1.3 教你如何从顶层规划你的设计7
1.4 进行早期功耗估算避免FPGA动力不足9
1.4.1 早期功耗估算9
1.4.2精确功耗估算13
1.5 规划并选择片内调试工具16
1.6 小结17
第2章 快速建立你的第一个FPGA工程18
2.1 FPGA设计基本流程18
2.2 手把手教你用Quartus II建立FPGA工程20
2.3 教你如何利用脚本创建工程24
2.3.1 Quartus II各个设计流程对应的脚本命令24
2.3.2 Quartus II TCL包(Package)25
2.3.3 执行与Quartus II有关脚本的入口26
2.3.4 利用脚本创建工程27
2.4 利用脚本约束你的工程28
2.5 利用脚本自动化完成FPGA设计29
2.6 实例分析31
2.7 小结37
第3章 采用Altera的建议进行FPGA设计38
3.1 利用Quartus II模板开始逻辑设计38
3.2 同步FPGA设计方法及指导39
3.2.1 同步设计的基本原则39
3.2.2 异步设计的危害40
3.3 使用Altera的宏函数41
3.4 在FPGA中实现除法功能41
3.4.1 二进制快速除法41
3.4.2 使用Altera除法函数43
3.5 Altera推荐的代码风格45
3.6 在代码中使用寄存器而不是锁存器53
3.6.1 锁存器电路结构53
3.6.2 逻辑设计中哪些情况会产生锁存器54
3.6.3 锁存器分析实例56
3.7 使用Altera“原语”模块59
3.7.1 如何让设计中的LCELL不被软件优化60
3.7.2 进位链以及如何应用在自己的设计中62
3.8 小结65
第4章 使用ModelSim进行仿真66
4.1 ModelSim仿真工具介绍66
4.2 使用ModelSim软件进行仿真68
4.2.1 仿真基础——利用GUI完成仿真68
4.2.2 通过创建仿真工程来设计仿真72
4.3 为ModelSim独立版本提取Altera仿真库75
4.3.1 提取Altera仿真库的步骤75
4.3.2 仿真Altera器件到底需要提取哪些库77
4.4 教你如何用脚本完成ModelSim的自动化仿真流程81
4.5 ModelSim使用问题实例82
4.6 教你如何写TestBench86
4.7 实例练习88
4.7.1 练习前准备88
4.7.2 GUI方式仿真实例91
4.7.2 自动化创建工程仿真实例92
4.8 小结93
第5章 教你如何用TiemeQuest来分析你的设计 94
5.1 10分钟学会使用TimeQuest94
5.1.1 时序分析的基本概念94
5.1.2 教你使用TimeQuest95
5.2 时序分析的基础98
5.3 了解什么是时序约束104
5.3.1 时钟约束104
5.3.2 I/O约束105
5.4 约束例外111
5.4.1 多周期路径约束111
5.4.2 假路径约束114
5.5 TimeQuest使用实例116
5.6 小结124
第6章 对你的FPGA设计进行优化125
6.1 增量编译使设计加速125
6.1.1 什么是增量编译125
6.1.2 认识什么是逻辑锁128
6.1.3 开始使用增量编译132
6.2 选择使用合适的设置和约束来优化设计144
6.2.1 优化之前145
6.2.2 时序优化146
6.2.3 面积优化151
6.3 小结152
第7章 对你的FPGA设计进行调试和测试153
7.1 SignalTap II153
7.1.1 教你快速认识SignalTap II 调试模块153
7.1.2 教你快速创建第一个SignalTap II 调试模块并调试154
7.1.3 教你使用SignalTap II高级功能——Storage Qualification161
7.1.4 教你使用SignalTap II高级功能——Powerup Trigger165
7.2 FPGA测试利器Virtual JTAG168
7.2.1 你所要了解的JTAG168
7.2.2 告诉你什么是Virtual JTAG172
7.2.3 教你如何在设计中使用Virtual JTAG Interface (VJI)175
7.2.4 教你用脚本创建自己的GUI虚拟JTAG测试平台180
7.2.5 单个JTAG连接多条电缆、多FPGA在虚拟JTAG中的应用185
7.3 工程更改管理(ECO)187
7.3.1 ECO及其基本操作流程187
7.3.2 ECO那些事儿之属性编辑器189
7.3.3 ECO那些事儿之LE与ALM194
7.3.4ECO 那些事儿之ALM的DATAF端口200
7.4 对你的FPGA进行正确配置204
7.5 小结216
第8章 设计实例应用分析217
8.1 如何设计应用Altera的FIFO217
8.1.1 教你如何设计自己的同步FIFO218
8.1.2 教你如何使用Altera的同步FIFO222
8.1.3 教你如何使用Altera的异步FIFO227
8.2 教你如何向他人转移设计时保护自己的知识产权228
8.2.1 FPGA安全性设计——Altera方案229
8.2.2 如何加密转移自己的设计233
8.3 FPGA外挂接口之SDRAM235
8.3.1 SDRAM芯片235
8.3.2 SDRAM控制器逻辑设计239
8.4 高速串行接口设计没有看上去那么难259
8.4.1 GXB模块介绍259
8.4.2 GXB应用实例265
8.5 教你如何在FPGA中设计TDC272
8.5.1 告诉你到底什么是TDC273
8.5.2 基于FPGA的TDC那些事儿之3大难题277
8.5.3 基于FPGA的TDC那些事儿之设计资源LAB280
8.5.4 基于FPGA的TDC那些事儿之粗细时间285
8.5.5 基于FPGA的TDC那些事儿之自动校准及测量精度292
8.6 利用FPGA TDC测量PLL核抖动实例295
8.7 小结300
第9章 Altera FPGA高级设计技巧301
9.1 器件结构对代码风格的影响301
9.2 基本逻辑结构分析302
9.3 可采用的设计技巧309
9.4 专有资源利用以及优化关键路径318
9.5 使用Quartus II的物理综合对设计进行优化319
9.5.1 针对性能的物理综合优化选项323
9.5.2 布线的物理综合优化325
9.6 了解什么是寄存器打包325
9.7 探索设计的高级手段——DSE332
9.8小结336
参考文献337
用户377235 2014-1-12 22:09
用户447879 2014-1-11 12:49
用户377235 2014-1-6 16:59
期待
coyoo 2013-12-30 09:21
coyoo 2013-12-30 09:19
用户1716354 2013-12-29 16:25
用户1707279 2013-12-28 12:25
用户432491 2013-12-28 07:02
chen_zs2012_704941858 2013-12-27 11:14
coyoo 2013-12-27 10:23