Sunteți pe pagina 1din 15

Capitolul 7 Transformata Fourier rapid i aplicaii

177

178

Aplicaii ale procesoarelor de semnal n comunicaii

performanele ntregului sistem. De exemplu, aplicaiile audio de calitate


necesit o precizie de cel puin 16 bii pentru a elimina distorsiunile audio.

CAPITOLUL 7

2. Aplicaii de recunoatere multe probleme implic recunoaterea i


detectarea semnalului cu un coninut de frecven specific (un model
spectral predefinit). De exemplu, vorbitul const n secvene de sunete cu

TRANSFORMATA FOURIER RAPID I APLICAII

caracteristici specifice ale frecvenei. n acest tip de aplicaie conversia n


domeniul frecven e adesea doar un pas n tot sistemul. E important ca
procesul de conversie s fie rapid pentru a avea timp suficient pentru a

7.1 APLICAII ALE TRANSFORMATEI FOURIER

aplica restul tehnicilor de analiz i recunoatere. n plus fa de viteza


calculelor transformatei Fourier procesorul n discuie trebuie s fie rapid

Din cauza naturii de baz a conceptului de frecven, aplicaiile practice


ale transformatei Fourier abund. Pe msur ce metode eficiente din punct de
vedere al costului vor fi disponibile s calculeze transformata Fourier,
numrul aplicaiilor practice bazate pe frecven vor fi mai numeroase. n
aceste aplicaii bazate pe frecven un procesor de semnal digital poate
calcula n mod eficient transformata Fourier i poate efectua prelucrri
specifice domeniului frecvenei, precum eliminarea unor anumite componente
ale frecvenei.
Exist trei tipuri generale ale aplicaiilor transformatei Fourier:
1. Aplicaii bazate pe calcule numerice majoritatea aplicaiilor care
analizeaz spectrul necesit evaluarea direct a transformatei Fourier.
Deoarece transformata Fourier e o expresie matematic aceste aplicaii
sunt bazate pe calcule numerice. Exemplele se ntind de la analiza
spectrului instrumentelor de laborator i al echipamentului audio
profesional pn la estimarea vitezei la radar. De observat ca n aplicaiile
bazate pe numere, acurateea calculelor e de importana vital pentru

la operaii de prelucrare generale pentru a realiza o varietate de calcule n


domeniul frecven.
3. Aplicaii bazate pe convoluie a treia clas de aplicaii a transformatei
Fourier folosete transformarea ca pe un instrument matematic simplu
pentru a realiza filtrarea general ntr-o manier foarte eficient. Acest
concept e bazat pe proprietatea c transformata Fourier a convoluiei a
dou semnale n timp e egal cu produsul transformatelor celor dou
semnale. Volumul calculelor implicate n produsul de convoluie devine
mare dac lungimea filtrului este foarte mare. Astfel, dac transformata
Fourier a semnalului de la intrarea filtrului se poate calcula eficient,
filtrarea se realizeaz prin nmulirea acesteia cu funcia de transfer n
frecven a filtrului (care poate fi precalculat). Numrul de calcule pentru
transformata Fourier direct i invers i pentru filtrare n domeniul
frecvenei poate fi mai mic dect pentru convoluie mai ales pentru filtre
cu funcii de transfer simple (trece jos, trece band, etc.) unde nmulirea n
domeniul frecven poate fi nlocuit cu o simpl operaie de mascare care
elimin benzile de oprire (spectrul ieirii este 0) i las spectrul semnalului
de intrare n benzile de trecere nemodificat.

179

Capitolul 7 Transformata Fourier rapid i aplicaii

180

Aplicaii ale procesoarelor de semnal n comunicaii


De asemenea printr-o simpl schimbare de notaie obinem:

7.2 ALGORITMI RAPIZI PENTRU CALCULUL


TRANSFORMATEI FOURIER DISCRETE

WNnk = e

2
nk
N

=e

2
n
N /k

= W Nn

(7.5)

Dac alegem N = N1 N 2 , se poate descompune transformarea de ordin

Fie secvena complex x( n) de suport finit, n = 0,1,..., N 1 . Se

N n transformri de ordin N1 i N 2 care la rndul lor se calculeaz pornind

definete transformata Fourier discret (TFD) a acestei secvene prin:


N 1

X (k ) = TFD{x(n)}(k ) = x(n)WNnk , k = 0,1,..., N 1

(7.1)

de la o descompunere similar.
Un caz important este acela n care N = R M , R numindu-se baz. De

n =0

unde WN = e

2
N

exemplu, dac R = 2 avem algoritmi n baza 2, cu N putere ntreag a lui 2,

se numesc coeficieni de rotaie.

Cunoscnd X (k ) se poate determina secvena x( n) cu ajutorul


transformatei Fourier discret invers (TFDI) definit de relaia:
1 N 1
x(n) = TFDI{ X (k )}(n) = X (k )WN nk ,
N k =0

n = 0,1,..., N 1

etc.
Pornind de la o reprezentare a indicilor sub forma:
n K1n1 + K 2 n2
k K 3k1 + K 4 k2

(7.2)

Pentru efectuarea transformatei Fourier discrete, conform formulei


(7.2), sunt necesare N 2 nmuliri complexe i N ( N 1) adunri complexe. O

n cazul algoritmilor n baza R sunt posibile urmtoarele moduri de


reprezentare a indicilor:

nmulire complex necesit patru nmuliri i dou adunri reale. Rezult un

n Rn1 + n2 ,

numr de 4N 2 nmuliri reale i 4 N 2 2 N adunri reale. Complexitatea

N
k k1 + k2 ,
R

aritmetic este de forma O( N 2 ) deci crete cu N 2 . Astfel, pentru N = 1024


sunt necesare 4.194.304 nmuliri reale care, pe un procesor de semnal cu un
Exist algoritmi care permit efectuarea TFD cu un numr mai mic de
operaii. S observm nti cteva proprieti ale coeficienilor de rotaie WN :
(7.3)

de aici rezultnd o formul mai general:


+

WN

= (1) WN

n2 = 0,1,..., R 1
(7.7)
k2 = 0,1,..., R 1

N
n2 ,
R

k R k1 + k2 ,

N
1,
R
N
k1 = 0,1,..., 1,
R

n1 = 0,1,...,

n2 = 0,1,..., R 1
(7.8)
k2 = 0,1,..., R 1

ceea ce conduce la algoritmi cu decimare n frecven.

WN2 = e j = 1

WNkN = 1 ,

N
1,
R
N
k1 = 0,1,..., 1,
R

n1 = 0,1,...,

ceea ce conduce la algoritmi cu decimare n timp i

n n1 +

ALU, necesit un numr aproape dublu de cicluri main.

(7.6)

(7.4)

181

Capitolul 7 Transformata Fourier rapid i aplicaii

182

Aplicaii ale procesoarelor de semnal n comunicaii


Fiecare din sumele ce apar n cele dou relaii de mai sus, reprezint

7.2.1 Algoritmi FFT cu decimare n timp n baza 2

cte o TFD n N / 2 puncte, primele pentru secvena format cu eantioanele

Aceti algoritmi au fost introdui de Cooley i Tukey pentru N = 2M ,

pare, a doua, cu eantioanele impare. Rezult schema din figura:

M N.

x(2n1)

n acest caz indicii se vor scrie:


N
1,
2
N
k1 = 0,1,..., 1,
2

n 2n1 + n2 ,
k k1 +

n1 = 0,1,...,

N
k2 ,
2

TFD
N/2

X(k1)

k1
N/2-1

n2 = 0,1
(7.9)

k2 = 0,1

x(2n1+1)

TFD
N/2

i rezult:

k1

WNk1

N/2-1
N

Figura 7.1. Descompunerea TFD de ordin N n transformate de ordin N / 2

N
1
2
(2 n1 + n2 ) ( k1 + k2 )
N
2
X (k ) = X (k1 + k2 ) = x(2n1 + n2 )WN
2
n1 = 0 n2 = 0

(7.10)
Trecerea de la transformatele de ordin N / 2 la transformata de ordin N

sau:
X (k1 +

N
1
2

N
k2 ) = x(2n1 ) W Nn1k1 + WN
2
n1 = 0
2

k1 +

N
1
N
k2 2
2

se face prin intermediul unor structuri de tip fluture (figura 0.2). Aceast

x(2n + 1)

n1 =0

W Nn1k1

(7.11)

structur este constituit dintr-o nmulire cu factorul WNk , i o transformat


Fourier discret de ordinul doi.

Dar:

A
k1 +

WN

N
k1
2

= ( 1) 2 WNk1
k

X (k1 ) = x(2n1 ) W
n1 =0

n1k1
N
2

+W

k1
N

N
1
2

x(2n + 1)
1

n1 = 0

W Nn1k1 =
2

X (k1 +

= TFD N { x(2n1 )} W TFD N { x(2n1 + 1)}


2

transformatele de ordin N / 2 pn se ajunge la transformate de ordinul 2.

N
1
2

k1
N

B'

Procedeul descris mai nainte se va aplica recursiv pentru

N
) = x(2n1 ) W Nn1k1 WNk1 x(2n1 + 1) W Nn1k1 =
2
n1 = 0
n1 =0
2
2

-1

(7.13)

= TFD N { x(2n1 )} + W TFD N { x(2n1 + 1)}


N
1
2

WNk

Figura 7.2. Fluturele pentru FFT n baza 2 DIT

k1
N

A'

(7.12)

aa nct, scriind separat pentru k2 = 0 i k2 = 1 :


N
1
2

X(k1+N/2)

-1

Rezult c pentru o transformat de ordin N = 2 M sunt necesare M


(7.14)

etaje, fiecare coninnd N / 2 fluturi, deci n total sunt necesari N 2log 2 N

fluturi.

Capitolul 7 Transformata Fourier rapid i aplicaii

183

x(0)

X(0)

184

Aplicaii ale procesoarelor de semnal n comunicaii


7.2.2 Algoritmi FFT cu decimare n frecven n baza 2

x(4)

X(1)
-1

x(2)
x(6)

W2

W0
-1

X(2)

-1

W1

x(3)
x(7)

X(3)
W0

W0
W2

W0
-1

W2
-1

W3

-1

X(4)
X(5)
-1
-1
-1

X(6)

i lui x(3), rezultnd un graf pentru transformata n 8 puncte cu intrrile n

W0

x(1)
W

W0

x(6)

W0
W0
0

x(7)

X(2)
-1

W2
-1

-1

W0

X(4)
-1

x(5)

X (2k1 + k2 ) = x(n1 +
n1 =0 n2 = 0

-1

-1
-1

k2 = 0,1

N
( n1 + n2 ) (2 k1 + k2 )
N
n2 )WN 2
2

X (2k1 ) = x[n1 ] + x n1 + W Nn1k1 =


2 2

n1 =0
N

= TFD N x[n1 ] + x[n1 + ]


2

-1

-1
-1

(7.17)

N
1
2

(7.18)

= TFD N x[n1 ] x[n1 + ] WNn1


2

2
Se constat iari descompunerea transformatei de ordin N n dou
transformate de ordin N / 2 .
0

1
x(n1)

n1

TFD
N/2

X(2k1)

N/2-1

W1
W2

(7.16)

N
1
2

X(6)
X(1)

-1

(7.15)

din care rezult pentru k1 = 0 i k2 = 1 :

X(0)

x(0)

x(3)

n2 = 0,1

X [2k1 + 1] = x[n1 ] x n1 + WNn1W Nn1k1 =


2

n1 = 0
2

ordinea fireasc:

x(4)

N
1
1
2

X(7)

Putem reordona intrrile din graful anterior, x(4) i x(6) n locul lui x(1)

N
1,
2
N
k1 = 0,1,..., 1,
2
n1 = 0,1,...,

deci:

-1

Figura 7.3. Graful unei FFT n baza 2 cu decimare n timp n opt puncte

x(2)

N
n2 ,
2

k 2k1 + k2 ,

-1

W0
-1

n n1 +

x(1)
x(5)

n acest caz se reprezint indicii sub forma:

X(5)
0

X(3)
x(n1+N/2)

-1

X(7)

Figura 7.4. Rearanjarea grafului pentru calculul FFT cu decimare n timp

n1

-1

WNk1

TFD
N/2

X(2k1+1)

N/2-1

Figura 7.5. Descompunerea TFD de ordin N n transformate de ordin N / 2

185

Capitolul 7 Transformata Fourier rapid i aplicaii

n continuare fiecare din cele dou grupuri de cte N / 2 semnale ce


constituie intrrile transformatelor n N / 2 puncte se desparte n dou, dup

186

Aplicaii ale procesoarelor de semnal n comunicaii

7.3 IMPLEMENTAREA FFT PE DSP

acelai procedeu (primele N / 4 i urmtoarele N / 4 ).


De exemplu pentru N = 8 , se obine graful din figura 0.6.

7.3.1 Resursele hardware necesare calculului FFT


X(0)

x(0)
W0

x(1)
0

x(2)
-1
x(3)

-1
x(5)
-1
x(6)
x(7)

-1

W2

W0
-1

-1

W0

x(4)

X(4)

Principalul element de calcul al rutinei FFT este fluturele din figura 0.2

X(2)

pentru decimare n timp (DIT) i din figura 0.7 pentru decimare n frecven

-1

X(6)
X(1)

W1

W0
-1

W0

-1

W3

-1

X(5)
X(3)

W2

W0
-1

-1

X(7)

Figura 7.6. Graful unei FFT n baza 2 cu decimare n frecven n opt puncte
Ca i n cazul precedent, rezult log 2 N etaje, n fiecare efectundu-se
N / 2 operaii de tip fluture. Structura fluturelui este ns cea din figura 0.7.
A'

(DIF). Acesta include nmuliri i adunri/scderi complexe (att intrrile


fluturelui ct i factorii de rotaie sunt numere complexe). De aceea este
necesar o arhitectur capabil s suporte reprezentarea i operaiile
aritmetice cu numere complexe.
Pentru nmulire i adunare arhitectura DSP ofer instruciunea MAC
(multiplicare i acumulare) precum i dou registre acumulator. De asemenea,
intrrile i ieirile fluturelui sunt mutate ntre unitatea aritmetic a
procesorului i memorie ceea ce necesit operaii de transfer eficiente.
Algoritmul de calcul FFT implic repetarea structurii de tip fluture de
un numr de ori depinznd de numrul de puncte N. Pentru un program de
calcul al FFT, este important o implementare eficient a repetrii fluturilor.
O soluie hardware este dat de instruciunea DO loop, fr a fi
necesare alte operaii de iniializare (zero overhead). Fiecare iteraie este

-1

WNn

B'

Figura 6.7. Fluturele pentru FFT n baza 2 DIF


Evident complexitatea, exprimat prin numerele de nmuliri reale i de
adunri reale este aceeai ca n algoritmul precedent.
n acest caz eantioanele semnalului se iau n ordinea natural, iar ale
ieirii, rezult n ordinea inversat a biilor.

astfel realizat fr ntrzieri suplimentare n execuie.


Aa cum s-a observat n prezentarea algoritmului FFT, intrrile, ieirile
sau factorii de rotaie pot surveni n ordinea inversat a reprezentrii binare a
indecilor. Aceasta implic o reordonare a operanzilor conform algoritmului
bit-reversed. Procesoarele de semnal din familia DSP au facilitatea de a
adresa n ordinea inversat a biilor adresei.

Capitolul 7 Transformata Fourier rapid i aplicaii

187

188

Aplicaii ale procesoarelor de semnal n comunicaii

Alt aspect privitor la resursele hardware l reprezint numrul de

7.3.2 Caracteristicile fluturilor pentru FFT n baza 2 DIT i DIF

registre interne disponibile pentru stocarea rezultatelor intermediare, avnduse n vedere c stocarea acestora n memorie necesit mai mult timp de
procesare.
Datele de la intrarea FFT sunt n general eantioane primite de la un
convertor A/D. Achiziia datelor trebuie efectuat n paralel cu calculul FFT

S considerm reprezentarea datelor de la intrarea i ieirea fluturilor


precum i a factorilor de rotaie sub forma complex: parte real i parte
imaginar.

pentru o aplicaie de timp-real. De aceea DSP trebuie s ofere o interfa

WNk = e

2
k
N

simpl cu diversele convertoare A/D precum i tehnici de ntreruperi sau

2
k j sin

Wr

DMA pentru stocarea datelor achiziionate fr a interfera cu calculul FFT.


n concluzie, obinerea unei implementri eficiente a FFT pe DSP

2
= cos
N

(7.19)

Wi

Ecuaiile de calcul ale ieirilor complexe ale fluturilor pentru DIT i


DIF sunt date n tabelul urmtor:

depinde de urmtorii factori hardware:


1. Instruciune de multiplicare/acumulare;

2. Transferul datelor dual n memorie ntr-un singur ciclu main;

A' = A + B WNk

B ' = A B WNk

A' = A + B

3. Instruciune de ciclare fr overhead;


4. Mod de adresare bit-reversed;
5. Numr suficient de registre;
6. Interfa rapid I/O pentru achiziia datelor n timp real.

WNk

-1

Fluturele pentru FFT n baza 2 DIT

-1

Ar' = Ar + Br

Ai' = Ai + ( BW
i r BrWi )

Ai' = Ai + Bi

Br' = Ar ( BrWr + BW
i i)
Bi' = Ai ( BW
i r BrWi )
Ecuaiile ieirilor fluturelui DIT

B' = ( A B) WNn

Fluturele pentru FFT n baza 2 DIF

A = Ar + ( BrWr + BW
i i)
'
r

WNn

Br' = ( Ar Br )Wr ( Ai Bi )Wi


Bi' = ( Ar Br )Wi + ( Ai Bi )Wr
Ecuaiile ieirilor fluturelui DIF

Teoretic, aa cum rezult din ecuaiile de calcul ale ieirilor, fluturii


pentru DIT i DIF n baza 2 au aceeai complexitate aritmetic: trei adunri,
trei scderi i patru nmuliri. Pe procesoarele de semnal care nu efectueaz n
paralel nmulirea i adunarea sunt necesare zece instruciuni pentru un
fluture.

189

Capitolul 7 Transformata Fourier rapid i aplicaii

190

Instruciunea MAC efectueaz o nmulire i o adunare n paralel.

Aplicaii ale procesoarelor de semnal n comunicaii


7.3.3 Caracteristicile unei transformate DIT

Pentru fluturele DIT patru dintre adunri pot fi efectuate n paralel cu


nmulirile rmnnd de efectuat dou adunri. Pentru fluturele DIF ns,
numai dou dintre adunri pot fi efectuate n paralel cu nmulirea, rmnnd
de efectuat patru adunri.

Index
binar

Distana ntre
nodurile duale

Distana ntre
nodurile duale

000 x(0)

X(0) 000
0

001 x(1)

X(4) 100
-1

A' = A +

B WNk

A' = A + B

010 x(2)

X(2) 010
-1

011 x(3)
100 x(4)

WNk

B' = A

-1

B WNk

Fluturele pentru FFT n baza 2 DIT

-1

WNn

B' = ( A

Fluturele pentru FFT n baza 2 DIF

T1 = Ar + BrWr

MAC

A = T1 + BW
i i

MAC

T1 = Ar Br

B = 2 Ar A

SUBL

Ai' = Ai + Bi

ADD

T2 = Ai BrWi

MAC

T2 = Ai Bi

SUB

'
r

'
r

'
r

A = T2 + BW
i r
'
i

Bi' = 2 Ai Ai'

B) WNn

A = Ar + Br
'
r

MAC

T3 = TW
1 r

SUBL

Br' = T3 T2Wi
T4 = T2Wr
Bi' = T4 + TW
1 i

ADD

110 x(6)
111 x(7)

X(6) 110

-1

X(1) 001

-1

W0

-1

W0

SUB

-1

101 x(5)

-1

Index
binar

Distana ntre
nodurile duale

X(5) 101

-1

X(3) 011

-1

W2

W3

-1

-1

-1

Etaj 1

Etaj 2

Etaj 3

X(7) 111

Figura 6.8. Gruparea fluturilor pentru calculul FFT DIT

MPY
MAC
MPY

Etajul 1

Etajul 2

Etajul 3

Etajul log2N

Numr de
grupuri

N/2

Numr de
fluturi pe grup

N/2

N/4

N/8

Distana ntre
noduri duale

N/2

N/4

N/8

(N/4)k,

(N/8)k,

k,

k=0, 1

k=0, 1, 2, 3

k=0 .. N/2-1

MAC

(N/2)k,
Exponentul
coeficienilor W k=0

Capitolul 7 Transformata Fourier rapid i aplicaii

191

7.4 SCALAREA DATELOR FFT PENTRU IMPLEMENTAREA


PE PROCESOR N VIRGUL FIX

trebuie s se in seama de precizia finit a calculelor datorat numrului de


bii pe care sunt reprezentate numerele. Pentru a preveni depirile n calculul
ieirilor fluturilor FFT se realizeaz scalarea intrrilor prin shiftare la dreapta
(mprire cu o putere a lui 2).

posibil a biilor ntr-o transformat n N puncte este egal cu numrul de etaje

10 etaje) trebuie s fie introdui 10 bii de gard n datele de intrare, rmnnd


14 bii de informaie. Aceast metod de scalare este simpl i eficient
pentru FFT de lungimi mici. Cu ct lungimea FFT crete, numrul de bii de
gard necesari crete nrutindu-se raportul semnal-zgomot.
Aa cum s-a artat, o cretere medie de un bit se nregistreaz dup
ieirilor cu 2 dup fiecare etaj. Numrul de mpriri cu 2 fiind egal cu

- Scalarea datelor de la intrarea FFT;

numrul de etaje, pentru a obine rezultatul corect al FFT trebuie nmulite

- Scalarea datelor la ieirea din fiecare fluture;

ieirile ultimului etaj cu N. Aceast metod are un raport semnal-zgomot mai

- Scalare condiionat a datelor pe blocuri.


Prima metod care asigur c nu apar depiri este s se includ
suficieni bii de gard pentru datele de la intrarea FFT. Aceasta nseamn c
prin shiftare la dreapta a datelor, cei mai semnificativi bii permit creterea
numerelor de la un etaj la altul.
n modul, ieirile fluturelui pot crete cu un bit la fiecare etaj aa cum
rezult din ecuaia:
(7.20)

i avnd n vedere ca factorii de rotaie W = e j au modulul unitar,


adunarea poate produce creterea cu un bit (dublare).

bun ca metoda anterioar deoarece se pornete cu date de intrare mai precise.


Totui, n etajele care nu au creteri ale numrului de bii scalarea nu este
necesar, aprnd astfel o pierdere de informaie.
A treia metod de scalare trateaz un etaj ca pe un bloc de date,
atribuind un exponent pentru fiecare bloc. Aceast metod se mai numete

scalare condiionat n virgul mobil pe bloc. Dac apare o cretere a


numrului de bii la o ieire, ntregul bloc de date este shiftat la dreapta i
exponentul blocurilor este incrementat. La sfritul FFT trebuie determinat
numrul de scalri efectuate pentru a avea un rezultat corect. Implementarea
pe DSP56300 folosete bitul de scalare (bitul 7 din registrul de stare) pentru

Prile reale i imaginare se calculeaz cu o ecuaie de tipul:


(7.21)

Pentru = / 4 datele pot crete cu un factor maxim de 2.4 de la


intrarea la ieirea fluturelui ceea ce nseamn o cretere cu doi bii. Totui,
numai dou grupuri de fluturi au factorul de rotaie maxim ntr-un etaj i nu se
nregistreaz o cretere cu acest factor maxim n dou etaje consecutive.

Numrul de bii de gard necesar pentru a compensa creterea maxim

fiecare etaj. O alt metod de compensare a creterii biilor const n scalarea

Una din urmtoarele metode de scalare poate fi aplicat:

A ' = A + B cos + C sin

Aplicaii ale procesoarelor de semnal n comunicaii

adic log 2 N bii. De exemplu, ntr-o transformat n 1024 de puncte (care are

n implementarea diverilor algoritmi pe procesoarele de semnal

A ' = A + BW

192

testarea apariiei creterii biilor i actualizarea exponentului. Sunt adugate


cinci instruciuni la sfritul fiecrui etaj. Aceast metod asigur cel mai bun
raport semnal-zgomot dar este i cea mai costisitoare din punct de vedere al
complexitii programului.

193

Capitolul 7 Transformata Fourier rapid i aplicaii

194

Aplicaii ale procesoarelor de semnal n comunicaii


Pentru un cadru de lungime N = 2k rezult c ultimii k bii ai adresei

7.5 ADRESAREA N ORDINE INVERS A BIILOR

vor trebui inversai. Pentru aceasta registrul Nn trebuie s aib valoarea:

Inversarea ordinii biilor este o tehnic de adresare utilizat n calculul


FFT pentru reordonarea datelor n ordine secvenial. Un exemplu de
inversare a ordinii biilor este prezentat mai jos. Inversarea ordinii biilor
opereaz asupra indexului binar care reprezint poziia unui eantion ntr-un
cadru. n exemplul dat avem opt date, deci sunt necesari trei bii pentru
reprezentarea celor opt indeci. Prin inversarea ordinii celor trei bii se obine

Nn = 2k 1

De asemenea adresa de baz a secvenei de intrare trebuie s fie putere


ntreag a lui 2 ndeplinind condiia:
2m N
= 1000. Ultimii trei LSB vor fi 000,001,002,...,111.
M0 = $000000. R0 = 1000. N0 = 0100 = 23-1.

Binar

Secvena
ordonat

Adresa
secvenei
iniiale

Secvena
iniial

000

x(0)

$8 = 1000

100

001

x(1)

010

010

x(2)

$9 = 1001

x(6)

110

011

x(3)

$A = 1010

x(1)

001

100

x(4)

x(5)

101

101

x(5)

$B = 1011

x(3)

011

110

x(6)

$C = 1100

x(7)

111

111

x(7)

$D = 1101

Pe DSP acest mod de adresare este selectat prin ncrcarea registrului

$E = 1110

Mn cu zero (Mn = $000000). Modificarea adresei este realizat hardware prin

$F = 1111

Indexul cu biii inversai

Secvena
iniial

Decimal

Binar

Decimal

x(0)

000

x(4)

x(2)

incrementarea i propagarea transportului n sens invers (reverse-carry), de la


MSB la LSB. Aceasta este echivalent cu inversarea coninutului registrelor
Rn i Nn, adunarea ofsetului din registrul Nn i reinversarea ordinii biilor
rezultatului.

(7.23)

De exemplu, o secven de intrare de 8 elemente are adresa de baz $8

secvena reordonat secvenial.

Indexul iniial

(7.22)

Modificarea adresei
reverse-carry
R0 = 1000 +
N0 = 0100
R0 = 1100 +
N0 = 0100
R0 = 1010 +
N0 = 0100
R0 = 1110 +
N0 = 0100
R0 = 1001 +
N0 = 0100
R0 = 1101 +
N0 = 0100
R0 = 1011 +
N0 = 0100
R0 = 1111 +
N0 = 0100

Secvena
reordonat
0
4
2
6
1
5
3
7

n mod normal, pentru reordonarea datelor este necesar un cadru de


memorie suplimentar pentru transferul direct (cum apare n tabelul de mai
sus). n situaiile n care spaiul de memorie este mai critic dect timpul de

195

Capitolul 7 Transformata Fourier rapid i aplicaii

execuie se prefer o metod in place (fr memorie suplimentar) de

196

Aplicaii ale procesoarelor de semnal n comunicaii

7.6 OPTIMIZAREA PERFORMANELOR FFT

ordonare n ordinea invers a biilor. Dup cum se poate observa, dac


indexul binar este simetric (este acelai i cu biii inversai) data respectiv nu
trebuie schimbat. n celelalte cazuri se pot forma perechi de date care i

7.6.1 Optimizarea

schimb poziia una n locul celeilalte (1 cu 4, 3 cu 6 din exemplul anterior).


Judecarea performanelor oricrui program necesit luarea n
considerare a complexitii att a timpului de execuie ct i a spaiului

Iniializri
r0
m0
n0
r1

=
=
=
=

ocupat. Totdeauna exist un compromis ntre acestea dou. Complexitatea

data + N/2
0 (bit reversed)
N/2
data + 1

timpului de execuie arat ct de repede poate fi implementat un algoritm pe


un procesor specificat, n timp ce complexitatea spaiului arat ct memorie
poate fi necesar. Optimizarea poate s reduc necesarul de memorie sau s

do N-1 points

minimizeze timpul de rulare al unui algoritm. Deoarece costurile memoriei


sunt ntr-o continu descretere, optimizarea timpului de execuie devine din

NU

r0 r1

DA

ce n ce mai important. O metod de evaluare a complexitii timpului de


execuie a unui algoritm este comparaia complexitii teoretice, complexitii

a = x:(r0)
b = x:(r1)
x:(r0) = b
x:(r1) = a

implementrii ideale i complexitii practice. Complexitatea teoretic se


refer la numrul de adunri i nmuliri cerute de algoritmul dat independent
de arhitectura procesorului. Acest tip de evaluare e bun doar pentru o
comparaie de nivel nalt ntre algoritmi i nu reflect performanele reale ale

(r0)+n0 (bit reversed)


(r1)+
(liniar)

algoritmului pe procesorul dat. Nu e surprinztor faptul c un algoritm cu o


complexitate teoretic mic are o complexitate implementat ideal mai mare.
Complexitatea implementat ideal se refer numai la implementarea

Figura 6.9. Algoritmul in place de reordonare a datelor.

nucleului algoritmului n funcie de posibilitile instruciunilor procesorului


dat cum ar fi: tipuri de instruciuni disponibile, moduri de adresare, transferuri

Algoritmul este prezentat n figur. Registrul r0 este folosit pentru

paralele ale datelor, etc. Complexitatea implementrii ideale arat

adresarea bit-reversed, iar r1 pentru adresare liniar. Dac r0 = r1 (index

performanele fr overhead ale algoritmului dat pe procesor i furnizeaz o

simetric) sau dac r0 < r1 (ca s nu fie schimbat de dou ori aceeai pereche)

estimare optimist a performanei algoritmului. Complexitatea practic

nu se schimb datele ntre ele.

reprezint complexitatea implementrii ideale plus structura de overhead

197

Capitolul 7 Transformata Fourier rapid i aplicaii

datorat procesorului. Overhead-ul include toate instruciunile necesare


neasociate

nucleului

algoritmului.

Iniializarea

pointerilor,

pregtirea

198

Aplicaii ale procesoarelor de semnal n comunicaii

Folosind trei cicluri DO intercalate pentru a minimiza spaiul de


memorie de program.

ciclurilor, salturile la subrutine sunt structuri tipice de overhead n procesor.


Prin distingerea diferitelor grade de complexitate se poate determina uor care
procesor e compatibil pentru fiecare aspect i care instruciune sau mod de

7.6.3 Optimizarea pentru o execuie mai rapid

adresare e critic pentru algoritmii specifici. De exemplu, complexitatea


teoretic pentru radix-2 e de patru multiplicri i ase adunri sau scderi.

Dei programul discutat anterior se execut foarte rapid, anumite


aplicaii impun cerine mai puin stringente referitoare la mrimea memoriei,
dar cer o execuie mai rapid. O execuie rapid poate fi obinut prin

7.6.2 Minimul de memorie ocupat implementarea in place

optimizarea algoritmului anterior. n urmtoarele rnduri vom prezenta civa


pai de a atinge aceast optimizare:

Dei fiecare fluture are dou date complexe de intrare i dou de ieire,
calcularea fluturelui poate fi efectuat folosind aceeai zon de memorie

Deoarece n primul i al doilea etaj sunt factori de rotaie triviali (care


nu implic operaii aritmetice) de tipul:

numit calcularea in place. Necesarul de memorie poate fi minimizat n


cazurile:

Aranjarea datelor n ordinea invers a biilor. Acest lucru poate fi fcut

WN0 = 1 i WNN / 4 = j

(7.24)

se pot combina primul i al doilea etaj ntr-un fluture de ordin 4 ca n


figura 0.10.

in-place deoarece datele sunt interschimbate pe perechi. Astfel, doar o


zon de date de lungime 2N e necesar.

Prin reducerea tabelului factorilor de rotaie de la N locaii la N / 2


locaii reale pentru intrrile ordonate n ordine normal. N / 2 numere

complexe pot fi combinate n perechi de cte dou ce difer prin


factorul WNN / 4 = j . Cu alte cuvinte, factorul de rotaie din al doilea

grup poate fi obinut prin multiplicarea cu j cu factorul din primul

programului fluturelui. Toate grupurile de index par vor folosi factorii

de rotaie negai, cu prile real i imaginar schimbate ntre ele.


ntmplndu-se i cu timpul de acces la memoria factorilor W.

C
-1

grup. Optimizarea poate fi implementat printr-o modificare minor a

Astfel, numrul grupurilor ntr-un etaj se poate reduce la jumtate la fel

B
-1

1
-1

-1

Figura 6.10. Fluturele de ordin 4 obinut prin gruparea primelor dou


etaje FFT

Capitolul 7 Transformata Fourier rapid i aplicaii

199

Prin aceast grupare vor fi calculai N / 4 fluturi cu urmtoarele ecuaii:

200

Aplicaii ale procesoarelor de semnal n comunicaii


Tipul 2 de factori nu sunt cu adevrat triviali dar se reduce teoretic

A = ( Ar + Cr ) + ( Br + Dr )

complexitatea fluturelui de ordin 2 la dou multiplicri i ase adunri sau

B = ( Ar + Cr ) ( Br + Dr )

scderi reale. Totui, pentru procesoarele din familia DSP56300 care au o

C = ( Ar Cr ) + ( Bi Di )

singur unitate MAC tot ase instruciuni sunt necesare, ca mai nainte.

'
r

'
r

'
r

Dr' = ( Ar Cr ) ( Bi Di )
Ai' = ( Ai + Ci ) + ( Bi + Di )

(7.25)

Fiecare grup din ultimul etaj const ntr-un singur butterfly. n acest caz
ciclul de fluturi poate fi eliminat.

Bi' = ( Ai + Ci ) ( Bi + Di )

O alt alternativ e combinarea ultimelor dou etaje ntr-un fluture de

C = ( Ai Ci ) ( Br Dr )

ordin 4. Deoarece fiecare fluture din ultimul etaj are nevoie de factori de

D = ( Ai Ci ) + ( Br Dr )

rotaie diferii, o instruciune care s aduc factorul de rotaie din memorie

'
i

'
i

trebuie inclus n programul fluturelui.

Se observ c n ecuaia (7.25) trebuie efectuate 8 adunri i 8 scderi.

7.7 TRANSFORMATA FOURIER INVERS

Dup combinarea primelor dou etaje, numrul ciclurilor instruciune


necesar pentru calculul FFT devine:

(TRIV N / 4 ) + ( nr.etaje 2 ) N / 2 nr.instr. fluture

Formula pentru transformata Fourier discret invers (TFDI) este:

(7.26)
x(n) = TFDI{ X (k )}(n) =

unde TRIV este numrul instruciunilor pentru fluturele trivial.

1 N 1
X (k ) WN nk ,
N k =0

n = 0,1,..., N 1

(7.29)

Se observ c diferenele care apar ntre formula transformatei directe

Factori de rotaie triviali exist i n etajele rmase. Exist dou tipuri


de fluturi triviali.
Tipul 1:
Tipul 2:

i cea a transformatei inverse sunt: mprirea cu 1/ N i conjugarea factorilor


de rotaie WN .

W = 1, W
0
N

N /4
N

WNN / 8 = WN3 N / 8 =

=j

(7.27)

2
2
j
2
2

(7.28)

Tipul 1 nu implic multiplicri. Pentru a folosi aceste relaii simple n


etajele rmase, trebuie s utilizm fluturi diferii care trebuie inserai ntr-un
etaj. Aceast schimbare are ca rezultat un cod mai mare de program i
instruciuni suplimentare (overhead), cum ar fi actualizarea registrelor de
adres, cicluri DO diferii, si adresare circular.

Pentru factorii de rotaie se poate utiliza un alt vector dect cel utilizat
la transformata direct, sau se poate folosi acelai vector, dar citirea valorilor
factorilor de rotaie ai transformatei inverse s se fac de la sfritul la
nceputul acestuia, avndu-se n vedere formula:
e

2
k
N

=e

j 2 k
N

(7.30)

Se poate calcula transformata Fourier discret invers folosind


transformata direct avnd n vedere urmtoarea relaie:
TFDI{ X (k )} =

*
1
j ( TFD{ j X * (k )})
N

(7.31)

201

Capitolul 7 Transformata Fourier rapid i aplicaii

202

Aplicaii ale procesoarelor de semnal n comunicaii

ntr-adevr:
2

j nk
1 N 1
X ( k )e N

N k =0

TFDI{ X (k )} =

(7.32)

7.8 TRANSFORMATA FOURIER PENTRU SECVENE REALE

2
j nk
N 1
j ( TFD{ j X (k )}) = j j X * (k )e N =
k =0

N 1

= X (k ) j ( j ) e
*

2
nk
N

k =0

X (k ) = X * ( N k )

(7.35)

Re{ X (k )} = Re{ X ( N k )} , Im{ X (k )} = Im{ X ( N k )}

(7.36)

2
N 1
j nk

j 2 nk
= j X * (k ) je N = j X (k ) je N =
k =0
k =0

N 1

n cazul secvenelor reale exist proprietatea:

N 1

= X ( k )e

(7.33)

2
nk
N

iar X (0) i X ( N / 2) au valori reale. n consecin este suficient s se

k =0

de unde, nlocuind n (7.31) rezult relaia dorit.

calculeze un numr de N valori reale.

Fie z = a + jb o variabil complex. Expresia j z * nseamn:


j ( a + jb ) = j ( a jb ) = b + ja
*

deci

Exist algoritmi specializai pentru date reale, care vor permite


(7.34)

adic o inversare ntre prile real i imaginar.


Revenind la relaia (7.31) programul care calculeaz transformata

reducerea complexitii aritmetice precum i a memoriei utilizate, cu preul


unei anumite complicri a programului.
7.8.1 Algoritmi pentru o singur secven real

Fourier invers va avea urmtoarea organigram:


X (k )
Inversare
parte real
parte imaginar

Vom utiliza algoritmul n baz doi cu decimare n timp:


N

N
2
k1 + k2 2
N
X (k1 + k2 ) = x(2n1 )W Nn1k1 + WN 2 x(2n1 + 1)W Nn1k1
2
n1 = 0
n1 = 0
2
2

(7.37)

Pentru k2 = 0 :
X (k1 ) = X (k1 ) + WNk1 X (k1 )

FFT
(scalare cu 1/N)

(7.38)

unde prin X (k1 ) i X (k1 ) s-au notat transformatele de ordin N / 2 .


Inversare
parte real
parte imaginar

x(n) = IFFT{ X (k )}

Figura 6.11. Algoritmul de calcul al IFFT folosind FFT.

Pentru a pune n eviden simetria circular par a acestor transformate:


X (k1 ) = X (
evalum i:

N
N
k1 ) , X (k1 ) = X ( k1 )
2
2

(7.39)

203

Capitolul 7 Transformata Fourier rapid i aplicaii

X(

N
N
N
k1 ) = X ( k1 ) WNk1 X ( k1 )
2
2
2

(7.40)

Exprimnd prile reale i imaginare se obin:

Aplicaii ale procesoarelor de semnal n comunicaii


7.8.2 Algoritmi pentru dou secvene reale

Dac trebuie calculate simultan dou secvene de date reale x( n) i

Re X (k1 ) = Re X (k1 ) + cos k1 Re X (k1 ) + sin k1 Im X (k1 )


Im X (k1 ) = Re X (k1 ) sin k1 Re X (k1 ) + cos k1 Im X (k1 )

y (n) , se poate utiliza algoritmul pentru date complexe. TFD este o

N
(7.41)
k1 ) = Re X (k1 ) cos k1 Re X (k1 ) sin k1 Im X (k1 )
2
N
Im X ( k1 ) = Im X (k1 ) sin k1 Re X (k1 ) + cos k1 Im X (k1 )
2

Re X (

unde

204

transformat liniar astfel c, dac notm:


z ( n) = x ( n) + j y ( n)
atunci:
Z (k ) = TFD{z (n)}(k ) = TFD{x(n) + jy (n)}(k ) = X (k ) + jY (k ) =

2
N

= Re X (k ) + j Im X (k ) + j [ Re Y (k ) + j Im Y (k ) ]

(7.42)

Vom utiliza primele dou relaii pentru eantioanele de ordin


0,1,, N / 4 apoi ultimele dou relaii pentru exprimarea eantioanelor de
ordin N / 4 + 1,, N / 2 .

(7.43)

(7.44)

sau

Z (k ) = Re Z (k ) + Im Z (k ) = [ Re X (k ) Im Y (k )] + j [ Im X (k ) + Re Y (k ) ] (7.45)
avnd n vedere formulele (7.36) rezult:

Z ( N k ) = [ Re X (k ) + Im Y (k ) ] j [ Im X (k ) Re Y (k ) ]
Rezult schema din figura 6.12:

(7.46)

Se pot separa transformatele fiecrei secvene din rezultatul


algoritmului FFT pentru date complexe cu formulele:

x(2n)

x(2n+1)

0
ReX(k1)
TFD :
N/2 :
ImX(k1)
:

0
ReX(k1)
TFD :
N/2 :
ImX(k1)
:

ReX[k1]
ImX[k1]
-1

cos(k1)
sin(k1)

-1

sin(k1)
-cos(k1)

-1

2
=
N
ReX[N/2-k1]

-1
ImX[N/2-k1]

Figura 6.12. Descompunerea TFD pentru date reale

X (k ) =

1
1
[ Re Z (k ) + Re Z ( N k )] + j [ Im Z (k ) Im Z ( N k )]
2
2

(7.47)

Y (k ) =

1
1
[ Im Z ( N k ) + Im Z (k )] + j [ Re Z ( N k ) Re Z (k )]
2
2

(7.48)

Se observ c deoarece secvenele sunt reale, TFD are simetrie circular


conjugat simetric, deci este suficient calculul TFD pentru k = 0, N / 2 . De
asemenea, pentru k = 0 i k = N / 2 avem:

X (0) = Re Z (0)

X ( N / 2) = Re Z ( N / 2)

Y (0) = Im Z (0)

Y ( N / 2) = Im Z ( N / 2)

(7.49)

205

Capitolul 7 Transformata Fourier rapid i aplicaii

7.9 TRANSFORMATORUL HILBERT

206

Aplicaii ale procesoarelor de semnal n comunicaii

void Hilbert_Transformer(Word16* X, Word16* Y, short N)


{
int i;

Funcia de transfer a transformatorului Hilbert este:

for(i=0; i<=N/2; i++)

j 0 <
H H ( ) =
,
j < < 0

(7.50)

{
Y[2*i] = X[2*i+1];
Y[2*i+1] = -X[2*i];

Implementarea transformatorului Hilbert n domeniul frecven se


}

poate realiza cu urmtoarea schem:

for(i=N/2+1; i<N; i++){


y[2*i] = -X[2*i+1];
y[2*i+1] = X[2*i];

x(n)

FFT

X(k)

HH(k)

XH(k)

IFFT

xH(n)

Unde ieirea transformatorului Hilbert se obine nmulind spectrul


semnalului de intrare cu funcia de transfer n frecven discret de indice k.
j
HH (k ) =
j

0k N /2
N / 2 < k < N 1

X H ( k ) = X ( k ) H ( k ) , k = 0,..., N 1

(7.51)
(7.52)

nmulirea cu j a componentelor spectrale X(k) de valori complexe


este echivalent cu inversarea prii reale cu cea imaginar i cu schimbarea
semnului dup cum urmeaz:
j ( X Re + jX Im ) = X Im jX Re
j ( X Re + jX Im ) = X Im + jX Re

(7.53)

Considernd elementele complexe stocate ntr-un vector X cu elemente


de index par reprezentnd partea real i elementele de index impar pentru
partea imaginar, implementarea n C este urmtoarea:

S-ar putea să vă placă și