Menu
Coddy logo textTech

Laço While

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

O loop while repete um bloco de código enquanto uma condição for verdadeira. Ao contrário do loop for, ele não possui um contador integrado — você deve atualizar a variável do loop por conta própria.

Um laço while verifica uma condição antes de cada iteração. Se a condição for verdadeira, o laço é executado. Se for falsa, o laço para.

Sintaxe:

while (condition) begin
  // Código para repetir
end

Exemplo Simples

integer i = 0;

while (i < 5) begin
  $display("i = %d", i);
  i = i + 1;
end

Saída:

i = 0
i = 1
i = 2
i = 3
i = 4

O loop é executado enquanto i < 5.

Loop While vs For

 Loop ForLoop While
ContadorIntegradoVocê o gerencia
Quando usarNúmero conhecido de iteraçõesDesconhecido quando o loop irá parar
Sintaxefor (i=0; i<5; i=i+1)while (i < 5)

Loop While em Testbenches

Loops while são úteis quando você não sabe exatamente de quantas iterações precisa:

integer i = 0;

while (i < 16) begin
  $display("Testing value %d", i);
  i = i + 1;
end

Encontrando um Valor Específico

integer i = 0;
reg [7:0] data;

while (data[i] != 1) begin
  i = i + 1;
end
$display("First 1 found at position %d", i);

Regras Importantes

RegraExplicação
A condição deve se tornar falsaCaso contrário, haverá um loop infinito
Atualize a variável do loop internamenteOu o loop nunca termina
A variável do loop deve ser integerNão pode ser reg
Use begin/end para múltiplas instruçõesNecessário para mais de uma linha
challenge icon

Desafio

O que fazer:

Adicione o loop while que falta para imprimir os números de 0 a 2.

Folha de consulta

O loop while repete um bloco de código enquanto uma condição for verdadeira. Você deve atualizar a variável do loop manualmente.

integer i = 0;

while (i < 5) begin
  $display("i = %d", i);
  i = i + 1;
end

Regras principais:

  • A variável do loop deve ser integer (não reg)
  • Sempre atualize a variável do loop dentro do loop para evitar loops infinitos
  • Use begin/end para múltiplas instruções

While vs For: Use for quando o número de iterações for conhecido; use while quando a condição de parada for dinâmica (ex: procurar por um valor).

// Encontrando o primeiro bit definido
while (data[i] != 1) begin
  i = i + 1;
end

Experimente você mesmo

module while_challenge;
  integer i;
  
  initial begin
    i = 0;
    $display("Printing 0 to 2:");
    
    // TODO: Adicionar loop while
    // Loop enquanto i < 3
    // Dentro, imprima i
    // Incrementar i em 1
    
    $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