[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] FM demodulation of a real signal

From: Robert McGwier
Subject: Re: [Discuss-gnuradio] FM demodulation of a real signal
Date: Wed, 05 Apr 2006 16:56:26 -0400
User-agent: Thunderbird 1.5 (Windows/20051201)

It will not be possible to recover the signal if the real signal is at zero IF (and predetection) so we will assume that it is not at zero.

The simplest possible FM detector is a zero crossing counter. That is, you output a signal that is proportional to the distance between zero crossings. After filtration, this will provide a usable FM detection. It works much better if you do a bandpass filter first, count distance between zero crossings and then lpf the "distance" signals. The zero crossing should not be the number of samples.
Given a sample N and N+1 where we have a zero crossing between,  one can do

---------------     = slope

is the slope and the zero crossing then is the solution to:

slope*Xnew + S(n) = 0


Xnew = - S(n)/slope. Where we have decided to find the place where the connecting line crosses.

Xnew - Xold is the zero crossing distance and is output as the detected FM.

now set

Xold = Xnew and go do it again.


Eric Blossom wrote:
On Wed, Apr 05, 2006 at 03:44:59PM +0200, Matteo Campanella wrote:
Hello, I am quite stuck at a problem, that is, how to demodulate a FM
signal that is NOT in complex form using existing gnuradio blocks. The
quadrature demodulator works only with complex input; I have tried to
build an analytic signal out of my real one, but the result of the
demodulation is then quite poor.

Any suggestions?

Is your real signal at a non-zero IF?

If so, just multiply by a complex sinusoid to translate to baseband,
then use existing code path.  We come from the complex is simple
school of signal processing...

AMSAT VP Engineering. Member: ARRL, AMSAT-DL, TAPR, Packrats,
Laziness is the number one inspiration for ingenuity.  Guilty as charged!

reply via email to

[Prev in Thread] Current Thread [Next in Thread]