Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Sprzętowa Implementacja Algorytmów

Podobne prezentacje


Prezentacja na temat: "Sprzętowa Implementacja Algorytmów"— Zapis prezentacji:

1 Sprzętowa Implementacja Algorytmów
Ernest Jamro, AGH Kraków Cordic, Dzielenie, Pierwiastek...

2 Cordic (COordinate Rotation DIgital Calculation)
Zobacz: Omondi, A. R. „Computer arithmetic systems...” Obrót o kąt  X2 = X1 * cos() - Y1 * sin() Y2 = X1 * sin() + Y1 * cos() Po przekształceniu: X2 = cos() * [ X1 - Y1 * tan() ] Y2 = cos() * [ X1 * tan() + Y1 ]

3 CORDIC – c.d. Wybieramy tg() tak aby = 1, ½, ¼, ... Wtedy:
tan(21) = 1/1 21 = 45° cos(21) = tan(32) = 1/2 32 = ° cos(32) = tan(43) = 1/4 43 = ° cos(43) = tan(54) = 1/8 54 = ° cos(54) = tan(65) = 1/16 65 = ° cos(65) = tan(76) = 1/32 76 = ° cos(76) = W rezultacie: Mnożenie przez tan()- zastępujemy przez dodawanie z przesunięciem Mnożenie przez cos() jest zastępowane przez pojedyncze mnożenie skumulowane przez stałą wartość (zob. następna strona) cos( 21)* cos( 32) * cos( 43) * ...

4 CORDIC – Iteracje Iteracja 1 X2 = cos( 21) * [ X1 - Y1 * tan( 21) ] Y2 = cos( 21) * [ X1 * tan( 21) + Y1 ] Iteracja 2 X3 = cos( 32) * { X2 - Y2 * tan( 32) } Y3 = cos( 32) * { X2 * tan( 32) + Y2 } itd. Mnożenie przez cos() można wykonać na samym końcu a nie w każdej iteracji.

5 CORDIC Przykład Znaleźć sin(28.027°)
Stan początkowy:  = 0° cos() = 1 X = 1 sin() = 0 Y = 0 Rotacja o 45° X' = X - Y / 1 = / 1 = 1 Y' = X / 1 + Y = 1 / = 1 Rotacja z 45° do ° ( 32 = °) (Przesunięcie o kąt ujemny ale cos(- )= cos() więc nie ma to wpływu na wartość skumulowanego iloczynu. Obracamy o kąt ujemny wtedy kiedy skumulowany kąt obrotu jest większy od kąta docelowego.) X' = X + Y / 2 = / 2 = 1.5 Y' = -X / 2 + Y = -1 / = 0.5 Rotacja z ° do ° ( 43 = °) X' = X - Y / 4 = / 4 = Y' = X / 4 + Y = 1.5 / = 0.875

6 CORDIC Przykład - c.d. Rotacja z ° do ° ( 54 = °) X' = X + Y / 8 = / 8 = Y' = -X / 8 + Y = / = ... Rotacja ° do ° ( 87 = 0.895°) X' = X - Y / 64 = / 64 = Y' = X / 64 + Y = / = W rezultacie: sin(28.027°) = * Y = cos(28.027°) = * X = Zamiast mnożyć przez skumulowany czynnik cos() można ustawić: X= zamiast 1 w pierwszej iteracji. Kąt  w każdej iteracji powinien być zapisany w pamięci LUT (w przypadku implementacji sekwencyjnej) w przypadku implementacji kaskadowej jest on wartością stałą.

7 Sprzętowa implementacja
Sekwencyjna Kaskadowa

8 Operacja dzielenia (Algorytm: non-performing division)
: = =Reszta 1 Dziesiętnie: 100:11= 9 reszta 1 100= ( )2 11= (01011)2 -11= (10101)2 9= (1001)2

9 Pozycjonowanie (normalizacja) argumentów dzielenia
Aby przyspieszyć operacje dzielenia należy najpierw odpowiednio przesunąć bitowo dzielną i dzielnik – tak aby na najbardziej znaczących bitach występowały ‘1’ Przykład: a) 1001: 0011 należy zastąpić przez 1001:1100 a wynik podzielić przez 4 ( przesunąć w prawo o 2 bity) w ten sposób zyskujemy 2 takty zegara b) 01100: należy zastąpić przez ( <<1) oraz (<<3) czyli wynik należy podzielić przez 4 (>>2) Dokładniejszy opis normalizacja można znaleźć w wykładzie liczby zmiennoprzecinkowe

10 Operacja dzielenia (Przesunięcie po zerach)
: = Reszta Dziesiętnie: 100:11= 9 reszta 1 100= ( )2 11= (01011)2 -11= (10101)2 9= (1001)2 Dwa zera wiec przesuń dodatkowo o 2 pozycje w lewo i wpisz 2 zera do wyniku

11 Operacja dzielenia Przesunięcie po zerach
Trzy najstarsze bity odejmowania (dzielna-dzielnik): 010: wynik<<=1; wynik|=1; dzielna<<=1; 001: wynik<<=2; wynik|= 2; dzielna<<=2; 000: wynik<<=3; wynik|= 4; dzielna<<=3; 1xx: wynik<<=1; dzielna<<=1; Przesunięcie o więcej niż jeden bit w momencie kiedy wynik odejmowania wskazuje, że Dzielnik > 2*Dzielna lub Dzielnik> 4*Dzielna Uwaga: argumenty muszą być znormalizowane na samym początku

12 Operacja dzielenia Radix 4
Multiplekser: If (w3>=0) then w= w3 Else if (w2>=0) then w=w2 Else if (w1>=0) then w= w1 Else w= w0

13 Operacja dzielenia: Newton-Raphson
Znajdowanie miejsca zerowego funkcji: Nachylenie stycznej w danym punkcie, f(Xi+1)=0 Przekształcając otrzymujemy Szukamy miejsca zerowego funkcji: Rozwiązanie (miejsce zerowe): X= 1/D Pochodna f ’(X)= 1/X2

14 Dzielenie: metoda Newtona – Raphsona
Przykład: dzielenie przez 3, D=3 x0= 0.5 x1= 0.5( ·3)= 0.25 x2= x3= x4= x5= Każda iteracja podwaja liczbę poprawnych bitów wyniku

15 Newton-Raphson c.d. : Określić wartość wstępną x0 = 1/b np. za pomocą LUT i odpowiednich przesunięć Iteracyjnie obliczyć xi+1 = xi(2-xib) aż do punktu zbieżności (w n krokach). Proces iteracyjny jest tym szybciej zbieżny im wartość początkowa x0 poszukiwanego rozwiązania jest bliższa wartości rzeczywistej x. Wymagana liczba iteracji, n, zależy od tego, z jaką precyzją obliczenia mają zostać wykonane. Należy przy tym pamiętać, że każdy następny krok iteracji podwaja ilość poprawnych bitów w wyniku. Można założyć, że po czterech iteracjach jesteśmy w stanie obliczyć odwrotność z dokładnością do 16 bitów. A po 5 iteracjach z dokładnością 32 bitów.

16 Newton-Raphson c.d. FF – rejestry (ang. Flip-Flops)

17 Pierwiastek kwadratowy Newton-Raphson
Szybkość aproksymowania kwadratowa (liczba ważnych bitów podwaja się w każdej iteracji) Wada: - używanie operacji dzielenia

18 Pierwiastek kwadratowy bez operacji dzielenia
Miejsce zerowe funkcji: Wynikiem powyższej iteracji XK jest dlatego aby otrzymać bezpośrednio pierwiastek należy przeprowadzić operację dzielenia lub co jest zalecane mnożenia:

19 SQRT non-restoring digit-by-digit

20 Taylor-Maclaurin Ogólna postać: f(x)= a0+ a1x + a2x2 + a3x3 + ....
Postać ulepszona (nie trzeba obliczać xn) (metoda Horner’a): f(x)= b0+ x·(b1 + x·(b2 + x·(b ) ) )

21 Różne metody wyznaczania współczynników wielomianu
Wykres błędu aproksymacji dla różnych metod wyznaczania współczynników wielomianu aproksymującego - dla funkcji ln(x), x=[1, 2) i wielomianu rzędu 3. Na wykresie jest podany maksymalny błąd dla różnych metod funkcja Matlab’a: Minimax(Function, Interval, Degree) Minimax – optymalizacja w celu osiągnięcia najmniejszego błędu w najgorszym przypadku

22 Wielomiany Czebyszewa
T0(x) = 1 T1(x) = x T2(x) = 2x2-1 T3(x) = 4x3-3x T4(x) = 8x4-8x2+1 T5(x) = 16x5-20x3+5x T6(x) = 32x6-48x4+18x2-1.

23 Redukcja dziedziny wejściowej
Redukcja zakresu danej wejściowej do mniejszego zakresu Obliczanie funkcji dla zredukowanego przedziału Rekonstrukcja funkcji dla całego przedziału wejściowego Przykład: Funkcja przedział x rekonstrukcja sin(x) [0, /2) sin(x+k)= (-1)k sin(x), sin(-x)= sin(x) 2x [0, 1) 2X= 2Xint2x Xint- część całkowita X ln(x) [1,2) ln(X)= Xintln(2) +ln(x) x (0.25, 1] (22ix)= 2i  x 1/x [1, 2) 1/(2i x)= 2-i (1/x)

24 Aproksymacja liniowa Y=Yk+AK·(X-XK) YK=f(XK) - interpolacja
Zakłada się, że XK= MSB(X) YK=f(XK) interpolacja AK=(Yk+1-Yk)/  = XK+1-XK funkcja skl ejana (ang. spline)

25 Aproksymacja kwadratowa
Y=Yk+BK·(X-XK) + AK(X-XK)2

26 Aproksymacja kwadratowa 2
Inne rozwiązanie: Y=YK + BK·(X-XK) + AK· (X-XK)·(XK+1-X) = XK+1-XK X=XK + x Y=YK + BK·x + AK· x·(-x) Wartości współczynników: YK=f(XK) BK=(Yk+1-Yk)/  Założenie przy obliczaniu AK: f(XK+ /2)= Y(XK+ /2) f(XK+ /2)= YK+BK ·/2+AK ·(/2)2

27 Aproksymacja kwadratowa 2
Y=YK + BK·x + AK· x·(-x) Y= YK + x·[BK+ AK· (-x)]


Pobierz ppt "Sprzętowa Implementacja Algorytmów"

Podobne prezentacje


Reklamy Google