Site perso Benoit Decoux

74
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]

Transcript of Site perso Benoit Decoux

Page 1: Site perso Benoit Decoux

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)

Module deTraitement Numérique du Signal - DSP

10h cours + 12h TP(5×2h + 4×3h)

www-dsp.efrei.fr

Benoît [email protected]

Page 2: Site perso Benoit Decoux

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

I) Introduction générale

Site Internet associé à cette formation :

www-dsp.efrei.fr

accueil

sources Liensdocuments

Page 3: Site perso Benoit Decoux

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

I) Introduction générale

2

4

6

8

µ-controleurs8 bits

DSP

95 97 99 2001 03

Texas Instruments 45%

Lucent 22%

Motorola 13%

Analog Devices 10%

B$

Le marché

Page 4: Site perso Benoit Decoux

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

I) Introduction générale

Plan du cours

I) Introduction généraleII) Principe des DSP

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

Page 5: Site perso Benoit Decoux

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

Page 6: Site perso Benoit Decoux

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

Page 7: Site perso Benoit Decoux

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

Page 8: Site perso Benoit Decoux

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 ?

Page 9: Site perso Benoit Decoux

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 :

Exemple00000000 0,01100110011001100110011 001100110011001100110011

= $ 00 333333 333333 = 0,399999999999999

2-47=7,1x10-15Précision

256=7,2x1016Nombre de valeurs possibles

min=-256,0 ; max=255,9999Valeurs min et max

cf schémaPoids des bitsCas du format [9-47]

Page 10: Site perso Benoit Decoux

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 flottante

Exemple

01101000. 00000101 = 1,625x25 = 52

Le codage peut être réalisé sur 32 (1+8+23) ou 64 bits (1+11+52). On parle respectivement de simple ou de double précision.

Norme IEEE

Page 11: Site perso Benoit Decoux

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.4) Schéma fonctionnel de la chaîne de traitement des systèmes à DSP

Page 12: Site perso Benoit Decoux

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.5) Architecture

Pipeline

Cycles d’horloge 1 2 3 4 5 6 7 8 Prépa. instruct. I1 I2 I3 I4 I5 I6 I7 I8 Décodage I1 I2 I3 I4 I5 I6 I7 Lect./écrit. donnée I1 I2 I3 I4 I5 I6 Exécution I1 I2 I3 I4 I5

- Gain de temps conséquent (jusquà 4)- Possibilités de conflits -> insertion dinstructions NOP (no-operation)

Page 13: Site perso Benoit Decoux

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

Page 14: Site perso Benoit Decoux

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

X0

Usage général: 24 bits Transferts avec autres registres Transferts avec mémoire Opérandes ALU/Mult

Accumulateurs: 56 bits [ 8 : 24 : 24 ] Transferts avec autres registres Transferts avec mémoire Résultats ALU/Mult

X1

Y0 Y1

A1 A0

B1 B0

A2

B2

24 bits 24 bits

24 bits 24 bits8 bits

Registres de lALU

Page 15: Site perso Benoit Decoux

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

R0

Usage général: 24 bits Transferts avec autres registres Transferts avec mémoire Opérandes ALU/Mult

M0

index modulo

Registres de lAGU

N0

R1 M1 N1

R7 M7 N7

offset

Page 16: Site perso Benoit Decoux

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)

Transfertsmove X0,X:$1001 ; transfert le contenu de X0 vers la mémoire X pointée par R0.

move X0,X1 ; transfert du contenu de X0 dans X1

move X:$1001,Y:$1002 ; impossible !

Multiplication de 2 valeursmove #0.1,X0 ; adressage immédiatmove #0.2,Y0mpy X0,X0,A ; A=X0*X0

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.

Page 17: Site perso Benoit Decoux

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)

Page 18: Site perso Benoit Decoux

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

Page 19: Site perso Benoit Decoux

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 :

Page 20: Site perso Benoit Decoux

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

Page 21: Site perso Benoit Decoux

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

Page 22: Site perso Benoit Decoux

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

Page 23: Site perso Benoit Decoux

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

Page 24: Site perso Benoit Decoux

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 :

E(z)=Ze(n) S(z)=Zs(n)

(propriétés de linéarité et de retard temporel)

)Qn(sb...)2n(sb)1n(sb)Pn(ea...)2n(ea)1n(ea)n(ea)n(s Q21P210 −++−+−+−++−+−+=

Ze(n-n0)=z-n0 E(z)

Zaea(n)+beb(n)=aEa(z)+bEb(z)

Page 25: Site perso Benoit Decoux

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.4) Principes de programmationIII.4.1) Buffers linéaires

)Qn(sb...)2n(sb)1n(sb)Pn(ea...)2n(ea)1n(ea)n(ea)n(s Q21P210 −++−+−+−++−+−+=

Equation aux différences à programmer :

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

Page 26: Site perso Benoit Decoux

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

Page 27: Site perso Benoit Decoux

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

Page 28: Site perso Benoit Decoux

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

Page 29: Site perso Benoit Decoux

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)

this->na=na;this->nb=nb;a=new FLOAT[na];b=new FLOAT[nb];em=new FLOAT[na-1];sm=new FLOAT[nb];ia=ib=0;

// DestructeurFiltreRII::~FiltreRII()

delete a;delete b;delete em;delete sm;

voidmain()

FiltreRII *f1, *f2;

f1(3,2);f2(3,2);... //calcul des coef

floatwhile(1) //boucle infinie

... //acquisition du bloc de signalfor(i=0 ; i<nb_ech ; i++) //traitement du bloc de signal

*(s+i)=f1.eqdiff(*(e+i));*(s+i)=f2.eqdiff(*(s+i)); //2 filtres en cascade

.... //envoi du bloc de signal en sortie

Page 30: Site perso Benoit Decoux

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 programme C++ (RII)

floatFiltreRII::eqdiff(float e)

int i, ind;float s;

s=a[0]*e;for(i=0 ; i<2 ; i++)

ind=1-i+*ia;if(ind==2) ind=0;s+=a[i+1]*em[ind];

for(i=0 ; i<2 ; i++)

ind=1-i+*ib;if(ind==2) ind=0;s+=b[i]*sm[ind];

em[*ia]=e;sm[*ib]=s;if(++(*ia)==2) *ia=0;if(++(*ib)==2) *ib=0;return s;

Exécution pas-à-pas

Initialisationsem=0, 0sm=0, 0ia=0 ; ib=0

1er appel à la fonction : passage de léchantillon e0em=0, 0sm=0, 0

s=a0e0

Boucle 1i=0 ind=1 s=s+a1×0i=1 ind=0 s=s+a2×0Boucle 2i=0 ind=1 s=s+b0×0i=1 ind=0 s=s+b1×0Résultat : s0= a0e0

em=e0, 0sm=s0, 0ia=1 ; ib=1

III.5) Programmation des filtresIII.5.1) Programmation C/C++

Page 31: Site perso Benoit Decoux

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 programme C++ (RII)

floatFiltreRII::eqdiff(float e)

int i, ind;float s;

s=a[0]*e;for(i=0 ; i<2 ; i++)

ind=1-i+*ia;if(ind==2) ind=0;s+=a[i+1]*em[ind];

for(i=0 ; i<2 ; i++)

ind=1-i+*ib;if(ind==2) ind=0;s+=b[i]*sm[ind];

em[*ia]=e;sm[*ib]=s;if(++(*ia)==2) *ia=0;if(++(*ib)==2) *ib=0;return s;

Exécution pas-à-pas (suite)

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

Page 32: Site perso Benoit Decoux

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

move #en,R0 ;registre d’adresse R0 pointe sur enmove #3,M0 ;R0 modulo 3move #a0,R1 ;registre d’adresse R1 pointe sur a0move #3,M1 ;R1 modulo 3clr Ado #4,finraz ;initialisation :move A,X:(R0)+ ;0->e(n-i)

finraz...

jsr moy ;appel de la routine "moy" dans boucle de lecture-écriture...moy ;début routine (B contient e(n))

move B,X:-(R0) ;e(n)->X:en (mémorisation de e(n), écrase e(n-2))clr Bdo #4,finmac ;boucle sur les multiplications-accumulationsmove X:(R0)+,X0 ;e(n-i)->X0move X:(R1)+,Y0 ;a(i)->Y0mac X0,Y0,B ;B=B+X0*Y0 <-> s(n)=s(n)+h(i)*e(n-i)

finmacrts ;fin routine

4)3n(e)2n(e)1n(e)n(e)n(s −+−+−+=

Exemple de programmation dun RIF (moyenneur sur 4 échantillons)

Les sont des parties du programme pass.asmRm : ici e(n) est mémorisé avant utilisation, pour simplifier le programme

Page 33: Site perso Benoit Decoux

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

Exemple de programmation dun RII du 2e degré

−+−+−+−+×= )2n(s

2b)1n(s

2b)2n(e

2a)1n(e

2a)n(e

2a2)n(s 21210

org X:$20a_0 dc 0.00038/2a_1 dc 0.00077/2a_2 dc 0.00038/2b_1 dc -1.99064/2b_2 dc 0.99218/2en dsm 3sn dsm 2...init_filtre

move #a_0,R0 ;registre d’adresse R0 pointe sur a_0move #4,M0 ;R0 modulo 5move #en,R1 ;registre d’adresse R1 pointe sur enmove #2,M1 ;R1 modulo 3move #sn,R2 ;registre d’adresse R2 pointe sur snmove #1,M2 ;R2 modulo 2clr Ado #3,boucle1 ;initialisation :move A,X:(R1)+ ;0->e(n-i)

boucle1do #2,boucle2 ;initialisation :move A,X:(R2)+ ;0->s(n-i)

boucle2rts

...filtrage

move A,Y1 ;Y(1)=e(n)mpy X0,Y1,A X:(R0)+,X0 Y:(R4)+,Y0 ;A=a_0.e(n) ; X0=a_1 ; Y0=e(n-1)mac X0,Y0,A X:(R0)+,X0 Y:(R4),Y0 ;A=A+a_1.e(n-1) ; X0=a_2 ; Y0=e(n-2)mac X0,Y0,A X:(R0)+,X0 Y:(R5)+,Y0 ;A=A+a_2.e(n-2) ; X0=b_1 ; Y0=s(n-1)mac -X0,Y0,A X:(R0)+,X0 Y:(R5),Y0 ;A=A-b_1.s(n-1) ; X0=b_2 ; Y0=s(n-2)macr -X0,Y0,A Y1,Y:(R4) ;A=A-b_2.s(n-2)=s(n)/2 ; e(n) dans e(n-2)asl A X:(R0)+,X0 ;A=2.A=s(n) ; X0=a_0move A,Y:(R5) ;s(n) dans s(n-2)

rts

Nécessité de modifier léquation :

adressage parallèle

Page 34: Site perso Benoit Decoux

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

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

; s(n) du filtre précédent aux autresmpy X0,Y1,A X:(R0)+,X0 Y:(R4)+,Y0 ; A=a_0.e(n) ; X0=a_1 ; Y0=e(n-1)mac X0,Y0,A X:(R0)+,X0 Y:(R4),Y0 ; A=A+a_1.e(n-1) ; X0=a_2 ; Y0=e(n-2)mac X0,Y0,A X:(R0)+,X0 Y:(R5)+,Y0 ; A=A+a_2.e(n-2) ; X0=b_1 ; Y0=s(n-1)mac -X0,Y0,A X:(R0)+,X0 Y:(R5),Y0 ; A=A-b_1.s(n-1) ; X0=b_2 ; Y0=s(n-2)macr -X0,Y0,A Y1,Y:(R4)+N4 ; A=A-b_2.s(n-2)=s(n)/2 ; e(n) dans e(n-2)

; 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

Page 35: Site perso Benoit Decoux

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

Page 36: Site perso Benoit Decoux

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

d(N)=1;num=poly(h, "z", "coef");den=poly(d, "z", "coef");sys=syslin('d', num, den); //->sys=système linéaire

xbasc; //effacement graphique

bode(sys, 0.0001, 0.3);

Page 37: Site perso Benoit Decoux

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

Fonction de transfert harmonique

p=jω

Fonction de transfert de Laplace

Fonction de transfert en Z

Equation aux différences

221

2210

jbjb1jajaa

)j(X)j(Y)j(H

ω−ω−ω+ω+=

ωω=ω

221

2210

pbpb1papaa

)p(X)p(Y)p(H

−−++==

22

11

22

110

z'bz'b1z'az'a'a

)z(X)z(Y)z(H −−

−−

−−++==

)2n(s'b)1n(s'b)2n(e'a)1n(e'a)n(e'a)n(s 21210 −+−+−+−+=

z1z1

T2p

e +−→

[ ] )z(Ez)nn(eZ 0n0

−=−

Principe

III.8) Synthèse des filtresIII.8.1) Filtres RII

a) Transformée bilinéaire

Fondement théorique : équivalence de lintégration

2)1n(x)n(xT)1n(y)n(ydt).t(x)t(y e

t

0

−++−=→= ∫

transformée bilinéaire

Page 38: Site perso Benoit Decoux

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.1) Filtres RII

a) Transformée bilinéaire

Traitement Numérique du Signal - DSP

Filtre passe-bas du 2e ordre

Relations obtenues par application de la transformée bilinéaire :

Exemple : Filtre passe-bas du 2e ordre

2

00

jj21

1)j(H

ωω+

ωωξ+

10 k

1a = 01

1 a2k2a == 0

12 a

k1a == ( )2

11 k1

k2b −= ( )2

12 kk21

k1b +ξ−=

avec :2

1 kk21k +ξ+=c

e

ffkπ

=

Exemple d’application numérique

fc=500Hz ; ξ=0,1 ; fe=44100Hz

a0=0,00126 a1=2 a2=1 b1=-1,9808428 b2=0,985871

Page 39: Site perso Benoit Decoux

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.1) Filtres RII

b) Transformée par équivalence de la dérivation

Traitement Numérique du Signal - DSP

la plus utilisée : transformée bilinéaire

ek T

)1n(x)n(xydt

)t(dx)t(y −−=→=Principe

Exemple : filtre RC de type passe-bas du 1er ordre

)t(vdt

)t(dvRC)t(v ss

e +=

)n(s)T

)1n(s)n(s(RC)n(ee

+−−=

Exemple d’application numérique

R=1kΩ, C=1µF, Te=1/44100

)1n(s0,0221729)n(e0,9778271)n(s −+=

Pas très bien adaptée aux fréquences proches de fe/2

τ=RC=0,001s

Page 40: Site perso Benoit Decoux

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

Traitement Numérique du Signal - DSP

Introduction

les coefficients dun filtre RIF peuvent sobtenir par TFD-1

2 propriétés importantes :

1)

2)

)f(H)t(h F→

∑∞

=

−=0i

)in(e)n(h)n(s

h(t) réponse impulsionnelleH(f) réponse en fréquence

(fonction de transfert de Fourier)

h(n) coefficients du filtre

Page 41: Site perso Benoit Decoux

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

a) Synthèse par transformée de Fourier discrète inverse (TFD-1)

Traitement Numérique du Signal - DSP

Principe : - échantillonnage de la réponse fréquentielle- calcul de sa TFD-1

∑−

=

π−=

1N

0k

Nnk2j

kn exXDéfinition de la TFD : , n=0,,N-1 ∑−

=

π

=1N

0n

Nnk2j

nk eXN1x , k=0,,N-1

∑−

=

π=

1N

0nnk N

nk2cosXN1x ou

La partie imaginaire est prise nulle :

∑−

=

π=

1N

0nnk N

nk2cos.HN1g , k=0,,N-1

( )∑−

=

−π=

1N

0nnk pk

Nn2cos.H

N1h , k=0,,N-1

Finalement :

pkk gh −= avec 2Np = si N pair, 2

1Np −= si N impair

Les gk forment une fonction paire et non causale : on la rend causale :

eNTnfn )f(HH

==Valeurs des fréquences discrètes : , n=0,,N-1 (fe/N résolution fréquentielle)

Résolution fréquentielle :eNT

1

Page 42: Site perso Benoit Decoux

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

a) Synthèse par transformée de Fourier discrète inverse (TFD-1)

Traitement Numérique du Signal - DSP

Exemple : Réalisation dun filtre passe-bas avec fe=44100Hz, fc=8000Hz et N=10

Hn=1 pour n variant de 0 à Nc=2, Hn=0 ensuite

Réponse en fréquence Hn :1 1 1 0 0 0 0 0 1 1

h0=0.008h1=3.727 = h9h2=-0.0491772 = h8h3=-3.787 = h7h4=0.2951772 = h6h5=0.5

Coefficients obtenus :

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)

Page 43: Site perso Benoit Decoux

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 :

Page 44: Site perso Benoit Decoux

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

Page 45: Site perso Benoit Decoux

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

h0= 0.0989147h1= 0.0995054 = h9h2= 0.0999662 = h8h3= 0.1002962 = h7h4= 0.1004945 = h6h5= 0.1005607

Résultats obtenus :

Page 46: Site perso Benoit Decoux

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

Programme et résultats

N=10if modulo(N,2)==0

p=N/2;else

p=(N-1)/2;EndFc=0.01for k=0:N-1

w(k+1)=0.56+0.44*cos(2*%pi*(k-p)/N);if k~=p

h(k+1)=w(k+1)*1/(k-p)/%pi*sin(2*Fc*(k-p)*%pi);else

h(k+1)=w(k+1)*2*Fc;end

endsomme=sum(h);h=h/somme

Page 47: Site perso Benoit Decoux

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

Page 48: Site perso Benoit Decoux

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

Page 49: Site perso Benoit Decoux

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 π=

Page 50: Site perso Benoit Decoux

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

Page 51: Site perso Benoit Decoux

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.

-4 points : 0, 2, 1, 3-8 points : 0, 4, 2, 6, 1, 5, 3, 7-16 points : 0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 3, 11, 7, 15

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

Page 52: Site perso Benoit Decoux

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é

Page 53: Site perso Benoit Decoux

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"

Page 54: Site perso Benoit Decoux

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

Page 55: Site perso Benoit Decoux

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

Page 56: Site perso Benoit Decoux

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

Page 57: Site perso Benoit Decoux

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

Page 58: Site perso Benoit Decoux

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θ)

Re(A’)=Re(A)+Re(B).cosθ+Im(B).sinθ (1)Im(A’)=Im(A)+Im(B).cosθ-Re(B).sinθ (2)

Re(B’)=Re(A)-Re(B).cosθ-Im(B).sinθ (3)Im(B’)=Im(A)-Im(B).cosθ+Re(B).sinθ (4)

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’)

Page 59: Site perso Benoit Decoux

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

Page 60: Site perso Benoit Decoux

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

Exemple d’algorithme de décryptage

Un nombre à n bits peut être exprimé par :

Exemple : 4=b020+ b121+ b022= 0×20+ 0×21+ 1×22

Nombre correspondant en codage en bits inversés :

Exemple : b022-0+ b122-1+ b022-2= b022+ b121+ b020= 0×20+ 0×21+ 1×22= 4

∑−

=

=1b

0m

mm 2bn

∑−

=

−−=1b

0m

m1bm 2b'n

Algorithmevariables ; n : nombre binaire, b : nombre de bits, r résultatr=0pour m=b-1 à 0 par pas de –1

si n>>m=1r=r+2b-1-mn=n-2m

Exemple : n=6=110 b-1=3-1=2m=2 n>>2=1 r=0+20=1 n=2m=1 n>>1=1 r=1+21=3 n=0m=0 n>>0=0 r=3 n=0

Page 61: Site perso Benoit Decoux

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

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

Page 62: Site perso Benoit Decoux

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 :

Page 63: Site perso Benoit Decoux

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

Page 64: Site perso Benoit Decoux

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 :

Page 65: Site perso Benoit Decoux

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 :

Page 66: Site perso Benoit Decoux

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

_fin_passendm ; fin macro

Re(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’)

Rappel algo :

Page 67: Site perso Benoit Decoux

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

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

Page 68: Site perso Benoit Decoux

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

Page 69: Site perso Benoit Decoux

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 :

Page 70: Site perso Benoit Decoux

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

ptr=ptr-nb_ech_tabi=(int)ptr;j=i+1;si j>nb_ech_tab

j=j-nb_ech_tab;s=table[i]+(ptr-i)*(table[j]-table[i]);

Page 71: Site perso Benoit Decoux

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

V) Synthèse de signalV.2) Synthèse par équation de récurrence

)tsin(A)t(x 0ω=

)kTsin(Ax e0k ω=

21e0

1e0

zz)Tcos(21z)Tsin(A)z(X −−

+ω−ω=

)2n(s)1n(s)Tcos(2)1n()Tsin(A)n(s e0e0 −−−ω+−δω=

Principe

signal désiré transformée en Z équation aux différences

Exemple : signal sinusoïdal

Signal numérique correspondant :

Transformée en Z :

=S(z)/E(z) avec S(z)=X(z) et E(z)=1

= équation dun système purement récursif, déclenché par une impulsion en entrée (car (E(z)=1) = Z(ek=δk ))

Page 72: Site perso Benoit Decoux

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

V) Synthèse de signalV.2) Synthèse par équation de récurrence

Algorithme de calcul

)2n(s)1n(s.a)n(s −−−=

θ= cos2a eff2π=θavec et , f =fréquence du signal et fe=fréquence déchantillonnage

θ= cos2a eff2π=θ

Soit léquation aux différences :

0)2(s =− θ=− sinA)1(sInitialisation :

)sin()cos(A2)1(s.a)2(s)1(s.a)0(s θθ=−=−−−=

Page 73: Site perso Benoit Decoux

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

V) Synthèse de signalV.3) Génération de bruit

Principe

nn

2210 Xa...XaXaa)X(f ++++=

Polynômes de degré n définis par :

Coefficients ai : 0 ou 1

Registre à décalage :

Les polynômes irréductibles permettent de générer des séquences de longueur 2n

Page 74: Site perso Benoit Decoux

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

V) Synthèse de signalV.3) Génération de bruit

Principe (suite)

degré polynôme octal degré polynôme octal degré polynôme octal2 7* 13 20033 24 1000002073 13* 14 42103 25 200000011*4 23* 15 100003* 26 4000001075 45* 16 210013 27 10000000476 103* 17 400011* 28 2000000011*7 211* 18 1000201 29 4000000005*8 435 19 2000047 30 100400000079 1021* 20 4000011* 31 20000000011*

10 2011* 21 10000005* 32 4002000000711 4005* 22 20000003* 33 100000020001*12 10123 23 40000041* 34 201000000007

Tables des polynômes irréductibles (sous forme octale) :

(*) : polynômes à 2 contre-réactions uniquement

Exemples

- registre à 13 étages ; code binaire correspondant : 010 000 000 011 011 (polynôme X13+X4+X3+X+1)

- registre 32 bits ; durée du cycle : 232 =4294967296 périodes dhorloge =89478 secondes à 48kHz (> 24 h)