Impl´ementation et ´etude d’un turbo-code
Sujet propos´e par Jean-Pierre Tillich
Distribu´e le 12 novembre 2010
1 Quelques mots sur le sujet
Le but de ce projet est de r´ealiser et de comprendre comment fonctionne un code correcteur d’erreurs
tr`es proche des codes correcteurs qui sont standardis´es actuellement, c’est `a dire un turbo-code. Comme
cela sera vu dans le cours 8, les codes convolutifs agissent comme d’excellents codes r´educteurs de bruit
sur le canal, mais souffrent du fait que si l’on veut r´ealiser le d´ecodage au maximum de vraisemblance
avec l’algorithme de Viterbi, la m´emoire du code doit rester petite : typiquement des m´emoires de l’ordre
de 3 −7 sont usuelles, et de l’ordre de 10 −15 tr`es exceptionnellement utilis´ees. Le fait que la probabilit´e
d’erreur par bit apr`es d´ecodage reste ´elev´ee, typiquement de l’ordre de 10−3−10−4font que l’on est
oblig´e d’utiliser d’autres moyens de codage. Jusqu’au d´ebut des ann´ees 1990, la solution la plus r´epandue
consistait `a concat´ener un code convolutif avec un code de Reed-Solomon (voir cours 7). Berrou et
Glavieux ont propos´e en 1993 une solution `a la fois de faible complexit´e et beaucoup plus performante
en termes de probabilit´e d’erreur apr`es d´ecodage : les turbo-codes. Cette solution consiste `a combiner de
mani`ere astucieuse deux codes convolutifs de mani`ere `a obtenir des codes :
(i) dont la distance minimale n’est plus born´ee par une constante quand la longueur augmente,
(ii) qui peuvent ˆetre d´ecod´es en d´ecodant les deux codes convolutifs de base, et en combinant de mani`ere
ad´equate le r´esultat des deux d´ecodages au moyen d’une proc´edure it´erative.
Avec un choix convenable des codes convolutifs, les performances peuvent ˆetre excellentes.
Dans ce projet, il s’agira essentiellement d’effectuer la programmation d’un turbo-code et de r´epondre
`a un certain nombre de questions d’approfondissement (ou de compr´ehension) donn´ees ici.
2 Une description d’un certain type de code convolutif
Par souci de simplification, nous allons nous int´eresser qu’`a des turbo-codes construits en utilisant
des codeurs convolutifs de type (2,1) (il est `a signaler que cela concerne bon nombre de turbo-codes
utilis´es en pratique, comme par exemple les turbo-codes mis en oeuvre dans la 3G).
D´efinition 1 (Codeur convolutif de type (2,1) de m´emoire m)1. Un codeur convolutif de type
(2,1) de m´emoire mest caract´eris´e par la donn´ee de trois mots binaires de longueur m+ 1,
a1= (a1
0, . . . , a1
m),a2= (a2
0, . . . , a2
m)et b= (b0, . . . , bm).
2. Il associe `a une s´equence d’information d’une taille arbitraire K:u= (u1, . . . , uK)∈ {0,1}Kdeux
s´equences x1= (x1
1, . . . , x1
K)∈ {0,1}Ket x2= (x2
1, . . . , x2
K)∈ {0,1}K.
3. Celles-ci sont obtenues en calculant Kvecteurs d’“´etat” auxiliaires s1= (s1,1, . . . , s1,m),...,sK=
(sK,1, . . . , sK,m)appartenant `a {0,1}mvia les formules (on effectue les sommes et les produits dans
1