ELEN0019-1 : Traitement des signaux audio Institut Montefiore Université de Liège Belgique 15 février 2013 ELEN0019-1 - Traitement des signaux audio 1
Informations Contact : josmalsky@ulg.ac.be Page du cours : http ://www.montefiore.ulg.ac.be/ josmalskyj/dsp.php ELEN0019-1 - Traitement des signaux audio 2
Outline 1 Filtres Windowed-Sync : Théorie 2 Design du filtre 3 Réalisation dans Matlab 4 Architecture DSP : Rappels 5 Programme standard 6 Réalisation du filtre Windowed-Sync sur DSP ELEN0019-1 - Traitement des signaux audio 3
Filtres Windowed-Sync Filtres utilisés pour séparer une bande de fréquence d une autre. Ils sont très stables et performants, mais lents à exécuter si la longueur du filtre est trop importante. Filtre passe-bas : Filtre passe-haut : h LPI [n] = sin(2πf cn) nπ h HPI [n] = sin(2πf cn) nπ ELEN0019-1 - Traitement des signaux audio 4
Filtre passe-bas Les réponses en fréquence et impulsionnelle d un filtre passe-bas idéal sont données ci-dessous. Filtre non réalisable : non causal et de longueur infinie. ELEN0019-1 - Traitement des signaux audio 5
Filtre passe-bas Pour réaliser le filtre en pratique, il faut le tronquer à M + 1 points et le décaler de façon à avoir des indices positifs. La réponse en fréquence n est pas idéale : beaucoup de ripple. ELEN0019-1 - Traitement des signaux audio 6
Filtre passe-bas Pour corriger la réponse en fréquence, on fenêtre le filtre par une fenêtre de Blackman ou de Hamming. Fenêtre de Blackman : Fenêtre de Hamming : w [n] = 0.54 0.46cos(2πn/M) w [n] = 0.42 0.5cos(2πn/M) + 0.08cos(4πn/M) ELEN0019-1 - Traitement des signaux audio 7
Filtre passe-bas fenêtré ELEN0019-1 - Traitement des signaux audio 8
Blackman vs Hamming Le choix entre les fenêtres dépend de l application : la fenêtre de Hamming permet une pente plus abrupte tandis que la fenêtre de Blackman offre des ondulations résiduelles plus faibles. ELEN0019-1 - Traitement des signaux audio 9
Outline 1 Filtres Windowed-Sync : Théorie 2 Design du filtre 3 Réalisation dans Matlab 4 Architecture DSP : Rappels 5 Programme standard 6 Réalisation du filtre Windowed-Sync sur DSP ELEN0019-1 - Traitement des signaux audio 10
Réalisation du filtre Le filtre requiert deux paramètres : Fréquence de coupure f c [0, 0.5] : Fraction de la fréquence d échantillonnage Longueur du filtre M : Conditionne la largeur de bande de transition M 4 LB LB est la largeur de la bande de transition, exprimée comme une fraction de la fréquence d échantillonnage : LB [0, 0.5] ELEN0019-1 - Traitement des signaux audio 11
Réalisation du filtre Les expressions h LPI [n] et h HPI [n] présentent des singularités à l origine. On a en réalité h LPI [n] = 2f c h HPI [n] = 1 2f c ELEN0019-1 - Traitement des signaux audio 12
Réalisation du filtre L expression finale du filtre tronqué et fenêtré est donnée ci-dessous. h[n] = sin(2πf c(n M/2)) n M 2 [ 0.42 0.5cos( 2πn ] M ) + 0.08cos(4πn M ) On retrouve dans cette expression l équation du filtre passe-bas tronqué et le fenêtrage de Blackman. ELEN0019-1 - Traitement des signaux audio 13
Outline 1 Filtres Windowed-Sync : Théorie 2 Design du filtre 3 Réalisation dans Matlab 4 Architecture DSP : Rappels 5 Programme standard 6 Réalisation du filtre Windowed-Sync sur DSP ELEN0019-1 - Traitement des signaux audio 14
Implémentation dans Matlab Exemple : Filtre passe-haut Fréquence de coupure : f c = 10 khz Largeur de la bande de transition : 40% de la bande totale Fréquence d échantillonnage : 48 khz ELEN0019-1 - Traitement des signaux audio 15
Implémentation dans Matlab Détermination de la longueur du filtre : M = 4/0.4 = 10. Le filtre aura M + 1 = 11 points. Réponse impulsionnelle sous Matlab (slide suivant). Fenêtrer le signal en le multipliant par la fenêtre adéquate. ELEN0019-1 - Traitement des signaux audio 16
Réponse 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( Réponse impulsionnelle ); subplot(212); plot(f,abs(h)); title( Réponse en fréquence ); ELEN0019-1 - Traitement des signaux audio 17
Outline 1 Filtres Windowed-Sync : Théorie 2 Design du filtre 3 Réalisation dans Matlab 4 Architecture DSP : Rappels 5 Programme standard 6 Réalisation du filtre Windowed-Sync sur DSP ELEN0019-1 - Traitement des signaux audio 18
Mémoire du DSP Le DSP est constitué de 3 zones mémoires : Mémoire P : Contient le code du programme et des interruptions. Mémoires X et Y : Stockage des données. Les deux zones sont connectées à un bus dédié, permettant au DSP d exécuter la plupart des opérations en un cycle. Il faut utiliser la mémoire de façon optimale pour réduire le nombre de cycles! ELEN0019-1 - Traitement des signaux audio 19
Opérations arithmétiques : ALU La plupart des instructions utilisent un ou deux des registres x 0, x 1, y 0, y 1 en entrée et le résultat est stocké dans un des accumulateurs a ou b. Deux déplacements mémoire peuvent être effectués en parallèle avec les opérations de l ALU. Ces opérations mémoire consistent en un déplacement mémoire entre un registre X/Y et un emplacement en mémoire ou inversement. ELEN0019-1 - Traitement des signaux audio 20
Opérations arithmétiques : ALU ELEN0019-1 - Traitement des signaux audio 21
Opérations arithmétiques : ALU ELEN0019-1 - Traitement des signaux audio 22
Modes d adressage : AGU AGU = Address Generation Unit. Il fournit divers modes d adressage requis par les algorithmes DSP : Adressage linéaire Adressage modulo pour buffers circulaires Adressage bit-reverse (FFT) L AGU permet un adressage direct ou indirect. Il est divisé en deux moitiés, chacune ayant un ALU permettant des opérations arithmétiques sur les adresse mémoire (pré-incrémentation, post-incrémentation, etc.). Il y a au total 8 registres indépendants (R), 8 registres d offset (N) et 8 registres de modification (M) qui permettent de sélectionner le mode d adressage. Lecture conseillée : 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 : Théorie 2 Design du filtre 3 Réalisation dans Matlab 4 Architecture DSP : Rappels 5 Programme standard 6 Réalisation du filtre Windowed-Sync sur DSP ELEN0019-1 - Traitement des signaux audio 25
Compilation et exécution Le code source est écrit en langage assembleur. Le code est ensuite compilé à l aide du compilateur asm56300 fourni par Motorola. La commande de compilation est la suivante : asm56300 -a -l -b code.asm Elle produit en sortie un fichier CLD qui peut être exécuté par le DSP. Tout programme peut être écrit à partir du code modèle fourni : pass.asm. ELEN0019-1 - Traitement des signaux audio 26
Pass.asm Ce code modèle contient 5 dépendances qu il est nécessaire d inclure pour exécuter votre code. Les échantillons de gauche et de droite sont réceptionnés dans les accumulateurs a et b. Après traitement, il faut renvoyer les échantillons de sortie dans ces deux accumulateurs. ELEN0019-1 - Traitement des signaux audio 27
Outline 1 Filtres Windowed-Sync : Théorie 2 Design du filtre 3 Réalisation dans Matlab 4 Architecture DSP : Rappels 5 Programme standard 6 Réalisation du filtre Windowed-Sync sur DSP ELEN0019-1 - Traitement des signaux audio 28
Implémentation sur DSP Réalisation d un filtre passe-haut de fréquence centrale f c = 10 khz. Il faut récupérer les coefficients du filtre calculés par Matlab (voir slides précédents). Les coefficients doivent être codés directement dans le code source ASM du filtre. Ils doivent être placés dans une zone mémoire spécifique pour être accessibles lors de l opération de convolution. Le programme qui implémente le filtre applique la formule de la convolution : y [n] = N h [k] x [n k] k=0 où h correspond à la réponse impulsionnelle, donc aux coefficients obtenus dans Matlab. ELEN0019-1 - Traitement des signaux audio 29
Organisation de la mémoire ELEN0019-1 - Traitement des signaux audio 30