Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Verilog

Bloques de control Verilog

El comportamiento del hardware no se puede implementar sin declaraciones condicionales y otras formas de controlar el flujo de la lógica. Verilog tiene un conjunto de bloques de flujo de control y mecanismos para lograr lo mismo.

si-otro-si

Esta sentencia condicional se utiliza para tomar una decisión sobre si ciertas declaraciones deben ejecutarse o no. Esto es muy similar al if-else-if declaraciones en C. Si la expresión se evalúa como verdadera, entonces se ejecutará la primera declaración. Si la expresión se evalúa como falsa y si es un else parte existe, el else parte será ejecutada.

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

  

El else parte de un if-else es opcional y puede causar confusión si un else se omite en una secuencia if anidada. Para evitar esta confusión, es más fácil asociar siempre el else al anterior si éste carece de else. Otra forma es encerrar declaraciones dentro de un begin-end bloquear. El último else parte maneja ninguno de los casos anteriores o predeterminados donde no se cumplió ninguna de las otras condiciones.

Haga clic aquí para leer más sobre if-else-if

Los bucles proporcionan una forma de ejecutar declaraciones únicas o múltiples dentro de un bloque una o más veces. Hay cuatro tipos diferentes de instrucciones de bucle en Verilog.

bucle eterno

Esto ejecutará continuamente las declaraciones dentro del bloque.

  
  
	forever 
		[statement]

	forever begin
		[multiple statements]
	end

  

Ejemplo

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

  
Registro de simulación
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.

repetir bucle

Esto ejecutará declaraciones un número fijo de veces. Si la expresión se evalúa como X o Z, se tratará como cero y no se ejecutará en absoluto.

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

  

Ejemplo

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

  
Registro de simulación
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.

bucle while

Esto ejecutará declaraciones siempre que una expresión sea verdadera y se cerrará una vez que la condición se vuelva falsa. Si la condición es falsa desde el principio, las declaraciones no se ejecutarán en absoluto.

  
  
	while (expression) begin
		[statements]
	end

  

Ejemplo

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

  
Registro de simulación
ncsim> run
Iteration#5
Iteration#4
Iteration#3
Iteration#2
Iteration#1
ncsim: *W,RNQUIE: Simulation is complete.

bucle for

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

  

Esto controlará las declaraciones usando un proceso de tres pasos:

Ejemplo

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

  
Registro de simulación
ncsim> run
Loop #0
Loop #1
Loop #2
Loop #3
Loop #4
ncsim: *W,RNQUIE: Simulation is complete.

Haga clic aquí para obtener más información sobre bucles for.


Verilog

  1. Expresiones, declaraciones y bloques de C# (con ejemplos)
  2. Expresiones, declaraciones y bloques de Java
  3. Tutorial de Verilog
  4. Concatenación Verilog
  5. Asignaciones de Verilog
  6. Bloqueo y no bloqueo de Verilog
  7. Bloques de control Verilog
  8. Funciones de Verilog
  9. Tarea Verilog
  10. Control de retardo de Verilog
  11. Generador de reloj Verilog