- Data in
xn_re and
xn_im must all be in the range -1.0 ≤ data < +1.0.
- Data in
xn_re and xn_im is of type double, but the model
requires data in signed two's-complement, fixed-point format with precision given by
C_INPUT_WIDTH. The data has a sign bit, then the binary point, and then
(C_INPUT_WIDTH - 1) fractional bits. The model checks the input data to
see if it fits within this format and precision. If not, it prints a warning, and internally
rounds it using convergent rounding (halfway values are rounded to the nearest even number)
to the required precision. To accurately model the FFT core, prequantize the input data to
this required precision before passing it to the model.
-
scaling_sch and scaling_sch_size are ignored
entirely unless fixed scaling is used (C_HAS_SCALING = 1 and
C_HAS_BFP = 0).
-
scaling_sch is an array of integers, each of which indicates the scaling to be
done in a stage of the FFT processing. scaling_sch[0] is
the scaling in the first stage, scaling_sch[1] the scaling
in the second stage, and so on. This is the reverse of the scaling schedule vector applied
to the IP core. The number of elements in the scaling_sch
array and the value of scaling_sch_size must be equal to
the number of stages in the FFT. This is dependent on the architecture, and on nfft, the point size of the transform:
- Radix-4, Burst I/O (
C_ARCH = 1) or Pipelined,
Streaming I/O (C_ARCH = 3): stages = ceil(nfft/2)
- Radix-2, Burst I/O (
C_ARCH = 2) or Radix-2 Lite,
Burst I/O (C_ARCH = 4): stages = nfft
- If
C_HAS_NFFT = 0,
C_NFFT_MAX is used for nfft. The scaling
in each stage is an integer in the range 0-3, which indicates the number of bits the
intermediate result is shifted right. So 0 indicates no scaling, 1 indicates a division by
2, 2 indicates a division by 4, and 3 indicates a division by 8. Again, scaling_sch[0] is the scaling in the first stage, scaling_sch[1] the scaling in the second stage, and so on.
Insufficiently large scaling results in overflow, indicated by the overflow output.