Projet Architecture 2017/18 : séquence de calcul en chargement-rangement

Ce projet est noté et compte pour la note de contrôle continu du module d'architecture des ordinateurs. Le résultat à fournir est le fichier du circuit réalisé sous le logiciel Logisim. Le travail est à faire par binôme.

Le but de ce projet, à l'aide du logiciel Logisim, est de réaliser un circuit comprenant une unité de calcul en nombres entiers signés, un banc de registres et exécutant une séquence de calculs en s'appuyant sur les registres.

Unité de calcul

Votre unité de calcul manipulera des nombres entiers signés sur 8 bits avec la méthode du complément à 2. Elle sera capable de réaliser l'addition, la soustraction, la muliplication et la division entière pour deux nombres en entrée. Elle devra également préciser qu'un débordement a eu lieu pendant un calcul.

Entrées :

Sorties :

Banc de registre

Le banc de registre contiendra 4 registres 8 bits. Il sera capable d'écrire ou de lire le contenu d'un registre.

Entrées :

Sorties :

Séquence de calculs

Une séquence de calculs est stockée dans une mémoire. Elle est exécutée linéairement, instruction après instruction. Le jeu d'instructions permet de placer des constantes dans des registres, de réaliser des calculs avec le contenu de registres et d'en stocker le résultat dans un registre ainsi que de terminer la séquence en demandant d'afficher le contenu d'un registre.

Une instruction est codée sur 16 bits. L'identifiant d'une opération est codé sur 3 bits et est suivi des numéros des registres utilisés par l'opération, chacun sur 2 bits. Pour le chargement d'une constante dans un registre les 8 derniers bits contiendront la valeur de la constante.

Le tableau ci-dessous donne le codage de chaque instruction avec ses paramètres. Un "X" signifie que les bits ne sont pas utilisés et auront la valeur de 0.

DescriptionInstructionBits
15..987 6 5 4 3 2 1 0
Rc contient l'addition de Ra et RbADD Rc, Ra, Rb X cba 0   0   0
Rc contient la soustraction de Rb à RaSUB Rc, Ra, Rb X cba 0   0   1
Rc contient la division de Ra par RbDIV Rc, Ra, Rb X cba 0   1   0
Rc contient la multiplication de Ra par RbMUL Rc, Ra, Rb X cba 0   1   1
Chargement d'une valeur dans RaLOAD Ra, [valeur] [valeur]Xa 1   0   0
Fin de calcul avec affichage de RaEND Ra Xa 1   0   1
XX X 1   1   0
XX X 1   1   1

Quelques exemples de codage d'instruction :

Exemple de séquence d'instructions

R0 = 12
R1 = -25
R2 = 17
R3 = R0 - R2
R0 = R3 * R2
R0 = R0 - R2
Afficher R0

S'écrira avec le jeu d'instructions (et les nombres écrits en hexa) :

LOAD R0,0C
LOAD R1, E7
LOAD R2, 11
SUB R3, R0, R2
MUL R0, R3, R2
SUB R0, R0,R2
END R0

Soit la séquence en hexa suivante qui sera placée en mémoire à partir de l'adresse 0 :

OCO4 E70C 1114 01C1 005B 0041 0005

Avec Logisim, il est possible de sauvegarder le contenu d'une mémoire (ROM ou RAM) et de la charger via un fichier. Le fichier sequence.mem contient la séquence ci-dessus.

Fin d'exécution

Quand la séquence arrive sur une instruction END, cela signifie qu'elle est terminée. Votre circuit doit alors afficher en continu le contenu du registre en paramètre via une sonde. De plus, si un débordement a eu lieu pendant l'exécution de la séquence, et donc que le résultat du calcul est faux, une diode le précisera.

Rendu du travail

Vous m'enverrez par mail, pour le Jeudi 21 Décembre, 20h dernier délai :

Chaque circuit sera testé. Si vous n'avez pas réussi à réaliser tout ce qui est demandé, assurez vous d'envoyez un circuit qui permet de tester au moins ce qui a été fait (notamment votre unité de calcul et votre banc de registres). Un circuit ne se lançant pas à cause d'erreurs ou ne faisant rien ne peut pas être évalué et donc noté. Mettez du texte sur le circuit pour préciser le rôle des différentes entrées à utiliser pour le faire fonctionner.