Vous êtes sur la page 1sur 22

Etude et réalisation d'un microprocesseur simple avec logisim-evolution-2.13.

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
0100OR
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.

1
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

2
Et 2 constant avec la valeur 0 comme ancien retenu

Circuits logiques

3
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

4
Un multiplexeur pour le retenu

De plus un séparateur (splitter) pour pouvoir traiter bit par bit

5
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 :

6
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).

7
Enfin une autre pour les drapos de registre d’état

8
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.

9
Reste à relier opérationcode code avec le multiplexeur de retenu on va utiliser un tunnel comme
suit :

Le résultat doit être comme suit

10
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

11
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

12
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 :

13
Fetch, decod et execsur front montant de l’horloge

WB (Write Back) stocke le résultat dans un registresur 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 00AX 00AX
0010 soustraction 01BX 01BX
0011 AND 10mémoire
0100OR
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

14
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

15
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

16
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 :

17
 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

18
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

19
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

20
VI. Tester votre circuit CPU
Rappel des suppositions :

 Fetch, decod et execsur front montant de l’horloge


 WB (Write Back) stocke le résultat dans un registresur 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)

21
0001 addition 00AX 00AX
0010 soustraction 01BX 01BX
0011 AND 10mémoire
0100OR
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 011086 06 en hexa

ADD ax, bx ; axax+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

22

Vous aimerez peut-être aussi