Mikroprocesor Z80 przerwania
2 linie / rodzaje przerwań: /NMI - niemaskowalne, wyższy priorytet; Z80 - przerwania 1/21 2 linie / rodzaje przerwań: /NMI - niemaskowalne, wyższy priorytet; /INT - maskowalne, niższy priorytet.
proc.obs. przerwania INTFF:=0 Z80 - przerwania 2/21 pobieranie rozkazu T koniec rozkazu ? N pobranie argumentu wykonanie rozkazu zapamiętanie wyniku zdekodowanie rozkazu N koniec cyklu masz.? T N koniec rozkazu ? T T N NMI=0? IFF2:=IFF1 IFF1:=0 PCstos PC:=66h NMIFF:=0 NMIFF:=1 N T INT=0? NMIFF=1? T N tryb DMA BUSACK:=0 N 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;
Z80 - przerwania niemaskowalne 4/21
Z80 - przerwania niemaskowalne 5/21 Cykl przyjęcia przerwania /NMI: TL-2 cykl rozkazowy-2 CLK NMI A0..A15 M1 MREQ RD RFSH cykl rozkazowy-1 T1 TL-1 M1 PC ADRREF T1 T2 T3 T4 zapis PC na stos ...
Z80 - przerwania niemaskowalne 6/21 Kolejne cykle magistrali podczas przyjęcia przerwania /NMI: M[66h] M[PC]* M1 M2 M3 koniec 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 PCH PCL 1 2 3 4 1 2 3 1 2 3 1 2 3 4 1 *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 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
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-szy rozkaz obsługi PC=k ADRREF M[PC] 1 2 3 4 1 2 W W 3 1 2 3 1 2 3 M1* PC SP-1 SP-2 RST k PCH PCL M2 M3
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 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 Zasada tworzenia adresu startowego procedury obsługi przerwania APO2 APO1 urządzenie przerywające rejestr I IVL IV (IV0=0) L H APO3 PC 0000h 0FFFFh tablica wektorów przerwań
Z80 - przerwania maskowalne - tryb 2 15/21 Działania P w trybie 2
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: 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.
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 T P1 P2 P3 1 2 3 chwile wykonania rozkazu EI