1
Etude et réalisation d'un microprocesseur simple avec logisim-evolution-2.13.9
Cahier des charges
Microprocesseur général rapide de 8bits.
Utilisation du microprocesseur pour simuler une calculatrice simple (opérations logiques, addition, soustraction).
2 registres AX et BX pour préparer les données à UAL
Une mémoire ROM pour simplifier où on stock le programme et données
Jeux instruction minimal avec
Operationcode (4 bit) 0001 ADD (addition) 0010 SUB (soustraction) 0011 AND
0100OR 0101 XOR 0110 NOT
1xxx MOV (charger registre)
I. Construction UAL 8 bit
Etape 1: Ajouter des composants logiques et arithmétiques
Rappelez-vous que nous essayons de construire le circuit suivant dans Logisim
Unité Arithmétique et Logique (UAL 8 bits) Réalise effectivement les opérations arithmétiques (+,-) et logiques (NOT, AND, OR, XOR).
je suggère de construire le circuit en insérant d'abord les circuits arithmétique puis logiques comme sorte de charpente et de les connecter ensuite avec des câbles.
2 Ajouter circuit avec le nom UAL
Maintenant vous avez 2 circuit main et UAL vous devez selectionner UAL
La première chose que nous allons faire c'est d'ajouter deux circuits arithmétiques apes les quatre ports logiques 8 bits et enfin les multiplexeurs pour choisir l’opération
Circuits arithmétiques
3 Et 2 constant avec la valeur 0 comme ancien retenu
Circuits logiques
4 Circuits multiplexeurs sélection d’opérations
Pour le registre d’état ont ce limite au retenu, drapoZero, drapoNegative en utilisant le composants suivant :
Un port NOR de 8 bits pour le drapoZero
5 Un multiplexeur pour le retenu
De plus un séparateur (splitter) pour pouvoir traiter bit par bit
6
Un autre séparateur (splitter) pour mettre le drapo dans le registre d’état un après l’autre
Maintenant nous voulons ajouter les deux entrés entrerA et entrerB dans notre diagramme. (il faut changer le nom de label entrerA et entrerB) comme suit :
7 La troisième entrer est operationCode sur 4 bit
Vous devez Également placer un pin de sortie en sélectionnant l'outil sortie de UAL . (oui).
8 Enfin une autre pour les drapos de registre d’état
9 Vous devez avoir le canva suivant
Si vous n'êtes pas satisfait avec l'emplacement de quelque chose, vous pouvez le sélectionner avec l'outil d'édition et le déplacer à l’endroit souhaité. Ou vous pouvez le supprimer complétement en sélectionnant l'outil effacer dans le menu Editer ou en pressant la touche effacer.
Alors que vous disposez chaque composant du circuit, vous remarquerez qu'aussi tôt que le composant est placé, Logisim revient à l'outil d'édition de telle façon que vous puissiez déplacer le composant qui vient d'être placé ou (comme nous le verrons) connecter le composant à d'autres en créant des câbles. Si vous voulez ajouter une copie du composant nouvellement placé, il suffit de presser Control-D pour dupliquer la sélection.
Etape 2: Ajouter des câbles
Après avoir placé tous les composants sur la surface de travail, vous êtes prêt à ajouter des câbles.
Sélectionnez l'outil d'édition. Lorsque le pointeur est au-dessus d'un point qui peut être connecté, un petit cercle vert apparaitra autour. Pressez le bouton de la souris à cet endroit et tirez jusqu'à
l'endroit ou vous voulez que le câble arrive.
Logisim est plus ou moins intelligent pour l'ajout de câbles : lorsqu'un câble se termine contre un autre câble, Logisim les connecte automatiquement. Vous pouvez également "rallonger" ou
"raccourcir" un câble en déplaçant l'une de ses extrémités avec l'outil d'édition.
10
Reste à relier opérationcode code avec le multiplexeur de retenu on va utiliser un tunnel comme suit :
Le résultat doit être comme suit
11 Etape 4: Tester votre circuit
La dernière étape est de tester notre circuit pour s'assurer qu'il fait effectivement ce que nous en attendons. Logisim est en fait déjà en train de simuler le circuit. Regardons à nouveau nous en étions.
Notez que les deux pins d'entré sont à 0000; et qu'il en est de même pour les pins de sortie..
Maintenant essayons une autre combinaison aux entréA et entrerB et operationCode. Sélectionnez l'outil pousser et commencer à presser les entrées en cliquant dessus. Chaque fois que vous presser une entrée, sa valeur change.
Enregistrer le schéma
II. Construction compteur instruction
12
Apres laselaction de circuit compteur,on utilise un circuit compteur comme suit
Et on réalise le schéma suivant
Tester notre circuit pour s'assurer qu'il fait effectivement ce que nous en attendons Enregistrer le schéma
13 III. ajouter 2 registres AX et BX
IV. ajouter mémoire
V. La CPU Unité de contrôle Apres la Sélection de circuit main
D’abord vous créer un nouveau schéma et vous copier et coller tous les parties déjà fait vous aurez un schéma comme suit :
14 Fetch, decod et execsur front montant de l’horloge
WB (Write Back) stocke le résultat dans un registresur front descendant de l’horloge On suppose que les instructions sont sur 16 bits interpréter comme suit :
Operationcode (4 bit) Destination (2 bit) Source (2 bit) Valeur (8 bit)
0001 addition 00AX 00AX
0010 soustraction 01BX 01BX
0011 AND 10mémoire
0100OR 0101 XOR 0110 NOT
1xxx charger registre
On relie le compteur avec le bus adresse de mémoire ROM Etape 1 : fetch + decod
On va utiliser 3 séparateurs : pour avoir cette forme
Operationcode (4 bit) Destination (2 bit) Source (2 bit) Valeur (8 bit) Un seul séparateur pour séparer 8 premiers bits et 8 derniers bits
15
Un autre séparateur pour séparer les 8 premiers bits en 4 premiers bits et 4 derniers bits
Un autre séparateur pour séparer les 4 derniers bits en 2 premiers bits et 2 derniers bits
16 Vous devez avoir cette forme
Au lieu d’utiliser des câbles on va utiliser exclusivement des tunnels donc on va créer 4 tunnels
Une sur 4 bit avec le nom operationcode
Une sur 2 bit avec le nom selectdestination
Une sur 2 bit avec le nom source
Une sur 8 bit avec le nom donnememoire
17 Etape 2 : execute
le tunnel operationCode avec UAL
le tunnel destination avec les registres AX et BX
Le champ destination et utiliser d’une part pour choisir le 1er opérande de UAL
Et pour stoker le résultat, a cette étape (étape exec) on va traiter que la sélection de 1er opérande On va utiliser un multiplexeur
Et 2 tunnels de 8 bits :
18
Une avec le nom sortieRegistreAX
Une avec le nom sortieRegistreBX Vous devez avoir ce schéma :
Le tunnel source avec les registres AX et BX Vous devez utiliser un autre multiplexeur
Vous devez avoir ce schéma
19
le tunnel donnememoire avec les registres AX et BX (on ne va pas les câbler a cette étape)
Etape 3 : WR
On a supposé que WR ce fait front descendant de l’horloge tunnel invhorloge lier à l’horloge des 2 registre
20
Pour choisir dans quel registre en enregistre la donnée on utilise un décodeur +tunnel destination
Vous devez avoir ce schéma
Pour choisir la source de la donnée sur 8 bits on utilise deux multiplexeurs +tunnel donnememoire + tunnel sortireResultat
21
VI. Tester votre circuit CPU
Rappel des suppositions :
Fetch, decod et execsur front montant de l’horloge
WB (Write Back) stocke le résultat dans un registresur front descendant de l’horloge
les instructions sont sur 16 bits interpréter comme suit :
Operationcode (4 bit) Destination (2 bit) Source (2 bit) Valeur (8 bit)
22
0001 addition 00AX 00AX
0010 soustraction 01BX 01BX
0011 AND 10mémoire
0100OR 0101 XOR 0110 NOT
1xxx charger registre
On teste avec cet exemple :
MOV ax ,2 ;charger le registre ax par 2 encode 1000 0010 0000 0010 82 02 en hexa MOV bx, 6 ; charger le registre bx par 6 encode 1000 0110 0000 011086 06 en hexa ADD ax, bx ; axax+bx encode par 0001 0001 0000 0000 11 00 en hexa
Pour entrer ce programmer en ROM il suffit de sélectionner la ROM puis clic pour éditer
Apres il faut sélectionner le mode simulation puis cliquer étape par étape sur l’horloge Exercice :de même écrire le code de cet exemple
MOV ax, 2 MOV bx, 2
NOT bx ; ;regarder la valeur de registre état ADD ax, bx ; regarder la valeur de registre état