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
Ln(1/65536)=-5.545177 なので、小数点第4位まで合っています。

17.75 :
TP_LN_I=01(h) , TP_LN_F=0E05A4(h) … 1.438188553
Ln(17.75)=1.438192 なので、小数点第4位まで合っています。