Vous êtes sur la page 1sur 3

TP Cir. Prog. VHDL 2ème Ing. Mécat.

TP2 : Additionneur-soustracteur 4-bit


I- Objectif:

Le but de ce TP est d’utiliser


tiliser le VHDL en description structurelle pour concevoir un Additionneur-
soustracteur 4-bit avec détection de débordement.

II-Additionneur-Soustracteur 4-bit
bit

On désire décrire l’additionneur-soustracteur


soustracteur 4-bit
4 représenté sur la figure 1. L’additionneur-soustracteur
L’additionneur est un
circuit capable d'additionner ou de soustraire deux nombres binaires, chacun de taille 4 bit,
bit en fonction d'un signal de
commande M.

4 4
A S

4 Cf
B Additionneur-Soustracteur
4-bit
Ovf
M
Mcov

Figure 1 - Schéma de l'additionneur-soustracteur

Ce circuit permet de faire l’addition ou la soustraction de deux nombres A et B de 4 bits chacun.


chacun En sortie on va
avoir le résultat sur 4 bits ainsi que la retenu (Cf), le débordement (Ovf) et une sortie Mcov.
Mcov

III- Description de l’additionneur-Soustracteur


l’additionneur 4-bit

- La description VHDL du circuit doit :


 Être modulaire (comprenant des sous-modules).
 Comporter une commande pour basculer entre l'addition et la soustraction (M).
 Êtretre capable de détecter un débordement (Overflow), c.à.d. un dépassement de capacité lors d'une addition de
nombres signés.

1- Additionneur 4-bit

Lorsque on fait l’addition en binaire, on additionne bit par bit en commençant à partir du poids faible
fai et à chaque
fois on propage la retenue
etenue sortante au bit du rang supérieur. L’addition sur un bit peut se faire par un additionneur
complet 1-bit (FA).
Ainsi, pour
our effectuer l'addition de deux nombres de 4 bits, il suffit de chaîner entre eux 4 additionneurs 1-bit1
complets (Figure 2).. La retenue est ainsi propagée d'un additionneur à l'autre. Un tel additionneur est es appelé un
additionneur parallèle à propagation de retenue (Ripple-carry adder).

Figure 2 - Additionneur 4-bit

ENICAR (2015/2016) 1
TP Cir. Prog. VHDL 2ème Ing. Mécat.

2- Et la soustraction ?

On peut implémenter la soustraction à l'aide de l'additionneur avec des modifications mineures. Pour ce faire, on
exploite les propriétés du complément à 2 et le fait que le bit de poids faible de l'additionneur n'a pas de retenue
d'entrée. En effet, effectuer A - B en complément à 2, est équivalent à A + B' + 1. (Le complément à 2 est
équivalent au complément à 1 bit-par-bit (changement de 0 par 1 et de 1 par 0) plus l'addition de 1)
Pour effectuer la deuxième addition (+1), il suffit d'injecter un 1 en guise de retenue dans l'additionneur de poids
faible. On peut donc supposer que l'on dispose d'un signal de contrôle M qui vaut 0 lorsque l'on veut faire une
addition, et 1 lorsque l'on veut faire une soustraction.

On utilise ce signal M comme retenue du bit de poids faible de l'additionneur. Enfin, pour obtenir B' (complément à
1 de B), il suffit de rajouter un inverseur (une porte XOR) en entrée de chacun des additionneurs 1-bit : Bi ⊕ M ;
lorsque M vaut 0, la valeur d'entrée de l'additionneur i est Bi, et lorsque M vaut 1, la valeur d'entrée est Bi'.
Donc, lorsque M vaut 0, l'opération effectuée par le circuit est A + B (Addition), et lorsque M vaut 1, l'opération
effectuée est A + B' + 1 (soustraction).
Ainsi, le circuit de l’additionneur-soustracteur 4-bit à décrire est représenté par la figure 3.

Figure 3 - Additionneur-soustracteur 4-bit

Avec en plus les sorties Cf et Ovf où : Cf : Carry Flag (Drapeau de retenu), est activé lorsque la somme non signé
dépasse 15 (c'est à dire que la somme ne peut plus être représenté sur 4 bits) et Ovf : Overflow Flag (Drapeau de
débordement), est activé lorsque la somme signé est en dehors de l’intervalle [-7, +7]. Mcov est la sortie d’un
multiplexeur qui sélectionne Cf si l’opération réalisée est une addition ou Ovf si l’opération est une soustraction. Sur
la figure 3, les signaux qui connectent les modules internes de l’additionneur-soustracteur sont représentés en rouge.

3- La retenu (Carry) et le débordement (Overflow)

Méthode: Ajouter tous les bits, y compris les bits de Détection du débordement (Overflow)
signe; ignorer la retenu à la sortie de l’additionneur des - Un débordement se produit si deux nombres de même signe
bits de signe. Problème: Comme on travaille avec des sont additionnés et un résultat avec le signe opposé est
nombres de taille fixe, le résultat d'une addition peut obtenu.
donner un nombre trop grand pour être représenter avec - Un débordement ne peut pas se produire lors de l'addition
le même nombre de bits (4 bits dans notre cas), cette de nombres de signes opposés.
source d'erreur est appelé débordement (overflow). -Une autre façon à détecter le débordement: Si la retenue
Important: Lorsque le débordement se produit, le résultat d’entrée à l’additionneur des bits de signe (C3) est différente
numérique n’est plus valide. de la retenue sortante (C4), alors il y a débordement.

ENICAR (2015/2016) 2
TP Cir. Prog. VHDL 2ème Ing. Mécat.

Exemples pratiques:

Decimal Binaire Decimal Binaire Decimal Binaire Decimal Binaire

2 0010 5 0101 -7 1001 7 0111


+ 3 +0011 + 3 +0011 + -5 +1011 + -2 +1110
5 cf 0 0101 8 cf 0 1000 4 cf 1 0100 5 cf 1 0101
ovf 0 ovf 1 ovf 1 ovf 0

Overflow vs Carry: L’overflow peut être considéré comme une forme de complément à deux d’un carry. Dans une
opération signée, l’overflow est surveillé et le carry est ignoré. De même, dans une opération non signée le carry est
surveillé et l’overflow est ignoré.

Travail Demandé :
III- Description VHDL du module et simulation (Modelsim)

Copiez/collez le dossier TP2_work dans votre espace de travail (D:).

1- Complétez le fichier addsub4.vhd pour décrire l’additionneur-soustracteur.


 Vous allez vous servir des modules suivants (à compléter d’abord):
 un additionneur (full_adder.vhd)
 une porte XOR (xor.vhd)
 un multiplexeur (mux.vhd)
 à l’intérieur de l’architecture de l’additionneur-soustracteur, faites attention aux noms des ports de chaque
module déclaré (component) et instancié (Instance_X : nom_module PORT MAP(…,…,…))
afin de les connecter correctement aux signaux correspondants comme montré sur la figure 3.

2- Complétez le testbench addsub4_tb.vhd et simulez avec ModelSim l'additionneur-soustracteur.


Observez les chronogrammes et interprétez.

IV- Synthèse et implémentation sur FPGA (Xilinx ISE)

1- Avec Xilinx ISE, Synthétisez et implémentez sur la carte FPGA Spartan-3 l'additionneur-soustracteur en
vous aidant des étapes fournies dans le Tutorial.

 Lors de l’étape d’assignation des broches (Assign Package Pins), connectez les ports de votre
description VHDL aux broches de la carte de développement FPGA comme suit:

Design VHDL Carte FPGA Référence


Entrées :
A0 A 1 A 2 A 3 SW0...SW3 F12, G12, H14, H13
B0 B 1 B 2 B 3 SW4...SW7 J14, J13, K14, K13
M BTN0 M13
Sorties :
S0 S 1 S 2 S 3 LD0...LD3 K12, P14, L12, N14
Cf LD4 P13
Ovf LD5 N12
Mcov LD6 P12

2- Configurez la carte et vérifiez que votre circuit fonctionne correctement.

ENICAR (2015/2016) 3

Vous aimerez peut-être aussi