on ajoute au message à émettre un code de contrôle tel le

26
Introduction aux télécommunications 08/05/2013 PAGE PETITPA 41 Exemple : Soit le code de Hamming avec g(x)=1+x+x 3 1 1 1 d) Exemple La suite 11000101 est représentée par le polynôme suivant x6 + x5 + 0x4 + 0x3 + x2 + 0x + 1 = x6 + x5 + x2 + 1 En émission : On ajoute au message à émettre un code de contrôle tel le polynôme correspondant au message plus le code de contrôle soit divisible par le polynôme générateur. En réception :

Upload: others

Post on 23-Jun-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 41

Exemple : Soit le code de Hamming avec g(x)=1+x+x3

���� � �� � 1� � 1 � �� �� � 1

d) Exemple La suite 11000101 est représentée par le polynôme suivant x6 + x5 + 0x4 + 0x3 + x2 + 0x + 1 = x6 + x5 + x2 + 1 En émission : On ajoute au message à émettre un code de contrôle tel le polynôme correspondant au message plus le code de contrôle soit divisible par le polynôme générateur. En réception :

Page 2: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 42

Le message reçu qui contient les données et le CRC doit être divisible par le polynôme générateur. On vérifie donc par une division euclidienne en base 2 que le reste de la division est nulle. Émission d’un mot : On choisit un polynôme générateur puis on le transforme en un mot binaire. Exemple : avec le polynôme générateur x4 +x2 +x, on obtient 10110. On ajoute r zéros au mot binaire à transmettre où r est le degré du polynôme générateur. Exemple : on souhaite transmettre le mot 11100111 en utilisant le polynôme générateur x4 + x2 + x, on obtient alors 111001110000. On va ajouter itérativement à ce mot, le mot correspondant au polynôme générateur jusqu’à ce que le mot obtenu soit inférieur au polynôme générateur. Ce mot obtenu correspond au CRC à ajouter au mot avant de l’émettre. On effectue donc une division euclidienne dans laquelle on ne tient pas compte du quotient.

Page 3: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 43

3.3) Les codes convolutionnels Pour les codes convolutifs chaque bloc de n éléments binaires en sortie du codeur dépend non seulement du bloc de k éléments présents à son entrée mais aussi des blocs présents précédemment. Les codes convolutifs introduisent par conséquent un effet de mémoire d’ordre m. Le code convolutif permettant d’augmenter la capacité de correction en traitant en continu

L’un des codes les plus connus est le code de Viterbi Actuellement la recherche porte sur les codes convolutifs du type turbo-code qui sont des codes correcteurs d’erreur optimaux. 3.3.1) Réalisation pratique Un codeur est constitué d’un registre à (m+1)k étages qui mémorise les (m+1) blocs de k éléments binaires d’information, d’une logique combinatoire qui calcule les blocs de n éléments binaires fournis par le codeur et d’un convertisseur parallèle série. La quantité (m + 1) est appelée la longueur de contrainte du codeur.

Page 4: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 44

3.3.2) Cas d’étude : codeur de base de rendement 1/2

3.3.2.1) schéma

Son entrée est constituée par des blocs de k=1 élément binaire et sa sortie par des blocs de n=2 éléments binaires. La convolution provient du fait que chaque sortie du codeur est égale au produit de convolution entre la suite binaire présente à l’entrée du codeur et la réponse du codeur défini par ses séquences génératrices.

Page 5: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 45

3.3.2.2) Les séquences génératrices

Les sorties peuvent s’écrire :

� ������

���× ����

Pour l’exemple ci-dessus on a k=1,2, les 2 séquences génératrices ont pour exemple : g2=[1,1,1]=7 en octal et g1=[1,0,1]=5 en octal (k est l’indice du bit de sortie, j est l’indice du bit d’entrée)

On a donc

3.3.2.3) Le codage : principe de fonctionnement

On souhaite coder la suite binaire suivante 10100 Le tableau suivant nous donne en sortie S1 et S2 les résultats suivants :

mot codé Viterbi émis :1 1 0 1 0 0 (0 1 1 1) L’introduction d’un effet de mémoire complique notablement la représentation des codes convolutifs à partir d’une matrice génératrice ou de polynômes générateurs. La représentation

Page 6: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 46

usuelle pour le décodage est la représentation graphique sous forme d’un arbre, d’un treillis, ou encore d’un diagramme d’état. 3.3.2.4) Le diagramme en arbre

3.3.2.5) Le diagramme en treillis

Page 7: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 47

3.3.2.6) Le diagramme d’état

Le diagramme d’état est une autre représentation du fonctionnement d’un codeur convolutif, ne faisant pas apparaitre le temps

3.3.2.7) Décodage des codes convolutifs

Le décodage va consister à rechercher dans le treillis la séquence binaire (correspondant à un chemin particulier) la plus proche de la séquence reçue. Cette séquence est appelée la séquence la plus vraisemblable. Démarche L’algorithme de Viterbi: ⇒ En calculant un poids à chaque étape t = distance de Hamming (nbre bits ≠ entre mot reçu et S1 et S2) ⇒ En cumulant les poids d’une étape à l’autre pour chaque chemin ⇒ En conservant, à chaque étape t, les chemins optimaux (poids cumulé min) L’algorithme calcule un poids cumulé associé à chaque candidat ⇒ Choix au final du chemin « le + court » = poids cumulé min en bout du treillis Exemple soit les 2 séquences suivantes :

2 bits sont donc en erreur. Le décodage est le suivant :

mot émis : 1 1 0 1 0 0 0 1 1 1

mot reçu : 0 1 0 1 0 1 0 1 1 1

t1 t2 t3 t4 t5

Page 8: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 48

La distance libre mesure la plus petite distance entre 2 mots distincts du code. C’est le principal paramètre pour déterminer la capacité de correction du code

Page 9: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 49

3.4) Concaténation

C’est l’association d’un codage par bloc et d’un codage convolutionnel Le décodage du code convolutionnel corrige les erreurs indépendantes mais a tendance à laisser des paquets d’erreurs (comme le décodage dépend des données actuelles mais aussi des précédentes, une erreur à t a de l’influence sur le décodage à t+1...) Qu’un décodage de Reed-Solomon RS pourra alors corriger. Le schéma du codage et du décodage est alors le suivant :

RS=R1xR2 RS : rendement du code série R1 : rendement du codeur externe R2 : rendement du codeur interne 3.5) Comparatif avec ou sans codage d’erreur

Pour un TEB de 1 erreur sur 1000bits reçus on trouve un gain de codage de 1.33dB, à un taux d’erreur identique. Avec le code correcteur d’erreur on pourra bénéficier d’un rapport signal sur bruit inférieur pour le même taux d’erreur bit

Page 10: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 50

Le problème de la concaténation série est que le décodeur intérieur ne tire pas profit de la redondance produite par le code extérieur. ON a donc développé une concaténation parallèle en utilisant les turbos-codes.

Page 11: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 51

3.6) Les turbos codes

L'idée originale exploitée dans la construction du turbo code, est, en réalité, un concept largement répandu dans de nombreux domaines scientifiques : plutôt que de traiter en une fois un problème complexe – un seul code convolutif avec plusieurs dizaines de mémoires, n'est-il pas plus avantageux de séparer ce problème en deux ? En l'occurrence, sachant que la complexité du décodeur croît de manière exponentielle avec le nombre de mémoires du codeur, il vaut mieux traiter successivement deux petits codes qu'un seul dont le nombre d'états possibles se compterait par milliers ou par millions.

3.6.1) Principe de codage

Le principe des turbo-codes est l’utilisation conjointe de deux codeurs convolutifs récursifs, (Recursive systematic convolutional (RSC)) code et d’un entrelaceur.

Pour chaque bit d’entrée (message), il produit un bit en sortie image du message X et 2 bits de parité Y1, Y2. Son rendement est donc de

� � 1

3

Page 12: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 52

Rendement d’une concaténation parallèle

R1 R2 faible �Rp>Rs

On peut le ramener le rendement à ½ par un poinçonnage qui consiste à ne garder à tout instant que l’un des bits Y1 ou Y2. Ce codeur s’approche le plus de la limite de Shannon qui d’un point de vue phénoménologique peut s’exprimer par : Si la puissance moyenne de la perturbation est égale à celle du signal utile reçu et où si l’on a transmis deux fois plus de données que n'en contiennent le message d'origine, le signal reste exploitable. Cette théorie ne nous donne pas le code qui permet d’atteindre cette limite.

L’entrelaceur permet ainsi de coder avec le même codeur deux séquences d’autant plus Différentes que l’entrelacement sera chaotique. Il brise les paquets d’erreurs et disperse les erreurs résiduelles. L’atout principal de ce codage est la mise en place de 2 idées simples :

- La concaténation parallèle des codes pour permettre un décodage simple, - L’entrelacement pour fournir une meilleure distribution des erreurs et un décodage

simple et léger pour améliorer la décision du décodeur

Page 13: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 53

3.6.2) Principe de décodage

La Figure ci-dessous donne un schéma simplifié du turbo-décodeur, pour information.

Les entrelaceurs et le désentrelaceur utilisent la même permutation que l’entrelaceur du codeur. Ils permettent par exemple la comparaison de la séquence X avec la séquence Y2, entrelacée au moment du codage. Cette procédure de décodage est itérée un certain nombre de fois fixé à l’avance. La décision n’intervient qu’après. A chaque étape, le décodeur dispose des probabilités calculées à l’étape Précédente, et se base sur ces probabilités, et non sur une « pré-decision ». C’est ce qui a valu aux turbo-codes leur nom : comme dans un moteur turbo, les « gaz d’échappement » sont réutilisés pour augmenter les performances. Le message binaire est donc codé deux fois : une fois dans son ordre naturel, une seconde fois dans un ordre bouleversé. Au final, ce code composite est tout-à- fait analogue à une grille de mots croisés (voir encadré « Turbos mots croisés ») : les mots de la grille sont comparables au message d'origine tandis que les définitions horizontales et verticales sont analogues aux informations de redondance introduites par le code. La métaphore est aussi valable du côté du récepteur : un premier décodage horizontal permet de remplir certaines cases, puis un second, vertical, confirme ou remet en cause les résultats précédents tout en facilitant le remplissage des autres cases. En reprenant le décodage horizontal, le décodeur apporte de nouvelles lettres et ainsi de suite jusqu'à la convergence totale et la restitution de la grille complète. A chaque itération, il faut donc revenir sur certaines hypothèses et les pondérer d'une probabilité.

Page 14: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 54

3.6.3) Analogie avec les mots croisés

- Le rendement des codes en blocs est élevé ( > 0,9 ), celui des codes convolutionnels est assez faible malgré la technique de poinçonnage. - Les codes cycliques particulièrement les codes de Reed-Solomon corrigent des erreurs arrivant par paquets, ou par rafales ( burst ) Le code de Reed-Solomon ( 204,188,8 ) utilisé dans les normes DVB peut corriger un paquet 8 octets soit 64 bits par trame. - Si les rafales d’erreurs ont une taille supérieure à la possibilité du code, on effectue un entrelacement des bits avant le décodage : le but est de mélanger les bits pour « casser » les paquets d’erreurs. Les rafales d’erreurs peuvent être provoquées par le canal, en particulier les bruits impulsifs ( souvent dû aux interrupteurs) dans les câbles, ou par des multi-trajets dont la somme entraîne un signal presque nul. - Les avantages des codes convolutionnels sont leurs bonnes performances grâce au décodage à décision souple et leur faculté des corriger des erreurs isolées. Avec des canaux très bruités (Hertziens) pour profiter des avantages des deux types de codes, on peut les concaténer Applications des turbos-codes

Page 15: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 55

CDM-600

Addition of Turbo Codec, Low Rate to 5Mbps, FEC 3/4 Addition of Turbo Codec, High Rate to 20Mbps, additional FEC 1/2, 7/8, .95 D’autres codes se rapprochent encore plus de la Limite de shannon ce sont les codes LDPC

Page 16: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 56

3.7) Les codes LDPC (Low Density Parity Check)

3.7.1) Présentation

Les codes correcteurs d’erreurs LDPC (Low Density Parity Check) font partie des codes en bloc permettant de s’approcher de quelques fractions de dB de la limite de Shannon. Ces remarquables performances associées à leur relative simplicité de décodage rendent ces codes très attractifs pour les prochaines générations de systèmes de transmissions numériques. C’est notamment déjà le cas dans la norme de télédiffusion numérique par satellite (DVB-S2) qui utilise un code LDPC irrégulier pour la protection de la transmission des données descendantes. 3.7.2) Principe

La matrice de contrôle de parité ci-dessous est une matrice de contrôle de parité avec une dimension nxm pour un code LDPC(8,4).

Nous pouvons définir 2 nombres dans cette matrice wr pour le nombre de 1 dans chacune des lignes et wc pour les colonnes. Pour qu’une matrice soit appelée à faible densité les 2 conditions wc<<n et wr<<m doivent être satisfaite. Afin de satisfaire à ces conditions la matrice de contrôle de parité sera très large. Un code LDPC est appelé régulier si Wc est constant pour toutes les colonnes et wr=wc(n/m) est aussi constant pour toutes les lignes. La matrice suivante est régulière avec wc=2 et wr=4. Si H est de faible densité mais le nombre de 1 dans chaque colonne ou lignes ne sont pas constant le code est appelé code LDPC irrégulier. La matrice H est une matrice creuse : elle a une faible densité de valeurs de 1.

Le rendement est de R=1-(wc/wr)

Page 17: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 57

3.7.3) Exemple de matrice de contrôle de parité

n= 46 m= 23 wc=3 wr=6 Code LDPC(n,m,wc,wr)=LDPC(46,23,3, 6) Ce code LDPC est il du type régulier ? oui nombre de 1 constant pour les lignes et les colonnes Wr=3x(46/23)=6 R=1-(3/6)=0.5 Les longueurs utilisées vont parfois jusqu'à 100 0000. 3.7.4) L’encodage et le décodage

La complexité de multiplication d’un mot de code avec une matrice dépend du nombre de 1 dans la matrice. La matrice de génération de code G peut être calculée par G=[I, P]. La sous matrice P est généralement pas creuse ce qui rend l’encodage très difficile.

Exemple: Pour un code LDPC (10000, 5000). La dimension de P is 5000 x 5000. Il y a 12.5106 de 1's dans P 12,5 x106 opérations d’addition (XOR) nécessaires pour encoder un mot du code

Des algorithmes itératifs de décodage et d’encodage sont utilisés.

Page 18: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 58

3.7.5) Caractéristiques pour un code LDPC(8176,7156)

3.7.6) Comparatif avec les turbos codes

Les codes LDPC sont en grande compétition avec les codes turbo dans les systèmes de communications numériques qui demandent une fiabilité élevée. Aussi, les codes LDPC ont quelques avantages par rapport aux codes turbo :

� ils ne nécessitent pas d'entrelaceur pour réaliser une bonne performance d'erreur, � ils ont une meilleure performance par trame, leur plancher d'erreur se produit à un niveau

de BER de beaucoup inférieur, � leur décodage n'est pas basé sur un treillis et peut être réalisé par un processus parallèle. � Pour des grands taux et longueurs, les codes LDPC ont des meilleures performances

Page 19: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 59

TCM Code en treillis code convolutionnel viterbi RS reed solomon Turbo Product Coding (TPC).

Interprétation faible rapport signal sur bruit nécessaire au récepteur pour les LDPC comparé aux TPC Taux de rendement faible=efficacité spectrale médiocre Attention aux temps de latence importante lors du traitement du code LDPC (donnée temps réel critique)

3.7.7) Application

l'Ethernet à 10 GB , les réseaux locaux sans fil avec débit élevé (WLAN), DVS-S2.

Addition of LDPC Codec & 8-QAM ( NEW FEATURE! ) CDM-600

Page 20: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 60

TD sur les codes correcteurs d’erreurs

1) Code en bloc Un code cyclique utilise la matrice H définie ci-dessous :

a) Déterminez la valeur de n et de k, ainsi que le rendement du code

b) Soit [x1 x2 x3] le message et [ a1 a2 a3] les bits de contrôle de parité, en déduire

l’algorithme qui me permet de calculer a1, a2, a3 en fonction de x1, x2, x3.

c) Complétez le tableau ci-dessous :

Page 21: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 61

d) Quelle est la matrice G ?

e) Quelle est la distance de Hamming entre m1 = (11010101) et m2 = (10110101) ?

2) Code cyclique

Dans le cas d'un codage polynomial, on peut automatiser le calcul des bits de contrôle avec un circuit intégré basé sur un registre a décalage et des portes XOR. Soit le polynome G(z) = z4 + z3 + 1. a) En déduire la structure du codeur.

b) Soit le mot utile suivant : M = 10011011100 ; encoder ce mot et donnez les bits de contrôle de parité.

3) Code de Hamming On considère le code de Hamming (7, 4). Le tableau suivant indique les n−k bits de parité ajoutés au message m de longueur k pour obtenir le mot-code c:

a) En vous servant du code ci-dessus en déduire la matrice G. Rappel G = [P|Ik] telle que c = m.G

b) Donner la matrice d’encodage G = [P|Ik] telle que c = m.G. On construit ensuite la matrice de contrôle de parié H = [In−k|PT]. Montrer que HGT

= 0. Montrer également que tout mot-code valide vérifie cHT = 0.

Page 22: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 62

c) Le canal introduit des erreurs au récepteur: r = c+e. Pour toute erreur d’ordre 1, calculer la valeur du syndrome s = rHT. En déduire une règle de décodage basée sur la valeur calculée du syndrome. Le décodage est-il efficace pour des erreurs d’ordre 2?

Code de reed solomon

Soit le code de Reed solomon tel que le nombre de bit par symbole est égal à 8

a) Calculez le nombre de symbole b) Quelle sera en octet la longueur d’un paquet une fois l’encodage réalisé ?

On souhaite corriger un maximum de 3 octets (pouvoir de correction)

c) Déterminer le nombre d’octet de données dans la trame

Code convolutionnel

Application N°1

La figure suivante représente un codeur convolutionnel composé de 3 registres à décalage, deux additionneurs modulo-2 et un multiplexeur.

a) Donner le taux de code r = k/n et les fonctions génératrices g1, g2et g3 associés au codeur.

b) Pour m = {10110}, Quel sera le mot-code c produit a la sortie? Considérer que la séquence

m est complétée par deux ’0’ pour ramener le codeur à l’état initial.

Page 23: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 63

Application N°2

Un encodeur convolutionnel a les paramètres suivants :

G = [133 171] R = 1/2 K = 7

a) Calculez les polynômes générateurs de cet encodeur convolutionnel b) Complétez le schéma ci-dessous :

c) L’entrée i(X) vaut [101], déterminez la séquence en sortie du codeur après multiplexage d) En déduire le rendement du code ainsi que la longueur de contrainte.

Page 24: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 64

Page 25: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 65

Page 26: On ajoute au message à émettre un code de contrôle tel le

Introduction aux télécommunications 08/05/2013

PAGE PETITPA 66