Techniques avancées pour l'acquisition de données intelligente
Introduction
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.
Table des matières
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
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

[+] 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

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

[+] 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

[+] 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
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
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
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

[+] Agrandir l'image
Figure n°11b. Générateur de fonctions avec
Si les deux lignes sont basses,

[+] Agrandir l'image
Figure n°11c. Générateur de fonctions avec

[+] Agrandir l'image
Figure n°11d. Générateur de fonctions avec
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é.
Voir aussi...
Génération de formes d'ondes arbitraires avec du matériel RIO et le module LabVIEW FPGA
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 à

[+] 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.

[+] 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.
Voir aussi...
Sortie PWM avec le module LabVIEW FPGA
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.

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
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.

[+] Agrandir l'image
Figure n°17. Diagramme d’un filtre numérique sur du matériel d’acquisition de données intelligente
Voir aussi...
Communication SPI en LabVIEW FPGA
Implémentation I2C en LabVIEW FPGA
Développement d'un module d'entrée SPDIF en LabVIEW FPGA
Interface RS-232 utilisant le module LabVIEW FPGA
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.

[+] Agrandir l'image
Figure n°18. Configuration de
Une fois

[+] 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

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

[+] 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.
Voir aussi...
Utiliser une FIFO DMA pour développer des applications d'acquisition de données haute vitesse dédiées aux matériels d'E/S reconfigurables
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
Liens relatifs :
Que puis-je faire avec LabVIEW FPGA ?
Tutorial interactif sur LabVIEW FPGA
FAQ sur l'acquisition de données intelligente de la série R
Présentation multimédia- Acquisition de données intelligente
FAQ sur le contrôle FPGA
Législation
Ce tutorial a été développé par National Instruments. Bien qu'un support technique puisse être fourni pour ce tutorial, il n'a pas été complètement testé ni vérifié, et NI ne garantit pas sa qualité, ni qu'il continuera à être supporté pour les nouvelles versions des produits et drivers qui y sont rattachés. CE TUTORIAL EST FOURNI "EN L'ÉTAT" SANS GARANTIE D'AUCUNE SORTE, ET EST SUJET À CERTAINES RESTRICTIONS COMME PLUS SPÉCIFIQUEMENT DÉTERMINÉES DANS LES CONDITIONS D'UTILISATION DE NI.COM (http://ni.com/legal/termsofuse/unitedstates/us/).
