Page Personnelle de Vincent Kerhoas
Vincent Kerhoas
Enseignant du Supérieur
Professeur Agrégé
Page Personnelle de Vincent Kerhoas

Lab 2 : Description d’un microcontrôleur élémentaire µ0

Back                  << Index >>

objectifs

Sources à Compléter


mu0_sources




Présentation

Rappel sur le fonctionnement de mu0 [.ppt]

Description des Composants

Multiplexeur

Un multiplexeur est un composant combinatoire permettant d’aiguiller une information.
On utilisera pour la description VHDL soit :

muxA et muxB répondent à la même description, seuls les tailles des vecteurs d’entrée et de sortie diffèrent (12 pour muxA, 16 pour muxB) La notion de généricité peut être utilisée dans ce cas.

Porte 3 états

Une porte 3 états est un composant combinatoire permettant de contrôler le forçage des niveaux logiques d’un bus.
Dans notre cas, si l’entrée oe est à ‘1’, alors l’entrée data_in sera vue sur la sortie data_out ; sinon la sortie sera à l’état haute impédance (‘Z’).

Unité Arithmétique et Logique

L’UAL est un composant combinatoire effectuant des opérations arithmétiques et logiques entre les opérandes d’entrée A et B.
L’entrée alufs permet de sélectionner le type d’opération.
Alufs appartient au type ALU_FCTS défini dans le paquetage up_pack.

Registre Accumulateur

Le registre accumulateur a pour rôle de mémoriser le résultat de l’UAL présent sur data_in lorsque load=’1’.
Ce résultat est alors visible sur data_out.
accz vaut ‘1’ quand data_out est nulle.
acc15 correspond au bit de poids fort de la donnée mémorisée.

Registre d’Instruction

Le registre IR a pour rôle de mémoriser le code de l’instruction présent sur le bus de données (entrée data_in) , lorsque ir_ld=’1’.
On tachera d’utiliser un signal interne std_logic_vector de taille 4 dans lequel seront copiés les 4 bits de poids fort du signal d’entrée, tandis que data_out sera affectés avec les 12 bits de poids faibles du signal d’entrée.
opcode (appartenant au type OPCODE défini dans le paquetage up_pack) répondra alors à l’affectation suivante (en parallèle du process synchrone) :

Registre Program Counter

Séquenceur

Instanciation de mu0

Relier les composants décrits précédemment afin de constituer le système Processeur mu0

REMARQUE : Le test de mu0 seul est inutile, il est nécessaire d’associer la mémoire à mu0.

Instanciation de mu0_mem

Instancier le processeur mu0 avec la mémoire RAM (dans laquelle est écrit le programme à exécuter) dans un composant nommé mu0_mem puis tester le fonctionnement de l’ensemble.

Modification du programme en Mémoire

Modifier le programme de la RAM pour tester l’opération de soustraction ainsi que JMP et JGE

Back                  << Index >>