前言
当前,我们正面临着一场前所未有的科技革命,以大数据、人工智能、5G、云计算等为代表的新兴技术正在推动人类社会向数字化、智能化转变。随着新一代信息技术应用的不断发展和深化,数字基础设施建设的承载需求也与日俱增,数据量的激增导致数据的传输、计算和存储都面临着巨大的挑战。同时,在各领域中,不同的应用场景都面临着其独特的数据处理需求。例如,在边缘和嵌入式设备中,支持低功耗、小尺寸和低成本的设计至关重要;在网络应用中,需要应对最高数据流量和以太网速度;在数据中心,则需要提供高带宽、低延时计算加速。面对上述需求及挑战,FPGA以其独特的性能和优势恰好可为企业提供极具竞争力的解决方案。
FPGA具备出色的灵活性和低延时性,能够通过改变和重组逻辑电路的方式满足不同应用场景的数据处理和加速需求。高性能和高效率不仅能优化企业的产品和解决方案性能,还能加快从研发到上市的进程,以化解市场需求不确定性所带来的风险等。5G、人工智能、数据中心和工业互联网等是新基建的重要组成部分,而FPGA以其灵活性、可编程、低延时及低功耗的特性,恰恰是这些领域中需要的核心技术之一,在这样的热潮下,FPGA也将迎来前所未有的发展机遇。
本书作为英特尔FPGA中国创新中心系列丛书之一,以提高开发人员的FPGA技术知识和应用能力为目标,围绕FPGA技术基础篇、FPGA开发方法篇及FPGA人工智能应用篇三大板块进行阐述,以FPGA核心知识为基础、设计方法为重要内容,结合FPGA在人工智能领域的应用实践,用翔实的案例帮助读者理解和掌握FPGA技术及应用。本书分为三个部分,共计11章,具体内容如下。
第一部分内容贯穿了FPGA的基础知识及开发流程。首先,介绍了FPGA的基本概念和入门知识,从FPGA的抽象化解释,到FPGA如何从早期的逻辑门器件演变为当前的现场可编程逻辑门阵列的整个发展历程,使读者明白FPGA的概念及特点。其次,介绍了FPGA的内部结构,进一步解读FPGA的片上资源,包括查找表、可编程寄存器、自适应逻辑模块、内部存储模块和时钟网络等,使读者能够从FPGA的最基本逻辑单元和最底层结构的角度加深对FPGA的理解。然后,介绍了FPGA的Verilog HDL语言开发方法,包括基本语法,如if-else语句、case语句等和高级开发技巧,如锁存器和寄存器的区别、阻塞与非阻塞的区别,并且根据编码器、译码器、双向寄存器和冒泡排序等实例具体介绍Verilog HDL语言的开发。最后,介绍了FPGA在Quartus Prime软件中的开发流程,结合FPGA基础知识、FPGA的内部结构及Verilog硬件描述语言系列内容,形成了一个基本的FPGA开发知识体系。
第二部分内容主要介绍了FPGA开发方法和工具,在对第一部分内容进行深化的同时,进一步介绍了面向软件工程师的FPGA开发方法。首先,介绍了FPGA传统开发过程中使用到的分析与调试工具,如综合工具、约束工具、时序分析工具、调试工具等,介绍了编译报告和网表查看工具。其次,介绍了基于FPGA的可编程片上系统(SOPC)的构建方法及其软硬件的开发流程,介绍了IP核与Nios处理器。然后,介绍了使用高层次综合设计的FPGA设计工具HLS进行FPGA开发的方法,包括基于HLS的开发流程、代码优化、Modelsim仿真及HLS多种接口的使用场景分析。最后,介绍了在异构计算场景下,如何使用OpenCL进行FPGA开发的方法,包括主机端和设备端的代码编写。
第三部分内容作为FPGA开发的一个扩展,主要介绍FPGA在人工智能领域的应用。首先,介绍了人工智能的发展历史和深度学习技术的基本知识,包括常用的深度学习网络模型和编程框架。其次,介绍了深度学习的概念、基本构成及深度学习的应用挑战,包括神经网络基本构成、常见的神经网络模型和数据集。最后,以计算机机器视觉为例,介绍了如何使用英特尔OpenVINO工具在英特尔FPGA上部署深度学习推理计算。
关于本书涉及的FPGA内容,读者可以直接访问www.intel.com.cn和www.fpga-china.com获取线上视频、远程FPGA加速资源等丰富的学习和开发资源。
鉴于笔者学识有限,本书内容可能有不足之处,恳请广大读者不吝赐教。
张瑞
2020年秋