定點數
定點數是指,數字在小數點之後和之前具有固定的位數。
可以用Qm.n表示法進行表示.
- m位為整數部分
- n位小數部分
- 有符号數的總位數N = m + n + 1
當n=0時,則定點數用來存儲整數。
定點數(整數)
定點數可以用來存儲整數,包括正整數和負整數。定點(整數)表示的常見格式有unsigned integer, offset binary, sign and magnitude, two’s complement。
假設每個整數都用4個bit來表示,則在上面四種格式下,二進制和十進制之間的關系如下圖所示。
Unsigned integer是最直覺的二進制格式,用windows自帶的電腦就能實作換算。
Offset binary與unsigned integer類似,不同之處是相同的二進制表示,offset binary下代表的十進制數與unsigned integer下代表的十進數有一個整體偏移,這樣就可以表示負數。
比如在圖1中,4 bit二進制數對應于整數-7~8,在offset binary格式下,十進制數整體偏移了7。
對于這個偏移量,沒有固定标準,比如上面的偏移量是7,也可以為8。在ADC和DAC中,經常會用到offset binary.
sign and magnitude是表示負整數的另一種簡單方法。 最左邊的位為符号位,0代表正數,1代表負數。其他位是數字絕對值的标準二進制表示形式。因為對于零有兩種表示形式,即0000(正零)和1000(負零),是以會導緻一個浪費的位模式。
Two’s complement(二進制補碼)是硬體工程師喜歡的格式,也是計算機中通常表示整數的方式。 最左邊的位為符号位,0代表數字為正數或0,1代表數字為1。
其編碼模式可以了解為:
對于4bit二進制,其二進制表示仍為0000~1111。如上圖所示,将圓盤分為16等分,把0000~1111依次帶入。然後以0為分界線,按順時針轉,即0000~0111代表0~7;按逆時針轉,即1111~1000代表-1~-8。
采用二進制補碼時,對于正數,在十進制數和二進制補碼之間進行轉換很簡單,即從十進制到二進制的簡單轉換。 對于負數,通常使用以下算法:
(1)取十進制數的絕對值,
(2)将其轉換為二進制,
(3)對所有位進行補碼(1變為零,0變為1),
(4)在二進制數上加1。
二進制補碼對人類的大腦來說比較複雜,但是在進行資料處理時,則非常友善。
定點數(小數)
以上是當N=16時,不同的m/n值時,所對應的動态範圍和精度。
浮點數(實數)
浮點數的編碼方案比定點的編碼方案複雜,其基本概念與科學計數法中的基本思想相同,兩者的不同點,在與浮點數的基為2,科學計數法的基為10。
ANSI/IEEE Std. 754-1985标準将32bit資料形式定義為單精度(single precision),64bit資料形式定義為雙精度(double precision)。
以單精度為例,将其32位分為三個獨立的組:位0到22形成尾數(記為M),位23到30形成指數(記為E),位31是符号位(記為S)。則:
IEEE标準将最大數和最小數的範圍略微縮小,分别為
和
。
與定點設計相比,浮點設計會消耗更多的FPGA資源,帶來更高的消耗。是以在滿足名額要求的情況下,優先采用定點設計,可以有助于降低FPGA資源的使用、減少功耗。
文獻[3]中,則闡述了,在保證名額的情況下,采用定點設計,可以減少資源使用,進而降低功耗。
參考文獻:
[1]The Scientist and Engineer's Guide to Digital Signal Processing_Ch4
[2]EE 3610 Digital Systems
[3]Ambrose Finnerty and Hervé Ratigner,Reduce Power and Cost by Converting from Floating Point to Fixed Point
[4]Floating Point Converter:https://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html
相關文獻下載下傳,可回複消息:“ 定點、浮點數文獻下載下傳“