Hi,
I found a nasty bug in the wfm_rcv_pll.py code.
The pilot tone pll should return the recovered carrier,
For this you should use gr.pll_refout_cc, not gr.pll_carriertracking_cc.
pll_carriertracking returns the input transformed to baseband using the
recovered carrier.
pll_refout returns the recovered carrier.
With the fixed code I now actually get stereo.
(Before you would get a kind of attenuated, distorted, spectrum inverted
stereo)
I tested it with a stereo-coder I wrote in gnuradio, and now I seem to
actually get stereo seperation.
(stereo modulater is attached)
But now I do get a lot of noise when decoding stereo.
I also don’t quite understand why double side band suppressed carrier
Left-Right audio is attenuated and needs a factor 20 for gain.
(It seems to be correct or at least close)
The code comments say 10 dB
The actual code uses a factor 20 which corresponds to 20 *log10(20)= 26
dB.
This 26 dB seems to be quite accurate, but where is this number based
on?
can you give me a link to more info or the stereo FM specs on this.
# 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,
Greetings,
Martin
fix for wrong pll is below:
— gnuradio-core/src/python/gnuradio/blksimpl/wfm_rcv_pll.py
2007-06-11 18:12:55.000000000 +0200
+++ gnuradio-core/src/python/gnuradio/blksimpl/wfm_rcv_pll_fixed.py
2007-06-17 08:07:43.000000000 +0200
@@ -131,8 +131,8 @@
max_freq = -2.0math.pi18990/audio_rate;
min_freq = -2.0math.pi19010/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);
-
self.stereo_carrier_pll_recovery =
gr.pll_refout_cc(alpha,beta,max_freq,min_freq);
-
#self.stereo_carrier_pll_recovery.squelch_enable(False)
#pll_refout does not have squelch yet, so disabled for now
# set up mixer (multiplier) to get the L-R signal at
baseband