作者:英飛凌汽車電子生態圈 英飛凌技術專家 錢偉喆
雷達信號處理需要使用大量內存進行中間結果和最終結果的保存,而內存大小直接影響處理芯片的成本。選擇合適的數據存儲格式,既保留較高的信號分辨率和動態范圍,又不占用太大的存儲空間是相當重要的。本文介紹了TC3xx單片機雷達信號處理單元SPU支持的半精度浮點格式,將其和32bit整型數格式進行比較,分析了兩者的動態范圍及實際處理誤差,發現半精度浮點格式是“性價比”較高的存儲方式。另外,Tricore? CPU還有專用硬件指令支持半精度和單精度浮點格式的相互轉換,便于信號的后期處理,并縮短數據格式轉換時間。
背景介紹
毫米波雷達在較短時間內(比如50ms每幀)需要處理大量數據,數據量和收發天線個數,每個發波的采樣點數,以及發波個數成正比。下面簡單舉個例子,方便量化數據大小,使大家有感性認識。比如,采樣點數為512,發波個數為128,典型的3T4R前端射頻芯片,采用碼分調制方式,實采樣ADC轉換結果為14bit,但考慮到后期便于信號處理,實際上一般使用16bit(2Byte)內存空間來存儲。表1列出了各處理階段的數據占用內存空間大小,由此可見,雷達信號處理對內存空間的需求較大,而內存大小直接影響芯片成本,所以,能采用一種合理的數據格式,既保留較高的信號分辨率和動態范圍,又不占用太大的存儲空間是相當重要。
![1](https://file1.elecfans.com/web2/M00/C1/34/wKgaomXUPbSADTIHAACcSihg4QY068.jpg)
表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](https://file1.elecfans.com/web2/M00/C0/46/wKgZomXUPbOAXMVGAAA5uZKRCGk555.png)
表2. IEEE754 半精度浮點的數值范圍,摘自Wikipedia.
下面我們比較一下32位整型數和16位半精度浮點數的動態范圍,假設兩者符號都為正。
![qw](https://file1.elecfans.com/web2/M00/C0/46/wKgZomXUPbOAKBIbAACRQ5JU-jo849.jpg)
表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固定格式播放
![aa](https://file1.elecfans.com/web2/M00/C0/46/wKgZomXUPbSAczKOAABx7-yUlYM500.jpg)
圖1. (a) SPU 1stFFT計算結果(dB);(b) 16位半精度浮點數和32位整型數的結果誤差(dB)
格式轉換
SPU處理完數據后,通常用Tricore? CPU進行下一階段計算。Tricore? CPU集成了硬件指令【3】,可以方便進行單精度浮點和半精度浮點數格式之間的轉換。這兩條指令是:
![zz](https://file1.elecfans.com/web2/M00/C1/34/wKgaomXUPbOARc_tAAA7Fcr-TAE516.jpg)
兩款常用編譯器,Tasking 和Hightec Gnuc 編譯器都支持以上數據格式轉換指令。
在Tasking環境中,當指定C編譯選項 --fp-model=-soft,C編譯器會自動生成CPU硬件指令,進行半精度浮點類型(_Float16)和單精度浮點類型(float)之間的格式轉換。
在Hightec Gnuc環境中,__float16 是半精度浮點的格式類型,在編譯時會自動生成格式轉換指令。例如以下代碼:
![ss](https://file1.elecfans.com/web2/M00/C0/46/wKgZomXUPbSAPozRAABdjB0QsVc468.jpg)
總結
雷達信號處理需要使用大量內存進行中間結果和最終結果的保存,而內存大小直接影響處理芯片的成本。選擇合適的數據存儲格式,既保留較高的信號分辨率和動態范圍,又不占用太大的存儲空間是相當重要的。本文介紹了TC3xx單片機雷達信號處理單元SPU支持的半精度浮點格式,將其和32bit整型數格式進行比較,分析了兩者的動態范圍及實際處理誤差,發現半精度浮點格式是“性價比”較高的存儲方式。另外,Tricore? CPU還有專用硬件指令支持半精度和單精度浮點格式的相互轉換,便于信號的后期處理,并縮短數據格式轉換時間。
-
英飛凌
+關注
關注
67文章
2218瀏覽量
139086 -
cpu
+關注
關注
68文章
10904瀏覽量
213024 -
毫米波
+關注
關注
21文章
1929瀏覽量
65022 -
輔助駕駛
+關注
關注
1文章
175瀏覽量
15098
發布評論請先 登錄
相關推薦
評論