Brevet FR2779887A1 — publié le 19991217

Circuit élémentaire de mémorisation. L'invention concerne un circuit élémentaire de mémorisation. Plus particulièrement, l'invention se rapporte à un circuit élémentaire de mémorisation utilisé lors d'une transposition de technologie de circuits intégrés anciens. Le développement d'un circuit intégré est relativement long et coûteux. Les technologies utilisées pour la fabrication de circuits intégrés changent actuellement tous les 18 mois. Des circuits de conception ancienne, par exemple 15 ans, peuvent cependant avoir une grande utilité. En général, ces circuits sont utilisés comme circuits de bibliothèque pour la conception de circuits plus importants. Pour des circuits complexes (tels que des microprocesseurs), une transposition du circuit est nécessaire. Cette transposition a pour but de rendre le circuit compatible avec la nouvelle technologie. Par ailleurs, lorsque l'on réalise la simulation logique d'un circuit complexe, on utilise des émulateurs logiques à base de composants programmables. Ces émulateurs logiques permettent de tester plus rapidement les fonctionnalités logiques d'un circuit qu'une simulation sur ordinateur. Il sont généralement utilisés pour simuler le circuit complet après que chaque partie ait été simulée avec succès sur ordinateur. Le schéma logique du circuit à simuler est alors transposé sur l'émulateur logique. Or, les méthodes de conception ont beaucoup évoluées dans le domaine de la micro-électronique. A l'heure actuelle, les circuits de type synchrone utilisent une horloge globale pour la totalité du circuit intégré. De même, les signaux d'horloge sont amenés directement sur les entrées de bascules qui ont besoin du signal d'horloge. Ces règles sont intervenues pour simplifier la conception des circuits dont la complexité croît sans cesse. Les anciennes méthodes de conception n'ayant pas les mêmes contraintes, l'homme du métier était amené à utiliser des circuits de logique combinatoire sur les signaux d'horloge afin de réduire la taille des circuits. Un problème de parasite (connu sous le nom de glitch) était pris en compte et le circuit combinatoire était réalisé pour que ces parasites soient absorbés. L'absorption des parasites se fait en jouant sur les positions de portes logiques entre elles en tenant compte des temps de propagation de toutes les portes. Dans certains cas, l'absorption se faisait également en tenant compte des différents retards que les signaux pouvaient avoir à l'entrée du circuit de logique combinatoire. La figure 1 représente une bascule 1 de type D ayant son entrée d'horloge reliée à une sortie d'un circuit de logique combinatoire 2 selon un mode de réalisation ancien. Le circuit de logique combinatoire dispose par ailleurs de cinq entrées, trois des entrées recevant des signaux de condition Ci à C3 et les deux autres entrées recevant deux signaux d'horloge Hl et H2. Le signal présent sur la sortie du circuit de logique combinatoire 2 correspond au résultat d'une fonction logique qui combine tous les signaux d'entrées. Cependant ce circuit de logique combinatoire 2 est conçu en tenant compte des différents temps de propagation des éléments le composant pour éviter d'avoir des parasites qui risqueraient d'être pris en compte par l'entrée d'horloge de la bascule 1. Evidemment, l'homme du métier sait que la transposition directe dans une nouvelle technologie peut ne pas fonctionner. Il est donc nécessaire de transposer le circuit de la figure 1 comme indiqué sur la figure 2. Le schéma de la figure 2 comporte un multiplexeur 3 à deux entrées de données, une entrée de sélection et une sortie. La première entrée du multiplexeur 3 reçoit la donnée à mémoriser. La deuxième entrée du multiplexeur 3 est connectée à la sortie de la bascule 1. L'entrée de sélection du multiplexeur 3 est connectée à la sortie du circuit de logique combinatoire 2. la sortie du multiplexeur 3 est connectée à l'entrée de donnée de la bascule 1. L'horloge Hi (dans le cas o c'est l'horloge Hi la plus rapide) est connectée à l'entrée d'horloge de la bascule 1. Le multiplexeur 3 et la bascule 1 correspondent à une bascule de type D avec entrée de validation de données. L'entrée de la bascule est validée lors d'un front actif de l'horloge lorsque la sortie du circuit de logique combinatoire est active. Cependant, dans certains cas une telle transposition ne convient pas. Cela peut provenir de diverses causes. Si, dans le circuit d'origine, les signaux d'horloge sont combinés entre eux pour former une impulsion, il peut arriver que l'impulsion ne recouvre pas un front actif de l'horloge choisie. Il peut également arriver qu'une horloge soit arrêtée lorsque c'est l'autre qui est active. Un signal d'horloge peut être de fréquence variable, ce qui ne permet pas de déterminer quelle horloge doit être utilisée pour synchroniser la bascule 1. D'autres problèmes peuvent également survenir. La seule solution à la disposition de l'homme du métier est de refaire une partie du circuit. Cependant si l'on transpose le circuit, c'est justement pour éviter d'avoir à le refaire. Cela est d'autant plus gênant si c'est au niveau de la transposition du circuit sur un émulateur logique que le problème se pose alors que des simulations logiques sur ordinateur ont montré le bon fonctionnement du circuit concerné. L'invention a pour but de proposer un circuit de substitution pour les bascules élémentaires afin de pouvoir transposer automatiquement une bascule dont le signal d'horloge provient d'un circuit de logique combinatoire. Pour se faire, l'invention utilise une horloge suréchantillonnée et un générateur d'impulsion synchrone pour valider les données. L'invention a pour objet un circuit d'émulation de bascule d'un type défini disposant d'une entrée de donnée, d'une sortie de donnée et d'une entrée d'horloge, ledit circuit mémorisant une information relative à un signal présent sur l'entrée de donnée lors d'un front actif d'un signal présent sur l'entrée d'horloge, le circuit d'émulation comportant un générateur de signal d'horloge qui produit un signal d'horloge interne, un générateur d'impulsions synchrones qui produit une impulsion pendant une période du signal d'horloge interne chaque fois qu'un front actif se présente sur le signal reçu par l'entrée d'horloge, une bascule du type défini disposant en outre d'une entrée de validation pour valider le signal présent sur l'entrée de donnée, l'entrée de validation étant connectée au générateur d'impulsion pour valider l'entrée de donnée lors d'une impulsion du signal d'horloge interne. 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 un schéma d'utilisation de bascule selon l'état de la technique, la figure 2 représente un schéma d'utilisation de bascule destiné à se substituer au schéma de la figure 1 selon l'état de la technique, la figure 3 représente un schéma de bascule de substitution selon l'invention, la figure 4 représente une variante de l'invention. La figure 3 correspond au circuit de la figure 1 dans lequel la bascule 1 est remplacée par un circuit d'émulation de bascule 10. Dans l'exemple décrit, la bascule 1 est une bascule de type D bien connue de l'homme du métier. Ainsi, le circuit d'émulation de bascule 10 comporte une borne d'entrée de donnée 11, une borne de sortie de donnée 12 et une borne d'entrée d'horloge 13. La borne d'entrée d'horloge 13 reçoit le signal provenant du circuit de logique combinatoire 2. Le circuit d'émulation comporte en outre des première à troisième bascules 14 à 16 de type D disposant chacune d'une entrée de donnée, d'une sortie de donnée et d'une entrée d'horloge, une porte ET 17 ayant une entrée inverseuse, une entrée non-inverseuse et une sortie, un multiplexeur 18 ayant deux entrées de donnée, une entrée de sélection et une sortie, et un générateur 19 de signal d'horloge interne qui fournit un signal d'horloge H' sur une sortie. Les entrées d'horloge des première à troisième bascules 14 à 16 sont connectées à la sortie du générateur 19. L'entrée de donnée de la première bascule 14 et l'entrée non-inverseuse de la porte 17 sont connectées à la borne d'entrée d'horloge 13. L'entrée inverseuse de la porte 17 est connectée à la sortie de la première bascule 14. L'entrée de donnée de la deuxième bascule 15 est connectée à la sortie du multiplexeur 18. Une première entrée de donnée du multiplexeur 18 et la borne de sortie 12 sont connectées à la sortie de la deuxième bascule 15. Une deuxième entrée du multiplexeur 18 est connectée à la sortie de la troisième bascule 16. L'entrée de sélection du multiplexeur 18 est connectée à la sortie de la porte 17. L'entrée de donnée de la troisième bascule 16 est connectée à la borne d'entrée de donnée 11. Le générateur d'horloge fournit un signal d'horloge interne H' tel que la fréquence de ce signal d'horloge interne H' soit supérieure à la fréquence du signal d'horloge Hi ou H2 la plus élevée arrivant sur la borne d'entrée d'horloge. Un facteur 16 entre les fréquences de l'horloge interne et des horloges externe donne de très bons résultats pour l'émulation sur émulateur logique mais a pour inconvénient de réduire considérablement les performances. Pour une transposition de technologie, on prend par exemple un facteur 4 entre lesdites fréquences, ce qui permet d'avoir des fréquences d'utilisation convenables. Dans un circuit intégré ou l'émulation d'un circuit intégré, de nombreuses bascules sont remplacées par le circuit d'émulation 10. Il va de soi que l'on utilise un unique générateur d'horloge interne 19 pour la totalité des circuits d'émulation. La première bascule 14 et la porte 17 constituent un générateur d'impulsion synchrone. Dans l'exemple représenté, chaque fois qu'un signal passe d'un niveau "zéro" à un niveau "un", cela produit un créneau de tension à la sortie de la porte 17 qui dure moins d'une période de l'horloge interne. Le créneau de tension est supprimé lors du prochain front actif du signal d'horloge interne. Les fronts actifs des signaux arrivant sur la borne d'entrée d'horloge 13 sont ainsi traduits en fenêtre de validation d'une durée d'une période du signal d'horloge interne. On peut remarquer que des parasites arrivant sur la borne d'entrée d'horloge 13 peuvent se répercuter sur la sortie de la porte 17 mais sont sans effets par rapport à la validation des données. Par contre, les phénomènes exploitants des signaux qui étaient non recouvrant par rapport aux signaux d'horloge Hi et H2 deviennent alors recouvrant pour le signal d'horloge interne et sont pris en compte durant un unique cycle de l'horloge interne H' Le signal de sortie de la porte 17 commande le multiplexeur 18. Lorsque le signal de sortie de la porte 17 est au niveau "zéro", la sortie du multiplexeur 18 fournit la donnée présente sur sa première entrée, c'est à dire la donnée déjà présente dans la deuxième bascule 15. Par contre, lorsque le signal de sortie de la porte 17 est au niveau "un", la sortie du multiplexeur 18 fournit la donnée présente sur sa deuxième entrée, c'est à dire la donnée provenant de la troisième bascule 16. La troisième bascule 16 a pour effet de retarder les données d'un cycle de l'horloge interne H'. Comme on peut s'en apercevoir, le circuit d'émulation correspond au circuit de la figure 2 dans lequel on effectue d'une part un suréchantillonnage de l'horloge et d'autre part une génération d'impulsion synchrone sur le signal de validation. L'homme du métier pourrait penser que le générateur d'impulsion est inutile. Or si l'on retire le générateur d'impulsion, on effectue une remise à jour pendant toute la durée o le signal arrivant sur la borne d'entrée d'horloge est actif. La remise à jour ne correspond plus à une remise à jour ponctuelle faite au moment d'un front actif ce qui peut occasionner de nombreux problèmes de dysfonctionnement. Une autre source de dysfonctionnement a été constatée dans certains cas lorsque l'on n'utilise pas de troisième bascule 16. L'utilisation du générateur d'impulsion sert à rendre valide l'entrée de donnée de la deuxième bascule 15 lors du prochain front actif du signal d'horloge interne H'. Il existe un décalage réel qui est au plus d'une période de l'horloge interne H' entre le front actif à considérer et le front actif de l'horloge interne H' utilisé. Ce décalage est d'autant plus réduit que le suréchantillonnage se fait à une fréquence élevée. De plus, classiquement, la mise à jour des données se fait à partir du front à considérer comme actif. Le décalage créé par l'horloge interne H' peut provoquer la prise en compte de données qui auront déjà changé si la mise à jour se fait avant le front actif de l'horloge interne H'. Il est donc préférable de retarder les données d'un cycle de l'horloge interne à l'aide de la troisième bascule 16. De nombreuses variantes du circuit d'émulation 10 de la figure 3 sont possibles. Les variantes du circuit d'émulation peuvent dépendre de la technologie employée ainsi que du type de bascule à émuler. De très nombreux circuits générateurs d'impulsions synchrones sont à la disposition de l'homme du métier. La première bascule 14 et la porte 17 peuvent être remplacés par l'un de ces circuits équivalents en fonction des besoins (front actif à détecter montant et/ou descendant, logique de commande du multiplexeur inversée,...). L'ensemble constitué de la deuxième bascule 15 et du multiplexeur 18 correspond à une bascule du type à émuler comportant en outre une entrée de validation de donnée. Si la bascule 1 à émuler n'est pas une bascule de type D, il va de soi que la deuxième bascule sera du même type. La figure 4 représente une variante de l'invention qui permettent de définir tous les types de bascules. La figure 4 représente une bascule 20, par exemple de type D, à entrées de forçage à "zéro" et à "un" asynchrone et un circuit d'émulation 21 correspondant. Le circuit d'émulation 21 est le même que le circuit d'émulation 10 de la figure 3. Toutefois les entrées de forçage asynchrone sont connectées d'une part à la bascule 22 du même type que la bascule 20 à émuler et d'autre part à la bascule D 23 qui retarde les données. La mise à "zéro" ou à "un" de la bascule D 23 est nécessaire pour éviter un rebasculement automatique si la mise à "zéro" ou "un" s'effectue en chevauchant la période de l'horloge interne H' qui valide les données. Il convient également de mettre à "un" la bascule D 24 du générateur d'impulsion synchrone afin d'éviter également une mise à jour prématurée de la bascule 22 du même type que la bascule 20 à émuler. La mise à "un" de la bascule D 24 se fait par l'intermédiaire d'une porte logique 25, par exemple une porte ET. A partir des exemples décrits, l'homme du métier peut recréer tous les types de bascules existant par combinaison des différents éléments. D'autres variantes sont possibles sans changer l'objet de l'invention. Dans la présente description, il est fait référence à des fronts actifs montants, à des entrées de forçage actives à "zéro", et à une validation de donnée active à "un". Il va de soi que toutes les combinaison de niveau actifs "zéro" ou "un" sont possibles à condition de changer les portes logiques utilisées. REVENDICATIONS 1. Circuit élémentaire de mémorisation qui réalise une émulation (10, 21) de bascule (1, 20) d'un type défini disposant d'une entrée de donnée (11), d'une sortie de donnée (12) et d'une entrée d'horloge (13), ledit circuit mémorisant une information relative à un signal présent sur l'entrée de donnée (11) lors d'un front actif d'un signal présent sur l'entrée d'horloge (13), caractérisé en ce qu'il comporte: - un générateur de signal d'horloge (19) qui produit un signal d'horloge interne (H'), - un générateur d'impulsions synchrones (14, 17) qui produit une impulsion pendant une période du signal d'horloge interne (H') chaque fois qu'un front actif se présente sur le signal reçu par l'entrée d'horloge (13), une bascule du type défini (15 et 18, 22) disposant en outre d'une entrée de validation pour valider le signal présent sur l'entrée de donnée, l'entrée de validation étant connectée au générateur d'impulsion pour valider l'entrée de donnée lors d'une impulsion du signal d'horloge interne (H'). 2. Circuit selon la revendication 1, caractérisé en ce qu'il comporte en outre au moins un circuit de retard (16, 23) pour retarder d'un cycle d'horloge la donnée présente sur l'entrée. 3. Circuit selon la revendication 1, caractérisé en ce que le signal d'horloge interne (H') est à une fréquence supérieure à la fréquence des signaux présents sur les entrées du circuit. 4. Circuit selon la revendication 2, caractérisé en ce qu'il comporte au moins une entrée de forçage asynchrone (R, S), ladite entrée de forçage asynchrone agissant sur la bascule de type défini (22) et sur le au moins un circuit de retard (23).