Académique Documents
Professionnel Documents
Culture Documents
Université de Maroua
École Nationale Supérieure Polytechnique de Maroua
Département Informatique et Télécommunications
Enseignant: LAOUKOURA CHARLES
UE 539 : Codes Correcteurs 2 (IC5)
Année académique : 2023-2024
Le polynôme générateur g(x) d’un code BCH primitif construit sur un corps de
Galois GFq avec q2m éléments, de distance construite d (d= 2t+2 ou 2t+1),
possède (d−1) racines. Le code BCH est dit primitif car les racines de son polynôme
générateur sont des puissances de α, élément primitif du corps de Galois GFq.
Où
1
Les paramètres d’un code BCH primitif de distance construite d = 2t + 1 sont les
suivants :
Exemple
Soit un code BCH primitif de distance construit d 2t 1 avec m 4 et t 2.
1) Déterminer la valeur de N et le corps de Galois utilisé.
2) Déterminer le polynôme générateur.
3) Déterminer les paramètres de ce code.
Solution :
Le P.P.C.M des polynômes max et ma3 x est évidemment égal au produit de ces
deux polynômes puisqu’ils sont irréductibles et ainsi, le polynôme générateur est égal
à:
En développant on obtient :
2
Finalement les paramètres de ce code BCH sont :
m 4; N 15; N K 8; K 7; t 2
Les codes de Reed-Solomon sont les codes à symboles non binaire les plus connus et
surtout les plus utilisés. Pour les codes à symboles non-binaires les plus connus et
surtout les plus utilisé.
Pour les codes à symboles non-binaires les coefficients j c des mots de code et d j des
blocs de donnée prennent leur valeur dans un corps de Galois GFq à q 2 m élément.
Ainsi, chaque symbole des codes peut être code sur m symboles binaires.
Les codes de Reed-Solomon étant des codes cycliques, ils sont engendrés par un
polynôme générateur gx diviseur de xn1 dont les coefficients gj j 0,1,..., NK1
prennent également leur valeur dans le corps de Galois GFq.
3
En général, le paramètre l est fixé à 0 ou à 1.
Un code dont la distance minimale est égale à N K 1 est appelé un code à distance
maximale.
Exemple
4
En utilisant les représentations binaires des éléments du corps GF 16
Le code de Golay, comme le code de Hamming est un code matriciel généré à partir
d’un polynôme générateur.
5
Ce code a néanmoins quelques particularités par rapport aux codes de Hamming sur
lesquels il est basé. Tout d’abord, il s’agit d’un code correcteur dit cyclique, c’est-à-
dire que toute permutation circulaire d’un mot de code reste un mot de code (un mot
de code correspond à des données encodées par la matrice génératrice). Les codes
cycliques ont aussi une particularité concernant leur polynôme générateur : ils
divisent le polynôme 𝑧 𝑛 + 1 (ou 𝑧 𝑛 − 1).
𝐻 (𝑧) = 𝑧 11 + 𝑧 10 + 𝑧 6 + 𝑧 5 + 𝑧 4 + 𝑧 2 + 1
En appliquant les divisions euclidiennes (pour connaître dans les détails ce type de
génération, voir le principe de fonctionnement du code de Hamming).
Pour obtenir le code de Golay (24,12,8) à partir du code de Golay (23,12,7), il suffit
de rajouter un bit de parité à la fin de la matrice génératrice obtenue. Pour obtenir ce
bit de parité, il suffit de faire la somme de tous les bits de la ligne considérée. Si cette
somme est égale à 0, alors le bit de parité ajouté sera 1. Si cette somme est égale à 1,
ce bit sera égal à 0.
Pour les codes convolutifs, chaque bloc de ns symboles binaires en sortie, dépend non
seulement des ne symboles binaires présents en entrée mais aussi des v blocs de ne
symboles binaires précédents. Par conséquent, ces codes introduisent un effet de
mémoire d’ordre v.
Chaque code convolutif est défini par les paramètres suivants :
Rendement du code : R ne /ns ;
Longueur de contrainte : K v 1
La figure I.1 donne un exemple d’un code convolutif de rendement R=1/2 et de
longueur du contrainte K =3.
6
Figure I.1- Exemple d’un code convolutif ( ne 1, ns 2, R 1/ 2, v 2, K 3 )
(I.1)
(I.2)
7
transitions entre les états tandis que le diagramme en arbre et celui en treillis
représentent l’évolution au cours du temps de ces états.
Le treillis est formé de nœuds reliés par des branches : les nœuds représentent les
différents états ( 2n ev états) possibles du code, les branches représentent les différentes
transitions ( 2v transitions) possibles d’un nœud à un autre (ou d’un état du code au
suivant) lors de l’arrivée d’un symbole d’entrée (transition en trait pointillé (resp. en
trait plein) pour l’arrivée d’un 0 (resp. d’un 1)).
Après K décalages, quelque soit l’état initial du code, le motif du treillis se répète.
8
Les chemins doivent être suffisamment distants les uns des autres pour avoir des
meilleures performances. Cette distinction est caractérisée par un paramètre
important qui caractérise les performances du code en terme de probabilité d’erreur,
appelé distance libre.
9
Figure I.4- Diagramme d’état associé au code convolutif de la figure I.1
10
L’algorithme de Viterbi utilise le treillis comme structure de données. Il est représenté
sur la figure 1.6. Supposons que la séquence reçue soit 11 00 11 11.
11
2. Addition : pour chaque nœud on calcule les métriques cumulées des chemins
aboutissant à ce nœud. Elles sont calculées par l’addition des métriques de branche et
des anciennes métriques cumulées correspond au même chemin.
Ces métriques apparaissent entre parenthèse sur chaque noeud concerné.
La première méthode utilisée pour le décodage des séquences protégées par des codes
convolutifs, a été l’algorithme séquentiel proposé par ozencraft en 1957.
Cette méthode a été repris e et modifiée par Fano. La stratégie adoptée par Fano
consiste en la recherche du chemin le plus probable à l'intérieur du diagramme en
arbre, en examinant une transition de mémoire à la fois. Ce type de recherche
appartient au genre de recherche depth-first. La recherche du chemin le plus
prometteur est conduite à l'aide d'une fonction de métrique PM adaptée à ce genre de
recherche.
La distance libre, est définie comme la plus petite distance de Hamming existant
entre deux chemins qui divergent puis convergent de nouveau.
12
Rappelons que la distance de Hamming entre deux chemins est égale au nombre de
symboles binaires codés différents entre les séquences associées à chacun des deux
chemins.
De ce fait, la distance libre est aussi égale au poids minimal des chemins qui
divergent puis convergent vers le chemin de poids nul. Le poids d’une séquence est le
nombre de bit égal à 1.
La distance libre de notre exemple de treillis est égale à 5. Elle correspond au chemin
(00-10-01-00) représenté en gras sur la figure I.5.
13
I.6 Quelques exemples des codes
Il existe des codes pour lesquels un nombre fini d'erreurs de transmission risque de
produire un nombre infinie d'erreurs en sortie du décodeur. Ces codes sont appelés
catastrophiques (figure I.6). Un code convolutif est catastrophique, s'il existe dans le
diagramme d'états un chemin fermé dont toutes les branches sont de poids nul.
Plus le rendement est faible, plus le code est performant. Mais, plus le rendement est
faible, plus la largeur de bande nécessaire à la transmission doit être importante.
On cherche donc à construire des codes ayant un rendement le plus élevé possible
(pour des raisons de temps et de coût) et permettant une fiabilité arbitrairement
grande.
La figure I.7 donne un exemple d’un code de rendement R=1/2 dont on supprime un
bit de sortie sur 4. Il devient un code de rendement R=2/3.
14
Figure I.7- Exemple de poinçonnage d’un code convolutif de rendement R=1/2
15
La technique de poinçonnage permet d’augmenter le rendement d’un code sans
augmenter la complexité de décodage.
BIBLIOGRAPHIE
16
ANNEXES (COMPLÉMENT COURS)
17
18
19
20
21
22
23
24
25
26
27
TRAVAUX DIRIGES
TD1 :
TD2 :
28
A. Combien de vecteurs d’erreur peuvent être corrigés par ce code?
B. Combien de bits peuvent être corrigés par ce code?
C. Est-ce que le code est systématique?
D. Est-ce que le code est linéaire? E. Quelle est la distance minimale du code?
F. Quel est le taux de code?
G. Si la séquence reçue est 010011, est-ce qu’il y a eu une erreur de transmission?
H. Avec l’information fournie, est-ce que vous pouvez donner une esquisse de
l’encodeur?
I. Avec l’information fournie est-ce que vous pouvez corriger les erreurs?
a. Si oui, comment?
b. Si non, quelle information additionnelle est requise?
TD3 :
Voici le diagramme de l’état d’un code convolutif avec longueur de contrainte quatre.
Les mots de codes sont indiqués à côté de chaque transition possible. L’état initial est
« a », l’état où tous les registres contiennent zéro. Donnez la séquence encodée quand
les données sont 1 1 1 0 1 0 0 0
29
TD4 :
La séquence suivante est reçue. 111 001 110 110 101 010
30
31
32
TD5 :
TD6 :
Voici le diagramme d’état d’un code convolutif. Les mots de codes sont indiqués à
côté de chaque transition possible. L’état initial est « a », l’état où tous les registres
contiennent zéro.
33
A. Quelle est la longueur de contrainte? Quel est le taux de code?
B. Complétez la feuille fournie (dernière page de l’examen) et mettez la feuille dans
votre cahier bleu. Pour chaque état, indiquez l’état des registres dans les boites
fournies. Pour chaque transition dans le treillis, indiquez le mot de code dans la boite
fournie.
C. Quelle est la distance de Hamming pour le chemin indiqué ici-bas? En autres
mots, quelle est la distance entre le chemin indiqué et le chemin composé uniquement
des états « a »?
Indications :
34
TD7 :
Quelle est la sortie du décodeur, c.-à-d. la séquence de cinq bits de données les plus
probables? Est-ce qu’il y a eu des erreurs pendant la transmission? Si oui, combien?
TD8 :
35
A. Quelle est l’implémentation en registres à décalage de l’encodeur?
B. Donnez la table des syndromes.
TD9 :
36