discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] fm, vector_source, interpolating filters


From: Eric Blossom
Subject: Re: [Discuss-gnuradio] fm, vector_source, interpolating filters
Date: Sat, 25 Sep 2004 07:33:58 -0700
User-agent: Mutt/1.4.1i

On Sat, Sep 25, 2004 at 09:50:59AM -0400, Chuck Swiger wrote:
> 
> Ok, I see - the modulator prepares a signal from the audio that is *later* 
> mixed with your local osc to create the FM signal. I was confused by something
> called a 'modulator' with only one signal input ;)    The examples help a 
> lot.

We're generating FM in quadrature at baseband.  The example I cited
uses the USRP.  In that case, the upconversion occurs onboard the USRP
using the digital up converter.  The upconverted frequency is set with:

        u.set_tx_freq (0, options.cordic_freq)

where u is an instance of usrp_sink_c


> I made a quicky demo 
> here:   http://webpages.charter.net/cswiger/fm_modulation.html
> which will get a lot more detail such as how to calculate k for deviation 
> etc.

Looks good.  When you get this all put together, if you've got time,
please edit this discussion into a page on the Wiki.

> This would be a good point to learn how the interpolating filters work too.

Basically they are an efficient method to do a zero stuffing
interpolation followed by an FIR filter.  The FIR gets rid of the
high frequency images caused by the zero stuffing.

In a simple implementation, you'd do the interpolation and follow it
with the FIR.  For example, to interpolate by 8, you copy the first
sample of the input to the ouput, then add 7 zeros to the output, then
copy the second sample of the input to the output, then 7 more zeros,
etc.  If you follow this with a low pass FIR, you've successfully
interpolated and removed the images that were created by the zero
stuffing.

Since 7 out of every 8 inputs to the FIR is a zero, there are several
shortcuts possible.  If the original FIR had N taps, our code speeds
up the process by using 8 separate FIRs, each with N/8 taps, that
share a common delay line.  We commutate between the 8 FIRs to
produce the output.

Eric




reply via email to

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