重要: 任意精度の固定小数点型は、ヘッダー ファイル ap_fixed.h をコードに含める必要があります。
このセクションには、メソッド、合成動作、ap_(u)fixed<N>
任意精度の固定小数点データ型の使用方法のすべての詳細について説明します。
- 任意精度の整数に (1024 ビットを超える値も含めて) 定数および初期値を代入する方法。
- オーバーフロー モードおよび飽和モードの詳細。
- 表示、連結、ビット スライス、範囲選択などの Vitis HLS のヘルパー メソッドの詳細。
- シフト演算 (シフト値が負の場合は反対方向にシフト) の記述も含めた演算子の動作の詳細。
Vitis HLS では、小数部分の計算を簡単に処理できるよう、固定小数点型がサポートされています。次の例に、固定小数点の演算の利点を示します。
ap_fixed<11, 6> Var1 = 22.96875; // 11-bit signed word, 5 fractional bits
ap_ufixed<12,11> Var2 = 512.5; // 12-bit word, 1 fractional bit
ap_fixed<16,11> Res1; // 16-bit signed word, 5 fractional bits
Res1 = Var1 + Var2; // Result is 535.46875
Var1
および Var2
の精度は異なりますが、固定小数点型を使用すると、演算 (この場合は加算) が実行される前に小数点が揃えられます。C コードでは、小数点を揃えるために演算を実行する必要はありません。
固定小数点演算の結果値を格納するのに使用されるデータ型は、整数ビットおよび小数ビットの両方を完全に格納するのに十分な大きさにする必要があります。
そうでない場合、ap_fixed
型で次が実行されます。
- オーバーフロー処理 (指定されたデータ型でサポートされるよりも MSB が多い場合)
- 量子化 (指定されたデータ型でサポートされるよりも LSB が少ない場合)
ap_[u]fixed
型では、オーバーフローおよび量子化にさまざまなオプションを使用できます。次のセクションで、その詳細を説明します。