| 5434862 | Multistation communication bus system, and a master station and a slave station for use in such system |
La présente invention concerne le domaine des transmissions de données numériques en série. Elle concerne plus particulièrement un bus synchrone et son protocole de transmission en mode maître/esclave entre une unité principale (maître) et une unité périphérique (esclave), tel que décrit dans le document US-A-5 434 862.
Un exemple d'un tel bus, utilisé dans diverses catégories d'appareil, est le bus dit I 2 C décrit dans le brevet européen 0 051 332. Un certain nombre de cycles d'horloge sont nécessaires au microprocesseur ou microcontrôleur constituant l'unité principale pour récupérer un octet de données (58 cycles d'horloge dans le cas du circuit commercialisé par la société PHILIPS sous la référence PCD 3316 employant un tel bus).
Un but de la présente invention est de proposer un nouveau protocole de bus série synchrone permettant d'accéder plus rapidement à certaines données dans l'unité périphérique.
L'invention propose ainsi un procédé de transfert de données en série entre une unité principale et une unité périphérique reliées entre elles par un bus comprenant une ligne de données et une ligne d'horloge,
Le protocole de transfert est très simple, de sorte qu'il permet des accès rapides. Il repose sur la détection de l'impulsion d'activation, ou "strobe", sur la ligne de données par l'unité périphérique. L'unité principale distingue les différents modes de transfert par la position de cette impulsion d'activation au cours du cycle et/ou au moyen de bits de sélection présentés sur la ligne de données avant l'impulsion d'activation et/ou par un décodage des bits d'adresse.
Un accès très rapide à certains emplacements de mémoire de l'unité périphérique est rendu possible par le mode de transfert direct, étant donné que l'unité principale ne présente pas de bits d'adresse dans ce mode, et que l'information désirée est sélectionnée au préalable.
L'emplacement où les bits de données transmis sont obtenus en mode de transfert direct peut être un emplacement fixe prédéterminé, ce qui permet de simplifier au maximum la structure de l'interface de bus de l'unité périphérique et donc de minimiser son coût.
Ce peut également être un emplacement dont l'adresse est obtenue à partir d'une information fournie par l'unité principale lors d'un cycle d'écriture antérieur. Dans ce cas, des cycles de lecture directe peuvent être exécutés par l'unité principale pour lire différents types d'information dans l'unité périphérique. Le nombre de bits ainsi lu peut également être un paramètre réglé par l'unité principale lors d'un cycle d'écriture antérieur.
Le mode de lecture directe peut notamment être utilisé dans le traitement rapide de certaines interruptions par l'unité principale.
Un autre avantage du bus proposé est qu'il peut partager sa ligne de données et sa ligne d'horloge avec celles d'un bus fonctionnant selon un autre protocole pour l'échange de données entre l'unité principale et d'autres entités.
Selon un second aspect, la présente invention propose une interface de bus série synchrone pour une unité périphérique commandée par une unité principale par l'intermédiaire d'un bus incluant une ligne de données et une ligne d'horloge, comprenant :
D'autres particularités et avantages de la présente invention apparaîtront dans la description ci-après d'exemples de réalisation non limitatifs, en référence aux dessins annexés, dans lesquels:
La figure 1 montre schématiquement un appareil dont le fonctionnement général est commandé par une unité principale constituée par un microprocesseur 10. Le microprocesseur 10 supervise un certain nombre d'unités (non représentées) de l'appareil par l'intermédiaire d'un bus série 11 de type connu, tel que par exemple un bus I 2 C comportant une ligne de données SDA et une ligne d'horloge SCL (voir EP-B-0 051 332).
Une autre unité périphérique 12 est supervisée par le microprocesseur 10 à l'aide d'un bus série 13 fonctionnant conformément à l'invention.
A titre d'exemple d'application, l'appareil peut être un poste téléphonique dont le microprocesseur 10 supervise à l'aide du bus I 2 C 11 des unités telles qu'un clavier, un écran d'affichage et diverses interfaces, l'unité 12 étant un composant dédié à l'observation de la ligne téléphonique et au traitement de certaines données relatives à des services évolués proposés par les opérateurs de réseaux.
Dans ce genre d'application, le coût des composants doit être le plus bas possible, et il est notamment souhaitable de pouvoir limiter autant que possible le nombre de broches d'entrée/sortie du microprocesseur. Dans ce but, le bus 13 servant aux échanges entre les unités 10 et 12 emprunte les lignes de données et d'horloge du bus général 11, qui sont également notées BDA et BCL. Le protocole qui sera décrit ci-après évite les ambiguïtés sur ces lignes.
Le bus 13 comporte en outre une ligne d'interruption INT permettant à l'unité périphérique 12 de signaler certains événements au microprocesseur 10 par l'envoi d'une requête d'interruption.
L'interface de bus, prévue entre les circuits opérationnels 15 de l'unité périphérique 12 et le bus 13, comprend un module d'entrée/sortie 16 et un module 17 de traitement des interruptions. Le module 17 reçoit des circuits 15 des signaux d'interruption respectifs IRQ 1 -IRQ n relatifs à un ensemble de n événements dont la détection déclenche l'envoi sur la ligne INT d'une requête d'interruption. Le module 17 gère le stockage, dans un registre d'état du module 16, de n bits correspondant aux états des signaux IRQ 1 -IRQ n . En réponse à une requête d'interruption reçue sur la ligne INT, le microprocesseur 10 lit le registre d'état afin de connaître l'origine de l'interruption et de déterminer le programme d'interruption devant être exécuté.
Dans l'exemple d'application à un poste téléphonique, l'ensemble d'événements associés aux signaux d'interruption IRQ 1 -IRQ n comprend par exemple la détection d'une sonnerie sur la ligne, le détection de la présence de la tension de ligne et la détection de divers signaux que le réseau transmet sur la ligne téléphonique dans le cadre de services particuliers.
Les deux premières lignes des figures 2 à 4 montrent comment le microprocesseur 10 contrôle les lignes BCL, BDA du bus 13 pour déclencher des transferts de données depuis ou vers l'unité périphérique 12. Dans chaque cas, l'utilisation du bus 13 est signalée par une impulsion d'activation (strobe) présentée pendant un cycle de transfert sur la ligne de données BDA alors que la ligne d'horloge BCL est à un niveau logique donné. Dans l'exemple décrit, ce niveau logique est le niveau 1, et l'impulsion d'activation est une impulsion de niveau logique 0, c'est-à-dire commençant par un front descendant et se terminant par un front montant, ces deux fronts survenant pendant que BCL=1.
Dans un cycle d'écriture avec adressage (figure 2), l'impulsion d'activation est précédée par n+m+1 impulsions de synchronisation régulières sur la ligne d'horloge BCL (n=8 et m=4 dans l'exemple représenté), chaque impulsion commençant par un front montant et se terminant par un front descendant. Les changements de niveau logique sur la ligne de données BDA ne sont pas autorisés pendant ces n+m+1 impulsions de synchronisation (BCL=1), mais uniquement entre ces impulsions (BCL=0). Les n=8 premiers bits transmis au cours du cycle d'écriture sont des bits de données formant un octet à écrire, transmis par le microprocesseur 10 dans l'ordre des poids décroissants D7-D0. Les m=4 bits suivants A3-A0 forment une adresse d'écriture pour le stockage de l'octet précédent. Le dernier bit RW, qui précède immédiatement l'impulsion d'activation, indique par la valeur RW=0 que le cycle en cours est un cycle d'écriture.
Dans un cycle de lecture avec adressage (figure 3), l'impulsion d'activation est précédée par m+1 impulsions de synchronisation sur la ligne d'horloge BCL, m+1 bits étant transmis comme précédemment par le microprocesseur sur la ligne de données BDA. Les m=4 premiers de ces bits forment une adresse de lecture A3-A0 pour les données requises par le microprocesseur. Le dernier bit RW, qui précède immédiatement l'impulsion d'activation, indique par la valeur RW=1 que le cycle en cours est un cycle de lecture avec adressage.
Après l'impulsion d'activation dans un cycle de lecture avec adressage, le microprocesseur 10 transmet encore n=8 impulsions de synchronisation sur la ligne BCL, auxquelles le module 16 de l'unité périphérique 12 répond en présentant successivement sur la ligne BDA les n=8 bits de l'octet lu, dans l'ordre des poids décroissants D7-D0. Comme précédemment, la transmission de ces n bits de données est opérée de façon telle que les transitions entre ces bits aient lieu quand la ligne d'horloge est dans l'état BCL=0.
Dans un cycle de lecture directe (figure 4), l'impulsion d'activation est transmise par le microprocesseur au début du cycle. Après cette impulsion d'activation, le processeur 10 présente p impulsions de synchronisation sur la ligne d'horloge BCL, auxquelles l'unité périphérique 12 répond en transmettant p bits de données d1-d0 sur la ligne BDA de la même manière que précédemment (les transitions entre bits ont lieu pendant que BCL=0).
Dans l'exemple de la figure 4, on a représenté le cas particulier où p=2. Les p=2 bits d1-d0 sont par exemple lus à une adresse fixe prédéterminée dans les registres du module d'entrée/sortie 16.
Dans l'exemple d'application au poste téléphonique, les p=2 bits lus dans un cycle de lecture directe peuvent être les deux bits du registre d'état indiquant respectivement la détection d'une sonnerie sur la ligne téléphonique et la présence de la tension de ligne. Ces deux bits représentent des informations dont le microprocesseur 10 peut avoir besoin de façon très urgente pour adopter une réponse appropriée. Ainsi, lorsqu'il reçoit une requête d'interruption sur la ligne INT, le microprocesseur 10 peut déclencher un cycle de lecture directe dont l'exécution est très rapide, afin de connaître les valeurs de ces deux bits et d'adopter la réponse appropriée dans les meilleurs délais s'ils montrent effectivement l'origine de l'interruption. Dans le cas contraire, le microprocesseur 10 peut ensuite déclencher un cycle de lecture avec adressage dans le registre d'état afin de connaître les autres bits d'état et d'identifier l'origine de l'interruption.
A titre d'exemple numérique (voir figure 2), la fréquence d'horloge étant de 500 kHz, la durée des impulsions sur la ligne d'horloge (BCL=1) peut être T1=1 µs, et ces impulsions peuvent être séparées par une durée T2=1 µs (BCL=0); l'impulsion d'activation (strobe) de niveau logique 0 peut avoir une durée T3=1 µs, précédée et suivie par un temps de garde T4=0,5 µs pendant lequel BCL=BDA=1. La durée d'un cycle d'écriture ou de lecture avec adressage est alors d'environ 15 µs, et la durée d'un cycle de lecture directe avec p=2 est d'environ 4 µs. Les accès peuvent être encore plus rapides lorsque le bus n'est pas soumis aux contraintes du protocole I 2 C, la fréquence d'horloge pouvant dans ce cas être plus élevée.
Lorsqu'il n'est pas en train d'exécuter un cycle de transfert sur le bus 11/13, le microprocesseur 10 maintient la ligne d'horloge SDA/BDA au niveau logique 1.
Dans le protocole du bus I 2 C 11, un front descendant sur la ligne de données SDA alors que la ligne d'horloge SCL est au niveau logique 1 caractérise un début de cycle de transfert, tandis qu'un front montant f sur la ligne de données SDA pendant que BCL=1 caractérise la fin d'un cycle de transfert (figure 4). En conséquence, selon ce protocole I 2 C, la ligne de données ne change pas de niveau logique plus d'une fois pendant que la ligne d'horloge est au niveau 1. On voit donc que le protocole de transfert proposé selon l'invention, illustré par les figures 2 à 4, ne donne lieu à aucune ambiguïté avec le protocole du bus I 2 C utilisé par le microprocesseur 10 pour superviser d'autres unités de l'appareil:
La structure du module d'entrée/sortie 16 de l'unité périphérique 12 est par exemple conforme au schéma de la figure 5. Sur cette figure, la référence 18 désigne un groupement de M≤2 m registres de n bits dans lesquels le microprocesseur 10 peut commander des écritures dans des cycles tels que celui représenté sur la figure 2, le registre du groupement 18 où une telle écriture a lieu étant choisi à l'aide de l'adresse d'écriture A3-A0. La référence 19 désigne un groupement de M'≤2 m registres de n bits dans lesquels le microprocesseur 10 peut commander des lectures de données dans des cycles de lecture avec adressage tels que celui représenté sur la figure 3, le registre du groupement 19 où une telle lecture a lieu étant choisi à l'aide de l'adresse de lecture A3-A0. Ces registres de lecture 19 comprennent le registre d'état utilisé pour la gestion des interruptions.
Le module 16 comprend un registre à décalage constitué de m+1 bascules D en cascade 20 0 -20 m cadencées par les fronts montants du signal présent sur la ligne d'horloge BCL. L'entrée de données de ce registre à décalage, c'est-à-dire l'entrée D de la première bascule 20 0 , est reliée à la ligne de données BDA. Le module 16 comprend un second registre à décalage constitué de n bascules D en cascade 20 m+1 -20 m+n cadencées par les fronts montants d'un signal CC délivré par une porte OU EXCLUSIF 21. Pour 1≤i≤m+n, l'entrée D de la bascule 20 i est reliée à la sortie Q de la bascule 20 i-1 . La porte 21 a une entrée reliée à la ligne d'horloge BCL. Son autre entrée reçoit un signal binaire de sélection CD.
Au moment où une impulsion d'activation est reçue par l'unité périphérique 12 dans un cycle d'écriture ou de lecture avec adressage, le bit de sélection de mode RW est présent à la sortie Q de la bascule 20 0 , et les m bits d'adresse A3-A0, sont présents aux sorties Q des bascules 20 1 -20 m
Un registre auxiliaire de m bits est constitué de m bascules D 22 1 -22 m . Pour 1≤i≤m, l'entrée D de la bascule 22 i est reliée à la sortie Q de la bascule 20 i . Les sorties Q des bascules 22 1 -22 m fournissent les m bits d'adresse délivrés au groupement de registres d'écriture 18 et au groupement de registres de lecture 19. Pour que ce registre auxiliaire 22 1 -22 m reçoive l'adresse A3-A0 au moment de la détection de l'impulsion d'activation dans un cycle d'écriture ou de lecture avec adressage, les bascules D 22 1 -22 m sont cadencées par les fronts montants d'un signal HOLD délivré par un détecteur d'impulsions d'activation 24.
Ce détecteur 24 (figure 6) comprend deux bascules D 25,26 dont les sorties Q sont remises au niveau logique 0 à chaque front descendant survenant sur la ligne d'horloge BCL. La ligne BCL est reliée à l'entrée D de la bascule 25 qui est cadencée par les fronts descendants survenant sur la ligne de données BDA, et dont la sortie Q délivre le signal HOLD précité. Ce signal est d'autre part adressé à l'entrée D de la bascule 26 cadencée par les fronts montants survenant sur la ligne de données BDA, et dont la sortie Q délivre un signal de détection STRI. Ce signal STRI présente une impulsion de niveau logique 1 qui commence à la fin de chaque impulsion d'activation et se termine lorsque la ligne BCL revient à 0.
Une porte ET 28 combine le signal STRI avec le complément logique du bit RW obtenu sur la sortie Q de la bascule 20 0 pour produire le signal de commande d'écriture WR adressé au groupement de registres d'écriture 18. Ce signal WR (figure 2) commande le transfert en parallèle des n bits D7-D0 présents sur les sorties Q des bascules 20 m+1 -20 m+n dans le registre du groupement 18 dont l'emplacement est désigné par les m bits d'adresse A3-A0 obtenus sur les sorties Q des bascules 22 1 -22 m .
Une autre porte ET 29 reçoit le signal STRI et le bit de sélection RW obtenu sur la sortie Q de la bascule 20 0 pour produire un signal RR ayant la même allure dans les cycles de lecture (figures 3 et 4).
Pour faire la distinction entre les cycles de lecture avec adressage et les cycles de lecture directe, on prévoit qu'une valeur de l'adresse de lecture soit exclue par le microprocesseur 10 pour les cycles de lecture avec adressage. A titre d'exemple, ce peut être la valeur pour laquelle tous les bits d'adresse sont à 1.
Les bascules du premier registre à décalage 20 0 -20 m ont chacune une entrée de présélection P servant à forcer leur sortie Q au niveau logique 1 lors de chaque front descendant d'un signal de présélection CP. Ce signal CP est fourni par un filtre formé par une porte ET 31 appartenant à des moyens 30 de gestion des cycles de lecture. La porte ET 31 combine les signaux suivants :
Le signal F sert à forcer l'écriture de RW=1 et de la valeur d'adresse exclue dans le registre 20 0 -20 m à la fin des cycles de transfert commandés par le microprocesseur 10 selon le protocole I 2 C. Ce signal F présente un front descendant à la fin de chaque cycle de transfert I 2 C, comme le montre la partie gauche de la figure 4. Ce signal F est par exemple fourni par la sortie inverseuse
La mise en forme du signal de présélection CP est telle que le microprocesseur 10 peut décider à chaque instant d'exécuter un cycle de lecture directe.
Pour identifier la nature du cycle de transfert en cours, les portes ET 28,29 sont complétées par une logique de détection 33 reliée aux sorties Q des bascules du registre auxiliaire 22 1 -22 m . Cette logique de détection 33, qui consiste simplement en une porte ET à m entrées dans le cas où la valeur d'adresse exclue est 11...1, délivre un bit de sélection FRM qui est à 1 lorsque l'adresse exclue est détectée et à 0 sinon.
Les moyens 30 de gestion des cycles de lecture comprennent en outre un commutateur d'adresse 34 commandé par le bit FRM, un module de cadencement 35 et un module de gestion d'adresses 36. Le module 35 délivre le signal de commande de lecture RD fourni au groupement de registres 19. Ce signal RD est produit en réponse à l'impulsion du signal RR délivré par la porte ET 29, et correspond à cette impulsion prolongée pendant un cycle de l'horloge BCL, comme le montrent les figures 3 et 4.
Une porte à trois états 40 forme un commutateur de sortie du module d'entrée/sortie 16, avec son entrée reliée à la sortie Q de la dernière bascule 20 m+n du second registre à décalage, et sa sortie reliée à la ligne de données BDA. Cette porte à trois états 40 peut être commandée par le signal binaire de sélection CD qui est fourni à la porte OU EXCLUSIF 21, de manière à être à l'état déconnecté (ouvert) lorsque CD=0 et l'état passant (fermé) lorsque CD=1.
Le signal CD est délivré par le module de cadencement 35. Il reste au niveau 0 en dehors des cycles de transfert sur le bus 13 ainsi que pendant les cycles d'écriture. Pendant un cycle de lecture (figures 3 et 4), le signal CD reste au niveau 0 jusqu'à la détection de l'impulsion d'activation. Lorsqu'il détecte un front montant sur la sortie RR de la porte 29, le module 35 génère un front montant du signal CD qui est ensuite maintenu à 1 jusqu'à la fin des impulsions de synchronisation suivantes sur la ligne d'horloge BCL. Le module 35 maintient donc le signal CD à 1 jusqu'à avoir reçu n impulsions de synchronisation sur la ligne BCL lorsque FRM=0, et jusqu'à avoir reçu p impulsions de synchronisation lorsque FRM=1. L'impulsion de niveau 0 du signal de fin de cycle EORC est produite lorsque le signal CD revient à 0 (figures 3 et 4).
Lorsque FRM=0, le commutateur 34 est dans la position représentée sur la figure 5, de sorte qu'une impulsion du signal RD provoque la lecture d'un octet dans le groupement 19 à l'adresse présente dans le registre auxiliaire 22 1 -22 m . Le module de permutation circulaire 38 auquel sont fournis les bits de l'octet lu dans le groupement 19 est désactivé lorsque FRM=0, ce qui permet le transfert en parallèle de ces bits vers le registre à décalage 20 m+1 -20 m+n . Le bit de poids le plus fort de l'octet est d'abord fourni sur la ligne de données BDA via la porte 40, tandis que les autres bits de l'octet sont chargés dans les bascules 20 m+2 -20 m+n du second registre à décalage. Ces autres bits sont ensuite délivrés en série sur la ligne de données BDA en réponse aux impulsions de synchronisation suivantes de l'horloge BCL. L'inversion de cette horloge par la porte OU EXCLUSIF 21 permet d'assurer la stabilité des données dans les intervalles de temps où BCL=1.
Dans un cycle de lecture directe, le commutateur 34 est positionné pour obtenir l'adresse de lecture a depuis le module de gestion d'adresses 36. Lorsque cette adresse a est fixe, le module 36 se réduit à des connexions fournissant la valeur constante a au commutateur 34. Si les p bits lus dans un cycle de lecture directe sont toujours les p bits de poids les plus forts d'un des registres du groupement 19, le module de permutation circulaire 38 est inutile. Sinon, il est activé par le bit FRM=1 afin d'introduire le décalage requis, de δ bits, pour délivrer les bits souhaités vers la ligne de données BDA.
Il est possible de choisir, comme nombre de bits à transférer dans un cycle de lecture directe, un nombre p supérieur à la taille n des registres du groupement 19. Le fonctionnement est alors le même que celui décrit précédemment, sauf que le module de cadencement 35 doit réactiver le signal de commande de lecture RD toutes les n impulsions de synchronisation, provoquant ainsi l'incrémentation de l'adresse fournie par le module 36 (consistant essentiellement en un compteur), et le transfert en parallèle vers le registre à décalage 20 m+1 -20 m+n du contenu d'un nouveau registre du groupement 19 pointé par l'adresse incrémentée.
Les paramètres p (nombre de bits transférés dans un cycle de lecture directe), a (adresse de départ) et δ (décalage éventuel) peuvent être fixes, comme dans l'exemple précédemment décrit. Ils peuvent également être des paramètres programmables par le microprocesseur 10. Dans ce cas, les modules 35, 36 et 38, qui utilisent respectivement de ces paramètres p , a et δ les obtiennent à partir de l'un des registres d'écriture du groupement 18. Pour modifier l'un ou l'autre de ces paramètres, le microprocesseur 10 peut simplement exécuter un cycle d'écriture dans le ou les registres en question, dont il connaît les adresses.
Dans la variante de réalisation représentée sur la figure 7, les cycles de transfert direct, sans adressage, ne sont pas limités à des cycles de lecture. Des cycles d'écriture directe sont également possibles. En outre, dans ce mode de réalisation, le bit de sélection de mode RW n'est pas transmis par le microprocesseur. La distinction entre les cycles de lecture et les cycles d'écriture est effectuée sur la base d'un décodage des adresses présentes dans le registre auxiliaire 22 1 -22 m au moment de la détection de l'impulsion d'activation.
Le module d'entrée-sortie représenté sur la figure 7 présente de nombreux éléments communs avec celui de la figure 5, qui sont désignés par les mêmes références numériques. Le premier registre à décalage dont l'entrée est reliée à la ligne de données BDA du bus 13 comporte une bascule de moins étant donné que le bit RW n'a plus besoin d'être pris en compte. Les bascules 20 1 -20 m subsistent et sont couplées de la même manière aux bascules 22 1 -22 m du registre auxiliaire.
La sortie parallèle sur m bits du registre auxiliaire est reliée à une logique de détection des types de cycle 50, qui reçoit également le signal STRI délivré par le détecteur d'impulsions d'activation 24. La logique 50 opère un décodage des adresses contenues dans le registre auxiliaire 22 1 -22 m au moment où elle reçoit une impulsion du signal STRI. Ce décodage obéit à des règles préétablies. A titre d'exemple non limitatif, ces règles peuvent consister en ce que (i) les adresses de la forme 1 xx...x (chaque x valant 0 ou 1) soit utilisées par le microprocesseur dans des cycles de lecture avec adressage, (ii) les adresses de la forme 0 xx...x soient utilisées dans les cycles d'écriture avec adressage, (iii) l'adresse 111...1 soit une adresse de lecture exclue, dont la présence dans le registre auxiliaire 22 1 -22 m caractérise un cycle de lecture directe, et (iv) l'adresse 011...1 soit une adresse d'écriture exclue dont la présence dans le registre 22 1 -22 m caractérise un cycle d'écriture directe. Dans ce cas particulier, il y a autant d'emplacements adressables en lecture que d'emplacements adressables en écriture. Une table de décodage (éventuellement programmable par le microprocesseur 10) dans la logique 50 permet plus généralement toute combinaison de tailles de mémoire accessible en lecture et/ou en écriture.
Lorsqu'un cycle de lecture (directe ou avec adressage) est détecté, la logique 50 produit une impulsion de niveau logique 1 sur le signal RR jouant le même rôle que celui décrit dans l'exemple de réalisation précédent (voir figures 9 et 10). Lorsqu'un cycle d'écriture (directe ou avec adressage) est détecté, la logique 50 produit de façon semblable une impulsion de niveau logique 1 sur le signal WW, comme indiqué sur les figures 8 et 11. Dans chaque cycle de transfert direct, la logique 50 active en outre un signal FM, jouant un rôle analogue à celui du signal FRM dans l'exemple de réalisation précédent (il commande notamment le commutateur d'adresses 34 qui délivre l'adresse A de lecture ou d'écriture, et éventuellement le module de permutation 38).
Comme illustré sur la figure 7, la logique de détection 50 pourrait encore produire des signaux de commande C1, C2, ... en réponse à la détection de certaines adresses particulières dans le registre auxiliaire 22 1 -22 m . Ce type de décodage permet éventuellement de transmettre des commandes à certains éléments de l'unité périphérique 12 sans avoir à transférer explicitement des données sur la ligne BDA.
Les signaux FM, RR et WW délivrés par la logique de détection 50 sont adressés au module 52 de cadencement des transferts faisant partie des moyens 30 de gestion des cycles de transfert et jouant un rôle semblable à celui du module 35 décrit en référence à la figure 5. Ce module 52 produit les signaux de commande de lecture RD et d'écriture WR adressés aux groupements de registres 19,18. La production des signaux RD, CD et EORC par le module 52 est identique à celle précédemment décrite (figures 9 et 10).
La production du signal de commande d'écriture WR tient compte du fait que, dans la variante considérée, les données écrites D7-D0 ou d1-d0 sont transmises sur la ligne de données BDA par le microprocesseur 10 après l'impulsion d'activation. Dans un cycle d'écriture avec adressage (FM=0), le module 52 retarde ainsi de n cycles de l'horloge BCL l'activation du signal WR (figure 8). Dans le cas d'un cycle d'écriture directe, ce retard est de p cycles de l'horloge BCL (figure 11).
Pour permettre le chargement des bits de données à écrire dans le second registre 20 m+1 -20 m+n , l'entrée série de ce registre, constituée par l'entrée D de la bascule 20 m+1 est directement reliée à la ligne de données BDA, comme le montre la figure 7. Dans une autre variante de réalisation, on pourrait prévoir que l'entrée D de la bascule 20 m+1 soit reliée ou bien à la sortie Q de la bascule 20 m ou bien à la ligne de données BDA selon la position d'un commutateur. Ce commutateur pourrait par exemple être commandé par un bit de commande C1 ou C2 délivré par la logique de détection 50 en réponse à une instruction codée du microprocesseur 10, ce qui permet au microprocesseur 10 de décider dynamiquement s'il transmet les données avant ou après l'impulsion d'activation dans les cycles d'écriture.
Comme le montre la figure 11 dans le cas particulier considéré ci-dessus pour le codage des adresses, le microprocesseur 10 présente un bit à 0 surla ligne de données BDA en même temps qu'il exécute un cycle d'horloge sur la ligne BCL juste avant de transmettre l'impulsion d'activation dans les cycles d'écriture directe. Ceci permet de charger un bit à 0 dans les bascules 20 1 et 22 1 afin de changer l'adresse par défaut 111... 1 caractérisant les cycles de lecture directe en l'adresse 011... 1 caractérisant les cycles d'écriture directe, afin de permettre le décodage adéquat par la logique de détection 50.
Si le nombre p de bits concernés par un cycle de transfert direct, en lecture ou en écriture, est supérieur à la taille n d'un registre des groupements 18,19, le signal de commande RD ou WR est réactivé périodiquement comme dans l'exemple précédent, et le compteur d'adresse 36 est incrémenté par la sortie d'une porte OU 54 recevant les signaux RD et WR. Le microprocesseur peut ainsi accéder à plusieurs registres au cours du même cycle de transfert direct.
On peut également prévoir un décalage δ dans la position des bits devant faire l'objet d'une écriture dans un cycle d'écriture direct. On prévoit pour cela, entre le registre 20 m+1 -20 m+n et le groupement 18 de registres d'écriture, un module de permutation circulaire 56 commandé par le bit FM de la même manière que le module 38. Ce module 56 reçoit également le nombre p de bits concernés par le cycle d'écriture directe afin d'inhiber l'écriture dans les emplacements non concernés du registre adressé.