ELEN0019-1 : Traitement des signaux audio · ELEN0019-1 - Traitement des signaux audio 26. Pass.asm...

Post on 01-Oct-2020

2 views 0 download

Transcript of ELEN0019-1 : Traitement des signaux audio · ELEN0019-1 - Traitement des signaux audio 26. Pass.asm...

ELEN0019-1 : Traitement des signaux audio

Institut MontefioreUniversite de Liege

Belgique

15 fevrier 2013

ELEN0019-1 - Traitement des signaux audio 1

Informations

I Contact : josmalsky@ulg.ac.be

I Page du cours :http ://www.montefiore.ulg.ac.be/˜josmalskyj/dsp.php

ELEN0019-1 - Traitement des signaux audio 2

Outline

1 Filtres Windowed-Sync : Theorie

2 Design du filtre

3 Realisation dans Matlab

4 Architecture DSP : Rappels

5 Programme standard

6 Realisation du filtre Windowed-Sync sur DSP

ELEN0019-1 - Traitement des signaux audio 3

Filtres Windowed-Sync

Filtres utilises pour separer une bande de frequence d’une autre. Ils sonttres stables et performants, mais lents a executer si la longueur du filtreest trop importante.

I Filtre passe-bas :

hLPI [n] =sin(2πfcn)

I Filtre passe-haut :

hHPI [n] = −sin(2πfcn)

ELEN0019-1 - Traitement des signaux audio 4

Filtre passe-bas

Les reponses en frequence et impulsionnelle d’un filtre passe-bas ideal sontdonnees ci-dessous.

Filtre non realisable : non causal et de longueur infinie.

ELEN0019-1 - Traitement des signaux audio 5

Filtre passe-bas

Pour realiser le filtre en pratique, il faut le tronquer a M + 1 points et ledecaler de facon a avoir des indices positifs.

La reponse en frequence n’est pas ideale : beaucoup de “ripple”.

ELEN0019-1 - Traitement des signaux audio 6

Filtre passe-bas

Pour corriger la reponse en frequence, on fenetre le filtre par une fenetrede Blackman ou de Hamming.

I Fenetre de Blackman :

w [n] = 0.54− 0.46cos(2πn/M)

I Fenetre de Hamming :

w [n] = 0.42− 0.5cos(2πn/M) + 0.08cos(4πn/M)

ELEN0019-1 - Traitement des signaux audio 7

Filtre passe-bas fenetre

ELEN0019-1 - Traitement des signaux audio 8

Blackman vs Hamming

Le choix entre les fenetres depend de l’application : la fenetre de Hammingpermet une pente plus abrupte tandis que la fenetre de Blackman offre desondulations residuelles plus faibles.

ELEN0019-1 - Traitement des signaux audio 9

Outline

1 Filtres Windowed-Sync : Theorie

2 Design du filtre

3 Realisation dans Matlab

4 Architecture DSP : Rappels

5 Programme standard

6 Realisation du filtre Windowed-Sync sur DSP

ELEN0019-1 - Traitement des signaux audio 10

Realisation du filtre

Le filtre requiert deux parametres :

I Frequence de coupure fc ∈ [0, 0.5] : Fraction de la frequenced’echantillonnage

I Longueur du filtre M : Conditionne la largeur de bande de transition

M w4

LB

LB est la largeur de la bande de transition, exprimee comme une fractionde la frequence d’echantillonnage : LB ∈ [0, 0.5]

ELEN0019-1 - Traitement des signaux audio 11

Realisation du filtre

Les expressions hLPI [n] et hHPI [n] presentent des singularites a l’origine.On a en realite

hLPI [n] = 2fc

hHPI [n] = 1− 2fc

ELEN0019-1 - Traitement des signaux audio 12

Realisation du filtre

L’expression finale du filtre tronque et fenetre est donnee ci-dessous.

h[n] =sin(2πfc(n −M/2))

n − M2

[0.42− 0.5cos(

2πn

M) + 0.08cos(

4πn

M)

]On retrouve dans cette expression l’equation du filtre passe-bas tronque etle fenetrage de Blackman.

ELEN0019-1 - Traitement des signaux audio 13

Outline

1 Filtres Windowed-Sync : Theorie

2 Design du filtre

3 Realisation dans Matlab

4 Architecture DSP : Rappels

5 Programme standard

6 Realisation du filtre Windowed-Sync sur DSP

ELEN0019-1 - Traitement des signaux audio 14

Implementation dans Matlab

Exemple : Filtre passe-haut

I Frequence de coupure : fc = 10 kHz

I Largeur de la bande de transition : 40% de la bande totale

I Frequence d’echantillonnage : 48 kHz

ELEN0019-1 - Traitement des signaux audio 15

Implementation dans Matlab

I Determination de la longueur du filtre : M = 4/0.4 = 10. Le filtreaura M + 1 = 11 points.

I Reponse impulsionnelle sous Matlab (slide suivant).

I Fenetrer le signal en le multipliant par la fenetre adequate.

ELEN0019-1 - Traitement des signaux audio 16

Reponse impulsionnelle sous Matlab

n = [0 : 10];

h = -sin(2 * pi * 10000/48000 * (n-5)) ./ (pi * (n-5));

>> Warning: Divide by zero.

h(6) = 1 - 2 * (10000/48000);

f = [0:100:24000];

H = freqz(h,1,f,48000);

subplot(211); plot(n,h); title(’Reponse impulsionnelle’);

subplot(212); plot(f,abs(H)); title(’Reponse en frequence’);

ELEN0019-1 - Traitement des signaux audio 17

Outline

1 Filtres Windowed-Sync : Theorie

2 Design du filtre

3 Realisation dans Matlab

4 Architecture DSP : Rappels

5 Programme standard

6 Realisation du filtre Windowed-Sync sur DSP

ELEN0019-1 - Traitement des signaux audio 18

Memoire du DSP

Le DSP est constitue de 3 zones memoires :

I Memoire P : Contient le code du programme et des interruptions.

I Memoires X et Y : Stockage des donnees. Les deux zones sontconnectees a un bus dedie, permettant au DSP d’executer la plupartdes operations en un cycle.

Il faut utiliser la memoire de facon optimale pour reduire le nombre decycles !

ELEN0019-1 - Traitement des signaux audio 19

Operations arithmetiques : ALU

La plupart des instructions utilisent un ou deux des registres x0, x1, y0, y1

en entree et le resultat est stocke dans un des accumulateurs a ou b. Deuxdeplacements memoire peuvent etre effectues en parallele avec lesoperations de l’ALU.

Ces operations memoire consistent en un deplacement memoire entre unregistre X/Y et un emplacement en memoire ou inversement.

ELEN0019-1 - Traitement des signaux audio 20

Operations arithmetiques : ALU

ELEN0019-1 - Traitement des signaux audio 21

Operations arithmetiques : ALU

ELEN0019-1 - Traitement des signaux audio 22

Modes d’adressage : AGU

AGU = Address Generation Unit. Il fournit divers modes d’adressagerequis par les algorithmes DSP :

I Adressage lineaire

I Adressage modulo pour buffers circulaires

I Adressage bit-reverse (FFT)

L’AGU permet un adressage direct ou indirect. Il est divise en deuxmoities, chacune ayant un ALU permettant des operations arithmetiquessur les adresse memoire (pre-incrementation, post-incrementation, etc.).Il y a au total 8 registres independants (R), 8 registres d’offset (N) et 8registres de modification (M) qui permettent de selectionner le moded’adressage.Lecture conseillee : Exemple 2 du Tutorial Motorola.

ELEN0019-1 - Traitement des signaux audio 23

AGU

ELEN0019-1 - Traitement des signaux audio 24

Outline

1 Filtres Windowed-Sync : Theorie

2 Design du filtre

3 Realisation dans Matlab

4 Architecture DSP : Rappels

5 Programme standard

6 Realisation du filtre Windowed-Sync sur DSP

ELEN0019-1 - Traitement des signaux audio 25

Compilation et execution

Le code source est ecrit en langage assembleur. Le code est ensuitecompile a l’aide du compilateur asm56300 fourni par Motorola. Lacommande de compilation est la suivante :

asm56300 -a -l -b code.asm

Elle produit en sortie un fichier CLD qui peut etre execute par le DSP.

Tout programme peut etre ecrit a partir du code modele fourni : pass.asm.

ELEN0019-1 - Traitement des signaux audio 26

Pass.asm

Ce code modele contient 5 dependances qu’il est necessaire d’inclure pourexecuter votre code.

Les echantillons de gauche et de droite sont receptionnes dans lesaccumulateurs a et b. Apres traitement, il faut renvoyer les echantillons desortie dans ces deux accumulateurs.

ELEN0019-1 - Traitement des signaux audio 27

Outline

1 Filtres Windowed-Sync : Theorie

2 Design du filtre

3 Realisation dans Matlab

4 Architecture DSP : Rappels

5 Programme standard

6 Realisation du filtre Windowed-Sync sur DSP

ELEN0019-1 - Traitement des signaux audio 28

Implementation sur DSP

Realisation d’un filtre passe-haut de frequence centrale fc = 10 kHz.Il faut recuperer les coefficients du filtre calcules par Matlab (voir slidesprecedents).Les coefficients doivent etre codes directement dans le code source ASMdu filtre. Ils doivent etre places dans une zone memoire specifique pouretre accessibles lors de l’operation de convolution.Le programme qui implemente le filtre applique la formule de laconvolution :

y [n] =N∑

k=0

h [k] x [n − k]

ou h correspond a la reponse impulsionnelle, donc aux coefficients obtenusdans Matlab.

ELEN0019-1 - Traitement des signaux audio 29

Organisation de la memoire

ELEN0019-1 - Traitement des signaux audio 30