Die nichtblockierende Prozeduranweisung können Sie immer dann verwenden, wenn Sie mehrere Registerzuweisungen im gleichen Zeitschritt ohne Rücksicht auf Reihenfolge oder Abhängigkeit voneinander vornehmen wollen. Das bedeutet, dass nicht blockierende Anweisungen eher tatsächlicher Hardware ähneln als blockierende Zuweisungen.
Warum verwenden wir die Nicht-Blockierung im Block?
Blockierende (=) und nicht-blockierende (<=) Zuweisungen werden bereitgestellt, um die Ausführungsreihenfolge innerhalb einer Always-Block-Anweisungsausführung zu steuern. Nicht blockierende Zuweisungen blockieren buchstäblich nicht die Ausführung der nächsten Anweisungen. Zuerst wird die rechte Seite aller Anweisungen bestimmt, dann werden die linken Seiten gemeinsam zugeordnet.
Wann würden Sie beim Codieren sequentieller Logik blockierende und nicht blockierende Zuweisungen verwenden?
Richtlinie 1: Verwenden Sie beim Modellieren sequentieller Logik nichtblockierende Zuweisungen Richtlinie 2: Verwenden Sie beim Modellieren von Latches nichtblockierende Zuweisungen. Es gibt viele Möglichkeiten, kombinatorische Logik mit Verilog zu codieren, aber wenn die kombinatorische Logik mit einem Always-Block codiert wird, sollten blockierende Zuweisungen verwendet werden.
Was sind blockierende und nicht blockierende Zuweisungen?
Blöcke, mit leicht unterschiedlichem Verh alten. • Blockierende Zuweisung: Auswertung und Zuweisung erfolgen sofort. • Nicht blockierende Zuweisung: alle Zuweisungen zurückgestellt bis alle . rechte Seiten wurden ausgewertet (Ende der Simulation.
Wo wird blockierendes und nicht blockierendes Verilog verwendet?
Hier ist eine gute Faustregel für Verilog: Wenn Sie in Verilog sequenzielle Logik erstellen möchten, verwenden Sie einen getakteten Always-Block mit nichtblockierenden Zuweisungen Wenn Sie kombinatorische Logik erstellen möchten, verwenden Sie ein Always-Block mit Blocking-Zuweisungen. Versuchen Sie, die beiden nicht im selben Always-Block zu mischen.