03.01.2014 Views

Conception d'une UAL

Conception d'une UAL

Conception d'une UAL

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ELE1300 – CIRCUITS LOGIQUES<br />

TRAVAIL PRATIQUE # 5<br />

CONCEPTION D’UNE <strong>UAL</strong><br />

Objectif<br />

Réaliser une unité arithmétique et logique (<strong>UAL</strong> ou ALU) permettant d’effectuer des<br />

opérations de bases telles que l’addition, le complément à deux, la comparaison, la<br />

multiplication par 2 et la division par 2.<br />

Réalisation d’une macro<br />

Afin de simplifier la réalisation de circuits logiques, il est parfois préférable de réaliser des<br />

blocs pour des sous-circuits. La fonctionnalité de réalisation des macros n’est pas disponible<br />

sur la version étudiante de Circuit Maker. Cette section donne un exemple de création d’une<br />

macro. Dans le travail pratique présent, vous devrez réaliser la macro d’un additionneur de<br />

bits (full adder) ou d’un comparateur de bits et vous devrez suivre une procédure semblable à<br />

ce qui est décrit dans cette section.<br />

Pour faire une macro aller dans :<br />

Macro New Macro (Ctrl-H)<br />

Donner un nom à la macro (MaMacro). La fenêtre Symbol Editor devrait alors apparaître.<br />

Dans la case Element Type choisir l’option Rectangle. Ajouter un rectangle avec une grandeur<br />

pertinente dans la case d’affichage et replacer le nom de la macro après avoir repris select<br />

dans Element type.<br />

Pour ajouter les connections (pins) d’entrée, choisir Pinleft et mettre le curseur à la place où<br />

vous voulez ajouter la pin. Puis la fenêtre symbole pin apparaît, entrer le nom de la pin. Pour<br />

que les noms de connections apparaissent, cocher la case « Pin names » dans Show. Pour<br />

ajouter les connections (pins) de sortie, suivre la même procédure en choisissant Pinright.<br />

Toutes les informations des éléments ajoutés sont montrées dans la case de Element List. Les<br />

opérations Cut, Copy, Replace, Insert, Append et Delete sont disponibles afin d’effectuer des<br />

modifications sur l’élément choisi. Les modifications sont effectuées dans la fenêtre Edit<br />

Buffer.<br />

À la fin, le symbole de votre macro devrait ressembler à la figure 1. Pour terminer le design<br />

de votre symbole cliquer sur OK.<br />

Page 1 sur 5


ELE1300 – CIRCUITS LOGIQUES / TRAVAIL PRATIQUE # 5<br />

Figure 1 : Création du symbole d’une macro.<br />

Placer le symbole de votre macro sur l’espace de travail. Connecter les entrées et les sorties<br />

avec la logique désirée que doit réaliser la macro, voir figure 2. Dans le cas de ce laboratoire,<br />

vous devrez faire le circuit du full adder sur le schéma de la macro.<br />

Avant de sauvegarder la macro, il faut s’assurer que le répertoire pour la librairie personnelle<br />

soit bien configuré. Pour ce faire, aller à :<br />

Options Library Location…<br />

Puis vérifier que le répertoire dans Users Library File soit bien :<br />

U :\CM config\USER.LIB<br />

Sauvegarder ensuite la macro:<br />

Macro Save Macro<br />

Donner un nom pour MajorDevice Class et pour Minor Device Class. La macro réalisée<br />

apparaîtra avec les autres éléments dans Browse.<br />

Page 2 sur 5


ELE1300 – CIRCUITS LOGIQUES / TRAVAIL PRATIQUE # 5<br />

Fonctionnement d’un multiplexeur<br />

Figure 2 : Édition du circuit de la macro.<br />

La figure 3 représente le circuit multiplexeur 4019 où un bit de sélection S permet de choisir<br />

une des deux entrées : A 0 à A 3, S = 1 ou BB0 à B<br />

3B , S = 0. L’entrée sélectionnée sera reproduite à<br />

la sortie Q 0 à Q 3 .<br />

Travail à réaliser<br />

Figure 3 : Configuration du multiplexeur.<br />

Votre travail consiste à concevoir un système permettant d’effectuer des opérations à l’aide<br />

d’un signal pour les opérations et un signal pour entrer la variable. On utilisera le data seq<br />

pour générer les opérations à effectuer : 2 bits permettront de choisir l’opération à effectuer, 1<br />

bit permettra de sélectionner la prochaine variable sur laquelle sera effectuée l’opération et 1<br />

bit pour le reset du registre. Les quatre autres bits serviront pour le signal d’entrée. Par<br />

exemple, si l’on veut effectuer :<br />

(2 x 3) + 5<br />

Page 3 sur 5


ELE1300 – CIRCUITS LOGIQUES / TRAVAIL PRATIQUE # 5<br />

On entrera les instructions suivantes dans le data seq :<br />

RST 0 Initialiser la mémoire à zéro<br />

ADD_S 3 Mettre le signal 3 en mémoire<br />

ML2_M 0 Multiplier le résultat en mémoire par 2<br />

ADD_S 5 Additionner au résultat en mémoire le signal 5<br />

À la figure 4, les opérations RST, ADD_S, etc. seront envoyées par le data_seq dans les bits<br />

S 4 à S 7 tandis que les nombres 0, 3, 0 et 5 seront envoyés dans les bits S 0 à S 3 .<br />

Il est bien important de vérifier que le data_seq utilise l’horloge externe (option use<br />

external clock dans la configuration du data_seq).<br />

Figure 4 : Schéma général du circuit.<br />

Pour garder le résultat de la dernière opération (registre) on utilisera des bascules D (flip-flops,<br />

4013).<br />

Ne réaliser que les opérateurs nécessaires pour effectuer votre opération. Cette dernière sera<br />

fournie au début de la séance de travaux pratiques. Les différents opérateurs pouvant être<br />

réalisés dans le circuit seront :<br />

-L’addition, où l’on additionne deux vecteurs de 4 bits avec la retenue en utilisant la<br />

macro du full-adder (voir annexe pour feuille avec table de Karnaugh).<br />

-La multiplication par deux.<br />

-La division par deux.<br />

-Le complément à deux. Il est possible de réutiliser l’additionneur 4 bits pour réaliser<br />

le complément à deux.<br />

-Le comparateur de deux vecteurs de 4 bits. Ce dernier sera utilisé pour des opérations<br />

du type max(A,B) ou min(A,B).<br />

Voici les répertoires de CircuitMaker contenant des composants potentiellement utiles pour ce<br />

travail :<br />

• Multiplexeur : Digital by Function / Multiplexers / 4019<br />

• Séquenceur de données : Digital / Instruments /Data Seq<br />

• Afficheur hexadécimal : Displays / Digital / Hex Display<br />

• Bascule D : 4013<br />

Page 4 sur 5


ELE1300 – CIRCUITS LOGIQUES / TRAVAIL PRATIQUE # 5<br />

ELE1300 – CIRCUITS LOGIQUES<br />

TRAVAIL PRATIQUE # 5<br />

Tables de Karnaugh à réaliser<br />

Additionneur de Bits<br />

Un additionneur de bits est l’élément de base pour effectuer l’addition de deux nombres.<br />

L’addition s’effectue de manière standard. On doit additionner 3 bits : un bit de chaque<br />

variable, A i et B i , et un bit de la retenue, Cin i . Ceci devrait donner un bit pour le résultat S i et<br />

un bit pour la retenue Cout i . Noter que Cin i = Cout i-1 .Voici un exemple :<br />

1100 Retenues<br />

0111 7 Nombre A (A 3 A 2 A 1 A 0 )<br />

+0110 +6 Nombre B (A 3 A 2 A 1 A 0 )<br />

1101 13 Résultat<br />

S<br />

Cin<br />

0<br />

1<br />

AB<br />

00 01 11 10<br />

Cout<br />

Cin<br />

0<br />

1<br />

AB<br />

00 01 11 10<br />

Comparateur de bits<br />

Un comparateur de bits est l’élément de base pour effectuer la comparaison de deux nombres.<br />

L’idée est de propager un bit identifiant l’entrée la plus grande ou la plus petite, ainsi qu’un<br />

bit affichant que le résultat a été fixé.<br />

Page 5 sur 5

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!