Professional Documents
Culture Documents
Filtres passe-bas/passe-haut
TP n2
Kal l e l A hm e d Y ahi a
Raboudi H am za
GE3 II
TM S 320 C 6416
Objectif
On cherche dans ce TP implmenter 2 types de filtres : filtre passe-bas et filtre passe-haut sur DSP 6416. Limplmentation sera en code C
pur sur IDE CCS v3.
Un filtre analogue (de passe bas par exemple) est quasiment, thoriquement parfait.
Cest--dire, pour le cas dun filtre passe-bas, toute variation de signal au-dessus dune frquence bien
dtermine (frquence de coupure), ce signal sera supprim de cette variation brusque, ne laissant que
les variations (frquences) modres.
La fonction peut tre linaire et exprim en fonction de la variable de Laplace. Le signal est continu et
infini.
En mode numrique, les choses ne passent pas comme ainsi mentionnes. Dabord vue sa capacit
dacquisition des donnes (mmoire, bus etc.) en plus lapplication envisage (de temps rel, simulation,
etc.). De plus du dilemme : il nest pas possible de traiter par un systme numrique un signal
analogique sans la conversion, la notion de la numrisation du signal est ne.
La numrisation du signal, permettant la fin dacqurir le signal ainsi traiter sera sous forme dun
fichier (ensemble/tableau) de chiffres entiers reprsentant la grandeur quon souhaite filtrer. Ce fichier
est bien sr nimporte grand quil soit, il nest pas possible de lassumer dtre une valeur proche de
linfini
Pour pouvoir traiter un signal numrique, il faut se rfrer N tats prcdents, ceci quivaut
appliquer une multiplication du signal avec une fonction rectangle de largeur pr-programm.
x[k]
C o m p t e
r e n d u
Filtre numrique
Page
Chaque filtre numrique possde des coefficients de pondration appliquer sur le signal quon dsire traiter (dit signal dentr).
Les coefficients doivent tre bien choisis et adquats la fentre du signal (bande du signal traiter la fois).
Filtre
Type
Bande frquentielle
Filtre
Type
Frquence de coupure
dchantillonage)
Ordre
dchantillonage)
Ordre
11
11
MATLAB
Fi l t r e p asse b as
de gr e
v al e u r
de gr e
Ordre du filtre
implmenter (nombre de
coefficients/chantillons
par block de calcul)
Type de filtre
implmenter
Filtre passe-bas
Il existe plusieurs mthodes pour raliser un filtre passe-bas. FIR1( low ) et FIR1( Hanining ).
Magnitude (dB)
Magnitude (dB)
-50
-100
-150
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
Phase (degrees)
Phase (degrees)
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
-200
-400
-200
-400
-600
-800
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
C o m p t e
-100
-150
-600
-50
r e n d u
Page
Gain
Gain
Frquence
Frquence
Lutilisation de Hanning permet de rduire les ondulations, mais en contrepartie la transition (coupure) a une pente lente .
Filtre passe-haut
Rponse frquentielle dun filtre de passe-haut gnr par MATLAB
Coefficients
a
-0.003084
Taille :
2.4918e-18
0.038368
0.12208
0.21478
0.25569
0.21478
0.12208
0.038368
2.4918e-18
b
0.0036158
C o m p t e
r e n d u
-0.0030842
Taille :
-8.212e-18
-0.02997
-0.10901
-0.20614
0.75303
-0.20614
-0.10901
-0.02997
-8.212e-18
1x11
1x11
0.0036158
Page
A1= round(a.*(2^12))
B1= round(b.*(2^12))
A1
-13
Taille :
157
500
880
1047
880
500
157
B1
15
Schma de liaison
-13
Taille :
-123
-446
-844
3084
-844
-446
-123
1x11
1x11
15
Sortie Audio PC
Entre haut-parleurs
Haut-parleurs
PC
Line out
C o m p t e
r e n d u
Line in
Page
5
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 aprs 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 matlab
short 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;
C o m p t e
r e n d u
Page
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 lorsquon joue une pice musicale daprs le PC.
Pour une frquence dchantillonnage 96 khz, valeur cutoff normalise 0.25 : la valeur de coupure/cutoff relle sera 12khz qui est dj
largement suprieur aux frquences de paroles voire la plupart des autres instruments musicales.
En dimuniant la frquence dchantillonnage 8khz (directement), soit une valeur de frquence de coupure 1000 khz, le passe haut et le passe
bas sont nettement visible, sauf que la qualit du signal (audio) produit est mdiocre. (Moins dchantillons, prcision perdue)
Remarque
On a essay aussi de modifier le programme pour pouvoir appliquer les 2 filtres en mme temps (if(a){}, if(b){}, if ( !a && !b){}), on peut
couter (pour un signal auditif) un peu daudio ce qui met en vidence la pente quon a dj parl de.
C o m p t e
r e n d u
Page