毫米波雷达半精度浮点存储格式分析

作者:英飞凌汽车电子生态圈 英飞凌技术专家 钱伟喆

雷达信号处理需要使用大量内存进行中间结果和最终结果的保存,而内存大小直接影响处理芯片的成本。选择合适的数据存储格式,既保留较高的信号分辨率和动态范围,又不占用太大的存储空间是相当重要的。本文介绍了TC3xx单片机雷达信号处理单元SPU支持的半精度浮点格式,将其和32bit整型数格式进行比较,分析了两者的动态范围及实际处理误差,发现半精度浮点格式是“性价比”较高的存储方式。另外,Tricore™ CPU还有专用硬件指令支持半精度和单精度浮点格式的相互转换,便于信号的后期处理,并缩短数据格式转换时间。

背景介绍

毫米波雷达在较短时间内(比如50ms每帧)需要处理大量数据,数据量和收发天线个数,每个发波的采样点数,以及发波个数成正比。下面简单举个例子,方便量化数据大小,使大家有感性认识。比如,采样点数为512,发波个数为128,典型的3T4R前端射频芯片,采用码分调制方式,实采样ADC转换结果为14bit,但考虑到后期便于信号处理,实际上一般使用16bit(2Byte)内存空间来存储。表1列出了各处理阶段的数据占用内存空间大小,由此可见,雷达信号处理对内存空间的需求较大,而内存大小直接影响芯片成本,所以,能采用一种合理的数据格式,既保留较高的信号分辨率和动态范围,又不占用太大的存储空间是相当重要。

1

表1.  各处理阶段的数据所占内存空间大小


数据格式

TC3xx单片机的雷达信号处理单元SPU,其输出支持多种数据格式,包括16位、32位整型复数或实数,16位半精度浮点等。其中16位半精度浮点既能保持数据的精度又不失较宽的动态范围,并且占用内存相对较少。根据IEEE 754标准【1】,16位半精度浮点数(binary16)的二进制位分为三部分,定义分别如下:

  1. 最高一位是符号位。

  2. 最高位后面的5位表示2的指数,该值要减去固定值15,才是最终指数。

  3. 剩下的10位(位于小数点右侧)再补上一位非显性位(该位在小数点左侧第一位)合成的11位是有效数。

     

以下定义摘自Wikipedia【2】。如果忽略subnormal以及无限数值,半精度浮点有效数值(normal value)为正的最小值是 2^(-14) ≈ 6.10 × 10^(-5)。数值为正的最大值是 (2−2^(-10)) × 2^15 = 65504。

2

表2. IEEE754 半精度浮点的数值范围,摘自Wikipedia.

下面我们比较一下32位整型数和16位半精度浮点数的动态范围,假设两者符号都为正。

qw

表3. 不同格式数据动态范围比较

从以上比较发现,两者的动态范围差别是3dB,而使用16位半精度浮点占用的内存存储空间却是采用32位整型数的一半,对于所选处理器芯片有较强成本优势。


为了进一步验证SPU用16位半精度浮点数和32位整型数的实际误差,用Matlab代码将半精度浮点格式归一化处理成32位整型格式,之后和SPU实际计算所得32位数据做比较。图1所示是(a) 第一维FFT结果和 (b)两者误差。两者最大误差是0.0021dB,而第一维FFT结果中最大值是78.828dB,该误差相当小。


aa
图1. (a) SPU 1st FFT计算结果(dB);(b) 16位半精度浮点数和32位整型数的结果误差(dB)


格式转换

SPU处理完数据后,通常用Tricore™ CPU进行下一阶段计算。Tricore™ CPU集成了硬件指令【3】,可以方便进行单精度浮点和半精度浮点数格式之间的转换。这两条指令是:

zz

两款常用编译器,Tasking 和Hightec Gnuc 编译器都支持以上数据格式转换指令。

  1. 在Tasking环境中,当指定C编译选项 --fp-model=-soft,C编译器会自动生成CPU硬件指令,进行半精度浮点类型(_Float16)和单精度浮点类型(float)之间的格式转换。

  2. 在Hightec Gnuc环境中,__float16 是半精度浮点的格式类型,在编译时会自动生成格式转换指令。例如以下代码:

ss

总结

雷达信号处理需要使用大量内存进行中间结果和最终结果的保存,而内存大小直接影响处理芯片的成本。选择合适的数据存储格式,既保留较高的信号分辨率和动态范围,又不占用太大的存储空间是相当重要的。本文介绍了TC3xx单片机雷达信号处理单元SPU支持的半精度浮点格式,将其和32bit整型数格式进行比较,分析了两者的动态范围及实际处理误差,发现半精度浮点格式是“性价比”较高的存储方式。另外,Tricore™ CPU还有专用硬件指令支持半精度和单精度浮点格式的相互转换,便于信号的后期处理,并缩短数据格式转换时间。


原文鏈接:https://mp.weixin.qq.com/s/2JA_bTj9-C4bL3lubhwU7w


参考文献

1.  IEEE Standard for Floating-Point Arithmetic

2. https://en.wikipedia.org/wiki/Half-precision_floating-point_format

3. TriCore_TC162P_core_architecture_vol2of2_Instruction_set


扫描二维码,关注英飞凌汽车电子寻找更多应用或产品信息

★博文内容参考自 网站,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

参考来源

英飞凌汽车电子生态圈: https://mp.weixin.qq.com/s/EYcbgTUCO-iqCMIoKjjviQ

评论