Si la déclaration et assiging fils en Verilog
Nouveau à Verilog et d'essayer de comprendre les bases de assiging fils basé sur une combinaison de la logique.
J'ai:
wire val;
wire x;
wire a;
wire b;
always @*
begin
if(val == 00)
I want to assign x = a
if(val == 01)
I want to assign x = b
end
où a et b sont des fils avec des valeurs et x est un fil va dans un registre.
Si vous pouvez s'il vous plaît me diriger dans la bonne direction à ce que j'ai besoin de changer, il serait très apprécié.
Merci.
OriginalL'auteur T.T.T. | 2013-07-19
Vous devez vous connecter pour publier un commentaire.
Première chose à demander, c'est: êtes-vous essayer d'utiliser ces fils comme entrées? Ou êtes-vous à l'aide de ces connexions?
Deuxième chose: voulez-vous un synthesizable code?
Et vous ne pouvez pas affecter des fils à l'intérieur d'un bloc, vous devez utiliser reg
Donc un avis:
OriginalL'auteur DOS
wire
s ne peut être attribué que parassign
états, qui ne peut pas être utilisé avec des instructions if.Si vous modifiez
x
àreg
type, alors vous serez en mesure de transférer toujours bloquer.Cela permettra de synthétiser exactement la même chose, une idée fausse commune est que l'un
reg
variable de type implique un registre, mais ça change la manière dont la valeur est affectée.Alternativement, vous pouvez utiliser une assigner déclaration avec l'opérateur ternaire
?:
, si vous voulez, il restera comme un type de fil:OriginalL'auteur Tim
Tout d'abord, je n'ai pas remarqué tout entrée ou sortie ports dans votre module. Je n'ai d'avis une bonne déclaration de module avec un début et fin.
Cependant, en supposant que votre module est défini comme suit, avec entrées a,b, et val et sortie x:
La attribuer déclaration sert de conditionnelle bloc comme un si relevé de compte que vous êtes probablement habitué dans les langages de programmation tels que C ou C++.
La attribuer opérateur travaille en tant que tel:
Ci-dessus attribuer opérateur fonctionne comme suit:
Si val == 2'b00, d'attribuer des x à la valeur de un.
D'autre Si val == 2'01, céder x à la valeur de b.
D'autre val = 0
OriginalL'auteur Veridian