La comparaison d'une longue std_logic_vector à zéros
En simulation, cela fonctionne parfaitement. Est-ce le meilleur moyen de vérifier
les zéros pour un synthesisable code. Quelles seraient les ressources générées?
signal vector_slv : std_logic_vector(2048 downto 0);
...
if (vector_slv = (vector_slv'range => '0')) then
-- do something...
Est-il un autre moyen optimal pour mettre en œuvre cette solution compte tenu de h/w cartographie (avec une utilisation optimale des ressources).
Je serais plus intéressé à comprendre les ressources utilisées.
OriginalL'auteur powernest | 2013-09-25
Vous devez vous connecter pour publier un commentaire.
Il n'y a aucune manière qui rend plus ou moins de sens de la synthèse. Écrire le code qui exprime le mieux votre intention.
Si vous comparez un vecteur pour tous les zéros, les éléments suivants doivent tous les mêmes résultats, ou vous devez produire un bug grave à l'encontre de l'outil de!
et en effet pour la plus courte des vecteurs qui s'inscrivent dans un entier:
sera exactement le même que celui de 32 bits vecteur de comparaison.
(BTW, remarque il n'est pas nécessaire pour les parenthèses autour de la
if
état - VHDL n'est pas C 🙂OriginalL'auteur Martin Thompson
Si la gamme est disponible, comme dans votre exemple de code, alors la suggestion
la solution a l'air bien, et je m'attends à ce que des outils de synthèse sont faites pour gérer
les constructions de ce genre.
Si la plage n'est pas disponible, puis de comparer avec zéro peut être fait comme:
Je m'attends à ce que les outils de synthèse de gérer cela de la même façon que pour comparer
avec
(vector_slv'range => '0')
.OriginalL'auteur Morten Zilmer
Autant que la synthèse est concerné, oui, ces simples constructions sont généralement optimisés assez bien par l'outil. L'exacte disposition matérielle dépend bien sûr de ce que votre cible est (FPGA, ASIC, ...).
Ma suggestion est de prendre un coup d'oeil à la synthèse de résultat (par exemple, la Technologie de la Carte afficheur pour les Fpga Altera). Si la synthèse clobbers, vous pouvez convertir manuellement dans un arbre binaire de comparaisons avec zéro, en tenant compte de la technologie des primitives, vous avez à disposition. Cela peut être beaucoup plus compliqué qu'il n'y paraît, cependant, en particulier pour les Fpga (il n'y a plus de Tables pour jouer avec), et ne devrait pas être nécessaire avec un outil décent.
OriginalL'auteur zennehoy