Une voie, plusieurs échantillons

Calcule la transformée de Fourier rapide (FFT) du flux de signal en entrée avec plusieurs échantillons par cycle.

Ce nœud vous permet de traiter les E/S FPGA avec plusieurs échantillons par cycle d'horloge de données. Ce nœud atteint une vitesse de transfert des données plus élevée mais consomme considérablement plus de ressources FPGA que le nœud FFT (Une voie, un échantillon).

1378

Entrées/Sorties

datatype_icon

réinitialisation

Une valeur booléenne spécifiant s'il faut réinitialiser l'état interne du nœud.

Vrai Réinitialise l'état interne du nœud.
Faux Ne réinitialise pas l'état interne du nœud.

Default value: Faux

Comportement avec les entrées et les sorties de handshake

Les entrées et les sorties de handshake se comportent de la façon suivante pendant les cycles où réinitialisation est Vrai :

  • entrée valide est ignorée.
  • prêt pour la sortie est ignoré.
  • sortie valide est Faux.
  • prêt pour l'entrée est Faux, ce qui gère les cas où réinitialisation est maintenu Vrai pendant plus d'un cycle. Ce nœud est prêt pour les entrées une fois la réinitialisation terminée et que réinitialisation renvoie Faux.
datatype_icon

données en entrée

Flux en entrée des signaux pour lequel vous voulez calculer la FFT.

Cette entrée accepte un tableau des types de données suivants :
  • entier signé 8 bits
  • entier non signé 8 bits
  • entier signé 16 bits
  • entier non signé 16 bits
  • entier signé 32 bits
  • nombre à virgule fixe
  • nombre complexe à virgule fixe

La taille du tableau doit être 2, 4, 8 ou 16. Pour chaque élément du tableau, la longueur de mot maximale est 32 bits.

datatype_icon

entrée valide

Valeur booléenne qui décrit si le prochain élément de données est arrivé pour être traité. Câblez la sortie sortie valide d'un nœud en amont à cette entrée pour transférer des données du nœud en amont à ce nœud-ci.

Vrai Le prochain élément de données est arrivé pour être traité.
Faux Le prochain élément de données n'est pas arrivé pour être traité.
datatype_icon

prêt pour la sortie

Valeur booléenne qui définit si les nœuds en aval sont prêts à ce que ce nœud-ci renvoie une nouvelle valeur. Utilisez un nœud de rétroaction pour câbler la sortie prêt pour l'entrée d'un nœud en aval à cette entrée du nœud actuel.

Vrai Les nœuds en aval sont prêts à ce que ce nœud-ci renvoie une nouvelle valeur.
Faux Les nœuds en aval ne sont pas prêts à ce que ce nœud-ci renvoie une nouvelle valeur.
Remarque Si cette entrée est Faux pendant un cycle, la sortie sortie valide renvoie Faux pendant ce cycle.

Default value: Vrai

datatype_icon

données en sortie

Résultats de la FFT du flux en entrée des signaux.

La longueur de mot maximale de chaque résultat de FFT est 32 bits.

Personnaliser la longueur de mot des résultats de FFT

En général, la longueur des mots de chaque résultat de FFT est log2 (N)+1 bits plus grande que les données en entrée correspondantes, N étant la taille de la FFT. Vous pouvez personnaliser la longueur de mot des résultats de FFT en cliquant sur le bouton Configurateur de complexes à virgule fixe à côté de la commande Précision dans la section Terminaux de l'onglet Élément.

Diminuer la longueur de mot de la sortie réduit l'utilisation des ressources FPGA mais réduit aussi la précision. NI vous conseille de simuler une configuration donnée pour vérifier que la précision obtenue répond aux besoins de votre application.

datatype_icon

indice des données

Indices des intervalles de FFT renvoyés par ce nœud.

datatype_icon

sortie valide

Valeur booléenne qui indique si ce nœud calcule un résultat qui peut être utilisé par les nœuds en aval.

Câblez cette sortie à l'entrée entrée valide d'un nœud en aval pour transférer les données du nœud au nœud en aval.

Vrai Les nœuds en aval peuvent utiliser le résultat que ce nœud calcule.
Faux Ce nœud renvoie une valeur non définie que les nœuds en aval ne peuvent pas utiliser.
Remarque Ce nœud peut renvoyer des valeurs non définies différentes selon qu'il s'exécute en mode simulation ou sur du matériel.
datatype_icon

prêt pour l'entrée

Valeur booléenne qui détermine si ce nœud est prêt à accepter de nouvelles données en entrée. Utilisez un nœud de rétroaction pour câbler cette sortie à l'entrée prêt pour la sortie d'un nœud en amont.

Vrai Ce nœud est prêt à accepter de nouvelles données en entrée.
Faux Ce nœud n'est pas prêt à accepter de nouvelles données en entrée.
Remarque Si cette sortie renvoie Faux pendant un cycle donné, ce nœud rejette les données qui lui sont envoyées par d'autres nœuds pendant le cycle suivant. Ce nœud rejette les données même si l'entrée entrée valide est Vrai pendant le cycle suivant.

Diagramme de cadencement

Le débit de transfert de ce nœud est d'un cycle par entrée, ce qui signifie que ce nœud accepte de nouvelles données à chaque cycle. Le diagramme suivant montre le cadencement utilisé par ce nœud.


1378

Éviter la perte de données pendant le calcul de la FFT

Ce nœud n'accepte pas et ne renvoie pas de valeurs lors du calcul de la FFT. Pendant ce temps, si le système ou un autre nœud lui envoie des données, il les rejette. Cela peut se produire si ce nœud reçoit des données dans le cadre d'un modèle complexe ou non uniforme.

Pour éviter les pertes de données, créez une FIFO pour conserver les données jusqu'à ce que ce nœud accepte de nouveau des valeurs. Assurez-vous que la FIFO que vous créez est suffisamment grande pour contenir tous les points de données collectés pendant que le nœud calcule la FFT. Pour estimer grossièrement la taille de la FIFO que vous devez créer, divisez la latence de ce nœud par le débit moyen du système. La latence se trouve à la section Performances de l'onglet Elément du panneau de configuration.

Comprendre le modèle d'indices d'entrée/sortie

Dans la section Interface de l'onglet Élément du panneau de configuration, vous pouvez configurer ce nœud pour qu'il utilise le modèle d'indices Continu en entrée/Intervalle M en sortie ou Intervalle M en entrée/Continu en sortie.

Le tableau suivant compare et illustre les modèles d'indices en utilisant l'exemple d'un flux de signal en entrée avec 4 échantillons par entrée et une taille de FFT de 4096 (ce qui signifie que M est égal à 1024).

Modèle d'indices Description Exemple Commentaire
Continu en entrée/Intervalle M en sortie Les indices de la trame de la FFT sont continus pour les données en entrée et ont des intervalles de M pour les données en sortie, avec M = taille de la FFT/taille des données en entrée.
1378

Ce nœud utilise 0, 1, 2, 3 comme indices des échantillons en entrée dans le premier cycle d'entrée valide, 4, 5, 6, 7 dans le deuxième cycle, et ainsi de suite. Pour les échantillons en sortie, les indices sont 0, 1024, 2048, 3072 dans le premier cycle de sortie valide, 1, 1025, 2049, 3073 dans le deuxième cycle, et ainsi de suite.
Intervalle M en entrée/Continu en sortie Les indices de la trame de la FFT ont des intervalles de M pour les données en entrée et sont continus pour les données en sortie, avec M = taille de la FFT/taille des données en entrée.
1378

Les indices de l'entrée et de la sortie sont inversés par rapport au modèle d'indices Continu en entrée/Intervalle M en sortie.

Si la source de données est une E/S FPGA avec plusieurs échantillons par cycle, sélectionnez le modèle d'indices Continu en entrée/Intervalle M en sortie. Si la source de données est la sortie d'un autre nœud FFT (Une voie, plusieurs échantillons) (comme pour le calcul de l'inverse de résultats de FFT obtenus d'un autre nœud FFT (Une voie, plusieurs échantillons), le paramètre Modèle d'indices d'entrée de ce nœud doit correspondre au paramètre Modèle d'indices de sortie de l'autre nœud FFT (Une voie, plusieurs échantillons).

Optimisation de la précision, de l'utilisation des ressources ou du cadencement

Vous pouvez configurer ce nœud pour optimiser la précision, minimiser l'utilisation des ressources ou optimiser le cadencement dans la section Optimisation de l'onglet Élément du panneau de configuration.

Dans la section Objectif, vous pouvez configurer ce nœud pour optimiser la précision des données renvoyées ou minimiser l'utilisation des ressources lors de la détermination des longueurs de mots des données renvoyées. Le tableau suivant vous aide à choisir l'option appropriée pour votre cas.

Cas d'usage Option recommandée Comportement du nœud Résultat
Vous voulez optimiser la précision des derniers bits des données en sortie, même si cela augmente l'utilisation des ressources FPGA. Précision Ce nœud étend la longueur de mot des données en entrée à la longueur de mot en sortie en remplissant de zéros. Toutes les opérations de multiplication complexes internes utilisent cette longueur de mot. Comparés à l'option Utilisation des ressources, les multiplieurs complexes conservent plus de bits, et ces log2(N)+1 bits dans les données en sortie sont plus précis.
Dans l'un ou l'autre de ces cas :
  • Vous voulez réduire l'utilisation des ressources FPGA même si les données en sortie seront moins précises.
  • La taille de l'entrée données en entrée est 16, et taille de la FFT est égale ou supérieure à 16384.
Utilisation des ressources Ce nœud augmente la longueur de mot, étage par étage, de l'entrée à la sortie. Par conséquent, la largeur de bits des multiplieurs complexes augmente également étage par étage. Les largeurs de bits des multiplieurs complexes et des registres internes sont plus petites qu'avec l'option Précision, ce qui réduit l'utilisation des ressources FPGA et peut augmenter la fréquence d'horloge FPGA au moment de la compilation.

Si vous avez configuré l'objectif d'optimisation de ce nœud mais qu'il ne répond toujours pas à vos besoins de précision, de ressources ou de cadencement, vous pouvez ajuster les valeurs de Longueur de mot du twiddle factor et de Nombre d'étages de pipeline du papillon pour améliorer les performances du nœud.