Você está na página 1de 8

Correction TD de réseau no1

Cours d’architecture des réseaux


—Master d’informatique—

Codage
Les exercices présentent quelques notions élémentaires de codage.

x Exercice 1. Codage et débit


L’objectif de l’exercice est de calculer le débit théorique maximal d’une ligne
téléphonique. Les électroniciens expriment en décibels (dB) la part de bruit dans un
signal reçu (rapport S/B). Les décibels sont une unité logarithmique : quand x croit
exponentiellement, (x)dB (en décibel) croit linéairement. Cette conversion d’une valeur
sans unité en décibel est réalisée en appliquant la formule (x)dB = 10 log10 (x).
Sachant que dans le cas d’une ligne téléphonique (S/B)dB = 30dB , quelle est la
part du bruit dans le signal reçu ?


Un rapport signal/bruit de 30dB signifie que log 10 (S/B) vaut 3, donc S/B = 1000. Le bruit
fait donc varier le signal original d’un millième en moyenne.

Nyquist puis Shanon ont étudiés dans la première moitié du 20e siècle le débit de
transmission des supports bruités. La formule Dbits/s = FHz log2 (1+S/B) donne le débit
binaire maximal d’un canal bruité. Dans cette formule, F désigne la bande passante
en Hertz utilisable dans le canal. Les fréquences audibles par un être humain varient
de 20 à 20000Hz. Cependant dans une transmission téléphonique seules les fréquences
allant de 300 à 3400Hz sont conservées. Calculez le débit maximal théorique d’une
ligne téléphonique.


En appliquant la formule de Shanon on trouve D = 30kbit/s. Ce débit est très difficile à
atteindre en pratique.

1
Comparez le débit obtenu avec le débit de 56kbits/s, affiché par les modems actuels.
Essayez d’expliquer.


Pour atteindre un débit de 56kbits/s les modems actuels font une compression avec un gain
de 2 au maximum. Encore une fois, c’est un débit maximum, difficile à atteindre en pratique.
Les modems sans compression ont un débit de 28, 8kbit/s.

x Exercice 2. Codage binaire


On veut faire communiquer deux machines électroniques par l’intermédiaire d’un fil
électrique. On dispose pour cela d’un peu de matériel : des composants pouvant fournir
une tension de plus ou moins T volts et une horloge de fréquence f . Les deux machines
doivent s’envoyer des suites binaires. Proposer des codages de ces suites en fonction
des propriétés du canal et du matériel fourni.


Codage NRZ de 1 par +T volts, de 0 par −T volts, ou inversement par exemple (NRZI).

Dans la vie réelle les composants électronique ne peuvent fournir une tension donnée
que pendant un temps limité (court).
Quels sont les problèmes que cela pose pour le codage ?


Cela pose des problèmes pour le codage d’une longue suite de valeurs identiques.

Comment les résoudre ?


Pour résoudre ce problème, il est possible d’utiliser un codage qui impose que toute suite
de k bits identiques (mettons de 1) soit suivie par un bit opposé (donc 0). k est choisi en
fonction du nombre de bits identiques consécutifs que peuvent transmettre les composants.
Par exemple, si k = 3 et qu’on veut transmettre 1111111 on transmet 111011101. Si on veut
transmettre 111011101 on transmet 11100111001. Une autre solution consiste à placer dans
le canal, tous les k bits, le bit opposé du bit qu’on vient de transmettre.

2
Un autre problème apparaı̂t lorsque l’horloge n’est pas transmise sur un canal
séparé : les horloges n’ont pas toutes exactement la même fréquence. Quels sont les
problèmes que cela pose pour le codage ? Comment les résoudre ?


Un solution consiste à utiliser la codage Manchester ou Manchester différentiel, mais cela
nécessite une horloge deux fois plus rapide que dans le cas d’un codage NRZ. Notez que cette
solution résout également le problème précédent.
Codage Manchester : 1 : front descendant, 0 : front montant.
Codage Manchester différentiel : 1 : abscence de front au début du temps bit, 0 : front
au début du temps bit. Un peu plus complexe que Manchester, mais offre une meilleure
protection contre les parasites (Tanenbaum p 103).

x Exercice 3. Codes
Les ensembles de mots {1, 00, 01, 10}, {0000, 0011, 1100, 1111} et
{00, 01, 11, 101, 1001, 1000} sont-ils des codes ?


L’ensemble {1, 00, 01, 10} n’est pas un code car 101 = 1 01 = 10 1.
L’ensemble {0000, 0011, 1100, 1111} est un code car tous les mots de l’ensemble ont la même
longueur.
L’ensemble {00, 01, 11, 101, 1001, 1000} est un code car aucun des mots de l’ensemble n’est
préfixe d’un autre mot du code.

x Exercice 4. Détection d’erreurs avec code de taille fixe


Quelle est la distance de Hamming du code {0000, 0011, 1100, 1111} ?


La distance de Hamming du code est 2.

Supposons que l’on dispose d’un canal bruité dont on sait que sur n bits certains
peuvent comporter des erreurs (valeur changée) à cause du bruit sur le canal.

3
Donner une méthode qui, si exactement une erreur s’est produite pendant la trans-
mission de n bits, permet au récepteur de la détecter.


Ajouter un bit de parité après n − 1 bits.

Quelle est la distance de Hamming de votre code ?


La distance de Hamming de ce code est 2 car si l’on change un bit quelconque d’un mot il
faut aussi changer le bit de parité pour que cela soit un mot du code.

Combien y a-t-il de mots dans votre code ?


Il y en a 2n−1 .

Que se passe-t-il s’il y a plus d’une erreur ?


S’il y a plus d’une erreur, plus précisément un nombre pair d’erreurs, il est possible que le
mot erroné corresponde à un autre mot du code et donc que l’on ne détecte pas d’erreur.

Les erreurs proviennent de perturbations du canal et sont rarement isolées. Les


erreurs surviennent donc par rafales. Une rafale d’erreur de longueur k est une suite de
k bits dont certains peuvent éventuellement être faux. Donner une méthode utilisant
les bits de parité pour transmettre des suites de n bits avec possibilité de détecter des
rafales de k erreurs.


Une méthode consiste à placer les données à émettre dans une matrice en les entrant ligne
par ligne, à calculer un bit de parité pour chaque ligne, puis à émettre les données colonne
par colonne. Ainsi, une suite d’erreurs suivant les colonnes, les erreurs seront réparties sur les
lignes.

4
Quelle doit être la distance de Hamming minimale d’un code détecteur de k erreurs ?


La distance de Hamming minimale doit être k + 1 (cf. cours).

x Exercice 5. Code de Redondance Cyclique


On utilise pour une transmission avec détection d’erreurs un Code de Redondance
Cyclique (CRC) de polynôme générateur x4 + x + 1. L’émetteur veut émettre la suite
1101011011. Quelle suite va effectivement être mise dans le canal ?


11010110110000
10011
-----
1001110110000
10011
-----
10110000
10011
-----
101000
10011
-----
1110

La suite effectivement transmise sera donc 11010110111110


Prouvez que si la factorisation du polynôme générateur d’un CRC comporte x + 1


alors le CRC détecte un nombre impair d’erreurs.


On note P (x), G(x) et E(x) respectivement le polynome envoyé, le polynôme générateur de
degré n et le polynôme correspondant à l’erreur. On a (1)

P (x) = 0 + . . . + 0 ∗ xn−1 + Q(x) ∗ G(x)

5
. Raisonnons par l’absurde. Supposons que l’erreur ne soit pas détectée. Ça signifie que (2)
P (x) + E(x) = 0 + . . . + 0 ∗ xn−1 + Q0 (x) ∗ G(x). Le nombre de termes dans E(x) étant impair
(nombre d’erreurs), E(1) = 1. Par contre, comme G(x) a pour facteur x + 1, G(1) = 0 et
donc, P (1) = 0 d’après (1) et donc d’après (2), E(1) = 0 d’où la contradiction.

x Exercice 6. Codes correcteurs de taille fixe


Lorsqu’une erreur survient au cours de la transmission d’une suite de bits, si la trans-
mission utilise un code dit correcteur, le destinataire a la possibilité de corriger lui-
même l’erreur sans redemander la retransmission de la suite à l’émetteur. Donner des
exemples d’utilisation où on préférera des codes correcteurs aux codes détecteurs ou
inversement.


Au niveau du débit de données, si le sur-coût, en nombre de bits, du code correcteur par
rapport au sur-coût des retransmissions est faible on préférera, en général, un code correcteur
à un code détecteur. Toutefois, si l’application à des contraintes de délai, on préférera un code
correcteur plutôt qu’une retransmission.
Dans les réseaux locaux, seuls les codes détecteurs sont utilisés, les codes correcteurs sont
plutôt utilisé pour le stockage. En effet, les erreurs sont rares et les applications qui ont des
contraintes de délai (temps réel) comme la vidéo ou la téléphonie supporte la perte d’une
trame.

Proposez un code permettant de corriger une erreur de transmission d’un groupe


de bits disposés en matrice. On pensera à utiliser des bits de parité.


Placer ajouter un bit de parité pour chaque ligne et chaque colonne.

Quelle doit être la distance de Hamming minimale d’un code correcteur de k er-
reurs ?


La distance de Hamming minimale pour un tel cours est 2k + 1 (cf. cours).

6
Discutez les propriétés de détection d’erreur d’un tel code.


Un code k correcteur permet de détecter 2k erreurs.

On veut transmettre dans un canal bruité des suites de m bits en utilisant un code
permettant de corriger k erreurs. En comparant le nombre le nombre d’erreurs sur
chaque code au nombre de valeurs qui peuvent être codées par un suite de n bits,
donner une inégalité que doit respecter le nombre de bits de contrôle ?


Soit r le nombre de bits de contrôle recherché. Le nombre total de bits du code (m + r)
permet de coder 2m+r valeurs différentes. Pour être sûr de pouvoir corriger les erreurs, il faut
que pour toute valeur x à coder, le code de x et toutes ses erreurs soient distincts de ceux
d’une autre valeur y. Ainsi, sachant qu’il y a 2 m valeurs à coder, que pour le code d’une de
m+r

ces valeurs il y a i valeurs contenant i erreurs et qu’il peut y avoir entre 0 et k erreurs
de transmission.
0n a
X k
2m (1 + m+r
) ≤ 2m+r

i
i=1

Rappelons que
n!
(m
p )=
(n − p)!p!

Théoriquement, combien faut-il ajouter, au minimum, de bits de contrôle pour


transmettre 7 bits d’information utile avec une capacité de correction de 1 bit ?


La formule pour k = 1 et m = 7 devient : 1 + (7 + r) ≤ 2 r . Sachant que 8 = 23 , on obtient
par essais r = 4.

x Exercice 7. Code correcteur de Hamming

7
Le code correcteur de Hamming le plus courant utilise des bits de contrôle aux positions
2i (1, 2, 4, etc.). Dans ce code, si r est le nombre de bits de contrôle, la valeur du bit de
Pr−1
contrôle à la position 2i est égale à la somme des bits dont la position s’écrit j=0 bj ∗2j ,
avec bi = 1 et bj6=i ∈ {0, 1}. Par exemple, pour le bit de contrôle 2 = 21 (i = 1), si
r = 3 alors la valeur du bit à la position 2 est égal à la somme des bits aux positions
3 = 1 ∗ 20 + 1 ∗ 21 , 6 = 1 ∗ 21 + 1 ∗ 22 et 7 = 1 ∗ 20 + 1 ∗ 21 + 1 ∗ 22 .
On utilise un tel code correcteur de Hamming 7/4 (on transmet 7 bits utiles avec 4
bits de contrôle) pour transmettre 1100001. Quelle est la suite effectivement transmise ?


??1?100?001
-----------
? 1 1 0 0 1 = 1
?1 00 01 = 0
?100 = 1
?001 = 1

La suite effectivement transmise est 10111001001


Sachant que la valeur reçue : 10110001001, contient une seule erreur, retrouver où elle
a eu lieu et la suite de bits initialement transmise.


Bien sûr on ne dispose pas de la valeur originale, il faut donc retrouver la position de l’erreur
à partir de la valeur reçue !

10110001001
-----------
1 1 0 0 0 1 = 1
01 00 01 = 0
1000 = 1
1001 = 0

L’erreur se trouve à la position 20 + 22 = 5 et la suite de bit initial est la précédente.


Você também pode gostar