La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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 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 Bibliographie

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

4 Filtres RIF y n = a 0 x n + a 1 x (n-1) … + a M x (n-M) Entrée Sortie Calcul x (n-M)...x (n-1) x n ynyn

5 Filtres RII y n = a 0 x n + a 1 x (n-1) … + a M x (n-M) - b 1 y (n-1) - b 2 y (n-2) … … - b N y (n-N) Entrée Sortie Calcul x (n-M)...x (n-1) x n y (n-N) …y (n-1) y (n)

6 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 Comparaison RIF et RII

7 Les coefficients a i sont obtenus par échantillonnage de la transformée de Fourrier inverse de la réponse fréquentielle Calcul des coefficients d un filtre RIF passe-bas |H(f)| 0 fc fe/2 Fonction de transfert Coefficients Tr.Fourier 1 h(t) en bleu t et a k = T e h(kT e ) +f c h(t) = e j2 f t df = -f c t sin(2 f c t)

8 Décalage et fenêtrage temporel M+1 coefficients (M pair) 0 M/2 M a k sin (2.(k-M/2). f c /f e ).(k-M/2) a k = a M/2 = 2.f c /f e

9 Filtre RIF passe-haut |H(f)| 0 fc fe/2 1 a M/2 = 1- 2f c /f e sin (2 (k-M/2). f c /f e ) (k-M/2) a k = -

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

11 Filtre RIF passe-bande |H(f)| 0 f c1 f c2 fe/2 1 Coeff. = - ( Passe Bas + Passe Haut) Coeff M/2 = 1 - (PasseBas M/2 + PasseHaut M/2 )

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

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

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 y n = a 0 x n + a 1 x (n-1) … + a M x (n-M) - b 1 y (n-1) - b 2 y (n-2) …… - b N 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: Y n = 0.24X n X n-1 + 0,52 Y n-1

16 –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 x n en mémoire « données X» Calculer y n Envoyer y n en sortie Fin d interruption Programme de Filtrage RIF

17 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 ; 100 mots de 16 bits = 200 octets réservés Stockage des données en RAM

18 Initialiser W10, W8 et les buffers circulaires (routines d initialisation) Zone Données Y Zone Données X a 0 a a M-1 a M W10W8 x n x n-1 x n-2.. x n-M+1 x n-M Remarques: Le buffer Y contient les coefficients L e 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 a 0 a a M-1 a M W10W8 x n x n-1 x n-2.. x n-M+1 x n-M 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 Contenu de: W5 : a0 W4 : xn A : hexa a 0 a a M-1 a M W10W8 x n x n-1 x n-2.. x n-M+1 x n-M W5W4

22 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 a 0 a a M-1 a M W10W8 x n x n-1 x n-2.. x n-M+1 x n-M Contenu de: W5 : a1 W4 : xn-1 A : a 0 X n Premier « MAC » W5W4

23 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 a 0 a a M-1 a M W10W8 x n x n-1 x n-2.. x n-M+1 x n-M Contenu de: W5 : a2 W4 : xn-2 A : a 0 X n + a 1 X n-1 Deuxième « MAC » W5W4

24 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 a 0 a a M-1 a M W10W8 x n x n-1 x n-2.. x n-M+1 x n-M Contenu de: W5 : a2 W4 : xn-2 A : a 0 X n +a 1 X n-1 +…..a M-1 X n-M+1 Fin de REPEAT le calcul n est pas terminé…. W5W4

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

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 a 0 a a M-1 a M W10 W8 x n x n-1 x n-2.. x n-M+1 x n+1 Léchantillon le plus ancien est écrasé Les pointeurs sont bien alignés pour la suite du calcul….

28 Evolution des pointeurs W10 et W8 Zone Données Y Zone Données X a 0 a a M-1 a M W10 W8 x n x n-1 x n-2.. x n-M+1 x n+1

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

30 Début du 3ième calcul Zone Données Y Zone Données X a 0 a a M-1 a M W10 W8 x n x n-1 x n-2.. X n+2 x n+1 Le nouvel échantillon remplace le plus ancien


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

Présentations similaires


Annonces Google