Menu
Coddy logo textTech

Instrução If

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

A instrução if é um bloco de tomada de decisão que executa código apenas quando uma condição é verdadeira. A instrução if verifica uma condição.

Se a condição for true (1), o código interno é executado. Se a condição for false (0), o código é ignorado.

Sintaxe:

if (condition) begin
  // O código executa 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 é executado → count torna-se 0
  • Se reset for 0 (falso), o código interno é 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 Bloco Always

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

Nota: Para uma única instrução, begin e end são opcionais. Por exemplo, no bloco always acima, nenhum begin/end é necessário após if porque ele possui 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
A condição deve ser um único bitOu uma expressão que resulte em 0 ou 1
begin / end são necessários para múltiplas instruçõesComo { } em outras linguagens
Sem begin/end, apenas uma instrução segueApenas a próxima linha
challenge icon

Desafio

O que fazer:

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

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

Folha de consulta

A instrução if executa o código apenas quando uma condição é verdadeira (1) e o ignora quando é falsa (0).

if (condition) begin
  // executa quando a condição é verdadeira
end

Para uma instrução única, begin/end são opcionais:

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

As condições podem ser qualquer expressão que resulte em 0 ou 1:

if (a > b) begin max = a; end
if (a && b) begin out = 1; end
if (data == 8'hFF) begin match = 1; end

Regras principais:

  • Use begin/end para agrupar múltiplas instruções (como { } em outras linguagens)
  • Sem begin/end, apenas a linha imediatamente seguinte pertence ao if

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: Adicionar 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