Paketsynchronisation im Subsample Bereich

Hallo,

ich habe gerade eine eher DSP-lastige Frage. Ich will ein Paket detektieren und habe dem entsprechend eine Preamble mit guter Autokorrelationseigenschaft vorrangestellt. Anschliessend mache ich die Korrelation und suche den Peak. Nun will ich - vor allem wegen der Rechenleistung - idealerweise mit einer Samplerate von zwei Sampeln/Symbol auskommen. Daher moechte ich mit der Preamble auch den Sampleversatz und ggf. sogar einen Frequenzoffset de- tektieren um ihn anschliessend zu korrigieren. Wie stellt man das praxistauglich an? Ich will nicht auf eine sehr hohe Samplerate upsampeln um den Versatz der Samples zueinander zu bestimmen. Gibt es dafuer einen erprobten systematischen Ansatz?

Danke, Martin L.

Reply to
Martin Laabs
Loading thread data ...

Bin kein reiner Nachrichtentechniker aber ich hatte was aehnliches mal gemacht um eine Batterie von AD-Convertern zu synchronisieren. Wir haben ein Matched Filter davor gesetzt (also vor den "Sampler") und dann in der Software den Unterschied und damit die "Schieflage" von AD Ergebnissen aufeinanderfolgender Abtastwerte erfasst. Diese gab uns den Phasenversatz. Die Software war auch in der Lage die Ableitung dieses Versatzes zu erfassen, also einen Anstieg oder Abfall im Unterschied aufeinanderfolgender Werte. Letzteres brauchten wir am Ende nicht, aber der Kunde fand das fuer andere Zwecke ganz cool und liess die Routine drin.

Bei nur zwei Samples pro Symbol hat man natuerlich ein Problem wenn das "genau auf der Kippe", also bei 180 Grad steht. Da weiss man nicht welche Phase vor- und welche nacheilt, bis sich eine bewegt.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Fürs Timing gibts was, hab' ich vor 6 Jahren in meiner Studienarbeit benutzt:

% tau=avnest_universal(x,w) % % Timing error estimator using an "absolute value nonlinearity" (AVN). % % x is the receive signal, w times oversampled. % % This function will distort x nonlinearly to generate a spectral line at % the symbol rate T_sym = w*T_samp. The phase of this spectral line % directly tells the timing error. So the DFT at Omega=2 pi / w is % calculated and its angle is normalized to 2 pi. % % So tau is the relative timing error normalized to the symbol interval % T_sym. % % function tau=avnest_universal(x,w);

k=[0:length(w)-1];

tau=1/(2*pi)*angle( sum( abs(x).*exp(-j*2*pi/w*k) ));

% tau -0.5 ... 0.5

Wenn ich lange genug suche, finde ich auch das Paper mit dem Vergleich der verschiedenen Nichtlinearitäten wieder.

Gruß Henning

Reply to
Henning Paul

Klar, den hast Du eigentlich schon mit der Korrelation mit dem Referenzsignal. Wenn Du eine breitbandige und hinreichend lange Preamble hast, bekommst Du für jede Frequenzkomponenten eine Phaseninformation. Wenn du die lineare Phase per Regression anpasst, kannst Du extrem genau den Zeitversatz des Signals extrahieren. Ich habe also nicht die Kreuzkorrelation genutzt, sondern die Übertragungsfunktion berechnet. Mit dem Verfahren habe ich mit einer 48kHz Soundkarte schon bis auf einige Nanosekunden genau gemessen. Und die ganzen Rechnungen liefen auch bei 48kHz in Echtzeit. Entscheidend für den Trick ist, dass man ein in einem hinreichend breiten Frequenzbereich wirklich konstante Gruppenlaufzeit hat. Sonst ergibt das alles ja sowieso keinen Sinn. Wenn ich mal Muße habe, mach ich damit mal ein Kabellängenmeßgerät.

Marcel

Reply to
Marcel Müller

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.