Przegląd - Przebiegi czasowe


Ogólnie

Mikroprocesor Z80 wykonuje instrukcje przechodząc krok po kroku przez ściśle określony zbiór podstawowych operacji. Obejmują one co następuje:

Wszystkie instrukcje są ciągiem podstawowych operacji. Wykonanie każdej z tych operacji może zabrać od trzech do sześciu okresów zegara lub może zostać wydłużone w celu synchronizacji mikroprocesora z szybkością pracy urządzeń zewnętrznych. Okresy zegara oznaczamy jako cykle T (ang. time - czas) a operacje jako cykle M (ang. machine - cykle maszynowe). Rys. 4 pokazuje powiązanie pomiędzy cyklami T i M dla typowej instrukcji. Instrukcja ta składa się z trzech cykli maszynowych (M1, M2 i M3). Pierwszy cykl maszynowy każdej instrukcji jest cyklem pobrania, który ma długość czterech, pięciu lub sześciu cykli T (o ile nie zostanie wydłużony przez sygnał WAIT, który opisujemy w następnym rozdziale). Cykl pobrania (M1) jest używany do odczytu z pamięci kodu operacyjnego kolejnej do wykonania instrukcji. Następne cykle maszynowe przesyłają dane pomiędzy mikroprocesorem a pamięcią lub urządzeniami I/O i mogą zawierać od trzech do pięciu cykli T (ponownie można je wydłużać za pomocą cykli oczekiwania w celu synchronizacji mikroprocesora z urządzeniami zewnętrznymi). W następnych podrozdziałach opisujemy przebiegi czasowe występujące wewnątrz wszystkich podstawowych cykli maszynowych.

Podczas cyklu T2 oraz wszystkich cykli zegara Tw następujących za T2 mikroprocesor próbkuje stan linii WAIT przy opadającym zboczu Zegara. Jeśli w tym czasie linia WAIT będzie aktywna, to w bieżącym cyklu wstawiany jest kolejny stan WAIT. Używając tej techniki odczyt można wydłużać w celu dopasowania czasu dostępu do dowolnego typu urządzenia pamięciowego.

Rys.4. Przykład podstawowych przebiegów czasowych mikroprocesora

 

Pobranie instrukcji

Rys.5 przedstawia przebiegi czasowe podczas cyklu M1 (pobranie kodu operacji). Na początku cyklu M1 zawartość rejestru PC jest umieszczana na magistrali adresowej. Po upływie połowy cyklu zegarowego uaktywnia się sygnał MREQ. Do tego czasu adres dla pamięci ustabilizuje się, zatem opadające zbocze MREQ może zostać bezpośrednio wykorzystane jako sygnał zegarowy aktywacji pamięci dynamicznych. Linia RD również staje się aktywna informując pamięć, iż na magistrali danych ma ona umieścić zawartość zaadresowanej komórki. Mikroprocesor odczytuje dane z pamięci na magistrali danych przy narastającym zboczu cyklu zegarowego T3 i to samo zbocze mikroprocesor wykorzystuje do wyłączenia sygnałów RD oraz MREQ. W ten sposób magistrala danych zostaje odczytana przez mikroprocesor zanim sygnał RD stanie się nieaktywny. Cykle zegarowe T3 i T4 cyklu pobrania rozkazu są używane do odświeżania pamięci dynamicznych. W tym czasie mikroprocesor dekoduje i wykonuje pobraną instrukcję, więc żadna inna operacja nie może być wtedy wykonywana.

Podczas T3 i T4 dolne siedem bitów magistrali adresowej zawiera adres odświeżania pamięci i sygnał RFSH staje się aktywny informując, iż ma być wykonany odświeżający odczyt wszystkich pamięci dynamicznych. Podczas odświeżania nie jest generowany sygnał RD w celu zapobieżenia umieszczaniu na magistrali danych informacji pochodzących z różnych segmentów pamięci. Sygnał MREQ podczas odświeżania powinien być używany do wykonania odczytu odświeżającego wszystkich elementów pamięci. Sam sygnał odświeżania nie może być używany w tym charakterze, ponieważ adres odświeżania ustabilizowany jest dopiero w czasie trwania sygnału MREQ.


Rys.5 Pobranie kodu operacyjnego rozkazu

 

Odczyt i zapis pamięci

Rys.6 ilustruje przebiegi czasowe w cyklach odczytu lub zapisu pamięci innych niż cykl pobrania kodu rozkazu. Cykle te mają zwykle długość trzech cykli zegarowych o ile nie zostaną wydłużone o cykle oczekiwania żądane przez pamięć przy pomocy sygnału WAIT. Sygnały MREQ i RD są używane w identyczny sposób jak w cyklu pobrania kodu rozkazu. W cyklu zapisu pamięci MREQ również staje się aktywny, gdy magistrala adresowa ustabilizuje się, co umożliwia bezpośrednie wykorzystanie go do aktywacji układów pamięci dynamicznych. Linia WR staje się aktywna, gdy informacja na magistrali danych jest ustabilizowana i może zostać wykorzystana bezpośrednio jako impuls R/W dla dosłownie każdego rodzaju pamięci półprzewodnikowych. Co więcej sygnał WR staje się nieaktywny o pół okresu zegarowego przed zmianą na magistrali adresowej i magistrali danych, co spełnia wymogi prawie każdego rodzaju pamięci.


Rys.6 Cykl Odczytu Pamięci i Cykl Zapisu Pamięci

 

Cykle wejścia lub wyjścia

Na rys.7 przedstawiona jest operacja odczytu I/O lub zapisu I/O. Podczas operacji I/O automatycznie wstawiany jest pojedynczy cykl oczekiwania. Powodem jest to, iż podczas operacji I/O czas od aktywacji sygnału IORQ do momentu, gdy mikroprocesor musi zbadać stan linii WAIT jest bardzo krótki. Bez tego dodatkowego cyklu nie ma wystarczającej ilości czasu do zdekodowania przez port I/O swojego adresu i aktywacji linii WAIT w przypadku, gdy jest konieczne oczekiwanie. Również bez tego cyklu oczekiwania trudno jest zaprojektować urządzenia IO MOS, które mogłyby pracować przy pełnej prędkości mikroprocesora. Podczas trwania cyklu oczekiwania testowany jest sygnał żądania WAIT.

Podczas operacji odczytu I/O linia RD jest używana do umożliwienia zaadresowanemu portowi umieszczenia informacji na magistrali danych, tak jak w przypadku odczytu pamięci. Przy operacjach zapisu I/O linia WR jest używana jako zegar dla portu I/O.


* Cykl WAIT wstawiony automatycznie

Rys.7 Cykle Wejścia lub Wyjścia

 

Cykl żądania/potwierdzenia dostępu do magistrali

Rys.8 ilustruje przebiegi czasowe dla cyklu Żądania/Potwierdzenia Dostępu do magistrali. Sygnał BUSREQ jest testowany przez mikroprocesor przy narastającym zboczu ostatniego cyklu zegarowego w każdym cyklu maszynowym. Jeśli sygnał BUSREQ jest aktywny, to przy narastającym zboczu następnego impulsu zegarowego mikroprocesor przełącza magistrale adresową, danych i część sterującej w stan wysokiej impedancji. W tym czasie dowolne urządzenie zewnętrzne może przejąć kontrolę nad tymi magistralami w celu przesłania danych pomiędzy pamięcią a urządzeniami I/O (operacja ta znana jest pod nazwą Bezpośredniego Dostępu do Pamięci - DMA = Direct Memory Access - z podkradaniem cykli). Maksymalny czas odpowiedzi mikroprocesora na żądanie dostępu do magistrali ma długość cyklu maszynowego, a zewnętrzny kontroler może utrzymywać kontrolę nad magistralą tak długo jak jest to konieczne. Jeśli stosowane są bardzo długie cykle DMA przy korzystaniu z pamięci dynamicznych, to zewnętrzny kontroler również realizuje funkcję odświeżania. Sytuacja taka ma miejsce tylko wtedy, jeśli bardzo duże bloki danych są przesyłane poprzez sterowanie DMA. Podczas cyklu żądania dostępu do magistrali mikroprocesor nie może reagować na sygnały NMI oraz INT.

Rys.8 Cykl Żądania/Potwierdzenia Dostępu Do Magistrali

 

Cykl żądania/potwierdzenia obsługi przerwania maskowanego

Rys.9 ilustruje przebiegi czasowe związane z cyklem przerwania. Mikroprocesor bada sygnał przerwania (INT) przy narastającym zboczu ostatniego impulsy zegara na końcu każdej instrukcji. Sygnał ten nie jest akceptowany w przypadku, gdy nie jest ustawiony wewnętrzny przerzutnik flip-flop aktywacji przerwań sterowany programowo lub gdy jest aktywny sygnał BUSREQ. Gdy sygnał ten zostaje przyjęty, jest generowany specjalny cykl M1. Podczas tego specjalnego cyklu M1 aktywuje się sygnał IORQ (zamiast zwykłego MREQ) w celu poinformowania urządzenia przerywającego, iż może ono umieścić na magistrali danych 8-bitowy wektor. Do tego cyklu są automatycznie dodawane dwa stany oczekiwania. Te dwa stany dodaje się po to, aby można było łatwo zaimplementować schemat priorytetowego systemu przerwań. Dwa stany oczekiwania dają wystarczająco dużo czasu, aby sygnały przerwań ustabilizowały się i możliwa była identyfikacja urządzenia I/O, które musi wstawić wektor odpowiedzi na przerwanie. Sposób wykorzystania tego wektora przez mikroprocesor jest szczegółowo opisany w rozdziale 6.

Rys.9 Cykl żądania/potwierdzenia obsługi przerwania maskowanego

 

Reakcja na przerwanie niemaskowane

Rys.10 ilustruje cykl żądania/potwierdzenia dla przerwania niemaskowanego. Sygnał ten jest testowany w tym samym czasie co linia przerwań maskowanych, lecz ma wyższy priorytet i nie można go zablokować programowo.  Jego podstawową funkcją jest zapewnienie natychmiastowej reakcji na ważne sygnały, np. zagrożenie brakiem zasilania. Reakcja mikroprocesora na przerwanie niemaskowane jest podobna do zwykłej operacji odczytu pamięci. Jedyną różnicą jest to, iż zawartość magistrali danych zostaje zignorowana, a mikroprocesor automatycznie umieszcza w zewnętrznym stosie rejestr licznika rozkazów PC i wykonuje skok do adresu 0066H. Jeśli ten rodzaj przerwania jest używany, to od podanego adresu musi rozpoczynać się procedura obsługująca przerwanie niemaskowane.

Rys.10 Operacja Żądania Obsługi Przerwania Niemaskowanego

 

Wyjście z HALT

Jeśli zostanie wykonana programowa instrukcja HALT, to mikroprocesor wykonuje w pętli instrukcje NOP (ang. No OPeration - instrukcja pusta) aż do momentu otrzymania przerwania (albo przerwania niemaskowanego, albo maskowanego przy włączonym przerzutniku flip-flop przerwań). Dwie linie przerwań są testowane przy narastającym zboczu sygnału zegarowego w każdym cyklu T4, jak przedstawiono na rys.11.  Jeśli pojawi się przerwanie niemaskowane lub przerwanie maskowane przy włączonej jego obsłudze, to stan HALT jest przerywany przy następnym narastającym zboczu impulsu zegarowego. Następny cykl jest cyklem potwierdzenia przyjęcia przerwania odpowiednim do typu otrzymanego przerwania. Jeśli oba rodzaje przerwań pojawią się w tym samym czasie, to zostanie potwierdzone przerwanie niemaskowane, ponieważ ma ono najwyższy priorytet. Celem wykonywania instrukcji NOP w stanie HALT jest konieczność odświeżania pamięci dynamicznych i generowania do tego celu odpowiednich sygnałów sterujących. Każdy cykl w stanie HALT jest zwykłym cyklem M1 (pobrania) z wyjątkiem tego, iż dane otrzymywane z pamięci są ignorowane, a wewnętrznie w mikroprocesorze zostaje wymuszone wykonanie instrukcji NOP. W tym czasie jest aktywny sygnał potwierdzający HALT, który oznacza, iż mikroprocesor jest w stanie wstrzymania.

W stanie HALT powtarzane jest wykonywanie instrukcji NOP w Cyklu Pamięci
Rys.12 Wyjście z HALT

 

Cykl potwierdzenia przejścia w stan spoczynku

Gdy zostaną zatrzymane impulsy zegarowe dla mikroprocesora Z80 CMOS albo w stanie wysokim, albo w niskim, to mikroprocesor wstrzymuje działanie i utrzymuje wszystkie rejestry oraz sygnały sterujące. Jednakże ICC2 (prąd spoczynkowy) jest gwarantowane tylko wtedy, gdy zegar systemowy jest zatrzymywany na poziomie niskim podczas cyklu T4 w cyklu maszynowym, który następuje po wykonaniu instrukcji HALT. Przebieg czasowy dla funkcji przejścia w stan spoczynku przy implementacji za pomocą instrukcji HALT jest pokazany na rys.12.

Rys.12 Potwierdzenie przejścia w stan spoczynku

Cykl wyjścia ze stanu spoczynku

Aby wyjść ze stanu spoczynku, do mikroprocesora Z80 CMOS musi być dostarczony sygnał zegarowy. Gdy sygnał ten pojawi się na wejściu CLK, mikroprocesor Z80 CMOS wznawia swoje działanie od punktu, w którym przeszedł do stanu spoczynku. Przebiegi czasowe dla wyjście za stanu spoczynku przedstawione są na rys.13, 14 i 15.

Jeśli do wejścia w stan spoczynku użyta była instrukcja HALT, to mikroprocesor Z80 CMOS również wejdzie w stan HALT. Aby procesor wyszedł ze stanu spoczynku, należy mu dostarczyć jeden z sygnałów NMI, INT lub RESET.

Rys.13 Cykl nr 1 Wyjścia ze Stanu Spoczynku

 

Rys.14 Cykl nr 2 Wyjścia ze Stanu Spoczynku

 

Rys.15 Cykl nr 3 Wyjścia ze Stanu Spoczynku

 

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2018 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe