FPGA中實現對數運算

2021-09-24 05:22:43 字數 1230 閱讀 8923

fpga中實現對數運算主要有三種方法:

(1)在外部直接算好對數值,按照數值範圍做個表,存在ram裡,到時候查表。為了減少表深度,提高資源利用率,可以考慮去掉部分低位數值,損失一定的精度。

(2)使用cordic演算法求解對數。

(3)log10(x)=ln(x) * log10(e) , log10(e)是常數可以手動先計算好,用ip core的話多個乘法器。

下面介紹使用ip核floating-point來計算對數,該ip計算對數時,計算的是ln(a)(a是輸入),如下圖所示:

輸入是浮點數,所以如果我們在fpga內使用的定點數,則需要先將定點數轉化為浮點數:

實現對數運算時,可以使用dsp核心,也可以不用,ip配置中提供了三個等級:

對於flow control可以選擇帶快取的blocking模式,也可以選擇沒有快取的nonblocking模式,延時也可以選擇從0到23:

上面也提到,計算log的輸入是浮點數,如果需要,可以繼續使用floating-point來實現定點數轉浮點數,對於轉換ip的輸入可以自主設定如下圖所示,這裡設為int16+fra16,輸出為單精度浮點數,可以直接給計算log的ip核:

我們要計算以任意數為底的對數時,可以通過來計算,由此完成一次計算,需要兩個定點轉浮點的ip(fixtofloat),兩個log的ip(log不使用dsp),以及乙個除法ip(divide),最後再將浮點數轉為定點數輸出,綜合實現後的資源占用情況為:

一次簡單的rtl**為:

FPGA實現除法運算

我們用軟體程式設計的時候,用到除法的時候,乙個 這樣的除號就搞定了。但是如果用硬體來實現除法,又是怎麼樣實現的了。計算機儲存的數都是以二進位制數來儲存的,二進位制的除法和我們平常用到十進位制除法是一樣的。輾轉相除法。計算如上圖,從最高位開始計算,如果大於除數,商為1。然後算下一位。直到算到最後一位,...

FPGA筆記之 FPGA浮點運算的實現

ieee 754標準數值表示包括 浮點數,特殊值 零,無窮大,非標準數值,nan 單精度 雙精度 單精度擴充套件格式的浮點數。1 浮點格式。在ieee 754標準中,所有的浮點數都用二進位制模板表示 其中,s域表示符號位,e域表示指數,m域表示尾數 對數的一部分或小數 對於標準浮點數,預設總是存在1...

FPGA中的小數運算

最近在影象演算法的中間遇到一下小數的運算問題,雖然之前也遇到很多次,但是這次記錄下來。r 1.164 y 16 1.596 cr 128 g 1.164 y 16 0.391 cb 128 0.813 cr 128 b 1.164 y 16 2.018 cb 128 遇到的一些問題是,色彩空間的轉換...