dft performs the Discrete Fourier Transform on a set 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_TWIDDLE | describes the type of twiddle factors used in the transform. It must be one of the following: cint16, cfloat and must also satisfy the following rules:
|
TP_POINT_SIZE | describes the number of samples in the frame to be windowed. |
TP_FFT_NIFFT | selects whether the transform to perform is an forward (1) or reverse (0) transform. |
TP_SHIFT | selects the power of 2 to scale the result by prior to output. |
TP_CASC_LEN | selects the number of kernels the DFT will be split over in series to improve throughput |
TP_NUM_FRAMES | describes the number of frames of input data samples that occur within each input window of data. |
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
|
TP_SAT | describes the selection of saturation to be applied during the shift down stage of processing. TP_SAT accepts unsigned integer values, where:
|
TP_SSR | selects number cascade chains that will operate in parallel. The kernels in each SSR rank will receive the same input data as the kernels in all other SSR ranks. The internally calculated twiddles are split by across each SSR rank. There will be TP_SSR output ports that should be interleaved together to give the output of the DFT. |
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_NUM_FRAMES, unsigned int TP_RND, unsigned int TP_SAT, unsigned int TP_SSR > class dft_graph: public graph // typedefs typedef std::conditional_t <std::is_same <TT_DATA, int16>::value, cint16, std::conditional_t <std::is_same <TT_DATA, int32>::value, cint32, std::conditional_t <std::is_same <TT_DATA, float>::value, cfloat, TT_DATA>>> T_outDataType // fields kernel m_dftKernels[TP_CASC_LEN *TP_SSR] port <input> in[TP_SSR *TP_CASC_LEN] port <output> out[TP_SSR] double inv