DSP中浮點數和定點數 dsp


2020-04-08  21:54:53

 

1 DSP中的數據表述
DSP中數據通常是有定點數與浮點數表示,其中可以對字長進行相關定義,可以選取字長為16位、24位、32位不同字長使用。而格式與字長決定了數據的精度與動態范圍,同時也一定程度上決定了DSP處理器的功耗、成本與編程難度。

定點數:小數點位置為確定的。

浮點數:小數點位置可以改變。

定點運算的硬件實現較為簡單,功耗較小,主要注意的是數據的定標、溢出以及誤差。

浮點器減結構較為復雜,但是精度較高,高級語言容易支持。

2 定點數的格式與相關運算
2.1 定點數格式
定點數格式:Qn 格式,n為小數位數。即Q15 ,小數點右邊有15個小數位,如果我們定義了一個長度為32位的數字,那么小數位為15,1位符號位,16位為整數位。

整數小數點固定在最后,定點數小數位固定使用上文的Qn 格式表示,兩者都使用二進制補碼形式表示。

例: Q4格式:01010011b=1•22+1•20+1•2-3+1•2-4=83/24=5.1875

對於負數(最高位MSB為1),要先把它轉化為無符號二進制數,再進行計算,最后加上負號。

 

圖2-1 二進制Q格式表示

定點數與浮點數轉化時需要使用2n 的關系進行轉化。

轉化關系如下圖:

 

 

 

圖2-2 定點數與浮點數轉化關系

浮點數轉換為定點數時,由於小數點后的位數有限,會產生截斷誤差。

2.2 數值范圍與精度
Qn 格式,字長為N數值范圍: -2N-12n~2N-1-12n  

 

 

精度:12n  

 

 

由於符號位占1位,所以數據位為N-1,n越大范圍越小,但精度越高。

 

 

 

圖2-3 數值范圍與精度

2.3 動態范圍
數據格式中最大值與最小值之比即為動態范圍。

N位定點數動態范圍:

 

 

 

分貝表示:dsp大多采用16位定點數,動態范圍為90.3db。

 

 

 

Dsp大多采用16為定點數,運算硬件實現較為簡單,更大動態范圍應用可以使用拓展字長方式。

3 定點數算術運算
3.1 定點數加減法運算
首先需要保證小數點對齊,但是運算結果可能會溢出。如果進位位與最高位(MSB)相同無溢出,不同則有溢出。

處理溢出通常有飽和模式與非飽和模式,飽和模式溢出時會對溢出進行限幅,如圖。非飽和模式不會處理。

 

 

 

圖3-1 飽和模式與非飽和模式

3.2 定點數乘法
DSP處理器都有硬件乘法器和乘法指令,可實現單周期乘法運算。二進制乘法運算包含了移位與加法運算。

定點數乘法不要求小數點位統一,兩個相乘數分別為Qn和Qm格式,字長為N,結果為Q(n+m)格式,字長為2N。

在進行運算時,需要字長保持不變,則兩個定點小數作乘法運算,結果左移一位,保存高位得到運算結果,結果為Qm(m≤ n)格式。

若整數乘小數,則輸出結果為整數,丟棄后8位為截尾誤差。誤差小於等於Qn格式精度的一半,即小於等於12n+1 。單次計算誤差不大,但連續計算,尤其是遞歸算法中,誤差影響較大。

整數相乘,結果為Q0格式,需查詢標志位確定保存的位數,結果不需要左移一位。若結果沒有超出8位數的表示范圍時,結果在低8位,保存低8位。若結果超出8位數的表示范圍時,則高8位也包含乘積結果,應保存整個16位結果。

參考:https://blog.csdn.net/wasser000/article/details/90575201


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM