Ich arbeite an einem 802.11a-Demod, der größtenteils funktioniert, aber einen Fehler aufweist, der zeitweise Fehler verursacht. Ich habe die Charakterisierung noch nicht abgeschlossen, aber es scheint, dass das Problem in meinem Equalizer-Block liegt.
802.11a ist ein OFDM-Signal, und jedes OFDM-Symbol verfügt über 64 Unterkanäle. Vier dieser Unterkanäle sind Piloten (bekannte Daten) auf den Unterkanälen 7, 21, -7 und -21. Ich benutze die Piloten, um den verbleibenden Trägerversatz (wird in den Piloten als konstanter Phasenversatz angezeigt) und den Zeitversatz (wird als Liner-Versatz angezeigt) zu korrigieren, dh der Phasenversatz ist bei Bin 0 0 und wächst, wenn er weiter entfernt ist bin 0).
Ich mache eine einfache Mittelung, um die Trägerversatzphase zu erfassen, und einige einfache Manipulationen vor der Mittelung, um den Zeitphasenversatz zu erfassen (z. B. Kanal -21 mit -1 multiplizieren, Kanal -7 mit -3 multiplizieren und Kanal 7 mit 3 multiplizieren). Ich lasse absichtlich einige nicht benötigte Details weg, aber hoffentlich gibt dies den Kern meiner Arbeit wieder.
Mein Problem ist, dass die kreisförmige Natur von Winkeln dazu führen kann, dass sich die Mittelwertbildung für bestimmte Werte katastrophal schlecht verhält. Stellen Sie sich zum Beispiel eine Mittelwertbildung vor und . Es ist leicht grafisch zu erkennen, dass die Antwort entweder oder , aber die Standardmittelungsformel gibt die Antwort 0, buchstäblich das Gegenteil der richtigen Antwort.
Was ist der richtige Weg, um Winkel zu mitteln?
EDIT: Ich werde versuchen, das, was ich tue, etwas klarer zu machen. Es gibt zwei "Fehlerbedingungen", die sich am Ausgang der FFT unterschiedlich manifestieren. Erstens ist der Trägerversatz, der sich als konstanter Phasenversatz manifestiert.
In diesem Fall ist es eine gute Idee, die kartesischen Pilotwerte anstelle des Winkels zu mitteln, wie John vorgeschlagen hat. Vielen Dank.
Die zweite Fehlerbedingung ist der Zeitversatz, der sich als linearer Phasenversatz manifestiert. Je größer der Zeitversatz ist, desto größer ist die Steigung des Phasenversatzes. Die Steigung kann auch negativ sein, je nachdem, ob sich der Empfänger vor oder hinter dem Empfänger befindet.
Da es nun streng linear ist (der Ursprung geht durch Null), könnte ich theoretisch die Steigung von nur einem Piloten berechnen. Ich würde zuerst den Phasenversatz des Trägerversatzes berechnen (dh Fehlerbedingung Nr. 1), diesen herausziehen und dann eine der vier verwenden, um die Steigung zu berechnen. Das würde eine Mittelwertbildung insgesamt vermeiden. Das Problem ist, dass durch Rauschen diese Werte herumspringen können. Daher ist meine Schätzung viel besser, wenn ich alle vier Werte verwende - also die Mittelung.
Hoffentlich macht das obige Bild deutlich, dass ich die Pilotwerte nicht einfach so nehmen und mitteln kann, wie sie sind. Ich muss sie modifizieren, um sie zu einem konstanten + Rauschen zu machen. Dazu multipliziere ich den Winkel des -21-Piloten mit -1, des -7-Piloten mit -3, des 7-Piloten mit 3 und des 21-Piloten mit 1. Sie entsprechen somit dem 21-Piloten und können gemittelt werden.
Ich kenne keinen guten Weg, um den Winkel eines Vektors mit einer Konstanten wie "3" im kartesischen System zu multiplizieren, daher scheint es mir, als müsste ich in Polarkoordinaten konvertieren, die Winkel mit -1 multiplizieren. -3, 3 und 1 konvertieren zurück in kartesische Koordinaten, mitteln die Piloten und konvertieren dann zurück in polar, um den Phasenversatz zu erhalten. Während dies machbar ist, würde ich gerne eine weniger klunkige Lösung finden, wenn möglich.