> Meinst du damit eine PLL?
Ja in etwa, aber in SW. Der NCO ist einfach eine Tabelle mit
sin/cos-Werten einmal im Kreis rum (Betrag 1). Die Tabelleneinträge
werden mit einer bestimmten Geschwindigkeit durchlaufen, der Ausgang
(auch IQ) wird komplex mit dem IQ-Basisbandsignal multipliziert.
Effektiv gibt das eine Rotation.
Der Versatz Sendeträger-Empfangsträger (also die Inkohärenz) ist ja auch
nur eine Rotation. Wenn der Versatz 1Hz ist, rotiert ein konstanter
IQ-Wert beim Empfänger einmal in der Sekunde um 360 Grad herum. Mit
einer Gegenrotation mit 1Hz ist dann wieder alles kohärent.
Es gibt da nur zwei Probleme beim Finden der Gegenrotation: Das eine ist
die Bestimmung des Frequenzversatzes ("Stehenbleiben" der Punkte). Das
macht zB. bei *PSK die zB. Costas-Loop, wenn sie weiss, wo die
Konstellationspunkte liegen. Die Abweichungen nach links oder rechts
fliessen in einen PI-Regler ein, der die NCO-Geschwindigkeit
(=Tabellensteps/Sample) so nachjustiert, dass die mittleren Abweichungen
0 sind. Je verrauschter das Signal ist, um so schwieriger wird das
natürlich...
Dummerweise klatscht das aber alle Konstellationspunkte auf einen, damit
rastet die Loop auf irgendeinen der Punkte als Null-Referenz-Phase ein.
Das muss man dann noch irgendwie auflösen. Entweder ganz langweilig
ignorieren via differentielle Kodierung (D-*PSK) oder mit
Referenzsymbolen.
Achja, ein dritten Problem gibts mit diskreten Samples auch noch: Die
Samplegeschwindigkeit des ADCs beim Empfänger muss eigentlich einem
exakten Vielfachen der Symbolrate entsprechen und noch dazu in die Mitte
des Symbols "treffen". Sonst bekommt man ja nie die Maxima der Signale.
Ein Versatz hier führt zu einem Pulsieren in der Amplitude. Dagegen
gibts dann die Timing-Recovery-Stufe, die ein Resampling vornimmt. Dazu
gibts es auch diverse Algorithmen (Müller&Mueller, early-late, etc.).
Dummerweise beeinflussen sich Carrier und Timing-Recovery gegenseitig ;)
Wenn man bei Sender und Empfänger Symbol/Sampletakt und Sendefrequenz
vom selben Oszillator ableitet (zB. wie bei OFDM-WLAN vorgeschrieben)
wirds etwas einfacher... Geht aber nicht immer.