Menu
Coddy logo textTech

If - Else

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

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

O statement if-else dá ao seu código um ponto de decisão: faça uma coisa se a condition for verdadeira, faça outra coisa se a condition 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óximoCuidado com o aninhamento
Use begin/end para múltiplas instruçõesObrigató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.

Experimente você mesmo

module ifelse_challenge;
  reg a, b, enable;
  reg out;
  
  initial begin
    a = 1;
    b = 0;
    enable = 1;
    
    // TODO: Adicione a declaração if-else
    // Se enable for 1: out = a & b
    // Senão: 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