Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Architektura systemów komputerowych jesień 2013 Wykład 6 Mikroprocesor Z80 dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki

Podobne prezentacje


Prezentacja na temat: "Architektura systemów komputerowych jesień 2013 Wykład 6 Mikroprocesor Z80 dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki"— Zapis prezentacji:

1 Architektura systemów komputerowych jesień 2013 Wykład 6 Mikroprocesor Z80 dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki

2 Materiały źródłowe Marcin Peczarski Instytut Informatyki, Uniwersytet Warszawski, Materiały do wykładu: Mikroprocesor

3 Geneza mikroprocesora 3 Zbyt czasochłonne projektowanie od podstaw z bramek logicznych nowego modelu np. kalkulatora lub sterownika windy Podczas projektowania łatwo popełnić trudny do usunięcia błąd Układ uniwersalny – mikroprocesor Nowa funkcjonalność przez wymianę programu

4 Geneza mikroprogramowania 4 Zbyt czasochłonne projektowanie od podstaw z bramek logicznych nowej jednostki sterującej (mikro)procesora Podczas projektowania łatwo popełnić trudny do usunięcia błąd Uniwersalna jednostka sterująca Nowa funkcjonalność przez wymianę mikroprogramu

5 Mikroprogramowanie 5

6 Kod maszynowy a Asembler 6 Kod maszynowy – binarny sposób opisu rozkazów procesora Każda architektura ma swój unikalny kod maszynowy W obrębie tej samej architektury kod maszynowy może być nieco różny dla poszczególnych modeli procesorów Asembler – język programowania niskiego poziomu Jedno polecenie odpowiada zwykle jednemu rozkazowi maszynowemu Każda architektura ma swój unikalny Asembler

7 Architektura mikroprocesora 7

8 Dlaczego Z80? 8 Jeden z najpopularniejszych mikroprocesorów 8-bitowych Nadal produkowany i używany Bezpośredni wpływ na najpopularniejszą obecnie architekturę x86 Kompromisy projektowe, kompatybilność z 8080 Wystarczająco prosty

9 Wykorzystanie procesora 9 Komputery domowe -ZX 80/81 -ZX Spectrum -Amstrad CPC -Spectravideo -Commodore 128 regulatory przemysłowe sprzęt pomiarowy

10 Cechy procesora 10 sygnały logiczne TTL 8-bitowa magistrala danych 16-bitowa magistrala adresowa możliwość bezpośredniego adresowania 64 kB pamięci możliwość wykonywania operacji na bitach, słowach 8- i 16- bitowych 158 rozkazów (w tym 78 rozkazów wykonywanych przez 8080) dwie linie przerwań (maskowalna i niemaskowalna) układ automatycznego odświeżania pamięci dynamicznych RAM pojedyncze zasilanie +5V

11 Opis wyprowadzeń procesora 11

12 Opis wyprowadzeń procesora 12 A15-A0 Magistrala Adresowa (wyjście, aktywna w stanie wysokim, trójstanowa). Linie A15-A0 tworzą 16-bitową magistralę adresową. Udostępnia ona adresy do wymiany informacji z pamięcią poprzez magistralę danych(do 64K bajtów) oraz do komunikacji z urządzeniami I/O (ang. Input / Output - wejście / wyjście). BUSACK Bus Acknowledge - Potwierdzenie Zwolnienia Magistral (wyjście, aktywne w stanie Niskim). BUSACK informuje żądające tego urządzenie zewnętrzne, iż magistrale adresowa, danych oraz sygnały sterujące MREQ, IORQ, RD i WR mikroprocesora przeszły w stan wysokiej impedancji (stały się nieaktywne elektrycznie). Urządzenie zewnętrzne może teraz przejąć pełną kontrolę nad magistralami w systemie. BUSREQ Bus Request - Żądanie Zwolnienia Magistral (wejście, aktywne w stanie Niskim). BUSREQ posiada wyższy priorytet niż NMI i jest zawsze rozpoznawane na końcu bieżącego cyklu maszynowego. BUSREQ wymusza stan wysokiej impedancji na magistrali adresowej, magistrali danych oraz dla sygnałów sterujących MREQ, IORQ, RD i WR, w celu przejęcia tych linii przez inne urządzenie w systemie. Wejście BUSREQ zwykle łączy się równolegle z liniami urządzeń i dlatego wymaga zewnętrznego podciągnięcia napięcia przy takich zastosowaniach (np. przez rezystor 4,7k do 5V). Przedłużone okresy BUSREQ spowodowane operacjami DMA (ang. Direct Memory Access - bezpośredni dostęp do pamięci) mogą spowodować problemy z odświeżaniem dynamicznych pamięci RAM przez mikroprocesor.

13 Opis wyprowadzeń procesora 13 D7-D0 Magistrala Danych (wejście/wyjście, aktywna w stanie Wysokim, trójstanowa). Linie D7-D0 tworzą 8-bitową, dwukierunkową magistralę danych, używaną przy wymianie informacji z pamięcią i urządzeniami I/O. HALT Stan Zatrzymania (wyjście, aktywne w stanie Niskim). Sygnał HALT wskazuje, iż mikroprocesor wykonał instrukcję HALT i czeka albo na przerwanie niemaskowane, albo na maskowane (z włączoną maską) zanim powróci do wykonywania programu. Podczas stanu Zatrzymania mikroprocesor wykonuje cyklicznie rozkaz NOP w celu podtrzymania funkcji odświeżania pamięci dynamicznych. INT Żądanie Przerwania (wejście, aktywne w stanie Niskim). Żądanie Przerwania jest generowane przez urządzenia I/O. Mikroprocesor honoruje to żądanie na końcu bieżącej instrukcji, jeśli wewnętrzny przerzutnik flip-flop aktywacji przerwań (IFF), sterowany programowo, jest włączony Linia INT zwykle łączona jest równolegle z liniami urządzeń I/O i wymaga zewnętrznego podciągnięcia napięcia, aby umożliwić tę funkcję. IORQ Żądanie I/O (wyjście, aktywne w stanie Niskim, trójstanowe). Sygnał IORQ oznacza, iż na dolnej połowie magistrali adresowej znajduje się poprawny adres I/O do operacji odczytu lub zapisu I/O. IORQ jest również generowane współbieżnie z M1 podczas cyklu potwierdzenia przyjęcia przerwania w celu poinformowania urządzenia I/O, iż wektor odpowiedzi na przerwanie może zostać umieszczony na magistrali danych.

14 Opis wyprowadzeń procesora 14 M1 Cykl Maszynowy Nr 1 (wyjście, aktywne w stanie niskim). Sygnał M1 wraz z MREQ oznacza, iż bieżący cykl maszynowy jest cyklem pobrania kodu rozkazu dla wykonywanej instrukcji. M1 wraz z IORQ oznacza cykl potwierdzenia przyjęcia przerwania. MREQ Żądanie dostępu do pamięci (wyjście, aktywne w stanie Niskim, trójstanowe). Sygnał MREQ oznacza, iż magistrala adresowa zawiera ważny adres dla operacji odczytu lub zapisu do pamięci. NMI Żądanie Przerwania Niemaskowanego (wejście, wyzwalane ujemnym zboczem: czyli przejściem ze stanu 1 na 0). Sygnał NMI posiada wyższy priorytet od INT. Sygnał NMI jest zawsze przyjmowany na końcu bieżącej instrukcji, bez względu na stan przerzutnika aktywacji przerwań (IFF) i automatycznie wymusza na procesorze restart od adresu 0066H. RD Odczyt (wyjście, aktywne w stanie Niskim, trójstanowe). Sygnał RD oznacza, iż mikroprocesor chce dokonać odczytu lub zapisu z pamięci albo urządzenia I/O. Zaadresowane urządzenie I/O lub pamięć powinni wykorzystywać ten sygnał do umieszczania informacji na magistrali danych mikroprocesora.

15 Opis wyprowadzeń procesora 15 RFSH Odświeżanie (wyjście, aktywne w stanie Niskim). Sygnał RFSH wraz z MREQ oznacza, iż dolne siedem bitów magistrali adresowej systemu może zostać wykorzystane jako adres odświeżania dla pamięci dynamicznych. W górnej połowie magistrali adresowej jest umieszczana zawartość rejestru I. WAIT Oczekiwanie (wejście, aktywne w stanie Niskim). Sygnał WAIT informuje mikroprocesor, iż zaadresowana pamięć lub urządzenie I/O nie są jeszcze gotowe do wymiany informacji. Mikroprocesor powtarza cykle oczekiwania tak długo, aż sygnał ten powróci do stanu wysokiego. Przedłużone okresy oczekiwania mogą spowodować błędy w odświeżaniu przez mikroprocesor pamięci dynamicznych. WR Zapis (wyjście, aktywne w stanie Niskim, trójstanowe). Sygnał WR oznacza, iż magistrala danych mikroprocesora zawiera ważne dane, które mają zostać umieszczone w zaadresowanej pamięci lub w rejestrze I/O. CLK Zegar (wejście). Jednofazowe wejście zegarowe o poziomie MOS. RESET (wejście, aktywne w stanie Niskim). Sygnał RESET inicjuje mikroprocesor w sposób następujący: kasuje przerzutnik aktywacji przerwań, zeruje rejestr PC oraz rejestry I i R, a następnie ustawia status przerwań na tryb 0. W czasie resetowania magistrale adresowa i danych przechodzą w stan wysokiej impedancji, a wszystkie wyjściowe linie sterujące przyjmują stan nieaktywny. Uwaga: sygnał RESET musi być aktywny przez minimum 3 pełne cykle zegara, zanim operacja resetowania zostanie zakończona.

16 Rejestry procesora 16 Każdy z rejestrów A, B, C, D, H, L jest 8-bitowy. Wyróżnionym rejestrem jest rejestr A - tzw. akumulator. W rejestrze tym umieszczony jest zazwyczaj jeden z argumentów operacji, a później wynik jej działania. W operacjach na liczbach 16-bitowych rolę akumulatora pełni para rejestrów HL. W operacjach blokowych rejestr BC jest licznikiem. Rejestry można łączyć w pary 16-bitowe: AB, CD, HL (H - starszy, L - młodszy bajt)

17 Rejestry procesora 17 Procesor Z80 dysponuje alternatywnym bankiem rejestrów A', F',... itd. Dostęp do nich jest ograniczony – możliwy jest tylko poprzez rozkazy wymiany. EX AF, A'F' ; wymiana rejestrów AF z A'F' EXX ; wymiana wszystkich rejestrów

18 Rejestr flag procesora 18 BitZnacznikNazwaOpis 0CCarryprzeniesienie z najstarszego bajtu (np. przy sumowaniu) 1NNegativoznacza, że ostatnio wykonaną operacją było odejmowanie, informacja o tym jest istotna przy korekcji wyników 2P/VParity/Overflow po operacjach logicznych - oznacza parzystą liczbę jedynek w wyniku po operacjach arytmetycznych - przepełnienie w kodzie U2 4HHalf Carryprzeniesienie połówkowe pomiędzy tetradami (z młodszej do starszej) 6ZZeroznacznik jest ustawiony, gdy wynik operacji = 0 7SSignznak liczby w kodzie U2 (kopia najstarszego bitu wyniku)

19 Rejestry sterujące 19 PC - Program Counter, 16-bitowy licznik rozkazów SP - Stack Pointer, 16-bitowy wskaźnik stosu. Przechowuje adres szczytu stosu. Stos rozrasta się "w dół" /adresy/. Programista ma dostęp tylko do szczytu stosu. Do wymiany danych ze stosem służą instrukcje PUSH i POP. IX, IY - rejestry indeksowe używane w rozkazach blokowych, czasem mogą zastępować rejestry HL I - Interrupt, wektor przerwania. Zawartość rejestru I uczestniczy w obliczaniu adresu podprogramu obsługi przerwania R - Refresh, rejestr odświeżania, jego zawartość jest umieszczana w cyklu M1 (w drugiej połowie) na magistrali adresowej (na młodszym bajcie)

20 Cztery podstawowe operacje sprzętowe 20 Operacja/sygnałyMREQ*IOREQ*RD*WR* odczyt danych: MEM --> CPU0101 zapis danych: CPU --> MEM0110 odczyt z portu we/wy: I/O --> CPU1001 zapis do portu we/wy: CPU --> I/O1010

21 Przesyłanie danej 8-bitowej 21 LD d, s 0 1ds d, sargument B C D E H L (HL) A LD d, n 00d110 n dargument B C D E H L (HL) A Adresowanie rejestrowe bezpośrednie (pośrednie) Adresowanie natychmiastowe

22 Przesłanie danej 8-bitowej (adresy) 22 LD (p), A LD A, (p) 000pd010 Adresowanie bezpośrednie (adresy są 16-bitowe) LD (aa), A LD A, (aa) d0 1 0 aal aah p para rejestrów 0 BC 1 DE d kierunek 0z akumulatora do pamięci 1z pamięci do akumulatora

23 Używanie rejestrów indeksowych 23 LD r, (HL) 0 1r1 1 0 rrejestr B C D E H L (HL) A LD r, (i + d) 1 i r r r d irejestr indeksowy 0IX 1IY

24 Używanie rejestrów indeksowych 24 LD (HL), n n LD (i + d), n 1 i d n irejestr indeksowy 0IX 1IY

25 Rejestry zapasowe i flagi 25 EX AF, AF EXX SZ-AC-P/VNCY S – najstarszy bit wyniku operacji, wynik ujemny Z – wynik operacji zerowy AC – pomocnicze przeniesienie z pozycji 3, arytmetyka BCD P/V – znacznik parzystości dla operacji logicznych i nadmiaru (ang. overflow) dla operacji arytmetycznych N – znacznik zerowany przy wykonywaniu dodawania i ustawiany przy wykonywaniu odejmowania, arytmetyka BCD CY – znacznik przeniesienia (pożyczki przy odejmowaniu)

26 Rotacje i przesunięcia bitowe 26 RL x RR x RLC x RRC x SLA x SRL x SRA x x : A, B, C, D, E, H, L, (HL), (IX + d), (IY + d)

27 Operacje na adresach 27 Ładowanie LD r, nn LD r, (aa) LD (aa), r r: BC, DE, HL, SP, IX, IY Zamiana EX DE, HL Inkrementacja i dekrementacja INC r DEC r

28 Operacje na adresach 28 Arytmetyka 16-bitowa ADD HL, r ADC HL, r SBC HL, r r: BC, DE, HL, SP Dodawanie i odejmowanie wartości w rejestrach indeksowych ADD IX, p ADD IY, p gdzie p {BC, DE, SP, IY} gdzie p {BC, DE, SP, IX}

29 Operacje stosowe 29 Stos to blok pamięci. Rejestr SP wskazuje wierzchołek stosu – adres ostatniego zajętego bajtu. Stos rośnie w dół – w kierunku mniejszych adresów. PUSH p Odkłada na stos najpierw starszy, potem młodszy bajt argumentu (architektura little-endian). Zmniejsza SP o 2 p {AF, BC, DE, HL, IX, IY} POP p Zdejmuje ze stosu najpierw młodszy, potem starszy bajt i umieszcza je w argumencie. Zwiększa SP o 2.

30 Operacje stosowe 30 Inicjowanie wskaźnika stosu LD SP, nn LD SP, (aa) LD SP, p gdzie p {HL, IX, IY} Manipulowanie wierzchołkiem stosu INC SP DEC SP EX (SP), p gdzie p {HL, IX, IY}

31 Skoki i podprogramy 31 JP aa wykonuje skok pod podany adres (wpisuje aa do PC) CALL aa odkłada na stos adres następnego rozkazu (adres powrotu) i wykonuje skok pod podany adres RET zdejmuje ze stosu adres powrotu i wykonuje skok pod ten adres aal aah aal aah

32 Skoki warunkowe 32 1 w0 1 0 aal aah JP w, aa CALL w, aa 1 w1 0 0 aal aah RET w 1 w0 0 0 wskrótwarunek skoku 000NZZ = 0 001ZZ = 1 010NCCY = 0 011CCY = 1 100POP/V = 0 101PEP/V = 1 110PS = 0 111MS = 1

33 Skoki względne 33 JR d n 0 0 1v0 0 0 d Skok względny dodaje do PC wartość d traktowaną jako liczba ze znakiem. JR v, d v skrót warunek skoku 00 NZ Z = 0 01 Z Z = 1 10 NC CY = 0 11 C CY = 1

34 Przykłady programów 34

35 Pętle 35 zm:equ 20h ;deklaracja zmiennej org 0h ;adres poczatkowy programu ld sp,38h ;zainicjowanie wskaznika stosu ld b,8 ;B=licznik petli petla:ld a,b add a,b ld c,a push bc ;zapis na stos 2 bajtow djnz petla ;realizacja petli programowej ld hl,zm ld (hl),a ;zapis do zmiennej 'zm' halt.end

36 Pętle i tablice 36 tab:equ 20h ;deklaracja zmiennej org 0h ;adres poczatkowy programu ld sp,28h ;zainicjowanie wskaznika stosu ld hl,1 ld de,2 add hl,de ;dodawanie 2-bajtowe push hl ;zapis na stos slowa 16-bitowego ex de,hl ;zamiana zawartosci HL i DE add hl,de ;dodawanie 2-bajtowe push hl ;zapis na stos slowa 16-bitowego ld b,2 ;B=licznik petli petla:pop de ;odczyt ze stosu 2 bajtow djnz petla;realizacja petli programowej halt.end

37 Tablice w assemblerze 37 wygodnym narzędziem do deklarowania adresu początkowego zmiennej programowej, prostej lub złożonej (tablicy), jest dyrektywa asemblera EQU znak: equ 110h ;zadeklarowanie 1-bajtowej zmiennej "znak" znaki: equ 111h ;zadeklarowanie 15-bajtowej tablicy "znaki" ;o adresie początkowym 111h liczba: equ 120h ;zadeklarowanie zmiennej 2-bajtowej liczba znak: equ 110h znaki: equ znak+1 liczba: equ znaki+15

38 Dostęp sekwencyjny do tablicy 38 Należy do wybranego rejestru 16-bitowego załadować adres początkowy interesującej na tablicy, a następnie odpowiednio czytać lub zapisywać jej kolejne komórki, zwiększając po każdej operacji wartość tego rejestru rozkazem INC. ld b,15 ;dlugosc tablicy znakow ld hl,znaki ;zainicjowanie rejestru adresujacego czysc: ld (hl)," " ;wpisanie spacji inc hl ;modyfikacja adresu djnz czysc ;realizacja petli programowej dostęp sekwencyjny do tablicy od końca ld b,liczba-znaki ;dlugosc tablicy znakow wyliczona aut. ld ix,liczba-1 ;zainicjowanie rejestru adresujacego ;na adres ostatniej komorki tabl. "znaki" litA: ld (ix),"A" ;wpisanie litery A dec ix ;modyfikacja adresu djnz litA ;realizacja petli programowej

39 Dostęp swobodny do tablicy 39 ld bc,0 ;rejestr indeksujacy od 0 do 14 czysc: ld hl,znaki ;kazdorazowa inicj. adresu pocz.tablicy add hl,bc ;dodanie indeksu, HL-> wybrany element ld (hl)," " ;wpisanie spacji inc bc ;modyfikacja indeksu ld c,a ;sprawdzenie warunku konca cp 15 ;czy indeks < 15 jr c,czysc ;skok jesli tak

40 Operacje blokowe 40 Przemieść w pamięci łańcuch danych o długości 737 bajtów spod adresu DATA do BUFFER LD HL, DATA ; adres start. łańcucha danych LD DE, BUFFER ; adres start. miejsca docelowego LD BC, 737 ; długość łańcucha LDIR ; prześlij łańcuch Polecenie LDIR przemieści obszar pamięci wskazywany przez HL do obszaru pamięci wskazywanego przez DE. Sekwencyjnie zwiększa HL i DE, zmniejsza BC, kontynuuj e, aż BC = 0.

41 Operacje blokowe 41 Zadanie: skopiuj łańcuch tekstowy (o długości ograniczonej do 132 znaków) z adresu DATA pod adres BUFFER. Kopiowanie trwa do momentu napotkania znaku '$' lub przesłania wszystkich 132 znaków. LD HL, DATA ; adres początku łańcucha LD DE, BUFFER ; adres docelowego bufora LD BC, 132 ; maksymalna długość łańcucha LD A, '$' ; kod zakończenia łańcucha LOOP: CP (HL) ; porównaj znak z '$' JR Z, END ; idź na koniec, jeśli znak się zgadza LDI ; przenieś znak spod (HL) do (DE) ; zwiększ HL i DE, zmniejsz BC JP PE, LOOP ; wróć do LOOP, jeśli pozostało więcej znaków END: HALT ; inaczej przejdź do zakończenia..END ; Uwaga: znacznik P/V jest używany ; do informowania, że BC osiągnął zero.


Pobierz ppt "Architektura systemów komputerowych jesień 2013 Wykład 6 Mikroprocesor Z80 dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki"

Podobne prezentacje


Reklamy Google