• Aucun résultat trouvé

Chaque expérience correspond à un ordre de transmission donné, et il faut trouver pour chacune de ces expériences le plus petit nr tel que le décodage ML termine avec succès. Une solution triviale est de partir de nIT (resp. k) et de décrémenter (resp. incrémenter) nr, jusqu’à trouver la valeur limite, nML. Cette méthode nécessite nIT− nML (resp. nML− k) tentatives de décodage ML. Une autre solution est d’effectuer une recherche dichotomique. On prend comme intervalle de départ [k, nIT]. A chaque itération on divise l’intervalle en deux et on effectue une tentative de décodage ML. Si le décodage réussit, alors nML

se trouve dans l’intervalle inférieur, sinon nML se trouve dans l’intervalle supérieur. La recherche termine quand l’intervalle est réduit à un élément. Cette technique à un coût de O(log2(nIT− k)). L’avantage de la deuxième technique sera d’autant plus important que la dimension du code sera grande.

Afin d’obtenir la précision souhaitée, il est nécessaire effectuer au moins 107 ex-périences (si on cherche une précision de 10−3 avec des conditions différentes. Chaque expérience correspond alors à un ordre de transmission différent, i.e il suffit de changer la graine du PRNG générant la transmission aléatoire. Une fois les expériences effectuées, nous avons 105 valeurs de nML. On calcule alors le ratio d’inefficacité comme étant : Ine f f = nmoyenML /k. Il est également possible d’obtenir la probabilité d’échec de décodage en fonction du nombre de symboles reçus1. En effet, pour chaque nron compter le nombre d’expériences i tels que n(i)ML> nr. Rapporté au nombre total d’expériences, on obtient la probabilité d’échec du décodage pour nr symboles reçus.

Simulations sur traces réelles

Le meilleur moyen de déterminer les performances d’un système en situation réelle est de le tester dans de telles conditions. Sans pour autant l’implémenter et l’intégrer dans un système de communication, il est parfois possible de récupérer des traces provenant d’applications réelles. Par exemple, il est possible de déduire un schéma de perte en observant le flux de paquets à la sortie de la couche transport. Cette trace de pertes sera alors utilisée pour effectuer une simulation sur une plate-forme expérimentale.

Outre la faible charge de calcul, l’avantage des simulations sur traces réelles est qu’il n’est pas nécessaire de faire l’hypothèse d’un modèle de transmission. Néanmoins, il est nécessaire d’effectuer ces simulations sur des traces suffisamment longues et nombreuses de manière à limiter le biais provoqué par un cas particulier. Il est également à noter que ces tests nécessitent que le champs d’application soit connu. On étudie alors les performances (et l’adéquation) d’une solution de code correcteur avec un champs d’application donné et non les performances intrinsèques de ces codes.

3.5 Conclusions

Dans ce chapitre nous avons présenté des métriques permettant l’évaluation des codes à effacements. Un ensemble de méthodes et d’outils permettant de mesurer ces métriques ont été proposées. Il faut noter que les métriques à utiliser pour l’évaluation d’un système de codage dépendent fortement du cas d’application ainsi que des terminaux auxquels ils sont destinés.

1De la même manière on peut obtenir la probabilité d’échec de décodage en fonction du taux de perte du canal, en calculant le taux de perte correspondant aux nombre de symboles reçus.

Toutes ces métriques doivent nous permettre de répondre à la question : des codes A et B, lequel est le meilleur ?Ceci va bien souvent dépendre du contexte d’utilisation et des contraintes associées. Si nous sommes intéressés pas une seule caractéristique, le ratio d’inefficacité par exemple, le choix sera immédiat. Cependant, la plupart du temps le choix doit prendre en compte plusieurs critères et ces critères sont souvent interdépendants rendant le choix encore plus difficile.

Si seule la capacité de correction est prise en compte, les codes MDS tels que les codes Reed-Solomon s’imposent. Cependant si la complexité de la solution doit également être considérée, ces codes deviennent inutilisables à mesure que leur dimension augmente. Des concessions sur les capacités de correction pourront alors être faites afin obtenir une complexité inférieure, en choisissant des codes LDPC par exemple. Il n’existe donc pas un code universel permettant de répondre à toutes les situations et un compromis sur les performances est souvent nécessaire.

Première partie

Contributions sur les codes à

effacements hautes performances

Chapitre 4

Décodage hybride IT/ML des codes

LDPC

Contents

4.1 Introduction . . . 66 4.2 Décodeur hybride IT/ML . . . 66 4.2.1 Principes . . . 66 4.2.2 Résolution du système linéaire du décodage ML . . . 67 4.3 Implémentation et optimisations . . . 69 4.3.1 Simplification du système permis par le décodage IT . . . 71 4.4 Performances . . . 72 4.4.1 Conditions expérimentales . . . 73 4.4.2 Capacités de correction . . . 73 4.4.3 Vitesse et débit de décodage . . . 75 4.5 Travaux relatifs . . . 76 4.6 Conclusions . . . 77

Ce chapitre présente un type de décodage performant pour les codes LDPC utilisés sur le canal à effacements. Baptisé décodage hybride IT/ML, il consiste en l’application d’un décodage itératif (IT) dans un premier temps, puis d’un décodage par maximum de vraisemblance (ML) si nécessaire. Cette technique de décodage permet ainsi d’atteindre les capacités de correction d’un décodage ML avec une complexité réduite. En effet l’utilisation préliminaire du décodage IT permet la plupart du temps de compléter le décodage, et dans le cas échéant de simplifier le système que devra résoudre le décodeur ML.

L’implémentation de ce décodeur est critique afin d’obtenir des vitesses de dé-codage élevées. Nous décrirons donc une façon efficace de l’implémenter et nous présenterons les optimisations possibles de cet algorithme. Cette solution offre une grande flexibilité puisque chaque récepteur peut décider localement du meilleur compromis entre coût en calcul et capacités de corrections.

Les travaux présentés dans ce chapitre ont menés à la publication d’un article [68] et d’un rapport de recherche [67]. Ils ont également largement amélioré les performances de notre codec LDPC [118].

4.1 Introduction

Lorsqu’ils sont décodés par une méthode itérative, les codes LDPC permettent d’obtenir de très bonnes capacités de correction tout en ayant une complexité linéaire. Si les codes LDPC de longueur infinie sont capables d’approcher de près la capacité du canal avec un dé-codage IT, les codes LDPC de longueurs courtes et moyennes possèdent des performances inférieures.

Il a été montré [86][76] que le décodage ML des codes LDPC permet une amélioration significative des capacités de corrections. Cependant l’utilisation d’un décodeur ML im-plique une augmentation de la complexité du décodage. En effet, le décodage ML revient à résoudre un système linéaire par une méthode du type élimination de Gauss (GE) ; la complexité du décodage devient donc cubique.

Afin de combiner les avantages des deux types de décodage, nous proposons une approche hybride : le décodage itératif permettra de réduire la complexité globale du décodage tandis que le décodage ML permettra d’atteindre des capacités de corrections supérieures.

L’approche d’un décodage hybride IT/ML a été introduite parallèlement et indépen-demment par E. Paolini et al.[83] [82]. Ces travaux mènent aux mêmes conclusions : le décodage hybride IT/ML des codes LDPC permet d’obtenir d’excellentes capacités de correction tout en conservant une complexité réduite.