Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Verilog

Blocs de contrôle Verilog

Le comportement matériel ne peut pas être mis en œuvre sans instructions conditionnelles et autres moyens de contrôler le flux de la logique. Verilog dispose d'un ensemble de blocs de flux de contrôle et de mécanismes pour y parvenir.

si-sinon-si

Cette instruction conditionnelle est utilisé pour décider si certaines instructions doivent être exécutées ou non. Ceci est très similaire au if-else-if instructions en C. Si l'expression est évaluée à true, la première instruction sera exécutée. Si l'expression est évaluée à false et si un else pièce existe, le else partie sera exécutée.

Syntaxe
  
  
	// 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]

  

Le else une partie d'un if-else est facultative et peut prêter à confusion si un else est omis dans une séquence if imbriquée. Pour éviter cette confusion, il est plus facile de toujours associer le else au précédent s'il manque un else. Une autre façon consiste à inclure des déclarations dans un begin-end bloquer. Le dernier else part gère aucun des cas ci-dessus ou par défaut où aucune des autres conditions n'a été satisfaite.

Cliquez ici pour en savoir plus sur if-else-if

Les boucles permettent d'exécuter une ou plusieurs instructions dans un bloc une ou plusieurs fois. Il existe quatre types différents d'instructions en boucle dans Verilog.

boucle éternelle

Cela exécutera en continu les instructions dans le bloc.

  
  
	forever 
		[statement]

	forever begin
		[multiple statements]
	end

  

Exemple

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

  
Journal de simulation
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.

répéter la boucle

Cela exécutera les instructions un nombre fixe de fois. Si l'expression est évaluée à X ou Z, elle sera traitée comme zéro et ne sera pas exécutée du tout.

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

  

Exemple

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

  
Journal de simulation
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.

boucle while

Cela exécutera les instructions tant qu'une expression est vraie et se terminera une fois que la condition devient fausse. Si la condition est fausse dès le début, les instructions ne seront pas exécutées du tout.

  
  
	while (expression) begin
		[statements]
	end

  

Exemple

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

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

boucle for

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

  

Cela contrôlera les instructions à l'aide d'un processus en trois étapes :

Exemple

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

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

Cliquez ici pour en savoir plus sur les boucles for.


Verilog

  1. Expressions, instructions et blocs C# (avec exemples)
  2. Expressions, instructions et blocs Java
  3. Tutoriel Verilog
  4. Concaténation Verilog
  5. Affectations Verilog
  6. Verilog bloquant et non bloquant
  7. Blocs de contrôle Verilog
  8. Fonctions Verilog
  9. Tâche Verilog