Continue d'attribution de verilog
-Ce code est écrit en verilog à l'aide de Modelsim 10.2.d.Les erreurs ci-dessous indiquent qu'il y a un problème avec {cout,l3} affectation.
module alu(a,b,bin,cin,op,cout,res);
input [31:0] a,b;
input [1:0] op;
input bin,cin;
reg [31:0] l1,l2,l3;
output cout;
output [31:0] res;
assign l1 = a & b;
assign l2 = a | b;
initial
if(bin == 1'b0)
assign {cout,l3} = a + b + cin;
else
assign {cout,l3} = a - b + cin;
mux4to1(l1,l2,l3,op,res);
endmodule
Error-
v(14): LHS in procedural continuous assignment may not be a net: cout.
v(16): LHS in procedural continuous assignment may not be a net: cout.
Vous devez vous connecter pour publier un commentaire.
wire
ne peut pas être affectée à l'intérieur d'uninitial
oualways
bloc. Vous devez changer le type dereg
.Le premier bloc sera exécutée uniquement une fois au début de la simulation, pas évalués de façon continue, par conséquent, vous devez utiliser
always
à la place.Il y aura un peu plus de problèmes dans votre code.
1.
La règle primaire continue, les affectations, c'est que le membre de GAUCHE doit être un filet. La raison de cette règle est que les registres sont des valeurs à la fois discret, mais les filets sont toujours motivés par une valeur. Les modifications apportées à un net peut se produire de manière asynchrone.
2.Des erreurs dans votre code
Vous pouvez affecter des valeurs à l'intérieur d'un bloc(Quasi continue attribuer), mais le membre de GAUCHE doit être un registre.Ceci est une fonctionnalité avancée en verilog,je vous recommande fortement de ne pas l'utiliser.Pour des raisons de simplicité, ne pas utiliser de céder toujours bloquer et toutes les affectations dans le bloc de registres(j'.e Lhs)
CHANGER VOTRE CODE
...