1 / 14

Calcul numérique de la transformée de Fourier Applications: Détecteur de tonalité numérique (TP2)

Calcul numérique de la transformée de Fourier Applications: Détecteur de tonalité numérique (TP2) Détection DTMF (TP3) Démodulation FSK (TP4) Mise en pratique de la FFT (TP5). Transformée de Fourier (rappels). Signal Spectre x(t) X(f)

gram
Download Presentation

Calcul numérique de la transformée de Fourier Applications: Détecteur de tonalité numérique (TP2)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Calcul numérique de la transformée de Fourier Applications: Détecteur de tonalité numérique (TP2) Détection DTMF (TP3) Démodulation FSK (TP4) Mise en pratique de la FFT (TP5)

  2. Transformée de Fourier (rappels) • Signal Spectre • x(t) X(f) • Temps Fréquences

  3. Calcul approché pour un signal échantillonné x(nTe) • Approximations: • nombre fini d’échantillons : N • -fréquence d’échantillonnage : Te • -Durée du signal : T0 = (N-1).Te

  4. Re(X(kf0)) x(nTe) fréquence Fe/N Fe Im(X(kf0)) temps Te NTe fréquence Fe Fe/N Transformée de Fourier discrète La TFD calcule N valeurs espacées de f0=Fe/N

  5. Calcul de la TFD On calcule séparément la partie réelle et la partie imaginaire

  6. Spectre d’amplitude Fréquences f = k.Fe/N avec k entier de 0 à N-1 Module Amplitude des raies spectrales:

  7. Transformée de Fourier rapide FFT Algorithme de calcul rapide de la TFD N doit être une puissance entière de 2 : N = 2M N = … 16, 32, 64, 128, 256, 512, 1024, 2048…. M = … 4, 5, 6, 7, 8, 9, 10, 11… Ne retourne en général que les N/2 premières valeurs de X(k) lorsque x(n) est une suite de nombre réels. Résolution : f0 = Fe/2M Hz

  8. Détecteur de tonalité - But: Détecter la présence d’une composante de fréquence F connue dans un signal. • Utilisation • Commuter une relais de communication (1750Hz) • Décodeur DTMF, démodulation FSK, Télétypes.. • Méthode utilisée • Le calcul de la transformée de Fourier discrète • pour k = F/f0 permet de déterminer l’amplitude de la composante fréquentielle recherchée.

  9. Virgule flottante dans le DSP 320F28335 Indiquer au compilateur et au linker d’utiliser la virgule flottante(FPU) - Option de compilation: -V28 -- float_support=fpu32 (ou cochez la case fpu32) - Librairie pour l’édition de liens: rts2800_fpu32.lib

  10. Mise en œuvre de la FFT dans le DSP 320F28335 (TP5) Texas Instrument fournit une collection de fonctions optimisées pour le calcul de la FFT en virgule flottante: - C28x_FPU_Lib_Beta1.lib Installation: - Télécharger et installer sprc624 - Répertoire \tidcs\c28\C28x_FPU_Lib\beta1\lib\ Vous y trouverez: - FPU.h - C28x_FPU_Lib_Beta1.lib - des explications: C28x_FPU_Library_Beta1.pdf

  11. Déclarations dans le fichier FPU.h void RFFT_f32 (RFFT_F32_STRUCT *) void RFFT_f32_mag (RFFT_F32_STRUCT *) typedef struct { float32 *InBuf; float32 *OutBuf; float32 *CosSinBuf; float32 *MagBuf; float32 *PhaseBuf; Uint16 FFTSize; Uint16 FFTStages; } RFFT_F32_STRUCT;

  12. Exemple • #include FPU.h • #define FFT_SIZE 128 // Nombre de points 32, 64, 128, 256,… • #define FFT_STAGES 7 // log2(FFT_SIZE) • // !!!!! La section « INBUF » doit être définie et alignée dans le fichier .cmd. • #pragma DATA_SECTION(Inbuf, "INBUF"); • float32 InBuffer[FFT_SIZE]; // pour stocker les échantillons… • float32 OutBuffer[FFT_SIZE]; // pour récupérer les résultats (Re et Im) • float32 MagBuffer[FFT_SIZE/2]; // pour récupérer les amplitudes • float32 TwiddleBuffer[FFT_SIZE]; //les coefficients sin.. et cos.. • RFFT_F32_STRUCT fft; //la structure • main() • { fft.InBuf = InBuffer; //initialisation • fft.OutBuf = OutBuffer; • fft.MagBuf = MagBuffer; • fft.CosSinBuf = TwiddleBuffer; • fft.FFTSize = FFT_SIZE; • fft.FFTStages = FFT_STAGES; • //……remplir InBuffer[] avec les échantillons (par interruption, DMA,…) • RFFT_f32_sincostable(&fft) // fin initialisation • RFFT_f32(&fft); //Calcul de la FFT (les Re et Im) • RFFT_f32_mag(&fft); //Calcul des amplitudes • //… Utiliser les résultats… • }

  13. Alignement de la section « INBUF » - Ligne à ajouter au fichier .cmd INBUF ALIGN( 256 ) : { } > RAML6 PAGE 1 - Cette ligne sera utilisée par l’éditeur de liens (linker) Zone mémoire à utiliser 2 fois la taille de la FFT (ici FFT 128 points) Nom de la section

  14. Performances RFFT_f32 RFFT_f32_mag

More Related