La présente invention concerne très généralement les circuits logiques qui sont connus sous le nom d'automates ou sous l'appellation anglaise de "finite state machines" et qui sont les constituants de tous les systèmes logiques intégrés. La présente invention concerne plus particulièrement des automates insensibles aux délais d'horloge.
La fig. 1 est le schéma de principe d'un automate. Un automate est prévu pour recevoir un mot binaire par son entrée 3 et pour fournir un autre mot binaire par sa sortie 5. Lorsqu'on parle du comportement d'un automate, on s'intéresse donc, en fait, à la valeur qu'il fournit en sortie en fonction du mot logique qu'il a reçu en entrée. Dans un automate, la valeur fournie en sortie est fonction non-seulement du mot logique fourni en entrée mais également de l'état dans lequel se trouve l'automate à un instant donné.
Les éléments formant l'automate de la fig. 1 sont de deux types. Les éléments référencés 7 et 9 sont respectivement un premier et un deuxième modules logique combinatoire alors que l'élément référencé il est un module de mémoire. Un module de combinaison logique est formé d'un assemblage de portes logiques qui peut avoir une configuration tout à fait quelconque. La fonction d'un module de combinaison logique est de fournir un mot logique de sortie en réponse à un mot logique reçu en entrée. Précisons que, dans le cas le plus simple, les modules de combinaison logique peuvent se réduire à des connexions. En particulier, un registre à décalage est un exemple d'automate ne comportant pas de modules de combinaison logique.
Le module de mémoire 11 se subdivise en un certain nombre de cellules prévues chacune pour enregistrer la valeur d'une variable binaire. La fonction du module de mémoire d'un automate est de conserver un mot logique d'un instant donné à un autre. Pour ce faire, chacune des cellules d'un module de mémoire est normalement reliée de manière à recevoir un signal d'horloge 15 pour commander des opérations de lecture et d'écriture dans cette cellule.
Le mot logique lu dans la mémoire peut soit être fourni directement comme signal de sortie de l'automate, soit être fourni à l'entrée d'un deuxième module de combinaison logique 9 dont la sortie constitue alors la sortie de l'automate.
On voit encore sur la fig. 1 qu'une ligne de rétroaction 13 relie le module de mémoire 11 à l'entrée du module de combinaison logique 7. Il est en effet nécessaire dans les automates que le mot logique lu dans le module de mémoire 11 soit fourni en retour à l'entrée du module de combinaison logique 7 parallèlement au mot logique reçu par l'entrée 3 de l'automate, puisque la valeur fournie en sortie est fonction non seulement du mot logique fourni en entrée mais encore de l'état dans lequel se trouve l'automate à un instant donné.
On comprendra que dans ces conditions, chaque fois que le signal d'horloge commande une opération d'écriture dans la mémoire, cette dernière enregistre un mot logique qui est fonction d'une part du mot logique reçu en entrée de l'automate et d'autre part d'un mot logique qui avait été enregistré dans la mémoire lors de l'opération d'écriture précédente.
Dans les automates connus, les cellules de la mémoire 11 sont constituées par des bascules, les différentes bascules formant ensemble un registre qu'on appelle un registre d'état. On désigne, de plus, l'état de chacune des bascules par l'expression variable d'état.
Les bascules sont des éléments mémoire conçus pour enregistrer la valeur du signal binaire qui leur est fourni en entrée chaque fois qu'ils reçoivent un signal de commande à cet effet. La valeur enregistrée par une bascule est disponible en permanence pour être lue en sortie.
Le signal d'horloge est fourni aux bascules par un circuit d'horloge qui peut comporter de multiples embranchements. Dans un circuit présentant une certaine complexité, les signaux d'horloge appliqués aux entrées de commande des différentes bascules peuvent présenter, les uns par rapport aux autres, des retards différents qui entraînent une désynchronisation des différentes bascules. Ce phénomène est connu sous l'appellation anglaise de "clock skew".
Ce "clock skew" ou délais d'horloge peut engendrer des défauts de fonctionnement de l'automate. Un exemple de désynchronisation des bascules est donné par le graphe temporel de la fig. 2b qui décrit, à titre d'exemple, le comportement d'un automate comportant deux bascules comme celui représenté schématiquement à la fig. 2a.
Dans l'exemple de la fig. 2a, l'automate ne comporte qu'un seul module de combinaison logique qui correspond au module 7 de la fig. 1. Le module de mémoire 11 représenté à la fig. 2a est prévu pour enregistrer un mot logique de deux bits, il ne comporte donc que deux bascules référencées respectivement 16 et 17. Les deux bascules représentées dans cet exemple sont des bascules de type D bien connues de l'homme du métier. Les bascules D 16 et 17 sont toutes deux reliées à un circuit d'horloge 15 fournissant un signal périodique rectangulaire. A chaque flanc montant du signal d'horloge, chacune des bascules charge en mémoire la valeur qui est fournie sur son entrée D. La valeur stockée dans la bascule est disponible pour être lue par la sortie Q. Un signal d'horloge émis par l'horloge 15 à un temps to atteindra la bascule 16 après un délai dl et la bascule 17 après un délai d2.
On voit sur le diagramme que d2 et plus long que d1. La première bascule 16 enregistre donc une nouvelle valeur avant la deuxième bascule 17. Si le "clock skew" ou autrement dit le temps d2-d1 est suffisamment grand pour que le signal Q1 en sortie de la bascule 16 ait le temps de se propager par la boucle 13 à travers tout le système combinatoire avant que le délai d2 ne soit écoulé, le nouvel état de la bascule 17 sera déterminé en prenant en compte le nouvel état de la bascule 16 au lieu de son ancien état. Dans ces conditions, les valeurs fournies en sortie de l'automate seront bien évidemment inutilisables.
Les délais d'horloge peuvent également provoquer d'autres problèmes. En effet, un système logique complexe comprend le plus souvent une pluralité d'automates interconnectés, et en particulier des automates reliés en série. Dans ces conditions, les valeurs fournies aux entrées de certains des automates peuvent être des valeurs qui ont été fournies par d'autres automates connectés en amont. On comprendra, qu'avec une telle configuration, si un décalage existe entre les signaux d'horloge fournis à l'automate qui fournit les valeurs logiques et les signaux d'horloge fournis à l'automate qui reçoit les valeurs logiques, le nouvel état de l'automate qui reçoit les valeurs logiques risque d'être déterminé en prenant en compte le nouvel état de l'automate qui fournit les valeurs logiques au lieu de son ancien état.
Nous sommes donc en présence d'un problème identique à celui que nous avions déjà décrit en relation avec un seul automate comportant une ligne de rétro-action.
Un but de la présente invention est de remédier aux problèmes liés aux délais d'horloge qui viennent d'être décrits.
A cet effet, la présente invention a pour objet un automate comportant des moyens de mémoire formés d'une pluralité de cellules de mémoire, chacune desdites cellules de mémoire étant reliée à une branche d'un circuit d'horloge pour recevoir dudit circuit d'horloge un signal d'horloge cyclique pour commander des opérations d'écriture et de lecture dans ladite cellule de mémoire, ledit circuit d'horloge comportant en outre plusieurs branches et les délais de propagation dudit signal d'horloge dans lesdites branches étant inégaux, ledit automate étant caractérisé en ce que lesdites cellules de mémoire sont prévues pour, après chaque opération d'écriture, n'autoriser une opération de lecture qu'au bout d'un laps de temps prédéterminé,
ledit laps de temps étant au moins sensiblement égal à la différence entre les délais de propagation dans lesdites branches et inférieur à un cycle d'horloge.
Grâce à ces caractéristiques le risque que le nouvel état enregistré par certaines des cellules de mémoire d'un automate soit déterminé en prenant en compte le nouvel état d'une autre cellule de mémoire au lieu de l'ancien état de cette cellule de mémoire est éliminé.
D'autres caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés dans lesquels:
la fig. 1 est le schéma de principe d'un automate;
la fig. 2a est une représentation schématique d'un exemple particulier d'automate dans lequel les moyens de mémoire sont constitués par deux bascules D;
la fig. 2b représente un diagramme temporel de l'état des bascules de l'automate de la fig. 2a;
la fig. 3a représente un premier mode de réalisation d'un automate selon la présente invention dans lequel les moyens de mémoire sont constitués par deux bascules D;
la fig. 3b représente un diagramme temporel de l'état d'une bascule de l'automate de la fig. 3a ainsi que de l'état de l'interrupteur associé à la sortie de cette bascule;
la fig. 4 représente une première variante d'une cellule de mémoire d'un automate selon la présente invention;
la fig. 5 représente une deuxième variante d'une cellule de mémoire d'un automate selon la présente invention.
La fig. 3a représente de façon très schématique l'automate de la fig. 2a modifié conformément à un mode de réalisation de la présente invention. Selon ce premier mode de réalisation, on a ajouté un interrupteur au niveau de la sortie Q de chacune des bascules D. Ces deux interrupteurs référencés respectivement 19 et 20 sont connectés pour recevoir les signaux d'horloge qui commandent les bascules 16 et 17. Chacun de ces interrupteurs est prévu pour s'ouvrir lorsque le flanc montant du signal d'horloge rectangulaire provoque le chargement d'une nouvelle valeur dans la bascule et pour se refermer au flanc descendant du signal d'horloge.
La fig. 3b est un diagramme temporel décrivant, en fonction d'un signal d'horloge CK, l'évolution de l'état de la sortie Q d'une bascule D 16 ou 17 de l'automate de la fig. 3a ainsi que l'état de l'interrupteur 19 ou 20 qui est associé à cette bascule. Grâce à l'interrupteur en sortie de chaque bascule, l'état lu par une autre bascule située en aval de la première bascule ne correspond pas à la trace Q du diagramme temporel de la fig. 3b mais à la trace Q min . Dans ces conditions, il n'est pas possible que le nouvel état enregistré par la première bascule soit lu avant un délai d'une demi-période d'horloge. Le décalage temporel entre deux horloges pouvant facilement être limité à quelque chose de sensiblement inférieur à une demi-période d'horloge, l'automate selon l'invention, qui vient d'être décrit, remédie complètement aux problèmes de l'art antérieur mentionnés plus haut.
Précisons que, contrairement à ce que l'on pourrait craindre à première vue, le signal Q min restera en général bien défini après l'ouverture de l'interrupteur. En effet, chaque bascule en aval de l'interrupteur présente une certaine capacité parasite au niveau de son entrée D. Cette capacité parasite suffit pour conserver l'ancien état du signal jusqu'à la prochaine fermeture de l'interrupteur.
La fig. 4 décrit à titre d'exemple un mode de réalisation d'un des interrupteurs 19 ou 19 min de la fig. 3a. Dans un mode particulier de réalisation de la présente invention, on remplacera chacune des cellules de mémoire d'un automate de l'art antérieur par un élément de circuit comme celui qui est représenté à la fig. 4.
Dans l'élément de circuit de la fig. 4, l'interrupteur, référencé 19, qui est disposé sur la sortie Q de la bascule 17 est constitué par une porte inverseuse "tri-state". Une telle porte, connue de l'homme du métier, présente une haute impédance lorsque le signal sur son entrée de commande est à son niveau bas se comporte comme un inverseur lorsque le signal sur son entrée de commande est à son niveau haut.
On voit sur la fig. 4 que la porte inverseuse "tristate" 19 est reliée au circuit d'horloge 15 par l'intermédiaire d'un inverseur référencé 21. Grâce à la présence de l'inverseur 21, l'interrupteur formé par la porte "tri-state" s'ouvre à l'instant du flanc montant du signal d'horloge et se ferme sur le flanc descendant du signal d'horloge.
On voit encore sur la fig. 4 qu'au lieu de relier directement l'entrée de commande de la bascule D 17 au circuit d'horloge 15, on a intercalé deux inverseurs en série, référencés 21 et 22, entre le circuit d'horloge 15 et la bascule 17. La fonction cette paire d'inverseurs 21 et 22, montés en série, est d'introduire un retard dans le signal d'horloge destiné à la bascule D 17 de manière à assurer que cette bascule ne commute pas avant la porte "tri-state" 19.
On voit encore sur la fig. 4 un condensateur référencé 25 connecté entre l'entrée D de la bascule 17 et la masse. La fonction de ce condensateur est de conserver dynamiquement la valeur fournie à l'entrée de la bascule 17 lorsque les interrupteurs des bascules situées en amont de ladite bascule sont ouverts. Comme nous l'avons déjà dit, dans la plupart des cas pratiques la fonction du condensateur 25 pourra être assurée par la capacité parasite au niveau de l'entrée D de la bascule 17.
La porte tri-state 19 est du type "inverseuse" et sa réalisation comporte moins de transistors qu'une porte tri-state "non-inverseuse". Néanmoins, il est clair que l'on peut utiliser cette dernière à la place de la porte "tri-state" 19 pour autant que la sortie Q de la bascule 17 soit utilisée au lieu de la sortie Q.
La fig. 5 représente un élément de circuit formé de trois registres à verrouillage qui sont connectés de façon à reproduire le comportement d'une bascule D équipée d'un interrupteur comme celle qui est représentée à la fig. 4. Dans un autre mode particulier de réalisation de la présente invention chacune des bascules d'un automate de l'art antérieur sera remplacée par un élément de circuit comme celui qui est représenté à la fig. 5.
Les registres à verrouillage sont des composants logiques bien connu de l'homme du métier. Comme les bascules D décrites plus haut, ils comportent une entrée D pour le signal, une entrée de commande et une sortie Q pour le signal. Dans un registre à verrouillage, lorsque le signal de commande est à son niveau haut, état déverrouillé, le signal fourni par la sortie Q est égal au signal reçu par l'entrée D, et lorsque le signal de commande passe à son état bas, état verrouillé, le registre continue de fournir par sa sortie Q la valeur présente sur son entrée au moment du passage au niveau haut du signal de commande.
L'élément de circuit de la fig. 5 comporte trois registres à verrouillage référencés respectivement 27, 29 et 31. Comme on peut le voir sur la figure, les trois registres 27, 29 et 31 sont connectés en série et ils ont chacun leur entrée de commande reliée au circuit d'horloge. Les entrées de commande du premier et du troisième registre 27 et 31 sont des entrées inverseuses alors que l'entrée de commande du deuxième registre 29 est une entrée non-inverseuse. Dans ces conditions, les registres 27 et 31 se verrouillent à l'instant du flanc montant du signal d'horloge alors que le registre 29 se verrouille à l'instant du flanc descendant du signal d'horloge.
Sur la base des remarques ci-dessus, on comprendra que puisque, d'une part, le premier et le troisième registre se verrouillent au moment du flanc montant du signal d'horloge et que, d'autre part, le deuxième registre se déverrouille à ce même moment, le premier registre mémorise la nouvelle valeur fournie en entrée alors que le troisième registre mémorisera la valeur enregistrée par le premier registre au cycle précédant. Après une demi-période du signal d'horloge le premier et le troisième registre se déverrouillent alors que le deuxième registre se verrouille. Dans ces conditions la nouvelle valeur qui était enregistrée dans le premier registre est mémorisée dans le deuxième registre et est transmise au troisième registre. La sortie Q du troisième registre mémorise ensuite cette valeur en continu jusqu'à l'instant du flanc descendant du cycle d'horloge suivant.
Un avantage de l'élément de circuit qui vient d'être décrit est qu'il combine à la fois la fonction d'interrupteur et celle de mémorisation de l'ancienne valeur de sortie pendant la demi-période où l'interrupteur est ouvert. L'élément de circuit de la fig. 5 peut donc être utilisé même dans le cas où les entrées des registres ne sont pas associées à une capacité parasite.