FM demodulation

Go To Last Post
9 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I want to demodulate the FM intermediate frequency (IF)signal using zero crossing detection. After several trials I was able to detect all the zero crossings. Now I need to generate the audio signal using the zero crossing data. Can any body suggest me a method to do the demodulation using zero crossings.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The FM information can be derived from the time between successive zero crossings.

Is this wideband FM (such as broadcast) or narrow band (data and communication-grade voice)?

What is the nature of the source modulation? Is it data or "voice" (including music, etc)?

If it is data, is it frequency shift keying, or audio frequency shift keying or something else?

Jim

Jim Wagner Oregon Research Electronics, Consulting Div. Tangent, OR, USA http://www.orelectronics.net

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thank you ka7ehk, for your reply. This is wide band fm. What should be the zero crossing recording time in order to generate the audio signal. Is there any theory to generate the audio signal from the zero crossing rate?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Zero output corresponds to a carrier which is at the center of the IF. Thus, if the IF center frequency is F(if), then zero crossings that are exactly 1/F(if) should correspond to modulation zero crossings.

How often you need to sample depends on the bandwidth of the modulation. One sample is the time between two successive zero crossings of the same slope.

Do not ignore that fact that most voice and slow speed data has pre-emphesis applied at the transmitter. You will need to implement a de-emphesis algorithm once detected. I don't know how to do that, right off.

Be aware that your zero crossing numbers will be integer multiples of the CPU clock (if you are using a microcontroller). Thus, it will be "granular". I would expect this to possibly work at a 455KHz IF but not at a 10.7MHz IF which is the common IF for broadband FM. The count rate would be too high to implement with a micro. I am guessing that the XMega is the only one even close to fast enough to do what is being suggested.

How are you determining the time between zero crossings?

Jim

Jim Wagner Oregon Research Electronics, Consulting Div. Tangent, OR, USA http://www.orelectronics.net

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Think of PLL as an FM demodulator.

It might give You a few clues as to how to achieve demodulation

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Good suggestion. But the OP seems to be fixed on using zero crossing information.

Jim

Jim Wagner Oregon Research Electronics, Consulting Div. Tangent, OR, USA http://www.orelectronics.net

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

zero crossing would work if you are a masochist, given today's cheap mod/demod chips.
And you'd need a darned fast DSP.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

the short answer is that the time difference between is your sound!
but it will never be good that way, but we need more info about your signal to help.
Perhaps you should read some of the documentation to some of the sdr's (software defined radio's).
Perhaps download Spectraview it can take a IF and demodulate it (using the PC)

Edit
SpectraVue

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I'd use a chip for this, or do it in analog...

That said, the Xmega E series does have a couple of gates and FF's (programmable logic module), which would be nice for this project.

Feed the IF, presumably a sin wave, into a comparator to get a digital pulse train.

Feed the pulse train into a FF or two for a divide by several in hardware. (Won't matter for a voice or data signal).

Then either do a PLL, or start a counter with each ZC, read the counter and use the value to feed a PWM.

Feed the PWM through an RC filter to get your original signal.

The hardware divider would get the signal rate down to where an Xmega ISR could handle this... maybe.

Perhaps a one chip solution.

JC