補足−固定小数点型テンプレートの使い方
VitisHLSの固定小数点型テンプレートは、付属のヘッダファイルap_int.h (ap_fixed.hはap_int.hと同じ)を読み込むだけで通常のg++で使える。
ap_int<int W> 符号付き整数型 ap_uint<int W> 符号なし整数型 ap_fixed<int W,int I> 符号付き固定小数点型 ap_ufixed<int W,int I> 符号なし固定小数点型 W: 全体のビット幅(max 1024) I: 整数部のビット幅 |
・代入時の量子化モードはデフォルトで切り捨て
・ビットの選択 a[5]
・ビット範囲の選択 a.range(7,4) または a(7,4)
・連接(Verilogの{a,b}に相当) (a,b)
・int型への変換 a.to_int()
・double型への変換 a.to_double()
・左シフト時の注意 (systemc.hと異なる)
シフト結果はシフト前と同じビット幅しか保持されないので、キャストしてからシフトする必要がある。
例) ap_int<8> a8, ap_int<4> a4=0xfのとき
a8 = a4 << 2; // 00001100 = 1111 << 2
a8 = (ap_int<8>) a4 << 2; // 00111100 = 00001111 << 2