陳冠成 吳貴燕
關(guān)鍵詞: ZYNQ芯片; 視頻處理; 實(shí)時(shí)性; ARM處理器; FPGA; Vivado HLS
中圖分類號: TN948.4?34; TP391.4 ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼: 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
隨著計(jì)算機(jī)視覺技術(shù)和電子技術(shù)的飛速發(fā)展,圖像視頻處理技術(shù)得到了迅速發(fā)展和廣泛應(yīng)用,越來越多的計(jì)算機(jī)視覺應(yīng)用可以在嵌入式系統(tǒng)上得以實(shí)現(xiàn)。傳統(tǒng)的嵌入式ARM視頻處理平臺存在計(jì)算能力有限、響應(yīng)速度慢等問題[1];FPGA憑借并行結(jié)構(gòu)獲得速度上的優(yōu)勢,且功耗較低,但其使用硬件描述語言開發(fā)復(fù)雜圖像處理算法難度較大[2?3]。針對以上問題,本文采用Zynq?7000系列的ARM+FPGA可編程片上系統(tǒng),運(yùn)用軟硬件協(xié)同設(shè)計(jì)的方法搭建了圖像視頻采集與處理系統(tǒng)。
在ZYNQ芯片內(nèi),PS的互聯(lián)由多個(gè)開關(guān)組成,通過使用AXI點(diǎn)對點(diǎn)通道連接系統(tǒng)資源,用于在主設(shè)備和從設(shè)備之間實(shí)現(xiàn)通信地址、數(shù)據(jù)和響應(yīng)交易。在ARM CPU和PL主設(shè)備控制器之間,該互聯(lián)結(jié)構(gòu)的三種PS?PL接口(AXI_GP,AXI_HP,AXI_ACP)提供了低延遲、高吞吐量和緩存一致性的數(shù)據(jù)路徑[4]。
根據(jù)ZYNQ內(nèi)部互聯(lián)結(jié)構(gòu)設(shè)計(jì)視頻處理系統(tǒng)的FPGA硬件框圖如圖1所示。FPGA硬件框圖可以分為視頻捕獲、處理和顯示三個(gè)部分。
1) 視頻通過位于PS側(cè)的USB攝像頭進(jìn)行捕獲,由于Linux內(nèi)核帶有V4L2(Video for Linux)庫,而OpenCV在其基礎(chǔ)上封裝了VideoCapture類,因此可以方便地操作攝像頭捕獲視頻流。
2) 攝像頭獲得視頻流后存入DDR3緩存,并通過AXI_HP高速數(shù)據(jù)通道送入VDMA的MM2S端口,轉(zhuǎn)換為AXI4?Stream數(shù)據(jù)后進(jìn)入PL端的HLS視頻處理IP進(jìn)行處理。處理完成后再通過AXI_HP高速數(shù)據(jù)通道從VDMA的S2MM端口讀出,重新轉(zhuǎn)換為內(nèi)存數(shù)據(jù)存入DDR3緩存。
3) 視頻顯示模塊以及為顯示模塊提供標(biāo)準(zhǔn)時(shí)序數(shù)據(jù)的VDMA均由Linux系統(tǒng)控制,負(fù)責(zé)圖形界面的輸出顯示。
2.1 ?嵌入式Linux系統(tǒng)搭建
為了在ARM處理器上進(jìn)行圖形界面程序開發(fā),需要進(jìn)行嵌入式Linux系統(tǒng)的移植。首先在宿主機(jī)上安裝Xilinx SDK軟件開發(fā)套件搭建起交叉編譯環(huán)境,借助其中的交叉編譯鏈arm?xilinx?linux?gnueabi?gcc分別對裁剪后的U?Boot,Kernel(Linux內(nèi)核)源碼進(jìn)行交叉編譯,生成二進(jìn)制可執(zhí)行文件[5]。其次,使用Vivado設(shè)計(jì)套件進(jìn)行可配置硬件電路開發(fā)?;赬ilinx IP核可以方便進(jìn)行嵌入式Linux硬件系統(tǒng)的構(gòu)建,其中主要包括ZYNQ7 IP,VDMA IP,AXI Display Controller IP等。在硬件電路設(shè)計(jì)通過驗(yàn)證后即可生成用于PL初始化的比特流文件。最后,使用SDK工具制作系統(tǒng)啟動(dòng)文件BOOT.bin。
2.2 ?VDMA驅(qū)動(dòng)設(shè)計(jì)
Linux操作系統(tǒng)的內(nèi)存空間分為內(nèi)核空間和用戶空間兩個(gè)部分。前者運(yùn)行操作系統(tǒng)的核心軟件,擁有訪問硬件設(shè)備的所有權(quán)限;后者運(yùn)行普通應(yīng)用程序,不能直接訪問內(nèi)核空間和硬件設(shè)備。在基于ZYNQ的嵌入式操作系統(tǒng)下,應(yīng)用程序是不能夠直接訪問FPGA中的硬件邏輯資源的。因而應(yīng)用程序需要通過使用內(nèi)核的應(yīng)用程序編程接口或系統(tǒng)調(diào)用間接與FPGA硬件邏輯進(jìn)行交互[6]。使用HLS[7]技術(shù)綜合而成的硬件加速IP屬于硬件邏輯資源,因此需要設(shè)計(jì)VDMA驅(qū)動(dòng)程序,使應(yīng)用程序方便控制HLS硬件邏輯資源。AXI VDMA結(jié)構(gòu)框圖如圖2所示。通過圖2可知,VDMA驅(qū)動(dòng)程序?qū)嵸|(zhì)上是通過AXI4?Lite接口向VDMA IP中不同功能的寄存器進(jìn)行賦值實(shí)現(xiàn)[8]。
2.3 ?應(yīng)用軟件設(shè)計(jì)
通過移植Qt(圖形界面庫)及OpenCV[9](計(jì)算機(jī)視覺庫),搭建視頻采集與顯示界面如圖3所示。
視頻流數(shù)據(jù)的處理流程圖如圖4所示。由流程圖可知,視頻圖像采集后,先進(jìn)行軟件的預(yù)處理,接著通過VDMA的MM2S數(shù)據(jù)通道傳輸至HLS硬件加速IP進(jìn)行處理,最后通過VDMA的S2MM數(shù)據(jù)通道返回用戶空間進(jìn)行下一步處理。
為了對搭建的視頻處理系統(tǒng)進(jìn)行功能及性能測試,對采集到的視頻圖像進(jìn)行邊緣檢測,分別以軟件和軟硬件結(jié)合的方式予以實(shí)現(xiàn)。邊緣檢測是圖像處理中的基本問題,可以大幅度地減少數(shù)據(jù)量,保留圖像重要的結(jié)構(gòu)屬性。這里實(shí)現(xiàn)的是Sobel[10]邊緣檢測算法,效果對比如圖5所示。
針對分辨率為640×480的視頻數(shù)據(jù)進(jìn)行處理,獲得處理速度如表1所示。由表中結(jié)果可以看出,采用軟硬件結(jié)合設(shè)計(jì)方法實(shí)現(xiàn)的圖像處理算法效果不變,但是處理速度上有了很大提升。在本次圖像邊緣檢測實(shí)驗(yàn)中,軟硬件協(xié)同處理與純軟件處理相比速度提高了10.98倍。
針對嵌入式視覺系統(tǒng)開發(fā)中ARM與FPGA傳統(tǒng)開發(fā)方案的缺點(diǎn),本文提出基于ZYNQ芯片的實(shí)時(shí)視頻處理系統(tǒng),不僅為視頻的采集、處理與顯示提供完整的實(shí)現(xiàn)方案,而且應(yīng)用軟硬件協(xié)同設(shè)計(jì)方法,充分發(fā)揮ARM+FPGA體系結(jié)構(gòu)對于實(shí)現(xiàn)復(fù)雜圖像處理算法的優(yōu)勢,為進(jìn)一步開發(fā)復(fù)雜功能的嵌入式視覺系統(tǒng)奠定了基礎(chǔ)。
參考文獻(xiàn)
[1] 鄧健峰,謝云.基于FPGA+ARM的視頻采集平臺設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(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高速圖像采集與實(shí)時(shí)處理系統(tǒng)[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的視頻處理系統(tǒng)框架設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與發(fā)展,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嵌入式系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2016.
HE Bin, ZHANG Yanhui. Design and implementation of Xilinx Zynq?7000 embedded system [M]. Beijing: Publishing House of Electronics Industry, 2016.
[5] 陸佳華,潘祖龍,彭競宇.嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,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的行人檢測系統(tǒng)軟硬件協(xié)同實(shí)現(xiàn)[D].大連:大連海事大學(xué),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].北京:電子工業(yè)出版社,2015.
MAO Xingyun, LENG Xuefei. Getting started with OpenCV3 programming [M]. Beijing: Publishing House of Electronics Industry, 2015.
[10] 沈德海,侯建,鄂旭,等.基于Sobel的多方向算子模板邊緣檢測算法[J].現(xiàn)代電子技術(shù),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.