Electronique : logique

La logique numérique : portes logiques et circuits combinatoires

Un ordinateur ne connaît que deux tensions, qu'on appelle 0 et 1. Avec quelques transistors, on fabrique des portes qui combinent ces bits selon les règles de l'algèbre de George Boole ; avec des portes, on construit des circuits qui additionnent, comparent, décodent et aiguillent. Cinq planches pour passer de l'interrupteur au calcul, en vérifiant à chaque étape que le circuit fait exactement ce que dit l'algèbre.

Un circuit combinatoire calcule ses sorties à partir de ses seules entrées présentes, sans mémoire du passé : à chaque combinaison d'entrées correspond une sortie, et la liste complète de ces correspondances est la table de vérité. Avec n entrées, elle a 2n lignes. L'algèbre de Boole note le ET comme un produit (A·B), le OU comme une somme (A + B) et le NON par une barre (A). Elle permet de transformer un circuit en un autre qui fait la même chose avec moins de portes. Les circuits séquentiels, qui mémorisent un état, sont le sujet d'un autre cahier.

Deux interrupteurs en série font un ET, deux en parallèle un OU : c'est l'observation de Claude Shannon en 1937. La lampe s'allume quand un chemin conduit le courant ; les combinaisons défilent toutes seules.
PorteNotationVaut 1 quand…Transistors CMOS
NON (inverseur)AA vaut 02
ETA·BA et B valent 16
OUA + Bau moins une entrée vaut 16
NON-ETA·Bau moins une entrée vaut 04
NON-OUA + Bles deux entrées valent 04
OU exclusifA ⊕ Bles entrées sont différentes8 à 12 selon la réalisation
Planche 1

Les portes logiques et leurs transistors

Dans un circuit CMOS, chaque porte comporte deux réseaux d'interrupteurs. Les transistors P, en haut, conduisent quand leur grille est à 0 et relient la sortie à l'alimentation (1). Les transistors N, en bas, conduisent quand leur grille est à 1 et relient la sortie à la masse (0). Les deux réseaux sont construits pour être complémentaires : pour toute combinaison d'entrées, exactement l'un des deux conduit. Il n'y a donc jamais de court-circuit ni de sortie flottante, et la porte ne consomme presque rien au repos. Le NON-ET met ses transistors N en série et ses P en parallèle ; le NON-OU fait l'inverse. Le ET et le OU s'obtiennent en ajoutant un inverseur : ils sont plus coûteux que leurs versions inversées.

Le symbole de la porte choisie. Les fils à 1 sont rouges, les fils à 0 gris foncé.
La même porte au niveau des transistors. En vert, les transistors qui conduisent ; le chemin conducteur relie la sortie à l'alimentation ou à la masse.
Entrées
Équation
—
Sortie pour les entrées actuelles
—
Table obtenue par les transistors / par l'équation
—
Nombre de transistors
—
—
Planche 2

Tout construire avec des portes NON-ET

Le NON-ET est universel : avec lui seul, on fabrique n'importe quelle fonction logique. Relier ses deux entrées en fait un inverseur ; un NON-ET suivi d'un inverseur donne un ET ; d'après les lois de De Morgan, un NON-ET dont on a inversé les entrées donne un OU, car le complément de A·B vaut A + B. Comme le NON-ET est aussi la porte CMOS la plus simple, des circuits entiers ont été construits avec ce seul modèle de porte : l'ordinateur de guidage des missions Apollo comptait environ 5 600 portes NON-OU à trois entrées, toutes identiques ; le NON-OU est universel lui aussi.

De Morgan : A·B = A + B  ·  A + B = A·B  ·  A ⊕ B = NON-ET(NON-ET(A, N), NON-ET(B, N)) avec N = NON-ET(A, B)
Le réseau de portes NON-ET qui réalise la fonction choisie, avec l'état de chaque fil pour les entrées actuelles. À droite, la porte classique équivalente.
Entrées
Portes NON-ET utilisées
—
Transistors (4 par porte NON-ET) / porte CMOS directe
—
Profondeur : portes traversées au plus
—
Réseau NON-ET et fonction comparés sur toute la table
—
—
Planche 3

Simplifier : le tableau de Karnaugh

Toute fonction s'écrit comme une somme de mintermes : un ET des quatre variables pour chaque ligne de la table qui vaut 1. C'est juste, mais coûteux. Deux mintermes qui ne diffèrent que par une variable se fondent en un seul terme sans cette variable, car X·A + X·A = X. Le tableau de Karnaugh (1953) range les 16 cases de sorte que deux cases voisines ne diffèrent que d'une variable, y compris d'un bord à l'autre : il suffit de regrouper les 1 voisins par blocs de 2, 4 ou 8. Les cases marquées × sont indifférentes (combinaisons qui n'arrivent jamais) : on peut les inclure dans un groupe si cela l'agrandit. Ici, le regroupement est calculé par la méthode de Quine et McCluskey, qui trouve tous les groupes maximaux puis choisit le plus petit ensemble qui couvre tous les 1.

Tableau de Karnaugh : cliquez sur une case pour la faire passer de 0 à 1, puis à × (indifférente). Chaque groupe retenu a sa couleur ; la case encadrée est l'entrée en cours.
Le circuit simplifié : une porte ET par groupe, une porte OU pour les réunir. Les entrées défilent de 0 à 15 ; les portes actives sont en rouge.
Forme canonique : mintermes / littéraux
—
Groupes maximaux (impliquants premiers) trouvés
—
Forme simplifiée : termes / littéraux
—
Vérification sur les 16 entrées (hors cases ×)
—
—
—
Planche 4

Additionner : l'additionneur à propagation de retenue

L'addition binaire se pose comme à l'école : on additionne les deux bits et la retenue venue de la droite, on écrit le bit de somme et on propage une retenue vers la gauche. L'additionneur complet le fait avec cinq portes : P = A ⊕ B indique si la retenue doit être propagée, G = A·B si une retenue est générée ; la somme vaut P ⊕ Ce et la retenue sortante G + P·Ce. En chaînant n additionneurs complets, on additionne deux nombres de n bits. Mais chaque porte met un peu de temps à réagir, un délai de porte, et la retenue doit parfois traverser toute la chaîne : le résultat n'est juste qu'au bout de 2n délais dans le pire cas. Avant, les sorties peuvent changer plusieurs fois : ce sont des aléas. La simulation ci-dessous calcule chaque porte, délai après délai.

Si = Ai ⊕ Bi ⊕ Ci  ·  Ci+1 = Ai·Bi + (Ai ⊕ Bi)·Ci  ·  C0 = 0, donc la retenue Ci est prête au plus tard après 2i délais  ·  pire cas : 2n délais
La chaîne des additionneurs complets, bit de poids faible à droite. Les bits et les retenues prennent leur couleur à mesure que la simulation avance.
Chronogramme : chaque ligne montre un bit de somme (et la retenue finale) en fonction du temps, compté en délais de porte, après le changement des entrées. Les impulsions brèves sont des aléas.
Exemples
Addition demandée (en décimal)
—
Résultat lu sur les sorties après stabilisation
—
Temps de stabilisation mesuré (depuis les entrées précédentes)
—
Pire cas annoncé 2n
—
Pire cas trouvé en essayant toutes les transitions (n ≤ 4)
—
Transitions parasites sur les sorties (aléas)
—
Nombre de portes (5 par bit)
—
—
Planche 5 · signature

Trois circuits combinatoires qu'on trouve partout

Un décodeur qui allume les segments d'un afficheur, un multiplexeur qui choisit une entrée parmi plusieurs et peut réaliser n'importe quelle fonction, et un piège que tout concepteur doit connaître : l'aléa, cette brève impulsion parasite qui naît quand deux chemins d'un même signal n'ont pas la même longueur.

Un chiffre de 0 à 9 arrive sur quatre fils, en binaire (code DCB). L'afficheur a sept segments, nommés de a à g. Il faut donc sept fonctions logiques de quatre variables. Les combinaisons 10 à 15 n'arrivent jamais : ce sont des cases indifférentes, qui permettent de grands regroupements. Chaque équation ci-dessous a été simplifiée par la méthode de la planche 3.

À gauche, l'afficheur commandé par le décodeur simplifié. À droite, l'équation de chaque segment ; en rouge, les segments allumés pour le chiffre affiché.
Animation
Code binaire DCB à l'entrée
—
Termes / littéraux, formes canoniques des 7 segments
—
Termes / littéraux, après simplification
—
Vérification : segments corrects pour les 10 chiffres
—
—

Un multiplexeur 8 vers 1 recopie sur sa sortie celle de ses huit entrées de données D0 à D7 dont le numéro est écrit en binaire sur ses trois entrées de sélection A, B, C. Branchons sur les données les huit valeurs d'une table de vérité : la sortie devient exactement cette fonction de A, B, C. Un seul multiplexeur réalise ainsi n'importe laquelle des 256 fonctions de trois variables ; c'est le principe des tables de correspondance (LUT) des circuits programmables FPGA.

Le multiplexeur : les entrées de sélection défilent de 000 à 111, et le chemin choisi est surligné jusqu'à la sortie.
Fonction programmée (numéro de 0 à 255)
—
Sortie du multiplexeur comparée à la table (8 adresses)
—
La même fonction simplifiée en portes
—
Portes du multiplexeur (3 NON, 8 ET à 4 entrées, 1 OU à 8 entrées)
—
—

La fonction F = A·B + A·C vaut 1 quand B = C = 1, que A soit à 0 ou à 1. Pourtant, quand A passe de 1 à 0, la porte ET du haut s'éteint aussitôt, alors que celle du bas attend que l'inverseur ait réagi. Pendant ce délai, aucune des deux n'est active, et la sortie tombe brièvement à 0 : c'est un aléa statique. Le tableau de Karnaugh en donne le remède : ajouter le terme redondant B·C, le consensus, qui recouvre la frontière entre les deux groupes et maintient la sortie à 1 pendant la transition.

F = A·B + A·C  →  aléa de largeur tNON quand A descend  ·  F = A·B + A·C + B·C  →  aucun aléa
Chronogramme de la simulation, avec B = C = 1 et A qui bascule. Le temps est compté en délais d'une porte ET ou OU (1 unité chacune).
Terme de consensus
Aléa mesuré quand A passe de 1 à 0
—
Largeur prévue (tNON, ou 0 avec le consensus)
—
Aléa mesuré quand A passe de 0 à 1
—
Valeur logique de F, avant et après chaque transition
—
—

Repères historiques

Ce qu'il faut retenir

Des interrupteurs à l'algèbre

Une porte CMOS associe un réseau de transistors P vers l'alimentation et un réseau complémentaire de transistors N vers la masse. Série veut dire ET, parallèle veut dire OU. Le NON-ET et le NON-OU sont les portes les plus simples, et chacune suffit à tout construire.

Simplifier

Une fonction a une infinité d'écritures. Le tableau de Karnaugh, ou la méthode de Quine et McCluskey, trouve la somme de produits la plus courte, en profitant des combinaisons indifférentes.

Le temps compte aussi

Chaque porte a un délai. Dans un additionneur, la retenue doit parfois traverser toute la chaîne ; et deux chemins de longueurs différentes produisent des aléas. Les circuits rapides anticipent les retenues ; les circuits sûrs ajoutent les termes de consensus ou attendent la stabilisation.
Pour aller plus loin : modèles et calculs de contrôle

Planche 1. Chaque transistor est un interrupteur idéal. La sortie est déterminée en cherchant un chemin conducteur entre la sortie et l'alimentation, puis entre la sortie et la masse ; la page vérifie qu'exactement l'un des deux existe pour chaque ligne, et que la valeur obtenue est celle de l'équation.

Planche 2. Le réseau est évalué porte par porte dans l'ordre topologique, pour les quatre combinaisons d'entrées ; la profondeur est le plus long chemin entre une entrée et la sortie.

Planche 3. Les impliquants premiers sont obtenus en fusionnant systématiquement les termes qui ne diffèrent que d'une variable (Quine-McCluskey). Le choix des groupes est une recherche exhaustive de la couverture comptant le moins de termes, puis le moins de littéraux. L'expression obtenue est ensuite réévaluée sur les 16 entrées.

Planche 4. Simulation à délai unitaire : à chaque pas, chaque porte prend la valeur calculée à partir de ses entrées au pas précédent. Le circuit part de l'état stable correspondant aux entrées précédentes. Pour n ≤ 4, toutes les paires (entrées précédentes, nouvelles entrées) sont simulées pour trouver le pire cas.

Planche 5. Aléas : simulation à délais de transport entiers, inverseur de délai réglable, portes ET et OU de délai 1.