国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SoC FPGA的視覺(jué)算法加速系統(tǒng)設(shè)計(jì)

2016-03-20 09:14:46吳良晶曹云峰丁萌莊麗葵
關(guān)鍵詞:端口閾值設(shè)置

吳良晶,曹云峰,丁萌,莊麗葵

(1.南京航空航天大學(xué)航天學(xué)院,南京210016;2.南京航空航天大學(xué)民航學(xué)院)

SoC FPGA的視覺(jué)算法加速系統(tǒng)設(shè)計(jì)

吳良晶1,曹云峰1,丁萌2,莊麗葵1

(1.南京航空航天大學(xué)航天學(xué)院,南京210016;2.南京航空航天大學(xué)民航學(xué)院)

提出一種基于Altera SoC FPGA進(jìn)行硬件加速的方案,該方案為運(yùn)行在ARM端Linux系統(tǒng)的視覺(jué)算法利用FPGA進(jìn)行加速提供傳輸通道。首先把ARM端的圖像數(shù)據(jù)傳輸?shù)紽PGA部分的SDRAM中,接著控制FPGA相關(guān)IP核讀取SDRAM中的數(shù)據(jù),然后視覺(jué)算法IP核接收?qǐng)D像數(shù)據(jù)并對(duì)其進(jìn)行加速處理,最后把處理后的圖像數(shù)據(jù)通過(guò)特定的IP核傳回Linux系統(tǒng)。實(shí)驗(yàn)驗(yàn)證了該方案的可行性、可靠性和加速性能。

SoC FPGA;視覺(jué)算法;硬件加速;嵌入式Linux

引 言

隨著圖像處理技術(shù)和檢測(cè)識(shí)別等技術(shù)的發(fā)展,其實(shí)用價(jià)值越來(lái)越高,目前主要的檢測(cè)識(shí)別算法已經(jīng)能夠非常精確地檢測(cè)識(shí)別出目標(biāo),但計(jì)算速度是影響實(shí)時(shí)檢測(cè)(如高速無(wú)人機(jī)自主著陸跑道檢測(cè)、車載行人檢測(cè))等算法應(yīng)用的關(guān)鍵因素[1]。在無(wú)法提高計(jì)算速度的前提下,使用高性能的硬件平臺(tái)實(shí)現(xiàn)算法是解決計(jì)算速度問(wèn)題的一個(gè)方法。

FPGA具有很強(qiáng)的并行處理能力和實(shí)時(shí)處理速度,非常適合處理單位時(shí)間內(nèi)數(shù)據(jù)量大、要求數(shù)據(jù)運(yùn)算速度快,但速度運(yùn)算過(guò)程相對(duì)簡(jiǎn)單的數(shù)字圖像處理;但FPGA控制能力不強(qiáng),無(wú)法承擔(dān)整個(gè)系統(tǒng)的控制工作,而ARM處理器具有較多的外設(shè)接口,同時(shí)能夠搭載嵌入式操作系統(tǒng),其能夠完成整個(gè)嵌入式系統(tǒng)的全部軟/硬件資源的分配、調(diào)試并控制整個(gè)系統(tǒng)的運(yùn)行。故采用ARM+FPGA的設(shè)計(jì)方法能有效地解決問(wèn)題,但如果采用單獨(dú)的ARM處理器和FPGA,則設(shè)計(jì)復(fù)雜、成本較高。因此采用SoC FPGA成為了理想的選擇,在一個(gè)器件中集成ARM和FPGA,能夠把視覺(jué)算法中耗時(shí)的部分轉(zhuǎn)移到FPGA進(jìn)行處理,從而提升算法運(yùn)行速度。本文設(shè)計(jì)了從ARM到FPGA再到ARM的數(shù)據(jù)通道,并采用IP核設(shè)計(jì),只要把視覺(jué)算法中需要加速的代碼編寫(xiě)成符合Avalon總線規(guī)范的IP核即可使用本系統(tǒng)。

系統(tǒng)采用Altera公司推出的Cyclone V system-on-achip(SoC)FPGA,其由一個(gè)雙核的ARM Cortex-A9處理器和一個(gè)FPGA組成[2],結(jié)構(gòu)圖如圖1所示。Altera SoC將ARM的硬核處理器系統(tǒng)(HPS)集成在FPGA架構(gòu)中,使之具備可編程邏輯的靈活性和低功耗,也可以發(fā)揮硬核知識(shí)產(chǎn)權(quán)(IP)的性能[3-4]。

1 系統(tǒng)構(gòu)成

系統(tǒng)結(jié)構(gòu)框圖如圖2所示,由HPS端的Linux系統(tǒng)讀圖像源,之后通過(guò)HPS的h2f_axi_master傳輸?shù)絊DRAM中,再由frame reader IP在HPS通過(guò)lw_h2f_axi_master的控制從SDRAM讀取數(shù)據(jù),并從Avalon Streaming Source端口傳輸給下一個(gè)模塊,即算法模塊,因此要求算法模塊具有Avalon Streaming Sink端口。算法模塊通過(guò)同樣的端口把處理過(guò)的數(shù)據(jù)傳輸給CAPTURE IP,該IP在HSP通過(guò)lw_h2f_axi_master控制捕獲從上一個(gè)IP傳輸?shù)臄?shù)據(jù),經(jīng)過(guò)FIFO緩存后,通過(guò)Avalon Memory Mapped(Avalon-MM)總線傳輸給HPS的f2h_axi_ slave接口,因?yàn)锳ltera開(kāi)發(fā)的片內(nèi)總線Avalon-MM和AXI總線能夠自動(dòng)轉(zhuǎn)換,所以可以直接相連[5]。Linux系統(tǒng)以字符設(shè)備驅(qū)動(dòng)的方式為f2h_axi_slave開(kāi)辟內(nèi)存,使之把數(shù)據(jù)傳輸?shù)絃inux系統(tǒng)指定的內(nèi)存空間中,Linux系統(tǒng)通過(guò)字符設(shè)備的read函數(shù)把內(nèi)存區(qū)域的數(shù)據(jù)傳輸?shù)接脩艨臻g,之后可以根據(jù)需要對(duì)傳入的數(shù)據(jù)進(jìn)行下一步處理。

圖1 Altera SoC結(jié)構(gòu)圖

圖2 系統(tǒng)結(jié)構(gòu)框圖

2 硬件系統(tǒng)搭建

2.1 FPGA與HPS通信

為實(shí)現(xiàn)FPGA與HPS之間的數(shù)據(jù)傳輸以及存儲(chǔ)器共享,Altera SoC FPGA提供兩種方式實(shí)現(xiàn)FPGA與HPS之間的通信,分別是FPGA to SDRAM和AXI Bridge接口。FPGA to SDRAM接口是HPS內(nèi)部SDRAM控制器提供給FPGA訪問(wèn)HPS內(nèi)存的接口。AXI Bridge是FPGA和HPS總線之間的數(shù)據(jù)交互接口,包括FPGA-to-HPS AXI、HPS-to-FPGA AXI和Light-weight HPS-to-FPGA AXI。

在通信過(guò)程中,若使用FPGA-to-HPS Bridge, FPGA作為主端(Master)可以訪問(wèn)HPS的內(nèi)存以及外設(shè)。FPGA-to-HPS Bridge的位寬可以設(shè)置為32位、64位和128位。若使用HPS-to-HPS Bridge或者Light-weight HPS-to-FPGA Bridge,FPGA作為從端(slave)供HPS訪問(wèn),Light-weight HPS-to-FPGA Bridge性能比較低,尋址空間只有2 MB,位寬固定為32位,HPS-to-FPGA Bridge具有0x3FFF 0000尋址空間。HPS-to-FPGA Bridge的位寬也可以設(shè)置為32位、64位和128位[2]。本系統(tǒng)需要使用3種總線, Light-weight HPS-to-FPGA Bridge用于Linux系統(tǒng)控制frame reader IP和CAPYURE IP的總線,HPS-to-FPGA Bridge用于Linux系統(tǒng)傳輸數(shù)據(jù)進(jìn)入SDRAM,FPGA-to-HPS Bridge用作接收CAPTURE IP數(shù)據(jù)。FPGA-to-HPS AXI設(shè)置為32位,HPS-to-FPGA AXI設(shè)置為128位,如圖3所示。

圖3 AXI Bridge設(shè)置

2.2 幀讀取器(frame reader)IP核

本文使用了Altera公司提供的視頻和圖像處理IP核套件中的幀讀取器IP核[6-7]。幀讀取器IP核讀取在SDRAM的視頻幀并通過(guò)Avalon-ST視頻協(xié)議輸出,幀讀取器有一個(gè)Avalon-MM讀主端口,用于從SDRAM讀取數(shù)據(jù);一個(gè)Avalon-ST源端口,其上的數(shù)據(jù)流使用Avalon-ST協(xié)議。幀讀取器還有一個(gè)Avalon從端口,為IP核提供配置數(shù)據(jù)。SDRAM中的圖像是以像素值形式存儲(chǔ),在幀讀取器讀取SDRAM中的數(shù)據(jù)之前,先在Avalon-ST源端口上生成一個(gè)控制包和數(shù)據(jù)包的包頭,從SDRAM中輸入的是數(shù)據(jù)包的載荷,控制數(shù)據(jù)包的內(nèi)容通過(guò)Avalon從端口設(shè)置。

為了使該IP核能夠準(zhǔn)確地讀取一幀視頻或者一幅圖片,不僅需要HPS通過(guò)Light-weight HPS-to-FPGA Bridge控制幀讀取器的地址和數(shù)據(jù)位寬,而且需要根據(jù)視頻/圖片信息對(duì)幀讀取器作一些設(shè)置,若輸入的是640×480分辨率、8位RGB圖片,幀讀取器的設(shè)置可以如圖4所示。

2.3 CAPTURE IP核

本文開(kāi)發(fā)CAPTURE IP核用于捕獲來(lái)自圖像處理算法輸出的數(shù)據(jù)并傳輸給f2h_axi_slave端口。CAPTURE用于接收8位RGB格式的視頻/圖片信息,因此輸入的數(shù)據(jù)只有24位,而FPGA-to-HPS AXI為32位,因此需要添加8位數(shù)據(jù)才能夠傳輸,CAPTURE設(shè)計(jì)添加8位0來(lái)滿足傳輸需求,雖然FPGA-to-HPS AXI可以設(shè)置為64位或者128位,因?yàn)檩斎氲臄?shù)據(jù)只有24位,因此FPGA-to-HPS AXI如果設(shè)置為更高的位數(shù)不能提高傳輸速度,反而為開(kāi)發(fā)帶來(lái)了一些麻煩。CAPTURE IP核Qsys軟件如圖5所示。

圖4 幀讀取器設(shè)置

圖5 CAPTURE IP核Qsys軟件

3 軟件開(kāi)發(fā)

軟件部分需要完成4個(gè)主要功能:一是獲取圖像源并轉(zhuǎn)換為RGB格式,傳輸?shù)紽PGA部分SDRAM;二是控制Frame Reader和CAPTURE的工作;三是將編寫(xiě)的f2h_ axi_slave設(shè)備驅(qū)動(dòng)完整地加載到內(nèi)核當(dāng)中;四是等待CAPTURE完成數(shù)據(jù)傳輸后,把數(shù)據(jù)從內(nèi)存中讀取出來(lái)。

程序中首先使用mmap()函數(shù)把HPS-to-FPGA和Light-weight HPS-to-FPGA Bridge的物理地址空間映射到Linux內(nèi)核虛擬地址空間,以便應(yīng)用程序可以通過(guò)訪問(wèn)虛擬地址來(lái)訪問(wèn)FPGA資源。

完成映射后,通過(guò)IP模塊在Qsys中分配的基地址訪問(wèn)IP模塊。由于HPS-to-FPGA Bridge為32位總線,因此需要把RGB數(shù)據(jù)按照RGBX 4字節(jié)的方式傳送到SDRAM,所以在寫(xiě)數(shù)據(jù)的時(shí)候需要填補(bǔ)1字節(jié)的空字節(jié)。

Linux系統(tǒng)通過(guò)虛擬地址訪問(wèn)到IP基地址后,加上一定的偏移地址訪問(wèn)IP模塊的寄存器,Linux系統(tǒng)通過(guò)對(duì)寄存器寫(xiě)入和讀取控制Frame Reader IP和CAPTURE IP并觀測(cè)IP所處的狀態(tài)為控制提供依據(jù)。在運(yùn)行應(yīng)用程序之前,需要把編寫(xiě)的內(nèi)核模塊通過(guò)insmod命令來(lái)向內(nèi)核空間安裝內(nèi)核模塊,之后通過(guò)mknod命令來(lái)創(chuàng)建一個(gè)設(shè)備文件節(jié)點(diǎn)[8],該設(shè)備文件節(jié)點(diǎn)是應(yīng)用程序訪問(wèn)該內(nèi)核模塊的符號(hào)。之后通過(guò)字符設(shè)備的read函數(shù)把內(nèi)存區(qū)域的數(shù)據(jù)傳送到應(yīng)用程序。由于FPGA-to-HPS Bridge的位寬設(shè)置為32位,因此CAPTURE需要將寫(xiě)數(shù)據(jù)按照RGBX格式寫(xiě)入,X為填充的0字節(jié),分配的內(nèi)存區(qū)域根據(jù)一幀視頻或一幅圖片的大小設(shè)定。讀取數(shù)據(jù)后需要把填充的1字節(jié)數(shù)據(jù)舍棄后再合成圖像。

4 系統(tǒng)運(yùn)行與測(cè)試

本系統(tǒng)的實(shí)驗(yàn)平臺(tái)為友晶(terasic)公司開(kāi)發(fā)的DE1-SoC開(kāi)發(fā)板,該實(shí)驗(yàn)平臺(tái)集成了Altera CycloneⅤSE 5CSEMA5F32C6N器件,在FPGA部分擁有64 MB SDRAM;JTAG模式的USB-Blaster II集成在開(kāi)發(fā)板上,方便燒寫(xiě)FPGA工程。在HPS部分集成了一個(gè)800 MHz雙核ARM Cortex-A9 MPCore處理器,一個(gè)1 GB DDR3 SDRAM,一個(gè)SD卡槽,最高支持128 GB SD卡,用來(lái)裝載Linux系統(tǒng),其他本文不涉及的功能模塊在這里不作介紹,具體配置可以訪問(wèn)友晶官網(wǎng)查看。

在不添加需要加速的IP模塊時(shí),對(duì)FPGA資源消耗統(tǒng)計(jì)如表1所列。

表1 FPGA資源消耗統(tǒng)計(jì)表

從表1中可以看出,整個(gè)系統(tǒng)的搭建占用FPGA資源很少,其還有大量資源可以用于視覺(jué)算法的開(kāi)發(fā)。

4.1 閾值分割I(lǐng)P驗(yàn)證測(cè)試

本文開(kāi)發(fā)閾值分割I(lǐng)P核驗(yàn)證系統(tǒng)功能,并簡(jiǎn)要論述硬件加速的效果,閾值分割I(lǐng)P在Qsys中如圖6所示,圖中閾值默認(rèn)設(shè)置為128。

使用modelsim軟件對(duì)IP核進(jìn)行仿真[9],仿真結(jié)果如圖7所示。

圖6 閾值分割I(lǐng)P

圖7 閾值分割I(lǐng)P仿真結(jié)果圖

仿真周期設(shè)置為20 ps,閾值設(shè)置為默認(rèn)128,分割方式設(shè)為小于閾值歸0;輸入3個(gè)RGB像素值,分別為[158, 110,56]、[254,250,153]、[10,120,56],在圖7中以sink_ data信號(hào)表示,表現(xiàn)形式為二進(jìn)制??梢钥闯?在經(jīng)過(guò)一個(gè)時(shí)鐘周期之后,source_data接收到經(jīng)過(guò)閾值分割處理過(guò)的數(shù)據(jù),表現(xiàn)形式為二進(jìn)制,分別為[158,0,0]、[254, 250,153]、[0,0,0],仿真結(jié)果驗(yàn)證了該IP核的功能,需要說(shuō)明的是,該IP核以Avalon流[10]的形式輸入輸出數(shù)據(jù),數(shù)據(jù)位為24位,用于處理8位RGB圖像。

4.2 硬件加速實(shí)驗(yàn)驗(yàn)證

從圖7可以分析出處理一個(gè)RGB像素需要一個(gè)時(shí)鐘周期,因此處理一幅640×480像素值的RGB圖像的時(shí)間t可以通過(guò)計(jì)算得到:

f為閾值分割I(lǐng)P核的時(shí)鐘頻率。若f=100 MHz,則t= 3.072 ms;若f=200 MHz,則t=1.536 ms。使用Altera PLL可以配置閾值分割I(lǐng)P的時(shí)鐘頻率。

在HPS端實(shí)現(xiàn)閾值分割,實(shí)驗(yàn)使用ubuntu 12.04系統(tǒng)并配置opencv3.0,雙核ARM Cortex A9時(shí)鐘頻率為800 MHz。使用opencv中閾值分割threshold()函數(shù)來(lái)驗(yàn)證在ARM中實(shí)現(xiàn)閾值分割的使用時(shí)間,并使用clock_ gettime()函數(shù)來(lái)計(jì)算使用時(shí)間,clock_gettime()是基于Linux C語(yǔ)言的時(shí)間函數(shù),可以用于計(jì)算精度和納秒。測(cè)試部分代碼如下:

由于opencv threshold()函數(shù)不能同時(shí)處理RGB圖像,因此使用了split函數(shù)分離RGB圖像為3個(gè)單通道圖像,處理完之后使用merge()函數(shù)把3個(gè)單通道函數(shù)合并成RGB圖像[11],在程序中使用clock_gettime()函數(shù)計(jì)算單通道閾值分割使用時(shí)間和三通道閾值分割使用時(shí)間,使用納秒計(jì)數(shù)計(jì)算使用時(shí)間,程序運(yùn)行結(jié)果如圖8所示。

圖8 閾值分割函數(shù)使用時(shí)間

從圖中可以看出,單通道運(yùn)行時(shí)間約為2.55 ms,整個(gè)RGB圖像閾值分割使用時(shí)間約為5.86 ms;若threshold_Segmengtation IP時(shí)鐘使用200 MHz,則RGB圖像處理比ARM端閾值分割處理快3.8倍。

因此可以看出,FPGA可以同時(shí)處理RGB 3個(gè)通道圖像,而ARM只能順序執(zhí)行3個(gè)單通道圖像閾值分割,因此雖然使用了高性能高優(yōu)化的opencv函數(shù)處理,卻依然沒(méi)有FPGA快,當(dāng)遇到更復(fù)雜的算法的時(shí)候,FPGA可以利用大量FPGA邏輯資源并行執(zhí)行更多的操作,可以加速更多倍,這就是使用FPGA開(kāi)發(fā)視覺(jué)算法的魅力所在。

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

本文使用從文件中讀取10張圖片通過(guò)FPGA進(jìn)行閾值分割后再保存到文件中的方式驗(yàn)證整個(gè)系統(tǒng)功能。

實(shí)驗(yàn)配置DE1-SoC MESL[4:0]=10010設(shè)定模式為AS,即FPGA從EPCQ配置,使用串口對(duì)Linux系統(tǒng)進(jìn)行操作。

測(cè)試過(guò)程如圖9所示,源圖像存于input文件夾,處理后的圖像存儲(chǔ)在output文件夾,取其中5組圖片,結(jié)果如圖10所示,上面5幅為原圖(即input中的圖片),下面5幅圖是處理后的圖(即output中的圖片)。測(cè)試結(jié)果驗(yàn)證了本文提出方案的正確性。

圖9 系統(tǒng)測(cè)試過(guò)程

圖10 系統(tǒng)測(cè)試結(jié)果

結(jié) 語(yǔ)

本文根據(jù)目前視覺(jué)算法的局限性,提出使用SoC FPGA硬件加速的方案提高算法的速度,并就此提出適用于C/C++視覺(jué)算法通過(guò)FPGA進(jìn)行加速的系統(tǒng),為后續(xù)的視覺(jué)算法移植到FPGA提供了保證,并用一個(gè)簡(jiǎn)單的圖像分割I(lǐng)P論證將視覺(jué)算法部分從ARM轉(zhuǎn)移到FPGA的可行性和速度優(yōu)勢(shì)。同時(shí)值得注意的是,ARM和FPGA之間的高速/低延時(shí)互聯(lián)是在SoC FPGA系統(tǒng)中實(shí)現(xiàn)這一性能優(yōu)勢(shì)的關(guān)鍵因素。

[1]Duc Thanh Nguyen,Wanqing Li,Philip,et al.Human detection from images and videos:A survey[J].Pattern Recognition,2016(51):148-175.

[2]Altera Corporation.Cyclone V Hard Processor System Technical Reference Manual,2015.

[3]白月明.基于SoC FPGA的視頻播放器設(shè)計(jì)[D].西安:西安電子科技大學(xué),2014.

[4]Chien-chuang Wu,Kaiwen Weng.The Development and Implementation of a Real-time Depth Image Capturing System using SoC FPGA[C]//30th International Conference on Advanced Information Networking and Applications Workshops,2016:934-938.

[5]康維新.SOPC技術(shù)與應(yīng)用[M].哈爾濱:哈爾濱工程大學(xué)出版社,2015.

[6]Altera Corporation.Video and Image Processing Suite User Guide,2015.

[7]劉東華.Altera系列FPGA芯片IP核詳解[M].北京:電子工業(yè)出版社,2014.

[8]陳學(xué)松.深入linux設(shè)備驅(qū)動(dòng)程序內(nèi)核機(jī)制[M].北京:電子工業(yè)出版社,2012.

[9]Altera Corporation.Quartus II Handbook Version 13.1,2013. [10]Altera Corporation.Avalon Interface Specifications,2015.

[11]毛星云,冷雪飛.OpenCV3.0編程入門(mén)[M].北京:電子工業(yè)出版社,2015.

吳良晶(碩士研究生),主要研究方向?yàn)橛?jì)算機(jī)視覺(jué);曹云峰(教授),主要研究方向?yàn)轱w行控制、計(jì)算機(jī)視覺(jué)、數(shù)字化設(shè)計(jì)。

Vision Algorithm Acceleration System Based on SoC FPGA

Wu Liangjing1,Cao Yunfeng1,Ding Meng2,Zhuang Likui1
(1.College of Civil Astronautics,Nanjing University of Aeronautics and Astronautics,Nanjing 210016,China; 2.College of Civil Aviation,Nanjing University of Aeronautics and Astronautics)

A hardware acceleration system based on Altera SoC FPGA is proposed,which provides a transport channel for accelerating vision algorithm that runs on the Linux operation system based on ARM and uses FPGA to acceleration.Firstly,the image data from the ARM side is transferred to the SDRAM of FPGA region,then the related IP core in FPGA is controlled to read the data of SDRAM,the IP core of vision algorithm receives and accelerates the image data,finally the processed image data is transported back to the Linux operation system by the specific IP core.The feasibility,reliability and acceleration performance of the method are demonstrated by the experiment.

SoC FPGA;vision algorithm;hardware acceleration;embedded Linux

TP274

:A

薛士然

2016-06-07)

猜你喜歡
端口閾值設(shè)置
中隊(duì)崗位該如何設(shè)置
一種端口故障的解決方案
小波閾值去噪在深小孔鉆削聲發(fā)射信號(hào)處理中的應(yīng)用
基于自適應(yīng)閾值和連通域的隧道裂縫提取
端口阻塞與優(yōu)先級(jí)
比值遙感蝕變信息提取及閾值確定(插圖)
河北遙感(2017年2期)2017-08-07 14:49:00
室內(nèi)表面平均氡析出率閾值探討
本刊欄目設(shè)置說(shuō)明
中俄臨床醫(yī)學(xué)專業(yè)課程設(shè)置的比較與思考
初識(shí)電腦端口
電腦迷(2015年6期)2015-05-30 08:52:42
和林格尔县| 凌云县| 长春市| 开封县| 河间市| 芷江| 亚东县| 莒南县| 沙河市| 闽清县| 邵东县| 轮台县| 连城县| 灌阳县| 会宁县| 唐山市| 杨浦区| 五常市| 松溪县| 通辽市| 隆德县| 承德县| 富平县| 凯里市| 罗平县| 吉安市| 和顺县| 阆中市| 蛟河市| 台南县| 眉山市| 屯留县| 庆元县| 陆丰市| 酒泉市| 宜黄县| 金秀| 凉城县| 兴城市| 朝阳县| 宜良县|