Vous êtes sur la page 1sur 72

Systmes de Traitement Numrique du

Signal
Chane de dveloppement
Module 13
Elment 3
1
Introduction

Systme sur puce

2
Implications de lvolution technologique
productivit vs complexit
0,001
0,01
0,1
1
10
100
1000
10000
1
9
8
1
1
9
8
3
1
9
8
5
1
9
8
7
1
9
8
9
1
9
9
1
1
9
9
3
1
9
9
5
1
9
9
7
1
9
9
9
2
0
0
1
2
0
0
3
2
0
0
5
2
0
0
7
2
0
0
9
N
b
r
e

d
e

t
r
a
n
s
i
s
t
o
r
s

p
a
r

c
i
r
c
u
i
t

(
M
)
0,01
0,1
1
10
100
1000
10000
100000
p
r
o
d
u
c
t
i
v
i
t


(
K
)

t
r
a
n
s
i
s
t
o
r
/

q
u
i
p
e
-
m
o
i
s
complexit d'intgration
productivit
complexit 58 %/an
productivit 21 %/an
?
3
Outils de
mesure
Synthse logicielle
Phase de
dveloppement

Phase de
vrification

Phase de vrification
Emulator
Debugger
Programmer
Development processor
Phase de
dveloppement
Les diffrentes tapes dimplantation
4
Synthse matrielle



SUM :=

A1+B1
Algorithme
Circuit
De lalgorithme au circuit
5
Algorithme
Complexit
6
7
Complexit des algorithmes
un algorithme utilise deux ressources dune machine:
le temps processeur
et lespace mmoire.


Complexit temporelle, complexit spatiale
cot en temps: temps ncessaire l'excution
cot en espace: espace mmoire ncessaire


8
Complexit d'un problme, complexit dun
algorithme
contraintes sur un problme
par exemple, recherche d'un lment dans un tableau de n
valeurs non tris : si l'lment n'est pas prsent, n
comparaisons seront ncessaires pour le constater

Si le tableau est tri, une seule peut tre suffisante !
parmi les diffrents algorithmes possibles, certains sont meilleurs que
d'autres
la comparaison des pires des cas peut ne pas tre une bonne indication

9
Complexit asymptotique
Ncessit d'tudier la complexit pour de grosses
quantits de donnes
Exemple : deux algorithmes pour une mme tche:
A1 effectue n
2
oprations de base,
A2 effectue n.log
2
n oprations.

Deux machines :
M1 effectue 2
10
(environ mille) oprations par seconde
M2 effectue 2
20
(environ un million d') oprations par seconde

Temps de calcul (en secondes) :

10
M1 M2
A1 A2 A1 A2
n = 2
10
Temps? Temps? Temps? Temps?
n = 2
20
Temps? Temps? Temps? Temps?
Complexit asymptotique (2)
11
M1 M2
A1 A2 A1 A2
n = 2
10
2
10
10 1 < 0,01
n = 2
20
2
30
20. 2
10
2
20
20
Complexit asymptotique (3)
12
Calcul de la complexit dun algorithme
Exemple: Calcul de la valeur d'un polynme en un point
1. p a[0]
2. pour i 1 n faire
3. xpi puissance (x , i) {puissance(a, n) retourne a
n
}
4. p p + a[i]* xpi
fpour

Nombre de multiplications
en 3 ??????????????????????
en4 ??????????????????????

Nombre d'additions en 4 ??????????

soit au total: ?????????????????????
13
Calcul de la complexit dun algorithme
Exemple: Calcul de la valeur d'un polynme en un point
1. p a[0]
2. pour i 1 n faire
3. xpi puissance (x , i) {puissance(a, n) retourne a
n
}
4. p p + a[i]* xpi
fpour

Nombre de multiplications
en 3 1+2+3+...+ (n-1) = (n-l)n/2
en4 n

Nombre d'additions en 4 n

soit au total: n(n + 3)/2 < n
2
pour n > 3.
Approximation de la complexit
On ne sintresse pas en gnral la complexit exacte, mais
son ordre de grandeur.
=> besoin de notations asymptotiques.

14
15
Notations utilises
Grand O
f(n) = 0(g(n)) s'il existe C> 0 et n
o
> 0 tels que
f(n) s C. g(n) pour tout n > n
o


Grand omga
f(n) = (g(n)) s'il existe C> 0 et n
o
> 0 tels que
f(n) > C. g(n) pour tout n > n
o


Grand thta
f(n) = (g(n)) s'il existe C1 et C2 > 0 et n
o
> 0 tels que
C1.g(n) s f(n) s C2. g(n) pour tout n > n
o



16
17
Exemples

f(n) = O(1) f est majore
f(n) = (1) f est minore
3n+2 = O(n) 3n+3 = O(n)
100n+6 = O(n)
10n
2
+4n+2=O(n
2
) 3n+3 = O(n
2
)
1000n
2
+100n-6 = O(n
2
) 10n
2
+4n+2= O(n
4
)
6*2
n
+ n
2
= O(2
n
)
----> c'est la plus petite fonction g(n) qui est
intressante
18
Exemples (suite)
3n+3 = (n)
100n+6 = (n)
10n
2
+4n+2= (n
2
)
6*2
n
+ n
2
= (n
2
) 6*2
n
+ n
2
= (n)
6*2
n
+ n
2
= (1)
----> c'est la plus grande fonction g(n) qui est
intressante

19
Temps dexcution des algorithmes
Temps constant (rares algorithmes) O(1)

Temps logarithmique (exemple: recherche
dichotomique) O(log
2
n)

Temps linaire (exemple: recherche squentielle) O(n)

Temps polynomial O(n
k
) (coteux si k dpasse 3)
quadratique O(n
2
)
cubique O(n
3
)

Temps exponentiel O(c
n
) ( viter en gnral)
20
Rapidit de croissance compare
de certaines fonctions usuelles
21
Comparaison des complexits d'algorithmes
Calcul de la valeur d'un polynme en un point (1)
p a[0]
pour i 1 n faire
xpi puissance(x, i)
p p + a[i]* xpi
fpour

Complexit??????????????????????????
22
Comparaison des complexits d'algorithmes
Calcul de la valeur d'un polynme en un point (1)
p a[0]
pour i 1 n faire
xpi puissance(x, i)
p p + a[i]* xpi
fpour

n(n+1)/2 multiplications, n additions : algorithme en O(n
2
)
23

Calcul de la valeur d'un polynme en un point (2)
p a[0]
xpi 1
pour i 1 n faire
xpi xpi * x
p p + a[i]* xpi
fpour


Complexit??????????????????????????
24

Calcul de la valeur d'un polynme en un point (2)
p a[0]
xpi 1
pour i 1 n faire
xpi xpi * x
p p + a[i]* xpi
fpour

2n multiplications, n additions : algorithme en O(n)

25
Calcul de la valeur d'un polynme en un point (3)
p a[n]
pour i n - 1 0, pas -1 faire
p p*x + a[i]
fpour



Complexit??????????????????????????

26
Calcul de la valeur d'un polynme en un point (3)
p a[n]
pour i n - 1 0, pas -1 faire
p p*x + a[i]
fpour

n multiplications, n additions algorithme en O(n)

Complexit optimale pour cette classe d'algorithmes :
en O(n)

27
Exemple de calcul de la complexit au pire cas
Algorithmes de recherche simples
1. Recherche squentielle dans un tableau non tri
complexit au pire n comparaisons
complexit moyenne n/2 comparaisons
algorithme en O(n)

2. Recherche squentielle dans un tableau tri
complexit au pire n comparaisons
complexit moyenne n/2 comparaisons
algorithme en O(n)

Oprations lmentaires retenues:
les comparaisons
28
Recherche dichotomique (dans un tableau tri )
complexit au pire = complexit moyenne =
nombre p d'intervalles considrs
Exemple avec n = 8 = 2
3
tableau de 8 lments

niveau 0
niveau 1
niveau 2
niveau 3
Profondeur de larbre de dcision de lordre de log
2
n :
complexit algorithmique en O(log
2
n)
Quelques rgles pour calculer la
complexit dun algorithme
Rgle 1: la complexit dun ensemble dinstructions
est la somme des complexits de chacune delles.

Rgle 2: Les oprations lmentaires telle que
laffectation, test, accs un tableau, oprations
logiques et arithmtiques, lecture ou criture dune
variable simple ... etc, sont en O(1) (ou en O(1))
29
Rgle 3: Instruction if: maximum entre le
then et le else

switch: maximum parmi les diffrents cas

30
Rgle 4: Instructions de rptition:

1. la complexit de la boucle for est calcule par la
complexit du corps de cette boucle multiplie
par le nombre de fois quelle est rpte.

2. En rgle gnrale, pour dterminer la complexit
dune boucle while, il faudra avant tout
dterminer le nombre de fois que cette boucle est
rpte, ensuite le multiplier par la complexit du
corps de cette boucle.

31
Rgles de simplification 1
Si
f(n) = O(g(n))
et
g(n) = O(h(n)),

alors
f(n) = O(h(n)).

32

Si
f(n) = O(kg(n))
o k > 0 est une constante,

alors
f(n) = O(g(n)).


33
Rgles de simplification 2

Si
f
1
(n) = O(g
1
(n))
et
f
2
(n) = O(g
2
(n)),

alors
(f
1
+ f
2
)(n) = O(max(g
1
(n), g
2
(n)))
34
Rgles de simplification 3

Si
f
1
(n) = O(g
1
(n))
et
f
2
(n) = O(g
2
(n))

alors
f
1
(n)f
2
(n) = O(g
1
(n) g
2
(n))
35
Rgles de simplification 4
Exemples
Exemple 1: a = b;

Temps??????

Exemple 2:

somme = 0;
for (i=1; i<=n; i++)
somme = somme + n;

Temps??????
36
Exemples
Exemple 1: a = b;

Temps constant: O(1).

Exemple 2:

somme = 0;
for (i=1; i<=n; i++)
somme = somme + n;

Temps: O(n)
37
Exemple 3:

somme = 0;
for (i=1; i<=n; i++)
for (j=1; j<=i; j++)
somme++;


Temps: ?????????

38
Exemple 3:

somme = 0;
for (i=1; i<=n; i++)
for (j=1; j<=i; j++)
somme++;


Temps: O(1) + O(n
2
) = O(n
2
)

39
Exemple 4:

somme = 0;
for (j=1; j<=n; j++)
for (i=1; i<=n; i++)
somme++;
for (k=0; k<n; k++)
A[k] = k;


Temps: ??????????????
40
Exemple 4:

somme = 0;
for (j=1; j<=n; j++)
for (i=1; i<=n; i++)
somme++;
for (k=0; k<n; k++)
A[k] = k;


Temps: O(1) + O(n
2
) + O(n) = O(n
2
)
41
Exemple 5:

somme = 0;
for (k=1; k<=n; k*=2)
for (j=1; j<=n; j++)
somme++;


Temps: ???????????
42
Exemple 5:

somme = 0;
for (k=1; k<=n; k*=2)
for (j=1; j<=n; j++)
somme++;


Temps: O(n.log n)
43
Algorithme
Cible Matriel
44
45
Microprocesseur
Microprocesseur
46
47
Microprocesseur
Microcontrleur
48
Processeur
Mmoire
Donnes
BD
Mmoire
Instructions
BI
49
Microcontrleur
50
Microcontrleur
Carte DSP
51
Spcificits du DSP (MAC)
Most Common Operation in DSP
A = B*C + D
Multiply, Add, and Accumulate
E = F*G + A
.
.
.
MAC Instruction
1+2 = 3
+
0001
0010
0011
Add Multiply
5*3 = 15
Typically 70 Clock Cycles With
Ordinary Processors
MAC Operation
0
1
0
1
x
x
x
x
8
4
2
1
0011
0011
0011
0011
x
x
x
x
0000
0011
0000
0011
=
5 3
Shifted and
added
multiple times
Typically 1 Clock Cycle With
Digital Signal Processors
52
DSP
53
Architecture gnrale de DSP
CAN
Adr. Don.
CNA
Proc.
DSP
RAM
ROM/Flash
Cont.
Comm.
Horloge
Timers...
FPGA
55
Spartan 3E 500K FPGA
Digilent Board
http://www.xilinx.com/support/documentation/data_sheets/ds312.pdf
FPGA
56
K
e
y
b
o
a
r
d

Monitor
ROM
Frequency Counter
Clock Divider
Conv. Number
RAM
50 MHz
In this area:
You can add or replace
any VHDL module or C function.
Cycle Acc. Counter
IC12 pin#5
Interface
Char. Converter
Transforme de Fourier rapide
FFT
(Fast Fourier Transform)
Algorithme de Cooley-Tuckey
57
dt e t x f X
ft j
}



=
t 2
) ( ) (
1- X(f) transforme de Fourier dune fonction x(t) analogique
2- X
num
(f) transforme de Fourier numrique dune fonction x(t)
chantillonne avec une priode T
e
Module de X
num
(f)
f
F
e
/2 F
e

Module de X(f)
f
e
fnT j
n
e num
e nT x f X
t 2
) ( ) (

=
NB : X
num
(f) est devenue une fonction priodique de la frquence. La priode est
gale F
e
: la frquence dchantillonnage.
58
1- La somme sur lindice n dans ne peut tre
infinie
2- Un ordinateur ne peut pas calculer X
num
(f) la frquence f
e
fnT j
n
e num
e nT x f X
t 2
) ( ) (

Les chantillons x(nT


e
) sont pris dans une fentre de pondration,
soit n=0, 1, 2, , N-1,
X
num
(kF
e
/N), transforme de Fourier numrique des x(nT
e
), est encore
priodique de priode F
e
. On dcoupe alors lintervalle [0,F
e
] en N
intervalles gaux F
e
/N et on ne calcule X
num
(f) que pour les
frquences f=nF
e
/N avec n=0, 1, 2, , N-1
Module de X
num
(f)
f
F
e
/2 F
e

F
e
/M
points calculs
59
on veut calculer la TFD:



Pour cela il faut raliser:

N
2
multiplications complexes et N(N-1) additions complexes pour
obtenir les N composantes X(k).
Les multiplications complexes ont une dure dexcution bien
suprieure celle des additions complexes.
Si N est quelconque, on utilise un algorithme de DFT (Direct Fourier
Transform).

=
=

=
1
0
/ 2
) ( ) (
N n
n
N nk j
e n x k X
t
60
Pourquoi la FFT
En 1965, J. W. Cooley et J. W. Tukey ont montr que, si N tait une
puissance de deux, le nombre de multiplications complexes pouvait tre
ramen (N/2)log
2
N.
Si N=2
p
, alors on peut utiliser un algorithme de FFT.


Nbre de points

Nbre de multiplications
complexes en DFT

Nbre de multiplications
complexes en FFT

1024

1 048 576

5 120

4096

16 777 216

24 576

Comparaison du nombre de multiplications complexes en DFT et FFT

=
=

=
1
0
/ 2
) ( ) (
N n
n
N nk j
e n x k X
t
61
Pourquoi la FFT
Pour calculer



On divise la somme en deux parties



62
Implmentation de l'algorithme FFT

=
=

=
1
0
/ 2
) ( ) (
N n
n
N nk j
e n x k X
t
( ) ( ) ( )
( ) ( ) { }
( ) ( )( ) { }

+ + =
+ + =
+ =
1
2
0
/ 2
1
2
0
/ 2
1
2 /
/ 2
1 2 /
0
/ 2
1 2 /
2 /
N
n
N kn j
k
N
n
N kn j k j
N
N n
N kn j
N
n
N kn j
e N n x n x
e e N n x n x
e n x e n x k X
t
t t
t t
Implmentation de l'algorithme FFT
Si lon considre sparment les valeurs paires et impaires
de k, la TFD de N points scrit en termes de 2 TFD de (N/2)
points.
Pour k=2k (k=0..N/2-1) pair, on a



Ou encore
( ) ( ) ( ) { }

=
'
+ + =
'
1 2 /
0
) 2 / /( 2
2 / 2
N
n
N n k j
e N n x n x k X
t
( ) ( )
( ) ( ) ( ) 2 /
1 2 /
0
) 2 / /( 2
N n x n x n x
e n x k X
P
N
n
N n k j
P
+ + =
=
'

=
' t
Pour k=2k+1 impair on a



Ou encore
( ) ( )
( ) ( ) ( ) { } ( )
( )
N n j
N
N I
N
n
N n k j
I
e n T
n T N n x n x n x
e n x k X
/ 2
1 2 /
0
) 2 / /( 2
2 /
t
t

=
'
=
+ =
=
'

( ) ( ) ( ) { }

=
'
+ = +
'
1 2 /
0
) 2 / /( 2 / 2
2 / 1 2
N
n
N n k j N n j
e e N n x n x k X
t t
Implmentation de l'algorithme FFT
Programmation de PIC
Exercice
Ecrire une fonction itrative qui retourne la
factorielle dun nombre N.

Envoyer sur le port D la valeur de la factorielle
du nombre prsent dans le port B

Transformer la fonction en une fonction
rcursive


65
FFT: Programme
double * FFT( int N, double *x ) // x est un tableau de taille N=2
p
{
double *F;

?

return F;
}
( ) ( ) ( )( ) { }

+ + =
1
2
0
/ 2
1 2 /
N
n
N kn j
k
e N n x n x k X
t
FFT: Programme
double * FFT( int N, double *x )

{
double *F;
double *xp, *xi, T;
int n, M;
M=N/2;
if(M==1) return f;
else{
for( n=0; n<M; n++)
T[n] =exp(-2*pi*n/M);
for( n=0; n<M; n++)
{
xp[n]=x[n] + x[n+M] ;
xi[n]=(x[n] - x[n+M])*T[n] ;
}
return F;
}
Exemple n1 : FFT dun signal sinusodal de frquence F=1015.625Hz et
chantillonn la frquence F
e
=20kHz. Les chantillons x(kT
e
) sont tronqus par les
chantillons y(kT
e
) dune fentre rectangulaire de 1024 points.
-0.1 -0.05 0 0.05 0.1 0.15
-1.5
-1
-0.5
0
0.5
1
1.5
Temps [s]
A
m
p
l
i
t
u
d
e

[
V
]
-0.1 -0.05 0 0.05 0.1 0.15
-1.5
-1
-0.5
0
0.5
1
1.5
Temps [s]
A
m
p
l
i
t
u
d
e

[
V
]
chantillons x(kT
e
)
chantillons z(kT
e
)=x(kT
e
)y(kT
e
)
-0.1 -0.05 0 0.05 0.1 0.15
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
Temps [s]
A
m
p
l
i
t
u
d
e

[
V
]
chantillons y(kT
e
)
X
68
0 0.5 1 1.5 2
x 10
4
0
100
200
300
400
500
600
Frquence [Hz]
A
m
p
l
i
t
u
d
e
Transforme de Fourier numrique Xn(f)
850 900 950 1000 1050 1100 1150 1200
0
100
200
300
400
500
Frquence [Hz]
A
m
p
l
i
t
u
d
e
Trans. Fourier
numrique
points calculs
Transf. Fourier
discrte (FFT)
0 50 100 150 200 250
0
200
400
600
800
1000
Frquence [Hz]
A
m
p
l
i
t
u
d
e
Transforme de Fourier numrique Yn(f)
rsultat du calcul de la FFT
) ( ) ( ) ( f Y f X f Z
num num num
=
Convoluer : cest accrocher le
motif de Y
num
(f) autour de X
num
(f)
On observe une seule raie
la frquence de 1015.625Hz
Pourquoi ? Parce que la
frquence F est un multiple de
F
e
/M et que la transforme de
Fourier numrique Y
num
(f) est
nulle pour les multiples de
F
e
/M.
Transforme de
Fourier
numrique et
discrte des z(kT
e
)
69
Exemple n2 : FFT dun signal sinusodal de frquence F=1000Hz et chantillonn
la frquence F
e
=20kHz. Les chantillons x(kT
e
) sont tronqus par les chantillons
y(kT
e
) dune fentre rectangulaire de 1024 points.
850 900 950 1000 1050 1100 1150 1200
0
50
100
150
200
250
300
350
400
450
500
Frquence [Hz]
A
m
p
l
i
t
u
d
e
Trans. Fourier
numrique
points calculs
Transf. Fourier
discrte (FFT)
On observe une raie
principale et dautres raies
Pourquoi ? Parce que la
frquence F nest pas un
multiple de F
e
/M, il y a
apparition de fuites
spectrales dues aux lobes
secondaires de la fentre,
Que faire ???
Transforme de
Fourier
numrique et
discrte des z(kT
e
)

F=K(F
e
/M) avec K entier fuites spectrales
70
71
Transforme de Fourier Discrte
Algorithmes rapides : FFT (Fast Fourier Transform)-(2)

Principe :






plusieurs algorithmes et architectures associs
permettent de raliser les calculs en temps rel.



2 /
2 2 /
1
0
.
/ 2
) ( ; 1 ) ( ; 1 ) (
1 , 0 , ). ( ) (
N N
N
N
N
N
N
n
k n
N
N
N
W W W W or
N m W n x m X
e W
= = =

= =
=

=
t
72
Transforme de Fourier Discrte
proprits des fentres : rsum (2)
Fentre 1er lobe dcroissance largeur lobe
secondaire lobes secondaires principal

(dB) (dB/dcade) (*Af)

Rectangulaire -13 -20 1.
Hanning -32 -60 1.5
Hamming -43 -20 1.36
Kaiser-Bessel -69 -20 1.8
Flattop -93 0 3.7
Gaussienne -69 -20 1.9

rectangulaire : bonne rsolution en frquence, dynamique faible
Hanning : compromis (utilise en analyse du bruit et vibrations)

Vous aimerez peut-être aussi