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

#include "fft_ifft_dit_1ch_graph.hpp"

Overview

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.

Parameters:

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.

TT_TWIDDLE

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 integer 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.

TP_API is an unsigned integer to select window (0) or stream (1) interfaces.
TP_PARALLEL_POWER

is an unsigned integer to describe how many subframe processors to use.

The default is 1. This may be set to 4 or 16 to increase 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

    // direct descendants

    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,
        unsigned int TP_API = kWindowAPI
        >
    class xf::dsp::aie::fft::dit_1ch::fft_ifft_dit_1ch_baseports_graph

    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,
        unsigned int TP_DYN_PT_SIZE,
        unsigned int TP_WINDOW_VSIZE
        >
    class xf::dsp::aie::fft::dit_1ch::fft_ifft_dit_1ch_baseports_graph <TT_DATA, TT_TWIDDLE, TP_POINT_SIZE, TP_FFT_NIFFT, TP_SHIFT, TP_CASC_LEN, TP_DYN_PT_SIZE, TP_WINDOW_VSIZE, kStreamAPI>

// fields

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

Methods

fft_ifft_dit_1ch_base_graph

fft_ifft_dit_1ch_base_graph ()

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