discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Polyphase Clock Synchronization


From: Tom Rondeau
Subject: Re: [Discuss-gnuradio] Polyphase Clock Synchronization
Date: Fri, 24 May 2013 11:25:15 -0400

On Tue, May 21, 2013 at 7:05 AM, Nemanja Savic <address@hidden> wrote:
> 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

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



> On Sun, May 19, 2013 at 12:19 PM, Tom Rondeau <address@hidden> wrote:
>>
>> On Fri, May 17, 2013 at 12:37 PM, Nemanja Savic <address@hidden>
>> 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:
>>
>> http://www.trondeau.com/blog/2011/8/13/control-loop-gain-values.html
>>
>> > As for reminding, I have 19.2ksps baseband signal, sampled with 100ksps.
>> >
>> > Thank you in advance
>> >
>> > --
>> > Nemanja Savić
>>
>> Tom
>
>
>
>
> --
> Nemanja Savić



reply via email to

[Prev in Thread] Current Thread [Next in Thread]