1.Przerwania w procesorach 16 bitowych. 2.Kontroler DMA 8257. 3.Tryb pracy 8255. 4.Cykl pracy procesora. 5.Układ 8279.
1.Mikroprocesory 16-bitowe firmy Intel wyposażono w system przerwań reagujących na zdarzenia wewnętrzne (programowe) wywołane rozkazem INT n i zewnętrzne, na przewodach INTR i NMI. Przerwania wewnętrzne. INT n - jest dwubajtowym rozkazem przerwania wewnętrznego. Występuje ono bezpośrednio po zakończeniu realizacji INT n, umieszczonego w programie. Drugi bajt rozkazu to zmienna n wskazująca numer przerwania; 28 = 256 wektorów przerwań. Po rozpoznaniu kodu rozkazu INT Czytany jest jednobajtowy numer (n) przerwania. Procesor przesuwa zawartość n o dwa bity w kierunku pozycji starszych definiując w ten sposób mapę pamięci w wymiarze 210 = 1024 bajtów, po cztery bajty dla każdego z 256 bloków. Tablica adresów jest zapisana w komórkach pamięci od 00000H do 003ffh, jednokilobajtowej przestrzeni adresowej. Dwa pierwsze bajty każdego przerwania określają zawartość licznika programu (IP) dwa następne zawartość rejestru segmentowego kodów (CS). Na tej podstawie układ obliczania adresów procesor (BIU)wyznacza 20-bitowy adres fizyczny procedury obsługi żądania przerwania.
Przykład: przer. o n=0 jest wywoływane błędem dzielenia dla rozkazu DIV lub IDIV.
Przerwania zewnętrzne.
Procesor analizując wagę sygnału (przychodzących z urządzeń we/wy) decyduje o uruchomieniu procedur związanych z tym sygnałem - przerywając aktualnie realizowane zadania. Przyjęcie nowego żądania przerwania, w trakcie realizacji aktualnego przerwania jest możliwe, po ustawieniu IF = 1. W przeciwnym razie przerwanie aktualnie realizowane ma najwyższy priorytet. Wyjątki stanowią przerwania o numerach 0,1,2,3 i 4. Dla obsługi wieli przerwań jednoczesnych stosowane są sterowniki wybory priorytetu przerwania.
NMI - reprezentuje niemaskowalne żądanie przerwania, inicjowane narastającym zboczem tego sygnał. Zmiana poziomu logicznego na lini NMI zostaje zarejestrowana w wewnętrznym przerzutniku przerwań. Po czym, po wykonaniu bieżącego rozkazu zostaje podjęte żądanie przerwania oczekujące na obsługe. Przerwaniu NMI jest przyporządkowany stały numer w tablicy adresów, n=2.
INTR - reprezentuje maskowalne żądanie przerwania inicjowane wartością INTR = 1 aktywne, gdy znacznik flagowy IF=1. Przerwanie można zablokować rozkazem CLI, który zeruje znacznik flagowego IF.
Układ 8259 stosowany w mikroprocesorach firmy Intel rozstrzyga ważność (priorytet) jednego z ośmiu żądań przerwań rejestrowanych na wejściach od IR0 do IR7.
2.W celu przyspieszenia procesu przekazywania danych z zewnętrznego źródła do pamięci komputera lub odwrotnie, z pamięci do zewnętrznego odbiornika danych z pominięciem procesora, opracowano układ zwany sterownikiem bezpośredniego dostępu do pamięci - DMA. Pozwala on realizować procedury przesyłu danych w trybie DMA. Sterownik 8257 generuje żądanie trzymania (HOLD) oraz ustawia dużą impedancję na linach adresowych, na liniahc danych i na liniach sterujących. Taki stan umożliwia przejęcie procesu sterowania przez układ DMA. Układ zapewnia bezpośredni dostęp do pamięci czterem urządzeniom zewnętrznym podłączonym do czterech kanałów; 0, 1,2 ,3. Źródło lub odbiornik danych żąda bezpośredniego dostępu do pamięci sygnałem DRQ. Zezwolenie na operację DMA jest kwitowane sygnałem DACK. Zezwolenie na DMA, w jednym z czterech kanałów jest uwarunkowane zadanym priorytetem żądania. To znaczy, że nie zostanie przydzielone, gdy operacją DMA wykonuje źródło danych związane z kanałem o wyższym priorytecie obsługi. Każdy kanał zawiera dwa rejestry 16-bitowe. 8257 można zaprogramować do trzech trybów pracy: odczytu - rozpoczyna się aktywnym poziomem (niskim) sygnału MEMR . Powoduje on przekazanie danych ze wskazanej adresem komórki pamięci na magistralę danych, po czym pojawia się sygnał I/OW, który przekazuje dane do rejestru buforowego urządzenia czytającego; zapisu - rozpoczyna się aktywnym poziomem (niskim) sygnału I/OW. Powoduje on umieszczenie danych na magistrali, po czym pojawia się sygnał MEMW, przekazujący dane z magistrali do wskazanej adresem komórki pamięci. Adres dla bajtu pierwszego zdefiniowany jest w rejestrze pierwszym odpowiedniego kanału. Kolejne adresy są określone automatycznie przy zwiększaniu wartości adresu poprzedniego, zarówno dla trybu odczytu jak i trybu zapisu. Cztery najmłodsze przewody adresowe A0 - A3 służą do adresowania rejestrów wewnętrznych 8257, w trakcie ładowania danych do tych rejestrów. Zmienne A2A1 służą do adresacji kanałów DMA: 00 - kanał 0, 01 -1, 10 - 2 i 11 - 3. W zdefiniowanym liniami A2A1 kanale, linie A3=0 i A0=0 adresują pierwszy rejestr, którego zawartość definiuje początek przydzielonej mu przestrzeni pamięciowej. Ponieważ wewnętrzny rejestr adresów jest 16-bitowy, a magistrala D0-7 jest 8 - bitowa, jego załadowanie odbywa si w dwóch krokach, bajt młodszy, bajt starszy. Po załadowaniu bajtu młodszego z procesor przy narastającym zboczy sygnału I/OW następuje przełączenie wewnętrznego przerzutnika adresacji bajtu starszego rejestru. Kolejny sygnał I/OW spowoduje załadowanie danych do drugiej części rejestru. Zmieniając adres A) z 0 na 1 powtarzamy tę samą operację, ładując drugi rejestr, określający długość bloku danych w pamięci. Identycznie postępujemy przy programowaniu rejestrów w pozostałych trzech kanałach. Zadają A3A2A1a0 - 1000, powodujemy zapis słowa trybu w czasie narastającego zbocza sygnału I/OW Dla tej samej kombinacji wartość A0-3 czytane jest słowo statusowe w czasie narastającego zbocza sygnału I/OR. Słowo trybu 0123- czynne kanały(0-nie, 1-tak),rotacja priorytetu, wydłużenie czasu zapisu, blokada TC, autoprogramowanie Słowo statusowe 0123-koniec DMA, 4- detekcja autoprogramowania.
3. Układ 8255 pośredniczy w procesie transmisji danych na 24 liniach danych z jednej strony i 8 liniach z drugiej strony. 24 linie mogą być grupowane w trzy porty 8-bitowe oznaczone literami A,B,C. Są one zwykle podłączone do urządzeń zewnętrznych. Specyficzne zastosowanie mają linie portu C, które można zaprogramować jako sygnały sterujące transmisją danych z potwierdzeniem, poprzez porty A i B. Funkcję linii zewnętrznych A,B i C można zdefiniować programowo za pomocą słów programujących. wpisywanych do układu 8255 przez magistralę danych D0- D7. Tryb pracy portów A i B może być deklarowany niezależnie, gdy tryb portu C jest uzależniony od deklaracji trybów pracy portów A i B. Wybór trybu pracy sprzegu 8255 odbywa się za pomocą słowa sterującego. Wprowadzenia słowa ster. następuje poprzez magistralę danych dla A1A0 = 11. Na szczególną uwagę zasługuje bit D7 słowa ster. Wartość 0 na tej pozycji oznacza, że programowaniu podlegają wybrane bity portu C.
Tryb 0, nazwany jest prostym trybem wejściowo - wyjściowym. Wszystkie trzy porty układy pracują jak proste rejestry równoległe, przyjmujące dane z magistrali danych mikroprocesora. Numer rejestru jest określany za pomocą linii adresowych A0A1.
1.Mikroprogramowe sterowanie. 2.Transmisja z potwierdzeniem. 3.Proces obsługi przerwania w 8080. 4. Kolejka rozkazów w 8086. 5.Rejestr statusowy (sygnały statusowe 8086). 6.Obsługa przerwań 8086 za pomocą kontrolera obsługi przerwań 8259. 7.Rozkazy rozwidleń warunkowych 8080. 8.Segmentacja pamięci operacyjnej w 8086.
1.Opcje arytmetyczne realizowane w zapisie binarnym wykonane są jako sekwencje operacji składowych (podstawowych) : dodawania, przesunięcia, dopełnienia, negacji. Sekwencja takich operacji nazwana jest mikroprogramem dla zadanej operacji arytmetycznej (sekwencja mikrooperacji - zadań wykonanych w takcie zegara). Na wejście kod rozkazu zostaje podany adres początku mikroprogramu odpowiadającego danemu rozkazowi. Adres ten jest dalej podawany do rejestru adresu mikrorozkazów RAMR, z którego jest adresowana pamięć ROM, z której jest pobierany do rejestru mikrorozkazów RMR kod mikrorozkazu. Z rejestru mikrorozkazów jest sterowana ALU oraz podawane są wektory adresowe następnego rozkazu i sygnały sterujące podawane na wejścia programujące i bramkujące. Ostatni sygnał Pk steruje przebiegiem sekwencji mikroprogramu. Gdy Pk=0 do RAMR jest podawany adres kolejnego kodu mikrorozkazu w programie. W przedostatnim kroku mikroprogramu Pk=1 zostaje podany adres pierwszego adresu mikrorozkazu kolejnego mikroprogramu.
2.Szybkość pracy procesora min. Transmisja danych jest regulowana możliwościami (np. maksymalną szybkością transmisji) urządzenia najwolniejszego (zazwyczaj urządzenie zewnętrzne). Sygnałem synchronizującym 9informującym o gotowości urządzenia, danych na magistrali) jest sygnał Ready. dwa urządzenia przesyłają między sobą dane za pomocą układy sprzęgającego, przesyłając również sygnały sterujące: Start, Gotów, Pełny i Takt. Niech urządzenie A ma załadowane w swoim buforze dane, które chce przekazać do urządzenia B poprzez urządzenie sprzęgające. Układ sprzęgający przekazuje do układu A gotowość przyjęcia danych sygnałem Gotów. Urządzenie A rozpoczyna transmisję do układu sprzęgającego wysyłając sygnał Start. Gdy zostanie zapełniony bufor układu sprzęgającego sygnał Gotów jest deaktywowany, natomiast do urządzenia B jest wysyłany sygnał Pełny, na który urządzenie B odpowiada sygnałem Takt, i zaczyna transmisje danych z urządzenia sprzęgającego do swojego bufora. Gdy dane zostan przesłane urządzenie sprzęgające aktywuje sygnał Gotów, przez co umożliwia transmisję kolejnej porcji danych. realizacja transmisji w drugą stronę przebiega bardzo podobnie. Urządzenia A nie rozpocznie transmisji do chwili wysłania przez układ sprzęgający sygnału Gotów. tak samo urządzenie B nie rozpocznie transmisji do urządzenia sprzęgającego, gdy te nie poinformuje go o gotowości przyjęci danych niskim poziomem sygnały Pełny.
Podobnie do transmisji taktowanej sygnałem Raedy przebiega transmisja z pomocą przerwania Interrupt. T tak np. urządzenia A rozpoczyna transmisję, gdy otrzyma informacją o pojawieniu się nowych danych w układzie sprzęgającym, którą to informacje układ sprzęgający wysyła sygnałem INTR, przez co powoduje rozpoczęcie transmisji do układu A, a po jej zakończeniu wysłanie informacji do urządzenia B o gotowości przyjęcia nowych danych (nieaktywny sygnał Pełny).
3.Procesor przyjmuje również zewnętrzne sygnały ingerujące w wewnętrzną realizację bieżącego programu. Przerwanie jest to zawieszenie realizacji bieżącego programu zasadniczego i wykonanie podprogramu realizującego obsługę danego przerwania. Może być to sygnał wygenerowany przez użytkownika z poziomu oprogramowania jak również wysłany przez urządzenia zewnętrzne współpracujące z procesorem. Jednostka sterująca procesora jest wyposażona w zewnętrzne linie sterujące, INTE, INT, INTA (D0) które umożliwiają zawieszenie pracy programu zasadniczego i wywołanie podprogramu realizującego procedurę obsługi przerwań. Sygnał INT jest sygnałem żądania przerwania pracy procesora w celu realizacji obsługi przerwań. Program obsługi przerwania może zawierać różne rozkazy, identycznie jak w programie głównym, dlatego też rejestry procesora mogą być zapełnione nowymi danymi. Procesor ustawia sygnał INTE (zezwolenia na przyjęcie przerwania0 na aktywny (H) tylko wtedy, gdy został zakończony cykl wcześniej wykonywanego rozkazu, a nie rozpoczął się cykl wykonania kolejnego rozkazu w programie głównym; sygnał ten jest nieaktywny (INTA=L), gdy nie został zakończony rozkaz poprzedni; gdy został przyjęty rozkaz obsługi programu żądania przerwania - wykonywany jest program obsługujący te przerwania (można go jednak odblokować programowo rozkazem EI - dozwolone przerwanie, przy spełnieniu również wcześniejszego warunku) oraz gdy zablokujemy obsługę przerwań rozkazem DI - przerwanie nieaktywne.
Rozpoczęcie cyklu obsługi przerwania jest więc możliwe, gdy sygnał INT (żądanie obsługi przerwania) oraz INTE (zezwolenie na obsługę przerwania) są aktywne. W czasie realizacji programu modyfikowany jest PC i wpisywane są do niego adresy kolejnych sekwencji programu. W chwili rozpoczęcia cyklu obsługi przerwań PC jest zablokowany i wpisywany na stos (poprzez 8 bitową magistralę danych najpierw PCh a następnie PCl) oraz na sygnale słowa statusowego Do jest uaktywniany sygnał INTA (po wysłaniu sygnału synchronizującego SYNC), który jest sygnałem potwierdzającym przyjęcie obsługi przerwania w wyniku zostaje pobrany, wstawiony przez kontroler 8259, ko9d trzybajtowego rozkazu CALL. Po przyjściu kolejnego INTA (wraz z sygnałem SYNC) pobierany jest wystawiany na magistrali danych przez 8259 starszy bajt adres początkowy programu obsługi przerwania a po przyjściu kolejnego sygnału INTA pobierany jest wystawiony młodszy bajt adresy. Realizacja przerwań zewnętrznych w odróżnieniu od obsługi przerwań wewnętrznych za pomocą RST n jest realizacją obsługi przerwań z bezpośrednią adresacją restartów.
4.Centralny blok przetwarzania procesora 8086 składa się z dwóch podstawowych elementów: jednostki wykonawczej (EU) oraz sprzęgającego magistrali (BIU), który równolegle w trakcie wykonywania cyklu rozkazowego przez EU pobiera rozkaz następny. EU nie ma styczności z magistralą, gdyż rozkazy są do niej przekazywane z kolejki rozkazów czyli bloku (6 rejestrów) szesnastobitowych rejestrów FIFO(first-In First-Out). Kolejka jest zapełniana za pomocą BIU. Wektory adresowe w obrębie EU są szesnastobitowe. Mimo że 1MB obszaru PO jest adresowany za pomocą 20 linii adresowych. EU dekoduje i wykonuje rozkazy pobrane z kolejki rozkazów. W trakcie wykonywania rozkazu przez EU. BIU otrzymuje zezwolenie na pobranie kolejnego rozkazu do kolejki. Gdy kolejnym bajtem w pamięci są dane to zostaje on pominięty i władowany jest kolejny bajt. Który okaże się kodem rozkazu. Jeśli EU realizuje rozkaz skoku lub wywołania podprogramu, kolejka zostaje wyzerowana, a następnie zostaje zapełniona wektorami rozkazowymi z obszaru pamięci powiązanej z rozwidleniem.
5.Oprócz linii adresowych i linii danych procesor przyjmuje i wysyła szereg sygnałów sterujących i informujących. Linie A16/S3 do A19/S6 w cyklu T1 cyklu maszynowego stanowią cztery najbardziej
1.Rejestr flagowy 8080. 2.Rejestr flagowy 8086. 3.Rozwidlenia i podprogramy. 4.Transmisja asynchroniczna. 5.Transmisja synchroniczna. 6. Procesor 8086. 7.Słowo statusowe 8080. 8. Programowy element czsowy 8253.
1Jak początek 2.
2.Bit 0 (C-carry) - przeniesienie; wartość 1 oznacza przeniesienie zewnętrzne dla operacji arytmetycznych; bit 2 (P - parity) - parzystość; wartość 1 oznacza, że w wyniku ostatnio wykonanej oeracji znajduje się pzarzysta liczba 1; bit 4 (A - auxiliary carry) - przeniesienie połówkowe; wartość 1 oznacza obecność przeniesienia na czwartym bicie w rezultacie operacji arytmetycznych wykonanych w kodzie BCD; bit 6 (Z - zero) - 1 oznacza, że wynik ostatniej operacji jest zero; bit 7 (S - sign) - 1 wskazuje na ujemny wynik ostatniej operacji arytmetycznej całkowito - liczbowej.
Znaczniki sterujące: bit 8 (T - trap) znacznik pracy krokowej procesora, Gdy T=1 procesor przechodzi do pracy krokowej tzn. zatrzymuje się po wykonaniu każdego rozkazu (wywołanie przerwania o nr 1 - INT n =1) i odkłada na stos flagi i przechodzi do realizacji programu obsługi tego przerwania (adres początkowy w IP i CS); bit 9 (I interrupt enable) - wskazuje czy wejście przerwania maskowalnego jest odblokowane I-1 czy zablokowane I=0; bit 10 (D - direction) - znacznik kierunku zmian zawartości rejestrów SI i DI dla D=0 wartości SI i DI jest inkrementowana natomiast D=1 zawartość SI i DI jest dekrementowana o 1 lub 2 w zależności od wykonywanych rozkazów (8 lub 16 bitowych) ; bit 11 (O - overflow) - przepełnienie.
LAHF - przesłanie wskazanego bajta rejestru flagowego do AH; SAHF - przesłanie zawartości AH do rejestru flagowego; PUSHF i POPF - przesłanie i ściągnięcie zawartości rej f. na stos; STC, CLC, CMC - ustawienie , zerowanie, negowanie wskaźnika przeniesienia zewnętrznego C; STD, CTD - ustawienie, negowanie wskaźnika kierunku D, STI, CTI - ustawienie, negowanie wskaźnika przerwania; wszelkiego rodzaju porównania jak np. CMP, TEST.
3.Rozkazy warunkowe sprawiają, że realizacja programu przebiega w innej kolejności niż jego zapis. Szczególnym przypadkiem rozwidlenia jest wywołanie podprogramu. Przed podjęciem podprogramu ma miejsce zapamiętanie adresu komórki na której zatrzymana została realizacja programu zasadniczego, polegająca na przeniesieniu do obszaru pamięci zwanego stosem ostatniej zawartości licznika rozkazów, a na jej miejsce zostaje wprowadzony adres pierwszej komórki pamięci zawierającej podprogram. Po wykonaniu podprogramu do licznika rozkazów wraca ze stosu ostatni adres komórki programu zasadniczego i podjęta zostaje dalsza jego realizacja.
4.Szeregowa transmisja asynchroniczna, została zdefiniowana jako ciąg binarny, który rozpoczyna bit najmłodszy, a kończy bit najstarszy. Stan wyłączenia transmisji jest sygnalizowany poziomem wysokim (nieaktywnym) na szeregowej linii danych. Początek nadawania rozpoczyna bit startu (BST), zmianą poziomu wysokiego na niski. Bit startu jest umieszczony przed D0 najmłodszym bitem danych. W transmisji szeregowej przewidziano możliwość prostego sprawdzenia błędów transmisji przez kontrolę parzystości słowa danych (bit P). bit parzystości występuje po D7, najstarszym bicie danych. W zakończeniu transmitowanego znaku umieszczony jest bit stopu (BSP); pojedynczy lub podwójny.
BST |
D0 D1 ... Dn-1 |
P |
BSP |
W przedstawionym na rysunku ciągu danych widnieje wymiar (n-1). Oznacza to możliwość deklaracji długości znaku danych: 5,6,7 lub 8 bitów. Podstawowym formatem jest ciąg z 7-bitowym znakiem danych, zapisującym wszystkie znaki klawiatury amerykańskiej wg kodu ASCII.
Zwielokrotnienie częstotliwościowe - jest drugim sposobem zwiększenia liczby kanałów logicznych w pojedynczym kanale fizycznym. Sygnały cyfrowe zostają zamienione na przebiegi sinusoidalne zgodnie z zasadami modulacji opisanymi powyżej. Metoda z podziałem częstotliwości polega na przydziale do każdego kanału logicznego różnych częstotliwości modulacyjnych, od minimalnej wartości technicznie zalecanej, do częstotliwości górnej, określonej dopuszczalnym pasmem częstotliwości przenoszenia kabla. Omówione wyżej techniki zwielokrotnienia liczby kanałów stały się podstawą klasyfikacji systemów transmisji, według kryterium pasma przenoszenia medium. Wyróżniamy: transmisję w paśmie podstawowym; transmisję z modulacją; transmisję szerokopasmową.
Traramisja w paśmie podstawowym - (baseband), zwana jest również komunikacją wąskopasmową, polega ona na przesyłaniu przez pojedynczy kanał fizyczny tylko jednego ciągu sygnałów. Tego rodzaju komunikacja wykorzystywana jest w przypadkach transmisji analogowej (telefonia analogowa) lub w okablowaniu sieci lokalnych jak Ethernet czy Token Ring, w których na jednym przewodzie przesyła się pojedynczy ciąg sygnałów. Najprostszym formatem kodowania informacji jest ciąg binarny (wartości 0,1) stosowany w systemach przesyłu danych między dwoma blisko siebie położonymi (kilkadziesiąt metrów) układami o tzw. lokalnym zasięgu. Transmisja w paśmie podstawowym oznacza przekazywanie danych w formie nieprzetworzonej, gdzie pojedyncza linia obsługuje jeden kanał transmisji.
Transmisja z modulacją - stosowana jest w systemach dalekiego (odległego) przesyłu danych, gdzie dwa poziomy logiczne sygnału są reprezentowane dwiema wartościami ich odpowiedników, są to: dwa poziomy amplitudy napięcia sinusoidalnie zmiennego, dwa napięcia sinusoidalnie zmienne o różnych częstotliwościach; modulacja częstotliwości; dwa napięcia sinusoidalne o przeciwnych fazach. Z trzech wymienionych metod modulacji najczęściej stosowana jest metoda różnych częstotliwości, zwana modulacją częstotliwości.
Transmisja szerokopasmowa - (broadband), polega na podziale pojedynczego kanału fizycznego na szereg podkanałów logicznych. Zwielokrotnienie liczby kanałów transmisyjnych uzyskuje się na drodze podziału czasu transmisji lub metodą podziału zakresu częstotliwości transmisji na podzakresy według zasad opisanych wyżej. Pasmo przenoszenia zostaje podzielone na kilka pasm dla kanałów logicznych. Zastosowanie techniki częstotliwościowego zwielokrotnienia liczby kanałów daje dobre efekty w przypadku zastosowania szerokopasmowego medium transmisyjnego. Na przykład standardowy kabel koncentryczny zapewnia możliwość przesyłu informacji w paśmie od 10 do 300 MHz, w kanałach po 12 MHz z szybkością transmisji do 10 Mb/s.
MAC (Media Access Control) należy do warstwy lini (2), steruje dostępem do medium transmisyjnego za pośrednictwem warstwy fizycznej. Zadaniem MAC jest przeniesienie pakietów danych zapisanych według reguł warstw wyższych do warstwy fizycznej według zasad określonych za pomocą mechanizmów dostępu do medium transmisyjnego (CSMA/CD, Token Bus, Token Ring). MAC bada obecność sygnału nośnego na lini (sprawdza, czy nadaje inna stacja) wprowadza token'a do linii (wędrujący token), inicjuje proces transmisji, wykrywa kolizje w transmisji, wprowadza opóźnienia dla retransmisji, wykrywa zagubienie żetonu itp. W przeciwieństwie do LCC marstwa MAC jest inna dla każdej metody dostępu.
LCC (Logical Link Control) - podwarstwa warstwy lini (2) odpowiadająca za organizację ramki transmisji przesyłu danych. Przejmuje dane przekazywane w formatach warstw wyższych i uzupełnia je o cechy identyfikacyjne stacji: adres stacji, znacznik początku ramki i dane uzupełniające. Zasady organizacji ciągu binarnego w ramce są protokołem transmisyjnym.
PAD (Packet Assembler/Disassembler) służy do asemblacji (składania) pakietów (zawierających dane zasadnicze, adres odbiornika, dane sterujące) danych przesyłanych w sieciach publicznych. Po umieszczeniu danych w Padzie odbiornika końcowego następuje ich deasemblacja o po uporządkowaniu danych następuje ich przekazanie do stacji odbiorczej. Kompletny zbiór danych składa się zwykle z szeregu pakietów, wysyłanych w określonej kolejności. Ponieważ pakiety przesyłane są różnymi kanałami fizycznymi sieci publicznej, zdarza sę często, że przychodzą one w innej kolejności niż zostały nadane. Dla ustawienia właściwej kolejności w Padzie nadawczym wprowadzono numerację pakietów
5.Zasadniczą wadą formatu asynchronicznego jest znaczny udział bitów sterujących w pojedynczym znaku. Na 12 bitów znaku tylko 8 to dane zasadnicze, czyli 1/3 ciągu to bity sterujące. W transmisji synchronicznej udział bitów dodatkowych w jednym ciągu jest znacznie korzystniejszy. Na rysunku pokazano format długiego ciągu binarnego, danych transmitowanych synchronicznie.
Syn_1 |
. . . SYN_n |
Dane zasadnicze |
Przed zasadniczym blokiem danych nadajnik wysyła ciąg binarny synchronizujących (SYN_1 ... SYN_n).
Odbiornik przeprowadza rozpoznanie ciągu synchronizującego, polegający na sprawdzaniu odebranego kodu. W ten sposób rozpoznaje częstotliwość transmitowanych danych. Długość bloku synchronizującego rośnie, gdy szybkość transmisji danych wzrasta oraz rośnie liczba możliwych nastaw szybkości transmisji odbiornika. Po zsynchronizowaniu częstotliwości nadawania i odbierania danych przyjmowane są dane zasadnicze. Proces przesyłu danych zasadniczych może być uzależniony od potwierdzenia stanu synchronizacji odbiornika, choć nie wszystkie układy sprzęgające taką możliwość dopuszczają.
6.Procesor 8086 składa się z: ALU (jednostka arytmetyczno - logiczna), BIU z kolejką rozkazów (układu sprzęgającego z magistralą), 20 linii adresowych adresujących 1 MB PO, 16 linii adresowych adresujących 64 kB przestrzeni I/O, rejestry AX, BX, CX, DX (ogólnego przeznaczenia) SP, BP (adresowe), CS, DS., SS, ES (segmentowe), SI, DI, EI (segmentowe 16 bitowe), IP (licznik programu) oraz rejestr stanu (flagowy).
7. D0 (INTA) - przyjęcie żądania przerwania; D1 ( WO ) -pisanie pamięci stosu; D2 (STACK) - czytania pisania do stosu; D3 (HLTA) - przyjęcie trzymania (np. obsługa DMA); D4 (OUT) - pisania na wyjście; D5 (M1) - pobranie rozkazu; D6 (INP) - czytanie z wejścia; D7 (MEMR) - czytanie pamięci stosu.8.Element czasowy 8253 opracowany został przez firmę Intel i jest jednym z bloków składowych systemów mikroprocesorowych rodziny x80/88/86. Trzy liczniki o numerach 0,1,2 taktowane są niezależnymi impulsami zegarowymi CLK. Na wyjściach OUT otrzymujemy przebiegi czasowe sygnałów ustawionych programowo. Linia wejściowa GATE (bramka) może być wykorzystana do inicjowania startu: procesu odmierzania liczby impulsów, odmierzania zadanego interwału czasu, podziału częstotliwości lub do blokady pracy licznika. Element 8253 zawiera trzy 16-bitowe liczniki odejmujące, z których każdy może zostać zaprogramowany w jednym z sześciu trybów. TRYB 0 -w którym na wyjściu OUT pojawia się sygnał niski, po załadowaniu do elementu 8253 słowa sterującego oraz warunków początkowych licznika. Zostają one wpisane do rejestrów wewnętrznych 8253 narastającym zboczem zamiennej WR Leżeli na linii GATE zmieni się poziom z niskiego na wysoki, rozpocznie się odliczanie impulsów zegarowych do chwili, gdy zawartość licznika osiągnie wartość 0. Przerwanie zliczania sygnalizowane jest sygnałem wysokim na linii OUT. Jeżeli w czasie odliczania impulsów sygnał GATE zamieni poziom wysoki na niski, proces odliczania zostaje zatrzymany , do czasu powrotu wysokiego poziomu na linii GATE. TRYB 1-w którym na wyjściu OUT generowany jest impuls prostokątny o zaprogramowanej szerokości. Zmiana sygnału niskiego na wysoki na wejściu GATE oznacza przejście poziomu wysokiego na niski na wyjściu OUT, który trwa zadaną liczbę impulsów
CLK. Po odliczeniu ustawionej liczby impulsów, sygnał OUT powraca do poziomu wysokiego. TRYB 2 - jest programowanym dzielnikiem częstotliwości przez N, gdzie N jest zadaną pojemnością licznika. Po N impulsach CLK pojawia się jeden impuls na wyjściu OUT, o czasie trwania równym sumie czasów trwania poziomu niskiego i wysokiego jednego taktu CLK.TRYB 3- Generuje na wyjściu OUT symetryczną falę prostokątną o zaprogramowanej częstotliwości, N razy mniejszą od częstotliwości CLK.TRYB 4- w którym na wyjściu pojawia się wartość 0 opóźniona względem przedniego zbocza WR o zadana wartość. TRYB 5- w którym na wyjściu pojawia się wartość 0 opóźniona względem przedniego zbocza sygnału bramkującego GATE o zadaną wartość.
Jeżeli WR=0 i CS=0, otwarta zostaje magistrala danych elementu 8253 do wprowadzenia informacji. Zaprogramowanie 8253 odbywa się w dwóch etapach :-etap pierwszy związany z określeniem pracy poszczególnych liczników (słowo sterujące); - etap drugi związany jest z ustawieniem warunku początkowego każdego z liczników.
znaczące bity adresowe, natomiast w cyklach T2, T3, T4 są to cztery starsze bity słowa statusowego 8086. S3 i S4 określają stan aktywności rejestrów segmentowych aktualnie wykorzystywanych do adresowania: 00 - ES, 01 - CS lub żaden. 10 - SS, 11 - DS. S5=IF - przyjmuje wartość bitu flagowego przerwań (IF - IE), S6=- = wartość stała zero. Sygnał S7 - ~BHE wraz z sygnałem A0 (podawany na ~CS) informuje czy przedmiotem operacji na magistrali są słowa dwubajtowe czy też pojedyncze bajty. Dlatego w zależności od parzystości lub nieparzystości adresu
komórki, Zadany bajt zajmuje na magistrali jedną z dwóch możliwych pozycji.
S7~BHE |
A0 |
Znaczenie |
||
0 |
0 |
Przekazywane jest słowo 16 bitowe |
||
0 |
1 |
Bajt leży na liniach D15-D8 (lokacja nieparzysta) |
||
1 |
0 |
Bajt leży na liniach D7-D0 (lokacja parzysta) |
||
1 |
1 |
stan zabroniony- kombinacja wykluczona |
Sygnały ~DEN S0 DT/~R S1 i M/~IO S2 kodują osiem cykli maszynowych. Sygnał M/~IO jest sygnałem wyróżniającym cykl współpracy z pamięcią (sygnał wysok8) lub z urządzeniami I/O. Sygnał DT/~R określa kierunek przesyłu danych. Sygnał wysoki oznacza kierunek transmisji z procesora (T- transmiter) a wartość niska transmisje do procesora.
6.Cykl przyjęcia zgłoszenia.Układ 8259A dysponuje trzema 8 bitowymi rejestrami IMR (Interrupt Mask Register), IRR (Interrupt Request Register) oraz ISR (Interrupt Service Register). Urządzenie posiada 8 wejść IR0 - IR7. Ponieważ jednocześnie może nadchodzić kilka zgłoszeń układ oceny priorytetu wybiera jednorazowo te o najwyższym priorytecie i jednocześnie wysyłany jest do procesora sygnał INT. Informujący o żądaniu obsługi przerwania. Jeżeli obsługa przerwania nie jest zablokowana (IE=1) procesor reaguje sygnałem potwierdzenia przyjęcia przerwania ~INTA, który zostaje zignorowany. Przyjściu kolejnego sygnału ~INTA powoduje, Ze wybrany przez układ oceny priorytetu nr przerwania (ustawiona pozycja bitowa) jest wysyłany do rejestru ISR i zostaje wyzerowany odpowiadający mu przerzutnik w rejestrze IRR. Po otrzymaniu drugiego sygnału potwierdzenia ~INTA z procesora kontroler wystawia na szynę D0 - D7 wektor przerwań zawierający offset (4 bitowy; bity 7-3), który można ustawić na etapie programowania kontrolera, oraz numer ustawionego w rejestrze ISR bitu (numer przerwania). Procesor traktuje go jako numer obsługi przerwania, którą będzie wykonywać. Rejestr IMR pozwala przez ustawienia poszczególnych bitów na ignorowanie wszelkich pytań, które nadchodzą tymi liniami. Kontroler 8259 może pracować w trybie automatycznym (AEOI - Automatic End OF Interrupt), w którym w momencie przejścia do wykonywania procedury obsług, jest zerowany odpowiedni bit rejestru ISR co oznacza gotowość kontrolera przyjęcia następnego zgłoszenia oraz w trybie EOI (End Of Interrupt), w którym sama procedura obsługi przerwania wysyłając rozkaz EOI do kontrolera dokonuje wyzerowania tego bitu.
Kaskadowe łączenie kontrolerów przerwań
Dla zwielokrotnienia liczby wejść układy 8259 można łączyć w grupy (max. 9 kontrolerów - 1 Master + 8 Slave). Układy połączone są między sobą trzema liniami adresowymi CAS0 - CAS2. Każdy z kontrolerów rozpoznaje swoją rolę po stanie wejścia ~Sp/EN (~SP/EN=1 - Master; ~SP/En=0 - Slave) Do wszystkich połączonych kontrolerów doprowadza się sygnał ~INTA, natomiast tylko wyjście INT kontrolera Master jest połączone z wejściem INR procesora. Fazy obsługi przerwań dla układu Slave.
Zgłoszenie ustawia bit n rejestru IRR w układzie Slave i powoduje, po opracowaniu priorytetów, wysłanie sygnału INT do układu Master. Układ Master otrzymuje zgłoszenie na linii IR2 (w modelach AT.PS2), co powoduje ustawienie bitu 2 w jego rejestrze IRR. Układ master opracowawszy priorytety własnych zgłoszeń wysyła INT do procesora. Procesor (jeśli nie jest zablokowana obsługa przerwań sprzętowych) odpowiada pierwszym sygnałem ~INTA po czym Master adresuje liniami CAS0- CAS2 układ Slave odpowiedzialny za obsługę zgłoszonego przerwania. W obu układach jednocześnie następuje przesunięcie bitu z IRR do ISR,. Drugi sygnał ~INTA nakazuje wystawienie układowi Slave wystawienie na szyn danych D0-D7 wektora przerwań traktowanego jako numer procedury obsługującej zgłoszone przerwanie. W trybie AEOI zerowane są w rejestrach ISR: 2 bit w układzie Master i n-ty bit w układzie Slave. W trybie EOI procedura obsługi przerwania wysyła dwa rozkazy EOI: jeden do układuMaster,a drugido Slave.
Programowanie kontrolera przerwań 8259
Programowanie rozpoczyna się od przesłania tzw. Słowa inicjującego ICW. Na ten etap składają się dwa (dla układu pojedynczego) lub cztery (dla układu kaskadowego Master-Slave) słowa programujące. Pierwsze dwa słowa inicjalizacji służą do określenia trybu pracy sterownika (pojedynczy lub kaskada Master_slave), lokacji i rozmiarów przestrzeni pamięciowej przyporządkowanej poszczególnym przerwaniom, sposobu adresacji restartów, programowania sposobu reakcji wejść IREQn (na poziom sygnału lub narastające zbocze). Drugim etapem oprogramowanie jest przesłanie 3 słów operacyjnych OCW 1,2,3. Ich zadaniem jest: maskowanie wejść IREQn, określenie kombinacji priorytetów sygnałów przerwań (np. rotacja), wywoływanie specjalnych trybów maskowania i aktywacja wejść IREQn pod kontrolą oprogramowania systemowego. Słowo operacyjne może być zmieniane przy niezmienionym słowie inicjującym ICW.
7. JNZ - skok przy braku zera, JZ - skok przy zerze, JNC - skok przy braku przeniesienia, JC - przy przeniesieniu, JPO - przy nieparzystości, JPE,JP - przy parzystości; CALL rozkaz bezwarunkowy o działaniu zbliżonym do JMP; działanie [SP]<(PCh), [SP-1]<(PCl), [PC]<adres; nie zrzuca na stos rejestru flagowego i rejestrów ogólnego przeznaczenia; RET - powrót bezwarunkowy z procedury (PCl)<[SP], (PCh)<[SP+1]; RST n - lokalizacja adresu programu obsługi przerwania, działanie [SP]<(PCh), [SP-1]<(PCl), [PCh]<00h, [PCl]<00NNN000b (NNN - określają osiem pozycji restartów (programów obsługi przerwań) po osiem bajtów każdy). Z uwagi na nieznaczny rozmiar pola restartu (8 bajtów) na jego początku znajduje się rozkaz skoku bezwarunkowego JMP(C3) do komórki PAO określonej w kolejnych dwóch bajtach pola restartu. Po zakończeniu programu obsługi przerwania ściągany jest ze stosy PC.
8. Aby zaadresować 1 MB obszar pamięci operacyjnej (od 00000h di FFFFFh) należy użyć 20 lini adresowych. Pisząc program używamy jednak pojęcia adresu logicznego, operując krótszym 16 bitowym formatem adresu (co jest związane z długością rejestrów wewnętrznych procesora). Na 16 bitach można zaadresować obszar 64 kB. Jeżeli do 16 bitowego będziemy dodawać 4 brakujące bity (do 20), czyli przedział od 0h do Fh będziemy adresować 16 segmentów po 64 kB każdy. Adres logiczny składa się z tzw. baz czyli adresu segmentu danych (4 bitowego), który jest wskazywany z czterech rejestrów segmentowych: CS, DS., ES, SS oraz przesunięcia (offset)w danym segmencie (16 bitowy).
Tryb 1, realizuje komunikację z potwierdzeniem między źródłem informacji o odbiornikiem. Dane zostają zatrzaśnięte w rejestrze wewnętrznym układy sprzęgającego. W trybie 1, część portu C wykorzystywana jest jako rejestr stanu lub jako rejestr sygnałów sterujących. Oznaczenie bitów portu C dla trybu1 t trybu 2 przedstawia tablica. Kolumna WE/WY dla trybu 1 przedstawia oznaczenia bitów portu C dla przypadku, gdy port A i port B służą do wprowadzenia i wyprowadzenia danych. Jeśli port A lub B zaprogramujemy do trybu pracy w kierunku wprowadzenia danych, linie portu C zdefiniowane są zgodnie z kolumną pierwszą - WE. Indeks A oznacza zmienne sterujące portu A, indeks B, zmienne sterujące portu B. Kolumna druga (WY0 opisuje zmienne sterujące dla wprowadzenia danych.
Bit
|
Tryb 1 |
Tryb 2 WE- WY |
|
|
WE |
WY |
|
0 1 2 3 4 5 6 7 |
INTRb IBFb STBb INTRa STBa IBFa WE/WY WE/WY |
INTRb OBFb ACKb INTRa WE/WY WE/WY ACKa OBFa |
WE/WY WE/WY WE/WY INTRa STBa IBFa ACKa OBFa |
W trybie 2 może być tylko ustawiony port A. Wejście strobujące (STB) opadającym zboczem załaduje daną z urządzenia zewnętrznego. Stan zapełnionego portu sygnalizowany jest poziomem wysokim zmiennej IBF. Następnie wysyłany jest do procesora sygnał żądania przerwania INTR, oznaczający gotowość danych do transmisji. Opadające zbocze sygnału RD powoduje skasowanie sygnału IBF, to znaczy: bufor pusty. Urządzenie zewnętrzne może wprowadzić kolejną porcję danych.
4.Cykl rozkazu procesora jest zdefiniowany jako suma operacji pobrania (Fetch) i wykonania ( Execute\) rozkazu. W czasie pobrania do rejestru rozkazowego procesora, przenoszone są z pamięci operacyjnej jeden, dwa lub trzy bajty kodu rozkazu. W fazie wykonawczej rozkaz jest dekodowany i zamieniany na odpowiadający mu ciąg operacji. Każdy cykl rozkazowy procesora 8080 zawiera od jednego do pięciu cykli maszynowych. Faza pobrania składa się z tylu cykli maszynowych ile bajtów musi być przesłanych z pamięci operacyjnej do procesora w ramach jednego rozkazu. Czas trwania cyklu wykonawczego zależy od rodzaju pobranego rozkazu.
Niektóre rozkazy zawierają tyle cykli maszynowych ile faza pobrania. Inne zawierają cykle dodatkowe związane z odczytem lub zapisie danych z /do pamięci, czy porty WE/WY. Każdy z cykli maszynowych (Mk ) zawiera trzy, cztery lub pięć cykli zegarowych (Ti) procesora. Dwa przesunięte względem siebie impulsy zegarowe (fi1,fi2) określają jeden cykl zegarowy procesora - zwany również dwufazowym cyklem taktowania procesora.
Na początku każdego cyklu maszynowego generowany jest impuls synchronizujący (SYNC) procesora. Czas trwania cyklu zegarowego nie jest zgodny z podaną definicją w trzech przypadkach wyjątkowych: w stanie oczekiwania (WAIT), w stanie trzymania (HOLD), w stanie zatrzymania (HALT) pracy procesora.
Liczba odwołań procesora do pamięci lub portu WE/WY określa minimalną liczbę cykli maszynowych rozkazu (wyjątkiem jest rozkaz DAD). Każdy rozkaz odwołuje się co najmniej raz do pamięci w celu pobrania jego kodu . Np. jednobajtowy rozkaz dodania zawartości rejestrów wewnętrznych procesora ( ADD r) jest realizowany w jednym cyklu maszynowym. Pobrany rozkaz zawiera w pojedynczym słowie ośmiobitowym kod rozkazu oraz adres rejestru, którego zawartość jest dodawana do bieżącej zawartości rejestru akumulatorowego (A). W trzech cyklach zegarowych jest pobranie rozkazu a w czwartym jego wykonanie. Dodatkowe odwołanie do pamięci ( dodatkowy cykl maszynowy) ma miejsce w przypadku rozkazu ADD M, dla rejestru pamięciowego M. Ten rejestr jest wskazywany w pamięci operacyjnej ( ROM lub RAM) zawartościami rejestrów H i L.
5. Dane można wprowadzać za pomocą prostych klawiatur numerycznych (gdy program zadawany jest w języku wewnętrznym maszyny np. w kodzie heksadecymalnym) lub złożonych, tzw. pełnych klawiatur alfanumerycznych. Stany wewnętrzne procesora, informację wprowadzaną i informację wyprowadzaną z procesor można wyświetlić w postaci binarnej za pomocą pojedynczych diod świecących lub w formie zakodowanej najczęściej heksadecymalnej, stosując wskaźniki 7-segmentowe. Naciśnięcie wybranego klawisza ma wygenerować zakodowany (wielobitowy) odpowiednik tego znaku. Licznik pierścieniowy, kodera klawiatury, dokonuje operacji przeglądania klawiatury. Na jednym z jego przewodów wyjściowych (SL) pojawi się aktywny sygnał logiczny (o lub 1), wędrujący cyklicznie przez kolejne linie. Aktywna linia SL jest rozpoznawana przez koder i jednocześnie przenoszona przez naciśnięty klawisz. W ten sposób rozpoznane zostaje pole klawiatury w którym naciśnięto klawisz. Kod znaku na liniach wyjściowych (WY) kodera zostaje wprowadzony do pamięci w zadanej formie lub przetworzony do standardowej postaci (na ogół ASCII) Ponieważ szybkość wprowadzania znaków z klawiatury jest bardzo mała (w stosunku do szybkości czytania znaków przez procesor) na drodze między klawiatura a magistralą danych wstawiane są rejestry buforowe, które sterują przesyłem danych do procesor w trybie z potwierdzeniem. Układ sprzęgający klawiatury wysyła do procesora żądanie przerwania (INTR) dla wykonania odczytu danych z portu równoległego klawiatury. Elementem sprzęgającym klawiatury, w systemie mikroprocesorowym x80/86 może być układ 8255 a nawet prosty rejestr 8212.
Wyświetlanie za pomocą diody stosowane jest do wskazania poziomów logicznych sygnałów na wybranych przewodach, sygnalizujących stany wewnętrzne procesora lub stany pracy sygnałów sterujących w maszynie cyfrowej. Wartość zmiennych adresowanych oraz wartość bitów danych wyświetlane są w formie zakodowanej, np. w kodzie heksadecymalnym. Na rysunku przedstawiono schemat blokowy układu sterowania wyświetlaczem 7-segmentowym. 8-bitowa informacja wprowadzana zostaje do rejestru równoległego 8212, gdzie zostaje zapamiętana. Przez 8-bitowy blok wzmacniaczy wysterowany zostaje wskaźnik 7- segmentowy, a więc uprzednio musi być wykonana konwersja kodu heksadecymalnego na kod wskaźnika. Wysterowanie większej liczby wskaźników wymaga rozbudowania układu sterowania przez powielenie całego układu lub zastosowanie wyświetlacza dynamicznego. Zamiast elementu 8212 można użyć elementu sprzęgającego 8255, do którego można podłączyć dwa wskaźniki 7-segmentowe. (STB, CLR, MD).
Firma Intel opracowała różne układy specjalizowane jak 8279, zwany sterownikiem klawiatury i wyświetlacza. Element dużej skali integracji 8279 służy do przyłączenia do systemu mikroprocesorowego klawiatury zawierającej do 64 klawiszy oraz wyświetlacza w postaci niezależnych diod świecących lub 16 wskaźników 7-segmentowych. Przewody D0-7 są magistralą do transmisji danych zasadniczych (wyświetlacz i klawiatura) oraz słów sterujących (programowych) i słowa statusowego.