全局变量 - 2021.2 Chinese

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

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

全局变量可在代码中自由使用并且完全可综合。默认情况下,全局变量在 RTL 接口上不公开为端口。

以下代码示例显示了全局变量的默认综合行为。其中使用了 3 个全局变量。虽然此示例使用阵列,但 Vitis™ HLS 支持所有类型的全局变量。

  • Ain 阵列读取值。
  • Aint 阵列用于将值从 Ain 变换并传输到 Aout
  • 输出写入 Aout 阵列。
    din_t Ain[N];
    din_t Aint[N];
    dout_t Aout[N/2];
    
    void types_global(din1_t idx) {
     int i,lidx;
    
      // Move elements in the input array
     for (i=0; i<N; ++i) { 
     lidx=i;
     if(lidx+idx>N-1)
     lidx=i-N;
     Aint[lidx] = Ain[lidx+idx] + Ain[lidx];
     }
    
     // Sum to half the elements
     for (i=0; i<(N/2); i++) { 
     Aout[i] = (Aint[i] + Aint[i+1])/2;
     }
    
    }
    

默认情况下,综合后,RTL 设计上的唯一端口即 idx 端口。默认情况下,全局变量不公开为 RTL 端口。默认情况下:

  • Ain 阵列为可供读取的内部 RAM。
  • Aout 阵列为可供写入的内部 RAM。