FR 2871311 A1 20051209 FR 0405956 A 20040602 2871311 1 La présente invention concerne les systèmes de communication ou d'enregistrement de données dans lesquels, afin d'améliorer la fidélité de la transmission ou du stockage, on soumet les données à un codage de canal. Elle concerne plus particulièrement un procédé de décodage ainsi que les dispositifs et appareils destinés à mettre en oeuvre ce procédé. On rappelle que le codage de canal dit en blocs consiste, quand on forme les mots de code envoyés à un récepteur ou enregistrés sur un support de données, à introduire une certaine redondance dans les données. Plus précisément, on transmet, au moyen de chaque mot de code, l'information initialement contenue dans un nombre prédéterminé k de symboles prélevés dans un alphabet de taille finie q; on calcule à partir de ces k symboles d'information un nombre n > k de symboles appartenant à cet alphabet, qui constituent les composantes des mots de code: v=(vl,v2,...,vn). L'ensemble des mots de code obtenus quand chaque symbole d'information prend une valeur quelconque dans l'alphabet, constitue une sorte de dictionnaire appelé 20 code de dimension k et de longueur n. Lorsque la taille q de l'alphabet est une puissance d'un nombre premier, on peut donner à cet alphabet une structure de corps ( field en anglais), dit corps de Galois ( Galois field en anglais), noté Fq, dont les éléments non-nuls peuvent être commodément identifiés comme étant chacun égal à y= pour une valeur correspondante de i, où i = 1,..., q -1, et où y est une racine (q -1)ème primitive de l'unité dans Fq. En particulier, certains codes, appelés codes linéaires , sont tels que toute combinaison linéaire de mots de code (avec les coefficients pris dans l'alphabet) est encore un mot de code. Ces codes peuvent, de façon commode, être associés à une matrice H de dimension (n k)x n, dite matrice de parité : un mot v de longueur n donné est un mot de code si, et seulement si, il vérifie la relation: H É vT = 0 (où l'exposant T indique la transposition) ; on dit alors que le code est orthogonal à cette matrice H. Au niveau du récepteur, le procédé de décodage associé exploite alors judicieusement cette redondance pour détecter d'éventuelles erreurs de transmission et si possible les corriger. Il y a erreur de transmission si la différence e entre un mot reçu r et le mot de code v correspondant envoyé par l'émetteur, est non-nulle. Plus précisément, le décodage se fait en deux étapes principales. La première étape consiste à associer au mot reçu un mot de code associé V'. Pour ce faire, le décodeur calcule d'abord le vecteur de syndromes d'erreurs s = H É rT = H É eT de longueur (n k) (dans le cadre de la présente invention, on ne fait pas de différence entre le terme mot et le terme vecteur ). Si les syndromes sont tous nuls, on supposera qu'il n'y a pas eu d'erreur de transmission, et le mot de code associé sera alors simplement pris égal au mot reçu. Si ce n'est pas le cas, on en déduit que le mot reçu est erroné, et l'on procède alors à des calculs destinés à estimer la valeur de l'erreur e; autrement dit, ces calculs fournissent une valeur estimée ê de l'erreur telle que le mot (r ê) soit un mot de code, qui constituera alors le mot de code associé V. Habituellement, cette première étape du décodage est décomposée en deux sous-étapes distinctes: une première sous-étape, dite de localisation d'erreurs , au cours de laquelle on détermine quelles sont les composantes du mot reçu dont la valeur est erronée, et une seconde sous-étape, dite de correction d'erreurs , au cours de laquelle on calcule une estimation de l'erreur de transmission affectant ces composantes. La seconde étape consiste simplement à inverser le procédé de codage. Si le mot reçu était correct ou si l'on est parvenu, lors de la première étape, à y corriger toutes les erreurs de transmission, cette seconde étape permet évidemment de retrouver les k symboles d'information initiaux (avant codage) correspondant à ce mot reçu. On notera que dans le cadre de la présente invention, on parlera souvent, pour faire court, de décodage pour désigner uniquement la 2871311 3 première de ces étapes, étant entendu que l'homme du métier est capable sans difficulté de mettre en oeuvre la seconde étape. On assigne habituellement comme but au décodage d'associer au mot reçu le mot de code situé à la distance de Hamming la plus courte de ce mot reçu, la distance de Hamming étant, par définition, le nombre d'emplacements où deux mots de même longueur possèdent un symbole différent. On appelle distance minimale d d'un code la plus petite distance de Hamming entre deux mots différents de ce code. C'est un paramètre important du code. Plus précisément, il est en principe possible de trouver la position des erreurs éventuelles dans un mot reçu, et de fournir le symbole de remplacement correct (c'est-à-dire, identique à celui envoyé par l'émetteur) pour chacune de ces positions, chaque fois que le nombre de positions erronées est au plus égal à INT[(d -1)/2] (où INT désigne la partie entière) pour un code de distance minimale d (pour certaines configurations d'erreurs, on peut même parfois faire mieux). Dans tous les cas toutefois, il ne s'agit que d'une possibilité de principe, car il est souvent difficile de mettre au point un algorithme de décodage atteignant cette performance. On notera également que, lorsque l'algorithme choisi parvient à proposer une correction pour le mot reçu, cette correction est d'autant plus fiable (du moins, pour la plupart des canaux de transmission) qu'elle concerne un plus petit nombre de positions. De manière générale, quand un algorithme doit corriger un mot reçu, le fait de connaître à l'avance quelles composantes de ce mot contiennent des symboles douteux facilite considérablement la tâche de l'algorithme; on dit alors que ces symboles douteux sont effacés . Plus précisément, un algorithme de correction d'erreurs (pourvu qu'il soit apte à prendre en compte cette information) possède, si on ne lui soumet que des mots dont toutes les erreurs ont été localisées, une limite de correction fiable deux fois supérieure à celle qu'il possède si on ne lui soumet que des mots contenant des erreurs de position inconnue. Naturellement, la correction d'un mot reçu au moyen d'un tel algorithme ne peut se faire de façon fiable que si l'on dispose d'un nombre suffisant de symboles corrects dans les positions non effacées du mot reçu. 2871311 4 Pour évaluer la capacité de correction fiable d'un tel algorithme, la quantité naturelle à prendre en considération est donc le nombre (20+r), où z désigne le nombre d'effacements dans le mot à corriger, et 8 le nombre de symboles dans ce mot qui ont été modifiés par l'algorithme (et dont on ne savait pas à l'avance qu'ils devaient être corrigés, c'est-à-dire qui ne correspondaient pas à des composantes effacées ). On notera que ce nombre 8 ne coïncide pas nécessairement avec le nombre réel de symboles erronés, c'est-à-dire, différents de ceux transmis, car il peut se produire, notamment lorsque le mot reçu souffre d'un nombre d'erreurs excessif , que l'algorithme propose un mot corrigé qui, bien qu'appartenant au code, est néanmoins différent du mot transmis. En ce qui concerne les algorithmes les plus performants, leur capacité à pouvoir proposer une correction d'un mot reçu de manière fiable dans tous les cas (c'est-à-dire, quel que soit ce mot reçu), est représentée par la formule: 28+z Parmi les codes connus, on peut citer les codes dits de Reed- Solomon , qui sont réputés pour leur efficacité. Ce sont des codes linéaires dont la distance minimale d est égale à (n-k+1). La matrice de parité H du code de Reed-Solomon de dimension k et de longueur n (où n est inférieur ou égal à (q -1)) est une matrice à (n - k) lignes et à n colonnes, qui a la structure d'une matrice de Vandermonde. Cette matrice de parité H peut être définie par exemple en prenant Hu= a(' 1) (1 5 i n - k, 1 j n), où a est une racine n eme de l'unité dans Fq; on peut alors étiqueter la composante vi, où 1 j s n, de tout mot de code v = (v1,v2, ...,vn) au moyen de l'élément a(i 1) de Fq; c'est pourquoi un ensemble tel que (1,a, a2,...,an-1) est appelé ensemble de localisation ( locating set en anglais) du code de Reed-Solomon. Comme mentionné ci-dessus, l'étape d'un procédé de décodage au cours de laquelle on calcule un mot de code associé au mot reçu se décompose habituellement en deux sous-étapes: la première sous-étape, dite 2871311 5 de localisation d'erreurs , consiste à identifier dans le mot reçu les éventuelles composantes dont la valeur est erronée, et la seconde sous-étape consiste à calculer ensuite la valeur corrigée de ces composantes erronées. Pour le décodage des codes de Reed-Solomon, on utilise habituellement, en ce qui concerne la localisation d'erreurs, l'algorithme dit de Berlekamp-Massey ; cet algorithme fournit, à partir du vecteur de syndromes d'erreurs s = H. rT = H. eT, un polynôme de localisation d'erreurs dont les racines sont les inverses dans Fq des éléments de l'ensemble de localisation qui étiquettent les composantes erronées du mot reçu r. En ce qui concerne la correction d'erreurs, on utilise habituellement l'algorithme dit de Forney , qui fait appel à ce polynôme de localisation d'erreurs. Pour plus de détails sur les codes de Reed- Solomon, et en particulier les algorithmes de Berlekamp-Massey et de Forney, on pourra se référer par exemple à l'ouvrage de R.E. Blahut intitulé Theory and practice of error- control codes , Addison-Wesley, Reading, Mass.,1983. Dans les supports d'information modernes, par exemple dans les disques durs d'ordinateurs, les CD ( compact discs ) ou encore les DVD ( digital video discs ), on cherche à accroître la densité d'information. Quand un tel support est affecté par un défaut physique tel qu'une éraflure, un nombre important de symboles d'information peuvent être rendus illisibles. On peut toutefois remédier à ce problème en utilisant un code de très grande longueur. Or, comme indiqué ci-dessus, la longueur n des mots dans les codes de Reed-Solomon est inférieure à la taille q de l'alphabet des symboles. Par conséquent, si l'on souhaite disposer d'un code de Reed-Solomon ayant des 25 mots de code de grande longueur, on doit envisager de grandes valeurs de q, ce qui conduit à des mises en oeuvre coûteuses au niveau des calculs et de la mémorisation. De plus, de grandes valeurs de q sont parfois inadaptées à l'application technique envisagée. C'est pourquoi l'on a cherché à construire des codes offrant de manière naturelle une plus grande longueur de mots que les codes de Reed-Solomon sans nécessiter pour autant un alphabet de plus grande taille. 2871311 6 On a notamment proposé récemment des codes dits codes de géométrie algébrique ou codes de Goppa géométriques (voir par exemple l'article de Tom Hoholdt et Ruud Pellikaan intitulé On the Decoding of Algebraic-Geometric Codes , IEEE Trans. Inform. Theory, vol. 41 n 6, pages 1589 à 1614, novembre 1995). Ces codes sont construits à partir d'un ensemble de n couples (x, y) distincts de symboles appartenant à un corps de Galois Fq choisi; cet ensemble de couples constitue l'ensemble de localisation du code de géométrie algébrique. De manière générale, il existe une équation algébrique à deux inconnues X et Y telle que les couples (x, y) de cet ensemble de localisation soient tous des solutions de cette équation algébrique. Les valeurs de x et de y de ces couples peuvent être considérées comme les coordonnées de points PP (où 13 =1, .,n) formant une courbe algébrique ...DTD: Un paramètre important d'une telle courbe est son genre g. Dans le cas particulier où la courbe est une simple droite (le genre g est alors nul), le code de géométrie algébrique se réduit à un code de Reed-Solomon. Pour q et g donnés, certaines courbes algébriques, dites maximales , permettent d'atteindre une longueur égale à (q+2gj), qui peut être très élevée; par exemple, avec une taille d'alphabet égale à 256 et un genre égal à 120, on obtient des mots de code de longueur 4096. Parmi tous les codes de géométrie algébrique, on considère habituellement ceux qui sont définis sur une courbe algébrique représentée par une équation f(X,Y) = 0, avec: f (X, Y) = x b + cYa + l eu r/ X, où c 0 et les clé sont des éléments de Fq, a et b sont des entiers strictement positifs et premiers entre eux, et où la somme ne porte que sur les entiers i et j qui satisfont ai + bj _ 0, il existe au moins 2871311 7 un monôme dont le poids est p, on dit que p est un poids réalisable . Soient Pl Comme tous les codes, les codes de géométrie algébrique peuvent être modifiés et/ou raccourcis . On dit qu'un code donné Cmod est une version modifiée du code C s'il existe une matrice diagonale carrée non-singulière A telle que chaque mot de Cmod est égal à v. A avec v dans C. On dit qu'un code donné est une version raccourcie du code C s'il ne comprend que les mots de C dont, pour un nombre R de positions prédéterminées, les composantes sont toutes nulles: ces positions étant connues du récepteur, on peut se dispenser de les transmettre, de sorte que le code raccourci est de longueur (n - R). En particulier, il est courant de raccourcir un code de géométrie algébrique en supprimant de l'ensemble de localisation, le cas échéant, un point, ou plusieurs points, dont la coordonnée x est nulle. Les codes de géométrie algébrique sont avantageux quant à leur distance minimale d, qui est au moins égale à (n - k + 1- g), et, comme on l'a dit, quant à la longueur des mots de code, mais ils présentent l'inconvénient de requérir des algorithmes de décodage assez complexes, et donc assez coûteux en termes d'équipements (logiciel et/ou matériel) et de temps de traitement. Cette complexité est en fait plus ou moins grande selon l'algorithme considéré, une plus grande complexité étant en principe le prix à payer pour accroître la capacité de correction d'erreurs du décodeur (voir par exemple l'article de Tom Hoholdt et Ruud Pellikaan cité ci-dessus). De manière générale, plus la courbe algébrique utilisée est de genre g élevé et plus les mots de code sont de grande longueur, mais aussi plus le décodage est complexe. 2871311 8 On connaît divers algorithmes de localisation d'erreurs pour codes de géométrie algébrique (définis sur une courbe de genre non-nul). Un tel algorithme, appelé algorithme de base , a été proposé par A.N. Skorobogatov et S.G. Viâdut dans l'article intitulé On the Decoding of Algebraic-Geometric Codes , IEEE Trans. Inform. Theory, vol. 36 n 5, pages 1051 à 1060, novembre 1990). Skorobogatov et Vlâdut ont également proposé, dans le même article cité ci-dessus, une version modifiée de l'algorithme de base , qui permet généralement de corriger un plus grand nombre d'erreurs que l'algorithme de base . On connaît également des algorithmes qui fonctionnent suivant un principe itératif: chaque nouvelle itération d'un tel algorithme fait appel à une composante supplémentaire du vecteur de syndromes d'erreurs s = H H. rT. Un exemple d'un tel algorithme de décodage itératif est divulgué dans l'article de M. Sakata et al. intitulé Generalized Berlekamp-Massey Decoding of Algebraic-Geometric Codes up to Half the Feng-Rao Bound (IEEE Trans. Inform. Theory, vol. 41, pages 1762 à 1768, novembre 1995). Cet algorithme peut être vu comme une généralisation de l'algorithme de Berlekamp-Massey aux codes de géométrie algébrique définis sur une courbe de genre non-nul. Les algorithmes de localisation d'erreurs mentionnés ci-dessus fournissent des polynômes de localisation d'erreurs A(x,y) dont les zéros comprennent tous les couples (x,y) étiquetant les composantes du mot reçu ayant souffert d'une erreur de transmission. L'ensemble des polynômes de localisation d'erreurs forme un idéal, dans lequel on peut définir une base 25 appelée base de Grbbner . Le calcul des erreurs pour les codes de géométrie algébrique est a priori plus compliqué que pour les codes de Reed-Solomon. En effet: - la sous-étape de localisation d'erreurs ne produit pas seulement un polynôme de localisation d'erreurs, mais plusieurs polynômes (appartenant à 30 l'idéal des polynômes de localisation d'erreurs) ; et - ces polynômes de localisation d'erreurs sont des polynômes à deux variables au lieu d'une. 2871311 9 On connaît divers algorithmes de calcul des erreurs pour codes de géométrie algébrique. L'article Algebraic Geometry Codes , de Tom Hvholdt, Jacobus Van Lint et Ruud Pelikaan (Chapitre 10 de Handbook of Coding Theory , North Holland, 1998) construit le produit de certaines puissances des polynômes de la base de Grôbner. Il effectue ensuite une combinaison linéaire de ces produits, affectés de coefficients adéquats. Il démontre enfin que la valeur du polynôme ainsi obtenu, prise au point (x,y) de l'ensemble de localisation est, au signe près, la valeur de l'erreur pour la composante du mot reçu étiquetée parce point (x, y). L'article A Generalized Forney Formula for Algebraic Geometric Codes , de Douglas A. Leonard (IEEE Trans. lnform. Theory, vol. 42, n 4, pages 1263 à 1268, juillet 1996), et l'article A Key Equation and the Computation of Error Values for Codes from Order Domains de John B. Little (publié sur Internet le 7 avril 2003) calculent les valeurs des erreurs en évaluant un polynôme à deux variables en les zéros communs des polynômes de localisation d'erreurs. Ces algorithmes sont complexes à mettre en oeuvre, notamment du fait qu'ils comprennent la multiplication de polynômes à deux variables, en plus de multiplications formelles dans Fq. La demande de brevet européen n 03293336.8 au nom de CANON décrit un procédé de décodage applicable notamment aux codes, décrits ci-dessus, de géométrie algébrique à un point définis sur une courbe algébrique de type C(a,b) . Ce procédé de décodage effectue à la fois la localisation et la correction d'erreurs. Nous allons à présent le décrire de manière assez détaillée. Ce procédé de décodage repose sur la subdivision de l'ensemble de localisation du code en sous-ensembles appelés agrégats . Par définition, un agrégat regroupe les couples (x,y) de l'ensemble de localisation ayant une valeur commune de x (on aurait pu tout aussi bien définir les agrégats par une valeur commune de y en échangeant les rôles des inconnues X et Y de l'équation représentant la courbe algébrique sur laquelle est définie le code). 2871311 10 Lorsque l'on souhaite faire apparaître cette structure en agrégats, les couples de l'ensemble de localisation seront notés (x, y p (x)) , où p =1,..., 2(x) et 2(x) est le cardinal de l'agrégat considéré, et les composantes de tout mot c de longueur n seront notées c(x, y p (x)) ; on dira que les composantes de c qui, étiquetées de la sorte, possèdent la même valeur de x forment un agrégat de composantes du mot c. Soit m le poids maximal des monômes définissant les lignes de la matrice de parité (voir ci-dessus). Selon la demande n 03293336.8, on classe ces monômes dans des ensembles de monômes M. ={Y'X110 On vérifie facilement que la condition d'appartenance au code de géométrie algébrique (à savoir H. vT = 0) est équivalente à l'ensemble de 25 (jmax +1) équations: T Ht(i) É =0, où la fonction t(j) est donnée ci-dessus et, par définition, 1 1 1 Ht = t-1 t-1 t-1 xl x2 - Or cette matrice Ht est une matrice de Vandermonde définie sur Fq; par conséquent, si l'on considère, pour chaque valeur de j, que Ht(J) est une matrice de parité définissant un ensemble de mots de code vj, cet ensemble constitue un code de Reed-Solomon. On dira alors que l'on a décomposé le code de géométrie algébrique considéré en un certain nombre de codes de Reed-Solomon composants . L'intérêt de cette formulation est que l'on dispose, pour les codes de Reed-Solomon, d'algorithmes de décodage aussi simples que performants. Par 10 exemple, un mot r ayant été reçu, on calcule d'abord, pour j = 0,.. ., Jmax, les mots reçus agrégés r _j = [rj (x1),..., r j (x,u) ] , dans lesquels, pour x= les symboles reçus agrégés rj (x) sont donnés par 2(x) r1 (x) = E [y p (x)li r(x, y p (x)) p=1 Puis on utilise l'algorithme de Berlekamp-Massey pour la localisation des symboles erronés de chaque mot r j, suivi de l'algorithme de Forney pour la correction de ces symboles erronés, d'après le vecteur de syndromes d'erreurs s j = Ht(i) .r jT. Enfin, on calcule les symboles v(x, yp (x)) du mot de code 20 associé à partir des symboles corrigés P1(x) en utilisant le système d'équations 2(x) Pi (x) = [y p (x)]' v(x, y p (x)) p=1 où j prend un nombre de valeurs différentes (le nombre d'équations) au moins égal à 2(x) (le nombre d'inconnues). Ce procédé de décodage requiert donc (1) (2) que (jm +1) soit au moins égal à 2max, où lmax est le plus grand parmi les cardinaux d'agrégat 2(x) . Ainsi, par rapport aux algorithmes de correction d'erreurs mentionnés précédemment, le gain en complexité résultant de l'utilisation du procédé selon la demande n 03293336.8 est significatif, et ce, malgré la nécessité de mettre en oeuvre un algorithme de correction d'erreurs adapté aux codes de Reed-Solomon (par exemple l'algorithme de Forney) un certain nombre de fois (au moins égal à 2max), et de résoudre pour chaque agrégat erroné, étiqueté par une certaine valeur x de X, un système d'équations (2) de taille 2(x) ; on notera toutefois à cet égard que 2max est au plus égal à a, où a désigne, rappelons-le, l'exposant de Y dans l'équation représentant la courbe algébrique. On notera par ailleurs que le système d'équations (2) est un système de Vandermonde; comme il est bien connu de l'homme du métier, la résolution d'un tel système d'équations linéaires est particulièrement simple. Le procédé de correction d'erreurs selon la demande européenne n 03293336.8 s'applique par ailleurs à un ensemble de codes, décrits dans cette même demande, plus large que l'ensemble des codes définis sur une courbe algébrique de type C(a,b) . On construit pour ce faire un ensemble de localisation en choisissant n couples distincts (toujours notés (x, y p (x)) , où p =1,...,2(x) et 2(x) est le cardinal de l'agrégat considéré), que l'on peut toujours considérer comme représentant les points Pfl (où /3=1,...,n) d'une courbe, mais sans nécessairement requérir que cette courbe soit une courbe algébrique de type C(a,b). L'élément en ligne a et colonne /3 de la matrice de parité est toujours égal au monôme ha (où a = 1,..., n - k) évalué au point Pfl de cette courbe. Ces monômes de la matrice de parité sont des monômes Y1X, où les entiers i et j sont positifs ou nuls, et sont tels que si, parmi ces monômes, il en existe un associé à i > 0 et à j quelconque, alors il en existe aussi un associé à (i-1) et à la même valeur de j, et s'il en existe un associé à i 2871311 13 quelconque et à j > 0, alors il en existe aussi un associé à la même valeur de i et à (j 1) . Les puissances de Y forment donc un ensemble j = 0,...,jmax. Il est clair que pour un tel code généralisé, on peut définir des codes de Reed-Solomon composants en regroupant dans des sous-ensembles M. tous les monômes Y'X ayant la même valeur de j. Comme expliqué ci-dessus, on doit toutefois choisir les valeurs de 'max et de 2max, où 2max désigne le plus grand parmi les cardinaux d'agrégat 2(x) , de façon à ce que (jmax +1) soit au moins égal à 2max. Ce procédé de décodage s'applique également aux codes obtenus en modifiant ou en raccourcissant un code tel que défini ci-dessus. On donnera dorénavant le nom de procédé de décodage par agrégats au procédé général de correction d'erreurs selon la demande européenne n 03293336.8, que l'on vient de décrire aussi succinctement que possible. Selon un mode de réalisation particulièrement avantageux, le décodage par agrégats tient compte des effacements appliqués par le démodulateur aux composantes reçues considérées comme douteuses, ainsi que des effacements appliqués lorsque la correction de l'un des mots agrégés corrige un symbole agrégé attaché à un agrégat qui n'avait pas été signalé comme erroné par le démodulateur. Le fait d'utiliser, pour les codes de ReedSolomon composants, un algorithme de correction d'erreurs apte à tenir compte des effacements, augmente, de manière générale, la capacité de correction d'erreurs de chacun de ces codes de Reed-Solomon, et, par conséquent, du procédé de décodage dans son ensemble. Cependant, les auteurs de la présente invention se sont rendu compte que le fait de tenir compte des effacements opérés par le démodulateur pouvait avoir un effet nuisible en ce que, si ces effacements sont trop nombreux compte tenu de la capacité de correction de l'un des codes de Reed-Solomon mis en oeuvre dans le décodage par agrégats, il en résulte l'échec de la correction du mot agrégé correspondant, et, par suite, l'impossibilité de calculer le mot de code associé à r à partir des symboles agrégés corrigés. 2871311 14 L'invention concerne donc, selon un premier aspect, un procédé de décodage par agrégats appliqué à un mot reçu r dont certaines composantes ont été effacées à la réception de ce mot, dans lequel - on forme, pour au moins un code de Reed-Solomon composant, indexé par j, le mot reçu agrégé ri =[ri(x1),...,ri(xi,) ], dont les composantes sont les symboles reçus agrégés ri(x) respectivement associés aux agrégats étiquetés par x=x1,...,x, et - on essaie de corriger au moins un mot reçu agrégé r au moyen d'un algorithme de correction d'erreurs adapté aux codes de Reed-Solomon, afin d'obtenir un mot reçu agrégé corrigé P. En cas de succès de cette correction, le procédé comporte en outre les étapes suivantes: - on calcule, pour au moins un agrégat, étiqueté par xu, unevaleur corrigée pour un nombre K, où K est inférieur au cardinal 2(xu) de l'agrégat, de composantes r(x,,yp(xo)) du mot reçu r effacées à réception, au moyen de la composante P, (xw,) de K mots reçus agrégés corrigés P et des autres composantes r(xu,,yp(xu,)) de l'agrégat, et - on forme un mot provisoire u dont au moins une composante u(xt,, y p (x, , )) est égale à la valeur ainsi corrigée de la composante correspondante r(xo,yp(xu,)) du mot reçu r, et dont les autres composantes sont égales aux composantes correspondantes du mot reçu r. Ainsi, selon l'invention, on produit des mots provisoires u dans lesquels, pour au moins un des agrégats considérés comme douteux par le démodulateur, on a calculé la valeur de composantes de cet agrégat effacées par le démodulateur en supposant que les autres composantes du même agrégat (de préférence, celles qui n'ont pas été effacées à réception) sont correctes. La plupart des mots provisoires u ayant été ainsi effectivement corrigés, au moins partiellement, ils auront plus de chances que les mots non 2871311 15 corrigés dont ils sont issus de voir l'ensemble des mots agrégés correspondants subir avec succès la tentative de correction par les codes de Reed-Solomon. On pourra donc faire appel à ces mots provisoires en cas de besoin, notamment en cas d'échec dans la correction de Reed-Solomon de l'un des mots agrégés calculés directement à partir du mot reçu r. Grâce à la présente invention, non seulement l'on bénéficie de la simplicité relative du décodage par agrégats, qui plus est dans le mode de réalisation avantageux où l'on tient compte des effacements, mais en plus on optimise la capacité de correction de ce procédé de décodage, sans pour autant avoir à augmenter la redondance (n k) du code. Ce processus de construction d'un mot provisoire u en partant du mot reçu r peut avantageusement être répété, en partant à présent de ce mot provisoire, et ainsi de suite, jusqu'à ce que l'on ait essayé de corriger toutes les composantes effacées à réception pour chaque agrégat tel que le nombre de telles composantes soit inférieur au cardinal de l'agrégat. Autrement dit, selon ce mode de réalisation, l'on obtient, de manière générale, un second mot provisoire à partir d'un premier mot provisoire en calculant une valeur corrigée pour au moins une composante de ce premier mot provisoire correspondant à une composante du mot reçu effacée à réception et non encore corrigée. Comme expliqué ci-dessus, dans le procédé selon la demande n 03293336.8, on calcule les symboles du mot de code v associé au mot reçu r à partir des symboles corrigés Îi(x) en résolvant des systèmes d'équations de Vandermonde (2). Or ce processus peut avantageusement être étendu aux mots provisoires u selon la présente invention, étant entendu que, ce faisant, l'on n'obtient alors pas nécessairement le mot de code associé au mot reçu r (unique par définition), mais un mot candidat pour le statut de mot de code associé. Autrement dit, selon ce mode de réalisation, si, pour un mot provisoire u, on parvient à corriger, au moyen d'algorithmes de correction d'erreurs adaptés aux codes de Reed-Solomon, les mots agrégés ui associés 30 audit mot provisoire u pour un nombre de valeurs distinctes de l'indice j au moins égal à 2max (où 2max désigne, on le rappelle, le plus grand parmi les cardinaux d'agrégat 2(x) ), on obtient à partir de ce mot provisoire u une estimation û du mot de code transmis correspondant au mot reçu r. Plusieurs options sont alors offertes à l'homme du métier. Ainsi, 5 selon une première variante, lesdits mots provisoires u sont emmagasinés dans une mémoire de type LIFO, et, dès que l'on obtient (le cas échéant) une première estimation û , on prend ce mot û comme mot de code v associé à r. Selon une deuxième variante, on construit un ensemble F de toutes les estimations û ainsi obtenues (le cas échéant). La première variante a l'avantage de la rapidité, cependant que la deuxième variante permet de choisir le meilleur candidat pour en faire le mot de code v associé à r. De plus, concernant précisément cette seconde variante, on pourra avantageusement mettre en place certains critères appropriés de manière à ce que, si ledit ensemble F se trouve contenir plusieurs estimations û distinctes, on choisisse, en fonction desdits critères, l'une de ces estimations û comme mot de code v associé à r. Ces critères peuvent, par exemple, faire référence à la distance de Hamming entre chaque estimation û et le mot reçu r, de manière à favoriser parmi ces mots û celui qui a subi le plus petit nombre de corrections. On peut en effet, dans le cas où le nombre d'erreurs dans un mot reçu n'est pas trop grand comparé aux capacités de correction des codes de Reed-Solomon composants, s'attendre à ce que l'on parvienne à corriger le mot reçu, de sorte que l'on obtient une estimation ne présentant pas un trop grand nombre de composantes corrigées, plus, éventuellement, d'autres estimations ayant subi quant à elles un grand nombre de corrections, du fait que ces autres estimations doivent leur existence à certaines corrections erronées . Par conséquent, à titre de précaution, on pourra avantageusement prévoir que si l'ensemble F contient au moins deux estimations û distinctes à la même distance de Hamming du mot reçu r, il faudra considérer qu'une anomalie s'est produite et que donc le décodage de ce mot reçu a échoué. 2871311 17 Selon un second aspect, l'invention concerne un dispositif de correction d'erreurs par agrégats applicable à un mot reçu r dont certaines composantes ont été effacées à la réception de ce mot, et comprenant des moyens pour: - former, pour au moins un code de Reed-Solomon composant, indexé par j, le mot reçu agrégé r1 =[ri(x1),...,ri(xi,)], dont les composantes sont les symboles reçus agrégés ri(x) respectivement associés aux agrégats étiquetés par x=x1,...,x, et - essayer de corriger au moins un mot reçu agrégé ri au moyen d'un algorithme de correction d'erreurs adapté aux codes de Reed-Solomon, afin d'obtenir un mot reçu agrégé corrigé r. Le dispositif comprend en outre des moyens pour, en cas de succès de cette correction: - calculer, pour au moins un agrégat, étiqueté par xu, une valeur corrigée pour un nombre K, où K est inférieur au cardinal 2(xm) de l'agrégat, de composantes r(x,,,yp(xu)) du mot reçu r effacées à réception, au moyen de la composante i.(xi,.) de K mots reçus agrégés corrigés P et des autres composantes r(xr,,yp(x,.)) de l'agrégat, et former un mot provisoire u dont au moins une composante u(x,, y p (x,)) est égale à la valeur ainsi corrigée de la composante correspondante r(x,, yp(x,)) du mot reçu r, et dont les autres composantes sont égales aux composantes correspondantes du mot reçu r. Selon des dispositions particulières, ce dispositif comprend en outre des moyens pour obtenir un second mot provisoire à partir d'un premier mot provisoire en calculant une valeur corrigée pour au moins une composante de ce premier mot provisoire correspondant à une composante du mot reçu effacée à réception et non encore corrigée. Selon d'autres dispositions particulières, ce dispositif comprend en outre des moyens pour obtenir à partir d'un mot provisoire u une estimation û du mot de code transmis correspondant au mot reçu r, au cas où, pour ce mot provisoire y, le dispositif est parvenu à corriger, au moyen d'algorithmes de correction d'erreurs adaptés aux codes de Reed- Solomon, les mots agrégés uj associés audit mot provisoire u pour un nombre de valeurs distinctes de l'indice j au moins égal à 2max, où 2 désigne le plus grand parmi les cardinaux max d'agrégat 2(x) . Selon des dispositions encore plus particulières, ce dispositif comprend, d'une part, une mémoire de type LIFO pour emmagasiner lesdits mots provisoires u, et d'autre part des moyens pour, dès qu'il obtient (le cas échéant) une première estimation û , prendre ce mot û comme mot de code v associé à r. Selon d'autres dispositions encore plus particulières, ce dispositif comprend des moyens pour construire un ensemble F de toutes lesdites estimations û ainsi obtenues (le cas échéant). Dans ce cas, on pourra aussi munir le dispositif de moyens lui permettant, si ledit ensemble F contient plusieurs estimations û distinctes, de choisir selon des critères prédéterminés l'une de ces estimations û comme étant le mot de code v associé à r. On pourra aussi l'agencer de telle sorte que si ledit ensemble F contient au moins deux estimations û distinctes à la même distance de Hamming du mot reçu r, il considère alors que le décodage de ce mot reçu a échoué. Les avantages de ces dispositifs de décodage sont essentiellement les mêmes que ceux des procédés corrélatifs décrits succinctement ci-dessus. L'invention vise également: - un appareil de réception de signaux numériques codés comprenant un 25 décodeur tel que décrit succinctement ci-dessus, et comportant des moyens pour démoduler lesdits signaux numériques codés, - un système informatique comprenant un décodeur tel que décrit succinctement ci-dessus, et comprenant en outre au moins un disque dur ainsi qu'au moins un moyen de lecture de ce disque dur, - un moyen de stockage de données inamovible comportant des 2871311 19 instructions de code de programme informatique pour l'exécution des étapes de l'un quelconque des procédés de décodage succinctement exposés ci-dessus, - un moyen de stockage de données partiellement ou totalement amovible, comportant des instructions de code de programme informatique pour l'exécution des étapes de l'un quelconque des procédés de décodage succinctement exposés ci-dessus, et - un programme d'ordinateur, contenant des instructions telles que, lorsque ledit programme commande un dispositif de traitement de données programmable, lesdites instructions font que ledit dispositif de traitement de données met en oeuvre l'un des procédés de décodage succinctement exposés ci-dessus. Les avantages offerts par cet appareil de réception, ce système informatique, ces moyens de stockage de données et ce programme d'ordinateur sont essentiellement les mêmes que ceux offerts par les procédés de décodage selon l'invention. D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description détaillée ci-dessous de modes de réalisation particuliers, donnés à titre d'exemples non limitatifs. La description se réfère aux dessins qui l'accompagnent, dans lesquels: - la figure 1 est un schéma synoptique d'un système de transmission d'informations selon un mode de réalisation de l'invention, - la figure 2 représente un algorithme de correction d'erreurs principal selon un mode de réalisation de l'invention, ledit algorithme principal comprenant des algorithmes secondaires représentés sur les figures 3 à 6, - la figure 3 représente un algorithme de tentative de calcul des composantes formant des agrégats effacés, à partir de la totalité des symboles agrégés correspondant à ces agrégats, - la figure 4 représente un algorithme de sélection d'un nouveau code de Reed-Solomon, - la figure 5 représente un algorithme de tentative de correction du mot agrégé correspondant au code de Reed-Solomon sélectionné dans l'algorithme de la figure 4, ainsi qu'un algorithme d'évaluation de la fiabilité des mots agrégés 2871311 20 qui ont été corrigés à ce stade du décodage, - la figure 6 représente un algorithme de tentative de calcul des composantes appartenant à des agrégats erronés localisés par le démodulateur, et - la figure 7 représente un appareil de lecture de signaux numériques apte à mettre en oeuvre l'invention. La figure 1 est un schéma synoptique d'un système de transmission d'informations utilisant un codage de canal selon l'invention. Ce système a pour fonction de transmettre des informations de nature quelconque à partir d'une source 100 vers un destinataire ou utilisateur 109. En premier lieu, la source 100 met ces informations sous la forme de symboles appartenant à un certain corps de Galois Fq (par exemple des octets de bits pour q = 28), et transmet ces symboles à une unité de stockage 101, qui accumule les symboles de façon à former des ensembles contenant chacun k symboles. Ensuite, chacun de ces ensembles est transmis par l'unité de stockage 101 à un codeur 102 qui y incorpore de la redondance, de manière à construire un mot de longueur n appartenant au code choisi. Les mots de code ainsi formés sont ensuite transmis à un modulateur 103, qui associe à chaque symbole du mot de code un symbole de modulation (par exemple, une série de bits conformément à un code de modulation, comme expliqué ci-dessus). Ensuite, ces symboles de modulation sont transmis à un enregistreur (ou un émetteur) 104, qui insère les symboles dans un canal de transmission. Ce canal peut être par exemple un stockage sur un support adapté tel qu'un DVD ou un disque magnétique ou encore une bande magnétique. Il peut correspondre également à une émission filaire ou nonfilaire comme c'est le cas d'un lien radio. Le message transmis parvient à un lecteur (ou un récepteur) 105, après avoir été affecté par un bruit de transmission dont l'effet est de modifier ou d'effacer certains des symboles de modulation. Le lecteur (ou récepteur) 105 transmet alors ces symboles au démodulateur 106, qui les transforme en symboles de Fq. En cas de doute sur la valeur de l'un de ces symboles de Fq (par exemple si la transformation à 2871311 21 partir des symboles de modulation est ambiguë quant à la valeur du symbole de Fq correspondant), le démodulateur 106 lui adjoint une étiquette prédéterminée représentant un effacement . Les n symboles résultant de la transmission d'un même mot de code sont ensuite groupés en un mot reçu dans une unité de correction d'erreurs 107, qui met en oeuvre un procédé de décodage selon l'invention, de manière à fournir un mot de code associé . Puis ce mot de code associé est transmis à une unité de suppression de redondance 108, qui en extrait k symboles d'information en mettant en oeuvre un algorithme de décodage inverse de celui mis en oeuvre par le codeur 102. Enfin, ces symboles d'information sont fournis à leur destinataire 109. On peut considérer que les unités 107 et 108 forment conjointement un décodeur 10. On va à présent illustrer le procédé de codage selon l'invention à l'aide d'un exemple numérique. On notera que cet exemple ne constitue pas nécessairement un choix de paramètres préférentiel pour le codage ou le décodage. Il n'est fourni ici que pour permettre à l'homme du métier de comprendre plus facilement le fonctionnement du procédé selon l'invention. Considérons donc un code de géométrie algébrique Q de dimension 34 et de longueur 60 défini comme suit. L'alphabet des symboles est constitué par le corps de Galois F16. Comme le cardinal de ce corps est une puissance de 2 (16 = 24), le signe + est équivalent au signe devant tout coefficient d'un polynôme à coefficients sur ce corps. On considère la courbe algébrique de genre g = 6 constituée par l'ensemble des solutions (X = x,Y = y) de l'équation à deux inconnues Y4 + Y+X5 -0 (3) sur F16. On constate qu'en donnant à x une valeur x quelconque dans F16, il existe à chaque fois 4 valeurs y(x) (p =1,2,3,4) dans F16 telles que le couple (x, yp (x)) soit solution de l'équation (3) ; ces solutions de l'équation (3) sont les coordonnées des points finis de la courbe (la courbe contient également un point à l'infini noté P.). On choisit de constituer l'ensemble de localisation au 2871311 22 moyen de toutes ces solutions sauf celles où x= 0; l'ensemble de localisation a donc un cardinal égal à 60, et il peut être subdivisé en 15 agrégats qui ont chacun un cardinal it(x) égal à 4. On rappelle que chaque point Pfl de l'ensemble de localisation sert à identifier le,5 ème élément de tout mot de code; le nombre de tels points étant ici égal à 60, la longueur n du code est donc elle aussi égale à 60. Ensuite, on considère l'espace vectoriel L(m P..) de polynômes en X et Y à coefficients dans F16 dont les seuls pôles sont situés en P., et sont d'ordre inférieur ou égal à m, où m est un entier strictement positif (l'image de cet espace de polynômes sur les points finis de la courbe représentée par l'équation (3) est donc un code de géométrie algébrique dit à un point ). Cet espace vectoriel, qui est de dimension supérieure ou égale à (m - g +1) (égale si m > 2g - 2), possède une base constituée par les monômes ha = Y'X, où j est un entier compris entre 0 et 3, i est un entier positif ou nul, 4i + 5 j Prenons par exemple: m = 31; on obtient alors un ensemble de monômes ha où a =1,...,26, puisque: m-g+1=31-6+1=26. Les monômes ha peuvent être classés dans des sous-ensembles ordonnés de monômes M._ {Y1X 1 0- 2871311 23 On peut par exemple prendre pour matrice de parité H de ce code Q la matrice dont l'élément en ligne a et colonne /3 est égal à la valeur prise par le monôme ha au point Pfl de la courbe algébrique. La redondance (n - k) du code Q étant égale à 26, sa dimension vaut k = 34. La distance minimale d de ce code est au moins égale à n -k +1 -- g = 21. On peut donc corriger (au moins) INT[(21-1)/2] = 10 symboles ayant subi une erreur de transmission si l'on utilise un algorithme de décodage ayant une capacité de correction maximale; comme expliqué ci-dessus, de tels algorithmes sont complexes à mettre en oeuvre. En revanche, conformément au procédé de décodage par agrégats, la correction d'erreurs est effectuée en premier lieu dans des mots agrégés appartenant à des codes de Reed-Solomon composants de longueur égale à 15 et dont les matrices de parité sont H8, H7, H6 et H5 (respectivement pour j = 0,1,2,3). L'on calcule ensuite les valeurs estimées des composantes du mot de code (de géométrie algébrique) associé au mot reçu en résolvant des systèmes de Vandermonde. Au-delà de l'exemple numérique ci-dessus, on note que le décodage par agrégats requiert au moins 2max codes de Reed-Solomon composants distincts. Le procédé de décodage selon l'invention organise les étapes générales, que l'on vient de rappeler, du décodage par agrégats, et y ajoute des étapes particulières, de manière à optimiser la capacité de correction. On va décrire à présent de manière détaillée ces étapes dans un mode de réalisation de l'invention. Au cours de ce procédé, de manière générale, un mot reçu r est corrigé à diverses reprises, d'ailleurs de manière non nécessairement cumulative, en certaines des positions qui ont été effacées par le démodulateur. Outre le mot reçu r lui-même pris comme valeur initiale (avec ses effacements éventuellement placés en certaines positions de r par le démodulateur), les 2871311 24 mots résultant de ces corrections (voir ci-dessous l'étape (503) en référence à la figure 6) seront représentées par des mots provisoires , tous notés u. Ces mots provisoires sont, commodément, emmagasinés au fur et à mesure de leur calcul (voir ci-dessous l'étape (504) en référence à la figure 6) dans une mémoire de type LIFO (initiales des mots anglais Last-In First-Out signifiant le dernier à entrer est le premier à sortir ), que nous désignerons par pile D (en anglais, stack D ), dans laquelle on ira puiser au besoin, comme expliqué ci-dessous. L'intérêt d'utiliser ici une pile de type LIFO plutôt que d'un autre type est, comme on s'en rendra compte en étudiant la description ci-dessous, que cela permet de privilégier les mots u dans lesquels on a corrigé le moins possible d'effacements placés par le démodulateur. En effet, ces corrections font appel aux autres composantes dans le même agrégat, ce qui suppose que ces autres composantes sont correctes; or il se peut, évidemment, qu'il existe dans cet agrégat au moins une erreur qui n'a pas été détectée par le démodulateur. A chacun de ces mots provisoires u, il correspond un ensemble de mots agrégés: u i = [ ui (xl), ui (x2),..., ut (x) pour i = 0,...,a.max -1, dans lesquels, pour x = xl,x2,...,x , le symbole 2(x) ui (x) = E [yp (x)]u(x,yp (x)) p=1 est effacé si au moins un des symboles u(x, y p (x)) est lui-même effacé. Chaque fois qu'un nouveau mot provisoire u a été calculé, on détermine: - l'ensemble U des composantes du mot provisoire u correspondant à des positions effacées par le démodulateur et que l'on n'a pas encore essayé de corriger, - l'ensemble 1 des agrégats dont chacun est tel qu'au moins un élément de l'agrégat appartient à l'ensemble U, et l'ensemble E des agrégats effacés dont on essaiera de calculer les 2871311 25 composantes (voir plus bas étape (202) de la figure 3) à partir de la totalité (c'est-à-dire, pour i = 0,..., %max -1) des symboles agrégés ûi (x) ayant bénéficié d'une correction de Reed-Solomon. L'ensemble E comprend, plus précisément, d'une part, les agrégats 5 erronés qui ont été localisés lors de la correction de Reed-Solomon d'un mot agrégé. L'ensemble E comprend d'autre part les agrégats que l'on a transférés à partir de l'ensemble I après que l'on a envisagé de calculer les composantes correspondantes de u à partir des mots agrégés corrigés ûi où i ne prend qu'une partie des valeurs -1}, mais qu'on a dû y renoncer. Ce cas est décrit plus bas, en référence à la figure 6, et correspond à la situation où l'échec de l'étape (501) conduit directement à l'étape (505) où le mot provisoire non corrigé est remis dans la pile D. Chaque fois qu'un mot provisoire u est emmagasiné dans la pile D, on emmagasine avec lui les ensembles U et E correspondants, ainsi que l'ensemble J des valeurs de j (avec 0 s j 2max -1) pour lesquelles on a déjà essayé de corriger des mots agrégés. De préférence, chaque fois qu'un mot provisoire u est emmagasiné dans la pile D, on emmagasine avec lui l'ensemble des mots agrégés ui (où 20 i = 0,..., max -1) correspondants. La figure 2 représente l'algorithme de correction d'erreurs principal, dans ce mode de réalisation de l'invention. Cet algorithme produit en général, non seulement une pluralité de mots provisoires u, mais également une pluralité de mots û représentant chacun une estimation du mot de code 25 transmis associé au mot reçu r. On désignera par F l'ensemble de ces estimations û . L'étape (1000) est une étape d'initialisation des divers ensembles mentionnés ci-dessus. De préférence, on vérifie d'abord, de manière connue (par exemple en calculant le syndrome d'erreurs s = H. rT), si le mot reçu r est 2871311 26 correct ou erroné, et l'on ne met en oeuvre l'algorithme de correction d'erreurs expliqué ci-dessous que dans le cas où r contient des erreurs. On place alors dans la pile D un seul élément, dans lequel le mot u est identique au mot reçu r, et l'ensemble U est l'ensemble Udemod constitué de la liste des composantes de r qui ont été considérées comme douteuses par le démodulateur. Le point n 1 sert d'entrée pour des itérations successives, comme expliqué ci-dessous. A l'étape (1001), on regarde si la pile D est vide. Si c'est le cas, on regarde à l'étape (1002) si l'ensemble F est vide. Si c'est le cas, c'est-à-dire si l'on ne dispose d'aucune estimation pour le mot de code transmis, cela signifie que le décodage a échoué (étape (1003) ) ; l'homme du métier prévoira, de manière connue, la suite à donner à un tel constat d'échec; il peut s'agir par exemple d'une requête de retransmission du mot de code auprès de l'entité émettrice. En revanche, si l'ensemble F n'est pas vide, on regarde si F contient un unique mot û ou plusieurs mots û distincts (étape (1004)) ; si û est unique, ce mot représente le mot de code associé v et le décodage prend fin (étape (1006)). Si F contient plusieurs mots distincts, on choisit l'un d'eux, à l'étape (1005), comme étant la meilleure estimation du mot de code correspondant à L, selon des critères prédéterminés (par exemple, le mot le plus proche de r au sens de la distance de Hamming), et le décodage prend fin (étape (1006)). En outre, selon des dispositions optionnelles (non représentées), on 25 pourra considérer que si l'on trouve dans F au moins deux estimations û distinctes qui sont à la même distance de Hamming du mot reçu r, il faudra en conclure que le décodage a échoué, car ce phénomène est un symptôme que des erreurs se sont produites au cours du décodage. Si au contraire, suite au test de l'étape (1001), on constate que la 30 pile D contient encore au moins un élément, alors on extrait de la pile, à l'étape (1007), le dernier élément qui y avait été inséré. Puis on vérifie, à l'étape 2871311 27 (1008), si l'on a parcouru toutes les valeurs de l'ensemble J, c'est-à- dire si l'on a déjà fait appel à tous les codes de Reed-Solomon composants. Si c'est le cas, on met en oeuvre le sous-algorithme décrit ci-dessous en relation avec la figure 3. Si en revanche, il reste encore au moins un code de Reed-Solomon à prendre en considération, on met en oeuvre les sous-algorithmes décrits ci-dessous en référence aux figures 4 à 6. Ainsi, selon ce mode de réalisation de l'algorithme principal, chaque mot provisoire u existant dans la pile D est examiné à la lumière des codes de Reed-Solomon composants sélectionnés l'un après l'autre (voir ci- dessous l'étape (301) en référence à la figure 4), à condition que ce mot provisoire ne soit pas supprimé en cours de route. Plus précisément, si, pour une valeur de l'indice j, le mot provisoire u examiné parvient jusqu'au test de l'étape (403) (décrite ci-dessous en référence à la figure 5) et le passe avec succès, ce même mot provisoire u sera ensuite examiné avec une nouvelle valeur de l'indice j; sinon ce mot provisoire est purement et simplement supprimé, et l'on extrait alors de la pile D un autre mot provisoire (si bien sûr il en reste) lors de la prochaine étape (1007). La figure 3 représente un sous-algorithme de tentative de calcul des composantes d'un mot provisoire u qui forment les agrégats de l'ensemble E, à partir de la totalité des symboles agrégés correspondant à ces agrégats. Si l'on constate, lors du test de l'étape (200), qu'on n'a en fait jamais placé d'agrégat dans E, on en déduit (dans le mode de réalisation, indiqué ci-dessus, où l'on n'applique l'algorithme de correction selon l'invention qu'aux mots reçus entachés d'erreur) que les composantes erronées du mot reçu r sont exclusivement des composantes effacées par le démodulateur; le mot provisoire courant u résulte de la mise en oeuvre, pour ces composantes effacées et aux valeurs adéquates de l'indice j, du sous-algorithme de correction selon l'invention comprenant les étapes (501) à (504) de la figure 6 (voir plus bas). (Dans le mode de réalisation en variante où l'on applique l'algorithme de correction d'erreurs à tous les mots reçus, corrects ou incorrects, on peut également se trouver ici dans le cas d'un mot reçu r entièrement correct; dans ce cas, il n'y a pas eu création de nouveaux mots provisoires au cours des étapes précédentes du décodage, et le motprovisoire courant est simplement égal à ce mot reçu.) Ce mot provisoire u satisfait manifestement à tous les critères requis pour être une estimation du mot de code transmis correspondant à r, et on le place donc dans l'ensemble F à l'étape (204), après toutefois l'avoir renommé û à l'étape (201). Si en revanche, l'ensemble E contient au moins un élément, on essaie de calculer à l'étape (202), pour chacun des agrégats de E, une estimation des composantes correspondantes en résolvant le système de Vandermonde: 2(x) û1 (x) = E [y p (x)]1 û(x, y (x)) p=1 Oë i = 0,...,îmax -1. On notera que ce système de Vandermonde est surdéterminé pour les éventuels agrégats dont le cardinal 2(x) est strictement inférieur à 2 max. Il peut donc se produire (test de l'étape (203)) que la résolution de ce système se révèle être impossible; dans ce cas, on se trouve devant une incompatibilité entre les divers symboles agrégés corrigés relatifs à l'agrégat considéré, ce qui implique que l'une au moins des corrections est en fait une mauvaise correction; on supprime alors purement et simplement le mot provisoire u considéré, et l'on retourne au point n 1 de la figure 2. Si en revanche toutes les résolutions de systèmes (2') réussissent, on place le mot û ainsi obtenu dans l'ensemble F à l'étape (204). Après l'étape (204), on retourne au point n 1 de la figure 2. La figure 4 représente un sous-algorithme de sélection d'un nouveau code de Reed-Solomon. Autrement dit, on choisit ici (étape (301)) un indice j (avec 0 j s 2max -1) qui n'a pas encore été utilisé pour un décodage de Reed- (2') 2871311 29 Solomon. On notera que le choix de la succession d'indices dans cet ensemble peut se faire selon divers critères; par exemple, on pourra avantageusement sélectionner les codes de Reed-Solomon par distance minimale décroissante, de manière à disposer de la plus grande capacité de correction possible au début du décodage quand il s'agit surtout de localiser les erreurs dans le mot reçu. On définit ensuite, à l'étape (302), un ensemble provisoire J+ comprenant l'ensemble J des indices déjà utilisés et le nouvel indice j. Le sous-algorithme de la figure 4 comprend une étape (300) de mise à jour de l'ensemble I à partir de l'ensemble U. II comprend également une étape (303) dans laquelle on compte le nombre total d'agrégats contenus soit dans I soit dans E, car l'on va effacer les symboles agrégés ui(x) (pour la valeur courante de j) correspondant à ces agrégats. Si, au cours de cette étape (303), on trouve que ce nombre 15 d'effacements est inférieur à la distance minimale di du code de ReedSolomon de matrice de parité Ht(J) (pour la valeur courante de j), on peut espérer que ce code a la capacité de corriger le mot ui (voir ci- dessus la discussion générale sur les effacements), et l'on passe au sousalgorithme de la figure 5. Si en revanche, le nombre d'effacements est égal ou supérieur à la distance minimale di, on considère que le mot provisoire u considéré ne pourra pas permettre une correction fiable du mot reçu r. Ce mot u est alors supprimé, et l'on revient au point n 1 de la figure 2. La figure 5 représente, d'abord, la tentative de correction, à l'étape 25 (400), du mot agrégé correspondant au code de Reed-Solomon sélectionné dans le sous-algorithme de la figure 4. En cas d'échec (test (401)), le mot provisoire u considéré est supprimé, et l'on revient au point n 1 de la figure 2. En cas de succès, on examine ensuite, à l'étape (402), si cette 30 tentative de correction a localisé des erreurs dans des agrégats dans lesquels 2871311 30 on n'avait pas encore localisé de composante erronée; on constitue ensuite un ensemble L, qui comprend à la fois les agrégats de I et de E ainsi que, le cas échéant, ces nouveaux agrégats erronés. Le test de l'étape (403) consiste à vérifier que le nombre d'agrégats contenus dans L, considérés comme autant d'effacements, est inférieur à la distance minimale, d'une part, de chacun des codes de Reed-Solomon déjà utilisés, et d'autre part du code de Reed-Solomon courant; en effet, lorsque ce n'est pas le cas, on considère que les mots agrégés obtenus précédemment au moyen de corrections de Reed-Solomon ne sont pas fiables, et, par conséquent, on supprime le mot provisoire u considéré, avant de revenir au point n 1 de la figure 2. En cas de succès au test (404), on met en oeuvre deux étapes préparatoires au sous-algorithme de la figure 6. A l'étape (404), on construit l'ensemble T des (éventuels) agrégats qui comprennent chacun un nombre de positions effacées par le démodulateur exactement égal au nombre d'indices contenus dans J+, car on va essayer de calculer les composantes effacées des agrégats de T en résolvant un système d'équations ayant cette dimension. Comme on sait qu'après la tentative de correction de ces composantes effacées, elles ne devront plus figurer dans U (voir la définition de U), on définit à l'avance, à l'étape (405), l'ensemble U' comprenant les éléments de U moins les composantes appartenant aux agrégats de T. La figure 6 représente un sous-algorithme de tentative de calcul des composantes appartenant aux agrégats de T (s'il existe de tels agrégats à ce stade, évidemment). Si l'ensemble T est en fait vide (test (500)), on passe directement à l'étape (505) dans laquelle on met à jour l'élément de la pile D correspondant au mot provisoire u considéré. Cet élément de la pile D est ensuite pris en considération à l'étape (1007). Si, en revanche, il existe bien des agrégats dans T, on commence, à l'étape (501), par essayer de corriger les mots agrégés u1 pour tous les codes de Reed-Solomon déjà sélectionnés (il est inutile en effet de corriger le mot Ili pour la valeur courante de l'indice j puisque l'on a déjà effectué cette opération à l'étape (400)). En cas d'échec dans l'une de ces corrections (test 502)), on passe directement à l'étape (505) décrite ci-dessus. En revanche, en cas de succès de toutes ces corrections, on calcule à l'étape (503), selon l'invention, un nouveau mot provisoire (noté temporairement u') en résolvant, pour chacun des agrégats de T, le système d'équations de Vandermonde: 2(x) f ût (x) = E Lyp (x)l u' (x, y p (x)) , (2") p=1 où i prend toutes les valeurs de J. Dans ce système d'équations (2"), les inconnues sont les composantes u'(x,yp(x)) qui ont été effacées par le démodulateur (et qui donc figurent dans U), et l'on suppose que les autres composantes u'(x, yp (x)) (qui ne figurent pas dans U) sont correctes. On insère alors dans la pile D, à l'étape (504), un nouvel élément 15 contenant ce nouveau mot provisoire (renommé u) et les ensembles qui lui sont associés. Nonobstant le succès apparent de ces étapes de correction, on insère ensuite dans la pile D, à l'étape (505), un élément contenant le mot provisoire avant correction (et les ensembles associés à ce mot, mis à jour) ; comme expliqué ci-dessus, on considère que le mot provisoire ainsi corrigé est moins fiable que le mot non corrigé, et l'on fait donc appel de préférence au mot non corrigé pour les étapes suivantes du décodage. Le sous-algorithme de la figure 6 s'achève par un retour au point n 1 de la figure 2. Cela complète la description de l'algorithme de correction d'erreurs selon ce mode de réalisation de l'invention. En variante, on peut se dispenser de construire un ensemble F d'estimations û du mot de code transmis correspondant au mot reçu r: selon cette variante, dès qu'on obtient une telle estimation û (le cas échéant), on met immédiatement fin à l'algorithme de correction (au lieu de retourner au point n 1 de la figure 2), et l'on prend ce mot û comme mot de code v associé à r; naturellement, dans cette variante, la réponse oui au test de l'étape (1001) (figure 2) conduit directement à l'étape (1003) (échec du décodage), et les étapes (1002), (1004), (1105) et (1006) sont supprimées. Cette variante permet un décodage plus rapide, au prix toutefois d'une légère augmentation du taux d'erreurs de décodage. Le schéma synoptique de la figure 7 représente un appareil de lecture de signaux numériques codés 70 incorporant le décodeur 10. Cet appareil 70 comprend un clavier 711, un écran 709, un destinataire d'informations externe 109, un lecteur de données 105 et un démodulateur 106, conjointement reliés à des ports d'entrée/sortie 703 du décodeur 10 qui est réalisé ici sous la forme d'une unité logique. Le décodeur 10 comporte, reliés entre eux par un bus d'adresses et de données 702: - une unité centrale de traitement 700, - une mémoire vive (RAM) 704, - une mémoire morte (ROM) 705, et - lesdits ports d'entrée/sortie 703. Chacun des éléments illustrés en figure 7 est bien connu de l'homme du métier des micro-ordinateurs et des systèmes de stockage de masse et, plus généralement, des systèmes de traitement de l'information. Ces éléments connus ne sont donc pas décrits ici. On observe, cependant, que: - le destinataire d'informations 109 pourrait être, par exemple, un périphérique d'interface, un afficheur, un modulateur, une mémoire externe ou un autre système de traitement de l'information (non représenté), et pourrait être adapté à recevoir des séquences de signaux représentatifs de parole, de messages de service ou de données multimédia notamment de type IP ou ATM, sous forme de séquences de données binaires, - le lecteur 105 est adapté à lire des données enregistrées sur un support tel qu'un disque magnétique ou magnéto-optique. La mémoire vive 704 conserve des données, des variables et des résultats intermédiaires de traitement, dans des registres de mémoire portant, 2871311 33 dans la description, les mêmes noms que les données dont ils conservent les valeurs. La mémoire vive 704 comporte notamment les registres suivants: - des registres mots reçus , dans lesquels sont conservés les mots reçus, - des registres mots agrégés , dans lesquels sont conservés les mots reçus agrégés, - un registre symboles estimés , dans lequel sont conservés les symboles issus d'un mot reçu en cours de correction, - un registre mots associés , dans lequel sont conservés les 10 symboles des mots de code associés , et - un registre symboles information , dans lequel sont conservés les symboles résultant de la suppression de la redondance. La mémoire morte 705 est adaptée à conserver, dans des registres qui, par commodité, possèdent les mêmes noms que les données qu'ils conservent: le programme de fonctionnement de l'unité centrale de traitement 700, dans un registre programme , - la longueur des mots de code dans un registre n , - le cardinal du corps de Galois Fq servant d'alphabet pour le code utilisé, dans un registre q , - le nombre de symboles d'information servant à construire un mot de code, dans un registre k , et - les matrices de parité des codes de Reed-Solomon composants, dans des registres Ht . On a décrit ci-dessus à titre d'exemple une application de l'invention au stockage de masse des données, mais il est clair que les procédés selon l'invention peuvent tout aussi bien être mis en oeuvre au sein d'un réseau de télécommunications, auquel cas l'unité 105 par exemple pourrait être un récepteur adapté à mettre en oeuvre un protocole de transmission de données par paquets sur un canal hertzien. REVENDICATIONS 1. Procédé de décodage par agrégats appliqué à un mot reçu r dont certaines composantes ont été effacées à la réception de ce mot, dans lequel - on forme, pour au moins un code de Reed-Solomon composant, indexé par j, le mot reçu agrégé r 1 _ [ ri(xl),..., ri(xp) ], dont les composantes sont les symboles reçus agrégés rj(x) respectivement associés aux agrégats étiquetés par x = xi,..., , et - on essaie de corriger au moins un mot reçu agrégé rJ. au moyen d'un algorithme de correction d'erreurs adapté aux codes de Reed-Solomon, afin d'obtenir un mot reçu agrégé corrigé î caractérisé en ce que, en cas de succès de cette correction, il comporte en outre les étapes suivantes: - on calcule, pour au moins un agrégat, étiqueté par xw., une valeur corrigée pour un nombre K, Oë K est inférieur au cardinal 2(x,.) de l'agrégat, de composantes r(xm., yp (x,)) du mot reçu r effacées à réception, au moyen de la composante P,(xw.) de K mots reçus agrégés corrigés î et des autres composantes r(x,,,.,yp(x,.)) de l'agrégat, et - on forme un mot provisoire u dont au moins une composante u(x,.,yp(x,)) est égale à la valeur ainsi corrigée de la composante correspondante r(xa, , y p (xo)) du mot reçu r, et dont les autres composantes sont égales aux composantes correspondantes du mot reçu r. 2. Procédé de décodage selon la revendication 1, caractérisé en ce que l'on obtient un second mot provisoire à partir d'un premier mot provisoire en calculant une valeur corrigée pour au moins une composante de ce premier mot provisoire correspondant à une composante du mot reçu effacée à réception et non encore corrigée. 3. Procédé de décodage selon la revendication 1 ou la revendication 2, caractérisé en ce que, si, pour un mot provisoire u, on parvient à corriger, au 2871311 35 moyen d'algorithmes de correction d'erreurs adaptés aux codes de Reed-Solomon, les mots agrégés ui associés audit mot provisoire u pour un nombre de valeurs distinctes de l'indice j au moins égal à 2max ' où 2max désigne le plus grand parmi les cardinaux d'agrégat 2(x) , on obtient à partir de ce mot provisoire u une estimation û du mot de code transmis correspondant au mot reçu r. 4. Procédé de décodage selon la revendication 3, caractérisé en ce que lesdits mots provisoires u sont emmagasinés dans une mémoire de type LIFO, et en ce que, dès que l'on obtient (le cas échéant) une première estimation û , on prend ce mot û comme mot de code v associé à r. 5. Procédé de décodage selon la revendication 3, caractérisé en ce que l'on construit un ensemble F de toutes lesdites estimations û ainsi obtenues (le cas échéant). 6. Procédé de décodage selon la revendication 5, caractérisé en ce que, si ledit ensemble F contient plusieurs estimations û distinctes, on choisit alors, selon des critères prédéterminés, l'une de ces estimations û comme étant le mot de code v associé à r. 7. Procédé de décodage selon la revendication 5, caractérisé en ce que si ledit ensemble F contient au moins deux estimations û distinctes à la même distance de Hamming du mot reçu L, on considère alors que le décodage de ce mot reçu a échoué. 8. Dispositif (107) de correction d'erreurs par agrégats applicable à un mot reçu r dont certaines composantes ont été effacées à la réception de ce mot, et comprenant des moyens pour: - former, pour au moins un code de Reed-Solomon composant, indexé par j, le mot reçu agrégé ri _ [ ri(xl),..., ri(x,a) ], dont les composantes sont les symboles reçus agrégés ri(x) respectivement associés aux agrégats étiquetés par x = xi,...,x, et - essayer de corriger au moins un mot reçu agrégé r au moyen d'un 2871311 36 algorithme de correction d'erreurs adapté aux codes de Reed-Solomon, afin d'obtenir un mot reçu agrégé corrigé P. , caractérisé en ce qu'il comprend en outre des moyens pour, en cas de succès de cette correction: - calculer, pour au moins un agrégat, étiqueté par xu, une valeur corrigée pour un nombre K, où K est inférieur au cardinal 2(x,) de l'agrégat, de composantes r(xu,yp(x,u)) du mot reçu r effacées à réception, au moyen de la composante î.i(x,,) de K mots reçus agrégés corrigés îj et des autres composantes r(x, , y p (x,, )) de l'agrégat, et - former un mot provisoire u dont au moins une composante u(xu,, y p (xu, )) est égale à la valeur ainsi corrigée de la composante correspondante r(x,,yp(xt,)) du mot reçu r, et dont les autres composantes sont égales aux composantes correspondantes du mot reçu r. 9. Dispositif de correction d'erreurs par agrégats selon la revendication 8, caractérisé en ce qu'il comprend en outre des moyens pour obtenir un second mot provisoire à partir d'un premier mot provisoire en calculant une valeur corrigée pour au moins une composante de ce premier mot provisoire correspondant à une composante du mot reçu effacée à réception et non encore corrigée. 10. Dispositif de correction d'erreurs par agrégats selon la revendication 8 ou la revendication 9, caractérisé en ce qu'il comprend en outre des moyens pour obtenir à partir d'un mot provisoire u une estimation û du mot de code transmis correspondant au mot reçu r, au cas où, pour ce mot provisoire y, le dispositif est parvenu à corriger, au moyen d'algorithmes de correction d'erreurs adaptés aux codes de Reed- Solomon, les mots agrégés uj associés audit mot provisoire u pour un nombre de valeurs distinctes de l'indice j au moins égal à 2max, où 2max désigne le plus grand parmi les cardinaux d'agrégat 2(x) . 2871311 37 11. Dispositif de correction d'erreurs par agrégats selon la revendication 10, caractérisé en ce qu'il comprend, d'une part, une mémoire de type LIFO pour emmagasiner lesdits mots provisoires u, et d'autre part des moyens pour, dès qu'il obtient (le cas échéant) une première estimation û , 5 prendre ce mot û comme mot de code v associé à r. 12. Dispositif de correction d'erreurs par agrégats selon la revendication 10, caractérisé en ce qu'il comprend des moyens pour construire un ensemble F de toutes lesdites estimations û ainsi obtenues (le cas échéant). 13. Dispositif de correction d'erreurs par agrégats selon la revendication 12, caractérisé en ce qu'il comprend des moyens pour, si ledit ensemble F contient plusieurs estimations û distinctes, choisir selon des critères prédéterminés l'une de ces estimations û comme étant le mot de code v associé à r. 14. Dispositif de correction d'erreurs par agrégats selon la revendication 12, caractérisé en ce que si ledit ensemble F contient au moins deux estimations û distinctes à la même distance de Hamming du mot reçu r, il considère alors que le décodage de ce mot reçu a échoué. 15. Décodeur (10), caractérisé en ce qu'il comprend: - au moins un dispositif de correction d'erreurs selon l'une quelconque des revendications 8 à 14, et - au moins une unité de suppression de la redondance (108). 16. Appareil de réception de signaux numériques codés (70), caractérisé en ce qu'il comprend un décodeur selon la revendication 15, et en ce qu'il comporte des moyens (106) pour démoduler lesdits signaux numériques codés. 17. Système informatique (70), caractérisé en ce qu'il comprend un décodeur selon la revendication 15, et en ce qu'il comprend en outre: - au moins un disque dur, et - au moins un moyen de lecture (105) de ce disque dur. 2871311 38 18. Moyen de stockage de données inamovible, caractérisé en ce qu'il comporte des instructions de code de programme informatique pour l'exécution des étapes d'un procédé de décodage selon l'une quelconque des revendications 1 à 7. 19. Moyen de stockage de données partiellement ou totalement amovible, caractérisé en ce qu'il comporte des instructions de code de programme informatique pour l'exécution des étapes d'un procédé de décodage selon l'une quelconque des revendications 1 à 7. 20. Programme d'ordinateur, caractérisé en ce qu'il contient des instructions telles que, lorsque ledit programme commande un dispositif de traitement de données programmable, lesdites instructions font que ledit dispositif de traitement de données met en oeuvre un procédé de décodage selon l'une quelconque des revendications 1 à 7.