• 0:00
    /
    0:00
    Loaded: 0%
    0:00
    Progress: 0%
    Stream TypeLIVE
    0:00
     
    1x
    Advertisement

Calcul et implantation des filtres numériques RIF et RII dans un DSP

Présentations similaires


Présentation au sujet: "Calcul et implantation des filtres numériques RIF et RII dans un DSP"— Transcription de la présentation:

1 Calcul et implantation des filtres numériques RIF et RII dans un DSP

2 Bibliographie Traitements numériques des signaux M.KUNT (Dunod)
Traitement du signal F.COTTET (Dunod) Cours d ’électronique numérique échantillonnée A.DELUZURIEUX et M.RAMI (Eyrolles) Datasheet et documentation en ligne des fabricants de DSP

3 Filtres numériques linéaires
Description des filtres RIF et RII Comment choisir RIF ou RII ? Algorithme et implantation dans le DSP 320LF2407 Calcul des coefficients

4 Filtres RIF x(n-M) ...x(n-1) xn Entrée Calcul Sortie yn
yn = a0xn + a1x(n-1) … + aMx(n-M) Entrée Sortie Calcul x(n-M) ...x(n-1) xn yn

5 Filtres RII x(n-M) ...x(n-1) xn Entrée Calcul Sortie
yn = a0xn + a1x(n-1) … + aMx(n-M) - b1y(n-1) - b2y(n-2) … … - bN y(n-N) Entrée Sortie Calcul x(n-M) ...x(n-1) xn y(n-N) …y(n-1) y(n)

6 Comparaison RIF et RII Filtre à réponse impulsionnelle finie (FIR)
toujours stable phase linéaire (retard constant indépendant de f) les performances dépendent de M Le calcul des coefficients est facile Filtres à réponse impulsionnelle infinie (IIR) grandes performances avec peu de calculs peuvent osciller : il faut étudier la stabilité on peut les calculer à partir des résultats des filtres analogiques

7 Calcul des coefficients d ’un filtre RIF passe-bas
Les coefficients ai sont obtenus par échantillonnage de la transformée de Fourrier inverse de la réponse fréquentielle h(t) en bleu |H(f)| Tr.Fourier 1 fc fe/2 t Fonction de transfert Coefficients +fc h(t) = e j2f t df = -fc t sin(2fct) et ak = Te h(kTe)

8 Décalage et fenêtrage temporel
a k sin (2.(k-M/2). fc/fe) ak = .(k-M/2) M/ M aM/2 = 2. fc/fe M+1 coefficients (M pair)

9 |H(f)| ak = - sin (2(k-M/2). fc/fe) 1 (k-M/2) aM/2= 1- 2fc/fe
Filtre RIF passe-haut |H(f)| fc fe/2 1 sin (2(k-M/2). fc/fe) (k-M/2) ak = - aM/2= 1- 2fc/fe

10 Filtre RIF coupe-bande (rejecteur ou notch)
|H(f)| 1 fc fc fe/2 Coeff. = coeff. Passe Bas + coeff. Passe Haut

11 Filtre RIF passe-bande
|H(f)| fc fc fe/2 1 Coeff. = - ( Passe Bas + Passe Haut) Coeff M/2 = 1 - (PasseBasM/2 + PasseHautM/2 )

12 Oscillations dues à la limitation du nombre de coefficients
|H(f/fe)| 20log(|H|) Phase en deg.

13 Pondération des coeff. par une fenêtre de Hamming
ak’ = ak.[0.54+(1-0.54).cos(2..(k-M/2)/(M+1))] 17 coefficients |H(f/fc)| 20log(|H|) Phase en deg.

14 Calcul des filtres RII à partir d ’un modèle analogique H(p)
La méthode présentée est basée sur une approximation de Z Z = e pTe  (1 +pTe/2)/(1-pTe/2) => p  2.Fe (1- z-1)/(1+ z-1) 1) On détermine H(p) à partir du gabarit en analogique 2) On remplace p par l ’expression ci-dessus. 2) H(z) permet d ’obtenir l ’équation de récurrence yn = a0xn + a1x(n-1) … + aMx(n-M) - b1y(n-1) - b2y(n-2) …… - bN y(n-N)

15 Exemple Soit un passe-bas du premier ordre fc = 1kHz
H(p) = 1/(1+ p/c) En remplaçant p on obtient un équivalent numérique : Avec fe = 10kHz on obtient: H(z) = ( z-1 ) / ( z-1) On en déduit: Yn = 0.24Xn Xn ,52 Yn-1

16 Programme de Filtrage RIF
Initialisation Configuration des registres de contrôle: horloge, multiplexage des pattes, ADC, Timer, IRQ... Acquisition de l ’entrée x déclenchée par un Timer Stockage des coefficients dans la mémoire « donnée Y » Configurer les buffers circulaires et les registres pointeurs Configurer CORCON (saturation, virgule fixe) Autorisation de l ’ interruptions ADC Puis boucle infinie ou autre tâches…. Traitement par interruption ADC (ou Timer) Lire et stocker xn en mémoire « données  X» Calculer yn Envoyer yn en sortie Fin d ’interruption

17 Stockage des données en RAM
Coefficients en « mémoire Y » : .section .ydata, "d" Coeff: .word 0x1234, 0x5678, 0x9abc, 0xdef0, 0xabab Réservation de mémoire pour stocker les échantillons « mémoire X » .section .xbss, "b" Buffer_X: .space 2* ; 100 mots de 16 bits = 200 octets réservés

18 Le contenu du buffer X est nul au départ
Initialiser W10 , W8 et les buffers circulaires (routines d ’initialisation) Zone Données Y Zone Données X a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. xn-M+1 xn-M W10 W8 Remarques: Le buffer Y contient les coefficients Le contenu du buffer X est nul au départ

19 Routine de traitement

20 Stocker l ’échantillon Xn à l ’adresse pointée par W8
Zone Données Y Zone Données X a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. xn-M+1 xn-M W10 W8 MOV ADCBUF0,W0 MOV W0, [W8]

21 Initialiser W4 et W5 et l ’accumulateur: CLR A, [W8]+=2,W4, [W10]+=2,W5
Zone Données Y Zone Données X a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. xn-M+1 xn-M W5 W4 W10 W8 Contenu de: W5 : a0 W4 : xn A : hexa

22 a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. xn-M+1 xn-M
REPEAT #M-1 (ATTENTION =faire M fois) MAC W4*W5, A, [W8]+=2,W4, [W10]+=2,W5 Zone Données Y Zone Données X a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. xn-M+1 xn-M W5 W4 W10 W8 Premier « MAC » Contenu de: W5 : a1 W4 : xn-1 A : a0Xn

23 a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. xn-M+1 xn-M
REPEAT #M-1 (ATTENTION =faire M fois) MAC W4*W5, A, [W8]+=2,W4, [W10]+=2,W5 Zone Données Y Zone Données X a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. xn-M+1 xn-M W5 W4 Deuxième « MAC » W10 W8 Contenu de: W5 : a2 W4 : xn-2 A : a0Xn + a1Xn-1

24 le calcul n ’est pas terminé….
REPEAT #M-1 (ATTENTION =faire M fois) MAC W4*W5, A, [W8]+=2,W4, [W10]+=2,W5 Zone Données Y Zone Données X a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. xn-M+1 xn-M W10 W8 Fin de REPEAT le calcul n ’est pas terminé…. W5 W4 Contenu de: W5 : a2 W4 : xn-2 A : a0Xn +a1Xn-1+…..a M-1 X n-M+1

25 les pointeurs sont bien positionnés
MAC W4*W5, A, [W8]-=2,W4, [W10],W5 Zone Données Y Zone Données X a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. xn-M+1 xn-M W10 Fin du premier calcul les pointeurs sont bien positionnés W8 Contenu de: W5 : a0 W4 : xn-2 A : a0Xn +a1Xn-1+…..a M-1 X n-M

26 Envoyer le résultat en sortie Fin de la routine de traitement

27 Stocker l ’échantillon suivant à l ’adresse pointée par W8
Zone Données Y Zone Données X a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. xn-M+1 xn+1 W10 L’échantillon le plus ancien est écrasé Les pointeurs sont bien alignés pour la suite du calcul…. W8

28 Evolution des pointeurs W10 et W8
Zone Données Y Zone Données X a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. xn-M+1 xn+1 W8 W10

29 W8 pointe sur l’échantillon le plus ancien
Fin du deuxième calcul Zone Données Y Zone Données X a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. xn-M+1 xn+1 W10 W8 W8 pointe sur  l’échantillon le plus ancien

30 Début du 3ième calcul a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. Xn+2 xn+1
Zone Données Y Zone Données X a0 a1 ... .. aM-1 aM xn x n-1 x n-2 .. Xn+2 xn+1 W10 W8 Le nouvel échantillon remplace le plus ancien


Télécharger ppt "Calcul et implantation des filtres numériques RIF et RII dans un DSP"
Annonces Google