Vous êtes sur la page 1sur 5

Laboratoire 5

Additionneur/soustracteur 8 bits signs avec affichage des oprandes et du rsultat


Faites la lecture complte de ce document avant de commencer l'exprimentation

1 Introduction
1.1 Survol
Dans ce laboratoire, vous construirez un circuit logique qui prendra deux nombres de 4 bits en entr et qui produira soit la somme ou la diffrence des deux nombres en hexadcimal. Tous les nombres seront encods en complment deux.

1.2 Objectifs
Les objectifs de ce laboratoire sont: faire la conception, la ralisation et la vrification dun additionneur/soustracteur pour deux oprandes signes quatre bits, en format complment deux; 2. utiliser une mthode de description hirarchique pour un design; 3. rutiliser des composantes dveloppes pour des laboratoires prcdents; et, 4. rviser lutilisation et larithmtique des nombres en complment deux.
1.

2 Description du problme
Vous devez implmenter un additionneur/soustracteur 8 bits en complment deux sur la planchette de dveloppement BASYS. Votre circuit doit accepter en entre deux oprandes de 4 bits, A et B, et un signal de contrle plus/moins. Le signal plus/moins permet de spcifier laddition A + B (S=0) ou la soustraction A B (S=1). Pour viter tout dbordement et permettre un affichage hexadcimal, la somme/diffrence doit tre exprime sur 8 bits. La valeur de chaque oprande doit tre affiche, en hexadcimal, en utilisant un affichage sept segments pour chaque oprande. La valeur de la somme ou diffrence doit aussi tre affiche, en utilisant deux affichages 7 segments. Un affichage correspond aux 4 bits les moins significatifs, et lautre correspond aux 4 bits les plus significatifs.

Pour ce laboratoire, vous devrez composer votre propre fichier UCF. Les entres et sorties de l'additionneur devront tre conformes aux spcifications suivantes:

loprande A est entre par les quatre commutateurs de gauche (SW7 SW4); loprande A est montre, en format hexadcimal, sur le premier affichage partir de la gauche (Anode AN3); loprande B est entre par les quatre commutateurs de droite (SW3 SW0); loprande B est montre, en format hexadcimal, sur le deuxime affichage partir de la gauche (Anode AN2); lopration plus/moins est choisie en appuyant sur le bouton de droite (BTN0) : lutilisateur doit tenir le bouton enfonc pour spcifier une soustraction; et, la somme ou la diffrence est montre, en format hexadcimal deux chiffres, sur les deux affichages de droite (Anodes AN1 et AN0).

Voici deux exemples reprsentant la position des commutateurs, du bouton de soustraction et de l'affichage pour l'addition et la soustraction:

2.1 Exemple 1
Pour faire l'addition de A=4 et B=-2, on place les commutateurs pour former les nombres de faon binaire (en format sign quatre bits en complment deux). Donc, pour le nombre 4 ce sera 0100 et pour le nombre -2, ce sera 1110. Les affichages pour A et B vont reprsenter ces nombres en format hexadcimal, et la somme attendue, 2, sera reprsent sous forme hexadcimale comme 02. Addition A = 4 et B = -2 (rsultat = 2)

2.2 Exemple 2
Pour une soustraction, les nombres sont entrs de la mme faon. Le bouton BTN0 est appuy pour effectuer la soustraction. Pour la soustraction de A=4 et B=7, on place les commutateurs

0100 pour le nombre 4 et 0111 pour le nombre 7. La somme attendue, -3, sera reprsente sous forme hexadcimale comme FD. Soustraction A = 4 et B = 7 (rsultat = -3)

3 Procdure
3.1 Conception du bloc additionneur
Crez un nouveau design nomm labo5. Dans un schma nomm Adder, crez un bloc additionneur de 4 bits avec les entres et sorties suivantes:

Entres: A (bus de 4 bits), B(bus de 4 bits), Cin Sorties: Somme (bus de 4 bits), Cout

Les entres A et B sont encod en complment deux sur des bus de 4 bits et la sortie sur un bus de 8 bits. Assurez-vous de bien implmenter lextension du signe si ncessaire. Souvenezvous aussi que soustraire un nombre est quivalent additionner sa valeur inverse. Il est fortement recommand de pratiquer quelques exemples daddition en complment deux afin de bien comprendre le problme. Ladditionneur/soustracteur de 8bits est construit partir de huit additionneurs complets et un peu de logique additionnelle. Avant de continuer, vous devrez importer votre additionneur complet du laboratoire 3. Bien que vous puissiez importer votre librairie du laboratoire 3, il est prfrable dimporter votre schma au complet dans le laboratoire 5. Procdez comme suit : Add New File, slectionn Add Existing File, naviguez jusqu votre dossier src de votre laboratoire 3 et selectionnez mon_additionneur_complet.bde. Avant dimporter, assurez-vous de cocher la case Make local copy. Compilez votre additionneur et voila! Vous pouvez lutiliser dans votre shma. Consultez vos notes de cours (chapitre 6) pour vous aider btir le schma de l'additionneur. Simulez le fonctionnement correct de cet additionneur en utilisant des nombres de 4 bits en

complment deux. Servez-vous des quelques exemples donns en classe comme vecteurs de tests.

3.2 Modification de votre dcodeur pour affichage 7 segments


Ajoutez une copie de votre dcodeur hexadcimal pour affichage 7 segments HexToSegments, cr au laboratoire 4, votre design (suivez la procdure de la section prcdente). Modifiez ce circuit pour exprimer les entres et sorties sous forme de bus. Lentre doit tre un bus 4 bits, et la sortie doit tre un bus 8 bits. Vous devez ajouter un 1 pour teindre le point de laffichage en tout temps.

Entres: Digit(bus de 4 bits, dans l'ordre: d3,d2,d1,d0) Sorties: Segments(bus de 8 bits, dans l'ordre: A,B,C,D,E,F,G,DOT)

3.3 Affichage multiplex


Le dcodeur hexadcimal que vous avez construit permet de dcoder un nombre de 4 bits pour le reprsenter sur l'affichage de la planchette. Comme vous l'avez vu au laboratoire 4, les cathodes de l'affichage sont communes; si vous illuminez le segment A de l'affichage, celui-ci sera illumin sur toutes les anodes qui sont actives. Pour reprsenter plusieurs caractres diffrents sur l'affichage, un circuit de contrle balayage doit tre utilis. Ce circuit contrle les anodes et les cathodes correspondant au caractre reprsenter de faon continue et plus rapide que le temps de rponse de l'il humain. Chaque affichage est illumin 25% du temps, mais puisque l'il ne peut percevoir l'affaiblissement de l'affichage, le caractre semble continuellement illumin. Pour plus d'information ce sujet, consultez la section Seven-segment display la page 4 du manuel de rfrence pour la planchette BASYS. Le circuit de contrle pour l'affichage vous est fourni dans le fichier ssdDriver.vhd. Ajoutez ce fichier votre design et compilez-le. Crez ensuite un nouveau schma nomm AddSubFinal ayant les entres et sorties suivantes:

Entres: CLK, A(bus de 4 bits), B(bus de 4 bits), S (1-bit) Sorties: SSD(bus de 8 bits), SSD_AN(bus de 4 bits)

Ajoutez une instance du module ssdDriver dans votre schma. Reliez les ports CLK, SSD et SSDAN aux pattes correspondantes du module ssdDriver. Ajoutez deux instances de votre dcodeur hexadcimal modifi HexToSegments. Reliez les ports A et B aux pattes digit3 et digit2 du module ssdDriver respectivement, mais en passant travers une instance de votre dcodeur.

Composez un fichier labo5.ucf (utilisez le fichier modle) reliant chaque port dentre et de sortie une patte du FPGA. Suivez les spcifications donnes la section 2. Le port clk doit tre assign la patte P54, qui correspond au gnrateur dhorloge sur la planchette. Synthtisez et implmentez votre circuit, en dsignant votre schma comme entit principale. Programmez le FPGA, vrifiez le fonctionnement correct du circuit, et dmontrez le tout votre instructeur avant de poursuivre.

3.4 Circuit complet


Ajoutez une instance de votre bloc additionneur/soustracteur votre schma principal. Connectez les ports A et B votre bloc additionneur/soustracteur. Vous pouvez ignorer la sortie Cout, ou la connecter un DEL pour voir son fonctionnement. Ajoutez deux autres instances de votre dcodeur hexadcimal 7 segments. Reliez la sortie du bloc additionneur/soustracteur aux entres digit3 et digit2 du bloc ssdDriver, en passant travers vos dcodeurs. Consultez votre instructeur si ncessaire pour les dtails des connexions. Le circuit final aura les entres et sorties suivantes:

Entres: CLK, Soustraction, A(bus), B(bus), S(1 bit) Sorties: SSD(bus), SSDAN(bus)

Synthtisez et implmentez le circuit. Utilisez les mmes vecteurs de test employs la section 3.1. Faites une dmonstration votre instructeur.

4 Travail remettre
Le rapport est remettre en classe une semaine aprs la date du laboratoire. Pour ce laboratoire, vous devez remettre un rapport formel (un par quipe) selon les directives nonces dans le Guide de rdaction pour rapports de conception.

Note la fin du laboratoire, sauvegarder vos fichier sur une cl USB et votre rpertoire rseau.

Vous aimerez peut-être aussi