Professional Documents
Culture Documents
myriam.chesneau@univ-savoie.fr Mots clefs : Initiation Microcontrleur PIC16F84 Port Registre Timer ConText ProgrammationC Filtrage analogique Gabarit Butterworth Filtrage numrique RII RIF Carte dacquisition Rponse Impulsionnelle
CH 2 . Bases de filtrage analogique Rappels sur les reprsentations temps-frquence, prsentation des filtres et gabarits, exemple de ralisation dun filtre analogique
CH 3. Introduction au filtrage numrique Outils mathmatiques utiliss pour le filtrage numrique, prsentation et principe de ralisation des filtres RII et RIF
Ouverture
en fin de module ISA (instrumentation spcifique : audionumrique) ouverture sur les DSp et FPGA, qui permettent de faire du filtrage temps rel et embarqu. En TP 4 : implmentation dun filtre sur DSP
Ch 1 : Introduction au microcontrleur
Un microcontrleur comprend - Une unit de traitement de linformation de type microprocesseur - Des priphriques internes Il permet la ralisation dapplications autonomes sans ajout de composants externes
1. Prsentation du circuit
1.1 Schma de principe
Mmoire FLASH pour stocker le programme (permanente) Unit -dcodage instructions Horloge -traitement -calculs Mmoire RAM de travail (volatile)
alimentations
Ports I/O
LEEPROM contient des donnes produites par le programme conserve les donnes hors tension
1.4 Lhorloge
Elle reoit un signal priodique issu dun oscillateur, et fabrique la rfrence temps du systme.
oscillateur externe : fosc
Horloge
fo = fosc/4
Une instruction lmentaire est en gnral excute en 1 cycle, soit 4 priodes du signal de loscillateur. Avec un oscillateur 4 MHz, un c PIC16F84-04 peut effectuer un million (4 M / 4) instructions simples.
2. Les priphriques
2.1 Ports dentres sorties :
Le port A fournit 5 entres - sorties : RA0 RA4 RA0 RA3 : En entre : comprennent les niveaux TTL En sortie : dlivrent des niveaux TTL : 0 ou 5 V RA4 En entre : trigger de Schmitt pour convertir en TTL (cf TD EON) En sortie : drain ouvert Peut tre connecte lentre du timer pour du comptage
10
Le port B fournit 8 entres sorties RB0 RB7 dlivrent et reoivent des niveaux TTL En entre : peuvent tre connectes au 5 V par programme
de plus RB0 peut tre utilise pour une interruption externe, elle fonctionne alors en trigger de Schmitt RB6 et RB7 sont utilises pour charger le programme en mmoire (attention, ne pas les utiliser pour une autre tche au moment du
chargement)
Si RB4 RB7 sont en entre, on peut dcider par programme de gnrer une interruption si la valeur dune de ces entres a chang.
11
Entre
Clk
Out
Compteur
TMR0
Il compte les fronts montants ou descendants prsents sur son entre ( 0,1,. 255=FF)h) Le timer-compteur est associ un registre TMR0 (Timer 0) En fin de compte : passage de 255 0, un bit dun registre spcifique est mis 1 : cest le bit de dbordement (overflow).
12
Un diviseur de frquence (Prescaler) permet de diviser la frquence du signal appliquer en entre du compteur La frquence peut tre divise par 2, 4, 8, 16, 32, 64, 128 ou 256.
Entre Diviseur
Clk
Out
Compteur
13
Comme le compteur-timer dune carte dacquisition, le compteur peut tre utilis : En compteur Le signal dentre du compteur est externe, il est connect sur la ligne 4 du port A Le compte sincrmente sur chaque front de lhorloge Il est accessible dans le registre TMR0
Clk
Out
Compteur
14
En timer Le signal dentre du compteur est celui de lhorloge (fo = fosc/4 = 1 MHz) Le compte sincrmente sur chaque front de lhorloge On peut positionner le compte de dpart une valeur choisie dans le registre TMR0. On utilise le bit de dbordement pour mesurer le temps coul entre le dpart et larrive 0 .
fosc
Horloge
fo
Diviseur ou pas
TMR0
Clk
Out
Compteur
15
16
1 : oui 0 : non
1 : oui 0 : non
1 : oui 0 : non
17
INTCON permet de connatre ltat du bit de dbordement ( dpassement timer = TOIF = timer output interrupt flag)
OPTION permet de dfinir, entre autres, les paramtres du timer/compteur source de lentre du compteur utilisation du diviseur valeur du diviseur
IUT ANNECY MPh-MC/2010-2011 Programmation de systmes embarqus 19
OPTION
NOT RBU RBi Vcc INTEDG Interruption externe 1 : front + 0 : front TOCS Source dhorloge 1: externe(*) 0 : fosc/4 RB0 / INT (*) RB4/TOCKl TOSE Front source externe 1 : front 0 : front + PSA Diviseur dhorloge 1: watchdog 0 : timer PS2 PS1 PS0
1 : non 0 : oui
20
4. Programmation
4.1 Procdure et logiciels
Pour utiliser le PIC, il faut respecter les phases suivantes :
1. criture du programme dans un langage volu 2. Traduction du programme en langage PIC (type assembleur : 35 instructions) 3. Transfert du fichier obtenu en mmoire flash du PIC 4. Mise en fonctionnement du PIC
21
Le positionnement dune broche du PIC permet de choisir entre les modes Chargement du programme (PGN) pour la phase 3 Normal (RUN) pour la phase 4
22
Nous utiliserons
Lditeur de texte ConText pour crire le programme en langage C : fichier xxx.c, puis partir de cette diteur, nous appellerons : Cc5x pour la cration du fichier en langage PIC : xxx.exe, puis NTPicprogVf pour le transfert de ce fichier de lordinateur vers la mmoire flash du PIC par liaison srie
23
Dans le logiciel utilis, le nom dun registre concide avec son adresse PORTB = 0b01011100 permet dcrire les 8 bits 01011100 ladresse 06 de la RAM
24
On peut utiliser les bases 2, 10 ou 16 : PORTB = 0b01011100 ; PORTB =92 ; PORTB = 0x5C ;
Pour dsigner le bit ni du registre XXX, on utilise XXX.I Exemple TRISA.0 dsigne le bit 0 du registre TRISA.
25
Grce lajout dun fichier en tte spcial (16f84.h), un nom est associ chaque bit de certains ports : RA0 = 1 ; quivaut PORTA.0 = 1; et permet de mettre 1 le bit 0 du port A sans modifier les autres.
26
# define TOIF
INTCON.2
27
On peut travailler sur un port en entier ou sur une ligne : TRISA.0 = 0; TRISB.5 = 1; RA0 = RB5; TRISB = 0b00000000; PORTB = 0b01010101;
28
fosc
Horloge
fo Diviseur
Clk
Out
Compteur
TMR0
OPTION.3 PSA
29
Remarques complmentaires
On travaille principalement avec des bits ou des octets. On peut utiliser la reprsentation binaire avec le logiciel ConText unsigned char octet; octet = 0b11001110;
30
5. Interruptions
5.1 gnralits
ncessit de mmoriser l'endroit, les variables.
arrive interruption
programme utilisateur
4 3
31
1. demande dinterruption
2. sauvegarde du contexte 3. traitement de l'interruption en excutant des lignes de programme : lecture et stockage des donnes
32
33
34
Le filtrage est une tape essentielle dans une chane dacquisition de donnes. Il permet disoler une frquence particulire ou dliminer des frquences parasites. Couramment utiliss, les filtres analogiques manquent de prcision et sont limits en types de gabarit disponibles. Le filtrage numrique na pas ces limitations. Il utilise des algorithmes de calcul implments dans des DSP ou des FPGA. Avantages : pas de drive, filtres exotiques, filtres facilement modifiables
35
Un filtre analogique reoit en entre un signal en tension x(t) et dlivre en sortie le signal filtr y(t). Le filtre modifie le spectre du signal dentre.
37
1.5
0.40
x(t)
0.0
0.20
-1.5 0.00
38
La FFT est une approximation de la transforme de Fourier dun signal s(t) chantillonn Fch observ sur une dure Tobs ( Tobs = Nch / Fch)
Le module de la FFT de s(t) concide avec |S(f)| si le signal est convenablement chantillonn et observ. pour 0 < f < Fch/2.
39
40
Les filtres qui ne ncessitent pas dalimentation sont appels filtres passifs : RC RLC quartz lignes imprimes Les filtres aliments sont appels filtres actifs : AOP + R + C Transistors + R + C capacits commutes
41
On sintresse ici la conception de filtres actifs amplificateurs oprationnels, rsistances et condensateurs, partir dun cahier des charges prcis : le gabarit.
42
2. Filtre et gabarit
Un filtre permet de traiter diffremment les diffrentes composantes spectrales dun signal.
x(t) X(f)
y(t) Y(f)
43
Un filtre rel ne supprime pas compltement les composantes hors bande, mais les attnue, dautant plus fortement que son ordre est lev.
45
Un gabarit reprsente les bornes de gain admises dans diverses bandes de frquence. Bande passante : gain nominal (0 dB souvent) + erreur maximum admise (a) Bande attnue : gain maximum admissible : b Bande passante fp et bande attnue fa. (slectivit k = fp/fa)
Exemple du filtre passe-bas de frquence de coupure fp a dB. Rq : rien nest prcis sur un tel gabarit en termes de phase.
46
47
Passe haut
|H(f)| 20 log (|H(f)|
chelle log en f
48
Passe bande
|H(f)| 20 log (|H(f)|
chelle log en f
Coupe bande
Rq : se familiariser avec ces deux reprsentations, utilises frquemment et mlanges .
IUT ANNECY MPh-MC/2010-2011 Programmation de systmes embarqus 49
20 log T 0 dB a dB fp fa f
b dB
50
3.2 Normalisation
La normalisation permet dobtenir des rsultats utilisables pour tous les filtres des 4 familles cites ci-dessus.
jf on pose s = f p
fa fp
f s = x = f p
1 0 dB a dB x1 x
alors
x1 =
>1
20 log T
b dB
51
T (x) =
1 1+ x
2n
Pour x = 1 ( f = fp)
52
53
54
+ Z1 Z3 Z4 -
H =
1 1 + Y 4 (Z 1 + Z 3 ) + Z 1 Z 3Y 1Y 4 )
55
H (f ) =
1 f f 1 + 2 jm fp fp
2
avec m =
et f p =
1 2 R C 1C 2
56
Dans le cas dun filtre passe-haut, passe bande ou coupe-bande, la normalisation permet de se ramener un gabarit normalis de type passe- bas, comme spcifi ci-dessous les tapes 3 et 4 sont inchanges ( 3.3 et 3.4) on revient une fonction de transfert par d-normalisation, en remplaant s par sa valeur en fonction de j, f et fp.
57
f = p jf
f s = x = p alors f
f x1 = p >1 f a
20 log T
20 log H 0 dB a dB fa fp
0 dB a dB
x1
b dB b dB
58
b dB
b dB
59
Les filtres analogiques se distinguent par une facilit de mise en uvre, un fonctionnement des frquences qui peuvent atteindre quelques gigahertz. Le revers de la mdaille rside dans la sensibilit de ces composants aux conditions externes (temprature, humidit). La non-matrise de leurs tolrances nuit galement la prcision du filtrage surtout dans le cas de filtres exigeants.
60
Pour saffranchir des limites des composants traditionnels, il existe une alternative : les filtres numriques.
Les
judicieux
assemblages
de
rsistances,
de
capacits,
damplificateurs oprationnels des filtres analogiques sont ici remplacs par des algorithmes de calcul implments dans des microprocesseurs DSP ou des composants spcifiques du type FPGA.
61
Un filtre numrique reoit en entre une valeur numrique xn et dlivre en sortie une valeur numrique yn fonction de lentre xn, des entres prcdentes xn-i et des sorties prcdentes yn-j Il est dcrit par une quation de rcurrence : yn = f(xn, xn-i, yn-j)
1. Filtre numrique
1.1 Dfinition
Un filtre numrique est un algorithme de calcul qui transforme une squence de nombre {xn} en une autre squence de nombres : {yn}.
{xn}
Filtre numrique
{yn}
Le calcul algorithmique est effectu par Le P dun microordinateur Le DSP dune carte son Un FPGA ( circuit logique programmable aprs sa conception)
63
La squence dentre {xn} est issue de la discrtisation dun signal analogique x(t) aux instants nTe : x(nTe) = xn
Filtre
x(t)
anti-repliement (FAR)
y(t)
{xn}
{yn}
La squence de sortie {yn}, un fois transforme en tension, devient la signal de sortie y(t) du filtre quivalent.
x(t)
y(t)
[1] La discrtisation est double : chantillonnage (temps) et quantification (valeur). Nous ne tenons pas compte ici de lerreur introduite par cette dernire (lerreur de quantification), on suppose que la rsolution de convertisseur est suffisamment leve!
64
yn =
bk . x n k
=0
a j .y n j
=1
Si les aj sont nuls, le filtre est dit itratif ou non-rcursif Si les aj ne sont pas nuls, il est dit rcursif.
65
x + x n 1 yn = n
2
Les filtres nonrcursifs sont rponse impulsionnelle finie : RIF Ils sont toujours stables.
66
x + y n 1 yn = n Ex 1 quation de rcurrence :
2
n xn yn-1 yn 0 1 0 1/2 1 0 1/2 1/4 2 0 1/4 1/8 3 0 1/8 1/16 4 0 1/16 1/32
xn n yn n
La rponse limpulsion est hn = (1/2)n Ce filtre possde une rponse impulsionnelle infinie, mais il est stable.
IUT ANNECY MPh-MC/2010-2011
67
La rponse limpulsion est hn = (2)n. La squence de sortie est divergente. Ce filtre possde une rponse impulsionnelle infinie, il est instable. Les filtres rcursifs sont rponse impulsionnelle infinie : RII Ils ne sont pas toujours stables.
68
X (z ) = TZ [x n ] =
z n . x n
=0
Un formalisme plus complet permet de montrer que la transforme en z est lquivalent, dans le monde numrique, de la transforme de Laplace, loutil mathmatique des signaux causaux de lanalogique.
69
Y (z ) =
0 n=
z n . y n =
0 n=
z n . x n 1
= z 1 x 0 + z 2 x 1 + z 3 x 2 ... = z 1 x 0 + z 1 x 1 + z 2 x 2 ... = z 1 X (z )
70
71
Y(z) H (z ) = X(z)
X(z)
Filtre numrique
Y(z)
Ex : La fonction de transfert du filtre numrique qui retarde dune unit scrit alors
H (z ) =
Y(z) = z 1 X(z)
72
yn =
bk . x n k
=0
a j .y n j
=1
Y (z ) =
b k . z k . X (z )
=0
j
=1
a j . z j .Y (z )
H (z ) =
Y (z ) = X (z )
k
1+
bk . z k a j .z j
=0
j
=1
73
H (z ) = TZ [hn ] =
z n
=0 +
. hn
La squence de sortie du filtre peut tre obtenue par convolution de la squence dentre avec la rponse impulsionnelle :
y n = x n hn =
xk k
=
. hn k = hn x n =
hk k
=
. x n k
74
analogique :
Filtre EchantillonneurBloqueur (Fch) + CAN Filtre numrique {hn} H(z) CNA + Lissage ventuel
x(t)
anti-repliement (FAR)
y(t)
{xn}
{yn}
On dduit la fonction de transfert du filtre analogique Ht ainsi constitu en remplaant z-1 par e-2jfTe = e-2jf/Fch dans H(z). Consquence : Ht(f) est priodique de priode Fch, comme e-2jf/Fch .
75
Remarque Un filtre qui, chaque instant nTe, reoit xn et dlivre xn-1 retarde le signal dentre de Te.
En utilisant les proprits de la transforme de Fourier : TF (x(t-a)) = X(f) e-2jfa, cette opration de retard temporel correspond dans le domaine frquentiel une multiplication par e-2jfTe. Ce qui justifie le fait de poser z-1 = e-2jfTe pour retourner dans le domaine analogique.
76
Ex : Soit un filtre issu d'un filtre numrique passe-bas parfait. Un tel filtre ne remplit son rle que pour des signaux de frquence f < Fch/2, soit des signaux "convenablement" chantillonns.
|Ht(f)|
f Fch/2
77
Do Tout filtre numrique est prcd d'un filtre passe-bas analogique qui limine toute composante qui ne satisfait au thorme d'chantillonnage, cest--dire toute composante de frquence suprieure Fch/2
78
Un filtre numrique peut tre construit pour avoir un effet le plus proche possible dun filtre analogique connu : ce sont les filtres rponse impulsionnelle infinie, rcursifs. pour avoir un effet le plus proche possible dun filtre analogique idal : ce sont les filtres rponse impulsionnelle finie, non-rcursifs.
79
yn =
k =
. xn k
80
yn =
k =
. x n k
nest utilisable avec un calculateur que si le nombre de termes de la suite est fini. La sortie ne peut pas dpendre des entres futures (systme causal) donc n-k n, soit k 0.
y n = h 0 x n + h1 x n 1 + h 2 x n 2 + ... + h N 1 x n (N 1) = h k . x n k
k =0
N 1
Elle comporte N termes, les N coefficients non nuls de la rponse impulsionnelle : RIF.
81
Illustration 1. Filtre idal, ici passe-bas de frquence de coupure 100 Hz 2. Calcul de la rponse impulsionnelle = TF-1(H(f))
H(f)
h(t)
1.0
100
0.8
80
60
0.6
40
0.4
20
0.2
-20
frquence
82
h(t)
1.0
60
0.5
40
0.0
20
-0.02
-0.01
0.00 t
0.01
0.02
0.03
h(t)
-0.03
-0.02
-0.01
0.00 t
0.01
0.02
0.03
100
80
60
40
20
-20
=
IUT ANNECY MPh-MC/2010-2011
-0.03
-0.02
-0.01
0.00 t
0.01
0.02
0.03
83
Consquences Tronquer la rponse impulsionnelle, pour obtenir une somme finie, quivaut multiplier la rponse impulsionnelle par une fentre rectangulaire, donc convoluer la rponse frquentielle par un sinus cardinal. Consquences : introduction d'oscillations dans les bandes passantes et attnues de la rponse frquentielle et largissement de la zone de transition. L'erreur due cette troncature sera attnue en appliquant une fentre de pondration non rectangulaire (ex : Hamming)
84
4. Echantillonnage de cette rponse pour obtenir hn Consquence Priodisation de la rponse en frquence 1/Tech
h(t)
100
80
60
40
20
-20
-0.03
-0.02
-0.01
0.00 t
0.01
0.02
0.03
85
100
80
60
40
20
-0.01
0 0.00
0.01 t
0.02
0.03
0.04
-20
86
0.6
1.2
0.5
1.0
0.4 0.8 0.3 Ht(f) 0.2 0.4 0.1 0.0 -0.1 0 2 4 6 8 10 12 14 16 18 20 22 0.6
0.2
0.0 0.00
0.05
0.10
0.15
0.20
0.25 f/Fe
0.30
0.35
0.40
0.45
0.50
87
0.6
1.2
0.5
1.0
0.4 0.8 0.3 Ht(f) 0.2 0.4 0.1 0.0 -0.1 0 5 10 15 20 25 30 35 40 45 50 55 0.6
0.2
0.0 0.00
0.05
0.10
0.15
0.20
0.25 f/Fe
0.30
0.35
0.40
0.45
0.50
88
0.6
1.2
0.5
1.0
0.4 0.8 0.3 Ht(f) 0.2 0.4 0.1 0.0 -0.1 0 5 10 15 20 25 30 35 40 45 50 55 0.6
0.2
0.0 0.00
0.05
0.10
0.15
0.20
0.25 f/Fe
0.30
0.35
0.40
0.45
0.50
89
Remarques Un tel filtre est appel Filtre rponse impulsionnelle finie (RIF) Filtre itratif ( yn ne dpend que des xn-i) ou non-rcursif Filtre phase linaire.
Une mthode quivalente celle prsente consiste calculer les {hn} par priodisation de H(f) et dcomposition en srie de Fourier, puis effectuer un fentrage.
90
Une autre mthode permet dtre plus fidle en frquence. Il sagit de la mthode dchantillonnage de la rponse en frquence souhaite : on impose que la fonction de transfert passe par certains points de H(f), et n'ondule pas trop entre ces points.
91
Et toujours extrait du mme article Pour une dtermination optimale des coefficients, on fait appel aux algorithmes Parks-McClellan et Remez. Cette mthode est base sur une distribution uniforme de londulation sur lensemble de la bande passante et de laffaiblissement sur toute la bande de rjection. Les filtres FIR rsultants ou filtres equiripple sont nettement plus performants que les filtres FIR fentrs et leur rponse en phase est galement linaire. La mthode recherche itrativement les paramtres afin quavec un ordre minimal, le gabarit soit respect au mieux. Par rapport un filtre FIR fentr, lordre dun filtre FIR equi-ripple est nettement infrieur ( gabarit identique). Londulation dans la bande passante et laffaiblissement minimal dans la bande de rjection sont configurables sparment.
92
On remplace la variable p par une fonction de z, cette transformation doit permettre d'obtenir Ht(f) le plus proche possible de H(f).
93
On obtient une fonction de transfert en z que lon peut mettre sous la forme :
H (z ) = b0 + b1z 1 + b2 z 2 + ... + bM z M
1 + a1z 1 + a 2 z 2 + ... + a N z N
94
Dmonstration :
b0 + b1 z 1 H( z ) = 1 + a1 z 1
95
Remarques : Si les ai sont nuls, on retrouve un filtre RIF avec bi = hi, sinon, un tel filtre possde une rponse implusionnelle infinie. yn est calcul de manire rcursive (en utilisant les yn-i)
Un tel filtre est appel Filtre rponse impulsionnelle infinie (RII) Filtre rcursif Filtre transversal
96
2 1 z 1 p= Te 1 + z 1
Cette transformation effectue une compression en frquence : une frquence f0 dun filtre analogique H(f) devient pour le filtre numrique Ht(f)
ft 0 =
1 arctan(f oT e )
T e
97
Ainsi, lintervalle de frquences [0, [ est transform en [0, Fch/2[. Donc si on souhaite obtenir un filtre numrique Ht(f) de frquence de coupure fto, il faut partir dun filtre de frquence de coupure :
f0 =
1 tg(ft 0Te ) Te
98
99
H(p) =
100
Transforme bilinaire :
H(z) =
101
Equation de rcurrence :
102
5. Mises en uvre
5.1 Mise en uvre
x(t)
xn
Calculateur PC + programme
yn
y(t)
103
5.2 Performances
RIF + simple concevoir stable phase linaire rponse impulsionnelle connue directement nombre de coefficients lev : retard sortie/entre bien adapt au temps diffr + transposition directe des filtres analogiques nombre de coefficients rduit : filtre temps rel
RII phase non linaire instabilit possible (si mauvaise prcision des coefficients)
104
105