Vous êtes sur la page 1sur 5

AU.

2022-2023

2éme Année TIC-IoT

TP N° 3 en Théorie de l’Information

Codage Canal

I- Objectif
L’objectif de ce troisième TP est de comprendre le principe des algorithmes de codage canal, en particulier les
codes à contrôle de parité.
II- Principe de codage canal
Les codes utilisés en communication peuvent corriger ou simplement détecter les erreurs de
transmission, suivant le taux de redondance des bits de contrôle de parité. 1l existe donc des codes
correcteurs d’erreur de types très divers, tels que les codes à contrôle de parité linéaire, les codes
cycliques et les codes convolutifs. Nous allons parler ici des codes à contrôle de parité.

1. Codes à contrôle de parité


Dans le cas des codes à contrôle de parité linéaire, il est commode de représenter le mot codé d’un
codage par blocs (n,k) sous forme d’une matrice. Le mot codé est une ligne de la matrice dont les
éléments sont les symboles du code. On peut représenter un vecteur code ‘c’ et un vecteur données
‘d’ de la façon suivante :

Si les k premiers bits d’un mot codé sont des bits de données, on dit que le code est systématique.
Dans le cas d’un codage systématique à contrôle de parité, les k premiers bits sont des bits de données
tandis que les m = n - k suivants sont des bits de contrôle de parité formés par combinaison linéaire
des bits de données :

Eq. 1

où + indique l’addition modulo 2.


La relation (1) peut s’écrire sous la forme matricielle qui suit :

1
Eq. 2

où l’on a :

Eq. 3

expression dans laquelle Ik est la matrice unité d’ordre k et PT est la matrice transposée de la matrice
des coefficients P ayant pour expression :

Eq. 4

La matrice G de dimensions k x n est appelée matrice génératrice. Le code (ensemble complet des
mots codés) engendré par la relation (1) ou (2) est appelé code à contrôle de parité linéaire.

2. Matrice de contrôle de parité


Soit H la matrice de dimension m x n ayant pour définition :

Eq. 5

où m = n - k. On a alors :

Eq. 6

ainsi que

Eq. 7

où l’on a reconnu dans 0 la matrice nulle de dimension k x m. Une postmultiplication par H des deux
membres de la relation (2) et l’utilisation de la relation (7) permet d’obtenir :

Eq. 8

La matrice H est appelée matrice de contrôle de parité du code considéré et la relation (8) est appelée
relation de parité.

2
III- Manipulation du codage source avec Matlab

1. Génération d’un code


- Déterminer l’expression théorique de la matrice G qui génère le code C à partir du message M:
C=tG.M.
- Exécuter le programme ci-dessous et relever les matrices G et H dans la fenêtre de commande.

- Relever de la même manière la valeur de G’ (=tG).


- Relever la valeur de C dans la fenêtre de commande.
- Justifier ce résultat en calculant les bits de parité.
- Comparer les vecteurs C1 et C2.
· Comparer les vecteurs M et R0.

2. Syndrome et correction

Le vecteur de syndrome est facilement obtenu avec le produit matriciel Z=H.C.


- Exécuter le programme ci-dessous et relever la valeur de Z dans la fenêtre de commande.
Commentaires.

Nous simulons l’occurrence d’une erreur sur chaque bit du message codé C1 ou C2 avec le programme
suivant.

3
- Quelle est l’opération réalisée à la ligne 20 ?
- Que représente le vecteur Z à chaque itération ?
- Quelle est la différence entre les lignes 20 et 23 ?
- Exécuter frag3 et relever la valeur de la matrice Zn dans la fenêtre de commande.
- Comparer Zn et H. Que représente chaque colonne de cette matrice ?
- Supposons l’arrivé du code C=t[1 1 1 1 0 1 1] avec une erreur évidente en b2 que nous souhaitons
intercepter au moyen de frag4. Désignons le code corrigé par C_corrected.
- Quelle est la valeur enregistrée par test (ligne 31) ?
- Compléter la ligne 34 et exécuter frag4. ?
- Relever les sorties C, Z, i, C_corrected et R dans la fenêtre de commande. Commentaires.
- Validation de Q0 et Q4.

3. Correction par table de décodage

Nous souhaitons ici tabuler la position d’une erreur dans les lignes d’une matrice P(n+1,n) dont la
première ligne, composée uniquement de zéros indiquera naturellement l’absence d’erreur.
Exécuter le programme ci-dessous et relever les valeurs du scalaire z10. Comparer ces résultats aux
valeurs de chaque colonne de Zn convertie en binaire. (se reporter à la rubrique de help sur bi2de(.)…)

4
- Relever la matrice T en sortie de la fonction syndtable(.) de MATLAB. Comparer ce résultat avec
P.
- Nous nous plaçons à nouveau dans le cas de l’arrivé du code C=t[1 1 1 1 0 1 1] présentant la même
erreur en b2. Corrigeons cette erreur avec frag6.

- Exécuter ce programme et relever toutes ses sorties dans la fenêtre de commande.

Vous aimerez peut-être aussi