Overview - 2023.2 English

Vitis Libraries

Release Date
2023-12-20
Version
2023.2 English

fft_window is utility to apply a windowing (scaling) function such as Hamming to a frame of data samples.

These are the templates to configure the function.

Parameters:

TT_DATA

describes the type of individual data samples input to the function. This is a typename and must be one of the following:

cint16, cint32, cfloat.

TT_COEFF

describes the type of weights in the FFT window. This is a typename and must be one of the following:

int16, int32, float. TT_DATA and TT_COEFF must be both integer types or both float types.

TP_POINT_SIZE describes the number of samples in the frame to be windowed.
TP_WINDOW_VSIZE describes the number of samples to be processed in each call to this function. It must be an integer multiple of TP_POINT_SIZE.
TP_SHIFT described the number of bits to downshift after the scaling by the window value. e.g. for a TT_COEFF of int16 and a window value of 16384 meaning 1.000, a TP_SHIFT value of 14 is appropriate.
TP_API described whether to use streams (1) or windows (0).
TP_SSR describes the number of kernels to use in parallel to perform the windowing function.
TP_DYN_PT_SIZE describes whether to support run-time selectable point size for the frames of data within the AIE window to be processed.
TP_RND

describes the selection of rounding to be applied during the shift down stage of processing. Although, TP_RND accepts unsigned integer values descriptive macros are recommended where

  • rnd_floor = Truncate LSB, always round down (towards negative infinity).

  • rnd_ceil = Always round up (towards positive infinity).

  • rnd_sym_floor = Truncate LSB, always round towards 0.

  • rnd_sym_ceil = Always round up towards infinity.

  • rnd_pos_inf = Round halfway towards positive infinity.

  • rnd_neg_inf = Round halfway towards negative infinity.

  • rnd_sym_inf = Round halfway towards infinity (away from zero).

  • rnd_sym_zero = Round halfway towards zero (away from infinity).

  • rnd_conv_even = Round halfway towards nearest even number.

  • rnd_conv_odd = Round halfway towards nearest odd number.

    No rounding is performed on ceil or floor mode variants.

    Other modes round to the nearest integer. They differ only in how they round for values of 0.5.

    Note: Rounding modes rnd_sym_floor and rnd_sym_ceil are only supported on AIE-ML device.

TP_SAT

describes the selection of saturation to be applied during the shift down stage of processing. TP_SAT accepts unsigned integer values, where:

  • 0: none = No saturation is performed and the value is truncated on the MSB side.
  • 1: saturate = Default. Saturation rounds an n-bit signed value in the range [- ( 2^(n-1) ) : +2^(n-1) - 1 ].
  • 3: symmetric = Controls symmetric saturation. Symmetric saturation rounds an n-bit signed value in the range [- ( 2^(n-1) -1 ) : +2^(n-1) - 1 ].
template <
    typename TT_DATA,
    typename TT_COEFF,
    unsigned int TP_POINT_SIZE,
    unsigned int TP_WINDOW_VSIZE,
    unsigned int TP_SHIFT,
    unsigned int TP_API,
    unsigned int TP_SSR,
    unsigned int TP_DYN_PT_SIZE = 0,
    unsigned int TP_RND = 0,
    unsigned int TP_SAT = 1
    >
class fft_window_graph: public graph

// fields

static constexpr int kMaxSSR
static constexpr int kHeaderBytes
static constexpr int kStreamsPerTile
static constexpr int kAPIFactor
static constexpr int kKernelPtSize
static constexpr int kKernelWindowVsize
port_array <input, kAPIFactor*TP_SSR> in
port_array <output, kAPIFactor*TP_SSR> out
kernel m_kernels[TP_SSR]
std::array <std::array <TT_COEFF, kKernelPtSize* (1+TP_DYN_PT_SIZE)>, TP_SSR> kernel_weights