2015-11-01 10 views
8

Was ist der Unterschied zwischen einem reg und einem Draht? Wann sollen wir reg verwenden und wann sollen wir in einem Verilog-Modul verdrahten? Mir ist auch manchmal aufgefallen, dass eine Ausgabe wieder als reg deklariert wird. ZB reg Q in einem D-Flip-Flop. Ich habe das irgendwo gelesen - "Die Zielausgabe von Anweisungen zur prozeduralen Zuweisung muss vom Datentyp reg sein." Was sind Anweisungen zur prozeduralen Zuordnung? Ich habe das gegoogelt, konnte aber keine klare Erklärung finden.Was ist der Unterschied zwischen reg und Draht in einem Verilog-Modul

+0

Haben Sie diese [link] (http://electronics.stackexchange.com/questions/31624/what-is-the-difference-between-reg-and-wire-after-synthesizing) überprüft – ssgr

Antwort

9

Draht: -

> Wires are used for connecting different elements. They can be treated 
> as physical wires. They can be read or assigned. No values get stored 
> in them. They need to be driven by either continuous assign statement 
> or from a port of a module. 

Reg: -

> Contrary to their name, regs don't necessarily correspond to 
> physical registers. They represent data storage elements in 
> Verilog/SystemVerilog. They retain their value till next value is 
> assigned to them (not through assign statement). They can be 
> synthesized to FF, latch or combinatorial circuit. (They might not be 
> synthesizable !!!) 

Drähte und Regs vorhanden sind von Verilog Zeitrahmen. SystemVerilog hinzugefügt einen neuen Datentyp namens Logik zu ihnen. Also die nächste Frage ist, was ist dieser Logik-Datentyp und wie es sich von unserem guten alten Draht/reg unterscheidet.

Logik: -

Wie wir gesehen haben, reg Datentyp wird in Verilog-Bit-Fehl führt. SystemVerilogs Logikdatentyp-Zusatz soll die obige Verwirrung entfernen. Die Idee dahinter ist, einen neuen Datentyp namens Logik zu haben, der zumindest keinen Eindruck vermittelt, dass er hardware-synthetisierbar ist. Logiktyp erlaubt nicht mehrere Treiber. Es hat eine letzte Zuweisung gewinnt Verhalten im Falle mehrerer Zuweisungen (was bedeutet, es hat keine Hardware-Äquivalenz). Reg/Wire Datentypen geben X, wenn mehrere Treiber versuchen, sie mit anderen Werten zu fahren. Logischer Datentyp einfach weist den letzten Zuweisungswert zu. Der nächste Unterschied zwischen reg/Draht und Logik ist, dass Logik kann sowohl durch assign Block Ausgang A Port und in einem Verfahrensblock wie diese

logic a; 
    assign a = b^c;     // wire style 
    always (c or d) a = c + d;   // reg style 
    MyModule module(.out(a), .in(xyz)); // wire style 
2

Procedural Blöcke bezieht sich auf always, always_ff, always_comb, always_latch, initial usw. blockiert. Während sich Anweisungen zur prozeduralen Zuweisung auf die Zuweisung von Werten zu reg, integer usw., , aber nicht Drähte (Netze) beziehen.

wire Elemente müssen kontinuierlich von etwas angetrieben werden, und kann keinen Wert speichern. Fortan werden ihnen Werte unter Verwendung der fortlaufenden Zuweisung Anweisungen zugewiesen.

reg kann verwendet werden, um Register in prozeduralen Blöcken zu erstellen. Somit kann einen Wert von speichern.

reg Elemente kann als Ausgabe innerhalb eine Erklärung tatsächlichen Modul verwendet werden. Aber, reg Elemente kann nicht mit dem Ausgangsport eines Moduls Instanziierung verbunden werden.

Somit kann ein reg kann einen Draht als RHS Antrieb eine assign Aussage. Umgekehrt kann ein Draht einen reg in RHS eines prozeduralen Blocks fahren.

Für klare Vorstellung über Erklärung reg oder wire siehe das Bild unten:

enter image description here

Also, wenn auf sequentielle Logik abzuleiten, die einen Wert speichert/hält, erklärt diese Variable/Port als reg . Hier Q ist ein reginnerhalb ein Modul, aber während Instanziierung dieses Modul in einem anderen Modul, dann muss dieser Anschluss an eine wire angeschlossen werden.

Erinnern Sie sich, wire kann nur auf kombinatorische Logik schließen, während reg auf kombinatorische oder sequenzielle Logik schließen kann.

Daves Blog ist eine gute Quelle für detaillierte Informationen. Weitere Informationen finden Sie unter synthesizing difference und Verilog wire-reg Links.

0

einfache Differenz zwischen reg und Draht angetrieben werden soll, REG wird in kombinatorische oder sequentielle Schaltung in Verilog und Draht wird verwendet in kombinatorischen Schaltung

reg dient zum speichern Wert verwendet, sondern Draht wird continuely ein Ding und Draht wird an outport verbunden angetrieben, wenn Modulinitialisierung aber reg con nicht verbunden

Verwandte Themen