
- 突破技术瓶颈:针对FPGA工程师常见的设计难题,提供来自真实项目的经验总结和避坑指南。
- 掌握核心设计要点:系统讲解逻辑设计、时序约束、跨时钟域处理等关键技能,夯实专业基础。
- 高效调试排错:分享实用的调试技巧与经验,帮助读者快速定位并解决工程中的疑难杂症。
- 规划职业发展:从职业成长角度出发,帮助工程师塑造独特优势,突破职业天花板。
★★★
中级
入门初级中级进阶高级
- FPGA初级工程师:系统学习核心知识和实战技巧,快速提升设计能力。
- 有经验的设计人员:从真实项目经验中获取避坑指南,突破技术瓶颈。
- 电子工程专业学生:将理论知识与工程实践结合,为职业发展打下坚实基础。
- 转行进入FPGA领域者:通过完整知识框架,快速入门并建立系统认知。
- 基础优先:先精读第一部分基础知识,确保对FPGA资源和设计流程有扎实理解。
- 重点攻克:重点学习时序分析与跨时钟域处理章节,这是工程中最常遇到的难点。
- 动手实践:每章结束后,在Vivado中动手验证示例代码,加深理解。
- 反复查阅:将本书作为案头工具书,遇到实际问题时随时查阅相关章节。
- 系统知识:构建完整的FPGA开发知识框架,覆盖设计、调试全流程。
- 实战经验:获得十余年一线工程师的宝贵经验,避免常见设计陷阱。
- 调试能力:掌握高效调试技巧,快速定位并解决复杂问题。
- 职业优势:塑造独特的职业竞争力,实现从技术到职业的全面跃升。
- 思维提升:学会从底层电路角度思考设计,提升工程决策能力。
📖 书籍简介
产品特色
编辑推荐
工程师的技术成长之路
FPGA一线工程师十余年的实战经验总结,工程师的“避坑”指南。涵盖FPGA逻辑设计核心要点、高速收发器架构、数字信号处理及高效调试方法。
助力读者突破技术瓶颈,实现职业进阶。
内容简介
本书凝聚资深工程师十余年的FPGA开发经验,基于行业核心特质——知识体系稳定、技术门槛高、经验壁垒强,系统性地构建了FPGA开发的完整知识框架,以帮助FPGA工程师塑造独特的职业“抗衰老”优势。本书包含六大核心内容:基础知识,逻辑设计,高速串行收发器的使用,数字信号处理,调试技巧与经验,FPGA与ASIC RTL的异同。书中融入了大量来自真实项目的经验总结和“避坑”指南,为处于职业成长期、常在实际工程中遇到瓶颈的工程师提供参考。
本书是一份技术指南,也是一本职业发展启示录——既授“如何做”,又启“如何思”,能帮助FPGA工程师突破技术“天花板”,实现职业跃升。
作者简介
郭振扬,资深FPGA开发工程师,软件无线电和卫星导航领域的深度爱好者,微信公众号及CSDN知名博主「FPGA十年老鸟」。作者乐于分享技术,累计撰写两百余篇实战博客,内容贴近工程实际痛点,在网络上受到不少FPGA开发者的认可。工作内容涉及逻辑设计、高速数字接口、数字信号处理等领域的FPGA工程落地,曾参与过多个量产项目的开发。擅长从底层电路的角度拆解设计思路,在时序优化、调试排错等方面积累了一些自己的经验和心得。
目录
目 录
第一部分 基础知识
第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
后 记
第一部分 基础知识
第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
后 记
📑 章节目录
- FPGA概述与基本结构
- FPGA资源详解:CLB、DSP、BRAM等
- 硬件描述语言与编码风格
- 理解原语与设计实现流程
- Vivado与ModelSim工具实战
- 写代码心中要有电路
- 逻辑级数与常用逻辑优化
- 复位设计与时序分析约束
- 时序报告解读与违例处理
- 跨时钟域处理与块存储器优化
- DSP48E1与高速I/O接口设计
- 高速串行收发器与信号完整性