0 20 40 60 80 100 120 140 -0.13 -0.09 -0.05 -0.01 0.03 0.07 0.11 0.15 0.19 Partie voisØe du mot six (au milieu du mot) 0 20 40 60 80 100 120 140 -0.03 -0.02 -0.01 0.00 0.01 0.02 Partie non-voisØe du mot six (aux 3/4 du mot) Module de Traitement NumØrique du Signal - DSP 10h cours + 12h TP (52h + 43h) www-dsp.efrei.fr Benot Decoux [email protected]
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
IntroductionSpécificité par rapport aux microcontrôleursCodage des donnéesSchéma fonctionnel de la chaîne de traitement des systèmes à DSPArchitectureDSP56303 de Motorola
III) Filtrage numériqueIntroductionImportance des filtres du 1er et du 2e ordreLa transformée en Z, outils détude des systèmes échantillonnés
DéfinitionPropriétés élémentairesDe la fonction de transfert en z à léquation aux différences
Principes de programmationBuffers linéairesBuffers circulaires
Programmation des filtresProgrammation C/C++Programmation assembleur DSP56303
Sturctures de réalisationTest des filtres programmésSynthèse des filtres
Filtres RIITransformée bilinéaireTransformée par équivalence de la dérivation
Filtres RIFSynthèse par transformée de Fourier inverse (TFD-1)Synthèse par série de Fourier de la réponse en fréquence
Comparaison des propriétés des filtres RII et RIF
IV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)RappelsPrincipales propriétés de la TFD vue comme une boîte noireTransformée de Fourier Rapide (TFR)
Approche "boîte noire«Calcul détailléAlgorithmes
Analyse spectraleV) Synthèse de signal
Synthèse par table dondeSynthèse par équation de récurrenceGénération de bruit
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
II) Principes des DSPII.1) Introduction
Types dapplications- Filtrage numérique (séparation de fréquences, traitement dimages)- Compression-décompression (de signal, dimages)- Cryptage-décryptage- Analyse spectrale (par TF, transformée en sinus/cosinus, transformée en ondelettes)- Génération de signaux- Modulation de signal (amplitude, fréquence, phase)- etc
Domaines dapplication- Télécommunications (modulation pour transmission, diminution de bruit ou décho)- Communication de données (modems)- Communications radio (téléphone cellulaire)- Ordinateurs (accélérateurs graphiques, multimédia)- Instrumentation (analyseur spectral)- Electronique médicale (analyse de signaux physiologiques)- Télévision numérique
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
DSP
-Spécialisé pour le calcul-Architecture de Harvard-Formats internes variés-Accès à plusieurs blocs-mémoire-Multiplication en 1 cycle dhorloge-Modes dadressage spéciaux-Mémoire interne-Possibilité de raccorder directement des DSP entre eux-Entrées-sorties (RS-232, CODEC, réseau...)-Basse consommation par contrôle de la fréquence dhorloge
Microprocesseur
-Usage général-Architecture de Von Neuman-Format interne fixé-Accès à une mémoire unique-Multiplication en ~100 cycles dhorloge-Modes dadressage général-Mémoire externe-Pas prévu pour le multi-processing-Pas dentrées-sorties-Fréquence dhorloge unique
Traitement Numérique du Signal - DSP
II) Principes des DSPII.2) Spécificités par rapport aux microcontrôleurs
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
DSP
virgule fixe
16 bits 24 bits
virgule flottante
32 bits
architecture simple peu cher, consommation faible" programmation rigide (-1.0 +1.0)
" architecture complexe" cher, consommation importante programmation facile
II) Principes des DSPII.3) Codage des données
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
II) Principes des DSPII.3) Codage des données
Virgule fixe
1 bit(s) de signe et n bits pour la partie fractionnaire : format noté Qn ou [1-n]Cas du DSP56303 : mémoire au format Q23 ou [1-23]
Exemple
=1,19x10-72-(n-1)Précision=167772162nNombre de valeurs possibles
= 0,99999988min=-1,0 ; max=1- 2-(n-1) =1-précisionValeurs min et max
cf schéma-20, 2-1, 2-2, , 2-(n-1)Poids des bitscas du [1-23]Cas général
Quel nombre représente $FFFFFF ?
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
II) Principes des DSPII.3) Codage des données
Virgule fixe, format mixte
Dans le cas du DSP56303, il existe le format à virgule fixe dit "mixte" noté [9-47] : 9 bits pour la partie entière et 47 pour la partie fractionnaire :
Multiplication et accumulation (MAC)mac X0,X0,A ; A=A+X0*X0
Transferts parallèlesmac X0,Y0,A X:(R0)+,X0 Y:(R1)+,Y0 ; Idem précédent mais avec mise à jour des pointeurs.
Cette ligne dinstruction est exécutée en 1 cycle dhorloge.
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
II) Principes des DSPII.6) DSP56303 de Motorola
Exemples dutilisation(Attention, les registres X et Y portent le même nom que les blocs mémoire X et Y ;
Mais ils sutilisent différemment)
Format à respecter
lab1 mac x0,y0,a x:(r0)+,x0 y:(r4)+,y0 ; commentaires
champcommentaires
transfertsmém.Y
transfertsmém.X
champ opérandes
champ opération
champ label
move x:(R0),X0 ; adressage indirect
move x:(R0)+,X1 ; avec post-incrémentation de R0 de 1
move x:(R0)-,X1 ; avec post-décrémentation de 1
move x:-(R0),X1 ; avec pré-décrémentation de 1
move x:(R0)+N0,X0 ; avec post-incrémentation du contenu de N0
move x:(R0)-N0,X1 ; avec post-décrémentation du contenu de N0
move x:(R0+N0),X0 ; indexé par R0+N0
Transferts (suite)
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
II) Principes des DSPII.6) DSP56303 de Motorola
Utilisation pratique
La carte est fournie avec un programme basique de gestion des entrées/sorties sans traitement (pass.asm). Il comporte lalgorithme suivant :
- Initialisation du DSP (fréquence dhorloge, etc)- Initialisation du CODEC (fréquence déchantillonnage, etc)- Initialisation du traitement- Répéter indéfiniment :
- Attente dun échantillon du CODEC (*)- Acquisition des échantillons droite et gauche- Saut à la routine de traitement (génération échantillons droite et gauche traités)- Envoi des échantillons résultats en sorties du CODEC
(*) Détail de la synchronisation sur la fréquence déchantillonnage :
jset #2,x:SSISR0,* ; wait for frame sync to pass
jclr #2,x:SSISR0,* ; wait for frame sync
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
III) Filtrage numériqueIII.1) Introduction
Dans le cas général (RII), la boîte noire doit donc comporter de la mémoire pour les échantillons e(n-i) et s(n-i) :
Traitement Numérique du Signal - DSP
Il existe deux grands types de filtres numériques : RII : à réponse impulsionnelle infinie (contient des termes en e(n-i) et des termes en s(n-i)) ; RIF : à réponse impulsionnelle finie (ne contient que les termes en e(n-i).
)Qn(sb...)2n(sb)1n(sb)Pn(ea...)1n(ea)n(ea)n(s Q21P10 −++−+−+−++−+=Equation aux différences ou de récurrence dun filtre numérique :
Filtre numérique vu comme une boîte noire :
ou plus simplement :
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
III) Filtrage numériqueIII.1) Introduction
Traitement Numérique du Signal - DSP
Pourquoi "Réponse Impulsionnelle Finie" et "Réponse Impulsionnelle Infinie" ?
)1n(ks)n(e)n(s −+=Prenons lexemple du filtre déquation de récurrence :
Appliquons lui une impulsion de Kronecker (δk=1,0,0,0,., équivalent de limpulsion de Dirac en continu).
- si k>1, le signal de sortie s(n) peut diverger vers des valeurs infinies- si k=1, s(n) grade une valeur constante- si k<1, s(n) tend vers 0 quand n tend vers linfini
Approche "intuitive" :
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
III) Filtrage numériqueIII.2) Importance des filtres du 1er et du 2e ordre
Tout filtre dordre n quelconque peut se décomposer en filtres élémentaires dordre 1 et 2.
Traitement Numérique du Signal - DSP
Du point de vue des fonctions de transfert, cela correspond à une multiplication.
Du point de vue des schémas-blocs, cela correspond à une mise en cascade (=en série)
H(p)=H1(p)× H2(p)× ×Hn(p)Filtrage analogique :
Filtrage numérique :
H(z)=H1(z)× H2(z)× ×Hn(z)
Avantage de cette décomposition pour le codage en virgule fixe : valeurs des coefficients des filtres élémentaires plus élevées, donc codées avec plus de précision
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
III) Filtrage numériqueIII.3) La transformée en Z, outil détude des systèmes échantillonnés
III.3.1) Définition
TZ dun signal numérique s(n) :
Traitement Numérique du Signal - DSP
∑∞
=
−=0n
nz)n(s)z(S
Rappels sur la transformée de Laplace
Transformée dune impulsion de Dirac :
Transformée dune impulsion de Dirac décalée :
Transformée dun peigne de Dirac :
[ ] 1)t(L =δ
[ ] pe)t(L τ−=τ−δ
∑∑ −=
−δn
pnT
ne
ee)nTt(L
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
III) Filtrage numériqueIII.3) La transformée en Z, outil détude des systèmes échantillonnés
III.3.2) Propriétés élémentaires
Linéarité
Traitement Numérique du Signal - DSP
Retard temporel
[ ] )z(Ea)z(Ea)n(ea)n(eaZ 22112211 +=+
[ ] )z(Ez)nn(eZ 0n0
−=−
Fonction de transfert en Z et réponse impulsionnelle
)z(E)z(S)z(H =
1Zk →δ )z(S
1)z(S)z(H ==
∑∞
=
−=0n
nz)n(h)z(H
la fonction de transfert est la TZ de la réponse impulsionnelle
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
III) Filtrage numériqueIII.3) La transformée en z, outil détude des systèmes échantillonnés
III.3.3) De la fonction de transfert en z à léquation de récurrence
Forme générale de la fonction de transfert en z du filtre numérique :
Traitement Numérique du Signal - DSP
∑
∑
=
−
=
−
−−−
−−−
−=
−−−−++++== Q
1q
qq
P
0p
pp
QQ
22
11
PP
22
110
z.b1
za
zb...zbzb1za...zazaa
)z(E)z(S)z(H
E(z) et S(z) représentent respectivement les transformées en z des échantillons dentrée e(n) (avec n=kTe) et de sortie s(n) courants :
Les échantillons précédents nécessaires, ainsi que les coefficients, doivent être mémorisés :
Les coefficients sont fixes, mais les mémoires déchantillons doivent être mises à jour à chaque
nouveau s(n)
Traitement Numérique du Signal - DSP
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
La méthode la plus intuitive consiste à décaler les échantillons. Exemple pour le 2e degré :
Traitement Numérique du Signal - DSP
Exemple :
Calcul de s(9) :
Décalages :
pas la meilleure méthode
)2n(sb)1n(sb)2n(ea)1n(ea)n(ea)n(s 21210 −+−+−+−+=
Calcul de s(10), etc
III.4) Principes de programmationIII.4.2) Buffers linéaires
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
méthode la plus efficace
1) Calcul de s(n) : les pointeurs effectuent un tour complet moins 1 case
2) Mise à jour : seul léchantillon le plus ancien est écrasé par les nouveaux échantillons àmémoriser e(n) et s(n) :
3) Calcul du s(n) suivant : les indices n-i deviennent n-i-1
Idem, pour les s(n-i), puis le processus se répète
Pour tous les s(n) à calculer, répéterCalcul du nouvel échantillon de sortie s(n) à laide de léquation aux différencesMise à jour des mémoires déchantillons : remplacer e(n-P) par e(n), et s(n-Q) par e(n)
Algorithme :
III.4) Principes de programmationIII.4.2) Buffers circulaires
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
Exemple : filtre du 2e degré
Calcul de s(9) :
Mise à jour :
Calcul de s(10) : n est devenu n-1
etc.
III.4) Principes de programmationIII.4.2) Buffers circulaires
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
Exemple de programmation
III.5) Programmation des filtresIII.5.1) Programmation C/C++
class FiltreRII public:
Filtre (); // constructeur (allocations mémoire)~Filtre (); // destructeur (désallocations)FLOAT eqdiff(FLOAT e); // calcul de s(n) par application de l‘équation aux différences
private:FLOAT *a, *b; // buffers pour coef. du filtre (resp. numérateur et dénominateur)UWORD na, nb; // nombre de coefficients du filtre (resp. a(i) et b(i))UBYTE ia, ib; // indice de pointage dans le buffer des coefficients resp. a et bFLOAT *em, *sm; // buffers pour mémo. des éch. passés, resp. d'entrée et de sortie
;
// ConstructeurFiltreRII::FiltreRII(int na, int nb)
2e appel à la fonction : passage de léchantillon e1s=a0e1Boucle 1i=0 ind=0 s=s+a1e0i=1 ind=1 s=s+a2×0Boucle 2i=0 ind=0 s=s+b0s0i=1 ind=1 s=s+b1×0Résultat : s1= a0e1+a1e0+b0s0
em=e0, e1sm=s0, s1ia=0 ; ib=0
3e appel à la fonction : passage de léchantillon e2s=a0e2Boucle 1i=0 ind=1 s=s+a1e1i=1 ind=0 s=s+a2e0Boucle 2i=0 ind=1 s=s+b0s1i=1 ind=0 s=s+b1s0Résultat : s2=a0e2+a1e1+a2e0+b0s1+b1s0
em=e2, e1sm=s2, s1ia=1 ; ib=1
III.5) Programmation des filtresIII.5.1) Programmation C/C++
voir programmes complets sur www-dsp.efrei.fr
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
III.5) Programmation des filtresIII.5.2) Programmation assembleur DSP56303
Traitement Numérique du Signal - DSP
org X:$20 ;attention, "pass.asm" met des choses en X:0a0 dc 0.25a1 dc 0.25a2 dc 0.25a3 dc 0.25en dsm 4 ;emplacements mémoire pour e(n), e(n-1), e(n-2) et e(n-3)...
III.5) Programmation des filtresIII.5.2) Programmation assembleur DSP56303
Traitement Numérique du Signal - DSP
Filtres en cascade
Réservation demplacements en mémoire plus grands pour les échantillons :org Y:$0
en dsm 4sn dsm 4
Augmentation de la taille des modulo :move #en,R4 ; R4 pointe sur la zone mémoire ‘en’move #3,M4 ; zone de mémoire ‘en’ modulo move #sn,R5 ; idem pour sn avec R5 et M5move #3,M5 ;
Utilisation de registres dincrémentation Ni associés aux registres pointeurs Ri :move #2,N4 ; pour le passage d’un filtre à l’autre : tampon échantillons d’entréemove #2,N5 ; idem pour échantillons de sortie
Routine de filtrage (les parties ajoutées ou modifiées sont mises en gras) :filtrage
do #2,fin_fltrmove A,Y1 ; Y1=e(n) à la 1ère itér.,
; incrém. pour la proch. itér.asl A X:(R0)+,X0 ; A=2.A=s(n) ; X0=a_0move A,Y:(R5)+N5 ; s(n) dans s(n-2) ; incrém. pour la proch. itér.
fin_fltrrts
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
III.6) Structures de réalisation
Forme directe
Traitement Numérique du Signal - DSP
e(n) a0
z-1
a1
aJ
b1
bK
s(n)
Forme canoniquee(n) a0
a1
s(n)
aJbK
b1
Principal intérêt : possibilité de normaliser les coefficients ai et bi indépendamment
)Ln(wa...)1n(wa)n(wa)n(s L10 −++−+=
2 équations séparées :
)Kn(wb...)1n(wb)n(e)n(w K1 −−−−−=
z-1
z-1
z-1
z-1
z-1
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
III.7) Test des filtres programmés
Exemple : filtre RIF
Traitement Numérique du Signal - DSP
clearN=21;h=zeros(1,N);d=zeros(1,N);
h(1)=0h(2)=-0.02078865h(3)=-0.03784134;h(4)=-0.04324724;h(5)=-0.03118298;h(6)=0;h(7)=0.04677446;h(8)=0.10091023;h(9)=0.15136535;h(10)=0.18709786;h(11)=0.2;h(12)=0.18709786;h(13)=0.15136535;h(14)=0.10091023;h(15)=0.04677446;h(16)=0;h(17)=-0.03118298;h(18)=-0.04324724;h(19)=-0.03784134;h(20)=-0.02078865;h(21)=0;somme=sum(h)h=h/somme; //pour que la somme des coefficients soit égale à 1
Commentaires : - symétrie % centre ;- résolution fréquentielle faible nécessité dun grand nombre de coefficients
Avec N=10, la résolution fréquentielle est 441010
44100Nfe ==
Les seules valeurs possibles pour fc sont donc 0Hz, 4410Hz, 8820Hz, etc 8820Hz
+ symétrie % au N/2e=5e point (dindice 4)
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
Principe
Part du constat que la réponse en fréquence désirée est une fonction périodique de période fe(conséquence de léchantillonnage) on peut la développer en série de Fourier
∑+∞
−∞=
π=
k
Tt2jk
k e.c)t(s avec ∫π−
=T
0Tt2jk
k dte).t(sT1cCas classique :
Ici : ∑+∞
−∞=
π=
k
ff2jk
kee.g)f(H avec ∫
π−= e
ef
0
ff2jk
ek dfe).f(H
f1g
∫
π= ef
0ee
k dfffk2cos).f(H
f1gOn annule la partie imaginaire :
passe-bas : passe-haut :
( )∫ π=5,0
0k dFkF2cos).f(H2gSimplification :effF =
Décalage pour causalité : pkk gh −= avec2Np = si N pair,
21Np −= si N impair
III.8) Synthèse des filtresIII.8.2) Filtres RIF
b) Synthèse pas développement en série de Fourier de la réponse fréquentielle
(1)
Développement de (1) :
, k=0,,N-1
( )ck F)pk(2sin)pk(
1h −ππ−
= ( )ck F)pk(2sin)pk(
1h −ππ−
−=
+ passe-bande, coupe-bande :
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
Algorithme du cas passe-bas
Lire la valeur de N (nombre de coefficients du filtre)Si N pair
p=N/2sinon
p=(N-1)/2Lire la valeur de la fréquence de coupure normalisée FcPour k variant de 0 à N-1 //calcul des coefficients h(i) du filtre
Si k!=ph(k+1)=sin(2*pi*(k-p)*Fc)/((k-p)*pi); //k-p pour le décalage
sinonh(k+1)=2*Fc; //sinus(x)/x pour x=0 traité à part
Normaliser les coefficients h(i)
III.8) Synthèse des filtresIII.8.2) Filtres RIF
b) Synthèse pas développement en série de Fourier de la réponse fréquentielle
N=10if modulo(N,2)==0 //si N pair
p=N/2;else
p=(N-1)/2; //si N impairEndFc=0.01for k=0:N-1
if k~=ph(k+1)=1/(k-p)/%pi*sin(2*Fc*(k-p)*%pi);
elseh(k+1)=2*Fc; //cas sin(x)/x pour x=0 traité à part
endendsomme=sum(h);h=h/somme //normalisation des coefficients
Exemple de programme Scilab
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
III.8) Synthèse des filtresIII.8.2) Filtres RIF
b) Synthèse pas développement en série de Fourier de la réponse fréquentielle
Traitement Numérique du Signal - DSP
fréquence de coupure relative : Fc=0,01
( )ππ
= k02,0sink1gkpasse-bas , k=-5,,5
pkk gh −=et
, k=0,,9( )π−π−
= )5k(02,0sin)5k(
1hk
52Np ==avec
Exemple : Réalisation dun filtre passe-bas avec fe=44100Hz, fc=4410Hz et N=10
Traitement Numérique du Signal - DSPIII.8) Synthèse des filtres
III.8.2) Filtres RIFb) Synthèse pas développement en série de Fourier de la réponse fréquentielle
Par exemple, la fenêtre de Hamming est couramment utilisée :
, k=-(N-1)/2,0,,(N-1)/2
(= 0 pour les autres valeurs de k)
π×+=
N2kcos46,054,0w k
Améliorations des résultats par fenêtrage progressif
Les ondulations de la réponse fréquentielle obtenue sont dues à un fenêtrage rectangulairede la réponse impulsionnelle du filtre (voir propriétés de la Transformée de Fourier)
Traitement Numérique du Signal - DSPIII.9) Comparaison des propriétés des filtres RII et RIF
Filtres RII
Avantages- peu de coefficients donc calcul rapide- modélisation des filtres analogiques (et notamment possibilité dobtenir des résonances)
Inconvénients- risque dinstabilité surtout pour les grands facteurs de qualité- les coefficients doivent être codés avec beaucoup de précision (conséquence du risque dinstabilité)- phase non-linéaire (se traduit par une déformation du signal). Rm : le temps de propagation de groupe
est défini par :
Il correspond au temps de transfert de lénergie du signal dentrée vers sa sortie. Il doit être constantsinon le signal subit une déformation par le filtre.
Filtres RIF
Avantages- pas de risque dinstabilité- phase linéaire- permet de synthétiser nimporte quelle fonction de transfert (sauf résonances)
Inconvénients- nombreux coefficients surtout pour les pentes raides et les bandes passantes étroites
ωϕ=
ddtg
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.1) Rappels
Définitions
En continu, les Transformées de Fourier (TF) directe et inverse sont définies respectivement par :
La TF est une fonction complexe, même si le signal temporel est réel.Définitions correspondantes dans le domaine discret :
∫∞
∞−
π−= dte)t(x)f(X ft2j ∫∞
∞−
π= dfe)f(X)t(x ft2j
∑−
=
π−=
1N
0n
Nkn2j
e).n(xN1)k(X ∑
−
=
π
=1N
0n
Nnk2j
e).n(X)k(x k=0, 1, , N-1
Propriétés
- La TF dune fonction paire est paire et réelle - La TF dune fonction impaire est impaire et imaginaire pure
Propriétés de l’échantillonnage
Réplication des spectres de fréquence tous les fe
fréquences négatives !
Concrètement, on ne sintéresse quaux fréquences comprises entre 0 et fe/2
x(n) échantillons de signalde 0 à (N-1)Te
X(n) échantillons du spectre de fréquencede 0 à (N-1)fe/N
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.2) Principales propriétés de la TFD vue comme une boîte noire
- Nombre dentrées = nombre de sorties- Entrées=échantillons de signal ; sorties=échantillons du spectre de fréquence de ce signal- Fréquences des sorties :
i=0,,N-1 ; fe fréquence déchantillonnage
Nfif e
i ×=
Conséquence : ie sortie (dindice i+1) correspond au nombre de périodes de signal dans les N échantillons
0 1 0 -1 0 1 0 -1
0 0 -0,5j 0 0 0 0,5j 0
Exemples
0 1 0 -1
0 -0,5j 0 0,5j
- Les entrées et les sorties de la TFD sont des nombres complexes. En pratique :- le signal dentrée constitue la partie réelle, et la partie imaginaire est prise égale à 0 ;- on ne sintéresse souvent quau module de la sortie.
Explication :
[ ])ff()ff(2j)f(S 00 −δ−+δ=)ft2sin()t(s π=
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
Exemples
TFD
0 1 7
1Im(S(f))
1 7
0,5
-0,5
IV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)IV.2) Principales propriétés de la TFD vue comme une boîte noire
0 7
1
TFD
|S(f)|
1 7
0,5
Re(S(f))
7
0,5
|S(f)|
1 7
0,5
1
sin(2πft)
cos(2πft)
1
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
- = algorithme de calcul rapide de la TFD- Basé sur les propriétés de lexponentielle complexe- Ne sapplique que si le nombre d échantillons est une puissance de 2- Intérêt : permet des applications temps-réel : analyse spectrale, modification du contenu fréquentiel
dun signal, etc.
Principales propriétés de la TFR vue comme une boîte noire
- ne sapplique quà des nombres N déchantillons qui sont des puissances de 2 (512, 1024, 2048,).- les sorties de la TFR ne sont pas dans lordre naturel par rapport à lordre des sorties de la TFR.
- Sur le DSP 56303, il existe un mode dadressage dit "en bits inversés", qui permet de retrouver lordre naturel.
IV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)IV.3) Transformée de Fourier Rapide (TFR)
a) Approche "boîte noire"
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
kN
12/N
0n
kn
2N
kn
2N
12/N
0nWW)1n2(xW)n2(x)k(X
++= ∑∑
−
=
−
=
k2/N
k2N W
2N
k2jexpN
k22jexpW =
π−=
π−=
)1n2(kN
12/N
0n
12/N
0n
n2kN W)1n2(xW)n2(x)k(X +
−
=
−
=∑∑ ++= k
N
12/N
0n
n2kN
12/N
0n
n2kN WW)1n2(xW)n2(x
++= ∑∑−
=
−
=
Coût de calcul : (N/2)2+(N/2)2+N/2 au lieu de N2
Séparation des termes pairs et impairs :
or :
doù
TFD de N/2 points
Définition (rappel) :∑
−
=
π−=
1N
0n
Nkn2j
e).n(x)k(X
TFD de N/2 points
Décompositions successives : Nlog2(N) au lieu de N2
IV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)IV.3) Transformée de Fourier Rapide (TFR)
b) Calcul détaillé
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)b) Calcul détaillé
Schéma correspondant :
jusquà létape finale, des TFD de 2 points :
Les 2 blocs constituent des TFD de N/2 points non simplifiées
on peut les décomposer de la même manière
x(n)
x(n+N/2)-
+
++
kNW
Décomposition appelée "décimation en temps"
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSP
Exemple pour N=8 :
IV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)IV.3) Transformée de Fourier Rapide (TFR)
b) Calcul détaillé
x(0)x(1)
x(2)
x(3)
x(4)
x(5)
x(6)x(7)
X(0)X(4)
X(2)X(6)
X(1)
X(5)
X(3)X(7)
TFD8 points4 pap.
TFD4 points2 pap.
TFD4 points2 pap.
TFD2 points
TFD2 points
TFD2 points
TFD2 points
Il existe également la décimation en fréquence :x(0)x(1)
x(2)
x(3)
x(4)
x(5)
x(6)
X(0)X(4)
X(2)
X(6)
X(1)
X(5)
X(3)
X(7)x(7)
x(0)x(4)
x(2)
x(6)
X(4)
X(5)X(6)
X(7)
TFD2 points
TFD2 points
x(1)
x(5)
x(3)
x(7)
TFD4 points
TFD2 points
TFD2 points
X(0)
X(1)X(2)
X(3)
TFD4 points
TFD8 points
X(4)
X(5)X(6)
X(7)
X(0)X(1)X(2)
X(3)
x(0)x(4)
x(2)
x(6)
x(1)x(5)
x(3)
x(7)
02W
02W
02W
02W
14W
14W
04W
04W
08W18W2
8W3
8W
08W
18W2
8W38W
04W14W
14W
04W
02W
02W
02W
02W
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)c) Algorithmes
Algorithme du calcul de la TFR par DEF (niveau 1)
Initialisation des variables : - Nombre de papillons par groupe : B=1- Nombre de groupes par passe : G=N/2Boucle sur les passes : P itérations (P=log(N)/log(2))
Boucle sur les groupes : G itérationsBoucle sur les papillons : B itérations
Calcul du papillon courantFin boucle papillons
Fin boucle groupesB=B*2G=G/2
Fin boucle passes
x(0)x(4)
x(2)
x(6)
X(4)
X(5)X(6)
X(7)
TFD2 points
TFD2 points
x(1)
x(5)
x(3)
x(7)
TFD4 points
TFD2 points
TFD2 points
X(0)
X(1)X(2)
X(3)
TFD4 points
TFD8 points
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)c) Algorithmes
Algorithme du calcul de la TFR par DEF (niveau 2)
Initialisation des variables : - Nombre de papillons par groupe : B=1- Nombre de groupes par passe : G=N/2- Base1, Base2 : resp. indices de base des 2 entrées du papillonBoucle sur les passes : P itérations (P=log(N)/log(2))Base1=0Boucle sur les groupes : G itérations
Base2=Base1+GBoucle sur les papillons : B itérations
Calcul du papillon courant i (paramètres : Base1, Base2, Bx2, I-1)Base1=Base1+1Base2=Base2+1
Fin boucle papillonsBase1=Base1+BFin boucle groupesB=B*2G=G/2
Fin boucle passes
X(4)X(5)X(6)X(7)
X(0)X(1)X(2)X(3)
x(0)x(4)x(2)x(6)x(1)x(5)x(3)x(7)
02W
02W
02W
02W
14W
14W
04W
04W
08W18W2
8W3
8W
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)c) Algorithmes
Algorithme (paramètres : Base1, Base2, n, k)
n : indice du papillonP=x[n+Base1]+x[n+Base2]I= x[n+Base1]-x[n+Base2]*T(n,k)x[n+Base1]=Px[n+Base2]=I
Structure de base : le papillon
Sorties du papillon A’ et B’ :A’=A+B.B’=A-B.
kNW
kNW
θ−θ=θ=
π−= sinjcos)exp(-j
Nk2jexpW k
N
( ) θ= cosWRe kN ( ) θ−= sinWIm k
N Nk2π=θ
multiplication complexe
avec
A
B
+
++
kNW
A
B
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)c) Algorithmes
Simplifications supplémentaires des calculs
Développement :A’=Re(A)+jIm(A)+(Re(B)+jIm(B))´(cosθ-jsinθ)
B’ peut être calculé à partir de A’, ce qui réduit le nombre d’opérations :(1)+(3) −> Re(B’)=2.Re(A)-Re(A’)(2)+(4) −> Im(B’)=2.Im(A)-Im(A’)
Algorithme
Paramètres : Parties réelle et imaginaires des 2 entrées du papillon A et Bθ=2πk/NRe(A’)=Re(A)+Re(B).cosθ+Im(B).sinθIm(A’)=Im(A)+Im(B).cosθ-Re(B).sinθRe(B’)=2.Re(A)-Re(A’)Im(B’)=2.Im(A)-Im(A’)
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)c) Algorithmes
Décryptage des sorties
Les sorties de la TFR ne sont pas dans le "bon" ordre, l’ordre naturel (1, 2, 3, etc.).
Exemple :
8 points : 0, 4, 2, 6, 1, 5, 3, 7
Indices (=adresses) des points codés en binaire (exemple N=8) :
000, 100, 010, 110, 001, 101, 011, 111
Ordre naturel recherché :
000, 001, 010, 011, 100, 101, 110, 111
Renversement des bits, symétrie centrale...
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)c) Algorithmes
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)c) Algorithmes
Adressage en bits inversés sur DSP 56303
- = un des 3 modes dadressage du DSP. Il se programme de la manière suivante : - registre Mi chargé avec 0- registre Ni chargé avec 2k-1, si la taille du tableau est 2k
Exemple : copie dune zone de mémoire dans une autre avec adressage en bits inversés (voir programme bit_rev.asm sur www-dsp.efrei.fr) :
org x:$20tab_s dsm 16tab_d dsm 16
move #tab_s, R0 ; tableau sourcemove #tab_d, R1 ; tableau destinationmove #0, M0 ; programmation du mode bit reversemove #8, N0 ; renversement binaire sur 16 adressesdo #nb_pts, fin1move x :(R0)+N0,x0 ; lecture en bit reversemove x0,x :(R1)+ ; écriture en adressage linéaire
fin1 nop
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)c) Algorithmes
Programme de TFR sur DSP 56303
Architecture générale
Il faut créer 2 tableaux de nb_pts points pour les échantillons de signal : partie réelle + partie imaginaire.Lalgorithme est "en place" : les points de sortie remplacent les points dentrée.Choix des pointeurs :
- partie réelle des échantillons de signal : mémoire X, pointeur r0 - partie imaginaire : mémoire Y, pointeur r4
On utilise des registres ni pour les indices de boucles.
fft macro points,data,coef ; macro fft...
do #@cvi(@log(points)/@log(2)+0.5),_fin_pass ; boucles sur les passes (N=2^P itérations)
...
do n2,_fin_grpe ; boucle sur les groupes (n2 itérations)
... ; init. des calculs intermédiaires
do n0,_fin_papi ; boucle sur les papillons (n0 itérations)
... ; calcul des papillons
_fin_papi
... ;mises à jour pour papillons
_fin_grpe
... ;mises à jour pour groupes
_fin_passendm ; fin macro
- Nombre de papillons par groupe : B=N/2- Nombre de groupes par passe : G=1Boucle sur les passes : P itérations (P=log(N)/log(2))
Boucle sur les groupes : G itérationsBoucle sur les papillons : B itérations
Calcul du papillon courantFin boucle papillons
Fin boucle groupesB=B/2G=G*2
Fin boucle passes
Rappel algo :
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)c) Algorithmes
Programme de TFR sur DSP 56303
Remarque : le programme fourni avec la carte d’évaluation implante le schéma modifié suivant :
X(4)
X(5)X(6)
X(7)
X(0)X(1)X(2)
X(3)
x(0)x(4)
x(2)
x(6)
x(1)
x(5)
x(3)
x(7)
02W
02W
02W
02W
14W
14W
04W
04W
08W18W2
8W3
8W
x(0)x(1)
x(2)
x(3)
x(4)
x(5)
x(6)
X(0)X(4)
X(2)
X(6)
X(1)
X(5)
X(3)
X(7)x(7)
02W02W02W02W
04W04W
14W14W
08W
08W
08W
08W
et les propriétés : et
W
28
14 WW =0
804
02 WWW ==
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)c) Algorithmes
Programme de TFR sur DSP 56303
Architecture générale
fft macro points,data,coef ; macro fft...move #points/2,n0 ; n0 = nombre de papillons par groupe (valeur initiale : 'points'/2)move #1,n2 ; n2 = nombre de groupes dans la passe (valeur initiale : 1)
do #@cvi(@log(points)/@log(2)+0.5),_fin_pass ; boucles sur les passes (N=2^P itérations)
...
do n2,_fin_grpe ; boucle sur les groupes (n2 itérations)
... ; init. des calculs intermédiaires
do n0,_fin_papi ; boucle sur les papillons (n0 itérations)
... ; calcul des papillons
_fin_papi
... ; mises à jour pour papillons
_fin_grpe
move n0,b1 ; b1 <- nombre de papillons par groupelsr b ; division du nombre de papillons/groupes par 2move n2,a1 ; a1 <- nombre de groupes par passelsl a ; multiplication du nombre de goupes/passe par 2move b1,n0 ; mise à jour de n0 avec son nouveau contenumove a1,n2 ; idem pour n2
_fin_passendm ; fin macro
- Nombre de papillons par groupe : B=N/2- Nombre de groupes par passe : G=1Boucle sur les passes : P itérations (P=log(N)/log(2))
Boucle sur les groupes : G itérationsBoucle sur les papillons : B itérations
Calcul du papillon courantFin boucle papillons
Fin boucle groupesB=B/2G=G*2
Fin boucle passes
Rappel algo :
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)c) Algorithmes
Programme de TFR sur DSP 56303
Programme complet
fft macro points,data,coef ; macro fft;initialisation des registres de décalage (papillons, groupes et coefficients W(n,k)
move #points/2,n0 ; n0 = nombre de papillons par groupe (valeur initiale : 'points'/2)move #1,n2 ; n2 = nombre de groupes dans la passe (valeur initiale : 1)move #points/4,n6 ; n6 pour accéder aux valeurs sinus et cosinus des W(n,k)
; (la moitié de la taille du tableau);mode d'adressage
move #-1,m0 ; r0 en adressage linéaire ; idem pour r1, r4, r5move #0,m6 ; r6 en adressage binaire inverse (pour accès aux W(n,k))do #@cvi(@log(points)/@log(2)+0.5),_fin_pass ; boucles sur les passes (N=2^P itérations)
;initialisation des ptr de calcul et enregmove #data,r0 ; r0 contient l'adresse de base des échantillons "data" move r0,r4 ; idem pour r4move #coef,r6 ; r6 pointe sur l'adresse de base de "coef"lua (r0)+n0,r1 ; r1 contient l'adresse du N/2e échantillon
;initialisation des registres de décalagemove n0,n1 ; registre de decalage n1 <- nb papillon par groupemove n0,n4 ; idem n4move n0,n5 ; idem n5nop lua (r1)-,r5 ; r5=r1-1 (adresse du N/2-1e échantillon) Initialisation des variables :
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)c) Algorithmes
Programme de TFR sur DSP 56303
do n2,_fin_grpe ; boucle sur les groupes (n2 itérations)
; init des calculs intermédiairesmove x:(r1),x1 y:(r6),y0 ; x1 <- Re[B], y0 <- sinus (car r6=coef)move x:(r5),a y:(r0),b ; A <- Re[B], B <- Im[A]move x:(r6)+n6,x0 ; x0 <- cosinus (n6=points/4) et r6 remis a jour pour prochaine iterationdo n0,_fin_papi ; boucle sur les papillons (n0 iterations)mac -x1,y0,b y:(r1)+,y1 ; B <- (B=Im[A])-Re[B]*sinus (calcul intermédiaire) ; y1 <- Im[B] et r1++ macr x0,y1,b a,x:(r5)+ y:(r0),a ; B <- (B=Im[A]-Re[B]*sinus)+Im[B]*cosinus=Im[A']
; X <- (A=Re[B]) et r5++ (sauvegarde en mémoire X) ; A <- Im[A]subl b,a x:(r0),b b,y:(r4) ; A <- (Im[B']=2*Im[A]-Im[A']) ; B <- Re[A] ; Y <- Im[A'] (sauvegarde en mémoire Y) mac x1,x0,b x:(r1),x1 ; B <- (B=Re[A])+Re[B]*cosinus (calcul intermédiare) ; x1 <- Re[B]macr y1,y0,b x:(r0)+,a a,y:(r5) ; B <- Re[A']=(B=Re[A]+Re[B]*cosinus)+Im[B]*sinus)
; A <- Im[A] et r0++ ; Y <- Im[B'] (sauvegarde en mémoire Y)subl b,a b,x:(r4)+ y:(r0),b ; A <- (2*Re[A]-Re[A']=Re[B'])
; X <- Re[A'] et r4++ (sauvegarde en mémoire X) ; B <- Im[A]_fin_papi;mises à jour pour papillons
move x:(r0)+n0,x1 y:(r4)+n4,y1 ; x1 <- Re[B] et r0=r0+n0 ; r4=r4+n4move a,x:(r5)+n5 y:(r1)+n1,y1 ; X <- (A=Re[B']) et r5=r5+n5 ; y1 <- Im[B] et r1=r1+n1
_fin_grpemove n0,b1 ; b1 <- nombre de papillons par groupelsr b ; division du nombre de papillons/groupes par 2move n2,a1 ; a1 <- nombre de groupes par passelsl a ; multiplication du nombre de goupes/passe par 2move b1,n0 ; mise à jour de n0 avec son nouveau contenumove a1,n2 ; idem pour n2
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.3) Transformée de Fourier Rapide (TFR)c) Algorithmes
Programme de TFR sur DSP 56303
Test
Génération dun signal de test sinusoïdal
sincosr macro points,coefsincosr ident 1,1
org x:coefcount set 0
dup points/2dc @cos(@cvf(count)*freq)
count set count+1endmorg y:coef
count set 0dup points/2dc @sin(@cvf(count)*freq)
count set count+1endmendm
Appel des macros de génération de signal
Génération du signal de test (cosinus)
sigtst macro points,coeforg x:data
count set 0dup pointsdc @cos(@cvf(count)*freq2)256
count set count+1endmorg y:data
count set 0dup pointsdc 0
count set count+1endmendm
sincosr points,coef sigtst points,coef
fft points,data,coef
Appel de la macro FFT
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPIV) Analyse en fréquence : Transformée de Fourier Discrète (TFD)
IV.4) Analyse spectrale
Approche séquentielle
Répétition cyclique des opérations :- acquisition dun bloc de signal- application de la TFR- exploitation du résultat
Principe
Application de la TFD à un flot déchantillons de signal
Approche parallèle
Nécessite dutiliser :- 2 blocs mémoire- une interruption générée par larrivée des échantillons :
- programme principal de calcul de la TFD pour un bloc- programme dinterruption remplissant lautre bloc
perte de données
pas de perte de données
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPV) Synthèse de signal
V.1) Synthèse par table donde
Objectif
Générer un signal périodique en temps réel
Principe
- Une période de signal est stockée en mémoire (la table).- Cette mémoire est parcourue cycliquement, les échantillons sont générés à partir des éléments de la table, en temps-réel (synchronisée sur fe).
Algorithmes
Exemple : Algorithme de génération d’une table d’onde sinusoïdalepour i variant de 0 à nb_ech_tab-1
sinus[i]=(float)(sin(i×2×PI/nb_ech_tab)
Lecture directe des échantillons, pointeur incrémenté de 1Répéter indéfiniment (fréquence des itérations : fe)
ptr+=1;si ptr>nb_ech_tab
ptr=ptr-nb_ech_tabs=table[(int)ptr]
Fréquence du signal :
0 20 40 60 80 100 120 140-0.13
-0.09
-0.05
-0.01
0.03
0.07
0.11
0.15
0.19Partie voisée du mot six (au mil ieu du mot)
0 20 40 60 80 100 120 140-0.03
-0.02
-0.01
0.00
0.01
0.02Partie non-voisée du mot six (aux 3/4 du mot)
Traitement Numérique du Signal - DSPV) Synthèse de signal
V.1) Synthèse par table donde
Lecture directe des échantillons, pointeur incrémenté d’une valeur fractionnaire
Répéter indéfiniment (fréquence des itérations : fe)ptr+=freq* nb_ech_tab/f_echsi ptr>nb_ech_tab
ptr=ptr-nb_ech_tabs=table[(int)ptr]
problème : bruit de quantification
Lecture des échantillons par interpolation, pointeur incrémenté d’une valeur fractionnaire
Répéter indéfiniment (fréquence des itérations : fe)ptr+=freq* nb_ech_tab/f_echsi ptr>nb_ech_tab