目 录
第 一部分 基础知识
第 1章 FPGA概述 2
1.1 FPGA定义 2
1.2 FPGA的基本结构 2
1.3 FPGA的设计 5
第 2章 FPGA的资源 6
2.1 资源的种类 6
2.2 CLB 7
2.3 DSP切片 9
2.4 BRAM 10
2.5 SelectIO 10
2.6 CMT 12
2.7 收发器 12
2.8 布线资源 13
第3章 硬件描述语言 14
3.1 可综合的语句 14
3.2 编码风格 15
3.3 描述“硬件”的语言 16
第4章 理解原语 18
4.1 原语的定义 18
4.2 原语的种类 18
4.3 原语的使用 19
第5章 FPGA设计的实现 23
5.1 设计定义 23
5.2 HDL实现和功能仿真 24
5.3 逻辑综合 25
5.4 门级仿真 25
5.5 布局布线 26
5.6 时序仿真 26
5.7 静态时序分析 27
5.8 板级测试 27
第6章 FPGA工具的使用 28
6.1 Vivado的使用 28
6.2 ModelSim的使用 31
第二部分 逻辑设计漫谈
第7章 写代码心中要有电路 36
7.1 心中无电路 36
7.2 心中有电路 36
第8章 逻辑级数 40
8.1 逻辑级数的概念 40
8.2 逻辑级数的影响 43
8.3 讨论 44
第9章 常用逻辑的逻辑级数预估 45
9.1 常用的逻辑块 45
9.2 逻辑级数拆分 57
第 10章 复位的设计 60
10.1 复位的目的 60
10.2 全局复位的代价 60
10.3 复位设计要点 61
10.4 复位设计建议 64
第 11章 时序分析与约束 65
11.1 时序分析场景 65
11.2 单周期时序分析模型 67
11.3 输入端口处时序分析模型 69
11.4 输出端口处时序分析模型 72
第 12章 时序报告解读 74
12.1 时序摘要 74
12.2 时序路径详细解读 75
12.3 理想与现实的差异 78
第 13章 时序不通过怎么办 82
13.1 时序不通过的原因 82
13.2 跨时钟域问题未得到妥善处理 82
13.3 存在较少的时序违例 82
13.4 逻辑级数过深 83
13.5 扇出过大 83
13.6 资源拥塞 84
13.7 IDE版本过低 85
13.8 大范围时序违例 85
第 14章 跨时钟域处理 86
14.1 常见跨时钟域问题 86
14.2 常见跨时钟域处理 90
14.3 跨时钟域的约束 96
第 15章 块存储器的高效使用 99
15.1 配置种类 99
15.2 读写操作模式 99
15.3 优化设计 100
第 16章 DSP48E1的高效利用 103
16.1 DSP48E1的功能 103
16.2 实现相关器实例 104
第 17章 高速I/O信号的接收处理 110
17.1 I/O逻辑资源 110
17.2 高速I/O信号处理 112
第三部分 高速串行收发器的使用
第 18章 高速收发器基础知识 118
18.1 基本模型 118
18.2 线路编码 119
18.3 时钟恢复 122
18.4 接收字对齐 123
18.5 时钟校正 124
18.6 接收缓冲器和发送缓冲器 126
18.7 通道绑定 126
18.8 信号完整性与眼图 127
18.9 发送均衡 132
18.10 接收均衡 133
第 19章 Xilinx FPGA收发器简介 135
19.1 收发器结构 135
19.2 收发器向导IP 136
19.3 讨论 139
第 20章 参考时钟 140
20.1 相关电路与原语 140
20.2 相关端口与使用 145
第 21章 发送通道时钟分析 150
21.1 TX PMA内部时钟分析 150
21.2 TX PCS内部时钟分析 152
21.3 TXUSRCLK、TXUSRCLK2的来源 154
21.4 相关端口与使用 156
第 22章 接收通道时钟分析 157
22.1 RX PMA内部时钟分析 157
22.2 RX PCS内部时钟分析 159
22.3 RXUSRCLK、RXUSRCLK2的来源 161
22.4 相关端口与使用 165
第 23章 发送链路信号处理 166
23.1 FPGA TX接口 166
23.2 TX码型发生器 169
23.3 TX缓冲器 170
23.4 极性反转功能 171
第 24章 接收链路信号处理 172
24.1 极性反转功能 172
24.2 PRBS检查器 173
24.3 字节对齐和字边界对齐 173
24.4 接收弹性缓冲器 176
24.5 时钟校正功能 176
24.6 通道绑定功能 179
24.7 FPGA RX接口 182
第 25章 高速收发器的前端和均衡 186
25.1 发送端前端和均衡 186
25.2 接收端模拟前端 188
25.3 接收端均衡 190
第 26章 收发器调试工具IBERT 192
26.1 IBERT基本介绍 192
26.2 IBERT设置 193
26.3 测试界面 194
26.4 示波器实测 195
26.5 参数扫描 197
第 27章 基于收发器的协议——JESD204B 201
27.1 JESD204B协议介绍 201
27.2 工程实例 206
27.3 调试步骤归纳 211
第四部分 数字信号处理
第 28章 从算法到FPGA实现 214
28.1 算法模型 214
28.2 定点模型 215
28.3 RTL实现 217
第 29章 FIR滤波器及其高效实现 219
29.1 FIR滤波器相关理论 219
29.2 FIR滤波器实现架构 220
29.3 DSP48E1实现全并行FIR滤波器 221
第30章 多速率滤波器 228
30.1 多速率滤波器相关理论 228
30.2 半带滤波器 230
30.3 CIC滤波器 233
第31章 理解多相滤波器的实现 240
31.1 多相滤波器概述 240
31.2 多相分解 240
31.3 Nobel恒等式 242
31.4 插值抽取系统中的多相滤波结构 243
31.5 多相滤波器解决工程问题示例一 246
31.6 多相滤波器解决工程问题示例二 248
第32章 定点数据舍位处理分析 253
32.1 扩位和舍位 253
32.2 截断低位 253
32.3 非对称向上舍入 255
32.4 非对称向下舍入 257
32.5 对称向无穷大舍入 258
32.6 对称向零舍入 260
32.7 收敛向偶数/奇数舍入 261
第33章 DDS的实现思路和性能分析 264
33.1 DDS基础模型 264
33.2 相位截断DDS模型 266
33.3 相位抖动DDS模型 268
33.4 泰勒级数校正DDS模型 269
33.5 波形压缩 271
第34章 CORDIC的实现思路 273
34.1 CORDIC算法原理 273
34.2 sqrt和atan运算的算法模型 274
34.3 cos和sin运算的算法仿真 277
34.4 CORDIC算法的定点化 278
第35章 FFT的实现思路 280
35.1 DFT与FFT 280
35.2 FFT算法模型 281
35.3 基于FFT的定点模型要点 286
35.4 FFT RTL实现思路 287
第五部分 调试技巧与经验
第36章 使用JTAG to AXI Master IP调试 294
36.1 JTAG的优势 294
36.2 JTAG to AXI Master IP的用法 295
36.3 测试方法 296
第37章 自定义串口协议调试方法 298
37.1 自定义串口协议调试的优势 298
37.2 串口总线协议设计 299
37.3 串口转总线实现框图 300
37.4 调试方法 301
第38章 使用上位机高效调试 303
38.1 问题排查的难题 303
38.2 自制上位机调试工具 304
38.3 上位机程序片段 305
第39章 FPGA设计中的典型BUG 307
39.1 BUG来源之惑 307
39.2 设计原因 307
39.3 理解原因 309
39.4 硬件原因 310
第六部分 杂谈
第40章 FPGA与ASIC RTL的异同 314
第41章 FPGA开发提升历程 318
后 记