本书内容体系
本书共16章,分为四个部分:第一部分为“FPGA基础理论”;第二部分为“FPGA初级入门”,第三部分为“FPGA高级进阶”,第四部分为“FPGA终极修炼”。第1、2、5~13章由韩彬(CrazyBingo)编写,第15、16章由于潇宇博士编写,第3、4、14章由林海全编写(第14章由FPGAer可可豆(宋恒)提供原稿)。章节介绍如下。
第一部分(FPGA基础理论)为第1~3章,主要包括FPGA发展历史与理论介绍、FPGA核心电路设计及PCB Layout,以及Quartus Ⅱ软件安装与Verilog HDL简介。对于初学者,这部分内容非常有必要仔细阅读,只有掌握了FPGA的历史与优势,认知了FPGA硬件设计基础理论,学会了Altera专用工具的安装,才能更好地掌握FPGA RTL的设计与仿真。笔者强烈建议有一定硬件认知基础后再去钻研FPGA,而不是把Verilog HDL当作C语言去编程。当然,具备FPGA基本设计能力的读者可以跳过这部分。
第二部分(FPGA初级入门)为第4~11章,主要是笔者多年积累的较为基础的FPGA设计实例,包括计数器、LED灯、按键检测程序、LCD1602的驱动、时钟管理模块的设计、片间通信SPI的调试,以及与PC串行UART通信、VGA显示器的图文显示驱动开发等。在实战开发中,这部分还穿插了必要的硬件原理、时序图介绍,以及Quartus Ⅱ仿真验证、各种调试经验等。对于初学者而言,这部分堪比扎实的地基,建议掌握理论基础后,再手动编写一遍代码,最后在开发平台验证功能。当然,对于已经入门的FPGAer,如果有足够的把握做得更好,那么可以跳过这部分。
第三部分(FPGA高级进阶)为第12~14章,这部分的学习需要一定的基础,且需花费一定的精力,这部分也是本书介绍FPGA设计最为重要且与众不同的内容。这部分内容从基于SDRAM内存的驱动开发入手,介绍了SDRAM的VGA显示控制器的开发,接着详细介绍了OV7725图像传感器,并通过驱动与采集的设计,完成了摄像头视频采集并实时显示于VGA的功能开发(这部分内容为后续视频图像处理奠定了基础,由于篇幅有限,图像处理部分请查阅本书配套资料包中的教程及相关代码)。最后,优化的设计必须重视每一个细节,时序约束在FPGA设计中有灵魂般的地位,因此介绍TimeQuest时序约束的章节将进一步让读者了解FPGA设计深层次的一些细节与要点。不建议初学者直接阅读这部分,熟练掌握FPGA的读者可以认真研究这部分,希望对读者有一定的帮助。
第四部分(FPGA终极修炼)为第15~16章,是本书的画龙点睛之笔。第15章是基于FPGA的硬件系统设计,将从系统级别介绍FPGA的硬件设计,全面地分析器件的选型及硬件开发中的注意事项,从项目的角度阐述独到的经验与见解。第16章是FPGA与深度学习加速器的介绍。随着谷歌公司的AlphaGo打败了人类围棋冠军,深度学习从神坛走了下来,越来越多的人开始认识到深度学习可能会改变未来的生活,成为未来科技发展的方向;而FPGA设计工具使其对深度学习领域经常使用的上层软件兼容性更强,FPGA正是助力深度学习的一大技术。因此,第16章将详细介绍深度学习及各类神经网络结构、FPGA实现优势等。无论对于初学者还是各位FPGAer,这部分是不容错过的内容。
本书配套的所有FPGA开发例程,相关的数据手册、文档资料,以及设计的工具软件等,包括更多的FPGA学习资料的总结,均可在本书配套资料包中查询得到。本书配套资料会持续更新(官方网站http://www.crazyfpga.com),希望读者能够仔细阅读这些资料,并软硬结合,用心设计,掌握FPGA开发流程与技巧,成为FPGA界的一名佼佼者。
最后,欢迎广大读者发送电子邮件到crazyfpga@qq.com进行交流,笔者(CrazyBingo)愿意随时与您分享FPGA成长道路上的困难与惊喜。