ALINX 黑金 Zynq7000 开发平台
配套教程
AX7010/AX7020
ALINX 黑金 Zynq7000 开发平台配套教程
我们承诺本教程并非一劳永逸,固守不变的文档。我们会根据论坛上大家的反馈意见,以
及实际的开发实践经验积累不断的修正和优化教程
文档修订记录:
时间
2016-09-18
2016-11-07
2017-02-03
描述
创建文档
格式整理
错误整理
版本
Rev1.0
V1.01
V1.02
ALINX 黑金 Zynq7000 系列开发宝典 http://www.heijin.org
2
ALINX 黑金 Zynq7000 开发平台配套教程
序
首先感谢大家购买黑金动力社区出品的 ZYNQ7000 的开发板 AX7010 和 AX7020! 您对我
们和我们产品的支持和信任,给我们增添了永往直前的信心和勇气。
赛灵思公司(Xilinx) 于 2012 年推出 Zynq7000 SOC 芯片解决方案,该方案将双核 ARM
Cortex-A9 和 FPGA Fabric 集成在一颗芯片上,通过内部总线连接,ARM 和 FPGA 之间的通
信速度大大提高,从而提高芯片整体性能。但同时,ARM 和 FPGA 两门之前独立的软硬件学科
在一颗芯片上应用,大大提高了芯片入门门槛。黑金这两年一直在筹划推出 Zynq7000 SOC 系
列硬件开发平台,同时编著一套教程,循序渐进,由浅入深,旨在让学员很轻松的入门,体验
最前沿的 ARM+FPGA SOC 技术。
本教程根据不同的侧重点分 4 部分:第一部分是基础篇,分别介绍开发板的上电捡测,硬
件电路的介绍,ZYNQ 芯片的介绍,软件 Vivado 的安装,Linux 系统虚拟机的安装,PS 和 PL
接口技术的介绍和 ZYNQ 开发流程的介绍。通过基础篇让大家对黑金开发板 AX7010/AX7020
及 ZYNQ 芯片和开发有一个总体认识,为后面几部分的学习打好基础。第二部分是逻辑篇,在
逻辑篇里我们把 ZYNQ 芯片当做普通的 FPGA 来使用,结合开发板和 ZYNQ 芯片的资源实现
纯逻辑的开发。我们会通过大量的应用实例让大家了解和掌握 FPGA 的 Verilog 程序的设计及
实现。 AX7010/AX7020 开发平台的硬件资源。
“播下一粒种子,收获一片森林”,更是黑金 ALINX 硬件开发的美好愿望,同时我们会在
黑金动力社区 http://www.heijin.org和大家一起讨论,一起学习,一起进步,一起成长。
ALINX 黑金 Zynq7000 系列开发宝典 http://www.heijin.org
3
ALINX 黑金 Zynq7000 开发平台配套教程
目录
序 ............................................................................................................................................................. 3
目录 ......................................................................................................................................................... 4
第一部分 基础篇 ................................................................................................................................... 8
第 1 章 AX7010/AX7020 开发板开箱检测 ........................................................................................ 8
1.1 准备工作.................................................................................................................................. 8
1.1.1 硬件配置 ...................................................................................................................... 8
1.1.2 USB 转 UART 驱动安装 ............................................................................................ 10
1.1.3 终端登录工具 SecureCRT 安装 .............................................................................. 10
1.2 外设连接................................................................................................................................ 14
1.3 实验操作................................................................................................................................ 14
第 2 章 ZYNQ7000 芯片的简介 ........................................................................................................ 17
2.1 PS 内部资源介绍 ................................................................................................................... 18
2.1 PL 内部资源介绍 ................................................................................................................... 19
第 3 章 Vivado 软件安装 .................................................................................................................... 20
3.1 VIVADO 软件介绍 ................................................................................................................ 20
3.2 VIVADO 软件版本 ................................................................................................................ 20
3.3 VIVADO 软件安装 ................................................................................................................ 21
第 4 章 Linux 系统虚拟机的安装 ....................................................................................................... 29
4.1 虚拟机的安装 ........................................................................................................................ 29
4.2 安装 ubuntu ......................................................................................................................... 30
第 5 章 PS 和 PL 接口技术详解 .......................................................................................................... 41
5.1 AXI 接口标准介绍 ................................................................................................................. 41
5.2 ZYNQ 的 AXI 资源 ............................................................................................................... 44
5.3 PL 端的 AXI 接口设计 .......................................................................................................... 45
5.4 AXI Interconnect ................................................................................................................. 46
第 6 章 ZYNQ 芯片开发流程的简介 .................................................................................................. 49
6.1 开发工具介绍 ........................................................................................................................ 49
6.2 开发流程说明 ........................................................................................................................ 50
第二部分 逻辑篇 ................................................................................................................................. 52
第 7 章 FPGA LED 控制实验 .............................................................................................................. 52
7.1 硬件介绍................................................................................................................................ 52
7.2 创建工程................................................................................................................................ 53
7.3 编写流水灯的 verilog 代码 ................................................................................................. 58
ALINX 黑金 Zynq7000 系列开发宝典 http://www.heijin.org
4
ALINX 黑金 Zynq7000 开发平台配套教程
7.4 添加 XDC 管脚约束文件 ..................................................................................................... 62
7.5 编译 ....................................................................................................................................... 66
7.6 下载和调试............................................................................................................................. 69
第 8 章 HDMI 输出实验 ...................................................................................................................... 73
8.1 HDMI 及 TMDS 原理 ........................................................................................................... 73
8.2 硬件介绍................................................................................................................................ 75
8.3 程序设计 ................................................................................................................................ 76
8.4 添加 XDC 管脚约束文件 ..................................................................................................... 79
8.5 编译和下载............................................................................................................................ 80
第三部分 SDK 篇 ................................................................................................................................ 81
第 9 章 Hello World 实验 .................................................................................................................. 81
9.1 Vivado 工程创建 .................................................................................................................. 81
9.2 ZYNQ 系统的配置 ................................................................................................................ 88
9.3 硬件导入 SDK ....................................................................................................................... 99
9.4 SDK 软件编程 ..................................................................................................................... 102
9.5 下载和调试.......................................................................................................................... 105
第 10 章 PL 端和 PS 端的协同设计流水灯实验 ............................................................................. 110
10.1 Vivado 工程创建 .............................................................................................................. 110
10.2 ZYNQ 系统的配置 ............................................................................................................ 111
10.3 添加 XDC 管脚约束文件 ................................................................................................. 121
10.4 编译生成比特流文件 ....................................................................................................... 122
10.5 硬件导入 SDK .................................................................................................................. 123
10.6 SDK 软件编程 ................................................................................................................... 125
10.7 下载和调试 ....................................................................................................................... 127
第 11 章 定时器中断实验................................................................................................................. 136
11.1 中断控制器和计数器 ........................................................................................................ 136
11.2 ZYNQ 系统的配置 ............................................................................................................ 137
11.3 硬件导入 SDK .................................................................................................................. 140
11.3 SDK 软件编程 ................................................................................................................... 142
11.4 下载和调试 ....................................................................................................................... 145
第 12 章 按键实验 ............................................................................................................................ 147
12.1 PS 和 PL 共享中断 ............................................................................................................ 147
12.2 Vivado 工程创建 .............................................................................................................. 148
12.3 添加按键 IP ....................................................................................................................... 150
12.4 添加按键管脚约束 ........................................................................................................... 157
12.5 编译生成比特流文件 ....................................................................................................... 158
12.6 硬件导入 SDK .................................................................................................................. 158
12.7 SDK 软件编程 ................................................................................................................... 160
ALINX 黑金 Zynq7000 系列开发宝典 http://www.heijin.org
5
ALINX 黑金 Zynq7000 开发平台配套教程
12.8 下载和调试 ....................................................................................................................... 166
第 13 章 自定义 IP 实验 ................................................................................................................... 171
13.1 RTC 时钟 DS1302 ............................................................................................................ 171
13.2 Vivado 工程创建 .............................................................................................................. 173
13.3 创建自定义 IP ................................................................................................................... 175
13.4 添加 RTC 管脚约束 .......................................................................................................... 190
13.5 编译生成比特流文件 ....................................................................................................... 190
13.5 硬件导入 SDK .................................................................................................................. 191
13.6 SDK 软件编程 ................................................................................................................... 191
13.7 下载和调试 ....................................................................................................................... 194
第 14 章 VDMA 实验硬件系统搭建 ............................................................................................... 198
14.1 硬件构架 ........................................................................................................................... 198
14.2 搭建硬件工程 ................................................................................................................... 199
14.3 添加 HDMI 管脚约束 ...................................................................................................... 228
14.4 编译生成比特流文件 ....................................................................................................... 229
14.5 硬件导入 SDK .................................................................................................................. 229
第 15 章 VDMA 实验 SDK 软件 ..................................................................................................... 230
15.1 SDK 软件编程 ................................................................................................................... 230
15.2 程序说明 ........................................................................................................................... 231
15.3 图像数据生成方法 ........................................................................................................... 238
15.4 下载和调试 ....................................................................................................................... 240
第 16 章 程序固化和启动................................................................................................................. 244
16.1 开发板启动流程 ............................................................................................................... 244
16.2 Vivado 工程修改 .............................................................................................................. 245
16.3 生成 FSBL 可执行文件 ..................................................................................................... 250
16.4 BOOT.BIN 文件的生成 ................................................................................................... 253
16.5 烧写 FLASH 并启动 ......................................................................................................... 259
16.6 SD 卡启动 .......................................................................................................................... 262
第 17 章 Linux 开发环境的搭建...................................................................................................... 264
17.1 安装 Linux 版本的 SDK .................................................................................................. 264
17.2 安装 32 位支持工具包 ..................................................................................................... 275
17.3 安装 OpenSSL 库 ............................................................................................................ 277
18.1 U-Boot 原理及实现 ......................................................................................................... 278
18.2 U-Boot 的编译 ................................................................................................................. 284
18.3 生成 BOOT.BIN 文件 ....................................................................................................... 288
18.4 Uboot 启动实验 ............................................................................................................... 300
第 19 章内核的编译 .......................................................................................................................... 304
19.1 Linux 内核介绍 ................................................................................................................. 304
ALINX 黑金 Zynq7000 系列开发宝典 http://www.heijin.org
6
ALINX 黑金 Zynq7000 开发平台配套教程
19.2 Linux 内核源码编译 ......................................................................................................... 306
19.3 设备树 Device tree 的编译 ............................................................................................. 311
19.4 文件系统 ........................................................................................................................... 313
第 20 章 SD 卡的制作 ....................................................................................................................... 315
20.1 SD 卡分区 .......................................................................................................................... 315
20.2 复制 BOOT.BIN 文件 ....................................................................................................... 319
20.3 复制编译后的内核文件 ................................................................................................... 320
20.4 复制编译后的设备树文件 ............................................................................................... 320
20.5 复制文件系统 ................................................................................................................... 321
20.6 Linux SD 卡启动 .............................................................................................................. 325
第 21 章 Linux 系统下的 hello world 实验 .................................................................................. 327
21.1 nfs server 安装和配置..................................................................................................... 327
21.2 编写 helloworld 程序 ..................................................................................................... 333
21.3 编译 helloworld 程序 ..................................................................................................... 335
21.4 运行 ................................................................................................................................... 335
第 22 章 Linux 系统下的 GPIO 应用实践 ....................................................................................... 337
22.1 sysfs 方式控制 GPIO ....................................................................................................... 337
22.2 编写 GPIO 应用程序 ....................................................................................................... 341
22.3 编译 GPIO 程序 ............................................................................................................... 345
22.4 运行和实验 ....................................................................................................................... 346
ALINX 黑金 Zynq7000 系列开发宝典 http://www.heijin.org
7
ALINX 黑金 Zynq7000 开发平台配套教程
第一部分 基础篇
第 1 章 AX7010/AX7020 开发板开箱检测
当我们拿到开发板是否应该测试一下收到的开发板是否功能正常,以及各个接口工作是否
工作正常。在出厂前我们已经在 SD 卡里存储了启动程序和操作系统,所以开发板上电就能启
动并可以用来测试各个部分接口和电路的工作是否正常。通过测试也使大家对我们开发板的功
能有一个大致的认识。
1.1 准备工作
1.1.1 硬件配置
开发板的上电检测需要以下的设备。其中 SD 卡里我们已经为用户存储了 ARM 的 Boot 启
动程序和系统的镜像文件 uImage。红色 USB 线用于开发板和 PC 之间的串口通信。HDMI 线
和 HDMI 显示器用于显示 AX7010/AX7020 开发板输出的 Ubuntu 界面,网线用于开发板连
接 Internet 网络,USB 鼠标和键盘用于人机交互操作。因为开发板上只有一个 USB 口,这里
需要连接一个 USB Hub 设备来扩展多个 USB 口连接 USB 键盘和鼠标。
AX7010 开发板或 AX7020 开发板
5V 直流电源适配器(开发板自带)
Micro SD 卡(开发板自带)
mini USB 数据线 2 根(开发板自带)
网线
HDMI 线和 HDMI 显示器
USB 鼠标和键盘
USB Hub
PC 机
ALINX 黑金 Zynq7000 系列开发宝典 http://www.heijin.org
8