FR 2909499 A1 20080606 FR 0655275 A 20061201 1 La présente invention concerne un procédé et un dispositif de décodage, ainsi qu'un appareil de communication comprenant un tel dispositif. On utilise le codage de mots d'information (d'une longueur généralement notée K) en mots de code (d'une longueur généralement notée N, avec N > K) lorsque l'on souhaite ajouter de la redondance aux informations concernées afin de retrouver l'intégralité des informations d'origine même si une partie de celles-ci est erronée ou perdue, comme dans le cas de la transmission des informations dans un canal perturbé ou de leur stockage sur un support sujet à dégradations (telles des éraflures sur un disque optique). Le décodage opéré à la réception (ou à la lecture dans le cas du stockage) afin de retrouver les mots d'information d'origine comprend en général une première phase de correction d'erreurs, qui consiste à retrouver précisément le mot de code émis (ou stocké) à partir du mot reçu (vocabulaire également usité pour désigner le mot lu dans le cas du stockage), malgré d'éventuelles erreurs et grâce à la redondance introduite, puis une phase de "demapping" qui consiste à réaliser l'opération inverse de celle effectuée lors du codage. Dans ce cadre, on connaît les codes à matrice de contrôle de parité à faible densité, dénommés dans la suite codes LDPC (selon l'abréviation de la dénomination anglo-saxonne "Low Density Parity Check', tels que décrits par exemple dans l'article "Low density parity check codes", de R. Gallager in IEEE Trans. Inform. Theory, vol. IT-8, pp. 21 û 28, 1962. Ces codes sont particulièrement intéressants non seulement parce qu'ils sont très proches de la capacité du canal (limite de Shannon) et qu'ils offrent le meilleur compromis possible entre rendement et performance (proches de la limite de Gilbert û Varshamov), mais aussi parce qu'ils admettent un décodage itératif de type passage de message. Deux principaux algorithmes de décodage des codes LDPC ont été proposés jusqu'ici, qu'il s'agisse de codes binaires (pour lesquels les symboles représentant les informations sont 0 ou 1, c'est-à-dire pris dans le corps de Galois GF(2)) ou de codes non binaires (pour lesquels les symboles sont pris dans le corps de Galois GF(q) avec q>2). Le premier, proposé dans l'article précité sous le nom de 'probabilistic decoding" est généralement connu (et dénommé dans la suite) en tant que décodage SPA (pour "Sum û Product Algorithm') ou BP (pour 'Relief Propagation'. 2909499 2 Cet algorithme est généralement qualifié d'optimal puisque le décodage SPA converge vers le maximum de vraisemblance à condition que le graphe bipartite associé au code LDPC ne contienne pas de cycles. Dans le cas des codes LDPC non binaires, cet algorithme est toutefois inutilisable dans un système réel de 5 communications à cause de sa dynamique très importante, ce qui entraine une forte instabilité des calculs effectués. En outre, il nécessite la réalisation d'un nombre important de produits, ce qui le rend complexe, et il est dépendant de la connaissance du bruit thermique. Le deuxième algorithme de décodage, sous-optimal, est principalement 10 connu sous le nom de MSA (pour "Min û Sum Algorithm'). Il est moins complexe que le SPA et indépendant de la connaissance du bruit thermique, mais il présente, en termes de taux d'erreur binaire, une perte de performances par rapport au SPA qui varie généralement de 0.25 dB à 1 dB pour un canal AWGN (de l'anglais "Additive White Gaussian Noise" pour bruit blanc gaussien additif), en fonction du 15 rendement, de l'irrégularité ou de la longueur du code utilisé. Dans ce contexte, l'invention vise ainsi notamment à proposer une solution pour le décodage des codes LDPC, en particulier non binaires, qui allie de bonnes performances (par exemple par rapport au MSA) et une complexité réduite par rapport à l'algorithme optimal (algorithme SPA). 20 L'invention propose ainsi un procédé de décodage itératif d'un mot reçu, représenté par des valeurs d'un signal, selon un code à matrice de contrôle de parité, du type à passage de messages entre des noeuds de variable et des noeuds de contrôle d'un graphe bipartite associé à ladite matrice, caractérisé en ce qu'il comprend l'une au moins des étapes suivantes : 25 - initialisation d'au moins un message d'un noeud de variable, en fonction desdites valeurs, par une information représentative du rapport entre la probabilité d'avoir le symbole le plus probable à la position correspondant au noeud de variable et la probabilité d'avoir le symbole courant à ladite position ; - détermination d'au moins un message, relatif à un symbole déterminé, 30 d'un noeud de contrôle vers un noeud de variable déterminé, comme la valeur minimale prise, parmi les séquences de symboles vérifiant l'équation au noeud de contrôle en utilisant ledit symbole déterminé au noeud de variable déterminé, par la valeur maximale des messages reçus au noeud de contrôle depuis des noeuds de variable autres que le noeud de variable déterminé et relatifs chacun au symbole associé à cet autre noeud de variable dans la séquence vérifiant l'équation ; 2909499 3 - détermination des messages d'un noeud de variable vers un noeud de contrôle relatifs à l'ensemble des symboles de telle sorte que la valeur minimale desdits messages soit nulle. La solution ainsi proposée (dénommée dans la suite MMA pour "Min- 5 Max Algorithm') permet d'obtenir de bonnes performances pour une complexité réduite, comme cela ressortira d'exemples de réalisation présentés ci-après. En pratique, l'étape d'initialisation du message d'un noeud de variable comprend par exemple les étapes suivantes : - pour chaque symbole de l'alphabet, détermination de la somme des 10 rapports de vraisemblance logarithmique binaires relatifs aux bits non-nuls du symbole et à la position correspondant au noeud de variable et; - détermination du minimum des sommes déterminées ; - soustraction à chaque somme déterminée du minimum déterminé. Par ailleurs, on peut prévoir selon ce procédé une étape de 15 détermination d'une information a posteriori relative à un noeud de variable et à un symbole, comme la somme du message initial relatif au symbole audit noeud de variable et de l'ensemble des messages reçus au noeud de variable et relatifs au symbole, auquel cas la fin du procédé itératif peut être déterminée comme suit : - pour chaque noeud de variable, détermination du symbole pour lequel 20 l'information a posteriori est minimale ; - si la séquence des symboles ainsi déterminés pour l'ensemble des noeuds de variable est un mot de code, utilisation dudit mot de code comme mot estimé. Selon un mode de réalisation de l'étape de détermination des messages 25 d'un noeud de variable vers un noeud de contrôle donné envisagée plus haut, celle-ci comprend les étapes suivantes : - pour chaque symbole, détermination de la somme du message initial relatif au symbole audit noeud de variable et de l'ensemble des messages reçus au noeud de variable en provenance d'un noeud de contrôle autre que le noeud de 30 contrôle donné et relatifs au symbole ; -détermination du minimum parmi les sommes déterminées ; - pour chaque symbole, soustraction du minimum déterminé à la somme déterminée relative au symbole. 2909499 4 Pour la réalisation pratique de l'étape de détermination d'au moins un message d'un noeud de contrôle vers un noeud de variable déterminé, celle-ci peut comprendre par exemple les étapes suivantes : - détermination, pour chaque symbole, d'une valeur intermédiaire égale 5 à la valeur minimale prise par la valeur maximale de messages reçus au noeud de contrôle depuis une partie seulement des noeuds de variable associés au noeud de contrôle ; - détermination de la valeur minimale prise par la valeur maximale parmi des valeurs intermédiaires et des messages reçus d'un noeud de variable associé 10 au noeud de contrôle et n'appartenant pas à ladite partie. Plus précisément, ces deux étapes peuvent s'écrire comme suit : - détermination, pour chaque symbole, d'une valeur intermédiaire égale à la valeur minimale prise, parmi les séquences de symboles associés à une partie seulement des noeuds de variable connectés audit noeud de contrôle et tels que la 15 somme des symboles de la séquence multipliés par les coefficients correspondant dans la matrice audit noeuds de variable soit égale audit symbole déterminé, par la valeur maximale des messages reçus au noeud de contrôle depuis les noeuds de variable de ladite partie et relatifs chacun au symbole associé à ce noeud de variable dans ladite séquence ; 20 - détermination de manière récursive, pour chaque symbole, d'une nouvelle valeur intermédiaire égale à la valeur minimale prise, parmi les couples de symboles dont le premier symbole est associé à une valeur intermédiaire précédemment calculée et correspondant à une partie des noeuds de variable et le deuxième symbole est associé à un nouveau noeud de variable n'appartenant pas 25 à ladite partie, et tels que la somme du premier symbole et du deuxième symbole multiplié par le coefficient dans la matrice du noeud de variable correspondant soit égale audit symbole déterminé, par la valeur maximale entre la valeur intermédiaire précédemment calculée relative au premier symbole dudit couple et le message reçu au noeud de contrôle depuis le nouveau noeud de variable et relatif au 30 deuxième symbole dudit couple. La nouvelle valeur intermédiaire, calculée de cette manière, correspond à une nouvelle partie de noeuds de variable comprenant l'ancienne partie et le nouveau noeud de variable. Il s'agit d'un mode de réalisation particulièrement pratique, dénommé dans la suite forward û backward (de l'anglais signifiant "vers l'avant, vers 35 l'arrière', qui permet de limiter (de préférence à deux) le nombre de noeuds de 2909499 5 variables (c'est-à-dire de dimensions) sur lesquelles on doit rechercher le minimum du maximum. Par ailleurs, selon un mode de réalisation proposé dans la suite ("implémentation sélective', le procédé comprend une étape de détermination du 5 minimum, parmi des couples de deux symboles appartenant à l'alphabet du code, du maximum de deux valeurs associées respectivement aux deux symboles de chaque couple, comprenant les sous-étapes suivantes : - détermination d'ensembles regroupant chacun les symboles auxquels sont associées des valeurs comprises dans un intervalle déterminé ; 10 -sélection d'ensembles, parmi les ensembles déterminés, de telle sorte que la réunion des ensembles sélectionnés contienne au moins un nombre prédéterminé de symboles (ce nombre prédéterminé suffisant au calcul du minimum des maxima visé ici et expliqué plus loin sous le nom de "formule minmax') ; 15 - utilisation, comme maximum parmi deux valeurs, de la valeur associée au symbole compris dans l'ensemble correspondant à l'intervalle supérieur lorsque les valeurs sont associées à des symboles compris dans des ensembles sélectionnés correspondant à des intervalles distincts ; - détermination par comparaison du maximum parmi deux valeurs 20 lorsque les valeurs sont associées à des symboles compris dans des ensembles sélectionnés correspondant à un même intervalle. Le regroupement des symboles par ensembles selon la valeur prise, en pratique par l'utilisation de la partie entière de cette valeur, permet de réduire nettement le nombre de symboles impliqués et de simplifier les opérations de 25 comparaison des valeurs associées aux symboles impliqués. Le code est par exemple un code à alphabet non-binaire, auquel cas le procédé proposé est particulièrement intéressant. L'invention propose également un dispositif de décodage itératif d'un mot reçu, représenté par des valeurs d'un signal, selon un code à matrice de 30 contrôle de parité, du type à passage de messages entre des noeuds de variable et des noeuds de contrôle d'un graphe bipartite associé à ladite matrice, caractérisé en ce qu'il comprend : - des moyens d'initialisation d'au moins un message d'un noeud de variable, en fonction desdites valeurs, par une information représentative du rapport 35 entre la probabilité d'avoir le symbole le plus probable à la position correspondant 2909499 6 au noeud de variable et la probabilité d'avoir le symbole courant à ladite position ; et/ou -des moyens de détermination d'au moins un message, relatif à un symbole déterminé, d'un noeud de contrôle vers un noeud de variable déterminé, 5 comme la valeur minimale prise, parmi les séquences de symboles vérifiant l'équation au noeud de contrôle en utilisant ledit symbole déterminé au noeud de variable déterminé, par la valeur maximale des messages reçus au noeud de contrôle depuis des noeuds de variable autres que le noeud de variable déterminé et relatifs chacun au symbole associé à cet autre noeud de variable dans la 10 séquence vérifiant l'équation ; et/ou - des moyens de détermination des messages d'un noeud de variable vers un noeud de contrôle relatifs à l'ensemble des symboles de telle sorte que la valeur minimale desdits messages soit nulle. Ce dispositif peut comporter des caractéristiques optionnelles 15 correspondant à celles envisagées plus haut pour le procédé de décodage et les avantages associés. L'invention propose enfin un appareil de communication comprenant un tel dispositif. D'autres caractéristiques et avantages de l'invention apparaîtront à la 20 lumière de la description qui suit, faite en référence aux dessins annexés dans lesquels : - la figure 1 donne à titre illustratif un exemple de matrice de parité et de graphe associé ; - la figure 2 représente les éléments principaux d'un système de 25 communication comprenant un récepteur conforme aux enseignements de l'invention ; - la figure 3 représente schématiquement la technique de passage de messages entre les noeuds de variable et les noeuds de contrôle ; - la figure 4 illustre la méthode forward û backward utilisée dans le 30 premier mode de réalisation ; - la figure 5 donne à titre explicatif une illustration des techniques proposées dans le second mode de réalisation ; - la figure 6 représente une comparaison des performances obtenues en utilisant le décodeur MSA et celui proposé par l'invention pour des codes LDPC 35 binaires et non binaires ; 2909499 7 - la figure 7 représente une comparaison des performances obtenues en utilisant les deux modes de réalisation présentés ci-après ; - la figure 8 représente une comparaison des complexités du décodage MSA et du décodage proposé par l'invention pour des codes binaires et 5 non binaires. Deux exemples de réalisation de l'invention sont présentés dans la suite, avec les notations communes suivantes : - p , un entier strictement positif appelé, dimension (ou degré d'extension) du corps de Galois ; 10 - q = 2p , appelé cardinal du corps de Galois ; - P(X) un polynôme irréductible de degré p à coefficients dans GF(2)= {0,1} ; - GF(q)= {0,1,...,qû1}, le corps de Galois à q éléments, les éléments de GF(q) étant appelés des symboles. On note que le corps de Galois GF(q) est classiquement défini comme 15 le quotient de l'anneau de polynômes GF(2)[X ] par l'idéal engendré par le polynôme P(X), mais que l'on identifie ici, pour la simplicité de l'exposé, le corps de Galois GF(q) à l'ensemble des entiers {0,1,...,qû1} muni des opérations somme et produit rappelées ci-dessous (en dénommant toutefois chaque élément du corps de Galois symbole afin de le distinguer d'un simple entier). 20 On rappelle ici que, afin de définir les opérations somme et produit munissant GF(q) d'une structure de corps, on identifie chaque symbole a E GF(q) à une séquence binaire anal ...ap correspondant à l'écriture de a en p -1 base 2, autrement dit a = lai E {0,1} . En outre, on associe au symbole a le i=o p -1 p -1 polynôme a(X) _ a~ X ` , avec par conséquent a(2)= 25 Les valeurs binaires aoal...ap seront dénommées dans la suite les bits du symbole a e GF(q) . La somme de deux symboles a,b E GF(q), notée a e b , peut alors être définie par la somme bit à bit des symboles a et b , autrement dit (a e b), = ai + b~ mod 2 . 2909499 8 Le produit de deux symboles a,b E GF(q), noté a Ob, est quant à lui défini par le produit des polynômes a(X) et b(X) modulo P(X ), autrement dit (a 0O b)(X) = a(X).b(X ) mod P(X) . Un code LDPC sur GF(q) est un code linéaire défini par une matrice de 5 parité H E M M N (GF(q)) à faible densité d'éléments non nuls (où M m ,N (GF(q)) est l'ensemble des matrices à m lignes et N colonnes à coefficients dans GF(q)). On peut alors introduire les notions suivantes : - N , la longueur de code, correspond au nombre de colonnes de la matrice H ; - M , le nombre de contrôles de parité, correspond au nombre de lignes de la 10 matrice H ; - K = N -M , la dimension du code, correspond à la longueur du mot d'information ; - x = (x1,x xN) un mot de code q -aire, i.e. une séquence de symboles xn E GF(q), tels que H • x` =0, où x` est le vecteur transposé de x, c'est-à-dire 15 tels que 0 hm n O xn = 0, Vm =1,...,M , où hm,n est l'élément en ligne m et colonne n=1,...,N n de la matrice H ; - (x10,x11,...x1,P 1x20,x21,...xzP_1, xN0,xN1,...xN,P-1), Oë xn0,xn1,...,xn,P-1 sont les bits du symbole xn E GF(q), le mot de code binaire correspondant ; - G E M K ,N (GF(q)), la matrice génératrice du code, i.e. une matrice de rang K telle 20 que H • G` = 0, où G` est la matrice transposée de G ; une séquence (a1,a2,...,aK)EGF(q)K est appelée mot d'information q -aire et étant codé en (x1,x2, xN)= (a1,az,...,aK)•G. On définit comme graphe bipartite, ou graphe de Tanner, associé à un code LDPC un graphe contenant N +M noeuds divisés en deux types : 25 - N noeuds de type variable, correspondant aux colonnes de la matrice H ; - M noeuds de type contrôle, correspondant aux lignes de la matrice H ; et dans lequel un noeud de variable est connecté à un noeud de contrôle si et seulement si l'élément correspondant de la matrice H définissant le code est non nul. 30 On utilise dans la suite les notations suivantes : - les indices m, n désignent un noeud de contrôle, respectivement un noeud de 2909499 9 variable ; - H(m) désigne l'ensemble des noeuds de variable connectés au noeud de contrôle m , son cardinal étant appelé degré du noeud de contrôle m ; - H(n) désigne l'ensemble des noeuds de contrôle connectés au noeud de variable 5 n , son cardinal étant appelé degré du noeud de variable n . Pour plus de détails sur ce type de graphes, on peut se référer à l'article 'A recursive approach to low complexity codes" de R. M. Tanner in IEEE Trans. Inform. Theory, vol. 27, no. 5, pp. 533 û 547, 1981. À titre illustratif, la figure 1 représente un exemple de matrice de parité 10 d'un code LDPC sur GF(8) et le graphe bipartite associé. À chaque arête du graphe bipartite correspond un coefficient non nul de H mais, pour ne pas surcharger la représentation graphique, on a omis de reporter les coefficients de H sur les arêtes du graphe. La figure 2 décrit le schéma d'un système de communication utilisant un 15 code LDPC non binaire et comprenant un appareil de réception conforme aux enseignements de l'invention. À l'émission (c'est-à-dire au niveau d'un appareil d'émission des informations à transmettre), en particulier au sein d'un module de codage, un mot d'information binaire (a10 ,al1,...a1 p1, aK0,aK1,...aK p1) est transformé en un 20 mot d'information q -aire (al,...,aK), où ak est le symbole déterminé par les bits Oak,l...ak,p1, puis le mot d'information q -aire est codé en le mot de code q -aire (x1,x2,...,xN)=(al,...,aK).G. Le mot de code q -aire (x1,x2,...,xN) est alors transformé en un mot de code binaire (x10,xl1,...X1p 1'x20,x21,...x2,p-1, XN0,XN1,...XN,p-1). 25 En pratique, on peut naturellement passer directement du mot d'information binaire au mot de code binaire en utilisant une matrice génératrice binaire. Le mot de code binaire généré par le module de codage est transmis au module de modulation, qui le transforme en un signal à émettre dans le canal de 30 communication. L'appareil de réception comprend : - un module de démodulation, qui détermine les rapports de vraisemblance logarithmique binaires (dénommés dans la suite LLR binaires, d'après la 2909499 10 formulation anglo-saxonne "Logarithmic Likelihood Ratio', notés n E {1,...,N}, i E {0,..., p correspondant au signal reçu dans le canal de Pr(xn , = observation du canal ' 5 - un module de correction d'erreurs (dénommé dans la suite décodeur), qui détermine, au moyen du procédé de décodage proposé par l'invention et dont deux exemples sont donnés ci-après, une séquence q -aire de longueur N (égale au mot de code q aire émis lorsque le décodage réussit) sur la base de la séquence des LLR binaires reçus du module de démodulation ; 10 - un module de demapping qui transforme la séquence q-aire en sortie du décodeur en un mot d'information, qui correspond en cas de réussite du décodage au mot d'information émis (al,...,aK). On décrit à présent un premier exemple d'un procédé de décodage proposé par l'invention, mis en oeuvre au sein du module de correction d'erreurs 15 (ou décodeur) et qui permet l'estimation d'un mot reçu (ou séquence q-aire) sur la base des LLR binaires fournis par le module de démodulation. Le décodage proposé est réalisé de manière itérative et avec passage de messages. Ce procédé comprend ainsi : - une étape d'initialisation sur la base des LLR binaires fournis par le module de 20 démodulation ; - des étapes d'itération pendant lesquelles des messages sont échangés entre les noeuds de variable et les noeuds de contrôle connectés dans le graphe bipartite, la première étape d'itération étant appliquée aux valeurs issues de l'étape d'initialisation, tandis que les étapes suivantes sont appliquées aux valeurs 25 résultant de l'étape précédente. L'étape d'initialisation commence par un calcul des informations a priori disponibles aux noeuds de variable n E {1,...N} concernant les symboles a e GF(q), notées 7,,(a), avec selon le procédé de décodage présenté ici : Pr(xn = sn observation du canal yn (a) =ln Pr(xn = a observation du canal 30 où sn dénote le symbole le plus probable pour xn, en tenant compte de l'observation du canal. communication selon la formule : ù Pr(xn , = 0 observation du canal 2909499 En remarquant que : Pr(xn = 0 observation du canal) ~Pr(xn = a observation du canal)) Pr(xn = 0 observation du canal) ~Pr(xn = a observation du canal) on peut calculer comme suit les informations a priori (ci-dessous, ai 5 dénote le ième bit du symbole a), et ce à chaque noeud de variable n et pour tout symbole a de l'alphabet : 11 yn (a) =1n =1n ùln Pr(xn = 0 observation du canal) ~Pr(xn = sn observation du canal)) i ù min ln seGF(q) Pr(xn = 0 observation du canal) Pr(xn = s observation du canal) Yn(a)= yn = min yn (a) aEGF(q) 7n (a) 7n (a) yn Chaque information a priori 7n(a) donne donc une mesure de la fiabilité 10 du symbole a (pour la position n), sous forme d'une distance au symbole le plus probable. L'étape d'initialisation peut alors se poursuivre (et s'achever) par l'initialisation des messages des noeuds de variable vers les noeuds de contrôle (appelés aussi informations extrinsèques). On note am n (a) le message envoyé par 15 le noeud de variable n E {1,...N} au noeud de contrôle m E H(n) concernant le symbole a e GF(q). Selon le procédé de décodage proposé ici, on initialise les informations extrinsèques à partir des informations a priori comme suit : am,n (a) = yn (a) 20 Chaque étape d'itération est réalisée par passage de messages entre les noeuds du graphe bipartite, comme représenté schématiquement en figure 3, et comprend ainsi les sous-étapes suivantes : - calcul des messages des noeuds de contrôle vers les noeuds de variable. On note ,3m,n(a) le message envoyé par le noeud de contrôle m E {1,...M} au noeud de 25 variable n E H(m) concernant le symbole a e GF(q). Ce message est calculé en fonction des messages am,n, (a') reçus par le noeud de contrôle m des noeuds de 2909499 12 variable n' E H(m)ù{n}, concernant tous les symboles a' e GF(q), avec selon la méthode de décodage proposée ici : /" m, n (a) = min max am n, (an,) . a~eGF(q):n'eH(m)-{n} n'eH(m)-{n} O h agi O(h a)=0 ~réeH{m)-{n.} __' - calcul des informations a posteriori. On note n (a) l'information a posteriori 5 calculée au noeud de variable n E {1,...N} concernant le symbole a e GF(q). Cette information est calculée en fonction de l'information a priori yn (a) disponible au noeud de variable n et des messages ,6m n (a) reçus par le noeud de variable n des noeuds de contrôle meH(n), concernant le symbole a E GF(q), ici selon la formule : 10 ?n(a)=7n(a)+ EJ3m,n(a) meH(n) - calcul des messages des noeuds de variable vers les noeuds de contrôle (ou informations extrinsèques). Le (nouveau) message amn (a) est calculé en fonction de l'information a priori 7n (a) disponible au noeud de variable n et des messages /3m n (a) reçus par le noeud de variable n des noeuds de contrôle m' E H(n)û {m}, 15 concernant le symbole a e GF(q), ici selon : am,n(a)= yn(a)+ n(a)ù yn(a)ùNm,n(a)! m'EH (n )-{m am,n anGF(q)am,n(a) amn(a)=amn(a)ùamn Ainsi, pour le symbole le plus probable sn (c'est-àdire tel que am,n = am,n (sn) ), on a toujours à chaque itération amn (sn) = 0 À chaque itération, une décision dure correspondant aux symboles les 20 plus probables peut être calculée à partir des informations a posteriori n (a), n E {1,... N}, a e GF(q) . Comme déjà relevé, les symboles les plus probables sont ceux qui réalisent le minimum des informations a posteriori ?n (a). Si la séquence de ces symboles les plus probables correspond à un mot de code, on considère que le mot de code trouvé est le mot de code émis à l'origine : le décodage s'arrête 25 et on passe le mot de code trouvé au module de demapping. 2909499 13 En revanche, si la séquence de ces symboles les plus probables ne correspond pas à un mot de code, le décodage continue jusqu'à ce qu'un nombre maximum prédéterminé d'itérations soit atteint, dans quel cas on considère que le décodage a échoué. 5 L'intérêt de la formule min û max utilisée dans le calcul des messages des noeuds de contrôle ,6m n (a) peut s'expliquer comme suit. Dans la suite on fixe un noeud de contrôle m , un noeud de variable n connecté au noeud de contrôle m et un symbole a e GF(q) . On note nl,...,nd les autres noeuds de variable (i.e. différents de n) connectés au noeud de contrôle m . 10 Ainsi, nous avons H(m) _ {n, n1,..., nd } avec les notations précédentes. Le message ,6m n (a) est calculé en fonction des messages reçus par le noeud de contrôle m des noeuds de variable nl,...,nd (et ce pour chaque symbole de GF(q)). Si on considère une séquence de symboles (a1,...,ad) comprenant un 15 symbole pour chaque noeud de variable n1,...,nd , on dira dans ce qui suit qu'une telle séquence est admissible si la séquence (a, a1,..., ad) û comprenant un symbole pour chaque noeud de variable n,n1,...,nd û satisfait le contrôle m, c'est-à-dire l'équation de la matrice de parité à la ligne m : / d Ohmnk ak O+(hmna)=0 ~ k=1 / 20 Une séquence admissible est donc susceptible de constituer une partie d'un mot de code. Le calcul de ,6m n (a) prend en compte la totalité des séquences admissibles. Ainsi, pour chaque séquence admissible (al,...,ad), on peut calculer le maximum des messages reçus par le noeud de contrôle m des noeuds de 25 variable n1,...,nd concernant les symboles de cette séquence qui donne une mesure de la fiabilité de cette séquence (une valeur faible correspondant comme vu supra à une information fiable). Précisément, il s'agit de : max (am,n (ak )). k=1,...,d k 2909499 14 Si on note ce maximum par M(al,...,ad), le message J3m,n(a) est alors égal au minimum de tous les maximums calculés pour la totalité des séquences admissibles, c'est-à-dire : fim,n(a)= minM(al,...,ad) admissible min mâX (am,nk (ak ))J admissible 5 Ce minimum vise donc la plus probable des séquences admissibles et donne une mesure de sa fiabilité. On obtient ainsi une information sur la fiabilité du symbole a à la position n qui tient compte des autres informations disponibles au noeud de contrôle m. On propose dans la suite une première méthode pratique pour mettre en 10 oeuvre le calcul des messages ,6m n (a) sans avoir à lister à chaque fois l'ensemble des séquences admissibles. Ce premier mode de réalisation utilise une méthode de type forward û backward et peut être exprimé comme suit. AlgorithmeM] Min û Max Entrée 1,20,221,...,22,pù1, /LNO,/LN1,...,/LN,p 1 ù LLR binaires 15 Sortie : s1, s sN û séquence q ûaire Initialisation • Informations a priori Pour chaque noeud de variable n E {1,2,...,N Yn (a) 2n,i; bit a; =1 Yn = min Yn (a) ; aEGF(q) 7n (a)=7n(a)ù7n ; Va e GF(q) • Initialisation des messages des noeuds de variable 20 Pour chaque noeud de variable n E {1,2,...,N} et chaque noeud de contrôle m E H(n) faire : am,n(a)=Yn(a); Va E GF(q) Itérations • Messages des noeuds de contrôle fa{re : Va e GF(q) 5 2909499 15 Pour chaque noeud de contrôle me {1,2,...,M} (on pose H(m)= {n1,nz,. d étant par conséquent le cardinal de H(m)) faire : // forward FI(a) =amn (hMI,ni Oa); Va e GF(q) F1(a) = min (max(F.-1 (a'), am n (a") ; VaeGF(q),b'j=2,...,dù1 // backward (a) ù am nd (hm' Bi (a) = min (max(B1+1 (a am n (al . a' a" a'0(h ")=a // messages du noeud de contrôle m flm,nl (a) = B2(a); Va e GF(q) fim,nj (a) = min (max(F1 (a , (al)) Va e GF(q), dj = 2,..., d -1 a'oa"=hmä Da , j fim,nd (a) = Fd(a); Va e GF(q) • Informations a posteriori Pour chaque noeud de variable n e {1,2,...,N} faire : a'o(h a")=a Va e GF(q) Va e GF(q),Vj = d -1,...,2 Yn(a)=Yn(a)+ Nm,n(a); mEH(n) Va e GF(q) • Décision dure : choix des symboles les plus probables 10 Pour chaque noeud de variable n e {1,2,...,N} faire : sn = arg mm Yn(a) ; aEGF(q) Si 0 (h n sn )= O, Vm e {1,2,...,M} alors SORTIR ; neH(m) • Messages des noeuds de variable Pour chaque noeud de variable n e {1,2,...,N} et chaque noeud de contrôle 15 me H(n) faire : am,n(a) =Yn(a) ùflm,n(a) ; Va e GF(q) am = min am n (a) ; --' aEGF(q) am,n (a) = am n (a~ù am n ; Va e GF(q) 2909499 16 La méthode forward û backward utilisée dans ce mode de réalisation est illustrée à la figure 4. La notation am"( ) désigne l'ensemble des messages am n (a), a e GF(q) ; de même pour Fi( ), B. ( ) et f3m,n ( ). L'utilisation de quantités (ou valeurs) intermédiaires Fi( ), Bi ( ) permet de n'impliquer que des formules à 5 deux symboles (a' , a") c'est-à-dire de n'avoir à chaque fois à déterminer le minimum des valeurs maximales que sur deux dimensions. Par ailleurs, les formules utilisées ci-dessus pour déterminer les F.(a) et Bi (a) dans le calcul des messages des noeuds de contrôle (formules de type min û max ) peuvent être mises en oeuvre comme suit. 10 Pour simplifier l'explication, on néglige ici la valeur des coefficients de la matrice H (i.e. on considère que h,,,n =1, Vn E H(m)), ce qui permet d'exprimer une telle formule sous la forme : f (a) = a min(q)(max(f'(a'), f "(a"))), a'oa"=a et de procéder à son calcul comme suit : 15 Pour a e GF(q) initialiser : f (a)= +0o ; Pour a' e GF(q) faire : Pour a" e GF(q) faire : a=a'O+a"; f = max( f'(a'), f "(a")); Si f q+1), mais on évite ainsi le tri des valeurs f'(a') et f ''(a"). L'utilisation des ensembles Ak et Ak a un double intérêt : - on diminue le nombre de symboles (donc le nombre de boucles) nécessaires au 2909499 18 calcul des formules de type min ù max - la plupart des calculs de maximum deviennent obsolètes. Ainsi, le maximum max(f'(a'), f"(a" doit être calculé seulement si les symboles a' et a" se trouvent dans des ensembles de même rang, i.e. a' e Ak, et a" e Ak, avec k' = k" . Dans les 5 autres cas, le maximum correspond au symbole de l'ensemble de rang maximal (i.e. max = f'(a') si k' > k" et max = f "(a") si k" > k' ). Pour utiliser cette méthode, on procède comme suit : - on définit une dynamique prédéfinie des informations a priori, de sorte que la partie entière des messages échangés nous fournisse un critère suffisamment fin 10 pour distinguer entre les symboles de l'alphabet (ici le corps de Galois GF(q)). Pour cela on utilise une constante AI (pour "Average a priori information") et dans l'étape d'initialisation, après le calcul des informations a priori (cf. premier mode de réalisation), on calcule : gave = moyenne des {yn (a) n E {1,2,... N}, a e GF(q)}; 15 puis on normalise les informations a priori : yn(a)= AI ù.7,i (a) ; pour n E {1,...,N},a e GF(q) gave - on définit une dynamique maximale des messages des noeuds de contrôle, afin d'avoir un nombre réduit d'ensembles Ak et Ak . Pour cela on utilise une constante COT (pour "Cut Off Threshold') et le calcul de la formule min-max se fait 20 comme décrit ci-dessous : // déterminer les ensembles Ak et Ak pour a e GF(q) faire si (k = Lf'(a')]) k" Si .f '(a') k' si f "(a") nombre d'ensembles de type Ak qui seront utilisés. 25 On peut noter à ce sujet que les valeurs des constantes AI et COT données comme exemple ci-dessus sur GF(8) ont été déterminées au moyen de 5 • Messages des noeuds de variable Pour chaque noeud de variable n E {1,2,...,N} et chaque noeud de contrôle m E H(n) faire : am,n(a)=Yn(a)ùNm,n(a); Va e GF(q) am n = min am n (a) aEGF(q) am,n (a) = am,n (a)ù am n ; 2909499 23 simulations et peuvent être utilisées pour un canal AWGN et pour tout code LDPC sur GF(8) , indépendamment des caractéristiques du code (longueur, irrégularité, rendement) ou de la modulation utilisée. L'utilisation conjointe des ensembles AJAk , F.Ak , BJAk et de la 5 méthode forward û backward est décrite schématiquement à titre purement explicatif à la figure 5, pour une constante COT égale à 3 et un noeud de contrôle m de degré 4(H(m)={n1,n2,n3, ) Dans cet exemple donné sur la base du corps de Galois soit GF(8), on considère que les ensembles FOk, k = 0,1,2, contiennent respectivement 3, 1 et 4 10 symboles et que les ensembles AlAk, k = 0,1,2, contiennent respectivement 4, 3 et 1 symboles. Alors, pour le calcul des valeurs F2(a), a E GF(8), il suffit d'utiliser les valeurs F (a') et am n2 (a") correspondant aux symboles a' E Fok et a" E A2Ak seulement pour k = 0 et k =1 (donc 4 symboles a' et 7 symboles a", soit un total de 11 symboles, ce qui est suffisant puisqu'on doit avoir au minimum q+1=9 15 symboles au total). Une fois les valeurs F2(a), a e GF(8) calculées, les symboles a e GF(8) sont stockés dans les ensembles F2Ak, k =0,1,2 (selon les parties entières des valeurs calculées). Supposons que les ensembles F2Ak, k = 0,1,2, contiennent respectivement 6, 2 et 0 symboles. Alors, pour le calcul des valeurs 20 F3(a), a E GF(8), il suffit d'utiliser seulement les valeurs F2(a') et correspondant aux 6 symboles a' e F2A0 et aux 3 symboles a" e A3A0 (soit un total de 9 symboles). On présente dans la suite le résultat de simulations comparatives des différents algorithmes envisagés ci-dessus et dans l'art antérieur, ici pour des codes 25 LDPC sur GF(8) ou binaires. On dénomme MMA (pour "Min-Max Algorithm") l'algorithme objet de la présente invention, "implémentation standard' son premier mode de réalisation ci-dessus et "implémentation sélective" son second mode de réalisation. Tous les codes utilisés sont des codes LDPC irréguliers. Le graphe 30 bipartite est construit en utilisant l'algorithme "Progressive Edge Growth", décrit dans "Regular and irregular progressive edge û growth Tanner graphs", X. Y. Hu, E. Eleftheriou, D. M. Arnold, IEEE Trans. Inform. Theory, vol. 51, no. 1, pp. 386 û 2909499 24 398, 2005. Dans le cas d'un code LDPC sur GF(8), les arêtes du graphe bipartite correspondent aux places des coefficients non nuls dans la matrice de parité. Ces coefficients ont été choisis de manière aléatoire. On n'indiquera pas dans la suite l'irrégularité des codes utilisés, mais nous indiquerons le degré moyen des noeuds 5 de variable, qui sera noté dnaVe Les irrégularités des codes LDPC binaires ont été optimisées par "évolution de densité" comme décrit dans "Design of capacity approaching irregular low density parity check codes", T. J. Richardson, M. A. Shokrollahi, R. L. Urbanke, IEEE Trans. Inform. Theory, vol. 47, no. 2, pp. 619 û 637, 2001. Néanmoins, 10 l'irrégularité correspondant à un bon code binaire ne convient pas pour obtenir un bon code q ûaire (et réciproquement). Généralement, plus le cardinal du corps de Galois augmente, plus les codes utilisés doivent être "creux" (moins d'arêtes dans le graphe bipartite), d'où la différence entre les degrés moyens des noeuds de variable pour les codes binaires et pour les codes sur GF(8) utilisés ci-dessous. 15 Les simulations ont été réalisées pour un canal AWGN, en utilisant une modulation QPSK. Par ailleurs les comparaisons de performances sont faites pour un taux d'erreur binaire (BER) de 10-5. Le nombre maximum d'itérations est fixé à 200. La figure 6 représente des performances des décodeurs MMA et MSA 20 avec un code LDPC sur GF(8), et du décodeur MSA avec un code LDPC binaire pour des codes ayant les caractéristiques suivantes : - 1008 bits (soit 336 symboles) d'information, 2016 bits (soit 672 symboles) codés (soit un rendement de 1/2) d'une part ; - 4032 bits (soit 1344 symboles) d'information, 8064 bits (soit 2688 25 symboles) codés (soit un rendement de 1/2) d'autre part ; pour les codes binaires : dnaVe =3.27 ; - pour les codes sur G F(8) : dn e = 2.5. On remarque que : - pour les codes LDPC sur GF(8), le décodeur MMA devance le 30 décodeur MSA de 0.15 à 0.22 dB ; - le code sur GF(8) (décodage MMA) devance le code binaire de 0.33 dB. 2909499 25 On peut également noter que, suite aux simulations réalisées (non représentées), on a constaté que pour les codes LDPC sur GF(8), le décodeur MMA est à seulement 0.04 dB du décodeur SPA. On compare par ailleurs en référence à la figure 7 les performances du 5 décodeur MMA, obtenues en utilisant les implémentations "standard' et "sélective". On utilise des codes LDPC sur GF(8) de longueur binaire égale à 2016 bits et de rendements 1/3, 1 /2 et 4/5, dont les degrés moyens des noeuds de variables sont respectivement 2.4, 2.5 et 2.8. Par ailleurs, les constantes AI et COT utilisées pour l'implémentation sélective ont été fixées à : 10 AI = 4.647, COT =10. On remarque au vu de la figure 7 que les performances obtenues sont (quasiment) identiques, autrement dit qu'il n'y a pas de perte substantielle de performance de l'implémentation sélective par rapport à l'implémentation standard. La figure 8 permet la comparaison de la complexité des décodages 15 MSA et MMA (implémentations standard et sélective) sur GF(8), et du décodage MSA sur GF(2) (code binaire). Le nombre d'opérations représente le nombre moyen d'opérations en milliers par bit codé (toutes itérations cumulées), effectuées par les deux décodeurs. Ce nombre est dépendant du rapport signal-bruit (SNR) car le nombre 20 moyen d'itérations effectuées par les deux décodeurs décroît lorsque le rapport signal-bruit Eb/No augmente. Pour chaque rendement (1/3, 1 /2 et 4/5) nous avons enregistré le nombre moyen d'opérations par bit codé pour les valeurs de Eb/No, correspondant à la région de chute du BER. 25 Sur GF(8), le décodeur MMA û standard est moins complexe que le décodeur MSA. Ceci est dû au fait que le décodeur MMA converge plus rapidement que le MSA ; autrement dit, le nombre d'itérations effectuées par le MMA est inférieur au nombre d'itérations effectuées par le MSA (les deux décodeurs effectuant quasiment le même nombre d'opérations par itération). 30 Sur GF(8), le décodeur MMA û sélectif est 2 à 3 fois moins complexe que le décodeur MMA û standard. Le nombre d'itérations effectuées par les deux décodeurs est le même mais, pour chaque itération, le MMA û sélectif effectue moins d'opérations que le MMA û standard. Finalement, on observe que le décodeur MMA - sélectif sur GF(8) est 35 seulement 1 à 2 fois plus complexe que le décodeur MSA binaire. 2909499 26 Les modes de réalisation présentés ci-dessus ne sont que des exemples possibles de mise en oeuvre de l'invention, qui ne s'y limite pas. 2909499 27 ANNEXE On considère deux fonctions f' et f" définies sur GF(q) et à valeurs réelles, et f la fonction définie par la formule min-max .f (a) = a min(q)(max(f'(a'), f "(aä))) a'oa"=a 5 Soient A' et A" des sous-ensembles de GF(q) tels que l'ensemble des valeurs {f'(a') a'eA'}u{f"(a") a" e contienne les q+ 1 valeurs les plus faibles parmi toutes les valeurs de f' et f'' , i.e. parmi {f'(a') a' e GF(q)}U {f "(a") a" e GF(q)}. On va montrer que l'on peut alors calculer f(a) par la formule f (a) = min (max(f'(a'), f "(a"))) a EA,a EA a'O+a"=a qui implique un nombre réduit de symboles a' et a" . Dans une première étape, on va montrer que tout symbole a e GF(q) 15 peut s'écrire comme la somme de deux symboles : a=+ 8" avec 8'E A' et b'" A". Pour cela on définit deux fonctions I,Ta : GF(q)ù>GF(q) par I(x) = x (fonction identité) et l a (x) = a O+ x (translation par a). En remarquant que les deux fonctions sont bijectives, on obtient 20 card(I (A'))+ card(T (A")) = card(A')+ card(A") q + 1 > card(GF (q)) Il s'ensuit qu'il existe 8' E A' et 8" E A" tels que : I(8')=Ta(8"), ce qui équivaut à 8'=a08", d'où a=O8". Dans une seconde étape de la démonstration, on note s', s" E GF(q) les deux symboles tels que s' s" = a , réalisant le minimum dans la définition de f(a), 25 autrement dit, tels que max(f'(s'), f "(s")) = a min(q)(max(f'(a'), f "(a"))) _ .f (a) a'oa"=a Soient 8' E A' et 8" E A" tels que a = 8' + 8" (d'après la première étape). Rappelons que les symboles de A' et A" correspondent aux q +1 valeurs les plus faibles parmi l'ensemble des valeurs des fonctions f' et f'' . 10 2909499 28 Alors (en raisonnant par l'absurde) si l'on avait s' E A' ou s" e A", l'une au moins des valeurs f'(s'), f"(s") serait en dehors des q+1 valeurs les plus faibles et on obtiendrait donc max(f'(s , f "(g" REVENDICATIONS 1. Procédé de décodage itératif d'un mot reçu, représenté par des valeurs d'un signal, selon un code à matrice de contrôle de parité, du type à passage de messages entre des noeuds de variable et des noeuds de contrôle d'un graphe bipartite associé à ladite matrice, caractérisé en ce qu'il comprend l'une au moins des étapes suivantes : - initialisation d'au moins un message d'un noeud de variable, en fonction desdites valeurs, par une information représentative du rapport entre la probabilité d'avoir le symbole le plus probable à la position correspondant au noeud de variable et la probabilité d'avoir le symbole courant à ladite position ; -détermination d'au moins un message, relatif à un symbole déterminé, d'un noeud de contrôle vers un noeud de variable déterminé, comme la valeur minimale prise, parmi les séquences de symboles vérifiant l'équation au noeud de contrôle en utilisant ledit symbole déterminé au noeud de variable déterminé, par la valeur maximale des messages reçus au noeud de contrôle depuis des noeuds de variable autres que le noeud de variable déterminé et relatifs chacun au symbole associé à cet autre noeud de variable dans la séquence vérifiant l'équation ; - détermination des messages d'un noeud de variable vers un noeud de contrôle relatifs à l'ensemble des symboles de telle sorte que la valeur minimale desdits messages soit nulle. 2. Procédé de décodage selon la revendication 1, caractérisé en ce que l'étape d'initialisation du message d'un noeud de variable comprend les étapes 25 suivantes : - pour chaque symbole de l'alphabet, détermination de la somme des rapports de vraisemblance logarithmique binaires relatifs aux bits non-nuls du symbole et à la position correspondant au noeud de variable et; - détermination du minimum des sommes déterminées ; 30 -soustraction à chaque somme déterminée du minimum déterminé. 3. Procédé de décodage selon la revendication 1 ou 2, caractérisé par une étape de détermination d'une information a posteriori relative à un noeud de variable et à un symbole, comme la somme du message initial relatif au symbole 2909499 30 audit noeud de variable et de l'ensemble des messages reçus au noeud de variable et relatifs au symbole. 4. Procédé de décodage selon la revendication 3, caractérisé par les 5 étapes suivantes : - pour chaque noeud de variable, détermination du symbole pour lequel l'information a posteriori est minimale ; - si la séquence des symboles ainsi déterminés pour l'ensemble des noeuds de variable est un mot de code, utilisation dudit mot de code comme mot 10 estimé. 5. Procédé de décodage selon l'une des revendications 1 à 4, caractérisé en ce que l'étape de détermination des messages d'un noeud de variable vers un noeud de contrôle donné comprend les étapes suivantes : 15 - pour chaque symbole, détermination de la somme du message initial relatif au symbole audit noeud de variable et de l'ensemble des messages reçus au noeud de variable en provenance d'un noeud de contrôle autre que le noeud de contrôle donné et relatifs au symbole ; - détermination du minimum parmi les sommes déterminées ; 20 - pour chaque symbole, soustraction du minimum déterminé à la somme déterminée relative au symbole. 6. Procédé de décodage selon l'une des revendications 1 à 5, caractérisé en ce que l'étape de détermination d'au moins un message d'un noeud de contrôle vers un noeud de variable déterminé comprend les étapes suivantes : - détermination, pour chaque symbole, d'une valeur intermédiaire égale à la valeur minimale prise par la valeur maximale de messages reçus au noeud de contrôle depuis une partie seulement des noeuds de variable associés au noeud de contrôle ; - détermination de la valeur minimale prise par la valeur maximale parmi des valeurs intermédiaires et des messages reçus d'un noeud de variable associé au noeud de contrôle et n'appartenant pas à ladite partie. 7. Procédé de décodage selon l'une des revendications 1 à 6, 35 caractérisé en ce qu'il comprend une étape de détermination du minimum, parmi 2909499 31 des couples de deux symboles appartenant à l'alphabet du code, du maximum de deux valeurs associées respectivement aux deux symboles de chaque couple, comprenant les sous-étapes suivantes : -détermination d'ensembles regroupant chacun les symboles auxquels 5 sont associées des valeurs comprises dans un intervalle déterminé ; - sélection d'ensembles, parmi les ensembles déterminés, de telle sorte que la réunion des ensembles sélectionnés contienne au moins un nombre prédéterminé de symboles ; - utilisation, comme maximum parmi deux valeurs, de la valeur associée 10 au symbole compris dans l'ensemble correspondant à l'intervalle supérieur lorsque les valeurs sont associées à des symboles compris dans des ensembles sélectionnés correspondant à des intervalles distincts ; - détermination par comparaison du maximum parmi deux valeurs lorsque les valeurs sont associées à des symboles compris dans des ensembles 15 sélectionnés correspondant à un même intervalle. 8. Procédé de décodage selon l'une des revendications 1 à 7, caractérisé en ce que le code est un code à alphabet non-binaire. 20 9. Dispositif de décodage itératif d'un mot reçu, représenté par des valeurs d'un signal, selon un code à matrice de contrôle de parité, du type à passage de messages entre des noeuds de variable et des noeuds de contrôle d'un graphe bipartite associé à ladite matrice, caractérisé en ce qu'il comprend : - des moyens d'initialisation d'au moins un message d'un noeud de 25 variable, en fonction desdites valeurs, par une information représentative du rapport entre la probabilité d'avoir le symbole le plus probable à la position correspondant au noeud de variable et la probabilité d'avoir le symbole courant à ladite position ; et/ou - des moyens de détermination d'au moins un message, relatif à un 30 symbole déterminé, d'un noeud de contrôle vers un noeud de variable déterminé, comme la valeur minimale prise, parmi les séquences de symboles vérifiant l'équation au noeud de contrôle en utilisant ledit symbole déterminé au noeud de variable déterminé, par la valeur maximale des messages reçus au noeud de contrôle depuis des noeuds de variable autres que le noeud de variable déterminé 2909499 32 et relatifs chacun au symbole associé à cet autre noeud de variable dans la séquence vérifiant l'équation ; et/ou des moyens de détermination des messages d'un noeud de variable vers un noeud de contrôle relatifs à l'ensemble des symboles de telle sorte que la 5 valeur minimale desdits messages soit nulle. 10. Dispositif de décodage selon la revendication 9, caractérisé en ce que les moyens d'initialisation du message d'un noeud de variable comprennent : - des moyens pour déterminer, pour chaque symbole de l'alphabet, la 10 somme des rapports de vraisemblance logarithmique binaires relatifs aux bits non-nuls du symbole et à la position correspondant au noeud de variable et; - des moyens pour déterminer le minimum des sommes déterminées ; - des moyens pour soustraire le minimum déterminé de chaque somme déterminée. 15 11. Dispositif de décodage selon la revendication 9 ou 10, caractérisé par des moyens de détermination d'une information a posteriori relative à un noeud de variable et à un symbole, comme la somme du message initial relatif au symbole audit noeud de variable et de l'ensemble des messages reçus au noeud de variable 20 et relatifs au symbole. 12. Dispositif de décodage selon la revendication 11, caractérisé par : -des moyens pour déterminer, pour chaque noeud de variable, le symbole pour lequel l'information a posteriori est minimale ; 25 - des moyens pour utiliser la séquence des symboles ainsi déterminés pour l'ensemble des noeuds de variable comme mot estimé si ladite séquence est un mot de code. 13. Dispositif de décodage selon l'une des revendications 9 à 12, 30 caractérisé en ce que les moyens de détermination des messages d'un noeud de variable vers un noeud de contrôle donné comprennent : - des moyens pour déterminer, pour chaque symbole, la somme du message initial relatif au symbole audit noeud de variable et de l'ensemble des messages reçus au noeud de variable en provenance d'un noeud de contrôle autre que le noeud de contrôle donné et relatifs au symbole ; 2909499 33 - des moyens pour déterminer le minimum parmi les sommes déterminées ; - des moyens pour soustraire, pour chaque symbole, le minimum déterminé à la somme déterminée relative au symbole. 5 14. Dispositif de décodage selon l'une des revendications 9 à 13, caractérisé en ce que les moyens de détermination d'au moins un message d'un noeud de contrôle vers un noeud de variable déterminé comprennent : -des moyens pour déterminer, pour chaque symbole, une valeur 10 intermédiaire égale à la valeur minimale prise par la valeur maximale de messages reçus au noeud de contrôle depuis une partie seulement des noeuds de variable associés au noeud de contrôle ; - des moyens pour déterminer la valeur minimale prise par la valeur maximale parmi des valeurs intermédiaires et des messages reçus d'un noeud de 15 variable associé au noeud de contrôle et n'appartenant pas à ladite partie. 15. Dispositif de décodage selon l'une des revendications 9 à 14, caractérisé en ce que des moyens pour déterminer le minimum, parmi des couples de deux symboles appartenant à l'alphabet du code, du maximum de deux valeurs 20 associées respectivement aux deux symboles de chaque couple, comprennent : - des moyens de détermination d'ensembles regroupant chacun les symboles auxquels sont associées des valeurs comprises dans un intervalle déterminé ; - des moyens de sélection d'ensembles, parmi les ensembles 25 déterminés, de telle sorte que la réunion des ensembles sélectionnés contienne au moins un nombre prédéterminé de symboles ; - des moyens utilisant, comme maximum parmi deux valeurs, la valeur associée au symbole compris dans l'ensemble correspondant à l'intervalle supérieur lorsque les valeurs sont associées à des symboles compris dans des 30 ensembles sélectionnés correspondant à des intervalles distincts ; - des moyens pour déterminer par comparaison le maximum parmi deux valeurs lorsque les valeurs sont associées à des symboles compris dans des ensembles sélectionnés correspondant à un même intervalle. 2909499 34 16. Dispositif de décodage selon l'une des revendications 9 à 15, caractérisé en ce que le code est un code à alphabet non-binaire. 17. Appareil de communication comprenant un dispositif selon l'une des 5 revendications 9 à 16.