Menu
Coddy logo textTech

If Statement

Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 52 de 90.

O if statement é um bloco de tomada de decisão que executes o código somente quando uma condition é verdadeira. O if statement verifica uma condition.

Se a condition for true (1), o código interno executes. Se a condition for false (0), o código é ignorado.

Sintaxe:

if (condition) begin
  // O código é executado quando a condição é verdadeira
end

Exemplo simples

if (reset) begin
  count = 0;
end

Neste exemplo:

  • begin e end são usados para marcar o início e o fim do bloco de código
  • Se reset for 1 (verdadeiro), o código dentro de begin e end executescount se torna 0
  • Se reset for 0 (falso), o código dentro dele é ignorado → nada acontece

begin e end funcionam como chaves { } em outras linguagens de programação. Eles agrupam instruções para que o Verilog saiba qual código pertence à condição if. Embora haja apenas uma instrução aqui, usar begin e end ainda é uma boa prática para manter a consistência.

Instrução if em um bloco always

always @(posedge clk) begin
  if (reset)
    count <= 0;
end

Observação: para uma única instrução, begin e end são opcionais. Por exemplo, no bloco always acima, não é necessário usar begin/end depois de if, pois ele tem apenas uma instrução.

A condição pode ser qualquer expressão

if (a > b) begin
  max = a;
end

if (a && b) begin
  out = 1;
end

if (data == 8'hFF) begin
  match = 1;
end

Regras importantes

RegraExplicação
Condition pode ser qualquer expressãoValores diferentes de zero (e conhecidos) são tratados como verdadeiros, e zero como falso
begin / end necessários para múltiplas instruçõesComo { } em outras linguagens
Sem begin/end, apenas uma instrução é executadaApenas a próxima linha
challenge icon

Desafio

O que fazer:

  1. Adicione a instrução if ausente para fazer isso funcionar.
  • Quando enable for 1, out deverá ser igual a a & b
  • Quando enable for 0, out deverá permanecer 0 (não mudar)

O código inicializador inicializa out = 0 e testa ambos os casos.

Experimente você mesmo

module if_challenge;
  reg a, b, enable;
  reg out = 0;
  
  initial begin
    a = 1;
    b = 1;
    
    // Caso de teste 1: enable = 1
    enable = 1;
    // TODO: Adicione a instrução if (out = a & b)
    $display("enable=1: out = %d (should be 1)", out);
    
    // Caso de teste 2: enable = 0
    enable = 0;
    out = 0; 
    // TODO: out deve permanecer 0
    $display("enable=0: out = %d (should be 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

Pratique por conta própria: Compilador de Verilog online