Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Verilog

Blocos de controle Verilog


O comportamento do hardware não pode ser implementado sem instruções condicionais e outras formas de controlar o fluxo da lógica. A Verilog possui um conjunto de blocos de fluxo de controle e mecanismos para alcançar o mesmo.

if-else-if


Esta declaração condicional é usado para tomar uma decisão sobre se certas instruções devem ser executadas ou não. Isso é muito semelhante ao if-else-if instruções em C. Se a expressão for avaliada como verdadeira, a primeira instrução será executada. Se a expressão for avaliada como falsa e se um else existe, o else parte será executada.
Sintaxe
  
  
	// 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]

  

O else parte de um if-else é opcional e pode causar confusão se um else é omitido em uma sequência if aninhada. Para evitar essa confusão, é mais fácil sempre associar o else ao anterior se faltar um else. Outra maneira é incluir instruções dentro de um begin-end quadra. Os últimos else parte lida com nenhum dos casos acima ou padrão em que nenhuma das outras condições foi satisfeita.

Clique aqui para ler mais sobre if-else-if

Os loops fornecem uma maneira de executar instruções únicas ou múltiplas dentro de um bloco uma ou mais vezes. Existem quatro tipos diferentes de instruções de loop no Verilog.

loop para sempre


Isso executará continuamente as instruções dentro do bloco.
  
  
	forever 
		[statement]

	forever begin
		[multiple statements]
	end

  

Exemplo

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

  
Registro de simulação
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 loop


Isso executará as instruções um número fixo de vezes. Se a expressão for avaliada como X ou Z, ela será tratada como zero e não será executada.
  
  
	repeat ([num_of_times]) begin
		[statements]
	end
	
	repeat ([num_of_times]) @ ([some_event]) begin
		[statements]
	end

  

Exemplo

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

  
Registro de simulação
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.

enquanto loop


Isso executará instruções enquanto uma expressão for verdadeira e sairá quando a condição se tornar falsa. Se a condição for falsa desde o início, as instruções não serão executadas.
  
  
	while (expression) begin
		[statements]
	end

  

Exemplo

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

  
Registro de simulação
ncsim> run
Iteration#5
Iteration#4
Iteration#3
Iteration#2
Iteration#1
ncsim: *W,RNQUIE: Simulation is complete.

for loop

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

  

Isso controlará as instruções usando um processo de três etapas:

Exemplo

  
  
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 simulação
ncsim> run
Loop #0
Loop #1
Loop #2
Loop #3
Loop #4
ncsim: *W,RNQUIE: Simulation is complete.


Clique aqui para ler mais sobre loops for.

Verilog

  1. Expressões, instruções e blocos em C# (com exemplos)
  2. Expressões, instruções e blocos Java
  3. Tutorial Verilog
  4. Concatenação Verilog
  5. Atribuições Verilog
  6. Verilog Blocking &Non-Blocking
  7. Blocos de controle Verilog
  8. Funções Verilog
  9. Tarefa Verilog
  10. Controle de atraso Verilog