Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "Sprzętowa Implementacja Algorytmów Ernest Jamro, AGH Kraków Cordic, Dzielenie, Pierwiastek..."— Zapis prezentacji:

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

2 2 Cordic (COordinate Rotation DIgital Calculation) Zobacz: Omondi, A. R. Computer arithmetic systems... Obrót o kąt X 2 = X 1 * cos( ) - Y 1 * sin( ) Y 2 = X 1 * sin( ) + Y 1 * cos( ) Po przekształceniu: X 2 = cos( ) * [ X 1 - Y 1 * tan( ) ] Y 2 = cos( ) * [ X 1 * tan( ) + Y 1 ]

3 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 4 CORDIC – Iteracje Iteracja 1 X 2 = cos( 21 ) * [ X 1 - Y 1 * tan( 21 ) ] Y 2 = cos( 21 ) * [ X 1 * tan( 21 ) + Y 1 ] Iteracja 2 X 3 = cos( 32 ) * { X 2 - Y 2 * tan( 32 ) } Y 3 = cos( 32 ) * { X 2 * tan( 32 ) + Y 2 } itd. Mnożenie przez cos( ) można wykonać na samym końcu a nie w każdej iteracji.

5 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 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 7 Sprzętowa implementacja Kaskadowa Sekwencyjna

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

9 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 ( >2) Dokładniejszy opis normalizacja można znaleźć w wykładzie liczby zmiennoprzecinkowe

10 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 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 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 13 Operacja dzielenia: Newton-Raphson Znajdowanie miejsca zerowego funkcji: Nachylenie stycznej w danym punkcie, f(X i+1 )=0 Przekształcając otrzymujemy Szukamy miejsca zerowego funkcji: Rozwiązanie (miejsce zerowe): X= 1/D Pochodna f (X)= 1/X 2

14 14 Dzielenie: metoda Newtona – Raphsona Przykład: dzielenie przez 3, D=3 x 0 = 0.5 x 1 = 0.5( ·3)= 0.25 x 2 = x 3 = x 4 = x 5 = Każda iteracja podwaja liczbę poprawnych bitów wyniku

15 15 Newton-Raphson c.d. : Określić wartość wstępną x 0 = 1/b np. za pomocą LUT i odpowiednich przesunięć Iteracyjnie obliczyć x i+1 = x i (2-x i b) aż do punktu zbieżności (w n krokach). Proces iteracyjny jest tym szybciej zbieżny im wartość początkowa x 0 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 16 Newton-Raphson c.d. FF – rejestry (ang. Flip-Flops)

17 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 18 Pierwiastek kwadratowy bez operacji dzielenia Miejsce zerowe funkcji: Wynikiem powyższej iteracji X K jest dlatego aby otrzymać bezpośrednio pierwiastek należy przeprowadzić operację dzielenia lub co jest zalecane mnożenia:

19 19 SQRT non-restoring digit-by-digit

20 20 Taylor-Maclaurin Ogólna postać: f(x)= a 0 + a 1 x + a 2 x 2 + a 3 x Postać ulepszona (nie trzeba obliczać x n ) (metoda Hornera): f(x)= b 0 + x·(b 1 + x·(b 2 + x·(b ) ) )

21 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 Matlaba: Minimax(Function, Interval, Degree) Minimax – optymalizacja w celu osiągnięcia najmniejszego błędu w najgorszym przypadku

22 22 Wielomiany Czebyszewa T 0 (x)=1 T 1 (x)=x T 2 (x)=2x 2 -1 T 3 (x)=4x 3 -3x T 4 (x)=8x 4 -8x 2 +1 T 5 (x)=16x 5 -20x 3 +5x T 6 (x)=32x 6 -48x 4 +18x 2 -1.

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

24 24 Aproksymacja liniowa Y=Y k +A K ·(X-X K ) Y K =f(X K ) - interpolacja A K =(Y k+1 -Y k )/ = X K+1 -X K Zakłada się, że X K = MSB(X) funkcja skl ejana (ang. spline)

25 25 Aproksymacja kwadratowa Y=Y k +B K ·(X-X K ) + A K (X-X K ) 2

26 26 Aproksymacja kwadratowa 2 Inne rozwiązanie: Y=Y K + B K ·(X-X K ) + A K · (X-X K )·(X K+1 -X) = X K+1 -X K X=X K + x Y=Y K + B K ·x + A K · x·( -x) Wartości współczynników: Y K =f(X K ) B K =(Y k+1 -Y k )/ Założenie przy obliczaniu A K : f(X K + /2)= Y(X K + /2) f(X K + /2)= Y K +B K · /2+A K ·( /2) 2

27 27 Aproksymacja kwadratowa 2 Y=Y K + B K ·x + A K · x·( -x) Y= Y K + x·[B K + A K · ( -x)]


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

Podobne prezentacje


Reklamy Google