FR 2805101 A1 20010817 FR 0012427 A 20000929 PARTAGE DE DONNEES ENTRE DES TRANSISTORS A EFFET DE CHAMP POUR MULTIPLEXEUR QUATRE VOIES La présente invention concerne multiplexeur pour décaler des données. L'utilisation d'opérations de multiplication et d'addition en virgule flottante (FMAC : floating point multiply-accumulate) est connue dans l'art. Une opération FMAC implique de réaliser sur trois opérandes, A, B et C, l'opération A*B+C. Les opérations FMAC sont utiles en ce qu'elles peuvent être utilisées pour réaliser à la fois des multiplications et des divisions. Pour les multiplications, la valeur de l'opérande C est déterminée mise à zéro. Pour l'addition, la valeur de l'opérande A est fixée à un. Les opérations FMAC sont typiquement conformes aux exigences d'une norme industrielle pour l'utilisation de nombres à virgule flottante, qui sont exprimés à la fois en termes de mantisse et d'exposant et qui sont davantage décrits dans IEEE Standard for Binary Floating-Point Arithmetic (Norme IEEE pour l'arithmétique binaire à virgule flottante), Norme IEEE 754-1985, incorporée dans la présente à titre de référence. Les opérations FMAC sont réalisées sur plusieurs étapes, et l'étape finale est utilisée pour normaliser la valeur la mantisse du résultat. En particulier, selon l'utilisation des nombres à virgule flottante conformes à la norme IEEE, le résultat est décalé pour obtenir un un en tête dans la mantisse et ainsi éliminer tous les zéros non significatifs. Ceci produit un résultat normalisé pour l'opération FMAC. Pour obtenir un un en en-tête le résultat, des multiplexeurs sont typiquement utilisés afin de décaler le résultat jusqu'à ce que la valeur un se trouve dans la position de bit la plus significative. Les multiplexeurs sont connus l'art et utilisent des signaux de commande afin de décaler des données d'entrée parmi des lignes de sortie sur la base des signaux de commande. Les multiplexeurs peuvent nécessiter de nombreuses entrées pour les lignes de données et les signaux de commande, et chaque entrée de données peut nécessiter une ligne de données distincte et un transistor individuel pour interfacer la ligne de données et une porte logique correspondante qui réalise le décalage des données. En raison du nombre élevé d'entrées, les lignes de données individuelles augmentent le nombre de transistors nécessaires pour chaque porte, augmentant ainsi la surface et la consommation d'énergie de chaque porte. Par conséquent, il existe un besoin concernant multiplexeur pour décaler des données ayant une surface réduite et potentiellement d'autres avantages. circuit logique conforme à la présente invention utilise le partage de données dans un multiplexeur pour décaler des données. Il comprend une pluralité de portes logiques et une pluralité de lignes de données partagées reliant les portes logiques. Chaque porte logique reçoit des entrées de donnees et des signaux de commande, et les lignes de données partagées fournissent une partie des données d'entrée chacune des portes logiques en reliant les entrées de données parmi la pluralité de portes logiques. En service, les portes logiques décalent les données reçues niveau des entrées de données sur la base des signaux de commande et des connexions des lignes de données partagées pour produire une sortie de données décalées. procédé conforme à la présente invention comprend le partage des données entre les portes logiques dans un multiplexeur pour décaler les données. Il comprend le fait de prévoir une pluralité de portes logiques recevant chacune des entrées données et des signaux de commande, et la connexion des portes logiques en utilisant une pluralité de lignes de données partagées. Les lignes de données fournissent une partie des entrées de données pour chacune des portes logiques en reliant les entrées de données parmi la pluralité de portes logiques. Les données reçues au niveau des entrées sont décalées en se basant sur les signaux de commande et les connexions des lignes de données partagées pour produire une sortie de données décalées. Les dessins joints sont incorporés dans le présent document et font partie de celui ' et, conjointement avec la description, expliquent les avantages et les principes l'invention. Sur les dessins, la figure 1 est un schéma de principe d'une partie d'un multiplexeur illustrant le partage de données conforme à la présente invention ; et les figures 2A à 2D sont des schémas de principe de portes logiques pour réaliser le partage de données illustré sur la figure 1. Un multiplexeur conforme à la présente invention utilise le partage de données entre des transistors à effet de champ (FET) afin de réduire le nombre de transistors requis par chaque porte logique. Par conséquent, au lieu d'utiliser un transistor distinct pour chaque ligne de données d'entrée vers chaque porte logique, un seul transistor est nécessaire dans cet exemple pour une entrée de données particulière. Les autres entrées de données sont reçues des portes logiques adjacentes ou d'autres portes logiques en utilisant les lignes de données partagées. La figure 1 est un schéma de principe d'une partie 10 d'un multiplexeur pour réaliser un partage de données conforme à la présente invention. Cet exemple n'illustre que quatre portes logiques parmi les nombreuses portes logiques qui peuvent être nécessaires à la réalisation d'un multiplexeur particulier en fonction de taille d'un bus de données impliqué. Cet exemple illustre quatre portes logiques 11, 12, 13 et 14. Chaque porte logique reçoit des données d'entrée, et produit des sorties de données décalées sur la base des signaux de commande entrés et de la manière dont les données sont partagées entre les portes logiques comme cela est déterminé par les connexions des lignes de données partagées. La porte logique 11 reçoit une entrée de données 15 et des entrées de données partagées 27, et elle produit une sortie de données décalées 16 sur la base des signaux de commande 17. La porte logique 12 reçoit une entrée de données 18 et entrées de données partagées 28, et elle produit une sortie de données décalées 19 sur la base des signaux de commande 20. La porte logique 13 reçoit entrée de données 21 et des données d'entrée partagées 29, et elle produit une sortie de données décalées 22 sur la base des signaux de commande 23. La porte logique 14 reçoit une entrée de données 24 et des entrées de données partagées 30, elle produit une sortie de données décalées 25 sur la base des signaux de commande 26. Les portes logiques 11 à 14 reçoivent également un signal cadencement, identifié ci-dessous, pour permettre leur fonctionnement. Les sorties de données décalées 16, 19, 22 et 25 peuvent inclure pluralité de sorties de données pour chaque porte logique 11 à 14. Par exemple, cette réalisation peut être utilisée pour une logique CMOS Domino double rail qui produit deux sorties pour chaque porte logique, une sortie haute et une sortie basse complémentaire. D'autres types de portes logiques peuvent de la même manière réaliser le partage des données dans un multiplexeur. Chacune des portes logiques 11 à 14 réalise le traitement d'un bit donnée. Des portes logiques supplémentaires peuvent être utilisées en fonction de la taille du bus de données concerné. Par exemple, cette réalisation peut être utilisée pour une logique CMOS Domino double rail ayant un bus de données de 64 bits. Par conséquent, des portes logiques supplémentaires semblables aux portes 11 à 14 peuvent être utilisées pour fournir un bus de données de 64 bits. Les portes logiques supplémentaires ont également un partage de données tel que décrit ci-dessous. Par exemple, les lignes 31 et 32 assurent le partage de données entre les portes logiques adjacentes aux portes 11 et 14, de même qu'à d'autres portes logiques. Ce partage de données dans cet exemple est réalisé de la même manière que le partage de données entre les portes 11 à 14. Les signaux de commande 17, 20, 23 et 26 peuvent comprendre une pluralité de lignes de commande pour effectuer plusieurs opérations de décalage. Dans cet exemple, chaque porte logique 11 à 14 réalise deux étapes de décalage. La premiere étape de décalage utilise quatre lignes de commande de décalage pour produire quatre états de décalage, et la seconde étape de décalage utilise trois lignes de commande de décalage pour produire trois états de decalage, dont les deux étapes étant expliquées ci-dessous. figures ZA à 2D sont des schémas de principe illustrant une mise en oeuvre des portes logiques 11 à 14 et le partage des données entre celles-ci. Ce qui suit décrit le fonctionnement de la porte logique 11, comme le montre la figure 2A, et les autres portes logiques 12 à 14 fonctionnent de manière semblable. La porte logique 11 comprend deux étapes de décalage comme cela a été décrit ci-dessus. Elle reçoit une entrée de données DATL sur la ligne 15 au niveau d'un transistor 40. La ligne 15 fournissant les données DATL une ligne de données principale en ce qu'elle n'est pas reçue à partir d'une autre porte logique dans le circuit logique 10. La ligne 15 peut fournir des données issues d'une étape précédente parmi, par exemple, les différentes étapes que réalise une opération FMAC. La porte logique 11 reçoit également des entrées de données sur les lignes 61, 62, 63 et 64, et ces lignes fournissent à la porte logique de partage de données 11 d'autres portes logiques. Ce partage de données est en outre illustré entre toutes les portes logiques 11 à 14, comme le montre la figure 1 et les figures 2A à 2D. La ligne 61 assure le partage de données entre les trois portes logiques adjacentes gauches. La ligne 62 assure le partage de données entre les deux portes logiques adjacentes gauches et une porte adjacente droite. La ligne 63 assure le partage de données entre la porte logique adjacente gauche et deux portes logiques adjacentes droites. La ligne 64 assure le partage de données entre les trois portes logiques adjacentes droites. Le terme "adjacent" fait référence à une porte logique traitant un bit suivant parmi ceux traités collectivement par un circuit logique. Le bit suivant peut comprendre un bit dans une direction, soit de la position de bit la plus significative, soit de la position de bit la moins significative parmi les portes logiques pour un bus. Les portes adjacentes peuvent également comprendre une plusieurs portes traitant un ou plusieurs bits suivants. Par exemple, les portes logiques 11 et 12 sont les deux portes logiques adjacentes gauches à la porte logique 13, et la porte logique 14 est la porte logique adjacente droite à la porte logique 13. En faisant référence de nouveau à la figure 2A, le partage de données sur les lignes 61 à 64 permet de supprimer des transistors supplémentaires. En particulier, si la porte logique 11 n'a pas eu de partage de données, il serait typiquement nécessaire d'avoir un transistor supplémentaire pour chacune entrees de données sur les lignes 61 à 64. Ces transistors, s'ils sont utilisés réalisent une interface pour les lignes de données avec la porte logique 11 de la même manière que le transistor 40 qui interface la ligne de données 15 et la porte logique 11. La suppression de ces transistors entraîne des économies de place et de consommation d'énergie. La première étape de décalage est déterminée par des signaux de commande de décalage S [O], S [ 1 ], S[2] et S[3]. Les signaux de commande de décalage de la première étape sont entrés, respectivement, dans les transistors 43, 44, et 46. Le résultat de cette première étape de décalage est sorti comme étant le signal Ls1L sur la ligne 50 et au niveau de la languette 51, inclus à des fins d'illustration seulement pour illustrer la sortie de la première étape. Le fonctionnement de la porte logique 11 au cours des deux étapes de décalage est permis lorsque le signal de cadencement EVAL des transistors de commande 39, 41 et est à l'état haut. Le tableau 1 identifie le résultat physique du décalage dans la première étape en fonction des valeurs des signaux de commande de décalage de la première étape. Le résultat physique identifie dans quelle direction, si tel est le cas, un bit de données est décalé entre les portes logiques, et le résultat physique peut différer du résultat logique en fonction d'une réalisation particulière. Tableau 1 Valeur des signaux de commande de décalage de la première étape Résultat physique S[O] S1 S2 S3 1 0 0 0 un décalage à droite 0 1 0 0 pas de décalage 0 0 1 0 un décalage à auche 0 0 0 1 deux décalages à gauche Les signaux de commande de décalage de la première étape S[0] à S[3] sont actifs lorsqu'ils sont l'état haut. Avec le signal de commande S[0] à l'état haut, le transistor 43 devient passant et délivre un bit de la ligne 61 à la ligne 50. Puisque la ligne 61 est reliée à la porte logique adjacente gauche, ceci entraîne un décalage physique à droite puisque le bit partant de la porte logique adjacente gauche est amené vers la porte 11. Avec le signal S[1] à l'état haut, le transistor 44 devient passant et amène le bit de données DATL vers la ligne 50. Ceci n'implique aucun décalage puisque l'entrée de données dans la porte logique 11 est directement amenée vers la ligne 50 et les données d'une des lignes partagées ne sont pas amenées vers la ligne 50. Avec le signal de commande S[2] à l'état haut, le transistor 45 devient passant et délivre un bit de la ligne 63 à la ligne 50. Ceci entraîne un décalage physique à gauche, puisque la ligne 63 est reliée à la sortie de données de la porte logique adjacente droite, en particulier le signal de données 18 de la porte logique 12. Avec le signal de commande S[3] à l'état haut, le transistor 46 devient passant et délivre un bit de la ligne 64 à la ligne 50. Ceci entraîne deux décalages physiques à gauche ; en particulier, le signal de données 21 de la porte logique 13 est délivré de la ligne partagée 64 vers la ligne 50. Ceci entraîne le décalage des données de deux positions vers la gauche (deux décalages à gauche) de la porte logique 13 à la porte logique 11. La seconde étape de décalage est commandée par les signaux de commande de décalage LS[0], LS[1] et LS[2]. Les signaux de commande de décalage de la seconde étape LS[0] à LS[2] commandent, respectivement, les transistors 47, 48 et 49. Les portes logiques 11 à 14 dans cet exemple sont reliées entre elles de telle sorte que la sortie Ls 1 L de la première étape sur la ligne 50 soit reliée aux portes logiques adjacentes. En particulier, l'entrée LsOL sur la ligne 52 reçoit la sortie Ls1L de la porte logique adjacente gauche ayant la même configuration et le même fonctionnement que la porte logique 11. L'entrée Ls2L sur la ligne 53 reçoit la sortie Ls1L de la porte logique adjacente droite 12. La seconde étape de décalage utilise ainsi également les lignes de données partagées Ls1L des portes logiques adjacentes reliées aux entrées LsOL et Ls2L. Le tableau 2 identifie le résultat de décalage physique basé sur les valeurs des signaux de commande de décalage de la seconde étape. Le résultat physique identifie dans quelle direction, si tel est le cas, un bit de données est décalé parmi les portes logiques, et le résultat physique peut différer du résultat logique en fonction d'une realisation particulière. Tableau 2 Valeur des signaux de commande de décalage de la seconde Résultat physique étape LS 0 LS 1 LS 2 1 0 0 un décalage à droite 0 1 0 as de décalage 0 0 1 un décalage à gauche les signaux de commande de décalage de la seconde étape LS[0] à LS[2] sont actifs lorsqu'ils sont à l'état haut. Avec le signal de commande LS[0] à l'état haut, le transistor 47 devient passant et délivre un bit de la ligne 52 à la ligne 54. Puisque la ligne 52 reçoit la sortie Ls1L de la porte logique adjacente gauche, un bit provenant la porte logique adjacente gauche est décalé vers la droite dans la porte logique 1 et sorti sur la ligne 54. Avec le signal de commande LS 1 ] à l'état haut, le transistor 48 devient passant et délivre un bit sur la ligne 50 directement à la ligne 54 sans aucun décalage. Avec le signal de commande LS[2] à l'état haut, le transistor devient passant et délivre un bit de la ligne 53 à la ligne 54. Puisque la ligne 53 reçoit la sortie Ls1L de la porte logique adjacente droite 12, un bit provenant de la porte logique adjacente droite 12 est décalé vers la gauche dans la porte logique 11 et sorti sur la ligne 54. Comme cela est représenté, la sortie de la porte logique 11 dans cet exemple implique des sorties complémentaires 53 et 54 qui sont séparees par un inverseur 55. Le transistor de contre-réaction 56 facilite la commande de l'état d'un bit au niveau de la ligne 54. En particulier, avec une sortie à l'état bas la ligne 53, le transistor 56 devient passant et met la ligne 54 à l'état haut. Avec une sortie à l'état bas sur la ligne 53, le transistor 56 se bloque et la ligne 54 reste à l'état bas. Puisque cette réalisation donnée à titre d'exemple utilise une logique CMOS Domino double rail, un circuit logique 60 est prévu pour les sorties côté haut, OUTH et son complément, sOUTH. Ces sorties complémentaires sur le côté haut fonctionnent d'une manière connue dans l'art. Les lignes 53 et 54 fournissent les sorties coté bas, OUTL et son complément, sOUTL. Les quatre sorties cet exemple correspondent à la sortie de données décalées 16. Les décalages de données sorties sous forme de données décalées 16 sont décrits faisant référence à manière dont les données se décalent physiquement parmi les portes logiques, et les décalages logiques correspondants peuvent être différents en fonction d'une réalisation particulière. De plus, la génération des signaux de commande de décalage peut également dépendre d'une réalisation particulière. Ces signaux sont généres par d'autres circuits en fonction de la réalisation particulière. Par exemple, une réalisation effectuant une opération FMAC utilise typiquement un circuit connu sous le nom d'anticipateur de bit en en-tête pour générer les signaux de commande. D'autres réalisations sont possibles et, bien que la logique CMOS Domino double rail soit représentée, d'autres types de portes logiques de transistors peuvent réaliser un partage de données conforme à la presente invention. Les inverseurs 57 et 58 sont prévus pour illustrer l'inversion des signaux de commande pour la transmission vers les portes logiques. Dans cet exemple, les signaux de commande de décalage S [O] à S[3] sont inversés, transmis à la porte logique, 11 et de nouveau inversés par l'inverseur 57 pour commander la première étape de décalage dans la porte logique 11. De même, les signaux de commande de décalage LS[0] à LS[2] sont inversés, transmis à la porte logique 11, et de nouveau inversés par l'inverseur 58 pour commander la seconde étape de décalage dans la porte logique 11. L'inversion des signaux de commande pour atteindre un état bas est prévue pour conférer une meilleure immunité au bruit pendant la transmission vers la porte logique, et d'autres types de techniques de transmission de signaux de commande peuvent être utilisés. Par conséquent, l'utilisation d'un partage de données conforme à la présente invention permet la suppression de transistors dans chaque porte logique et une économie de place ainsi qu'une économie de consommation de puissance sur une puce à circuit intégré mettant en oeuvre les portes logiques. Bien deux étapes de décalage aient été montrées, un nombre différent d'étapes peut être utilisé. Le nombre d'étapes et l'utilisation d'un multiplexeur utilisant le circuit logique 10 peuvent dépendre d'une application particulière, et la réalisation d'une opération FMAC n'est qu'un de ces exemples. De même, différents types de décalage peuvent être réalisés en fonction de la manière dont le partage de données est réalisé entre les portes logiques adjacentes. Les connexions des lignes de partage de données déterminent au moins en partie manière dont les données sont décalées. Comme montré ci-dessus, une porte logique peut recevoir une ligne de données partagées délivrant une entrée de données depuis une ou deux portes logiques adjacentes pour réaliser un ou deux décalages données. Si une porte logique est reliée à un nombre plus ou moins grand de portes logiques adjacentes par les lignes de données partagées, elle peut produire nombre de décalages de données plus ou moins grand. De même, en se basant la manière dont les lignes de partage de données sont reliées, les portes logiques peuvent être configurées pour réaliser divers décalages dans différentes directions, par exemple un décalage à droite et deux décalages à gauche comme cela est montré ci-dessus. Bien que quatre lignes de partage de données soient représentées, on peut utiliser un nombre de lignes partage de données plus ou moins grand en fonction d'une réalisation particulière, chaque ligne de partage de données étant couplée à un transistor recevant signal de commande pour délivrer des données dans la porte logique correspondante. Alors que la présente invention a été décrite conjointement avec un mode de réalisation donné à titre d'exemple, on comprendra que de nombreuses modifications puissent facilement apparaître à l'homme du métier, et cette demande brevet est destinée à englober toute adaptation ou variation de celle- ci. Par exemple, différents types de décalage de données, transistors signaux de commande et étiquettes pour les signaux peuvent être utilisés sans 'éloigner du cadre de l'invention. Cette invention ne doit être limitée que par ses revendications et leurs équivalents. REVENDICATIONS 1. Circuit logique destiné à être utilisé dans un multiplexeur décaler des données, comprenant une pluralité de portes logiques (11, 12, 13, 14), chaque porte logique recevant des entrées de données (15, 18, 21, 24, 27, 28, 29, 30) et signaux de commande 20, 23, 26) ; et une pluralité de lignes de données partagées (31, 32, 61, 62, 64) reliant les portes logiques, les lignes de données partagées fournissant une partie (27, 28, 29, 30) entrées de données pour chacune des portes logiques reliant les entrées de données entre la pluralité de portes logiques, caractérisé en ce que les portes logiques décalent les données reçues au niveau des entrées de données sur la base des signaux de commande et des connexions des lignes de données partagées pour produire une sortie de données décalées. 2. Circuit logique selon la revendication 1, caractérisé en ce que chacune des portes logiques (11, 12, 13, 14) comprend des première et seconde étapes de décalage effectuant des première et seconde opérations de décalage. 3. Circuit logique selon la revendication 2, caractérisé en ce que chacune des portes logiques (11, 12, 13, 14) comprend des entrées de commande (43, 44, 45, 46, 47, 48, 49) pour recevoir deux ensembles de signaux de commande de décalage pour les première et seconde étapes de décalage. 4. Circuit logique selon la revendication 3, comprenant en outre une autre pluralité de lignes de données partagées (50) pour fournir des entrées de données (52, 53) à la seconde étape de décalage pour la seconde opération de décalage. 5. Circuit logique selon la revendication 1, caractérisé en ce que la pluralité de lignes de données de décalage (31, 32, 61, 62, 63, 64) relient les portes logiques adjacentes parmi la pluralité de portes logiques (11, 12, 13, 14). 6. Circuit logique selon la revendication 1, caractérisé en ce que chacune des portes logiques (l 1, 12, 13, 14) reçoit, comme une des entrées de données, une ligne de données principale (15, 18, 21, 24). 7. Circuit logique selon la revendication 1, caractérisé en ce que chacune des portes logiques (l 1, 12, 13, 14) reçoit un signal de cadencement pour permettre aux portes logiques de délivrer des données. 8. Circuit logique selon la revendication 1, caractérisé en ce que chacune des portes logiques (11, 12, 13, 14) comprend une pluralité de transistors (43, 46), commandés par les signaux de commande, pour délivrer des données à partir des lignes données partagées à la porte logique. 9. Circuit logique selon la revendication 1, caractérisé en ce que chacune des portes logiques (11, 12, 13, 14) fournit des sorties complémentaires (53, 54) en tant sortie de données décalées. 10. Circuit logique selon la revendication 1, caractérisé en ce que chacune des lignes de données partagées (31, 32, 61, 62, 63, 64) relie une des portes logiques à une pluralité des portes logiques (11, 12, 13, 14).