40
Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole Polytechnique Fédérale de Lausanne Exemple: Un processeur 8 bits

Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Embed Size (px)

Citation preview

Page 1: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezLaboratoire de Systèmes Logiques

Ecole Polytechnique Fédérale de Lausanne

Exemple:Un processeur 8 bits

Page 2: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 2

Les processeurs

uDeux éléments sont nécessaires pour réaliser un traitement d’information:• un algorithme (séquence d’opérations)• les ressources pour exécuter l’algorithme (éléments de stockage

et de traitement)

uOn appelle processeur l’ensemble de ressources matérielles nécessaires à l’exécution d’un algorithme de traitement d’information

Page 3: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 3

uUn processeur peut toujours être décomposé en deux parties:• l’unité de contrôle (séquencement de l’algorithme)• l’unité de traitement (élément de stockage et de traitement)

entrées de contrôle entrées de données

sorties de contrôle sorties de données

signaux de contrôle

signaux de statusCK

unitéde

contrôle

unitéde

traitement

Page 4: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 4

u A chaque coup d’horloge, l’unité de contrôle doit générer tous les bits qui contrôlent les ressources de l’unité de traitement (signaux de contrôle): l’unité de contrôle est une machine séquentielle

u L’ensemble de signaux de contrôle générés par cycle d’horloge est une micro-instruction du processeur

CK

systèmelogique

combinatoirebascules

signaux de contrôle

signaux de status

entrées de contrôle

Page 5: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 5

u Le système logique combinatoire de l’unité de contrôle peut êtreréalisé de façon câblée ou programmée: on parle alors d’unité decontrôle câblée ou microprogrammée.Une unité de contrôle cablée est plus rapide que son équivalentemicroprogramée, ainsi que plus petite en surface de circuit intégré. Toutefois, une unité microprogrammée demande une conception plus simple et c’est plus facile à corriger et à modifier.

Page 6: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 6

Exemple de processeur

uConcevoir un processeur capable de compter le nombre de 1 présent dans un mot d’entrée (32 bits)

uUn algorithme possible est:

data := inportocount := 0mask := 1while data ≠ 0 repeat

temp := data and maskocount := ocount + tempdata := data >> 1

end whileoutport := ocount

Page 7: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 7

uDe l’analyse de l’algorithme découle la structure globale de l’unité de traitement:• il y a 4 variables (data, mask, ocount, temp): il faut donc 4

éléments de stockage (registres)• la seule entrée de données est formée par les 32 bits de inport• la sortie de données est formée par les 6 bits de outport• les opérations nécessaires sont: addition, and, décalage à droite,

chargement d’un registre avec une constante ou avec un autre registre, comparaison avec 0

• le seul signal de status à envoyer vers l’unité de contrôle est le résultat de la comparaison data≠0

u L’unité de contrôle aura une entrée de contrôle, start, pour indiquer le début de l’opération, et une sortie de contrôle, done, pour en indiquer la fin

Page 8: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 8

startinport

doneoutport

signaux decontrôle

CK

20

data≠0

32

6

dataocountmasktemp

shifter

comparateur

systèmelogique

combinatoirebascules

and+

reset

Page 9: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 9

Processeurs à plusieurs niveaux de langage

uSi l’on veut avoir un processeur non spécialisé, capable d’exécuter plusieurs tâches, à volonté de l’utilisateur, il faut un processeur avec un répertoire d’instructions.Chaque instruction réalise un certain traitement sur les donnéeset il est possible de programmer l’algorithme à l’aide d’une suite d’instructions

uChaque instruction est donc une tâche simple, réalisée comme unesuite de micro-instructions

u Le répertoire d’instructions constitue le langage machine du processeur ou langage d’assemblage

Page 10: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 10

uPour faciliter l’écriture du programme, il est possible d’utiliser d’autres langages, à un plus grand niveau d’abstraction que le langage machine: ce sont les langages de haut niveau, tels que Pascal, C, etc

u Le programme écrit dans un langage de haut niveau est traduit enlangage machine par un programme appelé compilateur

u Le programme en langage machine est stocké dans la mémoire de l’ordinateur et le processeur exécute (interprète) chaque instruction comme une suite de micro-instructions. Le nombre de micro-instructions par instruction est variable, selon la complexité de l’instruction

Page 11: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 11

prog

ramto

to;

var A,

B,C

: ar

ray[

1..1

000]

of i

nteg

er;

i : in

tege

r;

begi

n • • fo

ri:

=1to

1000

doC[

i] :

= A[

i] +

B[i

];• •

end.

• • MO

VE.L

#2

001,

A0

MOVE

.L #3

001,

A1

MOVE

.L #4

000,

A2

STAR

T: ABC

D -

(A0)

,-(A1)

MOVE

.B (A

1),(

A2)

TEST

: C

MPA

#

1001

,A0

BNE

STAR

T • •

COM

PILA

TEU

R

mém

oire proc

esse

ur

cont

rôle

trai

tem

ent

INTE

RPR

ETEU

R

mic

ropr

ogra

mm

e

Page 12: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 12

u Le processeur effectue sans arrêt une boucle composée de trois phases:• recherche (fetch) de l’instruction: l’adresse en mémoire de l’instruction à

exécuter est stockée en permanence dans un registre du processeur, appelé PC (Program Counter). L’instruction pointée par le PC est cherchée dans la mémoire et stockée dans un autre registre du processeur: le IR (Instruction Register)

• décodage de l’instruction (decode): chaque instruction est identifiée, grâce à un code (opcode). En fonction de ce code, le processeur choisit la tâche à exécuter, c’est-à-dire la séquence de micro-instructions à exécuter

• exécution (execute) de l’instruction: à la fin de cette phase, on retourne à la première phase

Page 13: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 13

lecture de l’instructionlecture de l’instruction

décodagedécodage

ADDADD MOVEMOVE LOADLOAD STORESTORE

initialisationinitialisation

•••••

Page 14: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 14

Structure d’un ordinateur

processeur

mémoire entrées/sorties

bus d’adresse

bus de données

bus de contrôle

séquenceurséquenceur

micromémoiremicromémoire

registresregistres

opérateursopérateurs

contrôle traitement

Page 15: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 15

MAR ← PCMDR ← M[PC]PC ← PC+1IR ← MDR

MAR ← PCMDR ← M[PC]PC ← PC+1IR ← MDR

chercher l’opérandechercher l’opérandeexécuterexécuter

PC← adresse initialePC← adresse initiale

décodification de IRdécodification de IR

opérandeopérande

Page 16: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 16

Exemple de processeur: structure générale

processeurprocesseurmémoire

dedonnées

mémoirede

données

mémoired’instructions

mémoired’instructions

bus de donnéesbus d’adressebus de contrôle

reset

CLK

1611

8 16

Page 17: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 17

Bus de contrôle

mémoired’instructions

mémoired’instructions

mémoirede

données

mémoirede

données

bus d’adressebus de donnéesbus de contrôle

ADR

DATA

ADR

DATA

CER/W

CER/W

RWM RWM

MEMI MEMD

816

Page 18: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 18

Répertoire d’instructions

LOAD Rd,adr Rd ← M[adr]

STORE adr,Rs M[adr] ← Rs

MOVE Rd,Rs Rd ← Rs

SUB Rd,Rs1,Rs2 Rd ← Rs1 - Rs2

ADD Rd,Rs1,Rs2 Rd ← Rs1 + Rs2

CMP Rs1,Rs2 flag ← Rs1 - Rs2

BR offset if flag then PC ← PC + offset

JMP offset PC ← PC + offset

Page 19: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 19

Format des instructions

LOAD Rd,adr

JMP offset

BR offset

CMP Rs1,Rs2

ADD Rd,Rs1,Rs2

SUB Rd,Rs1,Rs2

MOVE Rd,Rs

STORE adr,Rs

Rd adr0 0 001011121315

Rs adr0 0 101011121315

Rd Rs0 1 001011121315 9 8

Ø

Rd Rs1 Rs20 1 101011121315 9 8 7 6

Ø

Rd Rs1 Rs21 0 001011121315 9 8 7 6

Ø

offset1 1 001011121315

Ø

offset1 1 101011121315

Ø

Rs1 Rs21 0 1 ØØ

01011121315 9 8 7 6

Page 20: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 20

IR ← M[PC]PC ← PC+1

R[IR[12..11]] ← M[IR[10..0]]

M[IR[10..0]] ← R[IR[12..11]]

R[IR[12..11]] ← R[IR[10..9]]R[IR[12..11]] ← R[IR[10..9]]-R[IR[8..7]]

R[IR[12..11]] ← R[IR[10..9]]+R[IR[8..7]]flag ← R[IR[10..9]]-R[IR[8..7]]

if flag then PC ← PC+IR[10..0]

PC ← PC+IR[10..0]

reset

decode

Page 21: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 21

Structure du processeur

unitéde

contrôle

unitéde

contrôle

bus de donnéesbus d’adressebus de contrôle

reset

CLK

16 11

unitéde

traitement

unitéde

traitement

Page 22: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 22

Unité de traitementbus de données

bus d’adresse

registresregistres

flag

flag

PCPC IRIR

ALU

0

AWAAABR/WCLK

CLK

INREG

INALU

LDFLAGFLAG

OEPC OEIR

OPALU

LDIR

SELPC

OEALU

CLK

OPCODE(IR[15..13])

IR[10..0]

IR[10..0]

IR[12..11]

IR[8..7]

IR[12..11]

IR[10..9]

SELAA

RWREG LDPCRESET

CLK

[7..0][7..0]

+

1

A B

0 1

0 1

0 1

0

1

Page 23: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 23

PCPCLDPCRESET

OEPC

CLK

IRIR LDIR

IR ← M[PC]

bus de données

bus d’adresse

Page 24: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 24

PCPCLDPCRESET

OEPC

CLK

IRIR LDIR

+

1

PC ← PC + 1

bus de données

bus d’adresse

Page 25: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 25

OPCODE(IR[15..13])

PCPCLDPCRESET

OEPC

CLK

IRIR LDIR

+

DECODE

1

bus de données

bus d’adresse

Page 26: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 26

registrosregistros

AWAAABLOADCLKCLK

IR[12..11]

IR[8..7]

RWREG

[7..0]

A B

OEIR

IR[10..0]

OPCODE(IR[15..13])

PCPCLDPCRESET

OEPC

CLK

IRIR LDIR

+

LOAD

1

bus de données

bus d’adresse

Page 27: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 27

registrosregistros

AWAAABLOADCLKCLK

IR[12..11]

IR[8..7]

RWREG

[7..0]

A B

OEIR

IR[10..0]

OPCODE(IR[15..13])

PCPCLDPCRESET

OEPC

CLK

IRIR LDIR

+

[7..0]

STORE

1

bus de données

bus d’adresse

Page 28: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 28

registrosregistros

AWAAABLOADCLK

INREG

OEALU

CLK

IR[12..11]

IR[8..7]

RWREG

[7..0]

A B

0 1

OEIR

IR[10..0]

OPCODE(IR[15..13])

PCPCLDPCRESET

OEPC

CLK

IRIR LDIR

+

[7..0]

MOVE

1

bus de données

bus d’adresse

Page 29: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 29

Unité de contrôle

unitéde

contrôle

unitéde

contrôle

unitéde

traitement

unitéde

traitement

reset

CLK

RWREGSELAA

OPALUINALU

INREG

OEALU

LDPCLDFLAG

FLAGOEPC

SELPCOEIRLDIR

OPCODE

MEMIMEMD

RWM

Page 30: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 30

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;

package procpack is-------------------

component controleurport (clk, reset : in std_logic;

flag : in std_logic;opcode : in std_logic_vector(2 downto 0);rwm, memi, memd : out std_logic;rwreg, selaa, inreg, opalu, inalu, oealu, ldflag, ldpc,selpc, oeir, ldir, oepc : out std_logic);

end component;

component traitementport (clk, reset : in std_logic;

rwreg, selaa, inreg, opalu, inalu, oealu, ldflag, ldpc,selpc, oeir, ldir, oepc : in std_logic;flag : out std_logic;opcode : out std_logic_vector(2 downto 0);busadresse : out std_logic_vector(10 downto 0);busdonnees : inout std_logic_vector(15 downto 0));

end component;

Page 31: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 31

component registresport (clk : in std_logic;

entreebus, entreealu : in std_logic_vector(7 downto 0);a, b : out std_logic_vector(7 downto 0);aw, aa, ab : in std_logic_vector(1 downto 0);inreg, rw, selaa : in std_logic);

end component;

component pcport (clk, reset : in std_logic;

ldpc, selpc : in std_logic;entreepc : in std_logic_vector(10 downto 0);sortiepc : out std_logic_vector(10 downto 0));

end component;

component irport (clk : in std_logic;

ldir : in std_logic;entreeir : in std_logic_vector(15 downto 0);sortieir : out std_logic_vector(15 downto 0));

end component;

Page 32: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 32

component aluport (clk : in std_logic;

inalu, opalu, ldflag : in std_logic;flag : out std_logic;entreea, entreeb : in std_logic_vector(7 downto 0);resultat : out std_logic_vector(7 downto 0));

end component;

component memdataport (adr : in std_logic_vector(10 downto 0);

data : inout std_logic_vector(7 downto 0);ce, rw : in std_logic);

end component;

component meminstrport (adr : in std_logic_vector(10 downto 0);

data : inout std_logic_vector(15 downto 0);ce, rw : in std_logic);

end component;

end procpack;

Page 33: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 33

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;

use work.procpack.all;

entity traitement is--------------------

port (clk, reset : in std_logic;rwreg, selaa, inreg, opalu, inalu, oealu, ldflag, ldpc,selpc, oeir, ldir, oepc : in std_logic;flag : out std_logic;opcode : out std_logic_vector(2 downto 0);busadresse : out std_logic_vector(10 downto 0);busdonnees : inout std_logic_vector(15 downto 0));

end traitement;

Page 34: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 34

architecture synt of traitement is----------------------------------

signal sortieir : std_logic_vector(15 downto 0);signal sortiepc : std_logic_vector(10 downto 0);signal resultatalu : std_logic_vector(7 downto 0);signal rega, regb : std_logic_vector(7 downto 0);

begina: registres port map (clk, busdonnees(7 downto 0), resultatalu, rega, regb,

sortieir(12 downto 11), sortieir(10 downto 9),sortieir(8 downto 7), inreg, rwreg, selaa);

b: alu port map (clk, inalu, opalu, ldflag, flag,rega, regb, resultatalu);

c: pc port map (clk, reset, ldpc, selpc, sortieir(10 downto 0), sortiepc);d: ir port map (clk, ldir, busdonnees, sortieir);opcode <= sortieir(15 downto 13);busadresse <= sortieir(10 downto 0) when oeir='1' else

sortiepc when oepc='1' else(others => 'Z');

busdonnees <= ("00000000" & resultatalu) when oealu='1' else(others => 'Z');

end synt;

Page 35: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 35

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;

use work.procpack.all;

entity processeur is--------------------

port (clk, reset : in std_logic;busadresse : out std_logic_vector(10 downto 0);busdonnees : inout std_logic_vector(15 downto 0);rwm, memi, memd : out std_logic);

end processeur;

architecture synt of processeur is----------------------------------

signal rwreg, selaa, inreg, opalu, inalu, oealu, ldflag, ldpc,selpc, oeir, ldir, oepc, flag : std_logic;

signal opcode : std_logic_vector(2 downto 0);

begina: controleur port map (clk, reset, flag, opcode, rwm, memi, memd,

rwreg, selaa, inreg, opalu, inalu, oealu, ldflag, ldpc,selpc, oeir, ldir, oepc);

b: traitement port map (clk, reset, rwreg, selaa, inreg, opalu, inalu, oealu,ldflag, ldpc, selpc, oeir, ldir, oepc, flag, opcode,busadresse, busdonnees);

end synt;

Page 36: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 36

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;

use work.procpack.all;

entity systeme is-----------------

port (clk, reset : in std_logic;busadresse : out std_logic_vector(10 downto 0);busdonnees : inout std_logic_vector(15 downto 0);rwm, memi, memd : out std_logic);

end systeme;

Page 37: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 37

architecture synt of systeme is-------------------------------

signal ba : std_logic_vector(10 downto 0);signal rw, mi, md : std_logic;component processeur

port (clk, reset : in std_logic;busadresse : out std_logic_vector(10 downto 0);busdonnees : inout std_logic_vector(15 downto 0);rwm, memi, memd : out std_logic);

end component;begin

a: processeur port map (clk, reset, ba, busdonnees, rw, mi, md);b: memdata port map (ba, busdonnees(7 downto 0), md, rw);c: meminstr port map (ba, busdonnees, mi, rw);busadresse <= ba;rwm <= rw;memi <= mi;memd <= md;

end synt;

Page 38: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 38

Programme de test

LOAD R0,M[0] 000 0000LOAD R1,M[1] 001 0801ADD R2,R0,R1 002 9080SUB R3,R0,R1 003 7880SUB R0,R0,R0 004 6000

L1: SUB R2,R2,R3 005 7580CMP R2,R0 006 A400BRANCH L2 007 C001JMP L1 008 E7FC

L2: JMP L2 009 E7FF

000 04001 03

mémoire d’instructions:

mémoire de données:

Page 39: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 39

architecture synt of meminstr is--------------------------------

type memitype is array(31 downto 0) of std_logic_vector(15 downto 0);signal memoirei : memitype := (0 => "0000000000000000", 1 => "0000100000000001",

2 => "1001000010000000", 3 => "0111100010000000",4 => "0110000000000000", 5 => "0111010110000000",6 => "1010010000000000", 7 => "1100000000000001",8 => "1110011111111100", 9 => "1110011111111111",others => "0000000000000000");

signal adrint : std_logic_vector(4 downto 0);signal outint : std_logic_vector(15 downto 0);signal ceint : std_logic;

beginadrint <= adr(4 downto 0);ceint <= '1' when (ce='1' and conv_integer(adr)<=31) else

'0';process (rw, ceint, adrint, data)begin

outint <= memoirei(conv_integer(adrint));if rw='0'

then if ceint='1'then memoirei(conv_integer(adrint)) <= data;

end if;end if;

end process;data <= outint when (ceint='1' and rw='1') else

(others => 'Z');end synt;

Page 40: Exemple: Un processeur 8 bits - Welcome to the Logic ...lsl · Eduardo Sanchez Page 2 Ecole Polytechnique Fédérale de Lausanne Les processeurs uDeux éléments sont nécessaires

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 40

architecture synt of memdata is-------------------------------

type memdtype is array(31 downto 0) of std_logic_vector(7 downto 0);signal memoired : memdtype := (0 => "00000100", 1 => "00000011",

others => "00000000");signal adrint : std_logic_vector(4 downto 0);signal outint : std_logic_vector(7 downto 0);signal ceint : std_logic;

beginadrint <= adr(4 downto 0);ceint <= '1' when (ce='1' and conv_integer(adr)<=31) else

'0';process (rw, ceint, adrint, data)begin

outint <= memoired(conv_integer(adrint));if rw='0'

then if ceint='1'then memoired(conv_integer(adrint)) <= data;

end if;end if;

end process;data <= outint when (ceint='1' and rw='1') else

(others => 'Z');end synt;