Brevet FR2775142A1 — publié le 19990820

Machines d'états pour circuit intégré fonctionnant à fréquence élevée. L'invention concerne les machines d'états pour circuit intégré fonctionnant à fréquence élevée, et plus généralement les circuits intégrés comportant des machines d'états. Les machines d'états, classiquement désignées par "séquenceurs", sont généralement utilisées dans les circuits numériques pour produire des séquences de commande, conditionnelles ou non, pour tout type de circuit logique utilisé dans un circuit utilisant la logique séquentielle, tel que par exemple un microprocesseur, un compteur, une mémoire et plus généralement les circuits séquentiels complexes. Les séquenceurs comportent au moins un circuit combinatoire dans lequel sont codées des équations logiques combinant des variables d'entrées et des variables d'états, de manière à produire des variables d'état futur, représentatives de l'état futur dans lequel se trouvera la machine d'état, en correspondance avec des variations des états logiques des variables présentes sur des entrées de la dite machine. Les variables d'états sont mémorisées dans un registre à chaque période d'une horloge de cadencement. L'homme du métier connaît de telles machines d'états, en particulier celles de "MOORE" ou de "MEALAY", qui sont représentées sur les figures 1 et 2. La machine d'états de MOORE 1, représentée schématiquement sur la figure 1, comporte un premier circuit combinatoire CA dont les sorties de données sont reliées aux entrées de données d'un registre de mémorisation RA. Le registre de mémorisation RA est constitué, par exemple, d'une série de bascules de type D et est actualisé par un signal d'horloge HCk. Les sorties de données du registre RA sont ensuite reliées aux entrées de données d'un deuxième circuit combinatoire CE. Les dits premier et deuxième circuits combinatoires CA et Cg ont respectivement un temps maximal de propagation TCA et TCB. Le premier circuit combinatoire CA produit des variables logiques d'état futur EF à partir d'au moins un signal d'entrée logique I et d'au moins une variable logique d'état courant EC qui est située en sortie du registre de mémorisation RA. Le deuxième circuit combinatoire produit des variables de sortie S1, correspondantes aux variables de sortie de la machine d'état 1, en fonction des variables logiques d'état courant. Ainsi, les variables de sortie S1 de la machine d'état de MOORE sont fonction des variables logiques d'état courant de la dite machine d'état 1. Les variables de sortie S1 sont utilisées pour commander un circuit logique 2, par exemple une unité arithmétique et logique ALU qui sera désignée par la suite "ALU". Comme montré figure 1, 1'ALU est située entre des registres R2 du circuit logique 2. Le temps nécessaire pour que 1'ALU effectue une opération logique est TALUS La fréquence de fonctionnement maximale FMAX du dispositif de la figure 1 se calcule en considérant un intervalle de temps maximal possible entre deux fronts actifs de l'horloge de cadencement HCk. Ainsi, dans l'exemple de la figure 1, TCA est le temps qui définit un temps maximal du changement d'état généré par le premier circuit combinatoire CA, ce qui peut autoriser une fréquence de fonctionnement égale à fl=l/TCA. Par ailleurs, une fois que le changement d'état s'est opéré, le temps nécessaire pour obtenir le résultat en sortie de 1'ALU est égal à TCB+TALuB correspondant au cumul du temps de propagation nécessaire au deuxième circuit combinatoire CE et au temps de propagation de 1'ALU après réception de la commande provenant du deuxième circuit combinatoire Cg, ce qui autorise une fréquence de fonctionnement égale à f2=l/ (TCB+TALU) . Cette fréquence f2, en général beaucoup moins importante que la fréquence f1, devient la fréquence maximale FMAX d'utilisation du circuit. En relation avec la figure 2, la machine d'état de MEALAY 3 comporte un premier circuit combinatoire CC dont les sorties de données sont reliées aux entrées de données d'un registre de mémorisation RC. Celui-ci est, constitué, par exemple, d'une série de bascules de type D et actualisé par un signal d'horloge HCk. Les sorties de données du registre RC sont ensuite reliées aux entrées de données d'un deuxième circuit combinatoire CD. Les dits premier et deuxième circuits combinatoires CC et CD ont respectivement un temps de propagation TCC et TCD. Le premier circuit combinatoire CC produit des variables logiques d'état futur EF représentatives de l'état futur de la machine, à partir d'au moins un signal d'entrée logique I et de variables logiques d'état courant EC situées en sortie du registre RC. Le deuxième circuit combinatoire produit des variables de sortie S3 correspondants aux variables de sortie de la machine d'état 3, en fonction des variables logiques d'état courant EC et du signal d'entrée logique I. Ainsi, les variables de sortie S3 de la machine d'état de MEALAY sont fonction des variables logiques d'état courant EC et des variables logiques d'entrée I de la dite machine d'état 3. Les variables de sortie S3 sont utilisées pour commander un circuit logique 4, par exemple une mémoire 4 ayant un temps d'accès TMEM. La fréquence de fonctionnement maximale FMAX du dispositif de la figure 3 se calcule en considérant un intervalle de temps maximal possible entre deux fronts actifs de l'horloge de cadencement HCK. Ainsi, dans l'exemple de la figure 1, TCC est le temps qui définit un temps maximal de changement d'état, généré par le premier circuit combinatoire CC, ce qui peut autoriser une fréquence de fonctionnement égale à fl=l/TCC. Par ailleurs, une fois que le changement d'état est établi, le temps nécessaire pour sortir les variables stockées dans la mémoire est TCD+TMEM, correspondant au cumul du temps de propagation du deuxième circuit combinatoire CD et du temps d'accès de la mémoire, ce qui autorise une fréquence de fonctionnement égale à 2=1/(TCD+TMEM) Cette fréquence f2, en général beaucoup moins importante que la fréquence fl, définie la fréquence maximale FMAX. Par ailleurs, la conception des circuits intégrés s'effectue à partir de langages de description relativement évolué, tel que le langage VHDL (Very Hard Description Language) connu de l'homme du métier. Les concepteurs de circuits intégrés se contentent de donner des équations logiques de la machine d'états à des ordinateurs qui compilent ensuite les dites équations pour produire un schéma de circuit de logique combinatoire. Dans le cas d'équations complexes, le circuit combinatoire obtenu est également complexe. Le résultat obtenue par compilation n'est pas forcément satisfaisant pour ce qui concerne les temps de propagation avec les machines d'états de MOORE et les machines d'états de MEALAY, lorsque les machines d'états doivent gérer un grand nombre d'états. L'invention a pour but de proposer un circuit comportant au moins une machine d'état dont l'architecture permet d'obtenir des circuits combinatoires avec des temps de propagation réduits et non reporté sur le temps de propagation d'un circuit commandé. L'invention a pour objet un circuit intégré comprenant au moins une machine d'états qui comporte un premier registre pour mémoriser un état de la machine d'état et fournir sur des sorties des variables d'état courant, le premier registre ayant en outre des entrées de données à mémoriser et une entrée d'horloge pour recevoir un signal d'horloge; un premier circuit de logique combinatoire ayant des premières et deuxièmes entrées et des sorties, les premières entrées étant connectées aux sorties du premier registre pour recevoir les variables d'état courant, les deuxièmes entrées étant connectée à des bornes d'entrée pour recevoir des variables d'entrée et les sorties étant connectées aux entrées de données du premier registre pour fournir des variables d'état futur à mémoriser dans le premier registre lors d'un prochain front actif du signal d'horloge; un deuxième registre pour mémoriser et fournir sur des sorties des signaux de commande, le deuxième registre ayant en outre des entrées de données à mémoriser et une entrée d'horloge pour recevoir le signal d'horloge; un deuxième circuit de logique combinatoire ayant des sorties connectées aux entrées du deuxième registre pour fournir des signaux de commande future qui seront mémorisés dans le deuxième registre lors d'un prochain front actif du signal d'horloge. Dans un premier mode de réalisation, le deuxième circuit combinatoire comporte des entrées qui sont connectées aux sorties du premier circuit combinatoire pour recevoir la variable d'état futur. Dans un deuxième mode de réalisation, le deuxième circuit combinatoire comporte des premières et deuxièmes entrées, les premières entrées étant connectées aux sorties du premier registre pour recevoir la variable d'état courant, et les deuxièmes entrées du deuxième circuit combinatoire étant connectées aux bornes d'entrée pour recevoir la variable d'entrée. Dans une variante, la machine d'état comporte en outre un troisième registre pour mémoriser partiellement un état de la dite machine d'état et fournir sur une sortie des signaux de commande qui correspondent à des variables d'état, le troisième registre comportant en outre des entrées de données connectées aux sorties du premier circuit combinatoire, et ayant une entrée d'horloge pour recevoir le signal d'horloge. L'invention sera mieux comprise et d'autres particularités et avantages apparaîtront à la lecture de la description qui va suivre, la description faisant référence aux dessins annexés parmi lesquels: - la figure 1 représente schématiquement une machine d'état de MOORE, - la figure 2 représente schématiquement une machine d'état de MEALAY, - la figure 3 représente schématiquement le premier mode de réalisation d'une machine d'état selon l'invention, - la figure 4 représente schématiquement le deuxième mode de réalisation d'une machine d'état selon 1' invention, - la figure 5 représente schématiquement une variante du deuxième mode de réalisation. On ne reviendra pas sur les figures 1 et 2, leurs descriptions ayant été faite précédemment. Comme le montre la figure 3, une machine d'état 5 comporte un premier circuit de logique combinatoire C1 ayant des première et deuxième entrées de données et une sortie de données. Le premier circuit de logique combinatoire C1, désigné de manière simplifiée par "premier circuit combinatoire", est un circuit dans lequel sont codées des équations logiques combinant des variables d'entrée et des variables d'état courant EC reçues respectivement sur des premières et deuxièmes entrées, pour produire sur des sorties des variables d'état futur EF correspondant à un état futur dans lequel se trouvera la machine d'état 5. Le premier circuit combinatoire C1 demande un premier temps de propagation TCl pour fournir les variables d'état futur. La machine d'état 5 comporte également un premier registre R1, par exemple constitué de bascules de type D, ayant une entrée de donnée, une entrée d'horloge, et une sortie. Le premier registre sert à mémoriser des variables et à fournir, sur sa sortie, les variables d'état courant EC. L'entrée de donnée du premier registre R1 est connectée à la sortie du premier circuit combinatoire C1. L'entrée d'horloge du premier registre R1 reçoit un signal d'horloge HCk pour que le dit registre mémorise les variables d'état futur EF lors de chaque front actif du signal d'horloge HCk. Les premières entrées du premier circuit combinatoire C1 sont connectées aux sorties du premier registre R1 pour recevoir les variables d'état courant EC. Les deuxièmes entrées du premier circuit combinatoire C1 sont connectées à des bornes d'entrée pour recevoir les variables d'entrée I. Les sorties du premier circuit combinatoire C1 sont connectées aux entrées de données du premier registre R1 pour lui fournir les variables d'état futur EF. Il est à noter que, lors de chaque front actif du signal d'horloge HCk, les variables d'état courant EC sont actualisées dans le premier registre R1, les variables d'état futur EF y étant alors mémorisées pour devenir de nouvelles variables d'état courant EC. De plus, la machine d'état comporte un deuxième circuit combinatoire C2 et un deuxième registre R2. Le deuxième circuit combinatoire C2 a des entrées connectées aux sorties du premier circuit combinatoire C1 et a des sorties pour fournir une variable de commande future. Le deuxième registre R2 dispose d'entrées de données, d'une entrée d'horloge et de sorties. Le deuxième registre R2 sert à mémoriser des variables et à fournir, sur ses sorties, des variables de commande Sg. Les entrées de données du deuxième registre R2 sont connectées aux sorties du deuxième circuit combinatoire C2. L'entrée d'horloge du registre R2 reçoit le signal d'horloge HCk. Les variables de commande future sont mémorisées dans le deuxième registre R2 lors de chaque front actif du signal d'horloge HCk et deviennent alors les variables de commande Sg. Le deuxième circuit combinatoire C2, permettant de décoder les variables d'état futur EF, a besoin d'un deuxième temps de propagation TC2. La variable de commande Ss permet de commander un autre circuit utilisant de la logique séquentielle, tel que par exemple une mémoire 8 ayant un temps d'accès TMEM8. La fréquence d'utilisation maximale du circuit utilisant la machine d'état 5 se calcule en considérant un intervalle de temps entre deux fronts actifs du signal d'horloge HCk. Grâce à la disposition de la figure 3, seul le temps d'accès TMEM8 de la mémoire 8 est à prendre en compte pour déterminer la fréquence maximale de fonctionnement de la mémoire 8, la fréquence étant égale à fi=i/TMEM8. Par ailleurs, le temps nécessaire pour obtenir la variable de commande Sg en sortie du deuxième circuit combinatoire C2 est égal à TCl+TC2, correspondant au cumul du temps de propagation du premier circuit combinatoire C1 et du temps de propagation du deuxième circuit combinatoire C2, ce qui peut autoriser une fréquence f2=l/(TCl+TC2). Ainsi, dans les cas où le temps d'accès TMEM8 est relativement important par rapport au premier temps de propagation TCl, il est certain que l'on a TC1+TC2 Si TMEM8 > TC1+TC2 alors la machine d'état n'intervient pas pour déterminer la fréquence FMAX d'utilisation du circuit. Comme le montre la figure 4, une machine d'état 6 comporte un premier circuit de logique combinatoire C3 ayant des première et deuxième entrées de données et une sortie de données. Le premier circuit de logique combinatoire C3, désigné de manière simplifiée par "premier circuit combinatoire", est un circuit dans lequel sont codées des équations logiques combinant des variables d'entrée et des variables d'état courant EC reçues respectivement sur des premières et deuxièmes entrées, pour produire sur des sorties des variables d'état futur EF correspondant à un état futur dans lequel se trouvera la machine d'état 6. La machine d'état 6 comporte également un premier registre R3, par exemple constitué de bascules de type D, ayant une entrée de donnée, une entrée d'horloge, et une sortie. Le premier registre sert à mémoriser des variables et à fournir, sur sa sortie, les variables d'état courant EC. L'entrée de donnée du premier registre R3 est connectée à la sortie du premier circuit combinatoire C3. L'entrée d'horloge du premier registre R3 recevant un signal d'horloge HCk pour que le dit registre mémorise les variables d'état futur EF lors de chaque front actif du signal d'horloge HCk. Les premières entrées du premier circuit combinatoire C3 sont connectées aux sorties du premier registre R3 pour recevoir les variables d'état courant EC. Les deuxièmes entrées du premier circuit combinatoire C3 sont connectées à des bornes d'entrée pour recevoir les variables d'entrée I. Les sorties du premier circuit combinatoire C3 sont connectées aux entrées de données du premier registre R3 pour lui fournir les variables d'état futur EF. Il est à noter que, lors de chaque front actif du signal d'horloge HCkl les variables d'état courant EC sont actualisées dans le premier registre R3, les variables d'état futur EF y étant alors mémorisées pour devenir de nouvelles variables d'état courant EC. De plus, la machine d'état comporte un deuxième circuit combinatoire C4 et un deuxième registre R4. Le deuxième circuit combinatoire C4 dispose de premières et deuxièmes entrées, et des sorties pour fournir une variable de commande future, les premières et deuxièmes entrées du circuit combinatoire C4 étant connectées respectivement aux bornes d'entrée pour recevoir les variables d'entrées I et aux sorties du premier registre C3 pour recevoir les variables d'état courant EC. Le deuxième registre R4 dispose d'entrées de données, d'une entrée d'horloge et de sorties. Le deuxième registre R4 sert à mémoriser et à fournir, sur ses sorties, des variables de commande S6. Les entrées de données du deuxième registre R4 sont connectées aux sorties du deuxième circuit combinatoire C4. L'entrée d'horloge du registre R4 reçoit le signal d'horloge HCk. Les variables de commande future sont mémorisées dans le deuxième registre R4 lors de chaque front actif du signal d'horloge HCk et deviennent alors les variables de commande S6. La variable de commande S6 permet de commander un autre circuit utilisant de la logique séquentielle, tel que par exemple une mémoire 9 ayant un temps d'accès TMEM9. Les premier et deuxième circuits combinatoires C3 et C4 ont besoin respectivement de premier et deuxième temps de propagation TC3 et TC4. Comme le deuxième circuit combinatoire C4 effectue un décodage des variables d'états en parallèle avec le premier circuit combinatoire C3, la fréquence maximale d'utilisation est soit 1/Tc3, soit 1/Tc4, ou soit l/TMEM9. Cette machine d'état 6 présente les mêmes avantages que la machine d'état 5 de la figure 3. De plus, il est plus facile de rendre la fréquence maximale du circuit indépendante de la machine d'état 6 car il est certain que les temps de propagation TC3 et TC4 sont plus petit que la somme de ces temps, c est à dire TC3+TC4. La figure 5 représente une machine d'état 7 qui est une amélioration de la machine d'état 6 de la figure 4. La machine d'état 7 comporte en outre un troisième registre R7 ayant des entrées de données, une entrée d'horloge, et des sorties, le troisième registre R7 permettant de mémoriser une variable d'état EF. L'entrée de donnée du premier registre R7 est connectée à la sortie du premier circuit combinatoire Cg. L'entrée d'horloge du premier registre R7 reçoit un signal d'horloge HCk pour que le dit registre mémorise les variables d'état futur EF lors de chaque front actif du signal d'horloge HCk. Les sorties du troisième registre R7 fournissent des signaux de commande s7 qui correspondent à certaines des variables d'état courant. Un circuit esclave 10 reçoit les signaux de commande S6 et S7. Le fonctionnement et les avantages de la machine d'état 7 sont les mêmes que la machine d'état 6. Toutefois dans certains cas, le découplage réalisé avec le troisième registre R7 a pour effet de diminuer la taille du circuit intégré, cette diminution étant due à la suppression de la duplication d'éléments fonctionnels des premier et deuxième circuits combinatoire causée par une duplication d'équation dans ces deux circuits, pour le circuit de la figure 5. REVENDICATIONS 1. Circuit intégré comprenant au moins une machine d'états (5, 6, 7) qui comporte - un premier registre (R1, R3) pour mémoriser un état de la machine d'état (5, 6, 7) et fournir sur des sorties des variables d'état courant (EC) , le premier registre ayant en outre des entrées de données à mémoriser et une entrée d'horloge pour recevoir un signal d'horloge (HCk), - un premier circuit de logique combinatoire (C1) ayant des premières et deuxièmes entrées et des sorties, les premières entrées étant connectées aux sorties du premier registre (R1, R3) pour recevoir les variables d'état courant (EC) , les deuxièmes entrées étant connectée à des bornes d'entrée pour recevoir des variables d'entrée (I) et les sorties étant connectées aux entrées de données du premier registre (R1, R3) pour fournir des variables d'état futur (EF) à mémoriser dans le premier registre lors d'un prochain front actif du signal d'horloge, caractérisé en ce que la machine d'état (5, 6, 7) comporte en outre - un deuxième registre (R2, R4) pour mémoriser et fournir sur des sorties des signaux de commande (S5, S6), le deuxième registre (R2, R4) ayant en outre des entrées de données à mémoriser et une entrée d'horloge pour recevoir le signal d'horloge (HCk)l - un deuxième circuit de logique combinatoire (C2, C4) ayant des sorties connectées aux entrées du deuxième registre (R2, R4) pour fournir des signaux de commande future qui seront mémorisés dans le deuxième registre (R2, R4) lors d'un prochain front actif du signal d'horloge (HCk). 2. Circuit intégré selon la revendication 1, caractérisé en ce que le deuxième circuit combinatoire (C2) comporte des entrées qui sont connectées aux sorties du premier circuit combinatoire (C1) pour recevoir la variable d'état futur (EF). 3. Circuit intégré selon la revendication 1, caractérisé en ce que le deuxième circuit combinatoire (C4) comporte des premières et deuxièmes entrées, les premières entrées étant connectées aux sorties du premier registre (R3) pour recevoir la variable d'état courant (EC), et les deuxièmes entrées du deuxième circuit combinatoire (C4) étant connectées aux bornes d'entrée pour recevoir la variable d'entrée (I). 4. Circuit intégré selon la revendication 3, caractérisé en ce que la machine d'état (7) comporte en outre un troisième registre (R7) pour mémoriser partiellement un état de la dite machine d'état (7) et fournir sur une sortie des signaux de commande (S7) qui correspondent à des variables d'état, le troisième registre (R7) comportant en outre des entrées de données connectées aux sorties du premier circuit combinatoire (C3), et ayant une entrée d'horloge pour recevoir le signal d'horloge (HCk).