1 / 30

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

Calcul et implantation des filtres numériques RIF et RII dans un DSP. 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)

hong
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. x(n-M) ...x(n-1) xn Entrée Calcul Sortie yn Filtres RIF yn = a0xn + a1x(n-1) … + aMx(n-M)

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

  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. +fc sin(2fct) h(t) = e j2f t df = t -fc 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 0 fc fe/2 t Fonction de transfert Coefficients et ak = Te h(kTe)

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

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

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

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

  12. Oscillations dues à la limitation du nombre de coefficients 17 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) = (0.24 + 0.24 z-1 ) / (1 - 0.52z-1) On en déduit: Yn = 0.24Xn +0.24 Xn-1 + 0,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 ; 100 mots de 16 bits = 200 octets réservés

  18. 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 : 0000000000 hexa

  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 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. 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. 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. 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 sortieFin 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. 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 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

More Related