Was ist der Unterschied zwischen reg und wire nach der Synthese?


7

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 der 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 hat das Modul mit reg yeinem Flip-Flop oder einem Latch, um die Daten zu speichern, während wire yes keinen Latch hat?

Antworten:


9

Keines Ihrer Beispiele enthält Latches oder Flip-Flops. Der alwaysBlock in Ihrem zweiten Beispiel ist kombinatorisch und nicht sequentiell (wenn ein Latch synthetisiert würde, welcher Takt würde diesen Latch steuern?). Sie müssen einen regTyp yeinfach verwenden, weil er auf der linken Seite einer Zuweisungsanweisung in einem alwaysBlock angezeigt wird . Viele Leute halten dies für einen Nachteil von Verilog, mit dem man nur schwer argumentieren kann. In VHDL signalwürde ein Typ anstelle von beidem wireund verwendet reg, um die Verwirrung zu beseitigen.


3
.... weshalb Sie SystemVerilog verwenden und einfach eine "Logik" deklarieren
ThePopMachine

1

Draht: Es ist ein Netz, das die Verbindungen zwischen Komponenten darstellt. Es wird für die kontinuierliche Zuordnung verwendet, dh der Wert des Kabels wird kontinuierlich durch die Ausgänge der an ihn angeschlossenen Geräte bestimmt. Reg: Es wird für die prozedurale Zuordnung verwendet. Reg bedeutet nicht immer einen Flop. reg kann seinen Wert behalten, bis ein anderer Wert in die Register eingefügt wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.