新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 用OpenCV和Vivado HLS加速基于Zynq SoC的嵌入式视觉应用开发

用OpenCV和Vivado HLS加速基于Zynq SoC的嵌入式视觉应用开发

作者:Fernando Martinez Vallina时间:2014-03-06来源:电子产品世界收藏

HLS加速OPENCV函数

本文引用地址:http://www.eepw.com.cn/article/234277.htm

  一旦完成了嵌入式视觉系统架构的分区,找到了计算强度最大的部分,HLS工具就能帮助您加速这些函数,同时仍能继续使用C++编写。 HLSCC++SystemC代码生成高效的RTL实现方案。

  此外,以IP为中心的设计环境提供丰富的处理IP SmartCORE,能简化到图像传感器、网络及其它必要I/O接口的连接,简化库中这些函数的实现。这相对于其它实现方案而言是一种明显的优势,因为其它方案哪怕是最基本的 I/O功能都需要加速。

为什么需要高层次综合?

  推出的 HLS是一款软件编译器,旨在将CC++SystemC编写的算法转变为针对用户定义时钟频率和产品系列器件优化的RTL。在C/C++程序解释、分析和优化方面,它与x86处理器的编译器具有相同的核心技术基础。这种相似性有助于从台式机开发环境快速移植到FPGA实现。您选择目标时钟频率和器件后,无需用户输入,Vivado HLS会默认生成RTL实现。此外,Vivado HLS与其它任何编译器一样,也分不同的优化级别。由于算法最终执行目标是定制的微型架构,因此Vivado HLS可实现的优化级别比传统的编译器具有更精细的粒度。传统的针对处理器的软件设计O1 – O3优化理念被架构探索要求所取代,这些要求与用户技术相结合,指导Vivado HLS创建尽可能出色的实现方案,满足特定算法的功耗、面积占用和性能要求。

  图4 Zynq上采用ARM处理器的运动检测

  图2给出了HLS编译器的用户设计流程。从理念上讲,用户提供C/C++/SystemC算法描述,编译器就能生成RTL实现。程序代码转化为RTL的过程分为四大阶段:算法规范、微型架构探索、RTL实现和IP封装。

  算法规范阶段是指将针对FPGA架构的软件应用开发。该规范可在标准桌面软件开发环境中,全面利用提供的等软件库进行开发。除了支持以软件为中心的开发流程外,Vivado HLS还提升了从RTLC/C++的提取验证速度。用户能用原软件进行全面的算法功能验证。通过Vivado HLS生成RTL后,生成的设计代码类似于传统软件编译器生成的处理器汇编代码。用户可在汇编代码级进行调试,但这一步并不是必需的。

  虽然Vivado HLS能处理几乎所有针对其它软件编译器的C/C++代码,但代码有一个限制。在用Vivado HLS编译代码到FPGA过程中,用户代码不能包含任何运行时动态存储器分配。与算法绑定于单个存储器架构的处理器不同,FPGA实现采用特定算法的存储器架构。通过分析阵列和变量的使用模式,Vivado HLS能确定哪些物理存储器布局和存储器类型最适合算法的存储和带宽要求。这种分析工作的唯一要求就是在C/C++代码中明确描述算法使用的所有存储器阵列。

  从C/C++转为优化的FPGA实现的第二步就是微型架构探索。在这一阶段,您可运用Vivado HLS编译器优化来测试不同的设计,以找到适当的面积和性能组合。您可在不同性能点实现相同的C/C++代码,无需修改源代码。Vivado HLS编译器优化或要求规定了算法不同部分的性能如何描述。

c++相关文章:c++教程




评论


相关推荐

技术专区

关闭