新聞中心

EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 毫米波雷達(dá)半精度浮點(diǎn)存儲(chǔ)格式分析

毫米波雷達(dá)半精度浮點(diǎn)存儲(chǔ)格式分析

作者: 時(shí)間:2023-07-04 來源:英飛凌 收藏

信號(hào)處理需要使用大量內(nèi)存進(jìn)行中間結(jié)果和最終結(jié)果的保存,而內(nèi)存大小直接影響處理芯片的成本。選擇合適的數(shù)據(jù)存儲(chǔ)格式,既保留較高的信號(hào)分辨率和動(dòng)態(tài)范圍,又不占用太大的存儲(chǔ)空間是相當(dāng)重要的。本文介紹了TC3xx單片機(jī)信號(hào)處理單元SPU支持的半精度浮點(diǎn)格式,將其和32bit整型數(shù)格式進(jìn)行比較,分析了兩者的動(dòng)態(tài)范圍及實(shí)際處理誤差,發(fā)現(xiàn)半精度浮點(diǎn)格式是“性價(jià)比”較高的存儲(chǔ)方式。另外,Tricore? CPU還有專用硬件指令支持半精度和單精度浮點(diǎn)格式的相互轉(zhuǎn)換,便于信號(hào)的后期處理,并縮短數(shù)據(jù)格式轉(zhuǎn)換時(shí)間。

本文引用地址:http://m.butianyuan.cn/article/202307/448244.htm

技術(shù)專家 錢偉喆

背景介紹

在較短時(shí)間內(nèi)(比如50ms每幀)需要處理大量數(shù)據(jù),數(shù)據(jù)量和收發(fā)天線個(gè)數(shù),每個(gè)發(fā)波的采樣點(diǎn)數(shù),以及發(fā)波個(gè)數(shù)成正比。下面簡單舉個(gè)例子,方便量化數(shù)據(jù)大小,使大家有感性認(rèn)識(shí)。比如,采樣點(diǎn)數(shù)為512,發(fā)波個(gè)數(shù)為128,典型的3T4R前端射頻芯片,采用碼分調(diào)制方式,實(shí)采樣ADC轉(zhuǎn)換結(jié)果為14bit,但考慮到后期便于信號(hào)處理,實(shí)際上一般使用16bit(2Byte)內(nèi)存空間來存儲(chǔ)。表1列出了各處理階段的數(shù)據(jù)占用內(nèi)存空間大小,由此可見,雷達(dá)信號(hào)處理對(duì)內(nèi)存空間的需求較大,而內(nèi)存大小直接影響芯片成本,所以,能采用一種合理的數(shù)據(jù)格式,既保留較高的信號(hào)分辨率和動(dòng)態(tài)范圍,又不占用太大的存儲(chǔ)空間是相當(dāng)重要。

1688030457994340.jpg

表1.  各處理階段的數(shù)據(jù)所占內(nèi)存空間大小

數(shù)據(jù)格式

TC3xx單片機(jī)的雷達(dá)信號(hào)處理單元SPU,其輸出支持多種數(shù)據(jù)格式,包括16位、32位整型復(fù)數(shù)或?qū)崝?shù),16位半精度浮點(diǎn)等。其中16位半精度浮點(diǎn)既能保持?jǐn)?shù)據(jù)的精度又不失較寬的動(dòng)態(tài)范圍,并且占用內(nèi)存相對(duì)較少。根據(jù)IEEE 754標(biāo)準(zhǔn)【1】,16位半精度浮點(diǎn)數(shù)(binary16)的二進(jìn)制位分為三部分,定義分別如下:

1. 最高一位是符號(hào)位。

2. 最高位后面的5位表示2的指數(shù),該值要減去固定值15,才是最終指數(shù)。

3. 剩下的10位(位于小數(shù)點(diǎn)右側(cè))再補(bǔ)上一位非顯性位(該位在小數(shù)點(diǎn)左側(cè)第一位)合成的11位是有效數(shù)。

以下定義摘自Wikipedia【2】。如果忽略subnormal以及無限數(shù)值,半精度浮點(diǎn)有效數(shù)值(normal value)為正的最小值是 2^(-14) ≈ 6.10 × 10^(-5)。數(shù)值為正的最大值是 (2?2^(-10)) × 2^15 = 65504。

1688030443540992.png

表2.  IEEE754半精度浮點(diǎn)的數(shù)值范圍,摘自Wikipedia.

下面我們比較一下32位整型數(shù)和16位半精度浮點(diǎn)數(shù)的動(dòng)態(tài)范圍,假設(shè)兩者符號(hào)都為正。

1688030428533494.jpg

表3. 不同格式數(shù)據(jù)動(dòng)態(tài)范圍比較

從以上比較發(fā)現(xiàn),兩者的動(dòng)態(tài)范圍差別是3dB,而使用16位半精度浮點(diǎn)占用的內(nèi)存存儲(chǔ)空間卻是采用32位整型數(shù)的一半,對(duì)于所選處理器芯片有較強(qiáng)成本優(yōu)勢。

為了進(jìn)一步驗(yàn)證SPU用16位半精度浮點(diǎn)數(shù)和32位整型數(shù)的實(shí)際誤差,用Matlab代碼將半精度浮點(diǎn)格式歸一化處理成32位整型格式,之后和SPU實(shí)際計(jì)算所得32位數(shù)據(jù)做比較。圖1所示是(a) 第一維FFT結(jié)果和 (b)兩者誤差。兩者最大誤差是0.0021dB,而第一維FFT結(jié)果中最大值是78.828dB,該誤差相當(dāng)小。

1688030413293507.jpg

圖1. (a) SPU 1st FFT計(jì)算結(jié)果(dB);(b) 16位半精度浮點(diǎn)數(shù)和32位整型數(shù)的結(jié)果誤差(dB)

格式轉(zhuǎn)換

SPU處理完數(shù)據(jù)后,通常用Tricore? CPU進(jìn)行下一階段計(jì)算。Tricore? CPU集成了硬件指令【3】,可以方便進(jìn)行單精度浮點(diǎn)和半精度浮點(diǎn)數(shù)格式之間的轉(zhuǎn)換。這兩條指令是:

12.jpg

兩款常用編譯器,Tasking 和Hightec Gnuc 編譯器都支持以上數(shù)據(jù)格式轉(zhuǎn)換指令。

1. 在Tasking環(huán)境中,當(dāng)指定C編譯選項(xiàng) --fp-model=-soft,C編譯器會(huì)自動(dòng)生成CPU硬件指令,進(jìn)行半精度浮點(diǎn)類型(_Float16)和單精度浮點(diǎn)類型(float)之間的格式轉(zhuǎn)換。

2. 在Hightec Gnuc環(huán)境中,__float16 是半精度浮點(diǎn)的格式類型,在編譯時(shí)會(huì)自動(dòng)生成格式轉(zhuǎn)換指令。例如以下代碼:

13.jpg

總結(jié)

雷達(dá)信號(hào)處理需要使用大量內(nèi)存進(jìn)行中間結(jié)果和最終結(jié)果的保存,而內(nèi)存大小直接影響處理芯片的成本。選擇合適的數(shù)據(jù)存儲(chǔ)格式,既保留較高的信號(hào)分辨率和動(dòng)態(tài)范圍,又不占用太大的存儲(chǔ)空間是相當(dāng)重要的。本文介紹了TC3xx單片機(jī)雷達(dá)信號(hào)處理單元SPU支持的半精度浮點(diǎn)格式,將其和32bit整型數(shù)格式進(jìn)行比較,分析了兩者的動(dòng)態(tài)范圍及實(shí)際處理誤差,發(fā)現(xiàn)半精度浮點(diǎn)格式是“性價(jià)比”較高的存儲(chǔ)方式。另外,Tricore? CPU還有專用硬件指令支持半精度和單精度浮點(diǎn)格式的相互轉(zhuǎn)換,便于信號(hào)的后期處理,并縮短數(shù)據(jù)格式轉(zhuǎn)換時(shí)間。

參考文獻(xiàn)

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



關(guān)鍵詞: 英飛凌 毫米波 雷達(dá)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉