Xilinx FPGA/Zynq设计中使用HLS实现OpenCV的开发流程
的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
赛灵思 VivadoHLS OpenCV 201402 相关文章:
- 可扩展的嵌入式网络平台(07-07)
- 基于赛灵思Spartan-3A DSP的安全视频分析(02-17)
- 如何快速启动嵌入式系统开发(01-06)
- 利用XPS工具快速生成Virtex FPGA的板级支持包(03-18)
- 设计可靠性: MTBF—这只是开始!(09-17)
- 将SoC平台设计与DSP系统生成器相集成(07-01)