DSPRelated.com
Forums

FM Demodulator

Started by jjw265 December 3, 2005
Hello,

I am working on designing an FM demodulator for a software-defined radio
class I am taking.  For an earlier lab in the course, I designed an AM
demodulator using envelope detection.  It is my understanding that it is
possible to create an FM demodulator simply by putting a phase detector in
front of my previously designed envelope detector and adjusting the
bandpass filter and sampling frequencies of my AM design to match the
change in station location.  Unfortunately, I can not figure out exactly
how to implement the phase detector so this will work.  Does anybody have
any insight as to whether this method is actually possible and if so, how
to do it?  Any help is much appreciated.  I am designing this for a
Lyrtech Signalwave board (with a xilinx fpga on it) and programming in
simulink.

Thanks!

John


"jjw265" <jjw265@psu.edu> wrote in message
news:dvWdnSIQCIf7GAzenZ2dnUVZ_tOdnZ2d@giganews.com...
> Hello, > > I am working on designing an FM demodulator for a software-defined radio > class I am taking. For an earlier lab in the course, I designed an AM > demodulator using envelope detection. It is my understanding that it is > possible to create an FM demodulator simply by putting a phase detector in > front of my previously designed envelope detector and adjusting the > bandpass filter and sampling frequencies of my AM design to match the > change in station location. Unfortunately, I can not figure out exactly > how to implement the phase detector so this will work. Does anybody have > any insight as to whether this method is actually possible and if so, how > to do it? Any help is much appreciated. I am designing this for a > Lyrtech Signalwave board (with a xilinx fpga on it) and programming in > simulink. > > Thanks! > > John > >
If you are demodulating FM with a processor it has to be done at baseband using the I and Q signals. If you have the carrier signal there are other methods (say a PLL) but processors cannot work at that speed. Once you have I and Q you find the phase from arctan(I/Q) and differentiate. Practically you don't need to work out arctan at all - just differentiate the expression on paper and implment the result. It's 1/(1+(I/Q)^2) X d/dt(I/Q) from which a simple expression can be derived. McC

Real_McCoy wrote:


> If you are demodulating FM with a processor it has to be done at baseband > using the I and Q signals. If you have the carrier signal there are other > methods (say a PLL) but processors cannot work at that speed. Once you have > I and Q you find the phase from arctan(I/Q) and differentiate.
1. You can implement PLL in the baseband as well. 2. There is a better way for building FM discriminator without arctan: X = I*(dQ/dt) - Q*(dI/dt); Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
"Vladimir Vassilevsky" <antispam_bogus@hotmail.com> wrote in message
news:aplkf.26201$7h7.5911@newssvr21.news.prodigy.com...
> > > Real_McCoy wrote: > > > > If you are demodulating FM with a processor it has to be done at
baseband
> > using the I and Q signals. If you have the carrier signal there are
other
> > methods (say a PLL) but processors cannot work at that speed. Once you
have
> > I and Q you find the phase from arctan(I/Q) and differentiate. > > 1. You can implement PLL in the baseband as well. >
Can you provide a reference for this - sounds interesting.
> 2. There is a better way for building FM discriminator without arctan: > X = I*(dQ/dt) - Q*(dI/dt); >
That's what I just said in my original post above but I did not work out the details. When you diferentiate the aarctan function on paper you get the above result.
>
McC

Real_McCoy wrote:


>>1. You can implement PLL in the baseband as well. > Can you provide a reference for this - sounds interesting.
The processing in the baseband is exactly the same as the processing in the passband (except it has to be complex). Whatever you do in the passband can also be done in the baseband. That is just the matter of the preference. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
"Vladimir Vassilevsky" <antispam_bogus@hotmail.com> wrote in message
news:XGmkf.26215$7h7.5662@newssvr21.news.prodigy.com...
> > > Real_McCoy wrote: > > > >>1. You can implement PLL in the baseband as well. > > Can you provide a reference for this - sounds interesting. > > The processing in the baseband is exactly the same as the processing in > the passband (except it has to be complex). Whatever you do in the > passband can also be done in the baseband. That is just the matter of > the preference. > >
Cor blimey mate - not with you there. You see a PLL needs a carrier frequency to work - to lock on to.You cannot lock on to baseband - how would you set the VCO ? You need to go back to school mate. CW

Cockney_Wanker wrote:


>>The processing in the baseband is exactly the same as the processing in >>the passband (except it has to be complex). Whatever you do in the >>passband can also be done in the baseband. That is just the matter of >>the preference.
> Cor blimey mate - not with you there. You see a PLL needs a carrier > frequency to work - to lock on to.You cannot lock on to baseband - how would > you set the VCO ? You need to go back to school mate.
So, the venerable Matlab & Labview crap does not know how to lock on the carrier in the baseband. You got to have your own head to figure out such a simple thing, my dear professional. VLV
Cockney_Wanker wrote:
> "Vladimir Vassilevsky" <antispam_bogus@hotmail.com> wrote in message > news:XGmkf.26215$7h7.5662@newssvr21.news.prodigy.com... > > > > > > Real_McCoy wrote: > > > > > > >>1. You can implement PLL in the baseband as well. > > > Can you provide a reference for this - sounds interesting. > > > > The processing in the baseband is exactly the same as the processing in > > the passband (except it has to be complex). Whatever you do in the > > passband can also be done in the baseband. That is just the matter of > > the preference. > > > > > Cor blimey mate - not with you there. You see a PLL needs a carrier > frequency to work - to lock on to.You cannot lock on to baseband - how would > you set the VCO ? You need to go back to school mate. > > CW
In a digital PLL, zero Hertz is a legitimate carrier frequency. It just means the only input to the NCO is the error term from the loop filter output. John
"jjw265" <jjw265@psu.edu> wrote in message 
news:dvWdnSIQCIf7GAzenZ2dnUVZ_tOdnZ2d@giganews.com...
> Hello, > > I am working on designing an FM demodulator for a > software-defined radio > class I am taking. For an earlier lab in the course, I > designed an AM > demodulator using envelope detection. It is my > understanding that it is > possible to create an FM demodulator simply by putting a > phase detector in > front of my previously designed envelope detector and > adjusting the > bandpass filter and sampling frequencies of my AM design > to match the > change in station location. Unfortunately, I can not > figure out exactly > how to implement the phase detector so this will work. > Does anybody have > any insight as to whether this method is actually possible > and if so, how > to do it? Any help is much appreciated. I am designing > this for a > Lyrtech Signalwave board (with a xilinx fpga on it) and > programming in > simulink. >
What you are doing is reproducing the original trick that was used in analog circuitry to demodulate FM: run the signal through a filter that converts frequency or phase variation into amplitude variation, then use an envelope detector to capture the amplitude variation. The simplest filter that I know of that converts frequency variation to amplitude variation is a pure differentiator, which you can implement by subtracting consecutive samples: y_n = x_n - x_(n-1) You will probably be left with a very small signal riding on a very large DC component, which you can eliminate with an audio band-pass filter.
"Vladimir Vassilevsky" <antispam_bogus@hotmail.com> wrote in message
news:4391FE33.2020200@hotmail.com...
> > > Cockney_Wanker wrote: > > > >>The processing in the baseband is exactly the same as the processing in > >>the passband (except it has to be complex). Whatever you do in the > >>passband can also be done in the baseband. That is just the matter of > >>the preference. > > > Cor blimey mate - not with you there. You see a PLL needs a carrier > > frequency to work - to lock on to.You cannot lock on to baseband - how
would
> > you set the VCO ? You need to go back to school mate. > > So, the venerable Matlab & Labview crap does not know how to lock on the > carrier in the baseband. You got to have your own head to figure out > such a simple thing, my dear professional. > > VLV
I expect you mean down-concerving to a lower IF - that's not baseband operations. CC