微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Xilinx FPGA/Zynq设计中使用HLS实现OpenCV的开发流程

Xilinx FPGA/Zynq设计中使用HLS实现OpenCV的开发流程

时间:02-26 来源:电子产品世界 点击:

的OpenCV函数,它与OpenCV具有相似的接口和算法,主要针对在FPGA架构中实现的图像处理函数,包含了专门面向FPGA的优化,比如定点运算而非浮点运算(不必精确到比特位),片上的行缓存(line buffer)和窗口缓存(window buffer)。图2.1展示了在Xilinx Zynq AP SoC器件上实现视频处理的系统结构。

2.2 在FPGA/Zynq开发中使用VivadoHLS实现OpenCV的设计流程

设计开发流程主要有如图2.2三个步骤。

1. 在计算机上开发OpenCV应用,由于是开源的设计,采用C++的编译器对其进行编译、仿真和debug,最后产生可执行文件。这些设计无需修改即可在 ARM内核上运行OpenCV应用。

2.使用I/O函数抽取FPGA实现的部分,并且使用可综合的VivadoHLS Video库函数代码代替OpenCV函数的调用。

3.运行HLS生成RTL代码,在VivadoHLS工程中启动co-sim,HLS工具自动重用OpenCV的测试激励验证产生的RTL代码。在Xilinx的ISE或者Vivado开发环境中做RTL的集成和SoC/FPGA实现。

2.3 用HLS实现OpenCV应用的实例(快速角点滤波器image_filter)

我们通过快速角点的例子,说明通常用VivadoHLS实现OpenCV的流程。首先,开发基于OpenCV的快速角点算法设计,并使用基于OpenCV的测试激励仿真验证这个算法。接着,建立基于视频数据流链的OpenCV处理算法,改写前面OpenCV的通常设计,这样的改写是为了与HLS视频库处理机制相同,方便后面步骤的函数替换。最后,将改写的OpenCV设计中的函数,替换为HLS提供的相应功能的视频函数,并使用VivadoHLS综合,在Xilinx开发环境下在FPGA可编程逻辑或作为Zynq SoC硬件加速器实现。当然,这些可综合代码也可在处理器或ARM上运行。

  3 VHLS实现OpenCV设计流程总结

OpenCV函数可实现计算机视觉算法的快速原型设计,并使用VivadoHLS工具转换为RTL代码,在FPGA可编程逻辑上或者ZynqSoC逻辑上作为硬件加速器,实现高分辨率高帧率的实时视频处理。计算机视觉应用与生俱来的异构特性,使其需要软硬件相结合的实现方案,采用Vivado HLS视频库能加快OpenCV函数向FPGA或Zynq SOC全可编程架构的映射。

  参考文献:

[1]Vivado Design Suite User Guide:High-LevelSynthesis(UG902)

[2]Accelerating OpenCV applications with Zynq using VivadoHLS video libraries(XAPP1167)

[3]Bradski G,Kaebler A.Learning OpenCV.ISBN 978-7-302-20993-5

[4]Implementing memory structure for video processing in the VivadoHLS tool(XAPP793)

[5]Gonzalez R C.Wood R E.Digital Image Processing,3rd ed.ISBN 978-7-121-11008-5

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top