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.

Information

C'est quoi un soustracteur binaire

Un soustracteur binaire est une solution combinatoire capable de réaliser la soustraction arithmétique numériquement de deux valeurs binaires. Lorsqu'un soustracteur ne prend pas en compte la valeur de l'emprunt de l'étage de la soustraction précédent, ce composant numérique est appelé ainsi un demi-soustracteur.

 

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 :

Schéma de base d'un demi-soustracteur

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

Modélisation d'un demi-soustracteur à base de deux portes logiques sous QSpice

 

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 :

Recherche de porte logique ET dans la bibliothèque de composants sous QSpice

 

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 :
Configuration de la source PULSE V1 (variable a) Source d'alimentation V1  
  • Et pour le deuxième générateur V2, qui stipule la variable \( b \), injecté à la deuxième entrée de notre semi-soustracteur :
Configuration de la source PULSE V2 (variable b) Source d'alimentation V2  

 

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 :

Modélisation de la source d'alimentation VCC

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 :

Directive du simulateur SPICE pour une durée de 5 secondes

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 :

Sous-menu pour ajouter une directive SPICE

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 :

Projet QSpice - Le demi-soustracteur

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 :

Sous-menu pour ajouter une annotation sous QSpice

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 :

Résultats de la simulation d'un demi-additionneur sous QSPICE

 

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 :

Explication du résultat obtenu sous QSPICE (demi-additionneur)

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 :