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
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
Fonctionnement d un multiplexeur Figure 2 : Édition du circuit de la macro. La figure 3 représente le circuit multiplexeur 4019 où un bit de sélection S permet de choisir une des deux entrées : A 0 à A 3, S = 1 ou BB0 à B 3B, S = 0. L entrée sélectionnée sera reproduite à la sortie Q 0 à Q 3. Travail à réaliser Figure 3 : Configuration du multiplexeur. 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
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 S 4 à S 7 tandis que les nombres 0, 3, 0 et 5 seront envoyés dans les bits S 0 à S 3. 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 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, 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 un bit pour la retenue Cout i. Noter que Cin i = Cout i-1.voici un exemple : 1100 Retenues 0111 7 Nombre A (A 3 A 2 A 1 A 0 ) +0110 +6 Nombre B (A 3 A 2 A 1 A 0 ) 1101 13 Résultat S Cin 0 1 AB 00 01 11 10 Cout Cin 0 1 AB 00 01 11 10 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