FPGA中實(shí)現(xiàn)對(duì)數(shù)運(yùn)算主要有三種方法:
(1)在外部直接算好對(duì)數(shù)值,按照數(shù)值范圍做個(gè)表,存在ram里,到時(shí)候查表。為了減少表深度,提高資源利用率,可以考慮去掉部分低位數(shù)值,損失一定的精度。
(2)使用cordic算法求解對(duì)數(shù)。
(3)log10(x)=ln(x) * log10(e) , log10(e)是常數(shù)可以手動(dòng)先計(jì)算好,用IP Core的話多個(gè)乘法器。
下面介紹使用IP核floating-point來計(jì)算對(duì)數(shù),該IP計(jì)算對(duì)數(shù)時(shí),計(jì)算的是Ln(A)(A是輸入),如下圖所示:
輸入是浮點(diǎn)數(shù),所以如果我們?cè)贔PGA內(nèi)使用的定點(diǎn)數(shù),則需要先將定點(diǎn)數(shù)轉(zhuǎn)化為浮點(diǎn)數(shù):
實(shí)現(xiàn)對(duì)數(shù)運(yùn)算時(shí),可以使用DSP核心,也可以不用,IP配置中提供了三個(gè)等級(jí):
對(duì)于Flow Control可以選擇帶緩存的Blocking模式,也可以選擇沒有緩存的NonBlocking模式,延時(shí)也可以選擇從0到23:
上面也提到,計(jì)算LOG的輸入是浮點(diǎn)數(shù),如果需要,可以繼續(xù)使用floating-point來實(shí)現(xiàn)定點(diǎn)數(shù)轉(zhuǎn)浮點(diǎn)數(shù),對(duì)于轉(zhuǎn)換IP的輸入可以自主設(shè)定如下圖所示,這里設(shè)為int16+fra16,輸出為單精度浮點(diǎn)數(shù),可以直接給計(jì)算LOG的IP核:
我們要計(jì)算以任意數(shù)為底的對(duì)數(shù)時(shí),可以通過來計(jì)算,由此完成一次計(jì)算,需要兩個(gè)定點(diǎn)轉(zhuǎn)浮點(diǎn)的IP(fixtofloat),兩個(gè)LOG的IP(log不使用DSP),以及一個(gè)除法IP(divide),最后再將浮點(diǎn)數(shù)轉(zhuǎn)為定點(diǎn)數(shù)輸出,綜合實(shí)現(xiàn)后的資源占用情況為:
一次簡(jiǎn)單的RTL仿真為:
原文標(biāo)題:FPGA中實(shí)現(xiàn)對(duì)數(shù)運(yùn)算
文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
dsp
+關(guān)注
關(guān)注
553文章
8005瀏覽量
349067 -
FPGA
+關(guān)注
關(guān)注
1629文章
21744瀏覽量
603666 -
乘法器
+關(guān)注
關(guān)注
8文章
205瀏覽量
37086
原文標(biāo)題:FPGA中實(shí)現(xiàn)對(duì)數(shù)運(yùn)算
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論