Techniques avancées pour l'acquisition de données intelligente

Aperçu

Multifonction, l’acquisition de données intelligente se distingue par l'intégration de capacités de traitement embarquées et définies par l’utilisateur, pour offrir une souplesse maximale au niveau du cadencement et du déclenchement du système. Au lieu d’un ASIC, à l'électronique figée, l’acquisition de données intelligente fait appel à un circuit FPGA pour le contrôle des fonctionnalités matérielles. Ce contrôle du cadencement par FPGA permet de rendre toutes les E/S analogiques et numériques configurables en vue d’un fonctionnement spécifique à une application. Ce tutorial montre comment mettre en œuvre des tâches d’acquisition de données entièrement personnalisées à l'aide des cartes d’acquisition de données de la Série R et du module LabVIEW FPGA.

Contenu

Introduction

Le module LabVIEW FPGA offre aux développeurs de systèmes d'acquisition de données (DAQ) une totale souplesse d’utilisation lors de la programmation d’une application pour tout type d’opération d’entrées/sorties. Sans aucune connaissance préalable des outils de conception de matériels tels que le VHDL, il est possible d’embarquer du code LabVIEW sur un circuit FPGA et d'obtenir la fiabilité et la vitesse que seul permet le cadencement "matériel".

Dans un premier temps, considérons les composantes habituelles des matériels d’acquisition de données. Dans le cadre de l'acquisition de données multifonction, l'utilisateur dispose de convertisseurs analogiques/numériques (C A/N), de convertisseurs numériques/analogiques (C N/A) et de lignes d’entrées/sorties numériques. Toutes les E/S doivent être cadencées et contrôlées d’une manière ou d’une autre pour un bon fonctionnement. Les matériels d’acquisition de données multifonctions classiques utilisent un ASIC qui satisfait la majorité des besoins en termes de fonctionnalités. Une carte DAQ de la Série M, par exemple, intègre le circuit DAQ-STC2 afin de contrôler le cadencement et le déclenchement des différentes composantes matérielles. Les matériels d’acquisition de données intelligente, tels que les modules et les cartes DAQ de la Série R, se distinguent de tous les autres matériels d’acquisition de données du marché car, pour le contrôle des fonctionnalités matérielles, ils intègrent, un circuit FPGA à la place d’un ASIC à l'électronique figée. Ce circuit FPGA permet de rendre toutes les E/S analogiques et numériques configurables en vue d’un fonctionnement spécifique à une application. Le circuit FPGA reconfigurable est programmé à l’aide du module LabVIEW FPGA, qui reste basé sur le concept de flux de données de LabVIEW, mais avec un nouveau jeu de fonctions qui permet de contrôler les E/S matérielles au niveau le plus bas. Au lieu de prendre en charge les tâches et les fonctions courantes avec les fonctions de NI-DAQmx, les nœuds d’E/S de LabVIEW FPGA vont fonctionner au niveau le plus fondamental avec une souplesse totale sur toutes les voies. Dans les sections suivantes, nous allons aborder des exemples mettant en œuvre NI-DAQmx et étudier la manière de personnaliser différentes tâches à l'aide de l’acquisition de données intelligente.

Cadencement et déclenchement

L’acquisition de données intelligente est principalement utilisée pour personnaliser le cadencement et le déclenchement. L'exemple de diagramme ci-dessous illustre une tâche d’entrée analogique déclenchée avec NI-DAQmx.



[+] Agrandir l'image
Figure n°1. Entrée analogique déclenchée avec NI-DAQmx

Au lieu d’avoir recours à différentes fonctions pour la configuration de voies, comme l’illustre la Figure n°1, l’acquisition de données intelligente utilise des fonctions appelées nœuds d’E/S pour la lecture et l’écriture de toutes les voies analogiques et numériques. Observons exactement la même fonctionnalité avec les nœuds d’E/S de LabVIEW FPGA.



[+] Agrandir l'image
Figure n°2. Entrée analogique déclenchée avec l’acquisition de données intelligente et LabVIEW FPGA

Il n’y a visiblement aucune fonction de configuration pour les voies globales, les horloges d’échantillonnage, les déclenchements ou encore les tâches de démarrage, d'arrêt et de réinitialisation. Elles ont toutes été remplacées par une simple fonction de lecture des E/S analogiques, et la totalité du cadencement est contrôlée par des structures LabVIEW natives telles que des boucles While et des structures Condition. Étant donné que l’ensemble du diagramme s’exécute sur du matériel FPGA, le code LabVIEW s'exécute avec la fiabilité et la vitesse inhérentes au cadencement matériel. Étudions d’un peu plus près le fonctionnement de ce diagramme. Au lieu de spécifier une fréquence d’échantillonnage particulière, le nœud d’E/S analogiques utilise la boucle For pour acquérir chaque échantillon. Le C A/N correspondant numérise en fait le signal d’entrée lorsque le nœud d’E/S est appelé, et donc est cadencé par la boucle For. Si l’utilisateur souhaite échantillonner un signal à 100 kHz, le retard spécifié pour cette boucle devra être réglé sur 10 µs. La fonction du timer de boucle assure un retard spécifique, commençant avec la deuxième itération de la boucle ; nous avons donc utilisé une structure Séquence dans le but de garantir la durée spécifiée entre les échantillons. La structure Condition dans LabVIEW FPGA est très puissante, car elle représente pour l’essentiel un déclencheur matériel pour l’ensemble du code encapsulé. Avec toutes les fonctions et les structures s’exécutant au sein du matériel avec des portes de logiques, la structure Condition va permettre à l’échantillonnage de commencer au moment voulu avec une précision de l'ordre de 10 µs. Enfin, il est inutile de réinitialiser la fonction Task ID ou de libérer de la mémoire puisque que nous travaillons désormais au niveau matériel, avec très peu de couches d’abstraction.

Les véritables atouts des matériels d’acquisition de données intelligente à partir de FPGA sont leur capacité à personnaliser tous les cadencements et déclenchements ainsi que leur aptitude à mettre en œuvre du traitement de signaux et de la prise de décision dans le matériel. Voyons maintenant ce qu’il faut faire pour adapter notre déclencheur d’entrée analogique à une application personnalisée. Et si nous voulions déclencher l’acquisition lorsque l’une des deux voies d’entrée analogique dépasse un certain seuil ? C’est très simple à mettre en œuvre dans LabVIEW FPGA.



[+] Agrandir l'image
Figure n°3. Entrée analogique déclenchée personnalisée avec l’acquisition de données intelligente et LabVIEW FPGA

Nous avons ajouté un deuxième nœud d’E/S et une deuxième fonction de comparaison, ainsi qu'une fonction booléenne OU au diagramme. Les matériels d’acquisition de données intelligente ont des C A/N dédiés sur chaque voie d’entrée analogique ; c’est pourquoi les deux voies seront échantillonnées simultanément et, si l’une d’elles dépasse la limite établie, la structure Condition exécutera la condition vraie et débutera l’acquisition avec la même précision de l’ordre de 10 µs. N’oubliez pas qu’il est impossible de générer un déclenchement comme celui-ci sans l’acquisition de données intelligente, et que l’utilisation d’un autre matériel DAQ nécessiterait une prise de décision cadencée par logiciel avec un temps de latence beaucoup plus important. Si nous décidions ensuite de contrôler les huit voies, ou même d’ajouter des déclencheurs numériques, le code personnalisé ne serait pas plus complexe. L’ajout de balayages de prédéclenchement impliquerait l’échantillonnage continu de la voie d’entrée et l’acheminement des données dans un buffer FIFO. Une fois le déclenchement lu, ce buffer FIFO et les échantillons suivants seraient ensuite acheminés vers l'ordinateur hôte via une voie DMA.

Si nous décidions d’échantillonner une deuxième voie d’entrée analogique à l’aide du driver NI-DAQmx, le diagramme ne serait pas très différent de celui illustré dans la Figure n°1. Il y aurait toutefois encore des limitations car les deux voies seraient contraintes de référencer le même déclenchement et d’échantillonner à la même fréquence d’horloge. Étudions les différentes options permettant d'échantillonner plusieurs voies à l'aide de l'acquisition de données intelligente et de LabVIEW FPGA.



[+] Agrandir l'image
Figure n°4. Entrée analogique simultanée déclenchée avec l’acquisition de donnée intelligente


La Figure n°4 montre comment échantillonner simultanément deux voies d’entrées analogiques différentes, en s’appuyant sur un déclenchement analogique issu de la voie d’entrée analogique 0. Étant donné que tous les matériels d’acquisition de données intelligente disposent de C A/N indépendants, deux voies au sein d’un nœud d’E/S seront échantillonnées exactement au même moment. Les matériels DAQ multifonctions classiques vont, quant à eux, multiplexer toutes les voies via un seul C A/N et, de ce fait, toutes les voies doivent partager la même horloge d’échantillonnage et les mêmes lignes de déclenchement. La Figure n°5 montre que les matériels d’acquisition de données intelligente peuvent véritablement échantillonner des voies d’entrées analogiques différentes à des fréquences indépendantes. En plaçant les nœuds d’E/S analogiques dans des boucles distinctes, chaque voie peut échantillonner à des fréquences totalement différentes et ensuite transférer les données en continu via deux voies DMA de manière indépendante.



[+] Agrandir l'image
Figure n°5. Entrée analogique à fréquence multiple déclenchée avec l’acquisition de données intelligente


Enfin, si nous voulions que les deux voies aient des fréquences d’échantillonnage et des déclenchements de démarrage indépendants, nous pourrions placer chaque nœud d’E/S dans des structures de boucles parallèles comme le montre la Figure n°6. Cette méthode tire pleinement parti du parallélisme du FPGA, dans lequel chaque tâche va utiliser ses propres ressources dédiées et s’exécuter indépendamment de toutes les autres tâches d’acquisition.



[+] Agrandir l'image
Figure n°6. Entrée analogique à fréquence multiple déclenchée indépendamment avec l’acquisition de données intelligente

Synchronisation

Le driver DAQmx propose plusieurs options de synchronisation capables de corréler les entrées et les sorties dans le temps. Vous trouverez ci-dessous le diagramme d’une voie d’entrée analogique et d’une voie de sortie analogique synchronisées avec un déclenchement de démarrage numérique, effectué en spécifiant un déclenchement numérique pour l'entrée analogique et en utilisant le signal de déclenchement de démarrage de l'entrée analogique pour déclencher la génération de sortie analogique.



[+] Agrandir l'image
Figure n°7. Entrée et sortie analogiques synchronisées avec NI-DAQmx

Mettre en œuvre la même méthode de synchronisation avec du matériel d’acquisition de données intelligente est très simple sans recourir au task ID ni au routage de signaux embarqué. Voici à quoi cela ressemblerait dans LabVIEW FPGA.



[+] Agrandir l'image
Figure n°8. Entrée et sortie analogiques synchronisées avec l’acquisition de données intelligente


Une fois encore nous utilisons la structure Condition pour implémenter un déclenchement de matériel sur un circuit FPGA, et un front montant sur la voie numérique 0 déclenche le code dans la condition vraie. Les nœuds d’entrée et de sortie analogiques sont appelés simultanément à l’intérieur de la structure Séquence avec pratiquement pas de jitter, et si nous voulions qu'ils aient des fréquences indépendantes, nous pourrions facilement placer les nœuds d’E/S analogiques dans des boucles While distinctes. Il est à noter que la fonction Générateur de sinusoïde représentée dans le diagramme est un VI Express qui permet de configurer de manière interactive les valeurs sinusoïdales dans une table d’anamorphose (LUT).

Le diagramme de l’acquisition de données intelligente illustré par la Figure n°8 présentera les mêmes fonctionnalités que le VI DAQmx de la Figure n°7, mais seule la souplesse d’utilisation de l’acquisition de données intelligente nous permettrait de personnaliser cette tâche. Si nous décidions d’ajouter un déclenchement de pause, par exemple, il suffirait pour cela d'insérer une structure Condition au sein de la boucle While intérieure et d’utiliser un autre nœud d’E/S numériques afin de sélectionner une condition Vrai ou Faux. La capacité de programmer le matériel offre des possibilités illimitées pour le cadencement et la synchronisation d’E/S.

Un autre exemple de synchronisation multifonction consiste à générer des impulsions finies grâce aux compteurs embarqués et à utiliser la sortie des compteurs comme horloge d’échantillonnage des entrées analogiques. Il s’agit d’une méthode courante pour mettre en œuvre une acquisition d’échantillons finie redéclenchable. Le code DAQmx nécessaire à une acquisition de ce genre est représenté ci-dessous.



[+] Agrandir l'image
Figure n°9. Entrée analogique finie redéclenchable avec NI-DAQmx


Comparons maintenant ce dernier avec un diagramme LabVIEW FPGA présentant la même fonctionnalité.



[+] Agrandir l'image
Figure n°10. Entrée analogique finie redéclenchable avec l’acquisition de données intelligente et LabVIEW FPGA


Il apparaît clairement dans la Figure n°10 que les étapes de configuration du driver sont beaucoup mois nombreuses dans la mesure où le code LabVIEW s’exécute au niveau du matériel. Avec une simple ligne d’entrée numérique et une boucle For, nous avons créé une acquisition finie redéclenchable au niveau matériel. Le précédent diagramme de la Figure n°9 utilise deux compteurs embarqués pour créer le train d’impulsions fini redéclenchable, or les matériels DAQ multifonctions classiques sont équipés uniquement de deux compteurs. En revanche, les matériels d’acquisition de données intelligente peuvent configurer n’importe quelle ligne numérique pour en faire un compteur grâce à LabVIEW FPGA. Nous approfondirons les mises en œuvre des compteurs/timers avec l’acquisition de données intelligente dans un prochain paragraphe.

Nous pourrions pousser plus loin la souplesse cadencée par matériel de l’acquisition de données intelligente à l’aide d’une acquisition déclenchée par la fréquence. La prise de décision embarquée haute vitesse peut en effet être utilisée pour calculer la fréquence d'un signal d'entrée et ensuite sélectionner le code souhaité à l’intérieur d’une structure Condition, ce qui est impossible avec une carte DAQ multifonction classique. Pour la synchronisation de plusieurs matériels, l’acquisition de données intelligente peut également utiliser le bus RTSI dédié aux cartes PCI ou le bus de déclenchement PXI dédié aux modules PXI. Ces lignes de cadencement et de synchronisation externes sont également accessibles via les nœuds d’E/S sur le diagramme.

Génération de formes d’ondes analogiques

De nombreux matériels DAQ multifonctions sont équipés de voies de sorties analogiques qui mettent en œuvre un buffer FIFO pour une génération continue de formes d’ondes analogiques. La forme d’onde générée peut utiliser la FIFO comme buffer circulaire et regénérer de manière continue une série de valeurs analogiques sans mise à jour supplémentaire de l’hôte. Cela repose moins sur la disponibilité du bus de communication, puisque les données ne sont pas constamment transférées vers le matériel. Si la forme d’onde a néanmoins besoin d’être modifiée, la tâche de sortie doit être relancée pour écrire de nouvelles données sur la FIFO. L'autre option consiste à transférer les données en continu vers la FIFO matérielle, ce qui est susceptible d’entraîner des temps de latence dans votre tâche de sortie. L’acquisition de données intelligente vous permet d'enregistrer les sorties de formes d’ondes dans le matériel et même d’utiliser le déclenchement matériel pour modifier les formes d’ondes, créant ainsi un générateur de formes d’ondes arbitraires.

Vous trouverez ci-dessous un exemple de générateur de fonctions utilisant des lignes d’entrées numériques pour déclencher des changements dans la forme d’onde de sortie. En s’appuyant sur la combinaison des lignes d’E/S numériques 0 et 1, on obtient quatre états différents, ou conditions, pour la sortie analogique.



[+] Agrandir l'image
Figure n°11a. Générateur de fonctions avec la Condition 0 de l’acquisition de données intelligente : sortie à zéro



[+] Agrandir l'image
Figure n°11b. Générateur de fonctions avec la Condition 1 de l’acquisition de données intelligente : onde sinusoïdale



Si les deux lignes sont basses, la Condition 0 est exécutée et, comme le montre la Figure n°11a, la sortie va avoir la valeur constante de 0 V. Si la ligne d’E/S numériques 0 est haute et que la ligne d’E/S numériques 1 est basse, la Condition 1 va s'exécuter et générer une onde sinusoïdale sur la sortie analogique 0. Cette condition de génération de sinusoïde (Figure n°11b) utilise le VI Express Générateur de sinusoïde qui permet de configurer de manière interactive une forme d’onde sinusoïdale avec les valeurs d'entiers requises dans LabVIEW FPGA.



[+] Agrandir l'image
Figure n°11c. Générateur de fonctions avec la Condition 2 de l’acquisition de données intelligente : signal carré


La Condition 2 (Figure n°11c) fait apparaître une valeur booléenne à chaque itération de la boucle While. Si la valeur est basse, l’entier 15000 est écrit au niveau de la sortie analogique 0, ce qui correspond à la valeur 15000 dans le registre de sortie d’un C N/A 16 bits. Un entier signé 16 bits peut avoir des valeurs comprises entre -32768 et 32767. Avec une gamme de sortie allant de -10 à 10 V, écrire -32768 pour la sortie analogique 0 va générer -10 V, et écrire 32767 va générer 10 V. Dans cet exemple nous entrons 15000, ce qui va donner à peine moins de 5 V. (Voici le calcul : 15000/32767 * 10 V = 4,5778 V) Dans les faits, la Condition 2 va générer un signal carré alternant entre 0 et 4,578 V.



[+] Agrandir l'image
Figure n°11d. Générateur de fonctions avec la Condition 3 de l’acquisition de données intelligente : signal en dent de scie



La dernière condition (Figure n°11d) va s’exécuter si les E/S numériques 0 et 1 sont toutes les deux élevées ; pour cela, une table d’anamorphose est nécessaire à la génération continue d’un signal en dent de scie. Le VI table d’anamorphose est un autre VI Express qui permet de stocker des valeurs de formes d'ondes arbitraires et de les répertorier par programmation. Dans cet exemple, nous avons configuré un signal en dent de scie de façon à ce qu’il soit généré sur la voie de sortie analogique 0.

En stockant toutes les valeurs sur le FPGA, l'utilisateur s'affranchit de la disponibilité du bus, tout en garantissant la fiabilité et la vitesse cadencée par matériel sur les mises à jour de formes d’ondes. Toute la souplesse du déclenchement et de la synchronisation décrite en relation avec l’entrée analogique dans les paragraphes précédents s’applique également à la sortie analogique. De plus, l’acquisition de données intelligente permet de mettre à jour plusieurs voies de sorties analogiques à des vitesses différentes, indépendamment les unes des autres. Il est donc possible de modifier la fréquence d'une forme d'onde périodique unique sans affecter les sorties des autres voies. Il faut garder à l’esprit que la plupart des matériels d’acquisition de données n’offrent pas cette fonctionnalité.

Opérations de comptage/timing

Comme nous l’avons mentionné plus haut, les matériels DAQ multifonctions classiques disposent uniquement de deux compteurs embarqués, tandis que l’acquisition de données intelligente peut mettre en œuvre des fonctionnalités de compteur sur toutes les lignes numériques disponibles. Les nœuds d'E/S numériques peuvent tirer parti de la structure spécialisée appelée boucle cadencée à une seule période dans LabVIEW FPGA, qui permet d’exécuter du code à une fréquence spécifiée comprise entre 2,5 et 200 MHz. Grâce à une horloge 40 MHz, par exemple, il est possible d’utiliser une boucle cadencée à une seule période pour créer un compteur 40 MHz sur n’importe quelle ligne numérique. Le diagramme pourrait, par exemple, ressembler à la Figure n°12 (ci-dessous).



[+] Agrandir l'image
Figure n°12. Compteur d’événements simples avec l’acquisition de données intelligente

Étant donné que la valeur de décompte est envoyée à un indicateur avec un type de données U32 (entiers 32 bits), ce code produirait un compteur 40 MHz, 32 bits, sur le circuit FPGA. L’utilisateur pourrait le copier-coller plusieurs fois pour obtenir plusieurs compteurs qui fonctionneraient tous sur des lignes numériques différentes, parallèlement les uns aux autres. La réelle valeur ajoutée de l'acquisition de données intelligente, cependant, est la personnalisation des opérations de comptage. L’utilisateur peut choisir d’incrémenter le compteur tous les trois fronts montants, ou même de déclencher une acquisition analogique basée sur la valeur de registre de décompte. De nombreuses opérations de compteur complexes, telles que la génération de trains d’impulsions finis ou le décompte d’événements cascadés, nécessitent l’usage de deux compteurs, à savoir tous les compteurs embarqués des matériels multifonctions classiques. Avec jusqu’à 160 lignes numériques, le nombre maximum de compteurs sur un matériel d’acquisition de données intelligente est rarement limité par la disponibilité des E/S et est habituellement déterminé par la taille du circuit FPGA. Étant donné que le code LabVIEW s’exécute dans le silicium, il est inutile “d’armer” ou de “réarmer” les compteurs d’usage général pour contrôler pleinement l’opération de comptage.

La Figure n°13 est un exemple de l’usage des compteurs pour générer un train d’impulsions continues avec un déclenchement de pause dans NI-DAQmx.



[+] Agrandir l'image
Figure n°13. Génération de trains d’impulsions continues et déclenchement de pause avec NI-DAQmx

Dans LabVIEW FPGA, le déclenchement de pause n’a pas besoin d’être configuré car une simple structure Condition va implémenter la même fonctionnalité dans le silicium. Voici à quoi ressemble cette fonctionnalité lorsqu’elle est mise en œuvre avec l’acquisition de données intelligente (Figure n°14).



[+] Agrandir l'image
Figure n°14. Génération de trains d’impulsions continues et déclenchement de pause avec l’acquisition de données intelligente


Dans ce cas, la ligne d’E/S numériques 0 est le déclenchement de pause, et l’impulsion va être générée sur la ligne d’E/S numériques 1. La boucle cadencée à une seule période est utilisée pour obtenir une résolution de 25 ns à chaque impulsion, car ce sera la valeur d’un temps d’exécution unique utilisant la source de cadencement à 40 MHz.

Applications d'E/S numériques

Plusieurs applications numériques sont possibles avec les matériels d’acquisition de données intelligente qui propose jusqu’à 160 lignes numériques cadencées par matériel. Nous avons déjà étudié l’utilisation des E/S numériques pour le déclenchement, la synchronisation et les mises en œuvre de compteurs/timers, mais l’acquisition de données intelligente peut également être utilisée pour tester les taux d’erreurs sur les bits, pour la reconnaissance de formes numériques, la modulation de largeur d’impulsions, les encodeurs en quadrature et les protocoles de communication numérique. Les interfaces série, qu’elles soient standards ou personnalisées, peuvent être programmées directement à partir des diagrammes de cadencement numérique. SPI, par exemple, est un protocole série très courant pour la communication avec les composantes matérielles telles que les microcontrôleurs et les C A/N. La Figure n°15 représente le diagramme de cadencement correspondant aux trois lignes numériques nécessaires à la communication SPI 16 bits.


Figure n°15. Diagramme de cadencement des entrées de communication SPI

Comme le montre le diagramme de cadencement, chacun des 16 bits de données est acheminé de façon sérielle sur chaque période de l’horloge lorsque la ligne sélectionnée du circuit est basse. Étudions à présent à quoi ressemblerait la programmation dans LabVIEW FPGA utilisant trois lignes numériques sur le matériel d'acquisition de données intelligente.



[+] Agrandir l'image
Figure n°16. Diagramme de communication SPI 16 bits

 

La boucle While extérieure de la Figure n°16 garantit que l’ensemble du code sera exécuté en continu et la commande booléenne Écrire commence le transfert de données à l’aide de la structure Condition. Le premier cadre de la structure Séquence règle la ligne sélectionnée du circuit de façon à ce qu’elle soit basse, puis le cadre du milieu écrit un bit de données et active la ligne de l’horloge à 16 reprises. Enfin, le troisième cadre de séquence redéfinit la ligne sélectionnée du circuit à vrai et réinitialise la ligne de données à son état par défaut, à savoir faux. Cet exemple simple illustre seulement l’une des nombreuses possibilités de la communication numérique avec l’acquisition de données intelligente. La mise en œuvre de handshaking numérique nécessiterait deux voies pour les lignes ACK (prêt) et REQ (pause), une pour le signal d’horloge et les lignes de données fonctionnant en parallèle.

Les lignes numériques risquent fréquemment de rebondir, en particulier lorsque l'on utilise des contacts électromécaniques, mais il existe différentes façons d’ajouter un filtre anti-rebond sur les lignes d’entrées numériques avec LabVIEW FPGA. Un filtre anti-rebond numérique supprime les faux changements d’état en assurant que les transitions conservent leur valeur sur une durée minimale ; cela permet d’éviter les lectures erronées dues aux rebonds. La Figure n°17 est un exemple de ce qu’il est possible de faire avec l’acquisition de données intelligente.



[+] Agrandir l'image
Figure n°17. Diagramme d’un filtre numérique sur du matériel d’acquisition de données intelligente

Méthodes de transfert de données

La manière dont est réalisé le transfert de données constitue une différence majeure entre l'acquisition de données multifonction traditionnelle utilisant le driver NI-DAQmx et l’acquisition de données intelligente. Le driver NI-DAQmx va prendre en charge tous les transferts en provenance du matériel vers l’ordinateur hôte, tandis que cette action doit être entièrement programmée en LabVIEW pour tous les matériels basés FPGA. Il existe plusieurs manières de mettre en mémoire tampon les données embarquées sur le matériel et d’utiliser les différentes méthodes de transfert de données telles que les voies DMA et les demandes d’interruption.

Un buffer FIFO dans LabVIEW FPGA est configuré dans l’Explorateur de projets LabVIEW et peut être mis en œuvre grâce à la mémoire embarquée ou à la logique matérielle. La Figure n°18 montre comment configurer un buffer FIFO de nombres entiers dans une mémoire embarquée à partir de l’Explorateur de projets.



[+] Agrandir l'image
Figure n°18. Configuration de la FIFO dans LabVIEW FPGA



Une fois la FIFO créée, elle peut être utilisée pour transférer les données entre plusieurs boucles sur un diagramme LabVIEW FPGA. L’exemple de la Figure n°19 représente l’écriture des données dans la FIFO au sein de la boucle à gauche, puis la lecture des données depuis la FIFO au sein de la boucle à droite.



[+] Agrandir l'image
Figure n°19. Diagramme LabVIEW FPGA avec FIFO et plusieurs boucles

 

Les voies DMA (Direct Memory Access), qui sont également mises en œuvre avec les FIFO de LabVIEW FPGA, sont configurées de la même manière dans l’Explorateur de projets.



[+] Agrandir l'image
Figure n°20. Configuration de la FIFO DMA dans LabVIEW FPGA

Figure n°21. Diagramme LabVIEW FPGA avec FIFO DMA et compression des données

 

Tous les transferts de FIFO DMA sont de 32 bits ; par conséquent, lors de l’acheminement des données en provenance d'une voie d'entrée analogique 16 bits, il est plus efficace de combiner des échantillons et d'acheminer les données sur deux voies, ou deux échantillons à la fois. C’est ce qu’on appelle la compression des données illustrée par la Figure n°21. Lorsque les données sont acheminées directement vers la mémoire du PC hôte, elles peuvent être lues grâce aux fonctions de l’interface hôte de LabVIEW sous Windows (Figure n°22).



[+] Agrandir l'image
Figure n°22. Code de l’interface hôte avec la fonction DMA FIFO Read et compression des données


Comme le montre la Figure  n°22, le diagramme de l’interface hôte référence le VI cible FPGA, puis lit la FIFO DMA en continu dans une boucle While. Les données 32 bits sont divisées entre les deux voies de 16 bits qui ont été échantillonnées et tracées sur un graphe déroulant. Le VI de l’interface hôte peut également lire et écrire sur n’importe quel indicateur ou commande de la face-avant du VI FPGA et, dans ce cas, la commande du bouton d’arrêt est écrite également.

Conclusion

Si des ASIC "figés" tels que le DAQ-STC2 répondent à la majorité des besoins en acquisition de données, une souplesse et une personnalisation optimales s’obtiennent uniquement grâce au cadencement et au contrôle des E/S sur FPGA reconfigurables de l’acquisition de données intelligente. Grâce à LabVIEW FPGA, les tâches de déclenchement et de synchronisation sont aussi simples à réaliser selon vos besoins que le fait de dessiner graphiquement le diagramme ; par ailleurs, grâce aux lignes d’E/S analogiques et numériques indépendantes, l’acquisition de données intelligente peut tirer parti du véritable parallélisme offert par les FPGA. Qu’il s’agisse d’échantillonnage à fréquences multiples, d’opération de comptage personnalisée ou de prise de décision embarquée à 40 MHz, les matériels d’acquisition de données intelligente de la Série R ont révolutionné les possibilités de l’acquisition de données multifonction.