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 n1
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 )  s2i

Pseudorotaatiot kirjoitetaan nyt
ai 1  ai  tan1 (si 2i )
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