Laboratorium architektury komputerów



Pobieranie 163.05 Kb.
Strona1/3
Data28.01.2018
Rozmiar163.05 Kb.
  1   2   3


Ćwiczenie 4.
Temat ćwiczenia: Jednostka arytmetyczno-logiczna mikrokontrolera 8051.

Realizacja operacji zmiennoprzecinkowych.


Wstęp.
8051 nie posiada zmiennoprzecinkowej jednostki arytmetycznej a na liście rozkazów nie ma operacji zmiennoprzecinkowych, co nie oznacza, że takich operacji zrealizować się na tym procesorze nie da. Istnieją biblioteki dostarczające procedur zmiennoprzecinkowych, np. biblioteka GoFast for 8051 zawiera następujące procedury zmiennoprzecinkowe pojedynczej i podwójnej precyzji: add, subtract, multiply, divide, conversion operations, comparison operations, sin, cos, tan, atan, sqrt, log, log10, exp, pow, fabs, ceil, floor realizowane programowo.
Arytmetyka zmiennoprzecinkowa
W ćwiczeniu zastosowany został format zgodny ze standardem IEEE 754 SINGLE



znak

C7

C6

C5

C4

C3

C2

C1

C0

M22



M5

M4

M3

M2

M1

M0


Cecha mantysa

Wartość liczby zapisanej w formacie jak wyżej liczy się ze wzoru





Cecha

Cecha zapisywana jest w kodzie z obciążeniem (ang. bias). Obciążenie dla przyjętej reprezentacji wynosi 127.


Mantysa

Bit najstarszy jest domyślnie zawsze jedynką i ma wartość 1. Pozostałe bity maja wartości ułamkowe. Bit M22 wartość ½, bit M21 ¼ itd., zatem wartość mantysy z uwzględnieniem najstarszego bitu domyślnego zawiera się zawsze w przedziale [1, 2). I tak mantysa zapisana w standardzie zdefiniowanym powyżej na 7 bitach w sposób następujący

00000000000000000000000 ma wartość 1

10010000000000000000000 ma wartość 1, 5625 (1+ ½ + )



Kombinacje zastrzeżone

Niektóre z kombinacji wartości cechy i mantysy są zastrzeżone dla przedstawienia kodów specjalnych.







Pole
znaku

Pole
cechy

Pole
mantysy

Wartość

0

0...0

0..0

+0 (zero dodatnie)

0

1...1

0...0

+∞

0

1...1

0...01
:
1...1

nieliczba

1

0...0

0...0

-0 (zero ujemne)

1

1...1

0...0

-∞

1

1...1

0...01
:
1...1

nieliczba


Zadania do wykonania w trakcie laboratorium:
Zadanie 1.

Należy wykonać zmiennoprzecinkowe operacje dodawania dwóch podanych liczb, postępując zgodnie z zamieszczonym w dodatku schematem blokowym operacji, wyniki częściowe otrzymane w kolejnych krokach jak i wynik końcowy należy wpisać do otrzymanego formularza.

Do przeliczeń z reprezentacji dziesiętnej na zmiennoprzecinkową i odwrotnie można użyć programu dostępnego pod adresem http://babbage.cs.qc.edu/courses/cs341/IEEE-754.html lub

http://www.exploringbinary.com/floating-point-converter/
Niżej zamieszczony jest formularz przykładowy. Podane liczby A i B są liczbami dziesiętnymi. Obliczenia należy przeprowadzić uwzględniając bity ochronne, czyli bit G (guard), R (round) i S (sticky bit). Zaokrąglenie wyniku należy przeprowadzić zgodnie z formułą zaokrąglenia do najbliższej wartości (round to nearest) (patrz Dodatek B).

Do przeliczenia wartości otrzymanego wyniku binarnego na wartość dziesiętną można wykorzystać konwerter dostępny pod adresem



http://babbage.cs.qc.edu/courses/cs341/IEEE-754hex32.html

Uwaga. Wynik dodawania mantys może dać przeniesienie z pozycji ukrytej. Wtedy należy w kratkę nadmiar wpisać T, skorygować wartość wykładnika (w naszym przypadku – dodać jeden) i przesunąć mantysę w prawo. Takie wartości wpisujemy do wyniku w tej linii.

Pobieranie 163.05 Kb.

Share with your friends:
  1   2   3




©operacji.org 2020
wyślij wiadomość

    Strona główna