Créer des personnalités d'E/S basées FPGA pour NI VeriStand

Aperçu

NI VeriStand est un environnement logiciel conçu pour configurer des applications de test temps réel, comme les systèmes de test HIL (hardware-in-the-loop). En ajoutant des interfaces d'E/S temps réel à NI VeriStand, vous pouvez rapidement configurer toute une variété d'interfaces de bus de communication, numériques et analogiques standards ; toutefois, NI VeriStand permet aussi de créer du matériel d'E/S défini par l'utilisateur en utilisant des interfaces d'E/S basées FPGA (field-programmable gate array). Ce document passe en revue les avantages dont vous pouvez profiter en utilisant les interfaces d'E/S basées FPGA et la façon dont vous pouvez les utiliser avec NI VeriStand.

Contenu

En quoi consistent les interfaces d'E/S basées FPGA ?

Les FPGA (Field-programmable gate arrays) sont des circuits de silicium reprogrammables qui offrent les avantages des mises en œuvre logiques matérielles, en termes de fiabilité et d'exécution, comme ceux qu'on trouve dans les ASIC (application specific integrated circuits), avec la souplesse ajoutée des mises en œuvre basées logiciel ou firmware. Grâce aux blocs logiques configurables et aux ressources de routage programmables, vous pouvez configurer des FPGA pour implémenter des fonctionnalités matérielles personnalisées sans jamais modifier physiquement le matériel. À la place, vous développez des tâches de calcul numérique dans le logiciel que vous compilez ensuite dans un fichier bitstream qui contient des informations concernant la façon dont les composants de routage et de logique du FPGA devraient être configurés et connectés.

 

Pourquoi utiliser des FPGA dans des applications de test temps réel ?

Avec les interfaces d'E/S basées FPGA définies par l'utilisateur, vous pouvez créer des matériels d'E/S personnalisés capables de mettre en œuvre une combinaison de tâches de traitement de signaux, de simulation, de déclenchement et de contrôle afin de produire une interface d'E/S qui répond exactement aux besoins de votre application. Par ailleurs, comme l'interface d'E/S est basée FPGA, la personnalité, ou le comportement de l'interface, peut être facilement reconfigurée pour s'adapter à de nouvelles exigences ou pour créer des systèmes de test capables de servir pour de multiples applications sans modification des configurations matérielles.

Les E/S personnalisables sont l'une des raisons les plus courantes d'utiliser des FPGA dans une application de test temps réel. Vous pouvez utiliser plus de 100 modules de conditionnement de signaux de la Série C afin de garantir des interfaces spécialisées pour votre application. En combinant cette variété d'options de conditionnement de signaux à la souplesse des matériels d'E/S basés FPGA, vous pouvez rapidement créer des interfaces d'E/S avec des capacités de déclenchement et de cadencement personnalisées qui satisferont avec exactitude les besoins de vos applications de test temps réel.

Vous pouvez aussi utiliser les FPGA pour les pré et post-traitement des données afin de réduire la charge du microprocesseur qui est en train d'exécuter l'application de test temps réel. Par exemple, un FPGA peut acquérir des données numériques depuis un encodeur et calculer la vitesse et l'accélération depuis ce signal avant de transmettre les informations à l'application de test temps réel.

Vous pouvez utiliser les FPGA dans des applications de test temps réel pour ajouter du contrôle en boucle fermée haute vitesse. Par exemple, vous pouvez implémenter un contrôleur d'axes sur le FPGA avec l'application de test temps réel fournissant les points de consigne au contrôleur. Cela permet au contrôle en boucle fermée de réagir plus rapidement, en offrant un contrôle plus précis du système. Un exemple de cette approche est le contrôle des moteurs DC sans balai.

En outre, vous pouvez utiliser des FPGA pour simuler toute une variété de capteurs dans la mise en œuvre de testeurs HIL. Les FPGA conviennent tout particulièrement à la simulation de capteurs, surtout parce qu'ils peuvent s'adapter à une multitude de types de capteurs différents aux exigences très précises en termes de cadencement. Vous pouvez mettre en œuvre la simulation de capteurs avec une résolution à la nanoseconde près pour simuler des signaux de réponse de capteurs de façon plus réaliste. Dans bon nombre de cas, les capteurs fonctionnent de façon indépendante avec des vitesses de réponse différentes. Le parallélisme physique des FPGA en fait des éléments idéaux pour concevoir le comportement réel de ces éléments. L'ensemble des compléments logiciels à NI VeriStand propose un outil complémentaire de simulation de capteurs FPGA à télécharger.  

Comment fonctionnent les personnalités FPGA personnalisées avec NI VeriStand ?

Dans une application classique, le développeur a la responsabilité de programmer la logique FPGA personnalisée, le mécanisme de communication entre la logique FPGA et l'application s'exécutant sur le processeur temps réel, et les pré et post-traitement des données dans l'application temps réel. NI VeriStand réduit la quantité de développement requis pour utiliser des FPGA dans des applications de test temps réel en offrant un cadre qui met en place les deux autres parties : le mécanisme de communication et le traitement de données. Pour utiliser les personnalités FPGA avec NI VeriStand, il vous suffit de développer la personnalité FPGA et ensuite de décrire l'interface entre votre personnalité FPGA et votre application de test temps réel NI VeriStand en utilisant un fichier XML, réduisant ainsi l'effort de développement.

En créant des personnalités FPGA NI VeriStand, vous commencez par un modèle de projet dans NI LabVIEW qui inclut le code nécessaire pour s'interfacer à votre application NI VeriStand. Vous utilisez LabVIEW pour définir votre fonctionnalité FPGA personnalisée au sein de ce cadre, compiler la personnalité FPGA et ensuite modifier le fichier XML en fonction de votre personnalité FPGA. Une fois que tout ceci est terminé, vous pouvez ajouter cette personnalité à une définition de système NI VeriStand simplement en sélectionnant le fichier XML. Le fichier XML indique à NI VeriStand comment s'interfacer à votre personnalité et fournir de façon automatique ses entrées, sorties et paramètres dans l'Explorateur de système NI VeriStand, vous permettant ainsi de fixer leurs valeurs et connexions sur d'autres tâches temps réel de la même façon que vous le feriez avec n'importe quelle autre interface matérielle. Par exemple, si vous avez défini une personnalité FPGA avec une sortie PWM, l'Explorateur de systèmes NI VeriStand vous permet de fixer les paramètres des voies comme la période et la valeur initiale, et de "mapper" l'entrée du rapport cyclique sur une autre voie de votre application de test temps réel, comme l'illustre la Figure n°1.

Figure n°1. Configurer les personnalités FPGA NI VeriStand depuis l'Explorateur de système

Lorsque vous déployez votre application temps réel NI VeriStand, ce dernier télécharge automatiquement votre personnalité FPGA compilée sur l'interface matérielle.

 

Architecture des personnalités FPGA NI VeriStand

Vous créez des personnalités FPGA NI VeriStand en utilisant le Module LabVIEW FPGA pour modifier le modèle de personnalité qui inclut le code nécessaire pour s'interfacer à votre application NI VeriStand. Les personnalités FPGA de NI VeriStand se composent d'un moteur de cadencement, d'une boucle de communication et de boucles de traitement parallèle.

Figure n°2. Modèle de personnalité FPGA NI VeriStand

 

Moteur de cadencement

Le moteur de cadencement est configuré depuis l'Explorateur de système NI VeriStand et synchronise le FPGA avec l'application temps réel NI VeriStand ainsi que d'autres matériels d'E/S dans le système. Lorsque votre application temps réel NI VeriStand est déployée, elle charge votre personnalité FPGA et le moteur de cadencement attend une condition de démarrage de la part de NI VeriStand.

Timing Engine.png

Figure n°3. Initialiser le moteur de cadencement

Avant que votre application temps réel n'active le déclenchement de Démarrage, NI VeriStand fixe les paramètres de la Vitesse de boucle (µs), Écrire vers le RTSI, et Utiliser le cadencement externe. Ces trois paramètres sont chargés de configurer le mode de synchronisation du moteur de cadencement (maître, esclave ou aucune synchronisation) et de régler la vitesse de communication entre votre personnalité et l'application temps réel NI VeriStand.

Le sous-VI NI VeriStand – Generate PXI FPGA Clock est chargé de générer l'horloge qui cadence la boucle de communication signalée ci-dessous et de gérer la synchronisation. En mode maître, le FPGA cadence la boucle de communication avec un timer de boucle s'exécutant sur le FPGA et exporte une horloge sur le bus RTSI (Real-Time System Integration) afin de synchroniser les autres matériels. En mode esclave, le FPGA scrute le bus RTSI et cadence la boucle de communication avec l'horloge capturée sur RTSI0. En mode aucune synchronisation, le FPGA cadence la boucle de communication avec son timer de boucle et n'exporte rien sur le bus RTSI.

En plus d'effectuer une synchronisation matérielle, le moteur de cadencement permet aussi la synchronisation avec l'application temps réel NI VeriStand. Une partie de la boucle de communication est présentée dans la Figure n°4 ci-dessous.

Communication Timing.png

Figure 4. Synchronisation NI VeriStand sur FPGA

Le sous-VI NI VeriStand – Wait on FPGA Clock sert de timer de boucle pour la boucle de communication et attend l'horloge du sous-VI NI VeriStand – Generate PXI FPGA Clock. En mode maître, NI VeriStand active aussi Generate IRQ avant d'activer la commande Start. Lorsque Generate IRQ est activé, le sous-VI NI VeriStand – Synchronize to Host active une interruption sur chaque itération de la boucle de communication. Si le FPGA est configuré comme maître, l'exécution de l'application temps réel NI VeriStand est cadencée par le FPGA via ce signal IRQ.

 

Boucle de communication

La boucle de communication est chargée d'envoyer et de recevoir les données vers et en provenance de l'application temps réel NI VeriStand. Étant donné que NI VeriStand met à jour les voies en mode monopoint cadencé de façon matérielle, le FPGA doit lancer sa boucle de communication à la vitesse spécifiée par la Boucle de contrôle primaire dans le moteur NI VeriStand. Pour en savoir plus sur le moteur NI VeriStand, reportez-vous à l'Aide NI VeriStand.

La boucle de communication est cadencée par le sous-VI NI VeriStand – Wait on FPGA Clock, servant de cadenceur de boucles qui attend une horloge générée par le sous-VI NI VeriStand – Generate PXI FPGA Clock présenté précédemment.

Communication Loop.png

Figure n°5. Boucle de communication de données

Comme présentées dans la Figure n°5, des données sous forme de paquets de 64 bits sont envoyées à l'application NI VeriStand temps réel via le buffer de mémoire FIFO (first-in-first-out) DMA et des données sous forme de paquets 64 bits sont reçues en provenance de l'application NI VeriStand temps réel via la FIFO DMA.

Le premier paquet envoyé à NI VeriStand contient des informations issues du sous-VI NI VeriStand – Synchronize to Host qui explique si la boucle FPGA s'exécute en retard. Les autres paquets envoyés à l'hôte contiennent des données de mesure ou de calcul effectués par le FPGA. Les paquets sont envoyés en écrivant au sous-VI NI VeriStand – Send Packet to Host dans une boucle For, qui est chargé d'écrire vers la FIFO DMA_READ. La FIFO DMA_READ est définie dans l'Explorateur de projets, et sa profondeur doit être spécifiée pour avoir au moins autant d'éléments que les paquets envoyés à chaque itération.

Les données sont envoyées au FPGA via la FIFO DMA_WRITE, qui est aussi définie dans l'Explorateur de projets. Sa profondeur doit aussi être spécifiée pour avoir au moins autant d'éléments que de paquets envoyés à chaque itération. La FIFO DMA_WRITE est lue sur le FPGA par le sous-VI NI VeriStand – Receive Packet from Host placé à l'intérieur d'une boucle For. La boucle For doit être configurée pour exécuter le même nombre d'itérations que de paquets qui ont besoin d'être lus à chaque itération de la boucle While. Les paquets sont ensuite divisés et envoyés aux parties concernées de votre personnalité FPGA. Dans la Figure n°5, les sous-VIs aux barres de titres jaunes signifient des ressources d'E/S. N'importe quelles E/S acquises et générées dans cette boucle sont synchronisées avec NI VeriStand et avec les autres matériels du système.

Boucles de traitement parallèle

Les boucles de traitement parallèle constituent la partie finale d'une personnalité FPGA personnalisée à l'intérieur du cadre NI VeriStand. Ces boucles sont qualifiées de parallèles car elles ne sont pas cadencées depuis la même horloge qui cadence la boucle de communication vers NI VeriStand et le reste du matériel du système. Ces boucles peuvent se contenter d'acquérir ou de générer des données sur des E/S qui présentent un cadencement personnalisé, ou elles peuvent être responsables de mesures ou d'une génération personnalisées comme les E/S PWM. Elles peuvent aussi servir à cotraiter des données envoyées de NI VeriStand vers le FPGA. Le modèle d'exemple inclut des entrées et sorties PWM comme le présente la Figure n°6.

Asynch Loop.png

Figure 6. Boucles PWM parallèles

Comme le montrent les Figures n°5 et n°6, les boucles de traitement parallèle envoient les données vers ou en provenance de la boucle de communication via des variables locales. La boucle de communication met uniquement à jour ces variables locales à la vitesse à laquelle elle s'exécute, et elle envoie uniquement la valeur actuelle d'une variable locale (sans buffering) vers l'hôte NI VeriStand. Les données d'une boucle parallèle sont décimées par la boucle de communication, mais le cadencement de la boucle parallèle n'est pas affecté par la boucle de communication.

 

Étapes suivantes

Les interfaces d'E/S basées FPGA offrent un grand nombre d'avantages pour les applications de test temps réel. Elles permettent de créer des matériels d'E/S personnalisés capables d'implémenter une combinaison de tâches de traitement de signaux, de simulation, de déclenchement et de contrôle qui peuvent être facilement configurées pour s'adapter à de nouvelles exigences ou pour créer des systèmes de test capables d'être utilisés pour de nombreuses applications sans changer les configurations des matériels. NI VeriStand réduit la quantité de développement nécessaire pour pouvoir utiliser les FPGA dans des applications de test temps réel en offrant un cadre qui implémente le mécanisme de communication et le traitement de données à votre place, vous permettant de vous focaliser sur le développement des fonctionnalités FPGA. Vous pouvez ensuite enficher de façon transparente la personnalité FPGA dans NI VeriStand de la même façon que vous le feriez avec d'autres interfaces d'E/S matérielles et utiliser l'environnement basé configuration pour terminer le reste de votre application de test temps réel.

Télécharger les outils d'interfaces d'E/S basés FPGA NI VeriStand

Visionner des vidéos de démo de NI VeriStand

Télécharger une copie d'évaluation de NI VeriStand