Les fonctions logiques étudiées dans le chapitre précédent ne sont pas que des concepts abstraits : elles sont physiquement réalisées dans les processeurs sous forme de portes logiques. Ces composants électroniques, assemblés par milliards, effectuent tous les calculs de nos ordinateurs. Dans ce chapitre, vous découvrirez les symboles normalisés des portes logiques et apprendrez à analyser des circuits combinatoires. Le TP correspondant est la fiche 18 - Circuits logiques .
Définition. Un transistor est un composant électronique qui fonctionne comme un interrupteur commandé électriquement. Selon le signal qu’il reçoit, il laisse passer ou bloque le courant.
Les transistors sont les briques de base de tous les circuits numériques. En les combinant astucieusement, on construit des portes logiques qui réalisent les opérations booléennes.
Remarque. Un processeur moderne contient plusieurs milliards de transistors. Par exemple, la puce Apple M2 (2022) en contient environ 20 milliards, gravés à une échelle de 5 nanomètres (5 millionièmes de millimètre).
Il existe deux normes principales pour représenter les portes logiques :
Dans ce cours, nous utiliserons principalement la norme américaine, plus répandue dans la littérature informatique.
La porte NON possède une entrée et une sortie. Elle inverse le signal.
Le petit cercle à la sortie symbolise l’inversion (négation).
La porte ET possède deux entrées (ou plus) et une sortie. La sortie vaut 1 si et seulement si toutes les entrées valent 1.
La porte OU possède deux entrées (ou plus) et une sortie. La sortie vaut 1 si au moins une entrée vaut 1.
La porte NAND est une porte ET suivie d’un inverseur. Le cercle à la sortie indique l’inversion.
La porte NOR est une porte OU suivie d’un inverseur.
La porte XOR renvoie 1 si exactement une des entrées vaut 1.
La porte XNOR (ou équivalence) renvoie 1 si les deux entrées ont la même valeur.
Pour chaque porte ci-dessous, indiquer son nom et son expression logique.
| Porte | Nom | Expression |
|---|---|---|
| 1 | OU (OR) | \(a + b\) |
| 2 | NON-ET (NAND) | \(\overline{{a \cdot b}}\) |
| 3 | NON (NOT) | \(\overline{{a}}\) |
| 4 | OU exclusif (XOR) | \(a \oplus b\) |
| 5 | ET (AND) | \(a \cdot b\) |
| 6 | NON-OU (NOR) | \(\overline{{a + b}}\) |
Définition. Un circuit combinatoire est un assemblage de portes logiques dont la sortie ne dépend que des valeurs actuelles des entrées (pas de mémoire).
Pour analyser un circuit, on détermine l’expression logique de la sortie en fonction des entrées, puis on établit sa table de vérité.
On considère le circuit suivant.
\(S = \overline{{a \cdot b}}\)
Table de vérité :
| \(a\) | \(b\) | \(a \cdot b\) | \(S\) |
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
Analyser le circuit suivant.
\(S = \overline{{a}} \cdot \overline{{b}}\)
Table de vérité :
| \(a\) | \(b\) | \(\overline{{a}}\) | \(\overline{{b}}\) | \(S\) |
|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 1 | 0 | 0 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 0 |
Le OU exclusif peut être construit avec des portes ET, OU et NON.
Le circuit contient deux inverseurs produisant \(\overline{{a}}\) et \(\overline{{b}}\), une porte ET calculant \(\overline{{a}} \cdot b\), une porte ET calculant \(a \cdot \overline{{b}}\) et une porte OU combinant les deux. Expression : \(S = \overline{{a}} \cdot b + a \cdot \overline{{b}} = a \oplus b\).
Table de vérité :
| \(a\) | \(b\) | \(\overline{{a}}\) | \(\overline{{b}}\) | \(\overline{{a}} \cdot b\) | \(a \cdot \overline{{b}}\) | \(S\) |
|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 |
On retrouve bien la table du XOR : \(S = 1\) si et seulement si \(a \neq b\).
Définition. Un demi-additionneur (half adder) est un circuit qui additionne deux bits \(a\) et \(b\). Il produit deux sorties :
| \(a\) | \(b\) | \(C\) (retenue) | \(S\) (somme) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
On reconnaît \(S = a \oplus b\) (XOR), qui vaut 1 quand exactement un des bits vaut 1, et \(C = a \cdot b\) (ET), qui vaut 1 quand les deux bits valent 1.
Circuit du demi-additionneur :
Définition. Un additionneur complet (full adder) additionne trois bits : \(a\), \(b\) et une retenue entrante \(c_{{in}}\). Il produit une somme \(S\) et une retenue sortante \(c_{{out}}\).
Compléter la table de vérité de l’additionneur complet (colonnes \(a\), \(b\), \(c_{{in}}\), \(c_{{out}}\), \(S\)).
| \(a\) | \(b\) | \(c_{{in}}\) | \(c_{{out}}\) | \(S\) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 0 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 |
| 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 |
Interprétation : on additionne \(a + b + c_{{in}}\) en binaire. Par exemple, \(1 + 1 + 1 = 11_2\), donc \(c_{{out}} = 1\) et \(S = 1\).
Remarque. Un additionneur complet peut être construit à partir de deux demi-additionneurs et d’une porte OU. En chaînant plusieurs additionneurs complets, on peut additionner des nombres de plusieurs bits.
Définition. Un multiplexeur (MUX) est un circuit qui sélectionne une entrée parmi plusieurs selon la valeur d’un signal de commande. C’est l’équivalent électronique d’un aiguillage.
Un multiplexeur 2 vers 1 possède deux entrées de données \(e_0\) et \(e_1\), un signal de sélection \(s\), et une sortie \(Y\).
| \(s\) | \(e_0\) | \(e_1\) | \(Y\) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
Quand \(s = 0\), \(Y\) prend la valeur de \(e_0\). Quand \(s = 1\), \(Y\) prend la valeur de \(e_1\).
On souhaite concevoir un circuit de vote majoritaire à trois entrées \(a\), \(b\), \(c\). La sortie \(M\) vaut 1 si au moins deux des trois entrées valent 1.
| \(a\) | \(b\) | \(c\) | \(M\) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 |
\[ M = \overline{a} \cdot b \cdot c + a \cdot \overline{b} \cdot c + a \cdot b \cdot \overline{c} + a \cdot b \cdot c \]
\[ M = b \cdot c \cdot (\overline{a} + a) + a \cdot c \cdot (\overline{b} + b) + a \cdot b \cdot (\overline{c} + c) = a \cdot b + a \cdot c + b \cdot c \]
La sortie vaut 1 dès qu’au moins une paire d’entrées est à 1.
| Porte | Expression | Symbole américain | Sortie vaut 1 quand |
|---|---|---|---|
| NON | \(\overline{{a}}\) | \(a = 0\) | |
| ET | \(a \cdot b\) | les deux entrées valent 1 | |
| OU | \(a + b\) | au moins une entrée vaut 1 | |
| NAND | \(\overline{{a \cdot b}}\) | au moins une entrée vaut 0 | |
| NOR | \(\overline{{a + b}}\) | les deux entrées valent 0 | |
| XOR | \(a \oplus b\) | exactement une entrée vaut 1 |