Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Verilog

Verilog-Anfangsblock

In einer Simulation wird normalerweise eine Reihe von Verilog-Anweisungen nacheinander ausgeführt. Diese Anweisungen werden innerhalb einer Prozedur platziert Block. Es gibt hauptsächlich zwei Arten von Verfahren Blöcke in Verilog - initial und immer

Syntax

  
  
	initial 
		[single statement]

	initial begin
		[multiple statements]
	end

  

Wofür wird der Anfangsblock verwendet?

Ein initial Block ist nicht synthetisierbar und kann daher nicht in einen Hardware-Schaltplan mit digitalen Elementen konvertiert werden. Daher dienen Anfangsblöcke nicht viel mehr als der Verwendung in Simulationen. Diese Blöcke werden hauptsächlich verwendet, um Variablen zu initialisieren und Designports mit bestimmten Werten zu steuern.

Wann beginnt und endet ein anfänglicher Block?

Eine initial Block wird zu Beginn einer Simulation zum Zeitpunkt 0 Einheit gestartet. Dieser Block wird während der gesamten Simulation nur einmal ausgeführt. Ausführung eines initial Block endet, sobald alle Anweisungen innerhalb des Blocks ausgeführt wurden.

Das oben gezeigte Bild hat eine module namens Behavior, das zwei interne Signale hat, die a und b genannt werden. Die initial block hat nur eine Anweisung und daher ist es nicht notwendig, die Anweisung innerhalb von begin zu platzieren und end . Diese Anweisung weist a den Wert 2'b10 zu, wenn der Anfangsblock zum Zeitpunkt 0 Einheiten gestartet wird.

Was passiert, wenn es ein Verzögerungselement gibt?

Der unten gezeigte Code hat eine zusätzliche Anweisung, die dem Signal b einen Wert zuweist. Dies geschieht jedoch erst nach 10 Zeiteinheiten ab Ausführung der vorherigen Anweisung. Das bedeutet, dass a zuerst mit dem angegebenen Wert und dann nach 10 Zeiteinheiten b mit 0 belegt wird.

Wie viele Anfangsblöcke sind in einem Modul erlaubt?

Die Anzahl der initial ist unbegrenzt Blöcke, die innerhalb eines Moduls definiert werden können.

Der unten gezeigte Code hat drei initial Blöcke, die alle gleichzeitig gestartet und parallel ausgeführt werden. Abhängig von den Anweisungen und den Verzögerungen innerhalb jedes anfänglichen Blocks kann die Zeit, die zum Beenden des Blocks benötigt wird, jedoch variieren.

In diesem Beispiel hat der erste Block eine Verzögerung von 20 Einheiten, während der zweite eine Gesamtverzögerung von 50 Einheiten (10 + 40) und der letzte Block eine Verzögerung von 60 Einheiten hat. Daher dauert die Simulation 60 Zeiteinheiten, da mindestens ein Anfangsblock noch bis zu 60 Zeiteinheiten läuft.

$finish ist eine Verilog-Systemaufgabe, die den Simulator anweist, die aktuelle Simulation zu beenden.

Wenn der letzte Block eine Verzögerung von 30 Zeiteinheiten hatte, wie unten gezeigt, würde die Simulation bei 30 Zeiteinheiten enden, wodurch alle anderen initial getötet würden Blöcke, die zu diesem Zeitpunkt aktiv sind.

  
  
	initial begin
		#30 $finish;
	end

  

Sehen Sie sich das unten gezeigte Flash-Beispiel an, um zu sehen, wie ein initial Block wird in einer Simulation ausgeführt.

Klicken Sie hier für eine Diashow mit Simulationsbeispiel !


Verilog

  1. Verilog-Tutorial
  2. Verilog-Verkettung
  3. Verilog - In einer Nussschale
  4. Verilog-Aufgaben
  5. Verilog-Blockierung und Nicht-Blockierung
  6. Verilog-Funktionen
  7. Verilog-Aufgabe
  8. Verilog-Taktgenerator
  9. Verilog Math-Funktionen
  10. Verilog-Zeitformat