The static parameters of the FFT define how the FFT is configured and specifies
the fixed parameters such as the size of the FFT, whether the size can be changed
dynamically, whether the implementation is pipelined or
radix_4_burst_io
.
The hls_fft.h header file defines a struct
hls::ip_fft::params_t
which can be used to
set default values for the static parameters. If the default values are to be used,
the parameterization struct can be used directly with the FFT function.
hls::fft<hls::ip_fft::params_t >
(xn1, xk1, &fft_status1, &fft_config1);
A more typical use is to change some of the parameters to non-default values. This is performed by creating a new user-defined parameterization struct based on the default parameterization struct and changing some of the default values.
In the following example, a new user struct my_fft_config
is defined with a new value for the output ordering
(changed to natural_order
). All other static
parameters to the FFT use the default values.
struct my_fft_config : hls::ip_fft::params_t {
static const unsigned ordering_opt = hls::ip_fft::natural_order;
};
hls::fft<my_fft_config >
(xn1, xk1, &fft_status1, &fft_config1);
The values used for the parameterization struct hls::ip_fft::params_t
are explained in FFT Struct Parameters. The default values
for the parameters and a list of possible values are provided in FFT Struct Parameter Values.