Vous êtes sur la page 1sur 37

Théorie de l’information

Chap : Codes de Convolution

Rhouma Rhouma

École Supérieure d’Économie Électronique

Avril 2015

1 / 37
Plan

1 Propriétés

2 Fonctionnement temporel

3 Méthode polynomiale

4 Représentation Graphique

5 Treillis du code

6 Diagramme d’état

7 Décodage par Maximum de Vraisemblance

8 Algorithme de Viterbi

2 / 37
Propriétés

Plan

1 Propriétés

2 Fonctionnement temporel

3 Méthode polynomiale

4 Représentation Graphique

5 Treillis du code

6 Diagramme d’état

7 Décodage par Maximum de Vraisemblance

8 Algorithme de Viterbi

3 / 37
Propriétés

Les codes de convolution sont des codes binaires qui constituent


une alternative aux codes de blocs par leur simplicité de
génération grâce à quelques registres à décalage.
Introduits par Elias (1955)
Ils permettent de générer en ligne le code sans passer par une
bondérisation préalable comme c’est le cas avec les codes BCH
ou RS.

g(i) = 0 =⇒ connexion absente et g(i) = 1 =⇒ connexion


présente
P −1
C(j) = Ki=0 g(i) · m(j − i)
l’opération de convolution est aussi décrite polynomialement :
C(x) = g(x) · m(x)
4 / 37
Propriétés

Propriétés

K est appelé la longueur de contrainte du code : elle renseigne sur


le nombre de fois qu’un bit participe à l’élaboration des bits de
parités
K est égale au nombre de bascules +1
les coefficients gi forment un polynôme générateur g(x).
On peut générer simultanément des bits parités de deux
générateurs différents g1 (x) et g2 (x) ou plus
les sorties vont être entrelacés
le rapport de code r est égal à 1/n avec n est le nombre de
sorties entrelacés

5 / 37
Propriétés

Exemple
soit un code avec r=1/2 de longueur de contrainte K=3 et
g1 = [g1 (0) g1 (1) g1 (2)] = [0 0 1] et
g1 = [g2 (0) g2 (1) g2 (2)] = [1 1 1]
les codes de chaque sortie est :
K
X −1
C1 (j) = g1 (i) · m(j − i)
i=0
et
K
X −1
C2 (j) = g2 (i) · m(j − i)
i=0

6 / 37
Fonctionnement temporel

Plan

1 Propriétés

2 Fonctionnement temporel

3 Méthode polynomiale

4 Représentation Graphique

5 Treillis du code

6 Diagramme d’état

7 Décodage par Maximum de Vraisemblance

8 Algorithme de Viterbi

7 / 37
Fonctionnement temporel

Fonctionnement temporel

8 / 37
Fonctionnement temporel

Avec le message m = [m(0) m(1) m(2) . . . m(L − 1)] = [1 0 0 1 1]

le mot de code final est donc : C = [01 01 11 01 00 10 11]

9 / 37
Méthode polynomiale

Plan

1 Propriétés

2 Fonctionnement temporel

3 Méthode polynomiale

4 Représentation Graphique

5 Treillis du code

6 Diagramme d’état

7 Décodage par Maximum de Vraisemblance

8 Algorithme de Viterbi

10 / 37
Méthode polynomiale

Méthode polynomiale

Chaque mot binaire est définit avec un polynôme.


Avec le même exemple : g1 (x) = x 2
et g2 (x) = 1 + x + x 2 et m(x) = 1 + x 3 + x 4
on a C1 (x) = m(x) · g1 (x) = x 2 + x 5 + x 6
et C2 (x) = m(x) · g2 (x) = 1 + x + x 2 + x 3 + x 6
avec la notation binaire C1 = [0 0 1 0 0 1 1]
et C2 = [1 1 1 1 0 0 1]
d’où C = [01 01 11 01 00 10 11]

11 / 37
Représentation Graphique

Plan

1 Propriétés

2 Fonctionnement temporel

3 Méthode polynomiale

4 Représentation Graphique

5 Treillis du code

6 Diagramme d’état

7 Décodage par Maximum de Vraisemblance

8 Algorithme de Viterbi

12 / 37
Représentation Graphique

état suivant - état présent

13 / 37
Représentation Graphique

Graphes d’états
à la base de la table précédente, on peut dessiner les graphes
d’états avec comme convention :
mj = 0 =⇒ déplacement vers le haut
et mj = 1 =⇒ déplacement vers le bas

14 / 37
Représentation Graphique

Arbre du code

l’arbre du code représente la succession des états possibles. Les


Conventions usuelles :
L’évolution temporelle est représentée de la gauche vers la droite
chaque nouveau bit entré provoque un déplacement vers le haut s’il
s’agit d’un "0" et vers le bas s’il s’agit d’un "1"
sur chaque branche est porté le résultat de l’encodage (la sortie)
conformément à la table de convolution
Pour le msg m = [m0 m1 m2 . . . mL−1 ] = [10011] nous vérifions
bien l’obtention du mot de code :

C = [01 01 11 01 00 10 11]

15 / 37
Représentation Graphique

16 / 37
Treillis du code

Plan

1 Propriétés

2 Fonctionnement temporel

3 Méthode polynomiale

4 Représentation Graphique

5 Treillis du code

6 Diagramme d’état

7 Décodage par Maximum de Vraisemblance

8 Algorithme de Viterbi

17 / 37
Treillis du code

Treillis de code

Par convention la représentation du treillis du code utilise les


normes suivantes :
Le passage d’un état à un autre par la prise en compte d’un bit "0"
est représenté en trait continu.
Le passage d’un état à un autre par la prise en compte d’un bit "1"
est représenté en trait pointillé.
Sur le trait, est indiquée la sortie générée c’est à dire la portion du
mot de code correspondante.
Dans le Treillis, on définit :
Cellule élémentaire
Phase initiale
Phase finale

18 / 37
Treillis du code

Cellule élémentaire

En utilisant soit l’arbre du code soit les éléments de base


constitutifs on peut dessiner une cellule élémentaire du treillis
reliant l’instant t à l’instant t+1.
Cette cellule comporte 2K −1 entrées et sorties.

19 / 37
Treillis du code

Phase initiale

Pendant M = K-1 instants, une partie de l’état des bascules est


constitué des "0" d’initialisation.
Pendant tous ces instants, toutes les combinaisons ne sont pas
possibles et tous les états ne sont pas accessibles.
Le treillis comporte donc à l’origine M (ici M=2) cellules
correspondant à cette phase initiale.

20 / 37
Treillis du code

Phase Finale

A la fin du codage nous sommes amenés à introduire des "0" de


queue.
De ce fait, seules les transitions en trait plein deviennent possibles
et le treillis se résume à M (ici M=2) cellules ne comportant que
ces transitions.

21 / 37
Treillis du code

Avec ce treillis nous vérifions que le message


m = [m0 m1 m2 . . . mL−1 ] = [1 0 0 1 1] génère le mot de code :

22 / 37
Diagramme d’état

Plan

1 Propriétés

2 Fonctionnement temporel

3 Méthode polynomiale

4 Représentation Graphique

5 Treillis du code

6 Diagramme d’état

7 Décodage par Maximum de Vraisemblance

8 Algorithme de Viterbi

23 / 37
Diagramme d’état

Diagramme d’état
un sommet représente un état interne
un arc orienté représente une transition. En trait plein pour celles induites par un "0" et en
trait pointillé pour celles induites par un "1"
la sortie ou portion de code généré est porté sur l’arc correspondant.

Avec ce graphe nous vérifions que le message m = [m0 m1 m2 . . . mL−1 ] = [1 0 0 1 1]


donne le mot de code : C = [01 01 11 01 00 10 11] sans oublier les bits de queue.
24 / 37
Décodage par Maximum de Vraisemblance

Plan

1 Propriétés

2 Fonctionnement temporel

3 Méthode polynomiale

4 Représentation Graphique

5 Treillis du code

6 Diagramme d’état

7 Décodage par Maximum de Vraisemblance

8 Algorithme de Viterbi

25 / 37
Décodage par Maximum de Vraisemblance

Maximum de Vraisemblance

m : vecteur message et m
b : estimation du vecteur message

C : Mot de code émis et C


b : mot de code estimé

R : Mot de code reçu et e : erreur de transmission


Effet de la transmission+codage : m → C → R = C + e
role du décodeur : R → C
b →m
b
décodage : connaissant R, l’estimation C
b est optimale si la probabilité
d’effectuer une erreur de décodage est minimale.
Le maximum de vraisemblance choisit l’estimation C
b qui maximise
prob(R/C). Soit C = {prob(R/C)}max
b

avec prob(R/C) est la probabilité conditionnelle d’avoir reçu R sachant


qu’on a envoyé C

26 / 37
Décodage par Maximum de Vraisemblance

Maximum de Vraisemblance

La fonction log est une fonction monotone,


b = {log[prob(R/C)]}max
donc C
Si le canal binaire symétrique est sans mémoire, tous les bits de
message sont statistiquement indépendants et
QN
prob(R/C) = i=1 prob(Ri /Ci ) donc
PN
log[prob(R/C)] = i=1 log[prob(Ri /Ci )]
Pour le canal binaire symétrique, la prob d’erreur est p. Donc

prob(Ri /Ci ) = 1 − p Si Ri 6= Ci
prob(Ri /Ci ) = p if Ri = Ci

Si R et C sont différents de d bits (nb d’erreur =dans un mot de code de


n − bits) alors la distance de hamming entre C et R est égale à d.
donc
p
log[prob(R/C)] = d·log(p)+(N−d)·log(1−p) = d·log( 1−p )+N·log(1−p)

27 / 37
Décodage par Maximum de Vraisemblance

Maximum de Vraisemblance

la probabilité d’erreur vérifie généralement p < 1/2, donc


p
d · log( 1−p ) < 0 et puisque N · log(1 − p) est constante,
log[prob(R/C)] est maximale, si d est minimale.
Cb est donc aussi choisit de manière à minimiser la distance de
Hamming entre C b et R
Pour cela, C est bien sûr inconnu mais nous avons à notre
connaissance le treillis du code et, à la réception de R, nous
chercherons à minimiser la distance de Hamming entre le code
reçu et tous les codes possibles. Le plus "proche de R"
constituera l’estimation la plus vraisemblable.
Autrement dit : le décodeur compare le code reçu avec toute les
possibilités de C et choisit celle qui est la plus proche de R.

28 / 37
Algorithme de Viterbi

Plan

1 Propriétés

2 Fonctionnement temporel

3 Méthode polynomiale

4 Représentation Graphique

5 Treillis du code

6 Diagramme d’état

7 Décodage par Maximum de Vraisemblance

8 Algorithme de Viterbi

29 / 37
Algorithme de Viterbi

Algorithme de Viterbi
En utilisant le treillis nous réalisons les opérations suivantes :
1 nous examinons chaque portion de code reçue puis nous
calculons la distance entre cette portion de code et la sortie du
treillis pour toutes les possibilités.
2 Cette distance ajoutée à celle associée au nœud d’origine (état
présent) est portée sur le nœud ainsi atteint (état suivant). Un
nœud comportera deux indications puisqu’il y a deux façons de
l’atteindre.
3 Pour l’étape suivante, nous ne conservons pour un nœud que la
distance minimale ce qui revient à ne conserver qu’un certain
nombre de "trajets" probables : les survivants.
4 Nous recommençons l’opération 1 jusqu’à épuisement du code
reçu.
5 Le code le plus probable sera celui qui à la suite de ces
opérations correspondra à la distance totale la plus faible et le
message est reconstitué en interprétant la suite des "pleins" et
"pointillés" associés au trajet le plus probable
30 / 37
Algorithme de Viterbi

Algorithme de Viterbi

Soit le mot de code reçu suivant Y = [01 01 01 01 00 10 11]


et recherchons la meilleure estimation grâce au treillis et aussi au
fait que nous savons qu’il existe une phase initiale et une phase
finale toutes les deux de longueur M = K-1. Ici M = 2.

31 / 37
Algorithme de Viterbi

Algorithme de Viterbi

Phase initiale : elle dure deux coups. L’état initial est


nécessairement l’état interne "0" soit a dans notre exemple.

32 / 37
Algorithme de Viterbi

Phase centrale : premiere cellule élémentaire

33 / 37
Algorithme de Viterbi

Phase centrale : deuxième cellule élémentaire

34 / 37
Algorithme de Viterbi

Phase centrale : troisième cellule élémentaire

35 / 37
Algorithme de Viterbi

Phase finale : on sait que les M derniers blocs correspondent à la


phase finale pendant laquelle seuls les "0" (trait plein) sont
introduits.
Premier "0" de queue :

36 / 37
Algorithme de Viterbi

Phase finale : deuxième "0" de queue.

Le dernier trajet survivant est le plus vraisemblable et correspond


au message [ 1 0 0 1 1 ] . L’erreur de transmission a ainsi été
corrigée.

37 / 37

Vous aimerez peut-être aussi