C++ 任意精度定点类型 - 2021.2 Chinese

Vitis 高层次综合用户指南 (UG1399)

Document ID
UG1399
Release Date
2021-12-15
Version
2021.2 Chinese

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

即使 Var1Var2 精度不同,但定点类型在执行运算前(此处为加法)仍可确保小数点正确对齐。您无需在 C 语言代码中执行任何操作来使小数点对齐。

用于存储任意定点运算结果的类型大小(包括整数位和小数位)必须足以存储完整结果。

否则,ap_fixed 类型会执行以下操作:

  • 使处理上溢(前提是结果所含 MSB 多于指定类型支持的数量)
  • 量化(或舍入,前提是结果所含 LSB 少于指定类型支持的数量)

ap_[u]fixed 类型可提供有关上溢和量化执行方式的多种不同选项。这些选项如下所述。