Složitější aritmetické operace

Podobné dokumenty
Direct Digital Synthesis (DDS)

Numerické řešení nelineárních rovnic

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Numerická matematika 1

metoda Regula Falsi 23. října 2012

Numerické metody a programování. Lekce 7

úloh pro ODR jednokrokové metody

Iterační výpočty Projekt č. 2

Operace v FP a iterační algoritmy. INP 2008 FIT VUT v Brně

Goniometrie a trigonometrie

Hledání kořenů rovnic jedné reálné proměnné metoda půlení intervalů Michal Čihák 23. října 2012

Iteračníalgoritmy: Goldschmidtůvpro dělení a CORDIC pro výpočet sin, cos. Demonstrační cvičení 9 INP

DRN: Kořeny funkce numericky

Při návrhu FIR filtru řešíme obvykle následující problémy:

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

Numerické řešení nelineárních rovnic

Numerické řešení nelineárních rovnic

Dělení. Demonstrační cvičení 8 INP

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni

Numerická matematika Banka řešených příkladů

1. Chyby vstupních dat metody převedení úlohy na numerickou (řád použité metody) zaokrouhlovací reprezentace čísel v počítači

MĚŘENÍ A ANALÝZA ELEKTROAKUSTICKÝCH SOUSTAV NA MODELECH. Petr Kopecký ČVUT, Fakulta elektrotechnická, Katedra Radioelektroniky

Nelineární rovnice. Numerické metody 6. května FJFI ČVUT v Praze

Filip Hroch. Astronomické pozorování. Filip Hroch. Výpočet polohy planety. Drahové elementy. Soustava souřadnic. Pohyb po elipse

SIGNÁLY A LINEÁRNÍ SYSTÉMY

1. Je dána funkce f(x, y) a g(x, y, z). Vypište symbolicky všechny 1., 2. a 3. parciální derivace funkce f a funkce g.

Bakalářská matematika I

Newtonova metoda. 23. října 2012


METODA PŮLENÍ INTERVALU (METODA BISEKCE) METODA PROSTÉ ITERACE NEWTONOVA METODA

l, l 2, l 3, l 4, ω 21 = konst. Proved te kinematické řešení zadaného čtyřkloubového mechanismu, tj. analyticky

SIGNÁLY A LINEÁRNÍ SYSTÉMY

MATURITNÍ TÉMATA Z MATEMATIKY

Snímání biologických signálů. A6M31LET Lékařská technika Zdeněk Horčík Katedra teorie obvodů

Při návrhu FIR filtru řešíme obvykle následující problémy:

BAKALÁŘSKÁ PRÁCE. Numerické metody jednorozměrné minimalizace

Libovolnou z probraných metod najděte s přesností na 3 desetinná místa kladný kořen rovnice. sin x + x 2 2 = 0.

18A - PRINCIPY ČÍSLICOVÝCH MĚŘICÍCH PŘÍSTROJŮ Voltmetry, A/D převodníky - principy, vlastnosti, Kmitoměry, čítače, fázoměry, Q- metry

Čísla, reprezentace, zjednodušené výpočty

Čísla, reprezentace, zjednodušené výpočty

Aplikovaná numerická matematika - ANM

Funkce. Limita a spojitost

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Integrace. Numerické metody 7. května FJFI ČVUT v Praze

Zadání. Goniometrie a trigonometrie

Funkce jedn e re aln e promˇ enn e Derivace Pˇredn aˇska ˇr ıjna 2015

Transformace obrazu Josef Pelikán KSVI MFF UK Praha

Numerické řešení diferenciálních rovnic

Circular Harmonics. Tomáš Zámečník

Základy matematické analýzy

Úvod do zpracování signálů

VI. Derivace složené funkce.

Funkce jedné reálné proměnné. lineární kvadratická racionální exponenciální logaritmická s absolutní hodnotou

1 Modelování systémů 2. řádu

Kapitola 7: Neurčitý integrál. 1/14

Gymnázium Jiřího Ortena, Kutná Hora

Projekty - Vybrané kapitoly z matematické fyziky

Funkce a základní pojmy popisující jejich chování

Přijímací zkouška na navazující magisterské studium 2017 Studijní program: Fyzika Studijní obory: FFUM

Kapitola 1. Signály a systémy. 1.1 Klasifikace signálů

Cvičné texty ke státní maturitě z matematiky

Určete (v závislosti na parametru), zda daný integrál konverguje, respektive zda konverguje. dx = t 1/α 1 dt. sin x α dx =

CVIČENÍ č. 10 VĚTA O ZMĚNĚ TOKU HYBNOSTI

LEKCE10-RAD Otázky

Kapitola 7: Integrál. 1/17

SIGNÁLY A SOUSTAVY, SIGNÁLY A SYSTÉMY

4.3.4 Základní goniometrické vzorce I

Aproximace funkcí. Numerické metody 6. května FJFI ČVUT v Praze

Matematika pro informatiku 4

III. MKP vlastní kmitání

arcsin x 2 dx. x dx 4 x 2 ln 2 x + 24 x ln 2 x + 9x dx.

BIOMECHANIKA KINEMATIKA

Posloupnosti a jejich limity

Otázky k ústní zkoušce, přehled témat A. Číselné řady

4.3.3 Základní goniometrické vzorce I

Řešení nelineárních rovnic

Matematika PRŮŘEZOVÁ TÉMATA

f (k) (x 0 ) (x x 0 ) k, x (x 0 r, x 0 + r). k! f(x) = k=1 Řada se nazývá Taylorovou řadou funkce f v bodě x 0. Přehled některých Taylorových řad.

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

2. GENERÁTORY MĚŘICÍCH SIGNÁLŮ II

Funkce a limita. Petr Hasil. Podpořeno projektem Průřezová inovace studijních programů Lesnické a dřevařské fakulty MENDELU v Brně (LDF)

Derivace funkce. Přednáška MATEMATIKA č Jiří Neubauer

Numerické řešení rovnice f(x) = 0

Kombinatorická minimalizace

Nelineární obvody. V nelineárních obvodech však platí Kirchhoffovy zákony.

Aplikovaná numerická matematika

Signál v čase a jeho spektrum

SYLABUS 9. PŘEDNÁŠKY Z INŢENÝRSKÉ GEODÉZIE

KOMPLEXNÍ ČÍSLA A FUNKCE MNOŽINA KOMPLEXNÍCH ČÍSEL C. Alternativní popis komplexních čísel

SPECIÁLNÍCH PRIMITIVNÍCH FUNKCÍ INTEGRACE RACIONÁLNÍCH FUNKCÍ

Rovnice 2 Vypracovala: Ing. Stanislava Kaděrková

Analytická geometrie lineárních útvarů

Přijímací zkoušky z matematiky pro akademický rok 2018/19 NMgr. studium Učitelství matematiky ZŠ, SŠ

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

ZŠ ÚnO, Bratří Čapků 1332

Hledání kořenů rovnic jedné reálné proměnné metoda sečen Michal Čihák 23. října 2012

3. Aritmetika nad F p a F 2

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Lineární a adaptivní zpracování dat. 2. SYSTÉMY a jejich popis v časové doméně a frekvenční doméně

Občas se používá značení f x (x 0, y 0 ), resp. f y (x 0, y 0 ). Parciální derivace f. rovnoběžného s osou y a z:

Transkript:

Složitější aritmetické operace SČS Ing. Jakub Št astný, Ph.D. 1 1 stastnj1@seznam.cz FPGA Laboratoř/Laboratoř zpracování biologických signálů Katedra teorie obvodů FEL ČVUT Technická 2, Praha 6, 166 27 http://amber.feld.cvut.cz/fpga 21. května 2014

Varování Pozor! Tato verze přednášky obsahuje materiál třetích stran. Je určena pouze k internímu použití a vystavení na WWW stránkách Laboratoře biologických signálů, Katedry teorie obvodů ČVUT FEL, Praha!

1 Složitější funkce Druhá odmocnina Logaritmus Goniometrické funkce

Motivace druhá odmocnina vědeckotechnické výpočty (nemáme to rádi, ale lidé to chtějí :-) ), multimediální a grafické výpočty (velikost vektoru) logaritmus převádí složité na jednodušší operace harmonické funkce všude kolem nás

Druhá odmocnina

Výpočet druhé odmocniny triviální metoda y = x jedoduchý algoritmus 1 y = 0 2 if y y > x, konec a x = y 1 3 y = y + 1, goto 2 nevhodné póóóómalééééé

Výpočet druhé odmocniny triviální metoda 2 y = x pozorování: = (x + 1) 2 x 2 = x 2 + 2x + 1 x 2 = 2x + 1 příklad: 1 = 1 2,1 + 3 = 2 2,1 + 3 + 5 = 3 2,... N 1 x=0 (2x + 1) = N2 odhad hodnoty x 1 y = 0, acc = 0 2 if acc > x, konec a x = y 1 3 acc = acc + 2y + 1, y = y + 1, goto 2 stále póóómaléééé, ale už bez násobení pro odmocninu z 32 bitového čísla potřebuji až 65536 kroků!

Výpočet druhé odmocniny triviální metoda 3 může mi pomoci rozklad po řádech příklad: druhá odmocnina z 32 bit. čísla, y = x krok 1 1 x MSB = x 65536, určím y MSB = x MSB 2 x MSB < 65536, takže maximálně 256 kroků 3 y LSB = y MSB 256, protože 65536 = 256 krok 2 y LSB použiji jako startovací hodnotu pro iterativní algoritmus, v dalších max. 256 krocích najdu přesnou hodnotu celkem cca 512 kroků max. místo 65536! lze urychlit rozkladem na více základů (historie ENIAC implementace odmocniny) stále pomalé, ale už lepší pro celá čísla, ale desetinná čísla mohu škálovat ( 2 2N a potom /2 N )

Babylónská metoda poprvé zdokumentována v práci Herona Alexandrijského ( 10-70 n.l.) začínáme s odhadem y 0 opakujeme postup dokud se y i 1 y i+1 = 1 2 (y i + x y i ) významně mění" jednoduchá myšlenka druhá odmocnina musí být někde mezi aktuálním odhadem a x y i počet platných číslic se zdvojnásobuje v každé iterace (důkaz za domácí úkol)

Technika bisekce triviální postup začínáme s odhadem intervalu např. < y 0D, y 0H >=< 0, x > opakujeme postup dokud se velikost y ih y id významně mění" 1 pokud je ( 1 2 (y id + y ih )) 2 > x, použij jako další odhad intervalu < y i+1d, y i+1h >=< y id, ( 1 2 (y id + y ih )) > 2 pokud je ( 1 2 (y id + y ih )) 2 <= x, použij jako další odhad intervalu < y i+1d, y i+1h >=< ( 1 2 (y id + y ih )), y ih > počet platných dvojkových smíst roste o jedno v každé iteraci pomalý výpočet...

Krátké opakování Newtonovy metody řešíme rovnici f(x) = 0 iteračním postupem zanebdáváme zde podmínky pro konvergenci! začínáme s x 0 které je dostatečně blízko" počátku opakujeme postup dokud se x i významně mění" 1 spočteme tečnu v bodě f(x i ) a určíme průsečík s osou x 2 tento průsečík bude lepší aproximací správného řešení použijeme jako x i+1 lze odvodit vztah x i+1 = x i f(x i) f (x i )

Výpočet druhé odmocniny iterační metoda 1 y = x řešíme numerickým řešením rovnice y 2 x = 0 Newtonovou metodou tedy y i+1 = y i f(y i) f (y i ) po dosazení dostaneme iterační vzorec y i+1 = 1 2 ( x y i + y i )), y 0 > 0 v každém kroku zhruba získáme dvojnásobek platných míst metoda je nepraktická, protože obsahuje dělení všimněte si: je to vlastně babylónská metoda (ovšem Heron samozřejmě neznal Newtonovu metodu)

Výpočet druhé odmocniny iterační metoda 2, princip Abychom se vyhnuli nutnosti dělit při výpočtu, nalezneme přibližnou hodnotu 1 x a pomocí algoritmu pro převrácenou hodnotu určíme x. y = x, řešíme numerickým řešením rovnice 1 x = 0 y 2 Newtonovou metodou tedy y i+1 = y i f(y i) f (y i ) po dosazení dostaneme iterační vzorec y i+1 = 1 2 y i(3 xy 2 i )), 0 < y 0 < 3 x

Výpočet druhé odmocniny iterační metoda 2, analýza chyby y = x, pokud je y i = 1 x (1 + δ) lze odvodit, že 1 y i+1 = 1 2 x (1 + δ)(1 2δ δ 2 ) necht y i = y i x podíly chyb y i a y i+1 lze určit jako y i y i+1 = 2 δ 1 3+δ např. pro δ = 0.01 je y i y i+1 66 a y i+1 má cca 66 menší chybu, než y i opět cca 2 více desetinných míst v každém kroku

Logaritmus

Proč logaritmus? převod násobení na sčítání log 2 (A B) = 2 (log 2(A)+log 2 (B)) dělení na odečítání! vhodné pro práci s extrémně velkými (x!) a malými (Πα i, α i < 1) čísly pracujeme obvykle s dvojkovým logaritmem

Obecný princip použití tabulky pro interpolaci 0 f(x 0 ) + f(x 1) f(x 0 ) x 1 x 0 (x a x 0 ) f(x a ) =

Přibližný výpočet segmentací na úseky počítáme logaritmus log 2 (y) čísla y z intervalu < 0; 2 N > najdeme i takové, aby 2 i y < 2 i+1 (potom jistě i log 2 (y) < i + 1), nepotřebuji ani tabulku zpřesnění lineární aproximací: log 2 (y) log 2 (2 i ) + log 2(2 i+1 ) log 2 (2 i ) 2 i+1 2 i (y 2 i ) = = i 1 + y2 i, zde se dělí jen 2 i výhodné! příklad pro 8 bit. číslo y = 105 64 y < 128, i = 6 log 2 (y) 5 + 105/64 = 6.64, přesná hodnota je 6.71 pro násobení potřebujeme určit dva logaritmy, součet a posléze odlogaritmovat výsledek (postup opačný k uvedenému) max. chyba výsledku násobení 11.6%, logaritmus lze dále zpřesnit

Goniometrické funkce

Výpočet hodnoty goniometrické funkce algoritmus s náhodným přístupem" cíl: pro zadaný úhel určit hodnotu sin, cos,... různé techniky vhodné pro HW i SW realizaci aplikace obvyklé výpočty generování spojitého průběhu cíl: generovat spojitý průběh harmonické funkce, rychle, přesně algoritmus s náhodným přístupem" lze použít, ale není to často výhodné naopak, speciální algoritmy pro generování nejsou použitelné pro výpočet s náhodným přístupem" aplikace generování průběhů (měření, buzení, digitální komunikace)

Tabulková metoda v reálném čase neprovádíme ideálně žádné výpočty přesnost nepřímo úměrná velikosti tabulky lze interpolovat (potom časově náročnější) velikost tabulky obvykle 2 N uložíme hodnoty pro jeden kvadrant ROM triviální hardwarová implementace y,+ +,+ 180 α α α 180, 0 360 α +, x

Expanze řad Taylorův rozvoj vhodné spíše pro softwarovou implementaci Taylorova řada f(x) = f (n) (x 0 ) n=0 n! (x x 0 ) n Taylorův rozvoj sinu sin(x) = x x3 3! + x5 5! x7 7! +... cos(x) = sin(x + π 2 ) přímočará implementace například v C přesnost volím tak, že řídím počet sčítaných členů na intervalu x < π/2;π/2 > konverguje rychleji než na zbytku číselné osy, takže je vhodné úhel transformovat do tohoto intervalu další techniky aproximace Čebyševovými polynomy, Newton, Lagrange, spline interpolace, atd. použitelné i na obecné funkce

Interpolace a aproximace i pro jiné funkce Taylorův rozvoj

CORDIC co je to? COordinate Rotation Digital Computer technika výpočtu hodnot goniometrických funkcí s malými nároky na hardware použitelné i pro širší škálu problémů: cyklometrické funkce, převod pravoúhlých souřadnic na polární, hyperbolické a hyperbolometrické funkce, logaritmus, exponenciála, absolutní hodnota a fáze komplexního čísla, a další.

CORDIC základní myšlenka hledám x = r cosβ, y = r sin β y znám x 1 = r cos α, y 1 = r sin α 2 β = α + ϕ 0 β ϕ 1 α 1 x x 2 = r cosβ = r cos(ϕ + α) = r cosϕcos α r sin ϕ sin α, y 2 = r sin β = r sin(ϕ + α) = r sin ϕ cos α + r cosϕsin α x 2 = x 1 cosα i+1 y 1 sin ϕ = cos ϕ(x 1 y 1 tan ϕ) y 2 = x 1 cosα i+1 + y 1 sin ϕ = cos ϕ(x 1 + y 1 tan ϕ)

CORDIC základní myšlenka y i+1 α i+1 i chci zjistit cos α a sin α, α < 0; 90 > intuitivně rotace vektoru po krocích až do dosažení cílové pozice 0 α 1 + α 2 +... + α i r x x i+1 = cos α i+1 (x i y i tan α i+1 ), y i+1 = cos α i+1 (x i + y i tan α i+1 ) použijeme tabelované hodnoty α i+1 spolu s jejich tangenty

CORDIC tabulka hodnot x i+1 = cos α i+1 (x i y i tan α i+1 ), y i+1 = cos α i+1 (x i + y i tan α i+1 ) Volím α i aby tanα i = 1 2 i 1 redukce množství násobení Počet hodnot v tabulce daný žádanou přesností vyjádření α α α = α 0 ± α 1 ± α 2... ± α N 1 i tanα i α i cos α i 0 1.0000 45.00 0.7071 1 0.5000 26.57 0.8944 2 0.2500 14.04 0.9701 3 0.1250 07.13 0.9923 4 0.0625 03.58 0.9981 5 0.0313 01.79 0.9995 6 0.0156 00.90 0.9999.... N 1 2 (N 1)......

CORDIC tabulka hodnot, příklad α α = α 0 ± α 1 ± α 2... ± α N 1 α = 38 i tan α i α i cosα i ± α i 0 0 1.0000 45.00 0.7071 00.00<38,+ 45.00 1 0.5000 26.57 0.8944 45.00>38,- 18.43 2 0.2500 14.04 0.9701 18.43<38,+ 32.47 3 0.1250 07.13 0.9923 32.47<38,+ 39.60 4 0.0625 03.58 0.9981 39.60>38,- 36.02 5 0.0313 01.79 0.9995 36.02<38,+ 37.81 6 0.0156 00.90 0.9999 37.81>38,+ 38.71

CORDIC iterační výpočet α α = α 0 ± α 1 ± α 2... ± α N 1 rekurentní vztah x i+1 = cos α i+1 (x i y i tan α i+1 ), x 0 = 1, y 0 = 0 y i+1 = cosα i+1 (x i ± y i tan α i+1 ) násobení tan α i+1 je nyní jen bitový posuv násobení cos α i+1 budeme během iterace ignorovat, použijeme rekurentní vztah x i+1 = (x i y i tan α i+1 ), y i+1 = (x i ± y i tanα i+1 ) výsledek pak bude třeba na konci vynásobit faktorem K = cosα 0 cosα 1...cosα N 1, ten je ale konstantní dokud je konstantní počet kroků lze ho předpočítat dopředu funguje pro α < 0; 90 >

CORDIC rozšíření na celou kružnici y,+ 180 α α α 180, 0 +,+ 360 α +, x

Goniometrické funkce generování

Použití IIR filtru rezonátor s póly na jednotkové kružnici y[n] = a 1 y[k 1] a 2 y[k 2] + b 0 x[k] b 0 = A sin(ω), a 1 = 2 cos(ω), a 2 = 1 ω = 2πf f s výhoda extrémně jednoduché nevýhoda postupná akumulace numerických chyb (kvantovací efekty) ničí" kvalitu generované sinusovky

DDS vlastnosti Direct Digital Synthesis Výhody vysoké frekvenční rozlišení (až µhz) malé fázové zkreslení jednoduchá hardwarová implementace žádné ustalování systému rychlé změny frekvence v tabulce lze mít libovolnou periodickou funkci Nevýhody pro velkou šířku pásma potřebuji rychlý hardware pro velkou šířku pásma bude vysoká spotřeba energie může být problém s odezvou (rychlostí) DA převodníku

Přímá číslicová syntéza základní princip Figure copied from http://www.cs.washington.edu/homes/diorio/talks/invitedtalks/mtt97/index.html

DDS akumulátor Fazovy prirustek Faze harmonicke generuje fázovou informaci; frekvence přetékání určuje f out generovaná frekvence je f out = FP f clk 2 N počet bitů akumulátoru dává rozlišení ve frekvenci frekvenční krok f = f clk 2 N pro f clk = 100MHz a N = 32 př. f = 23mHz

DDS akumulátor změnou fázového přírůstku řídím změnu frekvence okamžitě, bez přechodového děje při změně frekvence spojitá funkce (fáze se nemění) jednoduché generování například FSK signálu (alternace dvou fázových přírůstků)

DDS konvertor fáze amplituda přesnost konverze jen taková, aby zkreslení výstupu bylo určeno hlavně DA převodníkem a následným zpracováním (nemá smysl být přesnější, než umožňuje analogový výstupní díl!) můžeme použít libovolný algoritmus s náhodným přístupem" mimořádně vhodná je tabulková implementace (LUT, Look Up Table)

DDS LUT konvertor fáze amplituda výstup akumulátoru fázová informace má N bitů teoreticky potřebuji 2 N položek v paměti, budu indexovat fází a vyčtu hodnotu sin stačí mi jen 2N 4 symetrie harmonické po kvadrantech, mírná komplikace s obracením znamének (ale žádný problém) někdy může mít i méně položek (velké rozlišení čítače kvůli malému frekvenčnímu kroku, malé rozlišení generované sinusovky kvůli horšímu analogovému výstupnímu dílu a DA převodníku) zmenšení počtu položek lze dosáhnout například interpolací

DDS LUT konvertor fáze amplituda další možnost redukce velikosti tabulky goniometrickými identitami sin(ϕ) = sin(α 2 L + β) = sin(α 2 L ) cos(β) + cos(α 2 L ) sin(β) rozdělím fázi na dvě slova, F = F MSB 2 L + F LSB vytvořím dvě tabulky hodnot sin o 2N L 4 a 2L 4 prvcích podle identity složím dohromady výslednou hodnotu menší tabulky (pro N = 16 místo 16384 položek v jedné tabulce pro L = 8 stačí 64 a 64 položek!), snadný výpočet bez podmíněných operací dílčí tabulky zřejmě musí být s větší šířkou slova