Professional Documents
Culture Documents
Oroian Teofil
CUPRINS
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.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
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:
(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
xa (t ) =
(1.6)
sau : 0 =
0 0 F = = 2 0 = 2 F0 = 0 1/ T Fe Fe
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
(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:
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:
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)
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
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
(1.12)
de exemplu:
x[n] ... -6 -5 -4 -3 -2 -1 1 0 1 2 3 4 5 6 7 8 ... n
3, n = 2 astfel c: 3 [n 2] = -4 0, n rest
1 3[n-2]
x[n] a0 a1 -4 -3 -2 -1 0 1 a2 a2[n-2] a3 2 3 a4 4 4
(1.14)
10
(1.15)
e 0 n (cu 0 < 1 )
1 -4 -3 -2 -1 0 1 2 3 4 5 6 n
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
k [n] = e jk n = e
0
jk
2 n N
k = 0,1,2,3,...
(1.17)
N [ n] = e
jN
2 n N
= e j 2n = e j 2
=1 = 0
(1.18)
(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
(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)
} {
(1.22)
unde: g [n + m] g n + m = 0, (n + m ) > L .
EXEMPLU: Calculul corelaiei ntre secvenele d = {d 0 , d1 } i
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
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)
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
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 . 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,
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
} {
N valori
(1.25.a)
h = h[n], n = 0, L 1 = hn , n = 0, L 1
} {
L valori
(1.25.b)
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
z-1
h1
z-1
h2
z-1
h3
yn
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
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)
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:
(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] =
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)
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[n] = ck e
k =0
N 1
+ jk
2 n N
Sinteza secvenei~[n] x
jn
jn
.
+
1 e 2j
2 n N
ck e
k = N 2
N 2
jk
2 n N
rezult c: c1 =
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
x[n]e
n =0
N 1
jk
2 n N
k = 0 ,1
= c k e jkn = 1 e jn
k =0
sau
(1.34)
22
discret:
(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
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
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10=N 10=N
2
k
=k
ck
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
(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)
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
n consecin, Transformata Fourier in Timp Discret (TFTD) este definit de: x[n] = 1 2
X ( )e
2
+
jn
(1.41.a) (1.41.b)
X ( ) =
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
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
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
j 3
e j 1
e j 4 1 sin(2 ) = e j 1 sin( / 2)
|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
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)
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
iar c0 = c2 = 0
X ( )
-2
-/2
/2
2-0
2+0
x[n] =
k =
[n kN ] =
N[n]
[ n]
2N
3N
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
k =
... 20 30 40
1.13. Transformata Fourier discret (TFD) TFD se aplic unei secvene finite, care se periodizeaz cu perioada N
-5
-4
-3
-2
-1
1
~[n] x
... 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)
(1.47)
% 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)
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)
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
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)
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 ]
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
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
2 2 n = sin n = sin n N 8 4
34
2 4
2
1
0,125 0,25
0,5
n + 2 sin
/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
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;
G[0]
H[0]
G[1]
H[1]
G[0]
2 3 2
H[0]
37
G[0]
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
1 2
X ( )e
+
jn
d = F 1 { X ( )}
n =
x[n]e
j n
= F {x[n]}
(1.60)
x[n] = X [k ]e
k =0
N 1
jk
2 n N
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
TFD
x [n] X ( )
i i (i )
TFTD
i xi [n] i X i [k ]
(i )
TFD
(1.63.b)
(1.64.a)
X ( )
X [k ] (1.64.b)
Dac:
TFTD x[n] X ( )
39
atunci: e
2 jk 0 n N
(1.65)
TFD x[n] X [k k 0 ]
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)
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
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:
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]
Dac:
TFTD x[n] = X ( )
(1.70)
1 ( X P)( ) 2
(1.71)
Corelaia secvenelor
r12 [m] =
n =
x [ n] x [ n + m]
1 2
(1.72)
Dac:
(1.73)
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)
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
E x = x[n] =
2 (n)
1 2
X ( )
(1.77)
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
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]
(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
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
(1.83.b)
iar R+ = i seria (1.83.b) este absolut convergent n exteriorul unui cerc caracterizat de z =
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)
+
, 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)
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
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)
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)
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
TZ
i xi [ n] < > i X i ( z )
(i ) (i )
TZ
(1.99)
cu RdC = I Di
(i )
48
rezult c: (1.100)
X (z)
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)
rezult c:
x [ n ] < > X e
TZ
j0
z = X e
j ( 0 )
)
(1.101)
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
Dac :
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 )
TZ
TZ
X ( v )P v 2 j v
c
dv
(1.103)
{ 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
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 )
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
2 N
, se obine :
H [k ] = TFD {h[n]}
51
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 )
M M
X ( ) H 1 ( )
M M
h2 (t )
H 2 ( )
2 T0 2 T0
T0
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
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)
0,1245 1 0,5 e
jk
X [1] = 0,1689 ,
X [3] = 0, 089 .
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] =
(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] =
(1.3.6)
(1.3.7) (1.3.8)
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
1 2
X ( j ) e
j n
d .
(1.4.1)
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
(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
X ( z) =
+
1
n =
x [ n] z
(1.5.1)
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 ]
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)
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
61
x [ n] z n =
n =
a nu [ n ] z n = ( a z 1 ) =
n n=0
PROBLEMA P1.7
5 3 z 1 6 , X ( z) = 1 1 1 1 1 z 1 z 4 3 pentru z > 1 . 3
(1.7.1)
(1.7.2)
(1.7.3)
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
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
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 ) =
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)
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 ] ,
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
X 2 ( e j ) = X 12 ( e j )
k =
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 ,
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
) = 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
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)
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
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
10
15
30
35
40
2 Amplitudine
-1
10
15
20 25 Index temporal n
30
35
40
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.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
0.05
0.1
0.15
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
0.2
0.4
0.8
1.2 x 10
-5
50 amplitudine [V]
40
30
20
0.2
0.4
0.6
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));
78
10 amplitudine [V]
0 -0.5
-0.4
-0.3
-0.2
0.2
0.3
0.4
0.5
-0.4
-0.3
-0.2
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
79
10
20
30
60
70
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
10
20
30 n
40
50
60
70
Amplitudine (dB)
10 10 10
0.5
2.5
3.5
Faza (grade)
0 -5000 -10000
0.5
2.5
3.5
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
100
200
300
400
500
600
700
800
900
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]
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
40
40
20
20
0 -0.5
0.5
0 -0.5
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
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
20
30
40
50
85
20 spectru de amplitudine
15
10
0 -50
-40
-30
-20
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
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
0 10
0
50
0 10
0
50
0 10
0
20
40
60
80
100
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
50
20
40
60
80
100
20
40
60
80
100
50 frecventa (Hz)
100
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.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)
X ( ) =
x[n] = xa (nT )
X ( ) = xa (n )e jn
( n)
( n = )
x[n] e j n
(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{
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]
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)
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:
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
x [ r n0 ] =
r =0
n n0 r = n0
x [r ]
n n0 r =0
x [r ] = y [n n ]
0
n concluzie, dac :
(2.6)
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
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)
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
= 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)
y [ n] =
r =
x [ r ] h [ n r ] = x [ n l ] h ( l ) = h [ n] x [ n]
l =
(2.14)
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]
y[n]
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.
y[n]
h1[n]+h2[n]
y [ n] =
r =
h [r ] x [n r ]
103
r =
h [r ] x [n r ]
(2.17)
(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)
x [r ]u [n r ]
+
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
(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
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)
(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:
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)
SNLI
caracterizat de h[n]
la o
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
y [ n ] = h [ k ]x [ n k ]
k =0
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
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 ]
k =0
[n k ] = k =0 N { [n k ]} = k =0 h[n k ]
g [n] = k =0 h[n k ]
(2.25)
Cum :
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)
1 0,5
n
-2 -1 0 1 2 3 4 5
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
n
-3 -2 -1 0 1 2 3 4 5 6 7
(2.27)
y [ n ] = N { x [ n ]} = h [ n ] x [ n ] = =
+ +
r =
h [r ] x [n r ]
(2.28)
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
= h[k ] e j 0n e j0k
(k )
Astfel c :
y[n] = e j0n H e j0
( )
(2.29)
h[n]
n
-2 -1 0 1 2 3 4 5
} = h [ n] e
(n)
j
j n
= h[0] + h[1] e
= 1 + 0,5e
= e j0 n 1 + 0,5e j0
110
timp discret:
% x [ n ] = ck e
k =0 N 1
jn0k
(2.30)
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]
~
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
(2.33)
Dac nu toi ai
( i = 1, 2,..., N )
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
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 ] =
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)
113
n y1 [ n ] = Am zm m =1
(2.41)
a z
i =0 i
=0
(2.42)
diferene finite (2.32) i va corespunde unui anumit tip de secven x [ n ] aplicat la intrarea sistemului.
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 )
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)
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
x[n] = n u[n]
cu 0 < < 1
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
( )
de unde :
H e j
( ) = (1 + cos )
2
+ sin 2 = 2 + 2 cos
|H|2
4 2
3
2
Y (z ) =
1 1 1 X (z ) + z 1 X (z ) + z 1 Y (z ) 3 3 3
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)
(2.45)
Relaia intrare-ieire a unui SNLI poate fi apreciat i n domeniul frecven, conform relaiilor de pe figur:
SNLI h H
He
(2.46)
jFm{z}
+j
Plan complex z
Re{z}
-j
( ) 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
x[n]
z-1
0,5
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
(1 0,5cos ) + ( 0,5sin )
2
1 1, 25 cos
( ) = 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
|H(e )|
)=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
n figura de mai jos sunt reprezentate caracteristicile ideale de amplitudine i de faz ale unui difereniator analogic.
Figura 2.14
122
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
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
ideal
(e ) =
j
1 j
, <
(2.53)
x [ m] = L x [ 2] + x [ 1] + x [0] + x [1] + L + x [ n]
(2.54)
(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) =
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)
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)
(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
|H|
1
EXEMPLU: Un SNLI de tip trece jos are caracteristica de amplitudine din figura de mai jos:
HFTJ (
2
-2
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:
1 hFTS [ n ] = 2
3 2
2e
2
j n
d = K = ( 1) sinc
n
n
n
-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]
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
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 .
H 1 , rezult c:
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
(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
X3
133
bz-1 Y Y 1-bz-1 Y
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
iar: Tk = transmitana cii deschise ntre nod s i d k = determinantul sub-grafului neadiacent cii deschise k
135
a0=1
-1
z
b1 1 -a0
b0
z-1
b1 -a1
z-1
(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
z
h[0]
-1
z
h[1]
-1
...
h[2]
-1
h[M]
137
yn
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
(2.70)
b1
T
x(nT)
...
bM
y(nT)
T
-a1
T
-a2
-aN
Figura 2.20
138
...
T
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
1 -aN
...
T
z-1
-1
-1
-aM
-1
bM
Figura 2.23
140
H (z) =
b z a z
i =0 i i =0 N i
=
i
n acest caz:
b0 = 1 b1 = 0,1 b2 = 1
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
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
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
(2.73)
142
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
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)
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:
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
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)
(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:
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 ) ;
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)
(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)
(2.3.4)
H1 ( z ) =
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
(2.3.6)
148
(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 ( 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
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)
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,
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)
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
(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
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
b) Calculai transformata V ( z ) = Z {v [ n ]} ;
(2.8.1)
Rezolvare problema P2.8: a) Prin nmulirea lui x [ n ] cu e j n rezult semnalul v [ n ] egal cu (2.8.2)
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)
(2.8.5)
PROBLEMA P2.9
-3/2
-/2
/2
3/2
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)
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)
(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)
n,
+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
x[n]
v[n]
H (e H(e j))
j
w[ n ]
y[n]
ejn
Figura 2.11.1
ejn
-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)
(2.11.8)
Y ( e j ) 1
-3/2
-/2
/2 Figura 2.11.4
3/2
PROBLEMA P2.12
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 ( )
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
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] .
=
j n 2
e 2j
= e j n
sin
2 n
= ( 1) sinc
n
n. (2.13.1)
n = sinc
n.
(2.13.2)
w [ n ] = v [ n ] 2 [ n ] = sinc n [ n 2k ] , 2 k =
170
(2.13.3)
(2.13.4)
Figura 2.13.3
171
PROBLEMA P2.14
-3/2
-/2
/2 Figura 2.14.2
3/2
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)
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 ] .
= (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
(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)
h [ n ] . Aadar:
(2.14.9)
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 ]
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
176
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)
(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
(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)
(2.15.9)
178
Figura 2.15.3
PROBLEMA P2.16
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
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 )
(2.16.7)
(2.16.8)
(2.16.9)
PROBLEMA P2.17
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)
b) c:
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)
-3/2
-/2
/2 Figura 2.17.4
3/2
184
PROBLEMA P2.18
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)
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
H 2 ( e j ) = 0,5e j + e j 2 = e j ( 0,5 + e j ) .
2 2
Aadar:
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)
y [ n ] = y3 [ n ] h3 [ n ] = c { x [ n ] + x [ n 1] + x [ n 2]} h3 [ n ] , (2.18.11)
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)
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 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)
H e j = 1 + 2 cos ( n ) = e jn =
n =1 n =11
( )
n =
h [ n] e
jn
(2.19.4)
(2.19.5)
H e j = e j11
( )
1 e e = e j11 j j 1 e e 2
j 23
23 2
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
20
15
H()
10
-5 -3 -2 -1 0 Pulsatia[rad/s] 1 2 3
(2.19.9)
y [ n] =
k =
x [k ] h [n k ] .
(2.19.10)
189
x[n] 0.5
Figura 2.19.2
Functia h[n] 1.5
-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.
y [ n] =
x [ k ] 1 = n + 11 (2002) + 1 = n + 2014 ,
dat
fiind
x [ k ] 1 = n + 11 (n 11) + 1 = 23
y [ n] =
x [ k ] 1 = 2002 n + 11 + 1 = 2014 n
Convolutia semnalelor x[n] si h[n] (detaliu) 25
20
15 y[n] 10 5 0 1990
1995
2010
2015
( )
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
(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
w (t ) = z (t )
2013 n =1992
n 1992 = 2
2013
n =1992
(2.19.14)
Pw =
= 2 n 2 106 = 2
n =1
22
n ( n + 1)( 2n + 1) 6
n = 22
106 [W ] =
(2.19.15)
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
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)
(2.20.1)
x [ n] = j
jn 2 jn n e 4 e 4 u [ n ] = 2 sin 2 4
u [ n] ,
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
, (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
0.5
v[n]
-0.5
-1
-1.5
5 6 esantioane
10
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 =
k =
y 2[n]
-1
-2
-3
5 6 esantioane
10
x [ n] e
n=o
N 1
2 jk N
, k = 0, N 1 , , k = 0, 7 ,
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)
|Y 2(k)|
3 4 Valori discrete
Figura 2.20.5
198
PROBLEMA P2.21
Se consider SDLIT din figur:
( )
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
199
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 + bz 1 + cz 2 + dz 3 a + bz 1 + cz 2 + dz 3 + z 4 = (2.21.5)
+ dz 7 .
200
d = 1, c + d 2 = 2 c = 1, 2c + b = 3 b = 1, (2.21.6)
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
j 3 1 H e 5 = = 1, 236 . sin 3 10
202
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)
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] ,
[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] ,
X 1 ( ) = e j + 1 + e j = 1 + 2 cos .
x [n]
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 ,
x [ n] * h [ n 8k ] = x [ n 8k ] .
2 2
k =
(2.22.16)
x [n]
3
2.5
1.5
0.5
0 -10
-8
-6
-4
-2
10
Figura 2.22.5
208
jk
2 n 8
= ak e
k =0
jk n 4
,
2 n N
(2.22.17)
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
(2.22.19)
(2.22.20)
(2.22.21)
(2.22.22)
(2.22.23)
(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.
c)
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
10
15
20
25
30
35
40
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
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
10
15
20
25
30
35
40
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)
10
15
20
25
30
35
40
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
0.1
0.2
0.9
0 Phase (degrees)
-50
-100
0.1
0.2
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) =
Amplitudine
-1
-2
-3 0
10
15 20 25 Index temporal n
30
35
40
215
10
15
20
25 cauer
30
35
40
45
50
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
1 Amplitudine
-1
-2
-3
20
40
60
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
0 x 10
-14
10
15
20
25
30
35
40
Semnal diferenta
Amplitudine
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
( )
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
50
50
0 -0.5
0.5
0 -0.5
0.5
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))
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;
10
15
10
15
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
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[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
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:
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
yn=xn+yn-1
225
S considerm schema general de filtrare a unei secvene de intrare x[n] ntr-o secven de ieire y[n]:
FN ca SNLI
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
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)
(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
(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
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)
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
1 0,5 -1 0 1 2 3 4
h2
1
0,5 -1 0 1 2 3 4
h3
1
TIP 3
-1 0 1 2
-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]
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
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
1 -3 -6 -5 -4 -2 -1
1 2
h[n] 1 3 7 4 5 6 8 n
1 1 1 + [n 1] + [n + 1] 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
n =
[n]e jn
H [k ] e
k =0
N 1
+ jk
2 n N
n z
n
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
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
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.18)
( )
)
coeficieni necunoscui
(3.19)
(3.20)
(3.21)
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
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] =
( )
( )
( )
( )
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
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)
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)
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
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
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)
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
y[n] =
1 1 x[n] + y[n 1] 2 2
0 1 1
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
1. Deoarece: H a ( s ) =
1 1 = 1 1 1 e z 1 0,37 z 1 248
(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
H d (e j ) =
astfel c:
H d (e j ) = 1 + cos 5 3 cos
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
RAM
P/DSP CPU
ROM
INPUT x (t)
x[n]
A/D
PIA
Periferial
y[n]
Interface Adaptor
D/A
OUPUT y (t)
Fig. 3.28
251
3.18 Algoritmul de calcul a unui FN (de ordin 2), descris de ecuaia n timp discret
(3.36)
START
Iniializare variabile x[n-1]=x[n-2]=0 ; y[n-1]=y[n-2]=0
Iniializeaza PIA
A/D complet?
DA
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
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)
(3.1.3)
(3.1.4)
(3.1.5) (3.1.6)
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
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 . 5 3cos
(3.2.4)
255
de unde se obine:
Figura 3.2.1
PROBLEMA P3.3
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
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 ) =
2 e j + e j + 2
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
104 2
s + 50 2
+ 5000 2
(3.5.5)
(3.5.6)
ha ( t ) = y ( t ) = 100 2 e50
2t
sin 50 2 t .
(
(
(3.5.8)
(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)
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
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)
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
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
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
(3.7.10) (3.7.11)
c)
d)
(3.7.12)
e)
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)
268
gura 3.8.2
PROBLEMA P3.9
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 ) ;
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
(3.9.1) (3.9.2)
Figura 3.9.5
271
b)
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
(3.9.6)
273
e)
H1 ( z ) = Z {h1 [ n ]} =
h [ n] z
1
(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
Figura 3.9.9
274
PROBLEMA P3.10
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]
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
n . 2 c) Funcia pondere a filtrului proiectat prin metoda ferestrelor folosind fereastra din relaia (3.10.1) este urmtoarea:
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)
(3.10.7)
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
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)
(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)
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)
Figura 3.11.7
Figura 3.11.8
283
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
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
0.5
0.5
0 1
0.5
0 1
0.5
0.5
0.5
0.5
0.5
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.9
0.1
0.2
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
0.5
1.5
2.5
3.5
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
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
293
Proiectarea FILTRELOR NUMERICE tip RII (IIR) 1) Metoda de proiectare FN tip IIR dintr-un filtru prototip
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)
10
-1
10 Frequency (rad/s)
10
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)
0.1
0.2
0.9
500
Phase (degrees)
-500
0.1
0.2
0.9
296
10 Magnitude
10
-5
10
-10
10
-2
10
-1
10 Frequency (rad/s)
10
10
10 Frequency (rad/s)
10
-100
-200
0.1
0.2
0.9
0.1
0.2
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)
298
10
-2
10
10 Frequency (rad/s)
10
10
10
10 Frequency (rad/s)
10
10
19 Magnitude (dB) 18 17 16 15
0.1
0.2
0.9
190
180
170
0.1
0.2
0.9
299
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
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);
301
10 Magnitude
10
-20
10
-40
10
-2
10
10 Frequency (rad/s)
10
10
10 Frequency (rad/s)
10
0 Magnitude (dB)
-100
-200
-300
0.1
0.2
0.9
10 Phase (degrees)
-5
0.1
0.2
0.9
302
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.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
Fxn ( x, n) = Prob[ xn x] Fx n ( x, n)
(4.1)
(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
(4.4) (4.5)
m xn = E[ x n ] =
+ 2 E[ xn ] =
xf
xn
( x, n)dx
(4.6)
f xn ( x, n)dx
(4.7)
(4.8)
(4.9)
f (x)
1 b-a
Fig. 4.1
Momentul statistic de ordinul 1 este definit de:
x= 1 a+b xdx = 2 ba a
b
(b a ) 2 12
306
f ( x m) = 0,5 =1
0
(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 ] = + +
(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
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.
media
m x = E[ x n ] = lim
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)
(4.24.a) (4.24.b)
iar: c xx [0] =
2 x
(4.25)
k =
xx
[k ] e jk (4.26)
2
= xx (e j ) = S xx (e j )
= lim
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 =
= 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)
x[n]
SNLI hH
y[n] = ( x h)[n]
mx rxx [k ] xx [k ] S x (e j )
(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.
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
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)
x
n=0
N =1
[n]e
jk
2 2 n N
1 2 X N [k ] N
(4.39)
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
nct:
x w [k ] = x M [k ] wM [k ]
(4.40)
x [n]e ( )
w n
2 j n
(4.41)
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)
1 rxx (m) = N
( N 1) m n =0
x [n] x[n + m]
*
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
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
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
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)
Px (e j ) = Pe (e j ) H (e j ) = e2
1 1 + ak e
k =1 N 2 jk
(4.49)
315
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)
(4.51)
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
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.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');
folosit
funcia
Amplitudine (dB)
10
-1
10
-2
0.05
0.1
0.15
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');
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.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.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')
0.005
0.01 Timp
0.015
0.02
0.025
600
400
200
0 -1
-0.8
-0.6
-0.4
0.4
0.6
0.8 x 10
1
4
324
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')
Frecventa [kHz]
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
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]
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
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
...
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
= xe [ Mn]z
(n)
(n)
= xe [m]z
(m)
m M
Mn = m m n= 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
330
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
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
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
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
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
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 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:
339
Semnal binar
Demod. numeric
FILTRU numeric
Decima re
Decoder
Semnal de sincro
Prag de decizie
comparator
Fig 5.16
DEMODULAREA
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.
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).
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
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
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
40
10
1 0.5 0 -0.5 -1
40
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
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
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
-6000
-4000
-2000
2000
4000
6000
8000
-6000
-4000
-2000
2000
4000
6000
8000
349
-3000
-2000
-1000
1000
2000
3000
4000
-3000
-2000
-1000
1000
2000
3000
4000
0.5
1.5
2.5
3.5
4.5 x 10
5
-3
-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
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
x(t )
amplificat
Filtru anti-aliere
ADC
x(n)
x(n)
y(n)
amplificat
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
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.
Memoria de programe
Memoria de date
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
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
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
16 bii
Instruciuni standard
8 bii
Harvard dual
VLIW
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
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.
0/P
1/P
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
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-
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
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
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
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
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
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! ']);
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;
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
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
393
.SECTION/DM
data1;
.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
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;
//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).
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)
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
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;
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
data1;
// 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)
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;
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
//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
//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
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
(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
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
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.
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.
//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.
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.
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.
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
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));
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
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.
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
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
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;
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
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;
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
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:];
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
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
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
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);
=>
Fig. 10.15
X
X
mc_1
mc_2
Z-1 t_1
+
s_1
Z-1
+
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
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
mc_3
+
s_3
s_4
buff
y_n
+ + +
mc_4 X -a2=0.4 s_2 mc_5 s_1 X -a1=0.2
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);
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
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
(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
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
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
clk_div
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
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
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
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.
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;
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
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.
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
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
criptare_data
498
Dimensiune 1 1 8 8 8 1 1
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)
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)
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)
switch_fsm
Dimensiune 1 8 8 1 1 8 32 32 8
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)
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;
505
Blocul logistica_fsm
U9
start n_iter(7:0) val_init(31:0) log_cript(7:0) ocupat
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)
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.
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)
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
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.
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
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