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.
- Circuits TTL : un état logique bas est
garanti si la tension d'entrée n'excède pas 0,8 V et un état logique
haut est garanti si la tension d'entrée est d'au moins 2,0 V.
- Circuits
CMOS à entrée standard et sortie bufférisée : seuil unique pour état
haut et état bas, 50% tension alim. Un état logique bas est
garanti si la tension d'entrée n'excède pas 1,5 V et un état logique
haut est garanti si la tension d'entrée est d'au moins 3,5 V (alim 5 V).
- Circuits CMOS à entrée standard et sortie non bufférisée : seuil unique pour état haut et
état bas, 50% tension alim. Un état logique bas est garanti si la
tension d'entrée n'excède pas 1,0 V et un état logique haut est garanti
si la tension d'entrée est d'au moins 4,0 V (toujours pour alim 5 V).
- Circuits
CMOS à entrée trigger de Schmitt : tension de seuil typique de 2,9 V
pour passage état bas vers état haut et tension de seuil typique
de 2,2 V pour passage état haut vers état bas (si alim 5 V).
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).
- Circuits TTL : état bas = 0,4 V maxi et état haut = 2,4 V mini.
- Circuits CMOS à sortie bufférisée : état bas = 0,05 V et état haut = 4,95 V, pour un courant de sortie inférieur à 1 uA !
- Circuits CMOS à sortie non bufférisée :
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.
- Circuits TTL : valeur typique comprise entre 8 et 25 ohms à l'état bas
- Circuits CMOS à sortie bufférisée : valeur typique de 250 ohms (avec tension d'alim de 5 V)
- Circuits CMOS à sortie non bufférisée : je ne sais pas mais à mon avis c'est bien supérieur à 250 ohms.
Procédures de test
Voilà,
nous pouvons maintenant continuer nos petites expériences, avec les conditions de test suivantes :
- La tension
d'alimentation des circuits TTL et des circuits CMOS sera toujours
commune à tous les circuits logiques et de valeur égale à 5 V.
- Les
entrées des portes logiques inutilisées sont toutes reliées à la masse,
au +5 V ou sur la sortie d'une autre porte dont les entrées ne sont pas
laissées en l'air.
- Les
circuits sont testés avec des signaux logiques (carrés) d'amplitude 5 V crête à
crête et à des fréquences de 200 kHz et 1 MHz (pas la peine d'aller
plus loin avec une tension d'alimentation limitée à 5 V et avec une
plaque d'expérimentation sans soudure, les constats qu'on pourrait
faire ne seraient pas forcement très pertinents).
- Sur
les schémas qui vont suivre, j'ai appelé "4011" les portes CMOS car
j'ai essayé avec des CD4011 et des CD4011BE, et j'ai appelé "7400" les
portes TTL en ayant essayé des MM5400 (vieille génération) et des
74LS00 (plus récents et normalement plus performants).
- Des
relevés graphique des signaux logiques sont effectués avec un
oscilloscope à deux endroits en même temps : en sortie de la première
porte (courbe bleue) et en sortie de la seconde (courbe rouge). Cela
permet d'une part de voir ce qui se passe au niveau de l'adaptation
entre les deux, et de voir d'autre part comment la seconde porte s'en
sort avec des signaux éventuellement dégradés. Se référer au nom donné
aux graphes pour connaitre les circuits testés et la fréquence du
signal test.
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.
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.
Et voici ce qui se passe si on remplace le MM5400 par un 74LS00 et qu'on conserve le CMOS CD4011BE.
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.
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.
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 :
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.
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 ;-)