Menu
Coddy logo textTech

If - Else

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 53 de 90.

A instrução if-else permite que você escolha entre duas ações diferentes com base em uma condição. Se a condição for verdadeira, um bloco é executado. Se for falsa, o outro bloco é executado.

A instrução if-else fornece ao seu código um ponto de decisão: faça uma coisa se a condição for verdadeira, faça outra coisa se a condição for falsa.

Sintaxe:

if (condition) begin
  // Executa quando a condição é verdadeira (1)
end else begin
  // Executa quando a condição é falsa (0)
end

Exemplo Simples

if (reset) begin
  count = 0;
end else begin
  count = count + 1;
end
  • Se reset for 1 → count torna-se 0
  • Se reset for 0 → count aumenta em 1

Múltiplas Instruções

Use begin e end quando você tiver mais de uma instrução:

if (enable) begin
  out = data_in;
  valid = 1;
end else begin
  out = 0;
  valid = 0;
end

If-Else com Múltiplas Condições

Você pode encadear instruções if-else:

if (a > b) begin
  max = a;
end else if (b > a) begin
  max = b;
end else begin
  max = a;  // a e b são iguais
end

Regras Importantes

RegraExplicação
else é opcionalVocê pode ter if sem else
else pertence ao if mais próximoTenha cuidado com o aninhamento
Use begin/end para múltiplas instruçõesNecessário para mais de uma linha
challenge icon

Desafio

O que fazer:

  1. Adicione a instrução if-else que falta para fazer isso funcionar.
  2. Quando enable for 1, out deve ser igual a a & b.
  3. Quando enable for 0, out deve ser igual a a | b.

Folha de consulta

A instrução if-else executa um de dois blocos com base em uma condição:

if (condition) begin
  // Executes when condition is true (1)
end else begin
  // Executes when condition is false (0)
end

Encadeie múltiplas condições com else if:

if (a > b) begin
  max = a;
end else if (b > a) begin
  max = b;
end else begin
  max = a; // a and b are equal
end
  • else é opcional
  • Use begin/end quando houver múltiplas instruções em um bloco
  • else sempre pertence ao if mais próximo

Experimente você mesmo

module ifelse_challenge;
  reg a, b, enable;
  reg out;
  
  initial begin
    a = 1;
    b = 0;
    enable = 1;
    
    // TODO: Adicione a instrução if-else
    // Se enable for 1: out = a & b
    // Caso contrário: out = a | b
    
    $display("out = %d (should be 0 because 1&0=0)", out);
    $finish;
  end
endmodule
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos