• Aucun résultat trouvé

2.4 Codes Reed-Solomon

2.5.1 Représentation des codes LDPC

Il existe deux représentations usuelles des codes LDPC : le graphe biparti et la matrice de parité. Ces deux représentations sont totalement équivalentes, et l’on choisira l’une ou l’autre en fonction du niveau de simplification qu’elle apporte pour la résolution du problème donné.

Graphe de Tanner

La première représentation des codes LDPC est un graphe biparti (voir figure 2.5), aussi appelé graphe de Tanner [114]. Un graphe est dit biparti s’il existe deux ensembles de noeuds (sommets) U et V et un ensemble d’arêtes, tels que chaque arête relie un noeud de U à un noeud de V . La figure 2.6 représente le graphe de Tanner d’un code LDPC.

FIG. 2.5 – Graphe biparti

Un code LDPC peut être défini à partir d’un graphe biparti dont l’ensemble des noeuds de gauche, noté V (noeuds variable), représente les symboles du mot de code, et l’ensemble des noeuds de droite, noté C (noeuds de contrainte), représente les contraintes.

Une suite de symboles constitue alors un mot de code valide si et seulement si pour chaque noeud de contrainte, la somme des symboles correspondants aux noeuds variables adjacents est nulle.

La représentation d’un code LDPC sous la forme d’un graphe de Tanner est partic-ulièrement utile lorsque l’on veut se représenter le mécanisme de passage de messages (“message passing”) qui intervient dans les décodeurs itératifs. De plus, cette représentation permet également de faire appel aux puissants outils de la théorie des graphes pour étudier et concevoir les codes LDPC. En effet nous verrons que les cycles, et en particulier leur taille, ont une influence directe sur les performances de correction de ces codes.

Matrice de parité

Un graphe biparti peut être représenté sous la forme d’une matrice binaire, aussi appelée matrice d’adjacence. Dans une telle matrice, chaque colonne correspond à un

Noeuds variable Noeuds contrainte v_0 v_1 v_2 v_3 v_4 v_9 v_5 v_6 v_7 v_8 v_11 v_10 c_0 c_1 c_2 c_3 c_4 c_5

FIG. 2.6 – Graphe de Tanner d’un code LDPC

noeud de U et chaque ligne à un noeud de V . L’élément (i, j) de la matrice est non nul si et seulement si il existe une arête reliant le noeud d’indice j de U au noeud d’indice i de V . La matrice d’adjacence du graphe de Tanner d’un code LDPC est en fait sa matrice de parité. Comme pour tout code linéaire, la matrice de parité définit totalement le code. Plus précisément la matrice de parité définit des relations entre les symboles des mots du code, sous la forme d’un système linéaire. Lorsqu’il a introduit les codes LDPC, Gallager a spécifié que cette matrice devait avoir un faible nombre d’éléments non-nuls. La matrice étant creuse, chaque relation va concerner un petit nombre de symboles.

Rappelons que pour un code linéaire donné, il peut exister plusieurs matrices de parité. Par matrice de parité d’un code LDPC, on désignera la matrice, à priori la plus creuse, qui a été utilisée pour définir le code.

Une matrice de parité d’un code linéaire de longueur n et de dimension k sur Fqest une matrice de rang plein à n colonnes et n − k lignes à éléments dans Fq. Dans le cas d’un code systématique, chaque colonne correspond à un symbole, les k premières colonnes correspondant aux symboles sources et les n − k dernières colonnes correspondant aux symboles de redondance (symboles de parité dans le cas binaire). La partie gauche de la matrice correspondant aux symboles sources est appelé H1et la partie droite correspondant aux symboles de redondance est appelée H2.

Si X est un élément de Fkqreprésentant les symboles sources et si Y est un élément de

F(n−k)q représentant les symboles de redondance, alors on a la relation :

H1 | H2   X Y  = 0 (2.13)

2.5. CODES À MATRICE CREUSE : LDPC 39

obtient la propriété suivante : pour un mot de code donné, pour chaque ligne de la matrice de parité, la somme des symboles (source et parités) présents dans celle-ci est nulle.

La matrice de parité peut avoir une structure particulière. Par exemple pour les codes de types “Repeat-Accumulate” (RA) (cf. section 2.5.4), la partie droite de la matrice de parité a une structure triangulaire inférieure (dans le cas des LDPC-staircase elle a une structure double diagonale inférieure). Elle peut également posséder une structure par bloc, comme pour les codes LDPC quasi-cycliques (cf. chapitre 7) ou une structure bande (cf. chapitre 6).

Au delà de faible densité de sa matrice de parité, les performances obtenues seront largement tributaires du nombre d’entrées non nulles par ligne et par colonne. On appelle cette quantité, le degré d’une ligne (resp. colonne). Quand cette quantité est constante, on appelle le code ainsi défini un code LDPC régulier.

La figure 2.7 présente la matrice de parité du code LDPC régulier défini par le graphe de Tanner de la figure 2.6. La figure 2.8 montre le système linéaire correspondant où les

{xi}1≤i≤12sont les variables représentant les symboles.

Ha=         0 1 1 0 1 0 1 0 0 0 1 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 0 1 1 0 1 0 0 1 0 1 0 1 0        

FIG. 2.7 – Matrice de parité d’un code LDPC régulier (k = 6, n = 12, dc= 3, dr= 6)

               x2⊕ x3⊕ x5⊕ x7⊕ x11⊕ x12 = 0 x1⊕ x4⊕ x6⊕ x8⊕ x10⊕ x12 = 0 x2⊕ x4⊕ x5⊕ x6⊕ x7⊕ x9⊕ = 0 x1⊕ x3⊕ x8⊕ x10⊕ x11⊕ x12 = 0 x3⊕ x5⊕ x6⊕ x8⊕ x9⊕ x10 = 0 x1⊕ x2⊕ x4⊕ x7⊕ x9⊕ x11 = 0               

FIG. 2.8 – Système linéaire défini par la matrice de parité Ha

Le degré des colonnes est noté dcet le degré des lignes est noté dr. Par conservation du nombre total d’entrées non-nulles dans la matrice on obtient la relation suivante :

dcn= dr(n − k) (2.14)

Codes réguliers et irréguliers : terminologie On parlera de code LDPC irrégulier [62] quand les degrés des noeuds ne sont pas constants et suivent des distributions particulières. Une distribution définit la fraction des lignes (resp. colonnes) ayant un degré donné. Ces distributions sont habituellement représentées par des polynômes.

(Λ,P) et ont la forme suivante : Λ(x) =

n≥1 Λnxn P(x) =

n≥1 Pnxn

où Λnet Pnsont les fractions respectivement des noeuds variable et noeuds de contrôle de degré n, ce qui correspond respectivement aux fractions des colonnes et des lignes de la matrice de parité qui ont un degré égal à n.

On parle aussi de distribution de degré d’un point de vu arêtes. Les polynômes associés sont (λ ,ρ) et ont la forme suivante :

λ (x) =

n≥1 λnxn ρ (x) =

n≥1 ρnxn

où λnet ρnsont les fractions des arêtes connectées respectivement aux noeuds symboles et aux noeuds de contrôle de degré n.

Ces deux couples de polynômes sont liés par les relations suivantes :

λ (x) = Λ

0(x) Λ0(1) ρ (x) = R0(x)0 R(1)0

Ces polynômes déterminent également le rendement R du code :

R= 1 − R1 0 ρ (x)dx R1 0 λ (x)dx (2.15)

Lorsque la matrice possède une structure par bloc on pourra appliquer ces critères aux différents blocs afin de déterminer le caractère régulier ou irrégulier du code.

Prenons l’exemple des codes “Repeat-Accumulate” (voir section 2.5.4) dont les colonnes de la matrice de parité peuvent être divisées en deux blocs. La partie droite est une matrice escalier alors que la partie gauche est une matrice creuse sans structure particulière. La partie droite est une matrice régulière puisqu’elle possède deux entrées par lignes et par colonnes à l’exception de la première ligne et de la dernière colonne. La partie gauche quant à elle, peut être soit régulière soit irrégulière. Dans le cas ou elle est régulière, le code est régulier et on parlera de code “Regular Repeat Accumulate”, alors que si elle est irrégulière, le code sera irrégulier et on parlera de code “Irregular Repeat Accumulate”.