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
--------------- = 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
Xold = Xnew and go do it again.
Eric B. wrote:
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,
NJQRP/AMQRP, QRP ARCI, QCWA, FRC. ARRL SDR Wrk Grp Chairman
Laziness is the number one inspiration for ingenuity. Guilty as