Turbo code

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Turbo code est le nom générique d'un code correcteur imaginé dans les années 1990, qui permet de s'approcher aussi près qu'on le souhaite de la limite de Shannon (en). Les turbo codes représentent une percée majeure dans le domaine des communications numériques. Ils sont utilisés dans de nombreux standard de téléphonie mobile (UMTS, LTE), de communications par satellites (DVB-S2, DVB-RCS) ou de la télévision numérique terrestre (DVB-T2). Leur inventeurs sont Claude Berrou et Alain Glavieux, qui brevetèrent cette technologie pour le compte de France Télécom.

Origine[modifier | modifier le code]

Les turbo codes sont nés au sein de Télécom Bretagne, suite aux travaux de Claude Berrou, Alain Glavieux et Punya Thitimajshima, publiés en 1993 et présentés lors de l'International Conference on Communications de juin 1993 à Genève en Suisse. Lorsqu'il énonça son fameux théorème en 1948, Shannon montrait l'existence d'une borne théorique au delà de laquelle les communications sont entachées d'erreurs, mais il ne donna pas d'exemple de code réalisable qui permettait d'approcher cette limite. Robert G. Gallager mit au point les codes LDPC (Low Density Parity Check) dans sa thèse au MIT en 1960 qui permettaient d'atteindre cette limite mais à l'époque, leur réalisation pratique était infaisable et ils tombèrent aux oubliettes. Dans les années 1990, Claude Berrou mit au point les turbo codes qui furent les premiers codes approchant la limite de Shannon pour lesquels on réussit une implémentation matérielle. La clé de cette trouvaille aurait résidé dans la mise au point de l'information extrinsèque, résultat de la soustraction de l'information a priori (donnée d'entrée) à l'information a posteriori (donnée de sortie). C'est, entre autres, cette soustraction permettant d'éviter les phénomènes de propagation d'erreur dans la boucle "turbo" qui fut difficile à mettre au point.

Principe[modifier | modifier le code]

Le principe des turbo codes, comme tout code correcteur d'erreur, est d'introduire une redondance dans le message afin de le rendre moins sensible aux bruits et perturbations subies lors de la transmission. Le codage consiste à utiliser deux codeurs simples, dont les entrées ont été entrelacées; ainsi, chaque codeur voit une série d'informations différentes à son entrée.

Le décodage est une collaboration entre les décodeurs, chacun donnant son « avis » (notion de confiance) sur chaque bit décodé. Cette information est ensuite fournie à l'entrée du prochain décodeur, et ainsi de suite. D'où l'appellation « turbo ».

Codage[modifier | modifier le code]

Un turbo codeur classique résulte de l'association de deux (ou plus) codeurs. Il s'agit souvent de codeurs convolutifs récursifs systématiques (RSC : Recursive Systematic Coder) car leur récursivité apporte des propriétés pseudo-aléatoires intéressantes.

Concrètement, le turbo codeur produira typiquement trois sorties à envoyer sur le canal de transmission (après modulation éventuelle) :

  1. la sortie y_s dite systématique, c'est-à-dire l'entrée même du codeur (la séquence u)
  2. la sortie de parité 1 x_p^1 : la sortie du premier codeur
  3. la sortie de parité 2 x_p^2 : la sortie du deuxième codeur. La différence entre ces deux sorties vient du fait que la trame u est entrelacée avant d'entrer dans le deuxième codeur. Elle est « mélangée ».

Ce codage permet donc de répartir l'information apporté par un bit de la trame u sur ses voisins (avec le codage de parité 1) et même sur toute la longueur de la trame transmise (avec le codage de parité 2). Ainsi, si une partie du message est fortement abîmée pendant la transmission, l'information peut encore se retrouver ailleurs.

Décodage[modifier | modifier le code]

Le décodage est le fruit de la collaboration des décodeurs. Ceux-ci vont s'échanger de l'information de manière itérative afin d'améliorer la fiabilité (valeur calculée probabiliste, ou valeur soft) de la décision qui sera prise pour chaque symbole. La trame arrive, entre dans le premier décodeur, et donne des valeurs soft. Ce qui provient de la trame d'arrivée est supprimé, pour ne garder que les informations extrinsèques apportées par le décodeur (sinon il y a un effet d'avalanche). Puis les données d'arrivée et les données extrinsèques sont entrelacées et fournies à l'entrée du second décodeur. Une itération consiste en l'activation de chaque décodeur une fois. Ainsi, plus il y a d'itérations, plus le décodeur convergera vers la bonne solution; cependant effectuer plus d'itérations nécessitent souvent plus de temps et plus de matériel.

Utilisation[modifier | modifier le code]

En raison de sa performance, Turbo code a été adopté par plusieurs organismes pour être intégré dans leurs standards. C'est ainsi que la NASA l'utilise dans toutes ses sondes spatiales construites à partir de 2003. L'Agence spatiale européenne (ESA) a été la première agence spatiale à utiliser turbo code dans la sonde lunaire SMART-1. Turbo code est utilisé par l'UMTS et l'ADSL 2.

Les turbo-codes fonctionnent très bien avec les techniques de multiplexage et de modulation OFDM et OFDMA car ils bénéficient ainsi des étalements en temps et en fréquence du système ; dans les réseaux mobiles 4G LTE et LTE Advanced, ces 2 technologies (Turbo codes et OFDMA) sont combinées.

Lien externe[modifier | modifier le code]