FPGA如何接受單精度浮點資料?龔黎明2015-07-08 20:49:16

FPGA只能以整形資料進行計算,必須將浮點數轉換為二進位制整形資料進行輸入。小數點什麼的在你心中。

比如,當我輸入123乘以241給FPGA的時候,FPGA做得就是123*241的整形乘法,得到的結果也是整形輸出,但是你也可以說我做的是1。23*2。41,資料裡面小數點究竟在哪裡你自己的程式知道就行了。比如我可以統一約定,所有的資料匯流排低4bit是小數部分,寫在spec裡面即可,FPGA是不知道的,算完的資料解釋權在你手上。但是你不可能給FPGA輸入1。23乘以2。41,這個沒法做。

理論上講,所有的硬體只能算整數,小數點在哪裡,那一部分是指數,那一部分是底數,那是一種額外約定。運算器得到整形的結果之後,軟體根據小數點的約定,將其理解為小數。

就好比你有一個只能算整數的計算器。怎麼算小數呢?自己大腦裡面轉一下,先算整數出來,再加小數點就行了。硬體的設計自然也是這樣,人類已經設計出來了整形乘法器,還有必要再重新設計浮點乘法器嗎?不過是在整形乘法器前後加了一點資料處理而已。

FPGA如何接受單精度浮點資料?知乎使用者PVw8bW2015-07-09 09:18:58

你可以根據IEEE 754 floating point single precision 標準進行32bit單精度浮點數輸入。

FPGA如何接受單精度浮點資料?

FPGA如何接受單精度浮點資料?

需要注意的是Exponent若全為0,則Mantissa要進行denormal操作

這裡有一個用VHDL寫成的FPU樣本,希望可以對你有所幫助

FPU Double VHDL :: Overview :: OpenCores

FPGA如何接受單精度浮點資料?劉小志2015-07-15 10:29:48

建議FPGA不要用浮點數進行計算,會消耗很多logic resources。 建議用integer代替floating point。 尤其在涉及到乘法器的時候,floating point 會佔用非常多的computational resources。 而且速度也會非常慢。 用 integer代替floating point 也會更進一步的變成application specific。 畢竟,FPGA能加速的最主要的原因是application specific ,其次才是concurrent processing architecture。

FPGA如何接受單精度浮點資料?林名2016-02-05 09:04:44

把浮點數乘以2的64或者128次冪,然後再用來計算,算出來結果再除回去。最後會比cpu算出來的更接近理論值

FPGA如何接受單精度浮點資料?Johny2018-03-13 10:49:31

浮點數定點化,然後做定點數的計算。然後根據移位或者乘以一個係數就能計算回去。