• Aucun résultat trouvé

Analyse détaillée de la complexité de la résolution du système

7.4 Evaluation de la complexité du décodage

7.4.2 Analyse détaillée de la complexité de la résolution du système

Nous allons maintenant nous intéresser plus en détail à la résolution du système linéaire afin d’expliquer le gain en complexité obtenu grâce à la structure du code.

Dans un premier temps nous avons observé le nombre total d’opérations XOR sur les symboles durant le décodage en fonction de la dimension du code (figure 7.8).

0 50000 100000 150000 200000 250000 300000 350000 400000 450000 0 1000 2000 3000 4000 5000 6000

min 99% conf./aver/max 99% conf.

number of symbol operations

object size (in symbols) QC-LDPC base: (LDPC-Staircase 10,5 N1=5) R=2/3

LDPC-Staircase N1=5 R=2/3

FIG. 7.8 – Nombre moyen d’opérations XOR sur les symboles en fonction de la dimension du code, lors d’un décodage ML (R = 2/3).

Le nombre d’opérations symboles augmente moins vite pour le code quasi-cyclique que pour le code non structuré. Pour un code de dimension k = 6000 le décodage ML du code LDPC-QC-staircase nécessite en moyenne 159.400 opérations symbole alors que celui du LDPC-staircase nécessite plus de 203.972 opérations symbole. La structure par bloc de la matrice a donc un impact bénéfique. Pour une matrice de base donnée, cet avantage est

d’autant plus grand que la dimension du code est grande , i.e. que le facteur d’expansion est élevé. Cet avantage peut être expliqué par une différence de ”remplissage“ de la matrice au cours de l’étape de triangularisation. Ce phénomène est observable sur la figure 7.9 où nous avons tracé le nombre moyen d’opérations sur les lignes par itération de l’algorithme de triangularisation ; ainsi que la densité de la matrice du système pour chaque itération. Une opération sur les lignes consiste à sommer deux lignes de la matrice du système, mais également à sommer les symboles associés aux coordonnées correspondantes dans le second membre du système.

0 50 100 150 200 250 300 0 500 1000 1500 2000 2500 3000 0 0.005 0.01 0.015 0.02 0.025 0.03 0.035

Average Nb row ops per iter.

Matrix density Iteration NbRowOps QC-Staircase NbRowOps LDPC-Staircase Density QC-Staircase Density LDPC-Staircase

FIG. 7.9 – Nombre moyen d’opérations XOR sur les symboles par itération et densité de la matrice au cours de la triangularisation du système (k = 5990, R = 2/3).

Le nombre d’opération sur les lignes et la densité de la matrice sont deux grandeurs fortement liées. En effet à chaque itération d’élimination, il y aura d’autant plus d’opéra-tions sur les lignes qu’il y aura d’entrées à éliminer, et donc que la matrice sera dense. De plus chaque opération sur les lignes va ajouter des entrées dans les colonnes d’indice supérieur à l’itération courante, augmentant ainsi le nombre d’entrées à éliminer au cours des itérations suivantes.

Si les deux codes possèdent des courbes d’allures similaires, l’amplitude est différente. Ceci va induire une réduction de la complexité pour deux raisons :

– le nombre d’opérations symboles par itération du code quasi-cyclique est signi-ficativement inférieur à celui du code non structuré (au maximum on atteint 258 opérations symboles par itération pour le LDPC-staircase contre 198 pour le code QC). Ceci va induire une réduction du nombre total d’opération symboles effectués lors la phase d’élimination en avant ;

– la densité de la matrice à la fin de l’étape d’élimination en avant est également inférieure dans le cas du code quasi-cyclique. Ainsi le nombre d’entrées non nulles dans la matrice triangularisée est plus faible, ce qui entraîne une réduction du nombre d’opérations symboles à effectuer lors de l’étape de substitution à rebours.

Le remplissage réduit de la matrice quasi-cyclique peut s’expliquer grâce à la structure par bloc. En effet la structure quasi-cyclique induit un retard sur le remplissage de la matrice, réduisant ainsi le nombre d’opérations sur les lignes.Montrons cette propriété : considérons une itération i d’élimination d’une colonne appartenant au premier bloc de

7.5. CONCLUSIONS 109

la matrice (i < p). La ligne que l’on choisi pour pivoter a tous ses éléments d’indice < i nuls, alors que ceux d’indices > i peuvent être non nuls. Lorsque l’on va sommer cette ligne à d’autres lignes, des entrées vont être éliminées dans la colonne i, mais d’autres entrées vont être ajoutées dans les colonnes suivantes. Dans le cas d’un code non structuré, ces entrées non nuls nouvellement créées peuvent être situées à n’importe quelle position > i. A l’inverse, pour le code quasi-cyclique ces entrées seront créées uniquement dans le bloc suivant et non pas dans le bloc courant. En effet dans chaque ligne d’une matrice quasi-cyclique de type I il y a au plus une entrée non nulle par bloc. La matrice va donc se remplir, mais l’effet de ce remplissage ne se fera sentir que lorsque l’on arrivera aux itérations d’élimination dans le bloc suivant.

7.5 Conclusions

Nous avons montré que l’utilisation d’une structure quasi-cyclique permet de construire des codes LDPC efficaces pour le canal à effacements. En effet de tels codes apportent une amélioration significative des capacités de correction en décodage itératif par rapport aux codes non structurés. De plus le décodage ML bénéficie d’une réduction de la com-plexité apportée par la structure bloc des matrices de parité. Nous avons observé que cette réduction de complexité provenait d’un remplissage plus lent de la matrice lors des étapes d’élimination de la résolution du système.

Les travaux présentés dans ce chapitre constituent une étude préliminaire attestant de l’intérêt de ces codes pour une utilisation sur le canal à effacements en utilisant un décodeur hybride IT/ML. Des travaux en cours conduisent à effectuer une étude plus précise des cycles de ces codes sous la forme d’un énumérateur. Il serait intéressant d’optimiser le choix des coefficients de la matrice de base de manière à maximiser la taille de ces cycles.

La structure quasi-cyclique devrait également permettre une optimisation de l’im-plémentation du décodeur. Premièrement, il n’est plus nécessaire de stocker la matrice de parité du code, puisque la matrice de base est suffisante pour calculer à la volée les positions des entrées non nulles, permettant ainsi un gain en mémoire. De plus il serait intéressant d’étudier la possible parallélisation des opérations de décodage tel qu’il est effectué sur d’autres canaux [47].

Dans ce travail nous nous sommes limités à l’étude d’un type particulier de codes LDPC QC, l’étude d’autres ensembles de codes LDPC-QC, tels que LDPC-QC de type II, étant en cours.

Chapitre 8

Codes LDPC généralisés à “faible

rendement”

Contents

8.1 Introduction . . . 112 8.1.1 Motivations . . . 112 8.1.2 Codes à faible rendement . . . 112 8.1.3 Codes LDPC généralisés . . . 112 8.2 Schéma de codage proposé . . . 113 8.3 Conception du code . . . 115 8.4 Optimisation par évolution de densité . . . 117 8.5 Résultats des simulations . . . 120 8.6 Conclusions . . . 122

Ce chapitre présente une méthode de codage à faible rendement pour les mécan-ismes de correction d’effacements de niveau applicatif. Ce système est capable de s’adapter aux conditions du canal en adoptant dynamiquement différents rendements. En effet il est capable de changer à la volée le rendement, depuis le rendement maximum intrinsèque du code LDPC interne jusqu’au rendement minimum permis par la construction du code LDPC généralisé (ou GLDPC). Plus précisément, le message est d’abord encodé en utilisant la méthode d’en-codage des codes à structure triangulaire inférieure. Si des symboles de redon-dance supplémentaires sont nécessaires, l’encodeur passe en mode GLDPC de manière à produire ces “extra-symboles“ à la demande.

Des distributions irrégulières optimisées d’extra-symboles sont étudiées grâce à la méthode d’évolution de densité, afin d’améliorer les capacités de corrections. Nous montrons également que l’augmentation du nombre d’extra-symboles permet d’améliorer la probabilité de décodage, qui tend asymptotiquement vers 1. Les travaux présentés dans ce chapitre ont été effectués en collaboration avec Valentin Savin du CEA-LETI et ont abouti à une publication [28].

8.1 Introduction