Académique Documents
Professionnel Documents
Culture Documents
Finie – FIR –
Les échantillons à la sortie « y(k) » d’un filtre FIR se calculs en fonction de l’entrée « x(k) » par la
formule suivante :
Notre objectif est d’implémenter un filtre FIR coupe bande, avec la fréquence ‘coupée’ fixée à
2700Hz. Le schéma suivant résume l’objectif de notre TP.
Matlab DSK6713
Fichier Audio
Voix_enfant.wav
Filtre FIR Coupe bande
(fcoupée = 2700Hz)
% voix_plus_buit.m
% Mélange d'un fichier audio (voix_enfant.wav) avec un signal
% sonore sinusoidal de fréquence 2700Hz.
% L = Nombre d'échantillons dans le fichier voix_enfant.wav
% Fs = fréquence d'échantillonage
% f1 = fréquence du signal bruit (2700Hz)
clear all
Fs=8000;
figure(2)
clf
plot(z)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% FFT : voir le help de Matlab
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Conception d’un filtre FIR avec Matlab – détermination des coefficients h(n) du filtre
La conception de notre filtre coupe-bande doit commencer par la détermination des coefficients
h(k). Matlab dispose de deux outils destinés à la conception de filtres numériques SPTool et
FDATool, nous utiliserons dans ce TP l’outil FDATool. Le schéma suivant représente le gabarit
désiré pour notre filtre avec :
Fpass1 = 2500Hz
Fstop1 = Fstop2 = 2700Hz
Fpass2 = 2900Hz
Apass1 = Apass2 = 0,5 dB
Astop = 40 dB
|H|dB
Apass1 Apass2
Astop
Les coefficients sont donc disponibles (pour un copier coller), mais ne sont pas utilisables
directement puisqu’ils sont en virgule flottante (avec ce format, le calcul est plus précis au
détriment du temps de calcul qui peut être élevé). Il est nécessaire de transformer le format des
coefficients en « entiers-signés ».
1. Allez dans le menu « Target » et sélectionnez « Generate C Header … »
2. Sélectionnez les choix suivants :
a. Numerator : h
b. Numerator length : N
c. Export as : cochée
i. Signed 16-bit integer
3. Cliquez sur « Generate »
Les coefficients sont enregistrés dans le fichier « fdacoefs.h » par défaut. Nous voulons plutôt
mettre ces données dans un fichier de terminaisons « .cof ».
const int N = 91 ;
const int16_T h[91] = {
par
#define N 91 ;
Short h[91] = {
Le fichier « fdacoefs.cof » est prêt à être incorporé dans le projet d’implémentation du filtre
dans la DSK6713.
Page 5 sur 6
return;
}
void main()
{
comm_intr(); //initialisation DSK, codec, McBSP
while(1); //boucle infinie
}
>> wavplay(z,Fs)
>> wavplay(5*z,Fs)
Page 6 sur 6