technika mikroprocesorowa i wykład 1 - strona główna...

162
Technika mikroprocesorowa I Wyklad 1

Upload: nguyencong

Post on 01-Mar-2019

221 views

Category:

Documents


0 download

TRANSCRIPT

Technika mikroprocesorowa I

Wykład 1

„Układy mikroprocesorowe. Przykłady rozwiązań” Autor: BartłomiejZieliński

„Układy mikroprocesorowe” Ryszard Krzyżanowski

„Mikroprocesor Z80” Jerzy Karczmarczuk

"Układy mikroprocesorowe Z80" Fedyna, Mizeracki

pl.wikipedia.org

Literatura do bieżącego wykładu:

Mikroprocesor- definicje!!!

Mikroprocesor to synchroniczny automat sekwencyjny wykonującydołączony z zewnątrz program.

Definicja Wikipedia: Mikroprocesor –układ cyfrowy wykonany jako pojedynczy układ scalony o wielkim stopniu integracji (LSI) zdolny do wykonywania operacji cyfrowych według dostarczonego ciągu instrukcji.

Do działania mikroprocesoraniezbędny jest sygnał zegarowy, który wyznacza szybkości jego pracy.

Program wykonywany przez mikroprocesor składa się z rozkazów (instrukcji).

Lista instrukcji jest stała, charakterystyczna dla danego mikroprocesora,uniwersalna lub zorientowana (np. na przetwarzanie obrazu, obliczenia numeryczne itp.)

Jednostka sterująca

Jednostka wykonawcza

IR DekUkład

sterowania

A F

B C

D EALUDANE

DANE-WYNIKI

SYGNAŁY STERUJĄCE

PROGRAM

WEWNĘTRZNE SYG. STER.

Budowa mikroprocesora

Budowa mikroprocesoraPodstawowymi podzespołami mikroprocesora są:

- Jednostka wykonawcza EU(Execution Unit), która przetwarza informacje wykonując wszelkie operacje arytmetyczne i logiczne.

-Jednostka sterująca CU (Control Unit), która określa rodzaj wykonywanych operacji.

W skład jednostki wykonawczej EU wchodzą:

-jednostka arytmetyczno-logiczna ALU,

-zestaw współpracujących z nią rejestrów.

Informacją wejściową części wykonawczej są dane, zaś wyjściowąwyniki.

W skład jednostki sterującej CU wchodzą:

- rejestr rozkazów IR,

- dekoder rozkazów,

- układ sterowania.

W rejestrze rozkazów przechowywany jest kod aktualnie wykonywanego rozkazu. Kody rozkazów pobierane są do rejestru rozkazów z pamięci. Po pobraniu z pamięci kod rozkazu jest dekodowany w dekoderzerozkazów, czyli jest określane, jaką operację będzie wykonywał mikroprocesor. Na tej podstawie układ sterowania wytwarza odpowiedni sygnał sterujący.

Jednostka Arytmetyczno-Logiczna(ang. Arithmetic Logic Unit, ALU) układ kombinacyjny, wykonujący na danych w rejestrach operacje arytmetyczne (np. suma, różnica) oraz logiczne (np. OR, AND).

Rejestry w procesorze:

Akumulator A, ACC - rejestr bezpośrednio współpracujący z ALU (stanowi źródło i rejestr wynikowy dla operacji arytmetycznych ilogicznych)

Wskaźnik stosu SP- wskazuje koniec tzw. stosu.

Licznik rozkazów PC – wskazuje adres komórki pamięci programu z następnym rozkazem do wykonania

Rejestr flag - zawiera flagi (znaczniki bitowe) ustawiane w zależności od wyniku wykonanej operacji (np. nadmiar, zero, bit parzystości)

Rejestry ogólnego przeznaczenia– tzw. robocze (służą do przechowywani argumentów, adresów itp.)

Rejestr znacznikówW technice mikroprocesorowej liczby zapisywane są zasadniczo w dwóch kodach:

-Naturalnym binarnym (NB)- liczby bez znaku.

-Uzupełnień do 2 (U2)-liczby ze znakiem.

Dla potrzeb działań na liczbach dziesiętnych nie ma wydzielonych rozkazów arytmetycznych, ale wprowadzono rozkazy korekcji dziesiętnej.

Na podstawie efektów obliczeń układ ALU ustawia lub kasujeokreślone bity warunkowe w rejestrze znaczników.

Rozróżnia się następujące bity warunkowe:

C – Przeniesienie lub pożyczka, bit dynamiczny, kod NB

Z- Zerowość, bit statyczny, kod NB i U2

N- Ujemność, bit statyczny, kod U2

V- Przepełnienie, bit dynamiczny, kod U2

Ponadto spotyka się jeszcze:

H- Przeniesienie połówkowe, kod NB

P- Parzystość (ilość jedynek).

Bity statyczne są ustawione bez konieczności przeprowadzania obliczeń.

Efektami działania rozkazu mogą być:

-brak zmiany bitu,

-ustawienie lub skasowanie bitu w zależności od wyniku operacji,

-przyjęcie stałej wartości 0 lub 1,

-nieustalony stan bitu.

0100 40101 50110 60111 7

0000 00001 10010 20011 3

1000 81001 91010 101011 111100 121101 131110 141111 15

NB

1100 -41101 -31110 -21111 -1

1000 -81001 -71010 -61011 -5

0000 00001 10010 20011 30100 40101 50110 60111 7

U2

Kod Naturalny Binarny i Kod U2

Zamiana liczb dodatnich na liczby ujemne w kodzie U2

0101 5 Negacja wszystkich

bitów1010 Dodanie 10001

1011 -5

0111 7 Negacja wszystkich

bitów1000 Dodanie 10001

1001 -7

Zamiana liczb ujemnych na liczby dodatnie w kodzie U2

1001 -7 Negacja wszystkich

bitów0110Dodanie 10001

0111 7

1000 -8 Negacja wszystkich

bitów0111Dodanie 10001

1000 -8Nie da się !!!

Działanie bitów warunkowychKOD NB

Dodawanie

0110 60011 3

1001 9

C=0, Z=0

1011 111100 12

0111 7

C=1, Z=0

0101 51011 11

0000 0

C=1, Z=1

Działanie bitów warunkowychKOD NB

Odejmowanie

W przypadku odejmowania niezależnie od kodu odjemnik jest negowany i zwiększany o1 po czym następuje dodawanie.

1100 1010

0110 6

C=0, Z=0

1100 120110 6

1

0101 0010

0111 7

C=1, Z=0

0101 51110 14

0

UWAGA w odejmowaniu bit C jest tzw. pożyczką, w związku z czym jest ustawiany wg negacji przeniesienia z najstarszego bitu

Działanie bitów warunkowychKOD U2

Dodawanie

0011 30100 4

0111 7

C=0, N=0, V=0

1101 -31100 -4

1001 -7

C=1, N=1, V=0

0110 60100 4

1010 -6

C=0, N=1, V=1

Wynik niepoprawny

Działanie bitów warunkowychKOD U2

Odejmowanie

1101 0100

0001 1

C=0, N=0, V=0

1101 -31100 -4

0101 0100

0111 7

C=1, N=0, V=0

0011 31100 -4

0110 0111

1101 -3

C=1, N=1, V=1

0110 61001 -7

Wynik niepoprawny

Pamięć programu i danych

Pamięć programu to element systemu mikroprocesorowego, w którym przechowywane są rozkazy wykonywane przez mikroprocesor i dane stałe. Najczęściej są to pamięci nieulotne typu ROM, EPROM, EEPROM.

Pamięć danych to element systemu mikroprocesorowego, w którym przechowywane są dane i wyniki w trakcie działania mikroprocesora. Najczęściej są to pamięci RAM, EEPROM, rzadziej DRAM.

Do adresowania kolejnych komórek pamięci służy magistrala adresowa mikroprocesora, do przesyłania danych, magistrala danych, do zapisu i odczytu pamięci- magistrala sterująca.

Ważne pojęcia Techniki MikroprocesorwejStos:wydzielony obszar pamięci służący do przechowywania danych, adresów powrotów z procedur, adresów powrotów z przerwań. Działajak kolejka typu FI-LO (First Input-Last Output). Adres wierzchołka stosu pokazuje wskaźnik stosu.

Przerwanie: sygnał zewnętrzny, wewnętrzny lub rozkaz, powodujący zarzucenie wykonywania programu po dokończeniu bieżącej instrukcji, zapamiętanie adresu powrotu do programu i przejście do wykonania tzw. procedury obsługi zakończonej odpowiednim rozkazem, powodującym powrót do programu właściwego.

Ze względu na źródło, przerwania dzielimy na:

-sprzętowe:

-wewnętrzne (znaczniki),

-zewnętrzne (sygnały),

-programowe (rozkaz,).

Ze względu na sposób przyjęcia:

-maskowalne(aby zostały przyjęty odpowiedni bit maski musi to umożliwi ć),

-niemaskowalne(przyjmowane zawsze i bezwarunkowo).

Cykl maszynowy- pojedynczy cykl dostępu do pamięci lub urządzenia we-wy lub akceptacji przerwania. Składa się z kilku cykli zegarowych.

Cykl instrukcji - czas potrzebny do wykonani instrukcji od jej pobrania do wykonanie. Składa się z jednego lub kilku cykli maszynowych.

Instrukcja: najmniejszy element języka programowania. Po napisaniu w języku najniższego rzędu (asemblerze) i po przetłumaczeniu na kod binarny może być wykonana przez mikroprocesor.

W skład instrukcji wchodzi zawsze kod operacyjny instrukcji . Mogą wejść także dodatkowe informacje typu:

-dana natychmiastowa,

-adres,

-dalsza część kodu instrukcji , itp..

Program: jest to ciąg instrukcji wykonywanych przez mikroprocesor.

Zerowanie mikroprocesora

Licznik rozkazów- PC=0000

KOD1

KOD2

KOD3

KOD4A

DANA

ADRES1

ADRES2

KOD4B

Licznik rozkazów PC=0002

Licznik rozkazów PC=0003

Licznik rozkazów PC=0006

Licznik rozkazów PC=0008

0000

0001

0002

0003

0004

0005

0006

0007

0008

pobranie

pobranie

pobranie

pobranie

Wykonywanie programu przez procesor

Licznik rozkazów PC=0000

KOD1

KOD2

DANA

DANA

KOD4

Licznik rozkazów PC=0002

Licznik rozkazów PC=0003

0000

0001

0002

0003

0004

0005

0101

0102

0100

KOD3

0103

Przerwanie

0005

1000100110021003

Wskaźnik stosu SP=1004

Wskaźnik stosu SP=1002

Wskaźnik stosu SP=1004

Obszar stosu

RETI

Licznik rozkazów PC=0005

Wskaźnik stosu SP=1004

Instrukcja powrotu z przerwania

Licznik rozkazów PC=0005

Licznik rozkazów PC=0100

Wykorzystanie stosu- obsługa przerwania

Tryby adresacji w systemach mikroprocesorowychadresowanie natychmiastowe-argument jest pobierany bezpośrednio z rozkazu,

adresowanie rejestrowe-operandy znajdują się w rejestrach wewnętrznych mikroprocesora,

adresowanie bezpośrednie- adres operandu znajduje się bezpośrednio w rozkazie,

adresowanie pośrednie- adres operandu znajduje się w rejestrze mikroprocesora,

adresowanie bazowe-adres rozkazu wskazuje rejestr bazowy,

adresowanie indeksowe- adres efektywny jest sumą zawartości adresu bazowego zawartego w rejestrze indeksowym i przesunięcia zawartego w kodzie rozkazu.

System mikroprocesorowy

System mikroprocesorowy:Układ elektroniczny złożony z mikroprocesora wraz z niezbędnymi układami pamięci programu i danych, układami wejścia-wyjścia (zapewniającymi kontakt z użytkownikiem) oraz niezbędnymi układami sterującymi nosi nazwę systemu mikroprocesorowego.

Mikrokontroler – scalony system mikroprocesorowy, zrealizowany w postaci pojedynczego układu scalonego, który zawiera:

-jednostkę centralną (CPU),

-pamięć danych oraz na ogół pamięć programu,

-układy wejścia-wyjścia.

System mikroprocesorowy

Dekoder adresowy

clkDO-DiDO-Di

Magistrala danych

Pamęćprogramu

Pamięć danych

AO-Ak

Magistrala adresowa

RD WR

WR RDMagistrala sterująca

Mikroprocesor

Urządzenia wejścia-wyjścia

Schemat blokowy

Magistrale systemu mikroprocesorowego

Magistrala danych- służy do przesyłania danych, wyników oraz kodów instrukcji. Jest to magistrala dwukierunkowa, tzn. informacje zarówno wpływają do mikroprocesora, jak i są przez niego wysyłane do innych układów.

Magistrala adresowa- służy do adresowania komórek pamięci lub układów wejścia/wyjścia, z którymi chce się komunikowaćmikroprocesor. Jest to magistrala jednokierunkowa, tzn. adresy sągenerowane tylko przez mikroprocesor.

Magistrala sterująca- służy do sterowania pracą układów współpracujących z mikroprocesorem, sygnalizowania kierunku przesyłu danych oraz sygnalizowanie pewnych określonych stanów układów współpracujących.

Architektury mikroprocesorów

Architektura CISC– ang. Complex Instruction Set Computers

Architektura RISC– ang. Reduced Instruction Set Computers

Architektury:

– Von Neumanna

– Harvardzka

– Harvardzka zmodyfikowana

Cechy architektury RISC:-zredukowana liczba rozkazów do niezbędnego minimum,

-redukcja trybów adresowania, dzięki czemu kody rozkazów są prostsze,bardziej zunifikowane, (upraszcza dekoder rozkazów),

-ograniczenie komunikacji pomiędzy pamięcią, a procesorem,

-przetwarzanie potokowe- równoległe wykonywanie

rozkazów.

Obecnie popularne procesory z punktu widzenia programisty są widziane jako CISC, ale ich rdzeń jest RISC-owy. Rozkazy CISC są rozbijane na mikrorozkazy, które są następnie wykonywane przez RISC-owy blokwykonawczy.

Cechy architektury CISC:-występowanie złożonych, specjalistycznych rozkazów (instrukcji), którewymagają od kilku do kilkunastu cykli maszynowych (zmienna liczba cykli),

-szeroka gama trybów adresowania (skomplikowana konstrukcja dekoderów adresu),

-stosunkowo długa listy rozkazów procesora.

Wady architektury CISC:

- zbyt długa lista rozkazów - część z nich jest rzadko używana,

-zbyt dużo czasu traci się na operacje przepisania z pamięci do rejestrów i odwrotnie,

-ogólnie mała efektywność w obliczeniach numerycznych.

Architektura Von Neumanna

Mikroprocesor

Pamięćdanych

Pamięćprogramu

Magistrala danych

Magistrala adresowa

RDWR

Wspólna przestrzeń adresowa dla pamięci kodu i danych. Wspólne magistrale:

-danych,

-adresowa,

-sterująca.

Architektura Harvardzka

Mikroprocesor

Pamięćdanych

Pamięćprogramu

Magistrala danych programu

Magistrala adresowa programu

Magistrala danych danych

Magistrala adresowa danych

Osobne magistrale adresowe i danych dla programu i danych.

Architektura Harvardzka, zmodyfikowana

Mikroprocesor

Pamięćdanych

Pamięćprogramu

Magistrala danych

Magistrala adresowa

RDWR

PSENWspólna magistrala danych i

adresowa, ale pamięci rozdzielone dzięki osobnym

sygnałom sterującym.

Intel 4004

Wprowadzony na rynek 15 listopada 1971

Cechny:

-zegar 740 kHz,

-szyna danych: 4-bitowa,

-pamięć adresowalna danych 640 bajtów,

-pamięć programu 4 kilobajty.

Pierwszy mikroprocesor na świecie używany w kalkulatorach Busicom

Historia Mikroprocesorów

Intel 4004Dane techniczne:

-osobna pamięć dla programu i danych (tzw. ”architektura harwardzka"),

-dostępne 46 instrukcji,

-16 czterobitowych rejestrów,

-stos 3-poziomowy.

Intel 8080Został wyprodukowany w kwietniu 1974.

Cechy mikroprocesora:

-zegar 2 MHz,

-szyna danych 8-bitowa,

-liczba tranzystorów 6000,

-pamięć jest adresowana 16-bitową szyną adresową,

-jest on uniwersalną jednostką centralną złożoną z jednostki arytmetyczno-logicznej, rejestrów roboczych i układu sterowania,

-słowo 8-bitowe,

-realizuje 72 instrukcje,

-8 rejestrów programowych dostępnych dla programisty,

-wymagał 3-ech napięć zasilające: +5V, +12V, -5V (włączanych w określonej kolejności),

-posiadał ubogi zestaw trybów adresowania,

-istniała konieczność stosowania dodatkowych układów: zegar i sterownik magistrali.

Mikroprocesor Z80Firma Zilog została założona przez byłych pracowników firmy Intel. Opracowali oni projekt mikroprocesora opartego na Intel 8080. Nowy układ o nazwie Z80 wszedł do sprzedaży w lipcu 1976 roku.

Dużą zasługę w sukcesie nowego mikroprocesora odegrała w Z80 zgodność programowa z 8080 – systemy oparte na Z80 bez większych problemów mogły korzystać istniejącej już bazy oprogramowania dla 8080.

Zaletami Z80 w porównaniu do 8080 były:

-pojedyncze napięcie zasilające,

-jednofazowy zegar,

-brak konieczności stosowania dodatkowych kontrolerów magistrali,

-rozszerzona lista rozkazów (m.in. rozkazy arytmetyczne 16-to bitowe),

Cechy mikroprocesora Z80

-8-bitowa magistrala danych,

-16-bitowa magistrala adresowa – możliwość zaadresowania 64kB pamięci RAM i obszaru 256B przestrzeni in/out,

-zasilanie i poziomy logiczne zgodne ze standardem TTL (za wyłączeniem zegara taktującego),

-dodatkowe rozkazy (w porównaniu z 8080, m.in. adresacja indeksowa),

-wszystkie sygnały sterujące i obie magistrale dostępne wprost (brak multipleksowania),

-wbudowany układ odświeżania pamięci dynamicznej;

-158 rozkazów, w tym 78 zgodnych z mikroprocesorem Intel 8080 (pełna wsteczna kompatybilność z 8080);

-zestaw rozkazów operujących na 16-bitowych danych (rejestry można „sklejać” parami);

-zegar od 2MHz do 8 MHz (produkowana w NRD (Republika Demokratyczna Niemiec)- wersja 1MHz,

- duży jak dla procesora 8-bitowego zestaw rejestrów wewnętrznych ogólnego przeznaczenia wraz z zestawem alternatywnych rejestrów.

Mikroprocesor Z80 (ZILOG)

Schemat blokowy [www.zilog.com]

Zestaw rejestrów

[www.zilog.com]

A- akumulator , rejestr współpracujący z jednostką arytmetyczno-logiczną ALU. Jest źródłem argumentów oraz rejestrem wynikowym przy operacjach arytmetycznych 8-mio bitowych i logicznych. Jest rejestrem uprzywilejowanym pod względem trybu ilości trybów adresacji.

F- rejestr znaczników, zawiera bity warunkowe ustawiane lub kasowane w czasie działania programu.

[www.zilog.com]

C- przeniesienie lub pożyczka,

N- ostatnio wykonywaną instrukcją było odejmowanie lub dodawanie (informacja ta jest potrzebna do korekcji dziesiętnej po tych operacjach)

P/V- parzystość/przepełnienie

Po operacjach arytmetycznychwskazuje czy nastąpiło przepełnienie w przypadku działania na kodzie U2.

Po operacjach logicznychwskazuje na parzystą ilość jedynek w akumulatorze.

H- przeniesienie połówkowe, informuje o wystąpieniu przeniesienia pomiędzy 3 i 4 bitem bajta (do korekcji dziesiętnej).

Z- zerowość, jest ustawiany na jeden jeśli w wyniku operacji arytmetycznej logicznej lub porównania wynik w akumulatorze jestrówny 0

S- znak, jest kopią 7 bitu akumulatora, oznacza liczbę ujemną w kodzie U2

Rejestry B i C. Można połączyć je w parę 16-to bitową BC. Są to rejestry ogólnego przeznaczenia wykorzystywane również jako liczniki operacji blokowych i do tworzenia pętli liczących. Rejestr C służy do adresacji przestrzeni we-wy.

Rejestry D i E. Można połączyć je w parę 16-to bitową DE. Są to rejestry ogólnego przeznaczenia.

Rejestry H i L. Można połączyć je w parę 16-to bitową HL. Są to rejestry ogólnego przeznaczenia. Ponadto para rejestrów HL jest używana jako rejestr adresowy przestrzeni pamięci oraz jako akumulator przy operacjach arytmetycznych 16-to bitowych.

Rejestry A’ i F’ – rejestry lustrzane do A i F. Istnieje możliwość wymiany zawartości tych rejestrów np. na czas wykonywania obsługi przerwania.

Rejestry B’, C’, D’, E’ H’,L’ - rejestry lustrzane do B,C,D,E,H,L. Istnieje możliwość wymiany zawartości tych rejestrów np. na czaswykonywania obsługi przerwania.

Rejestry IX, IY - rejestry 16-to bitowe indeksowe, służące do adresacji obszaru pamięci. W rejestrach tych znajduje się adres bazowy. Przy adresacji indeksowej, adres efektywny jest sumą adresu bazowego zawartego w Ix lub IY i 8-mio bitowego przesunięcia w kodzie U2, podanego za kodem rozkazu przesłania. Kody operacyjne instrukcjiwykorzystujących rejestry indeksowe są dwubajtowe.

Rejestr SP- 16-to bitowy wskaźnik stosu. Przy składaniu na stos wskaźnik jest zmniejszany a następnie następuje zapis na stos. Po rozpoczęciu programu należy go ustawić w zależności od dysponowanej pamięci.

Rejestr PC- 16 bitowy licznik rozkazów, po RESET ustawiany na 0000. Wskazuje adres następnego rozkazu do odczytu.

Rejestr R- rejestr odświeżania zawiera cyklicznie zwiększany adres (osiem młodszych bitów magistrali adresowej) do odświeżania pamięci dynamicznych.

Rejestr I- rejestr adresu tablicy przerwań

Wyprowadzenia mikroprocesora Z80

[www.zilog.com]

Wyprowadzenia mikroprocesora Z80A0-A15 (wy)- 16-to bitowa magistrala adresowa umożliwiająca zaadresowanie 64-kB pamięci oraz 256B urządzeń we-wy.

D0-D7 (we-wy)- 8-mio bitowa magistrala danych.

RD (wy)- strob odczytu pamięci lub urządzenia wejścia-wyjścia (aktywny stan niski)

WR (wy)- strob zapisu do pamięci lub urządzenia wejścia-wyjścia (aktywny stan niski)

MREQ (wy)- informacja iż bieżący cykl jest związany z dostępem do pamięci (aktywny stan niski)

IORQ (wy)- informacja iż bieżący cykl jest związany z dostępem do urządzenia we-wy (aktywny stan niski)

M1 (wy)- informacja, że bieżący cykl jest pierwszym cyklem maszynowym cyklu rozkazowego (pobranie pierwszego bajtu KO z pamięci) (aktywny stan niski)

Wyprowadzenia mikroprocesora Z80

IORQ + M1 (wy)- cykl akceptacji przerwania (informuje o przyjęciu przerwania maskowalnego)

WAIT (we) - sygnał niegotowości, wykorzystywany do wydłużania cyklu magistrali przy dostępie do pamięci lub urządzenia we-wy (aktywny stanem niskim). Sygnał jest testowany opadającym zboczem w takcie T2 zegara w czasie każdego cyklu maszynowego.

HALT (wy) - sygnał informujący iż mikroprocesor jest w trakcie wykonywania instrukcji HALT (aktywny stan niskim)

RFSH (wy)- sygnał informujący iż wystawiony adres dotyczy odświeżania pamięci dynamicznej (aktywny stanem niskim)

RESET (we)-wejście zerowania mikroprocesora, powoduje wyzerowanie licznika rozkazów i przygotowanie do pracy (aktywny stanem niskim).

Wyprowadzenia mikroprocesora Z80

CLK (we)- wejście sygnału zegarowego

BUSRQ (we)-wejście żądania zwolnienia magistrali (aktywne stanem niskim). Testowane w każdym cyklu maszynowym. Jeżeli pod koniec bieżącego cyklu maszynowego mikroprocesor wykryje stan niski na tym wejściu, kończy cykl (nie kończy rozkazu) na liniach danych, adresowych i sterujących pojawia się stan wysokiej impedancji. Wysterowuje linię BUSACK. Po wycofaniu sygnału procesor dokańcza bieżący cykl rozkazowy.

BUSACK (wy)- informuje iż procesor oddał magistralę.

Technika mikroprocesorowa I

Wykład 2

Literatura:

www.zilog.com „Z80 Family, CPU User Manual”

Cykle magistrali w mikroprocesorze Z80-odczyt kodu rozkazu,

-odczyt-zapis pamięci,

-odczyt-zapis urządzenia we-wy,

-cykl oddania magistrali,

-cykl przyjęcia przerwania maskowalnego,

-cykl przyjęcia przerwania niemaskowalnego,

-wyjście z rozkazu HALT.

Pobranie kodu rozkazu z pamięci

Cykl odczytu i zapisu pamięci

Cykl odczytu i zapisu urządzeń we-wy

Cykl oddania magistrali

Cykl przyj ęcia przerwania maskowalnego

Cykl przyj ęcia przerwania niemaskowalnego

Wyj ście z rozkazu HALT

INT

System przerwań mikroprocesora Z80

Z80 posiada dwa wejścia zgłaszania przerwań:

NMI - przerwanie niemaskowalne,

INT - przerwanie maskowalne (odmaskowanie rozkazem EI (enableIbterrupt), zamaskowanie rozkazem DI (Disable Interrupt).

Przerwanie NMIPrzerwanie jest aktywne opadającym zboczem na wejściu NMI .

Pojawienie się ujemnego zbocza (przejście z „1” na „0”), powoduje:

-złożenie na stosie adresu powrotu do programu głównego,

-załadowanie do PC adresu 0066h (stały adres obsługi przerwania niemaskowalnego).

Tryby przyj ęcia przerwania maskowalnego:W mikroprocesorze Z80 są 3 tryby przyjmowania przerwania maskowalnego, przełączane rozkazem IMx (Interrupt Mode x-numer modu).

W architekturze wewnętrznej mikroprocesora Z80 istnieją dwa przerzutniki flip-flop odpowiedzialne za aktywację obsługi przerwańmaskowalnych. Noszą nazwę odpowiednio: IFF1 i IFF2 .

IFF1- włącza i wyłącza obsługę przerwańmaskowalnych (jest maską przerwań maskowalnych, po RESET- zerowany),

IFF2 -stanowi tymczasowe miejsce przechowywania stanu maski przerwań (stanu przerzutnika- IFF1 jest przepisywany do IFF2), po RESET IFF1 i IFF2 są zerowane.

Gdy pojawi się przerwanie niemaskowalne (wyższy priorytet), stan maski przerwań IFF1 jest zapamiętywany w rejestrze bitowym IFF2.Zdekodowanie rozkazu powrotu z przerwania niemaskowalnego NMI (RETN) powoduje odtworzenie stanu IFF1 na podstawie IFF2.

Tryb 0- odpowiada reakcji na przerwania mikroprocesora 8080. W tymtrybie urządzenie przerywające, w cyklu akceptacji przerwania,umieszcza na magistrali danych dowolną instrukcję, a mikroprocesor jąwykonuje. Dedykowaną instrukcją jest rozkaz restartuRST n (n:0-7). Instrukcja ta powoduje złożenie na stosie adresu powrotu i skok do procedury obsługi zależny od numeru restartu:

n=0 adres 0000h

n=1 adres 0008h

n=2 adres 0010h

n=3 adres 0018h

n=4 adres 0020h

n=5 adres 0028h

n=6 adres 0030h

n=7 adres 0038h

Tryb 1- w tym trybie mikroprocesor reaguje na przerwanie przez wykonanie procedury obsługi od adresu 0038H (po złożeniu na stosie . Zatem reakcja jest identyczna jak reakcja na przerwanie niemaskowalne, w którym adresem wywoływanym jest adres0066H.

Tryb 2- jest najbardziej elastycznym trybem reakcji na przerwanie. W tym trybie programista tworzy tablicę 16-bitowych adresów startowych dla każdej procedury obsługi przerwania. Tablica ta może byćumieszczona w dowolnym miejscu w pamięci (decyduje o tym zawartość rejestru I). Gdy przerwanie zostanie przyjęte, urządzenie zgłaszające wystawia na magistrali danych 8-mio bitową, mniej znaczącą, zawsze parzystą część 16-bitowego wskaźnika, w celu pobrania z tablicy adresu startowego obsługi przerwania. W związku z powyższym tryb 2 dopuszcza tylko 128 rozróżnialnych źródeł przerwania.

Tryby adresacji w mikroprocesorze Z80

Mikroprocesor Z80 realizuje następujące tryby adresowania:

-natychmiastowy– argument bezpośrednio za kodem operacji (LD A,0F– załaduj do akumulatora liczbę 0F),

-bezpośredni – dwubajtowy adres argumentu znajduje się w pamięci bezpośrednio za kodem operacji (LD A,(700) – załaduj do akumulatora zawartość komórki pamięci o adresie 0700),

-pośredni erejstrowy – dwubajtowy adres argumentu znajduje się w parze rejestrów BC, DE, HL lub SP (LD A,(BC) –załaduj do akumulatora zawartość komórki pamięci o adresie zawartym w parze rejestrów BC),

-indeksowy– dwubajtowy adres argumentu tworzony jest jako suma zawartości jednego z rejestrów indeksowych IX lub IY i jednobajtowego przesunięcia w kodzie U2 zapisanego za kodem operacji; np. LD A,(IX+8) – załaduj do akumulatora zawartość komórki pamięci o adresie zawartym w rejestrze IX zwiększonym o 8;

-względny– tryb wykorzystywany tylko przez rozkaz skoku względnego JR – zawartość rejestru PC jest modyfikowana przez dodanie jednobajtowego przesunięcia w kodzie U2 umieszczonego w pamięci za kodem operacji skoku;,

-rejestrowy– argument znajduje się w jednym z rejestrów lub w parze rejestrów (w przypadku argumentu 16-bitowego); np. ADD IX,SP –dodaj do zawartości rej. IX wartość rej SP;

-strony zerowej, pojedynczych bitów i implikowany– dotyczą małej liczby rozkazów sterujących (np. RST 8 – wywołanie podprogramu pod adresem 8), logicznych-operacje na pojedynczych bitach (np. RES 0,A –skasowanie bitu 0 w akumulatorze) oraz rozkazów dlaktórych jednoznacznie określone jest położenie argumentu (np. DAA – korekcja dziesiętna akumulatora po operacjach arytmetycznych).

Lista rozkazów mikroprocesora Z80

Instrukcje przesyłania danych (8-mio bitowych)

Prześlij zawartość rejestru r’ do rejestru r

Wpisz do rejestru r liczbę 8-mio bitową n

Załaduj do rejestru r zawartość komórki pamięci o adresie zawartym w HL

Załaduj do r zawartość komórki o adresie zawartej w IX+ offset d

Załaduj do r zawartość komórki o adresie zawartej w IX+ offset d

Zapisz zawartość komórki o adresie zawartym w HL do rejestru r

Zapisz zawartość rejestru r do komórki pamięci o adresie zawartym w IX z offsetem d

Zapisz zawartość rejestru r do komórki pamięci o adresie zawartym w IY z offsetem d

Zapisz do komórki o adresie zawartym w HL liczbę 8-mio bitową n

Zapisz do komórki o adresie zawartym w IX+ offset d, liczbę 8-mio bitową n

Zapisz do komórki o adresie zawartym w IY+ offset d, liczbę 8-mio bitową n

Załaduj do akumulatora A zawartość komórki pamięci o adresie zawartym w parze rejestrów BC

Załaduj do akumulatora A zawartość komórki pamięci o adresie zawartym w parze rejestrów DE

Załaduj do akumulatora A zawartość komórki pamięci o adresie nn

Załaduj zawartość akumulatora do komórki pamięci o adresie zawartym w parze rejestrów BC

Załaduj zawartość akumulatora do komórki pamięci o adresie zawartym w parze rejestrów DE

Załaduj zawartość akumulatora A do komórki pamięci o adresie nn

Przepisz zawartość rejestru adresu tablicy przerwań do rejestru A

Przepisz zawartość rejestru odświeżania do rejestru A

Zapisz zawartość akumulatora do rejestru adresu tablicy przerwań

Zapisz zawartość akumulatora do rejestru odświeżania

Instrukcje przesyłania danych (16-to bitowych)

Zapisz do pary rejestrów dd daną 16-to bitową nn

Zapisz do rejestru indeksowego IX liczbę 16-to bitową nn

Zapisz do rejestru indeksowego IY liczbę 16-to bitową nn

Załadowanie zawartość dwóch kolejnych komórek pamięci spod adresu nn do pary rejestrów HL

Załadowanie do pary rejestrów dd zawartości komórek pamięci spod adresu nn

Załadowanie do IX zawartości komórek pamięci spod adresu nn

Załadowanie do IY zawartości komórek pamięci spod adresu nn

Załaduj do komórek pod adresem nn zawartość rejestru HL

Załaduj zawartość pary rejestrów dd do komórek pamięci od adresu nn

Załaduj zawartość rejestru IX do komórek pamięci od adresu nn

Załaduj zawartość rejestru IY do komórek pamięci od adresu nn

Zapisz zawartość rejestru HL do rejestru SP

Przepisz zawartość rejestru IX do rejestru SP

Przepisz zawartość rejestru IY do rejestru SP

Złóż na stosie parę rejestrów qq

Złóż na stosie rejestr IX

Złóż na stosie rejestr IY

Ściągnij ze stosu dane do pary rejestrów qq

Ściągnij ze stosu daną do rejestru IX

Ściągnij ze stosu daną do rejestru IY

Wymień zawartość pary rejestrów DE z HL

Wymień zawartość pary rejestrów AF z A’F’

Wymień zawartość pary rejestrów BC z B’C’, DE z D’E’, HL z H,L,

Wymień zawartość komórek pamięci o adresie wskazywanym przez wskaźnik stosu z zawartością HL

Wymień zawartość komórek pamięci o adresie wskazywanym prze wskaźnik stosu z zawartością IX

Wymień zawartość komórek pamięci o adresie wskazywanym prze wskaźnik stosu z zawartością IY

Instrukcje arytmetyczne 8-mio bitowe

Dodaj do zawartości A zawartość innego rejestru, wynik umieść w A

Dodaj do zawartości A liczbę 8-mio bitową, wynik umieść w A

Dodaj do zawartości A zawartość komórki pamięci o adresie zawartym w HL, wynik umieść w A

Dodaj do zawartości A zawartość komórki pamięci o adresie zawartym w IX z offsetem d, wynik umieść w A

Dodaj do zawartości A zawartość komórki pamięci o adresie zawartym w IY z offsetem d, wynik umieść w A

Dodaj do zawartości A zawartość: rejestru, liczbę n, zawartość komórki pamięci adresowanej przez HL, IX, IY oraz znacznika C, wynik w A

Odejmij od zawartości A zawartość: rejestru, liczbę n, zawartośćkomórki pamięci adresowanej przez HL, IX, IY, wynik w A

Odejmij od zawartości A zawartość: rejestru, liczbę n, zawartośćkomórki pamięci adresowanej przez HL, IX, IY oraz znacznika C, wynik

w A

Wymnóż logicznie zawartość A z zawartością: rejestru, liczbą n, zawartością komórki pamięci adresowanej przez HL, IX, IY, wynik w A

Dodaj logicznie zawartość A z zawartością: rejestru, liczbą n, zawartością komórki pamięci adresowanej przez HL, IX, IY, wynik w A

Wykonaj operację XOR zawartości A z zawartością: rejestru, liczbą n, zawartością komórki pamięci adresowanej przez HL, IX, IY, wynik w A

Porównaj zawartość A z zawartością: rejestru, liczbą n, zawartością komórki pamięci adresowanej przez HL, IX, IY, wyniku nie zapisuj

Zwiększ o 1 zawartość rejestru r

Zwiększ o 1 zawartość komórki pamięci o adresie zawartym w parzerejestrów HL

Zwiększ o 1 zawartość komórki pamięci o adresie zawartym IX z offsetem d

Zwiększ o 1 zawartość komórki pamięci o adresie zawartym IY z offsetem d

Zmniejsz o 1 zwartość rejestru r, komórki pamięci o adresie zawartym w HL, o adresie zwartym w IX lub IY z offsetem d

Rozkazy arytmetyczne ogólnego przeznaczenia oraz sterujące CPU

Korekcja dziesiętna po dodawaniu i odejmowaniu

Przykłady korekcji dziesiętnej

Zanegowanie zawartości akumulatora

Negacja zawartości akumulatora

Negacja bitu przeniesienia

Ustawienie bitu przeniesienia

Operacja pusta (No operating) nic nie rób

Rozkaz zatrzymania (oczekiwania na przerwanie)

Zamaskowanie przerwań maskowalnych

Odmaskowanie przerwań maskowalnych

Aktywacja modu 0 przyjęcia przerwań maskowalnych

Aktywacja modu 1 przyjęcia przerwań maskowalnych

Aktywacja modu 2 przyjęcia przerwań maskowalnych

Rozkazy arytmetyczne 16-to bitowe

Do zawartośći HL dodaj zawartości pary rejestrów ss, wynik w HL

Do zawartośći HL dodaj zawartości pary rejestrów ss oraz biu C, wynik w HL

Przesłania blokowe

Zawartość akumulatora jest porównywana z zawartością komórki o adresie zawartym w HL, w przypadku pozytywnego porównania odpowiedni bit warunkowy jest ustawiany.

Porównanie zawartości akumulatora i komórki pamięci zawartej w HL. Adres HL jest dekrementowany. Licznik pętli jest dekrementowany. Gdy A=(HL) lub BC=0000 instrukcja jest przerwana.

Rozkazy arytmetyczne 8-mio bitowe