Vous êtes sur la page 1sur 15

Rémy BOUCHÉ

E3 – SRT

Projet d’Électronique Analogique

TP Communications
Numériques
TABLE DES MATIÈRES

INTRODUCTION ........................................................................................................................................................ 3

I/ CHAINES ÉLÉMENTAIRES......................................................................................................................................... 4

1) Architecture de départ ........................................................................................................................................ 4

2) Amélioration du modèle ..................................................................................................................................... 5

3) Taux d'erreur binaire .......................................................................................................................................... 5

4) Correction d'erreurs ............................................................................................................................................ 6

II/ CODEUR CONVOLUTIF .......................................................................................................................................... 7

1) Principe ................................................................................................................................................................. 7

2) Algorithme de Viterbi .......................................................................................................................................... 8

3) Implémentation ................................................................................................................................................. 10

III/ CODEUR DE REED-SOLOMON ............................................................................................................................ 11

1) Principe ............................................................................................................................................................... 11

2) Implémentation ................................................................................................................................................. 11

IV/ ENTRELACEUR................................................................................................................................................... 13

1) Principe ............................................................................................................................................................... 13

2) Implémentation ................................................................................................................................................. 13

V/ COMPARAISON DES TAUX D'ERREUR BINAIRE ........................................................................................................ 14

CONCLUSION ......................................................................................................................................................... 15

Rémy BOUCHÉ 2/15


Introduction

La norme DVB-S (Digital Video Broadcasting - Satellite) est un standard définissant la transmission de
signaux MPEG-2 par satellite. Pour faire face au taux d'erreur élevé, dû au faible rapport signal à bruit
inhérent aux communications satellitaires, l'architecture d'une transmission DVB-S est constituée de
plusieurs éléments destinés à corriger les erreurs.

Notre but dans ce TP sera de simuler l'intégrité d'une chaine de transmission (émission et réception) se
basant sur la norme DVB-S. Pour cela, nous partirons d'une chaîne de communication basique modélisée
sous Simulink que nous complèterons au fur et à mesure.

Rémy BOUCHÉ 3/15


I/ Chaines élémentaires

1) Architecture de départ

Commençons avec une chaine simple : un flux de bits est généré de manière équiprobable, celui-ci passe
par une modulation BPSK (Binary Phase-Shift Keying) :

Fig. 1. Architecture de départ

Les symboles traversent ensuite un canal AWGN (Average White Gaussian Noise) modélisant l'effet d'un
bruit blanc gaussien sur le signal. On peut observer l'effet du bruit sur la transmission des symboles dans
la figure ci-dessous, où une transmission a été réalisée avec un SNR (Signal to Noise Ratio) de 10dB :

Fig. 2. Symboles émis (en rouge) et reçus (en bleu) en BPSK

Le signal reçu est enfin démodulé, puis comparé au signal émis afin de calculer le BER (Binary Error Rate)
de la transmission. Dans ce modèle parfait, les délais sont négligés et les signaux à comparer arrivent
donc simultanément au bloc de comparaison chargé de ce calcul.

Rémy BOUCHÉ 4/15


2) Amélioration du modèle

La norme DVB-S exige l'utilisation d'une modulation QPSK (Quadrature Phase-Shift Keying), nous
établissons donc un nouveau modèle en modifiant le modulateur et le démodulateur de l'architecture
précédente. La source de Bernoulli, utilisée pour générer des bits, est remplacée par un générateur
aléatoire d'entiers compris entre 0 et 3, correspondant aux quatre symboles de la constellation.

Dans ce nouveau modèle, nous introduisons également un filtre de mise en forme avant le canal, ainsi
que son filtre adapté après le canal. Selon la norme, ces derniers doivent être des filtres en racine de
cosinus surélevé avec un facteur de Roll-Off égal à 0,35.

Fig. 3. Ajout du filtre de mise en forme

Cependant, par principe de causalité, les filtres de mise en forme introduisent un retard de groupe dF
qu'il faut prendre en compte lors de la comparaison des signaux d'émission et de réception. Dans le bloc
chargé du calcul du BER, nous fixons donc les variables Receive Delay et Computation Delay à 2*dF pour
remédier à cela.

Les paramètres du canal AWGN (nombre de bits par symbole et période des symboles) doivent
également être modifiés en conséquence du changement de modulation et du suréchantillonage induit
par les filtres.

3) Taux d'erreur binaire

Pour évaluer les performances de ces chaînes, nous pouvons calculer leur BER, c’est-à-dire leur taux
d'erreur binaire sur une communication. Pour ce faire, nous implémentons une boucle for sur Matlab
qui simule le modèle évalué pour un rapport signal à bruit variant de 0dB à 10dB.

Quand ce SNR augmente, le taux d'erreur se réduit et la simulation nécessite donc un nombre plus élevé
de bits à envoyer pour détecter les erreurs. Nous simulerons l'envoi d'un million de bits, mais afin de
réduire la durée de la simulation nous utilisons la fonction Stop simulation du bloc de calcul du BER, qui
permet d'arrêter la simulation quand un nombre d'erreurs cible est atteint.

Rémy BOUCHÉ 5/15


Les résultats de quatre chaînes différentes (BPSK et QSPK, avec et sans filtre de mise en forme) sont
comparés dans la figure ci-dessous :

Fig. 4. Comparaison des BER

Comme on peut le voir, les taux d'erreur des quatre chaînes sont identiques. Cela provient du fait que le
BER théorique est identique pour les modulations BPSK et QPSK (dans le cas d'un canal AWGN). De plus,
l'ajout des filtres de mise en forme n'a pas d'influence sur le taux d'erreur binaire. L'expression théorique
du taux d'erreur binaire dans ces conditions est :

𝑇𝐸𝑅 = 𝑄(√2 ∗ 𝑆𝑁𝑅)

4) Correction d'erreurs

Les communications satellitaires sont de type broadcast, c’est-à-dire que les émetteurs situés au sol ne
peuvent pas demander la rediffusion d'un message en cas d'erreur. La norme DVB-S impose donc d'avoir
un très bon BER (en-dessous de 10-9) pour assurer la communication.

Cependant, il est difficile d'obtenir un SNR élevé étant donné la distance à laquelle se trouvent les
satellites. Le SNR se trouve généralement en-dessous de 10dB et une architecture standard ne permet
pas d'atteindre des BER satisfaisants à ce niveau.

Dans les parties suivantes, nous allons donc présenter les codes de correction d'erreur présents dans
une architecture DVB-S permettant de diminuer le BER.

Rémy BOUCHÉ 6/15


II/ Codeur convolutif

1) Principe

Contrairement à un codage en bloc, le codage d'une d'information par un codeur convolutif dépend non
seulement de cette information, mais également des entrées précédentes. Nous allons détailler son
fonctionnement dans le cas simple d'un codeur convolutif feedforward (5,7).

Cet encodeur possède deux sorties et une entrée. Cette entrée est reliée à une série de bascules latch,
qui recopient l'état de leur entrée sur leur sortie à chaque coup d'horloge (elles sont donc équivalentes
à un opérateur retard).

Fig. 5. Codeur convolutif (5,7)

Le sorties des différentes bascules sont reliées à des opérateurs XOR (ou exclusif) selon un branchement
défini par le code de l'encodeur, de la manière suivante :

𝐻1 = (5)10 = (1 0 1)2 𝐻1 = 1 ∗ 1 ⊕ 0 ∗ 𝑧 −1 ⊕ 1 ∗ 𝑧 −2 = 1 ⊕ 𝑧 −2
𝐻 = (5,7) ⇒ ⇒
𝐻2 = (7)10 = (1 1 1)2 𝐻2 = 1 ∗ 1 ⊕ 1 ∗ 𝑧 −1 ⊕ 1 ∗ 𝑧 −2 = 1 ⊕ 𝑧 −1 ⊕ 𝑧 −2

On peut vérifier que le codage d'un symbole dépend bien des entrées précédentes. Dans l'exemple ci-
dessous, on envoie le symbole 1 alors que le codeur est dans son état initial :

𝐸 =[0 1 1]

0 1 1
𝑆=[ ]
0 1 0

Fig. 6. Codage d'un signal de 3 bits

Rémy BOUCHÉ 7/15


Le rendement d'un codeur convolutif est le rapport du nombre de bits d'entrées sur le nombre de bits
de sortie. Dans le cas présent, nous avons doublé le nombre de bits (pour une information équivalente),
nous avons donc un rendement de 1/2.

2) Algorithme de Viterbi

Le codeur convolutif est associé à un décodeur de Viterbi (à décision dure) dont le rôle est de déduire la
trame la plus probable qui a été envoyée.

Le fonctionnement de cet algorithme peut être représenté sous la forme d'une machine d'état, dont les
états sont les sorties des deux bascules latch du codeur précédent. On passe d'un état à l'autre selon le
bit qui est présenté en entrée du codeur (0 ou 1). À chacune de ces transitions est associée la valeur des
deux bits de sortie.

Fig. 7. Machine d'état

Pour reprendre le signal codé dans la figure 6 : au début, la machine se trouve dans l'état 00 et la sortie
vaut 00. En plaçant 1 en entrée, la sortie prend la valeur 11 et on passera dans l'état 10 au prochain coup
d'horloge.

On peut représenter cette machine d'état sous forme d'un treillis élémentaire, représentant les
transitions possibles entre un temps t et t+1 :

Fig. 8. Treillis élémentaire

Rémy BOUCHÉ 8/15


Pour corriger les erreurs, l'algorithme de Viterbi se base sur ce treillis élémentaire. À un instant t, chaque
état est pondéré par une métrique représentant le nombre minimal d'erreurs pour arriver à ce point. Le
décodeur compare alors le symbole reçu aux sorties associées des transitions, et détermine le nombre
de bits différents. Il conserve ensuite la métrique la plus faible de chaque état pour l'instant t+1, ainsi
que la séquence de bits correspondante.

Fig. 9. Calcul des métriques

Le système est d'autant plus efficace que la durée du signal envoyé est longue, puisque les métriques
vont s'accumuler au long du message. Cependant, pour ne pas avoir à patienter jusqu'à la fin du signal,
l'algorithme décide de la trame la plus probable au bout d'un certain nombre de symboles.

Dans l'exemple ci-dessous, une erreur est apparue lors de l'envoi du deuxième symbole, on envoie un
message de 4 bits à l'aide d'un codeur convolutif. Cependant, une erreur se glisse lors du message reçu.
L'algorithme de Viterbi calcule le nombre de bits différents du symbole reçu pour chaque transition (en
bleu), et les métriques totales des états (en rouge) :

Fig. 10. Calcul des métriques

Rémy BOUCHÉ 9/15


À la fin du message, l'algorithme choisit le chemin menant à la plus faible métrique, et parvient ainsi à
restituer le message d'origine :

Fig. 11. Choix du chemin le plus probable

3) Implémentation

Pour simuler le fonctionnement de ce codage, nous le rajoutons au modèle précédent. Le code du codeur
convolutif utilisé pour les communications DVB-S est (171,133). Il faut également repasser sur un
générateur de Bernoulli car le module d'encodeur convolutif prend des bits en entrée.

Fig. 12. Ajout du codeur convolutif

Au retard induit par les filtres, nous devons ajouter un retard dû au décodeur de Viterbi puisqu'il attend
d'avoir reçu dV bits avant de décoder le message. Le délai entre l'émission et la réception dans le bloc de
comparaison est donc égal à 2*dF+dV.

Il faut également prendre en compte le rendement du codeur convolutif en multipliant le SNR par 1/2
pour éviter d'avoir un décalage lors du tracé du BER.

Rémy BOUCHÉ 10/15


III/ Codeur de Reed-Solomon

1) Principe

Le codeur de Reed-Solomon est un codeur en bloc. Il prend K octets en entrée et en sort un paquet de
N octets, il rajoute donc (N-K) octets de redondance qui permettent de corriger (N-K)/2 octets dans le
paquet reçu. Dans le cas de DVB-S, le code utilisé est (204,188,t=8), les 16 octets de redondance
permettent de corriger 8 octets dans la totalité du paquet. Si cette limite est dépassée, le paquet est
marqué comme défectueux.

Nous ne rentrerons pas dans le détail du fonctionnement de correction des erreurs, qui se base sur un
des polynômes générateurs. On peut cependant avoir une idée du fonctionnement sur un cas très simple
décrit dans la figure ci-dessous :

Fig. 13. Principe simplifié du code Reed-Solomon

2) Implémentation

Fig. 14. Ajout du codeur RS

Rémy BOUCHÉ 11/15


On ajoute maintenant l'encodage RS en amont et aval de la chaîne. Pour que la communication
fonctionne correctement, il est essentiel de synchroniser correctement les signaux car l'encodeur et le
décodeur RS sont synchrones.

Pour commencer, la source est changée par des trames de 188 octets (8 bits, codant de 0 à 255). Cette
trame passe ensuite par l'encodeur RS, où 16 octets de redondance sont ajoutés. Cependant, le message
est retardé de d=2*dF+dV à cause du décodeur de Viterbi et des filtres. Cette désynchronisation est fatale
puisque le message reçu par le décodeur RS ne correspond plus à rien :

Fig. 15. Ajout du codeur RS

Puisqu'il est impossible d'avancer le message, la seule solution est de le synchroniser avec un retard
complémentaire de 1632-d bits, situé à la sortie du décodeur de Viterbi. Ainsi, quand le codeur RS
encodera une trame, le décodeur RS décodera la trame précédente en parallèle.

Pour pouvoir comparer les trames transmises et reçues, il faut donc régler le retard du bloc BER à
l'équivalent d'une trame (sans les octets de redondance), soit 1504 bits (188 octets).

Enfin, puisque nous transmettons des octets, il nous faut régler le paramètre Input Signal Power du canal
AWGN à 1/8. De plus, nous devons prendre en compte le rendement de 188/204 dans le calcul du SNR
(décalage de 0,3dB).

Rémy BOUCHÉ 12/15


IV/ Entrelaceur

1) Principe

On peut distinguer deux types d'erreurs dans les transmissions. Tout d'abord, les erreurs aléatoires sont
dues au bruit et sont équiprobablement réparties dans le temps. Au contraire, les burst d'erreurs sont
des séquences engendrant un grand nombre d'erreurs consécutives, qui peuvent par exemple être
engendrées par un obstacle temporaire dans le canal.

Les deux codes correcteur d'erreur précédents sont bien adaptés aux erreurs aléatoires mais ne
permettent pas de corriger les burst. Le but de l'entrelaceur convolutif sera de répartir ces erreurs
consécutives sur une durée plus longue, comme dans l'exemple ci-dessous :

Sans entrelaceur Avec entrelaceur

Message émis This is a sample message eTs haais *** smeaesp l

Message reçu et décodé This is a ***mple message This *s a sa*ple messa*e

Fig. 16. Action de l'entrelaceur

2) Implémentation

L'entrelaceur se place entre les étages de codage RS et convolutif :

Fig. 17. Ajout de l'entrelaceur

L'entrelacement se faisant au niveau des octets, il est nécessaire que le délai de 1632-d bits soit un
multiple de 8. Pour cela, on peut modifier le retard d ou en ajouter un nouveau.

De plus, le délai au niveau du module de calcul de BER doit être modifié. Dans le cas d'un entrelaceur
convolutif (12,17) prescrit par la norme DVB-S, ce délai correspond à 12 trames de 1504 bits.

Rémy BOUCHÉ 13/15


V/ Comparaison des taux d'erreur binaire

On trace ci-dessous l'évolution du taux d'erreur binaire de quatre architectures différentes, avec un total
de cinq millions de bits :

Fig. 18. Comparaison des BER

Les deux codages utilisés agissent différemment :


 Le codeur convolutif a un impact négatif sur le BER pour un SNR en-dessous de 3dB. Puis
permet de décroître avec une courbe plus importante que l'architecture de base.
 Le codeur RS n'a pas d'impact sur le BER pour un SNR en-dessous de 4dB, puis permet lui aussi
de décroître très rapidement une fois cette limite passée.

La combinaison de ces deux encodages permet un gain magistral du BER : à partir d'un rapport signal à
bruit de 5dB, plus aucune erreur n'a été commise sur l'échantillon testé.

L'effet de l'entrelaceur convolutif n'apparait pas dans cette figure car il est difficile de simuler des burst
d'erreurs sous Simulink, il n'a donc pas d'influence dans le BER simulé mais sa présence dans
l'architecture réelle est capitale.

Rémy BOUCHÉ 14/15


Conclusion

L'architecture DVB-S comprend trois étages destinés à corriger erreurs. Ces étages sont
complémentaires et leur mise en commun permet d'atteindre des taux d'erreur très faibles pour des
communications bruitées.

Le gain considérable au niveau du BER par rapport à une architecture standard a rendu possible les
communications vidéo par satellite.

Rémy BOUCHÉ 15/15

Vous aimerez peut-être aussi