18 - Circuits logiques

Cours associé : 08 - Circuits logiques .

QCM – vérification des prérequis

Pour chaque question, une seule réponse est correcte.

1. Quelle porte logique renvoie 1 uniquement lorsque toutes ses entrées valent 1 ?

  • A. OR
  • B. AND
  • C. NOT
  • D. XOR

Correction publiée après la séance.

2. Quelle est la table de vérité de la porte NOT ?

  • A. 0 → 0 et 1 → 1
  • B. 0 → 1 et 1 → 0
  • C. 0 → 0 et 1 → 0
  • D. 0 → 1 et 1 → 1

Correction publiée après la séance.

3. Que vaut l’expression booléenne \(\overline{A \cdot B}\) lorsque \(A = 1\) et \(B = 0\) ?

  • A. 0
  • B. 1
  • C. Indéterminé
  • D. Cela dépend de la porte utilisée

Correction publiée après la séance.

4. Combien de lignes comporte la table de vérité d’un circuit à trois entrées ?

  • A. 3
  • B. 6
  • C. 8
  • D. 9

Correction publiée après la séance.


Objectifs

Construire des circuits logiques dans un simulateur, passer d’un circuit à sa table de vérité et à son expression booléenne, puis fabriquer pas à pas l’additionneur qui permet à un processeur d’additionner deux nombres binaires.

Prérequis. Le cours 08 - Circuits logiques (portes NON, ET, OU, OU exclusif, demi-additionneur) et le cours 03 - Bases (addition binaire, dépassement de capacité).

Prise en main de Logisim-evolution

Logisim-evolution est un simulateur de circuits logiques libre et gratuit. Il se télécharge sur la page des versions , en choisissant le fichier qui correspond à son système (Windows, macOS ou Linux).

L’essentiel en cinq gestes :

  • Placer une porte. Les portes se trouvent dans le dossier Portes logiques (Gates) de la colonne de gauche : Porte NOT, Porte AND, Porte OR… : on clique sur la porte, puis dans la zone de dessin.
  • Placer les entrées et les sorties. Dans la barre d’outils, le carré est une broche d’entrée (input pin) et le rond une broche de sortie (output pin). On peut donner un nom à chaque broche dans le panneau des propriétés, par exemple a, b ou s.
  • Relier. On tire un fil en faisant glisser la souris depuis un point de connexion jusqu’à un autre. Un fil vert clair transporte un 1, un fil vert foncé un 0 ; un fil bleu porte une valeur inconnue, le plus souvent parce qu’il n’est relié à aucune entrée ; un fil rouge signale une erreur ; un fil noir transporte plusieurs bits à la fois.
  • Tester. Avec l’outil pousser, représenté par une main (Poke Tool), un clic sur une broche d’entrée fait passer sa valeur de 0 à 1 et inversement : la sortie se met à jour aussitôt.
  • Enregistrer. Un projet est un fichier d’extension .circ. Il peut contenir plusieurs circuits : le menu Projet puis Ajouter un circuit… (Project, Add Circuit) en crée un nouveau, qui apparaît dans la colonne de gauche. Tout le TP se fait dans un seul projet, à enregistrer régulièrement sous le nom tp-circuits.circ.

Cette vidéo montre ces manipulations sur l’ancienne version du logiciel, dont l’interface est très proche :

Partie 1 — Lire un circuit

Circuit à deux entrées a et b : a et b passent chacune par une porte NON ; une première porte ET reçoit non a et non b, une seconde porte ET reçoit a et b ; une porte OU réunit les deux sorties ET et donne s.

Ce circuit a deux entrées, a et b, et une sortie s. Il utilise deux portes NON, deux portes ET et une porte OU.

Question 1. Construire ce circuit dans un circuit nommé circuit1. Établir sa table de vérité, puis la contrôler en essayant les quatre combinaisons d’entrées avec l’outil main.

Indice

Avec deux entrées, la table a quatre lignes. Pour chaque ligne, calculer la sortie de chaque porte de gauche à droite : d’abord les portes NON, puis les portes ET, enfin la porte OU.

Correction publiée après la séance.

Question 2. Écrire l’expression booléenne de s en fonction de a et b, en suivant les fils depuis les entrées.

Correction publiée après la séance.

Question 3. D’après la table, dans quels cas la sortie vaut-elle 1 ? À quoi ce circuit peut-il servir ? Comparer sa table avec celle du OU exclusif vue en cours.

Indice

Regarder les deux lignes où \(s = 1\) : que peut-on dire de \(a\) et de \(b\) sur ces lignes ?

Correction publiée après la séance.

Partie 2 — Le demi-additionneur

Additionner deux bits donne un résultat de 0 à 2, qui s’écrit en binaire sur deux chiffres : un bit de somme s et un bit de retenue r. Par exemple, \(1 + 1 = 10_2\) : la somme vaut 0 et la retenue vaut 1. Le circuit qui fait ce calcul s’appelle un demi-additionneur.

Question 4. Écrire la table de vérité du demi-additionneur, avec les entrées a, b et les sorties s, r.

Indice

Poser les quatre additions \(0 + 0\), \(0 + 1\), \(1 + 0\) et \(1 + 1\), et écrire chaque résultat sur deux bits : la retenue à gauche, la somme à droite.

Correction publiée après la séance.

Question 5. Logisim-evolution sait fabriquer un circuit à partir de sa table de vérité. Ouvrir le menu Fenêtre et choisir Analyse combinatoire (Window, Combinational Analysis). Dans l’onglet Entrées & Sorties, déclarer les entrées a et b et les sorties s et r ; dans l’onglet Table, remplir la table (un clic sur une case change sa valeur) ; cliquer enfin sur Construire le circuit (Build Circuit) et donner au nouveau circuit le nom demi_additionneur. Tester le circuit obtenu avec l’outil pousser.

Cette vidéo détaille la démarche :

Correction publiée après la séance.

Question 6. Écrire les expressions de s et de r avec les opérations NON, ET et OU. Quel lien y a-t-il entre s et le circuit de la partie 1 ?

Indice

Pour chaque sortie, repérer les lignes où elle vaut 1. Chacune de ces lignes donne un produit des entrées ou de leurs négations ; l’expression est la somme de ces produits.

Correction publiée après la séance.

Partie 3 — L’additionneur complet

Pour additionner des nombres de plusieurs bits, on additionne colonne par colonne, comme à la main. Chaque colonne, sauf la première, doit aussi ajouter la retenue venue de la colonne de droite : il faut donc additionner trois bits, a, b et la retenue entrante cin. Le circuit qui fait ce calcul s’appelle un additionneur complet. Il a deux sorties : la somme s et la retenue sortante cout.

Question 7. Écrire la table de vérité de l’additionneur complet.

Indice

Avec trois entrées, la table a huit lignes. Sur chaque ligne, calculer \(a + b + c_{\text{in}}\), qui vaut de 0 à 3, puis l’écrire en binaire sur deux bits : cout à gauche, s à droite.

Correction publiée après la séance.

Question 8. Faire construire par l’analyse combinatoire, comme à la question 5, un circuit nommé additionneur_complet, puis le tester sur les huit lignes.

Correction publiée après la séance.

Question 9. Écrire l’expression de cout en sommes de produits. Montrer qu’elle se simplifie en \(c_{\text{out}} = a \cdot b + a \cdot c_{\text{in}} + b \cdot c_{\text{in}}\), puis dire en une phrase quand la retenue sortante vaut 1.

Indice

Quatre lignes donnent \(c_{\text{out}} = 1\). Combien de 1 y a-t-il parmi les entrées sur chacune de ces lignes ?

Correction publiée après la séance.

Question 10. On peut aussi construire un additionneur complet avec deux demi-additionneurs et une porte OU, sans repasser par la table. Dans un nouveau circuit, placer deux fois le circuit demi_additionneur : il suffit de faire glisser son nom depuis la colonne de gauche. Le premier additionne a et b, le second ajoute cin à la somme obtenue. Comment obtenir cout ? Vérifier que le circuit obtenu a la même table que celui de la question 8.

Indice

Une retenue peut naître dans le premier demi-additionneur ou dans le second. Peuvent-elles valoir 1 toutes les deux en même temps ?

Correction publiée après la séance.

Partie 4 — Additionner des nombres de plusieurs bits

Question 11. Dans un nouveau circuit, chaîner deux additionneurs complets pour additionner deux nombres de deux bits, \(a_1a_0\) et \(b_1b_0\). Le résultat s’écrit sur trois bits. Tester le calcul \(11_2 + 01_2\).

Indice

Le premier additionneur reçoit les bits de droite, \(a_0\) et \(b_0\), avec une retenue entrante à 0. Sa retenue sortante devient la retenue entrante du second, qui reçoit \(a_1\) et \(b_1\).

Correction publiée après la séance.

Logisim-evolution fournit un additionneur tout fait : le composant Additionneur du dossier Arithmétique (Adder, Arithmetic). Sa propriété Largeur de donnée (Data Bits) fixe le nombre de bits des nombres additionnés. Les deux nombres entrent à gauche, la retenue entrante (c in) en haut, la somme sort à droite et la retenue sortante (c out) en bas. Une retenue entrante reliée à rien compte pour 0.

Question 12. Dans un nouveau circuit, placer un Additionneur dont la Largeur de donnée vaut 4, deux broches d’entrée et une broche de sortie, elles aussi réglées sur une largeur de 4, et une broche de sortie d’un bit pour la retenue sortante. Tester \(0101_2 + 0011_2\), puis \(1011_2 + 0110_2\). Que se passe-t-il dans le second cas ?

Indice

Avec l’outil main, un clic sur un bit d’une broche de 4 bits change ce bit seulement. Convertir chaque calcul en base 10 avant de lire le résultat.

Correction publiée après la séance.

Question 13. Combien d’additionneurs complets d’un bit faut-il chaîner pour additionner deux octets ? Pourquoi un processeur 64 bits dispose-t-il d’un additionneur de 64 bits ?

Correction publiée après la séance.

Enregistrer le projet.

À retenir

  • Un circuit se décrit de trois façons équivalentes : son schéma, sa table de vérité et son expression booléenne. Une table se traduit toujours en somme de produits, un produit par ligne où la sortie vaut 1.
  • Le demi-additionneur additionne deux bits : \(s = a \oplus b\) et \(r = a \cdot b\).
  • L’additionneur complet ajoute en plus une retenue entrante ; on l’obtient avec deux demi-additionneurs et une porte OU.
  • En chaînant des additionneurs complets, la retenue passant de l’un au suivant, on additionne des nombres d’autant de bits que l’on veut. Une retenue qui sort de la dernière colonne signale un dépassement de capacité.