discuss-gnuradio
[Top][All Lists]
Advanced

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

RE: [Discuss-gnuradio] Re: help on xlating frequency


From: Paul Mathews
Subject: RE: [Discuss-gnuradio] Re: help on xlating frequency
Date: Tue, 24 Mar 2009 10:28:38 -0700

As in the example, a common practice is to signal process like this:

USRP tuning w/ hardware decimation --> freq translating channel filter -->
demodulator --> additional filtering

AFAIK, you haven't told us what sort of signal you're trying to receive, so
it's not possible to recommend specific values for anything.
Here's the flowgraph backbone that I use for 900 MHz ASK signals with
important modulation products in the low kHz range (adapted from
'usrp_am_mw_rcv.py'):

        ################# Build main flowgraph ##################

        self.u = usrp.source_c()                    # usrp is data source

        adc_rate = self.u.adc_rate()                # 64 MS/s
        usrp_decim = 64
        self.u.set_decim_rate(usrp_decim)
        usrp_rate = adc_rate / usrp_decim           # 1000 kS/s
        chanfilt_decim = 32
        demod_rate = usrp_rate / chanfilt_decim     # 32 kHz
        audio_decimation = 1
        audio_rate = demod_rate / audio_decimation  # 32 kHz

        chan_filt_coeffs = optfir.low_pass (1,          # gain
                                            usrp_rate,  # sampling rate
                                            10e3,       # passband cutoff
                                            12e3,       # stopband cutoff
                                            1.0,        # passband ripple
                                            60)         # attenuation
 
        self.chan_filt = gr.fir_filter_ccf (chanfilt_decim,
chan_filt_coeffs)
        if self.use_IF:
            # Turn IF to baseband and filter combo.
            self.chan_filt = gr.freq_xlating_fir_filter_ccf (chanfilt_decim,
                                   chan_filt_coeffs, self.IF_freq,
usrp_rate)
        else:
            self.chan_filt = gr.fir_filter_ccf (chanfilt_decim,
chan_filt_coeffs)

        self.am_demod = gr.complex_to_mag()

        audio_filt_coeffs = gr.firdes.band_pass (1,     # gain
                                            demod_rate, # sampling rate
                                            4e3,        # low pass cutoff
                                            10e3,       # high pass cutoff
                                            1000)       # transition width
                                #    WIN_HAMMING)       # window type
        
        self.audio_filt = gr.fir_filter_fff(audio_decimation,
audio_filt_coeffs)

        # Wire it all together.
        self.connect (self.u, self.chan_filt, self.am_demod,
                      self.audio_filt)  #, self.volume_control, audio_sink)

I chose an IF value of 32 kHz, which puts the IF well above the signal
spectrum. Works for me.
Paul Mathews

-----Original Message-----
From: Markus Feldmann [mailto:address@hidden 
Sent: Monday, March 23, 2009 11:43 AM
To: gnu radio mailing list
Subject: [Discuss-gnuradio] Re: help on xlating frequency


Paul Mathews schrieb:
> See 'usrp_am_mw_rcv.py' for an example. Look for the code relating to 
> these lines in particular:
> 
>         if self.use_IF:
>           # Turn If to baseband and filter.
>           self.chan_filt = gr.freq_xlating_fir_filter_ccf 
> (chanfilt_decim, chan_filt_coeffs, self.IF_freq, usrp_rate)
hI pAUL,

i used this example as possible as i can, but this
frequency translating filter has one important difference
to my application, the FFT-Plot-sink which is connected to this xlating
filter is staticly. I have a slider to change my baseband to the wished
spectrum, so my xlating filter it is dynamically.

I still doesn't know whether to use a low_pass is usefull
or a band_pass. The low_pass doesn't delete the middle
signal in the FFT-Plot in my tryings.

Further on i doesn't know which conditions have to be made to let my
application work fluidly ? Which decimation ? Which rate is useful ? Should
it use the same rate, than the element before ? Which is the centerpoint
from which the low_pass_cutoff and the high_pass_cutoff frequency will be
counted ? I tried it out, but still doesn't know how it works.

Regards Markus









reply via email to

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