Chapitre 6.2 : Des opérateurs booléens aux portes logiques⚓︎
I - Au Commencement... Les Transistors⚓︎
A savoir
Au cœur d'un ordinateur, les circuits sont composés par des assemblages de transistors (inventés en 1947 par les Américains John Bardeen, William Shockley et Walter Brattain). Les tensions électriques qui y sont produites représentent toute l'information manipulée par un ordinateur :
- Une tension haute correspond au chiffre 1 (ou Vrai en logique)
- Une tension basse correspond au chiffre 0 (ou Faux en logique)
De nos jours, le transistor est tellement miniaturisé que les circuits des ordinateurs en contiennent plusieurs milliards sur une simple puce de silicium de la taille d'un ongle.
II - Des Transistors aux Portes Logiques⚓︎
A savoir
En connectant de la bonne manière des transistors entre eux, on obtient des circuits électroniques qui permettent à une machine de réaliser concrètement les opérateurs booléens NON, OU, ET... et leurs combinaisons.
Ces circuits électroniques classiques s'appellent des portes logiques.
Chaque porte logique possède la même table de vérité que l'opérateur booléen qu'elle représente. Voici les symboles américains et européens des portes logiques :
1. Porte logique NON⚓︎
La porte logique NON et sa table de vérité
2. Porte logique OU⚓︎
La porte logique OU et sa table de vérité
3. Porte logique ET⚓︎
La porte logique ET et sa table de vérité
4. Porte logique XOR⚓︎
La porte logique XOR et sa table de vérité
III - Exemple : portes logiques et addition binaire⚓︎
A savoir
1. Circuit demi-additionneur⚓︎
Le demi-additionneur est un circuit combinatoire qui permet de réaliser la somme arithmétique de deux bits valant 0 ou 1. En sortie, on obtient le bit correspondant à la somme S et le bit C correspondant à la retenue (carry en anglais).
Pour réaliser ce circuit, on utilise alors deux portes logiques, une XOR (pour le somme) et une AND (pour la retenue)
Ce circuit n'est cependant pas suffisant pour réaliser la somme de nombres de plusieurs bits. Il faut alors tenir compte du report de l'addition des bits précédents
2. Circuit additionneur complet⚓︎
Lorsqu’on additionne deux nombres binaires il faut parfois tenir compte de la retenue de l’addition des bits précédents.
Exemple :
Calculons 1 + 3. En binaire cela donne : 0001 + 0011
L'addition des bits de droite est une addition de deux bits, elle peut être réalisée avec le demi-additionneur (qui comporte 2 bits en entrée)
Pour les bits suivants en revanche, il faut tenir compte d'un éventuel report de la retenue.
Ainsi dès le deuxième bit de notre exemple (en comptant les bits de droite à gauche) il a fallu faire des additions avec trois bits ( 1 + 0 + 1 = 10 " on pose 0 et on reporte 1").
Il faut ajouter une nouvelle entrée au demi-additionneur pour gérer la retenue du bit précédent et ainsi obtenir un additionneur complet avec trois entrées : A, B et Cin (qui prendra en compte la retenue).
Pour avoir l’addition, on fait une première addition de nos deux bits (A et B), puis on additionne ce résultat avec la retenue du bit précédent (Cin).
Pour la retenue, on prend la retenue de A et B puis la retenue de (A+B) et Cin. Enfin on fait un simple OU sur ces deux valeurs pour obtenir notre retenue finale.
3. Additionneur de registres binaire⚓︎
À partir d’un additionneur binaire complet, qui fait la somme de deux bits, on peut créer un additionneur de registres binaires en mettant plusieurs additionneurs complets l’un à la suite de l’autre. Cela donne un circuit très complexe lorsque le registre comporte une multitude de bits.
Pour simplifier, on représentante l’additionneur binaire par une symbole plus compact qui cache les portes logiques dont il est composé (on appelle cela encapsuler).
Maintenant, utilisons notre boite d’additionneur binaire pour faire notre additionneur de registre. On part ici sur un registre de 4 bits. La première retenue est une entrée égale à 0 (pas de retenue en réalité)
Exemple : addition 1001 + 1011
Vous avez vu ici l’additionneur mais il est possible de faire la même chose pour une soustraction, multiplication…
Cela correspond à des instructions de base d’un processeur, au même titre que la comparaison de registre ou encore le décalage de bits dans un registre.
Toutes les instructions de base d’un processeur sont ainsi constituées de circuits logique et donc par extension de portes logiques.