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

Verilog-Block-Anweisungen

Es gibt Möglichkeiten, eine Reihe von Anweisungen zu gruppieren, die syntaktisch einer einzelnen Anweisung entsprechen und als Blockanweisungen bezeichnet werden . Es gibt zwei Arten von Blockanweisungen:sequentiell und parallel.

Sequentiell

Anweisungen werden mit begin umschlossen und end Schlüsselwörter und werden sequentiell in der angegebenen Reihenfolge nacheinander ausgeführt. Verzögerungswerte werden relativ zum Zeitpunkt der Ausführung der vorherigen Anweisung behandelt. Nachdem alle Anweisungen innerhalb des Blocks ausgeführt wurden, kann die Steuerung an eine andere Stelle übergeben werden.

  
  
module design0;
	bit [31:0] data;
  
	// "initial" block starts at time 0
	initial begin
      
		// After 10 time units, data becomes 0xfe 
		#10   data = 8'hfe;
		$display ("[Time=%0t] data=0x%0h", $time, data);
      
		// After 20 time units, data becomes 0x11
		#20   data = 8'h11;
		$display ("[Time=%0t] data=0x%0h", $time, data);
	end
endmodule

  

Im obigen Beispiel erste Anweisung im begin-end Block wird wegen der relativen Natur in 10 Zeiteinheiten und die zweite Anweisung in 30 Zeiteinheiten ausgeführt. Es sind 20 Zeiteinheiten nach Ausführung der vorherigen Anweisung.

Simulationsprotokoll
ncsim> run
[Time=10] data=0xfe
[Time=30] data=0x11
ncsim: *W,RNQUIE: Simulation is complete.

Parallel

Eine Parallele block kann Anweisungen gleichzeitig ausführen, und die Verzögerungssteuerung kann verwendet werden, um eine zeitliche Reihenfolge der Zuweisungen bereitzustellen. Anweisungen werden parallel gestartet, indem sie in fork eingeschlossen werden und join Schlüsselwörter.

  
  
	initial begin
		#10   data = 8'hfe;
		fork
		   #20 data = 8'h11;
		   #10 data = 8'h00;
		join
	end

  

Im obigen Beispiel fork-join Block wird nach Ausführung der Anweisung in 10 Zeiteinheiten gestartet. Anweisungen innerhalb dieses Blocks werden parallel ausgeführt, und die erste Anweisung, die gestartet wird, ist diejenige, bei der den Daten ein Wert von 8:00 zugewiesen wird, da die Verzögerung dafür 10 Zeiteinheiten nach dem Start des Fork-Joins beträgt. Nach 10 weiteren Zeiteinheiten wird die erste Anweisung gestartet und die Daten erhalten den Wert 8'h11.

  
  
	initial begin
		#10 data = 8'hfe;
		fork
			#10 data = 8'h11;
			begin
				#20 data = 8'h00;
				#30 data = 8'haa;
			end
		join
	end

  

Es gibt einen begin-end -Block im obigen Beispiel, und alle Anweisungen innerhalb des begin-end-Blocks werden nacheinander ausgeführt, aber der Block selbst wird parallel zu den anderen Anweisungen gestartet. Die Daten erhalten also 8'h11 bei 20 Zeiteinheiten, 8'h00 bei 30 Zeiteinheiten und 8'haa bei 60 Zeiteinheiten.

Benennung von Blöcken

Sowohl sequentielle als auch parallele Blöcke können durch Hinzufügen von : name_of_block benannt werden nach den Schlüsselwörtern begin und fork . Dadurch kann der Block in einem disable referenziert werden Erklärung.

  
  
	begin : name_seq
		[statements]
	end
	
	fork : name_fork
		[statements]
	join

  

Verilog

  1. Wie die Automatisierung der Datenaufbereitung die Zeit für Erkenntnisse beschleunigt?
  2. Verilog-Tutorial
  3. Verilog-Verkettung
  4. Verilog - In einer Nussschale
  5. Verilog-Aufgaben
  6. Verilog-Blockierung und Nicht-Blockierung
  7. Verilog-Kontrollblöcke
  8. Verilog-Funktionen
  9. Verilog Scheduling Semantik
  10. Es ist an der Zeit, Ihre S&OP-, Daten- und Planungssysteme zu verbessern