Redondance et fiabilité
Tous les codes correcteurs subissent une contrainte du même ordre. Si le message contient une information modifiée, une information supplémentaire est nécessaire pour, soit détecter l’erreur, soit la corriger. Le message transmis, appelé code est plongé dans un espace plus vaste, le cas d’un code sans redondance est illustré à gauche. Si un message en vert subit, lors de sa transmission, une altération, alors un nouveau message en rouge est transmis. Aucune information ne laisse supposer qu’une erreur a été commise. Pour pallier cet état, l’objectif est d’entourer les messages licites ou les vrais messages, correspondant aux intersections des quadrillages sur les figures, par des messages connus pour contenir des erreurs, et de réaliser la transmission après. Ces redondances sont illustrées sur la figure de droite par les intersections du quadrillage orange. Si une unique erreur se produit, alors le message transmis correspond à un point rouge. Si la redondance a été habilement construite, alors il n’existe qu’un point licite en vert proche du point rouge reçu. Un code correcteur propose une géométrie où les messages licites sont le plus possible éloignés les uns des autres. Les boules centrées sur les bons codes, si elles ne s’intersectées pas alors elles permettent de retrouver le bon message, correspondant à son centre. Une perturbation, tant qu’elle reste suffisamment petite pour ne pas faire sortir le code de sa boule est corrigible. Les points noirs ne sont d’aucune utilité. Il est nécessaire de parcourir deux segments du quadrillage pour relier un point noir d’un point licite. Le code correcteur illustré engendre alors une ambiguïté. En effet, tous les points rouges sont à une distance de deux segments de deux points verts, une double erreur n’est donc généralement pas corrigible. Les points noirs présentent une redondance inutile.
La longueur des mots de code n
Dans les codes, le message est codé en mots de longueur « n ». Le but est d’envoyer des blocs de messages relativement grands car dans ce cas, le nombre d’erreurs se rapproche de son espérance, ce qui implique que la probabilité d’erreurs est meilleure. Cependant, au niveau du décodeur, si la complexité de l’algorithme de décodage est en On, il faut que « n » soit petit afin que le décodage ne soit pas trop long.
Choix des codes
Pour former un système concaténé, il faut bien choisir le code externe et le code interne après avoir pensé le type de démodulation et la stratégie de protection à utiliser. Le choix d’un code est en fonction de certains paramètres comme :
• La distance minimale d = 2t+1, où 2t permet de savoir le nombre maximum t d’erreurs corrigibles par mot.
• Le polynôme de poids qui permet de connaître l’efficacité du code.
• Le taux de redondance qui est généralement limité dans les applications.
• Le type de codage utilisé qui est systématique ou non.
• Temps d’attente pour avoir le premier mot décodé.
• Débit, coût et volume électronique, architecture, longueur des blocs d’information, gain à 10-5.
• Comptabilité ou non avec la cryptographie.
• Complexité de l’électronique du codeur et du décodeur.
Généralité sur Matlab [10][11][12][13]
MATLAB ou Matrix laboratoire est un langage de calcul scientifique très performant intégrant le calcul, la programmation et la visualisation dans un environnement simple à utiliser. C’est un système interactif qui permet de manipuler directement des données structurées (matrices et vecteurs).
Environnement MATLAB est à la fois un langage et un logiciel. Il possède une fenêtre de commande et un éditeur de programme (M-files). Dans l’éditeur de programme, plusieurs fenêtres peuvent être ouvertes à la fois. Un éditeur de figure est aussi disponible pour les graphiques.
Principe du help/démo Le help de MATLAB est très bien adapte à l’auto-apprentissage autant théorique (documents pdf)que pratique (help topic ) sur le langage, les fonctions disponibles et les techniques qu’il comporte(notamment grâce à ses toolboxes).Taper la commande help permet d’afficher tout le contenu de MATLAB, c’est-à-dire les familles de fonctions qu’ il comporte. Taper help famille affiche toutes les fonctions qui appartiennent à la famille en question et help fonction donne la définition de la fonction, ses options et sa syntaxe.Une documentation pdf plus élaborée est aussi disponible et accessible par la commande HelpDesk. Cette documentation comporte des supports théoriques pour la plupart des techniques offertes par MATLAB notamment via les toolboxes. On pourrait y trouver par exemple des coursthéoriques et pratiques sur le traitement du signal, la logique floue, les réseaux de neurones, les ondelettes, ect…
Les fonctions préprogrammées de Matlab MATLAB est doté d’une collection de fonctions (m-files) préprogrammées spécifiques à des domaines aussi variés que les statistiques, le traitement du signal et d’image, la logique floue, les réseaux de neurones, les ondelettes, … et qui permettent de résoudre un bon nombre de problèmes relatifs à ces domaines. Pour visualiser ces fonctions, il suffit de taper help suivi du non de la famille à laquelle appartient la fonction. Pour connaître le nom de ces familles taper sur help.
Programmation Toutes les instructions permises par MATLAB peuvent être lancées à partir de la fenêtre de commande, il suffit d’écrire ces instructions en respectant leur syntaxe et de taper la touche « enter » pour valider. Si nous avons un nombre très réduit d’instructions à exécuter, il est en effet possible de les écrire directement dans cette fenêtre de commande. Toutefois, le plus souvent nous avons besoin d’écrire des programmes assez longs et surtout de sauvegarder ces programmes. L’éditeur de programmes ou de fichiers d’extension .m est fait pour cela. Pour l’activer, aller dans le menu file et cliquer sur open pour ouvrir un fichier existant ou bien sur new puis M-file si on veut créer un nouveau fichier .m. Pour lancer un programme, on peut soit à partir de la fenêtre de programme faire « debug » suivi de « run » ou bien écrire carrément le nom du programme dans la fenêtre de commande suivi de « enter ».
CONCLUSION GENERALE
Les codes correcteurs d’erreurs permettent de réduire la puissance moyenne du signal reçu pour garantir un taux d’erreur binaire donné. Ceci entraîne soit une réduction de la puissance moyenne du signal émis, soit une augmentation de la distance de l’émetteur ou du récepteur. La performance du turbo-code s’approche de celle de la théorie avec l’augmentation de la taille de l’entrelaceur, du nombre d’itérations et aussi du nombre d’états du codeur. Ceci entraîne par conséquent une augmentation considérable de la complexité. Néanmoins le décodage itératif permet de décoder un turbo-code de façon optimale avec une complexité moyenne. Dans la simulation d’un turbo-code de rendement ½ et avec une taille de l’entrelaceur N=65535, on s’approche de la limite imposé par Shannon de 0.5 dB. C’est à dire qu’on a besoin de 0.5dB supplémentaire pour atteindre un taux d’erreur binaire égal à 10-5 par rapport à la valeur du rapport signal à bruit théoriquement nécessaire. On peut améliorer la performance du turbo-code en optimisant soit le design de l’entrelaceur, soit le code constituant en choisissant par exemple un code à 64 états ou à 256 états. Mais ceci accroît considérablement la complexité du décodeur ainsi que le temps de décodage, qui sont proportionnels au nombre d’états, d’itérations et de la taille de l’entrelaceur utilisé .Par conséquent ce format est inadéquat aux communications audio en temps réel. C’est dans ce sens que nous avons choisi un turbo-code avec un taux de codage moins élevé (de l’ordre de 33% ou R=1/3 , mais qui s’adapte très bien aux communications radio mobiles (UMTS ,GSM) .L’avantage de ce type de turbo-code : il n’est pas nécessaire d’effectuer un grand nombre d’itérations, et puis la taille de l’entrelaceur utilisée est beaucoup moins grande.Ce qui amène à une possibilité de simplifier l’algorithme de décodage et ainsi de réduire la complexité du décodeur. La concaténation parallèle des codes convolutifs, combinée au décodage itératif à entrée et sorties souples est un très bon moyen pour protéger l’information avec une complexité raisonnable.C’est un excellent moyen pour s’approcher de la capacité à très faible rapport signal à bruit.Les turbo-codes sont maintenant devenus incontournables dans les transmissions numériques et leur utilisation est préconisée dans de plus en plus de normes (CDMA, UMTS,…).
|
Table des matières
REMERCIEMENTS
AVANT-PROPOS
NOTATIONS
INTRODUCTION GENERALE
CHAPITRE I: GENERALITES SUR LA THEORIE DE L’INFORMATION ET DE CODAGE
Introduction [3] [5]
1.1- Théorème de Shannon [3
1.1.2- Premier théorème de Shannon
1.1.3- Deuxième théorème de Shannon
1.2- Théorie de l’information et de codage [3] [5]
1.2.1- Définition de la théorie de l’information [5]
1.2.2- Définition de la théorie de code [3]
1.2.3- Buts
1.2.4- Mesure quantitative de l’information [5]
1.2.5- Définition de l’entropie
1.2.6- Définition de l’information mutuelle [5]
1.2.7- Débit de symbole
1.3- Canal de transmission [3][5]
1.3.1- Définition d’un canal discret sans mémoire [3][5]
1.3.2- Caractéristiques d’un canal de communication [5]
1.3.2.1- Bande passante
1.3.2.2- Capacité d’un canal ou débit maximale
1.3.2.3- Signal sur bruit « SNR » ou « Eb/No »
1.3.2.4- Taux d’erreur binaire ou « TEB »
1.3.2.5- Temps de propagation et temps de transmission
1.3.2.6- Les bruits
1.3.3- Canal de transmission classique [4][5]
1.3.3.2- Codage source
1.3.3.4- Codage canal
1.3.3.4- Modulateur
1.3.3.5- Canal de transmission
1.3.3.6- Démodulation
1.3.3.7- Décodage canal
1.3.3.8- Décodage source
CHAPITRE II: LES CODES CORRECTEURS D’ERREURS
2.6- Introduction [4][5][6][7][8][9]
2.1- Définition d’un code correcteur
2.2- Redondance et fiabilité
2.3- Caractéristiques d’un code
2.3.1- La longueur des mots de code n
2.3.2- Le rendement ou taux de codage ou « rate »
2.3.3- La probabilité d’erreurs du code
2.3.4- La complexité de l’algorithme d’encodage et de décodage
2.4- Classification des codes correcteurs [6]
2.5- Les codes convolutifs [4][5][6][8][9
2.5.1- Définitions [9]
2.5.2- Représentation en Treillis [9]
2.5.3- Diagramme d’états [8]
2.5.4- Catégories du code convolutif [8]
2.5.5- Algorithme de Viterbi [9]
2.5.6- Distance libre [9]
2.6- Les codes concaténés [4][5][6]
2.6.1- Types de concaténations
2.6.2- Principe de la concaténation
2.6.3- Choix des codes
2.7- Code en bloc [4][5][7]
2.7.1- Notion d’algèbre [7]
2.7.2- Définition d’un code en bloc [7]
2.7.3- Code en bloc linéaire
2.7.4- Les codes cycliques [4][5][6][7]
2.7.5- Les codes BCH ou « Bose, Chaudhuri, Hocquenghem » [6][7]
2.7.6- Les codes Reed-Solomon (R-S) [6][7]
2.7.6.1- Définition
2.7.6.2- Construction du code
2.7.6.3- Utilisations
CHAPITRE III: LES TURBO-CODE
3.1- Définition [2][5]
3.2- Structure [2][5]
3.2.1- Les turbo-codeurs séries [2][5]
3.3.1- Les turbo-codeurs parallèles [2][5]
3.3- Entrelacement [5]
3.3.1- Entrelaceur ligne – colonne
3.3.3- Entrelaceur pair/ impair
3.4- Propriétés des Turbo codes
3.4.1- Propriétés de la concaténation série [2][5]
3.4.2- Propriétés de la concaténation parallèle [5]
3.5- Le décodage itératif des turbos-codes [2] [5]
3.6.1- Décodage SISO [2][5]
3.6.2- Application du décodage SISO aux turbo-codes [2][5]
CHAPITRE IV :SIMULATION DU TURBO-CODE PARALLELE SOUS MATLAB
4.1- Géneralité sur Matlab [10][11][12][13]
4.2- Présentation du logiciel de lancement
CONCLUSION GENERALE
ANNEXE
BIBLIOGRAPHIE
RENSEIGNEMENTS
RÉSUMÉ
ABSTRACT
Télécharger le rapport complet