登录/注册

vitis hls vision

更多

好的,我们来用中文解释一下 Vitis HLS 和其中的 Vision (视觉) 相关功能。

简单来说:

具体来说,Vitis Vision 支持主要体现在以下两个关键方面:

  1. 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 流畅交互。
  2. OpenCV 接口支持:

    • 作用: Vitis HLS 允许你直接在你的硬件加速函数 (top function) 中使用一部分标准的 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 Vision 很重要?

  1. 高性能加速: FPGA 硬件天生的并行性非常适合图像处理(SIMD、像素流水线),hls::Video 库中的函数就是为利用这些资源而设计的,通常能提供远超 CPU 甚至 GPU 的性能。
  2. 高开发效率:
    • 用 C++ 和熟悉的 OpenCV 语法编写加速逻辑,比直接写 RTL 快得多。
    • 直接在 C++ 级别进行硬件仿真(C/RTL Co-simulation)调试。
    • OpenCV 接口允许复用大量现有算法代码和测试框架。
  3. 数据流架构: hls::Mat 和流操作符 (>>) 自然引导你设计高效的流水线结构,这是 FPGA 发挥性能优势的关键。
  4. 系统集成: 与 AXI4-Stream 接口的集成 (AXIvideo2Mat/Mat2AXIvideo) 使得视觉加速 IP 可以轻松地嵌入到基于 Xilinx IP Integrator 和 Vitis 平台的复杂系统中(如连接摄像头、DMA、视频处理子系统、CPU 等)。

如何使用?

一个典型的 Vitis HLS 视觉加速项目流程:

  1. 设计: 用 C++ 定义你的 top 函数。在函数内部,使用 hls::Mat 描述图像处理流水线,或者直接使用支持的 OpenCV 函数。
  2. 软件仿真 (C Sim): 编写 C++ 测试平台,使用 OpenCV 函数读取输入图像/视频,调用你的 top 函数进行仿真,并比较结果/可视化。这一步仅验证功能,在 CPU 上运行。
  3. 综合: 运行 Vitis HLS 综合。将你的 C++ top 函数转换为 RTL (VHDL/Verilog)。
  4. C/RTL 联合仿真 (可选但推荐): Vitis HLS 能生成一个仿真模型,它使用真实的 RTL 代码,但在 C++ 测试平台中被调用。仿真执行较慢,但能验证硬件行为的正确性和时序(通常使用事务级模型)。
  5. 导出 IP: 将生成的 RTL、约束和其他文件打包成 Vivado IP 核格式 (.xo)。
  6. 系统集成 (Vivado/Vitis): 在 Vivado IP Integrator 中将你的视觉加速 IP 核与其他系统组件(如处理器系统 PS, DDR 控制器, DMA, 视频接口 IP 等)连接,生成硬件平台。
  7. 应用开发 (Vitis): 编写运行在 PS 上(如 Arm Cortex-A)的应用程序(C/C++),通过 AXI-Lite 等接口控制你的加速 IP,协调数据传输(通常通过 DMAs 和 AXI4-Stream)。
  8. 部署与测试: 将生成的完整系统 (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,指的是将高层次语言描述的逻辑结构,

2022-09-09 16:45:27

Vitis HLS:使用任务级并行性的高性能设计

电子发烧友网站提供《Vitis HLS:使用任务级并行性的高性能设计.pdf》资料免费下载

资料下载 李郝荫 2023-09-13 17:21:04

Vitis HLS移植指南

电子发烧友网站提供《Vitis HLS移植指南.pdf》资料免费下载

资料下载 王雪 2023-09-13 09:21:12

带有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

7天热门专题 换一换
相关标签