[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Discuss-gnuradio] wfm_pll decimation factors possibly wrong?
From: |
Martin Dvh |
Subject: |
[Discuss-gnuradio] wfm_pll decimation factors possibly wrong? |
Date: |
Wed, 13 Jun 2007 17:53:43 +0200 |
User-agent: |
Debian Thunderbird 1.0.2 (X11/20070113) |
Hi all,
I am working with the wfm_pll code for the usrp_wfm_rcv_pll example.
What I don't get is how it can work with the current decimation factors.
The usrp_decim=200 and the audio_decim=10
This results in all blocks outputting at 32 kS/s
Which results in -16, +16 Khz bandwith/niquist freqs.
But how can the stereo_carrier_recovery work.
It used the output of
self.stereo_carrier_filter = gr.fir_filter_fcc(audio_decimation,
stereo_carrier_filter_coeffs)
Which is a signal with a samplerate of 32 kS/s
The 19 kHz pilot_tone and the 38 kHz recovered carrier are outside the niquist
freq.(-16, +16 Khz)
I would expect that the audio_decimation should be much lower then 10 for this
to work
See code snippets below,
Greetings,
Martin
in usrp_wfm_rcv_pll.py:
adc_rate = self.u.adc_rate() # 64 MS/s
usrp_decim = 200
self.u.set_decim_rate(usrp_decim)
usrp_rate = adc_rate / usrp_decim # 320 kS/s
chanfilt_decim = 1
demod_rate = usrp_rate / chanfilt_decim
audio_decimation = 10
audio_rate = demod_rate / audio_decimation # 32 kHz
in blksimpl/wfm_pll.py:
audio_rate = demod_rate / audio_decimation
self.stereo_carrier_filter = gr.fir_filter_fcc(audio_decimation,
stereo_carrier_filter_coeffs)
self.rds_signal_filter = gr.fir_filter_fcc(audio_decimation,
stereo_rds_filter_coeffs)
self.stereo_dsbsc_filter = gr.fir_filter_fcc(audio_decimation,
stereo_dsbsc_filter_coeffs)
more snippets from blksimpl/wfm_pll.py:
# Pick off the stereo carrier/2 with this filter. It attenuated 10
dB so apply 10 dB gain
# We pick off the negative frequency half because we want to base
band by it!
## NOTE THIS WAS HACKED TO OFFSET INSERTION LOSS DUE TO DEEMPHASIS
stereo_carrier_filter_coeffs = gr.firdes.complex_band_pass(10.0,
demod_rate,
-19020,
-18980,
width_of_transition_band,
gr.firdes.WIN_HAMMING)
#print "len stereo carrier filter =
",len(stereo_carrier_filter_coeffs)
#print "stereo carrier filter ", stereo_carrier_filter_coeffs
#print "width of transition band = ",width_of_transition_band, "
audio rate = ", audio_rate
# Pick off the double side band suppressed carrier Left-Right
audio. It is attenuated 10 dB so apply 10 dB gain
stereo_dsbsc_filter_coeffs = gr.firdes.complex_band_pass(20.0,
demod_rate,
38000-15000/2,
38000+15000/2,
width_of_transition_band,
gr.firdes.WIN_HAMMING)
#print "len stereo dsbsc filter = ",len(stereo_dsbsc_filter_coeffs)
#print "stereo dsbsc filter ", stereo_dsbsc_filter_coeffs
# construct overlap add filter system from coefficients for stereo
carrier
self.stereo_carrier_filter = gr.fir_filter_fcc(audio_decimation,
stereo_carrier_filter_coeffs)
self.rds_carrier_generator = gr.multiply_cc();
self.rds_signal_generator = gr.multiply_cc();
self_rds_signal_processor = gr.null_sink(gr.sizeof_gr_complex);
alpha = 5 * 0.25 * math.pi / (audio_rate)
beta = alpha * alpha / 4.0
max_freq = -2.0*math.pi*18990/audio_rate;
min_freq = -2.0*math.pi*19010/audio_rate;
self.stereo_carrier_pll_recovery =
gr.pll_carriertracking_cc(alpha,beta,max_freq,min_freq);
self.stereo_carrier_pll_recovery.squelch_enable(False);
# set up mixer (multiplier) to get the L-R signal at baseband
self.stereo_basebander = gr.multiply_cc();
# pick off the real component of the basebanded L-R signal. The
imaginary SHOULD be zero
self.LmR_real = gr.complex_to_real();
self.Make_Left = gr.add_ff();
self.Make_Right = gr.sub_ff();
self.stereo_dsbsc_filter = gr.fir_filter_fcc(audio_decimation,
stereo_dsbsc_filter_coeffs)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Discuss-gnuradio] wfm_pll decimation factors possibly wrong?,
Martin Dvh <=