Comment effectuer une récupération de phase de porteuse dans un logiciel?


13

Quelles sont les options pour récupérer la phase d'un signal BPSK dans le logiciel? Les seules ressources que je peux trouver en ligne contiennent des schémas de circuits - il semble que personne ne veuille l'expliquer à des personnes peu familiarisées avec les circuits analogiques.

J'aimerais avoir des explications sur le fonctionnement de la récupération de l'opérateur en théorie, et j'aimerais aussi des exemples de pseudocode ou de code.


Nous ne fournissons normalement pas d'exemples de code, en particulier pour quelque chose d'aussi compliqué qu'un démodulateur BPSK.
Jim Clay

1
Comme l'a indiqué JimClay, il est peu probable que quelqu'un ait suffisamment de temps pour fournir le code source complet pour la mise en œuvre d'un démodulateur. Cependant, la mécanique de création d'une implémentation devrait être facile si vous comprenez les concepts. En général, un récepteur logiciel va avoir une structure similaire à la technique matérielle correspondante (par exemple un synchroniseur non linéaire basé sur une action directe ou une approche basée sur PLL de rétroaction). Aviez-vous une topologie spécifique que vous envisagiez de cibler?
Jason R

Merci pour vos commentaires @JimClay et JasonR - Je ne voulais pas demander le code source de travail. J'ai mis à jour la question pour être plus précis: je cherche juste une explication qui ne présuppose pas une compréhension des circuits analogiques et des schémas de circuits.
Keith

Réponses:


25

Pour démoduler un signal codé à déphasage, dont le BPSK est le plus simple, vous devez récupérer la fréquence porteuse, la phase et la synchronisation des symboles.

Signaux éclatants Certains signaux sont en rafale et fournissent une séquence de données connue appelée préambule ou mi-ambre (selon qu'elle apparaît au début ou au milieu de la rafale). Les démodulateurs peuvent utiliser un filtre adapté qui "recherche" la séquence de données connue et l'utiliser pour déterminer la fréquence, la phase et la synchronisation des symboles de la rafale. Ils le font pour chaque rafale et n'ont pas besoin de se soucier de la "dérive" (la distance progressive qui s'accumule entre le démodulateur et le signal reçu à mesure que de petites erreurs s'accumulent) car les rafales sont généralement assez courtes pour que la dérive ne soit pas un problème.

Signaux continus Ensuite, il y a des signaux continus. Ils sont à bien des égards plus difficiles à récupérer que les signaux en rafale, car vous n'avez normalement pas de séquence de données connue pour vous aider à verrouiller le signal, et vous devez vous soucier de la dérive même après avoir verrouillé le signal. J'essaierai de décrire à un niveau élevé les principales étapes généralement utilisées pour récupérer des signaux continus.

Récupération de l'opérateur

Habituellement, vous savez à quelle fréquence le signal que vous recherchez sera, ou du moins à quel ensemble de fréquences il pourrait être. Même avec cette connaissance, cependant, vous devez généralement être en mesure de corriger le décalage de fréquence car aucun émetteur ne transmet à la même fréquence. Il y a toujours une erreur. La méthode habituelle consiste alors à mélanger la fréquence à laquelle vous pensez que le signal sera, puis à corriger l'erreur de fréquence résiduelle. Cela peut être fait avec un boucle Costas, ou en prenant la quatrième puissance des données du signal en bande de base et en recherchant un pic de fréquence. Il devrait y avoir un pic de fréquence au décalage de la porteuse * 4 (par exemple, si vous prenez une FFT des données à la 4e puissance et voyez un pic de fréquence à 8300 Hz, cela signifie que le décalage de la porteuse est de 8300/4 = 2075 Hz). C'est un moyen très efficace d'obtenir un verrouillage initial sur le décalage de fréquence. Vous pouvez également l'utiliser pour compenser la dérive si vous la répétez de temps en temps. Il existe un autre moyen de compenser la dérive que j'aborderai plus tard.

Phase porteuse

À ce stade, si vous avez tracé vos données complexes dans le plan complexe (l'axe x est réel, l'axe y est imaginaire), cela devrait ressembler à ce qui suit -

BPSK tourné

ejπ

BPSK tourné et miroir

ej-ω

BPSK bruyant

Une fois les données corrigées en phase, vous pouvez supprimer la partie imaginaire des données car elle n'ajoute aucune information.

Synchronisation des symboles

Vous devez normalement connaître, a priori, la période de symbole du signal que vous essayez de démoduler. Si vous devez cependant déterminer la période / fréquence du symbole, vous pouvez le faire de la même manière que le décalage de la porteuse a été détecté. Vous pouvez quadriller les données, ce qui provoquera un pic de fréquence à deux fois la fréquence du symbole.

Comme avec le porteur, vous devrez obtenir la bonne phase (timing), puis compenser la dérive. La méthode habituelle pour ces deux problèmes est de rechercher les passages par zéro. Sauf si le bruit est assez mauvais, il ne doit traverser le point zéro au milieu d'une transition de symbole de -1 à 1 ou de 1 à -1. Même si le bruit fait que cela se produit au milieu d'un symbole, cela n'arrivera pas très souvent.

Diagramme des yeux

L'image ci-dessus est généralement appelée «diagramme des yeux» ou «motif des yeux». Il est large de deux périodes de symboles et comporte de nombreux symboles "empilés" les uns sur les autres. Je ne sais pas si vous connaissez ou non les oscilloscopes, mais vous pouvez obtenir un oscilloscope pour afficher une image comme celle-ci. Quoi qu'il en soit, les deux «X» sont des transitions de symboles. Les lignes hautes à basses dans les X sont lorsque le symbole passe de 1 à -1, et les lignes basses à hautes dans les X sont lorsque le symbole passe de -1 à 1. Le point entre les deux, où le la ligne rose est, est l'endroit optimal pour échantillonner les données pour voir si le symbole est un 1 ou -1.

Cette même technique peut être utilisée pour gérer la dérive de synchronisation des symboles. Prendre une moyenne mobile de la distance entre le passage à zéro précédent et le passage à zéro suivant. Si les deux moyennes sont à peu près les mêmes, tout va bien. Si l'un est plus grand que l'autre, vous devez vous déplacer là où vous récupérez votre échantillon.

Une fois que vous avez échantillonné les symboles aux bons points, vos points de données devraient obtenir quelque chose qui ressemble aux points de constellation BPSK classiques.

Constellation BPSK bruyante

J'espère que ça aide.


Pour améliorer ce merveilleux article, vous pourriez peut-être ajouter une section de récupération de l'horloge avant la synchronisation des symboles?
LWZ

Je pense que je sais peut-être ce que vous avez en tête mais je ne suis pas sûr. À quoi pensiez-vous précisément?
Jim Clay

Merci beaucoup! Je n'avais pas pensé à chercher des passages à zéro, ni à tracer le réel / imaginaire sur x / y de cette façon. Je viens de regarder des graphiques de phase et je me demandais comment tout synchroniser. Merci encore!
Keith

@JimClay, Au début de votre section Synchronisation des symboles, vous avez mentionné que "Vous devriez normalement connaître la période des symboles du signal que vous essayez de démoduler.", Et cela est généralement réalisé par une unité de récupération d'horloge, car normalement vous avez gagné " t envoyer une horloge avec vos données. Pour le signal BPSK, c'est facile, où vous pouvez simplement quadriller votre signal, ce qui supprime les données. Ensuite, vous regardez le spectre de puissance, il devrait y avoir une fréquence de pointe qui est appelée la tonalité d'horloge , qui vous donne la période du symbole.
LWZ

Ajout d'un paragraphe sur la fréquence des symboles.
Jim Clay
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.