Wykłady z Architektury Komp sem IV, Skrypty studia, Architektura komputerów


WYKŁAD 2.

Mikrokomputer -powstaje przez przyłączenie do mikroprocesora pamięci oraz jednostek sterujących urządzeniami wejścia-wyjścia za pomocą magistrali systemowej (sterującej).

Magistrala systemowa -podzielona jest na trzy magistrale: adresową, danych i sterującą.

Magistrala adresowa -(w mikroprocesorach jednoukładowych) połączona z licznikiem rozkazów i licznikiem danych, przeznaczona do przekazywania adresów od mikroprocesora do pamięci i urządzeń peryferyjnych. Ponieważ jedynym źródłem adresów jest mikroprocesor to magistrala jest zwykle jednokierunkowa. Potrzeba sterowania dwukierunkowych magistrali adresowych występuje w przypadku rozbudowanych typów mikroprocesorów zaopatrzonych w cache.

Magistrala danych -(połączona z akumulatorem, rejestrami uniwersalnymi i rejestrem rozkazów). Dla umożliwienia przekazywania danych w obydwu kierunkach, magistrala ta z reguły powinna być dwukierunkowa. Jeśli adres znajdujący się na magistrali adresowej pochodzi z licznika rozkazów, to po odebraniu wpisywany jest on do rejestru rozkazów.

Magistrala sterowania -(połączona jest z układem sterowania mikroprocesora) przeznaczona jest do przesyłania sygnałów sterujących pamięcią (zapis-odczyt) i urządzeniami peryferyjnymi (wejście-wyjście) oraz sygnałów specjalnych wykorzystywanych w operacjach obsługi przerwań i bezpośredniego dostępu do pamięci. Zawiera też sygnały oddziałujące na stan mikroprocesora. Część sygnałów magistrali to sygnały wejściowe mikroprocesora, a część to sygnały wyjściowe.

Schemat blokowy mikrokomputera. RYS.

W przypadku połączenia magistrali adresowych i danych konieczne jest sterowanie zewnętrznych układów rozdzielających.

Schemat funkcjonalny mikrokomputera. RYS.

Do rozdzielania magistral wykorzystywane są dwa sygnały sterujące:

ALE -adres latch enable

DEN -data enable

Sygnał ALE -ustala moment czasu, w którym na wspólnej magistrali znajduje się adres i wykorzystywany jest do załadowania go do pomocniczego rejestru adresowego.

Sygnały DEN -ustalają moment czasu, w którym na wspólnej magistrali znajdują się dane; wykorzystywane są do otwarcia dwukierunkowych wzmacniaczy magistrali danych.

Adres wysyłany jest zwykle na wspólną magistralę w pierwszej części cyklu wymiany informacji. Sterowanie magistralowej struktury mikrokomputera pozwala na uzyskanie prostych i przejrzystych układów logicznych oraz na dołączenie praktycznie dowolnej liczby urządzeń peryferyjnych.

Klasyfikacja mikrokomputerów

Są one klasyfikowane wg trzech następujących kryteriów:

1.Architektura wewnętrzna.

2.Długość słowa maszynowego.

3.Technologia.

Mikroprocesorem -nazywamy układ odpowiadający funkcjonalnie jednostce centralnej komputera (Central Proces Unit) zgrupowanej w jednym układzie scalonym (lub niewielkiej liczbie w przypadku procesorów systemowych). Mikroprocesor (zgodnie z wolą jednostki centralnej w systemie komputerowym) spełnia funkcje:

Aby wykonanie tych funkcji było możliwe każdy mikroprocesor musi zawierać co najmniej następujące bloki funkcjonalne:

Wewnętrzna struktura większości mikroprocesorów charakteryzuje się następującymi cechami:

Tryb MAX i MIN. RYS.

Rozkład wyprowadzeń procesora 8086. Znaczenie poszczególnych wyprowadzeń: ADQ-AD15 -16 bitowa magistrala danych procesora oraz jednocześnie 16 mniej znaczących bitów 20 bitowej (ADQ-AD19) magistrali adresowej. W obsłudze magistrali wykorzystany jest proces zwany multipleksowaniem: końcówki AD15-ADQ są wykorzystane do wystawienia.

Rozkład wyprowadzeń procesora 8086. RYS.

Mikroprocesor 18086.

W 1978 r opracowano w firmie Intel 16-bitowy mikroprocesor 18086. Składa się on ze współpracujących ze sobą dwóch zespołów:

Zespół wykonawczy EU składa się z:

Blok ALU dołączony jest do magistrali wewnętrznej mikroprocesora. Z magistrali tej pobiera się argumenty operacji, a także wysyłany jest na nią wynik operacji. Na magistralę wysyłana też może być zawartość rejestru znaczników. Rejestr ten (9 bitowy, którego kolejne bity są ustawiane w zależności od zaistnienia jakiegoś zjawiska) umożliwia kontrolę pracy procesora. Znaczenie bitów jest następujące:

S -znacznik znaku (sign flag);'0'-liczba dodatnia, `1'-ujemna.

Z -znacznik zera (zero flag);'0'-wynik operacji różny od 0,'1'-równy zero.

P -znacznik parzystości (parity flag);'0'-liczba jedynek w wyniku nieparzysta,'1'-parzysta.

A -przeniesienie pomocnicze (auxiliary carry) jest ustawiane, gdy powstaje przeniesienie między tetradami tzn. Czwórkami bitów mniej znaczącego bajtu.

C -przeniesienie (carry) jest ustawiane, gdy wynik operacji arytmetycznej powoduje powstawanie przeniesienia z najbardziej znaczącego bajtu.

O -nadmiar, przepełnienie (overflow) jest ustawiany, gdy suma modulo2 przeniesienia z przedostatniej i najbardziej znaczącej pozycji jest równa 1(przekroczenie zakresu w kodzie U2).

J -znacznik zezwolenia na przerwanie (interrupt) ustawiany w stan `1' świadczy o zezwoleniu na przyjmowanie przerwań z INT.

D -znacznik kierunku (direction) ustawiany rozkazem STD, a zerowany CLD. Wskazuje czy zawartości rejestrów SI i DI mają być zwiększone o 1, czy zmniejszone podczas wykonywania operacji na ciągach.

T -znacznik pułapki(trap) umożliwiający pracę krokową. Wskaźnik może być ustawiany w słowie stanu programu (program status word PSW) przez zapis jedynki na pozycję odpowiedniego bitu. Można to zrobić rozkazem push PSW, wpisaniem 1 i rozkazem pop PSW.

Procesor, a ściślej ALU pracuje jedynie na danych zgromadzonych w rejestrach. Aby procesor wykonywał jakieś działanie, trzeba najpierw załadować rejestry. Do grupy rejestrów ogólnego przeznaczenia należą cztery rejestry 16-bitowe:

SP -wskaźnik stosu (stack pointer).

BP -wskaźnik bazowy (base register), adres początku rejestru.

Oba rejestry używane są do adresowania pamięci.

DI -rejestr adresu przeznaczenia (destination indeks).

SI -rejestr adresu argumentu (source indeks).

Rejestry te służą do adresowania danych w zasięgu segmentu (64 kB).

Zespół łącza z magistralą systemową BIU zawiera:

  1. Blok rejestrów segmentowych (zespół rejestrów relokacji CS, DS, SS, ES).

  2. Licznik adresów PC.

  3. Sumator do obliczenia adresu fizycznego.

  4. Układ kolejki i rozkazów.

  5. Blok sterowania.

Architektura mikroprocesowa 8086/88.

RYS.

Wyodrębnienie zespołu BIU spowodowało przyspieszenie pracy, co jest efektem nałożenia się w czasie wykonywania i pobierania rozkazów. Jednocześnie pobieranie rozkazów z pamięci operacyjnej i ich wykorzystanie jest możliwe dzięki zastosowaniu kolejki rozkazów. Procesor 8086 zawiera układ kolejki o długości 6 bajtów.

BIU realizuje mechanizm segmentacji w celu oderwania logicznych obszarów pamięci od ich fizycznych adresów oraz w celu łatwej relokacji tych obiektów.

Procesor 8086 rozróżnia cztery logiczne obszary pamięci. Każdemu z nich przypisany jest jeden rejestr segmentowy.

CS - rejestr adresu segmentacji programu (code segment) wskazuje segment programu, z którego pobierane są adresy do wykonania.

DS. - Rejestr adresu przeznaczenia (destination indeks) wskazuje segment, w którym znajdują się dane deklarowane w programie.

SS - rejestr adresu segmentu stanu (stack segment) wskazuje segment, w którym zdefiniowany jest stos.

ES - rejestr adresu segmentu dodatkowego (extra segment) wskazuje dodatkowy segment danych

PC - licznik rozkazów zawiera adres następującej instrukcji, która ma być wykonana

Długość każdego segmentu jest stała i wynosi 64kB, dlatego adres wewnętrzny w segmencie jest 16 - bitowy. Rejestr wskazuje adres fizyczny początku segmentu z przestrzeni adresowej pamięci.

WYKŁAD 3

Adres fizyczny

Przestrzeń adresowa procesora 8086 ma pojemność 1MB. Jest podzielona na segmenty po 64kB.

Organizacja pamięci mikroprocesora 8086/88 rys

Procesor operuje 16 - bitowymi danymi, a zatem może w sposób bezpośredni adresować tylko 64kB pamięci, więc dla zwiększenia przestrzeni adresowej do pojemności 1MB wprowadzono w układzie procesora dodatkowe rozwiązanie układowe.

Rys. Sposób adresowania

0x08 graphic
15

Adres offsetu

15

Adres segmentowy

19 0

Adres fizyczny

Struktura funkcjonalna mikroprocesora 16 - bitowego rys

Układ ten pozwala tworzyć 20 - bitowy adres fizyczny. Najbardziej znaczące 16 bitów adresu każdego bieżącego segmentu (programu, danych, stosu) 16 - bitowych rejestrów adresów segmentowych. Słowa wewnątrz segmentu są adresowane przez 16 - bitowe słowa adresu „efektywnego”.

20-bitowy adres początku segmentu powstaje przez złożenie 16-bitowego adresu segmentowego (16-bitów zawartości rejestru segmentowego) i zer na czterech najmniej znaczących pozycjach. Stąd segmenty mogą być rozmieszczone w pamięci w dowolny sposób ale z...(nic nie ma).

Obliczanie zakresu fizycznego odbywa się przez sumowanie 16-bitowego słowa adresu i 20-bitowego słowa złożonego z zawartości jednego z czterech rejestrów segmentowych oraz zer na czterech najmniej znaczących pozycjach.

Poszczególne przestrzenie adresowe są wyznaczone przez rejestry segmentów CS,DS.,SS,ES.

Na zawartości segmentu nie są nakładane żadne ograniczenia. Przestrzenie adresowe mogą więc zachodzić na siebie lub nawet reprezentować to samo miejsce w pamięci fizycznej.

Wszystkie wykonywane przez procesor 8086 operacje dostępu do pamięci odbywają się z użyciem rejestrów segmentu.

CS- dla programu, DS.,SS,ES dla danych.

Przyjęcie takiego rozwiązania zapewnia możliwość relokacji wszystkich programów.

Źródło przesunięcia jest różne dla różnych programów:

Tryby adresowania

Trybem adresowania nazywamy sposób wyznaczania adresu argumentu lub wyniku.

Od różnorodności trybów adresowania zależy efektywność procesora. Wprowadzone przez firmę INTEL możliwości generowania adresu efektywnego (przesunięcia) można sprowadzić do sześciu podstawowych trybów:

1. Natychmiastowy-dana jest podawana w programie wraz z kodem rozkazu (argument może być pobierany bezpośrednio z kodu rozkazu)

2. Rejestrowy-dana jest umieszczona w jednym z rejestrów roboczych procesora (wykonywane są najszybciej),

3. Bezpośredni-adres argumentu podawany jest bezpośrednio w treści rozkazu (określa lokalizację danej w pamięci)

4. Indeksowy-w tym ttrybie adres efektywny jest sumą zawartości rejestru indeksowego SI lub DI i lokalnego przesunięcia (podanym za kodem rozkazu przemieszczeniem). Jest to tryb adresowania przeznaczony do realizacji dostępu do elementów tablic.

5. Bazowy- w adresowaniu bazowym rozkaz wskazuje na jeden z rejestrów bazowych BX lub BP i ewentualnie zsumowany z zawartością rejestru indeksowego DI lub SI, jest adresem „efektywnym”. Adresowanie bazowe jest szczególnie przydatne przy realizacji dostępu do elementów danych strukturalnych np. pół rekordu.

6. Stosowy - adres jest zabierany z rejestru wskaźnika bazy BP i ewentualnie sumowany z zawartością rejestru indeksowego DI lub SI lub podanym za kodem rozkazu przemieszczeniem.

Rozkazy operujące na rejestrach we/wy, zawierające adres we/wy (adres natychmiastowy) lub posługują się zawartością rejestru DX (adres pośredni).

Wszystkie wymienione tryby adresowania standardowego odwołują się do rejestru segmentu danych z wyjątkiem trybu stosowego, w którym standardowo wykorzystuje się rejestr segmentu stosu SS.

Kod programu jest zawsze odczytywany za pomocą rejestru segmentu kodu. Zastosowanie segmentowej organizacji logicznej przestrzeni adresowej ma następujące zalety:

Ma też wady:

RYS. Metoda wyznaczania adresu fizycznego przy operacji dostępu do pamięci

Odwołania do przestrzeni we/wy mogą być realizowane przez podanie adresu fizycznego za kodem rozkazu lub przez adres fizyczny umieszczony w rejestrze DX. W przypadku przesrzeni we/wy nie przewidziano możliwości stosowania złożonych trybów adresowania pośredniego.

Odwołania realizowane z użyciem rejestru DX, pozwalają na wykorzystanie pełnych rozmiarów przestrzeni we/wy tj. 64 kB.

Budowa rozkazu

Procesor 8086 ma bogaty zestaw rozkazów, obejmujący następujące grupy funkcjonalne:

  1. Przesyłanie danych - MOV,PUSH,POP....

  2. Operacje arytmetyczne- ADD,SUB,MUL,DIV....

  3. Operacje logiczne- AND,OR,NOT,NOR...

  4. Operacje blokowe - LODS,MOVS....

  5. Operacje przesunięcia- RCL, RCR....

  6. Operacje sterujące- CALL,JMP,LOPP...

  7. Operacje przerwania- INT,IRET...

  8. Operacje we/wy- IN,OUT....

  9. Stanu procesora- NOP,WAIT,HTL,LOCK...

Rozkazy procesora 8086 są zasadniczo 2-bajtowe. Istnieją jednak rozkazy zarówno 1-bajtowe jak i 6-bajtowe (patrz rys).

Pierwszy bajt zawiera w większości 6 bitowy kod operacji oraz dwa znaczniki D i W. Wskaźnik D (direction) określa kierunek transmisji:

„0”-wynik operacji jest przesyłany z rejestru do pamięci

„1”-wynik operacji jest przesyłany z pamięci do rejestru

Wskaźnik W(word) określa długość słowa pobieranego do operacji:

„0”-wskazuje operacje na słowie 1-bajtowym

„1”-wskazuje operacje na słowie 2-bajtowym

Jeśli rozkaz jest więcej niż jednobajtowy, to drugi bajt rozkazu najczęściej określa sposób adresowania argumentów(tab. 1)

Zawiera on trzy grupy bitów:

2-bitowa grupa MOD (Mode)- określa tryb adresowania

3-bitowa grupa REG określa wybór rejestru lub rozszerzenie kodu

3-bitowa grupa R/M. - wybór rejestru dla danej lub adresu.

bajt 1

bajt 2

kod operacji

D

W

MOD

REG

R/M.

Tab 1. Format rozkazu mikroprocesora 8086.

Jeżeli operandy znajdują się w rejestrach procesora to MOD=11, a pola REG i R/M. Stanowią ich adresy.

bity

W=0

W=1

000.

AL.

AX

001.

CL

CX

010.

DL

DX

011.

BL

BX

100.

AH

SP

101.

CH

BP

110.

DH

SI

111.

BH

DI

Tab 2. Przyporządkowanie rejestrów procesora wartościom pól REG i R/M w kodzie rozkazu.

Jeżeli jeden z operandów znajduje się w pamięci to pola MOD i R/M. określają jego adres (tab. 3)

R/M.

MOD 00

MOD 01

MOD 11

000.

BX+SI

BX+SI +przes. 8 bit.

BX+SI +przes. 16 bit.

001.

BX+DI

BX+DI+przes. 8 bit.

BX+DI+przes. 16 bit.

010.

BP+SI

BP+SI+przes. 8 bit.

BP+SI+przes. 16 bit.

011.

BP+DI

BP+DI+przes. 8 bit.

BP+DI+przes. 16 bit.

100.

SI

SI+przes. 8 bit.

SI+przes. 16 bit.

101.

DI

DI+przes. 8 bit.

DI+przes. 16 bit.

110.

2 bajt.przes

BP+przes. 8 bit

BP+przes. 16 bit

111.

BX

BX+przes. 8 bit.

BX+przes. 16 bit.

Tab. 3 Sposób wyznaczania adresu operandu na podstawie wartości pól MOD i R/M. kodu rozkazu (przesunięcie- wartość podano bezpośrednio w treści rozkazu)

Grupa bitów REG określa jeden z ośmiu rejestrów, w których umieszczony jest operand danej operacji. Jeżeli znacznik W=0 to są to 8-bitowe rejestry: AL.,AH,BL,BH,CL,CH,DL,DH.

Jeżeli W=1 to są to rejestry 16-bitowe: AX,BX,CX,DX,SP,BP,SI,DI.

Grupa R/M. określa rejestry adresujące:

-jeśli MOD != 11 (nie równa się) to mogą to być rejestry: BX,BP,SI,DI,BP+DI,BP+SI,BX+SI,BX+DI

-jeśli MOD=11 to wówczas R/M. określa rejestr (jak REG) dla którego będzie przesłany wynik operacji.

Obok opisanego formatu występują także rozkazy jednobajtowe, czego przykładem może być rozkaz XCHE, tj. wymiany zawartości akumulatora z wybranym rejestrem.

W kodzie tego rozkazu 5 bitów stanowi kod operacji, a 3 bity wskazują rejestr, którego ten rozkaz dotyczy.

Lista rozkazów procesora 8086 zawiera także rozkaz z argumentem natychmiastowym, umieszczonym bezpośrednio po kodzie operacji.

bajt młodszy

bajt starszy

kod operacji

D

W

MOD

REG

R/M.

młodszy bajt przesunięcia

starszy bajt przesunięcia

młodszy bajt danej

starszy bajt danej

Tab. 4. Budowa rozkazu 6-bitowego

Współpraca mikroprocesora z otoczeniem.

Mikroprocesor 0886 umieszczony w 40-wyprowadzeniowej obudowie DIL. Procesor ten był przeznaczony do sterowania zasobami w dużych systemach wieloprocesorowych, jak i w prostych urządzeniach o minimalnym stopniu złożoności.

Ponieważ zbiór sygnałów wymagany do obu realizacji przekracza liczbę wyprowadzeń obudowy 40-nóżkowej, więc układ ten jest konfigurowany w jednym z dwóch trybów pracy: tzw. Minimalnym lub maksymalnym.

RYS. Topografia wyprowadzeń mikroprocesora 8086 z uwzględnieniem dwóch trybów pracy: minimalnego i maksymalnego.

Na ośmiu wyprowadzeniach (od 24 do 31) procesora zmieniają się funkcje realizowane przez te wyprowadzenia w zależności od ustawionego trybu pracy. W trybie minimalnym procesor sam generuje sygnały sterujące występujące na magistrali sterującej, natomiast w trybie maksymalnym generuje słowo stanu, które jest dekodowane przez jeden lub kilka sterowników szyn (np. układ 8288). Wybór trybu pracy nie ma wpływu na sposób współpracy układu z otoczeniem.

Wejściowe sygnały sterujące, wspólne dla obydwu trybów pracy:

MN/MX-„1” procesor pracuje w trybie minimalnym

„0” procesor pracuje w trybie maksymalnym

CLK- sygnał zegara

READY- sygnał wprowadzający do cyklu maszynowego takty oczekiwania

RESET- sygnał zerujący licznik rozkazów, rejestry DS.,SS,ES i rejestr znaczników (flag), natomiast rejestr CS jest ustawiony w FFFon,

INTR-sygnał zgłoszenia przerwania podawany zwykle ze sterownika przerwań (ukł.8259A). Przerwanie to jest maskowalne np. rozkazem CLI

NMI-sygnał zgłoszenia przerwania nie maskowalnego (Non Maskable Interrupt)

TEST-sygnał uruchamiający program po rozkazie WAIT, używany do synchronizacji pracy z koprocesorem.

Procesor 8086 jest wyposażony w 16-bitową multipleksowaną magistralą danych i adresów (AD0-AD15), ale adresowanie fizyczne jest 20 bitowe i dlatego magistrala adresowa jest uzupełniona o 4 bity podawane na wyprowadzenia A16-A19/S3-S6.

Wyjściowe sygnały sterujące wspólne dla obu trybów pracy:

BHE/S7- umożliwia pracę z pamięcią operacyjną zarówno w trybie bajtowym jak i ze słowem o długości 2 bajtów.

AD i BHE- określająca sposób wykorzystania pamięci:

AD=1, BHE=0 procesor korzysta z bloku pamięci A,

AD=0, BHE=1 procesor korzysta z bloku pamięci B,

AD=0, BHE=0 procesor wspólpracuje z dwoma blokami pamięci przesyłając magistralą słwa 2- bajtowe

RD- strobowanie odczytu (otwarcie bufora wewnętrznego)

RYS. Podstawowy cykl dostępu mikroprocesora

WR- sygnał strobujący zapis

MI/IO- synał określający rodzaj odwołania

M/10=1 dostęp do pamięci

M/10=0 dostęp do urządzeń zewnętrznych

ALE- potwierdzenie ważności adresu adresem na magistrali (adres latch enable). Sygnał wpisujący adres do zewnętrznych rejestrów (zboczem opadającym)

INTA- potwierdzenie przyjęcia przerwania (interrupt acknowledge).

Sygnał strobujący odczytu w cyklu potwierdzającym przyjęcie przerwania maskowalnego (odczytywany jest wektor przerwania podawany przez kontrolera przerwań).

RYS. Przerwania w mikroprocesorze 8086

HOLD - sygnał żądania zwolnienia magistrali procesora (w trybie maksymalnym jest to wyprowadzenie dwukierunkowe)

DEN - sygnał wykorzystywany jest do sterowania buforami magistrali danych (otwiera je tylko na czas przesyłania danych na multipleksowanej magistrali)

DT/R - sygnał określający kierunek przesyłania danych przez bufory

DT/R=1 transmisja od procesora do pamięci lub urządzeń zewnętrznych

DT/R=0 transmisja do procesora z pamięci lub urządzeń zewnętrznych

Procesor pracujący w konfiguracji minimalnej nie wymaga dodatkowych układów do generacji sygnałów dostępu. W trybie tym jedynie układ sterowania bezpośrednim dostępem do pamięci DMA (Direct Memory Access) np.8257, może na pewien czas przyjąć sterowanie magistralą systemu, nie jest natomiast przewidziane stosowanie koprocesora.

W trybie maksymalnym generacja sygnałów (realizujących analogiczne funkcje do wymienionych dla trybu minimalnego z wyjątkiem HOID i HLDA) przejmuje układ sterowania magistralą np.8288.

Zwolnione w ten sposób wyprowadzenia realizują następujące funkcje S0,S1 i S2, które wskazują na jeden z ośmiu cykli maszynowych procesora. Podawany na tych wyprowadzeniach status jest wykorzystywany przez układ sterownika magistrali do generowania sygnałów sterujących pracą układów zewnętrznych. W tabeli 5 zestawiono kody poszczególnych typów operacji procesora 8086.

Tab 5. Kody operacji wykonywanych przez procesor (cykle maszynowe)

S2

S1

S0

Operacja

0

0

0

Potwierdzenie przyjęcia zewnętrznego przerwania

0

0

1

Odczyt z przestrzeni adresowej we/wy

0

1

0

Zapis w przestrzeni adresowej we/wy

0

1

1

Stan wstrzymania pracy procesora (halt)

1

0

0

Pobieranie kodu rozkazu

1

0

1

Odczyt z przestrzeni adresowej pamięci

1

1

0

Zapis do przestrzeni adresowej pamięci

1

1

1

Przejściowy stan pasywny (bierny bez przesyłania)

RQ/GT0 , RQ/GT1 - linie służące do współpracy procesora z dwoma koprocesorami. Tymi dwukierunkowymi liniami przesyłane są : żądanie przejęcia magistrali i zezwolenia na jej przyjęcie.

LOCK - blokada arbitrażu na magistrali wieloprocesorowej. LOCK=0 wskazuje, że czas następnego rozkazu przejęcia magistrali przez innego użytkownika będzie niemożliwe.

QS1 , QS2 - informują o stanie wewnętrznej kolejki rozkazów. Są cztery możliwe przypadki stanu układu kolejki.

Tab 6. Wartości wyjść QS i określające stan układu kolejki.

QS1

QS2

Stan kolejki

0

0

Bez operacji

0

1

Pobranie do wykonania pierwszego bajtu rozkazu

1

0

Kolejka pusta

1

1

Pobranie kolejnego bajtu rozkazu

Niezależnie od trybu pracy procesora (minimalny czy maksymalny) dodatkowe informacje są dostępne jeszcze na liniach statusu S3 - S7.

Sygnały S3 - S6 są multipleksowane z informacjami adresowymi A16 - A19 i pojawiają się na magistrali A16 - A19 wówczas, gdy magistralą AD przesyłane są dane S3 - S4 - identyfikują segment bazowy, do którego odwołuje się procesor w bieżącym cyklu dostępu

Tab 7. Wartości sygnałów S3 i S4 określające adresowany segment

S4

S3

Segment

0

0

Dodatkowy - danych

0

1

Stosu

1

0

Programu

1

1

Danych

Wykład 4

Cykl wykonywania rozkazów

Każdy cykl transmisji danych na magistrali procesora 8086, zwany cyklem dostępu, składa się z czterech podstawowych taktów (okresów zegara)(patrz rys. 8):

Jeżeli zaadresowana pamięć lub urządzenia we/wy jest wolne i wymaga więcej czasu na wystawienie lub odbiór danej, to sygnał gotowości jest wycofywany REDY i wówczas między takt T3 i T4 będą wstawiane takty oczekiwania Tw. Ponieważ część rozkazów procesora8086 jest wykonywana w wielu taktach zegara, więc w tym czasie wewnętrzna kolejka procesora jest zapełniana kolejnymi rozkazami z pamięci programu.

Załóżmy, że wykonywany jest rozkaz 2-bitowy, gdzie po bajcie będącym kodem operacyjnym pobierany jest bajt trybu adresowania.

Niech MOD (patrz budowa rozkazu) wskazuje, że będzie to rozkaz bez bajtów przesunięcia

Niech REG dotyczy dowolnego rejestru

Niech grupa R/M określa rejestry BX + SI

Po dwóch cyklach pobrania rozkazu musi zostać wyliczony adres, co trwa w tym przypadku od 6 - 12 taktów. Zatem przez 2 lub 3 cykle maszynowe procesor nie korzysta z pamięci operacyjnej. Czas ten jest jednak wykorzystywany do odczytu kolejnych bajtów programu i układ BIU zapełnia 6-cio bajtową kolejkę.

Taki sposób pracy przyspiesza wykonanie programów, gdyż część wykonawcza procesora przetwarza rozkaz równocześnie z pobraniem kolejnych rozkazów z pamięci przez układ BIU. Rozkazy sterujące np. tMP opóźniają układ kolejki, który po wykonaniu skoku musi być ładowany nową sekwencją rozkazów.

System przerwań (patrz tab.3)

Przeniesieniami nazywamy zdarzenia przerywające normalny tryb pracy procesora (tj. wykonywanie bieżącego programu), wymagające specjalnej obsługi - wykonywanie programu obsługi przerwania. Źródłem przerwań mogą być elementy systemu zewnętrzne względem procesora jak np. sterownik bezpośredniego dostępu do pamięci DMA informujący o zakończeniu transmisji, układ odbierający znak z klawiatury, czy też układ wykrywający zanik napięcia zasilającego. Innym źródłem przerwań mogą być szczególne zdarzenia zachodzące wewnątrz procesora, takie jak odczyt kodu nieistniejącego rozkazu, czy próba dzielenia przez zero. Wykonywanie procedury obsługi przerwania może wynikać z treści programu - źródłem przerwania jest wówczas pracujący program.

Przerwania mogą pochodzić z następujących źródeł :

Przerwania programowe mają najwyższy priorytet, przerwania maskowalne - najniższy.

Mikroprocesor 8086 wyposażony jest w dwa wejścia żądania przerwania :

Przerwanie niemaskowalne charakteryzuje krótki czas potrzebny na przejście do procedury obsługi.

W przypadku przerwania maskowalnego jeżeli poziom zgłoszenia zmieni się (przed rozpoczęciem obsługi przerwania przez procesor) z powrotem na niski, to zgłoszenie zostanie zignorowane. Poziom wysoki musi trwać aż do momentu potwierdzenia przez procesor przyjęcia przerwania, bądź sygnałem INTA (w przypadku konfiguracji maksimum).

Po przyjęciu żądania przerwania INTR procesor wykonuje dwa cykle maszynowe, w których generuje sygnał INTA. Na czas wykonywania tych cykli procesor generuje sygnał LOCK celem uniemożliwienia przejęcia magistrali przez inne układy.

Pierwszy z tych cykli jest wykorzystywany do poinformowania sterownika przerwań (np.8259A) o gotowości do obsługi przerwania, a drugi cykl jest do przesłania magistralą AD0-AD7, który wysyła sterownik jako numer przerwania. Czas pierwszego cyklu przewidziany jest na dokonanie arbitrażu (jeżeli układów 8259A jest więcej).

Po przyjęciu przerwania procesor wykonuje następujące operacje :

W ten sposób następuje przejście do programu obsługi zgłoszonego przerwania. Program ten standardowo kończy rozkaz IRET (Interrupt Return). Wykonanie rozkazu IRET powoduje pobranie ze stosu zawartości rejestru CS,PC i rejestru znacznika.

Obsługa przerwań jest realzowana za pośrednictwem tablicy wektorów przerwań. W pamięci operacyjnej komputera zajmuje ona pierwszy 1kB (adresy od 00000h do 003FEh). Tablica ta składa się z 256 wektorów 4-bajtowych :

Indeksem 2-bajtowych elementów w tej tablicy jest numer przyjętego przerwania.

Procesor 8086 ma na stałe przypisane niektóre numery przerwań (elementy tablicy) określonym źródłem przerwań(tab.3).

Źródłem przerwania jest wykonanie rozkazu INT0, wtedy gdy wstawiany jest znacznik nadmiaru.

Rozkaz INT0 jest zwykle stosowany jako następnik operacji arytmetycznych. Dalsze 27 ektorów jest zarezerwowane. Pozostałe 224 wektory są dostępne dla systemu przerwań, który użytkownik może sobie sam zorganizować (patrz rys. Schemat blokowy komputera XT).

Elementy składowe architektury komputera.

Centralną częścią komputera jest procesor (CPU).

Wszystkie elementy składowe komputera kontaktują się z procesorem poprzez magistralę.

Wyróżniamy następujące magistrale :

  1. Magistralę lokalną - obejmuje ona 16-bitową magistralę danych i 20-bitową magistralę adresową (procesor 8086)

  2. Magistralę systemową - sprzężona jest ona z magistralą lokalną poprzez rejestry zatrzaskowe sterowane sygnałem ALE. 20 bitów adresu i 8 bitów systemowej magistrali danych wyprowadzane jest do gniazd rozszerzających. Magistrala systemowa dostarcza zestawu sygnałów sterujących takich jak : IOR, IOW, MEMR, IRV, DRQ, DACV itd.

  3. Magistralę X - do komunikacji z pamięcią ROM zawierającą systemy BIOS oraz portami układów na płycie głównej

  4. Magistralę pamięciową - łączy ona magistrale systemowe z obwodami pamięci dynamicznej poprzez układy adresowania wierszy i kolumn pamięci

  5. Magistralę zewnętrzną - stanowi ona wyprowadzenia 20-bitowej systemowej magistrali adresowej i 8-bitowej magistrali danych oraz większych sygnałów systemowej magistrali sterującej

Do poprawnej pracy komputera procesor 8086 wymaga dodatkowych układów peryferyjnych, umieszczonych na płycie głównej, jak i na kartach rozszerzających (sterowniki dysków, łącz szeregowych, równoległych itd.).

Mają one ściśle określone obszary adresowe w przestrzeni we/wy, w której widoczne są ich rejestry sterujące.

Układy peryferyjne to :

  1. Układ zegara systemowego (8284)

  2. Układ kontrolera magistrali (8288)

  3. Układ kontrolera bezpośredniego dostępu do pamięci DMA (8257)

  4. Układ kontrolera przerwań sprzętowych (8259A)

  5. Układ programowalnego interfejsu równoległego PIO (8255)

  6. Układ programowalnego interfejsu szeregowego SIO (8250)

  7. Układ programowalnego układu czasowego CTC (8253)

Ad.1.

Podstawową funkcją układu 8284 jest dostarczenie impulsów taktujących pracę mikroprocesora i synchronizacja niektórych sygnałów zewnętrznych RESET, Ready (patrz rys Zegar 8284A).

Układ może pracować w dwóch trybach wybieranych stanem logicznym na wejściu F/C :

F/C=0 - generacja sygnału przez kwarc, dołączy do wejść x1,x2

F/C=1 - generacja sygnału zegara z sygnału zewnętrznego podanego na wejście EFI (External Frequency Input)

Sygnał zewnętrzny jest stosowany w systemach wieloprocesorowych do synchronizacji pracy poszczególnych procesorów. Dzięki czemu można uniknąć opóźnień w dostępie do wspólnej magistrali.

W układzie są trzy wyjścia sygnałów zegarowych : OSC, CLK i PCLK.

OSC - na tym wyjściu przebieg jest zgodny z częstotliwością dołączonego kwarcu (sygnał ten może być użyty synchronizacji innych układów 8284)

CLK - sygnał z tego wyjścia (sygnał zegarowy) przeznaczony jest do taktowania procesora

PCLK - na tym wyjściu występuje sygnał o częstotliwości dwukrotnie mniejszej (CLK/2). Służy do sterowania pracujących w systen\mie układów liczników odmierzających czas (8253)

READY - służy do ewentualnego wydłużenia cyklu maszynowego przez współpracujące z procesorem bloki funkcjonalne. Generowanie sygnału potwierdzającego operacje wiąże się z koniecznością multipleksowania wielu sygnałów pochodzących z różnych ( źródeł ) bloków funkcjonalnych systemu. Przewidziano cztery wejścia umożliwiające multipleksowanie sygnałów pochodzących z różnych źródeł:

RDY, AEN1 -pierwsze źródło

RDY, AEN2 -drugie źródło

W zależności od polaryzacji sygnału potwierdzającego można użyć wejść RDY (aktywne dla 1 ) lub AEN ( aktywne przy 0). Jeżeli do zgłoszenia potwierdzenia operacji jest wykorzystywane wejście RDY, to odpowiadające mu wejście AEN powinno mieć stan 0. Gdy potwierdzenie podawane na wejście AEN, to na wejście RDY należy wymusić poziom wysoki:

W nowej generacji zegara ( 8284 ) jest dodatkowe wejście ASYNC, które umożliwia przesuwanie w pełni asynchronicznego zgłoszenia na wejściach RDY.

Ad 2

Układ 8288 ( rys. 3 ) spełnia rolę pośrednika między samym procesorem, a systemową magistralą sterującą. Jest wykorzystywany w systemach, w których procesor 8086 pracuje w trybie maksymalnym ( MN-MX jest dołączony do masy ). Jego głównym zadaniem jest zamiana sygnałów statusu SO, S1, S2 ( TAB1 ) na sygnały składowe magistrali sterującej tj. IOWC, IORC, MWTC, MRDC, INTA oraz statusu procesora. Steruje on również pracą rejestrów zatrzaskowych buforów magistrali adresowej i danych. Sterowanie tego rodzaju rejestrów jest niezbędne, bowiem dane i adresy muszą być utrzymywane na magistrali tak długo, jak długo jest to potrzebne dla prawidłowego zakończenia operacji transmisji danych lub adresów. W przeciwnym przypadku mogłoby się zdarzyć, że wystawione przez pamięć lub układy WE/WY na magistralę danych słowa zniknęłoby z niej , zanim procesor zdążyłby ją przejąć. To samo obowiązuje przy operacji wysyłania danych przez procesor.

Wejścia sygnałów sterujących.

Układ 8288 może pracować w dwóch trybach wybieranych przez stan logiczny podany na wejście IOB

  1. wymusza pracę w trybie sterownika magistrali lokalnej dla sygnałów strobujących operację WE/WY, dopuszczając równocześnie wykorzystanie sygnałów strobujących odwołania do pamięci dla magistrali wieloprocesowej.

  1. wymusza pracę w trybie, w którym sygnały strobujące operację WE/WY i odwołania do pamięci sterują tą samą magistralą.

Stosując pojedynczy układ 8288 można więc wydzielić dwie przestrzenie adresowe, do których odwołuje się współpracujący procesor. CLK -wejście oprowadzające sygnał zegara systemowego z układu 8284. Do sterowania generacją sygnałów strobujących są dwa wejścia:

AEN- ( Adres Enable ) jest wykorzystywane przy dołączeniu układu do magistrali wieloprocesowej lub przy współpracy z układem DMA.

Jeżeli na wejściu :

  1. to wyjścia sygnałów strobujących przejdą w stan wysokiej impedancji. Umożliwia to przejęcie sterowania magistrali przez inny układ.

  1. powoduje uaktywnienie wyjść sterujących magistralami.

CEN - jest wykorzystywane do blokowania generacji systemów strobujących. Powoduje ono wymuszenie ( stanem niskim na wejściu ) na wyjściach sygnałów strobujących poziomu nieaktywnego ( wejścia sterujące oraz wyjścia DEN i PDEN ). Wejście to jest wykorzystywane gdy układ steruje pracą magistrali lokalnej ( sterowanie linii kontrolnych magistrali lokalnej poziomem nieaktywnym zwiększa odporność systemu na zakłócenia zewnętrzne w porównaniu z sytuacją, w której linie te znajdowałyby się w stanie wysokiej impedancji ).

Wyjścia sterowania buforów i układów przerwań :

AT/R - (Auto Transmit / Reveive ) informuje o pracy magistrali:

  1. zapis z procesora;

  1. odczyt przez procesor

DEN - ( Data Enable ) : 0- jest sygnałem dla rejestru zatrzaskowego bufora magistrali danych, powodującym „zamrożenie” w nim aktualnego stanu tej magistrali.

ALE - (Adres Latch Enable ) : 0- jest sygnałem dla rejestru zatrzaskowego bufora magistrali danych powodującym „zamrożenie” aktualnego stanu magistrali.

MCE/PDEN (Master Cascade / Pheripherial Data Enable ) w zależności od stanu wejścia IOB ( MB ), wyjście to służy do obsługi priorytetu przerwań lub komunikacji z urządzeniami WE/WY ( WXT nie jest wykorzystywane )

Wyjścia strobujące komend :

MRDS - ( Memory Read ) ustala kierunek przesyłania danych: 0 - przesyłanie z pamięci do procesora

AMWC- (Advanced Memory Write ) sygnał na tym wyjściu uprzedza układy o mającej nastąpić operacji zapisu

MWTC - (Memory Write ) ustala kierunek przesyłania danych:

  1. kierunek przesyłania od procesora do pamięci

IOWC- (Input/Output Write ) ustala kierunek przesyłania danych

  1. kierunek przesyłania od procesora do układów WE/WY

AIOWC- ( Advanced I/O Write Command ) sygnał na tym wyjściu uprzedza układy o mającej nastąpić operacji zapisu

IORC - ( I/O Read ) ustala kierunek przesyłania danych :

0-kierunek przesyłania z układów WE/WY do procesora

INTA - sygnał potwierdzenia przyjęcia przerwania sprzętowego przez procesor

Strona 28 - pusta

Wykład 5

Ad. 3

Kontroler DMA (Direct Memory Acces ) 8257A

Kontoler ten ( 8257A ) umożliwia bezposredni dostęp do pamięci urządzeń peryferyjnych (we/wy ) np. kontroler napędu dysków elastycznych, kontroler dysków twardych lub inne urządzenia.

Układ ten może obsługiwać cztery strumienie ( kanały ). Możliwe jest też kaskadowe łączenie kontrolerów. Takie rozwiązanie stosowane jest w komputerach AT i udostępnia 7 kanałów DMA .

Po otrzymaniu żądania bezpośredniego dostępu do pamięci od urządzenia zewnętrznego, kontroler wykonuje następujące czynności :

- przejmuje kontrolę nad magistralą systemową

- potwierdza żądanie dostępu do pamięci przez to urządzenie, które ma największy priorytet

- generuje potrzebny adres i sygnały sterujące dla pamięci i urządzenia zewnętrznego, umożliwiające wymianę słowa pomiędzy zaadresowaną komórką pamięci, a urządzeniami zewnętrznymi, czynność ta , zwana cyklem DMA jest powtarzana dotąd dopóki urządzenie zewnętrzne podtrzymuje żądanie bezpośredniego dostępu do pamięci

- po zmianie żądanej ilości słów sygnalizuje zakończenia cyklu.

Rys. 5 pokazuje uproszczony schemat 8257A

Kanały DMA

Układ zawiera cztery kanały oznaczone symbolami CH0- CH3.

Każdy kanał zawiera dwa 16- bitowe rejestry : - rejestr adresu

- rejestr liczby słów

Rejestry te wymagają ładowania przed rozpoczęciem pracy układu, przy czym :

- Rejestr adresu jest ładowany adresem pierwszej komórki pamięci, z którą zostanie przeprowadzona wymiana danych.

- Czternaście mniej znaczących bitów rejestru liczby słów jest ładowanych zmniejszaną o jeden liczbą czyli DMA , po wykonaniu których element zasygnalizuje sygnałem TC=1 zakończenie wymiany

Jeżeli więc chcemy wymienić N- słów, należy rejestr liczby słów załadować do liczby N-1.

- Dwa najbardziej znaczące bity rejestru liczby słów określają rodzaj wykonanej operacji (tab. 2)

Możliwe są następujące operacje :

-DMA READ - przesłanie danych x pamięci do urządzenia zewnętrznego;

-DMA WRITE - przesłanie danych z urządzenia zewnętrznego do pamięci.

-DMA VERIFY - weryfikowanie danych już przesłanych np. na drodze kontroli parzystości. Urządzenie zewnętrzne wykorzystuje do tego celu sygnały potwierdzające DACK generowane przez układ DMA ( aczkolwiek nie zachodzi wtedy wymiana danych )

Każdy kanał DMA ma :

Wejście :

DRQ-( DMA Request )

DRQ=1-jest żądaniem bezpośredniego dostępu do pamięci, wysłanym przez odpowiednie urządzenie zewnętrzne

Sygnał ten zostaje wyzerowany:

- z chwilą generacji przez układ DMA potwierdzenia DACK, co występuje przy wymianie typu bajt za bajtem;

- po zakończeniu wymiany całego bloku danych, co ma zastosowanie przy wymianie blokowej (Burst Mode)

Wyjście :

DACK-(DMA Acnowledge) :

DACK=0 informuje urządzenie zewnętrzne, że udostępniono mu magistralę danych do wykonania przesłania jednego słowa.

Rejestr buforowy danych.

Jest to dwukierunkowy trójstanowy rejestr buforowy o komórkach D0=D7 i służy do :

-programowania układu DMA (tzn. do przekazywania zawartości rejestru, adresu, liczby słów i słowa sterującego )

- odczytywanie przez procesor zawartości rejestru adresu, rejestru liczby słów i rejestru statusowego

- wyprowadzenia na początku cyklu DMA najbardziej znaczącego bajtu adresu.

Rejestr buforowy danych nie służy nigdy do przekazywania danych pomiędzy pamięcią a urządzeniami zewnętrznymi, do tego celu służy magistrala systemowa.

Ad. 4

Programowalny sterownik przerwań 8259- PIC

Układ ten ( rys. 6 ) jest przeznaczony do :

    1. Przeprowadzenia arbitrażu pomiędzy zgłoszeniami przerwań z ośmiu różnych źródeł;

    2. Maskowanie wybranych zgłoszeń przerwań

    3. Generacja żądania przerwania dla systemu mikroprocesorowego

    4. Przekazywanie procesorowi rozkazu CHU do programu obsługi dla niemaskowalnego zgłoszenia przerwania o największym priorytecie.

Programowalność umożliwia sterownikowi przeprowadzenie arbitrażu według szeregu różnych zasad, zależnie od potrzeb użytkownika.

Zasady arbitrażu mogą być zmieniane programowo na bieżąco, w dowolnym miejscu realizowanego programu.

Układ zawiera osiem programowalnych sterowników przerwań.

Może przeprowadzić arbitraż i przekazywać rozkazy skoku do programu obsługi przerwań dla sześćdziesięciu czterech różnych źródeł przerwań ( rys. 7 - przedstawia schemat blokowy układu PIC 8259 )

W układzie tym można wyróżnić : trzy rejestry :

1.IRR- (Interrupt Request Register) - rejestr zgłoszeń przerwań.

W rejestrze tym są zapamiętywane wszystkie zgłoszenia przerwań (IRO-IR7) generowane przez urządzenia zewnętrzne.

2.ISR - (Interrupt Service Register) rejestr przerwań obsługiwanych.

W tym rejestrze znajdują się wszystkie zgłoszenia przerwań, które są obsługiwane

3.IMR - (Interrupt Mask Register) rejestr maskowania przerwań.

W rejestrze tym są ustawione bity odpowiadające tym zgłoszeniom przerwań, które powinny zostać zablokowane ( tab. 3 ).

7

6

5

4

3

2

1

0

1

0

1

1

0

0

1

0

Tab. 3 ( 1- zablokowana linia zgłoszeń przerwania )

Maksymalne zgłoszenia przerwania o wyższym priorytecie nie wpływa na obsługę przerwań o niższym priorytecie.

Inne ważne bloki układu to:

Arbiter priorytetu - określa on priorytety zgłoszeń przerwań na podstawie przekazanych do układu słów sterujących. Zgłoszenie o najwyższym priorytecie jest wprowadzone do rejestru przerwań obsługiwanych w chwili gdy INTA = 0.

Rejestr buforowy danych - jest to dwukierunkowy rejestr służący do sprzęgnięcia układu 8259 z magistralą danych(D0....D7)w celu wpisywania do niego słów sterujących i odczytu słów statusowych.

Układ czytania / pisania - steruje wpisywaniem danych w trakcie programowania rejestrów układu oraz odczytywania zawartości rejestrów w trakcie ich testowania.

Układ ten ma następujące wejścia:

CS(Chip Select) - wybieranie układu. CS = 0 - wybiera układ do celów programowania lub czytania zawartości jego rejestrów przez procesor.

WR(Write) - wpisywanie. WR = 0 - umożliwia procesorowi odczytanie zawartości rejestru zgłoszeń przerwań, rejestru przerwań obsługiwanych, rejestru maskowania przerwań oraz odczytywanie kodu BCD zgłoszenia przerwania o najwyższym priorytecie;

A0 - jest zwykle sprzęgane z jedną***************************

Kaskadowy bufor / komparator - jest stosowany w przypadku kaskadowego połączenia wielu układów 8259 do obsługi więcej niż 8 liczby zgłoszeń przerwań. Jeden z układów jest zawsze nadrzędny (master) a pozostałe są układami podrzędnymi (slave).

Posiada on następujące wyprowadzenia:

CAS0 ... CAS2 (Cascade Lines) są one wyjściami jeżeli układ jest nadrzędny, a wejściami jeżeli jest podrzędny. Jako element nadrzędny wyprowadza on bity (trzy) elementu podporządkowanego zgłaszającego przerwanie na wyjścia CAS0 ...CAS2 wszystkich elementów podporządkowanych. Ten spośród elementów podporządkowanych, który rozpozna swoje bity identyfikacyjne, wysyła w odpowiedzi rozkaz skoku do podprogramu obsługi przerwania.

SP (Slave Program ) - wejście:

SP = 1 - układ jest nadrzędny

SP = 0 - układ jest podporządkowany

Współpraca z procesorem:

  1. Na jednym lub kilku wejściach IR0 - IR7 pojawiają się zgłoszenia przerwania (IR = 0

w wyniku czego zostają ustawione odpowiednie bity rejestru zgłoszeń przerwań)

2. W odpowiedzi układ 8259 dokonuje arbitrażu priorytetów zgłoszeń i przesyła procesorowi sygnał INT = 1.

3. Procesor potwierdza otrzymanie tego sygnału za pomocą sygnału INTAΦ.

4. Po otrzymaniu sygnału INTA = Φ układ 8259 wstawi bit rejestru przerwań obsługiwanych dla zgłoszenia o najwyższym priorytecie zerując odpowiadający mu bit w rejestrze zgłoszeń przerwań. Następnie układ 8259 wprowadza na magistralę danych kod operacyjny (pierwszy bajt) rozkazu (CALL) skoku do programu obsługi przerwania dla zgłoszenia o najwyższym priorytecie.

5. W odpowiedzi na kod operacyjny CALL system procesora generuje odpowiednio dwa sygnały INTA = Φ.Każdy z tych sygnałów sprawia , że układ wprowadza na magistralę danych kolejne bajty zaprogramowanego adresu programu obsługi przerwania:

6. Procesor rozpoczyna wykonanie programu obsługi przerwania. Ustawiony bit rejestru przerwań obsługiwanych zostaje wyzerowany dopiero po zakończeniu przez procesor w słowie OCW2 odpowiednio ustawionego bitu EOI (End of Interrupt).

7. Jeżeli w trakcie przerwania o niższym priorytecie pojawi się zgłoszenie przerwania o wyższym priorytecie, program obsługi przerwania o niższym priorytecie zostanie przerwany. Arbitraż priorytetów wykracza poza fazę wyboru żądania przerwania o najwyższym priorytecie, obejmuje również cały czas realizacji dowolnego programu obsługi żądania przerwania.

Ad. 5.

Układ równoległego interfejsu programowalnego (PIO) 8255:

Jest to układ WE/WY (rys 9b) umożliwiający równoległe dwukierunkowe przesyłanie danych w trzech trybach. Układ ten zawiera trzy 8-bitowe rejestry WE/WY A,B i C (zwane bramami - portami),bufor magistrali danych, rejestr sterujący (rys 9a)

Każda z wymienionych bram może mieć różne właściwości w zależności od trybu pracy (rys10). Wyboru trybu pracy dokonuje się poprzez programowanie tzn. przez wprowadzenie odpowiedniego słowa sterującego do rejestru sterującego (format słowa sterującego i sposób programowania poszczególnych trybów pokazuje tablica 4).

Od strony procesora układ 8255 ma 8 wyprowadzeń dwukierunkowej buforowej, trójstanowej magistrali danych. Wymiana danych między procesorem, a tym buforem albo na drodze realizacji rozkazów WE/WY, albo na drodze realizacji czytania pamięci i pisania do pamięci. Wówczas przyporządkowuje się układowi cztery komórki przestrzeni adresowej - trzy dla bram(A,BiC), czwarta dla rejestru sterującego. Sposób sterowania układu 8255 przedstawia tab 11.2.

Widać, że uaktywnienie układu dokonuje się za pomocą trzech sygnałów

CS - CS = 0 - wybór układu (sygnał podstawowy)

CS = 1 - układ jest odłączony od magistrali danych

A0 i A1 - umożliwiają adresowanie jednej z trzech bram A,B,C lub rejestru sterującego. Przy adresowaniu rejestru sterującego jest możliwe tylko wpisywanie do niego słowa, natomiast nie jest możliwe odczytywanie.

Inne sygnały to:

RD = 0 ten sygnał, umożliwia czytanie zawartości zaadresowanej bramy.

WR = 0 umożliwia wpisywanie z magistrali danych na zaadresowaną bramę lub do rejestru

sterowania.

RESET zeruje wszystkie rejestry, czyli umożliwia ustawienie układu w stan początkowy, w którym wszystkie rejestry WE/WY układu są układami wejściowymi.

Charakterystyki trybu pracy układu 8255

MODΦ - jest przeznaczony do realizacji bezwarunkowej WE/WY. Pracujący w tym trybie układ ma :

lub wyjściowe

MOD1 - przeznaczony jest do realizacji WE/WY z przerwaniem przy jednym kierunku przesyłania danych. Potrzebne do tego celu sygnały żądania przerwania, strobu i trybu są wyprowadzane lub wprowadzane z wykorzystaniem linii bramy C.

Pracujący w tym trybie układ ma :

Przeznaczenie tych linii bramy C, które służą do przekazywania sygnałów sterujących pokazuje rys 11.

MOD2 - jest przeznaczony do realizacji operacji WE/WY z przerwaniem poprzez (TYLKO)

bramę A, przy dwóch kierunkach przesyłania danych z elementem zewnętrznym za pomocą jednej 8- bitowej dwukierunkowej magistrali danych. Potrzebne do tego celu sygnały żądania przerwania, statusu strobu są również wyprowadzane przez bramę C.

Pracując w tym trybie układ ma :

Rys 12 wyjaśnia przeznaczenie linii bramy C, które służą do przekazywania sygnałów sterujących.

Zarówno przy pracy w trybie 1 jak i w 2, poszczególne bity bramy C mogą być ustawione lub zerowane na drodze przesyłu do rejestru sterowania układu 8255 słowa sterującego o odpowiedniej budowie (rys 13 ).

Z możliwości tej korzysta się w celu programowego blokowania i odblokowywania żądań przerwań pracy w trybie 1 lub 2, ustawiając lub zerując odpowiednie przerzutniki maskujące INTE.

W tab 4 zestawiono wszystkie możliwe sposoby pracy układu 8255.Możliwośc programowania sprawia, że układ 8255 może być stosowany do sprzęgania z procesorem bardzo dużej liczby różnych układów zewnętrznych.

WYKŁAD 6

Układ szeregowego intrfejsu programowalnego 8250;

Jest to układ (rys 14) przetwarzający dane z postaci szeregowej na równoległą (dla przychodzących) i z równoległej na szeregową (dla wychodzących)Układ określa się ogólną nazwą UART (Uniwersal Asynchronous Reciver -Transmiter)

Skomplikowana struktura tego układu ma szerokie możliwości programowej adaptacji:

Wewnątrz sterownika można wyróżnić 6 zasadniczych bloków funkcjonalnych (rys 15).

Są to:

Wszystkie bloki posiadają rejestry służące do zapisywania (definiowania trybu pracy

danego bloku) i do odczytu jego stanu. Wszystkie rejestry dołączone są do wewnętrznej magistrali danych. Procesor uzyskuje dostęp do tej magistrali za pośrednictwem trójstanowego bufora danych, wówczas gdy układ zostanie wybrany.

Przeznaczenie poszczególnych wyprowadzeń :

DΦ...D7 - 8- bitowa, dwukierunkowa, trójstanowa magistrala danych, służąca do

przekazywania danych, rozkazów i bajtów statusowych pomiędzy procesorem a

układem.

RCLK (Receiver Clock) - wejście sygnału synchronizującego, tor odbiorczy o częstotliwości

16 razy większej od zadanej prędkości transmisji.

SIN (Serial Input) - wejście toru odbiorczego

SOUT (Serial Output ) - wyjście toru nadawczego

CSΦ...CS2(Chip Solect)- wyjście sygnału wyboru elementu (CSΦ = 1, CS1 = 1, CS2 = 0 oznacza wybranie układu)

BAUDOUT - wyjście sygnału synchronizującego tor nadawczy o częstotliwości 16 razy większej od zadanej prędkości transmisji. Jeżeli połączymy wyjście BAUDOUT z wejściem RCLK to nadajnik i odbiornik pracują z tą samą prędkością.

DISTR (Data In Strobe ) - wejściowy sygnał sterujący, umożliwiający w stanie aktywnym (DISTR =1 lub ~DISTR=0) odczyt wewnętrznych rejestrów.

DOSTR (Data Out Strobe) - wejściowy sygnał strobujący, umożliwiający w stanie aktywnym (DOSTR=1 lub ~DOSTR=0) zapis rejestrów wewnętrznych.

DDIS (Driver Disable) - na wyjściu tym stan równy 0 sygnalizuje, że trwa odczyt rejestrów wewnętrznych.

CSOUT (Chip Select Out) - jest aktywne, jeżeli procesor wybrał układ liniami CS0, CS1, CS2.

ADS (Adres Strobe) - na wyjściu stan równy 0 sygnalizuje, że adres na liniach A0...A2 jest ustawiony i może być dekodowany przez układ.

A0, A1, A2 - linie adresujące rejestry wewnętrzne umożliwiające dostęp do nich procesorowi (stany na tych liniach decydują o wyborze rejestru do odczytu lub zapisu). Można zaadresować 8 rejestrów (w rzeczywistości więcej, bo rolę czwartej linii adresowej pełni siódmy bit rejestru parametrów transmisji DLAB).

INTRPT (Interrupt) - stan 1 na tym wyjściu sygnalizuje spełnienie warunków wywołania przerwań.

OUT1, OUT2 - wyjścia, które mogą być swobodnie programowane, OUT2 steruje kluczem blokującym przerwania pochodzące od układu 8250.

RTS (Request To Send) - wyjście sterujące stanem linii, stan 0 oznacza żądanie przesłania danych bitowo - szeregowych.

DTR (Data Terminal Ready) wyjście sterujące stanem linii, stan=0 oznacza gotowość układu 8250.

MR (Master Reset) - wejście uaktywniające, podanie sygnału równego 1 na to wejście powoduje inicjalizację wszystkich rejestrów wewnętrznych układu, z wyjątkiem buforów nadajnika, odbiornika i rejestru podzielnika.

CTS (Clear To Send) - wyjście odpowiadające stanowi linii DSR, stan=0 na tym wejściu oznacza gotowość układu zewnętrznego np. modemu.

RLSD (Received Line Sygnal Defect) wejście odpowiadające stanowi linii DCD, stan=0 - aktywny poziom sygnału odbieranego.

RI (Ring Indicator) - wyjście odpowiadające stanowi linii RI, 0 - wskaźnik wywołania..

XTAL1, XTAL2 - końcówki do przyłączenia rezonatora kwarcowego, a do XTAL2 można przyłączyć zewnętrzny sygnał synchronizujący. Szeregowy strumień danych na wejściu SIN podlega rozłożeniu na bity: danych, startu, stopu i ewentualnie parzystości. Przesyłane dane w formie szeregowej otrzymują (przed wysłaniem) pewien rodzaj „opakowania” tzw. ramki. Właśnie ramka a nie bit jest najmniejszą porcją przekazywaną jednorazowo przez łącze informacji(rys.16).

Rys.16

cisza

start

7

lub

8 bit

ów

pole

dan

ych

Bit p

bit

stop

cisza

Czynność wydzielenia z ramki poszczególnych bitów realizuje specjalny rejestr przesuwny. Dla użytkownika istotne jest wydzielenie bajtu danych i złożenie w rejestrze buforowym odbiornika, skąd może być pobrany przez mikroprocesor. Po stronie nadawczej pracuje podobny rejestr przesuwny, pobierający dane równoległe z rejestru buforowego nadajnika. Dane do tego bufora dostarczane są przez procesor. Układ dodaje (stosowanie do formatu) bity startu, stopu i parzystości, po czym całość jest ekspediowana zgodnie z ustaloną prędkością transmisji do wyjścia SOUT ( po wywołaniu ramki wyjście przyjmuje stan wysoki). Układ ten posiada rozbudowany mechanizm przerwań sprzętowych. Kontroluje zmiany poziomów na liniach sterujących, stan rejestrów buforowanych nadajnika i odbiornika, stan linii danych i jakość połączenia z korespondentem. Zależnie od zaprojektowania maski rejestru przerwań zaistnienie określonej sytuacji wywołuje przerwanie sprzętowe (na wyjściu INTRPT pojawia się impuls dodatni)

Ad.7

Układ interwałów czasowych 8253.

Komputery PC zawierają programowany generator interwałów czasowych 8253 lub 8254 (rys.17). jest on przeznaczony do generacji periodycznych żądań przerwań (może służyć jako tzw. „zegar czasu rzeczywistego” ), do generacji żądań przerwań po upływie określonej liczby impulsów, do generacji ciągów impulsów o różnych częstotliwościach. Np.: czas wykonywania pewnych fragmentów programu musi być niezależny od obecnego w danym systemie procesora i szybkości jego taktowania. Wiele programów, w tym gry, wymagają wbudowanych opóźnień lub kontroli upływu czasu rzeczywistego.

Rys. 18 przedstawia uproszczony schemat blokowy układu 8253.

D0 - D7 (Data) - 8-bitowa (trójstanowa) dwukierunkowa magistrala danych

A0 - A1(Address) - wejścia adresujące jeden z liczników (generatorów) 0, 1, 2 lub rejestr stanu układu (możliwość programowania układu pokazuje tab.5)

A0

A1

Adresowany rejestr

0

0

Licznik CE0

1

0

Licznik CE1

0

1

Licznik CE2

1

1

Rejestr stanu

CLK0 - CLK2 (Clock) - wejścia sygnałów zliczanych przez licznik 0, 1, 2,]

GATE0 - GATE2 (gate) wejścia sygnałów aktywujących (bramkujących) sterowane zliczaniem

RD (Read) - na tym wejściu procesor wymusza niski poziom chcąc odczytywać dane z wewnętrznych rejestrów.

WR (Write) - na tym wejściu procesor wymusza niski poziom chcąc zapisać dane do rejestrów wewnętrznych

CS (chip select) - wejście wyboru elementów (niski poziom wybiera układ),

OUT0 - OUT2 (output) - wyjścia liczników (generatorów).

Rejestr buforowy danych służy do:

Wszystkie możliwości sterowania za pomocą pamięci sygnałów sterujących przedstawia tabela 6.

Układ 8253 ma trzy 16 - bitowe liczniki odejmujące, których zawartości początkowe można ustawić. Każdy licznik może być indywidualnie zaprogramowany do liczenia w kodzie binarnym prostym lub w kodzie BCD. Zliczaniu podlegają opadające zbocza sygnałów wprowadzanych na wejścia CLK. Sygnały te mogą być zarówno sygnałami wyjściowymi generatora impulsów (licznik pracuje wtedy jako zegar odmierzający żądane przedziały czasu) jak i od sygnałów generowanych operiodycznie przez łatwe elementy zewnętrzne jak przyciski lub czujniki położenia (licznik pracuje wtedy jako licznik zdarzeń).

Zliczaniem impulsów można sterować za pomocą sygnału wejściowego GATE ( 1-zlicza).

Sposób generowania sygnału wyjściowego out każdego z liczników jest również programowany zgodnie z jednym z sześciu modułów (trybów). Tylko dwa z nich znajdują zastosowanie w Pe. Programowanie jest wykonywane na drodze wprowadzania do układu 8253 słowa sterującego. Format tego słowa przedstawia rys.19

MOD0 - żądanie przerwania po wyzerowaniu licznika. Po zaprogramowaniu trybu OUT=0. Po załadowaniu wybranego licznika pozostaje OUT=0, do chwili wyzerowania licznika sprawia, że OUT=1 jest do chwili ponownego załadowania licznika.

MOD1 - pojedynczy impuls o programowanej długości. Impuls następujący za zboczem narastającym (GATE ) sprawia, że OUT=0. wyzerowanie licznika sprawia, że OUT=1. zerowy impuls wyjściowy może być wydłużony przez następne zbocze narastające na wejściu CATE. Po każdym takim zboczu OUT=0 dla całkowitej liczby impulsów wprowadzonej do licznika.

MOD2 - dzielnik impulsów. OUT=1 dla jednego okresu sygnału CLK, przy czym między kolejnymi impulsami OUT=0 musi znajdować się u impulsów CLK, gdzie jest zawartością początkową licznika.

MOD3 - generator impulsów. MOD3 jest podobny do MOD2 z tą różnicą, że OUT=1 jest po chwili zmniejszenia początkowej zawartości licznika do połowy, lub w przypadku nieparzystej zawartości początkowej do wartości (n-1)/2

MOD4 - programowo generowany pojedynczy impuls jednostkowy. Po zaprogramowaniu modu OUT=1. po załadowaniu licznika rozpoczyna się zmniejszanie jego zawartości. Wyzerowanie licznika generuje pojedynczy impuls OUT=0.

MOD5 - sygnałowo generowany pojedynczy impuls jednostkowy. W odróżnieniu od MOD4 zmniejszenie zawartości licznika odbywa się po narastającym zboczu sygnału GATE. Wyzerowanie licznika generuje pojedynczy impuls jednostkowy OUT=0. Chwila pojawienia się tego impulsu może być oddalona przez następne zbocza narastające GATE. Po każdym takim zboczu OUT=1 dla całkowitej liczby impulsów wprowadzonej do licznika.

Po wpisaniu słowa sterującego wybranego licznika należy wpisać jeden lub dwa bajty jego zawartości początkowej. Wpisywanie to musi się odbywać zgodnie z deklaracjami przedstawionymi przez bity RL1 i RL0 słowa sterującego. Załadowanie licznika bajtami zerowymi sprawi, że będzie on zliczał impulsy od ponownego wyzerowania a więc do 216 impulsów w przypadku kodu binarnego prostego lub do 104 dla kodu BCD.

Odczyt stanów liczników może być wykonany na dwa sposoby:

  1. z uprzednim wstrzymaniem zliczania impulsów na czas odczytu za pomocą sygnałów GATE.

Wykorzystuje się w tym celu sygnału I/OR, przy czym:

  1. bez wstrzymania zliczania impulsów na czas odczytu. W tym celu należy zawartość licznika przed jej odczytaniem wprowadzić do odpowiedniego rejestru zatrzaskowego, co zapewnia bezbłędny odczyt. Dokonuje się to automatycznie, jeżeli tylko w słowie sterującym tego zażądamy na drodze odpowiedniego wyboru bitu RL0 iRL1. Należy zawsze wykonać wszystkie zaprogramowane w słowie sterującym operacje czytania przed przystąpieniem do zmiany zawartości początkowej licznika.

WYKŁAD 7

KOPROCESORY ARYTMETYCZNE

    1. Wstęp.

Koprocesor arytmetyczny jest układem, który przyspiesza wykonywanie obliczeń arytmetycznych. Wspomaga procesor centralny, którym może być mikroprocesor 8086, 80286, 80386. Koprocesor 8087, mimo że wyposażony jest w zestaw rejestrów dostępnych programowo, oraz realizuje zestaw rozkazów, nie jest zdolny do samodzielnego wykonywania programu. Jest on jedynie rozszerzeniem procesora centralnego. W połączeniu z układem 8086 tworzy jeden procesor, którego lista rozkazów oraz lista rejestrów są złożeniem list rozkazów został podkreślony w nazwie -koprocesor. Tak więc dołączenie układu 8087 do układu 8086 daje procesor dwuukładowy, który z punktu widzenia programisty powinien być uważany za całość, gdyż program dla takiego procesora zawiera ustawione w dowolnym porządku rozkazy realizowane bądź przez 8086, bądź przez 8087. Jednak podział procesora na dwa układy jest widziany przez programistę z dwóch przyczyn: