Vous êtes sur la page 1sur 27

M1: S.TLC et R.

TLC- Codage et compression Chargé de cours : Mme Guebgoub

Chapitre III : Codage du canal


Introduction:
I. Schéma général de communication et canal de transmission

Structure d'une chaîne de télécommunications numérique


La chaîne de télécommunication est formée principalement de :
1. Le canal (ligne, câble coaxial, guide d’onde, fibre optique, lumière infrarouge, canal hertzien,
etc.).
2. L’émetteur, qui a comme fonction de fournir un signal (représentant le message) adapté au canal.
3. Le récepteur dont la fonction est de reconstituer le message après observation du signal présent
sur le canal.
II. Canal de transmission
Un canal de transmission reçoit un message d'entrée et restitue un message de sortie. D'un point de
vue abstrait nous le considèrerons comme une entité qui fait le lien entre deux alphabets :
X Y. Selon le cas à traiter, on définit deux principaux modèles de canaux, le canal discret et
le canal continu à bruit blanc additif Gaussien (BBAG). Si le canal est sans mémoire, la réception
d’un symbole (ou échantillon « analogique ») à un instant donné ne dépend que de l’émission de
celui-ci : il n’y a pas d’ « Interférence-Entre-Symboles ».
II.1. Type de canaux :
II.1.1. Canal discret :
Le canal discret est le plus simple des canaux de transmission.

1
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

X : entrée du canal à symboles N-aire, d’alphabet fini Ax={x1,…, xN},


Y : sortie du canal à symboles M-aire, d’alphabet fini Ay={y1, …, yM}. En général M > N
Le bruit se modélise comme une probabilité conditionnelle de Y sachant X , indépendante du
temps.
La matrice de transition Π =[p(yj|xi)], taille N x M (N lignes et M colonnes) caractérise le canal :

II.1.2. Canaux continus - canal à Bruit Blanc Additif Gaussien


Il existe une classe de modèles de canaux, appelé canaux continus, beaucoup plus proche des
canaux physiques, dans lesquels l'entrée et la sortie sont des fonctions continues du temps.
L'ensemble Modulateur-canal-Démodulateur peut être considéré comme un canal discret dont
l'alphabet d'entrée est {a1,...,ai} et l'alphabet de sortie{b1,...,bj}.
L'étude des canaux discrets nous permettra donc de déduire des résultats sur les canaux continus.

Canal continu et canal discret


II.2. Capacité et efficacité du canal
II.1.1. Capacité d’un canal:

2
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

La capacité d'un canal de transmission est définie comme étant la quantité maximale d’information
pouvant transiter à travers le canal.
C = max I(X,Y) = max[H(X) - H(X / Y)] = max[H(Y) - H(Y/X)] bit/symbole
Pour un canal symétrique, H(Y/X) ne dépend pas de la distribution P(xi)
C = max [I(X,Y)] = max [H(Y)] – H(Y/X)
II.2.2. L'efficacité :
L'efficacité d'utilisation du canal est :
I( X , Y )
c 
C
Ainsi, on a la relation suivante: c  1   c  c  1
III. Codage canal et deuxième théorème de Shannon:
L’objectif du codage de canal est de protéger les données issues du codage de source contre les
erreurs de transmission pouvant se produire sur le canal de transmission. Il consiste à ajouter des
bits pour permettre le contrôle et éventuellement la correction des erreurs.
III.1. Théorème de Shannon pour canaux à perturbation :
Pour une source à débit d'information de R bit/s et un canal de capacité C bit/s, si R<C, il existe un
code ayant des mots de longueur n, de sorte que la probabilité d'erreur de décodage pE soit
minimale.
III.2. Nature des codes :
On distingue deux grands types de code : Les codes détecteurs d’erreur et les codes détecteurs et
correcteurs d’erreurs.

III.3. Codage correcteur d’erreurs


III.3.1. Codes de blocs :
Les symboles générés par la source sont traités par blocs de m bits.
Le codeur de canal associe à chaque bloc de m bits, un nouveau bloc de n bits (n>m) contenant n-m
bits de redondance (bits de contrôle (k = n-m).)

3
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

Avec 2n >2m donc un certain nombre de mots de code ne correspondent pas à un message mais
seulement à des erreurs de transmission.
Le code de bloc: C (n,m) a un rapport du code Rc : Taux de codage : Rc=m/n.
Taux d’erreur :

III.3.2. Distance de Hamming :


La distance de Hamming dij entre deux mots de code est le nombre de bits dont ils diffèrent.
dH (u,v)= PH (u+v) le poids de leur vecteur somme. où le poids de Hamming = le nombre de bits
non-nuls
Ex : vecteurs binaires u et v (11001000 et 10011010 ) ;
c = u+ v = [01010010]=>P(c) d(u,v)=3
La distance minimale du code est le minimum de l'ensemble des distances entre codes :
dmin = min { dij }
III.3.3. Capacité de détection et de correction des erreurs :
Nombre d'erreurs détectables :
le nombre maximal d'erreurs détectables est : e D = dmin - 1 = d0 - 1
Nombre d'erreurs corrigeables :
le nombre maximal d'erreurs détectables est : e c = Int [(dmin - 1)/2]
IV. Code (n,m) pour corriger une erreur
Les k bits de parité ou de contrôle doivent être capables de coder les informations suivantes :
– pas d’erreur
– la position d’une erreur parmi un des m bits d’information
– la position d’une erreur parmi un des k bits de parité
En tout, 2k ≥ m+k+1 =n +1

IV.1. Code de Hamming C(7,4) :


C(7,4) c'est un code ayant une longueur de bloc n = 7 dont m=4 bits d’information avec taux de
codage = 4/7.
Comme : 2k = n+1= m + k +1 implique que le code de Hamming (7,4) est un code parfait.
Code non systématique :

4
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

Un bit de message à la position l est contrôlé par les bits de contrôle qui correspondent à la
décomposition en puissances de 2 de l.
• Le 1er bit de parité contrôle les positions 1, 3, 5, 7
• Le 2ème bit de parité contrôle les positions 2, 3, 6, 7
• Le 3ème bit de parité contrôle les positions 4, 5, 6, 7
• Pour que les bits de parité soient indépendants les uns des autres, on place les k bits de parité aux
positions 20, 21, … 2k-1. Dans ce cas, k=3 et donc on place les bits de parité aux positions 1, 2 et 4.
Les équations de codage sont : C1=a1+a2+a4 ; C2=a1+a3+a4 ; C3=a2+a3+a4
Les équations de décodage sont: s0 = C’1+a’1+a’2+a’4; s1 =C’+a’1+a’3+a’4; s2=C’3+a’2+a’3+a’4
avec X' = C'1 C'2 a'1 C'3 a'2 a'3 a'4 : mot de code reçu.
Si s0s1s2 = 000 => Pas d’erreur
Si non les bits de parité donnent la position de l’erreur (cas d'une erreur simple).
Exemple : On veut transmettre m=[ 0110], coder m par C(7,4).
En utilisant les équations de codage , on trouve le code X :

On reçoit X'= [1 1 0 0 0 1 0]; décoder X'.

On vérifie les parités par les équations de décodage , on trouve:


La position de l’erreur : s2s1s0 = 101 (5en décimal) . On a une erreur sur le 5ème bit
V. Codes en bloc linéaires :
Pour les codes linéaires (Groupes) : les mots de code sont considérés comme étant des éléments
dans un espace vectoriel, à savoir des vecteurs.
Un code est linéaire s'il répond au principe de superposition :

Pour tout i, j={0,1} , si Ci et Cj sont des mots de code, alors Ck est aussi un mot de code.
Un code linéaire contient le mot de code nul "0".
Pour un code linéaire, la distance minimale est le plus petit poids du code, mot de code nul exclus.
V.1. Codage et matrice génératrice
• En pratique, les opérations de codage et décodage peuvent être effectuées comme des
multiplications matricielles.
• Pour trouver le mot code x (n,1) (vecteur de n colonnes et une ligne) qui correspond au message
m(m,1) (l’information), on calcule :
x = m.G où G est la matrice génératrice (n,m).

5
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

 g11 g12 ... g1n 


 g 21 g 22 ... g 2n 
La matrice génératrice est de dimension [n , m] : G    
 .... .... 
g m1 g m 2 ... g mn 

1 0 1 1
Exemple : m. G = 1 0 1.0 1 0 1  0 1 1 0 = x
1 1 0 1 (n,m)

Un code non systématique serait tel que : G = [c1m c2m a1m c3m a2m …. anm ].
Si un code linéaire est systématique, sa matrice génératrice s’écrit :
G’ = [Im P’] = [I(m) P’(k, m)] (ou G’ = [P’ Im ] = [P’(k, m) I(m)])
G’ étant une matrice (n,m), P’ une matrice (k, m) et Im la matrice identité (m , m).
La partie essentielle de la matrice G’ est donc la matrice P’ appelée matrice de parité.
Nous pouvons bien sûr nous ramener à un code systématique par combinaison des lignes entre elles
dans la matrice G pour faire intervenir la matrice Im. Tout code de bloc peut ainsi se ramener à
l’étude d'un code systématique équivalent.
Exemple : C(6,3) ={ c 0 c1 c 2 c3 c 4 c5 c 6 c 7 }

c 0 = 000000 m=3 ; n=6 donc k = n-m=3


2m = 8 mots codes de longueur 6
c1 = 010101
On remarque que : c3 = c1 + c 2 ; c5 = c 4 + c1 ; c 6 = c 2 + c 4 ; c 7 = c1 + c 2 + c 4
c 2 = 110011
0 1 0 1 0 1 c1 =l1
c3 = 100110  
La matrice génératrice est : G  1 1 0 0 1 1 c 2 =l2
c 4 = 001111
0 0 1 1 1 1 c 4 =l3
c5 = 011010
Les lignes de G sont des mots de code, dmin est le plus petit poids =3
c 6 = 111100 G’= ? G’=[I3 P’]
c 7 = 101001 1 0 0 1 1 0
l’1= l1+l2 ; l’2=l1 ; l’3=l3 => G’ = 0 1 0 1 0 1
0 0 1 1 1 1

I3 P’
V.2. Décodage, matrice de parité (contrôle) et Syndrome:
Pour décoder, on crée la matrice de parité H (n, k) telle que :
• Pour tout mot du code x on aie : H.xT = 0 .
 h11 h12 ... h 1n 
h h 22 h 2 n 
La matrice de parité est de dimension [n, k] : [H]   21
 ... ... 
 
 h k1 h k2 ... h kn 

• Les matrices génératrices et de parité sont liées par : H.GT = 0.


Dès lors, un message m encodé par G sera correctement décodé par H. En effet :

6
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

H(m.G)T = H(mT.GT) = (H.GT).mT = 0


• Si on choisit G = [ Im A ] avec Im la matrice (m,m) unité et A une matrice (k,m) quelconque (code
systématique), on trouve : H = [ AT Ik ]
En effet : H.GT = AT Im + Ik AT = AT + AT = 0
• La dernière égalité résultant de ce que l’on travaille modulo 2.
Exemple : Code (6,3)
1 0 0 1 1 0
G’ = 0 1 0 1 0 1 ; H’= ? H’=[P’T Ik]
0 0 1 1 1 1
I3 P 1 0 0 1 1 0 1 1 1
G’=[Im P’] ; avec : m=3, n=6 et k=n-m=3, => I3= 0 1 0 ; P’= 1 0 1 => P’T = 1 0 1
0 0 1 1 1 1 0 1 1
1 1 1 1 0 0
=> H’= 1 0 1 0 1 0
0 1 1 0 0 1

Syndrome :
Le détecteur va utiliser la relation : H.yT où y est le mot de code reçu.
En effet, si le mot de code reçu y est entaché d'erreur nous pouvons l'exprimer sous la forme :
Code reçu = code émis + erreur => y = x + e = m.G + e ; avec e est un vecteur d’erreur.
En effectuant le contrôle :
H.yT = y.HT = m.G.HT + e.HT = e.HT (parce que m.G.HT=0 ; x=m.G est un mot de code)
S'il n'y a pas eu erreur de transmission :
H.yT = H(m.G)T = H(mT.GT) = (H.GT).mT =0 = e.HT = 0 => e=0.
e.HT est par définition le syndrome ( ou correcteur) de l'erreur S.
S = y.HT = e.HT
Le syndrome ne dépend que de l'erreur de transmission commise et non du mot de code.
Remarque : Un syndrome nul ne signifie pas nécessairement une absence d’erreur.
⇒ Ex : transformation du mot-code émis X1 en un autre mot-code X2
V.3. Circuits utilisés à la réalisation du codage et du décodage pour les codes linéaires :
Trois types de circuits sont très souvent rencontrés :
 Bascules bistables : dont le rôle est celui de cellules de retardement par une période
d’horloge, égale à la durée d’un symbole. Une succession de telles cellules constitue un
registre de décalage.
 Additionneurs modulo-2 à deux ou plusieurs entrées ;
 Circuits de multiplications lequel représentent, en réalité, un contact fermé ou ouvert.

7
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

Exemple : Considérons le cas du code de Hamming (7,4) dont la matrice de parité est :
0 0 0 1 1 1 1
H  0 1 1 0 0 1 1.
1 0 1 0 1 0 1

Le mot est : v= c1 c2 i 3 c 4 i5 i 6 i 7 


Circuit de codage :

RD est un registre de
décalage, après la
formation du mot de
code, les entrées au
registre seront bloquées
et le contenu apparaît à
la sortie sous forme de
succession d’impulsion
qui représentent le mot-
code.
Après 7coups d’horloge
c1 c2 i3 c4 i5 i6 i7 

Circuit de décodage :

Le correcteur (e1 e2 e3)


étant introduit dans le
déchiffreur
(Convertisseur binaire-
décimale), lequel
produit un signal de
correction d’erreur
dans la cellule dont le
nombre d’ordre est la
représentation binaire
de (e1 e2 e3).

Principe de réalisation du codeur systématique :

8
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

A partir de H.xT = 0, on obtient les symboles de contrôle ; pour la matrice H’, qui est sous la forme
systématique.
Exemple code ( 7 , 4 ) tel que :

H.xT = 0 => . [b0 b1 b2 m0 m1 m2 m3 ]T = [0 0 0]

=> b0 = m0 + m1 + m2 ; b1 = m1 + m2 + m3 ; b2 = m0 + m1 +m3
Les bits de parités sont obtenus par une simple addition binaire.
Le principe de la réalisation technique en est donc simple, il suffit de disposer de deux registres à
décalage, d'un inverseur (switch électronique bien sûr) et des additionneurs modulo-2 ce qui donne
le schéma ci-contre.

VI. Codes cycliques :


Famille de codes linéaires ayant la propriété suivante : toute permutation circulaire d'un mot de
code C donne un autre mot de code. Les mots de codes sont considérés comme étant des éléments
dans un algèbre, à savoir des polynômes.
Nombre de coefficients du polynôme est : n, de 0 à (n-1); degré inférieur ou égal à (n-1).
Codes binaires : coefficients dans {0,1}
Représentation polynomiale :
Associer à chaque mot de code, à n composantes, un polynôme C(x).
C=[Cn-1 Cn-2 ....... C1 C0]; Polynôme : C(x) = Cn-1 xn-1 + Cn-2 xn-2 + ....... + C1 x + C0
Ex : [1 1 0 1] —> C(x) = x3 + x2 + 1 ;
[1] —> C(x) = 1 ; [1 0] —> C(x) = x ; [1 1] —> C(x) = x + 1

9
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

Génération de la permutation cyclique d’un mot de code


x.C(x) = Cn-1 xn + Cn-2 xn-1 + ....... + C1 x2 + C0 x
x.C(x) = Cn-1 xn + Cn-2 xn-1 + ....... + C1 x2 + C0 x + Cn-1 + Cn-1
x.C(x) = Cn-1 [xn +1] + Cn-2 xn-1 + ....... + C1 x2 + C0 x + Cn-1
x.C(x) = Cn-1 [xn +1] + C1 (x)
avec C1 (x) = Cn-2 xn-1 + ....... + C1 x2 + C0 x + Cn-1
donc le reste de la division de x.C(x) par xn +1 est :
C1 (x) = Cn-2 xn-1 + ....... + C1 x2 + C0 x + Cn-1
—> C1 = [ Cn-2 ....... C1 C0 Cn-1] ; (C1 mot de code associé à C1(x)
ou : x.C(x) modulo [xn+1] : mot de code
 La permutation circulaire d'un bit à gauche est équivalent à : x.C(x) modulo [xn+1] (le reste
de la division de x.C(x) / [xn+1]) est un mot de code.
 Permutation de ''i'' bit à gauche donne aussi un mot de code; (xi.C(x) modulo [xn+1]<=> le
reste de la division : xi . C(x) / [ xn+1] )
x.C(x) = Cn-1 [xn +1] + C1 (x)

xi.C(x) = Q(x).[xn +1] + Ci (x)
C. à. d. C(x) ; C1 (x) ; ......... ; Ci (x) : mot-code.

C(x) = Cn-1 xn-1 + Cn-2 xn-2 + ....... + C1 x + C0 —> C = [Cn-1 Cn-2 ....... C1 C0 ]
C1 (x) = Cn-2 xn-1 + ....... + C1 x2 + C0 x + Cn-1 —> C1 = [ Cn-2 ....... C1 C0 Cn-1]

Ci (x) = Cn-i-1 xn-i-1 + ....... + Cn-i+2 x2 + Cn-i+1 x + Cn-i —> Ci = [ Cn-i-1 Cn-i-2 ....... Cn-i+1 Cn-i]
Ex :
C = {000, 110, 011, 101} est un code cyclique (C.C.)
C0 = 000 —> C0(x) = 0
C1 = 110 —> C1(x) = x2 + x
C2 = 011 —> C2(x) = x+1
C3 = 101 —> C3(x) = x2 +1
VI.1. Codage par multiplication (code non systématique) :
VI.1.1. Polynôme générateur : Le polynôme : p(x) = xn + 1= g(x) . q(x) . z(x) ; sous forme de
produit de polynômes irréductibles. Parmi ces polynômes le choix du polynôme générateur sera
porté sur l'un d'eux qui est de degré k et tel que : m+k = n (m: longueur de message ; k: nombre de
bits de contrôle ; n: longueur de mot-code).

10
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

Le codage s'effectue par multiplication polynomiale : C(x) = g(x) . B(x) ; B(x): polynôme
d’information à coder. (b=[ bm-1 .... b1 b0 ] et B(x) = bm-1xm-1 + .... + b1x + b0 ).
 g(x) = gk xk + gk-1 xk-1 +....+ g2 x2 + g1 x + g0 : polynôme générateur avec g0 =1 (pour que
g(x) divise : p(x)=xn + 1)
Ex : C(7,4) => n=7 , m=4 et k =3
 xn + 1= x7 + 1= (x+1) . (x3 + x2 + 1) .(x3 + x + 1) => deux polynômes générateurs possibles
(x3 + x2 + 1) ou (x3 + x + 1) ( de degré k = 3)
 coder b=[0011] avec g(x) = x3 + x2 + 1
B(x) = x+1
C(x) = g(x) . B(x) = (x+1) . (x3 + x2 + 1) = x4 + x2 + x + 1 => C = [0010111]
 On peut définir le C.C. par ce seul polynôme générateur; coder les 2m message possibles.
si b=[0001]=> B(x) =1=> C(x) = g(x) . B(x)= g(x)= x3 + x2 + 1 —>C=[0001101]
si b=[0010]=> B(x) =x=> C(x) = x.g(x) = x4 + x3 + x —> C=[0011010]
si b=[0011]=> B(x) =x+1=> C(x) = x4 + x2 + x + 1 —> C=[0010111] .................
VI.1.2. Matrice génératrice :
La matrice génératrice d’un code cyclique C(n,m) de polynôme générateur g(x) dont les lignes sont:
g(x) = 0 + 0 + .... + gk xk + gk-1 xk-1 +....+ g2 x2 + g1 x + g0
x.g(x) = 0 + 0 + .... + gk xk+1 + gk-1 xk +....+ g2 x3 + g1 x2 + g0 x + 0
x2.g(x) = 0 + 0 + .... + gk xk+2 + gk-1 xk+1 +....+ g2 x4 + g1 x3 + g0 x2 + 0 + 0
x3.g(x) = 0 + 0 + .... + gk xk+3 + gk-1 xk+2 +....+ g2 x5 + g1 x4 + g0 x3 + 0 + 0 + 0

xm-1.g(x) = gk xn-1+ gk-1 xn-2 +....+ g2 xm+1 + g1 xm + g0 xm-1 + 0 + 0 + ........ + 0
…… 0 0 ……0 ( )
0 …… 0 ……0 ( )
= =
⋮ ⋮ ⋮ ⋱ ⋮
0 0 0…… …… ( )
Codage par multiplication matricielle :
[c0 c1 .... cn-1 ] = [m0 m1 ... mn-k-1 ]. G
Circuit de codage : La figure ci-dessous montre un codeur cyclique non systématique :

11
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

Exemple: n=7 : xn + 1 = x7 +1 = (x+1).(x3 +x +1) .(x3 + x2 + 1) = (x4 + x3 +x2 +1 ).( x3 + x2 + 1)


* Choisissons, par exemple le polynôme générateur : g(x)=(x+1).( x3 +x +1) = x4 + x3 +x2 +1
k=4 : degré de g(x),  m=n-k =7-4=3  2m =23 =8 mots de 3 bits;
* Choisissons le message m(x)=x2 +1 , ou [101] ,
1 0 1 1 1 0 0
= 0 1 0 1 1 1 0
0 0 1 0 1 1 1
* Le circuit du codage non systématique de ce code est :

* Contenu de registre pour chaque étape du vecteur [101]:

* Codage par multiplication matricielle :


1 0 1 1 1 0 0
C= m.G= [101]. 0 1 0 1 1 1 0 = [1 0 0 1 0 1 1]
0 0 1 0 1 1 1
* Codage par multiplication polynomiale :
C(x)= m(x). g(x)= (x2 +1). (x4 + x3 +x2 +1 )= x6 + x5 +x3 +1 
C =[C0 C1 C2 C3 C4 C5 C6] =[1001011]
VI.2. Polynôme de parité et matrice de contrôle :
On appelle polynôme de parité d'un code le polynôme:

ℎ( ) = ( )
où g(x) : générateur de C , où : xn +1 = h(x) . g(x)

…… 0 0 ……0
0 …… 0 ……0
= =>
⋮ ⋮ ⋮ ⋱
0 0 0…… ……

12
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

0 0… …0 ℎ ℎ ℎ ……ℎ
0……0 ℎ ℎ …… ℎ ℎ 0
=
⋮ ⋮ ⋮ ⋰
ℎ ℎ …… ℎ ℎ 0 0…… 0
( ) ℎ( )
( ) ⋮
= => =
⋮ ℎ( )
( ) ℎ( )
la relation entre G et H : H.GT = 0.

Exemple : C(7,4) => n=7 , m=4 et k =3


xn + 1= x7 + 1= (x+1) . (x3 + x2 + 1) .(x3 + x + 1) =>
1/ si g(x) = x3 + x2 + 1 => h(x) = (x+1) . (x3 + x + 1) = x4 + x3 + x2 + 1
1 0 1 1 0 0 0
0 0 1 0 1 1 1
0 1 0 1 1 0 0
= = 0 1 0 1 1 1 0
0 0 1 0 1 1 0
1 0 1 1 1 0 0
0 0 0 1 0 1 1
2/ si g(x) = x3 + x + 1 => h(x) = (x+1) . (x3 + x2 + 1) = x4 + x2 + x + 1
1 1 0 1 0 0 0
0 0 1 1 1 0 1
0 1 1 0 1 0 0
= = 0 1 1 1 0 1 0
0 0 1 1 0 1 0
1 1 1 0 1 0 0
0 0 0 1 1 0 1
VI.3. Codage par division (code systématique) CRC (Cyclic Redundancy Check)
(Code de Redondance Cyclique)
Codage systématique par décalage et division : m premiers bits constitués par les bits d’information,
le reste de la division de B(x) . xk par g(x) donne les bits de parité (CRC).
a/ Procédure à suivre :
 Multiplier B(x) par xn-m (ou xk) ( <═> décalage)
 Diviser le résultat par g(x) => B(x) . xk = Q(x) . g(x) + CRC(x)
 Ajouter le reste de la division R(x) à B(x) . xk pour obtenir C(x) :C(x) = xk . B(x) + CRC(x)
Exemple :
 C(7,4) ; b=[0 0 1 1] avec g(x) = x3 + x2 + 1
B(x) = x+1 ;
b(x) . xk = b(x) . x3 = (x+1) . x3 = x4 + x3

b(x) . xk / g(x) => x4 + x3 x3 + x2 + 1


x4 + x3 + x x <— Q(x)
0R(x) —> x Donc C(x) = B(x) . xk + CRC(x)
C(x) = x4 + x3 + x —> C= [0 0 1 1 0 1 0]

13
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

VI.4. Décodage et calcul du polynôme syndrome par division polynomiale :


A la réception, chaque mot reçu C'(x) est divisé par le polynôme générateur g(x).
C'(x) = g(x) Q(x) + s(x) avec s(x) : polynôme syndrome.
; deg(s(x)) < deg(g(x)) ;
 si s(x) = 0 , C'(x) est un polynôme du code, C'(x) accepté
 si s(x) ≠ 0, C'(x) est un message erroné
C' (x) corrigé = C'(x) + s(x) = C(x)
Circuit du décodage : est un circuit de division par g(x) ( c.à d. un circuit pour calculer de s(x)) :
r(x)/g(x)= ( )+s(x)
s(x) = s0 +s1x +... + sk-2xk-2 + sk-1xk-1 : syndrome
r(x)= a0 + a1x +... + an-1 xn-1 : mot reçu
( )= q0+ q1x + .... + qm-1xm-1 : message décodé

Exemple : C(7,4) avec : g(x) = x4 + x3 +x2 +1


Le circuit du décodage est :

Supposons que la séquence codée reçue du canal est : r(x) = x6 + x5 +x3 +1

...........

14
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

VI.6. Capacité de détection et de correction


La capacité de détection et de correction d’erreur dépend de la distance de Hamming, qui dépend de
la nature du polynôme générateur. Les codes cycliques sont principalement utilisés pour leur
capacité de correction.
(dmin = le plus petit poids dans la matrice G = nombre de coefficients de g(x))
VI.7. Codes cycliques usuels
VI.7.1. Code de Golay :
C'est un code ( n , m ) = ( 23 , 12 ).
xn + 1= (1+ x) (1+x+x5+x6+x7+x9+x11) (1+x+x4+x5+x6+x10+x11)
Le polynôme générateur est g(x) = 1+x+x5+x6+x7+x9+x11
Sa distance minimale de Hamming est : dmin = 7 ⇒ ec= 3
il peut détecter et corriger des erreurs triples. C'est le seul ayant cette propriété. Malheureusement,
il est unique dans son groupe et on ne peut le généraliser à d'autres combinaisons.
VI.7.2. Les codes BCH (Bose-Chaudhuri-Hocquenghem)
Toujours avec n = 2k – 1, m est choisi tel que m ≥ ( n-k.t ) où t est le nombre d'erreurs
détectables et corrigeables. La distance minimale obtenue correspond toujours à dmin ≥ 2t + 1.
Ces codes permettent des longueurs de code très variées et offrent de nombreuses possibilités
d'efficacité de code m/n (Leur rendement n'est pas très élevé). Ils ont fait l'objet de nombreuses
études et utilisations. Les coefficients des polynômes générateurs sont tabulés dans de nombreux
ouvrages, la longueur des polynômes générateur devenant très grande, ces tables fournissent les
jeux de coefficients en utilisant un format octal par ordre décroissant.
Exemple : code (7,4) ; code (15,11) ; c(31,26) ; ...............c (2k-1 , (2k-1)-k). Donc les codes de
Hamming cycliques sont des code BCH.
*) code ( 31 , 26 ), t = 2 , coefficients 45 en octal soit 100 101 → g(x) = x5 +x2 + 1
VI.7.3. Les codes RS (Reed-Solomon)
Les codes RS (Reed-Solomon) sont des codes correcteurs très puissants. Ils peuvent être présentés
comme des codes BCH dans lequel chaque bit des mots du code est remplacé par un entier défini
modulo 2v (avec n=2v-1).
Donc c'est une généralisation des codes BCH à des codes non binaires.
La distance d'un code RS(n , m) est égale à n-m+1.
VII. Les codes convolutifs
Les codes convolutifs constituent une famille de codes linéaires actuellement adoptés par de
nombreux systèmes de communication. Ces codes offrent en général une capacité de correction
supérieure à celle des codes en bloc et plus particulièrement quand il s'agit d'une distribution

15
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

aléatoire des erreurs de transmission, comme c'est le cas d'une transmission sur un canal gaussien
par exemple.
Principe :
Le codage convolutif consiste à faire passer le mot à coder dans une succession de registres à
décalage, dont le nombre m est appelé mémoire du code. Pour construire un bloc de n symboles
en sortie du codeur à partir de k symboles d'entrée; cela signifie qu'il faut m blocs de k symboles
en plus du bloc de symboles utiles. On dit aussi que la longueur de contrainte du code est égale à m.
Un code convolutif est alors déterminé par les trois paramètres :
k : le nombre de symboles d'information
n : le nombre de symboles associés aux k symboles d'information
m : contrainte (la mémoire) du code.
Les codes convolutifs traitent donc les symboles d'information en flux continu et non discret.

Schéma d'implémentation d'un code convolutif à l'aide de registre à décalage


Code Convolutifs C(n, k, m) est caractérisé par les paramètres : (n, k, m) où :
 n = Nombre de bits en sortie ;
 k = Nombre de bits à l'entrée ;
 m = La contrainte (Nombre de registres à décalage : mémoire)
 Taux de codage (rendement) : k/n
 longueur de contrainte : L = k.(m-1) : représente nombre de bits influençant les sorties du
codeur.

16
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

Représentation des codes convolutifs


Représentation polynômiale : les C.C. peuvent être exprimé par les n polynômes générateurs.
Les n « polynômes générateurs» g (i) (i = 1:n) qui expriment les combinaisons des bits d'entrée
pour obtenir les sorties.
Dans le cas k = 1, pour l'instant "I" ; les sorties sont exprimées par :

= .
()

Exemple d'un code convolutif de rendement 1/2 (n=2,k=1) :


= + +

di di-1 di-2

= +

Polynômes générateurs (7, 5) en octal (Système octal : système de numération de base 8 qui
utilise les chiffres de 0 à 7):
 ( )
( )= + +1 soit ( )
= [111] soit 7 en octal
 ( )
( )= +1 soit ( )
= [101] soit 5 en octal
Sa mémoire (m-1=2) ou longueur de contrainte (m)
 Ici m=3
Dans cet exemple, de rendement 1/2, le codeur transforme un mot d=[d0 d1 ... dk-1 ] en un mot:
C = [C0 C1 ... Cn-1] = [ …. ]
La valeur di correspond au bit qui parvient à l'entrée du codeur à l'instant i.
Exemple de codage de d=[1001] (d(x) = x3 +1) ; en partant de di-1 et di-2 =0 :
 ( )
( )= ( )
( ). ( + 1) = + + + + +1, ( )
= [111111]
 ( )
( )= ( )
( ). ( + 1) = + + +1 ( )
= [101101]
 = ( ) ( )
= [111011111011] : les (m-1) dernières étapes correspondent à la remise à
zéro du registre à décalage

Code convolutifs non systématique (NSC : Non Systematic Convolutional codes) :


les codes NSC, présentent l'avantage par rapport aux codes systématiques de fournir plus
d'information : tout bit de sortie du codeur renseigne sur plusieurs bits du message codé. Le
décodeur dispose donc de plus d'éléments dans un code NSC, et permet donc de corriger plus
d'erreurs.

17
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

NSC : Codes non séparables


car ∀ bit du code = f (plusieurs bits d'info.)

Codes convolutifs systématiques récursifs (RSC : Recursive Systematic Convolutional codes) :


Un code convolutif est dit systématique ou récursif lorsque une partie de ses sorties est exactement
égale à ses entrées.
RSC : Codes séparables
 Exemple de code séparable :

di fi fi-1 fi-2

Un code convolutif est dit récursif si la séquence passant dans les registres à décalage est alimentée
par le contenu de ces registres.

Exemple 2 :

Ces codes RSC sont les codes constituants des turbo- codes usuels.
Représentations graphiques des codes convolutifs :
Tout code convolutif est représenté par trois graphes équivalents mais différents : l’arbre du code, le
treillis du code et le diagramme d’états.
Arbre :
L’arbre est un graphe de hauteur et de largeur infinies. Un sommet dans l’arbre représente un état
possible du codeur. Une arrête symbolise une transition d’un état à l’autre. Classiquement l’arbre

18
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

commence à son sommet par l’état 0 (le registre à décalage est initialisé à 0). Tout chemin dans
l’arbre du code est une séquence possible (un mot de code) à la sortie du codeur convolutif.
Treillis :
Le treillis est obtenu en repliant l’arbre sur sa largeur, par fusion des sommets représentant le même
état au même instant.
Diagramme d’états :
Le diagramme d’états est à son tour construit en repliant le treillis sur sa longueur, par fusion des
sommets représentant aussi le même état, à des instant différents.
Exemple :
Arbre du code NSC de R=1/2, g1=7, g2=5 (en octal) :
avec les 4 états possibles du codeur convolutif (4 states) sont : a= 00; b = 01; c = 10 et d = 11. Les
deux bits constituant l’indice de l’état ne sont autres que les deux bits contenus dans le registre à
décalage de la Figure précédente.

19
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

Treillis du NSC (7,5) :  transition d'un état au suivant :


Les deux premiers bits sur chaque transition représentent la sortie, et le dernier l’entrée
correspondante. Notons que le treillis devient périodique à partir de la 3ème étape où l’on retrouve
les 8 transitions entre les 4 états.

Distance minimale d'un code convolutif :


D’autre part, le treillis permet de trouver facilement la distance minimale du code. Il s’agit du poids
de Hamming minimal entre deux mots de codes, donc deux chemins. En comparant tous les
chemins au chemin tout à zéro, dans notre cas, un chemin divergeant à n’importe quel instant du
chemin tout à zéro, en suivant a → c→b →a pour converger à nouveau vers le chemin tout à zéro
possède le poids de sortie minimal WHmin=5 (111011). Nous en déduisons que la distance minimale
dHmin (aussi appelée distance libre dfree) du code convolutif (7,5) est égale à 5.

20
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

diagramme d’état du code convolutif NSC (7,5) : Il s’agit d’un graphe dont les sommets
représentent les états (States), mais où la notion temporelle n’apparaît pas. On l’obtient par fusion
dans le treillis de tous les états identiques à des instants différents.
∀ nœud ⇔1 état particulier des registres
11/1 10 01/1
du codeur
00/1
∀ branche ⇔changement d'état du 10/1
00/0 00 11
codeur en fonction de l'arrivée d'un
10/0
nouveau bit 11/0
01 01/0
Exemple 2 : Code Convolutif (3,1)
∀ bit d'information  3 bits de
code

2 registres 4 états possibles


⇔ 4 noeuds du diagramme d'état
Question : représenter le code en Treillis et en arbre??

Décodage et algorithme de Viterbi :


Il existe plusieurs algorithmes de décodage des codes convolutifs.
Le plus célèbre est probablement l’algorithme de Viterbi qui repose sur la représentation en treillis
des codes. Il permet de trouver, à partir de la séquence des symboles reçus, la séquence d’états dans
le treillis la plus probable.

21
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

L’algorithme de Viterbi est la méthode la plus couramment utilisée pour le décodage à maximum de
vraisemblance (MV) des codes convolutifs de faible longueur de contrainte (typiquement m 8).
Le décodage à MV est basé sur la recherche du mot de code c qui est à la plus petite distance du
mot reçu. Dans le cas d’un canal à décision binaire (canal binaire symétrique), le décodage à MV
s’appuie sur la distance de Hamming, alors que dans celui d’un canal gaussien, il s’appuie sur la
distance euclidienne.
Si on considère des séquences de bits d'information de L bits :
 Il y a 2L séquences de bits possibles ( 2L chemins possibles dans le treillis de longueur L).
 Les séquences codées sont de longueur 2L mais on note une séquence codée C=[C1 C2 ... C‫׀‬
... CL] où C‫(=׀‬C‫׀‬1 , C‫׀‬2)
Algorithme de Viterbi :
 à chaque instant I, pour chaque état Si ,on garde le meilleur des 2k chemins qui aboutissent à
cet état.

( , ) = min ( − 1, + ( , ( , ))

 , est la séquence de 2 bits codés correspondant à la transition →


 , ( , ) est la distance locale à l'étape I qui peut être prise comme distance
euclidienne (critère ML) ou distance de Hamming.

Exemple d’application de l’algorithme de Viterbi : code convolutif de rendement 1/2 (n=2,k=1)


Illustrons les différentes étapes de l’algorithme de Viterbi décrit précédemment par une application
au décodage du code convolutif NS (7,5) à 4 états.

= + +

di di-1 di-2

= +
La structure du codeur et le treillis sont représentés précédemment :

22
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

•on considère la séquence d’information suivante :1001


•la séquence codée est donc : 11 10 11 11
•une erreur survient dans la transmission du troisième bit
•La séquence reçue est donc :11 00 11 11
•on décode en utilisant l’algorithme de Viterbi :

23
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

.............................

24
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

Donc d'après le Treillis la séquence est 1001.


Les codes convolutifs sont d'autant plus performants que la mémoire du code m est élevée. La
contrepartie est un délai d'autant plus important que la mémoire du code est longue.
Exemple 3 :code (2,1,4) : Soit un codeur convolutif de rendement 1/2 et de longueur de contrainte
3 représenté ci-dessous :
1) Représenter les diagrammes : d'état ; l'arbre et Treillis de
ce codeur.
2) Le registre du codeur est initialisé par des zéros. Quel est le
mot de code associé à la séquence
d'entrée 01011?
n=2 ; k=1 ; m=4 ; L =k(m-1)=3
 nombre de state est 2L =23 = 8 states

25
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

Codes Concaténés et Turbo Codes :


C'est à partir de ces codes convolutifs
récursifs qu'ont été inventés les turbo-
codes basés sur les mêmes
considérations.
Un Turbo codeur est constitué d’au
moins deux codeurs élémentaires de codes convolutifs systématiques (RSC) codes séparés par un
entrelaceur.
Les turbo codes ont été découverts par C. Berrou et al. en 1993. Cette famille de codes offre des
hautes performances en puissance permettant de s'approcher de la limite théorique de Shannon. Les
turbo codes ont été adoptés par quelques standards émergeants telles que le DVB-RCS pour les
liaisons satellitaires montantes. Des schémas de codage turbo ont été aussi proposée par la comité
CCSDS(Consultative Committee for Space Data Systems) pour les applications de télémétrie et de
télémesure spatiales. D'autres systèmes ont opté pour des processus de codage équivalents tels que
les codes LDPC (Low Density Parity Check) adoptés par le nouveau standard de transmission de la
vidéo numérique par satellite, le DVB-S2.
Le schéma de codage suivant consiste à la concaténation parallèle de deux codes convolutifs,
systématiques :

Concaténation parallèle de deux codes convolutifs


Les bits d'information sont d'abord codés par le premier codeur convolutif. Ces bits sont ensuite
entrelacés avant de passer dans le second codeur. Les deux codes considérés doivent être
systématiques et récursifs. L'entrelaceur est un élément essentiel dans les schémas de codage turbo,
en son absence, les performances de ces schémas se trouvent fortement affectée.
Afin d'améliorer l'efficacité spectrale de la forme d'onde, un processus de poinçonnage peut être
appliqué à la sortie des deux codeurs. Dans le cas d'une concaténation parallèle des codes
systématiques, ce processus n'affecte pas la partie systématique des données (bits d'informations).

26
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub

Exemple :
Nous utilisons deux fois le même codeur convolutif
systématique de taux 1/2 (noté CCS) en parallèle. Un
bloc d'information binaire u0 de taille T est codé deux
fois, le second codage étant précédé d'une permutation σ
des T symboles de u0.
Au total ce codeur a un taux de transmission 1/3. Le
bloc (u0, u1, u2) de taille 3T constitue le mot de code qui sera transmis à travers le canal de
communication.

27

Vous aimerez peut-être aussi