[Top][All Lists]
[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