ELE1300 – CIRCUITS LOGIQUES

Transcription

ELE1300 – CIRCUITS LOGIQUES
ELE1300 – CIRCUITS LOGIQUES
TRAVAIL PRATIQUE # 5
CONCEPTION D’UNE UAL
Objectif
Réaliser une unité arithmétique et logique (UAL ou ALU) permettant d’effectuer des
opérations de bases telles que l’addition, le complément à deux, la comparaison, la
multiplication par 2 et la division par 2.
Réalisation d’une macro
Afin de simplifier la réalisation de circuits logiques, il est parfois préférable de réaliser des
blocs pour des sous-circuits. La fonctionnalité de réalisation des macros n’est pas disponible
sur la version étudiante de Circuit Maker. Cette section donne un exemple de création d’une
macro. Dans le travail pratique présent, vous devrez réaliser la macro d’un additionneur de
bits (full adder) ou d’un comparateur de bits et vous devrez suivre une procédure semblable à
ce qui est décrit dans cette section.
Pour faire une macro aller dans :
Macro Æ New Macro (Ctrl-H)
Donner un nom à la macro (MaMacro). La fenêtre Symbol Editor devrait alors apparaître.
Dans la case Element Type choisir l’option Rectangle. Ajouter un rectangle avec une grandeur
pertinente dans la case d’affichage et replacer le nom de la macro après avoir repris select
dans Element type.
Pour ajouter les connections (pins) d’entrée, choisir Pinleft et mettre le curseur à la place où
vous voulez ajouter la pin. Puis la fenêtre symbole pin apparaît, entrer le nom de la pin. Pour
que les noms de connections apparaissent, cocher la case « Pin names » dans Show. Pour
ajouter les connections (pins) de sortie, suivre la même procédure en choisissant Pinright.
Toutes les informations des éléments ajoutés sont montrées dans la case de Element List. Les
opérations Cut, Copy, Replace, Insert, Append et Delete sont disponibles afin d’effectuer des
modifications sur l’élément choisi. Les modifications sont effectuées dans la fenêtre Edit
Buffer.
À la fin, le symbole de votre macro devrait ressembler à la figure 1. Pour terminer le design
de votre symbole cliquer sur OK.
Page 1 sur 5
ELE1300 – CIRCUITS LOGIQUES / TRAVAIL PRATIQUE # 5
Figure 1 : Création du symbole d’une macro.
Placer le symbole de votre macro sur l’espace de travail. Connecter les entrées et les sorties
avec la logique désirée que doit réaliser la macro, voir figure 2. Dans le cas de ce laboratoire,
vous devrez faire le circuit du full adder sur le schéma de la macro.
Avant de sauvegarder la macro, il faut s’assurer que le répertoire pour la librairie personnelle
soit bien configuré. Pour ce faire, aller à :
Options Æ Library Location…
Puis vérifier que le répertoire dans Users Library File soit bien :
U :\CM config\USER.LIB
Sauvegarder ensuite la macro:
Macro Æ Save Macro
Donner un nom pour MajorDevice Class et pour Minor Device Class. La macro réalisée
apparaîtra avec les autres éléments dans Browse.
Page 2 sur 5
ELE1300 – CIRCUITS LOGIQUES / TRAVAIL PRATIQUE # 5
Figure 2 : Édition du circuit de la macro.
Fonctionnement d’un multiplexeur
La figure 3 représente le circuit multiplexeur 4019 où un bit de sélection S permet de choisir
une des deux entrées : A0 à A3, S = 1 ou B0 à B3, S = 0. L’entrée sélectionnée sera reproduite à
la sortie Q0 à Q3.
B
B
Figure 3 : Configuration du multiplexeur.
Travail à réaliser
Votre travail consiste à concevoir un système permettant d’effectuer des opérations à l’aide
d’un signal pour les opérations et un signal pour entrer la variable. On utilisera le data seq
pour générer les opérations à effectuer : 2 bits permettront de choisir l’opération à effectuer, 1
bit permettra de sélectionner la prochaine variable sur laquelle sera effectuée l’opération et 1
bit pour le reset du registre. Les quatre autres bits serviront pour le signal d’entrée. Par
exemple, si l’on veut effectuer :
(2 x 3) + 5
Page 3 sur 5
ELE1300 – CIRCUITS LOGIQUES / TRAVAIL PRATIQUE # 5
On entrera les instructions suivantes dans le data seq :
RST
0
Initialiser la mémoire à zéro
ADD_S 3
Mettre le signal 3 en mémoire
ML2_M 0
Multiplier le résultat en mémoire par 2
ADD_S 5
Additionner au résultat en mémoire le signal 5
À la figure 4, les opérations RST, ADD_S, etc. seront envoyées par le data_seq dans les bits
S4 à S7 tandis que les nombres 0, 3, 0 et 5 seront envoyés dans les bits S0 à S3.
Il est bien important de vérifier que le data_seq utilise l’horloge externe (option use
external clock dans la configuration du data_seq).
Figure 4 : Schéma général du circuit.
Pour garder le résultat de la dernière opération (registre) on utilisera des bascules D (flip-flops,
4013).
Ne réaliser que les opérateurs nécessaires pour effectuer votre opération. Cette dernière sera
fournie au début de la séance de travaux pratiques. Les différents opérateurs pouvant être
réalisés dans le circuit seront :
-L’addition, où l’on additionne deux vecteurs de 4 bits avec la retenue en utilisant la
macro du full-adder (voir annexe pour feuille avec table de Karnaugh).
-La multiplication par deux.
-La division par deux.
-Le complément à deux. Il est possible de réutiliser l’additionneur 4 bits pour réaliser
le complément à deux.
-Le comparateur de deux vecteurs de 4 bits. Ce dernier sera utilisé pour des opérations
du type max(A,B) ou min(A,B).
Voici les répertoires de CircuitMaker contenant des composants potentiellement utiles pour ce
travail :
ƒ
Multiplexeur : Digital by Function / Multiplexers / 4019
ƒ
Séquenceur de données : Digital / Instruments /Data Seq
ƒ
Afficheur hexadécimal : Displays / Digital / Hex Display
ƒ
Bascule D : 4013
Page 4 sur 5
ELE1300 – CIRCUITS LOGIQUES / TRAVAIL PRATIQUE # 5
ELE1300 – CIRCUITS LOGIQUES
TRAVAIL PRATIQUE # 5
Tables de Karnaugh à réaliser
Additionneur de Bits
Un additionneur de bits est l’élément de base pour effectuer l’addition de deux nombres.
L’addition s’effectue de manière standard. On doit additionner 3 bits : un bit de chaque
variable, Ai et Bi, et un bit de la retenue, Cini. Ceci devrait donner un bit pour le résultat Si et
un bit pour la retenue Couti. Noter que Cini = Couti-1.Voici un exemple :
1100
0111
+0110
1101
7
+6
13
00
AB
01
S
Cin
0
1
Retenues
Nombre A (A3A2A1A0)
Nombre B (A3A2A1A0)
Résultat
Cout
11
00
10
Cin
AB
01
11
10
0
1
Comparateur de bits
Un comparateur de bits est l’élément de base pour effectuer la comparaison de deux nombres.
L’idée est de propager un bit identifiant l’entrée la plus grande ou la plus petite, ainsi qu’un
bit affichant que le résultat a été fixé.
Page 5 sur 5