Modulation BPSK

Exemple de simulation : démodulation BPSK

Ce tutoriel est la suite du tutoriel GNU Radio Usage Example : PSK modulation / demodulation pour introduire l’utilisation de BPSK plutôt que de QPSK. Il est impératif que vous passiez par toutes les conditions préalables avant de faire cela. Seules les parties qui diffèrent du tutoriel QPSK sont discutées en détail.

La différence entre QPSK et BPSK est le nombre de bits par symbole. QPSK utilise des symboles 2 bits ; BPSK utilise des symboles 1 bit. Dans les deux cas, le bloc Constellation Modulator utilise les 8 bits d’entrée. Notez que l’objet de constellation diffère entre QPSK et BPSK.

Contenu

Conditions

Transmettre un signal

La première étape est la transmission du signal BPSK. Nous générons un flux binaire et le modulons en une constellation complexe. Pour ce faire, nous utilisons le bloc Constellation Modulator , qui utilise un objet Constellation et d’autres paramètres pour contrôler le signal transmis.

L’objet Constellation nous permet de spécifier comment les symboles sont encodés. Le bloc modulateur peut utiliser ce schéma de modulation avec ou sans codage différentiel. Le modulateur de constellation attend des octets complets, nous avons donc un générateur de source aléatoire qui fournit des octets avec des valeurs de 0 à 255.

En ce qui concerne le nombre d’échantillons par symbole, nous voulons garder cette valeur aussi faible que possible (valeur minimale de 2). Généralement, nous pouvons utiliser cette valeur pour aider à faire correspondre le débit binaire souhaité au taux d’échantillonnage du périphérique matériel que nous utiliserons. Étant donné que nous utilisons la simulation, les échantillons pour chaque symbole sont importants pour nous assurer que nous faisons correspondre ce taux dans l’organigramme. Ici, nous utiliserons 4, ce qui est plus grand que nécessaire, mais utile pour voir le signal dans différents domaines.

Enfin, nous définissons la valeur de la bande passante excédentaire. Le modulateur de constellation utilise un filtre de mise en forme d’impulsion en cosinus racine surélevé (RRC), qui nous donne un seul paramètre pour ajuster le facteur de déviation du filtre, souvent appelé mathématiquement « alpha ».

Bpsk stage1 fg.png

Dans le graphique de constellation, nous voyons les effets du suréchantillonnage(créant 4 échantillons pour chaque symbole) et le processus de filtrage. Notez que tous les points sont sur l’axe en phase. Le filtre RRC ajoute intentionnellement une auto-interférence, appelée interférence inter-symbole (ISI). ISI est mauvais pour un signal reçu car il brouille les symboles ensemble. Nous examinerons plus en détail la section de récupération de la saison. Voyons maintenant ce que nous faisons au signal. Si vous regardez les signaux transmis à partir de ce graphique, vous devriez voir que le graphique de fréquence montre un signal bien formé et que le bruit est inclus. Si nous n’appliquions pas de filtre de mise en forme au signal, nous transmettrions des ondes carrées qui génèrent beaucoup d’énergie dans les canaux adjacents. En réduisant les émissions hors bande, notre signal reste désormais bien dans la bande passante de notre canal.

Bpsk stage1 out.png

Côté réception, nous supprimons l’ISI en utilisant un autre filtre RRC. Fondamentalement, ce que nous avons fait est d’utiliser un filtre au niveau de l’émetteur, un filtre RRC qui génère l’ISI mais contrôle la bande passante, puis un autre filtre RRC au niveau du récepteur. Lorsque nous combinons les deux filtres RRC, nous obtenons un filtre cosinus surélevé . La sortie du filtre RRC côté réception est un signal en forme de cosinus surélevé avec un ISI inférieur.

Ajouter des handicaps de canal

L’ajout de dégradations de canal est le même que celui décrit dans la section du didacticiel QPSK Ajout de dégradations de canal .

Le temps de récupération

La récupération de temps est la même que celle décrite dans la section du didacticiel QPSK Récupération de temps .

Cravates

L’égaliseur CMA a été omis de ce didacticiel pour simplifier l’organigramme final.

Correction fine de la phase et de la fréquence

La correction fine de phase et de fréquence est la même que celle décrite dans la section du didacticiel QPSK Correction de phase et de fréquence fine .

Voici l’écran de sortie BPSK :

Bpsk stage5 out.png

Décodage

Maintenant que le plus dur est fait, nous allons pouvoir décoder le signal. En utilisant l’exemple Media:Bpsk_stage6.grc ci-dessous, nous insérons le Constellation Decoder après la boucle Costas , mais notre travail n’est pas tout à fait terminé. À ce stade, nous aurons nos symboles 0 et 1, car il s’agit de la taille de notre alphabet dans un schéma BPSK. Mais comment savons-nous avec certitude que nous avons le même mappage de symboles sur les points de constellation lorsque nous diffusons ? Notez que rien de ce que nous avons fait dans la discussion ci-dessus n’avait aucune connaissance du mappage symbole-constellation transmis, ce qui signifie que nous pourrions avoir 180 degrés d’ambiguïté dans la constellation. Heureusement, nous avons évité ce problème en transmettant des symboles différentiels. En fait, nous n’avons pas transmis la constellation elle-même, nous avons transmis la différence entre les symboles de la constellation en réglant le paramètre Différentiel dans le bloc Constellation Modulator sur « Oui ». Alors maintenant, nous avons annulé cela.

Bpsk stage6 fg.png

L’organigramme utilise le bloc Décodeur différentiel pour reconvertir les symboles codés de manière différentielle en leurs symboles d’origine en fonction des transitions de phase, et non de la phase absolue elle-même. Nous avons maintenant le bitstream original !

Mais comment savons-nous que c’est le bitstream original ? Pour vérifier cela, nous allons le comparer au flux binaire d’entrée, car il s’agit d’une simulation et nous pouvons le faire car nous avons accès aux données transmises. Mais bien sûr les bits emballés par l’émetteurles a produits, nous utilisons donc le bloc de bits de décompression pour décompresser de 8 bits par octet à 1 bit par octet. Nous convertissons ensuite ces flux en valeurs à virgule flottante de 0,0 et 1,0, puisque notre puits de temps n’accepte que les valeurs à virgule flottante et complexes. En comparant ces deux directement… rien ne montrerait. Pourquoi? Étant donné que la chaîne de réception comporte de nombreux blocs et filtres qui retardent le signal, le signal reçu est donc quelques bits en retard. Pour compenser, nous devons retarder les bits envoyés du même montant en utilisant Delaybloque le Vous pouvez ensuite ajuster le délai pour trouver la valeur correcte et voir comment les bits sont synchronisés. Vous pouvez également soustraire un signal de l’autre pour voir s’ils se synchronisent car la sortie sera 0. L’ajout de bruit et d’autres effets de canal peut facilement être considéré comme des erreurs de bit lorsque ce signal n’est pas 0.

Bpsk stage6 out.png