书籍详情
人工智能硬件电路设计基础及应用
作者:廖永波
出版社:电子工业出版社
出版时间:2022-03-01
ISBN:9787121430350
定价:¥198.00
购买这本书可以去
内容简介
本书针对人工智能硬件电路设计基础、着重介绍硬件电路相关的设计知识及SoC设计开发过程中数字前端知识,包括VHDL技术、Verilog技术及HLS技术。同时将开发SoC中常用的模块作为应用实例进行详细讲解。VHDL技术部分详细介绍了VHDL语言的背景知识、基本语法结构和VHDL代码的编写方法。另外,该部分还加入了基础电路和简单系统的设计实例,以及设计共享的内容,以便进行代码的分割、共享和重用。Verilog技术部分详细介绍了与VHDL技术部分相对应的内容,以便读者对照学习。在此基础上,本书还给出了一些应用实例,为读者深入研究SoC设计开发提供了具体的系统电路设计和验证结果。本书还在附录详细介绍了Xilinx和Altera FPGA软件环境下的操作步骤,以及在远程服务器环境中使用以上环境的操作步骤。同时附上书中涉及的所有代码,方便读者进行复现和二次开发。
作者简介
廖永波,电子科技大学副教授。电子科技大学博士、本科,兰州大学硕士。赴澳大利亚悉尼科技大学和昆士兰科技大学、比利时IMEC、美国University of Kansas作访问学者。担任四川省电子学会副秘书长、四川省电子学会EDA专委会秘书长;担任四川省科技厅评审专家、重庆市科技厅评审专家;担任IEEE审稿人和多个国际会议分会主席。曾获评2019年度中国电子学会先进工作者、第七届大学生集成电路设计?应用创新大赛优秀指导老师奖、电子科技大学示范性微电子学院"集成电路工程项目实习实训优秀校内指导老师”。长期从事SOC芯片、微处理器芯片、FPGA芯片、读出电路芯片、温度传感器芯片、电源管理芯片等芯片的研究;对芯片设计、生产、封装和测试有丰富经验;对片上系统、微处理器设计、软硬件协同设计等有较深的理解。
目录
第1部分 VHDL技术
第1章 VHDL程序的结构 002
1.1 库和包集 002
1.1.1 库 002
1.1.2 包集 004
1.1.3 库和包集的声明 008
1.2 实体、构造体和配置 09
1.2.1 实体 010
1.2.2 构造体 011
1.2.3 配置 013
1.3 课后习题 013
第2章 VHDL语言规则 014
2.1 常量、信号和变量 015
2.1.1 常量 015
2.1.2 信号 015
2.1.3 信号赋值语句 016
2.1.4 变量 018
2.1.5 变量赋值语句 018
2.1.6 比较信号和变量 020
2.2 数据类型 020
2.2.1 标量类型 020
2.2.2 复合类型 025
2.2.3 存取类型 029
2.2.4 文件类型 032
2.2.5 保护类型 033
2.3 运算操作符和属性 035
2.3.1 运算操作符 035
2.3.2 属性 042
2.3.3 通用属性 052
2.4 课后习题 053
第3章 VHDL主要描述语句 054
3.1 顺序语句 054
3.1.1 if语句 054
3.1.2 case语句 056
3.1.3 比较if语句和case语句 057
3.1.4 wait语句 060
3.1.5 loop语句 061
3.1.6 null语句 064
3.2 并行语句 064
3.2.1 process语句 065
3.2.2 block语句 067
3.2.3 generate语句 069
3.2.4 component实例化语句 072
3.3 子程序 076
3.3.1 函数 077
3.3.2 过程 080
3.4 课后习题 084
第4章 VHDL组合逻辑电路设计 085
4.1 4-16译码器 085
4.2 具有三态输出的8位4输入复用器 089
4.3 16位桶形移位器 091
4.4 课后习题 096
第5章 VHDL时序逻辑电路设计 097
5.1 带异步清零端的模10计数器 097
5.2 带同步清零端的4位移位寄存器 099
5.3 多路输出的时钟分频器 101
5.4 课后习题 104
第6章 VHDL状态机设计 105
6.1 状态机基本组成部分 106
6.2 状态机设计实例 107
6.2.1 带同步清零端和装载端的模10计数器 107
6.2.2 带异步复位端的序列检测器 110
6.3 课后习题 112
第7章 VHDL设计实例 113
第2部分 Verilog技术
第8章 Verilog程序结构 129
8.1 模块的端口定义和I/O说明 131
8.1.1 模块端口的定义 131
8.1.2 输入/输出(I/O)说明 132
8.2 数据类型定义 133
8.3 功能描述 133
8.3.1 连续赋值语句(assign) 133
8.3.2 过程(always) 133
8.3.3 元件例化 134
8.4 课后习题 134
第9章 Verilog语言规则 135
9.1 数字和字符串 135
9.1.1 数字 135
9.1.2 字符串 136
9.2 数据类型 137
9.2.1 取值集合 138
9.2.2 网络 138
9.2.3 变量 141
9.2.4 向量 143
9.2.5 强度 144
9.2.6 数组 144
9.2.7 常量 145
9.2.8 命名空间 146
9.3 运算符 147
9.3.1 算术运算符 149
9.3.2 逻辑运算符 150
9.3.3 关系运算符 150
9.3.4 相等运算符 150
9.3.5 位运算符 150
9.3.6 归约运算符 152
9.3.7 移位运算符 152
9.3.8 条件运算符 153
9.3.9 连接与复制运算符 153
9.4 属性 153
9.5 课后习题 155
第10章 Verilog主要描述语句 156
10.1 赋值语句 156
10.1.1 连续赋值 156
10.1.2 过程赋值 157
10.1.3 过程性连续赋值 158
10.1.4 赋值对象 160
10.1.5 阻塞与非阻塞 161
10.2 if语句 162
10.3 case语句 163
10.4 循环语句 165
10.5 时间控制 166
10.5.1 延迟控制 167
10.5.2 事件控制 167
10.5.3 内部赋值定时控制 169
10.6 块 170
10.6.1 顺序块 170
10.6.2 并行块 171
10.7 结构化过程 172
10.7.1 initial结构 172
10.7.2 always结构 173
10.7.3 task结构 173
10.7.4 Function结构 176
10.7.5 任务和函数的区别 179
10.8 课后习题 179
第11章 Verilog组合逻辑电路设计 180
11.1 4-16译码器 180
11.2 具有三态输出的8位4输入复用器 183
11.3 16位桶形移位器 184
11.4 课后习题 189
第12章 Verilog时序逻辑电路设计 190
12.1 带异步清零端的模10计数器 190
12.2 带同步清零端的4位移位寄存器 192
12.3 多路输出的时钟分频器 194
12.4 课后习题 196
第13章 Verilog状态机设计 197
13.1 状态机基本组成部分 198
13.2 状态机设计实例 199
13.2.1 带同步清零端和装载端的模10计数器 199
13.2.2 带异步复位端的序列检测器 202
13.3 课后习题 204
第14章 Verilog设计实例 205
14.1 实例一(半加器) 205
14.2 实例二(4-2编码器) 206
14.3 实例三(优先编码器) 207
14.4 实例四(乘法器) 208
14.5 实例五(16位并入串出寄存器) 209
14.6 实例六(行波计数器构成的13倍分频器) 211
14.7 实例七(LFSR构成的13倍分频器) 213
14.8 实例八(交通信号灯) 214
14.9 实例九(字符序列检测状态机) 219
14.10 实例十(IIC协议-主机写数据) 222
14.11 实例十一(IIC协议-主机读数据) 226
14.12 实例十二(可综合IIC协议读写功能实现) 230
14.13 实例十三(SPI协议) 239
第3部分 系统设计
第15章 HLS高层次综合 246
15.1 实验一创建HLS工程 250
15.1.1 步骤一:建立一个新的工程 250
15.1.2 步骤二:验证C源代码 256
15.1.3 步骤三:高层次综合 258
15.1.4 步骤四:RTL验证 260
15.1.5 步骤五:IP创建 260
15.2 实验二使用TCL命令接口 261
15.2.1 步骤一创建TCL文件 261
15.2.2 步骤二 执行TCL文件 263
15.3 实验三 使用Solution进行设计优化 264
15.3.1 步骤一 创建新的工程 264
15.3.2 步骤二优化I/O接口 265
15.3.3 步骤三 分析结果 269
15.3.4 步骤四 优化吞吐量(间隔) 270
第16章 MIPS架构处理器设计 273
16.1 总体结构设计 275
16.1.1 MIPS架构单周期处理器数据通路设计 276
16.1.2 接口定义和接口时序等 280
16.2 MIPS架构单周期设计总体连接及仿真验证 282
16.2.1 验证方案 282
16.2.2 仿真结果及分析 284
16.3 课后习题 295
第17章 RISC-V架构处理器设计 296
17.1 RISC-V处理器设计 297
17.1.1 整体处理器设计 297
17.1.2 取指阶段电路设计 298
17.1.3 指令译码阶段电路设计 300
17.1.4 指令执行阶段电路设计 301
17.1.5 存储器访问阶段电路设计 302
17.1.6 写回阶段电路设计 303
17.1.7 异常和中断处理机制 303
17.1.8 邻接互连机制 305
17.1.9 邻接互连指令简介 306
17.1.10 乘法过程简介 306
17.2 基于RISC-V的邻接互连处理器仿真验证 308
17.2.1 仿真平台搭建 308
17.2.2 仿真方案 309
17.2.3 仿真结果及分析 313
17.3 课后习题 316
第4部分 基于人工智能的目标检测
第18章 基于FPGA C5Soc的MobileNetV1 SSD目标检测方案设计 318
18.1 背景介绍 318
18.1.1 SSD模型介绍 318
18.1.2 Paddle Lite简介 319
18.2 方案介绍 320
18.2.1 功能介绍 320
18.2.2 系统设计 320
18.2.3 数据量化 321
18.2.4 Soc_system连接图 322
18.2.5 方案创新点及关键技术分析 322
18.3 硬件加速器介绍及仿真 323
18.3.1 硬件加速器整体架构 323
18.3.2 卷积电路 324
18.3.3 硬件加速器波形抓取 328
18.4 整体加速结果分析 329
18.4.1 硬件加速器时序及资源报告 329
18.4.2 加速结果对比与总结 330
18.5 课后习题 332
第5部分 附录
附录A 在ISE设计组件下编写VHDL项目的方法 334
附录B 在Quartus设计组件下编写VHDL项目的方法 379
附录C 人工智能边缘实验室-FPGA开发板调试 403
附录D 正文中的程序代码 417
第1章 VHDL程序的结构 002
1.1 库和包集 002
1.1.1 库 002
1.1.2 包集 004
1.1.3 库和包集的声明 008
1.2 实体、构造体和配置 09
1.2.1 实体 010
1.2.2 构造体 011
1.2.3 配置 013
1.3 课后习题 013
第2章 VHDL语言规则 014
2.1 常量、信号和变量 015
2.1.1 常量 015
2.1.2 信号 015
2.1.3 信号赋值语句 016
2.1.4 变量 018
2.1.5 变量赋值语句 018
2.1.6 比较信号和变量 020
2.2 数据类型 020
2.2.1 标量类型 020
2.2.2 复合类型 025
2.2.3 存取类型 029
2.2.4 文件类型 032
2.2.5 保护类型 033
2.3 运算操作符和属性 035
2.3.1 运算操作符 035
2.3.2 属性 042
2.3.3 通用属性 052
2.4 课后习题 053
第3章 VHDL主要描述语句 054
3.1 顺序语句 054
3.1.1 if语句 054
3.1.2 case语句 056
3.1.3 比较if语句和case语句 057
3.1.4 wait语句 060
3.1.5 loop语句 061
3.1.6 null语句 064
3.2 并行语句 064
3.2.1 process语句 065
3.2.2 block语句 067
3.2.3 generate语句 069
3.2.4 component实例化语句 072
3.3 子程序 076
3.3.1 函数 077
3.3.2 过程 080
3.4 课后习题 084
第4章 VHDL组合逻辑电路设计 085
4.1 4-16译码器 085
4.2 具有三态输出的8位4输入复用器 089
4.3 16位桶形移位器 091
4.4 课后习题 096
第5章 VHDL时序逻辑电路设计 097
5.1 带异步清零端的模10计数器 097
5.2 带同步清零端的4位移位寄存器 099
5.3 多路输出的时钟分频器 101
5.4 课后习题 104
第6章 VHDL状态机设计 105
6.1 状态机基本组成部分 106
6.2 状态机设计实例 107
6.2.1 带同步清零端和装载端的模10计数器 107
6.2.2 带异步复位端的序列检测器 110
6.3 课后习题 112
第7章 VHDL设计实例 113
第2部分 Verilog技术
第8章 Verilog程序结构 129
8.1 模块的端口定义和I/O说明 131
8.1.1 模块端口的定义 131
8.1.2 输入/输出(I/O)说明 132
8.2 数据类型定义 133
8.3 功能描述 133
8.3.1 连续赋值语句(assign) 133
8.3.2 过程(always) 133
8.3.3 元件例化 134
8.4 课后习题 134
第9章 Verilog语言规则 135
9.1 数字和字符串 135
9.1.1 数字 135
9.1.2 字符串 136
9.2 数据类型 137
9.2.1 取值集合 138
9.2.2 网络 138
9.2.3 变量 141
9.2.4 向量 143
9.2.5 强度 144
9.2.6 数组 144
9.2.7 常量 145
9.2.8 命名空间 146
9.3 运算符 147
9.3.1 算术运算符 149
9.3.2 逻辑运算符 150
9.3.3 关系运算符 150
9.3.4 相等运算符 150
9.3.5 位运算符 150
9.3.6 归约运算符 152
9.3.7 移位运算符 152
9.3.8 条件运算符 153
9.3.9 连接与复制运算符 153
9.4 属性 153
9.5 课后习题 155
第10章 Verilog主要描述语句 156
10.1 赋值语句 156
10.1.1 连续赋值 156
10.1.2 过程赋值 157
10.1.3 过程性连续赋值 158
10.1.4 赋值对象 160
10.1.5 阻塞与非阻塞 161
10.2 if语句 162
10.3 case语句 163
10.4 循环语句 165
10.5 时间控制 166
10.5.1 延迟控制 167
10.5.2 事件控制 167
10.5.3 内部赋值定时控制 169
10.6 块 170
10.6.1 顺序块 170
10.6.2 并行块 171
10.7 结构化过程 172
10.7.1 initial结构 172
10.7.2 always结构 173
10.7.3 task结构 173
10.7.4 Function结构 176
10.7.5 任务和函数的区别 179
10.8 课后习题 179
第11章 Verilog组合逻辑电路设计 180
11.1 4-16译码器 180
11.2 具有三态输出的8位4输入复用器 183
11.3 16位桶形移位器 184
11.4 课后习题 189
第12章 Verilog时序逻辑电路设计 190
12.1 带异步清零端的模10计数器 190
12.2 带同步清零端的4位移位寄存器 192
12.3 多路输出的时钟分频器 194
12.4 课后习题 196
第13章 Verilog状态机设计 197
13.1 状态机基本组成部分 198
13.2 状态机设计实例 199
13.2.1 带同步清零端和装载端的模10计数器 199
13.2.2 带异步复位端的序列检测器 202
13.3 课后习题 204
第14章 Verilog设计实例 205
14.1 实例一(半加器) 205
14.2 实例二(4-2编码器) 206
14.3 实例三(优先编码器) 207
14.4 实例四(乘法器) 208
14.5 实例五(16位并入串出寄存器) 209
14.6 实例六(行波计数器构成的13倍分频器) 211
14.7 实例七(LFSR构成的13倍分频器) 213
14.8 实例八(交通信号灯) 214
14.9 实例九(字符序列检测状态机) 219
14.10 实例十(IIC协议-主机写数据) 222
14.11 实例十一(IIC协议-主机读数据) 226
14.12 实例十二(可综合IIC协议读写功能实现) 230
14.13 实例十三(SPI协议) 239
第3部分 系统设计
第15章 HLS高层次综合 246
15.1 实验一创建HLS工程 250
15.1.1 步骤一:建立一个新的工程 250
15.1.2 步骤二:验证C源代码 256
15.1.3 步骤三:高层次综合 258
15.1.4 步骤四:RTL验证 260
15.1.5 步骤五:IP创建 260
15.2 实验二使用TCL命令接口 261
15.2.1 步骤一创建TCL文件 261
15.2.2 步骤二 执行TCL文件 263
15.3 实验三 使用Solution进行设计优化 264
15.3.1 步骤一 创建新的工程 264
15.3.2 步骤二优化I/O接口 265
15.3.3 步骤三 分析结果 269
15.3.4 步骤四 优化吞吐量(间隔) 270
第16章 MIPS架构处理器设计 273
16.1 总体结构设计 275
16.1.1 MIPS架构单周期处理器数据通路设计 276
16.1.2 接口定义和接口时序等 280
16.2 MIPS架构单周期设计总体连接及仿真验证 282
16.2.1 验证方案 282
16.2.2 仿真结果及分析 284
16.3 课后习题 295
第17章 RISC-V架构处理器设计 296
17.1 RISC-V处理器设计 297
17.1.1 整体处理器设计 297
17.1.2 取指阶段电路设计 298
17.1.3 指令译码阶段电路设计 300
17.1.4 指令执行阶段电路设计 301
17.1.5 存储器访问阶段电路设计 302
17.1.6 写回阶段电路设计 303
17.1.7 异常和中断处理机制 303
17.1.8 邻接互连机制 305
17.1.9 邻接互连指令简介 306
17.1.10 乘法过程简介 306
17.2 基于RISC-V的邻接互连处理器仿真验证 308
17.2.1 仿真平台搭建 308
17.2.2 仿真方案 309
17.2.3 仿真结果及分析 313
17.3 课后习题 316
第4部分 基于人工智能的目标检测
第18章 基于FPGA C5Soc的MobileNetV1 SSD目标检测方案设计 318
18.1 背景介绍 318
18.1.1 SSD模型介绍 318
18.1.2 Paddle Lite简介 319
18.2 方案介绍 320
18.2.1 功能介绍 320
18.2.2 系统设计 320
18.2.3 数据量化 321
18.2.4 Soc_system连接图 322
18.2.5 方案创新点及关键技术分析 322
18.3 硬件加速器介绍及仿真 323
18.3.1 硬件加速器整体架构 323
18.3.2 卷积电路 324
18.3.3 硬件加速器波形抓取 328
18.4 整体加速结果分析 329
18.4.1 硬件加速器时序及资源报告 329
18.4.2 加速结果对比与总结 330
18.5 课后习题 332
第5部分 附录
附录A 在ISE设计组件下编写VHDL项目的方法 334
附录B 在Quartus设计组件下编写VHDL项目的方法 379
附录C 人工智能边缘实验室-FPGA开发板调试 403
附录D 正文中的程序代码 417
猜您喜欢