Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica...

21
Capitolul 5 – Generarea semnalelor sinusoidale 151 CAPITOLUL 5 GENERAREA SEMNALELOR SINUSOIDALE 5.1 GENERAREA SEMNALELOR SINUSOIDALE FOLOSIND DEZVOLTAREA ÎN SERIE TAYLOR A FUNCŢIEI SINUS Pentru calculul funcţiei sin( ) x se poate folosi dezvoltarea în serie Taylor dată de ecuaţia: 3 5 7 sin( ) ... 1! 3! 5! 7! x x x x x = + + (5.1) Pentru valori mici ale lui x sunt suficienţi mai puţini termeni ai seriei. Totuşi, dacă x se apropie de π / 2 sunt necesari mai mulţi termeni, în funcţie de precizia dorită. Formula erorii pentru dezvoltarea funcţiei sinus în serie Taylor este: ( ) ( ) ( ) ( ) 1 1 1 sin 1! 1! n n n n x x e x n n + + + = + + (5.2) Din această formulă se poate determina n pentru o eroare maximă dorită. De exemplu pentru a calcula ( ) sin , π /2 x x cu o eroare mai mică de 10 -4 rezultă: Aplicaţii ale procesoarelor de semnal în comunicaţii 152 ( ) 1 4 π 2 10 1! n n + + (5.3) unde n trebuie să fie impar. Se obţine n=7. Teoretic, funcţia sinus poate fi calculată cu seria Taylor pentru orice valoare a lui x de la minus la plus infinit. Practic, se alege intervalul [ ] π / 2, π /2 şi pentru valori în afara acestui interval se foloseşte periodicitatea şi simetria funcţiei sinus. Fie π, x t n n = + ] (5.4) Rezultă: ( ) ( ) () sin , par sin sin , impar t n x t n = (5.5) Pentru ca numărul n să fie cel mai apropiat întreg, multiplu de π, faţă de x, acesta se calculează prin rotunjire: round π x n = (5.6) Eroarea de rotunjire va fi mai mică de ½ adică: 1 , unde| | 2 x n δ δ π = + (5.7) Rezultă: 1 π π π π π 2 x t x n x δ δ = = + = (5.8) Deci funcţia ( ) sin x calculată cu formula (5.5) şi cu substituţia (5.4) va avea ca argument π/2 π/2 t . Pentru 0 t < se poate folosi relaţia: sin( ) sin( ) t t =− (5.9)

Transcript of Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica...

Page 1: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 151

CAPITOLUL 5

GENERAREA SEMNALELOR SINUSOIDALE

5.1 GENERAREA SEMNALELOR SINUSOIDALE FOLOSIND

DEZVOLTAREA ÎN SERIE TAYLOR A FUNCŢIEI SINUS

Pentru calculul funcţiei sin( )x se poate folosi dezvoltarea în serie

Taylor dată de ecuaţia:

3 5 7

sin( ) ...1! 3! 5! 7!

x x x xx = − + − + (5.1)

Pentru valori mici ale lui x sunt suficienţi mai puţini termeni ai seriei.

Totuşi, dacă x se apropie de π / 2 sunt necesari mai mulţi termeni, în funcţie

de precizia dorită.

Formula erorii pentru dezvoltarea funcţiei sinus în serie Taylor este:

( ) ( ) ( ) ( )1 1

1sin1 ! 1 !

n nn

n

x xe x

n n

+ ++= ≤

+ + (5.2)

Din această formulă se poate determina n pentru o eroare maximă

dorită. De exemplu pentru a calcula ( )sin , π / 2x x ≤ cu o eroare mai mică

de 10-4 rezultă:

Aplicaţii ale procesoarelor de semnal în comunicaţii 152

( )

1

4

π2 10

1 !

n

n

+

⎛ ⎞⎜ ⎟⎝ ⎠ ≤+

(5.3)

unde n trebuie să fie impar. Se obţine n=7.

Teoretic, funcţia sinus poate fi calculată cu seria Taylor pentru orice

valoare a lui x de la minus la plus infinit. Practic, se alege intervalul

[ ]π / 2,π / 2− şi pentru valori în afara acestui interval se foloseşte

periodicitatea şi simetria funcţiei sinus.

Fie

π,x t n n= + ∈ (5.4)

Rezultă:

( ) ( )( )

sin , parsin

sin , impar

t nx

t n

⎧= ⎨−⎩

(5.5)

Pentru ca numărul n să fie cel mai apropiat întreg, multiplu de π, faţă de

x, acesta se calculează prin rotunjire:

roundπ

xn ⎛ ⎞= ⎜ ⎟

⎝ ⎠ (5.6)

Eroarea de rotunjire va fi mai mică de ½ adică:

1

, unde| |2

xn δ δ

π= + ≤ (5.7)

Rezultă:

1

π π π ππ 2

xt x n x δ δ⎛ ⎞= − = − + = ≤⎜ ⎟

⎝ ⎠ (5.8)

Deci funcţia ( )sin x calculată cu formula (5.5) şi cu substituţia (5.4) va

avea ca argument π/2 π/2t− ≤ ≤ .

Pentru 0t < se poate folosi relaţia:

sin( ) sin( )t t− = − (5.9)

Page 2: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 153

Rutina de calcul pentru sin( )x va avea două părţi:

1. Stabilirea intervalului de valori pentru x şi realizarea substituţiilor

pentru obţinerea rezultatului corect.

2. Calculul valorii sin( )x conform formulei (5.1).

Pentru procesoarele de semnal în virgulă fixă, această implementare

ridică unele probleme datorită reprezentării în format fracţionar pentru x.

Aceasta implică scalarea lui x în intervalul [ 1,1)− , considerând

/ 2 / 2xπ π− ≤ < , adică:

2

π=s

xx . (5.10)

Se poate aduce formula (5.1) la calculul unui polinom în 2x , adică:

3 5 7 2 4 6

sin( ) ... 1 ...1! 3! 5! 7! 3! 5! 7!

x x x x x x xx x

⎛ ⎞≈ − + − + = − + − +⎜ ⎟

⎝ ⎠ (5.11)

Dacă avem în vedere şi scalarea lui x obţinem:

( )2 4 6 81 2 3 4sin( ) 1 ...

2 s s s s sx x a x a x a x a xπ

= + + + + + (5.12)

Unde constantele includ semnul şi factorii de scalare:

2

1

10.4112335

3! 2a

π⎛ ⎞= − = −⎜ ⎟⎝ ⎠

, 4

2

10.0507339

5! 2

π⎛ ⎞= =⎜ ⎟⎝ ⎠

a ,

6

3

10.0029804

7! 2

π⎛ ⎞= − = −⎜ ⎟⎝ ⎠

a . 8

4

10.0001021

9! 2

π⎛ ⎞= =⎜ ⎟⎝ ⎠

a

De asemenea se poate aplica regula de factorizare a lui Horner pentru a

reduce numărul de înmulţiri:

2 4 6 8 2

2 2 21 1 1sin( ) 1 1

3! 5! 7! 9! 3! 5! 7! 9!

x x x x xx x x x x x

⎛ ⎞⎛ ⎞⎛ ⎞⎛ ⎞ ⎛ ⎞≈ − + − + = − − − −⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟ ⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠ ⎝ ⎠⎝ ⎠⎝ ⎠⎝ ⎠

(5.13)

Aplicaţii ale procesoarelor de semnal în comunicaţii 154

Şi în final termenii factoriali pot fi şi ei factorizaţi:

2 2 2 2

sin( ) 1 1 1 12 3 4 5 6 7 8 9

x x x xx x

⎛ ⎞⎛ ⎞⎛ ⎞⎛ ⎞≈ − − − −⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⋅ ⋅ ⋅ ⋅⎝ ⎠⎝ ⎠⎝ ⎠⎝ ⎠

(5.14)

sau, făcând schimbarea de variabilă

2 sx xπ

= . (5.15)

Se obţine:

2 2 2 2 2 2 2 2

sin( ) 1 1 1 12 4 2 3 4 4 5 4 6 7 4 8 9

s s s ss

x x x xx x

π π π π π⎛ ⎞⎛ ⎞⎛ ⎞⎛ ⎞≈ − − − −⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⋅ ⋅ ⋅ ⋅⎝ ⎠⎝ ⎠⎝ ⎠⎝ ⎠

(5.16)

Coeficienţii care-l înmulţesc pe 2sx vor fi precalculaţi în format Word16

conform tabelului:

Coeficient ka fracţionar

Coeficientul în format Word16 152ka ⋅

Reprezentare hexazecimală

2

0

10.4112...

4 2 3a

π= =

⋅ 13475 0x34A3

2

1

10.1233...

4 4 5a

π= =

⋅ 4043 0x0FCB

2

2

10.0587...

4 6 7a

π= =

⋅ 1925 0x0785

2

3

10.0342...

4 8 9a

π= =

⋅ 1123 0x0463

Valoarea 1 va fi aproximată la valoarea maximă pozitivă pe 32 de biţi:

MAX_32=(Word32)0x7fffffff. Primul factor multiplicativ 2 sxπ

va fi calculat

ca 24 sxπ⋅ deoarece 1

2

π> . Astfel se defineşte valoarea constantă PI_4=

0.78539... adică 25736 pe format Word16.

Page 3: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 155

#include <prototype.h> #define MAX_32 (Word32)0x7fffffff #define PI_4 25736 Word16 a[]={13475,4043,1925,1123}; Word16 sin(Word16 x) { Word16 res0,res1,x_2,x_pi_4; x_pi_4=mult_r(PI_4,x); // x*pi/4 x_2=mult_r(x,x); res0=msu_r(MAX_32,a[3],x_2); // res0=(1-(1/8.9)*x_2) res1=mult_r(a[2],x_2); // res1=(1/6.7)*x_2) res0=msu_r(MAX_32,res1,res0); // (1-res1(res0)) res1=mult_r(a[1],x_2); // res1=(1/4.5)*x_2) res0=msu_r(MAX_32,res1,res0); // (1-res1(res0)) res1=mult_r(a[0],x_2); // res1=(1/2.3)*x_2) res0=msu_r(MAX_32,res1,res0); // (1-res1(res0)) res0=mult_r(x_pi_4,res0); // pi/4*x*() return shl(res0,1); // 2*(pi/4)=pi/2 }

Aplicaţii ale procesoarelor de semnal în comunicaţii 156

5.2 GENERAREA SINUSULUI CU CĂUTARE ÎN TABEL

Generarea sinusului este folositoare în comunicaţii şi aplicaţii de

control. Odată cu introducerea procesoarelor digitale de semnal cu viteză şi

precizie ridicate se poate genera digital un sinus stabil şi cu distorsiuni mici la

orice frecvenţă folosind un tabel de căutare cu interpolare pentru reducerea

distorsiunilor.

Valorile unei perioade a sinusului sunt înmagazinate într-un tabel în

memorie după cum urmează:

1i N= − [ ]sin ( 1) 2 /N Nπ− ⋅

. .

i → [ ]sin ( ) 2 /i Nπ⋅

. .

2i = [ ]sin (2) 2 / Nπ⋅

1i = [ ]sin (1) 2 / Nπ⋅

0i = [ ]sin (0) 2 / Nπ⋅

unde:

N = lungimea tabelului;

i = indexul în tabel, 0 1i N≤ ≤ − ;

( ) sin( 2 / )s i i Nπ= ⋅ = valoarea înmagazinată la locaţia i din tabel.

Semnalul sinusoidal poate fi generat prin citirea periodică a valorilor

din tabel.

Page 4: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 157

Pentru a obţine valoarea unui eşantion ( )s n , tabelul poate fi parcurs cu

un pas Δ (din Δ în Δ valori) semnalul generat având expresia:

( ) sin(2 / )s n N nπ= ⋅Δ ⋅ , 0, 1, 2,n = … (5.17)

Frecvenţa normată a sinusului generat este:

fN

Δ= , (5.18)

Dacă 1Δ = (sunt citite valorile consecutive) şi perioada de eşantionare

este TS (tabelul de lungime N este accesat la fiecare TS secunde), perioada

sinusului sintetizat va fi:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

N=16

T0 = NTS

s(n)

s(t)

TS

Aplicaţii ale procesoarelor de semnal în comunicaţii 158

0 [s]ST N T= ⋅ (5.19)

Deci frecvenţa nenormată fundamentală (pentru 1Δ = ) este:

0 [Hz]SFF

N= (5.20)

Pe de altă parte, dacă 1Δ ≠ , de exemplu 2Δ = , fiecare a doua valoare

este citită, şi tabelul este accesat la fiecare TS secunde, atunci frecvenţa

sinusului sintetizat va fi:

0 [Hz]SF F FN

Δ= ⋅ = Δ ⋅ (5.21)

Dacă Δ este întreg, doar multiplii ai 0F pot fi generaţi.

Dacă Δ este raţional atunci orice frecvenţă mai mică decât jumătate din

frecvenţa de eşantionare poate fi generată. Valoarea maximă pentru Δ este

/ 2N deoarece pentru sintetizarea sinusului fără aliere sunt necesare cel puţin

două eşantioane pe perioadă.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

N=16

T = (N/Δ)TS

s(n)

TS

Page 5: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 159

5.2.1 Căutarea în tabel cu delta întreg

Această implementare este o metodă de căutare directă în tabel cu delta

fiind un număr întreg şi pozitiv. Deoarece delta este întreg, toate eşantioanele

cerute sunt conţinute în tabel; nu sunt necesare aproximări. Figura de mai jos

ilustrează această metodă pentru 8N = şi 2Δ = .

1 2 3 4 5 6 7 8

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

2=Δ

Valorile din tabel

Valorile generate

Figura 5.1. Generarea eşantioanelor sinusului pentru delta întreg

Tabelul cu valorile pe o perioadă a funcţiei sinus este precalculat şi

stocat în memorie fără a putea fi modificat pe parcursul execuţiei

programului. De aceea trebuie stabilită de la început lungimea N optimă

pentru a putea genera una sau mai multe frecvenţe alegând un pas Δ

corespunzător.

Aplicaţii ale procesoarelor de semnal în comunicaţii 160

EXERCIŢII:

1. Determinaţi lungimea N şi pasul Δ, valori întregi minime, pentru a genera

un semnal sinusoidal de frecvenţa F = 210 Hz, dacă frecvenţa de eşantionare

la care lucrează convertorul A/D şi D/A este FS = 48 kHz.

210 7

48000 1600S

F

N F

Δ= = = (5.22)

De unde rezultă N=1600 şi Δ=7.

2. Determinaţi lungimea N şi paşii Δ1, Δ2, valori întregi minime, pentru a

genera folosind acelaşi tabel două semnale sinusoidale de frecvenţe F1 = 4

kHz, F2 = 6 kHz dacă frecvenţa de eşantionare este FS = 48 kHz.

1 1

2 2

S

S

F

N F

F

N F

Δ⎧ =⎪⎪⎨Δ⎪ =⎪⎩

=>

1 1

2 2

22

2

3

24S

F

F

FN

F

Δ⎧ = =⎪Δ⎪⎨⎪ = Δ =⎪⎩

(5.23)

De unde rezultă Δ1=2, Δ2=3 şi N=24.

Implementarea programului de generare a unui semnal sinusoidal cu

delta întreg:

• Se stochează în variabila table valorile precalculate (de ex. în Matlab) ale unei perioade a sinusului.

k=0:N-1; table=sin(2*pi/N*k);

• Eşantioanele semnalului generat sunt citite din tabel de la un index multiplu de delta (în exemplul de mai jos din două în două valori).

• Pentru a nu se depăşi dimensiunea tabelului şi pentru a se respecta periodicitatea funcţiei sinus, indexul se calculează modulo N.

Page 6: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 161

#define DataSize 256 #define N 128 Word16 table[N]; Word16 s[DataSize]; short i, delta=2; // fread(table,... for (i=0; i<DataSize; i++) { s[i]=table[(i*delta)%N]; } // fwrite(s,...

5.2.2 Căutarea în tabel cu delta raţional prin interpolare liniară

Această implementare este o metodă directă de căutare în tabel cu delta

număr raţional pozitiv, adică, un număr compus dintr-o parte întreagă şi o

parte fracţionară. Când partea fracţionară este nenulă, eşantioanele din

punctele aflate între două elemente din tabel trebuie estimate folosind valorile

din tabel.

Pentru a sintetiza sinusul de orice frecvenţă cu distorsiuni mici, o

metodă de interpolare trebuie folosită împreună cu căutarea în tabel. Folosind

interpolarea, valorile sinusului aflate între elementele din tabel pot fi

reprezentate mai precis. Cea mai uşoară tehnică de interpolare este

interpolarea liniară. Pentru interpolarea liniară presupunem că valoarea

sinusului într-un punct dintre două intrări succesive ale tabelei se află pe o

dreaptă între cele două valori. Acest lucru este ilustrat în figura următoare

pentru 8N = şi 2,5Δ = .

Aplicaţii ale procesoarelor de semnal în comunicaţii 162

1 2 3 4 5 6 7 8

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

5,2=Δ

Valorile din tabel

Valorile generate

Eroarea fără interpolare liniară

Eroarea cu interpolare liniară

Figura 5.2. Generarea eşantioanelor sinusului prin interpolare liniară

Algoritmul folosit pentru interpolarea liniară se bazează pe ecuaţia

dreptei în două puncte:

1 1( )y y m x x− = − (5.24)

Pentru interpolarea liniară avem:

• [ 1] [ ]m S i S i= + − este panta segmentului de dreaptă între două

elemente, i si 1i + succesive ale tabelului;

• 1 [ ]y S i= este valoarea din tabelul sinusului de la adresa de bază +

deplasamentul i;

• [ ]y S i f= + este eşantionul aproximat;

• 1f x x= − este partea fracţionară a lui delta, 0 1f< < .

Page 7: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 163

De aceea avem:

( )[ ] [ ] [ 1] [ ]S i f S i f S i S i+ = + ⋅ + − (5.25)

Pasul Δ este acum un număr raţional. Vom considera reprezentarea

separată într-un întreg cu semn şi o fracţie fără semn pe care le stocăm într-o

variabilă de 32 de biţi astfel:

–215 214 20. 2–1 2–2

s intreg fracţie

16 biţi 16 biţi

De exemplu valoarea 2.5 se reprezintă în hexazecimal 0 x 0002 8000.

16 biţi

Parte întreagă

16 biţi

. Fracţie

i = 0 phaseaccum = 0 00 … 00000 00000 … 00

+ 2,5Δ = + 00 … 00010 10000 … 00

i = 1 phaseaccum = 2,5 = 00 … 00010 10000 … 00

+ 2,5Δ = + 00 … 00010 10000 … 00

i = 2 phaseaccum = 5,0 = 00 … 00101 00000 … 00

+ 2,5Δ = + 00 … 00010 10000 … 00

i = 3 phaseaccum = 7,5 = 00 … 00111 10000 … 00

2,5Δ = + 00 … 00010 10000 … 00

i = 4 phaseaccum = 10,0 = 00 … 01010 00000 … 00

Aplicaţii ale procesoarelor de semnal în comunicaţii 164

Indexul pentru eşantionul [ ]S i este partea întreagă a variabilei de

phaseaccum. Pentru a nu se depăşi lungimea N a tabelului, indexul se

calculează modulo N: i_index1 = (phaseaccum >> 16)%N;

De exemplu dacă N = 8 la a 4-a acumulare a lui delta în variabila

phaseaccum partea întreagă devine 10 (reprezentată în primii 16 MSB ai

phaseaccum), iar indexul se calculează modulo 8 adică va fi 2.

Partea fracţionară se obţine anulând biţii pentru partea întreagă:

phaseaccum & 0x0000ffff şi deplasând rezultatul la dreapta cu un bit

pentru a obţine un număr fracţionar cu MSB bit de semn.

#define DataSize 256 #define N 128 unsigned short i_index1,i_index2; Word16 i_tone1,i_tone2,frac; UWord32 phaseaccum=0; Word32 delta=0x00028000; // delta=2.5 ... for (i = 0; i < DataSize; i++) { i_index1 = (phaseaccum >> 16)%N; i_index2 = (i_index1+1)%N; i_tone1 = table[i_index1]; i_tone2 = table[i_index2]; /* partea fractionara se obtine din ultimii 16 LSB*/ frac = (Word16) ((Word32)((phaseaccum & 0xffff)>>1)); /* interpolare liniara */ s[i] = add(mult(sub(i_tone2,i_tone1),frac),i_tone1); /* phaseaccum este un intreg unsigned ce variaza intre 0 si 0xffffffff, prin incrementare, porneste de la 0 */ phaseaccum+=delta; }

Page 8: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 165

5.3 METODE RECURSIVE DE GENERARE A SEMNALELOR

5.3.1 Metoda oscilatorului digital

O metodă utilă de generare a unei sinusoide de o anumită frecvenţă este

folosirea unui rezonator aflat la limita stabilităţii care are o pereche de poli

complex conjugaţi pe cercul de rază unitate.

Fie sistemul digital care are răspunsul la impuls de forma:

0( ) sin( ) ( )ω=h n A n u n (5.26)

unde ( )u n este treapta unitate, A este amplitudinea sinusoidei generate,

iar 0ω este frecvenţa unghiulară.

Funcţia de transfer a sistemului (considerând 1=A ) se obţine aplicând

transformata Z ecuaţiei (5.26):

( )( )

0 0

0 0 0 0

1

1 1 1 2

1 1 1( )

2 1 1 2 1

ω ω

ω ω ω ω

− −

−− − − − −

−⎛ ⎞= − =⎜ ⎟− − ⎡ ⎤⎝ ⎠ − + +⎣ ⎦

j j

j j j j

e e zH z

j e z e z j e e z z (5.27)

Evident acest sistem are polii 0ωje şi 0ω− je aflaţi pe cercul de rază

unitate. Efectuând calculele rezultă:

1

01 2

0

( ) sin( )

( ) 1 2cos

ωω

− −= =− +

Y z zH z

X z z z (5.28)

Ecuaţia cu diferenţe finite este:

0 0( ) 2cos ( 1) ( 2) sin ( 1)ω ω= − − − + −y n y n y n x n (5.29)

Dacă la intrarea sistemului se aplică impulsul unitate pentru 2≥n ,

ieşirea ( )y n poate fi calculată recursiv astfel:

0( ) 2cos ( 1) ( 2), 2ω= − − − ≥y n y n y n n (5.30)

Aplicaţii ale procesoarelor de semnal în comunicaţii 166

cu condiţiile iniţiale 0(1) sinω=y şi (0) 0=y .

Deoarece termenul 02cosω poate avea valori supraunitare algoritmul

va calcula ieşirea ( )y n astfel:

1. 0( 1)cosω= −a y n

2. ( ) 2 ( 2)= − −y n a y n

0cos2 ω

1−1−z

1−z

)(ny

)1(1 −= nys

)2(2 −= nys

Figura 5.3. Structura oscilatorului digital

Erorile care apar în acest sistem sunt date de reprezentarea valorii

0cosω pe un număr finit de biţi şi la trunchierea rezultatelor.

Dacă valoarea 0cosω este cuantizată pe 16 de biţi eroarea (deviaţia) de

frecvenţă unghiulară este:

( )150 0 0arccos cos 2ω ω ω −Δ = − − (5.31)

ceea ce, pentru o frecvenţă de eşantionare de 48 kHz conduce la o

diferenţă de frecvenţă faţă de valoarea nominală de maxim 0.01 Hz pentru

frecvenţe situate în intervalul 500 Hz – 23 kHz şi de maxim 0.1 Hz în afara

acestui interval.

Page 9: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 167

În urma cuantizării coeficientului 0cosω este afectată numai frecvenţa

sinusoidei generate nu şi amplitudinea acesteia deoarece se modifică numai

argumentul polilor, modulul rămânând 1.

Totuşi, trunchierea rezultatului înmulţirii şi adunării la precizie simpla

de 16 biţi conduce la erori care se propagă recursiv, ceea ce poate afecta

variaţia amplitudinii în timp.

... Word16 s[DataSize],c0,s1,s2,temp; short i; c0=WORD16(0.99144486); //cos(w0), F=1kHz, Fs=48kHz; s1=WORD16(0.13052619); //y[-1]=sin(w0) s2=0; //y[-2]=0 for (i = 0; i < DataSize; i++) { temp=mult_r(c0,s1); temp=shl_nosat(temp,1); s[i]=sub(temp,s2); s2=s1; s1=s[i]; } ...

Aplicaţii ale procesoarelor de semnal în comunicaţii 168

5.3.2 Generarea semnalelor sinusoidale în cuadratură

O altă soluţie simplă, rapidă, de tip recursiv de generare a sinusului este

propusă în rândurile următoare. Avantajul este că se pot genera simultan o

sinusoidă şi o cosinusoidă de aceeaşi frecvenţă (necesare în aplicaţii unde se

cer semnale modulatoare în cuadratură) iar rezultatele sunt de mare precizie.

Operaţiile efectuate de sistem sunt de fapt două formule binecunoscute

din trigonometrie şi anume cosinusul şi sinusul unei sume de arce.

Recursivitatea se scrie:

cos ( 1) cos cos sin sinα α α α α+ = −n n n (5.32)

sin ( 1) cos sin sin cosα α α α α+ = +n n n (5.33)

unde 02 / SF Fα π= .

Pentru generarea frecvenţei dorite trebuie iniţializate valorile cos0 1=

şi sin 0 0= . Calculul celor două forme de undă se realizează apoi doar prin

patru multiplicări, o adunare şi o scădere. Parametrii de intrare sunt locaţiile

de memorie folosite pentru cosαn şi sinαn şi cele două constante cosα şi

sinα ce dau frecvenţa de oscilaţie.

cosα

sinα

1−z 1−z

nαcos nαsin

-sinα

cosα

Figura 5.4. Structura generatorului de semnale sinusoidale în

cuadratură

Page 10: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 169

Frecvenţa va fi dată deci de incrementul de fază 02 / SF Fα π= .

#define DataSize 40 #define MAX_16 (Word16)0x7fff Word16 c[DataBlockSize],s[DataBlockSize],c0,s0; Word32 temp; int i; c0=WORD16(0.809); s0=WORD16(0.587785); c[0]=MAX_16; s[0]=0; for (i = 0; i < DataBlockSize-1; i++) { temp=L_mult(c[i],c0); c[i+1]=msu_r(temp,s[i],s0); temp=L_mult(s[i],c0); s[i+1]=mac_r(temp,c[i],s0); }

Recursivitatea necesită controlul ciclurilor limită pe termen lung. Din

cauza faptului că sinusul şi cosinusul sunt generate recursiv, erorile se pot

propaga foarte rapid. Pentru a preveni ca amplitudinea să scadă sau să crească

în decursul timpului, se adaugă un sistem de compensare a amplificării.

Acesta se realizează prin calcularea unui semnal de eroare, semnal ce este dat

de diferenţa între amplitudinea dorită (1 de exemplu) şi amplitudinea actuală

(cea generată), care se calculează cu formula:

2 2cos ( ) sin ( )α α+n n (5.34)

Aplicaţii ale procesoarelor de semnal în comunicaţii 170

cosα

sinα

1−z 1−z

nαcos

nαsin

-sinα

cosα

)(sin)(cos 22 nn αα + )(sin)(cos 22 nn αα +

1

-

1

err

nαcos

nαsin

Figura 5.5. Compensarea amplificării în generatorul de semnale sinusoidale

în cuadratură

Semnalul de eroare este apoi utilizat ca o reacţie negativă, pentru

controlul amplitudinii, ceea ce conferă acestui algoritm o mare precizie la

generarea sinusoidelor. Semnalul eroare va fi calculat după formula:

2 21 cos ( ) sin ( )α α= − +err n n (5.35)

Pot apare trei cazuri de-a lungul desfăşurării programului :

1. Dacă 0=err , deci suma de sub radical va fi 1, semnalul nu va avea

nici o eroare, iar semnalele sin( )αn şi cos( )αn vor fi amplificate cu

1, păstrându-şi astfel valoarea.

2. Dacă sinusoida are tendinţa să scadă în amplitudine, de exemplu

dacă radicalul ia valoarea 0,9 , va rezulta un semnal de eroare

0,1=err . Acesta se va aduna cu 1 şi se va înmulţi cu valorile

anterioare ale sin( )αn şi cos( )αn , pentru a se mări amplitudinea.

Page 11: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 171

3. Dacă sinusoida are tendinţa să crească în amplitudine, de exemplu

dacă radicalul ia valoarea 1,1, va rezulta un semnal de eroare

0,1= −err . Acesta se va aduna cu 1 şi se va înmulţii cu valorile

anterioare alesin( )αn şi cos( )αn , pentru a scădea amplitudinea.

5.3.3 Obţinerea structurilor unor oscilatoare discrete

Fizicianul german Heinrich Barkhausen în anii 1990 a formulat

cerinţele necesare pentru o oscilaţie. El a modelat un oscilator ca un

amplificator recursiv. Plecând de la acest model el a dedus şi a formulat două

condiţii necesare pentru realizarea unui oscilator. Criteriile lui Barkhausen,

aşa cum sunt ele cunoscute astăzi, impun câştigul pe buclă să fie unitar, iar

defazajul buclei sa fie multiplu de π2 radiani. Dacă s-ar uni toate modelele de

oscilatoare recursive în timp discret într-o singură teorie, ar trebui găsit

echivalentul în timp discret al criteriilor lui Barkhausen şi folosit pentru a găsi

o teorie generală.

Dar mai întâi se analizează câteva formule trigonometrice văzute nu

într-un mod uzual, ci într-un mod în care ele pot fi utilizate pentru generarea

sinusoidelor. Multe oscilatoare au fost proiectate pornind de la această idee.

O formulă cu o sumă şi o diferenţă de unghiuri scrisă explicit într-o

formă recursivă este:

( ) ( ) ( ) ( )cos 2cos cos cosφ ω ω φ φ ω+ = − − (5.36)

Aceasta poartă numele de „forma directă” de implementare.

Astfel se observă cum eşantionul următor poate fi calculat în funcţie de

două valori ale eşantioanelor anterioare ce diferă prin unghiul ω pe de o parte

Aplicaţii ale procesoarelor de semnal în comunicaţii 172

şi un factor 2cosω . Pentru a vedea cum poate fi această idee utilizată pentru

generarea iterativă a unei sinusoide, se consideră formula:

( )2cosNextCos CurrentCos LastCosω= × − (5.37)

În loc de folosirea unei singure ecuaţii pentru o relaţie de recurenţă,

poate fi folosită o pereche de formule trigonometrice. De exemplu:

( ) ( ) ( ) ( ) ( )( ) ( ) ( ) ( ) ( )

cos cos cos sin sin

sin cos sin sin cos

φ ω φ ω φ ω

φ ω φ ω φ ω

+ = −

+ = − (5.38)

Aceste relaţii poartă denumirea de formă „cuplată”. Cuplarea este

evidentă prin faptul că fiecare ecuaţie foloseşte nu numai valoarea sa

precedentă ci şi valoarea precedentă generată de cealaltă ecuaţie.

Din nou ω este folosit ca unghiul de variaţie pe iteraţie, şi aceasta

conduce la o frecvenţă de ieşire a oscilatorului de πω 2/fs , unde sf este

frecvenţa de eşantionare. La fel ca şi forma „directă”, forma „cuplată”

foloseşte două valori precedente. Aceasta este valabilă pentru toate

oscilatoarele sinusoidale limitate la folosirea numerelor reale.

Derivarea matricei proprietăţilor oscilatorului

Se doreşte găsirea unui proces general care poate fi folosit pentru a

exprima ambele forme de ecuaţii: „directă” şi „cuplată”. Pentru aceasta se

notează valorile precedente (care se numesc variabile de stare) cu 1x şi 2x şi

sunt valorile folosite pentru determinarea noilor valori. Se observă că noile

ecuaţii sunt liniare pentru ambele forme, aşa că se pot scrie ca o înmulţire de

matrici.

Matricea pentru calculul unei iteraţii pentru forma „directă” este:

( )1 1

2 2

ˆ 2cos 1

ˆ 01

x x

x x

ω⎡ −⎡ ⎤ ⎡ ⎤⎤= ⎢⎢ ⎥ ⎢ ⎥⎥

⎦⎣ ⎦ ⎣ ⎦⎣ (5.39)

Page 12: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 173

Pentru forma „cuplată”:

( )( )

( )( )

1 1

2 2

cos sinˆ

ˆ sin cos

x x

x x

ω ω

ω ω

⎡ ⎤⎡ ⎤ ⎡ ⎤= ⎢ ⎥⎢ ⎥ ⎢ ⎥−⎢ ⎥⎣ ⎦ ⎣ ⎦⎣ ⎦

(5.40)

Interpretarea matricei este: vectorul coloană din partea stângă conţine

valorile vechi ale variabilelor de stare şi, prin înmulţire cu matricea de rotaţie,

se obţine un nou set de valori. Apoi, următoarea iteraţie foloseşte valorile noi

din iteraţia precedentă ca valori vechi pentru următoarea iteraţie. Exprimarea

matriceală pare că complică inutil lucrurile, dar cu ajutorul acestora se pot

găsi noi tipuri de oscilatoare. Termenul de rotaţie este folosit din momentul în

care multiplicarea matricei poate fi observată dintr-un anumit punct ca fiind o

rotaţie.

O formă generală care se potriveşte ambelor oscilatoare menţionate mai

sus este folosirea unei matrici de rotaţie 22× şi 2 variabile de stare.

Deci ecuaţia generală a unui oscilator se scrie sub forma:

1 1

2 2

ˆ

ˆ

x xa b

x c d x

⎡ ⎤ ⎡ ⎤⎡ ⎤=⎢ ⎥ ⎢ ⎥⎢ ⎥⎣ ⎦⎣ ⎦ ⎣ ⎦

(5.41)

Un exemplu numeric de oscilator care nu este nici de tip „direct”, nici

de tip „cuplat”. Se ia ⎥⎦

⎤⎢⎣

⎡ −95.00975.0

195.0 ca matrice de rotaţie şi se foloseşte ⎥

⎤⎢⎣

⎡0

1

pentru valorile iniţiale ale variabilelor de stare.

Graficul pentru valorile celor două variabile de stare pentru primele 100

de iteraţii este prezentat în figura următoare.

Se pune următoarea întrebare: care sunt constrângerile asupra valorilor

celor patru elemente din matricea de rotaţie şi dacă matricea mai poate fi

folosită ca o iteraţie pentru oscilator?

Aplicaţii ale procesoarelor de semnal în comunicaţii 174

Se poate demonstra că există două constrângeri şi acestea sunt

echivalenţele în timp discret din criteriul lui Barkhausen. Acestea sunt:

1ad bc− =

2a d+ <

Prima constrângere impune ca determinantul matricei de rotaţie să fie

egal cu 1, analog cu câştigul pe buclă unitar. Cea de-a doua constrângere

(considerând ca prima constrângere este îndeplinită) spune că matricea are

valori proprii complexe. Aceasta înseamnă că ieşirea oscilatorului se va

repeta. Aceasta reprezintă echivalentul în timp discret din criteriul lui

Barkhausen pentru periodicitate.

Deşi nu este evident, se poate deduce din cele doua constrângeri că

ambele elemente ale matricei b şi c, trebuie să fie nenule; deci, matricea de

rotaţie nu poate fi triunghiulară. Ceea ce s-a demonstrat până aici este de fapt

un set de reguli care poate fi aplicat cu uşurinţă pentru orice matrice 22×

pentru a vedea dacă poate fi folosită pentru realizarea unui oscilator.

Page 13: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 175

În cele ce urmează, se vor obţine mai multe reguli care vor permite

identificarea tipului de oscilator doar analizând matricea sa.

Se consideră operaţiile de identitate ca adunarea cu zero şi înmulţirea

cu unu. Apare întrebarea: „există un vector x care înmulţit cu o matrice A să

rezulte un multiplu scalar λ la vectorul iniţial?” Matematic aceasta se scrie

ca:

λ=Ax x (5.42)

Când această relaţie este îndeplinită, λ este o valoare proprie, iar x

corespunde unui vector propriu pentru matricea A. Pentru matricile 22× care

se supun criteriului lui Barkhausen, vor exista două valori proprii; de fapt ele

sunt complex conjugate unul celuilalt, şi fiecare are modulul 1.

Pentru a putea studia evoluţia sistemului pe mai multe perioade trebuie

să reducem matricea de rotaţie la o formă mai simplă. De aici înainte,

matricea de rotaţie, A, se presupune a fi o matrice 22× constând în patru

valori reale, şi ele se supun criteriului Barkhausen.

Explicit, matricea A este:

a b

Ac d

⎡ ⎤= ⎢ ⎥⎣ ⎦

(5.43)

Valorile proprii ale matricii A se obţin din:

0a b

c d

λλ

−=

− (5.44)

0*****)(*)( 2 =−+−−=−−− bcdadabcda λλλλλ (5.45)

0***)(2 =−++− bcdada λλ (5.46)

Care are rădăcinile de forma:

2

)**(*4)( 2 bcdadada −−+±+=λ (5.47)

Aplicaţii ale procesoarelor de semnal în comunicaţii 176

Punând condiţiile |ad-bc| = 1 şi 2a d+ < rezultă:

2

)(4* 2dajda +−±+=λ (5.48)

Deci valorile proprii sunt complex conjugate şi de modul unitar:

2

)(4* 2

1

dajda +−++=λ

2

)(4* 2

2

dajda +−−+=λ (5.49)

Vectorii proprii se obţin înlocuind valorile proprii în:

( ) 0λ− =A I x (5.50)

Acum, se foloseşte rezultatul teoriei valorilor proprii şi factorizarea

matricei generale într-un produs de trei matrici. Acesta de fapt face ca

ridicarea la putere a matricei să fie mult mai uşor de realizat:

1−=A SDS (5.51)

Matricea D este o matrice diagonală a cărei elemente nenule se află pe

diagonala principală. Aceste valori sunt valorile proprii. În termenii matricei

de rotaţie iniţiale, matricea diagonală este:

0

0

j

j

e

e

ω

ω

⎡ ⎤= ⎢ ⎥⎣ ⎦

D (5.52)

unde ⎟⎠⎞

⎜⎝⎛ Δ=ω −

2cos 1 şi da +=Δ .

Matricea S conţine vectorii proprii ce corespund valorilor proprii

folosite în matricea D. Din nou, în termenii matricei de rotaţie iniţiale,

matricea S este:

⎥⎦

⎤⎢⎣

⎡ψψ

= φ−φ jj ee

11S (5.53)

unde b

c−=ψ şi ( )η=φ arg , unde

( )b2

4jad 2Δ−+−=η .

Page 14: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 177

Dacă vectorul x conţine valorile iniţiale ale variabilelor de stare, a n-a

ieşire, y(n) a oscilatorului poate fi scrisă ca:

( ) nn =y A x (5.54)

Deci, nA poate fi scris ca: ( )( )( ) ( )1 1 1 1...− − − −SDS SDS SDS SDS şi după

ce se simplifică perechea externă de termeni 1−S S , obţinându-se următoarea

simplificare pentru ieşirea oscilatorului:

( ) 1nn −=y SD S x (5.55)

Ridicarea la putere a matricei diagonală D presupune ridicarea la

aceeaşi putere a elementelor de pe diagonală. La acest punct se poate vedea în

ce fel ridicarea la putere a matricei D afectează rotaţia. De fapt, ω , este

unghiul de variaţie pe iteraţie.

Este interesant de comentat faptul că o rotaţie a matricei este factorizată

într-un produs de matrici cu valori complexe. Oricum matricile implementate

folosesc doar valorile reale.

Aceasta conduce la teoria atribuită matematicianului francez Jacques

Hadamard: „Calea cea mai scurtă între adevăruri în domeniul real trece prin

domeniul complex”.

Noţiunea „schimbarea bazei” a fost menţionată în legătura cu matricea

S. Aceasta este folosită de când matricile S şi S-1 fac legătura între spaţiul

extern şi intern. Aceasta ar trebui privită ca o variaţie de stare trecând prin trei

procese. Primul proces constă în o transformare către reprezentarea spaţiului

intern. Al doilea constă într-o pereche de rotaţii realizate pe variabilele de

stare, iar ultimul proces constă într-o transformare înapoi către spaţiul extern.

În spaţiul intern cele două rotaţii sunt realizate în direcţii opuse; aceasta

permite combinarea numerelor complexe, obţinându-se rezultate numai în

numere reale.

Aplicaţii ale procesoarelor de semnal în comunicaţii 178

Se consideră variabila z ca o reprezentare internă după cum urmează:

1−=z S x (5.56)

Apoi, considerând ca x să aibă o valoare iniţială, se obţine:

0.5

0.5

⎡ ⎤= ⎢ ⎥⎣ ⎦

z . (5.57)

Apoi ieşirea oscilatorului este scrisă simplu ca: ( ) nn =y SD z . După

simplificare se obţine:

( ) ( )( )

cos

cos

nn

n

ωψ ω ϕ⎡ ⎤

= ⎢ ⎥+⎣ ⎦y . (5.58)

Dându-se o valoare iniţială pentru z, atunci valoarea variabilei de stare

iniţiale este:

=x Sz (5.59)

după simplificare obţinându-se:

( )1

cosψ ϕ⎡ ⎤

= ⎢ ⎥⎣ ⎦

x (5.60)

care este ( )0y .

Interpretarea matricei de rotaţie

Aspectul atractiv al acestei metode de analiză este că se poate evalua

comportarea unui oscilator analizând matricea sa de rotaţie. Această analiză

include două unghiuri. Unghiul ωeste unghiul de variaţie pe iteraţie, iar

unghiul φ reprezintă diferenţa de fază dintre cele două variabile de stare.

Deci, dacă se doreşte obţinerea unui oscilator în cuadratură, atunci unghiul φ

trebuie să fie egal cu 090± , ceea ce în termeni ai elementelor matricei de

rotaţie, aceasta presupune ca cele două variabile de pe diagonala principală

trebuie să fie egale. În concluzie, dacă da = , se obţine un oscilator în

Page 15: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 179

cuadratură. Factorul ψ arată amplitudinea celei de-a doua variabile de stare

relativ faţa de prima. Dacă se doreşte ca cele două ieşiri să aibă amplitudini

egale, atunci elementele de pe diagonala secundară trebuie să fie egale şi de

sens opus. Adică, cb −= .

Revenind la exemplul numeric, se poate descoperi că ieşirile sunt în

cuadratură, dar de amplitudini diferite aşa cum rezultă şi din grafic.

Când se programează oscilatorul într-un DSP, se alege implementarea

fiecărei iteraţii ca o înmulţire de matrici. Totuşi, se poate simplifica

implementarea reprezentând structura care reprezintă operaţiile generale de

multiplicare şi sumare ale matricei de rotaţie.

În domeniul procesoarelor de semnal se obişnuieşte încercarea de a

folosi numai operaţiile de adunare, înmulţire şi întârzierile. Piesa principala

din structura din figură este perechea de elemente de întârziere ce reţine

variabilele de stare. Pentru fiecare iteraţie, ieşirile elementelor de întârziere

sunt folosite ca valorile precedente, iar intrările elementelor de întârziere sunt

noile valori.

De exemplu, intrarea în elementul de întârziere următor din figură este

calculat astfel:

211 byayy += (5.61)

Aplicaţii ale procesoarelor de semnal în comunicaţii 180

Această formă generică necesită patru înmulţiri şi două adunări pentru

fiecare iteraţie. Dacă matricea de rotaţie are câteva valori comune sau câteva

elemente sunt zero sau unu, atunci iteraţia poate deveni mai simplă.

Clasificarea oscilatoarelor

După ce s-a prezentat teoria oscilatoarelor recursive în timp discret, se

vor lista câteva oscilatoare comune împreună cu caracteristicile lor. S-a ales

caracterizarea a cinci oscilatoare care diferă prin numărul de înmulţiri pe

iteraţie şi tipurile lor de ieşire. Toate oscilatoarele reprezentate prin matrici

22× vor genera două sinusoide simultan. Aceste două sinusoide vor avea

întotdeauna aceeaşi frecvenţă, faze diferite una faţă de cealaltă şi pot avea

amplitudini diferite.

Daca ieşirile au diferenţă de fază de 090 , atunci este vorba despre un

oscilator în cuadratură. Dacă ieşirile celor două sinusoide au aceeaşi

amplitudine, atunci este vorba de un oscilator de amplitudine egală.

Patru din cele cinci oscilatoare prezentate în continuare sunt folosite în

industrie, menţionate în diferite note de aplicaţii şi în articole de specialitate.

Se pot obţine noi variante de oscilatoare prin permutarea elementelor

unei matrici corespunzătoare unui oscilator cunoscut. Dacă se aplică criteriul

Barkhausen matricei obţinute se poate observa dacă noile elemente păstrează

acest criteriu. De asemenea se poate înmulţi matricea unui oscilator cu o altă

matrice, obţinându-se un alt oscilator. În concluzie, lista de oscilatoare poate

fi extinsă.

Pentru a simplifica structura matricei, este introdus conceptul de factor

de acord. Acest parametru, k, se referă la unghiul de variaţie, ω . Atunci

relaţia exactă, ce depinde de oscilatorul particular folosit, va fi generată.

Page 16: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 181

Forma directă

Oscilatorul prezentat sub forma „forma directă” a fost unul din cele

mai simple oscilatoare discrete folosit în aplicaţiile procesoarelor de semnal.

Se revine la aplicaţia iniţială din anul 1980 care folosea acest oscilator

pentru generarea tonurilor de apel din telefonie. S-a găsit această aplicaţie

interesantă de când François Viète a descoperit relaţia de recurenţă

( ) ( ) ( ) ( )ω−ϕ−ϕω=ω+ϕ coscoscos2cos ; rezultatul obţinut de el a fost

publicat în anul 1571!

Oscilatorul „forma directă” are ieşirile de amplitudini egale şi care au o

fază relativă, schimbată cu ω :

( )ω= cos2k (5.62)

Rezultă matricea de rotaţie de forma:

⎥⎦

⎤⎢⎣

⎡ −01

1k (5.63)

Când elementele acestei matrici de rotaţie sunt înlocuite în structura

discretă, oscilatorul devine oscilatorul „formă directă”, reprezentat în

următoarea figură:

Aplicaţii ale procesoarelor de semnal în comunicaţii 182

Oscilatorul digital ghid de undă

Oscilatorul digital ghid de undă este cel mai simplu oscilator cu ieşirile

în cuadratură. Pentru k tinzând la zero, ieşirile sunt aproape egale în

amplitudine. Figura alăturată prezintă forma reţelei pentru acest tip de

oscilator, cu ( )φ= cosk , iar matricea sa de rotaţie este:

⎥⎦

⎤⎢⎣

⎡+

−k1k

1kk (5.64)

Oscilatorul de amplitudine egală

Numele acestui tip de oscilator provine de la ideea că o variabila de

stare este actualizată şi apoi noua valoare este folosită în iniţializarea

variabilelor rămase. Ieşirile oscilatorului sunt de amplitudini egale şi în cvasi-

cuadratură, relaţia de cuadratură în limitele lui k. Pentru prezentarea clară a

iteraţiei oscilatorului pe etaje, dispunem de matricea sa de rotaţie şi de

factorul k.

Matricea oscilatorului poate fi exprimată sub forma unui produs de

două matrici triunghiulare, nici una din ele nu pot funcţiona ca un oscilator.

Page 17: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 183

⎥⎦

⎤⎢⎣

⎡−

⋅⎥⎦

⎤⎢⎣

⎡−

=⎥⎥⎦

⎢⎢⎣

−−

1k

01

10

k1

1k

kk1 2 (5.65)

unde ⎟⎠⎞

⎜⎝⎛ ω=

2sin2k

Structura oscilatorului este prezentată în următoarea figură:

Oscilatorul în cuadratură în trepte

Acest oscilator în cuadratură, pentru k mic, are ieşirile aproape egale în

amplitudine. Din nou, ca mai înainte, se exprimă matricea ca un produs de

alte două matrici, aici, factorul drept este efectiv un oscilator „directă”.

Factorul stâng este folosit pentru a schimba configuraţia oscilatorului drept.

⎥⎦

⎤⎢⎣

⎡−

⋅⎥⎦

⎤⎢⎣

⎡ −=

⎥⎥⎦

⎢⎢⎣

−−

k1

10

10

k1

k1

k1k 2 (5.66)

unde ( )ω= cosk .

Acest tip de oscilator este prezentat în figură:

Aplicaţii ale procesoarelor de semnal în comunicaţii 184

Oscilatorul cuplat, în cuadratură standard

Oscilatorul cuplat, în cuadratură standard are ieşirile de amplitudini

egale şi în cuadratură. Există însă şi un dezavantaj; oscilatorul impune patru

înmulţiri per iteraţie. Acesta, ca şi cel directă se poate obţine direct din

formulele trigonometrice:

( )( ) ( ) ( ) ( ) ( )ωω−ωω=+ω sinnsincosncos1ncos

( )( ) ( ) ( ) ( ) ( )ωω+ωω=+ω cosnsinsinncos1nsin

Aceste formule scrise în funcţie de un singur parametru k sunt:

⎥⎥⎦

⎢⎢⎣

−−−

2

2

k1k

kk1 (5.67)

unde ( )ω= sink

Pe baza proprietăţilor oscilatoarelor, se poate realiza următorul tabel:

Page 18: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 185

Proprietăţile oscilatoarelor digitale

Oscilator Înmulţiri/

iteraţie Amplitu-dini egale

Ieşiri în cuadratură

k Matricea de

rotaţie

Directă 1 Da Nu ( )2cos ω 1

1 0

k −⎡ ⎤⎢ ⎥⎣ ⎦

Digital ghid de undă

1 Nu Da ( )cos ω

1

1

k k

k k

−⎡ ⎤⎢ ⎥+⎣ ⎦

De amplitudine egală

2 Da Nu 2sin2

ω⎛ ⎞⎜ ⎟⎝ ⎠

21

1

k k

k

⎡ ⎤−⎢ ⎥−⎣ ⎦

În cuadratură în trepte

2 Nu Da ( )cos ω 21

1

k k

k

⎡ ⎤−⎢ ⎥−⎣ ⎦

Cuplat, în cuadratură standard

4 Da Da ( )sin ω 2

2

1

1

k k

k k

⎡ ⎤−⎢ ⎥⎢ ⎥− −⎣ ⎦

Controlul dinamic al amplitudinii

Oscilatoarele descrise până în acest punct sunt balistice, în sensul că ele

sunt încărcate cu anumite valori şi pot funcţiona liber. Dacă timpul de

funcţionare este „scurt”, atunci acesta poate funcţiona corect. Dar erorile se

pot acumula până în punctul în care, ieşirile nu îndeplinesc cerinţele impuse.

De aceea, se impune o modalitate de control a amplitudinii

oscilatorului. O abordare standard foloseşte un control automat al câştigului

(CAG). Deoarece oscilatorul se repetă recursiv, s-ar putea măsura doar

puterea la ieşire şi se corectează după fiecare iteraţie. Dacă erorile sunt mici,

corecţiile pot fi aproximate.

Acum, când se măsoară ieşirile oscilatorului se vor folosi puterile

(pătratele amplitudinilor) în locul amplitudinilor, pentru a evita radicalul.

Aplicaţii ale procesoarelor de semnal în comunicaţii 186

Calculele cu radical tind să fie costisitoare în DSP (procesor digital de

semnal). Puterea instantanee, P, este dată de formula:

( )

( )φ

φ−

−−=

2

2122

21

sin

cosxxc

b2x

c

bx

P (5.68)

Această formulă este greu de implementat, dar pentru frecvenţe fixe,

calculul implică şase înmulţiri şi două scăderi. Totuşi, analizând momentul

anterior schimbării frecvenţei, se observă, că în cazul în care ne limităm la

oscilatoarele în cuadratură ( )090±φ , formula puterii se poate scrie sub o

formă mai simplă:

22

21 x

c

bxP −= (5.69)

In acelaşi timp cu măsurarea puterii, trebuie găsit şi câştigul necesar

pentru gama de reprezentare a variabilelor de stare. O formulă generală pentru

câştig:

q

q0

P

PG = (5.70)

unde P este puterea măsurată, 0P este puterea de referinţă, q este

factorul de convergenţă.

Deoarece se preferă să nu se folosească împărţirea, se va folosi

aproximarea Taylor de ordin întâi; această aproximare are proprietatea de a

transforma precis împărţirea în scădere. Se obţine:

0P

Pqq1G ⋅−+≈ (5.71)

Deoarece se foloseşte G ca scară de reprezentare a amplitudinilor

(variabilelor de stare), este indicat ca 2

1q = . Pentru procesoare de semnal în

Page 19: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 187

virgulă fixă, este potrivită alegerea 2

1P0 = ( 707,0eamplitudin ≈ ). Astfel

formula devine: P2

3G −= .

Apare cazul în care G poate fi unu, şi uneori va trebui sa se

înmulţească variabilele de stare cu un număr puţin mai mare ca unu. O soluţie

ar putea fi înmulţirea variabilelor de stare cu G2

1 şi apoi dublarea

rezultatului. Pe scurt, controlul automat al câştigului implică următorii paşi

pentru fiecare iteraţie:

1) Calculul ieşirilor unei iteraţii a oscilatorului pentru actualizarea

variabilelor de stare

2) Măsurarea puterii, P , la ieşirea oscilatorului

3) Calculul factorului de câştig, G

4) Scalarea variabilelor de stare cu factorul de câştig.

Controlul dinamic al frecvenţei

În cele din urmă, se analizează controlul dinamic al frecvenţei.

Deoarece există aplicaţii unde este necesar un control numeric al

oscilatorului, ne vom referi pe scurt la ce implică acest control asupra acestor

oscilatoare. Schimbarea frecvenţei unui oscilator, necesită modificarea numai

a valorii k a matricei de rotaţie, pentru orice valoare a frecvenţei ω . Totuşi,

partea dificilă este menţinerea controlului amplitudinii pe perioada schimbării

dinamice a frecvenţei. Deoarece formula generală pentru putere

Aplicaţii ale procesoarelor de semnal în comunicaţii 188

( )

( )φ

φ−

−−=

2

2122

21

sin

cosxxc

b2x

c

bx

P

arată o dependenţa atât de frecvenţă cât şi de raportul amplitudinii,

aceasta se dovedeşte a fi ineficientă în cazul general. Astfel, problema se

rezumă la actualizarea coeficienţilor în formula puterii, odată cu schimbarea

frecvenţei. În plus, unele oscilatoare îşi vor modifica amplitudinile de la

ieşire.

Dacă aplicăm anumite restricţii în funcţie de tipul oscilatorului, situaţia

se poate simplifica. Dacă se analizează cazul oscilatorului cuplat în cuadratură

standard, aceste probleme dispar. In acest caz, formula puterii nu depinde de

elementele matricei la un loc.

Totuşi, dificultatea în acest caz, constă în aplicarea radicalului la doi

dintre coeficienţi. Unul dintre ei poate folosi o dezvoltare binomială de

ordinul întâi pentru aceşti doi termeni, dar în acest caz, determinantulnu este

chiar unu şi astfel CCA trebuie să corecteze eroarea. Matricea de rotaţie a

oscilatorului cuplat standard în cuadratură ce foloseşte dezvoltarea binomială

de ordinul întâi pentru cei doi termeni cu radicali are forma:

⎥⎥⎥⎥

⎢⎢⎢⎢

−−

2

k1k

k2

k1

2

2

Matricea de mai sus are un determinant aproape egal cu unu (mai exact,

4

k1

2+ ), astfel încât compensarea câştigului se aplică într-o gamă largă a lui

k . Dar chiar dacă se foloseşte un oscilator în cuadratură cu amplitudini

diferite, se poate găsi o soluţie simplă pentru controlul amplitudinii. Se poate

muta aproximarea procesului din matricea de rotaţie la măsurarea puterii.

Page 20: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 189

Un exemplu ce foloseşte un oscilator digital ghid de undă va fi

prezentat în cele ce urmează. Formula puterii pentru acest oscilator, în funcţie

de parametrul k variabil este:

22

21 x

1k

1kxP ⋅

+−

−=

Ştiind că se calculează puterea la fiecare iteraţie şi încercând să se evite

împărţirea, se va folosi dezvoltarea serie de ordin întâi a numitorului ceea ce

duce la următoarea aproximaţie pentru P :

( ) 22

221 xk1xP ⋅−+≈

Această aproximare este bună pentru k mic şi k este mic pentru

frecvenţe apropriate de 4

1 din rata de eşantionare. Dacă intervalul de variaţie

trebuia mărit, trebuie folosită o dezvoltare serie de ordin mai mare.

Până în acest moment s-a realizat controlul simplu al oscilatorului la

dezvoltări serie de ordin mic pentru termenii dificil de calculat. Dar aceste

aproximări implică un cost; acela că fie se foloseşte oscilatorul într-o bandă

îngustă în care k este mic, sau se utilizează dezvoltări de ordin mai mare

pentru a acoperi intervale mai mari. Rezultatele obţinute în urma unei

aproximaţii de ordin mic sunt bune pentru un interval finit. Uneori, problema

se va reduce la operarea într-un interval în care k este centrat în jurul unei

valori diferite de zero. Această situaţie este rezolvata prin folosirea unei

matrici de translaţie în frecvenţă. Această matrice deplasează frecvenţa

centrală a oscilatorului în punctul de interes. Frecvenţa centrală a oscilatorului

este considerată ca fiind frecvenţa unde k este zero, şi astfel aproximaţiile

sunt exacte la această frecvenţă.

Aplicaţii ale procesoarelor de semnal în comunicaţii 190

Paşii unei iteraţii a unui oscilator controlat în amplitudine şi cu control

dinamic al frecvenţei ce foloseşte o matrice de translaţie în frecvenţă sunt

următorii:

1) Se execută o iteraţie a unui oscilator armonic pentru a actualiza

variabilele de stare. Acesta poate fi unul din oscilatoarele în cuadratură

descrise mai sus.

2) Reactualizarea variabilelor de stare folosind matricea de translaţie in

frecvenţă. Această matrice este identică cu cea a oscilatorului cuplat în

cuadratură standard, unde k este fixat şi reprezintă translaţia frecvenţei.

Deoarece valorile din această matrice se consideră constante, aceste

valori pot fi calculate într-o iteraţie anterioară.

3) Măsurarea puterii, P , la ieşirea oscilatorului. Se face aplicând formula:

( )

( )φ

φ−

−−=

2

2122

21

sin

cosxxc

b2x

c

bx

P sau una din variantele mai simple

cu variabilele de stare.

4) Calcularea factorului de câştig, G .

5) Scalarea variabilelor de stare cu acest factor de câştig.

Trebuie înţeles că o singură pereche de variabile de stare este folosită în

etapele descrise mai sus. Paşii 1,2 şi 5 lucrează cu o singură pereche de valori.

Şi pasul 3 foloseşte aceeaşi pereche la calculul puterii. Acest lucru poate fi

văzut ca două oscilatoare ce funcţionează cu aceleaşi variabile de stare. Se

poate ca un oscilator să permită controlul dinamic al frecvenţei şi celălalt doar

să realizeze o schimbare în frecvenţă.

Structurile reprezentând iteraţiile oscilatoarelor rămân aceleaşi ca în

tabelul anterior. Explicit, se poate scrie matricea de translaţie ca:

Page 21: Cap 5 sinus v4 - ERASMUS Pulse · UTARE ÎN TABEL Generarea sinusului este folositoare în comunica ţ ii ş i aplica ţ ii de control. Odat ă cu introducerea procesoarelor digitale

Capitolul 5 – Generarea semnalelor sinusoidale 191

( ) ( )( ) ( )⎥⎦

⎤⎢⎣

⎡ωω−ωω

cossin

sincos

Într-o implementare practică, se va seta s

0

f

f2π=ω , unde 0f este

frecvenţa de salt în Hertz, şi sf este frecvenţa de eşantionare. Frecvenţa de

salt poate să difere de frecvenţa centrală dorită, din moment ce pentru unele

oscilatoare frecvenţa centrală este 4

1 din frecvenţa de eşantionare.

Paşii pentru proiectarea unui oscilator recursiv sunt:

1) Alegerea unghiului de măsură în funcţie de frecvenţa dorită a

oscilatorului, folosind sf

f2π=ω .

2) Selectarea unei reţele de oscilatoare pe baza proprietăţilor din tabel.

3) Definirea lui k folosind relaţia cu ω din tabel.

4) Determinarea coeficienţilor reţelei din matricea de rotaţie din tabel.

5) Stabilirea condiţiilor iniţiale conform relaţiei: ( )⎥⎦⎤

⎢⎣

⎡φψ

=cos

1x .

6) Implementarea oscilatorului folosind un mediu hardware pentru a

determina daca este necesar un control dinamic al amplitudinii.

Dacă se foloseşte un control dinamic al frecventei, să se afle matricea

de translaţie, acolo unde este necesar.