WYKŁAD 2. Mikrokomputer powstaje przez przyłączenie do mikroprocesora pamięci oraz jednostek sterujących urządzeniami wejściawyjś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: pobranie rozkazów z pamięci, pobranie danych z pamięci lub urządzenia wejściowego, wykonanie operacji arytmetyczno-logicznych lub sterujących określonych przez rozkaz, zapis wyniku w pamięci lub przesłanie go do urządzenia wyjściowego. Aby wykonanie tych funkcji było możliwe każdy mikroprocesor musi zawierać co najmniej następujące bloki funkcjonalne: jednostkę arytmetyczno-logiczną ALU, akumulator ACC, licznik rozkazów (programar counter PC), licznik danych (data counter DC), licznik rozkazów (instructor register IR), licznik sterowania (control unit CU). Wewnętrzna struktura większości mikroprocesorów charakteryzuje się następującymi cechami: wymiana informacji między blokami funkcjonalnymi mikroprocesora odbywa się za pomocą magistrali wewnętrznej, sterowanie wymianą informacji między blokami funkcjonalnymi odbywa się metodą mikroprogramową (układ sterowania zawiera z reguły pamięć mikroprogramów realizujących rozkazy programu), mikroprocesor podobnie jak każda jednostka centralna pracuje w sposób sekwencyjny. 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: zespołu wykonawczego jednostki wykonawczej (execution unit EU), zespołu łącza z magistralą systemową jednostką interfejsu (Bus Interface Unit BIU).
Zespół wykonawczy EU składa się z: bloku arytmetyczno-logicznego ALU, rejestru znaczników (flag register FR), bloku rejestrów ogólnego przeznaczenia (general register GR), rejestru indeksowego (indexing register IR), bloku sterowania (control system CS). 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: dwa rejestry wskaźnikowe: 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. dwa rejestry indeksowe: 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). rejestr indeksowy IP stosowany przy adresowaniu indeksowym. 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 15 Adres efektywny Adres offsetu 15 Rejestr segmentowy 0000 Adres segmentowy Sumator 19 0 Rejestr adresu pamięci 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: - dla segmentu kodu programu CS jest nim licznik rozkazów IP - dla segmentu stosu SS wskaźnik stosu SP - dla segmentu danych DS. jest to wartość wynikająca z trybu adresowania wyliczona przez zespół EU na podstawie kodu rozkazu i zawartości odpowiednich rejestrów EU. 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: - pozwala na dowolne umieszczenie kodu i danych przogramu w pamięci fizycznej (realizacja) - umożliwia odseparowanie przestrzeni adresowych programu, danych i stosu - ustawia gospodarkę zasobami pamięci fizycznej przy pracy wieloprogramowej. Ma też wady: - długość modułu programowego nie może przekroczyć 64 kb - realizowanie struktur danych o rozmiarach przekraczających 64 kb jest bardzo skomplikowane - czas dostępu do pamięci wydłuża się o okres potrzebny na zsumowanie zawartości rejestru segmentów z adresem efektywnym. 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 BX+DI+przes. 16. 8 bit. bit. 010. BP+SI BP+SI+przes BP+SI+przes. 16. 8 bit. bit. 011. BP+DI BP+DI+przes BP+DI+przes. 16. 8 bit. bit. 100. SI SI+przes. 8 SI+przes. 16 bit. bit. 101. DI DI+przes. 8 DI+przes. 16 bit. bit. 110. 2 BP+przes. 8 BP+przes. 16 bit bajt.przes bit 111. BX BX+przes. 8 BX+przes. 16 bit. 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): - pierwszy takt jest przeznaczony do wystawienia adresu pamięci lub urządzenia zewnętrznego na magistralę - drugi takt jest przeznaczony na przełączenie magistrali (po ukazaniu się adresu multipleksowana magistrala AD musi zostać przełączona do stanu, w którym będzie po niej przesyłana dana) - trzeci i czwarty takt służy do przesyłania danych 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ł : - z układów zewnętrznych : przerwania maskowalne INTR (Interrupt Request), przerwania niemaskowalne NMI (Non Maskable Interrupt) - będące wynikiem zrealizowania operacji przerwania programowe Przerwania programowe mają najwyższy priorytet, przerwania maskowalne najniższy. Mikroprocesor 8086 wyposażony jest w dwa wejścia żądania przerwania : - jedno do przerwania maskowalnego INTR. Przyjęcie zgłoszenia z liniiintr zależy od ustawienia wskaźnika I w rejestrze flag. Zgłaszane jest wysokim poziomem. - drugie dla przerwania niemaskowalnego NMI. Żądanie przerwania zgłaszane jest narastającym zboczem sygnału. 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 : - wysyła na stos zawartość rejestru znaczników (flag) - zeruje znacznik zezwolenia przerwań I - zeruje znacznik pracy krokowej T - zawartość rejestrów CS (rejestr kodu segmentu programu) i PC (IP) (rejestr rozkazu) są wysyłane na stos, a z tablicy wektorów przerwań są pobierane nowe wartości dla tych rejestrów. 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 : - pierwsze dwa bajty stanowią zawartość licznika rozkazów PC - drugie dwa bajty stanowią zawartość rejestru CS 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). - wektor 1 do realizacji pracy krokowej - wektor 2 dla NMI - wektor 3 jest przeznaczony do wspomagania uruchamiania programów (jest to jednobitowy rozkaz INT3) - wektor 4 jest zarezerwowany dla błędu nadmiaru Ź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. 0- 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. 0- 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; 0- 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: 0- kierunek przesyłania od procesora do pamięci IOWC- (Input/Output Write ) ustala kierunek przesyłania danych 0- 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 D 0=D 7 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(d 0...D 7)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; A 0 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: - pierwszy sygnał INTA = Φ powoduje wyprowadzenie bajtu najmniej znaczącego. - drugi sygnał INTA = Φ powoduje wyprowadzenie bajtu najbardziej znaczącego. 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) - Rejestr C może być używany również jako dwa niezależnie sterowane rejestry 4-bitowe - Grupa A to brama A oraz górna część rejestru C (bity bardziej znaczące PC7..PC4) - Grupa B to brama B oraz dolna część rejestru C (bity mniej znaczące PC4..PC0) 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 A 0 i A 1 - 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 : - dwie bramy 8-bitowe i dwie bramy 4-bitowe,które mogą pracować jak układy wejściowe lub wyjściowe
- wyjściowe z rejestrami zatrzaskowymi - wejściowe bez rejestrów zatrzaskowych - możliwość realizacji szesnastu różnych kombinacji wejść i wyjść 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 : - dwie grupy końcówek, grupą A i B, każda z nich składa się z odpowiedniej bramy 8-bitowej do przesyłania danych i z pomocniczej bramy 4- bitowej przeznaczonej do przesyłania sygnałów sterujących - możliwość zaprogramowania każdej 8- bitowej bramy jako wejścia lub wyjścia, przy czym zarówno wejścia jak i wyjścia mają rejestry zatrzaskowe. - Możliwość zaprogramowania wejścia lub wyjścia tych linii bramy C, które nie służą do przesyłania sygnałów sterujących. 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 : - Tylko jedna grupę końcówek (grupę A) składającą się z dwukierunkowej bramy A oraz pięciu bitów bramy C; - Możliwość zaprogramowania bramy A jako wejścia i wyjścia równocześnie, przy czym zarówno wejście jak i wyjście mają rejestry zatrzaskowe; - Możliwość zaprogramowania jako wejścia lub wyjścia (NIE RÓWNOCZŚNIE)tych linii bramy C, które służą do przekazywania sygnałów sterujących. 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: - rodzaj transmisji asynchroniczna lub synchroniczna - prędkość transmisji - rodzaj i liczbę znaków synchronizujących dla transmisji asynchronicznej - rodzaj kontroli parzystości i inne parametry transmisji Wewnątrz sterownika można wyróżnić 6 zasadniczych bloków funkcjonalnych (rys 15). Są to: - jednostka współpracy z procesorem, która zawiera bufor danych oraz dekoder adresów i sterowań - blok nadawania - generator sygnału zegarowego - blok współpracy z modemem - układ przerwań 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)