DSP定點與浮點計算
在定點DSP芯片中,采用定點數進行數值運算,其操作數一般采用整型數來表示。一個整型數的最大表示範圍取決於DSP芯片所給定的字長,一般為16位或24位。顯然,字長越長,所能表示的數的範圍越大,精度也越高。如無特別說明,本書均以16位字長為例。
DSP芯片的數以2的補碼形式表示。每個16位數用一個符號位來表示數的正負,0表示數值為正,1則表示數值為負。其余15位表示數值的大小。因此,
對DSP芯片而言,參與數值運算的數就是16位的整型數。但在許多情況下,數學運算過程中的數不一定都是整數。那麽,DSP芯片是如何處理小數的呢?應該說,DSP芯片本身無能為力。那麽是不是說DSP芯片就不能處理各種小數呢?當然不是。這其中的關鍵就是由程序員來確定一個數的小數點處於
通過設定小數點在16位數中的不同位置,就可以表示不同大小和不同精度的小數了。數的定標有Q表示法和S表示法兩種。表3.1列出了一個16位數的16種Q表示、S表示及它們所能表示的十進制數值範圍。
從表3.1可以看出,同樣一個16位數,若小數點設定的位置不同,它所表示的數也就不同。例如:
但對於DSP芯片來說,處理方法是完全相同的。
從表3.1還可以看出,不同的Q所表示的數不僅範圍不同,而且精度也不相同。Q越大,數值範圍越小,但精度越高;相反,Q越小,數值範圍越大,但精度就越低。例如,Q0的數值範圍是-32768到+32767,其精度為1,而Q15的數值範圍為-1到0.9999695,精度為 1/32768 = 0.00003051。因此,對定點數而言,數值範圍與精度是一對矛盾,一個變量要想能夠表示比較大的數值範圍,必須以犧牲精度為代價;而想提高精度,則數的表示範圍就相應地減小。在實際的定點算法中,為了達到最佳的性能,必須充分考慮到這一點。
浮點數與定點數的轉換關系可表示為:
DSP定點與浮點計算