Accumulateur (Non signé)
- Mise à jour2023-02-17
- Temps de lecture : 7 minute(s)
Accumulateur (Non signé)
Accumule ou décrémente x. Ce nœud supporte les opérations sur plusieurs canaux et la mise à l'échelle de la rétroaction.
Ce nœud ne supporte que les tableau de booléens et les valeurs scalaires de types de données entiers ou à virgule fixe.
Entrées/Sorties

x
Données à ajouter ou soustraire de la valeur de somme. Si x est un tableau de booléens de taille fixe, le premier élément du tableau représentant le bit de poids faible (LSB) et le dernier élément représentant le bit de poids fort (MSB).

soust?
Booléen qui spécifie s'il faut effectuer une soustraction ou une addition. Utilisez cette entrée pour changer d'opération par programmation.
| VRAI | Calcule somme - x. |
| FAUX | Calcule somme + x. |
Default value: FAUX

charger
Booléen qui spécifie s'il faut démarrer une nouvelle accumulation à partir de 0.
| VRAI | Ignore toute valeur antérieure de somme et commence une nouvelle accumulation en chargeant la valeur de x. |
| FAUX | Poursuit l'accumulation à partir des exécutions précédentes. |
Default value: FAUX
Redémarrage de l'accumulation à partir d'un canal spécifique
Dans les applications multicanaux, cette entrée affecte le canal dont les données parviennent à x pendant la période d'horloge lorsque charger change. Par exemple, si vous accumulez des données de deux canaux pendant huit périodes d'horloge, x reçoit les données du canal 1 pendant les première, troisième, cinquième et septième périodes d'horloge. Pour redémarrer l'accumulation pour le canal 1, définissez charger à Vrai pendant une de ces périodes d'horloge. L'accumulation du canal 2 se poursuit sans changement.

activer
Booléen qui spécifie s'il faut agir sur la valeur de x. Utilisez cette entrée pour n'agir que sur des valeurs valides de x. Par exemple, vous pouvez câbler la sortie sortie valide d'un nœud Math haut débit à cette entrée pour qu'Accumulateur n'agisse que si le nœud en amont produit un résultat valide.
| VRAI | Accumule la valeur actuelle de x. |
| FAUX | Ignore x et ne change pas la somme. |
Default value: VRAI
Ignorer les valeurs d'un canal spécifique
Dans les applications multicanaux, cette entrée affecte le canal dont les données parviennent à x pendant la période d'horloge lorsque activer change. Par exemple, si vous accumulez des données de deux canaux pendant huit périodes d'horloge, x reçoit les données du canal 1 pendant les première, troisième, cinquième et septième périodes d'horloge. Pour ignorer la deuxième valeur du canal 1, définissez activer à FAUX pendant la troisième période d'horloge puis redéfinissez-le à VRAI pendant la cinquième période d'horloge. L'accumulation du canal 2 se poursuit sans changement.

retenue en entrée/report inversé en entrée
Booléen qui spécifie si Accumulateur tient compte d'un bit de poids faible (LSB) supplémentaire lorsqu'il calcule la somme.
| VRAI | Si sous? est aussi VRAI : calcule somme - x. Si sous? est FAUX : calcule somme + x + 1(LSB). |
| FAUX | Si sous? est VRAI : calcule somme - x - 1(LSB). Si sous? est aussi FAUX : calcule somme + x. |

somme
Résultat calculé par ce nœud.
Ce résultat dépend non seulement de la valeur de x, mais aussi des valeurs des entrées booléennes du nœud, telles que charger et activer. Dans les applications multicanaux, somme effectue une accumulation séparée pour chaque canal.
Cette fonction applique le mode de dépassement Encapsuler à somme dans les situations suivantes :
- soust? est VRAI et retenue en sortie/report inversé en sortie renvoie FAUX
- soust? est FAUX et retenue en sortie/report inversé en sortie renvoie VRAI

retenue en sortie/report inversé en sortie
Un booléen qui indique si le type de données de la somme ne peut pas représenter le résultat d'une opération d'addition non signée ou d'une opération de soustraction non signée.
| Vrai | Le type de données de somme ne peut pas représenter le résultat d'une opération d'addition non signée. |
| Faux | Le type de données de somme ne peut pas représenter le résultat d'une opération de soustraction non signée. Dans cette situation, ce nœud enroule la valeur de la somme. |
Rétroaction inférieure
Spécifie le nombre de bits vers lequel ce nœud peut décaler vers la droite le modèle de bits de la sortie avant d'accumuler/décrémenter la sortie par x.
Voies
Spécifie le nombre de voies de données sur lesquelles ce nœud opère.
Ce nœud enregistre les données venant de voies séparées dans des registres internes séparés.. Si vous spécifiez plus d'une voie, vous devez entrelacer les valeurs que vous envoyez à x. La valeur par défaut est 1 voie.
Registre pour retenue en sortie/report inversé en sortie
Spécifie si ce nœud ajoute un registre interne avant la retenue en sortie/report inversé en sortie. Ce nœud renvoie le résultat retenue en sortie/report inversé en sortie une période d'horloge avant la valeur de somme par défaut. Pour renvoyer la valeur de retenue en sortie/report inversé en sortie pendant la même période d'horloge que celle de somme, cochez cette option.
Examples
Le tableau suivant montre un exemple de la façon dont ce nœud calcule somme + x dans une application qui accumule les données entrelacées de deux canaux.
| Période d'horloge | entrée x | Explication de x | résultat de la somme | Explication de la somme |
|---|---|---|---|---|
| 1 | 6 | Canal 1, échantillon 1 | - | Accumulateur ne renvoie pas de somme à la première période car il lui faut une période d'horloge pour s'exécuter. |
| 2 | 8 | Canal 2, échantillon 1 | 6 (l'accumulation du canal 1) | Bien que x reçoive des données du canal 2, somme renvoie le calcul des données du canal 1 reçues pendant la période d'horloge 1. Pendant la période 1, somme était 0 et x était 6. Ce nœud renvoie donc 6. |
| 3 | 44 | Canal 1, échantillon 2 | 8 (l'accumulation du canal 2) | Bien que x reçoive des données du canal 1, somme renvoie le calcul des données du canal 2 reçues pendant la période d'horloge 2. Pendant la période 2, somme était 0 pour le canal 2 et x était 8. Ce nœud renvoie donc 8. |
| 4 | 5 | Canal 2, échantillon 2 | 50 (l'accumulation du canal 1) | 6 (somme de la période d'horloge 2) + 44 (x de la période d'horloge 3) |
| 5 | 2 | Canal 1, échantillon 3 | 13 (l'accumulation du canal 2) | 8 (somme de la période d'horloge 3) + 5 (x de la période d'horloge 4) |
| 6 | 3 | Canal 2, échantillon 3 | 52 (l'accumulation du canal 1) | 50 (somme de la période d'horloge 4) + 2 (x de la période d'horloge 5) |
| 7 | - | Il n'y a plus de données du canal 1. | 16 (l'accumulation du canal 2) | 13 (somme de la période d'horloge 5) + 3 (x de la période d'horloge 6) |
Réinitialisation de l'accumulation
Pour démarrer une nouvelle accumulation, définissez l'entrée charger à VRAI. Puis réinitialisez charger à FAUX tant que vous voulez que la somme accumule des valeurs.
Opération multicanal
Deux facteurs définissent comment ce nœud agit sur les données de plusieurs canaux.
- Ce nœud met toujours une période à calculer une valeur de somme,
- Pour chaque canal, ce nœud maintient des valeurs internes séparées de somme.
Étant donné un ensemble de données entrelacées de deux canaux, ce comportement signifie que pendant une période où x est du canal 1, le nœud renvoie une valeur de somme pour le canal 2. Pour un exemple détaillé de ce comportement, reportez-vous à l'onglet Exemples de ce nœud.
Emprunter les valeurs dans les nœuds accumulateur en aval
Si vous avez des instances en cascade de ce nœud, spécifiez si le nœud en aval transmet ou emprunte une valeur. Pour spécifier qu'un nœud en aval utilise la valeur, câbler la sortie retenue en sortie/report inversé en sortie à l'entrée retenue en entrée/report inversé en entrée du nœud Accumulateur en aval.
Pour renvoyer la valeur de retenue en sortie/report inversé en sortie pendant la même période d'horloge que la valeur de la somme, sélectionnez l'option Registre pour retenue en sortie/report inversé en sortie. Cette fonctionnalité est utilisée si vous avez les nœuds Accumulateur en cascade et que vous ne voulez pas de délai entre la sortie retenue en sortie/report inversé en sortie d'un nœud et l'entrée retenue en entrée/report inversé en entrée du nœud en aval. Par défaut, cette option n'est pas sélectionnée, ce qui signifie que ce nœud renvoie le résultat de retenue en sortie/report inversé en sortie une période d'horloge avant la valeur de somme.
Effet sur les performances des simulations
Ce nœud peut ralentir considérablement l'exécution des simulations si vous l'utilisez avec le téléchargement, l'arrêt ou l'exécution du VI FPGA.