倪宏超,欒 峰,丁 山,佘黎煌,張立立
(東北大學 計算機科學與工程學院,遼寧 沈陽 110169)
隨著全可編程SoC容量和性能的不斷提高,全面可編程技術已經應用到不同的領域,如通信、汽車電子、大數據處理、機器學習、計算機視覺等。作為全球知名的可編程邏輯器件供應商,Xilinx公司推出的ZYNQ-7000全可編程SoC不但提供了FPGA的靈活性和可擴展性,而且提供了與專用集成電路和專用標準產品相近的性能,其功耗小、易用性強。ZYNQ-7000平臺可以應用在包括汽車駕駛員輔助系統、工業組網、機器視覺、醫療診斷和成像等諸多領域[1-4]。
圖像采集與處理的方案在單片機、DSP和FPGA上都實施過,但這些方案存在功能較單一、可擴展性差、應用有局限性等缺點,而且理論知識體系分散,不利于學生學習和理解,使得學生很難在短時間內形成并掌握一個清晰的嵌入式開發技術體系,因此采用ZYNQ-7000系列平臺,通過軟硬件協同設計可以實現兩路攝像頭數據的實時采集。基于圖像采集實驗在ZYNQ-7000平臺上完成全過程的嵌入式開發與設計實驗教學,學生可以切實體驗到每個實驗實現的具體過程,并且真正理解嵌入式開發的技術內涵。
硬件平臺的實現主要包括以下幾部分:兩個OV5640 CMOS芯片,用來實現圖像的采集;ZYNQ-7000系列開發板,用來實現攝像頭采集、數據存儲與傳遞以及完成圖像處理算法;HDMI顯示器,用來顯示攝像頭采集的數據以及經ZYNQ開發板處理之后的結果。
ZYNQ-7000系列基于Xilinx全可編程的擴展處理平臺結構,芯片內部集成ARM公司雙核Cortex-A9處理器的處理系統(PS端)和基于Xilinx邏輯資源的可編程邏輯系統(PL端)。芯片內擁有豐富的資源,PS端的ARM Cortex-A9處理器包含DDR控制器、SPI控制器、SMC控制器等多種控制器接口,同時提供SD/SDIO控制器、UART控制器等在內的多種I/O接口。PL端包含可配置邏輯塊、數字信號處理資源以及模數轉換器、HDMI接口、擴展接口等,同時芯片內部借助AXI4協議,數據帶寬高達4.8GB/s,實現PS與PL端的高速互聯,這些都為用ZYNQ-7000平臺實現嵌入式圖像傳輸系統提供有力的支撐[5]。
本實驗中采用兩片美國OmniVision公司的CMOS圖像傳感器OV5640,OV5640芯片支持DVP和MIPI接口。為保證OV5640正常工作,需要依次實現以下時序要求:
(1)ResetB拉低,復位OV5640,PWND引腳拉高;
(2)DOVDD和AVDD兩路最好同時上電;
(3)等電源穩定5ms后,拉低PWND;
(4)PWND置低1ms后,拉高ResetB;
(5)20ms后,初始化OV5640的SCCB寄存器設置。
另外,需要對寄存器進行配置,本實驗通過FPGA的I2C接口來配置[6]。
軟核具有靈活性高、成本低、使用方便的特點,為嵌入式圖像采集提供有力的支撐。ZYNQ-7000芯片具有異構架構的優勢,Xilinx通過使用FPGA芯片內所提供的設計資源,將軟核進行封裝。本實驗通過FPGA搭建的硬件系統基本流程如圖1所示。

圖1 硬件系統基本流程
OV5640芯片采集的數據通過FPGA軟核VDMA1、VDMA2(在搭建的過程中開啟寫使能)將數據寫入與PS端相連的DDR中,ARM可以針對存儲在DDR中的數據完成各種圖像處理與分析算法,4個讀使能的VDMA在DDR中讀取相應的數據,圖1中大方框可以將其抽象為HDMI顯示器,即4個VDMA從內存中讀取的數據在HDMI顯示器中顯示的結果和圖1中大方框一致,其中讀VDMA4的數據經過邊緣檢測算法處理后再輸出。四路讀VDMA獲取的數據均為符合AXI4協議的32位數據,經過32位數據轉24位RGB888格式數據后,根據HDMI輸出協議,在相應的時序控制下,依次轉換為DVI數據輸出到HDMI顯示器中。
在圖1中,硬件直接接收來自OV5640的視頻流數據輸入,需要對攝像頭完成相應的時序操作。由于Xilinx公司提供的軟核IP并沒有驅動OV5640芯片,因此需要單獨編寫驅動程序,形成相應的硬件電路,滿足攝像頭工作的時序要求。OV5640芯片硬件系統如圖2所示。

圖2 OV5640芯片硬件系統
圖2中除了包括對OV5640芯片的時序驅動電路以外,還添加8位轉16位模塊以及16位轉32位模塊,添加這兩個模塊與將OV5640芯片配置為GRB565格式采集數據有直接關系。將OV5640配置為RGB565格式,即OV5640芯片用16位描述一個像素點,而OV5640芯片每次只能并行傳輸8位數據,即芯片傳輸兩組數據才描述一個像素點,因此在用FPGA搭建硬件電路時編寫8位轉16位模塊來描述一個像素點;同時,Xilinx軟核支持AXI4協議的數據快速傳輸,需要將OV5640采集的16位數據轉換為32位數據,此功能在16位轉32位AXI4模塊中完成[7-9]。
ZYNQ-7000平臺系統的實現主要包括兩部分:處理器部分的控制軟件和可編程邏輯部分的硬件模塊[10]。
通過FPGA的I2C接口實現對OV5640芯片的寄存器設置。我們采用兩路I2C實現對兩路OV5640芯片的設置操作,根據OV5640芯片的操作方式,將配置寄存器的參數寫入數組中,并將數組中的值通過I2C接口傳遞到OV5640芯片,完成0V5640芯片RGB565、30FPS、720P輸出格式的設置。
實驗中共用到6個VDMA軟核,其中2個VDMA開啟寫使能功能,負責將OV5640芯片捕獲的數據傳輸到DDR中;余下4個VDMA開啟讀使能功能,從DDR中讀取數據并傳輸到HDMI顯示器。
在VDMA軟核配置模塊中,更加突出地體現ARM硬核對FPGA的控制作用。FPGA硬件系統搭建的過程中,調用的軟核均采用AXI4協議進行數據通信,AXI4協議除了包含適用于視頻流數據快速傳輸的AXI4-Stream協議,還包含適用于ARM控制FPGA的AXI4-Lite協議。ARM通過AXI-Lite接口實現對FPGA軟核的控制,在本實驗中包括對初始化、寫入內存地址、讀取內存地址等的配置操作[11]。
圖3中描述了4個VDMA在HDMI顯示器上的分布,在ARM中,將寫VDMA1寫入的數據通過讀VDMA1顯示,將寫VDMA2寫入的數據通過讀VDMA2顯示,讀VDMA3顯示的是寫VDMA1寫入內存中的數據在ARM中實現邊緣檢測之后的輸出,讀VDMA4顯示的是寫VDMA2寫入內存的數據在FPGA中實現邊緣檢測之后的輸出。雖然讀VDMA3與讀VDMA4顯示的均為邊緣檢測之后的結果,但是兩者實現邊緣檢測的硬件平臺不同,分別為基于ARM的軟件算法以及基于FPGA的硬件算法。

圖3 HDMI上4個讀VDMA模塊的分布
邊緣檢測算法要求首先找到圖片中物體的邊緣,由于邊緣處顏色變化一般比較明顯,在工程上一般借助卷積濾波器實現,卷積濾波器相當于求導的離散版本。針對圖像進行邊緣檢測,有多種不同的濾波器算子,我們采用如圖4所示的Sobel濾波器算子,分別針對圖像水平方向的邊緣以及豎直方向的邊緣,求和得出圖像的邊緣[12]。

圖4 Sobel邊緣檢測算子
系統運行后顯示效果如圖5所示,左上方框顯示的為左目攝像頭采集的圖像;右上方框顯示的為右目攝像頭采集的圖像;左下方框顯示的是針對左上方框顯示圖像,在ARM中運行嵌入式軟件邊緣檢測算法后的結果;右下方框顯示的是針對右上方框顯示圖像,在FPGA中運行嵌入式硬件邊緣檢測算法后的結果。

圖5 嵌入式圖像處理系統運行結果
基于ZYNQ-7000全可編程可擴展處理平臺的嵌入式圖像采集與處理系統,較好地完成了圖像的采集、傳輸與處理任務,充分體現了ARM+FPGA異構架構的優勢,為ZYNQ-7000系列芯片用于嵌入式雙目測距、機器人視覺仿生等圖像實時分析與處理相關的嵌入式應用提供了有力的支撐。
基于ZYNQ-7000的攝像頭采集與處理系統的知識體系和實驗內容,已經在電子信息工程專業2013級的畢業設計和2014級的實驗實踐類課程中開展。很多學生對這套實驗所涉及的內容很感興趣,教學效果調查表明學生“非常滿意”,另外,從已畢業學生的反饋中了解到,他們在畢業后的研究和工作中會從這類實驗中獲益。基于ZYNQ的嵌入式設計實驗將理論技術和實踐教學有機結合,激發了學生的實踐熱情和創新思維,以興趣作為學生學習的原動力,有效地推動了創新型人才的培養。
參考文獻:
[1]楊曉安, 羅杰, 包文博. 基于Xilinx Zynq的物理測量系統設計與實現[J]. 現代電子技術, 2014, 37(15): 123-126.
[2]霍芋霖, 符意德. 基于Zynq的人臉檢測設計[J]. 計算機科學, 2016, 43(10): 322-325.
[3]王浩宇, 漆晶, 譚歆. 基于Zynq-7000的視頻采集平臺設計[J]. 工業控制計算機, 2017, 30(4): 55-59.
[4]趙可可, 柴志雷, 吳東. 一種基于Zynq的ROS軟硬件協同計算架構設計與實現[J]. 微電子學與計算機, 2017, 34(9): 87-91.
[5]蔚瑞華, 余有靈, 張偉, 等. 基于模塊化思想的FPGA綜合實驗項目設計[J]. 實驗技術與管理, 2016, 33(5): 44-47.
[6]陳德美. 基于CMOS圖像傳感器的高速圖像采集與傳輸系統的研究設計[D]. 杭州: 浙江工業大學, 2013.
[7]楊東. 基于ZYNQ的雙目圖像采集與處理系統的研究[D]. 北京:中國地質大學, 2015.
[8]姬生毅. 基于Zynq的嵌入式數字圖像傳輸系統的設計與實現[D]. 西安: 西安電子科技大學, 2014.
[9]焦再強. 基于Zynq-7000的嵌入式數字圖像處理系統設計與實現[D]. 太原: 太原理工大學, 2015.
[10]楊繼森, 張靜, 朱革, 等. 基于ARM Cortex平臺的嵌入式系統課程虛擬實驗平臺設計[J].實驗技術與管理, 2014, 31(7): 97-101.
[11]程照明, 蔡德鈞. 系統芯片的軟硬件協同設計技術[J]. 艦船電子工程, 2004(3): 11-15.
[12]蔣偉, 楊庭庭, 劉亞威, 等. 數字圖像處理研究性實驗教學的改革與實踐: 基于分數階偏微分的圖像邊緣檢測[J]. 實驗技術與管理, 2013, 30(6): 124-128.