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
    $\begingroup$ You wrote “transmitter” in your text on one place, do you mean “receiver” there? $\endgroup$
    – Kevin Reid AG6YO
    Jan 31 '18 at 15:04
  • $\begingroup$ Yeah, sorry for the mistake $\endgroup$ Feb 1 '18 at 17:00

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.