Upload
norte-andalus
View
3
Download
0
Tags:
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
x̂
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