Electronique > Bases > Compatibilité TTL / CMOS

Dernière mise à jour : 11/09/2011

Présentation

Association dans un même montage électronique de circuits intégrés logiques TTL et CMOS : pas de soucis à se faire ou précautions à prendre ? On vient de me poser la question et oups... que dire... Oui, j'ai déjà réalisé quelques montages qui combinaient les deux technologies TTL et CMOS, mais de là à certifier 100% que ça marche à tous les coups... Une seule solution, ressortir les bouquins, faire quelques tests et ne pas oublier le résumé.

Petits rappels

Avant de voir si on peut relier une sortie TTL sur une entrée CMOS ou une sortie CMOS sur une entrée TTL, il est sans doute utile de rappeler quelques notions de base.

Sortance
La sortance s'exprime par un nombre entier et représente la capacité que possède la sortie d'un circuit à piloter en même temps plusieurs entrées de circuits de même type. Par exemple, une porte logique dont la sortance est 10 indique que cette sortie peut être raccordée en même temps sur 10 entrées différentes d'autres circuits logiques. Attention, ce chiffre n'indique nullement une capacité exprimée en courant (A) ou en puissance (W). Le courant maximal que peut fournir un circuit logique CMOS dont la sortance est de 50, peut être inférieur au courant maximal que peut délivrer la sortie d'une porte logique TTL dont la sortance est 10. La sortance est liée d'une part à la capacité en courant de sortie d'une porte, et est liée d'autre part à l'impédance d'entrée de la porte qui suit. Ainsi un circuit TTL de la famille LS qui présente une impédance d'entrée de l'ordre de 20 kO, "consomme" moins qu'un circuit TTL de la famille stadard 74xx qui présente une impédance d'entrée de l'ordre de 2 kO. Tant qu'on est dans le sujet, précisions que la sortance d'un circuit logique est très souvent donnée pour un régime statique, c'est à dire pour un état logique établi et qui ne change pas. En régime dynamique (avec des états logiques qui changent sans arrêt), la sortance peut diminuer. Ce point doit être vérifier avec attention si on veut faire travailler les circuits à grande vitesse.

Seuils de basculement
La tension présente sur une entrée de porte logique peut prendre une infinité de valeur entre deux extrêmes, par exemple entre 0 V et +5 V. Les seuils autour desquels le circuit logique considère qu'il a affaire à un état logique bas ou à un état logique haut dépendent du type de circuit logique. Ils diffèrent entre circuits TTL et CMOS, mais ils peuvent aussi différer dans une même famille, selon que les entrées sont standard ou à trigger de Schmitt.
D'un point de vue consommation de courant, le maximum atteint sur une entrée CMOS correspond à une tension égale à VDD/2 (2,5 V si l'alimentation est de 5 V).

Tensions de sortie
Il est bien de s'intéresser aux seuils de basculement des entrées des circuits logiques, mais il l'est également de connaître les valeurs de tension de sortie de circuits qui y seront raccordés. Car c'est bien l'ensemble de ces informations qui permettra au final de conclure si oui ou non il y a compatibilité entre les diverses familles. Là encore les valeurs diffèrent entre les différentes familles de circuits logiques (et oui, elles auraient pu ne différer qu'au niveau des entrées, mais ce n'est pas le cas).
Autre information qui peut sans doute avoir son utilité : la tension de sortie d'une porte chute d'autant plus que le courant qu'elle draine ou absorbe est élevé, ce qui est d'autant plus vrai pour une porte de type CMOS. Et le courant "consommé" par une entrée de porte TTL n'est pas toujours négligeable comme nous le verrons plus loin.

Impédance de sortie
L'impédance de sortie d'un circuit logique, dont dépendent directement la sortance et l'immunité au bruit, dépend de sa famille.

Procédures de test

Voilà, nous pouvons maintenant continuer nos petites expériences, avec les conditions de test suivantes :

bases_compatibilite_ttl_cmos_mes_001a bases_compatibilite_ttl_cmos_ci_001a bases_compatibilite_ttl_cmos_proto_001a bases_compatibilite_ttl_cmos_proto_001b

Remarque
Dans un premier temps, je comptais relier la sortie d'une porte (TTL ou CMOS) vers une seule autre porte (CMOS ou TTL). Et puis je me suis dit qu'il serait intéressant de voir dès le début ce qui se passait avec une sortie de porte reliée sur quatre autres portes. En théorie cette deuxième façon de faire est plus "méchante" et si donc elle fonctionne on peut dire que ça fonctionne aussi quand on ne relie qu'une seule porte à la sortie de la première. Les schémas de mise en application des tests qui suivent montrent une seule porte reliée sur la sortie de la première, mais côté proto il y en a bien quatre.

CMOS vers TTL

Le circuit simple suivant montre une sortie de porte logique CMOS reliée sur les entrées d'une porte logique TTL.

compatibilite_ttl_cmos_001a

Analyse statique théorique
Si l'entrée de la porte CMOS (In-1) est portée à un potentiel nul (0 V, état logique bas), alors la sortie de cette même porte CMOS (TP1) est à l'état logique haut puisque montée en inverseuse. Dans cette condition, l'entrée TTL peut absorber un courant qui peut atteindre 1,5 mA et faire chuter la tension de sortie de la porte CMOS à une valeur à peine supérieure à 2,5 V. Bien qu'on pourrait considérer cette tension comme un peu limite (on en perdrait tout de même la moitié), tout se passerait bien car l'entrée de la porte TTL voit là et sans ambiguïté un état logique haut puisque pour cela il lui faut au moins 2,0 V. Si maintenant l'entrée de la porte CMOS (In-1) est portée à un potentiel positif de +5 V (état logique haut), alors la sortie de cette même porte CMOS (TP1) est à l'état logique bas. Dans cette condition, le courant d'entrée de la porte TTL est voisin de 0,4 mA et la tension de sortie de la porte CMOS possède une valeur voisine de 0,4 V. Cette valeur, puisque bien inférieure à 0,8 V, est bien considérée comme un état logique bas par la porte TTL.
Conclusion : compatibilité assurée. Attention cependant, cette compatibilité risque de souffrir si au lieu de mettre une seule porte TTL vous en mettez un grand nombre en parallèle ! Dans ce cas il vous faudra choisir une famille de circuits TTL qui "consomme" moins (impédance d'entrée plus élevée), comme c'est le cas de la famille TTL LS (74LS00 par exemple) ou HCT (47HCT00 par exemple) par rapport au TTL standard (7400 par exemple).

Tests pratiques
Les graphes suivants montrent que la chute de tension sur l'entre-deux portes est quasiment nulle avec une porte CMOS de type CD4011D ou CD4011BE suivie d'une porte TTL de type MM5400 (version ancienne et compatible du SN7400). Tout au plus pouvons-nous constater de légères différences au niveau des temps de montée et de descente des fronts, CD4011BE plus rapide que le CD4011D.

4011d_mm5400_200khz 4011d_mm5400_1000khz 4011be_mm5400_200khz 4011d_mm5400_1000khz

Et voici ce qui se passe si on remplace le MM5400 par un 74LS00 et qu'on conserve le CMOS CD4011BE.

4011be_74ls00_200khz 4011be_74ls00_1000khz 4011be_74ls00_2000khz 

On constate un très net raidissement des fronts, à tel point qu'on a maintenant droit à de superbes suroscillations dont on se passerait bien. Ces suroscillations apparaissent aussi et avec la même amplitude à une fréquence de 1 kHz et avec un découplage d'alimentation local additionnel (10 uF et 10 nF aux bornes d'alimentation du circuit TTL). En poussant la fréquence du signal test à 2 MHz, on se rend compte sans trop de surprise que le circuit ne suit plus très bien et que le signal de sortie final n'est plus du tout exploitable.

TTL vers CMOS

Le circuit simple suivant montre une sortie de porte logique TTL reliée sur les entrées d'une porte logique CMOS.

compatibilite_ttl_cmos_001b

Analyse statique théorique
Si l'entrée de la porte TTL (In-2) est portée à un potentiel nul (0 V, état logique bas), alors la sortie de cette même porte TTL (TP2) est à l'état logique haut puisque montée en inverseuse. Dans cette condition, l'entrée CMOS voit une tension qui peut être supérieure à 2,5 V, mais qui peut aussi être aussi faible que 2,4 V puisque cette tension est encore "valide" pour représenter un état haut en logique TTL. Si maintenant l'entrée de la porte TTL (In-2) est portée à un potentiel positif de +5 V (état logique haut), alors la sortie de cette même porte TTL (TP2) est à l'état logique bas. Dans cette condition, l'entrée CMOS voit une tension qui est sans problème considérée comme étant un état logique bas.
A cause du premier cas de figure, il y a incompatibilité et on ne peut pas sérieusement accépter un tel montage.  Une solution simple consiste à ajouter une résistance de tirage vers le +5 V (pullup) afin de remonter le potentiel de sortie de la porte TTL quand cette dernière est à l'état haut. 

compatibilite_ttl_cmos_001c

Cette résistance additionnelle aura une incidence négligeable quand la sortie de la porte TTL sera à l'état logique bas.

Tests pratiques
Tests réalisés avec un TTL 74LS00 suivi d'un CMOS 4011BE, avec et sans résistance de rappel au +5 V entre les deux. Pour commencer, sans résistance de rappel :

74ls00_4011be_200khz_wores 74ls00_4011be_1000khz_wores 

On constate bien une chute de l'amplitude du signal rectangulaire en sortie de la première porte logique, comme prévue en théorie. Elle est cependant moindre que le pire cas auquel on pouvait s'attendre, malgré un câblage de une porte vers quatre autres. L'ajout d'une résistance de rappel de 2,7 kO entre la sortie de la première porte et le +5 V apporte effectivement une nette amélioration dans ce sens, à savoir rétablissement du signal à une amplitude de 5 V crête à crête.

74ls00_4011be_200khz_wres 74ls00_4011be_1000khz_wres 74ls00_4011be_2000khz_wres

Nettement mieux, mais pas suffisant pour grimper à 2 MHz comme en atteste la dernière copie d'écran de l'oscilloscope. Mais rappelez-vous : technologie CMOS alimentée et 5 V et montage sur plaque d'expérimentation...

Conclusion

Il est plaisant de constater qu'on peut mixer différentes technologies de circuits logiques TTL / CMOS entre elles, moyennant toutefois un bon choix des familles de composants, et parfois une petite adaptation locale (ajout résistance de rappel). Les tests réalisés ici montrent qu'on peut s'en sortir sans dégât tant qu'on ne monte pas trop haut en fréquence - disons pour fixer un ordre de grandeur qu'il est raisonnable de ne pas dépasser 1 MHz. Je rappelle que pour valider pleinement la question liée à la compatibilité TTL / CMOS, il faudrait faire des tests bien plus complets (davantages de familles différentes) dans des conditions plus sérieuses (circuit imprimé bien routé). Mais avec ces petits bouts d'expérience résumées ici et menées en condition amateur, il me semble que vous avez déjà un bon début de réponse. A vous de compléter si le coeur vous en dit ;-)