Menu
Coddy logo textTech

Bucle While

Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 59 de 90.

El bucle while repite un bloque de código mientras una condición sea verdadera. A diferencia del bucle for, no tiene un contador incorporado — debes actualizar la variable del bucle tú mismo.

Un bucle while comprueba una condición antes de cada iteración. Si la condición es verdadera, el bucle se ejecuta. Si es falsa, el bucle se detiene.

Sintaxis:

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

Ejemplo simple

integer i = 0;

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

Salida:

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

El bucle se ejecuta mientras i < 5.

Bucle While vs For

 Bucle ForBucle While
ContadorIntegradoTú lo gestionas
Cuándo usarloNúmero conocido de iteracionesSe desconoce cuándo se detendrá el bucle
Sintaxisfor (i=0; i<5; i=i+1)while (i < 5)

Bucle While en Testbenches

Los bucles while son útiles cuando no sabes exactamente cuántas iteraciones necesitas:

integer i = 0;

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

Buscando un 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);

Reglas importantes

ReglaExplicación
La condición debe volverse falsaDe lo contrario, habrá un bucle infinito
Actualizar la variable del bucle en el interiorO el bucle nunca termina
La variable del bucle debe ser integerNo puede ser reg
Usar begin/end para múltiples sentenciasRequerido para más de una línea
challenge icon

Desafío

Qué hacer:

Añade el bucle while que falta para imprimir los números del 0 al 2.

Hoja de referencia

El bucle while repite un bloque de código mientras una condición sea verdadera. Debes actualizar la variable del bucle manualmente.

integer i = 0;

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

Reglas clave:

  • La variable del bucle debe ser integer (no reg)
  • Actualiza siempre la variable del bucle dentro del bucle para evitar bucles infinitos
  • Usa begin/end para múltiples sentencias

While vs For: Usa for cuando el número de iteraciones sea conocido; usa while cuando la condición de parada sea dinámica (por ejemplo, buscar un valor).

// Encontrando el primer bit a 1
while (data[i] != 1) begin
  i = i + 1;
end

Pruébalo tú mismo

module while_challenge;
  integer i;
  
  initial begin
    i = 0;
    $display("Printing 0 to 2:");
    
    // TODO: Agregar bucle while
    // Bucle mientras i < 3
    // Adentro, imprimir i
    // Incrementar i en 1
    
    $finish;
  end
endmodule
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos