Sei sulla pagina 1di 8

O Z80: Exemplo de um

microprocessador de 8 bits

Arquitectura do Z80
Barramento de dados (8 bit)

A abordagem ao microprocessador Z80


tem por objectivos principais:

Descod.
e
controlo

Analisar uma arquitectura com boas


caractersticas pedaggicas e inmeras
aplicaes aos longo dos (muitos) anos
Relacionar a arquitectura do microprocessador
com os elementos exteriores necessrios
implementao de um pequeno sistema
1

Z80: Configurao de pinos

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

Registos
do CPU
Sinais de controlo
(internos)

ALU

Controlo
de endereos

Barramento de endereos (16 bit)

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

/M1
Controlo /MREQ
/IORQ
do
/RD
sistema
/WR
/RFSH
/HALT
Controlo /WAIT
do
/INT
CPU
/NMI
/RESET

Sinais de
controlo
do CPU e
sistema

Controlo
barr. dados

Reg. de
instruo

Barramento
de dados (8)
Controlo do
/BUSRQ
barramento
/BUSAK
do CPU
Clock

Vcc

Z80: Configurao de pinos

Barramento de
endereos (16)

Z80
CPU

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

Gnd
3

A11
A12
A13
A14
A15
CLK
D4
D3
D5
D6
+5 V (Vcc)
D2
D7
D0
D1
/INT
/NMI
/HALT
/MREQ
/IORQ

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21

A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
0 V (Gnd)
/RFSH
/M1
/RESET
/BUSRQ
/WAIT
/BUSAK
/WR
/RD

Leitura de um cdigo de
instruo
T1

T2

T3

Leitura de um operando
T1

T4

T2

T3

T4

250 ns

250 ns

CLOCK

CLOCK
Endereo vlido

A[0:15]

Endereo vlido

A[0:15]

/MREQ

/MREQ

/RD

/RD
mn. 50 ns

/M1

D[0:7]

mn. 35 ns

D[0:7]

250 ns

Dados
vlidos

mn. 30 ns

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

Ciclo de escrita em memria


T1

T2

T3

Dados
vlidos

mx. 75 ns

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

Ciclo de acesso a E/S


T1

T4

T2

T3

T4

250 ns

250 ns

CLOCK

CLOCK
Endereo vlido

A[0:7]

Endereo vlido

A[0:15]

/IORQ
/RD

/MREQ

mn. 50 ns

mn. 220 ns

/WR
mn. 80 ns
D[0:7]

D[0:7]

mn. 60 ns

mx. 80 ns

/WR
mn. 30 ns

Dados no barramento
D[0:7]

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

Dados
vlidos

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

mn. 60 ns
Dados no barramento

Interrupes no Z80

Atendimento das interrupes

Quando o Z80 aceita um pedido de


interrupo pra temporariamente o que
est a fazer para o atender
/NMI: Permite o pedido de interrupes no
mascarveis
/INT: Os pedidos de interrupo neste pino
sero atendidos se o programador o
permitir
FEUP / LEEC MP (2000 / 2001)
J. M. Martins Ferreira

SP e stack quando atendida


uma interrupo

(Antes)

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

Endereos
decrescentes

PCH
PCL
Indefinido

Ao concluir-se o
atendimento da
interrupo retoma-se
a execuo do
programa principal

(continuao
do
programa)

Execuo do programa
principal
Ao ser aceite um pedido
de interrupo
suspende-se a execuo
do programa principal,
que temporariamente
substitudo pela rotina
de atendimento da
interrupo

Cd. instruo
Operando

reti

Rotina de atendimento
da interrupo (termina
com a instruo de retorno)

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

10

Pedidos de interrupo em
/NMI
O pedido de interrupo em /NMI (activo
transio descendente) fora a execuo
da rotina de atendimento, que ter que
comear no endereo 0066H
Esta rotina dever terminar com a instruo
RETN, que garante a manuteno do
estado imediatamente anterior ao pedido
ser aceite

(SP)
Indefinido
Indefinido
Indefinido

Cd. instruo
Operando
Cd. instruo
Operando

(SP)

(Depois)

11

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

12

Pedidos de interrupo em
/INT

Permitir / inibir pedidos em


/INT

O pedido em /INT activo ao nvel lgico 0, pode


ser atendido nos modos 0, 1 ou 2 (ou ignorado) e
o retorno deve ser feito com RETI
No modo 0 dever ser forado no barramento de
dados uma instruo de restart
No modo 1 tem lugar um salto para a rotina de
atendimento com incio em 0038H
No modo 2 o endereo ser dado pelo registo I (MSB)
e pelo barramento de dados (LSB)
FEUP / LEEC MP (2000 / 2001)
J. M. Martins Ferreira

13

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

14

Modelo de programao do
Z80

RETN e RETI
Durante o atendimento a /NMI deve suspenderse o atendimento a /INT, para evitar que uma
interrupo de baixa prioridade possa sobreporse a uma de alta prioridade
O processo de atendimento a /NMI copia IFF1
para IFF2 e coloca IFF1 em 0, pelo que o valor
de IFF1 deve ser reposto no fim (e por isso o
retorno de /NMI difere do de /INT)
FEUP / LEEC MP (2000 / 2001)
J. M. Martins Ferreira

As instrues EI (enable interrupts) e DI


(disable interrupts) permitem / inibem o
atendimento de interrupes no pino /INT
O Z80 dispe de um flip-flop interno (IFF1),
onde armazena a informao sobre a
permisso ou inibio do atendimento a /INT
Existe ainda um outro flip-flop deste tipo (IFF2),
usado durante o atendimento em /NMI

15

O modelo de programao do Z80 pode


representar-se por um diagrama de blocos que
inclui os registos e as flags de um
microprocessador
Esta informao permite-nos o desenvolvimento
de programas, mesmo que no conheamos a
evoluo temporal dos sinais nos pinos ou
outros detalhes de funcionamento
FEUP / LEEC MP (2000 / 2001)
J. M. Martins Ferreira

16

Modelo de programao do
Z80
8 bit

8 bit

A
B
D
H

F
C
E
L

8 bit
A
B
D
H

O registo das flags

8 bit

8 bit

8 bit

F
C
E
L

A
B
D
H

F
C
E
L

16 bit
Stack pointer
Program counter
IY index register
IX index register
I
R

Alternate
Apontador para a pilha
register set
Apontador de programa
(conjunto
IX e IY so usados com
alternativo
endereamento indexado
de registos)

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

17

Modos de endereamento

S Z

P/ N C
V
Y

P/V: parity / overflow conforme o tipo de instruo


N: indica se a ltima operao foi
uma adio ou uma subtraco
CY: activa quando h transporte
para alm do bit 7

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

18

Modos de endereamento

Imediato (immediate) - LD A,$FF / 3E FF


Imediato estendido (immediate extended) LD HL,1000H / 21 00 10
Pgina zero modificado (modified page
zero) - RST 00H / C7
Relativo (relative) - JR Z,MARCA / 28 05
Estendido (extended) - LD HL,(1000H) /
2A 00 10
FEUP / LEEC MP (2000 / 2001)
J. M. Martins Ferreira

S: sign - activa quando


o bit mais significativo
do resultado 1
Z: zero - activa quando
o resultado da
instruo tem o valor 0

H: half-carry - activa quando


h transporte do bit 3 para o 4

19

Indexado (indexed) - LD C,(IX) / DD 4E 00


Ao registo (register) - LD A,B / 78
Indirecto por registo (register indirect) LD A,(BC) / 0A
Implcito (implied) - CPL / 2F
Ao bit (bit) - BIT 3,(IX+7FH) / DD CB 7F
5E
FEUP / LEEC MP (2000 / 2001)
J. M. Martins Ferreira

20

Tipos de instrues

Tipos de instrues

Transferncia de dados de 8 bits (8-bit


load) - LD A,B / 78
Transferncia de dados de 16 bits (16-bit
load) - LD HL,1000H / 21 00 10
Troca, transferncia de blocos e pesquisa
em blocos (exchange, block transfer, block
search) - EX DE,HL / EB

Aritmticas e lgicas para dados de 8 bits


(8-bit arithmetic and logical) ADD A,(IY+10H) / FD 86 10
Genricas do tipo aritmtico e para controlo
do CPU (general-purpose arithmetic and
CPU control) - CCF / 3F
Aritmticas para dados de 16 bits (16-bit
arithmetic) - ADC HL,DE / ED 5A

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

21

22

Apresentao de um pequeno
sistema de apoio laboratorial

Tipos de instrues
Rotao / deslocamento (rotate / shift)- RLA / 17
Manipulao ao bit (bit set, reset and test) - BIT
5,A / CB 6F
Salto (jump) - JP 20FFH / C3 FF 20
Chamada de subrotinas e retorno (call and return)
- CALL 1000H / CD 00 10
Entrada e sada (input and output) IN A,(7FH) / DB 7F
FEUP / LEEC MP (2000 / 2001)
J. M. Martins Ferreira

23

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

24

U1
27

Disposio dos componentes

MREQ
IORQ
WR
RD

VCC
28
2K2
2
R2 2K2
2
R3 2K2
2 /INT
2 /NMI
R4 2K2
/RESET
R5 2K2
2

REFSH

R1

1
1
1
1

VCC

18

HALT

24

WAIT

16
17

INT
NMI

26

RESET

25
23

D0
D1
D2
D3
D4
D5
D6
D7

BUSRQ
BUSAK

CLK

A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15

M1

19
20
22
21

/MREQ
/IOREQ
/WR
/RD

CLK

1
C1
100n

30
31
32
33
34
35
36
37
38
39
40
1
2
3
4
5

A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15

14
15
12
8
7
9
10
13

D0
D1
D2
D3
D4
D5
D6
D7

U2
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14

10
9
8
7
6
5
4
3
25
24
21
23
2
26
1

/M_CS
/WR
/RD

20
27
22

U3

A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14

11
12
13
15
16
17
18
19

Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

D0
D1
D2
D3
D4
D5
D6
D7

1
2
3
4
5
6
7
8
9
10
11
13

CLK
/MREQ
/IOREQ
A15
A7
A6
KEY0
KEY1
KEY2
KEY3
/WR
/RD

VCC

I1/CLK
I2
I3
I4
I5
I6
I7
I8
I9
I10
I11
I12

23
22
21
20
19
18
17
16
15
14

O1
O2
O3
O4
O5
O6
O7
O8
O9
O10

D3
D2
D1
D0
OUT3
OUT2
OUT1
OUT0
DA_CS
/M_CS

VCC
1
2

JP1

22V10
1
2

CE
WE
OE

GND
VCC
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

C2
100n

DS1230Y
VCC
R10
1
1
2

1
3
5
7
9
11
13
15
17
19

2K49

C5
100n

Z80

C3
100n

OUT0
OUT1
OUT2
OUT3
KEY0
KEY1
KEY2
KEY3
/NMI
/INT

2
4
6
8
10
12
14
16
18
20

CONECTOR

VEE

Y1
1

U4A

U4F
2

13

12

CLK

1
C8
2 100p

74HCT14
R13
2

1K

74HCT14
R14
2

D0
D1
D2
D3
D4
D5
D6
D7

3
4
7
8
13
14
17
18

DA_CS

1
11

1K

VCC

1
3

U5

4MHz

D0
D1
D2
D3
D4
D5
D6
D7

2
5
6
9
12
15
16
19

Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

B8
B7
B6
B5
B4
B3
B2
B1

14

OC
G

VCC

12
11
10
9
8
7
6
5

15

D1
1N4148

S1

U4E
6

11

10

V
-

VLC

74HCT14

1
2

VCC

U4B

U4D

VCC

VCC

VCC

VCC

R18
2

R19
2K2

R20
2K2
2

2
74HCT14

KEY0

KEY1

R21
2K2

R25
1
D2
LED_0

2
VCC

VCC
VDD
VEE

1
2

ALIMENTACAO

C4
100n

S2
KEY0

S3
KEY1

S4
KEY2

Os endereos atribudos a cada bloco


presente esto ilustrados na tabela
seguinte:
IORQ

A15

A7

A6

Acesso seleccionado

0 (1)

1 (0)

Memria

Sada analgica

Sadas digitais

Entradas digitais

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

D5
LED_3
Q1
BC547
2
1

R27
390R

1
R23
390R

2
S5
KEY3

R24
390R

22

OUT3 1

2
OUT0

2
1

R26

Q2
BC547
3

10K

OUT1

SITEMA Z80 - SD2

1
Document Number

A
Date:

REV
JMF / HCM

December 12, 1995

1.0
Sheet

of

26

PAL de descodificao:
Equaes

Descodificao do sistema

MREQ

22
10K

Size

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

OUT2 1
D3
LED_1

R22
2K2

KEY3

VCC
JP2

2
1

2
KEY2

VCC

2
2K2
74HCT14

+5V
+12V
-12V
GND

VCC
R28
390R

2K2

WR

D4
LED_2
2
1

74HCT14

C9
4u7

R17

RD

R9
10K

VCC

25

2
10K

C6
100n

VCC

VCC

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

1
1

VCC
VEE

1
2
3
4

C7
100n

VCC

R15
1K

R8
VDD

/RESET

RESET

TL082

VEE
5

7
6

16

COMP

J1
SAIDA

TL082

DAC0800
R12
4K99

1
3
2

IOUT

1
U4C

U7B

U7A

V IOUT
+

VR-

1
R11
2K49

2
R16
10K

VR+

74LS373
1

U6

27

+L 64
C 1
IAW
123k
*d:\palasm\examples\z80jmf.pds
+

EQUATIONS

/MEM_CS = /MREQ*IORQ*/A15

DA_CS = MREQ*/IORQ*/WR*RD*/A7*A6

OUT0 := (MREQ*/IORQ*/WR*RD*A7*/A6)*D0 + /(MREQ*/IORQ*/WR*RD*A7*/A6)*OUT0

OUT1 := (MREQ*/IORQ*/WR*RD*A7*/A6)*D1 + /(MREQ*/IORQ*/WR*RD*A7*/A6)*OUT1

OUT2 := (MREQ*/IORQ*/WR*RD*A7*/A6)*D2 + /(MREQ*/IORQ*/WR*RD*A7*/A6)*OUT2

OUT3 := (MREQ*/IORQ*/WR*RD*A7*/A6)*D3 + /(MREQ*/IORQ*/WR*RD*A7*/A6)*OUT3

D0.TRST = MREQ*/IORQ*WR*/RD*A7*A6

D1.TRST = MREQ*/IORQ*WR*/RD*A7*A6

0
D
1
D2.TRST = MREQ*/IORQ*WR*/RD*A7*A6

D3.TRST = MREQ*/IORQ*WR*/RD*A7*A6

D0 = KEY0

D1 = KEY1

D2 = KEY2

D3 = KEY3

+------------------------------------------------------------------------------+
FEUP / LEEC MP (2000 / 2001)
J. M. Martins Ferreira
28

Exemplo de aplicao

Gerao do cdigo objecto

O exemplo de aplicao que aqui se ilustra


corresponde a uma situao simples que
gera uma onda em dente de serra

A passagem deste cdigo em assembly pelo


cross-assembler gera o seguinte ficheiro .lst:

inicio

.org

0h

; posiciona o codigo a partir de 0000

saida

.equ

40h

; endereco do conversor D/A

inicio
ciclo

ld
out
inc
jp

a,$00
(saida),a
a
ciclo

;
;
;
;

comeca com o valor minimo


escreve no D/A (saida analogica)
incrementa o valor para o D/A
repete o ciclo escreve / incrementa

.end

0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012

0000
0000
0000
0000
0000
0000
0002
0004
0005
0008
0008
0008

3E 00
D3 40
3C
C3 02 00

inicio

.org

0h

saida

.equ

40h

inicio
ciclo

ld
out
inc
jp

a,$00
(saida),a
a
ciclo

.end

tasm: Number of errors = 0


FEUP / LEEC MP (2000 / 2001)
J. M. Martins Ferreira

29

Execuo do cdigo
A execuo do cdigo objecto gerado
produz a seguinte forma de onda:

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

31

FEUP / LEEC MP (2000 / 2001)


J. M. Martins Ferreira

30