文献标识码:A
DOI:10.16157/j.issn.0258-7998.182355
中文引用格式:何锐斌,李子扬,贺文静,等. 激光点云解算的软硬件协同设计与实现[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 引言
近年来,遥感技术迅猛发展,激光雷达技术(Light Detection And Ranging,LiDAR)能够快速获取并实时处理形成高精度地表多维信息[1],在车载、机载和星载等平台具有广泛应用[2-4],LiDAR的实时性处理问题是目前的研究热点。LiDAR系统获取的原始数据需要经过点云解算才能形成三维数据,点云解算是LiDAR系统数据处理算法中必不可少的环节,具有计算量大、处理算法复杂等特点,机载和星载等高速平台更是对点云解算实时性处理提出了更高的要求[5],同时也对系统的硬件资源和功耗有着严格限制。
随着超大规模集成电路技术的迅速发展,片上系统[6](System on a Chip,SoC)被广泛应用于计算机、电子通信和军工等领域,多核异构[7]的运算处理模式能够有效提升系统的运算性能,通过ARM处理器完成灵活性较高的软件实现,配合FPGA或ASIC对系统进行硬件加速,这种软硬件协同的开发模式能够充分发挥异构处理核各自的优势,在短周期内实现低功耗、高性能的实时处理系统。
本文采用基于软硬件协同的设计方法,充分结合点云解算的数据和运算特点,运用流水线优化和本地存储优化策略,开发了基于FPGA的硬件加速器,提升点云解算的运算性能。
1 激光点云解算原理
激光点云解算是将激光雷达测距数据和定位定向系统(Position and Orientation System,POS)设备的位置姿态信息进行联合解算,得到每个激光点元的三维坐标的过程,处理流程图如图1所示。这个过程涉及激光雷达距离信息解算、POS数据解算、坐标变换和高斯投影等过程,其中高斯投影涉及大量的乘法和三角运算,是该算法的性能瓶颈。
2 软硬件协同设计与实现
2.1 SoC结构设计
本文将激光点云解算分为软件实现和硬件加速两个部分,其中一部分是将运算简单、具有较多判断语句和指针操作的算法模块交由PS端软件实现。另一部分则是将对算法性能影响较大,可并向化程度高并且不需要逻辑判断的部分用PL端的FPGA硬件加速器实现,以获得更短的处理时耗。PL端的硬件逻辑电路通过流水线方法优化和本地存储优化,实现SoC的性能加速。
激光雷达测距数据以及对应的POS数据存储在外部存储单元中,之后读取到PS端的内存中。PS端负责处理激光点元的距离解算、POS数据解算和坐标变换三个模块的运算。高斯投影模块处理的点云数据间的依赖性低,可并行化程度较高,由PL端的硬件逻辑电路实现。最终PS端将处理完成的三维点云坐标结果存储到外部存储单元中。SoC结构设计如图2所示。
2.2 通信设计
PL端和PS端之间的数据通信是实现软硬件协同处理的重要组成部分,主要分为消息通信和数据传输两部分。消息通信主要是实现PL端的硬件加速器和PS端的处理器之间的状态反馈。数据传输实现硬件加速器和处理器之间大量的运算数据的传递,包括硬件加速器运算数据的输入传输和运算结果数据的回写传输。
结合FPGA本地存储空间小而访问速度快、主存储器空间大而访问速度较慢以及点云解算具有按扫描行存储处理数据的特点,为了获取PS端和PL端的最大传输性能,本文使用了基于AXI-4协议[8]的DMA高速传输方式。DMA是一种高效的数据传递方式,通过DMA控制器实现硬件加速器和内存之间的数据传递,无需ARM核CPU的干预。因此,在PL端的FPGA硬件加速器访问主存的时候,PS端的CPU可以继续执行程序。AXI-4协议具有独立的读和写数据通道,支持低成本的直接存储器访问DMA传输。同时,该协议是基于开始地址的猝发式传输,能够完成整块数据的搬移,并具有广泛的IP可拓展性。
本文在设计FPGA硬件加速器时精简了控制信号,只保留数据传输的起止反馈信号,进一步减少了传输量和时延,将点云解算数据转化为流数据进行传输,实现硬件加速器和ARM处理器之间的高速数据通信。
DMA传输不可避免地会带来Cache数据和内存数据不一致的问题[9]。如图3所示,CPU通过DMA控制器来控制PL端的硬件加速器和PS端的内存之间的数据传送。当硬件加速器将处理完成的数据回写到内存中,这时内存中变量A已经更新,但Cache中变量A的值不变。在CPU访问变量A时,命中Cache获取了旧值而不是内存中已经更新的A值,引发数据不一致现象。
本文通过XSDK开发环境中的cacheFlush( )和cacheIncalidate( )函数在PS端解决了维护Cache一致性的问题:在通信数据通过DMA传入FPGA硬件加速器之前,使用cacheFlush( )函数将Cache中对应的缓存数据压入DDR中。在硬件加速器完成数据处理并回写结果到DDR后,使用cacheIncalidate( )函数保持DDR和CPU之间的数据同步。
2.3 加速器设计与优化
硬件加速器的设计由FPGA实现,包括通信单元、运算处理单元和存储单元,为了进一步提高运行性能,进行运算处理单元流水线优化和存储单元的优化。
2.3.1 流水线优化
为了增加程序的并发性,流水线优化可以使多次迭代中的相同操作依次执行,在不大幅度增加硬件资源的情况下,最大限度地减小迭代间的时延,提升硬件加速器的运算效率。下面对处理函数的流水线优化进行说明。
如图4所示,用循环对每个激光雷达点元进行处理,假设每个点元的处理周期为T,共有N个点元,则流水线优化前,需要的总时钟个数为N×T个周期;流水线优化后,假设循环迭代间的周期间隔为Ti,则总时钟为N×Ti+T个周期,性能提升倍数为:
在XHLS开发环境中通过PIPELINE优化指令可以对硬件加速器运算处理的循环函数进行流水线优化,通过迭代间隔(Initiation Interval,II)约束因子,可以对流水线的迭代间隔进行控制,进而影响硬件加速器的流水线的性能和硬件资源消耗。本文通过流水线优化设计,在流水线迭代间隔II=5的情况下,能够实现FPGA运算性能近35倍的提升。
2.3.2 存储优化
在一般的流水线设计中,数据的本地存储是相对独立的,即先将DMA数据流全部读取到FPGA本地存储单元,再进行流水线运算处理,将处理结果写入到本地存储单元,最后通过DMA整体回写到PS端的内存中,这种处理模式既消耗FPGA的硬件存储资源又增加了处理时延。
本文结合点云解算数据独立性强,数据间依赖性弱的特点,优化FPGA本地存储,直接将DMA传输的数据通道连接入运算流水线上,使每个点元数据的读写直接“镶嵌”到流水线处理中,进一步减少本地存储和时延,硬件加速器的整体运算性能在流水线的基础上再提升2倍。存储优化前后示意图如图5所示。
3 实验结果分析
实验采用Xilinx公司的Zedboard开发板,该板以ZYNQ-7000芯片为核心,集成Cortex-A9双ARM处理核和Artix7 FPGA可编程逻辑阵列。实验时,PS端的ARM处理器主频设置为667 MHz,PL端的FPGA时钟频率为100 MHz。实验激光点云原始数据来自某线阵推扫LiDAR载荷飞行试验获取的一段数据,行数为666行,每行数据量为1 448 B,每行对应的载荷位置POS数据量为56 B,总数据量为978 KB。
3.1 硬件资源消耗
实验分析了FPGA硬件加速器的流水线设计中,不同迭代间隔II对其硬件资源的占用率的影响。在数据处理量一定的情况下,流水线的II约束因子分别设置为2、5、10、20、40,获取加速器的硬件资源消耗情况和对应的处理时延,并计算其相对于流水线优化前的性能提升倍数,如表1所示。
从表1可知,随着流水线的迭代间隔(II)减小,硬件加速器的4种类型的硬件资源消耗在不断增加。当约束因子II向1个时钟周期压缩的时候,DSP和LUT资源消耗急剧增加。本文结合开发板硬件资源可使用量,选择II=5作为最终硬件加速器流水线的迭代间隔。
3.2 运行性能分析
为了比较本文设计的硬件加速器的加速效果,分别测出了在ARM处理器软件实现算法的处理时延周期,以及硬件加速器在各个优化设计阶段的处理时延周期,并计算其相对于软件实现的加速比。表2给出了处理一行LiDAR点元数据的实验结果。
各种实现方式的处理周期和加速比如图6所示,结合表2和图6可以看出,本文设计的硬件加速器的性能相比于单纯的软件实现具有大幅度的提升。
实验表明,本文提出的设计处理单行激光点云数据耗时6.5 ms,能够满足激光雷达在150 Hz扫描频率下每行360点元数据的实时处理要求。
4 结论
本文采用基于软硬件协同的设计方法,设计并实现了激光点云解算的SoC。在Xilinx公司的Zedboard开发板上,采用流水线优化和FPGA存储优化的方法,开发了具有高效运行性能的硬件加速器。实验结果表明,本文的激光点云解算SoC能够满足机载平台的实时性处理要求,使三维点云解算在飞行器、卫星等高速平台进行低功耗、实时性处理成为可能,为遥感三维影像生成技术的片上系统实现奠定了坚实的基础。
参考文献
[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] 李然,王成,苏国中,等.星载激光雷达的发展与应用[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] 陈芳园,张冬松,王志英.异构多核处理器体系结构设计研究[J].计算机工程与科学,2011(12):27-36.
[8] 马飞,刘琦,包斌.基于FPGA的AXI4总线时序设计与实现[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)