有些FPGA中是不能直接對(duì)浮點(diǎn)數(shù)進(jìn)行操作的,只能采用定點(diǎn)數(shù)進(jìn)行數(shù)值運(yùn)算。對(duì)于FPGA而言,參與數(shù)學(xué)運(yùn)算的書(shū)就是16位的整型數(shù),但如果數(shù)學(xué)運(yùn)算中出現(xiàn)小數(shù)怎么辦呢?要知道,F(xiàn)PGA對(duì)小數(shù)是無(wú)能為力的,一種解決辦法就是采用定標(biāo)。
數(shù)的定標(biāo)就是將要運(yùn)算的浮點(diǎn)數(shù)擴(kuò)大很多倍,然后取整,再用這個(gè)數(shù)進(jìn)行運(yùn)算,運(yùn)算得到的結(jié)果再縮小相應(yīng)的倍數(shù)就可以了。在設(shè)計(jì)中,一定不要忘記小數(shù)點(diǎn)。在FPGA 中是體現(xiàn)不出來(lái)小數(shù)點(diǎn)的,小數(shù)點(diǎn)的位置只有程序員知道。Q表示小數(shù)點(diǎn)的位置,Q15就表示小數(shù)點(diǎn)在第15位。
浮點(diǎn)數(shù)(x)轉(zhuǎn)換為定點(diǎn)數(shù)(xq):xq=(int)x*2^Q
定點(diǎn)數(shù)(xq)轉(zhuǎn)換浮點(diǎn)數(shù)(x):x= (float)xq*2^(-Q)
比如,16進(jìn)制數(shù)2000H,用Q0表示就是8192;若用Q15表示,則為0.25。
下面介紹Q格式運(yùn)算中Q值的確定:
(1)定點(diǎn)加減法:需要轉(zhuǎn)換成相同Q格式才能加減
(2)定點(diǎn)乘法:不同Q格式的數(shù)據(jù)相乘,相當(dāng)于Q值相加
(3)定點(diǎn)除法:不同Q格式的數(shù)據(jù)相除,相當(dāng)于Q值相減
(4)定點(diǎn)左移:相當(dāng)于Q值增加
(5)定點(diǎn)右移:相當(dāng)于Q值減少
比如,Q15表示的4000H(浮點(diǎn)數(shù)0.5)乘以Q15表示的4000H,4000H×4000H=1000 0000H,乘完之后Q值變?yōu)?5+15=30,即結(jié)果為0.01B,即為浮點(diǎn)數(shù)0.25。
編輯:jq
-
FPGA
+關(guān)注
關(guān)注
1629文章
21736瀏覽量
603419 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7030瀏覽量
89038 -
浮點(diǎn)運(yùn)算
+關(guān)注
關(guān)注
0文章
19瀏覽量
11169
原文標(biāo)題:FPGA中浮點(diǎn)運(yùn)算實(shí)現(xiàn)方法——定標(biāo)
文章出處:【微信號(hào):hoperun300339,微信公眾號(hào):潤(rùn)和軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論