Circuits Logiques

Michel Billaud

vers 2000

1 Eléments de Technologie

Nous avons vu comment coder l’information par des suites de valeurs binaires. Nous allons voir maintenant comment représenter ces valeurs binaires par des signaux électriques afin de les manipuler par des circuits électroniques.

1.1 Représentations de la logique binaire

1.1.1 Représentation des signaux

Il existe plusieurs façons de coder les valeurs 0 et 1. La plus simple, que nous adopterons dans la suite, est appelée logique positive et consiste à représenter 1 par la présence d’une tension (par exemple +5v) et 0 par une tension nulle.1

1.1.2 Génération d’un signal

Il est facile de fournir de tels signaux à un circuit: il suffit d’un interrupteur à deux positions (utilisé pour les va-et-vient); dans une position la sortie de l’interrupteur transmettra la tension +V, dans l’autre 0v (voir figure [fig1])

Génération d’un signal d’entrée

En pratique, on utilise plutôt (figure [fig2]) un interrupteur simple dont la sortie est reliée à une résistance de rappel R assez forte. Lorsque l’interrupteur est fermé (il fat contact) la sortie est à +V, lorsqu’il est ouvert la résistance ramène la tension de sortie vers 0. De plus ceci évite d’avoir une entrée “en l’air” quand l’interrupteur est entre deux positions.

Génération d’un signal d’entrée (2)

1.1.3 Observation d’un signal

Pour observer la sortie d’un circuit on peut utiliser (figure [ampoule]) une ampoule du voltage voulu (5v = lampe de poche).

Ampoule témoin

On préfèrera généralement employer des diodes électro-luminescentes (LED = Light Emitting Diode), qui coûtent moins cher et nécessitent un courant moindre (voir figure [temoin-led]). 0

LED témoin

Encore mieux, pour éviter de trop “tirer” sur la sortie du circuit observé, on pourra utiliser un transistor en amplification (voir plus loin [trans-ampli]).

1.2 Notions rudimentaires d’électronique

Quelques notions sommaires d’électronique sont nécessaires pour la compréhension des circuits logiques de base. Le lecteur est supposé connaître la loi d’Ohm et des rudiments d’électricité.

1.2.1 La diode

La diode à semi-conducteurs est un composant électronique muni de deux bornes: l’anode et la cathode (voir [diode]).

La diode: apparence physique et symbole

La propriété fondamentale de la diode est d’opposer qu’une résistance très faible lorsqu’elle est traversée par un courant de l’anode vers la cathode (sens passant), et une résistance très forte dans le sens inverse. Voir figure [diode-on-off].

Diodes passante (D1) et bloquée (D2)

Pour analyser les circuits logiques nous considérerons que les diodes sont parfaites, c’est-à-dire ayant une résistance nulle dans l’état passant, et infinie dans l’état bloqué.

Remarque importante. Lorsque nous construirons des circuits nous aurons soin d’éviter de faire traverser les diodes par des courants trop forts (risque de claquage). Il faudra donc de les monter en série avec des résistances pour limiter le courant.

1.2.2 La diode électro-luminescente

Les diodes électro-luminescentes (LED = Light Emitting Diod, voir fig. [fig9]) émettent de la lumière quand elles sont traversées par un courant de l’ordre de 10 à 20 mA dans le sens passant. Ces diodes offrant une résistance très faible, il conviendra de les monter en série avec une résistance limitatrice de courant d’une valeur suffisante (R = U/I = 5v/10mA = 500Ω).

LED: apparence physique et schéma

1.2.3 Le transistor

Le transistor2 est un composant à 3 pattes: l’émetteur, le collecteur et la base (voir figure [transistor]).

Transistor NPN: boitier, broches (vues de dessous), schéma

Dans les montages usuels, le collecteur est relié à la tension d’alimentation  + V au travers d’une résistance Rc, l’émetteur étant relié à la masse (0v). Le courant Ib qui traverse la base permet de contrôler l’intensité de celui qui traverse l’émetteur et le collecteur.

Polarisation d’un transistor

Lorsque le transistor est utilisé en amplification, les courants sont liés par les équations

Les deux constantes β et Ice dépendent du transistor: le gain β est de l’ordre de 100, le courant Ice vaut quelques micro-ampères pour les transistors au silicium, et quelques nano-ampères pour les transistors au germanium. En général on le néglige pour les calculs.

Les montages logiques utilisent le mode de fonctionnement bloqué-saturé, en débordant largement de la plage de valeurs où les formules ci-dessus sont valides: si on applique une tension assez forte (proche de +V) à la base, l’intensité Ib est maximum et le transistor n’oppose qu’une résistance très faible entre émetteur et collecteur: le transistor est saturé. Si on applique une tension nulle à la base, le courant Ic sera négligeable : le transistor est alors dit bloqué.

[trans-ampli]

LED amplifiée par un transistor

Ceci justifie le montage de la figure [ampli-diode] : lorsque l’entrée est à +V, le transistor est saturé, donc il laisse passer le courant à travers la LED qui s’éclaire. Lorsque l’entrée est au niveau bas (0v), le transistor est bloqué et la LED reste éteinte. En raison des propriétés amplificatrices du transistor, le courant de base n’a pas besoin d’être très élevé (de l’ordre de Ic/β), par conséquent on peut mettre une résistance limitatrice sur la base. Cette résistance évite de trop “tirer de courant” du signal que l’on observe, ce qui risquerait de perturber son fonctionnement.

1.3 Portes logiques

En assemblant ces composants on obtient des portes logiques qui combinent les signaux.

1.3.1 Porte OU

1.3.1.1 Montage à diodes

Deux diodes et une résistance suffisent pour réaliser une porte OU selon le schéma de la figure [porte-ou].

Porte logique OU à diodes

1.3.1.2 Analyse du montage

Supposons que les deux entrées A et B soient portées au potentiel +V. Les deux diodes sont dans le sens passant, et laissent donc passer le courant. Tout se passe alors comme si la sortie S était reliée à la même tension +V.

Si A et B sont reliées à la masse (0v), les diodes ne conduisent pas le courant. La sortie S est donc ramené à 0v par la résistance de rappel.

Si une des entrées est à +V et l’autre à la masse, la diode passante suffit, comme dans le premier cas, à amener la tension +V sur S.

1.3.1.3 Table de vérité de l’opérateur OU

Si nous prenons la convention de logique positive, la tension +V correspond à la valeur logique “vrai” (notée 1) et 0v à “faux” (0). La table de vérité de l’opération “+” ainsi obtenue est celle de l’opérateur “OU logique”: $

A B A + B
0 0 0
0 1 1
1 0 1
1 1 1

La sortie est à 1 si au moins une des entrées est à 1.

1.3.1.4 Porte OU multiple

En reliant plusieurs entrées de la même façon on obtient une porte OU multiple. Son fonctionnement se résume en une phrase: la sortie est à 1 si au moins une des entrées est à 1.

Dans les schémas logiques, on représente les portes logiques par un symbole (figure [log2])

Symboles des portes OU

1.3.1.5 Montage à transistors

Le montage de la figure [log8] remplit la même fonction. L’analyse en est laissée au lecteur.

Porte OU à transistors en parallèle

1.3.2 Porte ET

1.3.2.1 Montage à diodes

Le schéma (figure [log3]) n’est pas sans rappeler celui de la porte OU.

Porte ET à diodes

1.3.2.2 Analyse du montage

Chaque diode ne peut être passante que si l’entrée associée est à 0. Si une des entrées est à 0, la sortie sera donc également à 0. Par contre si les deux entrées sont à +V, la sortie S sera à +V au travers de la résistance de rappel.

1.3.2.3 Table de vérité de l’opérateur ET

L’opération logique “ET” (noté “”) correspondant à ce montage possède donc la table de vérité suivante:

A B A ⋅ B
0 0 0
0 1 0
1 0 0
1 1 1

La sortie est à 1 si les deux entrées sont à 1.

On représente les portes ET (à deux ou plusieurs entrées) par un symbole (figure [log4])

Symboles des portes ET

1.3.2.4 Montage à transistors

Le montage de la figure [log7] remplit la même fonction. L’analyse en est laissée au lecteur.

Porte ET à transistors en série

1.3.3 Porte NON

1.3.3.1 Montage

Dans la figure [log5] on utilise un transistor en mode bloqué/saturé.

Porte NON à transistor

1.3.3.2 Analyse du montage

Lorsque l’entrée est au niveau haut, le transistor est saturé. La sortie est alors reliée à la masse par l’intermédiaire de la résistance interne très faible du transistor : la sortie S est au niveau bas.

Lorsque l’entrée est au niveau bas, le transistor est bloqué. La résistance de rappel ramène donc la sortie au niveau haut.

1.3.3.3 Table de vérité de l’opérateur NON

La table de l’opérateur NON “¬” ainsi obtenu est

A ¬A
0 1
1 0

La sortie est à 1 si et seulement si l’entrée est à 0.

On symbolise cet opérateur (figure [log10]) par un triangle (indiquant par convention l’amplification) suivi d’un rond (négation).

Symbole de la Porte NON

1.3.4 Porte NON-ET (NAND)

Porte NAND

Le montage de la figure [log9] réalise une fonction dont la table de vérité est:

A B S
0 0 1
0 1 1
1 0 1
1 1 0

On remarque aisément que l’on a S = ¬(A.B), et on appelle cet opérateur le NON-ET (ou “nand”).

Exercice Donnez un schéma de cet opérateur utilisant 2 diodes, une résistance et un transistor.

On le représente par un symbole “ET” suivi du rond qui indique la négation (figure [log11]).

Porte NON-ET

La porte NAND a un intérêt pratique évident: elle permet de reconstituer tous les autres types de portes.

1.3.5 Porte NON-OU (NOR)

La fonction “non-ou” (symbolisée fig. [log14]) est définie de la même façon, par l’équation nor(A,B) = ¬(A+B)

Exercice Proposez une porte NOR à transistors.

1.3.6 Porte OU-exclusif (XOR)

La fonction XOR “ou-exclusif” (fig. [log15]) est souvent notée . On la définit par: A ⊕ B = (¬AB) + (A⋅¬B)

Symbole de la porte XOR (ou-exclusif)

Exercice Proposez une porte XOR à transistors.

1.3.7 Le circuit intégré CMOS 4011

Les circuits intégrés logiques sont des boîtiers qui renferment plusieurs portes logiques inter-connectées. Il existe une grande quantité de circuits intégrés logiques, renfermant des portes ET, OU, NAND, etc. Pour des petits montages, il est économique d’utiliser un seul type de circuit, comme le circuit CMOS 4011, qui contient 4 portes NAND.

1.3.7.1 Brochage

Le circuit 4011 se présente sous forme d’un boîtier DIL (Dual in line) à 14 broches (voir figure [log12]). Une encoche sur le côté gauche permet de reconnaître le sens du circuit.

Circuit CMOS 4011 vu de dessus

Les broches 14 (en haut à gauche) et 7 (en bas à droite) servent à l’alimentation du circuit (14: +V, 7: masse). Les autres sont les entrées et sorties des 4 portes NAND:

La figure [log13] montre comment réaliser une porte OU avec ce circuit.

Porte OU avec CMOS 4011

Exercice Fonctions binaires usuelles Montrez comment réaliser les expressions A.B, A ⊕ B, $A+\overline{B}$ à l’aide d’un circuit 4011.

Exercice Fonction majorité Réalisez la fonction maj(A,B,C), dont le résultat est 1 si au moins deux entrées sont à 1, à l’aide d’un circuit 4011 (ou plusieurs).

Exercice Réalisez la fonction $f(A,B,C)= $.

1.3.7.2 Conditions d’emploi des circuits CMOS

Les circuits de type CMOS présentent certains avantages pour les montages expérimentaux:

Par contre, ces circuit sont sensibles à l’électricité statique3. De plus, la propagation des signaux de l’entrée à la sortie d’une porte est plus lente (20-40 ns) qu’avec d’autres familles de circuits, comme les TTL.

1.3.7.3 Emploi des circuits TTL

Les circuits TTL (transistor-transistor-logic) sont très utilisés pour les réalisations professionnelles. A titre d’exemple, les caractéristiques de la série SN74 sont:

2 Algèbre de Boole et circuits logiques

En combinant les portes logiques, et en prenant garde de ne pas faire de boucles dans les circuits4, on réalise des circuits dont les sorties ne dépendent que des valeurs des entrées. On pourra alors décrire la fonction réalisée par ce circuit par sa table de vérité.

L’étude des “tables de vérité” a été entreprise il y a plus d’un siècle, et constitue ce qu’on appelle l’algèbre de Boole5.

Les propriétés de cette algèbre nous permettront de raisonner sur les circuits, et donc de les construire rigoureusement, plutôt que par la (coûteuse) méthode des essais et erreurs. En particulier nous verrons des méthodes systématiques pour simplifier les circuits.

2.1 Définitions

On appelle fonction booléenne toute fonction de {0, 1}n dans {0, 1}.

Il y a 22n fonctions booléennes à n variables : en effet la table de vérité pour décrire d’une fonction booléenne à n variables contient 2n cases, qui contiennent chacune 0 ou 1.

Une expression booléenne est un terme construit à partir de variables (prises dans un ensemble V), de constantes 0 ou 1, et d’opérateurs ET, OU, et NON. Exemple : a + ¬(a⋅¬b) + b.

Une expression booléenne représente une fonction booléenne ; nous dirons que deux expressions sont équivalentes si elles dénotent la même fonction.

Exemple Si nous construisons la table de vérité de l’expression ci-dessus, et de l’expression ¬a + b:

a b ¬b a ⋅ ¬b ¬(a⋅¬b) a⋅¬b) + b ¬a ¬a + b
0 0 1 0 1 1 1 1
0 1 0 0 1 1 1 1
1 0 1 1 0 0 0 0
1 1 0 0 1 1 0 1

nous constatons qu’elles coïncident : les deux expressions représentent la même fonction.

Par commodité, on appelle somme toute expression de la forme t1 + t2 + … + tn. Elle peut se réduire à un seul terme, ou aucun (dans ce cas c’est 0). Un produit est de la forme t1.t2tn. Le produit vide est 1.

Un monôme est un produit de variables ou de négations de variables, chaque variable n’apparaissant qu’au plus une fois.

Exemple de monômes: x, ¬y, x ⋅ ¬y

L’expression 1 est également un monome, en tant que produit vide.

Remarque À partir d’un ensemble de n variables on peut construire Cnk.2k monômes distincts à k variables : pour choisir un tel monôme il suffit de sélectionner k variables parmi n (d’où le coefficient binomial), et d’attribuer ou non à chacune d’entre elles une barre (2k possibilités).

Il y a en tout 3n monômes, puisqu’il suffit de décider, pour chacune des variables, de la faire figurer telle quelle, avec une barre, ou pas du tout. Ceci prouve l’égalité:

Cn0.20 + Cn1.21 + … + Cnn.2n

que l’on peut d’ailleurs retrouver en développant (1+2)n à l’aide des formules connues.

Un monôme est dit complet par rapport à un ensemble donné de variables si toutes les variables de cet ensemble apparaissent une fois (avec ou sans négation).

Il y a 2n monômes complets sur un ensemble de n variables, chaque monôme complet correspondant à une des cases d’une table de vérité à n variables.

Une expression est en forme canonique si elle est écrite sous forme d’une somme sans répétition de monômes complets.

2.1.1 Proposition

Toute fonction booléenne peut être construite par composition d’opérations OU, ET et NON.

Preuve

Toute fonction booléenne f(a,b,c…) peut être décrite par sa table de vérité. Chaque case de cette table correspond à un monôme complet. Une expression de la fonction f s’obtient en faisant la somme des monômes complets dont la valeur est 1.

Exemple Considérons une fonction maj (majorité) à trois variables a, b, c, qui vaut 1 quand au moins deux des entrées sont à un. On dresse la table de vérité de maj, en faisant figurer dans la marge les monômes correspondants:

a b c maj(a,b,c) monôme
0 0 0 0 ¬a ⋅ ¬b ⋅ ¬c
0 0 1 0 ¬a ⋅ ¬b ⋅ c
0 1 0 0 ¬a ⋅ b ⋅ ¬c
0 1 1 1 ¬a ⋅ b ⋅ c
1 0 0 0 a¬b ⋅ ¬c
1 0 1 1 a ⋅ ¬b ⋅ c
1 1 0 1 a ⋅ b ⋅ ¬c
1 1 1 1 a ⋅ b ⋅ c

et on obtient l’expression en forme canonique (en omettant les points pour le “et”) : maj(a,b,c) = (¬a)bc + ab)c + abc) + abc

2.2 Propriétés des algèbres de Boole

Les opérations ET, OU, NON définies sur l’ensemble {0, 1} possèdent les propriétés suivantes:

¬(¬A) = A double négation
¬0 = 1 ¬1 = 0 constantes
¬A + B = ¬A ⋅ ¬B ¬(A.B) = ¬A + ¬B dualité
(A+B)+C = A+(B+C) (AB)C = A(BC) associativité
A + B = B + A AB = BA commutativité
(A+B)C = AC + BC AB + C = (A+C)(B+C) distributivité
A + A = A AA = A idempotence
A + 0 = A A ⋅ 1 = A éléments neutres
A + 1 = 1 A ⋅ 0 = 0 absorption
A + ¬A = 1 A ⋅ ¬A = 0 complémentaires

Remarques

2.2.1 Algèbre de Boole

On appelle algèbre de Boole tout ensemble qui possède deux constantes 0 et 1, et des opérations +,⋅,¬ qui satisfont les équations ci-dessus.

Exercice Montrez qu’il n’y a pas d’algèbre de Boole à 3 éléments {0, 1, 2}.

Indication : que peut bien valoir ¬2 ?

On voit facilement que le produit A × B de deux algèbres de Boole est également une algèbre de Boole, dont les membres sont des couples. Les opérations sur les couples sont définies par

Dans le sens inverse, un résultat mathématique (théorème de Stone) dit que toute algèbre de Boole se ramène en fait à un produit d’algèbres de Boole à 2 éléments7.

2.3 Simplification des expressions

À partir d’une expression booléenne, on pourra facilement fabriquer un circuit. Pour réaliser une même fonction, on aura tout intérêt à avoir des circuits qui utilisent le moins possible de portes logiques, pour des raisons de simplicité, de coût, de taille du circuit et de consommation de courant.

2.3.1 Approche algébrique

On peut essayer de simplifier les circuits en utilisant les équations vues plus haut. Par exemple, pour la fonction maj :

maj(a,b,c) = ¬abc + a¬bc + ab¬c + abc

 = ¬abc + a¬bc + ab¬c + abc + abc + abc (idempotence)

 = ¬abc + abc + a¬bc + abc + ab¬c + abc (commutativité)

 = (¬a+a)bc + ab+b)c + abc+c) (distributivité)

 = 1.bc + a.1.c + ab.1 (complémentarité)

 = bc + ac + ab (éléments neutres)

Mais dans ce genre de travail, la difficulté est de mener le calcul vers une expression simple … que l’on ne connaît pas a priori.

Un petit problème mathématique ? Il existe 222 = 16 fonctions à deux variables.

  1. Donnez une expression aussi simple que possible de chacune d’elles.
  2. Déterminez celles qui sont croissantes, c’est-à-dire telles que x ≤ x et y ≤ y entraîne f(x,y) ≤ f(x′,y′). Pour chacune d’elles, montrez qu’elle peut s’exprimer (sans utiliser de négation) par une somme de produits de variables.
  3. Réciproquement, montrez que toute fonction dont l’expression contient des ET et des OU (mais pas de NON) est nécessairement croissante.
  4. Généralisez au cas des fonctions ayant un nombre quelconque de variables.

2.3.2 Méthode de Karnaugh

La méthode de Karnaugh est une méthode visuelle pour trouver une expression simple d’une fonction booléenne de quelques variables (jusqu’à 6).8.

Elle repose sur une présentation particulière de la table de vérité de la fonction étudiée. Voici la disposition adoptée pour les fonctions de 3 variable a, b et c :

a b : c 0 1
0 0
0 1
1 1
1 0

et pour 4 variables :

a b : c d 0 0 0 1 1 1 1 0
0 0
0 1
1 1
1 0

La disposition est telle que les “coordonnées” de deux cases adjacentes ne diffèrent que par une seule variable. Comme chaque case correspond à un monôme complet, un groupement de 2 cases adjacentes représentera un monôme à n − 1 variables.

Exemple : dans la première table, - la case en bas à gauche correspond à a = 1, b = 0, c = 0, c’est-à-dire au monôme a ⋅ ¬b ⋅ ¬c. - pour sa voisine de droite, c’est le monôme a ⋅ ¬b ⋅ c. - en les regroupant, on obtient a ⋅ ¬b ⋅ ¬c + a ⋅ ¬b ⋅ ¬c qui est égal à a ⋅ ¬b ⋅ (cc), qui se simplifie en a ⋅ ¬b.

Attention : il faut également considérer les bords opposés comme étant adjacents, en regroupant les cases en haut à gauche et en bas à gauche, on obtient ¬b ⋅ ¬c.

Les monômes à n − 2 variables sont visualisés sous forme de carrés, ou de rectangles 1 × 4.

Exemples

La méthode de Karnaugh consiste à

  1. écrire la table de vérité de la fonction dans la table
  2. procéder à des regroupements que l’on entoure
  3. écrire la somme des monomes correspondants.
2.3.2.0.1 Algorithme

L’algorithme est le suivant:

La figure [boole1] illustre le déroulement possible de la méthode sur l’exemple de la fonction majorité. Le résultat obtenu est BC + AB + AC.

Méthode de Karnaugh : exemple

Exercice. Le vote : Une commission est composé d’un président P et trois membres A,B,C. Cette commission doit se prononcer sur un vote par oui (1) ou non (0) à la majorité. Personne ne peut s’abstenir. En cas d’égalité entre les oui et les non, la voix du président est prépondérante. En utilisant la méthode de Karnaugh, donnez une expression simple de la fonction vote(A,B,C,P).

Exercice Décodage 7 segments hexadécimal Un afficheur 7 segments est composé de 7 diodes électro-luminescentes notés a,b,…g (voir figure [boole2]). Un nombre est fourni, codé en binaire sur 4 bits x3x2x1x0, qui devra être affiché. Donnez l’expression des 7 fonctions a(x3,x2,x1,x0), b(x3,x2,x1,x0), …

Afficheur 7 segments, chiffres

La méthode de Karnaugh est également applicable dans le cas des fonctions incomplètement spécifiées, c’est-à-dire qui ont des “cases vides” dans lesquelles on peut mettre ce que l’on veut, parce que cela correspond à des situations qui ne peuvent pas se produire.

La méthode est alors la suivante: former les plus gros paquets possibles contenant au moins un 1 non entouré et aucun 0.

Exercice Le dé électronique (fig. [boole3]) possède trois entrées, par lesquelles arrivent des nombres de 1 à 6 codés en binaire. Donnez une fonction pour chacune des lampes qui indiquera si elle doit être allumée ou éteinte.

Le dé électronique

Exercice Décodage 7 segments décimal Reprendre l’exercice de l’afficheur 7 segments, en supposant que les valeurs d’entrée vont toujours de 0000 à 1001.

Exercice Multiples de 3 Proposez un circuit qui prendra en entrée un nombre N entre 0 et 15 (codé en binaire évidemment) et dont la sortie indiquera si N est un multiple de 3.

3 Quelques circuits combinatoires

Dans ce chapitre nous étudions brièvement quelques circuits combinatoires qui interviennent dans la réalisation des composants logiques d’un ordinateur.

Nous présenterons l’étude de ces circuits sous une forme commune : la spécification énonce rapidement le rôle du circuit, la fonction de tranfert indique précisément (en général par des tables de vérité) la valeur des sorties pour toutes les entrées possibles, la réalisation montre un des circuits possibles.

3.1 Demi-additionneur

3.1.1 Spécification

C’est un circuit (voir fig. [combi1]) à deux entrées a, b et deux sorties r, s. Les entrées représentent les nombres 0 et 1, et rs est l’expression en binaire de leur somme. (s est la somme, r la retenue).

Demi-additionneur

3.1.2 Fonction de transfert

Table

a b r s
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

Équations

3.1.3 Réalisation:

Le schéma de la figure [combi2] se déduit immédiatement des équations.

Schéma d’un demi-additionneur

3.2 Additionneur élémentaire

Le demi-additionneur que nous venons de voir ne suffit pas pour réaliser des additions “chiffre par chiffre” parce qu’il produit des retenues, mais ne sait pas les utiliser.

3.2.1 Spécification

L’additionneur élémentaire (Fig. [combi3]) est un circuit à 3 entrées a, b, c et deux sorties r, s. Le nombre rs indique, en binaire, le nombre d’entrées qui sont à 1.

Additionneur

3.2.2 Fonction de transfert

a b c r 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

Équations :

Exercice Montrez qu’un additionneur peut être réalisé à partir de trois demi-additionneurs

Exercice Montrez qu’un additionneur peut être réalisé à partir de deux demi-additionneurs et une porte OU.

3.3 Circuit additionneur 2 × n bits

En mettant côte à côte n additionneurs on peut réaliser un additionneur n bits.

3.3.1 Spécification

Circuit à 2n + 1 entrées (a0an − 1, b0bn − 1, c) et n + 1 sorties (s0sn − 1, r). Les entrées an − 1an − 2a1a0 représentent un nombre A codé en binaire (et de même pour B sur les entrées bj), et c est la retenue entrante. Les sorties rsn − 1sn − 2…s1s0 expriment la valeur de A + B + c.

3.3.2 Réalisation

Une réalisation directe (par étude des tables de vérité et recherche d’expressions minimales) n’est envisageable que pour de très petites valeurs de n (si n = 3 il y a 7 entrées, donc des tables de vérité à 128 cases …).

On procède donc par décomposition du problème : il suffit de mettre en parallèle n additionneurs élémentaires identiques. La figure [combi4] montre un additionneur 2 × 4 bits.

Additionneur en tranches

Remarque Ces additionneurs “en tranches” peuvent eux-mêmes être juxtaposés pour former des additionneurs capables de traiter des nombres plus grands : il suffit de relier la retenue sortante de chaque circuit à la retenue entrante du suivant.

3.4 Décodeur simple

3.4.1 Spécification

Ce circuit possède n entrées a0an − 1 et 2n sorties s0s2n − 1. Les entrées ai codent un nombre A en binaire. La sortie sA est mise à 1, les autres à 0.

3.4.1.1 Fonction de transfert

Pour un circuit à 2 entrées, n = 2, on a la table :

a1 a0 s0 s1 s2 s3
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1

3.4.1.2 Réalisation

On voit facilement qu’à chaque sortie correspond un monôme complet sur a0, a1, et réciproquement. Voir figure [combi5] pour le schéma d’un décodeur “2 vers 4”.

Décodeur “2 vers 4”

Exercice Dessinez un décodeur “3 vers 8”

3.5 Décodeur avec validation

Ce décodeur possède une entrée supplémentaire V, qui sert à “activer” le circuit. Si cette entrée est à 1, le décodeur fonctionne comme précédemment. Si V = 0, toutes les sorties sont à 0.

On obtient (fig. [combi6]) ce circuit par une simple modification du schéma précédent.

Décodeur “2 vers 4” avec validation

Remarque Les décodeurs avec validation peuvent être assemblés entre eux pour former des décodeurs plus gros. Le montage de la figure [combi7] montre un décodeur “maître” pilotant 4 décodeurs esclaves, le tout formant un décodeur “4 vers 16” avec validation.

Montage de décodeurs en maître-esclaves

Exercice Quelles doivent être les valeurs des entrées pour avoir s13 = 1 ?

4 Multiplexeur

Autre circuit très utile, le multiplexeur permet de sélectionner une entrée, pour la reporter sur la sortie. C’est un circuit à une seule sortie S. Il prend comme entrées un nombre N sur k bits, et 2k entrées ei. La valeur de la N-ième entrée est copiée sur la sortie S.

Multiplexeur 4 voies

La figure [combi8] montre un multiplexeur 4 voies. On remarquera que le multiplexeur contient un décodeur 2 vers 4.

Exercice Multiplexeur 16 voies Montrez comment réaliser un multiplexeur 16 voies par un montage maître-esclaves.

4.1 Exercices

4.1.1 Test d’égalité

Concevoir un circuit qui prendra en entrée deux nombres binaires A et B de 4 chiffres, et indiquera si ces deux nombres sont égaux.

4.1.2 Comparateur

Concevoir un circuit qui prendra en entrée deux nombres binaires A et B de 4 chiffres, et indiquera si A < B, A = B ou A > B. Essayez d’obtenir un circuit “cascadable” pour comparer des nombres plus grands.

4.1.3 Additionneur à retenue anticipée

Dans l’additionneur classique la retenue se propage de chiffre en chiffre, ce qui induit un délai de calcul proportionnel au nombre N de bits des nombres à traiter. Evaluez ce délai en fonction de N et du temps de traversée des portes ET, NON, OU.

La première retenue sortante r0 vaut a0b0 + a0c0 + b0c0 (c0 est la première retenue entrante). Pour la seconde retenue on a r1 = a1b1 + a1c1 + b1c1. Comme c1 = r = 0, on peut donc exprimer r1 en fonction de a0, a1, b0, b1, c0 (donnez la formule). C’est ce qu’on appelle le pré-calcul de r1. Or cette formule s’exprime avec deux étages de portes (faites le schéma).

En suivant la même technique, donnez une formule pour r2, puis r3. Que dire du temps de traversée d’un tel additionneur N bits ? Quelle est la contrepartie de ce gain de temps ?

4.1.4 Compteur

Réaliser un circuit à 3 entrées e1, e2, e3 et 2 sorties s0, s1. Le nombre binaire s1s0 indiquera le nombre d’entrées qui sont à 1.

4.1.5 Encodeur de priorités

Réaliser un circuit à 3 entrées e1, e2, e3 et 2 sorties s0, s1. Le nombre binaire s1s0 indiquera le plus grand indice des entrées qui sont à 1, ou 00 si toutes les entrées sont à 0.

5 Circuits séquentiels

5.1 Définition

Un circuit séquentiel possède des entrées E et des sorties S, mais aussi un état interne Q qui sert à mémoriser de l’information. On peut résumer un tel circuit par deux fonctions. L’une (fonction de sortie f) indique la valeur des sorties en fonction des entrées et de l’état actuel :

S = f(E,Q)

L’autre (fonction de transition g) indique l’état que le circuit prendra à l’instant suivant:

Q′ = g(E,Q)

5.2 Du bistable à la bascule RS

Une expérience simple consiste à monter (fig. [seq1]) deux portes NON tête-bêche, la sortie de l’une servant d’entrée à l’autre. Soient Q1 et Q2 les deux sorties.

Bistable à deux portes NON

On constate que ce circuit prend l’un des deux eétats suivants:

et qu’il y reste indéfiniment: on dit que le circuit est stable. (C’est un bistable, car il y a deux positions de stabilité).

En revanche si on boucle l’entrée avec la sortie d’une seule porte NON, (fig. [seq2]) c’est un circuit astable qui oscille continuellement (et très rapidement) entre 0 et 1.

Circuit astable

Reprenons notre bistable à 2 portes NON. Supposons qu’il soit dans l’état (0), c’est-à-dire Q1 = 0, Q2 = 1. Pour le faire basculer dans l’autre état, il faudrait forcer l’entrée E2 à 1. Mais pour l’instant l’entrée E2 n’est reliée qu’à Q1. On intercale donc (fig. [seq3]) une porte OU avec une entrée de commande S (Set).

Bistable avec commande S (set)

Dans l’état (0) avec S=0, la situation est stable. L’arrivée d’une impulsion sur S provoque le passage de E2 à 1, puis Q2 prend la valeur 0 et Q1 passe à 0. Le bistable est donc dans la situation (1) qui est stable, et il y reste désormais quel que soit le signal d’entrée sur S. Ceci est résumé par le chronogramme de la figure[seq4].

Chronogramme

Pour permettre le retour à l’état (0) on peut ajouter - par symétrie - une autre entrée de commande R (reset) et une autre porte OU (fig. [seq5]).

Bascule RS: schéma et symbole

Le circuit résultant (que l’on réalise avec des portes NOR) est appelé bascule RS. Son fonctionnement normal se résume comme suit:

La figure [seq6] montre, sous forme de chronogramme, l’effet d’une séquence de “tops” envoyés successivement sur les entrées de commande d’une bascule RS.

Chronogramme d’une bascule RS

Remarque

Si R et S sont simultanément à 1 les deux sorties sont à 1. Si S et R repassent simultanément à 0 le résultat est alors imprévisible (dépend des vitesses de réaction des différentes portes).

5.3 Bascules dérivées

5.3.1 Bascule RS à portes NAND

En mettant des portes NAND au lieu des portes NOR, on obtient une bascule RS à signaux de commande inversés. On désigne alors les entrées de commande par ¬R et ¬S (voir figure [seq7]).

Bascule RS à portes NAND

5.3.2 Bascule RS avec horloge

Les commandes R et S ne sont actives que lorsque l’entrée d’horloge est à 1. Il suffit (fig. [seq8]) de valider les signaux R et S par l’entrée H au moyen de deux portes ET.

Bascule RSH: schéma et symbole

5.3.3 Bascule D

On la réalise à partir de la bascule RSH (figure [seq9]) Lorsque son entrée H est à 1, elle mémorise la valeur de son entrée D. Quand H=0, elle reste insensible aux changements sur D (voir chronogramme de la figure [seq10])

Bascule D
Chronogramme d’une Bascule D

La bascule D est utilisée pour la constitution des mémoires.

5.4 La conception de circuits séquentiels

Considérons par exemple une commande d’éclairage par bouton-poussoir. Il y a une entrée B (l’état du bouton : appuyé ou pas), une sortie L (la lampe allumée ou éteinte), mais il est clair que la sortie ne dépend pas seulement de l’entrée, mais aussi de ce qui s’est passé avant, que l’on représente par un état Q.

Ici on pourra décider que Q mémorise simplement l’état de la lampe. Si Q=0, la lampe est éteinte. Si Q=1, la lampe est allumée

La sortie est fonction de l’entrée et de l’état L = f(B,Q)

Ici on prendra par exemple L = Q.

Une autre fonction indique comment l’état interne évolue au cours du temps. Pour simplifier le raisonnement on découpe le temps en “instants”. L’état Q’ “à l’instant suivant” dépend des entrées ainsi que de l’ancien état: Q′ = g(B,Q) Dans l’exemple on dira que si B=0 l’état reste stable et si B=1 l’état s’inverse, d’où la table:

bouton B état Q état suivant Q′ = g(B,Q)
0 0 0
0 1 1
1 0 1
1 1 0

A partir de là on pourrait en conclure qu’il suffit (fig. [seq11]) d’une bascule D pour représenter l’état, qui serait activée par B et dont la sortie serait rebouclée sur l’entrée à travers un NOT.

Un montage naïf

Mais attention ça ne marche pas ! En effet l’impulsion sur le bouton dure “plusieurs instants”, ce qui fait clignoter (trop vite pour que l’oeil le perçoive) la sortie pendant l’appui du bouton : c’est un état instable. La vitesse élevée d’oscillation fait alors qu’à la fin de l’impulsion le résultat est imprévisible.

Pour s’en sortir on emploiera le montage de la figure [seq12], (appelé maître-esclave).

Bascule RSH maître-esclave

la bascule 1 (maître) est validée par H1 = B et la 2 (esclave) par H2 = ¬B, mais on utilise (et c’est là toute l’astuce) une porte NON dont le seuil de déclenchement est plus bas que la normale, ce qui fait qu’une impulsion sur B correspond à deux impulsions décalées sur H1 et H2, comme le montre le chronogramme de la figure [seq13].

Seuils de déclenchement

Donc à l’arrivée d’une impulsion (front montant) la bascule esclave se verrouille en mémorisant l’état du maître, puis le maître change d’état. À la fin de l’impulsion (front descendant de l’impulsion sur B) le maître se verrouille, et l’esclave change d’état.

Exercice : vérifier le fonctionnement de ce circuit à l’aide d’un chronogramme (dessiner l’arrivée de 2 impulsions sur B).

Problème Bascule JK En utilisant le même principe (maître-esclave) concevoir une bascule JK. Comme son nom l’indique une bascule JK possède 3 entrées J,K et H et deux sorties Q et ¬Q. La bascule ne peut changer d’état que pendant une impulsion sur H. Si J=K=0 l’état reste inchangé. Si J=1 K=0 l’état devient 1. Si J=0 et K=1 l’état devient 0. Si J=K=1 l’état s’inverse.

5.5 Circuits Synchrones

On appelle circuit synchrone un circuit séquentiel dont l’état interne ne change qu’à l’arrivée d’une impulsion sur une entrée spéciale appelée “Horloge”. On suppose en général que les autres signaux ne varient pas pendant l’arrivée d’un top d’horloge.

L’intérêt de cette horloge est de donner une définition précise de “l’instant suivant”. C’est l’horloge qui rythme les transitions d’état.

5.6 Application à la synthèse de compteurs

On appelle compteur un dispositif séquentiel qui passe périodiquement par une suite déterminée d’états.

Par exemple le compteur binaire sur deux bits suivra la séquence 00, 01, 10, 11, 00, 01, 10, 11, 00, etc. à chaque top d’horloge.

Nous allons voir comment réaliser, de manière systématique (et donc automatisable !), n’importe quel compteur, d’abord avec des bascules D maître-esclave, puis avec des bascules JK qui permettent d’obtenir des circuits plus simples.

5.6.1 Réalisation à l’aide de bascules D

5.6.1.1 Exemple compteur binaire 2 bits

Les deux bits de l’état sont stockés dans deux bascules D.

Q1Q0 D1D0
0 0 0 1
0 1 1 0
1 0 1 1
1 1 0 0

D’où on tire facilement :

5.6.2 Réalisation à l’aide de bascules JK

Avec les bascules D, nous exprimions le nouvel état en fonction de l’ancient. Avec des bascules JK, le principe est légèrement différent : nous déterminons les commandes à envoyer aux bascules (sur les entrées J et K) pour modifier l’état.

Avant de reprendre l’exemple du compteur 2 bits, quelques remarques sur les bascules JK. Regardons la table de transition qui montre l’état Q obtenu quand, dans l’état Q, la bascule reçoit des commandes J et K :

Q JK Q
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1

On voit qu’il y a deux façons de passer d’un état à un autre. Par exemple pour passer de 0 à 1, on a J=1 et K=0 (forcer à 1), et aussi J=1 et K=1 (inverser).

On en tire des conditions nécessaires et suffisantes pour passer d’un état à un autre

de à si et seulement si
0 0 J = 0 (ne pas monter)
0 1 J = 1 (monter)
1 0 K = 1 (descendre)
1 1 K = 0 (ne pas descendre)

On s’en sert pour construire le compteur 2 bits à partir de 2 bascules JK.

Q1Q0 Q1Q0 commandes
0 0 0 1 J1 = 0, J0 = 1
0 1 1 0 J1 = 1, K0 = 1
1 0 1 1 K1 = 0, J0 = 1
1 1 1 0 K1 = 0, K0 = 1

Il ne reste plus qu’à trouver des expressions convenables pour J0, K0, J1 et K1 en fonction de Q1 et Q0.

En reportant dans un tableaux de Karnaugh pour J1

J1(Q1,Q0) Q0 = 0 Q0 = 1
Q1 = 0 0 1
Q1 = 1 . .

on obtient J1 = Q1, par regroupement sur la colonne de droite.

Pour J0 :

J0(Q1,Q0) Q0 = 0 Q0 = 1
Q1 = 0 1 .
Q1 = 1 1 .

on voit qu’il suffit donc de prendre J0 = 1.

De même, l’abondance de cas indéterminés conduit à des expressions très simples pour les commandes K :

5.7 Exercices

Compteur modulo 3 La séquence à effectuer est 00, 01, 10, 00, 01, 10, etc.

compteur binaire sur 3 bits : séquence 000, 001, 010, 011, ...111, 000, ...

Compteur modulo 10 : 0000,0001,….,1000,1001,0000…

Compteur/décompteur 3 bits Une entrée supplémentaire C > indique s’il faut compter (C=1) ou décompter (C=0).

**Chenillard sur 4 bits : 0000 1000 0100 0010 0001 0000 ….

Compteurs rampants 0000, 1000, 1100, 1110, 1111, 0111, 0011, 0001, 0000, ….

Compteurs de Gray


  1. Une logique négative aura des signaux inversés: 0v représente la valeur 1, +5v la valeur 0.↩︎

  2. Pour simplifier l’exposé nous n’évoquerons que les transistors NPN.↩︎

  3. En particulier “effet d’antenne” lorsqu’on approche la main d’un circuit dont une des entrées est restée “en l’air”↩︎

  4. les circuits combinatoires (sans boucles) et séquentiels (avec boucles) seront étudiés dans les chapitres suivants↩︎

  5. L’oeuvre la plus célèbre de George Boole (1815-1864) est intitulée Une investigation dans les lois de la pensée, sur lesquelles sont fondées les théories mathématiques de la logique et des probabilités (1854), plus connue sous le titre abrégé Les lois de la pensée↩︎

  6. Les travaux d’Augustus de Morgan (1806-1871) influencèrent fortement George Boole, et ses vives recommandations permirent à ce dernier, bien qu’autodidacte, d’obtenir la Chaire de Mathématiques du Queen’s College de Cork.↩︎

  7. Ce produit peut être infini, mais c’est une autre histoire↩︎

  8. Nous ne montrerons ici que la méthode pour 3 et 4 variables, le passage à 5 ou 6 variables nécessite une bonne vision dans l’espace↩︎