[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Question on IF filter design for FM demodulation

From: Achilleas Anastasopoulos
Subject: Re: [Discuss-gnuradio] Question on IF filter design for FM demodulation
Date: Fri, 07 Jan 2005 18:34:16 -0500
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)

Eric Blossom wrote:
On Thu, Jan 06, 2005 at 05:37:53PM -0500, Achilleas Anastasopoulos wrote:

Dear all,

I am looking at the FM demodulator example
provided in the gnuradio examples (in the mc4020 directory)
and I have a question on the
the design parameters of the filter used to separate one
FM station before demodulating:

the sampling frequency is 20 Msps
the desired station is centered at 5.75 MHz
the designed filter (lowpass version)
has a cutoff frequency at 250 KHz
and a transition band of 800KHz
The signal is filtered and IQ demodulated and then
decimated by a factor of 125.

It seems that this filter is too wide:
an adjacent FM station (at 5.75 MHz + 200 KHz)
is not attenuated at all and its spectrum (after decimation)
is folded on the desired station spectrum.
This is clearly seen in the simple example I attach.

What am I missing here?

Nothing.  It is too wide, but it works (mostly).

The windowed filter design routine generates a lot of taps, and it
gets too expensive if we use the "right spec".  It's probably worth
using the Parks McClellan code to build a better filter and see how
many taps you end up with.

If you look at the USRP examples (these may only be in CVS) they have
the right width and sound much better.  They're doing the channel
selection and downconversion in the FPGA, passing a 256kS/s complex
signal across the USB for each FM station.

Take a look at gnuradio-examples/python/usrp1/{wfm_rcv.py,wfm_rcv_many.py}


I am amazed that even this design (wfm_rcv.py) works:

Before the downconversion at the FPGA the entire FM band (88-108 MHz) is present inside the useful spectrum (with the desired station centered at 5.75 MHz).
Then the digital downconversion brings the desired station at 0.
So far so good.

However, decimating at the FPGA by a factor of 250 will essentially spread the entire spectrum of the desired station (not a problem), but also all other (neighboring) stations will be aliased on top of the desired one. These stations will appear in the desired band completely unattenuated.

It seems to me that before decimation at the FPGA, a LPF is required
(probably in two stages as Matt suggested).
Can this be done in the FPGA of the USRP?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]