Dynamic Point Size - 2023.2 English

Vitis Libraries

Release Date
2023.2 English

The FFT supports dynamic (run-time controlled) point sizes. This feature is available when the template parameter TP_DYN_PT_SIZE is set. When set to 0 (static point size) all data will be expected in frames of TP_POINT_SIZE data samples, though multiple frames may be input together using TP_WINDOW_VSIZE. When set to 1 (dynamic point size) each window must be preceded by a 256-bit header to describe the run-time parameters of that window. Note that TP_WINDOW_VSIZE described the number of samples in a window so does not include this header. The format of the header is described in Table 5. When TP_DYN_PT_SIZE =1, TP_POINT_SIZE describes the maximum point size which may be input.

Table 43 Header Format
Field name Location (TT_DATA sample) Description
Direction 0 (real part) 0 (inverse FFT) 1 (forward FFT)
Point size (radix2 stages) 1 (real part) Point size described as a power of 2. E.g. 5 described a point size of 32.
Reserved 2 reserved
Status (output only) 3 (cint32 or cfloat) 7 (cint16) (real part) 0 = legal point size, 1 = illegal point size

The locations are set to suit TT_DATA type. That is, for TT_DATA=cint16, direction is described in the first cint16 (real part) of the 256 bit header and point size is described in the real part of the second cint16 value. Similarly, for TT_DATA=cint32, the real part of the first cint32 value in the header holds the direction field and the real part of the second cint32 value holds the Point size (radix2) field.

Note that for TT_DATA=cfloat, the values in the header are expected as cfloat and are value-cast (not reinterpret-cast) to integers internally. The output window also has a header. This is copied from the input header except for the status field, which is inserted. The status field is ignored on input. If an illegal point size is entered, the output header will have this field set to a non-zero value and the remainder of the output window is undefined.