Angenommen, ich habe diese beiden Codes:
module wire_example( a, b, y);
input a, b;
output y;
wire a, b, y;
assign y = a & b;
endmodule
und das zweite ist:
module reg_combo_example( a, b, y);
input a, b;
output y;
reg y;
wire a, b;
always @ ( a or b)
begin
y = a & b;
end
endmodule
Meine Frage ist, was ist der Unterschied in der Netzliste, beide haben ein Gate, aber wird das Modul mit reg y
einem Flip-Flop oder einem Latch zum Halten der Daten haben, während wire y
es kein Latch hat?
Keines Ihrer Beispiele enthält Latches oder Flip-Flops. Der always
Block in Ihrem zweiten Beispiel ist kombinatorisch, nicht sequentiell (wenn er einen Latch synthetisieren würde, welche Uhr würde diesen Latch steuern?). Sie müssen einfach einen reg
Typ für verwenden y
, weil er auf der linken Seite einer Zuweisungsanweisung innerhalb eines always
Blocks erscheint. Viele Leute betrachten dies als einen Nachteil von Verilog, der schwer zu bestreiten ist. In VHDL signal
würde ein Typ anstelle von wire
und verwendet reg
werden, um die Verwirrung zu beseitigen.
wire
:
Es ist ein Netz, das die Verbindungen zwischen Komponenten darstellt. Es wird für kontinuierliche Zuweisungen verwendet, wire
dh sein Wert wird kontinuierlich von den Ausgängen der daran angeschlossenen Geräte gesteuert.
reg
:
Es wird für Verfahrensaufgaben verwendet. reg
bedeutet nicht immer ein Flop/Register. reg
kann seinen Wert auch behalten, bis ein anderer Wert in die Register geschrieben wird.
Die Pop-Maschine
Mah35h