Sunteți pe pagina 1din 526

PRELUCRAREA DIGITAL A SEMNALELOR

Aplicaii i implementri n FPGA

Serbanescu Alexandru Iana Vasile Gabriel

Serban Gheorghe Rincu Iulian

Oroian Teofil

CUPRINS

Introducere De ce PNS/PDS ? Motivaii 1. SEMNALE NUMERICE (sau DIGITALE)

1 2 3

1.1. Modelarea matematic a semnalelor 1.2. De la semnale analogice la semnale discrete 1.3. Semnale numerice 1D. Secvene 1D 1.4. Reprezentarea secvenelor 1D 1.5. Secvene elementare 1.6. Corelaia liniar 1.7. Corelaia ciclic 1.8. Convoluia liniar 1.9. Convoluia ciclic 1.10. Reprezentarea semnalelor periodice n timp discret prin serii Fourier n timp discret (SFTD) 1.11. Reprezentarea secvenelor neperiodice prin transformata Fourier n timp discret (TFTD) 1.12. Reprezentarea semnalelor periodice n timp discret prin transformata Fourier n timp discret (TFTD) 1.13. Transformata Fourier discret (TFD) 1.14. Principalele proprieti (sau teoreme) ale TFTD i TFD 1.14.1. Liniaritatea 1.14.2. Translaia sau deplasarea n timp discret 1.14.3. Translaia sau deplasarea n frecven 1.14.4. Convoluia secvenelor n timp discret 1.14.5. Modulaia secvenelor sau convoluia n frecven 1.14.6. Teorema lui Parceval 1.15. Reprezentarea secvenelor cu transformata Z 1.16. Principalele proprieti ale transformatelor Z 1.16.1. Liniaritatea 1.16.2. Translaia sau ntrzierea n timp discret 1.16.3. Translaia sau deplasarea n frecven 1.16.4. Teorema convoluiei secvenelor (n timp discret) 1.16.5. Teorema convoluiei n planul Z 1.16.6. Teorema lui Parceval 1.17. Prelucrarea numeric a semnalelor analogice 1.18. Probleme rezolvate 1.19. Aplicaii

3 4 5 6 10 13 13 16 18 20 24 28 31 38 38 39 39 40 41 42 42 48 48 49 49 50 50 51 52 54 69

2. SISTEME N TIMP DISCRET SISTEME NUMERICE / 93 DIGITALE


II

2.1. Introducere 2.2. Prelucrarea semnalelor n timp discret 2.3. Modelarea matematic a sistemelor numerice 2.4. Proprieti generale ale sistemelor numerice (SN) 2.4.1. SN Liniar 2.4.2. SN Invariant 2.4.3. SN cu / fr memorie 2.4.4. SN Cauzal 2.4.5. SN Stabil 2.5. Analiza SNLI 2.5.1. Rspunsul pondere al SNLI la excitaia particular [n] 2.5.2. Rspunsul indicial al SNLI la secvena u[n] 2.5.3. Rspunsul SNLI la secvena exponenial complex 2.5.4. Rspunsul SNLI la secvene periodice 2.6. eprezentarea SNLI prin ecuaii cu diferene finite 2.7. Analiza SNLI n planul variabilei z 2.8. Analiza SNLI n frecven 2.9. Exemple de SN simple 2.9.1. Circuitul de ntrziere 2.9.2. Difereniatoare numerice 2.9.3. Integratoare numerice 2.10. Analiza SNLI cu ajutorul grafurilor de fluen a semnalelor numerice: 2.11. Clasificarea SNLI 2.12. Scheme de realizare a SNLI 2.13. Probleme rezolvate 2.14. Aplicaii 3. FILTRE NUMERICE (sau DIGITALE) 3.1. Filtrele numerice ca SNLI 3.2. Definiia unui FILTRU NUMERIC (sau FILTRU DIGITAL) 3.3. Funcia de transfer a unui Filtru Numeric (FN) 3.4. Avantajele FN 3.5. Etapele proiectrii unui FN 3.6. FN cu rspuns finit (la impulsul Dirac) 3.7. FN tip FIR cu faz liniar 3.8. Proiectarea FN-FIR prin metoda ferestrelor
III

93 94 95 97 97 99 99 100 100 100 101 107 109 111 111 114 118 121 121 122 124 131 136 138 144 212 224 224 225 226 226 227 227 229 230

(sau metoda seriei Fourier) 3.9. Proiectarea FN-IIR prin metoda eantionrii n frecven 3.10. Proiectarea FN-FIR prin optimizare 3.11. FN cu rspuns infinit (la impulsul Dirac) FN-IIR 3.12. Metode n proiectarea FN tip IIR 3.13. Proiectarea FN-IIR prin metoda aproximrii numerice a ecuaiei difereniale ce caracterizeaz un FA 3.14. Proiectarea FN-IIR prin metoda invariaiei la impulsul unitate 3.15. Proiectarea unui FN tip IIR prin metoda transformrii biliniare 3.16. Proiectarea FN-IIR prin metode de optimizare 3.17. Aspecte privind IMPLEMENTAREA FN 3.18. Algoritmul de calcul a unui FN 3.19. Probleme rezolvate 3.20. Aplicatii 4. ANALIZ I ESTIMARE SPECTRAL 4.1. Semnale numerice aleatoare - Secvene aleatoare (stocastice) 4.2. Valori medii pe ansamblul realizrilor 4.3. Distribuia uniform 4.4. Distribuia normal (GAUSS) 4.5. Procese staionare 4.6. Valori medii temporale 4.7. Teorema WIENER HINCIN 4.8. Prelucrarea secvenelor aleatoare staionare n SNLI 4.9. Analiza i estimarea densitii spectrale de putere 4.10. Elemente de TEORIA ESTIMRII 4.11. Estimarea Densitii Spectrale de Putere (PSD) 4.12. Analiza i estimarea spectral parametric 4.13. Alte metode de analiz spectral 4.14. Aplicaii

233 235 242 244 246 248 249 250 251 251 252 284 304 304 305 306 307 307 308 309 310 311 312 312 314 316 317

5. PRELUCRAREA MULTIRAT A SECVENELOR 327 5.1. Eantionarea semnalelor n timp discret. Decimarea sau 328 subeantionarea secvenelor cu un factor M 5.2. Interpolarea secvenelor sau supraeantionarea secvenelor 331
IV

cu un factor L 5.3. Aplicaii 6. PROCESOARE DIGITALE DE SEMNALE 6.1. Procesarea digital a semnalelor cu structuri hardware 6.2. Arhitecturi ale structurilor hardware de procesoare digital a semnalelor 6.2.1. Arhitectura de tip Von Neumann 6.2.2. Arhitecturi de tip Harvard 6.2.3. Arhitecturi orientate pe conectarea la magistrale informaionale 6.2.4. Arhitecturi orientate pe procesare paralel 6.3. Microporcesorul de semnal ADSP 2181 6.3.1. Unitile de calcul ale procesorului ADSP2181 6.3.2. Adresarea unitilor de memorie 6.3.3. Logica de tratare a ntreruperilor 7. APLICATII CU PROCESORUL DE SEMNALE ADSP2181 7.1. Implementarea filtrului FIR 7.1.1. Generarea coeficienilor filtrului FIR 7.1.2. Implementarea algoritmului filtrului FIR 7.2. Realizarea unui semnal sinusoidal cu procesorul de semnal ADSP2181 7.2.1. Calculul funciei sinus pe baza descompunerii n serie numeric cu numr finit de termeni 7.2.2. Implementarea cu DSP a unui generator sinusoidal digital 7.3. Implementarea cu DSP a unui generator de zgomot pe baza generatoarelor de numere pseudoaleatoare 7.4. Implementarea cu DSP a unui demodulator de frecven pe baza prelucrrii canalelor I i Q din banda de baz ca parte component a unui receptor radio digital 7.5. Implementarea unui sistem de reverberaii audio 7.6. Corelarea i autocorelaia secvenelor numerice 7.7. Implementarea cu DSP a unui modulator de amplitudine 7.8. Implementarea cu DSP a unui modulator de frecventa
V

344 353 354 356 358 359 361 363 369 371 381 384 386 388 388 390 392 392 395 398 400 404 405 406 410

7.9. Implementarea cu DSP a unui generator haotic digital pe 413 baza funciei CC2 7.10. Implementarea cu DPS a unui generator haotic 416 digital pe baza funciei logistice 8. STRUCTURI HARDWARE REPROGRAMABILE 8.1. Evoluia circuitelor logice programabile 8.2. Structuri logice programabile de tip FPGA 8.2.1. Blocuri logice configurabile 8.2.2. Blocuri I/O configurabile 8.2.3. Blocul programabil de interconectare 8.2.4. Blocuri de sincronizare 8.3. Etapele de proiectare cu structuri FPGA 8.4. Familii de structuri FPGA 8.4.1. Structuri FPGA de tip XILINX 8.4.2. Structuri FPGA de tip Altera 8.4.3. Structuri FPGA de tip Actel 8.4.4. Structuri FPGA de tip Quicklogic 8.5. Structura XILINX Spartan 3 9. ELEMENTE DE PROGRAMARE IN LIMBAJUL VHDL 9.1. Structura unui program VHDL 9.2. Operatori utilizai VHDL 9.3. Descrierea structurala 9.4. Descrierea concurent 9.4.1. Atribuirea condiional a semnalelor 9.4.2. Atribuirea selectiv a semnalelor 9.4.3. Introducerea unui proces 9.5. Partiionarea programelor VHDL pe blocuri 9.6. Descrierea secvenial 9.7. Proiectarea i simularea structurilor hardware pentru DSP 9.7.1. Modele de abstractizare a structurilor hardware digitale 9.7.2. Proiectarea structurilor hardware pe mai multe nivele 9.7.3. Executarea i simularea proceselor
VI

418 418 422 425 425 426 427 427 428 429 429 431 432 433 436 436 440 441 444 446 448 449 449 452 456 457 458 459

10. IMPLEMENTAREA PDS UTILIZAND STRUCTURI FPGA 10.1. Implementarea filtrului digital FIR 10.1.1. Filtrul FIR, forma direct 10.1.2. Filtrul FIR, forma transversala 10.1.3. Filtrul FIR, cu pipeline 10.1.4. Filtrul FIR, cu coeficieni simetrici 10.2. Implementarea filtrului IIR 10.3. Sistem de criptare a semnalelor digitale 10.3.1. Descriere teoretic 10.3.2. Implementarea globala a sistemului 10.3.3. Proiectarea i implementarea modulelor digitale Bibliografie

461 461 462 470 473 474 476 482 483 484 488 514

VII

Introducere Noiunea de semnal servete pentru a desemna o mrime fizic, cel mai adesea de natur electric, cum ar fi semnalul obinut de la un microfon. Mrimile fizice suport transformri prin trecerea lor printr-un sistem. Astfel, ntr-un lan de comunicaie, semnalul electric este subiectul unor modificri (distorsiuni, atenuri, filtrri), care l pot face de nerecunoscut. Este nevoie de a nelege aceast evoluie, pentru a recupera la recepie, n bune condiii, mesajul informaional iniial. Semnalul este suportul fizic al informaiei. El transport comenzile n echipamentele de control i de telecomand, ndrum mesajul vocal sau imaginile n cadrul reelelor informaionale. Semnalele sunt deosebit de fragile i trebuie manipulate cu mult grij. Prelucrarea lor necesit teorii i metode relativ independente de tipul semnalului considerat i, n mod deosebit, necesit noi mijloace tehnologice. Obiectivele vizate n prelucrarea semnalelor se refer la extragerea informaiei, analiza datelor, ameliorarea, sinteza i compresia semnalului, transmiterea sa i, n sfrit, nelegerea informaiei coninute. ntr-un lan integrat de prelucrarea informaiei, aceste obiective se regsesc ntreptrunse i ntr-o interaciune complex. Prelucrarea semnalelor apare n numeroase aplicaii industriale, cum ar fi: telecomunicaiile, prelucrarea semnalelor audio i vocale, radar, sonar, prelucrarea semnalelor seismice, cosmice, dar i n controlul nedistructiv, vibraii, biomedicin sau prelucrarea imaginilor. n prelucrarea semnalelor, tehnicile numerice aduc posibiliti deosebite, cum ar fi: elaborarea riguroas a sistemelor, o mare reproductibilitate a circuitelor i echipamentelor, precum i o mare stabilitate a caracteristicilor lor n exploatare. Progresul prelucrrii numerice se datoreaz descoperirii algoritmilor rapizi pentru transformata Fourier. De fapt, aceast transformat se afl la baza studiului sistemelor discrete i constituie trecerea din spaiul timp discret n spaiul frecven discret. Aceste tehnici prezint un anumit grad de abstractizare, iar aplicarea lor, n cazuri concrete, necesit un ansamblu de cunotine teoretice judecate adesea ca familiare sau accesibile de ctre cercettori i ingineri, dar care pot deveni uneori obstacole de netrecut. Ambiia acestei cri este de a nvinge aceste obstacole i de a uura accesul la tehnicile numerice, fcnd legtura ntre teorie i practic.

De ce PNS/PDS ? Motivaii: Pentru c PNS/PDS exist! ca s-l parafrazm pe Edmund Hillary 1) are o teorie general i principii specifice; constituie o teorie suport pentru alte discipline sau aplicaii; este un sistem de cunotine deschis pentru noi dezvoltri. Iat un exemplu de prelucrare digital a unui semnal analogic m(t), n care se remarc rolul i modalitatea specific de prelucrare numeric (sau digital):
m(t)

S&H

A/D

PNS/ PDS
x[n] 0100 0011 0101

m(t) D/A

m(t) t

m(t) y[n] 0100 0011 0101


O

t x[n] y[n]

O unitate de prelucrare numeric (sau digital) va primi date de la senzori, de la diverse interfee sau de la alte sisteme numerice i va furniza rezultate prelucrate (numeric) unor utilizatori, aa cum este prezentat n figura de mai jos.
SENZORI DATE UNITATE DE INTERFEE SISTEME NUMERICE DATE PRELUCRARE NUMERIC (DIGITAL) DATE
REZULTATE (PRELUCRATE) PT. UTILIZATORI

ntrebat de ce s-a ncumentat s exploreze vrful Everest, renumitul explorator a rspuns ntr-un mod pilduitor: Pentru c exist!
2

1)

1. SEMNALE NUMERICE (sau DIGITALE) Un semnal este o mrime fizic, care depinde de una sau mai multe variabile independente ca: timpul, distana, temperatura sau presiunea. Variaia amplitudinii semnalului, ca o funcie de o variabil sau de mai multe variabile independente, se numete form de und. Dac un semnal este o funcie de o singur variabil, se numete semnal unidimensional (1-D). Dac este funcie de dou variabile, se numete semnal bidimensional (2-D). Un semnal multidimensional (M-D) va fi reprezentat de o funcie de mai multe variabile. Noiunea de semnal se refer, de cele mai multe ori, la modelul matematic sau la cel tehnic, alese adecvat pentru a descrie ct mai fidel complexitatea semnalelor fizice. Sensurile (uneori foarte diverse) asociate azi noiunii de semnal ilustreaz dorina oamenilor de tiin de a modela ct mai corect realitatea n ansamblul ei i, poate, mai ales, n detaliu. De aceea, n lumea tehnico-tiinific, se apreciaz ca avnd un caracter axiomatic propoziiile: - semnalul este o noiune primordial (i nu doar n electronic !); - teoria prelucrrii semnalelor a devenit o disciplin fundamental n pregtirea inginerilor (i nu numai a lor!); - modelul de reprezentare ales pentru semnale este determinant n prelucrarea lor (n cadrul sistemelor). Semnalele, care poart informaie, trebuie prelucrate pentru a se extrage complet (sau parial) informaia coninut. Prelucrarea semnalelor se ocup cu reprezentarea (matematic a) acestora n domeniul variabilei (sau variabilelor) originale sau ntr-un domeniu transformat i cu modificarea (algoritmic a) semnalelor n scopul extragerii informaiei coninute. 1.1. Modelarea matematic a semnalelor n general, un semnal electric este modelat ca o aplicaie, care face corespondena ntre multimea timp (T) i mulimea valorilor msurate (M) ale semnalului:

x : unde T R, Z, N, M R, Z, N, C Modelarea semnalelor analogice: x : unde T R iar: M R sau C


a. . t T x(t ) M

(1.1)

(1.2)

Modelarea semnalelor n timp discret sau a secvenelor (de date).Modelul matematic al unui semnal electric n domeniul timp discret poate fi definit ca o aplicaie:
x : unde T Z, N, {0, 1, 2, ..., N} a. . iar: M R, C, Z, N n T x[n] M (1.3)

De exemplu, o secven de date are valorile:{0,1,2,3,2,1,0,-1,2,} corespunztoare momentelor discrete de timp: n =,-3,-2,1,0,1,2,3,4,5,, aa cum se prezint n figura de mai jos:
x[n] x[-1] x[-2] -4 -3 -2 -1 3 x[0] 2 1 x[-1] x[-2] 1 2 3 4 5 6 7 .... n

Observaie: x[n] reprezint secvena n ansamblul ei sau valoarea secvenei la momentul n.

1.2. De la semnale analogice la semnale discrete


Fie un semnal analogic, eantionat la momentul t=nT, astfel nct, pentru:
x a (t ) = A cos( 0 t + 0 ) putem nota c: (1.4)

xa (t ) =

xa (nT ) = A cos(0 nT + 0 ) t = nT = A cos(2 F0 nT + 0 ) F = A cos 2 0 n + 0 1/ T (1.5)

F = A cos 2 0 n + 0 Fe Rezult semnalul numeric:

x[n] = A cos(2f 0 n + 0 ) = A cos( 0 n + 0 )


unde : 0 = 0T = 0 t n

(1.6)

[ s] rad rad s esantion = esantion

sau : 0 =

0 0 F = = 2 0 = 2 F0 = 0 1/ T Fe Fe

1.3. Semnale numerice 1D. Secvene 1D


Modelul matematic al unui semnal electric n domeniul timp discret poate fi definit ca o aplicaie de tipul:
5

x : T M , astfel c n x [ n ]

(1.7)

care asociaz fiecrui moment (de timp) discret n T, cu T N sau Z, o valoare (a semnalului) x [ n ] din M cu M N, Z, R sau C. Atunci cnd

valorile semnalului au fost cuantizare i codate (eventual, corespunztor unui numr finit de niveluri), semnalul n timp discret se numete semnal numeric (sau digital). Un semnal (numeric) n timp discret este o secven de numere (ntregi, reale sau complexe) ordonate n N sau Z.
1.4. Reprezentarea secvenelor 1D

O secven x[n] poate fi reprezentat ca:


a) Vector de date: x = x = xn cu n N, Z sau n = 0, N-1

= x[n] De exemplu: x = x = [1, 2, 3]


Ca secven infinit de date: {..., xi 1 , xi , xi +1 ,...} xi N, Z, R sau C Ca secven finit de date, de lungime N:
{x0, x1, x2, . . ., xN-1}

(1.8)

valoarea datelor

unde M N, Z, R, C

unde T N, Z momente discrete de timp / de tact n prelucrarea numeric o secven finit poate fi reprezentat ca:

{... 0, 0, 0, x0, x1, . . ., xN-1, 0, 0, 0, . . . } cu xi 0 pentru i < 0 i i > N cu i Z


6

Ca o secven periodic:

{... xN-2, xN-1, x0, x1, . . ., xN-1, x0, x1, . . ., xN-1, x0, . . . } N Z , i [0, N) xi = xi+N Ca o secven periodizat:

{... 0, 0, 0, x0, x1, x2, 0, 0, 0, x0, x1, x2, 0, 0, 0, x0, . . . }


b) Reprezentarea secvenelor 1D ca polinom de o variabil (real):

Fie secvena: x n , n = 0, N 1 cu valorile: x 0 , x1 , x 2 ,..., x N 1 , care devin coeficienii polinomului:

X ( z ) = x 0 + x1 z + x 2 z 2 + ... + x N 1 z N 1 = x n z n
n =0

N 1

(1.9)

De exemplu, secvena x = [1,2,3] poate fi reprezentat prin polinomul:

X (z ) = 1 z 0 + 2 z 1 + 3 z 2 = 1 + 2 z + 3z 2 Pentru secvena: x[n] = [5, 3, 2, 1, 0, 0, . . .] , rezult c: x[0] = 5 valoare trecut x[1] = 3 n raport cu aceast valoare (actual) x[2] = 2 valoare viitoare x[3] = 1 x[4] = x[5] = ... = 0

n figura de mai jos, sunt ilustrate cteva operaii simple aplicate secvenei x[n].
5 x[n] 3

2 1 5 2

1 3 4 5 6 .... n

-4

-3

-2

-1

x[n-2]

2 3 4

1 5 6 .... n

-4

-3 5

-2

-1

1 x[n+2]

2 -1 5 0

1 x[-n] 1 2 3 4 5 6 .... n

-4

-3

-2

3 1 -4 -3 2 -2 -1 0 1 2 3 4 5 6 .... n

x[1-n] 5

3 1 -4 -3 -2 2 -1 0 1 2 3 4 5 6 .... n

(Alte) Proprieti ale secvenelor

O secven este par dac: x p [n] = x p [n] , de exemplu: cos 0 n = cos[ 0 (n)] O secven este impar dac: xi [n] = xi [n] , de exemplu: sin 0 n = sin[ 0 (n)]
8

(1.10)

(1.11)

n general, x[n] : Z R , care nu este nici par, nici impar, se poate face descompunerea: x[n] x[n] = x p [n] + xi [n] unde: 1 x p [n] = 2 {x[n] + x[n]} 1 x i [n] = {x[n] x[n]} 2
... -4 ... -4 -4 . . . -4 -3 -3 -3 -2 -2 -2 -1 -1 -1 -3 -2 -1 1 0 1/2 0 1/2 0 0 xi -1/2 1 1 2 2 3 3 4 4 5 5 1 2 3 4 5 6 ... 1 2 3 4 5 6 6... 6 ... xp

O secven ~[n] este periodic, dac exist un N N* , astfel nct: x


% % x[n] = x[n + kN ], pentru k Z ,

(1.12)

de exemplu:
x[n] ... -6 -5 -4 -3 -2 -1 1 0 1 2 3 4 5 6 7 8 ... n

O secven este neperiodic dac nu ndeplinete condiia de mai sus, de exemplu:


x[n] ... -6 -5 -4 -3 -2 -1 1 0 1 2 3 4 5 6 7 8 ... n

1.5 Secvene elementare

Secvena IMPULS UNITATE (DIRAC) este definit de:


1, n = 0 [ n] = 0, n rest
1 -4 -3 -2 -1 0 3 -3 -2 -1 0 [n]

3, n = 2 astfel c: 3 [n 2] = -4 0, n rest

1 3[n-2]

Un semnal x[n] oarecare poate fi reprezentat cu ajutorul impulsurilor Dirac:

x[n] = ai [n i] = ... a0 [n] + a1 [n 1] + a2 [n 2] + a3 [n 3] + ... (1.13)


(i )

x[n] a0 a1 -4 -3 -2 -1 0 1 a2 a2[n-2] a3 2 3 a4 4 4

Secvena TREAPT UNITATE este definit de:


1, n 0 u[n] = 0, n < 0
u[n] 1 -3 -2 -1 0 1 2 3 4 5 6 7 ... n

Evident: u[n] = 1 [n i ] = [n] + [n 1] + [n 2] + [n 3] + ...


i =0

(1.14)

10

Secvena EXPONENIAL (COMPLEX) este definit de:

x[n] = e( 0 + j0 ) n = e 0n e j0n , unde: 0 , 0 R


Secvena real e 0 n este reprezentat n figura de mai jos:

(1.15)

e 0 n (cu 0 < 1 )
1 -4 -3 -2 -1 0 1 2 3 4 5 6 n

Secvena pur imaginar e j0 n = cos 0 n + j sin 0 n poate fi reprezentat prin:

Re e j 0 n = cos 0 n
-4 -3 -2 -1 0 -4 -3 -2 -1 0 1 2 1 2 3 4 3 4 5 5 6 6 7 7 8 8 9 10 11 12 13 14 15 16 9 10 11 12 13 14 15 16

e j 0 n

Im e j 0 n = sin 0 n
-4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Secvena e j0n este periodic dac: (1.16) e j 0 n = e j 0 ( n + N ) = e j 0 n e j 0 N =1 adic, dac e j0 N = 1 . Rezult condiia (de periodicitate): 0 N = 2 m 2 m , care sau: 0 = = numr raional. Pentru m = 1 rezult c: 0 = N 2 N corespunde frecvenei (unghiulare) fundamentale.
11

n plus, e j0 n = e j (0 + k 2 ) n , adic exponeniala are aceleai valori pentru: 0 0 + 2k .


Setul de secvene exponeniale complexe

Fie setul de secvene exponeniale definit de:

k [n] = e jk n = e
0

jk

2 n N

k = 0,1,2,3,...

(1.17)

Setul de secvene { k [n]} este un set periodic, deoarece:

N [ n] = e

jN

2 n N

= e j 2n = e j 2

=1 = 0

(1.18)

i conine (doar) N funcii exponeniale distincte:

{ k [n]} = { 0 [n], 1 [n], 2 [n],..., N 1 [n]}


N funcii exponeniale

(1.19)

n plus, setul finit de secvene exponeniale conine funcii ortogonale, formnd o baz (total) ortogonal pentru reprezentarea unei secvene periodice. ntr-adevr, se arat c produsul scalar dintre oricare dou funcii din set are proprietatea:
[n], [n] = e j n e j n = e j ( k ) n = e jk n =
0 0 0 0

N 1 n =0

N 1 n =0

N 1 n =0

= e jk0
n=0

N 1

jk 2N 1 e = ... N , pentru k = 0, N , 2 N , = 2 jk 0, in rest (k Z) N 1 e

(1.20) 12

1.6. Corelaia liniar Fie dou secvene finite (i neperiodice) definite de:
d = d [ n ] , n = 0, N 1 = d n , n = 0, N 1
n

{ } { } g = {g [n], n = 0, L 1} = {g , n = 0, L 1}

(1.21.a)

(1.21.b)

Corelaia lor (mutual) liniar este definit de :


r = r [m], m = 0, N + L 2 = rm , m = 0, N + L 2
N 1 n=0 N 1 n =0

} {

(1.22)

cu: r [m] = d [n] g [n + m] sau: rm = d n g n + m , m = 0, N + L 2

unde: g [n + m] g n + m = 0, (n + m ) > L .
EXEMPLU: Calculul corelaiei ntre secvenele d = {d 0 , d1 } i

g = {g 0 , g1 } este ilustrat n tabelul de mai jos:

0 0

0 0

0 0

r0 = d 0 g 0 + d1 g1 0 d0 d1 g0
g1

0 0

0 0

0 0

r1 = d 0 g1 0 0 0 0 0 g0 d0
g1 d1 0

0 0

0 0

0 0

0 0

1.7. Corelaia ciclic

Fie dou secvene periodice, de aceeai perioad, definite de: d [n] = d [n + N ] sau : d n = d n + N cu n = 0, N 1
g [n] = g [n + N ] sau: g n = g n + N cu n = 0, N 1

(1.23.a) (1.23.b)

Corelaia lor (mutual), ciclic este definit de relaia:


13

r ' [m] = d [n] g [((n + m ))] = d n g(( n + m ))


n=0

N 1

pentru m = 0, N 1 (1.24)

n=0 N 1

EXEMPLU: Calculul corelaiei ciclice dintre secvenele periodice d [n] i g [n] cu N=2 este ilustrat n tabelul de mai jos:

r0' = d 0 g 0 + d1 g1 d0 g0 d1
g1

d0 g0

d1
g1

d0 g0

d1
g1

d0 g0

d1
g1

d0 g0
g1

r1' = d 0 g1 + d1 g 0 d0
g1 d1

d0
g1

d1

d0
g1

d1

d0
g1

d1

d0
g1

g0

g0

g0

g0

APLICAIE: Detecia prin corelaie

S considerm un SN de emisie care asociaz simbolului 0 secvena sin


n . Acest lucru este 4 4 asigurat de comutatorul k. La recepie, semnalul este corelat cu o secven

n , iar simbolului 1 secvena cos

n pentru a permite decizia corect a tipului de semnal transmis. 4 Schema bloc a sistemului este prezentat n figura de mai jos.

fix: cos

14

k 1

,,0

sin n 4

k Corelator

Decizie

,,1 cos n 4

sin n 4

cos

n 4

Iat principiul deteciei prin corelaie. Pentru simbolul 0, n linie, se va transmite secvena sin fix cos

n . Valoarea corelaiei acestor dou secvene este nul n origine 4 (secvenele fiind ortogonale). Pentru simbolul 1, n linie, se va transmite secvena cos la recepie, urmeaz s fie corelat cu secvena fix cos

n , care, la recepie, se coreleaz cu secvena

n . Evident c, n 4 acest caz, valoarea corelaiei acestor dou secvene (identice) este maxim n origine. Valorile distincte ale funciei de corelaie n origine vor fi evideniate la recepie de un bloc de decizie, care va furniza mesajul informaional transmis.
APLICAIE: Determinarea perioadei N a unui semnal periodic perturbat de un zgomot aditiv.
~[n] x
+

n , care,

y[n] = ~[n] + z[n] x

z[n]

Semnalul y[n] este observat pentru 0 n M 1 cu M>>N. S calculm autocorelaia semnalului y[n] :
15

ryy [ m ] =
1 M 1 = M
~

1 M

M 1 n=0

y [ n] y [ n + m] =
~

x [ n] + z [ n] x [ n + m] + z [ n + m] =
(n)

% % x [ n] x [ n + m] + M z [ n]z [ n + m] +
(n) (n)

1 M

% % x [ n] z [ n + m] + M z [ n] x [ n + m] =
(n) (n)

= r~~ [m] + rzz [m] + r~z [m] + rz~ [m] xx x x n relaia de mai sus, r~~ [m] este o secven periodic, cu perioada N xx i are, n consecin, valori maxime pentru m = 0, N, 2N, 3N, cu aceleai amplitudini. Autocorelaia secvenei de tip zgomot rzz [m] va prezenta un maxim doar pentru m=0, n rest, amplitudinile componentelor sunt mici i descresc cu m. Deoarece semnalul x[n] i zgomotul z[n] nu sunt corelate, eantioanele funciilor de autocorelaie r~z [m] si rz~ [m] vor avea amplitudini x x mici n comparaie cu amplitudinile funciei de autocorelaie r~~ [m] . n xx consecin, funcia de autocorelaie ryy[m] a semnalului y[n] va avea amplitudinile maxime date dominant de r~~ [m] . Intervalul ntre aceste valori xx maxime poate servi la determinarea perioadei N a semnalului periodic x[n].
1.8. Convoluia liniar

Fie dou secvene finite (i, deci, neperiodice) definite de:


x = x[n], n = 0, N 1 = xn , n = 0, N 1
16

} {

N valori

(1.25.a)

h = h[n], n = 0, L 1 = hn , n = 0, L 1

} {

L valori

(1.25.b)

Convoluia lor liniar e definit de :


y = y [ n ] , n = 0, N + L 2
N 1 m =0 L 1

y [ n] = ( x h ) [ n] = ( h x ) [ n] =
N 1 m=0 L 1

= x [ m ] h [ n m ] = xm hn m = = h [ m ] x [ n m ] = hm xn m
m =0 m=0

(1.26)

EXEMPLU: Fie secvenele x = {x0 , x1 , x 2 } i Exemplificarea calculului convoluiilor (x*h) i (h*x) este:

h = {h0 , h1 }.

0 0

0
h1

x0 h0

x1 0

x2 0

0 0

0
x2

0
x1

h0 x0 y0 = x0 h0

h1 0

0 0

0 0

y0 = x0 h0

0 0

0 0

x0
h1

x1

h0

x2 0

0 0

0 0

0
x2

h0
x1

h1

0 0

0 0

x0

y1 = x0 h1 + x1h0

y1 = x0 h1 + x1h0

0 0

0 0

x0 0

x1 h1

x2

0 0

0 0

0 0

h0
x2

h1 x1

0
x0

0 0

h0

y2 = x1h1 + x2 h0

y2 = x1h1 + x2 h0

17

APLICAIE: Rspunsul unui sistem nerecursiv (transversal) la o secven de intrare oarecare.


x3,,x2 ,x1 ,x0 ,0,0
h0

z-1
h1

z-1
h2

z-1
h3

yn

i secvena h = {h0 , h1 , h2 ...} este ilustrat n tabelul de mai jos:

Calculul convoluiei x = {x 0 , x1 , x 2 ,...}

liniare

dintre

secvena

de

la

intrare

Ptr. n=0

0
K
K

0
x4
K

0
x3
x4

0
x2

0
x1 x2

h0 x0
x1 x2

h1 0 x0

h2 0

h3 0

0 0

y0 = x0 h0 x3
x4

n=1
K K
x3

y1 = x1h0 + x0 h1
x1

x0 y2 = x2 h0 + x1h1 + x0 h2

n=2

1.9. Convoluia ciclic

Fie dou secvene periodice (de aceeai perioad) definite mai jos:
~[n] = ~[n + N ] sau x x ~ ~ h [n] = h [n + N ] sau

~ =~ xn xn + N cu n = 0, N 1 ~ ~ hn = hn + N cu n = 0, N 1

(1.27.a) (1.27.b)

18

Convoluia lor ciclic este secvena periodic : N 1 % % % % x h [ n ] = x m h( ( n m )) m=0 y ' [ n] = y ' [ n + N ] = N 1 h x [ n ] = h m x(( n m )) % % 0 % % m=

( (

) )

(1.28)

cu proprietatea c : 0 ((n m )) < N .

unde : ((n m )) este (n m ) modulo N aritmetic, adic: n m, pentru m n ((n m )) = n m + N , pentru m > n

(1.29)

EXEMPLU: Calculul convoluiei ciclice dintre secvenele periodice ~ ~ [n] =[x , x ] si h [n] = [h , h ] este ilustrat n tabelul de mai jos: xn 0 1 0 1 n
' y0 = x0 h0 + x1h1

x0 h0

x1 h1

x0 h0

x1 h1

x0 h0

x1 h1

x0 h0

x1 h1

x0 h0

y1' = x0 h1 + x1 h0 x0
h1 x1

x0
h1

x1

x0
h1

x1

x0
h1

x1

x0
h1

h0

h0

h0

h0

19

1.10. Reprezentarea semnalelor periodice n timp discret prin serii Fourier n timp discret (SFTD) Fie un semnal periodic n timp discret, notat prin:

~[n] = ~[n + N ] x x i reprezentat prin seria Fourier exponenial:

(1.30)

~[n] = c [n] = c e jk N n x k k k
(k ) k =0

N 1

(1.31)
e e
jr 2 0 N

% pentru:(n = 0) x[0] =

k =0 2 N 1 jk % (n = 1) x[1] = ck e N k =0 ........................................... . 2 N 1 jk ( N 1) (n = N-1) % x[ N 1] = ck e N k =0

ck

N 1

jr

2 1 N

jr

2 n N

.........
e
jr

2 ( N 1) N

Dup multiplicare cu e
N 1 n =0 2

jr

2 n N

i nsumare se obine:
2

jr n j ( k r ) n x ~[n] e N = ck e N n =0 k =0

N 1 N 1

(1.32)

Schimbnd ordinea nsumrii n membrul drept:


jr n j (k r ) n x ~[n] e N = c k e N n =0 k =0 n =0 N 1 2 N 1 N 1 2

N pentru (k-r) = 0, N, 2N 0 n rest

20

i innd cont de observaia fcut, rezult c pentru k - r = 0, adic pentru k = r, se obin relaiile:
2

ck =
(1.33.a) iar: (1.33.b)

1 N

jk n x ~[n] e N n =0

N 1

x Analiza secvenei ~[n]

% x[n] = ck e
k =0

N 1

+ jk

2 n N

Sinteza secvenei~[n] x

x coeficienii spectrali ai lui ~[n]


EXEMPLU: Secvena periodic x[n] = cos 0 n se descompune n:

x[n] = cos 0 n = (1/ 2)e N + (1/ 2)e N , unde: 0 = 2 / N 1 1 rezult c: c1 = , c1 = , iar ck = 0 k 1 . 2 2


EXEMPLU: S se dezvolte n SFTD semnalul de forma

jn

jn

x[n] = sin 0 n cu perioada N =


Cum: x[n] =
1 e 2j
j 2 n N

.
+

1 e 2j

2 n N

ck e
k = N 2

N 2

jk

2 n N

rezult c: c1 =

1 1 , c1 = , iar ck 0 k 1 i k < 2 . 2j 2j 2 n i rezult reprezentarea: De exemplu, dac N = 5, atunci x[n] = sin 5


o perioad

ck

1 2j

-6

-5

-4

-3

-2

-1

1 2j

21

EXEMPLU: Determinai seria Fourier n timp discret pentru semnalul periodic din figura:
x[n] -3. . . -2 -3 -2 -1 -1 1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 n 7 . . .n

-1

Semnalul x[n] este periodic cu perioada N = 2. Rezult c: ck = Astfel c, pentru: 1 N

x[n]e
n =0

N 1

jk

2 n N

1 1 x[n]e jkn ; 2 n=0

k = 0 ,1

1 1 1 k = 0 c0 = x[n] = [1 1] = 0 2 n=0 2 1 1 1 1 k = 1 c1 = x[n] e j n = [1 e j 0 1 e j 1 ] = (1 + 1) = 1 2 n =0 2 2 Rezult c: x[n] = c k e


k =0 N 1 + jk 2 n N

= c k e jkn = 1 e jn
k =0

Comentarii privind coeficienii ck

Dac x[n] R , rezult c:


Numrul coeficienilor ck distinci este N, de exemplu:

sau

c0 , c1 , c 2 ,...c N 1 , iar : c N = c0 c ( N 1) / 2 ,..., co ,..., c+ ( N 1) / 2

(1.34)

Coeficientul c 0 reprezint valoarea medie a semnalului n timp

22

discret:

1 N 1 x[n] N n=0 Dac N este par, atunci: c0 =

(1.35)

1 {x[0] x[1] + x[2] x[3] + ...} N n =0 n=0 2 (1.36) N Valorile coeficienilor ck calculate la valorile simetrice fa de 2 au valori complex conjugate: 2 2 j( N k ) n + jk n 1 N 1 1 N 1 * N cN k = x[n]e = x[n]e N = ck (1.37) N n=0 N n=0 cN

1 = N

x[n]e

N 1

N 2 n 2 N

1 N

x[n](1)

N 1

EXEMPLU: S se dezvolte n serie Fourier semnalul periodic n timp discret de tip dreptunghiular din figur:

~[n] x
... -N1 0 +N1 N ... n

Conform definiiei, pentru calculul coeficienilor ck rezult c:


ck = 1 N

n = N1

+ N1

jk

2 n N m = n + N1

1 N

m =0

2 N1

jk

2 ( m N1 ) N

Calculul coeficienilor ck pentru diferite valori ale indicelui k rezult sub forma: 1 sin 2k N1 + / N pentru k 0, N , 2 N 2 = 1 ck = N sin(2k / 2 N ) = 2 N1 pentru k = 0, N , 2 N N
23

De exemplu, pentru 2 N 1 + 1 = 5 i N = 10 , rezult reprezentarea coef. ck :


ck
0 0 0 1 1
2 10

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

10=N 10=N
2

k
=k

ck

iar pentru 2 N 1 + 1 = 5 , dar N = 40 , rezult:

0 1 2 3 4 5 6 7 8

20

40

1.11. Reprezentarea secvenelor neperiodice prin transformata Fourier n timp discret (TFTD)
Fie x[n] o secven de durat finit: -3 x[n] = 0, | n |> N 1 Construim o secven ~[n] astfel x periodic: -3 nct, pe o perioad, N > 2 N1 rezult: ~[n] = x[n] x
x[n]

-2

-1 -N1

1 N ~[n] 1 x N1 1

...

-2

-N1 -1

... n

% Pentru secvena periodic x[n] (sau periodizat) rezult reprezentarea:


24

2 jk n % x[n] = ck e N k =< N > 2 jk n c = 1 % > x[n]e N k N n =< N

(1.38)

Dar:
1 ck = N
jk n 1 x ~[n]e N = N n = N1 + N1
2

n = N1

x[n]e

+ N1

jk

2 n N

1 = N

n =

x[n]e

jk

2 n N

(1.39)

Definind anvelopa coeficienilor Nc k prin:

X ( ) D
rezult c: c k = astfel c: ~[n] = x

n =-

x[n]e

-j n

(1.40)

1 2 X (k 0 ) unde 0 = N N

1 1 jk 0 n = N X (k 0 ) e 2 k =< N >

k =< N >

X (k

)e jk 0n 0

k La limit, cnd: N : 0 iar lim ~[n] = x[n] x N 0 d

n consecin, Transformata Fourier in Timp Discret (TFTD) este definit de: x[n] = 1 2

X ( )e
2
+

jn

Sinteza secvenei x[n] Analiza secvenei x[n]

(1.41.a) (1.41.b)

X ( ) =

X ( ) realizeaz analiza spectral a unui semnal neperiodic n timp

n =

x [ n]e

j n

discret, iar prima relaie exprim sinteza semnalului n timp discret x [ n ] cunoscndu-se funcia sa spectral X ( ) . De remarcat c spectrul
X ( ) corespunztor unei secvene 1-D neperiodice este o funcie continu

de i periodic cu perioada 2. Pulsaia se msoar n


25

radiani/"intervalul de eantionare" i poate fi luat oricnd modulo 2. n cazul semnalelor n timp discret, x [ n ] , "intervalul de eantionare" este de fapt valoarea (unitar a) incrementului variabilei "n" i este adimensional. Dac se consider c semnalul n timp discret x [ n ] a provenit din eantionarea unui semnal n timp continuu x(t ) , cu frecvena de eantionare Fe = 1/ T = / 2 , atunci pulsaia poate fi considerat ca fiind normat, astfel nct: = 2 f = T = 2 F / Fe . n unele lucrri, pentru a marca acest lucru, se folosete o notaie distinct pentru pulsaia normat corespunztoare unui semnal n timp discret, de exemplu .
EXEMPLU: S calculm transformata Fourier n timp discret, a semnalului din figur:
1 -3 -3 -2 -2 -1 -1 0 0 -1 x[n] 1 1 2 2 3 3 4 4 ... ... n

Rezult c:
X ( ) = FD { x[n]} = = 1 e j 0 + (1) e n consecin,
n = j 1

x[n] e j n = x[n] e j n =
n =0

= 1 e j = 1 cos + j sin

X ( ) = (1 cos ) 2 + sin 2 = 2(1 cos )


arg{X ( )} = arctg sin 1 cos

Reprezentarea grafic a modului spectrului X ( ) este reprezentata n figura de mai jos.


|X()|

26

EXEMPLU: S se determine transformata Fourier a semnalului neperiodic dreptunghiular n timp discret din figura:
x[n] 1 -3 -2 -1 0 1 2 3 4 5 6 ....... n

Conform definiiei, n acest caz, rezult: X ( ) = x[n] e jn = 1 e jn = 1 + e j + e j 2 + e j 3 =


n =0 n =0

j 3

e j 1

e j 4 1 sin(2 ) = e j 1 sin( / 2)

n consecin, modulul funciei spectrale X() are reprezentarea din figur:

|X()|

0 0

3 2

2 2

EXEMPLU: S se determine transformata Fourier a semnalului neperiodic n timp discret, de tip dreptunghiular definit de:

1 x[n] = 0
x[n] 1

| n | N 1 | n |> N 1
(n figur N1 = 2)
...

-N1

N1

27

Rezult c: X ( ) =

n = N1

1 e

+ N1

j n

5 1 sin sin N1 + 2 2 = sin pentru sin( / 2) 2 N1 = 2

X ( )

-2

1.12. Reprezentarea semnalelor periodice n timp discret prin transformata Fourier n timp discret (TFTD)
Transformata Fourier n timp discret a fost definit pentru secvene neperiodice. Totui s aplicm aceast transformat secvenei exponeniale periodice definit de:

e j0 n = e j (0 + 2 r ) n

(1.42)

Cu alte cuvinte, s determinm transformata X ( ) , care face adevrat egalitatea:


e j0 n = 1 2
2

X ( ) e
+

j n

(1.43)

Rezult c: e j 0 n = e j ( 0 + 2r ) n 2 ( 0 2l )
l = FD

(1.44)

28

Reprezentarea grafic a transformatei Fourier n timp discret X ( ) a secvenei exponeniale periodice e j0 n este dat n figura de mai jos:
X ( ) = FD e j 0 n

{ }
2 2 3 4+0 ...

2 ... -4+0

2 -2+0 - 0

2
0

2+0

n general, pentru un semnal periodic ~[n] = ~[n + N ] se definete x x transformata Fourier n timp discret prin:
2 jk n N 1 X ( ) = FD {~[n]} = FD c k e N = x k =0
2 2 2 j1 n j 2 n j ( N 1) n N FD c 0 + c1 e N + c 2 e N + ... + c N 1 e = + + 2 = c0 2 ( 2l ) + c1 2 2l + N l = l = + + 2 2 + c 2 2 2 2l + ... + c N 1 2 ( N 1) 2l = N N l = l = + N 1 2 = c k 2 k 2l = N k =0 l = + 2 = 2 ck k (1.45) N k =

Observaie: TFTD pentru un semnal periodic ~[n] = ~[n + N ] este x x reprezentat de o succesiune de impulsuri Dirac, echidistante la = k 2 N , a cror amplitudini sunt egale cu 2 ck . EXEMPLU: S calculm SFTD i TFTD pentru secvena periodic 2 2 = =4 x[n] = cos 0 n = cos n pentru care: N = 2 0 / 2 SFTD : cos 0 n ck = {c0 , c1 , c2 , c3 } = {c1 , c0 , c1 , c2 }
29

1 j 0 n 1 j 0 n e + e , 2 2 c = 1/ 2 rezult c putem identifica: 1 , c+1 = 1/ 2 Cum: cos 0 n = TFTD

iar c0 = c2 = 0

1 1 : X ( ) = TFTD{cos 0 n} = TFTD e j 0 n + TFTD e j 0 n = 2 2 = ( 0 2l ) + ( + 0 2l )


l = l =

X ( )

-2

-/2

/2

2-0

2+0

EXEMPLU: S calculm SFTD i TFTD pentru secvena periodic:

x[n] =

k =

[n kN ] =
N[n]

[ n]

care este reprezentat grafic n figura de mai jos:


1 -2N -N 0

2N

3N

Deoarece N [n] este periodic, rezult c:

N [ n]
unde:
1 ck = N
N 1 n =0 jk 2

SFTD n 1

K =0

ck e

jk

2 n N

N [n]e

1 = N

+N

n = N

[n]e
2

jk

2 n N

1 N 2 N

2 Rezult c: X ( ) = TFTD{ N [n]} = N ( ) = N


30

k =

Reprezentarea grafic pentru N ( ) este:


N()
2 N

... -30 -20 -0 0


0

... 20 30 40

1.13. Transformata Fourier discret (TFD) TFD se aplic unei secvene finite, care se periodizeaz cu perioada N

De exemplu, pentru secvena x[n] finit:


x[n]

-5

-4

-3

-2

-1

1
~[n] x

rezult secvena periodizat:


... 0

... 1 . . . (N-1)

Transformarea Fourier unidimensional discret TFD1-D se aplic secvenelor 1-D cu suportul finit, de exemplu n = 0, N 1 , astfel c, pe acest % suport pot fi reprezentate de extensia lor periodic notat cu x [ n ] . n

consecin:
x[n], [0,N 1] x [ n] = 0, in rest
%

(1.46)

% Secvena periodic (sau "periodizat") x [ n ] poate fi reprezentat


31

prin coeficienii SFTD astfel c: 1 % ck not X [ k ] = N


% x [ n] e
n =0 N 1 jk ( 2 / N ) n

(1.47)

% Secvena X [ k ] este periodic cu perioada N, astfel c putem scrie:

% X [k ] =

m =

X [ k + mN ]
% X [ k ], pentru k=0,1,....N-1 0 , in rest

(1.48)

unde:
% X [k ] =

(1.49)

iar:
% % x [ n ] = X [ k ] e jk ( 2 / N )n = X [ k ] e jk ( 2 / N )n
k =0 k =0 N 1 N 1

(1.50)

n consecin, pe suporturile finite n, k [ 0, N 1] se definete perechea de transformate Fourier discrete unidimensionale:


X [ k ] = TFD1 D { x [ n ]} =

1 N
N 1 k =0

x [ n] e
n=0

N 1

jk ( 2 / N ) n

(1.51.a)

i:
x [ n ] = TFD11D { X [ k ]} = X [ k ] e jk ( 2 / N )n

(1.51.b)

Ultimile dou relaii mai pot fi scrise sub forma:


X [k ] =

1 N

x[n]e
n=0 + jk

N 1

jk

2 n N

=
N 1 n =0

1 N

x[n] W
n=0 nk

N 1

nk

(1.52.a) (1.52.b)

x[n] = X [k ]e
k =0

N 1

2 n N

= X [k ] WN

unde: WN = e

2 N

, care, uneori, este notat mai simplu cu: W

n concluzie, rezult perechea de funcii TFD:


32

x[n] X [k ]

TFD

(1.53) sau:
N 1 k =0 2 n N N 1 n=0 2 n N

X [k ] e

jk

TFD = x [ n ] X [ k ] = x [ n ] e

jk

(1.54)

ntre transformata Fourier n timp discret X ( ) a unei secvene


x [ n ] neperiodice i transformata Fourier discret X [ k ] corespunztoare

unei secvene finite exist deosebiri principiale. Totui, dac secvena x [ n ] neperiodic are suportul de definiie finit, atunci TFD este o metod de evaluare numeric a valorilor TFTD la N frecvene discrete, deoarece:
X [ k ] ck =

1 X ( ) N

= k0 = k 2 / N

(1.55)

X [k ] = TFD{x[n]} are proprieti similare cu c k . De exemplu: a) Secvena X [k ] are doar N eantioane distincte; b) X [0] reprezint valoarea medie pe o perioad; 1 N 1 c) Dac N este par, atunci X N = x[n](1) n ; 2 N n =0 d) Dac N este par i valorile secvenei sunt reale atunci: X [ N k ] = X * [k ]

EXEMPLU: S determinm TFD pentru secvena:


x[n] = { ,1,0,0} , pentru care: N = 4 1

Rezult c:
X [ k ] = x [ n] e
n=0 3 jk 2 n 4

= x [ n ] e
n=0

jk n 2

= 1 e

jk 0 2

+ 1 e

jk 1 2

33

= 1+ e

jk

X [0] = 1 + 1 = 2 X [1] = 1 j X [2] = 1 + ( 1) = 0 X [3] = 1 + j X[k] este:

n acest caz, perechea de secvene x[n]


TFD {1,1,0,0} {2; (1 j );0; (1 + j )}

EXEMPLU: Iat cteva exemple de perechi de transformate TFD:


x4
1

X4
1

TFD n
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8

x2
1

X2
1

TFD n
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8

x1
1

X1
1

TFD n
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8

EXEMPLU: Spectrul unui semnal sinusoidal definit de:

xsin [n] = sin 0 n = sin

2 2 n = sin n = sin n N 8 4

este reprezentat n figura de mai jos:

34

2 4

2
1

0,125 0,25

0,5

Dac secvena conine dou sinusoide, ca de exemplu:


x 2 sin [n] = sin

n + 2 sin

rezult reprezentarea spectral din figura de mai jos:


2 1

/40/3

2- 2/3 /4

Cele dou exemple ilustreaz spectrul discret al fiecrei sinusoide din compunerea semnalelor, precum i reprezentarea simetric (n oglinda, fa de = ) a acestor spectre.
EXEMPLU: Reprezentrile unei secvene aleatoare cu distribuie normal precum i spectrul acesteia sunt date n figura de mai jos:

35

xalea

n
0

Xalea

k
0

n figurile de mai sus se remarc, deopotriv, variaiile aleatoare att ale semnalului, ct i ale spectrului su. EXEMPLU: Spectrul a dou sinusoide necate n zgomot aditiv.
x2sin z [ n ] = sin

n + 2 sin

n + xalea [ n ]

0 /4

/3

n compoziia spectral de mai sus se pot (nc) remarca componentele spectrale ale celor dou sinusoide, care sunt ns necate de spectrul semnalului aleator xalea[n]. Transformata Fourier rapid este un algoritm de calcul pentru TFD

36

n cazul N=4, X [k ] se calculeaz cu:


W1 = j
4 1 nk X [k ] = x[n]W4 , n=0 k = 0,1, 2,3

W4 = e

2 4

=e

-1 = W2

W=1 W3 = -j

Sau, sub form explicit: X [0] = 1 x[0] + 1 x[2] + 1 x[1] + 1 x[3] X [1] = 1 x[0] + W 2 x[2] + W 1 x[1] + W 3 x[3] 2 2 X [2] = 1 x[0] + 1 x[2] + W x[1] + W x[3] X [3] = 1 x[0] + W 2 x[2] + W 3 x[1] + W 1 x[3] (1.56) Sistemul de mai sus poate fi rescris ca mai jos, unde se remarc c operaiile notate cu G[0], G[1] i H[0], H[1] se repet;

X[0] = (1x[0]+1x[2]) + W0(1x[1]+1x[3]) = G[0]+1H[0] X[1] = (1x[0]+W2x[2])+W1(1x[1]+ W2x[3]) = G[1]+ W1H[1]


2 2 X[2] = (1.57) (1x[0]+1x[2]) + W (1x[1]+1x[3]) = G[0]+ W H[0]

G[0]

H[0]

G[1]

H[1]

G[0]
2 3 2

H[0]

X[3] = (1x[0]+W x[2])+W (1x[1]+ W x[3]) = G[1]+ W3H[1]


G[1] H[1]

37

Relaiile de mai sus permit reprezentarea sub forma unui graf:


1 1 1 W2 1 W2 W =1 W2
1
0

G[0]
1

x[0] x[2] x[1] x[3]

G[1] W =1 H[0] H[1]


1
0

X[0] W0=1 X[1] W1


1

X[2] X[3]

W3

Analiznd operaiile aritmetice care intervin, rezult pentru numrul de multiplicri n complex ( M c ) i numrul de adunri n compex ( Ac ) relaiile: N 4 log 2 N = log 2 4 = 2 2 = 4 fa de N2 = 16 2 2 Ac = N log 2 N = 4 log 2 4 = 4 2 = 8 fa de N(N-1)=12 Mc =
1.14. Principalele proprieti (sau teoreme) ale TFTD i TFD

Secvenele neperiodice pot fi reprezentate prin TFTD, corespunztor relaiilor:


x[n] =

1 2

X ( )e
+

jn

d = F 1 { X ( )}

(1.58) X ( ) = (1.59) astfel c: x[n] X ( )


38
TFTD

n =

x[n]e

j n

= F {x[n]}

(1.60)

Secvenele neperiodice finite pot fi reprezentate prin TFD, corespunztor relaiilor:

x[n] = X [k ]e
k =0

N 1

jk

2 n N

(1.61) X [k ] = astfel c: x[n] X [k ] (1.62)


1.14.1. Liniaritatea
TFD

1 N

x[n]e
n =0

N 1

jk

2 n N

i i R , atunci:
i i (i )

Dac: x i [n] X i ( )

TFTD

Dac: xi [n]X i (k ) (1.63.a) i i R , atunci:


(i )

TFD

x [n] X ( )
i i (i )

TFTD

i xi [n] i X i [k ]
(i )

TFD

(1.63.b)

1.14.2.Translaia sau deplasarea n timp discret


TFTD TFD

Dac: x[n] X ( ) n 0 N rezult c: x[n n0 ] e


TFTD jn0

Dac: x[n] X [k ] n 0 N rezult c: x[n n0 ] e


TFD jn0 2 k N

(1.64.a)

X ( )

X [k ] (1.64.b)

1.14.3.Translaia sau deplasarea n frecven

Dac:

TFTD x[n] X ( )

TFD Dac: x[n] X [k ]

39

atunci: TFTD e j 0 n x[n] X ( 0 )

atunci: e
2 jk 0 n N

(1.65)
TFD x[n] X [k k 0 ]

1.14.4. Convoluia secvenelor n timp discret

Pentru doua secvene x[n] i h[n] neperiodice se definete convoluia lor liniar + y[n] = ( x h)[n] = x[m] h[n m]
m =

(1.66)

Pentru dou secvene periodice x[n] i h[n] de aceeai perioad N se definete convoluia lor ciclic: y ' [n] = ( x h)[n] = Dac: i: atunci:

1 N 1 x[m] h[n m] N m =0
Dac:

(1.67)

TFTD x[n] = X ( ) TFTD h[n] = H ( )

y[n] = ( x h)[n] = x[m]h[n m]


( m)

TFD x[n] = X [k ] TFD i: h[n] = H [k ] atunci: 1 N 1 y '[n] = ( x h)[n] = x[m] h[n m] N m=0

iar: TFTD ( x h)[n] X ( ) H ( )

iar: TFD ( x h)[n] N X [k ] H [k ] (1.69)

APLICAIE: Rspunsul SNLI n timp discret

x[n] X ( )

SNLI

y[n] Y ( )

Dac la intrare: x[n] = [n] , atunci la ieire rezult: y[n] = h[n] Se definete funcia de transfer: Y ( ) H ( ) = Y ( ) = H ( ) X ( ) X ( )
40

Dar, deoarece:

x[n] = [n] X ( ) = TFTD{ [n]} = 1

Rezult c: Y ( ) = H ( ) 1 Adic: y[n] = h[n] = TFTD{H ( )} Deci perechea de funcii TFTD este, n acest caz:
TFTD h[n] H ( )

Cum: Y ( ) = X ( ) H ( ) rezult c:
y[n] = x[n] h[n]

1.14. 5. Modulaia secvenelor sau convoluia n frecven

Dac:

TFTD x[n] = X ( )

TFD Dac: x[n] = X [k ]


TFD i: p[n] = P[k ] atunci:

TFTD i: p[n] = H ( ) atunci:

(1.70)

TFTD x[n] p[n]

1 ( X P)( ) 2

TFD x[n] p[n] ( X P)[k ]

(1.71)
Corelaia secvenelor

Pentru dou secvene x1[n] i x2[n] neperiodice, se definete corelaia


lor (mutual) prin:

r12 [m] =

n =

x [ n] x [ n + m]
1 2

(1.72)

Dac:

x1 [n] = x 2 [n] = x[n]

atunci: r12 [m] r[m] = x[n] x[n + m]


( n)

(1.73)

2 Pentru m = 0 r[0] = x [n] = E x - care este energia secvenei x[n] (n)

41

Pentru dou secvene x1[n] i x2[n] periodice, de aceeai perioad N, se definete corelaia lor ciclic prin :
' r12 [m] =

1 N

x [ n] x [ n + m]
n =0 1 2

N 1

(1.74)

Dac: atunci: Pentru:

x1 [n] = x 2 [n] = x[n]


' r12 [m] r ' [m] =

1 N 1 N

x[n] x[n + m]
n =0

N 1

(1.75) (1.76)

m = 0 r ' [0] =

x
n=0

N 1

[n] = Px

unde Px este puterea medie a secvenei periodice x[n].

1.14.6. Teorema lui Parseval


Dac x[n] i X() sunt perechi TFTD, adic :
TFTD x[n] X ( )

Atunci, energia secvenei neperiodice x[n] se calculeaz cu relaia :

E x = x[n] =
2 (n)

1 2

X ( )

(1.77)

Dac x[n] i X[k] sunt perechi TFD, adic :


TFD x[n] X [k ]

atunci puterea medie ntr-o perioad a secvenei x[n] se calculeaz cu relaia 2 N 1 1 N 1 2 Px = x[n] = X [k ] (1.78) N n =0 k =0
42

1.15. Reprezentarea secvenelor cu transformarea Z


Pentru un semnal n timp discret x [ n ] se definete Transformata Z (bilateral) direct prin: X ( z ) = TZ { x [ n ]} ( z ) =
D +

n =

x [ n] z

(1.79)

unde z = e j este o variabil complex. n consecin, relaia de definiie (1.79) poate fi rescris sub forma: X ( e j ) = astfel c:

n =

x [ n ] ( e j )

n =

{ x [ n] } e
n

j n

(1.80)

X ( e j ) = TZ { x [ n ]} = TZ { x [ n ] n }
Pentru cazul particular = z = 1 , din relaia (1.81) rezult c: TZ { x [ n ]}

(1.81)

z = e j

= TZ { x [ n ]}

(1.82)

adic, transformata Z direct a unei secvene x [ n ] se reduce pe cercul unitate la TFTD a secvenei. Existena transformatei Z (directe) a unei secvene x [ n ] este determinat, conform relaiei (1.80), de convergena semnalului x [ n ] n pentru
n =

n .
n

Regiunea

din

planul

complex

pentru

care

x [ n]

< se numete "Regiune (sau Domeniu) de Convergen"

(prescurtat n continuare prin "RdC"). Regiunea de Convergen pentru seria de puteri n general o coroan circular
43
n =

x [ n]
Z,

este

planul

complex

definit

de: z

R < z < R+ . Dac RdC include i cercul unitate, atunci exist

relaia (1.82) i deci, converge i TFTD. S analizm convergena transformatelor Z pentru cteva cazuri particulare de secvene 1-D. a) Secvena finit, limitat bilateral:

X ( z) =

n = n1

x (n) z

n2

(1.83.a)

Deoarece suma este convergent pentru x [ n ] finit, rezult c RdC este caracterizat de R = 0 i R+ = b) Secvena limitat la

stnga,

astfel

x [ n] = 0

pentru

n < n1 cu n1 = finit . _n acest caz: X [ z ] = x [ n] z n


n = n1

(1.83.b)

iar R+ = i seria (1.83.b) este absolut convergent n exteriorul unui cerc caracterizat de z =

. Acesta este i cazul secvenelor cauzale pentru care

c) Secvena limitat la dreapta, astfel c x [ n ] = 0 pentru n>n 2 cu n2 = finit. Expresia transformatei Z devine:
X [ z] =
n =

n1 = 0 ;

x [ n] z

n2

(1.83.c)
+

n acest caz RdC este interiorul cercului z <

, iar

=0

EXEMPLU Transformata Z direct a secvenei impuls unitate [ n ] rezult, conform definiiei (1.79):

( z ) = TZ { [ n ]} =

n =

[ n]z

= 1z 0 = 1, z

(1.84)

EXEMPLU Transformata Z direct a secvenei treapt unitate u [ n ] este:


44

U ( z ) = TZ {u [ n ]} =

n =

u [ n]z

= 1 z n =
n =0

1 1 z 1

RdC a acestei transformate este definit de z > 1. EXEMPLU S calculm transformatele Z ale semnelor: x1 [ n ] = a n u [ n ] i x2 [ n ] = a nu [ n 1] , Pentru secvena x1 [ n ] rezult c:

X 1 ( z ) = TZ { x1 [ n ]} = a n z n = ( az 1 ) =
n n=0 n=0

1 z = 1 1 az za

Suma (progresiei geometrice infinite) de mai sus este convergent dac az 1 < 1 , astfel c R d C pentru X 1 ( z ) este caracterizat de z > a ,

adic exteriorul cercului de raz "a" din planul z. Pentru secvena x2 [ n ] transformata Z va fi:
X 2 ( z ) = TZ { x2 [ n ]} =

n =

a n z n = ( a 1 z ) =
m
n= m

m =1

a 1 z z = 1 1 a z z a

Transformata X 2 ( z ) este convergent dac a 1 z < 1 , astfel c RdC este definit de z < a , adic interiorul cercului de raz "a" din planul z. Pentru cele dou secvene distincte au rezultat aceleai expresii ale transformatelor Z, dar cu RdC diferite. n concluzie, expresia transformarei Z a unei secvene trebuie nsoit de precizarea Regiunii de Convergen.

45

Transformata Z invers

Dac z = se afl n RdC, se poate scrie c:

X ( e j ) = TZ { x [ n ] n }

(1.85)

Aplicnd ambilor membrii ai relaiei (1.85) transformata Fourier invers n timp discret, se obine:

x [ n ] n = TZ 1 X ( e j )
sau:
x [ n ] = n TZ 1 X ( e j ) = n
= 1 2
X ( e )( e )
j j

}
2

(1.86)
X ( e )e
j j n

1 2
n

(1.87)

Deoarece z = e j , dac se consider =fix, rezult c: d z = j e j d = jz d sau: d = (1/ j ) z 1 astfel nct relaia (1.87) devine: 1 x [ n] = 2 j unde: C = z

(1.88.a) (1.88.b)

X ( z )z

n 1

dz

(1.89)

z = R, R < R < R+ , adic, C este un cerc cu centrul n

originea planului Z, situat n regiunea de convergen a transformatei X(z). Relaia (1.89) exprim transformata Z invers, care mpreun cu relaia (1.79) definesc perechea de transformate Z unidimensionale, notate cu: x [ n ] < > X ( z )
TZ

(1.90)

Exist numeroase metode pentru calculul integralei circulare nchise din definiia transformatei Z inverse (1.89). Dintre acestea, prezentm mai jos metoda reziduurilor, corespunztor creia:
46

x [ n] =

X ( z) z 2 j
C

n 1

dz=

1 2 j

Unde s-a notat cu F ( z ) = X ( z ) z n 1 , iar prin RdC domeniul de convergen delimitat de curba nchis C. a) Dac z=a este un pol simplu, real al funciei raionale X(z), partea principal relativ la acest pol din dezvoltarea n serie Taylor a funciei X(z) Az (1.92) b) va fi: X1 ( z ) = 1 za astfel nct: Az (1.93) X 1 [ n ] = Rezid 1 z n 1 = A1a n za z =a b) Dac z=a este un pol dublu, real, al funciei raionale X(z), rezult partea principal din dezvoltarea n serie Taylor relativ la acest pol dublu: X2 (z) =
4) astfel nct:

F ( z ) d z = Rezid {F ( z )}
RdC

(1.91)

A1 A2 + z a ( z a )2

(1.94)

x2 [ n ] = Rezid X 2 ( z ) z n 1

z =a

= A1a n + A2 na n 1

(1.95)

c) Dac funcia raional X(z) are o pereche de poli complex conjugai de forma z1 = e j i z2 = e j , partea principal a dezvoltrii n serie Taylor a funciei X(z) relativ la aceti poli este: Az A z X3 ( z) = 1 + 1 z z1 z z1 (1.96)

cu A1 = A1 e j
(1.97) Rezult c:
x3 [ n ] = 2e { A1 z1} = 2 [ A1 ] n cos ( n + )
47

(1.98)

EXEMPLU S se determine semnalul x [ n ] n timp discret corespunztor

transformatei:
X [ z] = z ( 2 z 1) 2 ( z 1)( z + 0,5 )

care are doi poli reali simpli : z=1 i z=--0,5. Conform relaiei (1.83), rezult c: x3 [ n ] = Rezid { X ( z ) z n 1}
z =1

+ Rezid { X ( z ) z n 1}

z =0,5

( 2 z 1) z n = 2 ( z + 0,5 )
z =1

( 2 z 1) z n + 2 ( z 1)

1 2 1 = + 3 3 2
z =0,5

1.16. Principalele proprieti ale transformatelor Z 1.16.1. Liniaritatea

Dac x1 [ n ] < > X i [ z ] cu RdC = Di ,iar i , atunci:

TZ

i xi [ n] < > i X i ( z )
(i ) (i )

TZ

(1.99)

cu RdC = I Di
(i )

48

1.16.2. Translaia sau ntrzierea n timp discret


TZ

Dac x [ n ] < > X x [ z ] cu RdC = Dx atunci n0 x [ n n0 ] < > z


TZ
n0

rezult c: (1.100)

X (z)

ntr-adevr, aplicnd definiia (1.79), rezult c:

TZ { x [ n n0 ]} = x [ n n0 ]z n

n n0 = m n = m + n0

x [ m ]z

( m + n0 )

=z

n0

m =

x [ m] z

=z

n0

X (z)

1.16.3. Translaia sau deplasarea n frecven


TZ

Dac x [ n ] < > X ( z ) cu RdC = Dx , atunci 0 e


j0n

rezult c:

x [ n ] < > X e

TZ

j0

z = X e

j ( 0 )

)
(1.101)

Demonstraia acestei proprieti rezult astfel:

TZ 1 X e

{ (

j0

1 )} = 2 j X ( e z ) z
j0

n 1

dz
e

j0

not j0 j0

z = e d z =e

49

2 j 2

X ( )

n 1

j0 ( n 1)

j0n e n 1 d X ( ) d = e x [ n] 2 j 2

j0n

1.16.4. Teorema convoluiei secvenelor (n timp discret)

Dac :

x [ n ] < > X ( z ) i h [ n ] < > H ( z ) , atunci

TZ

TZ

( x h ) [ n] < > X ( z ) H ( z )
Proprietatea (1.102) se demonstreaz astfel: TZ x [ r ] h [ n r ] = x [ r ] h [ n r ]z n = (r) (n) (r )

TZ

(1.102)

x [ r ] h ( n r ) z
(r ) ( n)

= x [ r ]z r H ( z ) = X ( z ) H ( z )
(r )

1.16.5 Teorema convoluiei n planul z

Dac x [ n ] < > X ( z ) [i p [ n ] < > P ( z ) , atunci x [ n ] p [ n ] < >


TZ

TZ

TZ

X ( v )P v 2 j v
c

dv

(1.103)

Proprietatea (1.93) se demonstreaz asrfel:


TZ { x [ n ] p [ n ]} =
( n)

{ p [ n] x [ n]} z
n 1

p [ n] 2 j X ( v ) v
( n)

d v z n

50

= =

X ( v ) p [ n ] ( v z ) 2 j ( )
1 1
1 c

1 v d v

X ( v )P v 2 j v
c

dv

1.16.6. Relaia lui Parceval

Folosind teorema convoluiei n planul z aplicat pentru dou semnale (complexe) x1 [ n ] i x2 [ n ] rezult c: W12 = 1 x [ n]x [ n] = 2 j X ( ) X ( ) d
1
2 + 2

n =

(1.104)

( x h)[n] H ( z ) X ( z )

APLICAIE: Analiza SNLI n planul variabilei z

Pentru SNLI din figur :

x[n] X ( z)

SNLI

y[n] = ( x h)[n] Y ( z)

se definete funcia de transfer a SNLI prin: Y ( z ) Z {y[n]} = + R.d .C. X ( z ) Z {x[n]} Dac R.d.C. cuprinde i cercul unitate din planul variabilei complexe z, atunci: H ( z) = H ( z)
z = e j

H (e j ) = TFTD{h[n]}
jk

Pentru N valori echidistante pe cercul unitate z = e H ( z)


z =e
jk 2 N

2 N

, se obine :

H [k ] = TFD {h[n]}
51

1.17. Prelucrarea numeric a semnalelor analogice

Fie un semnal analogic x(t) i transformata sa Fourier X() 1 2


+

F j t X ( j)e d = x(t ) X () =

x(t )e

j t

dt

Cum pot fi determinate cu ajutorul calculatorului eletronic valorile acestor funcii pentru abscise echidistante ? Perechea de funcii secvene numerice:
~ ~

TFD x[n] X [k ] poate aproxima orict de bine funciile continue x(t)X() prin micorarea erorilor de aproximare? Aceasta este principala problem n cazul prelucrrii numerice a semnalelor analogice . n figura de mai jos, se ilustreaz, pe de-o parte, principiul prelucrrii numerice a unui semnal analogic i pe de alt parte, problemele ce pot apare ca urmare a necesitii de a asigura limitarea benzii semnalului analogic i truncherii n timp a semnalului eantionat. Perechea de funcii semnal de prelucrat x(t) i X()=TF{ x(t)} X ( ) x(t )

Efectul truncherii n frecven a spectrului semnalului X() cu funcia H1 h1 ( t ) H 1 ( ) t 2T T T 2T


52

M M

Rezult semnalul de band limitat :


x ( t ) h1 ( t )

X ( ) H 1 ( )

M M

Efectul truncherii n timp a semnalului de band limitat cu funcia poart h2(t)

h2 (t )

H 2 ( )

2 T0 2 T0

T0

Rezult un semnal limitat n timp i de band limitat:


[ x ( t ) h1 ( t )] h 2 ( t ) [ X ( ) H 1 ( )] H 2 ( )

t
0

M
M

T0

Acum, acest semnal, limitat n timp i de band limitat, este pregtit s fie eantionat n timp i n frecven, adic s fie reprezentat ~ TFD x numeric prin perechea de secvene: ~[n] X [k ] . ns trebuie remarcat c att forma de und a semnalului (limitat) n timp ct si spectrul su (de band limitat) nu mai sunt identice cu cele corespondente ale semnalului analogic iniial! Pregtirea semnalelor analogice pentru a fi prelucrate numeric conduce la o distorsionare a semnalelor analogice iniiale, distorsionare care, ns, poate fi inut sub control prin alegerea (tipului i lungimii) ferestrei de limitare a spectrului (infinit) al semnalului analogic i a lungimii ferestrei de limitare n timp a variaiei formei de und a semnalului analogic.

53

1.18. Probleme rezolvate

PROBLEMA P1.1 Determinai transformata Fourier n timp discret (TFTD) a semnalului exponenial urmtor: x [ n] = a n u [ n] , a < 1 . (1.1.1)

Figura 1.1.1 Rezolvare problema P1.1 Transformata Fourier n timp discret a semnalului x [ n ] este:
X ( j ) = (1.1.2)
54

n =

x [ n] e

j n

= a n e j n = ( a e j ) =
n n=0 n=0

1 . 1 a e j

Reprezentrile grafice ale spectrului de amplitudini i de faze pentru semnalul x [ n ] cu a > 0 , sunt prezentate n figura 1.1.2. Figura 1.1.2

PROBLEMA P1.2
Determinai transformata Fourier discret pentru semnalul periodic x [ n ] = a n cu a < 1 , reprezentat n figura urmtoare.

Figura 1.2.1
55

Rezolvare problema P1.2 n cazul general, pentru un semnal numeric periodic cu perioada N avem:
X [k ] = 1 N

x [ n] e
n=0

N 1

jk

2 n N

(1.2.1)

unde k = 0,1,K , N 1 . n cazul problemei de fa, N = 8 , iar transformata Fourier discret a semnalului din figura 1.2.1 este:
2 n jk jk 1 7 1 7 1 X [k ] = an e 8 = a e 4 = 8 n =0 8 n=0 8 n

1 a8 1 a e
jk

. (1.2.2)

De exemplu, pentru a = 0,5 , rezult:


1 X [k ] = 8 1 0,58 1 0,5 e
8 jk

0,1245 1 0,5 e
jk

(1.2.3) (1.2.4) (1.2.5) (1.2.6)


(1.2.7)

1 1 0,5 0,1245 X [ 0] = = X [ 0] = 0, 2490 , 8 1 0,5 0,5


1 X [1] = 8 1 0,58 1 0,5 e
j

X [1] = 0,1689 ,

1 1 0,58 X [ 2] = 0,1113 , X [ 2] = j 8 2 1 0,5 e


1 X [3] = 8 1 0,58
j 3 4

X [3] = 0, 089 .

1 0,5 e Se observ faptul c X [5] = X * [3] , X [ 6] = X * [ 2] , X [ 7 ] = X * [1] .

56

PROBLEMA P1.3
Determinai transformata Fourier discret pentru semnalul periodic reprezentat n figura urmtoare:

Figura 1.3.1 Rezolvare problema P1.3 Perioada de repetiie a semnalului este N = 8 . n aceast situaie, transformata Fourier discret a semnalului din figura 1.3.1 este: jk n 1 3 X [ k ] = 1 e 4 , (1.3.1) 8 n=0 unde k = 0,1,K , 7 . Rezult: 1 3 1 X [ 0 ] = 1 1 = , (1.3.2) 8 n=0 2

X [1] =
X [ 2] =

j n 1 3 1 1 e 4 = 1 j 1 + 2 X [1] = 0,3266 , 8 n=0 8

(1.3.3) (1.3.4)

j n j j3 1 3 1 1 e 2 = 1 + e 2 + e j + e 2 = 0 , 8 n =0 8

57

X [3] =

j3 n 1 3 1 1 e 4 = 1 + j 1 2 X [3] = 0,1353 , (1.3.5) 8 n=0 8 X [ 4] = 0 ,

(1.3.6)
(1.3.7) (1.3.8)

1 X [5] = X * [3] = 1 j 1 2 X [5] = 0,1353 , 8 X [ 6] = 0 ,

1 X [ 7 ] = X * [1] = 1 + j 1 + 2 X [ 7 ] = 0,3266 . 8

(1.3.9)

PROBLEMA P1.4

Determinai expresia semnalului n timp discret x [ n ] dac transformata sa Fourier n timp discret este X ( j ) .
X ( j )

Figura 1.4.1

-/2

/2

3/2

58

1 5 1 3

1 5 1 3

Figura 1.4.2 Rezolvare problema P1.4 n cazul general, avem:


x [ n] =

1 2

X ( j ) e

j n

d .

(1.4.1)

Aplicm relaia anterioar n cazul particular al acestei probleme i obinem:

1 x [ n] = 2

j n 1 e d =

1 1 j n e 2 jn


2 2

jn 1 jn e 2 e 2 = 2 nj

n sin 1 n 1 2 = 1 sinc n . = sin = 2 n 2 2 n 2 2


59

(1.4.2)

PROBLEMA P1.5
Determinai transformatele Z (directe) ale semnalelor din figura urmtoare:
x1 [ n ]

1 1 0 -1 Figura 1.5.1
x2 [ n ]

3 2 4

5 6

1 1 0 Rezolvare problema P1.5 2 3 4 5 6 7

n cazul general, transformata Z a unui semnal numeric x [ n ] , este:

X ( z) =
+
1

n =

x [ n] z

(1.5.1)

n cazul problemei de fa, avem:

X 1 ( z ) = Z { x1 [ n ]} = x1 [ n ] z n = x1 [ n ] z n = 1 z 0 1 z 1 = 1 z 1
n =0 n =0

(1.5.2)

60

X 2 ( z ) = Z { x2 [ n ]} = x2 [ n ] z n = ( +1) z 2 r + ( 1) z ( 2 r +1) =
n=0 r =0 r =0

=z
r =0

2 r

z
r =0

2 r

= (1 z

)( z )
r =0 n

2 r

1 1 = (1 z ) = 2 1 z 1 + z 1
1

, (1.5.3)

sau:

X 2 ( z ) = ( 1) z n = ( z 1 ) =
n

1 . (1.5.4) 1 + z 1 n=0 n=0 Transformatele Fourier n timp discret ale celor dou semnale x1 [ n ]

i x2 [ n ] se pot determina pornind de la transformatele Z ale acestora:

X 1 ( j ) = X 1 ( z ) X 2 ( j ) = X 2 ( z )
+

z = e j
z = e j

= 1 e j , = 1 . 1 + e j

(1.5.5) (1.5.6)

Se observ c x2 [ n ] = x1 [ n 2r ] . n acest caz, transformata Z a


semnalului x2 [ n ] se deduce i n felul urmtor:
r =0 + +

X 2 ( z ) = Z { x2 [ n ]} = Z { x1 [ n 2r ]} = z 2 r Z { x1 [ n ]} =
r =0 r =0

= (1 z

) z
r =0

2 r

1 1 = (1 z ) = 2 1 z 1 + z 1
1

(1.5.7)

PROBLEMA P1.6

Determinai transformata Z (direct) a semnalului discret x [ n] = a nu [ n] . Rezolvare problema P1.6

61

Transformata Z a semnalului discret x [ n ] este:


X ( z) = . (1.6.1) 1 z = = 1 a z 1 z a Domeniul de convergen este dat de condiia a z 1 < 1 , adic z >a.
n =

x [ n] z n =

n =

a nu [ n ] z n = ( a z 1 ) =
n n=0

PROBLEMA P1.7

Determinai expresia semnalului n timp discret x [ n ] dac transformata Z a sa este:

5 3 z 1 6 , X ( z) = 1 1 1 1 1 z 1 z 4 3 pentru z > 1 . 3

(1.7.1)

Rezolvare problema P1.7 Transformata Z a semnalului x [ n ] poate fi descompus astfel:

1 2 + . 1 1 1 1 1 z 1 z 4 3 Se cunoate urmtorul rezultat: 1 Z {a nu [ n ]} = , 1 az 1 unde a este o constant astfel nct a < 1 . X ( z) =


62

(1.7.2)

(1.7.3)

Aadar, analiznd cele dou relaii anterioare, rezult c:

1 1 x [ n ] = Z { X ( z )} = u [ n ] + 2 u [ n ] . 4 3
1

(1.7.4)

PROBLEMA P1.8

z+2 cu 1 < z < 2 , transformata Z a semnalului z 3z + 2 discret x [ n ] . Se cere s se determine expresia semnalului x [ n ] . Fie X ( z ) =
2

Rezolvare problema P1.8 Expresia lui X ( z ) se poate descompune astfel:


X ( z) z+2 A B C . = = + + z z ( z 1)( z 2 ) z z 1 z 2 (1.8.1)

Dup efectuarea calculelor, se obin A = 1 , B = 3 i C = 2 . Aadar: X ( z ) = 1


3z 2z + . z 1 z 2 (1.8.2)

Expresia semnalului n timp discret x [ n ] va fi:

x [ n ] = [ n ] 3u [ n ] 2 2n u [ n 1] .
(1.8.3) Observaie: Dac avem semnalul n timp discret y [ n ] = a nu [ n 1] , atunci transformata Z a acestuia va fi:
63

Y ( z ) = a nu [ n 1] z n = a n z n = a n z n =
n = n = n =1

= 1 (a z)
1 n=0

1 z = 1 = 1 1 a z z a

(1.8.4) convergent pentru a 1 z < 1 , adic z < a .

PROBLEMA P1.9

Se d circuitul numeric din figura 1.9.1:unde semnalul x [ n ] este cel reprezentat n figura 1.9.2.

Figura 1.9.1

64

Figura 1.9.2

a) Determinai ecuaia cu diferene finite care exprim legtura ntre semnalele v [ n ] i y [ n ] ; b) Calculai funcia de transfer H ( z ) =

c) Care este semnalul de ieire y [ n ] dac la intrare se aplic

Y ( z) ; V (z)

x [ n ] dat?
Rezolvare problema P1.9 a) Ecuaia cu diferene finite care exprim legtura ntre semnalele v [ n ] i y [ n ] rezult imediat din structura circuitului prezentat n figura 1.9.1:
y [ n ] = 1 v [ n ] + y [ n 1] .

(1.9.1)

b) Funcia de transfer se obine aplicnd transformata Z ecuaiei cu diferene finite obinut anterior (1.9.1):
Y ( z ) = V ( z ) + z 1 Y ( z ) ,
65

(1.9.2)

Y ( z ) 1 z 1 = V ( z ) H ( z ) =

Y (z) 1 . = V ( z ) 1 z 1

(1.9.3)

c) Semnalul v [ n ] este produsul dintre x [ n ] i secvena e j n :

v [ n] = x [ n ] e j n = x [ n ] ( 1) ,
n

(1.9.4)

adic v [ n ] = u [ n ] . tiind c:

V ( z ) = d {v [ n ]} = Z {u [ n ]} = 1 z 1 = Z
n=0

1 , 1 z 1

(1.9.5)

rezult c:

Y ( z ) = H ( z ) V ( z ) =
i deci:

1 1 , 1 1 z 1 z 1
n

(1.9.6)

y [ n] = u [ n] u [ n] = u [ k ] u [ n k ] = u [ n k ] .
k =0 k =0

(1.9.7) (1.9.8)

Aadar:

y [ n] = n + 1 .

PROBLEMA P1.10
Se d schema din figur, n care blocurile cu funciile pondere h1 [ n ] i h2 [ n ] reprezint sisteme discrete liniare i invariante n timp:

66

x1[n]

x2 [ n]

x3 [n]

x4 [ n]

h1[n]

h2 [n]

e j n
Figura 1.10.1

Se dau:

x1 [ n ] = u [ n + 1] u [ n 2] ,
h1 [ n ] = x1 [ n ] ,

(1.10.1) (1.10.2) (1.10.3)

h2 [ n ] =
Se cer:

k =

[ n 12k ] .

a) S se determine expresiile (n timp discret) pentru semnalele x2 [ n ] , x3 [ n ] i x4 [ n ] ; b) S se reprezinte grafic semnalele x j [ n ] , j = 1, 4 ; i s se reprezinte grafic funciile X 1 ( e j ) i X 2 ( e j ) . Rezolvare problema P1.10: a) Din figura 1.10.1 rezult urmtoarea expresie: x2 [ n ] = x1 [ n ] h1 [ n ] = x1 [ n ] x1 [ n ] (1.10.4) c) S se calculeze transformata Fourier a secvenelor x1 [ n ] i x2 [ n ]

Prin aplicarea transformatei Fourier, operatorul de convoluie se transform n produs, rezultnd relaia (1.10.5):
67

Semnalul x1 [ n ] se poate scrie i sub forma din relaia de mai jos:


x1 [ n ] = [ n + 1] + [ n ] + [ n 1]

X 2 ( e j ) = X 12 ( e j )

(1.10.5) (1.10.6) (1.10.7) (1.10.8) (1.10.9) (1.10.10)

k =

Din expresia lui x1 [ n ] se poate determina x2 [ n ] astfel:

X 1 ( e j ) = e j + 1 + e j = 2 cos + 1 ,

x2 [ n ] = [ n + 2] + 2 [ n + 1] + 3 [ n ] + 2 [ n 1] + [ n 2] .
x3 [ n ] = e j n x2 [ n ] = ( 1) x2 [ n ]
n

X 2 ( e j ) = e 2 j + e 2 j + 2 e j + 2 e j + 3 ,

Relaiile de calcul pentru x3 [ n ] i x4 [ n ] sunt descrise n relaiile urmtoare. x4 [ n ] = x3 [ n ] h2 [ n ] = b) c)

n figura 1.10.2 sunt reprezentate grafic semnalele x j [ n ] , j = 1, 4 . Transformatele Fourier ale semnalelor x1 [ n ] i x2 [ n ] sunt

k =

( x [ n] [ n 12k ]) = x [ n 12k ]
3 3

(1.10.11)

urmtoarele:

Figura 1.10.2
68

X 1 ( e j ) = F { x1 [ n ]} =
X 2 (e
j 2

n figura 1.10.3 sunt reprezentate funciile X 1 ( e j ) i X 2 ( e j ) .

) = F { x [ n]} = X ( e ) = (1 + 2 cos )
2 1 j

n =1

x [ n] e

j n

= e j n + 1 + e j n = 1 + 2 cos , (1.10.12)
2

(1.10.13)

Figura 1.10.3

69

1. 19. Secvene Numerice Aplicaii n MATLAB Eantionarea semnalelor continue Codul MATLAB urmtor reprezint formele de und pentru un semnal sinusoidal continuu i discret, pentru urmtorii parametri:
F0 = 1200 Hz, Fe = 16 KHz, 0 = / 4 rad, A = 10, t 0 = 0 s, t f = 5 ms
Fe=16e3; t=0:1/Fe:5e-3; n=0:length(t)-1; subplot(211); plot(t,10*sin(2*pi*1200*t+pi/4)); xlabel('timp continuu'); ylabel('amplitudine') title('Semnal sinusoidal continuu') subplot(212); stem(10*sin(2*pi*(1200/16000)*n+pi/4)) xlabel('timp discret'); ylabel('amplitudine') title(' Semnal sinusoidal discret')
Semnal sinusoidal continuu 10 amplitudine 5 0 -5 -10

0.5

1.5

2 2.5 3 timp continuu Semnal sinusoidal discret

3.5

4.5 x 10

5
-3

10 amplitudine 5 0 -5 -10

10

20

30

40 50 timp discret

60

70

80

90

70

Secvene elementare S se genereze i s se reprezinte grafic secvenele numerice 1D elementare urmtoare : a) impuls Dirac [n 10] , b) semnal treapt unitate u[n ] , c) semnal poart r[n 5] , d) semnal sinusoidal cu frecvena 1 KHz eantionat la 10 KHz sin[2 (1000 / 10000) n + / 4] , e) semnal sinus cardinal sinc[n ] ,

f) semnal exponenial e n ,
g) semnal putere 2 n / 2 , f) semnal logaritm natural ln[n ] , h) semnal aleator cu repartiie normal cu media 1.5 i dispersia 0.25.
f=figure('Units','Norm','Position',[.01 .01 .98 .95]); %set(f,'MenuBar','none'); a1=axes('Position',[.05 .7 .25 .25]); stem([zeros(1,14) 1 zeros(1,5)]); set(a1,'YLim',[0 1.5],'XTick',[0:5:20],... 'XTickLabel',[-10:5:10],'FontSize',8); legend('Impuls Dirac',2) a2=axes('Position',[.35 .7 .25 .25]); stem([zeros(1,10) ones(1,10)]); set(a2,'YLim',[0 1.5],'XTick',[0:5:20],... 'XTickLabel',[-10:5:10],'FontSize',8); legend('Semnal treapta unitate',2) a3=axes('Position',[.65 .7 .25 .25]); stem([zeros(1,12) ones(1,5) zeros(1,3)]); set(a3,'YLim',[0 1.5],'XTick',[0:5:20],... 'XTickLabel',[-10:5:10],'FontSize',8); legend('Semnal poarta',2) a4=axes('Position',[.05 .4 .25 .25]); stem(sin(2*pi*.1*[0:20]+pi/4)); set(a4,'XLim',[0 20],'YLim',[-1 2],'XTick',[0:10:20],... 'XTickLabel',[0:10:20]*1e-4,'FontSize',8); legend('Semnal sinusoidal',2) a5=axes('Position',[.35 .4 .25 .25]); stem(sinc(.25*[-9:10])); set(a5,'XLim',[0 20],'YLim',[-.25 1.5],'XTick',... [0:5:20],'XTickLabel',[-10:5:10],'FontSize',8); legend('Semnal sinc',2) a6=axes('Position',[.65 .4 .25 .25]);

71

stem(exp(-(0:20))); set(a6,'YLim',[0 1.2],'XLim',[1 21],'XTick',[1:5:21],... 'XTickLabel',[0:5:20],'FontSize',8); legend('Semnal exponential e^-^n',2) a7=axes('Position',[.05 .1 .25 .25]); stem(pow2(-0.5*(0:20))) set(a7,'YLim',[0 1.2],'XLim',[1 21],'XTick',[1:5:21],... 'XTickLabel',[0:5:20],'FontSize',8); legend('Semnal putere 2^-^0^.^5^n',2) a8=axes('Position',[.35 .1 .25 .25]); stem(log([.1:.1:2])) set(a8,'YLim',[-3 3],'XLim',[0 20],'XTick',[0:5:20],... 'XTickLabel',[0:.5:2],'FontSize',8); legend('Semnal logaritm natural',2) a9=axes('Position',[.65 .1 .25 .25]); stem(1.5+.5*randn(1,20)) set(a9,'YLim',[0 4],'XLim',[0 20],'XTick',[0:5:20],... 'XTickLabel',[-10:5:10],'FontSize',8); legend('Semnal aleator normal',2)

1.5 Impuls Dirac

1.5 Semnal treapta unitate

1.5 Semnal poarta

0.5

0.5

0.5

0 -10

-5

10

0 -10

-5

10

0 -10

-5

10

2 Semnal sinusoidal 1.5 1.4 1.2 1 1 0.8 0.5 0.6 0.4 0.2 -0.5 0 -0.2 0 0.001 0.002 -10 -5 0 5 10 0.2 0.6 0.8 Semnal sinc 1 Semnal exponential e-n

0.4

-1

10

15

20

3 Semnal putere 2 1
-0.5n

4 Semnal logaritm natural Semnal aleator normal 3.5 3

0.8

2.5 2 1.5 1

0.6

0.4

-1

0.2

-2

0.5 0 -10

10

15

20

-3

0.5

1.5

-5

10

n cazul ultimului semnal, s se verifice valorile mediei i dispersiei. Ce valoare are puterea semnalului ?

72

Secvene complexe S se genereze semnalul : x (n ) = K exp[c n ] , unde : K=2, c = 1 / 12 + j / 6 , n N si 0 n 40 .


c = -(1/12)+(pi/6)*i; K = 2; n = 0:40; x = K*exp(c*n); subplot(2,1,1); stem(n,real(x)); xlabel(' Index temporal n'); ylabel('Amplitudine'); title('Parte reala'); subplot(2,1,2); stem(n,imag(x)); xlabel(' Index temporal n'); ylabel('Amplitudine'); title('Parte imaginara');
Parte reala 2 Amplitudine 1 0 -1 -2

10

15

20 25 Index temporal n Parte imaginara

30

35

40

2 Amplitudine

-1

10

15

20 25 Index temporal n

30

35

40

Care este semnificaia prii reale i a prii imaginare a lui c ?


73

Secvene modulate S se genereze semnalul modulat n amplitudine :


y(n ) = (1 + m sin (2f b n )) sin (2f h n )

unde : m= 0.4, f b = 0.01, f h = 0.1 , n N si 0 n 100 .


n = 0:100 ; m = 0.4 ; fh = 0.1 ; fb = 0.01 ; xh = sin(2*pi*fh*n) ; xb = sin(2*pi*fb*n) ; y = (1+m*xb).*xh ; stem(n,y) ; grid ; xlabel(' Index temporal n') ; ylabel('Amplitudine');

1.5

0.5 Amplitudine

-0.5

-1

-1.5

10

20

30

40 50 60 Index temporal n

70

80

90

100

74

Reprezentarea secvenelor numerice 1D folosind seria Fourier n timp discret (SFTD) S se realizeze descompunerea n SFTD1D a unei serii de impulsuri periodice cu factorul de umplere 0,5. Motivul de baz va fi definit folosind 64 de eantioane. S se verifice apoi proprietile generale ale coeficienilor descompunerii n SFTD1D a unei secvene periodice, cu valori reale, pentru care:
c(1) = 1 N 1 1 N 1 n x (n + 1), c(N/2) = N x[n + 1] ( 1) , c N-k = c* k N n =0 n =0

x=[ones(1,32),zeros(1,32)];N=64; for k=0:N-1 c(k+1)=0; for n=0:N-1 c(k+1)=c(k+1)+x(n+1)*... exp(-j*pi*2*k/N*n); end c(k+1)=c(k+1)/N end stem(abs(c(1:N/2)))
0.5 0.45 0.4 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0

10

15

20

25

30

35

75

Teorema eantionrii 1. S se genereze un semnal de 0.5 s compus din suma a dou sinusoide de frecvene 100 Hz i 156 Hz cu amplitudinea de 1V. Se consider o frecven de eantionare de 256 Hz. Reprezentai semnalul sum. Comentai rezultatul. 2. S se genereze, s se reprezinte i s se compare dou sinusoide de frecvene 100 Hz i 356 Hz i amplitudinea de 1V. Se consider o frecven de eantionare de 256 Hz.
1.
t=(1:128); f1=100; f2=156;fe=256; y=sin(2*pi*f1/fe*t)+sin(2*pi*f2/fe*t); plot(t/fe,y); xlabel('timp (s)'); ylabel('amplitudine (V)')
x 10
-14

2 amplitudine (V)

-2

-4

-6 0

0.05

0.1

0.15

0.2

0.25 0.3 timp (s)

0.35

0.4

0.45

0.5

2.
t=(1:100); f1=100; f2=356; fe=256; y1=sin(2*pi*f1/fe*t); y2=sin(2*pi*f2/fe*t); subplot(211); plot(t/fe,y1); ylabel('amplitudine (V)'); title('sinusoida de frecventa 100 Hz')

76

subplot(212); plot(t/fe,y2); xlabel('timp (s)'); ylabel('amplitudine (V)'); title('sinusoida de frecventa 356 Hz')
sinusoida de frecventa 100 Hz 1 amplitudine (V) 0.5 0 -0.5 -1

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

sinusoida de frecventa 356 Hz 1 amplitudine (V) 0.5 0 -0.5 -1

0.05

0.1

0.15

0.2 timp (s)

0.25

0.3

0.35

0.4

Semnalul chirp Secvena MATLAB urmtoare analizeaz n domeniile temporal i frecvenial un semnal chirp, a crui frecven instantanee variaz ntre 0 i 5 MHz, pe o durat T = 10 s . Frecvena de eantionare utilizat este Fe = 50 MHz .
f0=0;ff=5e6; T=1e-5; beta=(ff-f0)*pi/T; Fe=5e7;t=0:1/Fe:T; x=cos(2*pi*f0*t+beta*t.^2); subplot(211),plot(t,x), xlabel('timp [s]'); ylabel('amplitudine [V]'); title('semnal temporal') X=abs(fft(x,1024)); subplot(212), plot([0:99]/Fe,X(1:100)) xlabel('frecventa [Hz]'); ylabel('amplitudine [V]'); title('spectrul semnalului')

77

semnal temporal 1 amplitudine [V] 0.5 0 -0.5 -1

0.2

0.4

0.6 timp [s] spectrul semnalului

0.8

1.2 x 10
-5

50 amplitudine [V]

40

30

20

0.2

0.4

0.6

0.8 1 1.2 frecventa [Hz]

1.4

1.6

1.8 x 10

2
-6

Transformata Fourier discret n timp discret (TFTD) S se elaboreze o funcie MATLAB pentru calculul TFTD a unei secvene finite, de lungime N, pentru N frecvene echidistante pe cercul unitate. S se utilizeze funcia creat pentru calculul TFTD a secvenei x[n ] = 0.88n n N=128 puncte.
function [H,W]=tftd(h,N) W=(2*pi/N)*[0:N-1]'; mid=ceil(N/2)+1; W(mid:N)=W(mid:N)-2*pi; W=fftshift(W); H=fftshift(fft(h,N));

Programul Matlab in care este apelata functia TFTD este urmatorul:


nn=0:40; xn=0.88.^nn; [X,W]=tftd(xn,128); subplot(211),plot(W/2/pi,abs(X)) xlabel('frecventa normalizata') ylabel('amplitudine [V]') subplot(212),plot(W/2/pi,180/pi*angle(X)) xlabel('frecventa normalizata') ylabel('faza [grade]')

78

10 amplitudine [V]

0 -0.5

-0.4

-0.3

-0.2

-0.1 0 0.1 frecventa normalizata

0.2

0.3

0.4

0.5

100 faza [grade] 50 0 -50 -100 -0.5

-0.4

-0.3

-0.2

-0.1 0 0.1 frecventa normalizata

0.2

0.3

0.4

0.5

Transformata Hilbert
2 n . Transformata sa Hilbert, notat N y[n ] , constituie partea imaginar a secvenei analitice: x[n ] + jy[n ] . S se

Fie secvena real: x[n ] = cos

determine transformata Hilbert a unui semnal cosinusoidal.


N=64;n=0:N-1; x=cos(2*pi/N*n); stem(x) ; y=hilbert(x); subplot(211);stem(real(y)); title('Semnalul real'); xlabel('n');ylabel('Amplitudine'); subplot(212);stem(imag(y)); title('Transformata Hilbert a semnalului'); xlabel('n'); ylabel('Amplitudine');

79

Semnalul real 1 Amplitudine 0.5 0 -0.5 -1

10

20

40 50 n Transformata Hilbert a semnalului

30

60

70

1 Amplitudine 0.5 0 -0.5 -1

10

20

30 n

40

50

60

70

Funcia pondere h[n ] a unui transformator Hilbert i funcia sa de transfer pot fi obinute astfel :
for nn=-31:1:32; h(nn+32)=2*pi./nn.*((sin(pi*nn/2)).^2); end h(32)=0;[H,f]=freqz(h); amp=20*log10(abs(H)); phase=unwrap(angle(H))*180/pi; subplot(311); stem(h); title('Functia pondere'); xlabel('n') subplot(312); semilogy(f,amp); xlabel('Pulsatie normalizata'); ylabel('Amplitudine (dB)'); grid subplot(313); plot(f,phase); xlabel('Pulsatie normalizata'); ylabel('Faza (grade)'); grid

80

Functia pondere 10 0 -10

10

20

30 n

40

50

60

70

Amplitudine (dB)

10 10 10

0.5

1.5 2 Pulsatie normalizata

2.5

3.5

Faza (grade)

0 -5000 -10000

0.5

1.5 2 Pulsatie normalizata

2.5

3.5

Funcia pondere a unui transformator Hilbert poate fi de asemenea obinut folosind:


h=remez(64,[0.1,0.9],[1,1], 'Hilbert');

Densitatea spectral de putere i transformata Fourier Reprezentai densitatea spectral de putere a unui semnal format din dou sinusoide de 50 Hz i 120 Hz i un zgomot aditiv, alb, gaussian, de medie nul i dispersie 4.
t=0:0.001:0.8; x=sin(2*pi*50*t)+sin(2*pi*120*t)+2*randn(1,length(t)); subplot(211);plot(x); title('Semnalul x(t)'); grid; X=fft(x,512); Px=X.*conj(X)/512; f=1000*(0:255)/512; subplot(212);plot(f,Px(1:256)); title('Densitatea spectrala de putere'); grid

81

Semnalul x(t) 10 5 0 -5 -10

100

200

300

400

500

600

700

800

900

Densitatea spectrala de putere 100

50

50

100

150

200

250

300

350

400

450

500

Proprieti ale transformatei Fourier S ve verifice proprietile de translaie (deplasare, decalaj) n timp i de modulaie ale transformatei Fourier. Se va considera semnalul:
n pentru n [1,8] x (n ) = 0 pentru n [9,16]

figure w = -pi:2*pi/255:pi; wo = 0.4*pi; D = 10; num = [1 2 3 4 5 6 7 8 9];

h1 = freqz(num, 1, w); h2 = freqz([zeros(1,D) num], 1, w); subplot(2,2,1) plot(w/(2*pi),abs(h1));grid title('Spectrul de amplitudine al secventei initiale') subplot(2,2,2)

82

plot(w/(2*pi),abs(h2));grid title('Spectrul de amplitudine al secventei decalate') subplot(2,2,3) plot(w/(2*pi),angle(h1));grid title('Spectrul de faza al secventei initiale') subplot(2,2,4) plot(w/(2*pi),angle(h2));grid title('Spectrul de faza al secventei decalate') figure w = -pi:2*pi/255:pi; wo = 0.4*pi; num1 = [1 3 5 7 9 11 13 15 17]; L = length(num1); h1 = freqz(num1, 1, w); n = 0:L-1; num2 = exp(wo*i*n).*num1; h2 = freqz(num2, 1, w); subplot(2,2,1) plot(w/(2*pi),abs(h1));grid title('Spectrul de amplitudine al secventei initiale') subplot(2,2,2) plot(w/(2*pi),abs(h2));grid title('Spectrul de amplitudine al secventei modulate') subplot(2,2,3) plot(w/(2*pi),angle(h1));grid title('Spectrul de faza al secventei initiale') subplot(2,2,4) plot(w/(2*pi),angle(h2));grid title('Spectrul de faza al secventei modulate')

83

Spectrul de amplitudine al secventei initiale Spectrul de amplitudine al secventei decalate 60 60

40

40

20

20

0 -0.5

0.5

0 -0.5

0.5

Spectrul de faza al secventei initiale 4 2 0 -2 -4 -0.5

Spectrul de faza al secventei decalate 4 2 0 -2 -4 -0.5

0.5

0.5

Spectrul de amplitudine al secventei initiale Spectrul de amplitudine al secventei modulate 100 100

50

50

0 -0.5

0.5

0 -0.5

0.5

Spectrul de faza al secventei initiale 4 2 0 -2 -4 -0.5

Spectrul de faza al secventei modulate 4 2 0 -2 -4 -0.5

0.5

0.5

84

Influena lungimii semnalului asupra spectrului estimat cu TFD S se studieze influena lungimii semnalului asupra spectrului su, estimat prin intermediul TFD. Se va considera un semnal sinusoidal de frecven 10 Hz, eantionat la 100 Hz. S se studieze apoi efectul procedeului de zero-paddding i cazurile n care numrul de perioade este ntreg sau nu.
t = 0:0.01:0.5-0.01; x = cos(20*pi*t); N = length(x) ; X = fft(x,N); fp = (0:N-1)/N/0.01; fp = fp - 1/2/0.01; stem(fp,fftshift(abs(X))); axis([ -1/(2*0.01) 1/(2*0.01) 0 25]); xlabel('frecventa (Hz)') ylabel('spectru de amplitudine')

25

20 spectru de amplitudine

15

10

0 -50

-40

-30

-20

-10 0 10 frecventa (Hz)

20

30

40

50

X = fft(x,20*N); N = length(X); fp = (0:N-1)/N/0.01; fp = fp - 1/2/0.01;

85

plot(fp,abs(fftshift(X))); axis([ -1/(2*0.01) 1/(2*0.01) 0 25]); xlabel('frecventa (Hz)') ylabel('spectru de amplitudine')


25

20 spectru de amplitudine

15

10

0 -50

-40

-30

-20

-10 0 10 frecventa (Hz)

20

30

40

50

t = 0:0.01:0.5-0.01-1/20; x = cos(20*pi*t); N = length(x); X = fft(x,N); fp = (0:N-1)/N/0.01; fp = fp - 1/2/0.01; plot(fp,abs(fftshift(X))); axis([ -1/(2*0.01) 1/(2*0.01) 0 25]); xlabel('frecventa (Hz)'); ylabel('spectru de amplitudine')

86

25

20 spectru de amplitudine

15

10

0 -50

-40

-30

-20

-10 0 10 frecventa (Hz)

20

30

40

50

Influena tipului ferestrei asupra spectrului estimat cu TFD a) S se genereze o sinusoid de amplitudine 1V, de frecven 100 Hz, eantionat la 256 Hz, n 32 de puncte. S se calculeze TFD n 1024 de puncte considernd succesiv o fereastr dreptunghiular, apoi triunghiular, Hamming, Hanning i Blackman. S se concluzioneze asupra rezoluiilor spectrale i dinamice.
t=(1:32);f1=50;Fe=256;Nfft=1024 ; y1=sin(2*pi*f1/Fe*t);sig=y1.*boxcar(32)' ; y_rect=abs(fftshift((fft(sig,Nfft)))); sig=y1.*triang(32)'; y_tria=abs(fftshift((fft(sig,Nfft)))); sig=y1.*hamming(32)' ; y_hamm=abs(fftshift((fft(sig,Nfft)))); sig=y1.*hanning(32)' ; y_hann=abs(fftshift((fft(sig,Nfft)))); sig=y1.*blackman(32)'; y_blac=abs(fftshift((fft(sig,Nfft)))); f=[-Fe/2:Fe/Nfft:(Fe/2-Fe/Nfft)];

87

subplot(511) semilogy(f(513:1024),y_rect(513:1024)); axis([0 128 1e-3 100]);grid legend('fereastra rectangulara',-1) subplot(512);semilogy(f(513:1024),y_tria(513:1024)); axis([0 128 1e-3 100]);grid legend('fereastra triangulaire',-1) subplot(513);semilogy(f(513:1024),y_hamm(513:1024)); grid;ylabel('amplitudine spectrala') axis([0 128 1e-4 100]);legend('fereastra Hamming',-1) subplot(514);semilogy(f(513:1024),y_hann(513:1024)); axis([0 128 1e-3 100]);grid ; legend('fereastra Hanning',-1) subplot(515);semilogy(f(513:1024),y_blac(513:1024)); axis([0 128 1e-3 100]);grid legend('fereastra Blackman',-1)

10

fereastra rectangulara

0 10 amplitudine spectrala
0

50

100 fereastra triangulaire

0 10
0

50

100 fereastra Hamming

0 10
0

50

100 fereastra Hanning

0 10
0

20

40

60

80

100

120 fereastra Blackman

50

100

b) S se genereze un semnal compus din suma a dou sinusoide de frecvene 100 i 94 Hz i de amplitudine 1V. Se va considera aceeai lungime a semnalului de 32 puncte, iar TFD va fi calculat tot n 1024 de
88

puncte.
t=(1:32); f1=94;f2=100 ; Fe=256;Nfft=1024 ; y1= sin(2*pi*f1/Fe*t)+ sin(2*pi*f2/Fe*t); sig=y1.*boxcar(32)' ; y_rect=abs(fftshift((fft(sig,Nfft)))); sig=y1.*triang(32)'; y_tria=abs(fftshift((fft(sig,Nfft)))); sig=y1.*hanning(32)' ; y_hann=abs(fftshift((fft(sig,Nfft)))); sig=y1.*hamming(32)' ; y_hamm=abs(fftshift((fft(sig,Nfft)))); sig=y1.*blackman(32)'; y_blac=abs(fftshift((fft(sig,Nfft)))); f=[-Fe/2:Fe/Nfft:(Fe/2-Fe/Nfft)]; subplot(511) plot(f(513:1024),y_rect(513:1024)); grid;axis([0 128 0 20]) legend('fereastra rectangulara',-1) subplot(512); plot(f(513:1024),y_tria(513:1024));grid; axis([0 128 0 7]) legend('fereastra triangulara',-1) subplot(513); plot(f(513:1024),y_hann(513:1024)); grid; axis([0 128 0 7]) legend('fereastra Hanning ',-1) ylabel('amplitudine spectrala') subplot(514); plot(f(513:1024),y_hamm(513:1024)); grid; axis([0 128 0 7]) legend('fereastra Hamming ',-1) subplot(515); plot(f(513:1024),y_blac(513:1024)); grid; axis([0 128 0 6]) legend('fereastra Blackman',-1) xlabel('frecventa (Hz)')

89

20 fereastra rectangulara 10 0 5 amplitudine spectrala 0 0 5 0 5 0 0 5 0 0 50 100 fereastra triangulara

50

100 fereastra Hanning

20

40

60

80

100

120 fereastra Hamming

20

40

60

80

100

120 fereastra Blackman

50 frecventa (Hz)

100

c) S se genereze semnalul urmtor n 32 de puncte :


100 74 x[n ] = sin 2 n + 0.1 sin 2 n 256 256

Reprezentai spectrul su utiliznd diverse ponderri i interpretai rezultatele.


t=(1:32);f1=74;f2=100 ;Fe=256;Nfft=1024 ; y1= 0.1*sin(2*pi*f1/Fe*t)+ sin(2*pi*f2/Fe*t); sig=y1.*boxcar(32)' ; y_rect=abs(fftshift(fft(sig,Nfft))); sig=y1.*triang(32)'; y_tria=abs(fftshift(fft(sig,Nfft))); sig=y1.*hanning(32)'; y_hann=abs(fftshift(fft(sig,Nfft))); sig=y1.*hamming(32)'; y_hamm=abs(fftshift(fft(sig,Nfft))); sig=y1.*blackman(32)'; y_blac=abs(fftshift(fft(sig,Nfft))); f=[-Fe/2:Fe/Nfft:(Fe/2-Fe/Nfft)]; subplot(511) plot(f(513:1024),y_rect(513:1024));grid;axis([0 128 0 20]) legend('fereastra rectangulara',-1) subplot(512);plot(f(513:1024),y_tria(513:1024));grid; axis([0 128 0 10])

90

legend('fereastra triangulaire ',-1) subplot(513);plot(f(513:1024),y_hann(513:1024));grid; axis([0 128 0 10]) legend('fereastra Hanning ',-1) ylabel('amplitudine spectrala') subplot(514);plot(f(513:1024),y_hamm(513:1024));grid; axis([0 128 0 10]) legend('fereastra Hamming ',-1) subplot(515);plot(f(513:1024),y_blac(513:1024));grid; axis([0 128 0 8]) legend('fereastra Blackman',-1); xlabel('frecventa (Hz)')
20 fereastra rectangulara 10 0 10 5 amplitudine spectrala 0 10 5 0 10 5 0 5 0 0 50 frecventa (Hz) 100 0 50 100 fereastra Blackman 0 20 40 60 80 100 120 fereastra Hamming 0 50 100 fereastra Hanning 0 50 100 fereastra triangulaire

91

Transformata cosinus discret 1D Generai o secven sinusoidal de 10 Hz, eantionat cu 1000 Hz. Calculai i vizuzalizai coeficienii descompunerii n DCT.
t=0:0.001:1; x=sin(2*pi*10*t); y=dct(x); stem(y(1:40));

15

10

-5

-10

-15

10

15

20

25

30

35

40

92

2. SISTEME N TIMP DISCRET SISTEME NUMERICE / DIGITALE

2.1. Introducere n general, noiunea de sistem poate avea nelesuri diferite, n funcie de punctul de vedere adoptat. Astfel, din punctul de vedere al teoriei generale a sistemelor, reprezentarea unui sistem din realitatea obiectiv se poate face prin: a) o mulime de elemente E; b) o mulime de relaii (sau interaciuni) interne Ri ntre elementele mulimii E; c) o mulime de relaii externe Re ntre elementele mulimii E i elementele mediului nconjurtor. n cadrul interaciunilor sistemului cu mediul se pot pune n eviden intrrile ca - relaii avnd cauza n mediu i efectul n sistem i ieirile sistemului - ca relaii externe, care au cauza n sistem i efectul n mediu; d) cele trei mulimi E, Ri i Re au un caracter dinamic, variabil n timp (continuu sau discret); e) finalitatea sau scopul sistemului, care conduce la individualizarea fiecrui sistem. De exemplu, scopul unui sistem electric poate fi: generarea, msurarea, transmiterea sau recepia semnalelor electrice - funciuni care pot fi interpretate c se realizeaz prin prelucrarea semnalelor. Exprimndu-se sintetic, n [9] se definete c "sistemul reprezint o colecie de elemente ntre care exist anumite relaii de interdependen, subordonate unui anumit scop. Referindu-se la sistem electric, n [10] se definete sistemul ca "o mulime de circuite interconectate astfel nct se pot identifica perechi de borne numite pori de intrare i perechi de borne numite pori de ieire".

93

2.2. Prelucrarea semnalelor n timp discret n figura de mai jos se prezint locul unui sistem de prelucrare numeric n cadrul unui lan de prelucrare a unor semnale analogice.
xa(t) CONVERSIE A/D -eantion xa(nT) -cuantizare x[n] SISTEM (numeric) n timp discret y[n] CONVERSIE D /A (+filtrare) ya(t)

n continuare, n fig. 2.1 sunt ilustrate, n domeniile timp i frecven, etapele de conversie a unui semnal analogic x a (t ) ntr-un semnal numeric x[n]:
xa(t) Xa()

t xe(t)=xa(nT)
1 T

0 X e()

t=nT

x[n]

X e()
1 T

n 0 1 2 3 4 5 6 7 8 9 n

Figura 2.1 94

Legtura dintre semnalul eantionat xe (t ) i semnalul analogic x a (t ) , n domeniul timp i frecven, este dat de relaiile:

xe (t ) =

n =

xa (nT ) (t nT )
2

X e () =

1 + X a ( k e ); (2.1) k =

unde: e =
Dar:

X e () = xa (nT )e jnT
(n)

(2.2)

iar: cum : rezult c:


Deci :

X ( ) =

x[n] = xa (nT )
X ( ) = xa (n )e jn
( n)

( n = )

x[n] e j n

X ( ) = X e ( ) T adic, rezult conversiile: 1 t = nT nT = n T = T


2.3. Modelarea matematic a sistemelor numerice

(2.3)

Metodologia de elaborare a modelului asociat unui sistem const n descrierea elementelor i relaiilor (sau interaciunilor) interne i externe ale sistemului cu ajutorul unor parametrii asociai strilor acestora, care s reflecte att structura ct i comportarea dinamic a ntregului sistem. n analiza sistemic se caut metode care s descrie sisteme de cele mai diferite naturi prin aceleai relaii matematice. n cazul sistemului electric n timp discret din figura 2.1., interaciunea dintre semnalul de la intrare x [ n ] i cel de la ieire y [ n ] este modelat matematic prin intermediul unui operator N{

} astfel nct, relaia dintre intrare i ieire se exprim prin:

x [ n ] y [ n ] = N { x [ n ]}
95

(2.4)

n relaia (2.4) s-a considerat c x [ n ] i y [ n ] sunt funcii semnal definite n timp discret. Ca i n cazul semnalelor numerice, variabilele independente ce caracterizeaz un sistem numeric pot s fie spaiale sau de alt natur tehnic. Un sistem numeric unidimensional (notat cu SN1 D ) transform ntrun sens dorit o secven unidimensional x[n] aplicat la intrare, n secvena y[n] de la ieirea sa. Dac valorile secvenelor sunt codate (de exemplul binar), transformarea realizat de sistem poate fi reprezentat printr-un algoritm implementat ntr-un calculator numeric (sau digital). n acest sens se spune c un calculator numeric poate fi considerat ca subsistem al sistemelor n timp discret. Noiunea de sistem numeric este asociat i cu faptul c secvenelor de numere de la intrarea i ieirea sa sunt prelucrate n timp cu un anumit tact. Acest lucru impune ca prelucrarea de ctre sistemul numeric (de calcul) a unei valori a secvenei de la intrare s se fac n cel mult intervalul de timp corespunztor tactului n care sosesc datele (la intrare). Cu aceste considerente, apare evident c noiunea de calculator numeric este concretizarea tehnic a noiunii de sistem n timp discret, care, n fond, este modelul matematic. Cu toate acestea, cele dou noiuni se folosesc adesea una n locul alteia, lsnd cititorul s aleag reprezentarea convenabil.

Vom nota cu SN un procesor de semnale numerice cu o intrare i o ieire, reprezentat n figura de mai jos i prin N{ }, un operator de prelucrare n timp discret.
x[n]

SN

y[n]

x[n]

N {}

y[n] =

N {x[n]}

Figura 2.2 De exemplu, un SN care realizeaz o ntrziere cu n0 , precum i utilizarea acestui sistem de ntrziere n cadrul unui circuit numeric sunt ilustrate n figura de mai jos:
96

x[n]

ntrzie cu n0

y[n] = x[n-1]

x[n]

+
ntrzie cu 1

y[n]

b
Figura 2.3 Circuitul numeric din figur este caracterizat de relaia n timp discret:
y[n] = ax[n] + by[n 1]

2.4. Proprieti generale ale sistemelor numerice (SN) 2.4.1. SN Liniar

Un sistem numeric unidimensional este liniar dac operatorul su N{ } prezint proprietatea de aditivitate i omogenitate, adic, dac:

N ai xi [ n ] = ai yi [ n ] (i ) (i )
unde:
yi [ n ] = N { xi [ n ]} , iar ai

(2.5)

Sistemul numeric definit de relaia y [ n ] = ( x [ n ]) nu este liniar,


2

97

deoarece, dac:

y1 [ n ] = ( x1 [ n ])

i y 2 [ n ] = ( x2 [ n ])
2

rezult c: N { x1[n] + x2 [n]} = ( x1 [ n ] + x2 [ n ]) y1 [ n ] + y2 [ n ] Proprietatea de liniaritate presupune i c unui semnal nul aplicat la intrare i corespunde un semnal nul la ieire. De exemplu, sistemul numeric caracterizat de relaia y [ n ] = 2 x [ n ] + 3 nu ndeplinete aceast condiie i, deci, nu este liniar n sensul definiiei de mai sus. n concluzie, dac: x1 [n] y1[n] = N {x1 [n]} x2 [n] y2 [n] = N {x2 [n]} Pentru un SN liniar rezult c:

x1 [ n ] + x2 [ n ] y1 [ n ] + y2 [ n ]
Reamintim c n contextul acestei definiii rezult c dac un SN este liniar, atunci: a) SN este aditiv b) SN este omogen c) iar pentru x[n] = 0 y[n] = 0 De exemplu, SN (care ntrzie cu un tact) din figura de mai jos este liniar:
x[n] ntrzie cu 1 x[n-1]

Figura 2.4

deoarece:

2 x[n] y[n] = 2 x[n 1] x[n] + 2 x[n] x[n 1] + 2 x[n 1]......

98

2.4.2. SN Invariant

Un sistem numeric al crui rspuns este y [ n ] cnd la intrarea sa se aplic x [ n ] este invariant, dac rspunsul su va fi y [ n n0 ] cnd la intrarea sa se va aplica x [ n n0 ] . n cazul sistemelor numerice n timp discret, rezult proprietatea de "invarian n timp (discret)", iar n cazul n care variabila "n" corespunde unei alte mrimi fizice discrete, sistemul numeric va avea proprietatea de invarian n raport cu deplasarea sau translaia (n-n0) a variabilei independente n. De exemplu, sistemul numeric caracterizat de relaia y [ n ] = sin n0 este un sistem invariant (n timp

discret), dar sistemul numeric caracterizat de relaia y [ n ] = nx [ n ] nu este un sistem numeric invariant, deoarece, n acest caz, dac pentru x1 [ n ] se obine y1 [ n ] = nx1 [ n ] , n schimb pentru x1 [ n n0 ] se obine:
y2 [ n ] = nx1 [ n n0 ] y1 [ n ] .
n r =0

Sistemul

numeric

definit

de

relaia

y [ n ] = x [ r ] este linar dar nu corespunde unui sistem invariant, deoarece:

x [ r n0 ] =
r =0

n n0 r = n0

x [r ]

n n0 r =0

x [r ] = y [n n ]
0

n concluzie, dac :

x[n] y[n] = N {x[n]}

(2.6)

pentru un SN invariant rezult c: x[n n0 ] y[n n0 ] = N {x[n n0 ]}


2.4.3. SN cu / fr memorie

Un sistem numeric se numete "fr memorie" dac rspunsul su y [ n ] la un moment nZ depinde doar de valoarea semnalului x [ n ] aplicat la intrarea sa la acel moment. De exemplu, sistemul numeric caracterizat de relaia y [ n ] = 3 x [ n ] este un sistem numeric fr memorie, pe cnd sistemul numeric caracterizat de relaia y [ n ] = x [ n k ] un sistem cu memorie.
k =0 N

99

2.4.4. SN Cauzal

Un sistem numeric este cauzal (sau nonanticipativ) dac rspunsul su y [ n ] , pentru orice n, depinde doar de valoarea semnalului de la intrare
x [ n ] la acel moment i, eventual, la momente (n-k) anterior acestuia. De

exemplu, sistemul numeric definit de relaia: y [ n ] = x [ n ] x [ n 1] este un sistem numeric cauzal, pe cnd sistemul caracterizat de relaia: y [ n ] = x [ n ] x [ n + 1] este necauzal (sau noncauzal).

n concluzie, dac : x[n] cauzal y[n] = N {x[n]} este tot cauzal. n contextul acestei definiii, pentru x[n]= [n] h[n] = N { [n]} adic, rspunsul pondere al sistemului este tot cauzal.
2.4.5. SN Stabil

Un sistem numeric este stabil, dac aplicndu-i la intrare un semnal (de modul) mrginit rezult la ieire tot un semnal (de modul) mrginit, adic, dac ncepnd cu un moment dat, pentru x [ n ] M x < rezult i
y [ n ] M y < . Adic, dac: x[n] , care are proprietatea x [ n ] < Bx n n0 , rezult i y[n] cu proprietatea y [ n ] < By pentru n no

Un sistem numeric cauzal i stabil corespunde unui sistem fizic realizabil.


2.5. Analiza SNLI

Un SN poate fi modelat de un operator N { } , astfel c:


x[n]

N {}
Figura 2.5

y[n] =

N {x[n]}

n general, un SNLI poate fi caracterizat de secvenele de intrareieire i transformatele lor, asa cum se prezint n figura de mai jos:
100

x[n] X ( ) X [k ] X (z )

y [ n] = ( x h ) [ n]

SNLI

Y ( ) = X ( ) H ( ) Y [k ] = X [k ] H [k ] Y (z ) = X (z ) H (z )

n domeniul timp, pentru un SNLI, relaia intare-ieire este definit de relaii liniare ntre x[n] i y[n]:
y [ n ] = bi x [ n i ] ai y [ n i ] = {b0 x [ n ] + b1 x [ n 1] + K + bM x [ n M ]} {a1 y [ n 1] + K + aN y [ n N ]} iar funcia de transfer H(z) a SNLI este definit de fracia raional: Y ( z ) b0 + b1 z 1 + b2 z 2 + K + bM z M H (z) = = X ( z ) a0 + a1 z 1 + a2 z 2 + K + aN z N =
pentru a0 =1 i =0 i =1 M N

(2.7)

b z
i =0 N i i =1

1 + ai z i

(2.8)

2.5.1 Rspunsul pondere al SNLI la excitaia particular [n]

O clas larg de sisteme numerice unidimensionale este caracterizat de operatori liniari i invariai. Se numete rspuns (sau funcie) pondere, h [ n ] al unui SNLI , rspunsul su la secvena impuls unitate [ n ] , adic: h [ n ] = N { [ n ]} ceea ce, conform proprietii de invarian, implic i c: (2.9)

h [ n n0 ] = N { [ n n0 ]} , n, n0 Z

(2.10)

Un semnal numeric oarecare x [ n ] aplicat la intrarea unui SNLI, poate fi exprimat cu ajutorul impulsurilor Dirac sub forma:
101

x [ n] =
astfel c rspunsul calculat cu relaia:

r =

x [r ] [n r ]

(2.11) poate fi

y [ n ] al SNLI la secvena oarecare x [ n ]

= x [ r ] N { [ n r ]} = x [ r ] h [ n r ]
(r ) (r)

y [ n ] = N x [ r ] [ n r ] = (r )

(2.12)

= x [ n] h [ n] = ( x h ) [ n]
Adic, rspunsul y [ n ] al unui SNLI la o excitaie oarecare x [ n ] se obine calculnd convoluia dintre x [ n ] i funcia pondere h [ n ] ce caracterizeaz sistemul. O prim proprietate comutativitatea, astfel nct: a relaiei de convoluie (2.12) este

not

y [ n] = x [ n] h [ n] = h [ n] x [ n]

(2.13)

ntr-adevr, prin schimbarea de variabil n r = l n relaia (2.12), se obine:

y [ n] =

r =

x [ r ] h [ n r ] = x [ n l ] h ( l ) = h [ n] x [ n]
l =

(2.14)

O alt proprietate a operaiei de convoluie este asociativitatea, ilustrat de relaia:

x [ n ] ( h1 [ n ] h2 [ n ]) = ( x [ n ] h1 [ n ]) h2 [ n ]

(2.15)

Aceast proprietate este util pentru calculul unui sistem constituit dintr-o cascad de subsisteme caracterizate individual de rspunsurile lor la impulsul unitate, aa cum este ilustrat n figura 2.6.

102

x[n]

h1[n]

h2[n]

h1[n]*h2[n y[n] x[n] ]


Figura 2.6

y[n]

A treia proprietate a operaiei de convoluie este distributivitatea fa de adunare, potrivit creia:

x [ n ] ( h1 [ n ] h2 [ n ]) = x [ n ] h1 [ n ] + x [ n ] h2 [ n ]

(2.16)

Utilizarea acestei proprieti pentru calculul rspunsului unui sistem numeric este ilustrat n figura 2.7.

h1[n] x[n] h2[n]


y[n] = x[n] *h1[n] + x[n] *h2[n] = x[n] *(h1[n] + h2 [n]) Figura 2.7 Proprietile generale ale SNLI , prezentate n paragraful 2.4, pot fi interpretate ca restricii ale funciei pondere h [ n ] , ilustrnd faptul c aceast funcie caracterizeaz complet comportarea sistemului. Astfel, un SNLI este stabil dac, ncepnd de la un moment "n" dat, pentru un semnal de intrare mrginit : x [ n ] M x < rezult i la ieire un semnal de modul mrginit, adic: y [ n ] M y < . ns, innd cont de relaia de convoluie (2.14) rezult c:
+

y[n]

h1[n]+h2[n]

y [ n] =

r =

h [r ] x [n r ]
103

r =

h [r ] x [n r ]

(2.17)

Deoarece x [ n ] M x , rezult i x [ n r ] M x , astfel c relaia

(2.17) devine:
y [ n] M x
r =

h [r ]

(2.18)

Pentru ca y [ n ] M y < este suficient ca suma din membrul drept al relaiei (2.18) ca fie finit. Rezult c un SNLI este stabil dac:

n =

h [ n] M

<

(2.19)

De exemplu, un acumulator (sau sumator) numeric este caracterizat de relaia:


y [ n] =
r =

x [r ]u [n r ]
+

Astfel c funcia pondere h [ n ] a acestui sistem este: h [ n ] = u [ n ] n consecin, deoarece:


n =

h [ n] = u [ n] = u [ n]
n = n=0

rezult c acumulatorul numeric nu este un SNLI stabil. Un SNLI este cauzal dac rspunsul su y [ n ] nu va depinde dect de semnalul excitaie
x [ r ] pentru r n, adic doar pentru (r-n) 0 . n

consecin, conform relaiei (2.12), aceast condiie se ndeplinete dac:


h [ n ] = 0 pentru n<0

(2.20)

De exemplu, sistemul numeric " cu medie mobil ", definit de relaia intrare - ieire:
y [ n] =
+M2 1 x [n r ] M 1 + M 2 + 1 r = M1

are funcia pondere:


104

M +1 +1 +M2 1 1 M2 h [ n] = [n r ] = 0 , in rest M 1 + M 2 + 1 r = M1

i este cauzal, conform relaiei (2.20) doar dac M 1 0 i M 2 0 Un SNLI este " fr memorie " numai dac rspunsul su pondere h [ n ] este de forma:
h [ n] = K [ n]

(2.21)

unde h [ 0] = K este o constant. n acest caz, conform relaiei (2.12) rezult c:


y [ n ] = x [ n ] ( K [ n ]) = K ( x [ n ] [ n ]) = Kx [ n ]

(2.22)

adic, rspunsul la un moment dat "n" va depinde doar de excitaia x [ n ] la acel moment. n concluzie, dac la intrarea SN se aplic un impuls Dirac [n] , la ieirea sistemului va rezulta rspunsul su pondere, notat cu h[n] , aa cum este ilustrat n figura de mai jos:

[n] N { } h[n] = N { [n]}


Figura 2.8 Datorit principiului invariaiei, rezult c: h[n k ] = N { [n k ]} Iar, deoarece o secven oarecare se poate reprezenta prin :
x[n] = x[k ] [n k ]
(k )

rezult c rspunsul SNLI la o secven oarecare x[n] este dat de relaiile:


105

y[n] = N {x[n]} = N x[k ] [n k ] (k ) = x[k ]N { [n k ]} = x[k ] h[n k ] = x[n k ] h[k ] = (x h )[n]


(k ) (k ) (k )

Deci, n general, raspunsul y[n] al unui SN caracterizat de funcia pondere h[n], la o excitaie oarecare x[n], este dat de relaia de convoluie ntre semnalul de la intrare i rspunsul pondere al sistemului, conform relaiei:

y [ n] = ( x h ) [ n]

(2.23)

Exemplu de rspuns al unui excitaie x[n] oarecare.

SNLI

caracterizat de h[n]

la o

Fie un SN cu rspunsul pondere:


h[n]

,n =0 1 h[n] = 0,5 , n = 1 0 , n > 1 i excitaia x[n] aplicat la intrarea sa:


1 1 x[n] = 0,5 0

1 0,5

n
-2 -1 0 1 2 3 4 5

x[n]
1 0,5

,n = 0 ,n =1 ,n = 2 , n 3
-2

n
-1 0 1 2 3 4 5

-1

106

Conform relaiei generale:

y [ n ] = h [ k ]x [ n k ]
k =0

rezult c pentru: n=0 n =1 n=2 n=3 n4

y[0] = h[0] x[0] = 1 y[1] = h[0] x[1] + h[1] x[0] = 1 0,5 = 0,5 y[2] = h[0] x[2] + h[1] x[1] = 1 0,5 + 1 0,5 = 1 y[3] = h[1] x[2] = 0,5 0,5 = 0,25 y[n] = 0

2.5.2. Rspunsul indicial al SNLI la secvena u[n]

Se numete rspuns indicial notat cu r[n] (sau, uneori, cu g [ n ] ), rspunsul unui SNLI la secvena treapt unitate u [ n ] , adic:
r [ n ] = N {u [ n ]} = N [ n k ] = N { [ n k ]} = h [ n k ] k =0 k =0 k =0

(2.24)

Conform relaiei (2.24) rezult c ntre rspunsul pondere i rspunsul indicial al unui SNLI exist o legtur i c rspunsul r[n] exist dac suma:

h [ n k ] este convergent.
k =0

Altfel spus, dac la intrarea unui SNLI se aplic o secven treapt unitate u[n], rezult la ieirea sa, rspunsul indicial g[n], aa cum este ilustrat n figura de mai jos.
u[n] N { } g [n] = N {u[n]}

[n]
1

u[n]

Deoarece :
-2

n
-1 0 1 2 3 4 5

107

u[n] = k =0 [n k ]

rezult c rspunsul indicial g[n] al SNLI este:


g [n] = N

k =0

[n k ] = k =0 N { [n k ]} = k =0 h[n k ]

g [n] = k =0 h[n k ]

(2.25)

Cum :

[n] = u[n] u[n 1]

rezult c rspunsul pondere h[n] al SNLI este:


h[n] = N { [n]} = N {u[n] u[n 1]} = N {u[n]} N {u[n 1]} = g [n] g [n 1]

Deci, n general, ntre rspunsul pondere h[n] i rspunsul indicial g[n] ale unui SNLI exist relaia: h[n]=g[n]-g[n-1]
Exemplu de rspuns indicial al unui SNLI

(2.26)

Dac un SNLI are rspunsul pondere h[n] dat mai jos:


h[n]

,n =0 1 h[n] = 0,5 , n = 1 0 , n > 1

1 0,5

n
-2 -1 0 1 2 3 4 5

rezult c rspunsul indicial: g [n] = k =0 h[n k ] are valorile: pentru n = 0 n =1

g [0] = h[0] = 1 g [1] = h[1] + h[0] = 1,5


108

n=2 n=3

g [2] = h[2] + h[1] + h[0] = 1,5 g [3] = h[3] + h[2] + h[1] + h[0] = 1,5

Aceste rezultate sunt reprezentate grafic n figura de mai jos:


g[n]
1,5 1

n
-3 -2 -1 0 1 2 3 4 5 6 7

2.5.3 Rspunsul SNLI la secvena exponenial complex

Rspunsul SNLI la un semnal exponenial complex de forma:


n x [ n ] = z0 cu z0

(2.27)

este dat de relaia:

y [ n ] = N { x [ n ]} = h [ n ] x [ n ] = =
+ +

r =

h [r ] x [n r ]
(2.28)

r =

h [ r ]z0nr = z0n h [ r ]z0 r = z0n H ( z0 )


r =

adic, rspunsul x [ n ] este tot un semnal exponenial complex, egal cu semnalul de excitaie multiplicat cu funcia H ( z0 ) . Dac z0 = e j0 , atunci x [ n ] =e j0 ,care este o secven periodic cu perioada fundamental N = 2 / 0 . n consecin, rspunsul SNLI la aceast secven exponenial va fi , conform relaiei (2.28), egal cu
e
j0n

H e

( ).
j0

Altfel spus, dac la intrarea unui SNLI se aplic o secvena exponenial complex, rezult c:

109

y[n] = h[k ]x[n k ] = h[k ] e j0 (nk )


(k ) (k )

= h[k ] e j 0n e j0k
(k )

= e j0n h[k ] e j0k (k ) 14 244 4 3


H e j 0

Astfel c :
y[n] = e j0n H e j0

( )

(2.29)

Exemplu de calcul al rspunsului SNLI la o exponenial complex


Un SNLI caracterizat de rspunsul pondere:
,n = 0 1 h[n] = 0,5 , n = 1 0 , n > 1
1 0,5

h[n]

n
-2 -1 0 1 2 3 4 5

are funcia de transfer: :


H ( e j ) = TFTD {h [ n ]

} = h [ n] e
(n)
j

j n

= h[0] + h[1] e

= 1 + 0,5e

Rspunsul SNLI la secvena x[n] = e j0n este dat de relaia:


y [ n ] = e j0n H e j0

= e j0 n 1 + 0,5e j0
110

2.5.4 Rspunsul SNLI la secvene periodice


% Pentru o secven periodic x [ n ] reprezentat prin seria Fourier n

timp discret:
% x [ n ] = ck e
k =0 N 1
jn0k

(2.30)

% rezult c rspunsul unui SNLI va fi tot o secven periodic y [ n ] de

forma:
% y [ n ] = ck e
k =0 N 1
jn0k

H e

( ) = c e
j0k

N 1 k =0

jn

2 k N

jNk H e
2

(2.31)
~

Deci, dac la intrarea unui SNLI se aplic o secven x[n] periodic, la ieirea sistemului rezult tot o secven periodic (de amplitudine diferit), aa cum este ilustrat n figura de mai jos.
x[n]
~

SNLI y[n] h[n] H ( j )

Figura 2.9
2.6 Reprezentarea SNLI prin ecuaii cu diferene finite

Pentru SNLI relaia dintre semnalul de la intrare x [ n ] i cel de la ieire y [ n ] poate fi exprimat printr-o ecuaie liniar cu diferene finite i coeficieni constani de forma:

a y [ n i ] = b x [ n i ]
i =0 i i =0 i

(2.32)

unde: ai bi iar M N .
111

Explicitnd n relaia (2.32) pe y [ n ] se obine:


y [ n] =
N 1 M bi x [ n i ] ai y [ n i ] a0 i =0 i =1

(2.33)

Dac nu toi ai

( i = 1, 2,..., N )

sunt nuli, relaia (2.33) caracterizeaz

un SNLI recursiv de ordinul N, adic y [ n ] se calculeaz n funcie de valorile semnalului aplicat la intrare x [ n i ] , i = 0,1,..., M i de valorile anterioare (momentului y [ n i ] , cu i=1,2,...,N. calculului) ale semnalului de la ieire

Comparnd relaia (2.33), care caracterizeaz un SNLI de tip recursiv cu relaia:


y [ n] =
i =

h [i ] x [ n i ]

(2.34)

rezult c rspunsul pondere h [ n ] care caracterizeaz un SNLI recursiv are forma (recursiv) general:
h [ n] =
N 1 bn ai h [ n i ] a0 i =1

(2.35)

cu condiia (de stabilitate) h [ n ] =0 pentru n<0. Iat civa termeni ai secvenei pondere { h [ n ] } calculai cu relaia (2.35):
h [ 0] = h [1] = h [ 2] = b0 a0 b1a0 b0 a1 2 a0 b2 1 ( a1h [1] + a2 h [ 0]) a0 a0 bM 1 N ai h [ M i ] a0 a0 i =1
112

(2.36)

............................................
h[M ] =

Dac toi ai = 0, i = 1, 2,..., N , relaia (2.33) devine:


y [ n] =

1 a0

b x [n i]
i =0 i

(2.37)

i caracterizeaz un SNLI de tip nerecursiv, pentru care valorile semnalului de la ieire y [ n ] se calculeaz numai n funcie de valorile semnalului aplicat la intrare. Comparnd relaia (2.37) cu relaia (2.34) rezult c rspunsul pondere h [ n ] , care caracterizeaz un SNLI de tip nerecursiv, are forma general:
bn a0 h [ n] = 0
pentru n=0,1,2,...,M , in rest

(2.38)

Deoarece, conform relaiei (2.38) secvena pondere h [ n ] are un numr finit de termeni, se spune c SNLI de tip nerecursiv au un Rspuns Finit la Impulsul unitate (RFI)1 Ecuaia liniar cu diferene finite i coeficieni constani (2.32) are soluia general de forma:
y [ n ] = y1 [ n ] + y f [ n ]

(2.39)

unde, soluia " de regim liber " - notat cu y1 [ n ] se obine din ecuaia omogen cu diferene finite:

a y [n i] = 0
i =0 i

(2.40)

Soluia y1 [ n ] a ecuaiei (2.40) are forma general:


1

n limba englez "Finite Impulse Response"(FIR)

113

n y1 [ n ] = Am zm m =1

(2.41)

unde: zm sunt soluiile ecuaiei caracteristice

a z
i =0 i

=0

(2.42)

iar Am se determin din condiiile iniiale impuse sistemului.

Soluia " de regim forat " y f [ n ] corespunde rezolvrii ecuaiei cu

diferene finite (2.32) i va corespunde unui anumit tip de secven x [ n ] aplicat la intrarea sistemului.

2.7. Analiza SNLI n planul variabilei z


Relaia intrare-ieire, corespunztoare unui SNLI, poate fi caracterizat i n planul variabilei transformate z, cum este ilustrat mai jos:
x[n] X(z)=Z{x[n]} y[n] Y(z)=Z{y[n]}

SNLI

ntre secvenele x[n] i y[n] ale unui SNLI exist relaii liniare de forma :
a0 y[n] + a1 y[n 1] + ... + a N y[n N ] = b0 x[n] + b1 x[n 1] + ... + bM x[n M ]

unde, de exemplu, ai, bi R iar M N, deoarece rspunsul nu poate precede excitaia. Aplicnd transformata Z relaiei de mai sus rezult:
a + a z + a z + ... + a z b + b z + b z + ... + b z (1444442444443) Y ( z ) = (1444442444443) X ( z )
1 2 N 1 2 M
0 1 2 N 0 1 2 M A( z ) B( z )

Se definete funcia de transfer :


114

H (z ) =

Y ( z ) Z { y[n]} B( z ) = = = X ( z ) Z {x[n]} A( z )

b z a z
i =0 i i =0 N i

(2.43)
i

Astfel, rspunsul SNLI poate fi evaluat n planul variabilei z aa cum este ilustrat n figura de mai jos:
x[n] X(z)

SNLI h H
Figura 2.10
Y(z)=X(z)H(z)

Exemplu de analiz a unui SNLI n planul Z


Fie sistemul numeric din figura :
x[n]

z-1 b

y[n]

Deoarece: y [ n ] = a x [ n ] + b y [ n 1] rezult c: Y ( z ) = a X ( z ) + b z 1Y ( z ) i: Y ( z ) 1 bz 1 = a X ( z )

n consecin, funcia de transfer a SN din figura de mai sus este dat de relaia:
H (z ) = Y ( z) a = X ( z ) 1 bz 1

S calculm rspunsul acestui SNLI la secvena:


115

x[n] = n u[n]

cu 0 < < 1

Transformata Z a secvenei x[n] este :


1 z X (z ) = Z {x[n]} = n z n = = = z n =0 n =0 z 1 z Transformata Z a rspunsului va fi dat de relaia : a a z z a z b + b Y ( z ) = H ( z )X ( z ) = = z b 1 bz 1 z z n

Rspunsul y[n] al SNLI va fi: y [ n ] = Z 1 {Y ( z )} = a n a n u[n] b u[n] + b b

EXEMPLU: Se d SNLI din figura de mai jos:

n timp discret, relaia ntre x[n] i y[n] este dat de: y[n] = x[n] + x[n 1] Aplicnd transformata Z ambilor membri, se obine : Y (z ) = X ( z ) + z 1 X (z ) Rezult funcia de transfer a SNLI din figura de mai sus este: H (z ) = Y (z ) = 1 + z 1 X (z )
116

Rspunsul pondere al SNLI este :


h[n] = Z 1 {H ( z )} = 1 [n] + 1 [n 1]

Rspunsul n frecven al SNLI se obine din :


H (z ) z = e j H e j = 1 + e j = (1 + cos ) j sin

( )

de unde :

H e j

( ) = (1 + cos )
2

+ sin 2 = 2 + 2 cos

a crui reprezentare grafic este:

|H|2
4 2

3
2

EXEMPLU: Se d SNLI cu structura din figura de mai jos


n timp discret, relaia ntre x[n] i y[n] este dat de:

1 1 1 x[n] + x[n 1] + y[n 1] 3 3 3 Aplicnd transformata Z ambilor membri, se obine :


y[n] =
117

Y (z ) =

1 1 1 X (z ) + z 1 X (z ) + z 1 Y (z ) 3 3 3

Rezult funcia de transfer a SNLI dat:


1 1 1 + z Y (z ) 3 3 1 + z 1 z +1 = = H (z ) = = 1 X ( z ) 1 1 z 1 3 z 3z 1 3 Dac la intrare se aplic x[n] = [n] , atunci, la ieire, se obine:

1 1 1 y[n] = [n] + [n 1] + y[n 1] cu: y[ 1] = 0 3 3 3 care constituie rspunsul pondere pentru SNLI dat. Pentru n = 0,1,2,3, se obine: 1 1 n = 0 y[0] = [0] = 3 3 1 1 4 1 1 n = 1 y[1] = 0 + 1 + = 2 3 3 3 3 3 1 1 1 4 4 n = 2 y[2] = 0 + 0 + 2 = 3 3 3 3 3 3 1 1 4 1 1 n = 3 y[3] = 0 + 0 + 3 = 4 3 3 3 3 3 K
2.8. Analiza SNLI n frecven

Secvenele x[n] i y[n] de la intrarea i, respectiv, de la ieirea SNLI pot fi reprezentate n domenii transformate, aa cum se prezint n figura de mai jos: x[n]

SNLI
118

y[n]

X (e j ) X [k ] X (z ) de unde, se obine: H ( z ) z = e j H (e j )

Y (e j ) = X (e j ) H (e j ) Y [k ] = X [k ] H [k ] Y (z ) = X (z ) H (z )

Relaia de mai sus se obine dac cercul unitate din planul Z este cuprins n Regiunea de Convergen (RdC) a funciei H(z), adic:

{z

( z = 1)} RdC

(2.44)

Pentru N valori echidistante pe cercul unitate se obine:


jk 2 H ( z ) z =e jk 2N H e N = H [ k ] , k = 0, N 1

(2.45)

Relaia intrare-ieire a unui SNLI poate fi apreciat i n domeniul frecven, conform relaiilor de pe figur:

x[n] X(e )=F D{x[n]}


j

SNLI h H

y[n]=x[n]*h[n] X(e )=F D{y[n]}


j

Figura 2.11 Rezult funcia de transfer:

He

yn } ( ) = Y ((ee )) = TFTD{x[[n]] } TFTD{ X


j j j

(2.46)

Caracterizarea unui SNLI n planul complex Z, ilustrat mai jos,


119

jFm{z}

Regiunea de stabilitate pentru poli


-1

+j

Plan complex z

Re{z}

-j

Figura 2.12 conduce la relaiile: unde:

( ) H (e ) = H (e ) e (
H ( z ) z = e j H e j
j j

j )

(2.47)

n ultima relaie, H ( e j ) este funcia modul, iar ( ) = arg{H ( j )} este funcia de faz a SNLI.
Exemplu de analiz n frecven a unui SNLI

Fie SN din figur:


y[n]

x[n]

z-1
0,5

Din analiza SN din figur rezult c:


120

H (z) =

Y ( z) 1 a a =1 = 1 X ( z ) 1 bz 1 0,5 z 1 b = 0,5

Pentru z = e j rezult c:
H ( e j ) = 1 1 = j 1 0,5e 1 0,5cos + j 0,5sin

astfel ca funcia modul este : H ( e j ) =


2

(1 0,5cos ) + ( 0,5sin )
2

1 1, 25 cos

iar funcia defazare are expresia:

( ) = arg H ( e j ) = arctg

0,5cos 1 0,5cos

2.9. Exemple de SN simple 2.9.1. Circuitul de ntrziere este caracterizat n domeniile analogic i numeric de relaiile:
x(t)

y(t)=x(t-T)

x[n] X(z)

Z-1

x[n-1] Y(z)=z-1X(z)

Figura 2.13

121

Funcia de transfer H(z) a unui circuit de ntrziere va fi:


H (z) = Y ( z) = z 1 X ( z)
0
j j

|H(e )|

iar n domeniul frecven: H (e


j

)=e

= cos j sin H ( e

=1

2.9.2. Difereniatoare numerice Circuitul de derivare este caracterizat n domeniile analogic i numeric de relaiile:

x(t)

d dt

y(t)=

d x(t) dt

= t=nT

x(nT)-x(nT-T) y[n]=x[n]-x[n-1] T=1

n figura de mai jos sunt reprezentate caracteristicile ideale de amplitudine i de faz ale unui difereniator analogic.

Figura 2.14
122

Fie aproximarea cu diferene finite a ecuaiei intrare-ieire a unui difereniator analogic:

y (t ) =

dx ( t ) x ( nT ) x ( nT T ) = lim T 0 dt T
t =nT

(2.48)

Rezult c difereniatorul numeric va fi caracterizat de ecuaia n timp discret: y [ n ] = x [ n ] x [ n 1] (2.49) de unde rezult c:
Y ( z ) = X ( z ) z 1 X ( z )

(2.50)

i c funcia de transfer H D ( z ) va fi: H D ( z ) = 1 z 1 , care pentru z = e j conduce la: sin / 2 /2 2 Deoarece pentru / 2 << 1 ,sin ( / 2 ) / 2 rezult c: H D (e
j

) = 1 e

= 2 je sin
2

= je

(2.51)

H D ( e j ) j e j / 2

(2.52)

n figura 2.15 sunt reprezentate caracteristicile ideale de amplitudine i de faz ale unui difereniator numeric. Figura 2.15

123

Corespunztor relaiilor:
Y ( z ) = X ( z ) z 1 X ( z ) rezulta functia de transfer a unui circuit de deviere: H (z) = H (e
j

|H|
4 2

Y ( z) = 1 z 1 = 1 cos + j sin X ( z)
2 2

3
2

) = (1 cos )

+ sin = 2 2 cos
2

n figura 2.16 sunt reprezentate comparativ amplitudinile unui difereniator ideal i unuia rezultat ca aproximarea de ordinul unu a ecuaiei difereniale analogice.

Figura 2.16

2.9.3. Integratoare numerice Circuitul de integrare este caracterizat, n domeniile analogic i numeric, de relaiile:
x(t) y(t)= x(t)dt

Figura 2.17
124

deoarece: x ( t ) = rezulta ca:

y ( nT ) y ( nT T ) d y (t ) = dt T

x [ n ] = y [ n ] y [ n 1] astfel ca: X ( z ) = Y ( z ) z 1Y ( z ) Functia de transfer a unui circuit de integrare este: Y ( z) 1 H (z) = = X ( z ) 1 z 1 z = e j 1 2 2 cos

n figura de mai jos este reprezentat modulul funciei de transfer al circuitului de integrare comparativ cu modulul funciei de transfer al unui FTJ ideal (reprezentat punctat)
|H|
1
2

Figura 2.18

Un integrator numeric ideal are funcia de transfer: HI

ideal

(e ) =
j

1 j

, <

(2.53)

Funcia de integrare ideal poate fi aproximat de ecuaia cu diferite finite: y [ n] =


m =

x [ m] = L x [ 2] + x [ 1] + x [0] + x [1] + L + x [ n]

(2.54)

Dar, deoarece: y [ n 1] = L + x [ 2] + x [ 1] + x [ 0] + x [1] + L + x [ n 1]


125

(2.55)

rezult c:
y [ n ] = y [ n 1] + x [ n ]

(2.56) (2.57)
(2.58)

astfel c: sau:

Y ( z ) = z 1Y ( z ) + X ( z )

HI ( z) =

Y (z) 1 cu RdC : z > 1 = X ( z ) 1 z 1

Rezult caracteristica de frecven a integratorului:


j 1 1 2 HI (e ) = = =e j 1 e (1 cos ) + j sin

1 sin ( / 2 ) j /2

(2.59)

Dac ( / 2 ) << 1 se poate considera c sin ( / 2 ) ( / 2 ) , astfel c relaia (2.59) conduce la: H I ( e j ) e j / 2 j (2.60)

n general, corespunztor relaiilor (2.53) i (2.59) rezult c: HI 1 j e 2 j sin ( / 2 )


j / 2

ideal

HI

= e j / 2

sin ( / 2 ) = e j / 2 sinc ( / 2 ) /2

(2.61)

Sunt posibile i alte metode aproximative de integrare numeric n afara aproximrii rectangulare reprezentat de relaia (2.60). De exemplu, metoda trapezului este caracterizat de relaia: y [ n ] = y [ n 1] + astfel c:
126

1 { x [ n] + x [ n 1]} 2

(2.62)

1 Y ( z ) = z 1 Y ( z ) + (1 z 1 ) X ( z ) 2 sau: HI ( z) = Y ( z ) 1 1 + z 1 = X ( z ) 2 1 z 1

(2.63)

(2.64)

Metoda Simpson de integrare numeric este caracterizat de relaia:


y [ n] = y [ n N ] + 1 { x [ n] + 4 x [ n 1] + 2 x [ n 2] + L + 4 x [ n N + 1] + x [ n N ]} 3

(2.65) i constituie o aproximare mai bun de integrare numeric. S analizm i alte SNLI des ntlnite n practica prelucrrii numerice.

EXEMPLU: Analiza unui SN de tip Moving Average (MA) caracterizat de funcia de transfer:
H (z ) = 1 1 + z 1 + z 2 + K + z ( M 1) M 1 M 1 n = z M n=0 =

1 1 zM 1 zM 1 = M 1 M 1 z 1 M z ( z 1)

n consecin, rspunsul pondere al SN de tip MA va fi : 1 pentru 0 n (M 1) h[n] = M 0, in rest De exemplu, pentru M = 4 , rezult c:

127

H (z ) =

1 1 1 z 4 1 + z 1 + z 2 + z 3 = 4 4 1 z 1

1 1 (1 + z 1 ) + z 2 (1 + z 1 ) = (1 + z 1 )(1 + z 2 ) 4 4 1 1 1 1 = z 2 z 2 + z 2 z 1 ( z1 + z 1 ) 4 = =z
1 2

z 1

z +z 2

1 2

1 2

z1 + z 1 2
z = e j

=e

3 2

cos

cos

n figura de mai jos este reprezentat grafic modulul funciei de transfer:

|H|
1

EXEMPLU: Un SNLI de tip trece jos are caracteristica de amplitudine din figura de mai jos:

HFTJ (
2

-2

Rspunsul pondere hFTJ [n] al SNLI de tip trece jos va fi :


128

hFTJ [n] = TFTD 1 {H FTJ (e j )} =

1 2

H ( )e d
j n FTJ

1 = 2

jn 2 e d =

1 jn e jn

j n 1 j2n e e 2 jn

sin

2 n

= sinc

Reprezentarea grafic a rspunsului pondere hFTJ [ n ] = sinc dat n figura de mai jos:
1 hFTJ [n] 2 3 -2 -1 2 3 0 1 2 2 3 4 5 6 7 8

n este

2 -3 -6 -5 -4

EXEMPLU: Un SNLI de tip trece sus are caracteristica de amplitudine din figura de mai jos:

Rspunsul pondere hFTS al SNLI de tip trece sus va fi:


129

1 hFTS [ n ] = 2

3 2

2e
2

j n

d = K = ( 1) sinc
n

n
n

Reprezentarea grafic a rspunsului pondere hFTS [ n ] = ( 1) sinc

este dat n figura de mai jos:


1 hFTS[n] sinc n 2 n 6 7 8

-5 -6 -4 -3 -2 -1 2 0 1 2 2

3 4

APLICAIE: La intrarea unui SNLI se aplic secvena x[n] , iar la cele dou ieiri ale SNLI se obin secvenele y1 [n] si y 2 [n] :
h1[n]

x[n] = cos 0,1n + cos 0,8n

y1 [n]
y2 [n]

H2[]

n plus, se dau: rspunsul pondere h1[n] al primului sub-sistem i funcia de transfer H 2 ( ) a celui de-al doilea sub-sistem, ca n figura de mai jos.

h1[n]
0,4772 0,2764 -2 -1 0 1 2 3

H2(
1 -2
130

-3

Rezult c : H1 (e j ) = h1 [n]e jn = 0,2764 + 0,4472 e j + 0,2764 e j 2


(n )

= e j 0, 2764 ( e j + e j ) + 0, 4472 = e j ( 0,5528cos + 0, 4472 )

cu reprezentarea grafic:

|H1|
1

0,1

0,8

0,1

y1[n] cos 0,1n . Iar, deoarece H 2 ( ) este un FTS ideal, rezult c: y2 [n] = cos 0,8n .

Corespunztor formei particulare a funciei

H 1 , rezult c:

2.10 Analiza SNLI cu ajutorul grafurilor de fluen a semnalelor numerice:

Deoarece un SNLI este caracterizat n planul variabilei z de o ecuaie intrare-ieire liniar, este posibil reprezentarea ei i, n consecin, a sistemului numeric liniar, printr-un graf de fluen a semnalelor. Graful rezultat constituie adesea o form de reprezentare a SNLI n care apar explicit doar laturi orientate mpreun cu transmitanele lor i noduri n locul blocurilor funcionale de baz. n exemplul din figura 2.19 este ilustrat reprezentarea unui SNLI de ordinul unu prin blocuri funcionale.

131

X(z)

W(z)

V(z)

Y(z)

z-1 b

Figura 2.19 SNLI este descris de sistemul de ecuaii liniare n variabila z :


V(z ) = aX(z ) 1 W (z ) = b z Y(z ) Y(z ) = V (z ) + W (z ) n general, un sistem de ecuaii liniare este descris prin:
n Tij X j = 0 j =1 i = 1,2,..., n

(2.66.a)

Sistemul poate fi reordonat, explicitnd n membrul stng, succesiv, variabilele dependente X1, X2, X3 n T X i = ij X j (2.66.b) j =1 Tii i = 1, 2,..., m < n

Se numete graf de fluen a semnalelor reprezentarea topologic cu laturi i noduri care se asociaz sistemului de ecuaii liniare reordonat astfel : -fiecrui semnal Xi i se asociaz un nod -fiecrui coeficient Tij i se asociaz o latur, pe care se stabilete un sens pozitiv, conform regulei:
Tsd

Xd = Tsd Xs

Xs

Xd

132

Nodurile

reprezint variabilele dependente i independente ale sistemului (de ecuaii liniare) i pot fi: -noduri surs, noduri sarcin, noduri mixte sau noduri lan corespund relaiilor ntre variabilele dependente i independente ale sistemului si pot fi, n raport cu un nod: -laturi convergente -laturi divergente

Laturile

Cale = o secven de laturi parcurse n sensul semnalelor. Bucl = o cale nchis i format numai din noduri lan. Bucl proprie = o bucl format dintr-o singur latur. Operaii simple aplicate unui graf
X 2 = T12 X 1 X 4 = T14 X 1 + T24 X 2 + T34 X 3
X1 X1 X2 X3 T24 T14 T34 X4 T12 X2

Regula de adunare
X 2 = T12 X 1 + T '12 X 1 = T12 + T '12 X 1

T12 X1 X1
T12 X1 X1 X2 T12 T23 X3

T`12 T12+T`12
T23

X2 X2

Regula de nmulire X 2 = T12 X 1 X 3 = T23 X 2 X 3 = T23 (T12 X 1 )

X3

133

Eliminarea unei bucle proprii

T22 T12 X1 X1 T12 1- T23 X3 X3

X 2 = T12 X 1 + T22 X 2 X2 = T12 1 T22

Exemplu de analiz cu grafuri de fluen a unui SN simplu

Corespunztor relaiilor: V ( z ) = a X ( z ) 1 W (z ) = bz Y ( z ) Y (z ) = V ( z ) + W ( z ) rezult modificrile succesive ale grafului:


X a -1 1- bz X V W a X

bz-1 Y Y 1-bz-1 Y

Acelai rezultat se obine i dac rezolvm sistemul:


Y (z ) = aX (z ) + bz 1Y ( z ) Y (z ) 1 bz 1 = aX (z ) H (z ) =

Y (z ) a = X ( z ) 1 bz 1

134

Regula lui MASON pentru calculul direct al transmitanei ntre un nod surs i un nod destinaie
Transformata Tsd ntre un nod surs i un nod destinaie este dat de relaia: Tsd = 1 Tk k unde:
( j) ( j) ( j)

(2.67)

= 1 Pj1 + Pj 2 Pj 3 + ...

n care:

P
( j)

j1

= suma tuturor transmitanelor buclelor individuale. = suma tuturor produselor transmitanelor buclelor perechi neadiacente.

P
( j)

j2

P
( j)

j3

= suma tuturor produselor transmitanelor relativ la triplei de bucle neadiacente.

iar: Tk = transmitana cii deschise ntre nod s i d k = determinantul sub-grafului neadiacent cii deschise k

135

Exemplu de analiz a unui SN cu grafuri de fluen folosind regula lui MASON


b0
-1

a0=1
-1

z
b1 1 -a0

b0

z-1
b1 -a1

z-1

Aplicnd regula lui Mason grafului de mai sus rezult c: Txy = b0 + b1 z 1 b + b z 1 = 0 1 1 1 a1 z 1 1 + a1 z

2.11. Clasificarea SNLI


Un SNLI poate fi caracterizat prin: Algoritmul de calcul n timp discret: y[nT ] = bi x(nT iT ) ai y (nT iT )
i =0 i =1 M N

(2.68)

sau: -

Funcia de sistem:

136

H (z ) =

b z a z
i =0 i i =0 N i

=
i

b z
i =0 N i i =0

a0 = 1

1 + ai z

(2.69)
i

Un SNLI este de tip nerecursiv (de tip transversal) dac toi a i = 0 pentru i = 1, N , astfel c:
y ( n ) = bi x(nT iT )
i =0 M

iar: H ( z ) = bi z i
i =0 M

Rezult c: b pentru i = 0,1, 2,..., M h ( nT ) = Z 1 { H ( z )} = i 0 pentru i > M = b0 [ n ] + b1 [ n 1] + b2 [ n 2] + ... + bM [ n M ] Un SNLI este de tip recursiv dac nu toi a i = 0

Exemplul unui SNLI transversal

Fie SNLI din figura: x[n]

z
h[0]

-1

z
h[1]

-1

...
h[2]

-1

h[M]

137

yn

Dac x[n] [n] atunci rspunsul pondere al sistemului este:


h[n] = h[0] [n] + h[1] [n 1] + h[2] [n 2] + ... + h[M ] [n M ]

Dac x[n] este oarecare, atunci rspunsul SNLI de tip transversal este dat de relaia:
y [ n] = x [ n] h [ n] = x [ k ] h [ n k ]
k =0

Pentru: n=0 n=2 y [ 0] = x [ 0] h [ 0] y [ 2] = x [ 0] h [ 2] + x [1] h [1] + x [ 2] h [ 0] n = 1 y [1] = x [ 0] h [1] + x [1] h [ 0]

2.12 Scheme de realizare a SNLI

Corespunztor relaiei n timp discret care caracterizeaz un SNLI :


y[nT ] = bi x(nT iT ) ai y (nT iT )
i =0 i =1 M N

(2.70)

rezult forma (canonic I) de realizare:


b0

b1

T
x(nT)

...

bM

y(nT)

T
-a1

T
-a2

-aN

Figura 2.20
138

...
T

care poate fi redesenat sub forma:


x[n] 1 b0 a0=0 1 y[n]

z-1
b1 -a1

z-1

-1

z
b2 -a2

-1

-1

z
bM -aM

-1

z
-aN

-1

Figura 2.21 O alt schem de realizare a SLNI se obine dac se face observaia c: M X ( z) M bi z i = W ( z ) bi z i Y (z) = N i =0 ai z i i=0
X ( z)
N i =1 i =0

1 + ai z

= W ( z)

(2.71)

astfel nct:
N w ( nT ) = x ( nT ) ai w ( nT iT ) i =1 M y ( nT ) = b w ( nT iT ) i i =0

139

Corespunztor acestor relaii rezult forma (canonic II) de realizare a unui SNLI:
x(nT)

w(nT) b0

y(nT)

T
-a1 b1

T
-a2 b2

-aN

...
T
bM

Figura 2.22 care poate fi redesenat sub forma:


x[n] 1 1 -a1 1 -a2 a0=0 b0 1 1 b1 1 b2 y[n]

1 -aN

...
T

z-1
-1

-1

-aM

-1

bM

Figura 2.23
140

Exemplu de realizare a unui SNLI :

Fie un SNLI caracterizat de funcia de transfer de gradul II:

H (z) =

b z a z
i =0 i i =0 N i

=
i

b0 + b1 z 1 + b2 z 2 1 + 0,1z 1 z 2 = a0 + a1 z 1 + a2 z 2 1 0, 2 z 1 0, 4 z 2 a0 = 1 a1 = 0,2 a 2 = 0,4

n acest caz:

b0 = 1 b1 = 0,1 b2 = 1

Formele canonice I i II de realizare a SNLI sunt prezentate n figura de mai jos:


x[n] 1 a0=1 1 y[n] x[n] a0=1 y[n]

b0=1

b0=1

-1

z
b1=0,1 -a1=0,2

-1

z
-a1=0,2

-1

b1=0,1

-1

z
b2=-1 -a2=0,4

-1

z
-a2=0,4

-1

b2=-1

Realizarea n cascad a SNLI


Sunt diferite feluri de a reprezenta structura intern a unui sistem numeric 1-D liniar i invariant. Reprezentrile structurale sunt necesare pentru a stabili relaiile intrare - ieire ale SNLI sau pentru a deduce alte scheme echivalente cu performane tehnice mai bune. Pe baza caracterizrii funcionale a unui sistem numeric, se poate face analiza i proiectarea sa. Din punct de vedere practic, se obinuiete ca un sistem numeric s fie realizat din sisteme mai simple, conectate n serie,
141

cascad, conexiune invers etc. De exemplu, dac un sistem numeric este caracterizat prin funcia de transfer H ( z ) , care se poate descompune sub forma:
H (z ) = k H i (z )
i =1 k

(2.72) corespunztoare unor SNLI mai simple, de regul de ordinul 1 sau 2.

unde H i ( z ) corespund unor funcii de transfer mai simple, de regul de ordinul unu i /sau doi, atunci structura sistenului numeric poate fi realizat prin conectarea n cascad a unor subsisteme (mai simple) ca n figura 2.24.
x[n] X[n]

H1(z)

H2(z)

...

Hk(z)

y[n] Y[n]

Figura 2.24

Realizarea n paralel a SNLI


Descompunnd funcia de transfer H(z) a unui sistem numeric ntr-o sum de funcii mai simple sub forma:
H (z ) = c + H i (z )
i =1 k

(2.73)

rezult structura sistemului ca n figura 2.25

142

x[nT] x[n] X(z)

H1(z) H2(z)

y[nT]

y[n] Y(z)

Blocurile funcionale de baz pentru realizarea oricrui sub/sistem numeric 1-D liniar i invariant sunt: sumatorul, multiplicatorul i blocul care realizeaz ntrzierea unitar a semnalelor numerice. Aa cum se poate observa pe figur n reprezentarea structurii unui SNLI se folosesc laturi i noduri. Pe laturile orientate se noteaz uneori semnalul transmis, iar nodurile pot fi convergente sau divergente n raport cu laturile ce reprezint semnalele.

...
Hk(z)

Figura 2.25

143

2.13. Probleme rezolvate

PROBLEMA P2.1 Se d SNLI din figur:

Figura 2.1.1 Determinai rspunsul SNLI cnd la intrare se aplic urmtoarele semnale: a) x1 [n] = [n] ; b) x 2 [n] = u[n]; c) x3 [n] = 3 n .

Rezolvare problema P2.1 SNLI din figura 2.1.1 este caracterizat de ecuaia cu diferene finite urmtoare: (2.1.1) y [ n ] = 2 x [ n ] + 4 x [ n 1] . a) Dac la intrare se aplic [n] , la ieire rezult funcia pondere a sistemului: h [ n ] = 2 [ n ] + 4 [ n 1] . (2.1.2)
b) Dac la intrare se aplic u [ n ] = [ n k ] , rezult c:
g [ n ] = 2 u [ n ] + 4 u [ n 1] = 2 [ n k ] + 4 [ n k 1] =
k =0 k =0 k =0

= 2 [ n] + 6 [ n k ] .
k =1

(2.1.3)

144

c)

Dac la intrare se aplic x3 [ n ] , rspunsul y3 [ n ] este:

y3 [ n ] = h [ k ] x3 [ n k ] = ( 2 [ n ] + 4 [ n 1] 3n k ) =
k =0 k =0

(2.1.4)

= 2 3n + 4 3n 1 .

PROBLEMA P2.2
Se d SNLI din figur:

Figura 2.2.1 La intrarea SNLI se aplic semnalul urmtor:


x [ n]

1 1 -2 -1 -1 Figura 2.2.2 a) Calculai w[n] i W ( z ) = Z {w [ n ]} ; b) Calculai funcia de transfer H ( z ) = 2 3 4 5 6 7


n

Y ( z) a SNLI; W ( z)

145

c) Calculai i reprezentai grafic H ( e j ) ; d) Determinai rspunsul y [ n ] al SNLI la semnalul x [ n ] . Rezolvare problema P2.2 a) Deoarece

e j n = ( e j ) = ( 1) , iar w [ n ] = x [ n ] ( 1) , rezult c
n n

semnalul x[n] va fi inversat pentru valorile impare ale lui n , astfel c w [ n] u [ n] .


w[n]
1 1 2 3 4 5
n

Figura 2.2.3 n consecin:


1 z = (2.2.1) 1 z 1 1 z n =0 Y ( z) b) Funcia de transfer H ( z ) = rezult aplicnd transformata Z W ( z) ecuaiei n timp discret urmtoare: (2.2.2) y [ n ] = 1 w [ n ] 2 w [ n 1] + 1 w [ n 2] ,

W ( z ) = Z {w [ n ]} = 1 z n =

rezultnd astfel:

Y ( z ) = (1 2 z 1 + z 2 ) W ( z ) = (1 z 1 ) W ( z ) .
2

(2.2.3)

c)

n consecin avem: 2 Y ( z) = (1 z 1 ) . H ( z) = W ( z) Funcia de transfer n domeniul frecven este:


146

(2.2.4)

H ( e j ) = H ( z )

z = e j

= (1 e j ) = (1 cos + j sin ) .
2 2

(2.2.5)

astfel c: 2 H ( e j ) = 1 cos + j sin = (1 cos ) + sin 2 = 2 2 cos . (2.2.6) Figura 2.2.4 d) Transformata Z a rspunsului SNLI la semnalul x [ n ] este:

Y ( z ) = H ( z ) W ( z ) = astfel c rspunsul y [ n ] este:

2 1 1 z 1 ) = 1 z 1 . 1 ( 1 z

(2.2.7)

y [ n ] = Z 1 {Y ( z )} = Z 1 {1 z 1} = [ n ] [ n 1] .

(2.2.8)

PROBLEMA P2.3

Se d sistemul numeric din figura 2.3.1. a) Determinai ecuaiile n timp discret ce caracterizeaz subsistemele H1 ( z ) i H 2 ( z ) ;

x[n]

z 1

z 1

1 -2 1

w[n]

H 2 ( z ) = (1 + z 1 )

y[n]

H1 ( z )

147

Figura 2.3.1

b)

Determinai

funcia

de

transfer

H1 ( z ) =

W ( z) X ( z)

calculai

H ( z ) = H1 ( z ) H 2 ( z ) ;

c) Calculai i reprezentai H1 ( e j ) , H 2 ( e j ) , H ( e j ) . Rezolvare problema P2.3

grafic

caracteristicile

de

modul:

a) Din figura 2.3.1 rezult imediat ecuaia cu diferene finite pentru subsistemul H1 ( z ) :
w [ n ] = x [ n ] 2 x [ n 1] + x [ n 2] .

(2.3.1)

Utiliznd relaia de legtur ntre transformatele Z ale semnalelor w [ n ] i y [ n ] : Y ( z ) = H 2 ( z ) W ( z ) = (1 + z 1 ) W ( z ) = (1 + 2 z 1 + z 2 )W ( z ) ,


2

(2.3.2)

i calculnd transformata Z invers a lui Y ( z ) , se obine ecuaia cu diferene finite pentru subsistemul H 2 ( z ) :
y [ n ] = w [ n ] + 2 w [ n 1] + w [ n 2] .

(2.3.3)

b) Calculnd transformata Z a relaiei (2.3.1) deducem funcia de transfer H1 ( z ) : W ( z ) = X ( z ) 2 z 1 X ( z ) + z 2 X ( z ) = (1 z 1 ) X ( z ) ,


2

(2.3.4)

H1 ( z ) =

2 W ( z) = (1 z 1 ) . (2.3.5) X ( z) Funcia de transfer a sistemului format din subsistemele H1 ( z ) i

H 2 ( z ) este:

H ( z ) = H1 ( z ) H 2 ( z ) = (1 z 1 ) (1 + z 1 ) = (1 z 2 ) .
2 2 2

(2.3.5)

c)

H1 ( e j ) = H1 ( z ) z =e j = (1 e j ) = (1 cos + j sin ) ,
2 2

Expresiile funciilor cerute sunt:

(2.3.6)

148

H1 ( e j ) = (1 cos ) + sin 2 = 2 (1 cos ) ,


2

(2.3.7)
2

H 2 ( e j ) = H 2 ( z ) z =e j = (1 + e j ) = (1 + cos + j sin ) ,
2

(2.3.8) (2.3.9)

H 2 ( e j ) = (1 + cos ) + sin 2 = 2 (1 + cos ) ,


2 2 2

H ( e j ) = H ( z ) z =e j = (1 e 2 j ) = (1 cos 2 + j sin 2 ) ,
2

(2.3.10) (2.3.11)

H ( e j ) = (1 cos 2 ) + sin 2 2 = 2 (1 cos 2 ) = 4sin 2 . Reprezentrile grafice sunt artate n figura 2.3.2.

Figura 2.3.2

149

PROBLEMA P2.4

Se d sistemul numeric din figura 2.4.1.

Figura 2.4.1 Funcia de transfer H ( j ) este reprezentat n figura 2.4.2.

H ( j )

-3/2

-/2

/2 Figura 2.4.2
150

3/2

Se cer: a) Determinai ecuaia cu diferene finite (n timp discret) pentru sistemul Y ( z) H1 ( z ) = 1 ; X ( z) b) Calculai funcia de transfer H1 ( z ) =

Y1 ( z ) ; X ( z)

c) Calculai i reprezentai grafic caracteristica de modul H1 ( j ) . Ce tip de filtru numeric reprezint H1 ? d) Determinai expresiile semnalelor
y1 [ n ]

y2 [ n ]

dac

x [ n ] = cos

n + cos n .

Rezolvare problema P2.4: a) Din schema bloc a primului sistem rezult ecuaia cu diferene finite a acestuia: y1 [ n ] = 1 x [ n] + 2 x [ n 1] + 1 x [ n 2] . (2.4.1) b) Din relaia (2.4.1) rezult expresia lui H1 ( z ) astfel:
Y1 ( z ) = X ( z ) + 2 X ( z ) z 1 + X ( z ) z 2 = = X ( z ) 1 + 2 z 1 + z 2 = X ( z ) (1 + z 1 ) ,
2 2 Y1 ( z ) = 1 + 2 z 1 + z 2 = (1 + z 1 ) . X ( z)

(2.4.2) (2.4.3)

H1 ( z ) =

c) Prin nlocuirea lui z cu e j se obine expresia analitic a funciei de transfer n domeniul frecven: H1 ( j ) = H1 ( e j ) = (1 + e j ) = (1 + cos j sin ) ,
2 2

(2.4.4) (2.4.5)

H1 ( j ) = (1 + cos ) + sin 2 = 2 + 2 cos ,


2

avnd reprezentarea grafic din figura urmtoare:

151

Figura 2.4.3 Se poate observa din reprezentarea grafic anterioar c filtrul numeric cu caracteristica H1 ( e j ) este un filtru tip trece jos. n + cos n , pulsaiile normate ale celor 4 dou componente cosinusoidale ale semnalului sunt / 4 i . innd cont de pulsaiile normate de tiere ale celor dou filtre i de tipul acestora, se deduc semnalele de ieire y1 [ n ] i y2 [ n ] astfel: d)
y1 [ n ] = 2 + 2 cos
y2 [ n ] = cos n ,

Considernd x [ n ] = cos

n,

(2.4.6) (2.4.7) (2.4.8) (2.4.9)

unde:

H1 j = 2 + 2 , 4 H j =1. 4

PROBLEMA P2.5
Un sistem numeric este caracterizat de ecuaia n timp discret urmtoare: 1 y [ n ] = b x [ n ] + x [ n 1] + y [ n 1] . (2.5.1) 2 Se cer:
152

a) Determinai constanta b astfel nct H (e j ) = 1, (0, ] ; b) Realizai sistemul numeric folosind sumatoare, multiplicatoare i elemente de ntrziere. Rezolvare problema P2.5: a) Din (2.5.1) rezult: 1 Y ( z ) 1 z 1 = X ( z ) b + z 1 . (2.5.2) 2 Din relaia (2.5.2) se poate deduce expresia funciei de transfer

Y ( z) b + z 1 = . (2.5.3) X ( z ) 1 1 z 1 2 Dac se nlocuiete z cu e j se obine: b + cos j sin H ( e j ) = . (2.5.4) 1 1 1 cos + j sin 2 2 Punnd condiia din enunul problemei, | H (e j ) |2 = 1 , se obine ecuaia: 1 (2.5.5) b 2 + 2b cos + 1 = 1 cos + , 4 valabil pentru orice (0, ] , ceea ce implic: 1 b= . (2.5.6) 2 b) Sistemul numeric realizat folosind sumatoare, multiplicatoare i elemente de ntrziere este prezentat n figura 2.5.1. H ( z) =

H ( z) :

153

Figura 2.5.1
PROBLEMA P2.6

Se d sistemul numeric cauzal definit de ecuaia recursiv (2.6.1). 1 (2.6.1) y [ n ] y [ n 1] = x [ n ] 2 x [ n 1] . 2 Se cer: a) S se determine funcia de transfer a sistemului H ( z ) ; b) S se gseasc rspunsul sistemului y [ n ] dac semnalul de intrare este
x [ n] = u [ n] ;

c) S se realizeze sistemul folosind un numr minim de celule de ntrziere. Rezolvare problema P2.6: a) Pe cale analitic se deduce funcia de transfer a sistemului aplicnd transformata Z ecuaiei recursive (2.6.1): Y ( z ) 1 2 z 1 H ( z) = = (2.6.2) . X ( z ) 1 1 z 1 2 b) Se cunoate faptul c transformata Z a semnalului discret treapt unitate este: 1 Z {u [ n]} = , (2.6.3) 1 z 1 cu z > 1 . Rezult c transformata Z a semnalului de ieire este: 1 1 2 z 1 2 3 Y ( z) = H ( z) X ( z) = = + . (2.6.4) 1 1 1 1 1 z 1 1 z 1 1 z 1 z 2 2 n consecin, aplicnd transformata Z invers relaiei anterioare, avem: y [ n ] = Z 1 {Y ( z )} = 2 u [ n ] + 3 care este reprezentat n figura 2.6.1.
154

1 u [ n] , 2n

(2.6.5)

c)

n figura 2.6.2 este ilustrat grafic realizarea sistemului numeric

descris de relaia (2.6.1). Figura 2.6.1


T 1
2

x[n]
T 1
1 2

y[n]

Figura 2.6.2

PROBLEMA P2.7

Se d sistemul numeric caracterizat de rspunsul pondere urmtor: n n 1 1 1 h [ n ] = + u [ n ] . (2.7.1) 2 2 4 Se cer: a) Calculai funcia de transfer H ( z ) a acestui sistem numeric;
155

b) Realizai sistemul numeric sub forma unei cascade de sisteme de ordinul I, folosind sumatoare, multiplicatoare i elemente de ntrziere. Rezolvare problema P2.7: a) Funcia de transfer H ( z ) a sistemului se obine prin aplicarea

transformatei Z asupra funciei pondere: 1 1 1 12 4 z 1 H ( z ) = Z {h [ n ]} = + = .(2.7.2) 1 1 2 1 1 ( 2 z 1 )( 4 z 1 ) 1 z 1 z 2 4 b) Dac se descompune H ( z ) n produs se obine relaia:
H ( z ) = H1 ( z ) H 2 ( z ) = unde H1 ( z ) i H 2 ( z ) 1 12 4 z 1 (2.7.3) , 2 z 1 4 z 1 reprezint funciile de transfer a dou sisteme

numerice conectate n cascad: W ( z) 1 = , H1 ( z ) = 1 2 z X ( z) H2 ( z ) =

(2.7.4)

12 4 z 1 Y ( z ) . (2.7.5) = 4 z 1 W ( z) Ecuaiile cu diferene finite ce caracterizeaz funcionarea celor dou sisteme numerice sunt: 1 1 w [ n ] = x [ n ] + w [ n 1] , (2.7.6) 2 2 1 y [ n ] = 3w [ n ] w [ n 1] + y [ n 1] . (2.7.7) 4 n figura 2.7.1 este prezentat schema sistemului obinut.

156

H1 ( z )

H2 ( z)

Figura 2.7.1
PROBLEMA P2.8

Se d sistemul numeric, liniar i invariant n timp (SNLI) din figura 2.8.1.


x[n]

v[n]

H ( z) =

Y ( z) V ( z)

y[n]

ejn
Figura 2.8.1 La intrarea acestui sistem se aplic semnalul x [ n ] ilustrat n figura urmtoare:
x [ n]

1 1 -2 -1 -1 Figura 2.8.2
157

3 2 4

5 6

Se cer: a) Determinai expresia semnalului v [ n ] ;

b) Calculai transformata V ( z ) = Z {v [ n ]} ;

c) Calculai transformata Y ( z ) a semnalului de la ieire dac funcia de transfer H ( z ) are expresia:


H ( z) = Y (z) = 1 z 1 ; V ( z)

(2.8.1)

d) Determinai expresia semnalului y [ n ] .

Rezolvare problema P2.8: a) Prin nmulirea lui x [ n ] cu e j n rezult semnalul v [ n ] egal cu (2.8.2)

funcia treapt unitate: n v [ n ] = x [ n ] e j n = x [ n ] ( 1) = u [ n ] . b)

Expresia transformatei Z a semnalului v [ n ] (treapt unitate) este: 1 . 1 z 1 n=0 Din relaiile (2.8.1) i (2.8.3) rezult: Y ( z) = V ( z) H ( z) =1
V ( z ) = 1 z n =

(2.8.3) (2.8.4)

c)

d) Din (2.8.4), aplicnd transformata Z invers, rezult expresia analitic a semnalului y [ n ] :


1, n = 0; y [ n] = [ n] = 0, n 0.

(2.8.5)

PROBLEMA P2.9

Se d SNLI din figura urmtoare:


158

Figura 2.9.1 unde semnalul de intrare are transformata Fourier:


X ( j )

-3/2

-/2

/2

3/2

Figura 2.9.2 S se determine i s se reprezinte grafic semnalele x [ n ] , w [ n ] i


y [ n] .

Rezolvare problema P2.9 Semnalul de intrare x [ n ] se determin aplicnd transformata Fourier invers:
x [ n] = 1 2
2

X (e j ) e j n d =

1 2

3 2

2 e jn d =

2 1 j n e 2 jn
j n 2

3 2 2

=
j n 2

j n 2 j 32 n 2 e j n j n j n 2 e j n e 2 2 2 = e = e e e = 2 jn 2 jn n

e 2j

= e j n

sin

2 n

= ( 1) sinc
n

n. (2.9.1)

Semnalul w [ n ] este: w [ n ] = x [ n ] e j n = e j n e j nsinc

n = sinc

(2.9.2)

159

Semnalul de ieire y [ n ] este identic cu w [ n ] , adic y [ n ] = w [ n ] , deoarece circuitul avnd funcia pondere h [ n ] = [ n ] este un filtru trece tot.

Figura 2.9.3

PROBLEMA P2.10
Se d sistemul numeric din figura 2.10.1.

x2[n]

x1[n]

v[n]

w[n]

h[n]

y[n]

ejn
160

Figura 2.10.1 Expresiile semnalelor de intrare x1 [ n ] i x2 [ n ] sunt: x1 [ n ] = cos n (2.10.1) 6 1 cos n (2.10.2) x2 [ n ] = 2 3 6 n figura urmtoare este ilustrat grafic funcia pondere a sistemului

h [ n] .

h[n]
b

a
0 1 2
Figura 2.10.2 Se cer: a) Determinai expresiile (n timp discret) pentru semnalele v [ n ] i w [ n ] ; b) Calculai expresia funciei de transfer H ( j ) corespunztoare funciei pondere date h [ n ] . Ce tip de filtru poate reprezenta acest sistem n funcie de parametrii a i b ? c) Determinai valorile parametrilor a i b care satisfac condiia b < 1 b < 2a , astfel nct y [ n ] = cos n . 2a 6 Rezolvare problema P2.10: a) n (2.10.3) i (2.10.4) sunt prezentate relaiile de calcul pentru v [ n ]

i w [ n ] :
161

v [ n ] = x1 [ n ] e = e
j 5 n 6

j n

=e
5 n 6

j n

e cos n = e j n 6

j n 6

+e 2

j n 6

= (2.10.3)

b)

5 = cos n, 6 1 5 w [ n ] = v [ n ] + x2 [ n ] = cos n + cos n . 6 2 3 6 Expresia analitic a lui h [ n ] este: +e 2


h [ n ] = a [ n ] + b [ n 1] + a [ n 2] .

(2.10.4)

(2.10.5)

Rezult expresia funciei de transfer n domeniul frecven: (2.10.6) H ( j ) = a + b e j + a e j 2 = e j ( 2a cos + b ) , b . (2.10.7) 2a n funcie de valorile parametrilor a i b avem urmtoarele situaii: b 1) > 1 b > 2a 2a a < 0 a > 0 sau Pentru cazul , modulul funciei de transfer este b > 0 b < 0 reprezentat n figura 2.10.3 a) i ea corespunde unui filtru trece sus. a < 0 a > 0 Pentru cazul sau , modulul funciei de transfer este b < 0 b > 0 reprezentat n figura 2.10.3 b) i ea corespunde unui filtru trece jos. b < 1 b < 2a 2) 2a a < 0 a > 0 Pentru cazul sau , modulul funciei de transfer este b > 0 b < 0 reprezentat n figura 2.10.3 c) i ea corespunde unui filtru trece sus. a > 0 a < 0 , modulul funciei de transfer este sau Pentru cazul b > 0 b < 0 reprezentat n figura 2.10.3 d) i ea corespunde unui filtru trece jos. H ( j ) = 2a cos + b = 2a cos +
162

b = 1 b = 2a 2a a < 0 a > 0 Pentru cazul sau , modulul funciei de transfer este b < 0 b > 0 reprezentat n figura 2.10.3 e) i ea corespunde unui filtru trece jos. a < 0 a > 0 Pentru cazul sau , modulul funciei de transfer este b > 0 b < 0 reprezentat n figura 2.10.3 f) i ea corespunde unui filtru trece sus. 3)

Figura 2.10.3 c) Deoarece se dorete ca semnalul de ieire s fie y [ n ] = cos

n,

trebuie ca H j = 2 3 , de unde rezult condiia urmtoare: 6


163

2a cos ceea ce nseamn c: 2a sau: 2a

+b = 2 3 ,

(2.10.8)

3 +b = 2 3 , 2 3 b = 2 3. 2

(2.10.9)

(2.10.10)

5 n s nu n acelai timp, se dorete ca semnalul v [ n ] = cos 6 treac spre ieire sistemului, astfel c este necesar ca: 5 +b = 0, (2.10.11) 2a cos 6 adic: 3 2a +b = 0, (2.10.12) 2 sau: 3 b = 0. (2.10.13) 2a 2 Rezolvnd sistemele de ecuaii care se obin din relaiile (2.10.9), (2.10.10),(2.10.12) i (2.10.13), va rezulta: a =1 , (2.10.14) b = 3 sau: a = 1 . (2.10.15) b = 3

PROBLEMA P2.11

Se d SN din figura 2.11.1.


164

x[n]

v[n]

H (e H(e j))
j

w[ n ]

y[n]

ejn
Figura 2.11.1

ejn

Caracteristica de transfer H ( e j ) este reprezentat n figura urmtoare:


H ( e j )

-3/2

-/2

/2 Figura 2.11.2

3/2

Semnalul aplicat la intrarea sistemului este x [ n ] = [ n ] . Se cer: a) Calculai i reprezentai grafic rspunsul pondere h [ n ] = F 1 H ( e j ) ; b) Calculai i reprezentai grafic expresiile semnalelor v [ n ] , w [ n ] i y [ n ] i spectrele de amplitudini: V {e j } , W ( e j ) , Y ( e j ) . Rezolvare problema P2.11: a) Cunoscnd forma caracteristicii de transfer H ( e j ) din figura

2.11.2, se obine:
165

1 h [ n] = 2 b)

1 j j n H ( e ) e d = 2 2

e
2

j n

d = sinc

n . 2

(2.11.1)

Reprezentarea grafic a funciei pondere este dat n figura 2.11.3. Expresiile semnalelor v [ n ] , w [ n ] i y [ n ] se calculeaz astfel:
v [ n ] = x [ n ] e j n = [ n ] ( 1) = [ n ]
n

(2.11.2) n 2 (2.11.3)

w [ n ] = v [ n ] h [ n ] = [ n ] h [ n ] = h [ n ] = sinc y [ n ] = w [ n ] ( 1) = ( 1) sinc
n n

n . (2.11.4) 2 Dup aplicarea transformatei Fourier semnalelor anterioare se obin expresiile V ( e j ) , W ( e j ) : V ( e j ) = 1 , (2.11.5)

Figura 2.11.3
166

W ( e j ) = H ( e j ) .

(2.11.6)

innd cont de proprietile transformatei Fourier i de faptul c: (2.11.7) y [ n ] = w [ n ] e j n , va rezulta c:


Y ( e j ) = W e j ( ) = H e j ( ) .

(2.11.8)

Y ( e j ) 1

-3/2

-/2

/2 Figura 2.11.4

3/2

PROBLEMA P2.12

Se d SNLI din figura urmtoare: H FTJ ( )

x [ n]
X ( j )

v [ n]

w [n]
W ( j )

y [ n] Y ( j )

V ( j )
/ 2

0 /2

( 1)

( 1)
Figura 2.12.1

167

La intrarea acestuia se aplic un semnalul x [ n ] a crui transformat Fourier X ( ) este artat n figura 2.12.2. Ce putei preciza despre funcia de transfer H ( e j ) = Y ( ) a ntregului sistem? X ( )

Rezolvare problema P2.12 Prin nmulirea semnalului de intrare x [ n ] cu secvena ( 1) = e j n ,


n

rezult c spectrul semnalului v [ n ] este identic cu cel al lui x [ n ] , dar deplasat cu valoarea : V ( j ) = X j ( ) . (2.12.1) Semnalul v [ n ] se aplic la intrarea filtrului trece jos caracterizat de funcia de transfer H ( e j ) avnd pulsaia de tiere FTJ = frecvena normat de tiere f FTJ , respectiv 2 = 0, 25 . La ieirea filtrului se vor regsi

numai acele componente ale lui v [ n ] cu frecvenele care se ncadreaz n banda de trecere a filtrului, rezultnd astfel semnalul w [ n ] cu spectrul
W ( j ) reprezentat n figura 2.12.2.

Spectrul semnalului de ieire Y ( j ) se obine din W ( j ) , astfel: Y ( j ) = W j ( ) . (2.12.2) Analiznd forma spectrelor semnalului de intrare i a semnalului de ieire din figura 2.12.2, deducem c sistemul numeric dat reprezint un filtru numeric de tip trece sus avnd pulsaia de tiere FTS = frecvena normat de tiere f FTS = 0, 25 .

, respectiv

168

Figura 2.12.2

PROBLEMA P2.13

Se d SNLI din figura urmtoare: x [ n]


X ( )

v [ n]

w [ n]

h [ n] = [ n]

y [ n]

e j n

2 [ n] =

k =

[ n 2k ]
Figura 2.13.1
169

X ( )

-3/2

-/2

/2 Figura 2.13.2

3/2

y [ n] .

Se cere s se determine expresiile semnalelor x [ n ] , v [ n ] , w [ n ] ,

Rezolvare problema P2.13 Aplicnd transformata Fourier invers se obine: 1 1 32 2 1 j n j n x [ n] = X ( ) e j n d = 2 2 e d = 2 jn e 2 2 2


j n 2 j 32 n 2 e j n j n j n 2 e j n e 2 2 = e 2 = e e e = 2 jn 2 jn n
j n 2
3 2 2

=
j n 2

e 2j

= e j n

sin

2 n

= ( 1) sinc
n

n. (2.13.1)

Semnalul v [ n ] este: v [ n ] = x [ n ] e j n = e j n e j nsinc

2 Semnalul w [ n ] se obine astfel:

n = sinc

n.

(2.13.2)

w [ n ] = v [ n ] 2 [ n ] = sinc n [ n 2k ] , 2 k =
170

(2.13.3)

care, n final se deduce c este (figura 2.13.3): w [ n] = [ n] .

(2.13.4)

Semnalul de ieire y [ n] este identic cu w [ n ] , adic y [ n ] = w [ n ] ,

deoarece circuitul avnd funcia pondere h [ n ] = [ n ] este un filtru trece tot.

Figura 2.13.3

171

PROBLEMA P2.14

Se d SNLI din figura urmtoare:

Figura 2.14.1 Semnalul de intrare reprezentat n figura 2.14.2.


X ( j ) x [ n ] are transformata Fourier X ( j )

-3/2

-/2

/2 Figura 2.14.2

3/2

a) Determinai i reprezentai grafic semnalele: x [ n ] , v [ n ] i w [ n ] ; b) Determinai funcia de transfer H ( z ) =


Y ( z ) Z { y [ n ]} = ; W ( z ) Z {w [ n ]}

c) Calculai i reprezentai grafic caracteristica de modul H (e j ) a subsistemului caracterizat de H ( z ) ; d) Calculai rspunsul pondere h [ n ] al subsistemului caracterizat de H ( z ) ;
172

e) Calculai i reprezentai grafic rspunsul y [ n ] al ntregului SNLI. Rezolvare problema P2.14 a) Semnalul de intrare x [ n ] va avea expresia:
x [ n] = 1 2
2

X (e j ) e j n d =

1 2

3 2

2 e jn d =

2 1 j n e 2 jn
j n 2

3 2 2

=
j n 2

j n 2 j 32 n 2 e j n j n j n 2 e j n e 2 2 = e e 2 = e e = 2 jn 2 jn n

e 2j

= e j n

sin

2 n

= ( 1) sinc
n

n. (2.14.1)

Semnalele v [ n ] i w [ n ] sunt: v [ n ] = x [ n ] e j n = e j n e j nsinc w [ n ] = v [ n ] 2 [ n ] = sinc

n = sinc

n,

(2.14.2)

b)

(2.14.3) 2 k = Reprezentrile grafice ale semnalelor sunt artate n figura 2.14.3. Pentru subsistemul dat ecuaie cu diferene finite este: y [ n ] = 1 w [ n ] + 2 w [ n 1] + 1 w [ n 2] , (2.14.4)

[ n 2k ] = [ n ] .

astfel nct se deduce funcia de transfer: Y ( z ) = Z { y [ n ]} = Z {w [ n ] + 2 w [ n 1] + w [ n 2]} =


2 Y (z) = 1 + 2 z 1 + z 2 = (1 + z 1 ) . W (z) Caracteristica de modul a subsistemului este:

= (1 + 2 z 1 + z 2 )W ( z ) ,

(2.14.5) (2.14.6)

H (z) =

c)

H ( e j ) = 1 + e j = 1 + cos j sin =
2 2 2

= (1 + cos ) + sin 2 = 2 (1 + cos )


173

(2.14.7)

d)

Reprezentarea grafic este dat n figura 2.14.4. Rspunsul pondere h [ n ] al subsistemului caracterizat de H ( z ) este: h [ n ] = Z 1 { H ( z )} = [ n ] + 2 [ n 1] + [ n 2] . (2.14.8)

Figura 2.14.3

174

e)

Deoarece w [ n ] = [ n ] , rezult c rspunsul y [ n ] este identic cu


y [ n ] = h [ n ] = [ n ] + 2 [ n 1] + [ n 2] ,

h [ n ] . Aadar:

(2.14.9)

semnalul fiind reprezentat grafic n figura 2.14.5.

Figura 2.14.4

Figura 2.14.5

175

PROBLEMA P2.15
Se consider schema din figura urmtoare n care blocurile au funcia pondere h1 [ n ] = u [ n ] u [ n N ] , respectiv funcia de transfer i invariante n timp. Semnalul de intrare este x [ n ] = a n u [ n ] , a < 1 .
h1 [ n ] x [ n] y1 [ n ]

H 2 ( j ) (reprezentat n figura 2.15.2) ce reprezint sisteme discrete liniare

y2 [ n ]

e j n

H 2 ( j )

Y3 ( j )

Figura 2.15.1
H 2 ( j )

-3/2

-/2

/2
Figura 2.15.2

3/2

a) S se determine i s se reprezinte grafic semnalele y1 [ n ] i y2 [ n ] n cazul n care 0 < a < 1 ;

176

b) S se determine i s se reprezinte grafic Y3 ( j ) pentru a = 1 a= . 2 Rezolvare problema P2.15 a) Semnalul


y1 [ n ]
+

1 i 2

reprezint

rspunsul

sistemului

h1 [ n ] = u [ n ] u [ n N ] la excitaia x [ n ] = a n u [ n ] :

y1 [ n ] = x [ n ] h1 [ n ] =
+
k

k =

x [k ] h [n k ] =
1

= a ( u [ n k ] u [ n k N ]) .
k =0

(2.15.1)

innd cont de suportul limitat al funciei pondere h1 [ n ] , rezult:


0, n < 0 n 1 a n +1 y1 [ n ] = a k = , 0 n N 1 . 1 a k =0 N n k n N +1 1 a ,n N a =a 1 a k = n N +1 Semnalul y2 [ n ] este: y2 [ n ] = y1 [ n ] e j n = ( 1) y1 [ n ] .
n

(2.15.2)

(2.15.3)

b)

n figura 2.15.3 sunt reprezentate cele dou semnale pentru N par. Transformata Fourier n timp discret a semnalului de intrare este:
X ( j ) =
n =

a u [ n] e
n

j n

= ( a e j )
n =0

1 1 = = , j 1 a e 1 a cos + ja sin iar modulul acesteia este: 1 X ( j ) = , 2 1 + a 2a cos


177

(2.15.4)

(2.15.5)

1 , 1 a 1 X ( j ) = , 1+ a 1 Xj = 2 1 + a2 X ( j0) =

(2.15.6) (2.15.7)
1 2

a =

2 . 5

(2.15.8)

Figura 2.15.3 Va rezulta Y3 ( j ) astfel:


Y3 ( j ) = X ( j ) H 2 ( j ) .

(2.15.9)

n figura 2.15.4 este reprezentat Y3 ( j ) pentru cele dou valori a= 1 1 i a = . 2 2

178

Figura 2.15.3

PROBLEMA P2.16

Se consider sistemul discret din figura urmtoare n care comutatorul K se nchide la n = 0 .

Figura 2.16.1
179

Condiii iniiale sunt: y [ 1] = 1 , y [ 2] = 2 . La intrarea sistemului se aplic secvena x [ n ] = 1 , pentru () n Z . S se determine semnalul de ieire y [ n ] . Rezolvare problema P2.16 Ecuaia sistemului discret va fi: y [ n ] = 5 y [ n 1] 6 y [ n 2] + x [ n ] , pentru n 0 . Transformata Z a secvenei ntrziate y [ n 1] este: (2.16.1)

Z { y [ n 1]} = y [ n 1] z n =
n =0 +

m =1

y [ m ] z ( m +1) = z 1 y [ m ] z m =
m =1

= z 1 y [ m ] z m + y [ 1] z +1 = z 1 Y ( z ) + 1, m=0 (2.16.2) n mod similar se deduce:


Z { y [ n 2]} = y [ n 2] z n =
n=0 + m =2

y [ m ] z ( m + 2) = z 2

m =2

y [ m] z

+ = z 2 y [ m ] z m + y [ 1] z +1 + y [ 2] z +2 = m=0 2 1 = z Y ( z ) + 1 z + 2 , (2.16.3) Aplicnd transformata Z ecuaiei cu diferene finite se obine: Y ( z ) 5 z 1 Y ( z ) + 1 + 6 z 2 Y ( z ) + z 1 + 2 = X ( z ) , (2.16.4) unde: X ( z) = cu z > 1 . Relaia (2.16.4) devine: z , z 1 (2.16.5)

180

Y (z) = =

z 7 + 6 z 1 = (1 5z 1 + 6 z 2 ) ( z 1) 1 5z 1 + 6 z 2 6 z 3 + z 2 + 6 z = , ( z 1) ( z 2 5 z + 6 )

z 3 ( 7 z 2 + 6 z ) ( z 1)

(2.16.6)

( z 1) ( z 2 5 z + 6 )

care se poate descompune astfel: Y ( z) A B C , = + + z z 1 z 2 z 3 1 45 Se determin A = , B = 16 , C = . Aadar: 2 2 1 z z 45 z Y (z) = + 16 + . 2 z 1 z 2 2 z 3 n consecin, se deduce c: 1 45 y [ n ] = [ n ] + 16 2n [ n ] 3n [ n ] . 2 2

(2.16.7)

(2.16.8)

(2.16.9)

PROBLEMA P2.17

Se d sistemul numeric din figura de mai jos.

Figura 2.17.1
181

1 Se cunosc funcia pondere h [ n ] = sinc n i semnalul aplicat la 2 2 intrare x [ n ] = [ n ] . Se cere: a) S se determine expresiile funciei pondere ht [ n ] i funciei de transfer H t ( j ) ale sistemului delimitat n figura 2.17.1; b) S se determine semnalul w [ n ] i spectrul su W ( j ) ; c) S se determine semnalul y [ n ] i spectrul su Y ( j ) . Rezolvare problema P2.17 Se cunosc echivalenele pentru o succesiune de sisteme conectate n cascad, respectiv n derivaie (a se vedea figura 2.17.2): (2.17.1) hc [ n ] = h [ n ] h [ n ] K h [ n ] , 2444 3 1444
H c ( j ) = H ( j ) H ( j )K H ( j ) = H N ( j ) , 14444 24444 3
N ori
N ori

(2.17.2)

Figura 2.17.2

182

hd [ n ] = h [ n ] + h [ n ] + K + h [ n ] = N h [ n ] , 144424444 4 3 H d ( j ) = H ( j ) + H ( j ) + K + H ( j ) = N H ( j ) . 1444442444443 4 4
N ori N ori

(2.17.3) (2.17.4)

Pe baza acestor echivalene i a structurii sistemului delimitat n figura 2.17.1, din aproape n aproape, se deduce faptul c: 1 H t ( j ) = N H N ( j ) = H N ( j ) . (2.17.5) N De asemenea, se cunoate faptul c funcia de transfer n domeniul frecven H ( j ) a sistemului a crui funcie pondere are expresia 1 h [ n ] = sinc n este cea reprezentat n figura 2.17.3. 2 2
H ( j )

-3/2

-/2

/2

3/2

Figura 2.17.3 n concluzie, pe baza relaiei 2.17.5 i a formei funciei de transfer H ( j ) , avem:
H t ( j ) = H ( j ) .

(2.17.6) (2.17.7)

n consecin, funcia pondere ht [ n ] va fi:


ht [ n ] = h [ n ] .

b) c:

Din structura sistemului i cele artate la punctul anterior, se observ

v [ n ] = x [ n ] ( 1) = ( 1) [ n ] ,
n n

(2.17.8)

183

w [ n] = v [ n] h [ n] = = Aadar:
+
k

{( 1) [n]} h [n] =
n

k =

( 1) [ k ] h [ n k ] = h [ n] .

(2.17.9)

1 w [ n ] = h [ n ] = sinc n . (2.17.10) 2 2 La acelai rezultat se ajunge folosind reprezentrile n frecven: X ( j ) = F { [ n ]} = 1 , (2.17.11) V ( j ) = F { x [ n ] e j n } = X j ( ) = 1 , W ( j ) = V ( j ) H t ( j ) = V ( j ) H ( j ) = H ( j ) . (2.17.12) (2.17.13) (2.17.14) (2.17.15)

c)

Din structura sistemului se deduc urmtoarele: n y [ n ] = w [ n ] ( 1) , Y ( j ) = F {w [ n ] e j n } = W j ( ) .


Y ( j )

-3/2

-/2

/2 Figura 2.17.4

3/2

184

PROBLEMA P2.18

Se d sistemul numeric din figura urmtoare:

Figura 2.18.1 a) Determinai expresiile (n timp discret) pentru semnalele y1 [ n ] i y2 [ n ] ; b) Calculai funciile de transfer H1 ( z ) =
2

Y1 ( z ) Y ( z) i H 2 ( z ) = 2 ; X ( z) X ( z)
2

c) Reprezentai grafic H1 ( e j ) i H 2 ( e j ) ; d) Determinai rspunsul y3 [ n ] dac la intrare se aplic x [ n ] = [ n ] ; e) Determinai constanta c astfel nct funcia de transfer a ntregului sistem j s fie H e 2 = 1 pentru h3 [ n ] = sinc n . 2
Rezolvare problema P2.18 a) Expresiile n timp discret pentru semnalele y1 [ n ] i y2 [ n ] rezult (2.18.1) (2.18.2)

din figura 2.18.1 i sunt urmtoarele: y1 [ n ] = x [ n ] + 0,5 x [ n 1] ,


y2 [ n ] = 0,5 x [ n 1] + x [ n 2] .
185

b)

Funciile de transfer H1 ( z ) i H 2 ( z ) rezult din ecuaiile anterioare prin aplicarea transformatei Z : Y ( z) (2.18.3) = 1 + 0,5 z 1 , H1 ( z ) = 1 X ( z)

H2 ( z ) =
c)

Y2 ( z ) = 0,5 z 1 + z 2 . X ( z)

(2.18.4)
2 2

Funciile de transfer n domeniul frecven H1 ( e j ) i H 2 ( e j )

vor avea urmtoarele expresii: H1 ( e j ) = 1 + 0,5e j = (1 + 0,5cos ) j 0,5sin ,

(2.18.5) (2.18.6) (2.18.7) (2.18.8)

H 2 ( e j ) = 0,5e j + e j 2 = e j ( 0,5 + e j ) .
2 2

Aadar:

H1 ( e j ) = (1 + 0,5cos ) + 0, 25sin 2 = 1, 25 + cos , H 2 ( e j ) = 0,5 + e j = 1, 25 + cos .


2 2

Figura 2.18.2 d) Semnalul y3 [ n ] se deduce astfel: (2.18.9) (2.18.10)

y3 [ n ] = c y1 [ n ] + c y2 [ n ] = c x [ n ] + c x [ n 1] + c x [ n 2] ,

y3 [ n ] = c { [ n ] + [ n 1] + [ n 2]} .
186

e)

Semnalul y [ n ] de la ieirea sistemului este:

y [ n ] = y3 [ n ] h3 [ n ] = c { x [ n ] + x [ n 1] + x [ n 2]} h3 [ n ] , (2.18.11)

astfel c se deduce funcia de transfer a ntregului sistemului H ( z ) :

Y ( z ) = c { X ( z ) + z 1 X ( z ) + z 2 X ( z )} H 3 ( z ) ,
H (z) = Y ( z) = c H 3 ( z ) 1 + z 1 + z 2 . X ( z)

(2.18.12) (2.18.13)

Cunoscnd faptul c funcia de transfer H 3 ( j ) corespunztoare

funciei pondere h3 [ n ] = sinc n este cea a unui filtru de tip trece jos 2 ideal avnd H 3 ( j ) = 2 , deducem c: H ( z ) z =e j 2 = c 2 1 + e
Se obine c = 1 . 2
j

+e

j2

= 2c = 1 .

(2.18.14)

PROBLEMA P2.19
La intrarea unui sistem discret, liniar i invariant n timp, avnd funcia de transfer

H e j = F {h[n]} = 1 + 2 cos ( n ) ,
se aplic semnalul discret x [ n ] avnd transformata Fourier:
n =1

( )

11

(2.19.1)

X e j = 1 + 2 cos ( n ) .
n =1

( )

2002

(2.19.2)

a)

Se cere: S se reprezinte grafic H e j , marcnd pe axele de coordonate

( )

valorile semnificative; b) S se determine i s se reprezinte grafic rspunsul y [ n ] al sistemului;


187

Se consider semnalul: 11 2002 z ( t ) = 1 + 2 cos ( n0t ) 1 + 2 cos ( n0t ) [mV ] . (2.19.3) n =1 n =1 S se exprime forma armonic a lui z ( t ) i apoi s se determine puterea debitat pe o rezisten R = 1 de ctre o semnalul w ( t ) obinut la ieirea unui FTS ideal cu ft = 1991,5 f 0 (unde 0 = 2 f 0 ), avnd la intrare semnalul z ( t ) .

c)

Rezolvare problema P2.19 a) Rescriind forma semnalului de la intrare, obinem:


11 11

H e j = 1 + 2 cos ( n ) = e jn =
n =1 n =11

( )

n =

h [ n] e

jn

(2.19.4)

de unde rezult: 1, pentru 11 n 11 h[n] = . 0, n rest Aadar:

(2.19.5)

H e j = e j11

( )

1 e e = e j11 j j 1 e e 2

j 23

23 2

23 23 2 j sin sin 2 = 2 , (2.19.6) 1 1 2 j sin sin 2 2


(2.19.7)

cu valoarea nul n punctele: 23 2 k , k 23m unde m , = k = 2 23 a crei reprezentare grafic este n figura de mai jos.

188

25

Functia de transfer H()

20

15

H()

10

-5 -3 -2 -1 0 Pulsatia[rad/s] 1 2 3

Figura 2.19.1 b) c) Similar punctului a), avem:

2002 2002 j X e = 1 + 2 cos ( n ) = e jn = x [ n ]e jn , (2.19.8) n =1 n =2002 n = de unde rezult:

1, pentru 2002 n 2002 x[n] = , 0, n rest


reprezentat n figura 2.19.2. Rspunsul sistemului este:

(2.19.9)

y [ n] =

k =

x [k ] h [n k ] .

(2.19.10)

Functia x[n] (detaliu) 1.5

189

x[n] 0.5

Figura 2.19.2
Functia h[n] 1.5

h[n] 0.5 0 -15

-10

-5

0 esantioane

10

15

Figura 2.19.3 n calculul semnalului y[n] distingem urmtoarele cazuri: n + 11 < 2002 n < 2013 y[n] = 0
190

i.

ii.

n + 11 2002 2013 n < 1991 n 11 < 2002


n +11 k =2002

y [ n] =

x [ k ] 1 = n + 11 (2002) + 1 = n + 2014 ,

dat

fiind

( x[k ] = 1) n + 11 2002 iii. 1991 n 1991 n 11 2002


y [ n] =
iv.
k = n +11 k = n 11

x [ k ] 1 = n + 11 (n 11) + 1 = 23

n + 11 > 2002 1991 < n 2013 n 11 2002


2002
k = n 11

y [ n] =

x [ k ] 1 = 2002 n + 11 + 1 = 2014 n
Convolutia semnalelor x[n] si h[n] (detaliu) 25

v. n 11 > 2002 n > 2013 y[n] = 0

20

15 y[n] 10 5 0 1990

1995

2000 2005 esantioane

2010

2015

Figura 2.19.4 d) Semnalul y [ n ] de la punctul b) se poate obine i astfel:


191

11 2002 Y e j = X e j H e j = 1 + 2 cos ( n ) 1 + 2 cos ( n ) = n =1 n =1

( )
n =

( ) ( )
jn

y [ n] e
1991 n =1

= 23 + 23 e jn + e jn +
n =1 2013

1991

) ( 2014 n ) ( e
n =1992

2013

jn

(2.19.11) + e jn =

= 23 + 46 cos ( n ) + 2

n =1992

( 2014 n ) cos ( n ) .
0t

Aadar: 11 2002 z ( t ) = 1 + 2 cos ( n0t ) 1 + 2 cos ( n0t ) = Y (e j ) n =1 n =1

(2.19.12) (2.19.13)

z ( t ) = 23 + 46 cos ( n0t ) + 2
n =1

1991

2013

n =1992

( 2014 n ) cos ( n t ) .
0

Cum w(t ) este ieirea unui FTS ideal cu ft = 1991,5 f 0 , se obine:

w (t ) = z (t )
2013 n =1992

n 1992 = 2

2013

n =1992

( 2014 n ) ( cos ( n t ) ) [mV ] .


0

(2.19.14)

Prin urmare, puterea debitat pe o rezisten R = 1 este:

Pw =

2 2013 An 2 = 2 ( 2014 n ) 106 [W ] = 2 n =1992

= 2 n 2 106 = 2
n =1

22

n ( n + 1)( 2n + 1) 6

n = 22

106 [W ] =

(2.19.15)

22 23 45 3 10 [mW ] = 22 23 15 103 [mW ] = 6 = 7590 103 [mW ] = 7,59 [mW ]. =2

PROBLEMA P2.20
192

Se consider schema din figur, n care blocurile cu funcia de pondere h1 [ n ] i h2 [ n ] sunt sisteme discrete liniare i invariante n timp.
h1[n] + x[n] z[n] w[n] [n] h2[n] y2[n] v[n] y1[n]

jn

Figura 2.20.1 unde: Z { x [ n ]} = z , x [ n ] fiind semnal cauzal; 1 2 z 1 + z 2 h1 [ n ] = a n u [ n ] , unde a < 1 ;


1

h2 [ n ] = u [ n ] u [ n 3] ;

- circuit de calcul al corelaiei. Se cere: a) S se determine parametrul a in expresia funciei h1 [ n ] , astfel nct semnalul y1 [ n ] s ia valori ntre 1 i +1 ; b) S se determine i s se reprezinte grafic n domeniul timp semnalele w [ n ] i y2 [ n ] ; c) S se calculeze i s se reprezinte grafic spectrul de amplitudini al semnalului y2 [ n ] . Rezolvare problema P2.20
193

a)

Se pot scrie urmtoarele relaii: x [ n ] = Z 1 { X ( z )} ,


X ( z) =

(2.20.1)

z 1 z z = 2 = = 1 2 j j z 2z +1 1 2z + z z e 4 z e 4 2 2 j j z 1 2 + 2 = = . (2.20.2) j j j j 1 1 1 1 4 4 4 4 1 e z 1 e z 1 e z 1 e z Pentru z > 1 rezult:

x [ n] = j

jn 2 jn n e 4 e 4 u [ n ] = 2 sin 2 4

u [ n] ,

(2.20.3) (2.20.4) (2.20.5)

z [ n] = x [ n] [ n] =

k =

x [ k ] [ n + k ] = x [ n] ,
.

n v [ n ] = x [ n ] x [ n ] = 2 sin 4
1.5

Functia v[n]

0.5

v[n]

-0.5

-1

-1.5

5 6 esantioane

10

Figura 2.20.2
194

Cum h1 [ n ] = a n u [ n ] , atunci: H1 ( ) = a n e jn =
n =0

1 1 = , (2.20.6) j 1 a e 1 a cos + j a sin

, (2.20.7) 1 + a 2 2a cos a sin . (2.20.8) ( ) = arctg 1 a cos Cum v [ n ] ia valori ntre 2 , atunci y1 [ n ] va lua valori ntre 2 H1 . Prin urmare, pentru a se respecta condiia din enun este 4 necesar ca: 2 H1 = 1 . 4 Deci: 1 1 1 = H1 = (2.20.9) 2 2 4 2 1 + a 2a cos 4 2 2 1 + a 2a = 2 a 2a 1 = 0 . (2.20.10) Soluiile acestei ecuaii sunt: 2 2+4 , (2.20.11) a1,2 = 2 1, 41 + 2, 44 3,85 a1 = = = 1,925 , (2.20.12) 2 2 1, 41 2, 44 1, 03 (2.20.13) a2 = = 0,5 . 2 2 Dintre acestea, doar a doua soluie este subunitar n valoare absolut, i deci este singura care convine. b) Din enunul problemei rezult: w [ n ] = v [ n ] + e jn v [ n ] = v [ n ] + (1) n v [ n ] . (2.20.14)
Valorile funciei w [ n ] se obin conform reprezentrilor grafice din figura 2.20.3.

H1 ( ) =

195

Functia v[n] 1.5

0.5

v[n]

-0.5

-1

-1.5

5 6 esantioane

10

Functia v[n]*(-1)n 1.5

0.5
n v[n]*(-1)

-0.5

-1

-1.5

5 6 esantioane

10

Functia w[n] 3

w[n]

-1

-2

-3

5 6 esantioane

10

Figura 2.20.3
196

Semnalul y2 [ n ] este:

y2 [ n ] = w [ n ] h2 [ n ]
k =

(2.20.15) (2.20.16) (2.20.17)

w [ n ] = 2 2 (1) k [ n 2 4k ] y2 [ n ] = 2 2 (1) k h2 [ n 2 4k ] , iar h2 [ n ] = u [ n ] u [ n 3] = [ n ] + [ n 1] + [ n 2] .


Functia y 2[n] 3

k =

y 2[n]

-1

-2

-3

5 6 esantioane

10

Figura 2.20.4 c) Se tie c: 1 X (k ) = N Y2 ( k ) =

x [ n] e
n=o

N 1

2 jk N

, k = 0, N 1 , , k = 0, 7 ,

(2.20.18) (2.20.19) (2.20.20) (2.20.21) (2.20.22)

jk 1 7 y2 [ n ] e 8 n=0 Y2 ( 0 ) = 0 ,

2 n 8

1 2 Y2 ( 2 ) = 0 , Y2 (1) =

2 + 1 (1 + j ) ,

197

Y2 ( 3) =

1 2

2 1 (1 j ) ,
Y2 ( 4 ) = 0 ,

(2.20.23) (2.20.24)

Y2 ( 5 ) =

1 2 Y2 ( 6 ) = 0 , 1 2

(
(

2 1 (1 + j ) ,

(2.20.25) (2.20.26)

Y2 ( 7 ) = de mai jos.

2 + 1 (1 j ) .

(2.20.27)

Spectrul de amplitudini al lui y2 [ n ] este reprezentat grafic n figura


Spectrul de amplitudini al semnalului y 2[n] 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0

|Y 2(k)|

3 4 Valori discrete

Figura 2.20.5

198

PROBLEMA P2.21
Se consider SDLIT din figur:

Figura 2.21.1 unde h2 [ n ] = [ n 4] . Dac x [ n ] = h1 [ n ] , sistemul rspunde cu semnalul:


y [ n ] = [ n ] + 2 [ n 1] + 3 [ n 2] + +4 [ n 3] + 4 [ n 4] + 3 [ n 5] + +2 [ n 6] + [ n 7 ] . Se cere: S se gseasc funcia pondere a ntregului sistem h [ n ] i s se a) reprezinte grafic; S se gseasc i s se reprezinte grafic caracteristica amplitudineb) frecven H e j i caracteristica de faz-frecven ( ) pentru semnalul (2.21.1)

( )

dat; c)

S se gseasc i s se reprezinte grafic rspunsul y1 [ n ] al 3 n n cos ; 5 5 S se gseasc i s se reprezinte grafic rspunsul y2 ( n ) al n 2 , ( u [ n ] este semnalul

sistemului din figur la semnalul x1 [ n ] = 2 cos d)

sistemului dat la semnalul x2 [ n ] = u [ n ] sin treapt unitate discret).

199

Rezolvare problema P2.21 a) Reprezentarea grafic a semnalului y [ n ] este:

Figura 2.21.2 Pe baza relaiilor din enun, se poate scrie expresia semnalului y [ n ] sub forma: y [ n ] = h1 [ n ] * ( h1 [ n ] + [ n 4]) . (2.21.2)

Deoarece suportul lui y [ n ] este 0, 7 , rezult c suportul lui h1 [ n ] este 0,3 . Prin urmare: h1 [ n ] = a [ n ] + b [ n 1] + c [ n 2] + d [ n 3] , (2.21.3) Y ( z ) = H1 ( z ) H1 ( z ) + z 4 , unde:
1 + 2 z 1 + 3 z 2 + 4 z 3 + 4 z 4 + 3 z 5 + 2 z 6 + z 7 =

(2.21.4)

)( a + 2abz + ( b + 2ac ) z + 2 ( ad + bc ) z + + ( c + 2bd + a ) z + 2 ( cd + b ) z + ( c + d ) z


2 1 2 2 3 2 2 4 5

= a + bz 1 + cz 2 + dz 3 a + bz 1 + cz 2 + dz 3 + z 4 = (2.21.5)

+ dz 7 .

Din egalitatea coeficienilor, rezult:

200

d = 1, c + d 2 = 2 c = 1, 2c + b = 3 b = 1, (2.21.6)

c 2 + 2bd + a = 4 a = 1. Semnalele h1 [ n ] i h [ n ] = h1 [ n ] + [ n 4] astfel obinute sunt reprezentate n figurile de mai jos:


2 1.8 1.6 1.4 1.2 h1[n] 1 0.8 0.6 0.4 0.2 0 0 0.5 1 1.5 n 2 2.5 3

Figura 2.21.3

Figura 2.21.4 b)
201

H e j = F {h ( n )} = h ( n ) e j n = e j n =
n =0 n =0

( )

5 sin 1 e5 j 2 j 2 = H e j e j ( ) . = =e j 1 e sin 2 Prin urmare: 5 sin 2 , H ( e j ) = sin 2 5 sin 2 . ( ) = 2 + arg sin 2 Se obin urmtoarele valori caracteristice: H e j0 = 5 ,

( )

(2.21.7)

(2.21.8)

(2.21.9)

( ) H (e ) = 1,
j

(2.21.10) (2.21.11) (2.21.12)

j 3 1 H e 5 = = 1, 236 . sin 3 10

202

Reprezentarea grafic este:

Figura 2.21.5

203

c)

Semnalul x1 (n) se mai poate scrie sub forma: 4 2 x1 ( n ) = cos n + cos n . (2.21.13) 5 5 j 2 j 4 Se observ c H e 5 = H e 5 = 0 , astfel c y1 ( n ) = 0 . Reprezentarea grafic a semnalului x2 [ n ] este cea din figura 2.21.6.
1 0.8 0.6 0.4 0.2 x2[n] 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4 n 5 6 7 8

d)

Figura 2.21.6 Se pot scrie expresiile urmtoare: z 1 z 3 z 1 X 2 ( z ) { Z { x2 [ n ]} = , z >1, = = 1 z 4 1 + z 2 H ( z ) = h [ n ] z 1 = 1 + z 1 + z 2 + z 3 + z 4 . Transformata Z a semnalului y2 [ n ] este: Y2 ( z ) = X 2 ( z ) H ( z ) =
1 2
n =0 4

(2.21.14) (2.21.15)

z 1 =z +z + z 4 , 2 1+ z de unde se obine:

z 1 1 + z 1 1 + z 2 + z 4 = 2 1+ z (2.21.16)

)(

y2 [ n ] = [ n 1] + [ n 2] + u [ n 4] sin ( n 4 ) . 2
204

(2.21.17)

Reprezentarea grafic a semnalului y2 [ n ] este:


1 0.8 0.6 0.4 0.2 y2[n] 0 -0.2 -0.4 -0.6 -0.8 -1 0 2 4 6 n 8 10 12

Figura 2.21.7
PROBLEMA P2.22

Se consider schema din figur n care blocurile cu funciile pondere h1 [ n ] i h2 [ n ] , reprezint sisteme discrete liniare i invariante n timp.

Figura 2.22.1
205

Se dau:

h1 [ n ] = x1 [ n ] , h2 [ n ] =
+
k =

x1 [ n ] = u [ n + 1] u [ n 2] ,

(2.22.1) (2.22.2) (2.22.3)

[n 8 k ] .

Se cere: a) S se determine i s se reprezinte grafic n timp i frecven semnalele x2 [ n ] i x3 [ n ] ; b) c) S se exprime x3 [ n ] ca o sum de exponeniale complexe; S se reprezinte n timp semnalele x4 [ n ] i x5 [ n ] . Rezolvare problema P2.22 a) Reprezentarea grafic a semnalului x1 [ n ] este n figura 2.22.2.
x1 [ n ] = [ n + 1] + [ n ] + [ n 1] ,

(2.22.4) (2.22.5) (2.22.6)

x2 [ n ] = x1 [ n ] * h1 [ n ] , Transformata Fourier a semnalului x2 [ n ] este:


2 1.8 1.6 1.4 1.2

X 1 ( ) = e j + 1 + e j = 1 + 2 cos .

x [n]
1

1 0.8 0.6 0.4 0.2 0 -1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

Figura 2.22.2
206

X 2 ( ) = X 1 ( ) H1 ( ) = X 1 ( ) X 1 ( ) = (1 + 2 cos ) =
2

= e j + 1 + e j

== e j 2 + 1 + e j 2 + 2e j + 2 + 2e j =

(2.22.7)

= e j 2 + 2e j + 3 + 2e j + e j 2 , de unde rezult semnalul x2 [ n ] : Reprezentarea grafic a semnalului x2 [ n ] este cea din figura 2.22.3.
4 3.5

x2 [ n ] = [ n + 2] + 2 [ n + 1] + 3 [ n ] + 2 [ n 1] + [ n 2] .

(2.22.8)

2.5

x [n]
2

1.5

0.5

0 -2

-1.5

-1

-0.5

0.5

1.5

dX 2 ( ) dX 2 ( ) d d

Figura 2.22.3 = 2 (1 + 2 cos )( 2sin ) = 4 (1 + 2 cos ) sin , (2.22.9) (2.22.10) (2.22.11) (2.22.12) (2.22.13) (2.22.14) (2.22.15)
207

= 0 sin = 0 = 0 sau ,

1 2 . cos = = 2 3 Cteva valori caracteristice sunt: 3 X 2 ( 0 ) = (1 + 2 ) = 9 , 2 X = 0, 3 X ( ) = 1 , X = 4. 3

Reprezentarea grafic a funciei X 2 ( ) este prezentat n figura 2.22.4.

Figura 2.22.4 Semnalul x3 [ n ] se obine dup cum urmeaz: x3 [ n ] = x2 [ n ] * h2 [ n ] =


k =

x [ n] * h [ n 8k ] = x [ n 8k ] .
2 2
k =

(2.22.16)

Reprezentarea sa grafic este prezentat n figura 2.22.5.


4 3.5

x [n]
3

2.5

1.5

0.5

0 -10

-8

-6

-4

-2

10

Figura 2.22.5
208

ntruct semnalul x3 [ n ] este periodic, se poate scrie c:


x3 [ n ] = ak e
k =0

jk

2 n 8

= ak e
k =0

jk n 4

,
2 n N

(2.22.17)

unde coeficienii ak sunt calculai n modul urmtor: ak = 1 N

x3[n] e
n =0

N 1

jk

2 n N

1 N

n =

x2 [n] e

jk

= (2.22.18)

1 1 2 = X 2 ( ) 2 = X 2 k N N =k N N 2 ntruct 0 = , se obine: N

1 = X 2 ( k 0 ) . N

1 1 2 ak = (1 + 2 cos ) = 1 + 2 cos k . 8 8 4 =k 4 Se observ c: * an k = ak aN k = ak . ak R + Valorile calculate ale coeficienilor sunt: 9 a0 = , 8


2 1 1 2 a1 = a7 = 1 + 2 cos = 1 + 2 = 8 4 8 2 2 1 1 5,82 = 1+ 2 = 1+ 2 + 2 2 = , 8 8 8 2 1 1 a2 = a6 = 1 + 2 cos = , 8 2 8 2

(2.22.19)

(2.22.20)

(2.22.21)

(2.22.22)

(2.22.23)

2 1 3 1 2 a3 = a5 = 1 + 2 cos = = 1 + 2 8 4 8 2 2 1 0, 41 0,168 2 , = (1 1, 41) = = 8 8 8

(2.22.24)

209

1 1 1 2 2 (2.22.25) (1 + 2 cos ) = (1 2 ) = , 8 8 8 iar reprezentarea grafic a spectrului de amplitudini al semnalului x3 [ n ] a4 = este prezentat n figura 2.22.6.

Figura 2.22.6 b) scrie:


7 1 jk n x3 [ n ] = 1 + 2 cos k e 4 . 4 k =0 8 2

innd cont de descompunerea lui x3 [ n ] n serie Fourier, se poate (2.22.26)

c)

Se observ c e j n = cos n + j sin n = (1) n , aadar x4 [ n ] va fi n

esen dedus din semnalul x3 [ n ] prin schimbarea semnului eantioanelor impare ale acestuia, iar x5 [ n ] se va scrie ca suma dintre x3 [ n ] i x4 [ n ] (rezultatul fiind anularea reciproc a eantioanelor impare ale lui x3 [ n ] i dublarea valorilor eantioanelor pare). Reprezentrile grafice sunt artate n figura 2.22.7.

210

x [n]
4

-1

-2

-3 -2

-1

10

n
7

x [n]
5
3 2

0 -2

-1

10

Figura 2.22.7

211

2.14. Sisteme Numerice Aplicaii n MATLAB Sisteme numerice liniare 1D S se verifice c sistemul numeric reprezentat prin funcia de transfer :
H(z ) = 2.2403 + 2.4908z 1 + 2.2403z 2 1 0.4z 1 + 0.75z 2

este un sistem liniar i invariant n timp.


clear; n = 0:40; a = 2;b = -3; x1 = cos(2*pi*0.1*n); x2 = cos(2*pi*0.4*n); x = a*x1 + b*x2; num = [2.2403 2.4908 2.2403]; den = [1 -0.4 0.75]; ic = [0 0]; y1 = filter(num,den,x1,ic); y2 = filter(num,den,x2,ic); y = filter(num,den,x,ic); yt = a*y1 + b*y2; d = y - yt; figure subplot(3,1,1); stem(n,y); ylabel('Amplitudine'); title('Iesirea pt intrarea ponderata: a \cdotx_{1}[n]+ b \cdot x_{2}[n]'); subplot(3,1,2); stem(n,yt); ylabel('Amplitudine'); title('Iesire: a \cdot y_{1}[n] + b \cdot y_{2}[n]'); subplot(3,1,3); stem(n,d); xlabel('Index temporal n'); ylabel('Amplitudine'); title(' Semnal diferenta');
Iesirea pt intrarea ponderata: a x 1[n]+ b x 2[n] Amplitudine 50 0 -50

10

15

20

25

30

35

40

Iesire: a y 1[n] + b y 2[n] Amplitudine 50 0 -50

0 x 10
-15

10

15

20

25

30

35

40

Semnal diferenta

Amplitudine

5 0 -5

10

15 20 25 Index temporal n

30

35

40

clear; n = 0:40; D = 10;a = 3.0;b = -2;

212

x = a*cos(2*pi*0.1*n) + b*cos(2*pi*0.4*n); xd = [zeros(1,D) x]; num = [2.2403 2.4908 2.2403]; den = [1 -0.4 0.75]; ic = [0 0]; y = filter(num,den,x,ic); yd = filter(num,den,xd,ic); d = y - yd(1+D:41+D); figure subplot(3,1,1);stem(n,y); ylabel('Amplitudine'); title('Iesire y[n]'); grid; subplot(3,1,2);stem(n,yd(1:41)); ylabel('Amplitudine');grid; title(['Iesire pt intrarea decalata x[n -', num2str(D),']']); subplot(3,1,3); stem(n,d); xlabel('Index temporal n'); ylabel('Amplitudine'); title(' Semnal diferenta'); grid;
Iesire y[n] 50 Amplitudine 0 -50

10

15

20

25

30

35

40

Iesire pt intrarea decalata x[n -10] 50 Amplitudine 0 -50

10

15

20

25

30

35

40

Semnal diferenta 1 Amplitudine 0 -1

10

15 20 25 Index temporal n

30

35

40

Funcia de transfer, polii i zerourile unui sistem numeric Fie un SNLI1D caracterizat n domeniul timp discret de ecuaia :
y [ n ] 0.334y [ n 1] = 0.334x [ n ] + 0,334x [ n 1]

S se determine funcia de transfer, polii i zerourile acestui sistem. Funcia de transfer corespunztoare este dat de:

213

H (z) =

Y (z) X (z)

0.334 + 0.334z 1 1 0.334z 1

clear;b=[0.334,0.334]; a=[1.0,-0.334]; figure(1) ; zplane(b,a) ; figure(2) ; freqz(b,a)


Iesire y[n] 50 Amplitudine 0 -50

10

15

20

25

30

35

40

Iesire pt intrarea decalata x[n -10] 50 Amplitudine 0 -50

10

15

20

25

30

35

40

Imaginary Part

1 0 -1 -5 -4 -3 -2 -1 0 1 Real Part 2 3 4 5

20 Magnitude (dB) 0 -20 -40 -60

0.1

0.2

0.3 0.4 0.5 0.6 0.7 0.8 Normalized Frequency ( rad/sample)

0.9

0 Phase (degrees)

-50

-100

0.1

0.2

0.3 0.4 0.5 0.6 0.7 0.8 Normalized Frequency ( rad/sample)

0.9

214

Funcia pondere a unui sistem numeric 1) S se determine funcia pondere pentru un SNLI1D definit prin funcia de transfer :
1 0.4z 1 + 0.75z 2 2) S se compare funciile pondere pentru dou FTB de tip Butterworth i Cauer de ordinul 5, avnd frecvena de tiere normat de 0.5. 1)
clear; N = 40; num=[2.2403 2.4908 2.2403]; den= [1 -0.4 0.75]; y = impz(num,den,N); figure stem(y);xlabel('Index temporal n'); ylabel('Amplitudine'); title('Functia pondere'); grid;
Functia pondere 4

H(z) =

2.2403 + 2.4908z 1 + 2.2403z 2

Amplitudine

-1

-2

-3 0

10

15 20 25 Index temporal n

30

35

40

215

clear;[b,a]=butter(5,0.5);h=impz(b,a,50); figure;subplot(211);stem(h); title('butterworth ') [b,a]=ellip(5,1,20,0.5);h=impz(b,a,50); subplot(212);stem(h); title('cauer ')


butterworth 0.6 0.4 0.2 0 -0.2

10

15

20

25 cauer

30

35

40

45

50

0.6 0.4 0.2 0 -0.2

10

15

20

25

30

35

40

45

50

Stabilitatea sistemelor numerice S se arate c sistemul numeric caracterizat prin funcia de transfer :
H(z) = 1 0.8z 1 1 + 1.5z 1 + 0.9z 2

este stabil.
clear; num = [1 -0.8]; den = [1 1.5 0.9]; N = 200; h = impz(num,den,N+1); parsum = 0; for k = 1:N+1; parsum = parsum + abs(h(k)); if abs(h(k)) < 10^(-6), break, end end

216

figure n = 0:N;stem(n,h) xlabel('Index temporal n'); ylabel('Amplitudine'); figure zplane(num,den);disp('Sum =');disp(abs(h(k)));


3

1 Amplitudine

-1

-2

-3

20

40

60

80 100 120 Index temporal n

140

160

180

200

1 0.8 0.6 0.4 Imaginary Part 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -1 -0.5 0 Real Part 0.5 1

217

Conectarea n cascad a sistemelor numerice Fie dou sisteme numerice definite prin funciile de transfer urmtoare :
H1 (z) = H 2 (z) = 0.3 0.2z 1 + 0.4z 2 1 + 0.9z 1 + 0.8z 2 0.2 0.5z 1 + 0.3z 2 1 + 0.7z 1 + 0.85z 2

Artai c funcia de transfer a sistemului numeric obinut prin conectarea n cascad a celor dou sisteme este egal cu produsul funciilor de transfer ale acestora.
clear;x = [1 zeros(1,40)];n = 0:40; den = [1 1.6 2.28 1.325 0.68];num = [0.06 -0.19 0.27 -0.26 0.12]; y = filter(num,den,x); num1 = [0.3 -0.2 0.4];den1 = [1 0.9 0.8]; num2 = [0.2 -0.5 0.3];den2 = [1 0.7 0.85]; y1=filter(num1,den1,x);y2=filter(num2,den2,y1);d=y-y2; figure;subplot(3,1,1); stem(n,y);ylabel('Amplitudine'); title('Iesirea sistemului rezultat'); grid; subplot(3,1,2); stem(n,y2);ylabel('Amplitudine'); title('Iesirea celor doua sisteme conectate in cascada'); grid; subplot(3,1,3); stem(n,d) xlabel('Index temporal n');ylabel('Amplitudine'); title(' Semnal diferenta'); grid;
Iesirea sistemului rezultat Amplitudine 1 0 -1

10

15

20

25

30

35

40

Iesirea celor doua sisteme conectate in cascada Amplitudine 1 0 -1

0 x 10
-14

10

15

20

25

30

35

40

Semnal diferenta

Amplitudine

0.5 0 -0.5 0 5 10 15 20 25 Index temporal n 30 35 40

218

Funcia indicial a unui sistem numeric S se compare funciile indiciale pentru dou FTB de tip Butterworth i Cauer de ordinul 5, avnd frecvena de tiere normat de 0.5.
clear;[b,a]=butter(5,0.5); unit=[ones(50,1)]; h=filter(b,a,unit); subplot(211);stem(h); title('butterworth') [b,a]=ellip(5,1,20,0.5); h=filter(b,a,unit); subplot(212);stem(h); title('cauer')
butterworth 1.5

0.5

10

15

20

25 cauer

30

35

40

45

50

1.5

0.5

10

15

20

25

30

35

40

45

50

Efectul zerourilor i polilor asupra funciei de transfer a unui sistem numeric 1) Fie sistemul reprezentat prin funcia de transfer H ( z ) = 1 0.5z 1

prezentnd un singur zerou la z = 0.5 . S se studieze variaia lui H e j

( )

la

apropierea zeroului de cercul unitate. 2) Procedai n acelai mod pentru sistemul reprezentat prin funcia de 1 transfer H ( z ) = , care are un singur pol la z = 0.5 . 1 0.5z 1

219

b(1,1:2)=[1 -0.4];b(2,1:2)=[1 -0.6]; b(3,1:2)=[1 -0.8];b(4,1:2)=[1 -1]; figure;hold on;tipcul=['b';'r';'g';'k']; for k=1:4 h=freqz(b(k,:),1); plot(abs(h),tipcul(k,:)) end axis([0 512 0 2.2]);grid on legend('zerou=.4','zerou=.6','zerou=.8','zerou=1',2) title('Influenta zerourilor asupra functiei de transfer') a(1,1:2)=[1 -0.5];a(2,1:2)=[1 -0.6]; a(3,1:2)=[1 -0.7];a(4,1:2)=[1 -0.8]; figure;hold on for k=1:4 h=freqz(1,a(k,:));plot(abs(h),tipcul(k,:)) end axis([0 512 0 5.5]);grid on legend('pol=.5','pol=.6','pol=.7','pol=.8') title('Influenta polilor asupra functiei de transfer')
Influenta polilor asupra functiei de transfer 5.5 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 0 50 100 150 200 250 300 350 400 450 500 pol=.5 pol=.6 pol=.7 pol=.8

220

Teorema lui Plancherel

Pentru a verifica teorema lui Plancherel se poate considera urmtorul exemplu :

x1 (n) = 2n 1, n [1,9] x 2 (n) = 1, 2, 3, 2, 1, 0, 0, ...


w = -pi:2*pi/255:pi; x1 = [1 3 5 7 9 11 13 15 17];x2 = [1 -2 3 -2 1]; y = conv(x1,x2);h1 = freqz(x1, 1, w); h2 = freqz(x2, 1, w);hp = h1.*h2;h3 = freqz(y,1,w); subplot(2,2,1) plot(w/(2*pi),abs(hp));grid title('Produsul spectrelor de amplitudine') subplot(2,2,2) plot(w/(2*pi),abs(h3));grid title('Spectrul de amplitudine a rezultatului convolutiei') subplot(2,2,3) plot(w/(2*pi),angle(hp));grid title('Suma spectrelor de faza') subplot(2,2,4) plot(w/(2*pi),angle(h3));grid title('Spectrul de faza a rezultatului convolutiei')
Produsul spectrelor de amplitudine Spectrul de amplitudine a rezultatului convolutiei 100 100

50

50

0 -0.5

0 Suma spectrelor de faza

0.5

0 -0.5

0.5

4 2 0 -2 -4 -0.5

Spectrul de faza a rezultatului convolutiei 4 2 0 -2 -4 -0.5

0.5

0.5

221

Calculul convoluiilor cu ajutorul transformatei Fourier S se calculeze convoluia ciclic a dou secvene, x i h, de aceeai perioad N, utiliznd TFD1D .
x=[1,2]; h=[3,4]; X=fft(x);H=fft(h);Y=X.*H; y=abs(ifft(Y))

S se utilizeze aceeai metod pentru a realiza convoluia ciclic 2D dintre secvenele :

{ x n ,n , n1 = 0,1; n 2 = 0,1, 2} = [0,1, 2;3, 4,5] h = { h n ,n , n1 = 0,1; n 2 = 0,1, 2} = [1,0,1;1,0,1]


x=
1 2 1 2

x=[1,2,3;4,5,6]; h=[1,0,1;1,0,1]; X=fft2(x); H=fft2(h); Y=X.*H; y=abs(ifft2(Y))

y = 12 12 16 16 14 14

Mecanismul de calcul al convoluiei S se calculeze pas cu pas convoluia a dou secvene discrete. Originea celor dou funcii este presupus la n = 0 .
x=ones(3,1); h=exp(-[1:10]); Ly=length(x)+length(h)-1; lh=length(h);lx=length(x); y=zeros([Ly,1]); xf=fliplr(x); disp(['Apasati pe orice tasta pentru a calcula convolutia']); for i=1:1:Ly indlo=max(0,i-lx); indhi=min(i-1,lh-1); for j=indlo:indhi y(i)=h(j+1)*x(i-j)+y(i); end subplot(311);stem(-lx+i:1:i-1,xf); ylabel('x in oglinda');

222

lim1= max(lh,lx) ;lim2= min(min(min(x),min(h)),0) ; lim3= max(max(x),max(h)) ; axis([-lx,lim1,lim2,lim3]); subplot(312);stem(0:1:lh-1,h);ylabel('h'); axis([-lx,lim1,lim2,lim3]); subplot(313);stem(0:1:Ly-1,y);ylabel('y'); pause end
1 x in oglinda

0.5

0 1

-2

10

0.5

0 0.4

-2

10

0.2

10

12

Convoluia, corelaia i filtrajul adaptat S se scrie un program care s arate c operaia de convoluie realizat de un filtru adaptat este echivalent cu corelaia dintre semnalul cu care acesta este adaptat i semnalul de intrare. Se va considera semnalul de intrare : x(n)=1,-2,3,-4,3,2,1,0,... i filtrul adaptat caracterizat prin funcia pondere : h(n)=3,2,1,-2,1,0,-4,0,3,0,...
h = [3 2 1 -2 1 0 -4 0 3]; x = [1 -2 3 -4 3 2 1]; xa = fliplr(h);

223

y1 = conv(h,x) ; y2 = filter(h,1,[x zeros(1,length(x)+1)]); y3 = xcorr(x,xa); subplot(311);stem(y1); ylabel('Amplitudine'); title('Iesire obtinuta prin convolutie'); grid; subplot(312);stem(y2); ylabel('Amplitudine'); title('Iesire obtinuta prin filtraj'); grid; subplot(313);stem(y3) xlabel('Index temporal n'); ylabel('Amplitudine'); title('Iesire obtinuta prin corelatie'); grid;

Iesire obtinuta prin convolutie 20 Amplitudine 0 -20

10

15

Iesire obtinuta prin filtraj 20 Amplitudine 0 -20

10

15

Iesire obtinuta prin corelatie 20 Amplitudine 0 -20

8 10 Index temporal n

12

14

16

18

224

3. FILTRE NUMERICE (sau DIGITALE) 3.1. Filtrele numerice ca SNLI Iat o comparaie a metodelor de analiz a Filtrelor Analogice (FA) ca Sisteme Analogice, Liniare i Invariante (SALI) i a Filtrelor Numerice (FN) ca Sisteme Numerice, Liniare i Invariante (SNLI).

x(t)
X(s)

FA ca SALI

y (t) Y(s)
Fig. 3.1

x(n)
X(z)

FN ca SNLI

y(n)
Y(z)

a
i =0

d x(t ) d y (t ) = bi (i ) dt dt (i ) i =0
m

(i )

(i )

a y[n i ]= b x[n i ]
i =0 i i =0 M i

Y (s) Ha(s)= = X (s)

b s a s
i =0 i i =0 n i

Y ( z) = Hd(z)= X ( z)

b z
i =0 N i i =0 i

a z

ha(t)=TL-1 {H a (s )}
TF ha(t) Ha(j) ha(t) TL Ha(s)

hd[n]=TZ-1 {H d (z )}
TFTD hd[n] Hd(ej) TZ hd[n] Hd(z)

y(t)=(x*ha)(t) y(t)= x( )ha (t )d


0

y[n]=(x*hd)[n] y[n]= x [i ] hd [ n i ]
i =0

Ha(s)

Hd(z)

TL
ha(t)

TZ
hd(n)

Fig. 3.2
224

3.2. Definiia unui FILTRU NUMERIC (FILTRU DIGITAL)

FN sau FD

este un sistem (n timp) discret caracterizat printr-un ALGORITM NUMERIC cu ajutorul cruia o secven de intrare se transform ntr-o secven (filtrat) de ieire. Algoritmul (de filtrare) poate s reprezinte: o filtrare trece jos, trece sus, trece band, oprete band, sau o operaie de difereniere, integrare etc.
Exemple de FN simple

Schema bloc de prelucrare a unei secvene de intrare ntr-o secven de ieire este descrisa nfigura de mai jos:

x[0], x[1], x[2], x0, x1, x2,,xn


FN

y[0], y[1], y[2], y0, y1, y2,,yn

Fig. 3.3 S considerm cazurile particulare corespunztoare unor FN: y0=kx0 y1=kx1 yn=kxn FN tip trece tot y2=kx2 (cu ctigul k) .. FN tip trece tot (cu ntrziere) yn=xn-1 y0=x-1 y1=x0 y2=x1 .. y0=(x0+x-1)/2 y1=(x1+x0)/2 y2=(x2+x1)/2 =x0 y-1 0 y1=x1+y0 =x1+x0 y2=x2+y1 =x2+x1+x0 =x3+x2+x1+x0 y3=x3+y2 y0=x0+y-1

FN de mediere

x + x n 1 yn = n 2

FN recursiv (tip sumator)

yn=xn+yn-1

225

3.3. Funcia de transfer a unui Filtru Numeric (FN)

S considerm schema general de filtrare a unei secvene de intrare x[n] ntr-o secven de ieire y[n]:

x[n-2], x[n-1], x[n]

FN ca SNLI

y[n-2], y[n-1], y[n]

Fig. 3.4

De exemplu, un FN poate fi caracterizat de ecuaia liniar n timp discret: a0 y[n]+a1 y[n-1]+a2 y[n-2]=b0 x[n]+ b1 x[n-1]+ b2 x[n-2] Dac a0=1, rezult c secvena de ieire este dat de relaia: sau : (3.1)

y[n]= b0x[n] + b1x[n-1] + b2x[n-2] - a1y[n-1] - a2y[n-2] yn= b0xn+ b1xn-1+ b2xn-2 - a1yn-1- a2yn-2

(3.2.a) (3.2.b)

Aplicnd Transformata Z ambilor membri rezult c: Y(z)=b0X(z)+b1z-1X(z)+ b2z-2X(z) -a1z-1Y(z) - a2z-2Y(z) Funcia de transfer a filtrului numeric considerat are expresia : H(z)= (3.3)

Y ( z ) b0 + b1 z 1 + b2 z 2 = X ( z ) 1 + a1 z 1 + a 2 z 2

(3.4)

3.4. Avantajele FN

-flexibilitate, prin modificarea algoritmului; -uor de proiectat, testat i implementat pe un microprocesor sau DSP; -stabilitate ridicat n raport cu timpul i temperatura; -siguran n funcionare, dat de tehnologiile integrate; -modularitate; -versatilitate n prelucrarea semnalelor; -aplicabilitate n JF i RF.
226

3.5. Etapele proiectarii unui FN

1. Rezolvarea problemei aproximrii caracteristicii de amplitudine dorite a filtrului, care conduce la obinerea funciei de transfer H(ej); 2. Alegerea schemei de realizare; 3. Cuantizarea coeficienilor funciei H(z), corespunztoare unei lungimi finite de reprezentare; 4. Cuantizarea variabilelor: semnalul de intrare, ieire i a semnalelor intermediare; 5. Verificarea prin simulare (of-line) a modului n care filtrul proiectat satisface exigenele impuse. De regul, etapa 5 conduce la reluarea etapelor 2-4!
3.6. FN cu rspuns finit (la impulsul Dirac) FN tip Rspuns Finit la Impuls (RFI) (FIR=Finite Impulse Response)

S considerm schema generala de prelucrare : x[n] X(ej) X(z)


FN-FIR

y[n] Y(ej) Y(z) Fig. 3.5

n timp discret, putem nota pentru un FN de tip FIR c: y[n]=b0x[n]+b1x[n-1]++bMx[n-M] = bi x [ n i ]


i =0 M

(3.5)

Aplicnd Tansformata Z ambilor membri ai ecuaiei de mai sus se obine : TZ{y[n]}=TZ{ bi x [ n i ] }= bTZ { x[n i ]} , astfel c : i
(i ) (i )

Y(z)= bi z i X ( z )
i =0

(3.6)

n planul variabilei z, funcia de transfer a FN de tip FIR este : HFIR(z)= Y ( z ) Z {y[n]} M = = bi z i X ( z ) Z {x[n]} i =0
227

(3.7)

iar rspunsul pondere al FN de tip FIR este dat de relaia: hFIR[n]= TZ 1 { H FIR ( z )} = biTZ 1 { z i } = bi [ n i ]
M i i =0

=b0[n]+ b1[n-1]+ + bM[n-M]

(3.8)

Dac la intarea unui FN de tip FIR se aplic secvena x[n]=[n], atunci rspunsul pondere al filtrului este notat (tradiional) cu h[n]: x[n]=[n]
FN FIR

h[n] Fig. 3.6

n general, pentru un FN-FIR, secvena de ieire y[n] este dat de relaia: y[n]=b0x[n]+ b1x[n-1]+ b2x[n-2]++bMx[n-M] Daca x[n]=[n], atunci rspunsul pondere va fi: y[n]= h[n]=b0[n]+b1[n-1]+b2[n-2]++bM[n-M] iar pentru n=0,1,2,3,4,, M se obine: [n=0] h[0]=b0[0]+b1[0-1]+b2[0-2]++bM[0-M] =b0 [n=1] h[1]=b0[1]+b1[1-1]+b2[1-2]++bM[1-M] =b1 [n=2] h[2]=b0[2]+b1[2-1]+b2[2-2]++bM[2-M] =b2 .. [n=M] h[M]=b0[M]+b1[M-1]+b2[M-2]++bM[M-M]=bM n consecin, rspunsul pondere h[n] al unui FN tip FIR este: hFIR={b0 ,b1 ,b2 ,,bM} iar funcia de transfer a unui FN tip FIR are expresia: HFIR(z) = bi z i
= hi z i = h0+h1z-1+h2z-2++hMz-M
228
i =0 M

(3.9) (3.10)

(3.11)

3.7. FN tip FIR cu faz liniar

Expresia general a funciei de transfer H(z) a unui FN de tip FIR este: H(z)= h[i]z-i = h[0]+h[1]z-1+ h[2]z-2++ h[N-1]z-(N-1)
i =0 N 1

(3.12)

Dac coeficienii h[i] ai funciei de transfer ndeplinesc condiiile de mai jos, obinem urmtoarele tipuri de FN tip FIR, care vor avea caracteristica de faz liniar:
h1

TIP 1 N=impar h[n] cu simetrie par TIP 2

1 0,5 -1 0 1 2 3 4

h2
1

N=par h[n] cu simetrie par

0,5 -1 0 1 2 3 4

h3
1

TIP 3
-1 0 1 2

N=impar h[n] cu simetrie impar TIP 4 N=par h[n] cu simetrie impar

-1

h4
1 2 -1 0 -1 1 3 4

229

3.8. Proiectarea FN-FIR prin metoda ferestrelor (sau metoda seriei Fourier) Algoritm

1. Se d rspunsul dorit n frecven pentru FN-FIR, notat cu Hd(ej), care este o funcie periodic n , cu perioada 2; 2. Se determin rspunsul pondere h[n] al FN : h[n]=TFTD-1{Hd(ej)}=
1 2

Hd(ej) ejnd

(3.13)

3. Se trunchiaz rspunsul pondere h[n] pentru a obine rspunsul pondere finit al unui FN-FIR:

h[n]=h[n]w[n]

(3.14) o funcie fereastr de lungimeN

4. Se calculeaz funcia de transfer a FN-FIR: H(ej)=TFTD{h[n]}=TFTD{h[n]w[n]} (3.15)

5. Se compar funcia de transfer obinut H(ej) cu funcia de transfer dorit Hd(ej) pentru FN-FIR. n figura de mai jos, sunt ilustrate grafic aceste etape n domeniile timp (discret) i frecven.

230

H (e j ) = FD {h [n]}

Filtrul dorit
1 2

h [n ]= sinc 2 n
8

TFTD

-7

-6 -5 -4

-3
1 3

-2 -1 0

1 2

3
1 3

4 5 6

n 8 9 10

W (e j ) = FD {kN d [n]}

Functia fereastra
1

w d[n ]

n
N ... -3 -2 -1 0 2

1 2 3 ... N
2

~ H ( e j ) = H ( e j ) W ( e j )
Filtrul obtinut

-3
N ... 2

~ h[n]= h [n ] wd[n ]

3 -2 -1 0 1 2
... N 2

Fig. 3.7
EXEMPLU de proiectare a FN-FIR prin metoda ferestrelor

1. Proiectai un FN-FIR tip trece jos pentru care se impune urmtoarea caracteristic de transfer(dorit) n domeniul frecven :
Hd(ej) 1
2

0 2

Fig. 3.8 2. Rezult rspunsul pondere h[n] al FN:


231

1 h[n]= 2

1 e
2

jn

d =

1 1 jn e 2 jn

2 2

jn 1 jn n 1 1 2 sin n = sinc n e e = 2 jn 2 2 2 n

Reprezentarea grafic a rspunsului pondere h i truncherea sa temporal:

1 -3 -6 -5 -4 -2 -1

1 2

h[n] 1 3 7 4 5 6 8 n

Fig. 3.9 3. Se trunchiaz rspunsul pondere h[n] cu w[n] rezultnd: h[n]=h[n]w[n]=

1 1 1 + [n 1] + [n + 1] 2

4. Se calculeaz funcia de transfer a FN-FIR astfel proiectat: H(ej)=TFTD {h[n]} =


1 2 + cos 2

5. Comparai H(ej) cu Hd(ej) in figura de mai jos. Implementarea FN-FIR proiectat presupune calculul funciei de transfer: H(z)=

Y ( z) 1 1 1 1 1 = TZ {h[n]} = + z 1 + z +1 = + ( z + z 1 ) X ( z) 2 2

Rezult c :
232

H(ej)=

1 1 j 1 2 + (e + e j ) = + cos 2 2

Reprezentrile grafice ale caracteristicii dorite Hd(ej) i a celei obinute H(ej) pentru FN-FIR sunt date n figura de mai jos:
|HFIR()|
1,14 1 0,5 0,14 0 caracteristica dorita caracteristica obtinuta de FN-FIR

Fig. 3.10

Comentarii : 1. Prin mrirea ordinului filtrului se pot obine aproximri mai bune ale condiiilor impuse; 2. Prin alegerea unui alt tip de fereastr (nu dreptunghiular), se poate obine o mbuntire a caracteristicii de frecven, la acelai grad al filtrului; 3. Dei condiiile dorite au fost prescrise n domeniul frecvenei, aproximarea s-a calculat n domeniul timp discret, asupra rspunsului pondere h[n]. 3.9 Proiectarea FN-IIR prin metoda eantionrii n frecven

Un FN-IIR este caracterizat de funcia de transfer H(ej): H(ej)=

n =

[n]e jn

iar un FN-FIR este caracterizat de:


N 1 jk n ~ H (k)= h [n]e N n =0

Aceste funcii sunt legate de eantionarea n frecven: ~ H(ej) H [k] 2 =k N k= 0, N 1

n acest caz, pentru un FN-FIR rezult c:


233

N 1 N 1 1 ~ H (z)= h[n]z n = n=0 n=0 N

H [k ] e
k =0

N 1

+ jk

2 n N

n z
n

N 1 jk 2 ~ H [k ] e N z 1 k =0 n =0 jk 2 N N 1 1 1 e z % = H [k ] 2 jk N k =0 1 e N z 1 % H [k ] 1 z N N 1 = + jk 2 N k =0 1 e N z 1 ~ Evalund transformata H ( z ) pe cercul unitate se obine:

1 = N

N 1

(3.16)

% H ( z)

z =e

1 e % H (e j ) = N

j N N 1

k =0

% H [k ] 1 e
jk 2 N

(3.17)
j

EXEMPLU de proiectare a unui FN-FIR prin metoda eantionrii n frecven

Proiectai un FN-FIR de tip trece jos cu caracteristica de frecven ideal eantionat n patru puncte aa cum este ilustrat n figura de mai jos .
caracteristica obtinuta

H(ej)
1
caracteristica dorita

3 2

Fig. 3.11

Valorile eantionate ale funciei de transfer sunt: ~ H (k ) = { ,1,0,1} 1 Rezult c:


234

k=0,1,2,3

N=4

1 z 4 ~ H (z ) = 4 =

k =0

~ H [k ] 1 e
jk 2 4

z 1

1 z 4 1 1 0 1 + + + j3 4 1 z 1 1 jz 1 1 e j z 1 1 1 e 2 z 1 z 4 1 1 1 1 = + + = L = (3 + z 1 z 2 z 3 ) 1 1 1 4 1 z 4 1 jz 1+ z Rezult caracteristica de frecvent a filtrului proiectat: 3 1 1 1 ~ H e j = + e j e j 2 + e j 3 4 4 4 4 3 1 j 2 [2 cos 1] = + e 4 4 Deci, caracteristica de frecven va trece prin cele patru puncte alese i astfel se va realiza un control mai bun al aproximrii n acest domeniu.

( )

3.10 Proiectarea FN-FIR prin optimizare


Fie : - caracteristica dorit a unui FN :

not H d e j = H d ( ) - i caracteristica unui FN tip FIR :

( )

(3.18)

H FIR e j = H FIR ( ) = H FIR , b Pentru =i , i= 1, M - eroarea local de aproximare va fi : (i , b )=Hd(i) - HFIR(i , b )

( )

)
coeficieni necunoscui

(3.19)

(3.20)

Eroarea global de aproximare va fi :


E( b )= 2 ( i , b ) = min ,
M i =1

(3.21)

adic se dorete ca suma ptratelor erorilor locale s fie minim!


235

Vom minimiza Eroarea global de aproximare prin alegerea corespunztoare a coeficienilor b .


EXEMPLU de proiectare a unui FN-FIR prin optimizare, pentru care se impune caracteristica de modul a funciei de transfer din figur:
H

1 Fig. 3.12

Plecnd de la valorile dorite pentru funcia de transfer n dou puncte : ~ H [k ] = { ,0} , se obine : 1 1 ~ H d ( z ) = bi z 1 = b0 z 0 + b1 z 1 = b0 + b1 z 1
n =0

Rezult c: Hd(ej)=b0+b1e-j, astfel ca: Hd(ej0)=b0+b1=1 Hd(ej)=b0-b1=0 Erorile locale de aproximare vor fi: 1=(b0+b1)-1 2=(b0-b1)-0 iar eroarea global de aproximare devine:
2 E( b )= 12 + 2 = (b0 + b1 1) + (b0 b1 ) 2 2

=2 b02 + 2b12 2b0 2b1 + 1 Condiiile de minimizare a erorii globale de aproximare conduc la:
236

E 1 = 0 b0 = 2 b0 E 1 = 0 b1 = b1 2

EXEMPLU: Analiza unui FN FIR de tip PIEPTENE


n cele ce urmeaz sunt analizate n paralel dou Filtre Numerice (FN) reprezentate n figura de mai jos. Rezultatele analizei evideniaz c cel de-al doilea FN este de tip pieptene, n sensul c are o caracteristic de tip multi-opresteband
x[n]

y[n]

x[n]

y[n]

z-1

z-1

z-1

z-1

z-1

z-1

1 1 x[n] + x[n 5] 2 2 1 1 Y [z ] = X [z ] + z 5 X [z ] 2 2 Y (z ) 1 1 5 H (z ) = = + z X (z ) 2 2 1 1 H e j = + e 5 j 2 2 5 5 5 j j 1 j 2 2 e + e 2 =e 2 5 j j 5 = e 2 cos = e 2 cos 2 2 5 H e j = cos H e j = cos 2 2 Iat, comparativ, caracteristicile de frecvena ale celor dou FN: y[n] =

Fig. 3.13 1 1 y[n] = x[n] + x[n 1] 2 2 1 1 Y [z ] = X [z ] + z 1 X [z ] 2 2 Y (z ) 1 1 1 H (z ) = = + z X (z ) 2 2 1 1 H e j = + e j 2 2 j j 1 j2 2 e + e 2 =e 2

( )

( )

( )

( )

237

|H(ej)|
1

|H(ej)|
1

0
5 2 5 3 5 4 5

Fig. 3.14 n general, un filtru de tip pieptene are o caracteristic de frecven periodic, cu perioada 2 / L , unde L este un numr ntreg pozitiv. n cazul exemplului nostru L=5. Dac H(z) este funcia de transfer a unui FN cu o singur banda de trecere (sau de blocare), atunci funcia de transfer a unui filtru numeric de tip pieptene va avea funcia de transfer G ( z ) = H ( z L ) , lucru care se verific n exemplul de mai sus.
APLICAIE: Filtru adaptat unui semnal x[n]

Un filtru adaptat unui semnal x[n] este caracterizat de un rspuns pondere hFA [n] = x[n0 n] . Aceasta permite scoaterea semnalului din zgomot aditiv.
x[n] xf [n]

hFA

Fig. 3.15
zg [n]

n practic, un semnal determinist x[n], transmis printr-un canal, este corupt (aditiv) de un zgomot zg [n] , care are un caracter aleator, aa cum este ilustrat n schema bloc de mai sus. Filtrul Adaptat, caractetizat de rspunsul pondere hFA , va maximiza la ieirea sa raportul semnal pe zgomot. Se demonstreaz c funcia pondere a filtrului adaptat unui semnal s[n] trebuie s aib expresia:
hFA [ n ] = s [ n0 n ]
238

(3.22)

n reprezentrile grafice ce urmeaz s-a considerat c semnalul x[n] este o secven numeric periodic, care simuleaz o succesiune de 1 si 0, iar FA este caracterizat de rspunsul pondere h fa [n] din fig. 3.16. x[n]
1

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

zg[n] n 0 s[-n]

n
hfa[n]=s(4-n) 1

n
0 1 2 3 4

Fig. 3.16

Conform sistemului de prelucrare rezulta c: xf [ n ] = { x [ n ] + zg [ n ]} hfa [ n ] = x [ n ] hfa [ n ] + zg [ n ] hfa [ n ] Se demonstreaz c hfa[n] care maximizeaz raportul S
Z

este : (3.23)

hfa [ n ] = C s [ n0 n ] = C s [ 4 n ]
239

APLICAIE: Sistem de comunicaii cu spectru mprtiat.

Fie un SN care simuleaz principalele funciuni ale unui sistem de comunicaii cu spectru mprtiat
Detector d[n] c[n] hfa[n] yf[n] y[n]=d[n] c[n] yf [n] FA hfa[n]=s[4-n]

2 0 1 3

Fig. 3.17 Reprezentrile grafice de mai jos ilustreaz principalele prelucrri ale unui SN cu spectru mprtiat. S presupunem c mesajul n banda de baz ce trebuie transmis este dat de secvena {-1,-1,+1,+1,-1}. Eantionarea mesajului binar (cu cinci eantioane pe simbol), conduce la obinerea secvenei de date d[n]. Se poate genera un cod pseudo-aleator c[n], cu ajutorul cruia se realizeaz mprtierea spectrului semnalului de date d[n]. Pentru recuperarea la recepie a mesajului, se folosete un filtru adaptat cu funcia pondere hfa[n]=c[4-n] pentru n=0,1,2,3,4. Dac vizualizai semnalul yf[n], de la ieirea filtrului adaptat, vei constata c are valorile maxime: {-1,-1,+1,+1,-1} la momentele discrete de timp: n= 4,9,14,19,24, valori ce corespund mesajului iniial. Detectorul de la ieirea sistemului poate reface mesajul n banda de baz.

240

mesaj
t

,,-1 d[n]
-1

,,-1

,,+1

,,+1

,,-1

0 1

9 10 11 12 13 14 15 16 17 18 19

20 21 22 23 24

+1

c[n]
-1

+1

Fig. 3.18

241

3.11. FN cu rspuns infinit (la impulsul Dirac) FN-RII (IIR-Infinite Impulse Response) S considerm schema bloc a unui filtru Numeric (FN) de tip IIR:
x[n] X(ej) X(z) FN tip IIR y[n] Y(ej) Y(z)

Fig. 3.19 n timp discret, relaia ntre secvenele de intrare x[n] i de ieire y[n] este : y[n]=b0x[n]+b1x[n-1]++bMx[n-M]-a1y[n-1]--aNy[n-M] (3.24)

n planul variabilei z, se obine funcia de transfer a unui FN tip IIR de forma:


Z { y[n]} HIIR(z)= = = X [ z ] Z { x[n]} Y [ z]

b z
i =0 N i i =1

1 + ai z i

(3.25)

Rspunsul pondere hIIR [n] i funcia de transfer H IIR (z ) sunt perechi Transformate Z, adic:
TZ

hIIR[n]

HIIR(z)

(3.26)

Exemplu de FN tip IIR


S considerm schema unui FN tip IIR din figura de mai jos:
x[n]
1 2

z-1

y[n]

Fig. 3.20

1 2

242

Rezult c: 1 1 y[n] = x[n] + y[n 1] 2 2 astfel c, n planul variabilei z rezult: 1 1 Y [ z ] = X [ z ] + z 1Y [ z ] 2 2 Funcia de transfer a FN-IIR din figur are expresia: 1 Y ( z) 1 2 H IIR ( z ) = = = 1 X ( z) 2 z 1 1 z 1 2 iar rspunsul pondere corespunztor este : hIIR [n] = TZ 1 { H IIR ( z )} = TZ 1 0.5 1 0.5 z 1

11 1 = u[n] = 22 2

n +1

u[n]

Reprezentarea grafic a rspunsului pondere a FN tip IIR este : Fig. 3.21 hIIR[n] 1 1 2 4 1 8 0 1 2 3 4 7


5 6

243

3.12. Metode n proiectarea FN tip IIR

1. Proiectarea unui FN-IIR dintr-un FA prototip, care poate fi ilustrat de schema bloc : Date de proiectare Proiectarea unui FA Discretizare t nT n T=1

FN

Proiectarea Unui FA tipFTJ prototip

Transformata De frecventa -FTS -FTB -FOB ,etc

FA prototip

h(t) Ha(s)

hIIR[n] HIIR(z)

Fig. 3.22 2. Proiectarea unui FN-IIR direct n planul z prin metode de optimizare ale valorilor coeficienilor ai ,bi astfel nct : bi z i B( z ) H FN IIR ( z ) = i = (3.27) ai z i A( z ) s aproximeze (optim) caracteristicile impuse unui FN-IIR. Specificarea datelor de proiectare pentru un filtru numeric (FN) se face adesea n valori normate. n figura de mai jos se prezint cteva metode de normare a frecvenelor limit a benzilor de trecere i blocare pentru cazul unui FTJ. 244

Fp
1000Hz

Fs
2000Hz

8000Hz

Fe 2

Fe
16000Hz

F [Hz]

=2F [rad/s]
2 1000Hz 2 2000Hz

Fe

2Fe

=
0,125 0,25

2Fe = Fe Fe

F . f= (Fe/2)
1/8= 0,125 1/4= 0,25

2 (frecventa normata)

F [Hz]=f(Fe/2)
0,125 8000 0,25 8000 = 2000 = 1000

8000

Fe 2

Fe

Fig. 3.23

245

3.13. Proiectarea FN-IIR prin metoda aproximrii numerice a ecuaiei difereniale ce caracterizeaz un FA

Un FA este caracterizat de :
d (i ) y (t ) m d ( i ) x (t ) = bi dt ( i ) dt (i ) i =0 i =0 Aproximarea numeric a derivatei de ordinul unu este:

ai

(3.28)

dy (t ) dt

t = nT

y (nT ) y (nT T ) T

(3.29)

Aplicnd Transformata Laplace membrului stng relaiei de mai sus i Transformata Z membrului drept, se obine:

dy (t ) TL dt

t = nT

y (nT ) y (nT T ) T T

(3.30)

Rezult c, prin discretizare, se obine corespondena:


sY(s)
1 z 1 Y ( z) T (3.31)

rezultnd transformarea de variabil:

1 z 1 T

T =1

(1-z-1)

(3.32)

astfel nct, plecnd de la funcia de transfer a FA, se obine, prin transformare de frecven, funcia de transfer H IIR ( z ) a FN:

H a (s) s 1 z T
1

HIIR(z)

(3.33)

246

EXEMPLU de proiectare a unui FN-IIR dintr-un FA prin aproximarea numeric a ecuaiei difereniale Fie FA-RC : 1

U1(s) 1

U2(s)

Fig. 3.24

care este caracterizat de funcia de transfer:


U 2 ( s) 1 = U 1 ( s) s + 1 nlocuind pe s cu (1-z-1) rezult funcia de transfer a FN-IIR: H a ( s) =
H IIR ( z ) = 1 1 = 1 (1 z ) + 1 2 z 1

i corespunztor, ecuaia n timp discret:

y[n] =

1 1 x[n] + y[n 1] 2 2

de unde, se calculeaz funcia de transfer n domeniul frecven: H IIR (e j ) = 1 1 H IIR (e j ) = j 2e 5 4 cos

Iat o comparaie ntre funciile modul corespunztoare FA i FN:


Ha =

0 1 1

0,2 0,98 0,98

= 1,57 0,57 0,44

2 0,44 0,54

=3,14 0,3 1 3 0

1 1+ 2 1

Hd =

5 4 cos

247

3.14. Proiectarea FN-IIR prin metoda invarianei la impulsul unitate Algoritm : 1. Se calculeaz Ha(s) a FA prototip 2. Se determin ha (t ) = TL1 { H a ( s )}

3. Se determin rspunsul pondere a FN astfel nct : ha (nT ) 4. Se calculeaz funcia de transfer a FN: H d ( z ) = TZ {h[n]}

T =1

= h[n]

EXEMPLU de proiectare a unui FN-IIR dintr-un FA prin metoda invarianei la impulsul unitate

Fie FA-RC

U1 1

U2

Fig. 3.25

U 2 ( s) 1 = U 1 ( s) s + 1 2. Rezult c rspunsul pondere al FA este :

1. Deoarece: H a ( s ) =

1 t ha (t ) = TL1 = e u (t ) s + 1 3. Se determin rspunsul pondere al FN tip IIR :

hIIR [n] = ha (nT ) T =1 = e n u[n]


4. Funcia de transfer a FN-IIR va fi dat de expresia: H IIR ( z ) = TZ {hIIR [n]} = TZ {e n u[n]} = e n z n
n =0

1 1 = 1 1 1 e z 1 0,37 z 1 248

3.15. Proiectarea unui FN tip IIR prin metoda transformrii biliniare

1. Se determin Ha(s) a FA prototip 2. Se calculeaz caracteristica de frecven a FA:


H a ( j) sau a()=20 lg H a ( j )
1

3. Se determin HIIR(z) a FN utiliznd transformarea biliniar: HIIR(z)= H a ( s) s 2 1 z T 1 + z 1


1

(3.34)

4. Se calculeaz caracteristica de frecven a FN, care se compar cu cea a FA prototip (i cu datele prescrise FN!)
EXEMPLU de proiectare a unui FN-IIR dintr-un FA prin metoda transformrii biliniare

Fie FA-RC

U1(s) 1

U2(s)

Fig. 3.26

1. Deorece:
H a ( s) =

U 2 ( s) 1 = U 1 ( s) s + 1 1 2. Rezult c: H a ( j) = 1 + 2 1 + z 1 1 = = 3. Hd(z)=Ha(s) s +1 3 z 1 2 1 z 1 2 1 z 1 s s 1 1 + z 1 T 1 + z 1

4. Caracteristica de frecven a FN este: 249

H d (e j ) =

1 + e j 1 + cos j sin = 3 e j 3 cos + j sin

astfel c:
H d (e j ) = 1 + cos 5 3 cos

3.16 Proiectarea FN-IIR prin metode de optimizare

Fie funcia de transfer a unui FN-IIR de ordinul unu:


H ( z) = b0 + b1 z 1 1 + a1 z 1

Care sunt valorile lui b0 ,b1 ,a1 astfel nct caracteristica de modul a FN s ndeplineasc condiiile din figura de mai jos ? H dorit (e j ) 1

0 t

Fig. 3.27

Valorile parametrilor b0 ,b1 ,a1 se vor determina prin minimizarea funciei criteriu global :

{
NF m =1

H (e jm ) H dorit (e jm )

= min

(3.35)

250

3.17 Aspecte privind IMPLEMENTAREA FN

Schema bloc de implementare unui FN poate fi reprezentat prin :

RAM

P/DSP CPU

ROM

INPUT x (t)

x[n]

A/D

PIA
Periferial

y[n]

Interface Adaptor

D/A

OUPUT y (t)

1 0 1 0 nceputul conversiei A/D Sfritul conversiei A/D

Comand nceputul conversiei A/D

Stare a convertorului A/D

Fig. 3.28

251

3.18 Algoritmul de calcul a unui FN (de ordin 2), descris de ecuaia n timp discret

y[n]= b0x[n]+b1x[n-1]+b2x[n-2]- a1y[n-1]- a2y[n-2]

(3.36)

Schema logic a programului ce va fi implementat soft este :

START
Iniializare variabile x[n-1]=x[n-2]=0 ; y[n-1]=y[n-2]=0
Iniializeaza PIA

Comand nceput conversie Convertete semnalul


NU

A/D complet?
DA

INPUT x[n] ctre CPU


Calculeaz:

y[n]= b0x[n]+b1x[n-1]+b2x[n-2] - a1y[n-1]-a2y[n-2] OUTPUT x[n] ctre D/A

Actualizeaz : y[n-2]=y[n-1] ; x[n-2]=x[n-1] y[n-1]=y[n] x[n-1]=x[n]

Fig. 3.29 252

3.19. Probleme rezolvate

PROBLEMA P3.1 Analizai funciile pondere hi [ n ] , reprezentate grafic n figurile de mai jos, i funciile de transfer H i ( z ) , i = 1, 4 , pentru cele patru tipuri de

FN-FIR cu faza liniar.

Figura 3.1.1 Rezolvare problema P3.1 Funcia pondere h1 [ n ] este de lungime impar i prezint simetrie par:

h1 [ n ] = [ n ] + 2 [ n 1] + [ n 2] .
252

(3.1.1)

Funcia pondere h2 [ n ] este de lungime par i prezint simetrie par: h2 [ n ] = [ n ] + 2 [ n 1] + 2 [ n 2] + [ n 3] . (3.1.2)

Funcia pondere h3 [ n ] este de lungime impar i prezint simetrie impar:


h3 [ n ] = [ n ] [ n 2] .

(3.1.3)

Funcia pondere h4 [ n ] este de lungime par i prezint simetrie impar:


h4 [ n ] = [ n ] + 2 [ n 1] 2 [ n 2] [ n 3] .

(3.1.4)
(3.1.5) (3.1.6)

Funciile de transfer i zerourile acestor tipuri de FN-FIR sunt:


H1 ( z ) = 1 + 2 z 1 + z 2 = (1 + z 1 ) ,
2

H1 ( e

1 1,2

= 1 ,
j

) = 1 + 2e

+e

j 2

=e

(2 + e

+e

)=

H 2 ( z ) = 1 + 2 z 1 + 2 z 2 + z 3 = (1 + z 1 )(1 + z 1 + z 2 ) ,

= e j ( 2 + 2 cos ) ,

(3.1.7)
(3.1.8)

1 3 1 z11 = 1, z2,3 = j , 2 2
H 2 ( e j ) = 1 + 2e j + 2e j 2 + e j 3 = 2e +e
3 j 2 3 j 2 1 j j 1 2 2 e + e +

(3.1.9)

H 3 ( z ) = 1 z 2

(3.1.10) 3 3 j j j 3 3 2 2 2 e + e =e 4 cos + 2 cos , 2 2 = (1 + z 1 )(1 z 1 ) , (3.1.11) (3.1.12)

H 3 ( e j ) = 1 e j 2 = e j ( e j e j ) = =e
j

z11 = 1, z2 1 = 1 ,

(3.1.13)

2 j sin = 2e

sin ,

253

H 4 ( z ) = 1 + 2 z 1 2 z 2 z 3 = (1 z 1 )(1 + 3z 1 + z 2 ) ,
3 5 1 , z11 = 1, z2,3 = 2 2 H4 (e
j

(3.1.14)
(3.1.15)

) = 1 + 2e
+e
3 j 2

2e

j 2

j 3

= 2e

3 j 2

j 1 j 1 2 2 e e +

3 j j j 3 j 3 3 2 2 2 e 2 2sin + sin e e = 2e . 2 2

(3.1.16)

Figura 3.1.2
254

Cunoscnd faptul c funcia de transfer a unui FN-FIR cu faza liniar se j poate scrie H ( e j ) = H 0 ( e j ) e ( ) , unde H 0 ( e j ) este funcia de transfer de faz zero, iar ( ) este funcia de faz continu, aceste mrimi, pentru cele 4 tipuri de filtre analizate mai sus, sunt prezentate n figura 3.1.2 mpreun cu poziionarea zerourilor funciilor de transfer n raport cu cercul de raz unitate.

PROBLEMA P3.2
S se proiecteze folosind metoda transformatei biliniare un filtru numeric pornind de la filtrul analogic caracterizat de funcia de transfer urmtoare: 1 Ha ( s) = . (3.2.1) 1+ s S se determine modulul funciei de transfer n frecven a filtrului proiectat.

Rezolvare problema P3.2 Metoda transformatei bilineare presupune realizarea transformrii urmtoare:
H ( z ) = Ha ( s)
1 z s = 2 1+ z 1
1

1 + z 1 1 + z 1 , = 1 1 2 2z +1+ z 3 z 1

(3.2.2)

n cazul n care presupunem c perioada de eantionare este unitar. Funcia de transfer n frecven a filtrului proiectat este: 1 + e j 1 + cos j sin H ( j ) = H ( z ) z =e j = = , (3.2.3) 3 e j 3 cos + j sin
H ( j ) =

(1 + cos ) + sin 2 2 ( 3 cos ) + sin 2


2

1 + cos . 5 3cos

(3.2.4)

255

de unde se obine:

Figura 3.2.1

PROBLEMA P3.3

Se d filtrul analogic cu caracteristica de transfer H a ( s ) =

1 . Se 1+ s

cer: a) Proiectai filtrul numeric corespunztor celui analogic de mai sus, folosind metoda invarianei la impulsul unitate; b) Determinai i reprezentai grafic caracteristica de frecven a filtrului numeric obinut. Rezolvare problema P3.3: a) Funcia pondere a sistemului analogic H a ( s ) este: (3.3.1) (3.3.2)

1 t ha ( t ) = L1 { H a ( s )} = L1 = e u (t ) , s + 1 iar funcia pondere a filtrului numeric este: h [ n ] = ha ( t ) |t = nT = e nT u ( nT ) |T =1 = e n u [ n ] . Funcia de transfer H ( z ) a filtrului numeric proiectat este:
256

b)

1 . 1 e1 z 1 n=0 n =0 Prin nlocuirea n (3.3.3) a lui z cu e j se obine: 1 1 , H ( e j ) = = j 1 0,37e (1 0,37 cos ) + j 0,37 sin H ( z ) = {h [ n ]} = e n z n = ( e 1 z 1 ) =
n

(3.3.3)

(3.3.4) (3.3.5)

H ( e j ) =

1 . 1,14 0, 74 cos

Figura 3.3.1 n figura 3.3.1 este reprezentat caracteristica de transfer H ( e j ) .

PROBLEMA P3.4

S se proiecteze un filtru numeric trece jos tip FIR prin metoda ferestrelor pentru care caracteristica de frecven dorit H FTJ ( j ) i funcia fereastr w [ n ] sunt date n figurile de mai jos.
H FTJ ( j )

-3/2

-/2

257

/2

3/2

Figura 3.4.1

Figura 3.4.2 Rezolvare problema P3.4 Funcia pondere de suport infinit este:

1 h [ n ] = 2 =

H ( j ) e

j n

1 d = 2

1 e
2

j n

1 1 j n d = e 2 jn

= (3.4.1)

jn 1 jn 2 1 1 2 sin n = sinc n . e e = 2 jn 2 n 2 2 Rezult c: 1 1 1 h [ n ] = h [ n ] w [ n ] = + [ n + 5] [ n + 3] + 2 5 3 1 1 1 1 + [ n + 1] + [ n 1] [ n 3] + [ n 5] . 3 5 Funcia de transfer a filtrului proiectat va fi: 1 1 5 1 3 1 1 1 3 1 5 H (z) = + z z + z + z 1 z + z . 2 5 3 3 5 n domeniul frecven aceasta devine:

(3.4.2)

(3.4.3)

258

H ( j ) =

1 2 e j 5 + e j 5 2 e j 3 + e j 3 + 2 5 2 2 3 1 2 2 2 cos 5 cos 3 + cos , = + 2 5 3

2 e j + e j + 2

(3.4.4) fiind reprezentat n figura 3.4.3.

Figura 3.4.3 Observaie: n cazul unei ferestre care reine doar 7 eantioane din funcia pondere de suport infinit, vom avea: 1 1 1 1 1 h [ n ] = [ n + 3] + [ n + 1] + [ n 1] [ n 3] , (3.4.5) 2 3 3 1 2 2 (3.4.6) cos 3 + cos . H ( j ) = 2 3 n aceast situaie funcia din relaia anterioar este reprezentat n figura 3.4.4.

259

Figura 3.4.4

PROBLEMA P3.5

S se proiecteze un filtru numeric tip trece jos de ordinul 2 tip Butterworth avnd frecvena de tiere f 3dB = 50 Hz i frecvena de eantionare de 500 Hz, utiliznd metoda invarianei la impulsul unitate. Rezolvare problema P3.5 Funcia de transfer a filtrului analogic tip Butterworth de ordinul 2 este: 1 . s + 2s + 1 Pentru denormarea lui H ( s ) se face nlocuirea urmtoare:
H (s) =
2

(3.5.1)

s s = , t 2 f3dB 100 astfel c funcia de transfer devine: 104 2 . H (s) = 2 s + 100 2 s + 104 2 s

(3.5.2)

(3.5.3)

260

Se calculeaz rspunsul la impulsul unitate (Dirac) al filtrului analogic: (3.5.4) Y ( s ) = H ( s ) X ( s ) = H ( s ) 1 = H ( s ) . Aadar:


Y (s) =

104 2
s + 50 2

+ 5000 2

(3.5.5)

Rspunsul pondere n domeniul timp ha ( t ) este:


ha ( t ) = y ( t ) = L1 {Y ( s )} .

(3.5.6)

tiind c: e t sin t 1 , L1 = 2 2 ( s + ) + rezult c: (3.5.7)

ha ( t ) = y ( t ) = 100 2 e50

2t

sin 50 2 t .

(
(

(3.5.8)

Rspunsul la impulsul unitate al filtrului digital va fi: h ( nT ) = ha ( t ) t = nT = 100 2 e 50 2 nT sin 50 2 nT .

(3.5.9)

Calculul transformatei Z a rspunsului la impulsul unitate al filtrului numeric se obine tiind c: z sin aT . (3.5.10) Z {sin naT } = 2 z 2 z cos aT + 1 Rezult n cazul nostru: 0, 4298 z Z {sin ( 222,14nT )} = 2 . (3.5.11) z 1,8058 z + 1 tiind c: Z {e nT x ( nT )} = X ( eT z ) , (3.5.12) se face schimbarea de variabil: z eT z = 1,559 z , care n cazul nostru corespunde relaiei urmtoare:
261

(3.5.13)

0, 2756 z 1 . 1 1,1580 z + 0, 411z 2 Astfel, funcia de transfer H ( z ) a filtrului numeric va fi: Z {e 222,14 nT sin ( 222,14nT )} = 0, 2449 z 1 , 1 1,1580 z + 0, 411z 2 care conduce la ecuaia cu diferene finite urmtoare: y [ n ] 1,1580 y [ n 1] + 0, 411 y [ n 2] = 0, 2449 x [ n 1] , H (z) =

(3.5.14)

(3.5.15) (3.5.16)

y ( nT ) = 0, 2449 x ( nT T ) + 1,1580 y ( nT T ) 0, 411y ( nT 2T ) . (3.5.17)

PROBLEMA P3.6

Se d funcia de transfer care aproximeaz n sens Butterworth caracteristica unui filtru FTJ analogic: 1 Ha ( s) = 2 . (3.6.1) s + 2s + 1 S se determine caracteristica de transfer a filtrului digital utiliznd metoda transformrii biliniare pentru ft = 100 Hz i frecventa de tact 1 1 fT = = = 626 Hz . T 1, 6 ms
Rezolvare problema P3.6 Datorit distorsiunii introduse de transformarea biliniar este necesar o predistorsionare a frecvenei de tiere teoretic determinat din relaia: 2 T 2 1, 6 103 (3.6.2) td = tg t = tg 200 = 687, 2 rad/s . 2 1, 6 103 2 T Se denormeaz funcia de transfer H a ( s ) fcnd nlocuirea:
262

s rezultnd:
1
2

td

s , 687, 2
= 472243,84 , s + 971,85s + 472243,84
2

(3.6.3)

2s s 687, 2 + 687, 2 + 1 Aplicnd transformarea biliniar: 2 z 1 z 1 = 1250 s= , T z +1 z +1 rezult funcia de transfer H ( z ) a filtrului digital tip FTJ:

H (s) =

(3.6.4)

(3.6.5)

= z 1 z 1 1250 z + 1 + 971,85 1250 z + 1 + 472243,84 (3.6.6) 2 z + 2z + 1 = . 6,88 z 2 4, 62 z + 1, 74 Se calculeaz rspunsul n frecven a filtrului digital: ( cos 2 + 2 cos + 1) + j ( sin 2 + 2sin ) H ( e j ) = , ( 6,88cos 2 4, 62 cos + 1, 74 ) + j ( 6,88sin 2 4, 62sin ) (3.6.7) Din relaia (3.6.6) se deduce ecuaia cu diferene finite care descrie funcionarea filtrului digital: y [ n ] = 0,145 x [ n ] + 0, 291x [ n 1] + 0,145 x [ n 2] + (3.6.8) +0, 671y [ n 1] + 0, 253 y [ n 2] .
2

H (z) =

472243,84

PROBLEMA P3.7

Se d funcia de transfer H a ( s ) a unui filtru analogic tip FTJ Butterworth de gradul II, a crei expresie este:
263

1 . (3.7.1) s + 2s + 1 a) Determinai i reprezentai grafic rspunsul pondere hd [ n ] al unui filtru Ha ( s) =


2

numeric tip IIR obinut prin metoda conservrii rspunsului pondere ha ( t ) al filtrului analogic dat; b) Calculai rspunsul pondere al filtrului numeric tip FIR hFIR [ n ] astfel nct:
hFIR [ n ] = hd [ n ] wd [ n ] ,

(3.7.2)

unde wd [ n ] este reprezentat n figura 3.7.1.

Figura 3.7.1 c) Determinai funcia de transfer H FIR ( z ) ; d) Determinai funcia de transfer H FIR ( e j ) ; e) Reprezentai grafic caracteristica de modul H FIR ( e j ) a FN-FIR obinut la punctul d). Rezolvare problema P3.7 a) astfel:
264

Funcia de transfer a filtrului analogic H a ( s ) se poate exprima

1 1 1 , = = 2 s + 2 s + 1 ( s + ) + j ( s + ) j ( s + ) + 2 (3.7.3) 2 . unde = 0, 707 = 2 Ha ( s) =


2

n aceast situaie, funcia pondere ha ( t ) a filtrului analogic dat se determin n felul urmtor: 1 st st 1 ha ( t ) = L { H a ( s )} = H a ( s ) e ds = Rezid {H a ( s ) e } , 2 j (i ) unde polii funciei de transfer sunt s1,2 = j . Aadar: 1 Rezid {H ( s ) e } = + j + + j e(
st + j )t

(3.7.4)

(i )

s = s1,2

Funcia pondere ha ( t ) va fi: ha ( t ) =

1 e( j )t j + j , (3.7.5)

1 t j t 1 t j t e t e j t e j t e t e e e e = = sin ( t ) , 2 j 2 j 2j (3.7.6) t t . (3.7.7) ha ( t ) = 2e 2 sin 2 n aceste condiii, rspunsul pondere hd [ n ] al filtrului numeric tip
IIR cerut este:
e 0,707 n sin ( 0, 707 n ) . (3.7.8) 0, 707 Rspunsul pondere al filtrului numeric tip FIR hFIR [ n ] va fi: hd [ n ] = sin ( n ) = hFIR [ n ] = hd [ n ] wd [ n ] = hd [ 1] [ n + 1] + hd [ 0] [ n ] + hd [1] [ n 1] e n

b)

(3.7.9)

265

Cunoscnd c hd [ 1] = 1,863 , hd [ 0] = 0 i hd [1] = 0, 453 , va rezulta:

hFIR [ n ] = 1,863 [ n + 1] + 0, 453 [ n 1] .

(3.7.10) (3.7.11)

c)

Funcia de transfer H FIR ( z ) este:

H FIR ( z ) = Z {hFIR [ n ]} = 1,863 z + 0, 453 z 1 . Figura 3.7.2

d)

Funcia de transfer n frecven H FIR ( e j ) este:

H FIR ( e j ) = 1,863 e j + 0, 453 z j .

(3.7.12)

e)

Reprezentarea grafic a funciei H FIR ( e j ) este prezentat n figura 3.7.3.

266

Figura 3.7.3
PROBLEMA P3.8

Determinai funcia de transfer a unui filtru numeric tip FTS prin transformare de frecven dintr-un FTJ caracterizat de funcia de transfer urmtoare: 0,175 z 1 H FTJ ( z ) = . (3.8.1) 1 1,318 z 1 + 0, 493 z 2 Rezolvare problema P3.8 Transformarea FTJ-FTS este dat de relaia: z 1 , (3.8.2) z 1 1 z 1 cos (TJ TS ) / 2 . unde = cos (TJ + TS ) / 2 Dar, TJ = 0,5 = 0,16 din reprezentarea grafic a funciei de transfer a FTJ n domeniul frecven din figura 3.8.1.

267

Figura 3.8.1 cos ( 0,12 ) =0,687. Astfel obinem cos ( 0, 28 ) funcia de transfer a filtrului numeric tip FTS: Fie TS = 0, 4 . Rezult c = H FTS ( z ) = H FTJ ( z )
z 1 z 1 0,687

1 0,687 z 1

0,175 =

z 1 0, 687 1 0, 687 z 1
2

z 1 0, 687 z 1 0, 687 + 0, 493 1 + 1,318 1 1 0, 687 z 1 1 0, 687 z 0,120 z 2 0, 258 z 1 + 0,120 0, 059 z 2 0,111z 1 + 0,327

= , (3.8.3)

Caracteristica de transfer n domeniul frecven este reprezentat mai jos.

268

gura 3.8.2

PROBLEMA P3.9

Se d sistemul numeric din figura 3.9.1:


h1 [ n ] x [ n] y1 [ n ]

H 2 ( j )

v [ n]

y2 [ n ]
e j n
269

unde x [ n ] = cos ( 0,1 n ) + cos ( 0,8 n ) , iar h1 [ n ] i H 2 ( j ) sunt cele reprezentate n figurile 3.9.2 i 3.9.3. Se cer urmtoarele: a) Calculai H1 ( e j ) = H1 ( j ) = F {h1 [ n ]} i reprezentai grafic H1 ( j ) ;

b) Calculai i reprezentai grafic rspunsul pondere h2 [ n ] = F 1 { H 2 ( j )} ;

c) Precizai ce tip de filtru reprezint blocurile funcionale caracterizate de h1 [ n ] i H 2 ( j ) ; d) Reprezentai grafic semnalele v [ n ] , y1 [ n ] i y2 [ n ] ; Figura 3.9.2 Figura 3.9.1 Figura 3.9.3 e) Realizai blocul funcional caracterizat de h1 [ n ] cu circuite de ntrziere, h1 [ n ]
0,51 0,31

1 2 3 H 2 ( j ) 2

-3/2

-/2

270 /2

3/2

sumatoare i multiplicatoare; f) Proiectai filtrul numeric de tip FIR, caracterizat de funcia pondere h2 FIR [ n ] , prin metoda ponderrii cu funcia fereastr w[n] din figura 3.9.4, pornind de la h2 [ n ] i/sau H 2 ( j ) . S se reprezinte grafic modulul funciei de transfer a filtrului proiectat H 2 FIR ( j ) .

Figura 3.9.4

Rezolvare problema P3.9 a) Funcia de transfer n domeniul frecven a sistemului caracterizat de funcia pondere h1 [ n ] este: H1 ( e j ) = F {h1 [ n ]} = h1 [ n ] e j n = 0,31 + 0,51 e j + 0,31 e j 2 = =e H1 ( e
j

0,31( e j + e j ) + 0,51 ,
j

n=0

) = 0,31( e

+e

) + 0,51 = 0, 62 cos + 0,51 ,

(3.9.1) (3.9.2)

iar reprezentarea grafic a sa este cea din figura urmtoare.

Figura 3.9.5

271

b)

Rspunsul pondere h2 [ n ] este:


h2 [ n ] = F 1 { H 2 ( j )} = = 1 2
3 / 2

1 2

H ( j ) e d =
j n

2 e j n d =

/2

1 1 j n e jn

3 / 2 /2

= (3.9.3)

j n 1 j 32 n 2e j n j n j n 2 2 2 = e = e e e = j n 2 j n
n

2 ( 1) n sin n = ( 1) sinc n . = n 2 2 Reprezentarea grafic a funciei pondere determinate anterior este prezentat n figura 3.9.6. c) Analiznd forma reprezentrilor grafice ale funciilor de transfer din figurile 3.9.3 i 3.9.5 se deduce c blocul caracterizat de h1 [ n ] este un filtru trece jos, iar blocul caracterizat de H 2 ( j ) este un filtru trece sus.

Figura 3.9.6

272

d) Pulsaiile normate ale celor dou componente cosinusoidale ale semnalului de intrare x [ n ] sunt 1 = 0,1 , respectiv 2 = 0,8 . innd cont de pulsaiile normate de tiere ale celor dou blocuri funcionale ale sistemului numeric din figura 3.9.1 i de tipurile acestora, rezult c semnalele de ieire sunt: (3.9.4) y1 [ n ] = cos ( 0,1 n ) ,
v [ n ] = cos ( 0,8 n ) ,

(3.9.5)
n

y2 [ n ] = e j n cos ( 0,8 n ) = ( 1) cos ( 0,8 n ) . 3.9.7.

(3.9.6)

Reprezentrile grafice ale acestor semnale sunt prezentate n figura

273

e)

Funcia de transfer a blocul funcional caracterizat de h1 [ n ] este:


n =

H1 ( z ) = Z {h1 [ n ]} =

h [ n] z
1

= 0,31 + 0,51 z 1 + 0,31 z 2 ,

(3.9.7)

iar realizarea acestuia folosind circuite de ntrziere, sumatoare i multiplicatoare este cea artat n figura 3.9.8. x[n]
X (z)

z 1

z 1

y1[n]
0,31

Y1 ( z )
0,51 0,31

Figura 3.9.8
f) Funcia pondere h2 FIR [ n ] , respectiv cea de transfer H 2 FIR ( j ) , ale

filtrului numeric proiectat prin metoda ferestrelor au urmtoarele expresii n domeniul timp discret, respectiv frecven: h2 FIR [ n ] = h2 [ n ] w [ n ] = 1 [ n ] 0, 637 [ n 1] 0, 637 [ n + 1] ,
H 2 FIR ( z ) = 1 0, 637 z 0, 637 z ,
1

(3.9.8) (3.9.9) (3.9.10)

H 2 FIR ( e j ) = 1 0, 637 ( e j + e j ) = 1 1, 274 cos .

Figura 3.9.9
274

PROBLEMA P3.10

Se d sistemul numeric liniar i invariant n timp din figura 3.10.1:


x[ n]

w[n]

v[n]

FN1 H1 ( j ) z 1 z 1 a b a

y1[n] y2 [ n ]

j n

z 1

FN2 Figura 3.10.1 unde semnalul de intrare x [ n ] i funcia de transfer H1 ( j ) a filtrului numeric FN1 sunt cele reprezentate n figura 3.10.2, respectiv figura 3.10.3.
x [ n]

1 1 -2 -1 -1 Figura 3.10.2 a) Care este forma secvenei v [ n ] ?


275

3 2 4

5 6

b) Determinai rspunsul y1 [ n ] ; c) Proiectai filtrul numeric FN1 de tip FIR prin metoda ferestrelor folosind fereastra dreptunghiular urmtoare: H1 ( j ) 2

-3/2

-/2

/2 Figura 3.10.3

3/2

1, pentru n 1 . (3.10.1) f [ n] = 0, n rest Reprezentai structura filtrului proiectat; d) Determinai constantele a i b astfel nct y2 [ 0] = y2 [ 2] = 0, 637 = 2 / ,

iar y2 [1] = 1 ; e) Dac filtrul numeric FN2 este filtrul din figura 3.10.1 a crui intrare este secvena v [ n ] , iar ieirea este y2 [ n ] , ce putei spune comparativ despre FN1 i FN2 ? Rezolvare problema P3.10 a) Secvena w [ n ] reprezint produsul secvenelor aplicate la intrarea blocului multiplicator: n w [ n ] = x [ n ] e j n = x [ n ] ( 1) , adic este identic cu secvena treapt unitate w [ n ] = u [ n ] . Din structura sistemului numeric din figura 3.10.1 se observ c: v [ n ] = w [ n ] w [ n 1] , (3.10.3)
276

(3.10.2)

ceea ce nseamn c v [ n ] = [ n ] . b) Faptul c semnalul de la intrarea filtrului numeric FN1 este impulsul Dirac, atunci semnalul de la ieirea sa reprezint funcia pondere a filtrului h1 [ n ] :
y1 [ n ] = h1 [ n ] ,

(3.10.4)

1 h1 [ n ] = TFDI { H1 ( j )} = 2

2 e

j n

d=

/2
/2

1 n n n n = + j sin cos + j sin cos j n 2 2 2 2 Rezult c y1 [ n ] = sinc

n . 2 c) Funcia pondere a filtrului proiectat prin metoda ferestrelor folosind fereastra din relaia (3.10.1) este urmtoarea:

. n n 2 sin = sinc = 2 2 n (3.10.5)

e j n d =

1
j n

e j n

/2
/ 2

h f [ n ] = h1 [ n ] f [ n ] = h1 [ 1] f [ 1] + h1 [ 0] f [ 0] + h1 [1] f [1] = =

[ n + 1] + [ n ] + [ n 1] .

(3.10.6)

Funcia de transfer a filtrului proiectat este: 2 2 H f ( z ) = Z {h f [ n ]} = z + 1 + z 1 ,

(3.10.7)

iar structura filtrului proiectat este cea artat n figura 3.10.4.

277

w [ n]

y1 [ n ]

z-1

Figura 3.10.4 d) Din structura filtrului din figura 3.10.1 se deduce ecuaia cu diferene finite: y2 [ n ] = a v [ n ] + b v [ n 1] + a v [ n 2] = . (3.10.8) = a [ n ] + b [ n 1] + a [ n 2] Se impun condiiile: y2 [1] = b = 1 , (3.10.9) y2 [ 0 ] = a = Aadar, a = 2 2

(3.10.10)

, iar b = 1 .

e) Filtrul numeric FN1 nu este un filtru cauzal, pe cnd filtrul FN2 este un filtru cauzal.

278

PROBLEMA P3.11

Se d sistemul analog-numeric din figura urmtoare:


v ( t ) t = nT = vd [ n ] T =1 v (t ) vd [ n ] CA/N ideal

x (t )

Ha ( s) =

1 s +1

ya ( t )

FN1 h1 [ n ] FN2 H ( j

y1 [ n ]

T ( t ) =

k =

( t kT )
Figura 3.11.1

y2 [ n ]

a) Proiectai filtrul numeric FN1 astfel nct rspunsul su pondere h1 [ n ] s conserve rspunsul pondere al sistemului analogic caracterizat de 1 Ha ( s) = ; s +1 b) Calculai funcia de transfer H1 ( z ) a filtrului numeric FN1. Reprezentai grafic caracteristica de amplitudine H1 ( j ) . Realizai FN1 folosind sumatoare, circuite de ntrziere i multiplicatoare; c) Calculai i reprezentai grafic rspunsul pondere h2 [ n ] dac funcia sa de transfer H 2 ( j ) este cea din figura urmtoare: H 2 ( j ) 2

-3/2

-/2

/2

3/2

Figura 3.11.2
279

d) Proiectai filtrul numeric FN2 ca un filtru numeric cu rspuns finit la impulsul unitate (FIR) prin metoda ponderrii cu fereastra w [ n ] din figura 3.11.3, plecnd de la caracteristica ideal H 2 ( j ) . Calculai i reprezentai grafic caracteristica de modul a FN2 de tip FIR.

Figura 3.11.3 Rezolvare problema P3.11: a) Rspunsul pondere al sistemului analogic H a ( s ) este: (3.11.1)

1 t ha ( t ) = L1 { H a ( s )} = L1 = e u (t ) , s + 1 iar cel al filtrului numerice este: h1 [ n ] = ha ( t ) |t = nT = e nT u ( nT ) |T =1 = e n u [ n ] .

(3.11.2)

280

Figura 3.11.4

b)

Funcia de transfer H1 ( z ) a filtrului numeric FN1 este: 1 . (3.11.3) 1 e 1 z 1 n =0 n=0 Aadar, funcia de transfer n domeniul frecven va fi: 1 1 , H1 ( e j ) = H1 ( z ) z =e j = = j 1 0,37e (1 0,37 cos ) + j 0,37 sin (3.11.4) 2 1 j . (3.11.5) H1 ( e ) = 1,136 0, 738cos Reprezentarea grafic este artat n figura 3.11.5. H1 ( z ) = {h1 [ n ]} = e n z n = ( e 1 z 1 ) =
n

Figura 3.11.5
Y1 ( z ) a filtrului Vd ( z ) numeric FN1, se deduce ecuaia cu diferene finite care exprim funcionarea acestuia: Y1 ( z ) = Vd ( z ) + 0,37 z 1 Vd ( z ) , (3.11.6)

Cunoscnd expresia funciei de transfer H1 ( z ) =

y1 [ n ] = vd [ n ] + 0,37 vd [ n 1] .
281

(3.11.7)

n final, structura FN1 folosind sumatoare, circuite de ntrziere i multiplicatoare este cea din figura 3.11.6. c) Rspunsul pondere h2 [ n ] este:
vd [ n ]

y1 [ n ] z 1
0,37

Figura 3.11.6 h2 [ n ] = = = 1 2 1 2
2

H ( j ) e d =
j n 2 0

3 / 2

/2

2 e j n d =

j n 2 j 32 n e 2 =. e 2 j n

(3.11.8)

2e j n j n j n n 2 2 e e = ( 1) sinc n . 2 j n 2 Reprezentarea grafic a funciei pondere determinate anterior este prezentat n figura 3.11.7. d) Funcia pondere i funcia de transfer ale filtrului proiectat sunt: h2 [ n ] w [ n ] = h2 FIR [ n ] = 1 [ n ] 0, 637 [ n 1] 0, 637 [ n + 1] , (3.11.9)
H 2 FIR ( z ) = 1 0, 637 z 1 0, 637 z1 ,
not

(3.11.10) (3.11.11)

H 2 FIR ( e j ) = 1 0, 637 ( e j + e j ) = 1 1, 274 cos . 3.11.8.


282

Caracteristica de modul a FN2 de tip FIR este prezentat n figura

Figura 3.11.7

Figura 3.11.8

283

3. 20. Filtre Numerice Aplicaii n MATLAB

Comenzi MATLAB pentru proiectarea FN-FIR fir1 fir2 kaiserord firls remez remezord fircls fircls1 cremez firrcos metoda ferestrelor metoda ferestrelor cu caracteristic de frecven prescris estimeaz parametrii pentru fir1 cu fereastra Kaiser utilizeaz metoda celor mai mici ptrate utilizeaz algoritmul Remez pentru proiectarea FIR estimeaz ordinul FIR pentru utilizarea algoritmului Remez utilizeaz metoda celor mai mici ptrate cu constrngeri utilizeaz metoda celor mai mici ptrate pentru FTJ i FTS proiecteaz FIR cu faz neliniar echiriplu proiecteaz un FIR cu caracteristic tip cosinus ridicat

Proiectarea FN-FIR prin metoda ferestrelor Exemplu de proiectare a unui FN-FIR cu n=57 i t=0.4 rad/sec:
h=0.4*sinc (0.4* (-25:25)); subplot(2,1,1); stem(h) [H,w]=freqz (h,1,512,2); Subplot(2,1,2) plot (w,abs (H)), grid

284

0.4 0.3 0.2 0.1 0 -0.1 0 10 20 30 40 50 60

1.5

0.5

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Exemple de proiectare a FN-FIR prin metoda ferestrelor folosind funcia b=fir1 (n,wn,ftype,window)
%a) calculul r?spunsurilor pondere fd1=fir1(8,0.5,boxcar(9));fd2=fir1(9,0.5,boxcar(10)); fh1=fir1(8,0.5,hamming(9));fh2=fir1(9,0.5,hamming(10)); fb1=fir1(8,0.5,blackman(9));fb2=fir1(9,0.5,blackman(10)); %b) calculul caracteristicilor de frecven?? Fd1=abs (fft (fd1,9)); Fd2=abs (fft (fd2,10)); Fh1=abs (fft (fh1,9)); Fh2=abs (fft (fh2,10)); Fb1=abs (fft (fb1,9)); Fb2=abs (fft (fb2,10)); %c) vizualizarea caracteristicilor de frecven?? figure(1); subplot(3,2,1);stem (Fd1); subplot(3,2,2);stem (Fd2) subplot(3,2,3);stem (Fh1); subplot(3,2,4);stem (Fh2) subplot(3,2,5);stem (Fb1); subplot(3,2,6);stem (Fb2) figure(2); [Fd1,w]=freqz (fd1,1,512,2); subplot(3,2,1) plot (w,abs (Fd1)) [Fd2,w]=freqz (fd2,1,512,2); subplot(3,2,2) plot (w,abs (Fd2))

285

[Fh1,w]=freqz (fh1,1,512,2); subplot(3,2,3) plot (w,abs (Fh1)) [Fh2,w]=freqz (fh2,1,512,2); subplot(3,2,4) plot (w,abs (Fh2)) [Fb1,w]=freqz (fb1,1,512,2); subplot(3,2,5) plot (w,abs (Fb1)) [Fb2,w]=freqz (fb2,1,512,2); subplot(3,2,6) plot (w,abs (Fb2))

1.5 1 0.5 0 1 0 5 10

1.5 1 0.5 0 1 0 5 10

0.5

0.5

0 1.5 1

10

0 1

10

0.5 0.5 0 0 5 10 0 0 5 10

286

1.5 1 0.5 0 1 0 0.5 1

1.5 1 0.5 0 1 0 0.5 1

0.5

0.5

0 1

0.5

0 1

0.5

0.5

0.5

0.5

0.5

Proiectarea FN-FIR prin metoda eantionrii n frecven

H[k]=[1 1 0 1]
H(z ) = 1 z N N
N 1 k =0

H[k ]
jk 2 N z 1

1 e

287

r=[1,1,0,1];N=4; for k=0:N-1 ka=k+1;p(ka)=exp (j*k*2*pi/N);K(ka)=0; end [b,a]=residuez (r,p,k); bb (1:N)=b (1:N);bbb=[1,0,0,0,-1]; B=conv (bbb,bb);A=N.*a; H=deconv (B,A);freqz (B,A)

20 Magnitude (dB)

-20

-40

0.1

0.2

0.3 0.4 0.5 0.6 0.7 0.8 Normalized Frequency ( rad/sample)

0.9

50 Phase (degrees) 0 -50 -100 -150

0.1

0.2

0.3 0.4 0.5 0.6 0.7 0.8 Normalized Frequency ( rad/sample)

0.9

Proiectarea unui FN-FIR tip trece jos cu N=30 cu caracteristica de frecven prescris :
f= [0 0.6 0.6 1]; m= [1 1 0 0]; b= fir2 (30,f,m); [h,w]= freqz (b,1,128); plot (f,m,w/pi,abs (h));

288

1.4

1.2

0.8

0.6

0.4

0.2

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Proiectarea unui FN-FIR tip trece sus prin metoda eantionrii n frecven, plecnd de la urmtoarele date de proiectare: -ordinul N=24 -frecvena limit de trecere ft=6 KHz -frecvena de eantionare fe=20 KHz
N=24;wt=6e3; we=1e4; wtn=wt/we; inc=0.01; ff=[0:inc:1]; hh=[zeros(1,wtn/inc) ones(1, (1-wtn)/inc+1)]; b=fir2(N,ff,hh); [h,f]=freqz(b,1,we); subplot (211), plot (f, 20*log10 (abs(h))); subplot (212), plot (f, unwrap(angle(h))*180/pi);

289

50 0 -50 -100 -150

0.5

1.5

2.5

3.5

500 0 -500 -1000 -1500

0.5

1.5

2.5

3.5

subplot (222), plot (f, unwrap(angle(h))*180/pi); Proiectarea FN-FIR tip cosinus ridicat b= firrcos ( n , FO , df , Fs ) frecvena de eantionare banda de tranziie [Hz] frecvena de tiere [Hz] =0Fs/2 iar (FOdf/2)(0,Fs/2) ordinul par a FN-FIR Exemplu : un FN-FIR cosinus ridicat de ordinul N=20 cu f0=0.25
h=firrcos (20, 0.25,0.25);H=fft (h,1024); plot((0:1023)/1024*2,abs(H)),axis ([0 1 0 1.2]);grid

290

0.8

0.6

0.4

0.2

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Proiectarea FN-FIR prin optimizare folosind algoritmul Remez elaborat de Parks-McClellan


b= remez( n , , ftype) hilbert pentru tipul III i IV differentiator pt tipul III i IV vector pondere caracteristica de frecven impus FN-FIR ordinul FN-FIR care va fi caracterizat de b=[b(1),b(2),..b(n+1)] coeficeni f , a , w

Exemplu : proiectarea unui FTB numeric de gradul n=17 specificat prin:


f=[0 0.3 0.4 0.6 0.7 1]; a=[0 0 1 1 0 0]; b=remez (17,f,a); [h,w]=freqz (b,1,512); plot (f,a,w/pi,abs(h));

291

1.4

1.2

0.8

0.6

0.4

0.2

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Proiectarea FN-FIR prin optimizare folosind minimizarea erorilor ptratice b= firls ( n , f , a , w , ftype ) hilbert differentiator vector pondere perechi de vectori care specific caracteristica de frecven prescris filtrului ordinul FN care va fi caracterizat de b(1),b(2),...,b(n+1)

Exemplu: se proiecteaz acelai filtru proiectat prin metoda remez i se compar rezultatele
f=[0 0.3 0.4 0.6 0.7 1]; a=[0 0 1 1 0 0]; bb=firls (17,f,a); [hh,w]=freqz (bb,1,512); plot (w/pi,abs(h),w/pi,abs (hh)); grid

292

1.4

1.2

0.8

0.6

0.4

0.2

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Proiectarea FN-FIR cu faz liniar prin interpolare

b= intfilt (r,1,alpha) b= intfilt (r,n,Lagrange)

293

Proiectarea FILTRELOR NUMERICE tip RII (IIR) 1) Metoda de proiectare FN tip IIR dintr-un filtru prototip

2) Proiectare direct n planul variabilei z


[ b, a ] = butter (n , Wn, options) [z, p, k ]
[b, a ] = cheby1(n , Rp, Wn, options) [z, p, k ] [ b, a ] = cheby2(n , Rp, Rs, Wn, options) [z, p, k ] [ b, a ] = ellip(n , Rp, Rs, Wn, options) [z, p, k ] iar:

buttord cheb1ord [n , Wn ] = ( Wp, Ws, Rp, Rs) cheb2ord ellipord

Exemple de proiectare a unor FA prototip


Proiectai un FA-FTB Cebev tip I de ordinul n = 10 cu Rp = 3dB i F1 = 0.1 (1 = 2F1 = 0.2 ) i F2 = 0.5 (2 = ).
[b,a]=cheby1(10,3,1,'s') freqs(b,a) w1=0.2*pi,w2=pi;Bw=w2-w1;w0=sqrt(w1*w2); [bt,at]=lp2bp(b,a,w0,Bw); w=linspace(0.01,1,500)*2*pi; H=freqs(bt,at,w); semilogy(w/2/pi,abs(H)),grid

294

10

10

-5

10

-10

10

-15

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

200
Phase (degrees)

100 0 -100 -200 -2 10

10

-1

10 Frequency (rad/s)

10

Proiectarea FN prin aproximare n planul z


Proiectai un FN tip FTB cu banda de trecere (1000,2000), benzile de blocare (0,500) i (2500,-), iar Rp = 1dB, Rs = 60dB, cu fe = 10KHz.
[n,Wn]=buttord([1000,2000]/5000,[500,2500]/5000,1,60); [b,a]=butter(n,Wn)

sau :
[n,Wn]=ellipord([1000,2000]/5000,[500,2500]/5000,1,60) [b,a]=ellip(n,1,60,Wn) w=linspace(0.01,1)*pi;freqz(b,a,w)

295

0
Magnitude (dB)

-100 -200 -300 -400

0.1

0.2

0.3 0.4 0.5 0.6 0.7 0.8 Normalized Frequency ( rad/sample)

0.9

500
Phase (degrees)

-500

0.1

0.2

0.3 0.4 0.5 0.6 0.7 0.8 Normalized Frequency ( rad/sample)

0.9

Proiectarea FN-IIR prin metoda invarianei la impuls


Proiectai un FN dintr-un FA-tip Butterworth cu n = 4, Rp = 0.3 dB prin metoda invarianei la impulsul unitate alegnd Fs = 10 Hz n general funcia folosit este:
[bz,az]=impinvar(b,a,Fs)

Dac Fs lipsete, atunci implicit Fs = 1 Hz.


[b,a]=butter(4,0.3,'s');freqs(b,a)

296

10 Magnitude

10

-5

10

-10

10

-2

10

-1

10 Frequency (rad/s)

10

200 Phase (degrees) 100 0 -100 -200 -2 10


-1 0 1

10

10 Frequency (rad/s)

10

[bz,az]=impinvar(b,a,10) real(bz); freqz(bz,az)


100 Magnitude (dB)

-100

-200

0.1

0.2

0.3 0.4 0.5 0.6 0.7 0.8 Normalized Frequency ( rad/sample)

0.9

0 Phase (degrees) -100 -200 -300 -400

0.1

0.2

0.3 0.4 0.5 0.6 0.7 0.8 Normalized Frequency ( rad/sample)

0.9

297

Exemplu: S se proiecteze un FN-IIR tip trece jos dintr-un FA prin metoda invarianei rspunsului la impulsul unitate.
p = wp = 0.2, p = dp = 0.1 s = ws = 0.3, s = ds = 0.01 Se va considera frecvena de eantionare Fs = 24 KHz. S determinm parametri FA. aM = -20lg(1-p) = -20lg0.9 = 0.915 dB am = -20lgs = -20lg0.01 = 40 dB S determinm ordinul FA-Butterworth care satisface aceste condiii :
[n,Wt]=butterord(wp,ws,aM,am,s);

S proiectm FA-Butterworth :
[b,a]=butter (n,Wt,s);

S analizm FA proiectat :
freqz(Ba,Aa)

Se proiecteaz FN din FA prototip :


[Bd,Ad]=impinvar(Ba,Aa,Fs) Comentariu: n Matlab: h[n]=ha(nTs) i nu h[n]=Tsha(nTs). n acest ultim caz se va modifica Bd astfel : Bd = Bd/Ts Se analizeaz FN obinut : freqz(Bd,Ad) Exemplu: Proiectai un FN FTS cu : ws = s = 0.25, s = 0.02 = ds wp = p = 0.35, p = 0.1 = dp dintr-un FA FTS de referin prin metoda invarianei la impulsul unitate pentru Fs = 10 KHz.
ws= 0.25* pi; wp= 0.35*pi; Fs=10000; ds= 0.02;, dp= 0.1; omgp=wp*Fs;omgs=ws*Fs; aM=20*log10(1/(1-dp)); am=20*log10(1/ds); [n omgt]=cheb1ord(omgp,omgs,aM,am, 's'); [Ba,Aa]=cheby1(n,aM,omgp, 'high', 's');

298

figure(1); freqs(Ba,Aa) [Bd,Ad]=impinvar(Ba,Aa,Fs); figure(2); freqz(Bd,Ad)


10 Magnitude 10
-50 0

10

-2

10

10 Frequency (rad/s)

10

10

200 Phase (degrees) 100 0 -100 -200 -2 10


0 2 4 6

10

10 Frequency (rad/s)

10

10

19 Magnitude (dB) 18 17 16 15

0.1

0.2

0.3 0.4 0.5 0.6 0.7 0.8 Normalized Frequency ( rad/sample)

0.9

200 Phase (degrees)

190

180

170

0.1

0.2

0.3 0.4 0.5 0.6 0.7 0.8 Normalized Frequency ( rad/sample)

0.9

299

Proiectarea FN IIR prin transformarea biliniar


Proiectarea FN tip IIR dintr-un FA folosind transformarea biliniar [zd,pd,kd]=bilinear(z,p,k,Fs,Fp) unde Fp este opional i precizeaz frecvena de preaccentuare.
[bd,ad]=bilinear(b,a,Fs,Fp)

H(z) = H(s) cu s = e j iar z = e j


rezult :
= 2arctg

z 1 z +1 (,+) i ( ,+ ) s = 2f s

2f s Opional, pentru Fp 1 Hz :

H(z) = H(s)

s=

2f s z 1 f p z + 1 , = 2arctg tg ( ) fs

tg (

fp fs

2f p

Proiectarea FN IIR dintr-un FA folosind metoda biliniar


S se proiecteze un FN FTJ plecnd de la un FA FTJ de tip Butterworth, Cebev I, Cebev II i Eliptic pentru : wp = p = 0.2, p = 0. 1 = dp ws = s = 0.3, s = 0.01 = ds S determinm parametrii FA : aM = -20lg(1-p) = -20lg0.9 = 0.915dB am = -20lgs = -20lg0.01 = 40dB = (2 / T)tg( / 2) S proiectm FA-prototip :
ws= 0.3; wp= 0.2; ds= 0.01;, dp= 0.1; aM=20*log10(1/(1-dp)); am=20*log10(1/ds); % Sa proiectam FA prototip [nb,wb]=buttord(wp,ws,aM,am, 's'); [nc1,wc1]=cheb1ord(wp,ws,aM,am,'s'); [nc2,wc2]=cheb2ord(wp,ws,aM,am,'s');

300

[nel,wel]=ellipord(wp,ws,aM,am,'s'); [Bb,Ab]=butter(nb,wb,'s'); [Bc1,Ac1]=cheby1(nc1,aM,wc1,'s'); [Bc2,Ac2]=cheby2(nc2,aM,wc2,'s'); [Bel,Ael]=ellip(nel,aM,am,wel,'s'); [Bbd,Abd]=bilinear(Bb,Ab,1); [Bc1d,Ac1d]=bilinear(Bc1,Ac1,1); [Bc2d,Ac2d]=bilinear(Bc2,Ac2,1); [Beld,Aeld]=bilinear(Bel,Ael,1); figure figure figure figure figure figure figure figure (1);freqz(Bb,Ab); (2);freqz(Bc1,Ac1); (3);freqz(Bc2,Ac2); (4);freqz(Bel,Ael); (5);freqz(Bbd,Abd); (6);freqz(Bc1d,Ac1d); (7);freqz(Bc2d,Ac2d); (8);freqz(Beld,Aeld);

Exemplu: Proiectai un FN - FTS pentru :


dintr-un FA FTS de referin prin metoda transformrii biliniare. Se va considera T = 1.
T=1; omgp=(2/T)*tan(wp/2); omgs=(2/T)*tan(ws/2); aM=20*log10(1/(1-dp)); am=20*log10(1/ds); [n,ongt]=cheb1ord(omgp,omgs,aM,am); [Ba,Aa]=cheby1(n,aM,omgt,'high','s'); wa=linspace(0.1,1,500)*2*pi; figure(1),freqs(Ba,Aa); [Bd,Ad]=bilinear(Ba,Aa,1/T); figure(2),freqz(Bd,Ad);

ws = s = 0.25, s = 0.02= ds wp = p = 0.35, p = 0. 1 = dp

301

10 Magnitude

10

-20

10

-40

10

-2

10

10 Frequency (rad/s)

10

200 Phase (degrees) 100 0 -100 -200 -2 10


0 2 4

10

10 Frequency (rad/s)

10

0 Magnitude (dB)

-100

-200

-300

0.1

0.2

0.3 0.4 0.5 0.6 0.7 0.8 Normalized Frequency ( rad/sample)

0.9

10 Phase (degrees)

-5

0.1

0.2

0.3 0.4 0.5 0.6 0.7 0.8 Normalized Frequency ( rad/sample)

0.9

302

Proiectarea FN- IIR prin optimizarea n planul z


Proiectarea unui FN IIR care aproximeaz n sensul erorilor ptratice minime o caracteristic de frecven folosete funcia:
[b,a]=yulewalk(n,f,m)

unde:
m - un vector cu valorile amplitudinilor dorite f un vector cu valorile frecvenelor specificate

Exemplu: Proiectai un FN de gradul n = 8 de tip trece jos, a crui caracteristic de frecven este specificat prin:
f=[0 0.6 0.6 1]; m=[1 1 0 0 ]; [b,a]=yulewalk(8,f,m);[h,w]=freqz(b,a,128); plot(f,m,w/pi,abs(h));

1.4

1.2

0.8

0.6

0.4

0.2

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

303

304

4. ANALIZ I ESTIMARE SPECTRAL

4.1. Semnale numerice aleatoare Secvene aleatoare (stocastice) Un semnal aleator (sau stochastic), notat cu X, este un proces, care se desfoar n funcie de o variabil independent (de obicei-timpul) i este guvernat, cel puin n parte, de legi probabilistice. Modelul matematic al unui semnal aleator poate fi considerat o aplicaie X : T V , astfel c, fiecrui moment t1 T i se poate asocia o variabil aleatoare x [t1 ] cu valori n V. Dac T , semnalul aleator este definit n timp continuu i poate lua valori continue sau discrete. Dac T , semnalul aleator se mai numete i secven (sau serie) aleatoare, putnd avea valori n , , , sau . Un proces aleator n timp discret poate fi descris de: o (singur) realizare:
{x n } = ...x 0 , x1 , x 2 ,..., x n ,... sau, un ansamblu de realizri reprezentate prin:

{x } = ...x 0 , x1 , x 2 ,..., x n ,..., x m ,... n {x } = ...x 0 , x1, x 2 ,..., x n ,..., x m ,... n {x } = ...x 0, x1, x 2,..., x n,..., x m ,... n ..................... { xn } Vom nota cu {xn } : - fie secvena valorilor unei realizri (unice); - fie secvena valorilor dintr-un ansamblu de realizri la momentul n.

304

Funcia de repartiie sau de distribuie de probabilitate de ordinul I este definit de:

Fxn ( x, n) = Prob[ xn x] Fx n ( x, n)

(4.1)

Funcia de densitate de probabilitate de ordinul I este definit de:

(4.2) x Funcia de repartiie sau de distribuie de probabilitate de ordinul II este definit de: (4.3) Fxn , xm ( x n , , n, x m , m) = Prob[ xn x n i xm x m ]
Funcia de densitate de probabilitate de ordinul II este definit

f x n ( x, n ) =

de: f xn , xm ( x n , n, x m , m) =

Fxn , xm

xn , xm Procesul aleator este considerat staionar dac: Fx n+ k , x m+k = Fx n , x m


4.2. Valori medii pe ansamblul realizrilor

(4.4) (4.5)

Valoarea medie a valorilor secvenei xn , la momentul n, este definit de:


+

m xn = E[ x n ] =
+ 2 E[ xn ] =

xf

xn

( x, n)dx

(4.6)

Valoarea medie ptratic statistic este definit de:

f xn ( x, n)dx

(4.7)

Se pot defini momentele centrate de ordinul II, ca de exemplu:


2 2 2 Variana: Var = x = E[( xn mxn ) 2 ] = E[ xn ] mxn

(4.8)

i, n consecin: Dispersia: x = Var


305

(4.9)

4.3. Distribuia uniform

Este definit de funcia densitate de probabilitate (vezi fig. 4.1):


,x<a 0 1 f ( x) = ,a < x < b b a ,x>b 0 i de funcia de repartiie de probabilitate:
F(x)

f (x)
1 b-a

,x<a 0 x a F ( x) = f ( )d = ,a < x < b ba ,x>b 1


x

Fig. 4.1
Momentul statistic de ordinul 1 este definit de:
x= 1 a+b xdx = 2 ba a
b

Deviaia standard este dat de expresia:


2 x =

(b a ) 2 12

306

4.4. Distribuia normal (GAUSS)

Este definit de funcia densitate de probabilitate (v. Fig. 4.2):


1 2 f ( x) = e 2 2 unde: x = m x = m ( x m )2

f ( x m) = 0,5 =1
0

iar: x = i de funcia de repartiie de probabilitate:


F ( x) =

(x-m)

f ( )d =
xm

1 2

( m ) 2 2
2

F ( x m)
1
m =t

0,5 0 x (x-m)

not x m dt =

Fig. 4.2 Funcia de autocorelaie a unui proces de tip gaussian este dat de relaia:
rxx ( n ,m ) = E[ xn xm ] = + +

xm f ( x n ,n , x m,m )dxn dxm

(4.10)

Funcia de autocovariaie (autocovarian) a unui proces gaussian este definit de: cxx (n, m) = E[( xn mxn ) ( xm mxm )* ] = rxx (n, m) mxn m*m x
4.5. Procese staionare

(4.11)

n general, parametrii statistici depind de timp, adic de momentul n n care sunt evaluai. De exemplu:
+

m x [n] = E[ x n ] =

x f

xn

( x, n)dx

(4.12) (4.13)

2 x [n] = E[( x n m x ) 2 ]
n

307

* rxx [n, m] = E[ xn xm ]

(4.14)

n cazul proceselor staionare, parametrii statistici nu depind de momentul evaluarii lor. De exemplu: mx = E[ xn ] este constant cu n
2 x = E[( xn mx ) 2 ] este constant cu n

(4.15) (4.16) (4.17)

iar,
* rxx [n, n + k ] = E[ xn xn + k ] = rxx [k ]

este o funcie (unidimensional) de variabila k, care este diferena ntre momentele de observare. Staionaritatea este o proprietate care se traduce prin invariana la translaia originii timpului (de observare).
4.6. Valori medii temporale

Sunt definite pe o (singur) realizare xn reprezentativ pentru semnalul aleator n timp discret. Astfel: Valoarea medie temporal este definit de: +N ~ = lim 1 xn Nx n N 2 N + 1 n= x unde, expresia din acolad este un estimat pentru ~n Autocorelaia temporal este definit de: +N 1 xx [k ] = lim x n x n+ k N 2 N + 1 n= N unde, expresia din acolad este un estimat pentru xx [k ]

(4.18)

(4.19)

Procesele ERGODICE sunt acelea pentru care mediile pe ansamblul realizrilor sunt egale, n sens probabilistic, cu mediile temporale.

n cazul proceselor staionare i ergodice putem calcula mediile fie


308

pe ansamblul realizrilor, fie pe o singur realizare:


+N 1 xn N 2 N + 1 n= N +N 1 2 variana x = E[( x n m x ) 2 ] = lim N( x n m x ) 2 N 2 N + 1 n= +N 1 * autocorelaia rxx [k ] = E[( x n x n + k ] = lim N( x n x n*+ k ) N 2 N + 1 n= autocovariaia c xx [k ] = E[( x n m x )( x n + k m x ) * ]

media

m x = E[ x n ] = lim

(4.20) (4.21) (4.22)

2 = rxx [k ] m x

= lim

+N 1 N( x n m x )( x n+ k m x ) * N 2 N + 1 n=

(4.23)

2 unde: rxx [0] = E[ x n ] este energia secvenei

(4.24.a) (4.24.b)

iar: c xx [0] =

2 x

Reprezentri spectrale ale secvenelor aleatoare ergodice i de medie m x = 0 , pentru care:


* rxx [k ] = xx [k ] = cxx [k ] = E[ xn xn + k ]

(4.25)

n acest caz, se aplic urmtoarea teorem:

4.7. Teorema WIENER HINCIN


Densitatea spectral de putere i funcia de autocorelaie ale unui proces aleator, staionar sunt perechi transformate Fourier adic: TFTD{rxx [k ]} =

k =

xx

[k ] e jk (4.26)
2

= xx (e j ) = S xx (e j )
= lim

+N 1 Nx n e jn N 2 N + 1 n= unde, s-a notat densitatea spectral de putere a procesului aleator fie cu

309

xx (e j ) , fie cu S xx (e j ) . ntr-adevr:

S xx e

( )
j

2 +N 1 jn = lim E N x[n]e = N 2 N + 1 n =

+N +N 1 = lim E N nN x[m]x [n]e j (m n ) = N 2N + 1 m= =

= lim Dar:

+N +N 1 N nN rxx [ m n] e j( mn) N 2 N + 1 m = =

(4.27)

m = N n = N

f [ n m] =

+2 N

k =2 N

( 2 N + 1 k ) f [k ]

(4.28)

Rezult c:
S xx ( e j ) = lim = deoarece:
N

k j k 1 rxx [ k ] e 2 N + 1 k =2 N
+2 N

k =

r [k ] e
xx

(4.29)

j k

lim

k 2N +1

(4.30)

4.8. Prelucrarea secvenelor aleatoare staionare n SNLI


Fie sistemul din figura 4.3, care prelucreaz o secven aleatoare de intrare x[n] ntr-o secven aleatoare de ieire y[n].

x[n]

SNLI hH

y[n] = ( x h)[n]

Fig. 4.3 Parametrii statistici intrare/ieire corespondeni sunt:


310

mx rxx [k ] xx [k ] S x (e j )

m y = mx H ( e j 0 ) ryy [m] = (rhh rxx )[m] S y (e j ) = S x (e j ) H (e j )


2

(4.31)

m = 0 De exemplu, dac x[n] este un zgomot gaussian, alb cu x 2 x rezulta c: 2 2 ryy [m] = x rhh [m] rxx [k ] = x [k ] (4.32) 2 2 2 S x (e j ) = x S y (e j ) = x H (e j )

4.9. Analiza i estimarea densitii spectrale de putere Analiza spectral const n descompunerea unei mrimi, care variaz n funcie de timp, n componente frecveniale. Este una din tehnicile cele mai obinuite n prelucrarea semnalelor. Analiza spectral experimental este un instrument de investigaie de nenlocuit n numeroase domenii. Instrumentele de msur, care realizeaz automat aceast operaie, se numesc analizoare spectrale. Principalele tehnici de analiz spectral se mpart n dou clase principale: - tehnicile directe (filtrare selectiv, metoda periodogramei etc.); - metodele indirecte (metoda corelogramei, metodele parametrice etc.). Analiza spectral experimental difer de modelul su teoretic, din principalul motiv c observarea semnalului se face pe parcursul unei durate de timp limitate (un numr finit de eantioane - n cazul numeric). Aceasta ne oblig s definim noiunea de estimator. De fapt, aceast densitate spectral, definit prin transformata Fourier a funciei de autocorelaie, rezult n practic n urma calculului asupra observaiilor pe o durat limitat. Analiza spectral se refer la caracterizarea n domeniul frecven a unui semnal i rspunde la ntrebri de tipul: - puterea/energia semnalului este repartizat majoritar la frecvenele joase sau nalte? - sunt rezonane n spectrul semnalului? Dac semnalul este determinist sau reprezint un proces aleator
311

ergodic, atunci se poate calcula Densitatea Spectral de Putere (Power Spectral Density PSD). Dac se analizeaz doar o realizare particular a unui proces aleator, atunci densitatea spectral de putere calculat, reprezint doar un estimat al funciei PSD pentru procesul aleator. n acest sens, tehnicile de analiz spectral furnizeaz (doar) estimatori ai Spectrului de Putere al unui proces aleator.

4.10. Elemente de TEORIA ESTIMRII


Fie un parametru , care caracterizeaz un proces stohastic i o estimare a acestui parametru, bazat pe cunoaterea a n observaii. Deplasarea unui estimat este definit de: B( ) = E[ ] (4.33) Eroarea medie ptratic a unui estimat este definit de: 2 emp( ) = E (4.34) Variana (dispersia) unui estimat poate fi definit de relaia: 2 (4.35) var( ) = 2 = E E ( ) O varian redus indic o slab dispersie a estimrilor n jurul $ valorilor E[ ] . Un estimator converge dac deplasarea B i variana tind ctre zero atunci cnd numrul de observaii N tinde ctre infinit. Consistena unui estimat se exprima prin urmtoarea relaie: dac > 0 lim Prob = 0 , atunci estimatul se spune c este
N

consistent.
4.11. Estimarea Densitii Spectrale de Putere (PSD)

Densitatea Spectral de Putere (Power Spectral Density) pentru un proces aleator x[n], n = 0, , este dat de relaia:
Px (e ) = X (e ) =
j j
2

x[n] e
n=0

j n

(4.36)

312

PERIODOGRAMA este un estimat al PSD i este definit de:

1 PPER (e j ) = N

x
n=0

N =1

[n]e

j n

2 1 X N (e j ) N

(4.37)

unde: X N (e j ) = TFTD{xN [n]} . Pe cercul unitate, pentru N frecvene discrete, definite de:

k = k

2 , N

k = 0, N 1

(4.38)

periodograma , ca estimat al PSD, va fi definit de relaia:


1 PPER [k ] = N

x
n=0

N =1

[n]e

jk

2 2 n N

1 2 X N [k ] N

(4.39)

unde: X N [k ] = TFD{xN [n]}


Metoda lui Welch pentru medierea PERIODOGRAMELOR

nregistrarea unei secvene de lungime N se descompune n p segmente de lungime M, care sunt parial suprapuse cu lungimea L, ca n figura 4.4:
date x[n] de lungime N segment 0 segment 1 L M segment p-1 segment 2

Fig. 4.4 Fiecrui segment xM i se aplic o ponderare cu o fereastr wM, astfel


313

nct:

x w [k ] = x M [k ] wM [k ]

(4.40)

- Se calculeaz periodogramele fiecrui segment:


1 PPER (e j ) = M

x [n]e ( )
w n

2 j n

(4.41)

- Estimatorul Welch se obine mediind periodogramele celor p segmente.


Estimarea PSD folosind CORELOGRAMA

PSD poate fi calculat cu ajutorul funciei de autocorelaie (conform teoremei Wiener-Hincin), astfel inct: Px (e j ) = X (e j ) =
2

k =

xx

[k ]e jk

(4.42)

nlocuind autocorelaia rxx [k ] cu un estimat al su, de exemplu cu:

1 rxx (m) = N

( N 1) m n =0

x [n] x[n + m]
*

(4.43) N ), se obine 10 (4.44)

cu m = 0, M 1 i alegnd M << N (de exemplu: M = estimatul PSD de tip corelogram: P COR (e j ) = rxx [m]e jm
m=0 M 1

4.12. Analiza i estimarea spectral parametric

Metodele parametrice se bazeaz pe modelarea procesului aleator x[n] ca ieirea sistemului, la intrarea cruia s-a aplicat o secven de zgomot alb, cu media zero i varian e2 , aa cum este ilustrat n figura 4.5:
e[n]

SNLI hH
314

x[n]

Fig. 4.5

Un SNLI este descris de funcia de transfer:


B( z ) H ( z) = = A( z ) astfel c: x[n] = bk e[n k ] ak x[n k ]
k =0 k =1 M N

b z
k =0 N k k =1

1 + ak z k

= h[n]z n
n=0

(4.45)

(4.46)

Densitatea spectral de putere pentru procesul aleator staionar x[n] , de la ieirea SNLI, este calculat cu relaia: Px (e j ) = Pe (e j ) H (e j ) = e2
2

b e
k =0 N k k =1

2 jk

1 + ak e

(4.47)
j k

Modelul Auto Regresiv (AR)


e[n]
H [ z] =

SNLI 1 A( hHz)

x[n]

Fig. 4.6

n acest caz, procesul aleator x[n] de la ieirea sistemului din fig. 4.6 este descris de: x[n] = a k x[n k ] + e[n]
k =1 N

(4.48)

i are funcia Densitate Spectral de Putere (DSP) definit de:

Px (e j ) = Pe (e j ) H (e j ) = e2

1 1 + ak e
k =1 N 2 jk

(4.49)

315

Modelul Medie Mobil sau Moving Average (MA)


e[n]
H [ z ] = B( z )

SNLI hH

x[n]

Fig. 4.7

n acest caz, procesul aleator x[n] de la ieirea sistemului din fig. 4.7 este descris de: x[n] = bk e[n k ]
k =0 M

(4.50)

i are funcia Densitate Spectral de Putere (DSP) definit de:


Px (e ) = Pe (e ) H (e ) = bk e
j j j 2 2 e k =o M 2 j k

(4.51)

4.13. Alte metode de analiz spectral

Exist i alte metode de analiz spectral, denumite parametrice, care prin ipotezele lor iniiale nu au fost gndite n mod direct pentru modelarea semnalelor. Anumite metode fac o ipotez de tipul c procesul aleator observat conine componente spectrale (distincte) plus zgomot (de exemplu, metoda Pisarenko, metoda MUSIC, metoda descompunerii n valori proprii sau singulare). Metoda lui Prony este o extensie a acestei idei pentru un caz nestaionar: semnale sinusoidale amortizate ntr-un zgomot aditiv. La frontiera dintre metodele parametrice i neparametrice se gsete metoda lui Capon, care, adesea, este n mod greit numit metoda maximului de verosimilitate. Bazat pe filtrarea selectiv n frecven, metoda este interpretat ca o succesiune a unei transformate Fourier, apoi o operaie de ridicare la ptrat, urmat de o mediere. Rezoluia sa depinde de raportul semnal/zgomot, ca i n cazul metodelor Fourier. Calitatea unei analize spectrale nu poate fi apreciat dect pentru o aplicaie specific. O consecin fundamental este c nu exist un estimator spectral optimal! Optimalitatea depinde att de aplicaia particular considerat, ct i de informaia a priori relativ la forma spectrului.

316

4.14. Estimare spectral i analiz timp-frecven Aplicaii n MATLAB Estimatorul spectral simplu Fie P un proces alb, gaussian, centrat ( m p = 0 ) i de dispersie
2 = 0,25 , definit pe 2048 eantioane. S se realizeze analiza spectral a p

acestui proces utiliznd estimatorul spectral simplu. a) S se determine deplasarea i dispersia estimatorului. b) S se refac aceeai analiz pentru 512, 1024 i 4096 eantioane. c) S se verifice c acest estimator este deplasat i c dispersia sa nu depinde de durata observaiei (estimator inconsistent).
longueur_P=2048; P=randn(1,longueur_P)*sqrt(0.25); [spectre_simple,Frecventa]=periodo_simple(P,longueur_P); semilogy(Frecventa,spectre_simple,'b'); xlabel('Frecventa normalizata'); ylabel('Amplitudine (dB)'); title('Periodograma simpla'); biais=mean(spectre_simple) variance=std(spectre_simple)^2

n exemplul de

mai sus s-a folosit o funcie auxiliar

periodo_simple.m. Iat codul MATLAB al acestei funcii:

function [spectre_simple,frequence]=periodo_simple(P, longueur_P) longueur_sequence=longueur_P; sequence=P; Y=fft(sequence,longueur_sequence); spectre=Y.*conj(Y); spectre_simple=spectre/longueur_sequence; spectre_simple=spectre_simple(1:1+longueur_sequence/2); frequence=(0:longueur_P/2)/longueur_P; % 0<n<0.5

317

10

Periodograma simpla

10

10 Amplitudine (dB)

-1

10

-2

10

-3

10

-4

10

-5

10

-6

0.05

0.1

0.15

0.2 0.25 0.3 0.35 Frecventa normalizata

0.4

0.45

0.5

Estimatorul spectral mediat n cazul aceluiai proces aleator s se realizeze analiza spectral folosind estimatorul spectral mediat. S se studieze influena numrului de secvene folosite pentru mediere. S se determine deplasarea i dispersia estimatorului.
longueur_sequence=256; [spectre_moyenne,Frecventa]=periodo_moyenne(P,... longueur_sequence,longueur_P); semilogy(Frecventa,spectre_moyenne,'b'); xlabel('frecventa normalizata'); ylabel('Amplitudine (dB)'); hold on; longueur_sequence=128; [spectre_moyenne,Frecventa]=periodo_moyenne(P,... longueur_sequence,longueur_P); semilogy(Frecventa,spectre_moyenne,'--r'); title('Periodograma mediata'); legend('mediere pe 8 ferestre','mediere pe 16 ferestre');

n exemplul anterior s-a


318

folosit

funcia

periodo_moyenne.m care are codul Matlab:


function [spectre_moyenne,frequence]=periodo_moyenne(P,... longueur_sequence,longueur_P) nombre_sequence=longueur_P/longueur_sequence; origine=0; spectre=zeros(1,longueur_sequence); for indice_boucle = 1:nombre_sequence sequence=P(origine+1:origine+longueur_sequence); origine= origine +longueur_sequence; Y=fft(sequence,longueur_sequence); spectre=spectre+(Y.*conj(Y)); end; spectre_moyenne=spectre/(nombre_sequence*longueur_sequence); %moyennage spectre_moyenne=spectre_moyenne(1:1+longueur_sequence/2); frequence=(0:longueur_sequence/2)/longueur_sequence; % 0<n<0.5
10
0

Periodograma mediata mediere pe 8 ferestre mediere pe 16 ferestre

Amplitudine (dB)

10

-1

10

-2

0.05

0.1

0.15

0.2 0.25 0.3 frecventa normalizata

0.35

0.4

0.45

0.5

S se verifice c acest estimator este tot deplasat, dar consistent. Ce se poate spune despre variaia rezoluiei frecveniale n raport cu numrul de seciuni mediate ?
319

Estimatorul spectral modificat S se realizeze analiza spectral a aceluiai proces aleator folosind estimatorul spectral modificat. S se studieze influena numrului de secvene folosite pentru mediere i al diferitelor ferestre utilizate pentru netezire. S se determine deplasarea i dispersia estimatorului.
fenetre=[boxcar(longueur_sequence)]; fenetre=fenetre*sqrt(longueur_sequence/ sum(fenetre.*fenetre)); fenetre=fenetre.'; [spectre_modifie,Frecventa]=periodo_modifie(P,... longueur_sequence, longueur_P,fenetre); semilogy(Frecventa,spectre_modifie,'b'); xlabel('frecventa normalizata'); ylabel('Amplitudine (dB)'); hold on; title('Periodograma modificata');

Funcia periodo_modifie.m are codul Matlab:


function [spectre_modifie,frequence]=periodo_modifie(P,... longueur_sequence, longueur_P, fenetre); nombre_sequence=longueur_P/longueur_sequence; origine=0; spectre=zeros(1,longueur_sequence); for indice_boucle=1:nombre_sequence sequence=P(origine+1:origine+longueur_sequence); sequence=sequence.* fenetre; origine= origine +longueur_sequence; Y=fft(sequence,longueur_sequence); spectre=spectre+(Y.*conj(Y)); end; spectre_modifie=spectre/(nombre_sequence*longueur_sequence); %moyennage spectre_modifie=spectre_modifie(1:1+longueur_sequence/2); frequence=(0:longueur_sequence/2)/longueur_sequence; % 0<n<0.5

320

Periodograma modificata 10
-0.4

10

-0.5

Amplitudine (dB)

10

-0.6

10

-0.7

10

-0.8

10

-0.9

0.05

0.1

0.15

0.2 0.25 0.3 frecventa normalizata

0.35

0.4

0.45

0.5

Rezoluia dinamic S se realizeze analiza spectral a unui semnal compus din dou sinusoide afectate de zgomot. Parametrii componentelor semnalului sunt urmtorii : prima sinusoid : a doua sinusoid : zgomot alb gaussian : frecven = 25 Hz frecven = 50 Hz medie = 0 amplitudine = 1 amplitudine = 0,01 deviaie standard = 0,031 Frecvena de eantionare se consider 200 Hz. Lungimea K a semnalului va lua valorile urmtoare : K ={512, 1024, 2048, 4096}. S se testeze cei trei estimatori spectrali studiai anterior pentru : { K =512, L =2}, { K =1024, L =4}, { K =2048, L =8}, { K =4096, L =16} i ferestrele rectangular, Hamming i Blackman, L fiind numrul de subsecvene n care este mprit secvena iniial.
longueur_signal=512; t=0:1/200:(longueur_signal/200)-1/200; y1=sin(2*pi*25*t); y2=0.01 * sin(2*pi*50*t); bruit=randn(1,longueur_signal); signal=y1+y2+bruit*0.031; [spectre_simple,Frecventa]=periodo_simple(signal,

321

longueur_signal); semilogy(Frecventa,spectre_simple,'b'); title('512 puncte'); longueur_sequence=256; [spectre_moyenne,Frecventa]=periodo_moyenne(signal, longueur_sequence,longueur_signal); semilogy(Frecventa,spectre_moyenne,'b'); title('K=512, L=2'); longueur_sequence=256; fenetre=hamming(longueur_sequence); fenetre=fenetre*sqrt(longueur_sequence/ sum(fenetre.*fenetre)); fenetre=fenetre.'; [spectre_modifie,Frecventa]=periodo_modifie(signal,longueur_s equence,fenetre); semilogy(Frecventa,spectre_modifie,'b');title('Hamming'); xlabel('frecventa normalizata');ylabel('Amplitudine')
K =512, L=2

10

10

10

10

-1

10

-2

10

-3

10

-4

10

-5

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45

0.5

322

10

Ham m ing

10

10

A m plitudine

10

-1

10

-2

10

-3

10

-4

10

-5

0.05

0.1

0.15

0.2 0.25 0.3 frec venta norm aliz ata

0.35

0.4

0.45

0.5

Spectrograma unui semnal chirp Un semnal MLF are urmtoarea expresie analitic :
s( t ) = sin((2 f1 + 2t ) t + 0 ) unde = (f 2 f1 ) /(2 Pulselength) , Pulselength fiind durata semnalului. a) S se genereze un astfel de semnal pentru 0 = 0 .

b) S se reprezinte semnalul n domeniile temporal i frecvenial. c) S se reprezinte acelai semnal n planul timp-frecven cu ajutorul spectrogramei.
f1=2000; f2=8000; pulselength=0.025; Fe=20000; t=(0:1/Fe:pulselength); beta=(f2-f1)/(2*pulselength); chirp=sin(2*pi*(f1+beta*t).*t); chirp2=vco(sawtooth((2*pi/pulselength)*t,1), [f1/Fe,f2/Fe]*Fe,Fe); figure(1);clf; subplot(211); plot(t,chirp); xlabel('Timp'); ylabel('Amplitudine');

323

title('Analiza unei modulatii liniare de frecventa') C=fftshift(abs(fft(chirp)).^2); lc=length(chirp); mc=lc/2; freq=(-mc:1:mc-1)*Fe/lc; subplot(212); plot(freq,C); xlabel('Frecventa [Hz]'); ylabel('Densitatea spectrala de putere') Wsize=32; [Cspec,F,T] = specgram(chirp,128,Fe,Wsize); figure(2);clf; imagesc(1000*T,F/1000,abs(Cspec)); xlabel('Timp [ms]'); ylabel('Frecventa [kHz]'); title('Analiza unei modulatii liniare de frecventa')

Analiza unei modulatii liniare de frecventa 1 Amplitudine 0.5 0 -0.5 -1

0.005

0.01 Timp

0.015

0.02

0.025

Densitatea spectrala de putere

600

400

200

0 -1

-0.8

-0.6

-0.4

-0.2 0 0.2 Frecventa [Hz]

0.4

0.6

0.8 x 10

1
4

324

Analiza unei modulatii liniare de frecventa 0 1 2 3 Frecventa [kHz] 4 5 6 7 8 9 10 0 5 10 Timp [ms] 15 20

Ce concluzie se poate trage n privina informaiei aduse de cele 3 reprezentri ? Compromisul rezoluie spectral-rezoluie temoral S se genereze un semnal compus dintr-o sinusoid i un Dirac. S se analizeze acest semnal cu ajutorul spectrogramei pentru diverse dimensiuni ale ferestrei de analiz. S se interpreteze rezultatele obinute.
Fe=10000; f1=1000; f2=4000; T=0.015; t=0.005:1/Fe:T; delta=0.005*Fe; sig=[zeros(1,delta), sin(2*pi*f1*t), zeros(1,delta),5*ones(1,1), zeros(1,2*delta)]; subplot(311); plot(0:1000*(1/Fe):1000*(length(sig)/Fe-1/Fe),sig); title('Semnal temporal'); xlabel('Timp [ms]');ylabel('Amplitudine'); [S,F,T] = specgram(sig,128,Fe,64); subplot(312); imagesc(T*1000,F/1000,abs(S)); xlabel('Timp [ms]'); ylabel('Frecventa [kHz]');

325

Title('Spectrograma cu o fereastra de 64 puncte'), [S,F,T] = specgram(sig,128,Fe,16); subplot(313); imagesc(T*1000,F/1000,abs(S)); xlabel('Timp [ms]'); ylabel('Frecventa [kHz]'); title('Spectrograma cu o fereastra de 16 puncte')

Semnal temporal Amplitudine 5 0 -5 0 5 15 20 25 Timp [ms] Spectrograma cu o fereastra de 64 puncte 10 30 35

Frecventa [kHz]

0 2 4 0 10 15 Timp [ms] Spectrograma cu o fereastra de 16 puncte 5 20

Frecventa [kHz]

0 2 4 0 5 10 15 Timp [ms] 20 25

326

5. PRELUCRAREA MULTIRAT A SECVENELOR Fie xa (nT ) cu n i T , semnalul rezultat din eantionarea unui semnal analogic xa (t ) cu perioada de eantionare T. Obinerea unui alt semnal eantionat xa (nT ) , cu T T rezult , de regul, prin reconstrucia

semnalului analogic xa (t ) , care se eantioneaz din nou, cu perioada T ' . S notm cu x[n] i y[m] secvenele numerice corespunztoare semnalelor analogice eantionate xa (nT ) i, respectiv, xa (nT ) cu T T . Conversia n timp discret a semnalelor analogice, pentru dou perioade de eantionare diferite T ' = T , este ilustrat de schema de prelucrare din figura 5.1.
xa (nT ) xd [n] xa (t ) xa (nT ) xd [m]

Fig. 5.1

Dac T T , ntrebarea este cum prelucrm direct din xd [n] xd [m] , aa cum este sugerat n figura 5.2, cu M, L = numere ntregi? Prelucrarea multirat se refer la obinerea secvenei y[m] direct
din x[n] , aa cum este ilustrat n figura 5.2.
x[n] hm [n] y[m]

Fig. 5.2
1 Fe = T

1 Fe = T
T Fe M = = T Fe L

Prelucrarea unei secvene x[n] , rezultat din eantionarea unui


327

senmal analogic cu o perioad de eantionare T = 1 16 KHz = 62.5 s , n dou secvene xd [n] i xi [n] cu perioade de eantionare diferite: T ' = 1 8 KHz = 125 s i T '' = 1 32 KHz = 31.25 s este ilustrat n figura 5.3
xd [n]

x[n]
0 1 2 3 4 1 = 125s 8 KHz n

T =
0 1 2 3 4
T = 1 = 62 ,50 s 16 KHz

x i [n]

0 1 234567 T 1 T = = = 31,25s 2 32 KHz

Fig. 5.3 5.1. Eantionarea semnalelor n timp discret. Decimarea sau subeantionarea secvenelor cu un factor M
Eantionarea semnalelor n timp discret i reducerea ratei de eantionare sau decimarea secvenei x [ n ] , cu un factor ntreg M=2, sunt reprezentate n domeniile timp i frecven n figura 5.4. Aa cum se vede pe figura 5.4, n domeniul timp, semnalul x [ n ] este eantionat cu ajutorul secvenei de eantionare M [n] , obinndu-se secvena eantionat xe [n] = x[n] M [n] , din care s-au reinut doar din dou n domeniul frecven, s-a considerat c secvena x [ n ] are un

n dou impulsuri (pentru M=2), rezultnd secvena decimat xd [ n ] .

spectru X ( ) limitat la < 2 . Prin eantionarea cu M=2, secvena eantionat va avea specrtul X e ( ) care, aa cum se vede pe figur, este multiplu la frecvenele k = k . Spectrul semnalului decimat va fi de
328

asemenea periodic, ns cu perioada 2 ! n concluzie, n domeniul timp secvena de date va fi subeantionat, dar banda sa ocupat va fi dubl fa de banda ocupat de secvena iniial, nedecimat.
x[n]
X () = x[n]e jn
( n)

-1 0

3 4

n M=2

-2

M [n]

M [ ]

...
-1 0 1 2 3 4 5 6 n -2 -

2 M
0 2

...

xe [n] = x[n] M [n]

e =

2 M

1 M
-

1 X e [ ] = M

X ( k )
(k )

-1 0

3 4

-2

x d [n]

1 M
3 4 5 6 n

X d [ ]

-1 0

-2

Fig. 5.4 Sistemul care realizeaz funcia de decimare din figura 5.5 este simbolizat prin M , indicnd subeantionarea cu M.

x[n] X ( z)

x d [n] = x[ Mn] X d ( z)

329

Fig. 5.5 S calcum Transformata Z a semnalului decimat aplicnd definiia:


X d ( z ) = xd [n]z n = x[ Mn]z n
(n)

= xe [ Mn]z
(n)

(n)

= xe [m]z
(m)

m M

Mn = m m n= M

Dar, x e [m] = x[m] M [m] = x[m] astfel nct:


2 m 1 M 1 jk M m M z X d ( z ) = x[m] e M k =0 (m) 2 m M 1 m jk 1 = ) x[m] e M z M M ( m 144424443 k =0
jk 2 1 X e M z M

1 M

M 1 jk 2 m M

e
k =0

pentru z = e j , rezult c: X d (e j ) =

1 M

X (e
(m)

j ( k 2 ) / M

Ultima relaie exprim legtura ntre spectrul semnalului decimat X d (e j )


i spectrul semnalului nedecimat X (e j ( k 2 ) / M ) , confirmnd concluzia c spectrul semnalului decimat ocup o band de M ori mai mare dect spectrul semnalului nedecimat.

330

5.2. Interpolarea secvenelor sau supraeantionarea secvenelor cu un factor L

Creterea ratei de eantionare sau interpolarea secvenei x [ n ] cu un factor ntreg L este ilustrat n domeniile timp i frecven, pentru cazul particular L= 2, n figura 5.6.

x d [ n]

1 M
3 4 5 6 n -2 L=2 - 0

X d [ ]

-1 0

n x , n = 0, L,2 L xe [ n ] = d L 0, n rest

X e [ ] = xd [k ]e j kL
H FD

(k )

-1 0

3 4

5 6

-2

x[n]
1

X ( )

-1 0

3 4

6 7

-2

Fig. 5.6 Aa cum se observ pe figur, n domeniul timp discret, din secvena xd [ n ] se formeaz mai nti secvena xe [ n ] , prin inserarea unor (L-1) valori de zero intre eantioanele succesive ale secvenei xd [ n ] , asfel nct semnalul extrapolat, xe [n] , poate fi exprimat cu ajutorul semnalului decimat
331

astfel:

xd xe [n] = 0 sau:

n L, ,

n = 0, L, 2 L,... n rest

xe [ n] =

k =

x [k ] [n kL] .
d

n domeniul frecven, spectrul secvenei xe [n] este dat de relaia: X e (e j ) = FD {xe [n]} =
= =

n =

x [k ] [n kL]e
k = d

jn

k = + k =

xd [k ] [n kL]e jn
n = jkL d

x [k ]e

= X d (e j L ) Acelai rezultat putea fi obinut n variabila z:


X e ( z ) = {xe [n]} = =

n = +

xe [n]z n =
+ d

+ k xd [k ] [n kL]z n n = =
+ n

k = +

x [k ] [n kL]z
k =

Secvena interpolat x [ n ] se obine din secvena xe [n] prin filtrare (ideal) trece jos. Dup cum rezult din figura 5.6 fiecare lob al spectrului X d ( ) sufer dup interpolare o comprimare n spectrul rezultat X ( ) .

k =

x [k ]z
d

kL

= X d (z L )

332

APLICAIE: Sisteme audio digitale

Fie x a (t ) - un semnal analogic de band limitat la 22.05 KHz, care trebuie eantionat la Fe = 44.1 KHz. Acest lucru este posibil daca se dispune de un FTJ analogic ideal cu caracteristica H a ( ) , care ar limita strict semnalul analogic la 22.05 KHz. Acest FTJ este practic imposibil de
' realizat. n locul lui, se poate realiza un FTJ cu caracteristica H a , care este mai simplu, dar presupune ulterior o esantionare la 88.2 KHz, aa cum se prezint n figura 5.7
Xa()

Fe = 44 KHz
-44 -22 0 22 KHz Ha() = dificil -44 -22 0 22 KHz Ha() mai simplu, dar eantionare la 88 KHz -44 -22 0 22 44 88 KHz

F
[KHz]

[KHz]

[KHz]

Fig. 5.7 Schema bloc din figura 5.8 sugereaz etapele de filtrare i eantionare descrise mai sus, dup care urmeaz o conversie A/D. n domeniul numeric, semnalul x[n] poate fi filtrat cu un filtru FIR cu faza liniar.
Eantion la 88 KHz A D x[n] xf [n] xd [n]

Ha()

HFIR

Fig. 5.8 Etapele prelucrrii semnalului numeric x[n] n domeniul frecvenei sunt prezentate n figura 5.9 unde se poate remarca i efectul blocului decimator cu 2.

333

HFIR cu faz liniar

F
-

0 Xf ()

44 KHz

2
Fe = 88 KHzz

0 Xd ()

2 F

-2

22 KHz 44 KHz = Fe

Fig. 5.9

Audiia semnalului digital nregistrat (optic) pe un CD se face folosind o schem de principiu ca cea din figura 5.10.
x[n] CD w[n] y[n] FILTRU Interpolare y(t)

L2

DAC

FTJ Receptie

fs

Lfs

Lfs

Fig. 5.10 Semnalul numeric x[n], citit de pe CD, va fi interpolat cu L=2, apoi filtrat trece jos pentru extragerea spectrului semnalului din banda de baz. Dup aceast etap, frecvena de eantionare va fi: L.fs = 2 . 44.1 KHz = 88.2 KHz, care corspunde semnalului numeric y[n] din figura 5.10. Urmeaz conversia Digital Analogic a semnalului y[n], obinndu-se semnalul analogic y(t), care dup filtrare (analogic) tip trece jos, poate fi atdiat ntrun difuzor.

334

APLICAIE: Transmisiuni numerice

Ne propunem s simulm transmisiunea numeric a unor date corespunztoare unei imagini binare (simple) ca cea din figura
STRUCTURA UNUI CADRU DE DATE

Vom trasmite o imagine binara de 30 linii x 18 coloane = 540 elemente binare, ca cea din figura 5.11.

Fig. 5.11 Pentru simulare, peste semnal, vom aduna i un zgomot. Rezultatul unui cadru de date se prezint n figura 5.12.

120
sinc

60
sinc

540

dat

DATE 900
Fig. 5.12

dat

Secvena de sincronizare are lungimea de 60 elemente binare. Cadrul de baz a fost completat cu cte 120 elemente binare (de tip zgomot), care aparin cadrului anterior i ulterior. Structura simplificat a emitorului este prezentat n figura 5.13 :
335

Transcoder

Fs

Interpolare

Fe

FILTRARE

NUMERI CA
Simboluri filtrate

Semnal binar

simboluri

Fe

Filtrare Analogica

CNA

Fe

Modulare RF

Semnal emis

Semnal Numeric pe purt. RF (intermediara)

Fig. 5.13
CODAREA (sau Transcodarea)

In aceasta aplicaie s-a folosit o codare de tip 8 PSK (QAM), astfel c 3 elemente binare vor fi codate printr-un simbol de la 0 la 7. De exemplu, tri-bit-ul 101 va fi codat prin simbolul nr. 5. Dup CODER, la fiecare Ts secunde sosete un nou simbol, astfel c Fs = 1/ Ts este Frecvena simbolurilor. De exemplu, dac datele binare sosesc cu viteza de 3 Mbit/s, rezult c frecvena simbolurilor va fi de 1 Mb/s.

336

FILTRAREA de la EMISIE

Simbolurile vor controla amplitudinea si faza semnalului transmis. Diversitatea simbolurilor succesive va conduce la variaii brute ale amplitudinei i fazei, care vor determina un spectru de frcven foarte mare (fa de banda canalului). Acesta este motivul introducerii unnui filtru la emisie, care va netezivariaiile brute ale amplitudiniei i fazei semalului transmis. Deci va fi un FN tip FTJ. De fapt, se va realiza o interpolare a semnalului cu L=8, insernd 7 zerouri ntre dou simboluri consecutive, dup care se va utiliza un FN de tip FTJ. Pentru evitarea fenomenului de interferen ntre simboluri, rspunsul pondere al FN de tip FTJ trebuie s se anuleze la multipli ntregi ai unei perioade a simbolurilor! n acest scop se vor folosi cte un FN de tip FIR (identice) att la emisie ct i la recepie, care, prin convoluie, s dea un FN de tip cosinus ridicat. Acesta este motivul pentru care FN tip FTJ de la emisie i recepie se numesc de tip radical de cosinus ridicat. La ieirea FTJ de la emisie, simbolurile filtrate vor avea frecvena Fe = 8 MHz , fa de frecvena simbolurilor de Fs = 1 MHz . La ieirea FTJ de la emisie se obine semnalul n banda de baz, care n cazul nostru va avea o lrgime de band de cca. 1.3 MHz aa cum se prezint n figura 5.14.

Fig. 5.14

337

MODULAIA PE O FRECVEN INTERMEDIAR

Modulaia de RF se realizeaz, de regul, n mai multe etape. O prim etap se refer la modulaia pe o frecven intermediar. Vom simula aceast etap prin relaia:

s (t ) = 2 Re{m(t ) e

j 2 Fp t

Pentru simulare s-a considerat frecvena purttoare: Fp = 3MHz . n plus, semnalele fiind eantionate la o frecven de Fe , se va nlocui: t n / Fe n ecuaia de mai sus, unde n este numrul eantionului. Spectrul semnalului m(t ) , n banda de baz este cel din figura 5.14, iar spectrul semnalului emis (dup acast etap de modulare ), este cel din figura 5.15. Pe aceast figur, n jurul frcvenei de 3 MHz se recunoate spectrul semnalului din banda de baz (vezi fig. 5.14).

Fig. 5.15

338

CANALUL DE TRANSMISIUNI

Vom simula un canal de transmisiuni printr-un ecou a s(t d ) i un zgomot aditiv b(t ) , conform relaiei, unde s-a notat cu s (t ) semnalul emis n canalul de transmisiuni, iar cu r (t ) semnalul la ieirea acestuia:

r (t ) = s(t ) + a s(t d ) + b(t )


Vom considera: a=0.1 i d = 13 Te , unde a este amplitudinea relativ a ecoului, iar d este ntrzierea ecoului, b(t ) fiind considerat un zgomot alb, gaussian, aditiv, de medie zero. Puterea zgomotului n banda de frecven a semnalului este unde este raportul semnal pe zgomot n [dB] i Ps este puterea semnalului. Densitatea spectral iar relaia ntre puterea unui zgomot alb Pb i puterea zgomotului n banda de frecven a semnalului F Pb(u ) este: Pb = e Pb(u ) . 2 Fs Structura RECEPTORULUI Ne vom referi doar la prelucrarea numeric din cadrul unui receptor, tiind c de la recepionarea semnalului transmis, urmeaz o prelucrare analogica, care conine etaje de amplificare, (mai multe) etaje de demodulare i eventual corecii ale semnalului analogic receponat, urmate de un Convertor Analog Numeric, care va furniza semnalul numeric de la intrarea schemei bloc de mai jos.
Pb(u ) = Ps 10 /10 ,

339

Semnal numeric (Fe) (Fe) (Fs)

Semnal binar

Demod. numeric

FILTRU numeric

Decima re

Decoder

Semnal de sincro

corelator Sincro (Fe)

Prag de decizie

comparator

Fig 5.16
DEMODULAREA

Demodularea numeric a semnalului n banda de baz se face cu relaia: x(t ) = r (t )e


j 2 Fp t

Rezult spectrul semnalului demodulat din figura 5.17, care pe lng spectrul semnalului n banda de baz, mai conine i un produs de modulaie nedorit.

340

Fig. 5.17
FILTRAREA (Receptie)

La recepie se folosete un FN tip FTJ identic ca la emisie, care va permite obinerea unui semnal demodulat n banda de baz (eliminndu-se i produsul de demodulaie nedorit, remarcat n figura 5.17).
ANALIZA IN DOMENIUL TIMP

Analiza temporal a semnalului demodulat n banda de baz se obine cu ajutorul diagramei ochiului, care pune n eviden tranziiile semnalului ntre valorile de +1 i 1, aa cum se poate remarca n figura 5.18.

Fig. 5.18 n figura 5.19 se reprezint traiectoria semnalului n planul complex


341

de la ieirea filtrului de la recepie. Se poate observa c traiectoriile trec n mod regulat prin cele 4 puncte ale unei constelaii ideale corespunztoare unui semnal codat QPSK (sau 4-QAM).

Fig. 5.19 SINCRONIZAREA

Sincronizarea se realizeaz cu ajutorul unui corelator ntre semnalul din banda de baz i o secvena de sincronizare reprezentat printr-o suit de simboluri (generat la emisie). Cnd secvena de sincronizare este recunoscut n compoziia semnalului semnalului recepionat, se obine un impuls de corelaie. Funcia de corelaie va produce de fapt dou informaii: - indicele primului esantion, notat cu dt. De xemplu, dac dt=3, aceasta va semnifica c trebue reinut un eantion din 8, ncepnd cu al treilea, (adic eantioanele cu indicii 3, 11, 19 etc.); - t = vectorul care va conine indicii ultimilor simboluri ai fiecrei secvene de sincronizare detectate.
DECIMAREA (Subeantionarea)

Este opeaia invers a interpolrii de la emisie i va consta n reinerea unui eantion din 8, ncepnd cu dt=3, (adic eantioanele cu indicii 3, 11, 19 etc.). Figura 5.20 reprezint simbolurile obinute dup decimare (sau subeantionare). Se poate remarca pe figur c simbolurile recepionate sunt concentrate n jurul celor 4 puncte din consteleia idelal de tip QPSK (sau 4-QAM).
342

Fig 5.20

DECODAREA

Decodarea const n obinerea elementelor binare (tri-biilor), corespunztoare simbolurilor recepionate.


REFACEREA IRULUI DE DATE BINARE

Reconstrucia imaginii transmise este ultima etap a procesului de recepie. Diminuarea efectului zgomotului canalului se va face, n acest caz, printr-o operaie de SAU exclusiv ntre sirul de date binare recepionat i secvena de zgomot (cunoscut de la emisie)! Rezultatul prelucrrii este cel din figura 5.21.

Fig. 5.21

343

5.3. Prelucrarea multirat a secvenelor Aplicaii n MATLAB


Comenzi MATLAB pentru prelucrarea multirat

decimate - realizeaz funcia de decimare a unei secvene x[n] cu M interp - realizeaz funcii de interpolare a unei secvene x[n] cu L, Decimarea si interpolarea secventelor Generai cu ajutorul comenzilor MATLAB versiunile decimate i interpolate cu 4 ale unei secvene armonice. Verificai refacerea secvenei dup decimare si interpolare.
Fe=32000;T=1/Fe;t=0:T:1; x=sin(2*pi*1000*t)+0.3*sin(2*pi*3000*t); figure(1) subplot(2,2,1);stem(x(1:33)); xlabel('nT, T=31.75 microsec');grid xd=decimate(x,4); subplot(2,2,2);stem(xd(1:9)); xlabel('nTd, Td=4T=125 microsec');grid xr=interp(xd,4); subplot(2,2,3);stem(xr(1:33)); xlabel('nT, T=31.75 microsec');grid

1 0.5 0 -0.5 -1

1 0.5 0 -0.5 -1

10 20 30 nT, T=31.75 microsec

40

5 nTd, Td=4T=125 microsec

10

1 0.5 0 -0.5 -1

10 20 30 nT, T=31.75 microsec

40

Analizai transformatele Fourier ale secvenelor: initial, decimat, interpolat si refcut.


344

Interpolatorul de ordinul zero Un interpolator de ordinul zero transform o secven x[n] aplicat la intrarea sa repetnd fiecare valoare a secvenei de L ori, astfel inct funcia pondere a unui astfel de interpolator este: h0[n] = [n]+ [n-1]+ [n-2]++[n-(L-1)] Semnalul interpolat y[n] se obine din relaia y[n]= x[n]h0[n]. Programul MATLAB de mai jos ilustreaz interpolarea de ordinul zero cu L=3 pentru secvena x[n] = [2, 1, 0.5].
x=[2 1 0.5 0 0 0 0 0];xe=expa(x,3); h0=[1 1 1 0 0 0 0 0];y=conv(xe,h0); subplot(311) stem(x);title('Semnalul x[n]');grid subplot(312) stem(xe);title('Semnalul xe[n]');grid subplot(313) stem(y);title('Semnalul y[n]');grid

Semnalul x[n] 2 1 0

Semnalul xe[n] 2 1 0

10

15

20

25

Semnalul y[n] 2 1 0

10

15

20

25

30

35

n secvena de mai sus s-a folosit o funcie auxiliar expa.m, care insereaz ntre fiecare dou eantioane succesive ale secvenei x[n] un numr L de zerouri. Iat codul MATLAB al acestei functii:
345

function xe=expa(x,L) N=L*length(x); xe=zeros(1,N);xe(1:L:N)=x;

Transmultiplexorul numeric Transmultiplexorul realizeaz n sens bidirecional legtura dintre formatele de linie numerice i analogice ale sistemelor de multiplexare a canalelor cu diviziune n timp (MDT) i a celor cu diviziune n frecven (MDF). n figurile a i b este prezentat cazul simplu al unui multiplexor cu dou canale. Semnalul x[n] este, n acest caz, rezultat din conversia A/N a unui semnal de linie analogic, ce conine spectrele de frecven a dou cai multiplexate n frecven Semnalele y0 i y1 sunt secvenele corespunztoare celor dou ci n format numeric separate din semnalul x[n]. Semnalele y1 i y2, pot fi utilizate separat sau pot fi multiplexate n timp, ntr-un format numeric specific echipamentelor MDT. Prelucrarea numeric a semnalului x[n] pentru obinerea semnalelor y1 i y2, precum si prelucrarea lor invers, pentru refacerea semnalului x[n] pot fi urmrite cu uurin pe schema bloc a transmultiplexorului i pe spectrele semnalelor notate de la 1 la 8.
2 H0
H1

x[n]

2 2 7

y0 [2n]

2 H0
H1

4
x[n]

1
a)

( 1)

y1[2n] 8 8

( 1)

346

b)

1
2

c)

d)

3
0

e)

f)

5
0

1
2

g)

h)

7
1

i)

Urmtoarea secven MATLAB simuleaz funcionarea acestui transmultiplexor. Pentru simplitatea programului am considerat c cele dou canale sunt caracterizate de ctre o singur sinusoid de frecven (joas) de 200 Hz i una (nalt) de 5000Hz.
Fe=16000;t=0:1/Fe:0.01; x=sin(2*pi*200*t)+sin(2*pi*5000*t); X=abs(fftshift(fft(x,512))); vf=((-255:256)/512)*Fe; figure(1),subplot(211),plot(vf,X), title('Spectrul semnalului x[n]')

347

b0=fir2(50,[0 .5 .5 1],[1 1 0 0]); b1=fir2(50,[0 .5 .5 1],[0 0 1 1]); [h0,w0]=freqz(b0,1,512); [h1,w1]=freqz(b1,1,512); subplot(212),plot(w0/pi,abs(h0),w1/pi,abs(h1)), title('Spectrele H0 si H1') x0=filter(b0,1,x); x1=filter(b1,1,x); x0d=x0(1:2:length(x0));y0=x0d; x1d=x1(1:2:length(x1)); td=(0:length(x0d)-1)/Fe; X0=abs(fftshift(fft(x0,512))); X1=abs(fftshift(fft(x1,512))); figure(2);subplot(211),plot(vf,X0), title('Spectrul semnalului x0 sau y0') subplot(212),plot(vf,X1); title('Spectrul semnalului x1') vf=((-255:256)/512)*(Fe/2); X0d=abs(fftshift(fft(x0d,512))); X1d=abs(fftshift(fft(x1d,512))); figure(3);subplot(211),plot(vf,X0d), title('Spectrul semnalului x0d') subplot(212),plot(vf,X1d); title('Spectrul semnalului x1d') N2=length(x1d); for k=0:N2-1 y1(k+1)=((-1)^k)*x1d(k+1); end figure(4),subplot(211), plot(td,y1),title('Semnalul y1') Y1=abs(fftshift(fft(y1,512))); subplot(212),plot(vf,Y1), title('Spectrul semnalului y1')

348

Spectrul semnalului x[n] 100

50

0 -8000

-6000

-4000

-2000

2000

4000

6000

8000

Spectrele H0 si H1 1.5

0.5

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Spectrul semnalului x0 sau y0 80 60 40 20 0 -8000

-6000

-4000

-2000

2000

4000

6000

8000

Spectrul semnalului x1 80 60 40 20 0 -8000

-6000

-4000

-2000

2000

4000

6000

8000

349

Spectrul semnalului x0d 40 30 20 10 0 -4000

-3000

-2000

-1000

1000

2000

3000

4000

Spectrul semnalului x1d 40 30 20 10 0 -4000

-3000

-2000

-1000

1000

2000

3000

4000

Semnalul y1 1 0.5 0 -0.5 -1

0.5

1.5

2.5

3.5

4.5 x 10

5
-3

Spectrul semnalului y1 40 30 20 10 0 -4000

-3000

-2000

-1000

1000

2000

3000

4000

350

Proiectarea filtrelor de band ngust S proiectm un FTJ cu specificaiile date n figura 9.2 a). Fie N gradul necesar pentru acest filtru (cu banda de tranziie f foarte mic!). n locul proiectrii acestui filtru, care are fs-fp=f=100Hz, s proiectm un FTJ mai simplu, care are specificaiile prezentate n figura 9.2 b). Evident, n acest caz: 2fs-2fp=2f=200Hz i, n consecin, ordinul filtrului va fi N/2, care nseamn c n realizarea sa numrul de multiplicri i de adunri se va reduce de dou ori. Dac cu G(z) este notat funcia de transfer a acestui filtru, atunci caracteristica de transfer a funciei G(z2) este cea din figura 9.2 c). ns, acest filtru are dou benzi de trecere. Prima este cea care intereseaz, iar cea centrat in jurul lui este nedorit. Aceast band poate fi suprimat cu ajutorul unui filtru trece jos I(z), foarte simplu, a crui caracteristic de transfer este ilustrat n figura.
H ()
1

a)

G (z )
1

p s

b)

G z2

( )
1

2 p

2s

c)

I (z )
1

p s

d)

351

S exemplificm procesul proiectrii ilustrat n figura 15.10 cu urmtorul program MATLAB n care fp=300Hz, fs=400Hz, Fe= 8000Hz, 1=0.02 i 2=0.001.
Fe=8000;f=[600 800];a=[1 0]; [n,f0,a0,w]=remezord(f,a,[0.01 0.001],Fe); n b=remez(n,f0,a0,w);[h,w]=freqz(b,1,1024); subplot(2,2,1); plot(w/pi,20*log10(abs(h)));title('H(z)'),grid N=2*length(b);be=zeros(1,N);be(1:2:N)=b; [h2,w2]=freqz(be,1,1024); subplot(2,2,2); plot(w2/pi,20*log10(abs(h2)));title('G(z2)');grid [n,f0,a0,w]=remezord([300 3600],... [1 0],[0.01 0.001],Fe); n b3=remez(3,f0,a0,w);[h3,w3]=freqz(b3,1,1024); subplot(2,2,3); plot(w3/pi,20*log10(abs(h3)));title('I(z)');grid b4=[b3,zeros(1,length(be)-length(b3))]; b5=conv(be,b4);[h5,w5]=freqz(b5,1,1024); subplot(2,2,4); plot(w5/pi,20*log10(abs(h5))), title('I(z)G(z2)');grid
H(z) 50 0 -50 -100 -150 50 0 -50 -100 -150 G(z2)

0.5 I(z)

0.5 I(z)G(z2)

50

100

-50

-100

-100

0.5

-200

0.5

352

6. PROCESOARE DIGITALE DE SEMNALE

n procesarea digital a semnalelor, conceptul de structur hardware a aprut nc din anii 1970. Evoluia tehnologic, a secolului XX a creat posibilitatea ca structurile analogice de prelucrare a semnalului s fie nlocuite n proporii mari cu sisteme digitale i avnd punct principal apariia microprocesorului de tip DSP (Digital Signal Processing). Procesoarele dedicate prelucrrii semnalului digital au fost mbuntite pe parcursul a patru generaii. Prima generaie de microprocesoare DSP erau formate din unitatea centrala, convertoare analog-digitale (ADC Analog Digital Convertor), convertoare digitalanalogice (DAC Digital Analog Convertor) i uniti de nmulire dedicate. In a doua generaie sunt extinse unitile de calcul i capacitatea de memorare mrit. Generaia a treia este format din procesoare care au capabilitatea de prelucrare a semnalului digital n formate numerice cu virgul mobil i n generaia a patra au fost introduse sisteme DSP de tip multiprocesor sau n combinaie cu acceleratoare de calcul implementate pe structuri reprogramabile de tip FPGA. Din punct de vedere software s-au dezvoltat algoritmi de procesare digitala a semnalelor pentru sisteme unisau multiprocesor. n scurt timp au aprut medii de dezvoltare software la nivel nalt de programare prin care se faciliteaz crearea i testarea rapid a aplicaiilor DSP. Toate aceste realizri continu s diferenieze din ce n ce mai mult procesoarele DSP fa de procesoarele de uz general. n paralel cu dezvoltarea procesoarelor DSP de uz general, crete prezena interesului de extindere a nucleului DSP n ASIC (ApplicationSpecific Integrated Circuit), ASSP (Application-Specific Standard Product) i FPGA (Field Programmable Gate Arrays). Aceast tendin este motivat de faptul c sunt necesare sisteme foarte rapide care s prelucreze semnalul digital n timp real. Sunt proiectate n chipuri de tip SOC (System On a Chip) cu nuclee DSP predefinite, ambele realizate cu software de nivel nalt EDA (Electronic Design Automation). Structurile reprogramabile de tip FPGA au un rol important n dezvoltarea unor prototipuri preliminare pentru aplicaii de volum redus cu implicaii directe de aplicare pe circuite de tip ASIC, respectiv ASSP. Structurile hardware dedicate pentru prelucrarea digital a semnalelor sunt utilizate n implementarea algoritmilor de uz general (filtrarea digital, detecia i separarea semnalelor, analiz spectral, filtrare
353

adaptiv), instrumentaie (analiz de und, analiz tranzitorie), sisteme de comunicaie (vorbire, audio, modem-uri, telefoane celulare, reele de comunicaie), sisteme de control (servo, disk, imprimante, auto, ghidare, vibraii, sisteme de putere, roboi), armat (radar, sonar, recunoatere obiecte, comenzi) i multe alte ramuri cum ar fi analiza semnalelor biomedicale, procesarea semnalelor geofizice, transport, etc. 6.1. Procesarea digital a semnalelor cu structuri hardware Ideea principal, de procesare digital a semnalelor cu structuri hardware, este transpus din procesarea semnalelor utiliznd circuite analogice, n timp continuu. Practic se face o trece de la prelucrarea semnalelor continue n timp i amplitudine la operarea cu acestea n format numeric dar fr a se pierde informaia util ce se urmrete a fi procesat. Procesarea digital a semnalelor se ocup cu prelucrrile digitale a semnalelor i utilizeaz hardware digital pentru a analiza, a modifica sau a extrage informaia de la acestea. Avantaje principalen utilizarea tehnicilor digitale pentru procesarea semnalului n comparaie cu sistemele analogice tradiionale sunt: flexibilitatea n care funciile sistemelor DSP pot fi modificate uor cu software care implementeaz un algoritm specific pentru acelai hardware; reproductibilitate fapt ce ofer posibilitatea multiplicrii sistemelor DSP cu pstrarea performanelor acestora; stabilitate - memoria i logica hardware-lui DSP nu sunt deteriorate n timp ns, mrimea cuvntului binar determin acurateea sistemului DSP astfel nct performana sistemului ar putea s fie diferit n practic fa de teorie; Complexitate - utilizarea DSP permite implementarea unor aplicaii complexe care sunt imposibil de realizat prin utilizarea tehnicilor analogice tradiionale. Prelucrarea semnalelor n domeniul digital cu sisteme DSP poate fi realizat n timp real, n care implic manipularea a dou date consecutive care au fost achiziionate i digitizate pe parcursul perioadei ntre dou eantioane. O schem general a unui sistem de tip DSP este prezentat n schema n figura de mai jos. Un sistem de tip DSP preia semnalele din mediul analogic, x(t ) , pe care le discretizeaz n timp i amplitudine, x(n ) , cu ajutorul convertoarelor analog digitale. Sunt prelucrate n diferite formate numerice prin structuri digitale dedicate dup care sunt convertite din forma
354

discret, y (n ) , n cea continua y (t ) cu ajutorul convertoarelor digitalanalogice i retransmise n mediul analogic.


x(t )

x(t )

amplificat

Filtru anti-aliere

ADC

x(n)

Alt sistem DSP

x(n)

y(n)

HARDWA RE Filtru de reconstruci DAC


y(n)

amplificat

Alt sistem DSP

Fig. 6.1. Blocurile de baz funcionale pentru un sistem hardware S Pentru unele aplicaii n timp real, datele de intrare pot fi deja n format digital iar datele de ieire nu necesit, n mod special, conversie n semnal analogic. Spre exemplu, procesarea informaiei digitale poate fi salvat n memoria sistemului pentru o utilizare ulterioar. Sisteme hardware pentru aplicaii DSP au pornit de la microprocesoare i microcontrolere (P ) de uz general, apoi procesoare digitale de semnal de uz general (chipuri DSP), structuri reprogramabile de tip FPGA i circuite dedicate DSP cu caracteristicile hardware ale acestora, prezentate succint n tabelul urmtor 6.1. Circuitele ASIC sunt proiectate pentru aplicaii puternic orientate pe anumii algoritmi DSP care cer vitez de prelucrare a datelor foarte mare de ordinul n MIPS (Milion Intruction Per Second). Aceste componente au rolul de coprocesare utiliznd algoritmi de procesare ce nu pot fi executai pe un procesor DSP de uz general datorit arhitecturii sale limitate. ASIC-DSP faciliteaz utilizarea funciilor de mare vitez optimizate hardware, dar le lipsete posibilitatea de programare pentru a modifica algoritmul implementat. Acestea sunt utilizate pentru implementarea algoritmilor DSP bine definii i bine testai. Structurile reprogramabile de tip FPGA ofer proiectantului DSP s realizeze un hardware digital de tip prototip. n aceste structuri pot fi realizate uniti de calcul specifice unei aplicaii, dein un numr mare de multiplicatori, memorie i elemente de interconectare a acestora. Marele avantaj dat de aceste circuite este acela c, in faza de proiectare, pot si testai i optimizai algoritmii DSP ca apoi s fie implementai pe structuri de tip ASIC.
355

Tabelul 6.1 ASIC Numrul chipului Flexibilitate Timp de proiectare Putere de consum Vitez de procesare Fiabilitate Cost de dezvoltare Cost de producie 1 nu lung sczut mare mare mare sczut FPGA >1 extins scurt medie mare mare mediu mediu-mare

P
1 programabil Scurt medie mic-medie Mare Mic mic-mediu

Chipuri DSP 1 programabil scurt mic-medie medie-mare mare mic mic-mediu

Arhitecturile de calculatoare i microprocesoare nu au arhitectura sau facilitile cerute pentru operaiile DSP dar pot fi utilizate, cnd este necesar, n prelucrarea numeric a semnalelor dar ineficient. Dac se urmrete o performana mrit de prelucrare a semnalelor n timp real, chiar avnd cel mai mic cost, se recomand utilizarea sistemelor dedicate de tip DSP. Un procesor digital de semnal are la baz un microprocesor a crui arhitectur este optimizat pentru procesarea operaiilor specifice DSP la viteze mari. Chipurile DSP cu arhitecturi i seturi de instruciuni proiectate n mod deosebit pentru aplicaiile DSP au fost lansate de multe companii ca: Texas Instruments, Lucent Technologies, Analog Devices. 6.2. Arhitecturi ale structurilor hardware de procesoare digital a semnalelor Arhitecturile convenionale ale procesoarelor DSP au aprut nc din anii 1980 i se bazeaz pe modelul din figura 6.2. Accesarea memoriei utilizeaz n mod specific arhitectura Harvard, cu seturi de magistrale separate pentru memoria de date i memoria de programe. Elementele principale de prelucrare a datelor unui procesor sunt: unitatea de multiplicator, o unitate aritmetico-logic i un registru de acumulator permind realizarea unei uniti de nmulire-adunare, numita unitate MAC (multiply and accumulate), care accept doi operatori. Instruciunile, prin ele nsele, pot fi foarte complexe. De exemplu, o singur instruciune poate realiza dou transferuri de date, o operaie MAC i dou actualizri a indicatorilor de adrese. Aceste instruciuni dau procesoarelor DSP standard un nalt grad de procesare a datelor atunci cnd execut operaii matematice repetate pe vectori de numere. Instruciunile cu lungime fix de cod sunt ineficiente atunci cnd se implementeaz o simpl
356

operaie de incrementare ntr-o bucl de repetare a unui algoritm. Chiar dac contorul nu nregistreaz dect valori mici, procesorul trebuie s utilizeze ntreaga mrime a cuvntului de cod pentru valoarea respectiv.

Registru Interfaa cu Multiplicator

Memoria de programe

Memoria de date

Unitatea aritmetic i logic

Fig. 6.2. Arhitectura general a unui procesor DSP.

Acumulator

Datorit dezvoltrii tehnologice de implementare n siliciu, procesoarele DSP convenionale au nceput s capete un numr mare de periferice interne. De exemplu: memorie local, porturi I/O, temporizatoare i controlere DMA (Direct Memory Acces). Totui, arhitectura lor de baz nu s-a schimbat de mai mult de zece ani. n cele din urm, procesarea relativ slab la nivel de bit a necesitat o dezvoltare rapid a procesoarelor DSP. Astfel, pe la jumtatea anilor 90 a nceput dezvoltarea performanelor procesoarelor DSP. O caracteristic comun a tehnologiei de mbuntire a procesoarelor DSP este prezena unei uniti MAC secundare, care permite un paralelism mai mare n calcul fluxului de date. n multe cazuri, acest paralelism se extinde i asupra altor elemente din interiorul procesorului DSP, permind acestuia s execute operaii de tipul SIMD (Single Instruction Multiple-Data). Deseori acest lucru este obinut prin mpachetarea datelor, care permit regitrilor magistralelor de date s lucreze cu dou jumti de cuvnt pe operand la fiecare ciclu main. Noile tehnologii DSP au tendina de a integra caracteristici care mresc viteza de execuie a algoritmilor ntr-un spaiu de aplicaii specific dar i adugarea perifericelor cu scop special i optimizarea memoriei. Natura exact a specializrii procesoarelor pe anumite aplicaii variaz odat
357

cu algoritmii DSP. Multe procesoare includ acceleratoare hardware pentru operaiile utilizate n mod frecvent i asigur seturi extinse de instruciuni i moduri de adresare care vizeaz spaiul aplicaiei. Seturile de instruciuni extinse pot include i instruciunile speciale DSP ca instruciunile de tip RISC (Reduced Instruction Set Computer) ce prezint un control mbuntit asupra acestora. n prezent, pentru o accelerare i mai puternic de procesare a datelor, sunt utilizate sisteme hardware de tip multiprocesor. De exemplu, algoritmii de compresie video pot beneficia de instruciunea Sum Absolute Difference . 6.2.1. Arhitectura de tip Von Neumann Cea mai simpl structur de accesare a spaiului de adrese este format dintr-o singur unitate de memorie, pe care procesorul o apeleaz printr-un singur set de magistrale, acestea fiind magistrala de adrese i magistrala de date dup cum este artat n figura 6.3. Aceast structur, care este utilizat n general pentru procesoarele non-DSP, este cunoscut sub denumirea de arhitectur Von Neumann. Dac lum n consideraie programarea unui procesor cu arhitectur Von Neumann, simpl, pentru a implementa algoritmul filtrului FIR sau altor aplicaii de procesare a semnalului digital i chiar dac unitatea central de calcul poate s realizeze o operaie MAC ntr-un singur ciclu main, procesorul are nevoie de patru cicli main. Operaiile executate sunt: extragerea codului instruciunii, citirea coeficientului filtrului, citirea eantionului de intrare, scrierea rezultatului. Datorit faptului c este limitat accesul la memorie i poate s-o acceseze secvenial, la fiecare operaie asupra ei se consum un ciclu main.
MAGISTRALA MEMORIA de programe i de date de ADRESE PROCESOR de DATE

Fig. 6.3. Arhitectura Von Newmann Acesta este unul dintre motivele pentru care procesoarele convenionale nu ndeplinesc performanele necesare la aplicaiile DSP n
358

timp real i de aceea proiectanii acestora sunt interesai de dezvoltarea altor arhitecturi mult mai eficiente ca aceasta. 6.3.2. Arhitecturi de tip Harvard Denumirea arhitecturii Harvard se refer la o structur de memorie n care procesorul este conectat la dou uniti independente de adresare a memoriei de ctre dou seturi independente de magistrale ca n figura 6.4. n arhitectura Harvard original, o unitate de adresare a memoriei deine codul program iar cealalt conine spaiul de adres a datelor.
MAGISTRALA de ADRESE MEMORIA de programe PROCESOR de DATE de DATE MAGISTRALA de ADRESE MEMORIA de date

Fig. 6.4. Arhitectura Harvard Avantajul arhitecturii Harvard este c se pot realiza dou accesri simultane de memorie n timpul unui singur ciclu main. Astfel, cele patru accesri necesare pentru filtrul FIR pot fi realizate n doi cicli main.
MAGISTRALA de ADRESE MEMORIA de programe de DATE PROCESOR de ADRESE de DATE MAGISTRALA de ADRESE de DATE MEMORIA de date I

MEMORIA de date II

Fig. 6.5. Arhitectura Hardvard cu trei uniti de Acest tip de arhitectur de memorie este utilizat n multe familii de procesoare DSP incluznd Analog Device cu ADSP-21xx i AT&T cu
359

DSP16xx, dei la acest procesor DSP scrierea n memorie necesit mereu dou cicluri de instruciuni, astfel potenialul maxim al structurii cu dou uniti de adresare a memoriei nu este realizat. La adugarea celei de a doua uniti de adresare a memoriei a crescut performana procesorului n comparaie cu prima arhitectur, de aici se poate trage concluzia c adugarea celei de-a treia uniti, figura 6.5, de adresare a memoriei ar fi i mai util. Arhitecturile Harvard modificate ale procesoarelor PineDSPCore i OakDSPCore din grupul DSP propun trei uniti de adresare a memoriei, fiecare cu setul propriu de magistrale: o unitate de memorie de program i dou uniti de memorie de date, denumite X i Y. Alte procesoare bazate pe arhitectura Harvard modificat, care includ trei uniti, sunt: Zilog Z893xx, SGS Thomson D950-CORE i Motorola DSP5600x, DSP563xx i DSP96002. O alt arhitectur de tip Hardward modificat a fost adoptat de ctre firma Analog Devices. Acest tip de arhitectur, din figura 6.6, are n plus o memorie cache de program din care procesorul i extrage codul instruciunii pentru a lsa liber memoria de programe s poat fi accesat pentru preluarea coeficienilor.
MAGISTRALA MEMORIA de programe de ADRESE de DATE PROCESOR
Memorie chache de

MAGISTRALA de ADRESE de DATE MEMORIA de date

Fig. 6.6. Arhitectura Hardvard modificat cu memorie n acest caz pot fi introduse date i n memoria de programe dar procesorul nu are posibilitatea de a le modifica. O prim metod este aceea n care memoria de programe este accesat dual ntr-un singur ciclu main. Aceast tehnic este utilizat de procesoarele din seria ADSP 212x. n cea de a doua metod memoria de programe este cu o singur accesare dar se adaug o memorie cache pentru salvarea temporar a codurilor de instruciuni. n cazul n care algoritmul DSP cere o accesare dual a memoriei, programatorul este obligat s creeze un buff-er n memoria de programe i unul n memoria de date. Procesorul, pentru execuia instruciunii, are n primul rnd nevoie de un al doilea ciclu main pentru c trebuie s extrag, n prima faz codul program dup care s preia i coeficientul. ntotdeauna, pentru evitarea acestui inconvenient, procesorul salveaz codurile instruciunilor ntr-o memorie cahe de programe. Dup
360

ndeplinirea acestor operaii procesorul preia codul de instruciune din memoria cache i coeficientul din memoria de programe. 6.2.3. Arhitecturi orientate pe conectarea la magistrale informaionale Arhitecturi de acces multiplu n acest caz sunt incluse memoriile rapide care faciliteaz accesrile multiple, succesive per ciclu main printr-un singur set de magistrale i utiliznd memorii cu acces dual care permit accesri paralele prin dou sau mai multe seturi de magistrale independente dup cum este artat n figura 6.7.
MAGISTRALA MEMORIE de programe de ADRESE de DATE PROCESOR de ADRESE de DATE MAGISTRALA de ADRESE de DATE MEMORIE de date cu acces dublu

Fig. 6.7. Arhitectura Harvard modificat cu memorie de date cu acces dublu Procesorul Zoran MP-44ix combin o arhitectur Harvard modificat cu multipl accesare de memorie adic prezint o unitate de memorie programat pentru o singur accesare cu o unitate de memorie cu dubl accesare de date. Puine procesoare asigur un mecanism specializat care permite executarea n paralel a scrieri de date n memorie cu o instruciune de citire de date. Aceste procesoare asigur instruciuni speciale care permit o scriere paralel n memoria de date n anumite circumstane restrictive. Spre exemplu, un procesor AT&T DSP16xx nu poate, n mod normal, s asigure i scrierea n memoria de date i citirea memoriei de date n mai puin de trei cicluri de instruciuni.
361

Arhitecturi multiprocesor de adresare a memoriei externe Sistemele multiprocesor, dein faciliti specifice n interfaarea cu memoria extern ca s simplifice configuraiile DSP i s mreasc performana lor. Primul i cel mai important dintre aceste faciliti este prezena a dou porturi externe de memorie. Probabilitatea ca aceste porturi externe s fie operaionale implic faptul ca unul dintre ele s fie conectat la o memorie local, intern, n timp ce al doilea este conectat la o memorie pe care o mparte cu alte procesoare. n figura 6.8 este dat o posibil configuraie de sistem multiprocesor proiectat pentru asigurarea comunicrii cu mai mult de 8 procesoare ADSP-TS201, care pot comunica direct pe o magistral de band larg cu limea de 64bii. n acest tip de interconectare, este implementat un protocol de tip master-slave care d posibilitatea la oricare dou procesoare s comunice direct la un moment dat. n plus, pe magistrala extern primar, un numr limitat de procesoare poate fi conectat direct la portul de gestiune i conexiune a procesoarelor. Procesorul TMS320C5x de la Texas Instruments asigur anumite faciliti care sprijin accesarea multiprocesor prin care permite unui dispozitiv extern s-i acceseze propria memorie intern. Acest lucru permite crearea de sisteme cu mai multe procesoare care nu mpart aceeai memorie pentru comunicaiile dintre procesoare.

ADSP-TS001 TigerSHARC

SDRAM

ADSP-TS001 TigerSHARC

DRAM SDRAM

ADSP-TS001 TigerSHARC

I/O

Fig. 6.8. Sistem multiprocesor cu ADSP-TS001

ADSP-TS001 TigerSHARC

HOST INTERFACE

Magistrala microprocesor

362

Procesoarele TMS320C3x i TMS320C4x asigur instruciuni speciale i suport hardware pentru nchiderea magistralei, aceste operaiuni fiind numite interlocked operations[Tex99][Tex94], caracteristic ce simplific utilizarea variabilelor comune n memoriile comune este bus locking-ul (nchiderea magistralei) care permite procesorului s citeasc valoarea variabilei din memorie, s o modifice i s scrie noua valoare napoi n memorie. n timp ce asigur aceast succesiune de operaiuni nu este ntrerupt de alt procesor care ar ncerca s schimbe valoarea variabilei. 6.2.4. Arhitecturi orientate pe procesare paralel Au aprut mai multe arhitecturi diferite de procesoare DSP cu execuie multipl a instruciunilor: procesoarele de tip SIMD (Single Instruction Multiple Data) n care un singur program poate lucra n paralel cu seturi multiple de date, MIMD (Multiple Instructiuon Multiple Data), ce conin mai multe elemente de procesare a mai multor seturi de date, VLIW i procesoarele superscalare. Aceste tipuri de procesoare DSP au uniti multiple de execuie configurate s opereze n paralel i utilizeaz seturi de instruciuni RISC. Instruciunile unei arhitecturi VLIW sunt executate, n mod evident, paralel, ele fiind compuse din cteva sub-instruciuni care controleaz diferite resurse. Arhitecturile superscalare, pe de alt parte, ncarc instruciunile global, apoi utilizeaz ordonarea acestora hardware n timp real pentru identificarea instruciunilor care ruleaz n paralel i le nscrie unitilor de execuie corespunztoare. Arhitecturi VLIW Dintre toate arhitecturile de execuie multipl, cele mai utilizate sunt cele de tipul VLIW. Din aceast categorie fac parte procesoarele de la Adelante Technologies, Equator Technologies, Siroyan i Texas Instruments, dei ele variaz arhitectural, considerabil, n funcie de tipul i numrul unitilor de execuie pe care le ofer fiecare. Spre exemplu, procesoarele TI TMS320C64xx au opt uniti de execuie care pot efectua operaiuni SIMD de 8- i 16-bii. Pe de alt parte, procesorul Siroyan OneDSP poate procesa n paralel de la dou pn la 32 de operaii cu mai multe uniti de execuie.

363

Memorie program cu instrciuni pe 16 bii

16 bii
Instruciuni standard

8 bii

Instruciuni pentru aplicaii specifice

Harvard dual

VLIW

Tabel ASI Unitatea de execuie a aplicaiilor specifice

96 bii

4(16bit)/2(40bit) ALU

PCU

LCU

MPY 0

MPY 1

ALU 0

ALU 1

ALU 2

ALU 3

SST BRS

BMU

AXU

ACU X

ACU Y

Regitrii de intrare

LCU
Regitrii de multiplicare PCU

Regitrii Regitrii de depire DCU Regitrii adrese

Fig. 6.9. Nucleul procesorului DSP Adelante Saturn cu arhitectur VLIW Nucleul procesorului DSP Adelante Saturn, din figura 6.9, demonstreaz esena abordrii VLIW. El utilizeaz magistrale multiple de date ntr-o configuraie dual Harvard pentru a transmite date i instruciuni cu mrimea de 96-bii pentru o serie de uniti de execuie simultane. Aceste uniti includ doi multiplicatori (MPY), patru uniti ALU pe 16-bii, care se pot combina pentru a forma dou uniti ALU de 20 de bii; un registru de deplasare cu saturaie logic (SST/BRS); program (PCU) i controller de salt (LCU); controllere de adrese (ACU) i au posibilitatea de a aduga uniti de execuie pentru aplicaii specifice (AXU) pentru a mri viteza de execuie. Nucleul procesorului Adelante Saturn utilizeaz o abordare unic pentru a depi una dintre probleme i anume dificultile datorate lungimii excesive a cuvintelor, cauz a arhitecturilor VLIW. Accesarea memoriei
364

externe este o adevrat provocare pentru aceste tipuri de procesoare DSP pentru c ele trebuie s lucreze cu magistrale de date care pot avea limea de pn la 128 bii. Nucleul procesorului Adelante Saturn utilizeaz o memorie de program intern pe 16 bii, n care sunt salvate instruciuni pe 96 bii. Totui, nucleul mai permite crearea propriilor instruciuni specifice de aplicare care sunt aplicate n VLIW. Arhitecturi superscalare n timp ce instruciunile externe pe 16-bii sunt uzuale pentru procesorul Adelante Saturn, acestea sunt tipice i pentru arhitecturile superscalare. Aceste procesoare opereaz cu mai multe instruciuni n acelai timp i le aplic dinamic la unitile de execuie corespunztoare. Structura de prelucrare a unui eantion de instruciuni la un procesor DSP superscalar, i anume LSI Logic ZSP600, este dat n figura 6.10. Pentru c este un procesor, memoria lui nu are constrngeri, ceea ce-l determin s aib aparena unei arhitecturi VLIW. ns, prezena unitii de ordonare a instruciunilor (ISU) i unitatea de control pipeline dau acestui procesor caracteristicile de superscalar.
128 Unitate prefetch (PFU) Cache Unitate secveniere instruciuni (ISU) Unitate de control pipeline Control ntreruperi Unitate ncarc /memoreaz (LSU) AGU dual Co-Procesor Registru Debug IF Control Logic de interfaare

64 64

40-bit ALU

Unitate 1 Multiplicare/ALU
16x16 MAC

16x16 MAC

40-bit ALU

Unitate 2 Multiplcare/ALU
16x16 MAC

Unitate ALU
16-bit ALU 16-bit ALU

16x16 MAC

Temporizat

Fig. 6.10. Structura hardware a procesorului superscalar LSI Logic Procesorul ZSP600 extrage opt instruciuni n acelai timp i poate executa ase, utiliznd simultan patru uniti de execuie MAC i dou uniti de execuie ALU. Gruparea datelor permite unitii s ndeplineasc
365

operaiuni pe 16 sau 32bii. Arhitectura mai permite adugarea de coprocesoare DSP pentru a mri viteza de prelucrare a datelor O arhitectur DSP introdus recent de PulseDSP de la Systolix, poate facilita prelucrarea paralel a mai multor operaii. Similar unei arhitecturi FPGA, PulseDSP ofer o structur paralel, repetitiv compact aa cum este artat n figura 6.11. Este proiectat sub forma unei matrice sistolice, adic toate transferurile de date au loc sincronizat pe un front de ceas. Fiecare element de procesare din matrice are ci de I/O selectabile, memorie local de date i o unitate ALU.

Clock Data Sync

0/P

Clock Data Sync

1/P

Canal de comunicaie Canal I/O

Canal de programare Canal de control

Fig. 6.11. Arhitectura bloc a matricei programabile Systolix PuslseDSP Att I/O ct i unitatea ALU sunt programabile iar matricea are o magistral programabil care ruleaz prin ea. Aceast combinaie face ca matricea s fie reprogramabil att static ct i dinamic. Structura matricei este proiectat astfel nct s poat executa procesri de mic complexitate dar de mare vitez utiliznd aritmetica de 16 la 64bii, care-l face un coprocesor performant. Crearea structurilor DSP de tipul PulseDSP ct i combinarea n alte arhitecturi DSP evideniaz importana acestor procesoare. n multe aplicaii, n special n comunicaii, structurile hardware DSP conlucreaz cu procesoarele de tip RISC. Procesoarele DSP sunt introduse pentru prelucrarea rapid a datelor iar procesoarele RISC au rolul de gestiune a
366

protocoalelor. Unul dintre motivele pentru care procesoarele DSP preiau instruciuni de tip RISC la seturile lor de instruciuni este acela c li se ofer posibilitatea de a limita cellalt procesor n astfel de aplicaii [Jon00] [Dix04] [Arc03]. Procesorul ARCtangent, din figura 6.12, demonstreaz modul n care sunt combinate arhitecturile celor dou tipuri de procesoare. Elementele de decodare i procesarea instruciunilor DSP sunt conectate mpreun la restul nucleului ceea ce le permite s utilizeze resursele acestuia. Extensiile au acces complet la regitri i opereaz cu acelai ir de instruciuni ca i nucleul RISC.

Interfa I-Fetch

Regitrii 32x32

A L U

Decodare Instruciuni ADD SUB AND OR

CPU Exemplu extensie instruciu

Extensie decodare instruciuni ACS

ADD Compar Select

Fig. 6.12. Arhitectura de baz a procesorului ARCtangent. Facilitile procesorului DSP ale ARCtangent includ variaiile de lungime ale unitii MAC, saturaia aritmetic i memoria X-Y pentru salvarea datelor utilizate n operaiile DSP. Extensiile mai susin i moduri de adresare DSP ca adresarea cu biii inversai ai adreselor. Aceste procesoare RISC extinse au mbuntit procesoarele DSP tradiionale i arhitecturile de nalt performan, care s-au dezvoltat foarte mult n ultimii ani, subliniind importana pe care au dobndit-o procesoarele DSP. Mai mult, aceast dezvoltare continu. Cu tehnologia de procesare ce permite integrarea mai multor periferice la nucleele DSP i seturile de
367

instruciuni extinse pentru a acoperi cerinele aplicaiilor, procesoarele DSP au deschis calea microcontrolerelor DSP. Ca ncheiere putem spune c prezentarea fcut departe de a fi complet, se remarc evoluia procesoarelor DSP pe urmtoarele direcii: optimizarea unitilor aritmetice, utilizarea mai multor perechi de magistrale informaionale (adrese, date), structuri hardware adaptate pentru execuia paralel a instruciunilor i procesarea datelor. Principalele caracteristici ale procesoarelor DSP sunt: - uniti aritmetice specializate de mare vitez; - capaciti mari de transfer a datelor din i ctre procesul continuu (lucru n timp real); - arhitecturi paralele de procesare a datelor. Funcionarea unui DSP const din cteva operaii specifice: adunri i multiplicri, precum i calcule matriciale. Fiecare dintre aceste operaii necesit cteva condiii specifice: adunrile i multiplicrile presupun citirea simultan a doi operanzi, executarea operaiilor (de obicei n acelai timp), salvarea rezultatului sau reinerea lui pentru repetare; calculul matricial const n preluarea datelor din locaii consecutive de memorie sau copierea datelor ntre zone diferite de memorie. Pentru a putea obine aceste performane obligatorii, procesoarele de semnal trebuie s ofere posibilitatea efecturii n paralel a multiplicrii i adunrii, a accesrii multiple a memoriei i generrii eficiente a adreselor. De asemenea, trebuie s conin muli regitri de salvare temporar a datelor, precum i facilitai speciale cum ar fi ntrzierile i adresarea circular a memoriei de date. Suplimentar, pentru o extinderea gamei de aplicaii, printre ultimele tipuri de procesoare DSP s-au dezvoltat versiuni ce conin nuclee de tip RISC capabile s implementeze algoritmi cu structuri decizionale extinse.

368

6.3. Microprocesorului de semnal ADSP 2181 Acest subcapitol realizeaz prezentarea componentelor de baz ale microprocesorului de semnal ADSP 2181 i nu-i propune o descriere complet a acestuia. Procesorul de semnal ADSP-2181 este realizat ntr-un singur chip optimizat pentru prelucrarea digital a semnalelor (DSP) sau alte aplicaii numerice de mare vitez. Acesta combin arhitectura de baz a familiei ADSP-2100 (trei uniti de calcul, generator de adrese pentru memoria de date i de succesiune a programului) cu dou porturi seriale, port DMA intern pe 16 bii, un port byte DMA, un timer programabil, indicatoare I/O, capabiliti extinse de ntreruperi i are inclus n structura sa intern memorie de date i memorie de program. Integreaz 80K bytes de memorie mprit astfel: 16K words (de 24 de bii) pentru memoria de program i 16K words (de 16 bii) pentru memoria de date. Circuitele cu consum mic asigur posibilitatea alimentrii de la baterii pentru echipamentele portabile. ADSP-2181 suport instruciuni noi, care includ manipularea la nivel de bit setare de bit, resetare de bit, complementare de bit, , noi instruciuni de multiplicare (ridicare la ptrat), rotunjire, transfer cu memoria I/O i ntreruperi globale mascabile pentru a crete flexibilitatea. Circuitul este fabricat ntr-o tehnologie CMOS de 500nm ce asigur o putere consumat mic i de mare vitez ce asigur un timp de execuie pentru o instruciune de 30ns, fiecare instruciune putnd fi rulat ntr-un singur ciclu main. Avnd un set larg instruciuni, procesorul are posibilitatea s realizeze operaii multiple n paralel, astfel acesta poate efectua ntr-un singur ciclu: - generarea urmtoarei adrese de program; - ncrcarea urmtoarei instruciuni; - unul sau dou transferuri de date; - rennoirea a unu sau doi pointeri de adres de date; - o operaie de calcul; - recepionarea i trimiterea datelor prin cele dou porturi seriale; - recepionarea i/sau transmiterea datelor prin intermediul portului intern DMA; - decrementarea timer-ului. Setul de instruciuni asigur instruciuni multifuncionale (una sau dou transferuri de date cu o instruciune de calcul), fiecare putndu-se realiza ntr-un singur ciclu main. Limbajul de asamblare folosete o
369

sintax algebric pentru a fi uor de folosit n dezvoltarea i depanarea programelor. Procesorul conine trei uniti de calcul independente: unitatea ALU, unitatea de multiplicare/adunare i blocul de deplasare la nivel de bit. Unitile de calcul proceseaz direct date pe 16 bii i au posibiliti de calcul multiprecizie. ALU realizeaz un set standard operaii logice i aritmetice; suport de asemenea i instruciuni primitive de divizare. MAC realizeaz ntr-un singur ciclu de ceas o nmulire, o multiplicare/adunare i multiplicare/scdere cu rezultat pe 40 bii. Blocul de deplasare realizeaz operaii de deplasare logice i aritmetice, normalizri, denormalizri i operaii de derivare exponenial. Blocul de deplasare poate fi folosit pentru a implementa eficient controlul formatului numeric incluznd reprezentri pe mai multe cuvinte i virgul mobil. Magistrala intern de rezultate (R Bus) este conectat la unitile de calcul astfel nct ieirea oricrei uniti de prelucrare poate deveni intrare pentru oricare unitate la urmtorul ciclu de ceas. Un puternic numrtor de program i dou generatoare de adres pentru date dedicate asigur aducerea eficient a operanzilor pentru aceste uniti de prelucrare. Numrtorul de program suport salturi condiionate, apelri i ntoarceri din subrutine ntr-un singur ciclu de ceas. Cele dou generatoare de adres pentru date (DAG) asigur adrese pentru prelucrarea simultan a doi operanzi (din memoria de date i memoria de program). Fiecare DAG menine i actualizeaz patru indicatori de adres. Atunci cnd indicatorii sunt folosii pentru a accesa date (adresarea indirect), acetia se pot modifica cu valoarea unuia din cei patru regitrii posibili. O valoare de lungime poate fi asociat cu fiecare pointer pentru a implementa adresarea automat pentru buffer-ul circular. Transferul eficient de date este asigurat de cinci magistrale interne: o magistrala pentru adresa memoriei de program (PMA); o magistrala pentru data memoriei de program (PMD); o magistrala pentru adresa memoriei de date (DMA); o magistrala pentru data memoriei de date (DMD); o magistrala pentru rezultate (R); Dou magistrale de adres (PMA i DMA) utilizeaz n exterior o singur magistral de adres, permind extinderea memoriei n exterior, iar cele dou magistrale de date (PMD i DMD) utilizeaz i ele o singur magistral extern ca i memoria pe octet i spaiul de memorie I/O. Memoria de programe poate conine att instruciuni ct i date, permind procesorului s prelucreze doi operanzi ntr-un singur ciclu main, un operand din memoria de date i unul din memoria de program.
370

Poate de asemenea s prelucreze un operand din memoria de program i urmtoarea instruciune n acelai ciclu de ceas. n plus de magistralele externe de date i adrese procesorul mai are i un port Intern DMA pe 16 bii pentru conectarea cu sistemele externe. Acest port (IDMA) conine 16 pini de date/adrese i cinci pini de control i permite accesarea direct i transparent a memoriei intern de date i program a DSP-ului. Mai prezint un port BDMA care este un port bidirecional ce poate adresa pn la 4Mbii de memorie extern RAM sau ROM pentru memorarea extern de program sau tabele de date. Interfaa pentru memoria accesibil la nivel de octet i spaiul I/O suport circuite externe lente avnd un generator programabil pentru stri de ateptare. Circuite externe pot obine controlul magistralelor externe cu ajutorul semnalelor de cerere/acordare (BR, BGH i BG). ADSP2181 poate rspunde la opt ntreruperi, astfel pot fi ase ntreruperi externe (una activ pe fronturi, dou active pe nivel i trei configurabile) i apte ntreruperi interne generate de temporizator, porturile seriale (SPORT), portul BDMA i circuitul de alimentare; exist de asemenea un semnal general de iniializare RESET. Cele dou porturi seriale asigur o interfa serial sincron complet cu extindere opional n hardware i o mare varietate de moduri de operare pentru transmisia i recepia datelor. Fiecare port poate genera intern un semnal de ceas programabil sau poate accepta un semnal de ceas extern. Procesorul mai prezint pn la 13 pini folosii pentru semnalizare, pini de intrare i ieire ai portului serial SPORT1 ce pot fi configurai ca pini de semnalizare de intrare sau ieire. Opt dintre pinii de semnalizare pot fi programai ca intrare sau ieire iar trei pin sunt tot timpul ieiri. Un temporizator programabil genereaz ntreruperi periodice, astfel un registru de numrare pe 16 bii (TCOUNT) este decrementat la fiecare n cilii de ceas ai procesorului, unde n este o valoare de divizare memorat ntr-un registru pe 8 bii (TSCALE). Cnd valoarea din registru de numrare ajunge la zero se genereaz o ntrerupere iar registrul de numrare se rencarc cu o valoare de 16 bii din registrul (TPERIOD).

6.3.1. Unitile de calcul ale procesorului ADSP2181 Procesorul ADSP2181 opereaz pe 16 bii n virgul fix. Majoritatea operaiilor pot folosi reprezentarea numerelor n complement fa de doi. Numerele binare fr semn sunt considerate pozitive i au o mrime de dou ori mai mare dect numerelor cu semn de aceeai lungime.
371

Cel mai puin semnificant cuvnt al unui numr multiplu (ce conine mai multe cuvinte) este considerat ca numr fr semn. Numerele cu semn: complement fa de doi n cazul familiei ADSP218x numerele cu semn se refer la numerele binare n complement fa de doi. Majoritatea operaiilor presupun sau suport calcule n complement fa de doi. Reprezentarea fracionar arhitectura ADSP218x este optimizat pentru lucrul cu valori numerice n format binar fracionar notat ca 1.15. n cadrul acestui format exist un bit de semn (MSB) i cincisprezece bii fracionari i reprezenta numere cu valori cuprinse ntre -1 i 1 dup cum se arat n figura urmtoare.
-2 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 210

211

12

2-

213

14

2-

15

2-

Exemplu de numere in format 1.15


Numr n format 1.15 0x0001 0x7FFF 0xFFFF 0x8000 Valoare zecimal 0,000031 0,999969 -0,000031 -1,000000

Unitatea arimetico-logic (ALU) Unitatea arimetico-logic opereaz pe 16 bii cu dou porturi de intrare, X i Y i un port de ieire R. ALU accept semnal de transport (CI) care reprezint bitul de transport din registrul de stare (ASTAT). ALU genereaz ase semnale de stare: starea de zero (AY), negativ (AN), transport (AC), depire (AV) semnul de intrare pentru X (AS) i starea coeficienilor (AQ). Toate semnalele de stare sunt memorate ntr-un registru de stare (ASTAT).

372

PMD BUS

24 16 (UPPER) 16

DMD BUS

MUX

REGIS R T II AX 2 x 16 16 16

AY 2 x 16

MUX

MUX

X AZ AN AC AV AS AQ

R EGIS RU T AF CI

ALU

R 16 16

MUX

AR

16

R - BUS

Fig. 6.13 Unitatea aritmetico-logic Portul de intrare X poate accepta date din dou surse: registrul AX sau magistrala de rezultate R. Magistrala de rezultate R conecteaz regitrii de ieire a tuturor unitilor de calcul, permindu-le s le foloseasc, direct, ca operand de intrare. Registru AX este prevzut portului de intrare X i este alctuit din doi regitrii AX i AX1. Aceti regitrii AX sunt citii i pot fi
373

scrii prin intermediului magistralei DMD. Setul de instruciuni asigur de asemenea citirea operanzilor din magistrala PMD, dar nu este o conexiune direct; aceast operaie folosete unitatea de schimb PMD-DMD. Ieirea registrului AX are dou porturi aa nct un registru poate fi intrare pentru ALU n timp ce al doilea ajunge pe magistrala DMD. Portul de intrare Y poate s suporte de asemenea date din dou surse: coninutul registrului AY i registrul de ntoarcere (AF). Registrul AY este prevzut portului de intrare Y i este alctuit din doi regitrii, AY0 i AY1. Aceti regitrii pot fi scrii i citii prin intermediul portului PMD dar nu exist o conexiune direct; aceast operaie folosete unitatea de schimb PMD-DMD. Ieirea registrului AY are, de asemenea, dou porturi: unul asigur c registrul AY poate fi intrare pentru ALU iar al doilea ajunge pe magistrala DMD. Ieirea blocului ALU poate fin ncrcat att n registrul AF ct i registrul AR. Registru AF este registru intern al ALU ce permite ALU s-l foloseasc direct ca intrarea Y sau s furnizezedate registurlui R. ADSP218x poate de asemenea s citeasc AR prin magistrala PMD dar cum nu exist o conexiune direct este necesar s se foloseasc unitatea de schimb PMD-DMD. Orice registru asociat cu ALU poate fi citit i scris n acelai ciclu de ceas. Registrul este citit la nceputul ciclului de ceas al procesorului i este scris la sfritul acestuia. O nou valoare scris ntr-un registru nu poate fi citit pn la ciclul urmtor. Acest lucru asigur registrului de intrare s aduc un operand pentru ALU la nceputul ciclului de ceas i s fie rencrcat cu operandul urmtor din memorie la sfritul ciclului. De asemenea permite registrului de rezultat s fie memorat n memorie i modificat cu noul rezultat n acelai ciclu de ceas. Unitatea ALU conine dou bancuri de regitrii, primari i secundari, existnd dou seturi de regitrii AR,AF,AX i AY. Un singur set de regitrii sunt accesibili la un moment dat. Bancul secundar de regitrii poate fi activat pentru schimbarea contextului, de exemplu n cazul subrutinelor de tratare a ntreruperilor, fr a memora contextul programului n stiv. Setul de regitrii, primari sau secundari, sunt controlai de bitul 0 din registrul de stare al procesorului (MSTAT). Dac acesta este 0 se selecteaz setul de regitrii primari iar dac este 1 sunt selectai regitrii secundari.

374

Funciile standard ale unitii arimetico-logice sunt prezentate mai jos. Funcie
R=X+Y R=X+Y+CI R=X-Y R=X-Y+CI-1 R=Y-X R=Y-X+CI-1 R=-X R=-Y R=Y+1 R=Y-1 R= PASS X R= PASS Y R=0 R=ABS X R= X AND Y R= X OR Y R= X XOR Y R= NOT X R= NOT Y

Descriere
Adunare X i Y Adunare X i Y cu transport Scdere Y din x Scdere Y din x cu transport Scdere X din Y Scdere X din Y cu transport Negare X Negare Y Incrementare Y Decrementare Y rezultatul est ncrcat cu X rezultatul est ncrcat cu Y tergerea rezultatului Valoarea absolut a lui X Operaia logic AND Operaia logic OR Operaia logic XOR Operaia logic NOT Operaia logic NOT

Regitrii de intrare/ieire ai unitii ALU


Sursa pentru portul de intrare X AX0, AX1 AR MR0, MR1, MR21 SR0, SR12 Sursa pentru portul de intrare Y AY0, AY1 AF Destinaie pentru portul de ieire R AR AF Nici una

Operaia de mprire ALU suport operaia de mprire, funcie asigurat cu ajutorul unor blocuri de deplasare adiionale care sunt prezentate n schema bloc a unitii aritmetice. Divizarea poate fi att cu semn ct i fr, cu condiia ca ambii operanzi s fie de acelai semn. O divizare n simpl precizie, cu un demprit pe 32 bii i un mpritor 16 bii cu rezultat pe 16 bii se execut n 16 ciclii. Se pot calcula de asemenea rezultate cu precizie mare sau mic. Divizorul poate fi memorat n registrul AX0, AX1 sau oricare alt registru (R). Jumtatea superioar a divizorului poate s fie att din AY1 ct
375

i AF, n timp ce jumtatea inferioar a divizorului trebuie s fie n AY0. La sfritul operaiei de divizare ctul va fi n AY0. Registrul de stare pentru unitatea ALU (ASTAT) prezint biii din tabelul de mai jos: Indicator
AZ AN AV AC AS AQ

Nume
zero negativ depire transport semn ct

Definiie
Operaia logic NOR pentru toi biii din registrul de rezultat ALU. Adevrat dac ieirea este 0 Bit de semn al rezultatului ALU. Adevrat dac ieirea ALU este Negativ Sau exclusiv ai biilor de transport ale celor dou etape mai semnificative de adunare. Adevrat dac este depire la ALU. Ieire de transport la cea mai semnificativ etap de adunare Bit de semn a portului de intrare x. Este afectat doar de instruciunea ABS Bit de ct generat numai de DIVS i DIVQ

Unitatea de multiplicare/adunare (MAC) Unitatea MAC asigur operaii de multiplicare, multiplicare cu adunare, multiplicare cu scdere, saturare i setare la 0. Deine o funcie prin care permite ca ieirea s fie direct folosit ca operand la urmtoarea multiplicare din ciclul urmtor. Unitatea de multiplicare deine dou porturi de intrare pe 16 bii, X i Y i un port de ieire pentru produs pe 32 de bii. Rezultatul operaiei de multiplicare este plasat apoi ntr-un registru reprezentat pe 40 de bii. Acest registru este pe 40 de bii i este alctuit din trei regitrii mai mici: MR0, MR1 care sunt pe 16 bii i MR2 care este pe 8 bii. Regitrii de intrare/ieire ai unitii MAC sunt similari cu ai blocului ALU. Portul de intrare X poate accepta date att de la registrul MX ct i de la oricare alt registru de pe magistrala de rezultat (R). Magistrala de rezultat (R) conecteaz toi regitrii de ieire pentru toate unitile de calcul, permind acestora s fie operanzi de intrare la alte operaii. Registrul MX este alctuit din doi regitrii MX0 i MX1 care pot fi citii i scrii n magistrala de date DMD. Registrul de ieire MX are dou porturi aa nct unul poate asigura intrare pentru multiplicator n timp ce al doilea poate ajunge pe magistrala DMD.

376

P MD B S U

24 16 (U P R PE ) 16

DMD B S U

MU X

R egistrii MX 2 x 16 16

R egistrii MY 2 x 16 16

MU X

MU X

X Y MU tiplic ator L P

R egistrul MF

40

32

16

Adunare / S scdere R 2 R 1 R 0

MV

MU X 8

MU X 16

MU X 16

R egistrul MR 2

R egistrul MR 1

R egistrul MR 0

M U X

16

R- B S U

Fig. 6.14. Unitatea de multiplicare i adunare Portul de intrare Y poate accepta date att de la registrul MY ct i de la MF. Registrul MY este alctuit din doi regitrii MY0 i MY1 care pot fi citii i scrii n magistrala de date DMD i doar citii de pe magistrala PMD. Ieirea registrului MY prezint de asemenea dou porturi de ieire aa nct acesta poate reprezenta un operand pentru multiplicare n timp ce datele de pe portul al doilea ajung pe magistrala de date. Orice registru asociat cu blocul MAC poate fi att citit ct i scris n acelai ciclu de ceas, regitrii fiind citii la nceputul ciclului i scrii la
377

sfritul acestuia. O citire a unui registru reprezint ncrcarea valorii citite la sfritul ciclului anterior. Noua valoare scris n registru nu poate fi citit dect la sfritul ciclului urmtor. Acest lucru permite ca registrul de intrare s asigure un operand pentru unitatea MAC la nceputul ciclului i s fie modificat cu valoarea operandului urmtor din memorie la sfritul aceluiai ciclu. Este de asemenea posibil ca registrul de rezultat s fie memorat n memorie i modificat n acelai ciclu de ceas. Blocul MAC conine dou seturi de regitrii MR, MF, MX i MY, unul principal i unul secundar iar la un moment dat este disponibil numai un singur set. Selecia setului de regitrii primari sau secundari este controlat de instruciunile ena sec_reg i dis sec_reg sau de bitul 0 din registrul MSTAT, setul secundar fiind activat de instruciunea ena sec_reg sau setnd n 1 bitul 0 al registrului MSTAT. Dup resetare este activ setul principal de regitrii. Funciile standard ale unitii MAC Procesorul ADSP2181 prezint dou moduri pentru funciile standard de multiplicare/adunare: modul fracionar, pentru numere fracionare (1.15) i modul ntreg (16.0) Modul Fracionar este implicit dup resetare sau poate fi ales de instruciunea dis m_mode. Modul ntreg este selectat de instruciunea ena m_mode. Aceste instruciuni seteaz sau terg bitul 4 al registrului MSTAT, acesta fiind 0 pentru modul fracionar i 1 pentru modul ntreg. n ambele situaii registru de ieire al multiplicrii este pe 40 de bii i poate aduna sau scdea rezultatul din registrul MR. Funcie
MR= xop*yop MR= xop*xop MR= MR+ xop*yop MR= MR- xop*yop

Descriere
Multiplic operanzii X i Y Ridicare la ptrat Multiplic operanzii X i Y i adun rezultatul la MR Multiplic operanzii X i Y i scade rezultatul din MR

n modul fracionar, ieirea pe 32 de bii a portului P este ajustat aa nct semnul este extins i este deplasat un bit la stnga nainte ca s fie adunat cu MR. De exemplu, bitul 31 din p este aliniat cu bitul 32 al registrului MR (care este bitul 0 al lui MR2) i bitul 0 al lui P este aliniat cu bitul 1 al lui MR (care este bitul 1 al lui MR0). Biii LSB sunt umplui cu zero.

378

Regitrii de intrare/ieire pentru MAC


Surs pentru portulde intrare X MX0, MX1 AR MR0,MR1,MR2 SR0, SR1 Surs pentru portul de intrare Y MY0,MY1 MF Destinaie pentru portul de ieire R MR (MR2,MR1,MR0) MF

Operaia de trunchiere Aceast operaie permite implementarea mult mai eficient a algoritmilor specifici pe bit. De exemplu, rotunjirea parial este folosit n rutinele pentru compresia vocii pentru sistemul GSM. Acumulatorul are posibilitatea rotunjirii registrului R n domeniul biilor 15 i 16. rotunjirea poate fi specificat ca parte a codului instruciunii. Rezultatul rotunjirii este direcionat att n registrul (MR) ct i n (MF). Cnd este indicat rotunjirea cu registrul MF a registrului de ieire, contextul registrului MF va reprezenta, dup ce se execut instruciunea, rezultatul rotunjit pe 16 bii. Similar cnd MR este selectat ca registru de ieire, MR1 va conine rezultatul rotunjit pe 16 bii; efectul de rotunjire n MR1 afecteaz MR2 cum i MR2 i MR1 reprezint rotunjirea rezultatului pe 24 de bii Unitatea de deplasare Unitatea de deplasare prezint un set complet de funcii pentru deplasri logice i aritmetice. Operanzii sunt reprezentai pe 16 bii iar rezultatul este pe 32 de bii. Aceast unitate este compus din urmtoarele blocuri: blocul de deplasare, logica OR/PASS, detectorul de exponent i compararea logic a exponenilor. Blocul de deplasare este de tipul 16x32bii i accept valori pe porturile de intrare reprezentate pe 16 bii avnd posibilitatea de plasare a acestora pe portul de ieire, operaie care se realizeaz ntr-un singur ciclu de ceas. Blocul de deplasare i logica asociat acestuia este gestionat de un set de regitrii. Registrul de intrare (S1) reprezint portul de intrare fiind reprezentat pe 16 bii. Acesta poate fi citit i scris prin intermediul magistralei DMD. Blocul de deplasare si detectorul de exponent au de asemenea ca intrri AR, SR sau MR prin intermediul magistralei R.
379

Rezultatul deplasrii (SR) este un registru pe 32 de bii mprii n dou seciuni pe 16 bii, SR0 i SR1.
DMD BU S 16

MU X

R GIS R E TU S I

R GIS R E TU S B MU X S S COMP E AR EXP ONENT DE ECT T OR IX 8 HI / L O R C 32 O 32 X

MU X

MU X

OR / P S AS R GIS R E TU S E 16 16

NE T GA E

MU X

MU X

F rom INS R CT T U ION

R GIS R E TU S1 R

R GIS R E TU S0 R 16 MU X

16

R- B S U 16

Fig. 6.15 Unitatea de deplasare Regitrii SR0 i SR1 pot fi ncrcai din magistrala DMD i pot iei att prin magistrala DMD ct i prin magistrala R, astfel c registrul SR se poate ntoarce ca operand n logica OR/PASS pentru a permite deplasrile n dubl precizie. Modul de deplasare al intrrii este determinat de un cod de control i un indicator de tip HI/LO. Codul de control, reprezentat de o valoare pe 8 bii, indic direcia i numrul de locuri pe care trebuie fcut deplasarea. Dac acesta este pozitiv indic o deplasare la stnga iar dac este negativ se indic o deplasare la dreapta. Semnalul HI/LO determin punctul de referin pentru operaia de de plasare. n starea Hi toate deplasrile au ca referin SR1 (jumtatea
380

superioar a cmpului de ieire) iar starea LO indic faptul c toate deplasrile se refer la SR0 (jumtatea inferioar). Acest indicator este util cnd se deplaseaz valori pe 32 de bii n timp ce permite o comand pentru ambele numere ce trebuie deplasate cu aceiai cuvnt de control. Semnalul de control este selectabil de fiecare dat cnd se folosete deplasarea. 6.3.3. Adresarea unitilor de memorie ADSP2181 dispune de mai multe moduri pentru conectarea memoriei i a dispozitivelor periferice. Principalele grupuri funcionale sunt Memoria de Programe, Memoria de Date, Memoria pe extern i dispozitivele I/O. Memoria de programe este un spaiu cu date reprezentate pe 24 bii pentru memorarea att a instruciunilor ct i a datelor. ADSP2181 are 16Kcuvinte de memorie de program intern i poate accesa pn la 8Koctei de memorie extern folosind magistralele externe. Att citirea unei instruciuni ct i a unei date din memoria intern dureaz un singur ciclu de ceas. Memoria de date este pe 16 bii. Procesorul ADSP2181 are 16K cuvinte pentru memoria de date intern coninnd 16325 locaii accesibile utilizatorului i 32 de regitrii. Suport de asemenea pn la 8K memorie prin intermediul magistralelor externe de date. Memoria accesibil la nivel de octet (Byte Memory) asigur accesul la un spaiu de memorie pe 8 bii prin intermediul portului BDMA. Aceast interfa poate s acceseze pn la 4M bii de memorie utiliznd opt linii de date ca linii de adres care asigur efectiv pentru portul BDMA 22 linii de adres. La pornirea procesorului, acesta poate s ncarce automat codul din aceast memorie. Spaiul I/O permite accesarea a 2048 locaii de memorie cu datele reprezentate pe 16 bii. Ea este folosit pentru comunicaia cu dispozitive periferice paralele cum ar fi convertoare analog digitale, convertoare digital analogice, regitrii externi sau latch-uri. Memoria de programe Circuitul deine 16 K x 24bii memorie de programe integrat, proiectat s permit pn la dou accesri pe fiecare ciclu aa nct toate operaiile s se desfoare ntr-un singur ciclu main. De asemenea poate folosi pn la 8K de memorie extern. Organizarea memoriei de programe
381

este controlat de bitul MMAP i registrul PMOVLAY. Normal ADSP 2181 este configurat cu MMAP setat 0 iar memoria de program organizat dup cum se arat n tabelul 6.2. Exist 16 k cuvinte de memorie accesibil intern cnd registrul PMOVLAY este 0. Cnd acesta este setat la o alt valoare dect 0, accesarea extern ncepe de la adresa 0x2000 pn la 0x3FFF. Adresa extern este generat dup cum se arat n tabelul 6.2. Aceast organizare asigur pentru cele dou segmente de 8K externe s foloseasc numai o adres normal de 14 bii. Acest lucru permite ca memoria de program s fie ntr-unul din cele 2 segmente de memorie extern n loc de memoria intern. Memorie de programe
8K intern (PMOVLAY = 0, MMAP = 0) sau EXTERN 8K (PMOVLAY = 1 sau 2, MMAP = 0) 8K intern 0x0000

Zona de adrese
0x3FFF

0x2000 0x1FFF

Tabelul 6.2. Trebuie utilizat cu atenie acest spaiu de adresare pentru c nucleul procesorului nu ia n considerare valoarea registrului PMOVLAY. De exemplu, dac se realizeaz o operaie de salt ntr-o zon din memoria extern, iar programul se afl pe alt zon sau pe memoria intern, pot s apar salturi greite. De asemenea, trebuie avut grij la rutinele de tratare a ntreruperilor pentru c regitrii nu sunt automat salvai i restaurai n arhiva procesorului. Memoria de date ADSP 2183 are 16352 cuvinte de 16 bii de memorie intern pentru date. Pe lng aceasta poate folosi pn la 8K memorie extern. n tabelul 6.3 se arat organizarea memoriei de date.

382

Memorie de programe
32 registrii MAPPED REGISTERS

Zona de adrese
0x3FFF 0x3FE0 0x3FDF

Intern 8160 cuvinte 8K intern (DMOVLAY = 0) sau 8K extern (DMOVLAY = 1, 2) 0x2000 0x1FFF 0x0000

Tabelul 6.3. Sunt 16352 cuvinte de memorie accesibile intern cnd registrul DMOLLAY este 0. Cnd acest registru este setat la o alt valoare diferit de 0 se acceseaz extern de la adresa 0x0000 la 0xFFF. Adresa extern se genereaz dup cum este artat n tabelul 6.4.
DMOVLAY 0 1 2 Memorie Intern Extern zona 1 Extern zona 2 A13 Nu se aplic 0 1 A12:0 Nu se aplic 13 LSB ai adresei ntre 0x0000 i 0x1FFF 13 LSB ai adresei ntre 0x0000 i 0x1FFF

Tabelul 6.4. Aceast organizare permite folosirea a 2 zone de 8K de memorie folosind numai 14 linii de adres. Toate accesrile interne se realizeaz ntr-un singur ciclu de ceas. Accesarea memoriei externe folosete stri de ateptare specificate n registrul DWAIT. Spaiul de adresare I/O ADSP2181 suport o zon de adresare extern suplimentar denumit spaiul de intrare/ieire (I/O input/output). Acest spaiu este proiectat s suporte comunicaii simple cu periferice sau regitrii de date ASIC. Spaiul de adrese I/O acceseaz pn la 2048 locaii i sunt folosii cei mai puini semnificativi 7 bii din cadrul magistralei externe de date. Fa de FAMILIA ADSP2100 au mai fost adugate dou instruciuni pentru a scrie i citi n spaiile de memorie I/O. Spaiul I/O are de asemenea patru registri de trei bii dedicai pentru strile de ateptare IOWAIT 0 3,
383

care specific pn la apte stri de ateptare pentru fiecare din cei 4 registri (tabelul 6.5).
Domeniul adresei 0x0000x1FF 0x2000x3FF 0x4000x5FF 0x6000x7FF Registrul strilor de ateptare IOWAIT0 IOWAIT1 IOWAIT2 IOWAIT3

Tabelul 6.5. ADSP 2181 are un semnal programabil de selecie a memoriei care este folositor pentru generarea semnalelor de selecie a memoriei aranjat pe mai multe spaii. Semnalul CMS este generat s aib acelai timp ca semnalele de selecie a memoriei ( PMS , DMS , BMS , OMS ) dar poate combina funcionarea lor. Fiecare bit din registrul CMSSEL, cnd este setat, determin ca semnalul CMS s apar cnd apare selectarea memoriei alese. De exemplu pentru a folosi 32K cuvinte de memorie s fie att memorie de date ct i memorie de program se seteaz biii PMS i DMS din registrul CMSEL i se folosete CMS s comande selecia memoriei, i se folosesc una din cele 2 comenzi CMS i PMS ca bit adiional de adres. Primul CMS funcioneaz la fel ca orice alt semnal de selectare. 6.3.3. Logica de tratare a ntreruperilor Controlerul de ntreruperi permite procesorului s rspund la apte ntreruperi posibile i resetare folosind resurse minime. ADSP2181 prezint patru pini dedicai pentru ntrerupere extern, IRQ2 , IRQL0 , IRQL1 i
IRQE . Pe lng acetia i SPORT1 poate fi configurat pentru IRQ0 , IRQ1 ,

FLAG_IN i FLAG_AUT, n total ase ntreruperi externe. Procesorul mai suport de asemenea ntreruperi interne de la temporizator, portul BDMA, cele dou porturi seriale, program i circuitul de alimentare. Nivelele de ntreruperi sunt intern mprite pe prioritate i pot fi mascate individual (excepie fac resetul i circuitul de alimentare). IRQ2 , IRQ0 i IRQ1 pot fi programate a fi active la fronturi sau paliere. IRQL0 i IRQL1 sunt active pe paliere iar IRQE activ pe front. Prioritatea i adresa vectorului pentru toate ntreruperile este prezentat n tabelul 6.6. ntreruperile pot fi mascate sau nemascate folosind registrul IMASK, cererile de ntrerupere fcnd o operaie logica AND cu biii corespunztori
384

din IMASK; ntreruperea cu prioritatea cea mai mare este apoi selectat. Procesorul poate masca toate ntreruperile ntr-un singur ciclu executnd o instruciune de modificare a registrului IMASK. Acest lucru nu afecteaz buffer-ul portului serial sau transferul DMA. Registrul de control al ntreruperilor, ICNTL, controleaz ntreruperile externe IRQ0 , IRQ1 i IRQ2 pentru a fi active pe front sau palier. IRQE este o ntrerupere extern activ pe front si poate fi forat sau tears. Pinii IRQL0 i IRQ1 sunt ntreruperi externe active pe palier. Registrul IFC este un registru ce poate fi doar scris i este folosit pentru a fora i terge ntreruperile.
Sursa de ntrerupere Reset (sau Power-Up cu PUCR = 1) Power Down (nemascabil) Adresa vectorului de ntrerupere 0000 (prioritate mare) 002C 0004 0008 000C 0010 0014 0018 001C 0020 0024 0028

IRQ2 IRQL1 IRQL0


SPORT0 transmisie SPORT0 recepie

IRQE
ntrerupere BDMA SPORT1 transmisie sau IRQ1 SPORT1 recepie sau IRQ0 Timer

(prioritae mic)

Tabelul 6.6. Stiva din procesor salveaz starea acestuia i o menine n timpul executrii ntreruperilor. Stiva are 12 nivele i asigur funcionarea ntreruperilor, salturilor i subrutinelor. Urmtoarele instruciuni permit validarea sau invalidarea ntreruperilor (incluznd power-down) indiferent de starea registrului IMASK. Invalidarea ntreruperilor nu afecteaz bufferul portului serial sau transferul DMA. ENA INTS; DIS INTS;

385

7. Aplicaii cu procesorul digital ADSP2181 Pentru a realiza o aplicaie n timp real, cu ajutorul unui procesor de semnal, se disting mai multe etape: a. modelarea matematic - este indicat ca mai nti s existe o modelare matematic ct mai precis a algoritmului de calcul ce urmeaz a fi implementat; b. verificarea prin simulare - algoritmul poate fi verificat prin simulare cu ajutorul unui mediu de programare; n aplicaiile legate de sistemele de prelucrare numeric a semnalelor, MATLAB este un mediu care are avantajul uurinei n realizarea programelor i analiza rezultatelor; c. realizarea schemei logice bloc - este o etap necesar n special pentru programele complexe, de dimensiuni mari; d. realizarea programului propriu-zis - n limbajul de programare (assembler) specific procesorului de semnal; e. executarea programului pe procesorul de semnal - are loc dup ce programul n limbaj de asamblare a fost n prealabil compilat (unde este cazul), asamblat, link-editat i ncrcat n memoria procesorului numeric de semnal integrat ntr-un sistem fizic adecvat aplicaiei int; f. evaluarea eficienei programului - se realizeaz prin msurarea i analiza semnalelor generate de sistemul bazat pe procesorul de semnal. O etap suplimentar, care este deosebit de util n special n optimizarea algoritmilor i depanarea defeciunilor de program, este utilizarea programelor de dezvoltare, care includ simularea funcionrii procesorului numeric de semnal precum i programe de tip emulator. Aplicaiile prezentate n acest capitol au urmat, n general, etapele prezentate mai sus. Ele au fost implementate cu ajutorul sistemului de dezvoltare EZ-Kit Lite, figura 7.1, bazat pe procesorul de semnal ADSP 2181 n virgul fix pe 16 bii, dar programele pot fi adaptate extrem de uor pentru orice procesor din familia ADSP 2100. Structura acestui kit de dezvoltare va fi prezentat mai jos i are n componen, pe lng procesorul de semnal, dou convertoare analog-digitale i dou digital-analogice, integrate n cadrul unui codec, dispozitiv care comunic printr-un protocol serial cu procesorul de semnal. Pentru o aplicaie dat, programul conine att o parte de iniializare a codecului, a regitrilor procesorului de semnal etc., ct i partea de prelucrare a eantioanelor de semnal (algoritmul propriu-zis). Deoarece prima parte este una de iniializare i este comun tuturor aplicaiilor fiind
386

transparent pentru utilizatorul-programator, ne-am propus s prezentm strict partea de prelucrare a eantioanelor pentru fiecare aplicaie, rutin, care, de regul, are urmtoarea structur:
Input_samples: <reg> = dm(rx_buf1); {Citirea din memorie a celor dou eantioane} <reg> = dm(rx_buf2); {..Aci se scrie programul propriu-zis de prelucrarea a eantioanelor..... } dm(tx_buf1)=<reg>; dm(tx_buf2)=<reg>; rti;

Fig. 7.1. Schema bloc simplificat a platformei de dezvoltare EZ-KIT Este foarte important de precizat c modul de lucru al procesorului se bazeaz pe ntreruperi, ceea ce presupune c, dup faza de ncrcare a programului i iniializare a platformei de dezvoltare, procesorul st practic ntr-o bucl infinit, n starea idle (care asigur un consum redus) i ateapt ntreruperea generat de ctre codec. La fiecare moment de tact al frecvenei de eantionare se genereaz o ntrerupere, iar codecul pune la dispoziie procesorului dou eantioane, corespunztoare celor dou semnale analogice de la intrarea acestuia i preia de la procesor alte dou eantioane, pe care le va transfera spre ieire.

387

7.1. Implementarea filtrului FIR Relaia n timp discret care caracterizeaz structura unui filtru FIR este:

y[n] = bi x[n i ]
i =0

N 1

unde : y[n] este semnalul de la ieirea filtrului x[n] este semnalul de la intrarea filtrului hi reprezint coeficienii filtrului care depind de tipul acestuia (FTB, FTJ, oarecare, etc.) N este ordinul filtrului

Aa cum se poate observa, eantionul semnalului de la ieire la momentul de timp curent se calculeaz prin combinaia liniar a eantioanelor semnalului de la intrare. Deci, la fiecare moment de timp, trebuie calculat o sum de produse, adic trebuiesc executate N nmuliri i N adunri, operanzii constnd n istoria semnalului de la intrare pe de o parte i coeficienii filtrului pe de alt parte. Este prezentat n continuare rutina de calcul a unui filtru FIR implementat cu ajutorul unui procesor din familia ADSP 2100. irul de coeficieni nu este calculat n timp real, el fiind ncrcat n memoria procesorului odat cu ncrcarea programului. Este deci nevoie i de un instrument pentru calcularea acestora nainte de fazele de asamblare i linkeditare a programului pentru procesorul de semnal. Pentru aceasta, vom folosi un program interactiv realizat n MATLAB de calcul al coeficienilor unui filtru FIR transversal de tip FTB, utilizatorul putnd s impun banda i ordinul filtrului. Programul precum i rutina de conversie a coeficienilor n format hexazecimal i plasarea acestora ntr-un fiier de date sunt prezentate mai jos.
7.1.1. Generarea coeficienilor filtrului FIR

Utilizatorul este interogat n scopul alegerii frecvenei de eantionare, a benzii semnalului i a numrului de coeficieni. Prin intermediul funciei fir1.m este proiectat filtrul FIR cu parametrii fixai mai sus iar coeficienii sunt salvai ntr-un format adecvat pentru faza de asamblare(format 1.15, 6 digii pe o coloan). Programul apeleaz funcia conv_dec_hex.m.
388

% Program de generare a coeficientilor unui filtru fir clear; clc; % Introducerea parametrilor filtrului trece band fe=input('Frecventa de esantionare : [Hz] '); % Frecvena de eantionare in hertzi Banda=input('Banda semnalului [f1 f2] in [Hz] : '); % Banda filtrului trece banda Nf=input('Numarul de coeficienti : '); % Numrul de coeficieni Ord_f=Nf-1; % Ordinul filtrului = nr. de coeficienti-1 Wn=Banda/(fe/2); % Banda normat B=fir1(Ord_f,Wn); % Coeficienii filtrului (n numr de Nf+1) - n zecimal % Acesta este de fapt i numrtorul funciei de transfer % Afiarea funciei de transfer n frecven a filtrului respectiv A=1; % Numitorul funciei de transfer Np=1024; % Numrul de puncte in care se calculeaz transformata in frecven [H,F]=freqz(B,A,Np,fe); % ntoarce rspunsul n frecven; %Afiarea coeficienilor filtrului subplot(3,1,1); stem(B); % Afiarea modulului funciei de transfer n frecven subplot(3,1,2); plot(F,20*log(abs(H)/max(abs(H)))); subplot(3,1,3); plot(F,abs(H/max(H))); zoom on; % Scrierea coeficienilor generai ntr-un fiier(calea este implicit) Cu_fisier=input('Generarea fisier coeficienti ? 0 = nu / 1 = da : '); if Cu_fisier==1 % Introducere cale disp('Introducei calea n care dorii s generai fiierul precum i numele acestuia); cale_fis =input(' Cale i denumire fiier [exemplu: C:\lucru\fiier.dat ]: '); conv_dec_hex(B,cale_fis); end

Dac se dorete schimbarea tipul de filtru(FTJ, FTS, FOB) se va modifica corespunztor modul de apelare a funciei fir1 (pentru detalii, comanda help fir1.m). Funcia din programul urmtor realizeaz conversia conversie i scrierea ntr-un fiier a unui ir de variabile subunitare n format 1.15
% Funcie de conversie a unui ir de variabile cu valoare subunitar n format %1.15 pentru asamblorul procesoarelor din familia ADSP 2100 (6 digii, o %coloan). % Utilizare: conv_dec_hex(sir,numefis ) unde: % sir = irul de variabile n format real, subunitar) % numefis = calea complet (inclusiv numele fiierului) unde urmeaz a fi scris %fiierul rezultat % Exemplu: conv_dec_hex(coeficienti, C:\lucru\fiier.dat) function conv_dec_hex(coef,numefis); % Operatie de normare pentru a ne asigura c variabilele transferate sunt %subunitare (opional) %Nivel_max=abs(max(coef)); % maximul absolut; coef=coef/Nivel_max;

389

% normarea coef_i=round(32768*coef); %aducerea n format 16.0 % Aducerea numerelor negative in format CC2 for j=1:length(coef_i) if coef_i(j)<0 coef_i(j)=coef_i(j)+2^16; end end coef_hex=dec2hex(coef_i,4); % Conversia n format hexazecimal l_coef=length(coef); % Lungimea vectorului

a1=char(48*ones(l_coef,2)); % caractere 00 PENTRU PM (la final) a2=char(13*ones(l_coef,1)); % caractere CR a3=char(10*ones(l_coef,1)); % caractere LF coef_pt_fis=[coef_hex a1 a2 a3]; % format necesar pentru scrierea corect n %fiier fis1=fopen(numefis,'w'); % Deschiderea fiierului fwrite(fis1,coef_pt_fis'); % Scrierea de date in fiier fclose(fis1); % nchiderea fiierului disp(' '); disp(['Fiier de date : ' numefis ' ...creat. OK! ']);

7.1.2 Implementarea algoritmului filtrului FIR

Coeficienii filtrului sunt ncrcai n buferul coef de lungime taps(N) la momentul link-editrii programului, din fiierul de date fir_coef.dat unde au fost n prealabil scrii n forma 1.15, hexazecimal. Istoria semnalului de intrare se gsete n buferul esant de lungime taps care este actualizat la fiecare moment de timp discret (linia de program dm(i2,m2)=ax1). Semnalul de intrare este citit din zona de memorie rx_buf iar cel de ieire este scris n zona tx_buf.
//zona de program de initializari #include "def2181.h" #define grad 511 .SECTION/DM .var w[grad+1]; .var stat_flag; .SECTION/PM pm_da; data1; //include registrii de lucru pentru ADSP2181 //gradul filtrului //sectiune pentru declaratii de variabile din //memoria de date //bufferul circular in care sunt salvate esantioanele //sectiune pentru declaratii de variabile din // memoria de program //buffer-ul circular al coeficientilor //initializarea buffer-ului circular de date //initializarea buffer-ului circular de coeficienti

.var fir_coef[grad+1]="coef.dat" ; // zona de program utilizator i3=w; m3=1; l3=grad+1; i7=fir_coef; m7=1; l7=grad+1;

390

cntr=grad+1; do bucla1 until ce; bucla1: dm(i3,m3)=0; //initializeaza buffer-ul de esantioane cu 0 wt: idle; //bucla infinita cu stare in idle (stare de consum redus) jump wt;

input_samples: ena sec_reg;

//utilizeaza bancul secundar de registrii

ax0=dm(rx_buf+1); //receptioneaza data esantionata x dm(tx_buf+1)=ax0; //retransmite data pe canalul 2 m3=0; dm(i3,m3)=ax0; //o depune in bufferul circular de date m3=1; mr=0, mx0=dm(i3,m3), my0=pm(i7,m7); // preia primul coeficient din memoria // de programe h cntr=grad; //initializeaza numarul de operatii MAC do bucla2 until ce; //executa o bucla mr=mr+mx0*my0 (ss), mx0=dm(i3,m3), my0=pm(i7,m7); //calculeaza y=y+x*coef //si preia urmatorul coeficient mr=mr+mx0*my0 (rnd); //rotunjeste ultimul calcul if mv sat mr; //satureaza rezultatul daca este nevoie sr=ashift mr1 by 1 (lo); //il amplifica cu doi mr1=sr0; dm(tx_buf+2)=mr1; //trminite semnalul esantionat pe seriala m3=-1; modify(i3,m3); rti;

bucla2:

Pentru punerea n practic a filtrului numeric digital sunt necesare un generator de semnal i un osciloscop. Acestea daca nu exist fizic, pot fi preluate aplicaiile din Matlab apelate prin comanda daqfcngen care emuleaz un osciloscop si un generator de semnal. Achiziia se realizeaz cu ajutorul plcii de sunet.

391

7.2. Realizarea unui semnal sinusoidal cu procesorul de semnal ADSP2181

n aceast aplicaie se propune ca semnalul sinusoidal s fie creat de ctre procesorul de semnal ADSP 2181 printr-o metod bazat pe aproximri cu o funcie polinomial.
7.2.1. Calculul funciei sinus pe baza descompunerii n serie numeric cu numr finit de termeni

Deoarece se tie c operaiile de baz ale procesorului numeric nu includ calculul unor funcii precum cele trigonometrice, este extrem de important de realizat rutine de calcul optime n ceea ce privete timpul de calcul, memoria consumat i precizia dorit. Calculul funciei sinus este probabil cea mai important rutin de calcul n prelucrarea numeric a semnalelor i este utilizat n special n realizarea generatoarelor sinusoidale digitale. Implementarea cu ajutorul procesoarelor de semnale a funciei sinus are la baz o aproximare a acestei funcii printr-o serie numeric cu numr finit de termeni, astfel nct ea poate fi redus la un numr de nmuliri i adunri. Argumentul acestei funcii este presupus a fi n format binar de tipul 1:15 (un bit de semn i 15 bii pentru partea fracionar) corespunztor domeniului real [-1,1) sau n radiani domeniului [-, ). Deci pentru a calcula sin(/4), funcia trebuie apelat cu argumentul 1/4 i va ntoarce cu o anumit precizie valoarea 0.7017. Relaia de aproximare este:
sin(x) = 0.140625 x + 0.02026367 x 2 -5.325196 x 3 + 0.5446778 x 4 + 1.800293 x 5 (7.1)

Precizm c aceast relaie este precis doar n domeniul [0, 1/2] corespunztor intervalului [0, /2] n radiani. n tabelul 7.1. sunt date cteva valori calculate cu aceast funcie. Pentru valori n afara intervalului [0, 1/2] ale lui x, aproximarea funciei sinus nu mai este precis, dar innd cont de proprietile de simetrie ale funciei sinus, se pot calcula i aceste valori prin aducerea n primul cadran, n conformitate cu relaiile 7.2 i 7.3. sin(-x)= - sin(x) (7.2) sin(-x)=sin(x) (7.3)
392

Tabelul 7.1.
x [rad] 0 /6 /3 /2 sin (x) teoretic 0 0.500000000 0.866025403 1 x [format 1.15] 0 0.16666 0.33333 0.50000 sin (x) aproximat 0 0.4999985 0.8660301 1.0000300

Rutina de calcul a funciei sinus


Valoarea de intrare este n formatul binar 1:15 i va fi depus n registrul ax0 ca parametru de apel. Rezultatul va fi ntors n registrul ar. Coeficienii C1, C2, C3, C4 i C5 ai funciei de aproximare sunt reprezentai n formatul binar 4:12 avnd n vedere faptul c cel mai mare dintre acetia este 5.3 i deci depete valoarea 4 care ne-ar fi permis i o reprezentare n formatul binar 3:13. Rutina ajusteaz n primul rnd argumentul, astfel nct s fie adus n primul cadran (domeniul [0, 1/2]). Apoi se calculeaz puterile lui x i se multiplic cu valorile coeficienilor. Pe lng operaiile de adunri i nmuliri executate, n conformitate cu relaia de aproximare, au loc i deplasri pentru ajustarea formatelor de reprezentare.

//zona de initializari #include "def2181.h" #define p 0x0200

//include registrii de lucru pentru ADSP2181 //frecventa sinusoidei este fs*p/65535

393

.SECTION/DM

data1;

//sectiune pentru declaratii de variabile din // memoria de date

.var stat_flag; .var/circ sin_coef[5]=0x2833, 0x0042, 0xBBD6, 0x06F9, 0x170B; //buffer-ul circular al coeficientilor // zona de program utilizator i3=sin_coef; m3=1; ax0=0x0000; wt: idle; jump wt; l3=5; //buffer pentru accesarea coeficientilor

//bucla infinita

/*------------------------------------------------------------------------------ intreruperea in care se citesc esantioanele ------------------------------------------------------------------------------*/ input_samples: ena sec_reg; /* use shadow register bank */ ay0=p; ar=ax0+ay0; ax0=ar; calcul_sin: ay0=0x4000; //valoarea n binar este 0100 0000 0000 0000 ar=ax0, af=ax0 and ay0; //se verifica daca argumentul este n cadranul ii sau iv //prin verificarea celui de-al doilea bit al lui ax0 care, daca este 1, //rezultatul operatiei or va fi nenul if ne ar=-ax0; //daca cel de-al doilea bit al lui ax0 este 1, atunci el este fie un //numar mai mare dect 0.5, adica n cadranul ii si prin negare va //fi adus n cadranul iii, fie un numar mai mic dect 1/2, adica n //cadranul iv si prin negare va fi adus n cadranul i. n acest //moment, argumentul se afla fie n cadranul i fie n cadranul iii(a //se vedea figura de mai sus) ay0=0x7fff; //n format binar este 0111 1111 1111 1111 ar=ar and ay0; //primul bit este facut 0, adica bitul de semn este nlaturat, //operatie echivalenta cu aducerea argumentului din cadranul iii //daca acesta era negativ, n cadranul i n acest moment //argumentul se afla n mod sigur n cadranul i si deci se poate //trece la calculul formulei de aproximare my1=ar; mf=ar*my1 (rnd), mx1=dm(i3, m3); mr=mx1*my1 (ss), mx1=dm(i3,m3); cntr=3; //ncepe un ciclu de calcul al valorii sinus conform relatiei de //aproximare do sin_a until ce; mr=mr+mx1*mf (ss);// mf=ar*my1 (rnd), mx1=dm(i3, m3); mr=mr+mx1*mf (rnd); sr= ashift mr1 by 3 (hi);// mai nti cel mai semnificativ cuvnt mr1, dupa deplasare

sin_a:

394

//este scris n sr1 ar=sr1; af=pass ax0; // se verifica daca sr1 are primul bit 1, adica daca //rezultatul cumularii produselor din formula de //aproximare depaseste valoarea de 1, adica trece ntr-o //valoare negativa ceea ce ar afecta bitul de semn, //respectiv primul bit ar fi 1

if lt ar= -ar; dm(tx_buf+1)=ar; dm(tx_buf+2)=ar; rti;

7.2.2. Implementarea cu DSP a unui generator sinusoidal digital


Pentru a putea utiliza generatoarele sinusoidale digitale trebuie avute n vedere dou aspecte: - formatul numeric n care opereaz procesorul de semnal - modul de calcul al funciei sinus Pentru a implementa un generator sinusoidal cu o frecven impus f0, amplitudine 1 i faz 0, vom presupune c utilizm funcia sinus prezentat mai sus care calculeaz funcia sinus pentru un argument cu valoare n intervalul [-1, 1) conform reprezentrii n format 1.15. Este foarte important de precizat faptul c acest interval corespunde intervalului [-, ). De exemplu, pentru a calcula sin(/4) trebuie s apelm funcia pasndu-i valoarea 1/4. n general pentru a calcula sin() unde are o valoare subunitar n modul, apelm funcia doar cu argumentul , respectiv ne asigurm c aceast valoare se afl n registrul AX0 la momentul apelrii funciei. Revenind la problema generatorului sinusoidal, scopul este de a calcula sin(2f0t) unde f0 este o valoare constant impus iar t reprezint timpul. O particularitate important a aplicaiilor n timp real (on line) este c timpul are o durat nedeterminat spre deosebire de cazul simulrii unde durata este finit. Deci, nu este indicat folosirea unei variabile pentru reprezentarea timpului din cauza depirii formatului de reprezentare care este finit. n timp discret(TD) se poate scrie: f0 sin(2 f 0t ) = sin(2 f 0 kTe ) = sin( k ) = sin( k f N ) unde k fe / 2 =0,1,2,.

395

f0 este frecvena normat iar fe i Te sunt frecvena i respectiv fe 2 perioada de eantionare. Conform teoremei eantionrii fN are o valoare subunitar i deci pentru k=1 putem calcula sin( fN) prin apelarea funciei sin cu argumentul fN aa cum este prezentat mai sus (avem =fN). La momentul de timp discret ulterior k=2, i va trebui calculat sin(2fN). Termenul kfN se numete acumulator de faz (l notm cu ac_faz) i se incrementeaz cu valoarea lui fN la fiecare moment de timp discret, asfel : ac_faz t+1 =fN +ac_faz t fN = Dup incrementarea acumulatorului de faz, se calculeaz sin(ac_faz). Singura problem care ar putea aprea la aceast metod este cea a depirii deoarece aa cum am prezentat mai sus argumentul funciei sinus trebuie s fie subunitar n modul. Situaia este rezolvat de la sine prin modul n care are loc depirea prin adunare n cod complementar fa de 2(CC2). De exemplu, s presupunem c dorim s generm o sinusoid cu frecvena normat fN =0.3 i deci primele valori ale acumulatorului de faz vor fi 0, 0.3, 0.6, 0.9, 1.2 care corespund valorilor unghiulare respectiv 0, 0.3, 0.6 , 0.9 , 1.2 [rad]. n momentul n care are loc adunarea ac_faz=0.9+0.3, la nivelul ALU are loc o depire i rezultatul va fi 1.22=-0.8. Argumentul de apel al funciei sinus fiind -0.8, se va calcula sin(-0.8) = sin(1.2) i deci rezultatul este corect. Tabelul 7.2.
k (TD) 0 1 2 3 4 Operaie ALU 0+0.3= 0.3+0.3= 0.6+0.3= 0.9+0.3= ac_faz (1.15) 0 0.3 0.6 0.9 -0.8 Faza [rad] 0 0.3 0.6 0.9 1.2 Sin (faz) 0 0.809 0.951 0.309 -0.58

Ca exemplu, vom prezenta un scurt program, care genereaz un semnal sinusoidal cu frecvena f0 = 837 Hz. Presupunem c frecvena de eantionare este fe=22050 Hz. Frecvena normat este fN=f0 /(fe /2)=837/11025=0.075918367346. n format 1.15 aceast valoare devine rot(0.075918367346 X 215) / 215 =rot(2487.69)/32768=2488/32768=0.075927734375 unde rot este operatorul de rotunjire. Aceast valoare a frecvenei normate nu este
396

identic cu cea dorit de noi din cauza preciziei de reprezentare pe 16 bii n format CC2, astfel c frecvena real generat va avea valoarea f0=0.0759183 X (fe/2)=837.103271484375 Hz i deci va fi uor diferit de valoarea de 837 Hz pe care ne-am propus-o noi. Ca o observaie suplimentar, putem spune c valoarea minim cu care poate fi incrementat frecvena unui semnal sinusoidal este dat de cea mai mic valoare n format 1.15, 2-15=0.000030517578125, conform relaiei:
f min = 215 ( f e / 2 )

n cazul nostru cuanta de frecven este f min = 0.000030517578125 X 11025 = 0.336456298828125 Hz. Putem deci genera semnale sinusoidale ncepnd cu aceast frecven i pn aproape de fe/2 cu pasul de 0.336456298828125 Hz conform tabelului:
Frecvena normat (fN) Binar Hexa Format 1.15 0000 0000 0000 0001 0001 0.000030517578125 0000 0000 0000 0010 0002 0.000061035156250 ..................... ............ ..................... ......... 0000 1001 1011 1000 09B8 0.075927734375 ..................... ............ ..................... ......... 0111 1111 1111 1111 7FFF 0.999969482421875 Frecvena real generat (f0) [Hz] 0.336456298828125 ..................... 837.103271484375 ..................... 11024.663543701171875

Pentru exemplul anterior partea vom prezenta rutina care iniializeaz i apoi actualizeaz acumulatorul de faz:
.......................... .var/dm ac_faz; ......................... .init ac_faz: H#0000; ......................... input_samples: ax1=dm(ac_faz); ay1=h#09b8; ar=ax1+ay1; dm(ac_faz)=ar; ax0=ar; call(sinus); rti; sinus: ............................... //Codul de calcul al funciei sinus //Variabila acumulator de faz //Faza iniial este zero //faza la momentul de timp discret anterior //valoarea de incrementare a fazei(fn) //actualizarea valorii acumulatorului de faz //Pregtirea argumentului pentru apelarea funciei sinus //Apelarea rutinei care calculeaz sinus //Rezultatul se afl n AR n format 1.15

397

7.3. Implementarea cu DSP a unui generator de zgomot pe baza generatoarelor de numere pseudoaleatoare

Pentru generarea unui semnal digital de tip zgomot o soluie este utilizarea generatoarelor de numere pseudoaleatoare. Generatoarele de tip congrueniale liniare au la baz urmtoarea relaie de calcul:
xn = (a xn1 + b ) mod m

(7.4)

unde xn+1 este un numr ntreg la momentul de timp curent iar xn+1 este numrul de la momentul de timp discret anterior iar mod este operatorul modulo. Generatorul este complet caracterizat de parametrii (m, a, b, x0) care sunt numere ntregi iar de valorile acestora depind n mare msur proprietile de aleatorism ale secvenei generate. Prin nsi definiia lui, generatorul liniar congruenial este cvasi-aleator deoarece nu pot aprea dect cele m numere n secvena generat i deci va exista o perioad de repetiie. O alegere adecvat a parametrilor generatorului poate conduce la o perioad mare sau chiar maxim. Cteva exemple sunt generatorul lui Lehmer dat de parametrii (108+1, 23, 0, 47594118) sau generatorul RANDU propus de IBM n primele limbaje de programare care era caracterizat de parametrii (232, 477211307, 0, 1). De remarcat c distribuia acestor numere pseudoaleatoare este uniform i deci vor conduce la un zgomot de tip uniform n amplitudine.
Generator de zgomot cu distribuie uniform
Descriere: Generatorul de numere aleatoare care st la baza acestui generator de zgomot este caracterizat de parametrii (216, 47485, 0, 1) i funcioneaz conform relaiei: xn = (47485 xn1 + 0) mod 216 (7.5) Procesorul va fi trecut n modul de lucru ntreg(comanda ena m_mode), adic pentru nmuliri la unitatea MAC, operanzii vor fi considerai numere ntregi fr semn, cu valori posibile ntre 0 i 216, avnd valori reprezentate pe 16 bii. Valoarea de la momentul de timp discret anterior este memorat n variabila anterior.
//zona de program de initializari #include "def2181.h" //include registrii de lucru pentru ADSP2181

398

.SECTION/DM

data1;

.var anterior=0x0001; input_samples: ena m_mode; mx1=dm(esantion_ant); my1=h#b97d; mr=mx1*my1(ss); mx1=mr0;

//sectiune pentru declaratii de variabile din //memoria de date //valoarea iniial x0

//trecerea n modul de lucru ntreg pentru mac //citirea valorii anterioare xn-1 //47485 n hexazecimal este b97d //47485*xn-1 //operaia modulo se realizeaz prin ignorarea lui mr1, //cuvntul cel mai semnificativ al rezultatului nmulirii //care se afl n registrul mr //scalarea rezultatului astfel nct eantioanele furnizate codecului s respecte legea de //variaie a secvenei generate mai sus 16 15 sr= lshift mr0 by -1(lo); //aducerea din domeniul [0 , 2 ] n domeniul [0 , 2 ], //adic bitul de semn va fi 0 prin deplasarea la dreapta //cu 1 bit (mprire la doi) ar=mr0-16384; //domeniul este [-214, 214] sr=lshift ar by 1(lo); //domeniul este [-215, 215] prin deplasarea la stnga cu 1 //bit (nmulire cu doi) dm(tx_buf+1)=sr0; //eantioanele sunt disponibile pentru codec dm(tx_buf+2)=sr0; rti;

Semnalul analogic de tip zgomot care apare la ieirea codecului de pe placa de dezvoltare, poate fi nregistrat (achiziionat) prin conectarea la intrarea plcii de sunet a calculatorului. Placa de sunet trebuie configurat corespunztor pentru a nregistra de la aceast intrare (meniul Recording). nregistrarea poate fi realizat cu programe de tipul Sound Recorder, Cooledit, Goldwave, etc., dar i din MATLAB prin intermediul funciei daqrecord.m. De exemplu, rutina MATLAB de mai jos, nregistreaz 2 secunde de semnal nregistrat de la placa de sunet, afieaz forma de und i histograma acestuia. Aceasta din urm trebuie s fie constant n gama de amplitudini a semnalului pentru zgomotul cu distribuie uniform.
d=2; [y,fe]=daqrecord(d); figure(1); subplot(2,1,1); pt=1/fe; timp=pt:pt:d; plot(timp,y); subplot(2,1,2); hist(y); % Durata de achiziie [secunde] % Semnalul este achiziionat in variabila y % Figura noua % Jumtatea superioar % Pasul de timp % Vectorul timp % Forma de und a semnalului % Jumtatea inferioar % Histograma semnalului

399

7.4. Implementarea cu DSP a unui demodulator de frecven pe baza prelucrrii canalelor I i Q din banda de baz ca parte component a unui receptor radio digital

Ideea care st la baza receptoarelor digitale moderne este de a aduce semnalul radio Sradio(t) n banda de baz sub forma a dou semnale XI(t) i XQ(t) prin nmulirea primului cu dou semnale n cuadratur de aceeai frecven cu purttoarea radio. Aceste semnale, denumite simbolic I i Q, sunt semnale n banda de baz, care pot fi prelucrate eficient cu ajutorul procesoarelor numerice de semnal n scopul extragerii semnalului informaional din semnalul radio modulat analogic. Figura 7.3. ilustreaz acest proces.

Fig. 7.3. De exemplu, n cazul modulaiei analogice de frecven, semnalul radio este de forma: t (7.6) S MF (t ) = sin 2f 0t + 2f M s ( )d 0 unde: SMF(t) este semnalul modulat n frecven; fM este deviaia de frecven; f0 = frecvena semnalului modulat (purttoarei); s(t) este semnalul informaional din banda de baz (modulator).

Semnalele I i Q aferente au expresia:


400

t (7.7) X I (t ) = sin 2f M s ( )d 0 t X Q (t ) = cos 2f M s ( )d (7.8) 0 O soluie extrem de simpl i eficient pentru refacerea semnalului informaional din semnalele I i Q este de a calcula semnalul E(t) pe baza relaiei: dX dX E (t ) = X Q (t ) I X I (t ) Q (7.9) dt dt Se observ c rezultatul acestei operaii este proporional cu semnalul informaional aceasta stnd la baza procedeului de demodulaie: E (t ) = 2f M s (t ) (7.10) n vederea implementrii acestei operaii cu ajutorul procesorului numeric de semnal, semnalele I i Q sunt eantionate cu frecvena fe i cuantizate, devenind XI[n] i respectiv XQ[n]. Implementarea operaiei de demodulaie necesit i calculul derivatelor semnalelor I i Q. Derivarea n timp discret a unui semnal x poate fi abordat prin diferena a dou eantioane succesive, conform relaiei: x[n] x[n 1] x[n] x[n 1] x ' [ n] = = = f e ( x[n] x[n 1]) (7.11) t[n] t[n 1] Te Astfel E(t) poate fi calculat n form digital astfel: 2f M E[n] = X Q ' [n] X I [n] X I ' [n] X Q [n] = s[n] (7.12) fe acesta fiind chiar semnalul informaional nmulit cu o constant. Pentru aplicaia pe care o avem n vedere, prin alegerea adecvat a lui f M ,aceast constant este aproximativ egal cu 1 i deci, algoritmul de demodulaie n frecven devine: s[n] = X Q [n]( X I [n] X I [n 1]) X I [n](X Q [n] X Q [n 1]) (7.13)

Implementarea a unui demodulator de frecven n banda de baz

Programul presupune c la intrarea celor dou convertoare analogdigitale ale codecului conectat la procesorul numeric de semnal se afl semnalele I i Q n form analogic, n banda de baz. Algoritmul are la baz relaia de mai sus, n care derivata semnalului este aproximat cu diferena n timp discret a dou eantioane succesive. De precizat faptul c
401

frecvena de eantionare a fost aleas f e = 22050 [Hz] astfel nct s aib loc relaia E[n] s[n] pentru o deviaie de frecven f M = 3500 [Hz] .
//zona de program de initializari #include "def2181.h" .SECTION/DM .var i_ant; .var q_ant; data1; //include registrii de lucru pentru ADSP2181 //sectiune pentru declaratii de variabile din //memoria de date //eantion anterior al canalului i //eantion anterior al canalului q

input_samples: ax0=dm(rx_buf+1); //citirea canalului i eantion curent ax1=dm(rx_buf+2); //Citirea canalului q eantion curent //Modelul matematic de implementare a demodulatorului este S[n] = XQ[n] * (XI[n]- XI[n-1]) - XI[n] * (XQ[n]- XQ[n-1]) // | | | | | | //- iniial mr ax1 ax0 ay0 ax0 ax1 ay1 //- ulterior my1 my0 //n final rezultatul este luat din mr, mai exact din mr1. ay0=dm(i_ant); //Prima diferen x1[n]-x1[n-1] ar=ax0-ay0; my1=ax1; //{prima nmulire mr=ar*my1(ss); ay1=dm(q_ant); //a doua diferen ar=ax1-ay1; my0=ax0; //a doua nmulire + diferena total mr=mr-ar*my0(rnd); if mv sat mr; dm(i_ant)=ax0; //actualizarea eantioanelor anterioare dm(q_ant)=ax1; sr = ashift mr1 by 3 (hi); //Amplificarea semnalului dm(tx_buf+1) = sr1; //Eantionul de ieire 1 dm(tx_buf+2) = sr1; //Eantionul de ieire 2 rti;

Pentru a verifica dac algoritmul implementat cu ajutorul ADSP este funcional, trebuie ca la intrarea sistemului de prelucrare n banda de baz s se gseasc cele dou semnale I i Q. O metod de generarea a acestor semnale este prezentat n urmtorul program MATLAB pe baza relaiilor de definiie a canalelor I i Q.

402

Program MATLAB de generare a semnalelor I i Q

Descriere: Programul genereaz canalele I i Q pe baza formulelor de t definiie pentru cazul modulaiei de frecven: X I (t ) = sin 2f M s ( )d 0 t i X Q (t ) = cos 2f M s ( )d . Semnalul informaional este extras prin 0 citirea unui fiier de sunet (voce) n format .wav i depus n variabila sunet.
[sunet,fs,Nb]=wavread('voce1.wav'); % Citirea sunetului din fisier si a frecv. de esantionare Sm=sunet'; %Semnalul modulator(informaional) vector linie Ns=length(sunet); Dt=Ns/fs; pts=1/fs; ts=pts:pts:Dt; clear Sg; Sg(1)=0; for i=2:Ns, Sg(i)=pts*Sm(i)+Sg(i-1); end; % Generarea canalelor I si Q Devf=3500; % Deviaia de frecven % Deoarece calcularea semnalelor I i Q de mai jos consum foarte mult timp (de ordinul a ctorva minute pentru un fiier informaional de cteva secunde, acestea se calculeaz o singur dat la nceput i se salveaz n fiierul IQ_voce.mat) x1=sin(2*pi*Devf*Sg); % canalul I x2=cos(2*pi*Devf*Sg); % canalul Q xplay=[x1' x2']; % Semnalele I i Q n format stereo sunt depuse n variabila xplay save IQ_voce xplay; % Salvarea n fiierul IQ_voce.mat a variabilei xplay % Lungimea vectorilor n simulare % Stabilirea duratei de simulare plecnd de la durata sunetului % Pasul de timp % Vectorul de timp % Pregatirea variabilei Sg; % Integrala semnalului modulator;

Program MATLAB de difuzare a semnalelor I i Q la ieirea plcii de sunet


% Programul se bazeaz pe o variabila 'xplay' coninut in fiierul 'IQ_voce.mat' % generata in prealabil cu programul 'IQ_generare.m' (prezentat la 5.2s) % 'xplay' reprezint de fapt canalele I si Q difuzate pe % cele doua ieiri (stnga, dreapta) ale plcii de sunet rep=3; % Ruleaz de rep ori

403

load IQ_voce; daqplay(xplay,22050,[1 2],rep); % Acest mesaj nu este inteligibil fiind necesara o prelucrare in banda % de baza, cu ajutorul unui DSP(programul descris la 5.1)

Verificarea funcionrii corecte a demodulatorului se poate face att prin audiia semnalului vocal prin intermediul unor difuzoare ct i prin nlocuirea semnalului informaional cu o sinusoid ai crei parametri (frecven, amplitudine) s fie msurai dup decodificare.
7.5. Implementarea unui sistem de reverberaii audio

Principiul reverberaiilor const n adunarea dintre un semnal i varianta acestuia atenuat i ntrziat, proces ce modeleaz efectul de ecou prin compunerea dintre unda acustic direct i respectiv cea reflectat. O relaie simpl care caracterizeaz un sistem de reverberaii este: y[n] = x[n] + a y[n k ] (7.14)

unde: y[n] = semnalul de la ieirea sistemului (compus) x[n] =semnalul de la intrarea sistemului (unda direct); a = coeficientul de atenuare(undei reflectate) < 1; k = Durata ntrzierii n timp discret (undei reflectate); Prin alegerea de valori diferite pentru a i k , putem simula efecte diverse precum: a) ecou de sal (valori mari att pentru k ct i pentru a); de exemplu k=3000 i a=0.3; b) metalizare a vocii (valori mari att pentru k ct i pentru a); de exemplu k=100 i a=0.7;
Sistem de reverberaii audio

Pentru a avea acces la eantionul x[ n 1] , avem nevoie de un buffer de lungime k+1, denumit istorie.
//zona de program de initializari #include "def2181.h" //include registrii de lucru pentru ADSP2181 #define a 0x599a; // Coeficient de atenuare a = 0.7 #define k 100; // ntrzierea semn. DT = k*Te=k/fe = 3000/8000 = 0.375 sec

404

.SECTION/DM .var istorie[D+1];

data1;

//sectiune pentru declaratii de variabile din //memoria de date //Istoria semnalului

// zona de program utilizator i2 = istorie; L2 = istorie; //Pointer ctre bufferul de istorie input_samples: mx1 = dm(rx_buf+2); mr = 0; mr1 = mx1; my1=a; m2=0; mx1=dm(i2,m2); mr=mr+mx1*my1(ss); m2=1; dm(i2,m2)=mr1; dm(tx_buf+1) =mr1; dm(tx_buf+2) = mr1; rti; //Eantion de la intrarea sistemului, x[n] //mr = x[n] //Atenuarea //Citirea lui x[n-k], cel mai vechi eantion din buffer //Operaia y[n]=x[n]+a*x[n-k] //Actualizarea bufferului de istorie a semnalului //Semnalul de ieire

Verificarea funcionrii sistemului de reverberaii se face prin audiia semnalului generat la ieirea plcii de sunet(muzic, voce, etc.). Opional, se poate cupla un microfon la intrare plcii de sunet(MIC) care trebuie s fie activat n meniul PLAYBACK.
7.6. Corelaia i autocorelaia secvenelor numerice

n foarte multe aplicaii precum analiza prin predicie liniar a semnalului vocal (analiza LPC) este necesar realizarea implementarea procedurii de corelaie a dou secvene numerice x i y. Autocorelaia este doar un caz particular pentru situaia n care x=y. Relaia de definiie a corelaiei a dou secvene x[n] i y[n] este:
R[k ] =
L k 1 n =0

x[n] y[n + k ]

(7.15)

unde: L = lungimea secvenelor numerice (aceeai pentru x i y)

Rutin de implementare cu DSP a corelaiei a dou secvene numerice


Parametrii de apel sunt: i1=adresa nceputului zonei de memorie n care se afl secvena x (n DM) i5=adresa nceputului zonei de memorie n care se afl secvena y (n PM)
405

i1=adresa nceputului zonei de memorie n care se afl secvena R (n PM) i2=lungimea secvenelor de intrare cntr =lungimea secvenei de ieire se =valoarea de scalare a rezultatului Regitrii DAG trebuie setai astfel:
l1=0; l5=0; l6=0; l0=0; l4=0; m0=1; m4=1; m5=1; m6=1; m2=-1; corelare: do corr_loop until ce; // Se genereaz fiecare eantion al secvenei de ieire i0=i1; //Puncteaz pe x i4=i5; //Puncteaz pe y cntr=i2; /Contorul buclei este egal cu lungimea secvenelor de intrare mr=0, my0=pm(i4,m4), mx0=dm(i0,m0); //Citirea primilor termeni de nmulit do data_loop until ce; //se realizeaz suma de produse pentru cele L valori data_loop: mr=mr+mx0*my0(ss),my0=pm(i4,m4),mx0=dm(i0,m0); my0=pm(i5,m5), sr=lshift mr1 (hi); //Scalarea rezultatului prin intermediul lui se mx0=dm(i2,m2), sr=sr or lshift mr0 (lo); corr_loop: pm(i6,m6)=sr1; rts;

7.7. Implementarea cu DSP a unui modulator de amplitudine


Un modulator de amplitudine cu dou benzi laterale este caracterizat de o relaie de forma: s MA (t ) = (k + m smod (t ) ) sin (2f 0t ) (7.15) unde: sMA (t ) = semnalul modulat n amplitudine; smod (t ) = semnalul modulator; f0 = frecvena purttoare a semnalului modulat m = indicele de modulaie a semnalului modulat k = constant care se poate alege la o valoare egal cu 1 m Semnalul modulator este un semnal analogic, cu o gam a amplitudinilor n intervalul [-1, 1]. Acesta poate fi un semnal audio de spectru limitat, n banda de baz precum voce, muzic, etc., sau un semnal sinusoidal de frecven joas. Indicele de modulaie m este subunitar i are o valoarea tipic de 0.3. Trebuie menionat c n relaia de mai sus, dac adunarea cu 1 nu se mai execut, avem cazul modulaiei de amplitudine cu
406

purttoare suprimat. Dac se filtreaz cu un FTB semnalul rezultat, avem cazul modulaiei de amplitudine cu band lateral unic.
Modulator de amplitudine

Descriere: Pentru a implementa un modulator de tipul celui prezentat mai sus, vom alege urmtoarele valori pentru parametrii semnalului: f 0 =10kHz, m =0.3, k =0.7 iar frecvena de eantionare este dat de f e =48kHz. Ca semnal modulator vom alege un semnal sinusoidal cu frecvena f m = 1 kHz i amplitudine 1. Aplicm principiul generatorului digital sinusoidal prezentat mai sus i deci avem nevoie de dou acumulatoare de faz precum i de codul de generare a funciei sinus care a fost de asemenea prezentat. n timp discret relaia de mai sus devine: s MA (t ) = (k + m smod [n]) sin (f 0 n n ) = (0.7 + 0.3 smod [n]) sin (f 0 n n ) (7.16)

unde f 0 n = f 0 / ( f e / 2 ) 0.416 (n format 1.15, h#0555) este frecvena purttoare normat , smod [n] = sin(f mn n) iar f mn = f m / ( f e / 2 ) 0.041 (n format 1.15, h#3555) este frecvena normat a semnalului modulator.
//zona de program de initializari #include "def2181.h" //include registrii de lucru pentru ADSP2181 .SECTION/DM data1; //sectiune pentru declaratii de variabile din //memoria de date

var sin_coeff[5]= 0x3240, 0x0053, 0xaacc, 0x08b7, 0x1cce; //Utilizat de ctre funcia sinus var ac_faz_p; //Fazele iniiale sunt nule var ac_faz_p: H#0000; var ac_faz_m: H#0000; //variabila acumulator de faz frecvena purttoare //Faza iniial semnal purttor este zero //Faza iniial semnal modulator este zero

input_samples: ax1=dm(ac_faz_m); ay1=h#0555; ar=ax1+ay1; dm(ac_faz_m)=ar; ax0=ar; call (sinus);

//faza anterioar semnalul modulator //valoarea frecvenei normate a semnalului //modulator (1kHz) //actualizarea valorii acumulatorului de faz //Pregtirea argumentului pentru apelarea funciei sinus //Apelarea funciei sinus care va depune rezultatul n

407

my0= h#2666; mr=ar*my0(ss); ay0=h#599A; ar=mr1+ay0; my0=ar;

//registrul ar //n acest moment n ar se afl smod[n] //Valoarea n format 1.15 a indicelui de modulaie //Operaia m*smod[n] //Valoarea n format 1.15 a lui k =0.7 } //Operaia k+m*smod[n] //Rezultatul este depus n my0

m =0.3}

ax1=dm(ac_faz_p); ay1=h#3555;

ar=ax1+ay1; dm(ac_faz_p)=ar; ax0=ar; //Pregtirea argumentului pentru apelarea funciei sinus call (sinus); //Apelarea funciei sinus care va depune rezultatul n registrul ar //n acest moment n ar se afl sin(pi*fonn) mr=ar*my0(ss); //Operaia de nmulire a termenilor k+m*smod[n] din my0 //i respectiv sin(pi*fonn) din ar dm(tx_buf+1)=mr1; //Trimiterea semnalului modulat spre codec dm(tx_buf+2)=mr1; rti; sinus: ............................... //Codul de calcul al funciei sinus

//Faza anterioar frecvena purttoare //Valoarea frecvenei normate a semnalului modulator //(10kHz) //Actualizarea valorii acumulatorului de faz

Pentru a obine un semnal modulat n amplitudine cu purttoare suprimat, modelul de calcul se simplific: s MA (t ) = (smod [n]) sin (f 0 n n ) = sin (f 0 m n ) sin (f 0 n n ) iar rutina de tratare a ntreruperii se reduce la :
input_samples: ax1=dm(ac_faz_m); ay1=h#0555; ar=ax1+ay1; dm(ac_faz_m)=ar; ax0=ar; call (sinus); my0=ar; ax1=dm(ac_faz_m); ay1=h#3555; ar=ax1+ay1; dm(ac_faz_p)=ar; ax0=ar; call (sinus); mr=ar*my0(ss); //faza anterioar semnalul modulator} //valoarea frecvenei normate a semnalului //modulator (1kHz)} //actualizarea valorii acumulatorului de faz //Pregtirea argumentului pentru apelarea funciei sinus //Apelarea funciei sinus care va depune rezultatul n //registrul ar. n acest moment n ar se afl smod[n] //Rezultatul este depus n my0 //faza anterioar frecvena purttoare //valoarea frecvenei normate a semnalului //modulator (10kHz) //actualizarea valorii acumulatorului de faz //Pregtirea argumentului pentru apelarea funciei sinus //Apelarea funciei sinus care va depune rezultatul n ar //n acest moment n ar se afl sin(pi*fonn) //Operaia de nmulire a termenilor sin(pi*fonn) din my0 //i respectiv sin(pi*fonn) din ar

(7.17)

408

dm(tx_buf+1)=mr1; dm(tx_buf+2)=mr1; rti;

//Trimiterea semnalului modulat spre codec

Ca semnal modulator se poate aplica un semnal analogic de la intrare n codec (citirea eantioanelor de la codec se face din zona de memorie dm(rx_buf+1) i dm(rx_buf+2)), de exemplu voce n locul semnalului modulator sinusoidal. Limitarea acestuia se poate face prin aplicarea unui filtru fir de tip FTJ, avnd lrgimea de band, de exemplu, de 5kHz. Spectrul semnalului modulat n amplitudine cu dou benzi laterale va fi n aceast situaie ntre 5kHz i 15kHz. n cazul n care se dorete i suprimarea unei benzi laterale, se poate aduga n final rutina pentru filtru fir de tip FTB de ordin N, cu banda [10kHz-15kHz], rezultnd la ieirea un semnal modulat n amplitudine cu band lateral unic (MA-BLU). Semnalul analogic modulat MA care apare la ieirea codecului de pe placa de dezvoltare, poate fi nregistrat (achiziionat) prin conectarea la intrarea plcii de sunet a calculatorului (LINE IN). Placa de sunet din urm trebuie configurat corespunztor pentru a nregistra de la aceast intrare (meniul Recording). nregistrarea poate fi realizat cu programe de tipul Sound Recorder, Cooledit, Goldwave, etc dar i din MATLAB prin intermediul funciei daqrecord.m. De exemplu, rutina MATLAB de mai jos, nregistreaz 2 secunde de semnal de la intrarea plcii de sunet i afieaz forma de und n timp i spectrul acesteia:
d=2; fe=44100; y=daqrecord(d,fe); figure(1); subplot(2,1,1); pt=1/fe; timp=pt:pt:d; plot(timp,y); subplot(2,1,2); y=y-mean(y); (opional) N=2*1024; pf=fe/N; frecv=pf:pf:(fe/2); yf=abs(fft(y,N)); plot(frecv,yf(1:N/2)); zoom xon; % Durata de achiziie % Frecvena de eantionare % Semnalul este achiziionat in variabila y % Figur nou % Jumtatea superioar % Pasul de timp % Vectorul timp % Forma de und a semnalului % Jumtatea inferioar % Pentru analiza in frecven se extrage componenta continu % Numrul de puncte pentru transformata Fourier % Rezoluia de frecven % Vectorul de frecven % Transformata Fourier a semnalului % Afieaz spectrul % Posibilitatea de zoom-are a graficului

409

Pentru o urmrire n timp real a formei de und a semnalului, se poate utiliza i osciloscopul soft din MATLAB, care poate fi apelat cu comanda daqscope.
7.8. Implementarea cu DSP a unui modulator de frecven

Semnalul modulat analogic n frecven este de forma: t S MF (t ) = sin 2f 0t + 2f M s( )d 0 unde:

(7.18)

SMF(t) = semnalul modulat n frecven; fM = deviaia de frecven; f0 = frecvena semnalului modulat(purttoarei); s(t) = semnalul informaional n banda de baz. 1 n timp discret, la frecvena de eantionare f e = , putem scrie t = n Te ; Te f frecvena purttoare normat este f 0 n = 0 i respectiv deviaia de fe 2 f frecven normat f Mn = M . Problema integrrii n timp discret poate fi fe 2 rezolvat avnd n vedere operaia de derivare. Derivarea n timp discret a unui semnal x poate fi abordat prin diferena a dou eantioane succesive, conform relaiei: x[n] x[n 1] x[n] x[n 1] x ' [ n] = = = f e ( x[n] x[n 1]) t[n] t[n 1] Te Astfel, dac notm s g (t ) = 2 f M s ( )d i derivm aceast
o t

relaie, obinem s ' g (t ) = 2 f M s (t ) . n timp discret, relaia devine s ' g [n] = 2 f M s[n] , ceea ce conduce la s g [n] =
f M s[n] + s g [n 1] = f Mn s[n] + s g [n 1] . fe 2 Algoritmul se bazeaz pe relaiile:
410

s g [n] = f Mn s[n] + s g [n 1] s MF [n] = sin ( ( f 0 n n + s g [n]))

Modulator de frecven

f Mn = f M / ( f e / 2 ) 0.145833 (n format 1.15, h#12ab) este deviaia de frecven normat a semnalului modulator. Cu aceste valori concrete, algoritmul devine: s g [n] = 0.145833 s[n] + s g [n 1] (7.19) s MF [n] = sin ( (0.4166n + s g [n])) Variabila ac_faz_p reprezint termenul 0.4166n , variabila ac_faz_m reprezint termenul 0.145833 n , iar sg_ant reprezint termenul s g [n 1] .
//zona de initializari #include "def2181.h" .SECTION/DM data1; //include registrii de lucru pentru ADSP2181 //sectiune pentru declaratii de variabile din // memoria de date

Pentru a implementa un modulator de tipul celui prezentat mai sus, vom alege urmtoarele valori pentru parametrii semnalului: f 0 =10 kHz, f M = 3500 kHz iar frecvena de eantionare este dat de f e =48kHz. Ca semnal modulator vom alege un semnal sinusoidal cu frecvena f m = 1 kHz i amplitudine 1. Aplicm principiul generatorului digital sinusoidal prezentat mai sus i deci avem nevoie de dou acumulatoare de faz precum i de codul de generare a funciei sinus care a fost de asemenea prezentat. Avnd n vedere faptul c frecvena purttoare normat este (n format 1.15, h#0555), iar f 0 n = f 0 / ( f e / 2 ) 0.416

.var stat_flag; .var/circ sin_coef[5]=0x2833, 0x0042, 0xBBD6, 0x06F9, 0x170B; //buffer-ul circular al coeficientilor //Fazele iniiale sunt nule} var ac_faz_p=0x000; //variabila acumulator de faz frecvena purttoare varac_faz_m=0x000; //variabila acumulator de faz frecvena semnal modulator input_samples: ax1=dm(ac_faz_m); ay1=h#0555; ar=ax1+ay1; dm(ac_faz_m)=ar; ax0=ar; //faza anterioar semnalul modulator //valoarea frecvenei normate a semnalului //modulator (1kHz)} //actualizarea valorii acumulatorului de faz //Pregtirea argumentului pentru apelarea funciei sinus

411

call (sinus); my0=ar; mx0=h#12ab; mr=mx0*my0(ss); ay0=dm(sg_ant); ar=mr1+ay0; dm(sg_ant)=ar; ay1=ar; ax0=dm(ac_faz_p); ay0=h#3555; ar=ax0+ay0; dm(ac_faz_p)=ar; ar=ar+ay1; ax0=ar; call (sinus); dm(tx_buf+1)=ar; dm(tx_buf+2)=ar; rti; sinus: ...............................

//Apelarea funciei sinus care va depune rezultatul n //registrul ar //n acest moment n my0 se afl s[n] //Deviaia de frecven normat fMn //Operaia sg[n]*fMin //Citete sg[n-1] //Operaia sg[n-1]* fMin+ sg[n-1] //Actualizarea lui sg[n-1] //Rezultatul se afl n ay1 //faza anterioar frecvena purttoare //valoarea frecvenei normate a semnalului modulator //10kHz) //actualizarea valorii acumulatorului de faz //Operaia (0.4166n+ sg[n-]) //Pregtirea argumentului pentru apelarea funciei sinus Apelarea funciei sinus care va depune rezultatul n //registrul ar //n acest moment n ar se afl sin(pi*(0.4166n+ sg[n-])) //Trimiterea semnalului modulat spre codec

//Codul de calcul al funciei sinus

Ca semnal modulator se poate aplica un semnal analogic de la intrare n codec (citirea eantioanelor de la codec se face din zona de memorie dm(rx_buf+1) i dm(rx_buf+2)), de exemplu voce n locul semnalului modulator sinusoidal. Limitarea acestuia se poate face prin aplicarea unui filtru FIR de tip FTJ, avnd lrgimea de band, de exemplu, de 5kHz. Semnalul analogic modulat MA care apare la ieirea codecului de pe placa de dezvoltare, poate fi nregistrat (achiziionat) prin conectarea la intrarea plcii de sunet a calculatorului (LINE IN). Placa de sunet din urm trebuie configurat corespunztor pentru a nregistra de la aceast intrare (meniul Recording). nregistrarea poate fi realizat cu programe de tipul Sound Recorder, Cooledit, Goldwave, etc dar i din MATLAB prin intermediul funciei daqrecord.m. De exemplu, rutina MATLAB de mai jos, nregistreaz 2 secunde de semnal de la intrarea plcii de sunet i afieaz forma de und n timp i spectrul acesteia:
d=2; fe=44100; y=daqrecord(d,fe); figure(1); subplot(2,1,1); pt=1/fe; timp=pt:pt:d; plot(timp,y); % Durata de achiziie % Frecvena de eantionare % Semnalul este achiziionat in variabila y % Figur nou % Jumtatea superioar % Pasul de timp % Vectorul timp % Forma de und a semnalului

412

subplot(2,1,2); y=y-mean(y); (opional) N=2*1024; pf=fe/N; frecv=pf:pf:(fe/2); yf=abs(fft(y,N)); plot(frecv,yf(1:N/2)); zoom xon;

% Jumtatea inferioar % Pentru analiza in frecven se extrage componenta continu % Numrul de puncte pentru transformata Fourier % Rezoluia de frecven % Vectorul de frecven % Transformata Fourier a semnalului % Afieaz spectrul % Posibilitatea de zoom-are a graficului

Pentru o urmrire n timp real a formei de und a semnalului, se poate utiliza i osciloscopul soft din MATLAB, care poate fi apelat cu comanda daqscope.

7.9. Implementarea cu DSP a unui generator haotic digital pe baza funciei CC2
Generatorul haotic pe care l propunem n aceast aplicaie se bazeaz pe urmtoarea relaie: x[n] = f (a * x[n 1] + b * x[n 2] ) unde: a, b = parametrii generatorului haotic x[0] i x[1] = condiiile iniiale ale generatorului haotic f(.) = funcie neliniar de urmtoarea form: (7.20)

f(x) 1

-1

0 -1

x Fig. 7.6.

Structura generatorului haotic:

413

Fig. 7.5. Proprietile semnalului digital haotic astfel generat depind sensibil att de parametrii generatorului ct i de condiiile iniiale. Funcia neliniar este relativ simplu de implementat pe un procesor numeric deoarece este tocmai legea de adunare n CC2.

Generator haotic digital pe baza funciei CC2


Descriere: Generatorul este caracterizat de parametrii a=0.5 (n format 1.15, h#4000), b=-1 i condiiile iniiale x[1]=-x[0]=0.612 (n format 1.15, h# 4e56). Drept comentariu, sunt puse nc dou variante de condiii iniiale. Semnalul haotic generat poate fi analizat la rece prin nregistrarea lui ulterioar. De exemplu, se poate cupla ieirea codecului cu intrarea line in a unei plci de sunet a unui calculator personal i achiziiona semnalul cu un software adecvat ( n MATLAB, funcia daqrecord.m).
//zona de initializari #include "def2181.h" .SECTION/DM .var stat_flag; //Condiii iniiale varianta 1 .var x_ant1 = 0x4e56; //Condiia iniial x[1] pentru x[n-1] .var x_ant2 = 0xb1aa; //Condiia iniial x[0] pentru x[n-2] // 0.6135 Condiii iniiale varianta 2 // .init x_ant1: h#4e87; .init x_ant2: h#b179; data1;

//include registrii de lucru pentru ADSP2181 //sectiune pentru declaratii de variabile din // memoria de date

414

// 0.616 Condiii iniiale varianta 3 // .init x_ant1: h#4ed9; .init x_ant2: h#b127; input_samples: mx0=dm(x_ant1); my0=h#4000; mr=mx0*my0(ss); ay0=dm(x_ant2); ar=mr1-ay0; dm(x_ant1)=ar; dm(x_ant2)=mx0; dm(tx_buf+1) = ar; dm(tx_buf+2) = ay0; rti; //Citire valoare x[n-1] // a=0.5 //Operaia a*x[n-1] //Citire valoare x[n-2] //Operaie a*x[n-1]- x[n-2] //Reactualizare x[n-1] din x[n] //Reactualizare x[n-2] din x[n-1] //Semnalul haotic este trimis ctre codec //Acelai semnal haotic dar ntrziat cu un tact

Semnalul analogic de tip haotic prezent la ieirea codecului de pe placa de dezvoltare, poate fi nregistrat (achiziionat) prin conectarea la intrarea plcii de sunet a calculatorului. Placa de sunet trebuie configurat corespunztor pentru a nregistra de la aceast intrare (meniul Recording). nregistrarea poate fi realizat cu programe de tipul Sound Recorder, Cooledit, Goldwave, etc., dar i din MATLAB prin intermediul funciei daqrecord.m. Deoarece la ieirea codecului se afl de fapt un semnal stereo avnd pe un canal semnalul haotic generat iar pe cellalt acelai semnal haotic dar ntrziat cu un moment de tact, este interesant de vizualizat aa-numitul atractor al semnalului haotic, adic reprezentarea unui semnal n funcie de cellalt. Rutina MATLAB care realizeaz acest lucru este prezentat n continuare.
d=0.01; % Durata de achiziie [s] fe=44100; % Frecvena de eantionare [Hz] [y,fe]=daqrecord(d,fe,[1 2]); % Semnalul este achiziionat in variabila y % n variabila y se gsesc doua canale(stnga i dreapta) pe doua coloane figure(1); % Figura noua subplot(2,1,1); % Jumtatea superioar pt=1/fe; %Pasul de timp timp=pt:pt:d; % Vectorul timp plot(timp,y(:,1)); % Forma de und a semnalului(stnga) subplot(2,1,2); % Jumtatea inferioar plot(y(:,1),y(:,2)); % Atractorul haotic

415

7.10. Implementarea cu DSP a unui generator haotic digital pe baza funciei logistice
Un exemplu tipic de generator haotic n timp discret este cel descris de ecuaia logistic: (7.21) xn = xn1 (1 xn1 ) Aadar este un proces iterativ prin care eantionul curent este calculat n funcie de eantionul precedent.

Generator haotic digital pe baza funciei logistice


Descriere: Pentru = 4 relaia de mai sus devine (7.22) x n = 4 x n1 (1 x n1 ) Generatorul a fost implementat cu valoarea de start x0 =0.1 (h#0ccc); Semnalul analogic generat va fi de tip zgomot.
.SECTION/DM .var zdata; .var stat_flag; .SECTION/PM data1; //sectiune din memoria de date

pm_da;

//sectiune din memoria de programe //valoarea initiala 0.1 //valoarea cu care se face negarea //este incarcat cu primul y //bucla infinita //initializeaza MAC in modul de lucru fractional 1.15 //(1-x(n)) // x(n)(1-x(n)) // 4*x(n)(1-x(n)) //transforma in CC2 //transmite semnalul pe primul canal //transmite semnalul pe al doilea canal

// zona de program utilizator mr1=0x0ccc; ay0=0x7fff; dm(zdata)=mr1; wt: idle; jump wt; input_samples: ena m_mode; ay1=dm(zdata); ar=ay0; ar=ar-ay1; my0=ay1; mr=ar*my0 (ss); sr=lshift mr1 by 3 (lo); dm(zdata)=sr0; ar=sr0+16384; //sr=lshift ar by 1 (lo); dm(tx_buf+1)=sr0; dm(tx_buf+2)=sr0;

rti;

416

Semnalul analogic de tip haotic prezent la ieirea codecului de pe placa de dezvoltare, poate fi nregistrat (achiziionat) prin conectarea la intrarea plcii de sunet a calculatorului.

Placa de sunet trebuie configurat corespunztor pentru a nregistra de la aceast intrare (meniul Recording). nregistrarea poate fi realizat cu programe de tipul Sound Recorder, Cooledit, Goldwave, etc., dar i din MATLAB prin intermediul funciei daqrecord.m. Deoarece la ieirea codecului se afl de fapt un semnal stereo avnd pe un canal semnalul haotic generat iar pe cellalt acelai semnal haotic dar ntrziat cu un moment de tact, este interesant de vizualizat aa-numitul atractor al semnalului haotic, adic reprezentarea unui semnal n funcie de cellalt. Rutina MATLAB care realizeaz acest lucru este prezentat n continuare.
d=0.01; % Durata de achiziie [s] fe=44100; % Frecvena de eantionare [Hz] [y,fe]=daqrecord(d,fe,[1 2]); % Semnalul este achiziionat in variabila y % n variabila y se gsesc doua canale(stnga i dreapta) pe doua coloane figure(1); % Figura noua subplot(2,1,1); % Jumtatea superioar pt=1/fe; %Pasul de timp timp=pt:pt:d; % Vectorul timp plot(timp,y(:,1)); % Forma de und a semnalului(stnga) subplot(2,1,2); % Jumtatea inferioar plot(y(:,1),y(:,2)); % Atractorul haotic

417

8. STRUCTURI HARDWARE REPROGRAMABILE 8.1. Evoluia circuitelor logice programabile Sistemele electronice digitale se bazeaz pe circuite integrate care conin elemente de comutare denumite pori. Porile elementare sunt utilizate sunt de tipul I, SAU, I-NU, SAU-NU i NOT. Circuitele simple pot fi realizate prin combinarea direct de pori individuale. Circuitele mai complexe sunt: multiplexoare, codificatoare, circuite de deplasare i unitile aritmetico-logice. n 1975, Ron Cline de la Signetics (companie preluat mai trziu de Philips i n cele din urm de Xilinx) a avut ideea introducerii a dou plane de programare. Cu ajutorul celor dou plane de programare, aa cum se poate observa n figura 8.1, se poate realiza orice circuit simplu descris printr-o combinaie de pori I i pori SAU.

Fig 8.1. Exemplu de circuit PLA. Aceste dispozitive s-au numit dispozitive PLA (Programmable Logic Array). Caracteristicile acestor tipuri de circuite constau n urmtoarele: conin dou planuri programabile;
418

orice circuit compus dintr-o combinaie de pori I sau SAU poate fi implementat; ieirile porilor elementare I sunt distribuite la intrrile mai multor pori SAU; densitate mare de logic disponibil pentru utilizator; timp de propagare mare (Tp), deci viteza de funcionare era relativ mic. O alt companie, MMI (mai trziu preluat de compania AMD) a modificat aceast arhitectur obinnd arhitectura PAL (Programmable Array Logic - figura 8.2.).

Fig. 8.2. Arhitectur PAL produs de MMI - Birkmer 1978. Modificarea introdus de MMI a constat n fixarea unui plan programabil (planul SAU), n acest fel valoarea lui Tp a fost micorat. Tot n urma acestei modificri, complexitatea circuitelor programabile a fost redus. Dezavantajul a constat n pierderea flexibilitii oferit de circuitele programabile PLA. Alte arhitecturi au urmat acestora, (de exemplu PLD - Programmable Logic Device) dar fr a avea succesul comercial al arhitecturilor PLA sau PAL. Toate circuitele din aceast familie erau programate electric i erau terse n aproximativ 20 de minute folosind lumin din spectrul
419

ultravioletelor. Toate aceste circuite logice programabile au fost incluse n categoria circuitelor SPLD (Simple PLD). Urmtoarele circuite logice aprute sunt circuitele de tipul CPLD (Complex Programmable Logic Device). Conceptul acestor dispozitive presupune utilizarea de blocuri PLD sau macrocelule, interconectate ntre ele, ntr-un singur circuit dup cum este artat n figura 8.3.

Fig. 8.3. Arhitectur CPLD. Numrul maxim de pori este 200 Aceste circuite opereaz i n prezent atingnd frecvene de peste 200MHz. O caracteristic important a acestor circuite este aceea c modelul de timp pentru circuitele proiectate este uor de determinat. Circuitele de tip CPLD ofer o serie de faciliti, care le fac utilizabile nc i n prezent: ofer cea mai simpl cale de implementare a unui proiect. Odat ce proiectul a fost descris ntr-un limbaj HDL (Hardware Design Language), programatorul utilizeaz un set de utilitare de dezvoltare CPLD n vederea optimizrii i simulrii circuitului proiectat. Modificrile ulterioare fcute circuitului proiectat sunt reimplementate n circuitul CPLD iar testarea poate avea loc imediat;
420

costuri de dezvoltare reduse. Costurile achiziionrii programelor de optimizare i simulare n cazul circuitelor CPLD sunt reduse (de exemplu, programele de implementare, optimizare i testare oferite de Xilinx sunt gratis); modificarea uoar a circuitelor proiectate. Aceast calitate se datoreaz faptului c un circuit CPLD este reprogramabil. Este foarte uor s se fac o modificare a proiectrii, implementrii i testrii; aria de implementare este redus. Aceast caracteristic este n direct corelare cu eficiena software-ului utilizat i capacitatea programatorului pentru optimizarea circuitului proiectat. Cu ct efortul de optimizare este mai mare cu att timpul de procesare necesar este mai mare; Odat ce circuitul proiectat funcioneaz conform specificaiilor, se trece la implementarea n serie. Acum exist o multitudine de firme productoare de chip-uri care preiau doar fiierul surs obinut cu ajutorul programelor utilitare de implementare i ofer circuitul hardware. n 1985, compania numit Xilinx, aduce un nou concept. Realizarea unui circuit cu o structur regulat care s conin celule logice sau module interconectate ntre ele i asupra crora utilizatorul s aib un control complet. Acest lucru implic faptul c utilizatorul poate proiecta, programa i aduce modificri unui circuit oricnd este necesar. Circuitele de acest tip poart numele de Field Programmable Gate Array FPGA. Numrul de pori coninute de un circuit FPGA depete 10 milioane de uniti. Actualmente exist dou tipuri de baz de circuite FPGA: SRAM FPGA; OTP (One Time Programable) FPGA Aceste dou tipuri difer prin modalitatea de implementare a celulelor logice, precum i prin mecanismul utilizat pentru realizarea conexiunilor n interiorul circuitului. Aa cum se poate uor intui, piaa de circuite FPGA este dominat de ctre tehnologia de tip SRAM. Dac la circuitele FPGA cu tehnologie de programare OTP se utilizeaz pori logice tradiionale (figura 8.4.), pentru implementarea circuitului proiectat, la cele de tipul SRAM se utilizeaz celule numite LUT (Look Up Table).

421

Fig. 8.4. Arhitectur FPGA cu tehnologie ROM 8.2. Structuri logice programabile de tipul FPGA Circuitele de tip FPGA sunt formate din matrici de celule coninnd elemente logice i de memorie configurabile. Celulele pot fi interconectate folosind un numr mare de celule de interconectare programabile (programmable switch) dnd posibilitatea crerii virtuale a oricrui sistem digital. Matricile de elemente logice i celule programabile pot fi programate extern prin intermediul unui fiier de configurare numit i bit stream reprezentnd respectiva funcie a sistemului digital pe care trebuie s-l emuleze. Sistemele aprute oferite de productorii de FPGA-uri genereaz bit stream-ul folosind o descriere sistematic sau de nivel nalt, descriere realizat n limbajele de descriere hardware VHDL, Verilog, System C, e.t.c. Proiectul poate fi simulat n mai multe etape nainte de operaia de configurare a circuitului de tip FPGA. Cele mai multe circuite FPGA sunt re-programabile i astfel pot fi modificate configuraiile acestora foarte uor. Din ce n ce mai multe aplicaii folosesc tot mai des FPGA-urile din diverse motive: viteza de lucru a acestora din ce n ce mai mare, schimbrile configuraiilor nelimitate (tehnologie SRAM), schimbarea configurrii n timpul funcionrii (reconfigurabilitate dinamic), complexitatea acestora este din ce n ce mai mare. De exemplu, majoritatea FPGA-urilor ofer n prezent mai multe
422

standarde pentru blocurile de I/O n vederea comunicrii cu dispozitivele externe, dar la fel de bine i elimin rezistorii terminali de pe PCB. Exist mult mai multe avantaje pe care le au FPGA-urile, iar productorii fac un efort continuu de mbuntire a acestora. Din punct de vedere al tehnologiei de programare xist dou categorii principale de circuite FPGA: circuite cu memorii SRAM circuite cu antifuzibile. Circuite cu memorii SRAM. Programarea acestor circuite se realizeaz prin celule de memorie static. Logica este implementat cu ajutorul unor tabele de configurare (look-up table) realizate din celulele de memorie iar intrrile pot fi considerate linii de adres iar linia de ieire s fie de date. Un LUT de 2n celule de memorie poate implementa orice funcie cu n intrri. Una sau mai multe LUT-uri care emuleaz circuite combinaionale mpreun cu circuite bistabile formeaz un la un loc un bloc logic configurabil. Aceste blocuri sunt aranjate matricial ntr-un tablou bidimensional, segmentele de interconectare formnd canale, similar cu reelele de pori. Aceste segmente sunt conectate la pinii blocurilor logice din canale i la alte segmente din blocurile de comutare prin intermediul unor celule memorie formate din tranzistoare MOS. Un fiier de configurare, pentru circuitele cu memorii SRAM, const dintr-un singur ir de bii. Logica din circuit ncarc cuvntul de programare, pe care l citete serial dintr-o memorie extern de fiecare dat cnd circuitul este alimentat sau poate s-l mai preia pe porturi de comunicare de tip ISP (In Serial Programming) sau JTAG. Biii din fiierul de tipul bit-stream seteaz valorile tuturor celulelor memoriei de configurare din circuit, programnd astfel funciile logice combinaionale din LUT-uri i selectnd segmentele care se vor conecta ntre ele. Circuitele cu memorii SRAM sunt reprogramabile, ele fiind actualizate n sistem punnd la dispoziia proiectanilor noi opiuni i posibiliti de reconfigurare. Din aceast categorie de circuite FPGA fac parte cele ale firmelor productoare Xilinx, Altera, AT&T.

423

Figura 8.5. Structura general a unui circuit de tip FPGA Circuite cu antifuzibile. Un antifuzibil este un dispozitiv cu dou terminale care n mod normal se afl n starea de nalt impedan iar atunci cnd este expus la o tensiune ridicat, trece n starea cu rezisten redus (300-500 ). Antifuzibilele au dimensiuni reduse, astfel nct o arhitectur bazat pe antifuzibile poate conine sute de mii sau milioane de antifuzibile. Pentru simplificarea arhitecturii i a programrii, circuitele FPGA bazate pe antifuzibile constau de obicei din rnduri de elemente logice configurabile cu canale de interconectare ntre ele, ca i reelele de pori tradiionale. Un bloc logic poate fi programat prin conectarea pinilor si de intrare la valori fixe sau la reele de interconectare. Exist antifuzibile la fiecare punct de intersecie ntre interconexiuni i pini din canal i la toate punctele de intersecie ntre interconexiuni n locurile n care canalele se intersecteaz. Din categoria circuitelor FPGA cu antifuzibile fac parte circuitele firmelor Actel, Quicklogic, Cypress. Fiecare productor de FPGA are structur proprie pentru FPGA, dar n general toate sunt o variaiune a celei artate n figura 8.5. Structura const n blocuri de logica configurabile, blocuri I/O configurabile, i interconectare programabil.

424

8.2.1. Blocuri Logice Configurabile Blocurile logice configurabile (CLB Configurable Logic Bloc) conin partea logic din FPGA. ntr-o structur mare, matricial, aceste CLB-uri vor conine destule elemente de logic pentru a crea o mic categorie de funcii logice. ntr-o asemenea structur, un CLB va conine numai elemente de logic de baz. Schema din figura6.6. este considerat a fi un astfel de sistem general care conine celule de memorie RAM pentru crearea de funcii arbitrare de logic combinaional. Conine de asemenea bistabili pentru crearea de logic sincron dup semnalele de de tip ceas i multiplexoare pentru a direciona logica n bloc i pentru a forma resurse externe. Mux-urile permit de asemenea selectarea polaritii semnalelor, resetarea respectiv setarea semnalelor de ieire din CLB-uri.

Fig. 8.6. Bloc logic configurabil 8.2.2. Blocuri I/O configurabile Un bloc I/O configurabil este utilizat n interfaarea circuitului FPGA cu alte dispozitive externe. Acesta const ntr-un amplificator de intrare i unul de ieire compatibil cu mai multe tipuri de semnale. n mod normal, exist tranzistori pentru obinerea unui port de ieire de tip open dren sau open surs. Polaritatea ieirii poate fi programat, n general, pentru ieire activa pe 1 logic sau 0 logic i de asemenea poate fi programat tranziia din 1 n 0 logic sau invers s fie rapid sau lent. n plus, deseori
425

exist bistabili pe ieiri, astfel nct semnalele de tip ceas s poat fi trimise direct la pini fr a suferi ntrzieri de propagare semnificative. Acest lucru se face pentru ca sa nu existe prea multe ntrzieri la un semnal nainte de a ajunge celula logic care ar creste timpul de specificat pentru circuitul respectiv. 8.2.3. Blocul programabil de interconectare Blocul de interconectare a unui circuit de tip FPGA este diferit dect cel al unui CPLD. n figurile 8.4, 8.5 i 8.6 poate fi vzut o ierarhie a resurselor de interconectare. Acestea sunt linii care pot fi folosite pentru conectarea CLB-urilor plasate la distane mari fr a produce multe ntrzieri. Pot fi folosite de asemenea i linii de transport n interiorul cipului. Sunt i linii scurte care sunt folosite pentru conectarea individual a CLB-urilor dar care sunt localizate fizic aproape unul de celalalt.

Fig. 8.7. Interconectarea Programabil a FPGA-ului Exist de asemenea cteva matrici de inerconectare, ca cele dintr-un CPLD folosite pentru conectarea liniilor scurte i lungi n anumite moduri de configurare. Cele trei stri ale celule de memorie sunt folosite s conecteze mai multe CLB-uri de-a lungul unei linii crend un bus. Mai sunt linii de semnale lungi, denumite linii globale de sincronizare. Acestea sunt special proiectate pentru a avea impedana mic i timpul de propagare rapid. Acestea sunt conectate n mod sincron la zon de tampon i la fiecare element sincronizat din fiecare CLB. Astfel se realizeaz sincronizarea prin FPGA.
426

8.2.4. Blocuri de sincronizare n jurul chip-ului sunt distribuite blocuri de I/O ca zone tampon, cunoscute i ca drivere de sincronizare. Aceste zone tampon sunt conectate la circuite de intrare sincronizate dup semnalele de ceas globale. Aceste linii sunt proiectate pentru semnalele cu propagri rapide. Proiectarea sincronizat este necesar pentru un FPGA deoarece deviaia de frecventa i ntrzierea de propagare nu pot fi controlate. Atunci cnd se folosesc semnale de sincronizare provenind de la zone tampon sincronizate putem obine ntrzieri i devieri de frecven predictibile. 8.3. Etapele de proiectare cu circuite FPGA Proiectarea cu circuite de tip FPGA este un proces complex, care necesit resurse computaionale importante. n vederea rezolvrii acestei proleme procesul de proiectare este mprit n mod obinuit n urmtoarele etape generale: 1) Partiionarea. Sistemul proiectat, care de multe ori nu poate fi implementat ntr-un singur circuit FPGA, trebuie divizat n mai multe pri, astfel nct fiecare parte s poat fi implementat ntr-un singur circuit FPGA, i s poat fi gestionat independent de celelalte. Partiionarea circuitelor FPGA multiple trebuie s ndeplineasc restricii suplimentare asupra ariei de ocupare a submodulelor i a numrului terminalelor de I/O. Partiionarea reprezint n acelai timp o metod algoritmic pentru rezolvarea problemelor complexe de optimizare care apar n sinteza logic sau n proiectarea fizic. 2) Maparea tehnologic. Pentru fiecare poriune a sistemului care va fi implementat ntr-un singur circuit FPGA, logica trebuie divizat suplimentar n fragmente, astfel nct fiecare fragment s aib o dimensiune suficient de mic pentru a putea fi implementat ntr-un singur bloc logic al circuitului. Aceast divizare se realizeaz n cadrul etapei de mapare tehnologic. Maparea tehnologic este operaia de transformare a unei reprezentri logice cu nivele multiple ntr-o interconexiune de elemente logice dintr-o bibliotec dat de elemente. Maparea tehnologic implic dou operaii distincte: recunoaterea echivalenei logice ntre dou funcii logice, i determinarea setului optim de pori echivalente din punct de vedere logic, ale cror interconexiuni reprezint circuitul original. Prima operaie, numit potrivire, implic
427

testarea echivalenei i asignarea intrrilor. Att testarea echivalenei, ct i asignarea intrrilor sunt operaii complexe din punct de vedere computaional. A doua operaie, numit acoperire, implic gsirea unei reprezentri alternative a unei reele booleene utiliznd elemente logice care au fost selectate dintr-un set disponibil. 3) Plasarea. n cadrul plasrii, fiecrui fragment care va fi implementat ntr-un bloc logic trebuie s i se atribuie un bloc liber din cadrul circuitului. Plasarea este o etap important a procesului de proiectare, deoarece n aceast etap se iau cele mai importante decizii. Pentru plasare trebuie minimizate anumite funcii obiectiv, cu condiia respectrii unor restricii impuse de proiectant, de procesul de implementare sau de stilul de proiectare. Cea mai important funcie obiectiv este lungimea total a conexiunilor, care reprezint o metric utilizat pe scar larg pentru aprecierea calitii plasrii. Exemple de restricii sunt evitarea suprapunerii celulelor sau cerina ca celulele s fie lsate ntr-o anumit suprafa rectangular. O plasare este acceptabil dac se poate obine o rutare complet a circuitului n cadrul suprafeei date. 4) Rutarea. Fiind dat un set de celule i porturile acestora, un set de conexiuni i locaiile celulelor (obinute n urma procesului de plasare), rutarea const n determinarea cilor adecvate pentru interconexiunile dintre seturile de porturi. Aceste ci adecvate minimizeaz funcia obiectiv dat, supus unor restricii. Restriciile pot fi impuse de proiectant, de procesul de implementare, de tipul circuitului sau de stilul de proiectare. Ca exemple de funcii obiectiv se pot aminti reducerea lungimii totale a interconexiunilor, sau evitarea problemelor datorate ntrzierilor semnalelor. Problema de rutare este divizat de obicei n dou etape: rutarea global i rutarea detaliat. Obiectivul rutrii globale este de a se elabora un plan de rutare astfel nct fiecare conexiune s fie atribuit unor regiuni particulare de rutare, n timp ce se ncearc minimizarea unei funcii obiectiv date (de obicei o estimare a lungimii totale a conexiunilor). Rutarea n detaliu se aplic apoi pentru fiecare regiune de rutare, i fiecrei conexiuni i se atribuie piste particulare de rutare. 8.4. Familii de structuri FPGA n acest subcapitol vor fi prezentate unele familii de circuite FPGA. Tipurile prezentate au fost alese deoarece ele sunt exemple reprezentative de dispozitive i stau la baza celor actuale. Pentru fiecare dispozitiv este prezentat arhitectura general.
428

8.4.1. Structuri FPGA de tip Xilinx Circuitele FPGA Xilinx conin un tablou bidimensional de celule programabile, numite blocuri logice configurabile (Configurable Logic Block CLB), interconectate prin canale de rutare orizontale i verticale (figura 8.8.). Resursele programabile sunt configurate prin celule RAM statice implementate prin-un tranzistor specific tehnologiei i controlat de un bitul corespunztor din fiierul de configurare.

Fig. 8.8. Arhitectura general a circuitelor FPGA Xilinx. Prima serie de FPGA-URI a fost introdus de firma Xilinx n 1985, actualmente existnd alte trei generaii: XC3000, XC4000 i XC5000. Capacitatea circuitelor din seria XC4000 variaz de la aproximativ 2.000 la peste 15.000 de pori. Familia XC5000 are caracteristici similare la un pre mai atractiv, avnd ns o vitez mai redus. Xilinx a dezvoltat i o familie de circuite FPGA bazate pe antifuzibile, XC8100. Cele mai noi circuite generate sunt din seria SPARTAN3 i VIRTEX V. 8.4.2. Structuri FPGA de tip Altera Circuitele FPGA Altera sunt diferite de celelalte circuite FPGA deoarece ele combin tehnologiile FPGA i CPLD (Complex Programmable Logic Device). Cu toate acestea, ele sunt echivalente funcional cu circuitele FPGA, deoarece utilizeaz un tablou bidimensional de celule programabile i o structur de rutare programabil. Pot implementa o logic multi-nivel i
429

sunt programabile de ctre utilizator. Arhitectura general a circuitelor Altera, care se bazeaz pe tehnologia de programare EPROM, este dat n figura 8.9. Aceasta const dintr-o reea de celule programabile, numite locuri ale reelei logice (Logic Array Block - LAB), interconectate printr-o resurs de rutare numit reea de interconectare programabil (Programmable Interconnect Array - PIA). Capacitatea circuitelor variaz ntre 2.000 i 20.000 de pori logice echivalente.

Fig. 8.9. Arhitectura general a circuitelor FPGA Altera. Blocurile LAB sunt celule logice complexe, putnd fi considerate ca circuite PLD (Programmable Logic Device). Fiecare bloc LAB const din dou blocuri principale, reeaua de macrocelule i blocul de expandare a termenilor produs. Elementele din reeaua de macrocelule conin trei pori I ale cror ieiri se conecteaz la o poart SAU, ieirea acesteia fiind conectat la o poart SAU EXCLUSIV; macrocelula mai conine un bistabil. Fiecare intrare a unei macrocelule este generat ca o funcie I cablat (numit termen p) a unor semnale. Un termen p poate conine orice semnal din reeaua PIA, oricare din termenii produs ai blocului LAB, sau ieirea oricrei alte macrocelule. Cu aceast configuraie, reeaua de macrocelule funcioneaz ca un circuit PLD, dar cu un numr mai redus de termeni produs pe registru (exist de obicei cel puin opt termeni produs pe registru ntr-un circuit PLD). Conform firmei Altera , prin aceasta blocul LAB este mai eficient, deoarece majoritatea funciilor logice nu necesit numrul
430

mare de termeni p ntlnii la circuitele PLD, iar blocul LAB permite generarea unor funcii variate. Fiecare bloc de expandare a termenilor produs const dintr-un numr de termeni p, care sunt inversai i aplicai la intrarea reelei de macrocelule, ca i la intrarea blocului nsui. Aceast configuraie permite implementarea unor funcii complexe, deoarece fiecare macrocelul are acces la aceti termeni p suplimentari. Structura de rutare, PIA, const dintr-un numr de segmente lungi de interconectare care trec pe lng fiecare bloc LAB. Structura PIA asigur o conectivitate complet, deoarece fiecare intrare a unui bloc LAB poate fi conectat la ieirea oricrui bloc LAB, fr restricii. De aceea, rutarea unui circuit FPGA Altera este simpl. ns, acest nivel de conectivitate este excesiv i poate fi redus, dac se utilizeaz un algoritm de rutare corespunztor. 8.4.3. Structuri FPGA de tip Actel Arhitectura de baz a circuitelor FPGA Actel, prezentat n figura 8.10, este similar cu cea a circuitelor MPGA, constnd din rnduri de celule programabile, numite module logice (Logic Module LM), ntre rnduri existnd canale de rutare orizontale. Fiecare comutator de rutare este implementat printr-un antifuzibil. Actel dispune de mai multe generaii de FPGA, Act-1, Act-2, Act-3, M7 Fuzion, IGLOO, PROASIC.

Fig. 8.10. Arhitectura general a circuitelor FPGA Actel.


431

Modulul logic al circuitelor Actel ilustreaz o abordare diferit fa de cea ntlnit la circuitele FPGA Xilinx. n timp ce Xilinx utilizeaz un bloc CLB complex, blocul logic al circuitelor Actel este foarte simplu. Cercetrile au artat c ambele variante au avantaj iar alegerea cea mai bun pentru o celul programabil depinde de performanele de vitez ale arhitecturii de rutare . Performanele de vitez ale circuitelor Actel nu sunt complet predictibile, deoarece numrul de antifuzibile traversate de un semnal depinde de modul de alocare a segmentelor de interconectare de ctre utilitarele CAD. Performanele de vitez sunt mbuntite ns n mod semnificativ prin posibilitile multiple de selecie a lungimii segmentelor din fiecare canal i prin algoritmi care garanteaz limite stricte a numrului de antifuzibile traversate de oricare conexiune. 8.4.4. Structuri FPGA de tip Quicklogic Circuitele FPGA pASIC ale firmei Quicklogic se bazeaz de asemenea pe antifuzibile, ca i circuitele Actel. Exist dou familii de circuite FPGA Quicklogic, pASIC i pASIC2. Circuitul pASIC are similariti cu mai multe tipuri de circuite FPGA: ca i circuitele Xilinx, are o structur de tip tablou; ca i circuitele Actel, blocurile sale logice utilizeaz multiplexoare, i ca i circuitul Altera Flex 8000, interconexiunile acestuia constau numai din linii lungi. Circuitul pASIC2 este o versiune mbuntit a circuitului pASIC. Firma Cypress ofer de asemenea circuite utiliznd arhitectura pASIC. Structura antifuzibilului Quicklogic, numit ViaLink, const dintr-un strat superior e metal, un strat izolator amorf de siliciu, i un strat inferior de metal. Comparativ cu antifuzibilul Actel, numit PLICE, ViaLink ofer o rezisten foarte redus n starea conductoare, de aproximativ 50 (rezistena PLICE este n jur de 300 ), i o capacitate parazit redus. Antifuzibilele ViaLink sunt prezente la fiecare intersecie a pinilor blocurilor logice i a liniilor de interconectare, asigurnd o conectivitate ridicat. Blocul logic al circuitului pASIC este mai complex dect modulul logic al circuitului Actel, cu un numr mai mare de intrri, avnd pori I cu ase intrri pe liniile de selecie ale multiplexoarelor. Fiecare bloc logic conine de asemenea un bistabil.

432

8.5. Structura XILINX SPARTAN 3 Familia de FPGA-uri Spartan 3 este proiectat special pentru a face fa aplicaiilor electronice de volum mare i cost redus. Familia este format din 8 cipuri ce ofer densiti variind de la 50.000 la 5 milioane pori pe sistem, dup cum se vede n tabelul urmtor : Dispozit Por Celule Raza CLB i logice (O CLB = iv sist echival patru pari) em ente rnd Colo Tot uri ane al XC3S50 50 1,728 16 12 19 2 K 2 XC3S20 200 4,320 24 20 48 XC3S40 400 8,064 32 28 89 XC3S10 1M 17,280 48 40 1,9 XC3S15 1.5 29,952 64 5M2 3,3 XC3S20 2M 46,080 80 64 5,1 XC3S40 4M 62,208 96 72 6,9 XC3S5 5M 74,880 104 80 8,3 RAM distri buit (biti1) 12K 30K 56K 120K 208K 320K 432K 520K Bloc Multipli DC Maxi Maxim RA catori M mum um M dedicai utiliza perechi (biti1 tori diferen ) I/O iale 72K 4 2 124 56 216 12 4 173 76 288 16 4 264 116 432 24 4 391 175 576 32 4 487 221 720 40 4 565 270 1,72 96 4 712 312 1,87 104 4 784 344

Familia Spartan 3 a fost construit datorit succesului de care s-a bucurat familia Spartan 2. Acest succes s-a datorat urmtorilor factori : mai multe resurse logice, capacitatea memoriei interne RAM, numrul total de circuite I/O, i n general nivelul de performan ct i o mbuntire funciilor care controleaz frecvena de ceas. Numeroase mbuntiri deriv din tehnologia de ultim generaie Virtex II. Aceste mbuntiri aduse circuitului Spartan 3 combinate cu procese tehnologice avansate ofer o mai mare funcionalitate i lrgime de band dect era nainte posibil, crend noi standarde n industria programrii logice. Datorit costului sczut, FPGA-urile cu cip Spartan 3 sunt ideale pentru o gam larg de aplicaii electronice, incluznd transmisii pe band larg, reele, afiare/proiectare i echipament TV digital. Familia Spartan 3 este o alternativ pentru ASIC-urile programabile c masc. FPGAurile nu sunt scumpe, au ciclii de dezvoltare mai mici i nu sunt inflexibile precum ASIC-urile. De asemenea, FPGA-urile permit upgrade-uri de proiectare n folosire fr a nlocui componentele electronice, o imposibilitate n cazul ASIC-urilor. Caracteristicile circuitelor logice cu cip Spartan 3 sunt urmtoarele :
433

cost sczut, soluii de nalt performan pentru aplicaii de volum mare orientate spre consumator - densiti de 74,880 de celule logice; - trei circuite de alimentare: pentru procesor (1.2v), I/O (1.2v pana la 3.3v) i auxiliar(2.5v). - selecia semnalelor I/O - pn la 784 de pini I/O; - 622 Mb/s rata de transfer de date pe I/O, 18 semnale standard cu un terminator; - 6 standarde I/O difereniale incluznd LVDS,RSDS; - terminale cu impedan controlat digital; - domeniul de semnale ntre 1.14V pn la 3.45V; - suport de tip double data rate(ddr). - resurse logice - celule logice capabile s-si modifice registrii; - multiplexori mari; - logic de transport rapid look-ahead; - multiplicatori dedicai 18x18; - logic JTA compatibil cu IEEE 1149.1/1532. - memorie ierarhic SelectRAM - pn la 1,872 KB\biti din memoria bloc RAM;ram - pn la 520 Kbiti din memoria total distribuit. - controler de ceas digital, pn la 4 DCM (digital clock manager) - filtrare a distorsionrilor de ceas; - sintetizare de frecvente; - schimbare de faza de rezoluie mare; - opt linii globale de ceas i rute variate; - suportat complet de sistemul de dezvoltare Xilinx; - sintetizare, mapare, plasare si rutare; - procesor MicroBlaze, pci, i alte procesoare. Arhitectura familiei Spartan 3 const n cinci elemente funcionale programabile: 1) Blocuri logice configurabile(CLB) conin tabele Look-Up bazate pe RAM pentru implementarea elementelor logice i de stocare care pot fi folosite ca flip-flop sau latch-uri. CLBs pot fi programate pentru a executa o mare varietate de funcii logice ct i pentru a stoca date. 2) Blocuri Intrare/ieire I/O (IOB) controleaz transferul datelor ntre pinii I/O i logica intern a dispozitivului. Fiecare IOB suporta flux de date
434

bidirecional. Fiecare IOB suporta flux de date bidirecional plus operare n 3 stri. Sunt disponibile 24 de standarde diferite de semnale, incluznd 7 standarde de nivel nalt de performan. Caracteristica de impedan controlat digital (DCI) asigur terminaii automate pe cip, uurnd proiectarea plcilor. 3) Blocul RAM asigur stocarea datelor sub forma de blocuri dual-port pe 18 Kbiti. 4) Blocul multiplicator accept dou numere binare pe 18 bii ca intrare i calculeaz produsul. 5) Blocurile de control digital al ceasului (DCM) asigur autocalibrarea, soluii complet digitale pentru distribuirea, multiplicarea, ntrzierea, divizarea i schimbarea de faz a semnalelor de ceas. Aceste elemente sunt organizate conform figurii 8.11. Un inel de IOB nconjoar o raz obinuit de CLB. De exemplu circuitul FPGA de tipul XC3S50 are o singur coloan de blocuri RAM integrate n raz. Aceste dispozitive din seria XC3S200 pn la seria XC3S2000 au dou coloane de blocuri RAM. XC3S4000 i XC3S5000 au patru coloane RAM. Fiecare coloan este alctuit din blocuri RAM de 18Kbiti; fiecare bloc este asociat unui multiplicator dedicat. DCM-urile sunt poziionate la capetele coloanelor blocurilor RAM. Familia Spartan 3 asigur o reea complex de trasee i comutatoare care interconecteaz toate elementele funcionale, transmind semnale ntre ele. Fiecare element funcional are o matrice de trecere asociat care permite multiple conexiuni la rute.

Fig 8.11. Arhitectura familie Spartan 3


435

9. ELEMENTE DE PROGRAMARE N LIMBAJUL VHDL 9.1. Structura unui program VHDL Programul care caracterizeaz un modul digital n limbajul VHDL conine trei pri:
declararea librriilor care vor fi utilizate n proiect; declararea entitii modului ce urmeaz a fi proiectat; descrierea arhitecturii acestuia.

Declaraii librrii

Entitate

Fig. 9.1

Arhitectur

Prin entitate se descrie interfaa modulului digital cu semnalele din mediul exterior. O entitate deja declarat poate fi accesat de ctre alte entiti. Sintax:
entity nume_entitate is generic (list_generic); port (list_de_porturi);] end entity nume_entitate;

Prin specificaia entity se declar numele modulului digital. n plus, pot fi declarai parametrii generici i porturi care fac parte din aceast entitate. Porturile declarate ntr-o entitate sunt vizibile n toate arhitecturile asignate acesteia. Arhitectura descrie relaia dintre intrrile i ieirile porturilor entiti creia i este asociat. O arhitectur poate avea asociat doar o singur entitate dar o entitate poate avea asociate mai multe arhitecturi.
436

Sintax:
architecture nume_arhitectur of nume_entitate is -- declaraii n arhitectur begin --specificaii_concurente end [ architecture ] [ nume_arhitectur ];

Zona declarativ a unei arhitecturi poate conine declaraii de tipuri, semnale, constante, subprograme, componente i grupuri. Specificaiile concurente din corpul arhitecturii definesc legturile dintre intrrile i ieirile modulului digital pe care-l reprezint. Sintaxa general a unui program n cod VHDL este urmtoarea:
--Declararea libariilor prin clauza library si use library nume_librarie; use nume_librarie.nume_pachet.all; --Declararea entitatii modulului digital entity nume_entitate is generic(nume generice : type := valori_initiale); port(nume_porturi : directie tip port); end entity nume_entitate; --entity[93] --Corpul arhitecturii architecture nume_arhitectura of nume_entitate is declaratii arhitectura begin specificatii concurente end architecture nume_arhitectura;

Exemplu: Se dorete implementarea unui modul digital cu schema logic dat n figura 9.2. Pentru implementarea acestui modul digital trebuie ca n primul rnd s determinm semnalele de intrare, respectiv de ieire ca s poat fi declarat entitatea. n corpul arhitecturii sunt declarate ecuaiile booleene ale acestui modul pentru a face legtura ntre porturile de intrare/ieire ale entitii.
437

a b

sum

Fig. 9.2

carry

Programul VHDL are urmtoarea form:


library ieee; use ieee.std_logic_1164.all; entity half_add is generic(delay : time := 10 ns); port(a, b : in std_logic; sum, carry : out std_logic); end entity half_add; architecture desc of half_add is begin sum <= a xor b after delay; carry <= a and b after delay; end architecture desc;

Prin lista parametrilor generici este o interfa de constante statice ce pot fi declarate n entiti, componente sau blocuri. Sintax:
generic ( list_valori_generice ) ;

Valorile generice declarate ntr-o entitate pot fi citite n acea entitate sau n arhitectura corespunztoare ei. Pot fi utilizate, de exemplu, n specificarea limii unei magistrale, caracteristici fizice, mrimea unor vectori, numr de repetiii ntr-o bucl, etc. n general, genericele sunt tratate n interiorul arhitecturilor ca i cum ar fi constante. De exemplu: - n cazul n care este specificat limea unei magistrale
438

entity CPU is generic (BusWidth : Integer := 16); port(DataBus : inout Std_Logic_Vector(BusWidth-1 downto 0));

... n cazul n care este specificat o mrime fizic


entity poart_sau is generic (Delay : Time := 10 ns); port (In1, In2 : in Std_Logic; Output : out Std_Logic); end poart_sau; architecture descriere of poart_sau is begin ... Output <= In1 or In2 after Delay; ... end descriere;

Porturile sunt canale de comunicaie ntre blocuri, entiti sau cu mediul exterior.
port ( declaraii_porturi, declaraii_porturi, ); -- declaraii_porturi: nume_semnal_port : in tip_semnal_port := valoare_initiala nume_semnal_port: out tip_semnal_port := valoare_initiala nume_semnal_port: inout tip_semnal_port := valoare_initiala nume_semnal_port: buffer tip_semnal_port := valoare_initiala

n general, porturile sunt utilizate cel mai des n cadrul entitilor i a componentelor. n ambele cazuri, elementul de interfa este semnalul. Modurile sunt utilizate pentru a descrie direcia n care data poate fi transferat. n VHDL sunt cinci moduri: IN, OUT, INOUT, BUFFER, LINKAGE. - IN: data poate fi direcionat doar ca intrare n entitate; - OUT: data este direcionat doar ca ieire din entitate. Acest mod nu d posibilitatea realizrii unor bucle n structura digital pentru c porturile nu pot fi citite n cadrul entitii; - BUFFER: un port declarat n acest mod este similar cu nu port de tip OUT dar care poate fi citit i n interiorul structurii
439

digitale. Nu permite portului sa fie bidireional pentru c nu poate fi citit din exteriorul entitii; INOUT. Acest mod definete portul ca fiind bidirecional. Este permis citirea/scrierea datelor din mediul exterior. Acest mod, ca i BUFFER, permite realizarea de bucle in interiorul modulului digital.

OBS. Modul INOUT poate nlocui toate modurile. n general sunt utilizate modurile corespunztoare semnalelor de interfaare a entitilor pentru a simplifica structura hardware atunci cnd are loc implementarea fizic. Pentru definirea complet a unui port este necesar declararea tipului de dat vehiculat prin acesta. De exemplu, standardul ieee 1076_93 suport tipurile de date BOOLEAN bit, bit_vector, integer. Standardul ieee_1164 suport date de tipul: standard_unlogic, standard_logic. 9.2. Operatori utilizai n limbajul VHDL Pentru implementarea circuitelor combinaionale, n limbajul VHDL, s-au pus la dispoziia programatorului operatori logici, aritmetici, de comparaie, deplasare i de concatenare. n tabelul 9.1 sunt prezentai, pe scurt, operatorii logici: Tabel 9.1. Operatorii logici utilizai n limbajul VHDL Tipul Operatori Tipul datelor operatorului BIT, BIT_VECTOR, Logic NOT, AND, NAND, STD_LOGIC, OR, NOR, XOR, STD_LOGIC_VECTOR XNOR STD_UNLOGIC, STD_UNLOGIC_VECTOR Aritmetic Comparaie Deplasare Concatenare +, -, *, /, ** (mod, rem, abs) =, /=, <, >, <=, >= sll, srl, sla, sra, rol, ror &, (, , ,) INTEGER, SIGNED, UNSIGNED aproape toi BIT_VECTOR La fel ca la operatorii logici, pus SIGNED i UNSIGNED

440

9.3. Descrierea structural Componenta reprezint o pereche entitate/arhitectur i specific un susbsistem care poate fi instaniat n alt arhitectur pe o metodologie erarhic. Componenta, pentru a fi utilizat, este declarat dup care inserarea acesteia n alte module se realizeaz prin instaniere. Declaraia unei componente reprezint o interfa ntre o entitate virtual pentru a fi utilizat ntr-un alt modul prin instanierea componentei respective. Sintaxa:
component component_name [ is ] generic (generic_list); port (port_list); end component component_name;

Figurativ, componentele sunt vzute ca fiind soclul n care este introdus un circuit (vezi figura urmtoare). Componenta trebuie declarat nainte de a fi instaniat. Declaraia componentei (sintaxa de mai sus) definete interfaa virtual (soclul n care va fi introdus circuitul) dar nu indic direct componenta. O component poate fi definit n package-uri, entitate, arhitectur sau declaraii de blocuri. n cazul n care, componenta este declarat ntr-o arhitectur, aceasta trebuie s fie plasat n zona declarativ a arhitecturii, nainte de begin. Componenta este utilizat cel mai des n package-uri. O astfel de component poate fi vzut n orice arhitectur care utilizeaz acest package. Prin package se ntelege un pachet de subprograme (fucii, proceduri, componente) ce pot fi apelate prin intermediul unei librrii. n figura 9.3 este utilizat componenta XOR_4 care are dou intrri pe 4 bii (A i B) i o ieire tot pe 4 bii, C. Declaraia acestei componente se gsete n corpul arhitecturii STRUCTURE_2. Instaierea componentei atribuie eticheta X1 componentei instaniate XOR_4 i asociaz intrrile, respectiv, ieirile cu semnalele S1, S2 i S3.
441

Fig. 9.3. Model de utilizare a unei componenete n limbajul VHDL

nstanierea unei componente Prin instanierea unei componente se nelege subcomponent a unei entiti n care sunt realizate asocierile de semnale si atribuiri de valori generice specifice acestei componente. Sintax:
etichet : [ component ] nume_component generic map ( list_valori_generice ) port map ( lista_porturi ); etichet : entity nume_entitate [(identificator_arhitectur)] generic map ( list_valori_generice ) port map ( list_porturi ); eticht : configuration nume_configuraie generic map ( list_valori_generice ) port map ( list_porturi );

Instanierea unei componente conine referinele unitii instaniate i valorile actuale a genericelor i porturilor. Instanierea componentelor se gsete sub trei forme: - instanierea unei componente; - instanierea unei entiti; - instanierea unei configuraii.
442

Componenta instaniat introduce relaia dintre unitatea (modul entitate- arhitectur) definit anterior ca declaraie de component. Numele componentei instaniate trebuie s fie numele componentei declarate. Lista de asociere poate fi dup poziionare sau nume a porturilor. Lista de asociere poziional, parametrii actuali sunt conectai n aceeai ordine cu porturile unde a fost declarat componenta. U1: poarta PORT MAP(a, b, c); Asocierea dup nume d posibilitatea porturilor i valorilor generice s fie puse ntr-o ordine diferit dc cea declarat n component. Asocierea porturilor sau valorilor generice se face prin =>. U1: poarta PORT MAP(in1 =>a, in2 => b,iesire => c); n figura 9.4. este prezentat, figurativ, un exemplu de instaniere a unei componente.

Fig. 9.4. Model de instaniere a unei componente

Specificaia GENERATE Specificaia GENERATE este o facilitate furnizat de VHDL pentru realizarea iterativ sau condiional a unor poriuni de program. Sintax:
443

etichet : for parametru in interval generate [ { declaraii } begin ] { specificaii concurente } end generate [ etichet ] ; etichet : if condiie generate [ { declaraii } begin ] { specificaii concurente } end generate [ etichet ] ;

Specificaia de tip generate este utilizat pentru simplificarea descrierii unor poriuni de program repetitive. De obicei este utilizat pentru specificarea unui grup de componente identice prin crearea unei singure componente care este repetat prin mecanismul GENERATE. O specificaie generate const n: - generarea de scheme (for generate sau if generate); - parte declarativ (declaraii locale de subprograme, tipuri, semnale, constante, componente, atribute, configuraii, fiiere i grupuri); - specificaii concurente. 9.4. Descrierea concurent Prin intermediul limbajelor de descriere hardware pot fi proiectate module digitale independente, interconectate ntre ele prin semnale i care funcioneaz n paralel. n figura 9.5 este prezentat un modul digital format din trei submodule.
Semnale de intrare

Modul digital 1

Semnale interne

Modul digital 3
Semnale de intrare

Semnale de ieire

Modul digital 2

Semnale interne

Fig. 9.5. Implementarea concurenta a dou module


444

Dac pe unul dintre cele dou semnale de intrare apare o tranziie, modulele 1 i 2 vor fi activate imediat. Blocul logic 3 este activat dac apare cel puin o aciune asupra unuia dintre semnalele de intrare ale acestuia (semnalele interne). Se observ c semnalele pot parcurge toate cele trei blocuri simultan. Limbajul de descriere hardware prezint mecanisme de descriere paralel a modulelor digitale combinaionale cu specificaii concurente. Prin definiie, logica combinaional este aceea n care ieirile unui circuit depind numai de intrrile acestuia (structuri care nu prezint memorie).
intrri logice ieiri logice

Circuit logic combinaional

Limbajul VHDL are la baz concepia de descriere paralel a modulelor digitale cu excepia specificaiilor din interiorul PROCESELOR, FUNCIILOR I PROCEDURILOR care conin descrieri secveniale. De menionat faptul c procesele chiar dac sunt formate din specificaii secveniale, sunt concurente ntre ele. n cadrul unui program scris n limbajul VHDL zona de descriere concurent se gsete ntre specificaiile begin i end ale unei arhitecturi.
library IEEE; use IEEE.STD_LOGIC_1164.all; -- alte incuziuni de librrii i pachete; entity modul_digital is generic ( --declaraii de constante generice ) port( --); end modul_digital; architecture descriere of modul_digital is begin - - - zona de specificaii concurente end descriere; 445

n domeniul concurent, n limbajul VHDL, sunt utilizate urmtoarele: - atribuiri de semnale; - atribuiri condiionale sau selective de semnale; - instanieri de componente; - specificaia GENERATE; - specificaie BLOCK. - specificaii de procese; - apelri de proceduri cu specificaii concurente; - specificaii assert concurente; 9.4.1. Atribuirea condiional a semnalelor Atribuirea asupra semnalelor se face n interiorul arhitecturii sau a proceselor. Atribuirile pot fi condiionale sau selective aplicate prin specificaii corespunztoare n domeniul concurent sau secvenial. Atribuirea condiional n domeniul concurent se realizeaz prin specificaia WHEN/ELSE. Modificarea valorii logice a unui semnal se face numai dac este ndeplinit o anumit condiie boolean. Altfel, este luat n considerare condiia urmtoare care apare dup clauza ELSE. ntotdeauna, o atribuire condiional trebuie s se termine cu specificaie ELSE. Sintax:
LABEL1: -- etichet optional SIG_NAME <= <expresie> when <condiie> else --<expresie> when <condiie> else <expresie>;

Exemplu: realizarea multiplexorului 4:1 cu specificaia condiional concurent WHEN/ELSE. Este implementat acelai tip de multiplexor prezentat n exemplul anterior dar cu modificarea semnalului de selecie dat n figura 9.6.

446

a b c d S[1,0] Descrierea acestui multiplexor, spre deosebire de cel anterior, se realizeaz prin specificaia WHEN/ELSE. Programul VHDL este urmtorul:
library IEEE; use IEEE.STD_LOGIC_1164.all; entity mux_a is port( a : in STD_LOGIC; b : in STD_LOGIC; c : in STD_LOGIC; d : in STD_LOGIC; s : in STD_LOGIC_VECTOR(1 DOWNTO 0); y : out STD_LOGIC ); end mux_a; architecture descriere of mux_a is begin y <= a when s="00" else b when s="01" else c when s="10" else d; end descriere;

Fig. 9.6. Multiplexor cu 4 intrari.

447

9.4.2. Atribuirea selectiv a semnalelor Atribuirea selectiv a semnalelor este realizat cu specificaia WITH/SELECT. n acest caz, spre deosebire de atribuirea condiional, trebuie incluse toate combinaiile posibile n declaraia condiional.
LABEL1: -- etichet opional with <expresie de selecie> select SIG_NAME <= <expresie> when <selectie>, <expresie> when <selectie>, --<expresie> when others;

Pentru eliminarea tuturor posibilitilor de selecie din expresia condiional, la sfritul specificaiei de atribuire este obligatorie introducerea clauzei WHEN OTHERS. Exemplu: n acest program multiplexorul 4:1, prezentat anterior, este implementat prin specificaia selectiv WITH / SELECT / WHEN:
library IEEE; use IEEE.STD_LOGIC_1164.all; entity mux_a is port( a : in STD_LOGIC; b : in STD_LOGIC; c : in STD_LOGIC; d : in STD_LOGIC; s : in STD_LOGIC_VECTOR(1 DOWNTO 0); y : out STD_LOGIC ); end mux_a; architecture descriere of mux_a is begin WITH s SELECT y <= a when "00", b when "01", c when "10", d when OTHERS; end descriere; 448

9.4.3. Introducerea unui proces Specificaiile secveniale pot fi introduse prin intermediul proceselor PROCESS. Procesele sunt activate printr-o list de senzitiviti. Dac lista de senzitiviti lipsete, activarea procesului se realizeaz prin specificaia WAIT. De menionat faptul c procesele conin descrieri secveniale dar ntre ele sunt concurente. Sintax:
[eticheta:] PROCESS (lista de senzitivitati) [VARIABILE nume: tip [dimensiune] [:= valoare_initiala;]] BEGIN (cod secvential) END PROCESS [eticheta];

ntre specificaia process i begin se gsete zona declarativ n care pot fi declarate variabilele, tipuri, subprograme, atribute, etc. Zona de descriere secvenial este definit ntre specificaia begin i end. 9.5. Partiionarea programelor VHDL pe blocuri Blocurile sunt forme simple de a grupa mai multe specificaii concurente ntr-o arhitectur. Introducerea blocurilor nu afecteaz direct execuia sau simularea modelelor implementate. Partiionarea pe blocuri se realizeaz ca n figura 9.7.
ARHITECTUR BLOC 1

Figura 9.7. Model de partiionare pe blocuri

BLOC 2

BLOC N

449

Fiecare bloc n parte poate fi identificat printr-o etichet plasat naintea specificaiei BLOCK i dup END BLOCK. n zona de header a unui bloc pot fi introduse porturi, declaraii generice (ca ntr-o entitate). Sintax:
etichet : block (condiie guard optional) -- declaraii begin -- specificaii concurente end block etichet;

Blocurile guard sunt activate numai cnd este ndeplinit o condiie. Nu este recomandat utilizarea acestora pentru c nu sunt sintetizabile. Un exemplu de program divizat pe dou blocuri este dat n urmtorul cod VHDL:
architecture descriere of entitate is begin BLOC_1: block signal a,b:std_logic; begin --specificaii concurente end block BLOC_1; BLOC_2: block signal a,b:std_logic; begin --specificaii concurente --semnalele a i b sunt vizibile numai pentru acest bloc end block BLOC_1;

n acest exemplu sunt incluse dou blocuri numite BLOC_1 i BLOC_2. Pentru fiecare bloc n parte este introdus o declaraie de semnal. n primul bloc, n zona declarativ (ntre block i begin) BLOC_1, sunt
450

declarate semnalele a i b. Aceste semnale sunt vizibile doar n blocul BLOC_1, nu i n exteriorul acestuia. Al doilea bloc, BLOC_2, are de asemenea declarate dou semnale interne cu aceleai nume dar nu sunt aceleai cu semnalele din blocul BLOC_1. Exemplu: sunt scrise dou poriuni de cod VHDL cu implementare pe blocuri
A1: OUT1 <= '1' after 5 ns; LEVEL1 : block begin A2: OUT2 <= '1' after 5 ns; A3: OUT3 <= '0' after 4 ns; end block LEVEL1; A1: OUT1 <= '1' after 5 ns; A2: OUT2 <= '1' after 5 ns; A3: OUT3 <= '0' after 4 ns;

Ambele poriuni de cod din exemplul anterior sunt sintetizate n acelai mod. Construcia de tip block separ doar acele dou zone de program pentru a-i asigura o vizibilitatea ct mai clar. Exemplu: este scris un program care utilizeaz specificaia block
entity X_GATE is generic (LongTime : Time; ShortTime : Time); port (P1, P2, P3 : inout BIT); end X_GATE; architecture STRUCTURE of X_GATE is signal A, B : BIT; -- semnale declarate global n aceast arhitectur: begin LEVEL1: block generic (GB1, GB2 : Time); -- declaraie local de generice generic map (GB1 => LongTime, GB2 => ShortTime); -- atribuire local de parametrii generici 451

port (PB1: in BIT; PB2 : inout BIT ); -- declaraie local de porturi port map (PB1 => P1, PB2 => B); -- atribuire local a semnalelor constant Delay : Time := 1 ms; -- declaraie local: signal S1 : BIT; begin S1 <= PB1 after Delay; PB2 <= S1 after GB1, P1 after GB2; end block LEVEL1; end architecture STRUCTURE;

Semnalele PB1 i PB2 au aceleai valori ca P1 i B (declaraia local a specificaiei PORTMAP), respectiv genericele GB1 i GB2 au aceleai valori cu LongTime i ShortTime. ntotdeauna, fiecare atribuire este redundant pentru c ntr-un block poate fi utilizat orice declaraie a unei entiti incluznd generice sau porturi. n exemplul de mai sus este ilustrat o astfel de sintax. Observaii: Blocurile guard-ate nu sunt sintetizabile; Declaraia blocurilor este, n general, ignorat de sintetizator; Este recomandat a nu fi utilizate blocuri n proiecte care nu sunt de tip VITAL ca de exemplu pachetul std_logic_vector care suport valori logice multiple, magistrale blocuri. Este recomandat de asemenea ca blocurile guardate pentru modelare secvenial s fie nlocuite cu procese. VHDL suport un mecanism mult mai puternic n partiionarea proiectelor prin instaniere de componente. 9.6. Descrierea secvenial Semnalele i variabilele n domeniul secvenial Transportul datelor n VHDL poate fi realizat prin semnale sau prin variabile. n timp ce semnalele pot fi declarate n domeniul concurent, variabilele pot fi declarate numai n domeniul secvenial, de exemplu n procese. Semnalul poate fi utilizat global, n domeniile concurente i secveniale iar variabila este numai local domeniului secvenial ntr-un proces, funcie sau procedur.
452

ntr-un proces dac nu este necesar utilizarea unui semnal, poate fi utilizat o variabil. Semnalul nu poate fi declarat ntr-un proces. Valoarea unui semnal este afectat numai la ieirea din proces chiar dac asupra lui sau fcut atribuiri n timpul procesului. Variabila este un obiect local unui proces n care se pot salva informaii. Declaraia unei variabile se poate face prin urmtoarea sintax:
variable nume_variabil : tip; variable nume_variabil : tip := valoare_iniial;

Iar atribuirea acesteia se face prin sintaxa:


variable_name := expression ;

Specificaia IF Specificaia IF este utilizat n structuri condiionale i are urmtoarea sintax:


IF condiie THEN specificaii_secveniale; ELSIF condiie THEN specificaii_secveniale; .. ELSE specificaii_secveniale; END IF;

Datorit influenei puternice a mediilor de programare software (de exemplu C++, PASCAL ), tendina programatorilor este de a utiliza structurile condiionale n descrierea comportamentului unui modul digital fr a mai face recurs la descrierile de tip flux de date prin ecuaii booleene sau alte specificaii care ocup o arie hardware mult mai mic. Totui utilizarea specificaiei IF nu afecteaz, n principiu, structura hardware foarte mult, pentru c n procesul de sintez se produce o optimizare a ecuaiilor logice i este evitat pe ct mai mult posibil mrirea complexitii hardware nejustificate dar, totui, este indicat ca impricarea ei s nu fie pe prea multe nivele. IF este o specificaie secvenial care nu poate fi utilizat n zona concurent a unei arhitecturi. A nu se confunda cu declaraia IF GENERATE din domeniul concurent.
453

Exemplu de utilizare a unei structuri condiionale IF


IF (reset = 1) THEN data_out <= (others => 1) ELSIF (clk=1 AND clkevent) THEN data_out <= data_in; ELSE data_out <= (others => Z); END IF;

Dac semnalul RESET este activ n 1 logic, semnalul de ieire va pune toate liniile acestuia n 1 logic. Dac nu este activ semnalul RESET i a avut loc tranziia semnalului CLK din 0 logic n 1 logic, semnalul de ieire primete valorile semnalului de intrare, altfel semnalul de ieire este trecut n nalt impedan. Specificaia WAIT Specificaia WAIT este utilizat n cazurile n care procesul nu are o list de senzitiviti. Aceasta poate fi utilizat sub trei forme dup cum este prezentat n sintaxele urmtoare:
WAIT UNTIL condiie_semnal WAIT ON semnal1 [, semnal2, ]; WAIT FOR time;

Prima sintax este utilizat n general pentru modelele digitale sincrone dect cele asincrone. Acest lucru se datoreaz faptului c prin specificaia WAIT UNTIL este introdus o condiie asupra unui semnal. Aceasta nu poate fi depit pn cnd condiia respectiv nu este ndeplinit. Cea de-a doua sintax este utilizat atunci cnd sunt monitorizate mai multe semnale. Procesul devine activ numai cnd unul din semnalele din lista specificaiei WAIT ON i schimb starea. n final, ultima specificaie, WAIT FOR este introdus numai pentru simularea modulelor digitale n fiierele de test. Aceast specificaie nu este sintetizabil. De exemplu: WAIT FOR 100ns Specificaiile WAIT sunt plasate imediat dup BEGIN n cadrul unui proces.

454

Specificaia CASE Specificaia CASE este utilizat pentru selectarea unei alternative n funcie de valoarea unei expresii.
CASE identificator IS WHEN value => atribuire; WHEN value => atribuire; WHEN OTHERS => atribuire; END CASE;

Specificaia CASE evalueaz o expresie i selecteaz una din alternative, n concordant cu valoarea acesteia. Expresia de evaluare poate fi un tip discret sau un sir de caractere. Specificaia CASE conine o list de alternative care ncep cu clauza WHEN. Este urmat de valoarea corespunztoare alternativei respective i de specificaiile secveniale care trebuie executate n cazul n care este aleas aceast alternativ. Clauza OTHERS este folosit atunci cnd sunt luate n considerare i alte valori ale identificatorului ce nu sunt prevzute n ramurile cu WHEN. Specificaia LOOP Specificaia LOOP este utilizat pentru repetarea unor secvene de cod VHDL dup o anumit condiie WHILE/LOOP sau repetitiv cu specificaia FOR/WHILE. FOR/LOOP bucla este repetat de un numr de ori predefinit care nu se mai poate schimba dup intrarea n aceasta.
[eticheta:] FOR identificator IN interval LOOP (specificatii secventiale) END LOOP [eticheta:];

WHILE-LOOP bucla este repetat pn cnd nu mai este ndeplinit condiia.


[eticheta:] WHILE conditie LOOP (specificatii secventiale) END LOOP [eticheta:]; 455

EXIT este utilizat pentru terminarea forat a unei bucle.


[eticheta:] EXIT [eticheta] [WHEN conditie];

NEXT este folosit pentru srirea unui pas ntr-o bucl.


[eticheta:] NEXT [eticheta bucla] [WHEN conditie];

9.7. Proiectarea i simularea de structurilor hardware pentru DSP Pentru o aplicaie dat, aspectele teoretice ale specificaiilor sistemului DSP, analiza de semnal, analiza resurselor i analiza configuraiei acestuia sunt primele elemente de care trebuie s se in seama pentru a defini cerinele sistemului. Pentru descrierea pailor de realizare a secvenei unui program sunt utilizate dou metode: descrieri structurale i organigrame.
Algoritm DSP MATLAB sau

AD
Alt sistem de procesare d t

Fiier de date

Sorftware DSP

Fiier de date

DA
Alt sistem de procesare d

Generator semnal de i i

Fig. 9.8. Schema bloc de proiectare a algoritmilor DSP cu limbaje de nivel nalt. n stadiul de elaborare al algoritmului, se lucreaz de obicei cu medii de dezvoltare DSP de nivel nalt (ca MATLAB ori C/C++) care nlesnesc simulrile sistemului la nivel algoritmic. Apoi se transfer algoritmul n mediile joase la nivel software, hardware sau la ambele, n funcie de specificul operaiilor dorite. Aplicaiile sau algoritmii DSP pot fi simulai mai nti utiliznd un computer de uz general, ca de exemplu un PC, putnd fi astfel analizate i testate off-line cu date de intrare simulate. O diagram bloc ce reprezint
456

implementarea ntr-un computer de uz general al unui algoritm DSP este dat n figura 2.9. Semnalele de test pot fi generate intern prin generatoare de semnal sau digitalizate dintr-o structur experimental extern ori de o aplicaie dat. 9.7.1. Modele de abstractizare a structurilor hardware digitale Comportamentul poate fi folosit ca o interpretare funcional a unui anumit sistem. Toate modelele VHDL au att structur ct i comportament. Comportamentul n VHDL este nglobat direct n limbaj i proiectantul poate decide pentru a mixa structura cu comportamentul, oriunde n interiorul modelului. Un dispozitiv digital este un sistem discret, un sistem care transform valorile discrete ale intrrilor n valori discrete ale ieirilor. Aceasta se realizeaz prin efectuarea unui anumit numr de operaii sau transformri ale datelor de intrare. Rezultatele operaiilor sunt transmise altor operaii i n final devin ieiri. O reprezentare grafic a acestui concept este prezentat n figura 2.10. n acest caz, sistemul discret este un circuit logic. n VHDL, toate operaiile unui sistem discret sunt descrise cu un mecanism abstract. Fiecare operaie este denumit proces iar cile prin care aceste valori sunt transmise prin sistem sunt denumite semnale. Procesele sunt executate continuu, pn cnd sunt suspendate dar cu posibilitatea de reactivare. Cnd proiecteaz un model comportamental, un proiectant dorete ca anumite aciuni s aib loc la ndeplinirea anumitor condiii, sau cnd anumite informaii necesare devin disponibile. n particular, un proiectant deseori dorete reactivarea unui proces numai cnd au loc anumite schimbri n starea sistemului. Acest fel de schimbare este reflectat de o schimbare a valorii unui semnal, att timp ct semnalele conin starea sistemului. VHDL furnizeaz un mijloc prin care se poate exprima faptul c un proces este senzitiv la valorile dintr-o cale de date. Aceste ci de date se numesc canale senzitive. Un proces este reactivat atunci cnd se schimb o valoare ntr-un canal senzitiv. Multe dispozitive digitale sunt proiectate prin combinarea unui numr de sub-dispozitive conectate mpreun. Fiecare sub-dispozitiv este el nsui un sistem discret. Calea de date exterioar a unui sistem discret este definit de interfaa dispozitivului digital, definit de ctre entitate. Cnd un sistem unete dou subsisteme, acesta conecteaz o cale de date a unui subsistem la calea de date a altui subsistem. n acest fel, cele dou subsisteme pot comunica. n primul rnd, definiia unui port reprezint o declaraie de
457

semnal i, deci, o cale de date. Seciunile funcionale sunt cutii negre pentru operaiile pe care le conin. Considernd aceste seciuni drept cutii negre, este posibil ignorarea implementrii concrete a operaiilor. Sistemul discret care conecteaz aceste dou subsisteme definete cile de date care unesc cele dou subsisteme. Acesta are ca efect crearea unei cutii negre care reprezint ntregul sistem. n primul rnd, este posibil inserarea n calea de date a unei funcii de conversie de tip. Acesta este folositoare cnd dou procese trebuie s comunice, dar interfaa sistemului discret n care ele sunt definite nu are aceleai caracteristici. O alt cale prin care modelul structural poate interaciona cu modelul comportamental const n utilizarea semnalelor multisurs. Pentru aceste tipuri de semnale se definesc mai multe drivere. Acestor semnale proiectantul trebuie s le asocieze o funcie de decizie, care colecteaz valorile de emisie pe toate driverele i pe baza lor genereaz o singur valoare. 9.7.2. Proiectarea structurilor hardware pe mai multe nivele Tradiional proiectele electronice se realizau plecnd de la nivelul de poart logic, fcnd uz de componente standard. Blocurile elementare din care este construit un sistem sunt reprezentate astzi de microprocesoare i ASIC-uri, circuite care conin mii de pori logice. Ca o consecin, metodele tradiionale de proiectare de tip bottom-up au fcut loc practicilor de proiectare ierarhizat top-down care fac posibil stpnirea complexitii crescnde a sistemelor. O abordare efectiv este realizat de nglobarea unui limbaj de descriere hardware ierarhizat, aa cum este VHDL sau Verilog, n procesul de proiectare. Metodologia top-down este ns rareori folosit exclusiv. O abordare mai uzual presupune angajarea unui grup de proiectani n elaborarea specificaiilor de nivel nalt n VHDL i apoi furnizarea acestor modele unui alt grup de proiectani, care vor elabora implementarea la nivelul logic sau al componentelor standard. Aceast abordare poate fi interpretat ca o combinaie ntre metodele top-down i bottom-up. VHDL poate fi folosit n cadrul unui proiect n trei moduri diferite : Specificaia de nivel nalt. Pentru semnale se utilizeaz tipuri de date abstracte. Se utilizeaz combinat descrieri schematice i prin cod VHDL. Proiectare la nivel de componente logice / standard. Se utilizeaz tipuri de date specifice nivelului logic. Reprezentarea primar a proiectului o constituie diagramele schematice.
458

Dezvoltarea bibliotecilor de componente standard. Se utilizeaz tipuri de date specifice nivelului logic. Toate metodele sunt reprezentate in VHDL. Specificaiile modulelor sunt utilizate pentru proiectarea fiecrui modul n parte i produc o reprezentare care va fi utilizat la proiectarea i analiza la nivel fizic. Etapele tipice ale procesului de proiectare a unui sistem digital sunt prezentate n figura 2.12. Analiza cerinelor
Specificaii generale

Partiionarea sistemului
Specificaii software Specificaii hardware

Proiectare software

Proiectare sistem
Specificaii module

Proiectare detailat
Figura 2.12. Procesul de proiectare a sistemelor digitale
Reprezentare logic

Proiectare fizic i analiz


Proiectare fizic

Producie i Testare

9.7.3. Executarea i simularea proceselor Modelul dispozitivelor digitale utilizat pn acum era bazat pe principiul stimul-rspuns : cnd aprea un stimul la intrarea modelului, modelul rspundea i apoi atepta apariia unui nou stimul. Acest stimul aprea la un interval de timp determinat de modelul sistemului discret. Timpul la care apare un eveniment este timpul simulrii i nu timpul ceasului intern al implementrii. Datorit faptului c VHDL este concurent, dar este de asemenea proiectat astfel nct s ruleze pe calculatoare care nu lucreaz paralel, este necesar crearea unei definiii pentru timpul simulrii, pentru a stabili cnd apare un eveniment n cursul simulrii. Fr o asemenea definiie, un model poate fi simulat n mod diferit, dac se utilizeaz dou simulatoare diferite.
459

Cnd un proces genereaz o valoare n calea de date, acesta desemneaz, de asemenea, cu ct timp nainte valoarea este trimis spre calea de date ; aceasta este numit programarea tranzaciei dup un anumit timp. Este posibil s se programeze orice numr de tranzacii pentru calea de date. Mulimea tranzaciilor pentru un semnal se numete driver-ul acelui semnal. Ciclul de simulare este un concept abstract sub care este rulat un model hardware descris n VHDL. Aceast abstractizare se bazeaz pe o generalizare a modelului comportamental al circuitelor digitale: modelul stimulilor i rspunsurilor. n VHDL, acest model se bazeaz pe conceptele de procese i semnale. Un proces poate reaciona la schimbarea valorii unui semnal de care este conectat prin transmiterea unor noi date spre alte procese, prin intermediul semnalelor. n timpul unei etape de simulare, valorile se propag prin calea de date. Etapa se termin cnd toate cile de date care sunt programate pentru a primi noi valori, la timpul curent de simulare, sunt reactualizate. n timpul celei de-a doua etape, acele elemente active care recepioneaz informaia pe canalele lor senzitive sunt puse n funciune pn cnd sunt suspendate. Aceast etap este complet cnd toate procesele active devin suspendate. La terminarea ciclului de simulare, ceasul simulrii este setat la urmtorul timp al simulrii la care trebuie s apar o tranziie. Ciclul de simulare este prezentat n figura 9.9.
START SIMULARE Execuie procese

Reactualizare semnale

Stop simulare

Fig. 9.9. Model de simulare Modelul de mai sus presupune c exist ntotdeauna o ntrziere ntre timpul la care procesul pune valorile n calea de date i timpul la care calea de date reflect aceste valori. n particular, dac nu este specificat nici o ntrziere, se utilizeaz o ntrziere elementar delta. Aceast ntrziere nu reactualizeaz ceasul simulrii, dar determin trecerea la etapa urmtoare a ciclului de simulare. Acest lucru este important de luat n considerare, deoarece mecanismul VHDL de atribuire a valorilor n calea de date seamn cu atribuirea variabilelor n acest limbaj sau n altele, dar efectul este puin diferit. Cnd o valoare este atribuit cii de date aceasta nu este imediat disponibil proceselor care citesc aceast valoare din calea de date.
460

10. IMPLEMENTAREA PSD utiliznd structuri FPGA n acest capitol sunt prezentate implementrile hardware ale celor dou tipuri de filtre FIR i IIR. Se dorete ca implementarea filtrelor s fie realizat pe structuri hardware n diferite moduri, urmrindu-se s se analizeze avantajele sau problemele specifice acestora n funcie de modalitile de implementare alese. Implementarea algoritmilor DSP este realizat hardware pentru ca s se obin o frecven de lucru mult mai mare n raport cu procesoarele digitale de semnale. Totui, ntotdeauna exist i anumite aspecte mai puin avantajoase care trebuie puse n balan cu avantajele oferite de structurile hardware. Acest dezavantaj const n creterea ariei fizice a structurii reprogramabile odat cu paralelismul i complexitatea algoritmului. 10.1. Implementarea filtrului digital FIR Studierea acestui tip de filtru este motivat de necesitatea utilizrii lui n unele aplicaii de procesare a semnalelor la mare vitez dar i de simplitatea de implementare software i hardware. nainte de a face o prezentare a schemei bloc de implementare vom reaminti formula matematic utilizat pentru descrierea funcionrii filtrului de tip FIR reprezentat prin ecuaia diferenial (10.1).
y [ n] =

x[k ] h[n k ]
k =0

(10.1)

Spre exemplu, dac alegem un filtru de ordinul IV, ecuaia (10.1) devine:
y [ n ] = x [ 0] h [ n ] + x [1] h [ n 1] + x [ 2] h [ n 2] + x [3] h [ n 3]

(10.2)

Pentru o implementarea hardware afiltrului exemplificat sunt necesare trei operaii de adunare i patru operaii de nmulire. Vom alege pentru semnalul digital ce urmeaz a fi prelucrat de acest filtru o reprezentare pe 16 bii.
461

10.1.1. FILTRU FIR, forma direct Schema bloc a unui filtrul FIR de ordinul IV, realizat n forma direct, este reprezentat n figura urmtoare.

Fig. 10.1. Filtru FIR, forma direct Filtrul va fi implementat n limbajul VHDL printr-o descriere structural. Vor fi realizate componentele constructive (multiplicatorul, sumatorul i registrul de deplasare format din celule de ntrziere) dup care fiecare component va fi instaniat n programul principal de cte ori este necesar. Implementrile structurilor digitale vor fi realizate pe un circuit de tip FPGA SPARTAN 3. Celula de ntrziere Acest registru este utilizat pentru ca semnalul s fie ntrziat cu o perioad de ceas. Se presupune faptul c frecvena semnalului de ceas care comand filtrul este aceeai cu frecvena de eantionare. Porturile de intrare/ieire ale modului digital sunt date n figura 10.2.

Fig. 10.2

Semnalul de reset este sincron iar activarea acestuia va comanda trecerea semnalului de pe portul de ieire n valoarea 0.
462

Programul VHDL al registrului de ntrziere este urmtorul:


library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity intarz_o_per is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; data_in : in STD_LOGIC_VECTOR (15 downto 0); data_out : out STD_LOGIC_VECTOR (15 downto 0)); end intarz_o_per; architecture Behavioral of intarz_o_per is begin process(reset, clk) begin if (reset = '0') then data_out <= (others =>'0'); elsif rising_edge(clk) then data_out <= data_in; end if; end process; end Behavioral;

Acest modul este implementat printr-un proces care este activat asincron la un eveniment ce apare pe semnalul de reset i la semnalul de sincronizare clk. Valorea portului de intrare este atribuit portului de ieire numai pe frontul cresctor al semnalului de ceas. Schema logic rezultat dup procesul de sintez este urmtoarea:

Fig. 10.3

Registrul de deplasare este format din 16 bistabili de tip D cu semnal de clear folosit n cazul nostru pentru resetare. Aceste structuri se regsesc pe circuitul FPGA ca elemente structurale de baz (primitive).

463

Modulul de multiplicare Multiplicatoarele, n general, ocup o arie destul de mare dintr-un FPGA. tim c n algoritmii de tip DSP multiplicatoarele au un rol foarte important. Dac dorim s implementm un filtru FIR de ordinul 32 pe 16 bii, s-ar putea ca structura respectiv sa nu-l poat cuprinde. Pentru eliminarea acestui dezavantaj, au fost realizate n structura FPGA module specializate de nmulire. De exemplu, circuitul SPARTAN 3 deine module de nmulire pe 18 bii. Modulul multiplicator este implementat de asemenea prin utilizarea modulelor existente din circuitul FPGA. Porturile de intrare-ieire ale modulului multiplicator sunt reprezentate n figura 10.4

Fig. 10.4

Programul VHDL ce descrie specificaiile modulului de multiplicare este prezentat n continuare.


library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; library UNISIM; use UNISIM.VComponents.all; entity multiplicator is Port ( op_a : in STD_LOGIC_VECTOR (15 downto 0); op_b : in STD_LOGIC_VECTOR (15 downto 0); rez : out STD_LOGIC_VECTOR (34 downto 0)); end multiplicator; component MULT18X18 port ( P : out std_logic_vector (35 downto 0); A : in std_logic_vector (17 downto 0); B : in std_logic_vector (17 downto 0)); end component; signal temp_a, temp_b: std_logic_vector(17 downto 0); signal temp_rez: std_logic_vector(35 downto 0); begin

464

temp_a <= "00" & op_a; temp_b <= "00" & op_b; rez <= "000" & temp_rez(31 downto 0); MULT18X18_inst : MULT18X18 port map ( P => temp_rez, -- 36-bit multiplier output A => temp_a, -- 18-bit multiplier input B => temp_b -- 18-bit multiplier input ); end Behavioral;

Modulul multiplicator este implementat asincron i structural prin instanierea componentei MULT18X18 existent ca primitiv pe circuitul SPARTAN3. n vederea declarrii modului de multiplicare a fost introdus libraria UNISIM. Schema electric de implementare este dat n figura 10.5.

Fig. 10.5

Modulul sumator Modulul sumator este implementat intrare/ieire sunt prezentate n figura 10.6. asincron. Porturile de

Fig. 10.6

Programul VHDL care descrie specificaiile pentru modulul sumator este prezentat n continuare.
465

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity sumator is Port ( op_a : in STD_LOGIC_VECTOR (34 downto 0); op_b : in STD_LOGIC_VECTOR (34 downto 0); rez : out STD_LOGIC_VECTOR (34 downto 0)); end sumator; architecture Behavioral of sumator is begin rez <= op_a + op_b; end Behavioral;

Acest modul este implementat fizic prin elemente logice existente pe structura FPGA. Pentru sumator nu mai exist o primitiv ca i n cazul circuitului de nmulire. Aceste componente prezentate pn acum sunt suficiente pentru realizarea filtrului propus. Exist ns i un dezavantaj. Porturile de intrare ct i de ieire ale filtrului digital trebuie s opereze cu acelai numr de bii, ceea ce nu se ntmpl n cazul nostru. Operaia de multiplicare are rezultatul pe 32 de bii iar sumatoarele mai adaug nc 3 bii. Dac numerele sunt rotunjite imediat, dup fiecare operaie aritmetic, eroarea numeric a semnalului la ieire poate fi destul de suprtoare. n acest caz, s-a operat cu modulele aritmetice pe numrul de bii maxim (necesar) dar la ieirea din filtru se impune folosirea unui modul de trunchiere a rezultatului obinut. n acest fel, practic sunt eliminai ultimii 19 bii reprezentnd cei mai puin semnificativi bii. Modulul de trunchiere Porturile de intrare/ieire ale modulului de trunchiere sunt prezentate n figura 10.7.

Fig. 10.7

466

Programul VHDL care descrie specificaiile pentru modulul de trunchiere este prezentat n continuare.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity buffer_iesire is Port ( clk: in STD_LOGIC; reset: in STD_LOGIC; data_in : in STD_LOGIC_VECTOR (34 downto 0); data_out : out STD_LOGIC_VECTOR (15 downto 0)); end buffer_iesire; architecture Behavioral of buffer_iesire is begin process (clk, reset) begin if (reset = '0') then data_out <=(others => '0'); elsif rising_edge(clk) then data_out <= data_in(34 downto 19); end if; end process; end Behavioral;

Modulul de trunchiere este implementat sincron i va mai introduce o ntrziere egal cu o perioad de ceas (un tact). Dup ce sunt realizate separat n cod VHDL toate modulele digitale, structural, pot fi instaniate dup urmtoarea schem de interconectare:
X_n coef1 X_n1 X_n2 X_n3

Z-1 coef2

Z-1 coef3

Z-1 coef4

Fig. 10.8

X
mc_1

X
mc_2

X
mc_3

X
mc_4 s_3 Y_n

s_1

s_2

trunc

467

Programul VHDL care descrie specificaiile pentru schema global este prezentat n continuare.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity fir_b is Port ( clk: in STD_LOGIC; reset: in STD_LOGIC; x_n : in STD_LOGIC_VECTOR (15 downto 0); y_n : out STD_LOGIC_VECTOR (15 downto 0)); end fir_b; architecture Behavioral of fir_b is component buffer_iesire is Port ( clk: in STD_LOGIC; reset: in STD_LOGIC; data_in : in STD_LOGIC_VECTOR (34 downto 0); data_out : out STD_LOGIC_VECTOR (15 downto 0)); end component; component intarz_o_per is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; data_in : in STD_LOGIC_VECTOR (15 downto 0); data_out : out STD_LOGIC_VECTOR (15 downto 0)); end component; component multiplicator is Port ( op_a : in STD_LOGIC_VECTOR (15 downto 0); op_b : in STD_LOGIC_VECTOR (15 downto 0); rez : out STD_LOGIC_VECTOR (34 downto 0)); end component; component sumator is Port ( op_a : in STD_LOGIC_VECTOR (34 downto 0); op_b : in STD_LOGIC_VECTOR (34 downto 0); rez : out STD_LOGIC_VECTOR (34 downto 0)); end component; -- coeficientii filtrului signal coef1: STD_LOGIC_VECTOR(15 downto 0):= "0111111111111111"; signal coef2: STD_LOGIC_VECTOR(15 downto 0):= "0011111111111111"; signal coef3: STD_LOGIC_VECTOR(15 downto 0):= "0001111111111111"; signal coef4: STD_LOGIC_VECTOR(15 downto 0):= "0000111111111111"; -- semnale interne

468

signal mc_1, mc_2 ,mc_3 ,mc_4: STD_LOGIC_VECTOR(34 downto 0); signal x_n1, x_n2, x_n3: STD_LOGIC_VECTOR(15 downto 0); signal s_1, s_2, s_3: STD_LOGIC_VECTOR(34 downto 0); begin U1: multiplicator Port map(op_a => coef1, op_b => x_n, rez => mc_1); U2: multiplicator Port map(op_a => coef2, op_b => x_n1, rez => mc_2); U3: multiplicator Port map(op_a => coef3, op_b => x_n2, rez => mc_3); U4: multiplicator Port map(op_a => coef4, op_b => x_n3, rez => mc_4); U5: intarz_o_per Port map(clk => clk,reset => reset, data_in => x_n, data_out => x_n1); U6: intarz_o_per Port map(clk => clk,reset => reset, data_in => x_n1, data_out => x_n2); U7: intarz_o_per Port map(clk => clk,reset => reset, data_in => x_n2, data_out => x_n3); U8: sumator Port map(op_a => mc_1, op_b => mc_2, rez => s_1); U9: sumator Port map(op_a => s_1, op_b => mc_3, rez => s_2); U10: sumator Port map(op_a => s_2, op_b => mc_4, rez => s_3); U11: buffer_iesire Port map( clk => clk, reset => reset, data_in => s_3, data_out => y_n); end Behavioral;

Pentru simularea circuitului se consider patru coeficieni (coef1, coef2, coef3, coef4) i se aplic la intrarea acestuia un impuls de tip unitate. Rezultatul urma prelucrrii impulsului este prezentat n figura 10.9.

Fig. 10.9. Diagrame de semnal pentru simularea FIR n figura de mai sus, sunt reprezentate att semnalul de intrare i cel de ieire ct i semnalele intermediare de la sumatori, multiplicatori i celulele de ntrziere.
469

10.1.2. FILTRU FIR, forma transversal O a doua form de implementare a filtrului de tip FIR este reprezentat de forma transversal. Aceast structur se obine din forma direct prin inversarea sensului fluxului de date prin filtru, schimbarea intrrii cu ieirea i inserarea celulelor de ntrziere ntre sumatoare. Reprezentarea grafic a unui filtru FIR transversal este prezentat n figura 10.10.

Fig. 10.10 Acest filtru va fi implementat cu aceleai elemente constructive prezentate la filtrul FIR, forma direct. Singura component care este modificat este circuitul de ntrziere pentru care porturile de intrare/ieire nu vor mai fi ce 15 bii, ci pe 35 de bii. Schema structural de implementare hardware a filtrului de tip FIR sub form transversal este prezentat n figura 10.11.
X_n coef1 coef2 coef3 coef4

Fig. 10.11
X
mc_1

X
mc_2

X
mc_3

X
mc_4 Y_n

-1

+
Z t_1 s_1

-1

+
Z t_2 s_2

-1

trunc

t_3

s_3

470

Programul VHDL care descrie specificaiile pentru filtrului de tip FIR sub form transversal este prezentat n continuare.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity fir_a is Port ( clk: in STD_LOGIC; reset: in STD_LOGIC; x_n : in STD_LOGIC_VECTOR (15 downto 0); y_n : out STD_LOGIC_VECTOR (15 downto 0)); end fir_a; architecture Behavioral of fir_a is component buffer_iesire is Port ( clk: in STD_LOGIC; reset: in STD_LOGIC; data_in : in STD_LOGIC_VECTOR (34 downto 0); data_out : out STD_LOGIC_VECTOR (15 downto 0)); end component; component intarz_o_per is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; data_in : in STD_LOGIC_VECTOR (34 downto 0); data_out : out STD_LOGIC_VECTOR (34 downto 0)); end component; component multiplicator is Port ( op_a : in STD_LOGIC_VECTOR (15 downto 0); op_b : in STD_LOGIC_VECTOR (15 downto 0); rez : out STD_LOGIC_VECTOR (34 downto 0)); end component; component sumator is Port ( op_a : in STD_LOGIC_VECTOR (34 downto 0); op_b : in STD_LOGIC_VECTOR (34 downto 0); rez : out STD_LOGIC_VECTOR (34 downto 0)); end component; -- coeficientii filtrului signal coef1: STD_LOGIC_VECTOR(15 downto 0):= "0111111111111111"; signal coef2: STD_LOGIC_VECTOR(15 downto 0):= "0011111111111111"; signal coef3: STD_LOGIC_VECTOR(15 downto 0):= "0001111111111111"; signal coef4: STD_LOGIC_VECTOR(15 downto 0):= "0000111111111111";

471

-- semnale interne signal mc_1, mc_2 ,mc_3 ,mc_4: STD_LOGIC_VECTOR(34 downto 0); signal t_1, t_2, t_3: STD_LOGIC_VECTOR(34 downto 0); signal s_1, s_2, s_3: STD_LOGIC_VECTOR(34 downto 0); begin U1: multiplicator Port map(op_a => coef4, op_b => x_n, rez => mc_1); U2: multiplicator Port map(op_a => coef3, op_b => x_n, rez => mc_2); U3: multiplicator Port map(op_a => coef2, op_b => x_n, rez => mc_3); U4: multiplicator Port map(op_a => coef1, op_b => x_n, rez => mc_4); U5: intarz_o_per Port map(clk => clk,reset => reset, data_in => mc_1, data_out => t_1); U6: intarz_o_per Port map(clk => clk,reset => reset, data_in => s_1, data_out => t_2); U7: intarz_o_per Port map(clk => clk,reset => reset, data_in => s_2, data_out => t_3); U8: sumator Port map(op_a => mc_2, op_b => t_1, rez => s_1); U9: sumator Port map(op_a => mc_3, op_b => t_2, rez => s_2); U10: sumator Port map(op_a => mc_4, op_b => t_3, rez => s_3); U11: buffer_iesire Port map( clk => clk, reset => reset, data_in => s_3, data_out => y_n); end Behavioral;

Simularea acestui circuit, cu acelai date de intrare ca i n cazul filtrului FIR cu implementare n forma direct, este prezentat n figura 10.12.

Fig. 10.12 Din punct de vedere funcional, se observ ca aceste dou module, implementate n variante diferite, se comport identic. Totui dac realizm o analiz mai amnunit a acestora se vor observa diferene care apar ntre acestea. Filtrul FIR n form direct ocup din structura FPGA 62 de slice-uri iar frecvena maxim aplicat pe semnalul de ceas este de 71.022MHz n timp ce filtrul FIR, sub forma transversal, ocup 72 de slice-uri iar frecvena maxim de lucru este 168.862MHz.
472

Frecvena celui de-al doilea filtru este mai mult dect dublu dar aria ocupat n acest caz este cu puin mai mare. Acest lucru se datoreaz faptului c n primul tip de filtru FIR exist o mare parte combinaional interconectat direct. Aceasta este format din multiplicatori i modulele de sumare. Timpul de tranziie al semnalelor logice prin acestea este mult mai mare dect la cel de-al doilea filtru. La filtrul transversal, modulele realizate combinaional sunt mult mai mici. Sunt formate grupuri doar dintr-un multiplicator i un sumator. 10.1.3. FILTRU FIR cu pipeline Sunt cazuri n care se dorete realizarea unor filtre mai rapide chiar dac aria ocupat de acestea este mai mare. O prim variant de implementare este reprezentat de utilizarea tehnicii de pipeline. n figura 10.13 este prezentat implementarea structural a filtrului FIR transversal cu un nivel de pipeline. Modulul reg.pip este implementat la fel ca modulul de ntrziere. Acest registru a fost intercalat ntre dou logici combinaionale. n acest caz, timpul de propagare se mparte n dou: propagarea prin modulul de multiplicare pe o perioad de ceas i propagarea prin modulul de adunare pe o alt perioad de ceas.
X_n coef1 coef2 coef4

coef3

X
mc_1

X
mc_2

X
mc_3

X
mc_4

Fig. 10.12

reg. pip
pip_1

reg. pip
pip_2

reg. pip
pip_3

reg. pip
pip_4 Y_n

-1

Z t_1 s_1

-1

Z t_2 s_2

-1

trunc

t_3

s_3

Aceast metod este eficient atunci cnd multiplicatoarele sunt implementate prin logic i nu cu module implementate hardware ca n cazul exemplelor de mai sus.
473

Diagrama de semnal pentru simularea unui astfel de filtru este prezentat n figura 10.14.

Fig. 10.14 Aceast tehnic introduce ntotdeauna un numr de tacturi de ntrziere asupra semnalului de intrare egal cu numrul nivelelor de pipeline. n exemplul de mai sus a fost introdus doar un nivel ceea ce se observ i n simulare o singur ntrziere asupra semnalului de ieire din filtrul digital. Tehnicile de implementare sunt variate n funcie de aplicaiile n care sunt utilizate. 10.1.4. FILTRU FIR, coeficieni simetrici O alt mbuntire care se poate aduce filtrelor de tip fir este reprezentat de generarea simetric a coeficienilor. n cazurile n care sunt folosite filtre cu coeficieni simetrici, numrul de multiplicatoare se reduce practic la jumtate. Pentru exemplificare se implementeaz acelai filtru de ordinul IV, dar coeficienii coef1 = coef4 i coef2 = coef3. Schema bloc structural de implementare a filtrului FIR n acest caz este figura 10.1.5. n acest caz, sunt utilizate tot 3 circuite sumatoare dar numrul multiplicatoarelor s-a redus de la 4 multiplicatoare la dou. Acest lucru reprezint un avantaj foarte mare tiind c multiplicatoarele sunt componentele care ocup cea mai mare arie din structura FPGA. Secvena de cod care se va modifica fa de cea prezentat n cazul filtrului FIR de ordinul 4 transversal este urmtoarea:
-- coeficientii filtrului signal coef1: STD_LOGIC_VECTOR(15 downto 0):= "0111111111111111"; signal coef2: STD_LOGIC_VECTOR(15 downto 0):= "0011111111111111"; -- semnale interne signal mc_1, mc_2: STD_LOGIC_VECTOR(34 downto 0); signal t_1, t_2, t_3: STD_LOGIC_VECTOR(34 downto 0); signal s_1, s_2, s_3: STD_LOGIC_VECTOR(34 downto 0);

474

begin U1: multiplicator Port map(op_a => coef1, op_b => x_n, rez => mc_1); U2: multiplicator Port map(op_a => coef2, op_b => x_n, rez => mc_2); U3: intarz_o_per Port map(clk => clk,reset => reset, data_in => mc_1, data_out t_1); U4: intarz_o_per Port map(clk => clk,reset => reset, data_in => s_1, data_out t_2); U5: intarz_o_per Port map(clk => clk,reset => reset, data_in => s_2, data_out t_3); U6: sumator Port map(op_a => mc_2, op_b => t_1, rez => s_1); U7: sumator Port map(op_a => mc_2, op_b => t_2, rez => s_2); U8: sumator Port map(op_a => mc_1, op_b => t_3, rez => s_3); U9: buffer_iesire Port map( clk => clk, reset => reset, data_in => s_3, data_out y_n);

=> => =>

=>

X_n coef1 coef2

Fig. 10.15
X

X
mc_1

mc_2

Z-1 t_1

+
s_1

Z-1

t_2 Y_n trunc s_3

+
t_3 Z-1 s_2

475

10.2. Implementarea filtrului digital de tip IIR Filtrul FIR prezentat anterior prezint anumite faciliti care l fac mult mai atractiv pentru implementarea pe structurile hardware programabile. Se pot enumera cteva elemente pozitive ale acestui tip de filtru cum ar fi: - realizarea rapid a unui filtru cu faz liniar; - este posibil realizarea filtrelor cu mai multe benzi de trecere; - prezint o structur simpl pentru structuri de decimare i interpolare; - este ntotdeauna stabil; - prezint coeficieni cu valori mici ceea ce nu conduce la generarea unor erori prea mari atunci cnd acetia sunt rotunjii. Dar trebuie inut cont de faptul c filtrul de tip FIR prezint i cteva dezavantaje: - filtrele performante sunt de ordin destul de mare ceea ce va conduce la ocuparea unei suprafee destul de mare n structura reprogramabil la implementarea acestuia; - filtrele FIR recursive pot fi instabile datorit nedeterminrii perfecte a zerourilor i a polilor. Comparnd filtrul de tip FIR cu un filtru de tip IIR este uneori mult mai eficient utilizarea unui filtru cu rspuns infinit atunci cnd se dorete o caracteristic de transfer mai bun pentru un ordin mult mai mic. Filtrul de tip IIR prezint urmtoarele avantaje: - proiectarea uoar dup modele analogice; - prezint o selectivitate bun pentru ordine mici; - ruleaz la viteze mari, datorit dimensiunii reduse. Ca i n cazul filtrului FIR, i n cazul filtrului cu rspuns infinit exist i cteva dezavantaje: - nu prezint faz liniar; - sunt proiectate numai filtre de tip trece jos, trece sus, trece band sau oprete band; - proiectarea la viteze mari n tehnica pipeline este dificil de realizat. Pentru a pune n eviden avantajele filtrului cu rspuns infinit se va realiza implementarea unui filtru IIR de ordinul I. Filtrul numeric IIR este definit de relaia 10.3.

476

y [ n] = x [ n] +

5 y [ n] 8

(10.3)

Pentru implementarea acestui filtru sunt luate n considerare dou aspecte: - evitarea operaiilor de multiplicare atunci cnd este posibil; - realizarea i implementarea ntr-o structur ct mai simpl. Referitor la primul aspect, se poate elimina operaia de multiplicare prin utilizarea operaiilor de adunare i deplasare la nivel de bit prezentate n figura 10.16.
x[n]/8 x[n] >> 3

Fig. 10.16
+
5/8*x[n]

x[n]/2

x[n] >> 1

Divizarea la 8 se realizeaz prin deplasarea lui x[n] cu 3 bii la dreapta, iar divizarea cu doi se realizeaz prin deplasarea lui x[n] cu 1 bit la dreapta. Programul VHDL prin care este implementat filtrul IIR de ordinul I este urmtorul:
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity iir_gr1 is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; x_n : in STD_LOGIC_VECTOR (15 downto 0); y_n : out STD_LOGIC_VECTOR (15 downto 0)); end iir_gr1; architecture Behavioral of iir_gr1 is signal y_n1 : STD_LOGIC_VECTOR(15 downto 0); begin process(clk, reset)

477

variable temp_y_n: STD_LOGIC_VECTOR(17 downto 0):= (others => '0'); begin if (reset = '0') then y_n1 <= (others => '0'); elsif rising_edge(clk) then temp_y_n :=("000"&y_n1(15 downto 1)) + ("0000000000"&y_n1(15 downto 8)); y_n1 <= temp_y_n(15 downto 0) + x_n; end if; end process; y_n <= y_n1; end Behavioral;

Implementarea acestui filtru, datorit simplitii lui, se va face direct printr-un proces sincron dup semnalul de ceas. Simularea acestui modul este prezentat n figura 10.17, figur n care este reprezentat rspunsul filtrului la impulsul de tip unitate.

Fig. 10.17 Dac ne referim la modul general, ecuaia diferenial care caracterizeaz un filtru IIR este urmtoarea:
y [ n] = a0 y [ n ] + a1 y [ n 1] + ... + aM y [ n M ] b0 x [ n ] + b1 x [ n 1] + ... + bN x [ n N ]

(10.4)

Implementarea unei astfel de ecuaie n mediul hardware este destul de costisitoare datorit faptului c pe lng sumele de produse mai este necesar i implementarea unei operaii de mprire care ocup arie mare. i n plus, aceast operaie introduce i un timp de propagare destul de mare. n vederea evitrii acestui dezavantaj, filtrul IIR va fi implementat n dou moduri: forma direct I i forma direct II. Pentru exemplificare va fi implementat un filtru IIR caracterizat de urmtoarea funcie de transfer:

478

H ( z) =

b z a z
i =0 i i =0 N i

=
i

b0 + b1 z 1 + b2 z 2 1 + 0,1z 1 z 2 = a0 + a1 z 1 + a2 z 2 1 0, 2 z 1 0, 4 z 2

(10.5)

Coeficienii acestuia sunt: b0 = 1 , b1 = 0 , b2 = 1 i a0 = 1, a1 = 0,2, a2 = 0,4 Forma direct I i forma direct II sunt prezentate n figurile 10.18 i 10.19.

x[n]

b0=1

a0=1

+
z-1 b1=0.1 -a1=0.2 z-1

y[n]

x[n]

b0=1

+
z-1 -a1=0.2 b1=0.1

y[n]

+
z-1 b2=-1 -a2=0.4 z-1

z-1 -a2=0.4 b2=-1

Fig. 10.18

Fig. 10.19

Reprezentaarea coeficienii va fi n virgul fix pe 16 bii, formatul 1:15. Bitul cel mai semnificativ este bitul de semn (1 - negativ, 0 - pozitiv) i este urmat de 15 bii care reprezint partea fracionar. Implementarea filtrului IIR in forma directa I Implementarea filtrului numeric de tip fir se realizeaz pe baza unei descrieri structurale, dup acelai model de implementare ca al filtrelor de tip FIR. Modulele digitale componente ale filtrului, nu vor mai fi descrise din nou deoarece sunt construite pe acelai principiu. n acest caz va fi modificat doar numrul de bii. n figura 10.20 este prezentat modelul de interconectare al filtrului IIR prezentat n exemplul anterior.

479

x_n b0=1 z-1 X

mc_3

+
s_3

s_4

buff

y_n

mc_2 t_1 z-1 mc_1 t_2 b2=-1 X b1=0.1 X

+ + +
mc_4 X -a2=0.4 s_2 mc_5 s_1 X -a1=0.2

z-1 t_3 z-1 t_4

Fig. 10.20

Programul n limbaj VHDL realizat n vederea implementrii filtrului de tip IIR este prezentat n continuare.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity iir_fr_I is Port ( clk: in STD_LOGIC; reset: in STD_LOGIC; x_n : in STD_LOGIC_VECTOR (15 downto 0); y_n : out STD_LOGIC_VECTOR (15 downto 0)); end iir_fr_I; architecture Behavioral of iir_fr_I is component buffer_iesire is Port ( data_in : in STD_LOGIC_VECTOR (35 downto 0); data_out : out STD_LOGIC_VECTOR (15 downto 0)); end component; component intarz_o_per is Port ( clk : in STD_LOGIC;

480

reset : in STD_LOGIC; data_in : in STD_LOGIC_VECTOR (15 downto 0); data_out : out STD_LOGIC_VECTOR (15 downto 0)); end component; component multiplicator is Port ( op_a : in STD_LOGIC_VECTOR (15 downto 0); op_b : in STD_LOGIC_VECTOR (15 downto 0); rez : out STD_LOGIC_VECTOR (35 downto 0)); end component; component sumator is Port ( op_a : in STD_LOGIC_VECTOR (35 downto 0); op_b : in STD_LOGIC_VECTOR (35 downto 0); rez : out STD_LOGIC_VECTOR (35 downto 0)); end component; -- coeficientii filtrului signal b_0: STD_LOGIC_VECTOR(15 downto 0):= "0111111111111111"; signal b_1: STD_LOGIC_VECTOR(15 downto 0):= "0000110001100011"; signal b_2: STD_LOGIC_VECTOR(15 downto 0):= "1000000000000000"; signal a_1: STD_LOGIC_VECTOR(15 downto 0):= "1110011001100111"; signal a_2: STD_LOGIC_VECTOR(15 downto 0):= "1100110011001101"; -- semnale interne signal mc_1, mc_2 ,mc_3 ,mc_4, mc_5: STD_LOGIC_VECTOR(35 downto 0); signal t_1, t_2, t_3, t_4: STD_LOGIC_VECTOR(15 downto 0); signal s_1, s_2, s_3, s_4: STD_LOGIC_VECTOR(35 downto 0); signal yt_n: STD_LOGIC_VECTOR(15 downto 0):=(others =>'0'); begin U1: multiplicator Port map(op_a => x_n, op_b => b_0, rez => mc_3); U2: multiplicator Port map(op_a => t_1, op_b => b_1, rez => mc_2); U3: multiplicator Port map(op_a => t_2, op_b => b_2, rez => mc_1); U4: multiplicator Port map(op_a => t_3, op_b => a_1, rez => mc_5); U5: multiplicator Port map(op_a => t_4, op_b => a_2, rez => mc_4); U6: intarz_o_per Port map(clk => clk,reset => reset, data_in => x_n, t_1); U7: intarz_o_per Port map(clk => clk,reset => reset, data_in => t_1, t_2); U8: intarz_o_per Port map(clk => clk,reset => reset, data_in => yt_n, t_3); U9: intarz_o_per Port map(clk => clk,reset => reset, data_in => t_3, t_4); U10: sumator Port map(op_a => mc_3, op_b => s_3, rez => s_4); U11: sumator Port map(op_a => mc_2, op_b => s_2, rez => s_3); U12: sumator Port map(op_a => mc_5, op_b => s_1, rez => s_2); U13: sumator Port map(op_a => mc_1, op_b => mc_4, rez => s_1);

data_out => data_out => data_out => data_out =>

481

U14: buffer_iesire Port map( data_in => s_4, data_out => yt_n); y_n <= yt_n; end Behavioral;

Modificrile aduse componentelor sunt urmtoarele: sumatoarele au operanzii i rezultatul cu o reprezentare pe 36 de bii, multiplicatoarele ofer rezultatul pe 36 bii, iar celulele de ntrziere sunt pe 16 bii. Coeficienii au fost calculai n virgul fix format 1:15, complement fa de 2 i au urmtoarele valori binare:
b_0 = "0111111111111111"; b_1 = "0000110001100011"; b_2 = "1000000000000000"; a_1 = "1110011001100111"; a_2 = "1100110011001101";

Dac acest filtru este implementat pe o structur reprogramabil de tip Virtex2, se obin urmtoarele caracteristici:
Device utilization summary: Selected Device : 2vp20ff896-5 Number of Slices: 86 out of 9280 0% Number of Slice Flip Flops: 77 out of 18560 Number of 4 input LUTs: 154 out of 18560 Number of IOs: 34 Number of bonded IOBs: 34 out of 556 Number of MULT18X18s: 5 out of 88 Number of GCLKs: 1 out of 16 Timing Summary: Speed Grade: -5 Minimum period: 11.477ns (Maximum Frequency: 87.133MHz) Minimum input arrival time before clock: 9.933ns Maximum output required time after clock: 4.061ns Maximum combinational path delay: No path found

0% 0% 6% 5% 6%

482

10.3. Sistem de criptare a semnalelor digitale Un exemplu mai complex n procesarea digital a semnalelor este dat prin prezentarea unui sistem de criptare a semnalelor digitale. Se ncepe prin prezentarea aspectelor legate de implementarea pe un sistem de dezvoltare de tip Spartan 3 a unui algoritm de criptare ce presupune utilizarea unei funcii digitale haotice de tip logistic. Aceasta va fi utilizat pentru generarea unei secvene de bii care va fi folosit pentru mascarea informaiei. Algoritmul de criptare implementat reprezint o metod de criptare simetric. Metoda va utiliza ca principiu de lucru obinerea condiiei iniiale i a numrului de iteraii care va fi aplicat funciei logistice pe baza cheii de lungime egal cu 128 de bii. 10.3.1. Descrierea algoritmului Algoritmul de criptare/decriptare al acestui sistem de protecie a informaiei implic efectuarea urmtorilor pai: 1. Pentru implementarea sistemului dinamic se poate utiliza ecuaia logistic, definit prin relaia: (10.6) 2. Cheia utilizat va fi format din blocuri de cte 8 bii, iar pentru o manipulare mai uoar, n cadrul simulrilor, se pot alege 16 caractere alfanumerice. Din acest set de chei se va folosi n procesul de criptare cte o cheie de sesiune de opt bii, aleator aleas din cele 16 posibile.
K = K1 K 2 ...K16

xn+1 = rxn (1 xn )

3.Pentru procesul de criptare/decriptare, textul clar i textul criptat vor fi mprite n blocuri de cte 8 bii. P = P P2 ...Pi ... textul clar 1

C = C1C2 ...Ci ... textul criptat

4. Pentru sistemul dinamic ales, se vor calcula condiia iniial i numrul de iteraii, pe baza cheii utilizate. Pentru nceput se vor calcula dou valori iniiale Xs i Ns, valori ce depind n mod direct de cheia privat aleas prin relaiile 10.7 i 10.8.
Xs =

(( K )

1 2

( K 2 ) 2 ( K 3 )2 ... ( K16 )2 )

10

256 N s = ( K1 + K 2 + K 3 + ... + K16 ) mod 256

(10.7) (10.8)

483

unde K n reprezint valoarea blocului de cheie cu indicele n , exprimarea n binar a acestuia, respectiv

( )10

( K n )2

valoarea n zecimal, iar

reprezint operaia XOR pe bii. 5. La pasul urmtor, se alege aleator o alt cheie de sesiune din cele 16 definite la nceput ( K a , 1 a 16 ), cheie care va fi utilizat pentru modificarea valorilor lui Xs i a numrului de iteraii Ns pe baza relaiilor.
K X = X s + a mod 1 256

N = N s + Ka

(10.9)

Valoarea obinut pentru X va fi utilizat drept condiie iniial n iterarea de N ori a ecuaiei logistice. 6. Valoarea final, Xnew, obinut prin iterarea de N ori a funciei logistice plecnd de la condiia iniial X, va fi utilizat pentru obinerea blocului de text criptat/decriptat dup urmtoarele reguli (10.10) i (10.11). Criptare (10.10) Ci = ( Pi + [ X new 256 ]) mod 256 Decriptare (11.11) unde Pi i Ci sunt valorile zecimale ale blocului i, care este criptat/decriptat, iar [ ] reprezint partea ntreag a valorii respective. Pentru criptarea/decriptarea urmtorului bloc de text clar/criptat se vor considera drept valori iniiale Xs i Ns, valorile lui Xnew (valoarea final a funciei logistice obinut n urma celor N iteraii) i Ci-1 (valoarea blocului de text criptat prelucrat anterior). n felul acesta, se realizeaz un mecanism de tip feedback. 10.3.2. Implementare global a sistemului n aplicaia de fa s-a realizat implementarea unui sistem de securizare a datelor transmise ntre dou sisteme de comunicaie. S-a urmrit obinerea unei viteze mari de comunicaie a datelor, ocuparea ct mai mic a resurselor hardware pe structura de tip FPGA i un consum mic pentru aplicaiile mobile. Aplicaia dezvoltat presupune utilizarea att a modulelor de comunicaie serial cu sursa de date prezentnd aspecte legate de evitarea unei recepionri eronate, preluarea, stocarea i interpretarea datelor dar i aspecte legate de calculul cheii de sesiune i utilizarea acesteia pentru a realiza o criptare a datelor ce vor fi transmise pe interfaa proiectat pentru conectarea a dou sisteme.
484
Pi = ( Ci + 256 [ X new 256 ]) mod 256

Comunicaie serial ntre PC i sistemul de dezvoltare Altium Live Design pe magistrala RS232

Protocol de comunicaie ntre sisteme

Fig. 10.21. Prezentare general a sistemului Sistemul a fost realizat utiliznd limbajul de descriere hardware VHDL i a fost implementat pe sistemul de dezvoltare care are la baz o structur reconfigurabil FPGA de tipul XILINX SPARTAN 3. Programele au fost realizate utiliznd cod VHDL, diagrame FSM i descrieri schematice. Entitatea general a sistemului proiectat prezint porturile din figura 10.22.

485

U1
Reset data_interf_in(7:0) clk1 data_interf_out(7:0) bussy rdy_interf RxD TxD

tot

Fig. 10.22. Entitatea sistemului de criptare/decriptare Din figura de mai sus se pot observa urmtoarele semnale: reset reprezint semnalul de reset al sistemului; clk1 semnalul de ceas al sistemului provenit din divizarea semnalului de ceas al plcii; bussy, rdy semnale ce asigur protocolul de comunicaie ntre dou module de securizare a datelor; data_interf_in, data_interf_out magistralele de date. Componentele sistemului sunt urmtoarele : clk_div realizeaz divizarea n frecven a semnalului de ceas al plcii obinndu-se o frecven de 12.5 MHz din 50 MHz; filtrare elimin eventualele erori aprute pe magistrala serial de tip RS232; receptie_fsm asigur recepia pachetelor de date de la sistemul care transmite datele in clar; transmisie_fsm realizeaz transmiterea pachetelor de date de la sistemul de criptare/decriptare care recepioneaz datele n clar; insert_key realizeaz memorarea chei de criptare/decriptare i asigur cheile de sesiune pentru celelalte blocuri; bloc_interfa - asigur protocolul de comunicaie dintre cele dou sisteme i logica de control a fiecrui sistem; criptare_data calculeaz parametrii funciei logistice i funcia logistic.

Comunicaia ntre modulul care furnizeaz informaia n clar i sistemul dezvoltat se realizeaz pe o magistral serial de tipul RS232 dup protocolul din figura 10.23.

486

Fig. 10.23. Formatul pachetelor pentru standardul RS232 Caracteristicile respectate pentru asigurarea standardului RS232 sunt urmtoarele: interfaa permite comunicaia serial bidirecional; n cazul transmisiei seriale asincrone, sincronizarea ntre unitatea emitent i cea receptoare se realizeaz la nceputul fiecrui caracter prin bitul de start (0 logic), n repaus linia este n 1 logic; citirea datelor se face secvenial, la jumtatea intervalelor de bit care urmeaz bitului de start; protocolul asigur citirea corect a datelor chiar i n cazul n care exist mici diferene (sub 2%) ntre frecvena de emisie i cea de citire a datelor; la sfritul grupului de date se gsesc un bit pentru paritate i 1-2 bii de stop. Sistemul dezvoltat funcioneaz astfel: - cheia utilizat n procesul de criptare/decriptare i textul sunt mprite n blocuri de cte 8 bii i trimise pe magistrala serial a modulului care opereaz cu datele n clar; - blocul de recepie (receptie_fsm) recepioneaz aceste pachete; - primele 16 blocuri sunt memorate n registrul destinat cheilor de sesiune (insert_key); - dup ce cheia este memorat se poate ncepe procesul de criptare/decriptare (criptare_data). - dac se recepioneaz un bloc de 8 bii de la modulul cu datele nesecurizate, este activat semnalul rx_done i nseamn c se va realiza operaia de criptare. Activarea lui rx_done determin preluarea datelor de la intrarea data_rx a blocului bloc_interfata i activarea semnalului bussy. n partea cealalt, activarea semnalului bussy indic faptul c va avea loc o operaie de decriptare. Datele sunt preluate de pe magistral de date dintre cele 2 sisteme, blocul de date este decriptat, urmnd s se activeze i modulul de transmisie serial i semnalul rdy.

487

10.3.3 Proiectarea i implementarea modulelor Blocul clk _div


U10
clk1 clk

clk_div

Fig. 10.24. Entitatea clk_div


Semnal clk1 clk Dimensiune 1 1 Sens in in Descriere Semnalul de ceas al sistemului (50 MHz) Semnalul de ceas (12.5 MHz) al sistemului provenit din divizarea semnalului de ceas de 50 MHz

Blocul clk_div are rolul de a realiza divizarea semnalului de ceas al sistemului de securizare a datelor. Acest lucru este necesar pentru a se putea obine viteza de comunicaie de 4800 bps pentru modulele de transmisie i recepie serial. Divizarea cu doi se obine utiliznd urmtoarea secven de cod VHDL :
process(clk1) variable i:integer range 0 to 7:=0; variable clk_t:std_logic:='0'; begin if (clk1'event)and clk1='1' then if (i=2) then clk_t:= not clk_t; i:=0; end if; i:=i+1; end if; clk <= clk_t; end process;

Fig. 10.5. Diagrama de semnale rezultat n urma simulrii blocului clk_div (clk1=50MHz)
488

Blocul receptie_fsm
U5
reset clk Rxd data_out(7:0) rx_done

receptie_fsm

Fig. 10.26. Entitatea receptie_fsm


Semnal reset clk RxD data_out rx_done Dimensiune 1 1 1 8 1 Sens in in in out out Descriere Semnalul de reset Semnalul de ceas (12.5 MHz) Linia de recepie de la magistrala serial RS232 Grupul de date recepionat Semnal care indic recepia unui grup de date

Blocul receptie_fsm este utilizat pentru recepia serial a datelor primite de la calculator. Modulul este prevzut cu semnal de reset general, un semnal de ceas, o intrare pe un bit pe care sunt preluate serial date de la calculator, o ieire de date i o ieire care indic recepionarea unui pachet de date. Recepia se face la o vitez de comunicaie de 4800 bps. Pentru a realiza recepia la aceast vitez se folosete un contor care este incrementat pn la valoarea de 2604. Un alt contor va numra biii din pachetul de date. Recepia ncepe atunci cnd pe intrarea RxD apare un eveniment de tip start (RxD=0). Atta timp ct are loc o recepie semnalul rx_done, care indic terminarea recepiei unui octet este dezactivat ( rx_done=0). Citirea datelor se face la jumtatea duratei unui bit, n felul acesta ncercndu-se eliminarea eventualelor erori care pot s apar n transmisia datelor de la calculator spre sistem. n prima faz a algoritmului contorul utilizat n stabilirea vitezei de comunicaie este incrementat pn la valoarea 1354. Se citete simbolul aflat pe intrarea RxD, se memoreaz pe poziia corespunztoare ntr-un registru, contorul responsabil cu numrarea biilor din pachet este incrementat, apoi este incrementat i contorul utilizat n stabilirea vitezei de comunicaie pn la valoarea 2604.

489

Fig. 10.27. Organigrama blocului receptie_fsm

490

Se repet acest procedeu pn la recepionarea ntregului grup de date. La terminarea recepiei este activat semnalul rx_done (rx_done=1).

Fig. 10.28. Diagrama de semnale rezultat n urma simulrii blocului receptie_fsm Not: Pentru a putea realiza simularea s-a folosit o valoare de 10 ori mai mic a contorului ce stabilete viteza de comunicaie Blocul filtrare

U1
a clk b

filtrare

Fig. 10.29. Entitatea filtare


Sens in out in Descriere Semnal de intrare Semnal de iesire Semnalul de ceas (12.5 MHz) al sistemului

Semnal a b clk

Dimensiune 1 1 1

Blocul filtrare este utilizat pentru eliminarea erorilor care pot s apar n comunicaia serial (semnale parazite pe linia de comunicaie). Acesta este prevzut cu o intrare de date, o ieire de date i un semnal de ceas. Circuitul funcioneaz sincron n funcie de semnalul de ceas al sistemului. Pentru realizare este utilizat un contor care este incrementat ncepnd de la valoarea 0 pn la valoarea 255. Dac pe durata a 256 de

491

perioade de ceas valoarea intrrii a nu se modific atunci a fost recepionat un simbol valid, iar valoarea respectiv este oferit pe ieirea b.

Fig. 10.31. Organigrama blocului filtrare Implementarea n VHDL este urmtoarea :


process (clk) variable Qint: integer range 0 to 255; variable val_veche: std_logic; begin if (CLK'event and CLK='1') then if ((a='1' and val_veche='0') val_veche='1')) then Qint:=0;

or

(a='0'and

492

val_veche:=a; else Qint:=Qint+1; if (Qint=255) THEN b <=a; end if; end if; end if; end process;

Fig. 10.30. Diagrama de semnale rezultat n urma simulrii blocului filtare

Blocul transmisie_fsm
U2
clk reset data_out start_tx tx_done data_in(7:0)

transmisie_fsm
Semnal clk reset data_out start_tx tx_done data_in Dimensiune 1 1 1 1 1 8

Fig. 10.32. Entitatea transmisie_fsm


Sens in in out in out in Descriere Semnalul de ceas (12.5 MHz) al sistemului Semnalul de reset al sistemului Linia de transmisie de la magistrala serial RS232 Semnal utilizat la activarea modulului Semnal care indic transmiterea unui pachet de date ctre calculator Data care va fi transmis pe magistrala serial

Blocul transmisie_fsm este utilizat pentru transmiterea serial a datelor ctre calculator. Modulul este prevzut cu semnal de start, utilizat pentru nceperea unei noi transmisii, un semnal tx_done care indic
493

terminarea transmisiei, o intrare de date de unde este preluat octetul care va fi transmis, un semnal de ceas i un semnal de reset general. Transmisia se face la o vitez de comunicaie de 4800 bps. Pentru a realiza transmisia la aceasta vitez se folosete un contor care este incrementat pn la valoarea 2604. Mai este utilizat un alt contor pentru a numra biii din pachetul de date.

Fig.10.33. Organigrama blocului transmisie_fsm

494

Pentru nceperea unei noi transmisii este necesar activarea semnalului de start (start_tx=1). Att timp ct are loc o transmisie semnalul tx_done, care indic terminarea transmisiei unui octet este dezactivat (tx_done=0). Dup activarea semnalului start ncepe s fie incrementat contorul utilizat pentru stabilirea vitezei de comunicaie. Cnd acesta ajunge la valoarea 2604 pe ieirea TxD este transmis bitul din octet corespunztor contorului pentru numrarea biilor. Dup transmiterea bitului contorul utilizat n setarea vitezei de comunicaie este setat n 0. Se repet acest procedeu pn cnd se transmit toi biii din pachet (contor=9). La sfritul transmisiei ieirea tx_done este setat n 1.

Fig. 10.34. Diagrama de semnale rezultat n urma simulrii blocului transmisie_fsm (data_in = E6 i data_in = A5)

Observaie: Pentru a putea realiza simularea s-a folosit o valoare de 10 ori mai mic a contorului ce stabilete viteza de comunicaie

495

Blocul insert_key
U8
reset key1(7:0)

data_in(7:0) key10(7:0) rx_done key11(7:0) key12(7:0) key13(7:0) key14(7:0) key15(7:0) key16(7:0) key2(7:0) key3(7:0) key4(7:0) key5(7:0) key6(7:0) key7(7:0) key8(7:0) key9(7:0) key_ok

insert_key
Semnal Reset Clk data_in rx_done keyi, i=0..15 key_ok Dimensiune 1 1 8 1 8 1 Sens in in in in out out

Fig. 10.34. Entitatea insert_key


Descriere Semnalul de reset al sistemului Semnalul de ceas (12.5 MHz) al sistemului Datele de intrare Semnal ce indic recepionarea unui pachet de date de 8 bii Cheile de sesiune Semnal ce indic prin trecerea sa n 0 memorarea cheilor de sesiune

Blocul insert_key este utilizat pentru memorarea cheilor de sesiune utilizate n procesul de criptare/decriptare. Modulul este un registru care memoreaz datele aprute pe intrarea data_in n urma activrii semnalului de pe intrarea rx_done, aceasta din urm indicnd recepionarea unui pachet de 8 bii de date de la calculator.
496

Dup ce au fost memorate cele 16 chei de sesiune este activat semnalul key_ok (key_ok=0). Implementarea n VHDL a fost fcut utiliznd instruciunea case, astfel :
process(reset, rx_done) variable key_ok_temp:std_logic; variable i:integer range 0 to 15; begin if (reset ='0') then key_ok_temp := '1'; i:=0; elsif (rx_done'event and rx_done='1') then if key_ok_temp='1' then case i is when 0 => key1<=data_in; when 1 => key2<=data_in; when 2 => key3<=data_in; when 3 => key4<=data_in; when 4 => key5<=data_in; when 5 => key6<=data_in; when 6 => key7<=data_in; when 7 => key8<=data_in; when 8 => key9<=data_in; when 9 => key10<=data_in; when 10 => key11<=data_in; when 11 => key12<=data_in; when 12 => key13<=data_in; when 13 => key14<=data_in; when 14 => key15<=data_in; when 15 => key16<=data_in; key_ok_temp:='0'; when others => null; end case; i:= i+1; end if; end if; key_ok<=key_ok_temp; end process;

497

Fig. 10.35. Diagrama de semnale rezultat n urma simulrii blocului insert_key Blocul criptare_data
U3
key1(7:0) key10(7:0) key11(7:0) key12(7:0) key13(7:0) key14(7:0) key15(7:0) key16(7:0) key2(7:0) key3(7:0) key4(7:0) key5(7:0) key6(7:0) key7(7:0) key8(7:0) key9(7:0) data_out(7:0) data_in(7:0) cript_done start activare clk

Fig. 10.37. Entitatea criptare_data

criptare_data

498

Semnal clk activare keyi, i=1..15 data_out data_in cript_done start

Dimensiune 1 1 8 8 8 1 1

Sens in in in out in out in

Descriere Semnalul de ceas (12.5 MHz) al sistemului Semnal utilizat pentru activarea simultan a blocurilor ce compun modulul criptare_data Cheile de sesiune Date de intrare Date de ieire Semnal ce indic terminarea operaiei de criptare/decriptare Semnal utilizat pentru a da startul operaiei de criptare

Modulul lucreaz sincron n funcie de semnalul de ceas al sistemului i are ca intrri i ieiri: - cele aisprezece chei de sesiune utilizate n calcularea parametrilor funciei logistice; - o intrare de date (unde se gsete blocul criptat la pasul anterior al algoritmului); - dou semnale (activare i start) utilizate pentru activarea modulelor ce compun blocul criptare_data; - data_cript_out unde se depune rezultatul funciei logistice; - cript_done, semnal se indic terminarea operaiei de criptare. Blocul criptare_data are urmtoarele componente : Calcxsns calculeaz condiia iniial (Xs) i numrul de iteraii (Ns) conform pasului (4) al algoritmului; Random_key_selector este un multiplexor 16:1, avnd rolul de a selecta una din cheile de sesiune; Switch_fsm preia condiia iniial i numrul de iteraii de la pasul anterior i le actualizeaz pentru pasul curent al algoritmului; Calculxn are rolul de a calcula condiia iniial i numrul de iterrii, necesare n determinarea funciei logistice; Logistica_fsm calculeaz valoarea funciei logistice; Cript are rolul de a furniza semnalul de selecie a cheii de sesiune i de actualiza numrul de iteraii utilizat n criptarea/decriptarea urmtorului bloc de text.

499

Blocul calcxsns

U1
k1(7:0) k2(7:0) k3(7:0) k4(7:0) k5(7:0) k6(7:0) k7(7:0) k8(7:0) xs(31:0) k9(7:0) k10(7:0) k11(7:0) k12(7:0) k13(7:0) k14(7:0) k15(7:0) k16(7:0) ns(7:0)

Fig. 10.38. Entitatea calcXsNs


CalcXsNs
Semnal keyi, i=1..15 ns xs Dimensiune 8 8 32 Sens in out out Descriere Cheile de sesiune Numrul de iteraii utilizat la primul pas al algoritmului de criptare/decriptare Condiia iniial utilizat la primul pas al algoritmului de criptare/decriptare

Blocul calcxsns calculeaz condiia iniial (xs) i numrul de iteraii (ns) conform pasului 4) al algoritmului de criptare. Aceti parametrii sunt utilizai la determinarea funciei logistice i sunt calculai pe baza celor 16 chei de sesiune, astfel :
xs <= (k1 xor k2 xor k3 xor k4 xor k5 xor k6 xor k7 xor k8 xor k9 xor k10 xor k11 xor k12 xor k13 xor k14 xor k15 xor k16)& x"0000000"; ns <= k1 + k2 + k3 + k4 + k5 + k6 + k7 + k8 + k9 + k10 + k11 + k12 + k13 + k14 + k15 + k16;

500

Entitatea are ca intrri cele 16 chei de sesiune i ca ieiri xs i ns. Cheile i ns sunt semnalele de dimensiune 8 bii, iar xs are o dimensiune de 32 de bii. Blocul funcioneaz asincron. Cheile de sesiune provin de la blocul insert_key care are rolul de a memora cheia iniial introdus pentru procesul de criptare/decriptare.
U2
key1(7:0) key2(7:0) key3(7:0) key4(7:0) key5(7:0) key6(7:0) key7(7:0) key8(7:0) key9(7:0) randomkey(7:0) key10(7:0) key11(7:0) key12(7:0) key13(7:0) key14(7:0) key15(7:0) key16(7:0) selectie(3:0)

Fig. 10.39. Diagrama de semnale rezultat n urma simulrii blocului calcXsNs

random_key_selector

Fig.10.40. Entitatea random_key_selector

501

Blocul random_key_selector Blocul randon_key_selector este un multiplexor 16:1, avnd rolul de a selecta una din intrri i de a depune la ieire valoarea gsit pe intrarea selectat. Selecia se face n funcie de semnalul selecie, care este pe 4 bii. Ca i la blocul calcxsns cheile de sesiune provin de la modulul insert_key care are rolul de a memora i furniza celorlalte entiti din proiect cheia de criptare/decriptare.
Semnal keyi, i=1..15 randomkey selectie Dimensiune 8 8 4 Sens in out in Descriere Cheile de sesiune Cheia de sesiune determinat n funcie de semnalul de selecie Semnalul de selecie

Implementarea modului care s realizeze operaia de multiplexare a fost fcut utiliznd instruciunea with, astfel :
with selectie select randomkey <= key1 when "0000", key2 when "0001", key3 when "0010", key4 when "0011", key5 when "0100", key6 when "0101", key7 when "0110", key8 when "0111", key9 when "1000", key10 when "1001", key11 when "1010", key12 when "1011", key13 when "1100", key14 when "1101", key15 when "1110", key16 when others;

502

Fig.10.41. Diagrama de semnal rezultat n urma simulrii blocului random_key_selector Blocul switch_fsm
U3
start Ns(7:0) Nsout(7:0)

Fig. 10.42. Entitatea switch_fsm

Xs(31:0) Xsout(31:0) CLK Xnew(31:0) Ci(7:0) activare

switch_fsm

Semnal start Ns Xs clk activare Nsout Xsout Xnew Ci

Dimensiune 1 8 8 1 1 8 32 32 8

Sens in in in in in out out in in

Descriere Semnal de start Numrul de iteraii obinut la pasul 1 al algoritmului Condiia iniial obinut la pasul 1 al algoritmului Semnalul de ceas (12.5 MHz) al sistemului Semnal de activare Numrul de iteraii utilizat n criptarea/decriptarea datelor Condiia iniial utilizat n criptarea/decriptarea datelor Condiia iniial utilizat n criptarea/decriptarea urmtorului bloc Numrul de iteraii utilizat n criptarea/decriptarea urmtorului bloc 503

Blocul switch_fsm preia condiia iniial i numrul de iteraii de la pasul anterior i le actualizeaz pentru pasul curent al algoritmului de criptare/decriptare.

Fig. 10.42. Organigrama blocului switch_fsm Activarea acestui bloc are loc la trecerea semnalului activare n 1, iar activarea semnalului start (start=0) duce la calcularea condiiei iniiale i a numrului de iteraii. Blocul funcioneaz sincron n funcie de semnalul de ceas al sistemului (clk).

504

Blocul calculxn

U4
Nd(7:0) Xd(31:0) N(7:0) X(31:0)

k(7:0)

Fig. 10.43. Entitatea calculxn

clk

calculxn
Semnal Nd Xd k N X Dimensiune 8 32 8 8 32 Sens in in in out out Descriere Numrul de iteraii Condiia iniial Cheia de sesiune selectat Numrul de iteraii actualizat (conform pasului 5 din algoritm ) Condiia iniial actualizat (conform pasului 5 din algoritm )

Blocul calculxn are rolul de a calcula condiia iniial i numrul de iteraii, necesare n determinarea funciei logistice i funcioneaz asincron. Aceti parametrii sunt calculai pe baza valorilor primite de la blocul switch_fsm (Nd i Xd) i random_key_selector (randomkey) astfel :
krshiftat <= k & x"000000"; X <= Xd + krshiftat; N <= K+Nd;

Fig. 10.44. Diagrama de semnale rezultat n urma simulrii blocului calcxn

505

Blocul logistica_fsm

U9
start n_iter(7:0) val_init(31:0) log_cript(7:0) ocupat

Fig. 10.45. Entitatea logistica_fsm


clk activare

log_out(31:0)

logistica_fsm
Semnal start n_iter val_int clk activare ocupat log_cript log_out Dimensiune 1 8 32 1 1 1 8 32 Sens in in in in in out out out Descriere Semnal de start Numrul de iteraii Condiia iniial Semnalul de ceas (12.5 MHz) al sistemului Semnal de activare Semnal activ n timpul calculrii funciei logistice Rezultatul funciei logistice Condiia iniial utilizat n criptarea/decriptarea urmtorului bloc de text

Blocul logistica_fsm este blocul care calculeaz efectiv funcia logistic, avnd ca parametri de intrare condiia iniial i numrul de iteraii. Modulul funcioneaz sincron n funcie de semnalul de ceas al sistemului (clk), se activeaz o dat cu activarea semnalului activare (activare=1) i calculeaz funcia logistic dac semnalul start este activat (start=1). Atta timp ct se calculeaz funcia logistic este activat semnalul ocupat. Acest lucru este necesar pentru a nu se da o nou comand de calculare a funciei logistice.

506

Fig. 10.46. Organigrama blocului logistica_fsm Valorile parametrilor de intrare sunt valori dinamice, care se modific la criptarea fiecrui bloc de text clar. Rezultatul funciei logistice log_cript reprezint de fapt cheia de sesiune cu ajutorul creia se va masca textul clar. Secvena binar generat n procesul de criptare este identic cu cea generat n procesul de decriptare pentru acelai pas al algoritmului.
507

Blocul cript
cript
clk activare Ci(7:0) Xnew(7:0)

Fig. 10.47. Entitatea cript

c_sel(3:0)

U5
Semnal Ci c_sel activare Xnew Dimensiune 8 4 1 8 Sens out out in in Descriere Condiia iniial utilizat n determinarea funciei logistice pentru criptarea/decriptarea urmtorului bloc de text Semnal de selecie al cheii de sesiune Semnal de activare Rezultatul obinut n urma criptrii/decriptrii blocului anterior de text

Blocul cript are rolul de a furniza semnalul de selecie a cheii de sesiune i de a actualiza numrul de iteraii utilizat n criptarea/decriptarea urmtorului bloc de text. Aceti parametrii sunt determinai pe baza rezultatului obinut n urma calculrii funciei logistice pentru blocul anterior de text. Blocul cript funcioneaz sincron n funcie de semnalul de ceas al sistemului i se activeaz cu ajutorul semnalului activare.

Fig. 10.48. Organigrama blocului logistica_fsm

508

Blocul bloc_interfata

U2
CLK reset start_cript rx_done data_rx(7:0) cript_done data_cript_out(7:0) data_cript_in(7:0)

Fig. 10.49. Entitatea bloc_interfata

start_tx tx_done data_tx(7:0)

data_interf_out(7:0) data_interf_in(7:0) rdy bussy

bloc_interfata

Semnal clk reset rx_done data_rx start_tx tx_done data_tx start_cript cript_done data_cript_out data_cript_in data_interf_out data_interf_in rdy bussy

Dimens. 1 1 1 8 1 1 8 1 1 8 8 8 8 1 1

Sens in in in in out in out out in out in out in in out

Descriere Semnalul de ceas (12.5 MHz) al sistemului Semnalul de reset al sistemului Semnal care indic recepia unui pachet de date de la calculator Date recepionate de la calculator Semnal ce determina activarea modulului ce realizeaz transmisia serial Semnal care indic transmiterea unui pachet de date ctre calculator Date ce urmeaz s fie trimise Semnal ce determin calcularea parametrilor funciei logistice i a funciei logistice Semnal ce indic terminarea operaie de criptare/decriptare Date obinute n urma criptrii/decriptrii blocului anterior de text Date utilizate n criptarea blocului curent de text Magistrala pe care se transmit datele Magistrala pe care se recepioneaz datele de la cellalt sistem Semnale utilizate n cadrul protocolului de comunicaie ntre cele dou sisteme

Blocul bloc_interfata are rolul de a asigura protocolul de comunicaie ntre cele dou sisteme (ntre sistemul care efectueaz operaia de criptare i cel care efectueaz operaia de decriptare) dar i rolul de a asigura logica de control a sistemului. Protocolul de comunicaie este realizat cu ajutorul semnalelor rdy i bussy.

509

Modulul lucreaz sincron cu semnalul de ceas al sistemului (clk) i este resetat la activarea semnalului de reset general. Acesta mai prezint o intrare i o ieire de date pentru comunicaia ntre cele dou sisteme. Comunicaia este de tipul half duplex i se realizeaz astfel: 1. Dac se recepioneaz un pachet de date de la calculator (avem eveniment pe rx_done), se va efectua operaia de criptare, ieirea bussy este trecut n 0 (iniial ieirea bussy are valoare 1) i ieirea start_cript este trecut n 1. Setarea semnalului start n 1 determin nceperea calculrii parametrilor funciei logistice i a funciei logistice simultan cu preluarea pachetului de date de la modulul de recepie, n felul acesta economisindu-se timp. Dup activarea celor dou semnale se efectueaz mascarea datelor pe baza funciei logistice (data_cript_in) iar rezultatul este oferit la ieirea data_interf_out. La final ieirea bussy este setat n 1. Dup ce datele recepionate au fost criptate i trimise se reia procedeul pentru preluarea i criptarea urmtorului bloc de date;

Fig. 10.50. Diagrama de semnal rezultat n urma simulrii blocului bloc_interfata (criptare )
510

Fig. 10.51. Diagrama de semnal rezultat n urma simulrii blocului bloc_interfata (decriptare )

2. n cazul n care se recepioneaz un bloc criptat, se va efectua operaia de decriptare, se activeaz semnalul start_cript ( pentru a se ncepe calcularea parametrilor funciei logistice i a funciei logistice). Dac intrarea rdy este 1 (nseamn ca poate fi preluat pachetul de date criptat) se efectueaz operaia de sau exclusiv ntre datele preluate de la intrarea data_interf_in i rezultatul funciei logistice (data_cript_in). n continuare este activat semnalul start_tx, ceea ce este echivalent cu nceperea transmisiei pachetului decriptat ctre calculator. Dup ce pachetul decriptat a fost trimis ctre calculator se reia procedeul pentru preluarea i decriptarea urmtorului pachet de date.

Fig. 10.52. Organigrama blocului bloc_interfata


511

Blocul afisare
U3
data_in(7:0) seg1(6:0) seg2(6:0)

afisare
Semnal Data_in Seg1 Seg2 Dimensiune 8 6 6 Sens in out out

Fig.10.53. Entitatea afisare


Descriere Datele ce urmeaz s fie afiate Date corespunztoare segmentului 1 Date corespunztoare segmentului 2

Blocul afisare este utilizat pentru a afia pe segmentele sistemului de dezvoltare Altium Live Design datele semnificative ce intervin n procesul de criptare/decriptare (condiia iniial, numrul de iteraii, data criptat etc.). Modulul afiare este realizat prin translatarea din binar n apte segmente. Codificarea din binar n apte segmente se realizeaz simplu, printr-o specificaie concurent de tip with select. Codul VHDL este urmtorul :
process(data_in) variable temporar:std_logic_vector(6 downto 0); begin case data_in(3 downto 0) is when "0000" => temporar :="0111111"; when "0001" => temporar :="0000110"; when "0010" => temporar :="1011011"; when "0011" => temporar :="1001111"; when "0100" => temporar :="1100110"; when "0101" => temporar :="1101101"; when "0110" => temporar :="1111101"; when "0111" => temporar :="0000111"; when "1000" => temporar :="1111111"; when "1001" => temporar :="1101111"; when "1010" => temporar :="1110111"; when "1011" => temporar :="1111100"; when "1100" => temporar :="0111001"; when "1101" => temporar :="1110011"; when "1110" => temporar :="1111001"; when "1111" => temporar :="1110001"; when others => null; end case; seg2 <= temporar;
512

case data_in(7 downto 4) is when "0000" => temporar :="0111111"; when "0001" => temporar :="0000110"; when "0010" => temporar :="1011011"; when "0011" => temporar :="1001111"; when "0100" => temporar :="1100110"; when "0101" => temporar :="1101101"; when "0110" => temporar :="1111101"; when "0111" => temporar :="0000111"; when "1000" => temporar :="1111111"; when "1001" => temporar :="1101111"; when "1010" => temporar :="1110111"; when "1011" => temporar :="1111100"; when "1100" => temporar :="0111001"; when "1101" => temporar :="1110011"; when "1110" => temporar :="1111001"; when "1111" => temporar :="1110001"; when others => null; end case; seg1 <= temporar; end process;

513

BIBLIOGRAFIE [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] MATEESCU, AD. .a., Prelucrarea Numeric a Semnalelor, Ed.Tehnic, Bucureti, 1997 POP E., .a., Metode n prelucrarea numeric a semnalelor, Ed. FACLA, Timioara,1989 MATEESCU, A . .a., Semnale i sisteme , Ed.TEORA, Buc., 2001 STANOMIR, D.,Semnale i sisteme discrete, Ed. Athena, 1997 NAFORNI, I., Semnale,Circuite i Sisteme, Partea I, CMPEANU, A. i Univ."Politehnica",Timioara, 1995 LZRESCU, V., Prelucrarea Digital a Semnalelor, Ed.Amco Press, Bucureti, 1994. GRIGORA,V. ,Prelucrarea Numeric a Semnalelor, TRNICERIU, D., Partea I, II, Ed.Gh.Asachi, Iai, 1995 TRNICERIU, D., Bazele prelucrrii numerice ale semnalelor Ed. Vasiliana, Iai, 2001 CIOCHIN, S., Prelucrarea Numeric a Semnalelor, Partea I, Univ. Politehnica Bucureti, 1995 ZACIU, R. , Prelucrarea digital a semnalelor, Ed. Albastr, ClujNapoca, 2003 ERBNESCU, AL., Prelucrarea numerica a semnalelor, Lecii 1-4 Ed. ATM, Bucurreti, 1995-1996 QUINQUIS, A., ERBNESCU A, RDOI EMANUEL, Le traitement du signal sous MATLAB, Pratique et Applicatons, Ed. HERMES Science Pub. , Paris, 2000 BELLANGER, M., Traitement numerique du signal, Ed. Masson, Paris, 1981 OPPENHEIM, A.V., WILSKY,A.S, Signals and Systems, Prentice Hall, Inc. Englewood Clifs, N.J.,1985 LIM, J.S., OPPENHEIM, A.V., Advanced Topics in Signal Processing, Prentice Hall, Englewood Clifs, N.J.,1988 MITRA, S. K., KAISER,V, Handbook of Digital Signal Processing, John Wiley and Sons, N.Y., 1993. MITRA, S. K., Digital Signal Processing, A Computer based Approach, McGRAW-HILL, N.Y., 2001 J. Mirkownsky, M. Kapustka, EVITA enhaced VHDL with Appications, www.aldec.com Douglas L. Perry, VHDL Programming by Exmanple, Fourth
514

[19] [20] [21] [22] [23] [24] [25] [26] [27] [28]

Edition, McGraw Hill, 2002 Volnei A. Pedroni, Circuit Design with VHDL, MIT Press Cambrige, Massachusetts, 2004 U. Meyer, Digital Signal Processing with Field Programmable Gate Arrays, Springer, 2006 Steve Kilts, Advanced FPGA Design, Architecture, Implementation, and Optimization, IEEE, Wiley-INTERSCIENCE, 2007 Douglas J. Smith, HDL Chip Design Apractical guide for designing, Synthesizing and simulate ASICs and FPGAs using VHDL or VERILOG, Doone Publications, 1996 N.K. Pareek, Vinod Patidar, K.K. Sud, Cryptography using multiple one-dimensional chaotic maps, Physics Letters A 10, 2004 N.K. Pareek, Vinod Patidar, K.K. Sud, Discrete chaotic cryptography using external key, Physics Letters A309 Analog Devices, ADSP-218x DSP Instruction Set Reference, Analog Device inc., www.analog.com, 2004 Analog Devices, ADSP-2181 EZ-KIT Lite Evaluatioin System Manual, Device inc., www.analog.com, 2003 Amy Mar, Digital Signal Processing Application Using the ADSP 2100 Family, Vol. II, Pretince Hall, Englewood Cliffs, www.analog.com, 2006 Analog Devices, Digital Signal Processing Application Using the ADSP 2100 Family, Vol. I, www.analog.com, 1990

515