Brevet FR2814612A1 — publié le 20020329

CODE DE DETECTION ET/OU DE CORRECTION D' ERRERS A AUTE 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. On va décrire son utilisation en transmission, dans le cas o les données à trans- mettre sont sous forme de mots de 16 bits. Soit X le mot à transmettre. X peut être représenté par un vecteur Xe, dont les 16 composantes X0, X1,..X15 correspon- dent aux 16 bits du mot à transmettre. Cinq bits de détection d'erreur Ci (C0... C4) sont obtenus en multipliant une matrice de contrôle de parité H, dite matrice de Hamming, de dimensions x 16 par le vecteur Xe, sous forme de vecteur colonne. La figure lA illustre la matrice de Hamming H pour 16 bits et la figure lB 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: j=oE E j-- Xj étant la jième composante du vecteur Xe. A l'émission, on envoie des mots de 21 bits, formés des 16 bits de données Xj et des 5 bits de détection Ci. Le mot reçu 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 au cours de la transmission. En réception, un syndrome S à cinq composantes SO... S4 est calculé en multipliant une matrice déterminée EH' de dimen- sions 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 EH' correspondent aux 16 colonnes de la matrice H. Les 5 colonnes suivantes comprennent chacune un seul "1". La 17ème colonne a son "1"l sur la première ligne, la 18ème colonne a son "1" sur la deuxième ligne, et ainsi de suite jus- qu'à la 2lème colonne, qui a son "1" 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, la transmission a eu lieu sans erreur et tous les bits du mot reçu, bits de données ou bits de détection, sont corrects. Si S est différent de 0, le mot reçu comporte une ou plusieurs erreurs. Si un seul bit du mot reçu est erroné, le syndrome obtenu permet de corriger l'erreur. En effet, le syn- drome obtenu correspond dans ce cas à la colonne dont les éléments ont été multiplies par le bit erroné. Ainsi, si le syndrome calculé est égal à o S= O, i les composantes (00011) du syndrome correspondent aux éléments de la première colonne de la matrice de Hanming et cela signifie que le premier bit, X0, est erroné. De même, si le syndrome calculé est égal à ! S" = O, O) et qu'il n'y a qu'une seule erreur dans le mot reçu, cela signi- fie que c'est le premier bit de détection CO qui est erroné. Un inconvénient du code de Hamming est qu'il ne peut pas détecter deux erreurs. Ainsi, si une erreur s'est produite sur les bits X1 et X2, le syndrome obtenu est égal à la somme modulo 2 des syndromes correspondant à des erreurs sur X1 et X2, c'est-à-dire à: S ''' = (00101) + (00110) = (00011). Le syndrome obtenu indique une erreur sur le bit X0, ce qui est faux. En effet, on sait que le code de Hamming 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+1 erreurs si sa distance minimale de code d est strictement supé- rieure à 2L+l. Comme d=3, L=0 et le code de Hamnming ne peut détecter avec certitude qu'une erreur seulement. Un autre inconvénient du code de Hannmming est que la matrice de Harmming n'est ni symétrique, ni régulière. En effet, on a vu que des syndromes avec un seul "1" sont réservés au contrôle des bits de détection. Par conséquent, ces syndromes ne peuvent être utilisés pour le contrôle des bits de données et la matrice H est construite en utilisant les configurations de bits qui restent. Pour la première colonne, la première configuration possible est (00011). Pour la deuxième colonne, la configuration suivante possible est (00101), etc. 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éco- dage du syndrome, c'est-à-dire la détermination du bit erroné. Un objet de la présente invention est de prévoir un procédé pour mettre en oeuvre un code de détection et/ou de correction d'erreurs plus efficace que le code de Hamming. Un autre objet de la présente invention est de prévoir un procédé pour mettre en oeuvre un 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 code de détection et/ou de correction d'erreurs permettant un décodage facile. Pour réaliser ces objets ainsi que d'autres, la pré- sente invention prévoit un procédé pour déterminer r bits de détection d'erreur d'un mot de m bits à coder, comprenant l'étape consistant à faire le produit d'un vecteur à m composantes repré- sentatif dudit mot de m bits à coder et d'une matrice de contrôle de parité. La matrice de contrôle de parité comporte un motif pouvant être représenté par une sous-matrice, ledit motif pouvant être répété dans ladite matrice de contrôle de parité, et ledit motif étant choisi de sorte qu'une somme modulo 2 de deux colonnes quelconques de ladite sous- matrice ne donne pas pour résultat une autre colonne de ladite sous-matrice. Selon un mode de réalisation de la présente invention, la sous-matrice représentant ledit motif est une matrice G de la forme: 0000 1111 /001 00 11 \.0101 0101, Selon un mode de réalisation de la présente invention, m est un multiple de 8 et la sous-matrice est présente m/8 fois dans la matrice de contrôle de parité. Selon un mode de réalisation de la présente invention, les éléments de la sous-matrice représentent les éléments infé- rieurs des colonnes de la matrice de contrôle de parité. Les éléments des lignes supérieures de la matrice de contrôle de parité, si elles existent, sont tels que: sur la ligne immédia- tement supérieure aux sous-matrices, des "0" se trouvent sur les sous-matrices de rang pair et des "1, se trouvent sur les sous- matrices de rang impair; sur la ligne supérieure suivante, des 1"0" se trouvent sur les deux premières sous-matrices, des "1" sur les deux sousmatrices suivantes, et ainsi de suite; et, plus généralement, sur la nième ligne au-dessus des sous-matrices, des "0" se trouvent sur les 2n-1 premières sous-matrices, des "1"t sur les 2n-1 sous-matrices suivantes, etc, de sorte que le nombre formé par la représentation binaire des éléments situés au-dessus d'une colonne quelconque d'une sous-matrice indique la position de la sous-matrice considérée dans la matrice de contrôle de parité. Selon un mode de réalisation de la présente invention, la ligne supérieure des sous-matrices est déplacée pour former la première ligne de la matrice de contrôle de parité, d'o il résulte que les derniers éléments d'une colonne quelconque de la matrice de contrôle de parité sont la représentation binaire de la position de ladite colonne. Selon un mode de réalisation de la présente invention, la sous-matrice représentant ledit motif est une première sous- matrice G' de la forme: gg gg gg gg g étant un élément binaire et g son complément. Selon un mode de réalisation de la présente invention, m est un multiple de 4, la première sous-matrice étant présente [(m/4)-1] fois, et les quatre premières colonnes de la matrice de contrôle de parité comprenant les éléments d'une seconde sous- matrice G'0 de la forme: 0111l G'0 =1I Selon un mode de réalisation de la présente invention, les éléments des premières et seconde sous-matrices représentent les éléments inférieurs des colonnes de la matrice de contrôle de parité. Les éléments des lignes supérieures de la matrice de contrôle de parité sont tels que: sur la ligne immédiatement supérieure aux sous-matrices, des 11"01" se trouvent sur ladite seconde sous-matrice et sur lesdites premières sous-matrices de rang pair, et des "1" se trouvent sur lesdites premières sous- matrices de rang impair; les lignes supérieures suivantes, lorsqu'elles existent, étant telles que, sur la nième ligne supérieure au-dessus des sous-matrices, des "0" se trouvent sur les sous-matrices de rang 0 à [2(n1)-l], des "1" se trouvent sur les 2n-l sous-matrices suivantes, et ainsi de suite, de sorte que le nombre formé par la représentation binaire des éléments situés au-dessus d'une colonne quelconque d'une sous-matrice indique la position de la sous-matrice considérée dans la matrice de contrôle de parité. Selon un mode de réalisation de la présente invention, la place des colonnes de la seconde sous-matrice est modifiée de sorte que, après modification, la colonne de rang 0 de la seconde sous-matrice est au rang 1, sa colonne de rang 1 est au rang 3, sa colonne de rang 3 est au rang 0, sa colonne de rang 2 restant au rang 2; la deuxième ligne des sousmatrices, c'est-à-dire la troisième ligne avant la fin de la matrice de contrôle de parité, est déplacée pour former la première ligne de la matrice de contrôle de parité, et la dernière ligne de la matrice de contrôle de parité est déplacée pour former la deuxième ligne de la matrice de contrôle de parité, de sorte que les éléments inférieurs d'une colonne quelconque de la matrice de contrôle de parité sont la représentation binaire de la position de ladite colonne, sauf pour la première colonne. 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+l bits, les m+r+l bits correspondant, avant traitement, à m bits d'un mot à coder, r bits de détection d'erreurs obtenus par un procédé selon l'invention appliqué au mot de m bit à coder, et 1 bit de parité obtenu en faisant la somme modulo 2 desdits r bits de détection d'erreurs, le syndrome étant obtenu au cours d'une étape consis- tant à multiplier une matrice particulière par un vecteur à m+r+l composantes représentatif dudit mot de m+r+l bits. La matrice particulière comrporte: a) pour les éléments des r premières lignes et m pre- mières colonnes, les éléments de la matrice de contrôle de parité ayant servi à déterminer les r bits de détection d'erreur, b) pour la dernière ligne, des "0"' pour les m premières colonnes et des "1" après, c) pour les r premières lignes et les m+l à m+r colonnes, un seul "1" par colonne, décalé de ligne en ligne, le bloc cons- titué par les r premières lignes et les m+l à m+r colonnes étant en forme de matrice diagonale, et d) pour la dernière colonne, des "0" partout sauf sur la dernière ligne. La présente invention concerne aussi un procédé de déter- mination d'un syndrome représentatif d'erreurs éventuelles survenues, au cours d'un traitement, à un mot de m+r+2 bits, les m+r+2 bits correspondant, avant traitement, à m bits d'un mot à coder, r bits de détection d'erreurs obtenus par un procédé selon l'invention appliqué au mot de m bit à coder, et des premier et second bits de parité, le premier bit de parité étant obtenu en faisant la sommne modulo 2 desdits r bits de détection d'erreurs et le second bit de parité étant obtenu en faisant la somme modulo 2 desdits m bits du mot à coder, des r bits de détection d'erreurs et du premier bit de parité, le syndrome étant obtenu au cours d'une étape consistant à multiplier une matrice particu- lière par un vecteur à m+r+2 composantes représentatif dudit mot de m+r+2 bits. La matrice particulière comporte: a) pour les éléments des r premières lignes et m premières colonnes, les éléments de la matrice de contrôle de parité ayant servi à déterminer les r bits de détection d'erreur, b) pour l'avant-dernière ligne, des 1"0" pour les m pre- mières colonnes, des "1" pour les colonnes m+l à m+r+l, et un "0" pour la dernière colonne, c) pour la dernière ligne, des "1" pour toutes les colonnes, d) pour les r premières lignes et les m+l à m+r colonnes, un seul "1" par colonne, décalé de ligne en ligne, le bloc constitué par les r premières lignes et les m+l à m+r colonnes étant en forme de matrice diagonale, e) pour l'avant-dernière colonne, des "0" sur les r premières lignes et des "1" sur les deux dernières lignes, et f) pour la dernière colonne, des "0" partout sauf sur la dernière ligne. 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édenmmnent décrites, représen- tent 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ésen- tent 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 illustrent respectivement une matrice de contrôle de parité Ml utilisable dans un premier mode de réalisation de la présente invention et une matrice M'l associée pour calculer un syndrome; la figure 3C illustre une variante de la matrice de la figure 3B; les figures 4A et 4B illustrent respectivement une variante de la matrice de contrôle de parité de la figure 3A et la façon de la réaliser; les figures 5A et 5B illustrent respectivement une matrice de contrôle de parité Pl utilisable dans un deuxième mode de réalisation de la présente invention et une matrice P'l1 associée pour calculer un syndrome; et la figure 6 illustre une variante de la matrice de la figure 5A. La figure 3A illustre une matrice de contrôle de parité Ml mise en oeuvre pour calculer des bits de détection dans un premier mode de réalisation de l'invention. La matrice MI est une matrice 5 x 16. Elle est destinée à être multipliée par un vecteur représentatif d'un mot de 16 bits à coder pour fournir 5 bits de détection d'erreur Ci. La matrice Ml est formée à partir d'un motif répétitif. Le motif répétitif est représenté par une matrice G de dimensions 4 x 8 et est répété deux fois. La matrice G est égale à: 11110000l 000 1111 G - 00110011. 0101 010lO La matrice G est choisie de sorte que, si l'on additionne modulo 2 deux colonnes quelconques de la matrice G, on ne retrouve pas une autre colonne de la matrice G. Ainsi, l'addition logique des deuxième et troisième colonnes de la matrice G donne (1001) G (1010) = (0011) [le symbole E désigne l'opération "OU Exclusif"], ce qui ne correspond à aucune colonne de G. Cela est fait dans le but de pouvoir détecter deux erreurs, comme cela va être vu par la suite. Les deux matrices G, qui constituent des sous-matrices de la matrice Ml, sont placées côte à côte et occupent les quatre dernières lignes de la matrice Mi. La première ligne de la matrice Mi est choisie de manière à pouvoir discriminer les deux matrices G, et des "0" sont placés au-dessus des colonnes de la première matrice G et des,"1" au-dessus des colonnes de la deuxième matrice G. On notera que, du fait qu'aucune addition modulo 2 de deux colonnes de la matrice G ne redonne une autre colonne de cette matrice, l'addition de deux colonnes quelconques de la matrice Ml ne redonne pas une colonne de la matrice Ml, ce qui constitue un avantage par rapport à la matrice de Hamming. Par multiplication de la matrice Ml avec le vecteur colonne représentatif du mot à coder, on obtient 5 bits de détection C0 à C4, désignés par Ci. Selon la présente invention, un bit de parité P est en outre déterminé par la relation: P = CO D C1 G C2 À C3 D C4. Le bit de parité P est ajouté au mot à coder, en plus des 5 bits de détection. Le mot codé comporte donc les 16 bits du mot initial, 5 bits de détection et le bit de parité P. soit 22 bits au total. Pour calculer le syndrome d'un mot codé après traite- ment, par exemple après transmission ou stockage, on multiplie le mot codé après traitement par une matrice M'l1. La figure 3B illustre la matrice M'l. La matrice M'l est une matrice 6 x 22. Elle comporte d'abord la matrice MI, disposée en haut à gauche, c'est-à-dire que les éléments des 5 premières lignes et 16 premières colonnes de la matrice M'l correspondent aux éléments de la matrice Mi. Sous la matrice MI, il n'y a que des l"0"', c'est-à-dire que le coefficient situé sur la sixième ligne des colonnes 1 à 16 est toujours égal à "0". Les colonnes 17 à 21 de la matrice M'1 sont formées de la manière suivante. Les 5 premières lignes des colonnes 17 à 21 constituent un bloc A qui correspond aux 5 dernières colonnes de la matrice H'. Le bloc A caomprend donc des "0" partout sauf sur sa diagonale, qui comporte des "1". Sous le bloc A, il n'y a que des "1". La dernière et vingt-deuxième colonne de la matrice M' 1 cormporte des "lOl sur les cinq premières lignes et un "1" sur la dernière ligne. Ainsi, la dernière ligne de la matrice M'il ne comporte que des "0" pour les 16 premières colonnes et des "1l' pour les colonnes 17 à 22. Cette dernière ligne permet de distinguer une erreur survenue sur un bit de données d'une part, et sur un bit de détection ou sur le bit de parité d'autre part. Par rapport au codage de Hamming, la matrice M'1 comporte une ligne et une colonne de plus que la matrice H'. Le syndrome calculé comporte une composante de plus que dans le cas de Hamming. La complexité relative qui en résulte est peu significative par rapport aux avantages procurés. Ainsi, du fait que la somme modulo 2 de deux colonnes quelconques du motif de la matrice Mi ne donne aucune autre colonne du motif de cette matrice, la détection d'erreurs est meilleure que dans le cas du codage de Hamming. Reprenons par exemple le cas examiné dans le préambule, o le mot à décoder comporte à la fois une erreur sur le bit X1 et sur le bit x2. Avec le codage proposé, le syndrome obtenu est égal à (010010) e (010100) = (000110). Ce syndrome ne fait pas partie des syndromes indiquant une erreur sur un bit. Par consé- quent, le codage proposé permet ici la détection de deux erreurs alors que, rappelons-le, le codage de Hamming indiquait dans ce cas une erreur sur le bit X0. Cependant, chaque fois qu'il n'y a qu'un seul "1"i dans un syndrome, le codage proposé peut ne pas détecter deux erreurs. Ainsi, le codage proposé ne peut pas détecter des erreurs exis- tant à la fois sur C1 et sur P. car le syndrome obtenu (010000) indique une erreur sur X0. Aussi, des erreurs à la fois sur C2 et sur P vont fournir le syndrome S=(001000), correspondant à une erreur sur le bit X4. Ce cas de figure n'intervient que deux fois. Aussi, chaque fois qu'il n'y a que deux "1" dans un syndrome, le codage proposé peut ne pas détecter deux erreurs. Par exemple, s'il y a une erreur sur C1 et C4, on obtient le syndrome S=(010010), qui correspond à une erreur sur X1. Dans le codage proposé, comme dans le code de Hamming, une seule erreur est détectable à 100 % et corrigible à 100 %. La probabilité P de détecter deux erreurs est la suivante. Pour des mots de 16 bits, il y a, pour les bits de données, 8 syndromes possibles o la détection de deux erreurs n'est pas possible. Ces 8 syndromes correspondent aux deux syndromes o il y a un seul "1" dans le syndrome, et à 6 syndromes dans lesquels il y a deux "I1" dans le syndrome. On a: P = 1 - [3x8x2/(22x21)] = 0,8961 dans lequel le produit (22x21)/2 représente toutes les configura- tions possibles de deux erreurs et le facteur 3 est le nombre de configurations de deux erreurs indétectables pour un syndrome o la détection de deux erreurs n'est pas possible. Par conséquent, le codage proposé permet, pour des mots de 16 bits, de détecter deux erreurs dans 89,61 % des cas. Dans la pratique, les mots à coder sont beaucoup plus longs, et la probabilité de déterminer deux erreurs est d'autant plus grande. Par exemple, pour des mots de 128 bits, la probabi- lité de détecter deux erreurs est égale à P = 1 - [3x14x2/(137x136)] = 0, 9955 137 étant la sommne du nombre des bits de données (128), du nombre des bits de détection (8, dans ce cas) et du bit de parité P. L'avantage du codage proposé par rapport à Hamming est donc très net. D'une part, le pourcentage de détecter deux erreurs est plus grand (avec le code de Hamming, on a respectivement P=0,2857 et P=0,1166 pour des mots de 16 bits et de 128 bits) et, d'autre part, la présence de symétries dans Mi, bien visibles en parcourant les lignes de Mi, permet d'utiliser des circuits de codage et de décodage faciles à réaliser pour déterminer les bits de détection. Il est en outre possible de modifier de façon avanta- geuse le codage utilisé dans le premier mode de réalisation de la présente invention. Une première variante du premier mode de réalisation de la présente invention permet de faire passer la probabilité de détecter deux erreurs à 100 W. Dans cette variante, le mot codé est formé de 23 bits. Les 22 premiers bits du mot codé correspon- dent aux 22 bits du mot codé défini précédermment, à savoir les 16 bits du mot à coder, 5 bits de détection obtenus en multipliant la matrice Ml par un vecteur colonne représentatif du mot à coder, et un bit de parité P égal à la somme modulo 2 des bits de détection. Le dernier bit est un autre bit de parité PT, obtenu en faisant la sommne modulo 2 des 22 bits précédents. Pour calculer le syndrome d'un tel mot après traitement, on multiplie un vec- teur représentatif du mot codé après traitement par une matrice M"il. La figure 3C illustre la matrice M"Il. La matrice M"i est une matrice de dimensions 7x23. La matrice M"l est formée à partir de la matrice M'il, disposée en haut à gauche, c'est-à-dire que les éléments des 6 premières lignes et des 22 premières colonnes de la matrice M"Il correspondent aux éléments de la matrice M'i. La dernière ligne de la matrice M"i ne comprend que des "1", et la dernière colonne de la matrice M"Il comprend des "0" sur toutes les lignes, sauf sur la dernière. Dans cette variante, deux erreurs sont toujours détec- tées et se traduisent par un "0" sur la dernière composante du syndrome. Le code ainsi modifié permet donc, outre la détection et correction d'une erreur dans 100 % des cas, la détection de deux erreurs dans 100 % des cas aussi. La distance minimale de code est alors égale à 4, ce qui présente un avantage considérable, par exemple en stockage de données dans une mémoire. Ce code peut donc être désigné par les initiales SEC- DED ("Single Error Correction - Double Error Detection"), signifiant "Correction d'une erreur - Détection de deux erreurs". Une deuxième variante du premier mode de réalisation de la présente invention permet de faciliter le décodage. Dans cette variante, on utilise au codage une matrice M2. La figure 4A illustre la matrice M2. Pour former la matrice M2, on prend d'abord la matrice Ml. Ensuite, comme cela est illustré en figure 4B, on prend la deuxième ligne de la matrice Ml et on la met en première position. La première ligne de la matrice M2 ainsi obtenue correspond donc à la deuxième ligne de la matrice Ml et sa deuxième ligne à la première ligne de Ml. Cela est parfaitement possible, puisque seul l'ordre des bits de détection va être modifié. Pour le décodage, une matrice M'2 (non représentée) est formée sur le modèle de la matrice M'l, c'est-à-dire que la matrice M'2 comprend la matrice M2 en haut à gauche, le reste des coefficients correspondant à ceux de la matrice M'l1. L'utilisation de la matrice M2 permet un décodage des syndromes plus aisé. En effet, les quatre derniers éléments de chaque colonne de la matrice M2 forment la représentation binaire de nombres qui se suivent et qui correspondent à la position ou rang de la colonne considérée, la première colonne de la matrice M2 étant à la position "0". Par conséquent, si un bit de données est erroné, les composantes du syndrome obtenu comprennent la représentation binaire de la position du bit erroné (le premier bit, X0, est à la position 1"0") et la correction de l'erreur sera facilitée. Pour donner un exemple, les quatre derniers éléments de la septième colonne (en position 6) sont "0110", représenta- tion binaire de "6". Une erreur sur le bit X6 se traduit donc par le syndrome S=(001100) dont les dernières composantes, après élimination du '"0" final qui indique une erreur dans un bit de données, sont la représentation binaire de "6", qui indique la position du bit erroné. En outre, on peut allier l'avantage précédent à une probabilité de détection de deux erreurs égale à 100 ' en utili- sant une matrice M"2 (non représentée) construite à partir de la matrice M'2 sur le modèle de la matrice M"1, c'est-à-dire que la dernière ligne de la matrice M"2 ne comporte que des "1", et sa dernière colonne que des "0" sauf sur la dernière ligne. Dans ce cas, les mots codés sont des mots de 23 bits, à savoir 16 bits de données, suivis de 5 bits de détection, eux-mêmes suivis d'un premier bit de parité P égal à la somme modulo 2 des 5 bits de détection d'erreurs et d'un second bit de parité PT égal à la somme modulo 2 des 22 bits précédents. Bien entendu, il est possible de généraliser le codage décrit en relation avec les figures 3A à 4B pour coder des mots de plus de 16 bits. Pour construire une matrice de contrôle de parité Mlm (non représentée) destinée à déterminer des bits de parité CO à Cr_1 de mots à coder de m bits, on définit d'abord le nombre de fois qu'il faut répéter la matrice G. Si m est un multiple de 8, la matrice G est répétée un nombre k de fois égal à: k = m/8. Les matrices G successives sont placées à la suite les unes des autres et occupent les quatre dernières lignes de la matrice Mlm. La matrice Mlm est de dimensions r x m. r est le nombre de bits de détection nécessaires pour coder le mot à coder. Les lignes supérieures de la matrice Mlm sont formées de façon à pouvoir discriminer les différentes matrices G. Ainsi, la première ligne au-dessus des matrices G comrporte des 1"0" au- dessus des matrices G de rang pair (la première matrice est considérée comme étant en position "0"; son rang,,0"1, est pair) et des "1" au-dessus des matrices G de rang impair. La ligne suivante comporte des "0" sur les deux premières matrices G, des "1" sur les deux suivantes, puis à nouveau des "0" sur les deux suivantes et ainsi de suite. Si elle existe, la troisième ligne au-dessus des matrices G comprend des "0" sur les quatre premières matrices G, des "1" sur les quatre matrices G suivantes, et ainsi de suite. Les lignes suivantes, si elles existent, sont formées de façon similaire en groupant d'abord les matrices G par 8, puis par 16, etc. De la sorte, les éléments au-dessus d'une matrice G quelconque sont les mêmes pour toutes les colonnes de la matrice G considérée et correspondent à la représentation binaire de la position de la matrice G considérée. Ainsi, on trouve "0..0000" au-dessus de chaque colonne de la première matrice G, "0..001" au-dessus de chaque colonne de la deuxième matrice G, etc. La matrice M'lm correspondante (non représentée) est établie selon les principes décrits en relation avec la matrice M'l. La matrice M'lm conmporte donc les éléments de la matrice Mlm en haut à gauche, des "0" sous ceux-ci, un bloc carré de dimen- sions r2 en forme de matrice diagonale avec des "1" sur la diagonale, une dernière ligne avec des 1"0" sous la matrice Mlm et des "1" sous le bloc carré, et une dernière colonne avec des "0" partout sauf sur la dernière ligne, o se trouve un "1". Les matrices Mlm et M'lm obtenues offrent les avantages des matrices Ml et M'l, c'est-à-dire qu'elles présentent de nombreuses symétries facilitant la réalisation de circuits mettant le codage proposé en oeuvre. En outre, une matrice M2m (non représentée), formée sur le modèle de la matrice M2, va faciliter le décodage, les r-l derniers éléments de chaque colonne correspondant à la représen- tation binaire de la position de la colonne considérée. Pour former M2m, on peut procéder de deux manières. Il est tout d'abord possible, à partir de la matrice Mlm précédemment décrite, de déplacer la quatrième ligne en partant du bas de la matrice Mlm (qui correspond à la première ligne des matrices G) pour la mettre comme première ligne, les lignes 1 à r-4 se trouvant chacune décalées d'un rang vers le bas. Dans la matrice M2m ainsi obtenue, les coefficients 2 à r de chaque colonne sont la représentation binaire de la position de la colonne. On peut aussi former directement la matrice M2m en remarquant que les éléments de la première ligne de M2m sont les inverses, ou compléments à 1, des éléments de la troisième ligne avant la fin (deuxième ligne des matrices G). Par conséquent, on peut former chaque colonne de la matrice M2m en prenant pour r-l éléments inférieurs la représentation binaire de la position de la colonne et pour premier élément l'inverse de l'avant-avant- dernier élément. Pour le décodage, une matrice M'2m, construite à partir de la matrice M2m sur le modèle des matrices M'l, M'2 ou M'lm, sera utilisée. On notera que, si l'on souhaite pouvoir détecter deux erreurs dans 100 % des cas, on utilisera des mots codés de m+r+2 bits, le dernier bit étant un bit de parité déterminé en faisant la somme modulo 2 des m+r+l premiers bits. La matrice de décodage utilisée pourra être, selon la matrice Mlm ou M2m utilisée au codage, une matrice M"lm ou une matrice M"2m (non représentées), construites à partir des matrices M'lm ou M'2m sur les modèles des matrices M"il ou M"2. Les figures 5A, 5B et 6 illustrent un deuxième mode de réalisation de la présente invention. La figure 5A illustre une matrice de contrôle de parité P1 pour un mot de 16 bits à coder. La matrice P1 est une matrice de dimensions 6x16. Le premier bloc 4x4 situé en bas à gauche de la matrice P1 est de la forme 1011f G'O = 1 En outre, la matrice Pl conmporte un motif répétitif de la forme %g gg', G' = gg g-, gg g Kgg -g avec g=l, g étant le complément à 1 de g. G' est une matrice choisie de sorte que la somme modulo 2 de deux de ses colonnes n'est jamais égale à une colonne de G'. Les matrices G' et G'0 sont des sous-matrices de la matrice Pl, et on les désignera ainsi le cas échéant par la suite. Dans la matrice Pl, la matrice G' est présente 3 fois, les matrices G' se faisant suite l'une à l'autre et occupant le restant des quatre dernières lignes de la matrice Pi. La ligne juste au-dessus des matrices G'0 et G' (deuxième ligne de Pl) est constituée par une suite de quatre 1"0", suivie de quatre "1", suivie à nouveau de quatre "0" et de quatre "1". La première ligne de Pi comprend huit '"0", suivis de huit "1". Au codage, six bits de détection C0 à C5 sont obtenus en multipliant la matrice Pl par le mot à coder. Les bits de détection C0 à C5 sont ajoutés au mot à coder. En outre, un bit de parité P est déterminé en additionnant modulo 2 les six bits de détection. Au décodage, un syndrome de 7 bits est calculé en mul- tipliant une matrice P'1 par un vecteur correspondant à un mot de 23 bits (16 bits de données, ajoutés à 6 bits de détection et un bit de parité P). La figure 5B illustre la matrice P'li. La matrice P'lI est une matrice de dimension 7 x 23. La matrice P'i comporte d'abord la matrice Pl, en haut à gauche. Comme dans le cas de la matrice M'1, la dernière ligne ne comporte que des l"0" sous la matrice P1 et des "1" ailleurs. Les six premières lignes des colonnes 17 à 22 forment un bloc carré avec des "1" sur sa diago- nale et des "0", ailleurs, et la dernière colonne ne comprend que des "0", à l'exception du "1" final. L'avantage du deuxième mode de réalisation est le sui- vant. En effet, tous les syndromes concernant des bits de données comportent désormais au moins trois "1", et les configurations rendant possible une non détection de deux erreurs ne sont plus présentes. Dans ce mode de réalisation, toute addition modulo 2 de deux syndromes quelconques donne un syndrome différent des syndromes qui indiquent une erreur dans un bit de données. Par conséquent, le code utilisé dans le deuxième mode de réalisation de la présente invention permet, outre la détec- tion et correction d'une erreur dans 100 % des cas, la détection de deux erreurs dans 100 % des cas aussi. Comme pour la première variante du premier mode de réalisation, la distance minimale de code égale à 4, et le code du deuxième mode de réalisation peut être désigné par les initiales SEC-DED ("Single Error Correction - Double Error Detection"), signifiant "Correction d'une erreur - Détection de deux erreurs". Les matrices utilisées dans le second mode de réalisation et dans la première variante du premier mode de réalisation sont de même dimension. Par rapport à la première variante du premier mode de réalisation, le codage du deuxième mode de réalisation n'utilise pas de second bit de parité, qui rend nécessaire la présence de nombreux circuits d'addition, tous les bits de données et de détection devant être additionnés. * La figure 6 illustre une matrice P2 procurant les mêmes avantages que la matrice P1 et facilitant en outre le décodage. La matrice P2 dérive de la matrice Pl. Pour former la matrice P2, on prend la matrice Pl et on commence par modifier l'ordre des colonnes de la sous-matrice G'0. Après cette modification, la colonne de G'0 de rang 0 est au rang 1, la colonne de rang 1 est au rang 3, la colonne de rang 3 est au rang 0, la colonne de rang 2 restant au rang 2. Ensuite, la deuxième ligne des sous-matrices G'0 et G', c'est-à-dire la troisième ligne avant la fin de la matrice Pl ainsi modifiée, est déplacée pour former la première ligne de la matrice P2, et la dernière ligne de la matrice Pl (ainsi modifiée) est déplacée pour former la deuxième ligne de la matrice P2. On notera que les éléments de la première ligne de la matrice P2 représentent, sauf pour les quatre premières colonnes, les compléments à "1" des éléments de l'avant-dernière ligne de la matrice P2, et que les éléments de la deuxième ligne de la matrice P2 représentent, sauf pour les quatre premières colonnes, les compléments à "1" des éléments de la dernière ligne de la matrice P2. On notera aussi que, pour la matrice P2, commte cela se voit en figure 6, tous les syndromes indiquent de façon simple, à l'exception de celui concernant le premier bit x0, la position du bit défectueux. On notera aussi qu'il est aisé de généraliser le codage selon le deuxième mode de réalisation de l'invention à des mots de plus de 16 bits, en prenant modèle sur la généralisation effectuée pour le premier mode de réalisation. On notera aussi que le procédé selon la présente inven- tion peut être utilisé pour coder ou décoder des mots de moins de 16 bits. Par exemple, pour des mots de 8 bits, la matrice G à elle seule constituera la matrice de contrôle de parité dans le premier mode de réalisation de l'invention et, dans le second mode de réalisation de l'invention, la matrice de contrôle de parité sera une matrice 5x8 comportant une sous-matrice G'0o et une sous-matrice G', une ligne supplémentaire comprenant des 1"0" au-dessus de la sous-matrice G'0 et des "1"l au-dessus de la sous- matrice G'. Bien entendu, la présente invention est susceptible de diverses variantes et modifications qui apparaîtront à l'hoene de l'art. En particulier, on notera que toute permutation de lignes ou de colonnes des matrices ou sous-matrices utilisées dans la présente invention ne change en rien le principe du codage, et que des codes utilisant de telles matrices ou sousmatrices font partie du domaine de l'invention. On notera aussi que des circuits pour mettre en oeuvre les codages et décodages proposés sont à la portée de l'homme de l'art, par exemple à l'aide de "OU Exclusifs", et n'ont pas été décrits plus avant, bien que faisant partie du domaine de la présente invention. REVEDICATIONS 1. Procédé pour déterminer r bits de détection d' erreur (CO,..., Cr_1) d'un mot de m bits à coder, comprenant l'étape consistant à faire le produit d'un vecteur à m composantes repré- sentatif dudit mot de m bits à coder et d'une matrice de contrôle de parité (Ml, M2, Mlm, Pl, P2), caractérisé en ce que la matrice de contrôle de parité comporte un motif pouvant être représenté par une sous- matrice, ledit motif pouvant être répété dans ladite matrice de contrôle de parité, et ledit motif étant choisi de sorte qu'une sommne modula 2 de deux colonnes quelconques de ladite sous-matrice ne donne pas pour résultat une autre colonne de ladite sous-matrice. 2. Procédé selon la revendication 1, dans lequel la sous-matrice représentant ledit motif est une matrice G de la forme: (1111 0000 0000 1111 G = 0011 0011 \.0101 010OO 3. Procédé selon la revendication 2, dans lequel m est un multiple de 8 et la sous-matrice (G) est présente m/8 fois dans la matrice de contrôle de parité. 4. Procédé selon une des revendications 2 et 3, dans lequel les éléments de la sous-matrice (G) représentent les éléments inférieurs des colonnes de la matrice de contrôle de parité, et dans lequel les éléments des lignes supérieures de la matrice de contrôle de parité, si elles existent, sont tels que: sur la ligne immédiatement supérieure aux sous-matrices (G), des "0" se trouvent sur les sousmatrices (G) de rang pair et des "1,, se trouvent sur les sous-matrices (G) de rang impair; sur la ligne supérieure suivante, des "0" se trouvent sur les deux premières sous-matrices (G), des "1" sur les deux sousmatrices (G) suivantes, et ainsi de suite; et, plus généralement, sur la nième ligne au-dessus des sous-matrices (G), des "0" se trouvent sur les 2n-1 premières sous-matrices (G), des,,1" sur les 2n-1 sous-matrices suivantes, etc, de sorte que le nombre formé par la représentation binaire des éléments situés au-dessus d'une colonne quelconque d'une sous-matrice indique la position de la sous- matrice considérée dans la matrice de contrôle de parité. 5. Procédé selon la revendication 4, dans lequel la ligne supérieure des sous-matrices (G) est déplacée pour former la première ligne de la matrice de contrôle de parité, d'o il résulte que les derniers éléments d'une colonne quelconque de la matrice de contrôle de parité sont la représentation binaire de la position de ladite colonne. 6. Procédé selon la revendication 1, dans lequel la sous-matrice représentant ledit motif est une première sous- matrice (G') de la forme: G- = gg -g gg g gg ggI g étant un élément binaire et k son complément. 7. Procédé selon la revendication 6, dans lequel m est un multiple de 4, la première sous-matrice (G') étant présente [(m/4)-1] fois, et les quatre premières colonnes de la matrice de contrôle de parité comprenant les éléments d'une seconde sous- matrice (G'0) de la forme: "0111È G'0 =0 I 1110, 8. Procédé selon les revendications 6 et 7, dans lequel les éléments des premières et seconde sous-matrices (G'0, G') représentent les éléments inférieurs des colonnes de la matrice de contrôle de parité, et dans lequel les éléments des lignes supérieures de la matrice de contrôle de parité sont tels que: sur la ligne immédiatement supérieure aux sous-matrices (G'0, G'), des 1"0" se trouvent sur ladite seconde sous-matrice (G'0) et sur lesdites premières sous-matrices (G') de rang pair, et des "1" se trouvent sur lesdites premières sous-matrices (G') de rang impair; les lignes supérieures suivantes, lorsqu'elles existent, étant telles que, sur la nième ligne supérieure au-dessus des sous-matrices (G'0, G'), des "0" se trouvent sur les sous- matrices (G'0, G') de rang 0 à [2(n-1)-l], des "1" se trouvent sur les 2n1 sous-matrices (G') suivantes, et ainsi de suite, de sorte que le nombre formé par la représentation binaire des éléments situés au-dessus d'une colonne quelconque d'une sous- matrice (G'0, G') indique la position de la sous-matrice considérée dans la matrice de contrôle de parité. 9. Procédé selon la revendication 6, dans lequel la place des colonnes de la seconde sous-matrice (G'0) est modifiée de sorte que, après modification, la colonne de rang 0 de la seconde sous-matrice (G'0) est au rang 1, sa colonne de rang 1 est au rang 3, sa colonne de rang 3 est au rang 0, sa colonne de rang 2 restant au rang 2, dans lequel la deuxième ligne des sous- matrices (G'0, G'), c'est-à-dire la troisième ligne avant la fin de la matrice de contrôle de parité, est déplacée pour former la première ligne de la matrice de contrôle de parité, et dans lequel la dernière ligne de la matrice de contrôle de parité est déplacée pour former la deuxième ligne de la matrice de contrôle de parité, de sorte que les éléments inférieurs d'une colonne quelconque de la matrice de contrôle de parité sont la représen- tation binaire de la position de ladite colonne, sauf pour la première colonne. 10. Procédé de détermination d'un syndrome repré- sentatif d'erreurs éventuelles survenues, au cours d'un traite- ment, à un mot de m+r+1 bits, les m+r+l bits correspondant, avant traitement, à m bits d'un mot à coder, r bits de détection d'erreurs (C0,. .. Cr_1) obtenus par un procédé selon une des revendications 1 à 9 appliqué au mot de m bit à coder, et 1 bit de parité (P) obtenu en faisant la sommne modulo 2 desdits r bits de détection d'erreurs, le syndrome étant obtenu au cours d'une étape consistant à multiplier une matrice particulière (M'I1, P'i) par un vecteur à m+r+l composantes représentatif dudit mot de m+r+l bits, caractérisé en ce que ladite matrice particulière cormporte: a) pour les éléments des r premières lignes et m pre- mières colonnes, les éléments de la matrice de contrôle de parité ayant servi à déterminer les r bits de détection d'erreur, b) pour la dernière ligne, des "0"' pour les m premières colonnes et des "1" après, c) pour les r premières lignes et les m+l à m+r colonnes, un seul "1" par colonne, décalé de ligne en ligne, le bloc constitué par les r premières lignes et les m+l à m+r colonnes étant en forme de matrice diagonale, et d) pour la dernière colonne, des "0" partout sauf sur la dernière ligne. 11. Procédé de détermination d'un syndrome représen- tatif d'erreurs éventuelles survenues, au cours d'un traitement, à un mot de m+r+2 bits, les m+r+2 bits correspondant, avant traitement, à m bits d'un mot à coder, r bits de détection d'erreurs (C0,... Cr_1) obtenus par un procédé selon une des revendications 1 à 5 appliqué au mot de m bit à coder, et des premier et second bits de parité (P, PT), le premier bit de parité (P) étant obtenu en faisant la sonmme modula 2 desdits r bits de détection d'erreurs et le second bit de parité (PT) étant obtenu en faisant la sonme modulo 2 desdits m bits du mot à coder, des r bits de détection d'erreurs et du premier bit de parité, le syndrome étant obtenu au cours d'une étape consistant à multiplier une matrice particulière (M"li) par un vecteur à m+r+2 composantes représentatif dudit mot de m+r+2 bits, caracté- risé en ce que ladite matrice particulière comnporte: a) pour les éléments des r premières lignes et m pre- mières colonnes, les éléments de la matrice de contrôle de parité ayant servi à déterminer les r bits de détection d'erreur, b) pour l'avant-dernière ligne, des "0" pour les m pre- mières colonnes, des "1" pour les colonnes m+l à m+r+l, et un "0" pour la dernière colonne, c) pour la dernière ligne, des "1" pour toutes les colonnes, d) pour les r premières lignes et les m+1 à m+r colonnes, un seul "1" par colonne, décalé de ligne en ligne, le bloc constitué par les r premières lignes et les m+l à m+r colonnes étant en forme de matrice diagonale, e) pour l'avant-dernière colonne, des "O" sur les r premières lignes et des "1" sur les deux dernières lignes, et f) pour la dernière colonne, des "O" partout sauf sur la dernière ligne.