Académique Documents
Professionnel Documents
Culture Documents
Chane de dveloppement
1
Introduction
100000 10000
1000 100
complexit 58 %/an
10
?
productivit 21 %/an
1981
1983
1985
1987
1989
1991
1993
1995
1997
1999
2001
2003
2005
2007
2009
Debugger Emulator
Phase de vrification
De lalgorithme au circuit
Synthse matrielle
SUM := A1+B1
Algorithme Circuit
Algorithme
Complexit
Complexit temporelle, complexit spatiale cot en temps: temps ncessaire l'excution cot en espace: espace mmoire ncessaire
Complexit asymptotique
Ncessit d'tudier la complexit pour de grosses quantits de donnes Exemple : deux algorithmes pour une mme tche:
A1 effectue n2 oprations de base, A2 effectue n.log2 n oprations.
Deux machines :
M1 effectue 210 (environ mille) oprations par seconde M2 effectue 220 (environ un million d') oprations par seconde
M2 A2 A1
Temps? Temps?
A2
Temps? Temps?
Temps? Temps?
10
11
Nombre de multiplications en 3 ?????????????????????? en4 ?????????????????????? Nombre d'additions soit au total: en 4 ??????????
?????????????????????
12
Nombre de multiplications en 3 1+2+3+...+ (n-1) = (n-l)n/2 en4 n Nombre d'additions soit au total: n(n + 3)/2 en 4 n < n2 pour n > 3.
13
Approximation de la complexit
On ne sintresse pas en gnral la complexit exacte, mais son ordre de grandeur. => besoin de notations asymptotiques.
14
Notations utilises
Grand O
f(n) = 0(g(n)) s'il existe C> 0 et no > 0 tels que f(n) C. g(n) pour tout n no
Grand omga
f(n) = (g(n)) s'il existe C> 0 et no > 0 tels que f(n) C. g(n) pour tout n no
Grand thta
f(n) = (g(n)) s'il existe C1 et C2 > 0 et no > 0 tels que C1.g(n) f(n) C2. g(n) pour tout n no
15
16
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) 3n+3 = O(n2) 10n2+4n+2=O(n2) 10n2+4n+2= O(n4) 1000n2+100n-6 = O(n2) 6*2n + n2 = O(2n) ----> c'est la plus petite fonction g(n) qui est intressante
17
Exemples (suite)
3n+3 = (n) 100n+6 = (n) 10n2+4n+2= (n2) 6*2n + n2 = (n) 6*2n + n2 = (n2) 6*2n + n2 = (1) ----> c'est la plus grande fonction g(n) qui est intressante
18
Temps logarithmique (exemple: recherche dichotomique) O(log2n) Temps linaire (exemple: recherche squentielle) O(n) Temps polynomial
quadratique cubique O(n2) O(n3)
Temps exponentiel
O(cn)
( viter en gnral)
19
20
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??????????????????????????
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
2n multiplications, n additions : algorithme en O(n)
24
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??????????????????????????
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
n multiplications, n additions algorithme en O(n)
26
1.
Recherche squentielle dans un tableau non tri complexit au pire n comparaisons complexit moyenne n/2 comparaisons algorithme en O(n) Recherche squentielle dans un tableau tri complexit au pire n comparaisons complexit moyenne n/2 comparaisons algorithme en O(n)
27
2.
Exemple avec n = 8 = 23
niveau 0 niveau 1 niveau 2 niveau 3
tableau de 8 lments
28
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
Rgles de simplification 2
Si f(n) = O(kg(n)) o k > 0 est une constante, alors f(n) = O(g(n)).
33
Rgles de simplification 3
Si f1(n) = O(g1(n)) et f2(n) = O(g2(n)), alors (f1 + f2)(n) = O(max(g1(n), g2(n)))
34
Rgles de simplification 4
Si f1(n) = O(g1(n)) et f2(n) = O(g2(n)) alors f1(n)f2(n) = O(g1(n) g2(n))
35
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: (1). Exemple 2:
somme = 0; for (i=1; i<=n; i++) somme = somme + n;
Temps: (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: (1) + O(n2) = O(n2)
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: (1) + (n2) + (n) = (n2)
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: (n.log n)
43
Algorithme
Cible Matriel
44
Microprocesseur
45
Microprocesseur
46
Microprocesseur
47
Microcontrleur
Mmoire Instructions
Processeur
Mmoire Donnes
BI
BD
48
Microcontrleur
49
Microcontrleur
50
Carte DSP
51
Multiply
0 1 0 1 x x x x 8 4 2 1 x x x x 0011 0011 0011 0011
5*3 = 15
0000 0011 0000 0011 =
MAC Operation Typically 70 Clock Cycles With Ordinary Processors Typically 1 Clock Cycle With Digital Signal Processors
52
. . .
DSP
53
Proc. DSP
ROM/Flash
RAM Comm.
Horloge Timers...
Cont.
FPGA
http://www.xilinx.com/support/documentation/data_sheets/ds312.pdf
FPGA
In this area: You can add or replace any VHDL module or C function.
Interface
Keyboard
ROM
Char. Converter
Monitor
IC12 pin#5
50 MHz
57
X ( f ) = x(t )e
j 2ft
Module de X(f)
dt
2- Xnum(f) transforme de Fourier numrique dune fonction x(t) chantillonne avec une priode Te
Module de Xnum(f)
f Fe/2 Fe
NB : Xnum(f) est devenue une fonction priodique de la frquence. La priode est gale Fe : la frquence dchantillonnage.
58
2- Un ordinateur ne peut pas calculer Xnum(f) la frquence f Les chantillons x(nTe) sont pris dans une fentre de pondration, soit n=0, 1, 2, , N-1, Xnum(kFe/N), transforme de Fourier numrique des x(nTe), est encore priodique de priode Fe. On dcoupe alors lintervalle [0,Fe] en N intervalles gaux Fe/N et on ne calcule Xnum(f) que pour les frquences f=nFe/N avec n=0, 1, 2, , N-1
Module de Xnum(f) f
Fe/M
Fe/2
Fe
points calculs
59
Pourquoi la FFT
on veut calculer la TFD:
X (k ) =
Pour cela il faut raliser:
n = N 1 n =0
x ( n )e
j 2nk / N
N2 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).
60
Pourquoi la FFT
X (k ) =
n = N 1 n =0
x ( n )e
j 2nk / N
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)log2N. Si N=2p, alors on peut utiliser un algorithme de FFT.
Nbre de points Nbre de multiplications complexes en DFT 1 048 576 16 777 216 Nbre de multiplications complexes en FFT 5 120 24 576
1024 4096
X (k ) =
n = N 1 n =0
x ( n )e
j 2nk / N
X (k ) =
N / 2 1 n =0
x(n ) e j 2kn / N +
n= N / 2
x(n ) e j 2kn / N
N 1
N 1 2
N 1 2
X (2k ) =
Ou encore
N / 2 1 n =0
j 2k n /( N / 2 )
X (k ) =
x (n ) e
P
j 2k n /( N / 2 )
xP (n ) = x(n ) + x(n + N / 2 )
X (2k + 1) =
Ou encore
N / 2 1 n =0
X (k ) =
x (n ) e
I
j 2k n /( N / 2 )
TN (n ) = e
FFT: Programme
X (k ) = x(n ) + x(n + N / 2 )( 1) e j 2kn / N
k n =0 N 1 2
double * FFT( int N, double *x ) // x est un tableau de taille N=2p { double *F;
?
return F; }
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 Fe=20kHz. Les chantillons x(kTe) sont tronqus par les chantillons y(kTe) dune fentre rectangulaire de 1024 points.
1.5 1 0.5 0 -0.5 -1 -1.5 -0.1
Amplitude [V]
chantillons x(kTe)
1.5 1
-0.05
0.05
0.1
0.15
Temps [s]
Amplitude [V]
1.4 1.2
Amplitude [V]
1 0.8 0.6 0.4 0.2 0 -0.2 -0.1 -0.05 0 0.05 0.1 0.15 -0.05 0 0.05 Temps [s] 0.1 0.15
chantillons y(kTe)
chantillons z(kTe)=x(kTe)y(kTe)
Temps [s]
68
Amplitude
Amplitude
600 Transforme de Fourier numrique Yn(f) 400 200 0 0 50 100 150 Frquence [Hz] 200 250
0.5
1 Frquence [Hz]
1.5 x 10
2
4
400
300
200
100
69
Frquence [Hz]
Exemple n2 : FFT dun signal sinusodal de frquence F=1000Hz et chantillonn la frquence Fe=20kHz. Les chantillons x(kTe) sont tronqus par les chantillons y(kTe) dune fentre rectangulaire de 1024 points.
On observe une raie principale et dautres raies Pourquoi ? Parce que la frquence F nest pas un multiple de Fe/M, il y a apparition de fuites spectrales dues aux lobes secondaires de la fentre, Que faire ???
300 250 200 150 100 50 0 850 900 950 1000 1050
Amplitude
1100
1150
1200
Frquence [Hz]
70
Principe :
WN = e 2 / N N 1 n.k X (m) = x(n).WN , m = 0, N 1 n =0
plusieurs algorithmes et architectures associs permettent de raliser les calculs en temps rel.
71
rectangulaire : bonne rsolution en frquence, dynamique faible Hanning : compromis (utilise en analyse du bruit et vibrations)
72
Microcontrleurs
Chane de dveloppement
73
Microcontrleur PIC18F4520
74
Caractristiques
75
Architecture interne
76
TP1
Microcontrleur
77
Convertisseur ADC
ADCON0
78
Convertisseur ADC
ADCON1
79
Convertisseur ADC
ADCON2
80
Caractristique du ADC
unsigned int acqui; void main() { ADCON1 = 0x00; TRISA = 0xFF; TRISD = 0x00; TRISB = 0x00; while(1) { acqui = ADC_Read(0); LATD = acqui; LATB = acqui >> 8; Delay_ms(100); } }
81
// Configuration analogique du port A // PORTA en entre // PORTD en sortie // PORTB en sortie // lire un chantillon du convertisseur // envoie des bits de poid faible sur PORTD // envoie des bits forts sur PORTB
Caractristique du ADC
VDD
RV1
+4.99
Volts
R1 U1
2 3 4 5 6 7 14 13 33 34 35 36 37 38 39 40 RA0/AN0/C1INRC0/T1OSO/T13CKI RA1/AN1/C2INRC1/T1OSI/CCP2B RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL RA4/T0CKI/C1OUT RC4/SDI/SDA RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO RA6/OSC2/CLKO RC6/TX/CK RA7/OSC1/CLKI RC7/RX/DT RB0/AN12/FLT0/INT0 RB1/AN10/INT1 RB2/AN8/INT2 RB3/AN9/CCP2A RB4/KBI0/AN11 RB5/KBI1/PGM RB6/KBI2/PGC RB7/KBI3/PGD RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5/P1B RD6/PSP6/P1C RD7/PSP7/P1D RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 RE3/MCLR/VPP PIC18F4520 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10 1 VDD 330R
D1
LED-RED
R2
330R
D2 D3 D4 D5 D6 D7 D8
LED-RED
1k
R3
330R
R9
330R
LED-RED
D10 D11
LED-RED LED-RED
R10
330R
R4
330R
R11
330R
R5 R6
LED-RED
330R LED-RED
R12 D12
330R
R13
330R
330R LED-RED
R7
330R
LED-RED
D13
LED-RED
R14 D14
330R
LED-RED
R15
330R
R8
330R
LED-RED
LED-RED
R16 D15
330R
LED-RED
D16
LED-RED
82
83
84
Edition et compilation
85
D1
LED-RED
R2
330R
D2 D3 D4 D5 D6 D7 D8
LED-RED
R3
330R
LED-RED
R4
330R
R5 R6
LED-RED
330R LED-RED
330R LED-RED
R7
330R
LED-RED
R8
330R
LED-RED
86
RV1
+88.8
Volts
U1
2 3 4 5 6 7 14 13 33 34 35 36 37 38 39 40 RA0/AN0/C1INRC0/T1OSO/T13CKI RA1/AN1/C2INRC1/T1OSI/CCP2B RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL RA4/T0CKI/C1OUT RC4/SDI/SDA RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO RA6/OSC2/CLKO RC6/TX/CK RA7/OSC1/CLKI RC7/RX/DT RB0/AN12/FLT0/INT0 RB1/AN10/INT1 RB2/AN8/INT2 RB3/AN9/CCP2A RB4/KBI0/AN11 RB5/KBI1/PGM RB6/KBI2/PGC RB7/KBI3/PGD RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5/P1B RD6/PSP6/P1C RD7/PSP7/P1D RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 RE3/MCLR/VPP PIC18F4520 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10 1 VD
1k
R9 D9
LED-RED 330R
D10 D11
R10
330R
R11
LED-RED LED-RED 330R
R12 D12
330R
R13
330R
LED-RED
D13
LED-RED
R14 D14
330R
R15
330R
LED-RED
R16 D15
330R
LED-RED
D16
LED-RED
87
88
Rsultat du TP1
Donner la caractristique de lADC
89
TP2
Microcontrleur
90
TP3
Microcontrleur
91
FPGA
Chane de dveloppement
92