校招基礎——浮點數的定點化


一、概念

1、浮點數:小數點位置是漂浮不定的。

  例如:浮點數運算 1.1 * 1.1 = 1.21,小數點位置發生了變化。

  IEEE 754 規定,浮點數的表示方法為:

  最高的 1 位是符號位 s,接着的 8 位是指數E,剩下的 23 位為有效數字 M。

2、定點數:小數點的位置是確定的。

  例如:定點數運算 1.1 * 1.1 = 1.2,小數點的位置沒有變化。

 

   定點的意思是,小數點固定在 32 位中的某個位置,前面的是整數,后面的是小數。

  小數點具體固定在哪里,可以自己在程序中指定。

二、Verilog表示定點數

  FPGA 的寄存器只可以表示正整數,通過約定【最高位為符號位】則可以表達負整數了。同理,帶小數點的定點數也是可以通過一些約定來表示。

  約定方法:確定小數點的位置。如下圖所示,Qn表示小數點的位置,n為多少表示有多少位小數,看看同樣的二進制數字“10101”會變成什么。

二進制數    小數點位置    對應定點數
 10101        Q0        10101
 10101        Q1        1010.1
 10101        Q2        101.01
 10101        Q3        10.101
 10101        Q4        1.0101
 10101        Q5        0.10101

  因此我們只要定位了小數點位置后,就可以在FPGA中表達帶小數的定點數。

 

三、浮點數的定點化

  兩個 16 位的浮點數運算,最高位是符號位: 2.918 * 3.1415926 = 9.1671672068,嘗試將浮點數進行定點化。

1、定點轉換(Qn=12)

  符號1位,整數取3位(實際2位就夠),小數12位,可以看成把 1 分成了 212份,因此:

  • 2.918  * 212        = 11952.168         = 11952;
  • 3.1415926 * 212 = 12867.8632896 = 12868;

2、定點數相乘

  11952 * 12868 = 153798336。

3、結果還原

  相乘后,整數部分為 6 位,小數部分為 24 位。因此結果 = 153798336 / 224 = 9.167095184326171875,和原計算值差距非常小。

4、量化誤差和量化精度

  小數點的位置不同帶來的量化誤差不同,例如上面定點轉換的過程中出現的小數點進行了四舍五入,這是因為 2.918 無法完全用 1/212來表示。小數位數越多,表示的量化精度越高,小數位為 Qn,最大量化精度為 1/2n

5、無損定點化

  所謂【無損定點化】只是數學概念,只要量化誤差小於精度的一半,就認為是“無損”的。按照這個標准,那對小數點采取四舍五入的結果必然是無損的。但是校招時很多題采取的是“量化后直接去除小數”,那么小數大於 0.5 則不是無損的了。

 

四、例題

1、【大疆】對 12.918 做無損定點化,需要的最小位寬是多少位?位寬選擇 11 位時的量化誤差是多少?

A   13位,0.0118
B   12位,0.0118
C   13位,0.0039
D   12位,0.0039

  分析:(1)整數 12 需要 4bit。假設位寬選擇12位,即小數需要 8bit,12.918 * 28 = 3307.008,定點化后的小數小於0.5,可以看成是【無損定點化】,固答案為 12 位;(2)位寬選擇11位,即小數需要 7bit,12.918 * 27 = 1653.504,量化誤差為 0.504/27 = 0.0039375,固答案為0.0039。

  答案:結合分析,得出答案為D。

 

2、【大疆】對12.758做無損定點化,需要的最小位寬是多少位?位寬選擇為8位時的量化誤差是多少?

A   11位,0.008
B   11位,0.08
C   12位,0.008
D   12位,0.08

  分析:(1)整數 12 需要 4bit。假設位寬選擇11位,即小數需要 7bit,12.758 * 27 = 1633.024,定點化后的小數小於0.5,可以看成是【無損定點化】,固答案為 11 位;(2)位寬選擇 8 位,即小數需要 4bit,12.758 * 24 = 204.128,量化誤差為 0.128/24 = 0.008,固答案為0.008。

  答案:結合分析,得出答案為A。

  感覺這題的第一問有些毛病,位寬為 8 位時也符合【無損定點化】。我算了一下,位寬為 7 位(小數為3位)時仍然是【無損定點化】,位寬為 6 位時才不是【無損定點化】。但這是選擇題,只能選 A 了。

 

參考資料:

http://fpgabbs.com/thread-771-1-1.html

https://www.cnblogs.com/bixiaopengblog/p/7728538.html

https://mp.weixin.qq.com/s/kKMyIzrPBJDdLRd71WjDKg


免責聲明!

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



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