Chapitre 8 — Additionneurs et soustracteurs
Niveau conseillé : Bac+1 / Bac+2 — Cycle préparatoire, BTS, BUT, Licence
Finalité du chapitre Comprendre, concevoir et valider les circuits arithmétiques élémentaires permettant d’additionner ou de soustraire des nombres binaires, depuis le traitement d’un seul bit jusqu’aux opérations parallèles sur plusieurs bits. |
Présentation du chapitre
L’addition et la soustraction constituent les opérations arithmétiques fondamentales de tout système numérique. Les processeurs, microcontrôleurs, calculateurs, automates et systèmes embarqués les exécutent au moyen de réseaux de portes logiques appelés circuits arithmétiques combinatoires.
Ce chapitre commence par le demi-additionneur, qui additionne deux bits sans retenue entrante. Il introduit ensuite l’additionneur complet, capable de tenir compte d’une retenue provenant d’un rang inférieur. L’association de plusieurs additionneurs complets permet de traiter des mots binaires de plusieurs bits. La même logique est ensuite appliquée à la soustraction, directement avec des soustracteurs ou indirectement par le complément à 2.
L’objectif n’est pas seulement de mémoriser les tables de vérité. Il s’agit de comprendre comment les équations sont obtenues, comment les retenues ou les emprunts se propagent et comment les délais physiques influencent la rapidité du calcul.
Objectifs pédagogiques
À la fin du chapitre, l’étudiant sera capable de… | Indicateur de maîtrise |
|---|---|
expliquer la différence entre somme, retenue et emprunt | les rôles des sorties sont correctement interprétés |
concevoir un demi-additionneur | la table, les équations et le schéma sont cohérents |
analyser un additionneur complet | les huit combinaisons sont traitées sans erreur |
associer plusieurs additionneurs complets | les retenues sont chaînées dans le bon ordre |
évaluer le retard d’un additionneur parallèle | le chemin critique est correctement identifié |
concevoir un demi-soustracteur et un soustracteur complet | les différences et emprunts sont correctement calculés |
réaliser A−B par complément à 2 | l’inversion de B et l’ajout de 1 sont correctement appliqués |
détecter retenue, emprunt et dépassement | les indicateurs sont distingués selon le type de nombres |
Prérequis
- connaître les systèmes binaire et hexadécimal ainsi que les opérations élémentaires en base 2 ;
- savoir utiliser les portes NON, ET, OU, XOR, NAND et NOR ;
- savoir établir une table de vérité et une expression logique ;
- maîtriser les lois de Boole et les méthodes élémentaires de simplification ;
- connaître le complément à 1 et le complément à 2.
Organisation du chapitre
Partie | Contenu principal | Production attendue |
|---|---|---|
8.1 | demi-additionneur | addition de deux bits et génération de la retenue |
8.2 | additionneur complet | prise en compte de la retenue entrante |
8.3 | additionneur parallèle | addition de mots binaires et analyse du délai |
8.4 | soustracteurs | différence, emprunt et complément à 2 |
TD et activité | conception, simulation et comparaison | validation complète de circuits arithmétiques |

Figure 1 — Progression des blocs arithmétiques étudiés dans le chapitre.
8.1. Demi-additionneur
8.1.1. Rôle et principe
Le demi-additionneur, ou half adder, additionne deux bits A et B. Il produit deux sorties distinctes : le bit de somme S et le bit de retenue C. Il est qualifié de « demi » parce qu’il ne possède pas d’entrée de retenue provenant d’un rang précédent.
Idée essentielle L’addition de deux bits peut produire une valeur comprise entre 0 et 2. Deux bits de sortie sont donc nécessaires : S représente le poids 2⁰ et C représente le poids 2¹. |
8.1.2. Entrées
Les deux entrées A et B représentent les bits de même poids de deux nombres binaires. Chaque entrée peut prendre la valeur 0 ou 1. Le circuit doit donc traiter quatre combinaisons possibles.
A | B | Interprétation |
|---|---|---|
0 | 0 | aucun bit actif |
0 | 1 | seul B est actif |
1 | 0 | seul A est actif |
1 | 1 | les deux bits sont actifs |
8.1.3. Sortie somme
La sortie S contient le bit de poids faible du résultat. Elle vaut 1 lorsque exactement une des deux entrées vaut 1. Ce comportement correspond à la fonction OU exclusif XOR.
S = A ⊕ B La somme est égale à 1 lorsque A et B sont différents. |
8.1.4. Sortie retenue
La sortie C, appelée retenue ou carry, vaut 1 lorsque l’addition de A et B produit la valeur décimale 2, c’est-à-dire uniquement lorsque A=1 et B=1. Elle correspond donc à une fonction ET.
C = A · B La retenue est transmise au rang immédiatement supérieur. |
8.1.5. Table de vérité
A | B | Addition | C | S | Résultat CS |
|---|---|---|---|---|---|
0 | 0 | 0+0=0 | 0 | 0 | 00₂ |
0 | 1 | 0+1=1 | 0 | 1 | 01₂ |
1 | 0 | 1+0=1 | 0 | 1 | 01₂ |
1 | 1 | 1+1=2 | 1 | 0 | 10₂ |
La lecture du résultat doit respecter l’ordre CS : C est le bit de poids 2¹ et S celui de poids 2⁰. Pour A=B=1, le résultat est donc 10₂, soit 2₁₀.
8.1.6. Équations et simplification
À partir de la table de vérité, la somme possède les mintermes correspondant aux lignes 01 et 10 :
S = ¬A·B + A·¬B = A ⊕ B |
La retenue possède un seul minterme, celui de la ligne 11 :
C = A·B |
8.1.7. Schéma logique et chronogramme

Figure 2 — Demi-additionneur réalisé avec une porte XOR et une porte ET.
Le chronogramme confirme que S change à chaque fois que les entrées deviennent différentes, alors que C n’est active que pendant les intervalles où A et B valent simultanément 1. Dans un circuit réel, ces changements apparaissent après le temps de propagation des portes.
8.1.8. Exemple d’application
Considérons le bit de poids faible de l’addition 1011₂ + 0111₂. Au rang 0, A₀=1 et B₀=1. Le demi-additionneur fournit S₀=0 et C₁=1. Cette retenue doit être prise en compte au rang 1 ; un demi-additionneur ne suffit donc plus pour les rangs suivants.
Limite du demi-additionneur Il convient uniquement au premier rang lorsque la retenue entrante est garantie nulle. Pour un rang quelconque, il faut utiliser un additionneur complet. |
8.2. Additionneur complet
8.2.1. Nécessité de la retenue d’entrée
Dans une addition sur plusieurs bits, chaque rang reçoit les deux bits Aᵢ et Bᵢ ainsi qu’une retenue Cᵢ provenant du rang inférieur. L’additionneur complet, ou full adder, traite ces trois entrées et produit la somme Sᵢ ainsi que la retenue Cᵢ₊₁ destinée au rang supérieur.
Aᵢ + Bᵢ + Cᵢ → Sᵢ et Cᵢ₊₁ |
8.2.2. Entrées et sorties
Symbole | Nom | Rôle |
|---|---|---|
A | premier bit | bit du premier opérande au rang considéré |
B | deuxième bit | bit du deuxième opérande au même rang |
Cᵢₙ | retenue entrante | retenue reçue du rang inférieur |
S | somme | bit de résultat au rang courant |
Cₒᵤₜ | retenue sortante | retenue transmise au rang supérieur |
8.2.3. Table de vérité
A | B | Cᵢₙ | Somme décimale | Cₒᵤₜ | S |
|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 | 1 |
0 | 1 | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 2 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 2 | 1 | 0 |
1 | 1 | 0 | 2 | 1 | 0 |
1 | 1 | 1 | 3 | 1 | 1 |
La sortie S vaut 1 lorsque le nombre de 1 en entrée est impair. La retenue Cₒᵤₜ vaut 1 lorsqu’au moins deux entrées valent 1.
8.2.4. Équation de la somme
Les quatre lignes donnant S=1 correspondent à la fonction de parité impaire sur trois variables. L’écriture compacte est :
S = A ⊕ B ⊕ Cᵢₙ |
La propriété associative du XOR permet de calculer d’abord S₁=A⊕B puis S=S₁⊕Cᵢₙ.
8.2.5. Équation de la retenue
La retenue vaut 1 si A et B valent 1, ou si la retenue entrante vaut 1 en même temps que la somme partielle A⊕B. Deux écritures équivalentes sont couramment utilisées :
Cₒᵤₜ = A·B + Cᵢₙ·(A ⊕ B) |
Cₒᵤₜ = A·B + A·Cᵢₙ + B·Cᵢₙ Cette seconde forme exprime une fonction de majorité : au moins deux des trois entrées valent 1. |
8.2.6. Réalisation avec deux demi-additionneurs

Figure 3 — Décomposition d’un additionneur complet en deux demi-additionneurs et une porte OU.
1. Le premier demi-additionneur additionne A et B et produit S₁ et C₁.
2. Le second demi-additionneur additionne S₁ et Cᵢₙ et produit S et C₂.
3. La porte OU combine C₁ et C₂ pour produire Cₒᵤₜ.
8.2.7. Exemple de calcul
Supposons A=1, B=0 et Cᵢₙ=1. La somme arithmétique vaut 1+0+1=2=10₂. L’additionneur doit donc fournir S=0 et Cₒᵤₜ=1.
Étape | Calcul | Valeur |
|---|---|---|
somme partielle | S₁=A⊕B=1⊕0 | 1 |
retenue partielle | C₁=A·B=1·0 | 0 |
somme finale | S=S₁⊕Cᵢₙ=1⊕1 | 0 |
seconde retenue | C₂=S₁·Cᵢₙ=1·1 | 1 |
retenue finale | Cₒᵤₜ=C₁+C₂=0+1 | 1 |
8.3. Additionneur parallèle
8.3.1. Addition sur plusieurs bits
Un additionneur parallèle sur n bits associe n additionneurs complets, un par rang. Tous les couples de bits Aᵢ et Bᵢ sont présentés simultanément aux étages. Les retenues, en revanche, sont transmises d’un étage au suivant.
Pour le rang de poids faible, la retenue initiale C₀ est généralement fixée à 0 lors d’une addition simple. L’étage i produit Sᵢ et Cᵢ₊₁. Le dernier étage fournit Cₙ, qui peut représenter un bit supplémentaire du résultat non signé.

Figure 4 — Architecture d’un additionneur parallèle 4 bits à propagation de retenue.
8.3.2. Exemple complet sur 4 bits
Calculons 1011₂ + 0111₂, soit 11₁₀ + 7₁₀. La retenue initiale vaut C₀=0.
Rang i | Aᵢ | Bᵢ | Cᵢ | Total | Sᵢ | Cᵢ₊₁ |
|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 0 | 2 | 0 | 1 |
| 1 | 1 | 1 | 1 | 3 | 1 | 1 |
| 2 | 0 | 1 | 1 | 2 | 0 | 1 |
| 3 | 1 | 0 | 1 | 2 | 0 | 1 |
1011₂ + 0111₂ = 1 0010₂ = 18₁₀ Le bit C₄ devient le cinquième bit du résultat non signé. |
8.3.3. Propagation de la retenue
Dans l’architecture dite ripple-carry, chaque étage doit attendre la valeur correcte de la retenue produite par l’étage précédent. Une modification des bits de poids faible peut donc se propager jusqu’au bit de poids fort.
Chemin critique Le chemin critique est le trajet logique dont le retard cumulé est le plus grand. Dans un additionneur à propagation de retenue, il suit généralement la chaîne C₀ → C₁ → … → Cₙ. |
8.3.4. Retard de calcul
Une porte logique réelle possède un temps de propagation tₚ. Si la retenue traverse plusieurs étages, les sorties intermédiaires peuvent prendre brièvement des valeurs incorrectes avant de se stabiliser. Le modèle simplifié suivant permet une première estimation :
Tcritique ≈ n · tretendue La constante exacte dépend de la structure interne de chaque additionneur complet. |

Figure 5 — Accumulation simplifiée des retards le long de la chaîne de retenue.
Cette relation explique pourquoi un additionneur ripple-carry est simple et économique mais devient lent lorsque n augmente. Des architectures plus rapides, comme l’anticipation de retenue, déterminent plusieurs retenues en parallèle au prix d’un circuit plus complexe.
8.3.5. Signification de la retenue finale
Pour des nombres non signés, Cₙ=1 indique que la somme nécessite n+1 bits. Si le résultat est limité à n bits, cette situation constitue un dépassement de capacité non signé.
Pour des nombres signés en complément à 2, la retenue finale ne suffit pas à détecter le dépassement. Un overflow signé apparaît lorsque deux nombres de même signe produisent un résultat de signe opposé. Une méthode matérielle consiste à comparer la retenue entrant dans le bit de signe et celle qui en sort.
V = Cₙ₋₁ ⊕ Cₙ V=1 signale un dépassement signé en complément à 2. |
Type de données | Indicateur pertinent | Interprétation |
|---|---|---|
non signé | Cₙ | la somme dépasse la plage 0 à 2ⁿ−1 |
signé complément à 2 | V=Cₙ₋₁⊕Cₙ | le résultat sort de la plage −2ⁿ⁻¹ à 2ⁿ⁻¹−1 |
8.4. Soustracteurs
8.4.1. Principe de la soustraction binaire
La soustraction binaire A−B suit les mêmes règles que la soustraction décimale. Lorsque le bit A du rang courant est inférieur au bit B, le rang doit emprunter une unité au rang supérieur. En base 2, cet emprunt correspond à 10₂, soit 2₁₀.
A | B | Opération | Différence D | Emprunt E |
|---|---|---|---|---|
0 | 0 | 0−0 | 0 | 0 |
0 | 1 | 0−1 : emprunt nécessaire | 1 | 1 |
1 | 0 | 1−0 | 1 | 0 |
1 | 1 | 1−1 | 0 | 0 |
8.4.2. Demi-soustracteur
Le demi-soustracteur traite deux bits A et B sans emprunt entrant. Il produit la différence D et l’emprunt sortant E.
D = A ⊕ B |
E = ¬A · B Un emprunt est nécessaire uniquement pour 0−1. |
A | B | D | E |
|---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
8.4.3. Soustracteur complet
Un soustracteur complet traite les bits A et B ainsi qu’un emprunt entrant Eᵢₙ provenant du rang inférieur. Il produit la différence D et l’emprunt Eₒᵤₜ destiné au rang supérieur.
A | B | Eᵢₙ | D | Eₒᵤₜ |
|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 1 |
0 | 1 | 0 | 1 | 1 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 1 |
D = A ⊕ B ⊕ Eᵢₙ |
Eₒᵤₜ = ¬A·B + Eᵢₙ·¬(A ⊕ B) |
Eₒᵤₜ = ¬A·B + ¬A·Eᵢₙ + B·Eᵢₙ Forme développée équivalente. |

Figure 6 — Structures d’un demi-soustracteur et d’un soustracteur complet.
8.4.4. Exemple de soustraction avec emprunts
Calculons 1010₂−0111₂, soit 10₁₀−7₁₀. La soustraction est effectuée du bit de poids faible vers le bit de poids fort.
Rang i | Aᵢ | Bᵢ | Eᵢ | Dᵢ | Eᵢ₊₁ |
|---|---|---|---|---|---|
0 | 0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 |
2 | 0 | 1 | 1 | 0 | 1 |
3 | 1 | 0 | 1 | 0 | 0 |
1010₂ − 0111₂ = 0011₂ = 3₁₀ |
8.4.5. Soustraction par complément à 2
Dans la plupart des unités arithmétiques, une soustraction n’est pas réalisée par une chaîne distincte de soustracteurs. Elle est transformée en addition grâce au complément à 2 :
A − B = A + (¬B + 1) |
1. Inverser chaque bit de B pour obtenir le complément à 1 ¬B.
2. Ajouter 1 afin d’obtenir le complément à 2 de B.
3. Additionner ce complément à A avec un additionneur parallèle.
4. Conserver les n bits de résultat ; interpréter correctement la retenue et les indicateurs.
Exemple sur 4 bits
Pour calculer 1010₂−0111₂ :
Étape | Valeur |
|---|---|
B | 0111 |
complément à 1 de B | 1000 |
complément à 2 de B | 1001 |
addition | 1010 + 1001 = 1 0011 |
résultat sur 4 bits | 0011 |
La retenue finale est ignorée dans le résultat sur 4 bits. Elle vaut 1, ce qui signifie, pour cette soustraction non signée, qu’aucun emprunt global n’est nécessaire et que A≥B.
8.4.6. Additionneur-soustracteur commandé
Un signal de mode M permet d’utiliser le même additionneur pour les deux opérations. Chaque bit Bᵢ traverse une porte XOR commandée par M et la retenue initiale reçoit également M.
Mode M | B* = B ⊕ M | C₀ | Opération réalisée |
|---|---|---|---|
0 | B | 0 | A+B |
1 | ¬B | 1 | A+¬B+1=A−B |

Figure 7 — Principe d’un additionneur-soustracteur par complément à 2.
8.4.7. Emprunt, retenue et dépassement
Situation | Signal observé | Conclusion |
|---|---|---|
soustraction non signée avec complément à 2 | Cₙ=1 | pas d’emprunt global ; A≥B |
soustraction non signée avec complément à 2 | Cₙ=0 | emprunt global ; A<B |
soustraction signée | V=1 | résultat hors de la plage signée |
résultat négatif signé | bit de signe=1 | interpréter le mot en complément à 2 |
Attention La retenue Cₙ, l’emprunt et le dépassement signé sont des notions différentes. Leur interprétation dépend du codage choisi et du caractère signé ou non signé des opérandes. |
Méthode générale d’analyse d’un circuit arithmétique
1. Identifier le nombre de bits des opérandes et préciser s’ils sont signés ou non signés.
2. Repérer les entrées de données, la retenue ou l’emprunt entrant, ainsi que les signaux de commande.
3. Établir la table de vérité du bloc élémentaire lorsque cela est nécessaire.
4. Déterminer les équations de somme ou de différence et celles de retenue ou d’emprunt.
5. Vérifier le sens de propagation entre les rangs, du poids faible vers le poids fort.
6. Calculer plusieurs cas tests : zéro, maximum, génération et propagation de retenue, résultat négatif.
7. Analyser le chemin critique et attendre la stabilisation avant de valider les sorties.
8. Interpréter séparément le bit de résultat, la retenue finale et le dépassement signé.
Comparaison des blocs étudiés
Bloc | Entrées | Sorties | Fonction principale | Limitation |
|---|---|---|---|---|
demi-additionneur | A, B | S, C | addition de deux bits | pas de retenue entrante |
additionneur complet | A, B, Cᵢₙ | S, Cₒᵤₜ | addition d’un rang quelconque | un seul bit |
additionneur parallèle | deux mots n bits, C₀ | mot somme, Cₙ | addition multi-bit | retard de propagation |
demi-soustracteur | A, B | D, E | soustraction de deux bits | pas d’emprunt entrant |
soustracteur complet | A, B, Eᵢₙ | D, Eₒᵤₜ | soustraction d’un rang | un seul bit |
additionneur-soustracteur | A, B, M | résultat, indicateurs | addition ou soustraction | interprétation des indicateurs |
Erreurs fréquentes
Erreur | Conséquence | Correction |
|---|---|---|
lire SC au lieu de CS pour le demi-additionneur | résultat binaire inversé | placer la retenue au poids supérieur |
oublier Cᵢₙ dans un rang intermédiaire | somme multi-bit incorrecte | utiliser un additionneur complet |
propager la retenue dans le mauvais sens | chaînage incohérent | du poids faible vers le poids fort |
confondre Cₙ et overflow signé | détection erronée du dépassement | utiliser V=Cₙ₋₁⊕Cₙ pour les signés |
oublier le +1 du complément à 2 | réalisation de A−B−1 | fixer C₀=1 en mode soustraction |
valider trop tôt les sorties | lecture d’un état transitoire | attendre le retard du chemin critique |
Activité pratique — Additionneur-soustracteur 4 bits
Objectifs
- réaliser un additionneur complet à partir de portes logiques ;
- associer quatre étages pour former un additionneur parallèle ;
- ajouter le signal de mode M afin de réaliser l’addition et la soustraction ;
- observer la propagation des retenues et mesurer le temps de stabilisation ;
- vérifier les indicateurs de retenue et de dépassement signé.
Matériel ou logiciel
- Logisim Evolution, Digital, Proteus, Multisim ou une plaque d’essai avec circuits logiques ;
- interrupteurs ou générateurs logiques pour A, B et M ;
- LED ou sondes logiques pour les bits de résultat et les indicateurs ;
- oscilloscope logique ou chronogramme du simulateur pour l’étude temporelle.
Déroulement
1. Construire et valider un demi-additionneur avec les quatre combinaisons d’entrée.
2. Construire un additionneur complet et vérifier ses huit combinaisons.
3. Associer quatre additionneurs complets en reliant Cᵢ₊₁ à l’entrée Cᵢₙ du rang suivant.
4. Ajouter une porte XOR sur chaque bit B et relier le mode M à C₀.
5. Tester 5+3, 11+7, 10−7, 3−5, 7+7 en signé sur 4 bits et −8−1.
6. Relever le résultat, C₄, le bit de signe et V, puis expliquer chaque cas.
7. Introduire des retards de porte dans le simulateur et observer les transitions intermédiaires.
Compte rendu attendu
Élément | Exigence |
|---|---|
schémas | blocs clairement nommés et connexions de retenue visibles |
tables de test | opérandes, mode, résultat attendu, résultat obtenu, indicateurs |
chronogramme | au moins un cas de propagation complète de la retenue |
analyse | distinction claire entre retenue non signée et dépassement signé |
conclusion | limites de l’architecture ripple-carry et proposition d’amélioration |
Travaux dirigés
TD 1 — Demi-additionneur
À partir de l’addition de deux bits A et B :
1. établir la table de vérité de S et C ;
2. écrire les formes canoniques de S et C ;
3. simplifier les deux fonctions ;
4. réaliser le circuit uniquement avec des portes NAND ;
5. déterminer les sorties pour A=1 et B=1.
TD 2 — Additionneur complet
1. établir la table de vérité de S et Cₒᵤₜ ;
2. montrer que S=A⊕B⊕Cᵢₙ ;
3. montrer que Cₒᵤₜ=A·B+A·Cᵢₙ+B·Cᵢₙ ;
4. identifier les combinaisons qui génèrent une retenue ;
5. réaliser le circuit avec deux demi-additionneurs.
TD 3 — Addition parallèle
Effectuer les additions suivantes sur 4 bits et préciser S₃S₂S₁S₀, C₄ et le dépassement signé V :
Cas | A | B | Interprétation demandée |
|---|---|---|---|
a | 0101 | 0011 | non signé puis signé |
b | 1011 | 0111 | non signé |
c | 0111 | 0001 | signé |
d | 1000 | 1111 | signé |
e | 1111 | 0001 | non signé |
TD 4 — Retard de propagation
Un additionneur ripple-carry 8 bits est réalisé avec des étages dont le retard maximal de propagation de retenue est de 12 ns. Le retard entre la stabilisation de la retenue entrante et celle de la somme du dernier rang est de 8 ns.
1. estimer le retard maximal jusqu’à C₈ ;
2. estimer le retard maximal jusqu’à S₇ ;
3. déterminer une fréquence maximale prudente si le résultat doit être stable avant le front d’horloge suivant ;
4. expliquer pourquoi l’estimation est pessimiste pour certaines données.
TD 5 — Soustracteurs
1. établir la table de vérité du demi-soustracteur ;
2. établir celle du soustracteur complet ;
3. vérifier D=A⊕B⊕Eᵢₙ ;
4. simplifier l’expression de Eₒᵤₜ ;
5. effectuer 1101₂−0110₂ avec une chaîne de soustracteurs complets.
TD 6 — Complément à 2
Réaliser sur 8 bits les opérations suivantes et indiquer le résultat décimal, C₈ et V :
Opération | Codage |
|---|---|
45−18 | non signé |
18−45 | non signé puis signé |
60+70 | signé |
−50−40 | signé |
−128−1 | signé |
TD 7 — Conception d’un additionneur-soustracteur
On souhaite concevoir un bloc 4 bits possédant les entrées A, B, un mode M et les sorties R, C et V. M=0 commande l’addition et M=1 la soustraction.
1. donner l’équation des bits B* appliqués à l’additionneur ;
2. donner la valeur de la retenue initiale C₀ ;
3. dessiner le schéma de principe ;
4. définir C en addition et en soustraction non signée ;
5. donner l’équation de V ;
6. proposer six vecteurs de test couvrant les cas normaux et les dépassements.
Synthèse du chapitre
À retenir Le demi-additionneur produit S=A⊕B et C=A·B. L’additionneur complet ajoute la retenue entrante. Une chaîne de n additionneurs forme un additionneur parallèle, dont la vitesse est limitée par la propagation des retenues. La soustraction peut être réalisée directement avec des soustracteurs ou transformée en addition par A−B=A+¬B+1. |
Notion | Relation fondamentale | Interprétation |
|---|---|---|
demi-additionneur | S=A⊕B ; C=A·B | deux bits sans retenue entrante |
additionneur complet | S=A⊕B⊕Cᵢₙ | parité impaire des trois entrées |
retenue complète | Cₒᵤₜ=A·B+Cᵢₙ(A⊕B) | au moins deux entrées actives |
demi-soustracteur | D=A⊕B ; E=¬A·B | emprunt uniquement pour 0−1 |
soustracteur complet | D=A⊕B⊕Eᵢₙ | prise en compte de l’emprunt entrant |
complément à 2 | A−B=A+¬B+1 | réutilisation de l’additionneur |
overflow signé | V=Cₙ₋₁⊕Cₙ | dépassement de la plage signée |
Glossaire
Terme | Définition |
|---|---|
retenue — carry | bit transmis au rang supérieur lorsqu’une somme locale est au moins égale à 2 |
emprunt — borrow | unité prise au rang supérieur lorsque le minuende local est insuffisant |
demi-additionneur | circuit additionnant deux bits sans retenue entrante |
additionneur complet | circuit additionnant deux bits et une retenue entrante |
ripple-carry | architecture dans laquelle la retenue se propage séquentiellement entre les étages |
chemin critique | trajet présentant le retard de propagation maximal |
complément à 2 | codage des entiers signés et méthode permettant de transformer une soustraction en addition |
overflow | dépassement de la plage représentable pour des nombres signés |
carry-out | retenue sortant du bit de poids fort |
additionneur-soustracteur | circuit partagé réalisant les deux opérations selon un signal de mode |
Exercices d’entraînement
Exercice 1 — Lecture de tables
Compléter les sorties S et C d’un demi-additionneur pour la séquence d’entrées suivante :
Intervalle | A | B | S | C |
|---|---|---|---|---|
t₀ | 0 | 0 |
| |
t₁ | 0 | 1 |
| |
t₂ | 1 | 1 |
| |
t₃ | 1 | 0 |
| |
t₄ | 1 | 1 |
|
Exercice 2 — Formes logiques
À partir de la table de vérité de l’additionneur complet :
- écrire la forme canonique SOP de S ;
- écrire la forme canonique SOP de Cₒᵤₜ ;
- simplifier les deux expressions ;
- indiquer le nombre de portes XOR, ET et OU d’une réalisation avec deux demi-additionneurs.
Exercice 3 — Calculs sur 5 bits
Effectuer les opérations suivantes en indiquant toutes les retenues intermédiaires :
Calcul | Type |
|---|---|
10101+00111 | non signé |
11100+10101 | non signé |
01111+00001 | signé |
10000+11111 | signé |
Exercice 4 — Dimensionnement temporel
Un étage d’additionneur complet possède un retard de retenue de 9 ns et un retard de somme de 6 ns. Estimer le retard maximal d’un additionneur ripple-carry 16 bits jusqu’à la retenue finale et jusqu’au bit de somme de poids fort.
Exercice 5 — Soustraction directe
Réaliser 10010₂−01101₂ avec des soustracteurs complets. Présenter, pour chaque rang, Aᵢ, Bᵢ, Eᵢ, Dᵢ et Eᵢ₊₁.
Exercice 6 — Complément à 2
Sur 8 bits, calculer : 83−29, 29−83, −24+11, 100+50 et −100−40. Donner le mot résultat et préciser si un dépassement signé se produit.
Exercice 7 — Détection d’erreurs de conception
Un étudiant réalise A−B en inversant les bits de B mais fixe C₀ à 0. Un autre utilise Cₙ comme indicateur d’overflow signé. Expliquer les deux erreurs et proposer les corrections.
Exercice 8 — Synthèse
Concevoir un bloc 3 bits qui calcule A+B lorsque M=0 et A−B lorsque M=1. Fournir le schéma de principe, les équations de commande, la signification de la retenue finale et quatre tests pertinents.
Auto-évaluation
Affirmation | Oui | À revoir |
|---|---|---|
Je distingue la somme de la retenue. | □ | □ |
Je sais obtenir les équations d’un demi-additionneur. | □ | □ |
Je sais analyser les huit lignes d’un additionneur complet. | □ | □ |
Je sais chaîner des additionneurs complets. | □ | □ |
Je sais identifier le chemin critique. | □ | □ |
Je sais établir les équations d’un soustracteur complet. | □ | □ |
Je sais réaliser une soustraction par complément à 2. | □ | □ |
Je distingue retenue finale et overflow signé. | □ | □ |
Corrigés des travaux dirigés et exercices
Corrigé du TD 1
Les sorties du demi-additionneur sont S=¬A·B+A·¬B=A⊕B et C=A·B. Une réalisation NAND utilise A NAND B comme signal intermédiaire, puis deux NAND pour les termes du XOR et une NAND finale. Le signal N₁=A NAND B est inversé par une cinquième NAND pour obtenir C=N₁ NAND N₁=A·B. Pour A=B=1, S=0 et C=1.
Corrigé du TD 2
La somme est active pour 001, 010, 100 et 111, ce qui correspond à la parité impaire : S=A⊕B⊕Cᵢₙ. La retenue est active lorsque au moins deux entrées valent 1 : Cₒᵤₜ=A·B+A·Cᵢₙ+B·Cᵢₙ. La décomposition en deux demi-additionneurs conduit à Cₒᵤₜ=A·B+Cᵢₙ(A⊕B).
Corrigé du TD 3
Cas | Calcul | S sur 4 bits | C₄ | V | Interprétation |
|---|---|---|---|---|---|
a | 0101+0011=1000 | 1000 | 0 | 1 | 8 non signé ; overflow signé car 5+3 dépasse +7 |
b | 1011+0111=1 0010 | 0010 | 1 | 0 | 18 non signé |
c | 0111+0001=1000 | 1000 | 0 | 1 | overflow signé : +7+1 |
d | 1000+1111=1 0111 | 0111 | 1 | 1 | overflow signé : −8+(−1) |
e | 1111+0001=1 0000 | 0000 | 1 | 0 | 16 non signé, résultat tronqué à 0 |
Corrigé du TD 4
La retenue finale traverse huit étages : T(C₈)≈8×12=96 ns. Pour S₇, la retenue doit traverser sept étages puis le dernier calcul de somme : T(S₇)≈7×12+8=92 ns. Une période supérieure au pire cas, par exemple 100 ns avec une faible marge, correspond à environ 10 MHz ; une conception réelle ajoute les temps de setup, l’incertitude d’horloge et une marge de sécurité. Certaines données ne propagent pas la retenue sur toute la chaîne, d’où un temps réel plus court.
Corrigé du TD 5
Pour le demi-soustracteur, D=A⊕B et E=¬A·B. Pour le soustracteur complet, D=A⊕B⊕Eᵢₙ et Eₒᵤₜ=¬A·B+¬A·Eᵢₙ+B·Eᵢₙ. Le calcul 1101₂−0110₂ donne 0111₂, soit 7₁₀, sans emprunt global.
Corrigé du TD 6
Opération | Résultat 8 bits | Décimal | C₈ | V |
|---|---|---|---|---|
45−18 | 00011011 | 27 | 1 | 0 |
18−45 | 11100101 | −27 en signé ; emprunt en non signé | 0 | 0 |
60+70 | 10000010 | −126 codé, mais résultat attendu +130 | 0 | 1 |
−50−40 | 10100110 | −90 | 1 | 0 |
−128−1 | 01111111 | +127 codé, résultat attendu −129 | 1 | 1 |
Corrigé du TD 7
Les bits appliqués au second opérande sont Bᵢ*=Bᵢ⊕M et la retenue initiale vaut C₀=M. Le résultat est donc A+B lorsque M=0 et A+¬B+1 lorsque M=1. En addition non signée, C=C₄. En soustraction non signée, on peut définir l’emprunt global comme ¬C₄. Le dépassement signé est V=C₃⊕C₄. Les tests doivent inclure zéro, retenue complète, emprunt, résultat négatif et dépassements positifs et négatifs.
Corrigés des exercices
Exercice 1
Intervalle | A | B | S | C |
|---|---|---|---|---|
t₀ | 0 | 0 | 0 | 0 |
t₁ | 0 | 1 | 1 | 0 |
t₂ | 1 | 1 | 0 | 1 |
t₃ | 1 | 0 | 1 | 0 |
t₄ | 1 | 1 | 0 | 1 |
Exercice 2
S=Σm(1,2,4,7)=¬A·¬B·Cᵢₙ+¬A·B·¬Cᵢₙ+A·¬B·¬Cᵢₙ+A·B·Cᵢₙ=A⊕B⊕Cᵢₙ. Cₒᵤₜ=Σm(3,5,6,7)=A·B+A·Cᵢₙ+B·Cᵢₙ. La réalisation par deux demi-additionneurs utilise deux XOR, deux ET et une OU.
Exercice 3
Calcul | Résultat complet | C final | V signé |
|---|---|---|---|
10101+00111 | 11100 | 0 | 0 |
11100+10101 | 1 10001 | 1 | 0 |
01111+00001 | 10000 | 0 | 1 |
10000+11111 | 1 01111 | 1 | 1 |
Exercice 4
Retenue finale : 16×9=144 ns. Somme de poids fort : 15×9+6=141 ns, selon le modèle simplifié proposé.
Exercice 5
10010₂−01101₂=00101₂. Les emprunts successifs sont E₀=0, E₁=1, E₂=0, E₃=1, E₄=1, E₅=0 selon le détail des rangs ; l’emprunt global final est nul.
Exercice 6
Opération | Mot 8 bits | Résultat attendu | V |
|---|---|---|---|
83−29 | 00110110 | 54 | 0 |
29−83 | 11001010 | −54 | 0 |
−24+11 | 11110011 | −13 | 0 |
100+50 | 10010110 | 150 hors plage signée | 1 |
−100−40 | 01110100 | −140 hors plage signée | 1 |
Exercice 7
Inverser B sans ajouter 1 réalise A+¬B=A−B−1. La correction consiste à fixer C₀=1 en mode soustraction. La retenue finale ne détecte pas l’overflow signé ; il faut utiliser V=Cₙ₋₁⊕Cₙ ou vérifier un changement incohérent du signe lors de l’addition de deux opérandes de même signe.
Exercice 8
Le bloc comprend trois XOR commandés par M devant les entrées B, trois additionneurs complets chaînés et C₀=M. Pour M=0, B*=B et C₀=0. Pour M=1, B*=¬B et C₀=1. En soustraction non signée, l’emprunt global vaut ¬C₃. Les tests peuvent être 2+3=5, 7+1 avec retenue, 5−2=3 et 2−5 donnant un résultat négatif en complément à 2.
Conclusion
Les additionneurs et soustracteurs montrent comment une opération arithmétique apparemment complexe se construit à partir de fonctions logiques élémentaires. Le demi-additionneur établit le lien entre XOR, somme et retenue. L’additionneur complet généralise ce principe à une chaîne multi-bit, tandis que le complément à 2 permet de réutiliser le même matériel pour la soustraction.
La correction fonctionnelle doit toujours être complétée par une analyse temporelle. Dans une architecture à retenue propagée, les sorties peuvent être transitoirement incorrectes jusqu’à la stabilisation du chemin critique. Cette contrainte conduit aux architectures arithmétiques rapides étudiées dans les systèmes numériques avancés.