APP下载

基于ZYNQ芯片的实时视频处理系统设计

2019-04-04陈冠成吴贵燕

现代电子技术 2019年6期
关键词:实时性

陈冠成 吴贵燕

关键词: ZYNQ芯片; 视频处理; 实时性; ARM处理器; FPGA; Vivado HLS

中图分类号: TN948.4?34; TP391.4             文献标识码: A                    文章编号: 1004?373X(2019)06?0076?03

Abstract: The ARM+FPGA architecture of the Xilinx Zynq platform is studied, and a hardware and software co?processing real?time video processing system based on the ZYNQ chip is proposed in this paper. In the system, the ARM processor is used for the graphical interface program development, so as to realize task scheduling. The image processing algorithm is developed by using the Vivado HLS tool, which is integrated into the FPGA IP core to achieve the hardware acceleration processing. The data interaction in the DDR cache is realized by using the Xilinx Vdma IP. The test results show that the hardware and software co?processing system based on the ARM+FPGA can significantly improve the video processing speed, which satisfies the real?time requirement.

Keywords: ZYNQ chip; video processing; real?time performance; ARM processor; FPGA; Vivado HLS

随着计算机视觉技术和电子技术的飞速发展,图像视频处理技术得到了迅速发展和广泛应用,越来越多的计算机视觉应用可以在嵌入式系统上得以实现。传统的嵌入式ARM视频处理平台存在计算能力有限、响应速度慢等问题[1];FPGA凭借并行结构获得速度上的优势,且功耗较低,但其使用硬件描述语言开发复杂图像处理算法难度较大[2?3]。针对以上问题,本文采用Zynq?7000系列的ARM+FPGA可编程片上系统,运用软硬件协同设计的方法搭建了图像视频采集与处理系统。

1  系统硬件电路框架

在ZYNQ芯片内,PS的互联由多个开关组成,通过使用AXI点对点通道连接系统资源,用于在主设备和从设备之间实现通信地址、数据和响应交易。在ARM CPU和PL主设备控制器之间,该互联结构的三种PS?PL接口(AXI_GP,AXI_HP,AXI_ACP)提供了低延迟、高吞吐量和缓存一致性的数据路径[4]。

根据ZYNQ内部互联结构设计视频处理系统的FPGA硬件框图如图1所示。FPGA硬件框图可以分为视频捕获、处理和显示三个部分。

1) 视频通过位于PS侧的USB摄像头进行捕获,由于Linux内核带有V4L2(Video for Linux)库,而OpenCV在其基础上封装了VideoCapture类,因此可以方便地操作摄像头捕获视频流。

2) 摄像头获得视频流后存入DDR3缓存,并通过AXI_HP高速数据通道送入VDMA的MM2S端口,转换为AXI4?Stream数据后进入PL端的HLS视频处理IP进行处理。处理完成后再通过AXI_HP高速数据通道从VDMA的S2MM端口读出,重新转换为内存数据存入DDR3缓存。

3) 视频显示模块以及为显示模块提供标准时序数据的VDMA均由Linux系统控制,负责图形界面的输出显示。

2  系统软件设计

2.1  嵌入式Linux系统搭建

为了在ARM处理器上进行图形界面程序开发,需要进行嵌入式Linux系统的移植。首先在宿主机上安装Xilinx SDK软件开发套件搭建起交叉编译环境,借助其中的交叉编译链arm?xilinx?linux?gnueabi?gcc分别对裁剪后的U?Boot,Kernel(Linux内核)源码进行交叉编译,生成二进制可执行文件[5]。其次,使用Vivado设计套件进行可配置硬件电路开发。基于Xilinx IP核可以方便进行嵌入式Linux硬件系统的构建,其中主要包括ZYNQ7 IP,VDMA IP,AXI Display Controller IP等。在硬件电路设计通过验证后即可生成用于PL初始化的比特流文件。最后,使用SDK工具制作系统启动文件BOOT.bin。

2.2  VDMA驱动设计

Linux操作系统的内存空间分为内核空间和用户空间两个部分。前者运行操作系统的核心软件,拥有访问硬件设备的所有权限;后者运行普通应用程序,不能直接访问内核空间和硬件设备。在基于ZYNQ的嵌入式操作系统下,应用程序是不能够直接访问FPGA中的硬件逻辑资源的。因而应用程序需要通过使用内核的应用程序编程接口或系统调用间接与FPGA硬件逻辑进行交互[6]。使用HLS[7]技术综合而成的硬件加速IP属于硬件逻辑资源,因此需要设计VDMA驱动程序,使应用程序方便控制HLS硬件逻辑资源。AXI VDMA结构框图如图2所示。通过图2可知,VDMA驱动程序实质上是通过AXI4?Lite接口向VDMA IP中不同功能的寄存器进行赋值实现[8]。

2.3  应用软件设计

通过移植Qt(图形界面库)及OpenCV[9](计算机视觉库),搭建视频采集与显示界面如图3所示。

视频流数据的处理流程图如图4所示。由流程图可知,视频图像采集后,先进行软件的预处理,接着通过VDMA的MM2S数据通道传输至HLS硬件加速IP进行处理,最后通过VDMA的S2MM数据通道返回用户空间进行下一步处理。

3  系统测试及结果分析

为了对搭建的视频处理系统进行功能及性能测试,对采集到的视频图像进行边缘检测,分别以软件和软硬件结合的方式予以实现。边缘检测是图像处理中的基本问题,可以大幅度地减少数据量,保留图像重要的结构属性。这里实现的是Sobel[10]边缘检测算法,效果对比如图5所示。

针对分辨率为640×480的视频数据进行处理,获得处理速度如表1所示。由表中结果可以看出,采用软硬件结合设计方法实现的图像处理算法效果不变,但是处理速度上有了很大提升。在本次图像边缘检测实验中,软硬件协同处理与纯软件处理相比速度提高了10.98倍。

4  结  语

针对嵌入式视觉系统开发中ARM与FPGA传统开发方案的缺点,本文提出基于ZYNQ芯片的实时视频处理系统,不仅为视频的采集、处理与显示提供完整的实现方案,而且应用软硬件协同设计方法,充分发挥ARM+FPGA体系结构对于实现复杂图像处理算法的优势,为进一步开发复杂功能的嵌入式视觉系统奠定了基础。

参考文献

[1] 邓健峰,谢云.基于FPGA+ARM的视频采集平台设计与实现[J].工业控制计算机,2017,30(12):97?98.

DENG Jianfeng, XIE Yun. Design and implementation of video capture system based on FPGA+ARM [J]. Industrial control computer, 2017, 30(12): 97?98.

[2] 杨晓安,罗杰,苏豪,等.基于Zynq?7000高速图像采集与实时处理系统[J].电子科技,2014,27(7):151?154.

YANG Xiaoan, LUO Jie, SU Hao, et al. High?speed image acquisition and real?time processing system based on Zynq?7000 [J]. Electronic science and technology, 2014, 27(7): 151?154.

[3] 李朗,张索非,杨浩.基于Zynq?7000的视频处理系统框架设计[J].计算机技术与发展,2017,27(5):192?195.

LI Lang, ZHANG Suofei, YANG Hao. Design of video processing system framework with Zynq?7000 [J]. Computer technology and development, 2017, 27(5): 192?195.

[4] 何宾,张艳辉.Xilinx Zynq?7000嵌入式系统设计与实现[M].北京:电子工业出版社,2016.

HE Bin, ZHANG Yanhui. Design and implementation of Xilinx Zynq?7000 embedded system [M]. Beijing: Publishing House of Electronics Industry, 2016.

[5] 陸佳华,潘祖龙,彭竞宇.嵌入式系统软硬件协同设计实战指南[M].北京:机械工业出版社,2016.

LU Jiahua, PAN Zulong, PENG Jingyu. Practical guide for hardware and software collaborative design of embedded systems [M]. Beijing: China Machine Press, 2016.

[6] 梁新宇.基于ZYNQ的行人检测系统软硬件协同实现[D].大连:大连海事大学,2016.

LIANG Xinyu. Implementation with software and hardware of pedestrian detection system based on ZYNQ [D]. Dalian: Dalian Maritime University, 2016.

[7] Xilinx Inc. Vivado design suite tutorial: high?level synthesis [EB/OL]. [2017?12?20]. http://china.xilinx.com/support/documentation/sw_manuals/xilinx2017_4/ug871?vivado?high?level?synthesis?tutorial.pdf.

[8] Xilinx Inc. AXI video direct memory access v6.3: LogiCORE IP product guide [EB/OL]. [2017?10?04]. http://china.xilinx.com/support/documentation/ip_documentation/axi_vdma/v6_3/pg020_axi_vdma.pdf.

[9] 毛星云,冷雪飞.OpenCV3编程入门[M].北京:电子工业出版社,2015.

MAO Xingyun, LENG Xuefei. Getting started with OpenCV3 programming [M]. Beijing: Publishing House of Electronics Industry, 2015.

[10] 沈德海,侯建,鄂旭,等.基于Sobel的多方向算子模板边缘检测算法[J].现代电子技术,2015,38(4):91?93.

SHEN Dehai, HOU Jian, E Xu, et al. Sobel?based edge detection algorithm for multi?direction template [J]. Modern electronics technique, 2015, 38(4): 91?93.

猜你喜欢

实时性
基于规则实时性的端云动态分配方法研究
基于虚拟局域网的智能变电站通信网络实时性仿真
航空电子AFDX与AVB传输实时性抗干扰对比
一种满足实时性需求的测发控软件改进技术
基于B/S的实时用户行为检测管理系统设计与实现
一种车载Profibus总线系统的实时性分析