描述
包 装: 平塑是否套装: 否国际标准书号ISBN: 9787121480010丛书名: 电子系统EDA新技术丛书
内容简介
本书是对《Xilinx Zynq-7000嵌入式系统设计与实现:基于Arm Cortex-A9双核处理器和Vivado的设计方法(第二版)》一书的一次重要修订,全书共包含30章,主要内容包括Xilinx Zynq系列SoC设计导论、AMBA规范、Zynq-7000系统公共资源和特性、Zynq-7000调试和测试子系统、Cortex-A9处理器指令集、Cortex-A9片上存储器系统结构和功能、Zynq-7000 SoC的Vivado基本设计流程、Zynq-7000 GPIO原理和控制、Cortex-A0异常与中断原理和实现、Cortex-A9定时器原理及实现、Cortex-A9 DMA控制器原理和实现、Cortex-A9安全性扩展、Cortex-A9 NEON原理和实现、Zynq-7000的可编程逻辑资源、Zynq-7000的互联结构、Zynq-7000 SoC内定制简单AXI-Lite IP、Zynq-7000 SoC内定制复杂AXI Lite IP、Zynq-7000 AXI HP数据传输原理和实现、Zynq-7000 ACP数据传输原理和实现、Zynq-7000软件与硬件协同调试原理和实现、Zynq-7000 SoC启动与配置原理和实现、Linux开发环境的构建、Zynq-7000 SoC内Ubuntu硬件运行环境的构建、Zynq-7000 SoC内Ubuntu软件运行环境的构建、Linux环境下简单字符设备驱动程序的开发、Linux环境下包含中断机制驱动程序的开发、Linux环境下图像处理系统的构建、Zynq-7000 SoC上构建和实现Python应用、手写体识别模型训练与推理一体化设计和实现,以及基于KR260平台的人体姿态识别的实现。
目 录
目录
第1章 Xilinx Zynq系列SoC设计导论 1
1.1 全可编程SoC基础知识 1
1.1.1 全可编程SoC的演进 1
1.1.2 SoC与MCU和CPU的比较 3
1.1.3 全可编程SoC诞生的背景 4
1.1.4 全可编程SoC的技术特点 4
1.1.5 全可编程SoC中的处理器类型 5
1.2 Arm架构及分类 6
1.2.1 M-Profile 7
1.2.2 R-Profile 8
1.2.3 A-Profile 9
1.3 Zynq-7000 SoC的功能和结构 11
1.3.1 Zynq-7000 SoC产品的分类及资源 11
1.3.2 Zynq-7000 SoC的功能 12
1.3.3 Zynq-7000 SoC内的PS的构成 13
1.3.4 Zynq-7000 SoC内的PL的构成 18
1.3.5 Zynq-7000 SoC内的互联结构 19
1.3.6 Zynq-7000 SoC的供电引脚 20
1.3.7 Zynq-7000 SoC内MIO到EMIO的连接 22
1.3.8 Zynq-7000 SoC内为PL分配的信号 26
1.4 Zynq UltraScale+MPSoC的功能和结构 28
1.4.1 Zynq UltraScale+MPSoC产品的分类及资源 28
1.4.2 Zynq UltraScale+MPSoC的结构 31
1.4.3 Zynq UltraScale+MPSoC的供电区域 35
1.4.4 Zynq UltraScale+MPSoC PS-PL AXI接口 36
第2章 AMBA规范 38
2.1 AMBA规范的发展 38
2.1.1 AMBA 1 39
2.1.2 AMBA 2 39
2.1.3 AMBA 3 39
2.1.4 AMBA 4 40
2.1.5 AMBA 5 41
2.2 AMBA APB规范 43
2.2.1 AMBA APB写传输 43
2.2.2 AMBA APB读传输 45
2.2.3 AMBA APB错误响应 45
2.2.4 操作状态 46
2.2.5 AMBA 3 APB信号 47
2.3 AMBA AHB规范 48
2.3.1 AMBA AHB的结构 48
2.3.2 AMBA AHB操作 49
2.3.3 AMBA AHB的传输类型 51
2.3.4 AMBA AHB的猝发操作 52
2.3.5 AMBA AHB的传输控制信号 55
2.3.6 AMBA AHB地址译码 56
2.3.7 AMBA AHB从设备传输响应 57
2.3.8 AMBA AHB数据总线 59
2.3.9 AMBA AHB传输仲裁 61
2.3.10 AMBA AHB分割传输 65
2.3.11 AMBA AHB复位 68
2.3.12 关于AHB数据总线的位宽 68
2.3.13 AMBA AHB接口设备 69
2.4 AMBA AXI4规范 71
2.4.1 AMBA AXI4概述 71
2.4.2 AMBA AXI4的功能 71
2.4.3 AMBA AXI4的互联结构 79
2.4.4 AXI4-Lite的功能 80
2.4.5 AXI4-Stream的功能 81
第3章 Zynq-7000系统的公共资源和特性 84
3.1 时钟子系统 84
3.1.1 时钟子系统的架构 84
3.1.2 CPU时钟域 86
3.1.3 时钟编程实例 87
3.1.4 时钟子系统内的生成电路结构 88
3.2 复位子系统 92
3.2.1 复位子系统的结构 92
3.2.2 复位流程 93
3.2.3 复位结果 94
第4章 Zynq-7000 SoC调试和测试子系统 96
4.1 JTAG和DAP子系统 96
4.1.1 JTAG和DAP子系统的功能 98
4.1.2 JTAG和DAP子系统I/O信号 100
4.1.3 编程模型 100
4.1.4 Arm DAP控制器 101
4.1.5 TPIU 102
4.1.6 Xilinx TAP控制器 103
4.2 CoreSight系统的结构及功能 103
4.2.1 CoreSight系统的结构 103
4.2.2 CoreSight系统的功能 104
第5章 Cortex-A9处理器及其指令集 108
5.1 应用处理单元概述 108
5.1.1 基本功能 108
5.1.2 系统级视图 109
5.2 Cortex-A9处理器的结构 111
5.2.1 处理器模式 112
5.2.2 寄存器 113
5.2.3 流水线 118
5.2.4 分支预测 119
5.2.5 指令和数据对齐 119
5.2.6 跟踪和调试 121
5.3 Cortex-A9处理器的指令集 122
5.3.1 指令集基础 122
5.3.2 数据处理操作 125
5.3.3 存储器指令 129
5.3.4 分支 131
5.3.5 饱和算术 132
5.3.6 杂项指令 133
第6章 Cortex-A9片上存储器系统的结构和功能 137
6.1 L1高速缓存 137
6.1.1 高速缓存的背景 137
6.1.2 高速缓存的优势和问题 138
6.1.3 存储器的层次 139
6.1.4 高速缓存的结构 139
6.1.5 缓存策略 143
6.1.6 写和取缓冲区 145
6.1.7 缓存性能和命中速度 145
6.1.8 无效和清除缓存 146
6.1.9 一致性点和统一性点 147
6.1.10 Zynq-7000 SoC中的Cortex-A9 L1高速缓存的特性 149
6.2 存储器访问顺序 150
6.2.1 普通、设备和强顺序存储器模型 151
6.2.2 存储器属性 152
6.2.3 存储器屏障 153
6.3 存储器管理单元 156
6.3.1 MMU功能描述 156
6.3.2 虚拟存储器 157
6.3.3 转换表 158
6.3.4 页表入口域的描述 161
6.3.5 TLB的构成 163
6.3.6 存储器访问顺序 165
6.4 侦听控制单元 166
6.4.1 地址过滤 166
6.4.2 SCU主设备端口 166
6.5 L2高速缓存 167
6.5.1 互斥L2-L1高速缓存配置 169
6.5.2 高速缓存替换策略 170
6.5.3 高速缓存锁定 170
6.5.4 使能/禁止L2高速缓存控制器 171
6.5.5 RAM访问延迟控制 171
6.5.6 保存缓冲区操作 172
6.5.7 Cortex-A9处理器和L2高速缓存控制器之间的优化 172
6.5.8 预取操作 173
6.5.9 编程模型 174
6.6 片上存储器 175
6.6.1 片上存储器概述 175
6.6.2 片上存储器的功能 176
6.7 系统地址空间分配 181
6.7.1 地址映射 181
6.7.2 系统总线主设备 182
6.7.3 I/O外设 182
6.7.4 SMC存储器 183
6.7.5 SLCR 183
6.7.6 PS系统寄存器 183
6.7.7 CPU私有寄存器 183
第7章 Zynq-7000 SoC的Vivado基本设计流程 185
7.1 创建新的工程 185
7.2 使用IP集成器创建处理器系统 187
7.3 生成顶层HDL并导出设计到SDK 192
7.4 创建应用测试程序 195
7.5 设计验证 198
7.5.1 验证前的硬件平台准备 198
7.5.2 设计验证的具体实现 199
7.6 SDK调试工具的使用 200
7.6.1 打开前面的设计工程 200
7.6.2 导入工程到SDK 200
7.6.3 建立新的存储器测试工程 201
7.6.4 运行存储器测试工程 201
7.6.5 调试存储器测试工程 203
7.7 SDK性能分析工具 205
第8章 Zynq-7000 SoC GPIO原理和控制实现 209
8.1 GPIO模块的原理 209
8.1.1 GPIO接口及其功能 210
8.1.2 GPIO编程流程 212
8.1.3 I/O接口 214
8.1.4 部分寄存器说明 214
8.1.5 底层读/写函数说明 215
8.1.6 GPIO的API函数说明 216
8.2 Vivado集成开发环境下MIO读/写控制的实现 216
8.2.1 调用底层读/写函数编写GPIO应用程序 217
8.2.2 调用API函数编写GPIO应用程序 219
8.3 Vivado集成开发环境下EMIO读/写控制的实现 222
8.3.1 调用底层读/写函数编写GPIO应用程序 222
8.3.2 调用API函数编写GPIO应用程序 227
第9章 Cortex-A9异常与中断原理和实现 230
9.1 异常原理 230
9.1.1 异常类型 230
9.1.2 异常处理 234
9.1.3 其他异常句柄 235
9.1.4 Linux异常程序流 236
9.2 中断原理 237
9.2.1 外部中断请求 237
9.2.2 Zynq-7000 SoC内的中断环境 240
9.2.3 中断控制器的功能 241
9.3 Vivado集成开发环境下中断系统的实现 244
9.3.1 Cortex-A9处理器中断及异常的初始化流程 245
9.3.2 Cortex-A9处理器的GPIO控制器的初始化流程 245
9.3.3 导出硬件设计到SDK 246
9.3.4 创建新的应用工程 246
9.3.5 运行应用工程 248
第10章 Cortex-A9定时器原理和控制实现 250
10.1 定时器的系统结构 250
10.1.1 CPU私有定时器和看门狗定时器 251
10.1.2 全局定时器/计数器 251
10.1.3 系统级看门狗定时器 252
10.1.4 3重定时器/计数器 253
10.1.5 I/O信号 256
10.2 Vivado集成开发环境下定时器的控制实现 257
10.2.1 打开前面的设计工程 257
10.2.2 创建SDK软件工程 257
10.2.3 运行软件应用工程 259
第11章 Cortex-A9 DMA控制器原理和实现 261
11.1 DMA控制器的结构 261
11.2 DMA控制器的功能 264
11.2.1 考虑AXI交易的因素 265
11.2.2 DMA管理器 265
11.2.3 多通道数据FIFO(MFIFO) 266
11.2.4 存储器—存储器交易 266
11.2.5 PL外设AXI交易 266
11.2.6 PL外设请求接口 267
11.2.7 PL外设长度管理 268
11.2.8 DMAC的长度管理 269
11.2.9 事件和中断 270
11.2.10 异常终止 270
11.2.11 安全性 272
11.2.12 IP配置选项 273
11.3 DMA控制器编程指南 273
11.3.1 启动控制器 274
11.3.2 执行DMA传输 274
11.3.3 中断服务例程 274
11.3.4 寄存器描述 274
11.4 DMA引擎编程指南 275
11.4.1 写微代码编程用于AXI交易的CCRx 275
11.4.2 存储器到存储器的传输 276
11.4.3 PL外设DMA传输长度管理 279
11.4.4 使用一个事件重新启动DMA通道 280
11.4.5 中断一个处理器 281
11.4.6 指令集参考 281
11.5 编程限制 282
11.6 系统功能之控制器复位配置 284
11.7 I/O接口 284
11.7.1 AXI主接口 285
11.7.2 外设请求接口 285
11.8 Vivado集成开发环境下DMA传输的实现 286
11.8.1 DMA控制器初始化流程 286
11.8.2 中断控制器初始化流程 287
11.8.3 中断服务句柄处理流程 287
11.8.4 导出硬件设计到SDK 287
11.8.5 创建新的应用工程 288
11.8.6 运行软件应用工程 294
第12章 Cortex-A9安全性扩展 295
12.1 TrustZone硬件架构 295
12.1.1 多核系统的安全性扩展 297
12.1.2 非安全世界和安全世界的交互 297
12.2 Zynq-7000 SoC APU内的TrustZone 298
12.2.1 CPU安全过渡 299
12.2.2 CP15寄存器访问控制 299
12.2.3 MMU安全性 300
12.2
第1章 Xilinx Zynq系列SoC设计导论 1
1.1 全可编程SoC基础知识 1
1.1.1 全可编程SoC的演进 1
1.1.2 SoC与MCU和CPU的比较 3
1.1.3 全可编程SoC诞生的背景 4
1.1.4 全可编程SoC的技术特点 4
1.1.5 全可编程SoC中的处理器类型 5
1.2 Arm架构及分类 6
1.2.1 M-Profile 7
1.2.2 R-Profile 8
1.2.3 A-Profile 9
1.3 Zynq-7000 SoC的功能和结构 11
1.3.1 Zynq-7000 SoC产品的分类及资源 11
1.3.2 Zynq-7000 SoC的功能 12
1.3.3 Zynq-7000 SoC内的PS的构成 13
1.3.4 Zynq-7000 SoC内的PL的构成 18
1.3.5 Zynq-7000 SoC内的互联结构 19
1.3.6 Zynq-7000 SoC的供电引脚 20
1.3.7 Zynq-7000 SoC内MIO到EMIO的连接 22
1.3.8 Zynq-7000 SoC内为PL分配的信号 26
1.4 Zynq UltraScale+MPSoC的功能和结构 28
1.4.1 Zynq UltraScale+MPSoC产品的分类及资源 28
1.4.2 Zynq UltraScale+MPSoC的结构 31
1.4.3 Zynq UltraScale+MPSoC的供电区域 35
1.4.4 Zynq UltraScale+MPSoC PS-PL AXI接口 36
第2章 AMBA规范 38
2.1 AMBA规范的发展 38
2.1.1 AMBA 1 39
2.1.2 AMBA 2 39
2.1.3 AMBA 3 39
2.1.4 AMBA 4 40
2.1.5 AMBA 5 41
2.2 AMBA APB规范 43
2.2.1 AMBA APB写传输 43
2.2.2 AMBA APB读传输 45
2.2.3 AMBA APB错误响应 45
2.2.4 操作状态 46
2.2.5 AMBA 3 APB信号 47
2.3 AMBA AHB规范 48
2.3.1 AMBA AHB的结构 48
2.3.2 AMBA AHB操作 49
2.3.3 AMBA AHB的传输类型 51
2.3.4 AMBA AHB的猝发操作 52
2.3.5 AMBA AHB的传输控制信号 55
2.3.6 AMBA AHB地址译码 56
2.3.7 AMBA AHB从设备传输响应 57
2.3.8 AMBA AHB数据总线 59
2.3.9 AMBA AHB传输仲裁 61
2.3.10 AMBA AHB分割传输 65
2.3.11 AMBA AHB复位 68
2.3.12 关于AHB数据总线的位宽 68
2.3.13 AMBA AHB接口设备 69
2.4 AMBA AXI4规范 71
2.4.1 AMBA AXI4概述 71
2.4.2 AMBA AXI4的功能 71
2.4.3 AMBA AXI4的互联结构 79
2.4.4 AXI4-Lite的功能 80
2.4.5 AXI4-Stream的功能 81
第3章 Zynq-7000系统的公共资源和特性 84
3.1 时钟子系统 84
3.1.1 时钟子系统的架构 84
3.1.2 CPU时钟域 86
3.1.3 时钟编程实例 87
3.1.4 时钟子系统内的生成电路结构 88
3.2 复位子系统 92
3.2.1 复位子系统的结构 92
3.2.2 复位流程 93
3.2.3 复位结果 94
第4章 Zynq-7000 SoC调试和测试子系统 96
4.1 JTAG和DAP子系统 96
4.1.1 JTAG和DAP子系统的功能 98
4.1.2 JTAG和DAP子系统I/O信号 100
4.1.3 编程模型 100
4.1.4 Arm DAP控制器 101
4.1.5 TPIU 102
4.1.6 Xilinx TAP控制器 103
4.2 CoreSight系统的结构及功能 103
4.2.1 CoreSight系统的结构 103
4.2.2 CoreSight系统的功能 104
第5章 Cortex-A9处理器及其指令集 108
5.1 应用处理单元概述 108
5.1.1 基本功能 108
5.1.2 系统级视图 109
5.2 Cortex-A9处理器的结构 111
5.2.1 处理器模式 112
5.2.2 寄存器 113
5.2.3 流水线 118
5.2.4 分支预测 119
5.2.5 指令和数据对齐 119
5.2.6 跟踪和调试 121
5.3 Cortex-A9处理器的指令集 122
5.3.1 指令集基础 122
5.3.2 数据处理操作 125
5.3.3 存储器指令 129
5.3.4 分支 131
5.3.5 饱和算术 132
5.3.6 杂项指令 133
第6章 Cortex-A9片上存储器系统的结构和功能 137
6.1 L1高速缓存 137
6.1.1 高速缓存的背景 137
6.1.2 高速缓存的优势和问题 138
6.1.3 存储器的层次 139
6.1.4 高速缓存的结构 139
6.1.5 缓存策略 143
6.1.6 写和取缓冲区 145
6.1.7 缓存性能和命中速度 145
6.1.8 无效和清除缓存 146
6.1.9 一致性点和统一性点 147
6.1.10 Zynq-7000 SoC中的Cortex-A9 L1高速缓存的特性 149
6.2 存储器访问顺序 150
6.2.1 普通、设备和强顺序存储器模型 151
6.2.2 存储器属性 152
6.2.3 存储器屏障 153
6.3 存储器管理单元 156
6.3.1 MMU功能描述 156
6.3.2 虚拟存储器 157
6.3.3 转换表 158
6.3.4 页表入口域的描述 161
6.3.5 TLB的构成 163
6.3.6 存储器访问顺序 165
6.4 侦听控制单元 166
6.4.1 地址过滤 166
6.4.2 SCU主设备端口 166
6.5 L2高速缓存 167
6.5.1 互斥L2-L1高速缓存配置 169
6.5.2 高速缓存替换策略 170
6.5.3 高速缓存锁定 170
6.5.4 使能/禁止L2高速缓存控制器 171
6.5.5 RAM访问延迟控制 171
6.5.6 保存缓冲区操作 172
6.5.7 Cortex-A9处理器和L2高速缓存控制器之间的优化 172
6.5.8 预取操作 173
6.5.9 编程模型 174
6.6 片上存储器 175
6.6.1 片上存储器概述 175
6.6.2 片上存储器的功能 176
6.7 系统地址空间分配 181
6.7.1 地址映射 181
6.7.2 系统总线主设备 182
6.7.3 I/O外设 182
6.7.4 SMC存储器 183
6.7.5 SLCR 183
6.7.6 PS系统寄存器 183
6.7.7 CPU私有寄存器 183
第7章 Zynq-7000 SoC的Vivado基本设计流程 185
7.1 创建新的工程 185
7.2 使用IP集成器创建处理器系统 187
7.3 生成顶层HDL并导出设计到SDK 192
7.4 创建应用测试程序 195
7.5 设计验证 198
7.5.1 验证前的硬件平台准备 198
7.5.2 设计验证的具体实现 199
7.6 SDK调试工具的使用 200
7.6.1 打开前面的设计工程 200
7.6.2 导入工程到SDK 200
7.6.3 建立新的存储器测试工程 201
7.6.4 运行存储器测试工程 201
7.6.5 调试存储器测试工程 203
7.7 SDK性能分析工具 205
第8章 Zynq-7000 SoC GPIO原理和控制实现 209
8.1 GPIO模块的原理 209
8.1.1 GPIO接口及其功能 210
8.1.2 GPIO编程流程 212
8.1.3 I/O接口 214
8.1.4 部分寄存器说明 214
8.1.5 底层读/写函数说明 215
8.1.6 GPIO的API函数说明 216
8.2 Vivado集成开发环境下MIO读/写控制的实现 216
8.2.1 调用底层读/写函数编写GPIO应用程序 217
8.2.2 调用API函数编写GPIO应用程序 219
8.3 Vivado集成开发环境下EMIO读/写控制的实现 222
8.3.1 调用底层读/写函数编写GPIO应用程序 222
8.3.2 调用API函数编写GPIO应用程序 227
第9章 Cortex-A9异常与中断原理和实现 230
9.1 异常原理 230
9.1.1 异常类型 230
9.1.2 异常处理 234
9.1.3 其他异常句柄 235
9.1.4 Linux异常程序流 236
9.2 中断原理 237
9.2.1 外部中断请求 237
9.2.2 Zynq-7000 SoC内的中断环境 240
9.2.3 中断控制器的功能 241
9.3 Vivado集成开发环境下中断系统的实现 244
9.3.1 Cortex-A9处理器中断及异常的初始化流程 245
9.3.2 Cortex-A9处理器的GPIO控制器的初始化流程 245
9.3.3 导出硬件设计到SDK 246
9.3.4 创建新的应用工程 246
9.3.5 运行应用工程 248
第10章 Cortex-A9定时器原理和控制实现 250
10.1 定时器的系统结构 250
10.1.1 CPU私有定时器和看门狗定时器 251
10.1.2 全局定时器/计数器 251
10.1.3 系统级看门狗定时器 252
10.1.4 3重定时器/计数器 253
10.1.5 I/O信号 256
10.2 Vivado集成开发环境下定时器的控制实现 257
10.2.1 打开前面的设计工程 257
10.2.2 创建SDK软件工程 257
10.2.3 运行软件应用工程 259
第11章 Cortex-A9 DMA控制器原理和实现 261
11.1 DMA控制器的结构 261
11.2 DMA控制器的功能 264
11.2.1 考虑AXI交易的因素 265
11.2.2 DMA管理器 265
11.2.3 多通道数据FIFO(MFIFO) 266
11.2.4 存储器—存储器交易 266
11.2.5 PL外设AXI交易 266
11.2.6 PL外设请求接口 267
11.2.7 PL外设长度管理 268
11.2.8 DMAC的长度管理 269
11.2.9 事件和中断 270
11.2.10 异常终止 270
11.2.11 安全性 272
11.2.12 IP配置选项 273
11.3 DMA控制器编程指南 273
11.3.1 启动控制器 274
11.3.2 执行DMA传输 274
11.3.3 中断服务例程 274
11.3.4 寄存器描述 274
11.4 DMA引擎编程指南 275
11.4.1 写微代码编程用于AXI交易的CCRx 275
11.4.2 存储器到存储器的传输 276
11.4.3 PL外设DMA传输长度管理 279
11.4.4 使用一个事件重新启动DMA通道 280
11.4.5 中断一个处理器 281
11.4.6 指令集参考 281
11.5 编程限制 282
11.6 系统功能之控制器复位配置 284
11.7 I/O接口 284
11.7.1 AXI主接口 285
11.7.2 外设请求接口 285
11.8 Vivado集成开发环境下DMA传输的实现 286
11.8.1 DMA控制器初始化流程 286
11.8.2 中断控制器初始化流程 287
11.8.3 中断服务句柄处理流程 287
11.8.4 导出硬件设计到SDK 287
11.8.5 创建新的应用工程 288
11.8.6 运行软件应用工程 294
第12章 Cortex-A9安全性扩展 295
12.1 TrustZone硬件架构 295
12.1.1 多核系统的安全性扩展 297
12.1.2 非安全世界和安全世界的交互 297
12.2 Zynq-7000 SoC APU内的TrustZone 298
12.2.1 CPU安全过渡 299
12.2.2 CP15寄存器访问控制 299
12.2.3 MMU安全性 300
12.2
评论
还没有评论。