Wie führe ich eine Wiederherstellung der Trägerphase in Software durch?

13

Welche Möglichkeiten gibt es, um die Phase eines BPSK-Signals in der Software wiederherzustellen? Die einzigen Ressourcen, die ich online finden kann, enthalten Schaltpläne - es scheint niemanden zu geben, der bereit ist, dies Personen zu erklären, die mit analogen Schaltungen nicht vertraut sind.

Ich hätte gerne eine Erklärung, wie die Wiederherstellung von Netzbetreibern theoretisch funktioniert, und würde auch gerne Pseudocode- oder Codebeispiele verwenden.

Keith
quelle
Wir bieten normalerweise keine Codebeispiele an - insbesondere für etwas, das so kompliziert ist wie ein BPSK-Demodulator.
Jim Clay
1
Wie JimClay angedeutet hat, haben Sie wahrscheinlich nicht genug Zeit, um den vollständigen Quellcode für die Implementierung eines Demodulators bereitzustellen. Die Mechanismen zum Erstellen einer Implementierung sollten jedoch einfach sein, wenn Sie die Konzepte verstehen. Im Allgemeinen wird ein Softwareempfänger eine ähnliche Struktur wie die entsprechende Hardwaretechnik haben (z. B. ein auf Vorwärtskopplung basierender nichtlinearer Synchronisierer oder ein PLL-basierter Rückkopplungsansatz). Hatten Sie eine bestimmte Topologie, auf die Sie abzielen wollten?
Jason R
Vielen Dank für Ihre Kommentare @JimClay und JasonR - Ich wollte nicht nach funktionierendem Quellcode fragen. Ich habe die Frage genauer aktualisiert: Ich suche nur nach einer Erklärung, die kein Verständnis für analoge Schaltungen und Schaltpläne voraussetzt.
Keith

Antworten:

25

Um ein Signal mit Phasenumtastung zu demodulieren, von denen BPSK das einfachste ist, müssen Sie die Trägerfrequenz, die Phase und das Symbol-Timing wiederherstellen.

Bursty-Signale Einige Signale sind Bursts und liefern eine bekannte Datensequenz, die als Präambel oder Mid-Amble bezeichnet wird (je nachdem, ob sie zu Beginn oder in der Mitte des Bursts angezeigt wird). Demodulatoren können ein abgestimmtes Filter verwenden, das nach der bekannten Datensequenz "sucht" und damit Frequenz, Phase und Symboltakt des Bursts ermittelt. Sie tun dies für jeden Burst und müssen sich nicht mit "Drift" (der allmählichen Entfernung, die sich zwischen dem Demodulator und dem empfangenen Signal aufbaut, wenn sich kleine Fehler ansammeln) befassen, da die Bursts im Allgemeinen kurz genug sind, dass die Drift nicht a ist Problem.

Kontinuierliche Signale Dann gibt es kontinuierliche Signale. Sie sind in vielerlei Hinsicht schwieriger wiederherzustellen als Burstsignale, da Sie normalerweise keine bekannte Datensequenz haben, um das Einrasten des Signals zu unterstützen, und Sie müssen sich auch nach dem Einrasten des Signals über Drift Gedanken machen. Ich werde versuchen, die wichtigsten Schritte zur Wiederherstellung kontinuierlicher Signale auf hoher Ebene zu beschreiben.

Trägerwiederherstellung

In der Regel wissen Sie, auf welcher Frequenz sich das gesuchte Signal befindet oder auf welcher Frequenz es sich befinden könnte. Trotz dieser Kenntnisse müssen Sie in der Regel in der Lage sein, den Frequenzversatz zu korrigieren, da keine zwei Sender auf der gleichen Frequenz senden. Es gibt immer einen Fehler. Die übliche Methode besteht darin, die Frequenz zu mischen, bei der Sie glauben, dass das Signal an sein wird, und dann den Restfrequenzfehler zu korrigieren. Dies kann mit einer Costas-Schleife erfolgenoder indem die vierte Potenz der Basisbandsignaldaten genommen und nach einer Frequenzspitze gesucht wird. Am Trägerversatz * 4 sollte eine Frequenzspitze auftreten (z. B. wenn Sie eine FFT der Daten in die 4. Potenz bringen und eine Frequenzspitze bei 8300 Hz feststellen, bedeutet dies, dass der Trägerversatz 8300/4 = 2075 Hz beträgt). Dies ist ein sehr wirksames Mittel, um eine anfängliche Sperre für den Frequenzversatz zu erhalten. Sie können es auch verwenden, um Drift zu kompensieren, wenn Sie es gelegentlich wiederholen. Es gibt eine andere Möglichkeit, die Drift zu kompensieren, auf die ich später noch eingehen werde.

Trägerphase

Wenn Sie Ihre komplexen Daten in der komplexen Ebene zeichnen (x-Achse ist real, y-Achse ist imaginär), sollte dies wie folgt aussehen:

Gedrehte BPSK

Wenn Sie genau hinsehen, sehen Sie zwei dichte Bereiche in Richtung der Enden der verschwommenen Linie. Das sind die BPSK-Konstellationspunkte. Die Punkte dazwischen sind die Übergänge zwischen den Konstellationspunkten. Diese werden aufklären, sobald wir das Symbol Timing erhalten. Der Grund, warum sich die Linie in einem Winkel befindet, liegt in der Trägerphase. Dies kann gemessen werden, indem das Signal gespiegelt wird, indem alle Punkte mit negativen reellen Werten mit multipliziert werdenejπ

Gedrehte und gespiegelte BPSK

ej-ω

Lautes BPSK

Sobald die Daten phasenkorrigiert sind, können Sie den Imaginärteil der Daten löschen, da keine Informationen hinzugefügt werden.

Symbol-Timing

Normalerweise sollten Sie a priori die Symbolperiode des Signals kennen, das Sie demodulieren möchten. Wenn Sie jedoch die Symbolperiode / -frequenz bestimmen müssen, können Sie dies auf ähnliche Weise tun, wie der Trägerversatz erfasst wurde. Sie können die Daten quadrieren, die eine Frequenzspitze mit der doppelten Symbolfrequenz verursachen.

Wie beim Träger müssen Sie die Phase (das Timing) richtig einstellen und dann die Drift ausgleichen. Die übliche Methode für beide Probleme besteht darin, nach den Nulldurchgängen zu suchen. Sofern das Rauschen nicht sehr schlecht ist, sollte es nur den Nullpunkt in der Mitte eines Symbolübergangs von -1 nach 1 oder von 1 nach -1 überschreiten. Selbst wenn Rauschen dies mitten in einem Symbol verursacht, kommt es nicht sehr oft vor.

Augendiagramm

Das obige Bild wird üblicherweise als "Augendiagramm" oder "Augenmuster" bezeichnet. Es ist zwei Symbolperioden breit und hat viele Symbole, die übereinander "gestapelt" sind. Ich weiß nicht, ob Sie mit Oszilloskopen vertraut sind oder nicht, aber Sie können ein Oszilloskop so ein Bild anzeigen lassen. Jedenfalls sind die beiden "X" Symbolübergänge. Die hohen zu niedrigen Linien in den X sind, wenn das Symbol von einer 1 zu einer -1 übergeht, und die niedrigen zu hohen Linien in den X sind, wenn das Symbol von einer -1 zu einer 1 übergeht Die rosafarbene Linie ist der optimale Ort, um die Daten abzutasten und festzustellen, ob das Symbol eine 1 oder -1 ist.

Dieselbe Technik kann verwendet werden, um die Symbol-Timing-Drift zu behandeln. Nehmen Sie einen laufenden Durchschnitt der Entfernung vom vorherigen Nulldurchgang und vom folgenden Nulldurchgang. Wenn die beiden Mittelwerte ungefähr gleich sind, ist alles in Ordnung. Wenn einer größer als der andere ist, müssen Sie sich dorthin verschieben, wo Sie Ihre Probe greifen.

Sobald Sie die Symbole an den richtigen Punkten abgetastet haben, sollten Ihre Datenpunkte etwas erhalten, das den klassischen BPSK-Konstellationspunkten ähnelt.

Laute BPSK-Konstellation

Ich hoffe das hilft.

Jim Clay
quelle
Um diesen wundervollen Beitrag zu verbessern, könnten Sie vielleicht einen Abschnitt zur Wiederherstellung der Uhr vor dem Symbol-Timing einfügen.
LWZ
Ich glaube, ich weiß vielleicht, was Sie vorhaben, aber ich bin mir nicht sicher. Was genau hast du gedacht?
Jim Clay
Vielen Dank! Ich hatte nicht daran gedacht, nach Nulldurchgängen zu suchen oder das Real / Imaginäre auf diese Weise auf x / y zu zeichnen. Ich habe nur auf die Phasengrafiken gestarrt und mich gefragt, wie ich alles synchronisieren kann. Danke noch einmal!
Keith
@JimClay, Zu Beginn des Symbol - Timing - Abschnitts erwähnt, dass „Sie normalerweise die Symbolperiode des Signals wissen sollten Sie zu demodulieren versuchen.“, Und dies in der Regel durch eine Taktrückgewinnungseinheit erreicht wird, weil normalerweise Sie ‚gewonnen t Senden Sie eine Uhr mit Ihren Daten. Bei BPSK-Signalen ist dies einfach. Sie können Ihr Signal einfach quadrieren, wodurch die Daten entfernt werden. Wenn Sie sich dann das Leistungsspektrum ansehen, sollte es eine Spitzenfrequenz geben, die als Takt bezeichnet wird und die Ihnen die Symbolperiode gibt.
LWZ
Es wurde ein Absatz zur Symbolhäufigkeit hinzugefügt.
Jim Clay