COMPTE-RENDU Du TP De CODAGE CANAL 1
I- Introduction De nos jours, la transmission de données numériques (internet, téléphones portables...) est omniprésente. Le principal problème réside dans le fait que l es communications ne sont jamais parfaites. Quel que soit le canal utilisé, des erreurs de transmission se produisent inévitablement. On peut envisager deux types de solutions pour s assurer de l intégrité des données transmises : On peut agir sur le canal de transmission. L objectif est de rendre le taux d erreur négligeable. Cela Implique de remplacer les infrastructures existantes mais c est inconcevable. De plus le taux d erreur nul n existe pas. On peut agir sur le message transmis. L objectif est d être capable de détecter si des erreurs de transmission ont eu lieu, et éventuellement de les corriger. C est le principe des codes correcteurs d erreurs. I- Code en bloc linéaire C(7,4) Les codages linéaires sont explicités par la donnée d une matrice génératrice. On considère ici la matrice génératrice G telle que Dans un premier temps, nous testerons la transmission d un message sans générer aucun bruit (canal supposé parfait). II-1 Test sans bruit Ce test consiste en le codage d une suite aléatoire de bits (ici ) en utilisant un code en bloc linéaire avec k=4 et n=7, et dont la matrice génératrice est la matrice G décrite plus haut, sans que le message ne soit altéré par le bruit lié à sa transmission sur le canal. En utilisant les fonctions encode() et decode() sur Matlab, encode(b,n,k,'linear/fmt',g); on obtient bien les deux mêmes séquences, avant codage et après décodage. 2
II-2 Test avec bruit Dans un second temps, nous testons la transmission de la séquence aléatoire de 100 bits codée sur un canal AWGN, c est-à-dire en prenant en compte un bruit blanc gaussien. Puis nous décodons le signal reçu. Nous décidons de transmettre une séquence aléatoire de 100 bits sur le canal AWGN jusqu à observer 100 erreurs accumulées afin de caractériser au mieux ce phénomène d altération de la séquence de bits. Les courbes suivantes présentent l évolution du taux d erreur binaire théorique et expérimental pour une suite de bits codée et non codée en fonction du rapport signal sur bruit. On peut remarquer que les courbes théorique et expérimentale du BER pour la séquence non codée se superposent. Les courbes théorique et expérimentale du BER pour la séquence 3
codée ont la même allure. L écart entre elles s explique par le facteur k/n, non pris en compte dans notre calcul. II- Code cyclique C(7,4) L'objectif du code cyclique est la correction automatique de certaines altérations de message. La technique utilisée consiste à «plonger» le message dans un espace plus vaste pour disposer d'une redondance. On reprend le programme implémenté précédemment pour un code en bloc linéaire en modifiant deux arguments de la fonction encode() : encode(b,n,k,'cyclic/fmt',cyclpoly(7,4)); cyclic/fmt pour préciser le type de codage et cyclpoly(7,4) pour le polynôme générateur du code cyclique de degrés n-k. On obtient les courbes de probabilités d erreur avec et sans codage cyclique suivantes. 4
On peut noter que pour un BER cible de le gain sur le rapport apporté par l ECC dans la chaîne codée vaut environ 2 db alors que celui dans la chaîne non codée vaut environ 4.2dB soit une différence d au moins 2 db. III- Code convolutif C (3,1/2) Les codes convolutifs constituent une seconde famille de codes correcteurs d'erreurs au moins aussi importante que les codes en blocs cycliques. Pour les codes convolutifs, chaque bloc de n éléments binaires en sortie du codeur dépend non seulement des k éléments binaires présents à son entrée mais également des m blocs précédents. Les codes convolutifs introduisent donc un effet de mémoire d'ordre m. Le rendement est ici de ½ (rendement du GSM). Chaque bit codé correspond donc à une combinaison linéaire des bits du registre. Les rebouclages sont spécifiés grâce à deux polynômes binaires: ici on considère les polynômes générateurs 5 et 7 en octal. En adaptant le programme précédent au code convolutif, on obtient les courbes de probabilité d erreur avec et sans codage suivantes. 5
IV- Code Reed-Solomon RS(255,239) Le code de Reed-Solomon est un code correcteur dont le principe est de construire un polynôme formel à partir des symboles à transmettre et de le suréchantillonner. Le résultat est alors envoyé, au lieu des symboles originaux. La redondance de ce suréchantillonnage permet au récepteur du message encodé de reconstruire le polynôme même s'il y a eu des erreurs pendant la transmission. En adaptant le code Matlab, on obtient les courbes de probabilité d erreurs avec et sans codage suivantes. 6
V- Conclusion A rendement égal, un code est d'autant plus efficace qu'il est long. On peut également conclure quant à l utilité du codage des séquences de bits, au vu des courbes de BER relatives aux différents types de codages. 7