Menu
Coddy logo textTech

Bucle For

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

Los bucles en Verilog le permiten ejecutar un bloque de código varias veces. Son especialmente útiles en los bancos de pruebas (testbenches) para generar patrones de prueba repetitivos, inicializar la memoria e iterar sobre arreglos. A diferencia de las descripciones de hardware que se ejecutan en paralelo, los bucles se ejecutan secuencialmente, lo que los hace ideales para la simulación y las pruebas.

El bucle más utilizado es el bucle for, que se repite un número específico de veces. Un bucle for ejecuta un bloque de código repetidamente, con una variable de bucle que cambia en cada iteración. Tú controlas exactamente cuántas veces se ejecuta.

Sintaxis:

for (initialization; condition; increment) begin
  // Código a repetir
end
ParteQué haceEjemplo
initializationEstablece el valor iniciali = 0
conditionCuándo detenersei < 10
incrementCambia en cada iteracióni = i + 1

Ejemplo sencillo

integer i;

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

Salida:

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

El bucle se ejecuta 5 veces (i = 0, 1, 2, 3, 4).

Bucle For en Testbenches

Los bucles for se utilizan comúnmente para probar todas las combinaciones de entrada:

reg [3:0] test_value;

for (test_value = 0; test_value < 16; test_value = test_value + 1) begin
  $display("test_value = %d", test_value);
end

Esto prueba los 16 valores posibles de una señal de 4 bits.

Bucle For con Arrays

reg [7:0] memory [0:9];
integer i;

initial begin
  for (i = 0; i < 10; i = i + 1) begin
    memory[i] = i * 8;
  end
end

Esto inicializa 10 posiciones de memoria.

Reglas Importantes

ReglaExplicación
La variable de bucle debe ser integer o reg No puede ser wire
Use begin/end para múltiples sentenciasRequerido para más de una línea
Evite bucles infinitosAsegúrese de que la condición eventualmente se vuelva falsa
Se utiliza mejor en testbenchesLa mayoría de los bucles no son sintetizables
challenge icon

Desafío

Qué hacer:

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

Hoja de referencia

El bucle for en Verilog repite un bloque de código un número específico de veces:

for (initialization; condition; increment) begin
  // Código a repetir
end

Ejemplo imprimiendo de 0 a 4:

integer i;

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

Reglas clave:

  • La variable del bucle debe ser integer o reg (no wire)
  • Usa begin/end para múltiples sentencias
  • Asegúrate de que la condición eventualmente sea falsa para evitar bucles infinitos
  • Los bucles se utilizan mejor en testbenches (la mayoría no son sintetizables)

Pruébalo tú mismo

module for_challenge;
  integer i;
  
  initial begin
    $display("Printing 0 to 3:");
    
    // TODO: Añadir bucle for
    // Inicializar i = 0
    // Bucle mientras i < 4
    // Incrementar i = i + 1
    // En el interior, imprimir i
    
    $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