web-dev-qa-db-fra.com

Utilisation de wire ou reg avec entrée ou sortie dans Verilog

Lorsque vous déclarez quelque chose en entrée ou en sortie, comment savoir si vous devez également le déclarer en tant que reg ou wire?

32
node ninja

reg et wire spécifient comment l'objet sera affecté et n'ont donc de sens que pour les sorties.

Si vous envisagez d'affecter votre sortie en code séquentiel, comme dans un bloc always, déclarez-le en tant que reg (ce qui est vraiment un terme impropre pour "variable" dans Verilog). Sinon, ce devrait être un wire, qui est également la valeur par défaut.

30
Jan Decaluwe

Un output reg foo est juste un raccourci pour output foo_wire; reg foo; assign foo_wire = foo. C'est quand même utile d'enregistrer cette sortie. Je ne pense pas input reg est significatif pour module (peut-être task). input wire et output wire sont les mêmes que input et output: c'est juste plus explicite.

16
Ben Jackson

Le compilateur de code Verilog que vous utilisez dictera ce que vous avez à faire. Si vous utilisez une syntaxe illégale, vous obtiendrez une erreur de compilation.

Un output doit également être déclaré comme reg uniquement s'il est attribué à l'aide d'une "affectation procédurale". Par exemple:

output reg a;
always @* a = b;

Il n'est pas nécessaire de déclarer un output comme wire.

Il n'est pas nécessaire de déclarer un input comme wire ou reg.

6
toolic

le voir dans le domaine des circuits numériques

  1. Un fil crée une sortie de fil qui ne peut être affectée à aucune entrée en utilisant l'instruction assign car l'instruction assign crée une connexion port/broche et le fil peut être joint au port/broche
  2. Un reg créera un registre (D FLIP FLOP) qui obtient ou reçoit des entrées sur la base de la liste de sensibilité, que ce soit une horloge (montante ou descendante) ou un front combinatoire.

cela dépend donc complètement de votre utilisation, que vous ayez besoin de créer un registre et de le cocher en fonction de la liste de sensibilité ou que vous souhaitiez créer une affectation de port/broche

4
Rahul Jain

fondamentalement, 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'un autre côté, si nous avons juste un signal simple avec 2 valeurs 0 et 1, nous le déclarerons comme fil.Le fil ne peut pas contenir de valeurs.

2
john_conner