文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.182355
中文引用格式: 何銳斌,李子揚(yáng),,賀文靜,,等. 激光點(diǎn)云解算的軟硬件協(xié)同設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2019,,45(3):100-103.
英文引用格式: He Ruibin,,Li Ziyang,He Wenjing,,et al. Design and implementation of points position cloud calculation based on software-hardware co-design[J]. Application of Electronic Technique,,2019,45(3):100-103.
0 引言
近年來,,遙感技術(shù)迅猛發(fā)展,,激光雷達(dá)技術(shù)(Light Detection And Ranging,LiDAR)能夠快速獲取并實(shí)時(shí)處理形成高精度地表多維信息[1],,在車載,、機(jī)載和星載等平臺具有廣泛應(yīng)用[2-4],LiDAR的實(shí)時(shí)性處理問題是目前的研究熱點(diǎn),。LiDAR系統(tǒng)獲取的原始數(shù)據(jù)需要經(jīng)過點(diǎn)云解算才能形成三維數(shù)據(jù),,點(diǎn)云解算是LiDAR系統(tǒng)數(shù)據(jù)處理算法中必不可少的環(huán)節(jié),具有計(jì)算量大,、處理算法復(fù)雜等特點(diǎn),,機(jī)載和星載等高速平臺更是對點(diǎn)云解算實(shí)時(shí)性處理提出了更高的要求[5],同時(shí)也對系統(tǒng)的硬件資源和功耗有著嚴(yán)格限制,。
隨著超大規(guī)模集成電路技術(shù)的迅速發(fā)展,,片上系統(tǒng)[6](System on a Chip,SoC)被廣泛應(yīng)用于計(jì)算機(jī),、電子通信和軍工等領(lǐng)域,,多核異構(gòu)[7]的運(yùn)算處理模式能夠有效提升系統(tǒng)的運(yùn)算性能,通過ARM處理器完成靈活性較高的軟件實(shí)現(xiàn),,配合FPGA或ASIC對系統(tǒng)進(jìn)行硬件加速,,這種軟硬件協(xié)同的開發(fā)模式能夠充分發(fā)揮異構(gòu)處理核各自的優(yōu)勢,在短周期內(nèi)實(shí)現(xiàn)低功耗,、高性能的實(shí)時(shí)處理系統(tǒng),。
本文采用基于軟硬件協(xié)同的設(shè)計(jì)方法,充分結(jié)合點(diǎn)云解算的數(shù)據(jù)和運(yùn)算特點(diǎn),,運(yùn)用流水線優(yōu)化和本地存儲優(yōu)化策略,,開發(fā)了基于FPGA的硬件加速器,提升點(diǎn)云解算的運(yùn)算性能,。
1 激光點(diǎn)云解算原理
激光點(diǎn)云解算是將激光雷達(dá)測距數(shù)據(jù)和定位定向系統(tǒng)(Position and Orientation System,,POS)設(shè)備的位置姿態(tài)信息進(jìn)行聯(lián)合解算,,得到每個(gè)激光點(diǎn)元的三維坐標(biāo)的過程,處理流程圖如圖1所示,。這個(gè)過程涉及激光雷達(dá)距離信息解算,、POS數(shù)據(jù)解算、坐標(biāo)變換和高斯投影等過程,,其中高斯投影涉及大量的乘法和三角運(yùn)算,,是該算法的性能瓶頸。
2 軟硬件協(xié)同設(shè)計(jì)與實(shí)現(xiàn)
2.1 SoC結(jié)構(gòu)設(shè)計(jì)
本文將激光點(diǎn)云解算分為軟件實(shí)現(xiàn)和硬件加速兩個(gè)部分,,其中一部分是將運(yùn)算簡單,、具有較多判斷語句和指針操作的算法模塊交由PS端軟件實(shí)現(xiàn)。另一部分則是將對算法性能影響較大,,可并向化程度高并且不需要邏輯判斷的部分用PL端的FPGA硬件加速器實(shí)現(xiàn),,以獲得更短的處理時(shí)耗。PL端的硬件邏輯電路通過流水線方法優(yōu)化和本地存儲優(yōu)化,,實(shí)現(xiàn)SoC的性能加速,。
激光雷達(dá)測距數(shù)據(jù)以及對應(yīng)的POS數(shù)據(jù)存儲在外部存儲單元中,之后讀取到PS端的內(nèi)存中,。PS端負(fù)責(zé)處理激光點(diǎn)元的距離解算,、POS數(shù)據(jù)解算和坐標(biāo)變換三個(gè)模塊的運(yùn)算。高斯投影模塊處理的點(diǎn)云數(shù)據(jù)間的依賴性低,,可并行化程度較高,,由PL端的硬件邏輯電路實(shí)現(xiàn)。最終PS端將處理完成的三維點(diǎn)云坐標(biāo)結(jié)果存儲到外部存儲單元中,。SoC結(jié)構(gòu)設(shè)計(jì)如圖2所示,。
2.2 通信設(shè)計(jì)
PL端和PS端之間的數(shù)據(jù)通信是實(shí)現(xiàn)軟硬件協(xié)同處理的重要組成部分,主要分為消息通信和數(shù)據(jù)傳輸兩部分,。消息通信主要是實(shí)現(xiàn)PL端的硬件加速器和PS端的處理器之間的狀態(tài)反饋,。數(shù)據(jù)傳輸實(shí)現(xiàn)硬件加速器和處理器之間大量的運(yùn)算數(shù)據(jù)的傳遞,包括硬件加速器運(yùn)算數(shù)據(jù)的輸入傳輸和運(yùn)算結(jié)果數(shù)據(jù)的回寫傳輸,。
結(jié)合FPGA本地存儲空間小而訪問速度快,、主存儲器空間大而訪問速度較慢以及點(diǎn)云解算具有按掃描行存儲處理數(shù)據(jù)的特點(diǎn),為了獲取PS端和PL端的最大傳輸性能,,本文使用了基于AXI-4協(xié)議[8]的DMA高速傳輸方式,。DMA是一種高效的數(shù)據(jù)傳遞方式,通過DMA控制器實(shí)現(xiàn)硬件加速器和內(nèi)存之間的數(shù)據(jù)傳遞,,無需ARM核CPU的干預(yù),。因此,在PL端的FPGA硬件加速器訪問主存的時(shí)候,,PS端的CPU可以繼續(xù)執(zhí)行程序,。AXI-4協(xié)議具有獨(dú)立的讀和寫數(shù)據(jù)通道,,支持低成本的直接存儲器訪問DMA傳輸。同時(shí),,該協(xié)議是基于開始地址的猝發(fā)式傳輸,,能夠完成整塊數(shù)據(jù)的搬移,并具有廣泛的IP可拓展性,。
本文在設(shè)計(jì)FPGA硬件加速器時(shí)精簡了控制信號,,只保留數(shù)據(jù)傳輸?shù)钠鹬狗答佇盘?,進(jìn)一步減少了傳輸量和時(shí)延,,將點(diǎn)云解算數(shù)據(jù)轉(zhuǎn)化為流數(shù)據(jù)進(jìn)行傳輸,實(shí)現(xiàn)硬件加速器和ARM處理器之間的高速數(shù)據(jù)通信,。
DMA傳輸不可避免地會帶來Cache數(shù)據(jù)和內(nèi)存數(shù)據(jù)不一致的問題[9],。如圖3所示,CPU通過DMA控制器來控制PL端的硬件加速器和PS端的內(nèi)存之間的數(shù)據(jù)傳送,。當(dāng)硬件加速器將處理完成的數(shù)據(jù)回寫到內(nèi)存中,,這時(shí)內(nèi)存中變量A已經(jīng)更新,但Cache中變量A的值不變,。在CPU訪問變量A時(shí),,命中Cache獲取了舊值而不是內(nèi)存中已經(jīng)更新的A值,引發(fā)數(shù)據(jù)不一致現(xiàn)象,。
本文通過XSDK開發(fā)環(huán)境中的cacheFlush( )和cacheIncalidate( )函數(shù)在PS端解決了維護(hù)Cache一致性的問題:在通信數(shù)據(jù)通過DMA傳入FPGA硬件加速器之前,,使用cacheFlush( )函數(shù)將Cache中對應(yīng)的緩存數(shù)據(jù)壓入DDR中。在硬件加速器完成數(shù)據(jù)處理并回寫結(jié)果到DDR后,,使用cacheIncalidate( )函數(shù)保持DDR和CPU之間的數(shù)據(jù)同步,。
2.3 加速器設(shè)計(jì)與優(yōu)化
硬件加速器的設(shè)計(jì)由FPGA實(shí)現(xiàn),包括通信單元、運(yùn)算處理單元和存儲單元,,為了進(jìn)一步提高運(yùn)行性能,,進(jìn)行運(yùn)算處理單元流水線優(yōu)化和存儲單元的優(yōu)化。
2.3.1 流水線優(yōu)化
為了增加程序的并發(fā)性,,流水線優(yōu)化可以使多次迭代中的相同操作依次執(zhí)行,,在不大幅度增加硬件資源的情況下,最大限度地減小迭代間的時(shí)延,,提升硬件加速器的運(yùn)算效率,。下面對處理函數(shù)的流水線優(yōu)化進(jìn)行說明。
如圖4所示,,用循環(huán)對每個(gè)激光雷達(dá)點(diǎn)元進(jìn)行處理,,假設(shè)每個(gè)點(diǎn)元的處理周期為T,共有N個(gè)點(diǎn)元,,則流水線優(yōu)化前,,需要的總時(shí)鐘個(gè)數(shù)為N×T個(gè)周期,;流水線優(yōu)化后,假設(shè)循環(huán)迭代間的周期間隔為Ti,,則總時(shí)鐘為N×Ti+T個(gè)周期,,性能提升倍數(shù)為:
在XHLS開發(fā)環(huán)境中通過PIPELINE優(yōu)化指令可以對硬件加速器運(yùn)算處理的循環(huán)函數(shù)進(jìn)行流水線優(yōu)化,通過迭代間隔(Initiation Interval,,II)約束因子,,可以對流水線的迭代間隔進(jìn)行控制,進(jìn)而影響硬件加速器的流水線的性能和硬件資源消耗,。本文通過流水線優(yōu)化設(shè)計(jì),,在流水線迭代間隔II=5的情況下,能夠?qū)崿F(xiàn)FPGA運(yùn)算性能近35倍的提升,。
2.3.2 存儲優(yōu)化
在一般的流水線設(shè)計(jì)中,,數(shù)據(jù)的本地存儲是相對獨(dú)立的,即先將DMA數(shù)據(jù)流全部讀取到FPGA本地存儲單元,,再進(jìn)行流水線運(yùn)算處理,,將處理結(jié)果寫入到本地存儲單元,最后通過DMA整體回寫到PS端的內(nèi)存中,,這種處理模式既消耗FPGA的硬件存儲資源又增加了處理時(shí)延,。
本文結(jié)合點(diǎn)云解算數(shù)據(jù)獨(dú)立性強(qiáng),數(shù)據(jù)間依賴性弱的特點(diǎn),,優(yōu)化FPGA本地存儲,,直接將DMA傳輸?shù)臄?shù)據(jù)通道連接入運(yùn)算流水線上,使每個(gè)點(diǎn)元數(shù)據(jù)的讀寫直接“鑲嵌”到流水線處理中,,進(jìn)一步減少本地存儲和時(shí)延,,硬件加速器的整體運(yùn)算性能在流水線的基礎(chǔ)上再提升2倍。存儲優(yōu)化前后示意圖如圖5所示,。
3 實(shí)驗(yàn)結(jié)果分析
實(shí)驗(yàn)采用Xilinx公司的Zedboard開發(fā)板,,該板以ZYNQ-7000芯片為核心,集成Cortex-A9雙ARM處理核和Artix7 FPGA可編程邏輯陣列,。實(shí)驗(yàn)時(shí),,PS端的ARM處理器主頻設(shè)置為667 MHz,PL端的FPGA時(shí)鐘頻率為100 MHz,。實(shí)驗(yàn)激光點(diǎn)云原始數(shù)據(jù)來自某線陣推掃LiDAR載荷飛行試驗(yàn)獲取的一段數(shù)據(jù),,行數(shù)為666行,每行數(shù)據(jù)量為1 448 B,,每行對應(yīng)的載荷位置POS數(shù)據(jù)量為56 B,,總數(shù)據(jù)量為978 KB。
3.1 硬件資源消耗
實(shí)驗(yàn)分析了FPGA硬件加速器的流水線設(shè)計(jì)中,,不同迭代間隔II對其硬件資源的占用率的影響,。在數(shù)據(jù)處理量一定的情況下,,流水線的II約束因子分別設(shè)置為2、5,、10,、20、40,,獲取加速器的硬件資源消耗情況和對應(yīng)的處理時(shí)延,,并計(jì)算其相對于流水線優(yōu)化前的性能提升倍數(shù),如表1所示,。
從表1可知,,隨著流水線的迭代間隔(II)減小,硬件加速器的4種類型的硬件資源消耗在不斷增加,。當(dāng)約束因子II向1個(gè)時(shí)鐘周期壓縮的時(shí)候,,DSP和LUT資源消耗急劇增加,。本文結(jié)合開發(fā)板硬件資源可使用量,,選擇II=5作為最終硬件加速器流水線的迭代間隔。
3.2 運(yùn)行性能分析
為了比較本文設(shè)計(jì)的硬件加速器的加速效果,,分別測出了在ARM處理器軟件實(shí)現(xiàn)算法的處理時(shí)延周期,,以及硬件加速器在各個(gè)優(yōu)化設(shè)計(jì)階段的處理時(shí)延周期,并計(jì)算其相對于軟件實(shí)現(xiàn)的加速比,。表2給出了處理一行LiDAR點(diǎn)元數(shù)據(jù)的實(shí)驗(yàn)結(jié)果,。
各種實(shí)現(xiàn)方式的處理周期和加速比如圖6所示,結(jié)合表2和圖6可以看出,,本文設(shè)計(jì)的硬件加速器的性能相比于單純的軟件實(shí)現(xiàn)具有大幅度的提升,。
實(shí)驗(yàn)表明,本文提出的設(shè)計(jì)處理單行激光點(diǎn)云數(shù)據(jù)耗時(shí)6.5 ms,,能夠滿足激光雷達(dá)在150 Hz掃描頻率下每行360點(diǎn)元數(shù)據(jù)的實(shí)時(shí)處理要求,。
4 結(jié)論
本文采用基于軟硬件協(xié)同的設(shè)計(jì)方法,設(shè)計(jì)并實(shí)現(xiàn)了激光點(diǎn)云解算的SoC,。在Xilinx公司的Zedboard開發(fā)板上,,采用流水線優(yōu)化和FPGA存儲優(yōu)化的方法,開發(fā)了具有高效運(yùn)行性能的硬件加速器,。實(shí)驗(yàn)結(jié)果表明,,本文的激光點(diǎn)云解算SoC能夠滿足機(jī)載平臺的實(shí)時(shí)性處理要求,使三維點(diǎn)云解算在飛行器,、衛(wèi)星等高速平臺進(jìn)行低功耗,、實(shí)時(shí)性處理成為可能,為遙感三維影像生成技術(shù)的片上系統(tǒng)實(shí)現(xiàn)奠定了堅(jiān)實(shí)的基礎(chǔ),。
參考文獻(xiàn)
[1] 黎荊梅,,周梅,,李傳榮.陣列推掃式機(jī)載激光雷達(dá)三維點(diǎn)云解算方法研究[J].遙感技術(shù)與應(yīng)用,2013,,28(6):1033-1038.
[2] DABNEY P,,HARDING D,ABSHIRE J,,et al.The slope imaging multi-polarization photon-counting lidar: development and performance results,,2010[C].IEEE International Geoscience and Remote Sensing Symposium,2010:653-656.
[3] YU A,,KRAINAK M,,HARDING D,et al.Development effort of the airborne lidar simulator for the lidar surface topography(LIST)Mission[C].Proceedings of SPIE.The International Society for Optical Engineering,,2011.
[4] 郭商勇,,胡雄,閆召愛,,等.國外星載激光雷達(dá)研究進(jìn)展[J].激光技術(shù),,2016(5):772-778.
[5] 李然,王成,,蘇國中,,等.星載激光雷達(dá)的發(fā)展與應(yīng)用[J].科技導(dǎo)報(bào),2007(14):58-63.
[6] MARTIN G.Overview of the MPSoC design challenge,,2006[C].Design Automation Conference.ACM/IEEE,,2006:274-279.
[7] 陳芳園,張冬松,,王志英.異構(gòu)多核處理器體系結(jié)構(gòu)設(shè)計(jì)研究[J].計(jì)算機(jī)工程與科學(xué),,2011(12):27-36.
[8] 馬飛,劉琦,,包斌.基于FPGA的AXI4總線時(shí)序設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,,2015,41(6):13-15,,19.
[9] 曹彥榮,,張銳.DMA傳輸與Cache一致性分析[J].硅谷,2014,,7(8):39-40.
作者信息:
何銳斌1,,2,李子揚(yáng)1,,賀文靜1,,胡 堅(jiān)1,李傳榮1
(1.中國科學(xué)院光電研究院 中國科學(xué)院定量遙感信息技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京100094,;
2.中國科學(xué)院大學(xué),,北京100049)