Upload
dozerkamil
View
220
Download
0
Embed Size (px)
Citation preview
8/19/2019 System Przerwan
1/69
INSTYTUT ELEKTRONIKI
POLITECHNIKI ŚLĄSKIEJ
Zak ład Uk ładów Cyfrowych i Mikroprocesorowych
Seria Pomoce Dydaktyczne Nr 8
Zdzisław Pogoda
ROZDZIAŁ 4
STSTEM PRZERWAŃ
Materiały pomocnicze do przedmiotu:
Systemy komputerowe i mikroprocesory
dla
Kierunku Elektronika
GLIWICE 2003
8/19/2019 System Przerwan
2/69
Instytut ElektronikiPolitechniki Ślą skiejul. Akademicka 1644 - 101 Gliwice
Seria Pomoce Dydaktyczne
1. Z. Pogoda, Pamięć notatnikowa, 19932. Z. Pogoda, Pamięć wirtualna, 19933. Z. Pogoda, Arytmetyka komputerów, 19944. Z. Pogoda, Podstawy techniki mikroprocesorowej cz. 1, 19945. Z. Pogoda, Podstawy techniki mikroprocesorowej cz. 2, 19946. Z. Pogoda, Wstęp do systemów komputerowych, 19947. Z. Pogoda, Mikroprocesory 16/32 bitowe, 19948. Z. Pogoda, System przerwań, 2003
Seria Varia
1. Zlecenia Systemu Operacyjnego DOS 6.0
Wydano nakładem własnym Instytutu Elektroniki© Zdzisław Pogoda R1Gliwice 2003
8/19/2019 System Przerwan
3/69
I
4. SYSTEM PRZERWAŃ 1
4.1. Ogólne własności systemu przerwań 1
4.2. Przerwania w mikroprocesorach 8080/85 64.3. Jednopoziomowy, wielourządzeniowy uk ład przerwań 134.4. Wektorowy uk ład przerwań 17
4.5. Zagnieżdżanie przerwań 214.6. Kontroler przerwań 8214 264.7. Rozszerzanie uk ładu przerwań z kontrolerem 8214 294.8. Kontroler przerwań 8259A 34
8/19/2019 System Przerwan
4/69
II
8/19/2019 System Przerwan
5/69
4. System przerwań
4.1. Ogólne własności systemu przerwań
W czasie normalnej pracy mikroprocesora powstają sytuacje, w których konieczne jest chwilowe
wstrzymanie realizacji jednego programu i rozpo-
czę cie innego z zachowaniem możliwości powrotu.Takie działanie nazywa się przerwaniem programu.Program, który podlega przerwaniu bę dziemyw dalszym cią gu nazywać programem g ł ównym,
a nowy program, rozpoczynają cy działanie - pro-gramem obsł ugi przerwania. Mechanizm przerwańdokonuje wię c przełą czenia programów w mikro-
procesorze (rys. 4.1).
Można wymienić trzy główne przyczyny wymagają ce przerywania bieżą cego programu:
• Obsł uga urz ądzeń we/wy. Urzą dzenia we/wy działają zwykle ze znacznie mniejszą pr ę dkością niż procesor. Mię dzy dwoma kolejnymi bajtami, które mogą być przyjmo-wane lub wysyłane przez urzą dzenie, mikroprocesor może wykonać wiele rozkazów
programu głównego. Przerwanie nastę puje w chwilach, gdy urzą dzenie jest gotowe do przyję cia lub wysłania danej. Program obsługi przerwania wykonuje czynności zwią za-ne z pobieraniem lub wysyłaniem danych.
• Reakcja na zdarzenia zewnętrzne. Jeżeli mikroprocesor pracuje w systemie sterowania,to pewne zdarzenia zewnę trzne mogą wymagać wykonania określonych czynności. Np.
po wypełnieniu zbiornika sk ładnikami, konieczne jest uruchomienie mechanizmu mie-szania z podgrzewaniem wg określonego programu. Program obsługi przerwania sterujewtedy napę dami i elementami grzewczymi.
• Wewnętrzne sytuacje wyjątkowe. Przyczyna przerwania powstaje wewną trz mikropro-cesora i zwią zana jest z sytuacjami uniemożliwiają cymi poprawną realizację programu.Typowymi przyczynami przerwań wewnę trznych są : próba dzielenia przez zeroi naruszenie warunków ochrony pamię ci.
Pierwsze dwie przyczyny przerwań znajdują się poza mikroprocesorem i takie przerwa-nia nazywają się przerwaniami zewnętrznymi (ang. interuptions). Z punktu widzenia mikro-
procesora jest sprawą oboję tną , czy źródłem przerwania było urzą dzenie we/wy, czy sterowa-ny proces technologiczny. Różnica bę dzie dotyczyła jedynie funkcji wykonywanych przez
program obsługi przerwania. Przerwania zewnę trzne mogą być inicjowane wyłą cznie za po-mocą zewnę trznych sygnałów przerwań. Prawie wszystkie mikroprocesory posiadają mecha-nizm umożliwiają cy reakcję na przerwania zewnę trzne.
Przerwania wewnętrzne (ang. exeptions) nie wystę pują w każdym mikroprocesorze. Np. jeśli mikroprocesor nie wykonuje operacji dzielenia i nie jest wyposażony w mechanizmochrony pamię ci, to brak takich przyczyn przerwania. W szczególności mikroprocesory8080/85 nie posiadają przerwań wewnę trznych.
Program główny
przerwanie
Program główny
Program obsługiprzerwania
Rys. 4.1. Przełączanie programów przy przerwaniu
8/19/2019 System Przerwan
6/69
INSTYTUT ELEKTRONIKI - 4.2 - Z. Pogoda
Podstawowym warunkiem poprawnego wykonania przerwania (przełą czenia progra-mów) jest zapewnienie powrotu do programu głównego. Warunek ten narzuca ograniczeniena moment czasu, w którym takie przełą czenie może się rozpocząć. Na to, by przerwany pro-
gram mógł być poprawnie wznowiony, konieczne jest zapewnienie, by po powrocie z prze-rwania zawartości wszystkich rejestrów i stany przerzutników sterują cych mikroprocesora,istotne dla działania programu, były takie same, jak w momencie jego przerywania. Zbiór tych wszystkich informacji nazywa się stanem programu. Oznacza to, że w chwili wykony-wania przerwania stan programu musi być zapamię tany w bezpiecznym miejscu a nastę pnieodtworzony w chwili powrotu z obsługi przerwania. Aby mechanizm przełą czania progra-mów był efektywny czasowo ilość informacji stanowią cej stan programu powinna być moż-liwie mała. Ze wzglę du na cykliczność pracy mikroprocesora takim momentem czasu jest za-kończenie kolejnego cyklu rozkazowego. Wykonanie nastę pnego rozkazu programu jest uza-leżnione jedynie od zawartości rejestrów dostę pnych programowo. Natomiast zawartości reje-strów roboczych i stany przerzutników sterują cych mikroprocesora, do których nie ma dostę -
pu programowego, nie są już ważne w nastę pnym cyklu rozkazowym. Ponieważ po zakoń-czeniu programu obsługi przerwania konieczne jest wznowienie programu głównego od roz-kazu, który nie został jeszcze wykonany, to ważną informacją o stanie programu jest adres te-go rozkazu. Adres ten nazywa się adresem powrotnym. Zapamię tywanie adresu powrotnego
jest obowią zkowe przy każdym przerwaniu i dlatego wykonywane jest zazwyczaj w sposóbautomatyczny. Wynika stą d, że program obsługi przerwania jest specyficznym rodzajem pod-
programu. Jego specyfika polega na tym, że nie jest on inicjowany za pomocą rozkazu skokuze śladem znajdują cego się w programie głównym, lecz jest wywoływany przez przyczynę
przerwania. Przyczyna przerwania może się pojawić w dowolnym momencie czasu a wię cw czasie trwania cyklu rozkazowego. Natomiast rozpoczę cie obsługi przerwania może nastą -
pić najwcześniej po zakończeniu bieżą cego cyklu rozkazowego.Drugą grupą informacji sk ładają cych się na stan programu są zawartości rejestrów pro-
gramowych. Różne mikroprocesory posiadają różne liczby tych rejestrów. Niekiedy może ich być bardzo wiele (np. kilkadziesią t). Ważne jest by te zawartości były takie same w chwili powrotu, jakie były w chwili przerywania. Zapamię tywać trzeba bę dzie zawartości tylko tychz nich, które bę dą używane w programie obsługi. Nie jest wię c celowe wprowadzanie do mi-kroprocesora mechanizmu, który spowoduje automatyczne zapamię tanie zawartości wszyst-kich rejestrów dostę pnych programowo. Zapamię tanie to jest zazwyczaj realizowane przez
program obsługi przerwania. W programie tym wiadomo, jakie rejestry bę dą używane i tylkoich zawartości muszą być zapamię tywane.
Dla organizacji powrotu z programu obsługi przerwania wykorzystuje się taki sam me-
chanizm, jaki jest stosowany przy skokach do podprogramów i powrotów z nich. Wystarczyaby mechanizm przerwań powodował zapamię tanie adresu powrotnego w tym samym miej-scu, w którym zapamię tuje go rozkaz skoku ze śladem. Wtedy taki sam rozkaz bę dzie mógł
być użyty do powrotu z podprogramu i z programu obsługi przerwania.Czas wykonywania programu obsługi przerwania może się zawierać w bardzo szero-
kich granicach: od kilkunastu rozkazów, w przypadku prostych operacji we/wy, do wielu mi-
nut a nawet godzin, w przypadku sterowania w czasie rzeczywistym. Wię kszą część czasu pracy mikroprocesora może zajmować obsługa przerwań. To działanie może być uznane zagłówne w systemie. Przerywany program główny stanowi wtedy rodzaj „wypełniacza”, wy-korzystują cego czas, w którym mikroprocesor nie realizuje swoich podstawowych zadań.Mówi się wtedy o przetwarzaniu w „tle”.
8/19/2019 System Przerwan
7/69
Z. Pogoda - 4.3 - INSTYTUT ELEKTRONIKI
W systemach mikroprocesorowych wystę puje zazwyczaj wiele źródeł przerwań, któremogą pochodzić od różnych urzą dzeń zewnę trznych. Mechanizm przerwań musi wię c umoż-liwiać aktywację różnych programów obsługi w zależności od przyczyny. Dla każdego sys-
temu przerwań istnieje maksymalna ich liczba, stanowią ca pojemność tego systemu. Ponie-waż przerwania zewnę trzne powstają w sposób asynchroniczny wzglę dem pracy mikroproce-sora, wię c może się zdarzyć, że w czasie trwania jednego cyklu rozkazowego pojawi się wię -cej niż jedno przerwanie. Konieczne jest wię c stworzenie mechanizmu umożliwiają cego wy-
bór jednego z wielu przerwań, które zostanie obsłużone jako pierwsze. Wybór ten może byćdokonywany jednym z dwóch sposobów: programowo lub sprzę towo. W obydwu przypad-kach system przerwań musi być wyposażony w środki umożliwiają ce dokonanie tego wyboru.Jeśli spośród kilku aktywnych przerwań dokonuje się wyboru jednego, to tym samym obdarzasię go wyższym priorytetem niż pozostałe. Wynika stą d, że wszystkim źródłom przerwańtrzeba przyporzą dkować priorytety, umożliwiają ce kolejną ich obsługę . Jeśli te priorytetyustalone są w sposób sprzę towy, to mówi się o tzw. priorytetowym systemie przerwań. Prio-
rytety nadane przyczynom przerwań w sposób sprzę towy są , na ogół, niezmienialne (tzn. niemogą być zmieniane programowo). Programowy wybór przerwania do obsługi umożliwia za-stosowanie dowolnego algorytmu wyboru, lecz czas upływają cy od chwili powstania prze-rwania do chwili podję cia jego obsługi, zwany czasem reakcji systemu przerwań, wydłuża się .
Z chwilą rozpoczę cia programu obsługi przerwania mikroprocesor zachowuje się tak samo, jak w czasie realizacji przerwanego programu głównego. Nie ma żadnej różnicy po-mię dzy realizacją cią gu rozkazów należą cego do programu głównego i programu obsługi
przerwania. W czasie wykonywania programu obsługi jednego przerwania może powstać in-ne. Powstaje wtedy problem: jak mikroprocesor ma się zachować w takiej sytuacji? Możliwesą dwa sposoby rozwią zania tego problemu:
• Obsługa nowego przerwania nie może się rozpocząć, dopóki nie zostanie zakończony bieżą cy program obsługi. Przerwania wielokrotne obsługiwane w taki sposób nazywają się przerwaniami wzgl ędnymi (rys. 4.2). Przerwania obsługiwane są wtedy kolejno.
• Nowe przerwanie może spowodować przerwanie trwają cego programu obsługi. Prze-rwania wielokrotne obsługiwane w taki sposób nazywają się przerwaniami bezwzgl ęd-nymi (rys. 4.3). Obsługa przerwań realizowana jest tak, jak zagnieżdżają cych się pod-
programów.
Program główny
Program główny
Kontynuacja programugłównego
Kontynuacja programugłównego
Program obsługi 1
Program obsługi 2
Program obsługi 2
Program obsługi 2
INT1
INT1
INT2INT2
Rys. 4.2. Przerwania wzgl ędne (kolejne) Rys. 4.3. Przerwania bezwzgl ędne
8/19/2019 System Przerwan
8/69
INSTYTUT ELEKTRONIKI - 4.4 - Z. Pogoda
Aby umożliwić takie działanie, konieczne jest przyję cie zasady, zgodnie z któr ą , rozpo-czę cie dowolnego programu obsługi zwią zane jest z zablokowaniem mechanizmu przerwań.Blokada przerwań jest stanem wewnę trznym mikroprocesora, w którym nie reaguje on na
zewnę trzne sygnały przerywają ce. Zasada ta przyję ta jest we wszystkich mikroprocesorach:rozpoczę cie programu obsługi przerwania powoduje automatyczne zablokowanie przerwań.Odblokowanie przerwań może być wykonane jedynie drogą programową przez wykonanieodpowiedniego rozkazu. Od programów obsługi zależy wię c, czy wielokrotne przerwania ob-sługiwane bę dą w sposób kolejny (rys. 4.2), czy w sposób zagnieżdżony (rys. 4.3).Jeżeli po-szczególnym źródłom przerwań nadane zostaną priorytety, to jest rzeczą naturalną , by przy-czyna o niższym priorytecie nie mogła spowodować przerwania programu obsługi uaktyw-nionego przez przyczynę o wyższym priorytecie. Wymaga to wyposażenia systemu przerwańw dodatkowe środki sprzę towe, umożliwiają ce generację sygnału przerywają cego pochodzą -cego jedynie od przyczyny o wyższym priorytecie, niż przerwanie aktualnie obsługiwane.
Kolejnym stopniem rozwoju systemów przerwań jest wprowadzenie możliwości chwi-lowego blokowania wybranego przerwania w sposób programowy. Taki rodzaj blokady na-zywa się maskowaniem przerwań. Różnica mię dzy maskowaniem i blokowaniem polega natym, że maskowanie wykonywane jest wyłą cznie z inicjatywy programu i dotyczy wybranego
przerwania, natomiast blokada wykonywana jest automatycznie i dotyczy wszystkich prze-
rwań. Dla umożliwienia pełnej kontroli stanu blokady przerwań, mikroprocesory, zwykle po-siadają tak że rozkaz powodują cy zablokowanie wszystkich przerwań. Niektóre mikroproceso-ry posiadają specjalne przerwanie używane w sytuacjach katastroficznych (np. błą d parzysto-ści w dostę pie do pamię ci lub na magistrali danych). Wykonywanie bieżą cego programu musi
być wtedy natychmiast przerwane i działanie to nie może być ani blokowane ani maskowane.Takie przerwanie nazywa się niemaskowalnym (NMI - ang. non maskable interrupt ).
Z każdą przyczyną przerwania zwią zany jest odpowiadają cy jej program obsługi, zaj-mują cy określone miejsce w pamię ci operacyjnej. Ze wzglę du na to, że programy te muszą
być w każdej chwili gotowe do wykonania, muszą one być programami rezydencyjnymi. Niewyklucza to ładowania nak ładek w czasie ich wykonywania. Mechanizm przerwań musi po-siadać środki umożliwiają ce uaktywnienie programu przypisanego do obsługi określonego
przerwania. W praktyce sprowadza się to do określenia adresu startowego danego programu.Procedura uaktywniania programu obsługi wykonywana jest zazwyczaj w dwóch fazach.W pierwszej fazie nastę puje identyfikacja źródła przerwania, w wyniku której określany jestnp. jego numer. W drugiej fazie numer przerwania zostaje przetworzony na adres startowy
programu obsługi. Działanie to może być wykonywane na drodze sprzę towej lub w sposóbkombinowany: częściowo sprzę towo, częściowo programowo. Oczywiście, sprzę towy sposóbokreślania tego adresu pozwala uzyskać mniejszy czas reakcji systemu przerwań. Niekiedy,dla uproszczenia konstrukcji systemu przerwań, przyjmuje się , że programy obsługi muszą się rozpoczynać w komórkach pamię ci o ściśle określonych przez konstrukcję mikroprocesoraadresach i nie mogą ulegać zmianie. Uzyskuje się wtedy proste konstrukcje, lecz sposób tenuniemożliwia swobodne prowadzenie gospodarki pamię cią .
Ze wzglę du na sposób identyfikacji źródła przerwania, systemy przerwań można po-dzielić na trzy rodzaje:
• Jednopoziomowy uk ł ad przerwań. Mikroprocesor posiada jeden sygnał przerywają cy,który jest równy sumie logicznej wszystkich sygnałów przerywają cych, pochodzą cych
8/19/2019 System Przerwan
9/69
Z. Pogoda - 4.5 - INSTYTUT ELEKTRONIKI
od różnych urzą dzeń (rys. 4.4). Istniejetylko jeden program obsługi, rozpoczyna-
ją cy się od ściśle ustalonego adresu.
Czynnością wstę pną tego programu jestwtedy stwierdzenie, które urzą dzenie wy-wołało przerwanie. Jeśli takich urzą dzeń
było wię cej, to program musi dokonaćwyboru, które z nich ma być obsługiwane
jako pierwsze.
• Wielopoziomowy uk ł ad przerwań. Mikro- procesor posiada kilka wejściowych sy-gnałów przerywają cych (rys. 4.5). Z każ-dym z nich zwią zany jest inny adres roz-
poczynania programu obsługi. Jeśli w tymsamym czasie aktywnych jest wię cej sy-gnałów przerywają cych, to konieczny jestwybór jednego z nich. W zwią zku z tym,każdemu poziomowi przyporzą dkowany
jest określony priorytet. Z każdym pozio-mem może współ pracować wię cej urzą -dzeń, podobnie jak w uk ładzie jednopo-ziomowym. Wszystkie przerwania po-
dzielone zostają na klasy priorytetowe.Identyfikacja przerwania odbywa się wię c
sprzę towo mię dzy poziomami (klasami)i programowo w obr ę bie klas.
• Wektorowy uk ł ad przerwań. Mikroproce-sor posiada jedno wejście przerywające(rys. 4.6 ). Jednak po przyję ciu sygnału
przerwania , mikroprocesor pobiera z oto-
czenia dodatkową informację identyfiku- ją cą przerwanie (najczęściej za pomocą magistrali danych). Identyfikator przerwa-
nia jest użyty do wyznaczenia adresu pro-
gramu obsługi. Stą d, nazywa się on wekto-rem przerwania. Przetworzenie wektora
przerwania na adres programu obsługi od- bywa się w sposób sprzę towy. Wektoroweuk łady przerwań są z tego powodu naj-szybsze (zapewniają najmniejszy czas re-akcji).
Jak wynika z powyższej analizy, część funkcji zwią zanych z obsługą przerwań wyko-nywanych jest wewną trz mikroprocesora a część poza nim. Cały system przerwań sk łada się wię c z dwóch części: wewnę trznego uk ładu przerwań i zewnę trznego uk ładu przerwań. We-
M I K R O P R O C E S O R
M I K R O P R O C E S O R
PRZERWANIE
URZ Ą DZENIE #0
URZ Ą DZENIE #1
URZ Ą DZENIE #2
URZ Ą DZENIE #3
Rys. 4.4. Jednopoziomowy uk ł ad przerwań
Rys. 4.5. Wielopoziomowy uk ł ad przerwań
URZ Ą DZENIE #0
URZ Ą DZENIE #1
URZ Ą DZENIE #2
URZ Ą DZENIE #3
PRZERWANIE #0
PRZERWANIE #1
PRZERWANIE #2
PRZERWANIE #3
M
I K R O P R O C E S O R
Rys. 4.6. Wektorowy uk ł ad przerwań
PRZERWANIE
IDENTYFIKATOR(WEKTOR)
PRZERWANIA
8/19/2019 System Przerwan
10/69
INSTYTUT ELEKTRONIKI - 4.6 - Z. Pogoda
wnę trzny uk ład przerwań jest cechą konstrukcyjną mikroprocesora i projektant systemu mi-kroprocesorowego nie posiada wpływu na sposób jego funkcjonowania. Zewnę trzny uk ład
przerwań może być swobodnie kształtowany przez projektanta, zależnie od wymagań doty-
czą cych obsługi przerwań i ich liczby. Niektórzy producenci mikroprocesorów dostarczają specjalizowane kontrolery przerwań, które ułatwiają projektowanie zewnę trznego uk ładu
przerwań. Należy podkreślić, że struktura i funkcje systemu przerwań mają znaczny wpływna postać programu obsługi. Nie istnieje wię c poję cie uniwersalnego programu obsługi.
4.2. Przerwania w mikroprocesorach 8080/85
Wewnę trzny uk ład przerwań mikroprocesora 8080 charakteryzuje się wyją tkową pro-stotą . Sk ładają się na niego dwa przerzutniki, jedna bramka oraz dekoder wykrywają cy rozka-zy EI ( Enable Interrupt ) i DI ( Disable Interrupt ). Na rys. 4.7 pokazany jest funkcjonalnyschemat tego uk ładu, bez uwzglę dnienia zależności czasowych. Skuteczność zewnę trznego
sygnału przerywają cego INT uzależniona jest od stanu przerzutnika zezwolenia na przerwaniaINTE ( Interrupt Enable). Przerzutnik ten może być wzbudzany i zerowany programowo przezwykonanie rozkazów EI oraz DI. Jeśli przerzutnik INTE jest wyzerowany, to sygnał INT nie mawpływu na działanie mikroprocesora. Jeśli wewnę trzny uk ład przerwań jest odblokowany, towzbudzony zostaje przerzutnik INT, co powoduje powstanie wewnę trznego sygnału INTA. Sy-gnał ten zeruje przerzutnik zezwolenia na przerwania i uk ład przerwań zostaje zablokowany.Ponadto, zostaje on przekazany na zewną trz w postaci bitu w słowie stanu. Testowanie sy-gnału INT odbywa się w ostatnim takcie zegarowym każdego cyklu rozkazowego. Ponieważsygnał INT może się pojawić w dowolnym momencie, wię c aby jego istnienie mogło zostać
INT
INTE
RESET
INTA
INTE
D Q
C
S
D Q
INT
REJESTR ROZKAZÓW
DEKODER ROZKAZÓW
EI
DI
Rys. 4.7. Wewnętrzny uk ł ad przerwań w mikroprocesorze 8080
8/19/2019 System Przerwan
11/69
Z. Pogoda - 4.7 - INSTYTUT ELEKTRONIKI
zarejestrowane w przerzutniku INT, musi on trwać nie krócej niż czas realizacji najdłuższegorozkazu. Najdłużej trwają cym rozkazem jest rozkaz XTHL (wymiana zawartości pary reje-strów HL ze stosem) realizowany w czasie 18 taktów zegarowych, co przy standardowej czę -
stotliwości daje 9 µs. Wzbudzenie przerzutnika INT blokuje też inkrementację licznika rozka-zów PC na cały nastę pny cykl rozkazowy. Na tym kończą się funkcje wewnę trznego uk ładu
przerwań i rozpoczyna się kolejny cykl maszynowy, który jest pierwszym cyklem maszyno-wym nowego cyklu rozkazowego, tzn. jest to cykl maszynowy pobierania rozkazu, lecz wy-
konywany z ustawionym bitem INTA w słowie stanu. Cykl taki nazywa się INTERRUPT. Cyklmaszynowy obsługi przerwania różni się od zwyk łego cyklu pobierania rozkazu FETCH na-stę pują cymi cechami:
1. Stan licznika rozkazów PC nie jest zmieniany przez cały czas trwania noworozpo-czynanego rozkazu, dzię ki czemu zawiera on stale adres nastę pnego rozkazu w pro-gramie głównym, który był by wykonywany, gdyby przerwanie nie wystą piło. Jest to
wię c adres powrotny, od którego należy wznowić program główny po zakończeniuobsługi przerwania. 2. Nowy rozkaz pobierany jest w zwyk ły sposób z magistrali danych, ale źródłem jegonie jest pamięć, lecz zewnę trzny uk ład przerwań. W słowie stanu zamiast aktywnego
bitu MEMR, pojawia się aktywny sygnał INTA. Sygnał ten używany jest w zewnę trz-nym uk ładzie przerwań do strobowania na magistralę danych rozkazu, który spełniarolę wektora przerwań. Równocześnie wewnę trzny uk ład przerwań zostaje zabloko-wany.
Wewnę trzny uk ład przerwań blokowany jest też przez wykonanie operacji RESET. Jestto konieczne, ponieważ w chwili załą czania napięć zasilają cych lub inicjalizacji pracy mikro-
procesora, może on nie być gotowy do natychmiastowej obsługi przerwań (np. w pamię ciRAM brak programów obsługi). Jak wynika z rys. 4.7 istnieją trzy przyczyny blokowania prze-rwań, tj. operacja zerowania, rozpoczę cie obsługi przerwania i wykonanie rozkazu DI. Nato-miast odblokowanie uk ładu przerwań może być dokonane tylko jednym sposobem - przezwykonanie rozkazu EI. Zasada ta przestrzegana jest w wię kszości mikroprocesorów.
Sygnał INTA (ang. Interrupt Acknowledge), stanowią cy potwierdzenie rozpoczę cia ob-sługi przerwania, powinien skasować żą danie obsługi przerwania INT w zewnę trznym uk ła-dzie przerwań, by zapobiec ponownej obsłudze tego samego przerwania po odblokowaniuwewnę trznego uk ładu przerwań.
Moment odblokowania wewnę trznego uk ładu przerwań ustalany jest programowo,w zwią zku z czym, w programie obsługi rozkaz EI musi wystą pić. Gdyby bowiem zabrak ło
tego rozkazu, to żadne przerwanie nie byłoby już obsługiwane. Miejsce wystę powania tegorozkazu w programie obsługi jest zależne od trybu obsługi przerwań. Jeśli przerwania mają być obsługiwane kolejno, tzn. jeden program obsługi nie może być przerywany przez inne przerwania, to rozkaz EI powinien być ostatnim rozkazem programu, znajdują cym się bezpo-średnio przed rozkazem powrotu RET (przerwania wzglę dne). Jeśli natomiast dopuszczalne
jest zagnieżdżanie się przerwań (przerwania bezwzglę dne), to rozkaz EI powinien wystą pić na począ tku programu obsługi. Oczywiście, możliwe jest zabezpieczanie krytycznych czasowofragmentów programu obsługi przed przerwaniami o wyższym priorytecie. Sytuacje takiemogą wystą pić w programach wymiany danych z pamię ciami z wirują cym nośnikiem,w których transmisja bloku danych nie może być przerwana. Orientacyjne przebiegi czasowesygnałów uczestniczą cych w realizacji cyklu maszynowego przerwania pokazane są na rys. 4.8.
8/19/2019 System Przerwan
12/69
INSTYTUT ELEKTRONIKI - 4.8 - Z. Pogoda
Cykl maszynowy obsługi przerwania kończy się wię c wprowadzeniem wektora prze-rwania do rejestru rozkazów i zablokowaniem wewnę trznego uk ładu przerwań. W zwią zkuz tym, wektor przerwania interpretowany jest jak każdy inny rozkaz pobrany z pamię ci.Wektorem przerwań może być w zasadzie dowolny rozkaz i stanowi on pierwszy rozkaz pro-gramu obsługi. Jest to sytuacja wyją tkowa, polegają ca na tym, że mikroprocesor wykonujerozkaz nie znajdują cy się w żadnym z programów w pamię ci operacyjnej. Rozkaz ten jest ge-nerowany w zewnę trznym uk ładzie przerwań.
Prawidłowe wykonanie przerwania musi spełniać dwa nastę pują ce warunki:
1. Zabezpieczenie stanu licznika rozkazów, zawierają cego adres kolejnego rozkazu pro-gramu głównego, od którego musi być wznowiona jego realizacja po zakończeniu ob-sługi przerwania,
2. Załadowanie do licznika rozkazów adresu począ tkowego programu obsługi przerwania.
Nastę pne rozkazy realizowane są już w standardowy sposób, jak w przypadku progra-mu głównego. W zależności od przyczyny przerwania muszą być inicjowane różne programyobsługi. Wobec tego wektor przerwania (rozkaz) musi zawierać informację umożliwiają cą wykonanie skoku do właściwego programu obsługi. Rozkazem spełniają cym te warunki jestrozkaz skoku ze śladem CALL. Jest to rozkaz o długości trzech bajtów, posiadają cy nastę pują -cy format:
CALL: 1 1 0 0 1 1 0 1 x”CD”
mniej znaczą cy bajt adresu
bardziej znaczą cy bajt adresu
Dla przechowania bieżą cej zawartości licznika rozkazów (śladu, adresu powrotnego),rozkaz ten wykorzystuje stos umieszczony w pamię ci operacyjnej. Przed pierwszym użyciem
φ1
φ2
INT
INTE
INT F/F
MAG.DANYCH
DBIN
STAN INTA WEKTORPRZERWAŃ
Obsługa przerwań
M1
T2T1 T3
Rys. 4.8. Orientacyjne przebiegi sygnał ów w cyklu maszynowym przerwania
8/19/2019 System Przerwan
13/69
Z. Pogoda - 4.9 - INSTYTUT ELEKTRONIKI
tego rozkazu (po operacji zerowania RESET) należy ustalić począ tek (dno) stosu przez wpisa-nie odpowiedniego adresu do wskaźnika stosu SP. Można to zrobić za pomocą rozkazu łado-wania bezpośredniego pary bajtów
LXI SP, stack_addr
gdzie stack_addr jest nazwą symboliczną (adresem symbolicznym) dna stosu. Jeśli wię c pro-gramy obsługi przerwań znajdują się w pamię ci stałej ROM i nie jest wymagane żadne ich ła-dowanie, to odblokowanie przerwań może być wykonane zaraz po zainicjowaniu stosu. Roz-kaz CALL wykonywany jest w 5 cyklach maszynowych obejmują cych łą cznie 17 taktów zega-rowych (8.5 µs). Funkcje wykonywane przez rozkaz CALL można opisać w nastę pują cy spo-sób, uwzglę dniają c, że wskaźnik stosu SP zawiera adres ostatnio zapisanej komórki i zapeł-niany jest w kierunku maleją cych adresów
(PCH) → ((SP) – 1) - przesłanie na stos bardziej znaczą cej częścilicznika rozkazów
(PCL) → ((SP)-2) - przesłanie na stos mniej znaczą cej części liczni-ka rozkazów
(SP) – 2 →SP - uaktualnienie zawartości wskaźnika stosu(bajt2)(bajt1) → PC - załadowanie do licznika rozkazów adresu po-
czą tkowego podprogramu
W kolejnych cyklach maszynowych wykonywane są nastę pują ce funkcje:
M1 - wpisanie do rejestru rozkazów pierwszego bajtu rozkazu, pomniejszenie wartościwskaźnika stosu o jedność, powię kszenie zawartości licznika rozkazów o jedność,
M2 - wpisanie do rejestru Z drugiego bajtu rozkazu, czyli mniej znaczą cej części adresu podprogramu, powię kszenie zawartości licznika rozkazów o jedność,
M3 - wpisanie do rejestru W trzeciego bajtu rozkazu, czyli bardziej znaczą cej części ad-resu podprogramu, powię kszenie zawartości licznika rozkazów o jedność, licznik rozkazów zawiera adres nastę pnego rozkazu,
M4 - wysłanie bardziej znaczą cej części licznika rozkazów na stos, pomniejszenie za-wartości wskaźnika stosu o jedność,
M5 - wysłanie mniej znaczą cej części licznika rozkazów na stos.
Po zakończeniu rozkazu CALL wskaźnik stosu zawiera adres ostatnio zapisanej komórki a ad-res skokowy (podprogramu) zawarty jest w parze rejestrów WZ. W cyklu pobierania nastę p-nego rozkazu na magistralę adresową wysyłana jest zawartość rejestrów WZ (adres podpro-
gramu) a do licznika rozkazów wpisywana jest wartość (WZ) + 1 → PC. Nastę pne rozkazy podprogramu realizowane są już w zwyk ły sposób.Powrót z podprogramu odbywa się za pomocą rozkazu RETURN, wykonują cego nastę -
pują ce funkcje:
((SP)) → PCL((SP) + 1 ) → PCH(SP) + 2 → SP
8/19/2019 System Przerwan
14/69
INSTYTUT ELEKTRONIKI - 4.10 - Z. Pogoda
Rozkaz ten wykonywany jest w trzech cyklach maszynowych
M1 - wpisanie do rejestru rozkazów jednobajtowego rozkazu, powię kszenie zawartościlicznika rozkazów o jedność,
M2 - pobranie ze stosu jednego bajtu i wpisanie go do rejestru Z, powię kszenie zawarto-ści wskaźnika stosu o jedność,
M3 - Pobranie ze stosu kolejnego bajtu i wpisanie go do rejestru W, powię kszenie za-wartości wskaźnika stosu o jedność.
Jeżeli w czasie wykonywania podprogramu stos był zrównoważony, to po zakończeniu roz-kazu RETURN, w rejestrach WZ znajdzie się adres powrotny, zapisany na stosie przez rozkazCALL. Podobnie jak poprzednio, w czasie pierwszego cyklu maszynowego nastę pnego cyklurozkazowego, na magistralę adresową wysyłana jest zawartość pary rejestrów WZ a do liczni-ka rozkazów wpisywana jest wartość (WZ) + 1 → PC.
Opisane działania, zwią zane z wykonywaniem skoku do podprogramu i powrotu do
programu głównego przedstawione są poglą dowo na rys. 4.9.Jeżeli w czasie cyklu maszynowego obsługi przerwania, wektorem przerwań bę dzie kod
rozkazu CALL, to wykonywany jest on podobnie jak poprzednio z tym, że blokowana jest in-krementacja licznika rozkazów w cyklach M1 i M2. Oznacza to, że licznik rozkazów zawieracią gle adres nastę pnego rozkazu programu głównego. Rozpoczyna się wykonanie rozkazuCALL w zwyk ły sposób, tzn. wykonywane są dwa nastę pne cykle maszynowe w celu skom-
pletowania rozkazu. Konfiguracje bitów w słowie stanu wskazują na cykle typu odczyt pa-mię ci (sygnał interfejsowy MEMR). Ale rozkaz nie może być kompletowany z pamię ci, tylkoz zewnę trznego uk ładu przerwań. Aby to umożliwić konieczne jest zastą pienie dwóch kolej-nych impulsów MEMR impulsami INTA. Operację tak ą wykonuje automatycznie sterownik magistrali 8228. Taka modyfikacja działania rozkazu CALL przedstawiona jest na rys. 4.10.
W rezultacie, zewnę trzny uk ład przerwań otrzymuje trzy kolejno po sobie nastę pują ceimpulsy INTA, które muszą być wykorzystane do strobowania na magistralę danych trzechkolejnych bajtów rozkazu CALL. Ponieważ argumentem rozkazu CALL jest pełny, 16-bitowy,adres pamię ci, to programy obsługi mogą być położone w dowolnym miejscu przestrzeni ad-resowej. Projektant posiada pełną swobodę rozmieszczania w pamię ci elementów oprogra-mowania. Ażeby zewnę trzny uk ład przerwań mógł wygenerować rozkazy CALL z pełnymi ad-resami programów obsługi, musi być wyposażony w zespół rejestrów, do których te adresyzostaną wcześniej wpisane w sposób programowy. Wymagana wię c bę dzie procedura inicja-lizacji zewnę trznego uk ładu przerwań, który traktowany jest w niej jak urzą dzenie wyjściowe.
W celu uproszczenia konstrukcji uk ładu przerwań, mikroprocesor 8080 wyposażonyzostał w uproszczone rozkazy skoku ze śladem RST ( Restart ). Są to rozkazy jednobajtowe,w których trzy bity mogą być ustalane dowolnie. Te trzy bity wykorzystywane są w mikro-
procesorze do ustalenia adresu skokowego. Format tego rozkazu jest nastę pują cy
1 1 1 N N N 1 1
Funkcje rozkazu RST N można opisać w nastę pują cy sposób
(PCH) → (SP) – 1(PCL) → (SP) – 2(SP) – 2 → SP
8 ⋅ N → PC
8/19/2019 System Przerwan
15/69
Z. Pogoda - 4.11 - INSTYTUT ELEKTRONIKI
STOS
n + 3 (L)n + 3 (H)
Zajęta
SP - 2SP- 1
SP
SP'SP' + 1
SP' + 2
CALL
PAMIĘĆ
n - 1nn + 1n + 2n + 3n + 4
CALLm (L)m (H)
PROGRAM GŁÓWNY
RET
RET
SP' = SP + 2
PC' n = 3
IR PC m + k + 1RET
PODPROGRAM
PAMIĘĆ
mm + 1m + 2
m + k
SP' = SP - 2
m
n + 3
PC'
PCIR CALL m (L) m (H)
SP'SP' + 1SP' + 2
SP - 2SP- 1SP
STOS
n + 3 (L)n + 3 (H)
Zajęta PAMIĘĆ
CALL
IR CALL
RET
UKŁ ADPRZERWAŃ
INTA
m PC
PC'
n + 1
m
PAMIĘĆ
n - 1nn +1
INT
PROGRAM GŁÓWNY
RETPC
PC'
SP' = SP + 2
n + 1
m + k + 1RETIR
PROGRAMOBSŁUGI
PRZERWAŃ
mm + 1m + 2
m + k
Rys. 4.9. Realizacja skoku do podprogramu i powrót do programu g ł ównego
Rys. 4.9. Realizacja skoku do programu obsł ugi przerwania i powrót do programu g ł ównego
8/19/2019 System Przerwan
16/69
INSTYTUT ELEKTRONIKI - 4.12 - Z. Pogoda
Oznacza to, że po zapamię taniu na stosie bieżą cej zawartości licznika rozkazów (adresu śla-dowego), wpisywany jest do niego nowy adres (skokowy), równy
(PC) = 00000000 00NNN000
Trzybitowa liczba N może przyjmować 8 różnych wartości, a wię c za pomocą rozkazówRST N można inicjować 8 różnych programów obsługi przerwań rozpoczynają cych się w nastę pują cych komórkach pamię ci
AdresRozkaz
szesnastkowy dziesiętnyRST 0 0000 0RST 1 0008 8RST 2 0010 16RST 3 0018 24RST 4 0020 32RST 5 0028 40
RST 6 0030 48RST 7 0038 56
Wynika stą d, że dla każdego programu obsługi zarezerwowany zostaje blok 8 komórek pa-mię ci. Typowe wykorzystanie tego bloku jest nastę pują ce
PUSH PSW ;zapamię tanie na stosie stanu procesoraPUSH B ;zapamię tanie na stosie zawartości pary rejestrów BCPUSH D ;zapamię tanie na stosie zawartości pary rejestrów DEPUSH H ;zapamię tanie na stosie zawartości pary rejestrów HLEI ;odblokowanie przerwańJMP INTN ;skok do programu obsługi przerwania o numerze N.
Zmienna część wektora przerwania, generowanego przez zewnę trzny uk ład przerwań, jest w tym przypadku wielkością 3-bitową . Pozostałe bity mają zawsze wartości równe 1. Za-sada generacji pełnego 8-bitowego wektora przerwań pokazana jest na rys. 4.11.
NUMER ŹRÓDŁ APRZERWANIA
0
1
2
3
4
5
6
7 R E J E S T R W E K T O R A
P R Z E R W A Ń
MAGISTRALADANYCH
Rys. 4.11. Generator jednobajtowego wektora przerwań
8/19/2019 System Przerwan
17/69
Z. Pogoda - 4.13 - INSTYTUT ELEKTRONIKI
4.3. Jednopoziomowy, wielourzą dzeniowy układ przerwań
Podstawowym problemem w jednopoziomowym, wielourzą dzeniowym uk ładzie prze-
rwań jest identyfikacja źródła przerwania, umożliwiają ca rozpoczę cie, właściwego dla tegoźródła, programu obsługi. Powstanie wspólnego sygnału przerwania oznacza, że przynajmniej
jedno z urzą dzeń żą dało obsługi.Możliwe są dwa sposoby przeprowadzenia tej identyfikacji
• Sygnały żą dania przerwania zapamię tywane są we wspólnym rejestrze przerwań, poodczytaniu zawartości którego programowo wybierane jest przerwanie, które bę dzie ob-sługiwane jako pierwsze.
• Każde źródło przerwania wyposażone jest w rejestr stanu, w którym wyróżniony bitzawiera informacje, czy dane źródło było przyczyną powstania przerwania, czy nie.Konieczne jest wtedy odczytywanie zawartości rejestrów stanu (w programowo ustalo-nej kolejności), i podobnie jak poprzednio, podję cie decyzji, które z żą dań przerwania
ma być obsługiwane jako pierwsze.
Cechą charakterystyczną jednopoziomowego uk ładu przerwań jest istnienie jednego programu obsługi. Uaktywnienie właściwej procedury obsługi odbywa się na podstawie do-datkowej informacji, uzyskiwanej poprzez odczyt rejestru przerwań lub rejestrów stanu urzą -dzeń. W obydwu przypadkach wybór procedury obsługi dokonywany jest przez przeszukiwa-nie (ang. pooling ). Identyfikacja źródeł poprzez odczyt słów stanu jest operacją dłużej trwają -cą , lecz można wtedy uzyskać wię cej informacji o stanie urzą dzenia. Ta dodatkowa informa-cja umożliwia wykonanie przez program obsługi różnych funkcji, zależnie od stanu urzą dze-nia.
W przypadku mikroprocesora 8080 jednopoziomowy uk ład przerwań może być uzy-
skany przez generację zawsze tego samego wektora przerwań. Jeśli jednostka centralna z mi-kroprocesorem 8080 zawiera kontroler interfejsu 8228, to efekt taki może być uzyskany przez przyłą czenie wyjścia sygnał INTA do źródła napię cia +12 V. Generowany jest wtedy automa-
INTA
µPMAGISTRALA DANYCH
KANAŁ#0
KANAŁ#1
KANAŁ#2
Rejestr przerwań
Przetwornik A/C
Drukarka
Koniec konwersji
Bufor pusty
INTA
+5 V
DI0
8212
DO
DI7
Rys. 4.12. Struktura jednopoziomowego uk ł adu przerwań
8/19/2019 System Przerwan
18/69
INSTYTUT ELEKTRONIKI - 4.14 - Z. Pogoda
tycznie wektor przerwania, na który sk ładają się same jedynki, co odpowiada rozkazowi RST7 i wspólny program obsługi przerwań musi się rozpoczynać w komórce pamię ci o adresie56d. Na rys. 4.12 pokazany jest przyk ład uk ładu, w którym generatorem wektora przerwań
jest rejestr 8-bitowy, którego wyjścia przyłą czane są do magistrali danych przez aktywny po-ziom sygnału INTA.
Sygnały gotowości urzą dzenia do wysłania lub przyję cia bajtu danych wpisywane są dorejestru przerwań oraz przez bramk ę sumy logicznej wprowadzane są na wejście przerywają -ce mikroprocesora. Sygnały te traktowane są jako żą dania obsługi. Pojawienie się co najmniej
jednego żą dania przerwania powoduje rozpoczę cie cyklu INTERRUPT w mikroprocesorze.Efektem tego jest powstanie sygnału INTA, który wyprowadza na magistralę danych same je-dynki. Mikroprocesor wykonuje rozkaz RST 7, czyli rozpoczyna program obsługi od adresu56d. Równocześnie wewnę trzny uk ład przerwań zostaje zablokowany. Uk ład przedstawionyna rys. 4.12 może być wykorzystany tylko do takiej obsługi przerwań wielokrotnych (prze-rwania wzglę dne). Oznacza to, że uk ład przerwań musi pozostać zablokowany do końca
trwania programu obsługi. Rozkaz odblokowują cy przerwania EI wystą pi bezpośrednio przedrozkazem powrotu do programu głównego RET. Wcześniejsze odblokowanie przerwań do-
prowadziłoby do rozpoczę cia kolejnego żą dania obsługi. W efekcie nastą piłoby niekontrolo-wane rozpoczynanie tego samego programu obsługi i w rezultacie obsługa niektórych prze-rwań mogłaby się zakończyć z bardzo dużym opóźnieniem. Ponadto, jeśli skutki działaniaróżnych procedur obsługi byłyby uzależnione od siebie, to mogłoby to doprowadzić do cią -głego powtarzania tych samych procedur. Stan taki nazywa się zakleszczeniem systemu.
Ważna funkcja uk ładu przerwań polega na kasowaniu bitu w rejestrze przerwań, któremusi być wykonane po rozpoczę ciu obsługi. Operacja ta może być wykonana w różny spo-sób, np.
• Kasowanie bitu w rejestrze przerwań wykonywane jest automatycznie przez urzą dzenie,które wywołało przerwanie. Np. wysłanie kolejnego bajtu do drukarki może równocze-śnie kasować bit w rejestrze stanu.
• Kasowanie bitu w rejestrze przerwań odbywa się w sposób programowy. Może to byćwykonane przez ponowny zapis zawartości rejestru przerwań, po wyzerowaniu odpo-wiedniego bitu, lub przez indywidualne zerowanie bitu za pomocą rozkazu wyjściaOUT. Każdy bit rejestru przerwań musi mieć wtedy przydzielony oddzielny adres.
Na rys. 4.13 pokazany jest przyk ład uk ładu z indywidualnym kasowaniem bitu żą dania przerwania. W uk ładzie tym rejestr 8212 pełni rolę bufora trójstanowego wyprowadzają cegozawartość rejestru przerwań na magistralę danych. Właściwy rejestr przerwań stanowi zespół
przerzutników D z indywidualnym zerowaniem. Dzię ki połą czeniu wyjścia STB rejestru 8212z napię ciem zasilają cym, stan tych przerzutników powielany jest w jego przerzutnikach we-wnę trznych. Stan rejestru 8212 odczytywany jest przez program obsługi za pomocą rozkazuIN 18. Program obsługi kasuje żą danie obsługi przerwania za pomocą rozkazu OUT xx.
Jeśli rejestr przerwań zawiera wię cej zgłoszeń, które mogą powstać w czasie wykony-wania programu obsługi, to po jego zakończeniu sygnał INT nadal jest aktywny i rozpoczynasię obsługa nastę pnego przerwania. Ustalenie kolejności obsługi odbywa się w sposób pro-gramowy. Po odczytaniu zawartości rejestru przerwań należy podjąć decyzję , które przerwa-nie ma być obsługiwane jako pierwsze. Należy wię c ustalić regulamin obsługi kolejki zgło-szeń. Problem ten może być rozwią zany wieloma sposobami, np.:
8/19/2019 System Przerwan
19/69
Z. Pogoda - 4.15 - INSTYTUT ELEKTRONIKI
• Cykliczne przesuwanie zawartości akumulatora z testowaniem flagi przeniesieniaCY. Za pomocą rozkazu skoku warunkowego JC wykonywany jest skok do właści-wego programu obsługi przerwania. Pesuwanie może być wykonywane w prawo
lub w lewo. Przy przesunię ciach w prawo, jako pierwsze bę dą obsługiwane prze-rwania sygnalizowane na mniej znaczą cych bitach magistrali. W ten sposób po-szczególnym przerwaniom nadane zostaną priorytety.
• Przesuwanie maski z wę drują cą jedynk ą . Ustala się mask ę w postaci bajtu, w któ-rym tylko jeden bit jest równy jedności a pozostałe są zerowe. Przez wykonanie ilo-czynu logicznego z zawartością rejestru przerwań można się przekonać, czy zgło-szenie o odpowiednim numerze było aktywne. Skok do właściwego programu ob-sługi przerwań bę dzie wtedy wykonywany za pomocą rozkazu JNZ (zależnym odflagi zera).
Jeśli automatycznie generowanym wektorem przerwań jest rozkaz RST 7, to programobsługi musi się rozpoczynać w komórce pamię ci o adresie 56d. Począ tkowy fragment pro-gramu obsługi może mieć nastę pują cą postać
ORG 56
PUSH PWSPUSH BPUSH DPUSH HIN 18hRLCJC IROUT0RLCJC IROUT1…………RLCJC IROUT7JMP ERROR
INT
STBDI0DI1DI2
MAGISTRALADANYCH
CLRDS1MD DS2
IN 18
INT REQ0
D
C
Q
CLR
OUT 10
D
C
Q
CLR
INT REQ1
OUT 11
D
C
Q
CLR
INT REQ2
OUT 12
Rys. 13. Uk ł ad przerwań z programowym kasowanięm żądań przerwań
8/19/2019 System Przerwan
20/69
INSTYTUT ELEKTRONIKI - 4.16 - Z. Pogoda
Należy pamię tać, że w czasie wykonywania programu obsługi przerwania stos musi byćzrównoważony. Taka metoda wyboru zgłoszenia do obsługi jest równoważna nadaniu po-szczególnym zgłoszeniom ustalonych priorytetów. Wię ksze możliwości można uzyskać przez
zastosowanie maski. Jednak operacja iloczynu logicznego z mask ą zawierają cą tylko jedną jedynk ę zeruje wszystkie bity akumulatora z wyją tkiem jednego. Dlatego oryginalna zawar-tość rejestru przerwań musi być zapamię tana w innym rejestrze. Poniższa sekwencja rozka-zów wyszukuje przerwanie z takim samym regulaminem jak poprzedni
IN 18hMOV B, A ANI 01hJNZ IROUT0MOV A,B ANI 02hJNZ IROUT1…………
ANI 80hJNZ IROUT7JMP ERROR
Ustawiają c maski 01h, 02h, ... w innej kolejności, można ustalić dowolną kolejność ob-sługiwania przerwań.
Stosowanie masek pozwala tak że utworzyć inne regulaminy obsługi kolejki zgłoszeń. Np. w praktyce czę sto mają zastosowanie tzw. priorytety cykliczne, w których obsłużonezgłoszenie bę dzie ponownie obsługiwane jako ostatnie. Zachodzi wtedy konieczność zapa-mię tanie maski w wydzielonej komórce pamię ci. W czasie inicjalizacji systemu należy ustalić
począ tkową wartość maski, która w czasie wykonywania obsługi bę dzie przesuwana. Przyj-mijmy, że począ tkowa wartość maski zostanie ustalona jako 80h
LXI H, MASKAMVI M, 80h
Przeszukiwanie kolejki zgłoszeń może być wtedy zrealizowane za pomocą nastę pują cej se-kwencji rozkazów
………IN 18hMOV B, ALXI H, MASKAMOV C, MMOV A, CRLCMOV C, A ANA BJNZ IROUT0MOV A, CRLCMOV C, A ANA BJNZ IROUT1………MOV A, CRLCMOV C, A ANA B
8/19/2019 System Przerwan
21/69
Z. Pogoda - 4.17 - INSTYTUT ELEKTRONIKI
JNZ IROUT7JMP ERROR
W chwili rozpoczę cia przeszukiwania maska posiada jedynk ę na pozycji odpowiadają -
cej przerwaniu ostatnio obsługiwanemu. Przed każdym kolejnym testem maska jest przesu-wana cyklicznie o jeden bit w lewo i ponownie zapisywana w rejestrze C. Jeśli wię c począ t-kowa wartość maski była równa 80h, to po przesunię ciu cyklicznym w lewo o jeden bit bę dzieona miała wartość równą 01h. Proces przeszukiwania rozpocznie się od przerwania nr 0. Poznalezieniu aktywnego przerwania aktualna wartość maski musi być zapamię tana w komórceMASKA. Tak wię c, każdy właściwy program obsługi musi się rozpocząć od rozkazu MOV M, C(w rejestrach HL znajduje się adres komórki MASKA). Po rozpoczę ciu nowego cyklu przeszu-kiwania, jako pierwsze testowane bę dzie zgłoszenie nastę pne po ostatnio obsługiwanym.Można powiedzieć, że w tym algorytmie, przerwanie, którego obsługa się rozpoczęła otrzy-muje priorytet najniższy a nastę pne przerwanie - najwyższy. Zmiany priorytetów odbywają się cyklicznie, tzn. nastę pnym za przerwaniem nr 7 jest przerwanie nr 0.
4.4. Wektorowy układ przerwań
Podstawowym problemem w konstrukcji wektorowych uk ładów przerwań jest genera-cja wektora przerwania, identyfikują cego źródło przerwania. Jeśli jako wektor przerwania
przyjąć rozkaz RST, to mamy do dyspozycji trzy bity identyfikują ce przerwanie. Przyporzą d-kowują c każdemu z tych bitów jedno źródło przerwania, otrzymamy możliwość identyfikacjiczterech źródeł, dla których programy obsługi bę dą sią rozpoczynać w komórkach pamię ci
o adresach 0, 8, 16 i 32 (dziesię tnie). Adresom tym odpowiadają nastę pują ce wartości bitówzmiennych w rozkazie RST
NNN Adres000 0001 8010 16100 32
Uk ład przerwań musi zapewniać, by nigdy wię cej niż jeden z tych bitów nie miał war-tości 1. Warunek ten można spełnić, przypisują c wszystkim przerwaniom priorytety. Na rys.4.14 pokazany jest prosty uk ład generacji wektora przerwań o powyższych właściwościach.
Najwyższy priorytet posiada przerwanie INT REQ0. Jeśli jest ono aktywne, to wszystkie bramki B1 ÷ B5 są zamknię te i wektor przerwania jest równy NNN = 000 (RST 0). Jeśli aktyw-ne jest przerwanie INT REQ1, to zamknię te są bramki B2 ÷ B5 i generowany jest wektor prze-rwania równy NNN = 001 (RST 1) itd.
Uk ład z rys. 4.14 może być rozszerzony do obsługi 8 przerwań przez zastosowanieuk ładu priorytetowego z kodowaniem. Uk ład ten wybiera aktywną linię wejściową o najwyż-szym priorytecie i wyprowadza na zewną trz kod binarny numeru tej linii. Uk ładem spełniają -cym ten warunek jest uk ład SN74148, którego działanie opisane jest poniższą tablicą prawdy
8/19/2019 System Przerwan
22/69
INSTYTUT ELEKTRONIKI - 4.18 - Z. Pogoda
Koder priorytetowy SN74148
EI 0 1 2 3 4 5 6 7 A2 A1 A0 GS EOL × × × × × × × × H H H H HL H H H H H H H H H H H H LL × × × × × × × L L L L L LL × × × × × × L H L L H L HL × × × × × L H H L H H L HL × × × × L H H H L H L L HL × × × L H H H H H L H L HL × × L H H H H H H L L L HL × L H H H H H H H H H L HL L H H H H H H H H H L L H
Wykorzystanie uk ładu SN74148 do konstrukcji wektorowego uk ładu przerwań pokazane jest na rys. 4.15. Sygnał wyjściowy EO ( Enable Output ) jest aktywny, jeśli przynajmniej je-den z sygnałów wejściowych jest aktywny. Oznacza wię c istnienie przynajmniej jednego żą -dania przerwania a wię c może być użyty jako sygnał przerwania dla mikroprocesora. źródło
przyłą czone do wejścia nr 7 kodera priorytetowego posiada najwyższy priorytet. Odpowia-dają cy mu wektor przerwania jest równy NNN = 000 a jego program obsługi musi się rozpo-cząć od adresu równego 0.
Warunki obsługi programowej takiego uk ładu są takie same jak dla uk ładu jednopozio-mowego, tzn. kasowanie żą dania obsługi przerwania rozpoczę tego odbywa się programowoa odblokowanie przerwań wykonywane jest bezpośrednio przed powrotem do programugłównego (przerwania wzglę dne).
Rejestr zgłoszeń
D Q
C
QCLR
D Q
C
QCLR
D Q
C
Q
CLR
D Q
C
QCLR
INT REQ1
OUT 1
INT REQ2
OUT 2
INT REQ3
OUT 3
Układ priorytetowy
B1
B2
B3
B4
B5
Generator wektoraprzerwań
STB
8212
DI DO
CLRDS1 DS2
INTA
Magistraladanych
INT
Rys. 4.14. Prosty wektorowy uk ł ad przerwań
8/19/2019 System Przerwan
23/69
Z. Pogoda - 4.19 - INSTYTUT ELEKTRONIKI
Dalsze rozwinię cie zewnę trznego uk ładu przerwań polega na wprowadzeniu mechani-zmu automatycznego zerowania sygnału żą dania obsługi dla przerwania, którego obsługa zo-stała rozpoczę ta. Można w tym celu wykorzystać dekoder kodu BCD na kod dziesię tny (1 z10), np. SN7442. Tablica prawdy dla tego dekodera jest nastę pują ca
Dekoder BCD na 1 z 10 SN7442
Wejście BCD Wyjście dziesiętneNr
D C B A 0 1 2 3 4 5 6 7 8 90 L L L L L H H H H H H H H H1 L L L H H L H H H H H H H H2 L L H L H H L H H H H H H H3 L L H H H H H L H H H H H H4 L H L L H H H H L H H H H H
5 L H L H H H H H H L H H H H6 L H H L H H H H H H L H H H7 L H H H H H H H H H H L H H8 H L L L H H H H H H H H L H9 H L L H H H H H H H H H H L
A H L H L H H H H H H H H H HB H L H H H H H H H H H H H HC H H L L H H H H H H H H H HD H H L H H H H H H H H H H HE H H H L H H H H H H H H H HF H H H H H H H H H H H H H H
Uk ład przerwań wykorzystują cy ten dekoder pokazany jest na rys. 4.16.
Rejestr zgłoszeńD
C
CLR
INT REQ0
OUT 0
Q
D
C
CLR
INT REQ1
OUT 1
Q
D
C
CLR
INT REQ3
OUT 3
Q
Koder priorytetów
0 EO
74148 A0
A1
A2
7 EI
INT
Generator wektoraprzerwań
STB
8212
DI DO
CLRDS1 DS2
Magistraladanych
INTA
Rys. 4.15. Wektorowy uk ł ad przerwań z koderem priorytetów SN74148
8/19/2019 System Przerwan
24/69
INSTYTUT ELEKTRONIKI - 4.20 - Z. Pogoda
W stanie spoczynkowym, gdy sygnał INTA jest nieaktywny, na wejściu D dekodera znaj-duje się sygnał wysoki H i wszystkie jego wyjścia od 0 do 7 znajdują się też w stanie nieaktyw-
nym, niezależnie od stanu pozostałych wejść. W cyklu INTERRUPT sygnał INTA staje się aktyw-ny i poziom sygnału na wejściu D jest niski. Jak wynika a powyższej tablicy prawdy, jedna liniawyjściowa, o numerze odpowiadają cym liczbie utworzonej przez stany wejść A, B, C, uzyskuje
poziom niski, co powoduje wyzerowanie odpowiedniego bitu w rejestrze zgłoszeń. Na rys. 4.17 pokazany jest uk ład przerwań z maskowaniem. Jest on wyposażony w dwa
dodatkowe rejestry: rejestr maski i rejestr przerwań maskowanych, zbudowane z wykorzysta-niem uk ładów 8212, pracują cych w trybie 1. Rejestr maski działa jak urzą dzenie wyjściowe,do którego, za pomocą rozkazu OUT, można wpisać dowolny bajt, traktowany jak maska
przerwań. Poszczególne bity tej maski sterują wprowadzaniem zgłoszeń do rejestru przerwańmaskowanych. Jeśli bit maski jest zerowy, to bramka wejściowa rejestru przerwań maskowa-nych jest zamknię ta i odpowiednie zgłoszenie nie bę dzie obsługiwane. Z chwilą rozpoczę cia
obsługi przerwania zostaje zablokowany wewnę trzny uk ład przerwań, co sygnalizowane jestnieaktywnym poziomem sygnału INTE. Zostaje wtedy zablokowana zmiana zawartości reje-stru przerwań maskowanych. Zabezpiecza to przed wyzerowaniem niewłaściwego bitu w re-
jestrze przerwań niemaskowanych. Gdyby tej blokady nie było i po rozpoczę ciu obsługi jed-nego przerwania powstałoby nowe o wyższym priorytecie, to mogłoby zostać skasowane
przez sygnał INTA.W uk ładzie tym wystę puje problem maskowania przerwań, zwią zany z tym, że do reje-
stru maski istnieje tylko jednokierunkowy dostę p. Aby zmienić tylko jeden bit maski, po-trzebna jest znajomość całej. Nie można jej jednak odczytać. Rozwią zanie tego problemu mo-że być uzyskane przez równoczesny wpis maski do rejestru i do ustalonej komórki pamię ci.Wtedy operacje maskowania przeprowadza się na masce pobranej z pamię ci.
Rejestr zgłoszeń
D
C
CLRQ
INT REQ0
Koder priorytetów
7 EO
74148 A0
A1
A2
EI0
0
7442 A
B
C
D
7
Dekoder 1 z 10
Generator wektoraprzerwań
STB
8212
CLR
DS1 DS2
Magistraladanych
INTA
INT
Rys. 4.16. Uk ł ad przerwań z automatycznym kasowaniem żądania obsł ugi
8/19/2019 System Przerwan
25/69
Z. Pogoda - 4.21 - INSTYTUT ELEKTRONIKI
4.5. Zagnieżdżanie przerwań
Zagnieżdżanie programów obsługi ma miejsce wówczas, gdy program obsługi jednego prze-rwania może być przerywany przez inne przerwanie (rys. 4.3). W celu umożliwienia rozpo-czę cia obsługi nowego przerwania konieczne jest programowe odblokowanie wewnę trznegouk ładu przerwań. Oczywiście, odblokowanie to może być wykonane dopiero po wyzerowaniuzgłoszenia bieżą co obsługiwanego przerwania. Założymy, że źródło nie może generować no-wego sygnału żą dania przerwania, dopóki nie zakończy się program obsługi poprzedniego.Jeśli odblokowanie przerwań wystą piłoby w programach obsługi w uk ładach opisanychw poprzednim paragrafie, to każde nowe przerwanie powodowałoby rozpoczę cie nowego
programu obsługi. W ten sposób mogłyby się rozpocząć programy obsługi wszystkich prze-rwań. Aktualnie obsługiwane byłoby przerwanie, które pojawiłoby się jako ostatnie. Zakoń-
czenie obsługi pierwszego rozpoczę tego przerwania nastą piłoby dopiero wtedy, gdy zakoń-czona zostanie obsługa wszystkich zgłoszeń i nie pojawią się żadne nowe. Źródła, którychobsługa się zakończyła mogą generować nowe sygnały przerwań, których obsługa rozpoczniesię niezwłocznie. W ten sposób obsługa zgłoszenia, które wystą piło jako pierwsze może byćzakończona z bardzo dużym opóźnieniem, lub przy dużej czę stotliwości innych zgłoszeń mo-że się nigdy nie zakończyć. Przez pierwsze zgłoszenie rozumiane jest przerwanie pojawiają cesię w sytuacji, gdy nie było obsługiwane żadne inne. Ponieważ sygnały przerwań powstają w sposób asynchroniczny, to każde zgłoszenie może być pierwszym. Oznacza to, że opóźnie-nie obsługi jest zależne od momentu czasu, w którym pojawi się zgłoszenie. Najwię kszeopóźnienie wystą pi w obsłudze zgłoszenia pierwszego a najszybciej zostanie obsłużone zgło-szenie ostatnie.
Rejestr przerwań
niemaskowanych
INT REQ 0
D Q
C
CLR
Rejestr przerwań
maskowanych
8212
CLRDS1 DS2
MDINTE
Koder priorytetów
74148EO
A0 A1 A2
EI CLRDS1 DS2
MD
8212
STB
Rejestr wektoraprzerwań
Magistraladanych
INT
Rejestr maski
DO0DO1DO2
8212
CLRDS1 DS2
MD
DI
Dekoder zerowaniazgłoszeń
7442
A
B
C
D
OUT n
Magistraladanych
INTA
Rys. 4.17. Wektorowy uk ł ad przerwań z maskowaniem
8/19/2019 System Przerwan
26/69
INSTYTUT ELEKTRONIKI - 4.22 - Z. Pogoda
Uporzą dkowanie kolejności obsługi zgłoszeń można uzyskać, określają c zgłoszenia,których obsługa może podlegać wię kszym i mniejszym opóźnieniom. Wszystkie zgłoszeniazostają w ten sposób uporzą dkowane według ważności. Zgłoszenie, którego obsługa musi być
realizowana z najmniejszym opóźnieniem otrzymuje najwyższy priorytet, co oznacza, że niemoże być przerwana przez żadne inne zgłoszenie. Odwrotnie, zgłoszenie, którego obsługamoże się odbyć z najwię kszym opóźnieniem otrzymuje najniższy priorytet, co oznacza, żemoże być przerwana przez każde inne zgłoszenie. Na rys. 4.18 pokazana jest zasada działania
priorytetowego uk ładu przerwań. Uk ład ten wyposażony jest w dwa dodatkowe bloki funk-
cjonalne: rejestr poziomu bieżą cego i komparator. Załóżmy, że system mikroprocesorowyznajduje się w stanie spoczynku, tzn. brak jest aktywnych przerwań. Do rejestru poziomu bie-żą cego musi być wpisana wartość, umożliwiają ca wygenerowanie sygnału INT, jeśli pojawisię dowolne żą danie przerwania. Każdemu zgłoszeniu przypisany jest, przez koder prioryte-tów, trzybitowa liczba (dla 8 wejść przerywają cych), oznaczają ca priorytet tego zgłoszenia.
W stanie począ tkowym komparator generuje sygnał przerwania przy dowolnym priorytecie.Rozpoczyna się program obsługi tego przerwania z zablokowanym wewnę trznym uk ładem przerwań. Program obsługi wpisuje poziom priorytetu tego przerwania do rejestru poziomu bieżą cego, po czym wewnę trzny uk ład przerwań zostaje odblokowany. Jeśli teraz pojawi się zgłoszenie o niższym priorytecie, to komparator nie wygeneruje nowego sygnału przerwań.Zostanie ono jedynie zarejestrowane w rejestrze zgłoszeń. Jeśli natomiast pojawi się zgłosze-nie o wyższym priorytecie, to komparator wygeneruje nowy sygnał przerwania INT = ( A > B) irozpocznie się nowy program obsługi, wpisują cy własny poziom priorytetu do rejestru po-ziomu bieżą cego. Po zakończeniu tego programu, wznawiany jest program przerwany.Wznowienie to musi być zwią zane z odtworzeniem poziomu priorytetu programu przerwane-go. W ten sposób poziom priorytetu staje się elementem stanu programu, na równi z zawarto-
Żą dania przerwańINT REQ n
R e j e s
t r z g ł o s z e ń
i
k o d e r
p r i o r y t e t ó w
R e j e s t r p o z i o m u
b i e ż ą c e g o
Do rejestruwektora
przerwań
Magistrala danych
OUT m
B
INT
A
Komparator
A > B
Rys. 4.18. Priorytetowy uk ł ad przerwań z zagnie ż d ż aniem
8/19/2019 System Przerwan
27/69
Z. Pogoda - 4.23 - INSTYTUT ELEKTRONIKI
ściami rejestrów uniwersalnych. Konieczne jest wię c stworzenie dostę pu do poziomu priory-tetowego programu przerywanego. Możliwe są dwa sposoby rozwią zania tego problemu
• Rejestr poziomu bieżą cego jest rejestrem dwukierunkowym z możliwością zapisu iodczytu. Za pomocą rozkazu IN można odczytać jego zawartość i zapisać na stosie, podobnie jak zawartości rejestrów uniwersalnych. Nastę pnie, za pomocą rozkazuOUT można wpisać do niego poziom własny rozpoczynanego programu.
• Rejestr poziomu bieżą cego jest rejestrem jednokierunkowym, umożliwiają cym je-dynie zapis. Wtedy należy zarezerwować w pamię ci komórk ę o ustalonym adresie,wspólną dla wszystkich programów obsługi, zawierają cą kopię zawartości rejestru
poziomu bieżą cego. Na począ tku programu obsługi zawartość tej komórki zapisy-wana jest na stosie a poziom własny wpisywany jest do rejestru poziomu bieżą cegoi do pamię ci.
Na rys. 4.19 pokazany jest schemat blokowy programu obsługi. Operacje zapamię tywaniai odtwarzania rozszerzonego stanu programu przerywanego wykonywane są przy zablokowa-nym wewnę trznym uk ładzie przerwań. Zabezpiecza to przed utratą poziomu priorytetowego
programu przerywanego, gdyby w tym czasie powstało kolejne przerwanie o wyższym prio-rytecie.
INTERRUPT
Pobranie wektoraprzerwań i skok doprogramu obsługi
Zapamiętaniestanu programuprzerywanego
Pobranie zawartościkomórki LEVEL
i zapamiętanie jej nastosie
Wpisanie priorytetubieżą xego do komórkiLEVEL i do rejestru
poziomu bieżą cego
Odblokowanieprzerwań EI
WŁ AŚCIWYPROGRAM OBSŁUGI
DI Blokada przerwań DI
Pobranie ze stosupriorytetu programu
przerwanego
Wpisanie priorytetuprogramu przerwanegodo komórki LEVEL i do
rejestru poziomu bieżą cego
Odtworzeniestanu programu
przerwanego
Odblokowanieprzerwań EI
RETURN
Rys. 4.19. Struktura programu obsł ugi przerwań z zagnie ż d ż aniem
8/19/2019 System Przerwan
28/69
INSTYTUT ELEKTRONIKI - 4.24 - Z. Pogoda
Opisany mechanizm priorytetowy musi tak że dotyczyć programu głównego, który może być traktowany jak program obsługi o najniższym priorytecie, zezwalają cym na rozpoczę cieobsługi dowolnego przerwania. Uzyskuje się wię c łą cznie 9 programów, dopuszczeniem do
realizacji których, musi sterować rejestr stanu bieżą cego. Wymaga to użycia dodatkowego,czwartego, bitu zezwalają cego na wszystkie przerwania. Stanom rejestru poziomu bieżą cegomożna przypisać nastę pują ce znaczenia
G B2 B1 B0 Poziom Znaczenie
1 × × × -1 Zezwolenie na dowolne przerwania0 0 0 0 0 Zezwolenie na przerwanie z priorytetem 1 lub wyższym0 0 0 1 1 Zezwolenie na przerwanie z priorytetem 2 lub wyższym0 0 1 0 2 Zezwolenie na przerwanie z priorytetem 3 lub wyższym0 0 1 1 3 Zezwolenie na przerwanie z priorytetem 4 lub wyższym0 1 0 0 4 Zezwolenie na przerwanie z priorytetem 5 lub wyższym
0 1 0 1 5 Zezwolenie na przerwanie z priorytetem 6 lub wyższym0 1 1 0 6 Zezwolenie na przerwanie z priorytetem 70 1 1 1 7 Brak zezwolenia na żadne przerwanie
Jeśli bit G ma wartość 1, to pozostałe bity rejestru poziomu bieżą cego są ignorowane. Ozna-cza to, że bit G powinien blokować operację porównania w komparatorze priorytetów. Pozo-stałe bity tego rejestru B2 ÷ B0 tworzą liczby z przedziału 0 ÷ 7, które przypisywane są pro-gramom obsługi, odpowiadają cym kolejnym numerom żą dań przerwania i mogą być trakto-wane jak ich priorytet własny. Program obsługi przerwania INT REQ 0 posiada priorytet naj-niższy równy 0. Jeśli jako pierwsze wystą pi np. przerwania INT REQ 3, to jego program ob-sługi powinien wpisać do rejestru poziomu bieżą cego wartość GB = 3. Spowoduje to blokadę
przerwań nr 0, 1 i 2, natomiast podję ta może być obsługa przerwań nr. 4, 5, 6 i 7. Programowigłównemu można, przy takiej numeracji, przypisać priorytet równy -1. W czasie inicjalizacjisystemu, do rejestru poziomu bieżą cego powinna być wtedy wpisana wartość x'08', co umoż-liwia rozpoczę cie obsługi dowolnego przerwania.
Program obsługi dowolnego przerwania może mieć nastę pują cą struktur ę ogólną
8 × NNN PUSH PSWPUSH BPUSH DPUSH HJMP INTNNN………
INT NNN LDA LEVEL
PUSH PSW ;zapamiętanie priorytetu przerywanego programuMVI A, NNNSTA LEVELOUT m ;wpisanie priorytetu nowego programuEI………
………DIPOP PSWSTA LEVELOUT m ;odtworzenie priorytetu przerwanego programu
8/19/2019 System Przerwan
29/69
8/19/2019 System Przerwan
30/69
INSTYTUT ELEKTRONIKI - 4.26 - Z. Pogoda
W systemach sterowania procesami technologicznymi obowią zują inne reguły. Wyma-gany czas reakcji uk ładu przerwań podyktowany jest przez własności procesu technologicz-nego. Wszystkie źródła przerwań muszą być uszeregowane wg ważności funkcji, jakie wyko-
nują . Np. przerwania mają ce znaczenie alarmowe (przekroczenia wartości krytycznych takich parametrów jak ciśnienia, temperatury, poziomy itp.) muszą posiadać najwyższe priorytety. Najniższe priorytety przydzielane są funkcjom informacyjno-sprawozdawczym.Jeśli eksplo-atacja próbna systemu wykazuje, że mimo wszystko, niektóre przerwania obsługiwane są z niewystarczają cą pr ę dkością , to ostatecznym rozwią zaniem bę dzie zastosowanie mikropro-cesora o wię kszej mocy obliczeniowej.
4.6. Kontroler przerwań 8214
Kontroler przerwań 8214 został zaprojektowany do obsługi 8 przerwań. Przerwania te reje-strowane są w rejestrze przerwań a uk ład priorytetowy wybiera z nich to, które aktualnie po-siada najwyższy priorytet. Poziom tego priorytetu porównywany jest z poziomem zawartymw programowo obsługiwanym rejestrze poziomu bieżą cego i w zależności od wyniku tego
porównania generowany jest odpowiedni wektor przerwania. Uproszczony schemat blokowy
tego kontrolera pokazany jest na rys. 4,21.
Zgłoszenia przerwań, aktywne przy niskim poziomie, wprowadzane są na wejście reje-stru zgłoszeń i dalej - kodera priorytetów. Przyłą czenie źródeł do określonych wejść decydujeo ich priorytecie w ten sposób, że wejście R7 posiada najwyższy priorytet a wejście R0 - naj-niższy. Koder priorytetów wydaje trzybitowy kod numeru przerwania posiadają cego najwyż-szy priorytet. Rejestr zgłoszeń znajdują cy się na wejściu kodera sterowany jest przez prze-
R0R1
R2R3R4R5R6R7
Rejestr zgłoszeńi
koder priorytetów
Zgłoszenie aktywne
OC
OC
OC
A0
A1
A2
INTOCD Q
C
Komparator priorytetów A
B
A > B
Rejestr poziomu
bieżą cego
B0B1B2SGS
ECS
C
D QSET
INT DIS
INTE
CLK
Rys. 4.21. Uproszczony schemat blokowy kontrolera przerwań 8214
8/19/2019 System Przerwan
31/69
Z. Pogoda - 4.27 - INSTYTUT ELEKTRONIKI
rzutnik zakazu INT DIS. Jeśli przerzutnik ten jest wzbudzony, to w rejestrze zgłoszeń nie mogą nastę pować żadne zmiany. Oznacza to, że sygnał żą dania przerwania musi pozostać na po-ziomie aktywnym dopóki nie rozpocznie się jego obsługa.
W przypadku przerwań zagnieżdżają cych się , ważne jest nie tylko określenie przerwa-nia o najwyższym priorytecie, lecz również to, czy posiada ono priorytet wyższy od priorytetu
przerwania aktualnie obsługiwanego. Dla umożliwienia wykonania tego zadania kontroler wyposażony jest w rejestr stanu bieżą cego, obsługiwany programowo. Jest to 4-bitowy rejestr ładowany ujemnym zboczem sygnału ECS ( Enable Current Status). Obsługa tego rejestruwykonywana jest przez program obsługi przerwania za pomocą standardowego rozkazu OUT.Do rejestru poziomu bieżą cego ładowane jest dopełnienie (inwersja bitowa) poziomu odnie-sienia, które jest porównywane w komparatorze priorytetów z poziomem uzyskiwanym z ko-
dera priorytetów. Do rejestru poziomu bieżą cego może być wpisana dowolna wartość, co przy połą czeniach kaskadowych kontrolerów może być wykorzystane do ustalania priorytetówgrup zgłoszeń.
Czwarty bit rejestru poziomu bieżą cego SGS (Status Group Select ) posiada specjalneznaczenie. Komparator priorytetów generuje sygnał wyjściowy tylko wtedy, gdy poziom no-wego zgłoszenia jest wyższy od poziomu bieżą cego. W szczególności, jeśli obydwie porów-nywane wielkości mają wartości zerowe, co ma miejsce, gdy system znajdował sie w staniespoczynku i pojawiło się zgłoszenie o najniższym priorytecie, to komparator nie generuje sy-gnału wyjściowego. Bit SGS forsuje wtedy odpowiednie wejście bramki wzbudzają cej prze-rzutnik INT, generują cej sygnał przerwania dla mikroprocesora. Bit SGS blokuje wię c działa-nie komparatora priorytetów, zezwalają c na rozpoczę cie obsługi przerwania o dowolnym
priorytecie.
Jak wynika z rys. 4.21, przerzutnik INT zostaje wzbudzony, jeśli spełnione są równocze-śnie nastę pują ce warunki
– przynajmniej jedno zgłoszenie jest aktywne, – nowe żą danie przerwania ma wyższy priorytet niż bieżą co obsługiwane, – przerzutnik zakazu INT DIS jest wyzerowany, – sygnał INTE jest aktywny (normalnie sygnał ten jest łą czony jest z wyjściem INTE
mikroprocesora, a wię c sygnał przerwania może powstać, gdy odblokowany jestwewnę trzny uk ład przerwań).
Spełnienie tych warunków rozpoczyna proces obsługi nowego przerwania. Wzbudzenie prze-rzutnika INT wywołuje w mikroprocesorze rozpoczę cie cyklu maszynowego INTERRUPT,a w kontrolerze 8214 zostaje wzbudzony przerzutnik INT DIS. Wzbudzenie przerzutnika zaka-zu wywołuje dwie akcje
– zamyka bramk ę wejściową do przerzutnika INT, co powoduje, że najbliższe dodat-nie zbocze sygnału zegarowego CLK zeruje ten przerzutnik. Sygnał wyjściowy INTstaje się nieaktywny, tzn. ma on charakter impulsu o szerokości kilkunastu ns. Po-nieważ rozpoznawanie sygnału przerywają cego w mikroprocesorze może się odbyćze znacznie wię kszym opóźnieniem, wię c istnieje konieczność zapamię tania gow dodatkowym przerzutniku.
– blokuje zmiany w rejestrze zgłoszeń, co zapewnia, że wektor przerwania wyprowa-dzany liniami A2 ÷ A0 nie ulega zmianie.
8/19/2019 System Przerwan
32/69
INSTYTUT ELEKTRONIKI - 4.28 - Z. Pogoda
Stan taki może trwać dowolnie długo. W tym czasie zgłoszenia zewnę trzne nie są rejestrowa-ne. Oznacza to, że sygnał żą dania przerwania generowany przez źródło musi pozostawać ak-tywny, dopóki nie rozpocznie się jego obsługa.
Po rozpoczę ciu programowej obsługi zainicjowanego przerwania do rejestru poziomu bieżą cego wpisywany jest nowy poziom. Sygnał wpisują cy ECS zeruje równocześnie prze-rzutnik zakazu INT DIS. Tym samym, przywrócony zostaje stan pierwotny kontrolera i jest ongotowy do zainicjowania nowego przerwania (oczywiście po odblokowaniu wewnę trznegouk ładu przerwań).
Stanem spoczynkowym kontrolera jest stan, w którym obydwa przerzutniki INT DIS orazINT są wyzerowane. W tym czasie realizowany jest program obsługi. Zmiana tego stanu na-stę puje po pojawieniu się przerwania o wyższym priorytecie niż aktualnie obsługiwane. Stanwzbudzenia przerzutnika INT jest stanem krótkotrwałym. Czas trwania wzbudzenia przerzut-nika INT DIS jest zależny od programu obsługi i kończy się po wpisaniu nowego poziomu bie-żą cego. W czasie wzbudzenia przerzutnika zakazu, kontroler nie rejestruje nowych zgłoszeń
i nie generuje nowych sygnałów przerwania.Stan począ tkowy osią gany jest w czasie wykonywania programu inicjalizują cego sys-
tem przez wpisanie poziomu bieżą cego programu głównego. Bit SGS powinien mieć dla tego poziomu wartość zerową . W tym czasie wewnę trzny uk ład przerwań jest zablokowany (INTE= 0). Wpis do rejestru poziomu bieżą cego zeruje przerzutnik INT DIS i po odblokowaniu we-wnę trznego uk ładu przerwań kontroler jest gotowy do działania.
Do generacji pełnego 8-bitowego wektora przerwań może być wykorzystany rejestr 8212(rys. 4.22). Jego wewnę trzny przerzutnik INT może być wykorzystany do zapamię tywania impul-sowego sygnału przerwania, pochodzą cego z kontrolera 8214. Rejestr 8212 powinien pracować wtrybie MD = 0. Wtedy stany wejść są natychmiast kopiowane w jego przerzutnikach typu D.
Φ2(TTL)
INTE
Ż ą d a n i a
o b s ł u g i
I/O Write
CLKINTE INT
R0
R1
R2
R3
R4
R5
R6
R7
A0
A1
A2
8214
ETLGB0
B1
B2
SGS
ECSELR
+5 V
STB INT
8212D0
D1
D2
D3
D4
D5
D6
D7
DO0
DO1
DO2
DO3
DO4
DO5
DO6
DO7
CLRDS2 MD DS1
INTA
D0
D1D2D3D4D5D6D7
INT
Rys. 4.22. Uk ł ad przerwań z kontrolerem 8214
8/19/2019 System Przerwan
33/69
Z. Pogoda - 4.29 - INSTYTUT ELEKTRONIKI
Trójstanowe wyjścia przyłą czane są do magistrali danych za pomocą sygnałów DS2DS1⋅ .
Powstanie sygnału przerwania w kontrolerze 8214 powoduje, za pośrednictwem sygnału STB,wzbudzenie przerzutnika INT i powstanie trwałego sygnału przerwania do mikroprocesora.Rozpoczę cie cyklu maszynowego INTERRUPT sygnalizowane jest sygnałem INTA, który po-woduje wyprowadzenie wektora przerwań (rozkaz RST n) na magistralę danych i wyzerowa-nie przerzutnika INT. Sygnał INTA powinien też skasować żą danie przerwania w urzą dzeniu.Kasowanie to może też być wykonane programowo, jak opisano wcześniej.
Ponieważ wyjścia A2 ÷ A0 wyprowadzane są z kontrolera 8214 w konwencji negatyw-nej, to dla przerwania o najwyższym priorytecie otrzymamy wektor RST 0. Sposób generacjiwektorów przerwań dla różnych priorytetów można przedstawić w tablicy
D7 D6 D5 D4 D3 D2 D1 D0
Poziompriorytetu
RST 1 1 A2 A1 A0 1 1 1
Najniższy 0 7 1 1 1 1 1 1 1 11 6 1 1 1 1 0 1 1 12 5 1 1 1 0 1 1 1 13 4 1 1 1 0 0 1 1 14 3 1 1 0 1 1 1 1 15 2 1 1 0 1 0 1 1 16 1 1 1 0 0 1 1 1 1
Najwyższy 7 0 1 1 0 0 0 1 1 1
4.7. Rozszerzanie układu przerwań z kontrolerem 8214
Kontroler przerwań 8214 pozwala na konstrukcję uk ładów przerwań dla obsługi dużej liczbyurzą dzeń, poprzez połą czenia kaskadowe i wielowarstwowe. Do tworzenia takich uk ładówwykorzystywane są trzy dodatkowe sygnały, nie pokazane na rys. 4.21:
ELR - ( Enable Level Read ), jest to sygnał wejściowy, blokują cy wyprowadzaniewektora przerwań na zewną trz.
ETLG - ( Enable This Level Group), jest to sygnał wejściowy, blokują cy generację sygnału przerwania i wyprowadzanie wektora przerwań.
ENLG - ( Enable Next Level Group), jest to sygnał wyjściowy, przyjmują cy poziom
aktywny, gdy kontroler znajduje się w stanie spoczynku, tzn. nie są obsłu-giwane żadne przerwania pochodzą ce od niego.
Wpływ tych sygnałów na działanie kontrolera pokazany jest na rys. 4.23. Kontroler przerwań może wię c generować sygnał INT i wektor przerwania, jeśli jego sygnał ETLG jestaktywny. Natomiast sygnał ENLG jest równy
ETLGSGS ACTREQENLG ⋅⋅=
tzn. posiada poziom aktywny, jeśli
8/19/2019 System Przerwan
34/69
INSTYTUT ELEKTRONIKI - 4.30 - Z. Pogoda
– w rejestrze zgłoszeń nie ma żadnego zgłoszenia oczekują cego na obsługę (REQ ACT= 0),
– w rejestrze poziomu bieżą cego, bit SGS ma wartość zerową , tzn. nie odbywa się ob-sługa przerwania zainicjowanego przez ten kontroler,
– kontroler nie został zablokowany sygnałem zewnę trznym (ETLG = 1).
Sygnał ENLG może wię c być użyty do blokady dru-giego kontrolera 8214, którego przerwania bę dą mogły byćobsługiwane, jeśli w pierwszym bę dzie istniał stan spoczyn-ku. Zatem, przerwania tego drugiego kontrolera bę dą posia-dały niższe priorytety. Sygnały ETLG i ENLG pozwalają wię cutworzyć kaskadę kontrolerów, dla których
ETLGi+1 = ENLGi
Dla pierwszego kontrolera w łańcuchu bę dzie ETLG1 = 1i jego przerwania bę dą miały najwyższy priorytet (rys.4.24). Tak wię c, w całym łańcuchu tylko jeden kontroler może być aktywny. Umożliwia to zastosowanie techniki„sumowania na drucie” sygnałów numeru przerwania A2 ÷ A0 oraz przerwań INT. W tym celu wyjścia tych sygnałówwyprowadzone są za pomocą bramek z otwartym kolekto-rem.
Ponieważ przy połą czeniach łańcuchowych zwię ksza
się liczba przerwań, to do aktywacji programów obsługi niemogą być użyte rozkazy RST n. Obliczenie adresu skokowe-go do programu obsługi musi być wykonane w sposób pro-gramowy. Należy wtedy zrezygnować z wektorowego uk ła-du przerwań (np. przez generację stałego wektora przerwań
przez przyłą czenie wyjścia INTA w kontrolerze interfejsu8228 do +12 V) a wspólny program obsługi musi obliczyćadres skokowy. Powstaje wtedy uk ład quasi-wektorowy,w którym identyfikator przerwania dostarczony przez ze-
wnę trzny uk ład przerwań służy do obliczenia adresu skoko-wego. Ten sposób obsługi przerwań nie może być utoż-
ETLG
ETLGREQ ACT
SGS
ENLG
D Q
INT
INTELRETLGREQ ACT
z koderapriorytetów
OC
OC
OC
A0
A1
A2
Rys. 4.23 Sygnał y dla tworzenia uk ł adów kaskadowych i wielowarstwowych z kontrolerem przerwań 8214.
8214
R00
R07
Priorytetnajniższy
ETLGELR
INT0
A0 A1 A2
G0
8214
R10
R17 ETLGELR
INT1
A0 A1 A2
G1
ENLG
8214
Rn0
Rn7 ETLGELR
INTn
A0 A1 A2
Gn
ENLG
+5 V
Priorytetnajniższy
Rys. 2.24. Uk ł ad ł ańcuchowykontrolerów 8212
8/19/2019 System Przerwan
35/69
Z. Pogoda - 4.31 - INSTYTUT ELEKTRONIKI
samiany z uk ładem jednopoziomowym, wielourzą dzeniowym,gdyż nie odbywa się w nim programowy proces poszukiwaniai wyboru obsługiwanego przerwania. Dostarczona z zewną trz
informacja, w sposób jednoznaczny, określa położenie pro-gramu obsługi. Na rys. 4.25 pokazany jest przyk ład takiegouk ładu z dwoma kontrolerami 8214 o pojemności 16 przerwań.Wszystkie przerwania podzielone są na dwie grupy, odpowia-dają ce obydwu kontrolerom. Wektor przerwania musi zawieraćinformację identyfikują cą grupę . Do identyfikacji grupy wyko-rzystany jest sygnał ENLG kontrolera o wyższym priorytecie.Sygnał przerwania generowany jest podobnie jak w uk ładzie
prostym. Natomiast wektor przerwania odczytywany jest pro-
gramowo (a nie sygnałem INTA, który teraz nie istnieje lub jestużywany do wprowadzenia na magistralę danych kodu rozkazu
RST 7), co zeruje przerzutnik w rejestrze 8212.
Odczytany wektor przerwania posiada nastę pują cą struktur ę
0 G A2 A1 A1 0 0 0
Jeżeli bit G posiada wartość równą 1, to oznacza to, że aktywne przerwanie pochodziz kontrolera o niższym priorytecie. Poszczególne przerwania bę dą wię c generowały nastę pu-
ją ce wektory
D7 D6 D5 D4 D3 D2 D1 D0
Priorytet przerwania 0 G A2 A1 A0 0 0 0
Najniższy 0 0 1 1 1 1 0 0 01 0 1 1 1 0 0 0 02 0 1 1 0 1 0 0 03 0 1 1 0 0 0 0 04 0 1 0 1 1 0 0 05 0 1 0 1 0 0 0 06 0 1 0 0 1 0 0 07 0 1 0 0 0 0 0 08 0 0 1 1 1 0 0 09 0 0 1 1 0 0 0 0
10 0 0 1 0 1 0 0 0
11 0 0 1 0 0 0 0 012 0 0 0 1 1 0 0 013 0 0 0 1 0 0 0 014 0 0 0 0 1 0 0 0
Najwyższy 15 0 0 0 0 0 0 0 0
Jest to wię c cią g liczb, które mogą być użyte do tworzenie adresów skokowych. W najprost-szym przypadku, adres skokowy może być utworzony w nastę pują cy sposób
15 0
baza wektor
Niższypriorytet
Wyższypriorytet
8214
R00
R07 ETLGELR
INT0
A0 A1 A2
G
R10
R17ETLG
ELR
INT1
A0 A1 A2
ENLG
+5 V
Rys. 4.25. Uk ł ad kaskadowy z dwoma kontrolerami 8212
8/19/2019 System Przerwan
36/69
INSTYTUT ELEKTRONIKI - 4.32 - Z. Pogoda
gdzie baza jest wielkością stałą , lokują cą począ tki programów obsługi na dowolnej 256- bajtowej stronicy w przestrzeni adresowej.
Ponieważ trzy najmniej znaczą ce bity wektora przerwań są zawsze równe zeru, to adre-
sy te wyznaczają komórki pamię ci odległe mię dzy sobą o 8 bajtów. Powstają wię c podobneinterwały jak przy wykorzystywaniu jako wektora przerwań, rozkazu RST. Począ tkowy frag-ment programu obsługi przerwania, rozpoczynają cego się w komórce nr 56d, powinien miećwtedy nastę pują cą postać
PUSH PSWPUSH BPUSH DPUSH HIN nMOV L,AMVI H, bazaPCHL
Ponieważ najbardziej znaczą cy bit wektora przerwań nie jest praktycznie wykorzystany, to bez żadnych zmian do uk ładu można dołą czyć trzeci kontroler 8214 i uzyskać pojemnośćuk ładu przerwań równą 24. Pojawią się wtedy dwa bity identyfikują ce grupę przerwań
G1G0 Priorytet
11 najniższy
01 średni
10 najwyższy
Dalsze rozszerzanie uk ładu przerwań można uzyskać przez zmniejszenie interwałumię dzy począ tkami procedur obsługi przerwań do 4 bajtów, co jest wystarczają ce do umiesz-czenia w nim rozkazu JMP lub CALL (łą cznie z rozkazem RET). Pojawią się wtedy trzy bar-dziej znaczą ce bity swobodne, do których można wprowadzić sygnały grupowe z łańcucha 4kontrolerów. Pojemność uk ładu przerwań bę dzie wtedy równa 32.Postę pują c tak dalej, można zwię kszyć liczbę kontrolerów do 5 i uzyskać pojemność uk ładu
przerwań równą 40, lecz wtedy interwał mię dzy adresami zmaleje do 2 bajtów, co jest niewy-starczają ce do umieszczenia rozkazu skokowego. Rozszerzenie tego interwału można uzyskać
programowo w nastę pują cy sposób
PUSH PSWPUSH BPUSH DPUSH HIN nMOV L, AMVI H, baza/2DAD HPCHL
Do rejestru H wpisywana jest połowa bazy, i taki adres jest podwajany (rozkaz DAD). Wtedyliczba parzysta staje się liczbą podzielną przez cztery, w której dwa najmniej znaczą ce bity są zerowe, co tworzy interwały 4-bajtowe. Oczywiście, baza powinna być tak dobrana, by przy
podwajaniu nie wystą pił nadmiar.
8/19/2019 System Przerwan
37/69
Z. Pogoda - 4.33 - INSTYTUT ELEKTRONIKI
Wreszcie, ta sama technika mogłaby być zastosowana do rozszerzenia uk ładu o nastę p-
ny kontroler przerwań, co dałoby pojemność równą 48. Należałoby się posłużyć czwartą czę -
ścią bazy.
W omówionych przyk ładach numer przerwania był kodowany, natomiast grupa wyzna-czana była w sposób liniowy. Powodowało to, że nie wszystkie adresy skokowe dla określo-
nego interwału mogły być wykorzystane. Jeśli numer grupy zostanie również zakodowany, to
pojemność uk ładu przerwań może być rozszerzona do pełnej liczby równej 256. Struktura
wektora przerwań bę dzie wtedy nastę pują ca
G4 G3 G2 G1 G0 A2 A2 A0
Pięć bitów grupowych daje możliwość rozróżnienia 64 grup przerwań (kontrolerów), Taki
wektor przerwania powinien być przetworzony na adres skokowy. Dla interwału czterobajto-
wego może to być osią gnię te w nastę pują cy sposób
15 8 7 0
B5 B4 B3 B2 B1 B0 G4 G3 G2 G1 G0 A2 A1 A0 0 0
Powstaje wtedy tablica skoków do procedur obsługi obejmują ca 1 KB pamię ci, która może
stanowić dowolną stronicę w przestrzeni adresowej, określoną przez bity Bi. Na rys. 4.26 po-
kazany jest przyk ład wykorzystania kodera priorytetowego SN74148 do kodowania numeru
jednej z czterech grup. Użycie kodera priorytetowego jest niezbę dne, gdyż kilka sygnałów
+5 V
INT0INT1
INT2
INT3
+5 V
A30 A31 A32