第1章 好好准备你的FPGA设计 1
1.1 FPGA设计要求“软硬兼施”吗 1
1.2如何选择一个合适的FPGA 3
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教你如何写TestBench 86
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分钟学会使用TimeQuest 94
5.1.1时序分析的基本概念 94
5.1.2教你使用TimeQuest 95
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 II 153
7.1.1教你快速认识SignalTap II调试模块 153
7.1.2教你快速创建第一个SignalTap II调试模块并调试 154
7.1.3教你使用SignalTap II高级功能——Storage Qualification 161
7.1.4教你使用SignalTap II高级功能——Power-up Trigger 165
7.2 FPGA测试利器Virtual JTAG 168
7.2.1你所要了解的JTAG 168
7.2.2告诉你什么是Virtual JTAG 172
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与ALM 194
7.3.4 ECO那些事儿之ALM的DATAF端口 200
7.4对你的FPGA进行正确配置 204
7.5小结 216
第8章 设计实例应用分析 217
8.1如何设计应用Altera的FIFO 217
8.1.1教你如何设计自己的同步FIFO 218
8.1.2教你如何使用Altera的同步FIFO 222
8.1.3教你如何使用Altera的异步FIFO 227
8.2教你如何向他人转移设计时保护自己的知识产权 228
8.2.1 FPGA安全性设计——Altera方案 229
8.2.2如何加密转移自己的设计 233
8.3 FPGA外挂接口之SDRAM 235
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中设计TDC 272
8.5.1告诉你到底什么是TDC 273
8.5.2基于FPGA的TDC那些事儿之3大难题 277
8.5.3基于FPGA的TDC那些事儿之设计资源LAB 280
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探索设计的高级手段——DSE 332
9.8小结 336
参考文献 337