sdrangel/plugins/channelrx/demodnfm
f4exb 2389f0d55c Updated versions and changelogs 2021-03-03 13:52:40 +01:00
..
CMakeLists.txt Rx plugins: refactoring of classes (1) 2019-11-23 07:40:36 +01:00
nfmdemod.cpp Demod Analyzer: implementation for DSDDemod and NFMDemod 2020-12-20 18:31:59 +01:00
nfmdemod.h Moved message to GUI to ChannelAPI. Prepares #769 2021-02-08 21:52:47 +01:00
nfmdemodbaseband.cpp In some audio demods. Reapply audio sample rate only if channel sample rate effectively changes. Implements #791 2021-03-03 01:45:59 +01:00
nfmdemodbaseband.h In some audio demods. Reapply audio sample rate only if channel sample rate effectively changes. Implements #791 2021-03-03 01:45:59 +01:00
nfmdemodgui.cpp NFM: enhancements to GUI and channel spacing handling 2020-11-12 19:40:35 +01:00
nfmdemodgui.h NFM: enhancements to GUI and channel spacing handling 2020-11-12 19:40:35 +01:00
nfmdemodgui.ui NFMDemodGui: Add spacer between CTCSS and volume controls to make it look nice when stretched 2021-02-06 22:40:03 +01:00
nfmdemodreport.cpp Rx plugins: refactoring of classes (1) 2019-11-23 07:40:36 +01:00
nfmdemodreport.h Rx plugins: refactoring of classes (1) 2019-11-23 07:40:36 +01:00
nfmdemodsettings.cpp NFM: RF, AF bandwidth and FM deviation independent setting. Implements #691 2020-11-08 12:34:56 +01:00
nfmdemodsettings.h NFM: RF, AF bandwidth and FM deviation independent setting. Implements #691 2020-11-08 12:34:56 +01:00
nfmdemodsink.cpp Demod Analyzer: implementation for DSDDemod and NFMDemod 2020-12-20 18:31:59 +01:00
nfmdemodsink.h Demod Analyzer: implementation for DSDDemod and NFMDemod 2020-12-20 18:31:59 +01:00
nfmdemodwebapiadapter.cpp Fixed -Wunused-parameter warnings 2020-11-14 11:13:32 +01:00
nfmdemodwebapiadapter.h REST API: config: GET (13): corrected missing return in deserialize methods of the adapters 2019-08-05 03:42:04 +02:00
nfmplugin.cpp Updated versions and changelogs 2021-03-03 13:52:40 +01:00
nfmplugin.h Channel plugins: use specialized ChannelGUI superclass. Handle GUI lifecycle in MainWindow 2020-10-04 22:16:09 +02:00
readme.md NFM: enhancements to GUI and channel spacing handling 2020-11-12 19:40:35 +01:00

readme.md

NFM demodulator plugin

Introduction

This plugin can be used to listen to a narrowband FM modulated signal. "Narrowband" means that the bandwidth can vary from 5 to 40 kHz.

Interface

NFM Demodulator plugin GUI

1: Frequency shift from center frequency of reception value

Use the wheels to adjust the frequency shift in Hz from the center frequency of reception. Right click on a digit sets all digits on the right to zero. This effectively floors value at the digit position. Wheels are moved with the mousewheel while pointing at the wheel or by selecting the wheel with the left mouse click and using the keyboard arrows. Pressing shift simultaneously moves digit by 5 and pressing control moves it by 2. Left click on a digit sets the cursor position at this digit.

2: Channel power

Average total power in dB relative to a +/- 1.0 amplitude signal received in the pass band.

3: Level meter in dB

  • top bar (green): average value
  • bottom bar (blue green): instantaneous peak value
  • tip vertical bar (bright green): peak hold value

4: Channel spacing presets

Clicking on the "CS" button will apply RF bandwidth, AF bandwidth and FM deviation settings according to the channel spacing scheme selected in the combo box as follows:

CS (kHz) RFBW (kHz) AFBW (kHz) FM Δ (±kHz) β
5 4.8 1.7 0.7 0.43
6.25 6 2.1 0.9 0.43
7.5 7.2 2.5 1.1 0.43
8.33 8 2.8 1.2 0.43
12.5 11 3 2.5 0.83
25 16 3 5 1.67
40 36 9 9 1
  • All these settings apply the Carson's rule: RFBW = 2 × (FMΔ + AFBW)
  • The 12.5 and 25 kHz channel spacings correspond to standard 11F3 and 16F3 settings respectively and are widely accepted and mostly used
  • For spacings lower than 12.5 kHz values are empirically built using Carson's rule from β=0.43 which is the only standard provided
  • For spacing higher than 25 kHz values are derived from an old 36F9 standard.

When you are lost with the RF, AF bandwidths and FM deviation settings you can always come back to these standards and generally get good results.

When changing the RF bandwidth the channel spacing selection in the combo box is adjusted to fit within this bandwidth.

☞ The demodulation is done at the channel sample rate which is guaranteed not to be lower than the requested audio sample rate but can possibly be equal to it. This means that for correct operation in any case you must ensure that the sample rate of the audio device is not lower than the Nyquist rate required to process this channel bandwidth.

☞ The channel sample rate is always the baseband signal rate divided by an integer power of two so depending on the baseband sample rate obtained from the sampling device you could also guarantee a minimal channel bandwidth. For example with a 125 kS/s baseband sample rate and a 8 kS/s audio sample rate the channel sample rate cannot be lower than 125/8 = 15.625 kS/s (125/16 = 7.8125 kS/s is too small) which is still OK for 5 or 6.25 kHz channel bandwidths.

5: RF bandwidth

This is the bandwidth in kHz of the filter applied before the discriminator and therefore called "RF" bandwidth but is applied in the device pass band in fact.

6: AF bandwidth

This is the bandwidth of the audio signal in kHz (i.e. after demodulation).

7: Expected FM peak deviation

This is the peak FM deviation in ±kHz expected in the received signal and corresponds to 100% audio volume

8: Delta/Level squelch

Use this button to toggle between AF (on) and RF power (off) based squelch.

9: Squelch threshold

Power threshold mode

Case when the delta/Level squelch control (8) is off (power). This is the squelch threshold in dB. The average total power received in the signal bandwidth before demodulation is compared to this value and the squelch input is open above this value. It can be varied continuously in 1 dB steps from 0 to -100 dB using the dial button.

Audio frequency delta mode

Case when the delta/Level squelch control (8) is on (delta). In this mode the squelch compares the power of the demodulated audio signal in a low frequency band and a high frequency band. In the absence of signal the discriminator response is nearly flat and the power in the two bands is more or less balanced. In the presence of a signal the lower band will receive more power than the higher band. The squelch does the ratio of both powers and the squelch is opened if this ratio is lower than the threshold given in percent.

A ratio of 1 (100%) will always open the squelch and a ratio of 0 will always close it. The value can be varied to detect more distorted and thus weak signals towards the higher values. The button rotation runs from higher to lower as you turn it clockwise thus giving the same feel as in power mode. The best ratio for a standard NFM transmission is ~40%.

The distinct advantage of this type of squelch is that it guarantees the quality level of the audio signal (optimized for voice) thus remaining closed for too noisy signals received on marginal conditions or bursts of noise independently of the signal power.

☞ The signal used is the one before AF filtering and the bands are centered around 1000 Hz for the lower band and 6000 Hz for the higher band. This means that it will not work if your audio device runs at 8000 or 11025 Hz. You will need at least a 16000 Hz sample rate. Choose power squelch for lower audio rates.

☞ The chosen bands around 1000 and 6000 Hz are optimized for standard voice signals in the 300-3000 Hz range.

10: Squelch gate

This is the squelch gate in milliseconds. The squelch input must be open for this amount of time before the squelch actually opens. This prevents the opening of the squelch by parasitic transients. It can be varied continuously in 10ms steps from 10 to 500ms using the dial button.

11: CTCSS on/off

Use the checkbox to toggle CTCSS activation. When activated it will look for a tone squelch in the demodulated signal and display its frequency (see 10).

12: CTCSS tone

This is the tone squelch in Hz. It can be selected using the toolbox among these CTCSS values and -- for none. When a value is given and the CTCSS is activated the squelch will open only for signals with this tone squelch.

13: CTCSS tone value

This is the value of the tone squelch received when the CTCSS is activated. It displays -- if the CTCSS system is de-activated.

14: Volume

This is the volume of the audio signal from 0% (mute) to 200% (maximum) of volume at nominal frequency deviation. It can be varied continuously 1% steps using the dial button.

15: Audio high pass filter

Toggle a 300 Hz cutoff high pass filter on audio to cut-off CTCSS frequencies. It is on by default for normal audio channels usage. You can switch it off to pipe the audio in programs requiring DC like DSD+ or Multimon.

16: Audio mute and audio output select

Left click on this button to toggle audio mute for this channel. The button will light up in green if the squelch is open. This helps identifying which channels are active in a multi-channel configuration.

If you right click on it it will open a dialog to select the audio output device. See audio management documentation for details.