Re: FM Demod question



Paul Solomon wrote:
Hi All,

Thanks for your assistance so far. I have finally got a working FM demod module that allows me to stick an antenna (with a LNA) on the input of my dev board and listen to the radio on the output of a DAC.

I however have hit an unexpected issue in the design relating to the minimum sample rate of the signals throughout the system which I would like to get a second opinion on.

I am under-sampling a clean (filtered) spectrum of 88-108 MHZ with an ADC running at 80MSPS. this gives me the spectrum in the digital domain at 8 - 28MHz with an image at 52 - 72MHz .

From this I do I/Q mixing to downsample the desired channel to 0MHz and then filter and decimate.
The first filter / decimate stage is a 1MHz pass 9MHz stop filter and I decimate by 8, taking my sample rate down to 10MSPS.


After this I apply tighter filter 200kHz pass 400kHz stop on the I and Q so that I only have my desired station left.

This is where the problem comes, if I run this straight into an arctan (cordic) and then phase unwrap / differentiate the system works fine, however I have 10MSPS to represent a signal with a bandwidth of ~400kHz which seems to be a major overkill.

If I decimate after this final filter stage (as I was planning to) by a factor of 8, this gets my sample rate down to 1.25MSPS which is more reasonable, however my audio becomes badly distorted.

A fair amount of experimentation has let me to believe that the distortion is comming from the phase unwrap process, as when I decimate further, the phase jumps will get larger, when the phase jumps get greater then pi, the unwrap will assume a wrap occured and try to correct for it.

The way I came to this conclusion is with an FM test generator, When I dont decimate in this last stage, I can demodulate a normal FM carrier (with a deviation of 75kHz) with out a problem. If I decimate by 2 here, then i get distortion, but if I bring the carrier deviation down to ~50kHz, then the distortion goes. when I decimate by 8 I can clear the distortion by reducing the carrier deviation to ~20kHz. The carrier has no effect on this distortion, and the spectrum of the signal after decimation and before the cordic looks correct in all instances.

So...... This has left me scratching my head, as I thought that I should only require the BW * 2 + a little but as the sampling frequency, however this does not seem to be the case here. If anyone has any input that would be appreciated. Are my results here to be expected or would you have assumed otherwise?


Regards,

Paul Solomon


Run the numbers. With a carrier deviation of 75kHz and a sampling rate of 1.25MSPS then you should see no more than
(2 pi rad/cycle) * (75kHz) / (1.25MSPS) = 0.377 radians, which is hardly a half-circle! While there must be something going on to cause your distortion it isn't from excessive wrap. It may be in your wrap detector (are you perhaps overdetecting wrap?) or your cordic implementation may have some nonlinearities.


You could take Clay's suggestion, although you'll need to keep the sampling rate up: if I'm right that method uses the small-angle approximation and will distort for large phase jumps.

This is a cool saga to watch -- I've been wanting to implement something like this for narrow band FM; it's nice to know you're out there hacking the brush down for the rest of us.

--

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com
.



Relevant Pages

  • Re: FM Demod question
    ... >>> then filter and decimate. ... >>> distortion is comming from the phase unwrap process, ... but if I bring the carrier deviation down to ... >>> Paul Solomon ...
    (comp.dsp)
  • Re: FM Demod question
    ... >> decimate by 8, taking my sample rate down to 10MSPS. ... >> distortion is comming from the phase unwrap process, ... >> further, the phase jumps will get larger, when the phase jumps get ... but if I bring the carrier deviation down to ...
    (comp.dsp)
  • Re: FM Demod question
    ... > decimate by 8, taking my sample rate down to 10MSPS. ... > A fair amount of experimentation has let me to believe that the distortion ... but if I bring the carrier deviation down to ...
    (comp.dsp)
  • FM Demod question
    ... decimate by 8, taking my sample rate down to 10MSPS. ... A fair amount of experimentation has let me to believe that the distortion ... is comming from the phase unwrap process, as when I decimate further, the ... distortion, but if I bring the carrier deviation down to ~50kHz, then the ...
    (comp.dsp)
  • Re: New to DSP, need to understand decimation
    ... Take a look at the attenuation vs. frequency of your IF filter, and pick a bandwidth that gets you no more than your desired aliasing amount. ... Downconvert, filter, phase shift and decimate. ... With a good filter you'd be able to maintain close to a 40MHz bandwidth and a 54MHz sample rate. ... decimating is to save me multipliers? ...
    (comp.dsp)