FR 2655446 A1 19910607 FR 8916042 A 19891205 La présente invention concerne un dispositif pour transférer des données entre deux modules dans un système à microprocesseur muni d'une unité centrale avec un agencement de bus d'adresses et de données connecté à l'unité centrale et à une mémoire de codes opératoires, ainsi qu'aux deux modules, dispositif muni d'un interrupteur pour couper le bus de don- nées, et de moyens distincts de ceux de l'unité centrale pour commander le transfert entre les modules. L'invention s'applique notamment aux systèmes à microprocesseur utilisés dans des automates de toute nature, pour la commande d'appareils professionnels ou d'appareils de loisirs tel que des systèmes audio-video. Un dispositif selon le préambule ci-dessus est connu de JP Kokai 62-35950 Il présente l'avantage que, pour l'incrémentation de l'adresse dans les modules, incrémentation destinée à la lecture et à l'écriture d'une série de données placées à la suite les unes des autres, on utilise l'unité centrale pour incrémenter l'adresse sur le bus pendant les trans- ferts, la même adresse étant ainsi présentée aux deux modules fonctionnels en même temps, et on évite les conflits qui devraient en résulter, grâce essentiellement à l'interrupteur sur le bus de données Dans le dispositif décrit par ce document, cet interrupteur est placé de façon à isoler l'unité centrale du reste du système, et les moyens distincts de ceux de l'unité centrale pour commander le transfert entre les modules sont assez complexes et doivent notamment comporter un générateur pour fournir des codes inactifs à l'unité centrale pendant l'opération de transfert. L'invention se propose de procurer un dispositif basé sur le même principe et présentant les mêmes avantages de vitesse, mais dont la réali- sation soit plus simple. Cela est obtenu du fait que ledit interrupteur est placé entre le groupe des deux modules d'une part, et le groupe constitué de l'unité cen- trale et de la mémoire de codes opératoires d'autre part. Ainsi la mémoire de codes opératoires reste reliée à l'unité cen- trale, ce qui permet de se passer d'un générateur de codes inactifs lors- que ladite mémoire des codes opératoires contient des codes opératoires inactifs dans les positions correspondant aux adresses présentes sur le bus d'adresses pendant l'opération de transfert. Une vitesse particulièrement élevée des transferts peut être obte- nue en outre lorsque les susdits moyens distincts de ceux de l'unité centrale pour commander le transfert entre les modules réalisent à la fois la commande de lecture de l'un des modules et la commande d'écriture de l'autre et l'ouverture de l'interrupteur, ces moyens étant constitués par un circuit de logique combinatoire. Un tel circuit de logique combinatoire est de réalisation très simple et en outre l'interversion des commandes de lecture et d'écriture de l'un des modules par rapport à celles de l'autre permet que l'un des modules puisse être lu pendant que l'on écrit dans l'autre ce qui divise par deux les temps de transfert. Avantageusement, ce circuit est muni d'un décodeur d'adresse relié au bus d'adresse Ainsi la présentation d'une adresse particulière suffit à déclencher la mise en action du circuit et par conséquent les trans- ferts. Pour que ceci soit possible sans aucun inconvénient, le décodeur d'adresse du circuit de logique combinatoire est en outre relié seulement à certains fils du bus d'adresse, et les deux modules sont reliés seule- ment aux autres fils de ce bus d'adresse. La description qui va suivre, en regard des dessins annexés décri- vant des exemples non limitatifs fera bien comprendre comment l'invention peut être réalisée. La figure unique représente schématiquement l'organisation d'un système muni d'un dispositif selon l'invention. Pour simplifier la figure seuls les éléments indispensables à la compréhension de l'invention ont été représentés Une unité centrale 1 comprend des éléments logiques habituels (non représentés) tels que des registres, une horloge et un compteur de programme, une unité arithméti- que Une mémoire 4 non inscriptible (dite ROM) contient les codes opéra- toires de programme: des adresses incrémentées à chaque temps de cycle lui sont présentées et à chaque fois un code y est lu, dont la séquence cons- titue en principe le programme exécuté par le système (en principe, puis- qu'avec le dispositif de l'invention cela n'est plus vrai). Deux modules 5 et 6 sont des mémoires ou comportent des mémoires, et on se propose de transférer des données entre ces mémoires, le plus vi- te possible Dans l'exemple décrit ci-après, l'unité centrale peut être celle d'un microprocesseur de type 8031, le module 5 peut être une mémoire volatile (dite RAM) du système et le module 6 être une autre mémoire vola- tile (notée RAM 2) Chacune de ces mémoires peut être un registre, par exemple pour échanger des données avec un périphérique, ou n'importe quel autre usage Il est évident que l'invention pourrait aussi bien s'appli- quer à n'importe quel types de modules ou à un microprocesseur différent. Le microprocesseur 1 utilise des adresses à seize bits et des don- nées à huit bits Il est prévu un bus mixte 8 à huit conducteurs, qui por- te parfois huit bits de données (D) et parfois les huit bits d'adresse de poids faible (A 0-7) Le bus 8 est relié à un circuit 3 dit "latch" qui a pour but de mémoriser les bits de poids faible d'une adresse à un certain moment, et qui délivre ces bits mémorisés sur un bus 9 qui est relié à l'entrée d'adresse A 0-7 de la mémoire ROM 4, et aux entrées d'adresse de poids faible des modules 5 et 6 La mémorisation est déclenchée par l'uni- té centrale sur une connexion notée ALE ("Adress Latch Enable"). Le microprocesseur 1 utilise aussi un autre bus 10 qui porte les huit bits d'adresse de poids fort (A 8-15) Ce bus est relié directement à la mémoire 4, et aux entrées d'adresse de poids fort des modules 5 et 6. Les entrées d'adresse des modules 5 et 6 sont reliées aux bus 9 et 10. Le bus 8 étant aussi un bus de données, il est relié à la sortie de données (c'est-à-dire de codes opératoires) D 0-7 de la mémoire 4 La fourniture de ces codes est déclenchée par l'unité centrale sur une con- nexion PSEN (e Program Store E Nable'). L'unité centrale 1 est munie de connexions de commande de lecture et d'écriture ("strobes") RD et WR Dans l'art antérieur la connexion E serait reliée aux entrées WE, et la connexion WR serait reliée aux entrées 0 E, des deux modules 5 et 6 Le système est muni ici d'un circuit 2 qui gère les entrée-sorties des deux modules A cette fin, il possède une en- trée reliée au bus d'adresse A 8-15, deux entrées reliées respectivement aux connexions RD et WR, et une entrée reliée à la connexion PSEN, et un premier jeu de sorties WRAM, RDRAM, CSRAM reliées respectivement aux en- trées WE, UÈ, CS du module 5 (RAM) et un deuxième jeu de sorties WRAM 2, RDRAM 2, CSRAM 2 reliées respectivement aux entrées WE, O E, CS du module 6 (RAM 2) Le circuit 2 sera décrit en détail plus loin. Les bornes d'entrée-sortie de données des modules 5 et 6 sont re- liées à un bus 13 qui dans l'art antérieur serait le bus 8, mais en est ici séparé par un interrupteur 7 Il s'agit d'un interrupteur électronique pour huit connexions Pour commander cet interrupteur, le circuit 2 lui est relié par une connexion 12 (DSC) Il va de soi qu'un microprocesseur organisé avec des bus séparés pour les adresses AO-7 et pour les données pourrait aussi bien être utilisé, sans que cela modifie l'invention Alors l'interrupteur 7 serait placé sur le bus de données. La commande du transfert de données peut avantageusement être don- née par l'unité centrale au moyen de la présentation d'une adresse parti- culière Celle-ci est reconnue par le circuit 2 qui prend alors en charge le transfert des données A la même adresse de la mémoire ROM débute une séquence de codes opératoires *inactifs" en nombre égal au nombre des don- nées à transférer, suivies d'une instruction de retour de sous-programme. Le dispositif fonctionne de la manière suivante: lorsqu'une adresse particulière est reconnue par le circuit 2, celui-ci ouvre l'interrupteur 7, met en état actif les deux modules (entrées CS), et met par exemple en lecture le module 6 et en écriture le module 5 (Le circuit 2 intervertit donc les commandes de lecture et d'écriture de l'un des modules par rap- port à celles de l'autre) Le choix du module lu et du module inscrit peut par exemple dépendre de l'adresse fictive qui a été présentée sur le bus d'adresse, d'une façon qui sera décrite plus en détail avec la définition du circuit 2 Après ces opérations, à chaque fois que le processeur cher- che un code opératoire ("fetch opcode"), c'est-à-dire au rythme de l'hor- loge de l'unité centrale, les adresses sont incrémentées sur le bus d'a- dresse commun, et pour chaque adresse, la donnée contenue à la position correspondant à cette adresse dans le module 6 (RAM 2) est lue et, dans le même temps de cycle, inscrite dans la position du module 5 (RAM) corres- pondant à la même adresse, en transitant par le bus 13 qui est isolé du bus de données 8 desservant le reste du système (pour mémoire, dans l'art antérieur, on accède aux modules 4, 5, 6 tour à tour et c'est pourquoi on peut utiliser le même bus de données, mais c'est beaucoup plus long) Les codes issus de la mémoire 4 qui sont présentés sur le bus 8 sont ignorés par l'ensemble des éléments 2, 5, 6 Pour ce qui est du reste du système, les codes choisis sont inactifs, ainsi que cela a été indiqué plus haut, c'est-à-dire tels qu'ils ne modifient pas le fonctionnement de l'unité centrale Dans le cas particulier du microprocesseur 8031, l'adresse est incrémentée deux fois par temps de cycle, et deux données sont donc trans- férées à chaque temps, alors que dans l'art antérieur il fallait cinq temps de cycle par donnée, avec ce même microprocesseur. Le circuit 2 va maintenant être défini plus en détail L'homme du mé- tier peut aisément imaginer la constitution d'un circuit à partir de ses équations logiques Le circuit 2 sera donc décrit au moyen des équations logiques définissant les signaux qu'il fournit. Le matériel détermine quatre valeurs logiques BO, Bi, B 2, B 3 définies en fonction des signaux présents sur les fils A 11, A 12, A 14 et A 15 du bus d'adresse A 8-15, par exemple selon les équations: BO = A 15 A 14 A 12 A 11 Bl = AI 15 A 14 A 12 Ail B 2 = A 15 A 14 A 12 A 11 B 3 = A 15 A 14 -A 12A 11 Le matériel réalisant ces équations dans le circuit 2 est donc un décodeur d'adresse Ce circuit 2 est ainsi commandé par une adresse sur les fils Ail à A 15 du bus 10 Pour éviter tout conflit d'adresse, seuls les fils Ail à A 15 du bus d'adresse sont amenés au circuit 2 et les fils restants, à savoir AO à A 10, sont amenés aux modules 5 et 6 Ces derniers ont donc une capacité limitée, par exemple à 2048 positions dans le cas décrit ici o il reste onze fils d'adresse pour les modules Ceci ne présente pas d'inconvénient majeur dans le cas o les dits modules sont des mémoires particulières, telles que des registres de travail ou d'interface. Le circuit 2 délivre à partir des valeurs BO à B 3 définies ci des- sus, les signaux suivants: DSC = Bl + B 2 RDRAM = BO RD + Bl PSEN WRAM = BO WR + B 2 PSEN CSRAM = BO Bl + B 2 RDRAM 2 = B 3 RD + B 2 PSEN WRAM 2 = B 3 WR + Bl PSEN CSRAM 2 = Bl + B 2 + B 3 Ce circuit 2 est donc un simple circuit logique cablé qui n'a rien à voir avec un dispositif de vol de cycle dit DMA, lequel est un véritable processeur annexe muni d'une horloge Dans le cas particulier du microprocesseur 8031, à chaque cycle de lecture de code opératoire, l'unité centrale lit deux octets à la fois dans la mémoire 4, c'est à dire que l'adresse saute deux pas De ce fait, si l'on utilise un code à un seul octet, la valeur de l'adresse doit revenir en arrière pour le cycle suivant Comme cette adresse est aussi celle utilisée par les deux modules 5, 6, ceci est inadmissible, car si l'on nomme a b c d la séquence de données successives à transférer (on entend par "donnée" l'information correspondant à une adresse, par exemple un octet si les mémoires sont des mémoires organisées par octets), avec une telle séquence d'adresses, les données reçues par le module destinataire seraient a b b c c d d Cela n'entraine pas d'erreur car les deux données successives identiques sont bien placées à la même adresse, mais cela perd du temps Pour cette raison, dans le cas particulier du processeur 8031, un code opératoire constitué de deux oc- tets doit être choisi, par exemple un code "load register" ou "relation jump", qui peuvent être qualifiés d'inactifs vis-à-vis de l'unité cen- trale, dans le cadre de l'opération à réaliser. Dans le cas d'un microprocesseur différent o l'incrémentation d'adresse lors d'un "fetch opcode' est d'un seul pas, un code NOP (No O Peration) peut être utilisé. REVENDICATIONS: 1 Dispositif pour transférer des données entre deux modules dans un système à microprocesseur muni d'une unité centrale avec un agencement de bus d'adresses et de données connecté à l'unité centrale et à une mémoire de codes opératoires, ainsi qu'aux deux modules, dispositif muni d'un interrupteur pour couper le bus de données, et de moyens distincts de ceux de l'unité centrale pour commander le transfert entre les modules, caractérisé en ce que ledit interrupteur est placé entre le groupe des deux modules d'une part, et le groupe constitué de l'unité centrale et de la mémoire de codes opératoires d'autre part. 2 Dispositif selon la revendication 1, caractérisé en ce que la mémoire des codes opératoires contient des codes opératoires inactifs dans les positions correspondant aux adresses présentes sur le bus d'adresses pendant l'opération de transfert. 3 Dispositif selon la revendication 2, caractérisé en ce que les- dits codes opératoires inactifs sont des codes de chargement de registre, ou des codes de saut conditionnel. 4 Dispositif selon la revendication 2, caractérisé en ce que les- dits codes opératoires inactifs sont des codes dits NOP ("no operation"). 5 Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce que les susdits moyens distincts de ceux de l'unité centrale pour commander le transfert entre les modules réalisent à la fois la commande de lecture de l'un des modules et la commande d'écriture de l'autre et l'ouverture de l'interrupteur, et en ce que ces moyens sont constitués par un circuit de logique combinatoire. 6 Dispositif selon la revendication 5, caractérisé en ce que le circuit de logique combinatoire comporte un décodeur d'adresse relié au bus d'adresses. 7 Dispositif selon la revendication 6, caractérisé en ce que le décodeur d'adresse du circuit de logique combinatoire est relié seulement à certains fils du bus d'adresse, et les deux modules sont reliés seule- ment aux autres fils de ce bus d'adresse.