Kontinuierliche Zuordnung verilog
-Dieser code ist geschrieben in verilog mit Modelsim 10.2 d.Der Fehler unten zeigen, es gibt ein problem mit {cout,l3} Zuordnung.
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.
InformationsquelleAutor user3409814 | 2014-04-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
wire
zugeordnet werden können und nicht innerhalb einerinitial
oderalways
block. Sie sollten ändern Sie den Typ aufreg
.Den ersten block wird nur ausgeführt, einmal am Beginn der simulation, nicht ständig ausgewertet, daher sollten Sie verwenden
always
statt.InformationsquelleAutor Morgan
Wird es ein paar mehr Probleme in Ihrem code.
1.
Den primären in der Regel mit kontinuierlichen Aufgaben, die die LHS muss ein Netz. Der Grund für diese Regel ist, dass die Register Werte zu diskreten Zeitpunkten, aber die Netze sind immer angetrieben von einem Wert. Änderungen an einer net kann asynchron erfolgen.
2.Fehler im code
Können Sie Werte zuweisen innerhalb einer immer blockieren(Quasi-kontinuierliche zuordnen), aber die LS müssen ein register.Dies ist eine erweiterte Funktion, die in verilog,ich empfehle, dass Sie verwenden Sie es nicht.Für die Einfachheit, nicht verwenden, weisen Sie in einer immer block und alle Aufgaben im block Register(ich.e Lhs)
ÄNDERUNGEN AN IHREM CODE
...
InformationsquelleAutor chitranna