描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121402401丛书名: 英特尔FPGA中国创新中心系列丛书
本书包含FPGA技术基础篇、FPGA开发方法篇和人工智能应用篇三大板块,共计11章,以FPGA基础知识为切入点,通过对开发方法和设计思路的讲解,帮助读者快速掌握FPGA开发技术及FPGA在人工智能上的应用。本书可作为FPGA和其他开发人员进行FPGA设计和应用的参考用书。
本书主要从技术基础、开发方法和人工智能应用三个方面介绍FPGA的开发方法,围绕FPGA的基础知识,Verilog硬件描述语言,FPGA在Quartus中的开发流程,FPGA的SOPC、HLS、OpenCL设计方法,FPGA在人工智能领域的应用等方面进行阐述,使开发人员能理解FPGA的核心知识,掌握FPGA的开发方法和开发工具。本书包含FPGA技术基础篇、FPGA开发方法篇和人工智能应用篇三大板块,共计11章,以FPGA基础知识为切入点,通过对开发方法和设计思路的讲解,帮助读者快速掌握FPGA开发技术及FPGA在人工智能上的应用。本书可作为FPGA和其他开发人员进行FPGA设计和应用的参考用书。
第一部分 FPGA技术基础篇
第1章 FPGA的特点及其历史 002
1.1 无处不在的FPGA 002
1.2 创造性地解释FPGA 003
1.2.1 珠串法 004
1.2.2 乐高积木法 004
1.3 FPGA的可定制性 005
1.4 早期的逻辑功能实现 006
1.4.1 数字设计与TTL逻辑 007
1.4.2 从TTL到可编程逻辑 008
1.5 可简单编程逻辑器件(PAL) 009
1.5.1 可编程阵列逻辑优势 009
1.5.2 PAL编程技术 010
1.6 可编程逻辑器件(PLD) 011
1.7 复杂可编程逻辑器件(CPLD) 012
1.7.1 普通CPLD逻辑块的特点 012
1.7.2 CPLD的一般优势 013
1.7.3 非易失FPGA 014
1.8 现场可编程逻辑门阵列(FPGA) 015
第2章 FPGA架构 017
2.1 FPGA全芯片架构 017
2.2 FPGA逻辑阵列模块 018
2.2.1 查找表(LUT) 019
2.2.2 可编程寄存器 019
2.2.3 LABs和LE:更进一步的观察 022
2.2.4 自适应逻辑模块(ALM) 023
2.3 FPGA嵌入式存储 024
2.3.1 存储资源的利用 024
2.3.2 M9K资源介绍 025
2.4 时钟网络 027
2.4.1 FPGA时钟架构 027
2.4.2 PLL(锁相环) 028
2.5 DSP模块 028
2.6 FPGA布线 029
2.7 FPGA编程资源 030
2.8 FPGA I/O元件 031
2.8.1 典型的I/O元件逻辑 031
2.8.2 高速收发器 032
2.9 英特尔FPGA SoC 033
第3章 Verilog HDL 035
3.1 Verilog HDL概述 035
3.1.1 Verilog HDL的介绍 035
3.1.2 Verilog HDL的发展历史 036
3.1.3 Verilog HDL的相关术语 037
3.1.4 Verilog HDL的开发流程 038
3.2 Verilog HDL基础知识 040
3.2.1 程序结构 040
3.2.2 程序实例 041
3.2.3 数据类型 041
3.2.4 模块例化 043
3.2.5 运算符 044
3.3 Verilog HDL的基本语法 048
3.3.1 if-else语句 048
3.3.2 case语句 049
3.3.3 for循环 050
3.3.4 Verilog HDL常用关键字汇总 050
3.4 Verilog HDL高级知识点 051
3.4.1 阻塞与非阻塞的区别 051
3.4.2 assign语句和always语句的区别 054
3.4.3 锁存器与寄存器的区别 054
3.4.4 状态机 055
3.5 Verilog HDL开发实例篇 059
3.5.1 汉明码编码器 059
3.5.2 数码管译码器 063
3.5.3 双向移位寄存器 066
3.5.4 冒泡排序 069
第4章 Quartus Prime基本开发流程 081
4.1 Quartus Prime软件介绍 081
4.1.1 英特尔FPGA软件与硬件简介 081
4.1.2 Quartus Prime标准版设计软件简介 083
4.1.3 Quartus Prime主窗口界面 085
4.1.4 Quartus Prime默认操作环境 085
4.1.5 Quartus Prime主工具栏 086
4.1.6 Quartus Prime内置帮助系统 087
4.1.7 Quartus Prime可分离的窗口 088
4.1.8 Quartus Prime任务窗口 088
4.1.9 Quartus Prime自定义任务流程 090
4.2 Quartus Prime开发流程 091
4.2.1 典型的FPGA开发流程 091
4.2.2 创建Quartus Prime工程 094
4.2.3 设计输入 100
4.2.4 编译 106
4.2.5 分配管脚 111
4.2.6 仿真 112
4.2.7 器件配置 113
4.3 实验指导 116
4.3.1 流水灯实验 116
4.3.2 按键实验 128
4.3.3 PLL实验 136
第二部分 PGA开发方法篇
第5章 FPGA设计工具 145
5.1 编译报告 145
5.1.1 源文件读取报告 147
5.1.2 资源使用报告 147
5.1.3 动态综合报告 149
5.2 网表查看工具 149
5.2.1 RTL Viewer 149
5.2.2 Technology Map Viewer 150
5.2.3 State Machine Viewer 152
5.3 物理约束 153
5.3.1 物理约束设计 153
5.3.2 Assignment Editor 154
5.3.3 QSF文件设置 156
5.4 时序分析工具 158
5.4.1 TimeQuest Timing Analyzer的GUI图形交互界面 158
5.4.2 任务窗格(Tasks) 159
5.4.3 创建时序数据库(Netlist Setup) 159
5.4.4 常用的约束报告 160
5.4.5 报告窗格(Report Pane) 161
5.4.6 时序异常(Exceptions) 162
5.4.7 关于SDC的最后说明 164
5.5 功耗分析工具 164
5.5.1 功耗和热考虑因素 164
5.5.2 功耗分析工具比较 165
5.5.3 EPE电子表格 165
5.5.4 Power Analyzer 166
5.6 片上调试工具 167
5.6.1 Quartus Prime软件中的片上调试工具 167
5.6.2 Signal Probe Pin(信号探针) 168
5.6.3 SignalTap Ⅱ嵌入式逻辑分析仪 170
第6章 基于英特尔FPGA的SOPC开发 175
6.1 SOPC技术简介 175
6.2 IP核与Nios处理器 176
6.2.1 基于IP硬核的SOPC 176
6.2.2 基于IP软核的SOPC 177
6.3 构建SOPC系统 178
6.3.1 Platform Designer 178
6.3.2 SOPC设计工具 180
6.4 SOPC开发实战 181
6.4.1 SOPC系统设计 181
6.4.2 SOPC硬件设计 182
6.4.3 SOPC软件设计 199
第7章 基于英特尔FPGA的HLS开发 203
7.1 HLS的基本概念 203
7.2 HLS的基本开发流程 204
7.2.1 HLS的安装 204
7.2.2 核心算法代码 205
7.2.3 功能验证 205
7.2.4 生成硬件代码 206
7.2.5 模块代码优化 208
7.2.6 HLS的Modelsim仿真 211
7.2.7 集成HLS代码到FPGA系统 211
7.2.8 HDL实例化 212
7.2.9 添加IP路径到Qsys系统 213
7.3 HLS的多种接口及其使用场景 215
7.3.1 标准接口 215
7.3.2 隐式的Avalon MM Master接口 217
7.3.3 显式的Avalon MM Master接口 219
7.3.4 Avalon MM Slave接口 220
7.3.5 Avalon Streaming接口 224
7.4 HLS简单的优化技巧 226
第8章 基于英特尔FPGA的OpenCL异构技术 227
8.1 OpenCL基本概念 227
8.1.1 异构计算简介 227
8.1.2 OpenCL基础知识 228
8.1.3 OpenCL语言简介 231
8.2 基于英特尔FPGA的OpenCL开发环境 234
8.2.1 英特尔FPGA的OpenCL解决方案 234
8.2.2 系统要求 236
8.2.3 环境安装 237
8.2.4 设置环境变量 237
8.2.5 初始化并检测OpenCL环境 238
8.3 主机端Host程序设计 239
8.3.1 建立Platform环境 239
8.3.2 创建Program与Kernel 242
8.3.3 Host与Kernel的交互 243
8.3.4 OpenCL的内核执行 246
8.3.5 Host端程序示例 247
8.4 设备端Kernel程序设计流程 248
8.4.1 Kernel编译 248
8.4.2 功能验证(-march=emulator,x86平台仿真) 253
8.4.3 静态分析(-rtl,分析HTML报告) 253
8.4.4 动态分析(-profile) 255
第三部分 人工智能应用篇
第9章 人工智能简介 259
9.1 FPGA在人工智能领域的独特优势 259
9.1.1 确定性低延迟 260
9.1.2 灵活可配置 260
9.1.3 针对卷积神经网络的特殊优化 261
9.2 人工智能的概念 261
9.3 人工智能的发展史 262
9.3.1 早期的兴起与低潮 262
9.3.2 人工智能的诞生 263
9.3.3 人工智能的“冬天” 263
9.3.4 交叉学科的兴起 263
9.3.5 云计算与大数据时代的来临 264
9.4 人工智能的应用 264
9.4.1 智能决策 264
9.4.2 最优路径规划 264
9.4.3 智能计算系统 265
9.5 人工智能的限制 265
9.6 人工智能的分类 265
9.6.1 弱人工智能 266
9.6.2 强人工智能 266
9.6.3 超人工智能 266
9.7 人工智能的发展及其基础 267
9.7.1 矩阵论 267
9.7.2 应用统计 268
9.7.3 回归分析与方差分析 268
9.7.4 数值分析 268
第10章 深度学习 269
10.1 深度学习的优势 269
10.2 深度学习的概念 271
10.3 神经网络的基本构成 272
10.3.1 神经元的基本原理 273
10.3.2 全连接神经网络 274
10.3.3 卷积神经网络 275
10.3.4 常见的卷积神经网络 277
10.4 常见的深度学习数据集 279
10.5 深度学习的应用挑战 280
第11章 基于英特尔FPGA进行深度学习推理 282
11.1 视频监控 282
11.2 视觉系统架构 283
11.2.1 物理特征的捕捉 283
11.2.2 预处理 283
11.2.3 高级处理 284
11.3 计算机视觉的常见任务 285
11.3.1 图形图像分割 286
11.3.2 对象检测 286
11.3.3 对象分类 287
11.3.4 面部识别 287
11.3.5 其他任务 288
11.4 计算机视觉的基础 289
11.4.1 深度学习框架 290
11.4.2 OpenCL 291
11.4.3 OpenCV 292
11.4.4 OpenVINO 292
11.5 使用OpenVINO工具在英特尔FPGA上部署深度学习推理应用 293
11.5.1 OpenVINO工具 293
11.5.2 端到端机器学习 295
11.5.3 OpenVINO安装 295
11.5.4 模型优化器 297
11.5.5 推理引擎 302
后记 313
当前,我们正面临着一场前所未有的科技革命,以大数据、人工智能、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年秋
评论
还没有评论。