Mikroprocesor Z80 przerwania Z80 - przerwania 2 linie / rodzaje przerwań: /NMI - niemaskowalne, wyższy priorytet; /INT - maskowalne, niższy priorytet. 1/21 Z80 - przerwania 2/21 pobieranie rozkazu T koniec rozkazu ? N pobranie.
Download ReportTranscript Mikroprocesor Z80 przerwania Z80 - przerwania 2 linie / rodzaje przerwań: /NMI - niemaskowalne, wyższy priorytet; /INT - maskowalne, niższy priorytet. 1/21 Z80 - przerwania 2/21 pobieranie rozkazu T koniec rozkazu ? N pobranie.
Slide 1
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 2
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 3
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 4
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 5
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 6
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 7
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 8
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 9
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 10
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 11
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 12
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 13
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 14
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 15
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 16
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 17
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 18
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 19
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 20
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 21
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 22
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 2
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 3
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 4
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 5
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 6
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 7
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 8
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 9
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 10
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 11
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 12
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 13
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 14
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 15
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 16
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 17
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 18
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 19
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 20
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 21
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI
Slide 22
Mikroprocesor Z80
przerwania
Z80 - przerwania
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
1/21
Z80 - przerwania
2/21
pobieranie
rozkazu
T
koniec rozkazu ?
N
pobranie wykonanie zapamiętanie
argumentu rozkazu
wyniku
zdekodowanie
rozkazu
koniec cyklu masz.?
N
N
T
koniec rozkazu ?
T
T
NMI=0?
N
NMIFF:=1
N
INT=0?
T
N
tryb DMA
BUSACK:=0
N
T
BUSRQ=1?
INTFF=1?
N
T
BUSACK:=1
BRFF:=0
T
IFF1=1?
INTFF:=1
N
NMIFF=1?
T
BUSRQ=0?
N
T
IFF2:=IFF1
IFF1:=0
PCstos
PC:=66h
NMIFF:=0
IFF1:=0
PCstos
PC:=adres
proc.obs.
przerwania
INTFF:=0
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;
Z80 - przerwania niemaskowalne
sekw encja działań P Z 80 w
odpow iedzi na przerw anie
/N M I
IF F 2:= IF F 1
IF F 1:= 0
S P := S P -1
M [S P]:= P C H
S P := S P -1
M [S P]:= P C L
P C := 0066h
4/21
sekw encja działań kończących
obsługę przerw ania /N M I
(rozkaz R E T N )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P]
S P := S P + 1
IF F 1:= IF F 2
Z80 - przerwania niemaskowalne
5/21
Cykl przyjęcia przerwania /NMI:
cykl rozkazowy-2
CLK
TL-2
cykl rozkazowy-1
T1
TL-1
M1
T1
T2
T3
zapis PC na stos ...
T4
NMI
A0..A15
M1
MREQ
RD
RFSH
PC
ADRREF
Z80 - przerwania niemaskowalne
6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
koniec cyklu rozk.
CLK
M1
1
2
M2
3
4
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
NMI
PC
A0..A15
ADRREF
SP-1
SP-2
PC=66h ADRREF
M1
MREQ
RD
WR
RFSH
M[PC]*
PCH
D0..D7
*zignorowany
M[66h]
bajt kodu
PCL
1
Z80 - przerwania maskowalne
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;
7/21
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.
Z80 - przerwania maskowalne - tryb 0
9/21
Działania P w trybie 0
sek w en cja d ziałań P Z 8 0
w o d p o w ied zi n a p rzerw an ie
/IN T w try b ie 0
IF F 1 := 0
*
cy k l M 1 :
/IO R Q = 0 p rzy /M 1 = 0
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := k alb o P C := ad r1 6 b
sek w en cja d ziałań k o ń czący ch
o b słu g ę p rzerw an ia /IN T w try b ie 0
(ro zk azy E I, R E T )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1 := 1
Z80 - przerwania maskowalne - tryb 0
10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k
(zał. /WAIT=1):
koniec cyklu rozk.
CLK
M1*
1
2
W
M2
W
3
1
2
1-szy rozkaz obsługi
M3
3
1
2
3
1
2
3
4
INT
A0..A15
PC
SP-1
SP-2
PCH
PCL
PC=k
ADRREF
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
RST k
M[PC]
Z80 - przerwania maskowalne - tryb 0
11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
D
/
U
5
1
D
0
R
R
0
V
0
6
2
D
1
R
R
0
1
7
3
D
U
2
R
R
2
2
82
4
D
1
D
B
S
R
0
R
3
A
3
93
2
1
D
3
B
S
R
1
R
4
A
4
04
1
D
B
R
2
R
5
A
5
15
8
1
D
B
0
R
3
R
6
A
6
26
8
9
1
D
2
B
1
R
4
R
7
A
7
7
1
1
D
0
B
2
5 A
7 8
5
1
D
B
c
T
6
I
N
A
19
1
D
B
7
E
A
L
3
1
4
G
E
T
1
6 9
7
C
E
L
1
D
/
C
U
5
1
A
A
c
Y
k
4
2
A
B
c
Y
k
3
3
A
C
c
Y
k
2
A
c
Y
k
1
7
A
c
Y
k
/
0
4
A
1
c
Y
k
9
5
A
2
c
Y
k
/
7
6
A
3
c
Y
V
k
Z80 - przerwania maskowalne - tryb 1
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ń.
12/21
Z80 - przerwania maskowalne - tryb 2
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.
13/21
Z80 - przerwania maskowalne - tryb 2
14/21
Zasada tworzenia adresu startowego procedury obsługi przerwania
rejestr I
urządzenie
przerywające
IVL
IV
(IV0=0)
tablica wektorów
przerwań
0000h
APO1 L
H
L
APO2 H
L
APO3 H
0FFFFh
PC
Z80 - przerwania maskowalne - tryb 2
Działania P w trybie 2
sekw encja dzia łań przy zgłaszaniu
przerw ania /IN T w try bie 2
Z 80C P U
m odu ł pery f. Z 80
zał. IF F 1= 1
jest przy czy na
IE I= 1?
15/21
sekw encja dzia łań kończący ch obsługę
przerw ania /IN T w try bie 2
Z 80C P U
N
T
/IN T := 0 | IE O := 0
EI
R E T I:
m odu ł pery f. Z 80
śledzenie przy IE I= 1
w y konania przez P
rozkazu
R E T I (E D h 4D h)
*
cy kl M 1 :
/M 1,/IO R Q := 0
IV := I IV L
IF F 1:= 0
A P O P L := M [IV ]
A P O P H := M [IV + 1]
S P := S P -1
M [S P ]:= P C H
S P := S P -1
M [S P ]:= P C L
P C := A P O P
IV L D 7 ..D 0
(IE O = 0 o zn acza
zab lo k o w an ie
p rzerw ań o d
n astęp n ych w
łań cu ch u m o d u łó w )
P C L := M [S P ]
S P := S P + 1
P C H := M [S P ]
S P := S P + 1
IF F 1:= 1
IE O := 1
(zezw o len ie n a
p rzerw an ia o d
n astęp n ych w łań cu ch u
m o d u łó w )
Z80 - przerwania maskowalne - tryb 2
16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk.
CLK
TL
odczyt APOP...
M1*
T1
T2
Tw1
Tw2
T3
INT
A0..A15
PC
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
IVL
Z80 - przerwania maskowalne - tryb 2
17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
koniec
cyklu
rozk.
CLK
L
M1*
1
2
W W
M2
3
1
2
M3
3
1
2
M4
3
1
2
1-szy
rozkaz
obsługi
M5
3
1
2
3
1
INT
A0..A15
PC
IV
IV+1
SP-1
SP-2
PCH
PCL
APOP
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
IVL
APOPL
APOPH
M[PC]
Z80 - przerwania maskowalne - tryb 2
18/21
Przykład łańcucha urządzeń przerywających:
Z80CPU
D0..D7
IORQ
M1
f
Vcc
IEI
IEO
Z80DMA
INT
IEI
IEO
Z80CTC
IEI
IEO
Z80PIO
IEI
IEO
Z80SIO
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
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:
IEI
IEO
Z80CTC
IEI
IEO
Z80CTC
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.
Z80 - przerwania maskowalne
System jednopoziomowy:
rozkaz EI przed rozkazem
powrotu z procedury
21/21
System wielopoziomowy:
rozkaz EI po operacji skasowania
przyczyny (sygnału) przerwania
P3
P1
T
1
2 3
P2
P3
T
T
P1
1
P2
T
2 3
chwile wykonania rozkazu EI