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

Verilog-Kontrollblöcke

Hardwareverhalten kann nicht ohne bedingte Anweisungen und andere Möglichkeiten zur Steuerung des Logikflusses implementiert werden. Verilog verfügt über eine Reihe von Kontrollflussblöcken und -mechanismen, um dasselbe zu erreichen.

wenn-sonst-wenn

Diese bedingte Anweisung wird verwendet, um zu entscheiden, ob bestimmte Anweisungen ausgeführt werden sollen oder nicht. Dies ist dem if-else-if sehr ähnlich Anweisungen in C. Wenn der Ausdruck wahr ist, wird die erste Anweisung ausgeführt. Wenn der Ausdruck als falsch ausgewertet wird und wenn ein else Teil existiert, die else Teil wird ausgeführt.

Syntax
  
  
	// if statement without else part
	if (expression) 
		[statement]
	
	// if statment with an else part
	if (expression) 
		[statement]
	else 
		[statement]
	
	// if else for multiple statements should be
	// enclosed within "begin" and "end"
	if (expression) begin
		[multiple statements]
	end else begin
		[multiple statements]
	end
	
	// if-else-if statement
	if (expression)
		[statement]
	else if (expression)
		[statement]
	else 
		[statement]

  

Die else Teil eines if-else ist optional und kann bei einem else zu Verwirrung führen wird in einer verschachtelten if-Sequenz weggelassen. Um diese Verwirrung zu vermeiden, ist es einfacher, das else immer mit dem vorherigen zu verknüpfen, wenn diesem ein else fehlt. Eine andere Möglichkeit besteht darin, Anweisungen in begin-end einzuschließen Block. Die letzten else Teil behandelt keine der oben genannten oder Standardfälle, in denen keine der anderen Bedingungen erfüllt sind.

Klicken Sie hier, um mehr über if-else-if zu erfahren

Schleifen bieten eine Möglichkeit, einzelne oder mehrere Anweisungen innerhalb eines Blocks ein- oder mehrmals auszuführen. Es gibt vier verschiedene Arten von Schleifenanweisungen in Verilog.

Endlosschleife

Dadurch werden die Anweisungen innerhalb des Blocks kontinuierlich ausgeführt.

  
  
	forever 
		[statement]

	forever begin
		[multiple statements]
	end

  

Beispiel

  
  
module my_design;
	initial begin
		forever begin
			$display ("This will be printed forever, simulation can hang ...");
		end
	end
endmodule

  
Simulationsprotokoll
ncsim> run
This will be printed forever, simulation can hang ...
This will be printed forever, simulation can hang ...
...
...
This will be printed forever, simulation can hang ...
This will be printed forever, simulation can hang ...
This will be printed forever, simulation can hang ...
This will be printed forever, simulation can hang ...
Result reached the maximum of 5000 lines. Killing process.

Wiederholungsschleife

Dadurch werden Anweisungen eine festgelegte Anzahl von Malen ausgeführt. Wenn der Ausdruck ein X oder Z ergibt, wird er als Null behandelt und überhaupt nicht ausgeführt.

  
  
	repeat ([num_of_times]) begin
		[statements]
	end
	
	repeat ([num_of_times]) @ ([some_event]) begin
		[statements]
	end

  

Beispiel

  
  
module my_design;
	initial begin
		repeat(4) begin
			$display("This is a new iteration ...");
		end
	end
endmodule

  
Simulationsprotokoll
ncsim> run
This is a new iteration ...
This is a new iteration ...
This is a new iteration ...
This is a new iteration ...
ncsim: *W,RNQUIE: Simulation is complete.

while-Schleife

Dies führt Anweisungen aus, solange ein Ausdruck wahr ist, und wird beendet, sobald die Bedingung falsch wird. Wenn die Bedingung von Anfang an falsch ist, werden Anweisungen überhaupt nicht ausgeführt.

  
  
	while (expression) begin
		[statements]
	end

  

Beispiel

  
  
module my_design;
  	integer i = 5;
  
	initial begin
      while (i > 0) begin
        $display ("Iteration#%0d", i);
        i = i - 1;
      end
	end
endmodule

  
Simulationsprotokoll
ncsim> run
Iteration#5
Iteration#4
Iteration#3
Iteration#2
Iteration#1
ncsim: *W,RNQUIE: Simulation is complete.

for-Schleife

  
  
	for ( initial_assignment; condition; increment_variable) begin
		[statements]
	end

  

Dadurch werden Anweisungen mithilfe eines dreistufigen Prozesses gesteuert:

Beispiel

  
  
module my_design;
  	integer i = 5;
  
	initial begin
      for (i = 0; i < 5; i = i + 1) begin
        $display ("Loop #%0d", i);
      end
    end
endmodule

  
Simulationsprotokoll
ncsim> run
Loop #0
Loop #1
Loop #2
Loop #3
Loop #4
ncsim: *W,RNQUIE: Simulation is complete.

Klicken Sie hier, um mehr über for-Schleifen zu erfahren.


Verilog

  1. C#-Ausdrücke, -Anweisungen und -Blöcke (mit Beispielen)
  2. Java-Ausdrücke, -Anweisungen und -Blöcke
  3. Verilog-Tutorial
  4. Verilog-Verkettung
  5. Verilog-Aufgaben
  6. Verilog-Blockierung und Nicht-Blockierung
  7. Verilog-Kontrollblöcke
  8. Verilog-Funktionen
  9. Verilog-Aufgabe
  10. Verilog-Verzögerungssteuerung