《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > Vivado HLS嵌入式實(shí)時(shí)圖像處理系統(tǒng)的構(gòu)建與實(shí)現(xiàn)
Vivado HLS嵌入式實(shí)時(shí)圖像處理系統(tǒng)的構(gòu)建與實(shí)現(xiàn)
2016年電子技術(shù)應(yīng)用第9期
張艷輝1,郭洺宇2,何 賓1
1.北京化工大學(xué) 信息科學(xué)與技術(shù)學(xué)院,北京100029;2.北京衛(wèi)星環(huán)境工程研究所,北京100094
摘要: 傳統(tǒng)的基于CPU、GPU和DSP的處理平臺(tái)難以滿足圖像實(shí)時(shí)處理的要求,而FPGA在并行圖像處理上有著獨(dú)一無二的優(yōu)勢(shì),在性能和成本之間提供更加靈活的選擇。通過Xilinx最新的Vivado HLS工具,設(shè)計(jì)實(shí)現(xiàn)了可變參數(shù)的拉普拉斯算子圖像濾波算法,并且在ZYNQ-7000 SoC上構(gòu)建了可視化的實(shí)時(shí)嵌入式圖像處理系統(tǒng)。實(shí)驗(yàn)結(jié)果表明,系統(tǒng)可以實(shí)現(xiàn)不同的圖像處理算法,很好地滿足了圖像處理的實(shí)時(shí)性、高性能、低成本要求,對(duì)未來高性能圖像處理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)提供了很好的借鑒。
中圖分類號(hào): TP368.2
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.09.030
中文引用格式: 張艷輝,郭洺宇,何賓. Vivado HLS嵌入式實(shí)時(shí)圖像處理系統(tǒng)的構(gòu)建與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2016,42(9):115-117,121.
英文引用格式: Zhang Yanhui,Guo Mingyu,He Bin. Construction and implementation of Vivado HLS embedded real-time image processing system[J].Application of Electronic Technique,2016,42(9):115-117,121.
Construction and implementation of Vivado HLS embedded real-time image processing system
Zhang Yanhui1,Guo Mingyu2,He Bin1
1.College of Information Science and Technology,Beijing University of Chemical Technology,Beijing 100029,China; 2.Beijing Institute of Satellite Environment,Beijing 100094,China
Abstract: Traditional processing platforms which are based on CPU,GPU and DSP cannot meet the requirements in real-time processing. FPGA has unique advantages in parallel image processing and provides a much more flexible option between performance and power consumption. By using Vivado High Level Synthesis(HLS),tool of Xilinx,a variable parameter laplacian image filter algorithm has been implemented. And a kind of real-time and visual embedded image processing system is constructed on the ZYNQ-7000 SoC. The experimental results of this system verify different image processing algorithm can be implemented easily on this platform,requirements of real-time,high performance and low cost can be satisfied well. This design provides reference for further high performance image processing system.
Key words : Vivado HLS;image processing;Laplacian;ZYNQ-7000;embedded Linux;Qt

0 引言

  近年來,由于成像技術(shù)的不斷進(jìn)步以及圖像應(yīng)用領(lǐng)域的拓寬,數(shù)字圖像包含的數(shù)據(jù)量與日俱增,圖像處理算法也越來越復(fù)雜[1]。目前應(yīng)用普遍的數(shù)字信號(hào)處理器(Digital Signal Processor,DSP)和圖形處理器(Graphics Processing Unit,GPU)技術(shù)雖然在實(shí)現(xiàn)圖像處理上有著廉價(jià)、易于編程的優(yōu)點(diǎn),但是在性能、功耗、實(shí)時(shí)性方面,它們與FPGA相比仍有巨大的差距,難以滿足嵌入式圖像領(lǐng)域不斷增長(zhǎng)的靈活性、高性能、低功耗的要求。大量研究表明,采用FPGA實(shí)現(xiàn)圖像處理能夠獲得較高的計(jì)算性能。因此,從計(jì)算性能、實(shí)時(shí)性的角度考慮,F(xiàn)PGA是嵌入式圖像處理應(yīng)用的理想選擇方案[2]。

  Xilinx公司的ZYNQ-7000系列產(chǎn)品集成了最新工藝的ARM Cortex-A9雙核處理器與高性能的FPGA。作為新一代的可編程片上系統(tǒng),ZYNQ-7000 SoC非常適合于計(jì)算密集、功能豐富的嵌入式應(yīng)用設(shè)計(jì)。Xilinx公司的Vivado HLS工具將C語言、C++以及系統(tǒng)C語言引入到可編程邏輯設(shè)計(jì)中,而無須通過傳統(tǒng)的硬件描述語言編寫復(fù)雜的程序,大大地加速了IP創(chuàng)建,滿足了處理算法的靈活性[3]。設(shè)計(jì)利用Vivado HLS工具實(shí)現(xiàn)了可變參數(shù)的拉普拉斯算子圖像濾波算法,將生成的IP加入到ZYNQ-7000的可編程邏輯部分,用于處理OV7670攝像頭采集到的圖像數(shù)據(jù)。移植Ubuntu Linux桌面系統(tǒng)到ZYNQ-7000雙核處理器中,利用Qt工具編寫上位機(jī)人機(jī)交互控制界面與下位機(jī)顯示程序,實(shí)現(xiàn)了嵌入式Linux可視化實(shí)時(shí)圖像處理系統(tǒng)。

1 系統(tǒng)總體結(jié)構(gòu)

  ZYNQ-7000嵌入式數(shù)字圖像處理系統(tǒng)結(jié)構(gòu)框圖如圖1所示,系統(tǒng)主要由OV7670攝像頭、ZYNQ-7000 SoC、數(shù)據(jù)存儲(chǔ)單元DDR3、HDMI顯示器以及上位機(jī)等組成。ZYNQ-7000 SoC作為整個(gè)實(shí)時(shí)處理系統(tǒng)的核心,包括處理系統(tǒng)(Processing System,PS)和可編程邏輯(Programmable Logic,PL)兩部分,其中PS部分主要包含了雙ARM Cortex-A9核,PL部分包含了傳統(tǒng)意義的DSP資源和FPGA邏輯單元。

圖像 001.png

  1.1 PL部分實(shí)現(xiàn)的功能

  可編程邏輯PL部分實(shí)現(xiàn)的主要功能如下:

  (1)從OV7670攝像頭中獲取圖像數(shù)據(jù),并通過視頻存儲(chǔ)器直接訪問(Video Direct Memory Access,VDMA)傳輸至DDR3存儲(chǔ)芯片中存儲(chǔ);

  (2)將DDR3中存儲(chǔ)的圖像數(shù)據(jù)通過VDMA傳輸?shù)娇勺儏?shù)的拉普拉斯濾波算法IP模塊進(jìn)行圖像處理,并把處理生成的圖像數(shù)據(jù)通過VDMA重新傳輸?shù)紻DR3;

  (3)PL中的顯示模塊配合VDMA構(gòu)成嵌入式Linux的硬件顯示單元。

  圖像采集采用OV7670攝像頭,OV7670圖像傳感器體積小、工作電壓低,提供單片VGA攝像頭和影像處理器的所有功能。通過SCCB 總線控制,可以輸出整幀、子采樣、取窗口等方式的各種分辨率的8位影像數(shù)據(jù)。設(shè)計(jì)選用RGB565、VGA640×480作為輸出格式,將相應(yīng)的寄存器值通過SCCB控制模塊寫入到寄存器中,并把采集的數(shù)據(jù)通過AXI4 Stream接口協(xié)議寫入到DDR3中。在該設(shè)計(jì)中,通過硬件描述語言實(shí)現(xiàn)SCCB圖像控制與圖像接收模塊的設(shè)計(jì)。

  1.2 PS部分實(shí)現(xiàn)的功能

  處理系統(tǒng)PS部分實(shí)現(xiàn)的主要功能如下:

  (1)運(yùn)行Ubuntu桌面系統(tǒng),為上層應(yīng)用提供操作系統(tǒng)支持;

  (2)調(diào)用編寫的VDMA、HDMI圖像顯示驅(qū)動(dòng)實(shí)現(xiàn)與PL數(shù)據(jù)交互、桌面系統(tǒng)顯示的功能;

  (3)實(shí)現(xiàn)Qt編寫的上層應(yīng)用程序及網(wǎng)絡(luò)編程等。

  如圖1所示,VDMA提供了PL與DDR3存儲(chǔ)器進(jìn)行高速數(shù)據(jù)傳輸?shù)臋C(jī)制。VDMA具有兩個(gè)數(shù)據(jù)端口:MM2S和S2MM。MM2S和S2MM的最大數(shù)據(jù)位寬均為64 bit,緩存區(qū)深度為512 B[4]。其中S2MM端口實(shí)現(xiàn)圖像數(shù)據(jù)從PL向DDR3存儲(chǔ)器傳輸,MM2S端口實(shí)現(xiàn)圖像數(shù)據(jù)從DDR3存儲(chǔ)器向PL傳輸。ARM處理器可以通過通用接口AXI_GP對(duì)VDMA進(jìn)行控制。

2 拉普拉斯算子濾波算法的實(shí)現(xiàn)

  2.1 拉普拉斯算子濾波算法

  拉普拉斯算子是圖像處理技術(shù)中常見的一種增強(qiáng)算子,因?yàn)榫哂行D(zhuǎn)不變性、實(shí)現(xiàn)簡(jiǎn)單等特點(diǎn),被廣泛地應(yīng)用于圖像銳化和高頻增強(qiáng)等算法中。圖像信號(hào)中,高頻分量一般對(duì)應(yīng)于圖像的邊緣輪廓,采用拉普拉斯算子的圖像濾波算法能夠?qū)崿F(xiàn)圖像銳化、增強(qiáng)圖像輪廓清晰度的效果。拉普拉斯算子是最簡(jiǎn)單的各向同性微分算子,具有旋轉(zhuǎn)不變性。一個(gè)二維圖像函數(shù)的拉普拉斯變換是各向同性的二階導(dǎo)數(shù),定義為:

  QQ圖片20161115100240.png

  該方程的離散形式為:

  QQ圖片20161115100243.png

  拉普拉斯算子可以表示成模板的形式,如圖2(a)所示,圖2(b)表示其擴(kuò)展模板,圖2(c)和圖2(d)則分別表示其他兩種拉普拉斯的實(shí)現(xiàn)模板。

圖像 002.png

  2.2 Vivado HLS實(shí)現(xiàn)算法編寫

  Vivado HLS利用C語言、C++語言以及系統(tǒng)C語言提供的高級(jí)結(jié)構(gòu)來提高抽象層次,提供數(shù)據(jù)原語方便使用基礎(chǔ)硬件構(gòu)建IP模塊。與使用RTL相比,Vivado HLS代碼更加緊湊,可讀性和可維護(hù)性更加優(yōu)良,可以更輕松地實(shí)現(xiàn)各種接口協(xié)議,從簡(jiǎn)單的FIFO接口到完整的AXI4 Stream,滿足不同模塊間的數(shù)據(jù)通信。

  Vivado HLS實(shí)現(xiàn)拉普拉斯算法流程如圖3所示。數(shù)據(jù)處理按照?qǐng)D中箭頭依次進(jìn)行,數(shù)據(jù)在單個(gè)單元中并行運(yùn)算或在不同單元間并行移動(dòng)。每個(gè)時(shí)鐘周期AXI4 Stream接口將24 bit的一個(gè)像素?cái)?shù)據(jù)送入算法模塊中,先經(jīng)過灰度處理,然后存入2×640的行緩存中,行緩存和新的數(shù)據(jù)構(gòu)成3×3的窗口數(shù)據(jù),窗口的9個(gè)數(shù)據(jù)和AXI_GP接口傳輸進(jìn)來的拉普拉斯算子參數(shù)進(jìn)行運(yùn)算得到一個(gè)新的8 bit像素?cái)?shù)據(jù)送回到DDR3中。

圖像 003.png

  編寫的算法在XC7Z010器件上的資源占用率如表1所示,可以看出,只用了PL很少的資源便實(shí)現(xiàn)了圖像濾波算法。

圖像 007.png

  2.3 Qt實(shí)現(xiàn)參數(shù)控制程序

  良好的人機(jī)交互功能是嵌入式系統(tǒng)重要的一部分[5]。設(shè)計(jì)采用Qt Creator開發(fā)工具在PC上實(shí)現(xiàn)了控制端應(yīng)用程序,如圖4所示。PC通過以太網(wǎng)與下位機(jī)進(jìn)行連接,在控制端輸入不同的拉普拉斯算子,系統(tǒng)會(huì)產(chǎn)生不同的濾波效果,并將濾波后的圖像顯示在下位機(jī)的HDMI顯示器上。

圖像 004.png

3 設(shè)計(jì)仿真與系統(tǒng)測(cè)試

  3.1 Vivado HLS仿真

  Vivado HLS除了將高效的編程代碼轉(zhuǎn)換為IP以外,還提供了另一項(xiàng)重要功能:C語言仿真和C/RTL協(xié)同仿真。C語言仿真中C/C++的編譯和執(zhí)行與常見的C/C++程序相同,具有良好的可讀性和高效性。C/RTL協(xié)同仿真會(huì)根據(jù)C/C++測(cè)試平臺(tái)自動(dòng)生成RTL測(cè)試平臺(tái),設(shè)置并執(zhí)行RTL仿真,檢查實(shí)現(xiàn)方案的正確性。C語言仿真測(cè)試代碼如下:

  IplImage* src=cvLoadImage("lena.jpg");//加載測(cè)試圖片

  AXI_STREAM  src_axi, dst_axi;//定義流數(shù)據(jù)類型變量

  IplImage2AXIvideo(src, src_axi);

  //圖片轉(zhuǎn)換為流數(shù)據(jù)類型

  Laplasian_fil(&lap00,&lap01,&lap02,&lap10,&lap11,

  &lap12,&lap20,&lap21,&lap22,src_axi, dst_axi);

  //濾波算法主函數(shù)

  AXIvideo2IplImage(dst_axi, dst);

  //流數(shù)據(jù)類型轉(zhuǎn)換為圖片

  cvSaveImage("lena_result.jpg", dst);//保存圖片

  測(cè)試程序首先將本地用于測(cè)試的圖片轉(zhuǎn)換為AXI4 Stream接口協(xié)議數(shù)據(jù),并設(shè)置拉普拉斯算子的值,然后將圖片數(shù)據(jù)和拉普拉斯算子以參數(shù)的形式送入到圖像濾波算法中,濾波后的圖片會(huì)以jpg的形式存入本地。測(cè)試原圖片及生成圖片如圖5所示。

圖像 005.png

  3.2 系統(tǒng)測(cè)試

  測(cè)試系統(tǒng)采用Xilinx公司提供的ZyBo開發(fā)板,該開發(fā)板搭載了XC7Z010主芯片,擴(kuò)展外設(shè)通過PMOD接口與OV7670攝像頭進(jìn)行連接,PC通過板載以太網(wǎng)接口和串行接口與ZyBo通信,HDMI顯示運(yùn)行的Ubuntu桌面系統(tǒng)。

  控制端輸入圖2中不同的拉普拉斯算子得到的處理結(jié)果如圖6所示,結(jié)果完全滿足每秒30幀、RGB640×480格式圖像實(shí)時(shí)濾波的要求。

圖像 006.png

4 結(jié)論

  基于ZYNQ-7000異構(gòu)架構(gòu)的圖像處理系統(tǒng)不但可以實(shí)現(xiàn)嵌入式操作系統(tǒng)相關(guān)的任務(wù),如圖形界面、用戶輸入、網(wǎng)絡(luò)、DDR3控制等,還可以提供高性能實(shí)時(shí)圖像處理的功能[6]。采用Xilinx最新的Vivado HLS工具進(jìn)行FPGA高層次設(shè)計(jì)對(duì)圖像算法進(jìn)行加速,能夠有效提高設(shè)計(jì)效率,并且能夠快速生成工業(yè)標(biāo)準(zhǔn)的IP核,有利于進(jìn)一步實(shí)現(xiàn)系統(tǒng)集成。設(shè)計(jì)的實(shí)驗(yàn)和驗(yàn)證結(jié)果表明了基于ZYNQ-7000異構(gòu)架構(gòu)和Vivado HLS工具的實(shí)時(shí)圖像處理系統(tǒng)易于移植,便于針對(duì)特定應(yīng)用定制,為未來的高性能圖像處理提供了較高的工程應(yīng)用與參考價(jià)值。

  參考文獻(xiàn)

  [1] 何賓.Xilinx FPGA設(shè)計(jì)權(quán)威指南[M].北京:清華大學(xué)出版社,2014.

  [2] 陸佳華,江舟.嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2013.

  [3] 陸啟帥,陸彥婷,王地.Xilinx Zynq SoC與嵌入式Linux設(shè)計(jì)實(shí)戰(zhàn)指南[M].北京:清華大學(xué)出版社,2014.

  [4] KARRAS K,HRICA J.Vivado HLS推動(dòng)協(xié)議處理系統(tǒng)蓬勃發(fā)展[DB/OL].(2014-09-16)[2016-03-01].http://xilinx.eetrend.com/article/7676.

  [5] 梁柱華,顧新.嵌入式Linux實(shí)時(shí)性的研究[J].電子科技,2005(11):57-60,64.

  [6] 焦再強(qiáng).基于Zynq-7000的嵌入式數(shù)字圖像處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].太原:太原理工大學(xué),2015.

  


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。