FR 2594242 A1 19870814 FR 8701774 A 19870212 La présente invention concerne un appareil et des techniques pour accomplir des opérations d'accès direct en mémoire (encore appelées DMA pour "direct memory access") dans des systèmes informatiques, en particulier des systèmes de saisie de données connectés à un grand nombre de disposi- tifs périphériques, et elle porte plus particulièrement sur un système de contrôleur de DMA de périphériques de type original, prévu pour etre utilisé conjointement à un ordi- nateur qui collecte des données provenant d'un grand nombre de dispositifs périphériques et traite ces données. On donnera une brève description de la technique d'accès direct en mémoire, à titre de contexte de l'inven- tion. On peut écrire des programmes d'utilisateur pour per- mettre à un ordinateur d'accéder à des positions de mémoire. Les positions de mémoire peuvent être des positions d'une mémoire interne d'un ordinateur ou des positions de mémoires externes, comme des disques durs,des disquettes, des cla- viers et un grand nombre d'autres sortes de dispositifs pé- riphériques, comme des convertisseurs analogique-numérique, des convertisseurs numérique-analogique, des adaptateurs d'interface, etc, chacun d'eux comportant au moins une adres- se au moyen de laquelle on peut l'adresser. Dans de nombreux cas, il est hautement indésirable que le programmeur de l'or- dinateur soit obligé de garder la trace de toutes les posi- tions de mémoire utilisées et de tous les transferts de mé- moire. On peut appeler:'accès en mémoire programmé" un accès en mémoire qui est commandé par le programmeur de l'ordinateur et dont le programmeur conserve la trace. L'ordinateur pro- grammé génère les adresses sur un bus d'adresse qui est con- necté au dispositif périphérique ou à la mémoire qui est adressé. Cependant, il peut souvent être très commode qu'un dispositif externe ou périphérique soit capable d'effectuer un transfert d'information de façon complètement automatique ou presque automatique, de sa propre position de mémoire vers une autre position de mémoire, comme dans la mémoire de l'or- dinateur, d'une f\çon telle que le programme d'utilisateur n'ait pas à prévoir les détails du transfert d'information. On appelle "accès direct en mémoire" ou DMA la technique par laquelle on accomplit de tels transferts d'information. On utilise couramment des techniques d'accès direct en mémoire dans des systèmes de saisie de données dans les- quels un grand nombre de positions séquentielles doivent être transférées d'une mémoire à une autre ou d'un groupe de posi- tions non séquentielles vers un autre groupe de positions de mémoire séquentielles d'un ordinateur. De façon caractéristi- que, dans des systèmes de saisie de données, un seul conver- tisseur analogique-numérique qu'on utilise pour scruter une liste de canaux analogiques, fonctionne sous la commande d'un dispositif de DMA. Les techniques de DMA de l'art antérieur ne conviennent pas lorsqu'il existe un grand nombre de dispo- sitifs périphériques avec des adresses non séquentielles dif- férentes, du fait que le contrôleur de DMA effectuant des opérations de DMA exigerait un canal séparé pour chacun de ces dispositifs périphériques. L'utilisation de tels contrô- leurs de DMA de type multicanal, avec un canal pour chaque dispositif périphérique, conduirait à un coût prohibitif. Dans le passé, la plupart des systèmes de saisie de données du type exigeant la collecte de données à partir d'un grand nombre de dispositifs périphériques ayant des adresses non séquentielles ont utilisé des techniques d'interrogation cy- clique ou des techniques d'interruption. Les techniques d'interrogation cyclique ont les avantages consistant dans la simplicité du matériel et du logiciel et une vitesse de fonctionnement relativement élevée, mais elles sont sujettes à l'inconvénient qui consiste en ce que les données collec- tées peuvent présenter une "gigue", c'est-à-dire une incerti- tude concernant l'instant exact auquel les événements sur lesquels porte l'interrogation ont eu lieu. Une telle incer- titude peut conduire à des erreurs importantes qu'il est dif- ficile de détecter et de corriger. Les techniques d'interro- gation cyclique rendent très difficile le fonctionnement en "opération d'arrière-plan". (On appelle fonctionnement en "opération d'arrière-plan" l'utilisation de l'ordinateur pour accomplir la saisie de données d'une manière qui est presque "invisible" pour le programme d'application.) Les techniques d'interrogation cyclique exigent habituellement qu'un ordina- teur particulier soit "spécialisé" pour la tâche de saisie de données. Il arrive souvent que ceci ne soit pas satisfaisant, du fait qu'il serait habituellement avantageux d'utiliser si- multanément l'ordinateur pour d'autres fonctions, en plus des fonctions de saisie de données. Les techniques de saisie de données basées sur l'emploi d'interruptions sont généralement plus lentes que les techniques d'interrogation cyclique, à cause du "temps système" consommé par le logiciel et du temps nécessaire pour chaque opération d'interruption. Les techni- ques d'interruption peuvent soulever des difficultés considé- rables relatives à des problèmes de conflits relatifs à l'utilisation des bus, si un grand nombre de dispositifs péri- phériques capables de générer des interruptions sont connectés au système. Les systèmes de saisie de données basés sur l'uti- lisation d'interruptions exigent également habituellement qu'un ordinateur soit spécialisé pour la fonction de saisie de données. La situation d'ensemble consiste donc en ce que, jusqu'à présent, on n'a pas disposé d'une technique très sa- tisfaisante pour effectuer une saisie de données stable, rapi- de, économique et pratiquement "invisible" à partir d'un grand nombre de dispositifs périphériques ayant des adresses non sé- quentielles, sans rencontrer les diverses difficultés mention- nées ci-dessus. Un but principal de l'invention est donc de procurer un système de contrôleur de DMA de périphériquesqui permette d'effectuer un transfert de données relativement économique et commode vers un grand nombre de positions de mémoire séquen- tielles, à partir d'un grand nombre de dispositifs périphéri- ques ayant des adresses non séquentielles. Un autre but de l'invention est de procurer une structure et une technique de DMA économiques et rapides, pour des transferts "dispositif vers mémoire". Brièvement, et conformément à l'un de ses modes de réalisation, l'invention procure un contrôleur de DMA de péri- phériques,prévu pour être connecté à un processeur comportant un bus de données, un bus d'adresse, et un contrôleur de DMA interne ayant une entrée de demande de DMA et une sortie d'ac- cusé de réception de DMA, le contrôleur de DMA de périphériques comprenant une mémoire de format de trame destinée à enregis- trer un ensemble d'adresses non consécutives de divers dispo- sitifs périphériques connectés au bus de données, et des cir- cuits destinés à connecter le bus d'adresse et le bus de don- nées à la mémoire de format de trame, et à les déconnecter de la mémoire de format de trame, pour permettre au processeur de charger les adresses non consécutives dans des adresses consé- cutives de la mémoire de format de trame. Le contrôleur de DMA de périphériquescomprend un compteur d'adresse connecté à des entrées d'adresse de la mémoire de format de trame et à un circuit séquenceur qui génère un signal de demande de DMA sur l'entrée de demande de DMA du contrôleur de DMA interne, sous l'effet d'un signal de demande de transaction qui est généré par une source particulière. Dans le mode de réalisation de l'invention qui est décrit, la mémoire de format de trame est une mémoire à deux accès. Une demande de validation de DMA gé- nérée par le séquenceur sous l'effet d'un signal d' accusé de réception de DMA reçu à partir du contrôleur de DMA interne, connecte le bus de données au bus de données de périphériques et déconnecte également le bus d'adresse de la-mémoire à deux accès et du bus d'adresse de périphériques, et il autorise le compteur d'adresse à appliquer des adresses à la mémoire à deux accès. Après que chaque adresse de dispositif périphéri- que se trouvant dans la mémoire de format de trame a été émise sur le bus d'adresse de périphériques, en effectuant ainsi un transfert de DMA d'un multiplet de données, le con- trôleur de DMA interne abandonne au processeur la commande du bus d'adresse et du bus de données, pendant un cycle d'ins- truction. Ainsi, des transferts de données de DMA à partir d'un grand nombre de dispositifs périphériques ayant des adresses non séquentielles, vers des adresses consécutives dans la mémoire du processeur, ou inversement, sont accomplis avec un seul canal du contrôleur de DMA interne, et sans exiger que le- processeur soit spécialisé pour des opérations de transfert de DMA. Dans le mode de réalisa- tion de l'invention qui est décrit, il existe un certain nom- bre de modes de fonctionnement différents, qu'on peut sélec- tionner en programmant un circuit de sélection de source cesyn- chnizsation inirne et un circuit de sélection de source de dé- clenchement. L'invention sera mieux comprise à la lecture de la description qui va suivre d'un mode de réalisation, et en se référant aux dessins annexes, sur lesquels: la figure 1 est un schéma synoptique d'un système de saisie de données comprenant le contrôleur de DMA de péri- phériques de l'invention; la figure 2 est un schéma synoptique du sous-ensem- ble logique de contrôleur de DMA interne de la figure 1; la figure 3 est un diagramme séquentiel utile à la description du fonctionnement du système de la figure 1; les figures 4A-4F sont des schémas de circuit dé- taillés des divers sous-ensembles des figures 1 et 2; la figure 5 est un diagramme d'implantation en mé- moire utile à l'explication du fonctionnement de l'invention; la figure 6 est un organigramme des opérations ac- complies par un programme dans l'ordinateur- de la figure 1, pour donner au système la configuration permettant l'accom- plissement d'une opération de DMA par son contrôleur de DMA de périphériques; et la figure 7 est un diagramme d'états du séquenceur de DMA qui fait partie de la figure 2. En considérant maintenant la figure 1, on voit un système de saisie de données I qui comprend un contrôleur de DMA de périphériques 2, connecté entre le bus interne 4 d'un ordinateur IBM du type Personal Computer (PC), et un ensem- ble de dispositifs périphériques 49-1,... 49-N, chacun d'eux étant connecté entre un bus de données de périphériques 5B et un bus d'adresse/commande de périphériques 28. Dans le mode de réalisation décrit, les dispositifs périphériques 49-1, etc. comprennent de façon caractéristique jusqu'à 64 conver- tisseurs analogique-numérique, convertisseurs numérique-ana- logique, adaptateurs d'interface de périphériques, ou divers autres dispositifs de mémoire. Dans le mode de réalisation de l'invention qui est décrit, le contrôleur de DMA de périphé- riques 2 est implanté sur une seule carte de circuit imprimé qu'on peut enficher dans un logement vide prévu dans l'ordi- nateur IBM PC 3. On notera que l'ordinateur IBM PC 3, qu'on appelle également l'ordinateur hôte 3, comprend un processeur interne 3A qui est connecté à un bus interne 4 par l'intermédiaire d'un bus 3B et d'un circuit de "multiplexage" 3C. L'autre jeu d'entrées du circuit de "multiplexage" 3C est connecté par un bus 3E à un contrôleur de DMA interne 3D de l'ordinateur hôte 3. Le circuit de multiplexage 3C est commandé par le program- me d'application de l'ordinateur hôte 3, pour permettre au processeur 3A ou au contrôleur de DMA interne 3D de commander le bus interne 4. Le bus interne 4 comprend un bus de données interne bidirectionnel 5A qui comporte des conducteurs DO-D7, conducteurs d'adresse AO-A19, et diverses autres lignes de signaux de commande qui sont bien connues de l'homme de l'art. On peut interrompre l'ordinateur IBM PC 3 au moyen d'un seul signal d'interruption qui peut être produit par une source externe quelconque, comme l'un quelconque des disposi- tifs périphériques 49-1, etc. Le contrôleur de DMA de périphériques 2 comprend un circuit décodeur d'adresse primaire 10, dont les détails sont représentéssur la figure 4A. Les entrées du circuit dé- codeur d'adresse 10 sont connectées à des conducteurs d'adresse A10-A19, qui sont désignés collectivement par la référence 6B. Le circuit décodeur d'adresse 10 produit sur le conducteur 11 un signal qui est appliqué à une entrée d'une porte OU 12, pour produire un signal de validation qui est appliqué à un circuit émetteur-récepteur de bus de données 13. Le circuit émetteur-récepteur de bus de données 13 connecte sélectivement les conducteurs du bus de données d'ordinateur A à des conducteurs correspondants du bus de données bidirec- tionnel de périphériques 5B, dans la direction qui est déter- minée par les signaux de direction (Lecture/Ecriture) présents sur le conducteur 28A du bus d'adresse/commande de périphéri- ques 28. Le circuit émetteur-récepteur de bus de données 13 peut être un circuit intégré émetteur-récepteur à 8 canaux 74LS245 de type classique. Les conducteurs du bus d'adresse d'ordinateur AO- A9, désignés collectivement par la référence 6A, un signal d'écriture en mémoire MEMWR, et un signal de lecture en mémoi- re MEMR, sont appliqués à des entrées du circuit 14, qui com- prend des amplificateurs-séparateurs à trois états et des cir- cuits d'adresse et de commande de l'ordinateur. Lorsqu'elles sont validées, les sorties d'adresse des circuits amplifica- teurs-séparateurs à trois états du sous-ensemble 14 produisent des signaux sur les conducteurs du bus d'adresse/commande de périphériques 28 qui correspondent aux divers conducteurs d'entrée du sous-ensemble 14. Une entrée de validation des circuits du sous-ensemble 14 est commandée par un signal de validation de DMA que produit l'inverseur 48, dont l'entrée est connectée au conducteur 23. Le circuit logique de commande de DMA 19 génère un signal DMAEN (validation d'accès direct en mémoire) sur le conducteur 23. Le conducteur 23 est connecté à l'autre entree de la porte OU 12. Le signal DMAEN remplit la fonction consis- tant à autoriser l'émetteur-récepteur de bus de données 13 à connecter électriquement le bus de données d'ordinateur 5A au bus de données de périphériques 5B. Le signal DMAEN assure également la déconnexion des conducteurs du bus d'adresse d'ordinateur AO-A9 par rapport au bus d'adresse/commande de périphériques 28. Conformément à l'invention, le bus d'adresse/com- mande de périphériques 28 est connecté à un premier accès d'adresse 16B d'une "mémoire de format de trame" à deux accès, 15. La mémoire de format de trame 15 comprend un premier accès- de donnés 16A qui est connecté aux conducteurs respectifs du bus de données de périphériques 5B. Un second accès d'adresse 17B de la mémoire de format de trame 15 est connecté par les conducteurs 20 aux sorties d'adresse du circuit logique de commande de DMA 19. Le circuit logique de commande de DMA 19 produit le signal DMAEN précité (validation d'accès direct en mémoire) sur le conducteur 23. Le circuit logique de commande de DMA 19 émet également sur le conducteur 7, vers le bus de données d'ordinateur interne 4, un signal de demande de DMA qui est désigné par DMA REQ, il reçoit sur le conducteur 8 un signal d'accusé de réception de DMA, désigné par DMA ACK, qui pro- vient du bus d'ordinateur interne 4, et il reçoit sur le con- ducteur 9 un signal de compte final T/C provenant du bus d'ordinateur interne 4. Les trois signaux "d'établissement de liaison" précités sont reçus et générés par le contrôleur de DMA interne, 3D, de l'ordinateur IBM PC 3. Facultativement, le circuit logique de commande de DMA 19 peut recevoir un si- gnal RDMAEN sur le conducteur 26. La mémoire de format de trame 15 comprend un second accès de données 17A qui est connecté par un bus interne à 16 bits, 28B, au sous-ensemble 18, qui comprend des amplifica- teurs-séparateurs à trois états, un circuit d'adresse de DMA, et un circuit de commande, dont les détails sont représentés sur la figure 4C. Les sorties du circuit d'amplificateurs-sé- parateurs à trois états dans le sous-ensemble 18 sont connec- tées au-bus d'adresse/commande de périphériques 28. L'accès de données 17A produit également deux signaux EOF (fin de trame) et EOG (fin de groupe), sur les conducteurs respectifs 21 et 22. Le circuit logique de commande de DMA 19 est con- necté aux huit conducteurs du bus de données de périphériques B, aux douze conducteurs du bus d'adresse/commande de péri- phériques 28, et facultativement au conducteur 25 qui porte un signal RDMA INIT. Le circuit logique de commande de DMA 19 produit également un signal DMA INIT sur le conducteur 24. Les détails du circuit logique de commande de DMA 19 sont re- présentés sur la figure 2. En considérant maintenant la figure 2, on note que le coeur du circuit logique de commande de DMA 19 est un cir- cuit séquenceur de DMA 29A, qui est un automate d'états finis réalisé dansune puce de réseau logique programmable (RLP) 29, programmé de façon appropriée, qui est représenté sur la figure 4D. Sur la figure 2, une ligne en traits interrompus 29 entoure le séquenceur de DMA 29A et plusieurs éléments correspondant à d'autres fonctions, tous réalisés dans la puce de RLP mentionnée ci-dessus, comprenant une fonction de bascule 69 qui reçoit un signal de démarrage STRT sur son entrée d'instauration et un signal STOP sur son entrée de restauration, et qui génère sur un conducteur 70 un signal de porte de demande REQGT (mentionné dans le rableau III, en an- nexe, qu'on décrira ultérieurement). La fonction d'une porte ET 71 qui reçoit le signal REQGT et un signal de demande de transfert XREQ sur le conducteur 42 est également incorporée dans la puce de RLP 29. Le signal de sortie de la fonction ET 71 est appliqué en tant que signal d'entrée à l'automate d'états finis constituant le séquenceur de DMA 29A. L'homme de l'art pourra déterminer la façon de programmer le RLP 29, sur la base des définitions d'états données dans le Tableau 1 en annexe, du diagramme d'états représenté sur la figure 7 et de la table de vérité correspondante représentée dans le Ta- bleau 2 en annexe. Le circuit séquenceur de DMA 29A produit sur le conducteur 7 le signal de demande de DMA, désigné par DMA REQ et il l'émet vers l'ordinateur hôte 3, et il reçoit sur le conducteur 8 le signal d'accusé de réception de DMA, désigné par DMA ACK, provenant du contrôleur de DMA d'hôte 3D dans l'ordinateur hôte 3. Le circuit séquenceur de DMA 29A produit également sur le conducteur 23 un signal de validation de DMA qui est désigné par DMAEN. Le circuit séquenceur de DMA 29A reçoit également un signal DMA INIT (initialisation de DMA) sur le conducteur 24, un signal de démarrage STRT produit par le circuit de sélection de démarrage 33, un signal d'arrêt STOP produit par le circuit de sélection d'arrêt 35, une de- mande de transfert XREQ sur le conducteur 42, le signal EOF (fin de trame) sur le conducteur 21, et le signal EOG (fin de groupe) sur le conducteur 22. Le circuit logique de commande de DMA 19 comprend également un circuit compteur d'adresse de trame à trois états, 31, qui est validé par le signal DMAEN sur le conduc- teur 23, sous l'effet d'un signal DMA ACK (accusé de réception de DMA), reçu à partir du contrôleur de DMA d'hôte 3D. Les sorties du compteur d'adresse de trame 31 sont connectées aux conducteurs individuels du bus 20, pour fournir des adresses à la mémoire de format de trame 15. Le compteur d'adresse de mémoire de trame 31 est restauré par un signal qui est produit sur la sortie de la porte OU 32, dont une entrée reçoit le si- gnal EOF 21. L'autre entrée de la porte OU 32 reçoit le signal DMA INIT sur le conducteur 24. Le signal de demande de transfert de DMA, présent sur le conducteur 42 et désigné par XREQ, est produit par le circuit logique de sélection de source de synchronisation de DMA, 40. Le signal XREQ est appliqué à l'entrée d'une porte ET à deux entrées, 39, dont la sortie est connectée à l'entrée d'horloge d'un circuit compteur d'événements source 38. La sortie du compteur d'événements source 38 est con- nectée pak le conducteur 37 à diverses entrées de "mode" du circuit de sélection de démarrage 33 et à diverses entrées de "mode" du circuit de sélection d'arrêt 35. Le circuit de sélection de démarrage 33 comporte trois entrées qui reçoivent un signal d'ordre de démarrage STRTCMD provenant du circuit logique de commande 45 par le conducteur 34. Le circuit de sé- lection d'arrêt 35 comporte deux entrées qui reçoivent un si- gnal d'ordre d'arrêt STPCMD provenant du circuit logique de commande 45 par le conducteur 36. Le circuit de sélection d'arrêt 35 comporte deux entrées qui sont connectées de façon à recevoir le signal T/C (compte final) sur le conducteur 9. Le circuit de sélection de démarrage 33 et le circuit de sé- lection d'arrêt 35 sont incorporés dans le circuit de commande de mode de DMA qui est désigné par la référence 81 sur la fi- gure 4F. Les relations entre le signal STRTCMD 34, le signal STPCMD 36, le signal STRT 33A, le signal STOP 35A et le signal REQGT 70 sont indiquées dans la table de vérité du Tableau 3, avec une notation dans laquelle l'indice "n" représente l'im- pulsion d'horloge présente et l'indice "n + 1" désigne l'im- pulsion d'horloge suivante. Le circuit de sélection de source de déclenchement 41 et le circuit de sélection de source de synchronisation de DMA 40 sont tous deux connectés à un ensemble de conducteurs d'entrée désignés collectivement par la référence 27, parmi lesquels on doit sélectionner un signal "d'événement" ou de "source" pour déclencher une opération de transfert de DMA, et parmi lesquels on doit également sélectionner un signal de synchronisation ou de "déclenchement" qui doit commander l'instant de démarrage ou l'instant d'arrêt d'une opération de transfert de DMA, conformément à un mode de fonctionnement parmi cinq modes de fonctionnement différents, qu'on explique- ra ultérieurement. Un circuit de bascule 43 est connecté à une sortie du circuit de sélection de source de déclenchement 41,etest connecté à une entrée de la porte ET 39. Le circuit de bascule est nécessaire du fait que le signal de source de déclenche- ment sélectionné peut être une impulsion brève. Le circuit de bascule 43 a donc pour fonction de mémoriser le niveau d'une telle impulsion brève. Un circuit d'horloge de rythme 44 qui commande la synchronisation des transferts de DMA effectués par le contrô- leur de DMA de périphériques 2, produit un signal qui est ap- pliqué à l'un des conducteurs 27. Le circuit logique de com- mande 45 dans le circuit logique de commande de DMA 19 compor- te des entrées connectées au bus de données de périphériques B et au bus de commande/adresse de périphériques 28. Sous la dépendance de ces entrées, le circuit logique de commande 45 produit un ensemble de signaux de commande/validation sur les conducteurs 46, qui sont respectivement connectés à tous les sous-ensembles représentés sur la figure 2; cependant, pour la commodité de l'illustration, les connexions de la plupart des conducteurs 46 ne sont pas réellement représentées, du fait que l'homme de l'art pourra aisément les rétablir sur la base de l'information fournie par les figures 4A-4F. Apres avoir décrit la structure fondamentale du con- trôleur de DMA de périphériques 2, on décrira le fonctionne- ment fondamental du système représenté sur les figures 1 et 2. Apres avoir décrit le fonctionnement fondamental, on décrira en détail le fonctionnement de l'ordinateur hôte IBM PC 3 pour définir la configuration du contrôleur de DMA d'hôte 3D, ou programmer ce dernier dans le but d'effectuer un transfert de DMA. On décrira ensuite un certain nombre d'autres modes de fonctionnement du mode de réalisation de l'invention qui est décrit. Enfin, on présentera une description plus détaillée des circuits logiques des sous-ensembles individuels des figu- res 1 et 2, en se référant aux figures 4A-4F, pour guider l'homme de l'art dans la construction réelle du mode de réali- sation actuellement préféré de l'invention. Comme mentionné ci-dessus, l'ordinateur personnel IBM ou ordinateur hôte 3 comprend à la fois un processeur in- terne 3A et un contrôleur de DMA d'hôte interne 3D, qui sont tous deux des machines programmables. Le contrôleur de DMA d'hôte 3D peut effectuer un transfert de DMA avec ce qu'il considère être un seul dispositif périphérique et qui, con- formément à la présente invention, est le contrôleur de DMA de périphériques 2. Pendant le fonctionnement normal de l'ordinateur hôte 3, des adresses AOA9 sont effectivement appliquées à des conducteurs correspondants du bus d'adresse/commande de périphériques 28, ce qui autorise l'ordinateur hôte 3 à adresser la mémoire de format de trame à deux accès , et des dispositifs quelconques parmi les dispositifs pé- riphériques 49-1,... 49-N, si l'émetteur-récepteur de bus de données 13 est validé. L'émetteur-récepteur de bus de don- nées 13 est validé par le décodage des bits d'adresse A10- A19, pour permettre à l'ordinateur hôte 3 d'accéder directe- ment au bus de données de périphériques 5B lorsque le circuit logique de commande de DMA 19 n'est pas en train d'adresser la mémoire de format de trame à deux accès, 15. Le signal d'écriture en mémoire MEMWR et le signal de lecture en mémoire MEMR sont également appliqués par le bus d'hôte interne 4 au bus d'adresse/commande de périphéri- ques 21, par l'intermédiaire du circuit d'amplificateurs-sépa- rateurs à trois états qui fait partie du sous-ensemble 14. Ainsi, pendant le fonctionnement normal, l'ordina- * teur hôte 3 peut effectuer des opérations de lecture et d'écriture portant sur la mémoire de format de trame 15 du contrôleur de DMA de périphériques 2, et sur des dispositifs quelconques parmi les dispositifs périphériques 49-1, etc. Plus précisément, l'ordinateur hôte 3 peut écrire des donnéesau niveau de l'accès 16A de la mémoire de format de trame à deux accès 15, qui apparaît à l'ordinateur hôte 3 sous la forme de 128 positions séquentielles d'un multiplet chacune. Comme mentionné ci-dessus, le contrôleur de DMA d'hôte 3D est une machine programmable. Pendant que le pro- r cesseur 3A exécute un programme d'utilisateur, il ne commande pas les bus du système (5A, 6A et 6B), et le contrôleur de DMA d'hôte 3D comme le contrôleur de DMA de périphériques 2 sont à l'état inactif. Si le programme d'utilisateur exige l'exécution d'une opération de DMA, le processeur 3A program- me le contrôleur de DMA d'hôte 3D avec la position de mémoire à laquelle doit accéder le transfert de DMA désiré. Le pro- cesseur 3A programme également le contrôleur de DMA d'hôte 3D avec le nombre de multiplets à transférer dans l'opération de DMA, et il autorise ensuite le contrôleur de DMA d'hôte 3D à prendre la commande du bus interne 4, qui comprend les bus B, 6A et 6B de l'ordinateur hôte 3. L'ordinateur hôte 3 doit ainsi préparer initialement une transaction de DMA en pro- grammant de façon appropriée le contrôleur de DMA d'hôte 3D. Une fois que ceci a été effectué, la transaction de DMA se déroule sans action supplémentaire de la part du processeur interne 3A. Le contrôleur de DMA d'hôte de l'ordinateur IBM PC est un contrôleur de DMA de type dispositif vers mémoire "classique", qui transfère un multiplet du bus de données vers la mémoire de destination pour chaque cycle "d'établis- sement de liaison" de DMA. De plus, une instruction "d'auto-initialisation" peut être programmée dans le contrôleur de DMA d'hôte 3D, de façon que lorsque le compte de multiplets programmé a été décrémenté jusqu'a zéro, le contrôleur de DMA d'hôte 3D re- charge le registre d'adresse courante dans le contrôleur de DMA d'hôte à partir du registre de base, et commence une nou- velle séquence. On utilise ce mode pour fournir une informa- tion avant déclenchement et une information après déclenche- ment, dans une mémoire tampon de données, qu'on décrira ulté- rieurement. Si le retard programmé est inférieur à la taille de la mémoire tampon, les données laissées dans la mémoire après l'achèvement de la séquence consisteront en un mélange de données nouvelles et anciennes. Le registre d'adresse cou- rantedu contrôleur de DMA d'hôte 3D fournira la position du dernier multiplet transféré. On peut alors localiser le point de déclenchement en remontant à partir de ce multiplet, sur le nombre de trames spécifié par le registre de déclenchement par une source ou un événement, de façon que tout ce qui se trouve entre le pointeur d'adresse courante et le point de déclenchement constitue des données après déclenchement, et que le reste constitue des données av:ant déclenchement. Après que le contrôleurDMA d'hôte 3D a été programmé pour effectuer un transfert de DMA, il peut effectuer ce transfert de DMA avec le contrôleur de DMA de périphériques2, en accomplissant un transfert de DMA normal d'un multiplet entre le bus de données de périphériques 5B et une mémoire in- terne de l'ordinateur hôte 3. Un tel transfert d'un multiplet constitue ce qu'on appelle un "cycle de DMA". A la fin d'un cycle de DMA, le contrôleur de DMA d'hôte 3D rend la commande du bus 4 au processeur 3A. On définit une "trame" comme étant le bloc de données émis vers la mémoire chaque fois qu'un "transfert de DMA" a lieu. Un "transfert de DMA" est constitué par le nombre de cycles de DMA d'un multiplet qui est néces- saire pour transférer tous les éléments de trame, c'est-à-dire les rubriques d'une liste, qui sont contenus dans la mémoire de format de trame 15. Dans la préparation d'un transfert de DMA, l'ordina- teur hôte 3 écrit une "liste de trame" dans des positions sé- quentielles de la mémoire de format de trame à double accès 15. Chaque rubrique dans la liste de trame contient une adres- se à dix bits d'un dispositif périphérique qui est connecté au bus d'adresse/commande de périphériques 28 et au bus de don- nées de périphériques 5B, un bit de "direction" ou de lecture/ écriture, destiné à identifier la direction du transfert de DMA désiré, un bit d'indicateur EOF (fin de trame) destiné à identifier que le dernier élément de la rubrique de la liste a été transféré, c'est-à-dire que la trame complète a été trans- férée, et un bit indicateur EOG (fin de groupe) qui, comme on l'expliquera plus tard, peut être utilisé pour mettre en oeu- vre un mode d'opérationeDMA plus rapide. Pendant chaquecycle de DMA d'hôte, le circuit lo- gique de commande de DMA (ou le "contrôleur de liste") 19 ac- cède à la mémoire de format de trame à deux accès 15, en pointant un "élément de trame" successif, ou une rubrique successive de la liste de trame. Le contenu de cet élément de trame dans la liste devient l'adresse du multiplet à transfé- rer pendant le cycle de DMA. A la fin de chaque cycle de DMA, le circuit logique de commande de DMA de périphériquesl9 in- crémente d'une unité l'adresse de liste dans le compteur d'adresse de mémoire de format de trame 31 (fiqure 2), de façon que le circuit logique de commande de DMA de périphé- riques 19 désigne l'élément suivant de la trame pour le cycle de DMA suivant. Si l'indicateur EOF est un "0" (c'est-à-dire qu'il est "actif") dans l'élément de trame présent, ce qui in- dique que la trame complète a été transféree, le circuit logi- que de commande de DMA 19 restaure à zéro le compteur d'adres- se de mémoire de format de trame 31 pour le cycle de DMA suivant. On trouvera ci-après les définitions des états logi- ques de divers signaux décrits ici. Pour le signal EOF, un "1" désigne un état "inactif". Pour EOG, le niveau "1" désigne l'état "inactif". Pour le signal DMA ACK, un "1" définit l'état "inactif". Pour le signal DMA REQ, un "1" définit l'état "actif". Pour le signal DMAEN, un "1" désigne l'état "inactifs Pour le signal DMA INIT, le niveau "1" définit l'état "inactif". Pendant chaque cycle de mémoire de DMA, le circuit logique de commande de DMA de périphériques 19 commande le bus d'adresse de périphériques 28 et les données de l'élément de trame désigné par le compteur d'adresse 31 deviennent le si- gnal de sortie d'adresse et de commande du bus de données de péripheriques 28. Lorsqu'un cycle de DMA particulier est achevé, le circuit logique de commande de DMA de périphériques 19 rend la commande du bus d'adresse de périphériques à l'ordinateur hôte 3, en faisant passer à "1" le signal DMAEN (validation de DMA) sur le conducteur 23, ce qui connecte les conducteurs du bus de données 5A à des conducteurs correspondants du bus de données de périphériques 5B et valide les amplificateurs- séparateurs à trois états dans le sous-ensemble 14. A la fin de chaque cycle de DMA, le circuit logique de commande de DMA de périphériques 19 incrémente également le compteur d'adresse de mémoire de format de trame 31, de façon qu'il désigne l'élément de trame suivant dans la mémoire de configuration de trame 15, en préparation pour le transfert de multiplet suivant, sauf si l'indicateur EOF est instauré. Si l'indicateur EOF est instauré dans son état "actif",c'est- à-dire un "0", le compteur d'adresse de mémoire de format de trame 31 est restauré à l'adresse du premier élément de trame pour le "transfert de DMA" suivant. La liste de trame, comprenant des adresses séquen- tielles de dispositifs périphériques à huit bits en un nombre allant jusqu'à 64, pouvant tous être sélectionnés de façon aleatoire, peut donc être transférée vers des positions sé- quentielles d'unp mémoire de destination, en utilisant uni- quement le seul canal de DMA disponible du contrôleur de DMA d'hôte, 3D. Le fonctionnement du contrôleur de DMA de périphé- riques est déclenché par un "signal de demande de transac- tion", appelé XREQ, qui peut être sélectionné parmi des si- gnaux présents sur divers conducteurs d'entrée 27, en fonc- tion de la manière selon laquelle le circuit de sélection de source de synchronisation de DMA 40 est programmé initiale- ment par le processeur 3A. Le signal de demande de transaction XREQ peut être un signal externe quelconque synchronisé sur un événement dont le système 1 représenté sur la figure 1 (qui est fonda- mentalement un système de saisie de données) tente de détec- ter l'apparition. A titre d'exemple, le signal XREQ sélection- né peut être une demande d'interruption provenant de l'un quelconque des dispositifs périphériques 49-1,... 49-N, n'im- porte quel autre signal externe, ou un signal provenant du circuit d'horloge de rythme 44 de la figure 2. A titre d'exem- ple, le signal de demande de transaction XREQ pourrait être généré sous l'effet d'un signal de "Fin de Conversion" prove- nant d'un convertisseur analogique-numérique. Le circuit d'horloge de rythme 44 peut être program- mé de façon à fonctionner à une fréquence quelconque de 0,001 Hz jusqu'à 2 MHz, pour déterminer le nombre de transactions par seconde qui peuvent être accomplies pendant un transfert de DMA. En ayant les renseignements précédents à l'esprit, on pourra maintenant décrire commodément l'opération d'éta- blissement de liaison qui a lieu entre le contrôleur de DMA d'hôte 3D et le circuit logique de commande de DMA de périphé- riques, pour accomplir un cycle de DMA. On suppose que le signal de fin de groupe EOG est un "1" logique, comme c'est normalement le cas pour l'ordinateur IBM PC. Sous l'effet d'un signal de demande de transaction XREQ sur le conducteur 42 (figure 2) qui a été sélectionné par le circuit de sélection de source de synchronisation de DMA , le circuit séquenceur de DMA 29 génère le signal DMA REQ sur le conducteur 7 (en supposant que le circuit-de sélection de démarrage 33 a produit le signal STRT sur le conducteur 33A). Le contrôleur de DMA d'hôte 3D réagit à ceci en gé- nérant automatiquement sur le conducteur 8 un signal d'accusé de réception de DMA, appelé DMA ACK. Sous l'effet du signal DMA ACK, le séquenceur de DMA de périphériques 29 génère un signal DMAEN sur le conducteur 23, ce qui déconnecte le bus d'adresse/commande de périphériques 28 par rapport au connec- teur de bus d'adresse 6A de l'ordinateur IBM PC, et valide les sorties du compteur d'adresse de mémoire de format de trame 31, de façon que la mémoire de format de trame à double accès soit adressée par le circuit logique de commande de DMA. Ceci fait apparaître sur le bus 28B les données du premier élément de trame. Sous l'effet du signal DMAEN, le circuit d'amplifi- cateurs-séparateurs à trois états appartenant au sous-ensemble 18 connecte le bus 28B au bus d'adresse/commande de périphéri- ques 28. Le signal de direction présent sur le conducteur 28A valide le circuit émetteur-récepteur de bus de données 13 dans la direction appropriée, en fonction de la direction du trans- fert de DMA désiré. Le signal DMA REQ est désactivé pendant un cycle, ce qui permet au processeur de l'ordinateur hôte 3 de travailler pendant un cycle. Si le signal de fin de trame EOF n'est pas à l'état "actif" sur le conducteur 21 pour l'élément de trame pré-sent, le séquenceur de DMA 29 produit alors immé- diatement un nouveau "1"-logique sur le conducteur DMA REQ 7, il attend un autre signal DMA ACK sur le conducteur 8, et il effectue un transfert des données correspondant à la rubrique suivante, c'est-à-dire l'élément de trame suivant, dans la liste de trame. (On notera que dans l'ordinateur IBM PC, le contrô- leur de DMA interne comporte quatre canaux auxquels des prio- rités relatives sont affectées. Lorsque le contrôleur de DMA de périphériques 2 de la présente invention abandonne la com- mande du bus après un transfert de DMA portant sur un seul multiplet, le contrôleur de DMA interne de l'ordinateur IBM PC doit arbitrer entre le contrôleur de DMA de périphériques et d'autres canaux du contrôleur de DMA interne qui peuvent de- mander des transferts. En plus de ceci, le processeur 3A uti- lisera toujours au moins un cycle d'instruction.) Lorsqu'un "bloc" de données entier comprenant tous les multiplets de toutes les trames à incorporer dans l'opé- ration de DMA demandée a été transféré, le contrôleur de DMA d'hôte 3D genère le signal de compte final T/C sur le conducteur 9. Ceci indique au circuit logique d'arrêt 35 de la figure 2 de générer le signal STOP sur le conducteur 35A, ce qui in- forme le séquenceur de DMA 29 que la séquence de DMA complète a été achevée. A titre d'exemple, si un programme d'utilisateur désirait effectuer une saisie de données à- partir d'un canal analogique (comme un convertisseur analogique-numérique), et à partir du contenu d'un compteur à 16 bits, chacun d'eux étant connecté à la manière- d'un dispositif périphérique entre le bus dedonnées de périphériques 5B et le bus d'adresse de périphériques 28, le programme d'utilisateur écrirait tout d'abord les adresses de ces dispositifs périphériques, en or- dre séquentiel, dans la liste-de trame dans la mémoire de format de trame à double accès 15. Pour cet exemple, les si- gnaux représentés sur la figure 3 illustrent l'opération d'établissement de liaison entre le contrôleur de DMA de pé- riphériques 19 et le contrôleur de DMA hôte ou interne 3D, en supposant que chaque trame ne contient que quatre multiplets. (On notera que chaque trame peut contenir jusqu'à 64 multi- plets dans le système décrit.) La première impulsion 54A du signal de demande de transaction XREQ apparait sur le conduc- teur 42 (après avoir été sélectionnée sur l'un des conducteurs 27 par le circuit.de sélection de source de synchronisation de DMA 40). Ceci commande au séquenceur de DMA 29 de produire la première impulsion 55A du signal de demande de DMA, appelé DMA REQ. Peu de temps après, le signal 1A ACK passe au ni- veau bas, comme l'indique la référence 56A. Le séquenceur de DMA 29 génère ensuite le signal DMAEN sur le conducteur 30, ce qui donne la commande des bus de données et d'adresse de périphériques au circuit logique de commande de DMA de périphériques 19, et valide les sorties du compteur d'adresse 31, ce qui a pour effet de transférer le premier multiplet de la trame dans la direction appropriée, et fait également passer le signal DMA REQ à l'état "inactif". Le contrôleur de DMA d'hôte 3D abandonne la commande du bus interne 4 au processeur 3A pendant la durée du signal DMA ACK, après quoi une nouvelle impulsion DMA REQ, 55B est produite. Une seconde impulsion DMA ACK 56B est produite en- suite, et le second multiplet de la trame est transféré. La même séquence est répétée pour l'ensemble des quatre multi- plets dans la trame définie ci-dessus. Pendant le dernier des quatre cycles de DMA, l'impulsion EOF 57 apparait sur l'accès 7A de la mémoire à double accès 15, pour indiquer que le mul- tiplet courant est le dernier dans la trame à transférer. Si le signal de compte final T/C n'a pas été généré, le signal STOP sur le conducteur 35A n'est pas encore apparu, ce qui fait que le séquenceur de DMA 29 honore l'impulsion de deman- de de transfert suivante 54B sur le conducteur 42, et le fonctionnement précédent se répète jusqu'à ce que le bloc de données de DMA entier demandé à l'origine ait été transféré, et à ce moment, le contrôleur de DMA d'hôte 3D produit le si- gnal T/C, et le signal STOP apparalt et commande au séquen- ceur de DMA 29 de mettre fin à l'opération de DMA. On notera que l'apparition du signal EOF indique seulement la fin du transfert d'une trame, et non d'un bloc de données qui peut comprendre un grand nombre de trames; c'est-à-dire que le signal EOF indique seulement la fin d'un "transfert de DMA" ou du transfert d'une trame. Le nombre de transferts ou de transactions est égal au nombre de multi- plets (le compte de multiplets) qui est programmé dans le contrôleur de DMA d'hôte 3D, multiplié par le nombre de mul- tiplets par trame. Le signal de compte final T/C n'est généré qu'après que tous les multiplets demandés ont été transférés. On pourra peut-être mieux comprendre le fonctionne- ment en se référant au diagramme d'implantation en mémoire de la figure 5. La figure 5 montre un diagramme d'implantation en mémoire dans lequel toutes les adresses accessibles de l'ordinateur hôte 3 sont désignées par le bloc 70, et les adresses de tous les dispositifs connectés au bus de données de périphériques 5B ainsi qu'au bus d'adresse de périphéri- ques28 sont. désignées par le bloc 65. Les positions relatives de quatre des dispositifs périphériques 49 sont représentées dans le diagramme d'implantation en mémoire du bus de péri- phériques, 65, et ces adresses sont désignées par les men- tions multiplet 1, multiplet 2, multiplet 3 et multiplet 4. On notera que les adresses ne sont pas contiguës et ne sont pas séquentielles, c'est-à-dire consécutives. Le but d'une opération de transfert de DMA de type caractéristique serait de transférer rapidement des multi- plets 1-4 de leurs positions non contiguës et non consécuti- ves dans le diagramme d'implantation en mémoire de bus de périphériques 65 vers quatre adresses contiguës, séquentiel- les et consécutives, commençant à l'adresse de base 67, dans le diagramme d'implantation en mémoire de l'ordinateur hôte, 70. La flèche 61 représenterait le transfert du premier mul- tiplet du dispositif périphérique dans lequel il est initia- lement enregistré, vers l'adresse inférieure ou l'adresse de base 67 dans une partie de la mémoire de l'ordinateur hôte qu'on appelle un "tampon de données" 67A. De façon similaire, les flèches 62, 63 et 64 représentent des transferts de don- nées de DMA, portant sur un multiplet, des dispositifs péri- phériques 49 dans lesquels sont enregistrés les multiplets 2, 3 et 4, vers les trois adresses consécutives suivantes dans le tampon de données 67A. Un avantage important du fonctionnement décrit ci- dessus consiste en ce qu'il n'est pas nécessaire que l'ordi- nateur hôte 3 se consacre exclusivement aux transferts de DMA lorsqu'ils ont lieu, et l'ordinateur peut au contraire effectuer d'autres tâches de traitement de données entre des cycles de mémoire de DMA. En d'autres termes, la technique de transfert de DMA décrite ci-dessus est effectuée en "vo- lant" des cycles du processeur 3A. Apres que le contrôleur de DMA d'hôte 3D a été programmé pour effectuer un transfert de DMA, ce dernier se déroule de façon pratiquement "invisi- ble" pour le programme d'utilisateur. Un autre avantage consiste en ce qu'on peut accomplir des transferts de DMA avec des dispositifs périphé- riques 49 qui ne comportent pas les circuits supplémentaires nécessaires pour leur permettre d'accomplir les opérations d'établissement de liaison décrites ci-dessus avec le contrô- leur de DMA d'hôte 3D. Ceci réduit le coût-desdispositifs pé- riphériques et permet d'effectuer des transferts de DMA avec des dispositifs périphériques ordinaires de faible coût. Le fait qui est peut-être le plus important consis- te en ce qu'on peut accomplir des transferts de DMA vers un grand nombre de dispositifs périphériques en n'utilisant qu'un seul canal du contrôleur de DMA d'hôte. L'établissement d'un canal séparé d'un contrôleur de DMA pour chaque disposi- tif périphérique avec lequel un transfert de DMA doit être effectué conduirait habituellement à un coût prohibitif. L'action de l'invention est ainsi de procurer un bloc externe de circuits logiques, ayant une capacité d'éta- blissement de liaison de DMA, qui simule l'action de l'ordi- nateur hôte en ce qui concerne les dispositifs périphériques 49, de façon que ces dispositifs périphériques n'aient pas besoin de disposer de possibilités spéciales pour accomplir des transferts de DMA. Le fonctionnement décrit ci-dessus du système re- présenté sur la figure 1 suppose que le signal de fin de groupe EOG est un "1" logique, au lieu d'un "0" logique. Si le signal EOG est un "1", le circuit logique séquenceur de DMA 29 maintient le signal DMA REQ à l'état haut jusqu'à ce que EOG ou EOF soit à l'état "actif" ou à "0". Ceci empêche que la commande du bus interne 4 ne soit retransférée au pro- cesseur 3A entre des cycles de DMA, et permet d'obtenir une cadence de transfert de données de DMA très supérieure. Cependant, si l'ordinateur hôte 3 est un ordinateur IBM PC, cette technique pourrait être très dangereuse, du fait que l'un des canaux du contrôleur de DMA d'hôte est uti- lisé pour effectuer une régénération automatique de la mémoi- re vive dynamique interne, Si un transfert de DMA continu portant sur un grand bloc est accompli pendant que le signal EOG est maintenu à l'état "1", et si ce transfert exige une durée supérieure à la période de régénération maximale de la mémoire dynamique, il y a un risque considérable de perdre des données enregistrées. Comme le montre la figure 2, le séquenceur de DMA 29 reçoit les signaux XREQ, EOF, EOG, DMA, INIT, STRT, DMA ACK, et STOP et il génère également de façon correspondante les signaux DMA REQ et DMAEN. Le signal XREQ indique au sé- quenceur de DMA 29 que le transfert d'une trame entière est nécessaire, c'est-à-dire qu'il lui indique le moment auquel il doit commencer une opération de "transfert de DMA". Le si- gnal STRT informe le séquenceur de DMA 29 de l'instant précis auquel il doit commencer à "honorer" le signal XREQ, qui est de façon caractéristique un signal périodique, en particulier s'il est généré par le circuit d'horloge de rythme 44. (Le signal STRT peut être généré d'un certain nombre de manières, en fonction de celui des cinq modes de fonctionnement préci- tés qui est sélectionné. Le signal STOP peut également être généré d'un certain nombre de manières, par exemple par un ordre de l'ordinateur ou par l'apparition du signal de compte final T/C.) L'apparition du signal EOF, indiquant que le sé- quenceur de DMA 29 a effectué un transfert d'une trame en- tière, signifie que le séquenceur de DMA ne doit pas provo- quer l'apparition de cycles de mémoire de DMA supplémentaires jusqu'à la réception d'un autre signal XREQ. Le séquenceur de DMA 29 peut être réalisé d'un certain nombre de manières. Dans le mode de réalisation actuellement préféré de l'inven- tion, le séquenceur de DMA 29 est un automate d'états finis qui est réalisé au moyen d'un circuit intégré à réseau logi- que programmé (RLP), qui peut être un circuit intégré PAL16R4 fabriqué par National Semiconductor et d'autres fabricants. Le signal DMA INIT est émis par le circuit logique de commande/sélection 45 et il initialise le séquenceur de DMA 29 et restaure le compteur d'adresse de mémoire de format de trame 31. Le signal DMA INIT est émis sous l'effet d'un ordre de l'ordinateur. L'ordinateur IBM PC programme le cir- cuit logique de commande/sélection 45 de façon que ce dernier génère le signal DMA INIT. Le circuit de sélection de source de synchronisa- tion 40 fonctionne sous la dépendance de l'un des signaux de commande 46 provenant du circuit logique de commande/sélec- tion 45, pour faire en sorte que l'un des huit signaux exter- nes 27 soit sélectionné et utilisé en tant que signal XREQ sur le conducteur 42. On rappelle cependant que le séquenceur de DMA 29 ignore les signaux XREQ jusqu'à ce que le circuit logique de démarrage 33 ait produit un signal STRT sur le conducteur 33A. Le circuit de sélection de source de déclen- chement 41 détermine celui des huit signaux 27 qui est utili- sé en tant que signal de déclenchement, pour déterminer de façon précise l'instant du début du fonctionnement du séquen- ceur de DMA 29 (après la réception d'un signal XREQ). Le compteur d'événements source 38 compte le nombre d'impulsions XREQ et il génère un signal de sortie sur le conducteur 34 après l'apparition d'un nombre prédéterminé d'impulsions XREQ * (ce nombre est programmé dans le compteur d'événements sour- ce). On utilise le circuit pour déterminer de façon précise le moment auquel le signal de démarrage STRT ou le signal STOP est produit, selon le mode qui est sélectionné, et donc le moment auquel le séquenceur de DMA 29 doit commencer ou cesser "d'honorer" des signaux de demande de transaction XREQ. La sortie du compteur d'événements source 38 atta- que également le circuit logique d'arrêt 35 par l'intermé- diaire du conducteur 36. Le compteur d'événements source 38 peut donc être programmé de façon à commander le démarrage et l'arrêt d'un processus de DMA, si un certain mode de fonc- tionnement est sélectionné. Ceci peut être très utile dans un système de saisie de données dans lequel on désire contrôler une série de signaux dans le but de collecter une suite conti- nue de données pendant une durée prédéterminée avant l'appari- tion d'un "signal d'événement" non synchrone, et pendant unie durée prédéterminée après l'apparition de ce signal. On peut programmer le contrôleur de DMA d'hôte 3D de façon qu'il em- plisse sa mémoire tampon 67A (figure 5), démarre à l'adresse de base mentionnée ci-dessus et collecte ou transfère un nom- bre prédéterminé de multiplets, et répète ensuite le proces- sus. En utilisant le mode de fonctionnement "démarrage immé- diat, arrêt en cas d'événement après retard" (qu'on décrira ultérieurement), la mémoire tampon précitée est continuelle- ment emplie d'une manière circulaire jusqu'à ce que l'événe- ment intéressant qui est contrôlé se produise. Lorsqu'il se produit, on collecte un nombre N d'échantillons ou de multi- plets supplémentaires. On arrête ensuite la saisie des don- nées, et les données contenues dans la mémoire tampon compren- nent alors N échantillons qui sont apparus après l'apparition de l'événement intéressant ou de déclenchement, et un nombre d'échantillons égal à la longueur de la mémoire tampon moins N, qui se sont produits avant 1 'événement de "déclenchement". Conformément à l'invention, le circuit logique de démarrage et le circuit logique d'arrêt, portant respective- ment les références 33 et 35, sont réalisés dans le même ré- seau logique programmé que le séquenceur de DMA 29. La table de vérité qui est programmée dans le réseau logique programmé pour mettre en oeuvre les fonctions logiques de démarrage et d'arrêt est donnée par le Tableau 3 en annexe. L'événement de déclenchement est l'événement qui fait démarrer ou arrête précisément la série complète de transactions de DMA qui constituent une "passe" de saisie de données ou un "transfert de DMA". On trouvera ciaprès une liste de modes de fonctionnement, c'est-à-dire de différentes options dont on dispose pour générer les signaux de démarrage STRT et d'arrêt STOP. 1) Mode O: "Démarrage sous l'effet d'un événement, après retard, arrêt sous l'effet du signal de compte final T/C". Le retard mentionné est le réglage pré-programmé du compteur d'événements source 38. Ce compteur doit être pré- programmé pour produire le retard approprié, et validé par le signal de déclenchement qui est sélectionné par le circuit de sélection de source de déclenchement 41. Ce mode est utile pour prendre un "instantané" fixe de données, avec déclenche- ment par un certain événement présentant un intérêt. 2) Mode 1: "Démarrage sous l'effet d'un événement, après retard, arrêt sur ordre". Dans ce mode, le transfert commence à l'apparition d'un événement intéressant et il se poursuit jusqu'à ce que l'ordinateur émette un ordre d'arrêt. Ce sont les données les plus récentes qui restent dans la mé- moire de l'ordinateur hôte. 3) Mode 2: "Démarrage sur ordre, arrêt sous l'effet du signal de compte final T/C". Un tampon de données de taille fixe est transféré, mais le démarrage du transfert est déter- miné par un ordre de logiciel au lieu d'être déterminé par un événement. 4) Mode 3: "Démarrage sur ordre, arrêt sous l'effet d'un événement après retard". On utilise ce mode pour intro- duire dans le tampon de données une information avant déclen- chement et une information après déclenchement. Le tampon de données est un tampon circulaire en mémoire, du fait de l'or- dre d'auto-initialisation. Si le retard programmé est infé- rieur à la taille du tampon, les données qui restent dans la mémoire après la séquence consistent en un mélange d'informa- tion avant déclenchement et d'information après déclenchement. ) Mode 4: "Démarrage sur ordre, arrêt sur ordre". Des ordres de logiciel déclenchent et arrêtent le transfert de DMA. Les entrées multiples du circuit de sélection de dé- marrage 33 et du circuit de sélection d'arrêt 35 correspondent aux Modes O à 4 décrits ci-dessus. En fonction de celui des cinq modes qui est programmé dans le circuit logique de com- mande 45, l'entrée correspondante du circuit de sélection de démarrage 33 et du circuit de sélection d'arrêt 35 sera sé- lectionnée et connectée à divers conducteurs parmi les con- ducteurs respectifs 33A et 35A. On présentera ensuite un exemple détaillé de la manière selon laquelle le processeur hôte 3A prépare ou pro- gramme le contrôleur de DMA d'hôte 3D pour effectuer un transfert de DMA. Dans l'exemple considéré, décrit en rela- tion avec l'organigramme de la figure 6, le contrôleur de DMA d'hôte 3D est désigné par PCDMA, et le contrôleur de DMA de périphériques est désigné par IDMA. Dans cet exemple, 500 trames de 4 multiplets chacune doivent être transférées dans une opération de DMA vers la mémoire de l'ordinateur hôte, à partir de quatre adresses de bus de périphériques. On utilise les quatre adresses hexadécimales suivantes: $101, $209, $301 et $302. (Un signe "dollar" devant une adresse indique un codage hexadécimal.) Le transfert de DMA est préparé ou programmé de façon à commencer sous l'effet d'un événement externe, avec un retard de deux demandes de transaction pro- grammé dans le compteur d'événements source 38. Le transfert de DMA est programmé de façon à s'arrêter à l'apparition du signal de compte final T/C. Les caractéristiques temporelles des transactions sont déterminées par le circuit d'horloge de rythme 44. En considérant la figure 6, on note que la program- mation du contrôleur de DMA d'hôte commence à l'endroit mar- qué 100. A la case 101, une adresse de destination 54000 est chargée dans le contrôleur de DMA d'hôte 3D. Ensuite, à la case 102, le compte de multiplets est calculé en multipliant 500 trames par quatre multiplets par trame, ce qui indique que 2000 multiplets doivent être transférés. A la case 103, le compte de multiplets est placé dans le registre de compte de multiplets du contrôleur de OMA d'hôte 3D. Ensuite, le mode de transfert est enregistré dans le contrôleur de DMA d'hôte. Dans l'exemple présent, ce mode signifie qu'un signal DMA REQ fait apparaître un signal DMA ACK. Avant chaque cycle de DMA, le contrôleur de DMA de périphériques doit effectuer un arbitrage avec d'autres périphériques qui peuvent être connectés au bus 4 de l'ordinateur IBM PC. Le mode de trans- fert indique également qu'il s'agit d'un "transfert de lectu- re", ce qui signifie que le signal R/W est instauré pour- in- diquer la lecture de données dans les dispositifs périphéri- ques et l'écriture de ces données dans la mémoire de l'ordi- nateur hôte 3. A la case 105 de la figure 6, le processeur 3A écrit les multiplets 1 et 2 de la liste de trame dans la mé- moire de format de trame à deux accès, 15. En d'autres termes, l'adresse du premier multiplet à transférer, c'est-a-dire $101, est écrite dans les positions $80 et $81 de la mémoire de format de trame, en supposant que dans le mode de réalisa- tion de l'invention qui est décrit, le format de trame est établi aux positions $80 à $FF du bus d'adresse 6A. Ensuite, comme l'indique la case 106, l'adresse de périphérique $209 est écrite aux adresses $82 et $83 de la mémoire de format de trame. A la case 107, les multiplets 5 et 6, correspondant à $301, sont écrits aux adresses $84 et $85. A la case 108, l'adresse $302 est écrite aux adresses $86 et $87. A chacune des cases 105-108, le bit EOG est fixé à "1". A chacune des cases 105-107, le bit EOF est fixé à "0". A la case 108, le bit EOF est fixé à "1", pour indiquer que la trame complète a été transférée. A la case 109, l'ordinateur hôte fixe la fréquence de l'horloge de rythme. A la case 110, l'ordinateur hôte écrit un multiplet de mode de DMA dans le circuit logique de comman- de/sélection 45 de la figure 2. Dans l'exemple présent, le "Mode 0" précité est celui qui est sélectionné. A la case 112, le compteur d'événementssource 38 est programmé de façon à re- tarder la génération du signal de démarrage d'une durée égale à deux signaux XREQ, pour générer le signal STRT. A la case 113, le circuit de sélection de source de synchronisation de DMA 40 est programmé de façon à sélectionner le signal d'hor- loge de rythme en tant que "source" du signal XREQ, ou signal de demande de transfert. Ensuite, à la case 114, un signal de déclenchement externe, qui peut être l'un des signaux 27 autres que le si- gnal de sortie d'horloge de rythme 44, est sélectionné pour constituer le signal de source de déclenchement de DMA. En- suite, à la case 115, le bit IDMA INIT dans le circuit logi- que de commande/sélection 45 est programmé de façon que le séquenceur de DMA 29, le circuit d'adresse de mémoire de for- mat de trame 31 et d'autres circuits soient correctement ini- tialisés. Ensuite, à la case 116, le processeur 3A valide le contrôleur de DMA d'hôte 3D en écrivant un mot dans un regis- tre de commande de DMA de ce contrôleur. Ensuite, l'horloge de rythme est validée, ce qui correspond à la case 116, de façon qu'elle commence à émettre ses impulsions à la fréquence programmée. A la case 118, le processeur 3A valide le compteur d'événements source 38 pour qu'il commence à compter. A la case 119, le processeur 3A désactive le signal DMA INIT, ce qui valide le contrôleur de DMA de périphériques 2 pour commencer le transfert de DMA désiré. Lorsque l'événement externe se produit, le compteur d'événements source 38 compte deux impulsions d'horloge de rythme supplémentaires (qui sont sélectionnées pour consti- tuer les signaux XREQ), et il commence ensuite à déclencher les signaux DMA REQ. Ii continue à fonctionner de cette ma- nière jusqu'à ce que la totalité des 2000 multiplets aient été transférés, sans action supplémentaire de l'ordinateur hôte. On trouvera en Annexe un programme destiné à accom- plir les opérations indiquées dans l'organigramme de la figu- re 6. On va maintenant décrire l'automate d'états finis qu'on utilise pour réaliser le séquenceur de DMA 29 de la fi- gure 2. La figure 7 montre un diagramme d'états caractéristi- que. L'automate d'états finis de la figure 7 définit cinq états, à savoir l'Etat 0, l'Etat 1, l'Etat 2, l'Etat 3 et l'Etat 4. Le Tableau 1 en annexe définit chacun des états et il indique les niveaux d'entrée et les niveaux de sortie du séquenceur de DMA 29 pour chaque. état. Dans le Tableau 1, le niveau logique "X" indique la condition "indifférent". L'Etat O est défini comme l'état de "repos" dans lequel le séquenceur de DMA attend un signal XREQ ou signal de demande de transac- tion, pour passer à l'état actif. L'information présentée dans le Tableau 1 définit en fait les états "1" et "0" des signaux EOF, EOG, DMA ACK, et DMA REQ. Le signal de fin de trame EOF dans le Tableau 1 est "inactif" lorsque EOF = "1". EOG = "1" définit l'état "inactif". DMA ACK = "1" définit l'état inactif de ce signal. Le signal DMA REQ est égal à "0" dans son état inactif. En d'autres termes, à l'état de repos, le niveau de chacun des signaux d'entrée et de sortie correspond à l'état inactif de ces signaux d'entrée et de sortie. L'Etat 1 indique que le signal XREQ est passé à l'état actif. Ceci fait passer le signal DMA REQ de "0" à "1. Le signal DMAEN reste inactif, du fait que le séquenceur de DMA attend un accusé de réception provenant de l'ordinateur hôte. Dans l'Etat 2, l'accusé de réception a été reçu, le signal DMA ACK passe à l'état actif, c'est-à-dire à "O" et le signal DMAEN passe à l'état actif, de "1" à "O"', ce qui fait que le contrôleur de DMA de périphériques 2 commande mainte- nant le bus de données de périphériques et le bus d'adresse de périphériques. Dans l'Etat 2, les signaux EOG et EOF res- tent à l'état inactif. L'Etat 3, qui est similaire à'l'Etat 2 à l'exception du fait que EOG passe à l'état actif, de "1" à "0", fait retourner le signal DMA REQ à son niveau "inactif". DMAEN reste "actif" dans l'Etat 3. tDans l'Etat 4, le signal DMA ACK est actif. EOF est devenu actif et DMA REQ est "inactif", et le signal DMAEN est "actif". L'Etat 4 définit la condition de fin de trame. Dans le diagramme d'états de la figure 4, chacun des états ci-dessus est représenté par un cercle contenant le numéro de l'état, et les flèches entre les états représen- tent les événements qui font passer le séquenceur de DMA de chaque état à un autre. Les expressions logiques- indiquant ces événements sont écrites à côté des flèches d'événements correspondantes. La table de vérité qui figure dans le Tableau 2 en annexe représente fondamentalement la même information que le diagramme d'états de la figure 7. L'homme de l'art pourra aisément établir des équations logiques à partir de la table de vérité ou du diagramme d'états, et on ne présentera donc pas ici les détails correspondants. Le Tableau 3 définit la table de vérité pour les circuits logiques de démarrage et d'arrêt désignés par les références 33 et 35 sur la figure 2. L'homme de l'art pourra aisément utiliser l'information fournie par les Tableaux 2 et 3 pour programmer un réseau logique programmable de façon à réaliser le séquenceur de DMA et les circuits logiques de démarrage et d'arrêt, ou bien il pourra aisément établir les équations logiques pour les fonctions de ces circuits, et utiliser évidemment ces équations logiques pour concevoir un circuit logique approprié. L'émetteur-récepteur de bus de données 13 repré- senté sur la figure 3 peut être un circuit intégré 74LS245, qu'on peut se procurer aisément. Le circuit décodeur d'adres- se primaire 10 de la figure 2 et les circuits associés sont représentés de façon plus détaillée sur la figure 4A. Le cir- cuit décodeur d'adresse primaire 10 comprend essentiellement un commutateur 10A, à dix positions et en boitier à double rangée de connexions (DIP), un comparateur numérique lOB, qui peut être un circuit intégré 74LS85, et un comparateur numé- rique 10C qui peut être un circuit intégré 74ALS520. Les circuits représentés dans le sous-ensemble 14 de la figure 1 sont représentés en détail sur la figure 4B. Les amplificateurs-séparateurs à trois états sont désignés par les références 14A et 14B, et peuvent être des circuits inté- grés amplificateurs-séparateurs à trois états du type 74LS244. La figure 4C montre les amplificateurs-séparateurs à trois états faisant partie du sous-ensemble 18 de la figure 1. Ces amplificateurs-séparateurs sont réalisés au moyen de deux circuits intégrés 74LS244. La figure 4D montre les connexions avec le circuit intégré 29A, consistant en un réseau logique programmable, à l'aide duquel on réalise le séquenceur de DMA 29 et le circuit logique de démarrage 33 et le circuit logique d'arrêt 35. On utilise un circuit intégré du type PAL16R4. La figure 4E est un schéma synoptique détaillé de la mémoire de format de trame à double accès 15. Les référen- ces de circuits intégrés disponibles dans le commerce sont indiquées dans les divers blocs. Le signal MT est un signal de lecture/écriture. Le signal LISTEN (validation de liste) est généré par le circuit logique décodeur secondaire 10 (fi- gure 1), pour indiquerque le processeur hôte 3 est en cours d'accès à la mémoire de format de trame 15.Le signal HOST (figure 4E) indique qu'un transfert de programme vers les dispositifs périphériques 49 est en cours. La figure 4F est un schéma synoptique détaillé du circuit logique de commande 45 de la figure 1. Le circuit lo- gique de commande 45 établit la configuration du contrôleur de DMA. Le sous-ensemble 45A sur la figure 4F contient des bascules au moyen desquelles le processeur 3A peut lire l'état du contrôleur de DMA de périphériques 2, de façon à déterminer si un transfert de DMA est en cours, et si une er- reur a eu lieu dans l'opération de DMA. Les sous-ensembles 38, 44 contiennent un circuit temporisateur/compteur qui rem- plit deux fonctions. Plus précisément, le circuit contient trois compteurs dont deux sont utilisés pour générer le signal d'horloge de rythme qui est appliqué au conducteur connecté au circuit d'horloge de rythme 44 sur la figure 2. Le troisième compteur est utilisé pour générerle retard que le circuit compteur d'événements source 38 (figure 2) produit sur le conducteur 37, et qui est appliqué au circuit de sélection de démarrage 33 et au circuit de sélection d'arrêt 35. Le circuit 74LS374 contenu dans le sous-ensemble 80 de la figure 4F est utilisé en tant que "registre de commande de mode"'. Ses sorties déterminent le mode, à s-vo-ir le mode 0, le mode 1, le mode 2, le mode 3 ou le mode 4, qui a été programmé dans le circuit logique de commande 45 de la figure 2. Ce circuit valide également l'horloge de rythme 44, ainsi que le compteur d'événements source 38. Le circuit 74LS153 contenu dans le sous-ensemble 81 de la figure 4F est un cir- cuit multiplexeur, et il remplit les fonctions consistant à sélectionner la source des signaux de départ et d'arrêt que produisent les sousensembles 33 et 35 sur la figure 2. Le circuit de sélection de source de synchronisation et le cir- cuit de sélection de source de déclenchement sont contenus dans les sousensembles 40, 41 de la figure 4F. Ces circuits comprennent un multiplexeur qui sélectionne celle des huit lignes de sortie des huit bascules qui doit être dirigée vers la porte ET 39 et la bascule 43. De façon caractéristi- que, le processeur 3A écrit quatre bits parmi les huit bascu- les du sous-ensemble 82, pour déterminer le canal de sélec- tion de déclenchement, et il écrit les quatre autres bits pour sélectionner le canal d'événement source. Le circuit de sélection de source de synchronisation de DMA 40 et le cir- cuit de sélection de source de déclenchement 41 sont réalisés au moyen d'une puce de réseau logique programmable PAL16H2, comme l'indique la figure 4F. Le Tableau 4 en annexe montre la table de vérité qui est programmée dans cette puce. Dans ce tableau, An, B et C sont les signaux d'entrée de sélec- tion de canal de multiplexeur et STBn est un signal d'entrée de validation, provenant tous du circuit logique de commande 45. Dans le Tableau 4, Yn représente l'un ou l'autre des deux signaux de sortie du réseau logique programmable, c'est-à-dire soit le signal de sortie de source de synchroni- sation, soit le signal de sortie de source de déclenchement. Les signaux d'entrée sont constitués par un signal d'échan- tillonnage STBn et par des signaux An, Bn et Cn, représentant respectivement un signal d'entrée de validation et trois si- gnaux d'entrée d'adresse. La puce de réseau logique program- mable contient deux tables de vérité correspondant au Tableau 4, l'une pour le circuit de sélection de source de synchroni- sation de DMA 40 et l'autre pour le circuit de sélection de source de déclenchement 41. Pour l'une des tables de vérité, Yn est le signal XREQ, et pour l'autre table de vérité, Yn est le signal d'entree du circuit de bascule 43. Dans le mode de réalisation de l'invention qui est décrit, le circuit du contrôleur de DMA de périphériques 2 de la figure i est incorporé sur une carte de circuit imprimé qui peut être enfichée dans un logement vide dans l'ordinateur IBM PC. En réalité, cette carte de circuit imprimé a une con- figuration telle que cinq cartes de circuit imprimé du même type puissent être enfichées dans cinq logements vacants dans l'ordinateur IBM PC et connectées ensemble en "guirlande", permettant ainsi d'effectuer une surveillance et des opéra- tions de lecture ou d'écriture portant au maximum sur 192 dispositifs périphériques tel que le dispositif 49, au moyen de transferts de DMA. Lorsque plusieurs contrôleurs de DMA de périphériques sont enfiches dans l'ordinateur IBM PC, l'un des trois contrôleurs de DMA de périphériques 2 fonctionne en "maître" et l'autre ou les deux autres fonctionnent en "escla- ves" qui sont connectés en guirlande au contrôleur maître. Le conducteur DMAEN 23 et le conducteur DMA INIT 24 du maître sont respectivement connectés aux conducteurs 26 et 25 du "premier" élément "esclave" connecté en guirlande, c'est-à- dire celui qui est le plus proche du "maître". Les conducteurs 23 et 24 du premier "esclave" connecté en guirlande sont en- suite connectés respectivement aux conducteurs 26 et 25 du second élément "esclave" connecté en guirlande. Les cavaliers désignés par les références 30 sur la figure 2 peuvent être commutés de façon à connecter le conducteur RDMAEN 26, au lieu du conducteur DMAEN 23, au sous-ensemble séquenceur de DMA 29A, et pour connecter le conducteur RDMA INIT 25, au lieu du conducteur DMA INIT 24, au circuit logique de commande , si le contrôleur de DMA de périphériques 2 doit être un "esclave" au lieu d'un "maitre". Dans le mode de réalisation de l'invention qui est décrit, le compteur d'adresse de mémoire de format de trame 31 est réalisé au moyen d'un circuit 74LS590, représenté sur la figure 4E. Le compteur d'événements source 38 est réalisé au moyen d'un circuit Intel 8254, représenté sur la figure 4F. Le circuit de sélection de source de synchronisation de DMA et le circuit de sélection de source de déclenchement 41 sont également indiqués sur la figure 4F, et sont respective- ment réalisés au moyen d'un réseau logique programmable PAL16H2 et d'un circuit à huit bascules 74L5374. Le mode de réalisation de l'invention décrit ci-des- sus apporte une solution au problème de longue date consistant à permettre la réalisation économique d'opérations de DMA dans des systèmes de saisie de données, en permettant à un seul canal de contrôleur 'de DMA d'un ordinateur hôte d'accéder effectivement à un très grand nombre de dispositifs périphéri- ques et d'accomplir des transferts de DMA portant sur de gran- des quantités de données, à partir de positions d'adresses de périphériques non séquentielles, vers des positions consécuti- ves contiguës dans une mémoire d'ordinateur hôte, ou inverse- ment. On réalise ceci sans qu'il soit nécessaire de consacrer entièrement l'ordinateur hôte à la fonction de DMA ou de sai- sie de données. Bien qu'on ait décrit l'invention en considérant l'un de ses modes de réalisation, l'homme de l'art pourra apporter diverses modifications au mode de réalisation décrit, sans sortir du cadre de l'invention. Par exemple, on pourrait aisément modifier les circuits décrits ci-dessus pour les faire fonctionner en association avec des bus de type VME BUS, ou MULTI BUS, des bus utilisés dans des ordinateurs fabriqués par Digital Equipment Corporation, ou le bus VERSA BUS de Motorola, et plus généralement en association avec n'importe quel sous-système d'entrée/sortie comportant des positions d'adresse associées à celles de la mémoire de l'ordinateur hôte. % 2594242 A N N EE X E I TABLEAU 1 Automate d'états finis de séquenceur de DMA ETAT O REPOS, ATTENTE DE XREQ Signaux d'entrée XREQ = 0 EOF = 1 EOG = 1 DMA ACK = 1 Signaux de sortie DMA REQ = O DMAEN = 1 ETAT 1 I DEMANDE DE TRAME ACTIVE, ATTENTE DE DMA AC Signaux XREQ EOF EOG DMA ACK d'entrée = I, Signaux de sortie DMA REQ = 1 DMAEN = 1 = 1 = 1 = 1 ETAT 2 WMA-ACK RECU, EOG, EOF INACTIFS Signaux d'entrée XREQ = X EOF = 1 EOG = 1 DMA ACK = O *Signaux de sortie DMA REQ = 1 DMAEN = O TABLEAU 1 (Suite} ETAT 3 DMA-ACK RECU, iî ACTIF Signaux dentrée XREQ = X EOF = 1 EOG = O Signaux de sortie DMA REQ = O DREQ = O DMA ACK O 0 ETAT 4 DMA ACK RECU, rW ACTIF Signaux d'entrée XREQ = X EOF = 0 EOG = X DMA ACK = O Signaux de sortie DMA REQ = O DMAEN = O TABLEAU 2 Table de vérité des signaux intervenant dans la fonction de DMA DMA INT DMA ACK XREQ EOF EOG SN SN+1 0 X X X X X 0 1 X O X X 0 0 1 X I X X 0 ' 1 1 x I X X 1 i i i x xii I i 0 X X I 1 1 0 X 1 1 i 2 i 0 X i 0 1 3 1 0 X O X 1 4 i 0 X i 0 2 3 i 0 X O X 2 4 i 0 X 1 1 2 2 1 1 X X X 2 1 1 0 X 1 0 3 3 1 0 X O X 3 4 i 1 X X X 3 1 1 0 X O X 4 4 1 1 X X X 4 0 1 1 1 X X 4 4 o t t i i i9 ú 0 0IIIII o o t i t t i I I 0 1 1 I T I 0 0 1 I T I 0 1 1 0 I T I 0 0 1 0 T I T 0ú I I0 0 I I I 0 0 0 1 I T 0 1 1 1 0 T I 00 0 I C I I 0 I I 0 0 I 0 0 I 0 0 I I 0 I 0 0 0 I I 0 0 0 0 0 I I OZ 0 0 1 1 1 0 T 0 0 1,1 1 0 I I0 II0I lO00 II0 I 0 1 I01 0 1 S 0 0 I01 0 1 0I1 0 0 1 0 I I0 0 0 I 0I 0 I I 0 0I 00 I I 0 0 1 01 0 I 0 I0 0 I 0 0 0 1 0 0 1 0 I I 0 0 0I 0 0 I 0 0 0 1 0 I 0 0 0 0 I 0 0 0 0 0 0 I I+U 1903 liS diS OW3iUiS GW3dlS ui903 IlINI vwa ú tV31HVi lbt TABLEAU 3 (Suite) STRT = signal de démarrage STP = STOP STRTCMD = ORDRE STRT (démarrage) STPCMD = ORDRE STOP (arrêt) REQGTn = Un signal de porte de demande TABLEAU 4 STBn An Bn Cn Yn O O O O lIRQO O O O 1 2IRQO O O 1 O 3IRQO O O 1 1 1SYNC OUT O O O 0 2SYNC OUT O 1- O 1 3SYNC OUT O 1 1 O EXT IN O 1 1 1 RYTHME 1 X X X O ANNEXE II DMAPAT.PAS 6 février 1986 11:06 page 01 tBrevet de Contrôleur de DMA de Périphériques pour Systèmes de Saisie de Données Exemple de programme illustrant la préparation et l'exécution d'une opération de transfert de DMA.. Date: 6 février 1986 Langage: TURBO PASCAL Description: Transfère 500 trames de 4 multiplets chacune (adresses de dispositifs périphériques: $101, $209, $301, et $302). Les transferts sont déclenchés par EXTIN; les transferts com- mencent après un retard de 2 périodes d'horloge de rythme et les transferts suivants sont rythmés par l'horloge de rythme. Les transferts s'arrêtent lorsqu'un compte final de 2000 mul- tiplets (500 trames* 4 multiplets) est atteint. Les données sont transférées vers des multiplets consécutifs de mémoire d'ordinateur commençant à une adresse $4000. ) Programme DMAExemple; Const t ******** Constantes Spécifiques de l'Ordinateur ********} PCDMABase = $02; t contrôleur de DMA du PC - Base Décalage 3 PCDMACount = $03; contrôleur de DMA du PC - Compte Décalage PCDMAMode = $0B; contrôleur de DMA du PC - Mode Décalage 3 DMAPAT.PAS A.******* 6 février 1986 11:06 Page 02 Constantes Spécifiques des Périphériques *******} CardSeg PacDelCtrl = eCO00 = $43 PacCntlMode2 PacCnt2Mode2 DelyCntModeO = $34 = $74 = ZOB {Adresse de Segment de t Rythme et compteur - - Commande {Multiplet de Commande, Compte 1, Mode 2 Multiplet de Commande, Compte 2, Mode 2 Multiplet de Commande, de retard, Mode 0 uarte j -e retard Décalagel Rythme, } Rythme, C Compteur PacerCountl PacerCount2 DelayCount = $40 = $41 = $42 Rythme {Rythme ICompteur - Compte - Compte 1 - Compte 2 de retard Décalage3 Décalage} Décalagel FrameMem = 580; IMémoire de trame - Démarrage CardDMAMode = $02; [Contrôleur de Carte de Mode CardDMASrcTrg = $03; {Contrôleur de Carte de - Source/déclenchement Décalage} DMA Décalage3 DMA Décalage} DMAPAT.PAS 6 février 1986 11:06 Page 03 {**** Constantes Spécifiques de la Saisie ************** XferMode = $45; jUnique, Pas d'auto-initialisation, Canal de DMA 1, Transfert d'écri- ture BufferBase TotalFrames BytesPerFrame FrmEll FrmE12 FrmE13 FrmE14 PacCntl PacCnt2 DlyCnt = $4000; Adresse de Base du Tampon de Mémoi- re de Données = 500; { Nombre Total de Trames de Données à Prélever = 4,; { Nombre de Multiplets dans chaque Trame de Données $ 1DO1; { Elément de Trame 1 - Adresse de Lecture $101 & EOG $0E09; {Elément de Trame 2 Adresse de Lecture 5209 & EOG = $F01; {Elément dé Trame 3 - Adresse de Lecture $301 & EOG = $0702; [Elément de Trame 4 - Adresse de Lecture $302 & EOG & EOF = 100 = 2 : 2 Valeur de Compteur de Rythme 1 {Valeur de Compteur de Rythme 2 [Valeur de Compteur de Retard } } DMAInitCode DMAEnableCode DMASrcTrgCode = ZO; { Code d'Initialisation de DMA = $38; {Code de Validation deTransfert de DMA = $67; jCode de Source/Déclenchement de DMA Rythme/EXTIN DMAPAT.PAS 6 février 1986 11:06 Page 04 Var FrameByteCounter, ByteCount: Integer; t. WriteFrameElement -- écrit le contenu d'un élément de trame.} Procedure WriteFrameElement(Element: Integer); Begin t WriteFrameElementl Mem[CardSeg:FrameByteCounterl: Lo(Element); FrameByteCounter: = FrameByteCounter + 1; Mem[CardSeg:FrameByteCounter]: = Hi(Element); FrameByteCounter: = FrameByteCounter + 1 End; { WriteFrameElement} Begin { DMAExemple} {**** Figure 6, Case 101 **** PortCPCDMABase]: = Lo(BufferBase); Port[PCDMABase]: = Hi(BufferBase); {**** Figure 6, Case 1"2 ****} ByteCount: = TotalFrames *BytesPerFrame; t **** Figure 6, Case 103 ****} Port[PCDMACount]: = Lo(ByteCount); Port[PCDMACountl: = Hi(ByteCount); DMAPAT.PAS 6 février 1986 11:06 Page 05 **** Figure 6, Case 104 **** Port[PCDMAMode] = XferMode; **** Figure 6, Case 105 ****5 FrameByteCounter: FrameMem; WriteFrameElement(FrmEll) t **** Figure 6, Case 106 ****} WriteFrameElement(FrmE12) **** Figure 6, Case 107 ****} WriteFrameElement(FrmE13); ( **** Figure 6, Case 108 WriteFrameElement(FrmE14) * ** *} **** Figure 6, Case 109 Mem[CardSeg:PacDelCtr.1: Mem[CardSeg:PacDeICtrl]: Mem[CardSeg:PacerCountl]: Mem [CardSeg:PacerCountU: Mem(CardSeg:PacerCount2]: Mem [CardSeg:PacerCount2j: {**** Figure 6, Case 111 Mem[CardSeg:PacDelCtrll: Mem [CardSeci:DelavCount]: Mem CardSeg:DelayCount]: **** = PacCntlMode2 = PacCnt2Mode2 =,Lo(PacCntl) = Hi(PacCntl) = Lo(PacCnt2) = Hi(PacCnt2) ****3 = DelyCntMode0; = Lo(DlyCnt) ; = Hi(DlyCnt); DMAPAT.PAS 6 février 1986 11:06 Page 06 t **** Figure 6, Case 110 ****} MemtCardSeg:CardDMAModel: = DMAInitCode; { **** Figure 6, Cases 112 et 113 ****3 Mem[CardSeg:CardDMASrcTrgl: = DMASrcTrgCode; t**** Figure 6, Cases 116, 117 et 118 ****} Mem[CardSeg:CardDMAMode: = DMAENableCode; End. DMAExemple}. REVENDICATIONS 1. Procédé pour effectuer un transfert d'accès di- rect en mémoire (DMA) entre une mémoire tampon (67A) et un ensemble de dispositifs périphériques (49-1,... 49-N) ayant des adresses non consécutives, caractérisé en ce qu'il com- prend les opérations suivantes: (a) on établit une mémoire à double accès (15) ayant un premier accès d'adresse (16B) et un premier accès de données correspondant (16A), et un second accès d'adresse (17B) et un second accès de données corres- pondant (17A); (b) on fait fonctionner un processeur (3A) pour écrire un nombre de multiplets et une première adresse de la mémoire tampon (67A) dans un contrôleur de DMA (3D); (c) on écrit les adresses non consécutives de dispositifs pé- riphériques dans des positions consécutives de la mémoire à double accès (15), en commençant par une première position, au moyen du premier accès d'adresse (16B) et du premier accès de données (16A); (d) on produit un signal de demande (DMA REQ) et on l'émet vers le contrôleur de DMA (3D); (e) on fait fonctionner le contrôleur de DMA (3D) sous la dépendance du signal de demande (DMA REQ), de façon qu'il produise un signal d'accusé de réception (DMA ACK) lorsqu'un bus de don- nées est disponible; (f) on produit un signal de validation (DMAEN) sous la dépendance du signal d'accusé de réception, et on applique une adresse de la première position au second accès d'adresse (17B) sous la dépendance du signal de valida- tion (DMAEN), et on provoque l'émission de l'adresse de pé- riphérique enregistrée à cette position vers des entrées d'adresse du dispositif périphérique, par l'intermédiaire du second accès de données (17A); (g) on fait fonctionner le contrôleur de DMA (3D) pour émettre la première adresse de mémoire tampon vers la mémoire tampon (67A), et pour effec- tuer le transfert d'un premier multiplet de données entre le dispositif périphérique adressé et la position adressée de la mémoire tampon (67A); et (h) on répète les opérations (e) à (g) pour la position consécutive suivante de la mémoire à double accès (15) et de la mémoire tampon (67A). 2. Procédé selon la revendication 1, caractérisé en ce qu'on établit un bus de données (5A) et un bus d'adres- se (6A), chacun d'eux pouvant être commandé par le processeur (3A) et le contrôleur de DMA (3D), un bus de données de péri- phériques (5B) connecté à des bornes de données des disposi- tifs périphériques (49-1,... 49-N), et au premier accès de données (16A), et un bus d'adresse de périphériques (28) con- necté aux bornes d'adresse des dispositifs périphériques (49-1,... 49-N) et au premier accès d'adresse (16B); et en ce que l'opération (c) comprend la connexion du bus de don- nées (5A) au bus de données de périphériques (5B), sous la dépendance du signal de validation, et la connexion du bus d'adresse (6A) au bus d'adresse de périphériques (28) sous la dépendance du signal de validation, et l'action qui consiste à faire fonctionner le processeur (3A) pour accéder au pre- mier accès d'adresse (16B) et au premier accès de données (16A), par l'intermédiaire respectivement du bus d'adresse de périphériques (28) et du bus de données de périphériques (5B). 3. Procédé selon la revendication 2, caractérisé en ce qu'il comprend l'opération consistant à établir un compteur d'adresse (31) pour enregistrer des adresses de po- sitions de la mémoire à double accès (15), qui est connecté au second accès d'adresse (17B), et en ce que l'opération (f) comprend l'opération qui consiste à permettre au compteur d'adresse (31) d'appliquer au second accès d'adresse (17B) l'adresse de mémoire enregistrée dans le compteur, sous l'effet du signal de validation. 4. Procédé selon la revendication 3, caractérisé en ce que l'opération (f) comprend l'opération qui consiste à déconnecter le bus d'adresse (6A) du bus de données de pé- riphériques (5B) sous l'effet du signal de validation, et à connecter le second accès de données (17A) au bus d'adresse de périphériques (28) sous l'effet du signal de validation. 5. Appareil destiné à effectuer un transfert d'accès direct en mémoire (DMA) entre une mémoire tampon (67A) et un ensemble de dispositifs périphériques (49-1,... 49-N) ayant des adresses non consécutives, caractérisé en ce qu'il com- prend: (a) une mémoire; (b) des moyens destinés à écrire un nombre de multiplets et une première adresse de la mémoire tampon (67A) dans un contrôleur de DMA (3D); (c) des moyens destinés à écrire les adresses non consécutives de dispositifs périphériques dans des positions consécutives de la mémoire; (d) des moyens destinés à produire un signal de demande (DMA REQ) et à l'émettre vers le contrôleur de DMA (3D), le con- trôleur de DMA produisant en réponse un signal d'accusé de réception (DMA ACK); (e) des moyens destinés à produire un signal de validation (DMAEN) sous la dépendance du signal d'accusé de réception (DMA ACK); (f) des moyens destinés à accéder à des positions consécutives de la mémoire sous la dépendance du signal de validation (DMAEN), pour faire en sorte que la mémoire émette les adresses de dispositifs péri- phériques (49-1,... 49-N); (g) des moyens destinés à con- necter des entrées d'adresse des dispositifs périphériques (49-1,... 49-N) de façon qu'elles reçoivent l'adresse de pé- riphérique de sortie, et les bornes de données des dispositifs périphériques à la mémoire tampon (67A), sous la dépendance du signal de validation (DMAEN); et (h) des moyens destinés à - faire fonctionner le contrôleur de DMA (3D) pour accéder à des positions consécutives de la mémoire tampon (67A) et pour ef- fectuer ainsi un transfert d'un premier multiplet de données entre le dispositif périphérique adressé (49-1,... 49-N):,et la position adressée de la mémoire tampon (67A). 6. Appareil destiné à effectuer un transfert d'accès direct en mémoire (DMA) entre une première mémoire et un en- semble de dispositifs périphériques (49-1,... 49-N) ayant des adresses non consécutives, la première mémoire étant con- nectée par un bus de données (5A) et un bus d'adresse (6A) à un processeur (3A) et à un contrôleur de DMA (3D), les dispo- sitifs périphériques (49-1,... 49-N) étant connectés à un bus de données de périphériques (5B) et à un bus d'adresse de périphériques (28), caractérisé en ce qu'il comprend: (a) une seconde mémoire (15) enregistrant les adresses non consécutives dans des positions consécutives; et (b) des moyens de commande (19) destinés à produire un ensemble de signaux de validation sous la dépendance du contrôleur de DMA (3D), et à effectuer ensuite les actions suivantes: (i) connecter le bus de données de périphériques (5B) au bus de données (SA), (ii) déconnecter le bus d'adresse de péri- phériques (28) du bus d'adresse (6A), (iii) connecter un accès de données (16A, 17A) de la seconde mémoire (15) au bus d'adresse de périphériques (28), et (iv) adresser la seconde mémoire (15) pour lui faire émettre l'une des adres- ses non consécutives vers le bus de données de périphériques (28), et incrémenter la seconde adresse de mémoire, toutes ces actions étant accomplies sous l'effet de chaque signal de validation. 7. Appareil selon la revendication 6, caractérisé en ce qu'il comprend des moyens faisant en sorte que le pro- cesseur (3A) écrive les adresses non consécutives dans la seconde mémoire (15). 8. Appareil selon la revendication 7, caractérisé en ce qu'il comprend des moyens faisant en sorte que le con- trôleur de DMA (3D) accède à des positions consécutives de la première mémoire lorsque le bus de données (5A) est con- necté au bus de données de périphériques (5B), sous la dé- pendance de l'un des signaux de validation. 9. Appareil selon la revendication 8, caractérisé en ce que le contrôleur de DMA (3D) rend la commande du bus de données (5A) et du bus d'adresse (6A) au processeur (3A) après la génération de chaque signal de validation.