Architektura mikroprocesorów Z80
zagadnienia sprzętowe
Białystok, styczeń 2015
Andrzej Pawluczuk: Architektura mikroprocesorów Z80 - zagadnienia sprzętowe -2/12-
Copyright (C) 2015, Andrzej Pawluczuk. email: apawluczuk@vp.pl
Wszystkie prawa zastrzeżone.
Redystrybucja i używanie, czy to w formie tekstu zródłowego, czy w formie kodu
wykonywalnego, są dozwolone pod warunkiem spełnienia poniższych warunków:
1. Redystrybucja tekstu zródłowego musi zawierać powyższe zastrzeżenie
własności praw autorskich, niniejszą listę warunków oraz poniższe oświadczenie
o wyłączeniu odpowiedzialności.
2. Redystrybucja kodu wykonywalnego musi zawierać w dokumentacji lub w
innych materiałach dostarczanych wraz z kopią oprogramowania powyższe
zastrzeżenie własności praw autorskich, niniejszą listę warunków oraz poniższe
oświadczenie o wyłączeniu odpowiedzialności.
3. Nazwisko autora nie może być użyte celem sygnowania lub promowania
produktów pochodzących od tego opracowania, bez szczególnego, wyrażonego
na piśmie zezwolenia.
To opracowanie jest dostarczone przez posiadacza praw autorskich takim, jakie jest .
Każda, dorozumiana lub bezpośrednio wyrażona gwarancja, nie wyłączając dorozumianej
gwarancji przydatności handlowej i przydatności do określonego zastosowania, jest
wyłączona. W żadnym wypadku posiadacz praw autorskich nie może być odpowiedzialny
za jakiekolwiek bezpośrednie, pośrednie, incydentalne, specjalne, uboczne i wtórne
szkody (nie wyłączając obowiązku dostarczenia produktu zastępczego lub serwisu,
odpowiedzialności z tytułu utraty walorów użytkowych, utraty danych lub korzyści, a
także przerw w pracy przedsiębiorstwa) spowodowane w jakikolwiek sposób i na
podstawie istniejącej w torii odpowiedzialności kontraktowej, całkowitej lub deliktowej
(wynikłej zarówno z niedbalstwa, jak i innych postaci winy), powstałe w jakikolwiek
sposób w wyniku używania lub mające związek z używaniem oprogramowania, nawet
jeśli o możliwości powstania takich szkód ostrzeżono.
Andrzej Pawluczuk: Architektura mikroprocesorów Z80 - zagadnienia sprzętowe -3/12-
kład Z80-CPU jest jednostką centralną (od ang. Central Processor Unit).
Zadaniem tego układu jest realizacja ciągu rozkazów zapisanych w formie
U
programu. Początkowo te układy były produkowane w formie
wydzielonych układów scalonych w obudowie DIP40.
Z czasem w ofercie Ziloga pojawiły się bardziej zintegrowane układy zawierające
więcej niż tylko samą jednostkę centralną. Przykładem może być układ Z84C15
(Z80-EIPC). Zawiera on w jednym układzie scalonym między innymi takie
podzespoły jak:
Z80-CPU jednostka centralna,
Z80-SIO kontroler transmisji szeregowej,
Z80-CTC kontroler licznikowo-zegarowy,
Z80-PIO uniwersalny port równoległy (zespół WE/WY).
Gdyby do tego układu jeszcze dołożyć trochę pamięci stałej na program (FLASH)
i trochę pamięci statycznej RAM, to być może mógłby stanowić poważną
konkurencję dla mikrokontrolerów z rodziny C51.
Andrzej Pawluczuk: Architektura mikroprocesorów Z80 - zagadnienia sprzętowe -4/12-
Rysunek przedstawia
%%%%%%,%%%,%%%%%%%
topologię układu. Wybrane
A11 %1 %%%% 40% A10
wyprowadzenia układu mają w
A12 %2 39% A9
A13 %3 38% A8 opisie użyty znak / , który ma
A14 %4 37% A7 symbolizować kreskę nad
A15 %5 36% A6
nazwą (w trybie tekstowym
CLK %6 35% A5
nie jest możliwe uzyskanie
D4 %7 34% A4
kreski nad nazwą, a jakoś
D3 %8 33% A3
trzeba sobie radzić, więc
D5 %9 32% A2
wymyślono znak / przed
D6 %10 Z80 31% A1
nazwą sygnału). Takie
VCC %11 CPU 30% A0
oznaczenie jest używane do
D2 %12 29% GND
wskazania, że ten sygnał jest w
D0 %14 27% /M1
tzw. logice ujemnej. To
D7 %13 28% /RFSH
oznacza, że stanem aktywnym
D1 %15 26% /RESET
dla danego sygnału jest stan
/INT %16 25% /BUSREQ
logicznego zera. Tu warto
/NMI %17 24% /WAIT
zauważyć, że rodzina
/HALT %18 23% /BUSACK
mikroprocesorów Z80
/MREQ %19 22% /WR
wprowadza i konsekwentnie
/IORQ %20 21% /RD
realizuje (chyba nawet jako
%%%%%%%%%%%%%%%%
pierwsza na świecie) jednolite
podejście do sygnałów
sterujących. Wszystkie sygnały sterujące, zarówno wejściowe jak i wyjściowe, maję
przyjęty jako stan aktywny logiczne zero. W innych mikroprocesorach (innych
producentów) niektóre sygnały są aktywne dla stanu logicznej jedynki, niektóre dla
stanu logicznego zera. Pomijając pewien bałagan, bo należy pamiętać co jest jakie,
wprowadza to trochę utrudnień dla konstruktora.
Sygnał Typ Znaczenie
D0-D7 we/wy dwukierunkowa, 8-bitowa magistrala danych. D0
oznacza najmniej znaczący bit, D7 najbardziej znaczący
trójstanowe
bit. To poprzez te druty przepływa cała mądrość.
A0-A15 wyjścia jednokierunkowa, 16-bitowa magistrala adresowa. A0
trójstanowe oznacza najmniej znaczący bit. Przez te druty,
mikroprocesor informuje otoczenie gdzie lub skąd chce
dane.
/RESET wejście Wejście zerowania, aktywne stanem niskim. To taki
drucik do mikroprocesora, który mówi: no koleś procek,
zaczynamy od początku .
Andrzej Pawluczuk: Architektura mikroprocesorów Z80 - zagadnienia sprzętowe -5/12-
Sygnał Typ Znaczenie
CLK wejście Sygnał zegarowy taktujący pracę mikroprocesora, to taki
drucik, który mówi jak szybko trzeba pracować (jak
ekonom z batem ).
/BUSREQ wejście Sygnał żądania zwolnienia przez CPU magistrali danych,
adresowej i sterującej, stan aktywny-niski. To taki
drucik, który żąda od CPU wprowadzanie linii danych,
adresów i linii sterujących (/MREQ,/IORQ, /RD i /WR)
w stan wysokiej impedancji i zawieszenia swojej pracy,
czyli ej ... koleś procek, może miałbyś ochotę na
drzemkę, a ja ci pogrzebię w twoich zapiskach .
/BUSACK wyjście Sygnał odpowiedzi na żądanie /BUSREQ. Pojawienie się
stanu niskiego jest potwierdzeniem zwolnienia magistrali
systemowych (magistrala danych, adresowa i sterująca
znajdują się w stanie wysokiej impedancji), czyli idę się
zdrzemnąć, a wy możecie w tym czasie poszperać w
mojej pamięci .
/HALT wyjście Sygnał stanu zatrzymania mikroprocesora. Stan niski na
wyjściu /HALT oznacza, że Z80 CPU jest w trakcie
wykonywania rozkazu HALT. Podczas zatrzymania
mikroprocesor wykonuje rozkaz NOP, dzięki czemu
nadal odświeżane są pamięci dynamiczne, czyli finito z
robotą .
/INT wejście Sygnał zgłoszenia przerwania maskowalnego (stan
aktywny niski). Stan na tym druciku wymuszany jest
przez zewnętrzne układy we-wy, czyli uwaga, ktoś puka
do naszych drzwi i chce zburzyć nasz błogi spokój .
/NMI wejście Sygnał zgłoszenia przerwania niemaskowalnego
(aktywny-niski). Przerwanie NMI ma wyższy priorytet
niż przerwanie maskowalne. Cechą charakterystyczną
tego przerwania jest to, że jak zostanie zgłoszone , to
ZAWSZE wejdzie, czyli ktoś puka do drzwi i jak nie
otworzymy mu, to se sam je otworzy ... łomikiem
/M1 wyjście Stan aktywny-niski. Ten drucik informuje o rozpoczęciu
wykonania pierwszego cyklu maszynowego (pobranie
kodu instrukcji do wykonania). Stany niskie na wyjściach
/M1 i /MREQ oznaczają, że mikroprocesor jest w trakcie
pobierania kodu rozkazu z pamięci, czyli uwaga ...
przyjmuję zleconko na małą robótkę
Andrzej Pawluczuk: Architektura mikroprocesorów Z80 - zagadnienia sprzętowe -6/12-
Sygnał Typ Znaczenie
/IORQ wyjście Stan aktywny-niski. Drucik informujący, że magistralą
trójstanowe adresową przesyłany jest ważny adres układów we-wy,
czyli uwaga, będę grzebać po portach . Stan niski
sygnału /IORQ i /M1 [niejako pobranie instrukcji z portu
a nie z pamięci] oznacza potwierdzenie przyjęcia
przerwania, czyli uwaga, kto do mnie pukał i czego
chce?
/MREQ wyjście Stan aktywny-niski. Sygnał informujący, że na magistrali
trójstanowe adresowej jest wystawiony adres komórki w pamięci,
czyli uwaga, będę grzebać w pamięci ... swojej .
/RD wyjście Stan aktywny-niski. Sygnał odczytu z pamięci lub
trójstanowe urządzeń we-wy. Pojawienie się stanu niskiego na tym
druciku oznacza wysłanie na magistralę danych
zawartości komórki pamięci lub rejestru układu we-wy,
czyli uwaga ... słucham was .
/WR wyjście Stan aktywny-niski. Sygnał zapisu danych do pamięci
trójstanowe lub układów we-wy. Stan niski na tym druciku
sygnalizuje, że na magistrali danych znajduje się bajt,
które powinno być zapisane do pamięci lub układu we-
wy adresowanego liniami A0-A15 magistrali adresowej,
czyli uwaga, mówię do was .
/WAIT wejście Stan aktywny-niski. Stan niski na tym wejściu oznacza,
że pamięć lub układy we-wy nie są gotowe do przesłania
danych. Mikroprocesor przedłuża cykl odczytu lub
zapisu nie zmieniając stanu sygnałów na wyjściach do
czasu, gdy stan sygnału /WAIT zmieni się na wysoki,
czyli drucik, poprzez który świat zewnętrzny informuje
mikroprocesor ej koleś procek, poczekaj, ja nie nadążam
... bo mam coś wspólnego ... z żółwiem .
/RFSH wyjście Stan aktywny-niski. Taki drucik, który oznacza
odświeżenie pamięci dynamicznych RAM, czyli uwaga,
ćwiczyć pamięć, bo niećwiczona pamięć to, ... co to ja
miałem ... a pamięć miałem, to się chyba nazywa ...
skleroza .
Andrzej Pawluczuk: Architektura mikroprocesorów Z80 - zagadnienia sprzętowe -7/12-
Budowa mikrokomputera w oparcie o mikroprocesor Z80 praktycznie zawsze
wygląda podobnie. Jako mikrokomputer należy tu rozumieć szeroko pojęte
urządzenie zawierające mikroprocesor: zarówno coś w stylu ZX SPECTRUM
(popularny swego czasu mikrokomputer generalnie używany do gier) jak i zwykły
zegarek z wyświetlaczem sterowanym przez Z80. Budowa obu urządzeń podlegają
tym samym zasadom. Całość można podzielić na dwie części: procesor
(mikroprocesor) oraz reszta świata . Również jest to prawdziwe w przypadku
mikrokontrolerów, tylko, że reszta świata również znajduje się fizycznie w tym
samym układzie scalonym.
Obie te części współpracują ze sobą i komunikują się poprzez grupy sygnałów
sterujących, które generalnie można podzielić na trzy rodzaje:
szyna danych,
szyna adresowa,
szyna sterująca.
Andrzej Pawluczuk: Architektura mikroprocesorów Z80 - zagadnienia sprzętowe -8/12-
W przypadku szyny adresowej (czyli zbioru pojedynczych drucików), to
intuicyjnie można określić, co wchodzi w jej skład. Podobnie w przypadku szyny
danych. Obie te szyny służą do przesyłania określonych informacji: szyna adresowa
podaje adresy do pamięci lub urządzeń, z którymi mikroprocesor aktualnie ma
potrzebę komunikacji, oraz szyna danych, przez którą mikroprocesor nakazuje
pamięci lub urządzeniom zewnętrznych (porty) zapamiętanie informacji lub przez
którą mikroprocesor pobiera informacje z pamięci lub z urządzeń zewnętrznych
(portów).
Zawartość szyny sterującej, to właściwie zbiór wszelkiego rodzaju drucików, za
pomocą których mikroprocesor określa dla reszty świata szczegóły swoich
zachcianek. Również reszta świata może przekazywać sygnały do mikroprocesora.
Generalnie, szyna sterująca zawiera wszelkiego rodzaju sygnały, które niosą
określoną informacją zarówno dla mikroprocesora jak i od mikroprocesora.
Posługując się dokumentacją mikroprocesora Z80 można zaobserwować co i w
jaki sposób jest wykonywane. Właściwie to należy uwierzyć dokumentacji, bo te
przebiegi trudno jest zaobserwować w rzeczywistości. Jeżeli sygnał CLK ma
częstotliwość 1MHz (na poniższym rysunku), to czas trwania T1 (T2, T3 ...) wynosi
1 mikrosekundę (1/1000000 s), a to raczej jest za szybko by dostrzec to
nieuzbrojonym okiem.
Andrzej Pawluczuk: Architektura mikroprocesorów Z80 - zagadnienia sprzętowe -9/12-
Tłumacząc powyższy rysunek przedstawiający pobranie z pamięci kodu instrukcji
do wykonania na język ludzi, to mamy (w chronologii czasowej pokazanej na
rysunku):
uwaga, na drucikach A0 do A15 jest zawarty adres (drucików jest 16 i za ich
pomocą można wyprodukować ponad 65 tys różnych kombinacji),
uwaga, ... przyjmuję zleconko na małą robótkę (w pewnym momencie M1=0),
uwaga, będę grzebać w pamięci (w pewnym MREQ =0),
uwaga, ... słucham was (w pewnym RD =0).
Na tak określone przez mikroprocesor zachcianki (czyli w czasie wystawienia
sterowań), reszta świata musi po pierwsze zgadnąć o co mu chodzi i to zrealizować.
Sprowadza się to do dokładnego określenia za pomocą różnych rozwiązań na bazie
układów logicznych. W tym wypadku układy powinny wypracować sygnał wyboru
do określonej pamięci, ponieważ mikroprocesor sięga do pamięci (MREQ=0) i
konkretnie chodzi o odczyt (RD=0) oraz cała ta zadyma dotyczy pobrania rozkazu do
wykonania (M1=0). Pamięć musi wystawić przechowywane dane na szynę adresową
i musi z tym wszystkim zdążyć na czas (czyli do końca cyklu). Po wycofaniu
sygnałów sterujących ze stanu aktywnego (co należy rozumieć jako koniec zadymy),
mikroprocesor wykonuje działania antysklerotyczne, czyli poleca układom pamięci
dynamicznych wykonanie odświeżenia pamięci. Jeżeli w systemie nie są używane
pamięci dynamiczne, to te sterowanie można zignorować.
W czasie trwania cyklu odświeżania, mikroprocesor, by nie tracić czasu,
wykonuje to co nakazuje mu pobrany rozkaz. Czasami zajmie mu to trochę więcej
czasu, czasami dodatkowo trzeba będzie zrobić zapis do pamięci, czasami do partu,
ewentualnie zamiast zapisu będzie odczyt. To wszystko zależy od kodu pobranego
Andrzej Pawluczuk: Architektura mikroprocesorów Z80 - zagadnienia sprzętowe -10/12-
rozkazu. Istnieje bardzo wiele instrukcji, które nie będą wymagały dodatkowych
akcji związanych z szynami danych, adresowych oraz sterowań.
Jak to wszystko, czego wymagał pobrany rozkaz zostanie zakończone, to
mikroprocesor ponownie pobierze rozkaz do wykonania, czyli koło się zamyka.
Jak zostało wspomniane wcześniej, wykonywany rozkaz może być poleceniem
odczytu lub zapisu danych do pamięci.
Powyższy diagram pokazuje w szczegółach, co jest realizowane w tych
operacjach.
W przypadku odczytu jest podobnie jak przy pobraniu kodu rozkazu (w końcu
pobranie rozkazu do wykonania sprowadza się do odczytania tego kodu z pamięci).
Jedyną występującą różnicą jest brak stanu aktywnego sygnału M1 (również nie
występuje cykl odświeżania pamięci, który wchodzi w skład operacji pobrania
rozkazu).
W przypadku zapisu do pamięci, również mikroprocesor na szynie adresowej
wystawia adres, na szynie danych zapisywane informacje i wystawia sygnał żądania
dostępu do pamięci, czyli: uwaga, będę grzebać w pamięci (w pewnym MREQ =0).
W odpowiedzi wszystkie bramki, przerzutniki, rejestry i całe inne towarzystwo
reszty świata się sprężyło i w napięciu [chodzi o napięcie emocjonalne a nie
elektryczne :-)] czeka ... bo nie było informacji, że to odczyt (nie było RD=0),
więc ... w pewnym momencie przychodzi: polecenie teraz zapisać (WR=0) i
następuje odprężenie.
Przedstawione rysunki opisywały operacje dotyczące pamięci. Na podobnej
zasadzie odbywają się sterowania w operacjach dotyczących portów. W tym
przypadku zamiast sygnału MREQ występuje IORQ. W operacjach odczytu z portu
przebieg sygnałów przedstawia następujący rysunek.
Andrzej Pawluczuk: Architektura mikroprocesorów Z80 - zagadnienia sprzętowe -11/12-
Informacje występujące na szynie danych należy interpretować następująco:
na drucikach A0 do A7 (inaczej niż w operacjach dotyczących pamięci)
określony jest adres, możliwych kombinacji jest 256,
uwaga, będę grzebać po portach (IORQ=0),
uwaga, ... słucham was (w pewnym RD =0).
W operacjach dotyczących portów występuje jeszcze jeden szczegół, który nie
występował w operacjach dotyczących dostępu do pamięci. Mikroprocesor w
każdym odwołaniu do portu wstawia jeden cykl oczekiwania, czyli przedłuża o jeden
impuls zegarowy czas trwania aktywnego stanu sterowań. Wynika to z tego, że porty
z założenia traktowane są jako elementy powolne. Po określeniu poprzez sygnały
sterujące czego chce mikroprocesor, elektronika reszty świata jak zwykle się spręża
by wszystko było na czas a port, jak leniwa istota ... zanim się namyśli ... zanim poda
swoje informacje na szynie danych... , więc tu mikroprocesor wykazuje się dużą dozą
cierpliwości, troszkę poczeka (i robi to zawsze).
Identycznie jak przy odczycie, w operacjach zapisu danych do portu również
występuje jeden takt oczekiwania na gotowość portu na przyjęcie danych.
Andrzej Pawluczuk: Architektura mikroprocesorów Z80 - zagadnienia sprzętowe -12/12-
Z istotnych cykli wykonywanych przez mikroprocesor pozostało jeszcze przyjęcie
i realizacja obsługi przerwania. Sama realizacja obsługi przerwania niczym nie różni
się od normalnych cykli M1 (związanych z pobieraniem instrukcji do wykonania),
natomiast cechy charakterystyczne występują w momencie rozpoczęcia obsługi
przerwania. Przedstawia po poniższy rysunek.
Z racji, że przerwanie w swej istocie zawsze jest związane z urządzeniami
zewnętrznymi (portami), to rozpoczęcie obsługi przerwania jest sygnalizowane dla
reszty świata pewnym charakterystycznym szczegółem: wykonany jest cykl M1 dla
urządzenia (portu). Można to rozumieć jako pobranie kodu rozkazu do wykonania
nie z pamięci, tylko z portu. Nie jest to rzeczywiste pobranie kodu rozkazy (nawet
nie występuje sygnalizacja operacji odczytu, sygnał RD ciągle jest jedynką). Ta
trochę dziwna sekwencja sterująca służy do sygnalizacji przez procesor faktu
rozpoczęcia obsługi przerwania. Zgłaszające przerwanie urządzenia mają obowiązek
rozpoznania tego stanu i w takim momencie porozumieć się z mikroprocesorem
celem ustalenia wszystkich szczegółów związanych z rzeczywistym rozpoczęciem
obsługi przerwania. Takie możliwości mają wszystkie układy wchodzące w skład
rodziny mikroprocesorowej Z80.
Wyszukiwarka
Podobne podstrony:
Z80Lewis Shiner Nine Hard Qiuestions about the Nature of the UniverseZ80 przykladyHard Disk Upgradehard compressionChicago Hard Habit To BreakThermally enhanced machining of hard toZ80 2dCharsHard To Forget The First Loverhard working manAccept It s Hard To Find A WayFanuc 0T Hard ST25 L510 85 1więcej podobnych podstron