Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Emmanuel Boutillon - Architecture générique de ...

SCEE Team
April 07, 2005

Emmanuel Boutillon - Architecture générique de décodage de code LDPC

SCEE Team

April 07, 2005
Tweet

More Decks by SCEE Team

Other Decks in Research

Transcript

  1. 7 Avril 2005 E. Boutillon 1/54 http://lester.univ-ubs.fr/ Architecture générique Architecture

    générique de décodage de code LDPC de décodage de code LDPC F. GUILLOUD E. BOUTILLON [email protected] [email protected] 0 1 2 3 4 5 6
  2. 7 Avril 2005 E. Boutillon 2/54 http://lester.univ-ubs.fr/ Prédiction de Shannon

    (année 50) zone de couverture potentiel Importance du codage... Invention des turbo-codes 1993 (Berrou Glavieux) Situation en 1990 zone de couverture de l'émetteur Emetteur 1995 : Redécouverte des codes LDPC (Gallager 1960) Compétition LDPC-Turbo-Code...
  3. 7 Avril 2005 E. Boutillon 3/54 http://lester.univ-ubs.fr/ Low Density Parity

    Check Code 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 Inventé en 1961 par Gallager (thèse MIT), oublié, redécouvert en 1995 (MacKay, Ritchardson).
  4. 7 Avril 2005 E. Boutillon 4/54 http://lester.univ-ubs.fr/ nCode de parité

    o Principe des codes LDPC pArchitecture de décodeur LDPC pEn guise de conclusion PLAN
  5. 7 Avril 2005 E. Boutillon 5/54 http://lester.univ-ubs.fr/ Parity check Parity

    check (3,2,1) : (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)} b0 b1 b2 bits CP Generalization: Parity Check (n, n-1, 1)
  6. 7 Avril 2005 E. Boutillon 6/54 http://lester.univ-ubs.fr/ Décodage d'un code

    de Parité bj ∈ {0,1} Mod. xj ∈{-1,+1} N(0,σ) Démod. xj yj = xj +wj wj 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
  7. 7 Avril 2005 E. Boutillon 7/54 http://lester.univ-ubs.fr/ Décodage d'un code

    de Parité Quelle information i1 et i2 donnent sur la valeur b0 ? En utilisant: 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 ln( 2 1 2 1 2 1 0 i i i i e e e e i i e + ⋅ + = ⊕ = e0 est appelé information extrinsèque ? b1 b2 bits CP i1 i2 e0
  8. 7 Avril 2005 E. Boutillon 8/54 http://lester.univ-ubs.fr/ 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. b0 b1 b2 y0 y1 y2 2.9 2.2 ij b0 b1 b2 1.4 ij ej -1.0 -1.2 -1.7 2,9 2,2 1,4 1.9 1 -0.3 2.9 2.2 1.4 Mot de code
  9. 7 Avril 2005 E. Boutillon 9/54 http://lester.univ-ubs.fr/ Conseil : éviter

    les auto-confirmations Jean et Claire… 80% Pierre Paul Jean et Claire… 80% Jean et Claire… 80% 90% Jacques Jean et Claire… 80%
  10. 7 Avril 2005 E. Boutillon 10/54 http://lester.univ-ubs.fr/ Note: itération Si

    le processus itère de nouveau, il y a autoconfirmation b0 b1 b2 1,9 1 Ij b0 b1 b2 -0,3 Tj Ej 0,1 0,2 -0,8 1,9 1 -0,3 2 1,2 -1,1 1,9 1 -0,3 Et le système diverge...
  11. 7 Avril 2005 E. Boutillon 11/54 http://lester.univ-ubs.fr/ nCode de parité

    o Principe des codes LDPC pArchitecture de décodeur LDPC pEn guise de conclusion PLAN
  12. 7 Avril 2005 E. Boutillon 12/54 http://lester.univ-ubs.fr/ LDPC Code Peut

    être défini par un graph bi-partite 0 1 2 3 4 5 6 Bit bi Parity checks (PC) Branches (b0 , b1 , … , b6 ) mot de code <=> toutes les PC sont respectées
  13. 7 Avril 2005 E. Boutillon 13/54 http://lester.univ-ubs.fr/ Pourquoi le nom

    de LDPC ? Représentation algébrique : X = (x0 , x1 , …, x6 )T mot de code si H.X = 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 H = 0 1 2 3 4 5 6 Matrice de parité 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 N=nombre de bits P=nombre de PC Moins de 1% des bits de H sont égaux à 1
  14. 7 Avril 2005 E. Boutillon 14/54 http://lester.univ-ubs.fr/ 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 ?
  15. 7 Avril 2005 E. Boutillon 15/54 http://lester.univ-ubs.fr/ 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
  16. 7 Avril 2005 E. Boutillon 16/54 http://lester.univ-ubs.fr/ 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".
  17. 7 Avril 2005 E. Boutillon 17/54 http://lester.univ-ubs.fr/ Décodage itératif 0

    1 2 3 4 5 6 8 9 10 11 12 13 14 7 y1 y2 y0 y13 y14 y12 y10 y11 y9 y7 y8 y6 y4 y5 y3 Première itération: message bit-> parité 7
  18. 7 Avril 2005 E. Boutillon 18/54 http://lester.univ-ubs.fr/ Décodage itératif 0

    1 2 3 4 5 6 8 9 10 11 12 13 14 7 y1 y2 y0 y13 y14 y12 y10 y11 y9 y7 y8 y6 y4 y5 y3 7 0 1 2 3 4 5 6 8 9 10 11 12 13 14 7 Première itération: message parité-> bit
  19. 7 Avril 2005 E. Boutillon 19/54 http://lester.univ-ubs.fr/ Décodage itératif 0

    1 2 3 4 5 6 8 9 10 11 12 13 14 7 y1 y2 y0 y13 y14 y12 y10 y11 y9 y7 y8 y6 y4 y5 y3 7 0 1 2 3 4 5 6 8 9 10 11 12 13 14 7 Deuxième itération: message parité -> bit
  20. 7 Avril 2005 E. Boutillon 20/54 http://lester.univ-ubs.fr/ Calcul d'un nœud

    de variable ∑ ≠ − = + = i m m i i n i a t e i a , ∑ + = m m n e i t Bit Node bn yn in e0 e1 e2 e3 Bit Node bn in a0 = t-e0 a1 a2 a3 yn t t
  21. 7 Avril 2005 E. Boutillon 21/54 http://lester.univ-ubs.fr/ Calcul d'un nœud

    de parité dc i i i i j i a a a a a a e ⊕ ⊕ ⊕ ⊕ = = + − ≠ ⊕ ... ... 1 1 2 1 Check Node b0 b1 b2 b3 b4 a0 a1 a2 a3 a4 Check Node b0 b1 b2 b3 b4 e0 e1 e2 e3 e4 Deux méthodes de calcul : directe ou fréquentielle
  22. 7 Avril 2005 E. Boutillon 22/54 http://lester.univ-ubs.fr/ Calcul parité: méthode

    fréquentielle a) calcul du signe XOR XOR XOR XOR XOR sign(a1 ) sign(a2 ) sign(a3 ) sign(a4 ) sign(e1 ) sign(e2 ) sign(e3 ) sign(e4 )
  23. 7 Avril 2005 E. Boutillon 23/54 http://lester.univ-ubs.fr/ Calcul parité: méthode

    fréquentielle b) calcul du module ∑ ≠ − Φ Φ = j i k k a e )) ( ( 1 avec )) 2 / ln(tanh( ) ( x x − = Φ LUT φ LUT φ LUT φ LUT φ + LUT φ−1 LUT φ−1 LUT φ−1 LUT φ−1 - - - - 1 a 4 a 1 e 4 e 2 e 3 e 2 a 3 a
  24. 7 Avril 2005 E. Boutillon 24/54 http://lester.univ-ubs.fr/ 0 1 2

    3 4 5 0 1 2 3 4 5 6 x -ln(tanh(x/2) Fonction Φ(x)= Φ−1(x) On obtient : e = min(a1 ,a2 ,a3 ) - offset a1 =0.5 a2 =1,2 a3 =1,9 e=0,3 a1 a2 a3 e ∑ ≠ − Φ Φ = j i k k a e )) ( ( 1
  25. 7 Avril 2005 E. Boutillon 25/54 http://lester.univ-ubs.fr/ Exercice Processeur de

    parité b0 b1 b2 b3 b4 -6 8 3 -2 4 Processeur de parité b0 b1 b2 b3 b4 ? 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) 2 -2 -2 3 -2
  26. 7 Avril 2005 E. Boutillon 26/54 http://lester.univ-ubs.fr/ Traitement des parités

              Φ Φ = ∑ ∈ − n m N n n m n m a e \ ) ( ' ' , 1 , ) ( Traitement des variables ∑ ∈ + = − = m n M m n m n n m n n m e i e t a \ ) ( ' , ' , , • Algorithme BP O Propagation de croyance (Belief Propagation) O Initialisation : ¾ In = 2yn /σ² ¾ Extrinsèque branche : Em,n =0 ¾ Fiabilités : Tm,n =0 O Itérations : tous les messages sont traités Propagation V → P Propagation P → V
  27. 7 Avril 2005 E. Boutillon 28/54 http://lester.univ-ubs.fr/ Sequencement par inondation

    (Méthode classique) 0 1 2 3 4 5 Flooding 0 => postulat faux : unique séquencement efficace 0 1 2 3 4 5
  28. 7 Avril 2005 E. Boutillon 32/54 http://lester.univ-ubs.fr/ Sequencement horizontal (Mansour)

    2 3 011110 101101 110101 Matrice LDPC 0 1 2 3 4 5 Convergence en moitiée moins d'itération
  29. 7 Avril 2005 E. Boutillon 36/54 http://lester.univ-ubs.fr/ 0 1 2

    3 4 5 011110 101101 110101 Matrice LDPC De nouveau, convergence en moitiée moins d'itération ! Sequencement vertical (Fossorier)
  30. 7 Avril 2005 E. Boutillon 38/54 http://lester.univ-ubs.fr/ nCode de parité

    o Principe des codes LDPC pArchitecture de décodeur LDPC pEn guise de conclusion PLAN
  31. 7 Avril 2005 E. Boutillon 39/54 http://lester.univ-ubs.fr/ Architecture parallèle O

    Exemple ¾ Blanksby, Howland, « A 690-mW 1-Gb/s 1024-b Rate-1/2 Low- Density Parity-Check Code Decoder » (IEEE Trans. on Solid-State Circuits, 2002.) O Avantages ¾ performance: 1Gb/s 64 iterations ¾ 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 ( 3) Ar chi t ect ur e : i nt r oduct i on
  32. 7 Avril 2005 E. Boutillon 40/54 http://lester.univ-ubs.fr/ 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 [ ] [ ] [ ] ycle branches/c 12 5 , 0 10 10 20 3 ycle variable/c ariable branches/v 8 7 = × × × = × = R f D N EN P clk it c
  33. 7 Avril 2005 E. Boutillon 41/54 http://lester.univ-ubs.fr/ Degré de parallélisme

    O P processeurs de parités (α cycles) O Processeurs de variables (β cycles) O Parallèle : P=M, α=1, β=1 O Série : P=1, α=dc , β=dv Entrelacement direct Entrelacement inverse … … … … Contrôle Processeurs de variables Processeurs de parités Permutations spatiales β v v d d = ' ' v d d = ' v d d = 1 P.d c ’/d v ’ … … ' v d ' v d 1 P … … ' c d d = ' c d d = ' c d α c c d d = ' ' c d
  34. 7 Avril 2005 E. Boutillon 42/54 http://lester.univ-ubs.fr/ Position du réseau

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

    x a) Mode compact a) Mode compact et parallèle (α ou β = 1) a) Mode compact et série (α ou β = d)
  36. 7 Avril 2005 E. Boutillon 44/54 http://lester.univ-ubs.fr/ Opérateur Σ ou

    x b) Mode distribué mise à jours différée ) ( ) ( 1 ) ( 0 ) ( ... i d i i i e e e t + + + = ) 1 ( 1 ) 1 ( 0 ) 1 ( ... + − + + + + = i k i i e e t ancien nouveau ) (i k s ) (i k e ) (i t ) 1 ( + i t Réseau de permutation ) 1 ( + i k e ) 1 ( + i k e t itération i -
  37. 7 Avril 2005 E. Boutillon 45/54 http://lester.univ-ubs.fr/ Opérateur Σ ou

    x b) Mode distribué mise à jours immédiate ) ( ) ( ) 1 ( 1 ) 1 ( 0 ) 1 ( ... i d i k i k i i e e e e t + + + = + − + + nouveau ) (i k s ) (i k e ) 1 ( + i t Réseau de permutation t Itération i ) 1 ( + i k e ) 1 ( + i k e ) ( ) 1 ( ) 1 ( 1 ) 1 ( 0 ) 1 ( ... i d i k i k i i e e e e t + + + = + + − + + -
  38. 7 Avril 2005 E. Boutillon 46/54 http://lester.univ-ubs.fr/ Modèle générique Paramètres

    : O Processeurs de nœuds: ¾ Architecture ¾ Position du réseau d’interconnexion (1,2,3,4) O Parallélisme : P, α, β O Contrôle des processeurs Toutes les combinaisons sont possibles
  39. 7 Avril 2005 E. Boutillon 47/54 http://lester.univ-ubs.fr/ Séquencement vertical Inondation

    Inondation (parités) • Combinaison des Contrôles Inondation Inondation parités Inondation variables séquencement horizontal Contrôle des branches Compacte Distribué Mise à jour différée Mise à jour immédiate VARIABLES P A R I T E S Compacte Distribué Mise à jour différée Mise à jour immédiate Entrelacement (vertical)
  40. 7 Avril 2005 E. Boutillon 48/54 http://lester.univ-ubs.fr/ Mansour Nouveau (algo

    Fossorier) • Etat de l’art Blanksby (parallèle) Boutillon, Chen, Zhang, Nouveau - Compacte Distribué Mise à jour différée Mise à jour immédiate VARIABLES P A R I T E S Compacte Distribué Mise à jour différée Mise à jour immédiate
  41. 7 Avril 2005 E. Boutillon 49/54 http://lester.univ-ubs.fr/ N+ f(E) N

    + M + E • Etat de l’art : taille mémoire N + E 3N+ f(E) N + 2M + E - Compacte Distribué Mise à jour différée Mise à jour immédiate VARIABLES P A R I T E S Compacte Distribué Mise à jour différée Mise à jour immédiate E : Nombre de branches F( ) : compression
  42. 7 Avril 2005 E. Boutillon 50/54 http://lester.univ-ubs.fr/ nCode de parité

    o Principe des codes LDPC pArchitecture de décodeur LDPC pEn guise de conclusion PLAN
  43. 7 Avril 2005 E. Boutillon 51/54 http://lester.univ-ubs.fr/ 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.
  44. 7 Avril 2005 E. Boutillon 52/54 http://lester.univ-ubs.fr/ 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
  45. 7 Avril 2005 E. Boutillon 53/54 http://lester.univ-ubs.fr/ LDPC vs Turbo-Code

    bits d’informations redondance codeur 1 redondance codeur 2 Entrelaceur Une autre vision d'un turbo-code 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)
  46. 7 Avril 2005 E. Boutillon 54/54 http://lester.univ-ubs.fr/ 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...
  47. 7 Avril 2005 E. Boutillon 55/54 http://lester.univ-ubs.fr/ Exemple construction matrice/architecture

    conjoint ( 3) Ar chi t ect ur e : i nt r oduct i on Matrice prototype : Hi = 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 1 Π i,j (Ip ) = 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 P P N = nP M=mP Très peu d'information pour mémoriser la matrice
  48. 7 Avril 2005 E. Boutillon 56/54 http://lester.univ-ubs.fr/ Exemple construction matrice/architecture

    conjoint ( 3) Ar chi t ect ur e : i nt r oduct i on Matrice prototype : Hi = 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 1 N = nP M=mP rotation m P t=1..E ind rot Processeurs de parité : calcul série add Mémoires