Beruflich Dokumente
Kultur Dokumente
Plan
1 Les codes convolutifs binaires : structure de base
Introduction - Définitions
Codes Correcteurs d’Erreurs Générateur de séquences
Distance libre
Les codes convolutifs binaires
2 Décodeur de Viterbi
Décodage à maximum de probabilité
Marc Chaumont Le décodeur Viterbi
3 Connection avec les codes blocs
Distribution de poids
November 12, 2008 Connection code convolutif - code blocs
Construction ”zero-tail”
Construction par troncature directe
Construction ”tail-biting”
Les codes convolutifs binaires : structure de base Introduction - Définitions Les codes convolutifs binaires : structure de base Introduction - Définitions
Décodeur de Viterbi Générateur de séquences Décodeur de Viterbi Générateur de séquences
Connection avec les codes blocs Distance libre Connection avec les codes blocs Distance libre
Introduits par Elias en 1954, ce sont probablement les codes les codes blocs versus codes convolutifs
plus populaires. On trouve ceux-ci dans de nombreuses applications Les ECC peuvent être divisés en 2 classes :
: communication sans fils (IMT-2000, GSM, IS-95), communica-
les codes en bloc : Ils traitent chaque bloc d’information
tion terrestre et satellitaire, communication spatialle. Leur méthode
indépendamment les uns des autres.
de décodage la plus populaire repose sur l’algorithme de Viterbi.
Récemment, il a été montré que les codes convolutifs combinés les codes convolutifs : La sortie d’un codeur convolutif
avec l’entrelacement dans les schémas de concaténation pouvait dépend d’un symbole courant à coder ainsi que du symbole
s’approcher de la limite théorique de Shannon. précédent et du résultat de codage du symbole précédent.
Note : le taux ou rendement de ce code convolutif est de 1/2 (2 Note : L’arc le plus haut dans la transition entre l’état s[i] et l’état s[i +1]
bits produits pour 1 bit d’information). est causée par un bit nul en entrée (u[i] = 0).
Marc Chaumont Introduction Marc Chaumont Introduction
Les codes convolutifs binaires : structure de base Introduction - Définitions Les codes convolutifs binaires : structure de base Introduction - Définitions
Décodeur de Viterbi Générateur de séquences Décodeur de Viterbi Générateur de séquences
Connection avec les codes blocs Distance libre Connection avec les codes blocs Distance libre
Codeur à m mémoires
Un codeur à m mémoires sera référencé codeur m-mémoires.
Dans l’exemple précédent m=2.
Longueur de contrainte
Etat initial Information Etat final Sortie
s0 [i]s1 [i] u[i] s0 [i + 1]s1 [i + 1] v [i]v (1) [i]
(0)
La longueur de contrainte K d’un codeur convolutif correspond
00 0 00 00
00 1 10 11 au nombre de temps horloge influençant les sorties du codeur. Pour
01 0 00 11
01 1 10 00 un 1/2-taux codeur, K=m+1.
10 0 01 10
10 1 11 01
11
11
0
1
01
11
01
10
Dans l’exemple précédent les temps i, i − 1 et i − 2 influencent les
sorties du décodeur au temps i. K vaut donc 3.
Note : i représente le temps horloge.
Les codes convolutifs binaires : structure de base Introduction - Définitions Les codes convolutifs binaires : structure de base Introduction - Définitions
Décodeur de Viterbi Générateur de séquences Décodeur de Viterbi Générateur de séquences
Connection avec les codes blocs Distance libre Connection avec les codes blocs Distance libre
Générateur de séquences (ou générateurs) du code Exemple : Générateur de séquences (ou générateurs) du
convolutif code convolutif
Générateur de séquences (ou générateurs)
Soit g0 , ..., gn−1 les réponses impulsionelles d’un codeur convolutif
1/n-taux. Par réponse impulsionelle on entend séquences générées
pour l’ensemble des sorties v (j) , j = 0, ..., n − 1 lorsque le codeur
prend en entré une impulsion u = (10000...). Les réponses impul-
sionelles sont appelés générateurs.
Les codes convolutifs binaires : structure de base Introduction - Définitions Les codes convolutifs binaires : structure de base Introduction - Définitions
Décodeur de Viterbi Générateur de séquences Décodeur de Viterbi Générateur de séquences
Connection avec les codes blocs Distance libre Connection avec les codes blocs Distance libre
Les codes convolutifs binaires : structure de base Introduction - Définitions Les codes convolutifs binaires : structure de base Introduction - Définitions
Décodeur de Viterbi Générateur de séquences Décodeur de Viterbi Générateur de séquences
Connection avec les codes blocs Distance libre Connection avec les codes blocs Distance libre
Les codes convolutifs binaires : structure de base Les codes convolutifs binaires : structure de base
Décodage à maximum de probabilité Décodage à maximum de probabilité
Décodeur de Viterbi Décodeur de Viterbi
Le décodeur Viterbi Le décodeur Viterbi
Connection avec les codes blocs Connection avec les codes blocs
Décodage à maximum de probabilité pour un BSC Décodage à maximum de probabilité pour un BSC
Un décodage (du mot r ) à maximum de probabilité pour un BSC sélectionne le mot de code v qui maximise :
Y
n−1 p
dH (r [i],v [i])
P(r /v ) = (1 − p) ,
i=0
1−p
Les codes convolutifs binaires : structure de base Les codes convolutifs binaires : structure de base
Décodage à maximum de probabilité Décodage à maximum de probabilité
Décodeur de Viterbi Décodeur de Viterbi
Le décodeur Viterbi Le décodeur Viterbi
Connection avec les codes blocs Connection avec les codes blocs
Décodage à maximum de probabilité pour un AWGN Décodage à maximum de probabilité pour un AWGN
Un décodage (du mot r ) à maximum de probabilité sélectionne le mot de code v qui maximise
Y
n−1
1 − 1 (r [i]−m(v [i]))2
P(r /v ) = √ e No
i=0 πNo
Plan
Décodeur de Viterbi
1 Les codes convolutifs binaires : structure de base
Introduction - Définitions L’algorithme de Viterbi permet à la réception d’un mot r de
Générateur de séquences déterminer le mot de code v le plus proche (à maximum de proba-
Distance libre bilité).
2 Décodeur de Viterbi
Décodeur de Viterbi
Décodage à maximum de probabilité
Le décodeur Viterbi L’algorithme de Viterbi est un algorithme de programmation dy-
namique et prend en compte la structure répétitive du treillis.
3 Connection avec les codes blocs
Distribution de poids Remarque : L’algorithme de Viterbi est un algorithme de calcul de
Connection code convolutif - code blocs chemin le plus court (distance = poids de Hamming ou distance =
Construction ”zero-tail” distance Euclidienne ou ...) et est à peu de chose près l’algorithme
Construction par troncature directe de Dijkstra (algorithmique des graphes).
Construction ”tail-biting”
Les codes convolutifs binaires : structure de base Les codes convolutifs binaires : structure de base
Décodage à maximum de probabilité Décodage à maximum de probabilité
Décodeur de Viterbi Décodeur de Viterbi
Le décodeur Viterbi Le décodeur Viterbi
Connection avec les codes blocs Connection avec les codes blocs
Les codes convolutifs binaires : structure de base Les codes convolutifs binaires : structure de base
Décodage à maximum de probabilité Décodage à maximum de probabilité
Décodeur de Viterbi Décodeur de Viterbi
Le décodeur Viterbi Le décodeur Viterbi
Connection avec les codes blocs Connection avec les codes blocs
Nous allons dérouler le décodeur dans le cadre où les 2 premiers bits
ont été erronés lors de la transmition :
Le mot de code à l’émission est 11 10 00 01 01 00 10 11 00
00,
Le mot reçu est 00 10 00 01 01 00 10 11 00 00;
Le codeur (et le décodeur) partent dans l’état 0 et retourne à l’état
0 en fin de codage. Puisque l’on force le codeur à revenir dans l’état
0, 2 zéros ont donc été ajoutés au message avant codage (pour le
codeur 2-mémoires 1/2-taux).
Les codes convolutifs binaires : structure de base Les codes convolutifs binaires : structure de base
Décodage à maximum de probabilité Décodage à maximum de probabilité
Décodeur de Viterbi Décodeur de Viterbi
Le décodeur Viterbi Le décodeur Viterbi
Connection avec les codes blocs Connection avec les codes blocs
Les codes convolutifs binaires : structure de base Les codes convolutifs binaires : structure de base
Décodage à maximum de probabilité Décodage à maximum de probabilité
Décodeur de Viterbi Décodeur de Viterbi
Le décodeur Viterbi Le décodeur Viterbi
Connection avec les codes blocs Connection avec les codes blocs
Les codes convolutifs binaires : structure de base Les codes convolutifs binaires : structure de base
Décodage à maximum de probabilité Décodage à maximum de probabilité
Décodeur de Viterbi Décodeur de Viterbi
Le décodeur Viterbi Le décodeur Viterbi
Connection avec les codes blocs Connection avec les codes blocs
Les codes convolutifs binaires : structure de base Les codes convolutifs binaires : structure de base
Décodage à maximum de probabilité Décodage à maximum de probabilité
Décodeur de Viterbi Décodeur de Viterbi
Le décodeur Viterbi Le décodeur Viterbi
Connection avec les codes blocs Connection avec les codes blocs
Les codes convolutifs binaires : structure de base Les codes convolutifs binaires : structure de base
Décodage à maximum de probabilité Décodage à maximum de probabilité
Décodeur de Viterbi Décodeur de Viterbi
Le décodeur Viterbi Le décodeur Viterbi
Connection avec les codes blocs Connection avec les codes blocs
Les codes convolutifs binaires : structure de base Les codes convolutifs binaires : structure de base
Décodage à maximum de probabilité Décodage à maximum de probabilité
Décodeur de Viterbi Décodeur de Viterbi
Le décodeur Viterbi Le décodeur Viterbi
Connection avec les codes blocs Connection avec les codes blocs
l’état j. La distribution de poids de ce code est A(x) = 1 + x 2 + 3x 3 + 2x 4 + x 5 . La distance minimale de ce code est
Illustration avec le codeur 2-mémoires 1/2-taux Illustration avec le codeur 2-mémoires 1/2-taux
Soit C un code convolutif 2-mémoires 1/2-taux (rem : la distance
libre df = 5). Soit C un code convolutif 2-mémoires 1/2-taux (df = 5). La construction
en ”zero-tail” est le code linéaire en bloc [10, 3, 5] de matrice génératrice
:
Soit le vecteur u 0 composé de 3 bits d’information suivi de m = 2
1 1 1 0 1 1 0 0 0 0
zéros. Le code est alors tel que : G = 0 0 1 1 1 0 1 1 0 0
les mots de code obtenus sont de taille (3 + m) × n = (3 + 2) × 0 0 0 0 1 1 1 0 1 1
2 = 10 bits, La séquence de distribution de poids de ce code est A(x) = 1 + 3x 5 +
la quantité d’information codée pour un tel code est de 3 bits, 3x 6 + x 7 . Le poids le plus faible (en mettant à part le poids du vecteur 0)
la distance minimum est égale à la distance libre. pour ce code est 5 ; la distance minimum (distance libre) est donc de 5.
La construction en ”zero-tail” est donc un code linéaire en bloc [10, 3, 5].
La matrice génératrice est (cf transparent précédent):
Le taux pour ce code est de 3/10 = 0.3 (bit d’information/bits trans-
1 1 1 0 1 1 0 0 0 0 mis). Le taux pour le code convolutif intitial est meilleur (1/2 = 0.5 bit
G = 0 0 1 1 1 0 1 1 0 0 d’information/bits transmis).
0 0 0 0 1 1 1 0 1 1
Illustration avec le codeur 2-mémoires 1/2-taux Illustration avec le codeur 2-mémoires 1/2-taux
Soit C un code convolutif 2-mémoires 1/2-taux (rem : la distance Soit C un code convolutif 2-mémoires 1/2-taux (df = 5). La construction
libre df = 5). en troncature directe donne le code linéaire en bloc [6, 3, dDT ] de matrice
génératrice :
Si le vecteur d’information est composé de 3 bits, le code linéaire 1 1 1 0 1 1
obtenu est tel que : G = 0 0 1 1 1 0
0 0 0 0 1 1
les mots de code obtenus sont de taille 3 × n = 3 × 2 = 6 bits,
La séquence de distribution de poids de ce code est A(x) = 1 + x 2 +
la quantité d’information codée pour un tel code est de 3 bits.
3x 3 + 2x 4 + x 5 . Le poids le plus faible (en mettant à part le poids du
La construction en troncature directe est donc un code linéaire en bloc [6,
vecteur 0) pour ce code est 2 ; la distance minimum dDT = 2.
3, dDT ]. La matrice génératrice est :
1 1 1 0 1 1 Le taux pour ce code est de 3/6 = 1/2 (bit d’information/bits trans-
G = 0 0 1 1 1 0 mis). Le taux pour le code convolutif initial est le même (1/2 = 0.5 bit
0 0 0 0 1 1 d’information/bits transmis).
Illustration avec le codeur 2-mémoires 1/2-taux Illustration avec le codeur 2-mémoires 1/2-taux
Soit C un code convolutif 2-mémoires 1/2-taux (rem : la distance Soit C un code convolutif 2-mémoires 1/2-taux (df = 5). La construction
libre df = 5). en ”tail-biting” donne le code linéaire en bloc [10, 5, dTB ] de matrice
génératrice :
Si le vecteur d’information est composé de 5 bits, le code linéaire 1 1 1 0 1 1 0 0 0 0
0 0 1 1 1 0 1 1 0 0
obtenu est tel que :
0 0 0 0 1 1 1 0 1 1
G =
les mots de code obtenus sont de taille 5 × n = 5 × 2 = 10 bits, 1 1 0 0 0 0 1 1 1 0
la quantité d’information codée pour un tel code est de 5 bits. 1 0 1 1 0 0 0 0 1 1
La construction en troncature directe est donc un code linéaire en bloc
[10, 5, dTB ]. La matrice génératrice est : La séquence de distribution de poids de ce code est A(x) = 1 + 5x 3 +
5x 4 + 6x 5 + 10x 6 + 5x 7 . Le poids le plus faible (en mettant à part le poids
1 1 1 0 1 1 0 0 0 0
0 0 1 1 1 0 du vecteur 0) pour ce code est 3 ; la distance minimum dDT = 3 < df = 5.
1 1 0 0
G = 0 0 0 0 1 1 1 0 1 1
1 1 0 0 0 0 1 1 1 0
Le taux pour ce code est de 3/6 = 1/2 (bit d’information/bits trans-
1 0 1 1 0 0 0 0 1 1 mis). Le taux pour le code convolutif intitial est le même (1/2 = 0.5 bit
d’information/bits transmis).
Marc Chaumont Introduction Marc Chaumont Introduction
Distribution de poids
Les codes convolutifs binaires : structure de base Connection code convolutif - code blocs
Décodeur de Viterbi Construction ”zero-tail”
Connection avec les codes blocs Construction par troncature directe
Construction ”tail-biting”
La
P2séquence de distribution de poids du code CTB est A(x) =
m −1
l m
j=0 Ωj,j (x), avec l le nombre de transitions, j ∈ [0, 2 − 1] l’état
d’arrivée et de départ dans le treillis.