Układy Mikroprocesorowe


1. Przerwania Z-80

0x08 graphic
Układ Z80 CTC jako kontroler przerwań.

0x08 graphic
Układy CTC (Counter Timer Circuit) to po polsku układy czasowo-licznikowe. Tak naprawdę to poza opisem nożek nie wiem za bardzo, co o nim pisać. Koń jaki jest każdy widzi. Można toto włączyć do systemu z Z80 i będzie generowało to przerwania w cyklu czasowym, jaki sobie wymarzymy. Niemniej jednak sposób programowania tego badziewia jest mi - przepraszam - obcy. Nie znalazłem materiałów o nim, a książka o Z80 opisuje CPU, DMA, PIO i SIO, ale nie CTC. Jeżeli ktoś mi jest w stanie udostępnić materiały, to w ciągu 7200 sekund generuję upgrade i rozsyłam zainteresowanym.

Z innej beczki, czyli działka, która jest mi troszkę bliższa. Jeżeli ktoś bardzo jest ciekaw, to istnieje jeszcze układ 6532. Jest to układ z rodziny 65XX, czyli 6502 i banda (Niech żyje Atari XL/XE!!! Precz z C64!! Czy ktoś to jeszcze pamięta??). 6532 jest to układ CTC dla 6502. Oprócz funkcji typowych dla CTC posiada jeszcze 16 kanałów i 2 porty I/O oraz 128×8 bit RAM.

2. Tryby pracy 8255

8255

0x08 graphic
Układ 8255 jest to programowalny element wejścia-wyjścia równoległego. Z powodu jego programowalności zakres wykorzystania tego elementu jest niezwykle szeroki. Układ posiada trzy porty A,B i C które mogą pracować zarówno jako wejścia i wyjścia, przy czym port C został podzielony na dwie części (kęsy - jak piszą w książce Jarka). Bardziej znaczący kęs portu C został przyporządkowany do portu A, natomiast mniej znaczący kęs do portu B, co umożliwia przesyłanie np. sygnałów sterujących do urządzeń zewnętrznych lub ich odbieranie.

Opis końcówek układu:

D0 - D7 - końcówki trójstanowej dwukierunkowej magistrali danych

RESET - wejście zerujące rejestry

CS - wejście wyboru

RD - końcówka czytania z elementu

WR - końcówka pisania do elementu

A0, A1 - wybór portu lub rejestru sterującego

PA0 - PA7 - wejście/wyjście portu A

PB0 - PB7 - wejście/wyjście portu B

PC0 - PC7 - wejście/wyjście portu C

Vcc (26) - napięcie zasilające +5V

GND (7) - masa

Programowanie układu 8255 odbywa się za pomocą 8-bitowego rejestru sterującego, aby do rejestru można było zapisać słowo sterujące, należy na wejściach adresowych układu podać adres 11. Pod adresem 00 znajduje się port A, 01 port B a pod adresem 10 port C. Znaczenie bitów w słowie sterującym jest następujące:

D7 - musi być zawsze równy 1

D6,D5 - wybór trybu pracy portu A: 00 - tryb 0, 01 - tryb1, 10 - tryb 2

D4 - rodzaj końcówek portu A: 0 - wyjście, 1 - wejście

D3 - rodzaj końcówek bramy C, kęs bardziej znaczący: 0 - wyjście, 1 - wejście

D2 - wybór trybu pracy portu B: 0 - tryb 0, 1 - tryb 1

D1 - rodzaj końcówek portu B: 0 - wyjście, 1 - wejście

D0 - rodzaj końcówek portu C, kęs mniej znaczący: 0 - wyjście, 1 - wejście

Port A układy 8255 może pracować w trzech trybach, natomiast port B w dwóch trybach, a oto one, ladys and gentlemans:

Tryb 0: Jest on przeznaczony do realizacji bezwarunkowych operacji wejścia-wyjścia. Dostępne w nim są dwie 8-bitowe i dwie 4-bitowe bramy pracujące jako wejścia lub jako wyjścia. Wyjścia z rejestrami zatrzaskowymi wejścia bez.

0x08 graphic
Tryb 1: Przeznaczony do realizacji operacji wejścia-wyjścia z przerwaniem przy jednym kierunku przesyłania danych. Potrzebne do tego celu sygnały żądania przerwania, statusu i strobu są wyprowadzane i wprowadzane przez port C. Dostępne są dwie grupy linii po 8 bitów do przesyłania danych i 3 bity do przekazywania sygnałów sterujących.

Każdą z tych grup można zaprogramować jako wejście lub wyjście, przy czym zarówno wejścia, jak i wyjścia posiadają rejestry zatrzaskowe. Istnieje ponadto możliwość zaprogramowania jako wejścia lub wyjścia tych linii portu C, które nie służą do przekazywania sygnałów sterujących. Na rysunku przedstawione są sygnały przekazywane przez port C, gdy porty A i B pracują jako wyjścia lub jako wejścia. Sygnał INTR oznacza żądanie przerwania przez dany port. Sygnał IBF oznacza zapełnienie bufora wejściowego danego portu. OBF zapełnienie bufora wyjściowego danego portu. Sygnał STB = 0 przepisuje dane do wejściowego rejestru zatrzaskowego. Sygnał ACK = 0 oznacza przyjęcie przez element zewnętrzny danych z danego portu.

0x08 graphic
Tryb 2: Jest on przeznaczony od operacji wejścia-wyjścia z przerwaniem poprzez port A (tylko i wyłącznie port A, nie będzie to żaden inny port a tylko port A, nie będzie to port B, jak i nie będzie to port C, ale port A ...), przy dwóch kierunkach przesyłania danych. Udostępnia on wymianę danych z elementem zewnętrznym za pomocą jednego 8-bitowego portu, natomiast sygnały sterujące są wyprowadzane przez port C. Sygnał INTR oznacza żądanie przerwania przez port. STB powoduje wpisanie do rejestru wejściowego danych, natomiast sygnał ACK oznacza przejęcie przez element zewnętrzny danych z portu. Sygnały IBF i OBF oznaczają odpowiednio zapełnienie bufora wejściowego i wyjściowego.

Ze względu na programowalność układ 8255 ma bardzo szerokie zastosowanie, przede wszystkim jako element I/O w dużych systemach mikroprocesorowych.

3. Tryby pracy PIO

Układ Z80 PIO - budowa, działanie i zastosowania.

O ile temat nr 16 został porzucony, to problem nr 31 omówiły dwie osoby:

    1. PIO by kol. Grzegorz

Z80 PIO jest programowalnym układem we-wy, w którego skład wchodzą dwa równoległe 8-bitowe porty PA i PB. Układ może pracować w czterech trybach pracy i ma możliwość dołączenia do łańcucha przerwań procesora Z80. Port PB ma zwiększoną obciążalność linii, a sygnały wszystkich linii odpowiadają poziomom TTL. Z80 PIO może generować przerwania na skutek ściśle określonych stanów na wejściach portów PA i PB.

Układ logiczny każdego portu składa się z sześciu rejestrów:

Do 2-bitowego rejestru trybu pracy wpisywana jest informacja w celu ustalenia trybu pracy portu (wejściowy, wyjściowy, dwukierunkowy i bitowy). Wymiana danych między UZ a CPU odbywa się przy pomocy rejestrów danych. Dane mogą być odczytane przez mikroprocesor w dowolnym momencie. Sterowaniem transmisją danych pomiędzy UZ a PIO zajmują się specjalne linie sterujące przyporządkowane do każdego z portów STB i RDY. Rejestry maski i wyboru we-wy używane są tylko w trybie bitowym. W tym trybie każda z linii portu PA może być zaprogramowana jako wyjściowa lub wejściowa. Rejestr maski służy do określenia, które z linii portu mogą generować przerwania. Rejestr kontroli maskowania określa jaki stan (niski lub wysoki) ma spowodować wygenerowanie przerwania oraz czy ma ono nastąpić w wyniku zmian na jednej czy na wszystkich niezamaskowanych liniach.

Opis wyprowadzeń układu:

D0 - D7 - trójstanowa dwukierunkowa magistrala danych

B/A SE - wejście wyboru portu

0x08 graphic
C/D SE - wejście wyboru czy na we. danych znajduje się kod ster. czy dana

CE - wejście wyboru układu

CLK - wejście zegara

M1 - wejście sygnału pierwszego cyklu zegarowego CPU

IORQ - wejście sygnału zapisu/odczytu z układu I/O

RD - wejście sygnału czytania z pamięci lub układu I/O

IEI - wejście zezwolenia na generację przerwania

IEO - wyjście zezwolenia na generację przerwania

INT - wyjście sygnału zgłoszenia przerwania

A0 - A7 - linie portu PA

ASTB - wejście sygnału strobu dla portu PA

ARDY - wyjście sygnału gotowości portu PA

B0 - B7 - linie portu PB

BSTB - tak jak wyżej

BRDY - tak jak wyżej

Układ Z80 PIO jest zerowany automatycznie po włączeniu zasilania. Ze względu na ograniczoną liczbę wyprowadzeń układu Z80 PIO nie ma standardowego wejścia RESET. Zerowanie układu PIO można uzyskać w wyniku pojawienia się sygnału niskiego na wejściu M1 przy jednoczesnym pozostawieniu wejść RD i IORQ w stanie wysokim. Układ PIO został zaprojektowany do współpracy z Z80 CPU w 2 trybie przerwań. Wektor przerwania wysyłany jest na magistralę danych systemu przez układ PIO po przyjęciu przerwania przez CPU pod warunkiem, że sygnał IEI układu znajduje się w stanie wysokim. Zerowanie układu PIO nie zmienia rejestrów wektorów przerwań. Port PA układu Z80 PIO może pracować w jednym z czterech trybów pracy wyjściowym, wejściowym dwukierunkowym i bitowym. Port PB nie może pracować w trybie dwukierunkowym. Słowo ustawiające tryb pracy na czterech najmłodszych bitach powinno posiadać `1'. Bity piąty i szósty są ignorowane. Na bitach najstarszych wybierany jest tryb pracy.

D7 D6 - 00 - tryb 0 wyjście

01 - tryb 1 wejście

10 - tryb 2 dwukierunkowy

11 - tryb 3 bitowy

Tryb 0, wyjście z potwierdzeniem. Wybór trybu 0 powoduje, że dane wpisane do rejestru wyjściowego pojawiają się na magistrali portu. Wpisanie danych do rejestru powoduje ustawienie wyjścia RDY w stan wysoki. Sygnał RDY pozostaje w tym stanie, aż na wejściu STB pojawi się stan niski. Narastające zbocze sygnału STB powoduje wysłanie sygnału zgłoszenia przerwania (jeśli system przerwań Z80 PIO jest odblokowany) i zmianę sygnału RDY na niski.

Tryb 1, wejście z potwierdzeniem. Wczytanie danych z rejestru wejściowego portu powoduje zmianę stanu wyjścia RDY na wysoki. Urządzenie peryferyjne może wtedy wpisać sygnałem STB dane do rejestru wejściowego portu.

Tryb 2, transmisja dwukierunkowa. Umożliwia zarówno wczytanie jak i wysłanie danych z potwierdzeniem. W trybie tym może pracować tylko port PA, który wykorzystuje linie ASTB, ARDY w operacjach wyjścia, a linie BSTB i BRDY w operacjach wejścia.

Tryb 3, tryb bitowy. Jeżeli został wybrany tryb bitowy pracy portu, to następne słowo sterujące wysłane do porty określa, które z bitów porty mają być wejściami, a które wyjściami. Ustalenie danej linii jako wyjściowej wymaga wpisania jedynki, a wejściowej zera na odpowiednim bicie słowa. Linie STB i RDY nie są wykorzystywane w tym trybie pracy.

Ustalenie sposobu generacji przerwań dokonuje się wpisując do portu słowa sterującego zawierającego na najmłodszych bitach `0111'. Bit D4 określa czy będzie przesłana maska przerwań (`1'). D5 określa jaki stan linii ma spowodować wygenerowanie przerwania (1 - stan wysoki, 0 - stan niski). Jeżeli D6 jest `1' to przerwanie jest generowane tylko w przypadku gdy wszystkie niezamaskowane linie osiągną stan dany bitem D5. `0' oznacza wygenerowanie przerwania jeśli którakolwiek z linii osiągnie dany stan. Bity D6, D5 i D4 wykorzystywane są głownie w 3 trybie pracy. Bit D7 blokuje przerwania wystawiane przez PIO (D7 = 0 - blokada przerwań). Jeśli bit D4 został ustawiony na `1' to kolejne słowo sterujące powinno zawierać maskę przerwań. Linie które powinny generować przerwania muszą mieć ustawione w rejestrze maski 0.

PIO by kol. Marcin - uzupełnienie

Schemat blokowy układu Z80-PIO

0x01 graphic

4. Układ CTC jako generator przerwań (jak to działa)

Układ Z80 CTC - budowa, działanie i zastosowanie.

W skład modułu Z80-CTC wchodzą 4 niezależne liczniki programowalne wraz z układami sterującymi. Każdy z liczników, w zależności od wstępnego zaprogramowania, może pracować jako licznik odejmujący, liczący impulsy wprowadzane z zewnątrz (np. zegar zewnętrzny, zliczanie zdarzeń) lub układ czasowy, będący licznikiem odejmującym liczącym impulsy zegara systemowego, dzięki czemu istnieje możliwość dokładnego odmierzenia odcinków czasu. Moduł ma następujące właściwości:

Schemat blokowy układu Z80-CTC

0x01 graphic

Sygnały sterujące: CS1, CS0, M1, IORQ, RD, RS

SC0, SC1 - dekodowanie numeru układu licznikowego

CLK/TRG - wejście typu zegara zewnętrznego lub układu bramkującego dla trybu pracy jako układu czasowego

ZC/TO - przyjmuje wartość 1 gdy licznik osiągnie stan zerowy

Schemat blokowy podukładu zliczającego

0x01 graphic

Słowo sterujące ładowane z jednostki centralnej do rej. sterującego definiuje tryb i warunki pracy układu. Stan początkowy licznika lub stała czasowa są ładowane do rej. stałej. Licznik odejmujący jest ładowany do rej stałej pod kontrolą programu lub każdorazowo po osiągnięciu stanu zerowego. Zawartość licznika jest zmniejszana pod wpływem impulsu z wyjścia dzielnika dla trybu pracy jako ukł. czasowy lub z wejścia CLK/TRG dla trybu pracy jako licznik.

Postacie słów sterujących:

a) Ładowanie wektora przerwań:

V7

V6

V5

V4

V3

x

x

0

V7..V3 wspólna część wektora dla wszystkich kanałów

b) Wybór trybu pracy

D7

D6

D5

D4

D3

D2

D1

1

D7: 0 - blokada przerwań, 1 - przerwania dozwolone.

D6: 0 - tryb pracy jako ukł. czasowy, 1 - tryb pracy jako licznik

D5: 0 - dzielenie częstotliwości przez 16 (dot. tylko ukł. czasowego),

1 - dzielenie częstotliwości przez 256 (dot. tylko ukł. czasowego)

D4: 0 - opadające zbocze na wejściu CLK/TRG inicjuje pracę dla trybu pracy jako ukł. czasowy lub zmniejsza zawartość licznika dla trybu pracy jako licznik, 1 - j.w., lecz zbocze narastające

D3: (tylko dla trybu pracy jako układ czasowy) = 0 - jeśli D2 = 0, układ w trybie pracy jako ukł. czasowy rozpoczyna operację od następnego cyklu maszynowego; jeśli D2 = 1 układ w trybie pracy jako układ czasowy rozpoczyna operację od pierwszego cyklu maszynowego po załadowaniu stałej.

= 1 - jeśli D2=0, układ w trybie pracy jako układ czasowy rozpoczyna operację od tego cyklu maszynowego, w którym na wejściu CLK/TRG odbyła się właściwa zmiana sygnału; jeśli D2 = 1, j.w., lecz po załadowaniu stałej.

D2: 0 - nie będzie następnego słowa sterującego określającego wartość stałej

1 - następnym słowem sterującym będzie wartość stałej. Jeżeli odbędzie się to podczas zliczania, to aktualne zliczanie będzie anulowane

D1: 0 - liczenie ciągłe, 1 - zatrzymanie liczenia do czasu załadowania nowej stałej. ZC/TO = 0.

D0: 1 - oznacza, że słowo sterujące dotyczy zdefiniowania trybu pracy.

Słowa sterujące ładuje się do rej. sterującego właściwego układu licznikowego.

Komunikacja mikroprocesorów z otoczeniem - przesył za pomocą przerwań, przykłady.

Metoda ta umożliwia przerwanie programu głównego i przejście do podprogramu obsługi układu wejścia/wyjścia praktycznie natychmiast po wygenerowaniu sygnału żądania obsługi (czyli sygnału żądania przerwania programu głównego) IREQ lub INT przez urządzenie zewnętrzne. W większości rozwiązań sygnał żądania przerwania jest traktowany przez mikroprocesor jako jeden z wejściowych sygnałów sterujących. Mikroprocesor sprawdza sygnał żądania przerwania pod koniec każdego cyklu rozkazowego wykonywanego programu. Po wykryciu przerwania zawartość licznika rozkazów, rejestru znaczników, akumulatora, ewentualnie innych rejestrów jest przesyłana na czas obsługi przerwania do pamięci (na stos) po to, aby po obsłudze przerwania można było odtworzyć stan mikroprocesora z przed przerwania i bez zakłóceń kontynuować program główny. W większości mikroprocesorów przyjęcie sygnału żądania przerwania jest potwierdzane sygnałem IACK. Przy obsłudze urządzeń zewnętrznych za pomocą przerwań należy zapewnić:

Zadania te rozwiązuje się programowo lub sprzętowo lub techniką mieszaną. Należy zdać sobie sprawę z tego, że rozwiązania sprzętowe są szybsze, ale też kosztowniejsze od rozwiązań programowych. Stan mikroprocesora określany najczęściej przez stan licznika rozkazów, rejestrów znaczników, akumulator i ewentualnie przez zawartość innych rejestrów roboczych jest zapamiętywany z reguły na stosie. Zazwyczaj programowo ustawia się tylko początkową zawartość wskaźnika stosu, a pozostałe zmiany wynikające z operacji zapisu danych do stosu lub odczytu danych ze stosu odbywają się automatycznie (sprzętowo).

Identyfikacja źródła przerwania może być rozwiązana programowo lub sprzętowo. W rozwiązaniu programowym sygnały żądania przerwania z urządzeń zewnętrznych są równoległe wprowadzenie do rejestru przerwań. Mikroprocesor po przyjęciu sygnału żądania przerwania powoduje przejście do podprogramu umieszczonego w określonym stałym obszarze pamięci. Początkowe rozkazy tego podprogramu zapewniają przesłanie do stosu stanu procesora niezbędnego do kontynuowania programu głównego. Kolejne rozkazy umożliwiają sprawdzenie zawartości rejestru przerwań i określenie na jego podstawie źródła przerwania. Po zidentyfikowaniu przyczyny przerwania następuje przejście do odpowiedniego podprogramu obsługi tego przerwania.

Zadanie ustalenia kolejności obsługi urządzeń zewnętrznych generujących sygnały żądania przerwania rozwiązuje się przez nadanie tym urządzeniom odpowiednich priorytetów. Można to realizować zarówno programowo jak i sprzętowo. W rozwiązaniu programowym mikroprocesor po sprawdzeniu rejestru przerwań przekazuje sterowanie do podprogramu odpowiadającego źródłu przerwania o najwyższym priorytecie.

Przy sprzętowej realizacji systemu przerwań każde urządzenie zewnętrzne ma odpowiadający mu podprogram obsługi umieszczony w określonym obszarze pamięci. Adres komórki pamięci zawierającej pierwszy rozkaz podprogramu obsługi przerwania tworzony jest na podstawie wektora adresu przerwania. Identyfikacja źródła przerwania odbywa się w ten sposób, że mikroprocesor po przyjęciu sygnału żądania przerwania generuje sygnał potwierdzenia przerwania IACK. W odpowiedzi na ten sygnał źródło przerwania wysyła na magistralę danych odpowiadający mu wektor adresu przerwania. Pobrany przez mikroprocesor (lub wyznaczony) wektor adresu przerwania jednoznacznie identyfikuje źródło przerwania i umożliwia przejście do odpowiadającego mu podprogramu obsługi. Ustalenie priorytetu przerwań jest w tym przypadku również rozwiązanie sprzętowo przez zastosowanie tzw. układu ustalania priorytetu przerwań. Układ ten może być zbudowany przy użyciu kodera priorytetowego lub tzw. łańcucha przerwań (ang. Daisy chain).

W przypadku łańcucha przerwań najwyższy priorytet ma urządzenie umieszczone najbliżej mikroprocesora. Wygenerowany przez mikroprocesor sygnał potwierdzenia przerwania dochodzi do pierwszego w łańcuchu przerwań urządzenia generującego sygnał żądania przerwania. Urządzenie to w odpowiedzi wysyła na magistralę danych odpowiadający mu wektor adresu przerwania, który umożliwia przekazanie sterowania do właściwego podprogramu.

Układ przerwań może być zorganizowany jako jedno- lub wielopoziomowy. W jednopoziomowej strukturze przerwań nie ma możliwości zawieszenia realizowanego podprogramu przez sygnał żądania przerwania pochodzący od urządzenia o wyższym priorytecie. Dopiero po zakończeniu zadania wynikającego z aktualnie obsługiwanego przerwania następuje przyjęcie kolejnego przerwania o najwyższym priorytecie spośród wszystkich zgłoszeń. Odbywa się to w ten sposób, że po przyjęciu i potwierdzeniu tego faktu odpowiednim sygnałem następuje zablokowanie wejścia przerwania na czas obsługi. Mikroprocesor ignoruje ewentualne kolejne zgłoszenie do chwili ponownego odblokowania wejścia przerwania. Podprogram obsługi kończy się rozkazami umożliwiającymi powrót do przerwanego programu i odblokowanie wejścia przerwań. W wielopoziomowej strukturze przerwań urządzenie zewnętrzne o wyższym priorytecie ma możliwość przerwania realizowanego podprogramu obsługi urządzenia zewnętrznego o niższym priorytecie. Programowa realizacja tego zadania polega na tym, że mikroprocesor (przy odblokowanym wejściu przerwań), po pojawieniu się sygnału przerwania, przekazuje sterowanie do podprogramu umożliwiającego przechowanie stanu procesora i identyfikację źródła przerwania przez zbadanie zawartości rejestru stanu. Następnie następuje programowe porównanie priorytetu zidentyfikowanego źródła przerwania z priorytetem programu (lub podprogramu) przerwanego. Jeżeli priorytet ten jest wyższy, to następuje skok do podprogramu obsługi przyjętego przerwania, w przeciwnym razie następuje odtworzenie stanu procesora i kontynuacja przerwanego programu.

Niektóre mikroprocesory mają więcej niż jedno wejście przerwań (np. Z80). Niektóre z tych wejść są niemaskowalne, tzn. nie można ich zablokować. Pojawienie się sygnału żądania przerwania na takim wejściu powoduje każdorazowo natychmiastowe przerwanie wykonywanego programu i przejście do odpowiedniego podprogramu obsługi. W systemach sterowania czasu rzeczywistego wejściom tym mogą być przyporządkowane sygnały żądania przerwania spowodowane ważnymi pod względem wymagań technologicznych sterowanego procsu zdarzeniami natychmiastowej interwencji. Wejścia niemaskowalne są również często używane do obsługi przerwania spowodowanego zanikiem napięć zasilających.

Organizacja systemów przerwań w produkowanych mikroprocesorach jest bardzo zróżnicowana i ma istotny wpływ na możliwości ich zastosowań. Mikroprocesory o wysoko zorganizowanych systemach przerwań są bardzo przydatne do sterowania.

5. Jak zorganizowana jest pamięć w jednoukładowym .51

Mikrokomputery jednoukładowe MCS-51.

FAQs about MCS-51, czyli głupie pytania o MCS-51:

      1. Q: Jak to badziewie wygląda i jakie ma wyprowadzenia?

0x08 graphic
0x08 graphic
A: Wygląda jak czarny robaczek z 40 nóżkami, prostokątny lub kwadratowy, może być z szybką, wtedy jest z wewnętrznym EPROM-em. Oto rysunek:

      1. Q: Może trochę konkretów, o tym co w środku?

A: OK., już podaję:

Jednostka centralna - 8-bitowa, 111 rozkazów (49 jedno-, 45 dwu- i 17 trzybajtowych), wszystkie wykonywane w czasie jednego lub dwóch cykli maszynowych, wyjątek: dzielenie i mnożenie - cztery cykle maszynowe.

ALU - dodawanie i odejmowanie z przeniesieniem (pożyczką) i bez, mnożenie, dzielenie, in- i dekrementacja, korekcja dziesiętna, operacje logiczne (AND, OR, EXOR, NOT, SHL i SHR). Akumulator 8-bitowy. Słowo stanu programu PSW:

CY

AC

F0

RS1

RS0

OV

P

CY - Carry, AC - Auxiliary Carry, F0 - znacznik programowy, RS0, RS1 - wskaźniki zbioru rejestrów (od 00 do 11), OV - Overflow, P - Parity.

Pamięć programu - max. 64KB, podzielona na strony po 2KB. Dzieli się na wewnętrzną i zewnętrzną. Podział pamięci programu jest niezauważalny od strony programowej. Pamięć ta adresowana jest przez licznik rozkazów PC. Istnieją wyróżnione miejsca w pamięci:
00h - tu zaczyna się wykonywanie programu po resecie,
03h - początek podprogramu obsługi przerwania INT0
0Bh - początek podprogramu obsługi przerwania z licznika T0 CTC
13h - początek podprogramu obsługi przerwania INT1
1Bh - początek podprogramu obsługi przerwania z licznika T1 CTC
23h - początek podprogramu obsługi przerwania portu szeregowego
2Bh - początek podprogramu obsługi przerwania z licznika T2 CTC (tylko 8052)

Pamięć danych - jak zwykle: wewnętrzna (128B) i zewnętrzna (do 64KB). Mapa pamięci wewn.:

Adres

WEWNĘTRZNA PAMIĘĆ DANYCH

Rejestry specjalne

FFh

SFR

80h

Obszar

pamięci

użytkowej

7Fh

30h

2Fh

Obszar adresowany bitowo

20h

1Fh

R7 - R0

Zbiór 3

Rejestry użytkowe

18h

17h

R7 - R0

Zbiór 2

10h

0Fh

R7 - R0

Zbiór 1

08h

07h

R7 - R0

Zbiór 0

00h

SFR to zbiór rejestrów specjalnych - akumulator, słowa stanu, rejestry i maski przerwań, rejestr portu szeregowego, rejestry liczników, wskaźnik stosu i wiele, wiele innych. Jak widać są również cztery zbiory rejestrów dla programisty. R0 i R1 z aktywnego zbioru służą do adresowania pośredniego pamięci. Jest również obszar adresowany bitowo. Po co? Nie wiem, może dla umieszczania tam flag dla programu? Stos umieszcza się w obszarze pamięci użytkowej. Do adresowania pamięci danych wewnętrznej i zewnętrznej służą (jak w 8048) dwa różne rozkazy, odpowiednio: MOV i MOVX.

Zegar - stabilizowany zewnętrznym oscylatorem kwarcowym o częstotliwości max. 12 MHz.

Układ czasowo-licznikowy - dwa (w 8052 trzy) 16-bitowe liczniki, które mogą zliczać wewnętrzne impulsy zegarowe lub impulsy zewnętrzne. Mogą pracować w czterech trybach.

Linie I/O - 32 linie zgrupowane w cztery dwukierunkowe porty P0-P3. Port P3 jest wykorzystywany do realizacji specjalnych funkcji (patrz: Odnóżologia). Można ustawić poszczególne bity porty na zapis lub odczyt.

Port szeregowy - niezależne nadawanie i odbieranie transmisji szeregowej. Może pracować w czterech trybach. konwersja równoległo-szeregowa odbywa się automatycznie. Szybkość transmisji od 110 do 19200 bodów. Podobno możliwe jest osiągnięcie 375000 bodów, ale wymaga to zastosowania zabiegów z pogranicza magii.

Przerwania - jest pięć: dwa zewnętrzne INT0, INT1, dwa wewnętrzne (z układu czasowo-licznikowego) i jedno z portu szeregowego. W 8052 jest jeszcze szóste - z trzeciego licznika CTC. Układ przerwań jest dwupoziomowy (każdemu przerwaniu można nadać jeden z dwóch priorytetów) i w pełni maskowalny.

Stany z obniżonym poborem mocy - he, he układy te mogą nawet pracować w trybie „power down mode”!! Ale (podaję za A. Rydzewskim) podobno tylko te oryginalne, produkcji Intela. Inne nie zawsze. Cóż, co Intel® inside™, to Intel® inside™...

Q: Jakie układy wchodzą w skład rodziny układów MCS-51?

A:

Typ układu

Wewn. pamięć programu

Wewn. pamięć danych

CHMOS

HMOS

80C51

8051AH

4K × 8 ROM

128 × 8 RAM

8751H

4K × 8 EPROM

128 × 8 RAM

80C31

8031AH

128 × 8 RAM

8052

8K × 8 ROM

256 × 8 RAM

8032

256 × 8 RAM

      1. Q: Jak można rozbudować system z MCS-51?

A: Można dołożyć zewnętrzną pamięć: programu lub danych. System wygląda podobnie, jak w przypadku rozbudowy 8048 - również trzeba zatrzaskiwać dolną połówkę adresu w rejestrze (np. 74LS373 lub 8282) - przypominam: port P0 podaje dolną połówkę adresu, zatrzaskuje go sygnałem ALE/P, następnie podaje dane! Program trzymamy zwykle na ROM-ie, EPROM-ie lub EEPROM-ie, a dane na statycznym RAM-ie. DRAM-y w układach z MCS-51 mają zastosowanie w zasadzie tylko na kolokwiach z Mikroinformatyki. Wejście/wyjście rozbudować możemy stosując np. 8255.0x08 graphic
A oto przykład systemu z 8051 z zewnętrzną pamięcią programu na EPROMIE 2764 (4KB) i pamięcią danych na RAM-ie 6116 (1KB):

6. Współpraca procesora 8086 z koprocesorem 8087

Rozszerzenie jednostki centralnej o procesor wejścia/wyjścia i koprocesor numeryczny. Współpraca mikroprocesora 8086/88 z koprocesorem 8087.

0x08 graphic
Procesor we-wy oraz koprocesor są podłączone do procesora poprzez sygnały RQ/GT0 i RQ/GT1. Są to dwukierunkowe linie żądania dostępu do magistrali i potwierdzeni przyznania magistrali innym modułom nadrzędnym (tj. koprocesor lub procesor we-wy). Linia RQ/GT0 ma wyższy priorytet od linii RQ/GT1. Koprocesor dodatkowo połączony jest z procesorem przez wykorzystanie sygnałów QS1, QS0 oraz BUSY. Sygnał BUSY=1 połączony z wejściem TEST procesora powoduje - jeśli w programie napotkana jest instrukcja WAIT - przejście procesora w stan bezczynności, aż do przyjścia opadającego zbocza sygnału. Sygnały QS1 i QS0 określają rodzaj operacji wykonywanej na kolejce rozkazów,

QS1 QS0

Rodzaj operacji

0 0

Brak operacji

0 1

Pobranie pierwszego bajtu rozkazu z kolejki

1 0

Zerowanie kolejki

1 1

Pobranie rozkazu z kolejki

Koprocesor arytmetyczny umożliwia rozszerzenie listy rozkazów mikroprocesora o rozkazy złożonych operacji arytmetycznych. W trakcie wykonywania programu wykorzystującego koprocesor, po napotkaniu rozkazu ESC koprocesor wystawia stan BUSY, aż do momentu zakończenia jego wykonywania.

0x08 graphic
Procesor we-wy, czyli układ 8089 może wykonywać rozkazy oparte na własnej liście rozkazów i umożliwia szybkie przesyłanie danych w dwu kanałach DMA. (przesyły: pamieć-pamięc; pamięć-we-wy; we-wy-pamięc; we-wy - we-wy).

7. Magistrala PCI

    1. Obecnie tryumfy święci PCI

Gdyż ilości danych przesyłane na ekran w bardzo interesujących GUI są zastraszające (tryb 1024 x 768 x TRUE COLOR= 18874368 Mbit/s - na jeden ekran). PCI pasuje głównie dla zastosowań multimedialnych i gromadzenia dużych ilości danych na HDD. Oczywiście istnieją takie zabawki jak SCSI, SCSI - II, SCSI-coś tam jeszcze, ale kto się będzie zajmował sprawami naprawdę poważnymi.....

W czasie wymiany danych przez PCI do magistrali podłączone są dwa urządzenia: inicjator połączenia - MASTER i urządzenie docelowe - SLAVE. Teoretycznie PCI może pracować z zegarem 66 MHz. Przesył danych dzieli się na dwie fazy: adresowania - wybierany jest przez Master'a Slave i następuje uzgodnienie rodzaju transmisji i fazę danych - wymiana danych.

Cechy charakterystyczne PCI : urządzenia na magistrali są niezależne od procesora, dzięki czemu obciążenie CPU jest prawie znikome, PCI teoretycznie może obsłużyć do 256 urządzeń, można stosować przesyły łańcuchowe dla zapisu i odczytu, magistrala może zmieniać szerokość - 32 lub 64 bity, przy zegarze 33 MHz czas dostępu jest rzędu 60 ns (jak w DRAM), występuje kontrola parzystości adresu i danych. Starczy...

8. Przerwamia w .51 i .486 - tryby pracy

Organizacja przerwań w mikrokomputerze typu PC/AT.

Najbardziej aktywnym elementem komputera jest procesor. Niektóre urządzenia wykonują operacje ciągnące się przez wiele cykli zegarowych, ale nie wymagają one udziału procesora ponieważ same są wyposażone we własne procesory. W takim przypadku wystarczy, aby procesor zaprogramował odpowiednie rejestry urządzenia, wydając tym samym komendę do wykonania określonej operacji (np. odczytanie, zapisanie sektora na dysk, odebranie znaku przez RS). Procesor musi zostać poinformowany o zakończeniu wykonywania operacji przez urządzenie (nieważne czy pomyślnym). Może to być wykonane poprzez wystąpienie przerwania sprzętowego, czyli urządzenie samo zgłasza zakończenie operacji. Procesor wtedy przerywa realizację aktualnie wykonywanego programu, zapamiętuje stan rejestrów i realizują procedurę realizacji przerwania. Po wykonaniu procedury odtwarza stan rejestrów i wraca do wykonywania dalszej części programu.

W mikrokomputerze PC/AT funkcję kontrolera przerwań pełnią dwa układy 8259. Pojedynczy taki kontroler posiada osiem linii wejściowych, przyjmujących sygnały zgłoszeń przerwań. Procesor otrzymuje informację poprzez wyjście INT. Drugi kontroler (SLAVE) jest podłączony kaskadowo z pierwszym (MASTER). W PC/AT oznacza to, że wyjście INT z układu SLAVE jest połączone z wejściem IRQ2 układu MASTER, a wejścia kontrolera SLAVE mają przyporządkowane numery przerwań odpowiednio od 8-15.

Urządzeniom przyporządkowane są odpowiednie linie IRQ oraz wektory przerwań. Wektor przerwania oznacza indeks wskazujący na adres obsługi danego przerwania, umieszczony w tablicy wektorów przerwań.

Przyporządkowanie urządzeń liniom IRQ. (wektor oznacza numer indeksu wskazującego adres obsługi danego przerwania, umieszczony w tablicy wektorów przerwań. Tablica znajduje się w pamięci w obszarze 0000h-03FFh).

IRQ

Urządzenie

wektor

IRQ

Urządzenie

wektor

0

zegar systemowy

08h

8

zegar czasu rzeczywistego

70h

1

Klawiatura

09h

9

wywołanie przerwania IRQ2

71h

2

Wyjście kaskadowe do układu SLAVE

0Ah

10

zarezerwowane

72h

3

COM2

0Bh

11

zarezerwowane

73h

4

COM1

0Ch

12

zarezerwowane

74h

5

LPT2

0Dh

13

koprocesor arytmetyczny

75h

6

kontroler dyskietek

0Eh

14

kontroler dysku twardego

76h

7

LPT1

0Fh

15

zarezerwowane

77h

0x08 graphic

(SP/EN=1 to MASTER; =0 to SLAVE)

Cykl przyjęcia zgłoszenia przerwania:

Istnieje jeszcze jedno przerwanie sprzętowe, jest to przerwanie niemaskowalne (NMI), ponieważ nie można go zablokować programowo. Sygnał ten jest połączony bezpośrednio z procesorem linią NMI. Przerwanie to ma najwyższy priorytet. Wywoływana jest procedura obsługi INT2. Przerwanie to jest generowane między innymi w przypadku wystąpienia błędu parzystości.

Jako ciekawostka, to mimo wszystko da się je zamaskować poprzez ustawienie 7 bitu portu 070h. Opcja ta jest potrzebna BIOSowi, ponieważ w momencie uruchomienia PC-ta BIOS buduje tablicę wektorów przerwań i jeżeli nie zdążyłby, a wystąpiłby jakiś błąd w pamięci to komputer skoczyłby pod niewłaściwy adres i najprawdopodobniej zawiesiłby się.

9. Deskryptory adresów i segmentów (do czego służą)

    1. Tryb adresowania wirtualnego.

Procesor 80386 przetwarza logiczny adres w adres fizyczny w dwóch krokach:

1. Translacja segmentu, w której adres logiczny (segment + offset) jest przetwarzany na adres liniowy.

2. Translacja strony, w której adres liniowy jest konwertowany na adres fizyczny. Translacja ta jest opcjonalna i zależy od projektanta oprogramowania.

Ad 1. Translacja segmentu

Schemat wyznaczania adresu na wysokim poziomie abstrakcji:

15 0 31 0

LOGICAL ------------------ ---------------------------------------

ADDRESS | SELECTOR | | OFFSET |

------------------ ---------------------------------------

-------| |

| DESCRIPTOR TABLE |

| -------------- |

| | | |

| | | |

| | | |

| | | |

| -------------- |

| | SEGMENT | BASE ----- |

-->| DESCRIPTOR ----------------| + |

Procesor wykorzystuje następujące struktury danych:

Deskryptory

Deskryptor segmentu dostarcza procesorowi dane, jakie są potrzebne by odwzorować logiczny adres w adres liniowy. Deskryptory są tworzone przez kompilatory, linkery lub system operacyjnie (nie programistę).

Struktura deskryptora.

31 23 15 7 0

--------------------|-|-|-|-----------|-----|----------------------------

| | | | |A| LIMIT | | | TYPE | |

| BASE 31..24 |G|B|0|V| 19..16 |P| DPL | | BASE 23..16 |

| | | | |L| | | |1|0|E|W|A| |

|-----------------|-|-|-|-|---------|-|-----|-|-|-|-|-|-----------------|

| | |

| SEGMENT BASE 15..0 | SEGMENT LIMIT 15..0 |

| | |

|-----------------------------------------------------------------------|

- Pole BASE definiuje lokację segmentu w liniowej 4GB przestrzeni adresowej (procesor łączy 3 fragmenty pola BASE by uformować 32-bitową wartość).

- Pole LIMIT definiuje wielkość segmentu (łączone są dwa fragmenty by uzyskać 20-bitową wartość).

- G (granularity bit) definiuje jednostkę pola LIMIT G=0 - 1bajt,G=1 - 4kB.

- TYPE - typ deskryptora,

- DPL - Poziom uprzywilejowania deskryptora (patrz pytanie nr 66)

- Segment-Present bit, Accessed bit - używane przez mechanizm pamięci wirtualnej.

Tablice deskryptorów

Deskryptory segmentów są przechowywane w dwóch rodzajach tablic deskryptorów:

Tablica deskryptorów jest tablicą w pamięci o 8-bajtowych elementach, zawierających deskryptory. Wielkość tablica deskryptorów może się zmieniać, a jej max. rozmiar to 8192 deskryptorów. Procesor znajduje w pamięci GDT i LDT poprzez rejestry GDTR i LDTR. Rejestry te przechowują bazowy adres tablic w liniowej przestrzeni adresowej.

Selektory

Część „selector” adresu logicznego identyfikuje deskryptor przez wyszczególnienie tablicy deskry-ptorów i konkretnego deskryptora w tej tablicy.

Budowa deskryptora:

15

3

0

INDEX

TI

RPL

TI - wskaźnik tablicy

RPL - poziom uprzywilejowania obiektu żądającego (Requestor's Privilege Level)

INDEX: wybiera jeden z 8192 deskryptorów

TI: TI=0 - dotyczy GDT, TI=1 dotyczy LDT

RPL: Używane przez mechanizmy ochrony

Rejestry segmentowe

Procesor 386 przechowuje informacje „od” deskryptorów w rejestrach segmentowych. Zapobiega to odwoływaniu się do tablic deskryptorów przy każdym odwołaniu do pamięci. Każdy rejestr segmentowy składa się z dwóch części: widocznej i niewidocznej. Widoczna część to 16-bitowy rejestr segmentowy widziany przez program. Część niewidoczna jest zmieniana przez procesor. Operacje, które ładują te rejestry to zwykłe instrukcje (np. MOV, POP, LDS). Używając tych instrukcji program ładuje widoczną część rejestru segmentowego 16-bitowym selektorem. Procesor automatycznie pobiera adres bazowy, limit, typ i inne informacje z tablicy deskryptorów i ładuje je do niewidocznej części rejestru segmentowego.

16-bitowa widoczna część

Selektor

Niewidoczny Deskryptor

rej. segmentowy

Ad 2. Translacja strony

W drugiej fazie wyznaczania adresu procesor dokonuje konwersji adresu liniowego na adres fizyczny - translacji stron. Konwersja ta jest opcjonalna - zależy od bitu PG w rejestrze CRO. Wykorzystuje się ją w systemach wielozadaniowych, mechanizmach pamięci wirtualnej.

Adres liniowy odwołuje się niebezpośrednio do pamięci fizycznej: określa tablicę stron, stronę w tablicy i offset na stronie.

Schemat translacji strony

LINEAR ADDRESS PAGE FRAME

------------------------------------ -----------------

| DIR | PAGE | OFFSET | | |

------------------------------------ | |

| | | | |

--------------- | -------------->| PHYSICAL |

| | | ADDRESS |

| PAGE DIRECTORY | PAGE TABLE | |

| ----------------- | ----------------- | |

| | | | | | -----------------

| | | | |---------------| ^

| | | --->| PG TBL ENTRY |--------------|

| |---------------| |---------------|

-->| DIR ENTRY |--| | |

|---------------| | | |

| | | | |

----------------- | -----------------

^ | ^

--------- | ----------------|

| CR3 |--------|

---------

Tablica stron.

Tablica stron jest tablicą zawierającą 32-bitowe specyfikatory stron. Tablica ta jest sama w sobie stroną.

Do adresowania stron w pamięci używa się dwóch poziomów tablic. Na wyższym poziomie znajduje się katalog stron, który adresuje do 1KB tablic niższego poziomu. Tablice stron drugiego poziomu adresują do 1K stron każda. Wszystkie tablice adresują więc 1M stron (2^20), a ponieważ każda strona zawiera 4kB pamięci (2^12) możliwe jest zaadresowanie całej fizycznej pamięci (2^32).

Adres fizyczny aktualnego katalogu stron jest przechowywany w rejestrze CR3.

Rekordy w tablicach obu poziomów mają identyczną strukturę (j.n.):

Struktura wejścia do tablicy stron: (Page Table Entry)

31

11

0

PAGE FRAME ADDRESS

AVAIL

0 0

D

A

00

U/S

R/W

P

P present

R/W read/write

U/S user/supervisor

D dirty

AVAIL available for system programmer use

D (dirty) - używany przez mechanizm pamięci wirtualnej

R/W, U/S - używane przez mechanizm ochrony dostępu do pamięci

Procesor przechowuje dane z ostatnio używanej tablicy stron w pamięci Cache.

0x08 graphic

Mechanizm wyznaczania adresu fizycznego

16 0 32 0

------------------------------------------------------------ LOGICAL

| SELECTOR | OFFSET | ADDRESS

-----|----------|-------------------------|-----------------

--------- | |

| DESCRIPTOR TABLE |

| |---------------| |

| | | |

| | | |

| | | |

| | | |

| |---------------| |

| | SEGMENT | |---| |

|->| DESCRIPTOR --------->| + |<----------- | PHYSICAL |

| | | ADDRESS |

| PAGE DIRECTORY | PAGE TABLE | |

| |---------------| | |---------------| | |

| | | | | | | |

| | | | | | -----------------

| | | | |---------------| ^

| | | |-->| PG TBL ENTRY |--------------|

| |---------------| |---------------|

|->| DIR ENTRY |--| | |

|---------------| | | |

| | | | |

|---------------| | Č---------------Ľ

^ | ^

|-------| | |---------------|

| CR3 |--------|

|-------|

17

Błąd! Nieprawidłowe łącze.

Błąd! Nieprawidłowe łącze.

Błąd! Nieprawidłowe łącze.

ODNÓŻOLOGIA Z80 CTC:

D0-D7 - wiadomo

IEI - wejście zezwalające przerwań

IEO - wyjście sygnału przerwania

INT - wejście sygnału przerwania

RD - wejście zapisu

IORQ - przełączenie z obszaru pamięci na obszar zarezerwowany dla urządzeń I/O

M1 - sygnał zegarowy mikroprocesora

CS - wybór układu

CE - włączenie układu (logiczne)

CLK/T - wyprowadzenie dla taktowania i wyzwalania

ZC/TO - zerowe zliczenie - czas upłynął

RESET - reset

0x01 graphic

0x01 graphic

0x01 graphic

ODNÓŻOLOGIA 8051:

P00 - P07 - port P0

P10 - P17 - port P1

P20 - P27 - port P2

P30 - P37 - port P3, dodatkowo:

P30 - RxD, we szeregowe

P31 - TxD, wy szeregowe

P32, P33 - INT0, INT1, we przerywające

P34, P35 - T0, T1. we u. czasowo-licznikowego

P36 - WR, zapis do zewn. pamięci danych

P37 - RD, odczyt z zewn. pamięci danych

INT0, INT1 - wejścia przerywające

T0, T1 - wejścia dla układów czasowo-licznikowych

RD, WR - zapis/odczyt z zewnętrznej pamięci danych

PSEN - (program store enable), odczyt z zewnętrznej pamięci programu

ALE/P - wyjście sygnału zegarowego fXTAL/6 (strobowanie „połówki” adresu)

EA­/VP - (external access), wymuszenie pobierania rozkazów z pamięci zewnętrznej

RESET - reset

XTAL1, XTAL2 - wejścia do podłączenia oscylatora



Wyszukiwarka

Podobne podstrony:
Uklady mikroprocesorowe Przyklady rozwiazan ukmipr
Uklady mikroprocesorowe Przyklady rozwiazan
Uklady mikroprocesorowe Przyklady rozwiazan 2
Uklady mikroprocesorowe Przyklady rozwiazan
mikroprocesory układy mikroprocesorowe
Wykład XV Mikroprogramowane układy sterujące
cz%ea%9c%e6+4+ +unipolarne+uk%b3ady+scalone+i+uk%b3ady+systemu+mikroprocesorowego JAI3S2HWFFCL5ENM3S
Laboratorium Techniki Mikroprocesorowej Układy transmisji równoległej sterowanie światłami
Laboratorium Techniki Mikroprocesorowej, Układy transmisji równoległej sterowanie światłami na skrzy
Laboratorium Techniki Mikroprocesorowej Układy transmisji szeregowej, programowa transmisja szereg
APD 5 układy bramkowe
Układy Napędowe oraz algorytmy sterowania w bioprotezach
Układy wodiociągowe ze zb przepł końcowym i hydroforem
uklady dyspersyjne
15 Uklady PLL i t s
W3B Układy fazowe

więcej podobnych podstron