Le demi-soustracteur (Half-subtractor)
Cette activité de travaux dirigés, que nous vous proposons, vous permet la modélisation sous QSPICE, une solution de simulation électronique, d'un demi-soustracteur binaire à l'aide de trois portes logiques. Nous allons ainsi modéliser le montage ensemble, le configurer et le simuler pour déterminer comment cette solution arithmétique est capable de calculer la différence de deux digits binaires.
Modélisation d'un demi-soustracteur (Half-subtractor) à l'aide de trois portes logiques
Pour réaliser ce soustracteur binaire, nous allons modéliser sous la solution QSpice le montage électrique ci-dessous :

Pour cela, nous allons créer le montage électrique suivant sous notre outil de simulation :

Pour retrouver les trois portes logiques ; la porte logique NON, la OU exclusif et la ET logique, nous allons rechercher dans la bibliothèque de composants composant par composant et les placer dans notre projet. Pour cela, vous pouvez utiliser la fonction de recherche en cliquant sur la petite icône de la jumelle située dans la barre latérale de l'application des composants comme nous l'explique l'image ci-dessous :

Pour modéliser, maintenant, les différentes combinaisons possibles des deux variables \( a \) et \( b\) sous QSPice, nous allons placer deux générateurs de tension électrique que nous allons configurer en PULSE. L'amplitude de chaque générateur sera configurée à 5V et une configuration de fréquence différente telle que :
- la fréquence de la première source, que nous nommons \( a \) en référence de la variable \( a \), sera de 1 Hz,
- et la fréquence de la deuxième source, que nous nommons \( b \) en référence de la variable \( b \), sera de 2 Hz,
Et pour éviter toute forme de micro-impulsion dans notre résultat, nous allons différer la source \( a \) par rapport la source \( b \) de 0.25s afin de pouvoir réaliser toutes les combinaisons binaires possibles; soit les combinaisons suivantes pour le couple \( (a,b) \) : 00, 01, 10 et 11.
Pour ce fait, nos deux générateurs \( a \) et \( b \) seront donc configurés comme suit :
- Pour le premier générateur de tension V1, qui stipule la variable \( a \), injecté à l'entrée de notre demi-soustracteur :
![]() |
![]() |
- Et pour le deuxième générateur V2, qui stipule la variable \( b \), injecté à la deuxième entrée de notre semi-soustracteur :
![]() |
![]() |
Pour alimenter les différentes portes logiques, sous QSpice, nous aurons besoin de rajouter une VCC d'une valeur de 5V (si nous n'utilisons aucun fichier de configuration bibliothèque fourni par un constructeur). Pour cela, nous allons placer une troisième source d'alimentation que nous annotons son fil côté pin (+) à la mention \( VCC \). Cette annotation sera utilisée à l'identique dans les fils qui sont connectés aux pins d'alimentation des différentes portes logiques. La capture ci-dessous nous résume cela :

Une fois toutes tous les générateurs sont mis en place, nous pouvons maintenant rajouter une résistance à chaque sortie du demi-soustracteur d'une valeur de 330Ω; soit donc \( R_{1} = 330Ω \) et \( R_{2} = 330Ω \) connectées respectivement à la sortie \( D \) et \( E \).
Ainsi, avant de pouvoir lancer la simulation sous QSpice. Il est nécessaire d'inclure dans notre projet la directive ".tran" afin d'indiquer au simulateur la durée temporelle et le pas de calcul. Pour une performance optimale, il est recommandé de laisser la valeur du pas à 0. Le module SPICE choisira donc le pas qui lui convient. Par contre, nous allons indiquer que notre simulation s'arrête à 5s (si vous souhaitez simuler davantage, vous pouvez indiquer au simulateur une durée plus longue). La figure ci-dessous résume cela :

Pour ajouter cette directive, vous pouvez utiliser directement le raccouci, la touche T du clavier, pour placer une directive ou bien en faisant un clic droit sur votre espace de travail, puis nous choisissons le sous-menu "Place Text(SPICE directive)" comme vous le montre la capture ci-dessous :

Simulation et analyse du résultat obtenu : le demi-soustracteur
Une fois le simulateur termine ces calculs, vous pouvez ajouter dans le même fenêtre les deux courbes des deux variables d'entrées Va et Va et les deux courbes des deux variables de sorties VD et VE.
A l'aide du tableau ci-dessous, relevez les différentes valeurs de \( S \enspace et \enspace R \) en fonction des différents variables de Va et de Vb:
| Va | Vb | \( D \) | \( E \) |
| 0 | 0 | ||
| 0 | 1 | ||
| 1 | 0 | ||
| 1 | 1 |
Que pouvons nous conclure ?
Réalisation et méthodologie : Le demi-soustracteur binaire
Conformément aux consignes de l'énoncé de cette activité de travaux dirigés, nous avons modélisé le schéma fourni sous la solution QSpice, ce qui se représente comme suit :

Comme vous le remarquez, nous avons mis en place une source d'alimentation V3 d'une valeur de 5V DC pour alimenter nos trois portes logiques en VCC.
Attention : Si vous n'alimentez pas les portes logiques avec une source d'alimentation, ces composants ne fonctionneront pas et le résultat obtenu à la sortie de notre soustracteur sera erroné.
Et pour pouvoir lancer les calculs, nous devons aussi configurer les différents éléments de notre montage tels que :
- les deux résistances \( R_{1} \) et et \( R_{2} \) à 330Ω chaqu'une.
- les deux sources V1 et V2 tout en mettant en place une annotation; soit donc le label \( a \) ou \( b\) sur chaque fil électrique entrant à notre soustracteur.
- la directive pour le module SPICE telle que demandée : .tran 0 5
Petit rappel : pour ajouter une annotation sur un fil électrique, appelé Wire sous QSpice, nous pouvons utiliser le raccourci clavier "N" directement ou bien en faisant appel à la fonction via le sous-menu "Place a Net Name" une fois que nous cliquons droit sur notre espace de travail. La capture ci-dessous nous présente ce sous-menu :

Une fois notre projet est modélisé et correctement configuré, nous pouvons lancer la simulation à partir du bouton "Run" (disponible dans le menu principal ou dans le sous-menu via le clic droit sur notre espace de travail) sinon directement en utilisant le raccourci clavier ; la touche "F5". Dès que les calculs terminent sans aucun message d'erreur qui nous apparaît dans la fenêtre Output, nous pouvons ajouter maintenant une par une les différentes courbes que nous souhaitons lire à notre montage : V(a), V(b), V(D) et V(E).
La fenêtre ci-dessous nous résume cela :

Depuis ces 4 courbes, il est facile de remplir les différentes valeurs binaires constatées depuis les 4 courbes, soit les 2 à l'entrée de notre composant et 2 à la sortie de notre composant. Nous notons donc les différentes valeurs \( D \) et \( E \); ce qui représente respectivement la différence et la valeur de l'emprunt résultantes de cette fonction arithmétique de soustraction binaire, en fonction des deux variables \( a \) et \( b \) reçues à son entrée :
| a | b | \( D \) | \( E \) |
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
Pour vous faciliter la lecture des différentes valeurs binaire soit à l'entrée soit à la sortie de notre montage, nous allons appliquer la règle ci-dessous :
- Si V= 0V ⇒ la valeur binaire correspond à 0,
- Et si V ≅ 5V ⇒ la valeur binaire correspond à 1.
Pour vous expliquer en détail comment nous avons lu ces différentes courbes pour remplir le tableau demandé, nous vous présentons la figure ci-dessous qui vous détaille les différentes valeurs binaires de \( a \) et \( b \) reçues à l'entrée de notre soustracteur ainsi que les valeurs respectives de la différence \( D \) et de la valeur de l'emprunt \( E \) à la sortie de notre demi-soustracteur :

En conclusions, le résultat obtenu confirme bien que nous réaliser un demi-soustracteutr binaire sous la solution de simulation QSPICE avec trois portes logiques ; une porte logique NON, une porte logique ET et une porte OU Exclusive.
Nous vous informons que ce composant, comme vous l'avez sûrement constaté, ne dispose pas d'une entrée d'emprunt \( E_{-1} \) qui vient de l'étage de soustraction précédent. Ce qui ne lui permet pas la prise en compte de la valeur de l'emprunt envoyée de l'étage précédent (en cas d'un montage en cascade de plusieurs soustracteurs binaire). D'où son nom : le demi-soustracteur binaire.
Et si on réalise un deuxième opérateur arithmétique : le demi-additionneur ?
Dans le même principe du dem-soustracteur, electro-robot vous propose de réaliser, dans une deuxième activité de travaux dirigés, un demi-additionneur binaire qu'avec des portes logiques :
Une petite révision complète de notre cours, que pensez-vous? Le cours que nous proposons sur les opérateurs arithmétiques est complet et complémentaire pour vous faire monter en compétence et accomplir cette tâche :



