Hi all,
I’ve been doing some stuff with the pfb clock sync for GMSK (my AIS app
again) and had a couple questions. First, a sanity check so you can tell
me
if I’m just nuts:
BT = 0.35
self.filtersections = 32
self.tapspersection = 20
self.clockrec_sps = 1
gain_mu = 0.03
self._samples_per_symbol = 250.0e3 / 9600.0
self.datafiltertaps = gr.firdes.gaussian(1,
self._samples_per_symbolself.filtersections, BT,
self.tapspersectionself.filtersections)
self.clockrec = gr.pfb_clock_sync_ccf(self._samples_per_symbol, gain_mu,
self.datafiltertaps, self.filtersections, 0, 1.15, self.clockrec_sps)
Am I constructing the filter correctly? If not, don’t bother reading
further, just tell me I’m a rube and move on. =)
If not, increasing the output samples per symbol (self.clockrec_sps
above)
to 2 seems to cause the clock recovery to go off into the weeds. Any
reason
for this? Does the filter construction need to change when using
multiple
osps?
–n
On Mon, Feb 13, 2012 at 9:39 PM, Nick F. [email protected] wrote:
gain_mu = 0.03
If not, increasing the output samples per symbol (self.clockrec_sps above)
to 2 seems to cause the clock recovery to go off into the weeds. Any reason
for this? Does the filter construction need to change when using multiple
osps?
–n
Hi Nick,
I actually tried using this block for GMSK when we transitioned to 3.5
but
ended up using it incorrectly and had to revert back to the old way. I
think I might now see what I did wrong, and I think it’s in the naming
of
the second input to the firdes.gaussian design function. It’s called
“spb,”
but it really looks like it’s supposed to take the inverse number of
samples/baud.
There is a program called gr_filter_design.py that is installed into
$prefix/bin that you can use to see what a filter looks like when you
design it. You can plug your numbers in there and see what the freq and
time domain plots will look like. What you want is a massively
oversampled
filter in the frequency domain, so something with a small passband and
lots
of stopband rippling. In the time domain, this looks like a single cycle
of
a Guassian pulse (which is good, since the derivative will have a
minimum
right at the peak – exactly what we want).
So see if the numbers you want to use make a filter that looks
reasonable
in this program, first. But otherwise, the basic approach you have above
seems correct.
Tom