雷達信號處理需要使用大量內存進行中間結果和最終結果的保存,而內存大小直接影響處理晶片的成本。選擇合適的數據存儲格式,既保留較高的信號解析度和動態範圍,又不占用太大的存儲空間是相當重要的。本文介紹了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)的二進制位分為三部分,定義分別如下:
以下定義摘自Wikipedia【2】。如果忽略subnormal以及無限數值,半精度浮點有效數值(normal value)為正的最小值是 2^(-14) ≈ 6.10 × 10^(-5)。數值為正的最大值是 (2−2^(-10)) × 2^15 = 65504。 從以上比較發現,兩者的動態範圍差別是3dB,而使用16位半精度浮點占用的內存存儲空間卻是採用32位整型數的一半,對於所選處理器晶片有較強成本優勢。
![]() 圖1. (a) SPU 1st FFT計算結果(dB);(b) 16位半精度浮點數和32位整型數的結果誤差(dB) 格式轉換 SPU處理完數據後,通常用Tricore™ CPU進行下一階段計算。Tricore™ CPU集成了硬體指令【3】,可以方便進行單精度浮點和半精度浮點數格式之間的轉換。這兩條指令是: ![]() 兩款常用編譯器,Tasking 和Hightec Gnuc 編譯器都支持以上數據格式轉換指令。
![]() 總結 雷達信號處理需要使用大量內存進行中間結果和最終結果的保存,而內存大小直接影響處理晶片的成本。選擇合適的數據存儲格式,既保留較高的信號解析度和動態範圍,又不占用太大的存儲空間是相當重要的。本文介紹了TC3xx單片機雷達信號處理單元SPU支持的半精度浮點格式,將其和32bit整型數格式進行比較,分析了兩者的動態範圍及實際處理誤差,發現半精度浮點格式是“性價比”較高的存儲方式。另外,Tricore™ CPU還有專用硬體指令支持半精度和單精度浮點格式的相互轉換,便於信號的後期處理,並縮短數據格式轉換時間。 |