LOG計算
自然対数(Ln)を計算する回路です。
10を底とするLog に変更することもできます。もっとも底の変換公式を使えば、
乗算器を追加するだけでどんな底のLogも計算できますが。
毎クロック連続してデータを入力でき、固定遅延で結果を出力します。
Lattice FPGA (ECP2M) の場合は、8クロック後に結果を出力します。
FPGAのRAMと乗算器を使っているため、Xilinx, Altera に移植した場合には、
遅延量は変わる可能性があります。
入力信号 | |
RST | 非同期リセット H=リセット |
CLK | クロック |
DATA_IN[68..0] | y=Ln(x)のx(x>0) 整数部52bit,少数部16bit |
出力信号 | |
LN[26..0] | y=Ln(x)のy 符号付き、少数部21bit |
入力データのビット数は比較的容易に変更できます。
出力のビット数を増やすことは、少々困難です。
入出力のシミュレーション画面
毎クロックデータを入力でき、8クロック後に出力します。
シミュレーションは、1/65536, 17.75, 0.125, 1000.5, 90000.625
を入力した場合です。
DATA_INの整数部DATA_IN[68..16]がTP_DI, 小数部DATA_IN[15..0]がTP_DF です。
また、LNの整数部LN[26..21]がTP_LN_I, 小数部LN[20..0]がTP_LN_Fです。
1/65536 :
TP_DI=00_0000_0000_0000(h) , TP_DF=0001(h)
TP_LN_I=3A(h) , TP_LN_F=0E8E00(h) ... -5.515166016
17.75 :
TP_LN_I=01(h) , TP_LN_F=0E05A4(h) ... 1.438188553
Ln(17.75)=1.438192 なので、小数点第4位まで合っています。