毫米波雷达半精度浮点存储格式分析
【导读】雷达信号处理需要使用大量内存进行中间结果和最终结果的保存,而内存大小直接影响处理芯片的成本。选择合适的数据存储格式,既保留较高的信号分辨率和动态范围,又不占用太大的存储空间是相当重要的。本文介绍了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)的二进制位分为三部分,定义分别如下:
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. IEEE754半精度浮点的数值范围,摘自Wikipedia.
下面我们比较一下32位整型数和16位半精度浮点数的动态范围,假设两者符号都为正。
表3. 不同格式数据动态范围比较
从以上比较发现,两者的动态范围差别是3dB,而使用16位半精度浮点占用的内存存储空间却是采用32位整型数的一半,对于所选处理器芯片有较强成本优势。
为了进一步验证SPU用16位半精度浮点数和32位整型数的实际误差,用Matlab代码将半精度浮点格式归一化处理成32位整型格式,之后和SPU实际计算所得32位数据做比较。图1所示是(a) 第一维FFT结果和 (b)两者误差。两者最大误差是0.0021dB,而第一维FFT结果中最大值是78.828dB,该误差相当小。
图1. (a) SPU 1st FFT计算结果(dB);(b) 16位半精度浮点数和32位整型数的结果误差(dB)
格式转换
SPU处理完数据后,通常用Tricore? CPU进行下一阶段计算。Tricore? CPU集成了硬件指令【3】,可以方便进行单精度浮点和半精度浮点数格式之间的转换。这两条指令是:
两款常用编译器,Tasking 和Hightec Gnuc 编译器都支持以上数据格式转换指令。
1. 在Tasking环境中,当指定C编译选项 --fp-model=-soft,C编译器会自动生成CPU硬件指令,进行半精度浮点类型(_Float16)和单精度浮点类型(float)之间的格式转换。
2. 在Hightec Gnuc环境中,__float16 是半精度浮点的格式类型,在编译时会自动生成格式转换指令。例如以下代码:
总结
雷达信号处理需要使用大量内存进行中间结果和最终结果的保存,而内存大小直接影响处理芯片的成本。选择合适的数据存储格式,既保留较高的信号分辨率和动态范围,又不占用太大的存储空间是相当重要的。本文介绍了TC3xx单片机雷达信号处理单元SPU支持的半精度浮点格式,将其和32bit整型数格式进行比较,分析了两者的动态范围及实际处理误差,发现半精度浮点格式是“性价比”较高的存储方式。另外,Tricore? CPU还有专用硬件指令支持半精度和单精度浮点格式的相互转换,便于信号的后期处理,并缩短数据格式转换时间。
参考文献
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
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理。