Cet article traitera des différentes fonctionnalités et concepts associés des générateurs de signaux arbitraires NI PXI. Pour en savoir plus sur les générateurs de signaux arbitraires NI PXI, veuillez consulter Qu’est-ce qu’un générateur de signaux PXI ?
L'architecture de mémoire de la plupart des générateurs de signaux impose des restrictions sur la taille et le quantum du signal. Chaque waveform téléchargée dans la mémoire du périphérique doit avoir au moins une taille de waveform minimale en termes de nombre d'échantillons. De plus, la taille en échantillons de la waveform téléchargée dans la mémoire du périphérique doit être un multiple entier d'un certain nombre ou quantum.
Par exemple, le générateur de signaux arbitraires NI 5412, qui a une taille de waveform minimale de 4 et un quantum de waveform de 4, est plus flexible que son prédécesseur qui avait une taille de waveform minimale de 256 et un quantum de 8 échantillons. Le NI 5412 peut émettre des signaux de taille 4, 8, 12, 16, etc., tandis que le premier ne pouvait émettre que des signaux de taille 256, 264, 272, 280, etc.
Plusieurs waveforms et leurs instructions de séquencement peuvent être chargées dans la mémoire embarquée d'un signal generator. Le concept d'utilisation d'une séquence pour générer des waveforms est appelé « séquencement de waveforms » ou « liaison et boucle » de waveforms. Les waveforms en boucle répètent une seule waveform plusieurs fois, tandis que les waveforms en liaison spécifient la liste de lecture du générateur de signaux arbitraires. Comme les générateurs de signaux arbitraires stockent les waveforms dans la mémoire embarquée, leur longueur est limitée. La boucle de waveform aide à générer des signaux avec des sous-composantes qui se répètent plusieurs fois. Boucler un segment de waveform améliore l'efficacité de la mémoire et augmente la durée potentielle de la waveform.
Les figures suivantes montrent les concepts de waveforms et de séquencement de segments.
Figure 1
Dans la figure 1, la waveform A représente un cycle unique d'un signal sinusoïdal téléchargé dans la mémoire embarquée. La waveform B représente un cycle unique d'une waveform de rampe qui est téléchargée dans la mémoire embarquée. N'oubliez pas que chacune de ces waveforms doit suivre la taille de waveform minimale et les règles quantiques.
Figure 2
Le segment 1, dans la figure 2 ci-dessus, montre un segment créé avec Waveform A, se répétant ou bouclant trois fois. Le segment 2 contient waveform B bouclant deux fois. Le segment 3 contient waveform A bouclant une seule fois.
Figure 3
Comme le montre la figure 3, ces waveforms sont liées dans une séquence.
Les sources de signaux fournissent plusieurs types de déclenchement matériel pour contrôler votre génération de signaux. Un déclenchement est un stimulus interne ou externe qui initialise une ou plusieurs fonctions du périphérique. Les stimuli de déclenchement incluent les fronts numériques TTL, les fonctions logicielles et les niveaux analogiques. Les déclenchements externes peuvent être réexportés et, avec les événements marqueurs (expliqués plus loin), peuvent vous permettre de synchroniser le fonctionnement du matériel avec des circuits externes ou d'autres périphériques NI. En général, les déclenchements de source de signal initient une génération de waveform ou font passer le générateur de signaux arbitraires d'un étage de waveform à un autre après le début de la sortie de waveform. Ce qui suit décrit quatre modes de déclenchement couramment utilisés : le mode de déclenchement de démarrage, le mode de déclenchement continu, le mode de déclenchement échelonné et le mode de déclenchement en rafale.
Figure 4
Comme le montre la figure 4, en mode déclenchement de démarrage, la séquence de waveform définie en mémoire ne génère qu’une seule fois en parcourant toute la séquence, puis la génération de waveform s’arrête. Lorsque le générateur reçoit un déclenchement de démarrage, la génération de waveform commence au premier segment et se poursuit jusqu'au dernier. Une fois toute la liste de séquences générée, le dernier échantillon du dernier segment est généré en continu.
Par contre, en mode de déclenchement continu, toute la séquence de segments de waveform est répétée en continu comme le montre la figure 5. Dans les modes déclenchement de démarrage et déclenchement continu, tous les déclenchements ultérieurs après le déclenchement initial sont ignorés.
Figure 5
En mode déclenchement échelonné, comme le montre la figure 6, les waveforms définies dans la liste de séquences génèrent un segment chaque fois qu'un déclenchement est reconnu. La waveform bouclera autant de fois qu'elle a été configurée pour ce segment particulier. Une fois la génération d'un segment arrêtée, le dernier échantillon de la waveform se répète continuellement jusqu'à ce que le déclenchement suivant soit reçu. Lorsque le déclenchement suivant est reçu, la waveform définie par le segment suivant génère pour une quantité configurée de boucles. Une fois la liste de séquences épuisée, la génération de waveform revient au premier segment et les déclenchements suivants recommenceront le processus. Un déclenchement n'est reconnu qu'après la fin de la génération du segment. Sinon, le déclenchement sera ignoré.
Figure 6
Le mode de déclenchement en rafale fonctionne de manière très similaire au mode de déclenchement échelonné, sauf que chaque segment de waveform défini dans la liste de séquences est généré en continu jusqu'à ce qu'un autre déclenchement ait lieu au lieu de répéter simplement le dernier échantillon du dernier segment.
Figure 7
Un marqueur est une impulsion numérique qui peut être générée à des points spécifiques d'une génération de waveform. Un marqueur peut être placé dans chaque segment de séquence et utilisé comme déclenchement pour contrôler le cadencement d'autres périphériques. Par exemple, les sorties marqueur sont couramment utilisées comme déclenchement numérique pour les numériseurs et oscilloscopes haute vitesse.
Les sorties des marqueurs sont spécifiées en donnant un nombre d'offset (en nombre d'échantillons) à partir du début du buffer de waveform pour chaque segment. Si la waveform effectue plusieurs boucles dans un segment, le marqueur est généré à chaque boucle de la waveform à la position d'échantillonnage configurée.
Pour générer un marqueur une seule fois dans un segment, où la waveform fait plusieurs boucles, divisez le segment en plusieurs segments. Par exemple, pour ne générer un marqueur qu'à la première itération d'une waveform sinusoïdale qui effectue 100 boucles, créez un segment qui génère la waveform sinusoïdale avec le marqueur à une position d'échantillonnage spécifique et qui effectue une seule boucle. Créez un deuxième segment qui génère la waveform sinusoïdale sans marqueur et effectue 99 boucles.
Comme le montre la figure 8, cette technique peut être utilisée dans différentes combinaisons de segments pour générer un marqueur toutes les cinq boucles de la waveform sinusoïdale en créant un segment contenant un marqueur et une boucle (segment 1) suivi d’un segment sans marqueurs qui effectue quatre boucles. Ces deux segments sont répétés tant que vous devez répéter le cycle.
Figure 8
La plus grande limite de la sortie marqueur standard est qu'un seul événement marqueur peut se produire par segment de waveform. L'événement marqueur de données étend la fonctionnalité marqueur pour permettre plusieurs événements marqueurs dans un segment. Reportez-vous au guide Find the Right Signal Generator pour déterminer si votre périphérique supporte les événements de marqueur de données.
Un marqueur de données est un événement qui vous permet d'exporter n'importe lequel des 16 bits de données waveform vers n'importe quelle destination valide du périphérique. N’oubliez pas qu’un générateur de signaux arbitraires convertit une série d’échantillons numériques en waveform analogique en utilisant un convertisseur numérique-analogique. Par exemple, le générateur de signaux arbitraires NI 5421 a 16 bits de données waveform par échantillon. Jusqu'à quatre des 16 bits de données waveform peuvent être exportés en même temps.
Le niveau numérique d'un événement marqueur de données change au moment où un bit de données spécifique bascule dans les données waveform. Si le bit de données waveform bascule plusieurs fois dans un segment, le niveau du marqueur de données change à chaque fois. Lorsque le niveau de bits de données est haut, le niveau du marqueur de données est haut. Vous pouvez aussi inverser cette relation.
La figure suivante montre l'événement marqueur de données exporté se décalant entre bas et haut lorsque le bit de données spécifié bascule. Sur le NI 5421, les événements de marqueur de données peuvent être exportés vers le bus RTSI, les lignes de déclenchement PXI, SYNC OUT/PFI 0 et PFI 1 ou PFI 4 et PFI 5.
Figure 9
Les événements de marqueur de données permettent une synchronisation plus étroite entre les générateurs de signaux et les autres périphériques. Par exemple, un générateur de signaux arbitraires et un numériseur sont souvent synchronisés en utilisant le déclenchement de démarrage exporté du générateur de signaux arbitraires. Cependant, il existe un court délai entre le moment où le déclenchement de démarrage est exporté et le moment où la génération de signaux analogiques a lieu au connecteur de sortie. Lorsque vous utilisez l'événement marqueur de données comme source de déclenchement, les temps de réponse au déclenchement sont plus rapides car l'événement marqueur est synchronisé directement avec la sortie analogique.
Les scripts sont une fonctionnalité puissante qui vous permet de créer rapidement et facilement des séquences de waveform et de déclenchement très complexes. Vous pouvez "lier et boucler" entre plusieurs waveforms dans une opération de génération en utilisant un script. Un script est un ensemble d'instructions qui décrit les waveforms à générer, l'ordre dans lequel elles doivent être générées, combien de fois elles sont générées et peut même contenir des instructions conditionnelles. Plusieurs scripts peuvent exister en même temps sur le périphérique : vous pouvez choisir quel script exécuter en faisant référence au nom du script. Cette section décrit la syntaxe pour créer un script, ainsi que l'utilisation des scripts dans vos applications.
Pour commencer, examinons un exemple de script simple illustré ci-dessous.
Lorsqu'il est exécuté, ce script génère consécutivement trois waveforms. Des scripts plus complexes peuvent facilement être créés en utilisant les six instructions principales : script/end script, generate, repeat/end repeat, if/else/end if, wait, and clear.
Script/End Script - Définit un ensemble d'instructions à contenir dans un seul script et à associer un nom à ce script.
Generate - Génère une waveform nommée. Vous pouvez générer toute la waveform ou un sous-ensemble de celle-ci. Vous pouvez aussi choisir de générer un marqueur à un emplacement spécifié dans la waveform nommée.
Repeat/End Repeat - Répète un ensemble d'instructions. Vous pouvez répéter un nombre fini de fois, répéter indéfiniment ou répéter jusqu'à ce qu'un déclenchement de script matériel soit reçu.
If/Else/End If - Détermine quelles sections d'un script exécuter, selon qu'un déclenchement de script particulier a été reçu ou non.
Wait - Met l'exécution en pause jusqu'à ce qu'un déclenchement de script soit reçu.
Clear - Ignore un déclenchement de script à armement précédent. Cette option est généralement utilisée avant les instructions d'attente ou de répétition.
Examinons quelques exemples qui utilisent ces fonctions de script pour créer des séquences de waveform complexes. L'Éditeur de script NI permet aux utilisateurs d'écrire, de maintenir et même de vérifier facilement leurs scripts.
Répétition finie (N fois) - Ce script génère waveform1, waveform2, puis waveform3. waveform2 est répété 3 fois.
Répétition conditionnelle - Ce script génère waveform1, waveform2, puis waveform3. waveform2 se répète jusqu'à ce que le déclenchement de script0 se produise.
Branchement conditionnel - If/Then Else - Ce script génère waveform1. Ensuite, si scripttrigger0 a été reçu, waveform2 sera générée. Sinon, si le déclenchement de script0 n'a pas été reçu, waveform3 sera générée.
Pas à pas avec plusieurs waveforms - Ce script génère waveform1 puis attend scripttrigger0. Une fois scripttrigger0 survenu, le script génère waveform2. Le script attend ensuite que scripttrigger0 se reproduise puis génère waveform3. Notez que l'instruction effacer est utilisée pour garantir que tous les déclenchements de script reçus avant l'instruction d'attente sont ignorés. Cette séquence entière se répète indéfiniment, jusqu'à ce que la génération soit abandonnée.
Génération de waveforms avec marqueurs - Ce script génère waveform1 et génère un événement marqueur à l'échantillon 20.
Les clients qui ont lu ce tutorial se sont également intéressés aux produits NI suivants :