J'ai une question liée à la moyenne continue de la valeur ADCs. L'approche que j'ai utilisée est la moyenne continue d'exemples 256 échantillons. La valeur adcaout (indiquée dans le code ci-dessous) que je reçois sur mon GUI augmente lentement. Par exemple, si je m'attends à une valeur de 100mA, My GUI affiche 4mA, 8mA, 15mA. Et puis finalement après 2 minutes je reçois la valeur stable 100mA. Je veux voir le 100mA directement sur mon GUI d'adcaout au lieu des valeurs d'incrément et stabiliser après quelque temps. Une autre question est que, Puis-je d'une manière ou d'une autre rendre ce processus rapide afin que je n'ai pas à attendre 3 minutes pour recevoir stable 100 mA de adcaout. L'horloge clk dans la conception numérique ci-dessous est de 20 MHz. L'horloge pour recevoir des valeurs ADC sur la carte FPGA est de 15 KHz. - le fichier adc. vhd est ci-dessous: Votre code est modifié comme suit: La sortie finale que je vois sur mon GUI est slvvalue1 et slvvalue2 Que diriez-vous de ceci: à la réinitialisation (ou à tout autre moment si vous voulez), Valeur de données à tous les éléments de votre tableau de scène. Cela devrait instantanément définir votre moyenne à la valeur actuelle: L'exemple ci-dessous montre le code complet pour une calculatrice de moyenne mobile. Ma suggestion est que vous l'étudiez jusqu'à ce que vous le compreniez. Ensuite, essayez de l'utiliser dans votre conception. Enfin, et seulement après avoir un circuit de base de travail, vous pouvez le modifier pour satisfaire vos contraintes de conception (largeur des données, nombre d'échantillons, gamme d'entiers, l'utilisation de signé vs entier, etc.) Enfin, si vous voulez utiliser Le code ci-dessus pour garder deux moyennes distinctes pour deux signaux distincts, il suffit d'instancier l'entité moyennage deux fois: Edit: Comme je comprends de vos commentaires, vous mai besoin d'une entrée supplémentaire pour définir la moyenne instantanément à la valeur d'entrée actuelle. Dans ce cas, vous pouvez utiliser une entrée de charge comme indiqué ci-dessous: Réponse Nov 26 13 at 15: 45Thread: moyennage continu en utilisant VHDL J'ai une question liée à la programmation VHDL. Je veux calculer la moyenne continue. Mon code d'exemple est: Sur chaque front positif de l'horloge, la valeur de quotout-valquot change. Je veux constamment prendre la moyenne de quotout-valquot. Je veux prendre en moyenne 32 valeurs en continu. Y at-il un moyen où je peux prendre la moyenne de 32 valeurs en continu jusqu'à ce que l'horloge fonctionne. S'il vous plaît laissez-moi savoir comment puis-je faire cela. Vous pouvez également modifier le code ci-dessus. Merci beaucoup, 19 novembre 2013, 07:01 AM 2 J'ai une question liée à la programmation VHDL. Je veux calculer la moyenne continue. Mon code d'exemple est: Sur chaque front positif de l'horloge, la valeur de quotout-valquot change. Je veux constamment prendre la moyenne de quotout-valquot. Je veux prendre en moyenne 32 valeurs en continu. Y at-il un moyen où je peux prendre la moyenne de 32 valeurs en continu jusqu'à ce que l'horloge fonctionne. S'il vous plaît laissez-moi savoir comment puis-je faire cela. Vous pouvez également modifier le code ci-dessus. Beaucoup de remerciements, vous devez d'abord corriger votre syntaxe (ne pas utiliser tiret mais soulignement) Pour le filtre moyen de course, la manière la plus facile est l'entrée de retard par 32 étapes. Soustraire le dernier stade de l'entrée et accumuler le résultat. En moyenne, j'ai utilisé le trait de soulignement dans mon code d'origine. Je ne sais pas pourquoi ai-je écrire-1 ici. Son out1 Désolé pour la confusion. Pouvez-vous décrire avec un exemple comment faire la moyenne continue. 19 novembre 2013, 07:22 4 Date d'inscription Oct 2008 Localisation London Messages 3,402 Rep Power 1 Re: moyenne continue en utilisant VHDL En fait, j'ai utilisé soulignement dans mon code d'origine. Je ne sais pas pourquoi ai-je écrire-1 ici. Son out1 Désolé pour la confusion. Pouvez-vous décrire avec un exemple comment faire la moyenne continue. Entrée gtgtgt. 32 étages ----------------- gt soustraire l'étage 32 de l'entrée courante mettre le soustracteur à la fin du tube à retard pour soustraire le dernier étage de l'entrée courante puis prendre le résultat de la soustraction dans un accumulateur (Additionneur de feedback avec un registre). Tronquer la somme d'accumulateur comme convenable. La moyenne continue en utilisant VHDL puis prendre le résultat de la soustraction dans un accumulateur (additionneur de feedback avec un registre). Tronquer la somme d'accumulateur comme convenable. Éliminer 5 LSB du résultat de l'accumulateur. Les premiers 31 échantillons initiaux ne seront pas corrects, mais le flux obtiendra alors la bonne réponse. Kaz A titre d'exemple, je fais une moyenne continue pour 4 valeurs. Pouvez-vous vérifier si mon approche est correcte. Sum est la valeur moyenne de sortie. Le code ci-dessus fonctionne si j'ai des numéros non signés. Mais je veux faire la moyenne du vecteur stdlogic. Le datain est défini comme: datain: in stdlogicvector (11 downto 0) Veuillez m'aider à résoudre ce problème. Veuillez modifier le code ci-dessus afin que je puisse obtenir des valeurs moyennes continues pour la valeur vectorielle. 20 Novembre 2013, 12:09 PM 9 Date d'inscription Oct 2008 Localisation London Messages 3,402 Rep Power 1 Re: moyenne continue en utilisant VHDL kaz A titre d'exemple, je fais une moyenne continue pour 4 valeurs. Pouvez-vous vérifier si mon approche est correcte. Sum est la valeur moyenne de sortie. Le code ci-dessus fonctionne si j'ai des numéros non signés. Mais je veux faire la moyenne du vecteur stdlogic. Le datain est défini comme: datain: in stdlogicvector (11 downto 0) Veuillez m'aider à résoudre ce problème. Veuillez modifier le code ci-dessus afin que je puisse obtenir des valeurs moyennes continues pour la valeur vectorielle. Je ne vois pas comment votre approche fonctionne. Si c'est moi, je vais juste suivre le diagramme que j'ai posté plus tôt. Par exemple Re: moyenne continue en utilisant VHDL Votre approche n'a pas fonctionné pour moi. J'ai vérifié la sortie sur le FPGA mais il n'a pas fonctionné pour moi. Essentiellement, j'essaie de stabiliser les valeurs de sortie ADC. C'est pourquoi je fais la moyenne des données entrantes ou des données capturées avec ADC. Outval et outval2 sont les sorties ADC 12 bits. Ill montrer comment j'ai utilisé votre approche ci-dessous. Veuillez me corriger si je me trompe: je mesure les valeurs adc (courant et tension) quotadcaout et adcboutquot après avoir utilisé l'approche ci-dessus et je reçois des valeurs incorrectes. S'il vous plaît laissez-moi savoir où je fais wrong. For mon projet, j'ai besoin de réduire un bruit d'une sortie ADC et mis en œuvre un simple filtre de moyenne mobile en VHDL. Bien qu'il fonctionne en simulation (voir l'image): il a un comportement étrange si je l'affiche sur le chipscope lorsque le système fonctionne en FPGA (voir l'image): Le code VHDL que j'utilise pour la moyenne mobile est comme suit: I Utilisez l'outil Xilinx Vivado 2015.2 exécuté sur Ubuntu 14.04 x64. Pourriez-vous s'il vous plaît m'aider à identifier le problème, de sorte que les résultats dans la simulation correspondent aux résultats après la synthèse
No comments:
Post a Comment