Lorsque vous déclarez quelque chose comme entrée ou sortie, comment savez-vous si vous devez également le déclarer comme un reg
ou un wire
?
Réponses
Trop de publicités?reg
et wire
spécifient comment l'objet sera affecté et ne sont donc significatifs que pour les sorties.
Si vous prévoyez d'attribuer votre sortie en code séquentiel, par exemple dans un bloc always
, déclarez-le comme un reg
(qui est vraiment un nom erroné pour « variable » dans Verilog). Sinon, il devrait s'agir d'un wire
, ce qui est également la valeur par défaut.
Un output reg foo
est juste un raccourci pour output foo_wire; reg foo; assign foo_wire = foo
. C'est pratique quand vous prévoyez d'enregistrer cette sortie de toute façon. Je ne pense pas que input reg
soit significatif pour module
(peut-être task
). input wire
et output wire
sont les mêmes que input
et output
: c'est juste plus explicite.
essentiellement reg est utilisé pour stocker des valeurs.Par exemple, si vous voulez un compteur(qui comptera et aura donc une certaine valeur pour chaque compte),nous utiliserons un reg. D'autre part,si nous avons juste un signal simple avec 2 valeurs 0 et 1,nous allons le déclarer comme wire.Wire ne peut pas contenir les valeurs.So assigner des valeurs à wire conduit à des problèmes....