FR2838580A1 - Procedes et dispositifs de faible cout pour le decodage de codes produits - Google Patents

Procedes et dispositifs de faible cout pour le decodage de codes produits Download PDF

Info

Publication number
FR2838580A1
FR2838580A1 FR0204646A FR0204646A FR2838580A1 FR 2838580 A1 FR2838580 A1 FR 2838580A1 FR 0204646 A FR0204646 A FR 0204646A FR 0204646 A FR0204646 A FR 0204646A FR 2838580 A1 FR2838580 A1 FR 2838580A1
Authority
FR
France
Prior art keywords
algorithm
code
correction
symbols
decoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR0204646A
Other languages
English (en)
Other versions
FR2838580B1 (fr
Inventor
Frederic Lehobey
Philippe Piret
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to FR0204646A priority Critical patent/FR2838580B1/fr
Priority to US10/408,458 priority patent/US7120850B2/en
Priority to JP2003109300A priority patent/JP3703466B2/ja
Publication of FR2838580A1 publication Critical patent/FR2838580A1/fr
Application granted granted Critical
Publication of FR2838580B1 publication Critical patent/FR2838580B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/132Algebraic geometric codes, e.g. Goppa codes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1806Pulse code modulation systems for audio signals
    • G11B20/1813Pulse code modulation systems for audio signals by adding special bits or symbols to the coded information
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2927Decoding strategies
    • H03M13/293Decoding strategies with erasure setting

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Discrete Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

La présente invention concerne un procédé de décodage de codes produits, dans lequel les symboles de chaque mot de code peuvent être placés dans un tableau comportant n2 lignes et n1 colonnes, de telle manière que les symboles constituant chaque ligne forment un mot légal de longueur n1 selon un premier code composant pouvant être décodé au moyen d'un algorithme de correction avec effacements A1 , et les symboles constituant chaque colonne forment un mot légal de longueur n2 selon un second code composant pouvant être décodé au moyen d'un algorithme de correction avec effacements A2 . Selon l'invention, on n'accepte la correction d'une ligne ou colonne que lorsqu'il s'avère après traitement que le nombre de symboles dont la valeur a été changée ou déterminée est raisonnablement petit.L'invention concerne également les dispositifs et appareils destinés à mettre en oeuvre ce procédé.Application notamment aux codes de géométrie algébrique.

Description

condensateur (C3').
La présente invention concerne les systèmes de communication dans lesquels, afin d'améliorer la fidélité de la transmission, les donnces à transmettre sont soumises à 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 _uvre ce procédé. On rappelle que le codage dit " de canal " consiste, quand on forme les " mots de code " envoyés au récepteur, à introduire une certaine redondance dans les données à transmettre. Plus précisément, on transmet, au moyen de chaque mot de code, un nombre prédéterminé k de symboles d'information choisis au sein d'un " alphabet " prédéterminé de taille finie; on ajoute à ces k symboles d'information un nombre (n-k) de symboles dits de " parité ", prélevés dans le même alphabet, de manière à former des mots de code de longueur n; I'ensemble des règles de calcul des symboles de parité en fonction des symboles d'information définit un " code ", ou " procédé de
codage ", de paramètres (n,k).
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. 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 analyse d'abord le mot reçu pour vérifier s'il appartient au code. Si c'est le cas, on supposera qu'il n'y a pas eu d'erreur de transmission, et ledit " mot de code associé " sera simplement identique au mot reçu. Si ce n'est pas le cas, on en déduit que certains symboles dans ie mot reçu sont erronés, et l'on met alors en _uvre un algorithme de correction destiné à remplacer certains des symboles reçus par d'autres symboles du même alphabet, de manière à ce que le résultat soit un mot de code, qui
constituera alors ledit " mot de code associé ".
La seconde étape consiste simplement à inverser le procédé de codage, c'est-à-dire à retirer les symboles de redondance du " mot de code
associé " pour retrouver les données initiales.
L'invention concerne plus particulièrement la première de ces deux
étapes et les conditions de mise en _uvre desUits algorithmes de correction.
Ceux-ci ont habituellement pour rôle 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. Chaque code offre donc une capacité de correction d'erreurs qui est limitée par la distance de Hamming la plus petite entre deux mots quelconques de ce code, que l'on appelle la " distance minimale >' du code d; plus précisément, quand l'algorithme de correction choisi est chargé de trouver la position des erreurs éventuelles dans un mot reçu quelconque, et de fournir un symbole de remplacement pour chacune de ces positions, on est sûr de pouvoir corriger au mieux INT[(d-1)/2] erreurs pour un code de distance minimale d (< INT " désigne la partie entière); si le mot reçu contient un nombre d'erreurs strictement supérieur à INT[(d-1)/2], I'algorithme sera dans certains cas capable de proposer une correction, mais il
sera alors évidemment très douteux que cette correction soit la bonne, c'est-à-
dire que le mot de code associé soit bien le mot de code envoyé par l'émetteur.
Parmi les procédés de codage utilisés de façon classique, par exemple dans les enregistrements de CD (" compacts discs ") et de DVD (" digital video discs "), certains sont des " codes produits ". Dans ces procédés, les symboles de chaque mot de code peuvent être placés dans un tableau comportant n lignes et n2 colonnes, de telle manière que les symboles constituant chaque ligne forment un mot appartenant à un premier code " composant " (n',k), et les symboles constituant chaque colonne forment un mot appartenant à un second code composant (n2,k2). On peut aisément se rendre compte que de tels codes produits sont avantageux: par exemple, si l'on constate que dans un mot reçu, une certaine ligne n'appartient pas au premier code et une certaine colonne n'appartient pas au second code, on en daduit immédiatement, dans l'hypothèse o un seul symbole reçu est entaché d'erreur, que ce symbole erroné est situé au croisement de ladite ligne et de ladite colonne. Un autre avantage important est que l'on peut parvenir à corriger toutes les erreurs du mot reçu même si certaines de ses lignes sont initialement incorrigibles par l'algorithme associé au premier code, eVou certaines de ses colon nes sont in itialement incorrigibles par l'algorithme associé au second code: en effet, la correction itérative des lignes l'une après l'autre, puis des colonnes l'une après l'autre, et à nouveau des lignes, et ainsi de suite tant que de nécessité, peut très bien parvenir à réduire progressivement le nombre d'erreurs, de sorte que, à un certain stade, ce nombre tombera dans chaque ligne en deçà de la capacité de correction du premier algorithme et dans
chaque colonne en deçà de la capacité de correction du second algorithme.
Les brevets US-6,047,395 et US-6,138,263, par exemple, divulguent des procédés de décodage de code produit. Ces procédés comprennent une étape consistant, lorsque le premier (resp. second) algorithme est incapable de proposer une correction pour une ligne (resp. colonne) considérée, à " effacer " toute ladite ligne (resp. colonne): cela signifie que, lorsque l'on cherche ensuite à corriger les colonnes (resp. Iignes), on signale au second (resp. premier) algorithme les positions dont les symboles ont été " effacés ". En effet, de manière générale, quand un algorithme doit corriger un mot (dans le cas présent, une ligne ou une colonne), le fait de conna^'tre à l'avance les positions contenant d es sym boles douteux facil ite considéra b leme nt la tâch e de l'algorithme; plus précisément, on sait qu'un algorithme apte à prendre en compte cette information possède, si on ne lui soumet que des mots comportant des effacements, 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. Ces procédés de décodage de codes produits avec effacement des lignes et colonnes incorrigibles permettent donc, d'une part, de tolérer un plus grand nombre d'erreurs de transmission, et
d'autre part d'accélérer la procédure de correction de ces erreurs.
Bien que de tels procédés de décodage possèdent des avantages certains, ils ont pour inconvénient de provoquer un taux relativement élevé de fausses corrections. En effet, à chaque fois qu'on efface une ligne ou une colonne, toute information sur le mot envoyé qui pouvait subsister dans cette ligne ou cette colonne en dépit des erreurs de transmission que cette ligne ou colonne a subies, est évidemment perdue. Par conséquent, si l'on veut néanmoins aboutir à une correction effective de ce mot, il est nécessaire de disposer d'un nombre sufffisant de symboles fiables dans les positions non effacées du tableau. Or le fait d'accepter la " correction " fournie par les algorithmes à chaque fois qu'ils sont capables de fournir une " correction " signifie que l'on va souvent, lorsque le nombre d'erreurs dans une ligne ou une colonne soumise à l'algorithme de ligne ou de colonne est relativement élevé, inscrire une nouvelle ligne ou colonne qui est en fait entachée d'erreurs (sans que l'on s'en soit rendu compte), du fait que l'algorithme a été en mesure de proposer un mot apparemment corrigé en modifiant un nombre relativement faible de symboles, dont l'un au moins était correct. On va alors engendrer un nombre croissant de symboles faux au cours des étapes ultérieures de " correction " de ce mot, et aboutir généralement, dans ces circonstances, à un
" mot de code associé " lourdement erroné.
- Afin de résoudre ce problème, I'invention concerne, selon un premier aspect, un procédé de décodage d'un code produit, dans lequel les symboles de chaque mot de code peuvent étre placés dans un tableau comportant n2 lignes et n colonnes, de telle manière que les symboles constituant chaque ligne forment un mot légal de longueur n selon un premier code composant pouvant étre décodé au moyen d'un algorithme de correction avec effacements A, et les symboles constituant chaque colonne forment un mot légal de longueur n2 selon un second code composant pouvant être décodé au moyen d'un algorithme de correction avec effacements A2, ledit procédé étant remarquable en ce qu'il comprend une succession d'étapes principales que l'on met en ceuvre jusqu'à ce que la correction du mot reçu soit complète, chacune de ces étapes consistant à traiter soit une ligne soit une colonne dudit tableau dans un ordre prédéterminé, et en ce que, pour traiter une ligne / ( 1 < < n2): a) on applique l'algorith me A à lad ite ligne i en tenant compte des T. positions effacées (le cas échéant), b) si l'algorithme A est incapable de fournir une correction, on efface tous les symboles de cette ligne, c) si l'algorithme A est capable de proposer une correction, on compte le nombre de symboles ti dont la valeur a été changée au cours de l'étape a), puis l'on calcule la valeur de (2ti + Ti) et, - Si (2ti + Ti) < d*4, o d*4 est un entier positif prédéterminé, on accepte ladite correction, - Si (2ti + Ti) > d*4, on efface tous les symboles de cette ligne, et en ce que, pour traiter une colonne j (1 s j < n): d) on applique l'algorithme A2 à ladite colonne j en tenant compte des T| positions effacées (le cas échéant), e) si l'algorithme A2 est incapable de fournir une correction, on efface tous les symboles de cette colonne, f) si l'algorithme A2 est capable de proposer une correction, on compte le nombre de symboles t2i dont la valeur a été changée au cours de l'étape d), puis l'on calcule la valeur de (2t2i + T2i) et, - si (2tl + T2i) < d*2, o d*2 est un entier positif prédéterminé, on accepte ladite correction,
- Si (2t2i + T2i) > d*2, on efface tous les symboles de cette colonne.
En effet, les auteurs de la présente invention ont réalisé que, lorsque l'on cherche à estimer si une correction proposée par un algorithme de ligne ou de colonne a de bonnes chances d'être effective (au lieu d'être une fausse correction), la quantité naturelle à considérer est le nombre (2t + I), o T désigne le nombre d'effacements dans la ligne ou la colonne à corriger, et t le nombre de symboles dans cette ligne ou colonne qui ont été modifiés par l'algorithme (et dont il ne savait pas à l'avance qu'ils devaient être corrigés, c'est-à-dire qui ne se trouvaient pas à des positions effacées). Selon l'invention, on n'accepte la correction d'une ligne ou colonne que lorsqu'il s'avère après traitement que le nombre de symboles dont la valeur a été changée ou déterminée est raisonnabiement petit, de sorte que l'algorithme n'a pas été poussé au- delà de ses capacités réelles et la correction proposée est fiable, le paramètre d* jouant donc le rôle de " limite de fiabilité ". Ainsi, on tire parti des avantages susmention nés de la technique du décodage de cod es prod uits avec effacements, mais en outre, grâce à l'invention, on réduit considérablement le
taux de corrections erronées.
On notera que le nombre f ne concidera pas toujours avec le nombre réel de symboles erronés (c'est-à-dire, différents de ceux transmis) dans la ligne ou colonne considérée: en effet, il pourra se produire occasionnellement que l'algorithme propose une ligne ou colonne << corrigée " qui est en fait erronée, en changeant la valeur de symboles qui étaient en fait corrects, eVou en conservant des symboles erronés qu'il n'a pas repérés à
cette étape du décodage.
Ainsi, selon la présente invention, on considère que la capacité d'un algorithme de correction de pouvoir proposer une correction d'un mot reçu dans tous les cas (c'est-à-dire quel que soit ce mot reçu), est fidèlement représentée par la formule: (2t +) ' A, o A est un entier strictement positif que nous appellerons le " pouvoir de résolution " de l'algorith me (u n algorith me de correction d'erreu rs doit notamment résoudre un certain nombre d'équations résultant des " syndromes d'erreurs "). Si la valeur de (2t +) est supérieure à ce pouvoir de résolution A, I'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 présentées en introduction concernant la distance minimale d du code auquel s'applique cet algorithme, on dira que l'algorithme considéré est " maximal " si = d-1, et " sub-maximal " si
< d-1.
Selon une caractéristique préférentielle de l'invention, I'algorithme A associé au code de ligne eVou l'algoritUme A2 associé au code de colonne est un algorithme sub-maximal (quand il en existe un). Cette caractéristique est particulièrement avantageuse dans le cas o l'on connaAtt, pour le même code, à la fois un algorithme maximal, ou seulement " légèrement sub-maximal " (A
proche de (d-1) tout en lui étant inférieur), et un algorithme < nettement sub-
maximal >> (A très inférieur à (d-1)), ce dernier étant plus rapide eVou plus simple d'exécution que le premier. Si l'on choisit alors l'algorithme sub-maximal avec les effacements selon l'invention au lieu de l'algorithme maximal sans effacements, le décodage gagnera en rapidité eVou en simplicité de mise en
_uvre, sans pour autant perdre significativement en matière de fiabilité, c'est-à-
dire sans accroissement significatif du taux de corrections erronées des mots reçus. En effet, les échecs de correction de l'algorithme " nettement sub maximal " ne sont, dans le cadre du décodage d'un code produit selon l'invention, pas synonymes de perte totale d'information: les effacements constituent en quelque sorte une " information douce " consistant à indiquer à l'algorithme, en vue des étapes ultérieures de traitement du mot, quelles positions dans ce mot sont moins fiables que les autres; ainsi, cet algorithme peut, en tirant parti de cette " information douce >>, compenser son infériorité en termes de performances par rapport à un algorithme plus complexe, et donc devenir très avantageux, justement du fait de sa relative simplicité de mise en _uvre. Avant de mettre en _uvre l'invention dans une application particulière, il est recommandé d'effectuer des tests pour déterminer la meilleure valeur possible de la limite de fiabilité d*. A cet égard, ia valeur du pouvoir de résolution pourra utilement servir de référence. De manière générale, on distinguera deux situations: - soit l'algorithme choisi est maximal, ou seulement << légèrement sub maximal ": d* sera alors de préférence assez inférieur à A; - soit l'algorithme choisi est " nettement sub-maximal ": d* sera alors de préférence égal, ou méme légèrement supérieur, à A. Selon des caractéristiques particulières, on fait varier la valeur de d* et/ou de d*2 au cours du décodage d'un mot reçu. De préférence, on fera cro^'tre progressivement ces valeurs pour bénéficier du fait que la procébure de décodage corrige progressivement les erreurs contenues dans le mot reçu, et que, par conséquent, il y a de moins en moins de risque qu'une correction
proposée par l'algorithme soit erronée.
Les brevets US-6,047,395 et US-6,138,263 susmentionnés visent notamment des applications dans lesquelles le code de ligne et le code de colonne sont tous deux des " codes de Reed-Solomon ". Les codes de Reed Solomon sont très efficaces, mais deviennent lourds à manier quand la taille de l'alphabet dépasse 256; pour un code produit construit sur la base de deux tels codes de Reed-Solomon, on obtient donc, raisonnablement, une longueur n
égale au plus à 2562, soit 65536.
Or dans les supports d'information modernes, on cherche à accro^tre la densité d'information. De ce fait, quand un tel support est affecté par un défaut physique tei qu'une éraflure, un nombre important de symboles d'information peut étre rendu illisible. On peut toutefois remédier à ce problème en utilisant des mots de code de très grande longueur. C'est pourquoi on a cherché à construire des codes offrant de manière naturelle une plus grande longueur que les codes de Reed-Solomon, et l'on peut construire, en
composant de tels codes, des codes produits de très grande longueur.
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 Jheory and
Design Theory", 1ère partie, IMA Volumes Math. Appl., volume 21, Springer-
Verlag, Berlin, 1990). Ces codes sont construits à partir de courbes algébriques définies sur un alphabet à q éléments structuré en corps de Galois. 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. Les codes de géométrie algébrique permettent d'atteindre une longueur égale à (q+2g5), qui peut être très élevée; par exemple, avec deux codes composants possédant chacun une taille d'alphabet égale à 256 et un genre égal à 120, on
obtient des mots de code produit de longueur 16 777 216.
Selon des caractéristiques particulières de l'invention7 le code de
ligne et/ou le code de colonne est un code de géométrie algébrique.
Les codes de géométrie algébrique sont, comme on l'a dit, avantageux quant à la longueur des mots de code, mais ils présentent l'inconvénient de requérir (en tous cas dans l'état actuel des connaissances) des algorithmes de décodage assez complexes, et donc assez coûteux en termes d'équipements (logiciel eVou 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.
Dans le cas o au moins l'un des deux codes composants d'un code produit est un code de géométrie algébrique, on pourra donc avantageusement appliquer la présente invention aux algorithmes de correction avec effacements qui ont été conçus pour de tels codes (voir par exemple l'article de Tom H0hoidt and Ruud Pellikaan intitulé " On the Decoding of Algebraic-Geomemc Codes ",
IEEE Trans. Inform. Theory, vol. 41 n 6, pages 1589 à 1614, novembre 1995).
Il est à noter que pour ces algorithmes, on ne dispose que d'une borne inférieure de leur pouvoir de résolution A, sauf dans le cas < trivial " de l'algorithme maximal de correction des codes de Reed-Solomon (appelé " algorithme de Berlekamp-Massey "), pour lequel le pouvoir de résolution est précisément connu et vaut = n - k. Par exemple, on pourra appliquer l'invention à l'algorithme dit " de Feng-Rao ", également appelé algorithme " de vote majoritaire ", pour lequel une valeur de sécurité du pouvoir de résolution est A=-k-g. On pourra également utiliser l'algoritUme dit " de base " (voir l'article de A.N. Skorobogatov et S.G. Vladu,t intitulé " On the Decoding of Algebraic-Geometric codes ", IEEE Trans. Inform. Theory, vol. 36 n 5, pages 1051 à 1060, novembre 1990), pour lequel une valeur de sécurité
du pouvoir de résolution est A = n - k - 2g.
Il est à noter que, pour la correction d'un code de géométrie algébrique qui n'est pas un composant de produit direct, cet algorithme " de
base " est plus simple, mais moins performant, que l'algorithme " de Feng-
Rao ". En revanche, dans le cadre de la présente invention, c'est en fait
l'algorithme de base qui est préféré, pour les raisons expliquées cidessus.
De plus, on pourra avantageusement combiner l'utilisation de l'un q uelconq ue de ces algorith mes de décod age d es cod es de géométrie algébrique avec des améliorations algorithmiques connues, telles que celle divulguée par le brevet US-6,138,263 susmentionné et qui concerne la façon de procéder en début de correction d'un mot reçu ayant subi une rafale d'erreurs, ou telles que " I'accélération de Berlekamp-Massey- Sakata " (voir les articles de S. Sakata dans J. Symbolic Computing, vol. 5, pages 321 à 337, 1988, et
dans Informat. Comput., vol. 84, pages 207 à 239, 1990).
U n autre exemple d'application avantageuse de l' invention est celu i des codes produits dans lesquels au moins l'un des codes composants est un " code de géométrie algébrique partiel ", tel que décrit dans l'article " Partlal Geometric Codes " de O. Pretzel, IEEE Trans. Inform. Theory, vol. 45 n 7, pages 2506 à 2512, 1999). Il s'agit de codes définis au moyen de courbes dont le genre n'est pas précisément connu, mais pour lesquels il existe des algorithmes de décodage " de base " et " de vote majoritaire " analogues à
ceux mentionnés ci-dessus.
Seion un autre de ses aspects, I'invention concerne divers dispositifs. Elle concerne ainsi, premièrement, un dispositif de correction d'erreurs, ledit dispositif étant remarquable en ce qu'il comporte des moyens pour mettre en _uvre l'un quelconque des procédés de décodage tels que
décrits succinctement ci-dessus.
L'invention concerne aussi, deuxièmement, un décodeur comportant: - 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 cidessus, ainsi que des moyens pour recevoir lesdits signaux numériques codés, - 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 _uvre l'un des procédés succinctement exposés ci-dessus.
Les avantages offerts par ces dispositifs, moyens de stockage de données et programmes 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 apparatront à la lecture
de la description détaillée ci-dessous de modes particuliers de réalisation,
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 util isant u n cod age de canal selon l'i nvention, - - la figure 2 est un organigramme représentant les étapes principales d'un procédé de correction d'erreurs dans un mot reçu, - la figure 3a est un organigramme représentant les étapes principales d'un procédé de tentative de correction d'erreurs, ce procédé faisant partie d'une étape du procédé illustré sur la figure 2, - la figure 3b est un organigramme représentant les étapes principales d'un procédé de tentative de correction d'erreurs, ce procédé faisant partie d'une autre étape du procédé illustré sur la figure 2, - les figures 4a à 6b illustrent un exemple numérique de mise en _uvre du procédé illustré sur la flgure 2, et - la figure 7 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 quadruplets de bits), et transmet ces symboles à une unité de stockage 101, qui accumule les
symboles de façon à former des ensembles contenant chacun k k2 symboles.
Ensuite, chacun de ces ensembles est transmis par l'unité de stockage 101 à un codeur 102 qui y ajoute (n n2- k' k2) symboles de redondance, de manière à construire un mot du code produit dans lequel chaque ligne est un mot de longueur n appartenant à un premier code composant, et chaque colonne est un mot de longueur n2 appartenant à un second code composant
(éventuellement identique au premier code composant).
Les mots de code produit ainsi formés sont ensuite transmis à un modulateur 103, qui associe à chaque symbole du mot de code produit 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é par un " bruit de transmission " dont l'effet est de
modifier ou d'effacer, aléstoirement, 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 _uvre un procédé de décodage selon l'invention, de manière à fournir un " mot de code associé >, appartenant au code produit. Puis ce mot de code associé est transmis à une unité de suppression de redondance 108, qui en extrait k k2 symboles d'information en mettant en _uvre un algorithme de décodage inverse de celui mis en _uvre 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.
La fig u re 2 est u n organ ig ramme représentant les étapes principal es d'un procédé de correction d'erreurs selon l'invention, qui est mis en _uvre chaque fois que l'unité de correction d'erreurs 107 saisit un nouveau mot reçu (sous forme d'un tableau de symboles appartenant audit alphabet) à l'étape 200
de ce procédé.
Le procédé comprend au moins une itération, avec un nombre d'itérations maximum /maX fixé à l'avance, par précaution, pour éviter les risques de boucle infinie. Chaque itération comprend elle-même une tentative de correction portant sur les lignes, suivie d'une tentative de correction portant sur les colonnes. Une variable logique appelée L-correctes reçoit la valeur vrai lorsque l'algorithme de correction de ligne A, a constaté que toutes les lignes du tableau sont des mots de code du premier code composant; tant que ce n'est pas le cas, la variable L-correctes reçoit lavaleur faux. De même, une variable logique appelée C-correctes reçoit la valeur vrai lorsque l'algorithme de correction de ligne A2 a constaté que toutes les colonnes du tableau sont des mots de code du second code composant; tant que ce n'est pas le cas, la
variable C-correctes reçoit la valeur faux.
A l'étape 201, on initialise la variable C-correctes à faux, et le compteur d'itérations à zaro. A l'étape 202, I'algorithme A caloule les
syndromes d'erreur des lignes du tableau.
Si, à l'étape 203, on constate que ces syndromes sont tous nuls, on en déduit que les lignes sont toutes des mots du premier code composant, et par conséquent la variable L-correctes reçoit la valeur vrai à l'étape 204. On vérifie ensuite, à l'étape 205, si la valeur de C-correctes est égale à vrai. Si c'est le cas, on en déduit que la correction du mot reçu est terminée, et l'unité de correction d'erreurs 107 transmet, à l'étape finale 206, le tableau de symboles, qui constitue à présent le " mot de code associé ", à l'unité de suppression de redondance 108. Mais s'il s'avère, à l'étape 205, que la valeur de C-correctes est égale à faux, on passe, à l'étape 207, au calcul par
l'algorithme A2 des syndromes d'erreur des colonnes du tableau.
Si l'on constate en revanche, à l'étape 203, que certains syndromes d'erreur de lignes ne sont pas nuis, on applique, à l'étape 208, sur les lignes correspondantes, le procédé de tentative de correction selon l'invention décrit ci-dessous en référence à la figure 3a. On vérifie ensuite, à l'étape 209, si
certaines positions du tableau restent effacées. Si c'est le cas, la variable L-
correctes reçoit la valeur faux à l'étape 210, sinon la variable Lcorrectes reçoit la valeur vrai à l'étape 211. Après l'étape 210, ou bien l'étape 211, on passe à
l'étape 207 déjà mentionnée.
Si, à l'étape 212, on constate que les syndromes d'erreur de colonnes sont tous nuis, on en déduit que les colonnes sont toutes des mots du second code composant, et par conséquent on donne à la variable C- correctes la valeur vrai à l'étape 213. On vérifie ensuite, à l'étape 214, si la variable L correctes est égale à vrai. Si c'est le cas, on en débuit que la correction du mot reçu est terminée et l'on passe à l'étape finale 206 déjà mentionnce. Sinon, on
incrémente le compteur d'itérations à l'étape 215.
Si l'on constate en revanche, à l'étape 212, que certains syndromes d'erreur de colonnes ne sont pas nuis, on applique, à l'étape 216, sur les colonnes correspondantes, le procédé de tentative de correction selon I'invention décrit ci-dessous en référence à la figure 3b. On vérifie ensuite, à l'étape 217, si certaines positions du tableau restent effacées. Si c'est le cas, la variable C-correctes reçoit la valeur faux à l'étape 218, sinon la variable C correctes reçoit la valeur vrai à l'étape 219. Après l'étape 218, ou bien l'étape
219, on passe à l'étape 215 déjà mentionnée.
Après l'étape 215, on vérifie, à l'étape 220, si l'on a déjà effectué un nombre d'itérations égal au nombre maximal prévu /maX si ce n'est pas le cas, on retourne à l'étape 202 pour une nouvelle itération. Mais si c'est le cas, on considère que la tentative de correction du mot reçu a échoué, et l'on interrompt le procédé à l'étape 221; les suites à donner dans ces cas d'échec de correction ne relèvent pas du procédé selon l'invention, et doivent être
convenues à l'avance par les utilisateurs du procédé.
La figure 3a est un organigramme représentant les étapes principales, selon l'invention, d'un procédé de tentative de correction des erreurs contenues dans une ligne i (1 s i < n2) du tableau de symboles traité par l'unité 107. Les applications successives de ce procédé à toutes les lignes du tableau forment conjointement i'étape 208 du procédé décrit cidessus en
référence à la figure 2.
A l'étape 301,1'algorithme A' tente de corriger la ligne i à partir de ses syndromes d'erreur en prenant en compte, le cas échéant, les i positions
effacées de cette ligne.
Si, à l'étape 302, I'on constate que l'algorithme A, ne parvient pas à corriger cette ligne, c'est-à-dire à proposer un mot correspondant faisant partie du
premier code composant, alors on efface entièrement la ligne i à l'étape 303.
Si en revanche, à l'étape 302, I'aigorithme A propose un mot correspondant faisant partie du premier code composant, alors on compte, à l'étape 304, le nombre t de symboles dans cette ligne qui ont été modifiés par I'algorithme (et qui ne se trouvaient pas à des positions effacées), puis on calcule le nombre (2ti + i) et l'on compare sa valeur à un nombre
prédéterminé d*.
S'il s'avère, à l'issue de l'étape 304, que (2ti + i) est supérieur à
d*4, alors on efface entièrement la ligne i à l'étape 303 déjà mentionnce.
Si en revanche (2ti + 'i) s'avère étre inférieur ou égal à d*i, alors on accepte, à l'étape 305, la correction de la ligne i qui vient d'étre effectuce par l'algorithme A. De même, la figure 3b est un organigramme représentant les étapes principales, selon l'invention, d'un procédé de tentative de correction des erreurs contenues dans une colonne j (1 s j < n) du tableau de symboles traité par l'unité 107. Les applications successives de ce procédé à toutes les colonnes du tableau forment conjointement l'étape 216 du procédé décrit ci
dessus en référence à la figure 2.
Les étapes311 à315 figurant sur cette figure 3b sont tout à fait
analogues, respectivement, aux étapes 301 à 305 de la figure 3a.
On va à présent illustrer le procédé de correction d'erreurs selon
l'invention à l'aide d'un exemple numérique, en s'appuyant sur les figures 4a à 6b.
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. ll 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 produit dont les codes composants sont des codes de géométrie algébrique construits sur F6 à partir d'une courbe elliptique maximale de 24 points (par exemple: y2 + y = x3 + x), de genre: g = 1. Les paramètres (n,k) de ces codes sont pris respectivement égaux à:
n =24,k =20;n2=24,k2=18.
De plus, l'on choisit " I'algorithme de base >> pour les deux algorithmes A et A2. Ainsi, les pouvoirs de résolution respectifs sont: A = n -k -2g = 2, et /2 = n2 -k2 -2g = 4 Enfin, I'on prend comme limites de fiabilité: d*' = A', et d*2 = A2, de sorte que A, peut, de manière fiable, corriger 1 erreur ou déterminer la valeur de 2 positions effacées, et que A2 peut, de manière fiable, corriger 2 erreurs, ou corriger 1 erreur et déterminer la valeur de 2 positions effacées, ou
encore déterminer la valeur de 4 positions effacées.
Sur ces figures 4a à 6b, on a représenté par des " x " les positions erronées du tableau de symboles, c'est à dire les positions contenant chacune un symbole différent du symbole émis correspondant. La figure 4a représente le mot reçu lui-même, tel qu'il est issu du démodulateur 106. On voit qu'il souffre d'un certain nombre d'erreurs de transmission, qui affectent les lignes 3, 6, 9, 10, 14 et 16. La figure 4b montre l'état du tableau de symboles après une première application de l'algorithme A. Les erreurs simples des lignes 10 et 16 ont été 1 1 corrigées. Les lignes 6 et 9, qui contenaient beaucoup d'erreurs, n'ont pu être corrigées, et les symboles qu'elles contenaient ont été effacés, ce que l'on
représente par une zone grisée sur cette figure et les figures suivantes.
La ligne 3 contenait également un grand nombre d'erreurs de transmission (quatre); malgré cela, I'algorithme A a été capable de proposer un mot de code " corrigé "; il lui a suffi pour cola de changer, dans la ligne 3, la valeur d'un seul symbole, à savoir celui situé en colonne 10, et par conséquent la ligne 3 n'a pas été effacée. Or ce symbole, ainsi que ceux situés en colonne 5, 6,
et 12 sont en fait erronés.
Enfin, la ligne 14 contenait elle aussi un grand nombre d'erreurs de transmission (cinq); malgré cela, I'algorithme A a été capable de proposer un mot de code " corrigé "; il lui a sufffi pour cela de changer, dans la ligne 14, la valeur d'un seul symbole, à savoir celui situé en colonne 15 (qui était en fait correct dans le mot reçu!), et par conséquent la ligne 14 n'a pas été effacée. Ce symbole, ainsi
que ceux situés en colonne 6, 7, 8, 9 et 10 sont ainsi, à ce stade, erronés.
La figure 5a reprend la figure 4b. La figure 5b montre l'état du tableau de symboles après une première application de l'algorithme A2 (ce qui complète la première itération du procédé). On voit que toutes les colonnes ont été corrigées, à l'exception des colonnes 6 et 10, qui ont été effacées car l'algorithme A2 a été
incapable de les corriger.
La figure 6a reprend la figure 5b. La figure 6b montre qu'après une deuxième application de l'algorithme A,, toutes les erreurs initialement contenues dans le mot reçu ont été corrigées. Le mot de code associé représenté sur la figure 6b est donc identique au mot émis correspondant, et il ne reste plus à I'unité 108 qu'à supprimer les symboles de redondance pour que l'unité 109
puisse récupérer les symboles d'information qui lui étaient destinés.
Le procédé de correction d'erreurs selon l'invention a été décrit ci dessus de manière générale en s'appuyant sur les figures 2 à 6b. Mais il importe de noter ici que l'application de ce procédé se révélera être particulièrement efficace si l'on choisit, pour A' et A2, des algorithmes " sub maximaux ": en effet, comme expliqué en introduction, ces algorithmes sont généralement simples à mettre en _uvre, et d'exécution rapide. Il est vrai que si le mot reçu souffre d'un grand nombre d'erreurs de transmission, le fait que lesdits algorithmes ont un pouvoir de résolution relativement faible pourra causer, lors des premières étapes de traitement, un nombre important d'effacements, mais le procédé selon l'invention garantit que les symboles non effacés du mot traité seront presque tous corrects après ces étapes initiales; à partir de là, le traitement de ce mot s'achèvera donc de manière à la fois fiable et rapide (sauf évidemment si le nombre d'erreurs de transmission est si grand que toute tentative raisonnable de correction du mot reçu est impossible, mais dans ce cas l'utilisation d'algorithmes maximaux aboutirait soit, elle aussi, à un échec de correction, soit, ce qui est sans doute encore pire, à un mot de code
associé erroné).
En option, on pourra d'ailleurs rendre encore plus rapides les étapes finales du procédé de correction selon l'invention, en augmentant quelque peu en fin de traitement la valeur de la limite de fiabilité d*i et/ou de la limite de
fiabilité d*2.
Le schéma synoptique de la figure 7 représente un appareil de réception de signaux numériques 70 incorporant le décodeur 1O, et destiné à une application dans laquelle le code de canal utilisé est un code produit dont les composants sont par exemple tous deux des codes de géométrie algébrique. 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'entrce/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éés, 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 ies registres suivants: des registres " mots_reçus ", dans lesquels sont conservés ies mots reçus, - un registre " symboles_estimés ", dans lequel sont conservés les symboles du tableau issu d'un mot reçu en cours de correction, - un registre " mots_associés ", dans lequel sont conservés les tableaux de symboles des " mots de code associés ", - un registre " symboles_information ", dans lequel sont conservés les symboles résultant de la suppression de la redondance, et - un registre " nb_itérations ", dans lequel est conservoe la valeur du nombre d'itérations déjà effectuées par le décodeur en cours de correction d'un
mot reçu.
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 a programme ", - la longueur des mots du premier code composant dans un registre "n ", - la longueur des mots du second code composant dans un registre " n2 ", - le nombre de symboles d'information dans les mots du premier code composant, dans un registre " k ", - le nombre de symboles d'information dans les mots du second code composant, dans un registre " k2 ", - le genre de la courbe algébrique choisie pour le premier code, dans un registre " g' ", - le genre de la courbe algébrique choisie pour le second code, dans un registre " g2 ", I'algorithme de correction avec effacements choisi pour le premier code composant, dans un registre " A' ", - I'algorithme de correction avec effacements choisi pour le second code composant, dans un registre " A2 ", - la limite de fiabilité pour le premier algorithme, dans un registre "d*", - la limite de fiabilité pour le second algorithme, dans un registre "d*2", et - le nom bre maximal d 'itérations Imax, d ans u n reg istre
" nb_iteration_max ".
On a décrit ci-dessus à titre d'exemple une application de l'invention au stockage de masse des données, mais il est ciair que les procédés selon l'invention peuvent tout aussi bien étre mis en _uvre 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 ceuvre un protocole de transmission de données
par paquets sur un canal hertzien.

Claims (11)

REVENDICATIONS
1. Procédé de décodage d'un code produit, dans lequel les symboles de chaque mot de code peuvent être placés dans un tableau comportant n2 lignes et n colonnes, de telle manière que les symboles constituant chaque ligne forment un mot légal de longueur n, selon un premier code composant pouvant étre décodé au moyen d'un algorithme de correction avec effacements A', et les symboles constituant chaque colonne forment un mot logal de longueur n2 selon un second code composant pouvant être décodé au moyen d'un algorithme de correction avec effacements A2, ledit procédé étant caractérisé en ce qu'il comprend une succession d'étapes principales que l'on met en _uvre jusqu'à ce que la correction du mot reçu soit compiète, chacune de ces étapes consistant à traiter soit une ligne soit une colonne dudit tableau dans un ordre prédéterminé, et en ce que, pour traiter une ligne i ( 1 c i < n2): a) on applique l'algorithme A, à ladite ligne i en tenant compte des positions effacées (le cas échéant), b) si l'algorithme A, est incapable de fournir une correction, on efface tous les symboles de cette ligne, c) si l'algorithme A est capable de proposer une correction, on compte le nombre de symboles ti dont la valeur a été changée au cours de l'étape a), puis l'on calcule la valeur de (2ti + Ti) et, - Si (2ti + T4i) < d*4, o d*4 est un entier positif prédéterminé, on accepte ladite correction, - si (2ti + Ti) > d*, on efface tous les symboles de cette ligne, et en ce que, pour traiter une colonne j (1 < j < n): d) on applique l'algorithme A2 à ladite colonne j en tenant compte des T2i positions effacées (le cas échéant), e) si l'algorithme A2 est incapable de fournir une correction, on efface tous les symboles de cette colonne, f) si l'algorithme A2 est capable de proposer une correction, on compte le nombre de symboles t2i dont la valeur a été changée au cours de l'étape d), puis l'on calcule la valeur de (2tl + T2i) et, - si (2t2i + 2j) < d*2, o d*2 est un entier positif prédéterminé, on accepte ladite correction,
- si (2t2J + T2i) > d*2, on efface tous les symboles de cette colonne.
2. Procédé de décodage selon la revendication 1, caractérisé en ce que ledit premier code eVou ledit second code est un code de géométrie algébrique.
3. Procédé de décodage selon la revendication 1, caractérisé en ce
que ledit algorithme A' eVou ledit algorithme A2 est un algorithme " sub-
maximal ".
4. Procédé de décodage selon la revendication 2 et la revendication 3, caractérisé en ce que l'algorithme de décodoge A eVou A2 est l'algorithme
" de base ".
5. Procédé de décodage selon l'une quelconque des revendications
1 à 4, caractérisé en ce que l'on fait varier la valeur de d* et/ou de d*2 au cours
du décodage d'un mot reçu.
6. Dispositif de correction d'erreurs (107), caractérisé en ce qu'il comporte des moyens pour mettre en _uvre l'un quelconque des procédés de
décodage selon les revendications 1 à 5.
7. Décodeur (1 0), caractérisé en ce qu'il comporte: - au moins un dispositif de correction d'erreurs selon 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 comporte un décodeur selon la revendication 7, et en ce qu'il comporte des moyens (706) pour recevoir lesdits signaux numériques codés.
9. 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 à 5.
10. 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 rune
quelconque des revendications 1 à 5.
11. Programme d'ordinateur, caractérisé en ce qu'il contient des instructions telles que, lorsque ledit programme commando un dispositif de traitement de données programmable, lesdites instructions font que ledit dispositif de traitement de données met en _uvre un procédé selon l'une
FR0204646A 2002-04-12 2002-04-12 Procedes et dispositifs de faible cout pour le decodage de codes produits Expired - Fee Related FR2838580B1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
FR0204646A FR2838580B1 (fr) 2002-04-12 2002-04-12 Procedes et dispositifs de faible cout pour le decodage de codes produits
US10/408,458 US7120850B2 (en) 2002-04-12 2003-04-08 Low-cost methods and devices for the decoding of product cases
JP2003109300A JP3703466B2 (ja) 2002-04-12 2003-04-14 積符号を復号するための低コストな方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0204646A FR2838580B1 (fr) 2002-04-12 2002-04-12 Procedes et dispositifs de faible cout pour le decodage de codes produits

Publications (2)

Publication Number Publication Date
FR2838580A1 true FR2838580A1 (fr) 2003-10-17
FR2838580B1 FR2838580B1 (fr) 2005-04-01

Family

ID=28459811

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0204646A Expired - Fee Related FR2838580B1 (fr) 2002-04-12 2002-04-12 Procedes et dispositifs de faible cout pour le decodage de codes produits

Country Status (3)

Country Link
US (1) US7120850B2 (fr)
JP (1) JP3703466B2 (fr)
FR (1) FR2838580B1 (fr)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2860360B1 (fr) * 2003-09-29 2005-12-09 Canon Kk Dispositif de codage /decodage utilisant un codeur/decodeur de reed-solomon
JP4056488B2 (ja) * 2004-03-30 2008-03-05 エルピーダメモリ株式会社 半導体装置の試験方法及び製造方法
US7328395B1 (en) 2004-04-13 2008-02-05 Marvell International Ltd. Iterative Reed-Solomon error-correction decoding
US7444582B1 (en) 2004-10-27 2008-10-28 Marvell International Ltd. Architecture and control of reed-solomon error-correction decoding
US7562284B2 (en) * 2005-08-26 2009-07-14 International Business Machines Corporation Apparatus, system, and method for mandatory end to end integrity checking in a storage system
US8718135B2 (en) * 2008-09-19 2014-05-06 The Hong Kong University Of Science And Technology Method and system for transcoding based robust streaming of compressed video
JP5674458B2 (ja) * 2010-12-28 2015-02-25 株式会社京三製作所 情報伝送装置及び列車制御装置
US10230401B2 (en) 2015-03-10 2019-03-12 Toshiba Memory Corporation Memory controller for a non-volatile memory, memory system and method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4646301A (en) * 1983-10-31 1987-02-24 Hitachi, Ltd. Decoding method and system for doubly-encoded Reed-Solomon codes
US6047395A (en) * 1998-01-30 2000-04-04 Cirrus Logic, Inc. Error correction processor for correcting a multi-dimensional code by generating an erasure polynomial over one dimension for correcting multiple codewords in another dimension
FR2789824A1 (fr) * 1999-02-12 2000-08-18 Canon Kk Procede de correction d'erreurs residuelles a la sortie d'un turbo-decodeur
US6138263A (en) * 1997-04-08 2000-10-24 Kabushiki Kaisha Toshiba Error correcting method and apparatus for information data having error correcting product code block

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1264091A (fr) * 1986-01-10 1989-12-27 Yoichiro Sako Generateur de codes de correction d'erreur et decodeur connexe
KR950010768B1 (ko) * 1993-10-20 1995-09-22 주식회사 Lg전자 에러 정정 코드 복호 장치 및 그 방법
US5719884A (en) * 1995-07-27 1998-02-17 Hewlett-Packard Company Error correction method and apparatus based on two-dimensional code array with reduced redundancy
FR2742951B1 (fr) * 1995-12-26 1998-04-03 Canon Research Centre France S Procede et dispositif pour detecter la presence d'un signal periodique de periode connue
US6363511B1 (en) * 1998-03-31 2002-03-26 Stmicroelectronics N.V. Device and method for decoding data streams from storage media
US6542545B1 (en) 1999-10-01 2003-04-01 Mitsubishi Electric Reseach Laboratories, Inc. Estimating rate-distortion characteristics of binary shape data
FR2802735B1 (fr) * 1999-12-20 2002-03-29 Canon Kk Procede et dispositif de codage, procede et dispositif de decodage, et systemes les mettant en oeuvre
US6493386B1 (en) 2000-02-02 2002-12-10 Mitsubishi Electric Research Laboratories, Inc. Object based bitstream transcoder
US6738942B1 (en) * 2000-06-02 2004-05-18 Vitesse Semiconductor Corporation Product code based forward error correction system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4646301A (en) * 1983-10-31 1987-02-24 Hitachi, Ltd. Decoding method and system for doubly-encoded Reed-Solomon codes
US6138263A (en) * 1997-04-08 2000-10-24 Kabushiki Kaisha Toshiba Error correcting method and apparatus for information data having error correcting product code block
US6047395A (en) * 1998-01-30 2000-04-04 Cirrus Logic, Inc. Error correction processor for correcting a multi-dimensional code by generating an erasure polynomial over one dimension for correcting multiple codewords in another dimension
FR2789824A1 (fr) * 1999-02-12 2000-08-18 Canon Kk Procede de correction d'erreurs residuelles a la sortie d'un turbo-decodeur

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
FENG G L ET AL: "Improved geometric Goppa codes", INFORMATION THEORY, 1994. PROCEEDINGS., 1994 IEEE INTERNATIONAL SYMPOSIUM ON TRONDHEIM, NORWAY 27 JUNE-1 JULY 1994, NEW YORK, NY, USA,IEEE, 27 June 1994 (1994-06-27), pages 152, XP010135274, ISBN: 0-7803-2015-8 *
GUI-LIANG FENG ET AL: "Improved geometric Goppa codes. I. Basic theory", IEEE TRANSACTIONS ON INFORMATION THEORY, NOV. 1995, IEEE, USA, vol. 41, no. 6, pt.1, pages 1678 - 1693, XP002225243, ISSN: 0018-9448 *
PRETZEL O: "Partial geometric codes", IEEE TRANSACTIONS ON INFORMATION THEORY, NOV. 1999, IEEE, USA, vol. 45, no. 7, pages 2506 - 2512, XP002225242, ISSN: 0018-9448 *
SKOROBOGATOV A N ET AL: "ON THE DECODING OF ALGEBRAIC-GEOMETRIC CODES", IEEE TRANSACTIONS ON INFORMATION THEORY, IEEE INC. NEW YORK, US, vol. 36, no. 5, 1 September 1990 (1990-09-01), pages 1051 - 1060, XP000141830, ISSN: 0018-9448 *

Also Published As

Publication number Publication date
US20040039978A1 (en) 2004-02-26
FR2838580B1 (fr) 2005-04-01
JP2004007582A (ja) 2004-01-08
US7120850B2 (en) 2006-10-10
JP3703466B2 (ja) 2005-10-05

Similar Documents

Publication Publication Date Title
EP0108655B1 (fr) Système de détection et de correction d&#39;erreurs de transmission d&#39;un message binaire utilisant un code cyclique détecteur et correcteur d&#39;erreurs de type Reed-Solomon entrelacé
FR2860360A1 (fr) Dispositif de codage /decodage utilisant un codeur/decodeur de reed-solomon
FR2849514A1 (fr) Code de geometrie algebrique adapte aux erreurs en rafale
FR2714498A1 (fr) Décodeur exécutant une correction d&#39;erreurs et procédé de décodage avec correction d&#39;erreurs.
FR2909499A1 (fr) Procede et dispositif de decodage pour codes ldpc, et appareil de communication comprenant un tel dispositif
EP0808538B1 (fr) Dispositif de reception de signaux numeriques a structure iterative, module et procede correspondants
WO2009095574A2 (fr) Procede et entite de chiffrement symetrique probabiliste
FR2785743A1 (fr) Dispositif et procede d&#39;adaptation des turbocodeurs et des decodeurs associes a des sequences de longueur variable
FR2724273A1 (fr) Circuit de traitement de signal pour mettre en oeuvre un algorithme de viterbi
WO1999057816A1 (fr) Decodage iteratif de codes produits
EP2282441A1 (fr) Procédé sécurisé de reconstruction d&#39;une mesure de référence d&#39;une donnée confidentielle à partir d&#39;une mesure bruitée de cette donnée, notamment pour la génération de clés cryptographiques
FR2845220A1 (fr) Procedes et dispositifs pour le decodage des codes de geometrie algebrique a un point
FR3006133A1 (fr) Procede de decodage d&#39;un code correcteur, par exemple un turbo-code, par analyse du spectre etendu des mots du code
WO2009044031A1 (fr) Procede et dispositif d&#39;encodage de symboles avec un code du type a contrôle de parite et procede et dispositif correspondants de decodage
FR2853976A1 (fr) Codage d&#39;informations par code de geometrie algebrique offrant deux options de decodage
FR2790621A1 (fr) Dispositif et procede d&#39;entrelacement pour turbocodage et turbodecodage
FR2838580A1 (fr) Procedes et dispositifs de faible cout pour le decodage de codes produits
FR2865083A1 (fr) Decodage pour code de geometrie algebrique associe a un produit fibre.
FR2866998A1 (fr) Decodage et correction d&#39;erreurs pour codes de geometrie algebrique
EP0204635B1 (fr) Procédé de transmission en blocs de mots d&#39;information numérique
FR2785744A1 (fr) Procede et dispositif de codage de sequences de donnees, procede et dispositif de decodage associes
FR2863794A1 (fr) Procedes et dispositifs de localisation d&#39;erreurs pour les codes de geometrie algebrique
FR2720528A1 (fr) Décodeur de correction d&#39;erreur.
FR2867925A1 (fr) Codage de canal adapte aux erreurs rafale
FR2858141A1 (fr) Codage d&#39;informations par codes de reed-solomon raccourcis

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20131231