Brevet FR2863794A1 — publié le 20050617

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 = (vo,vl, ...,vn_1) (le symbole signifie par définition ). 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é 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, dit corps de Galois , 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. II 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é . Pour ce faire, le décodeur calcule d'abord le vecteur de syndromes d'erreurs s = H É rT = H É eT. 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 met alors en oeuvre un algorithme de correction destiné à estimer la valeur de l'erreur e; l'algorithme va ainsi fournir une valeur estimée ê de manière à ce que (r ê) soit un mot de code, qui constituera alors le mot de code associé. Habituellement, cette première étape est décomposée en deux sous-étapes: d'abord, on identifie dans le mot reçu quelles sont les composantes dont la valeur est erronée, puis on calcule la valeur corrigée de ces composantes. La seconde étape consiste simplement à inverser le procédé de codage. Dans la situation idéale où toutes les erreurs de transmission ont été corrigées, on retrouve ainsi les symboles d'information initiaux. 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 première de ces étapes, étant entendu que l'homme du métier est capable sans difficulté de mettre en uvre la seconde étape. Un algorithme de correction d'erreurs a pour tâche 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. La capacité d'un algorithme de correction à pouvoir proposer une correction d'un mot reçu est fidèlement représentée par la formule: 2tA, où t est le nombre de symboles erronés dans le mot reçu, et d est un entier strictement positif que nous appellerons le pouvoir de résolution de l'algorithme. Si la valeur de (2t) est inférieure ou égale au pouvoir de résolution, l'algorithme de correction sera capable de corriger le mot reçu. Si la valeur de (2t) est supérieure au pouvoir de résolution, l'algorithme pourra: - soit échouer purement et simplement dans sa tentative de correction, - soit être capable de proposer une correction du mot reçu; dans ce cas, si l'on accepte cette correction, on s'expose au risque qu'elle soit erronée, c'est-à-dire que le mot de code proposé ne soit pas, en fait, le mot envoyé, ce risque étant évidemment d'autant plus prononcé que (2t) est grand par rapport à A. Compte tenu des considérations ci-dessus concernant la distance minimale d du code, on dira que l'algorithme considéré est maximal Si A=d-1, et sub-maximal Si A 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 nécessairement égal à (q-1) ou un diviseur de (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(+i)j (0 5 i n -k-1, 0 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 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 25 les codes de Reed-Solomon. 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 Algebraic Geometric Codes , par J.H. van Lint, dans Coding Theory and Design Theory , -ère partie, IMA Volumes Math. Appl., volume 21, Springer- Verlag, Berlin, 1990). Ces codes sont construits à partir d'un ensemble de n couples (x, y) de symboles appartenant à un corps de Galois Fq choisi; cet 2863794 5 ensemble de couples est appelé ensemble de localisation ( locating set en anglais). 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 Pi (où j =1,..., n) formant une courbe algébrique . Par ailleurs, dans le cadre de la présente invention, on dira que l'ensemble des couples (x, y) ayant la même valeur de x constitue un agrégat . 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. Dans certains cas, les codes de géométrie algébrique 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 15 code de longueur 4096. On définit classiquement une matrice de parité pour un code de géométrie algébrique dit à un point de la manière suivante. A tout monôme h = X SY, où s et t sont des entiers positifs ou nuls, on associe un poids (voir détails plus bas). Si, pour un entier p >- 0, il existe au moins un monôme dont le poids est p, on dit que p est un poids réalisable . Soient pl Les codes de géométrie algébrique sont avantageux quant à leur distance minimale 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 intitulé On the Decoding of AlgebraicGeometric Codes , IEEE Trans. Inform. Theory, vol. 41 n 6, pages 1589 à 1614, novembre 1995). Il est à noter que pour ces algorithmes, on ne dispose le plus souvent que d'une borne inférieure sur leur pouvoir de résolution A, sauf dans le cas trivial d'un algorithme maximal de correction pour les codes de Reed-Solomon, appelé algorithme de Berlekamp-Massey , pour lequel le pouvoir de résolution est précisément connu et vaut A = n k. Un algorithme de décodage des codes de géométrie algébrique définis sur une courbe de genre non-nul, appelé algorithme de base , a été proposé par A.N. Skorobogatov et S.G. Vlà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). Selon cet algorithme: a) on construit une matrice des syndromes S, de dimension (n -k) x (n - k), dont chaque coefficient Su, où j est inférieur ou égal à une valeur frontière w(i) , est égal à une combinaison linéaire judicieusement choisie des éléments s,, (v =1,2,..., n - k) du syndrome s, les coefficients Ste au-delà de la frontière restant indéterminés; il est commodément prévu que l'ordre des lignes de cette matrice des syndromes S soit tel que la fonction w(i) est décroissante, c'est-à-dire que w(i) w(i +1) pour tout i =1,2,..., n - k -1; b) on considère le système d'équations linéaires fi El; Su =0, pourj= 1,2,...,w(f), (1) 25 où les inconnues 1, appartiennent au même alphabet de symboles que les éléments des mots de code, et où /3 est un entier compris entre 1 et (n - k) tel que le système admette une solution non-triviale (c'est-à-dire une solution où les coefficients ll ne sont pas tous nuls), et l'on détermine les valeurs de ces coefficients ll correspondant à la plus petite valeur possible de fi, que l'on notera 2; c) on calcule les racines du polynôme de localisation d'erreurs A(x,y) h1(x,y) , (2) l=1 ces racines comprenant tous les couples (x, y) correspondant à des positions du mot reçu pour lesquelles la composante en cette position a souffert d'une erreur de transmission; et d) on corrige les symboles erronés du mot reçu dont on connaît dès lors la position. L'algorithme de base garantit un pouvoir de résolution au moins égal à A=n-k--2g. Or la distance minimale d pour un code de géométrie algébrique est au moins égale à (n - k +1-g) . I I est donc clair que l'algorithme de base est sub-maximal , et cela d'autant plus que le genre g de la courbe algébrique est grand. Dans le but d'améliorer le pouvoir de résolution, Skorobogatov et Vlàdut ont proposé, dans le même article cité ci-dessus, une version modifiée de l'algorithme de base . Cet algorithme modifié présente un pouvoir de résolution au moins égal à o = n - k - g - s, où s est un paramètre dépendant de la courbe algébrique choisie, et pouvant d'ailleurs être quelquefois nul (c'est par exemple le cas pour les courbes algébriques dites hyperelliptiques ). On connaît également des algorithmes (qui peuvent être maximaux ou submaximaux selon la façon dont on les met en uvre) 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 s=- 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. Un autre exemple d'algorithme de décodage itératif a été divulgué par M. O'Sullivan dans l'article A Generalization of the Berlekamp-MasseySakata Algorithm (preprint 2001). Pour tout mot reçu L, on appelle idéal de Grôbner associé aux erreurs de transmission affectant ce mot, l'ensemble des polynômes de localisation d'erreurs définis plus haut. On peut engendrer cet idéal de Grôbner au moyen d'un ensemble fini de polynômes qui constitue ce que l'on appelle une base de Grôbner de l'idéal. L'algorithme de O'Sullivan que l'on vient de citer produit une telle base de Grôbner à partir d'une matrice S* obtenue en prolongeant la matrice S, c'est-à- dire en calculant la valeur de certains éléments S *u pour j supérieur à w(i). Ce prolongement est possible à chaque fois que le nombre d'erreurs dans le mot reçu est inférieur ou égal à (n k+1 g)l2. Lorsque le nombre d'erreurs dans le mot reçu est inférieur ou égal à (n k + 1 g)12, il faut en général connaître plus d'éléments de la matrice des syndromes que ceux obtenus à partir des composantes du vecteur de syndromes d'erreurs s, pour pouvoir corriger ces erreurs. Il est heureusement possible de calculer ces éléments de valeur inconnue par un procédé comprenant un certain nombre de décisions majoritaires , par exemple en utilisant l'algorithme de Feng-Rao . Cet algorithme, qui a essentiellement pour but de prolonger la matrice S en fournissant la valeur d'au plus g éléments inconnus par ligne de S, est divulgué dans l'article de G.-L. Feng et T.R.N. Rao intitulé Decoding Algebraic-Geometric Codes up to the Designed Minimum Distance (IEEE Trans. Inform. Theory, vol. 39, n 1, janvier 1993) ; on trouvera plus de détails sur cet algorithme plus bas. On notera que le calcul des éléments de valeur inconnue peut être soit effectué préalablement à l'algorithme de décodage (c'est normalement le cas pour l'algorithme de Sakata mentionné ci-dessus, qui utilise lui aussi la matrice prolongée S*), ou être intégré dans les étapes de l'algorithme de décodage (c'est le cas pour l'algorithme de O'Sullivan). Soit donc S* la matrice des syndromes ainsi prolongée , et considérons le système d'équations linéaires p EltS*11 =0, pour j=1,2,...,w*(,u) , où les valeurs des inconnues ll sont à trouver dans le même alphabet que les symboles des mots de code, et où ,u est tel que pour j =1,...,w* Cu) , S *i est connu, soit directement à partir des composantes du vecteur de syndromes, soit indirectement en mettant en oeuvre un algorithme de calcul des éléments de matrice inconnus (on aura évidemment noté la ressemblance entre cette équation (1*) et l'équation (1) utilisée dans l'algorithme de base ; en général, on constate que w * (.,) > w(2), autrement dit, la frontière est repoussée plus loin quand on compare S et S* ), Pour toute solution non-triviale du système (1*), c'est-à-dire une solution où les coefficients li ne sont pas tous nuls, le polynôme p A(x, y) = Il! h; (x, y) r=i est un polynôme localisateur d'erreurs. Considérons à présent le cas où le nombre d'erreurs est supérieur à (n k +1 - g)l2. Les algorithmes de décisions majoritaires , tels que l'algorithme de Feng-Rao, ne sont alors pas toujours capables de fournir une valeur adéquate aux éléments inconnus de S, et par conséquent, on ne peut dans ce cas mettre en oeuvre un algorithme de décodage utilisant les valeurs de ces éléments de matrice. De manière générale, le principe du décodage itératif (tel que dans les algorithmes cités en exemple ci-dessus) est le suivant. Chaque itération, sauf la dernière, d'un algorithme de décodage itératif fait appel à une sous-matrice de la matrice S* . Une telle itération fournit alors un certain nombre de polynômes qui sont, comme les véritables polynômes localisateurs d'erreurs de l'équation (2*), constitués d'une combinaison linéaire de monômes hi, mais dont il n'est pas certain que les racines communes incluent toutes les positions erronées du mot reçu r. Autrement dit, la qualité de polynômes localisateurs d'erreurs n'est garantie pour tous les polynômes obtenus par l'algorithme, que si le nombre d'erreurs est inférieur ou égal à (n k +1 g)/2 et si on a mené les itérations jusqu'à leur terme, ce qui requiert l'utilisation des éléments de matrice S* où j > w(i) . C'est pourquoi, selon l'état de l'art, est considérée comme incorrigible une erreur pour laquelle ces éléments de la matrice S* sont requis mais ne sont pas calculables. Nous proposons de généraliser, de façon naturelle, la notion d'algorithme itératif à la notion d'algorithme bi-phase . Un algorithme biphase sera défini, dans le cadre de la présente invention, comme étant un algorithme de décodage pour code de géométrie algébrique comprenant: - une première phase ne faisant appel, dans la matrice S* , qu'à sa sous-matrice S (obtenue directement à partir des composantes du vecteur de syndromes 2), pour produire un certain nombre de combinaisons linéaires de monômes h; que l'on appellera candidats-localisateurs de première phase , et - une seconde phase faisant appel à des éléments de la matrice S situés au-delà de la frontière w, pour produire finalement un certain nombre de combinaisons linéaires de monômes hi, qui, lorsque le nombre d'erreurs dans le mot reçu est inférieur ou égal à (n k +1 g)/2, sont de vrais polynômes localisateurs. On notera au passage que, lorsque le nombre d'erreurs est inférieur ou égal à (n k +1 2g)12, le candidat-localisateur de première phase donné en équation (2), qui correspond à la plus petite valeur de fi de l'équation (1), est un vrai polynôme localisateur (les autres candidatslocalisateurs de première phase n'étant alors pas toujours de vrais polynômes localisateurs). Cela étant, les auteurs de la présente invention ont découvert que, contrairement à ce que l'on pouvait penser de prime abord, il est en fait possible, dans certains cas favorables (voir ci-dessous), de trouver les positions erronées du mot reçu lorsque le nombre d'erreurs est supérieur à (n k + 1 g)/2, et ce, même s'il n'est pas possible de calculer tous les éléments de S* requis par un algorithme bi-phase pour effectuer cette correction. L'invention concerne donc, selon un premier aspect, un procédé de décodage d'un code de géométrie algébrique à un point de dimension k et de longueur n, dans lequel, afin d'identifier la position des erreurs dans un mot reçu, on définit la matrice des syndromes S, de dimension (n k) x (n k), dont les éléments Su de chaque ligne i sont calculés, pour j compris entre 1 et w(i) , où la frontière w est une fonction décroissante, à partir du syndrome s de ce mot reçu, ledit procédé étant remarquable en ce qu'il comporte les étapes suivantes: - on met en oeuvre un algorithme de décodage bi-phase appliqué à la matrice S, ce qui fournit un ensemble de polynômes candidats- localisateurs de première phase, et - on cherche dans cet ensemble de polynômes candidats-localisateurs de première phase s'il en existe un en X seulement, et en ce que, s'il existe un tel polynôme, on l'utilise comme polynôme localisateur en X. Par polynôme localisateur en X , on entend un polynôme en X dont les racines comprennent toutes les valeurs de x telles qu'il existe au moins une valeur de y pour laquelle le couple (x, y) correspond à une position erronée dans le mot reçu. En effet, les auteurs de la présente invention ont découvert que si l'on obtient par cette méthode un polynôme en X, alors ce polynôme est véritablement un polynôme localisateur, pourvu que le nombre d'agrégats (tels que définis ci-dessus) contenant au moins une position correspondant à une composante erronée soit inférieur ou égal à nX /2, où nX désigne le nombre de monômes h, constitués seulement d'une puissance de X. Dans le cas où le nombre d'agrégats contenant au moins une composante erronée est supérieur à nX /2, il n'est pas garanti que, si on obtient un polynôme localisateur en X, la localisation d'erreurs qui en résulte soit correcte. Mais on observera que, dans un tel cas, les procédés de décodage connus seraient également incapables de corriger les erreurs de transmission dans le mot reçu, pour autant que le nombre total d'erreurs est supérieur à (n k +1 g)/2. Selon des caractéristiques particulières, on poursuit le traitement du mot reçu avec des étapes d'un procédé de correction d'erreurs par agrégats, qui identifie les composantes erronées du mot reçu parmi les agrégats déterminés en calculant les racines dudit polynôme localisateur en X, et calcule une valeur estimée pour ces composantes. Par exemple, on pourra commodément mettre en oeuvre à cet effet le procédé de décodage divulgué dans la demande FR-0304767 au nom de CANON. Selon un second aspect, l'invention concerne divers dispositifs. Elle concerne ainsi, premièrement, un dispositif de correction d'erreurs pour le décodage d'un code de géométrie algébrique à un point de dimension k et de longueur n, dans lequel, afin d'identifier la position des erreurs dans un mot reçu, on définit la matrice des syndromes S, de dimension (n k) x (n k), dont les éléments S de chaque ligne i sont calculés, pour j compris entre 1 et w(i) , où la frontière w est une fonction décroissante, à partir du syndrome s de ce mot reçu. Ce dispositif de correction d'erreurs est remarquable en ce qu'il comprend en outre des moyens pour: mettre en oeuvre un algorithme de décodage bi-phase appliqué à la matrice S, ce qui fournit un ensemble de polynômes candidats- localisateurs de première phase, et - chercher dans cet ensemble de polynômes candidats-localisateurs de 25 première phase s'il en existe un en X seulement, ainsi que des moyens pour utiliser un tel polynôme, s'il existe, comme polynôme localisateur en X. Selon des caractéristiques particulières, le dispositif de correction d'erreurs comprend en outre un dispositif de correction d'erreurs par agrégats apte à poursuivre le traitement du mot reçu, ledit dispositif de correction d'erreurs par agrégats comprenant des moyens pour identifier les composantes erronées du mot reçu parmi les agrégats déterminés en calculant les racines dudit polynôme localisateur en X, et des moyens pour calculer une valeur estimée pour ces composantes. Les avantages de ces dispositifs de correction d'erreurs sont essentiellement les mêmes que ceux des procédés corrélatifs décrits succinctement ci-dessus. L'invention concerne aussi, deuxièmement, un décodeur comprenant: - au moins un dispositif de correction d'erreurs tel que décrit succinctement ci-dessus, et - au moins une unité de suppression de la redondance. L'invention vise également: - un appareil de réception de signaux numériques codés comprenant un décodeur tel que décrit succinctement ci-dessus, ainsi que 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, et au moins un moyen de lecture de ce disque dur, - un moyen de stockage de données inamovible comportant des instructions de code de programme informatique pour l'exécution des étapes de l'un quelconque des procédés 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 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 succinctement exposés ci-dessus. Les avantages offerts par ce décodeur, 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 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 utilisant un décodeur selon l'invention, - la figure 2 est une liste de monômes qui forment une base pour un espace vectoriel de fonctions à deux variablesassocié à un code de géométrie algébrique présenté ici comme exemple, - la figure 3 montre, pour un exemple numérique d'application du procédé selon l'invention, la sous-matrice comprenant les 17 premières lignes et les 17 premières colonnes de la matrice des syndromes, et - la figure 4 représente un appareil de réception de signaux numériques incorporant un décodeur selon l'invention. La figure 1 est un schéma synoptique d'un système de transmission d'informations utilisant un codage et dé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 alphabet (par exemple des octets de bits), 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 amplitude complexe). Ensuite, ces symboles de modulation sont transmis à un émetteur ou à un enregistreur 104, qui insère les symboles dans un canal de transmission. Ce canal peut être constitué par exemple d'une émission filaire ou non-filaire telle qu'un signal radio, ou par un stockage sur un support adapté tel qu'un DVD ou une bande magnétique. Cette transmission parvient à un récepteur ou à un lecteur 105, après avoir été affectée par un bruit de transmission dont l'effet est de modifier ou d'effacer, aléatoirement, certains des symboles de modulation. Le récepteur ou lecteur 105 transmet alors ces symboles au démodulateur 106, qui les transforme en symboles de l'alphabet mentionné précédemment, dont chaque ensemble constitue un mot reçu . Le mot reçu est ensuite traité par 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 15 un décodeur 10. On va à présent illustrer le procédé de correction d'erreurs 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. II 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 de dimension 44 et de longueur 60 défini comme suit. L'alphabet des symboles est constitué par les 16 éléments du corps de Galois Fi6. On considère la courbe algébrique de genre g = 6 constituée par l'ensemble des solutions (x, y) de l'équation à deux inconnues Y4 +Y+XS = 0 (3) sur F16. Ces solutions, qui sont au nombre de 64, constituent les points finis de la courbe (la courbe contient également un point à l'infini noté P..). Pour former l'ensemble de localisation, on éliminera (par commodité) de cet ensemble de 64 point finis qui sont solutions de l'équation (3) les quatre points pour lesquels la valeur de x ou de y est nulle. Chaque point Pi de l'ensemble de localisation sert à identifier le j -è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 (il s'agit donc d'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 h1 = X 5Ys, où s est un entier positif ou nul, t est un entier compris entre 0 et 3, 4s + 5t m, et i = 1,..., n - k. Cette quantité p(hi) = 4s + 5t est habituellement appelée le poids du monôme h1. Prenons par exemple: m = 21; on obtient alors un ensemble de monômes h1 (i = 1,...,16), dont la liste est donnée en figure 2. On constate ici que nX = 6. En effet, il existe six de ces monômes h1 qui sont égaux à une puissance de X, à savoir les monômes: h1 =1, h2 =X, h4 =X2, h.7 =X3, h1 = X4, et h15 =X5. Enfin, la matrice de parité H du code est définie de la manière suivante: l'élément en ligne i et colonne j de cette matrice est égal à la valeur prise par le monôme h1 pour les coordonnées du point Pi de la courbe algébrique. Ainsi, n k = 16, et donc k = 44. La distance minimale d de ce code est au moins égale à n - k +1-g =11. Pour cette valeur de la distance minimale, on peut corriger INT[(11-1)/2] = 5 symboles ayant subi une erreur de transmission. Le code ayant été choisi, on va montrer à présent comment on construit la matrice des syndromes S. Considérons les 16 x 16 produits d'une fonction h1 quelconque par une fonction h. quelconque, ces produits étant définis modulo l'équation de la courbe algébrique donnée par l'équation (3). Certains de ces produits sont égaux à un élément de l'espace vectoriel L(m P.) (autrement dit, le poids de chacun de ces produits est inférieur ou égal à m = 21). Par exemple: h3Éh4=YÉX2=YX2=h8, h6Éh6=Y2.Y2=Y4 =X5+ Y=h15+h3. Dans de tels cas, on écrit n-k hi-hi _12,,h,,, v=1 et l'élément de matrice Su est défini par n-k Su.. _ (4) v=1 où, rappelons-le, les s désignent les (n k) composantes du vecteur de syndromes d'erreurs s. L'ordre des fonctions hi a été choisi de manière à ce que, pour toute valeur de i, le produit de hi par hi appartienne à L(m P.) pour toutes les valeurs de j allant de 1 à une certaine limite w(i) , où la fonction w(i) est décroissante. En revanche, certains produits h1- hi n'appartiennent pas à L(m P.). C'est le cas par exemple de h6 É h7 = Y2X3. Dans de tels cas, on ne connaît pas a priori la valeur de l'élément Ste correspondant. Les seuls éléments de la matrice S obtenus jusqu'ici sont donc ceux pour lesquels j est inférieur ou égal à 14/(i). Cette fonction w représente donc une frontière entre les éléments calculés selon l'équation (4), qui remplissent le coin supérieur gauche de la matrice S, et les éléments encore indéterminés de cette matrice. On peut alors faire appel, par exemple, à l'algorithme de Feng-Rao, qui opère de la façon suivante. Pour toute position indéterminée de la matrice des syndromes, on recherche s'il existe une valeur (symbole de Fq) qui minimise le rang de la sous-matrice de S* sous-tendue par cette position; si on en trouve une, on dit que cette position possède le droit de vote et que cette valeur est la valeur choisie par cette position; on considère alors, pour tout poids p fixé, toutes les positions (i, j) de S* ayant le droit de vote et telles que p(hi)+p(hi)=p; on détermine, parmi ces positions, quelle est, modulo l'équation de la courbe algébrique, la valeur choisie le plus souvent (d'où l'expression décision majoritaire ) ; cette valeur est dite élue , et on l'utilise pour calculer, modulo l'équation de la courbe algébrique, les valeurs de toutes les positions de S* de poids p, que ces positions possèdent ou non le droit de vote. Cette procédure doit se faire par étapes successives définies par les valeurs croissantes du poids p, sans quoi certains éléments d'une sousmatrice de S* sous-tendue par un élément que l'on cherche à déterminer et autres que cet élément à déterminer, pourraient être encore indéterminés. (En pratique, la mise en oeuvre de l'algorithme de Feng-Rao se simplifie lorsque il est inclus dans l'algorithme de recherche des polynômes localisateurs d'erreur, comme c'est par exemple le cas dans l'algorithme de O'Sullivan.) On va maintenant présenter un exemple numérique d'application de l'invention au code de longueur 60 et de dimension 44 sur F16 introduit ci-dessus. Pour cela, choisissons comme élément primitif de F16 une racine a de l'équation Z4+Z+1=0 à coefficients dans F2. Supposons alors que le mot reçu r produise le vecteur de syndromes d'erreurs (à n k = 16 composantes) suivant: s=[a7, a2, a10, a3, 1, a6, 1, a14, 1, a2, a, a5, a11, a14, a7, 0] . La matrice des syndromes S correspondant à ce syndrome s est représentée en figure 3. Le lecteur pourra vérifier que, dans ce cas, on ne peut calculer aucun des éléments inconnus de la matrice S. Un algorithme de décodage classique, comme par exemple l'algorithme de O'Sullivan, décréterait alors l'impossibilité de corriger ce mot r. Appliquons alors à la matrice S, conformément à l'invention, un algorithme de décodage bi-phase classique. Considérons par exemple un algorithme de type itératif: on obtient après les 16 premières itérations (qui ne font appel qu'aux éléments connus de la matrice S) les quatre polynômes suivants: Ci a9+a11X+a7X2+X3 (,u=7), C2 =1+a6Y+X2+a5XY+X2Y (, u=8), C3 = a13X + a14X 2 + a3X 2Y + XY2 (,u = 9), et C4=a4X+a10X2+a2XY+ a8X2Y+a13Y+a3XY2+Y3 (,ll=10), conformément à l'équation (2*). Ces polynômes sont des candidats-localisateurs au sens de l'invention car, à ce stade de l'algorithme de décodage, il est impossible de mettre en' oeuvre une 17ème itération, puisque celle-ci devrait faire appel à un élément de valeur inconnue de la matrice des syndromes. On remarque alors que l'un des candidats localisateurs, à savoir CI, est un polynôme en X seulement (c'est-à-dire dans lequel la variable Y n'apparaît pas). Ce polynôme étant de degré 3, le nombre d'agrégats entachés d'erreur est égal à 3, nombre qui se trouve être égal à nX l2. On peut donc utiliser Cl comme localisateur d'erreurs en agrégats, et mettre en oeuvre un procédé de correction des valeurs erronées travaillant lui aussi par agrégats, comme celui de FR-0304767. Cette mise en oeuvre permet de déterminer que les erreurs de transmission ê(x,y) dans le mot reçu r sont les suivantes: x 1 a3 ab 1 a3 a6 1 a3 a6 y a a2 a4 a4 a8 a a8 a4 a2 2(x, y) a3 a5 1 a14 a12 a2 a8 a7 a3 Ainsi, grâce à l'invention, on aura été capable de corriger 9 erreurs, réparties en trois agrégats, en utilisant comme étape localisatrice une partie d'un algorithme de décodage classiquement destiné à utiliser le calcul des syndromes inconnus. Le schéma synoptique de la figure 4 représente un appareil de réception de signaux numériques 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 4 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 15 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, 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, - 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 25 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 30 conservent: - le programme de fonctionnement de l'unité centrale de traitement 700, dans un registre programme , - la longueur de chaque mot de code dans un registre n , - le nombre de symboles d'information dans chaque mot de code, dans un registre k , - la liste des valeurs de w(i) pour 1 i 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 pourrait par exemple ê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 d'un code de géométrie algébrique à un point de dimension k et de longueur n, dans lequel, afin d'identifier la position des erreurs dans un mot reçu, on définit la matrice des syndromes S, de dimension (n k) x (n k), dont les éléments Su de chaque ligne i sont calculés, pour j compris entre 1 et w(i) , où la frontière w est une fonction décroissante, à partir du syndrome s de ce mot reçu, ledit procédé étant caractérisé en ce qu'il comporte les étapes suivantes: - on met en oeuvre un algorithme de décodage bi-phase appliqué à la matrice S, ce qui fournit un ensemble de polynômes dits candidats- localisateurs de première phase , et - on cherche dans cet ensemble de polynômes candidats-localisateurs de première phase s'il en existe un en X seulement, et en ce que, s'il existe un tel polynôme, on l'utilise comme polynôme localisateur en X. 2. Procédé de décodage selon la revendication 1, caractérisé en ce qu'il comprend en outre des étapes d'un procédé de correction d'erreurs par agrégats, qui identifie les composantes erronées du mot reçu parmi les agrégats déterminés en calculant les racines dudit polynôme localisateur en X, et calcule une valeur estimée pour.ces composantes. 3. Procédé de décodage selon la revendication 1 ou la revendication 2, caractérisé en ce que ledit algorithme de décodage bi-phase est un algorithme itératif. 4. Dispositif de correction d'erreurs (107) pour le décodage d'un code de géométrie algébrique à un point de dimension k et de longueur n, dans lequel, afin d'identifier la position des erreurs dans un mot reçu, on définit la matrice des syndromes S, de dimension (n k) x (n k), dont les éléments Si./ de chaque ligne i sont calculés, pour j compris entre 1 et w(i) , où la frontière 30 w est une fonction décroissante, à partir du syndrome s de ce mot reçu, ledit dispositif de correction d'erreurs (107) étant caractérisé en ce qu'il comprend en outre des moyens pour: - mettre en oeuvre un algorithme de décodage bi-phase appliqué à la matrice S, ce qui fournit un ensemble de polynômes dits candidats- localisateurs 5 de première phase , et - chercher dans cet ensemble de polynômes candidats-localisateurs de première phase s'il en existe un en X seulement, ainsi que des moyens pour utiliser un tel polynôme, s'il existe, comme polynôme localisateur en X. 5. Dispositif de correction d'erreurs selon la revendication 4, caractérisé en ce qu'il comprend en outre un dispositif de correction d'erreurs par agrégats apte à poursuivre le traitement du mot reçu, ledit dispositif de correction d'erreurs par agrégats comprenant des moyens pour identifier les composantes erronées du mot reçu parmi les agrégats déterminés en calculant les racines dudit polynôme localisateur en X, et des moyens pour calculer une valeur estimée pour ces composantes. 6. Dispositif de correction d'erreurs selon la revendication 4 ou la revendication 5, caractérisé en ce que ledit algorithme de décodage biphase est un algorithme itératif. 7. Décodeur (10), caractérisé en ce qu'il comprend: - au moins un dispositif de correction d'erreurs selon la revendication 5 ou la revendication 6, et - au moins une unité de suppression de la redondance (108). 8. Appareil de réception de signaux numériques codés (70), caractérisé en ce qu'il comprend un décodeur selon la revendication 7, et en ce qu'il comporte des moyens (106) pour démoduler lesdits signaux numériques codés. 9. Système informatique (70), caractérisé en ce qu'il comprend un décodeur selon la revendication 7, et en ce qu'il comprend en outre: 30 - au moins un disque dur, et - au moins un moyen de lecture (105) de ce disque dur. 10. 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é selon l'une quelconque des revendications 1 à 3. 11. 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é selon l'une quelconque des revendications 1 à 3. 12. 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é selon l'une quelconque des revendications 1 à 3.