定點化問題

2021-08-08 02:00:22 字數 1205 閱讀 4640



在定點dsp晶元中,採用定點數進行數值運算,其運算元一般採用整型數來表示。乙個整型數的最大表示範圍取決於dsp晶元所給定的字長,一般為16位或24位。顯然,字長越長,所能表示的數的範圍越大,精度也越高。如無特別說明,本書均以16位字長為例。

dsp晶元的數以2的補碼形式表示。每個16位數用乙個符號位來表示數的正負,0表示數值為正,l則表示數值為負。其餘15位表示數值的大小。因此,

二進位制數0010000000000011b=8195

二進位制數1111111111111100b= -4

對dsp晶元而言,參與數值運算的數就是16位的整型數。但在許多情況下,數**算過程中的數不一定都是整數。那麼,dsp晶元是如何處理小數的呢?應該說,dsp晶元本身無能為力。那麼是不是說dsp晶元就不能處理各種小數呢?當然不是。這其中的關鍵就是由程式設計師來確定乙個數的小數點處於16位中的哪一位。這就是數的定標。

通過設定小數點在16位數中的不同位置,就可以表示不同大小和不同精度的小數了。數的定標有q表示法和s表示法兩種。表1.1列出了乙個16位數的16種q表示、s表示及它們所能表示的十進位制數值範圍。

從表1.1可以看出,同樣乙個16位數,若小數點設定的位置不同,它所表示的數也就不同。例如,

16進製制數2000h=8192,用q0表示

16進製制數2000h=0.25,用q15表示

但對於dsp晶元來說,處理方法是完全相同的。

從表1.1還可以看出,不同的q所表示的數不僅範圍不同,而且精度也不相同。q越大,數值範圍越小,但精度越高;相反,q越小,數值範圍越大,但精度就越低。例如,q0 的數值範圍是一32768到+32767,其精度為1,而q15的數值範圍為-1到0.9999695,精度為1/32768=0.00003051。因此,對定點數而言,數值範圍與精度是一對矛盾,乙個變數要想能夠表示比較大的數值範圍,必須以犧牲精度為代價;而想精度提高,則數的表示範圍就相應地減小。在實際的定點演算法中,為了達到最佳的效能,必須充分考慮到這一點。

浮點數與定點數的轉換關係可表示為:

浮點數(x)轉換為定點數(xq):xq=(int)x* 2q

定點數(xq)轉換為浮點數(x):x=(float)xq*2-q

例如,浮點數x=0.5,定標q=15,則定點數xq=l0.5*32768j=16384,式中lj表示下取整。反之,乙個用q=15表示的定點數 16384,其浮點數為163幼*2-15=16384/32768=0.5。浮點數轉換為定點數時,為了降低截尾誤差,在取整前可以先加上0.5。

FPGA浮點數定點化

因為在普通的fpga晶元裡面,暫存器只可以表示無符號型,不可以表示小數,所以在計算比較精確的數值時,就需要做一些處理,不過在altera在arria 10 中增加了硬核浮點dsp模組,這樣更加適合硬體加速和做一些比較精確的計算。浮點數和定點數的區別 定點數的小數點是固定的,而浮點數的小數點的位置不確...

浮點數定點化表示

例 12.918進行定點化,11位的位寬帶來的量化誤差是多少?4位用來表示整數,7位用來表示小數。解析度為 1 2 7 0.0078125 0.918 0.0078125 118 118 0.0078125 0.921875 量化誤差 0.921875 0.918 0.003875 0.5 解析度,...

浮點數定點化的初步認識

fpga只能處理定點數,alteral stratix 10可以支援硬浮點,如軍方雷達 機器視覺等硬體加速。浮點數 2.918 3.1415986 浮點轉定點 如16位,表示範圍32767 32768 定義小數需求多少位 如12位 整數需求多少位 如3位 最高位為符號位 針對有符號數,1位 對於低1...