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

描述

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

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

背景介绍

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

 

辅助驾驶



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


数据格式
 

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

最高一位是符号位。

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

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

 

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

 

辅助驾驶



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

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

 

辅助驾驶



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

 

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


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

延伸阅读

 

共同关键字:

ADAS

车载毫米波雷达应用介绍

毫米波雷达的名词释义

Mediatek联发科PD快充方案,PD快充协议的优势分析与其他方案

QCC51xx系列开发之A2dp Codec固定格式播放


 

辅助驾驶


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


格式转换

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

 

辅助驾驶



 

 

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

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

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

辅助驾驶



总结
 

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

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分