Fonctionnement d'un ordinateur/Les portes logiques

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

Grâce au chapitre précédent, on sait enfin comment sont représentées nos données les plus simples avec des bits. On n'est pas encore allés bien loin : on ne sait pas comment représenter des bits dans notre ordinateur ou les modifier, les manipuler, ni faire quoi que ce soit avec. On sait juste transformer nos données en paquets de bits (et encore, on ne sait vraiment le faire que pour des nombres entiers, des nombres à virgule et du texte...). C'est pas mal, mais il reste du chemin à parcourir ! Rassurez-vous, ce chapitre est là pour corriger ce petit défaut. On va vous expliquer quels traitements élémentaires notre ordinateur va effectuer sur nos bits.

Les portes logiques de base[modifier | modifier le wikicode]

Les portes logiques sont des circuits qui possèdent des sorties et des entrées sur lesquelles on va placer ou récupérer des bits. Les entrées ne sont rien d'autre que des morceaux de « fil » conducteur sur lesquels on envoie un bit (une tension). À partir de là, le circuit électronique va réagir et déduire le bit à placer sur chaque sortie. Tous les composants d'un ordinateur sont fabriqués avec ce genre de circuits.

Sur les schémas qui vont suivre, les entrées des portes logiques seront à gauche et les sorties à droite !

La porte NON[modifier | modifier le wikicode]

La première porte fondamentale est la porte NON, qui agit sur un seul bit : la sortie d'une porte NON est exactement le contraire de l'entrée.

Symbole d'une porte NON.

Pour simplifier la compréhension, je vais rassembler les états de sortie en fonction des entrées pour chaque porte logique dans un tableau que l'on appelle table de vérité.

Entrée Sortie
0 1
1 0

La porte ET[modifier | modifier le wikicode]

La porte ET possède plusieurs entrées, mais une seule sortie. Cette porte logique met sa sortie à 1 quand toutes ses entrées valent 1. Dans le cas le plus simple, une porte ET possède deux entrées.

Symbole d'une porte ET.
Entrée 1 Entrée 2 Sortie
0 0 0
0 1 0
1 0 0
1 1 1

Certaines portes ET ont plus de deux entrées, et peuvent en avoir 3, 4, 5, 6, 7, etc. Là encore, leur sortie ne vaut 1 que si toutes les entrées valent 1 : dans le cas contraire, la sortie de la porte ET vaut 0. Dit autrement, si une seule entrée vaut 0, la sortie de la porte ET vaut 0.

La porte NAND[modifier | modifier le wikicode]

La porte NAND donne l'exact inverse de la sortie d'une porte ET. En clair, sa sortie ne vaut 1 que si au moins une entrée est nulle. Dans le cas contraire, si toutes les entrées sont à 1, la sortie vaut 0. Dans le cas le plus simple, une porte NAND a deux entrées. Certaines portes NAND ont plus de deux entrées : elles peuvent en avoir 3, 4, 5, 6, 7, etc. Là encore, leur sortie ne vaut 1 que si au moins une entrée est nulle : dans le cas contraire, la sortie de la porte ET vaut 0. Dit autrement, si toutes les entrées sont à 1, la sortie vaut 0.

Entrée 1 Entrée 2 Sortie
0 0 1
0 1 1
1 0 1
1 1 0
Symbole d'une porte NAND.

Au fait, si vous regardez le schéma de la porte NAND, vous verrez que son symbole est presque identique à celui d'une porte ET : seul le petit rond sur la sortie de la porte a été rajouté. Il s'agit d'une sorte de raccourci pour schématiser une porte NON.

La porte OU[modifier | modifier le wikicode]

La porte OU est une porte dont la sortie vaut 1 si et seulement si au moins une entrée vaut 1. Dit autrement, sa sortie est à 0 si toutes les entrées sont à 0. Dans le cas le plus simple, la porte OU possède deux entrées, ainsi qu'une seule sortie. Cette porte logique met sa sortie à 1 quand au moins une de ses entrées vaut 1. Certaines portes OU ont plus de deux entrées. Là encore, leur sortie est à 0 si et seulement si toutes les entrées sont à 0 : si une seule entrée est à 1, alors la sortie vaut 1.

Symbole d'une porte OU.
Entrée 1 Entrée 2 Sortie
0 0 0
0 1 1
1 0 1
1 1 1

La porte NOR[modifier | modifier le wikicode]

La porte NOR donne l'exact inverse de la sortie d'une porte OU. Là encore, il en existe une version avec deux entrées, et des versions avec plus de deux entrées. Les tableaux et symboles qui suivent sont ceux d'une porte NOR à deux entrées.

Entrée 1 Entrée 2 Sortie
0 0 1
0 1 0
1 0 0
1 1 0
Symbole d'une porte NOR.

La porte XOR[modifier | modifier le wikicode]

Avec une porte OU, deux ET et deux portes NON, on peut créer une porte nommée XOR. Cette porte est souvent appelée porte OU exclusif. Sa sortie est à 1 quand les deux bits placés sur ses entrées sont différents, et vaut 0 sinon.

Symbole d'une porte XOR.
Entrée 1 Entrée 2 Sortie
0 0 0
0 1 1
1 0 1
1 1 0

La porte NXOR[modifier | modifier le wikicode]

La porte XOR possède une petite sœur : la NXOR. Sa sortie est à 1 quand les deux entrées sont identiques, et vaut 0 sinon (elle est équivalente à une porte XOR suivie d'une porte NON).

Symbole d'une porte NXOR.
Entrée 1 Entrée 2 Sortie
0 0 1
0 1 0
1 0 0
1 1 1

Fabriquer des portes logiques complexes à partir de portes basiques[modifier | modifier le wikicode]

Pour information, il est possible de recréer toutes les portes logiques existantes à partir de seulement quelques portes de base. Par exemple, il est possible de construire toute porte logique, et donc tout circuit numérique, à partir de portes NON, ET et OU. Ces trois portes de base suffisent à créer toutes les autres. La même chose est possible avec uniquement des portes NAND ou seulement des portes NOR. Dans cette section, nous allons voir cela est possible.

L'idée est tout simplement qu'on peut obtenir une porte logique en en combinant deux autres, parfois plus. La porte ainsi obtenue par combinaison est donc une porte "superflue", elle n'est pas une porte de base. On peut rapidement se rendre compte que certaines portes sont simplement l'inverse d'une autre. Par exemple, la porte ET et la porte NAND sont l'inverse l'une de l'autre : il suffit d'en combiner une avec une porte NON pour obtenir l'autre. Même chose pour les portes OU et NOR, ainsi que les portes XOR et NXOR. On a donc seulement quatre portes de base : NON, ET, OU et XOR. On peut aussi remarquer que l'ensemble NON, NAND, NOR et NXOR fonctionne tout aussi bien, de même que des ensembles intermédiaires comme NON, ET, NOR, NXOR, et bien d'autres.

Les cas à trois portes de base[modifier | modifier le wikicode]

Pour poursuivre, nous allons montrer qu'il est possible de créer toutes les portes logiques connues avec seulement trois portes logiques. Pour cela, nous allons montrer que les portes XOR/NXOR sont superflues, et peuvent se fabriquer à partir de portes NON, ET/NAND et OU/NOR. Dans ce qui va suivre, nous allons voir les deux cas les plus connus : le premier est celui où on utilise seulement des portes NON, ET et OU et le second est celui où n'a que des portes NON, NAND et NOR. Nous ne parlerons pas des possibilités "intermédiaires" comme les ensembles (NON, ET, NOR), (NON, NAND, OU), etc.

Avec des portes NON, ET et OU[modifier | modifier le wikicode]

Commençons par aborder le premier cas : créer toutes les portes logiques avec seulement des portes NON, ET et OU. En effet, les portes NAND et NOR se construisent en plaçant une porte NON à la suite d'une porte ET/OU. Pour la porte XOR, il y a plusieurs possibilités, plusieurs combinaisons de portes logiques faisant l'affaire. Voici les deux principales.

Circuits équivalents à une porte XOR
XOR
CMOS10TrXOR

Comme pour la porte XOR, on peut créer une porte NXOR en combinant d'autres portes logiques. Il est notamment possible de la concevoir en utilisant uniquement une porte XOR suivie d'une porte NON.

Avec des portes NON, NAND et NOR[modifier | modifier le wikicode]

Il faut noter que l'on peut aussi fabriquer des circuits avec uniquement des portes NAND, NOR et NON. Rien d'étonnant à cela : les portes ET et OU peuvent se fabriquer simplement en combinant des portes NAND/NOR avec une porte NON. On peut recréer les portes XOR, NXOR et autres en remplacant les portes ET et OU par les circuits ci-dessous.

Porte ET AND from NAND and NOT
Porte OU OR from NOR and NOT

Les cas à une deux portes de base[modifier | modifier le wikicode]

Dans les exemples précédents, on a vu que seul trois portes suffisaient à créer toutes les autres. Mais on peut retirer une porte de base, deux portes suffisant à créer toutes les autres. Pour cela, il faut faire en sorte qu'une des trois portes puisse être fabriquée avec les deux autres. Cela permet de retirer celle-ci des portes de base. Par exemple, prenons l'ensemble (NON, ET, OU) : si on arrive à fabriquer une porte ET à partir de portes OU et NON, alors on en déduit que seules deux portes suffisent : les portes NON et OU. C'est ce que nous allons faire ci-dessous, ce qui nous donnera les ensembles de portes de base suivants : (NON, ET), (NON, OU), (NON, NAND), (NON, NOR). Nous n'allons voir que les deux premiers, les cas (NON, NAND), (NON, NOR) se déduisant facilement des précédents.

Avec des portes NON et ET[modifier | modifier le wikicode]

Pour montrer que seules les portes NON et ET suffisent, il suffit de créer une porte OU avec seulement des portes NON et ET.

Premièrement, il est possible de créer une porte NOR avec des NON et des ET. Ce qui réalisée avec le circuit ci-dessous. Il faut d'ailleurs signaler que l'ensemble (NON, ET, NOR) suffit à créer toutes les portes, mais passons.

Porte NOR fabriquée avec des portes NON et ET.

On peut donc créer une porte OU en ajoutant une porte NON au bout du circuit, pour inverser son résultat. On voit que cela permet de créer une porte OU avec seulement des ET et des NON.

Porte OU fabriquée avec des portes NON et ET.

Avec des portes NON et OU[modifier | modifier le wikicode]

Pour montrer que seules les portes NON et OU suffisent, il suffit de créer une porte ET avec seulement des portes NON et OU.

Premièrement, il est possible de créer une porte NAND avec des NON et des OU. Ce qui réalisée avec le circuit ci-dessous. Il faut d'ailleurs signaler que l'ensemble (NON, OU, NAND) suffit à créer toutes les portes, mais passons.

Porte NAND fabriquée avec des portes NON et OU.

On peut donc créer une porte ET en ajoutant une porte NON au bout du circuit, pour inverser son résultat. On voit que cela permet de créer une porte ET avec seulement des OU et des NON.

Porte ET fabriquée avec des portes NON et OU.

Les cas à une seule porte de base[modifier | modifier le wikicode]

Pour finir, nous allons montrer qu'il est possible de créer toutes les portes logiques connues avec seulement une porte logique. Cette fois-ci, nous allons détailler toutes les possibilités. Ce qui est assez facile, vu qu'il n'y en a que deux : soit on utilise des portes NOR, soit on utilise des portes NAND. Pour comprendre pourquoi, il suffit de savoir qu'on peut créer une porte NON avec soit une NOR, soit une NAND. Ce qui réduit d'une porte le nombre de portes de base.

Avec des portes NAND uniquement[modifier | modifier le wikicode]

Pour l'anecdote, il est possible de fabriquer toutes les autres portes logiques à partir de portes NAND. Par exemple, on peut créer assez facilement une porte NON, une porte ET, ou d'autres portes en utilisant quelques portes NAND : une seule pour émuler une porte NON, deux pour une porte ET, et ainsi de suite. L'intérêt de n'utiliser qu'un seul type de porte est que les circuits intégrés comportent plusieurs portes d'un même type ; utiliser un seul type de porte évite d'utiliser différents types de circuits intégrés et de gaspiller des portes non utilisées.

La porte NON se fabrique assez simplement : il suffit d'envoyer le bit à inverser sur les deux entrées d'une porte NAND. Ce faisant, le ET entre le bit et lui-même laissera celui-ci inchangé, mais le NON l'inversera. Créer la portes ET est assez simple : il suffit de mettre une porte NON à la suite d'une porte NAND. La porte OU est plus complexe. Le circuit qui correspond à une porte NOR, est équivalent au circuit d'une porte OU qu'on aurait fait suivre d'une porte NON.

Portes logiques hors XOR/NXOR fabriquées avec des portes NAND
Porte NON
NOT from NAND
Porte ET AND from NAND
Porte OU OR from NAND
Porte NOR NOR from NAND

La porte XOR est plus compliquée à fabriquer, mais les circuits suivants font l'affaire à la perfection.

Porte XOR créé avec des portes NAND
XOR from NAND XOR from NAND

Voici quelques circuits équivalents à la porte NXOR :

Porte NXOR à base de NAND
NXOR from NAND NXOR from NAND

Avec des portes NOR uniquement[modifier | modifier le wikicode]

Il est aussi possible de recréer les portes ET, OU et NON en utilisant des montages composés uniquement de portes NOR. Comme quoi, la porte NAND n'est pas la seule à avoir ce privilège. On peut donc concevoir un circuits en n'utilisant que des portes NOR. Pour donner un exemple, sachez que les ordinateurs chargés du pilotage et de la navigation des missions Appollo étaient intégralement conçus avec des portes NOR.

La porte NON se fabrique assez simplement : il suffit d'envoyer le bit à inverser sur les deux entrées d'une porte NOR. Ce faisant, le OU entre le bit et lui-même laissera celui-ci inchangé, mais le NON l'inversera. Créer la porte OU est équivalente à une porte NOR suivie d’une porte NON. Le circuit de la porte ET est plus complexe. Le circuit de la porte NAND se fabrique avec le circuit d'une porte ET qu'on fait suivre d'une porte NON.

Portes logiques hors XOR/NXOR fabriquées avec des portes NOR
Porte NON
NOT from NOR
Porte OU
OR from NOR
Porte ET
AND from NOR
Porte NAND
NAND from NOR

Voici quelques circuits équivalents à la porte XOR :

Porte XOR créé avec des portes NOR
XOR from NOR XOR from NOR

Voici quelques circuits équivalents à la porte NXOR :

Porte NXOR à base de NOR
NXOR from NOR NXOR from NOR