This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Timisoara 18-20 mars 2003
ENST Bretagne 1
Turbo Turbo ccodesodes((convolutifsconvolutifs))
Timisoara18-20 mars, 2003
Michel Jézéquel,
Claude Berrou et Catherine Douillard ENST Bretagne
6. Turbo codes duo-binaires• Principe et avantages• Performance
7. Conclusions et perspectives
Timisoara 18-20 mars 2003
ENST Bretagne 2
Chapitre 1
Les codes correcteurs d’erreurs
Sourcenumérique Codage
Modulation et filtrage
Milieude
transmission
Filtrage etdémodulation
DécodageDestinataire
Canal de transmission
Di
Di
Une chaîne de transmission
Timisoara 18-20 mars 2003
ENST Bretagne 3
Codes correcteur d’erreurs Généralités
Codage de source : réduire le débit d’informationCodage de canal : ajouter de la redondanceSécurité, cryptographieAuthentification, watermarkingCDMA...
Différentes familles de codage
Codes correcteur d’erreurs GénéralitésSéquence d’information à transmettre : [d1 d2 ... di ... dk]
Addition d’une redondance linéaire : [r1 r2 ... rj ... rn-k](le code est dit systématique)
2mod ...1
, dprki
ijij ∑=
= (pi,j = 0 ou 1)
[r1 r2 ... rj ... rn-k] = [d1 d2 ... di ... dk]
p1,1
pk,1
p1,n-k
pk,n-k
Forme matricielle
Timisoara 18-20 mars 2003
ENST Bretagne 4
Rendement de codage : R =k/n
Code (n , k , dmin) de distance minimale dmin
Codes correcteur d’erreurs Généralités
Le code étant linéaire, la séquence « tout zéro » peut être prise comme référence
La distance dmin est le nombre minimum de « 1 » des mots de code [d1 d2 ... di ... dk] [r1 r2 ... rj ... rn-k]si [d1 d2 ... di ... dk] ≠ « tout zéro »
[d1 d2 ... di ... dk][r1 r2 ... rj ... rn-k] : mot de code
Un bon code est un code avec une grande distance dminmais ce n’est pas tout :• il doit pouvoir être décodé !
(contre-exemple : les codes aléatoires)• il doit exister un décodeur permettant d’utiliser
la capacité de correction du code
Exemple :
Codes correcteur d’erreurs Généralités
Timisoara 18-20 mars 2003
ENST Bretagne 5
5
5
5
5
5
5
5
5
10-1
10-3
10-4
10-6
10-7
10-8
20 1 3 4 5 6 7 8 9 10 11 12
Eb/N0 (dB)
TEB
non codé
mauvaise convergence, gain asymptotique élevé
Bonne convergence, faible gain asymptotique
10-2
10-5
Limite théorique(R=1/2, 188 octets)
MDP4, canal gaussien, taux d’erreurs cible : 10-8
Ga = 10 log (R.dmin)
dmin > 25
∫∞
=−=
xt
b
dttxerfc
avecNEerfc
)exp(2)(
)(21
2
0
π
distinction traditionnelle mais inappropriée entre
Les codes en « bloc » : Hamming, Golay, BCH, Reed-Solomon, ...
Les codes « convolutifs »
Une distinction plus naturelle prendrait en compte l’algorithmede décodage, en particulier :• hard – dur (algébrique)• soft – souple (probabiliste)
(un code convolutif 64 états a une distance dmin = 10 pour R = 1/2 !!)
Mais non décodable en pratique ...
Codes correcteur d’erreurs Généralités
extensionde la bande (dB)0 1 2 3
Limite (Eb/N0, dB) (k infini) [Shannon, Proakis]
0
1
2
3
canalcontinu
canalà entréebinaire
R=1/2R=2/3R=3/4R=4/5R=5/6
(sur la base d’un code aléatoire)
Timisoara 18-20 mars 2003
ENST Bretagne 8
Taille du bloc (k)
∆ Eb/N0 (dB)
1
2
3
4
5
100 101 102 103 104 105
(taux d’erreurs paquets = 10-4)
Correction à prendre en compte pour des bocks de taille k :[S. Dolinar, D. Divsalar and F. Pollara, "Code performance as afunction of block size", TMO progress report 42-133, JPL, NASA].
Codes correcteur d’erreurs Généralités
Calcul des limites
Un outil de calcul des limites théoriques a été développé par un étudiant en thèse il est disponible à l’adresse :http://www-elec.enst-bretagne.fr/~emaury/Capa_UI.html
Plus le registreest grand, meilleur est le code convolutif
Fermeture de treillisdi =0
di =1
00
01
10
11
01
10
110 1 2 3 n-1 n
Bloc de k bits, 2k bits transmis → R=1/2
00
Initialisation
0 0D Ddi
yi
xi
Timisoara 18-20 mars 2003
ENST Bretagne 26
Fermeture de treillisdi =0
di =1
00
01
10
1100
01
10
110 1 2 3 n-1 n
Bloc de k bits, 2k+K-1 bits transmis → R=k/(2k+K-1)
Initialisation
0 0
Transmission de l’état final
(K-1 bits)
D Ddi
yi
xi
Fermeture de treillis
00
01
10
110 1 2 3 n-1 n
Initialisation
0 0Insertion
detail bits
00
D Ddi
yi
xi
Bloc de k bits, 2k+2(K-1) bits transmis → R=k/2(k+K-1)
0D Ddi
yi
xi
Timisoara 18-20 mars 2003
ENST Bretagne 27
D DD
000001010011100101110111
yi
di
Codes convolutifs circulaires
0 1 1 1 1 10 0
D DD
000001010011100101110111
yi
di
Codes convolutifs circulaires
Timisoara 18-20 mars 2003
ENST Bretagne 28
Calcul de l’état circulation
s1 s3s2AB
11. −− += iii XSGS
S X Gi
i
i
i
i
i i
i
i
sss
A BBB
=
=+
=
1
2
3
1 0 11 0 00 1 0
,
,
,
; ;
Mod 2 (1)
La période L du générateur est telle que (Identité)
En partant de (1), nous pouvons en déduire :
G IL =
11. −− += iii XSGS
221 . −−− += iii XSGS
001 . XSGS +=
Après codage d’une séquence de longueur k :
∑=
−−+=
kpp
pkkk
...110. XGSGS (2)
Si est inversible, il existe un tel que . est appelé état de circulation.
S S Sc k= = 0Sc
Sc
∑=
−−
+=kp
pk-pk
c...1
11
. XGGIS (3)
kGI +
Timisoara 18-20 mars 2003
ENST Bretagne 29
En pratique :
Le codeur est initialisé à ; la séquence de longueur k est codée donnant, d’après (2) :
(3) devient :
(4)
La correspondance entre est mémorisée dans une petite fonction combinatoire (3 bits en entrée, 3 bits en sortie).
S 00 =
∑=
−−=
kpp
pkk
...11
0 XGS
S I G Sck
k= +−1 0.
0et kSS
000001010011100101110111
Codes convolutifs circulaires
0 1 1 1 1 10 0
- Codage de la séquence d’information- Détermination de l’état de circulation
• Pré-codage :
• Initialisation à l’état de circulation• Codage
- Initialisation à l’état tout zéro
000
010
Timisoara 18-20 mars 2003
ENST Bretagne 30
Prologue
Codes convolutifs circulaires (comment décoder ?)
Fermeture de treillis
• “tail bits” rendement de codage
☺ facile à implémenter
• codes circulaires (“tail biting” NSC)pré-codage
☺ rendement de codage
Timisoara 18-20 mars 2003
ENST Bretagne 31
Chapitre 3
Algorithmes de décodage à entrée et sortie pondérées ou
SISO (Soft-In Soft-Out)
Codes convolutifs algorithmes SISO
Le turbo-décodage utilise des décodeurs élémentaires à entrées et sorties pondérées.
Deux familles d’algorithmes de décodage SISO pour les codes convolutifs :
• Les algorithmes basés sur l’algorithme deViterbi
• L’algorithme MAP (Maximum A Posteriori) et ses approximations
Timisoara 18-20 mars 2003
ENST Bretagne 32
Illustration avec le code suivant :
D Did
iX
iY
00 (0)
01 (1)
10 (2)
11 (3)
00 (0)
01 (1)
10 (2)
11 (3)
0=id1=id
i-1 i
Codes convolutifs algorithmes SISO
Modèle de la chaîne de transmission
Les symboles transmis Xi et Yi, i = 1…k prennent leurs valeurs dans {-1,+1}
Codeurconvolutif
Canalgaussien
decodeurSISO{ }kdd ,,1 L
{ }kXX ,,1 L
{ }kYY ,,1 L
{ }kxx ,,1 L
{ }kyy ,,1 L{ }kdd ˆ,,1̂ L
source destinataire
k1c k
1r
),( avec } ,,{ 11 iiikk YXccc == Lc
: séquence codée et modulée (MDP2)k1c
k1r : séquence bruitée reçue
),,( avec } ,,{ 11 iiikk yxrrr == Lr y
iiixiii nYynXx +=+= ,
Codes convolutifs algorithmes SISO
Timisoara 18-20 mars 2003
ENST Bretagne 33
Application de l’algorithme de Viterbi
Codes convolutifs algorithmes SISO : SOVA
• L’algorithme de Viterbi est utilisé pour chercher le chemin à vraisemblance maximale dans le diagramme en treillis.
• Critère de décodage : maximiser }{Pr 11kk|CR
( ) ( )
σ−−
σ−−∏
σπ=
∏=
=
=
2
2
2
22
1
111
2exp
2exp
21
}{Pr}{Pr
iiiik
i
k
iii
kk
YyXx
C|R|CR
• Maximiser minimiser }{Pr 11kk|CR [ ]∑ −+−
=
k
iiiii YyXx
1
22 )()(
22 )()( iiiii YyXxL −+−=x
xxxxii
i
jji LMLM +=∑= −
=1
1
• Calcul (récursif) de la métrique de chemin associée au chemin x.
xiM
• A chaque instant i, calcul de la métrique de branche associée à chaque chemin x dans le treillis, c-a-d de la distance euclidienne entre le symbole reçu ri et le symbole codé ci associé au chemin x.
xiL
Application de l’algorithme de Viterbi
Codes convolutifs algorithmes SISO : SOVA
Timisoara 18-20 mars 2003
ENST Bretagne 34
0
1
2
3
0
1
2
3
di = 0di = 1
i-1 i
(-1,-1)
(1,1)
(1,-1)
(-1,1)
(-1,-1)
(1,1)
(-1,1)
(1,-1)
(Xi, Yi)
Exemple22, )1()1( +++== iiii yxLL 00x
x00x1
22, )1()1( −++++== iiiii MyxMM
x
22, )1()1( ++−== iiii yxLL 12xx12x
122, )1()1( −+++−== iiiii MyxMM
x
Codes convolutifs algorithmes SISO : SOVA
Application de l’algorithme de Viterbi
• Pour chaque nœud s, recherche du chemin à métrique minimale (le survivant) et mémorisation de la métrique associée avec la valeur de di.
)(ssiM
0
1
2
3
0
1
2
3
i-1 i
(-1,-1)
(1,1)
(1,-1)
(-1,1)
(-1,-1)
(1,1)
(-1,1)
(1,-1)
(Xi, Yi)
01,iM
00,iM )(0s
iM⇒0
13,iM
12,iM )(1s
iM⇒121,
iM20,
iM)(2s
iM⇒2
32,iM
33,iM
)(3siM⇒3
Application de l’algorithme de Viterbi
Codes convolutifs algorithmes SISO : SOVA
Timisoara 18-20 mars 2003
ENST Bretagne 35
0
1
2
3i1−i2−i2−− Li1−− LiLi −
))((min)(,...,
s230s
si
si MM
==
• A l’instant i-L, la décision est la valeur binaire stockée dans le nœud appartenant au chemin survivant.
Lid −ˆ
Lid −ˆ
• A l’instant i, sélection du nœud à métrique minimale,
chemin survivant
Application de l’algorithme de Viterbi
Codes convolutifs algorithmes SISO : SOVA
• Remontée le long du chemin survivant (pour profiter du futur).
• L’algorithme de Viterbi ne peut pas être utilisé pour le décodage itératif !
Il produit des décisions binaires
Il doit être modifié pour produire des décisions pondérées=> SOVA (Soft-Output Viterbi Algorithm)
Codes convolutifs algorithmes SISO : SOVA
Timisoara 18-20 mars 2003
ENST Bretagne 36
0)()()( ≥−=∆= sss si
ciii MMMw
• Une première estimation de la fiabilité ou du poids de la décision peut être donnée par la différence entre les métriques du chemin survivant et de l’autre chemin ( le chemin concurrent):
• Mais cette estimation doit être affinée! => algorithmes de révision des poids
0)(Si 1 >>∆ − 1iM0)(et =∆ 2iM
=> le poids à l’instant i-1 doit être revu à la baisse
0
1
2
32−− Li1−− LiLi − i1−i2−i
survivant concurrent
Codes convolutifs algorithmes SISO : SOVA
• Encore appelé algorithme BCJR (Bahl, Cocke, Jelinek, Raviv), algorithme APP (A Posteriori Probability), ou algorithme Aller-Retour (Backward-Forward)
• But de l’algorithme : calcul du Logarithme de Rapport de Vraisemblance (LRV) relative à la donnée di
• Chaque APP (A Posteriori Probability) est estimée par le biais des probabilités conjointes
}{Pr 1k
i jd r=
jiT : ensemble des transitions du treillis
associées à di = j
Codes convolutifs algorithmes SISO : MAP
• Principe de l’algorithme MAP : traiter séparément les données relatives aux instants compris entre 1 et i et celles relatives aux instants compris entre i +1 et k.
=> Introduction des probabilités « aller » (forward) et « retour » (backward)
relatives aux états du treilliskii L1),( =α s kii L1),( =β s
}{Pr)( 1 sSrs ==β + ikii
},{Pr)( 1i
ii rsSs ==α
=> et des probabilités relatives aux transitions du treillis
Codes convolutifs algorithmes SISO : MAP
},{Pr),( 1 sSsSss ′===′γ −iiii r
Timisoara 18-20 mars 2003
ENST Bretagne 38
• On peut montrer que
=>∑
∑
∈′−
∈′−
β′γ′α
β′γ′α
=Λ0
1
),(1
),(1
)(),()(
)(),()(
ln)(
i
i
Tiii
Tiii
id
ss
ss
ssss
ssss
)(),()(},,{Pr 111 ssssrsSsS iiik
ii β′γ′α==′= −−
Codes convolutifs algorithmes SISO : MAP
Exemple 0
1
2
3
0
1
2
3
0=id1=id
i-1 i
L)(),()()(),()()(),()()(),()(ln)(
11
111133000011220011
iiiiii
iiiiiiid
βγα+βγαβγα+βγα=Λ
−−
−−
)(),()()(),()()(),()()(),()(
11
113322221133332200
iiiiii
iiiiiiβγα+βγα+βγα+βγα+
−−
−−L
)(),()(},,{Pr 111 2211r2S1S iiik
ii βγα=== −−** )(),()(},,{Pr 111 2200r2S0S iii
kii βγα=== −−
Codes convolutifs algorithmes SISO : MAP
Timisoara 18-20 mars 2003
ENST Bretagne 39
• Récursion aller : calcul de )(siα
Initialisation: si s0 est l’état initial du codeur
00
00
0)(1)(
ssss
≠∀=α=α
∑−
=
ν
α
α=α′12
0')'(
)()(
ss
ss
i
ii
NB: pour éviter les problèmes de précision, peut être normalisé à chaque étape de calcul ( est un rapport)
)(siα)( idΛ
∑−
=′−
ν
′γ′α=α12
01 ),()()(
sssss iii (ν = mémoire du code)
Codes convolutifs algorithmes SISO : MAP
)0(iα
)1(iα
)2(1+iα
)3(1−iα
)1(1−iα
)0(1−iα
)2(1−iα
0
1
2
3
0
1
2
3
0ou 1 =+ii dd1ou 1 =+ii dd
1−i 1+ii
Exemple:(sans normalisation)
* ),()(),()()( 11 1221331 iiiii γα+γα=α −−
),()(),()()( 11 0110000 iiiii γα+γα=α −−*
),()(),()()( 111 2002112 +++ γα+γα=α iiiii*
Codes convolutifs algorithmes SISO : MAP
Timisoara 18-20 mars 2003
ENST Bretagne 40
∑−
=++
ν
′γβ=′β12
011 ),()()(
sssss iii
• Récursion retour : calcul de )(s′βi
kkkk ssss ≠∀=β=β 0)(,1)(
Si l’état final est inconnu :
ss ∀=β ν21)(k
Normalisation:
∑−
=′
ν
β
β=β′12
0)'(
)()(
ss
ss
i
ii
Initialisation : si sk est l’état final du codeur
Codes convolutifs algorithmes SISO : MAP
)1(1−βi
0
1
2
3
0
1
2
3
0ou 1 =+ii dd1ou 1 =+ii dd
1−i 1+ii
)0(iβ
)2(iβ
)0(1+βi
)1(1+βi
)2(1+βi
)3(1+βi
Exemple:(sans normalisation)
* ),()(),()()( 1111 1213232 ++++ γβ+γβ=β iiiii
),()(),()()( 1111 2020000 ++++ γβ+γβ=β iiiii*
),()(),()()(1 0102121 iiiii γβ+γβ=β −*
Codes convolutifs algorithmes SISO : MAP
Timisoara 18-20 mars 2003
ENST Bretagne 41
• Calcul des probabilités de branches ),( ss′γi
S’il n’y a pas de transition entre s' et s dans le treillis.
sinon
si di = j est le bit d’information et ci le symbole codé et modulé correspondant à la transition s' → s du treillis et ri est le symbole reçu, à l’instant i .
Pour une transmission sur canal gaussien :
−−= 2
2
2 2exp
21}{Pr
σπσii
ii
crcr
σ2 : variance du bruit sur le canal
Codes convolutifs algorithmes SISO : MAP
0),( =′γ ssi
}{Prj}{Pr),( iiii crd ==′γ ss
σ−−
σ−−
πσ=′γ 2
2
2
2
2 2)(exp
2)(exp
41),( iiii
iYyXxss
Ν. Β. Λ(di) étant un rapport, K peut être omis dans les expressions de αi(s) et βi(s).
211}{Pr0}{Pret ),( ),,( Si ====== iiiiiiii ddyxrYXc
• Calcul des probabilités de branches ),( ss′γi
Codes convolutifs algorithmes SISO : MAP
)1,1(expexp),(
)1,1(expexp),(
)1,1(expexp),(
)1,1(expexp),(
22
22
22
22
+=+=
σ−
σ−=′γ
−=+=
σ
σ−=′γ
+=−=
σ−
σ
=′γ
−=−=
σ
σ
=′γ
iiii
i
iiii
i
iiii
i
iiii
i
YXyxK
YXyxK
YXyxK
YXyxK
ss
ss
ss
ss
Timisoara 18-20 mars 2003
ENST Bretagne 42
Solution 1: Log-MAP
Le terme est pré-calculé et stocké dans une table)1ln( bae −−+
Multiplications => additions Les exponentielles dans les probas de branches s’éliminentAdditions => ?
L’algorithme MAP dans le domaine logarithmique (Log-MAP)
☺ Performance MAPConnaissance de σ requise
)1ln(),max()ln( baba ebaee −−++=+
Codes convolutifs algorithmes SISO : Log-MAP et Sub-MAP
Performance < MAP (qqes dixièmes de dB)☺ Estimation de σ inutile
Solution 2: Sub-MAP (Max-Log-MAP)
),max()ln( baee ba ≈+
⇒ Algorithme « Dual Viterbi »
L’algorithme MAP dans le domaine logarithmique (Sub-MAP)
Codes convolutifs algorithmes SISO : Sub-MAP
Timisoara 18-20 mars 2003
ENST Bretagne 43
• Reformulation de Λ(di)
∑∑∈′
−∈′
− β′γ′α−β′γ′α=Λ01 ),(
1),(
1 )(),()(ln)(),()(ln)(ii T
iiiT
iiiidssss
ssssssss
( ){ }
( ){ })(),()(lnmax
)(),()(lnmax)(
1),(
1),(
0
1
ssss
ssss
ss
ss
iiiT
iiiT
i
i
i
d
β′γ′α−
β′γ′α≈Λ
−∈′
−∈′
Métriques de nœuds et de branches :
)(ln)(
)(ln)(
2
2
ss
ss
iBi
iFi
M
M
βσ−=
ασ−=∆
∆Métrique de nœud aller (forward)
Métrique de nœud retour (backward)
),(ln),( 2 ssss ′γσ−=′∆
iim Métrique de branche
Codes convolutifs algorithmes SISO : Sub-MAP
L’algorithme Sub-MAP calcule :)(2
)(2
ii dd Λσ=Λ′∆
{ }
( )
+′+′−
+′+′≈Λ′
−∈′
−∈′
)(),()(min
)(),()(min21)(
1),(
1),(
1
0
ssss
ssss
ss
ss
Bii
Fi
T
Bii
Fi
Ti
MmM
MmMd
i
i
+±−′−
+±+′≈Λ′
−∈′
−∈′
})()({min
})()({min21)(
1),(
1),(
1
0
ss
ss
ss
ss
Biii
Fi
T
Biii
Fi
Ti
MyxM
MyxMd
i
i
Codes convolutifs algorithmes SISO : Sub-MAP
Timisoara 18-20 mars 2003
ENST Bretagne 44
0
1
2
3
0
1
2
3i-1 i
([
)(
)])(),()(),(),()(
),(),()(,)(),()(min
)(),()(),(),()(
),(),()(),(),()(min21)(
11
11
11
11
33332200
11220011
33222211
11330000
Bii
Fi
Bii
Fi
Bii
Fi
Bii
Fi
Bii
Fi
Bii
Fi
Bii
Fi
Bii
Fii
MmMMmM
MmMMmM
MmMMmM
MmMMmMd
++++
++++−
++++
++++=Λ′
−−
−−
−−
−−
Exemple:
Codes convolutifs algorithmes SISO : Sub-MAP
})({min)(
}),()({min)(
1120
1120
iiFi
Fi
iFi
Fi
yxMM
mMM
±±′≈
′+′≈
−−=′
−−=′
ν
ν
ss
ssss
s
s
L
L
Codes convolutifs algorithmes SISO : Sub-MAP
sont calculés récursivement :)(et )( ss Bi
Fi MM
})({min)(
}),()({min)(
111120
11120
+++−=
++−=
±±≈′
′+≈′
ν
ν
iiBi
Bi
iBi
Bi
yxMM
mMM
ss
ssss
s
s
L
L
Timisoara 18-20 mars 2003
ENST Bretagne 45
0
1
2
3
0
1
2
3
0ou 1 =+ii dd1ou 1 =+ii dd
1−i 1+ii
Exemple
* ( )),()(),,()(min)( 11 1221331 iFii
Fi
Fi mΜmΜΜ ++= −−
( )),()(),,()(min)( 11 0110000 iFii
Fi
Fi mΜmΜΜ ++= −−*
( )),()(),,()(min)( 111 2002112 +++ ++= iFii
Fi
Fi mΜmΜΜ*
)(1 2FiM +
)(0FiM
)(1FiM
)(1 3FiM −
)(1 1FiM −
)(1 0FiM −
)(1 2FiM −
Codes convolutifs algorithmes SISO : Sub-MAP
0
1
2
3
0
1
2
3
0ou 1 =+ii dd1ou 1 =+ii dd
1−i 1+ii
)(0BiM
)(2BiM
)(1 0BiM +
)(1 1BiΜ +
)(1 2BiM +
)(1 3BiM +
* ( )),()(),,()(min)( 1111 3231212 ++++ ++= iΒii
Βi
Βi mΜmΜΜ
( )),()(),,()(min)( 1111 2020000 ++++ ++= iΒii
Βi
Βi mΜmΜΜ*
( )),()(),,()(min)(1 2120101 iΒii
Βi
Βi mΜmΜΜ ++=−*
)(1 1BiM −
Codes convolutifs algorithmes SISO : Sub-MAP
Exemple
Timisoara 18-20 mars 2003
ENST Bretagne 46
• Obtention de l’information extrinsèque pour le décodage itératif :
peut s’écrire :)( idΛ′
iii Zxd +≈Λ′ )(
est l’information extrinsèque produite par le décodeuriZ
+±−′−
+±+′≈Λ′
−∈′
−∈′
})()({min
})()({min21)(
1),(
1),(
1
0
ss
ss
ss
ss
Biii
Fi
T
Biii
Fi
Ti
MyxM
MyxMd
i
i
Codes convolutifs algorithmes SISO : Sub-MAP
Codes convolutifs algorithmes SISO : Biblio[1] G. Battail, “Pondération des symboles décodés par l’algorithme de Viterbi”, Ann.
Télécomm., vol. 42, N°1-2, pp. 31-38, Jan. 1987.[2] J. Hagenauer and P. Hoeher, “A Viterbi algorithm with soft-decision outputs and its
applications”, in Proc. IEEE Globecom’89, Dallas, Texas, Nov. 1989, pp. 4711-4717.
[3] C. Berrou, P. Adde, E. angui, and S. Faudeil, “A low complexity soft-output Viterbi decoder architecture”, in Proc. IEEE Int’l Conf. on Comm., Geneva, Switzerland, 1993, pp.737-740.
[4] L.R. Bahl, J. Cocke, F. Jelinek, and J. Raviv, “Optimal decoding of linear codes for minimizing symbol error rate”, IEEE Trans. Inform. Theory, vol. IT-20, pp. 284-287, 1974.
[5] P. Robertson, E. Villebrun, and P. Hoeher, “ A comparison of optimal and sub-optimal MAP decoding algorithms operating in the log domain”, in Proc. IEEE Int’l Conf. on Comm., Seattle, WA, 1995, pp.1009-1013.
[6] A. J. Viterbi, “An intuitive justification and a simplified implementation of theMAP decoder for convolutional codes”, IEEE Journal on Selected Areas in Comm.,Vol. 16, N°2, Feb. 1998.
[7] B. Vucetic, J. Yuan, Turbo Codes, Principles and Applications, Kluwer Academic Publishers, 2000.
Timisoara 18-20 mars 2003
ENST Bretagne 47
Chapitre 4
Turbo codes
Plan
• Mots croisés• “turbo codes historique”• Pourquoi de si bons résultats ?• Différents schémas
Inventés* en 1990, les Turbo Codes est une mise en oeuvre de la déclaration de Claude Shannon (1953) :
A scheme of coding and decoding can be found allowing correction of all transmission errors, if the information rate
is inferior or equal to the channel capacity.
* première publication à ICC’93 – Genève - Suisses
Travaux précédents : Tanner, Gallager, Battail, Hagenauer & Hoegher, …
Timisoara 18-20 mars 2003
ENST Bretagne 49
Turbo CodesCodeurCodeurUn Turbo codeur est constitué d’au moins deux codeurs élémentaires de codes convolutifs systématiques (RSC) codes séparés par un entrelaceur
Concaténation parallèle de 2 codes RSC
Code 1
Code 2
Données
diy1i
y2i
Redondance
xi
π Rendement naturel :1/3
Turbo CodesCodeurCodeurUn Turbo codeur est constitué d’au moins deux codeurs élémentaires de codes convolutifs systématiques (RSC) codes séparés par un entrelaceur
Concaténation parallèle de 2 codes RSC(R=1/2)
Code 1
Code 2π
Données
di
y1i
y2i
Poinçonnage
Redondanceyi
xi
Timisoara 18-20 mars 2003
ENST Bretagne 50
Xi = (2xi-1) + ni (xi=di)Y1i = (2y1i-1) + n1iY2i = (2y2i-1) + n2i
Décodeur 1 Décodeur 2Xi
Y1i
Y2i
π-1π di^
Code 1
Code 2π
Données
diy1i
y2i
Redondance
xi
Turbo CodesDécodeur
Construit sur la base de décodeurs élémentaires à entrées et sorties pondérées (Soft Input Soft Output SISO)Processus itératif (effet turbo)
Décodeur 1 Décodeur 2(SISO) (SISO)
Xi
Y1i
Y2i
π-1π
Xi = (2xi-1) + ni (xi=di)Y1i = (2y1i-1) + n1iY2i = (2y2i-1) + n2i
di^
π-1
Timisoara 18-20 mars 2003
ENST Bretagne 51
Turbo CodesDécodeur
Construit sur la base de décodeurs élémentaires à entrées et sorties pondérées (Soft Input Soft Output SISO)Processus itératif (effet turbo)
Zp i : information extrinsèque associée à la donnée diZp i et Xi sont altérées par des bruits non corrélés (effet de la diversité)
Zp-1 i
π-1 di^
Timisoara 18-20 mars 2003
ENST Bretagne 52
xi
Code 1
Code 2
Données
diy1,i
y2,iπ
Décodeur 1
Décodeur 2
Xi
Y1,i
Y2,i
π -1π
π
Comment faire pour que les deux décodeurs travaillent conjointement, c’est à dire que le décodeur 1 profite de Y2et que le décodeur 2 profite de Y1 ?
« Message passing »« turbo »
Turbo décodage Information extrinsèque
X1
X2
• Critère de décodage : les deux décodeurs doivent converger vers la même solution (décision et probabilité associée)
X
Y1
Y2
π
O1 =X1+Z1
O2 =X2+Z2
Z1
Z2
π-1
Décodeur 1(SISO)
Décodeur 2(SISO)
Timisoara 18-20 mars 2003
ENST Bretagne 53
O2 =(X2+Z1)+Z'2
O1 =(X1+Z2)+Z'1
X1+Z2
X2+Z1
Turbo décodage Information extrinsèque
X
Y1
Y2
Décodeur 1(SISO)
Décodeur 2(SISO)π
Z1
Z2
π-1
• Critère de décodage : les deux décodeurs doivent converger vers la même solution (décision et probabilité associée)
Turbo décodage Le principe turbo
Décodeur 2G2
Décodeur 1G1 SNRZ1out
SNRZ2inSNRZ2out
SNRZ1in
Canal Eb/N0
Itérations et convergence d’un turbo décodeur
L’information Extrinsèque est approximée à une variableGaussienne de moyenne λ et de variance σλ
2
22 / λ∆
σλ=SNRChaque décodeur est considéré au travers d’une fonction de transfert non-linéaire de rapport signal à bruit (SNR)SNRZ1out=G1 (SNRZ1in , Eb/N0)SNRZ2out=G2 (SNRZ2in , Eb/N0)
Timisoara 18-20 mars 2003
ENST Bretagne 54
Turbo décodage Le principe turbo
Itérations et convergence d’un turbo décodeur
G1
G2-1
SNRin
SNRout
1ère itération2ème itération
3ème itérationtunnel
dépend de Eb/N0
D. Divsalar, S. Dolinar, F. Pollara, "Low Complexity Turbo-like Codes", Proc. 2nd International Symposium on Turbo Codes and Related Topics, Brest, France sept. 2000, pp. 73-80
Turbo codeur Turbo décodeur :une structure à contre-réaction
sortiedécodéeY2
Y1
d̂
LLR (d)
LLR (d)1
2
X1
X2
Z1
Z2
X
décodeurSISO8 états
Π
Π
Π−1
x
y1
y2
permutation
d(données)
C1
Π C2 décodeurSISO8 états
x β x β
Adaptée pour un circuit analogique, mais pas pour un circuit numérique !!⇒ Processus itératif
Timisoara 18-20 mars 2003
ENST Bretagne 55
Turbo codeur Turbo décodeur
sortiedécodéeY2
Y1
d̂
LLR (d)
LLR (d)1
2
X1
X2
Z1
Z2
X
décodeurSISO8 états
Π
Π
Π−1
x
y1
y2
permutation
d(données)
C1
Π C2 décodeurSISO8 états
x β x β
Information extrinsèque
Décodeurs à entrées et sortiespondérées
Réglage dugain de boucle
Pourquoi de si bons résultats ?
Timisoara 18-20 mars 2003
ENST Bretagne 56
Turbo codes :similaires à des RSC de grande longueur
Il peut être comparé à un code convolutif ayant une grande longueur de contrainte,qu’il est possible de décoder.
xi
Code 1
Code 2
Données
diy1i
y2iπ
Décodeur 1
Décodeur 2
Xi
Y1i
Y2i
π -1π
1 2 ν
d X
Y
Générateurpseudoaléatoire
R = 1/2 R = 2/3 R = 3/4 R = 4/5
R = 5/6 R = 6/7 R = 7/8
-0.2 0.2 0.6
0.03
0.07
0.06
0.04
0.05
0.020.8 1.2 1.6
0.021.6 2.0 2.4
0.03
0.07
0.06
0.04
0.05
0.02
0.06
0.05
0.03
0.04
0.011.2 1.6 2.0
= 2 = 4
= 6
0.02
0.06
0.05
0.03
0.04
0.01
0.02
0.06
0.05
0.03
0.04
0.01
0.01
0.05
0.04
0.02
0.03
0.001.6 2.0 2.4 1.8 2.2 2.6 2.2 2.6 3.0
= 8
Limite de Shannon(canal gaussien entrée binaire)
ν ν
ν ν
0.05
0.09
0.08
0.06
0.07
0.04
TEBE /Nb 0
Plus le registreest grand, meilleur est le code convolutif
Timisoara 18-20 mars 2003
ENST Bretagne 57
Code 1
Code 2π
Données
diY1,i
Y2,i
xi
Mémoire ν
k bits
Code simple
ν ≤ mémoire ≤ k +2ν
À prouver !
Turbo codes :similaires à des RSC de grande longueur
Pourquoi de si bons résultats ?Lorsqu’un paquet d’erreurs affecte “code 1”, les erreurs sont disséminées pour le “code 2” et vice versa.
xi
Code 1
Code 2
Données
diy1i
y2iπ
Décodeur 1
Décodeur 2
Xi
Y1i
Y2i
π -1π
Timisoara 18-20 mars 2003
ENST Bretagne 58
Turbo codes :une approche du codage aléatoire
Concaténation parallèle de N codes
CRSC:
Codage quasi-aléatoire
(pour N ≥ 4)
Et c’est décodable !!Tirés de manière aléatoire
Heureusement, N = 2 est suffisant:
turbo codes
permutationk donnéesbinaires
Mot
de
code
Partiesystématique
ΠCRSC
permutationΠ
CRSC
permutationΠ
CRSC
N
2
1(identity)
YN,i
Y1,i
Y2,i
Treilliscirculaire
0k-1
Y1,0
Y1,k/N-1
Y2,0
YN,0
YN,k/N-1
Y2,k/N-10k-1
0k-1
Treilliscirculaire
Treilliscirculaire
Xi = (2xi-1) + ni (xi = di)Y1,i = (2y1i-1) + n1iY2,i = (2y2i-1) + n2i
Code 1
Code 2π
Data
diy1,i
y2,i
xi
Le rôle fondamental de π :minimiser la probabilité que les 2 décodeurs défaillent
(un problème très complexe combinant algèbre, géométrie, ...)
Decodeur 1
Decodeur 2
Xi
Y1,i
Y2,i
π
Timisoara 18-20 mars 2003
ENST Bretagne 59
Différents schémas de turbo codes
Turbo code en blocCode 1(k , n) πDonnées
Code 2(k , n)
M1 C1 M2 C2
concaténation série de deux codes en bloc
Mot de
code
k colonnes
n colonnes
k lignesn lignes
Mot de code 2
Mot de code 1
Redondance 1
Redondance 2
Timisoara 18-20 mars 2003
ENST Bretagne 60
Turbo code en blocCode 1(k , n) πDonnées
Code 2(k , n)
M1 C1 M2 C2
Propriétés (sans poinçonnage) :• n = n1.n2• k = k1.k2• R = R1.R2• dmin = dmin1.dmin2
Turbo codes convolutifs auto-concaténés
Code 1
Code 2
Données
diy1i
y2iπ
xi
Code 1Données
diyi
xi
π
Timisoara 18-20 mars 2003
ENST Bretagne 61
Principe de décodage
1
Données Données entrelacées
k
Information extrinsèque (z)
Code 1
Code 2
données
diy1i
y2iπ
xi
Code 1données
diyi
π
xi
Quelques schémas Turbo codes convolutifs
Code 1
Code 2
données
ai,bi y1i
y2iπ
Code 1
Code 2
données
diy1i
y2iπ
xi
classique Auto-concaténé
duo-binaire série Et plein d’autres ...
Timisoara 18-20 mars 2003
ENST Bretagne 62
Chapitre 5
La permutation
Permutation(Permutation ≡ entrelacement)
C1
C2
Π
données A
Y1
Y2
Le comportement à faibleTEB (<10-5) est fonctionde la façon dont Π estconçu
Le rôle fondamental de la permutation : si une séquence directe est RTZ, il fautminimiser la probabilité que la séquence permutée soit aussi RTZ (et vice-versa).
Le rôle fondamental de la permutation : si une séquence directe est RTZ,il faut minimiser la probabilité que la séquence permutée soit aussi RTZ(et vice-versa).
Rappel :
X
Turbo codes duo-binaires Contribution des codes duo-binaires sur les distances minimales
000
001
010
011
100
101
110
111
000
001
010
011
100
101
110
111
Treillis binaire
Treillis Duo-binaire(partiel)
X AB
(a) (b)
AB
Y
X
Y
100000010 00 00 00 00 00 010000001
2010 00 00 00 00 00 0201
1300000000000013
1
2
3
0
00
0
k
kk / 2
k / 2
00 : 001 : 110 : 211 : 3
Périodicités du Code duo-binaire
exemples demotifs à faibles distances avec unepermutationrégulière
Timisoara 18-20 mars 2003
ENST Bretagne 76
Grâce à cette technique, les distances minimales sont généralementplus grandes que celles des concaténations séries (codes produits) !!!!
Turbo codes duo-binaires Contribution des codes duo-binaires sur les distances minimales
Permutation intra-symbole
2 0 10 00 00 00 00 00 02 0 1
1 30 00 00 00 00 00 01 3
3 0 0 0 0 0 0 30 00 00 02 0 0 0 0 0 0 2
3 0 0 0 0 0 0 30 00 00 00 00 00 03 0 0 0 0 0 0 3
1 30 00 00 00 00 00 00 00 00 00 00 00 00 01 3
Ces motifs ne sont pluspossibles si les couples sontInversés périodiquement
Motifs d’erreurs possiblesavec une grande distance
(A,B) devient (B,A)avant le codage vertical,une fois de temps en temps
(sans introduction de désordre aléatoire !)
• Latence divisée par 2 (codage et décodage)• Débit de traitement des données doublé (parallélisme intrisèque)• Plus faible dégradation MAP → SUB-MAP• Meilleur mapping pour constellations à grand nombre d’états
Turbo codes duo-binaires Autres avantages des codes duo-binaires