Vielleicht kennt Ihr Demodulator die Baudrate bereits
Viele drahtlose Kommunikationsprotokolle setzen die symbol_time auf ein bekanntes ganzzahliges Vielfaches der Chipzeit oder der Trägerzykluszeit. Da Sie das Signal demodulieren können, muss Ihr Demodulator bereits die Chipzeit oder die Trägerzykluszeit kennen. Vielleicht können Sie diese Zeitinformationen nehmen und mit der "bekannten Ganzzahl" multiplizieren, um die symbol_time zu erhalten. dann müssen Sie "nur" die Phasenausrichtung durchführen. Gibt es eine Möglichkeit, diese Zeitinformationen aus Ihrem Demodulator zu ziehen?
FFT
Die Symbolrate entspricht ungefähr der Bandbreite. (Ich höre, dass die Bandbreite von -10 dB das 1,19-fache der Symbolrate für QPSK beträgt - gilt das für alle Signalkonstellationen?)
Wenn Sie ein ausreichend hohes SNR haben, können Sie Ihr Signal über eine FFT senden und die Bandbreite schätzen. Ich denke, das funktioniert in fast jedem Format, das Sie zur Hand haben - das rohe ("echte") modulierte Signal oder das demodulierte ("komplexe" I, Q) Basisbandsignal oder ich allein oder Q allein - aber ich nicht. Ich glaube nicht, dass es funktionieren wird, wenn Sie Phasendaten aus dem obigen "Update # 2" -Diagramm in die FFT einspeisen.
Normalerweise ist es für einen Menschen ziemlich einfach, die Bandbreite von -3 dB in einem Diagramm visuell zu ermitteln. Gibt es eine Matlab-Funktion zum Schätzen der Bandbreite von -3 dB?
Wenn reines weißes Rauschen auftritt - das SNR ist zu schlecht -, hat die "Bandbreite" von -3 dB eindeutig nichts mit einer echten Baudrate zu tun, sondern hängt vollständig von den in Ihrem Demodulator verwendeten Filtern ab.
Autokorrelation
Sie können die Autokorrelation einer Funktion mithilfe der Matlab-Funktionen autocorr () oder xcorr () ermitteln.
Es gibt mindestens drei Möglichkeiten, diese Autokorrelation in eine Schätzung der Baudrate umzuwandeln:
- Bei ungefähr unkorrelierten Datenbits ist die Autokorrelation zur Versatzzeit von genau 1 Symbolzeit oder mehr ungefähr Null, und die normalisierte Autokorrelation zu kurzen Versatzzeiten von 0,0 bis 1,0 Bitzeit ist ungefähr linear: 1- (Zeit / Symbolzeit). Passen Sie eine gerade Linie an diese kurzen Versatzzeiten an, um eine gute Schätzung der Autokorrelation zu nicht ganzzahligen Versatzzeiten zu erhalten. Suchen Sie die Versatzzeit t_half, die eine geschätzte Autokorrelation von ungefähr 1/2 entlang dieser angepassten Linie ergibt, und Ihre Symbolzeit ist ungefähr symbol_time ~ = 2 * t_half.
- Während Burst-Übertragungen machen einige Sender jedes 10. Bit zu einem Startsymbol. Ihre Autokorrelationsfunktion hat wie immer einen Peak zur Versatzzeit 0; Überspringen Sie diesen ersten Peak und suchen Sie nach der positiven Zeit t_positive, die den nächstgrößeren positiven Peak (mit einer erwarteten Amplitude von ungefähr 1/10) in der Autokorrelationsfunktion ergibt. Ihre Symbolzeit ist ungefähr symbol_time ~ = t_positive / 10.
- Einige Sender verwenden genau 9 Bit-mal nach jedem Startsymbol ein Stoppsymbol und geben dem Stoppsymbol die negative Amplitude des Startsymbols. Suchen Sie nach der Versatzzeit t_negative, die den größten negativen Peak in der Autokorrelationsfunktion ergibt (mit einer erwarteten Amplitude von ungefähr 1/10), und Ihre Symbolzeit ist ungefähr symbol_time ~ = t_negative / 9.
Autokorrelationsnäherung
Viele andere Techniken verwenden eine schneller zu berechnende Approximation der Autokorrelationsfunktion - insbesondere macht es keinen Sinn, die Autokorrelationsamplitude bei Versatzzeiten von mehr als 10 Bitzeiten zu berechnen.
Lassen Sie uns insbesondere die Autokorrelationsfunktion bei nur einem Zeitversatz H berechnen: Verzögern Sie das Signal um einige Zeit H und multiplizieren Sie das verzögerte Signal mit dem ursprünglichen (nicht verzögerten) Signal, und verwenden Sie einen perfekten oder undichten Integrator, um langfristig zu erhalten durchschnittlich. (Wenn Ihr Eingangssignal wie bei den meisten FM- und PSK-Empfängern bereits auf den Bereich +1 -1 begrenzt ist, ist dieser Langzeitdurchschnitt bereits normalisiert. Andernfalls normalisieren Sie ihn durch den Durchschnitt des Quadrats des Signals. Der Laufzeitdurchschnitt liegt garantiert im Bereich von -1 bis +1).
Passen Sie dann H an, um zu versuchen, den normalisierten Langzeitdurchschnitt auf genau 1/2 zu bringen. Verringern Sie den Zeitversatz H, wenn der normalisierte Langzeitdurchschnitt weniger als 1/2 beträgt. mache H länger, wenn der normalisierte Langzeitdurchschnitt mehr als 1/2 beträgt.
Dann ist Ihre Symbolzeit ungefähr symbol_time ~ = 2 * H.
andere Techniken
Das Wikibook "Clock and Data Recovery" klingt vielversprechend, obwohl es noch ein grober Entwurf ist. Könnten Sie es aktualisieren, um festzustellen, welcher Ansatz für Sie am besten funktioniert hat?
Mir wurde gesagt, dass viele Empfänger eine Costas-Schleife
oder eine andere relativ einfache Trägerwiederherstellungstechnik verwenden, um die Baudrate zu ermitteln.
Das Kommunikationshandbuch
erwähnt einen "Early-Late-Gate-Synchronisierer". Könnten Sie so etwas verwenden?
Einzelheiten
Viele drahtlose Kommunikationsprotokolle fügen dem Signal viele "redundante" Merkmale hinzu, um es dem Empfänger zu erleichtern, das Signal trotz Rauschen zu erfassen und zu decodieren - Startbit, Stoppbit, Gittermodulation, Fehlererkennung und Korrekturbits , konstantes Vorspiel und Header-Bits usw.
Vielleicht hat Ihr Signal eine oder mehrere dieser Funktionen, die Ihnen die Arbeit erleichtern?