本文作者:amd 工程师 shaoyi chen
本篇博客介绍 vvas 框架所支持调用的 h/w(hls) 内核。 h/w 内核指的是使用 hls 工具生成的在 fpga 部分执行的硬件功能模块。
hls kernel 创建:
我们以 smartcam 的预处理作为例子,相关的代码可以在参考链接中找到。xf_pp_pipeline 的作用是将输入图像的格式从 nv12 转换为 bgr,再进行减均值和归一化操作。xf_pp_pipeline 的实现基于 hls vision library。vitis 视觉库是为在 vitis 开发环境中工作而设计的,它为在 fpga 设备上加速的计算机视觉功能提供了一个软件接口。vitis 视觉库的功能大多与 opencv 的功能相似。更多的详细说明可以在参考链接中找到。
xf_pp_pipeline_accel.cpp 作为硬件的一部分,需要将它和 platform 结合在一起。v++ 将 hls kernel 打包为 xo 文件用于后续的硬件集成。
kv260_ispmipirx_vcu_dp 是 smartcam 应用使用的 platform,xf_pp_pipeline.cpp 打包成 xo 对象后,通过v++ 链接为完整的硬件工程并生成 xclbin 文件。完整的硬件框图如下图所示,红框部分为对应的 hls kernel。
kernel 调用:
使用 vvas 框架为 xf_pp_pipeline.cpp 编写自定义驱动是要实现四个函数,分别是:
xlnx_kernel_start
xlnx_kernel_done
xlnx_kernel_init
xlnx_kernel_deinit
xlnx_kernel_init() 函数读取 json 文件中的 mean_r、mean_g、mean_b、scale_r、scale_g、scale_b。
xlnx_kernel_start() 函数为 hls kernel 配置参数。
xlnx_kernel_deinit() 函数用来释放不需要的句柄。
xlnx_kernel_done() 函数进行超时检测。
通过这四个函数就完成了 vvas 自定义插件的设计。在 smartcam 应用运行时,通过命令行 gst-launch-1.0 -v filesrc xxxxxx ! queue ! vvas_xmultisrc kconfig=/opt/xilinx/kv260-smartcam/share/vvas/facedetect/preprocess.json ! xxxxxx 完成插件的调用。
其中 preprocess.json 的内容为:
本文简要介绍了 vvas 调用 hls 生成的硬件加速器的主要流程,更多的细节可以参考 vvas 手册。
功率放大器高频驱动超声波换能器解决方案
嘉拓智能已经针对多家国际企业展开合作
太空科学领域使用人工智能或人工智能的幻想
tda2616引脚功能
区块链技术将改变阿联酋商业的运作
使用VVAS调用HLS生成硬件加速器的主要流程
Mini LED技术逐步成熟 LED业者下半年加快量产脚步
浅谈影响分辨率的相关因素
水位报警仪现场声光报警,测点可按需设置
Keysight - RedCap: 5G时代的新蜂窝物联网技术
云计算和网络融合:加速行业应用,促进万物互联
汽车线束及防水连接器的规划流程和规划原则
中国电信在深圳同步开通了5G SA网络
北斗手表完美呈现本届导航年会
一种超声波传感器用于汽车后视镜测距的应用解决方案
新型无死角螺旋板换热器的特色是什么
光纤到户接入技术FTTH应用方案
四屏或多屏炒股的电脑主板该如何选购
基于USB Type-C标准的三种设备测试
图像处理之动态范围扩展定义与方法