mikroprocesor z80

22
Mikroprocesor Z80 przerwania

Upload: magda

Post on 11-Jan-2016

87 views

Category:

Documents


4 download

DESCRIPTION

Mikroprocesor Z80. przerwania. Z80 - przerwania 1/21. 2 linie / rodzaje przerwań: /NMI - niemaskowalne, wyższy priorytet; /INT - maskowalne, niższy priorytet. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Mikroprocesor Z80

Mikroprocesor Z80

przerwania

Page 2: Mikroprocesor Z80

Z80 - przerwania 1/21

2 linie / rodzaje przerwań:

/NMI - niemaskowalne, wyższy priorytet;

/INT - maskowalne, niższy priorytet.

Page 3: Mikroprocesor Z80

BUSRQ=0?BUSACK:=1BRFF:=0

INTFF:=1

NMIFF:=1

Z80 - przerwania 2/21

N

koniec rozkazu ?

wykonanie rozkazu

N

T

koniec cyklu masz.?N

T

koniec rozkazu ?N

T

NMI=0?T

INT=0?

T

N

IFF1=1?

T

Ntryb DMABUSACK:=0

BUSRQ=1?N

T

NMIFF=1?

N

T

IFF2:=IFF1IFF1:=0PCstosPC:=66h

NMIFF:=0

IFF1:=0PCstos

PC:=adresproc.obs.

przerwania INTFF:=0

INTFF=1?

N

T

T

N

pobieranierozkazu

pobranie argumentu

zapamiętanie wyniku

zdekodowanierozkazu

Page 4: Mikroprocesor Z80

Z80 - przerwania niemaskowalne 3/21

Cechy przerwań niemaskowalnych Z80:

• wejście /NMI aktywne opadającym zboczem;

• czas trwania niskiego poziomu po opadającym zboczu sygnału przerywającego musi być dostatecznie długi (warunek: TIMPLOW>najdłuższy czas wykonania rozkazu przez P).

• ponowne zgłoszenie przerwania wymaga wcześniejszego powrotu sygnału na wejściu /NMI do poziomu wysokiego;

• są aktywne cały czas;

• obsługa polega na uruchomieniu procedury zaczynającej się od adresu 66h;

• wejście w obsługę przerwania NMI blokuje przerwania maskowalne;

• procedura obsługi musi kończyć się rozkazem RETN;

Page 5: Mikroprocesor Z80

Z80 - przerwania niemaskowalne 4/21

sekwencja działań P Z80 wodpowiedzi na przerwanie/NMI

sekwencja działań kończącychobsługę przerwania /NMI(rozkaz RETN)

IFF2:=IFF1IFF1:=0SP:=SP-1M[SP]:=PCH

SP:=SP-1M[SP]:=PCL

PC:=0066h

PCL:=M[SP]SP:=SP+1PCH:=M[SP]SP:=SP+1IFF1:=IFF2

Page 6: Mikroprocesor Z80

Z80 - przerwania niemaskowalne 5/21

Cykl przyjęcia przerwania /NMI:

TL-2

cykl rozkazowy-2

CLK

NMI

A0..A15

M1

MREQ

RD

RFSH

zapis PC na stos ...cykl rozkazowy-1

T1 TL-1

M1

PC ADRREF

T1 T2 T3 T4

Page 7: Mikroprocesor Z80

Z80 - przerwania niemaskowalne 6/21

Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:

*zignorowany bajt kodu

M[66h]M[PC]*

M1 M2 M3koniec cyklu rozk. 1-szy rozkaz obsługi

CLK

NMI

A0..A15

M1

MREQ

RD

WR

RFSH

D0..D7

PC ADRREF SP-1 SP-2 PC=66h ADRREF

PCH PCL

1 2 3 4 1 2 3 1 2 3 1 2 3 4 1

Page 8: Mikroprocesor Z80

Z80 - przerwania maskowalne 7/21

Cechy przerwań maskowalnych Z80:

• wejście /INT aktywne niskim poziomem;

• czas trwania sygnału przerywającego musi być dostatecznie długi (warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);

• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym cyklem M1 (/M1=0 i /IORQ=0);

• sygnał przerwania musi być wycofany przed zakończeniem jego obsługi;

• po resecie sprzętowym są zablokowane;

• mogą być programowo włączane i wyłączane;

• dostępne są 3 tryby obsługi;

Page 9: Mikroprocesor Z80

Z80 - przerwania maskowalne - tryb 0 8/21

Tryb 0

Ustawiany automatycznie po RESET lub programowo rozkazem IM 0.

Mikroprocesor przyjmując przerwanie oczekuje na szynie danych

1-bajtowego kodu rozkazu RST k

albo pierwszego bajtu (0CDh) rozkazu CALL adr16b.

W tym drugim przypadku, w kolejnych cyklach maszynowych należy

podać jeszcze dwa bajty (młodszy/starszy) adresu startowego procedury

obsługi przerwania.

Page 10: Mikroprocesor Z80

Z80 - przerwania maskowalne - tryb 0 9/21

sekwencja działań P Z80w odpowiedzi na przerwanie/INT w trybie 0

sekwencja działań kończącychobsługę przerwania /INT w trybie 0(rozkazy EI, RET)

IFF1:=0cykl M1*: /IORQ=0 przy /M1=0SP:=SP-1M[SP]:=PCH

SP:=SP-1M[SP]:=PCL

PC:=k albo PC:=adr16b

PCL:=M[SP]SP:=SP+1PCH:=M[SP]SP:=SP+1IFF1:=1

Działania P w trybie 0

Page 11: Mikroprocesor Z80

Z80 - przerwania maskowalne - tryb 0 10/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k (zał. /WAIT=1):

CLK

INT

A0..A15

M1

IORQ

MREQ

RD

WR

RFSH

D0..D7

koniec cyklu rozk.

1 2 W W 3 1 2 3 1 2 3

M1*

PC SP-1 SP-2

RST k

PCH PCL

M2 M3 1-szy rozkaz obsługi

PC=k ADRREF

M[PC]

1 2 3 4

Page 12: Mikroprocesor Z80

Z80 - przerwania maskowalne - tryb 0 11/21

Realizacja układu z 8214 podającego kod rozkazu RST k:

R015

B01

R116

B12

R217

B23

R318

SGS4

R419

ECS23

R520

A08

R621

A19

R722

A210

INTE7

INT5

ELR11

CLK6

ETLG13

ENLG14

U1

8214

A1

B2

C3

E14

E25

E36

Y015

Y114

Y213

Y312

Y411

Y510

Y69

Y77

U3

74LS138

A02

A13

A24

A35

A46

A57

A68

A79

B018

B117

B216

B315

B414

B513

B612

B711

E19

DIR1

U2

74LS245

D0D1D2D3 D0

D1D2D3D4D5D6D7

D[0..7]

Vcc

Vcc

Vcc

/INTCLK

/M1

/IORQ

/CS

/IR0/IR0/IR2/IR3/IR4/IR5/IR6/IR7

/IAck0/IAck1/IAck2/IAck3/IAck4/IAck5/IAck6/IAck7

Page 13: Mikroprocesor Z80

Z80 - przerwania maskowalne - tryb 1 12/21

Tryb 1

• Ustawiany tylko programowo rozkazem IM 1.

• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę

zaczynającą się od adresu 38h.

• Sekwencja działań jest taka sama jak dla trybu 0 i kodu

rozkazu RST 38h.• Tryb wygodny przy jednym źródle przerwania.

• Przy większej liczbie źródeł przerwań, początek procedury obsługi

przerwania (od adresu 38h) musi zawierać

programowy arbitraż systemu przerwań.

Page 14: Mikroprocesor Z80

Z80 - przerwania maskowalne - tryb 2 13/21

Tryb 2 - tzw. wektorowy

• Ustawiany tylko programowo rozkazem IM 2.

• Mikroprocesor przyjmując przerwanie jest skierowany od razu

do właściwej procedury obsługi.

• Z natury jest priorytetowy.

• Umożliwia realizację wielopoziomowości.

• Wymaga stosowania specjalizowanych układów peryferyjnych

z rodziny Z80.

Page 15: Mikroprocesor Z80

Z80 - przerwania maskowalne - tryb 2 14/21

APO2

APO1

urządzenieprzerywające

rejestr I

IVL IV(IV0=0)

LHLHLHAPO3

PC

0000h

0FFFFh

tablica wektorówprzerwań

Zasada tworzenia adresu startowego procedury obsługi przerwania

Page 16: Mikroprocesor Z80

Z80 - przerwania maskowalne - tryb 2 15/21Działania P w trybie 2

sekwencja działań przy zgłaszaniuprzerwania /INT w trybie 2

sekwencja działań kończących obsługęprzerwania /INT w trybie 2

Z80CPU moduł peryf. Z80 Z80CPU moduł peryf. Z80

zał. IFF1=1

cykl M1*:/M1,/IORQ:=0

IV:=IIVL

IFF1:=0APOPL:=M[IV]

APOPH:=M[IV+1]SP:=SP-1

M[SP]:=PCH

SP:=SP-1M[SP]:=PCL

PC:=APOP

jest przyczyna

IEI=1? N T

/INT:=0 | IEO:=0

IVL D7..D0

(IEO=0 oznaczazablokowanieprzerwań od

następnych włańcuchu modułów)

EIRETI:

PCL:=M[SP]SP:=SP+1

PCH:=M[SP]SP:=SP+1IFF1:=1

śledzenie przy IEI=1wykonania przez P

rozkazuRETI (EDh 4Dh)

IEO:=1(zezwolenie naprzerwania od

następnych w łańcuchumodułów)

Page 17: Mikroprocesor Z80

Z80 - przerwania maskowalne - tryb 2 16/21

Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):

TL T1 T2 Tw1 Tw2 T3

M1*koniec cyklu rozk. odczyt APOP...

CLK

INT

A0..A15

M1

IORQ

RD,WR,RFSH,MREQ

D0..D7

PC

IVL

Page 18: Mikroprocesor Z80

Z80 - przerwania maskowalne - tryb 2 17/21

Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:

CLK

INT

A0..A15

M1

IORQ

MREQ

RD

WR

RFSH

D0..D7

L 1 2 W W 3 1 2 3 1 2 3 1 2 3 1 2 3 1

M1*

koniec cyklu rozk.

1-szy rozkaz obsługi

PC IV IV+1 APOP

IVL PCH PCL M[PC]

M2 M3 M4 M5

SP-1 SP-2

APOPL APOPH

Page 19: Mikroprocesor Z80

Z80 - przerwania maskowalne - tryb 2 18/21

Przykład łańcucha urządzeń przerywających:

IE I IEO

Z80D M AIE I IEO

Z80C T CIE I IEO

Z80PIOIE I IEO

Z80SIO

Z80C PU

D0..D7

IORQM1

INT Vcc

Vcc

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Page 20: Mikroprocesor Z80

Z80 - przerwania maskowalne - tryb 2 19/21

Priorytety w łańcuchu: DMA>CTC>PIO>SIO.

Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia

(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.

Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego

IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND

bocznikujące moduły pośrednie:

IE I IEO

Z80C T CIE I IEO

Z80C T C

Page 21: Mikroprocesor Z80

Z80 - przerwania maskowalne 20/21

System przerwań maskowalnych może być jedno- lub wielopoziomowy.

Zależy to od miejsca użycia rozkazu EI (odblokowującego te przerwania)

we wnętrzu procedury obsługi przerwania, ponieważ w momencie

przyjmowania przerwania maskowalnego do obsługi, wewnętrzny

przerzutnik zezwolenia na te przerwania (IFF1) jest zerowany i dopiero

rozkaz EI ustawia go ponownie na "1".

Rozkaz EI można użyć w procedurze obsługi danego przerwania dopiero

po wykonaniu działań, które skasują obsługiwane przerwanie (spowodują

wycofanie sygnału zgłoszenia tego przerwania). W przeciwnym razie

dojdzie do cyklicznego ciągłego uruchamiania danej procedury obsługi

przerwania.

Page 22: Mikroprocesor Z80

Z80 - przerwania maskowalne 21/21

System jednopoziomowy: System wielopoziomowy:rozkaz EI przed rozkazem rozkaz EI po operacji skasowaniapowrotu z procedury przyczyny (sygnału) przerwania

TP1 P2 P3

T TP1

P2P3

T

1 2 3 1 2 3

chwile wykonania rozkazu EI