Brevet FR2823035A1 — publié le 20021004

CODE DE DÉTECTION ET/OU DE CORRECTION D'ERREURS À HAUTE EFFICACITÉ La présente invention concerne les codes de détection et/ou de correction d'erreurs, et en particulier les codes linéaires de type Hamming. Le code de Hamming est un code de détection et de correction d'erreurs utilisé dans de nombreux domaines, par exemple en stockage ou en transmission de données. On va décrire son utilisation en stockage de données dans une mémoire, dans le cas où les données à mémoriser sont sous forme de mots de 16 bits. Soit X le mot à stocker. X peut être représenté par un vecteur Xe, dont les 16 composantes Xo à X15 correspondent aux 16 bits du mot à stocker. Cinq bits de détection d'erreur Ci (Co à C4) sont obtenus en multipliant une matrice de contrôle de parité H, dite matrice de Hamming, de dimension 5 x 16 par le vecteur Xe, sous forme de vecteur colonne. La figure 1A illustre la matrice de Hamming H pour 16 bits et la figure 1B le mode d'obtention des bits de détection. Si l'on appelle hij les éléments de la matrice H, les bits de détection d'erreur Ci sont donnés par : Xj étant la jième composante du vecteur Xe. En écriture, on inscrit dans la mémoire des mots de 21 bits, formés des 16 bits de données Xj et des 5 bits de détection Ci. En lecture, le mot lu comprend 16 bits Xr correspondant aux bits de données et 5 bits Cr correspondant aux bits de détection. xr et Cr peuvent ne pas être égaux à Xj et Ci si des erreurs ont eu lieu entre les opérations d'écriture et de lecture. Pour détecter et/ou corriger des erreurs éventuelles sur les bits lus, un syndrome S à cinq composantes So à S4 est calculé en multipliant une matrice déterminée H'de dimension 5 x 21 par un vecteur colonne à 21 composantes, comprenant les 16 bits xr et les 5 bits Cr reçus. La figure 2A illustre la matrice H'. Les 16 premières colonnes de la matrice H'correspondent aux 16 colonnes de la matrice H. Les 5 colonnes suivantes comprennent chacune un seul r. La 17ème colonne a son s sur la première ligne, la 18ème colonne a son"1"sur la deuxième ligne, et ainsi de suite jus- qu'à la 21ème colonne, qui a son ! sur la cinquième ligne. Les cinq dernières colonnes de la matrice H'servent à déterminer des erreurs éventuelles dans les bits de détection. La figure 2B illustre le calcul du syndrome S. Si le syndrome S a toutes ses composantes égales à 0, le stockage a eu lieu sans erreur et tous les bits du mot lu, bits de données ou bits de détection, sont corrects. Si S est différent de 0, le mot lu comporte une ou plusieurs erreurs. Si un seul bit du mot lu est erroné, le syndrome obtenu permet de corriger l'erreur. En effet, le syndrome correspond dans ce cas à la colonne dont les éléments ont été multipliés par le bit erroné. Ainsi, si le syndrome calculé est égal à : les composantes (00011) du syndrome correspondent aux éléments de la première colonne de la matrice de Hamming et cela signifie que le premier bit, Xi, est erroné. De même, si le syndrome calculé est égal à et qu'il n'y a qu'une seule erreur dans le mot lu, cela signifie que c'est le premier bit de détection Co qui est erroné. Un inconvénient du code de Hamming ci-dessus est qu'il ne peut pas détecter deux erreurs. Par exemple, si une erreur s'est produite sur les bits X, et X2, le syndrome obtenu est égal à la somme modulo 2 des syndromes correspondant à des erreurs sur Xl et X2, c'est-à-dire à : S'''= (00101) + (00110) = (00011). Le syndrome obtenu indique une erreur sur le bit Xi, ce qui est faux. En effet, on sait que le code de Hamming ci-dessus a une distance minimale de code d = 3 et qu'un code linéaire comme le code de Hamming est capable de corriger L erreurs et de détecter L+l erreurs si sa distance minimale de code d est strictement supérieure à 2L+1. Pour améliorer le code ci-dessus et en faire un code ayant une distance minimale de code égale à 4, il est connu d'adjoindre au mot à stocker un bit de parité totale P. Le bit de parité totale P est calculé en faisant la somme module 2 de tous les bits de données et de tous les bits de détection. Le bit de parité est ajouté au mot à stocker, et l'ensemble constitué par le mot à stocker, les bits de détection et le bit de parité totale est mémorisée. En lecture, le mot lu est multiplié par la matrice de contrôle de parité H" représentée en figure 3A. La matrice H"a une ligne et une colonne de plus que la matrice HI. La matrice H" comporte, en haut et à gauche, c'est-à-dire sur les cinq premières lignes et les 21 premières colonnes, un bloc identique à la matrice H'. La dernière ligne D de la matrice Ht ne comporte que des "1", et la dernière colonne de la matrice H" ne comporte que des"0", à l'exception de la dernière ligne. Le syndrome obtenu S'est illustré en figure 3B. Le syndrome S'comporte six composantes SO à S5, et est obtenu en multipliant la matrice H"par un vecteur colonne comportant les 22 bits du mot lu, composé des 16 bits de données lus, suivis des cinq bits de détection lus et du bit de parité totale lu. Le code ainsi obtenu est un code dit"SEC-DED" ("Single Error Correction"-"Double Error Détection"), signifiant"Correction d'une erreur-Détection de deux erreurs". Ce code peut détecter deux erreurs dans tous les cas, deux erreurs étant indiquées par le fait que la dernière composante du syndrome, S5, est nulle alors que le syndrome est différent du vecteur nul. Cependant, le code ci-dessus présente l'inconvénient de nécessiter le calcul du bit de parité totale P. Ce calcul est long, car il nécessite l'addition module 2 de chacun des bits de données et des bits de détection. Le calcul du bit de parité totale ne peut pas être effectué en parallèle avec les bits de détection, car son calcul nécessite la connaissance préalable des bits de détection. Par conséquent, il faut attendre que tous les bits de détection aient été calculés pour effectuer le calcul du bit de parité totale P. Il en résulte une perte de temps, ainsi qu'un nombre élevé d'additionneurs module 2. Un autre inconvénient du code de Hamming décrit ci-dessus est que la matrice de Hamming n'est ni symétrique, ni régulière. Si l'on considère que les éléments d'une colonne correspondent à la représentation binaire d'un nombre, la variation de ce nombre n'est pas régulière et connaît des sauts. Ces sauts rendent difficiles la réalisation d'un circuit mettant en oeuvre le code de Hamming ainsi que le décodage du syndrome, c'est-à-dire la détermination du bit erroné. Un objet de la présente invention est de prévoir un code de détection et/ou de correction d'erreurs de type SEC-DED, à savoir permettant la correction d'une erreur et la détection de deux erreurs qui est plus simple que le code de Hamming correspondant. Un autre objet de la présente invention est de prévoir un procédé pour mettre en oeuvre un tel code de détection et/ou de correction d'erreurs. Un autre objet de la présente invention est de prévoir un procédé pour mettre en oeuvre un tel code de détection et/ou de correction d'erreurs qui puisse être mis en oeuvre de façon simple par un circuit intégré. Un autre objet de la présente invention est de prévoir un procédé pour mettre en oeuvre un tel code de détection et/ou de correction d'erreurs permettant un décodage facile. Pour atteindre ces objets, la présente invention prévoit un procédé pour déterminer r bits de détection d'erreur pouvant être associés à un mot de m bits à coder, comprenant l'étape consistant à faire le produit d'un vecteur à m composantes représentatif du mot de m bits à coder et d'une matrice de contrôle de parité de dimension r x m. La matrice de contrôle de parité est telle que chaque colonne de ladite matrice comporte un nombre impair de"1"supérieur ou égal à trois. Selon un mode de réalisation de la présente invention, les r-3 derniers éléments de chaque colonne de ladite matrice font partie d'une première sous-matrice de rang i, la représentation binaire desdits r-3 éléments indiquant le rang i de la première sous-matrice. Selon un mode de réalisation de la présente invention, les premières sous-matrices comprennent des sous-matrices de dimension (r-3) xl et des sous-matrices de dimension (r-3) x3. Selon un mode de réalisation de la présente invention, les trois premières lignes de la matrice de contrôle de parité comprennent des secondes sous-matrices, dans lequel les secondes sous-matrices comprennent des sous-matrices de dimension 3xl et des sous-matrices de dimension 3x3, les secondes sous-matrices de dimension 3x1 ne comportant que des"0"ou que des"1", et les secondes sous-matrices de dimension 3x3 étant soit la matrice identité, soit son inverse. Selon un mode de réalisation de la présente invention, la première seconde sous-matrice est une sous-matrice de dimension 3x1 ne comportant que des"1", et dans lequel les autres premières sous-matrices de dimension 3xl ne comportent que des"0". Selon un mode de réalisation de la présente invention, la seconde sous-matrice de rang i a un nombre de colonnes égal au nombre de colonnes de la première sous-matrice de même rang. Selon un mode de réalisation de la présente invention, deux ou plusieurs lignes et/ou colonnes de la matrice de contrôle de parité sont permutées. Selon un mode de réalisation de la présente invention, le nombre r des bits de détection d'erreurs est égal à n+2, n étant tel que le nombre de bits du mot à coder peut être représenté par n bits. La présente invention concerne aussi un procédé de détermination d'un syndrome représentatif d'erreurs éventuelles survenues, au cours d'un traitement, à un mot de m+r bits, les m+r bits correspondant, avant traitement, à m bits d'un mot à coder et r bits de détection d'erreurs obtenus par un procédé selon une des revendications précédentes appliqué au mot de m bits à coder, le syndrome étant obtenu au cours d'une étape consistant à multiplier une matrice particulière de dimension r x (m+r) par un vecteur à m+r composantes représentatives dudit mot de m+r bits. Ladite matrice particulière comporte : a) pour les m premières colonnes, un bloc de dimension r x m correspondant à la matrice de contrôle de parité utilisée au codage, et b) pour les r dernières colonnes, un bloc de dimension r x r en forme de matrice diagonale, ne comportant que des"1" sur sa diagonale principale et des"0"partout ailleurs. Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles : les figures lA et lB, précédemment décrites, représentent respectivement une matrice de Hamming H et le mode d'obtention de bits de détection pour coder un mot de 16 bits ; les figures 2A et 2B, précédemment décrites, représentent respectivement une matrice de Hamming H'pour calculer un syndrome et le mode de calcul du syndrome pour un mot de 16 bits ; les figures 3A et 3B, précédemment décrites, représentent respectivement une matrice de Hamming H utilisé dans un code permettant de détecter deux erreurs pour des mots de 16 bits et le mode de calcul du syndrome correspondant ; la figure 4A représente une matrice de contrôle de parité M selon la présente invention pour coder un mot de 16 bits ; La figure 4B représente une matrice M'selon la présente invention pour décoder un mot de 16 bits ; la figure 4C représente schématiquement un circuit pour décoder un mot codé à l'aide de la matrice M ; la figure 4D représente un élément du circuit de la figure 4C ; les figures SA et SB représentent respectivement une matrice de contrôle de parité M2 selon la présente invention pour coder un mot de 32 bits et une matrice M'2 pour décoder un mot codé à l'aide de la matrice M2 ; la figure 6A représente une matrice de contrôle de parité M3 selon la présente invention pour coder un mot de 64 bits ; et la figure 6B représente une variante de la matrice M3. La figure 4A représente une matrice de contrôle de parité M permettant de coder des mots de 16 bits. La matrice M est une matrice de dimension 6 x 16. Les trois premières lignes de la matrice M sont constituées par six sous-matrices Ai, i représentant la position de la sous-matrice et allant de 0 à 5. La sous-matrice AO comporte une seule colonne qui ne comprend que des 9. Les sousmatrices suivantes sont des matrices carrées de dimension 3x3. Les sous-matrices Al, A2 et A4 sont identiques. Elles comportent des 0 sur leur diagonale principale et des 1 partout ailleurs. Les sous-matrices A3 et A5 sont identiques. Elles comportent des 1 sur leur diagonale principale et des 0 partout ailleurs. Les sous-matrices A3 et AS correspondent à la matrice identité I et les sous-matrices Al, A2 et A4 à l'inverse de la matrice identité, I. Les trois dernières lignes de la matrice M sont constituées par six sous-matrices Bi, i représentant la position de la sous-matrice et allant de 0 à 5. Chaque sous-matrice Bi est située sous la matrice Ai de même rang et a le même nombre de colonnes que celle-ci. Toutes les colonnes d'une matrice Bi sont identiques. La représentation binaire des éléments d'une colonne de la sous-matrice Bi indiquent le rang i de la sous-matrice. Ainsi par exemple, la sous-matrice BO ne comprend qu'une colonne formée des éléments"000"et chacune des trois colonnes de la sous-matrice B4 est constituée des éléments"100", représentation binaire du nombre 4. Chaque colonne de la matrice M est différente des autres colonnes de la matrice M. Les colonnes de la matrice M sont deux à deux linéairement indépendantes, c'est-à-dire que la somme module 2 de deux colonnes quelconques de la matrice M ne redonne pas une colonne de la matrice M. En outre, chacune des colonnes de la matrice M ne comporte que trois t Pour coder un mot de 16 bits, on détermine d'abord 6 bits de détection C0 à C5 en multipliant la matrice M par un vecteur colonne ayant pour composantes les bits du mot à coder. Ensuite, on affecte les 6 bits de détection aux 16 bits du mot à coder et on mémorise le tout. La figure 4B représente la matrice M'utilisée pour décoder des mots codés à l'aide de la matrice M. Au décodage, le mot lu est un mot de 22 bits, constitué de 16 bits de données et 6 bits de détection. La matrice M'est une matrice de dimension 6 x 22. La matrice M'est constituée de deux blocs. Un premier bloc, à gauche, formant les 16 premières colonnes de la matrice M', est identique à la matrice M. Un deuxième bloc C, à droite, représentant les 6 dernières colonnes de la matrice M', est une matrice diagonale carrée de dimension 6 x 6 qui ne comporte que des t sur sa diagonale principale et des"0"partout ailleurs. Toutes les colonnes de la matrice M'sont différentes les unes des autres et deux à deux linéairement indépendantes. Le code réalisé à l'aide des matrices M et M'est un code de type SEC-DED, c'est-à-dire permettant la correction d'une erreur et la détection de deux erreurs. Au décodage, on multiplie la matrice M'par un vecteur colonne ayant pour composantes les bits de données et de détection du mot lu. Le résultat de cette multiplication est un syndrome se présentant sous la forme d'un vecteur colonne de six composantes, SO à S5. Si le syndrome obtenu est le vecteur nul (toutes ses composantes sont égales à zéro), il n'y a pas d'erreur, ni sur les bits de données, ni sur les bits de détection. Si le syndrome obtenu n'est pas le vecteur nul et la parité du syndrome est impaire (SO OS1 0 S2 représentation binaire des éléments d'une sous-matrice Bi correspond au rang de la sous-matrice, la recherche du bit erroné est très simplifiée par rapport à l'art antérieur. Si le syndrome obtenu n'est pas le vecteur nul et la parité du syndrome est paire, deux erreurs se sont produites et sont détectées. La figure 4C représente schématiquement un circuit 1 pour calculer le syndrome précédent. Sur 22 entrées EO à E21, le circuit reçoit les 16 bits de données lus XO à X15 et les 6 bits de détection lus C0 à C5. Le circuit comporte 6 sorties SO à S5 fournissant les six composantes du syndrome. Chaque entrée Ei est reliée à une colonne de rang i du circuit. Chaque sortie Sj est reliée à une colonne de rang j. A l'intersection de la colonne i et de la ligne j peut se trouver un additionneur modulo 2 Gi, j indiqué par un cercle marqué d'une croix. Les additionneurs sont par exemple réalisés par des portes OU-Exclusif. Comme cela est représenté en figure 4D, l'additionneur Gi, j comporte deux entrées ei et ej. L'entrée ei est reliée à l'entrée Ei et l'entrée ej reçoit le signal présent sur la ligne j à gauche de l'addi tionneur Gi, j. L'additionneur Gij comporte aussi une sortie s située sur la ligne j à droite de l'additionneur Gi-j. Lorsqu'il n'y a pas d'additionneur à l'intersection de la colonne i et de la ligne j, cela signifie que la colonne i et la ligne j se croisent sans influence l'une sur l'autre. Cela signifie que le bit fourni à l'entrée concernée n'est pas utilisé pour le calcul de la composante Sj du syndrome. Une colonne supplémentaire, a, située à gauche de la colonne 0 relie l'entrée ej de chaque premier additionneur d'une colonne à la masse (GND). Le fonctionnement du circuit de décodage va être expliqué pour le calcul de la composante S3 du syndrome, correspondant à la ligne de rang 3. En partant de la gauche, le premier additionneur rencontré est l'additionneur Glo, 3. L'entrée e3 de l'additionneur G, 3 est reliée à la masse et son entrée elO reçoit le bit de données X10 par l'intermédiaire de l'entrée E10 du circuit. En sortie de l'additionneur G10, 3, on a s = 0 E X10, c'est-à-dire X10. Le signal fourni par l'additionneur G10, 3 attaque l'entrée ell de l'additionneur Gll, 3, qui effectue le calcul X10 ? Xll. Le calcul se poursuit ainsi jusqu'à l'additionneur Gl9 3, qui réalise l'addition modulo 2 du résultat fourni par l'additionneur G, 3 et du bit de détection C3. Ainsi, on a : S3 = X10 E Xll E X12 ? X13 ? X14 E X15 (D C3, ce qui correspond bien à la multiplication de la quatrième ligne de la matrice M'par un vecteur ayant pour composantes les bits du mot lu. De façon générale, le circuit de décodage de la figure 4C reprend la structure de la matrice M', les lignes et les colonnes du circuit correspondant aux lignes et aux colonnes de la matrice M', un additionneur modulo 2 étant situé là où la matrice M'comporte un 1. Dans le code décrit en relation avec les figures 4A à 4D, il est inutile de calculer un bit de parité totale pour pouvoir détecter deux erreurs, contrairement à l'art antérieur. Toutes les composantes du syndrome peuvent être calculées en parallèle, d'où un gain de temps. Le motif formé par les additionneurs est assez répétitif, ce qui favorise la réalisation du circuit. Le circuit utilisé pour le codage n'a pas été représenté. Il correspond au circuit de décodage, à l'exception des six dernières colonnes, qui sont supprimées. Les sorties du circuit de codage fournissent les bits de détection. Bien entendu, il est possible de généraliser le codage et décodage de la présente invention à des mots de plus de 16 bits. La figure 5A illustre une matrice de contrôle de parité M2 pour coder des mots de 32 bits. Lors de la description de la formation de la matrice M2, on s'attachera à énoncer les principes généraux servant à réaliser les matrices de contrôle de parité selon la présente invention. De façon générale, dans le code selon la présente invention, chaque colonne de la matrice de contrôle de parité comporte un nombre impair de"1"supérieur ou égal à 3. De façon générale également, on s'attachera, bien que cela ne soit pas nécessaire, à former d'abord toutes les combinaisons de colonne possibles comportant trois"1", puis les combinaisons comportant cinq"1", et ainsi de suite si besoin est. Pour former une matrice de contrôle de parité selon la présente invention, on commence par déterminer le nombre de bits de détection nécessaires, qui détermine la dimension de la matrice de contrôle de parité. De façon générale, le nombre de bits de détection utilisés dans le présent code est égal à n + 2, 2n représentant un nombre supérieur ou égal au nombre de bits du mot à coder. Ainsi, dans l'exemple précédent pour 16 bits, nous avions 16 = 24, ce qui faisait un nombre de bits de détection égal à 4 + 2 = 6. Dans l'exemple présent, 32 est égal à 25. Il y a donc 7 bits de détection et la matrice de contrôle de parité M2 est de dimension 7 x 32. Ensuite, on isole un bloc L de la matrice formé des trois premières lignes. Le bloc L va être découpé en sousmatrices Ai. Selon ce qui convient, les sous-matrices Ai sont des sous-matrices colonne formées des éléments"111"ou"000"ou des sous-matrices carrées de dimension 3x3 correspondant à la matrice identité I ou à son inverse 1. Si besoin est, la dernière sousmatrice du bloc L est incomplète. Sous le bloc L, se trouvent n-l lignes, dont les éléments constituent les colonnes de sous-matrices Bi. Les éléments d'une colonne d'une sous-matrice Bi quelconque sont identiques aux éléments des autres colonnes de la sous-matrice Bi, si elles existent, et leur représentation binaire indique le rang i de la sous-matrice. Les sous-matrices Ai et Bi de même rang sont situées l'une au-dessus de l'autre et ont un même nombre de colonnes. On va maintenant détailler la formation de la matrice M2 de la figure 5A, en insistant sur le choix entre une et trois colonnes pour les sous-matrices Bi. En figure SA, lorsqu'une sous-matrice Bi comporte trois colonnes, une seule colonne est représentée, par souci de clarté. La première sous-matrice Bi est la sous-matrice BO de rang 0. la sous-matrice BO est une sous-matrice colonne et tous ses éléments sont nuls. Comme on veut obtenir trois"1"au minimum par colonne, on doit placer au-dessus de la sous-matrice BO une sous-matrice colonne AO de type"111". La sous-matrice BO ne comporte nécessairement qu'une seule colonne car il est impossible d'avoir une configuration comportant trois"1"et se terminant par"0000"autre que la configuration"1110000". Ensuite, on détermine les sous-matrices Bl et Al, de rang 1. Les éléments d'une colonne de la sous-matrice Bl devant représenter le rang de la sous-matrice, une colonne de la sousmatrice Bl est formée des éléments"0001". Comme on souhaite trois"1"pour chaque colonne de la matrice M2, une colonne de la sous-matrice Bl doit être surmontée par trois éléments dont deux sont des"1"et un est un"O". Cela correspond à trois combinaisons possibles et la sous-matrice Bl va comporter trois colonnes. La sous-matrice Bl est surmontée par la sous-matrice Al, de dimension 3x3. Chaque colonne de la sous-matrice Al doit comporter deux"1"par colonne. Toutes les colonnes de la sousmatrice Al doivent par ailleurs être différentes et deux à deux linéairement indépendantes. Les colonnes de la matrice inverse de la matrice identité répondant à ces critères, c'est elle qui va être choisie comme matrice Al. Ensuite, la sous-matrice B2 a trois colonnes identiques formées des éléments"0010", dont la représentation binaire est le nombre 2. Au-dessus des trois colonnes de la matrice B2, on place une matrice A2 qui est à nouveau l'inverse de la matrice identité, 1, car cette matrice comporte deux"1"à chaque colonne. Les trois colonnes de la sous-matrice B3 sont formées des éléments"0011". Chaque colonne de la sous-matrice B3 comportant ici deux"1", on place au-dessus de la sous-matrice B3 une sous-matrice A3 comportant un seul"1"à chaque colonne, les colonnes de la sous-matrice A3 étant différentes et deux à deux linéairement indépendantes. Pour sous-matrice A3, on choisit la matrice identité I, correspondant à ces critères. Bien entendu, on pourrait, en restant dans le cadre de la présente invention, intervertir deux colonnes quelconques des sous-matrices Al, A2 ou A3. De façon générale d'ailleurs, toute permutation de deux ou plusieurs lignes ou colonnes d'une matrice de contrôle de parité selon la présente invention procure un code ayant les mêmes effets et avantages que ceux qui sont décrits. Les sous-matrices B4, B5 et B6 sont formées selon les principes précédents. Elles possèdent chacune trois colonnes, comprenant respectivement les éléments"0100","0101"et"0110". Les sous-matrices A4, AS et A6 correspondantes sont constituées respectivement par les matrices l, I et 1. Les 19 premières colonnes de la matrice M2 sont ainsi définies. La sous-matrice suivante, B7, a une colonne seulement. En effet, la représentation binaire du nombre 7 est"0111". Cette représentation binaire comporte déjà trois "1". Comme on veut que les colonnes de la matrice M2 comportent d'abord toutes les combinaisons possibles ayant trois"1"seulement, la sous-matrice B7 aura une colonne seulement et on choisira les éléments de la sous-matrice A7 égaux à"000". Les sous-matrice B8, B9 et B10 ont chacune trois colonnes d'éléments respectifs"1000", 1001","1010"et les sousmatrices A8, A9 et A10 correspondantes sont respectivement les matrices I, 1 et I. La représentation binaire du nombre 11 est"1011". Cette représentation binaire comportant déjà trois"1", la sousmatrice Bll n'a qu'une seule colonne. La sous-matrice colonne All correspondante a pour éléments "000", car on souhaite épuiser d'abord toutes les combinaisons possibles de trois"1"pour les colonnes de la matrice M2. Trente colonnes de la matrice M2 sont déjà codées. Il ne reste plus que deux colonnes à déterminer. Ces deux colonnes correspondant à une sous-matrice B12 dont chaque colonne a l'expression"1100". Au-dessus, on va placer une sous-matrice A12 formée d'une partie seulement de la matrice identité I. En figure 5A, on a pris les deux premières colonnes de la matrice identité I, mais bien entendu on pourrait prendre deux quelconques colonnes de la matrice identité I sans que cela sorte du domaine de la présente invention. La matrice M2 est désormais entièrement formée. Toutes ses colonnes sont distinctes les unes des autres, deux à deux linéairement indépendantes et possèdent trois"1"exactement chacune. La figure 5B représente une matrice M'2 servant au décodage des mots codés à l'aide de la matrice M2. La matrice M'2 est formée de deux blocs, un premier bloc de dimension 7x32, à gauche et correspondant à la matrice M2, suivi d'un deuxième bloc C"de dimension 7x7, correspondant à une matrice diagonale avec des"1"sur la diagonale principale et des"0"partout ailleurs. Comme dans le cas précédent, le code obtenu par utilisation des matrices M2 et M'2 est un code de type SEC-DED, permettant la correction d'une erreur et la détection de deux erreurs. Si le syndrome obtenu en multipliant la matrice M'2 par le mot lu est le vecteur nul, il n'y a pas d'erreur. Si le syndrome obtenu n'est pas le vecteur nul et la parité du syndrome est impaire, il y a une seule erreur pouvant être corrigée, les composantes du syndrome correspondant à la colonne de la matrice M'2 qui a été multipliée par le bit erroné. Si le syndrome obtenu n'est pas le vecteur nul et la parité du syndrome est paire, deux erreurs se sont produites et sont détectées. Jusqu'à présent, on a formé que des matrices de contrôle de parité qui comprennent trois"1"exactement par colonne. Cependant, si l'on cherche à coder des mots plus longs, toutes les combinaisons à trois bits peuvent être épuisées, et des combinaisons comprenant cinq"1"par colonne seront alors utilisées. Le tableau 1 ci-après indique le nombre de bits de détection utilisés en fonction du nombre de bits du mot à coder, la dimension de la matrice de contrôle de parité utilisée au codage, le nombre de possibilités de colonnes à trois"1", ainsi que le nombre de colonnes devant comporter cinq"1". TABLEAU 1 Nombre de Nombre de Dimension Nombre de Nombre de bits du mot bits de de la possibilités à colonnes à coder détection matrice trois"1"par comportant (2n) (n+2) colonne cinq"1" 16 = 24 6 6x16 6x5x4/3'=2 0 > 16 0 32 = 25 7 7x32 7x6x5/3 ! =35 > 32 0 64 = 26 8 8x64 8x7x6/3 ! =56 8 128 = 27 9 9x128 9x8x7/3 ! =84 44 Le nombre de possibilités de colonnes à trois"1"est donné par la formule : (n-2) (n-l) n/3 !, avec 3 ! = 3 x 2 = 6. Dans le tableau 1, on voit que pour 16 et 32 bits, les possibilités de colonnes comportant trois"1"sont supérieures au nombre de colonnes de la matrice de contrôle de parité. Par conséquent, il est inutile d'utiliser des colonnes comportant cinq"1"pour construire ces matrices. Pour des mots à coder de 64 bits, il faut 8 bits de détection et chaque colonne de la matrice de contrôle de parité a 8 éléments. Le nombre total de colonnes à trois"1"est égal à 56. Par conséquent, on utilisera les 56 possibilités offertes pour des colonnes à trois"1"et on complétera par 64-56 = 8 colonnes comportant cinq"1". Pour des mots de 128 bits, on utilise 9 bits de détection. La matrice de contrôle de parité est de dimension 9 x 128. Le nombre total de colonnes différentes comportant trois"1"est égal à 84 et il faudra compléter la matrice de contrôle de parité avec 44 colonnes comportant cinq s A titre d'exemple, pour illustrer comment ces colonnes comportant cinq"1"sont introduites, on va expliquer la formation de la matrice de contrôle de parité selon la présente invention pour des mots de 64 bits. On notera que, si l'on souhaitait coder des mots comportant un très grand nombre de bits, il est possible, après épuisement des combinaisons de colonnes à cinq 11111, de créer des colonnes comportant sept"1" etc., l'invention n'étant pas limitée à des colonnes comportant trois ou cinq"1". La figure 6A représente une matrice de contrôle de parité M3 selon la présente invention destinée à coder des mots de 64 bits. Le nombre de bits de détection est égal à 8 et la matrice M3 est de dimension 8x64. Les 32 premières colonnes de la matrice M3 correspondent aux colonnes de la matrice M2, à l'exception près que chacune des 32 premières colonnes de la matrice M3 comporte 8 éléments au lieu de 7, le quatrième élément de chaque colonne étant un élément supplémentaire égal à 0. En figure 6A, les 30 premières colonnes de la matrice M3 n'ont pas été représentées en détail. Elles comprennent, sur les trois premières lignes, les sous-matrices AO,... All de la matrice M2. Ensuite, toujours en ne considérant que les trente premières colonnes, se trouve une quatrième ligne ne comportant que des 11011. En dessous, les quatre dernières lignes comprennent les sous-matrices BO à Bll de la matrice M2. Les deux colonnes suivantes, à savoir les colonnes de rang 30 et 31, correspondent aux deux dernières colonnes de la matrice M2. Ici cependant, la sous-matrice B12 est une sousmatrice de dimension 5x3, dont les éléments d'une colonne sont "01100". La sous-matrice B12 est surmontée par la matrice identité I de dimension 3x3, afin que chacune des colonnes 31,32 et 33 de la matrice M3 comporte trois 11111. La suite de la matrice M3 est formée selon les principes décrits en relation avec les exemples précédents. Ainsi, la sous-matrice B13 ne possède qu'une seule colonne d'éléments "01101", surmontée par trois "0", puisqu'il y a déjà trois"1"dans l'expression binaire du nombre 14. Ensuite, vient la sous-matrice colonne B14 d'éléments"01110", également surmontée de trois"0". Pour former la sous-matrice B15, on exprime d'abord le nombre 15 en binaire, ce qui donne 01111. Pour la première fois, quatre"1"sont présents dans une colonne d'une sous-matrice Bi. Comme on souhaite avoir un nombre impair de"1 ! par colonne, on placera, au-dessus de la matrice B15, une sous-matrice A15 égale à la matrice identité I. Ensuite, vient la sous-matrice B16, dont la colonne a pour expression un"10000", surmontée par la matrice I, afin de disposer de trois"1"par colonne. Les sous-matrices B17, B18 et B20 comprennent deux"1"par colonne. Les sous-matrices B17, B18 et B20 ont trois colonnes chacune et sont surmontées par des sous-matrices Ai correspondantes égales à la matrice identité I. Les sous-matrices B19, B21 et B22 ont des colonnes comprenant trois"l". Les sous-matrices B19, B21 et B22 n'ont qu'une colonne chacune, surmontée par une sous-matrice Ai de forme "000". La sous-matrice suivante, B23, a trois colonnes d'expression "10111", qui comportent quatre "1", comme la sousmatrice B15. Pour que les colonnes correspondantes de la matrice M3 comportent cinq"1", une sous-matrice A23 égale à la matrice identité I est placée sur la sous-matrice B23. La matrice M3 comporte désormais six colonnes qui possèdent cinq"1". En figure 6A, les références des sous-matrices Bi entourées par un cercle sont celles qui correspondent à des colonnes de la matrice M3 comportant cinq "1". La sous-matrice suivante B24 a trois colonnes d'expression"11000". Elle est surmontée par la matrice identité I. La sous-matrice suivante B25 a une seule colonne d'expression "11001". Elle est surmontée par trois "0". La sous-matrice suivante B26 a une seule colonne d'expression"11010". Elle est surmontée par une sous-matrice colonne A26 de la forme 11000". La sous-matrice suivante B27 a des colonnes dont l'expression,"1101l", comporte quatre"l". Comme on a vu, en relation avec le tableau 1, qu'il fallait 8 huit colonnes possédant cinq"1", et que 6 colonnes à cinq"1"sont déjà présentes, la sous-matrice B27 sera incomplète et ne comportera que deux colonnes. Elles seront surmontées par deux colonnes quelconques de la matrice identité I. Par exemple, en figure 6A, on a pris les deux premières colonnes de la matrice identité, à savoir"100"et"010". La sous-matrice B27 est suivie de la sous-matrice B28 comportant une seule colonne d'expression"11100", surmontée par "000". Les 64 colonnes de la matrice M3 sont désormais formées. Les colonnes de la matrice M3 sont toutes différentes, linéairement indépendantes deux à deux, et comportent soit trois "1", soit cinq"1". Toutes les combinaisons de colonnes à trois "1" ont été utilisées. En formant la matrice M3 de la figure 6A, il a fallu se souvenir, pour être certain d'utiliser toutes les combinaisons possibles de colonnes à trois"1"seulement, du nombre total de colonnes à cinq"l"à utiliser. Ainsi, la sous-matrice B27 a été incomplète et n'a compris que deux colonnes, pour permettre à la dernière possibilité à trois"1" ("00011100") d'être présente dans la matrice M3. Cependant, le code selon la présente invention aurait très bien pu utiliser une matrice B27 complète, surmontée par la matrice identité I, et ne pas utiliser la dernière possibilité offerte par les combinaisons à trois"1". Un tel code fait encore partie de la présente invention. Si l'on souhaite éviter de garder présent à l'esprit le nombre de possibilités à cinq éléments nécessaires, on forme, toujours pour coder des mots de 64 bits, une matrice M4 comme cela est décrit en relation avec la figure 6B. En figure 6B, de mêmes références désignent de mêmes éléments qu'en figure 6A. La matrice M4 reprend les 35 premières colonnes de la matrice M3, c'est-à-dire les colonnes comprenant les sous-matrices BO à B14. La sous matrice B15 est identique à celle de la figure 6A, mais on ne la place pas à la suite de la sous-matrice B14 car elle comporte quatre"l". La sous-matrice B15 est mise en réserve et sera placée après épuisement de toutes les combinaisons à trois"1". Ainsi, la sous-matrice qui suit la sous-matrice B14 est la sous-matrice B16. Les sous-matrices suivantes sont les sous-matrices B17, B18, B19, B20, B21 et B22. La sous-matrice Bi qui suit la sous-matrice B22 est la sous- matrice B24, car la sous-matrice B23 comporte quatre"1"et est temporairement mise en réserve. La sous-matrice B24 est suivie des sous-matrices B25, B26 et B28, la sous-matrice B27 étant gardée en réserve. Avec la sous-matrice colonne B28, toutes les possibilités de colonnes comportant trois"1"ont été épuisées. Cela représente 56 colonnes, comme cela apparaît dans le tableau 1. On place alors les sous-matrices Bi mises temporairement en réserve, de façon à former les colonnes restantes de la matrice M4. On place ainsi les trois colonnes de la sous-matrice B15, les trois colonnes de la sous-matrice B23 et deux colonnes de la sous-matrice B27, afin de former les 64 colonnes de la matrice M4. En procédant ainsi, c'est la dernière sous-matrice formée qui, le cas échéant, est incomplète et il est inutile de garder à l'esprit le nombre de colonnes comportant cinq | pour utiliser toutes les possibilités de colonnes à trois"1". On notera que, dans chacun des codes de la présente invention, il est inutile de calculer un bit de parité total, et que les matrices formées présentent des motifs répétitifs, favorisant l'implémentation des circuits de codage et de décodage. Bien entendu, la présente invention est susceptible de diverses variantes et modifications qui apparaîtront à l'homme de l'art. En particulier, toute permutation de deux ou plusieurs colonnes et/ou lignes d'une matrice de contrôle de parité selon la présente invention conduit à un code équivalent faisant partie du domaine de la présente invention. Le nombre de bits du mot à coder n'est pas nécessairement un multiple de deux. Il peut être aussi inférieur à 16. Par exemple, le mot à coder peut être un mot de 7 bits. On notera que, au-dessus d'une matrice Bi incomplète, on peut utiliser une ou deux quelconques colonnes de la matrice identité I ou de son inverse I, selon le cas. Ainsi, si la matrice Bi incomplète ne comporte qu'une seule colonne, une colonne quelconque des sous-matrices I ou I pourra être retenue. Si la sous-matrice Bi incomplète comporte deux colonnes, on pourra retenir au choix deux colonnes quelconques des sousmatrices I ou I. On notera aussi qu'il est possible d'utiliser d'autres combinaisons de colonnes à trois ou cinq"1"que celles décrites en relation avec les figures 4A à 6B. Ainsi, on peut choisir 16 possibilités quelconques parmi les 20 possibilités de colonnes à trois"1"pour coder des mots de 16 bits, sans nécessairement utiliser le choix effectué en relation avec la figure 4A. On notera aussi que le code de la présente invention s'applique à tout domaine dans lequel les codes de correction et/ou détection d'erreur sont utilisés, par exemple en transmission. REVENDICATIONS 1. Procédé pour déterminer r bits de détection d'erreur (CO à Cor-1) pouvant être associés à un mot de m bits à coder, comprenant l'étape consistant à faire le produit d'un vecteur à m composantes représentatif du mot de m bits à coder et d'une matrice de contrôle de parité (M, M2, M3, M4) de dimension r x m, caractérisé en ce que la matrice de contrôle de parité est telle que chaque colonne de ladite matrice comporte un nombre impair de"1"supérieur ou égal à trois. 2. Procédé selon la revendication 1, dans lequel les r-3 derniers éléments de chaque colonne de ladite matrice font partie d'une première sous-matrice (Bi) de rang i, la représentation binaire desdits r-3 éléments indiquant le rang i de la première sous-matrice. 3. Procédé selon la revendication 2, dans lequel les premières sous-matrices (Bi) comprennent des sous-matrices de dimension (r-3) xl et des sous-matrices de dimension (r-3) x3. 4. Procédé selon une des revendications précédentes, dans lequel les trois premières lignes de la matrice de contrôle de parité comprennent des secondes sous-matrices (Ai), dans lequel les secondes sous-matrices comprennent des sous-matrices de dimension 3xl et des sous-matrices de dimension 3x3, les secondes sous-matrices de dimension 3xl ne comportant que des"0" ou que des"1", et les secondes sous-matrices de dimension 3x3 étant soit la matrice identité, soit son inverse. 5. Procédé selon la revendication 4, dans lequel la première seconde sous-matrice (AO) est une sous-matrice de dimension 3x1 ne comportant que des"1", et dans lequel les autres premières sous-matrices de dimension 3xl ne comportent que des"0". 6. Procédé selon la revendication 4 ou 5, dans lequel la seconde sous-matrice (Ai) de rang i a un nombre de colonnes égal au nombre de colonnes de la première sous-matrice (Bi) de même rang. 7. Procédé selon une des revendications précédentes, dans lequel deux ou plusieurs lignes et/ou colonnes de la matrice de contrôle de parité sont permutées. 8. Procédé selon une des revendications précédentes, dans lequel le nombre r des bits de détection d'erreurs est égal à n+2, n étant tel que le nombre de bits du mot à coder peut être représenté par n bits. 9. Procédé de détermination d'un syndrome représentatif d'erreurs éventuelles survenues, au cours d'un traitement, à un mot de m+r bits, les m+r bits correspondant, avant traitement, à m bits d'un mot à coder et r bits de détection d'erreurs obtenus par un procédé selon une des revendications précédentes appliqué au mot de m bits à coder, le syndrome étant obtenu au cours d'une étape consistant à multiplier une matrice particulière (M, M', M") de dimension r x (m+r) par un vecteur à m+r composantes représentatives dudit mot de m+r bits, caractérisé en ce que ladite matrice particulière comporte : a) pour les m premières colonnes, un bloc de dimension r x m correspondant à la matrice de contrôle de parité utilisée au codage, et b) pour les r dernières colonnes, un bloc de dimension r x r en forme de matrice diagonale, ne comportant que des"1" sur sa diagonale principale et des"0"partout ailleurs.