wykład 2 (19)


Wybrane pojęcia z arytmetyki binarnej.

0x08 graphic
-1

0

1

Wynik odejmowania

< CY

0x08 graphic

≥ CY

0x08 graphic

≤ CY v Z

> CY v Z

Jeżeli argumentami obliczeń są liczby ze znakiem w notacji kodu U2 to pod uwagę należy wziąć dwa kolejne bity warunkowe. Są to :

N- bit znaku ( powtarza najstarszy bit argumentu )

  1. bit przekroczenia zakresu ( owerflow ), informuje o nieprawidłowości wyniku wskutek przekroczenia zakresu liczb.

Kod U2:

7

0 111

6

0 110

5

0 101

+2 0010

+3 0011

0x08 graphic
4

0 100

+5 0101

+6 0110

3

0 011

+7 0111

!−7 1001

2

0 010

zmiana

1

0 001

znaku,

0

0 000

negacja

0x08 graphic
−1

1 111

i dodanie

−2

1 110

1 na LSB

−3

1 101

−4

1 100

−3 1101

−5 1011

−5

1 011

4 1100

7 1001

−6

1 010

−7 1001

!+4 0100

−7

1 001

−8

1 000

N-

najstarszy bit (znaku)

0x01 graphic

W μP. w których arytmometr nie umożliwia pracy w trybie dziesiętnym. ( kod BCD ) występuje bit warunkowy przeniesienia pomocniczego ( AC ) jest on głównie wykorzystywany przy rozkazie tzw. korekcji dziesiętnej.

75

0111 0101

+89

1000 1001

1 64

1111 1110

AC≡H

CY

0110

(+6)

0000 0100

Rozkaz DAA

AC

(korekcji

0110

(+60)

Dziesiętnej)

1 0110 0100

CY

Przesunięcia logiczne

0 →

SLR

0

← SLL

Przesunięcia arytmetyczne są równoważne z mnożeniem i dzieleniem przez 2.

0

0

1

1

+3

1

1

0

1

+3

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0

1

1

0

+6

1

0

1

0

+6

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0

0

1

1

!

1

1

0

1

-3

0x08 graphic

Powielić bit znaku

← 0 SAL

SAL≡SAR

0x08 graphic
0x08 graphic

SAR

Przesunięcia arytmetyczne.

Przesuwając arytmetycznie w prawo należy powielić bit znaku aby rezultat był prawidłowy. Ponad to zauważamy że przesunięcie logiczne w lewo jest tożsame z przesunięciem arytmetycznym ( wystarczy wspólny rozkaz )

Listy rozkazów.

W omawianych μP. występują różne formaty instrukcji.

KO

*

KO

KO

*

tylko w

Z80

KO

Dana, adres

KO

__Dane, adres__

*

KO

KO

Dana, adres

*

KO

KO

__Dane, adres__

Jednobajtowy KO daje możliwość rozróżnienia prze μP 256 instrukcji. Ze względu na ewentualne rozbudowy listy, praktycznie wszystkie μP. pozostawiają wolne kombinacje KO. Jeśli rozkazy są kodowane jedno- i dwubajtowo, to pewne kombinacje pierwszego bajtu KO dają początek nowej 256-bitowej rodzinie. Wtedy wolne kombinacje mogą np. występować dla kodów dwubajtowych. Jeżeli μP. pobierze niewykorzystywany (niezaimplementowany) KO to można spodziewać się następujących zachowań:

  1. wykonanie instrukcji pustej NOP (no operation)

  2. przypadkowa działalność

  3. blokada pracy - konieczny RESET

  4. począwszy od 16-bitowych μP. przyjęło się, że w takim przypadku μP zgłasza stan wyjątkowy nielegalnej instrukcji

Przy akceptacji przerwania μP kładzie na stosie adres rozkazu który byłby wykonany gdyby nie przerwanie. Ponadto 6502 zapisuje na stosie rejestr statusowy a 6800 wszystkie swoje pozostałe rejestry (wskaźnik stosu SP adresujący stos nie jest na nim oczywiście zapisywany). Warunkiem akceptacji przerwania jest zakończenie instrukcji (dotyczy to NMI) a w przypadku przerwań maskowanych IRQ , także odpowiedni stan bitu zezwolenia (względnie bitu maski). Należy pamiętać że przerwanie NMI jest akceptowane od wyróżnionego zbocza (gdyby było przyjmowane poziomem przerywałoby samo siebie). Po przyjęciu przerwania NMI względnie przerwania maskowanego μP. blokuje zezwolenia na przerwania maskowane. Tak samo dzieje się po podaniu sygnału zerującego μP. Oprócz tego do manipulacji bitem zezwolenia przewidziano dwie instrukcje EI, oraz DI (enable interrupt, disable interrupt). W przypadku zerowania μP. adres z pod którego będzie odczytywany KO pierwszej instrukcji może być określany bezpośrednio (sztywna lokacja: Z80, 8051 - lokacja zerowa) lub w sposób pośredni (głownie Motorole), np. dla 6800 (i 6502), po wyzerowaniu μP odczytuje zawartość dwóch ostatnich lokacji (FFFE, FFFF), umieszcza odczytane bajty w PC i dopiero stamtąd odczytuje KO pierwszego rozkazu.

Jeżeli bit zezwalający (maskujący) przerwania „zwykłe” znajduje się w rejestrze bitów warunkowych, to wykorzystując stos (przy wejściu w obsługę) zapamiętujemy także rejestr bitów warunkowych a przy powrocie odtwarzamy go ze stosu to można w naturalny sposób zapewnić:

  1. przywracanie stanu zezwolenia po zakończeniu obsługi przerwania maskowanego

  2. zapamiętywanie na czas obsługi NMI stanu zezwolenia przerwań zwykłych

W μP Z80 bit zezwolenia jest ulokowany jest poza rejestrem bitów warunkowych. Jest to przerzutnik IFF1 Ponieważ przy wejściu w obsługę przerwania zostaje on wyzerowany, więc przed rozkazem powrotu musimy umieścić instrukcję EI. Razem z przerzutnikiem IFF2 przerzutnik zezwolenia tworzy jednopoziomowy stos. Przy akceptacji NMI stan IFF1 przed wyzerowaniem zapamiętywany jest w IFF2 w celu późniejszego odtworzenia. Kolejną konsekwencją jest stosowanie w związku z tym oddzielnego rozkazu powrotu z przerwań niemaskowanych RETN. Oprócz niego do powrotu z przerwania zwykłego używamy rozkazu RET lub instrukcji RETI, jeżeli w systemie występują interfejsy rodziny Z80 połączone w łańcuszkowym systemie przerwań (układy te dekodują tzn. rozpoznają rozkaz RETI), co powoduje, że układ aktualnie obsługiwany wycofuje żądanie obsługi. Ponadto instrukcja RET1 nadmiarowo odtwarza IFF1 z IFF2.

Jeśli mP „zdecydował się” przyjąć przerwanie zwykłe, to przeważnie inicjuje cykl akceptacji przerwania. W cyklu tym, od urządzenia przerywającego bądź kontrolera zarządzającego wieloma źródłami przerwań mP otrzymuje poprzez szynę danych :

  1. Kod operacyjny pierwszej instrukcji obsługi przerwania

  1. Indeks do tabeli z adresami startowymi obsługi dla różnych źródeł przerwań.

Jeżeli tablica z adresami obsługi jest tylko jednoelementowa to cykl akceptacji nie występuje (jest on domyślny, mP ładuje go z jednoelementowej tablicy). Ponadto możliwe jest rozpoczynanie obsługi od sztywnych lokacji. Dotyczy to NMI Z80 (start od adresu 0066H lub dla trybu pierwszego obsługi przerwań w tym mP kiedy obsługa każdego źródła przerwania IRQ rozpoczyna się od lokacji 0038H. Powszechną praktyką we współczesnych mP jest stosowanie tabeli z adresami startowymi względnie z deskryptorami).

W trybie zerowym Z80 mP wykonuje :

Przy trybie drugim przerwań mP wykona następujące cykle (rozkaz programu głównego został zakończony) :

15 8

7

0

I

Nr. urządzenia

0

Dosłany w cyklu akceptacji (INTA)

0x08 graphic

Adres startowy 0

1

256 kB

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

Adres startowy 127


Dwie kolejne lokacje odczytane z tabeli po złożeniu tworzą adres startowy procedury obsługi danego urządzenia. Tabela adresów startowych znajduje się w pamięci RAM co umożliwia modyfikację w jej zawartości podczas pracy mP. Zauważamy, że w pamięci mP może być więcej niż jedna tabela, dostęp do odpowiedniej następuje poprzez zmianę zawartości rejestru I.

W przypadku 6800 i 6502 z powodów podanych uprzednio nie występuje cykl akceptacji. mP od razu ale po uprzednim zapamiętaniu właściwych rejestrów na stosie odczytuje zawartość dwóch odpowiednich bajtów z końca przestrzeni adresowej, ładuje je do PC i rozpoczyna obsługę. W zwykły sposób nie jest możliwe rozróżnienie więcej niż jednego przerwania maskowanego.

W niektórych systemach z 6800 pamięć stała obejmuje tylko dwie ostatnie lokacje, pozostałe adresy startowe można modyfikować w pamięci RAM.

Mechanizm tablicy adresów startowych umożliwia tworzenie systemów obsługi priorytetowej. Dla Z80 może to dotyczyć przerwań IRQ1 - IRQ7 (najważniejsze). Załóżmy, że wszystkie siedem urządzeń ingeruje w wejście INT na zasadzie bramek OC, natomiast w cyklu akceptacji mP odczytuje stan zgłoszeń wszystkich siedmiu urządzeń (poziom aktywny niski).

0x08 graphic


0x08 graphic
0x08 graphic

IRQ7 . . . . . . . . . IRQ1

Tabela adresów startowych

0x08 graphic
0XXXXXX

0

0x08 graphic

64 x adres dosłany IRQ7

10XXXXX

63

0x08 graphic

64

0x08 graphic

32 x adres dosłany IRQ6

95

0x08 graphic
1111110X

127

1 x adres d0x08 graphic
osłany

IRQ1

Procedura obsługi przerwania podobnie jak podprogram winna na początki zapisać na stos stan tych rejestrów, które mogą być zmienione ( są wykorzystywane podczas realizacji procedury). Na końcu czynności właściwej obsługi znajdują się rozkazy odtwarzające w odwrotnej kolejności stan zachowanych rejestrów po czym procedura kończy się rozkazem powrotu z przerwania. Zwykle przy większej ilości przerwań stosujemy strukturę jednopoziomową tzn. następne może być obsłużone po zakończeniu obsługi poprzedniego. Możliwa jest również obsługa wielopoziomowa. Posługuje się ona kontrolerami przerwań (INTEL) lub korzysta z wrodzonych własności μP (rodzina MOTOROLA 68000). W przypadku omawianych 8-bitowych μP, aby dopuścić następne. należy w obsłudze po zachowaniu rejestru odblokować przerwania. W przypadku Z80 zamiast korzystać ze stosu można posłużyć się rejestrami alternatywnymi.

W przypadku obsługi większej ilości przerwań możliwa jest struktura zdecentralizowana (każdy moduł samodzielnie w cyklu akceptacji wysyła swój numer). Dotyczy to μP Z80 i rodziny 68000). Z drugiej strony w systemie może istnieć scentralizowany kontroler który zbiera wszystkie żądania wybiera najważniejsze, umożliwia różne maskowanie i temu podobnie po czym akceptacji wysyła do μP numer przerwania wybranego do obsługi. Sposób ten stosuje INTEL. Stosuje się sterowniki 8214 (prosty, priorytetowy, z maską) 8259 (programowany). Ten drugi wymaga od μP (i cała rodzina 80x86 do tego się stosuje) dwóch cykli akceptacji przerwania. W pierwszym cyklu rozstrzygane są sprawy priorytetów pomiędzy sterownikiem Master a Slave'ami (układy te można łączyć kaskadowo). Dopiero w drugim cyklu μP oczekuje numeru urządzenia skierowanego do obsługi.

Układy rodziny Z80 wykorzystywały po raz pierwszy łańcuszkowy sposób przerwań stosowany potem powszechnie w różnych standardach magistral.

0x08 graphic




Układy ABC są układami peryferyjnymi z rodziny Z80. Są one specjalnie przystosowane do pracy w łańcuszkowym systemie przerwań. Po wyzerowaniu μP realizuje zaprogramowanie układów peryferyjnych. Polega ono na wysłaniu pod adres (adresy) tych układów w przestrzeni we/wy, umownych bajtów precyzujących wybrany sposób działania. Między innymi μP programuje jaki numer (numery) dany układ wyśle przez DB do μP w cyklu akceptacji. Po zaprogramowaniu układy pracują zgodnie ze swoim przeznaczeniem (np. odmierzanie czasu, obsługa portu szeregowego) i jeśli jest to konieczne wystawiają żądanie obsługi. Obowiązują następujące reguły gry:

  1. Układ obsługiwany podtrzymuje aktywny sygnał żądający aż do rozpoznania w cyklach pobrania (dwóch) rozkazu RETI (aktywne linie M1 i RD).

  2. W cyklu akceptacji wysyła swój numer to urządzenie które :

  1. żąda obsługi

  2. na swoim wejściu IEI ma stan wysoki

  1. Urządzenie wystawiające numer steruje swoje wyjście IEO w stan niski.

  2. Każdy układ transmituje bezwarunkowo 0 z IEI na IEO

Mimo blokady na IEI każdy układ jeśli to konieczne steruje wyjście żądające INT i czeka aż do skutku.

Jeśli chodzi o bezpośredni dostęp do pamięci to system Z80 rozwiązuje ten problem także metodą łańcuszkową. W łańcuszku pracują dedykowane sterowniki DMA. Każdy z nich obsługuje jeden kanał dostępu do pamięci. Alternatywą jest stosowanie zcentralizowanego sterownika obsługującego większa ilość kanałów, czego przykładem są systemy INTELA (sterownik 8237 i następne).

9

0x01 graphic

0x01 graphic



Wyszukiwarka

Podobne podstrony:
PRCz Wyklady 19 21a
PRAWO ADMINISTRACYJNE wyklad 19 11 2011 id 386058
Psychologia rozwojowa - Brzezinska - wyklad 19 - Wiek przedszkolny zagrozenia, Hobby, Psychologia ro
prawo do wykładu 2(19,03,2010r)
Młoda Polska WYKŁAD (19 03 1014)
Wyklad11tt16 19, aaa, studia 22.10.2014, Materiały od Piotra cukrownika, materialy Kamil, Szkoła, El
wyklad11tt16-19, aaa, studia 22.10.2014, Materiały od Piotra cukrownika, materialy Kamil, Szkoła, El
Z Wykład 19.04.2008, Zajęcia, II semestr 2008, Analiza matematyczna
12 wyk�ad 19 zakazy , wykład 19
PATOMORFOLOGIA wykład 45 19, PATOMORFOLOGIA wykład 19 (45) (13 III 02)
wykłady, Wyklad 19, Zakażenia szpitalne
nanotechnologia - wykłady, Wykład 3 i 4 (19.04.2012 - 26.04.2012)
KPC Wykład (19) 12 03 2013
wykład 8 - 19.02.2008, FARMACJA, ROK 5, TPL 3, Zachomikowane
makroekonomia, wykład 6 - 19.03.2012, Nota elegancka

więcej podobnych podstron