Télécharger la présentation
Publié parDamien Guichard Modifié depuis plus de 9 années
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
Transformée de Fourier discrète
La TFD calcule N valeurs espacées de f0=Fe/N temps x(nTe) Re(X(kf0)) Im(X(kf0)) fréquence Fe/N Fe Te NTe
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, , , … 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
Indiquer au compilateur et au linker d’utiliser la virgule flottante(FPU) - Option de compilation: -V 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 - 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 // 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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.