Filtrage Numérique - Semestre 4


PART A - Présentation Générale du Cours

Contexte et objectifs

Approfondissement filtrage numérique (suite SE S3) avec implémentation temps réel sur STM32. Projet : filtre audio complet (conception MATLAB → code C optimisé → validation matérielle).

Objectifs :

Prérequis


PART B: EXPÉRIENCE, CONTEXTE ET FONCTION

Module 1 : Conception filtres avancés

Filtres IIR :

Filtres FIR optimaux :

Structures de réalisation :

Module 2 : Arithmétique virgule fixe

Formats Qm.n :

Quantification :

Effets :

Module 3 : Implémentation temps réel STM32

Architecture :

Optimisations :

Exemple FIR Q15 :

arm_fir_instance_q15 S;
q15_t coeffs[NUM_TAPS];
q15_t state[BLOCK_SIZE + NUM_TAPS - 1];

arm_fir_init_q15(&S, NUM_TAPS, coeffs, state, BLOCK_SIZE);
arm_fir_q15(&S, input, output, BLOCK_SIZE);

PART C: ASPECTS TECHNIQUES

Projet Filtre Audio

Phase 1 : Conception MATLAB

Phase 2 : Implémentation STM32

Phase 3 : Validation

TP Comparatif virgule fixe vs flottante

Objectif : Comparer Q15 vs float32 pour même filtre.

Métriques :

Résultats typiques (Cortex-M4F) :


PART D: ANALYSE ET RÉFLEXION

Évaluation

Compétences acquises

Applications

📚 Contenu du cours

Synthèse de filtres numériques

Filtres RII (IIR)

Méthodes de synthèse :

Transformation bilinéaire :

Design direct numérique :

Types de filtres :

Structures de réalisation :

Forme directe I :

y[n] = b0*x[n] + b1*x[n-1] + ... - a1*y[n-1] - a2*y[n-2] - ...

Forme directe II (canonique) :

Cascade (SOS - Second Order Sections) :

Forme parallèle :

Filtres RIF (FIR)

Avantages :

Méthodes de synthèse :

Fenêtrage :

Échantillonnage fréquentiel :

Méthode des moindres carrés :

Parks-McClellan (Remez) :

Structures FIR :

Implémentation sur microcontrôleur

STM32 avec FPU (Cortex-M4F)

Bibliothèque CMSIS-DSP :

Formats de données :

Virgule flottante (float32) :

Virgule fixe (Q15, Q31) :

Optimisations

Code :

Mémoire :

Temps réel :

Effets de quantification

Quantification des coefficients

Bruit de quantification

Débordement arithmétique

Limit cycles (oscillations parasites)

Architectures avancées

Filtres adaptatifs

Bancs de filtres

Filtres multirate

🛠️ Travaux pratiques

TP Conception de filtres

Objectif : Synthèse de filtres sous MATLAB

Étapes :

  1. Spécifications (Fp, Fs, Ap, As)
  2. Calcul d’ordre minimal
  3. Synthèse coefficients
  4. Simulation réponse
  5. Analyse quantification

Outils MATLAB :

TP Implémentation temps réel

Matériel :

Projet : Égaliseur audio 3 bandes

Contraintes :

Mini-projet : Filtre adaptatif

Application : Suppression d’écho ou de bruit

Algorithme :

Implémentation :

💻 Outils utilisés

Simulation et design

Développement embarqué

Test et validation

📊 Évaluation

🔗 Liens avec d’autres cours

📐 Exemple de calcul

Filtre passe-bas Butterworth

Spécifications :

Calcul ordre :

[n, Wn] = buttord(Fp/(Fe/2), Fs/(Fe/2), Ap, As);
% n = 5 (ordre minimal)

Synthèse :

[b, a] = butter(n, Wn);
[sos, g] = tf2sos(b, a); % Cascade de biquads

Calcul de latence

Latence de groupe :

Latence système :

💡 Applications pratiques

Audio

Télécommunications

Biomédical

Instrumentation

📖 Compétences développées

🎯 Structure typique biquad (IIR ordre 2)

Équation aux différences

y[n] = b0*x[n] + b1*x[n-1] + b2*x[n-2] 
       - a1*y[n-1] - a2*y[n-2]

Fonction de transfert

H(z) = (b0 + b1*z^-1 + b2*z^-2) / (1 + a1*z^-1 + a2*z^-2)

Code C (CMSIS-DSP)

arm_biquad_casd_df1_inst_f32 S;
float32_t pState[4*numStages];
float32_t pCoeffs[5*numStages]; // b0,b1,b2,a1,a2

arm_biquad_cascade_df1_init_f32(&S, numStages, 
                                 pCoeffs, pState);

// Dans la boucle temps réel :
arm_biquad_cascade_df1_f32(&S, pSrc, pDst, blockSize);

⚠️ Pièges courants

Conception

Implémentation

Optimisation

🔧 Bonnes pratiques

Design

  1. Spécifications claires
  2. Choix type filtre adapté
  3. Structure robuste (cascade)
  4. Simulation complète

Code

  1. Utiliser bibliothèques optimisées
  2. Buffers circulaires
  3. DMA pour I/O
  4. Mesure temps d’exécution

Test

  1. Signaux synthétiques (sinusoïdes, chirp)
  2. Signaux réels
  3. Cas limites
  4. Validation fréquentielle et temporelle