Polyphase Clock Synchronization

Hi all guys again,

After few posts and numerous tries to set up M&M sync block, I finally
want
to give up, and before I start with some kind of ad-hoc approach I want
to
ask for help to setup polyphase Clock Synchronizator.

This block is very well documented (by the way, it looks like
description
of the block is shown twice in the property window, at least in my
computer), but since I am not that much in polyphase filtering, i have
following doubts:

  • As it is stated in documentation, there are two filterbanks, one for
    signal shaping and one for filtering signal derivative. My question is
    what
    is the meaning of TAPS property (taps of which filter?)?

  • What is filter size? (Number of paralel sections?)

  • In which way to setup alpha and beta for best performances (based on
    my
    symbol rate or whatever)?

As for reminding, I have 19.2ksps baseband signal, sampled with 100ksps.

Thank you in advance

On Fri, May 17, 2013 at 12:37 PM, Nemanja S. [email protected]
wrote:

Hi all guys again,

After few posts and numerous tries to set up M&M sync block, I finally want
to give up, and before I start with some kind of ad-hoc approach I want to
ask for help to setup polyphase Clock Synchronizator.

This block is very well documented (by the way, it looks like description of
the block is shown twice in the property window, at least in my computer),
but since I am not that much in polyphase filtering, i have following
doubts:

Good questions.

  • As it is stated in documentation, there are two filterbanks, one for
    signal shaping and one for filtering signal derivative. My question is what
    is the meaning of TAPS property (taps of which filter?)?

Taps are the taps of the prototype filter. Since the other filter is
the derivative filter, you give the block a set of taps (think of it
as the upsampled RRC filter coefficients), and the block will generate
the derivative filter by taking the derivative of the taps you provide
it.

  • What is filter size? (Number of paralel sections?)

Each filter represents a different phase. The algorithm tries to drive
the derivative to zero, which will occur when you have the correct
filter phase. So the number of taps gives you the quantization of the
phase value. Think 2pi/N. You reduce ISI and timing errors by using a
larger number of filters as the expense of complexity and memory.
Generally, 32 should be enough and the get reduced gains by going
higher (unless you have some ridiculous dynamic range).

There is some math you can do to calculate how much error you’d
introduced for N filters and samples with B bits/sample, but I don’t
know it off the top of my head (nor want to derive it this morning).

This would be a good topic to put up on the signal processing wiki page:
http://gnuradio.org/redmine/projects/gnuradio/wiki/signalprocessing

  • In which way to setup alpha and beta for best performances (based on my
    symbol rate or whatever)?

Unknown… small. Usually set beta ~= (alpha^2)/4. You’ll just have to
play with this.

The new block takes just a loop bandwidth parameter, which is usually
some small increment around the unit circle. I tend to set it at
2pi/100. See this blog for more that:

As for reminding, I have 19.2ksps baseband signal, sampled with 100ksps.

Thank you in advance


Nemanja Savić

Tom

Hi all,

thank you Tom for that fast response.
I would like to clarify some additional stuff:
I want like first to design signal shaping filter. Can you give me some
guidlines, like 1.5 of the symbol rate or similar. I am currently
playing
with the filter design tool, quite nice tool, but can’t do anything
cause I
don’t know the optimal signal shape that I need. By the way, when
designing
root raised cosine filter with filter design tool, there are two
parameters
among others: sampling frequency (which is obvious) and symbol rate in
[sps]. Since I use sampling frequency of 100k, and want to shape pulses
of
19.2k, should I use value for symbol rate of 5~6, or 19200. In first
case I
assume that symbol rate [sps] means how many samples are in one symbol,
which is 100k/19.2k, and in second case I assume sps should means
symbols
per second. In the first case I am not able to see impulse reposnse of
the
filter (time doain) and in second case I very nice sinc curve.
I suppose after managing to design correct filter I can proceed with
tuning
loop for synchronization.

Best regards and thanks
Nemanja

On Tue, May 21, 2013 at 7:05 AM, Nemanja S. [email protected]
wrote:

[sps]. Since I use sampling frequency of 100k, and want to shape pulses of
19.2k, should I use value for symbol rate of 5~6, or 19200. In first case I
assume that symbol rate [sps] means how many samples are in one symbol,
which is 100k/19.2k, and in second case I assume sps should means symbols
per second. In the first case I am not able to see impulse reposnse of the
filter (time doain) and in second case I very nice sinc curve.
I suppose after managing to design correct filter I can proceed with tuning
loop for synchronization.

Best regards and thanks
Nemanja

I think that the best way to think about it is that the clock sync
block acts like an interpolating filter. So you have to treat the taps
as such. Think about how you would create the matched filter at
baseband and at the sampling rate of the signal. Now you have to
upsample that by some number to fit it into the polyphase filterbank.
In this case, the interpolation rate is the number of filters in the
filterbank (32 by default).

You will also want to set multiply the upsampled taps by the number of
filters. Using filter.firdes.root_raised_cosine, this is the same as
setting the gain of the filter. The generated filter has the same
amount of power as the original, but that means that every arm of the
filterbank has that much less power in it, so you make up for it by
setting the gain here.

That’s the basic theory and understanding. You’ll have to work out the
details of the filter yourself for your application.

Tom