Découverte du mini

publicité
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
Téléchargement