Re: FM Demod question
- From: Tim Wescott <tim@xxxxxxxxxxxxxxxx>
- Date: Tue, 02 Aug 2005 19:05:26 -0700
Paul Solomon wrote:
Run the numbers. With a carrier deviation of 75kHz and a sampling rate of 1.25MSPS then you should see no more thanHi 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
(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 .
- Follow-Ups:
- Re: FM Demod question
- From: Clay S. Turner
- Re: FM Demod question
- From: Paul Solomon
- Re: FM Demod question
- References:
- FM Demod question
- From: Paul Solomon
- FM Demod question
- Prev by Date: Re: FM Demod question
- Next by Date: Re: Phaeless filtering
- Previous by thread: Re: FM Demod question
- Next by thread: Re: FM Demod question
- Index(es):
Relevant Pages
|