Title:
Method for transferring serial data and synchronous serial bus interface using such method
Document Type and Number:
Kind Code:
B1
Inventors:
Nihouarn, Gilbert (2, Allée de Cornouaille, Guengat, 29180, FR)
Assignee:
NORTEL NETWORKS France (Parc d'activités de Magny-Châteaufort, Châteaufort, 78117, FR)
Abstract:
Abstract of EP0938048
Transfer procedure in which the controlling microprocessor (10) executes serial data transfer using a clock line (BCL) to control data transfer, along data line (BDA), with cycles of transfer using addressing interspersed with direct transfer cycles. IN each cycle the processor transmits activation impulses when the clock line is at a first logic state. Prior to an address cycle the bits (A3-A0) are transmitted on the data line, with the synchronizing impulses transmitted on the clock line. The peripheral unit (12) receives the initiating bits then accesses memory according to the address transferred for reading or writing data bits (D7-D0). The latter being received in conjunction with the synchronizing clock signal. In a direct access cycle the memory address for access is determined prior the transfer. An Independent claim is made for an interface for carrying out the data transfer procedures.
Application Number:
EP19990400345
Publication Date:
08/18/2004
Filing Date:
02/12/1999
View Patent Images:
International Classes:
(IPC1-7): G06F13/42
Domestic Patent References:
EP0159941Serial interconnecting bus for a data processing
system, and method for information exchange
EP0498494A data communication system based on a serial bus
and a monitor station for use with such system.
Foreign References:
5434862Multistation communication bus system, and a master station and a slave station for use in such system
Attorney, Agent or Firm:
Loisel, Bertrand (Cabinet Plasseraud 65/67 rue de la Victoire, Paris Cedex 09, 75440, FR)
Claims:
1. A process for serial data transfer between a main processing unit (10) and a peripheral unit (12) connected to each other by a bus (13) including a data line (BDA) and a clock line (BCL),
wherein the main processing unit controls synchronised transfer cycles by means of the clock line, characterized in that said transfer cycles include transfer cycles with addressing and direct transfer cycles,
wherein, during each cycle, the main processing unit transmits on the data line a strobe pulse while the clock line is at a first logic level,
wherein, before transmitting the strobe pulse in a transfer cycle with addressing, the main processing unit transmits on the data line bits (A3-A0) of a transfer address, with corresponding synchronisation pulses on the dock line,
wherein, after receiving the strobe pulse in a transfer cycle with addressing, the peripheral unit accesses to a memory location determined from the transfer address to write or read data bits (D7-D0) successively presented on the data line synchronously with corresponding synchronisation pulses on the clock line,
and wherein, after receiving the strobe pulse in a direct transfer cycle, the peripheral unit accesses to a memory location determined prior to said direct transfer cycle to write or read data bits (d1-d0) successively presented on the data line synchronously with corresponding synchronisation pulses on the clock line.

2. A process in accordance with claim 1, wherein, in a direct transfer cycle, the main processing unit (10) transmits the strobe pulse at the beginning of the cycle.

3. A process in accordance with claim 2, wherein, before transmitting the strobe pulse in a transfer cycle with addressing, the main processing unit (10) transmits on the data line a mode selection bit (RW) having a first value if said transfer cycle with addressing is a write cycle, and a second value, complementary to the first value, if said transfer cycle with addressing is a read cycle.

4. A process in accordance with claim 3, wherein the data line (BDA) is connected to the input of a shift register (200-20m) of the peripheral unit (12) timed by the clock line (BCL) and of sufficient size to contain the address bits (A3-A0) and the mode selection bit (RW) transmitted in a transfer cycle with addressing, wherein at least one address value is excluded for the transfer addresses transmitted by the main processing unit (10) in the read cycles with addressing, and wherein, when detecting a strobe pulse, the peripheral unit examines the content of said shift register to determine whether the detected strobe pulse is part of a write cycle with addressing, of a read cycle with addressing or of a direct read cycle, a direct read cycle being selected if the shift register contains the excluded address value and a mode selection bit having said second value.

5. A process in accordance with claim 4, wherein the main processing unit (10) holds the clock line (BCL) at the first logic level when not running a transfer cycle, and wherein the main processing unit and the peripheral unit (12) transmit the data, address and mode selection bits in said transfer cycles in such a way that transitions between said bits occur while the clock line is at a second logic level complementary to the first logic level.

6. A process in accordance with claim 5, wherein while the clock line (BCL) is at the first logic level, the peripheral unit (12) examines the data line (BDA) to detect logic level changes which cannot be attributed to a strobe pulse, and to write the excluded address value and a mode selection bit having said second value in the shift register (200-20m) in response to such detection.

7. A process in accordance with claim 6, wherein the clock line (BCL) and the data line (BDA) are used by the main processing unit (10) to exchange data with other units in accordance with a protocol wherein the data line does not change logic level more than once while the clock line is at the first logic level.

8. A process in accordance with claim 1 or 2, comprising the step of decoding the bits (A3-A0) of the transfer address received by the peripheral unit (12) in a transfer cycle with addressing, in order to determine whether said transfer cycle with addressing is a write cycle or a read cycle.

9. A process in accordance with claim 8 wherein the data line (BDA) is connected to the input of a shift register (201-20m) of the peripheral unit (12) timed by the clock line (BCL) and of sufficient size to contain the address bits (A3-A0) transmitted in a transfer cycle with addressing, wherein at least one address value is excluded for the transfer addresses transmitted by the main processing unit (10) in the transfer cycles with addressing, and wherein, when detecting a strobe pulse, the peripheral unit examines the content of said shift register to determine whether the detected strobe pulse is part of a transfer cycle with addressing or of a direct transfer cycle, a direct transfer cycle being selected if the shift register contains an excluded address value.

10. A process in accordance with claim 9, wherein the direct transfer cycles comprise direct write cycles and direct read cycles, respectively selected when the shift register (201-20m) contains first and second excluded address values, which differ from each other only by a bit located in an input location (201) of the shift register.

11. A process in accordance with claim 10, wherein the main processing unit (10) holds the clock line (BCL) at the first logic level when not running a transfer cycle, and wherein the main processing unit and the peripheral unit (12) transmit the data and transfer address bits in said transfer cycles in such a way that transitions between said bits occur while the clock line is at a second logic level complementary to the first logic level.

12. A process in accordance with claim 11, wherein while the clock line (BCL) is at the first logic level, the peripheral unit (12) examines the data line (BDA) to detect logic level changes which cannot be attributed to a strobe pulse, and to write, in the shift register (201-20m), in response to such detection, a default address value corresponding to one of the first and second excluded address values.

13. A process in accordance with claim 12, wherein, in a direct transfer cycle of the type selected when the shift register (201-20m) contains the default address value, the main processing unit (10) transmits the strobe pulse at the beginning of the cycle, and wherein, in a direct transfer cycle of the type selected when the shift register contains the one of the first and second excluded address values which does not correspond to the default address value, the main processing unit (10) transmits the strobe pulse immediately after the transmission, at the beginning of the cycle, of a bit modifying the one located in the input location (201) of the shift register.

14. A process in accordance with claim 12 or 13, wherein the clock line (BCL) and the data line (BDA) are used by the main processing unit (10) to exchange data with other units in accordance with a protocol wherein the data line does not change logic level more than once while the clock line is at the first logic level.

15. A process in accordance with any one of the preceding claims, wherein the location where the data bits (d1-d0) are read or written in a direct transfer cycle is a fixed location.

16. A process in accordance with any one of claims 1 to 14, wherein the location where the data bits are read or written in a direct transfer cycle is determined from data transmitted by the main processing unit (10) during a previous write cycle A process in accordance with claim 16, wherein the number (p) of data bits transmitted successively in a direct transfer cycle is determined from data transmitted by the main processing unit (10) during a previous write cycle.

17. A process in accordance with any one of the preceding claims, wherein the bus (13) further includes an interrupt line (INT) on which the peripheral unit (12) sends an interrupt request to the main processing unit (10) when it detects an event among a group of specified events, the peripheral unit comprising a status register to contain bits indicating respectively the events of said group which have been detected, and wherein, when it receives a request on the interrupt line, the main processing unit controls the following transfer cycles: a direct read cycle to read a specified portion of the status register; and if the bits contained in said portion of the status register do not indicate an event detection, at least one read cycle with addressing to read the rest of the status register.

18. A process in accordance with any one of the preceding claims, wherein the direct transfer cycles comprise transfer cycles for commands from the main processing unit (10) to the peripheral unit (12).

19. A synchronous serial bus interface for a peripheral unit (12) controlled by a main processing unit (10) by means of a bus (13) including a data line (BDA) and a clock line (BCL), characterized by: strobe pulse detection means (24), to detect strobe pulses occurring on the data line of the bus, while the clock line of the bus is at a first logic level; a first shift register (200-20m ; 201-20m) timed by the clock line of the bus, having a serial data input connected to the data line; a second shift register (20m+120m+n) having a serial data input connected to the serial data output of the first shift register or to the data line, and timed by the output of an EXCLUSIVE OR gate having an input connected to the clock line of the bus, and another input receiving a binary selection signal (CD); an output switch (40) connected on the one hand to the serial data output of the second shift register and on the other hand to the data line of the bus; transfer cycle identification means (28,29,33 ; 50), in order to analyse the content of the first shift register when a strobe pulse is detected so as to identify each transfer cycle to which a detected strobe pulse belongs; write registers (18) addressable from a write address obtained from the first shift register when a write cycle with addressing has been identified, a write cycle with addressing wherein the binary selection signal is held at 0, the output switch is kept open and the detection of the strobe pulse is followed by the parallel transfer of the content of the second shift register into the write register denoted by the write address; read registers (19) addressable from a read address when a read cycle has been identified, a read cycle wherein the detection of the strobe pulse is followed by the parallel transfer of at least part of the content of the read register denoted by the read address into the second shift register and by the serial transfer of the content of the second shift register to the output switch, a serial transfer during which the binary selection signal is set at 1 and the output switch is closed; and transfer cycle managing means (30) to obtain the read address from the first shift register when a read cycle with addressing has been identified, and to supply a previously specified read address (a) when a direct read cycle has been identified.

20. A synchronous serial bus interface in accordance with claim 20, wherein the read address (a) supplied by the read cycle managing means (30) in a direct read cycle is a fixed address.

21. A synchronous serial bus interface in accordance with claim 20, wherein the read address (a) supplied by the read cycle managing means (30) in a direct read cycle is obtained from the content of one of the write registers.

22. A synchronous serial bus interface in accordance with claim 22, wherein the number (p) of bits transferred to the output switch (40) in a direct read cycle is obtained from the content of one of the write registers.

23. A synchronous serial bus interface in accordance with any one of claims 20 to 23, wherein at least one address value is excluded in the read cycles with addressing, and wherein the transfer cycle identification means (28,29,33) examine the content of the first shift register (200-20m) when a strobe pulse has been detected so as to identify a direct read cycle if the first shift register contains the excluded address.

24. A synchronous serial bus interface in accordance with claim 24, wherein the synchronisation of the transfers by the main processing unit (10) is such that transitions between the transmitted bits occur while the clock line (BCL) is at a second logic level complementary to the first logic level, and that the clock line is held at the first logic level when no transfer cycle is run, and wherein filtering means (27,31) are provided to write the excluded address value in the first shift register (200-20m) in response to logic level changes which cannot be attributed to a strobe pulse, occurring on the data line (BDA) while the clock line (BCL) is at the first logic level.

25. A synchronous serial bus interface in accordance with claim 25, wherein the filtering means (31) are further arranged to write the excluded address value in the first shift register (200-20m) at the end of each write cycle.

26. A synchronous serial bus interface in accordance with any one of claims 20 to 26, wherein the write registers (18) are further addressable from a previously specified write address (a) when a direct write cycle has been identified, a direct write cycle wherein the binary selection signal is held at 0, the output switch is kept open and the detection of the strobe pulse is followed by the parallel transfer of the content of the second shift register into the write register denoted by the write address.

Description:

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,

  • dans lequel l'unité principale commande des cycles de transfert synchronisés au moyen de la ligne d'horloge, comprenant des cycles de transfert avec adressage et des cycles de transfert direct,
  • dans lequel, au cours de chaque cycle, l'unité principale transmet sur la ligne de données une impulsion d'activation alors que la ligne d'horloge est à un premier niveau logique,
  • dans lequel, avant de transmettre l'impulsion d'activation dans un cycle de transfert avec adressage, l'unité principale transmet sur la ligne de données des bits d'une adresse de transfert, avec des impulsions de synchronisation correspondantes sur la ligne d'horloge,
  • dans lequel, après avoir reçu l'impulsion d'activation dans un cycle de transfert avec adressage, l'unité périphérique accède à un emplacement de mémoire déterminé à partir de l'adresse de transfert pour écrire ou lire des bits de données présentés successivement sur la ligne de données en synchronisme avec des impulsions de synchronisation correspondantes sur la ligne d'horloge,
  • et dans lequel, après avoir reçu l'impulsion d'activation dans un cycle de transfert direct, l'unité périphérique accède à un emplacement déterminé préalablement audit cycle de transfert direct pour écrire ou lire des bits de données présentés successivement sur la ligne de données en synchronisme avec des impulsions de synchronisation reçues sur la 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 :

    • des moyens de détection d'impulsions d'activation, pour détecter des impulsions d'activation survenant sur la ligne de données du bus alors que la ligne d'horloge du bus est à un premier niveau logique;
    • un premier registre à décalage cadencé par la ligne d'horloge du bus, ayant une entrée de données en série reliée à la ligne de données ;
    • un second registre à décalage ayant une entrée de données en série reliée à la sortie de données en série du premier registre à décalage ou à la ligne de données, et cadencé par la sortie d'une porte OU EXCLUSIF dont une entrée est reliée à la ligne d'horloge du bus et l'autre entrée reçoit un signal binaire de sélection;
    • un commutateur de sortie relié d'une part à la sortie de données en série du second registre à décalage et d'autre part à la ligne de données du bus ;
    • des moyens d'identification de cycle de transfert, pour analyser le contenu du premier registre à décalage lorsqu'une impulsion d'activation est détectée de manière à identifier chaque cycle de transfert dont fait partie une impulsion d'activation détectée ;
    • des registres d'écriture adressables à partir d'une adresse d'écriture obtenue à partir du premier registre à décalage lorsqu'un cycle d'écriture avec adressage a été identifié, cycle d'écriture avec adressage dans lequel le signal binaire de sélection est maintenu à 0, le commutateur de sortie est maintenu ouvert et la détection de l'impulsion d'activation est suivie par le transfert en parallèle du contenu du second registre à décalage dans le registre d'écriture désigné par l'adresse d'écriture ;
    • des registres de lecture adressables à partir d'une adresse de lecture lorsqu'un cycle de lecture a été identifié, cycle de lecture dans lequel la détection de l'impulsion d'activation est suivie par le transfert en parallèle d'une partie au moins du contenu du registre de lecture désigné par l'adresse de lecture dans le second registre à décalage et par le transfert en série du contenu du second registre à décalage vers le commutateur de sortie, transfert en série pendant lequel le signal binaire de sélection est mis à 1 et le commutateur de sortie est fermé; et
    • des moyens de gestion des cycles de transfert pour obtenir l'adresse de lecture à partir du premier registre à décalage lorsqu'un cycle de lecture avec adressage a été identifié, et pour fournir une adresse de lecture préalablement déterminée lorsqu'un cycle de lecture directe a été identifié.

    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 est un schéma synoptique d'un appareil mettant en oeuvre la présente invention ;
    • les figures 2 à 4 sont des chronogrammes illustrant respectivement un cycle d'écriture, un cycle de lecture avec adressage et un cycle de lecture directe exécutés dans un exemple de procédé selon l'invention ;
    • la figure 5 est un schéma d'un exemple de module d'entrée/sortie d'une interface mettant en oeuvre ce procédé ;
    • la figure 6 est un schéma détaillant un exemple de réalisation d'un détecteur d'impulsions d'activation du module de la figure 5 ;
    • la figure 7 est un schéma d'un autre exemple de module d'entrée/sortie d'une interface selon l'invention ; et
    • les figures 8 à 11 sont des chronogrammes illustrant respectivement un cycle d'écriture avec adressage, un cycle de lecture avec adressage, un cycle d'écriture directe et un cycle de lecture directe exécutés dans le module d'entrée/sortie selon la figure 7.

    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:

    • le contrôle des lignes SDA/BDA, SCL/BCL appartient au microprocesseur 10 qui assure la coexistence des deux bus ;
    • lorsque le microprocesseur commande le bus 13 comme représenté sur l'une des figures 2 à 4, aucun cycle de transfert I 2 C n'est exécuté sur le bus 11 puisque l'impulsion d'activation conduit à commencer puis terminer un cycle I 2 C dans lequel rien ne se serait déroulé, et la stabilité de la ligne de données BDA pendant que BCL=1 en dehors de l'impulsion d'activation ne peut générer aucun début de cycle I 2 C;
    • lors de l'exécution d'un cycle de transfert selon le protocole I 2 C, l'impulsion d'activation n'est pas reçue par l'unité périphérique 12 de sorte que des transferts intempestifs sur le bus 13 sont évités.

    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 :

    • un signal RES de réinitialisation générale de l'unité 12;
    • le complément logique du signal de commande d'écriture WR, dont le front montant survenant à la fin d'un cycle d'écriture (figure 2) provoque ainsi l'écriture de l'adresse exclue dans les bascules 20 1 -20 m du premier registre à décalage, et de RW=1 dans la bascule 20 0 ;
    • un signal de fin de cycle de lecture EORC, qui présente une impulsion de niveau logique 0 à la fin de chaque cycle de lecture (figures 3 et 4), pour écrire RW=1 ainsi que l'adresse exclue dans le registre 20 0 -20 m à la fin de chaque cycle de lecture, directe ou avec adressage ; et
    • un signal F de détection de fausses impulsions d'activation, qui repère des changements de niveau logique sur la ligne de données BDA survenant alors que BCL=1 et qui ne sont pas attribuables à une impulsion d'activation.

    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 Q d'une bascule D 27 du détecteur d'impulsions d'activation 24 (figure 6). Cette bascule 27 est remise au niveau 0 à chaque front descendant survenant sur la ligne d'horloge BCL. La ligne BCL est reliée à l'entrée D de la bascule 27 qui est cadencée par les fronts montants survenant sur la ligne de données BDA.

    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é.