第1章 FPGA简介 1
1.1 什么是FPGA 1
1.1.1 FPGA简述 1
1.1.2 FPGA与MCU芯片的区别 2
1.2 FPGA的应用场景 2
1.3 FPGA现状 4
1.4 开发FPGA需要的HDL语言 5
1.5 FPGA设计流程 6
1.6 一个使用FPGA的经典实例 7
小结 8
第2章 FPGA结构与片上资源 9
2.1 FPGA主要厂商 9
2.2 FPGA的结构 9
2.3 基于LUT的设计方法 11
2.4 LE与LAB 13
2.5 全局网络 14
2.6 可配置I/O 17
2.7 内部存储资源 23
2.8 实例:FPGA是如何实现用户设计的 24
2.9 其他资源 25
小结 25
第3章 可综合设计与仿真验证 26
3.1 RTL 26
3.2 可综合设计 26
3.2.1 整体结构 28
3.2.2 变量类型、时序逻辑与组合逻辑 28
3.2.3 运算符和条件语句 32
3.2.4 例化 36
3.2.5 parameter与define 37
3.3 仿真验证 37
3.3.1 一个最简单的Testbench验证平台实例 38
3.3.2 带有比对功能和参考模型的验证模型 41
3.4 与Verilog仿真器有关的一点知识 42
小结 45
第4章 综合、布局与布线 46
4.1 工作流程 46
4.2 综合以及优化 47
4.2.1 综合优化的概念 47
4.2.2 RTL代码综合优化思想 50
4.3 布局与布线 52
小结 59
第5章 静态时序分析 60
5.1 什么叫做静态时序分析 60
5.2 时序分析模型 62
5.2.1 时序分析最基础模型 62
5.2.2 芯片外部输入/输出时序分析模型 63
5.3 时序分析中的各项参数 66
5.3.1 概述 66
5.3.2 时序分析公式的推导 68
5.4 时序约束文件的编写 69
5.5 实例:基于Timequest的时序约束和分析 76
5.5.1 Timequest使用简介 76
5.5.2 如何阅读时序报告 82
小结 86
第6章 功耗控制 87
6.1 CMOS门电路简介 87
6.2 FPGA功耗的构成 88
6.3 时钟网络及其功耗 90
6.4 门控时钟 93
6.5 划分时钟区域 95
6.6 RAM的时钟使能 96
6.7 使用双沿触发器 98
6.8 CMOS导通电流 98
6.9 减少供电电压 99
6.10 改变I/O的终端方式 100
6.11 实例:FPGA低功耗设计 101
小结 101
第7章 跨时钟域传输 102
7.1 实例:跨时钟域处理 102
7.2 跨时钟域的亚稳态现象 102
7.3 亚稳态的多径传输 104
7.4 两级触发器同步器 106
7.5 多径与多级寄存器同步链 108
7.6 组合逻辑信号的同步化 109
7.7 快时钟域信号的同步化 110
7.8 多位信号的跨时钟域处理 112
7.9 实际设计中规划跨时钟方案的重要性 116
小结 116
第8章 复位电路 117
8.1 复位的用途 117
8.2 无复位电路 118
8.3 异步复位 119
8.4 实例:异步复位测试 122
8.5 同步复位 123
8.6 异步复位与同步撤离 125
8.7 复位网络 127
8.8 多时钟域复位方案 129
小结 130
第9章 异步FIFO原理及使用 131
9.1 实例:异步FIFO的应用 131
9.2 同步FIFO与异步FIFO 132
9.3 异步FIFO设计思想 133
9.4 异步FIFO设计中的关键技术 135
9.4.1 异步FIFO读/写地址采样 135
9.4.2 FIFO的深度 137
9.5 异步FIFO逻辑实现代码 138
9.5.1 信号定义 138
9.5.2 RTL代码 139
9.6 异步FIFO的读/写时钟差别对格雷码的影响 147
9.7 FIFO的应用注意事项 148
小结 149
第10章 高效SDRAM控制器的设计 150
10.1 SDRAM简介 150
10.1.1 SDRAM特点及其编址方式 150
10.1.2 SDRAM原理 152
10.2 SDRAM时序及操作特性 153
10.3 实例:高效SDRAM控制器设计 158
10.3.1 SDRAM控制器的设计思想 158
10.3.2 SDRAM控制器内部模块设计 161
10.3.3 SDRAM控制器与SDRAM之间的芯片接口时序问题 173
小结 175
第11章 高速SerDes接口设计 176
11.1 高速SerDes接口的原理及其系统组成 176
11.1.1 SerDes概述 176
11.1.2 Cyclone IV GX高速收发器系统框架 178
11.1.3 高速收发器时钟架构 180
11.2 高速SerDes接口的电气特性 182
11.3 动态可重配IP 184
11.4 实例:高速SerDes接口逻辑设计 187
11.4.1 设计需求 187
11.4.2 设计具体实现 188
小结 204
第12章 常用数字信号处理的FPGA实现 205
12.1 模拟信号与数字信号 205
12.2 数字信号的定点表示方式 206
12.2.1 有符号和无符号的表示方法 206
12.2.2 定点化运算法则 208
12.3 实例:FFT处理器在FPGA上的实现 213
12.3.1 FFT基本原理 213
12.3.2 FFT的信号流图 215
12.4 FFT在FPGA中的实现 218
12.4.1 FFT的定点化 218
12.4.2 FFT的实现细节 219
12.5 实例:多速率抽取/插值滤波器在FPGA上的实现 222
12.5.1 多速率抽取滤波器的优化电路 222
12.5.2 多速率抽取滤波器的实现 223
小结 226
第13章 高速LVDS信号的接收 227
13.1 什么是LVDS信号 227
13.2 实例:使用FPGA接收LVDS信号 228
13.3 采用input delay约束保证源同步接收的正确性 230
13.3.1 源同步输入时序分析 230
13.3.2 使用input delay约束实现时序收敛 232
13.4 使用ISERDES及调整采样时钟方式来接收高速LVDS信号 235
13.4.1 使用ISERDES和IDELAY部件来接收高速LVDS信号的电路 235
13.4.2 具体实现结构 237
小结 245
第14章 布局布线失败怎么办 246
14.1 布局布线失败 246
14.2 找到设计的hot spot 247
14.3 解决布线拥塞问题 248
小结 256
参考文献 257