views:

126

answers:

1

What are some software (or FPGA) techniques suitable for FM demodulation? I've been experimenting in MATLAB to try and get an algorthm right, but I've been basing it on a analog reference material with limited results. I can make out the audio, but there is horrible distortions that I can't fix with filtering. Ultimately I want to be able to use an integer implementation on FPGA, but I need to get the basic demodulation working first.

An FFT shows the spectrum has been moved back down to be centered around DC, but it just doesn't sound right.

+2  A: 

If you're already hearing the sound, then I'd say you're most of the way there. It might help if you explain (or paste) some of the code/algorithm that you're using, as well as describing the noise as best you can.

If the noise is only appearing in integer based calculations, then integer rounding errors or overflow are the most likely causes of the noise - though perhaps shifting from the frequency domain is causing that noise to sound a little foreign. The key to good integer based calculations is to know your operator precedence and to make sure you're staying within the bounds of your integer at each step of the calculation. Too big and you'll get overflow, too small and you'll lose resolution.

Pre/de-emphasis may also cause your output to sound strange if you're not accounting for it although I wouldn't really expect "heavy distortion" to result.

Peter Gibson
For Matlab, I was starting out with floating point. I'll have go to another machine to dig up the code. If I remember the reference I was using, it stated you could do a AM demodulation above and below the target frequence and combine the results. I want to be able to pull in regular radio stations so I still need to get some the specifics applicable to them.
NoMoreZealots