Foreword
前言
第一部分 基础篇
第1章 初试ZedBoard/2
1.1 GPIO LED动手玩/2
1.1.1 拷贝SD卡/2
1.1.2 跳线与外设连接/2
1.1.3 演示操作/2
1.2 Linaro Ubuntu动手玩/3
1.2.1 SD卡分区/3
1.2.2 文件拷贝(FAT/EXT)/6
1.2.3 外设连接/6
1.2.4 可演示的效果/7
第2章 Zynq平台介绍/9
2.1 7系列FPGA简介/9
2.2 Zynq-7000 AP SoC体系简介/12
第3章 ZedBoard开发环境/15
3.1 ZedBoard的板载外设/15
3.1.1 LED/15
3.1.2 按键/16
3.1.3 开关/16
3.1.4 OLED/17
3.1.5 USB接口/18
3.1.6 音频接口/20
3.1.7 VGA接口/21
3.1.8 HDMI接口/22
3.1.9 10/100/1000兆网口/23
3.2 ZedBoard的扩展外设/25
3.2.1 外扩PMod插座/25
3.2.2 外扩FMC插槽/27
3.2.3 外扩AMS插座/28
第4章 开发工具链/29
4.1 可编程逻辑开发工具链/29
4.1.1 PlanAhead/29
4.1.2 Xilinx Platform Studio/31
4.2 软件开发工具链/34
4.2.1 Xilinx Software Development Kit/34
4.2.2 交叉编译工具链/35
4.3 软硬件调试工具/36
4.3.1 ChipScope Pro/36
4.3.2 GDB与GDBserver/38
第5章 Zynq体系结构/40
5.1 应用处理器单元(APU)/40
5.1.1 ARM Cortex A9处理器/40
5.1.2 侦听控制单元(SCU)/43
5.1.3 L2高速缓存/44
5.1.4 APU接口/44
5.2 通用外设/46
5.2.1 通用IO(GPIO)/46
5.2.2 SPI接口/49
5.2.3 UART接口/51
5.2.4 计时器/54
5.2.5 USB控制器/57
5.2.6 DDR控制器/58
5.3 数字逻辑设计/59
5.3.1 可编程逻辑“外设”(PL)/59
5.3.2 XADC/61
5.3.3 PCIe/62
5.4 MIO/EMIO/63
第6章 系统级信号/66
6.1 电源管理/66
6.2 Clock信号/67
6.2.1 CPU时钟域/68
6.2.2 DDR时钟域/69
6.2.3 基本的时钟分支结构/69
6.2.4 I/O外设(IOP)时钟/70
6.2.5 PL时钟/72
6.2.6 其他时钟/72
6.3 复位系统/73
6.4 JTAG/75
6.5 中断处理/76
第7章 Zynq启动与配置/78
7.1 Zynq启动过程简介/78
7.2 外部启动条件/79
7.2.1 电源要求/79
7.2.2 时钟要求/79
7.2.3 复位要求/79
7.2.4 启动引脚设置/80
7.3 BootROM/80
7.3.1 BootROM的作用/80
7.3.2 BootROM的特点/81
7.3.3 BootROM后的状态/82
7.4 FSBL/82
7.5 SSBL/84
7.6 Linux启动过程/84
7.7 Secure Boot/86
第8章 面向软件工程师的逻辑设计/87
8.1 FPGA硬件加速原理/87
8.1.1 以空间换时间/87
8.1.2 以存储器换门电路/89
8.1.3 以IP集成换生产力/90
8.2 部分动态可重配置于Zynq/93
第9章 ZedBoard入门/95
9.1 UART和GPIO控制/95
9.1.1 UART和GPIO接口/95
9.1.2 硬件设计过程/96
9.1.3 软件设计过程/106
9.2 硬件/软件调试方法/112
9.2.1 ChipScope IP Core/112
9.2.2 SDK Gdb使用/115
9.3 搭建你的单板计算机(Single Board Computer)/117
9.3.1 搭建系统环境/118
9.3.2 准备工作/118
第二部分 进阶篇
第10章 基于虚拟平台的Zynq开发/126
10.1 QEMU介绍/126
10.2 编译QEMU源码/126
10.2.1 下载QEMU源码/126
10.2.2 配置QEMU/127
10.2.3 QEMU所依赖的库文件/127
10.2.4 编译QEMU/127
10.3 启动QEMU/127
10.4 QEMU中的嵌入式Linux/128
10.5 商业版虚拟平台/131
第11章 PL和PS的接口技术详解/132
11.1 PL和PS的接口/132
11.1.1 AXI接口简介/133
11.1.2 AXI Interconnect/134
11.2 Zynq的内部连接/137
11.2.1 AXI_HP/139
11.2.2 AXI_GP/140
11.2.3 AXI_ACP/140
11.3 PL和存储器系统性能概述/142
11.3.1 接口理论带宽/142
11.3.2 DDR控制器的吞吐率及其效率/143
11.3.3 内部互连吞吐量瓶颈/143
11.3.4 如何选择PL的接口/144
第12章 基于Zynq的软硬件协同设计/149
12.1 多核处理器架构简介/149
12.1.1 什么是多核处理器/149
12.1.2 多核处理器发展的动机和优势/150
12.1.3 同构、异构多核架构的优点和挑战/152
12.2 软硬件协同设计方法论/152
12.2.1 什么是软硬件协同设计/152
12.2.2 软硬件协同设计发展的动机和优势/152
12.2.3 软硬件协同设计的基本流程/153
12.2.4 基于Xilinx工具的软硬件协同设计简介/154
12.3 高层次综合/154
12.3.1 高层次综合综述/154
12.3.2 高层次综合发展的动机与优势/155
12.3.3 Xilinx AutoESL工具简介/156
12.4 基于Xilinx Zynq的软硬件协同设计实例/157
12.4.1 功能简介/157
12.4.2 设计流程简介/157
12.4.3 实验结果与验证/165
第13章 Zynq开发实战/166
13.1 用户IP设计/166
13.1.1 用户IPcore介绍/166
13.1.2 用户IPcore设计/167
13.2 嵌入式Linux设备驱动开发/180
13.2.1 设备驱动开发介绍/180
13.2.2 驱动程序的加载与卸载/181
13.2.3 sys文件系统简介/181
13.2.4 PWM模块驱动程序/182
13.2.5 PWM驱动程序编译与测试/184
13.3 构建嵌入式Linux系统/186
13.3.1 搭建系统环境/186
13.3.2 编译u-boot/186
13.3.3 编译内核与设备树/187
13.3.4 制作根文件系统/188
13.3.5 启动嵌入式Linux/192
13.4 HDMI设计/193
13.4.1 HDMI传输原理/193
13.4.2 ADV7511芯片的相关控制信号/195
13.4.3 设计过程/198
13.5 OpenCV移植/203
13.5.1 开发环境准备/203
13.5.2 配置cmake/203
13.5.3 OpenCV编译与安装/205
13.5.4 OpenCV移植与ZedBoard测试/206
13.6 基于OpenCV的树叶识别系统/207
13.6.1 项目总览/208
13.6.2 图像采集/208
13.6.3 预处理/209
13.6.4 特征提取/211
13.6.5 分类决策/216
13.6.6 总结/219
13.7 基于OpenCV的人脸识别系统/220
13.7.1 系统综述/220
13.7.2 基于Haar特征和Adaboost算法的人脸检测/220
13.7.3 系统设计与实现/222
13.7.4 总结/226
13.8 嵌入式Web服务器的移植与搭建/226
13.8.1 嵌入式Web服务器介绍/226
13.8.2 Boa服务器移植与配置/228
13.8.3 Boa服务器部署与测试/230
13.9 嵌入式网络摄像机的移植与搭建/233
13.9.1 嵌入式网络摄像机/233
13.9.2 mjpg-streamer的移植与架设/234
13.10 FreeRTOS实时操作系统的应用/238
13.10.1 FreeRTOS介绍/238
13.10.2 FreeRTOS与ucOS-Ⅱ的比较/239
13.10.3 FreeRTOS在Zynq上的应用实例与分析/239
13.10.4 基于FreeRTOS的Lwip/250
13.11 XADC的使用/250
13.11.1 建立硬件工程/252
13.11.2 软件工程设计/253
13.11.3 程序分析/255
13.12 基于Zynq的部分可重配置/256
13.12.1 可重配置系统介绍/256
13.12.2 可重配置的开发流程/257
13.12.3 小结/265
13.13 在Zynq上搭建Android简介/265
第14章 系统级设计案例/266
14.1 电机控制系统/266
14.1.1 双闭环控制器理论/266
14.1.2 双闭环系统/267
14.1.3 双闭环控制IP核说明/272
14.1.4 硬件实现过程/275
14.1.5 软件实现过程/285
14.1.6 硬件平台测试/286
14.2 智能家庭健康平台/287
14.2.1 智能家庭健康平台简介/287
14.2.2 EKG AFE模块硬件设计/287
14.2.3 Night EKG Controller IP设计/292
14.2.4 建立可运行Linux的完整系统/295
14.2.5 Night EKG Controller的Linux驱动设计/297
14.2.6 基于Qt的图形用户界面设计/299
14.2.7 在ZedBoard上运行Qt程序/308
14.2.8 实现软件开机自动运行/310
14.3 高性能视频处理系统设计/311
14.3.1 系统架构/312
14.3.2 硬件架构设计/313
14.3.3 软件架构设计/316
14.3.4 利用Vivado HLS实现Sobel滤波硬件/318
14.3.5 使系统在ZedBoard上运行/320
14.4 智能小车系统开发/320
14.4.1 智能小车系统结构/320
14.4.2 运动控制设计/323
14.4.3 Linux系统应用程序设计/326
14.4.4 智能小车平台的后续拓展/333
第15章 如何获取资料和帮助/334
15.1 如何获取Xilinx的技术文档/334
15.1.1 DocNav介绍/334
15.1.2 DocNav使用案例/334
15.2 如何找到Zynq开发资料/336
15.2.1 如何获取本书的最新例程/336
15.2.2 如何获取Zynq开发资料/337
15.2.3 如何获取ZedBoard文档与例程/337
15.3 Xilinx网站资源导读/338
15.3.1 序/338
15.3.2 Xilinx软件介绍/338
15.3.3 软件版本和软件更新/340
15.3.4 软件教程/341
15.3.5 硬件资料/343
15.3.6 参考资源/343
15.3.7 问题解决/344
附录A Xilinx开发套件版本14.1到14.3的主要升级变化/346
参考资料/353
· · · · · · (
收起)