Spectrum display Magnify mode = Zoom FFT - df8oe/UHSDR GitHub Wiki

Menu Touchscreen via Menu --> Spectrum Magnify [adjust to the desired magnification] OR

Menu Display --> Spectrum Size [Normal] --> leave Menu and then touch until you reach the desired magnification level

There was a longstanding wish of many users to be able to see the signals in the spectrum or waterfall display with higher resolution. Clint has provided us with a 2x Magnification mode that doubles the resolution, but in reality the same resolution was used and the points in the display were interpolated. However, the problem remained that it needed more processor power to calculate higher resolution FFTs in order to obtain more resolution.

One solution to this problem is to use a technique that is described by Lyons (2011) as the Zoom FFT.

The Zoom FFT is used when fine-grained spectral resolution is needed within a small portion of a signal´s overall frequency bandwidth range (Lyons 2011), especially when computing resources are low. That is exactly the situation we face when we want to see a small part of the spectrum display of the mcHF, but with high resolution. The Zoom FFT helps us to perform this without having to calculate high order FFTs. It consists of the following components:

  1. complex frequency conversion to baseband
  2. lowpass filtering of the I & Q path
  3. downsampling of I & Q
  4. complex FFT of I & Q

But how can we save processor cycles, if we perform all of these steps instead of just calculating one higher order FFT?

Well, step 1 has already been performed in the UHSDR, because we need the frequency conversion for the filtering and demodulation, so this step does not take any additional processor power. For step 2, the decimation lowpass filtering, we use highly efficient cascaded IIR biquad filters that take low processor power. The coefficients have been precalculated, we use four stages with elliptic response for steepest filter response and highest stopband. The following cutoff frequencies are used:

1x magnification = 48kHz spectrum = 24kHz decimation filter in hardware! no software filter. [frequency resolution 187.5Hz]

2x magnification = 24kHz spectrum = 12kHz biquad decimation filter [frequency resolution: 93.8Hz]

4x magnification = 12kHz spectrum = 6kHz biquad decimation filter [frequency resolution: 46.9Hz]

8x magnification = 6kHz spectrum = 3kHz biquad decimation filter [frequency resolution: 23.4Hz]

16x magnification = 3kHz spectrum = 1.5kHz biquad decimation filter [frequency resolution: 11.7Hz]

32x magnification = 1.5kHz spectrum = 750Hz biquad decimation filter [frequency resolution 5.9Hz]

These decimation filters BEFORE the downsampling prevent the production of alias products that could be seen in the spectrum as false signals without audio.

The decimation filter is followed by the downsampling which is performed with the built in ARM decimation functions and uses an additional rudimentary FIR decimation filter with 4 taps. These 4 taps have also been precalculated and are switched depending on the magnification.

The downsampled I & Q samples are then processed by the 256-point FFT that feeds the spectrum and waterfall display. The FFT is always a 256-point FFT, but depending on the grade of downsampling the frequency resolution (= bin bandwidth) can be as fine as:

1.5kHz / 256 = 5.9Hz [32 x magnification]

[OUTDATED ;-)]You might wonder why the spectrum and waterfall display have very different speeds depending on the magnification: this is a fundamental property or law of DSP (digital signal processing): when you require more frequency resolution, you need time (and loose time resolution) and vice versa. In terms of downsampling, this means that for high magnification, you need to collect many many samples before you can perform the FFT with that high resolution, so the refreshing of the display happens in long time intervalls when you have high frequency resolution. This is an elementary property of DSP and you have to live with it ;-).

Danilo, DB4PLE has managed the impossible task of overlapping the incoming samples in such a way that combining high frequency resolution and high display rate has become possible (in AudioDriver_SpectrumZoomProcessSamples, see his figure below)! The newest firmware version now has exactly the same update speed of the spectrum and waterfall display in every magnify / Zoom setting. Thanks Danilo, for this feature!

Fig. 1: Incoming samples are collected, lowpass filtered, decimated and stored. The FFT for the display is done independently using the data that is available. Input data overlap differs depending on the Zoom factor used Fig. 1: Incoming samples are collected, lowpass filtered, decimated and stored. The FFT for the display is done in regular time intervals using the data that is available at the time. Therefore input data overlap differs depending on the Zoom factor used. Graph by Danilo DB4PLE.

PLAN FOR THE FUTURE (DD4WH, 2017_12_17)

  • the IIR filters used may not be the most efficient filters in terms of MCU resources
  • we should better use the built-in FIR filters in the ARM decimation routines
  • we should use a two step decimation process to lower the need for high steepness in the lowpass filters before the decimation (eg. for 32x magnification first decimate by 4x, then decimate by 8x)
  • we would need a dynamic calculation of the FIR filter coefficients inside the software
  • then the software would dynamically calculate the coefficients for the FIR lowpass filters whenever the magnification is switched
  • magnifications up to 4096x or 8192x could be realized without much effort and MCU load, this could realize a resolution in the sub-Hz region, sometimes useful to estimate carrier frequency offset, which can be very informative in MW BC Dxing

Useful resources

Collins, A.R.: Zoom FFT. HERE

Lyons, R.G. (2011): Understanding Digital Signal Processing. - Pearson, 3rd edition.

Lyons, R.G.: Using Zoom FFT for spectral analysis. HERE

Al-Qudsi et al. (2013): Zoom FFT for precise spectrum calculation in FMCW radar using FPGA. HERE