Il semble que le monde ait décidé que std_logic
(et std_logic_vector
) sont la façon par défaut de représenter les bits en VHDL. L'alternative serait std_ulogic
, qui n'est pas résolue.
Cela me surprend car généralement, vous ne décrivez pas un bus , vous ne voulez donc pas plusieurs pilotes et vous n'avez pas besoin de résoudre un signal. L'avantage std_ulogic
serait que le compilateur vous avertit très tôt si vous avez plusieurs pilotes.
Question: est-ce juste une chose culturelle / historique, ou y a-t-il encore des raisons techniques d'utiliser std_logic?
Réponses:
Std_logic est un sous-type de std_ulogic et possède exactement une propriété supplémentaire: il est résolu s'il existe plusieurs pilotes.
Quelle que soit la pratique courante, std_ulogic est le type correct à utiliser pour les signaux non résolus qui nécessitent une logique à 9 valeurs. (Souvent, l'utilisation de "bit" est encore plus correcte - par exemple, sur certaines architectures FPGA qui n'ont pas de "X" ou de "U").
Fondamentalement, la meilleure chose à faire est d'utiliser le type correct pour le travail. Souvent, les mauvaises pratiques se propagent par des gens qui se contentent de perroqueter le style qu'ils voient que les autres utilisent, sans comprendre pourquoi.
la source
Mon histoire est la suivante:
J'ai commencé (vers 1999 IIRC) à utiliser
std_ulogic*
tout le temps - comme c'est la bonne chose à faire, pour les raisons que vous décrivez.Ensuite, j'ai dû m'interfacer avec un tas d'IP de fournisseurs générés par un assistant qui avaient
std_logic
tous s sur toute l'interface. Ce qui signifiait des conversions sur les mappages de ports (pour les_vector
éléments), et je suis devenu paresseux et je suis passé à l'utilisationstd_logic*
.Cependant, il semble que je fasse très peu d'erreurs de "double pilote", donc je n'ai pas raté
std_ulogic
autant que je l'aurais pensé. Et ladrivers
commande de Modelsim, il est très facile de trouver "qui conduit quoi" quand j'ai parfois besoin de ...la source
*vector
parties du port ont encore besoin de conversionsL'IIRC a recommandé le célèbre manuel de méthodologie de réutilisation
std_logic(_vector)
, alors peut-être que les groupes de méthodologie dans les entreprises, etc. Personnellement, +1 pour utilisationstd_ulogic
lorsque cela est possible.la source
Je sais que c'est un diaporama ppt horriblement coloré, mais cela explique assez bien la différence:
http://web.archive.org/web/20151026150828/http://www.cs.auckland.ac.nz/~jmor159/reconfig/ppt/ResolutionFunctions.ppt
la source