Sie sind auf Seite 1von 9

6/12/2015

Turbo codes

Turbo codes
Sujet propos par Nicolas Sendrier
mailto:Nicolas.Sendrier@inria.fr, Difficult

: difficile (***).

1 Protection contre les erreurs de transmission


Les codes correcteurs d'erreurs sont utiliss pour combattre les erreurs de transmission (ou de lecture s'il
s'agit d'un support optique ou magntique). D'une faon gnrale, il s'agit de calculer puis de transmettre (ou
d'inscrire) des symboles supplmentaires afin de reconstituer l'information malgr une communication
perturbe. Le plus simple des codes correcteurs d'erreurs est le code rptition: en rptant la mme
information suffisamment souvent, on finit par tre compris. On peut videmment faire beaucoup mieux que
cela !
Aujourd'hui on trouve des codes correcteurs d'erreurs dans la quasi-totalit des systmes de communication
numriques: CD, DVD, TNT, GSM, ADSL, communications satellite, ...
Les turbo codes ont t invents par des chercheurs franais1 au dbut des annes 90 et ont constitu une
grande avance dans le domaine. Ils sont prsents dans la plupart des standards modernes de
tlcommunication et commencent apparatre dans les applications (par exemple pour la transmission des
donnes dans le tlphone mobile de troisime gnration UMTS).

2 Dtail du sujet
2.1 Interface
Il est demand d'crire
1. un turbo codeur
2. un simulateur de canal binaire symtrique
3. un turbo dcodeur
Le codeur va transformer un fichier de donnes quelconques en un fichier cod (de taille triple environ). Le
simulateur de canal va transformer un fichier cod en un fichier contenant des erreurs binaires (chaque bit du
fichier a une probabilit p d'tre chang, la taille ne change pas). Le dcodeur va transformer un fichier cod
erron en un fichier de donnes (la taille est rduite au tiers). Par exemple:
% coder fichier > fichier.code
% canal fichier.code 0.1 > fichier.err
% decoder fichier.err 0.1 > fichier.dec
% distance fichier fichier.dec
Les deux fichiers diffrent de 23 bits
%
http://www.enseignement.polytechnique.fr/informatique/INF431/ARCHIVES/X04-2006/projets/sendrier/sujet.html

1/9

6/12/2015

Turbo codes

2.2 Description du problme


2.2.1 Codeur convolutif systmatique
Nous considrons un codeur convolutif binaire de taux 1/2 (c'est--dire 2 sorties pour 1 entre),
systmatique (c'est--dire que la premire sortie est gale l'entre) et d'ordre m (c'est--dire que le codeur
possde 2m tats, typiquement m=3).

Figure 1: Codeur convolutif systmatique de taux 1/2 et d'ordre 3

L'tat de la machine au temps t sera un entier, not e(t), compris entre 0 et 2m1. Pour dcrire cette machine
il faut deux fonctions, l'une pour mettre jour l'tat et l'autre pour calculer le symbole de redondance
e(t+1) = E(e(t),u0(t))
u1(t) = S(e(t),u0(t))
avec e(t),e(t+1)[0,2m[ et u0(t),u1(t){0,1}. chaque unit de temps la machine prend en argument un
symbole binaire et en produit un second, le taux de transmission (rapport entre la taille de l'entre et celle de
la sortie) vaut donc 1/2.
Les u0(t) seront appels symboles d'information et les u1(t) symboles de redondance.

2.2.2 Turbo codeur


Nous utilisons deux fois le mme codeur convolutif systmatique de taux 1/2 (not CCS) en parallle. Un
bloc d'information binaire u0 de taille T est cod deux fois, le second codage tant prcd d'une permutation
des T symboles de u0.

http://www.enseignement.polytechnique.fr/informatique/INF431/ARCHIVES/X04-2006/projets/sendrier/sujet.html

2/9

6/12/2015

Turbo codes

Figure 2: Turbo codeur

Au total ce codeur a un taux de transmission 1/3. Le bloc (u0, u1, u2) de taille 3T constitue le mot de code
qui sera transmis travers le canal de communication.

2.2.3 Canal de communication


Nous considrons une transmission travers le canal binaire symtrique. chaque fois qu'un bit est transmis,
sa valeur est modifie avec une probabilit p (p vaut quelques pourcents, au maximum p=0.15).

Figure 3: Canal binaire symtrique de probabilit d'erreur p

Si x est le symbole d'entre et y le symbole de sortie, alors le canal est dfini par
Pr(y=0 x=0) = Pr(y=1 x=1) = 1p
Pr(y=0 x=1) = Pr(y=1 x=0) = p
http://www.enseignement.polytechnique.fr/informatique/INF431/ARCHIVES/X04-2006/projets/sendrier/sujet.html

3/9

6/12/2015

Turbo codes

Nous noterons (a,b)=Pr(y=a x=b) la probabilit pour que a soit reu sachant que b a t mis.
2.2.4 Dcodage du code convolutif
Un mot de code (de taille 2T) produit par le codeur convolutif (cf. figure 1)
u0=(u0(0),,u0(T1)), u1=(u1(0),,u1(T1))

est transmis symbole par symbole travers un canal bruit. Nous obtenons
v0=(v 0(0),,v 0(T1)), v1=(v 1(0),,v 1(T1))

Le dcodage consiste calculer la valeur de la probabilit, dite a posteriori, pour que chaque symbole
d'information soit gal 0:
Pr(u0(t)=0 v0, v1), t=0,,T1.

Ces probabilits permettent d'obtenir une estimation

0(t) =

(1)

0(t) de chaque symbole d'information

0 si Pr(u0(t)=0 v0, v1) > 1/2


1 sinon

Le dcodeur prend en arguments les probabilits a priori (de valoir 0) des symboles d'information
p0(t)=Pr(u0(t)=0), t=0,,T1,

ainsi que le mot reu (v0,v1). Il possde en outre une information sur le canal, sous la forme de la fonction
(dcrite la fin de 2.2.3).
Le codeur ne retournera pas les probabilits posteriori (1), mais une quantit appele information
extrinsque
q0(t) = Pr(u0(t)=0 v0,t, v1), t=0,,T1,

(2)

o v0,t = (v l(0), , v l(t1), v l(t+1), , v l(T1)) est le vecteur v0 priv de sa t-me coordonne. Nous
noterons le dcodeur et donc
http://www.enseignement.polytechnique.fr/informatique/INF431/ARCHIVES/X04-2006/projets/sendrier/sujet.html

4/9

6/12/2015

Turbo codes

q0 = (p0, v0, v1)

o p0 = (p0(0),, p0(T1)) et q0 = (q0(0), , q0(T1)).


Les probabilits a posteriori se dduisent de (2) l'aide de la formule
Pr(u0(t)=0 v0, v1) = p0(t) (v 0(t),0) q0(t), t=0,,T1,

o est l'oprateur (associatif) dfini pour tout (p,q)]0,1[2 par:


pq
.
pq=
pq+(1p)(1q)

2.2.5 Dcodage du turbo code


Le mot de code, constitu de 3 blocs de taille T (cf. figure 2), est not (u0, u1, u2). Le mot reu est
galement un triplet not (v0, v1, v2).
Nous noterons 1 et 2 des dcodeurs correspondant respectivement aux codeurs 1 et 2. Le principe du
turbo dcodage est le suivant:
input:v0, v1, v2
q0 (1/2,,1/2)
while condition repeat

r0 1 (q0, v0, v1)


q0 2 (r0, v0, v2)
returnr0

(v0) q0

o (v0)=((v 0(t),0))0 t<T et l'oprateur s'applique composante par composante des vecteurs. En
pratique, la conditionest simplement un nombre d'itrations (quelques units). Si nous notons q le vecteur
de probabilits retourn, celles-ci vrifient
q(t) Pr(u0(t)=0 v0, v1, v2),

et peuvent tre utilises pour dcider si u0(t) vaut plus probablement 0 ou 1.


Remarquons que les probabilits a priori utilises dans le premier dcodage sont triviales (toutes gales
1/2, puisqu'on ne sait rien a priori sur u0). Ensuite, l'estimation s'affine et la sortie (information extrinsque)
de chaque dcodage est utilise comme entre (probabilit a priori) pour le suivant.

2.3 Description des algorithmes


http://www.enseignement.polytechnique.fr/informatique/INF431/ARCHIVES/X04-2006/projets/sendrier/sujet.html

5/9

6/12/2015

Turbo codes

2.3.1 Description du codeur convolutif


Le codeur est entirement dcrit par 2 vecteurs binaires de longueur m+1
g=(1,g1,,gm) et h=(h0,h1,,hm)

Nous noterons <x,y> le produit scalaire modulo 2 de deux vecteurs binaires x et y de mme longueur. L'tat
du codeur est un vecteur binaire de longueur m
e=(e1,,em).

L'tat final du codeur sera (e0,e1,,em1) et la sortie sera u1, avec


e0 = <(u0,e1,,em),g>

(3)

u1 = <(e0,e1,,em),h>

(4)

Nous utiliserons les entiers de 0 2m1 pour dsigner les tats. Par exemple, pour dsigner e=(e1,,em)
nous utiliserons l'entier i=l=1m el2l1 dont il est l'criture en base 2. Soient i et u0 un tat initial et une entre,
et j et u1 l'tat final et la sortie correspondante, nous noterons
j = E(i, u0)
i=

(j, u0)

(5)

u1 = S(i, u0)

2.3.2 Codage d'un bloc par le codeur convolutif


On veut coder un bloc d'entre de taille T:
u0(0),,u0(T1).

L'tat initial du codeur est e(0)=0. On calcule, squentiellement, les sorties u1(t) pour t=0,T1. la fin de
cette tape (au temps T) l'tat du codeur est e(T). Pour que le dcodeur fonctionne, il faut revenir l'tat 0.
On ajoute donc une squence de m entres
u0(T),,u0(T+m1)

dtermines de faon unique l'aide de (3) pour que e(T+m)=0. On calcule les sorties u1(t), t=T,,T
m+1, correspondantes.
http://www.enseignement.polytechnique.fr/informatique/INF431/ARCHIVES/X04-2006/projets/sendrier/sujet.html

6/9

6/12/2015

Turbo codes

Finalement, le bloc cod sera de taille 2(T+m) au lieu de 2T. En pratique, l'impact est faible car T est de
l'ordre de quelques milliers alors que m est de l'ordre de quelques units, typiquement m=3.

2.3.3 Dcodage du code convolutif


Nous reprenons les notations des sections 2.2.4 et 2.3.1. Pour tout t=0,,T1, tout tat 0 i<2m et toute
entre b=0,1, nous dfinissons
i,b(t) = (v 0(t), b) (v 1(t), S(i, b)) p0(t).

Pour tout t=1,,T et tout tat 0 i<2m, nous dfinissons i(t) par rcurrence
0(0) = 1 et i(0)=0 pour i0

i(t) =

(i,b)(t1)

(i,b),b(t1)

b=0,1

De mme pour tout t=T1,,1 et tout tat 0 i<2m, nous dfinissons


0(T) = 1
i(t) =

et

i(T)=0

i(t) par rcurrence (descendante)

pour i0

E(i,b)(t+1) i,b(t)

b=0,1

Pour tout t=0,,T1 et tout b{0,1}, nous dfinissons

(t,b) =

i(t)

E(i,0)(t+1) (v 1(t),

S(i, b))

0 i<2m

Enfin, pour tout t = 0,,T1, l'information extrinsque recherche vaut:


(t,0)
q0(t) = Pr u0(t)=0 v0,t, v1 =
(t,0) + (t,1)

2.4 Valeurs numriques et remarques sur la mise en oeuvre


http://www.enseignement.polytechnique.fr/informatique/INF431/ARCHIVES/X04-2006/projets/sendrier/sujet.html

7/9

6/12/2015

Turbo codes

2.4.1 Le codeur convolutif


Le codeur convolutif que nous utiliserons est dfini dans la figure 4, et correspond, selon les notations de la
section 2.3.1, m=3 et
g=(1,0,1,1) et h=(1,1,0,1)

Figure 4: Codeur convolutif systmatique de taux 1/2 et d'ordre 3

2.4.2 Le turbo codeur


La taille T des blocs du turbo codeur doit tre grande, plusieurs milliers de bits d'information au minimum. Le
mme codeur convolutif systmatique est utilis deux fois.
Il faut prendre en compte le fait que l'tat du codeur la fin du codage d'un bloc doit revenir 0. Il faudra
donc ajouter, pour chacun des deux codages, m symboles d'information et m symboles de redondance. Ces
symboles seront a priori diffrents pour les deux codeurs.
La permutation est difficile spcifier. Son choix est trs important et une mauvaise permutation peut
produire de trs mauvais rsultats (par exemple l'identit). En pratique le plus simple est de choisir une
permutation alatoire, quitte la changer si elle semble mal fonctionner. Si l'on veut effectuer des simulations
pour mesurer les performances du dcodeur en moyenne, on pourra par exemple changer la permutation
chaque bloc cod.
Pour information, le codeur propos est celui de l'UMTS, la taille des blocs peut varier entre 40 et 5114 bits.
La dfinition de la permutation est trs complexe et dpend de la taille du bloc.

3 Pour aller plus loin


http://www.enseignement.polytechnique.fr/informatique/INF431/ARCHIVES/X04-2006/projets/sendrier/sujet.html

8/9

6/12/2015

Turbo codes

On peu tudier, l'aide de simulations sur un grand nombre de blocs, l'volutions des performances du
dcodeur lorsque les diffrents paramtres voluent. Les paramtres faire voluer sont la probabilit
d'erreur du canal, la taille de bloc, le nombre d'itrations du dcodage. Pour chaque essai, les performances
du dcodeur seront mesure par le taux d'erreur rsiduel binaire, c'est--dire la proportion de symboles faux
aprs le dcodage.
Plus difficile, partir de l'observation de simulations, on peut essayer de dfinir des critres pour de bonnes
permutations.

1
C. BERROU, A. GLAVIEUX, P. THIT IMAJSHIMA. Near Shannon limit error-correcting coding and
decoding : turbo-codes, in Proceedings of ICC'93, Genve, pp. 1064-1070, mai 1993
Ce document a t traduit de LATEX par HEVEA

http://www.enseignement.polytechnique.fr/informatique/INF431/ARCHIVES/X04-2006/projets/sendrier/sujet.html

9/9

Das könnte Ihnen auch gefallen