全局变量可在代码中自由使用并且完全可综合。默认情况下,全局变量在 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。