WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

à‰tude des codes ldpc réguliers.

( Télécharger le fichier original )
par Lamia Nour El houda Meghoufel
université Djilali Liabes faculté de science de là¢â‚¬â„¢ingénieur  - Master 2 Génie Electrique spécialité Génie Informatique 2012
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

II.3.4. Génération du mot de code

? Matrice de génération de code

C'est une matrice notée G [21], elle sert à générer le mot de code Cm à partir du message Xm soit :

Cm=Xm.G II.4

Nous nous intéressons à des codes systématiques, la matrice G est donc de la forme :

G=[P Ik] II.5

G est une matrice (k, n), P une matrice (k, n-k) et Ik la matrice identité (k, k).

? Principe de réalisation du codeur

Chaque bit de parité s'exprime donc par [21] :

bi = .m1 p1

?? II.6
1=1

En binaire les Pji E {0, 1} et les bi sont obtenus par une simple addition binaire.

Le principe de la réalisation technique en est donc simple, il suffit de disposer de deux registres à décalage et un inverseur (switch électronique) ce qui donne la figure II.6 :

Figure II.6 : Principe de réalisation du codeur

II.3.5. Détection des erreurs de transmission

Pour détecter les erreurs de transmission, on doit tenir compte de deux facteurs qui sont les suivants [21] :

? Matrice de contrôle de parité

Nous définissons un espace dual engendré par la matrice H tel que :

H = [In-k PT] II.7

En décomposant les matrices nous obtenons :

G.HT = [P Ik] IIIn_k

?? ] = P + P = 0 II.8

En effet, P est constitué d'éléments binaires tels que : a + a = 0.

D'où la relation fondamentale :

G.HT = 0 II.9

? Syndrome :

On appelle syndrome le vecteur s de dimension M défini par :

ST = HxT II.10

Si S est un vecteur nul alors x est un mot de code, sinon le vecteur x contient des bits erronés. Il est possible de détecter la présence d'erreurs dans un mot de code par le calcul du syndrome.

Nous pouvons établir la relation servant de base à la détection d'erreurs pour tout mot de code:

Gm.HT = Xm.G.HT = 0 II.11

Le détecteur va utiliser cette relation. En effet, si le mot du code reçu Ym est entaché d'erreurs, nous pouvons l'exprimer sous la forme :

Code reçu = code émis + erreur Ym = Cm + Em II.12

En effectuant le contrôle :

Ym.HT = Cm.HT + Em. HT = Em. HT II.13

(v0, v1, ..., vn-1) ? C (vn-1, v0,..., vn-2) ? C

S'il n'y a pas eu des erreurs de transmission, alors on a :

Em. HT = 0 II.14

Em. HT est par définition le syndrome de l'erreur Sm , avec :

Sm = Ym. Em. HT = Em. HT II.15

Le syndrome ne dépend que de l'erreur de transmission commise et non du mot du code.

II.3.6. Famille des codes en blocs

Nous donnons ci-dessous une liste non exhaustive de familles de code en bloc linéaires. Les codes que nous considérons sont binaires ou sont définis sur une extension du corps à deux éléments. Nous noterons (n, k, d) un code linéaire défini sur un alphabet à q éléments de longueur n, de dimension k et de distance minimale d.

Nous avons choisi de ne lister ici que des familles de codes ayant un intérêt pratique (s'ils sont utilisés, typiquement Reed-Solomon ou BCH, ou susceptibles de l'être comme les codes géométriques) ou théorique [12].

? Les codes cycliques

Les codes cycliques forment une sous-classe des codes linéaires, et sont les plus utilisés en pratique [23]. Ils conjuguent en effet de nombreux avantages : leur mises-en oeuvre (codage/décodage) est facile, ils offrent une gamme étendue de codes, avec de nombreux choix de paramètres (n, k, d), et enfin permettent de corriger différents types d'erreurs, isolées ou par paquets.

Les codes cycliques sont des codes linéaires stables par permutation circulaire des coordonnées. Ils ont une forte structure mathématique : si on les voit comme des espaces vectoriels de polynômes (les coordonnées des mots deviennent les coefficients des polynômes). Un code linéaire C est dit cyclique s'il est stable par permutation circulaire des coordonnées. Donc, on peut écrire :

Si l'on représente le vecteur ci-dessus par le polynôme v(x) = v0 + v1x +.... + vn-1xn-1, alors la permutation circulaire d'une unité à droite correspond à la multiplication par x modulo xn-1.

? Codes de Hamming :

Ce code est lui aussi très simple mais a un bien meilleur taux de transmission. Pour le définir il est nécessaire d'introduire la notion de matrice de parité :

C'est une matrice H de taille (n - k) X n qui a pour noyau le code C tout entier. Ainsi si c ? C, on aura toujours HcT = 0, et uniquement dans ce cas là. Remarquons qu'un même code C peut avoir plusieurs matrices de parité différentes, de même qu'il peut avoir plusieurs matrices génératrices différentes.

On appellera syndrome d'un mot c l'élément S obtenu en calculant S = Hc.

Le code de Hamming est donc un code binaire défini par sa matrice de parité plutôt que par sa matrice génératrice [24]. C'est la matrice de dimension r X (2r -1) qui contient toutes les colonnes non nulles distinctes que l'on peut écrire sur r bits. Ainsi pour r = 3 on a :

? Les codes BCH (Bose-Chaudhuri-Hocquenghem)

Les codes BCH (Bose-Chaudhuri-Hocquenghem) binaires sont des codes cycliques particuliers. La famille des codes BCH contient les codes de Reed-Solomon qui servent pour la lecture des CD [25]. Lorsque le cardinal de l'alphabet sur lequel un code de Reed-Solomon est défini est une puissance de 2, alors il est possible de définir son sous-code binaire (les mots de code ayant des coefficients 0 ou 1).

Ce sous-code est stable par addition (la somme de deux mots binaires est un mot binaire) et donc linéaire. Un code de Reed-Solomon (n, k, d) avec q = 2m fournira un code BCH binaire (n, kÇ d'), avec k' est la nouvelle dimension et d' est la nouvelle distance du code BCH obtenu à partir du code de Reed-Solomon. La longueur est conservée, en revanche la distance minimale peut augmenter, et la dimension diminue fortement. Les valeurs exactes de d' et k' sont dépendantes de la structure du corps fini et ne peuvent être décrites par des formules closes simples.

Si g(x) est le polynôme générateur du code Reed-Solomon, alors, le code BCH aura pour générateur le polynôme binaire de plus bas degré multiple de g(x). Le décodage d'un code BCH sera très similaire au décodage du code de Reed-Solomon dont il est issu.

? Les codes de Reed-Solomon

Les codes de Reed-Solomon ont été développés par Reed et Solomon dans les années 50 [26] mais avaient déjà été construits par Bush [27] un peu avant, dans un autre contexte. Ces codes sont certainement les codes par blocs les plus utilisés pour la correction d?erreurs en étant présents dans les CD, les DVD et la plupart des supports de données numériques. Ils sont trés utilisés car ils sont extrêmaux du point de vue de la capacité de correction.

Les codes de Reed-Solomon sont des codes cycliques q-aires de longueur n = q -1. Le polynôme générateur d'un code de Reed-Solomon est de la forme :

g (x )= fl(x - a??)

??-1 II.16
??=1

Où a est un élément primitif du corps fini à q éléments. Il a pour degré d-1. Le code correspondant au polynôme générateur ci-dessus a pour longueur n = q-1, pour distance minimale d et

pour dimension k = n - d + 1. Nous avons donc affaire à des codes (n, k, n - k + 1).

Ces codes sont efficaces dans la correction d'erreurs par paquet du fait de leur structure. Ils ont été employés dans les communications spatiales et restent encore utilisées dans les codes concaténés.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Nous devons apprendre à vivre ensemble comme des frères sinon nous allons mourir tous ensemble comme des idiots"   Martin Luther King