FR2860360A1 - Dispositif de codage /decodage utilisant un codeur/decodeur de reed-solomon - Google Patents

Dispositif de codage /decodage utilisant un codeur/decodeur de reed-solomon Download PDF

Info

Publication number
FR2860360A1
FR2860360A1 FR0311365A FR0311365A FR2860360A1 FR 2860360 A1 FR2860360 A1 FR 2860360A1 FR 0311365 A FR0311365 A FR 0311365A FR 0311365 A FR0311365 A FR 0311365A FR 2860360 A1 FR2860360 A1 FR 2860360A1
Authority
FR
France
Prior art keywords
symbols
registers
reed
matrix
solomon
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
FR0311365A
Other languages
English (en)
Other versions
FR2860360B1 (fr
Inventor
Bars Philippe Le
Philippe Piret
Frederic Lehobey
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 FR0311365A priority Critical patent/FR2860360B1/fr
Priority to US10/952,597 priority patent/US7404134B2/en
Publication of FR2860360A1 publication Critical patent/FR2860360A1/fr
Application granted granted Critical
Publication of FR2860360B1 publication Critical patent/FR2860360B1/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
    • 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/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/1525Determination and particular use of error location polynomials
    • H03M13/153Determination and particular use of error location polynomials using the Berlekamp-Massey algorithm
    • 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/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • 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/155Shortening or extension of codes

Landscapes

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

Abstract

La présente invention concerne un dispositif (10) pour le codage de symboles d'information à transmettre ou enregistrer, et pour la correction d'erreurs parmi des symboles reçus ou lus, selon des codes définis sur un corps de Galois Fq, où q est un entier supérieur à 2 et égal à une puissance d'un nombre premier, et dans lesquels on considère un ensemble d'éléments de Fq notés yl(j) , où j=1,...,R avec 1 ≤ R ≤ q -1 et l = 0,...,p -1 avec p > 1 . Ledit dispositif (10) comprend un codeur de Reed-Solomon (210), un décodeur de Reed-Solomon (220) et une unité (500) servant à calculer l'inverse d'une matrice de Vandermonde, ainsi que :- des registres « A » (420, 430, 440, 450) dans lesquels sont mémorisés, pour le codage, lesdits symboles d'information, et, pour la correction d'erreurs, les symboles reçus ou lus après qu'ils aient été corrigés,- des registres « S » (280, 285, 290, 295) dans lesquels sont mémorisés, pour le codage, les symboles sortant dudit codeur de Reed-Solomon (210), et, pour la correction d'erreurs, les symboles entrant dans ledit décodeur de Reed-Solomon (220), et- des registres « Y » (410, 411, 412, 413) dans lesquels sont mémorisés lesdites grandeurs yl(j) .

Description

2860360 1
La présente invention concerne les systèmes de communication ou d'enregistrement de données dans lesquels, afin d'améliorer la fidélité de la transmission ou du stockage, on soumet les données à un codage de canal.
L'invention concerne plus particulièrement la mise en oeuvre pratique des codes linéaires définis sur un corps de Galois, des codes de Reed-Solomon généralisés, et des codes de géométrie algébrique. Le problème technique général est l'obtention d'algorithmes moins complexes, la complexité étant définie ici soit comme le nombre d'opérations à effectuer lorsque le calcul est mis en oeuvre suivant un programme, soit comme le nombre de portes logiques utilisées lors du calcul par un circuit intégré. La première réduction nécessite une mise en parallèle des circuits et donc une augmentation du nombre de portes, la seconde réduction engendre souvent une augmentation du temps total de traitement. L'accent est mis ici sur la réduction de la complexité en nombre de portes, car le problème prédominant à l'heure actuelle sur les disques durs est le coût par unité de stockage, le disque dur étant un objet de consommation de masse. Il s'agit notamment de trouver le dispositif le plus efficace pour cela; par efficacité , on entendra essentiellement, dans le cadre de l'invention, le fait de requérir un nombre de composants matériels aussi faible que possible; le cas échéant, on envisagera néanmoins des moyens pour accélérer les calculs, au prix d'une faible augmentation du nombre de composants matériels.
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: (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 5 Galois , noté Fq, dont les éléments non-nuls peuvent être commodément identifiés comme étant chacun égal à yi-1 pour une valeur correspondante de i, où i = 1, ..., q - 1, et où y est une racine (q -1)ème primitive de l'unité dans Fq.
En particulier, certains codes, appelés codes linéaires , sont tels que toute combinaison linéaire de mots de code (avec les coefficients pris dans l'alphabet) est encore un mot de code. Ces codes peuvent, de façon commode, être associés à une matrice H de dimension (n - k)x n, dite matrice de parité : un mot v de longueur n donné est un mot de code si, et seulement si, il vérifie la relation: H É vT = 0 (où l'exposant T indique la transposition) ; on dit alors que le code est orthogonal à cette matrice H. Au niveau du récepteur, le procédé de décodage associé exploite alors judicieusement cette redondance pour détecter d'éventuelles erreurs de transmission et si possible les corriger. Il y a erreur de transmission si la différence e entre un mot reçu r et le mot de code v correspondant envoyé par l'émetteur, est non-nulle.
Plus précisément, le décodage se fait en deux étapes principales.
La première étape consiste à associer au mot reçu un mot de code associé . Pour ce faire, le décodeur calcule d'abord le vecteur de syndromes d'erreurs 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 certains symboles dans le mot reçu sont erronés, 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é.
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.
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)12] (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.
Parmi les codes connus, on peut citer les codes dits de Reed-Solomon , qui sont réputés pour leur efficacité, et auxquels la présente invention fera abondamment référence. Ce sont des codes linéaires dont la distance minimale d est égale à (n k +1). La matrice de parité H du code de ReedSolomon 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(+l)J (0 i n k -1, 0 s j n l), où a est une racine n eme de l'unité dans Fq.
Parmi les algorithmes connus pour coder, au moyen d'un code de ReedSolomon, une séquence a= (ao,a1, ...,ak_1) de symboles d'information appartenant à Fq, certains utilisent cette matrice de parité H. Dans ces algorithmes, on choisit une certaine relation entre les symboles d'information et ceux du mot de code correspondant v_ (par exemple v, = a; pour 0 k -1; dans ce cas, on dit que le codage est systématique ). Puis on calcule les 5 composantes de v restant à déterminer d'après l'équation matricielle H É vT = 0: il faut donc résoudre (n k) équations linéaires sur F Pour le décodage des codes de Reed-Solomon, on utilise habituellement un algorithme dit de Berlekamp-Massey pour la détection des positions erronées dans un mot reçu, et un algorithme dit de Forney pour la correction des symboles erronés correspondants. Pour plus de détails sur les codes de Reed-Solomon, on pourra se référer par exemple à l'ouvrage de R.E. Blahut intitulé Theory and practice of error-control codes , Addison-Wesley, Reading, Mass.,1983.
Dans les supports d'information modernes, par exemple dans les disques durs d'ordinateurs, les CD ( compact discs ) ou encore les DVD ( digital video discs ), on cherche à accroître la densité d'information. Quand un tel support est affecté par un défaut physique tel qu'une éraflure, un nombre important de symboles d'information peuvent être rendus illisibles. On peut toutefois remédier à ce problème en utilisant un code de très grande longueur.
Or les codes de Reed-Solomon présentent la particularité que la longueur n des mots de code est nécessairement inférieure ou égale à 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 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 a.
Algebraic Geometric Codes , par J.H. van Lint, dans Coding Theory and Design Theory , 1 ère partie, IMA Volumes Math. Appt., 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 ensemble de couples est appelé ensemble de localisation ( locating set en anglais). On définit alors une matrice de parité telle que chaque ligne de cette matrice est obtenue en évaluant une fonction bien choisie de deux variables X et Yen chaque élément de cet ensemble de localisation.
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 formant une courbe algébrique .
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 + 2g J), 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 20 code de longueur 4096. On notera par ailleurs que les codes de géométrie algébrique possèdent une distance minimale d supérieure ou égale à (n-k+1-g).
Comme tous les codes, les codes de géométrie algébrique peuvent être raccourcis . On dit qu'un code donné est une version raccourcie du code C s'il ne comprend que les mots de C dont, pour un nombre v de positions prédéterminées (non nécessairement consécutives), les composantes sont toutes nulles: ces positions étant connues du récepteur, on peut se dispenser de les transmettre, de sorte que le code raccourci est de longueur (n v). En particulier, il est courant de raccourcir un code de géométrie algébrique en supprimant de l'ensemble de localisation, le cas échéant, un point, ou plusieurs points, dont les coordonnées x sont nulles.
On va maintenant présenter un exemple de code de géométrie algébrique. Considérons donc un code de géométrie algébrique de longueur 572 et de dimension 512 défini, de manière classique, comme suit.
L'alphabet des symboles est constitué par les 28 éléments du corps de 5 Galois F256 (c'est-à-dire par des octets de symboles binaires) (ce corps peut être construit à l'aide du polynôme (X8 + x4 + X3 + X2 + 1) défini sur F2).
On considère alors la courbe algébrique de genre g = 12 constituée par l'ensemble des solutions dans F256 de l'équation à deux inconnues: Y4+ Y=X9+X6+X5+X2+X.
Pour toute valeur prise par X dans F256, les p = 4 solutions de l'équation correspondante en Y sont elles aussi dans F256. Ces solutions (X, Y) définissent les points de la courbe associée à cette équation sur F256. Cette courbe comprend 576 points de coordonnées finies (ainsi qu'un point à l'infini P.). De cet ensemble, on supprime les quatre solutions de l'équation pour lesquelles X = 0, afin de construire un code raccourci . L'ensemble des points P1 (où j = 1,...,572) restants va donc constituer l'ensemble de localisation, chaque point P1 servant à identifier le 1ème élément de tout mot de code.
Ensuite, on considère l'espace vectoriel L(mP.) de polynômes en X et Y à coefficients dans F256 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 (XfYs), où r est un entier positif ou nul, s est un entier compris entre 0 et 3, et: 9s + 4r <- m.
On définit classiquement une matrice de parité de la manière suivante: l'élément en ligne i et colonne j de cette matrice est égal au sème monôme de ladite base (avec 1 <- i <- m-g+1) évalué au point P1 (avec j = 1,...,572) de la courbe algébrique. Prenons par exemple: m = 71; on obtient alors n - k = 60, et donc k = 512.
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).
II a été récemment proposé des codes définis sur un corps de Galois Fq, où q est un entier supérieur à 2 et égal à une puissance d'un nombre premier, s'apparentant à un code de géométrie algébrique, et pour lesquels il existe des procédés de codage et/ou de décodage relativement simples grâce au fait que ces codes peuvent être ramenés à une pluralité de codes de Reed-Solomon éventuellement raccourcis.
Pour ces codes, on considère un certain ensemble (XI,X2,...,XR) d'éléments distincts, préférablement non-nuls, d'un corps de Galois Fq choisi. On choisit un entier p >1 et un p-uple d'entiers (to,...,tp_1) tels que q 1> to> t1 > ... > tp-1 > 0.
Ces codes sont de longueur n = pR (sauf raccourcissement), et de redondance p I n k=Eti. 1=0
On considère également un p-uple (Yo,...,Yp_1) de matrices carrées diagonales de dimension R sur Fq telles que, pour tout j (1 j R), les p éléments yi (j) en position (j,j) de ces matrices Y (1= 0,...,p l) soient différents deux à deux (sauf en cas de raccourcissement, où les valeurs yl (j) pour les positions n j raccourcies sont arbitraires).
On notera que, dans le cas où les couples (xi, yl (j)) (où j =1,..., R, et l = 0,...,p -1) sont tous solutions d'une certaine équation algébrique, on peut, à partir de la valeur du genre g de la courbe algébrique, obtenir une borne inférieure (n-k+ 1 g) pour la distance minimale de ce code.
Enfin, la pluralité de codes de Reed-Solomon éventuellement raccourcis mentionnée ci-dessus est associée aux matrices de parité H(t,) (l = 0,..., p -1) qui sont de la forme H(w) Xl X2 XR (1) w-1 w-1 w-1 X1 X2 ". XR -
-
pour tout entier strictement positif w. Cette matrice H(w) est manifestement une matrice de Vandermonde, mais elle ne correspond à un code de Reed-Solomon non raccourci que si, comme mentionné ci-dessus, le nombre de colonnes (égal à R) est égal à (q -1) ou à un diviseur de (q -1) .
Plus précisément, concernant le codage de symboles d'information, 10 on forme un mot de code v=[vo El... vp I où chaque mot El (1= 0,..., p -l) est de longueur R, obéissant au système d'équations v_o + _vl + + vp 1 uo voYo + vv1Y1 + + v p-1 Yp-1 ul, voY o + vv-lY j + + v p-1Y p-1 u2, (2) oYo-1 v p-lY p 11 = u p-1 + vIYP-1 + ... + où chaque mot ul est de longueur R et est orthogonal à la matrice H(t,) , autrement dit: H(" ÉuÎ =0, pour 1=(3) On peut, si l'on veut, considérer que les mots ul sont les composantes d'un mot pré-codé u= [uo ul... u p_1] de longueur n= pR. Pour tout mot ul ou -vl (où l = 0,...,p-l), nous appellerons position-X l'entier (j-l) servant d'indice pour la?Ème composante du mot.
On connaît par exemple un tel procédé d'après la demande FR-0301546. Dans ce procédé, le codage est systématique , c'est-à-dire que dans chaque mot yl, les (R t1) premiers symboles sont des symboles d'information (et un ou plusieurs zéros si le code est raccourci), tandis que les tl derniers symboles sont des symboles de redondance calculés au moyen des équations (2) et (3). Plus précisément, ce calcul des symboles de redondance 5 implique une construction progressive, en parallèle et par allers-retours, des mots u = [uo ul... u p_1] et v = [v_o v_1... _vp_1] ; on trouvera une explication détaillée de cette construction dans ladite demande FR-0301546.
Il est intéressant de raccourcir le code, par exemple, lorsque l'on souhaite s'appuyer sur une équation algébrique qui ne possède pas, pour tout xj appartenant à (x1,x2,...,XR), le même nombre p > l de solutions distinctes (xi, yl (j) ). On peut, alors, attribuer la valeur zero aux composantes de vl dont la position-X (j-1) correspond à une valeur xj associée à une seule solution (xj, yl(j)) de l'équation algébrique; de même, on attribuera la valeur zéro aux composantes de v2 dont la position-X (j-1) correspond à une valeur xj associée à exactement une solution ou exactement deux solutions distinctes (xi, yl (j)) de l'équation algébrique; et ainsi de suite, jusqu'au mot vp_1, où, par conséquent, les seules composantes non-nulles seront celles dont la position-X (j-1) correspond à une valeur xj associée à p solutions distinctes (xj, yl(j)) de l'équation algébrique. De cette façon, après suppression des 20 composantes systématiquement nulles dans les mots de code y, on pourra mettre en bijection la série de composantes des mots raccourcis ainsi obtenus et la série de solutions de l'équation algébrique où X prend l'une des valeurs (XI, x2,..., XR) . Dans ce cas, pour les éléments des matrices YI (où 1= 0,..., p -1) mentionnées ci-dessus, on donnera naturellement à h( j), lorsqu'il existe une 25 solution (xi, yl (j)) de l'équation algébrique, la valeur de Y correspondante; sinon, la valeur de yl (j) importe peu.
Concernant à présent le décodage, on connaît, d'après la demande FR0304767, un procédé de correction d'erreurs dans des mots reçus r = [ r(xl' y0 (1)), ..., r(xl Yp 1(1)),..., r(xR Yp 1(R)) ] , de longueur n = pR, dans lesquels certaines composantes peuvent être effacées (une composante effacée est une composante dont on a des raisons de penser que sa valeur est erronée). On dira que les composantes r(xj, yl (j)) , où j est fixé et 1 = 0,..., p -1, forment un agrégat .
Selon ce procédé, on met en oeuvre les étapes suivantes: a) pour s = 0,... ,p 1: É on calcule le mot NS =[rs(xl),rs(x2),...,rs(xR)] de longueur R, dans lequel, pour j = 1,...,R, le symbole agrégé p 1 r(x) = E [y1(11 s r(xj, yl (1)) 1=0 est effacé si au moins un des symboles r(xj,Y1(j)) est lui-même effacé, et É on calcule le vecteur de syndromes d'erreurs 6s H(r,)rsT b) on essaye de calculer un mot vo = [ vo (xl), 'O (x2),..., vo (XR) ] en 15 corrigeant le mot ro d'après le vecteur de syndromes d'erreurs 6o au moyen d'un algorithme de correction d'erreurs apte à tenir compte des effacements, c) pour s =1,..., p -1: É au cas où la tentative de correction précédente a abouti, on efface pour tout x tel que vs_l (x) rs_1(x) , les symboles rf (x) pour f = s,..., p -1, et É on essaye de calculer un mot vs - [ vs (xl), vS (x2),..., vs (xR) ] en corrigeant le mot rs d'après le vecteur de syndromes d'erreurs 6s au moyen d'un algorithme de correction d'erreurs apte à tenir compte des effacements, et d) au cas où les p tentatives de correction ci-dessus ont abouti, on calcule, pour j = 1,...,R, les symboles v(xj,y1(j)) (où 1=0,... ,p 1), qui sont respectivement les estimations des symboles émis correspondant aux symboles reçus r(xj, y1(j)) , en résolvant le système de p équations: p 1 Ils (xi) = E [yl (j)Js v(xi, yl (j)) , pour s = 0,..., p -1. (4) 1=0 Pour tout mot NS ou vs (où s = 0,...,p l), nous appellerons position-X l'entier (j-1) servant d'indice pour la Pme composante du mot.
On notera que dans le cadre de la présente invention, on parlera souvent, pour faire court, de décodage pour désigner uniquement l'étape de correction d'erreurs dans les mots reçus, étant entendu que l'homme du métier sait effectuer ensuite sans difficulté la suppression de la redondance en utilisant un dispositif classique quelconque.
Comme on le voit, les étapes d'un procédé de codage tel que décrit 10 cidessus présentent peu de ressemblances avec les étapes d'un procédé de décodage tel que décrit ci-dessus (ce qui n'est guère surprenant). Or les auteurs de la présente invention ont réalisé que l'on pouvait organiser ces deux procédés de manière à faire apparaître des analogies profondes. Pour ce faire, ils ont distingué dans les deux cas des étapes dites de pré-traitement et des 15 étapes dites de post-traitement .
Ainsi, pour le codage, on met en oeuvre - des étapes de pré-traitement, à savoir: É l'attribution aux (R t1) premières composantes de chaque mot yl des valeurs de symboles d'information, É la transmission de ces mots au codeur de Reed-Solomon pour le calcul des parités (voir équations (3)) (une équation pour chaque étape de pré- traitement), et É la préparation des registres pour la résolution du système d'équations (2) en fonction des coefficients apparaissant sur le côté gauche de 25 chacune de ces équations (une équation pour chaque étape de pré- traitement), et - des étapes de post-traitement, à savoir: É la lecture, d'une part, des données résultant du pré-traitement, et d'autre part des mots issus du codeur de Reed-Solomon, É la lecture des valeurs des symboles Y1 (j) , et É la résolution du système d'équations (2).
Pour le décodage, on met en oeuvre - des étapes de pré-traitement, à savoir: É le calcul des symboles agrégés (voir étape a)), É la transmission de ces symboles agrégés au décodeur de Reed-Solomon, et É la préparation des registres pour la résolution du système d'équations (4) en fonction des coefficients apparaissant sur le côté droit de chacune de ces équations (une équation pour chaque étape de pré- traitement), et - des étapes de post-traitement, à savoir: É la lecture, d'une part, des données résultant du pré-traitement, et d'autre part des mots issus du décodeur de Reed-Solomon (voir étapes b) et c)) (une équation pour chaque étape de post-traitement), É la lecture des valeurs des symboles y, (j) , et É la résolution du système d'équations (4) (voir étape d)).
Partant de cette analogie de fonctionnement, l'invention concerne un dispositif pour le codage de symboles d'information à transmettre ou enregistrer, et la correction d'erreurs parmi des symboles reçus ou lus, selon des codes définis sur un corps de Galois Fq, où q est un entier supérieur à 2 et égal à une puissance d'un nombre premier, et dans lesquels on considère un ensemble d'éléments de Fq notés y, (j) , où j =1,..., R avec 1 <_ R < q -1 et 1= 0,...,p -1 avec p > 1. Ce dispositif comprend, de manière connue, un codeur de Reed-Solomon, un décodeur de Reed-Solomon et une unité servant à calculer l'inverse d'une matrice de Vandermonde. Ce dispositif est remarquable en ce qu'il comprend en outre: - des registres A dans lesquels sont mémorisés É pour le codage, lesdits symboles d'information, et É pour la correction d'erreurs, les symboles reçus ou lus après qu'ils aient été corrigés, - des registres S dans lesquels sont mémorisés 2860360 13 É pour le codage, les symboles sortant dudit codeur de Reed-Solomon, et É pour la correction d'erreurs, les symboles entrant dans ledit décodeur de Reed-Solomon, et des registres Y dans lesquels sont mémorisés lesdites grandeurs yl (j) . Ainsi, selon l'invention, les registres A servent au pré-traitement pour le codage, et au post-traitement pour le décodage; les registres S servent au post-traitement pour le codage, et au pré-traitement pour le décodage; quant aux registres Y , ils servent au pré-traitement et au post-traitement, à la fois pour le codage et pour le décodage.
Autrement dit, l'organisation judicieuse selon l'invention des opérations de codage et des opérations de décodage fait qu'il est possible d'utiliser exactement les mêmes circuits pour le codage et pour le décodage.
Cela représente une économie avantageuse en termes de nombre de composants matériels par rapport à une réalisation routinière de circuits aptes à la fois pour le codage et pour le décodage, et, naturellement, une économie encore plus substantielle par rapport à une réalisation où le module de codage et le module de décodage seraient deux modules distincts.
De plus, l'invention permet d'utiliser un codeur de Reed-Solomon classique, c'est-à-dire de longueur (q 1) si l'alphabet est Fq.
Selon des caractéristiques particulières, ledit décodeur de Reed-Solomon est de longueur (q 1), et le dispositif selon l'invention comprend une table de conversion-X mettant en regard les indices de tout registre de longueur R avec des éléments respectifs du corps de Galois Fq. Plus précisément, cette table de conversion-X associe à chaque position-X d'un registre de longueur R la valeur de xi correspondante. En effet, le décodeur de Reed-Solomon indique des positions d'erreurs par rapport à une trame comprenant (q 1) composantes; lorsque R <q 1, il faut, pour décaler le registre qui doit être mis à jour, tenir compte des positions absentes.
Grâce à ces dispositions, on pourra utiliser un décodeur de Reed-Solomon classique dans le dispositif selon l'invention.
Selon un mode de réalisation de l'invention, dans lesdits registres Y sont également mémorisées les puissances yl (j)S, où s = 2,...,p 1, des 5 symboles yl (j) . Ces puissances peuvent être alors commodément lues au cours des étapes de post-traitement.
En variante, le dispositif comprend également des circuits multiplicateurs permettant de calculer les puissances yl (j)S, où s = 2,.. .,p 1, des symboles Y1(j). Ce calcul est effectué, au cours des étapes de posttraitement, après que les valeurs de ces symboles ont été lues dans les registres Y . Cette variante requiert donc des circuits supplémentaires, mais moins de registres mémoire que dans le mode de réalisation cidessus.
Selon d'autres caractéristiques particulières, on munira le dispositif selon l'invention d'une machine d'état apte à organiser l'activation et la désactivation de tous les signaux pilotant les opérations de codage et de correction d'erreurs.
Grâce à ces dispositions, le dispositif selon l'invention sera à la fois compact et efficace.
L'invention vise également: - un programme d'ordinateur contenant des instructions aptes à faire fonctionner une unité de commande du dispositif selon l'invention, lorsque cette unité de commande est réalisée sous la forme d'un dispositif de traitement de données, - un appareil d'émission et de réception de signaux numériques codés, comprenant des moyens pour moduler lesdits signaux numériques codés, un émetteur de données modulées,un récepteur de données modulées, des moyens pour démoduler lesdits signaux numériques codés, et des moyens pour calculer les symboles d'information estimés à partir des mots reçus corrigés, ledit appareil étant remarquable en ce qu'il comprend un dispositif tel que décrit succinctement ci-dessus, et - un appareil d'enregistrement et de lecture de signaux numériques codés, comprenant des moyens pour moduler lesdits signaux numériques codés, un enregistreur de données modulées, un lecteur de données modulées, des moyens pour démoduler lesdits signaux numériques codés, et des moyens pour calculer les symboles d'information estimés à partir des mots lus corrigés, ledit appareil étant remarquable en ce qu'il comprend un dispositif tel que décrit succinctement ci-dessus.
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, 10 donnés à titre d'exemples non limitatifs. La description se réfère aux dessins qui l'accompagnent, dans lesquels: - la figure 1 illustre l'architecture générale du dispositif selon l'invention, - la figure 2 illustre l'unité de pré-traitement de ce dispositif, - la figure 3 illustre un mode de réalisation des éléments mémoire de 15 ladite unité de pré-traitement, - la figure 4 illustre un codeur/décodeur de Reed-Solomon classique, - la figure 5 illustre une unité de post-traitement du dispositif selon l'invention, - la figure 6 illustre l'unité de commande de ce dispositif, - les figures 7a et 7b illustrent un algorithme de codage utilisable par le dispositif selon l'invention, - les figures 8a et 8b illustrent un algorithme de décodage utilisable par le dispositif selon l'invention, - les figures 9a et 9b illustrent une unité classique servant à calculer 25 l'inverse d'une matrice carrée de Vandermonde, et - la figure 10 illustre un appareil d'émission/réception ou d'enregistrement/lecture de signaux numériques codés, comprenant un dispositif selon l'invention.
On va décrire à présent un mode de réalisation de l'invention dans lequel on met en oeuvre un procédé de codage tel que décrit dans la demande FR0301546, et un procédé de décodage tel que décrit dans la demande FR0304767; ces procédés ont été décrits succinctement ci-dessus.
De plus, pour fixer les idées, on prend q = 2M (où M est un entier strictement positif) et p = 4.
Prenons par exemple: M = 8, to = 18, tl = 16, t2 = 14, t3 = 12, et R = 143. Avec p = 4, cela correspond à des mots de code de longueur 4R = 572, et à une redondance de: 18+16+14+12 = 60 symboles, comme dans l'exemple de code de géométrie algébrique présenté ci-dessus. La dimension k = 512 de ce code correspond à une taille fréquemment utilisée pour les secteurs logiques de disque dur magnétique.
L'invention dans sa réalisation pratique est donc décrite ici avec un certain nombre de choix avantageux compte tenu des normes techniques actuelles. Mais il est clair que la portée de l'invention est plus large, et qu'elle peut s'adapter facilement à des longueurs de trames plus courtes ou plus longues, ou bien à un corps de Galois différent de celui utilisé.
Dans les figures, dont on trouvera ci-dessous une description 15 détaillée, on a fait usage des conventions suivantes.
Les registres sont considérés comme étant indexés avec l'indice zéro à droite, et les flèches relationnelles n'indiquent pas le sens du décalage, mais simplement l'entrée ou la sortie des données sur les registres. Les décalages des registres sont toujours à droite, c'est-à-dire parcouru avec la position-X croissante. On observera, au passage, que le mot registre désigne, à travers la présente description, aussi bien une zone mémoire de faible capacité (quelques données binaires) qu'une zone mémoire de grande capacité (permettant de stocker un programme entier), au sein d'une mémoire vive ou d'une mémoire morte. On envisagera, de préférence, l'un ou l'autre des moyens de mémorisation suivants: selon un premier mode, chaque registre stocke un nombre entier de symboles de Fq; dans ce cas, les bits composant chaque symbole peuvent avantageusement être traités en parallèle; selon un second mode, chaque registre stocke, pour chaque symbole de Fq, la puissance correspondante de y, où y est une racine (q -1)ème primitive de l'unité dans Fq.
Les signaux de commandes de décalage d'un registre reg quelconque sont notés SRreg (pour shift right reg en anglais). Par exemple, SRA1 désigne le signal de commande de décalage du registre Al.
Les symboles M1, M2, et ainsi de suite, désignent des multiplexeurs. 5 Par commodité, on utilisera la même notation pour un multiplexeur et pour le signal qui le commande.
Enfin, les signaux d'horloge et les signaux de reset ont été volontairement omis afin de faciliter la lecture des figures.
Les opérations addition et multiplication sont réalisées sur le plan matériel de manière classique. Les circuits addition sont simplement des portes ou exclusif appliquées bit après bit sur les symboles représentés sous la forme de multiplets de bits. Ainsi, dans le corps F16 engendré par le polynôme (X4 +X+1), (y' +y1) s'écrit: (1011)+ (0010), et vaut (1001), ce qui correspond à y14 On distingue deux cas de multiplication: la multiplication générale et la multiplication par une constante.
La multiplication par une constante intervient lorsque l'une des opérandes est définie par avance. Les circuits de multiplication par une constante sont en fait une suite de portes ou exclusif organisées sur les M bits représentant la constante. La multiplication est considérée comme une suite d'additions.
Pour réaliser une multiplication par une constante, les circuits sont simples. Par exemple, si le multiplicateur est y5 dans F16, et les bits BO à B3 forment le multiplicande, les bits A0 à A3 du produit sont: A0 ≤ B2 XOR B3, Al ≤ BO XOR B2, A2≤BOXORBI XORB3,et A3 ≤ B1 XOR B2.
Un exemple de cellule de multiplication générale est C = A É B, où ni A ni B ne sont définis d'avance: on peut exprimer dans F2 le calcul de cette multiplication dans F16 (compte tenu de 16 = 24) en utilisant la notation matricielle: AO A3 A2 Al Al A0 + A3 A2 + A3 Al + A2 A2 Al AO + A3 A2+ A3 A3 A2 Al A0 + A3 L'addition se traduit ici par une porte ou exclusif , la multiplication ou juxtaposition par une porte et . La complexité d'une multiplication générale est environ M fois plus grande qu'une multiplication par une constante.
La figure 1 décrit l'architecture générale du dispositif 10 selon l'invention. Ce dispositif 10 comprend quatre unités principales: - une unité de codageldécodage 200, - une unité de pré-traitement 400, - une unité de post-traitement 300, et - une unité de commande 100.
L'unité de commande 100 organise la succession des opérations.
Les unités de pré- et de post-traitement réalisent les étapes, décrites ci-dessus, des procédés de codage et de décodage considérés. L'unité 200 met en oeuvre, de manière classique, le codage et le décodage de codes de Reed- Solomon de longueur (q l) et de redondance t1 (où 1= 0,...,p l) (voir Equation (1)).
La figure 2 montre l'architecture de l'unité de pré-traitement 400.
Quatre registres à décalage de R symboles de M bits chacun nommés Ao à A3 (respectivement 420, 430, 440 et 450) sont utilisés pour mémoriser: - soit des symboles d'information lors du fonctionnement en codeur, - soit des symboles reçus ou lus lors de l'utilisation en correcteur d'erreurs de transmission.
Lorsqu'il s'agit d'un message à coder, le registre Ao 420 reçoit (R to) symboles, le registre A, 440 reçoit (R t,) symboles, le registre A2 430 reçoit (R t2) symboles, et le registre A3 450 reçoit (R t3) symboles. Lorsqu'il CO Cl C2 C3 C= BO B1 B2 B3 s'agit d'un message reçu, les quatre registres reçoivent R symboles de M bits chacun.
Pour clarifier les schémas, le système de chargement de ces registres est omis. Il est évident pour l'homme de l'art que celui-ci peut être 5 effectué en mode série ou parallèle, un par un ou en groupe.
La trame de (4R to t, -t2 t3) symboles de M bits (au codage) ou de 4R symboles de M bits (au décodage) est donc scindée en quatre sous-trames.
Quatre groupes de registres de mémoire adressable en série 410, 10 411, 412, 413 contiennent les coefficients des diagonales des matrices Y, , ces coefficients étant élevés à diverses puissances.
Cette mémoire est ici de la mémoire morte (ROM), mais elle pourrait, en variante, être de la mémoire vive (RAM) si, par exemple, le codeur était utilisé comme circuit périphérique d'un microprocesseur.
Une première façon possible de grouper les mémoires est la suivante: un groupe de quatre registres contient les coefficients des diagonales de matrices Y à la puissance 0, un groupe de quatre registres contient les coefficients des diagonales de matrices Y à la puissance 1, un groupe de quatre registres contient les coefficients des diagonales de matrices Y à la puissance 2, et un groupe de quatre registres contient les coefficients des diagonales de matrices Y à la puissance 3. Les registres contenant les coefficients des diagonales de matrices Y à la puissance 0 sont virtuels, puisqu'il s'agit d'une multiplication par le nombre un; ils sont mentionnés ici pour des raisons de clarté, afin de mettre en avant l'aspect systématique de l'architecture.
Une autre façon possible de grouper les mémoires est en fonction de la matrice à laquelle elles sont rattachées. Sur la figure 2, le groupe 410 est le groupe formé des mémoires contenant les éléments de la diagonale des matrices Y , Y , Y02, et Y 3. Le groupe 411 est le groupe formé des mémoires contenant les éléments de la diagonale des matrices YI, YI , Y12, et et ainsi de suite.
D'une manière générale, il s'agit d'obtenir que les coefficients Y et le mot à coder ou à décoder soient rangés suivant la position-X, ce qui s'obtient de manière naturelle au moyen de registres à décalage.
Le circuit tel qu'illustré permet d'effectuer un certain nombre d'opération en parallèle. On peut bien sûr remplacer les registres série par des registres parallèles et effectuer multiplications et additions en un seul coup d'horloge sur la totalité des données; cette variante permet un traitement plus rapide, mais au prix d'une certaine augmentation du nombre de composants nécessaires.
L'unité de pré-traitement 400 contient également 16 multiplicateurs et 8 additionneurs (tous sur M bits si le corps utilisé est F2M).
Une autre façon de réaliser les circuits 410, 411, 412 et 413 est illustrée en figure 3. Les R symboles de M bits qui constituent une diagonale d'une des matrices Y sont multiplexés sur deux multiplicateurs généraux de M bits (415 et 416). Un compteur 414 permet de créer l'adresse ide Y(i). Il compte donc de 0 à (R 1) (naturellement, il est parfaitement possible en variante de choisir un décrément de (R -1) à zéro). Un multiplexeur permet de choisir la valeur 1 (Y (i)) ou bien Y(i), ou bien Y2(1) ou encore Y3(1). Dans ce cas, on ne peut pas exécuter des calculs en parallèle avec un seul circuit. Ce circuit est l'optimum en termes de nombre de portes, mais en contrepartie il n'est pas l'optimum en vitesse d'exécution. D'autres variantes sont possibles, suivant le compromis vitesse d'exécution/nombre de portes que l'on cherche à réaliser.
Chacun des symboles de M bits des quatre sous-trames peut donc ainsi être multiplié par le symbole correspondant qui appartient à la diagonale de la matrice Y correspondante.
La figure 4 donne un exemple de réalisation de l'unité 200 qui contient un codeur de Reed-Solomon 210 et un décodeur de Reed-Solomon 220. Ces deux unités sont entièrement conformes à l'art antérieur, et ne seront que sommairement décrites ici (on pourra se référer pour cela, par exemple, à la thèse de E. Mastrovito intitulée VLSI architecture for Computations in Galois Field , University of Linkoping, 1991, ou à l'article de A. Hasan et al. intitulé Algorithm and architectures for a VLSI Reed-Solomon Codec , dans Reed-Solomon Codes and Their Applications édité par S. Wicker et V. Bhargava, IEEE Press 1994, ou à l'article de G. Seroussi intitulé A systolic Reed Solomon Encoder , IEEE Transactions on Information Theory, vol. 37 n 4, juillet 1991, ou encore au brevet US-4,958,348).
Le codage peut, de manière connue, s'effectuer en multipliant chaque mot d'information par une matrice génératrice G, ( 1 =0, . . . , p 1) , de dimension (q -1 0 x (q -1) , correspondante (vérifiant chacune H(") . G, =0).
Le codeur peut être réalisé comme un ensemble de p codeurs indépendants, associé chacun à une valeur respective de t, , ou comme un unique codeur associé à une matrice génératrice générale munie d'un paramètre ajustable en fonction de la valeur de t, considérée. Les parités sont obtenues à partir de sommes pondérées des sous-trames.
De même, le décodeur peut être réalisé comme un ensemble de p décodeurs indépendants, associé chacun à une matrice de parité respective H(tt) de dimension t, x(q 1), ou comme un unique décodeur associé à une matrice de parité générale H(tt) dont le nombre de lignes est ajustable en fonction de la valeur de t, considérée. Dans les deux cas, c'est une somme pondérée des sous-trames qui sera multipliée par la matrice de contrôle de parité pour. former le syndrome d'erreurs. On pourra par exemple calculer le syndrome, puis appliquer l'algorithme de Berlekamp-Massey pour obtenir un polynôme localisateur des erreurs, puis appliquer une recherche de Chien pour déterminer les racines de ce polynôme localisateur. Ces racines sont les inverses des positions à valeurs erronées dans la trame. L'algorithme de Forney permettra alors de calculer la magnitude de ces erreurs.
L'article de G. Seroussi et le brevet US 4,958,348 mentionnés ci-dessus indiquent des réalisations systoliques du codeur et du décodeur, qui utilisent un procédé séquentiel au lieu d'un procédé en boucles; ces réalisations sont avantageuses en ce qu'elles ne nécessitent pas de mémorisation supplémentaire. Il est toutefois à noter que les registres du dispositif 10 non encore utilisés peuvent l'être lors du codage et du décodage pour économiser davantage en nombre de portes.
Un multiplexeur 230 permet de choisir laquelle des quatre sous-trames doit être prise en compte pour être codée ou décodée. Un autre multiplexeur 240 permet de choisir l'opération de codage ou l'opération de décodage.
Quatre registres à décalage So, SI, S2 et S3 (respectivement 280, 285, 290 et 295) sont nécessaires pour stocker temporairement les données avant codage ou après décodage. Il est à noter que généralement un décodeur de code de Reed-Solomon donne une information sur la magnitude de l'erreur et sur sa position. L'information sur la position doit être dirigée sur l'unité de commande 100 afin d'y subir une transformation (comme expliqué plus bas en référence à la figure 6), au cas où les indications donnes par le décodeur ne conviennent pas du fait que la trame est raccourcie à un nombre R de symboles inférieur à q. Les magnitudes des erreurs sont stockées dans les registres So à S3. Un multiplexeur 260 permet d'aiguiller les données codées ou les magnitudes d'erreurs sur le multiplexeur 250, lequel permet le choix du registre So, SI, S2 ou S3. On notera également que les multiplexeurs 250 et 260 peuvent être omis dans une variante où les 4 registres seraient constituées par un seul et même registre à décalage.
La figure 5 décrit l'unité de post-traitement 300. Pour une opération de codage, les données codées sont stockées dans les registres So à S3 de l'unité de codage et décodage. Sur la figure 5, les registres qui sont indiqués en pointillé sont des registres qui sont physiquement dans les autres unités; ils sont répétés ici pour faciliter la compréhension. Pour une opération de décodage, les magnitudes des erreurs détectées sont stockées dans les registres So à S3.
L'unité de post-traitement 300 contient principalement une unité de calcul d'une matrice inverse d'une matrice de Vandermonde 500. Cette unité sera décrite en détail plus bas. L'unité de post-traitement 300 contient aussi quatre mémoires adressables qui contiennent chacune R = 143 (dans l'exemple numérique présenté ci-dessus) symboles inverses (portant respectivement les numéros de référence 320, 321, 322, et 323) des symboles des matrices Yo, YI, Y2 et Y3. L'unité de post-traitement 300 effectue également les opérations générales de multiplication et d'addition.
Le multiplexeur 310 permet de choisir le registre So, SI, S2, ou S3 pour le post-traitement.
Dans le cas du codage (pour des explications détaillées, on se référera à la demande FR-0301546), on doit ôter des symboles de redondance dans So les contributions correspondant aux sous-trames AI, A2 et A3 lors du calcul des parités de Ao. On doit ensuite ôter du registre SI les valeurs de A2'Y2 et A3.Y3 pour le calcul des parités de AI, puis ôter du registre S2 les valeurs de A3.Y32 pour le calcul des parités de A2.
Pour ces opérations, on utilise les registres 430, 440 et 450, ainsi que les multiplexeurs 311, 312 et 313.
On doit alors résoudre le système d'équations linéaires (2). Ce système d'équations peut être résolu en inversant une matrice de Vandermonde utilisant les coefficients des matrices Yo, YI, Y2 et Y3 correspondant à l'adresse des éléments de parités. Ainsi, pour les parités contenues dans le registre So aux adresses 0 à to, il s'agit des coefficients Yo(0), YI(0), Y2(0), et Y3(0) qui sont utilisés pour le calcul de la matrice, puis les coefficients Yo(1), YI(1), Y2(1), et Y3(1), et ainsi de suite.
Le choix est laissé à l'homme du métier d'organiser les registres en mettant les parités aux adresses de poids faible, puis les données utilisateurs aux adresses de poids plus élevé, ou le contraire: cela n'a que peu ou pas d'influence sur la complexité de la réalisation.
Le résultat du calcul de la matrice est ensuite multiplié avec le résultat de l'opération précédente. Comme il s'agit d'une multiplication matriceÉvecteur, mais effectuée ligne de matrice après ligne de matrice, un registre tampon 316 est nécessaire pour stocker les résultats intermédiaires, puis le multiplexeur 315 permet d'adresser le registre A correspondant.
Toujours dans le cas du codage, les mémoires 320, 321, 322 et 323 ne sont pas sollicitées. Les multiplexeurs 330, 331, 332 et 333 sont aussi positionnés pour ne pas additionner les parités au contenu du registre.
Dans le cas du décodage, on n'a pas à ôter les contributions précédemment calculées. Les multiplexeurs 311, 312 et 313 mettent alors un zéro en face des opérations d'addition correspondantes. Les résultats des décodages présents dans les registres So, SI, S2 et S3 sont directement multipliés par la matrice inverse de la matrice de Vandermonde formée à partir des coefficients des matrices Yo, YI, Y2 et Y3 correspondant à l'adresse des éléments de la trame qui sont erronés. Dans ce cas, il est nécessaire de multiplier les résultats obtenus dans la multiplication matrice.vecteur par les valeurs stockées dans les mémoires 320, 321, 322 et 323 avant de modifier le registre A, cette fois par addition.
La figure 6 représente l'unité de commande 100, qui peut être réalisée, par exemple, sous la forme d'un dispositif de traitement de données pouvant être commandé par un programme d'ordinateur, ou sous la forme d'un circuit électronique tel qu'un circuit intégré dédié (en anglais Application Specific lntegrated Circuit ou ASIC) ou tel qu'un réseau de portes programmable par l'utilisateur (en anglais Field Programmable Gate Array ou FPGA).
Cette unité de commande 100 contient une machine d'état 120 organisant l'activation et la désactivation de tous les signaux pilotant les opérations de codage et de décodage, par exemple dans des registres à décalage et/ou des multiplexeurs. Le positionnement des multiplexeurs est omis volontairement (pour ne pas surcharger la figure) car il peut se déduire aisément de la description des circuits. De même, pour réaliser certaines opérations, un certain nombre de décalages des registres sont nécessaires. Ils sont indiqués par un incrément sur la valeur i, et réalisés sous forme de compteurs qui peuvent éventuellement être indépendants.
Comme entrées, l'unité de commande 100 accepte un signal indiquant si l'opération est un codage ou un décodage. Il admet aussi un groupe de signaux de symboles de M bits indiquant les positions des symboles erronés venant du décodeur Reed-Solomon et leur nombre.
L'unité de commande 100 contient aussi une table de conversion-X 110, qui met en regard les positions-X de tout registre de longueur R, et la valeur de xf correspondante. En effet, le décodeur 220 indique des positions d'erreurs par rapport à une trame comprenant (q 1) composantes; lorsque R <q-1, il faut, pour décaler le registre A qui doit être mis à jour, tenir compte des positions absentes.
Si l'adresse formée par le code ne correspond pas à une position-X, alors on sait que le décodage est erroné, ce qui peut arriver par exemple si le nombre d'erreurs dépasse la capacité de correction du code. Cette indication est très utile et constitue un avantage de cette méthode par rapport au décodage de Reed-Solomon classique, car le décodeur de Berlekamp-Massey donne ici comme résultat, lorsque la capacité de correction du code est dépassée, un localisateur et un nombre d'erreurs détectées.
On réalise alors une table en utilisant une mémoire à 2M adresses qui contient les M bits de la position-X correspondante si elle existe, et la valeur 2M partout où cette position-X n'existe pas. Un comparateur en sortie de mémoire détecte tous les bits égaux à 1, auquel cas il active un signal de faux décodage .
Les figures 7a et 7b décrivent la succession des opérations pour le codage.
L'étape 1 est le début de l'algorithme de codage. Comme expliqué cidessus, les registres A , AI, A2 et A3 doivent être chargés avec respectivement (R to) symboles de M bits, (R t,) symboles de M bits, (R t2) symboles de M bits, et (R t3) symboles de M bits. L'homme de l'art sait que plusieurs réalisations sont possibles. Si les registres A à A3 sont des registres série chargeables en parallèle, l'opération peut être indépendante de l'unité de commande. Si les registres sont chargés en série, l'unité de commande peut être utilisée pour produire les coups d'horloge nécessaires.
Ensuite, à l'étape 2, les registres Y0 , YI , Y2 , et Y3 sont mis en regard des registres A , AI, A2 et A3 (et ce, par le nombre de décalages correspondant à t ), afin que les multiplications des données utilisateurs par les facteurs correspondants puissent être effectuées à l'étape 3.
La position-X i est incrémentée jusqu'à la valeur (R 1) (test 4), et chaque nouveau décalage fournit une donnée au codeur de Reed-Solomon. Si le codeur est systolique, l'étape 5 serait incluse dans la boucle. Ici le codeur est considéré comme ayant des registres de stockage et comme effectuant les opérations de codage lorsque la trame est prête (étape 5). Une fois cette opération de codage effectuée, on s'intéresse alors aux valeurs dans le registre So qui sont entre la position t1 et la position to.
L'unité de commande décale donc le registre So à l'étape 6 pour que la donnée indexée t1 soit disponible. L'unité de commande décale aussi les registres A1, A2, et A3 à l'étape 6 pour que les données indexées t1 soit disponibles. On peut donc à chaque décalage simultané des registres So, A1, A2, et A3 présenter (étape 7) le résultat So(i)-A1(i)-A2(i)-A3(i) comme élément du vecteur devant être multiplié par la matrice inverse de la matrice de Vandermonde à l'étape 8.
L'inverse de la matrice de Vandermonde se calcule en parallèle à l'étape 7. On note que la série considérée ici est de dimension 1x1 et vaut 1. L'unité de commande dirige le résultat uniquement sur le registre Ao. A l'étape 9, les (to - t1) décalages sont effectués. Dans le registre Ao, on trouve alors aux bonnes positions les résultats de la multiplication vecteur.matrice, qui vont former des données nécessaires au calcul suivant.
A l'étape 11, les registres Yo1, Y11, Y21, et Y31 sont mis en regard des registres Ao, A1, A2 et A3 (et ce, par le nombre de décalages correspondant à t1), afin que les multiplications des symboles d'information par les facteurs correspondants puissent être effectuées à l'étape 12 de même que précédemment. La position-X i est incrémentée jusqu'à la valeur (R 1) (test 13), et chaque nouveau décalage fournit de nouveau une donnée au codeur de Reed-Solomon.
Après le codage à l'étape 14, on s'intéresse aux valeurs dans le registre S1 qui sont entre la position-X t2 et la position-X t1. L'unité de commande décale donc le registre S1 à l'étape 15 pour que la donnée indexée t2 soit disponible. L'unité de commande décale aussi les registres A2, Y2 et A3, Y3 à l'étape 14 pour que les données indexées t2 soit disponibles. L'unité de 2860360 27 commande peut donc à chaque décalage simultané des registres So, Al, A2, et A3 présenter (étape 16) le résultat So(i)-AI(i)-A2(i)-A30) comme premier élément du vecteur devant être multiplié par la matrice inverse de la matrice de Vandermonde à l'étape 17.
Ensuite (toujours à l'étape 16), sans décaler, mais par multiplexage, l'unité de commande peut présenter le résultat S1(i)-A2(i).Y2(i)-A3(i). Y3(i) comme second élément du vecteur devant être multiplié par la matrice inverse de la matrice de Vandermonde à l'étape 17.
L'inverse de la matrice de Vandermonde se calcule à l'étape 19 en parallèle à l'étape 16. Pour cette itération, celle-ci est ici de dimension 2x2. Les données à fournir sont Yo(i) et Y1(i). L'unité de commande dirige le résultat de la multiplication matriceÉvecteur uniquement sur les registres A0 et Al. A l'étape 18, les (t1 - t2) décalages sont effectués. Dans les registres Ao et AI, on trouve alors aux bonnes positions les coefficients résultant de la multiplication vecteur.matrice de l'étape 17, qui vont former des données nécessaires au calcul suivant.
A l'étape 20, les registres Y02, Y12, Y22, et Y32 sont mis en regard des registres A0, AI, A2 et A3 (et ce, par le nombre de décalages correspondant à t2), afin que les multiplications des symboles d'information par les facteurs correspondants puissent être effectuées à l'étape 21. La position-X i est incrémentée jusqu'à la valeur (R 1) (test 22), et chaque nouveau décalage fournit de nouveau une donnée au codeur de Reed-Solomon.
Le résultat du codage est stocké dans le registre S2. Après le codage à l'étape 23, on s'intéresse aux valeurs dans le registre S2 qui sont entre la position t3 et la position t2. L'unité de commande décale donc le registre S2 à l'étape 24 pour que la donnée indexée t3 soit disponible.
L'unité de commande décale aussi les registres A3 et Y3 à l'étape 24 pour que la donnée indexée t3 soit disponible. L'unité de commande peut donc à chaque décalage simultané des registres So, A,, A2 et A3 présenter (étape 25) le résultat So(i)-AI(i)-A2(i)-A3(i) comme premier élément du vecteur devant être multiplié par la matrice inverse de la matrice de Vandermonde à l'étape 26.
Ensuite, sans décaler, mais par multiplexage, l'unité de commande peut présenter le résultat S1(i)-A2(i).Y2(i)-A3(i).Y3(i) comme second élément du vecteur devant être multiplié par la matrice inverse de la matrice deVandermonde à l'étape 26. Ensuite, par multiplexage, l'unité de commande peut présenter le résultat S2(i)-A3(i).Y32(i) comme dernier élément du vecteur devant être multiplié par la matrice inverse de la matrice de Vandermonde à l'étape 26.
L'inverse de la matrice de Vandermonde se calcule à l'étape 28 en parallèle à l'étape 25. Pour cette itération, cette matrice est de dimension 3x3.
Les données à fournir sont Yo(i), Y1(i) et Y2(i). L'unité de commande dirige le résultat de la multiplication matrice-vecteur uniquement sur les registres A0, AI et A2. A l'étape 27, les (t2 - t3) décalages sont effectués. Dans les registres A0, Al et A2 on trouve alors aux bonnes positions les résultats de la multiplication vecteur.matrice de l'étape 26, qui vont former des données nécessaires au calcul suivant.
A l'étape 29, les registres Y03, Y13, Y23, et Y33 sont mis en regard des registres A0, A,, A2 et A3 (et ce, par le nombre de décalages correspondant à t3), afin que les multiplications des symboles d'information par les facteurs correspondants puissent être effectuées à l'étape 30. La position-X i est incrémentée jusqu'à la valeur (R 1) (test 31), et chaque nouveau décalage fournit de nouveau une donnée au codeur de Reed-Solomon.
Le résultat du codage est mémorisé dans le registre S3. Après le codage à l'étape 32, on s'intéresse alors aux valeurs dans le registre S3 qui sont entre la position 0 et la position t3. L'unité de commande décale donc le registre S3 à l'étape 33 pour que la donnée indexée 0 soit disponible. L'unité de commande décale aussi les registres A3 et Y3 à l'étape 33 pour que les données indexées 0 soient disponibles.
L'unité de commande peut donc à chaque décalage simultané des registres So, AI, A2 et A3 présenter (étape 34) le résultat So(i)-Ai(i)-A2(i)-A3(i) comme premier élément du vecteur devant être multiplié par la matrice inverse de la matrice de Vandermonde à l'étape 35.
Ensuite, sans décaler, mais par multiplexage, l'unité de commande peut présenter le résultat S1(i)-A2(i)-Y2(i)-A3(i)ÉY3(i) comme second élément du vecteur devant être multiplié par la matrice inverse de la matrice de Vandermonde à l'étape 35. Ensuite, par multiplexage, l'unité de commande peut présenter le résultat S2(i)-A3(i).Y32(i) comme troisième élément du vecteur devant être multiplié par la matrice inverse de la matrice de Vandermonde à l'étape 35. Ensuite, par multiplexage, l'unité de commande peut présenter le résultat S3(i) comme quatrième et dernier élément du vecteur devant être multiplié par la matrice inverse de la matrice de Vandermonde à l'étape 35.
L'inverse de la matrice de Vandermonde se calcule à l'étape 37 en parallèle à l'étape 34. Pour cette itération, cette matrice est de dimension 4x4. Les données à fournir sont Yo(i), Y1(i), Y2(i) et Y3(i). L'unité de commande dirige le résultat de la multiplication matrice. vecteur uniquement sur les registres A et AI. A l'étape 36, les t3 décalages sont effectués. Dans les registres A , AI, A2 et A3, on trouve alors aux bonnes positions le résultat de la multiplication vecteurmatrice de l'étape 35, et le résultat complet du codage est obtenu.
On va à présent décrire, en référence aux figures 8a et 8b, la correction d'erreurs et/ou d'effacements.
L'étape 1 est le début de l'algorithme de décodage. A cette étape, les registres A , AI, A2 et A3 doivent tous être chargés avec R symboles de M bits. L'homme de l'art sait que plusieurs réalisations sont possibles. Si les registres A à A3 sont des registres série chargeables en parallèle, l'opération peut être indépendante de l'unité de commande. Si les registres sont chargés en série, l'unité de commande peut être utilisée pour produire les coups d'horloge nécessaires.
A l'étape 2, les registres A , AI, A2 et A3 sont respectivement mis en regard des registres Y , YI , Y20, et Y30. L'étape 3 consiste en la multiplication de A(i) par Yo(i), et l'addition des résultats pour former, après R décalages (test 4), un mot de R symboles qui sera soumis au décodeur de Reed-Solomon à l'étape 5. Les magnitudes d'erreurs obtenues sont mémorisées dans le registre S . Il n'est pas nécessaire de sauvegarder les positions d'erreurs lors de ce premier décodage.
A l'étape 6, les registres A0, AI, A2 et A3 sont respectivement mis en regard des registres Yo', Y1', Y21, et Y31. L'étape 7 consiste en la multiplication de A(i) par Y'(i), et l'addition des résultats pour former, après R décalages (test 8), un mot de R symboles qui sera soumis au décodeur de Reed-Solomon à l'étape 9. Les magnitudes d'erreurs obtenues sont mémorisées dans le registre Si. II n'est pas nécessaire de sauvegarder les positions d'erreurs pour ce second décodage.
A l'étape 10, les registres A0, AI, A2 et A3 sont respectivement mis en regard des registres Y02, Y12, Y22, et Y32. L'étape 11 consiste en la multiplication de A(i) par Y2(i), et l'addition des résultats pour former, après R décalages (test 12), un mot de R symboles qui sera soumis au décodeur de Reed-Solomon à l'étape 13. Les magnitudes d'erreurs obtenues sont mémorisées dans le registre S2. Il n'est pas nécessaire de sauvegarder les positions d'erreurs lors de ce troisième décodage.
A l'étape 14, les registres Ao, AI, A2 et A3 sont respectivement mis en regard des registres Y03, Y13, Y23, et Y33. L'étape 15 consiste en la multiplication de A(i) par Y3(i), et l'addition des résultats pour former, après R décalages (test 16), un mot de R symboles qui sera soumis au décodeur de Reed-Solomon à l'étape 17. Les magnitudes d'erreur obtenues sont mémorisées dans le registre S3. Il est nécessaire de sauvegarder les positions d'erreurs lors de ce dernier décodage; cela peut être réalisé dans l'unité de commande 100, où les adresses sont converties en positions-X et où les faux décodages sont détectés (étape 18).
On doit alors résoudre le système d'équations linéaires (4). Pour cela, on doit effectuer le calcul de la matrice inverse de la matrice de Vandermonde, avec comme entrées les valeurs des matrices Yo, YI, Y2 et Y3 qui correspondent aux positions-X détectées comme erronées.
A l'étape 19, un compteur est remis à zéro. Ce compteur a pour butée le nombre d'erreurs détectées (test 22). On utilise alors le calcul de la matrice inverse (étape 20) avec comme base de calcul les valeurs Yo, Y,, Y2 et Y3 correspondant à la position-X de l'erreur traitée.
A l'étape 21, cette matrice est multipliée par le vecteur mémorisé dans les quatre registres So, S,, S2 et S3 qui mémorisaient les magnitudes obtenues par les décodages; il faut ensuite diviser le résultat obtenu par Yo, Y1, Y2 ou Y3 pour obtenir les valeurs devant être ajoutées aux registres A0, AI, A2 ou A3.
Les figures 9a et 9b explicitent l'unité 500 servant à calculer l'inverse d'une matrice carrée de Vandermonde. On rappelle qu'une matrice carrée de Vandermonde V est de la forme w-1 2 w-1 w-1 1 a,w où les Ii (i = 1,...,w) sont tous différents deux à deux.
Pour inverser une telle matrice, on définit un ensemble de polynômes: z 2 Pi(z) ' , où i,j= 1,...,w.
i 2. j On voit que le polynôme Pi(z) s'annule pour z = aj pour tout j i, et vaut 1 pour z = 2.i; en conséquence, en formant une matrice dont les lignes sont définies par les coefficients de ce polynôme, on obtient bien l'inverse d'une matrice de Vandermonde. Pour obtenir ces coefficients avec le moins d'opérations à effectuer possible, on peut utiliser le polynôme: w-1 F(z) _ H(z 2) , j=o et définir 77i = H(2i -21) . On a alors: Pi( z) = 1 F(z) 77i z 2i L'unité 500 contient deux sous-unités 510 et 520. V=
L'unité 510 est dédiée au calcul des paramètres 17o, 771, 772 et 173.
L'unité de commande 100 choisit grâce au multiplexeur 512 le coefficient Y qui doit être mémorisé dans le registre 513. Puis le multiplexeur piloté par le signal M20 oriente les autres coefficients Y vers l'addition (rappelons qu'addition et soustraction sont des opérations identiques dans un corps de Galois utilisant F2). Les résultats sont multipliés et mémorisés dans le registre 514. La première multiplication se fait avec la valeur un. Une Look-Up Table 515, c'est à dire une mémoire contenant les nombres inverses des nombres présentés à l'adressage, permet d'éviter une division. Un multiplexeur permet d'aiguiller la valeur finale vers sa destination dans l'unité 520.
L'unité 520 calcule les lignes de la matrice inverse. Le système calcule d'abord le polynôme F(z), puis divise ce polynôme par les coefficients Y en parallèle. Une multiplication par les coefficients ÎO, 17i 772 et 713 est effectuée ensuite. On notera que le cadencement des opérations permet d'obtenir les coefficients de toutes les lignes en parallèle, ou bien les coefficients d'une ligne les uns après les autres, puis une autre ligne, et ainsi de suite.
Dans ce mode de réalisation, le cadencement ligne après ligne est adopté afin de réduire le nombre de registres mémoire nécessaires.
Le système est réalisé suivant la dimension de matrice 4x4 qui est la dimension maximale de ce mode de réalisation. Les matrices de dimension 1x1, 2x2, et 3x3 sont obtenues avec le même système, en programmant les compteurs suivant la dimension de la matrice.
On voit, sur la base de cet exemple à quatre matrices, que le procédé de codage comme le procédé de décodage sont en fait itératifs et structurés. Il est naturellement possible d'extrapoler la structure pour des hypermatrices constituées de N x N (où N > 4) sous-matrices.
La figure 10 est un schéma synoptique d'un appareil d'émission/réception ou d'enregistrement/lecture 70 de signaux numériques 30 codés, comprenant un dispositif 10 selon l'invention.
Cet appareil a pour fonction de transmettre des informations de nature quelconque à partir d'une source 101 vers un destinataire ou utilisateur 108. En premier lieu, la source 101 met ces informations sous la forme de symboles appartenant à un certain alphabet (par exemple des octets de bits dans le cas où la taille q de l'alphabet vaut 256), et transmet ces symboles à une unité de stockage 102, 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 102 au dispositif 10 qui, fonctionnant en codeur, construit un mot de code v de longueur n.
Le dispositif 10 transmet les mots de code v à un modulateur 103.
Ce modulateur 103 associe à chaque groupe de bits de taille prédéterminée un symbole de modulation selon une certaine règle. II pourra par exemple s'agir d'une amplitude complexe définie selon la constellation 4-QAM, ou 8-DPSK ou 16-QAM.
Ensuite, ces symboles de modulation sont transmis à un enregistreur, ou à un émetteur, 104, qui insère les symboles dans un canal de transmission. Ce canal peut être par exemple un stockage sur un support adapté tel qu'un DVD ou une bande magnétique, ou bien une émission filaire ou non- filaire comme c'est le cas d'un lien radio.
Cette transmission, après avoir été affectée par un bruit de transmission dont l'effet est de modifier ou d'effacer, aléatoirement, certaines des données transmises, parvient à un lecteur, ou à un récepteur, 105. Ce lecteur ou récepteur 105 transmet alors ces symboles élémentaires au démodulateur 106, qui les transforme en symboles de l'alphabet Fq.
Ces symboles de Fq sont groupés par séquences de n symboles successifs, chacune de ces séquences constituant un mot reçu r. Ce mot r est ensuite traité par le dispositif 10, qui, en mettant en oeuvre un algorithme de correction d'erreurs adapté, fournit un mot de code associé Une fois la correction terminée, le mot de code associé est transmis à une unité de calcul des symboles d'information 107, qui en extrait k symboles d'information en inversant la transformation mise en oeuvre au cours du codage. Enfin, ces symboles d'information sont fournis à leur destinataire 108.

Claims (10)

REVENDICATIONS
1. Dispositif (10) pour le codage de symboles d'information à transmettre ou enregistrer, et la correction d'erreurs parmi des symboles reçus ou lus, selon des codes définis sur un corps de Galois Fq, où q est un entier supérieur à 2 et égal à une puissance d'un nombre premier, et dans lesquels on considère un ensemble d'éléments de Fq notés yl (j) , où j =1,
., R avec 1 R q 1 et 1= 0,..., p -1 avec p >1, ledit dispositif (10) comprenant un codeur de Reed-Solomon (210), un décodeur de Reed-Solomon (220) et une 10 unité (500) servant à calculer l'inverse d'une matrice de Vandermonde, caractérisé en ce qu'il comprend en outre: - des registres A (420, 430, 440, 450) dans lesquels sont mémorisés É pour le codage, lesdits symboles d'information, et É pour la correction d'erreurs, les symboles reçus ou lus après qu'ils aient été corrigés, - des registres S (280, 285, 290, 295) dans lesquels sont mémorisés É pour le codage, les symboles sortant dudit codeur de Reed-Solomon 20 (210), et É pour la correction d'erreurs, les symboles entrant dans ledit décodeur de Reed-Solomon (220), et - des registres Y (410, 411, 412, 413) dans lesquels sont mémorisés lesdites grandeurs y1(j)...CLMF:
2. Dispositif selon la revendication 1, caractérisé en ce que ledit décodeur de Reed-Solomon (220) est de longueur (q 1), et en ce que le dispositif (10) comprend une table de conversion-X (110) mettant en regard les indices de tout registre de longueur R avec des éléments respectifs du corps de Galois Fq.
3. Dispositif selon la revendication 1 ou la revendication 2, caractérisé en ce que dans lesdits registres Y sont également mémorisées les puissances yl (j)s, où s= 2,..., p -1, des symboles yl (j) .
4. Dispositif selon la revendication 1 ou la revendication 2, 5 caractérisé en ce qu'il comprend également des circuits multiplicateurs permettant de calculer les puissances yl (j)s, où s= 2,..., p l, des symboles yl (j) , après que les valeurs de ces symboles ont été lues dans les registres Y , au cours des étapes de post-traitement.
5. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend une machine d'état (120) apte à organiser l'activation et la désactivation de tous les signaux pilotant les opérations de codage et de correction d'erreurs.
6. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend une unité de commande (100) réalisée sous la forme d'un circuit électronique tel qu'un circuit intégré dédié (ASIC) ou un réseau de portes programmable par l'utilisateur (FPGA).
7. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend une unité de commande (100) réalisée sous la forme d'un dispositif de traitement de données pouvant être commandé par un programme d'ordinateur.
8. Programme d'ordinateur, caractérisé en ce qu'il contient des instructions aptes à faire fonctionner l'unité de commande (100) du dispositif selon la revendication 7.
9. Appareil d'émission et de réception de signaux numériques codés (70), comprenant des moyens (103) pour moduler lesdits signaux numériques codés, un émetteur de données modulées (104), un récepteur de données modulées (105), des moyens (106) pour démoduler lesdits signaux numériques codés, et des moyens (107) pour calculer les symboles d'information estimés à partir des mots reçus corrigés, caractérisé en ce qu'il comprend un dispositif
selon l'une quelconque des revendications 1 à 7.
10. Appareil d'enregistrement et de lecture de signaux numériques codés (70), comprenant des moyens (103) pour moduler lesdits signaux numériques codés, un enregistreur de données modulées (104), un lecteur de données modulées (105), des moyens (106) pour démoduler lesdits signaux numériques codés, et des moyens (107) pour calculer les symboles d'information estimés à partir des mots lus corrigés, caractérisé en ce qu'il comprend un dispositif selon l'une quelconque des revendications 1 à 7.
FR0311365A 2003-09-29 2003-09-29 Dispositif de codage /decodage utilisant un codeur/decodeur de reed-solomon Expired - Fee Related FR2860360B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR0311365A FR2860360B1 (fr) 2003-09-29 2003-09-29 Dispositif de codage /decodage utilisant un codeur/decodeur de reed-solomon
US10/952,597 US7404134B2 (en) 2003-09-29 2004-09-29 Encoding/decoding device using a reed-solomon encoder/decoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0311365A FR2860360B1 (fr) 2003-09-29 2003-09-29 Dispositif de codage /decodage utilisant un codeur/decodeur de reed-solomon

Publications (2)

Publication Number Publication Date
FR2860360A1 true FR2860360A1 (fr) 2005-04-01
FR2860360B1 FR2860360B1 (fr) 2005-12-09

Family

ID=34307236

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0311365A Expired - Fee Related FR2860360B1 (fr) 2003-09-29 2003-09-29 Dispositif de codage /decodage utilisant un codeur/decodeur de reed-solomon

Country Status (2)

Country Link
US (1) US7404134B2 (fr)
FR (1) FR2860360B1 (fr)

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2805102A1 (fr) * 2000-02-16 2001-08-17 Canon Kk Procedes et dispositifs d'emission et de reception d'information, et systemes les mettant en oeuvre
FR2858141A1 (fr) * 2003-07-21 2005-01-28 Canon Kk Codage d'informations par codes de reed-solomon raccourcis
FR2863794B1 (fr) * 2003-12-16 2006-03-03 Canon Kk Procedes et dispositifs de localisation d'erreurs pour les codes de geometrie algebrique
FR2865083B1 (fr) * 2004-01-13 2006-04-07 Canon Kk Decodage pour code de geometrie algebrique associe a un produit fibre.
FR2866998B1 (fr) * 2004-02-27 2006-05-19 Canon Kk Decodage et correction d'erreurs pour codes de geometrie algebrique
FR2873518B1 (fr) * 2004-07-22 2008-12-19 Canon Kk Procede de codage et de decodage d'une sequence de mots, signal, codeur, decodeur, programmes d'ordinateur et moyens de stockage correspondants
DE102004063950B4 (de) * 2004-08-07 2009-02-19 Tropf, Hermann Kanalcodiervorrichtung
FR2880218B1 (fr) * 2004-12-23 2007-02-16 Canon Kk Procede de decodage pour codes de geometrie algebrique et dispositif associe
EP1845660B1 (fr) * 2006-04-12 2012-08-29 STMicroelectronics Srl Procédé pour l'aggrégation et la transmission de signaux de capteurs
FR2919773A1 (fr) 2007-07-30 2009-02-06 Canon Kk Procede de decodage de blocs de donnees de contenus, produit programme d'ordinateur, moyen de stockage et dispositif de decodage correspondants
WO2009095902A2 (fr) 2008-01-31 2009-08-06 Densbits Technologies Ltd. Systèmes et procédés pour traiter des erreurs de données immédiates dans une mémoire flash
US8650352B2 (en) 2007-09-20 2014-02-11 Densbits Technologies Ltd. Systems and methods for determining logical values of coupled flash memory cells
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
WO2009053961A2 (fr) 2007-10-25 2009-04-30 Densbits Technologies Ltd. Systèmes et procédés pour rendements de codage multiples dans des dispositifs flash
WO2009072105A2 (fr) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. Recherche de chien de faible puissance basée sur un système de décodage bch/reed-solomon destiné à une mémoire flash, dispositifs de communications mobiles et autres applications
US8335977B2 (en) 2007-12-05 2012-12-18 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells
US8341335B2 (en) 2007-12-05 2012-12-25 Densbits Technologies Ltd. Flash memory apparatus with a heating system for temporarily retired memory portions
US8359516B2 (en) 2007-12-12 2013-01-22 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US8276051B2 (en) 2007-12-12 2012-09-25 Densbits Technologies Ltd. Chien-search system employing a clock-gating scheme to save power for error correction decoder and other applications
WO2009078006A2 (fr) 2007-12-18 2009-06-25 Densbits Technologies Ltd. Appareil pour le codage avec une pluralité de vitesses dans des systèmes de mémoires flash à niveaux multiples et procédés utiles associés
US7916665B2 (en) * 2008-03-18 2011-03-29 Canon Kabushiki Kaisha Method and device for building of a network coding scheme for data transmission, corresponding computer program product and storage means
US8972472B2 (en) 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US8332725B2 (en) 2008-08-20 2012-12-11 Densbits Technologies Ltd. Reprogramming non volatile memory portions
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8566510B2 (en) 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US8305812B2 (en) 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US8868821B2 (en) 2009-08-26 2014-10-21 Densbits Technologies Ltd. Systems and methods for pre-equalization and code design for a flash memory
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US8626988B2 (en) 2009-11-19 2014-01-07 Densbits Technologies Ltd. System and method for uncoded bit error rate equalization via interleaving
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8607124B2 (en) 2009-12-24 2013-12-10 Densbits Technologies Ltd. System and method for setting a flash memory cell read threshold
US8700970B2 (en) 2010-02-28 2014-04-15 Densbits Technologies Ltd. System and method for multi-dimensional decoding
US8527840B2 (en) 2010-04-06 2013-09-03 Densbits Technologies Ltd. System and method for restoring damaged data programmed on a flash device
US8516274B2 (en) 2010-04-06 2013-08-20 Densbits Technologies Ltd. Method, system and medium for analog encryption in a flash memory
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US9021177B2 (en) 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
US8621321B2 (en) 2010-07-01 2013-12-31 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8539311B2 (en) 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
US8467249B2 (en) 2010-07-06 2013-06-18 Densbits Technologies Ltd. Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US8508995B2 (en) 2010-09-15 2013-08-13 Densbits Technologies Ltd. System and method for adjusting read voltage thresholds in memories
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US10079068B2 (en) 2011-02-23 2018-09-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Devices and method for wear estimation based memory management
US8693258B2 (en) 2011-03-17 2014-04-08 Densbits Technologies Ltd. Obtaining soft information using a hard interface
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US8667211B2 (en) 2011-06-01 2014-03-04 Densbits Technologies Ltd. System and method for managing a non-volatile memory
US8588003B1 (en) 2011-08-01 2013-11-19 Densbits Technologies Ltd. System, method and computer program product for programming and for recovering from a power failure
US9179362B2 (en) * 2011-08-25 2015-11-03 Texas Instruments Incorporated Systems and methods for networking coding using Reed-Solomon codes
US8553468B2 (en) 2011-09-21 2013-10-08 Densbits Technologies Ltd. System and method for managing erase operations in a non-volatile memory
US8683296B2 (en) 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
US8914706B2 (en) 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
DE102012004273B4 (de) * 2012-03-01 2014-07-03 Deutsches Zentrum für Luft- und Raumfahrt e.V. Verfahren zum Wiederherstellen verlorengegangener und/oder beschädigter Daten
US9191060B2 (en) * 2012-04-16 2015-11-17 The Hong Kong University Of Science And Technology Distributive source coding and signal processing
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
JP6354194B2 (ja) * 2014-02-18 2018-07-11 富士通株式会社 マルチプレクサ回路、マルチプレクサ回路の設計プログラムおよびマルチプレクサ回路の設計装置
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
JP5927323B1 (ja) * 2015-05-12 2016-06-01 日本電信電話株式会社 行列作用装置、行列作用方法、およびプログラム
JP5918884B1 (ja) * 2015-05-12 2016-05-18 日本電信電話株式会社 復号装置、復号方法、およびプログラム
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
TWI566091B (zh) * 2015-09-10 2017-01-11 慧榮科技股份有限公司 用來對一錯誤更正碼進行解碼之方法與解碼電路
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US10601448B2 (en) 2017-06-16 2020-03-24 International Business Machines Corporation Reduced latency error correction decoding
KR20210080807A (ko) 2019-12-23 2021-07-01 삼성전자주식회사 메모리 컨트롤러 및 메모리 시스템
CN116028260B (zh) * 2023-01-09 2024-02-27 海光信息技术股份有限公司 数据的处理方法、处理装置以及存储系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020060873A1 (en) * 2000-10-06 2002-05-23 Masaharu Kondo Recording/reproducing apparatus, error correcting coding method and information recording method

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2124806B (en) * 1982-08-06 1986-05-14 Sony Corp Method of correcting errors in binary data
GB2143659B (en) * 1983-07-19 1986-11-05 Sony Corp Methods of and apparatus for correcting errors in binary data
US4958348A (en) * 1988-02-12 1990-09-18 Eastman Kodak Company Hypersystolic Reed-Solomon decoder
US5392299A (en) * 1992-01-15 1995-02-21 E-Systems, Inc. Triple orthogonally interleaed error correction system
DE69317867T2 (de) * 1992-12-14 1998-10-22 Koninkl Philips Electronics Nv Verfahren und Vorrichtung zur Realisierung eines Quasiproduktkodes mit verschiedenen Fehlerschutzstufen
US5535140A (en) * 1993-01-22 1996-07-09 Canon Kabushiki Kaisha Polynominal-set deriving apparatus and method
US5483236A (en) * 1993-12-20 1996-01-09 At&T Corp. Method and apparatus for a reduced iteration decoder
US5872798A (en) * 1994-02-16 1999-02-16 U.S. Philips Corporation Error correctable data transmission method and device based on semi-cyclic codes
US5617541A (en) * 1994-12-21 1997-04-01 International Computer Science Institute System for packetizing data encoded corresponding to priority levels where reconstructed data corresponds to fractionalized priority level and received fractionalized packets
FR2740925A1 (fr) * 1995-11-08 1997-05-09 Canon Kk Procede et dispositif de detection et de correction d'une eventuelle erreur dans une suite de nombres
EP0813315A3 (fr) * 1996-06-13 1998-06-10 Canon Kabushiki Kaisha Transmission MAQ à étalement de spectre
JPH10135848A (ja) * 1996-10-30 1998-05-22 Texas Instr Japan Ltd リードソロモン符号化装置およびその方法
US6301307B1 (en) * 1996-12-23 2001-10-09 Canon Kabushiki Kaisha Methods and apparatuses for the transmission and receipt of digital data modulated using quadrature amplitude modulation, and communication devices utilizing such apparatuses and methods
DE69729433T2 (de) * 1996-12-23 2005-06-09 Canon K.K. Kodierte Modulation für Konstellationen, welche weniger Bits pro Symbol haben, als vom Kodierungsschema verlangt wird
FR2758681A1 (fr) * 1997-01-22 1998-07-24 Canon Kk Allocation a une pluralite d'elements d'autorisations d'acces a une ressource partagee
US5942005A (en) * 1997-04-08 1999-08-24 International Business Machines Corporation Method and means for computationally efficient error and erasure correction in linear cyclic codes
US6226259B1 (en) * 1997-04-29 2001-05-01 Canon Kabushiki Kaisha Device and method for transmitting information device and method for processing information
EP0884879A3 (fr) * 1997-06-13 1999-03-17 Canon Kabushiki Kaisha Transmission MAQ, utilisant un spèctre étalé et une estimation de séquences
FR2767940A1 (fr) * 1997-08-29 1999-02-26 Canon Kk Procedes et dispositifs de codage et de decodage et appareils les mettant en oeuvre
EP0928071B8 (fr) * 1997-12-30 2007-04-25 Canon Kabushiki Kaisha Entrelaceur pour turbo-codeur
FR2777144A1 (fr) * 1998-04-01 1999-10-08 Canon Kk Dispositif et procede de transmission d'information et dispositif et procede de reception d'information
FR2778047A1 (fr) * 1998-04-28 1999-10-29 Canon Kk Procede et dispositif d'emission d'information, procede et dispositif de reception d'information
US6543021B1 (en) * 1998-07-16 2003-04-01 Canon Kabushiki Kaisha Method and device for coding and transmission using a sub-code of a product code
US6449746B1 (en) * 1998-08-17 2002-09-10 T. K. Truong Decoding method for correcting both erasures and errors of reed-solomon codes
FR2785743A1 (fr) * 1998-11-09 2000-05-12 Canon Kk Dispositif et procede d'adaptation des turbocodeurs et des decodeurs associes a des sequences de longueur variable
FR2785744B1 (fr) * 1998-11-09 2001-01-26 Canon Kk Procede et dispositif de codage de sequences de donnees, procede et dispositif de decodage associes
FR2785741B1 (fr) * 1998-11-09 2001-01-26 Canon Kk Dispositif et procede de codage et d'entrelacement pour des turbocodes series ou hybrides
FR2787955B1 (fr) * 1998-12-29 2003-01-24 Canon Kk Procede et dispositif de transfert d'information, procede et dispositif de reception d'information et stations de reseau les mettant en oeuvre
DE69943198D1 (de) 1998-12-30 2011-03-31 Canon Kk Kodierungsvorrichtung und Verfahren, Dekodierungsvorrichtung und Verfahren und dazugehörige Systeme
FR2789824B1 (fr) * 1999-02-12 2001-05-11 Canon Kk Procede de correction d'erreurs residuelles a la sortie d'un turbo-decodeur
US6609223B1 (en) * 1999-04-06 2003-08-19 Kencast, Inc. Method for packet-level fec encoding, in which on a source packet-by-source packet basis, the error correction contributions of a source packet to a plurality of wildcard packets are computed, and the source packet is transmitted thereafter
US6634007B1 (en) * 1999-11-08 2003-10-14 Codevector Technology Algebraic soft decoding of reed-solomon codes
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
FR2805102A1 (fr) * 2000-02-16 2001-08-17 Canon Kk Procedes et dispositifs d'emission et de reception d'information, et systemes les mettant en oeuvre
FR2807237A1 (fr) * 2000-04-04 2001-10-05 Canon Kk Procede et dispositif d'evaluation du bruit associe aux turbocodes, et systemes les mettant en oeuvre
TW541519B (en) * 2000-05-24 2003-07-11 Acer Labs Inc Encoding/decoding system in optical disk storage device
FR2811169B1 (fr) * 2000-06-28 2002-09-06 Canon Kk Procede et dispositif de decodage et systemes les mettant en oeuvre
US6877125B2 (en) * 2000-09-18 2005-04-05 Canon Kabushiki Kaisha Devices and methods for estimating a series of symbols
FR2815199B1 (fr) * 2000-10-10 2003-01-17 Canon Kk Procedes de turbocodage circulaire de grande distance minimale, et systemes pour leur mise en oeuvre
US6732325B1 (en) * 2000-11-08 2004-05-04 Digeo, Inc. Error-correction with limited working storage
US6895546B2 (en) * 2001-08-16 2005-05-17 Broad-Light Ltd. System and method for encoding and decoding data utilizing modified reed-solomon codes
US6625039B2 (en) * 2001-08-29 2003-09-23 International Business Machines Corporation EMI spring configuration
WO2003079557A1 (fr) * 2002-03-04 2003-09-25 Seagate Technology Llc Codage de correction d'erreurs utilisant une conversion de base numerique pour le codage de modulation
FR2837331B1 (fr) * 2002-03-13 2004-06-18 Canon Kk Procede d'entrelacement d'une sequence binaire
FR2838580B1 (fr) * 2002-04-12 2005-04-01 Canon Kk Procedes et dispositifs de faible cout pour le decodage de codes produits
US7117424B2 (en) * 2002-05-13 2006-10-03 Lucent Technologies Inc. Block coding method having increased flexibility in choice of code length or minimum code distance
FR2845220B1 (fr) * 2002-09-30 2004-12-17 Canon Kk Procedes et dispositifs pour le decodage des codes de geometrie algebrique a un point
US7089276B2 (en) * 2002-10-18 2006-08-08 Lockheed Martin Corp. Modular Galois-field subfield-power integrated inverter-multiplier circuit for Galois-field division over GF(256)
FR2847398B1 (fr) 2002-11-18 2005-02-18 Canon Kk Codes sesqui-rs doubles et leur decodage
US7581156B2 (en) * 2002-12-16 2009-08-25 Microsoft Corporation Systems and methods for providing improved encoding and reconstruction of data
FR2849514A1 (fr) 2002-12-26 2004-07-02 Canon Kk Code de geometrie algebrique adapte aux erreurs en rafale
FR2851096A1 (fr) 2003-02-10 2004-08-13 Canon Kk Procede et dispositif de codage
FR2853976B1 (fr) * 2003-04-16 2005-06-03 Canon Kk Codage d'informations par code de geometrie algebrique offrant deux options de decodage
US7350126B2 (en) * 2003-06-23 2008-03-25 International Business Machines Corporation Method for constructing erasure correcting codes whose implementation requires only exclusive ORs

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020060873A1 (en) * 2000-10-06 2002-05-23 Masaharu Kondo Recording/reproducing apparatus, error correcting coding method and information recording method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LIU FENG ET AL: "Algebraic geometry codes from Reed Solomon codes", SOUTHEASTCON '96. BRINGING TOGETHER EDUCATION, SCIENCE AND TECHNOLOGY., PROCEEDINGS OF THE IEEE TAMPA, FL, USA 11-14 APRIL 1996, NEW YORK, NY, USA,IEEE, US, 11 April 1996 (1996-04-11), pages 231 - 237, XP010163678, ISBN: 0-7803-3088-9 *

Also Published As

Publication number Publication date
FR2860360B1 (fr) 2005-12-09
US7404134B2 (en) 2008-07-22
US20050138533A1 (en) 2005-06-23

Similar Documents

Publication Publication Date Title
FR2860360A1 (fr) Dispositif de codage /decodage utilisant un codeur/decodeur de reed-solomon
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é
US6219815B1 (en) High-speed syndrome calculation
EP0265336B1 (fr) Opérateur polynomial dans les corps de Galois, et processeur de traitement de signal numérique comportant un tel opérateur
US6026420A (en) High-speed evaluation of polynomials
EP0821493B1 (fr) Système de correction d&#39;erreurs dans des trames de données ayant des codes de parité horizontaux et verticaux
FR2849514A1 (fr) Code de geometrie algebrique adapte aux erreurs en rafale
FR2549319A1 (fr) Dispositif decodeur pour le decodage de mots de code qui sont proteges par blocs au moyen d&#39;un code de reed-solomon contre plusieurs erreurs de symbole par bloc et dispositif de lecture pour des corps de stockage pouvant etre lus par voie optique, ce dispositif de lecture etant pourvu d&#39;un tel dispositif decodeur
FR2845220A1 (fr) Procedes et dispositifs pour le decodage des codes de geometrie algebrique a un point
FR2900294A1 (fr) Chargement de la memoire d&#39;entree d&#39;un decodeur ldpc avec des donnees a decoder
FR2853976A1 (fr) Codage d&#39;informations par code de geometrie algebrique offrant deux options de decodage
FR2673341A1 (fr) Agencement de circuit pour detecter et corriger des defauts dans des mots de donnees.
FR2540690A1 (fr) Verificateur de codeur
FR2866998A1 (fr) Decodage et correction d&#39;erreurs pour codes de geometrie algebrique
EP0204612A1 (fr) Procédé de transmission, avec possibilité de correction de paquets d&#39;erreurs, de messages d&#39;information et dispositifs de codage et de décodage pour la mise en oeuvre de ce procédé
FR2865083A1 (fr) Decodage pour code de geometrie algebrique associe a un produit fibre.
FR2863794A1 (fr) Procedes et dispositifs de localisation d&#39;erreurs pour les codes de geometrie algebrique
FR2714555A1 (fr) Procédé et dispositif pour calculer un polynôme localisateur d&#39;erreurs à utiliser dans un décodeur de Reed-Solomon.
EP1076933B1 (fr) Dispositif de correction d&#39;erreurs et lecteur de disque optique comportant un tel dispositif
FR2838580A1 (fr) Procedes et dispositifs de faible cout pour le decodage de codes produits
FR2776115A1 (fr) Dispositif de correction d&#39;erreurs et lecteur de disque optique comportant un tel dispositif
FR2867925A1 (fr) Codage de canal adapte aux erreurs rafale
FR2858141A1 (fr) Codage d&#39;informations par codes de reed-solomon raccourcis
FR2880218A1 (fr) Procede de decodage pour codes de geometrie algebrique et dispositif associe
FR2873875A1 (fr) Localisation d&#39;erreurs pour codes de geometrie algebrique

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20140530