fpga只能處理定點數,alteral stratix 10可以支援硬浮點,如軍方雷達、機器視覺等硬體加速。
浮點數:2.918 3.1415986
浮點轉定點:(如16位,表示範圍32767~-32768)
定義小數需求多少位(如12位)
整數需求多少位(如3位)
最高位為符號位(針對有符號數,1位)**
對於低15位,整數最大表示7,小數最大精度1/(212)=0.000244140625,小數最大能表示(1/(212))4095=0.999755859375
即使用15位二進位制數(最大32767)表示浮點小數(最大7.999755859375)
如對2.918定點化的過程:
量化精度:(8/32768)
量化結果:2.918/(8/32768)=11952.128~=11952
定點化會產生量化誤差。
如對3.1415926定點化過程;
3.1415926/(8/32768)=12867.9632896~=12868
浮點數運算:2.918*3.1415926=9.1671672068
11952x12868=153798336
153798336=(0)_(00_1001)_(0010_1010_1100_0110_1100_0000)
符號位1位,表示正數,
整數6位,表示十進位制數為9,
小數24位,為(0010_1010_1100_0110_1100_0000)b=(2803392)d,
2803392/(2^24)=0.167095184326171875
所以153798336轉換為浮點數為9.167095184326171875
與原浮點數結果有誤差。
綜上:第一步:規定位寬
整數字寬:能夠表示整數部分的最少bit數。
小數字寬:能夠滿足最大小數精度的bit數,如小數字寬為n,則能表示的小數精度為1/(2^n)
第二步:確定最大值與最小值
第三步:定點化處理
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中浮點數的定點化筆記
fpga中浮點數的定點化筆記 關於基本相關知識參考該部落格 浮點數的定點化 fpga 1.基礎概念 浮點數 簡單來說,就是小數點的位置不是固定的 定點數 簡單來說,小數點的位置是固定的,也就是整數字寬與小數的位寬是固定的 以下部分內容摘自該博文 因為在普通的fpga晶元裡面,暫存器只可以表示無符號型...