HLS:OpenCV和RTL代码转换关系

  OpenCV 图像处理是基于存储器帧缓存而构建的, 它总是假设视频帧数据存放在外部 DDR 存储器中。 由于处理器的小容量高速缓存性能的限制, 因此, OpenCV 访问局部图像性能较差。 并且, 从性能的角度来说, 基于 OpenCV 设计的架构比较复杂, 功耗更高。 在对分辨率或帧速率要求低, 或者在更大的图像中对需要的特征或区域进行处理时, OpenCV 似乎足以满足很多应用的要求; 但是, 对于高分辨率和高帧率实时处理的应用中, OpenCV 很难满足高性能和低功耗的需求。 
        基于视频流的架构能提供高性能和低功耗, 链条化的图像处理函数减少了外部存储器访问。Vivado HLS 对 OpenCV 的支持, 不是指可以将 OpenCV 的函数库直接综合成 RTL 代码, 而是需要将代码转换为可综合的代码。 这些可综合的视频库称为 Vivado HLS 视频库, 它们由 Vivado HLS 工具提供。
  由于 OpenCV 函数一般都包含动态的内存分配、 浮点以及假设图像在外部存储器中存放或者修改, 所以不能直接通过 Vivado HLS 对 OpenCV 函数进行综合。Vivado HLS 视频库用于替换很多基本的 OpenCV 函数, 它与 OpenCV 具有相似的接口和算法,它主要针对在 FPGA 架构中实现的图像处理函数, 其中包含了专门面向 FPGA 的优化, 比如定点运算而非浮点运算(不必精确到比特位) , 片上的行缓存(line buffer) 和窗口缓存(window buffer)。 

  一些优秀的 C 算法, 我们也可以使用 HLS 将其装换为硬件描述语言, 而且其质量也要比人工设计的更好。(有待验证!)


原文地址:https://www.cnblogs.com/yiwenbo/p/10744097.html