Ich habe einen einfachen BPSK-Demodulator. Ganz einfach, das Signal kommt herein und wird in zwei Zweige aufgeteilt, einen für I und einen für Q.
- Der I-Zweig wird mit einer Sinuswelle des Trägers gemischt, und der Q-Zweig wird mit der Kosinuswelle des Trägers gemischt.
- Dann wird jeder der Ausgänge mit einem angepassten Filter gefaltet (in diesem Fall einem Root-Raised-Cosine, der meine übertragenen Bits anfänglich pulsförmig formte).
- Wenn ich nun beide Ausgänge kombiniere und die Größe beider (I ^ 2 + Q ^ 2) nehme, erhalte ich die Hüllkurve.
- Von hier aus suche ich nach Spitzen und wähle deren Angaben.
- Ich verwende dann dieselben Angaben, die ich aus (4) erhalten habe, und probiere mein I und Q an denselben Angaben aus. Jetzt habe ich komplexe Softbit-Werte und kann alle Phasen- oder Frequenzversätze korrigieren und von dort aus schwierige Entscheidungen treffen. (Ich habe übrigens den Luxus der Nachbearbeitung).
Diese Technik funktionierte gut mit hohem bis mittlerem SNR. Das Problem ist, dass ich mit einem niedrigeren SNR (und möglicherweise einem Mehrweg) nicht weiß, wie man eine Kugel ausführt (4). Das Problem ist, dass ich anstelle eines Peaks in den Hüllkurven, der einem Bit entspricht, jetzt mehrere Peaks habe und "Peak Picking" nicht funktioniert, weil so viele zur Auswahl stehen ... wie wird dieses Problem gemildert? Dies scheint ein Engpass zu sein, denn wenn ich nicht sagen kann, wo mein "Bit" ist, kann ich nicht vorwärts gehen. Irgendwelche Gedanken?
Jede Hilfe wird geschätzt, Mathe ist gut, obwohl ich die Antworten im Voraus eher auf Pesudo-Code / Konzept ausrichten würde. Vielen Dank!
Bearbeiten: Dank des Feedbacks von Dilip sollte ich auch hinzufügen, dass ich "Energie" in der Hüllkurve deutlich sehen kann, wenn ein Signal vorhanden ist und kein Signal vorhanden ist. (dh bevor mein Signal eintraf), so dass ich glaube, dass ich in der Lage sein sollte zu synchronisieren / zu demodieren und dass es sich nicht nur um ein SNR-Problem handelt ...
Antworten:
Ich habe in MATLAB etwas Ähnliches gemacht. In meiner Sache habe ich eine Early / Late Gate- Taktwiederherstellungsmethode verwendet, um eine Schätzung des Versatzes zwischen Sende- und Empfangssymbol-Timing zu erhalten. Diese Methode verwendet 3 Samples pro Symbol - eines zum optimalen Sample-Zeitpunkt, eines mit 1 Sample verzögert und eines mit einem Sample Advanced. Dies funktioniert gut für Ein / Aus-Tastensignale, da es keinen negativen Teil des Signals gibt, aber die folgenden Methoden funktionieren meiner Meinung nach besser für bipolare Signale.
Der M & M-Detektor betrachtet die Peaks , während die Gardner- Methode den Peak und den Nulldurchgang betrachtet , um Zeitschätzungen zu erhalten.
In allen Fällen nehmen Sie die Fehlerschätzung in einen Schleifenfilter, dessen Ausgabe dann verwendet wird, um die Symboluhr für die nächste Zeitschätzung vor- oder zurückzuschieben . Der Schleifenfilter kann entweder als Tiefpassfilter, als Glättungsfilter oder einfach als Gewichtung älterer Schätzungen betrachtet werden, die weniger als neuere sind. Das Schleifenfilter steuert a) wie schnell das Timing konvergiert und b) wie viel Rauschen die Schätzungen beeinflusst.
Eine andere Möglichkeit besteht darin, einen Equalizer zu verwenden, der dann die Zeitverzögerung aus dem Signal entfernt. Dies kann auch bei sehr verrauschten Signalen helfen, glaube ich.
Ich habe diese Ressourcen verwendet, um diese Antwort zu erstellen : http://www.comlab.hut.fi/opetus/333/2004_2005_slides/CarrierTimingRecovery.pdf http://mobiledevdesign.com/tutorials/radio_matched_filtering_timing/
Dieser Artikel ist besonders hilfreich: http://rfdesign.com/images/archive/0901Litwin32.pdf Hier ist ein Link zu Gardners Originalarbeit von 1986: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber= 1096561 & tag = 1
Hinweis Im Allgemeinen wird dieser Bereich als "Clock and Data Recovery" oder "CDR" bezeichnet. Insbesondere haben wir es mit "Symbolsynchronisation" zu tun. Diese Begriffe sollen Ihnen bei Ihrer Suche helfen.
quelle