21
Koprocesor arytmetyczny
Jest wyodrębnioną częścią procesora, nie jest w stanie pełnić funkcji procesora
podstawowego.
Procesor jest odpowiedzialny za wykonanie programu, koprocesor śledzi
wykonanie programu i pozostaje „w gotowości”. Koprocesor posiada własną
listę rozkazów, niemożliwych do wykonania przez procesor podstawowy.
Koprocesor „wkracza do akcji”, gdy procesor podstawowy napotyka rozkaz
koprocesora.
Rozkaz jest pobierany do rejestru IR
dekodowanie rozkazu
wykrycie, że
jest to rozkaz dla koproc.
„ciało” rozkazu przesłane do koproc. (do
odpowiednika rejestru IR koproc.).
Koproc. jest pozbawiony możliwości:
- pobrania adresu czerpania danych, wysłania rezultatów (wyznaczenie adresu
efektywnego)
- pobrania rozkazu.
Koproc. wywalcza dostęp do magistrali i pobiera argumenty rozkazów, które
ma wykonać. Oba procesory „walczą” o magistralę – koproc. pracuje w trybie
„wykradania taktów”.
Rejestr znaczników – 2 bity:
00 – liczba zwykła
01 – liczba zero
10 – zawartość specjalna
11 – rejestr „pusty”
Procesory mogą pracować na liczbach stałoprzecinkowych.
Formaty liczb stałoprzecinkowych:
a) słowowy całkowity (word integer) – U2, 16 bitów
b) krótki całkowity (short integer) – U2, 32 bity
c) długi całkowity (long integer) – U2, 64 bity
d) BCD upakowany (packed BCD) – 16 bitowy BCD. BCD – 18
cyfr+znak
zajętych 80 bitów (cały rejestr)
22
Formaty zmiennoprzecinkowe:
e) format krótki rzeczywisty (short real). 1 bit na znak, 8 bitów na
część wykładniczą, 24 bity na cz. ułamkową
f) format długi rzeczywisty. 11 bitów na wykładnik, 53 bity na cz.
ułamkową – lepsza precyzja
g) format rzeczywisty rozszerzony – 16 bitów na wykładnik, 64 bity
na część ułamkową – maksymalne wykorzystanie 80 bitów
Formaty danych:
znak
(0=+)
S
wykładnik
E
ułamek
F
Obiekt
0
MAX
0
Plus nieliczba (+NAN)
0
MAX
0
+
0
0<E<MAX
0
Liczba dodatnia
0
0
0
Liczba dodatnia w postaci
nieznormalizowanej
0
0
0
+0
1
0
0
-0
1
0
0
Liczba ujemna w postaci
nieznormalizowanej
1
0<E<MAX
0
Liczba ujemna
1
MAX
0
-
1
MAX
0
Minus nieliczba (-NAN)
Ograniczanie precyzji:
1) IC (infinity control) – np. możemy ustawić tylko +
(-
nie ma)
2) PC (precision control):
a. 00
24 bity
b. 10 53 bity
c. 11
64 bity
d. 01
zarezerwowane
3) RC – zaokrąglanie:
a. 00 – do liczby najbliższej
b. 01 – w dół
c. 10 – w górę
d. 11 – w kierunku zera
Przyczyny przerwania:
PE – precission – utrata dokładności
UE – underflow – niedomiar
OE – overflow – nadmiar
ZE – zero divide
23
DE – denormalized operand – argument w postaci niunormowanej
IE – invalid operation – błędna operacja
Wszystkie przerwania mogą być maskowane (wyłączone) przez użytkownika
Lista rozkazów:
- przesłań (wymiany danych)
- arytmetyczne
- porównania i testowania
- wykonywanie funkcji przestępnych (new!)
- ładowanie stałych (new!)
- operacje sterujące
Lista rozkazów koprocesora – uzupełnienie:
- rozkazy przesłań
- rozkazy arytmetyczne
- porównywanie i testowanie
- funkcje przestępne – gotowe rozkazy do wyznaczania wartości funkcji, np.
trygonometrycznych:
FPTAN
FPATAN
F2XM1 (2
x
-1)
FYL2X (ylog
2
x)
FYL2XP1 (ylog
2
(x+1))
- ładowanie stałych – np. dla liczby
- określona precyzja liczby, np.:
FLD2 (0) FLDPI (
) FLDL2E (log
2
e)
FLD1 (1) FLDL2T
(log
2
10)
- sterowanie
Układy I/O (WE/WY) procesora 8051
Port szeregowy – wprowadzenie i wyprowadzenie danych szeregowo w czasie –
w kolejnych taktach zegara, kolejno „bit po bicie”. Co najmniej 3 przewody –
we, wy, GND (masa)
24
bufor szyny danych – pośredniczy w wymianie danych (magazynowanie),
zamiana postaci danych z równoległej na szeregową
bufor nadajnika – tu jest gromadzone słowo do wysłania i wysyłane bit po bicie
przez linię TxD razem z informacją zabezpieczającą
sterowanie nadajnika – powoduje właściwą transmisję
TxC – przebieg taktujący pracę nadajnika
TxE i TxRDY – świadczą o gotowości nadajnika
TxE – Transmiter Empty – ustawia się później, gdy nadajnik
skończy pracę
TxRDY – ustawia się wcześniej niż TxE
bufor odbiornika – RxD – dane odbierane poprzez bufor szyny danych do
systemu
RxC – taktowanie, RxRDY – gotowość odbiornika, SYNDET - linia nadzorująca
transmisję synchroniczną
Tryby pracy:
+ tryb asynchroniczny – nie oznacza braku sygnału taktującego (jest zegar)
+ tryb synchroniczny
Asynchroniczny:
– musi być to samo taktowanie,
- dane obudowywane ramką – wymagana taka sama budowa ramek w
nadajniku i odbiorniku
bity
startu
(opcja)
bity
stopu
1
dane
1, 1
25
½, 2
5,6,7,8
bitów
bit
parzystości
Między grupami danych mogą wystąpić dowolnie długie przerwy.
Strona odbiorcza szuka bitów startu
Tryb synchroniczny
Zmienia się ramka, kształt umowny
słowo
synchronizacji
dane (słowo
danych)
część
kontrolna
Słowo synchronizacji – w odbiorniku i nadajniku musi być ustawione tak samo;
jedno – monosynchron., dwa – bisynchron.
Wysłanie słowa, później sygnał, że słowo jest prawidłowo rozpoznane (zgłasza
to SYNDET)
Dla trybu synchronicznego dalej są zaczepiane dane, część kontrolna, dane, cz.
kontrolna itd.
Dla trybu bisynchronicznego: słowo synchron., dane, cz. kontrolna, słowo
synchr.2, dane, cz. kontrolna, itd.
Przez cały czas transmisji danych linia SYNDET jest aktywna – dane
przychodzą prawidłowo
Wielomiany – to, co wyjdzie przez dzielenie danych przez ten wielomian to
część kontrolna
Np. CRC16 ma wielomian x
16
+x
15
+x
2
+1
W celu zawieszenia transmisji układ wysyła słowo synchronizacji
Port szeregowy w 8051
W 8051 mamy jeden port szeregowy obsługiwany 2 rejestrami:
- SCON – rejestr sterujący, opisuje warunki pracy portu szeregowego
- SBUF – rejestr danych
SCON:
9F
9E 9D 9C 9B 9A 99 98
SM0 SM1 SM2 REN TB8 RB8 TI RI
MSB
LSB
SM0, SM1 – definiują tryb pracy portu:
26
SM0 SM1 = 00 – tryb zerowy transmisji, tryb synchroniczny, znaki 8-bitowe,
taktowane f
XTAL
/12, bez części kontrolnej i słowa synchronizacji, prędkość
wysyłania/odbioru danych = 1/12 taktu zegara
SM0 SM1 = 01 – tryb 1, asynchroniczny, znaki 8-bitowe, szybkość określona
programowo (za szybkość odpowiada licznik T1), budowa ramki:
bit
startu
8 bitów
danych
bit
stopu
SM0 SM1 = 10 – tryb 2, asynchroniczny, znaki 9-bitowe, szybkość f
XTAL
/64
lub f
XTAL
/32, ramka:
TB8/RB8
bit
startu
8 bitów
danych
bit
stopu
RB8
Bity TB8/RB8 to 9. bit danych, który można ustawić jako bit parzystości
SM0 SM1 = 11 – tryb 3, asynchroniczny, znaki 9-bitowe, licznik T1 określa
prędkość transmisji
Bit SM2 – bit sterujący – akceptacja danych z potencjalnym błędem (ustawiony
na 1):
- jeśli RB8=0 to ramki odrzucane (SM2=0)
- jeśli SM2=1 – ramki akceptowane, nawet jeśli RB8=0
REN – programowe wł/wył odbiornika
Układ czasowo – licznikowy
Odmierzanie określonego odcinka czasu i sygnalizacja o tym, niezależnie od
obciążenia procesora
27
- rejestr słowa sterującego – tu są wpisywane słowa określające zachowania
układu
- CLK – wejście sygnału zegarowego
- GATE – sygnalizacja upływu czasu
te linie pozwalają na programowe
sterowanie pracą licznika
- OUT
Liczniki są negatywne – zliczają „w dół” – zmniejszają swój stan o 1
2 tryby:
- liczniki binarne
- liczniki dziesiętne (w kodzie BCD)
Stałe definiujące prace liczników są 16-bitowe
Mamy 6 trybów pracy liczników
Tryby pracy liczników
Tryb 0
+ akcja jednokrotna
+ podanie nowej stałej nie powoduje zmiany w procesie odliczania (chyba, że
linia GATE się zmieni z 0 na 1)
+ przerwanie po procesie odliczania
+ linia GATE może wstrzymać odliczanie na pewien czas
Tryb 1
+ układ do generowania impulsu o określonej szerokości
+ zapisanie stałej nie powoduje automatycznego włączenia
+ włączenie powoduje przejście linii GATE z 0 na 1, wtedy na OUT pojawia się
0, co inicjuje proces zliczania
+ pod koniec linia OUT =>1 i tak pozostaje
+ tryb jednokrotny
+ linia GATE z 1 na 0 – nic się nie dzieje, z 0 na 1 (powrót) – reset licznika
+ podanie nowej stałej nie powoduje zmiany w procesie odliczania (chyba, że
linia GATE się zmieni z 0 na 1)
Tryb 2 (dzielnik częstotliwości)
+ wpisujemy stała, rusz odliczanie (niezależnie od linii GATE). Po zakończeniu
zliczania, na OUT jest 0
+ repetycja – stan 0 na OUT na 1 impuls CLK. Opisanie nowej stałej – reakcja
od nowego cyklu odliczania
+ w trakcie pracy – GATE z 1 na 0 – wstrzymanie (OUT
1), zawieszenie aż
GATE
1, wtedy wznowienie od bieżącej wartości stałej
Tryb 3 (generator fali prostokątnej – autorepetycja)
+ na podstawie sygnału na WE (CLK) jest generowany przebieg prostokątny o
innej częstotliwości. Wartość stałej/2 powoduje wyznaczenie nowego
28
przebiegu. Jeśli stała jest nieparzysta – zero trwa krócej, 1 jest o jednostkę
dłuższa
+ linia GATE nie wpływa na pracę
Tryb 4 (generowanie pojedynczego impulsu strobującego)
+ odliczanie do 0 – na jeden takt – koniec
+ linia GATE jest niepotrzebna, tryb rusza po wpisaniu stałej
+ linia GATE może ingerować (jeśli zmieni się na 0) – wstrzymanie odliczania.
GATE
1 – wznowienie odliczania
+ tryb jednokrotny, bez repetycji
Tryb 5 (modyfikacja trybu 4 - inaczej się uruchamia)
+ GATE potrzebna do uruchomienia procesu (z 0 na 1)
+ jeśli GATE później przechodzi z 0 na 1 – reset
Układy czasowo – licznikowe w 8051