On Nov 23, 8:34�am, "mir_aculous" <gnu.fanz@n_o_s_p_a_m.gmail.com>
wrote:
> Hi,
> I am currently reading fred harris' papers mentioned below to implement a
> timing synchronization in my software DSSS receiver.
>
> A. Loop Control Architectures for Symbol Timing Synchronization in Sampled
> Data Receivers
> B. Polyphase Fitlerbanks for Symbol Timing Synchronization in Sampled Data
> Receivers
>
> Although, I get the big picture behind the idea of implementing timing
> synchronization using this method but if I were told to implement such a
> filter 'today' I will just stop at implementing the polyphase matched and
> the differential filter and then go blank.
>
> In particular I have these unanswered questions,
>
> 1. If I have 2 samples per symbol then how do I bring the output rate down
> to 1 sample per symbol? What is the decision making process here? According
> to harris' publication mentioned in A, N input samples are processed by the
> polyphase matched filter to produce N matched filter outputs during each
> symbol period(which is obvious)and these N outputs are used by the timing
> error detector to update the timing error once per symbol. This updated
> timing error that occurs once per symbol updates the control register that
> in turn chooses the right polyphase filter stage's output as the corrected
> symbol.
>
> I don't understand how the timing error detector and the control works.
>
> Can someone please explain this to me or even better can I find a
> simulation of polyphase filterbank symbol timing synchronization anywhere?
>
> Thanks
Since you haven't gotten an answer from more knowledgeable people,
here is a rough answer from me that may point you in the right
direction. I'm writing this in the context of ordinary binary coding
transmitted over a bandlimited channel - which is what I'm familiar
with.
Regarding error detector and control - assume you have a signal at
i.e. exactly 1.9 samples per symbol, you want the polyphase filter to
interpolate that to 2 samples per symbol. So you design an ordinary
polyphase resampling filter to do exactly that, advancing the phase as
appropriate for the 1.9 to 2 resampling. At this point, you have no
guarantees about where your output samples will end up, so it's
difficult to slice the data and get bits out. You ideally want one
sample at the center of the symbol, and the other sample at the symbol
transition (more or less).
This is where the error detector comes in. At the output of the filter
(lets say y[n]), for every other sample (because only 1 in 2 samples
will be on the transition), look at y[n-1], y[n], y[n+1]. From that,
you can estimate if you are looking at a transition between symbols
(for example if y[n-1] and y[n+1] have opposite polarity, your
sequence is [-1, 0, +1]). If you detect a transition, then you can
estimate if you have sampled at exactly the transition (y[n] == 0), or
are advanced or delayed in your sampling (y[n] is -0.1 or 0.1 in this
example). (This all assumes you have already normalized your data to a
known amplitude with some sort of AGC). Naturally, this is easier if
you can guarantee some minimum number of transitions, like manchester
encoding. Your timing error detector is thus a function of your
polyphase output samples, there are a bunch of variants for various
data types and modulations but a common and easy to understand one is
the Gardner timing error detector. See bottom of this page for a good
picture:
http://wiki.hsc.com/wiki/Main/SymbolTimingSynchronization
The gardner detector for 2 sample/symbols is: error = y[n]*(y[n+1]-
y[n-1]). You can thus get an estimate of how advanced or delayed you
are based on the symbol data. This error signal can then become
feedback into your polyphase filter, so your next phase calculation
becomes: normal 1.9:2 advance + error*error_gain. This way the
polyphase filter becomes a feedback control system that locks to the
data transitions. There is something to be said here for taking note
of the usual control system stuff about stability and time constants.
Note that not only does this lock in phase, but it will also
compensate for small frequency offsets, i.e. if your data was actually
1.89 samples per symbol, instead of 1.9.
Now assuming your system has locked, to resample to 1 sample per
symbol, it's enough to simply take every other sample opposite to the
sample you are using for the error detector. Since the polyphase
output sample that goes to the error detector is ideally at the
transition, the next sample must be at the center of the symbol. Take
that data and slice it as you see fit.
I hope that gets you on the right path.
Chris
Reply by mir_aculous●November 23, 20102010-11-23
Hi,
I am currently reading fred harris' papers mentioned below to implement a
timing synchronization in my software DSSS receiver.
A. Loop Control Architectures for Symbol Timing Synchronization in Sampled
Data Receivers
B. Polyphase Fitlerbanks for Symbol Timing Synchronization in Sampled Data
Receivers
Although, I get the big picture behind the idea of implementing timing
synchronization using this method but if I were told to implement such a
filter 'today' I will just stop at implementing the polyphase matched and
the differential filter and then go blank.
In particular I have these unanswered questions,
1. If I have 2 samples per symbol then how do I bring the output rate down
to 1 sample per symbol? What is the decision making process here? According
to harris' publication mentioned in A, N input samples are processed by the
polyphase matched filter to produce N matched filter outputs during each
symbol period(which is obvious)and these N outputs are used by the timing
error detector to update the timing error once per symbol. This updated
timing error that occurs once per symbol updates the control register that
in turn chooses the right polyphase filter stage's output as the corrected
symbol.
I don't understand how the timing error detector and the control works.
Can someone please explain this to me or even better can I find a
simulation of polyphase filterbank symbol timing synchronization anywhere?
Thanks