La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Calcul numérique de la transformée de Fourier Applications:

Présentations similaires


Présentation au sujet: "Calcul numérique de la transformée de Fourier Applications:"— Transcription de la présentation:

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


Télécharger ppt "Calcul numérique de la transformée de Fourier Applications:"

Présentations similaires


Annonces Google