WBFM receive block and FM demodulation process questions

Hello,

I am a high school student and am very interested in the AM and FM
demodulation processes. I have been using gnu radio in combination with
a USRP to receive radio signals, demodulate, and listen. This past year,
I worked through the details of AM demodulation in gnu radio by
computing mixing, low-pass filtering, decimating, interpolating, and
normalizing algorithms/. /This helped me better understand the AM
demodulation process, and especially what was being done in each of the
gnu radio blocks. I am now trying to do the same thing with FM
demodulation and have implemented the following; frequency x-lating FIR
filtering, calculating the instantaneous frequencies, and decimating and
interpolating routines (as performed in the rational resampler).

My question is about the instantaneous frequencies in FM demodulation. I
know that the frequency of the carrier varies with the strength of the
transmitted signal. The instantaneous frequencies must then be the
deviation of the modulated signal from the carrier (which is at
baseband) and denote changes in the strength of the transmitted signal.
Still, I must be missing some steps that are performed in the WBFM
block. After I calculate the instantaneous frequencies, what do I have
to do to complete the demodulation process and be able to play the file
back through the audio sink? I have attached a screenshot of the
gnuradio-companion flow graph I am following, along with a pdf of the
process I am implementing.

What does the WBFM block do, mathematically, to the signal? I would also
appreciate feedback on the process I am using.

Thanks,
J

Hello J,

 You can find some details on this at URL: 

http://radioware.nd.edu/documentation/basic-gnuradio
It sounds like much of this will be old hat to you, but there is a
section entitled “Exploring the FM receiver,” which addresses at least
some of your specific question.

Sincerely,
Dan Marlow

On Jul 10, 2011, at 9:07 PM, concernedconsumer wrote:

the same thing with FM demodulation and have implemented the
steps that are performed in the WBFM block. After I calculate the
J
<
screenshot_grc
.png

<FM_demodProcess.pdf>_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Daniel R. Marlow [email protected]
Homepage: http://wwwphy.princeton.edu/~marlow/
Phone: 609 258 4383 Fax: 609 258 6360

Hi J,

a couple of thoughts:

  • Your flow graph seems correct. From your mail, I wasn’t quite sure if
    it’s working or not. If not, the place I’d check is the input filter.
  • The frequency does not strictly depend on the strength of the
    signal, nor is it demodulated by from signal strength deviations. It’s
    rather the phase changes which are relevant. To figure out what the
    WBFM block does, check out
    gnuradio-core/src/python/gnuradio/blks2impl/wfm_rcv.py. The heart of
    this block is gr_quadrature_demod_cf, which does exactly that–output
    the difference of phases.
    Mathematically, if \phi(k) denotes the phase of the k-th sample, the
    output is (\phi(k) - \phi(k-1)) * gain. The latter factor describes
    the frequency deviation.

Hope this helps… good luck with your stuff! I wish some of my students
had spent time in high school this way :slight_smile:

MB

On Sun, Jul 10, 2011 at 09:07:09PM -0400, concernedconsumer wrote:

filtering, calculating the instantaneous frequencies, and decimating and
of the gnuradio-companion flow graph I am following, along with a pdf of the
process I am implementing.

What does the WBFM block do, mathematically, to the signal? I would also
appreciate feedback on the process I am using.

Thanks,
J


Discuss-gnuradio mailing list
[email protected]
Discuss-gnuradio Info Page


Karlsruhe Institute of Technology (KIT)
Communications Engineering Lab (CEL)

Dipl.-Ing. Martin B.
Research Associate

Kaiserstraße 12
Building 05.01
76131 Karlsruhe

Phone: +49 721 608-43790
Fax: +49 721 608-46071
www.cel.kit.edu

KIT – University of the State of Baden-Württemberg and
National Laboratory of the Helmholtz Association

Try using a single pole IIR filter. If you don’t know what an IIR is,
wiki
it, better explanation there than from me. Keep pushing the frequency
cutoff
to a lower frequency until the static gets better. If you go to far,
your
audio should disappear.

On Tue, Jul 19, 2011 at 5:22 PM, concernedconsumer <

Hello,
Thank you so much for the helpful responses! I really appreciate them.

I have now successfully calculated the instantaneous frequencies, and am
able to hear the station. However, there is much static present. From
this website (
http://radioware.nd.edu/documentation/basic-gnuradio/exploring-the-fm-receiver
), I see that I should perform FM de-emphasis to reduce the strengths of
the higher frequency parts of the signal. I have tried to do this using
a FIR filter (using 21 taps calculated by the sinc function) with a
cutoff at 2122 Hz (because the tau constant is 75e-6 which gives a
cutoff of 2122 Hz in an RC filter). However, this did not do much to
reduce the static. I have also tried an 11 point least squares quadratic
filter. This, also, did not help much.

What type of filter, with what tap values, should be used for FM
de-emphasis? I have attached a flowchart with my process (the pdf file),
along with a screenshot of the gnuradio flowgraph I am following. Also,
are there other ways I can reduce the amount of static in the signal?

Thanks,
J