2

I'm trying to make a WBFM receiver without using WBFM Receive block. So I've tried this way

FM receiver flowgraph

But it won't work. The problem is

RuntimeError: flow graph has loops!

and I need to use loop feedback for implement FM demodulation.

Very pleasure for any suggestions and advises.

1 Answers1

5

General principle: In GNU Radio you cannot ever have a flow graph with a loop in it. If you wish to have feedback of some kind, it must be implemented in a single block.

(There are many existing blocks that do this, such as AGC blocks and IIR filter blocks, and classes to help create them, though they still require writing C++ code.)

However, you do not need feedback to implement a FM demodulator. The key block to FM demodulation in GNU Radio is the Quadrature Demod (gnuradio.analog.quadrature_demod_cf) block. This block takes in a complex signal and outputs the phase difference — or instantaneous frequency — of every successive pair of samples, which is exactly the core of FM demodulation.

Besides the Quadrature Demod block, you will want

  • A low-pass filter on the input, as with any demodulator.
  • A suitable FM de-emphasis filter (provided in the FM Deemphasis block).
  • Optionally a DC blocking filter, because if the input signal is not centered at 0 there will be a corresponding DC offset in the output audio, which will create clicks at start/stop if minor or clipping of the audio if severe.
Kevin Reid AG6YO
  • 24,195
  • 7
  • 48
  • 101