From: jacobfenton on
In MATLAB I am simulating an digital FM receiver.

FM signal:
Carrier at 3MHz (last IF in real system)
Sampled at 24MHz
FM deviation = 30kHz
Single tone = 7.5kHz

FM signal is then digitally quadrature mixed down to baseband, I,Q.

I and Q are decimated by 96 in 3 stages, to create 250kHz IQ data.

IQ data is then demodulated using (IdQ-QdI)/(I^2+Q^2)

Audio data at 250kHz is decimated again by factor of 3, 83.33kHz data
rate.
(when I say decimation, i mean LPF and downsample)

Tone detection is done with Goertzel Algorithm to check for 7.5kHz
Block = 240
threshold = 4000

The simulation works very well, and has been backed up by actual hardware
system.

The interesting thing I am seeing is that if I sweep the FM carrier (with
modulation) away from 3MHz, and I look at the output from the Goertzel
detector, the tone magnitude starts to drop off (which is expected) and
goes aways but then starts to come back again (with very strong magnitude)
and continues this pattern (sine wave like). I have verified this in
hardware as well, its like there is a Null in the FM as you take it off
center. Is this some common function of FM? Or is it some function of
digital mixing? It is not from spurious signals, since in my simulation
there is none. Is it a function of the digital demodulation algorithm? I
will try tomorrow the arctan(I/Q) and see if the result is the same.
Another interesting note is I^2+Q^2 does not show signal power coming back,
perhaps the tone detector is just so sensitive that some aliasing effects
are occuring and being picked up and just cannot be attenuated enough?
From: Tim Wescott on
jacobfenton wrote:
> In MATLAB I am simulating an digital FM receiver.
>
> FM signal:
> Carrier at 3MHz (last IF in real system)
> Sampled at 24MHz
> FM deviation = 30kHz
> Single tone = 7.5kHz
>
> FM signal is then digitally quadrature mixed down to baseband, I,Q.
>
> I and Q are decimated by 96 in 3 stages, to create 250kHz IQ data.
>
> IQ data is then demodulated using (IdQ-QdI)/(I^2+Q^2)
>
> Audio data at 250kHz is decimated again by factor of 3, 83.33kHz data
> rate.
> (when I say decimation, i mean LPF and downsample)
>
> Tone detection is done with Goertzel Algorithm to check for 7.5kHz
> Block = 240
> threshold = 4000
>
> The simulation works very well, and has been backed up by actual hardware
> system.
>
> The interesting thing I am seeing is that if I sweep the FM carrier (with
> modulation) away from 3MHz, and I look at the output from the Goertzel
> detector, the tone magnitude starts to drop off (which is expected) and
> goes aways but then starts to come back again (with very strong magnitude)
> and continues this pattern (sine wave like). I have verified this in
> hardware as well, its like there is a Null in the FM as you take it off
> center. Is this some common function of FM? Or is it some function of
> digital mixing? It is not from spurious signals, since in my simulation
> there is none. Is it a function of the digital demodulation algorithm? I
> will try tomorrow the arctan(I/Q) and see if the result is the same.
> Another interesting note is I^2+Q^2 does not show signal power coming back,
> perhaps the tone detector is just so sensitive that some aliasing effects
> are occuring and being picked up and just cannot be attenuated enough?

The spectrum of a sinusoidal signal that's been frequency modulated is a
Bessel function, multiplied by spectral lines of various amplitudes at
harmonics of the signal frequency away from the carrier. The Bessel
function amplitude oscillates in frequency -- perhaps your carrier is
far enough away that you're catching enough of those spectral lines to
see signal at your 3MHz IF? Are you band-limiting your test signal
after you modulate it at 3MHz?

--
Tim Wescott
Control system and signal processing consulting
www.wescottdesign.com
From: Vladimir Vassilevsky on


jacobfenton wrote:


> The interesting thing I am seeing is that if I sweep the FM carrier (with
> modulation) away from 3MHz, and I look at the output from the Goertzel
> detector, the tone magnitude starts to drop off (which is expected) and
> goes aways but then starts to come back again (with very strong magnitude)
> and continues this pattern (sine wave like). I have verified this in
> hardware as well, its like there is a Null in the FM as you take it off
> center. Is this some common function of FM?

You see the aliases of the input through the S-like frequency response
of discriminator.


Vladimir Vassilevsky
DSP and Mixed Signal Design Consultant
http://www.abvolt.com

From: jacobfenton on
> Are you band-limiting your test signal

Do you mean in MATLAB? If so, I don't think I am, I just create FM using
the standard FM equation.
From: jacobfenton on
>You see the aliases of the input through the S-like frequency response
>of discriminator.
>
>
>Vladimir Vassilevsky
>DSP and Mixed Signal Design Consultant
>http://www.abvolt.com
>
>
That definetly makes sense to what I am seeing. I have also implimented
some strong LPF on I,Q prior to demodulation and the aliasing response gets
attenuated some, but still shows up. I am using pretty strong LPF, 80-100dB
at stop band. Any hints as to what else I could try?