samedi 20 septembre 2014

Explorons les portes logiques

Lorsqu'on a l'habitude d'utiliser des microcontrôleurs, on a trop facilement tendance à snober les portes logiques.  Il est tellement facile de programmer notre Arduino pour qu'il ait un comportement comparable à une combinaison (parfois fort complexe) de portes logiques, que l'utilisation d'éléments de circuits non-programmables conçus pour effectuer une seule fonction logique élémentaire peut nous sembler inutilement contraignante.

Et pourtant, mine de rien, les portes logiques, ça peut être amusant...


La porte ET (AND Gate)

La porte "ET" comporte une sortie et au moins deux entrées.  La sortie prend le niveau logique HAUT à la condition que toutes les entrées se trouvent au niveau logique HAUT.  Il s'agit qu'une ou plusieurs entrées se trouvent au niveau logique BAS pour que la sortie soit également au niveau logique BAS.  (Dans cet article, nous considérons que le niveau logique BAS correspond à potentiel  de 0 V, et que le niveau logique HAUT correspond à un potentiel de 5 V.)

Table de vérité d'une porte ET
Entrée 1 Entrée 2 Sortie
0 0 0
1 0 0
0 1 0
1 1 1



Les circuits intégrés 74HC08 et 4081 comportent quatre portes ET; chacune de ces 4 portes comporte deux entrées et une sortie. Lorsque vous connaissez le brochage du circuit intégré  (qui n'est pas le même selon qu'il s'agit du 74HC08 ou du 4081), il est facile de l'expérimenter.  Notez que le circuit doit obligatoirement être alimenté (au moyen de ses pins 7 et 14) pour être fonctionnel.  Pour voir l'état de la sortie, vous pouvez utiliser un voltmètre, ou une LED indicatrice.


Il n'est toutefois pas obligatoire de disposer d'un tel circuit intégré pour expérimenter avec une porte ET.  Vous pouvez construire une porte ET au moyen de deux diodes et d'une résistance.  Si l'une ou l'autre des entrées est à 0 V, la diode reliée à cet entrée est passante et la sortie est donc reliée à 0 V par l'entremise de la diode.  Il faut que les deux entrées soit à 5 V pour qu'aucun courant ne circule dans la résistance et que la sortie soit également à 5 V (la chute de potentiel dans la résistance est alors nulle).

Expérimentez-le!  C'est beaucoup mieux en vrai que dans les livres...  J'ai utilisé une résistance de 10K et des diodes 1N4148, mais n'importe quel type de diode devrait faire l'affaire (vous pouvez même utiliser des LEDs, qui s'allumeront lorsqu'un courant les traverse).

La porte ET peut également être réalisée au moyen de deux transistors:  pour que la sortie soit à 5 V, il faut que les deux jonctions collecteur-émetteur soient conductrices, donc que les deux entrées soient à 5 V.  Aussitôt qu'une entrée se trouve à 0 V, le transistor qui lui est associé empêche la circulation du courant dans la résistance R3, donc la sortie sera à 0 V.

J'ai utilisé des transistors 2N2222 avec  R1 = R2 = 10 K et R3 = 4K7. Mais n'importe quel transistor NPN devrait faire l'affaire.


La porte OU (OR Gate)

La porte "OU" comporte également une sortie et au moins deux entrées.  La sortie prend le niveau logique HAUT lorsqu'au moins une de ses entrées se trouve au niveau logique HAUT.  Si les toutes les entrées sont au niveau logique BAS, alors la sortie sera également au niveau logique BAS.


Table de vérité d'une porte OU
Entrée 1Entrée 2 Sortie
000
101
011
111



Les circuits intégrés 74HC32 et 4071 comportent quatre portes OU à deux entrées.  Encore une fois, notre vie aurait été simplifiée si l'assignation des pins avait été la même sur les deux CI, mais les concepteurs en ont décidé autrement.


De toute façon, vous pouvez construire votre propre porte OU, sans le moindre composant spécialisé, en utilisant des diodes ou des transistors.

Porte OU à base de 2 diodes et une résistanceVoici le schéma d'une porte OU réalisée au moyen de deux diodes et d'une résistance.  Lorsqu'au moins un des signaux d'entrée est HAUT (5 V), la diode est passante et ce  potentiel de 5 V est presque complètement transmis à la sortie.  Si les deux signaux sont bas, la diode est bloquante, aucun courant ne peut donc circuler dans la résistance (la chute de potentiel de cette dernière est donc nulle), et la sortie est à un potentiel de 0.  J'ai utilisé une résistance de 10K.

Vous pouvez également construire une porte OU avec une combinaison de transistors.  Pour qu'un courant circule dans la résistance R3, il s'agit qu'un ou l'autre des deux transistors le laisse circuler, ce qui sera le cas si une ou l'autre des entrées est à 5 V afin qu'un courant circule dans la base.

Encore une fois, j'ai utilisé des transistors 2N2222, R1 = R2 = 10K et R3 = 4K7.


La porte OU EXCLUSIF (XOR)

La sortie d'une porte "OU EXCLUSIF" prend l'était logique "HAUT" si une seule de ses entrées est à l'état logique "HAUT", mais pas l'autre.   En d'autres mots, la sortie sera basse si les deux entrées sont dans le même état logique, et la sortie sera haute si les deux entrées sont des des états différents.


Table de vérité d'une porte OU EXCLUSIF
Entrée 1Entrée 2 Sortie
000
101
011
110



Les circuits intégrés 74HC86 et 4070 comportent des portes de type OU EXCLUSIF.

La construction d'une porte OU EXCLUSIF au moyen de diodes ou de transistor semble assez complexe mais, comme nous le verrons plus loin, nous pouvons en construire une en combinant d'autres portes logiques.

La porte NON (NOT)

La porte "NON" ne comporte qu'une seule entrée, et une sortie. Elle se contente d'inverser le signal:  si le signal d'entrée est HAUT, le signal de sortie est BAS.  Si le signal d'entrée est BAS, alors le signal de sortie est HAUT.




Table de vérité d'une porte NON
EntréeSortie
01
10


Les circuits intégrés 74HC04 et 4069 comportent 6 portes NON...



, et on peut très facilement en construire une en utilisant un transistor (transistor 2N2222, R1 = 10K et R2 = 1K).



À partir de là, on peut définir une porte qui est le contraire des 3 portes précédentes:  la porte NON-ET, la porte NON-OU, et la porte NON-OU EXCLUSIF...

La porte NON-ET (NAND)

La porte NON-ET fait exactement le contraire d'une porte ET, donc sa sortie est basse uniquement si toutes ses entrées sont hautes.




Table de vérité d'une porte NON-ET
Entrée 1Entrée 2 Sortie
001
101
011
110



On retrouve 4 portes NON-ET sur les circuits intégrés 74HC00 et 4011,,,


...et on peut en construire une avec deux transistors (2N2222, R1 = R2 = 10K et R3 = 4K7).
:




La porte NON-OU (NOR)

Sans trop de surprise, la porte NON-OU fait le contraire d'une porte OU, donc sa sortie est haute seulement si toutes ses entrées sont basses.





Table de vérité d'une porte NON-OU
Entrée 1Entrée 2 Sortie
001
100
010
110

Vous trouverez des circuits intégrés spécialement conçus pour remplir cette fonction:   74HC02 et 4001.


Et voici le circuit à base de transistors qui permet d'obtenir une porte NON-OU (transistors 2N2222, R1 = R2 = 10K et R3 = 4K7).
.


La porte NON-OU EXCLUSIF  (XNOR)

Et comme vous l'avez déjà deviné, la porte NON-OU EXCLUSIF fait le contraire d'une porte OU-EXCLUSIF:  la sortie est haute lorsque les deux entrées sont dans le même état, et la sortie est basse lorsque les deux entrées sont dans des états différents.



Table de vérité d'une porte NON-OU EXCLUSIF
Entrée 1Entrée 2 Sortie
001
100
010
111


Le circuit intégré 4077 comporte des portes NON-OU EXCLUSIF.



Construire des portes logiques en combinant d'autres portes logiques

Une dernière remarque:  il est souvent possible de créer une porte logique en combinant plusieurs autres portes logiques.  Bien sûr, vous aurez deviné qu'une porte ET combinée à une porte NON aura le même comportement qu'une porte NON-ET.

Mais il y a mieux:  les portes NON-ET et les portes NON-OU sont universelles, car n'importe quel type de porte peut être construit au moyen d'une combinaison de plusieurs portes NON-ET ou d'une combinaison de plusieurs portes NON-OU.

Voici comment combiner des portes NON-ET pour obtenir toutes les autres portes:



En quoi ça peut être utile?   Supposons que dans un même circuit, vous avez besoin d'une porte NON, d'une porte ET et d'une porte NON-ET.  Une option possible consisterait à utiliser un circuit intégré pour la porte NON (en utilisant une seule de ses 6 portes), un circuit intégré pour la porte ET (en utilisant une seule de ses 4 portes) et un circuit intégré pour la porte NON-ET (en utilisant une seule de ses 4 portes).  Mais vous pouvez obtenir le même résultat au moyen d'un seul circuit intégré comportant 4 portes NON-ET!


Yves Pelletier (Twitter:  @ElectroAmateur)

Une partie des informations présentées ici provient de l'article "Logic Gates Fundamentals",  publié dans le numéro d'avril 1987 du magazine Radio Electronics.

2 commentaires:

  1. Quel est le code ARDUINO pour une porte ET 2 entrées ??

    RépondreSupprimer
    Réponses
    1. Soit deux variables de type Interger: val1 et Val2


      if(val1=5 & val2=7){
      faire action blabla;
      faire autre action
      }

      Donc, Arduino se base sur le langage C et utilise le & (et commerciale)

      On peut utiliser aussi le &&
      else faire action tututu

      Supprimer

Related Posts Plugin for WordPress, Blogger...