ZYNQ-vivado HLS工具

【ZYNQ-7000开发之十五】Vivado HLS和OpenCV_下 本篇文章在上篇文章【ZYNQ-7000开发之十四】的基础上,利用OpenCV HLS的函数,hls::Sobel,编写边缘检测算法,仿真测试,创建IP,最后在vivado里测试Sobel IP,此外本篇文章的实验还要基于 【ZYNQ-7000开发之十】TGP+VDMA+HDMI搭建视频通路 阅读详情

设计简单算法体验Vivado HLS的使用

前言

  本文主要讲解了使用Vivado HLS设计简单C语言的二选一选择器算法的硬件HLS开发的全流程,包括工程创建-算法验证和仿真-算法综合-RTL仿真-IP封装等步骤。

参考网站:

  http://blog.chinaaet.com/cuter521/p/36069

  http://blog.chinaaet.com/cuter521/p/36119

  公司想要将立体匹配的算法进行硬件实现,无奈本人硬件小白一枚,看了基于verilog硬件实现的相关文档之后还是找不到感觉,其实FPGA进行硬件实现功能也挺强大的,手边有zedboard开发板,正好看到可以使用Vivado可以将c/c++转换为FPGA实现,最让人惊喜的是还有HLS图像库,和opencv比较相似,果断选择了Vivado,只是还需要从头开始!加油!

 

内容:

1. 熟悉Vivado HLS的使用以及开发流程;

2.使用Vivado HLS进行C/C++算法的仿真验证;

3.对C语言的算法进行综合,查看RTL方则很难结果,并将设计进行IP封装;

 

操作步骤:

1.新建工程

2.添加设计资源文件

3.C代码仿真验证

4.算法综合-自动生成verilog等其他文件

5.RTL仿真以及查看波形

6.IP封装

 

操作过程:

1.新建工程

双击Vivado HLS打开HLS;

单击“Create New Project”,打开新建工程向导,第一个界面如下图所示。

 

谨慎起见,将工程名和设计的模块名保持一致,设置完毕后,点击Next,进入下面的界面。

建立空工程,先不添加,进入工程之后再自行添加设计文件,点击Next,进入如下图所示的测试文件添加界面。

直接跳过点击Next,进入下一界面,如下图所示。

这一步需要进行设置,否则Finish按钮一直是灰化的,不能生成工程。红色方框内的提示可以看出,这里是选择所用芯片的型号的。点击绿色椭圆内的按钮,进入芯片选择对话框,如下图所示。

这里不用多说,两种方式,一种好似逐一选择Family, Package, Speed Grade等参数,直到定位到你想要的芯片,如下图所示。

另一种方法是直接选择开发板,如下图所示。

 选择完成后点击OK,返回发现part部分已经选中Zedboard开发板,Finish按钮可用。点击Finish按钮完成向导,进入HLS主界面,如下图所示。

 2.添加设计资源文件

 2.1添加设计文件

   选中左侧Explorer子窗体下的Source目录,邮件,弹出Add/New Files菜单,点击添加资源文件,如下图所示(注:有些图因为当时没有保存,直接借用原作者的图)。

  

  Top Function:mux21

  mux21源码如下:

View Code

  mux21.h的内容是:

View Code

ap_cint.h这个头文件的包含,是为了使用int1类型,int1表示1位整型数。

注意:.h文件是不用添加的,HLS会自动包含相应的头文件,但是路径要正确。

2.2添加测试文件和数据

单击Test Bench目录,添加测试文件和数据,添加文件夹时,需要选择“Add Folder…”选项。如果把测试文件添加到Source目录中,编译会产生问题。

testbench mux21_tb.c源码为:

View Code

 

2.3设置工程属性

选中mux21文件夹,右击,弹出如下图所示的菜单。

点击Project Setting,进入设置界面,如下图所示。

点击Synthesis,进入下图所示的界面。

3.C代码仿真验证

在菜单栏中找到Project > Run C Simulation命令,或者直接单击工具栏中的按钮(如下图所示),编译和执行C程序。

 编译过程以及执行结果会在主界面下方的Console自选项卡中打印显示,如下图所示。

 

注意:编写代码时,没有正确包含 .h文件,不能进行C代码的仿真和验证。发现错误,修改了之后,IDE可能不会自动检测,这里可以尝试使用Index功能,IDE会检测改动,消除错误提示。

使用了int1类型,但是没有包含ap_cint.h文件,显示效果如下图所示。

这时,就算修改代码,包含了ap_cint.h文件,错误提示依旧存在。需要手动Index C source,提示才会消除。操作如下图所示:Project > Index C Source,或者点击工具栏中的快捷按钮,下图所示红色方框内的图标。

 

4.算法综合-自动生成verilog等其他文件

 如下图所示,在菜单中寻找命令:Solution > Run C Synthesis > Active Solution,点击Active Solution菜单,HLS会自动完成综合工作。

此外,还可以直接点击工具栏中的快捷按钮(下图红色方框内),在下拉菜单中选择“Active Solution”命令,也能够启动综合进程。

接下来就可以进入工程文件夹,找到综合文件夹,查看所综合出的HDL代码,文件结构如下图所示。

rpt文件显示“General Information(基本信息)”、“Performance Estimates(性能估算)”、“Utilization Estimates(资源利用估算)”、“(Interface接口)”等信息。

verilog文件夹下是综合出来的.v文件,vhdl文件夹下综合出来的是.vhd文件,打开mux21.v,代码为:

View Code

主要功能语句:

assign ap_return = ((select_r) ? sig_b : sig_a);

由于这个设计过于简单,ap_start、ap_ready、ap_done、ap_idle以及ap_return信号的作用不太能体现出来,从命名来看,主要是用于控制模块工作的信号。

 

5.RTL仿真以及查看波形

Solution > Run C/RTL Cosimulation,仿真完成后,需要在Vivado下查看仿真结果。

注意:Dump Trace选项要选择all,否则不会产生波形数据,位置如下图所示。

  打开Vivado,在 tcl控制台下键入以下指令
  (TCL控制台从哪里打开): 打开vivado编译工具,在主页面的下方有TCL控制台TCL console;

cd E:/hls/mux21/solution1/sim/verilog/

current_fileset

open_wave_database mux21.wdb

open_wave_config mux21.wcfg

 

注释:

更改路径

加载工程

加载仿真数据

打开波形窗口

生成的波形如下图所示:

 

6.IP封装

 Solution > Export RTL,或者点击工具栏快捷按钮,打开Export RTL对话框,如下图所示。

命令行会打印提示整个IP封装过程,如下图所示。

IP封装完成后,mux21文件夹下会出现impl文件夹,该文件夹下包含ip、verilog、vdhl三个子文件夹,在这些文件夹中,我们可以找到封装过程中生成的文件。

 

7.结论

本渣只是根据cuter的博客练习使用Vivado,其实还没有使用到HLS,所以本博客的大部分内容是重复的,只是本渣自己实现了整个过程,当然在这个过程中也遇到了一些其他的问题,所以总结一下,留作以后的参考。

做的过程中很多图没有截下来,直接拿过来使用了,望勿喷!可交流!

 当然,这离HLS的实现还有好远!

完

做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。

做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
告别纯Verilog!用Vivado HLS和OpenCL给ZYNQ FPGA加速(PYNQ Z2实测) 本文详细介绍了如何利用Vivado HLS和OpenCL技术栈在PYNQ-Z2开发板上实现高效的FPGA加速开发。通过高层次综合技术,开发者可以使用C/C++等高级语言替代传统Verilog,显著提升开发效率和代码可维护性。文章还提供了完整的开发流程实战指南,包括环境搭建、HLS内核优化、系统集成和性能分析,帮助开发者快速掌握ZYNQ FPGA的加速技术。 阅读详情

相关推荐

【ZYNQ-7000开发之十四】Vivado HLS和OpenCV_上

本篇文章对Vivado HLS以及OpenCV HLS进行简要介绍,并且利用OpenCV HLS的函数,hls::Sobel,编写边缘检测算法,仿真测试,创建IP,最后在vivado里测试Sobel IP关于HLS详细内容请参考官方文献ug902-vivado-high-level-synthesis *本文主要参考文献: how_to_accelerate_opencv_application

RZJMPB的博客 8380

设计简单算法体验Vivado HLS的使用

前言 本文主要讲解了使用Vivado HLS设计简单C语言的二选一选择器算法的硬件HLS开发的全流程,包括工程创建-算法验证和仿真-算法综合-RTL仿真-IP封装等步骤。 参考网站: http://blog.chinaaet.com/cuter521/p/36069 http://blog.chinaaet.com/cuter521/p/36119 公司想要将立体匹配的算...

weixin_30518397的博客 842

用Vivado HLS在Zynq上部署LeNet5:从MNIST数据集到FPGA加速的完整流程

本文详细介绍了使用Vivado HLS工具将经典的LeNet5卷积神经网络部署到Xilinx Zynq FPGA平台,实现硬件加速的完整流程。内容涵盖从MNIST数据集处理、HLS代码编写与优化(包括卷积、池化层的硬件友好实现及数学函数优化),到Zynq系统集成、AXI接口设计以及最终的实现与测试与性能评估,为边缘AI部署提供了从软件到硬件的实践指南。

weixin_29074295的博客 264

Err: HLS C Simulation Run 按钮变为灰色

出现C Simulation 在toolbar中呈现灰色时: 1 check工程中是否有solution1文件夹,如果没有,则需要重新创建文件; 2 check source和Test Bench文件夹下是否添加全部的data文件,相应的文件记得添加到相应的文件夹下,并全部添加! 3 创建工程时,名字最好不要相同或重复的太多。 ...

qq_41645695的博客 854

基于Zynq-7000系列之硬件开发学习教程——Xilinx Vivado HLS案例(2)

前 言 本文主要介绍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可编程逻辑器件进行开发,可加速算法开发的进程,缩短产品上市时间。 本次案例用到的是创龙科技的TLZ7x

创龙,嵌入式一体化解决方案商 5206

嵌入式硬件开发学习教程——基于Zynq-7010/7020 Xilinx Vivado HLS案例 (流程说明)

前 言 本文主要介绍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可编程逻辑器件进行开发,可加速算法开发的进程,缩短产品上市时间。 本次案例用到的是创龙科技的TLZ7x

创龙,嵌入式一体化解决方案商 3657

问题解决 | Vivado中添加自定义IP核显示为灰色且在IP Catalog中无法找到该IP解决方法

学习笔记 | Xilinx AXI DMA IP核DMA简介AXI DMA IP简介AXI DMA参数与接口分析思路官方Zmod ADC demo简介软硬件平台SDK 工程1.从vivado导出硬件到SDK①在vivado下生成bit流文件②导出硬件③启动SDK2.新建一个SDK工程3.放入ZmodADC1410_Demo_Baremetal源码4.验证测试参考相关 DMA简介 DMA是一种内存访问技术,允许某些计算机内部的硬件子系统可以独立的直接读写内存,而不需要CPU介入处理,从而不需要CPU的大量中断

jhn1996的博客 1万+

嵌入式硬件开发学习教程——基于Zynq-7010/7020 系列Xilinx vivado hls案例(matrix_demo、matrix_demo)

前 言 本文主要介绍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可编程逻辑器件进行开发,可加速算法开发的进程,缩短产品上市时间。 本次案例用到的是创龙科技的TLZ7x

创龙,嵌入式一体化解决方案商 1937

为什么创建的模块是灰色的及解决方案

  关于重新创建的项目为什么是灰色的   原因:   删除了一个模块,重新创建同名模块。这时IDEA会直接将新模块的pom文件设置成忽略状态。所以重新创建同名模块就成了灰色的。   解决方法:   菜单file中选择setting,搜索maven,然后选择Ignored Filess,右边的面板中变灰的maven模块处于勾选状态。勾选表示忽略了这个模块的pom文件。取消勾选后刷新maven工程就好了。 ...

qibulemingzi的博客 2373

Vivado HLS在Zynq-7000 All Programmable SoC上加速OpenCV应用的视频库解决方案

Vivado HLS(High-Level Synthesis)是Xilinx公司推出的一款前沿的硬件设计工具,它使得开发者能够使用高级编程语言如C/C++/System C来编写算法,并将其自动转换为可综合的硬件描述语言(HDL),比如VHDL或Verilog。这种高级综合技术极大地缩短了从算法概念到FPGA实现的时间,降低了硬件开发的门槛,尤其是对于那些没有深入硬件描述语言背景的软件开发者而言。

weixin_35019679的博客 1036

基于Vivado HLS在Zynq-7020 FPGA上实现MNIST手写数字识别全流程

深度学习模型在嵌入式设备上的部署离不开硬件加速技术,FPGA因低延迟和高能效成为边缘推理的热门选择。高层次综合(HLS)允许开发者用C/C++描述算法,并自动转换为RTL电路,极大降低了硬件设计门槛。本博客以Zynq-7020为目标芯片,通过Vivado HLS将一层784-128-10的全连接神经网络综合成可运行的硬件加速器,完整覆盖从C仿真、综合优化、IP导出到PS-PL协同联调的工程链路。文章详细拆解了HLS工程中的关键pragma指令、AXI接口地址映射、资源利用率权衡以及Vivado常见报错的排除

weixin_29168675的博客 241

如何在zynq中调用并驱动vivado HLS生成的ip core

vivado HLS 为赛灵思开发的高层次综合工具,可实现直接使用 C,C++ 以及 System C 语言对Xilinx的FPGA器件进行编程。赛灵思官方给出了ug902文档,很详细的介绍了官方提供的各种库,以及HLS的使用方法。本文将介绍如何在zynq上使用vivado HLS生成的ip核。 一、创建一个vivado HLS工程 具体的vivado HLS工...

Turn_on的博客 3903

深入解析TOM模块的PWM输出与ADC触发机制:从配置到DMA数据传输

本文深入解析了TOM模块在嵌入式系统中的核心应用,详细阐述了如何配置其PWM输出功能,并实现与ADC模块的硬件触发同步。重点介绍了通过DMA机制高效传输ADC采样数据的完整流程,涵盖时钟配置、工作模式选择、引脚映射及联调实战,为电机控制、数字电源等实时系统提供了一套硬件自动化的高效解决方案。

weixin_29227585的博客 367

学fpga(hls之vivado、zynq和petalinux)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 很多同学学习了fpga,也用到xilinx的vivado,当然也用到了zynq。可是没有弄清楚这里面之间的关系,趁着这个机会正好可以好好梳理一下。 1、vivado vivado是开发fpga的工具。一般人谈到vivado都是说用它来开发数字ip,不管是进行功能验证,还是功能开发,大体都是这个思路。 2、zynq zynq是arm和fp...

嵌入式-老费,一个分享专业嵌入式知识的blog 3625

【面试经验】大疆笔试-计算机视觉算法B卷

3、a=np.random.randn(3,3) b=np.random.randn(3,1) ,那么c=a*b的维度应该是:*是元素乘法或者torch.mul,@才是矩阵乘法或者torch.matmul,不会触发广播机制;8、将分辨率降低一半时,精标定内参(fx、fy、cx、cy、k1、k2、k3)焦距、光心、畸变系数将分别变成(fx、fy、cx/2、cy/2、k1、k2、k3),只能搜到光心变成一半,畸变系数不变。12、KLT算法在频闪光源、重复纹理、高速机动、环境照度低的情况下效果显著下降。

litterfinger的博客 1444

(超详细)互补格雷码+相移码求解包裹相位(Python实现)

记录实现“互补格雷码+相移码”求解包裹相位的编码过程。也可以叫它“5+4”法,5代表五幅格雷码图像,4代表四步相移法的四张正弦条纹图。

暴雨梨花博客 3万+

Vivado HLS(zynq TRD)源码分析

源码是官方的2014.4 TRD工程里的,整个工程是基于zc702板子的,但手里只有块小zybo >_< 里面的硬件设计很有参考价值,最近想用FPGA加速surf算法,先在这分析下TRD工程里sobel edge detection的例程。

TiH2S 3863

华南理工大学电子与信息学院23年预推免复试面试经验贴

华南理工大学电子与信息学院23年预推免复试面试经验贴

Scut_Ty的博客 3295

【ZYNQ】教你用 Vivado HLS 快速设计一个 IP

我们仍然是在进行硬件设计,只不过使用的不再是硬件描述语言

嵌入式小菜鸟一枚~ 1984

2026.5.3:Ubuntu26.04下uv所需的环境变量pyproject.toml

本文档提供了Python开发环境的配置指南。主要包括: 设置环境变量(HF_ENDPOINT、UV_PYTHON_INSTALL_MIRROR等) 创建pyproject.toml配置文件,定义项目元数据(名称、版本等) 指定依赖项(torch系列库)及其安装源(PyTorch官方CUDA 12.8镜像) 配置Python版本要求(>=3.13,<3.14) 设置平台限制(Linux/Windows) 该配置适用于需要PyTorch CUDA 12.8支持的项目开发环境搭建。

拥抱具身智能,昇腾Ascend C 587

Android 10.0 任务栏音乐播放器后台播放杀进程功能实现

在10.0的系统rom定制化开发过程中,在某些情况下在安装第三方播放器以后,播放音乐的时候,在最近任务栏recents列表中,点击全部清除,发现音乐播放器还在播放音乐,导致出现bug,完整的 解决方法,肯定是需要点击全部清除以后,音乐播放器也被杀掉进程,接下来看下这个问题怎么解决

安卓兼职framework和app工程师的博客 650

Xilinx Zynq-7010 Vivado HLS实战:从C代码到硬件IP核的完整开发流程

摘要: 本文详细介绍了使用Vivado HLS将C语言实现的矩阵乘法算法转换为可在Zynq-7010 FPGA上部署的硬件IP核的全流程。内容涵盖开发环境配置(Vivado安装、环境验证)、算法优化(流水线指令、循环展开)、RTL生成(工程创建、性能对比)及硬件验证(AXI总线连接、板级测试)。通过优化指令(如#pragma HLS PIPELINE)将吞吐量从5.3 MOps/s提升至75.2 MOps/s,并提供常见错误解决方案(时序违例、AXI握手失败)和完整代码示例(矩阵乘法C实现、SDK测试代码)

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 912

[关系图谱] 二.Gephi导入共线矩阵构建作者关系图谱

本文主要讲解Gephi绘制作者间的关系图谱,该软件可以广泛应用于社交网络、知识图谱分析,推荐读者使用。这是非常基础的一篇文章,重点讲解Gephi使用方法,希望对大家有所帮助。

杨秀璋的专栏 1万+

[Xilinx ZYNQ] #7 Vivado HLS 使用方法

HLS 工程 New Vivado HLS Project - Add/Remove Files -- 添加顶层函数名 - Next - Next - Device Selection Dialog 编写 C++/C 代码 - C synthesis -Export RTL 创建的 HLS 工程如图所示 Includes 目录包含有 HLS 开发中可用的库函数 Source 为源文件,打开...

Zenor_one的博客 2806

【nvidia-B200】实际生产报错NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:601

升级 NVIDIA 驱动到 R545/R550 数据中心版本(解决 IOVA bug,这是性能差的根本原因);重启服务器(清理驱动残留资源,消除日志中的 NVRM 错误);验证 NVLink/PCIe 链路(确保 8 卡互联使用高速链路,而非单卡 PCIe 共享带宽)。完成这 3 步后,ncccl-test的all_reduce带宽应能提升至100GB/s 以上(取决于服务器的 NVLink/NVSwitch 配置),恢复正常性能。

jundao1997的专栏 648

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: ZYNQ-SPI控制器
下一篇: ZYNQ-异常与中断原理
linux_0416
博客等级 码龄9年 79粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值