Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

dimensionner FIFO FPGA et RT

Résolu !
Accéder à la solution

Bonjour,

 

Je dois acquérir des signaux analogiques de type offset (0..10V)  avec un crio 9074, j'utilise le module 9205. Malheureusement, j'ai un problème pour dimensionner mes fifos. Je dois acquérir simultanément 8 voies différentes à 5kHz pour ensuite les enregistrer dans un fichier tdms.dans mon code RT, je crée une fifo Rt. Ma FIFO FPGA va s'écrire dans celle du RT. Je convertis mes datas en waveform avant de les enregistrer dans mon .tdms. Mon code fonctionne pour 1 voie soit 500 éléments.

 

Pourriez vous m'indiquer la manière de calculer le nombre d'élements et les 2 constantes à définir lors de la création de la fifo RT ?

 

Merci d'avance

 

 

Rémy Arnaud

0 Compliments
Message 1 sur 10
5 219 Visites

Bonjour,

 

Merci d'avoir posté sur le forum National Instruments.

 

Pouvez vous préciser les contantes qui posent problèmes?

 

Je vous donne néanmoins quelques informations sur deux constantes importantes de la fonction créer une fifo RT.

La constante "Elements in Array" correspond au nombre d'éléments dans le tableau pour chaque élément de la FIFO RT.

En ce qui concerne la constante "Size", elle correspond au nom d'élément de la FIFO.

 

Pour vous répondre précisément, il me faut savoir si vous utilisez une fifo par voie ou pour les 8.

Si jamais vous pouvez envoyer votre programme, ce serait encore mieux!

 

Cordialement,

Romain P.
National Instruments France

0 Compliments
Message 2 sur 10
5 203 Visites

Merci de m'avoir répondu,

 

Dans mon code FPGA, j'écris mes datas provenant des  8 Nodes FPGA de mon 9205 (que j'inclus dans un tableau) dans une seule FIFO FPGA.

 

Dans mon code RT, je crée d'abord ma fifo RT , et je viens écrire dans celle-ci les données provenant de ma fifo 

FPGA. mais j'ai 2 erreurs , lorsque les constantes de ma fifo RT (size et nombre d'élements) sont identiques, j'ai une erreur (-2) et si je change l'une d'elles l'erreur disparaît, mais  j'ai une erreur de sortie sur la lecture de ma fifo FPGA. (-50400).

 

J'ai essayé mon programme pour une seule voie, mes constantes étant pour la fifo RT 500 et 500 et pareil pour le nb d'élements pour la lecture de ma fifo FPGA est de 500,le timeout de 0. et il fonctionne...

 

0 Compliments
Message 3 sur 10
5 198 Visites

L'erreur 50400 signifie que le buffer est débordé, ainsi je vous conseille d'augmenter le nombre d'élements dans le tableau (Elements in Array). La constante du nombre d'éléments (Size) est relativement importante (500), je vous conseille de la baisser.

 

Je me permet aussi d'ajouter un complément d'information utile : la fonction création FIFO RT ne supporte pas les tableau multi-dimensionnels.

 

Pouvez-vous joindre votre code? J'attends vos résultats.

 

Cordialement,

 

 

 

Romain P.
National Instruments France

Message 4 sur 10
5 189 Visites

Voila mon code, vous verrez je dois avoir aussi un problème de gestion de démarrage et de bouclage , pcq je lis une voie reliée (AI0) à un bouton qui, lance et arrête l'acquisition, pour la création d'un nouveau tdms à chaque switch.

 

Merci de votre aide.

0 Compliments
Message 5 sur 10
5 177 Visites

Sachant que le type de données de la fifo est défini, elle ne traitera qu'un élément à la fois, soit le type en question. Ainsi, je vous propose d'essayer de placer 1 en constante "Elements in Array", et 70 voire 100 dans la constante "Size" pour bufferiser les informations.

 

Je reste à votre disposition et attends vos résultats.

 

Cordialement,

Romain P.
National Instruments France

Message 6 sur 10
5 169 Visites
0 Compliments
Message 7 sur 10
5 144 Visites

Malheureusement, cela n'a rien changé, néanmoins j'ai constaté qu'en sortie de read fifo fpga quelques soit le nombre d'éléments que je mette (1-1000) j'ai toujours ma data égale à 0. Je pense que l'erreur vient de ma boucle for de mon fpga et aussi de la configuration de la fifo fpga DMA. est ce que vous auriez un code ou une solution pour ceci? Merci

0 Compliments
Message 8 sur 10
5 143 Visites
Solution
Accepté par Ikar

Bonjour,

 

Dans votre code FPGA Target, vous utilisez une boucle de temps à 20µs, ce qui correspond à 50KHz par voie. Au total pour les 8 voies, vous récupérez 400Kech/s. Or, le module 9205 n'en gère que 250.

 

Je me permets d'attirer votre attention sur le trigger analogique, qui est à l'extérieur de la boucle principale, et qui n'est donc pas synchrone avec celle ci.

 

Cordialement,

Romain P.
National Instruments France

Message 9 sur 10
5 115 Visites

Bonsoir, après nombre et nombre de retouches sur mon programme, j'ai décidé de repartir avec un exemple  de code sur ni.com . Je l'ai ensuite "mixé" avec ce que je devais acquérir( 7 voies analogiques) et comment je devais lancer mon acquisition. Effectivement en changeant uen à une toutes les variables ( timeout, période d'acquisition, nombre d'éléments) j'ai trouvé un bon compromis et donc mon code fonctionne Smiley heureux.

 

Je vous remercie encore pour votre aide par le fait de m'avoir éclairé sur les points clé de ce genre de code.

 

 

Rémy Arnaud

0 Compliments
Message 10 sur 10
5 096 Visites