Université Paris Diderot - M1 Année 20132014 Circuits et Architecture TD n◦ 8 Découverte du mini-processeur LC3 Le but de ce TP est de découvrir le circuit logisim qui implante une partie des instructions du LC3 et que vous aurez à modier pour le projet. Les diérents chiers mentionnés ci-dessous sont sur l'espace Didel du cours, dans le sous-repertoire tp8. L'unité arithmétique et logique Récupérez le chier ALU.circ et ouvrez-le avec logisim. en situation ce module ALU contient une petite ALU_test permet de mettre Le module partie du circuit du LC-3, l'unité arithmétique et logique. Le module ALU. Notez l'usage d'un multiplexeur dans l'ALU, qui sélectionne parmi quatre entrées (dont une actellement non aectée) en fonction d'un l de contrôle sur 2 bits. e1 et e2 . Quelles valeurs donner à e1 et e2 pour obtenir en sortie le ET bit à bit de Input1 et Input2 ? Pour obtenir l'addition de Input1 et Cst ? Pour obtenir le NON bit à bit de Input1 ? Exercice 1 : Expérimentez diérentes valeurs pour Exercice 2 : Reprenez le jeu d'instructions distribué la dernière fois. Les opérandes des instructions arithmétiques sont soit deux registres, soit un registre et une constante littérale. Comment sont diérenciés les deux cas ? Quels bits diérencient les opcodes des instructions arithmétiques e2 ADD, AND et NOT ? Déduisez-en à quoi devront être branché e1 et les deux bits de dans le circuit complet. Exercice 3 : Construisez la table de Karnaugh de toutes les instructions du LC-3 en fonction des 4 bits de l'opcode. Que pouvez-vous observer ? Cette table sera utile plus tard. Comment caractériser les instructions qui peuvent modier des registres R0 ...R7 (signal WriteReg) ? L'horloge Exercice 4 : Ouvrez maintenant le chier BiClock.circ et lancez sa simulation. Quel est le comportement de ce circuit ? Quel va être l'intérêt de ce circuit pour la réalisation de notre circuit implémentant LC-3 ? Que se passe-t'il quand Reset est activé ? Puis relaché un peu plus tard ? Le circuit LC-3 LC-3.circ est une implantation partielle du LC-3, dans laquelle ADD, AND, NOT sont cablées, même si beaucoup d'infrastructure est Le chier instructions seulement les déjà en place pour plus tard. Nous avons utilisé une méthode assez diérente de celle présentée en cours, an de simplier le circuit. En particulier il n'y a pas de bus unique, pas de registre d'adresse mémoire. 1 Pour simuler l'exécution de programmes LC-3 avec ce circuit : Mode d'emploi. • Entrez dans la RAM les octets d'un programme LC-3, d'une des trois manières suivantes : En mode Poke (petite main), on peut directement cliquer sur une case de la RAM et la remplir au clavier. Dans le menu obtenu par clic droit sur la RAM, on peut choisir Edit Contents, ce qui ouvre un petit éditeur hexadécimal intégré à logisim. Ce même menu propose aussi Load Image, permettant de charger dans la RAM le contenu d'un chier mémoire • .mem (voir ci-dessous). Lancez la simulation, soit via des tics manuels d'horloge (Ctrl-T), soit avec une horloge automatique (Ctrl-K). • Si vous souhaitez relancer l'exécution du programme, mettez l'entrée Reset à 1, puis de nouveau à 0. Cycles d'horloge. • Toutes les instructions sont exécutées en 2 cycles d'horloge : Pendant le premier cycle (Fetch à 1), l'instruction courante est lue en mémoire et stockée dans le registre d'instruction • IR. Pendant le deuxième cycle (Exec à 1), cette instruction est exécutée et le compteur de programme est remis à jour (incrémenté ou autre). Fichier mémoire. Un chier mémoire chargeable dans une RAM texte dont la première ligne est v2.0 raw. logisim est un simple chier Viennent ensuite les diérents octets de la mémoire en hexadécimal. Voir la section Memory Components de la documentation de détails. Voici par exemple le contenu du chier AddSimple.mem logisim pour plus : v2.0 raw 5020 1025 5260 1266 1440 Ce programme correspond au code assembleur contenu dans le chier .ORIG x0000 AND R0,R0,0 ADD R0,R0,5 AND R1,R1,0 ADD R1,R1,6 ADD R2,R1,R0 .END ; ; ; R0 <- 5 ; ; ; R1 <- 6 ; ; R2 <- R1 + R0 ; AddSimple.asm : code hexa 5020 1025 5260 1266 1440 Nous verrons au prochain TP comment traduite automatiquement de tels chiers assembleur .asm en chiers memoire .mem. Exercice 5 : Ouvrez le circuit LC-3.circ, puis récupérez le programme AddSimple.mem. Chargez-le dans la RAM et lancez sa simulation. Observez en particulier le fonctionnement du module Registres. Exercice 6 : Préparez un chier Cst2007.mem contenant les instructions vu au TD7 pour charger 2007 dans un des registres (sans accès mémoire). Pour cela utilisez soit un éditeur de texte séparé, soit l'éditeur hexadécimal intégré puis l'entrée de menu Save Image. Simulez ce programme. 2