główna
technologie
indeks tematyczny
indeks alfabetyczny

Mikroprocesor Z80
wyprowadzenia z80 struktura wewnętrzna z80

wyprowadzenia:

opis

Obsługa przerwań w procesorze Z80

Procesor Z80 rozpoznaje dwa rodzaje przerwań: maskowalne wyzwalane sygnałem /INT poziomem niskim i niemaskowalne wyzwalane sygnałem /NMI zboczem opadającym. Taki sposób wyzwalania przerwania niemaskowalnego powoduje, że jeśli podczas wykonywania podprogramu obsługi przerwania niemaskowalnego sygnał /NMI nie ulegnie zmianie (będzie nadal równy 0), nie spowoduje to następnego przerwania. Fakt uaktywnienia sygnałów /INT oraz /NMI jest testowany podczas narastającego zbocza ostatniego taktu ostatniego cyklu maszynowego rozkazu. Przyjęcie przerwania powoduje automatyczne zapamiętanie na stosie zawartości licznika rozkazów. Nie jest zapamiętywana zawartość żadnych innych rejestrów.

Jeśli przerwanie zostało przyjęte, procesor generuje specjalny cykl M1, w którym zamiast /MREQ uaktywnia się /IORQ. Sygnał /RFSH jest generowany normalnie, a do szyny adresowej procesor wysyła zawartość licznika rozkazów. Jednoczesne wystąpienie /M1 i /IORQ może być interpretowane przez urządzenia zewnętrzne jako potwierdzenie przyjęcia przerwania.

Po przyjęciu przerwania niemaskowalnego (NMI) następuje skok do procedury obsługi przerwania pod adresem 66h.

W przypadku przerwania niemaskowalnego (INT) procesor dysponuje trzema trybami jego obsługi, przełączanymi programowo.

W trybie 0 procesor traktuje specjalny specjalny cykl M1 jako normalny cykl pobrania rozkazu, tj. traktuje zawartość szyny danych jako kod rozkazu do wykonania. Tę daną powinno dostarczyć urządzenie zewnętrzne. Najczęściej stosuje się przesłanie kodu rozkazu restartu RST, który jest jednobajtowym rozkazem wywołania podprogramu mieszczącego się pod jednym z adresów: 00h, 08h, 10h, 18h, 20h, 28h, 30h, 38h.

W trybie 1 zostaje wywołany podprogram mieszczący się pod adresem 38h.

W trybie 2 procesor oczekuje od urządzenia zewnętrznego wystawienia na magistralę danych bajtu traktowanego jako mniej znacząca połowa adresu. Jako bardziej znaczący bajt adresu procesor pobiera ustawioną programowo zawartość rejestru I, a następnie dokonuje odczytu słowa pamięci mieszczącego się pod wskazanym adresem. Te dwa odczytane bajty traktuje jako adres podprogramu obsługi przerwania. Najmniej znaczący bit bajtu przekazywanego przez urządzenie zewnętrzne jest ignorowany i zawsze traktowany jako 0.

Organizacja wewnętrzna procesora:

Na rysunku przedstawiono logiczny schemat architektury Z80. Podobnie jak i inne mikroprocesory Z80 można podzielić ogólnie na trzy części:

Jednostka arytmetyczno-logiczna zajmuje się właściwym wykonaniem takich rozkazów jak 8-bitowe dodawanie, odejmowanie, logiczne mnożenie itp. Niektóre rozkazy jak np. skoku, nie przechodzą przez ALU, gdyż zmieniają wyłącznie stan części sterującej procesora. ALU zazwyczaj bywa rysowana w kształcie litery V. Na rysunku widać drugi mniejszy obiekt o podobnym kształcie. Jest to specjalny sumator, który pozwala na szybkie wykonywanie operacji dodawania 8-bitowej liczby do zawartości rejestru indeksowego, umożliwiając łatwą organizacje względnego adresowania pamięci.

Cześć sterująca procesora również dysponuje małym sumatorem, którego zadaniem jest automatyczne zwiększanie o 1 zawartości licznika rozkazów oraz licznika odświeżania.

Całość jest spięta zespołami połączeń, które noszą nazwę szyn. Termin szyna bywa w literaturze używany zamiennie z terminem magistrala. Tutaj dla jednoznaczności pozostawimy termin szyna dla określenia wewnętrznego kanału informacji w procesorze, natomiast przez magstrale będziemy rozumieć kanał zewnętrzny - element systemu mikroprocesorowego, do którego podłączone są szyny procesora. Mamy wiec wewnętrzną 8-bitową szynę danych i szynę adresów, a także zespól wielu połączeń którymi przebiegają sygnały sterujące i kontrolne procesora, umownie zwany szyna sterowania.

Przedstawienie opisu wszystkich elementów procesora nie jest tutaj możliwe. Na rysunku elementy nie dostępne dla programu zaznaczone są linią przerywana.

Rejestrami programowo dostępnymi są:

Ponadto procesor dysponuje dwoma jednobitowymi rejestrami IFF1 i IFF2 informującymi czy procesor jest w stanie przyjąć maskowalne przerwanie. Dwa przerzutniki są potrzebne gdyż przerwanie niemaskowalne automatycznie blokuje możliwość przyjmowania przerwań maskowalnych przez procesor, lecz może odtworzyć stan poprzedni po powrocie z podprogramu obsługi przerwania.

Rejestr F jest 8 bitowy. Jeżeli odpowiedni warunek jest spełniony, bit odpowiadający temu warunkowi jest ustawiony. Bity te nie są bezpośrednio odczytywane przez program ( aczkolwiek można to uczynić, choć niezbyt wygodnie ), lecz automatycznie sprawdzane przez procesor podczas wykonywania rozkazów warunkowych oraz rozkazów dotyczących arytmetyki BCD. Strukturę rejestru F można opisać:

Przygotowali: Przemysław Bożek i Rafał Kubina


główna | technologie | indeks tematyczny | indeks alfabetyczny