220 likes | 415 Views
Mikroprocesor Z80. przerwania. Z80 - przerwania 1/21. 2 linie / rodzaje przerwań: /NMI - niemaskowalne, wyższy priorytet; /INT - maskowalne, niższy priorytet.
E N D
Mikroprocesor Z80 przerwania
Z80 - przerwania 1/21 2 linie / rodzaje przerwań: /NMI - niemaskowalne, wyższy priorytet; /INT - maskowalne, niższy priorytet.
Z80 - przerwania 2/21 pobieranierozkazu T koniec rozkazu ? N pobranie argumentu wykonanie rozkazu zapamiętanie wyniku zdekodowanierozkazu N koniec cyklu masz.? T N koniec rozkazu ? T T N NMI=0? IFF2:=IFF1 IFF1:=0 PCstos PC:=66h NMIFF:=0 NMIFF:=1 T N NMIFF=1? INT=0? N T N tryb DMA BUSACK:=0 IFF1=1? IFF1:=0 PCstos PC:=adres proc.obs. przerwania INTFF:=0 T INTFF:=1 T INTFF=1? N BUSRQ=1? N T BUSACK:=1 BRFF:=0 T BUSRQ=0? N
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;
cykl rozkazowy-2 cykl rozkazowy-1 M1 zapis PC na stos ... TL-2 T1 TL-1 T1 T2 T3 T4 CLK NMI A0..A15 M1 MREQ RD RFSH PC ADRREF Z80 - przerwania niemaskowalne 5/21 Cykl przyjęcia przerwania /NMI:
koniec cyklu rozk. M1 M2 M3 1-szy rozkaz obsługi CLK NMI A0..A15 M1 MREQ RD WR RFSH D0..D7 1 2 3 4 1 2 3 1 2 3 1 2 3 4 1 PC=66h PC ADRREF SP-1 SP-2 ADRREF M[PC]* M[66h] PCH PCL Z80 - przerwania niemaskowalne 6/21 Kolejne cykle magistrali podczas przyjęcia przerwania /NMI: *zignorowany bajt kodu
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 Działania P w trybie 0
koniec cyklu rozk. 1-szy rozkaz obsługi M1* M2 M3 CLK INT A0..A15 M1 IORQ MREQ RD WR RFSH D0..D7 1 2 W W 3 1 2 3 1 2 3 1 2 3 4 PC SP-1 SP-2 PC=k ADRREF PCH PCL RST k M[PC] Z80 - przerwania maskowalne - tryb 0 10/21 Kolejne cykle magistrali podczas przyjęcia przerwania /INT z rozkazem RST k (zał. /WAIT=1):
Z80 - przerwania maskowalne - tryb 0 11/21 Realizacja układu z 8214 podającego kod rozkazu RST k:
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.
rejestr I 0000h urządzenie przerywające IVL APO1 L H L H L H PC IV (IV0=0) APO2 APO3 tablica wektorów przerwań 0FFFFh Z80 - przerwania maskowalne - tryb 2 14/21 Zasada tworzenia adresu startowego procedury obsługi przerwania
Z80 - przerwania maskowalne - tryb 2 15/21 Działania P w trybie 2
konieccyklu rozk. odczyt APOP... M1* TL T1 T2 Tw1 Tw2 T3 CLK INT A0..A15 M1 IORQ RD,WR,RFSH,MREQ D0..D7 PC IVL Z80 - przerwania maskowalne - tryb 2 16/21 Cykl M1 przyjęcia przerwania /INT w trybie2 - wektorowym (zał. /WAIT=1):
koniec cyklu rozk. 1-szy rozkaz obsługi M1* M2 M3 M4 M5 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 PC IV IV+1 APOP SP-1 SP-2 IVL PCH PCL M[PC] APOPL APOPH Z80 - przerwania maskowalne - tryb 2 17/21 Kolejne cykle magistrali podczas przyjęcia przerwania /INT w trybie 2:
Z80 - przerwania maskowalne - tryb 2 18/21 Przykład łańcucha urządzeń przerywających: 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:
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.
P3 P2 P1 P2 P3 P1 T T T T 1 2 3 1 2 3 Z80 - przerwania maskowalne 21/21 System jednopoziomowy: System wielopoziomowy: rozkaz EI przed rozkazem rozkaz EI po operacji skasowania powrotu z procedury przyczyny (sygnału) przerwania chwile wykonania rozkazu EI