- Turbo code
-
Turbo code est le nom d'un type de code correcteur imaginé dans les années 1990, qui permet de s'approcher de la limite de Shannon (en) davantage que ses prédécesseurs. Les turbo codes sont actuellement incontournables lorsque l'on touche au codage de l'information ou aux télécommunications de pointe : ils sont un standard pour les systèmes de téléphonie mobile GSM (Global System of Mobile communication) de troisième génération.
Sommaire
Origine
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.
Principe des turbo codes
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 (ou plus) de 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, lui, 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
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) :
- la sortie ys dite systématique, c'est-à-dire l'entrée même du codeur (la séquence u)
- la sortie de parité 1 : la sortie du premier codeur
- la sortie de parité 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
Le décodage, nous l'avons dit, 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 soft) de la décision qui sera prise pour chaque symbole. La trame arrive, rentre dans le premier décodeur, et donne des valeurs soft. Vous enlevez ce qui provient de la trame d'arrivée, pour ne garder que les informations extrinsèques apportées par le décodeur (sinon vous provoquez 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 à l'activation de chaque décodeur une fois. Ainsi, plus vous ferez 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 hard.
Utilisation de turbo 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 a décidé d'utiliser les turbo codes pour toutes ses sondes spatiales, construites à partir de 2003.
De son côté, l'Agence spatiale européenne (ESA) a été la première agence spatiale à utiliser turbo code, avec sa sonde lunaire Smart 1.
Plus près de nous, turbo code est utilisé par l'UMTS et l'ADSL 2.
Les turbo-codes fonctionnent très bien avec l'OFDM car ils bénéficient ainsi des étalements en temps et en fréquence du système.
Lien externe
Catégories :- Théorie des codes
- Détection et correction d'erreur
Wikimedia Foundation. 2010.