• Nenhum resultado encontrado

O Z80: Exemplo de um microprocessador de 8 bits. Arquitectura do Z80. Z80: Configuração de pinos. Z80: Configuração de pinos

N/A
N/A
Protected

Academic year: 2021

Share "O Z80: Exemplo de um microprocessador de 8 bits. Arquitectura do Z80. Z80: Configuração de pinos. Z80: Configuração de pinos"

Copied!
8
0
0

Texto

(1)

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

1

O Z80: Exemplo de um

microprocessador de 8 bits

• A abordagem ao microprocessador Z80

tem por objectivos principais:

– Analisar uma arquitectura com boas

características pedagógicas e inúmeras

aplicações aos longo dos (muitos) anos

– Relacionar a arquitectura do microprocessador

com os elementos exteriores necessários à

implementação de um pequeno sistema

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

2

Arquitectura do Z80

Barramento de endereços (16 bit)

ALU

Controlo

barr. dados

Descod.

e

controlo

Reg. de

instrução

Controlo

de endereços

Registos

do CPU

Sinais de controlo

(internos)

Barramento de dados (8 bit)

Sinais de

controlo

do CPU e

sistema

FEUP / LEEC – MP (2000 / 2001)

Z80: Configuração de pinos

Barramento de

endereços (16)

Barramento

de dados (8)

/BUSRQ

/BUSAK

Clock

Vcc

Gnd

/RESET

/NMI

/INT

/WAIT

/HALT

/RFSH

/WR

/RD

/IORQ

/MREQ

/M1

Controlo

do

sistema

Controlo

do

CPU

Controlo do

barramento

do CPU

Z80

CPU

FEUP / LEEC – MP (2000 / 2001)

Z80: Configuração de pinos

A11

A12

A13

A14

A15

CLK

D4

D3

D5

D6

+5 V (Vcc)

D2

D7

D0

D1

/INT

/NMI

/HALT

/MREQ

/IORQ

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

(2)

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

5

Leitura de um código de

instrução

CLOCK

A[0:15]

/MREQ

/RD

/M1

D[0:7]

T1

T2

T3

T4

Endereço válido

Dados

válidos

250 ns

mín. 35 ns

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

6

Leitura de um operando

CLOCK

A[0:15]

/MREQ

/RD

D[0:7]

T1

T2

T3

T4

Endereço válido

Dados

válidos

250 ns

mín. 50 ns

250 ns

mín. 30 ns

máx. 75 ns

Ciclo de escrita em memória

CLOCK

A[0:15]

/MREQ

/WR

T1

T2

T3

T4

Endereço válido

Dados no barramento

250 ns

mín. 220 ns

mín. 80 ns

mín. 60 ns

Ciclo de acesso a E/S

CLOCK

A[0:7]

/IORQ

/WR

T1

T2

T3

T4

Endereço válido

250 ns

/RD

D[0:7]

Dados

válidos

mín. 50 ns

máx. 80 ns

mín. 60 ns

mín. 30 ns

(3)

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

9

Interrupções no Z80

• Quando o Z80 aceita um pedido de

interrupção pára temporariamente o que

está a fazer para o atender

• /NMI: Permite o pedido de interrupções não

mascaráveis

• /INT: Os pedidos de interrupção neste pino

serão atendidos se o programador o

permitir

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

10

Atendimento das interrupções

Cód. instrução

Operando

Cód. instrução

Operando

Cód. instrução

Operando

reti

(continuação

do

programa)

Rotina de atendimento

da interrupção (termina

com a instrução de retorno)

Execução do programa

principal

Ao ser aceite um pedido

de interrupção

suspende-se a execução

do programa principal,

que é temporariamente

substituído pela rotina

de atendimento da

interrupção

Ao concluir-se o

atendimento da

interrupção retoma-se

a execução do

programa principal

FEUP / LEEC – MP (2000 / 2001)

SP e stack quando é atendida

uma interrupção

Indefinido

Indefinido

Indefinido

(SP)

PC

H

PC

L

Indefinido

(SP)

(Antes)

(Depois)

Endereços

decrescentes

FEUP / LEEC – MP (2000 / 2001)

Pedidos de interrupção em

/NMI

• O pedido de interrupção em /NMI (activo à

transição descendente) força a execução

da rotina de atendimento, que terá que

começar no endereço 0066H

• Esta rotina deverá terminar com a instrução

RETN, que garante a manutenção do

estado imediatamente anterior ao pedido

ser aceite

(4)

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

13

Pedidos de interrupção em

/INT

• O pedido em /INT é activo ao nível lógico 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 forçado no barramento de

dados uma instrução de restart

– No modo 1 tem lugar um salto para a rotina de

atendimento com início em 0038H

– No modo 2 o endereço será dado pelo registo I (MSB)

e pelo barramento de dados (LSB)

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

14

Permitir / inibir pedidos em

/INT

• As instruções EI (enable interrupts) e DI

(disable interrupts) permitem / inibem o

atendimento de interrupções no pino /INT

• O Z80 dispõe de um flip-flop interno (IFF1),

onde armazena a informação sobre a

permissão ou inibição do atendimento a /INT

• Existe ainda um outro flip-flop deste tipo (IFF2),

usado durante o atendimento em /NMI

RETN e RETI

• Durante o atendimento a /NMI deve

suspender-se o atendimento a /INT, para evitar que uma

interrupção de baixa prioridade possa

sobrepor-se 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)

Modelo de programação do

Z80

• O modelo de programação do Z80 pode

representar-se por um diagrama de blocos que

inclui os registos e as flags de um

microprocessador

• Esta informação permite-nos o desenvolvimento

de programas, mesmo que não conheçamos a

evolução temporal dos sinais nos pinos ou

outros detalhes de funcionamento

(5)

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

17

Modelo de programação do

Z80

A

F

B

C

D

E

H

L

A’

F’

B’

C’

D’

E’

H’

L’

Stack pointer

Program counter

IY index register

IX index register

I

R

16 bit

8 bit

8 bit

8 bit

8 bit

Apontador para a pilha

Apontador de programa

IX e IY são usados com

endereçamento indexado

Alternate

register set

(conjunto

alternativo

de registos)

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

18

O registo das flags

A

F

B

C

D

E

H

L

8 bit

8 bit

S

Z

H

P/

V

N C

Y

S: sign - activa quando

o bit mais significativo

do resultado é 1

Z: zero - activa quando

o resultado da

instrução tem o valor 0

P/V: parity / overflow

-conforme o tipo de instrução

N: indica se a última operação foi

uma adição ou uma subtracção

CY: activa quando há transporte

para além do bit 7

H: half-carry - activa quando

há transporte do bit 3 para o 4

FEUP / LEEC – MP (2000 / 2001)

Modos de endereçamento

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

• Imediato estendido (immediate extended)

-LD HL,1000H / 21 00 10

• Página 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)

Modos de endereçamento

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

• Ao registo (register) - LD A,B / 78

• Indirecto por registo (register indirect)

-LD A,(BC) / 0A

• Implícito (implied) - CPL / 2F

• Ao bit (bit) - BIT 3,(IX+7FH) / DD CB 7F

5E

(6)

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

21

Tipos de instruções

• Transferência de dados de 8 bits (8-bit

load) - LD A,B / 78

• Transferência de dados de 16 bits (16-bit

load) - LD HL,1000H / 21 00 10

• Troca, transferência de blocos e pesquisa

em blocos (exchange, block transfer, block

search) - EX DE,HL / EB

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

22

Tipos de instruções

• Aritméticas e lógicas para dados de 8 bits

(8bit arithmetic and logical)

-ADD A,(IY+10H) / FD 86 10

• Genéricas do tipo aritmético e para controlo

do CPU (general-purpose arithmetic and

CPU control) - CCF / 3F

• Aritméticas para dados de 16 bits (16-bit

arithmetic) - ADC HL,DE / ED 5A

Tipos de instruções

• Rotação / deslocamento (rotate / shift)- RLA / 17

• Manipulação 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 saída (input and output)

-IN A,(7FH) / DB 7F

Apresentação de um pequeno

sistema de apoio laboratorial

(7)

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

25

Disposição dos componentes

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

Date: December 12, 1995 Sheet 1 of 1

26

Size Document Number REV A JMF / HCM 1.0 SITEMA Z80 - SD2 1 2C3100n VCC OUT3 OUT2 OUT1 D3 D2 D1 D0 I1/CLK 1 I2 2 I3 3 I4 4 I5 5 I6 6 I7 7 I8 8 I9 9 I10 10 I11 11 I12 13 O1 23 O2 22 O3 21 O4 20 O5 19 O6 18 O7 17 O8 16 O9 15 O10 14 U3 22V10 CLK /MREQ /IOREQ A15 A7 A6 KEY0 D0 D1 D2 D3 D4 D5 D6 A0 10 A1 9 A2 8 A3 7 A4 6 A5 5 A6 4 A7 3 A8 25 A9 24 A10 21 A11 23 A12 2 A13 26 A14 1 CE 20 WE 27 OE 22 Q0 11 Q1 12 Q2 13 Q3 15 Q4 16 Q5 17 Q6 18 Q7 19 U2 DS1230Y A0 A1 A2 A3 A4 A5 A6 A7 A0 A1 A2 A3 A4 A5 A6 A0 30 A1 31 A2 32 A3 33 A4 34 A5 35 A6 36 A7 37 A8 38 A9 39 A10 40 A11 1 A12 2 A13 3 A14 4 A15 5 D0 14 D1 15 D2 12 D3 8 D4 7 D5 9 D6 10 D7 13 M1 27 MREQ 19 IORQ 20 WR 22 RD 21 REFSH 28 HALT 18 WAIT 24 INT 16 NMI 17 RESET 26 BUSRQ 25 BUSAK 23 CLK 6 U1 Z80 /MREQ /IOREQ /WR /RD VCC 1 2 R12K2 1 R22K22 1 R3 2 2K2 1 2 R4 2K2 1 R52K22 /NMI /INT /RESET A8 A9 A10 A11 A12 A13 A14 A15 D0 A7 A8 A9 A10 A11 A12 A13 A14 /M_CS 1 2C2100n D7 VCC KEY1 KEY2 KEY3 /WR /RD OUT0 DA_CS GND VCC Q0 /M_CS OUT0 OUT1 OUT2 1 2 3 4 5 6 7 8 9 10 1112 1314 1516 1718 1920 JP1 CONECTOR OUT3 KEY0 KEY1 KEY2 KEY3 /NMI /INT 1 R102 2K49 Q1 Q2 Q3 Q4 Q5 Q6 Q7 1 2 C5 100n VCC /WR /RD D1 D2 D3 D4 D5 D6 D7 1 2C1100n CLK VCC 1 2 U4A 74HCT14 1 2100pC8 1 R132 1K 13 12 U4F 74HCT14 1 Y12 4MHz 1 R142 1K CLK D0 3 Q0 2 D1 4 Q1 5 D2 7 Q2 6 D3 8 Q3 9 D4 13 Q4 12 D5 14 Q5 15 D6 17 Q6 16 D7 18 Q7 19 OC 1 G 11 U5 74LS373 D0 D1 D2 D3 D4 D5 D6 B8 12 B7 11 B6 10 B5 9 B4 8 B3 7 B2 6 B1 5 VR+ 14 15 IOUT 4 IOUT 2 COMP 16 VLC 1 V + 1 3 V -3 U6 DAC0800 Q0 Q1 Q2 Q3 Q4 Q5 Q6 3 2 1 8 4 U7A TL082 5 6 7 U7B TL082 VEE VDD 1 2 J1 SAIDA 1 2 R8 10K 1 2 R9 10K VCC VCC 1 2 D4 LED_2 1 2C6100n 1 2C7100n VEE VEE 1 2 R11 2K49 1 2 R12 4K99 Q7 DA_CS D7 1 2 D1 1N4148 VCC 1 2 R16 10K VCC 1 2 R15 1K 1 S1 2 RESET 1 2C94u7 5 6 U4C 74HCT14 11 10 U4E 74HCT14 /RESET VCC VCC VCC 1 2 R28 390R VCC 1 2 D5 LED_3 1 R262 10K 1 2 R27 390R 2 3 1 Q2 BC547 1 R252 10K 2 3 1 Q1 BC547 OUT2 OUT3 1 2 R23 390R 1 2 R24 390R 1 2 D2 LED_0 1 2 D3 LED_1 1 2 R21 2K2 1 2 R22 2K2 KEY2 KEY3 VCC VCC 1 2 R19 2K2 1 2 R20 2K2 KEY0 KEY1 VCC VCC 9 8 U4D 74HCT14 1 R182 2K2 VCC 3 4 U4B 74HCT14 VCC 1 R172 2K2 VCC -12V +12V+5V 1 2 3 4 JP2 ALIMENTACAO GND VCC VDD VEE VCC 1 2C4100n 1 2 S2 KEY0 1 2 S3 KEY1 1 2 S4 KEY2 1 2 S5 KEY3OUT0 OUT1

FEUP / LEEC – MP (2000 / 2001)

Descodificação do sistema

• Os endereços atribuídos a cada bloco

presente estão ilustrados na tabela

seguinte:

RD

WR

MREQ

IORQ

A15

A7

A6

Acesso seleccionado

0 (1)

1 (0)

0

1

0

X

X

Memória

-

-

1

0

X

0

0

-1

0

1

0

X

0

1

Saída analógica

1

0

1

0

X

1

0

Saídas digitais

0

1

1

0

X

1

1

Entradas digitais

FEUP / LEEC – MP (2000 / 2001)

PAL de descodificação:

Equações

+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

¦

¦D2.TRST = MREQ*/IORQ*WR*/RD*A7*A6

¦

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

¦

¦D0 = KEY0

¦

¦D1 = KEY1

¦

¦D2 = KEY2

¦

¦D3 = KEY3

¦

¦

¦

¦

¦

¦

¦

+---+

D

0

1

(8)

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

29

Exemplo de aplicação

• O exemplo de aplicação que aqui se ilustra

corresponde a uma situação simples que

gera uma onda em dente de serra

inicio

.org

0h

; posiciona o codigo a partir de 0000

saida

.equ

40h

; endereco do conversor D/A

inicio

ld

a,$00

; comeca com o valor minimo

ciclo

out

(saida),a ; escreve no D/A (saida analogica)

inc

a

; incrementa o valor para o D/A

jp

ciclo

; repete o ciclo escreve / incrementa

.end

FEUP / LEEC – MP (2000 / 2001)

J. M. Martins Ferreira

30

Geração do código objecto

• A passagem deste código em assembly pelo

cross-assembler gera o seguinte ficheiro .lst:

0001

0000

0002

0000

inicio

.org

0h

0003

0000

0004

0000

saida

.equ

40h

0005

0000

0006

0000 3E 00

inicio

ld

a,$00

0007

0002 D3 40

ciclo

out

(saida),a

0008

0004 3C

inc

a

0009

0005 C3 02 00

jp

ciclo

0010

0008

0011

0008

.end

0012

0008

tasm: Number of errors = 0

Execução do código

• A execução do código objecto gerado

produz a seguinte forma de onda:

Referências

Documentos relacionados

I – estudantes que tenham cursado integralmente o Ensino Fundamental ou Ensino Médio em escolas públicas, em cursos regulares ou no âmbito da modalidade da

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

No final, os EUA viram a maioria das questões que tinham de ser resolvidas no sentido da criação de um tribunal que lhe fosse aceitável serem estabelecidas em sentido oposto, pelo

Nesse mesmo período, foi feito um pedido (Processo do Conjunto da Avenida Rio Branco, no Rio de Janeiro nº 860-T-72) pelo Instituto dos Arquitetos do Brasil e pelo Clube de

F REQUÊNCIAS PRÓPRIAS E MODOS DE VIBRAÇÃO ( MÉTODO ANALÍTICO ) ... O RIENTAÇÃO PELAS EQUAÇÕES DE PROPAGAÇÃO DE VIBRAÇÕES ... P REVISÃO DOS VALORES MÁXIMOS DE PPV ...

Assim, este estudo justifica-se pela necessidade de investigação dos problemas bucais capazes de afetar diretamente os trabalhadores expostos a agentes químicos, bem como

Não fez Com duas soluções uma sofrendo redução e a outra oxidação, em um circuito fechado com fio condutor metálico e uma ponte salina é possível produzir uma pilha química

em efeitos superiores, contudo, considerando-se a realização do experimento apenas no Rio Grande do Sul e as particularidades de cada região produtiva, a extrapolação dos