倪宏超,欒 峰,丁 山,佘黎煌,張立立
(東北大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,遼寧 沈陽(yáng) 110169)
隨著全可編程SoC容量和性能的不斷提高,全面可編程技術(shù)已經(jīng)應(yīng)用到不同的領(lǐng)域,如通信、汽車電子、大數(shù)據(jù)處理、機(jī)器學(xué)習(xí)、計(jì)算機(jī)視覺(jué)等。作為全球知名的可編程邏輯器件供應(yīng)商,Xilinx公司推出的ZYNQ-7000全可編程SoC不但提供了FPGA的靈活性和可擴(kuò)展性,而且提供了與專用集成電路和專用標(biāo)準(zhǔn)產(chǎn)品相近的性能,其功耗小、易用性強(qiáng)。ZYNQ-7000平臺(tái)可以應(yīng)用在包括汽車駕駛員輔助系統(tǒng)、工業(yè)組網(wǎng)、機(jī)器視覺(jué)、醫(yī)療診斷和成像等諸多領(lǐng)域[1-4]。
圖像采集與處理的方案在單片機(jī)、DSP和FPGA上都實(shí)施過(guò),但這些方案存在功能較單一、可擴(kuò)展性差、應(yīng)用有局限性等缺點(diǎn),而且理論知識(shí)體系分散,不利于學(xué)生學(xué)習(xí)和理解,使得學(xué)生很難在短時(shí)間內(nèi)形成并掌握一個(gè)清晰的嵌入式開發(fā)技術(shù)體系,因此采用ZYNQ-7000系列平臺(tái),通過(guò)軟硬件協(xié)同設(shè)計(jì)可以實(shí)現(xiàn)兩路攝像頭數(shù)據(jù)的實(shí)時(shí)采集?;趫D像采集實(shí)驗(yàn)在ZYNQ-7000平臺(tái)上完成全過(guò)程的嵌入式開發(fā)與設(shè)計(jì)實(shí)驗(yàn)教學(xué),學(xué)生可以切實(shí)體驗(yàn)到每個(gè)實(shí)驗(yàn)實(shí)現(xiàn)的具體過(guò)程,并且真正理解嵌入式開發(fā)的技術(shù)內(nèi)涵。
硬件平臺(tái)的實(shí)現(xiàn)主要包括以下幾部分:兩個(gè)OV5640 CMOS芯片,用來(lái)實(shí)現(xiàn)圖像的采集;ZYNQ-7000系列開發(fā)板,用來(lái)實(shí)現(xiàn)攝像頭采集、數(shù)據(jù)存儲(chǔ)與傳遞以及完成圖像處理算法;HDMI顯示器,用來(lái)顯示攝像頭采集的數(shù)據(jù)以及經(jīng)ZYNQ開發(fā)板處理之后的結(jié)果。
ZYNQ-7000系列基于Xilinx全可編程的擴(kuò)展處理平臺(tái)結(jié)構(gòu),芯片內(nèi)部集成ARM公司雙核Cortex-A9處理器的處理系統(tǒng)(PS端)和基于Xilinx邏輯資源的可編程邏輯系統(tǒng)(PL端)。芯片內(nèi)擁有豐富的資源,PS端的ARM Cortex-A9處理器包含DDR控制器、SPI控制器、SMC控制器等多種控制器接口,同時(shí)提供SD/SDIO控制器、UART控制器等在內(nèi)的多種I/O接口。PL端包含可配置邏輯塊、數(shù)字信號(hào)處理資源以及模數(shù)轉(zhuǎn)換器、HDMI接口、擴(kuò)展接口等,同時(shí)芯片內(nèi)部借助AXI4協(xié)議,數(shù)據(jù)帶寬高達(dá)4.8GB/s,實(shí)現(xiàn)PS與PL端的高速互聯(lián),這些都為用ZYNQ-7000平臺(tái)實(shí)現(xiàn)嵌入式圖像傳輸系統(tǒng)提供有力的支撐[5]。
本實(shí)驗(yàn)中采用兩片美國(guó)OmniVision公司的CMOS圖像傳感器OV5640,OV5640芯片支持DVP和MIPI接口。為保證OV5640正常工作,需要依次實(shí)現(xiàn)以下時(shí)序要求:
(1)ResetB拉低,復(fù)位OV5640,PWND引腳拉高;
(2)DOVDD和AVDD兩路最好同時(shí)上電;
(3)等電源穩(wěn)定5ms后,拉低PWND;
(4)PWND置低1ms后,拉高ResetB;
(5)20ms后,初始化OV5640的SCCB寄存器設(shè)置。
另外,需要對(duì)寄存器進(jìn)行配置,本實(shí)驗(yàn)通過(guò)FPGA的I2C接口來(lái)配置[6]。
軟核具有靈活性高、成本低、使用方便的特點(diǎn),為嵌入式圖像采集提供有力的支撐。ZYNQ-7000芯片具有異構(gòu)架構(gòu)的優(yōu)勢(shì),Xilinx通過(guò)使用FPGA芯片內(nèi)所提供的設(shè)計(jì)資源,將軟核進(jìn)行封裝。本實(shí)驗(yàn)通過(guò)FPGA搭建的硬件系統(tǒng)基本流程如圖1所示。
圖1 硬件系統(tǒng)基本流程
OV5640芯片采集的數(shù)據(jù)通過(guò)FPGA軟核VDMA1、VDMA2(在搭建的過(guò)程中開啟寫使能)將數(shù)據(jù)寫入與PS端相連的DDR中,ARM可以針對(duì)存儲(chǔ)在DDR中的數(shù)據(jù)完成各種圖像處理與分析算法,4個(gè)讀使能的VDMA在DDR中讀取相應(yīng)的數(shù)據(jù),圖1中大方框可以將其抽象為HDMI顯示器,即4個(gè)VDMA從內(nèi)存中讀取的數(shù)據(jù)在HDMI顯示器中顯示的結(jié)果和圖1中大方框一致,其中讀VDMA4的數(shù)據(jù)經(jīng)過(guò)邊緣檢測(cè)算法處理后再輸出。四路讀VDMA獲取的數(shù)據(jù)均為符合AXI4協(xié)議的32位數(shù)據(jù),經(jīng)過(guò)32位數(shù)據(jù)轉(zhuǎn)24位RGB888格式數(shù)據(jù)后,根據(jù)HDMI輸出協(xié)議,在相應(yīng)的時(shí)序控制下,依次轉(zhuǎn)換為DVI數(shù)據(jù)輸出到HDMI顯示器中。
在圖1中,硬件直接接收來(lái)自O(shè)V5640的視頻流數(shù)據(jù)輸入,需要對(duì)攝像頭完成相應(yīng)的時(shí)序操作。由于Xilinx公司提供的軟核IP并沒(méi)有驅(qū)動(dòng)OV5640芯片,因此需要單獨(dú)編寫驅(qū)動(dòng)程序,形成相應(yīng)的硬件電路,滿足攝像頭工作的時(shí)序要求。OV5640芯片硬件系統(tǒng)如圖2所示。
圖2 OV5640芯片硬件系統(tǒng)
圖2中除了包括對(duì)OV5640芯片的時(shí)序驅(qū)動(dòng)電路以外,還添加8位轉(zhuǎn)16位模塊以及16位轉(zhuǎn)32位模塊,添加這兩個(gè)模塊與將OV5640芯片配置為GRB565格式采集數(shù)據(jù)有直接關(guān)系。將OV5640配置為RGB565格式,即OV5640芯片用16位描述一個(gè)像素點(diǎn),而OV5640芯片每次只能并行傳輸8位數(shù)據(jù),即芯片傳輸兩組數(shù)據(jù)才描述一個(gè)像素點(diǎn),因此在用FPGA搭建硬件電路時(shí)編寫8位轉(zhuǎn)16位模塊來(lái)描述一個(gè)像素點(diǎn);同時(shí),Xilinx軟核支持AXI4協(xié)議的數(shù)據(jù)快速傳輸,需要將OV5640采集的16位數(shù)據(jù)轉(zhuǎn)換為32位數(shù)據(jù),此功能在16位轉(zhuǎn)32位AXI4模塊中完成[7-9]。
ZYNQ-7000平臺(tái)系統(tǒng)的實(shí)現(xiàn)主要包括兩部分:處理器部分的控制軟件和可編程邏輯部分的硬件模塊[10]。
通過(guò)FPGA的I2C接口實(shí)現(xiàn)對(duì)OV5640芯片的寄存器設(shè)置。我們采用兩路I2C實(shí)現(xiàn)對(duì)兩路OV5640芯片的設(shè)置操作,根據(jù)OV5640芯片的操作方式,將配置寄存器的參數(shù)寫入數(shù)組中,并將數(shù)組中的值通過(guò)I2C接口傳遞到OV5640芯片,完成0V5640芯片RGB565、30FPS、720P輸出格式的設(shè)置。
實(shí)驗(yàn)中共用到6個(gè)VDMA軟核,其中2個(gè)VDMA開啟寫使能功能,負(fù)責(zé)將OV5640芯片捕獲的數(shù)據(jù)傳輸?shù)紻DR中;余下4個(gè)VDMA開啟讀使能功能,從DDR中讀取數(shù)據(jù)并傳輸?shù)紿DMI顯示器。
在VDMA軟核配置模塊中,更加突出地體現(xiàn)ARM硬核對(duì)FPGA的控制作用。FPGA硬件系統(tǒng)搭建的過(guò)程中,調(diào)用的軟核均采用AXI4協(xié)議進(jìn)行數(shù)據(jù)通信,AXI4協(xié)議除了包含適用于視頻流數(shù)據(jù)快速傳輸?shù)腁XI4-Stream協(xié)議,還包含適用于ARM控制FPGA的AXI4-Lite協(xié)議。ARM通過(guò)AXI-Lite接口實(shí)現(xiàn)對(duì)FPGA軟核的控制,在本實(shí)驗(yàn)中包括對(duì)初始化、寫入內(nèi)存地址、讀取內(nèi)存地址等的配置操作[11]。
圖3中描述了4個(gè)VDMA在HDMI顯示器上的分布,在ARM中,將寫VDMA1寫入的數(shù)據(jù)通過(guò)讀VDMA1顯示,將寫VDMA2寫入的數(shù)據(jù)通過(guò)讀VDMA2顯示,讀VDMA3顯示的是寫VDMA1寫入內(nèi)存中的數(shù)據(jù)在ARM中實(shí)現(xiàn)邊緣檢測(cè)之后的輸出,讀VDMA4顯示的是寫VDMA2寫入內(nèi)存的數(shù)據(jù)在FPGA中實(shí)現(xiàn)邊緣檢測(cè)之后的輸出。雖然讀VDMA3與讀VDMA4顯示的均為邊緣檢測(cè)之后的結(jié)果,但是兩者實(shí)現(xiàn)邊緣檢測(cè)的硬件平臺(tái)不同,分別為基于ARM的軟件算法以及基于FPGA的硬件算法。
圖3 HDMI上4個(gè)讀VDMA模塊的分布
邊緣檢測(cè)算法要求首先找到圖片中物體的邊緣,由于邊緣處顏色變化一般比較明顯,在工程上一般借助卷積濾波器實(shí)現(xiàn),卷積濾波器相當(dāng)于求導(dǎo)的離散版本。針對(duì)圖像進(jìn)行邊緣檢測(cè),有多種不同的濾波器算子,我們采用如圖4所示的Sobel濾波器算子,分別針對(duì)圖像水平方向的邊緣以及豎直方向的邊緣,求和得出圖像的邊緣[12]。
圖4 Sobel邊緣檢測(cè)算子
系統(tǒng)運(yùn)行后顯示效果如圖5所示,左上方框顯示的為左目攝像頭采集的圖像;右上方框顯示的為右目攝像頭采集的圖像;左下方框顯示的是針對(duì)左上方框顯示圖像,在ARM中運(yùn)行嵌入式軟件邊緣檢測(cè)算法后的結(jié)果;右下方框顯示的是針對(duì)右上方框顯示圖像,在FPGA中運(yùn)行嵌入式硬件邊緣檢測(cè)算法后的結(jié)果。
圖5 嵌入式圖像處理系統(tǒng)運(yùn)行結(jié)果
基于ZYNQ-7000全可編程可擴(kuò)展處理平臺(tái)的嵌入式圖像采集與處理系統(tǒng),較好地完成了圖像的采集、傳輸與處理任務(wù),充分體現(xiàn)了ARM+FPGA異構(gòu)架構(gòu)的優(yōu)勢(shì),為ZYNQ-7000系列芯片用于嵌入式雙目測(cè)距、機(jī)器人視覺(jué)仿生等圖像實(shí)時(shí)分析與處理相關(guān)的嵌入式應(yīng)用提供了有力的支撐。
基于ZYNQ-7000的攝像頭采集與處理系統(tǒng)的知識(shí)體系和實(shí)驗(yàn)內(nèi)容,已經(jīng)在電子信息工程專業(yè)2013級(jí)的畢業(yè)設(shè)計(jì)和2014級(jí)的實(shí)驗(yàn)實(shí)踐類課程中開展。很多學(xué)生對(duì)這套實(shí)驗(yàn)所涉及的內(nèi)容很感興趣,教學(xué)效果調(diào)查表明學(xué)生“非常滿意”,另外,從已畢業(yè)學(xué)生的反饋中了解到,他們?cè)诋厴I(yè)后的研究和工作中會(huì)從這類實(shí)驗(yàn)中獲益?;赯YNQ的嵌入式設(shè)計(jì)實(shí)驗(yàn)將理論技術(shù)和實(shí)踐教學(xué)有機(jī)結(jié)合,激發(fā)了學(xué)生的實(shí)踐熱情和創(chuàng)新思維,以興趣作為學(xué)生學(xué)習(xí)的原動(dòng)力,有效地推動(dòng)了創(chuàng)新型人才的培養(yǎng)。
參考文獻(xiàn):
[1]楊曉安, 羅杰, 包文博. 基于Xilinx Zynq的物理測(cè)量系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù), 2014, 37(15): 123-126.
[2]霍芋霖, 符意德. 基于Zynq的人臉檢測(cè)設(shè)計(jì)[J]. 計(jì)算機(jī)科學(xué), 2016, 43(10): 322-325.
[3]王浩宇, 漆晶, 譚歆. 基于Zynq-7000的視頻采集平臺(tái)設(shè)計(jì)[J]. 工業(yè)控制計(jì)算機(jī), 2017, 30(4): 55-59.
[4]趙可可, 柴志雷, 吳東. 一種基于Zynq的ROS軟硬件協(xié)同計(jì)算架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)[J]. 微電子學(xué)與計(jì)算機(jī), 2017, 34(9): 87-91.
[5]蔚瑞華, 余有靈, 張偉, 等. 基于模塊化思想的FPGA綜合實(shí)驗(yàn)項(xiàng)目設(shè)計(jì)[J]. 實(shí)驗(yàn)技術(shù)與管理, 2016, 33(5): 44-47.
[6]陳德美. 基于CMOS圖像傳感器的高速圖像采集與傳輸系統(tǒng)的研究設(shè)計(jì)[D]. 杭州: 浙江工業(yè)大學(xué), 2013.
[7]楊東. 基于ZYNQ的雙目圖像采集與處理系統(tǒng)的研究[D]. 北京:中國(guó)地質(zhì)大學(xué), 2015.
[8]姬生毅. 基于Zynq的嵌入式數(shù)字圖像傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 西安: 西安電子科技大學(xué), 2014.
[9]焦再?gòu)?qiáng). 基于Zynq-7000的嵌入式數(shù)字圖像處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 太原: 太原理工大學(xué), 2015.
[10]楊繼森, 張靜, 朱革, 等. 基于ARM Cortex平臺(tái)的嵌入式系統(tǒng)課程虛擬實(shí)驗(yàn)平臺(tái)設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理, 2014, 31(7): 97-101.
[11]程照明, 蔡德鈞. 系統(tǒng)芯片的軟硬件協(xié)同設(shè)計(jì)技術(shù)[J]. 艦船電子工程, 2004(3): 11-15.
[12]蔣偉, 楊庭庭, 劉亞威, 等. 數(shù)字圖像處理研究性實(shí)驗(yàn)教學(xué)的改革與實(shí)踐: 基于分?jǐn)?shù)階偏微分的圖像邊緣檢測(cè)[J]. 實(shí)驗(yàn)技術(shù)與管理, 2013, 30(6): 124-128.