Mikroprocesor Z80
Post on 11-Jan-2016
76 Views
Preview:
DESCRIPTION
Transcript
Mikroprocesor Z80
przerwania
Z80 - przerwania 1/21
2 linie / rodzaje przerwań:
/NMI - niemaskowalne, wyższy priorytet;
/INT - maskowalne, niższy priorytet.
BUSRQ=0?BUSACK:=1BRFF:=0
INTFF:=1
NMIFF:=1
Z80 - przerwania 2/21
N
koniec rozkazu ?
wykonanie rozkazu
N
T
koniec cyklu masz.?N
T
koniec rozkazu ?N
T
NMI=0?T
INT=0?
T
N
IFF1=1?
T
Ntryb DMABUSACK:=0
BUSRQ=1?N
T
NMIFF=1?
N
T
IFF2:=IFF1IFF1:=0PCstosPC:=66h
NMIFF:=0
IFF1:=0PCstos
PC:=adresproc.obs.
przerwania INTFF:=0
INTFF=1?
N
T
T
N
pobieranierozkazu
pobranie argumentu
zapamiętanie wyniku
zdekodowanierozkazu
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 4/21
sekwencja działań P Z80 wodpowiedzi na przerwanie/NMI
sekwencja działań kończącychobsługę przerwania /NMI(rozkaz RETN)
IFF2:=IFF1IFF1:=0SP:=SP-1M[SP]:=PCH
SP:=SP-1M[SP]:=PCL
PC:=0066h
PCL:=M[SP]SP:=SP+1PCH:=M[SP]SP:=SP+1IFF1:=IFF2
Z80 - przerwania niemaskowalne 5/21
Cykl przyjęcia przerwania /NMI:
TL-2
cykl rozkazowy-2
CLK
NMI
A0..A15
M1
MREQ
RD
RFSH
zapis PC na stos ...cykl rozkazowy-1
T1 TL-1
M1
PC ADRREF
T1 T2 T3 T4
Z80 - przerwania niemaskowalne 6/21
Kolejne cykle magistrali podczas przyjęcia przerwania /NMI:
*zignorowany bajt kodu
M[66h]M[PC]*
M1 M2 M3koniec cyklu rozk. 1-szy rozkaz obsługi
CLK
NMI
A0..A15
M1
MREQ
RD
WR
RFSH
D0..D7
PC ADRREF SP-1 SP-2 PC=66h ADRREF
PCH PCL
1 2 3 4 1 2 3 1 2 3 1 2 3 4 1
Z80 - przerwania maskowalne 7/21
Cechy przerwań maskowalnych Z80:
• wejście /INT aktywne niskim poziomem;
• czas trwania sygnału przerywającego musi być dostatecznie długi (warunek: TIMP>najdłuższy czas wykonania rozkazu przez P);
• rozpoczęcie obsługi przerwania jest sygnalizowane specjalnym cyklem M1 (/M1=0 i /IORQ=0);
• sygnał przerwania musi być wycofany przed zakończeniem jego obsługi;
• po resecie sprzętowym są zablokowane;
• mogą być programowo włączane i wyłączane;
• dostępne są 3 tryby obsługi;
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
sekwencja działań P Z80w odpowiedzi na przerwanie/INT w trybie 0
sekwencja działań kończącychobsługę przerwania /INT w trybie 0(rozkazy EI, RET)
IFF1:=0cykl M1*: /IORQ=0 przy /M1=0SP:=SP-1M[SP]:=PCH
SP:=SP-1M[SP]:=PCL
PC:=k albo PC:=adr16b
PCL:=M[SP]SP:=SP+1PCH:=M[SP]SP:=SP+1IFF1:=1
Działania P w trybie 0
Z80 - przerwania maskowalne - tryb 0 10/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k (zał. /WAIT=1):
CLK
INT
A0..A15
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
koniec cyklu rozk.
1 2 W W 3 1 2 3 1 2 3
M1*
PC SP-1 SP-2
RST k
PCH PCL
M2 M3 1-szy rozkaz obsługi
PC=k ADRREF
M[PC]
1 2 3 4
Z80 - przerwania maskowalne - tryb 0 11/21
Realizacja układu z 8214 podającego kod rozkazu RST k:
R015
B01
R116
B12
R217
B23
R318
SGS4
R419
ECS23
R520
A08
R621
A19
R722
A210
INTE7
INT5
ELR11
CLK6
ETLG13
ENLG14
U1
8214
A1
B2
C3
E14
E25
E36
Y015
Y114
Y213
Y312
Y411
Y510
Y69
Y77
U3
74LS138
A02
A13
A24
A35
A46
A57
A68
A79
B018
B117
B216
B315
B414
B513
B612
B711
E19
DIR1
U2
74LS245
D0D1D2D3 D0
D1D2D3D4D5D6D7
D[0..7]
Vcc
Vcc
Vcc
/INTCLK
/M1
/IORQ
/CS
/IR0/IR0/IR2/IR3/IR4/IR5/IR6/IR7
/IAck0/IAck1/IAck2/IAck3/IAck4/IAck5/IAck6/IAck7
Z80 - przerwania maskowalne - tryb 1 12/21
Tryb 1
• Ustawiany tylko programowo rozkazem IM 1.
• Mikroprocesor przyjmując przerwania zawsze uruchamia procedurę
zaczynającą się od adresu 38h.
• Sekwencja działań jest taka sama jak dla trybu 0 i kodu
rozkazu RST 38h.• Tryb wygodny przy jednym źródle przerwania.
• Przy większej liczbie źródeł przerwań, początek procedury obsługi
przerwania (od adresu 38h) musi zawierać
programowy arbitraż systemu przerwań.
Z80 - przerwania maskowalne - tryb 2 13/21
Tryb 2 - tzw. wektorowy
• Ustawiany tylko programowo rozkazem IM 2.
• Mikroprocesor przyjmując przerwanie jest skierowany od razu
do właściwej procedury obsługi.
• Z natury jest priorytetowy.
• Umożliwia realizację wielopoziomowości.
• Wymaga stosowania specjalizowanych układów peryferyjnych
z rodziny Z80.
Z80 - przerwania maskowalne - tryb 2 14/21
APO2
APO1
urządzenieprzerywające
rejestr I
IVL IV(IV0=0)
LHLHLHAPO3
PC
0000h
0FFFFh
tablica wektorówprzerwań
Zasada tworzenia adresu startowego procedury obsługi przerwania
Z80 - przerwania maskowalne - tryb 2 15/21Działania P w trybie 2
sekwencja działań przy zgłaszaniuprzerwania /INT w trybie 2
sekwencja działań kończących obsługęprzerwania /INT w trybie 2
Z80CPU moduł peryf. Z80 Z80CPU moduł peryf. Z80
zał. IFF1=1
cykl M1*:/M1,/IORQ:=0
IV:=IIVL
IFF1:=0APOPL:=M[IV]
APOPH:=M[IV+1]SP:=SP-1
M[SP]:=PCH
SP:=SP-1M[SP]:=PCL
PC:=APOP
jest przyczyna
IEI=1? N T
/INT:=0 | IEO:=0
IVL D7..D0
(IEO=0 oznaczazablokowanieprzerwań od
następnych włańcuchu modułów)
EIRETI:
PCL:=M[SP]SP:=SP+1
PCH:=M[SP]SP:=SP+1IFF1:=1
śledzenie przy IEI=1wykonania przez P
rozkazuRETI (EDh 4Dh)
IEO:=1(zezwolenie naprzerwania od
następnych w łańcuchumodułów)
Z80 - przerwania maskowalne - tryb 2 16/21
Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
TL T1 T2 Tw1 Tw2 T3
M1*koniec cyklu rozk. odczyt APOP...
CLK
INT
A0..A15
M1
IORQ
RD,WR,RFSH,MREQ
D0..D7
PC
IVL
Z80 - przerwania maskowalne - tryb 2 17/21
Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
CLK
INT
A0..A15
M1
IORQ
MREQ
RD
WR
RFSH
D0..D7
L 1 2 W W 3 1 2 3 1 2 3 1 2 3 1 2 3 1
M1*
koniec cyklu rozk.
1-szy rozkaz obsługi
PC IV IV+1 APOP
IVL PCH PCL M[PC]
M2 M3 M4 M5
SP-1 SP-2
APOPL APOPH
Z80 - przerwania maskowalne - tryb 2 18/21
Przykład łańcucha urządzeń przerywających:
IE I IEO
Z80D M AIE I IEO
Z80C T CIE I IEO
Z80PIOIE I IEO
Z80SIO
Z80C PU
D0..D7
IORQM1
INT Vcc
Vcc
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Z80 - przerwania maskowalne - tryb 2 19/21
Priorytety w łańcuchu: DMA>CTC>PIO>SIO.
Jeżeli któryś z modułów ma w swoim wnętrzu kaskadowo połączone urządzenia
(np. 2 porty w PIO, 4 liczniki w CTC) to również one tworzą łańcuch priorytetów.
Przy dłuższych łańcuchach ze względu na czas propagacji sygnału zabraniającego
IEI=0 z modułu pierwszego do ostatniego zaleca się dodatkowe bramki AND
bocznikujące moduły pośrednie:
IE I IEO
Z80C T CIE I IEO
Z80C T C
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 21/21
System jednopoziomowy: System wielopoziomowy:rozkaz EI przed rozkazem rozkaz EI po operacji skasowaniapowrotu z procedury przyczyny (sygnału) przerwania
TP1 P2 P3
T TP1
P2P3
T
1 2 3 1 2 3
chwile wykonania rozkazu EI
top related