Filtre numérique à l'aide d'une équation récurrente dans FPGA

Bonjour à tous,
Je souhaite implémenter un filtre numérique dans un FPGA (Virtex-II à 1 million de portes logiques).
Pour cela j'ai calculer mon équation récurrente qui est : S(n) = (1/b0)*[a0.E(n) + a1.E(n-1) + a2.E(n-2) - b1.S(n-1) - b2.S(n-2).
Je me suis dis qu'implémenter cette équation serait facile avec les registres à décalages mais finalement j'ai plutôt un problème avec le format des datas.
En effet, les coefficients calculés sont très petits. Par exemple a0 = 0,01226993865.
Et donc en utilisant le format FXP (virgule fixe), je dois mettre le format <+/-,39,2> : [-2,000000E+0 , -2,000000E+0]:7,275958E-12  , pour avoir la résolution adéquate à mes coefficients.
Le problème c'est que lors d'une multiplication, le nombre de bits "word length" (39 dans mon exemple) et "integer word length" (2) est doublé...
Avec un maximum de 64bits pour le "word length", j'atteins vite la limite...
Avez-vous une idée pour la mise en oeuvre de ce filtre ?
Une astuce à utiliser pour manipuler des nombres très petits dans un FPGA ?
Benjamin
Résolu !
Accéder à la solution.

Bon, voilà comment j'ai fais :
Depuis mon controleur, je multiplie par 2^15 mes coefficients puis je les envoie dans mon FPGA.
Et dans mon équation récurrente sur FPGA, je multiplie ma sortie par 2^(-15) !
Et le tour est joué !

Similar Messages

  • Filtre numérique: comment synchroniser l'entrée et la sortie avec DAQmx et une carte PCI6251?

    j'ai réalisé un filtre numérique ( voir fichier joint). j'envoie sur la carte PCI.6251 le signal d'un GBF et je récupère sur un oscillo le signal de sortie de ma carte. Dans le diagramme de la face avant tout fonctionne correctement, mes signaux sont correctement synchronisés et tout ce passe comme dans la théorie.
     Par contre si je visualise les signaux d'entrée et sortie sur l'oscilloscope les niveaux sont corrects mais ils ne sont plus synchronisés.  Que manque t'il à mon programme? ou quelle erreur ai je commis?
    Attachments:
    filtrenum.vi ‏433 KB

    Bonjour Krsone,
    Vous avez tout à fait raison concernant l'utilisation des signaux ACK et STOPTRIG.
    Je vous conseille d'ailleurs, pour avoir plus d'information, de bien lire les pages 2-9 et 2-13 du manuel de la carte que vous pouvez télécharger dans le lien ci-dessous :
    http://digital.ni.com/manuals.nsf/websearch/3ED785B6332E5C3186256F9400812729?opendocument
    Maintenant, pour l'utilisation de la fonction "DIG_Trigger_Config", vous pouvez trouver une aide détaillée sur cette fonction en allant dans :
    "Démarrer>>Tous les Programmes>>National Instruments>>NI-DAQ" et en sélectionnant "NI-DAQ Function Reference Help"
    Dans l'onglet "Rechercher" tapez le nom de la fonction.
    J'espère que cela vous aidera à avancer dans votre projet.
    Cordialement,
    Sanaa T
    National Instruments France
    Sanaa T.
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    >> http://www.nidays.fr/images/081110_ban_nidays09_468X60.gif

  • Filtre numérique pseudo temps réel

    Bonjour,
    Je travaille actuellement sur une application pour réaliser un traitement numérique du signal soit pour étudier les filtres numériques, soit pour corriger en "pseudo" temps réel des systèmes asservis.
    Je suis parti sur la version jointe mais avec la boucle cadencée, je suis limité en période d'éch. (Je ne touve pas une autre source que 1 kHz??).
    Je travaille en LV2012 avec une carte PCI6228 (mes VIs acceptent la USB6009 pour test).
    Je suppose que le temp de traitement (mesure des résultats à l'oscilloscope) est tel que Tech =  2 ms au minimum ?
    Puis-je utiliser au mieux la carte qui doit pouvoir travailler à plus de 500 Hz de fech mais enn utilisant une autre structure que les boucles cadencées ??
    merci de vos éléments de réponses.
    FcRd
    Pièces jointes :
    TraitementTpsReel.zip ‏443 KB

    Bonjour,
    Merci pour cette réponse.
    Nous n'aimons pas trop ActiveX car il est un peu trop "Microsoft dépendant". Nous avons eu déjà des problèmes avec une de nos applis en changeant de Word (par exemple): le service informatique ne demande pas notre accord pour installer telles ou telles mises à jour sur un poste...
    Pour le script (Matlab, Scilab), nous avons effectivement vu ces techniques mais cela ne convient pas à l'usage que nous voulons en faire, à savoir:
    - nous recherchons puis validons un protocole statistique avec un logiciel "spécialisé" et plus adapté
    - nous intégrons ces calculs statistiques dans notre appli LabVIEW en minimisant leur requalification.
    En important un script dans un code LabVIEW, rien ne garantit que personne n'a touché par mégarde au code Matlab/Scilab donc nous sommes obligés de revalider les calculs statistiques une fois le programme LV terminé.
    Avec un code compilé, nous pouvons garantir que le code statistique, une fois validé, ne peut être modifié. D'autre part, cela nous permettrait de corriger/modifier éventuellement les calculs sans avoir à requalifier toute l'appli.
    Nous voulons bien "séparer" les 2 parties pour:
    1 - minimiser les étapes de qualification
    2 - simplifier les mises à jour
    Nous cherchons donc un logiciel statistique qui puisse générer un code compilé ou utiliser un protocole de com compatible avec LabVIEW. Nous connaissons bien LabVIEW et ses possibilités mais au niveau logiciel mathématique compatible, nous n'y connaissons rien.
    Des statisticiens nous ont parlé de R mais n'étant pas des programmateurs ni des experts R, ils ne pouvaient pas nous dire s'il pouvait générer des codes compilés et/ou "dialoguer" avec LabVIEW.
    Matlab pourrait, nous a-t-on dit, générer des DLL/EXE mais de là à pouvoir les exploiter sous LabVIEW, nous n'en savons rien.
    Nous continuons à chercher. Encore merci.

  • Trigger numérique sur une carte NI-USB 6210

    Bonjour,
    Je vous remercie d'avance pour votre aide.
    Ce matin en voulant tester le programme (sous-VI) en pièce-jointe. Je me suis rendu compte que je n'arrivais pas à voir le signal de déclenchement qui est un
    front montant (impulsion de 10V)
    Mon programme est censé remplacer un oscilloscope pour mesurer une constante de temps sur le moteur (je ne sais pas si c'est claire), je pensais que le soft à faire serait simple mais à force de faire des modifications et des essais. Je ne sais pu, si il est apte à faire ce que je lui demande ... Du coup, je ne sais pas si le problème vient du câblage entre le moteur et la carte ou sur le soft.
    Ma question est : Est-ce que mon Sous-VI peut mesurer la constante de temps du moteur ( 200 points sur 2 ms) lorsque mon trigger est déclenché?
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    Mesure_de_constante_de_temps-Sous-VI-2-machines d'état.vi ‏125 KB

    Salut alexandrefcsm,
    Premièrement pour ta question sur le tableau des charactéristiques des entrées numériques:
    - Vil est la tension d'entrée pour lequel un état numérique bas est détectée.
     Pour n'importe quel tension comprise entre 0 et 0.8V un état bas sera détecté donc oui une tension de 0.5V sera considéré et mesuré comme un état bas part ton système de mesure.
    - Vih est la tension d'entrée pour un lequel un état numérique haut est détectée soit une tension comprise entre 2 et 5.25V.
    - Toute tension détecté qui se situe entre 0.8V et 2V correspondra à un état numérique indéterminé.
    Concernant ton système peut-tu me donner des précisions sur les branchements que tu effectue sur ton NI-USB 6210 et quelle entrée tu utilise pour déclencher ton trigger ? Pourrais-tu fournir le VI "Variable global - test.vi" qui est demandé lors de l'ouverture de ton VI mesure_constante_de_temps ?
    A + 
    Louis
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    Travaux Pratiques d'initiation à LabVIEW et à la mesure
    Du 2 au 23 octobre, partout en France

  • Sélection de valeurs numériques lues dans une boucle

    Bonjour à tous,
    Presque débutant, je cherche à résoudre le problème suivant :
    Je lis une valeur numérique à 1Hz.
    Si elle est > à 1
    et
    Si elle est différente de la valeur précédente.
    Je l'écris dans un fichier.
    Malheureusement je n'arrive pas à me sortir de cette affaire.
    Pouvez vous m'aider ?
    Salutations
    Résolu !
    Accéder à la solution.

    Bonsoir,
    Voici une petite traduction de l'algo à utiliser
    Pour l'enregistrement il y a des fonctions existantes dans la palette File IO, je vous laisse le soin de choisir celle qui vous conviendra...
    Cordialement,
    Rodéric L
    Certified LabVIEW Architect
    Pièces jointes :
    Sans titre.jpg ‏19 KB

  • Logiciel triggé par une entrée numérique

    Bonjour à tous,
    Je suis nouveau en LabVIEW et produits NI.
    Je n'ai pas réussi à trouver une réponse à ma question dans le forum.
    Voici mon besoin: A partir de 2 entrées numériques (A et B) de TOP de synchronisation, je dois déclancher l'envoi de 2 trames par liaisons série. J'utiliserais LabVIEW pour celà.
    Voici mes questions: Existe-t-il des trigger qui vont faire une "interruption" sur le soft à partir d'entrées numériques (TTL) ? Si oui est-ce que tous les produits NI sont compatibles pour peu qu'il y ai des entrées numériques ? Quel est l'élément LabVIEW pour attendre le TOP de synchronisation ? (j'ai vu celui ci: http://forums.ni.com/ni/attachments/ni/4170/10637/1/Wait%20Next.JPG mais je ne sais pas si ça convient).
    Merci d'avance pour votre aide.

    Bonjour,
    Il est tout à fait possible de réaliser ce type de programme. Suivant le matériel que tu as, tu dois aller voir dans la doc et dans les spécifications, tu cherches "trigger source". Tu peux faire un trigger logiciel ou matériel avec source externe pour déclencher l'envoi de tes trames !!!
    Regarde dans les exemples NI de ton logiciel LabVIEW tu y trouveras des exemples.
    Il faut utiliser la librairie de VIs DAQmx pour faire ton trigger.
    Bon courage.
    Philippe B.
    Certified Associate Developer / Dépt Moyens d'essais
    www.ingenia-system.com

  • Imovie Je veux faire un diaporama à base de photos numérique. Normalement, je peux régler la durée des images en une seule fois, mais je n'y arrive pas. Je vais dans propriétés de la vidéo, réglages, je règle la durée.. (pas de thème). Rien ne se passe???

    Imovie Je veux faire un diaporama à base de photos numérique. Normalement, je peux régler la durée des images en une seule fois, mais je n'y arrive pas. Je vais dans propriétés de la vidéo, réglages, je règle la durée.. (pas de thème). Rien ne se passe???

    Postez votre question à cette communauté https://discussions.apple.com/community/ilife/imovie

  • Est il possible de faire correspondre la couleur d'un bouton avec une valeur numérique ?

    Bonjour à tous,
    J’aimerais faire correspondre l’intensité de la couleur d’un bouton (ou d’une led) avec une valeur numérique. Est ce que quelqu'un à une idée par hasard ?
    Merci par avance,
    ManDeb  
    Solved!
    Go to Solution.

    I don't speak French but according to your example you want this?
    Also, I just realized the vi already posted the same thing, just that the boolean was false when i ran it so it looked like it wasn't working to me
    Message Edited by elset191 on 05-20-2009 10:52 AM
    Tim Elsey
    LabVIEW 2010, 2012
    Certified LabVIEW Architect
    Attachments:
    colors.vi ‏10 KB

  • Pilotage d'une valeur numérique en fonction des plages horaires

    Bonjour ,
    Je suis un nouveau utilisateur de LabView.
    Je cherche à piloter une valeur numérique sur LabView en fonction des plages horaires de la journée.
    Je prend l'heure et la date de mon système .Je découpe ma journée en 4 plages de 6h je configure pour chaques plages une valeur numérique qui commandera un autre Sous VI.
    Par exemple , entre 6h et 12:30h : ma valeur prend comme valeur 20 et entre 12:30h et 18h elle prend 25 et ainsi de suite.
    Veuillez me proposer une solution pour automatiser mon programme afin d'éviter la saisie de la valeur par l'utilisateur.
    Je vous remercie.

    salut à tous,
    je pense que tu as proposé la bonne solution ouadji.
    A+
    Luc Desruelle | Voir mon profil | LabVIEW Code & blog
    Co-auteur livre LabVIEW : Programmation et applications
    CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
    CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

  • Enregistrement d'une entrée analogique lors d'un changement d'état d'une entrée numérique.

    Dans mon application, je dois contrôler si un manocontact de pression pneumatique est bien réglé. C’est-à-dire,  je dois visualiser sur « la face avant » la valeur d’une entrée analogique du module NI 9203 à laquelle une entrée numérique du module NI 9422 change de valeur (passe de 24Vdc à 0).
    SVP, Je préfère un exemple pour mieux comprendre.

    Hi Jacob,
    Sorry it took me some time to respond but if you still have problems with this. I would suggest you take a look at the example i attached. You can also find this example with the NI Example finder because it comes standard with Labview.
    There you will also find the description of what the example will do. But in short you are going to have to configure your analog measurement to be triggered on a digital edge change.
    In the NI Example finder are perhaps also other examples that can help you. Try it out. You can find the example finder on the bottom right when you are in the getting started screen or when you are in a vi, go to help and then select find examples.
    Once the example finder is open navigate to Hardware input and output -> DAQmx -> Analog Measurements -> Voltage, there you will find the example i attached with a description. Good luck and keep me posted.
    Kind Regards,
    Joris Donders
    National Instruments
    Applications Engineering
    www.ni.com/support
    Attachments:
    Acq&Graph Voltage-Int Clk-Dig Start.vi ‏42 KB

  • Comment faire pour synchroniser une sortie numérique sur une horloge?(pci6602)

    Bonjour,
    je voudrais faire des sorties numériques sur une ligne donnée (carte PCI 6602), ces sorties étant réalisées pour chaque front descendant d'une horloge. En clair, je voudrais synchroniser la sortie d'une valeur numérique sur le front descendant d'une horloge : comment faire ?

    Bonjour,
    Générer des mots numériques ou une valeur binaire (sur une ligne ou un port) avec un cadencement matériel (horloge compteur sur front montant ou descendant) n'est pas possible avec une carte 6602 seule car elle n'a pas été conçue dans ce but. La carte possède 8 compteurs mais n'a pas de ligne ou port programmable en acquisition ou génération (cadencement logiciel ou matériel). Pour ce type d'opération d'E/S numériques, les cartes PCI-DIO-32-HS, PCI-6533 et PCI-6534 ont été spécialement conçues. Elle permettent de faire de la génération sur 8, 16 ou 32 bits (1,2, ou 4 ports) jusqu'à 20 Mo/S (pour la 6534) et avec un cadencement matériel (horloge interne ou externe avec choix du type de front déclenchant le transfert). L'horloge peut provenir par exemple de votre carte compteur PCI-6602.
    Enfin, une bonne solution serait d'utiliser une carte Serie M qui intègre à la fois des compteurs (génération d'horloge) et un port 8 bits (génération numérique sur une ligne ou le port entier). Le cadencement numérique matériel est possible avec les cartes Série M. Ce type de carte serait donc un bon compromis pour ce que vous souhaitez faire.
    Cf "Correlated I/O" dans le tutorial ci-dessous:
    * M Series – The New Data Acquisition Standard – Frequently Asked Questions
    http://zone.ni.com/devzone/conceptd.nsf/webmain/9c71859eb70d6e2586256ed7007ccf7f?OpenDocument
    Bonne continuation
    Matthieu Gourssies
    National Instruments France

  • Créer une horloge numérique / NI9401

    Bonjour,
    afin de piloter un codeur, je dois lui envoyer 2 signaux : +clock et -clock par l'intermédiaire d'un module NI9401.
    Je dois créer deux signaux d'horloge numérique de fréquence 13Hz, rapport cyclique 50%.
    Comment s'y prendre ?
    Je pensais utiliser une structure séquencée déroulée..
    il y a t'il d'autres moyens ?
    On peut convertir une horloge analogique en numérique ?
    Voici ce que j'ai fais pour le moment mais qqch me dis que c'est faux..
    Pièces jointes :
    Clock.JPG ‏30 KB

    Tu as répondu en partie, j'ai fais ce que tu m'as dis il n'y a pas d'erreur.
    Maintenant, j'aimerais afficher un graphique de l'horloge, les bits en ordonnées (0 et 1) et le temps en abcisse.
    => Comment faire ?
    Et enfin, comment envoyer cette horloge dans ma carte ? En utilisant une variable locale ça devrait marcher non ?
    Voici mon vi en pièce jointe ;-)
    Pièces jointes :
    Clock numérique.JPG ‏65 KB

  • Quelle est le courant maximum que peux fournir une sortie numérique de la Carte NI USB-6009?

    Bonjours,
    je voulais savoir qu'elle peut être le courant maximum que peux fournir une sortie numérique sans l'endommager de la carte NI USB-6009. 
    Cordialement.
    theolamache

    Salut :
    https://www.google.fr/search?q=NI+USB-6009
    Premier PDF que tu trouves, page 22/30, avec ça tu devrais pouvoir
    en déduire la puissance maximale d'une sortie numérique.
    De toute façon c'est l'appareil qui est le facteur limitant, en général
    c'est pas lui qui va flancher, c'est simplement qu'il ne fournira pas
    assez de courant pour faire fonctionner ton appareil.
    Il faut penser à un étage d'alimentation piloté par commande
    numérique (genre triristor) si tu veux plus de puissance. La
    commande numérique est juste là pour pouvoir piloter ce
    genre de composant, pas plus.
    David Koch

  • HT5731 Possible de télécharger une copie numérique d'un DVD français en anglais sous-titré ?

    bonjour, j'ai acheté en france un DVD français accompagné d'un code de copie numérique pour télécharger le film également sur i-tunes : existe t-il un moyen de télécharger la copie numérique en anglais sous-titré anglais ? ou sous-titré français ? merci

    CLOSED

  • Problème de mise en ligne d'une publication numérique sur IPad

    Bonjour à tous,
    J'ai un problème avec ma publication numérique qui comporte 5 vidéos. Les vidéos sont au bon format car j'avais réalisé un test sur l'IPad et aucun problème. Tout était parfait. Après la publication des 5 vidéos depuis InDesign(via Folio Builder), impossible de télécharger la publication sur l'IPad (échec de téléchargement, veuillez réessayer plus tard). J'ai réessayé 5 fois en supprimant et en recréant un nouvel article mais toujours le même problème… Je ne sais plus quoi faire…
    Par contre, je n'ai aucun problème avec d'autres fichiers, car je sais les télécharger et l'avoir sur l'IPad.
    Mais lors du téléchargement entre InDesign et Folio Builder, j'ai remarqué que le téléchargement s'arrête vers 90% et il me met que tout est fini. Je crois qu'il doit y avoir un problème. Par contre mon réseau est stable et j'ai aucun problème là dessus…
    Mon fichier trop lourd? Non, car j'avais eu ce problème avant et InDesign me l'avait dit et j'ai diminué la taille de mes vidéos…
    Que faire? Idées?
    En vous remerciant,
    Romain

    Are you on Windows or Mac? Preview on Device is only supported on Mac. Here’s the instructions on how to use it: http://helpx.adobe.com/content/help/en/digital-publishing-suite/help/preview-folios-articl es.html#use_preview_on_device.
    How big are your video files?
    Neil
    (Sorry I keep writing back in English, but my written French… c’est terrible!)

Maybe you are looking for

  • Fusion Order Demo zip file which works with JDeveloper 11.1.1.3.0

    Hi, Please can anyone tell me where to find the Fusion Order Demo zip file that will work with JDeveloper 11.1.1.3.0 (latest version 13/5/10). I have downloade OracleXE 10g for Windows on my laptop and now want to create the Fusion Schemas (Tables/Sc

  • Ho w to check username availability in jsp

    Hi friends, I am doing a project in which there is a registration form where i have to check username availabitlity. When i click on the availability button the result should be displayed indicating whether it is available or not. I have created it u

  • Error in adding datafile in standby databse.

    Hi all. My Environment is as below: Oracle-8.1.7.4.0 OS-HP Unix-11 Primary database (only 1): Production Standby database: Different Machine but same location (HP box) Yesterday I have added 2 datafiles to the two different tablespace. I have checked

  • Why do audit search requests fail?

    The New-MailboxAuditLogSearch and New-AdminAuditLogSearch cmdlets at times it comes back with an email starting that the cmdlet failed or completed with errors. The content of two such emails is shown below. How can the cause of the problem be identi

  • Blog post on deploying mapviewer in websphere

    For those who may be interested, LJ's recent blog post describes how to deploy mapviewer (11.1.1.5) on websphere 7. http://oraclemaps.blogspot.com/2011/07/deploying-mapviewer-on-ibm-websphere-7.html