Sommaire Précédent Suivant


Description générale

1. Registres

Le microprocesseur possède 32 registres de 16 bits, notés r0 .. r31. Le registre r0 est particulier : sa lecture renvoie toujours 0, par conséquent. On pourra y écrire toute valeur qui doit être ignorée.

2. Adressage

La taille des adresses est de 16 bits, ce qui permet de d'adresser 65636 mots de 16 bits

3. Instructions

Le format des instruction est inspiré des instructions du mips ; toutes les instructions sont de la forme :
instr rA rB arg
où : rA et rB sont des registres, arg est soit un registre soit une constante


Le codage est le suivant :

Description des champs :

CTRL (1 bit) : 1 si c'est une instruction de saut ou d'acces à la mémoire, 0 si c'est une instruction arithmétique ou logique
OPCODE (4 bit) : code de l'instruction (cf plus loin)
RA (5 bits) : n° de rA
RB (5 bits) : n° de rB
CST (1 bit) : 1 si arg est une constante 0 sinon
RC (5 bits) : n° du registre correspondant à arg quand CST est à0
ARG (16 bits) : la constante arg si CST est à 1

Chaque instruction occupe donc 2 mots mémoires, de plus une instruction commence toujours à une adresse paire

Instructions de saut : jump0, ajump0

saut relatif : jump0
jump0 rA rB arg provoque un branchement à l'adresse : ( adresse de l'instruction suivante ) + arg si rB est à 0, et dans ce cas rA reçoit l'adresse de l'instruction suivante

saut absolu : ajump0
ajump0 rA rB arg provoque un branchement à l'adresse arg si rB est à 0, et dans ce cas rA reçoit l'adresse de l'instruction suivante

Instruction de lecture et écriture en mémoire

lecture : read
read rA rB arg place dans le registre rA le mot lu à l'adresse mémoire rB+arg

écriture : write
write rA rB arg écrit le contenu de rA à l'adresse mémoire rB+arg

Instructions arithmétiques et logiques

Elles ont toutes le comportement suivant :
instr rA rB arg place dans rA le résultat de instr( rB, arg) instr(a,b) est donné par le tableau suivant :

instrchamp OPCODEinstr(a,b)
add 1 0 0 0a+b
sub 1 0 0 1a-b
or 0 0 1 0ou bit à bit
and 0 0 0 0et bit à bit
xor 0 0 0 1ou exclusif
nor 0 0 1 1non ou
shift 0 1 0 0décalage d'un bit,
à droite si a = 1, à gauche si a = 0
comp 1 0 1 1le bit de poids fort du résultat est à 1 si a < b et à 0 sinon

signification du champ OPCODE dans le cas des instructions de saut et de lecture/ écriture:

JUMP : 1 si instructuction de branchement (jump0, ajump0)
ABS : 1 si c'est un saut absolu
IO : 1 si instruction de lecture/ecriture (read, write)
WRIT : 1 quand IO = 1 et l'instruction est write

4. Entrées sorties

Le micro possède 32 entrées et 32 sorties d'une largeur de 16 bits auxquelles on accède grace à la mémoire d'entrées/sorties

5. Mémoire

La mémoire est divisée en trois zones :

6. Sleep et reset

L'adresse 200h est particulière : mettre à 1 le bit de poids faible provoque un reset du microprocesseur ( saut à l'adresse 0 au prochain cycle ), ce que l'on peut aussi obtenir en plaçant à 1 le bit de poids faible de l'entrée n° 0 du micro. Ecrire un 1 sur le second bit plonge le processeur dans un profond sommeil dont il ne se réveille que par un reset ; on obtient le même effet en mettant à 1 le second bit de l'entrée n°.
Rmq : Les adresses 200h + (k * 20h) qui sont dans la mémoire I/O ont le même comportement.


Sommaire Précédent Suivant