Solar Orbiter

Décodage de Solar Orbiter de l’ESA

Traduction de la publication de Daniel Estévez du

Solar Orbiter est un satellite d’observation du soleil de l’ESA qui a été lancé le 10 février 2020 à Cap Canaveral, aux États-Unis. Il effectuera des mesures détaillées de l’héliosphère à des distances rapprochées jusqu’à environ 60 rayons solaires.

Comme d’habitude, les observateurs amateurs s’intéressent au suivi de cette mission depuis son lancement, mais apparemment l’ ESA a refusé de publier des vecteurs d’état pour les aider à localiser le vaisseau spatial. Cependant, 18 heures après son lancement, Solar Orbiter a été trouvé par des amateurs, d’abord visuellement, puis par radio. Depuis lors, il a été activement suivi par plusieurs stations Amateur DSN, qui publient des rapports de réception sur Twitter et d’autres médias.

Le 13 février, le vaisseau spatial a déployé son antenne à gain élevé. Comme il n’est pas encore si loin de la Terre, même les stations avec des antennes paraboliques relativement petites peuvent recevoir la modulation des données sur le signal de liaison descendante de la bande X. Des diagrammes de spectre montrant les lobes latéraux de ce signal ont été publiés sur Twitter par Paul Marsh M0EYT, Ferruccio IW1DTU et d’autres.

J’ai utilisé un enregistrement IQ effectué par Paul le 2020-02-13 16:43:25 UTC à 8427.070MHz pour décoder les données transmises par Solar Orbiter. Dans cet article, je montre les détails.

Un simple coup d’œil au spectre, illustré dans la figure ci-dessous, en dit long sur la modulation. Il existe une porteuse résiduelle et les lobes latéraux de données s’étendent jusqu’à la porteuse centrale et sont nuls là-bas. Cela suggère que la modulation est PCM / PM / Bi-φ.

Spectre de la liaison descendante en bande X de Solar Orbiter

Je trouve souvent un peu confuse la terminologie utilisée dans DSN pour décrire les modulations. Cet article a une explication utile. En particulier, PCM / PM / Bi-φ signifie que les données sont d’abord codées Manchester (Bi-φ ou biphasé est un autre terme pour Manchester) puis modulées en phase sur une porteuse RF. Un indice de modulation de phase beaucoup plus petit que π est utilisé pour obtenir une porteuse résiduelle. Dans le cas de cet enregistrement Solar Orbiter, l’indice de modulation est d’environ π / 2.

Le codage Manchester produit des lobes latéraux de données qui s’étendent jusqu’à la porteuse résiduelle. Le codage Manchester équivaut à utiliser une fréquence de sous-porteuse égale à la vitesse de transmission. Si une fréquence de sous-porteuse supérieure à la vitesse de transmission était utilisée (qui est souvent décrite comme PCM / PSK / PM), alors les lobes latéraux ne s’étendraient pas jusqu’à la porteuse résiduelle et il y aurait un écart entre les lobes latéraux et la porteuse résiduelle. La figure 3.1 de l’article mentionné ci-dessus donne une bonne visualisation des spectres des différentes modulations. La modulation PCM / PM / Bi-is est également appelée SP-L / PM.

La manière habituelle de décoder un signal modulé en phase avec une porteuse résiduelle est de verrouiller une PLL sur la porteuse résiduelle, puis de prendre la phase des signaux résultants. Pour les petits indices de modulation, il convient également de prendre la partie imaginaire à la place, ce qui est une approximation beaucoup plus efficace. On obtient un signal réel qui correspond à la modulation de phase.

L’analyse cyclostationnaire montre que le débit en bauds est d’environ 555,5 kbauds. Ceci est juste une façon technique de dire que nous calculons x indice n multiplié complexe par x indice n-1, où x indice n est notre signal, et faire une analyse de Fourier du signal résultant, en obtenant une tonalité à environ 555,5 kHz. Dans le cas d’un signal de codage Manchester ou d’un signal avec une sous-porteuse, il est probablement préférable d’effectuer cette analyse sur l’un des lobes latéraux uniquement, car chaque lobule latéral seul ressemble à BPSK.

Avec cette connaissance, nous sommes prêts à verrouiller une constellation, comme indiqué ci-dessous, et à obtenir les bits du signal. Comme nous pouvons le voir, le rapport signal / bruit est assez élevé et il y a peu d’erreurs sur les bits. Le lecteur attentif se demandera peut-être comment j’ai réussi à produire une constellation BPSK à partir d’un signal réel codé Manchester. Ceci sera expliqué ci-dessous.

Constellation de Solar Orbiter PCM / PM / Bi-φ

Il y a beaucoup de choses qui peuvent être essayées pour donner un sens aux bits, et il est facile de se perdre si l’on ne sait pas quoi rechercher et si l’on cherche aveuglément une sorte de structure. En fait, les morceaux semblent avoir trop de structures qui peuvent amener à chercher l’impossible. Par exemple, il y a une forte auto-corrélation à 510 bits de décalage dont je ne comprends pas bien d’où il vient et n’aide probablement pas à décoder le signal.

Bien sûr, nous attendons une sorte de protocole CCSDS, il est donc utile d’essayer de corréler avec les mots de synchronisation CCSDS définis dans le livre bleu TM Synchronization and Channel Coding. Cet article peut également nous faire économiser du travail, car il mentionne les codes Turbo aux taux 1/2 et 1/4.

En fait, si nous corrélons les bits avec le mot de synchronisation 64 bits 0x034776C7272895B0 marquant le début des mots de code CCSDS r = 1/2 Turbo, nous obtenons une bonne correspondance.

La séparation entre la plupart des mots de synchronisation détectés est de 17912 bits. Cela indique qu’une longueur de bloc de 8920 bits est utilisée pour le code Turbo, ce qui donne 17848 bits de code (voir le tableau 6-2 dans le livre bleu ).

Il existe d’autres mots de synchronisation qui sont séparés par 2257 bits (indiquant des trames de 2193 bits). Deux d’entre eux peuvent être vus dans la figure ci-dessus. Je ne sais pas quels sont ces cadres. Le plus petit mot de code CCSDS Turbo a 3 576 bits et, bien que ce mot de synchronisation puisse également être utilisé pour les mots de code LDPC, les tailles répertoriées dans le tableau 7-5 dans le livre bleu ne correspondent pas à cette longueur de trame.

Le décodage des mots de code CCSDS Turbo est facile, car (sauf pour la longueur du bloc), c’est exactement le même FEC que nous avons utilisé dans la mission DSLWP. Par conséquent, il existe un décodeur GNU Radio Turbo dans gr-dslwp.

Puisque gr-dslwp n’est disponible que pour GNU Radio 3.7, j’ai créé mon organigramme de décodeur dans GNU Radio 3.7. Ce diagramme de flux n’a besoin que de gr-dslwp pour fonctionner. La première partie du décodeur lit l’enregistrement IQ et utilise un AGC qui a été copié des gr-satellites RMS AGC .

Décodeur radio Solar Orbiter GNU (première partie)

La deuxième partie du décodeur est illustrée ci-dessous. Nous commençons par verrouiller une PLL sur la porteuse résiduelle et prenons l’argument complexe pour effectuer la démodulation de phase. Ce qui suit est peut-être une façon peu orthodoxe de démoduler un signal réel codé Manchester.

Décodeur radio Solar Orbiter GNU (deuxième partie)

Nous prenons la transformée de Hilbert, obtenant un signal BPSK complexe à une fréquence égale à la vitesse de transmission. Nous déplaçons ce BPSK en bande de base, puis procédons normalement, en récupérant les symboles et en utilisant une boucle Costas pour verrouiller la constellation. Cela présente l’inconvénient que les symboles que nous obtenons peuvent avoir une mauvaise polarité. Cependant, il est rapide et facile à installer.

L’autre méthode rapide et facile que je connais pour démoduler un signal de Manchester est de prétendre qu’il est BPSK à deux fois le débit en bauds, obtenant des «demi-symboles». Ensuite, nous détectons la phase d’horloge de Manchester en regardant les transitions et accumulons des paires de «demi-symboles» adjacents. Cette procédure présente l’inconvénient que la récupération d’horloge fonctionne à un SNR inférieur, en raison de la vitesse de transmission plus élevée.

Après la démodulation BPSK, nous considérons deux branches pour tenir compte de l’éventuelle inversion de polarité, détecter les mots de synchronisation et utiliser les blocs de gr-dslwp pour extraire les mots de code vers les PDU, effectuer le désembrouillage et le décodage Turbo. Les trames décodées sont stockées dans un fichier.

Malheureusement, le décodeur Turbo n’est pas assez rapide pour fonctionner en temps réel sur mon ordinateur portable. Il fonctionne à environ 25% du temps réel pour le signal Solar Orbiter 555,5 kbaud. Je n’ai pas cherché à optimiser cela.

Les trames décodées sont ensuite analysées dans ce cahier Jupyter . Ce sont des trames TM Space Data Link, comme décrit dans ce livre bleu. Un total de 1665 images ont été décodées à partir de l’enregistrement de 53,6 secondes de Paul. Parmi ceux-ci, 38 ont un CRC non valide. Je soupçonne que le problème avec ces trames est causé par les trames «mystérieusement courtes» de 2193 bits (le bloc Frame Splitter F s’en plaint).

Spacecraft ID 650 est utilisé pour Solar Orbiter et l’enregistrement contient 57 images dans le canal virtuel 0, 1567 images dans le canal virtuel 2 et 3 images dans le canal virtuel 4. Selon le nombre d’images du canal maître, seules 32 images ont été perdues. Je n’ai pas tenté d’analyser davantage les données en essayant de regarder les couches de protocole de niveau supérieur.

Le matériel utilisé dans ce post, y compris le diagramme de flux GNU Radio, peut être trouvé ici (cliquer sur solarorbiter.grc puis sur l’onglet RAW pour télécharger le fichier qu’il faudra ensuite sauvegarder localement). L’enregistrement IQ réalisé par Paul peut être téléchargé ici (attention il est lourd de 450 Mo) .