Assign-Anweisungen werden verwendet, um Werte im Netz zu steuern. Und es wird auch verwendet Datenflussmodellierung .
Signale vom Typ Wire oder einem Datentyp erfordern die kontinuierliche Zuweisung eines Wertes. Solange die +5-V-Batterie an einem Ende des Kabels anliegt, erhält die am anderen Ende des Kabels angeschlossene Komponente die erforderliche Spannung.
Dieses Konzept wird durch die Zuweisungsanweisung verwirklicht, bei der jeder Draht oder ein anderer ähnlicher Draht (Datentyp) kontinuierlich mit einem Wert angesteuert werden kann. Der Wert kann entweder eine Konstante oder ein Ausdruck sein, der aus einer Gruppe von Signalen besteht.
Syntax
Die Zuweisungssyntax beginnt mit dem Schlüsselwort „assign“, gefolgt vom Signalnamen, der entweder ein Signal oder eine Kombination verschiedener Signalnetze sein kann.
Der Android-Prozess Acore stoppt immer wieder
Der Antriebskraft Und Verzögerung sind optional und werden hauptsächlich zur Datenflussmodellierung und nicht zur Synthese in echte Hardware verwendet.
Das Signal auf der rechten Seite wird ausgewertet und dem Netz bzw. Netzausdruck auf der linken Seite zugeordnet.
assign = [drive_strength] [delay]
Verzögerungswerte sind nützlich zum Festlegen von Verzögerungen für Gates und werden zur Modellierung des Timing-Verhaltens in realer Hardware verwendet. Der Wert bestimmt, wann dem Netz der ausgewertete Wert zugewiesen werden soll.
Regeln
Bei der Verwendung einer Assign-Anweisung müssen einige Regeln befolgt werden:
- LHS sollte immer ein Skalar, ein Vektor oder eine Kombination aus Skalar- und Vektornetzen sein, jedoch niemals ein Skalar- oder Vektorregister.
- RHS kann Skalar- oder Vektorregister und Funktionsaufrufe enthalten.
- Immer wenn sich der Wert eines Operanden auf der rechten Seite ändert, wird die linke Seite mit dem neuen Wert aktualisiert.
- Assign-Anweisungen werden auch kontinuierliche Zuweisungen genannt.
Weisen Sie reg-Variablen zu
Wir können nicht fahren oder zuweisen reg Geben Sie Variablen mit einer Zuweisungsanweisung ein, da eine Reg-Variable Daten speichern kann und nicht kontinuierlich gesteuert wird.
Latex-Textgrößen
Reg-Signale können nur in prozeduralen Blöcken wie Always und Initial gesteuert werden.
Implizite kontinuierliche Zuweisung
Wenn eine Zuweisungsanweisung verwendet wird, um dem gegebenen Netz einen Wert zuzuweisen, wird sie als an bezeichnet explizit Abtretung
Wenn eine während des Netzes auszuführende Aufgabe deklariert wird, wird sie als an bezeichnet implizit Abtretung.
wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment
Kombiniertes Logikdesign
Betrachten Sie die folgende digitale Schaltung aus kombinatorischen Gattern und den entsprechenden Elementen Verilog Code.
Konstruktor in Java
Bei der kombinatorischen Logik müssen die Eingänge kontinuierlich angesteuert werden, um den Ausgang aufrechtzuerhalten, im Gegensatz zu sequentiellen Elementen wie Flip-Flops, bei denen der Wert am Rand eines Takts erfasst und gespeichert wird.
Eine zugewiesene Anweisung erfüllt den Zweck, da die Ausgabe o immer dann aktualisiert wird, wenn sich eine der Eingaben auf der rechten Seite ändert.
// This module takes four inputs and performs a Boolean // operation and assigns output to o. // logic is realized using assign statement. module combo (input a, b, c, d, output o); assign o = ~((a & b) | c ^ d); endmodule
Hardware-Schema
Nach der Ausarbeitung und Synthese des Entwurfs verhält sich eine kombinatorische Schaltung genauso wie durch die Zuweisungsanweisung modelliert.
Das Signal o wird immer dann 1, wenn der kombinatorische Ausdruck auf der RHS wahr wird.
Ebenso wird o zu 0, wenn RHS falsch ist. Der Ausgang o ist von 0 ns bis 10 ns X, da die Eingänge gleichzeitig X sind.