浮點數與FPGA

浮點數與FPGA


在通常的設計中,不建議使用浮點數計算,因為浮點數計算會消耗FPGA大量的邏輯單元。但很多情況下,又需要使用浮點數進行計算提高精度。

所以需要有合適的方法計算浮點運算。

正常情況下FPGA只能以整形數據進行計算,必須將浮點數轉換為二進制整形數據進行輸入。那麼小數點就在你的心中。

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

浮點數與FPGA

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

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

接下來介紹一款標準:

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

浮點數與FPGA

需要注意的是Exponent(指數)若全為0,則Mantissa(位數)要進行denormal操作。

根據相關的標準或者約定,可自行設計FPU。


浮點數與FPGA

原文地址:卿萃科技FPGA極客空間 微信公眾號


分享到:


相關文章: