Académique Documents
Professionnel Documents
Culture Documents
1
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub
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.
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 :
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 :
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
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 }
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
6
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub
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
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 :
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 :
=> 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.
9
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub
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
ℎ( ) = ( )
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.
13
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub
...........
14
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub
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.
16
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub
= .
()
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
17
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub
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
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
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, + ( , ( , ))
= + +
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
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
25
M1: S.TLC et R.TLC- Codage et compression Chargé de cours : Mme Guebgoub
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