Brevet FR2627004A1 — publié le 19890811

La présente invention se rapporte à un dispositif à mémoire non volatile à semiconducteur comme une mémoire morte programmable et effaçable électriquement ou E2PROM ayant une fonction de détection et de correction d'erreur La figure 1 donne un schéma-bloc montrant la construction d'une E2PROM d'un type conventionnel qui a un circuit de détection et de correction d'erreur. La E2PROM est incorporée en tant que section de mémoire dans un micro-ordinateur. On suppose qu'une méthode de détection et de correction d'une erreur emploie un code étendu de Hamming qui permet la correction d'erreurssimpleset la détection d'erreurs doubles. Comme le montre la figure 1, un moyen formant mémoire est constitué d'une série de cellules de mémoire E2PROM 10 et il est équipé d'un verrouillage de colonne 11 et d'un amplificateur de détection 12. Un circuit générateur de bit de contrôle-30 est disposé entre le verrouillage de colonne 11 et un bus de données 20 (le bit de contrôle constitue un code de vérification et de correction d'erreur que l'on appellera ci-après "code ECC"). L'amplificateur de détection 12 sert à lire la donnée de la série de cellules de mémoire 10. Le circuit illustré de type conventionnel comprend de plus un circuit générateur de syndrome 42, un décodeur de syndrome 41 et un circuit de correction binaire 40 qui sont prévus pour détecter et corriger une erreur dans la donnée lue de la série de cellules de mémoire 10, et un multiplexeur 50 pour émettre sélectivement un syndrome 42s ou une donnée corrigée 40d. Dans une telle construction, la donnée d'écriture 20d est fournie par une unité centrale de traitement (non représentée) par le bus de données 20 à la fois au verrouillage de colonne 11 et au circuit générateur de code ECC 30. Le circuit générateur de code ECC 30 produit un code ECC 30e à partir de la donnée d'écriture 20d sur la base d'une matrice de générateur et émet le code ECC 30e pour le verrouillage de colonne 11. En conséquence, un code systématique composé de la donnée d'écriture 20d et du code ECC 30equi lui est ajouté est fourni au verrouillage 11. Ensuite, le code systématique est maintenu dans le verrouillage 11 pendant la durée de l'écriture et ainsi des quantités prédéterminées de la donnée 20d et 30e sont collectivement inscrites dans la série de cellules de mémoire 10. L'écriture dans une telle E2PROM est couramment effectuée à la manière suivante: lorsqu'une période prédéterminée de temps s'est écoulée après inscription de la donnée d'écriture dans un verrouillage de colonne, la donnée retenue dans le verrouillage est automatiquement écrite dans les cellules de mémoire pendant un temps d'écriture d'environ plusieurs microsecondes. Pour la discrimination, l'écriture dans le verrouillage de colonne est appelée écriture externe et l'écriture dans la cellule de mémoire est appelée écriture interne. Dans le cas d'une E2PROM ayant un mode de réécriture par page, une séquence de données peut être inscrite dans le verrouillage de colonne pendant l'écriture externe et, quand l'intervalle d'écriture de donnée dépasse une période prédéterminée de temps, la transition de l'écriture externe à l'écriture interne s'effectue automatiquement. Ainsi, la donnée inscrite dans le verrouillage de colonne est collectivement inscrite dans les cellules de mémoire. Par ailleurs, pendant la lecture, la donnée de lecture 12d et un code ECC de la lecture 12e sont lus de la série de cellules de mémoire 10 puis émis vers le circuit générateur de syndrome 42. Selon une matrice de contrôle, le circuit générateur de syndrome 42 calcule un syndrome de la donnée lue 12d et du code ECC lu 12e. Le décodeur 41 décode le syndrome 42s et choisit une position binaire à laquelle existe une erreur. Cependant, dans le cas o il n'y a pas d'erreur, alors que des erreurs existent dans de nombreux bits, ou lorsqu'une erreur existe dans le bit de contrôle, aucun des bits n'est choisi. Le circuit de correction binaire 40 inverse le bit à la position choisie par le décodeur 41 et émet la donnée corrigée 42 vers le multiplexeur 50. Alors, l'unité centrale de traitement applique la donnée corrigée 40d au bus de données 20 par le multiplexeur 50, pour ainsi effectuer la lecture. Il est ainsi possible de corriger une erreur due au mauvais fonctionnement ou analogue d'une cellule de mémoire dans la série de cellules de mémoire E2PROM 10 et de lire la donnée corrigée. Les divulgations de brevets japonais N s 61-192099 et 62-120699 révèlent un moyen pour émettre le code ECC 12e de lecture vers le bus de données 20. Par ailleurs, il est également possible de produire un agencement ayant une struoture qui permet au syndrome 42s d'être lu. Comme le code 42s ci-dessus qui est ordinairement appelé syndrome est décrit par exemple dans la publication de brevet japonais NI 62-32823, la description détaillée en est omise. Le type conventionnel de E PROM ayant un circuit de détection et de correction d'erreur est construit à la manière ci-dessus décrite et le code ECC 30 produit par le circuit générateur 30 est nécessairement introduit dans la série de cellules de mémoire E2PROM 10 (c'est-à-dire que l'écriture interne est exécutée). Pour cette raison, il est impossible de contrôler ou de vérifierindépendamment une seule fonction du circuit générateur de code ECC 30, donc la totalité de la E2PROM (le crcuit générateur de code ECC 30, le circuit générateur de syndrome 42, le décodeur 41, le circuit de correction binaire 40 et la série de cellules de mémoire E PROM 10) doit être contrôlée par vérification à la fois de la donnée d'écriture 20d et de la donnée corrigée 40d ou en lisant le code ECC des cellules de mémoire ou en lisant le syndrome. De plus, cette méthode nécessite de préparer une donnée d'écriture servant de nombreux schémas de test et,par ailleurs, la méthode nécessite obligatoirement l'écriture interne dans la série de cellules de mémoire E2PROM. En conséquence, cela pose un problème par le fait que le contrôle nécessite une longue période de temps et que l'efficacité de ce contrôle est inférieure. La présente invention a par conséquent pour objet de produire un dispositif à mémoire ayant une fonction-de détection et de correction d'erreur permettant de contrôler indépendamment une seule fonction d'un circuit générateur de code ECC sans inscrire une donnée dans une série de cellules de mémoire (sans effectuer l'écriture interne) pour ainsi améliorer l'efficacité du contrôle du dispositif à mémoire. Pour atteindre l'objectif ci-dessus, selon la présente invention, on prévoit un dispositif à mémoire ayant pour fonction de détecter et de corriger une erreur dans l'information stockée sous le contrôle d'un micro- processeur. Le dispositif à mémoire est pourvu d'un moyen de codage pour produire un code systématique composé d'un bit d'information et d'un bit de contrôle en réponse à l'information fournie par un bus de données pendant l'écriture de la donnée, un moyen formant mémoire pour stocker le code systématique, un moyen de lecture pour lire le code systématique du moyen formant mémoire, un moyen de décodage pour calculer un syndrome à partir du code systématique lu par le moyen de lecture, et détecter et corriger une erreur contenue dans le bit d'information, et décoder l'erreur, un moyen de sortie pour émettre le bit décodé d'information vers le bus de données et un moyen de lecture du bit de contrôle pour introduire le bit de contrôle produit par le moyen de codage directement dans le bus de données, le contrôle fonctionnel du moyen de codage pouvant être immédiatement accompli sans être influencé par le moyen formant mémoire. Le moyen de lecture du bit de contrôle (code ECC) utilisé dans la présente invention peut introduire le code ECC produit par le moyen de codage directement dans le bus de données. En conséquence, il est possible de contrôler la fonction d'une portion pour produire le bit de contrôle du moyen de décodage sans être influencé par aucun autre moyen. L'invention sera mieux comprise, et d'autres buts, caractéristiques, détails et avantages de celle-ci apparaîtront plus clairement au cours de la description explicative qui va suivre faite en référence aux dessins schématiques annexés donnés uniquement à titre d'exemple illustrant plusieurs modes de réalisation de l'invention et dans lesquels: - la figure 1 est un schémabloc montrant la construction d'une E2PROM ayant un type conventionnel de fonction de détection et de correction d'erreur; - la figure 2 donne un schéma-bloc montrant la construction d'une E2PROM ayant une fonction de détection et de correction d'erreur selon un mode de réalisation de la présente invention; 15.- la figure 3 donne un sc.héma-bloc montrant'la construction d'une E2PROM ayant une fonction de détection et de correction d'erreur selon un autre mode de réalisation de la présente invention; - la figure 4 est une vue montrant schématiquement la. construction d'un circuit générateur de syndrome à utiliser dans la présente invention; - la figure 5 donne un schéma-bloc montrant la construction d'un autre mode de réalisation dans lequel la présente invention est appliquée à une E2PROM employant un seul circuit générateur de code ECC pendant l'écriture et la lecture; et - la figure 6 donne un schéma-bloc montrant la construction d'un autre mode de réalisation o la présente invention s'applique à une E2PROM employant un seul circuit générateur de code!ECC pendant l'écriture et la lecture. Des modes de réalisation préférés de la présente invention seront décrits en détail ci-dessous en se référant aux dessins joints. La figure 2 donne un schéma-bloc montrant la construction d'une E2PROM ayant une fonction de détection et de correction d'erreur selon un mode de réalisation de la présente invention. Comme cela est illustré, un registre de code ECC (registre de bits de contrôle) 60 est disposé entre le côté sortie d'un circuit générateur de code ECC 30 et un bus de données 20. Le registre de code ECC 60 stocke un code ECC30e qui est produit par le circuit générateur 30, et émet le code ECC 30e pour le bus de -données 20 selon la commande d'une unité centrale de traitement (non représentée). La construction de la portion restante est la'même que celle de l'exemple conventionnel montré à la figure 1 et par conséquent sa description est omise. Dans la construction ci-dessus décrite, le contrôle d'une seule fonction du circuit générateur de code ECC 30 est exécuté à la manière suivante. La donnée d'écriture 20d est fournie de l'unité centrale de traitement (non repré- sentée) au bus de données 20 selon un schéma prédéterminé pour exécuter l'écriture externe. Pendant ce temps, la donnée d'écriture 20d est fournie à la fois à un verrouil- lage de colonne 11 et au circuit générateur de code ECC 30, et le code ECC 30e est émis par le circuit générateur 30, à la fois vers le verrouillage de colonne 11 et le registre du code ECC sur la base de la donnée d'écriture 20d, le code ECC 30e étant retenu dans le registre 60. A cet état, s'il y a accès au registre 60 par l'intermédiaire de l'unité centrale de traitement, le code ECC 30e est extrait à travers le bus de données 20, le- quela déjà été calculé. Le code ECC lu 30e est comparé avec un code ECC attendu, devant être produit sur la base de la donnée d'écriture 20d, pour ainsi décider si oui ou non le code ECC 30e coïncide avec le code ECC attendu. Ainsi, on vérifie si oui ou non le circuit générateur de code ECC 30 accomplit une opération précise. Comme on l'a décrit ci-dessus, comme le code ECC 30e qui est la sortie du circuit générateur de code ECC 30 peut être directement introduit dans le bus de données 20, il est possible de contrôler indépendamment une seule fonction du circuit générateur de code ECC 30. En consé- quence, comme le circuit générateur 30 peut être éliminé des articles à contrôler dans un contrôle de la E2PROM totale que l'on accomplissait jusqu'à maintenant, il est possible de réduire fortement le nombre de schémas de test ou de contrôle qu'il faut réellement inscrire dans les cellules de mémoire ( et qui nécessite l'écriture interne), donc la durée du contrôle peut être écourtée et son efficacité peut être améliorée. Le dispositif à mémoire ayant l'agencement ci-dessus décrit est efficace pour une utilisation avec une mémoire morte programmable électrique- ment et avec une mémoire morte programmable et effaçable électriquement nécessitant longtemps pour l'accomplissement de l'écriture de données. Dans le cas d'une E 2PROM ayant une fonction d'écriture en mode de par page,le registre de code ECC 60 peut être constitué par exemple, d'un registre à décalage à réinjection linéaire (LFSR). Dans un tel agencement, le code ECC 30e produit par le circuit générateur 30 sur la base d'un certain nombre de données d'écriture 20d est converti en une donnée comprimée selon une horloge de commande qui est fournie par un microprocesseur, puis est stocké dans le registre à décalage. Après avoir introduit tous les schémas de test (un certain nombre de schémas de test), les contenus du registre sont extraits et compa- rés à une valeur attendue, il est donc possible de contrôler immédiatement une seule fonction du circuit générateur de code ECC 30. Dans le mode de réalisation ci-dessus décrit, la lecture directe du code ECC 30e est réalisée en prévoyant le registre 60 du code ECC entre le circuit 30 générateur du code ECC et le bus de données 20. Cependant, afin de réaliser la lecture directe du code ECC 30e, comme le montre la figure 3, un verrouillage de données 70 peut être disposé entre le bus de données 20 et le circuit générateur de code ECC 30 pour produire une construction dans laquelle le code ECC 30e est émis vers le bus de données 20 par un multiplexeur 50. Dans cette construction, comme la donnée d'écriture 20d continue à être émise par le verrouillage de données 70 pendant un cycle d'écriture externe, le code ECC 30e continue à être émis par le circuit générateur de code ECC 30 vers le multiplexeur 50. En conséquence, comme le code ECC 30e est sélectivement émis vers le bus de données 20 par le multiplexeur 50, il est possible de lire directement le code ECC 30e. Dans le dispositif à mémoire ci-dessus décrit pourvu du circuit générateur de code ECC, un code ECC à 4 bits est calculé afin de détecter une erreur de 2 bits ou de détecter et de corriger une erreur de 1 bit dans la donnée d'écriture, comme une donnée de 8 bits, qui est fournie par le bus de données et une donnée (ou code Hamming étendu) ayant une longueur binaire qui atteint au total 12 bits est stockée (ou inscrite dans la série de cellules de mémoire 10). Pendant la lecture, la donnée de 8 bits qui est lue et le code ECC de 4 bits sont fournis par le circuit générateur de syndrome 42. Dans une telle méthode de détection et de correction d'une erreur par l'utilisation du code de Hamming étendu, le circuit générateur de syndrome 42 peut être construit, par exemple, comme le montre la figure 4. Le fonctionnement du circuit générateur de syndrome 42 sera expliqué cidessous. Une section génératrice de code ECC 31 produit un second code ECC 31e de la donnée 12d lue qui a été lue d'une cellule de mémoire correspondante, et un circuit OU exclusif 43 combine le code ECC 31e et le code ECC 12e lu de la cellule de mémoire pour produire le syndrome 42s de 4 bits. Si le second code ECC 31e est complètement identique au code ECC lu 12e, le syndrome 42s prend l'état "OH" qui indique qu'il n'y a pas de bit d'erreur. Si le second code ECC 31e diffère du code ECC lu 12e, un autre syndrome est émis qui correspond à la position du bit d'erreur ou qui indique qu'une erreur multiple s'est produite. Le décodeur de syndrome 41 décode le syndrome 42s et choisit, de 8 bits, un bit auquel une erreur s'est produite. Dans le cas de l'erreur multiple, aucun des bits n'est choisi. Le circuit de correction binaire 40 inverse le bit choisi par le décodeur 41 pour décoder la donnée lue 12d et émet la donnée corrigée 40d. Dans une telle méthode, le circuit générateur de code ECC est complètement identique à la portion de circuit pour la régénération du code ECC de la donnée à 8 bits qui a été lue de la série de cellules de mémoire. En conséquence, un seul circuit générateur de code ECC peut être prévu pour servir à la fois de circuit générateur de code ECC à partir de la donnée d'écriture et de circuit pour régénérer un code ECC pour le circuit générateur de syndrome. La figure 5 montre une construction dans laquelle la présente invention s'applique à une E2PROM pouvant servir également de circuit générateur de code ECC. Le mode de réalisation de la figure 5 correspond à celui de la figure 2. Sur la figure 5, pendant l'écriture externe, un interrupteur de changement 90 est commuté pour fournir la donnée d'écriture 20d au circuit générateur de code ECC tandis qu'un interrupteur de changement 91 est commuté pour fournir le code ECC 30e ainsi produit au verrouillage de colonne 11. Pendant la lecture de la donnée, l'interrup- teur 90 est commuté pour fournir la donnée de lecture 12d au circuit générateur de code ECC 30 tandis que l'interrup- teur de changement 91 est commuté pour fournir le code ECC e ainsi produit au circuit OU exclusif 43. Alors, le syndrome 42s est produit par combinaison dans le circuit OU exclusif du code ECC produit 30e et du code ECC lu 12e. Le fonc- tionnement de la portion restante est identique à ce qui a été précédemment décrit. Avec cette construction, la proportion d'une section logique qui peut être efficacement contrôlée par la présente invention peut être accrue et par conséquent l'invention est avantageuse en termes de surface sur la pastille. La figure 6 montre un autre mode de réalisation employant une E2PROM pouvant servir de circuit générateur de code ECC également. Le mode de réalisation de la figure 6 correspond à celui de la figure 3. D'une manière similaire à celle utilisée dans le mode de réalisation de la figure 3, le verrouillage de données 70 est disposé entre le bus de données 20 et le circuit générateur de code ECC 30 et le code ECC 30e est fourni au bus de données 20 par le multiplexeur 50. Ainsi, une lecture directe du code ECC 30e est réalisée. Dans cette construction, pendant l'écriture externe, l'interrupteur de changement 90 est commuté pour fournir la donnée d'écriture 20d du verrouillage de données au circuit générateur de code ECC 30 tandis que l'interrupteur de changement 91 est commuté pour fournir le code ECC 30e ainsi produit au verrouillage de colonne 11. Lorsque l'écriture de la donnée est exécutée, le verrouillage de données 70 continue à émettre la donnée d'écriture 20d, jusqu'à ce que l'écriture suivante débute. Par conséquent, le circuit générateur de code ECC 30 continue à émettre le code ECC 30e vers le multiplexeur 50. En conséquence, comme le code ECC 30e est sélectivement émis par le multiplexeur 50 vers le bus de données 20, il est possible d'extraire directement le code ECC 30e. Pendant la lecture de la donnée, l'interrupteur de changement 90 est commuté pour fournir la donnée de lecture 12d au circuit générateur de code ECC 30 tandis que l'interrupteur de changement 91 est commuté pour fournir le code ECC régénéré 30e au circuit OU exclusif 43. Alors, le syndrome 42s est produit par combinaison dans le circuit OU du code ECC produit 30e et du code ECC lu 12e. La modification du mode de réalisation qui a été décrite en se référant à la figure 2 peut s'appliquer à la construction de la figure 5. Plus particulièrement, un registre à décalage à réinjection linéaire peut être utilisé en tant que registre de code ECC pour collective- ment contrôler les fonctions du circuit générateur de code ECC par rapport à un certain nombre de données d'écriture. R E V E N D I C A T I O N S 1.- Dispositif à mémoire ayant pour fonction de détecter et de corriger une erreur dans l'information stockée sous le contrôle d'un microprocesseur, caractérisé en ce qu'il comprend: un moyen de codage (30) pour produire un code systématique composé d'un bit d'information et d'un bit de contrôle en réponse à une information fournie par un bus de données pendant l'écriture de la donnée; un moyen formant mémoire (10) pour stocker ledit code systématique; un moyen de lecture (12) pour lire ledit code systématique dudit moyen formant mémoire; un moyen de décodage (41) pour calculer un syndrome dudit code systématique lu par ledit moyen de lecture, détecter et corriger une erreur contenue dans ledit bit d'information et décoder l'erreur; un moyen de sortie (50) pour émettre ledit bit décodé d'information vers ledit bus de données;et un moyen de lecture de bit de contrôle (60) pour lire le bit de contrôle produit par le moyen de codage directement dans le bus de données; ainsi un contrôle fonctionnel du moyen de codage peut être immédiatement accompli sans être influencé par le moyen formant mémoire. 2.- Dispositif selon la revendication 1, caractérisé en ce que le moyen de lecture du bit de contrôle est constitué d'au moins un registre (60) qui est connecté entre le côté sortie du moyen de codage et le bus de données pour maintenir le bit de contrôle produit par le moyen de codage et émettre le bit de contrôle vers le bus de données sous le contrôle du microprocesseur. 3.- Dispositif selon la revendication 2, caractérisé en ce que le moyen de décodage (41) pour détecter, corriger et décoder une erreur dans le bit d'information comprend un circuit pour fournir sélectivement le bit d'information lu du moyen formant mémoire du côté entrée du moyen de codage, le circuit étant agencé pour régénérer le bit de contrôle correspondant au bit d'information lu du moyen formant mémoire par le moyen de codage puis pour combiner dans une porte OU exclusif le bit régénéré de contrôle et le b.it de contrôle lu du moyen formant mémoire, afin de produire un syndrome. 4.- Dispositif selon la revendication 2, caractérisé en ce que le registre (60) est un registre à décalage à réinjection linéaire (LFSR) commandé par le microprocesseur, de manière que le dispositif à mémoire soit commandé afin d'introduire séquentiellement un certain nombre de schémas de test dans le moyen de codage, comprimer le bit de contrôle à la sortie du moyen de codage selon les schémas de test et vérifier le moyen de codage sur la base d'une décision faite suivant le résultat. 5.- Dispositif selonla revendication 1, caractérisé en ce que le moyen de lecture du bit de contrôle est constitué d'un circuit de verrouillage de données (60) qui est connecté entre le bus de données et le côté entrée du moyen de codage pour contenir l'information écrite dudit bus de données et introduire ladite information dans le moyen de codage; et un multiplexeur (50) qui est connecté entre le côté sortie du moyen de codage et le bus de données pour émettre sélectivement le bit de contrôle produit par le moyen de codage vers le bus de données sous le contrôle du microprocesseur. 6.- Dispositif selon la revendication 5, - caractérisé en ce que le moyen de décodage (41) pour détecter, corriger et décoder une erreur dans le bit d'information comprend un circuit pour fournir sélectivement le bit d'information lu du moyen formant mémoire au côté entrée du moyen de codage, le circuit étant agencé pour régénérer le bit de contrôle correspondant au bit d'infor- mation lu du moyen formant mémoire par le moyen de codage puis pour combiner dans une porte OU exclusif le bit régénéré de contrôle et le bit de contrôle lu du moyen formant mémoire afin de produire ainsi un syndrome. 7.- Dispositif selon la revendication 5, caractérisé en ce que le registre est un registre à décalage à réinjection linéaire (LFSR) (60) commandé par le microprocesseur, de manière que ledit dispositif à mémoire soit commandé afin d'introduire séquentiellement un certain nombre de schémas de test dans le moyen de codage, de comprimer le bit de contrôle à la sortie du moyen de codage selon lesdits schémas de test et de contrôler le moyen de codage sur la base d'une décision faite suivant le résultat. 8.- Dispositif selon la revendication 1, caractérisé en ce que le dispositif à mémoire (10) constitue une section de mémoire qui est incorporée dans un micro-ordinateur.