朱運(yùn)維,胡 堅,賀文靜,李傳榮
(1.中國科學(xué)院空天信息創(chuàng)新研究院,北京 100094;2.中國科學(xué)院定量遙感信息技術(shù)重點(diǎn)實驗室,北京 100094;3.中國科學(xué)院大學(xué),北京 100049)
激光雷達(dá)(Light Detection and Ranging,LiDAR)技術(shù)能夠通過快速獲取和實時處理形成高精度地表多維信息,在國土資源調(diào)查、地形測量、林業(yè)、災(zāi)害評估等方面具有廣泛應(yīng)用[1-2]。LiDAR 系統(tǒng)獲取的測距數(shù)據(jù)需要經(jīng)過點(diǎn)云解算才能形成三維點(diǎn)云[3-5],因此點(diǎn)云解算[1]是LiDAR 實時處理系統(tǒng)中的關(guān)鍵處理環(huán)節(jié)。點(diǎn)云解算包括激光雷達(dá)測距值及對應(yīng)姿態(tài)數(shù)據(jù)的處理,涉及大量的雙精度浮點(diǎn)數(shù)據(jù)的矩陣計算[6-7],具有計算量大,處理算法復(fù)雜的特點(diǎn),給點(diǎn)云解算實時處理帶來了難度。
隨著超大規(guī)模集成電路技術(shù)的迅速發(fā)展,片上系統(tǒng)(System on a Chip,SoC)被廣泛應(yīng)用于計算機(jī)、電子通信和軍工等領(lǐng)域[8-9]。SoC 技術(shù)通過處理器、存儲器、各種控制接口和互聯(lián)總線的集成,進(jìn)一步減小了系統(tǒng)體積,并減少了系統(tǒng)中芯片之間的延遲,進(jìn)而提高了系統(tǒng)效率[10-12]。利用FPGA 對系統(tǒng)進(jìn)行硬件加速,能進(jìn)一步提升系統(tǒng)的運(yùn)算性能。
FPGA系統(tǒng)設(shè)計一般采取以具體應(yīng)用為主導(dǎo)的設(shè)計方法,設(shè)計產(chǎn)品也往往只能滿足單一使用場景[13-14]。數(shù)據(jù)輸入特性的改變會使系統(tǒng)消耗資源和布線情況發(fā)生明顯變化,重新設(shè)計會增加系統(tǒng)開發(fā)成本和周期。文中面向激光點(diǎn)云解算應(yīng)用,設(shè)計了基于可配置陣列的架構(gòu),提高了可配置路由支持系統(tǒng)的靈活可配置性;算法單元運(yùn)用流水線計算和并行陣列的策略,在一定程度上降低了系統(tǒng)與數(shù)據(jù)輸入的耦合性,不僅提升系統(tǒng)計算性能,而且支持靈活重構(gòu)。
點(diǎn)云解算利用激光雷達(dá)系統(tǒng)輸出的觀測目標(biāo)測距數(shù)據(jù),聯(lián)合激光雷達(dá)掃描時刻的位置姿態(tài)信息、測距數(shù)據(jù),采用陣列推掃式機(jī)載激光雷達(dá)三維點(diǎn)云解算模型,具體地將激光掃描坐標(biāo)系下獲取的測距值通過激光掃描坐標(biāo)系、IMU 坐標(biāo)系、導(dǎo)航投影坐標(biāo)系以及地心坐標(biāo)系的坐標(biāo)轉(zhuǎn)換,獲得每個激光腳點(diǎn)精確的三維空間坐標(biāo),如圖1 所示。解算過程需要利用動態(tài)檢校參數(shù)進(jìn)行校正處理,以提高處理精度;同時,需進(jìn)行粗差剔除操作,目的是降低目標(biāo)誤判概率和設(shè)備誤差的影響。
圖1 點(diǎn)云解算算法處理流程
為實現(xiàn)點(diǎn)云解算的實時處理和面向不同觀測載荷的靈活處理,文中設(shè)計了基于可重構(gòu)陣列的點(diǎn)云解算FPGA 系統(tǒng)架構(gòu)。點(diǎn)云解算FPGA 系統(tǒng)需要完成數(shù)據(jù)的路由發(fā)送和計算處理,具體架構(gòu)包括數(shù)據(jù)處理模塊、路由模塊以及控制模塊。其中,數(shù)據(jù)處理模塊使用路由緩存以及計算單元的陣列形式,保證數(shù)據(jù)的靈活實時處理;路由模塊發(fā)送LiDAR 距離姿態(tài)數(shù)據(jù),通過配置路由使系統(tǒng)具有靈活性;控制模塊監(jiān)控系統(tǒng)的流水運(yùn)行狀態(tài)。圖2 所示為點(diǎn)云解算FPGA 可重構(gòu)陣列的總體設(shè)計結(jié)構(gòu)。
圖2 點(diǎn)云解算FPGA可重構(gòu)陣列結(jié)構(gòu)
點(diǎn)云解算算法處理流程復(fù)雜、運(yùn)算量大,其單流向數(shù)據(jù)處理的特點(diǎn)可以通過流水線設(shè)計實現(xiàn)算法的高效處理;而且點(diǎn)云解算在不同觀測載荷下數(shù)據(jù)獲取多變,也適合使用并行陣列進(jìn)一步開發(fā)。因此,文中采用基于AXI-4 協(xié)議的高速傳輸方式,采用流水線和并行陣列混合的設(shè)計方式。
處理模塊設(shè)計是算法在FPGA 實現(xiàn)的重要步驟,其結(jié)構(gòu)包含算法處理單元和數(shù)據(jù)緩存單元兩個部分。復(fù)雜算法的流水實現(xiàn)需要進(jìn)行算法的單元分割,從而將復(fù)雜的算法簡化,為陣列和流水線的獨(dú)立實現(xiàn)奠定基礎(chǔ)。文中將點(diǎn)云解算分為激光雷達(dá)測距值及其姿態(tài)數(shù)據(jù)解算、矩陣變換和高斯投影3個算法,并對每個算法模塊進(jìn)行流水線設(shè)計,獨(dú)立驗證算法的正確性。
算法處理模塊使用流水線設(shè)計方法,將算法的組合邏輯進(jìn)一步系統(tǒng)地分割,在各個分級之間插入寄存器,將復(fù)雜操作分解為能并行的簡單操作,以提高數(shù)據(jù)吞吐率。
假設(shè)在T循環(huán)內(nèi)完成對每個激光雷達(dá)點(diǎn)元的處理,共需處理N個點(diǎn)元,在流水線設(shè)計前所需時鐘T1=N×T,流水線設(shè)計所需時鐘T2=(N-1)×T0+T,流水線效率提升倍數(shù)如下:
點(diǎn)云解算流水線設(shè)計示意圖如圖3 所示。
圖3 點(diǎn)云解算流水線設(shè)計示意圖
Xilinx HLS 開發(fā)環(huán)境提供了兩種流水線指令:①unroll 和pipeline,unroll 指令會完全展開算法以達(dá)到最大并行,造成資源過度使用;②pipeline 優(yōu)化指令中的迭代間隔約束因子(Initiation Interval,II)表示流水線發(fā)起間隔的周期數(shù)。通過改變迭代間隔約束因子得到不同性能的流水線,同時考慮開發(fā)板資源可使用量,并結(jié)合點(diǎn)云解算具有按描行存儲處理數(shù)據(jù)的特點(diǎn),采用基于AXI-4 協(xié)議的DMA 傳輸方式。AXI-4 是基于VALID/READY 的握手機(jī)制數(shù)據(jù)傳輸協(xié)議,傳輸端使用VALID 標(biāo)明地址/控制信號、數(shù)據(jù)有效,目的端使用READY 標(biāo)明其能夠接受信息,讀和寫數(shù)據(jù)通道獨(dú)立,支持低成本的直接存儲器訪問DMA 傳輸。同時,該協(xié)議基于開始地址的猝發(fā)式傳輸,具有廣泛的IP 可擴(kuò)展性,為陣列并行電路設(shè)計的控制設(shè)計提供基礎(chǔ)。整合算法模塊時,為實現(xiàn)不同時序的銜接,需要設(shè)計數(shù)據(jù)緩存。點(diǎn)云解算中矩陣變換通過坐標(biāo)系轉(zhuǎn)換的運(yùn)算輸出坐標(biāo)為(x,y,z),將高程值z直接輸出;高斯投影只對其中的x,y坐標(biāo)進(jìn)行投影操作。利用AXI-4 協(xié)議數(shù)據(jù)有效信號實現(xiàn)了矩陣變換和高斯投影間數(shù)據(jù)的正確緩存。
文中路由結(jié)構(gòu)由實現(xiàn)數(shù)據(jù)分配的FIFO 緩存區(qū)構(gòu)成。通過實現(xiàn)數(shù)據(jù)分配,基于AXI-4 協(xié)議設(shè)計控制邏輯,使路由實現(xiàn)手動配置;路由單元配合控制單元監(jiān)控數(shù)據(jù)傳輸和處理進(jìn)度,最終使系統(tǒng)能夠通過可配置路由實現(xiàn)靈活的數(shù)據(jù)處理。
結(jié)合FPGA 內(nèi)部存儲資源充足、訪問速度快以及激光雷達(dá)系統(tǒng)具有按掃描行處理數(shù)據(jù)的特點(diǎn),使用FPGA 內(nèi)部的存儲類資源BRAM 和查找表LUT 建立基于先入先出隊列(First Input First Output,F(xiàn)IFO)的數(shù)據(jù)緩存區(qū),并對AXI-4 協(xié)議進(jìn)行擴(kuò)展,使數(shù)據(jù)順序?qū)懭胱x出。以三陣列對應(yīng)路由為例,在初始計數(shù)器cnt 自增的情況下,將待處理數(shù)據(jù)Input 按照掃描行寫入對應(yīng)陣列的緩存buffer,緩存完成時緩存計數(shù)器buffercnt進(jìn)行自增。緩存計數(shù)器自增至三且AXI-4協(xié)議中的Input_valid 信號置低時,表示所有掃描行數(shù)據(jù)完成緩存,此時拉高calStart 信號啟動并行計算,控制過程如圖4 所示。
圖4 FIFO數(shù)據(jù)緩存控制時序圖
在陣列配置方面,文中利用AXI-4 協(xié)議在陣列頂層模塊中手動修改配置,支持不同數(shù)目的單元并行計算,對應(yīng)不同觀測載荷的數(shù)據(jù)獲取。頂層模塊聲明了可配置路由和可整體增減的單元兩部分定義,包括陣列數(shù)目和輸入數(shù)據(jù)緩存區(qū)、基于AXI-4 的處理單元和控制接口及計算部分。重配置時修改陣列數(shù)目num,添加對應(yīng)路由緩存區(qū)buffer 的定義;處理單元和控制接口以及計算部分實現(xiàn)一次獨(dú)立的處理,根據(jù)陣列數(shù)目可整體增減,體現(xiàn)AXI-4 協(xié)議的IP擴(kuò)展性。偽代碼如下:
配置過程采用靜態(tài)可重構(gòu)系統(tǒng)的設(shè)計方法[15-16],在一次配置完成后手動修改路由配置參數(shù),完成重新固化,再燒寫比特流運(yùn)行,大大縮短設(shè)計周期。
實驗采用Xilinx 公司的Kintex-7開發(fā)板,其核心芯片為XC7K420T,實驗時FPGA 時鐘頻率為100 MHz。
實驗具體從流水線、路由與系統(tǒng)性能3 個方面進(jìn)行分析。流水線性能包括迭代間隔因子對流水線資源消耗和時耗的影響;在路由與系統(tǒng)性能方面,比較了不同實現(xiàn)方式的系統(tǒng)總時耗以及對應(yīng)的路由單元資源消耗。
文中設(shè)計在算法分割上將點(diǎn)云解算分為LiDAR測距值及其姿態(tài)數(shù)據(jù)解算、矩陣變換和高斯投影3 個功能模塊,分別設(shè)計了3 個算法處理單元并采用流水線處理來提升處理效率。流水線迭代間隔因子影響流水線性能,實驗分析了在處理一行360 個點(diǎn)元的情況下,迭代間隔因子對流水線的時鐘周期和資源消耗的影響。以矩陣變換算法為例,資源消耗綜合結(jié)果包括4 類硬件資源:存儲資源BRAM、專用計算塊DSP、觸發(fā)器FF 和查找表LUT,如表1 所示。
表1 矩陣變換硬件資源消耗和時鐘周期
從表1 可知,隨著迭代間隔因子的降低,流水線效率明顯提高,但4 類硬件資源消耗逐漸增加;文中設(shè)計的可重構(gòu)陣列實現(xiàn)并行處理既要提高處理效率,又需要避免并行實現(xiàn)時產(chǎn)生布線擁擠的情況,選取II=70 作為矩陣變換模塊的最終迭代間隔因子,進(jìn)行流水線性能控制。
LiDAR 數(shù)據(jù)具有按掃描行獲取并處理的特點(diǎn),對應(yīng)的每個處理單元以行為單位處理數(shù)據(jù)。文中針對兩種不同LiDAR 數(shù)據(jù)處理場景分別設(shè)計實驗:當(dāng)掃描頻率變化時通過配置路由并使用獨(dú)立單元、雙單元和三單元處理LiDAR 數(shù)據(jù),驗證數(shù)據(jù)并行處理的高效性;LiDAR 每行獲取數(shù)據(jù)的幅寬也會變化,對應(yīng)模擬3 種每行點(diǎn)元數(shù)不同的LiDAR 數(shù)據(jù)并使用不同的實現(xiàn)方式處理,驗證該設(shè)計能夠在一定程度上降低系統(tǒng)與數(shù)據(jù)的耦合性,提高系統(tǒng)可擴(kuò)展性。
1)實驗在可配置路由的基礎(chǔ)上,通過不同數(shù)目單元并行處理驗證處理效率。以每行處理120 像元數(shù)據(jù)為例,選取6.6 s 掃描的數(shù)據(jù),行頻100 Hz,數(shù)據(jù)行數(shù)為666 行,每行數(shù)據(jù)量為480 Byte,每行對應(yīng)的載荷位置數(shù)據(jù)量為56 B,總數(shù)據(jù)量為348 kB。通過不同的實現(xiàn)方式,仿真實現(xiàn)了666 包數(shù)據(jù)并行計算輸出數(shù)據(jù)的結(jié)果。表2 給出了獨(dú)立單元、雙單元和三單元的點(diǎn)云解算處理時耗對比,不同實現(xiàn)方式對應(yīng)的路由資源消耗如表3 所示。
表2 像元數(shù)120的點(diǎn)云解算時耗對比
由表2 可知,文中設(shè)計的雙單元和三單元處理666 行數(shù)據(jù)時用時分別為52.47 ms 和34.98 ms,對應(yīng)實際獲取數(shù)據(jù)時間為6.6 s 的掃描數(shù)據(jù),滿足激光雷達(dá)掃描頻率每行120 個點(diǎn)元數(shù)據(jù)的實時處理需求;從時鐘周期上,雙單元和三單元的并行加速效率為1.62 倍和2.43 倍。由表3 可知,不同實現(xiàn)方式的數(shù)據(jù)分配過程不同,對應(yīng)路由的BRAM 資源變化接近線性關(guān)系,表明系統(tǒng)通過路由靈活配置和并行單元的實現(xiàn)方式提升了處理效率。
表3 路由資源消耗對比
2)不同LiDAR 載荷的每行掃描幅寬往往不同,為了驗證文中設(shè)計處理不同掃描幅寬數(shù)據(jù)的高效性與靈活性,分別模擬了3 種LiDAR 數(shù)據(jù),像元數(shù)分別為120、240、360,LiDAR 行頻均為100 Hz,選取時間為6.6 s 的掃描數(shù)據(jù)。根據(jù)數(shù)據(jù)處理規(guī)模,分別通過獨(dú)立單元、雙單元和三單元的陣列方式實現(xiàn),對應(yīng)的系統(tǒng)總資源消耗與時耗分別如表4 和表5 所示。
表4 系統(tǒng)總資源消耗對比
由表4 可知,系統(tǒng)通過不同實現(xiàn)方式處理不同規(guī)模數(shù)據(jù),對應(yīng)的總資源消耗接近線性關(guān)系;在表5中,文中通過并行單元設(shè)計處理666 行3 種特性的數(shù)據(jù)用時分別為85.01 ms、104.90 ms、114.94 ms,滿足激光雷達(dá)掃描頻率下每行數(shù)據(jù)的實時處理需求,表明該設(shè)計方法能夠通過簡單的參數(shù)配置進(jìn)行系統(tǒng)資源重構(gòu),靈活高效地實現(xiàn)不同LiDAR 數(shù)據(jù)的處理。
表5 不同數(shù)據(jù)規(guī)模點(diǎn)云解算系統(tǒng)性能對比
文中采用基于可配置陣列的設(shè)計方法,設(shè)計并實現(xiàn)了激光點(diǎn)云解算的FPGA 系統(tǒng)。在Xilinx 公司的Kintex-7 開發(fā)板上通過流水線設(shè)計和并行陣列設(shè)計處理單元,以及利用AXI-4 協(xié)議設(shè)計可配置路由的方法,實現(xiàn)了靈活配置的點(diǎn)云解算FPGA 多陣列處理設(shè)計。實驗結(jié)果表明,文中的激光點(diǎn)云解算FPGA 多陣列設(shè)計能夠滿足平臺的實時性處理以及不同觀測載荷的點(diǎn)云解算任務(wù)處理需求,降低了系統(tǒng)與輸入數(shù)據(jù)間耦合性,為車載、航空、衛(wèi)星等實時處理平臺應(yīng)用提供了一種適應(yīng)不同數(shù)據(jù)率且資源可配置的FPGA 并行處理架構(gòu)設(shè)計思路,在同類型載荷FPGA 實時處理系統(tǒng)開發(fā)中能減少因數(shù)據(jù)獲取速率變化導(dǎo)致FPGA 系統(tǒng)的額外設(shè)計,為遙感數(shù)據(jù)實時并行處理提供了支持。