Compte Rendu TP DSP 2 PDF
Compte Rendu TP DSP 2 PDF
Compte Rendu TP DSP 2 PDF
Kal l e l A hm e d Y ahi a
TP n°2 Filtres passe-bas/passe-haut Raboudi H am za
GE3 II
TM S 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.
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 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é.
La multiplication avec rectangle en model temporel c’est équivalent à une convolution avec sinc avec le
spectre du signal
Filtre numérique
C o m p t e r e n d u Page
2
Chaque filtre numérique possède des coefficients de pondération à appliquer sur le signal qu’on désire traiter (dit signal d’entré).
Les coefficients doivent être bien choisis et adéquats à la fenêtre du signal (bande du signal à traiter à la fois).
Filtre Filtre
Bande fréquentielle : [0 1000Hz] pour 8000Hz fréq Fréquence de coupure : [1000Hz] pour 8000Hz fréq
d’échantillonage) d’échantillonage)
Ordre : 11 Ordre : 11
MATLAB
Fi l t r e p asse b as
a= FIR1( 10, 0.25, hanning(11)) Fir1 sera utilisé pour
freqz( a) générer les coefficients
d’un filtre .
b= FIR1( 10, 0.25, 'high')
freqz( b)
de gré e
v al e u r Ordre du filtre à
de gré e
Type de filtre à 𝐹𝑐𝑜𝑢𝑝𝑢𝑟𝑒 implémenter (nombre de
implémenter 𝐹𝑒 coefficients/échantillons
2 par block de calcul)
Filtre passe-bas
Il existe plusieurs méthodes pour réaliser un filtre passe-bas. FIR1(« low ») et FIR1(« Hanining »).
0
0
Magnitude (dB)
-50
Magnitude (dB)
-50
-100
-100
-150
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 -150
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Normalized Frequency ( rad/sample) Normalized Frequency ( rad/sample)
0 0
Phase (degrees)
Phase (degrees)
-200
-200
-400
-400
-600
-600 -800
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Normalized Frequency ( rad/sample)
Normalized Frequency ( rad/sample)
C o m p t e r e n d u Page
3
Gain Gain
Fréquence Fréquence
L’utilisation de Hanning permet de réduire les ondulations, mais en contrepartie la transition (coupure) a une pente lente .
Filtre passe-haut
Coefficients
a Taille : 1x11
-0.003084 2.4918e-18 0.038368 0.12208 0.21478 0.25569 0.21478 0.12208 0.038368 2.4918e-18 -0.0030842
b Taille : 1x11
0.0036158 -8.212e-18 -0.02997 -0.10901 -0.20614 0.75303 -0.20614 -0.10901 -0.02997 -8.212e-18 0.0036158
C o m p t e r e n d u Page
4
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))
A1 Taille : 1x11
B1 Taille : 1x11
Schéma de liaison
Sortie Audio PC
Entrée haut-parleurs
Haut-parleurs
PC
Line in
Carte DSP 6416
Line out
C o m p t e r e n d u 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 après CAN
#include "audio.h"//fichier header pour les fonctions audio
//
//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
6
} else {//si DIP0 et DIP1 ne sont pas actifs, retourner le signal tel qu’il
est
firdata= (Uint16)inputsample;
}
while (!DSK6416_AIC23_write(hCodec,firdata));
DSK6416_AIC23_closeCodec(hCodec);
}
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.
C o m p t e r e n d u Page