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