Microcontroleur - VHDL
MC-ENSL1 - Projet A
J. Villemejane - julien.villemejane@u-pec.fr
IUT Cr´eteil-Vitry D´epartement GEII Universit´e Paris-Est Cr´eteil
Ann´ee universitaire 2012-2013
Plan du cours
1 Architecture d’un microprocesseur Architecture externe
Architecture interne Traitement d’une instruction
2 S´equenceur microprogramm´e Cahier des charges Le jeu d’instruction
3 R´ealisation
4 Application autour du microprocesseur
Les p´eriph´eriques Le d´ecodage d’adresse Premier essai
M´emoire programme Second essai
Objectifs
Microcontroleur
R´ealiser l’architecture d’un microcontroleur simple en VHDL, `a l’aide d’un composant programmable de typeFPGA.
Traitement de donn´ees de 4 bits Mot m´emoire de 8 bits
8 instructions Architecture Harvard
Architecture d’un microprocesseur
Syst`eme `a microprocesseur Processeur
M´emoires
I Programme (ROM)
I Donn´ees (RAM) Entr´ee-Sorties Bus de donn´ees Bus d’adresses D´ecodeurs d’adresse
Microprocesseur
Unit´e Arithm´etique et Logique (UAL / ALU) Registres
Contrˆoleur
I Registre d’instruction
I D´ecodeur d’instruction
I S´equenceur Compteur programme
Architecture d’un microprocesseur
Syst`eme `a microprocesseur Processeur
M´emoires
I Programme (ROM)
I Donn´ees (RAM) Entr´ee-Sorties Bus de donn´ees Bus d’adresses D´ecodeurs d’adresse
Microprocesseur
Unit´e Arithm´etique et Logique (UAL / ALU) Registres
Contrˆoleur
I Registre d’instruction
I D´ecodeur d’instruction
I S´equenceur Compteur programme
Architecture d’un microprocesseur
Syst`eme `a microprocesseur Processeur
M´emoires
I Programme (ROM)
I Donn´ees (RAM) Entr´ee-Sorties Bus de donn´ees Bus d’adresses D´ecodeurs d’adresse
Microprocesseur
Unit´e Arithm´etique et Logique (UAL / ALU) Registres
Contrˆoleur
I Registre d’instruction
I D´ecodeur d’instruction
I S´equenceur Compteur programme
Architecture d’un microprocesseur
Syst`eme `a microprocesseur Processeur
M´emoires
I Programme (ROM)
I Donn´ees (RAM) Entr´ee-Sorties Bus de donn´ees Bus d’adresses D´ecodeurs d’adresse
Microprocesseur
Unit´e Arithm´etique et Logique (UAL / ALU) Registres
Contrˆoleur
I Registre d’instruction
I D´ecodeur d’instruction
I S´equenceur Compteur programme
Architecture d’un microprocesseur
Architecture externe
Architecture d’un microprocesseur
Architecture interne
ALU : Unit´e Arithm´etique et Logique (Arithmetic and Logical Unit) FPU : Unit´e de Virgule Flottante (Floating Point Unit)
S´ equenceur microprogramm´ e
Cahier des charges
On souhaite `a pr´esent r´ealiser unmicroprocesseur`a jeu d’instruction tr`es r´eduit (8 instructions) mais relativement complet dans sa structure et pouvant traiter des donn´ees de4 bits.
Le microprocesseur sera compos´e :
d’une unit´e arithm´etique et logique (addition, soustraction, logique bool´eenne)
d’un registre interne A d’un controleur/s´equenceur d’un compteur programme
Afin de pouvoir tester ce syst`eme sur la carte d’´etude, nous rajouterons : une ROM programme
des gestionnaires d’entr´ees/sorties
Le tout s’apparentera donc plutˆot `a un microcontrˆoleur.
S´ equenceur microprogramm´ e
Cahier des charges
On souhaite `a pr´esent r´ealiser unmicroprocesseur`a jeu d’instruction tr`es r´eduit (8 instructions) mais relativement complet dans sa structure et pouvant traiter des donn´ees de4 bits.
Le microprocesseur sera compos´e :
d’une unit´e arithm´etique et logique (addition, soustraction, logique bool´eenne)
d’un registre interne A d’un controleur/s´equenceur d’un compteur programme
Afin de pouvoir tester ce syst`eme sur la carte d’´etude, nous rajouterons : une ROM programme
des gestionnaires d’entr´ees/sorties
Le tout s’apparentera donc plutˆot `a un microcontrˆoleur.
S´ equenceur microprogramm´ e
Le jeu d’instruction - 1/2
instruction adr Op´erande
oc2 oc1 oc0 ad op3 op2 op1 op0
3 bits 1 bit 4 bits
Deuxmodes d’adressageseront possibles : direct op´erande fourni (cste)
bitad= 0
´etendu adresse de l’op´erande fourni (adr) bitad= 1
S´ equenceur microprogramm´ e
Le jeu d’instruction - 2/2
Le jeu d’instruction sera le suivant :
Chargement LDA#cste 0000 XXXX LDA$adr 0001 XXXX Sauvegarde STA$adr 0011 XXXX Addition ADDA#cste 0100 XXXX ADDA$adr 0101 XXXX Soustraction SUBA#cste 0110 XXXX SUBA$adr 0111 XXXX ET logique ANDA#cste 1000 XXXX ANDA$adr 1001 XXXX D´ecalage gauche ROLA#cste 1010 XXXX D´ecalage droite RORA#cste 1100 XXXX Remise `a z´ero RST#cste 1110 XXXX
S´ equenceur microprogramm´ e
Traitement d’une instruction - 1/2
Cas d’une architecture MIPS32 (microprocessor without interlocked pipeline stages)
Sur 32 bits
Dans l’application que nous allons d´evelopper, nous nous limiterons `a8 instructionset `a desop´erandes de 4 bits.
instruction adr Op´erande
oc2 oc1 oc0 ad op3 op2 op1 op0
3 bits 1 bit 4 bits
S´ equenceur microprogramm´ e
Traitement d’une instruction - 1/2
Cas d’une architecture MIPS32 (microprocessor without interlocked pipeline stages)
Sur 32 bits
Dans l’application que nous allons d´evelopper, nous nous limiterons `a8 instructionset `a desop´erandes de 4 bits.
instruction adr Op´erande
oc2 oc1 oc0 ad op3 op2 op1 op0
3 bits 1 bit 4 bits
S´ equenceur microprogramm´ e
Traitement d’une instruction - 2/2
1 FETCH:recherche l’instruction suivante dans la m´emoire, emplacement d´etermin´e par lecompteur programme;
2 DECODE:d´ecoupe l’instructionen plusieurs parties telles qu’elles puissent ˆ
etre trait´ees par d’autres ´el´ements du processeurs ;
3 EXECUTE:ex´ecute l’instructionen mettant en relation les diff´erents ´el´ements du processeur : pour une addition par exemple, les entr´ees de l’ALU seront connect´ees aux donn´ees ;
4 WRITEBACK:´ecrit le r´esultat dans des registres internes.
Certaines instructions manipulent directement le compteur de programme. Elles sont appel´ees sauts(non abord´ees ici).
S´ equenceur microprogramm´ e
Traitement d’une instruction - 2/2
1 FETCH:recherche l’instruction suivante dans la m´emoire, emplacement d´etermin´e par lecompteur programme;
2 DECODE:d´ecoupe l’instructionen plusieurs parties telles qu’elles puissent ˆ
etre trait´ees par d’autres ´el´ements du processeurs ;
3 EXECUTE:ex´ecute l’instructionen mettant en relation les diff´erents ´el´ements du processeur : pour une addition par exemple, les entr´ees de l’ALU seront connect´ees aux donn´ees ;
4 WRITEBACK:´ecrit le r´esultat dans des registres internes.
Certaines instructions manipulent directement le compteur de programme. Elles sont appel´ees sauts(non abord´ees ici).
S´ equenceur microprogramm´ e
Traitement d’une instruction - 2/2
1 FETCH:recherche l’instruction suivante dans la m´emoire, emplacement d´etermin´e par lecompteur programme;
2 DECODE:d´ecoupe l’instructionen plusieurs parties telles qu’elles puissent ˆ
etre trait´ees par d’autres ´el´ements du processeurs ;
3 EXECUTE:ex´ecute l’instructionen mettant en relation les diff´erents ´el´ements du processeur : pour une addition par exemple, les entr´ees de l’ALU seront connect´ees aux donn´ees ;
4 WRITEBACK:´ecrit le r´esultat dans des registres internes.
Certaines instructions manipulent directement le compteur de programme. Elles sont appel´ees sauts(non abord´ees ici).
S´ equenceur microprogramm´ e
Traitement d’une instruction - 2/2
1 FETCH:recherche l’instruction suivante dans la m´emoire, emplacement d´etermin´e par lecompteur programme;
2 DECODE:d´ecoupe l’instructionen plusieurs parties telles qu’elles puissent ˆ
etre trait´ees par d’autres ´el´ements du processeurs ;
3 EXECUTE:ex´ecute l’instructionen mettant en relation les diff´erents ´el´ements du processeur : pour une addition par exemple, les entr´ees de l’ALU seront connect´ees aux donn´ees ;
4 WRITEBACK:´ecrit le r´esultat dans des registres internes.
Certaines instructions manipulent directement le compteur de programme. Elles sont appel´ees sauts(non abord´ees ici).
S´ equenceur microprogramm´ e
Traitement d’une instruction - 2/2
1 FETCH:recherche l’instruction suivante dans la m´emoire, emplacement d´etermin´e par lecompteur programme;
2 DECODE:d´ecoupe l’instructionen plusieurs parties telles qu’elles puissent ˆ
etre trait´ees par d’autres ´el´ements du processeurs ;
3 EXECUTE:ex´ecute l’instructionen mettant en relation les diff´erents ´el´ements du processeur : pour une addition par exemple, les entr´ees de l’ALU seront connect´ees aux donn´ees ;
4 WRITEBACK:´ecrit le r´esultat dans des registres internes.
Certaines instructions manipulent directement le compteur de programme. Elles sont appel´ees sauts(non abord´ees ici).
S´ equenceur microprogramm´ e
Traitement d’une instruction - 2/2
1 FETCH:recherche l’instruction suivante dans la m´emoire, emplacement d´etermin´e par lecompteur programme;
2 DECODE:d´ecoupe l’instructionen plusieurs parties telles qu’elles puissent ˆ
etre trait´ees par d’autres ´el´ements du processeurs ;
3 EXECUTE:ex´ecute l’instructionen mettant en relation les diff´erents ´el´ements du processeur : pour une addition par exemple, les entr´ees de l’ALU seront connect´ees aux donn´ees ;
4 WRITEBACK:´ecrit le r´esultat dans des registres internes.
Certaines instructions manipulent directement le compteur de programme. Elles sont appel´ees sauts(non abord´ees ici).
R´ ealisation
R´ ealisation
Ce processeur sera ensuite utiliser dans le cadre d’une application simple mettant en jeu :
une ROM (pour le programme) ; deux p´eriph´eriques distincts.