LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Podobne dokumenty
ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Arytmetyka stałopozycyjna

Podstawy Informatyki

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Systemy zapisu liczb.

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Operacje arytmetyczne

Pracownia Komputerowa wykład V

Zapis liczb binarnych ze znakiem

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

SYSTEMY LICZBOWE 275,538 =

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Arytmetyka binarna - wykład 6

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

System liczbowy jest zbiorem reguł określających jednolity sposób zapisu i nazewnictwa liczb.

Kod U2 Opracował: Andrzej Nowak

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Stan wysoki (H) i stan niski (L)

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

1.1. Pozycyjne systemy liczbowe

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Arytmetyka liczb binarnych

Podstawy Informatyki

1259 (10) = 1 * * * * 100 = 1 * * * *1

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Naturalny kod binarny (NKB)

Teoretyczne Podstawy Informatyki

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

Liczby rzeczywiste są reprezentowane w komputerze przez liczby zmiennopozycyjne. Liczbę k można przedstawid w postaci:

Technologie Informacyjne

Metoda znak-moduł (ZM)

Adam Korzeniewski p Katedra Systemów Multimedialnych

Pracownia Komputerowa wykład VI

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

Wprowadzenie do informatyki - ć wiczenia

Wstęp do informatyki- wykład 1 Systemy liczbowe

Pracownia Komputerowa wyk ad V

Adam Korzeniewski p Katedra Systemów Multimedialnych

Wstęp do Informatyki

DZIESIĘTNY SYSTEM LICZBOWY

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Kodowanie informacji. Kody liczbowe

SYSTEMY LICZBOWE. SYSTEMY POZYCYJNE: dziesiętny (arabski): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 rzymski: I, II, III, V, C, M

1. Operacje logiczne A B A OR B

Cyfrowy zapis informacji

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Pracownia Komputerowa wykład IV

Informatyka kodowanie liczb. dr hab. inż. Mikołaj Morzy

DZIAŁANIA NA UŁAMKACH DZIESIĘTNYCH.

Kodowanie liczb całkowitych w systemach komputerowych

Operacje arytmetyczne w systemie dwójkowym

RODZAJE INFORMACJI. Informacje analogowe. Informacje cyfrowe. U(t) U(t) Umax. Umax. R=(0,Umax) nieskończony zbiór możliwych wartości. Umax.

Architektura komputerów

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI

Podstawy Informatyki dla Nauczyciela

Cyfrowy zapis informacji. 5 grudnia 2013 Wojciech Kucewicz 2

Wstęp do informatyki- wykład 2

Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące

System Liczbowe. Szesnastkowy ( heksadecymalny)

Plan wykładu. Architektura systemów komputerowych. MnoŜenie realizacja sprzętowa (wersja 1) Układy mnoŝące liczby całkowite.

Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

Pozycyjny system liczbowy

Systemem liczenia systemach addytywnych !!" Pozycyjny system liczbowy podstawą systemu pozycyjnego

Systemem liczenia systemach addytywnych !!" Pozycyjny system liczbowy podstawą systemu pozycyjnego

Pracownia Komputerowa wyk ad IV

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

Systemy liczbowe używane w technice komputerowej

Architektura systemów komputerowych. Arytmetyka maszyn cyfrowych

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Wprowadzenie do informatyki - ć wiczenia

Przykładowe pytania DSP 1

Dodawanie liczb binarnych

Techniki multimedialne

MNOŻENIE W SYSTEMACH UZUPEŁNIENIOWYCH PEŁNYCH (algorytm uniwersalny)

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

...o. 2. ZARYS ORGANIZACJI MASZYNY TYPOWEJ

przeniesienie pożyczka

Szybkie układy mnożące

Wprowadzenie do informatyki ćwiczenia

Języki i metodyka programowania. Reprezentacja danych w systemach komputerowych

Szybkie układy mnożące

Arytmetyka stało i zmiennoprzecinkowa

Moduł 2 Zastosowanie systemów liczbowych w informacji cyfrowej

Pracownia Komputerowa wyk ad VI

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

ARYTMETYKA KOMPUTERA

Architektura komputerów

Zwykle liczby rzeczywiste przedstawia się w notacji naukowej :

L6.1 Systemy liczenia stosowane w informatyce

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Kod IEEE754. IEEE754 (1985) - norma dotycząca zapisu binarnego liczb zmiennopozycyjnych (pojedynczej precyzji) Liczbę binarną o postaci

W jaki sposób użyć tych n bitów do reprezentacji liczb całkowitych

Technika Cyfrowa i Mikroprocesorowa

Transkrypt:

LABORAORIUM PROCESORY SYGAŁOWE W AUOMAYCE PRZEMYSŁOWEJ Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

1. Zasady arytmetyki stałoprzecinkowej. Kody stałopozycyjne mają ustalone miejsce rozdziału części całkowitej i ułamkowej, czyli miejsce przecinka, co oznacza, że dokładność reprezentacji jest stała. Aby mówić o arytmetyce stałoprzecinkowej trzeba wiedzieć, w jaki sposób zapisywane są liczby dodatnie i ujemne. Dla reprezentacji liczb dodatnich i ujemnych najpowszechniej stosowane są dwa kody: - kod znak moduł (ZM) - kod uzupełnienia do dwóch (U2) Kod ZM jest tworzony przez dodanie bitu znaku na początku każdej liczby, który wskazuje czy liczba jest dodatnia czy ujemna. Przyjęło się, że gdy liczba jest ujemna bit jest równy 1 a dalsze bity reprezentują moduł liczby. Gdy liczba jest dodatnia to bit znaku jest równy 0. Zakres reprezentowanych liczb zależy od długości słowa. Za pomocą n-bitowego słowa można przedstawić liczby z zakresu: 2 1 ; 2 n1 n1 1, gdzie n ilość bitów liczby. a przykład za pomocą 8-bitowego słowa można przedstawić liczby z zakresu 127 do 127. Liczba 34 będzie zapisana w tym kodzie jako 0000, a liczba 34 jako 00. Kod ZM ma wadę która stwarza problemy przy realizacji algorytmów arytmetycznych, jest to podwójna reprezentacja liczby zero. Dla słowa 8-bitowego jest to liczba 00000000, jak i 000000. Aby mówić o kodzie U2 należy najpierw wspomnieć o kodzie uzupełnienia do jednego (U1). W kodzie tym waga najbardziej znaczącej pozycji (MSB) ma wagę ujemną równą sumie wszystkich innych wag. Wartość liczbową można obliczyć ze wzoru: n 2 n1 i 2 1 1 i 2 i0 X a n a, gdzie n ilość bitów liczby, a wartość bitu (0 lub 1) Stąd wynika, że w tym kodzie liczby dodatnie są reprezentowane tak jak w naturalnym kodzie binarnym (KB), pod warunkiem, że długość słowa będzie odpowiednio duża, aby na MSB było 0. Przykładowo liczba 4 nie może być reprezentowana przez 3-bitowe słowo 0,

ale, przez co najmniej 4-bitowe 00. atomiast liczby ujemne na MSB mają 1, a pozostałe bity mają wartości przeciwne niż bity słowa kodu KB reprezentującego moduł tej liczby. Przykładowo liczba 34 jest przedstawiana w kodzie U1 na 8 pozycjach jako 0000, a liczba 34 jako 1111. Dla kodu U2 wartość liczbową można obliczyć ze wzoru: n 2 n1 i 1 2 i 2 i 0 X a n a, gdzie n ilość bitów liczby, a wartość bitu (0 lub 1). Stąd wynika, że w tym kodzie liczby dodatnie są reprezentowane tak jak w KB, gdyż waga najbardziej znaczącej pozycji jest ujemna. Aby zapisać liczbę ujemną w kodzie U2 należy najpierw zapisać ją w kodzie U1 a następnie dodać 1. a przykład 34 jest przedstawiana w kodzie U2 na 8 pozycjach jako 1111. Istotną cechą kodu U2 jest fakt, że liczba 0 ma tylko jedną reprezentację (dla słowa 8- bitowego 00000000). Wielką zaletą jest to, że podczas wykonywania operacji arytmetycznych wymagany jest tylko jeden sumator dla liczb dodatnich i ujemnych. Stałoprzecinkowe urządzenia DSP wykorzystują kod U2 i dlatego zasady arytmetyki stałoprzecinkowej zostaną omówione w oparciu o ten kod. Dodawanie liczb stałopozycyjnych. Operację dodawania realizuje się od najmniej znaczących bitów składników sumy: 34 13 47 0000 000011 001111 Odejmowanie liczb stałopozycyjnych. Operacja ta sprowadza się do dodawania liczb ujemnych: 34 13 21 0000 111011 0001

Projektując układy realizujące operacje arytmetyczne należy uwzględniać zakres argumentów tych operacji oraz zakres wyniku. Ponieważ często zakłada się, że wynik operacji ma taką samą długość, co argumenty, to w czasie wykonywania operacji arytmetycznych należy kontrolować zakres wyniku. Innymi słowy mówiąc dodając liczby tego samego znaku, istnieje możliwość, że ilość bitów wyniku będzie większa niż ilość bitów argumentów. W takim przypadku wynik oczywiście jest błędny. Aby wykryć taką sytuację należy porównać znak argumentów ze znakiem wyniku. Mnożenie liczb stałopozycyjnych. Podobnie jak w systemie dziesiętnym tak i w systemie dwójkowym liczby mnoży się w tylu ach z ilu bitów składają się czynniki. Jeśli mnożymy dwie liczby 8-bitowe w systemie dwójkowym, to mnożenie wykonujemy w 8 ach a wynik może być 16-bitowy. Mnożenie liczb dziesiętnych polega na tym, że w jednym u mnożymy jedną cyfrę mnożnika przez mnożną, a iloczyn, zwany cząstkowym, wpisujemy z odpowiednim przesunięciem. a końcu algorytmu sumujemy wszystkie iloczyny cząstkowe, co daje nam wynik. Ponieważ w urządzeniach cyfrowych stosuje się zwykle sumatory 2-argumentowe, to algorytm mnożenia musi być tak zmodyfikowany, aby w każdym u wykonywać sumowanie iloczynów cząstkowych. Dlatego w każdym u mnożenia liczb dwójkowych wykonywane są dwie operacje: dodawanie i przesunięcie iloczynu cząstkowego o jedną pozycję w prawo. Jednym ze składników dodawania jest zawsze iloczyn cząstkowy a drugi składnik zależy od aktualnej wartości najmniej znaczącego bitu (LSB) mnożnika. Jeśli jest on równy 1 to składnikiem jest mnożna, jeśli jest on równy 0 to składnikiem jest zero. Algorytm mnożenia można przedstawić następująco: 1.Wpisać na mniej znaczącej części (RL) rejestru mnożnik. 2.Do bardziej znaczącej części (RH) rejestru dodawać odpowiednią wartość (zero lub mnożną) w zależności od LSB. 3.Przesunąć wynik w rejestrze o jedną pozycję w prawo.

4.Jeśli wykonano odpowiednią liczbę ów (liczba bitów argumentów) to algorytm sprawdza czy mnożnik był liczbą ujemną. Jeśli tak, należy dokonać korekcji, która polega na dodaniu do bardziej znaczącej części rejestru mnożną. Jeśli nie, korekcja nie jest wymagana i algorytm kończy się. Schemat blokowy algorytmu mnożenia: S A R - licznik ów M - m nożna RL - m nożnik RH - 00..00 R 0 =1 R H =R H +0 R H =R H +M Przesunięcie R w prawo = -1 =0 M>0 R H =R H +M SOP

Przykład: mnożenie liczb 0111 ( 7 ) i 01 ( 5 ). 000001 zapisanie mnożnika na mniej znaczącą część rejestru 0111 dodanie 7 0011 przesunięcie 0011 dodanie 0 000111 przesunięcie 0011 dodanie 7 0001 przesunięcie 0001 dodanie 0 00001 wynik 35 przesunięcie 1 2 3 4 Istnieje możliwość przyspieszenia działania algorytmu przez grupowanie bitów. Przyspieszenie polega na tym, że w niektórych ach algorytmu pomija się operację dodawania. W każdym u algorytmu modyfikacja zawartości RH następuje w zależności od pary najmniej znaczących bitów rejestru wyniku częściowego. Jeśli para ta jest 00 lub 11, to w danym u do RH dodaje się 0. Jeśli para ta jest 01, to w danym u do RH dodaje się mnożną, a gdy para ta jest, to od RH odejmuje się mnożną. ak zmodyfikowany algorytm nosi nazwę algorytmu Bootha. Schemat blokowy algorytmu:

SAR - licznik ów M - m nożna RL - m nożnik RH - 00..00 R 1 R 0 01 00 11 R H=RH +M R H=RH +0 R H=RH -M Przesunięcie w prawo R = -1 =0 S OP Dzielenie liczb stałopozycyjnych. Dzielenie liczb dwójkowych jest działaniem trudniejszym od ich mnożenia, gdyż iloraz trzeba zapisać na skończonej liczbie bitów. Oznacza to, że wynik otrzymamy z pewną dokładnością. W algorytmie należy założyć liczbę ów i długość wyniku. Algorytmów dzielenia jest bardzo dużo, a tu zostanie przedstawiony jeden z prostszych: 1.Wpisać do rejestru (RH+RL) dzielną. 2.Przesunąć zawartość rejestru o jedną pozycję w lewo.

3.Odjąć od zawartości RH dzielnik a) Jeśli wynik jest dodatni to na LSB rejestru RL wpisujemy 1, a w rejestrze RH pozostaje otrzymana różnica. b)jeśli wynik jest ujemny to na LSB rejestru RL wpisujemy 0, a do rejestru RH zapisujemy wartość sprzed odejmowania. 4.Jeżeli wykonano założoną liczbę ów algorytm kończy się, iloraz jest dostępny w RL a reszta w RH. Schemat blokowy: SAR - licznik ów M - dzielnik RL+RH - dzielna Przesunięcie R w lewo RH=RH -M R H>0 R 0 =1 R 0 =0 RH=RH+M = -1 =0 SOP

Przykład: dzielenie liczb 0000 36 - dzielna i 01 5 - dzielnik. 0000 zapisanie dzielnej w rejestrze R 000_ przesunięcie 11110_ < 0 odejmowanie 0000 R 0 =0, RH=RH+D 000_ przesunięcie 00000_ > 0 odejmowanie 000001 R 0 =1 00001_ przesunięcie 00101_ > 0 odejmowanie 001011 R 0 =1 01011_ przesunięcie 00011_ > 0 odejmowanie 000111 wynik 7 reszty 1 R 0 =1 1 2 3 4 2. Zasady operacji arytmetycznych w formatach Q. Opisany wyżej format U2 nie zawiera ułamka binarnego i nie może reprezentować postaci ułamkowej liczby. echnika cyfrowego przetwarzania sygnałów bardzo często wykorzystuje jednak zapis ułamkowy. Jednym z powodów jest fakt, że podczas mnożenia ułamków wynik zawsze będzie mniejszy od jedności, dzięki czemu nie może nastąpić przepełnienie. W celu reprezentacji liczb ułamkowych niezbędne jest zastosowanie przecinka binarnego. Umiejscowienie przecinka nie ma wpływu na funkcjonowanie jednostki arytmetycznej, czy też układu mnożącego. Przecinek ten ma jedynie wpływ na dokładność wyniku i jest on kwestią umowną programisty. W celu ujednolicenia 16-bitowej struktury rodziny procesorów MS320 firma exas Instruments przyjęła format zapisu Q15. Liczba występująca po Q oznacza liczbę bitów części ułamkowej. Wynika z tego, że dla słowa 16-bitowego format Q15 wydziela 1 bit dla znaku liczby i 15 bitów na jej część ułamkową, bez przydziału bitów na część całkowitą. Podobnie liczba 4-bitowa o formacie Q3 zawiera 1 bit znaku i 3 bity części ułamkowej. Zasada tworzenia liczb w formacie Q polega na tym, że pierwszy bit określa znak liczby ( 0 -dodatnia, 1 - ujemna), kolejne bity określają wartość ułamka.

1 n Wartość tą można obliczyć ze wzoru: a 0 a n 2 n1 X, a 0 - najstarszy bit, określa znak liczby, - ilość bitów liczby. Przykład: Liczba w formacie Q3 0.1 jest dwójkowym odpowiednikiem dziesiętnego ułamka 0,625. Liczba w formacie Q3 1.1 jest dwójkowym odpowiednikiem dziesiętnego ułamka -0,75. Wszystkie operacje arytmetyczne na liczbach, niezależnie od formatu Q, w jakim są zapisane, realizuje się w jednakowy sposób, dlatego wszystkie przykładowe obliczenia zostaną przeprowadzone w formacie Q3. Dodawanie i odejmowanie liczb w formacie Q3. Zasady dodawania i odejmowania są identyczne jak w przypadku binarnych liczb całkowitych, co można zauważyć w przykładach: 0,750 0,125 0.1 0.001 0,750 0,125 0.1 1.111 0,875 0.111 0,625 0.1 Mnożenie liczb w formacie Q3. Przykład: mnożenie liczb 0.0 ( 0,5 ) i 0.011 ( 0,375 ). 000000 zapisanie mnożnika na mniej znaczącą część rejestru 000000 dodanie 0 000000 przesunięcie 000000 dodanie 0 00000001 przesunięcie 001001 dodanie 0,375 000100 przesunięcie 000100 dodanie 0 00.0010 wynik 0,1875 przesunięcie 1 2 3 4

Użycie postaci ułamkowej powoduje, że mnożenie nigdy nie wywoła przepełnienia, natomiast kolejne dodawania mogą je spowodować. Rodzina układów MS320, jest wyposażona w mechanizm zabezpieczający przed negatywnymi skutkami przepełnienia oraz sygnalizuje jego wystąpienie.