vitis hls vision
好的,我们来用中文解释一下 Vitis HLS 和其中的 Vision (视觉) 相关功能。
简单来说:
- Vitis HLS (高层次综合): 是 AMD(赛灵思)提供的一个核心工具。它能让你用 C++ 或 SystemC 这类高级语言(而不是传统的硬件描述语言 HDL 如 VHDL/Verilog)来描述你想要实现的硬件功能(算法加速逻辑)。然后 Vitis HLS 会自动分析、优化你的代码,并将其转换(综合)成等效的、可在 AMD 赛灵思 FPGA 或自适应 SoC(如 Zynq, Versal)上运行的 RTL (寄存器传输级) 代码(通常是 VHDL 或 Verilog)。这大大提高了硬件开发的抽象层次和开发效率。
- Vision 在 Vitis HLS 中的角色: 当你的高级 C++/SystemC 算法涉及到 图像处理 或 计算机视觉 任务时,Vitis HLS 提供了强大的支持库和特性来帮助你高效地实现硬件加速。这部分支持可以统称为 Vitis Vision 功能。
具体来说,Vitis Vision 支持主要体现在以下两个关键方面:
-
hls::Video库:- 作用: 这是 Vitis HLS 内置的核心库,专门设计用于在硬件加速系统中高效处理视频流。它遵循数据流模型 (dataflow model),非常适合描述像素级操作的处理流水线。
- 关键组件:
hls::Mat: 类似 OpenCV 的cv::Mat,表示内存中的图像帧。但它在 HLS 中有特殊含义:- 它代表一块片上存储器 (Block RAM, BRAM 或 UltraRAM),用于缓存图像数据,以便像素处理模块进行高效访问。
- 其行为是“流式”的,即处理模块依次从
hls::Mat中读取像素(通常是按行扫描顺序),处理后放入下一个hls::Mat。 - 可以配置位宽(支持常见图像格式如 8 位灰度、RGB888、RGBA8888 等)、行列数。
- 核心函数: 提供一组针对硬件优化(通常可以并行化或流水线化)的基础图像处理函数:
hls::AXIvideo2Mat/hls::Mat2AXIvideo: 在 AXI4-Stream 视频流(通常来自摄像头接口或 DMA)和内部hls::Mat之间转换。它们是硬件加速器的标准入口和出口。hls::CvtColor: 颜色空间转换 (如 RGB2GRAY, BGR2RGB, RGB2YCrCb 等)。hls::GaussianBlur: 高斯模糊。hls::Sobel: 索贝尔边缘检测。hls::Dilate/hls::Erode: 形态学膨胀/腐蚀。hls::Threshold: 阈值处理。hls::Resize: 图像缩放 (最近邻插值等)。hls::Duplicate: 复制图像流。- 还有众多其他函数(求直方图、滤波器、Harris 角点检测等)。具体支持列表需查阅最新官方文档。
- 优势: 这些函数预先经过优化,可以高效地映射到 FPGA 硬件资源(利用并行处理、流水线、片上存储访问),并能与
hls::Mat流畅交互。
-
OpenCV 接口支持:
- 作用: Vitis HLS 允许你直接在你的硬件加速函数 (
topfunction) 中使用一部分标准的 OpenCV (Open Source Computer Vision Library) 函数和数据类型 (如cv::Mat,cv::Point,cv::Scalar等)。 - 工作机制:
- 当 Vitis HLS 分析你的 C++ 代码时,它会识别出使用的 OpenCV 调用。
- 硬件实现: 对于库中受支持的部分函数 (与
hls::Video库函数有很大重叠),Vitis HLS 会自动将其综合成相应的硬件逻辑,本质上相当于调用了hls::Video库中的等效优化版本。 - 软件仿真/验证: 在纯 C++ 软件仿真模式下 (
C Simulation), HLS 编译器会链接本地安装的 OpenCV 库来运行这些函数,以便你在功能上验证你的算法(使用测试图像或视频)。这点非常关键,因为它让你可以用标准 OpenCV 编写测试平台 (testbench)。 - 软件 vs 硬件路径: 你需要理解,同一个 OpenCV 函数调用在软件仿真和硬件综合时会走不同的路径。软件仿真使用你的本地 OpenCV (.so/.dll),硬件综合时则被替换成硬件实现。
- 限制: 不是所有 OpenCV 函数都支持直接转换为硬件!只有那些已经被实现并集成到 Vitis HLS (Vitis Vision) 中的函数才能顺利综合。尝试使用不支持的函数会导致综合错误。官方文档会列出支持函数列表。
- 作用: Vitis HLS 允许你直接在你的硬件加速函数 (
为什么 Vitis HLS Vision 很重要?
- 高性能加速: FPGA 硬件天生的并行性非常适合图像处理(SIMD、像素流水线),
hls::Video库中的函数就是为利用这些资源而设计的,通常能提供远超 CPU 甚至 GPU 的性能。 - 高开发效率:
- 用 C++ 和熟悉的 OpenCV 语法编写加速逻辑,比直接写 RTL 快得多。
- 直接在 C++ 级别进行硬件仿真(C/RTL Co-simulation)调试。
- OpenCV 接口允许复用大量现有算法代码和测试框架。
- 数据流架构:
hls::Mat和流操作符 (>>) 自然引导你设计高效的流水线结构,这是 FPGA 发挥性能优势的关键。 - 系统集成: 与 AXI4-Stream 接口的集成 (
AXIvideo2Mat/Mat2AXIvideo) 使得视觉加速 IP 可以轻松地嵌入到基于 Xilinx IP Integrator 和 Vitis 平台的复杂系统中(如连接摄像头、DMA、视频处理子系统、CPU 等)。
如何使用?
一个典型的 Vitis HLS 视觉加速项目流程:
- 设计: 用 C++ 定义你的
top函数。在函数内部,使用hls::Mat描述图像处理流水线,或者直接使用支持的 OpenCV 函数。 - 软件仿真 (C Sim): 编写 C++ 测试平台,使用 OpenCV 函数读取输入图像/视频,调用你的
top函数进行仿真,并比较结果/可视化。这一步仅验证功能,在 CPU 上运行。 - 综合: 运行 Vitis HLS 综合。将你的 C++
top函数转换为 RTL (VHDL/Verilog)。 - C/RTL 联合仿真 (可选但推荐): Vitis HLS 能生成一个仿真模型,它使用真实的 RTL 代码,但在 C++ 测试平台中被调用。仿真执行较慢,但能验证硬件行为的正确性和时序(通常使用事务级模型)。
- 导出 IP: 将生成的 RTL、约束和其他文件打包成 Vivado IP 核格式 (.xo)。
- 系统集成 (Vivado/Vitis): 在 Vivado IP Integrator 中将你的视觉加速 IP 核与其他系统组件(如处理器系统 PS, DDR 控制器, DMA, 视频接口 IP 等)连接,生成硬件平台。
- 应用开发 (Vitis): 编写运行在 PS 上(如 Arm Cortex-A)的应用程序(C/C++),通过 AXI-Lite 等接口控制你的加速 IP,协调数据传输(通常通过 DMAs 和 AXI4-Stream)。
- 部署与测试: 将生成的完整系统 (BOOT.bin, 硬件比特流文件 .bit) 加载到目标板卡(如 Zynq MPSoC 开发板),运行测试应用程序进行实际硬件验证。
总结:
Vitis HLS 中的 Vision 支持(核心是 Vitis Vision 库和 OpenCV 接口)是一个强大的工具集,它让你能利用熟悉的 C++ 和 (部分) OpenCV 功能来描述图像处理算法,并将其高效地实现为 FPGA 上的硬件加速器 (hls::Mat 和优化函数库)。这极大地降低了开发 FPGA 图像硬件加速器的门槛,显著提高了性能和效率,是构建高性能嵌入式视觉系统的关键技术。
使用AMD Vitis Unified IDE创建HLS组件
这篇文章在开发者分享|AMD Vitis HLS 系列 1 - AMD Vivado IP 流程(Vitis 传统 IDE) 的基础上撰写,但使
2025-06-20 10:06:15
如何使用AMD Vitis HLS创建HLS IP
本文逐步演示了如何使用 AMD Vitis HLS 来创建一个 HLS IP,通过 AXI4 接口从存储器读取数据、执行简单的数学运算,然后将数
2025-06-13 09:50:11
使用Vitis HLS创建属于自己的IP相关资料分享
1、使用Vitis HLS创建属于自己的IP高层次综合(High-level Synthesis)简称HLS,指的是将高层次语言描述的逻辑结构,
带有PYNQ和Vitis HLS的SHA256加密加速器
电子发烧友网站提供《带有PYNQ和Vitis HLS的SHA256加密加速器.zip》资料免费下载
资料下载
笑尽往事
2023-02-09 10:32:49
Vitis初探—1.将设计从SDSoC/Vivado HLS迁移到Vitis上
本文介绍如何一步一步将设计从SDSoC/Vivado HLS迁移到Vitis平台。
资料下载
佚名
2021-01-31 08:12:02
Vitis Vision | 利用Vitis HLS tcl shell 一键跑通视觉加速例程
在论坛上遇到在高层次综合工具中调用视觉库遇到的大多数问题都和 opencv 库以及Xilinx Vision 库的安装路径有关,如今 Vitis HLS
资料下载
佚名
2021-01-27 06:17:45
Vitis HLS知识库总结
对于AMD Xilinx而言,Vivado 2019.1之前(包括),HLS工具叫Vivado HLS,之后为了统一将HLS集成到
2022-09-02 09:06:23
Vitis HLS如何添加HLS导出的.xo文件
HLS导出的.xo文件如何导入到Vitis里面?需要把.xo文件解压,然后把文件夹导入到Vitis Kernel/src文件夹下吗?
2022-08-03 11:20:26
Vitis HLS前端现已全面开源
Vitis HLS 工具能够将 C++ 和 OpenCL 功能部署到器件的逻辑结构和 RAM/DSP 块上。在 GitHub 上提供 Vitis
2022-08-03 09:53:58
Vitis HLS工具在Standalone模式下调用Xilinx Vision Library L1 API例程
在论坛上遇到在高层次综合工具中调用视觉库遇到的大多数问题都和 opencv 库以及Xilinx Vision 库的安装路径有关,如今 Vitis HLS
2022-07-25 04:14:00
Vitis HLS工具简介及设计流程
Vitis HLS 是一种高层次综合工具,支持将 C、C++ 和 OpenCL 函数硬连线到器件逻辑互连结构和 RAM/DSP 块上。Vitis
2022-05-25 09:43:36
基于Vitis HLS的加速图像处理
使用Vivado / Vitis工具提供预安装的OpenCV版本。尽管Vitis_hls编译Vision库不需要OpenCV,但是用户测试验证使
2022-02-16 16:21:38
利用Vitis HLS tcl shell一键跑通视觉加速例程
本文给想直接使用Vitis HLS 工具在 Standalone 模式下调用 Xilinx Vision Library L1 API 的小
2020-12-29 11:12:19
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机