重要: 任意精度定点类型要求代码中包含 ap_fixed.h 头文件。
本章节包含有关使用 ap_(u)fixed<N>
任意精度定点数据类型的方法、综合行为和各方面的全面信息。
- 用于将常量和初始化值赋值给任意精度整数(包括大于 1024 位的值)的方法。
- 上溢和饱和模式的详细描述。
- 描述 Vitis HLS 帮助程序方法,包括打印、串联、位切片 (bit-slicing) 和范围选择函数。
- 描述运算符行为,包括移位操作(即导致反向移位的负移位值)的描述。
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
类型可提供有关上溢和量化执行方式的多种不同选项。这些选项如下所述。