固定小数点のインプリメンテーションは、次の数学関数用にも提供されています。
固定小数点の数学関数すべてで、次のビット幅仕様の ap_[u]fixed
および ap_[u]int
データ型がサポートされます。
-
ap_fixed<W,I>
(I<=33 および W-I<=32)
-
ap_ufixed<W,I>
(I<=32 および W-I<=32)
-
ap_int<I>
(I> (I<=33)
-
ap_uint<I>
(I> (I<=32)
重要:
hls_math
ライブラリの固定小数点演算関数は、量子化モード、オーバーフロー モード、および飽和ビット数のそれぞれの ap_[u]fixed
テンプレート パラメーター Q、O、および N をサポートしません。量子化モードとオーバーフロー モードは、ap_[u]fixed
変数が割り当ての左側にあるか、初期化されているが、計算中ではない場合にのみ有効です。
三角関数
cos |
sin |
tan |
acos |
asin |
atan |
atan2 |
sincos |
cospi |
sinpi |
|
|
|
|
|
|
双曲線関数
cosh |
sinh |
tanh |
acosh |
asinh |
atanh |
指数関数
exp |
frexp |
modf |
exp2 |
expm1 |
べき関数
pow |
sqrt |
rsqrt |
cbrt |
hypot |
丸め関数
ceil |
floor |
trunc |
round |
rint |
nearbyint |
差分関数
erf |
erfc |
fdim |
fmax |
fmin |
maxmag |
minmag |
その他の関数
fabs |
recip |
abs |
fract |
divide |
比較関数
isgreater |
isgreaterequal |
isless |
islessequal |
islessgreater |
関係関数
isequal |
isnotequal |
any |
all |
bitselect |
固定小数点型の場合、関数値の精度は少し落ちますが、RTL インプリメンテーションはより小さく高速になります。
固定小数点型の数学関数をインプリメントするには、次の手順に従います。
- 固定小数点のインプリメンテーションがサポートされるかどうかを判断します。
- 数学関数を
ap_fixed
型を使用してアップデートします。
- C シミュレーションを実行して、デザインが必要な精度でまだ動作するかどうかを検証します。C シミュレーションは、RTL インプリメンテーションと同じビット精度型を使用して実行されます。
- デザインを合成します。
たとえば、sin
関数の固定小数点インプリメンテーションは、次のように数学関数と共に固定小数点型を使用して指定されます。
#include "hls_math.h"
#include "ap_fixed.h"
ap_fixed<26,6> my_input, my_output;
my_input = 24.675;
my_output = sin(my_input);