Transcript Siniaalto
Siniaaltotuotanto
Tomas Södergård
Vaasan Yliopisto
Mahdollisia toteutustapoja
Taulukkoja
–
Taylor sarjakehitelmä
–
Helppo toteuttaa
Tuttu matematiikasta
CORDIC
–
Sopivin FPGA sovelluksissa
Taulukkoja
Taulukossa [0, 2π]
–
Ulostulo tulee
suoraan taulukosta
1
Sini ulos
0
-1
0
2
4
6
8
10
12
14
6
Laskuri
4
2
0
0
2
4
6
8
10
12
14
1
Kerroin
0
-1
0
2
4
6
8
10
12
14
Taulukkoja
Taulukossa [0, π]
–
[0, π]: Ulostulo
suoraan taulukosta
1
Sini ulos
0
-1
–
[π, 2π]: Taulukosta
uudelleen ja
kerrotaan -1:llä
0
2
4
6
8
10
12
14
6
Laskuri
4
2
0
0
2
4
6
8
10
12
14
1
Kerroin
0
-1
0
2
4
6
8
10
12
14
Taulukkoja
Taulukossa [0, π/2]
–
[0, π/2]: Ulostulo
suoraan taulukosta
1
Sini ulos
0
-1
–
[π/2, π]: Taulukosta
takaperin
0
2
4
6
8
10
12
14
6
Laskuri
4
–
–
[π, 3π/2]: Taulukosta
ja kerrotaan -1:llä
[3π/2, 2π]:
Taulukosta takaperin
ja kerrotaan -1:llä
2
0
0
2
4
6
8
10
12
14
1
Kerroin
0
-1
0
2
4
6
8
10
12
14
Taylor sarjat
Taylor sarjan yleiskaava
n 0
f ( n ) (a)
( x a) n
n!
Sinin sarjakehitelmä (Maclaurin)
(1) n 2 n1
x
n 0 (2n 1)!
(http://en.wikipedia.org/wiki/Taylor_series)
Sinin Maclaurin sarjat
Suurin potenssi = 7
1
Sini ulos
0.5
0
-0.5
-1
0
2
4
6
8
10
12
14
In-signaali
2
0
-2
0
2
4
6
8
10
12
14
Sinin Maclaurin sarjat
Suurin potenssi = 7
1
Sini ulos
0.5
0
-0.5
-1
0
2
4
6
8
10
12
14
In-signaali
2
0
-2
0
2
4
6
8
10
12
14
CORDIC
Mm. seuraavat operaatiot voidaan laskea CORDIC algoritmilla:
–
–
–
–
–
–
–
–
Kertolasku
Jakolasku
Neliöjuuri
sin(x), cos(x)
tan(x)=sin(x)/cos(x)
sinh(x), cosh(x)
tanh(x)=sinh(x)/cosh(x)
exp(x)=sinh(x)+cosh(x)
(Meyer-Baese 2007: 123)
CORDIC – sini ja cosini
Perus identtiteetit
x1 x0 cos() y0 sin()
y1 x0 cos() y0 sin()
Pseudorotaatiot
ai 1 ai i
xi 1
1
( xi cos( i ) yi sin( i )) xi yi tan( i )
cos i
yi 1
1
( xi sin( i ) yi cos( i )) xi tan( i ) yi
cos i
(Deschamps, Bioul, Sutter 2006: 194)
CORDIC – sini ja cosini
Pseudorotaatiot tangentin avulla
xi 1 ( xi cos(i ) yi sin(i )) 1 tan2 (i )
yi 1 ( xi sin(i ) yi cos(i )) 1 tan2 (i )
Pisteen täysrotaatio
x p ( x0 cos( i ) y0 sin( i )) 1 tan2 (i )
y p ( x0 sin( i ) y0 cos( i )) 1 tan2 (i )
(Deschamps, Bioul, Sutter 2006: 194)
CORDIC – sini ja cosini
Joukko {αi}
–
–
–
Valitaan niin että x ja y voidaan laske helposti
Valitaan niin että 1 tan ( ) on mahdollista laskea etukäteen
Tangentti on siis valittu seuraavasti:
2
i
tan(i ) s2i
Pseudorotaatiot kirjoitetaan nyt
ai 1 ai tan1 (si 2i )
xi 1 xi y i s i 2 i
y i 1 xi s i 2 i y i
(Deschamps, Bioul, Sutter 2006: 195)
CORDIC – sini ja cosini
Alkuarvot
x0
1
k
y0 0
–
1
p
1 tan2 ( i )
i 0
Näillä alkuarvoilla xp ja yp antavat cosini ja sini
LUT-taulukko
–
Arcustangentin arvot tallennetan taulukkon (s=1)
(Deschamps, Bioul, Sutter 2006: 196)
CORDIC – suppeneminen
Kulmat (rad) on oltava
intervallissa [-π/2, π/2]
2.5
2
1.5
Tarkemmin: Käytettävä
alue on arctan
taulukossa olevien
kulmien summa (+/-)
(Deschamps 2006: 196)
1
0.5
0
-0.5
-1
-1.5
-2
-2.5
-2.5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5
CORDIC – resoluutio
Resoluutio = 12 bittiä
In-signaali
1
0
-1
0
2000
4000
6000
8000
10000
12000
14000
1
12-bit sini
0.5
0
-0.5
-1
0
2000
4000
6000
8000
10000
12000
14000
CORDIC – resoluutio
Resoluutio = 16 bittiä
In-signaali
1
0
-1
0
200
400
600
800
1000
1200
1400
1600
1800
1
16-bit sini
0.5
0
-0.5
-1
0
200
400
600
800
1000
1200
1400
1600
1800
CORDIC – VHDL
CORDIC – VHDL
Arkkitehtuuri
–
–
Tilakone = Pienempi ja hitaampi piiri (Meyer-Baese 2007: 125126)
Pipeline = Suurempi ja nopeampi piiri (Meyer-Baese 2007: 125126)
Rinnakkaislaskenta on mahdollista
–
x, y ja a voidaan laskea samanaikaisesti (Deschamps 2006: 197)
Amplitudin säätö
Taulukkoja
–
–
Sarjakehitelmä
–
–
Taulukossa on maksimiamplitudi
Pienempi amplitudi saadaan kertomalla 0<x<1
Tuottaa sin(x)
Muu amplitudi saadaan kertomalla x>0
Cordic
–
–
Tuottaa sin(x) jos cosinin alkuarvo on 1/k
Muu amplitudi saadaan valitsemalla muu alkuarvo
Lähteitä
Deschamps J-P, Bioul G-J-A, Sutter G-D (2006). Synthesis of Arithmetic Circuits.
New Jersey:Wiley
Meyer-Baese, U. (1999). Digital Signal Processing with Field Programmable Gate
Arrays. 3. Edition. Heidelberg: Springer.
Taylor series.[cited 28.11.2011][online] http://en.wikipedia.org/wiki/Taylor_series