IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Filtre passe bas second ordre


Sujet :

C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Par défaut Filtre passe bas second ordre
    Bonjour,

    Je travail sur un FPGA Actel Fusion et je dois filtré un signal. Je dois donc programmer une équation à récurrence :

    VFiltre(t+2) = [(a + 2b)*VFiltre(t+1)-b*VFiltre(t)+(VNon-Filtre(t+2)]/(1+a+b)

    où ===> b=1/(w0²) ; a=(2*z)/w0) ; w0=0.05*2*Pi ; z=0.1

    Je programme ( j'essaye ) avec SoftConsole. La compilation me donne un fichier .hex qui est mon complément de fichier en VHDL pour la suite du projet.

    Je débute en langage C ( j'ai quelques notions ). J'ai plusieurs difficultés liées à cette équation. Tout d'abord je dois m'adapter à un programme qui à été conçu par une autre personne. Le signal non filtré est appelé Freq et est généré en lisant des valeurs dans une NVM de 32bits

    freq=get_data_nvm(n1-premier_n1) + offsetN2

    Ce signal envoie un mot 32bits à un DDS du type1 415 829 758 tous les 1KHz.
    Ce signal est déclaré en static int dans le programme.

    Pour obtenir dans un sprintf du Freq(t);Freq(t-1);(Freq(t-2) j'ai trouvé cette solution :

    Freq(t-1) = tabtm1[0];

    for (i=0; i<2 ;i++)
    val= freq;
    tabtm1[tm1_n1++] = val;

    if(tm1_n1 == 1)
    tm1_n1 = 0;

    Freq(t-2) = tabtm2[0];

    for (j=0; j<2 ;j++)
    val2= Freq(t-1);

    tabtm2[tm2_n1++] = val2;

    if(tm2_n1 == 1)
    tm2_n1 = 0;

    C'est un peu moche mais par RS232 j'arrive à mettre en évidence du t;t-1;t-2 avec un signal lut sur un gpio.

    Je post en pièce joint le fichier.c avec mon équation de récurrence et les déclarations de variables.

    En réalisant je me suis aperçu que je manipulais des nombres à virgule et je pense que le résultat de l'équation doit être déclaré en unsigned long long car je multiplie une variable int qui est déja codé sur 31 bits.

    Merci de votre aide, ça fait près de 2 semaines qui j'essaye un peu tout.
    Fichiers attachés Fichiers attachés
    • Type de fichier : c isr.c (7,3 Ko, 97 affichages)

Discussions similaires

  1. filtre passe bas ordre 1
    Par Kiryuu dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 27/10/2011, 15h38
  2. Filtre passe bas
    Par vinzzzz dans le forum Traitement d'images
    Réponses: 8
    Dernier message: 26/02/2007, 13h51
  3. Filtre passe bas et filtre de peigne
    Par jena dans le forum Signal
    Réponses: 8
    Dernier message: 04/02/2007, 15h53
  4. Classe filtre passe-bas
    Par nostub dans le forum Multimédia
    Réponses: 1
    Dernier message: 24/12/2006, 17h20
  5. Lire un son WAVE + filtre passe BAS/HAUT
    Par selmak7 dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/08/2006, 13h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo