1 / 41

Architektura systemów komputerowych jesień 2013

Architektura systemów komputerowych jesień 2013. Wykład 6 Mikroprocesor Z80. dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki http://wbieniec.kis.p.lodz.pl/pwsz. Materiały źródłowe. http://z80-heaven.wikidot.com/ control-structures.

tynice
Download Presentation

Architektura systemów komputerowych jesień 2013

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Architektura systemów komputerowychjesień 2013 Wykład 6 Mikroprocesor Z80 dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki http://wbieniec.kis.p.lodz.pl/pwsz

  2. Materiały źródłowe http://z80-heaven.wikidot.com/control-structures http://we.pb.edu.pl/~kaie/kaie-md/Lab/TM2EDsem4instr.pdf http://z80-heaven.wikidot.com/control-structures http://edu.i-lo.tarnow.pl/inf/retro/004_z80_inst/0007.php Marcin Peczarski Instytut Informatyki, Uniwersytet Warszawski, Materiały do wykładu: Mikroprocesor

  3. Geneza mikroprocesora 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 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

  6. Kod maszynowy a Asembler 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

  8. Dlaczego Z80? 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 •  Komputery domowe • ZX 80/81 • ZX Spectrum • Amstrad CPC • Spectravideo • Commodore 128 regulatory przemysłowe sprzęt pomiarowy

  10. Cechy procesora 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 sygnały logiczne TTL

  11. Opis wyprowadzeń procesora

  12. Opis wyprowadzeń procesora 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. DirectMemory 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 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 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 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. 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.

  16. Rejestry procesora Każdy z rejestrów A, B, C, D, H, L jest 8-bitowy. Rejestry można łączyć w pary 16-bitowe: AB, CD, HL (H - starszy, L - młodszy bajt) 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.

  17. Rejestry procesora 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

  19. Rejestry sterujące 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

  21. Przesyłanie danej 8-bitowej LD d, s LD d, n Adresowanie rejestrowe bezpośrednie (pośrednie) Adresowanie natychmiastowe

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

  23. Używanie rejestrów indeksowych LD r, (HL) LD r, (i + d) i rejestr indeksowy 0 IX 1 IY

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

  25. Rejestry zapasowe i flagi EXX EX AF, AF’ 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 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 Ł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 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 gdzie p ∈ {BC, DE, SP, IX} ADD IY, p gdzie p ∈ {BC, DE, SP, IY}

  29. Operacje stosowe 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 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 JP aa wykonuje skok pod podany adres (wpisuje aa do PC) odkłada na stos adres następnego rozkazu (adres powrotu) i wykonuje skok pod podany adres CALL aa zdejmuje ze stosu adres powrotu i wykonuje skok pod ten adres RET

  32. Skoki warunkowe JP w, aa CALL w, aa RET w

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

  34. Przykłady programów

  35. Pętle 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 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 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 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 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  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 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.

More Related