文档库 最新最全的文档下载
当前位置:文档库 › Vivado HLS视频库加速Zynq-7000 All Programmable SoC OpenCV应用

Vivado HLS视频库加速Zynq-7000 All Programmable SoC OpenCV应用

如何使用Vivado HLS视频库加速Zynq-7000 All Programmable SoC OpenCV

g p应用

2013年9月11日

? Copyright 2013 Xilinx

OpenCV简介

机(p)机

开源计算机视觉(OpenCV) 被广泛用于开发计算机视觉应用

–包含2500多个优化的视频函数的函数库

–专门针对台式机处理器和GPU进行优化

–用户成千上万

–无需修改即可在Zynq器件的ARM处理器上运行

但是

–利用OpenCV实现的高清处理经常受外部存储器的限制

–存储带宽会成为性能瓶颈

–存储访问会限制功耗效率

Zynq All-programmable SOC是实现嵌入式计算机视觉应用的极

好方法

–性能高、功耗低

实时计算机视觉应用

计算机视觉应用

实时分析功能

高级驾驶员安全辅助车道或行人检测

安防监视敌我识别

高速物体检测用于工厂自动化的

机器视觉

非侵入式医疗成像技术肿瘤检测

实时视频分析处理

基于帧的

基于像素的

Pixel based 4Kx2K 特征处理与

决策

图像处理与特征提取

Image processing and Feature

extraction

F1

1080p F2 F3

720p

480…..

480p

每像素数百次运算每特性数10000次运算

800万次处理x每帧100次运算= 数百亿次运算每秒处理数1000个特征= 数百万次运算

实时视频分析的异构实现

基于帧的基于像素的图像处理与特征

Pixel based 4Kx2K

特征处理与判定

提取

Image processing and Feature

extraction F11080p

F2F3软件域(ARM)硬件域

(FPGA)720p

480…..

480p

每像素数百次运算

每特性数10000次运算800万次处理x 每帧100次运算

= 数百亿次运算

每秒处理数1000个特征

= 数百万次运算

赛灵思实时图像分析的实现:Zynq All Programmable SoC Programmable SoC

Frame based Feature processing and 基于像素的图像处理与特征

Pixel based 4Kx2K

Feature processing and decision making

提取

基于帧的特征处理与判定

Image processing and Feature

extraction

F11080p

F2F3720p

480…..

480p

每像素数百次运算

每特性数10000次运算1000800万次处理x 每帧100次运算

= 数百亿次运算

每秒处理数个特征

= 数百万次运算

Vivado:提高OpenCV应用的效率

高清视频算法(每秒约1帧

)的C语言仿真

–高清视频(每小时1 帧)的

RTL仿真

实时FPGA实现方案高达

60fps

Zynq 视频参考设计架构

DDR3

DDR3

外部存储器

处理系统

DDR 存储控制器

SD 卡

双核Cortex-A9

硬化的外设

S_AXI_GP 32b 位S_AXI_HP 64 位AXI4S AXI 互联

AXI4 Stream IP 核

HDMI

HDMI

视频输入

Xylon 显示

控制器

HLS 生成的流水线

AXI VDMA

使用64位高性能端口实现对外部存储器的视频访问使用32位通用端口实现控制寄存器访问使用AXI4-Stream 实现的视频流

以IP 为中心的设计流程

更快速的IP

生成与集成

基于C 语言的IP 创建

用户首选的系统集成环境

C 、C++ 或SystemC

DSP 系统生成器(System Generator)

C 函数库

?浮点math.h ?定点VHDL V il ?视频

VHDL 或Verilog 以及软件驱动

Vivado IP 集成器

IP 子系统赛灵思IP 第三方IP Vivado RTL 集成

用户IP

在FPGA 设计中使用OpenCV

集成的O CV

O CV 图像文件读取OpenCV 应用

OpenCV 应用

OpenCV 参考

加速的OpenCV 应用

图像文件读取(OpenCV)

(OImage penCV)

OpenCV2AXIvideo 实时视频输入

实时视频输入

O CV 函数链AXIvideo2Mat

模块

O CV 函数链AXIvideo2Mat

模块

OpenCV HLS 视频库函数链

Mat2AXIvideo

可综合的OpenCV

HLS 视频库函数链

Mat2AXIvideo

可综合的图像文件写入(OpenCV)

AXIvideo2OpenCV 图像文件写入实时视频输出

实时视频输出

(OpenCV)

DDR3处理系统

DDR 存储控制器

DDR3

DDR3

外部存储器图像文件读取(OpenCV)

SD

双核Cortex-A9OpenCV 函数链

Cortex A9

硬化的外设

HDMI

HDMI

Xylon 显示AXI VDMA

AXI 互联

图像文件写入

(OpenCV)

视频输入

y 控制器

HLS 生成的流水线

DDR3处理系统

DDR 存储控制器

DDR3DDR3

外部存储器图像文件读取(OpenCV)

12

345

SD

双核Cortex-A9OpenCV 函数链

Cortex A9

硬化的外设

HDMI

HDMI

Xylon 显示AXI VDMA

AXI 互联

图像文件写入

(OpenCV)

视频输入

y 控制器

HLS 生成的流水线

DDR3处理系统

DDR 存储控制器

DDR3

DDR3

外部存储器图像文件读取(OpenCV)

SD

双核Cortex-A9OpenCV 函数链

Cortex A9

硬化的外设

HDMI

HDMI

Xylon 显示AXI VDMA

AXI 互联

图像文件写入

(OpenCV)

视频输入

y 控制器

HLS 生成的流水线

集成的OpenCV 应用

DDR3处理系统

DDR 存储控制器

DDR3DDR3 外部存储器

实时视频输入

12

345

SD

双核

Cortex-A9OpenCV 函数链

Cortex A9

硬化的外设

p HDMI

HDMI

Xylon

显示AXI VDMA

AXI 互联

实时视频输出

视频输入

y 控制器

HLS 生成的流水线

OpenCV 参考/软件执行

DDR3图像文件读取处理系统

DDR 存储控制器

DDR3DDR3

外部存储器12

345

(OImage penCV)OpenCV2AXIvideo SD

双核Cortex-A9AXIvideo2Mat

Cortex A9

硬化的外设

HLS 视频库函数链

Mat2AXIvideo

HDMI

HDMI

Xylon 显示AXI VDMA

AXI 互联

AXIvideo2OpenCV

图像文件写入

视频输入

y 控制器

HLS 生成的流水线

(OpenCV)

OpenCV 参考/系统测试

DDR3图像文件读取处理系统

DDR 存储控制器

DDR3DDR3

外部存储器(OImage penCV)OpenCV2AXIvideo 12

SD

双核Cortex-A9AXIvideo2Mat

Cortex A9

硬化的外设

HLS 视频库函数链

Mat2AXIvideo

HDMI

HDMI

Xylon 显示AXI VDMA

AXI 互联

AXIvideo2OpenCV

图像文件写入

视频输入

y 控制器

HLS 生成的流水线

(OpenCV)

加速的OpenCV 应用

DDR3处理系统

DDR 存储控制器

DDR3DDR3 外部存储器

实时视频输入

12

SD

双核Cortex-A9AXIvideo2Mat

视频库函数链

Cortex A9

硬化的外设

HLS Mat2AXIvideo

HDMI

HDMI

视频输入

Xylon

显示AXI VDMA

AXI 互联

实时视频输出

y 控制器

HLS 生成的流水线

OpenCV设计流程

OpenCV模块A1)在台式机上开发OpenCV应用

2)无需修改即可在ARM内核上运行OpenCV应

OpenCV模块B

3)使用I/O函数抽象FPGA部分

O CV 4)用可综合代码代替OpenCV函数调用

5)运行HLS以生成FPGA加速器

OpenCV模块C

6)用FPGA加速器调用代替可综合代码调用OpenCV模块D

OpenCV 应用的软硬划分

opencv2AXIvideo OpenCV 模块A

AXIvideo2HLS

OpenCV 模块B

HLS 模块B

O CV HLS 模块C

同步

OpenCV

模块C HLS2AXIvideo

OpenCV 模块D

AXIvideo2opencv

综合

相关文档