template class xf::dsp::aie::fft::dit_1ch::fft_ifft_dit_1ch_base_graph

#include "fft_ifft_dit_1ch_graph.hpp"


fft_dit_1ch is a single-channel, decimation-in-time, fixed point size FFT

These are the templates to configure the single-channel decimation-in-time class.


TT_DATA describes the type of individual data samples input to and output from the transform function. This is a typename and must be one of the following: int16, cint16, int32, cint32, float, cfloat.

describes the type of twiddle factors of the transform. It must be one of the following: cint16, cint32, cfloat and must also satisfy the following rules:

  • 32 bit types are only supported when TT_DATA is also a 32 bit type,
  • TT_TWIDDLE must be an integer type if TT_DATA is an integer type
  • TT_TWIDDLE must be cfloat type if TT_DATA is a float type.
TP_POINT_SIZE is an unsigned integer which describes the number of point size of the transform. This must be 2^N where N is an integer in the range 4 to 16 inclusive. When TP_DYN_PT_SIZE is set, TP_POINT_SIZE describes the maximum point size possible.
TP_FFT_NIFFT selects whether the transform to perform is an FFT (1) or IFFT (0).
TP_SHIFT selects the power of 2 to scale the result by prior to output.
TP_CASC_LEN selects the number of kernels the FFT will be divided over in series to improve throughput
TP_DYN_PT_SIZE selects whether (1) or not (0) to use run-time point size determination. When set, each frame of data must be preceeded, in the window, by a 256 bit header. The output frame will also be preceeded by a 256 bit vector which is a copy of the input vector, but for the top byte, which is 0 to indicate a legal frame or 1 to indicate an illegal frame. The lowest significance byte of the input header field describes forward (non-zero) or inverse(0) direction. The second least significant byte 8 bits of this field describe the Radix 2 power of the following frame. e.g. for a 512 point size, this field would hold 9, as 2^9 = 512. Any value below 4 or greater than log2(TP_POINT_SIZE) is considered illegal. When this occurs the top byte of the output header will be set to 1 and the output samples will be set to 0 for a frame of TP_POINT_SIZE
TP_WINDOW_VSIZE is an unsigned intered which describes the number of samples in the input window. By default, TP_WINDOW_SIZE is set ot match TP_POINT_SIZE. TP_WINDOW_SIZE may be set to be an integer multiple of the TP_POINT_SIZE, in which case multiple FFT iterations will be performed on a given input window, resulting in multiple iterations of output samples, reducing the numer of times the kernel needs to be triggered to process a given number of input data samples. As a result, the overheads inferred during kernel triggering are reduced and overall performance is increased. This is the base class for the Single channel DIT FFT graph - one or many cascaded kernels for higher throughput
template <
    typename TT_DATA,
    typename TT_TWIDDLE,
    unsigned int TP_POINT_SIZE,
    unsigned int TP_FFT_NIFFT,
    unsigned int TP_SHIFT,
    unsigned int TP_CASC_LEN = 1,
    unsigned int TP_DYN_PT_SIZE = 0,
    unsigned int TP_WINDOW_VSIZE = TP_POINT_SIZE
class fft_ifft_dit_1ch_base_graph: public graph

// fields

port <input> in
port <output> out
kernel m_fftKernels[TP_CASC_LEN]
parameter fft_buf1
parameter fft_lut1
parameter fft_lut1a
parameter fft_lut1b
parameter fft_lut2
parameter fft_lut2a
parameter fft_lut2b
parameter fft_lut3
parameter fft_lut3a
parameter fft_lut3b
parameter fft_lut4
parameter fft_lut4a
parameter fft_lut4b
parameter fft_buf4096
parameter fft_buf2048
parameter fft_buf1024
parameter fft_buf512
parameter fft_buf256
parameter fft_buf128


port <input> in

The input data to the function. This input is a window API of samples of TT_DATA type. The number of samples in the window is described by TP_POINT_SIZE.

port <output> out

A window API of TP_POINT_SIZE samples of TT_DATA type.



fft_ifft_dit_1ch_base_graph ()

This is the constructor function for the Single channel DIT FFT graph.