19
UFR de Sciences Université de Caen THEORIE DE L’INFORMATION ___ CODAGE DE CANAL CODES DE CONVOLUTION ___ G.BINET MdC 61 T_info_c_convol p.1

c-c-code-convolution.pdf

Embed Size (px)

Citation preview

UFR de Sciences Université de Caen

THEORIE DE L’INFORMATION

___

CODAGE DE CANAL

CODES DE CONVOLUTION

___

G.BINET MdC 61 T_info_c_convol p.1

UFR de Sciences Université de Caen

CODAGE DE CANAL CODES DE CONVOLUTION

I. PRINCIPE I.1 La convolution :

Schéma de principe :

Convolution et polynômes :

I.2 Propriétés : Longueur de contrainte :

Début du codage, initialisation du registre :

Fin du codage :

I.3 Généralisation de l'encodage de convolution :

II. FONCTIONNEMENT TEMPOREL

III. METHODE POLYNOMIALE

IV REPRESENTATIONS GRAPHIQUES

IV.1 Etat présent – état suivant : IV.2 Arbre du code :

Conventions usuelles:

Un exemple :

IV.3 Treillis du code : Cellule élémentaire:

Phase initiale :

Phase finale :

IV.4 Diagramme d'état :

G.BINET MdC 61 T_info_c_convol p.2

UFR de Sciences Université de Caen

V. DECODAGE DE CONVOLUTION

V.1 Maximum de vraisemblance : Rôle du décodeur :

Règle de décodage :

Cas du canal binaire symétrique :

V.2 Algorithme de Viterbi : Principe :

Phase initiale :

Phase centrale :

Phase finale :

G.BINET MdC 61 T_info_c_convol p.3

UFR de Sciences Université de Caen

CODAGE DE CANAL CODES DE CONVOLUTION

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 à qualques registres à décalage. Introduits par Elias (1955) ils permettent de

générer en ligne le code sans passer par une bufferisation préalable comme c'est le cas avec les codes BCH ou

RS.

I. PRINCIPE I.1 La convolution :

Le problème du codage se schématise par :

Encodeur

m(t) message

x(t) code

m(t) et x(t) sont des signaux discrets dont les échantillons sont binaires. Si l'encodeur est un système linéaire, x(t)

peut être généré par un produit de convolution ⇒ code de convolution.

∑=

=M

0 ii-jij m g x

Le système de convolution utilisé est de type non récursif (système RIF).

Schéma de principe :

En binaire l'opération de convolution se réalise très simplement par :

En se rappelant que : gi = 0 ⇒ connexion absente

q-1 q-1 q-1 q-1

g0 g1 g2 g3 gM-1 gM

m(t)

Registre de M bascules

x(t)

gi = 1 ⇒ connexion présente

G.BINET MdC 61 T_info_c_convol p.4

UFR de Sciences Université de Caen

Convolution et polynômes :

L'opération de convolution se représente mathématiquement par le produit polynomial :

x(D) = g(D).m(D)

ce qui est une opération formellement identique à celle de génération d'un code cyclique mais ici, on ne

recherche plus les caractéristiques code de bloc et codage systématique.

I.2 Propriétés :

Longueur de contrainte : paramètre K.

La longueur de contrainte est le nombre d'instants d'échantillonnage pendant lequel un bit du message

participe à l'élaboration du mot de code (la sortie). En regardant le schéma précédent il vient :

K = M + 1

Début du codage, initialisation du registre :

Par convention, nous prenons comme instant initial la présence du bit m0 à l'entrée de l'encodeur.

L'expression mj-i pour le message n'existe que pour (j-i) ≥ 0. Quelles valeurs initiales utiliser pour l'élaboration

des premiers échantillons de la sortie qui font intervenir (j-i) < 0 ? Par convention, les registres sont initialisés à

"0" ce qui implique des conditions initiales nulles. Le nombre d'instants d'échantillonnage pendant lesquels ces

conditions initiales influent sur la sortie est K – 1 = M.

Fin du codage :

Pour un message de longueur L, mj-i n'est défini que pour (j-i) < L. Le codage est en cours tant que le

dernier bit mj-L+1 du message est actif sur l'élaboration de la sortie c'est-à-dire présent en sortie de la dernière

bascule du registre. Cependant entre sa présence en entrée de l'encodeur et sa présence en sortie du registre, les

bascules doivent toutes avoir une indication d'entrée d'où la nécessité de placer des bits supplémentaires après le

message : la "queue" du message. Par convention ces bits de queue sont des "0" et il est nécessaire d'en placer M

qui pratiquement servent à réinitialiser les bascules du registre.

La conséquence de ceci est que pour un message de longueur L nous obtiendrons un mot de code de

longueur L+M.

I.3 Généralisation de l'encodage de convolution :

Pour améliorer le codage, il

est possible de réaliser à partir du

même message n séquences de

convolution différentes qui seront

entrelacées. C'est ce qui est montré

sur la figure ci-contre pour une

longueur de contrainte de K = 3 (2

bascules, M = 2 ) avec un

entrelacement en sortie n = 2.

n=2

mi mi-2 mi-1 x(t)q-1q-1m(t)

G.BINET MdC 61 T_info_c_convol p.5

UFR de Sciences Université de Caen

n=3

k=2

q-1x(t)

q-1

D'autres possibilités d'entrelacement

sont envisageables comme traiter

les bits d'entrée par paquets de k

bits et les entrelacer en sortie. C'est

ce qui est figuré ci-contre avec k= 2,

n = 3 et une longueur de contrainte

K = 2.

m(t)

Cela définit de manière plus générale :

1. la longueur effective du message d'entrée : k.L

2. la longueur du message de sortie : n.( L + M )

3. le rapport de code : r = (k L) / ( n.(L+M)). En général L >> M ⇒ r ≈ k / n

II. FONCTIONNEMENT TEMPOREL

Nous le traiterons sur un exemple simple avec un rapport de code r = ½. Le principe est préservé dans le

cas général qui ne fait qu'augmenter la complexité des calculs.

Cet exemple pour lequel M= 2 génère deux séquences qui seront entrelacées selon le principe suivant :

q-1 q-1mi x(t) mi-1 mi-2

n=2

m(t)

∑=

=M

0 ii-j

(1)i

(1)j m g x avec gi

(1) = [g0(1) g1

(1) g2(1) ] = [ 0 0 1 ]

∑=

=M

0 ii-j

(2)i

(2)j m g x avec gi

(2) = [g0(2) g1

(2) g2(2) ] = [ 1 1 1 ]

G.BINET MdC 61 T_info_c_convol p.6

UFR de Sciences Université de Caen

La convolution se calcule sur K bits (ici K = 3) et tous les cas possibles peuvent se représenter dans un tableau :

la table de convolution.

Combinaisons d'entrée [ g0(1) g1

(1) g2(1) ] = [ 0 0 1 ] [ g0

(2) g1(2) g2

(2) ] = [ 1 1 1 ]

[ mj mj-1 mj-2 ] xj

(1) xj(2)

0 0 0 0 0

0 0 1 1 1

0 1 0 0 1

0 1 1 1 0

1 0 0 0 1

1 0 1 1 0

1 1 0 0 0

1 1 1 1 1

Avec le message m = [m0 m1 m2 …..mL-1 ] = [ 1 0 0 1 1 ] (ici L= 5) :

j remarque [ mj mj-1 mj-2 ] xj

(1) xj(2)

0 Deux "0" d'initialisation [ m0 0 0 ] = 1 0 0 0 1

1 Un "0" d'initialisation [ m1 m0 0 ] = 0 1 0 0 1

2 [ m2 m1 m0 ] = 0 0 1 1 1

3 [ m3 m2 m1 ] = 1 0 0 0 1

4 [ m4 m3 m2 ] = 1 1 0 0 0

5 Un "0" de queue [ 0 m4 m3 ] = 0 1 1 1 0

6 Deux "0" de queue [ 0 0 m4 ] = 0 0 1 1 1

Ceci fournit donc le mot de code : x = [ 0 1 0 1 1 1 0 1 0 0 1 0 1 1 ]

III. METHODE POLYNOMIALE

La convolution est représentée dans le corps des polynômes par un simple produit polynomial. En reprenant

l'opérateur de position D déjà défini dans l'étude des codes cycliques nous définissons les polynômes générateurs

du code soit :

∑=

=M

0 i

i)m(i

)m( D g )D(g

Nous associons au message le polynôme : ∑=

=1-L

0 j

jj D m )D(m

Avec l'exemple utilisé :

g(1)(D) = D2 g(2)(D) = 1 + D + D2 m(D) = 1 + D3 + D4 .

G.BINET MdC 61 T_info_c_convol p.7

UFR de Sciences Université de Caen

Nous pouvons ainsi effectuer les produits polynomiaux:

x(1)(D) = g(1)(D).m(D) = ( D2 ).( 1 + D3 + D4 )

= D2 + D5 + D6

x(2)(D) = g(2)(D).m(D) = ( 1 + D + D2 ).( 1 + D3 + D4 ) = 1 + D3 + D4

+ D + D4 + D5

+ D2 + D5 + D6

= 1 + D + D2 + D3 + D6

Soit, en entrelaçant les coefficients des deux polynômes :

x = [ 0 1 0 1 1 1 0 1 0 0 1 0 1 1 ]

IV REPRESENTATIONS GRAPHIQUES

Il existe trois représentations graphiques équivalentes pour représenter les propriétés structurales d'un

encodeur de convolution. Elles sont d'un grand intérêt pour comprendre le fonctionnement du codeur et aussi

surtout du décodeur.

IV.1 Etat présent – état suivant : La description des diverses représentations graphiques est plus simple et systématique si nous utilisons

les concepts développés dans la logique séquentielle :

A un instant présent t = j.Ts, l'état des bascules est défini par les K-1 bits de sortie : [ mj-1……mj-K+1 ] et

nous pouvons atteindre seulement deux états différents liés à la nature du bit mj. Les K bits pris en

compte pour le calcul du code sont : mj mj-1……mj-K+1.

De l'instant t = j.Ts à l'instant t = (j+1).Ts le passage se fait donc par un changement d'état :

de l'état présent [ mj-1……mj-K+1 ] à l'état suivant [ mj……mj-K+2 ] avec seulement deux possibilités

chacune réalisant son codage (sortie).

Nous pouvons donc systématiquement explorer les 2K-1 états possibles ainsi que les deux transitions

possibles pour chacun d'entre eux. Ceci est directement apparent sur la table de convolution : l'état

présent est constitué des K-1 bits de droite de la 1ère colonne de la table (on exclut le bit de gauche mj)

et l'état suivant est défini par les K-1 bits de gauche de cette même colonne (on exclut le bit de droite

mj-K+1).

La sortie, c'est-à-dire le codage réalisé est constitué de l'ensemble des colonnes donnant le résultat de la

convolution.

Avec notre exemple :

K = 3 ⇒ 2K-1 = 4 états internes. Les états sont repérés par des lettres : a → (00), b → (01), c → (10), d →

(11). L'état présent est constitué par les deux bits de droite de la combinaison d'entrée active et l'état suivant sera

caractérisé par les deux bits de gauche. La "sortie" correspondant au passage de l'un à l'autre est constituée de

l'indication des colonnes xj(1) xj

(2).

G.BINET MdC 61 T_info_c_convol p.8

UFR de Sciences Université de Caen

Etat

suivant Combinaisons d'entrée

Etat

présent

[ g0(1) g1

(1) g2(1) ] =

[ 1 0 1 ]

[ g0(2) g1

(2) g2(2) ] =

[ 1 1 1 ]

[ mj mj-1 mj-2 ] xj

(1) xj(2)

a 0 0 0 a 0 0

a 0 0 1 b 1 1

b 0 1 0 c 0 1

b 0 1 1 d 1 0

c 1 0 0 a 0 1

c 1 0 1 b 1 0

d 1 1 0 c 0 0

d 1 1 1 d 1 1

Nous pouvons en déduire les éléments de base du graphe avec pour convention :

mj = 0, déplacement vers le haut

mj = 1, déplacement vers le bas

01

00

c

a

a

10

11

c

b

a

00

01

d

c

b

11

10

d

d

b 0

1

IV.2 Arbre du code :

Il représente la succession des états possibles. Ce sera donc une arborescence constituée des éléments de

base précédents et dont la complexité ira croissant.

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

Un exemple :

En reprenant le tableau précédent nous pouvons établir l'arbre de la page suivante :

G.BINET MdC 61 T_info_c_convol p.9

UFR de Sciences Université de Caen

a a

c

00

01

a00

01 c b

d

01

00

b a

c

11

10

d b

d

10

11

a a

c

00

01

c b

d

01

00

b a

c

11

10

d b

d

10

11

a a

c

00

01

c b

d

01

00

b a

c

11

10

d b

d

10

11

a a

c

00

01

c b

d

01

00

b a

c

11

10

c

01

00

b

11

10

d

10

11

a

00

01

c

01

00

b

11

10

d 11 b

d

10

11

d11

10

00 a

01

c

01

00

b

11

10

00 d

10

a

01

c

01

01

a

1

0

00

00

Pour le message m = [m0 m1 m2 …..mL-1 ] = [ 1 0 0 1 1 ] nous vérifions bien l'obtention du mot de code :

x = [ 0 1 0 1 1 1 0 1 0 0 1 0 1 1 ].

G.BINET MdC 61 T_info_c_convol p.10

UFR de Sciences Université de Caen

Remarques :

Avec la méthode proposée, on remarquera à un instant donné la périodicité des états possibles (colonne

de l'arbre) ainsi que celle des sorties possibles. Cette périodicité est de 2K-1.

Nous n'avons accès à tous les états possibles qu'après évacuation des conditions initiales nulles ce qui

représente M = K-1 instants (ici M = 2)

Pour que le codage soit complet il ne faut pas oublier de placer M zéros de queue.

IV.3 Treillis du code :

L'inconvénient essentiel de l'arbre du code est que l'arborescence est multipliée par 2 à chaque bit

supplémentaire et la représentation devient vite impossible à réaliser. Les remarques faites sur le nombre limité

d'états possibles va nous permettre de compacter ce graphe en attribuant à chaque instant un noeud à un état.

Par convention la représentation 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.

Cellule élémentaire:

En utilisant soit l'arbre du code soit les éléments de base constitutifs nous pouvons dessiner une cellule

élémentaire du treillis reliant l'instant t à l'instant t+1. Cette cellule comporte 2K-1 entrées et sorties.

Pour l'exemple choisi dans les chapitres précédents nous obtenons :

p(yi/xi) = p si yi ≠ xi

11

10

00

01

10

11

01b

a 00 a

b

c c

d d

G.BINET MdC 61 T_info_c_convol p.11

UFR de Sciences Université de Caen

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 cellules correspondant à cette phase initiale.

01

00

00

01

01

00

b

a a

c

d

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 cellules ne comportant que ces transitions.

11

00

10

01

11

00 a a

b

c

d

Avec ce treillis nous vérifions que le message m = [m0 m1 m2 …..mL-1 ] = [ 1 0 0 1 1 ] génère bien le mot de

code :

x = [ 0 1 0 1 1 1 0 1 0 0 1 0 1 1 ]. Cellule

élémentairePhase finale

Phase initiale

G.BINET MdC 61 T_info_c_convol p.12

UFR de Sciences Université de Caen

IV.4 Diagramme d'état :

Cette opération consiste en une contraction de la cellule élémentaire du treillis sur un graphe orienté où :

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.

10

10

11

00

11

00

01

01

d

a

b c

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 :

[ 0 1 0 1 1 1 0 1 0 0 1 0 1 1 ] sans oublier les "0" de queue.

G.BINET MdC 61 T_info_c_convol p.13

UFR de Sciences Université de Caen

V. DECODAGE DE CONVOLUTION

C'est donc une opération de déconvolution qui, en cas d'erreur, doit réaliser l'estimation la plus probable

pour corriger cette erreur.

V.1 Maximum de vraisemblance :

Le schéma de la transmission est :

Message m → code x → réception y = x + e

Rôle du décodeur :

Le décodeur doit faire la meilleure estimation de m qui correspond à la meilleure estimation de x (convolution =

relation linéaire ).

y → → x̂ m̂

Règle de décodage :

Connaissant y, l'estimation est optimale si la probabilité d'effectuer une erreur de décodage est minimale.

C'est l'expression simplifiée de la règle du maximum de vraisemblance et correspond à la valeur qui rend

maximale la probabilité conditionnelle p(y/

x̂x̂

x) soit : [ ]maxx )p(y/ x̂ = .

Tous les messages sont équiprobables, et la fonction logarithme est une fonction monotone. Il est équivalent

d'exprimer ce maximum de vraisemblance en optimisant le Ln d'où :

[ ] ] )p(y/ Ln[ max x̂ x→

Cas du canal binaire symétrique :

Si le canal binaire symétrique est sans mémoire, tous les bits du message sont statistiquement

indépendants et :

[ ] [ ]∑∏==

=⇒=N

1ixix

N

1ixix )/p(y Ln )/y(p Ln )/p(y )/y(p

ii

Pour le canal binaire symétrique de probabilité d'erreur de transmission p :

p(yi/xi) = p si yi ≠ xi

p(yi/xi) = 1-p si yi = xi

Si y et x diffèrent de d bits, d est la distance de Hamming entre les deux codes et pour un mot de code de N bits :

[ ] p)-(1Ln N p-1p Ln d ) p-1 Ln( ) d - N ( (p)Ln d )/y(p Ln x +

=+=

Il est plausible que p < 1/2 ⇒ d.Ln[ p/(1-p) ] < 0 et comme N.Ln(1-p) est une constante, Ln[ p(y/x) ] est

maximum si d est minimum. Dans ce cas le maximum de vraisemblance s'exprime par :

Pour un canal binaire symétrique, nous devons choisir de manière à

minimiser la distance de Hamming entre x et y

G.BINET MdC 61 T_info_c_convol p.14

UFR de Sciences Université de Caen

Pour cela, x est bien sûr inconnu mais nous avons à notre connaissance le treillis du code et, à la réception de y,

nous chercherons à minimiser la distance de Hamming entre le code reçu et tous les codes possibles. Le plus

"proche de y" constituera l'estimation la plus vraisemblable.

V.2 Algorithme de Viterbi :

Tout ces résultats théoriques n'ont d'intérêt que si leur application peut se faire de manière simple. C'est

ici le cas grâce à la méthode de déconvolution proposée par Viterbi.

11

10

00

01

10

11

01 b

a 00 aNous l'expliquerons sur un exemple en utilisant le

code du chapitre IV dont le treillis est rappelé ci-contre.

Avec ce treillis, nous avons obtenu le codage : bm = [m0 m1 m2 …..mL-1 ] = [ 1 0 0 1 1 ]

→ x = [ 0 1 0 1 1 1 0 1 0 0 1 0 1 1 ]

Supposons une erreur de transmission telle que : c cy = [ 0 1 0 1 0 1 0 1 0 0 1 0 1 1 ]

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. d dIci M = 2.

Principe :

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

G.BINET MdC 61 T_info_c_convol p.15

UFR de Sciences Université de Caen

Phase initiale :

Elle dure M coups et les états ne peuvent être atteints que d'une seule façon. Durant cette phase il n'y a donc pour

un état suivant qu'une seule distance et aucun "trajet" ne sera rejeté. L'état initial est nécessairement l'état interne

"0" soit a dans notre exemple.

1

1

0

201

0

1Code reçu → 01

d

c

b

a

Phase centrale :

Tous les états sont atteignables de deux manières et à chaque étape nous décidons de ne conserver que les trajets

correspondants pour chaque état possible à une distance minimale : les survivants.

22

22

31

1

301

1

1

0

201

0

1Code reçu → 01

d

c

b

a

Survivants

2

2

2

1

1

01

1

1

0

201

0

101

2

G.BINET MdC 61 T_info_c_convol p.16

UFR de Sciences Université de Caen

étape suivante :

11

2

22

2 33

31

42

22

0101

1

1

0

201

0

1 01

Survivants

3

1

2

2

3

201

2

22

2

1

01

1

1

0

201

0

1 01

étape suivante :

5 1

3 3

4 2

4

2 00

3

2

0

1

1

01

1

2

2

23

2

1

20101

0

1 01

Survivants

1

3 3

2

2 00

1

2

201

2

2

1

01

0

201

0

1 01

G.BINET MdC 61 T_info_c_convol p.17

UFR de Sciences Université de Caen

Phase finale :

Nous savons que les M derniers blocs correspondent à la phase finale pendant laquelle seuls les "0"

(trait plein) sont introduits.

Premier zéro de queue :

103 3

5 1

1

2001

0

01 2

0

01

1

2

2

2

1

2

3

3

20101

Deuxième zéro de queue :

1

2

200

1

201

1

01

0

01

0

01

1

3 3

10

11

1 5

1

2

200

1

201

1

01

0

01

0

01

1

3 3

10

1

1

00

1

1

0101

0

01

0

01

1

10 11

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.

G.BINET MdC 61 T_info_c_convol p.18

UFR de Sciences Université de Caen

G.BINET MdC 61 T_info_c_convol p.19