嵌入式HLS 案例开发步骤分享——基于Zynq-7010/20工业开发板(1)
目 录
前 言 3
1 HLS 开发流程说明 5
1.1 HLS 工程导入 5
1.2 编译与仿真 6
1.3 综合 8
1.4 IP 核封装 10
1.5 IP 核测试 14
前 言
本文主要介绍 HLS 案例的使用说明,适用开发环境: Windows 7/10 64bit、Xilinx Vivado
2017.4 、Xilinx Vivado HLS 2017.4 、Xilinx SDK 2017.4。
Xilinx Vivado HLS (High-Level Synthesis,高层次综合) 工具支持将 C 、C++等语言转化
成硬件描述语言,同时支持基于 OpenCL 等框架对 Xilinx 可编程逻辑器件进行开发,可加
速算法开发的进程,缩短产品上市时间。
HLS 基本开发流程如下:
(1) HLS 工程新建/工程导入
(2) 编译与仿真
(3) 综合
(4) IP 核封装
(5) IP 核测试
测试板卡是基于创龙科技Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC工业级核心板。

HLS 案例位于产品资料“4-软件资料\Demo\FPGA-HLS-demos\”目录下, 案例目录详细
说明如下表。
表 1
|
目录 |
目录 |
文件/目录 |
说明 |
|
hls_ip_demo |
bin 或 hw/bin |
xxx_xc7z010.bin/xxx_xc7z010.bit |
xc7z010 PL 端 IP 核测试可执行文件 |
|
xxx_xc7z020.bin/xxx_xc7z020.bit |
xc7z020 PL 端 IP 核测试可执行文件 |
||
|
project 或 hw/project |
xxx_xc7z010 |
xc7z010 PL 端 IP 核测试 Vivado 工程 |
|
|
xxx_xc7z020 |
xc7z020 PL 端 IP 核测试 Vivado 工程 |
||
|
sw |
bin |
PS 端 IP 核测试裸机可执行文件 |
|
|
project |
PS 端 IP 核测试裸机工程 |
||
|
vivado_hls |
ip_package |
xxx.zip |
IP 核 |
|
project |
solution |
仿真方案 |
|
|
src |
HLS 工程源码 |
||
|
test_bench |
HLS 工程仿真程序或测试文件 |
||
|
vivado_hls.app |
HLS 工程文件 |
HLS 详细开发说明可参考产品资料“6-开发参考资料\Xilinx 官方参考文档\”目录下
的如下文档。
(1) ug871-vivado-high-level-synthesis-tutorial.pdf
(2) ug902-vivado-high-level-synthesis.pdf
1 HLS 开发流程说明
本章节以产品资料“4-软件资料\Demo\FPGA-HLS-demos\”目录下的 led_flash 案例为 例, 演示 HLS 开发流程。此案例的功能是由 PL 端控制评估底板的 LED2 进行闪烁。
在此之前, 请将对应案例目录拷贝至 Windows 非中文路径下。
备注: Windows 路径有长度限制,路径太长将会导致工程打开出错。
在进行本文如下操作前,请先按照调试工具安装文档安装 Xilinx Vivado 开发工具包。
本文默认使用创龙科技的 TL-DLC10 下载器进行操作演示。
1.1 HLS 工程导入
双击桌面如下图标打开Xilinx Vivado HLS 2017.4,并在弹出的界面中点击“Open Project” 选择案例“vivado_hls\project\”目录,然后点击“确定”导入 HLS 工程。

图 1

图 2


图 3
亦可新建 HLS 工程,并使用C/C++等语言进行程序编写。
1.2 编译与仿真
仿真程序位于 Test Bench 目录下,用于验证Source 目录下的 HLS 工程源码。
导入 HLS 工程后,点击 (Run C Simulation)进行编译与仿真。

图 4
弹出如下界面, 勾选“Launch Debugger” ,并点击 OK。

图 5
编译完成后,即可全速或单步运行进行仿真。

图 6
1.3 综合
本小节演示将 C/C++等程序综合成为 RTL 设计,并生成综合报告。
点击界面右上角Synthesis 返回至工程界面,然后点击

进行综合。

图 7

图 8
综合完成后,报表文件将自动打开。

图 9

通过报表文件可查看本设计的时延、资源占用等信息。

图 10
1.4 IP 核封装
综合完成后,点击 生成 IP 核。

图 11

图 12

图 13
运行完成后,将会在案例“vivado_hls\project\solution1\impl\ip\”目录下生成 IP 核。

图 14

图 15
从 2022 年 1 月 1 日起,Vivado HLS 和 Vitis HLS 的导出 IP 命令将无法正常使用。原因 是 HLS 工具将 ip_version 设置为 YYMMDDHHMM 格式, 该值作为带符号整数(32 位) 访 问,会导致溢出并产生如下类似错误。

图 16
根据 Xilinx 官方建议,请将产品资料“4-软件资料\Tools\”目录下的y2k22_patch-
1.2.zip 补丁解压至 Vivado 2017.4 安装路径下。

图 17
确保 Windows 下已安装 Python 工具(2.7.5 版本以上),进入 Vivado 2017.4 安装路
径根目录下, 执行如下命令使用 Python 工具安装补丁。 安装完成后, 即可重新进行 IP 核
封装。
CMD# cd /d E:\App\xilinx\Vivado
CMD# python y2k22_patch\patch.py

图 18
1.5 IP 核测试
进入案例“hls_ip_demo\project\”或“hls_ip_demo\hw\project\”对应平台 PL 端 IP 核测 试 Vivado 工程目录,双击.xpr 文件打开工程,工程默认已添加待测试的 IP 核。

图 19
如需自行导入 IP 核, 请参考如下步骤。
(1) 请点击“IP Catalog -> User Repository -> Add IP to Repository …” ,在弹出的界面中选择 IP 核后点击 OK。

图 20

图 21
(2) 右击“User Repository”后点击“Refresh Repository”,即可看到添加的 IP 核。

图 22

图 23
(3) 如需添加 Vivado 自带的 IP 核, 点击“Open Block Design”,在弹出的界面中点击

, 并选择所需 IP 核将其导入工程。

图 24

图 25
点击 Vivado 界面左侧的“Generate Bitstream”选项,在弹出的界面中点击 OK 进行 PL
端 IP 核测试 Vivado 工程编译。

图 26

图 27
编译完成后,将会在工程“led_flash.runs\impl_1\”目录下生成.bit 和.bin 格式可执行文
。

图 28
参考 PL 端案例开发手册说明加载 PL 端.bit 格式可执行文件,即可看到评估底板的 LED2 进行闪烁。
嵌入式HLS 案例开发步骤分享——基于Zynq-7010/20工业开发板(1)的更多相关文章
- DAPP 开发直通车-如何基于NEL 轻钱包来开发DAPP
之前做了 DAPP 开发直通车,通讲了一下开发一个DAPP的过程. 但是涉及多工种,多步骤.入手还是非常困难的. 经过不懈的努力,做了很多铺垫工作之后,我终于可以告诉你: 开发DAPP f ...
- 【Android开发资料分享】自己整理的Android开发资料,非常全面
学习Android以来,不知不觉中收集了大量非常优秀的Android开发资料,一直没有系统的整理,最近抽时间把收藏夹中的资料做了一下整理,现在分享给大家,希望能够帮助到需要的人.这份资料我还会不断的更 ...
- 设计模式之美学习(九):业务开发常用的基于贫血模型的MVC架构违背OOP吗?
我们都知道,很多业务系统都是基于 MVC 三层架构来开发的.实际上,更确切点讲,这是一种基于贫血模型的 MVC 三层架构开发模式. 虽然这种开发模式已经成为标准的 Web 项目的开发模式,但它却违反了 ...
- spring程序开发步骤
1.使用spring框架之前的开发步骤 2.使用spring之后的开发步骤 3.文字描述 1.导入Spring开发的基本依赖 2.编写Dao接口和实现类 3.创建spring核心配置文件 4.在spr ...
- 基于FPGA的光口通信开发案例|基于Kintex-7 FPGA SFP+光口的10G UDP网络通信开发案例
前言 自著名华人物理学家高锟先生提出"光传输理论",实用化的光纤传输产品始于1976年,经历了PDH→SDH→DWDM→ASON→MSTP的发展历程.本世纪初期,ASON/OADM ...
- 【ARM-Linux开发】ARM嵌入式设备Linux系统启动步骤和方式
1). 简介 本文简单介绍ARM嵌入式设备基于嵌入式Linux操作系统时候的启动步骤和启动方式, 区别与X86平台,ARM平台下并没有一个标准的启动步骤,不同ARM SoC都会使用各自定义的boot ...
- CH02基于ZYNQ的嵌入式LINUX移植
CH02基于ZYNQ的嵌入式LINUX移植 1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx ...
- 微信小程序从零开始开发步骤(四)自定义分享的功能
上一章节,实现了小程序的底部导航的功能,这一节开始实现一些简单的功能.本章节介绍的是小程序的自定义分享的功能. 可以分享小程序的任何一个页面给好友或群聊.注意是分享给好友或群聊,并没有分享到朋友圈.一 ...
- 分享一个基于Net Core 3.1开发的模块化的项目
先简单介绍下项目(由于重新基于模块化设计了整个项目,所以目前整个项目功能不多) 1.Asp.Net Core 3.1.2+MSSQL2019(LINUX版) 2.中间件涉及Redis.RabbitMQ ...
- 基于以太坊的Token开发步骤
Token开发步骤 一.准备工具1.安装以太坊brew tap ethereum/ethereumbrew install ethereum2.node:brew install nodejs3.安装 ...
随机推荐
- 06 curl 操作elasticsearch的CRUD
目录 查看健康状态 查询当前es集群中所有的indices 创建索引并配置: 创建索引 删除索引 获取mapping 创建mapping 添加字段 插入记录 检索 修改 删除 中文文档: https: ...
- Unity HDRP BentNormal的理解
1.通过网上冲浪了解到,BentNormal可以解决间接环境高光漏光及间接漫反射光照漏光的问题. 这里的漏光是指间接光照部分没有考虑到模型自身的遮挡关系导致的漏光. 2.可以通过SD之类的软件烘焙Be ...
- 鸿蒙HarmonyOS实战-ArkUI事件(组合手势)
一.组合手势 应用程序的手势操作是指在移动设备上使用手指或手势进行与应用程序交互的方式.手势操作可以包括点击.滑动.双击.捏合等动作,用于实现不同的功能和操作. HarmonyOS中常见的手势操作及其 ...
- 4G EPS 的架构模型
目录 文章目录 目录 前文列表 EPS 的架构 EPS 的架构模型 E-UTRAN UE eNodeB EPC MME(移动性管理) SGW(本地移动性锚点) PGW(业务锚点) HSS(用户认证及鉴 ...
- 4G EPS 的网络协议栈
目录 文章目录 目录 前文列表 LTE/EPC 协议栈 E-UTRAN 空中接口协议栈 用户平面协议 PHY 层 MAC 层 RLC 层 PDCP 层 控制平面协议 RRC 层 NAS 层 EPC 核 ...
- java学习之旅(day.22)
CSS 前端三要素:HTML.CSS.javaScript 结构 表现 交互 相当于骨头,表皮 ,血肉吧 如何学习CSS CSS是什么 CSS怎么用(快速入门) CSS选择器(重点+难点) 美化网 ...
- 阿里巴巴 MySQL 数据库之索引规约 (二)
索引规约 强制部分 [强制] 业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引. 说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的:另外 ...
- ubuntu 虚拟机安装完docker 以后 出现tls时遇到的坑
网上很多都是更改镜像源,发现更改以后还是不行.请更改网路模式为桥接模式就ok了.
- navicat安装和破解
navicat16.0 下载地址: https://download.navicat.com.cn/download/navicat160_premium_cs_x64.exe 破解教程&破解 ...
- sql数据的操作
/* 数据的写入 名称 : 库名 表名 字段名 用 反引号包裹 数据 : 字符串数据使用单引号包裹 ...