compte rendu tp dsp 2

6
7/21/2019 Compte Rendu TP DSP 2 http://slidepdf.com/reader/full/compte-rendu-tp-dsp-2 1/6  Compte rendu Page TP n°2 Filtres passe-bas/passe-haut  TMS 320 C 6416 Objectif  On cherche dans ce TP à implémenter 2 types de filtres : filtre passe-bas et filtre passe-haut sur DSP 6416. L’implémentation sera en code C pur sur IDE CCS v3.  Rappel sur les Filtres Un filtre analogue (de passe bas par exemple) est quasiment, théoriquement parfait. C’est -à-dire, pour le cas d’un filtre passe-bas, toute v ariation de signal au-dessus d’une fréquence bien déterminée (fréquence de coupure ), ce signal sera supprimé de cette variation brusque, ne laissant que les variations (fréquences) modérées. La fonction peut être linéaire et exprimé en fonction de la variable de Laplace. Le signal est continu et infini. En mode numérique, les choses ne passent pas comme ainsi mentionnées. D’abord vue sa capacité d’acquisition des donné es (mémoire, bus etc.) en plus l’application envisagé e (de temps ré el, simulation,  etc. ). De plus du dilemme : il n’est pas possible de t raiter par un sys tème numérique un signal analogique sans la conversion, la notion de la numérisation du signal est née. La numérisation du signal, permettant à la fin d’acquérir le signal ainsi à traiter sera sous forme d’un fichier (ensemble/tableau) de chiffres entiers représentant la grandeur qu’on souhaite filtrer.  Ce fichier est bien sûr n’importe grand qu’il soit, il n’est pas possible de l’assumer d’être à une valeur proche de l’infini  Pour pouvoir traiter un signal numérique, il faut se référer à N états précédents, ceci équivaut à appliquer une multiplication du signal avec une fonction rectangle  de largeur pré-programmé. Le problème réside dans l’équivalent spectral du signal. La multiplication avec rectangle en model temporel c’est équival ent à une convolution avec sinc av ec le spectre du signal () × () ⇋ ()∗() Il faut obligatoirement tenir compte de ceci durant le filtrage. Filtre numérique GE3 II K allel Ahmed Yahia Raboudi Hamza Filtre numérique x[k] y[k] = x[k] * h[k]

Upload: thekdl

Post on 04-Mar-2016

233 views

Category:

Documents


20 download

DESCRIPTION

Compte rendu du TP DSP 2, Filtrage numérique (d'un fichier son) à l'aide d'un microprocesseur DSP TMS320 C6416. Ce TP a été réalisé à l'ENIS en 2015

TRANSCRIPT

Page 1: Compte Rendu TP DSP 2

7/21/2019 Compte Rendu TP DSP 2

http://slidepdf.com/reader/full/compte-rendu-tp-dsp-2 1/6

 

C o m p t e r e n d u P a g e

TP n°2  Filtres passe-bas/passe-haut 

TMS 320 C 6416

Objectif  On cherche dans ce TP à implémenter 2 types de filtres : filtre passe-bas et f iltre passe-haut sur DSP 6416. L’implémentation sera en code C

pur sur IDE CCS v3.

 Rappel sur les Filtres

Un filtre analogue (de passe bas par exemple) est quasiment, théoriquement parfait.

C’est-à-dire, pour le cas d’un filtre passe-bas, toute variation de signal au-dessus d’une fréquence bien

déterminée (fréquence de coupure ), ce signal sera supprimé de cette variation brusque, ne laissant que

les variations (fréquences) modérées.

La fonction peut être linéaire et exprimé en fonction de la variable de Laplace. Le signal est continu et

infini.

En mode numérique, les choses ne passent pas comme ainsi mentionnées. D’abord vue sa capacité

d’acquisition des données (mémoire, bus etc.) en plus l’application envisagée (de temps réel, simulation,  etc. ). De plus du dilemme : il n’est pas possible de traiter par un système numérique un signal

analogique sans la conversion, la notion de la numérisation du signal est née.

La numérisation du signal, permettant à la fin d’acquérir le signal ainsi à traiter sera sous forme d’un

fichier (ensemble/tableau) de chiffres entiers représentant la grandeur qu’on souhaite filtrer.  Ce f ichierest bien sûr n’importe grand qu’il soit, il n’est pas possible de l’assumer d’être à une valeur proche de

l’infini 

Pour pouvoir traiter un signal numérique, il faut se référer à N états précédents, ceciéquivaut à

appliquer une multiplication du signal avec une fonction rectangle  de largeur pré-programmé.

Le problème réside dans l’équivalent spectral du signal.

La multiplication avec rectangle en model temporel c’est équivalent à une convolution avec sinc avec le

spectre du signal

() × () ⇋ () ∗ () 

Il faut obligatoirement tenir compte de ceci durant le filtrage.

Filtre numérique

GE3 II

Ka l l e l Ahmed Yahia

Raboudi Hamza

Filtre numérique

x[k] y[k] = x[k] * h[k]

Page 2: Compte Rendu TP DSP 2

7/21/2019 Compte Rendu TP DSP 2

http://slidepdf.com/reader/full/compte-rendu-tp-dsp-2 2/6

 

C o m p t e r e n d u P a g e

Chaque filtre numérique possède des coeff icients de pondération à appliquer sur le signal qu’on désire traiter (dit signal d’entré). 

Les coeff icients doivent être bien choisis et adéquats à la fenêtre du signal (bande du signal à traiter à la fois).

Coeff icients des filtres  

Pour trouver les coeff icients des filtres, on se sert de MATLAB

Filtre passe-bas , filtre passe-haut

MATLAB 

a=FIR1 10, 0.25, hanning 11)) 

freqz a)  

b=FIR1 10, 0.25, 'high') 

freqz b)  

Filtre passe-bas

Il existe plusieurs méthodes pour réaliser un filtre passe-bas. FIR1(« low ») et FIR1(« Hanining »).

Réponse fréquentielle Réponse fréquentielle

FIR1 avec Hanning FIR1 avec triangle

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-600

-400

-200

0

Normalized Frequency (  rad/sample)

   P   h  a  s  e   (   d  e  g  r  e  e  s   )

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-150

-100

-50

0

Normalized Frequency (  rad/sample)

   M  a  g  n   i   t  u   d  e

   (   d   B   )

Filtre

Type : Filtre passebas.

Bande fréquentielle : [01000Hz]pour8000Hzfréq

d’échantillonage) 

Ordre : 11 

Filtre

Type : Filtre passehaut.

Fréquence de coupure: [1000Hz]pour8000Hzfréq

d’échantillonage) 

Ordre : 11 

  i l t re passe bas

Fir1 sera utilisé pour

générer les coefficients

d’un filtre .

d e g r é e

Ordre du filtre à

implémenter (nombre de

coefficients/échantillons

par block de calcul)

va l eur

2

 

d e g r é e

Type de filtre à

implémenter

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-800

-600

-400

-200

0

Normalized Frequency (  rad/sample)

   P   h  a  s  e   (   d  e  g  r  e  e  s   )

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-150

-100

-50

0

Normalized Frequency (  rad/sample)

   M  a  g  n   i   t  u   d  e   (   d   B

   )

FIR1(10, 0.25, hanning(11))  FIR1(10, 0.25, ‘low’) 

Page 3: Compte Rendu TP DSP 2

7/21/2019 Compte Rendu TP DSP 2

http://slidepdf.com/reader/full/compte-rendu-tp-dsp-2 3/6

 

C o m p t e r e n d u P a g e

L’utilisation de Hanning permet de réduire les ondulations, mais en contrepartie la transition (coupure) a une pente lente .

Filtre passe-haut

Réponse fréquentielle d’un f iltre de passe-haut généré par MATLAB

Coefficients

-0.003084 2.4918e-18 0.038368 0.12208 0.21478 0.25569 0.21478 0.12208 0.038368 2.4918e-18  -0.0030842

0.0036158 -8.212e-18  -0.02997 -0.10901 -0.20614 0.75303 -0.20614 -0.10901 -0.02997 -8.212e-18 0.0036158

Filtre passe-bas (avec Hanning)

Gain Gain

Fréquence Fréquence

Filtre passe-bas (avec triangle)

a

b

Taille : 1x11

Taille : 1x11

Page 4: Compte Rendu TP DSP 2

7/21/2019 Compte Rendu TP DSP 2

http://slidepdf.com/reader/full/compte-rendu-tp-dsp-2 4/6

 

C o m p t e r e n d u P a g e

Coefficients pour C6416

 Vu son architecture Fixed-point, le C6416 doit émuler toute instruction de nombres décimaux.

Pour éviter tout problème, on multiplie les coefficients (qui sont de float ) avec un coefficient plus ou moins de large précision.

En multipliant avec un nombre de 2 bits ceci est équivalent avec un décalage à gauche.

MATLAB 

A1= round(a.*(2^12))

B1= round(b.*(2^12)) 

-13 0 157 500 880 1047 880 500 157 0 -13

15 0 -123 -446 -844 3084 -844 -446 -123 0 15

Schéma de liaison  

A1Taille : 1x11

B1Taille : 1x11

Sortie Audio PC

Entrée haut-parleurs

Line in

Line out

PC

   C  a  r   t  e

   D   S   P

   6   4   1   6

Haut-parleurs

Page 5: Compte Rendu TP DSP 2

7/21/2019 Compte Rendu TP DSP 2

http://slidepdf.com/reader/full/compte-rendu-tp-dsp-2 5/6

 

C o m p t e r e n d u P a g e

C (start.c) /** Copyright 2005 by Ubvideo Tunisia.* All rights reserved. Property of UBT.

*/

#include "dsk6416.h"#include "dsk6416_aic23.h"//codec pour lecture/écriture après CAN#include "audio.h"//fichier header pour les fonctions audio

#define N 11//nb échantillons

////Ajouter les coefficients des filtre passe bas et passe haut trouver avec le matlabshort f_bas[11] = {-13 ,  0,  157,  500,  880, 1047,  880,  500 ,  157,  0,  -13}; short f_high[11] = {15 ,  0,  -123,  -446,  -844, 3084,  -844,  -446 ,  -123,  0,  15 }; //

/** main() - Main code routine, initializes BSL and generates tone*/ 

void main() { 

DSK6416_AIC23_CodecHandle hCodec; Uint32 inputsample; Uint16 firdata; 

short dly[N]; int yn=0; short i; 

//char SW0,SW1;

/* Initialize the board support library, must be called first */ DSK6416_init(); 

/* Start the codec */ hCodec = DSK6416_AIC23_openCodec(0, &config);

/* Set the sampling frequency */ DSK6416_AIC23_setFreq(hCodec, DSK6416_AIC23_FREQ_96KHZ); 

 while(1) // infinite loop{ 

 while (!DSK6416_AIC23_read(hCodec, &inputsample));//Attendre jusqu’à une nouvelle valeur du can/codec 

/*WRITE FIR DATA HERE*/ if(DSK6416_DIP_get(0) ==0) { //voir si DIP 0 est actif (filtre passe-bas) 

dly[0] = inputsample; 

yn = 0; 

for( i = 0 ; i < N ; i++) yn += f_bas[i] * dly[i];//calcul for( i = N-1 ; i > 0 ; i--) dly[i]=dly[i-1]; firdata = (Uint16)(yn>> 12); //division par 2^12 

Page 6: Compte Rendu TP DSP 2

7/21/2019 Compte Rendu TP DSP 2

http://slidepdf.com/reader/full/compte-rendu-tp-dsp-2 6/6

 

C o m p t e r e n d u P a g e

On Remarque que le filtrage passe-bas ne modifier vraiment pas le signal, tandis que celui de filtrage passe-haut est presque muet.

Ceci est clair lorsqu’ on joue une pièce musicale d’ après le PC.

Pour une fréquence d’ échantillonnage 96 khz, à valeur cutoff normalisée 0.25 : la valeur de coupure/cutoff réelle sera 12khz qui est déjà

largement supérieur aux fréquences de paroles voire la plupart des autres instruments musicales.

En dimuniant la fréquence d’ échantillonnage à 8khz (directement), soit une valeur de fréquence de coupure 1000 khz, le passe haut et le passe

bas sont nettement visible, sauf que la qualité du signal (audio) produit est médiocre. (Moins d’ échantillons, précision perdue)

Remarque

On a essayé aussi de modifier le programme pour pouvoir appliquer les 2 filtres en même temps (if(a){}, if(b){}, if ( !a && !b){}), on peut

écouter (pour un signal auditif) un peu d’ audio ce qui met en évidence la pente qu’ on a déjà parlé de.

} else if(DSK6416_DIP_get(1) ==0) {//sinon voir si DIP 1 est actif (passe-haut) dly[0] = inputsample; yn = 0; for( i = 0 ; i < N ; i++) yn += f_high[i] * dly[i]; for( i = N-1 ; i > 0 ; i--) dly[i]=dly[i-1]; firdata = (Uint16)(yn>> 12); 

} else {//si DIP0 et DIP1 ne sont pas actifs, retourner le signal tel qu’ilest 

firdata= (Uint16)inputsample; 

// Send a sample to the left channel //

 while (!DSK6416_AIC23_write(hCodec,firdata)); 

// Send a sample to the right channel */

 while (!DSK6416_AIC23_write(hCodec, firdata)); 

/* Close the codec */ 

DSK6416_AIC23_closeCodec(hCodec);