任意精度整数数据类型概述 - 2021.2 Chinese

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

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

Vitis HLS 可以为 C++ 提供整数数据类型和定点任意精度数据类型。

表 1. 任意精度数据类型
语言 整数数据类型 所需头文件
C++ ap_[u]int<W>(1024 位)

位宽可扩展至 4K 位,如下所述。

#include "ap_int.h"
C++ ap_[u]fixed<W,I,Q,O,N> #include "ap_fixed.h"

Vitis HLS 也随附定义任意精度类型的头文件作为独立封装,并且您有权在自己的源代码中使用这些任意精度类型。在 Vitis HLS 安装区域的 include 目录中提供了 xilinx_hls_lib_<release_number>.tgz 封装。此封装不包含 ap_cint.h 中定义的 C 任意精度类型。这些类型不能配合标准 C 语言编译器一起使用。

对于 C++ 语言 ap_[u]int 数据类型,头文件 ap_int.h 用于定义任意精度整数数据类型。要在 C ++ 函数中使用任意精度整数数据类型,请执行以下操作:

  • 将头文件 ap_int.h 添加到源代码。
  • 将位类型更改为 ap_int<N>ap_uint<N>,其中 N 是介于 1 到 1024 之间的位大小。

以下示例显示了如何添加头文件并实现 2 个变量来使用 9 位整数和 10 位无符号的整数类型:

#include "ap_int.h"

void foo_top (…) {

ap_int<9>  var1;           // 9-bit
ap_uint<10>  var2;           // 10-bit unsigned

针对 ap_[u]int 数据类型允许的默认最大位宽为 1024 位。此默认设置可通过在包含 ap_int.h 头文件之前定义含正整数(小于或等于 4096)的 AP_INT_MAX_W 宏来覆盖。

重要: AP_INT_MAX_W 的值设置过高可能导致软件编译缓慢、运行时间延长。

以下是覆盖 AP_INT_MAX_W 的示例:

#define AP_INT_MAX_W 4096 // Must be defined before next line
#include "ap_int.h"

ap_int<4096> very_wide_var;