内容简介
本书结合作者多年工作实践,以开发流程为主线,通过大量实例详细介绍了FPGA开发、调试方面的一些基本方法和技巧;提出了一种“自动化”开发设计的理念,即通过批处理加脚本的方式自动完成FPGA设计工程的建立、编译和转移,以及在使用ModelSim设计仿真时,一键式完成整个仿真流程的方法。对于FPGA设计调试和测试方面,则详细介绍了SignalTap II的使用,并重点介绍了Virtual JTAG(虚拟JTAG)。
本书可作为高等院校通信工程、电子工程、计算机、微电子等专业有一定FPGA开发基础的学生的参考用书,也可作为硬件工程师、FPGA工程师的工具书。
目录
第1章好好准备你的FPGA设计1
1.1FPGA设计要求“软硬兼施”吗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.1FPGA设计基本流程18
2.2手把手教你用Quartus II建立FPGA工程20
2.3教你如何利用脚本创建工程24
2.3.1Quartus II各个设计流程对应的脚本命令24
2.3.2Quartus 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.5Altera的代码风格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.1ModelSim仿真工具介绍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.5ModelSim使用问题实例82
4.6教你如何写TestBench86
4.7实例练习88
4.7.1练习前准备88
4.7.2GUI方式仿真实例91
4.7.2自动化创建工程仿真实例92
4.8小结93
第5章教你如何用TiemeQuest来分析你的设计94
5.110分钟学会使用TimeQuest94
5.1.1时序分析的基本概念94
5.1.2教你使用TimeQuest95
5.2时序分析的基础98
5.3了解什么是时序约束104
5.3.1时钟约束104
5.3.2I/O约束105
5.4约束例外111
5.4.1多周期路径约束111
5.4.2假路径约束114
5.5TimeQuest使用实例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.1SignalTap 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.2FPGA测试利器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.1ECO及其基本操作流程187
7.3.2ECO那些事儿之属性编辑器189<
摘要与插图
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设计工程进行优化。
本书读者对象
本书可作为高等院校通信工程、电子工程、计算机、微电子等专业有一定FPGA开发基础的学生的参考用书,也可作为硬件工程师、FPGA工程师的工具书。
配套资料
本书提供各章实例完整工程文件、设计源文件,读者可以从北京航空航天大学出版社网站(www.buaapress.com.cn)的“下载专区”免费下载。
致谢
在此需要感谢北京航空航天大学出版社工作人员对本书的关心和支持,尤其是编辑的大力支持。
感谢您选择了这本书,如果对书里的内容有什么批评、建议或者对书中的内容有任何的困惑都欢迎大家和我联系。
电子邮件:keyou123@sina.c