background image

 

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) 

background image

 

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=+) 

wykładnik 

ułamek 

Obiekt 

MAX 

Plus nieliczba (+NAN) 

MAX 

+

 

0<E<MAX 

Liczba dodatnia 

Liczba dodatnia w postaci 
nieznormalizowanej 

+0 

-0 

Liczba ujemna w postaci 

nieznormalizowanej 

0<E<MAX 

Liczba ujemna 

MAX 

-

 

MAX 

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 

background image

 

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) 

background image

 

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 

dane 

 

1, 1 

background image

 

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: 
 

background image

 

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 

 

 

 

background image

 

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 

background image

 

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