FR 2549319 A1 19850118 FR 8409563 A 19840619 "Dispositif décodeur pour le décodage de mots de code qui sont protégés par blocs au moyen d'un code de Reed-Solomon contre plusieurs erreurs de symbole par bloc et dispositif de lecture pour des corps de stockage pouvant être lus par voie optique, ce dispositif de lecture étant pourvu d'un tel décodeur' La présente invention concerne un système décodeur pour le décodage de mots de code qui sont protégés au moyen d'un code de Reed-Solomon contre la présence de plusieurs erreurs de symbole par mot de code, ce système décodeur com05 portant des moyens de réception pour la réception séquentielle des symboles de code en vue d'en former un mode de code, des premiers moyens de calcul pour déterminer à partir du mot de code, au moyen de la matrice de contrôle de parité EHI du code, une série de symboles de syndrome, des deuxiè10 mes moyens de calcul alimentés par les premiers moyens de calcul pour résoudre l'équation clé en vue d'obtenir le localisateur d'erreurs sigma (z) et l'évaluateur d'erreurs oméga (z), des troisièmes moyens de calcul alimentés par les deuxièmes pour obtenir, au moyen des points zéro du locali15 sateur d'erreurs, les positions de symboles de code éventuellement perturbés, et des quatrièmes moyens de calcul alimentés par les troisièmes en vue de déterminer, au moyen desdits points zéro, les erreurs de symbole associées aux symboles de code perturbés en vue de présenter sur une sor20 tie d'utilisateur les symboles de code corrigibles au moyen de valeur(s) d'erreurs et de donnée(s) de position d'erreurs de symbole. Un tel système décodeur fait l'objet du brevet des Etats-Unis d'Amérique N O 4 124 174 qui décrit un décodage ra25 pide en vue de parvenir à la correction d'un maximum de trois symboles dans un mot de code Dans certains cas, cette capacité est insuffisante L'invention a pour but de procurer un système décodeur qui puisse travailler à une vitesse élevée et dans lequel la vitesse de traitement notamment s'adapte au nombre réel d'erreurs trouvées de sorte qu'il ne faut pas chaque fois tenir compte du cas le plus défavorable dans le- quel les possibilités de correction du code sont complètement utilisées, en l'occurrence par simplification de la résolution de l'équation clé, étant entendu que cette simplification est structurée d'une 05 manière telle que les résultats de pas de calcul précédents sont utilisés pour des pas de calcul suivants, de sorte que l'on obtient une structure en écorce, et que pour un nombre déterminé d'erreurs de symbole constaté provisoirement, seul un nombre limité 10 de symboles de syndrome supplémentaires, le plus souvent inférieur au nombre présent dans le mot de code, est prévu pour la réalisation d'un test portant sur la manière correcte de résoudre l'équation clé Ce but est réalisé par le fait que l'invention est carac15 térisée en ce que les deuxièmes moyens de calcul contiennent des moyens de multiplication pour chaque fois, pour un nombre (L) présupposé d'erreurs de symbole par mot de code partant d'un mot de code sans erreur (L=O), moyennant la prise en compte de 2 L 20 symboles de syndrome et la résolution de l'équation c 1 é réduite qui y est limitée selon la règle de Cramer, mais lors d'une différence deltal différente de zéro, moyennant l'introduction de deux autres symboles de syndrome dans l'équation réduite actuelle et des 25 opérations d'incrémentation de la matrice, résoudre une autre équation clé moins réduite pour, dans le cas d'une différence deltal égale à zéro déterminer un nombre (Nmax) de différences deltal, déterminé par la valeur du nombre d'erreurs de symbole 30 alors présupposé, a partir de nombres incrémentés successivement de pseudo-erreurs de symbole présupposées, mais, dans le cas d'une différence deltal restant alors encore différente de zéro, appliquer pour tous les nombres non traités jusqu'au nombre incrémenté 35 actuel d'erreurs de symbole, les compléments de l'équation clé, et résoudre cete équation clé complétée de la manière mentionnée plus haut Dans la pratique, le cas le plus défavorable ne se présentera que rarement dans une succession de mots de code parce qu'un grand nombre d'erreurs dans un mot de code est 5 presque toujours moins probable qu'un petit nombre d'erreurs. Il est avantageux que les deuxièmes moyens de calcul soient pourvus de premiers moyens de détection pour détecter un nombre d'erreurs de symbole 10 apparues de deux au maximum et ainsi, par résolution directe d'une équation de localisateur d'erreurs au maximum du deuxième degré, localiser et calculer directement les erreurs, et par contre, ne calculer l'évaluateur d'erreurs que pour un nombre plus 15 élevé d'erreurs de symbole détectées Dans de nombreux cas, le nombre d'erreurs de symbole qui apparaissent est peu élevé et cette procédure paraît garantir une accélération La procédure selon l'état connu de la technique, dans le cas d'un petit nombre d'erreurs de 20 symbole, est en elle-même aussi courte, mais cette technique n'offre aucune possibilité de parvenir encore a une correction lors de la constatation d'un plus grand nombre d'erreurs Selon la méthode ici décrite, la quantité de pas de traitement exécutés est chaque 25 fois adaptée à la quantité de perturbations. Il est avantageux que les troisièmes moyens de calcul soient pourvus de deuxièmes moyens de détection pour détecter un nombre actuel de trois erreurs de symbole et alors, par résolution d'une équation de 30 localisateur d'erreurs cubique, localiser et calculer les erreurs, mais pour, dans le cas de la détection d'un plus grand nombre d'erreurs de symbole, mettre en oeuvre un cycle de recherches selon Chien le long de la rangée de symboles de code jusqu'à ce que l'on ait 35 localisé une erreur de symbole et extraire alors par division le facteur représenté par cette erreur de symbole du localisateur d'erreurs, grâce à quoi le nombre actuel d'erreurs de symbole restantes est réduit d'une unité, et lorsqu'un nombre actuel prédéterminé 5 d'erreurs de symbole est atteint, résoudre directement l'équation de localisateur d'erreurs La méthode de recherche selon Chien convient en soi parfaitement, surtout pour un grand nombre d'erreurs corrigibles par mot de code, 10 selon la forme d'exécution préférée, 10 mais elle est aussi fastidieuse et la méthode suivie ici offre une accélération notable dans la grande majorité des cas. Il est avantageux que les premiers moyens de calcul soient pourvus d'une boucle contenant, en série, 15 un circuit OU-EXCLUSIF pour la réception des symboles de code, un tampon pour le stockage des symboles de syndrome (provisoires) formés pour un mot de code et une mémoire morte pour le stockage des tables de multiplication pour la matrice 20 de contrôle de parité, dont une sortie est couplée en retour à une autre entrée du circuit OU-EXCLUSIF, tandis qu'une autre sortie du tampon est connectée aux deuxièmes moyens de calcul pour y amener la rangée de symboles de syndrome définitifs lors du 25 traitement complet du mot de code en question Ceci constitue une solution peu coûteuse qui peut respecter la haute vitesse de parcours exigée. Il est avantageux que pour la détection du dernier symbole de code d'un mot de code au moyen d'un 30 bit de signal qui y est accroché, un détecteur de signal soit présent dont une sortie active l'autre sortie en vue de préparer le circuit à la réception d'un premier mot de code suivant Une telle signalisation donne une réalisation simple pour la détection 35 de la fin d'un -mot de code Il est notamment ainsi possible de traiter une succession de mots de code de longueurs différentes sans que ces longueurs doivent être connues d'avance. Il est avantageux que les deuxièmes, troi5 sièmes et quatrièmes moyens de calcul soient réalisés par un circuit qui comprend: un tampon d'entrée pour le stockage d'au moins la rangée complète de symboles de syndrome qui est engendrée pour un mot de code, un micro-ordinateur, un tampon de sortie pour le stockage d' une série de symboles de localisation d'erreurs et d'appréciation d'erreurs qui est engendrée pour une rangée complète d'une série de symboles de syndrome associés à un mot de code et un bus de connexion connecté entre ces 15 éléments, auquel un dispositif à table de log/antilog est également connecté pour exécuter des opérations de multiplication sur les symboles dans le corps de Galois en question, ainsi qu'une mémoire de données pour laquelle des adresses peuvent être 20 fournies par le micro-ordinateur au moyen du bus et par un compteur indicateur de temps externe pouvant être incrémenté Il semble que, moyennant un tamponnement intermédiaire, une fréquence d'erreurs moyenne peut être convenablement traitée à l'aide de 25 ces moyens simples, tandis que le ou les tampons ne parviennent au bout de leur capacité que dans le cas de séries relativement longues de mots de code fortement perturbés Dans l'exemple de réalisation, on utilise aussi le dispositif a tables pour stocker d'autres 30 grandeurs, les tables de C,D et K décrites plus loin. Grâce à l'ample adjonction de tampons, une opération du genre pipeline peut, en outre, être réalisée de manière avantageuse. Il est avantageux qu'un détecteur soit aussi connecté au bus pour détecter, par détection d'une rangée de symboles de syndrome associée à un mot de code et comprenant exclusivement des symboles "zéro", sans passer par le microordinateur, un mot de code sans faute et alors appeler une première rangée 5 suivante de symboles de syndrome Ceci assure une détection très rapide des mots de code sans faute En principe, on s'attend à ce que ces mots de code sans faute se présentent relativement souvent, de sorte qu'une petite adjonction au circuit a un effet relati10 vement important Dans l'exemple de réalisation, cette signalisation est aussi utilisée pour la conduite rapide de l'exécution du transfert des séries de symboles indicateurs d'erreurs vers un dispositif d'utilisateur. L'invention concerne également un dispositif de lecture pour des corps de stockage pouvant être lus par voie optique qui est pourvu d'un système décodeur du type spécifié comportant des moyens de positionnement pour recevoir un tel corps de stockage, des moyens d'entraînement pour entraîner le corps de stockage autour de son axe de rotation à une vitesse de rotation en substance uniforme, des moyens de lecture pour lire, à partir d'une piste sur le corps de stockage, une série de bits avec une conversion série25 parallèle en vue de la présentation aux dits premiers moyens de calcul Ceci fournit une application avantageuse de l'invention, du moins aux endroits o le stockage de données sur un tel corps de stockage d'une part, assure une densité de stockage élevée, mais 30 d'autre part, est sujet à des erreurs; la fiabilité est donc fortement accrue. COURTE DESCRIPTION DES FIGURES L'invention sera expliquée plus en détail avec référence aux figures On expliquera tout d'abord 35 globalement le code, puis le dispositif utilisé et finalement le calcul et la correction des erreurs au moyen de celui-ci. la Fig 1 illustre un exemple d'une matrice de contrôle de parité CHl du code; la Fig 2 illustre un dispositif de lecture pour un corps de stockage prévu pour un enregistrement optique numérique; la Fig 3 est un schéma synoptique d'un microordinateur à utiliser; la Fig 4 est un exemple des éléments d'un corps de Galois GF( 2 ^ 4); la Fig 5 illustre un dispositif destiné à calculer les symboles de syndrome; la Fig 6 illustre un dispositif destiné à 15 effectuer des calculs dans un corps de Galois; la Fig 7 illustre un organigramme global des opérations de correction d'erreurs; la Fig 8 a illustre l'équation clé et la méthode à utiliser pour sa résolution; la Fig 8 b illustre un organigramme d'une première partie de la résolution de l'équation clé; la Fig 9 illustre un organigramme de la deuxième partie de cette résolution; la Fig 10 illustre un organigramme de la 25 résolution d'une équation du deuxième degré; la Fig 11 illustre un organigramme de la détermination de l'évaluateur d'erreurs; la Fig 12 illustre un organigramme de la résolution d'une équation du troisième degré, et la Fig 13 illustre un organigramme de l'exécution d'une opération de recherche de Chien et de la détermination des valeurs d'erreurs. COURTE DESCRIPTION D'UN CODE A UTILISER La Fig 1 illustre un exemple d'une matrice de 35 contrôle de parité lHl d'un code par blocs dit de Reed- Solomon Une matrice de générateur lGl pour ce code est donnée par f Gl*lH 7 =O, le nombre de rangées k de la matrice lGl étant égal au nombre k de symboles de données dans un mot ou bloc de code, et le nombre N de 5 colonnes étant égal au nombre total de symboles dans un mot de code, y compris les symboles redondants Pour plus de simplicité, on ne considérera ici que les codes systématiques au niveau des symboles La matrice de générateur peut, sans modification des propriétés de 10 code, être multipliée par une matrice de transposition par laquelle les rangées changent de place Les éléments de matrice sont des éléments d'un corps de Galois et sont formés d'un nombre m de bits tels que 2 exp(m)> (n) Le corps de Galois est produit par un 15 polynôme primitif et irréductible associé Pour les éléments de ce corps de Galois, les quatre opérations arithmétiques sont définies Lorsque le nombre de symboles à corriger par mot de code est égal à t, (nk)> ( 2 t-l), o en outre, n> k> O Le plus souvent, le 20 nombre de symboles redondants est aussi égal au double du nombre maximum d'erreurs de symboles A corriger La grandeur "d" est la distance dite de code et d-l=n-k, o 2 t DESCRIPTION DU DISPOSITIF DE LECTURE La Fig 2 illustre un dispositif de lecture pour un corps de stockage pour un enregistrement optique numérique Le corps de stockage qui, dans 30 certaines réalisations peut être lu des deux côtés, comporte une plaque supérieure 24, un creux 26 éventuellement rempli d'un gaz inerte, par exemple de l'argon, une couche 28 qui contient du tellure, et une couche de base 32 Le creux est défini par un anneau de 35 fermeture 32 qui assure l'étanchéité à l'air L'infor- mation est contenue dans de petits trous de la couche contenant du tellure qui, lors de l'enregistrement, sont formés par brûlage au moyen d'un rayon laser A l'endroit d'un trou, la réflexion de la lumière inci5 dente est alors fortement diminuée Une couche de polymère peut être appliquée sur le corps de stockage et, sur cette couche, une piste de lecture est définie au moyen d'un sillon Le corps de stockage est un corps discoide monté sur un palier 22 (indiqué schémati10 quement) et entraîné autour de l'axe 20 par le moteur 34 On ne décrira ci-après que la lecture Le laser de lecture 36 émet en continu et éclaire pendant la rotation du disque une piste circulaire ou spiralée, par l'intermédiaire du prisme semi-réfléchissant 38 et 15 du système de lentilles 40 à objectif de microscope La lumière réfléchie passe, par l'intermédiaire du système de lentilles 40 et du prisme semi-réfléchissant 38, vers le détecteur 42 Le signal d'horloge est extrait du signal détecté par le mécanisme d'extraction d'hor20 loge 44 et permet d'assurer la régulation du régime du moteur par l'intermédiaire de l'élément de commande 46. La nature precise de cette régulation ne sera pas expliquée, pour plus de concision, pas plus que les mécanismes pour suivre la piste dans le sens radial et 25 dans le sens axial définis par rapport au disque et pour maintenir continuellement une focalisation correcte. Le signal de sortie du détecteur 42 est converti dans le discriminateur 48 en un signal binaire 30 haut/bas présentant des transitions dont les perturbations ont été éliminées Ce signal est formé de bits de canal Le flux de bits de canal satisfait à des conventions prédéterminées qui sont en rapport avec les propriétés de canal et qui ne sont pas importantes pour 35 la description qui suit Le flux de bits de canal est démodulé dans l'élément 50, de sorte qu'une certaine quantité de redondance est éliminée et que seu 11 subsistent les bits de code Le flux de bits de codd est converti dans le convertisseur série/parallèle 52 5 en des symboles de code à 8 bits qui sont finalement envoyés au dispositif décodeur 54 pour la correction/détection d'erreurs Dans le dispositif 54, un supplément de redondance organisée sur bases des symboles est éliminé, de sorte que les symboles de données apparais10 sent pour un utilisateur sur la sortie 56 La correction peut, éventuellement, aussi avoir lieu ailleurs. La synchronisation réciproque du fonctionnement des éléments 48 à 54 n'est pas illustrée pour plus de simplicité Dans une version plus développée, plusieurs 15 éléments de bits du disque sont convertis ensemble en bits de code, mais ceci n'est pas décrit ici pour plus de simplicité. DESCRIPTION DES MOYENS DE CALCUL La Fig 3 illustre un schéma synoptique d'un 20 micro-ordinateur à appareillage périphérique à utiliser dans un dispositif décodeur 54 Dans l'exemple de réalisation, les calculs sont exécutés dans un microcontrôleur du type 8 X 300 ou 8 X 305 fabriqué par Signetics Corporation, 811 Fast Arques Av, Sunnyvale, 25 Californie, E U A, et décrit dans la documentation du fabricant Ce composant est en l'occurrence adéquat pour l'exécution d'instructions de seize bits qui se trouvent sur le bus 58 Il y a en outre un bus à treize bits 60 pour des adresses d'instructions et un bus à 30 huit bits bidirectionnel 62 pour l'application/évacuation de données De plus, le micro-contrôleur comporte un registre d'instructions 64, quelques registres généraux 66, un dispositif logique à décalage 68, un dispositif logique de conjugaison (merge) 70, un tampon 35 d'entrée/sortie 72, un dispositif logique de rotation 74, un dispositif logique de masquage (mask) 76, une unité arithmétique et logique 78, un mutiplexeur d'adresses 80, un registre d'adresses 82, un compteur de programme 84, un dispositif logique d'incrèmentation 5 d'adresses 86, un dispositif logique de décodage et de commande général 88 et doit être pourvu d'un oscillateur/rythmeur externe 90 Pour plus de concision, on ne décrira pas le fonctionnement de ce contrôleur plus en détail Pour le stockage de données, on utilise une 10 memoire de lecture/écriture présentant une capacité maximum de 256 mots de 8 bits pour laquelle des données et des adresses sont transportées par l'intermédiaire du bus de données dans une organisation multiplex dans le temps Le temps d'instruction est de 250 nsec et la 15 programmabilité est aisee. La Fig 4 illustre un tableau servant à élucider les opérations effectuées sur les symboles qui sont formés ici à titre d'exemple de quatre bits de code seulement (en réalité, les symboles sont formés de 20 8 bits et il y a donc 256 contenus de données différents) Le corps de Galois GF( 2 ^ 4) est donc formé ici de seize symboles et est engendré par le polynôme primitif et irréductible qui a ici la forme x(exp 4)+x+l Il y a ici et aussi dans GF( 2 ^ 8) de plus 25 d'une possibilité pour ce polynôme Les éléments du corps de Galois sont donnas deux fois, une première fois comme une série de puissances de l'élément primitif a, et une autre fois comme une représentation vectorielle, à savoir comme une série de bits associée 30 a chaque puissance de a respective Dans un corps de Galois, les quatre opérations arithmétiques sont définies L'addition et la soustraction peuvent être effectuées par bits dans le micro-ordinateur, par exemple: ( 0110)+( 1011)=( 1101), l'addition étant 35 effectuée par bits et modulo-2 La multiplication et la division sont plus aisées grace à l'utilisation de logarithmes de base a Dans une table de logarithmes, le symbole de code sert d'adresse et les exposants de la base servent de données Dans une table d'antiloga5 rithmes, l'exposant sert d'adresse et le symbole de code sert de données Par exemple: ( 0110) * ( 1011) donne a(exp 5) * a(exp 7) = a(exp 12) donne ( 1111). La division s'effectue d'une manière correspondante, le calcul s'effectuant toujours modulo 2 exp(m)-l, et donc dans cet exemple m est égal à 4. La Fig 5 illustre un dispositif destiné à 15 calculer les 20 symboles de syndrome par mot de code. Ce dispositif présente deux modes de travail: dans le premier mode de travail, les symboles d'une séquence ou mots de code sont reçus et dans le deuxième mode de travail qui suit directement, les 20 symboles de 20 syndrome sont présentés sur une sortie en vue d'un traitement ultérieur L'information arrive en série de bytes sur l'entrée 300 et est stockée passagèrement dans les deux mémoires FIFO 302,304 du fabricant M.M I; dans cette partie, la largeur des symboles est 25 de huit bits, tandis qu'est ajouté un neuvième bit qui a normalement la valeur zéro mais qui, pour le dernier symbole d'une séquence, a la valeur un Les sorties des mémoires FIFO sont connectées a deux composants 306,308; il s'agit de composants de la série TTL bien 30 connue de la Société Texas Instruments Corporation, type SN 745135 présentant la fonction quadruple OU/NON OU EXCLUSIF et l'indication habituelle " 5135 " est donc une abréviation Le bit supplémentaire qui indique le dernier symbole est appliqué au dispo35 sitif de commande de séquence chronologique décrit plus loin Les éléments 313,315 du type 5163 commandent la sélection des tables parmi les dispositifs à tables 320, 322,324; lors de la présentation d'un nouveau symbole de code sur la sortie 302, ils sont chaque fois 5 ramenés à zéro L'élément 310 du type 5273 travaille sur une largeur de données de 8 bits et est une bascule de données octuple à possibilité de retour à l'état initial Les éléments 312,314 travaillent chacun sur quatre bits en parallèle et forment-une mémoire FIFO du 10 type FAIRCHILD 9403 présentant une profondeur de données de 2 * 12 = 24 symboles La sortie de ces éléments est connectée à un composant 318 du même type que le composant 310; d'autre part, la sortie des éléments 312,314 est aussi disponible en tant que 316 pour la 15 connexion d'autres composants (sur la Fig 6) pour fournir les symboles de syndrome. Les composants 320,322,324 sont des mémoires mortes programmables (PROM) du type INTEL 3636 B, ayant chacune une capacité de 2 k* 8 bits Ces mémoires con20 tiennent les éléments de la matrice de contrôle de parité A la réception du premier symbole de code, tous les symboles de syndrome ont la valeur zéro Ces symboles de syndrome provisoires sont chacun mutipliés par la rangée associée de la matrice de contrôle de 25 parité, tandis que chaque produit ainsi formé est additionné au nouveau symbole de code reçu pour former un symbole de syndrome plus précis Pour chaque symbole de code reçu, vingt symboles de syndrome sont donc reformés Apres la réception du dernier symbole de 30 code, les vingt symboles de syndrome définitifs sont prêts pour un traitement ultérieur Le tampon 312/314 a une capacité suffisante pour les vingt symboles de syndrome; la capacité en excès n'est pas utilisée La commande dans le temps donne, sous la commande du 35 neuvième bit de syndrome qui identifie le dernier symbole du mot de code et donc après la formation des symboles de syndrome définitifs, un signal de commande de reprise au circuit de la Fig 6 pour reprendre les symboles de syndrome sur les entrées 334,336 qui sont connectées à la sortie 316. La Fig 6 illustre un dispositif servant à exécuter des calculs dans un corps de Galois, qui est alimenté sur les entrées 334,336 ayant ensemble une largeur de huit bits par la sortie 316 de la Fig 5. 10 Les éléments 338,340 forment à nouveau un tampon FIFO présentant une profondeur de données de 2 * 64 = 128 symboles Ceci suffit donc pour plus de six séquences, de sorte qu'on dispose d'une marge de sécurité Lorsqu'une séquence contient peu de symboles erronés, le trai15 tement dans le circuit de la Fig 6 est très rapide, mais ce traitement dure plus longtemps à mesure que le nombre de symboles erronés augmente Grâce au tamponnement, il suffit que le temps de traitement de séquence moyen dans le circuit de la Fig 6 sur une 20 suite de six séquences successives corresponde à la vitesse de livraison sur l'entrée 300 Si cette valeur moyenne devenait trop élevée, le tampon déborderait; dans ce cas, l'entrée 300 est bloquée, ce qui signifie que le corps de stockage doit effectuer une révolution 25 supplémentaire pendant laquelle aucune autre information ne peut être fournie Le composant 342 est un tampon inverseur d'une largeur de 8 bits comportant une sortie à trois états (respectivement, bas, haut et fermé par une haute impédance) dont la sortie est 30 connectée au bus a huit bits 344 Sur ce bus sont présents des signaux de données inversés D'une manière correspondante, la sortie de données est aussi formée au moyen d'un tampon à huit bits 346 et d'un tampon FIFO 348,350 présentant une profondeur de données de 35 64 symboles Sur cette sortie apparaît l'information qui identifie les symboles éventuellement perturbés à savoir et dans l'ordre la position du symbole de code perturbé et la valeur de l'erreur La valeur doit être ajoutée par bits et modulo-2 au symbole perturbé pour 5 donner la valeur correcte Selon la convention utilisée ici, l'information pour chaque bloc ou mot de code est mise en forme de la manière suivante: 00, série d'indications d'erreurs (xi,yi), 00 10 Pour zéro erreur, ceci signifie donc la série 00,00 Pour chaque symbole perturbé, deux symboles supplémentaires apparaissent dans cette série, en premier lieu l'emplacement de l'erreur et ensuite la 15 valeur de cette erreur Pour un mot de code incorrigible, la série est FF,00 Pour l'exécution des calculs proprement dits, le micro-ordinateur 352 de la Fig 3 est prévu En premier lieu, sa connexion de données est connectée au bus De plus, la sortie d'adresse (on 20 n'utilise que les onze bits les moins significatifs de l'adresse) est connectée aux mémoires PROM 354,356,358 du type 5191 ou 3636 Les deux premières de ces mémoires sont utilisées, connectées en parallèle, pour fournir des instructions de 16 bits de largeur sur 25 l'entrée d'instructions du micro-ordinateur 352 La troisième mémoire PROM 358 est utilisée pour engendrer d'autres signaux de commande De cette manière, ces derniers peuvent être très rapidement engendrés et n'exigent alors aucun transport par l'intermédiaire du 30 bus 344: ce dernier serait en effet relativement lent. A la sortie de la mémoire PROM 358 est connectée une bascule 360 de 8 bits de largeur pouvant être ramenée à l'état initial du type 5273 pour tamponner passagèrement l'information de commande pour d'autres éléments 35 du circuit; la disponibilité de cette information de commande est ainsi améliorée et le circuit peut fonctionner plus rapidement que sans ce moyen: cette information peut toujours être rendue disponible d'avance, de sorte qu'il ne faut pas au dernier moment encore exécuter un cycle de machine. Le bus est en outre connecté au composant 362 qui forme une porte NON-ET à huit entrées, de sorte qu'il est possible de détecter si un byte d'information de valeur zéro est présent sur le bus Ce composant 10 forme un détecteur de l'état zéro des symboles de syndrome et des localisations d'erreurs au profit de la commande de la séquence chronologique Dans de nombreux cas, une séquence reçue sera sans erreurs; tous les symboles de syndrome sont alors égaux à zéro et l'en15 semble de syndromes de lapremière séquence suivante peut immédiatement être attaqué et ce sans que le micro-ordinateur doive effectuer une grande quantité de calculs L'élément 364 est un circuit à déclenchement transparent octuple (latch) qui sert de registre 20 d'adresses pour la mémoire PROM 368 du type décrit plus haut Celle-ci contient des tables de logarithmes et d'antilogarithmes pour le corps de Galois en question, comme décrit plus haut, ainsi que des tables pour les grandeurs "C","D" et "K" décrites plus loin A l'aide 25 de la boucle ainsi formée, on peut effectuer très rapidement une conversion de données, étant entendu qu'un signal de commande supplémentaire provenant de l'élément 360 indique la catégorie de la conversion ( 5 différentes). L'élément 370 est une m 6 moire RAM du type 8 X 350 d'une capacité de 256 * 8 bits et pouvant être pilotée à une fréquence d'horloge allant jusqu'à 10 M Hz; cette horloge est engendrée extérieurement et régit aussi la commande chronologique et la formation 35 des symboles de syndrome Les adresses de huit bits peuvent être appliquées en premier lieu, par l'intermédiaire du bus 344, au moyen des deux multiplexeurs connectés en parallèle 372,374 du type 5157, qui sont commandés par des signaux de sortie de l'élément 360. 5 Ces multiplexeurs peuvent reçevoir d'autres informations d'adresses de l'élément 376 du type 504, un inverseur sextuple Ce dernier est piloté par les deux compteurs à quatre bits connectés en parallèle 380,382 du type mentionné plus haut dont seuls cinq bits de 10 sortie en parallèle sont utilisés Le sixième bit d'adresse est formé par la commande chronologique De cette manière, des séries d'adresses de la mémoire 370 peuvent aussi être lues et enregistrées rapidement les unes à la suite des autres, sans qu'un trafic autre que 15 de données soit nécessaire sur le bus 344 L'élément 378 est un multiplexeur du type précité qui est alimenté par des signaux de sortie de commande du microordinateur 352 ou par des signaux de la commande chronologique externe Celle-ci intervient aussi pour 20 commander la mémoire 370 au cas o celle-ci peut stocker des données intermédiaires de natures différentes dans des sous-parties correspondantes Les bits de commande de modes différents peuvent être amenés par ce mécanisme Les éléments 380,382 sont des compteurs 25 (voir Fig 5); les sorties sont appliquées au circuit à déclenchement 378, puis aux multiplexeurs 372,374, de sorte qu'une succession de modes différents peut être très rapidement commandée L'organisation décrite permet notamment d'analyser très rapidement et dans un 30 ordre quelconque des séquences d'adresses dans diverses parties de la mémoire 370. LE CALCUL DES ERREURS L'exemple de réalisation fait appel à un mot de code de N symboles de code qui est protégé, selon un 35 code systématique, contre la présence au maximum de dix mots de code perturbés de manière aléatoire, au moyen d'un nombre de vingt symboles de code redondants Le dispositif peut, sans aucune adjonction, traiter un nombre de 24 symboles de code redondants, ceci étant 5 déterminé, entre autres, par les capacités des éléments 320, 324,312,314 sur la Fig 5 Pour des raisons théoriques, la longueur du mot de code peut être portée au maximum jusqu'à 255 symboles de code, mais la plus petite longueur significative d'un mot de code est de 10 21 symboles, à savoir 1 symbole de données et 20 symboles de redondance Tous les symboles sont formés de 8 bits Le polynôme de générateur du code utilisé a la forme suivante: g(x) = (x a^O)(x a 1 l) (x-a A 19) o le produit est a nouveau calculé dans GF( 2 8) Tous les mots de code corrects sont un multiple de ce polynôme de générateur et ont les mêmes points zéro que 20 le polynôme de générateur. La Fig 7 est un organigramme global de l'opération de correction des erreurs L'opération débute dans le bloc 100 et, au terme de cette opération, le mot de code entier est disponible, par exemple 25 dans une mémoire RAM suffisamment grande, en vue d'un traitement dans le circuit de la Fig 5 Dans le bloc 102, a lieu par multiplication avec la matrice de contrôle de parité lHli, la détermination du syndrome, il s'agit donc dans la forme d'exécution préférée de 30 (n-k)= 20 symboles Cette opération a lieu dans le circuit de la Fig 5 et dans le corps de Galois en question. Les autres opérations sont exécutées dans le circuit de la Fig 6 Tout d'abord l'équation clé est 35 résolue dans le bloc 104: elle a la forme: 1 +S(z)7 * sigma(z) +oméga(z) mod z^( 2 t+l) voir le livre "Algebraic Coding Theory" de Erwin 5 P Berlekamp, McGrawhill, page 178 et suivantes Il est prouvé que pour chaque motif d'erreur pouvant être corrigé, il est possible de trouver les polynômes sigma(z) et oméga(z), la grandeur S(z) étant dans ce cas le polynôme formé par les symboles de syndrome. La grandeur sigma(z) est le polynôme localisateur d'erreurs La grandeur oméga(z) est le polynôme évaluateur d'erreurs; les deux polynômes doivent être calculés pour la détermination de la correction Dans la notation de Berlekamp, le symbole de liaison i 15 signifie "est congruent avec", c'est-à-dire: il existe un polynôme C(z), de sorte que le terme de gauche de l'expression est égal à C(z)*z^( 2 t+l)+oméga(z) Il convient de noter également que le terme "l+S(z)" dans l'équation clé peut être remplacé par "S(z)": lorsque 20 pour z est introduite une valeur pour laquelle une erreur est apparue, le polynôme localisateur a aussi une valeur égale à zéro. Un énumérateur d'erreurs L est ensuite postulé: il donne une évaluation mouvante du degré du 25 polynôme localisateur d'erreurs Lorsque ce degré est égal à zéro, tous les symboles de syndrome sont euxmêmes aussi égaux à zéro et le mot de code est considéré comme un mot sans erreurs, ceci n'étant pas indiqué séparément dans l'organigramme: le système 30 peut alors passer directement au bloc 122:stop. La stratégie de la résolution des erreurs est a présent la suivante: on recherche le motif d'erreur le plus simple (le plus petit nombre de symboles perturbés) qui ne soit pas en conflit avec le motif de 35 syndrome trouvé; l'idée de base est qu'un petit nombre d'erreurs est quasi toujours plus probable qu'un plus grand nombre d'erreurs Le polynôme de syndrome est alors représenté comme étant le quotient de deux autres polynômes de forme aussi simple que possible, en 5 l'occurrence de degré aussi bas que possible Lorsqu'on trouve a présent une solution avec un certain nombre d'erreurs de symbole, on vérifie d'une manière non exhaustive, mais en tenant compte uniquement d'un nombre limité d'autres symboles de syndrome, si une 10 autre solution peut être trouvée En soi, il est en principe le plus souvent possible de trouver un mot de code présentant un motif d'erreur plus compliqué qui respecte la même configuration de syndrome, mais le risque d'une telle erreur est en luimême très petit et 15 de plus le risque que le nombre d'erreurs postulé se trouve alors encore dans le domaine de valeurs corrigible est faible Finalement, dans le bloc 104, l'énumérateur auxiliaire d'erreurs LH est égal à l'énumérateur d'erreurs L A la sortie du bloc 104, le nombre 20 d'erreurs de symboles est connu. Dans le bloc 106, on vérifie si le nombre d'erreurs est égal à " 1 " Dans l'affirmative, on détermine le localisateur d'erreurs et la valeur d'erreur du symbole unique perturbé directement dans le 25 bloc 124 Dans la négative (N), on vérifie dans le bloc 108 si deux erreurs de symbole sont apparues Lorsque le résultat de cette vérification est positif (Y), on peut trouver dans le bloc 126, au moyen de la résolution d'une équation quadratique (voir Fig 10), les 30 emplacements et, au moyen des valeurs des symboles de syndrome, les valeurs des deux symboles perturbés (bloc 126) Lorsque l'énumérateur d'erreurs est supérieur à deux; cette opération ne peut pas être effectuée directement par la méthode indiquée et il faut tout 35 d'abord déterminer dans le bloc 110 l'évaluateur d'erreurs ce qui est décrit en détail à propos de la Fig 11 Lorsque le bloc 110 est traversé, on vérifie dans le bloc 112 si l'énumérateur d'erreurs L a la valeur "trois" Lorsque cette vérification donne un 5 résultat positif (Y), le système passe au bloc 118. Lorsque la vérification donne un résultat négatif (N), un cycle de recherche selon Chien est effectué dans le bloc 114 Lorsqu'on trouve dans ce cas un symbole perturbé, on extrait par division le point zéro en 10 question, ce qui abaisse d'une unité le degré du localisateur d'erreurs L'énumérateur d'erreurs auxiliaire est alors décrémenté Ce cycle de recherche est décrit plus en détail à propos de la Fig 12 L'énumérateur d'erreurs auxiliaire donne le nombre d'erreurs 15 qui coopèrent encore dans le localisateur d'erreurs. Dans le bloc 116, on vérifie si l'énumérateur d'erreurs auxiliaire a à présent la valeur "trois" Aussi longtemps que le résultat reste négatif, le système revient (chaque fois) au bloc 114 pour exécuter un nouveau 20 cycle de recherche selon Chien Lorsque, par exemple dix symboles perturbés sont présents, le bloc 114 devra être traversé sept fois Lorsque, dans le bloc 116 la vérification donne un résultat positif, l'équation cubique restante est résolue dans le bloc 118 Finale25 ment, au départ du bloc 118, on trouve les valeurs de symboles perturbés proprement dites dans le bloc 120. Pour les cas comportant une ou deux erreurs, ceci a déjà été effectué dans les blocs 124,126 Dans le bloc 122, l'ensemble du mot de code est corrigé et une 30 nouvelle série de symboles de syndrome peut être extraite du tampon dans le cas o le mot de code que l'on vient de traiter n'est pas le dernier à traiter. Dans le circuit de la Fig 6, la correction proprement dite n'est pas effectuée, mais seuls les 35 emplacements d'erreurs Xi et les valeurs d'erreurs Yi sont fournis au système en vue d'une utilisation ultérieure L'organigramme simplifié de la Fig 7 ne comprend pas les blocs qui détectent si une correction d'erreurs est devenue impossible Il apparaît que le 5 fait d'éviter en majeure partie les opérations dans le bloc 114 crée un processus à action rapide On vérifie en effet toujours la valeur LH= 3 et, dans la plupart des cas, lors d'un des premiers passages par ce bloc, la réponse sera déjà positive Il est possible de 10 modifier l'organigramme illustré Dans ce cas, il faut toujours tenir compte du fait que les cycles de recherches selon Chien durent relativement longtemps et pourraient donc prendre une part importante du temps de traitement Or, il serait en soi possible de vérifier 15 dans le bloc 116 si l'énumérateur auxiliaire d'erreurs est égal à 2 ou à 1, de telle sorte que l'on ne doive par après résoudre qu'une équation du second ou du premier degré Il est en principe aussi possible de résoudre directement un localisateur d'erreurs du 20 quatrième degré ou d'un degré supérieur sans recourir aux cycles de recherches selon Chien, mais cette procédure est aussi compliquée Le choix du domaine des valeurs dépendra parfois du micro-ordinateur disponible ou des propriétés du canal qui provoque les erreurs. 25 LA SOLUTION DE L'EQUATION CLE Les Fig 8 b,9 illustrent un organigramme détaillé de la résolution de l'équation clé (bloc 104 de la Fig 7) La Fig 8 a illustre le principe de la résolution d'une équation matricielle selon la règle 30 dite de Cramer Lorsqu'on part du fait que le produit d'une matrice carrée de n*n éléments et d'un vecteur inconnu est égal à un vecteur connu, tous deux de n éléments, on peut trouver les éléments xl xn du vecteur inconnu en substituant chaque fois le vecteur 35 connu dans la colonne de la matrice présentant le même numéro d'ordre que le vecteur inconnu et en divisant le déterminant de la matrice modifiée par le déterminant de la matrice non modifiée Selon une procédure de résolution possible, cette opération devrait être 5 exécutée tout d'abord pour la valeur n= 10, ce qui représente un calcul très étendu De plus, ce calcul devrait alors être répété pour n= 9, pour n= 8, jusqu'à ce que la solution soit trouvée Le démarrage avec n= O et la répétition du calcul pour des valeurs N de plus 10 en plus élevées, ne procurent aucune économie de temps parce qu'il faudrait alors aussi toujours progresser jusqu'à la valeur n= 10, de sorte que la procédure serait encore plus longue En effet, seule la valeur la plus élevée de N qui donne une solution est la valeur 15 correcte C'est pourquoi on ne choisit pas cette esquisse de procédure de solution qui peut être qualifiée de méthode à "force brutale" La résolution selon la description part certes de la valeur n= 0, mais contient un contrôle inhérent de l'exactitude, de sorte 20 que le nombre d'erreurs déterminé est aussi avec une très grande probabilité le nombre correct De plus, les résultats partiels calculés précédemment sont toujours utilisés dans des calculs à exécuter ultérieurement, de sorte qu'une économie de temps supplémentaire est 25 réalisée. Dans ce cas, la résolution de l'équation clé dans l'organigramme de la Fig 7 ne représente qu'un seul bloc d'opérations et le plus souvent d'autres opérations sont encore nécessaires Lors de la réso30 lution de l'équation clé, dans la méthode à décrire, on ne présupposera chaque fois qu'un petit nombre d'erreurs et on vérifiera ensuite les résultats de cette présupposition par rapport à la configuration de syndrome réelle Notamment, lorsque le nombre de 35 symboles réellement perturbés dans le mot de code est petit, la méthode décrite fournit une solution rapide par le fait qu'un petit nombre d'opérations seulement est possible Le décodage peut ainsi être effectué avec le micro-ordinateur décrit plus haut, tandis que l'opération au niveau des mots de code peut quand même être effectuée presque toujours en temps réel par rapport à la réception des mots de code. La Fig 8 a illustre tout d'abord à nouveau l'équation clé S(z)*sigma(z) =oméga(z) formalisée En 10 dessous, l'équation clé est écrite sous la forme d'éléments pour le cas de dix erreurs de symbole; la matrice de gauche est formée de 10 * 10 éléments dans lesquels tous les symboles de syndrome sont représentés Les autres colonnes comprennent deux vecteurs 15 chacun de dix éléments, le vecteur de droite étant à nouveau formé de symboles de syndrome Pour un plus petit nombre d'erreurs de symbole apparu, le déterminant de la matrice est cependant égal à zéro, de sorte qu'aucune solution n'est trouvée Il faut alors 20 choisir une matrice plus petite En dessous se trouve le cas prévu pour trois erreurs En fait, il faut trouver la plus grande matrice dont le déterminant ne soit juste pas encore égal à zéro Le bas de la figure présente l'équation décomposée en éléments permettant 25 de déterminer le deuxième coefficient de sigma(z), dans le cas o dix erreurs de symbole sont effectivement présentes Selon la méthode de calcul décrite, on part cependant d'une matrice aussi petite que possible pour le calcul de sigma(z), tandis que pour une matrice plus 30 grande, on effectue un certain nombre de pas de vérification Dans ce cas, on part du fait que l'équation clé décrit aussi une partie du test ultérieur Pour passer d'une matrice relativement petite à une matrice plus grande, on utilise les résultats déjà trouvés, de sorte que seuls des pas d'incrémentation de matrice sont nécessaires pour essayer à nouveau, sur la dimension accrue, la résolution de l'équation matricielle On n'exécute ainsi chaque fois qu'un incrément de la règle de Cramer. En ce qui concerne à nouveau la Fig 8 b, la procédure débute dans le bloc 130 à la sortie duquel tous les symboles de syndrome sont disponibles ce qui permet aussi de formuler l'équation clé En premier lieu, dans le bloc 132, on rend à présent égal à zéro 10 le numéro de syndrome actuel N, c'est-à-dire le nombre de symboles de syndrome utilisé jusqu'à présent pour réaliser la règle de Cramer Ce nombre est (donc) égal au double du nombre d'erreurs de symbole supposé jusqu'à présent Ce dernier nombre est désigné par "L" 15 et il désigne aussi le degré de sigma(z) Trois grandeurs sont rendues égales à 1, à savoir le coefficient numéro zéro, sigma O (O-), de sigma (z), une grandeurauiliaire O 1 sigma O (Oo)quiy es assocriée etu gndeurauxidaire Oldalta(&O) pour la grandeur de différence deltal; les grandeurs 20 auxiliaires servent à sauver les grandeurs "réelles" associées Ensuite, on vérifie dans le bloc 134 si toutes la rangée de symboles de syndrome a été prise en compte S'il en est ainsi, la procédure selon les Fig 8 b,9 est, en tout cas, terminée et le système 25 passe au bloc 106 de la Fig 7 (en fait au bloc 110). Lorsque le test effectué dans le bloc 134 donne un résultat négatif, le système passe au bloc 136 Dans le bloc 136, la première différence deltal est calculée comme un produit interne d'une partie du vecteur de 30 syndrome actuel et du localisateur d'erreurs actuelles transposé: cette différence est donc une grandeur scalaire Lors du premier passage, la différence est donc égale au premier symbole de syndrome Le vecteur de syndrome actuel est donc la première rangée suivante 35 de la matrice sur la Fig 8 a pour le premier pas d'incrêmentation suivant Le localisateur d'erreurs actuelles est, dans ce cas, le vecteur localisateur d'erreurs valide jusqu'à présent, y compris le coefficient sigma O Lors du deuxième passage, les facteurs 5 comportent deux termes, et ainsi de suite jusqu'à une valeur maximum de neuf. Dans le bloc 138, on vérifie si la différence deltal est égale à zéro Dans la négative (N), le système passe au bloc 140 Dans le bloc 140, le nouveau 10 polynôme sigma(z) est déterminé et reçoit, lors de chaque passage, un terme supplémentaire Les anciens coefficients subissent, dans ce cas, aussi une modification Ceci s'effectue au moyen de la règle de Cramer décrite à propos de la Fig 8 a et ce avec une dimension 15 de matrice/vecteur qui augmente alors chaque fois d'une unité Ainsi, dans ce bloc, on calcule d'abord la deuxième différence delta 2 de la même manière que la première différence, mais sur une série de symboles de syndrome qui est décalée de 1 symbole De plus, l'énu20 mérateur d'erreurs L est incrémenté et un vecteur auxiliaire capdelta(l L) est déterminé, le nombre de composants de ce vecteur étant égal à la valeur de l'énumérateur d'erreurs Le premier composant est déterminé à partir du premier coefficient du locali25 sateur d'erreurs actuelles compte tenu des différences. Pour des numéros d'ordre i supérieurs à 1, le composant capdelta(i) est déterminé à partir du composant actuel de sigma(z) de rang immédiatement inférieur et à partir du composant de sigma(z) de deuxième rang inférieur 30 sauvé au cours d'un pas de calcul précédent Finalement, les composants actuels de sigma(z) sont sauvés, puis traités avec les composants calculés de capdelta de rangs associés et le nombre de symboles de syndrome pris en charge est remis à jour Finalement, la valeur 35 de deltal est sauvée De cette manière, les détermi- nants de la règle de Cramer sont chaque fois complétés d'une rangée+ colonne sans devoir être entièrement recalculés Le système revient ensuite au bloc 134. Lorsque l'essai dans le bloc 138 est positif 5 (Y) le système passe au bloc 142 Dans ce bloc, le numéro de syndrome en cours (= le nombre de symboles de syndrome pris en considération) subit une incrémentation Ceci revient à dire qu'on suppose un nombre d'erreurs de symbole "trop grand" qui ne correspondent 10 à des erreurs de symbole réelles que si le résultat positif dans le bloc 138 était prématuré Si le résultat dans le bloc 138 était justifié, les erreurs de symbole supplémentaires ne sont que des pseudo-erreurs de symbole Ensuite, la première différence deltal est 15 à nouveau calculée: en fait, il s'agit à présent de la même grandeur que la deuxième différence dans le bloc 140 Dans le bloc 144, on vérifie si cette première différence est égale à zéro Lorsque le résultat est positif, le système passe au bloc 146 o on vérifie si 20 le numéro de syndrome en cours est supérieur ou égal à une limite supérieure Nmax Cette grandeur est donnée dans le système pour chaque valeur de L, l'estimation du nombre d'erreurs de symbole; elle est toujours supérieure au nombre de symboles de syndrome qui ont 25 alors été pris en compte dans le bloc 136 Pour de nombreuses valeurs de L, ce nombre Nmax est inférieur à 20 et il est par exemple supérieur d'un nombre fixe au nombre actuel N dans le bloc 136, par exemple il est égal à 2 L+ 4; le choix est déterminé par le type d'er30 reur attendu et par le risque toléré d'une détection incorrecte La valeur de Nmax peut aussi bien être paire qu'impaire Le risque qu'une valeur supposée de l'énumérateur d'erreurs ne soit pas correcte est d'autant plus petit que la valeur de Nmax est choisie 35 plus grande; d'autre part, on économise du temps de calcul par le fait que cette dernière boucle ne doit être parcourue que quelques fois Aussi longtemps que l'essai dans le bloc 146 donne un résultat négatif, le système revient chaque fois au bloc 142; dans ce cas, 5 la première diff 6 rence suivante est chaque fois déterminée, le numéro d'ordre des symboles de syndrome pris en considération étant donc augmenté d'une unité et leur nombre restant toujours égal à (L+ 1) Lorsque la limite supérieure de Nmax est atteinte, le système 10 passe du bloc 146 directement au bloc 106 sur la Fig 7 Lorsque le résultat dans le bloc 144 est négatif, le système passe à l'entrée de la Fig 9 Ceci termine la description de la Fig 8 b. L'organigramme de la Fig 9 indique la 15 deuxième partie de la résolution de l'équation clé et est atteint a partir du bloc 144 de la Fig 8 b; la figure pr 6 sente une seule entrée dans le bloc 148 On peut interpréter l'entrée dans cet organigramme comme un insuccès du procédé de la Fig 8 b; dans la pratique, 20 cet insuccès n'apparaîtra que pour des combinaisons particulières d'erreurs de symbole Les mesures indiquées sur la Fig 9 sont en elles-mêmes connues et décrites dans le livre de Erwin R Berlekamp, cité plus haut, paragraphe 7 4, page 184 Les mesures, selon la 25 Fig 8 b, conduisent alors le plus souvent à un traitement accéléré Divers blocs de traitement présentent des opérations correspondant à celles du bloc 140 sur la Fig 8 b Dans le bloc 148, la valeur de l'énumérateur d'erreurs L est sauvée dans une variable auxi30 liaire L O et la valeur de L est ensuite recalculée A la sortie du bloc 140 sur la Fig 8 b, N était égal à 2 L, mais dans le bloc 142, la valeur de N avait été une ou plusieurs fois incrémentée La nouvelle valeur de l'énumérateur d'erreurs devient ainsi supérieure à 35 l'ancienne Dans le bloc 150, on vérifie si la valeur de L est sup 6 rieure à 10 S'il en est ainsi, le système passe au bloc 152 et il est signalé que le mot de code n'est pas décodable On peut éventuellement encore essayer de reconstruire l'information d'une autre 5 manière (par exemple, en demandant le mot de code une nouvelle fois à la source de données), mais des techniques de ce type sont suffisamment décrites ailleurs. Lorsque le nombre d'erreurs postulé L se trouve encore entre les limites établies, une série de grandeurs 10 capdelta est déterminée dans le bloc 154, notamment pour toutes les valeurs admissibles de la grandeur i en cours En dehors de cela, toutes les grandeurs capdelta sont mises à 0 De plus, tous les coefficients connus du localisateur d'erreurs sigma(z) sont sauvés dans des 15 variables auxiliaires correspondantes La premièredifférence est sauvée dans la grandeur O 1 delta (ô 01) et tcnsles coefficients du localisateur d'erreurs sont mis à jour avec les grandeurs capdelta associées, comme dans le bloc 140. Une grandeur auxiliaire J est introduite dans le bloc 156 et indique le nombre d'incrémentations de la règle de Cramer et ainsi le nombre de symboles de syndrome supplémentaires à prendre en compte Les blocs 158, 160 forment une boucle Dans cette boucle, les 25 grandeurs J,N sont tout d'abord incr 6 mentées, les différences sont recalculées, les capdeltas pertinents sont mis à jour ou à zéro et les coefficients du localisateur d'erreurs sont mis à jour Finalement, on vérifie si la grandeur J se trouve encore entre les 30 limites fixées Aussi longtemps qu'il en est ainsi, le système parcourt à nouveau la boucle Lorsque J=L-L 0, la boucle a été parcourue un nombre de fois suffisant. Le système passe alors au bloc 162 dans lequel la série de coefficients sauvée dans le bloc 154 du localisateur 35 d'erreurs sigma(z) est décalée d'un ou de plusieurs emplacements d'index par rapport à la valeur sauvée de L, tandis que les autres coefficients sont mis à zéro. Finalement, le nombre de symboles de syndrome pris en compte est incrémenté et le système revient au bloc 134 5 sur la Fig 8 b La Fig 9 est ainsi décrite, de même que la résolution de l'équation clé dans son ensemble. La sortie unique à côté du bloc 152 mène au bloc 106 sur la Fig 7 Les blocs 106,108 et 124 de la Fig 7 ne sont pas détaillés. La Fig 10 illustre le détail du bloc 126 de la Fig 7 pour déterminer deux symboles d'erreurs La seule entrée va au bloc 164 Dans ce bloc, on vérifie si le coefficient sigma 1 du localisateur d'erreurs sigma a la valeur zéro Cela signifierait que les 15 erreurs coincident, ce qui, à cause de la définition choisie de "erreur" n'est pas possible Lorsque la réponse dans le bloc 164 est positive, le mot de code dans le bloc 166 est considéré comme impossible à décoder Le bloc 166 correspond donc au bloc 152 sur la 20 Fig 9 Une autre manière de procéder, toujours réalisable, consisterait a sauter et à revenir vers le bloc 146 de la Fig 8 b, de telle sorte qu'on puisse vérifier un certain nombre de différences supplémentaires. lorsque dans le bloc 164 le résultat est négatif, une 25 première position de proto-erreur Chil est déterminée dans le bloc 168, ce qui s'effectue à l'aide d'une table; cette table est, comme mentionné plus haut, stockée dans l'élément 368 de la Fig 6 La position de proto-erreur a une relation avec la position d'erreur 30 véritable, mais la position d'erreur ne peut pas encore être déterminée en ce point de la procédure Dans le bloc 170, la grandeur de "trace' du coefficient en question est déterminée; il s'agit la d'une opération en elle-même classique Lorsque cette trace est diffé35 rente de zéro, le système passe au bloc 172 et le mot de code est considéré comme impossible à décoder Dans ce cas également, le saut vers le bloc 146 de la Fig 8 b peut être effectué; il faut alors encore prendre une mesure pour que le système ne séjourne pas 5 indéfiniment dans une boucle à former ainsi Lorsque la vérification dans le bloc 170 est positive, l'erreur peut être déterminée Les positions d'erreurs définitives sont tout d'abord déterminées dans le bloc 174 par incrémentations dans GF( 2 ^ 8) de la première posi10 tion de proto-erreur Chil et par multiplication par le coefficient sigmal du localisateur d'erreurs sigmal,2. Lorsque, par exemple, Chil=a^i, le symbole de code à numéro d'ordre t est erroné Dans le bloc 176 est tout d'abord déterminée la valeur d'erreur provisoire I et, 15 à partir de celle-ci, les valeurs d'erreurs proprement dites au moyen du coefficient sigmal et du symbole de syndrome SO Le bloc 122 est décrit a propos de la Fig 7 En fait, le bloc 176 représente les blocs 110 et 120 pour ce nombre d'erreurs de symbole. Pour un plus grand nombre d'erreurs de symbole, on détermine tout d'abord l'évaluateur d'erreurs oméga(z), ce qui est indiqué sur la Fig 11, voir le bloc 110 de la Fig 7 L'évaluateur d'erreurs est déterminé comme étant le produit du polynôme de syn25 drome S(z) et du polynôme localisateur d'erreurs sigma(z), de sorte que omégal=Sl*sigma O +SO*sigmal; oméga 2 = 52 *sigma O +Sl*sigmal+SO*sigma 2, etc Le processus possède une seule entrée dans le bloc 178; dans ce 30 bloc, la grandeur auxiliaire I est mise à zéro Dans le bloc 180 une deuxième grandeur auxiliaire J est mise à zéro, de même qu'un coefficient provisoire de l'évaluateur d'erreurs Les grandeurs I et J sont des numéros d'ordre et n'ont aucune signification physique Les 35 blocs 182,184 forment une boucle dans laquelle chaque fois un coefficient du polynôme évaluateur d'erreurs est mis à jour et la grandeur auxiliaire J accrue. Lorsque J devient plus grand que I, le coefficient en question est entièrement déterminé et la valeur de I 5 est incrémentée dans le bloc 186 pour permettre le traitement du coefficient suivant du polynôme évaluateur d'erreurs Lorsque les valeurs de I et L sont égales, l'ensemble du polynôme est déterminé et le système passe au bloc 112 sur la Fig 7. La Fig 12 illustre un organigramme de la résolution de l'6 quation cubique, voir le bloc 118 de la Fig 7 La résolution d'équations du deuxième et du troisième degré dans un corps de Galois est en ellemême décrite dans un article de R T Chien, IEEE 15 Transactions on Information Theory, mrt 1969, page 329 Cet article donne également les solutions pour des équations du quatrième et du cinquième degré, mais, dans la forme d'exécution préférée décrite, ces solutions ne sont pas utilisées La figure comporte une 20 seule entrée dans le bloc 190, qui est atteinte à partir d'un des blocs 112,116 de la Fig 7; ces derniers blocs ne sont pas décrits plus en détail à cause de leur simplicité interne On vérifie tout d'abord dans le bloc 190 le deuxième et le troisième coeffi25 cient sigma(l,2) du polynôme localisateur d'erreurs. Lorsque cette vérification est positive, le système passe au bloc 192 Dans ce bloc, une grandeur auxiliaire I et une grandeur auxiliaire J 1 sont déterminées successivement, il s'agit d'éléments d'un champ de 30 Galois Cette dernière détermination a à nouveau lieu à l'aide d'une table (élément 368) Dans le bloc 194, on vérifie si la grandeur I est égale à une puissance ( 3 n) de l'élément primitif a du corps de Galois Lorsque cela n'est pas le cas, le système passe au bloc 198 et 35 le mot de code est considéré comme impossible à décoder Lorsque la vérification dans le bloc 194 est positive, le système passe au bloc 196 et les trois emplacements d'erreurs provisoires différents Chil,2,3 sont constatés Le système passe ensuite au bloc 206. Lorsque la vérification dans le bloc 190 est négative, le système passe au bloc 200 Dans ce bloc, comme indiqué plus haut, une valeur pour la grandeur auxiliaire J est calculée et, à partir de cette valeur, une valeur pour la grandeur auxiliaire I est calculée 10 au moyen d'une table de traduction de fonctions indiquée par "D" Cette table de traduction est à nouveau stockée dans l'élément 368 de la Fig 6 Dans le bloc 202, on vérifie si ceci concerne un représentant dit orbital (orbital representative) Cette représentation 15 est expliquée plus en détail dans l'article cité Dans la négative, le système passe au bloc 198 et le mot de code est considéré comme impossible à corriger Lorsque la vérification dans le bloc 202 est positive, le système passe au bloc 204 En premier lieu, au moyen de 20 la table de C mentionnée plus haut, on détermine une première grandeur auxiliaire nul et, à partir de celleci, une deuxième grandeur auxiliaire nu 2 La grandeur auxiliaire I décrite plus haut (bloc 200) est ensuite mise à jour Finalement, les positions provisoires des 25 trois erreurs sont déterminées dans ce bloc Le système passe ensuite au bloc 206 qui est aussi atteint à partir du bloc 196 Dans le bloc 206, les positions provisoires des trois erreurs sont mises à jour au moyen du deuxième coefficient du localisateur d'erreurs 30 sigma(z) afin d'obtenir les positions définitives et le système passe au bloc 208 Dans le bloc 208, on vérifie si la valeur de l'énumérateur d'erreurs a la valeur trois et ainsi, si, avant que ce point du traitement soit atteint, un cycle de recherche selon Chien a eu 35 lieu Les erreurs sont à présent toutes connues et le système passe alors au bloc 210 Dans ce bloc, on détermine tout d'abord la grandeur auxiliaire F On détermine ensuite les valeurs d'erreurs Y( 1,2,3) à l'aide des coefficients oméga(l,2,3) de l'évaluateur 5 d'erreurs déterminés précédemment et des positions d'erreurs actuelles x( 1,2,3) Après cela, le traitement du mot de code en question est entièrement terminé En fait, le bloc 210 forme une version plus rapide du traitement dans le bloc 120 pour trois erreurs. Une première partie de la Fig 13 montre l'opération de recherche proprement dite selon Chien. Le bloc d'entrée de cette partie est le bloc 218 et est accessible à partir du bloc 188 de la Fig 11 à condition que le degré du localisateur d'erreurs sigma(z) 15 soit supérieur à 3 Lorsqu'il n'en est pas ainsi, le système passe au bloc 190 de la Fig 12 En premier lieu, l'énumérateur d'erreurs auxiliaire devient à présent égal à L et le nombre de symboles de code vérifiés N est mis à zéro La grandeur sum est ensuite 20 déterminée Il s'avère en effet que les inverses des racines du localisateur d'erreurs sigma(z) donnent les emplacements des erreurs; de la même manière, les racines du localisateur d'erreurs avec une série de coefficients inversés (polynôme inverse) indiquent 25 aussi les emplacements d'erreurs Après cette détermination dans le bloc 220, la valeur de la grandeur sum est vérifiée dans le bloc 224 Aussi longtemps que la valeur de cette grandeur sum reste différente de zéro, une boucle est parcourue, cette boucle étant formée des 30 blocs 224,226,228,220 Dans cette boucle, le nombre de symboles de code vérifiés est chaque fois incrémenté et la grandeur sum est recalculée Ce n'est que lorsque la valeur de N s'élève au-dessus de la longueur admise des mots de code, que le mot de code en question dans le 35 bloc 216 est considéré comme impossible à décoder. Lorsque, pendant le parcours de la boucle (ce qui, dans certaines circonstances, peut se produire environ 100 fois, notamment d'une manière équivalant à la longueur du mot de code en symboles diminuée de 3) la grandeur 5 sum reçoit la valeur zéro, un symbole d'erreur est ainsi trouvé dans un tel cycle de recherche selon Chien et la racine en question du localisateur d'erreurs peut être extraite par division Le localisateur d'erreurs du symbole perturbé en question est tout d'abord fixé 10 dans le bloc 232, puis l'énumérateur auxiliaire d'erreurs est diminué d'une unité et finalement le degré du localisateur d'erreurs est abaissé par division Dans le bloc 234, on vérifie si l'énumérateur auxiliaire d'erreurs à la valeur 3 Aussi longtemps que cette 15 vérification est négative, le système revient (chaque fois) au bloc 226; il apparaît que les symboles perturbants sont trouvés selon des numéros d'ordre croissants Une séquence programmée différemment est en elle-même tout aussi bonne Lorsque la vérification 20 dans le bloc 234 est positive, le système passe au bloc sur la Fig 12 Lorsque tous les emplacements d'erreurs sont trouvés, les symboles perturbants sont déterminés dans le bloc 236 Après cela, le traitement du mot de code est entièrement terminé En fait, le 25 bloc 236 réalise les opérations dans le bloc 120 pour un nombre d'erreurs de quatre ou davantage. Lorsque d'autre part, dans le bloc 208 de la Fig 12, la vérification est négative, il y avait encore plus de trois erreurs en jeu et le système passe 30 au bloc 212, sur la Fig 13 Cela signifie qu'à ce moment toutes les erreurs sont trouvées, les trois dernières dans la partie de la Fig 12 qui a été parcourue juste précédemment, mais que le bloc 210 n'est pas d'application Toutes les erreurs doivent à 35 présent être traitées complètement Le bloc d'entrée 212 est une autre entrée de la Fig 13 que celle qui est utilisée a partir des blocs 134 ou 146 sur la Fig 8 Dans le bloc 212, on vérifie si les trois premiers emplacements d'erreurs sont chacun plus grand 5 que le quatrième Lorsque la vérification est positive, on vérifie dans le bloc 214 si les trois emplacements d'erreurs se trouvent à l'intérieur de la longueur maximum considérée d'un mot de code de N symboles de code (par exemple dans un exemple de réalisation de 10 108 symboles) Lorsqu'une des deux vérifications dans les blocs 212,214 est négative, le système passe au bloc 216 et le mot de code en question est considéré comme étant impossible à décoder Lorsque les deux vérifications sont positives, le système passe au bloc 15 236 pour calculer les valeurs d'erreurs pour toutes les erreurs de symboles trouvées (au moins quatre et au plus dix dans l'exemple de réalisation) Le système passe ensuite au bloc 122 et le traitement du mot de code en question est terminé. 20 R E V E N D I C A T IONS 1. Système décodeur pour le décodage de mots de code qui sont protégés au moyen d'un code de Reed5 Solomon contre la présence de plusieurs erreurs de symbole par mot de code, ce système décodeur comportant des moyens de réception pour la réception séquentielle des symboles de code en vue d'en former un mot de code, des premiers moyens de calcul ( 102) pour 10 déterminer à partir du mot de code, au moyen de la matrice de contrôle de parité CHl du code, une série de symboles de syndrome, des deuxièmes moyens de calcul ( 104) aliment 6 S par les premiers moyens de calcul pour résoudre l'équation clé en vue d'obtenir le locali15 sateur d'erreurs sigma(z) et l'évaluateur d'erreurs oméga(z), des troisièmes moyens de calcul alimentés par les deuxièmes pour obtenir, au moyen des points zéro du localisateur d'erreurs, les positions de symboles de code éventuellement perturbés, et des quatrièmes moyens 20 de calcul alimentés par les troisièmes en vue de déterminer, au moyen des dits points zéro, les erreurs de symbole associées aux symboles de code perturbés en vue de présenter, sur une sortie d'utilisateur, les symboles de code corrigibles au moyen de valeur(s) 25 d'erreurs et de donnée(s) de position d'erreurs de symbole, caractérisé en ce que les deuxièmes moyens de calcul contiennent des moyens de multiplication permettant chaque fois, pour un nombre (L) présupposé d'erreurs de symbole par mot de code partant d'un mot de 30 code sans erreur (L= 0), moyennant la prise en compte de 2 L symboles de syndrome et la résolution de l'équation clé réduite qui y est limitée,selon la règle de Cramer, mais lors d'une différence deltal différente de zéro, moyennant l'introduction de deux autres symboles de 35 syndrome dans l'équation clé réduite actuelle et des opérations d'incrémentation de la matrice, résoudre ( 140) une autre équation clé moins réduite pour, dans le cas d'une différence deltal égale à zéro ( 138), déterminer un nombre (Nmax) de différences deltal, 5 déterminé par la valeur du nombre d'erreurs de symbole alors présuppose, a partir de nombres incrémentés successivement de pseudo-erreurs de symbole présupposées mais, dans le cas d'une différence deltal restant alors encore différente de zéro, appliquer pour 10 tous les nombres non traités jusqu'au nombre incrémenté actuel d'erreurs de symbole, les compléments de l'équation clé ( 148,154-162) et résoudre cette équation clé complétée de la manière mentionnée plus haut. 2. Système décodeur suivant la revendica15 tion 1, caractérisé en ce que les deuxièmes moyens de calcul sont pourvus de premiers moyens de détection pour détecter ( 106,108) un nombre d'erreurs de symbole apparues de deux au maximum et ainsi, par résolution directe d'une équation de localisateur d'erreurs au 20 maximum du deuxième degré, localiser et calculer directement les erreurs ( 124,126), et par contre, ne calculer ( 110) l'évaluateur d'erreurs que pour un nombre plus élevé d'erreurs de symbole détectées. 3. Système décodeur suivant la revendica25 tion 2, caractérisé en ce que les troisièmes moyens de calcul sont pourvus de deuxièmes moyens de détection pour détecter un nombre actuel de trois erreurs de symbole et alors', par résolution d'une équation de localisateur d'erreurs cubique, localiser et calculer 30 les erreurs, mais, pour, dans le cas de la détection d'un plus grand nombre d'erreurs de symbole, mettre en oeuvre un cycle de recherche selon Chien le long de la rangée de symboles de code jusqu'à ce que l'on ait localisé une erreur de symbole et extraire alors par 35 division ( 114) le facteur représenté par cette erreur de symbole du localisateur d'erreurs, grâce à quoi le nombre actuel d'erreurs de symbole restantes est réduit d'une unité et lorsqu'un nombre d'erreurs de symbole actuel prédéterminé est atteint, résoudre directement l'équation de localisateur d'erreurs ( 118). 4. Système décodeur suivant la revendication 1, 2 ou 3, caractérisé en ce que les dits premiers moyens de calcul sont pourvus d'une boucle contenant, en série, un circuit OU-EXCLUSIF ( 306,308) pour la 10 réception des symboles de code, un tampon ( 312,314) pour le stockage des symboles de syndrome (provisoires) formés pour un mot de code, et une mémoire morte ( 320,322,324) pour le stockage des tables de multiplication pour la matrice de contrôle de parité dont une 15 sortie est couplée en retour à une autre entrée du circuit OU-EXCLUSIF, tandis qu'une autre sortie ( 316) du tampon est connectée aux deuxièmes moyens de calcul pour y amener la rangée de symboles de syndrome définitif lors du traitement complet du mot de code en 20 question. 5. Système décodeur suivant la revendication 4, caractérisé en ce que, pour la détection du dernier symbole de code d'un mot de code au moyen d'un bit de signal qui y est accroché, un détecteur de 25 signal est présent, une sortie de ce détecteur activant l'autre sortie en vue de préparer le circuit à la réception d'un premier mot de code suivant. 6. Système décodeur suivant l'une quelconque des revendications 1 a 5 incluse, caractérisé en ce que 30 les deuxièmes, troisièmes et quatrièmes moyens de calcul sont réalisés par un circuit qui comprend: un tampon d'entrée ( 338,340) pour le stockage d'au moins la rangée complète de symboles de syndrome qui est engendrée pour un mot de code, un micro-ordinateur 35 ( 352), un tampon de sortie ( 348,350) pour le stockage d'une série de symboles de localisation d'erreurs et d'appréciation d'erreurs qui est engendrée pour une rangée complète d'une série de symboles de syndrome associés à un mot de code et un bus de connexion ( 344) 5 connecté entre ces éléments, auquel un dispositif à table de log/antilog ( 364, 368) est également connecté pour exécuter des opérations de multiplication sur les symboles dans le corps de Galois en question, ainsi qu'une mémoire de données ( 370) pour laquelle des 10 adresses peuvent être fournies par le micro-ordinateur au moyen du bus et par un compteur indicateur de temps externe pouvant être incrémenté ( 380,382). 7. Système décodeur suivant la revendication 6, caractérisé en ce qu'un détecteur ( 362) est 15 connecté aussi au bus pour détecter, par la détection d'une rangée de symboles de syndrome associée à un mot de code et comprenant exclusivement des symboles "zéro", sans passer par le microordinateur, un mot de code sans faute et alors appeler une première rangée 20 suivante de symboles de syndrome. 8. Dispositif de lecture pour des corps de stockage pouvant être lus par voie optique qui est pourvu d'un système décodeur suivant l'une quelconque des revendications 1 à 7 incluse, comportant des moyens 25 de positionnement pour recevoir ainsi un tel corps de stockage, des moyens d'entraînement pour entraîner le corps de stockage autour de son axe de rotation à une vitesse de rotation en substance uniforme, des moyens de lecture pour lire, à partir d'une piste sur le corps 30 de stockage, une série de bits avec une conversion sérieparallèle en vue de la présentation aux dits premiers moyens de calcul.