Quelle est la différence entre un reg et un fil? Quand sommes-nous censés utiliser reg et quand sommes-nous supposés utiliser fil dans un module verilog? J'ai aussi remarqué parfois qu'une sortie est déclarée à nouveau comme un reg. E.g reg Q dans une bascule D. J'ai lu ceci quelque part - "La sortie cible des instructions d'affectation procédurale doit être de type de données reg." Que sont les déclarations de mission procédurales? J'ai complètement googlé cela mais je n'ai pas pu trouver d'explication claire.
Câble:-
> Wires are used for connecting different elements. They can be treated
> as physical wires. They can be read or assigned. No values get stored
> in them. They need to be driven by either continuous assign statement
> or from a port of a module.
Reg: -
> Contrary to their name, regs don't necessarily correspond to
> physical registers. They represent data storage elements in
> Verilog/SystemVerilog. They retain their value till next value is
> assigned to them (not through assign statement). They can be
> synthesized to FF, latch or combinatorial circuit. (They might not be
> synthesizable !!!)
Les fils et les regs sont présents depuis la période Verilog. SystemVerilog ajouté un nouveau type de données appelé logique pour eux. La prochaine question est donc de savoir ce qui est ce type de données logique et en quoi il diffère de notre bon vieux fil/reg.
Logique:-
Comme nous l’avons vu, le type de données reg est erroné dans Verilog . L'ajout du type de données logique de SystemVerilog consiste à supprimer ce qui précède confusion. L'idée derrière est d'avoir un nouveau type de données appelé logique qui du moins ne donne pas l’impression qu’il est synthétisable par matériel . Le type de données logique n'autorise pas plusieurs pilotes. Il a un dernier assignation gagne le comportement en cas d'assignations multiples (ce qui implique il n'a aucune équivalence matérielle). Les types de données Reg/Wire donnent X si plusieurs les conducteurs essaient de les conduire avec des valeurs différentes. Type de données logique simplement assigne la dernière valeur d'assignation. La différence suivante entre reg/wire et la logique est que la logique peut être à la fois pilotée par un bloc assign, sortie de un port et à l'intérieur d'un bloc de procédure comme celui-ci
logic a; assign a = b ^ c; // wire style always (c or d) a = c + d; // reg style MyModule module(.out(a), .in(xyz)); // wire style
La différence simple entre reg et wire est, reg est utilisé dans un circuit combinatoire ou séquentiel dans Verilog et wire est utilisé dans un circuit combinatoire
reg est utilisé pour stocker une valeur mais le fil est continuellement piloté par quelque chose et le fil est connecté à l'export lorsque le module est initialisé, mais que reg n'est pas connecté