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

Présentations similaires


Annonces Google