Verilog-Komparator
Ich bin Neuling auf eine verilog.
Ich habe viel recherchiert, geschrieben und schließlich diesen code, aber es scheint nicht zu funktionieren.
Kann mir jemand fix it for me?
module comparator();
reg[3:0] a, b;
wire[1:0] equal, lower, greater;
if (a<b) begin
equal = 0;
lower = 1;
greater = 0;
end
else if (a==b) begin
equal = 1;
lower = 0;
greater = 0;
end
else begin
equal = 0;
lower = 0;
greater = 1;
end;
initial begin
$monitor($time,
"a=%b, b=%b, greater=%b, equals=%b, lower=%b",
a, b, greater, equal, lower);
a=9; b=10;
#100 $display ("\n", $time, "\n");
end
endmodule
- Ich bin nicht vertraut mit Ihrer Technologie, aber im Allgemeinen sind gute Fragen, auf die SE hätte folgende info:
What specifically is not working?
What have you tried?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verhaltens Verfahren werden muss, eingeschlossen innerhalb eines
always
block, wie diese:Auch deine Modul-Eingänge und-Ausgänge. Eine korrekte version würde so Aussehen:
Schlage ich die Lektüre einige Tutorials über die Verhaltens-Modellierung mit Verilog, denn Sie verpassten eine Menge Punkte:
always @*
model kombinatorische LogikUnd am wichtigsten: wie schreibt man einen Prüfstand. Die Prüfstände sind so geschrieben, als Modul ohne Eingänge und Ausgänge), instanziiert Ihre UUT (unit under test), bietet Eingänge Lesen Ausgänge und prüfen, ob Sie gültig sind.
Spielen kann man mit diesem Beispiel an EDAPlayGround über diesen link:
http://www.edaplayground.com/x/CPq
Ohne immer blockieren:
Vorsichtig sein, müssen Sie überlegen, 'X' und 'Z', verwenden Sie "===" statt "=="