SM 5 BSZ - Linux pc radio, setting signal levels in the frequency domain.
(Jan 25 2001)

Different routines for the second fft

There are different routines for the second fft. Firstly because I always write the algorithm in C to start with, translating it into assembly of one kind or another afterwords so I can compare the assembly routine results to the C routine which is easier to make correct.

Having C routines in the code, there is a good reason to leave them in place because older computers do not support MMX or SIMD. In case the C routines, vers 0 or 1 for second fft is selected, all processing uses floating point and there is no reason to worry about the "Second forward FFT att. N" parameter. It does not affect the floating point routines at all.

The MMX version, vers 2 for second fft, is very much faster than the floating point routine. In case one wants to look for really weak and really stable signals over a wide frequency band, for example in 144MHz EME it is meaningful to run very large transforms and that is not possible without the MMX routine, at least not using the PentiumIII at 650MHz.

Using too much attenuation in the second fft causes rounding errors that have a typical effect as shown in fig.1. All the screen dumps below were produced with second fft size=131072 and sin squared windows.

Fig 1. Far too low signal level in the timf2 to fft2 conversion using MMX routines. Note the different noise floor on the left compared to the right side of the waterfall graph. Also note that the data points in the high resolution graph fall in groups corresponding to a difference of one in the averaged power over 3 transforms.
The attenuation N is 10 for fig.1 corresponding to 60dB. Below are several figures showing screen dumps with attenuation reduced in 6dB steps, fig. 2 to 4. The S/N ratio for the weak signal is degraded in fig.1 but already 6dB less attenuation gives nearly full S/N.

The selective limiter has information from fft1 and that is used to ensure no very strong signals will show up in fft2. Therefore it is possible to use rather small values for the attenuation N without saturation.

The way to set the "Second forward FFT att. N" parameter is to run the receiver with the amplitude margin display enabled for a while as the last step after having decided what value to use for other parameters that affect the fft2 signal level Select a value that gives some margin to saturation in worst cases.

Fig 2. fft2 level is +6dB relative to fig.1

Fig 3. fft2 level is +12dB relative to fig.1

Fig 4. fft2 level is +18dB relative to fig.1