有些FPGA中是不能直接對浮點數進行操作的,只能采用定點數進行數值運算。對于FPGA而言,參與數學運算的書就是16位的整型數,但如果數學運算中出現小數怎么辦呢?要知道,FPGA對小數是無能為力的,一種解決辦法就是采用定標。
數的定標就是將要運算的浮點數擴大很多倍,然后取整,再用這個數進行運算,運算得到的結果再縮小相應的倍數就可以了。在設計中,一定不要忘記小數點。在FPGA 中是體現不出來小數點的,小數點的位置只有程序員知道。Q表示小數點的位置,Q15就表示小數點在第15位。
浮點數(x)轉換為定點數(xq):xq=(int)x*2^Q
定點數(xq)轉換浮點數(x):x= (float)xq*2^(-Q)
比如,16進制數2000H,用Q0表示就是8192;若用Q15表示,則為0.25。
下面介紹Q格式運算中Q值的確定:
(1)定點加減法:需要轉換成相同Q格式才能加減
(2)定點乘法:不同Q格式的數據相乘,相當于Q值相加
(3)定點除法:不同Q格式的數據相除,相當于Q值相減
(4)定點左移:相當于Q值增加
(5)定點右移:相當于Q值減少
比如,Q15表示的4000H(浮點數0.5)乘以Q15表示的4000H,4000H×4000H=1000 0000H,乘完之后Q值變為15+15=30,即結果為0.01B,即為浮點數0.25。
編輯:jq
-
FPGA
+關注
關注
1630文章
21781瀏覽量
604913 -
數據
+關注
關注
8文章
7117瀏覽量
89339 -
浮點運算
+關注
關注
0文章
19瀏覽量
11189
原文標題:FPGA中浮點運算實現方法——定標
文章出處:【微信號:hoperun300339,微信公眾號:潤和軟件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論