przykładowy 8-bitowy mikroprocesor uniwersalny CISC Mikroprocesor Z80 przykładowy 8-bitowy mikroprocesor uniwersalny CISC
Z80 1/16 Geneza Z80 1977, 2,5MHz Z8 1978 Z8000 1979
Cechy użytkowe (zalety w porównaniu z 8080) : Z80 -cechy 2/16 Cechy użytkowe (zalety w porównaniu z 8080) : 8-bitowa magistrala danych; 16-bitowa magistrala adresów; 8-bitowa ALU; bogata gama rozkazów: przesyłania bajtów i słów 2-bajtowych przesyłania i przeszukiwania bloków informacji operacje arytmetyczno-logiczne na bajtach i słowach 2-bajtowych (rozszerzony zestaw operacji i argumentów) operacje bitowe (BIT, SET, RES) 16-bitowe skoki i wywołania procedur, bezwarunkowe i warunkowe skoki relatywne (1B w U2) operacje we/wy proste operacje we/wy z wyliczaną adresacją portów i blokowe rozkazy sterujące
Z80 - cechy 3/16 5 trybów adresowania argumentów (w tym tryb dwuskładnikowy); 2 wejścia przerwań zewnętrznych: maskowalne /INT i niemaskowalne /NMI; 3 tryby obsługi przerwań, w tym tryb wektorowy; możliwość programowego przełączania między trybami obsługi przerwań; 6+6 rejestrów roboczych 8-bitowych, ogólnego przeznaczenia, które można łączyć w pary, podzielonych na 2 alternatywne zestawy; 2 16-bitowe rejestry indeksowe; 16-bitowe PC i SP; zdwojone akumulator A i rejestr flag F; wbudowany mechanizm odświeżania pamięci dynamicznych; rejestry odświeżania R i wektora przerwań I; jednofazowy sygnał taktujący 2,5MHz (Z80A - 4MHz, Z80B - 6MHz, Z80H - 8MHz, itd.); zasilanie tylko 5V; sygnały zewnętrzne zgodne ze standardem TTL; niepotrzebne specjalne układy taktowania i sterownika magistrali.
Z80 - struktura wewnętrzna 4/16
Z80 - opis wyprowadzeń 5/16 D0-D7 - we/wy, 3-stanowe, 8-bitowa magistrala danych; A0-A15 - wy, 3-stanowe, 16-bitowa magistrala adresów; /M1 - wy, sygnalizuje specjalne cykle maszynowe; /MREQ - wy, 3-stanowe, sygnalizuje dostęp do pamięci; /IORQ - wy, 3-stanowe, sygnalizuje dostęp do we/wy; /RD,/WR - wy, 3-stanowe, stroby odczytu i zapisu; /RFSH - wy, sygnalizuje adres odświeżania DRAM; /WAIT - we, sygnalizowania P brak gotowości układów pamięci lub portów do przesyłania informacji; /NMI - we, wejście przerwania niemaskowalnego; /INT - we, wejście przerwania maskowalnego; /BUSREQ - we, wejście sygnału od DMA; /BUSACK - wy, potwierdzenie zwolnienia magistrali /HALT - wy, sygnalizuje wykonywanie rozkazu HALT /RESET - we, wejście sygnału zerowania P; CLK - we, sygnał taktujący pracę P; 5V,GND - linie zasilające
pobieranie kodu rozkazu Z80 - cykl pracy 6/16 pobieranie kodu rozkazu zakończenie rozkazu RR:=M(PC) PC:=PC+1 praca DR wykonanie rozkazu cały kod rozkazu ? N N BUSRQ=0? T BRFF:=1 tryb DMA BUSACK:=0 N BUSRQ=1? T BUSACK:=1 BRFF:=0
proc.obs. przerwania INTFF:=0 Z80 - cykl pracy 7/16 pobieranie rozkazu T koniec rozkazu ? N pobranie argumentu wykonanie rozkazu zapamiętanie wyniku zdekodowanie rozkazu N koniec cyklu masz.? T N koniec rozkazu ? T T N NMI=0? IFF2:=IFF1 IFF1:=0 PCstos PC:=66h NMIFF:=0 NMIFF:=1 N T INT=0? NMIFF=1? T N tryb DMA BUSACK:=0 N IFF1=1? IFF1:=0 PCstos PC:=adres proc.obs. przerwania INTFF:=0 T INTFF:=1 T INTFF=1? N BUSRQ=1? N T BUSACK:=1 BRFF:=0 T BUSRQ=0? N
Z80 - cykle maszynowe 8/16
Z80 - cykle maszynowe 9/16
Z80 - cykle maszynowe 10/16
Z80 - cykle maszynowe 11/16
Z80 - tryby adresowania 12/16
Z80 - tryby adresowania 13/16
Z80 - tryby adresowania 14/16
stos programowy typu LIFO; Z80 - stos 15/16 Cechy: stos programowy typu LIFO; dowolna alokacja w przestrzeni adresowej 64kB PAO (musi być w RAM); dowolny rozmiar (wielkość) - ilość informacji na stosie jest ograniczona tylko wielkością dostępnego RAM; jednostką operacji na stosie jest słowo dwubajtowe (starszy bajt jest umieszczony w komórce RAM o wyższym adresie, a młodszy - w komórce o niższym adresie); przy zapisie stos „narasta” w kierunku malejących adresów; 16-bitowy SP wskazuje zawsze na ostatnio zapisany bajt na stosie; dostęp do stosu realizowany jest: - automatycznie przy wejściu w wywoływaną procedurę lub procedurę obsługi przerwania; - programowo, rozkazami PUSH, POP, EX (SP).
Z80 - stos, reset procesora 16/16 Ilustracja działania stosu: 03h B: 13h 24h C: H: XX L: SP: 1111h 1111h: 1110h: 110Fh: PAO zapis na stos: PUSH BC 1111h 1110h 1110h 110Fh 13h odczyt ze stosu: POP HL 24h 13h 24h Reset Z80 Wywoływany jest przez niski sygnał na wejściu /RESET trwający przez minimum 3 okresy przebiegu taktującego CLK. Reset powoduje: ustawienie linii zewnętrznych w stan wysokiej impedancji lub wysoki; PC:=0; SP:=0; zablokowanie przerwań maskowalnych INT; ustawienie podstawowego trybu obsługi przerwań maskowalnych.