GnuRadio CC Decoder oder Verwendung des FEC Extended Decoder
Ich versuche derzeit, ein Satellitensignal wiederherzustellen, das gemäß den CCSDS-Standards codiert ist. Dies beinhaltet einen Faltungscode mit der Rate 1/2 und der Beschränkungslänge 7.
Ich empfange das Signal über einen SDR, der über Koaxialkabel und eine dazwischen liegende Dämpfung direkt mit dem Sender verbunden ist. Zu Testzwecken sende ich abwechselnd 0 und 1. Für die Demodulation und Dekodierung verwende ich derzeit das diesem Beitrag beigefügte Diagramm.
Bis zum Faltungsdecoder scheint alles ohne Probleme zu funktionieren. Wenn ich den Code sowohl auf dem Sender als auch auf dem Empfänger deaktiviere, kann ich die Daten problemlos dekodieren. Wenn der Faltungscode aktiv ist, kann der Decoder die Daten manchmal richtig decodieren, aber die meiste Zeit enthält die Ausgabe nur Müll.
Ich frage mich daher, ob ich den Decoderblock falsch verwende. Eine Dokumentation zur richtigen Verwendung dieses Blocks ist schwer zu finden. Ich habe bereits verschiedene Einstellungen für die Decoderdefinition ausprobiert, aber bisher hat nichts geholfen.
Kann mir jemand dabei helfen? Mit freundlichen Grüßen Valkyrie
Antworten
Innerhalb des CCSDS-Kanalcodierungsstandards gibt es ein Synchronisationswort namens ASM.
Es ist eine Musterfolge von 32, 64 oder 256 Bit, die für die Synchronisation innerhalb des Streams verwendet wird. Es ist nützlich, die beiden Punkte zu lösen, die ich unten beschreibe.
In Ihrem GNU-Blockdiagramm sehe ich zwei Dinge, die ein Problem sein könnten:
Phasenmehrdeutigkeit: Es gibt keinen Mechanismus, um die Phasenmehrdeutigkeit der BPSK bei der Demodulation zu lösen. Ich bin mir nicht sicher, ob der Viterbi-Decoder gut funktioniert, wenn er nicht gelöst wird (die Mehrdeutigkeit).
Zwei-Bit-Mehrdeutigkeit von CC: Diese Art von Code mit einer Rate von 1/2 erzeugt zwei codierte Bits für ein nicht codiertes. Am Eingang des Decoders müssen Sie mit dem ersten codierten Bit eines Paares synchronisiert sein.
Dies könnte erklären, dass Ihr System manchmal nach dem Ein- und Ausschalten funktioniert. Zufällig über zwei oder vielleicht vier ...
Eine andere Bemerkung, bei der ein abwechselndes Muster von 0 und 1 verwendet wird, kann dazu führen, dass Sie etwas Debugging verpassen. Versuchen Sie es mit einem 32-Bit-Muster.
Sagen Sie uns, wenn Sie etwas gefunden haben