Reply by Chris Maryan November 26, 20102010-11-26
On Nov 23, 8:34&#4294967295;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