FR 2697663 A1 19940506 FR 9213430 A 19921030 CIRCUIT DE TEST DE MÉMOIRE La présente invention concerne les circuits de test de mémoire et en particulier un circuit de test de mémoire vive (RAM) dans un système à microprocesseur. Pour tester une mémoire, il existe plusieurs procédés permettant de déceler différents types d'anomalies, telles que des cellules mémoire bloquées sur une valeur, des court-cir- cuits ou des coupures des lignes d'adresses ou de données, etc. En testant une mémoire selon plusieurs procédés et en analysant adéquatement les résultats, on peut effectuer un test exhaustif10 de la mémoire permettant de localiser toutes les anomalies Des procédés de test sont décrits dans IEEE Transactions on Compu- ters, volume C-27, No 6, juin 1978, "Efficient Algorithms for Testing Semiconductor Random-Access Memories" Dans ce document, il est aussi fait référence à de nombreux ouvrages concernant15 les procédés de test. La figure 1 représente de manière très schématique un système classique à microprocesseur Ce système comprend une unité centrale (CPU) 1, une mémoire morte (ROM) 2, une mémoire vive (RAM) 3, et un contrôleur d'accès direct en mémoire (DMA)20 4, reliés à un bus de microprocesseur comprenant un bus de données D de, par exemple, 16 lignes et un bus d'adresses A de, par exemple, 24 lignes. Classiquement, pour tester la mémoire RAM 3, le micro- processeur 1 exécute un programme de test dont les instructions sont stockées dans la mémoire ROM 2 Ce programme de test est exécuté, par exemple, lors d'une mise sous tension du système, ou à intervalles de temps réguliers. Lors du déroulement d'un test de la mémoire RAM 3, le microprocesseur 1 effectue généralement, pour chaque case de la mémoire RAM à tester, au moins une écriture et une lecture en mémoire RAM parmi plusieurs lectures d'instructions dans la mé-10 moire ROM Lors d'un test de mémoire, un nombre important des accès est effectué en mémoire ROM, ce qui provoque un ralentis- sement notable du test, car les accès à une mémoire ROM sont particulièrement lents. En pratique, un test exhaustif d'une mémoire RAM de 2 mégaoctets, ce qui est une valeur courante, dure environ quatre heures, durant lesquelles le système à microprocesseur n'est pas utilisable pour effectuer d'autres tâches Un tel test est par conséquent effectué le moins souvent possible. En outre, un programme pour effectuer un test exhaus- tif de mémoire occupe environ 20 kilooctets, ce qui est une valeur importante entraînant un surcoût non négligeable pour des systèmes à microprocesseur fabriqués en grande série. Pour accélérer le programme de test, on pourrait envi- sager de stocker les instructions du programme de test dans une mémoire RAM sauvegardée par pile Toutefois, cette solution est coûteuse et un temps important serait quand même dépensé dans les nombreuses lectures d'instructions. On pourrait également prévoir d'effectuer le test mémoire, non pas par programme, mais de façon câblée par un circuit de test spécifique relié au bus de microprocesseur. Toutefois, il n'est pas souhaitable de prévoir un circuit intégré de test supplémentaire à insérer sur une carte à micro- processeur, car cela entraînerait des coûts supplémentaires de montage et de conception de la carte. Un objet de la présente invention est de prévoir un test de mémoire RAM particulièrement rapide. Un autre objet de la présente invention est de prévoir un circuit de test de mémoire RAM incorporé dans un circuit intégré existant sur des cartes à microprocesseur classiques. Un autre objet de la présente invention est de prévoir un tel circuit de test dont un programme de commande occupe peu de place en mémoire. Ces objets sont atteints en incorporant le circuit de test dans le contrôleur DMA du système La demanderesse a cons- taté que le contrôleur DMA s'avère être particulièrement adéquat pour incorporer des fonctionnalités de test de mémoire, puisque le contrôleur DMA est déjà prévu pour manipuler directement la mémoire.15 La présente invention vise plus particulièrement un contrôleur d'accès direct en mémoire (DMA) incorporant un cir- cuit de test de mémoire réalisant de façon câblée des phases de test répétitives de lecture et écriture en mémoire à effectuer lors de procédés classiques de test de mémoire.20 Selon un mode de réalisation de la présente invention, le contrôleur DMA comprend un circuit d'interface pouvant être validé pour lire ou écrire des données sur un bus de micropro- cesseur, et des premier à quatrième registres accessibles par le bus et par le contrôleur DMA lui-même Les premier et deuxième25 registres sont incrémentables et/ou décrémentables par un séquenceur du contrôleur DMA et destinés à contenir des adresses de cases mémoire o le circuit d'interface doit lire ou écrire. Selon l'invention, le circuit de test de mémoire comprend un premier comparateur fournissant un signal de case bonne actif lorsqu'une donnée de test, correspondant le cas échéant au contenu du troisième registre, est égale à une donnée lue par l'interface à une adresse spécifique contenue dans l'un des premier et deuxième registres Un deuxième comparateur fournit un signal de fin de phase actif lorsque les contenus des premier et deuxième registres sont égaux Un séquenceur est prévu pour incrémenter ou décrémenter successivement l'adresse spécifique; suspendre l'incrémentation ou la décrémentation lorsque le signal de fin de phase est activé, et indiquer la fin de phase par la modification d'un bit du quatrième registre A chaque incrément ou décrément, le séquencùr effectue, soit une écri- ture de la donnée de test à l'adresse spécifique, soit une lecture d'une donnée à cette adresse, et active un bit d'erreur du quatrième registre si le signal de case bonne n'est pas activé lors d'une lecture. Selon un mode de réalisation de la présente invention, le contrôleur DMA comprend des moyens de sélection pour fournir au circuit d'interface et au premier comparateur une donnée de test correspondant, en fonction de la valeur définie par une première pluralité de bits du quatrième registre, soit au contenu du troisième registre, soit à l'une ou l'autre de por- tions prédéterminées de l'adresse spécifique. Selon un mode de réalisation de la présente invention, les moyens de sélection comprennent un inverseur de la donnée de test activable par un signal d'inversion fourni par le séquen- ceur. Selon un mode de réalisation de la présente invention, le séquenceur est commandé par une deuxième pluralité de bits du quatrième registre pour, selon la valeur définie par ces bits, faire traiter la case pointée par l'adresse spécifique selon l'un des modes suivants: écriture de la donnée de test; lecture et comparaison de la donnée lue à la donnée de test; lecture, comparaison et reécriture de l'inverse de la donnée de test; ou deux fois lecture, comparaison et reécriture de l'inverse. Selon un mode de réalisation de la présente invention, il est prévu un bit du quatrième registre dont un état valide le circuit de test et dont l'autre état dévalide le circuit de test en permettant un fonctionnement classique du contrôleur DMA. Selon un mode de réalisation de la présente invention, il est prévu un bit du quatrième registre activable par le microprocesseur pour commencer ou continuer une phase de test, et désactivable par le circuit de test pour interrompre le microprocesseur en fin de phase de test ou si le bit d'erreur est activé. Selon un mode de réalisation de la présente invention, il est prévu un bit du quatrième registre dont l'état détermine si le premier registre est incrémenté ou si le deuxième registre est décrémenté par le séquenceur. Un avantage de la présente invention est que l'on peut remplacer le contrôleur DMA de cartes à microprocesseur exis- tantes par un contrôleur DMA incorporant un circuit de test selon l'invention, pour conférer à oes cartes une possibilité de test plus rapide. Ces objets, caractéristiques et avantages ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite en relation avec les figures jointes parmi lesquelles: la figure 1, précédemment décrite, représente très schématiquement et partiellement un système classique à micro- processeur; la figure 2 représente un mode de réalisation d'une architecture d'un circuit de test de mémoire selon l'invention incorporé dans un contrôleur DMA; la figure 3 représente un organigramme d'opérations effectuées par un séquenceur du circuit de la figure 2; la figure 4 représente un mode de réalisation de circuit de test plus élaboré selon la présente invention; et la figure 5 représente un organigramme d'une partie des opérations effectuées par le séquenceur du circuit de la figure 4. Comme on l'a précédemment mentionné, l'invention propose d'incorporer des fonctionnalités de test de mémoire dans un contrôleur DMA. Il est utile de décrire certains éléments d'un contrô- leur DMA classique, qui seront aussi utilisés par un circuit de test selon l'invention. Un contrôleur DMA comprend au moins quatre registres accessibles par le bus de microprocesseur Deux de ces registres sont classiquement destinés à contenir respectivement une adres- se de début (ou adresse d'origine) d'un bloc de mémoire à trans- férer et une adresse de destination du bloc (ces registres sont de 24 bits dans l'exemple de la figure 1) Ces deux registres sont en outre des compteurs/décompteurs Un autre registre sert classiquement à stocker la longueur du bloc à transférer (ce registre doit être de 24 bits dans l'exemple de la figure 1) Le dernier registre est un registre de contrôle permettant au microprocesseur de fixer divers paramètres et recueillir diver- ses informations d'état Le contrôleur DMA comprend aussi un circuit d'interface avec le bus lui permettant de prendre le contrôle du bus de manière indépendante du microprooesseur Des informations plus détaillées concernant les contrôleurs DMA peuvent être trouvées dans de nombreuses notices d'application de contrôleurs du commerce. Les registres susmentionnés, notamment les registres destinés à contenir les adresses d'origine et de destination, occupent la majeure partie de la surface en silicium du contrô- leur DMA. Selon l'invention, ces registres sont aussi utilisés avantageusement par un circuit de test, mais pour des fonctions différentes décrites ci- après L'adaptation de ces registres ne nécessite que le rajout de quelques bits au registre de contrôle susmentionné La taille des éléments additionnels du circuit de test est petite devant la taille des registres. La figure 2 représente schématiquement une architec- ture d'un mode de réalisation de circuit simplifié de test selon l'invention, incorporé dans un contrôleur DMA Ce circuit sera appelé ciaprès "circuit DMA/testeur" Les quatre registres susmentionnés sont désignés par les références 10, 12, 14, 18. Le premier, 10, des registres compteurs/décompteurs du contrôleur DMA, est utilisé pour stocker une adresse STARTA de début de bloc mémoire à tester. Le deuxième registre compteur/décompteur, 12, est utilisé pour stocker une adresse ENDA de fin du bloc à tester. Le troisième registre, 14, qui sert classiquement à stocker la longueur d'un bloc mémoire à transférer, est utilisé selon l'invention pour stocker une donnée de test TESTD (Dans l'exemple utilisé ici d'un bus d'adresses de 24 lignes et d'un10 bus de données de 16 lignes, la taille du registre 14 doit, pour le contrôleur DMA, être de 24 bits; elle est donc suffisante pour contenir une donnée de 16 bits). Le quatrième registre 18 est le registre de contrôle du contrôleur DMA et est aussi utilisé selon l'invention comme registre de contrôle, mais ses bits auront des significations différentes lors d'une utilisation du circuit DMA/testeur en tant que contrôleur DMA ou en tant que testeur de mémoire Les registres 10, 12, 14 et 18 sont, ce qui est classique, accessi- bles par le bus de microprocesseur A/D.20 Dans le cadre de l'utilisation en testeur, selon l'invention, le registre de contrôle 18 comprend au moins les bits suivants: un bit TESTEN permettant de dévalider les fonctions DMA et de valider les fonctions de test du circuit DMA/testeur; un bit START d'initialisation d'une phase de test de mémoire; un ou plusieurs bits TMODE permettant de sélection- ner une phase de test parmi deux phases spécifiques, ou plus et un bit d'erreur ERR permettant au circuit DMA/tes- teur de signaler au microprocesseur qu'un défaut a été détecté. Tous ces bits, excepté le bit TESTEN, peuvent être des bits existant déjà dans un contrôleur DMA classique Ainsi, pour réaliser un circuit DMA/testeur, il suffit de rajouter au moins le bit TESTEN au registre de contrôle. Les états des bits TESTEN, START et TMODE sont fournis à un séquenceur 20 Ce séquenceur 20 est relié au registre 18 par une ligne ERR de validation du bit ERR et par une ligne STARTCLR de dévalidation du bit START. Un circuit 22 sert d'interface entre le circuit de test et le bus externe A/D Ce circuit d'interface 22 reçoit sur des lignes DOUT la donnée de test TESTD contenue dans le regis- tre 14 et sur des lignes TA l'adresse STARTA contenue dans le registre 10 Le circuit 22 reçoit du séquenceur 20 un signal R/W de validation en lecture ou en écriture et un signal GO de prise de contrôle du bus A/D En outre, le circuit 22 fournit sur des lignes DIN une donnée lue sur le bus A/D et fournit au séquen- ceur 20 un signal RDY indiquant que l'opération de lecture ou écriture initialisée par le signal GO est terminée. Un comparateur binaire 26 compare l'adresse STARTA contenue dans le registre 10 à l'adresse ENDA contenue dans le registre 12 et active une ligne END si les adresses STARTA et ENDA sont égales L'activation de la ligne END indique au séquenceur 20 une fin de phase de test La ligne END est aussi activée si 1 ' adresse STARTA est par erreur supérieure à 1 'adres- se ENDA Le séquenceur 20 fournit au registre 10 un signal d'incrémentation NEXTA à des instants adéquats Un comparateur binaire 28 compare la donnée TESTD contenue dans le registre 14 à la dernière donnée DIN lue par le circuit 22 sur le bus et active une ligne GOOD (reliée au séquenceur 20) en cas d'égalité de ces données. Le circuit d'interface 22 correspond à un circuit d'interface classique d'un contrôleur DMA, auquel on a rajouté quelques fonctionnalités, telles que la possibilité d'écrire sur le bus la donnée présente sur les lignes DOUT (le contenu du registre 14) et de fournir sur les lignes DIN la dernière donnée lue par l'interface sur le bus. Pour tester un bloc de mémoire avec le circuit de la figure 2, un programme de test exécuté par le microprocesseur opère, en résumé, de la manière suivante Il écrit une donnée de test dans le registre 14, l'adresse de début du bloc dans le registre 10 et l'adresse de fin dans le registre 12 Le program- me valide le testeur en validant le bit TESTEN du registre 18, sélectionne une phase de test en fixant le(s) bit(s) TMODE et initialise la phase en validant le bit START Le circuit de test effectue alors la phase de test en incrémentant séquentiellement (par la ligne NEXTA) l'adresse STARTA (registre 10) et en agis- sant à chaque incrément sur la case mémoire pointée par l'adres- se STARTA Le circuit de test suspend la phase de test et inter- rompt le microprocesseur lorsque le bit START est dévalidé, ce qui se produit à la fin de la phase de test (STARTA=ENDA), ou bien lorsqu'une erreur a été détectée (le bit ERR se trouve alors validé) En cas d'erreur, l'adresse contenue dans le registre 10 pointe sur la case conflictuelle Le programme pourra alors, par exemple, sauvegarder (ou communiquer à un système informatique) le mot lu dans cette case conflictuelle et l'adresse de la case, et faire poursuivre la phase de test en revalidant le bit START. Ainsi, le programme de test exécuté par le micropro- cesseur se borne à "programmer" une phase de test dans le circuit de test et à attendre la survenue d'une interruption. Pendant l'attente, le microprocesseur pourra effectuer d'autres tâches Les accès séquentiels aux cases du bloc à tester sont effectués par le circuit de test qui peut effectuer ces accès de manière beaucoup plus rapide que dans le cas o ils devraient être effectués par programme Des essais effectués par la deman- deresse ont permis de constater un gain de rapidité de 80 %. En outre, le programme de test exécuté par le micro- processeur comprend un nombre limité d'instructions servant seulement à "programmer" les phases de test et à sauvegarder éventuellement des résultats de test Il s'avère qu'un tel pro- gramme occupe seulement quelques centaines d'octets en mémoire ROM. La figure 3 représente un organigramme des opérations effectuées par le séquenceur 20 en fonction des signaux qu'il reçoit Dans la description de l'organigramme, un paragraphe décrivant un bloc de l'organigramme est précédé du numéro du bloc Le contenu d'un registre sera aussi appelé "variable". Le séquenceur reste dans un état d'attente tant que le bit START est à 0 Avant la mise à 1 de ce bit par le microprocesseur, ce dernier aura validé à l'aide du bit TESTEN la fonction de test du circuit et "programmé" le circuit pour sélectionner un bloc à tester (à l'aide des registres 10 et 12) et une phase de test spécifique (à l'aide, notamment des bits TMODE, et du registre 14, le cas échéant). 102 Ce bloc, représenté en pointillés, est utilisé dans un mode de réalisation de circuit plus élaboré de test, décrit ultérieurement à l'aide de la figure 4. 104 La valeur de la variable TMODE est vérifiée. Cette variable peut avoir plusieurs valeurs, à savoir, une valeur W indiquant au séquenceur qu'il faut effectuer une phase "écriture" consistant à écrire la donnée de test TESTD (registre 14) dans les cases mémoire d'adresses comprises entre l'adresse STARTA (registre 10) et l'adresse ENDA (registre 12), ou une valeur RC indiquant au séquenoeur qu'il faut effectuer une phase "lecture-comparaison" consistant à lire les données aux adresses comprises entre l'adresse STARTA et l'adresse ENDA et les comparer à la donnée TESTD. Dans le circuit de test plus élaboré de la figure 4, la variable TMODE peut prendre deux autres valeurs (RCCW, RCCW 2) permettant de sélectionner deux phases de test supplémentaires dans un bloc 106 représenté en pointillés Dans le cas de la figure 2, la variable TMODE est codée sur un seul bit du regis- tre 18, dont l'état 0, par exemple, définit la valeur RC et l'état 1 la valeur W. 108 Le mode "écriture" du circuit d'interface 22 est sélectionné en mettant la ligne R/W, par exemple, à 0. il Le séquenceur 20 fournit une impulsion sur la ligne GO, ce qui indique à l'interface 22 qu'elle doit prendre le contrâle du bus et y écrire la donnée (TESTD) présente sur son entrée DOUT. 112 Le séquenceur attend une impulsion sur la ligne RDY fournie par l'interface 22 pour indiquer que l'interface a effectué l'opération d'écriture demandée. 114 Ce bloc correspond à des opérations effectuées par le circuit de test plus élaboré décrit ultérieurement. 116 Le séquenceur vérifie l'état de la ligne END. 118 La ligne END n'est pas active La phase de test n'est pas terminée et il faut écrire la donnée TESTD dans la case suivante du bloc mémoire à tester Le séquenceur fournit une impulsion sur la ligne NEXTA, ce qui incrémente l'adresse STARTA pour pointer sur une case vierge Après l'incrémentation de l'adresse STARTA, la phase de test recommence au bloc 110 o la donnée TESTD est écrite dans la case vierge Des points de suspension indiquent que des opérations supplémentaires sont effectuées dans ce bloc 118 par le circuit plus élaboré de la figure 4. La ligne END est active, ce qui signifie que l'adresse STARTA est égale à l'adresse ENDA La phase de test est suspendue par la remise à O du bit START (Le bit START est remis à O par l'activation de la ligne STARTCLR) Le circuit de test retourne à son état de veille du bloc 100. La remise à O du bit START génère une interruption du microprocesseur Ce dernier traite l'interruption en venant vérifier l'état du bit ERR et, le cas échéant, en sauvegardant les informations utiles contenues dans les registres du circuit30 DMA/testeur. 122 La variable TMODE est égale à RC Le séquenceur sélectionne le mode "lecture" du circuit d'interface 22 en mettant la ligne R/W à 1. 124 Le séquenceur active la ligne GO, ce qui indique à l'interface 22 qu'elle doit lire en mémoire la donnée présente à l'adresse (STARTA) fournie sur son entrée TA Lorsque la donnée est lue, celle-ci est verrouillée sur la sortie DIN de l'interface. 126 Le séquenceur attend l'activation de la ligne RDY, indiquant que l'interface a lu la donnée et que celle-ci est présente sur les lignes DIN. 128 Le séquenceur vérifie l'état de la ligne GOOD La ligne GOOD est activée par le comparateur 28 si les données DOUT (donnée de test) et DIN (donnée lue dans la case à tester) sont égales. La ligne GOOD est active On n'a pas décelé de défaut dans la case testée à l'adresse STARTA Ce bloc, iden- tique au bloc 114 correspond à des opérations effectuées par le circuit de test plus élaboré de la figure 4. 132 Comme dans le bloc 116, on vérifie si la fin de la phase de test est atteinte, c'est-à-dire si la ligne END est active Si oui, la phase de test est suspendue dans le bloc 120 par la mise à O du bit START. 134 Comme dans le bloc 118, l'adresse STARTA est incrémentée par l'activation de la ligne NEXTA et la phase de test recommence au bloc 124 o la case mémoire pointée par la nouvelle adresse STARTA est lue. 136 La ligne GOOD n'est pas active après une lecture de la donnée (DIN) à l'adresse STARTA Cela signifie que la donnée DIN est différente de la donnée de test TESTD Alors, si l'on a bien entendu préalablement rempli le bloc à tester de la donnée TESTD, la case à l'adresse STARTA présente une anomalie. Le bit d'erreur ERR est mis à 1 et la phase de test est suspen- due au bloc 120 par la mise à O du bit START. Si la phase de test est suspendue par la détection d'une anomalie, on dispose de l'adresse (STARTA) de la case douteuse dans le registre 10 et de la donnée de test (TESTD), qui avait été écrite dans cette case, dans le registre 14 Le programme de test peut alors sauvegarder l'adresse STARTA, le mot lu à l'adresse STARTA, et la donnée TESTD, puis faire conti- nuer la phase de test en remettant le bit START à 1 Les résul- 5 tats sauvegardés peuvent être exploités ultérieurement par un logiciel classique pour déterminer les types de défaut. Le circuit de la figure 2 peut être utilisé avantageu- sement pour tous les procédés de test connus Toutefois, il peut être amélioré, comme on le verra ci-après, pour effectuer des phases de test non encore décrites, pouvant intervenir dans certains procédés. Dans certains procédés de test, on peut être amené à écrire des données de test différentes dans les cases mémoire à tester On peut aussi être amené à utiliser une phase de test, que l'on appelera phase de "lecture-comparaison-reécriture de l'inverse", consistant à lire la donnée contenue dans chaque case à tester, à comparer la donnée lue à une donnée de test, à inverser la donnée de test, et à reécrire la donnée de test inversée dans la case Une autre phase de test classique, que l'on appelera phase de "double lecture-comparaison-reécriture de l'inverse", consiste à effectuer double de suite la phase précé- dente Ces opérations peuvent être effectuées par le circuit de la figure 2, mais au prix d'une durée d'exécution plus impor- tante, toutefois encore avantageuse, du programme de test. La figure 4 représente un mode de réalisation plus élaboré de circuit de test selon l'invention permettant d'opti- miser davantage un grand nombre de procédés de test connus de la technique. Dans la figure 4, des mêmes éléments qu'à la figure 2 sont désignés par des mêmes référenoes. Le comparateur 26 de la figure 2 est remplacé par un circuit 40 de comparaison et de multiplexage Ce circuit 40, came le comparateur 26, fournit au séquenceur 20 un signal END lorsque les contenus (STARTA et ENDA) des registres 10 et 12 sont égaux En outre, selon l'état d'une ligne U/D correspondant à un bit du registre de contrôle 18, le circuit 40 fournit sur les lignes TA d'entrée d'adresse du circuit d'interface 22 l'une ou l'autre des adresses contenues dans les registres 10 et 12. 5 Le signal U/D valide le comptage du registre 10 par un état 1, par exemple, et valide le comptage du registre 12 par l'état 0 Le signal NEXTA est fourni par le séquenoeur 20 à une entrée d'incrémentation INC du registre 10 et à une entrée de décrémentation DEC du registre 12 Lorsque la ligne U/D est à 1,10 le circuit 40 fournit l'adresse STARTA (registre 10) au circuit d'interface 22, et l'adresse ENDA (registre 12) si la ligne U/D est à 0. Avec ètte configuration, on peut, selon l'état de la ligne U/D, balayer un bloc à tester par des adresses croissant depuis l'adresse de début ou par des adresses décroissant depuis l'adresse de fin. Un circuit de sélection 42 reçoit sur des lignes TD la donnée TESTD du registre 14, l'adresse TA fournie par le circuit et deux lignes de sélection DSRC dont les états sont fixés par deux bits du registre 18 Ce circuit 42, permet, en fonction des valeurs définies par les lignes DSRC, de fournir au circuit d'interface 22 une donnée de test correspondant soit à la donnée TESTD du registre 14, soit à l'une de trois combinaisons des bits d'adresses de l'adresse TA fournie par le circuit 40 En outre, la donnée de test DOUT fournie par le circuit de sélec- tion 42 peut être inversée ou non selon l'état d'un signal INV fourni par le séquenceur 20. Il est utile, dans èrtains procédés de test, d'écrire des données de test différentes dans les cases à tester Avec la configuration qui vient d'être décrite, on peut écrire dans chaque case à tester une portion sélectionnée de l'adresse de la case; ceci est une manière simple d'écrire des valeurs dif- férentes dans les cases. Le circuit de la figure 4 est également prévu pour permettre des tests sur des portions de chaque case mémoire, par exemple sur les 8 bits de poids faible ou sur les 8 bits de poids fort Un bit WRD/B du registre de contrôle 18 permet de 5 sélectionner si on travaille sur 16 ou sur 8 bits des cases mémoire L'état de ce bit WRD/B est fourni au séquenceur 20, au circuit de sélection 42, au circuit d'interface 22, et au compa- rateur 28 Le comparateur 28 compare la donnée de test DOUT fournie par le circuit de sélection 42 à la donnée DIN lue sur10 le bus Une ligne LB, dont l'étatest fixé par le séquenceur 20, est reliée au comparateur 28, au circuit d'interface 22, et fixe l'état d'un bit LB du registre de contrôle 18 L'état de cette ligne LB détermine si l'on opère sur l'octet de poids fort ou sur 1 'octet de poids faible des cases mémoire à tester, lorsque15 la ligne WRD/B indique que l'on travaille sur 8 bits des cases mémoire. Le tableau ci-dessous résume les valeurs préférentiel- les de la donnée de test DOUT fournie par le circuit de sélec- tion 42 en fonction des quatre valeurs possibles définies par20 les lignes DSRC et des états de la ligne WRD/B. La première colonne du tableau énumère les quatre valeurs possibles de la variable DSRC Ces valeurs ont été dési- gnées de façon générique par Val 1 à Val 4; l' homme du métier pourra choisir pour ces valeurs des combinaisons d'états des35 lignes DSRC qu'il trouvera adéquates La deuxième colonne DSRC WRD/B DOUT Val 1 1 TESTD( 15:0) O TESTD( 7:0), TESTD( 7:0) Val 2 1 TA( 15:0) O TA( 7:0), TA( 7:0) Val 3 X TA( 23:16), TA( 23:16) Val 4 X TA( 15:8), TA( 15:8) indique, pour chaque valeur de la variable DSRC, les deux états de la ligne WRD/B, la troisième colonne indique les valeurs DOUT fournies par le circuit de sélection 42 Un X dans une colonne indique indifféremment une valeur 1 ou 0. Pour les valeurs de la donnée DOUT, on désigne, par exemple, par "TESTD( 15:0)" que la donnée DOUT comprend les bits de rang O à 15 de la donnée TESTD La valeur "TESTD( 7:0), TESTD( 7:0)", par exemple, indique que l'octet de poids faible et l'octet de poids fort de la donnée DOUT sont égaux aux bits de rang O à 7 de la donnée TESTD Si la ligne INV est active, la donnée DOUT prend les valeurs inverses des valeurs du tableau. Le fonctionnement des éléments du circuit de test de la figure 4 sera décrit plus en détail à l'aide de l'organigram- me de la figure 5. Le circuit de la figure 4 fonctionne selon l'organi- gramme de la figure 3 complété par les blocs représentés en pointillés à la figure 3 ( 102, 106, 114, 130), ainsi que par une opération supplémentaire dans les blocs 118 et 134. La figure 5 représente un organigramme des opérations effectuées dans le bloc 106 de l'organigramme de la figure 3. Ci-après, avant de décrire l'organigramme de la figure 5, on commence par décrire les étapes permettant d'atteindre le bloc 106. Le séquenceur 20 reste dans un état d'attente tant que le bit START est à 0. 102 Le séquenceur désactive la ligne INV, active la ligne LB, et désactive un bit interne TWICE. 104 La variable TMODE est examinée Cette variable TMODE est, dans le circuit de la figure 4, codée sur 2 bits et définit quatre valeurs différentes notées W, RC, RCCW et RCCW 2. Les valeurs W et RC sélectionnent respectivement une phase d'écriture et une phase de lecture-comparaison, décrites en détail dans l'organigramme de la figure 3 Les valeurs RCCW et RCCW 2 sélectionnent respectivement les phases de "lecture- comparaison-reécriture de 1 ' inverse" et de "double lecture- comparaison-reécriture de l'inverse". 600 La variable TMODE est égale à RCCW ou RCCW 2 La ligne R/W est mise à 1 et la ligne GO est activée Le circuit d'interface 22 prend le contrôle du bus pour lire la donnée présente à l'adresse TA et la verrouiller sur les lignes DIN Si la ligne WRD/B est à 1, la donnée lue est présentée telle quelle sur les lignes DIN Si la ligne WRD/B est à 0, il se présente deux cas: si la ligne LB est à 1, ce qui est le cas lorsque le bloc 600 est atteint pour la première fois, l'octet de poids faible de la donnée lue est présenté sur les ligne DIN; et si la ligne LB est à 0, l'octet de poids fort est présenté sur les lignes DIN. 602 Le séquenceur attend l'activation du signal RDY par le circuit d'interface 22, indiquant que la lecture est terminée Le comparateur 28, prenant en compte également les états des lignes WRD/B et LB, effectue adéquatement la comparai- son de la donnée DIN avec la donnée de test DOUT En cas d'éga- lité, le comparateur 28 active la ligne GOOD. 604 Il est vérifié si la ligne GOOD est activée. 606 La ligne GOOD est activée, ce qui signifie que l'on n'a pas détecté de défaut dans la case testée La ligne INV est mise à 1, ce qui entraîne l'inversion de la donnée DOUT. 608 La ligne R/W est mise à O et la ligne GO est activée L'interface 22 prend le contrôle du bus et écrit à l'adresse TA la donnée inversée DOUT Si la ligne WRD/B est à 1, l'interface 22 écrit sur le bus la donnée DOUT en entier Si la ligne WRD/B est à 0, il se présente deux cas: si la ligne LB est à 1, ce qui est le cas lorsque le bloc 608 est atteint pour la première fois, l'interface 22 écrit sur le bus l'octet de poids faible de la donnée DOUT; et si la ligne LB est à 0, l'interface 22 écrit l'octet de poids fort de la donnée DOUT. 610 Le séquenceur attend l'activation de la ligne RDY indiquant que l'écriture est terminée. 612 Il est vérifié si la variable TMODE est égale à RCCW. Dans les blocs 600 à 610 une opération de "lecture- comparaison-reécriture de l'inverse" vient d'être effectuée. 614 La variable TMODE est égale à RCCW La variable TWICE est mise à O (cette variable sert à une opération de "double lecture-comparaisonreécriture de l'inverse" pour savoir si elle est terminée ou s'il manque encore une passe de "lec- ture-comparaison-reécriture de l'inverse") La ligne INV est mise à 0. 616 Il est vérifié si la ligne WRD/B est à O et si la ligne LB est à 1 Il s'agit de savoir si l'on teste une case mémoire en entier ou partiellement (par exemple un octet sur les 16 bits de la case) Si le test est partiel, il faut tester l'octet de poids faible et, dans une autre passe, l'octet de poids fort. 618 La condition du bloc 616 est vraie Cela signifie que l'on effectue un test partiel d'une case et que l'on vient de tester l'octet de poids faible La ligne LB est mise à O et la phase de test recommence au bloc 600 pour tester l'octet de poids fort. Les blocs 616 et 618, entourés d'un cadre en poin- tillés, correspondent à l'identique à chacun des blocs 114 et de l'organigramme de la figure 3 L'organigramme de la figure 3, complété pour une phase d'écriture (W) par le bloc 114 et pour une phase de lecture-comparaison (RC) par le bloc 130, s'applique au circuit de la figure 4 lors d'un test partiel des cases mémoire. 620 La condition du bloc 616 est fausse Le test de la case est terminé Le séquenceur vérifie si la ligne END est activée Si oui, les adresses STARTA et ENDA contenues dans les registres 10 et 12 sont égales et le bloc a été testé sans détecter d'erreur Le bit START du registre 18 est mis à O au bloc 120 et la phase de test est suspendue. 622 La ligne END n'est pas active Il reste des cases à tester Le séquenceur active la ligne NEXTA qui provoque, selon l'état de la ligne U/D, l'incrémentation de l'adresse STARTA ou la décrémentation de l'adresse ENDA (Le circuit 40 fournit au circuit d'interface 22 l'adresse qui est incrémentée ou décrémentée) La ligne LB est mise à 1 et la phase de test recommence au bloc 600 La mise à 1 ici de la ligne LB ne sert que dans les cas d'une phase de test partiel, pour rétablir l'état initial de la ligne LB modifié au bloc 618. Les blocs 118 et 134 de l'organigramme de la figure 3 sont complétés par une opération de mise à 1 de la ligne LB, et *sont donc identiques au bloc 622. 624 La variable TMODE n'est pas égale à RCCW (elle est égale à RCCW 2) Une phase de "double lecture-comparaison- réécriture de l'inverse" est effectuée Il est vérifié si la variable TWICE est à 1 Si oui, une opération de "double lecture-comparaison- reécriture de l'inverse" est achevée et la phase continue au bloc 614. 626 La variable TWICE est égale à 0, ce qui si- gnifie qu'une seule passe de l'opération de "double lecture- comparaison-reécriture de l'inverse" a été effectuée La varia- ble TWICE est mise à 1 et la phase continue au bloc 600 pour effectuer la deuxième passe. 630 La ligne GOOD n'est pas activée après une lecture Une anomalie est décelée, le bit ERR est mis à 1 et la phase de test est suspendue par la mise à O du bit START au bloc La ligne LB déterminant l'état d'un bit LB du registre 18 permet d'indiquer, lorsqu'on est en mode de test partiel (ligne WRD/B à 0), si l'anomalie s'est produite dans l'octet de poids faible ou dans l'octet de poids fort de la case testée. Le circuit de test de la figure 4 peut être utilisé avantageusement dans la plupart des procédés de test clas- siques Les tâches répétitives qui devaient être faites par programme, peuvent toutes l'être par le circuit DMA/testeur selon l'invention Le programme de test se limite à "programmer" ces tâches répétitives dans les registres 10, 12, 14 et 18, et à sauvegarder, de manière classique, les résultats de test Les tâches répétitives sont reléguées à un circuit câblé qui les effectue beaucoup plus rapidement que dans le cas o elles seraient effectuées par programme. Un avantage important du circuit DMA/testeur selon l'invention est qu'il peut remplaoer le contrôleur DMA présent sur des cartes à microprocesseur existantes, à condition égale- ment de remplacer la mémoire ROM contenant les instructions du programme de test. La présente invention a été décrite à l'aide d'exem- ples usuels (bus de données de 16 lignes, test partiel sur 8 bits de poids faible et 8 bits de poids fort) La présente invention s'applique bien entendu à d'autres situations (bus de 32 lignes, test partiel sur un nombre quelconque de bits). De nombreuses variantes et modifications de la présente invention apparaîtront à l'homme du métier Notamment, il existe de nombreux organigrammes distincts permettant de réaliser les fonctions décrites. A l'aide des organigrammes décrits, l'homme du métier pourra facilement écrire dans un langage évolué, tel que le langage VHDL, une description fonctionnelle servant ensuite à programmer un circuit logique, tel qu'un circuit PAL, GAL ou autre. REVENDICATIONS 1 Contrôleur d'accès direct en mémoire (DMA), carac- térisé en ce qu'il incorpore un circuit de test de mémoire réalisant de façon câblée des phases de test répétitives de lecture et écriture en mémoire à effectuer lors de procédés classiques de test de mémoire. 2 Contrôleur DMA selon la revendication 1, comprenant un circuit d'interface ( 22) pouvant être validé pour lire ou écrire des données sur un bus (A/D) de microprocesseur, et des premier à quatrième registres ( 10, 12, 14, 18) accessibles par le bus et par le contrôleur DMA lui-même, les premier ( 10) et deuxième ( 12) registres étant incrémentables et/ou décrémen- tables par un séquenceur du contrôleur DMA et destinés à contenir des adresses de cases mémoire o le circuit d'interface doit lire ou écrire; caractérisé en ce que le circuit de test de mémoire comprend: un premier comparateur ( 28) fournissant un signal (GOOD) de case bonne actif lorsqu'une donnée de test (DOUT), correspondant le cas échéant au contenu du troisième registre ( 14), est égale à une donnée (DIN) lue par l'interface ( 22) à une adresse spécifique (STARTA, ENDA) contenue dans l'un des premier et deuxième registres ( 10, 12); un deuxième comparateur ( 26) fournissant un signal (END) de fin de phase actif lorsque les contenus des premier et deuxième registres sont égaux; et un séquenceur ( 20) pour incrémenter ou décrémenter successivement l'adresse spécifique, suspendre 1 'incrémentation ou la décrémentation lorsque le signal de fin de phase (END) est activé, et indiquer la fin de phase par la modification d'un bit (START) du qua- trième registre ( 18), à chaque incrément ou décrément, soit effectuer une écriture de la donnée de test (DOUT) à 1 'adresse spécifique, soit effectuer une lecture d'une donnée (DIN) à cette adresse, et activer un bit d'erreur (ERR) du quatrième registre ( 18) si le signal de case bonne (GOOD) n'est pas activé lors d'une lecture. 3 Contrôleur DMA selon la revendication 2, caractéri- sé en ce qu'il comprend des moyens de sélection ( 42) pour four- nir au circuit d'interface ( 22) et au premier comparateur ( 28) une donnée de test (DOUT) correspondant, en fonction de la valeur définie par une première pluralité de bits (DSRC) du quatrième registre, soit au contenu du troisième registre ( 14), soit à l'une ou l'autre de portions prédéterminées de l'adresse spécifique (STARTA, ENDA). 4 Contrôleur DMA selon la revendication 3, caractéri- sé en ce que les moyens de sélection ( 42) comprennent un inver- seur de la donnée de test activable par un signal d'inversion (INV) fourni par le séquenceur ( 20). 5 Contrôleur DMA selon la revendication 4, caractéri- sé en ce que le séquenceur est commandé par une deuxième plura- lité de bits (TMODE) du quatrième registre ( 18) pour, selon la valeur définie par ces bits, faire traiter la case pointée par l'adresse spécifique selon l'un des modes suivants écriture de la donnée de test (DOUT), lecture et comparaison de la donnée lue à la donnée de test, lecture, comparaison et reécriture de l'inverse de la donnée de test, ou deux fois lecture, comparaison et reécriture de l'inverse. 6 Contrôleur DMA selon la revendication 2, caracté- risé en ce qu'il est prévu un bit (TESTEN) du quatrième registre ( 18) dont un état valide le circuit de test et dont l'autre état dévalide le circuit de test en permettant un fonctionnement classique du contrôleur DMA. 7 Contrôleur DMA selon la revendication 2, caractéri- sé en ce qu' il est prévu un bit (START) du quatrième registre ( 18) activable par le microprocesseur pour commencer ou conti- nuer une phase de test, et désactivable par le circuit de test pour interrompre le microprocesseur en fin de phase de test ou si le bit d'erreur (ERR) est activé. 8 Contrôleur DMA selon la revendication 2, caractéri- sé en ce qu'il est prévu un bit (U/D) du quatrième registre ( 18) dont l'état détermine si le premier registre ( 10) est incrémenté10 ou si le deuxième registre ( 12) est décrémenté par le séquen- ceur.