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 integrado — 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.

While vs For Loop

 For LoopWhile Loop
ContadorIntegradoTú lo gestionas
Cuándo usarNúmero conocido de iteracionesDesconocido 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

Finding a Specific Value

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 condition debe volverse falsaDe lo contrario, habrá un bucle infinito
Actualizar la variable de loop dentroO el loop nunca termina
La variable de loop debe ser integer o regNo puede ser wire
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 números del 0 al 2.

Pruébalo tú mismo

module while_challenge;
  integer i;
  
  initial begin
    i = 0;
    $display("Printing 0 to 2:");
    
    // TODO: Añade un bucle while
    // Bucle mientras i < 3
    // Dentro, imprime i
    // Incrementa 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