You are on page 1of 56

7 Avril 2005

Architecture générique
de décodage de code LDPC

0 1 2 3 4 5 6

F. GUILLOUD
E. BOUTILLON
guilloud@enst-bretagne.fr
emmanuel.boutillon@univ-ubs.fr
1/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Importance du codage...

Prédiction de Shannon (année 50)


Situation en 1990
zone de couverture potentiel
zone de couverture
de l'émetteur

Emetteur

Invention des turbo-codes


1993 (Berrou Glavieux)
1995 : Redécouverte des codes LDPC
(Gallager 1960)

Compétition LDPC-Turbo-Code...
2/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Low Density Parity Check Code

Inventé en 1961 par Gallager (thèse MIT), oublié, redécouvert en 1995


(MacKay, Ritchardson).

Gallager LDPC 1962


Berrou, Glavieux Turbo Codes 1993
MacKay LDPC 1995
Wiberg Graphes 1995
Richardson, Urbanke Density Evolution 2001

Premières architectures de décodeurs 2001


Standard DVB-S2 2003

3/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

PLAN

n Code de parité
o Principe des codes LDPC
p Architecture de décodeur LDPC
p En guise de conclusion

4/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Parity check
b0 b1 b2 bits
Parity check (3,2,1) :

CP

(b0, b1, b2) codeword <=> Sum of 1 = 0 mod 2.

CP(3,2,1) = {(0, 0, 0) ; (0, 1, 1) ; (1, 1, 0) ; (1, 0, 1)}

Generalization: Parity Check (n, n-1, 1)

5/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Décodage d'un code de Parité

wj N(0,σ)

bj∈ {0,1} xj yj = xj +wj


Mod. Démod.
xj∈{-1,+1}

L'observation yj donne l'information intrinsèque ij du bit bj:


ij = (p(bj=0/yj) , p(bj=1/yj))
que l'on exprime aussi par le "log likelihood ratio":
ij = ln(p(bj=1/yj)/p(bj=0/yj)) = 2yj/σ2

Note: sign(ij) => décision dure, | ij | fiabilité de la décision

6/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Décodage d'un code de Parité


Quelle information i1 et i2 ? b1 b2 bits
donnent sur la valeur b0 ?
e0 i1 i2
En utilisant: CP
p(b0=0/y1 ,y2) = p(b1=0/y1). p(b2=0/y2) + p(b1=1/y1) . p(b2=1/y2)
p(b0=1/y1 ,y2) = p(b1=0/y1). p(b2=1/y2) + p(b1=1/y1) . p(b2=0/y2)

on obtient une observation e0 de la valeur de b0 indépendante de i0 :


1 + ei1 ⋅ ei2
e0 = i1 ⊕ i2 = ln( )
i1 i2
e +e

e0 est appelé information extrinsèque


7/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Décodage d'un code de parité

Enfin, i0 et e0 sont additionnés pour obtenir la valeur finale.

Le processus est symétrique pour tous les bits.

y0 y1 y2 1,4 2,2 2,9 Mot de code

1.4 2.2 2.9 -0.3 1 1.9


ij
b0 b1 b2 b0 b1 b2
ij 1.4 2.2 2.9 ej -1.7 -1.2 -1.0

8/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Conseil : éviter les auto-confirmations

Jean et Claire… 80%


Pierre Jean et Claire… 80% 90%

Jean et Claire… 80%


Paul

Jacques Jean et Claire… 80%

9/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Note: itération

Si le processus itère de nouveau, il y a autoconfirmation

-0,3 1 1,9 -0,3 1 1,9

-1,1 1,2 2
Tj
b0 b1 b2 b0 b1 b2
Ij -0,3 1 1,9 Ej -0,8 0,2 0,1

Et le système diverge...
10/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

PLAN

n Code de parité
o Principe des codes LDPC
p Architecture de décodeur LDPC
p En guise de conclusion

11/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

LDPC Code

Peut être défini par un graph bi-partite

0 1 2 3 4 5 6 Bit bi

Branches
Parity checks
(PC)

(b0, b1, … , b6) mot de code <=> toutes les PC sont respectées

12/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Pourquoi le nom de LDPC ?

Représentation algébrique :
X = (x0, x1, …, x6)T mot de code si H.X = 0

0111100 0 1 2 3 4 5 6

P=nombre de PC
1011010
H=
1101001
Matrice de parité
N=nombre de bits

Nombre de 1 sur une ligne = dc=nombre de bit associé au PC


Nombre de 1 sur une ligne = dv=nombre de PC associé à la bit

Moins de 1% des bits de H sont égaux à 1


13/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Exemple de matrice LDPC

Matrice de parité H de taille (1024, 512), (dv,dc)=(3,6)


Question : rendement du code ? Nombre de 1 de la matrice ?

14/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Comment construire un bon code


LDPC ?
Application => taille du code et rendement

Sélection de la répartition optimale des spectres de répartition


des poids des branches (en utilisant des EXIT Chart [ref]):
exemple:
90 % bits => dv =3 branches, 10 % bits dv=> 12 branches
70 % PC => dc = 6 branches, 30 % PC => dc = 8 branches

et on choisi le code aléatoirement... en évitant juste les cycles :


bi bj
…et on obtient un bon code

15/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Algorithme à propagation de
croyance
O Step1: calcul du LLR des bits reçus (information
intrinsèque)
O Step2: Message bit->parité + traitement parité
O Step3: Message parité->bit + traitement bit
O Step4: répéter 2 et 3 jusqu'au décodage correct ou
"max iteration".

16/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Décodage itératif

y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Première itération: message bit-> parité


17/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Décodage itératif

y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Première itération: message parité-> bit


18/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Décodage itératif

y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Deuxième itération: message parité -> bit


19/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Calcul d'un nœud de variable


yn yn

in in
Bit Node Bit Node t
t
bn bn
a0= t-e0
e0 e1 e2 e3 a1 a2 a3

t = in + ∑ em ai = in + ∑ei = t − ai
m
m,m≠i
20/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Calcul d'un nœud de parité

b0 b1 b2 b3 b4 b0 b1 b2 b3 b4
a1 a2 a3 a4 e0 e1 e2 e3 e4
a0

Check Node Check Node

ei = ⊕a = a ⊕ a ... ⊕ a
j ≠i
i 1 2 i −1 ⊕ ai +1... ⊕ adc

Deux méthodes de calcul : directe ou fréquentielle

21/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Calcul parité: méthode fréquentielle


a) calcul du signe
sign(a1) sign(a2) sign(a3) sign(a4)

XOR

XOR XOR XOR XOR

sign(e1) sign(e2) sign(e3) sign(e4)

22/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Calcul parité: méthode fréquentielle


b) calcul du module
ek = Φ −1 (
∑i≠ j
Φ( ak )) a1 a2 a3 a4

avec LUT φ LUT φ LUT φ LUT φ

Φ( x) = − ln(tanh(x / 2)) +

- - - -

LUT φ−1 LUT φ−1 LUT φ−1 LUT φ−1

e1 e2 e3 e4

23/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Fonction Φ(x)= Φ−1(x)


6

5 ek = Φ −1 (

i≠ j
Φ(ak ))

4
-ln(tanh(x/2)
3
e=0,3
2
a1=0.5
1 a2=1,2
a3=1,9
0 e a1 a2 a
0 1 23 3 4 5
x
On obtient : e = min(a1,a2,a3) - offset

24/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Exercice

b0 b1 b2 b3 b4 b0 b1 b2 b3 b4
-6 8 3 -2 4 2 -2 -2 3 -2
?

Processeur de parité Processeur de parité

La sous-optimalité engendre une perte de 0,5 dB en convergence.

=> solution : on soustrait une constante pour compenser la sur-évaluation


de l'extrinsèque : min(ek-β, 0)

=> CONVERGENCE PLUS RAPIDE !!!! (Fossorier)


25/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

am,n = t n − em,n
• Algorithme BP
O Propagation de croyance
= in +
∑ em',n
m '∈M ( n ) \ m

(Belief Propagation)
O Initialisation :
¾ In = 2yn/σ²
¾ Extrinsèque branche : Em,n=0
¾ Fiabilités : Tm,n=0
Itérations : tous les  

O
−1  
messages sont traités em,n =Φ  Φ ( am,n ' ) 
 n '∈N ( m ) \ n 
 
Traitement des variables Propagation V → P

Propagation P → V Traitement des parités

26/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Performances DVB-S2

64k
50 itérations

LDPC + BCH

27/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Sequencement par inondation


(Méthode classique)

0 1 2 3 4 5
0 1 2 3 4 5
Flooding

=> postulat faux : unique séquencement efficace

28/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Sequencement horizontal
(Mansour)

0 1 2 3 4 5
011110
101101
110101
Matrice LDPC

29/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Sequencement horizontal
(Mansour)

0 1 2 3 4 5
011110
101101
110101
Matrice LDPC

30/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Sequencement horizontal
(Mansour)

0 1 2 3 4 5
011110
101101
110101
Matrice LDPC

31/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Sequencement horizontal
(Mansour)

0 1 2 3 4 5
011110
101101 2 3
110101
Matrice LDPC

Convergence en moitiée moins d'itération


32/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Sequencement vertical
(Fossorier)

011110
101101 0 1 2 3 4 5
110101
Matrice LDPC

33/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Sequencement vertical
(Fossorier)

011110
101101 0 1 2 3 4 5
110101
Matrice LDPC

34/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Sequencement vertical
(Fossorier)

011110
101101 0 1 2 3 4 5
110101
Matrice LDPC

35/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Sequencement vertical
(Fossorier)

011110
101101 0 1 2 3 4 5
110101
Matrice LDPC

De nouveau, convergence en moitiée moins d'itération !

36/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Problème séquencement H et V

Trouver une architecture adaptée...

37/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

PLAN

n Code de parité
o Principe des codes LDPC
p Architecture de décodeur LDPC
p En guise de conclusion

38/54 E. Boutillon
http://lester.univ-ubs.fr/
(3)A rchitecture :introduction 7 Avril 2005

Architecture parallèle
O Exemple
¾ Blanksby, Howland, « A 690-mW O Avantages
1-Gb/s 1024-b Rate-1/2 Low- ¾ performance: 1Gb/s 64
Density Parity-Check Code
Decoder » (IEEE Trans. on
iterations
Solid-State Circuits, 2002.) ¾ Power dissipation : 690mW
¾ PER=2 10-4 @ 2,5 dB
O Drawback
¾ Complex routing =>add oc
CAD tool
¾ Fixed code
¾ Size : 52.5mm2 , 0.16µ
Techno

39/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Architecture série-parallèle
Puissance de calcul Pc : nombre de branche à traiter/ cycle d’horloge.

Pc dépend de : code (3,6)


N nombre de symboles du code ;
E nombre de branche du code 3N
R rendement du code ; 1/2
D débit d’information (bit/s) ; 10 Mbit/s
Nit nombre moyen d’itération ; 20
fclk réquence d’horloge . 100 MHz

EN it
Pc = [branches/variable]× D [variable/cycle]
N f clk R
107
= 3 × 20 × 8
= 12[branches/cycle]
10 × 0,5
40/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Degré de parallélisme
1 … P.dc’/dv’
O P processeurs de
d = dv ' d = dv ' Processeurs
parités … de variables
(α cycles) dv ' dv ' = dv β dv '
O Processeurs de … …
variables
Entrelacement Entrelacement Permutations
(β cycles) direct inverse spatiales
O Parallèle :
… …
P=M, α=1, β=1
dc ' dc ' = dc α dc '
O Série : … Processeurs
P=1, α=dc, β=dv d = dc ' d = dc ' de parités
Contrôle …
1 P

41/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Position du réseau d'interconnection


Note : Φ=f=f-1 Σ
1
2
signe f (x ) f −1
(x )
3
4
Σ
×
Position du réseau 1 2 3 4
Processeur
Σ −1 −1
Opérateur de variable
f oΣ Σo f f oΣo f
−1 −1 Σ
générique
Processeur f oΣo f f oΣ Σo f
⊗ de parité × (produit des signes)
42/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Opérateur Σ ou x
a) Mode compact

a) Mode compact et parallèle


(α ou β = 1)

a) Mode compact et série


(α ou β = d)

43/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Opérateur Σ ou x
b) Mode distribué mise à jours différée
ancien nouveau
t (i ) = e0(i ) + e1(i ) + ... + ed(i )

t (i +1) = e0(i +1) + ... + ek(i−+11)


t (i ) t (i +1)
ek(i ) ek(i +1)

- t
itération i
sk(i ) ek(i +1)

Réseau de permutation

44/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Opérateur Σ ou x
b) Mode distribué mise à jours immédiate
nouveau
t (i +1) = e0(i +1) + ek(i−+11) + ek(i ) ... + ed(i )

t (i +1)
ek(i ) ek(i +1)

- t (i +1) = e0(i +1) + ek(i−+11) + ek(i +1) ... + ed(i )

t
Itération i
sk(i ) ek(i +1)

Réseau de permutation

45/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Modèle générique
Paramètres :
O Processeurs de nœuds:
¾ Architecture
¾ Position du réseau
Toutes les
d’interconnexion
(1,2,3,4)
combinaisons
O Parallélisme : P, α, β sont possibles
O Contrôle des
processeurs

46/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

• Combinaison des Contrôles


Inondation
Entrelacement(parités)
Inondation
(vertical) VARIABLES

Distribué
Compacte Mise à jour Mise à jour
différée immédiate
Inondation séquencement
Inondation
Compacte parités horizontal
P
A
R Inondation
Mise à jour
variables
Distribué

I
différée
T
Contrôle
E
S Séquencement des branches
Mise à jour
vertical
immédiate

47/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

• Etat de l’art
VARIABLES

Distribué
Compacte Mise à jour Mise à jour
différée immédiate

Blanksby Boutillon,
Compacte (parallèle) Chen, Zhang,
Mansour
P
A
R
Mise à jour
Distribué

I Nouveau
différée
T
E -
S
Mise à jour Nouveau
immédiate (algo Fossorier)

48/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

• Etat de l’art : taille mémoire


E : Nombre de VARIABLES
branches
Distribué
F( ) : compression Compacte Mise à jour Mise à jour
différée immédiate

Compacte N+E 3N+ f(E) N+ f(E)


P
A
R
Mise à jour
Distribué

I N + 2M + E
différée
T
E -
S
Mise à jour
N+M+E
immédiate

49/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

PLAN

n Code de parité
o Principe des codes LDPC
p Architecture de décodeur LDPC
p En guise de conclusion

50/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Conclusion

Présentation d'un modèle d'architecture générique


=> classement des architectures existantes

Proposition d'architectures nouvelles pour des séquencements


verticaux ou horizontaux
=> convergence en 1/2 moins d'itération
=> architecture requiérant moins de mémoire.

51/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Conclusion sur LDPC


Pour les codes de taille importante (n > 104) les LDPCs irréguliers
ont des meilleures équivalentes à celle des Turbo-Codes

- moins de 0,1 dB de la limite de Shannon pour n = 106


(travaux de Mac-Kay, Richardson).

De rapide progrès dans la construction des matrices et des algorithmes de décodage.

Travaux en cours:

LDPC sur GF(2q)

Digital fountain

52/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

LDPC vs Turbo-Code
redondance bits d’informations redondance
Une autre vision d'un turbo-code codeur 1 codeur 2

Entrelaceur

LDPC et Turbo-code sont aux deux extrémités du spectre des graphes de Tanner

Il existe des solutions intermédiaires (turbo-code produit par exemple)

Compromis performances-complexité : un débat complexe et non tranché (DVB-S2)

53/54 E. Boutillon
http://lester.univ-ubs.fr/
7 Avril 2005

Nouvelle technique de décodage

Utilisation de décodeur purement analogique :

- propagation des messages de façon continue

- faible sensibilité des décodeurs à la précision

- les équations du transistor identiques à celle du MAP !

Gain en consommation et vitesse de décodage d'un facteur 10 à 1000 !

=> Solution très prometteuse...

54/54 E. Boutillon
http://lester.univ-ubs.fr/
(3)A rchitecture :introduction 7 Avril 2005

Exemple construction
matrice/architecture conjoint
M=mP
10011000
01101100
Matrice prototype : Hi = 10100110 N = nP
01010011

001000 000000
000100 000000
Πi,j(Ip ) = 0 00010
000001
P 000000
000000
100000 000000
010000 000000
P
Très peu d'information pour mémoriser la matrice
55/54 E. Boutillon
http://lester.univ-ubs.fr/
(3)A rchitecture :introduction 7 Avril 2005

Exemple construction
matrice/architecture conjoint
M=mP
10011000
01101100
Matrice prototype : Hi = 10100110 N = nP
01010011
P
Mémoires
t=1..E
m
add

rotation ind rot

Processeurs de parité : calcul série


56/54 E. Boutillon
http://lester.univ-ubs.fr/