ZYNQ 开发平台 HLS 教程
版本号:V1.01
2019-03-07 14:49:50
ZYNQ 开发平台 HLS 教程
版权声明
Copyright © 2012-2018 芯驿电子科技(上海)有限公司
公司网址:
Http://www.alinx.com.cn
技术论坛:
http://www.heijin.org
官方旗舰店:
http://alinx.jd.com
邮箱:
avic@alinx.com.cn
电话:
021-67676997
传真:
021-37737073
ALINX 微信公众号:
http://www.alinx.com.cn
2 / 63
前言
ZYNQ 开发平台 HLS 教程
Vivado HLS 能提高系统设计的抽象层次,为设计人员带来切实的帮助。Vivado HLS 通过
下面两种方法提高抽象层次:第一,使用 C/C++作为编程语言,充分利用该语言中提供的高级
结构。第二,提供更多数据原语,便于设计人员使用基础硬件构建块(位向量、队列等)。与使
用 RTL 相比,这两大特性有助于设计人员使用 Vivado HLS 更轻松地解决常见的协议系统设计
难题。最终简化系统汇编,简化 FIFO 和存储器访问,实现控制流程的抽象。
Vivado HLS 便于架构研究,用户只需在代码中插入程序指令(如使用 GUI 或批处理模式
时的 Tcl 命令),就可以把设计所需特性传递给综合工具。这样用户可以在不修改设计代码本身
的情况下研究大量备选架构方案。研究的范围可以是模块流水线化等根本性问题,也可以是
FIFO 队列深度等较常见的问题。
Vivado HLS 便于仿真。C 和 RTL 仿真是 Vivado HLS 另一个大放异彩的地方。设计一般
采用两步流程验证:第一步是 C 语言仿真。这个步骤中 C/C++的编译和执行与常见的 C/C++
程序相同;第二步是 C/RTL 协仿真。在这步骤中,Vivado HLS 会根据 C/C++测试平台自动生
成 RTL 测试平台,然后设置并执行 RTL 仿真,检查实现方案吧的正确性。
如能充分发挥这些优势,这将对于用户的系统设计大有裨益。这不仅体现在开发时间和生
产力上,还由于 Vivado HLS 代码更加紧凑的特点,体现在代码可维护性和可读性上。此外通
过高层次综合,用户仍能有效控制架构及其特性。正确理解和使用 Vivado HLS 程序对实现这
一控制起着根本作用。
http://www.alinx.com.cn
3 / 63
目录
ZYNQ 开发平台 HLS 教程
版权声明 ......................................................................................................................................... 2
前言 ................................................................................................................................................. 3
目录 ................................................................................................................................................. 4
准备工作及注意事项 ..................................................................................................................... 7
软件环境 ................................................................................................................................. 7
硬件环境 ................................................................................................................................. 7
实验工程及目录说明 ............................................................................................................. 8
实验快速复现 ......................................................................................................................... 8
工程重新编译注意事项 ......................................................................................................... 9
第一章 初识 HLS .......................................................................................................................... 10
1.1 实验 led 控制 ................................................................................................................. 10
1.1.1 创建 vivado hls 工程 ........................................................................................... 10
1.1.2 创建 vivado 工程 ................................................................................................. 14
1.1.3 实验总结 ............................................................................................................. 27
1.2 工程路径 ........................................................................................................................ 27
1.3 HLS 简介 .......................................................................................................................... 27
1.3.1 Vivado HLS 包含库 .............................................................................................. 27
1.3.2 Vivado HLS 接口 .................................................................................................. 28
1.3.3 hls 官方教程 ......................................................................................................... 28
第二章 状态指示 led ................................................................................................................... 29
2.1 模块控制 block-level ...................................................................................................... 29
2.2 可配置的模块 ................................................................................................................ 30
2.3 工程路径 ........................................................................................................................ 30
2.4 实验结果 ........................................................................................................................ 31
第三章 浮点协处理 ..................................................................................................................... 32
3.1 实验介绍 ........................................................................................................................ 32
3.2 IP 创建 ............................................................................................................................. 32
3.2.1 HLS 源代码 ........................................................................................................... 32
3.2.2 接口介绍 ............................................................................................................. 32
3.2.3 运算 ..................................................................................................................... 33
3.2.4 其它说明 ............................................................................................................. 33
3.3 TestBench ......................................................................................................................... 33
3.3.1 应用程序创建 ..................................................................................................... 33
3.3.2 源代码 ................................................................................................................. 33
3.3.3 C 仿真 ................................................................................................................... 34
http://www.alinx.com.cn
4 / 63
ZYNQ 开发平台 HLS 教程
3.3.4 RTL 仿真 ............................................................................................................... 34
3.4 工程路径 ........................................................................................................................ 34
3.5 运行结果 ........................................................................................................................ 34
第四章 视频彩条 ......................................................................................................................... 36
4.1 Vivado HLS 视频开发 ...................................................................................................... 36
4.1.1 与 OpenCV 关系 .................................................................................................. 36
4.1.2 VivadoHLS 视频库函数 ........................................................................................ 36
4.2 实验介绍 ........................................................................................................................ 37
4.3 HLS IP 创建 ...................................................................................................................... 37
4.3.1 源代码 ................................................................................................................. 37
4.3.2 接口介绍 ............................................................................................................. 38
4.3.3 hls::Mat 介绍 ........................................................................................................ 39
4.3.4 优化 ..................................................................................................................... 39
4.4 工程路径 ........................................................................................................................ 39
4.5 实验结果 ........................................................................................................................ 39
第五章 视频帧缓存读写管理 ..................................................................................................... 41
5.1 实验介绍 ........................................................................................................................ 41
5.2 模块主要代码 ................................................................................................................ 41
5.1 工程路径 ........................................................................................................................ 42
5.2 实验结果 ........................................................................................................................ 42
第六章 图像缩放叠加 ................................................................................................................. 43
6.1 实验介绍 ........................................................................................................................ 43
6.2 模块主要代码 ................................................................................................................ 43
6.3 工程路径 ........................................................................................................................ 44
6.4 实验结果 ........................................................................................................................ 45
第七章 字符叠加 ......................................................................................................................... 46
7.1 实验介绍 ........................................................................................................................ 46
7.2 模块主要代码 ................................................................................................................ 46
7.3 工程路径 ........................................................................................................................ 47
7.4 实验结果 ........................................................................................................................ 47
第八章 图像对比度调整 ............................................................................................................. 48
8.1 实验介绍 ........................................................................................................................ 48
8.2 模块主要代码 ................................................................................................................ 48
8.3 工程路径 ........................................................................................................................ 49
8.4 实验结果 ........................................................................................................................ 49
第九章 自动聚焦 ......................................................................................................................... 51
9.1 实验介绍 ........................................................................................................................ 51
9.2 代码 ................................................................................................................................ 51
http://www.alinx.com.cn
5 / 63
ZYNQ 开发平台 HLS 教程
9.3 工程路径 ........................................................................................................................ 52
9.4 实验结果 ........................................................................................................................ 52
第十章 边缘检测 ......................................................................................................................... 54
10.1 实验介绍 ...................................................................................................................... 54
10.2 TestBench 结果 .............................................................................................................. 54
10.3 模块主要代码 .............................................................................................................. 56
10.4 工程路径 ...................................................................................................................... 57
10.5 实验结果 ...................................................................................................................... 57
第十一章 角点检测 ..................................................................................................................... 59
11.1 模块主要代码 .............................................................................................................. 60
11.2 工程路径 ...................................................................................................................... 61
11.3 实验结果 ...................................................................................................................... 61
第十二章 快速傅里叶变换 FFT ................................................................................................... 62
12.1 实验介绍 ...................................................................................................................... 62
12.2 模块主要代码 .............................................................................................................. 62
12.3 工程路径 ...................................................................................................................... 63
12.4 实验结果 ...................................................................................................................... 63
http://www.alinx.com.cn
6 / 63
ZYNQ 开发平台 HLS 教程
准备工作及注意事项
本教程基于学习者已经熟练使用 Vivado 和 xSDK 的情况下编写,不详细讲解
Vivado 工程建立,xSDK 裸机软件编写,中断处理等。HLS 要求学习者熟练使用 C++,
具备一定硬件思维,对硬件流水线、组合逻辑、时序逻辑、FIFO、RAM、AXI 总线
协议有深刻理解才能学习,免得出现低级错误。
软件环境
本教程基于软件版本 SDx 2017.4,这里要用到的快捷方式图标有:
vivado 软件
vivado hls 软件
硬件环境
ZYNQ(ALINX 芯驿电子科技)开发板一块,双目镜头模块一个。当前支持的型号列表如下:
开发板型号
双目模块
ZYNQ 芯片型号
ddr 参数兼容型号
AX7Z035
AX7Z100
AN5642
AN5642
xc7z035ffg676-2
xc7z100ffg900-2
MT41J256M16 RE-125
MT41J256M16 RE-125
AX7Z035/AX7Z100
http://www.alinx.com.cn
7 / 63
另外需要自己准备好 HDMI 显示器一台(支持 1080P60)。
ZYNQ 开发平台 HLS 教程
实验工程及目录说明
工程名称
目录路径
说明
hls
vivado
各算法导出 IP,由 vivado 引用
vivado/xx_project/xx_.sdk/
vivado/xx_project/ip/normal
软件程序
Verilog 封装 ip
vivado/xx_project/ip/hls
flash_load_comm
HLS 导出 ip 后拷贝至该目录
qspi 烧录
HLS 工程
vivado 工程
SDK 工程
常用 ip
HLS 导出 IP
flash_load_comm
实验快速复现
1) 连接好 jtag 接口
2) 设置启动模式为 QSPI 启动
3) 将对应实验 SDK 工程中文件 BOOT.bin 拷贝到 flash_load_comm 目录下。
4) 开发板上电
5) 点击 program_qspi.bat 脚本运行。烧录成功后界面如下
6) 开发板重新上电
注:若 SDx 软件安装位置非默认 C 盘,则 program_qspi.bat 运行会出错,此时需要修改
program_qspi.bat 中的命令路径。
http://www.alinx.com.cn
8 / 63